summaryrefslogtreecommitdiff
path: root/kernel/params.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/params.c')
-rw-r--r--kernel/params.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/params.c b/kernel/params.c
index e5f8f17e57cf..501bde4f3bee 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -915,7 +915,14 @@ static const struct kset_uevent_ops module_uevent_ops = {
struct kset *module_kset;
int module_sysfs_initialized;
+static void module_kobj_release(struct kobject *kobj)
+{
+ struct module_kobject *mk = to_module_kobject(kobj);
+ complete(mk->kobj_completion);
+}
+
struct kobj_type module_ktype = {
+ .release = module_kobj_release,
.sysfs_ops = &module_sysfs_ops,
};
m/libreoffice-6-4+backports'>distro/lhm/libreoffice-6-4+backports main, development code repositoryroot
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat
-rw-r--r--.gitattributes2
-rw-r--r--.gitignore82
-rw-r--r--Makefile.in24
-rw-r--r--MathMLDTD/math.dtd957
-rw-r--r--MathMLDTD/prj/build.lst3
-rw-r--r--MathMLDTD/prj/d.lst2
-rw-r--r--MathMLDTD/w3c_ipr_software_notice.html105
-rw-r--r--Mesa/inc/gl.h2252
-rw-r--r--Mesa/inc/gl_mangle.h1568
-rw-r--r--Mesa/inc/glext.h7271
-rw-r--r--Mesa/inc/glu.h348
-rw-r--r--Mesa/inc/glu_mangle.h86
-rw-r--r--Mesa/inc/glx.h500
-rw-r--r--Mesa/inc/glx_mangle.h81
-rw-r--r--Mesa/inc/glxext.h785
-rw-r--r--Mesa/inc/vms_x_fix.h1224
-rw-r--r--Mesa/prj/build.lst3
-rw-r--r--Mesa/prj/d.lst3
-rw-r--r--UnoControls/inc/basecontainercontrol.hxx598
-rw-r--r--UnoControls/inc/basecontrol.hxx1272
-rw-r--r--UnoControls/inc/multiplexer.hxx784
-rw-r--r--UnoControls/prj/build.lst5
-rw-r--r--UnoControls/prj/d.lst5
-rw-r--r--UnoControls/source/base/basecontainercontrol.cxx645
-rw-r--r--UnoControls/source/base/basecontrol.cxx1022
-rw-r--r--UnoControls/source/base/makefile.mk68
-rw-r--r--UnoControls/source/base/multiplexer.cxx539
-rw-r--r--UnoControls/source/base/registercontrols.cxx325
-rw-r--r--UnoControls/source/controls/OConnectionPointContainerHelper.cxx190
-rw-r--r--UnoControls/source/controls/OConnectionPointHelper.cxx275
-rw-r--r--UnoControls/source/controls/framecontrol.cxx607
-rw-r--r--UnoControls/source/controls/makefile.mk49
-rw-r--r--UnoControls/source/controls/progressbar.cxx494
-rw-r--r--UnoControls/source/controls/progressmonitor.cxx1080
-rw-r--r--UnoControls/source/controls/statusindicator.cxx562
-rw-r--r--UnoControls/source/inc/OConnectionPointContainerHelper.hxx265
-rw-r--r--UnoControls/source/inc/OConnectionPointHelper.hxx309
-rw-r--r--UnoControls/source/inc/framecontrol.hxx641
-rw-r--r--UnoControls/source/inc/progressbar.hxx459
-rw-r--r--UnoControls/source/inc/progressmonitor.hxx808
-rw-r--r--UnoControls/source/inc/statusindicator.hxx584
-rw-r--r--UnoControls/util/makefile.mk61
-rw-r--r--UnoControls/util/makefile.pmk27
-rw-r--r--UnoControls/util/target.pmk35
-rwxr-xr-xaccessibility/bridge/org/openoffice/accessibility/AccessBridge.java250
-rwxr-xr-xaccessibility/bridge/org/openoffice/accessibility/KeyHandler.java138
-rw-r--r--accessibility/bridge/org/openoffice/accessibility/PopupWindow.java210
-rw-r--r--accessibility/bridge/org/openoffice/accessibility/WindowsAccessBridgeAdapter.java654
-rwxr-xr-xaccessibility/bridge/org/openoffice/accessibility/makefile.mk55
-rwxr-xr-xaccessibility/bridge/org/openoffice/accessibility/manifest2
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AbstractButton.java176
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleActionImpl.java71
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleComponentImpl.java233
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleEditableTextImpl.java367
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleExtendedState.java53
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleHypertextImpl.java191
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleIconImpl.java73
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleKeyBinding.java386
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleObjectFactory.java545
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleRelationAdapter.java64
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleRoleAdapter.java148
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleSelectionImpl.java99
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleStateAdapter.java214
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleTextImpl.java678
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/AccessibleValueImpl.java96
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Alert.java66
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Application.java45
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Button.java157
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/CheckBox.java51
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/ComboBox.java117
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Component.java740
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Container.java763
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/DescendantManager.java161
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Dialog.java633
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/FocusTraversalPolicy.java89
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Frame.java646
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Icon.java76
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Label.java130
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/List.java452
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Menu.java328
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/MenuContainer.java167
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/MenuItem.java99
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/NativeFrame.java35
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Paragraph.java222
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/RadioButton.java50
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/ScrollBar.java126
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Separator.java71
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Table.java727
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/TextComponent.java194
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/ToggleButton.java62
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/ToolTip.java117
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Tree.java768
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/Window.java551
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java186
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java61
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java270
-rwxr-xr-xaccessibility/bridge/org/openoffice/java/accessibility/makefile.mk115
-rw-r--r--accessibility/bridge/source/java/WindowsAccessBridgeAdapter.cxx314
-rw-r--r--accessibility/bridge/source/java/exports.dxp4
-rw-r--r--accessibility/bridge/source/java/makefile.mk70
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBox.hxx313
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBoxBase.hxx520
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx95
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx283
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderCell.hxx83
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBoxTable.hxx177
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableBase.hxx282
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableCell.hxx145
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleGridControl.hxx267
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx462
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleGridControlHeader.hxx220
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleGridControlHeaderCell.hxx104
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleGridControlTable.hxx228
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleGridControlTableBase.hxx230
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleGridControlTableCell.hxx170
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleToolPanelDeck.hxx94
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBar.hxx95
-rw-r--r--accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx110
-rw-r--r--accessibility/inc/accessibility/extended/accessiblebrowseboxcell.hxx89
-rw-r--r--accessibility/inc/accessibility/extended/accessibleeditbrowseboxcell.hxx156
-rw-r--r--accessibility/inc/accessibility/extended/accessibleiconchoicectrl.hxx121
-rw-r--r--accessibility/inc/accessibility/extended/accessibleiconchoicectrlentry.hxx215
-rw-r--r--accessibility/inc/accessibility/extended/accessiblelistbox.hxx127
-rw-r--r--accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx225
-rw-r--r--accessibility/inc/accessibility/extended/accessibletabbar.hxx122
-rw-r--r--accessibility/inc/accessibility/extended/accessibletabbarbase.hxx80
-rw-r--r--accessibility/inc/accessibility/extended/accessibletabbarpage.hxx139
-rw-r--r--accessibility/inc/accessibility/extended/accessibletabbarpagelist.hxx143
-rw-r--r--accessibility/inc/accessibility/extended/accessibletablistbox.hxx117
-rw-r--r--accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx124
-rw-r--r--accessibility/inc/accessibility/extended/listboxaccessible.hxx98
-rw-r--r--accessibility/inc/accessibility/extended/textwindowaccessibility.hxx714
-rw-r--r--accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx73
-rw-r--r--accessibility/inc/accessibility/helper/acc_factory.hxx53
-rw-r--r--accessibility/inc/accessibility/helper/accessiblestrings.hrc53
-rw-r--r--accessibility/inc/accessibility/helper/accresmgr.hxx72
-rw-r--r--accessibility/inc/accessibility/helper/characterattributeshelper.hxx61
-rw-r--r--accessibility/inc/accessibility/helper/listboxhelper.hxx198
-rw-r--r--accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx157
-rw-r--r--accessibility/inc/accessibility/standard/accessiblemenucomponent.hxx102
-rw-r--r--accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx98
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx182
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblebutton.hxx88
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblecheckbox.hxx95
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblecombobox.hxx67
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibledropdowncombobox.hxx69
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibledropdownlistbox.hxx69
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx121
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblefixedhyperlink.hxx56
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblefixedtext.hxx56
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx226
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblelistbox.hxx65
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblelistboxlist.hxx108
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx198
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx86
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblemenubar.hxx75
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblemenuitem.hxx119
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblemenuseparator.hxx56
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblepopupmenu.hxx62
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx86
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx85
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblestatusbar.hxx82
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessiblestatusbaritem.hxx144
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibletabcontrol.hxx105
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibletabpage.hxx148
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibletabpagewindow.hxx69
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibletextcomponent.hxx95
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibletextfield.hxx105
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibletoolbox.hxx115
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx168
-rw-r--r--accessibility/inc/makefile.mk47
-rw-r--r--accessibility/inc/pch/precompiled_accessibility.cxx31
-rw-r--r--accessibility/inc/pch/precompiled_accessibility.hxx40
-rwxr-xr-xaccessibility/prj/build.lst18
-rw-r--r--accessibility/prj/d.lst8
-rw-r--r--accessibility/prj/l10n1
-rw-r--r--accessibility/source/extended/AccessibleBrowseBox.cxx395
-rw-r--r--accessibility/source/extended/AccessibleBrowseBoxBase.cxx660
-rw-r--r--accessibility/source/extended/AccessibleBrowseBoxCheckBoxCell.cxx174
-rw-r--r--accessibility/source/extended/AccessibleBrowseBoxHeaderBar.cxx421
-rw-r--r--accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx175
-rw-r--r--accessibility/source/extended/AccessibleBrowseBoxTable.cxx280
-rw-r--r--accessibility/source/extended/AccessibleBrowseBoxTableBase.cxx357
-rw-r--r--accessibility/source/extended/AccessibleBrowseBoxTableCell.cxx357
-rw-r--r--accessibility/source/extended/AccessibleGridControl.cxx375
-rw-r--r--accessibility/source/extended/AccessibleGridControlBase.cxx537
-rw-r--r--accessibility/source/extended/AccessibleGridControlHeader.cxx286
-rw-r--r--accessibility/source/extended/AccessibleGridControlHeaderCell.cxx172
-rw-r--r--accessibility/source/extended/AccessibleGridControlTable.cxx380
-rw-r--r--accessibility/source/extended/AccessibleGridControlTableBase.cxx290
-rw-r--r--accessibility/source/extended/AccessibleGridControlTableCell.cxx373
-rw-r--r--accessibility/source/extended/AccessibleToolPanelDeck.cxx410
-rw-r--r--accessibility/source/extended/AccessibleToolPanelDeckTabBar.cxx457
-rw-r--r--accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx453
-rw-r--r--accessibility/source/extended/accessiblebrowseboxcell.cxx94
-rw-r--r--accessibility/source/extended/accessibleeditbrowseboxcell.cxx276
-rw-r--r--accessibility/source/extended/accessibleiconchoicectrl.cxx374
-rw-r--r--accessibility/source/extended/accessibleiconchoicectrlentry.cxx749
-rw-r--r--accessibility/source/extended/accessiblelistbox.cxx434
-rw-r--r--accessibility/source/extended/accessiblelistboxentry.cxx962
-rw-r--r--accessibility/source/extended/accessibletabbar.cxx557
-rw-r--r--accessibility/source/extended/accessibletabbarbase.cxx116
-rw-r--r--accessibility/source/extended/accessibletabbarpage.cxx514
-rw-r--r--accessibility/source/extended/accessibletabbarpagelist.cxx808
-rw-r--r--accessibility/source/extended/accessibletablistbox.cxx137
-rw-r--r--accessibility/source/extended/accessibletablistboxtable.cxx374
-rw-r--r--accessibility/source/extended/listboxaccessible.cxx106
-rwxr-xr-xaccessibility/source/extended/makefile.mk81
-rw-r--r--accessibility/source/extended/textwindowaccessibility.cxx2254
-rw-r--r--accessibility/source/helper/acc_factory.cxx555
-rw-r--r--accessibility/source/helper/accessiblestrings.src76
-rw-r--r--accessibility/source/helper/accresmgr.cxx85
-rw-r--r--accessibility/source/helper/characterattributeshelper.cxx122
-rw-r--r--accessibility/source/helper/makefile.mk53
-rw-r--r--accessibility/source/inc/floatingwindowaccessible.hxx45
-rw-r--r--accessibility/source/standard/accessiblemenubasecomponent.cxx786
-rw-r--r--accessibility/source/standard/accessiblemenucomponent.cxx474
-rw-r--r--accessibility/source/standard/accessiblemenuitemcomponent.cxx506
-rw-r--r--accessibility/source/standard/floatingwindowaccessible.cxx73
-rw-r--r--accessibility/source/standard/makefile.mk78
-rw-r--r--accessibility/source/standard/vclxaccessiblebox.cxx376
-rw-r--r--accessibility/source/standard/vclxaccessiblebutton.cxx329
-rw-r--r--accessibility/source/standard/vclxaccessiblecheckbox.cxx364
-rw-r--r--accessibility/source/standard/vclxaccessiblecombobox.cxx99
-rw-r--r--accessibility/source/standard/vclxaccessibledropdowncombobox.cxx145
-rw-r--r--accessibility/source/standard/vclxaccessibledropdownlistbox.cxx113
-rw-r--r--accessibility/source/standard/vclxaccessibleedit.cxx629
-rw-r--r--accessibility/source/standard/vclxaccessiblefixedhyperlink.cxx87
-rw-r--r--accessibility/source/standard/vclxaccessiblefixedtext.cxx99
-rw-r--r--accessibility/source/standard/vclxaccessiblelist.cxx851
-rw-r--r--accessibility/source/standard/vclxaccessiblelistbox.cxx111
-rw-r--r--accessibility/source/standard/vclxaccessiblelistitem.cxx677
-rw-r--r--accessibility/source/standard/vclxaccessiblemenu.cxx258
-rw-r--r--accessibility/source/standard/vclxaccessiblemenubar.cxx214
-rw-r--r--accessibility/source/standard/vclxaccessiblemenuitem.cxx610
-rw-r--r--accessibility/source/standard/vclxaccessiblemenuseparator.cxx88
-rw-r--r--accessibility/source/standard/vclxaccessiblepopupmenu.cxx114
-rw-r--r--accessibility/source/standard/vclxaccessibleradiobutton.cxx317
-rw-r--r--accessibility/source/standard/vclxaccessiblescrollbar.cxx283
-rw-r--r--accessibility/source/standard/vclxaccessiblestatusbar.cxx369
-rw-r--r--accessibility/source/standard/vclxaccessiblestatusbaritem.cxx632
-rw-r--r--accessibility/source/standard/vclxaccessibletabcontrol.cxx518
-rw-r--r--accessibility/source/standard/vclxaccessibletabpage.cxx705
-rw-r--r--accessibility/source/standard/vclxaccessibletabpagewindow.cxx144
-rw-r--r--accessibility/source/standard/vclxaccessibletextcomponent.cxx365
-rw-r--r--accessibility/source/standard/vclxaccessibletextfield.cxx157
-rw-r--r--accessibility/source/standard/vclxaccessibletoolbox.cxx885
-rw-r--r--accessibility/source/standard/vclxaccessibletoolboxitem.cxx708
-rw-r--r--accessibility/util/acc.map7
-rw-r--r--accessibility/util/makefile.mk86
-rw-r--r--accessibility/workben/TODO13
-rw-r--r--accessibility/workben/makefile9
-rw-r--r--accessibility/workben/makefile.in31
-rw-r--r--accessibility/workben/makefile.mk39
-rw-r--r--accessibility/workben/org/openoffice/accessibility/Makefile6
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/AccessibilityWorkBench.java702
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/HelpWindow.java187
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/Makefile13
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/canvas/Canvas.java322
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/canvas/CanvasShape.java412
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/canvas/Makefile15
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/canvas/MouseObserver.java104
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/canvas/ShapeContainer.java237
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.common34
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.mk55
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/makefile.common30
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/makefile.mk57
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/manifest3
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityModel.java154
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityNode.java163
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTree.java89
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTreeModel.java217
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityModel.java123
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityNode.java92
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/Makefile40
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/ToolkitNode.java215
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.common35
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.mk51
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ComponentView.java195
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ContextView.java115
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/EditableTextView.java119
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/EventMonitorView.java126
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/FocusView.java148
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/LayoutManager.java160
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/Makefile13
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ObjectView.java90
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainer.java310
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainerWindow.java35
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ParentView.java147
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/SelectionView.java267
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ServiceInterfaceView.java150
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/StateSetView.java199
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/TableView.java161
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/TextView.java467
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/ViewGridLayout.java117
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/makefile.common45
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/makefile.mk51
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/CaretSpinnerModel.java122
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/Makefile13
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/TextActionDialog.java208
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/TextAttributeDialog.java179
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/TextDialogFactory.java136
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/TextEditDialog.java122
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.common34
-rw-r--r--accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.mk51
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/AccessibleEventMulticaster.java92
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/Connector.java50
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/InformationWriter.java421
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/Makefile38
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/MessageArea.java125
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/NameProvider.java263
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/OfficeConnection.java169
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/Options.java106
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/SimpleOffice.java413
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/makefile.common36
-rw-r--r--accessibility/workben/org/openoffice/accessibility/misc/makefile.mk55
-rw-r--r--acinclude.m4138
-rw-r--r--afms/delzip0
-rw-r--r--afms/makefile.mk58
-rw-r--r--afms/prj/build.lst3
-rw-r--r--afms/prj/d.lst3
-rw-r--r--animations/inc/animations/animationnodehelper.hxx133
-rw-r--r--animations/prj/build.lst3
-rw-r--r--animations/prj/d.lst9
-rw-r--r--animations/source/animcore/animcore.cxx2092
-rw-r--r--animations/source/animcore/animcore.xml28
-rw-r--r--animations/source/animcore/factreg.cxx103
-rw-r--r--animations/source/animcore/factreg.hxx54
-rw-r--r--animations/source/animcore/makefile.mk70
-rw-r--r--animations/source/animcore/targetpropertiescreator.cxx507
-rw-r--r--apache-commons/java/codec/makefile.mk77
-rw-r--r--apache-commons/java/httpclient/makefile.mk82
-rw-r--r--apache-commons/java/lang/makefile.mk79
-rw-r--r--apache-commons/java/logging/makefile.mk81
-rw-r--r--apache-commons/patches/codec.patch17
-rw-r--r--apache-commons/patches/logging.patch15
-rw-r--r--apache-commons/prj/build.lst6
-rw-r--r--apache-commons/prj/d.lst5
-rw-r--r--apple_remote/AppleRemote.m125
-rw-r--r--apple_remote/GlobalKeyboardDevice.m249
-rw-r--r--apple_remote/HIDRemoteControlDevice.m518
-rw-r--r--apple_remote/KeyspanFrontRowControl.m97
-rw-r--r--apple_remote/MultiClickRemoteBehavior.m213
-rw-r--r--apple_remote/RemoteControl.m146
-rw-r--r--apple_remote/RemoteControlContainer.m140
-rw-r--r--apple_remote/RemoteMainController.m177
-rw-r--r--apple_remote/inc/AppleRemote.h40
-rw-r--r--apple_remote/inc/GlobalKeyboardDevice.h54
-rw-r--r--apple_remote/inc/HIDRemoteControlDevice.h67
-rw-r--r--apple_remote/inc/KeyspanFrontRowControl.h42
-rw-r--r--apple_remote/inc/MultiClickRemoteBehavior.h93
-rw-r--r--apple_remote/inc/RemoteControl.h105
-rw-r--r--apple_remote/inc/RemoteControlContainer.h41
-rw-r--r--apple_remote/inc/RemoteMainController.h49
-rw-r--r--apple_remote/makefile.mk82
-rw-r--r--apple_remote/prj/build.lst2
-rw-r--r--apple_remote/prj/d.lst5
-rw-r--r--autodoc/inc/ary/actions.hxx105
-rw-r--r--autodoc/inc/ary/ary.hxx93
-rw-r--r--autodoc/inc/ary/ary_disp.hxx114
-rw-r--r--autodoc/inc/ary/arygroup.hxx110
-rw-r--r--autodoc/inc/ary/ceslot.hxx106
-rw-r--r--autodoc/inc/ary/cessentl.hxx91
-rw-r--r--autodoc/inc/ary/cpp/c_builtintype.hxx100
-rw-r--r--autodoc/inc/ary/cpp/c_ce.hxx106
-rw-r--r--autodoc/inc/ary/cpp/c_class.hxx248
-rw-r--r--autodoc/inc/ary/cpp/c_cppentity.hxx94
-rw-r--r--autodoc/inc/ary/cpp/c_de.hxx107
-rw-r--r--autodoc/inc/ary/cpp/c_define.hxx85
-rw-r--r--autodoc/inc/ary/cpp/c_enum.hxx119
-rw-r--r--autodoc/inc/ary/cpp/c_enuval.hxx99
-rw-r--r--autodoc/inc/ary/cpp/c_funct.hxx152
-rw-r--r--autodoc/inc/ary/cpp/c_gate.hxx124
-rw-r--r--autodoc/inc/ary/cpp/c_macro.hxx87
-rw-r--r--autodoc/inc/ary/cpp/c_namesp.hxx197
-rw-r--r--autodoc/inc/ary/cpp/c_osigna.hxx125
-rw-r--r--autodoc/inc/ary/cpp/c_slntry.hxx113
-rw-r--r--autodoc/inc/ary/cpp/c_traits.hxx219
-rw-r--r--autodoc/inc/ary/cpp/c_tydef.hxx103
-rw-r--r--autodoc/inc/ary/cpp/c_type.hxx136
-rw-r--r--autodoc/inc/ary/cpp/c_types4cpp.hxx137
-rw-r--r--autodoc/inc/ary/cpp/c_vari.hxx117
-rw-r--r--autodoc/inc/ary/cpp/c_vfflag.hxx154
-rw-r--r--autodoc/inc/ary/cpp/cp_ce.hxx176
-rw-r--r--autodoc/inc/ary/cpp/cp_def.hxx102
-rw-r--r--autodoc/inc/ary/cpp/cp_type.hxx99
-rw-r--r--autodoc/inc/ary/cpp/inpcontx.hxx219
-rw-r--r--autodoc/inc/ary/cpp/namechain.hxx143
-rw-r--r--autodoc/inc/ary/cpp/usedtype.hxx215
-rw-r--r--autodoc/inc/ary/doc/d_boolean.hxx99
-rw-r--r--autodoc/inc/ary/doc/d_docu.hxx109
-rw-r--r--autodoc/inc/ary/doc/d_node.hxx112
-rw-r--r--autodoc/inc/ary/doc/d_oldcppdocu.hxx133
-rw-r--r--autodoc/inc/ary/doc/d_oldidldocu.hxx114
-rw-r--r--autodoc/inc/ary/doc/d_parametrized.hxx124
-rw-r--r--autodoc/inc/ary/doc/d_types4doc.hxx73
-rw-r--r--autodoc/inc/ary/doc/ht/dht_interpreter.hxx79
-rw-r--r--autodoc/inc/ary/entity.hxx84
-rw-r--r--autodoc/inc/ary/getncast.hxx91
-rw-r--r--autodoc/inc/ary/idl/i_attribute.hxx138
-rw-r--r--autodoc/inc/ary/idl/i_ce.hxx138
-rw-r--r--autodoc/inc/ary/idl/i_ce2s.hxx98
-rw-r--r--autodoc/inc/ary/idl/i_comrela.hxx83
-rw-r--r--autodoc/inc/ary/idl/i_constant.hxx115
-rw-r--r--autodoc/inc/ary/idl/i_constgroup.hxx104
-rw-r--r--autodoc/inc/ary/idl/i_enum.hxx103
-rw-r--r--autodoc/inc/ary/idl/i_enumvalue.hxx106
-rw-r--r--autodoc/inc/ary/idl/i_exception.hxx110
-rw-r--r--autodoc/inc/ary/idl/i_function.hxx163
-rw-r--r--autodoc/inc/ary/idl/i_gate.hxx86
-rw-r--r--autodoc/inc/ary/idl/i_interface.hxx130
-rw-r--r--autodoc/inc/ary/idl/i_module.hxx117
-rw-r--r--autodoc/inc/ary/idl/i_namelookup.hxx98
-rw-r--r--autodoc/inc/ary/idl/i_param.hxx78
-rw-r--r--autodoc/inc/ary/idl/i_property.hxx146
-rw-r--r--autodoc/inc/ary/idl/i_service.hxx142
-rw-r--r--autodoc/inc/ary/idl/i_singleton.hxx108
-rw-r--r--autodoc/inc/ary/idl/i_siservice.hxx110
-rw-r--r--autodoc/inc/ary/idl/i_sisingleton.hxx103
-rw-r--r--autodoc/inc/ary/idl/i_struct.hxx133
-rw-r--r--autodoc/inc/ary/idl/i_structelem.hxx106
-rw-r--r--autodoc/inc/ary/idl/i_traits.hxx81
-rw-r--r--autodoc/inc/ary/idl/i_type.hxx145
-rw-r--r--autodoc/inc/ary/idl/i_typedef.hxx93
-rw-r--r--autodoc/inc/ary/idl/i_types4idl.hxx145
-rw-r--r--autodoc/inc/ary/idl/ik_attribute.hxx88
-rw-r--r--autodoc/inc/ary/idl/ik_ce.hxx148
-rw-r--r--autodoc/inc/ary/idl/ik_constant.hxx78
-rw-r--r--autodoc/inc/ary/idl/ik_constgroup.hxx75
-rw-r--r--autodoc/inc/ary/idl/ik_enum.hxx87
-rw-r--r--autodoc/inc/ary/idl/ik_enumvalue.hxx76
-rw-r--r--autodoc/inc/ary/idl/ik_exception.hxx84
-rw-r--r--autodoc/inc/ary/idl/ik_function.hxx98
-rw-r--r--autodoc/inc/ary/idl/ik_interface.hxx103
-rw-r--r--autodoc/inc/ary/idl/ik_module.hxx117
-rw-r--r--autodoc/inc/ary/idl/ik_property.hxx92
-rw-r--r--autodoc/inc/ary/idl/ik_service.hxx91
-rw-r--r--autodoc/inc/ary/idl/ik_singleton.hxx76
-rw-r--r--autodoc/inc/ary/idl/ik_siservice.hxx78
-rw-r--r--autodoc/inc/ary/idl/ik_sisingleton.hxx76
-rw-r--r--autodoc/inc/ary/idl/ik_struct.hxx93
-rw-r--r--autodoc/inc/ary/idl/ik_structelem.hxx75
-rw-r--r--autodoc/inc/ary/idl/ik_typedef.hxx86
-rw-r--r--autodoc/inc/ary/idl/ip_ce.hxx213
-rw-r--r--autodoc/inc/ary/idl/ip_type.hxx86
-rw-r--r--autodoc/inc/ary/info/all_dts.hxx162
-rw-r--r--autodoc/inc/ary/info/all_tags.hxx291
-rw-r--r--autodoc/inc/ary/info/ci_attag.hxx103
-rw-r--r--autodoc/inc/ary/info/ci_text.hxx87
-rw-r--r--autodoc/inc/ary/info/docstore.hxx119
-rw-r--r--autodoc/inc/ary/info/infodisp.hxx117
-rw-r--r--autodoc/inc/ary/info/inftypes.hxx124
-rw-r--r--autodoc/inc/ary/itrange.hxx83
-rw-r--r--autodoc/inc/ary/loc/loc_dir.hxx148
-rw-r--r--autodoc/inc/ary/loc/loc_file.hxx71
-rw-r--r--autodoc/inc/ary/loc/loc_filebase.hxx75
-rw-r--r--autodoc/inc/ary/loc/loc_le.hxx97
-rw-r--r--autodoc/inc/ary/loc/loc_root.hxx113
-rw-r--r--autodoc/inc/ary/loc/loc_traits.hxx118
-rw-r--r--autodoc/inc/ary/loc/loc_types4loc.hxx57
-rw-r--r--autodoc/inc/ary/loc/locp_le.hxx91
-rw-r--r--autodoc/inc/ary/namesort.hxx78
-rw-r--r--autodoc/inc/ary/object.hxx73
-rw-r--r--autodoc/inc/ary/qualiname.hxx106
-rw-r--r--autodoc/inc/ary/sequentialids.hxx156
-rw-r--r--autodoc/inc/ary/stdconstiter.hxx101
-rw-r--r--autodoc/inc/ary/symtreenode.hxx347
-rw-r--r--autodoc/inc/ary/types.hxx133
-rw-r--r--autodoc/inc/ary/udmhost.hxx65
-rw-r--r--autodoc/inc/ary_i/ci_atag2.hxx81
-rw-r--r--autodoc/inc/ary_i/ci_text2.hxx94
-rw-r--r--autodoc/inc/ary_i/d_token.hxx284
-rw-r--r--autodoc/inc/ary_i/disdocum.hxx148
-rw-r--r--autodoc/inc/autodoc/displaying.hxx78
-rw-r--r--autodoc/inc/autodoc/dsp_html_std.hxx216
-rw-r--r--autodoc/inc/autodoc/dsp_txt_flist.hxx67
-rw-r--r--autodoc/inc/autodoc/filecoli.hxx74
-rw-r--r--autodoc/inc/autodoc/parsing.hxx80
-rw-r--r--autodoc/inc/autodoc/prs_code.hxx79
-rw-r--r--autodoc/inc/autodoc/prs_docu.hxx61
-rw-r--r--autodoc/inc/autodoc/x_parsing.hxx76
-rw-r--r--autodoc/inc/display/corframe.hxx84
-rw-r--r--autodoc/inc/parser/parser.hxx59
-rw-r--r--autodoc/inc/parser/parserinfo.hxx67
-rw-r--r--autodoc/inc/parser/unoidl.hxx81
-rw-r--r--autodoc/prj/build.lst67
-rw-r--r--autodoc/prj/d.lst3
-rw-r--r--autodoc/source/ary/cpp/c_builtintype.cxx130
-rw-r--r--autodoc/source/ary/cpp/c_class.cxx287
-rw-r--r--autodoc/source/ary/cpp/c_de.cxx54
-rw-r--r--autodoc/source/ary/cpp/c_define.cxx79
-rw-r--r--autodoc/source/ary/cpp/c_enum.cxx137
-rw-r--r--autodoc/source/ary/cpp/c_enuval.cxx90
-rw-r--r--autodoc/source/ary/cpp/c_funct.cxx250
-rw-r--r--autodoc/source/ary/cpp/c_macro.cxx81
-rw-r--r--autodoc/source/ary/cpp/c_namesp.cxx297
-rw-r--r--autodoc/source/ary/cpp/c_osigna.cxx79
-rw-r--r--autodoc/source/ary/cpp/c_reposypart.cxx526
-rw-r--r--autodoc/source/ary/cpp/c_reposypart.hxx117
-rw-r--r--autodoc/source/ary/cpp/c_slots.cxx109
-rw-r--r--autodoc/source/ary/cpp/c_slots.hxx87
-rw-r--r--autodoc/source/ary/cpp/c_traits.cxx226
-rw-r--r--autodoc/source/ary/cpp/c_tydef.cxx97
-rw-r--r--autodoc/source/ary/cpp/c_vari.cxx99
-rw-r--r--autodoc/source/ary/cpp/ca_ce.cxx625
-rw-r--r--autodoc/source/ary/cpp/ca_ce.hxx216
-rw-r--r--autodoc/source/ary/cpp/ca_def.cxx114
-rw-r--r--autodoc/source/ary/cpp/ca_def.hxx118
-rw-r--r--autodoc/source/ary/cpp/ca_type.cxx139
-rw-r--r--autodoc/source/ary/cpp/ca_type.hxx130
-rw-r--r--autodoc/source/ary/cpp/cs_ce.cxx107
-rw-r--r--autodoc/source/ary/cpp/cs_ce.hxx108
-rw-r--r--autodoc/source/ary/cpp/cs_def.cxx89
-rw-r--r--autodoc/source/ary/cpp/cs_def.hxx110
-rw-r--r--autodoc/source/ary/cpp/cs_type.cxx115
-rw-r--r--autodoc/source/ary/cpp/cs_type.hxx141
-rw-r--r--autodoc/source/ary/cpp/makefile.mk80
-rw-r--r--autodoc/source/ary/cpp/namechain.cxx199
-rw-r--r--autodoc/source/ary/cpp/tplparam.cxx77
-rw-r--r--autodoc/source/ary/cpp/tplparam.hxx87
-rw-r--r--autodoc/source/ary/cpp/usedtype.cxx578
-rw-r--r--autodoc/source/ary/doc/d_boolean.cxx58
-rw-r--r--autodoc/source/ary/doc/d_docu.cxx62
-rw-r--r--autodoc/source/ary/doc/d_node.cxx72
-rw-r--r--autodoc/source/ary/doc/d_oldcppdocu.cxx339
-rw-r--r--autodoc/source/ary/doc/d_oldidldocu.cxx79
-rw-r--r--autodoc/source/ary/doc/makefile.mk58
-rw-r--r--autodoc/source/ary/idl/i2s_calculator.cxx995
-rw-r--r--autodoc/source/ary/idl/i2s_calculator.hxx298
-rw-r--r--autodoc/source/ary/idl/i_attribute.cxx162
-rw-r--r--autodoc/source/ary/idl/i_ce.cxx83
-rw-r--r--autodoc/source/ary/idl/i_ce2s.cxx87
-rw-r--r--autodoc/source/ary/idl/i_comrela.cxx50
-rw-r--r--autodoc/source/ary/idl/i_constant.cxx126
-rw-r--r--autodoc/source/ary/idl/i_constgroup.cxx117
-rw-r--r--autodoc/source/ary/idl/i_enum.cxx146
-rw-r--r--autodoc/source/ary/idl/i_enumvalue.cxx119
-rw-r--r--autodoc/source/ary/idl/i_exception.cxx142
-rw-r--r--autodoc/source/ary/idl/i_function.cxx168
-rw-r--r--autodoc/source/ary/idl/i_interface.cxx199
-rw-r--r--autodoc/source/ary/idl/i_module.cxx207
-rw-r--r--autodoc/source/ary/idl/i_namelookup.cxx65
-rw-r--r--autodoc/source/ary/idl/i_nnfinder.hxx121
-rw-r--r--autodoc/source/ary/idl/i_param.cxx60
-rw-r--r--autodoc/source/ary/idl/i_property.cxx174
-rw-r--r--autodoc/source/ary/idl/i_reposypart.cxx122
-rw-r--r--autodoc/source/ary/idl/i_reposypart.hxx99
-rw-r--r--autodoc/source/ary/idl/i_service.cxx174
-rw-r--r--autodoc/source/ary/idl/i_singleton.cxx115
-rw-r--r--autodoc/source/ary/idl/i_siservice.cxx124
-rw-r--r--autodoc/source/ary/idl/i_sisingleton.cxx116
-rw-r--r--autodoc/source/ary/idl/i_struct.cxx166
-rw-r--r--autodoc/source/ary/idl/i_structelem.cxx120
-rw-r--r--autodoc/source/ary/idl/i_traits.cxx75
-rw-r--r--autodoc/source/ary/idl/i_typedef.cxx148
-rw-r--r--autodoc/source/ary/idl/ia_ce.cxx584
-rw-r--r--autodoc/source/ary/idl/ia_ce.hxx256
-rw-r--r--autodoc/source/ary/idl/ia_type.cxx367
-rw-r--r--autodoc/source/ary/idl/ia_type.hxx173
-rw-r--r--autodoc/source/ary/idl/is_ce.cxx68
-rw-r--r--autodoc/source/ary/idl/is_ce.hxx82
-rw-r--r--autodoc/source/ary/idl/is_type.cxx86
-rw-r--r--autodoc/source/ary/idl/is_type.hxx125
-rw-r--r--autodoc/source/ary/idl/it_builtin.cxx82
-rw-r--r--autodoc/source/ary/idl/it_builtin.hxx79
-rw-r--r--autodoc/source/ary/idl/it_ce.cxx103
-rw-r--r--autodoc/source/ary/idl/it_ce.hxx91
-rw-r--r--autodoc/source/ary/idl/it_explicit.cxx103
-rw-r--r--autodoc/source/ary/idl/it_explicit.hxx96
-rw-r--r--autodoc/source/ary/idl/it_named.hxx78
-rw-r--r--autodoc/source/ary/idl/it_sequence.cxx94
-rw-r--r--autodoc/source/ary/idl/it_sequence.hxx87
-rw-r--r--autodoc/source/ary/idl/it_tplparam.cxx95
-rw-r--r--autodoc/source/ary/idl/it_tplparam.hxx101
-rw-r--r--autodoc/source/ary/idl/it_xnameroom.cxx103
-rw-r--r--autodoc/source/ary/idl/it_xnameroom.hxx126
-rw-r--r--autodoc/source/ary/idl/makefile.mk87
-rw-r--r--autodoc/source/ary/inc/cpp_internalgate.hxx69
-rw-r--r--autodoc/source/ary/inc/cross_refs.hxx101
-rw-r--r--autodoc/source/ary/inc/idl_internalgate.hxx69
-rw-r--r--autodoc/source/ary/inc/idsort.hxx55
-rw-r--r--autodoc/source/ary/inc/loc_internalgate.hxx66
-rw-r--r--autodoc/source/ary/inc/nametreenode.hxx213
-rw-r--r--autodoc/source/ary/inc/reposy.hxx94
-rw-r--r--autodoc/source/ary/inc/sci_impl.hxx416
-rw-r--r--autodoc/source/ary/inc/slots.hxx166
-rw-r--r--autodoc/source/ary/inc/sorted_idset.hxx99
-rw-r--r--autodoc/source/ary/inc/sortedids.hxx240
-rw-r--r--autodoc/source/ary/inc/store/s_base.hxx183
-rw-r--r--autodoc/source/ary/inc/store/s_iterator.hxx240
-rw-r--r--autodoc/source/ary/inc/store/s_storage.hxx297
-rw-r--r--autodoc/source/ary/inc/traits_impl.hxx122
-rw-r--r--autodoc/source/ary/info/all_dts.cxx107
-rw-r--r--autodoc/source/ary/info/all_tags.cxx571
-rw-r--r--autodoc/source/ary/info/ci_attag.cxx95
-rw-r--r--autodoc/source/ary/info/ci_text.cxx73
-rw-r--r--autodoc/source/ary/info/makefile.mk60
-rw-r--r--autodoc/source/ary/kernel/ary_disp.cxx111
-rw-r--r--autodoc/source/ary/kernel/cessentl.cxx89
-rw-r--r--autodoc/source/ary/kernel/makefile.mk63
-rw-r--r--autodoc/source/ary/kernel/namesort.cxx103
-rw-r--r--autodoc/source/ary/kernel/qualiname.cxx108
-rw-r--r--autodoc/source/ary/kernel/reposy.cxx221
-rw-r--r--autodoc/source/ary/kernel/slots.cxx167
-rw-r--r--autodoc/source/ary/loc/loc_dir.cxx137
-rw-r--r--autodoc/source/ary/loc/loc_file.cxx69
-rw-r--r--autodoc/source/ary/loc/loc_filebase.cxx66
-rw-r--r--autodoc/source/ary/loc/loc_root.cxx86
-rw-r--r--autodoc/source/ary/loc/loc_traits.cxx94
-rw-r--r--autodoc/source/ary/loc/loca_le.cxx184
-rw-r--r--autodoc/source/ary/loc/loca_le.hxx101
-rw-r--r--autodoc/source/ary/loc/locs_le.cxx70
-rw-r--r--autodoc/source/ary/loc/locs_le.hxx91
-rw-r--r--autodoc/source/ary/loc/makefile.mk61
-rw-r--r--autodoc/source/ary_i/kernel/ci_atag2.cxx59
-rw-r--r--autodoc/source/ary_i/kernel/ci_text2.cxx141
-rw-r--r--autodoc/source/ary_i/kernel/d_token.cxx190
-rw-r--r--autodoc/source/ary_i/kernel/makefile.mk60
-rw-r--r--autodoc/source/display/html/aryattrs.cxx251
-rw-r--r--autodoc/source/display/html/aryattrs.hxx157
-rw-r--r--autodoc/source/display/html/cfrstd.cxx347
-rw-r--r--autodoc/source/display/html/chd_udk2.cxx204
-rw-r--r--autodoc/source/display/html/cre_link.cxx272
-rw-r--r--autodoc/source/display/html/cre_link.hxx136
-rw-r--r--autodoc/source/display/html/dsply_cl.cxx111
-rw-r--r--autodoc/source/display/html/dsply_cl.hxx90
-rw-r--r--autodoc/source/display/html/dsply_da.cxx202
-rw-r--r--autodoc/source/display/html/dsply_da.hxx110
-rw-r--r--autodoc/source/display/html/dsply_op.cxx210
-rw-r--r--autodoc/source/display/html/dsply_op.hxx107
-rw-r--r--autodoc/source/display/html/easywri.cxx67
-rw-r--r--autodoc/source/display/html/easywri.hxx82
-rw-r--r--autodoc/source/display/html/hd_chlst.cxx592
-rw-r--r--autodoc/source/display/html/hd_chlst.hxx209
-rw-r--r--autodoc/source/display/html/hd_docu.cxx488
-rw-r--r--autodoc/source/display/html/hd_docu.hxx199
-rw-r--r--autodoc/source/display/html/hdimpl.cxx549
-rw-r--r--autodoc/source/display/html/hdimpl.hxx250
-rw-r--r--autodoc/source/display/html/html_kit.cxx307
-rw-r--r--autodoc/source/display/html/html_kit.hxx201
-rw-r--r--autodoc/source/display/html/makefile.mk78
-rw-r--r--autodoc/source/display/html/nav_main.cxx379
-rw-r--r--autodoc/source/display/html/nav_main.hxx121
-rw-r--r--autodoc/source/display/html/navibar.cxx318
-rw-r--r--autodoc/source/display/html/navibar.hxx121
-rw-r--r--autodoc/source/display/html/opageenv.cxx492
-rw-r--r--autodoc/source/display/html/opageenv.hxx131
-rw-r--r--autodoc/source/display/html/outfile.cxx395
-rw-r--r--autodoc/source/display/html/outfile.hxx89
-rw-r--r--autodoc/source/display/html/pagemake.cxx578
-rw-r--r--autodoc/source/display/html/pagemake.hxx167
-rw-r--r--autodoc/source/display/html/pm_aldef.cxx248
-rw-r--r--autodoc/source/display/html/pm_aldef.hxx91
-rw-r--r--autodoc/source/display/html/pm_base.cxx79
-rw-r--r--autodoc/source/display/html/pm_base.hxx90
-rw-r--r--autodoc/source/display/html/pm_class.cxx813
-rw-r--r--autodoc/source/display/html/pm_class.hxx133
-rw-r--r--autodoc/source/display/html/pm_help.cxx234
-rw-r--r--autodoc/source/display/html/pm_help.hxx65
-rw-r--r--autodoc/source/display/html/pm_index.cxx320
-rw-r--r--autodoc/source/display/html/pm_index.hxx138
-rw-r--r--autodoc/source/display/html/pm_namsp.cxx176
-rw-r--r--autodoc/source/display/html/pm_namsp.hxx80
-rw-r--r--autodoc/source/display/html/pm_start.cxx139
-rw-r--r--autodoc/source/display/html/pm_start.hxx65
-rw-r--r--autodoc/source/display/html/protarea.cxx140
-rw-r--r--autodoc/source/display/html/protarea.hxx96
-rw-r--r--autodoc/source/display/html/strconst.hxx80
-rw-r--r--autodoc/source/display/idl/hfi_constgroup.cxx140
-rw-r--r--autodoc/source/display/idl/hfi_constgroup.hxx68
-rw-r--r--autodoc/source/display/idl/hfi_doc.cxx194
-rw-r--r--autodoc/source/display/idl/hfi_doc.hxx88
-rw-r--r--autodoc/source/display/idl/hfi_enum.cxx136
-rw-r--r--autodoc/source/display/idl/hfi_enum.hxx70
-rw-r--r--autodoc/source/display/idl/hfi_globalindex.cxx278
-rw-r--r--autodoc/source/display/idl/hfi_globalindex.hxx91
-rw-r--r--autodoc/source/display/idl/hfi_hierarchy.cxx205
-rw-r--r--autodoc/source/display/idl/hfi_hierarchy.hxx127
-rw-r--r--autodoc/source/display/idl/hfi_interface.cxx360
-rw-r--r--autodoc/source/display/idl/hfi_interface.hxx93
-rw-r--r--autodoc/source/display/idl/hfi_linklist.cxx380
-rw-r--r--autodoc/source/display/idl/hfi_linklist.hxx147
-rw-r--r--autodoc/source/display/idl/hfi_method.cxx238
-rw-r--r--autodoc/source/display/idl/hfi_method.hxx106
-rw-r--r--autodoc/source/display/idl/hfi_module.cxx302
-rw-r--r--autodoc/source/display/idl/hfi_module.hxx85
-rw-r--r--autodoc/source/display/idl/hfi_navibar.cxx227
-rw-r--r--autodoc/source/display/idl/hfi_navibar.hxx85
-rw-r--r--autodoc/source/display/idl/hfi_property.cxx454
-rw-r--r--autodoc/source/display/idl/hfi_property.hxx185
-rw-r--r--autodoc/source/display/idl/hfi_service.cxx365
-rw-r--r--autodoc/source/display/idl/hfi_service.hxx101
-rw-r--r--autodoc/source/display/idl/hfi_singleton.cxx136
-rw-r--r--autodoc/source/display/idl/hfi_singleton.hxx71
-rw-r--r--autodoc/source/display/idl/hfi_siservice.cxx178
-rw-r--r--autodoc/source/display/idl/hfi_siservice.hxx74
-rw-r--r--autodoc/source/display/idl/hfi_struct.cxx206
-rw-r--r--autodoc/source/display/idl/hfi_struct.hxx81
-rw-r--r--autodoc/source/display/idl/hfi_tag.cxx357
-rw-r--r--autodoc/source/display/idl/hfi_tag.hxx180
-rw-r--r--autodoc/source/display/idl/hfi_typedef.cxx95
-rw-r--r--autodoc/source/display/idl/hfi_typedef.hxx67
-rw-r--r--autodoc/source/display/idl/hfi_typetext.cxx760
-rw-r--r--autodoc/source/display/idl/hfi_typetext.hxx160
-rw-r--r--autodoc/source/display/idl/hfi_xrefpage.cxx276
-rw-r--r--autodoc/source/display/idl/hfi_xrefpage.hxx107
-rw-r--r--autodoc/source/display/idl/hi_ary.cxx273
-rw-r--r--autodoc/source/display/idl/hi_ary.hxx164
-rw-r--r--autodoc/source/display/idl/hi_display.cxx200
-rw-r--r--autodoc/source/display/idl/hi_env.cxx202
-rw-r--r--autodoc/source/display/idl/hi_env.hxx163
-rw-r--r--autodoc/source/display/idl/hi_factory.cxx323
-rw-r--r--autodoc/source/display/idl/hi_factory.hxx172
-rw-r--r--autodoc/source/display/idl/hi_linkhelper.cxx99
-rw-r--r--autodoc/source/display/idl/hi_linkhelper.hxx110
-rw-r--r--autodoc/source/display/idl/hi_main.cxx766
-rw-r--r--autodoc/source/display/idl/hi_main.hxx181
-rw-r--r--autodoc/source/display/idl/makefile.mk77
-rw-r--r--autodoc/source/display/inc/cfrstd.hxx82
-rw-r--r--autodoc/source/display/inc/html/chd_udk2.hxx98
-rw-r--r--autodoc/source/display/inc/idl/hi_display.hxx113
-rw-r--r--autodoc/source/display/inc/toolkit/hf_docentry.hxx62
-rw-r--r--autodoc/source/display/inc/toolkit/hf_funcdecl.hxx74
-rw-r--r--autodoc/source/display/inc/toolkit/hf_linachain.hxx75
-rw-r--r--autodoc/source/display/inc/toolkit/hf_navi_main.hxx94
-rw-r--r--autodoc/source/display/inc/toolkit/hf_navi_sub.hxx83
-rw-r--r--autodoc/source/display/inc/toolkit/hf_title.hxx94
-rw-r--r--autodoc/source/display/inc/toolkit/htmlfactory.hxx104
-rw-r--r--autodoc/source/display/inc/toolkit/htmlfile.hxx88
-rw-r--r--autodoc/source/display/inc/toolkit/out_node.hxx132
-rw-r--r--autodoc/source/display/inc/toolkit/out_position.hxx120
-rw-r--r--autodoc/source/display/inc/toolkit/out_tree.hxx139
-rw-r--r--autodoc/source/display/inc/toolkit/outputstack.hxx75
-rw-r--r--autodoc/source/display/kernel/displfct.cxx91
-rw-r--r--autodoc/source/display/kernel/displfct.hxx65
-rw-r--r--autodoc/source/display/kernel/makefile.mk55
-rw-r--r--autodoc/source/display/toolkit/hf_docentry.cxx77
-rw-r--r--autodoc/source/display/toolkit/hf_funcdecl.cxx159
-rw-r--r--autodoc/source/display/toolkit/hf_linachain.cxx113
-rw-r--r--autodoc/source/display/toolkit/hf_navi_main.cxx240
-rw-r--r--autodoc/source/display/toolkit/hf_navi_sub.cxx105
-rw-r--r--autodoc/source/display/toolkit/hf_title.cxx172
-rw-r--r--autodoc/source/display/toolkit/htmlfile.cxx213
-rw-r--r--autodoc/source/display/toolkit/makefile.mk64
-rw-r--r--autodoc/source/display/toolkit/out_node.cxx192
-rw-r--r--autodoc/source/display/toolkit/out_position.cxx242
-rw-r--r--autodoc/source/display/toolkit/out_tree.cxx56
-rw-r--r--autodoc/source/display/toolkit/outputstack.cxx60
-rw-r--r--autodoc/source/exes/adc_uni/adc_cl.cxx402
-rw-r--r--autodoc/source/exes/adc_uni/adc_cmd.hxx134
-rw-r--r--autodoc/source/exes/adc_uni/adc_cmd_parse.cxx345
-rw-r--r--autodoc/source/exes/adc_uni/adc_cmd_parse.hxx211
-rw-r--r--autodoc/source/exes/adc_uni/adc_cmds.cxx180
-rw-r--r--autodoc/source/exes/adc_uni/adc_cmds.hxx128
-rw-r--r--autodoc/source/exes/adc_uni/adc_msg.cxx211
-rw-r--r--autodoc/source/exes/adc_uni/cmd_run.cxx281
-rw-r--r--autodoc/source/exes/adc_uni/cmd_run.hxx107
-rw-r--r--autodoc/source/exes/adc_uni/cmd_sincedata.cxx132
-rw-r--r--autodoc/source/exes/adc_uni/cmd_sincedata.hxx94
-rw-r--r--autodoc/source/exes/adc_uni/main.cxx56
-rw-r--r--autodoc/source/exes/adc_uni/makefile.mk104
-rw-r--r--autodoc/source/exes/adc_uni/spec-CommandLine.txt181
-rw-r--r--autodoc/source/exes/adc_uni/spec-DevGuideReferenceFile.txt0
-rw-r--r--autodoc/source/exes/adc_uni/spec-SinceTag_Handling.txt49
-rw-r--r--autodoc/source/inc/adc_cl.hxx195
-rw-r--r--autodoc/source/inc/adc_msg.hxx144
-rw-r--r--autodoc/source/inc/docu_node_ids.hxx67
-rw-r--r--autodoc/source/inc/estack.hxx96
-rw-r--r--autodoc/source/inc/luxenum.hxx105
-rw-r--r--autodoc/source/inc/manip.hxx63
-rw-r--r--autodoc/source/inc/precomp.h69
-rw-r--r--autodoc/source/inc/prprpr.hxx61
-rw-r--r--autodoc/source/inc/tools/filecoll.hxx71
-rw-r--r--autodoc/source/inc/tools/tkpchars.hxx172
-rw-r--r--autodoc/source/mkinc/fullcpp.mk54
-rw-r--r--autodoc/source/parser/adoc/a_rdocu.cxx92
-rw-r--r--autodoc/source/parser/adoc/adoc_tok.cxx49
-rw-r--r--autodoc/source/parser/adoc/cx_a_std.cxx518
-rw-r--r--autodoc/source/parser/adoc/cx_a_sub.cxx184
-rw-r--r--autodoc/source/parser/adoc/docu_pe.cxx405
-rw-r--r--autodoc/source/parser/adoc/makefile.mk62
-rw-r--r--autodoc/source/parser/adoc/prs_adoc.cxx59
-rw-r--r--autodoc/source/parser/adoc/tk_attag.cxx86
-rw-r--r--autodoc/source/parser/adoc/tk_docw.cxx130
-rw-r--r--autodoc/source/parser/cpp/all_toks.cxx154
-rw-r--r--autodoc/source/parser/cpp/all_toks.hxx221
-rw-r--r--autodoc/source/parser/cpp/c_dealer.cxx151
-rw-r--r--autodoc/source/parser/cpp/c_dealer.hxx110
-rw-r--r--autodoc/source/parser/cpp/c_rcode.cxx163
-rw-r--r--autodoc/source/parser/cpp/c_rcode.hxx106
-rw-r--r--autodoc/source/parser/cpp/cpp_pe.cxx80
-rw-r--r--autodoc/source/parser/cpp/cpp_pe.hxx83
-rw-r--r--autodoc/source/parser/cpp/cpp_tok.hxx65
-rw-r--r--autodoc/source/parser/cpp/cx_base.cxx79
-rw-r--r--autodoc/source/parser/cpp/cx_base.hxx98
-rw-r--r--autodoc/source/parser/cpp/cx_c_pp.cxx182
-rw-r--r--autodoc/source/parser/cpp/cx_c_pp.hxx97
-rw-r--r--autodoc/source/parser/cpp/cx_c_std.cxx531
-rw-r--r--autodoc/source/parser/cpp/cx_c_std.hxx94
-rw-r--r--autodoc/source/parser/cpp/cx_c_sub.cxx160
-rw-r--r--autodoc/source/parser/cpp/cx_c_sub.hxx105
-rw-r--r--autodoc/source/parser/cpp/cxt2ary.cxx360
-rw-r--r--autodoc/source/parser/cpp/cxt2ary.hxx201
-rw-r--r--autodoc/source/parser/cpp/defdescr.cxx227
-rw-r--r--autodoc/source/parser/cpp/defdescr.hxx100
-rw-r--r--autodoc/source/parser/cpp/fevnthdl.hxx107
-rw-r--r--autodoc/source/parser/cpp/icprivow.cxx195
-rw-r--r--autodoc/source/parser/cpp/icprivow.hxx126
-rw-r--r--autodoc/source/parser/cpp/makefile.mk87
-rw-r--r--autodoc/source/parser/cpp/pe_base.cxx226
-rw-r--r--autodoc/source/parser/cpp/pe_base.hxx126
-rw-r--r--autodoc/source/parser/cpp/pe_class.cxx496
-rw-r--r--autodoc/source/parser/cpp/pe_class.hxx255
-rw-r--r--autodoc/source/parser/cpp/pe_defs.cxx182
-rw-r--r--autodoc/source/parser/cpp/pe_defs.hxx96
-rw-r--r--autodoc/source/parser/cpp/pe_enum.cxx191
-rw-r--r--autodoc/source/parser/cpp/pe_enum.hxx140
-rw-r--r--autodoc/source/parser/cpp/pe_enval.cxx170
-rw-r--r--autodoc/source/parser/cpp/pe_enval.hxx101
-rw-r--r--autodoc/source/parser/cpp/pe_expr.cxx179
-rw-r--r--autodoc/source/parser/cpp/pe_expr.hxx107
-rw-r--r--autodoc/source/parser/cpp/pe_file.cxx320
-rw-r--r--autodoc/source/parser/cpp/pe_file.hxx198
-rw-r--r--autodoc/source/parser/cpp/pe_funct.cxx612
-rw-r--r--autodoc/source/parser/cpp/pe_funct.hxx284
-rw-r--r--autodoc/source/parser/cpp/pe_ignor.cxx118
-rw-r--r--autodoc/source/parser/cpp/pe_ignor.hxx77
-rw-r--r--autodoc/source/parser/cpp/pe_namsp.cxx165
-rw-r--r--autodoc/source/parser/cpp/pe_namsp.hxx101
-rw-r--r--autodoc/source/parser/cpp/pe_param.cxx282
-rw-r--r--autodoc/source/parser/cpp/pe_param.hxx141
-rw-r--r--autodoc/source/parser/cpp/pe_tpltp.cxx178
-rw-r--r--autodoc/source/parser/cpp/pe_tpltp.hxx108
-rw-r--r--autodoc/source/parser/cpp/pe_tydef.cxx145
-rw-r--r--autodoc/source/parser/cpp/pe_tydef.hxx93
-rw-r--r--autodoc/source/parser/cpp/pe_type.cxx556
-rw-r--r--autodoc/source/parser/cpp/pe_type.hxx187
-rw-r--r--autodoc/source/parser/cpp/pe_vafu.cxx651
-rw-r--r--autodoc/source/parser/cpp/pe_vafu.hxx292
-rw-r--r--autodoc/source/parser/cpp/pe_vari.cxx189
-rw-r--r--autodoc/source/parser/cpp/pe_vari.hxx132
-rw-r--r--autodoc/source/parser/cpp/pev.hxx306
-rw-r--r--autodoc/source/parser/cpp/preproc.cxx233
-rw-r--r--autodoc/source/parser/cpp/preproc.hxx118
-rw-r--r--autodoc/source/parser/cpp/prs_cpp.cxx250
-rw-r--r--autodoc/source/parser/cpp/sdocdist.hxx161
-rw-r--r--autodoc/source/parser/cpp/sfscope.hxx72
-rw-r--r--autodoc/source/parser/cpp/sownstck.hxx327
-rw-r--r--autodoc/source/parser/cpp/srecover.hxx134
-rw-r--r--autodoc/source/parser/cpp/tkp_cpp.cxx94
-rw-r--r--autodoc/source/parser/cpp/tkp_cpp.hxx101
-rw-r--r--autodoc/source/parser/cpp/tokintpr.hxx120
-rw-r--r--autodoc/source/parser/inc/adoc/a_rdocu.hxx73
-rw-r--r--autodoc/source/parser/inc/adoc/adoc_tok.hxx64
-rw-r--r--autodoc/source/parser/inc/adoc/atokdeal.hxx62
-rw-r--r--autodoc/source/parser/inc/adoc/cx_a_std.hxx107
-rw-r--r--autodoc/source/parser/inc/adoc/cx_a_sub.hxx148
-rw-r--r--autodoc/source/parser/inc/adoc/docu_pe.hxx195
-rw-r--r--autodoc/source/parser/inc/adoc/prs_adoc.hxx57
-rw-r--r--autodoc/source/parser/inc/adoc/tk_attag.hxx100
-rw-r--r--autodoc/source/parser/inc/adoc/tk_docw.hxx119
-rw-r--r--autodoc/source/parser/inc/adoc/tokintpr.hxx119
-rw-r--r--autodoc/source/parser/inc/cpp/ctokdeal.hxx76
-rw-r--r--autodoc/source/parser/inc/cpp/prs_cpp.hxx70
-rw-r--r--autodoc/source/parser/inc/doc_deal.hxx92
-rw-r--r--autodoc/source/parser/inc/semantic/callf.hxx289
-rw-r--r--autodoc/source/parser/inc/semantic/parseenv.hxx112
-rw-r--r--autodoc/source/parser/inc/semantic/sub_pe.hxx114
-rw-r--r--autodoc/source/parser/inc/semantic/sub_peu.hxx133
-rw-r--r--autodoc/source/parser/inc/tokens/parseinc.hxx205
-rw-r--r--autodoc/source/parser/inc/tokens/stmstarr.hxx87
-rw-r--r--autodoc/source/parser/inc/tokens/stmstate.hxx70
-rw-r--r--autodoc/source/parser/inc/tokens/stmstfin.hxx82
-rw-r--r--autodoc/source/parser/inc/tokens/tkp.hxx95
-rw-r--r--autodoc/source/parser/inc/tokens/tkpcontx.hxx142
-rw-r--r--autodoc/source/parser/inc/tokens/tkpstama.hxx125
-rw-r--r--autodoc/source/parser/inc/tokens/tokdeal.hxx59
-rw-r--r--autodoc/source/parser/inc/tokens/token.hxx68
-rw-r--r--autodoc/source/parser/inc/tokens/tokproct.hxx85
-rw-r--r--autodoc/source/parser/inc/x_docu.hxx61
-rw-r--r--autodoc/source/parser/inc/x_parse.hxx66
-rw-r--r--autodoc/source/parser/kernel/makefile.mk58
-rw-r--r--autodoc/source/parser/kernel/parsefct.cxx83
-rw-r--r--autodoc/source/parser/kernel/parsefct.hxx62
-rw-r--r--autodoc/source/parser/kernel/x_docu.cxx64
-rw-r--r--autodoc/source/parser/kernel/x_parse.cxx101
-rw-r--r--autodoc/source/parser/semantic/makefile.mk58
-rw-r--r--autodoc/source/parser/semantic/parseenv.cxx89
-rw-r--r--autodoc/source/parser/tokens/makefile.mk62
-rw-r--r--autodoc/source/parser/tokens/stmstarr.cxx101
-rw-r--r--autodoc/source/parser/tokens/stmstate.cxx48
-rw-r--r--autodoc/source/parser/tokens/stmstfin.cxx63
-rw-r--r--autodoc/source/parser/tokens/tkp.cxx74
-rw-r--r--autodoc/source/parser/tokens/tkpcontx.cxx70
-rw-r--r--autodoc/source/parser/tokens/tkpstama.cxx180
-rw-r--r--autodoc/source/parser/tokens/tokdeal.cxx52
-rw-r--r--autodoc/source/parser_i/idl/cx_idlco.cxx547
-rw-r--r--autodoc/source/parser_i/idl/cx_sub.cxx149
-rw-r--r--autodoc/source/parser_i/idl/distrib.cxx266
-rw-r--r--autodoc/source/parser_i/idl/makefile.mk84
-rw-r--r--autodoc/source/parser_i/idl/parsenv2.cxx215
-rw-r--r--autodoc/source/parser_i/idl/pe_attri.cxx297
-rw-r--r--autodoc/source/parser_i/idl/pe_const.cxx282
-rw-r--r--autodoc/source/parser_i/idl/pe_enum2.cxx253
-rw-r--r--autodoc/source/parser_i/idl/pe_evalu.cxx184
-rw-r--r--autodoc/source/parser_i/idl/pe_excp.cxx301
-rw-r--r--autodoc/source/parser_i/idl/pe_file2.cxx320
-rw-r--r--autodoc/source/parser_i/idl/pe_func2.cxx447
-rw-r--r--autodoc/source/parser_i/idl/pe_iface.cxx470
-rw-r--r--autodoc/source/parser_i/idl/pe_property.cxx240
-rw-r--r--autodoc/source/parser_i/idl/pe_selem.cxx208
-rw-r--r--autodoc/source/parser_i/idl/pe_servi.cxx395
-rw-r--r--autodoc/source/parser_i/idl/pe_singl.cxx250
-rw-r--r--autodoc/source/parser_i/idl/pe_struc.cxx330
-rw-r--r--autodoc/source/parser_i/idl/pe_tydf2.cxx186
-rw-r--r--autodoc/source/parser_i/idl/pe_type2.cxx317
-rw-r--r--autodoc/source/parser_i/idl/pe_vari2.cxx175
-rw-r--r--autodoc/source/parser_i/idl/pestate.cxx142
-rw-r--r--autodoc/source/parser_i/idl/semnode.cxx85
-rw-r--r--autodoc/source/parser_i/idl/tk_const.cxx59
-rw-r--r--autodoc/source/parser_i/idl/tk_ident.cxx70
-rw-r--r--autodoc/source/parser_i/idl/tk_keyw.cxx227
-rw-r--r--autodoc/source/parser_i/idl/tk_punct.cxx116
-rw-r--r--autodoc/source/parser_i/idl/tkp_uidl.cxx76
-rw-r--r--autodoc/source/parser_i/idl/unoidl.cxx179
-rw-r--r--autodoc/source/parser_i/idoc/cx_docu2.cxx269
-rw-r--r--autodoc/source/parser_i/idoc/cx_dsapi.cxx535
-rw-r--r--autodoc/source/parser_i/idoc/docu_pe2.cxx608
-rw-r--r--autodoc/source/parser_i/idoc/makefile.mk62
-rw-r--r--autodoc/source/parser_i/idoc/tk_atag2.cxx85
-rw-r--r--autodoc/source/parser_i/idoc/tk_docw2.cxx121
-rw-r--r--autodoc/source/parser_i/idoc/tk_html.cxx60
-rw-r--r--autodoc/source/parser_i/idoc/tk_xml.cxx176
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/cx_docu2.hxx235
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/cx_dsapi.hxx125
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/docu_pe2.hxx176
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/dsapitok.hxx67
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/tk_atag2.hxx90
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/tk_docw2.hxx123
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/tk_html.hxx75
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/tk_xml.hxx203
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/tokintpr.hxx96
-rw-r--r--autodoc/source/parser_i/inc/s2_dsapi/tokrecv.hxx62
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/cx_idlco.hxx101
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/cx_sub.hxx133
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/distrib.hxx274
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/parsenv2.hxx145
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_attri.hxx137
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_const.hxx147
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_enum2.hxx133
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_evalu.hxx129
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_excp.hxx261
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_file2.hxx142
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_func2.hxx169
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_iface.hxx186
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_modul.hxx65
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_property.hxx125
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_selem.hxx124
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_servi.hxx151
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_singl.hxx127
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_struc.hxx287
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_tydf2.hxx126
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_type2.hxx119
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pe_vari2.hxx109
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/pestate.hxx108
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/semnode.hxx134
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/smp_uidl.hxx84
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tk_const.hxx66
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tk_ident.hxx77
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tk_keyw.hxx253
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tk_punct.hxx115
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tkp_uidl.hxx86
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tokintpr.hxx101
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tokproct.hxx95
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/tokrecv.hxx62
-rw-r--r--autodoc/source/parser_i/inc/s2_luidl/uidl_tok.hxx66
-rw-r--r--autodoc/source/parser_i/inc/semantic/parsenv2.hxx53
-rw-r--r--autodoc/source/parser_i/inc/tokens/stmstar2.hxx85
-rw-r--r--autodoc/source/parser_i/inc/tokens/stmstat2.hxx70
-rw-r--r--autodoc/source/parser_i/inc/tokens/stmstfi2.hxx82
-rw-r--r--autodoc/source/parser_i/inc/tokens/tkp2.hxx86
-rw-r--r--autodoc/source/parser_i/inc/tokens/tkpcont2.hxx125
-rw-r--r--autodoc/source/parser_i/inc/tokens/tkpstam2.hxx123
-rw-r--r--autodoc/source/parser_i/inc/tokens/token2.hxx65
-rw-r--r--autodoc/source/parser_i/inc/x_parse2.hxx70
-rw-r--r--autodoc/source/parser_i/tokens/makefile.mk63
-rw-r--r--autodoc/source/parser_i/tokens/stmstar2.cxx104
-rw-r--r--autodoc/source/parser_i/tokens/stmstat2.cxx48
-rw-r--r--autodoc/source/parser_i/tokens/stmstfi2.cxx63
-rw-r--r--autodoc/source/parser_i/tokens/tkp2.cxx64
-rw-r--r--autodoc/source/parser_i/tokens/tkpcont2.cxx67
-rw-r--r--autodoc/source/parser_i/tokens/tkpstam2.cxx177
-rw-r--r--autodoc/source/parser_i/tokens/x_parse2.cxx63
-rw-r--r--autodoc/source/tools/filecoll.cxx134
-rw-r--r--autodoc/source/tools/makefile.mk58
-rw-r--r--autodoc/source/tools/tkpchars.cxx161
-rwxr-xr-xautogen.sh37
-rw-r--r--automation/inc/automation/automation.hxx55
-rw-r--r--automation/inc/automation/commdefines.hxx150
-rw-r--r--automation/inc/automation/commtypes.hxx103
-rw-r--r--automation/inc/automation/communi.hxx183
-rw-r--r--automation/inc/automation/simplecm.hxx396
-rw-r--r--automation/inc/makefile.mk47
-rw-r--r--automation/inc/pch/precompiled_automation.cxx31
-rw-r--r--automation/inc/pch/precompiled_automation.hxx34
-rw-r--r--automation/packimages/makefile.mk63
-rw-r--r--automation/prj/build.lst11
-rw-r--r--automation/prj/d.lst27
-rw-r--r--automation/prj/l10n1
-rw-r--r--automation/source/app/makefile.mk52
-rw-r--r--automation/source/app/testbasi.cxx148
-rw-r--r--automation/source/app/testbasi.hxx67
-rw-r--r--automation/source/communi/communi.cxx599
-rw-r--r--automation/source/communi/makefile.mk44
-rw-r--r--automation/source/inc/cmdbasestream.hxx88
-rw-r--r--automation/source/inc/icommstream.hxx67
-rw-r--r--automation/source/inc/rcontrol.hxx499
-rw-r--r--automation/source/inc/sttresid.hxx45
-rw-r--r--automation/source/inc/svcommstream.hxx59
-rw-r--r--automation/source/inc/testapp.hxx198
-rw-r--r--automation/source/inc/testtool.hxx75
-rw-r--r--automation/source/miniapp/editwin.cxx127
-rw-r--r--automation/source/miniapp/editwin.hxx70
-rw-r--r--automation/source/miniapp/hid.lst27
-rw-r--r--automation/source/miniapp/makefile.mk54
-rw-r--r--automation/source/miniapp/servres.cxx62
-rw-r--r--automation/source/miniapp/servres.hrc40
-rw-r--r--automation/source/miniapp/servres.hxx65
-rw-r--r--automation/source/miniapp/servres.src233
-rw-r--r--automation/source/miniapp/servuid.hxx40
-rw-r--r--automation/source/miniapp/test.bas126
-rw-r--r--automation/source/miniapp/test.sid5
-rw-r--r--automation/source/miniapp/test.win13
-rw-r--r--automation/source/miniapp/testapp.cxx350
-rw-r--r--automation/source/miniapp/testapp.hxx109
-rw-r--r--automation/source/mozillaserver/makefile.mk153
-rw-r--r--automation/source/mozillaserver/mozillatesttoolserver.idl52
-rw-r--r--automation/source/mozillaserver/xmozillatesttoolserver.idl157
-rw-r--r--automation/source/server/XMLParser.cxx695
-rw-r--r--automation/source/server/cmdbasestream.cxx303
-rw-r--r--automation/source/server/editwin.cxx166
-rw-r--r--automation/source/server/editwin.hxx72
-rw-r--r--automation/source/server/makefile.mk71
-rw-r--r--automation/source/server/prof_nul.cxx98
-rw-r--r--automation/source/server/prof_usl.cxx138
-rw-r--r--automation/source/server/profiler.cxx264
-rw-r--r--automation/source/server/profiler.hxx139
-rw-r--r--automation/source/server/recorder.cxx1097
-rw-r--r--automation/source/server/recorder.hxx86
-rw-r--r--automation/source/server/retstrm.cxx124
-rw-r--r--automation/source/server/retstrm.hxx87
-rw-r--r--automation/source/server/scmdstrm.cxx217
-rw-r--r--automation/source/server/scmdstrm.hxx64
-rw-r--r--automation/source/server/server.cxx974
-rw-r--r--automation/source/server/server.hxx73
-rw-r--r--automation/source/server/sta_list.cxx1224
-rw-r--r--automation/source/server/statemnt.cxx6760
-rw-r--r--automation/source/server/statemnt.hxx500
-rw-r--r--automation/source/server/svcommstream.cxx51
-rw-r--r--automation/source/server/testtool.hrc55
-rw-r--r--automation/source/simplecm/communiio.hxx68
-rw-r--r--automation/source/simplecm/makefile.mk46
-rw-r--r--automation/source/simplecm/packethandler.cxx337
-rw-r--r--automation/source/simplecm/packethandler.hxx72
-rw-r--r--automation/source/simplecm/simplecm.cxx700
-rw-r--r--automation/source/simplecm/tcpio.cxx74
-rw-r--r--automation/source/simplecm/tcpio.hxx64
-rw-r--r--automation/source/testtool/cmdstrm.cxx470
-rw-r--r--automation/source/testtool/cmdstrm.hxx81
-rw-r--r--automation/source/testtool/comm_bas.cxx440
-rw-r--r--automation/source/testtool/comm_bas.hxx121
-rw-r--r--automation/source/testtool/cretstrm.cxx73
-rw-r--r--automation/source/testtool/cretstrm.hxx58
-rw-r--r--automation/source/testtool/filter.pl125
-rw-r--r--automation/source/testtool/httprequest.cxx239
-rw-r--r--automation/source/testtool/httprequest.hxx88
-rw-r--r--automation/source/testtool/makefile.mk109
-rw-r--r--automation/source/testtool/objtest.cxx4258
-rw-r--r--automation/source/testtool/objtest.hxx406
-rw-r--r--automation/source/testtool/registry_win.cxx90
-rw-r--r--automation/source/testtool/registry_win.hxx34
-rw-r--r--automation/source/testtool/sysdir_win.cxx107
-rw-r--r--automation/source/testtool/sysdir_win.hxx34
-rw-r--r--automation/source/testtool/tcommuni.cxx201
-rw-r--r--automation/source/testtool/tcommuni.hxx69
-rw-r--r--automation/source/testtool/testtool.ini19
-rw-r--r--automation/util/makefile.mk283
-rwxr-xr-xautomation/util/manually_added_ids.hid8
-rw-r--r--basctl/inc/basidesh.hrc192
-rw-r--r--basctl/inc/helpid.hrc85
-rw-r--r--basctl/inc/iderdll.hxx57
-rw-r--r--basctl/inc/makefile.mk48
-rw-r--r--basctl/inc/pch/precompiled_basctl.cxx31
-rw-r--r--basctl/inc/pch/precompiled_basctl.hxx211
-rw-r--r--basctl/prj/build.lst9
-rw-r--r--basctl/prj/d.lst23
-rw-r--r--basctl/sdi/baside.sdi470
-rw-r--r--basctl/sdi/basslots.hrc29
-rw-r--r--basctl/sdi/basslots.sdi47
-rw-r--r--basctl/sdi/makefile.mk54
-rw-r--r--basctl/source/accessibility/accessibledialogcontrolshape.cxx621
-rw-r--r--basctl/source/accessibility/accessibledialogwindow.cxx1126
-rw-r--r--basctl/source/accessibility/makefile.mk48
-rw-r--r--basctl/source/basicide/basdoc.cxx137
-rw-r--r--basctl/source/basicide/basdoc.hxx69
-rw-r--r--basctl/source/basicide/basicbox.cxx548
-rw-r--r--basctl/source/basicide/basicbox.hxx154
-rw-r--r--basctl/source/basicide/basicmod.hxx49
-rw-r--r--basctl/source/basicide/basicprint.src40
-rw-r--r--basctl/source/basicide/basicrenderable.cxx196
-rw-r--r--basctl/source/basicide/basicrenderable.hxx76
-rw-r--r--basctl/source/basicide/baside2.cxx1759
-rw-r--r--basctl/source/basicide/baside2.hrc50
-rw-r--r--basctl/source/basicide/baside2.hxx507
-rw-r--r--basctl/source/basicide/baside2b.cxx2317
-rw-r--r--basctl/source/basicide/baside3.cxx1415
-rw-r--r--basctl/source/basicide/basidectrlr.cxx153
-rw-r--r--basctl/source/basicide/basides1.cxx1443
-rw-r--r--basctl/source/basicide/basides2.cxx353
-rw-r--r--basctl/source/basicide/basides3.cxx179
-rw-r--r--basctl/source/basicide/basidesh.cxx1065
-rw-r--r--basctl/source/basicide/basidesh.src747
-rw-r--r--basctl/source/basicide/basobj2.cxx416
-rw-r--r--basctl/source/basicide/basobj3.cxx529
-rw-r--r--basctl/source/basicide/bastype2.cxx903
-rw-r--r--basctl/source/basicide/bastype2.hxx222
-rw-r--r--basctl/source/basicide/bastype3.cxx509
-rw-r--r--basctl/source/basicide/bastype3.hxx67
-rw-r--r--basctl/source/basicide/bastype4.hxx69
-rw-r--r--basctl/source/basicide/bastypes.cxx1022
-rw-r--r--basctl/source/basicide/brkdlg.cxx282
-rw-r--r--basctl/source/basicide/brkdlg.hrc45
-rw-r--r--basctl/source/basicide/brkdlg.hxx75
-rw-r--r--basctl/source/basicide/brkdlg.src130
-rw-r--r--basctl/source/basicide/doceventnotifier.cxx280
-rw-r--r--basctl/source/basicide/docsignature.cxx118
-rw-r--r--basctl/source/basicide/documentenumeration.cxx206
-rw-r--r--basctl/source/basicide/documentenumeration.hxx109
-rw-r--r--basctl/source/basicide/ide_pch.cxx33
-rw-r--r--basctl/source/basicide/ide_pch.hxx72
-rw-r--r--basctl/source/basicide/iderdll.cxx232
-rw-r--r--basctl/source/basicide/iderdll2.hxx111
-rw-r--r--basctl/source/basicide/idetemp.hxx67
-rw-r--r--basctl/source/basicide/localizationmgr.cxx1228
-rw-r--r--basctl/source/basicide/macrodlg.cxx923
-rw-r--r--basctl/source/basicide/macrodlg.hrc59
-rw-r--r--basctl/source/basicide/macrodlg.hxx114
-rw-r--r--basctl/source/basicide/macrodlg.src231
-rw-r--r--basctl/source/basicide/makefile.mk100
-rw-r--r--basctl/source/basicide/moduldl2.cxx1728
-rw-r--r--basctl/source/basicide/moduldlg.cxx1068
-rw-r--r--basctl/source/basicide/moduldlg.hrc68
-rw-r--r--basctl/source/basicide/moduldlg.hxx277
-rw-r--r--basctl/source/basicide/moduldlg.src411
-rw-r--r--basctl/source/basicide/moptions.hrc47
-rw-r--r--basctl/source/basicide/moptions.src147
-rw-r--r--basctl/source/basicide/objdlg.cxx303
-rw-r--r--basctl/source/basicide/objdlg.hrc40
-rw-r--r--basctl/source/basicide/objdlg.hxx99
-rw-r--r--basctl/source/basicide/objdlg.src93
-rw-r--r--basctl/source/basicide/register.cxx120
-rw-r--r--basctl/source/basicide/scriptdocument.cxx1631
-rw-r--r--basctl/source/basicide/tbxctl.cxx243
-rw-r--r--basctl/source/basicide/tbxctl.hrc30
-rw-r--r--basctl/source/basicide/tbxctl.hxx95
-rw-r--r--basctl/source/basicide/tbxctl.src273
-rw-r--r--basctl/source/basicide/unomodel.cxx129
-rw-r--r--basctl/source/basicide/unomodel.hxx69
-rw-r--r--basctl/source/dlged/dlged.cxx1425
-rw-r--r--basctl/source/dlged/dlgedclip.cxx151
-rw-r--r--basctl/source/dlged/dlgedfac.cxx270
-rw-r--r--basctl/source/dlged/dlgedfunc.cxx640
-rw-r--r--basctl/source/dlged/dlgedlist.cxx130
-rw-r--r--basctl/source/dlged/dlgedmod.cxx81
-rw-r--r--basctl/source/dlged/dlgedobj.cxx1896
-rw-r--r--basctl/source/dlged/dlgedpage.cxx89
-rw-r--r--basctl/source/dlged/dlgedview.cxx217
-rw-r--r--basctl/source/dlged/dlgresid.src175
-rw-r--r--basctl/source/dlged/makefile.mk63
-rw-r--r--basctl/source/dlged/managelang.cxx427
-rw-r--r--basctl/source/dlged/managelang.hrc106
-rw-r--r--basctl/source/dlged/managelang.src232
-rw-r--r--basctl/source/dlged/propbrw.cxx624
-rw-r--r--basctl/source/inc/accessibledialogcontrolshape.hxx150
-rw-r--r--basctl/source/inc/accessibledialogwindow.hxx177
-rw-r--r--basctl/source/inc/baside3.hxx116
-rw-r--r--basctl/source/inc/basidectrlr.hxx76
-rw-r--r--basctl/source/inc/basidesh.hxx239
-rw-r--r--basctl/source/inc/basobj.hxx128
-rw-r--r--basctl/source/inc/bastypes.hxx343
-rw-r--r--basctl/source/inc/dlged.hxx215
-rw-r--r--basctl/source/inc/dlgedclip.hxx68
-rw-r--r--basctl/source/inc/dlgeddef.hxx86
-rw-r--r--basctl/source/inc/dlgedfac.hxx51
-rw-r--r--basctl/source/inc/dlgedfunc.hxx98
-rw-r--r--basctl/source/inc/dlgedlist.hxx87
-rw-r--r--basctl/source/inc/dlgedmod.hxx67
-rw-r--r--basctl/source/inc/dlgedobj.hxx198
-rw-r--r--basctl/source/inc/dlgedpage.hxx64
-rw-r--r--basctl/source/inc/dlgedview.hxx63
-rw-r--r--basctl/source/inc/dlgresid.hrc77
-rw-r--r--basctl/source/inc/doceventnotifier.hxx99
-rw-r--r--basctl/source/inc/docsignature.hxx92
-rw-r--r--basctl/source/inc/iderid.hxx43
-rw-r--r--basctl/source/inc/localizationmgr.hxx158
-rw-r--r--basctl/source/inc/managelang.hxx121
-rw-r--r--basctl/source/inc/propbrw.hxx118
-rw-r--r--basctl/source/inc/sbxitem.hxx79
-rw-r--r--basctl/source/inc/scriptdocument.hxx540
-rw-r--r--basctl/source/inc/svheader.hxx91
-rw-r--r--basctl/uiconfig/basicide/menubar/menubar.xml91
-rw-r--r--basctl/uiconfig/basicide/statusbar/statusbar.xml10
-rw-r--r--basctl/uiconfig/basicide/toolbar/dialogbar.xml9
-rw-r--r--basctl/uiconfig/basicide/toolbar/fullscreenbar.xml5
-rw-r--r--basctl/uiconfig/basicide/toolbar/insertcontrolsbar.xml43
-rw-r--r--basctl/uiconfig/basicide/toolbar/macrobar.xml22
-rw-r--r--basctl/uiconfig/basicide/toolbar/standardbar.xml25
-rw-r--r--basctl/uiconfig/basicide/toolbar/translationbar.xml6
-rwxr-xr-xbasctl/util/basctl.map11
-rw-r--r--basctl/util/basctl.xml23
-rw-r--r--basctl/util/hidother.hrc27
-rw-r--r--basctl/util/hidother.src44
-rw-r--r--basctl/util/makefile.mk105
-rw-r--r--basctl/util/makefile.pmk28
-rw-r--r--basebmp/inc/basebmp/accessor.hxx122
-rw-r--r--basebmp/inc/basebmp/accessoradapters.hxx529
-rw-r--r--basebmp/inc/basebmp/accessorfunctors.hxx190
-rw-r--r--basebmp/inc/basebmp/accessortraits.hxx133
-rw-r--r--basebmp/inc/basebmp/bitmapdevice.hxx695
-rw-r--r--basebmp/inc/basebmp/clippedlinerenderer.hxx415
-rw-r--r--basebmp/inc/basebmp/color.hxx102
-rw-r--r--basebmp/inc/basebmp/colorblendaccessoradapter.hxx151
-rw-r--r--basebmp/inc/basebmp/colormisc.hxx194
-rw-r--r--basebmp/inc/basebmp/colortraits.hxx153
-rw-r--r--basebmp/inc/basebmp/compositeiterator.hxx370
-rw-r--r--basebmp/inc/basebmp/debug.hxx53
-rw-r--r--basebmp/inc/basebmp/drawmodes.hxx58
-rw-r--r--basebmp/inc/basebmp/endian.hxx60
-rw-r--r--basebmp/inc/basebmp/fillimage.hxx72
-rw-r--r--basebmp/inc/basebmp/genericcolorimageaccessor.hxx85
-rw-r--r--basebmp/inc/basebmp/greylevelformats.hxx138
-rw-r--r--basebmp/inc/basebmp/iteratortraits.hxx58
-rw-r--r--basebmp/inc/basebmp/linerenderer.hxx184
-rw-r--r--basebmp/inc/basebmp/metafunctions.hxx225
-rw-r--r--basebmp/inc/basebmp/nonstandarditerator.hxx48
-rw-r--r--basebmp/inc/basebmp/packedpixeliterator.hxx680
-rw-r--r--basebmp/inc/basebmp/paletteformats.hxx150
-rw-r--r--basebmp/inc/basebmp/paletteimageaccessor.hxx171
-rw-r--r--basebmp/inc/basebmp/pixelformatadapters.hxx111
-rw-r--r--basebmp/inc/basebmp/pixeliterator.hxx358
-rw-r--r--basebmp/inc/basebmp/polypolygonrenderer.hxx369
-rw-r--r--basebmp/inc/basebmp/rgb24pixelformats.hxx101
-rw-r--r--basebmp/inc/basebmp/rgbmaskpixelformats.hxx292
-rw-r--r--basebmp/inc/basebmp/scaleimage.hxx198
-rw-r--r--basebmp/inc/basebmp/scanlineformats.hxx59
-rw-r--r--basebmp/inc/basebmp/stridedarrayiterator.hxx117
-rw-r--r--basebmp/inc/basebmp/tools.hxx94
-rw-r--r--basebmp/inc/basebmp/truecolormaskaccessor.hxx293
-rw-r--r--basebmp/prj/build.lst5
-rw-r--r--basebmp/prj/d.lst9
-rw-r--r--basebmp/source/bitmapdevice.cxx2029
-rw-r--r--basebmp/source/debug.cxx109
-rw-r--r--basebmp/source/intconversion.hxx91
-rw-r--r--basebmp/source/makefile.mk76
-rw-r--r--basebmp/source/polypolygonrenderer.cxx130
-rw-r--r--basebmp/test/basictest.cxx305
-rw-r--r--basebmp/test/bmpdemo.cxx1258
-rw-r--r--basebmp/test/bmpmasktest.cxx195
-rw-r--r--basebmp/test/bmptest.cxx222
-rw-r--r--basebmp/test/cliptest.cxx289
-rw-r--r--basebmp/test/export.map34
-rw-r--r--basebmp/test/filltest.cxx283
-rw-r--r--basebmp/test/linetest.cxx231
-rw-r--r--basebmp/test/makefile.mk132
-rw-r--r--basebmp/test/masktest.cxx183
-rw-r--r--basebmp/test/polytest.cxx303
-rw-r--r--basebmp/test/tools.cxx52
-rw-r--r--basebmp/test/tools.hxx34
-rw-r--r--basebmp/util/basebmp.flt4
-rw-r--r--basebmp/util/makefile.mk66
-rw-r--r--basegfx/inc/basegfx/color/bcolor.hxx240
-rw-r--r--basegfx/inc/basegfx/color/bcolormodifier.hxx146
-rw-r--r--basegfx/inc/basegfx/color/bcolortools.hxx75
-rw-r--r--basegfx/inc/basegfx/curve/b2dbeziertools.hxx66
-rw-r--r--basegfx/inc/basegfx/curve/b2dcubicbezier.hxx225
-rw-r--r--basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx76
-rw-r--r--basegfx/inc/basegfx/matrix/b2dhommatrix.hxx171
-rw-r--r--basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx237
-rw-r--r--basegfx/inc/basegfx/matrix/b3dhommatrix.hxx178
-rw-r--r--basegfx/inc/basegfx/numeric/ftools.hxx206
-rw-r--r--basegfx/inc/basegfx/pixel/bpixel.hxx225
-rw-r--r--basegfx/inc/basegfx/point/b2dhompoint.hxx238
-rw-r--r--basegfx/inc/basegfx/point/b2dpoint.hxx154
-rw-r--r--basegfx/inc/basegfx/point/b2ipoint.hxx130
-rw-r--r--basegfx/inc/basegfx/point/b3dhompoint.hxx408
-rw-r--r--basegfx/inc/basegfx/point/b3dpoint.hxx153
-rw-r--r--basegfx/inc/basegfx/point/b3ipoint.hxx142
-rw-r--r--basegfx/inc/basegfx/polygon/b2dlinegeometry.hxx147
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygon.hxx277
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygonclipper.hxx85
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx84
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygontools.hxx537
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx52
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx140
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx122
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygonfillrule.hxx63
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx144
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx282
-rw-r--r--basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx135
-rw-r--r--basegfx/inc/basegfx/polygon/b3dpolygon.hxx144
-rw-r--r--basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx89
-rw-r--r--basegfx/inc/basegfx/polygon/b3dpolygontools.hxx194
-rw-r--r--basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx128
-rw-r--r--basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx157
-rw-r--r--basegfx/inc/basegfx/range/b1drange.hxx168
-rw-r--r--basegfx/inc/basegfx/range/b1ibox.hxx146
-rw-r--r--basegfx/inc/basegfx/range/b1irange.hxx147
-rw-r--r--basegfx/inc/basegfx/range/b2dconnectedranges.hxx266
-rw-r--r--basegfx/inc/basegfx/range/b2dpolyrange.hxx148
-rw-r--r--basegfx/inc/basegfx/range/b2drange.hxx298
-rw-r--r--basegfx/inc/basegfx/range/b2drangeclipper.hxx56
-rw-r--r--basegfx/inc/basegfx/range/b2drectangle.hxx45
-rw-r--r--basegfx/inc/basegfx/range/b2ibox.hxx254
-rw-r--r--basegfx/inc/basegfx/range/b2irange.hxx257
-rw-r--r--basegfx/inc/basegfx/range/b2irectangle.hxx45
-rw-r--r--basegfx/inc/basegfx/range/b3drange.hxx305
-rw-r--r--basegfx/inc/basegfx/range/b3dvolume.hxx45
-rw-r--r--basegfx/inc/basegfx/range/b3ibox.hxx262
-rw-r--r--basegfx/inc/basegfx/range/b3irange.hxx265
-rw-r--r--basegfx/inc/basegfx/range/b3ivolume.hxx45
-rw-r--r--basegfx/inc/basegfx/range/basicbox.hxx139
-rw-r--r--basegfx/inc/basegfx/range/basicrange.hxx300
-rw-r--r--basegfx/inc/basegfx/range/rangeexpander.hxx86
-rw-r--r--basegfx/inc/basegfx/raster/bpixelraster.hxx119
-rw-r--r--basegfx/inc/basegfx/raster/bzpixelraster.hxx99
-rw-r--r--basegfx/inc/basegfx/raster/rasterconvert3d.hxx348
-rw-r--r--basegfx/inc/basegfx/tools/b2dclipstate.hxx122
-rw-r--r--basegfx/inc/basegfx/tools/canvastools.hxx224
-rw-r--r--basegfx/inc/basegfx/tools/debugplotter.hxx110
-rw-r--r--basegfx/inc/basegfx/tools/gradienttools.hxx413
-rw-r--r--basegfx/inc/basegfx/tools/keystoplerp.hxx103
-rw-r--r--basegfx/inc/basegfx/tools/lerp.hxx63
-rw-r--r--basegfx/inc/basegfx/tools/rectcliptools.hxx91
-rw-r--r--basegfx/inc/basegfx/tools/tools.hxx134
-rw-r--r--basegfx/inc/basegfx/tools/unopolypolygon.hxx115
-rw-r--r--basegfx/inc/basegfx/tuple/b2dtuple.hxx362
-rw-r--r--basegfx/inc/basegfx/tuple/b2i64tuple.hxx315
-rw-r--r--basegfx/inc/basegfx/tuple/b2ituple.hxx240
-rw-r--r--basegfx/inc/basegfx/tuple/b3dtuple.hxx436
-rw-r--r--basegfx/inc/basegfx/tuple/b3i64tuple.hxx352
-rw-r--r--basegfx/inc/basegfx/tuple/b3ituple.hxx352
-rw-r--r--basegfx/inc/basegfx/vector/b2dsize.hxx45
-rw-r--r--basegfx/inc/basegfx/vector/b2dvector.hxx270
-rw-r--r--basegfx/inc/basegfx/vector/b2enums.hxx79
-rw-r--r--basegfx/inc/basegfx/vector/b2isize.hxx45
-rw-r--r--basegfx/inc/basegfx/vector/b2ivector.hxx233
-rw-r--r--basegfx/inc/basegfx/vector/b3dsize.hxx45
-rw-r--r--basegfx/inc/basegfx/vector/b3dvector.hxx343
-rw-r--r--basegfx/inc/basegfx/vector/b3isize.hxx45
-rw-r--r--basegfx/inc/basegfx/vector/b3ivector.hxx262
-rw-r--r--basegfx/inc/makefile.mk47
-rw-r--r--basegfx/inc/pch/precompiled_basegfx.cxx31
-rw-r--r--basegfx/inc/pch/precompiled_basegfx.hxx34
-rw-r--r--basegfx/prj/build.lst18
-rw-r--r--basegfx/prj/d.lst113
-rw-r--r--basegfx/qa/mkpolygons.pl344
-rw-r--r--basegfx/source/color/bcolor.cxx43
-rw-r--r--basegfx/source/color/bcolormodifier.cxx75
-rw-r--r--basegfx/source/color/bcolortools.cxx271
-rw-r--r--basegfx/source/color/makefile.mk49
-rw-r--r--basegfx/source/curve/b2dbeziertools.cxx166
-rw-r--r--basegfx/source/curve/b2dcubicbezier.cxx1109
-rw-r--r--basegfx/source/curve/b2dquadraticbezier.cxx108
-rw-r--r--basegfx/source/curve/makefile.mk49
-rw-r--r--basegfx/source/inc/PolygonPoint.hxx541
-rw-r--r--basegfx/source/inc/hommatrixtemplate.hxx616
-rw-r--r--basegfx/source/inc/polygontemplate.hxx541
-rw-r--r--basegfx/source/matrix/b2dhommatrix.cxx457
-rw-r--r--basegfx/source/matrix/b2dhommatrixtools.cxx404
-rw-r--r--basegfx/source/matrix/b3dhommatrix.cxx599
-rw-r--r--basegfx/source/matrix/makefile.mk49
-rw-r--r--basegfx/source/numeric/ftools.cxx41
-rw-r--r--basegfx/source/numeric/makefile.mk47
-rw-r--r--basegfx/source/pixel/bpixel.cxx54
-rw-r--r--basegfx/source/pixel/makefile.mk47
-rw-r--r--basegfx/source/point/b2dhompoint.cxx262
-rw-r--r--basegfx/source/point/b2dpoint.cxx88
-rw-r--r--basegfx/source/point/b2ipoint.cxx79
-rw-r--r--basegfx/source/point/b3dhompoint.cxx47
-rw-r--r--basegfx/source/point/b3dpoint.cxx88
-rw-r--r--basegfx/source/point/b3ipoint.cxx82
-rw-r--r--basegfx/source/point/makefile.mk52
-rw-r--r--basegfx/source/polygon/b2dlinegeometry.cxx728
-rw-r--r--basegfx/source/polygon/b2dpolygon.cxx1655
-rw-r--r--basegfx/source/polygon/b2dpolygonclipper.cxx876
-rw-r--r--basegfx/source/polygon/b2dpolygoncutandtouch.cxx1304
-rw-r--r--basegfx/source/polygon/b2dpolygontools.cxx3616
-rw-r--r--basegfx/source/polygon/b2dpolygontriangulator.cxx469
-rw-r--r--basegfx/source/polygon/b2dpolypolygon.cxx435
-rw-r--r--basegfx/source/polygon/b2dpolypolygoncutter.cxx1017
-rw-r--r--basegfx/source/polygon/b2dpolypolygonrasterconverter.cxx705
-rw-r--r--basegfx/source/polygon/b2dpolypolygontools.cxx588
-rw-r--r--basegfx/source/polygon/b2dsvgpolypolygon.cxx1111
-rw-r--r--basegfx/source/polygon/b2dtrapezoid.cxx1231
-rw-r--r--basegfx/source/polygon/b3dpolygon.cxx1819
-rw-r--r--basegfx/source/polygon/b3dpolygonclipper.cxx577
-rw-r--r--basegfx/source/polygon/b3dpolygontools.cxx1266
-rw-r--r--basegfx/source/polygon/b3dpolypolygon.cxx449
-rw-r--r--basegfx/source/polygon/b3dpolypolygontools.cxx559
-rw-r--r--basegfx/source/polygon/makefile.mk63
-rw-r--r--basegfx/source/range/b1drange.cxx59
-rw-r--r--basegfx/source/range/b2dpolyrange.cxx426
-rw-r--r--basegfx/source/range/b2drange.cxx77
-rw-r--r--basegfx/source/range/b2drangeclipper.cxx952
-rw-r--r--basegfx/source/range/b2xrange.cxx145
-rw-r--r--basegfx/source/range/b3drange.cxx88
-rw-r--r--basegfx/source/range/makefile.mk52
-rw-r--r--basegfx/source/raster/bpixelraster.cxx43
-rw-r--r--basegfx/source/raster/bzpixelraster.cxx43
-rw-r--r--basegfx/source/raster/makefile.mk49
-rw-r--r--basegfx/source/raster/rasterconvert3d.cxx356
-rw-r--r--basegfx/source/tools/b2dclipstate.cxx665
-rw-r--r--basegfx/source/tools/canvastools.cxx677
-rw-r--r--basegfx/source/tools/debugplotter.cxx418
-rw-r--r--basegfx/source/tools/gradienttools.cxx352
-rw-r--r--basegfx/source/tools/keystoplerp.cxx110
-rw-r--r--basegfx/source/tools/liangbarsky.cxx135
-rwxr-xr-xbasegfx/source/tools/makefile.mk51
-rw-r--r--basegfx/source/tools/tools.cxx127
-rw-r--r--basegfx/source/tools/unopolypolygon.cxx489
-rw-r--r--basegfx/source/tuple/b2dtuple.cxx87
-rw-r--r--basegfx/source/tuple/b2i64tuple.cxx47
-rw-r--r--basegfx/source/tuple/b2ituple.cxx156
-rw-r--r--basegfx/source/tuple/b3dtuple.cxx58
-rw-r--r--basegfx/source/tuple/b3i64tuple.cxx46
-rw-r--r--basegfx/source/tuple/b3ituple.cxx46
-rw-r--r--basegfx/source/tuple/makefile.mk52
-rw-r--r--basegfx/source/vector/b2dvector.cxx222
-rw-r--r--basegfx/source/vector/b2ivector.cxx162
-rw-r--r--basegfx/source/vector/b3dvector.cxx118
-rw-r--r--basegfx/source/vector/b3ivector.cxx54
-rw-r--r--basegfx/source/vector/makefile.mk50
-rw-r--r--basegfx/source/workbench/Makefile16
-rw-r--r--basegfx/source/workbench/bezierclip.cxx2060
-rw-r--r--basegfx/source/workbench/bezierclip.hxx96
-rw-r--r--basegfx/source/workbench/convexhull.cxx216
-rw-r--r--basegfx/source/workbench/gauss.hxx175
-rw-r--r--basegfx/test/basegfx1d.cxx78
-rw-r--r--basegfx/test/basegfx2d.cxx1465
-rw-r--r--basegfx/test/basegfx3d.cxx226
-rw-r--r--basegfx/test/basegfxtools.cxx115
-rw-r--r--basegfx/test/boxclipper.cxx424
-rw-r--r--basegfx/test/clipstate.cxx183
-rw-r--r--basegfx/test/export.map34
-rw-r--r--basegfx/test/genericclipper.cxx164
-rw-r--r--basegfx/test/makefile.mk87
-rw-r--r--basegfx/test/testtools.cxx238
-rw-r--r--basegfx/test/testtools.hxx101
-rw-r--r--basegfx/util/basegfx.flt6
-rw-r--r--basegfx/util/makefile.mk85
-rw-r--r--bean/com/sun/star/beans/ContainerFactory.java47
-rw-r--r--bean/com/sun/star/beans/JavaWindowPeerFake.java122
-rw-r--r--bean/com/sun/star/beans/LocalOfficeConnection.java617
-rw-r--r--bean/com/sun/star/beans/LocalOfficeWindow.java309
-rw-r--r--bean/com/sun/star/beans/NativeConnection.java59
-rw-r--r--bean/com/sun/star/beans/NativeService.java36
-rw-r--r--bean/com/sun/star/beans/OfficeConnection.java79
-rw-r--r--bean/com/sun/star/beans/OfficeWindow.java55
-rw-r--r--bean/com/sun/star/beans/makefile.mk64
-rw-r--r--bean/com/sun/star/comp/beans/CallWatchThread.java128
-rw-r--r--bean/com/sun/star/comp/beans/ContainerFactory.java47
-rw-r--r--bean/com/sun/star/comp/beans/Controller.java110
-rw-r--r--bean/com/sun/star/comp/beans/Frame.java182
-rw-r--r--bean/com/sun/star/comp/beans/HasConnectionException.java40
-rw-r--r--bean/com/sun/star/comp/beans/InvalidArgumentException.java38
-rw-r--r--bean/com/sun/star/comp/beans/JavaWindowPeerFake.java122
-rw-r--r--bean/com/sun/star/comp/beans/LocalOfficeConnection.java823
-rw-r--r--bean/com/sun/star/comp/beans/LocalOfficeWindow.java288
-rw-r--r--bean/com/sun/star/comp/beans/NativeConnection.java62
-rw-r--r--bean/com/sun/star/comp/beans/NativeService.java37
-rw-r--r--bean/com/sun/star/comp/beans/NoConnectionException.java40
-rw-r--r--bean/com/sun/star/comp/beans/NoDocumentException.java38
-rw-r--r--bean/com/sun/star/comp/beans/OOoBean.java1511
-rw-r--r--bean/com/sun/star/comp/beans/OfficeConnection.java80
-rw-r--r--bean/com/sun/star/comp/beans/OfficeDocument.java226
-rw-r--r--bean/com/sun/star/comp/beans/OfficeWindow.java56
-rw-r--r--bean/com/sun/star/comp/beans/SystemWindowException.java41
-rw-r--r--bean/com/sun/star/comp/beans/Wrapper.java108
-rw-r--r--bean/com/sun/star/comp/beans/makefile.mk75
-rw-r--r--bean/native/unix/com_sun_star_beans_LocalOfficeWindow.c101
-rw-r--r--bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c149
-rw-r--r--bean/native/unix/makefile.mk39
-rw-r--r--bean/native/win32/com_sun_star_beans_LocalOfficeWindow.c104
-rw-r--r--bean/native/win32/com_sun_star_comp_beans_LocalOfficeWindow.c219
-rw-r--r--bean/native/win32/makefile.mk34
-rw-r--r--bean/native/win32/officebean.dxp4
-rw-r--r--bean/prj/build.lst6
-rw-r--r--bean/prj/d.lst5
-rw-r--r--bean/qa/complex/OOoBeanTest.java656
-rw-r--r--bean/qa/complex/ScreenComparer.java233
-rw-r--r--bean/qa/complex/WriterFrame.java209
-rw-r--r--bean/qa/complex/makefile.mk95
-rw-r--r--bean/test/Test.java68
-rw-r--r--bean/test/applet/oooapplet/OOoViewer.java208
-rw-r--r--bean/test/applet/oooapplet/bean.policy16
-rw-r--r--bean/test/applet/oooapplet/example.html22
-rw-r--r--bean/test/applet/oooapplet/makefile.mk88
-rw-r--r--bean/test/makefile.mk95
-rw-r--r--bean/util/delzip0
-rw-r--r--bean/util/makefile.mk56
-rw-r--r--beanshell/bsh-2.0b1-src.patch83
-rw-r--r--beanshell/makefile.mk58
-rw-r--r--beanshell/prj/build.lst3
-rw-r--r--beanshell/prj/d.lst1
-rw-r--r--berkeleydb/db-4.7.25-mingw.patch348
-rw-r--r--berkeleydb/db-4.7.25.patch1048
-rw-r--r--berkeleydb/db-aix.patch205
-rw-r--r--berkeleydb/makefile.mk184
-rw-r--r--berkeleydb/prj/build.lst3
-rw-r--r--berkeleydb/prj/d.lst15
-rw-r--r--boost/README.Regex_Experimental30
-rw-r--r--boost/Regex_Experimental.tar.gzbin0 -> 3463 bytes
-rw-r--r--boost/aliasing.patch43
-rw-r--r--boost/boost.4713.warnings.patch108
-rw-r--r--boost/boost_1_39_0.patch312
-rw-r--r--boost/makefile.mk137
-rw-r--r--boost/prj/build.lst3
-rw-r--r--boost/prj/d.lst375
-rw-r--r--bootstrap.184
-rw-r--r--bridges/inc/bridges/cpp_uno/bridge.hxx504
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/arraypointer.hxx58
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/bridge.hxx131
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/cppinterfaceproxy.hxx109
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/types.hxx80
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/unointerfaceproxy.hxx119
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx218
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/vtables.hxx111
-rw-r--r--bridges/inc/bridges/cpp_uno/type_misc.hxx132
-rw-r--r--bridges/inc/bridges/remote/bridgeimpl.hxx97
-rw-r--r--bridges/inc/bridges/remote/connection.h70
-rw-r--r--bridges/inc/bridges/remote/context.h262
-rw-r--r--bridges/inc/bridges/remote/counter.hxx60
-rw-r--r--bridges/inc/bridges/remote/helper.hxx71
-rw-r--r--bridges/inc/bridges/remote/mapping.hxx72
-rw-r--r--bridges/inc/bridges/remote/proxy.hxx94
-rw-r--r--bridges/inc/bridges/remote/remote.h96
-rw-r--r--bridges/inc/bridges/remote/remote.hxx76
-rw-r--r--bridges/inc/bridges/remote/stub.hxx67
-rw-r--r--bridges/inc/makefile.mk47
-rw-r--r--bridges/inc/pch/precompiled_bridges.cxx31
-rw-r--r--bridges/inc/pch/precompiled_bridges.hxx155
-rw-r--r--bridges/prj/build.lst34
-rw-r--r--bridges/prj/d.lst28
-rw-r--r--bridges/source/bridge_exports.map8
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/call.s248
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/cc50_solaris_intel.hxx75
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/cpp2uno.cxx530
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/except.cxx451
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/hash.cxx264
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/makefile.mk75
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/uno2cpp.cxx421
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/call.s199
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/cc50_solaris_sparc.hxx89
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx533
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/except.cxx447
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/flushcode.hxx51
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/hash.cxx265
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/makefile.mk80
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/uno2cpp.cxx399
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/callvirtualmethod.hxx39
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/callvirtualmethod.s59
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/cpp2uno.cxx614
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/exceptions.cxx462
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/exceptions.hxx75
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/flushcode.hxx51
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/fp.hxx116
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/fp.s602
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/isdirectreturntype.cxx84
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/isdirectreturntype.hxx44
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/makefile.mk61
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/uno2cpp.cxx512
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/vtableslotcall.hxx38
-rw-r--r--bridges/source/cpp_uno/cc5_solaris_sparc64/vtableslotcall.s51
-rw-r--r--bridges/source/cpp_uno/gcc3_aix_powerpc/cpp2uno.cxx663
-rw-r--r--bridges/source/cpp_uno/gcc3_aix_powerpc/except.cxx291
-rw-r--r--bridges/source/cpp_uno/gcc3_aix_powerpc/makefile.mk81
-rw-r--r--bridges/source/cpp_uno/gcc3_aix_powerpc/share.hxx102
-rw-r--r--bridges/source/cpp_uno/gcc3_aix_powerpc/uno2cpp.cxx502
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/cpp2uno.cxx677
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/except.cxx289
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/makefile.mk77
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/share.hxx99
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/uno2cpp.cxx534
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S38
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_arm/cpp2uno.cxx551
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_arm/except.cxx342
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_arm/makefile.mk84
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_arm/share.hxx102
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx670
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_hppa/call.cxx143
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx726
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_hppa/except.cxx335
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_hppa/makefile.mk82
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_hppa/share.hxx102
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_hppa/uno2cpp.cxx522
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_ia64/call.s20
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_ia64/cpp2uno.cxx685
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_ia64/except.cxx289
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_ia64/makefile.mk83
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_ia64/share.hxx132
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_ia64/uno2cpp.cxx692
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/call.s274
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx527
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/except.cxx340
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk84
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/share.hxx99
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx507
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_m68k/cpp2uno.cxx537
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_m68k/except.cxx335
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_m68k/makefile.mk80
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_m68k/share.hxx94
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_m68k/uno2cpp.cxx494
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_mips/cpp2uno.cxx805
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_mips/except.cxx327
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_mips/makefile.mk81
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_mips/share.hxx94
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_mips/uno2cpp.cxx599
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx795
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/except.cxx289
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/makefile.mk80
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/share.hxx94
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx675
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx723
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/except.cxx289
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/makefile.mk79
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/share.hxx99
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx603
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390/cpp2uno.cxx696
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390/except.cxx289
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390/makefile.mk77
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390/share.hxx94
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390/uno2cpp.cxx637
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx658
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390x/except.cxx289
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390x/makefile.mk77
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390x/share.hxx99
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx539
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_sparc/call.s10
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_sparc/cpp2uno.cxx578
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_sparc/except.cxx330
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_sparc/makefile.mk85
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_sparc/share.hxx100
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx603
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx350
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx70
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/call.s96
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx523
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx340
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk83
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/share.hxx93
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx574
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/call.s327
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/cpp2uno.cxx522
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/except.cxx331
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/makefile.mk76
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/share.hxx95
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx496
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx732
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_powerpc/except.cxx288
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_powerpc/makefile.mk78
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_powerpc/share.hxx94
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx637
-rw-r--r--bridges/source/cpp_uno/gcc3_os2_intel/cpp2uno.cxx528
-rw-r--r--bridges/source/cpp_uno/gcc3_os2_intel/defs/gcc3_uno.def915
-rw-r--r--bridges/source/cpp_uno/gcc3_os2_intel/except.cxx351
-rw-r--r--bridges/source/cpp_uno/gcc3_os2_intel/makefile.mk73
-rw-r--r--bridges/source/cpp_uno/gcc3_os2_intel/share.hxx93
-rw-r--r--bridges/source/cpp_uno/gcc3_os2_intel/uno2cpp.cxx454
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_intel/cpp2uno.cxx526
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_intel/except.cxx331
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_intel/makefile.mk73
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_intel/share.hxx93
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx430
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_sparc/cpp2uno.cxx567
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_sparc/except.cxx329
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_sparc/makefile.mk77
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_sparc/share.hxx100
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx598
-rw-r--r--bridges/source/cpp_uno/mingw_intel/call.s261
-rw-r--r--bridges/source/cpp_uno/mingw_intel/cpp2uno.cxx521
-rw-r--r--bridges/source/cpp_uno/mingw_intel/dllinit.cxx59
-rw-r--r--bridges/source/cpp_uno/mingw_intel/except.cxx316
-rw-r--r--bridges/source/cpp_uno/mingw_intel/makefile.mk91
-rw-r--r--bridges/source/cpp_uno/mingw_intel/share.hxx93
-rw-r--r--bridges/source/cpp_uno/mingw_intel/smallstruct.cxx82
-rw-r--r--bridges/source/cpp_uno/mingw_intel/smallstruct.hxx38
-rw-r--r--bridges/source/cpp_uno/mingw_intel/uno2cpp.cxx503
-rw-r--r--bridges/source/cpp_uno/msvc_win32_intel/cpp2uno.cxx491
-rw-r--r--bridges/source/cpp_uno/msvc_win32_intel/dllinit.cxx61
-rw-r--r--bridges/source/cpp_uno/msvc_win32_intel/except.cxx634
-rw-r--r--bridges/source/cpp_uno/msvc_win32_intel/makefile.mk83
-rw-r--r--bridges/source/cpp_uno/msvc_win32_intel/msci.hxx59
-rw-r--r--bridges/source/cpp_uno/msvc_win32_intel/uno2cpp.cxx468
-rw-r--r--bridges/source/cpp_uno/shared/bridge.cxx229
-rw-r--r--bridges/source/cpp_uno/shared/component.cxx275
-rw-r--r--bridges/source/cpp_uno/shared/component.hxx42
-rw-r--r--bridges/source/cpp_uno/shared/cppinterfaceproxy.cxx208
-rw-r--r--bridges/source/cpp_uno/shared/guardedarray.hxx55
-rw-r--r--bridges/source/cpp_uno/shared/makefile.mk53
-rw-r--r--bridges/source/cpp_uno/shared/types.cxx129
-rw-r--r--bridges/source/cpp_uno/shared/unointerfaceproxy.cxx145
-rw-r--r--bridges/source/cpp_uno/shared/vtablefactory.cxx385
-rw-r--r--bridges/source/cpp_uno/shared/vtables.cxx157
-rw-r--r--bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_info_holder.java52
-rw-r--r--bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_proxy.java218
-rw-r--r--bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/makefile.mk53
-rw-r--r--bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/manifest1
-rw-r--r--bridges/source/jni_uno/java_uno.map27
-rw-r--r--bridges/source/jni_uno/jni_base.h295
-rw-r--r--bridges/source/jni_uno/jni_bridge.cxx572
-rw-r--r--bridges/source/jni_uno/jni_bridge.h127
-rw-r--r--bridges/source/jni_uno/jni_data.cxx2579
-rw-r--r--bridges/source/jni_uno/jni_helper.h165
-rw-r--r--bridges/source/jni_uno/jni_info.cxx999
-rw-r--r--bridges/source/jni_uno/jni_info.h378
-rw-r--r--bridges/source/jni_uno/jni_java2uno.cxx706
-rw-r--r--bridges/source/jni_uno/jni_uno2java.cxx876
-rw-r--r--bridges/source/jni_uno/makefile.mk85
-rw-r--r--bridges/source/jni_uno/nativethreadpool.cxx233
-rw-r--r--bridges/source/remote/context/context.cxx487
-rw-r--r--bridges/source/remote/context/exports.dxp5
-rw-r--r--bridges/source/remote/context/makefile.mk65
-rwxr-xr-xbridges/source/remote/context/rmcxt.map10
-rw-r--r--bridges/source/remote/idl/corba.idl88
-rw-r--r--bridges/source/remote/static/helper.cxx212
-rw-r--r--bridges/source/remote/static/makefile.mk61
-rw-r--r--bridges/source/remote/static/mapping.cxx221
-rw-r--r--bridges/source/remote/static/proxy.cxx341
-rw-r--r--bridges/source/remote/static/remote.cxx164
-rw-r--r--bridges/source/remote/static/remote_types.cxx99
-rw-r--r--bridges/source/remote/static/remote_types.hxx92
-rw-r--r--bridges/source/remote/static/stub.cxx339
-rw-r--r--bridges/source/remote/urp/makefile.mk78
-rw-r--r--bridges/source/remote/urp/urp_bridgeimpl.cxx253
-rw-r--r--bridges/source/remote/urp/urp_bridgeimpl.hxx130
-rw-r--r--bridges/source/remote/urp/urp_cache.h60
-rw-r--r--bridges/source/remote/urp/urp_cache.hxx163
-rw-r--r--bridges/source/remote/urp/urp_dispatch.cxx118
-rw-r--r--bridges/source/remote/urp/urp_dispatch.hxx80
-rw-r--r--bridges/source/remote/urp/urp_environment.cxx554
-rw-r--r--bridges/source/remote/urp/urp_job.cxx941
-rw-r--r--bridges/source/remote/urp/urp_job.hxx381
-rw-r--r--bridges/source/remote/urp/urp_log.cxx150
-rw-r--r--bridges/source/remote/urp/urp_log.hxx53
-rw-r--r--bridges/source/remote/urp/urp_marshal.cxx238
-rw-r--r--bridges/source/remote/urp/urp_marshal.hxx345
-rw-r--r--bridges/source/remote/urp/urp_marshal_decl.hxx109
-rw-r--r--bridges/source/remote/urp/urp_property.hxx94
-rw-r--r--bridges/source/remote/urp/urp_propertyobject.cxx796
-rw-r--r--bridges/source/remote/urp/urp_propertyobject.hxx107
-rw-r--r--bridges/source/remote/urp/urp_reader.cxx835
-rw-r--r--bridges/source/remote/urp/urp_reader.hxx81
-rw-r--r--bridges/source/remote/urp/urp_replycontainer.hxx78
-rw-r--r--bridges/source/remote/urp/urp_threadid.cxx51
-rw-r--r--bridges/source/remote/urp/urp_threadid.hxx62
-rw-r--r--bridges/source/remote/urp/urp_unmarshal.cxx709
-rw-r--r--bridges/source/remote/urp/urp_unmarshal.hxx281
-rw-r--r--bridges/source/remote/urp/urp_writer.cxx271
-rw-r--r--bridges/source/remote/urp/urp_writer.hxx85
-rw-r--r--bridges/test/com/sun/star/lib/TestBed.java232
-rw-r--r--bridges/test/com/sun/star/lib/makefile.mk36
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug107753_Test.java394
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug108825_Test.java163
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug110892_Test.java124
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug111153_Test.java103
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug114133_Test.java76
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug51323_Test.java84
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug92174_Test.java99
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug97697_Test.java105
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug98508_Test.idl37
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/Bug98508_Test.java104
-rwxr-xr-xbridges/test/com/sun/star/lib/uno/bridges/java_remote/MethodIdTest.java473
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/PolyStructTest.idl52
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/PolyStructTest.java260
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/StopMessageDispatcherTest.java108
-rw-r--r--bridges/test/com/sun/star/lib/uno/bridges/java_remote/makefile.mk51
-rw-r--r--bridges/test/inter_libs_exc/inter.cxx69
-rw-r--r--bridges/test/inter_libs_exc/makefile.mk80
-rw-r--r--bridges/test/inter_libs_exc/share.h10
-rw-r--r--bridges/test/inter_libs_exc/starter.cxx68
-rw-r--r--bridges/test/inter_libs_exc/starter.map7
-rw-r--r--bridges/test/inter_libs_exc/thrower.cxx51
-rw-r--r--bridges/test/inter_libs_exc/thrower.map7
-rw-r--r--bridges/test/java_uno/acquire/TestAcquire.java304
-rw-r--r--bridges/test/java_uno/acquire/makefile.mk117
-rw-r--r--bridges/test/java_uno/acquire/readme.txt21
-rw-r--r--bridges/test/java_uno/acquire/testacquire.cxx577
-rw-r--r--bridges/test/java_uno/acquire/types.idl68
-rw-r--r--bridges/test/java_uno/any/TestAny.java2267
-rw-r--r--bridges/test/java_uno/any/TestJni.java48
-rw-r--r--bridges/test/java_uno/any/TestRemote.java64
-rw-r--r--bridges/test/java_uno/any/makefile.mk127
-rw-r--r--bridges/test/java_uno/any/test_javauno_any.map6
-rw-r--r--bridges/test/java_uno/any/transport.cxx111
-rw-r--r--bridges/test/java_uno/any/types.idl42
-rw-r--r--bridges/test/java_uno/equals/TestEquals.java1304
-rw-r--r--bridges/test/java_uno/equals/makefile.mk96
-rw-r--r--bridges/test/java_uno/equals/testequals.cxx235
-rw-r--r--bridges/test/java_uno/equals/types.idl47
-rw-r--r--bridges/test/java_uno/nativethreadpool/Relay.java125
-rw-r--r--bridges/test/java_uno/nativethreadpool/makefile.mk121
-rw-r--r--bridges/test/java_uno/nativethreadpool/readme39
-rw-r--r--bridges/test/java_uno/nativethreadpool/relay.manifest2
-rw-r--r--bridges/test/java_uno/nativethreadpool/testnativethreadpoolclient.cxx187
-rw-r--r--bridges/test/java_uno/nativethreadpool/testnativethreadpoolserver.cxx149
-rw-r--r--bridges/test/java_uno/nativethreadpool/types.idl40
-rw-r--r--bridges/test/java_uno/nativethreadpool/version.map35
-rw-r--r--bridges/test/makefile.mk175
-rw-r--r--bridges/test/performance/makefile.mk61
-rw-r--r--bridges/test/performance/testperformance.cxx193
-rw-r--r--bridges/test/test_bridge.idl82
-rw-r--r--bridges/test/testclient.cxx249
-rw-r--r--bridges/test/testclient.java156
-rw-r--r--bridges/test/testcomp.cxx801
-rw-r--r--bridges/test/testcomp.h157
-rw-r--r--bridges/test/testoffice.cxx282
-rw-r--r--bridges/test/testsameprocess.cxx218
-rw-r--r--bridges/test/testserver.cxx256
-rw-r--r--bridges/unotypes/makefile.mk63
-rw-r--r--bridges/version.mk40
-rw-r--r--cairo/cairo-1.8.0.patch251
-rwxr-xr-xcairo/cairo/dummy_pkg_config3
-rw-r--r--cairo/cairo/makefile.mk207
-rw-r--r--cairo/pixman-0.12.0.patch36
-rw-r--r--cairo/pixman/makefile.mk154
-rw-r--r--cairo/prj/build.lst4
-rw-r--r--cairo/prj/d.lst12
-rw-r--r--canvas/inc/canvas/base/basemutexhelper.hxx72
-rw-r--r--canvas/inc/canvas/base/bitmapcanvasbase.hxx137
-rw-r--r--canvas/inc/canvas/base/bufferedgraphicdevicebase.hxx286
-rw-r--r--canvas/inc/canvas/base/cachedprimitivebase.hxx125
-rw-r--r--canvas/inc/canvas/base/canvasbase.hxx486
-rw-r--r--canvas/inc/canvas/base/canvascustomspritebase.hxx280
-rw-r--r--canvas/inc/canvas/base/canvascustomspritehelper.hxx296
-rw-r--r--canvas/inc/canvas/base/doublebitmapbase.hxx154
-rw-r--r--canvas/inc/canvas/base/floatbitmapbase.hxx158
-rw-r--r--canvas/inc/canvas/base/graphicdevicebase.hxx394
-rw-r--r--canvas/inc/canvas/base/integerbitmapbase.hxx154
-rw-r--r--canvas/inc/canvas/base/sprite.hxx122
-rw-r--r--canvas/inc/canvas/base/spritecanvasbase.hxx205
-rw-r--r--canvas/inc/canvas/base/spritesurface.hxx76
-rw-r--r--canvas/inc/canvas/canvastools.hxx664
-rw-r--r--canvas/inc/canvas/debug.hxx68
-rw-r--r--canvas/inc/canvas/elapsedtime.hxx185
-rw-r--r--canvas/inc/canvas/parametricpolypolygon.hxx175
-rw-r--r--canvas/inc/canvas/prioritybooster.hxx68
-rw-r--r--canvas/inc/canvas/propertysethelper.hxx164
-rw-r--r--canvas/inc/canvas/rendering/bitmap.hxx323
-rw-r--r--canvas/inc/canvas/rendering/icachedprimitive.hxx69
-rw-r--r--canvas/inc/canvas/rendering/icolorbuffer.hxx97
-rw-r--r--canvas/inc/canvas/rendering/irendermodule.hxx152
-rw-r--r--canvas/inc/canvas/rendering/isurface.hxx91
-rw-r--r--canvas/inc/canvas/rendering/isurfaceproxy.hxx116
-rw-r--r--canvas/inc/canvas/rendering/isurfaceproxymanager.hxx82
-rw-r--r--canvas/inc/canvas/spriteredrawmanager.hxx437
-rw-r--r--canvas/inc/canvas/vclwrapper.hxx152
-rw-r--r--canvas/inc/canvas/verbosetrace.hxx41
-rw-r--r--canvas/inc/canvas/verifyinput.hxx723
-rw-r--r--canvas/inc/makefile.mk47
-rw-r--r--canvas/inc/pch/precompiled_canvas.cxx31
-rw-r--r--canvas/inc/pch/precompiled_canvas.hxx34
-rw-r--r--canvas/overview.txt50
-rw-r--r--canvas/prj/build.lst10
-rw-r--r--canvas/prj/d.lst26
-rw-r--r--canvas/source/cairo/cairo_cachedbitmap.cxx93
-rw-r--r--canvas/source/cairo/cairo_cachedbitmap.hxx70
-rw-r--r--canvas/source/cairo/cairo_cairo.cxx67
-rw-r--r--canvas/source/cairo/cairo_cairo.hxx100
-rw-r--r--canvas/source/cairo/cairo_canvas.cxx198
-rw-r--r--canvas/source/cairo/cairo_canvas.hxx164
-rw-r--r--canvas/source/cairo/cairo_canvasbitmap.cxx289
-rw-r--r--canvas/source/cairo/cairo_canvasbitmap.hxx141
-rw-r--r--canvas/source/cairo/cairo_canvascustomsprite.cxx178
-rw-r--r--canvas/source/cairo/cairo_canvascustomsprite.hxx159
-rw-r--r--canvas/source/cairo/cairo_canvasfont.cxx180
-rw-r--r--canvas/source/cairo/cairo_canvasfont.hxx99
-rw-r--r--canvas/source/cairo/cairo_canvashelper.cxx1999
-rw-r--r--canvas/source/cairo/cairo_canvashelper.hxx338
-rw-r--r--canvas/source/cairo/cairo_canvashelper_text.cxx401
-rw-r--r--canvas/source/cairo/cairo_canvashelper_texturefill.cxx147
-rw-r--r--canvas/source/cairo/cairo_devicehelper.cxx305
-rw-r--r--canvas/source/cairo/cairo_devicehelper.hxx146
-rw-r--r--canvas/source/cairo/cairo_quartz_cairo.cxx350
-rw-r--r--canvas/source/cairo/cairo_quartz_cairo.hxx76
-rw-r--r--canvas/source/cairo/cairo_repainttarget.hxx61
-rw-r--r--canvas/source/cairo/cairo_services.cxx86
-rw-r--r--canvas/source/cairo/cairo_sprite.hxx74
-rw-r--r--canvas/source/cairo/cairo_spritecanvas.cxx235
-rw-r--r--canvas/source/cairo/cairo_spritecanvas.hxx177
-rw-r--r--canvas/source/cairo/cairo_spritecanvashelper.cxx547
-rw-r--r--canvas/source/cairo/cairo_spritecanvashelper.hxx149
-rw-r--r--canvas/source/cairo/cairo_spritedevicehelper.cxx204
-rw-r--r--canvas/source/cairo/cairo_spritedevicehelper.hxx98
-rw-r--r--canvas/source/cairo/cairo_spritehelper.cxx186
-rw-r--r--canvas/source/cairo/cairo_spritehelper.hxx118
-rw-r--r--canvas/source/cairo/cairo_spritesurface.hxx73
-rw-r--r--canvas/source/cairo/cairo_surfaceprovider.hxx85
-rw-r--r--canvas/source/cairo/cairo_textlayout.cxx699
-rw-r--r--canvas/source/cairo/cairo_textlayout.hxx123
-rw-r--r--canvas/source/cairo/cairo_win32_cairo.cxx330
-rw-r--r--canvas/source/cairo/cairo_win32_cairo.hxx73
-rw-r--r--canvas/source/cairo/cairo_xlib_cairo.cxx355
-rw-r--r--canvas/source/cairo/cairo_xlib_cairo.hxx109
-rw-r--r--canvas/source/cairo/exports.dxp3
-rw-r--r--canvas/source/cairo/makefile.mk132
-rw-r--r--canvas/source/directx/dx_5rm.cxx2286
-rw-r--r--canvas/source/directx/dx_9rm.cxx1366
-rw-r--r--canvas/source/directx/dx_bitmap.cxx221
-rw-r--r--canvas/source/directx/dx_bitmap.hxx96
-rw-r--r--canvas/source/directx/dx_bitmapcanvashelper.cxx249
-rw-r--r--canvas/source/directx/dx_bitmapcanvashelper.hxx139
-rw-r--r--canvas/source/directx/dx_bitmapprovider.hxx48
-rw-r--r--canvas/source/directx/dx_canvas.cxx258
-rw-r--r--canvas/source/directx/dx_canvas.hxx178
-rw-r--r--canvas/source/directx/dx_canvasbitmap.cxx280
-rw-r--r--canvas/source/directx/dx_canvasbitmap.hxx107
-rw-r--r--canvas/source/directx/dx_canvascustomsprite.cxx126
-rw-r--r--canvas/source/directx/dx_canvascustomsprite.hxx142
-rw-r--r--canvas/source/directx/dx_canvasfont.cxx183
-rw-r--r--canvas/source/directx/dx_canvasfont.hxx107
-rw-r--r--canvas/source/directx/dx_canvashelper.cxx817
-rw-r--r--canvas/source/directx/dx_canvashelper.hxx260
-rw-r--r--canvas/source/directx/dx_canvashelper_texturefill.cxx630
-rw-r--r--canvas/source/directx/dx_config.cxx179
-rw-r--r--canvas/source/directx/dx_config.hxx92
-rw-r--r--canvas/source/directx/dx_devicehelper.cxx239
-rw-r--r--canvas/source/directx/dx_devicehelper.hxx124
-rw-r--r--canvas/source/directx/dx_gdiplususer.cxx84
-rw-r--r--canvas/source/directx/dx_gdiplususer.hxx58
-rw-r--r--canvas/source/directx/dx_graphicsprovider.hxx56
-rw-r--r--canvas/source/directx/dx_ibitmap.hxx73
-rw-r--r--canvas/source/directx/dx_impltools.cxx671
-rw-r--r--canvas/source/directx/dx_impltools.hxx145
-rw-r--r--canvas/source/directx/dx_linepolypolygon.cxx68
-rw-r--r--canvas/source/directx/dx_linepolypolygon.hxx59
-rw-r--r--canvas/source/directx/dx_rendermodule.hxx93
-rw-r--r--canvas/source/directx/dx_sprite.hxx54
-rw-r--r--canvas/source/directx/dx_spritecanvas.cxx214
-rw-r--r--canvas/source/directx/dx_spritecanvas.hxx158
-rw-r--r--canvas/source/directx/dx_spritecanvashelper.cxx385
-rw-r--r--canvas/source/directx/dx_spritecanvashelper.hxx164
-rw-r--r--canvas/source/directx/dx_spritedevicehelper.cxx262
-rw-r--r--canvas/source/directx/dx_spritedevicehelper.hxx117
-rw-r--r--canvas/source/directx/dx_spritehelper.cxx219
-rw-r--r--canvas/source/directx/dx_spritehelper.hxx114
-rw-r--r--canvas/source/directx/dx_surfacebitmap.cxx806
-rw-r--r--canvas/source/directx/dx_surfacebitmap.hxx150
-rw-r--r--canvas/source/directx/dx_surfacegraphics.cxx88
-rw-r--r--canvas/source/directx/dx_surfacegraphics.hxx48
-rw-r--r--canvas/source/directx/dx_textlayout.cxx283
-rw-r--r--canvas/source/directx/dx_textlayout.hxx118
-rw-r--r--canvas/source/directx/dx_textlayout_drawhelper.cxx322
-rw-r--r--canvas/source/directx/dx_textlayout_drawhelper.hxx89
-rw-r--r--canvas/source/directx/dx_vcltools.cxx526
-rw-r--r--canvas/source/directx/dx_vcltools.hxx67
-rw-r--r--canvas/source/directx/dx_winstuff.hxx227
-rw-r--r--canvas/source/directx/exports.dxp3
-rw-r--r--canvas/source/directx/makefile.mk219
-rw-r--r--canvas/source/factory/cf_service.cxx555
-rw-r--r--canvas/source/factory/makefile.mk56
-rw-r--r--canvas/source/null/exports.dxp3
-rw-r--r--canvas/source/null/makefile.mk70
-rw-r--r--canvas/source/null/null_canvasbitmap.cxx87
-rw-r--r--canvas/source/null/null_canvasbitmap.hxx95
-rw-r--r--canvas/source/null/null_canvascustomsprite.cxx108
-rw-r--r--canvas/source/null/null_canvascustomsprite.hxx139
-rw-r--r--canvas/source/null/null_canvasfont.cxx124
-rw-r--r--canvas/source/null/null_canvasfont.hxx98
-rw-r--r--canvas/source/null/null_canvashelper.cxx339
-rw-r--r--canvas/source/null/null_canvashelper.hxx276
-rw-r--r--canvas/source/null/null_devicehelper.cxx242
-rw-r--r--canvas/source/null/null_devicehelper.hxx110
-rw-r--r--canvas/source/null/null_spritecanvas.cxx169
-rw-r--r--canvas/source/null/null_spritecanvas.hxx152
-rw-r--r--canvas/source/null/null_spritecanvashelper.cxx134
-rw-r--r--canvas/source/null/null_spritecanvashelper.hxx138
-rw-r--r--canvas/source/null/null_spritehelper.cxx100
-rw-r--r--canvas/source/null/null_spritehelper.hxx108
-rw-r--r--canvas/source/null/null_textlayout.cxx264
-rw-r--r--canvas/source/null/null_textlayout.hxx110
-rw-r--r--canvas/source/null/null_usagecounter.hxx79
-rw-r--r--canvas/source/null/sprite.hxx50
-rw-r--r--canvas/source/simplecanvas/exports.dxp3
-rw-r--r--canvas/source/simplecanvas/makefile.mk63
-rw-r--r--canvas/source/simplecanvas/simplecanvasimpl.cxx403
-rw-r--r--canvas/source/tools/cachedprimitivebase.cxx115
-rw-r--r--canvas/source/tools/canvascustomspritehelper.cxx499
-rw-r--r--canvas/source/tools/canvastools.cxx1047
-rw-r--r--canvas/source/tools/canvastools.flt3
-rw-r--r--canvas/source/tools/elapsedtime.cxx227
-rw-r--r--canvas/source/tools/imagecachedprimitive.hxx60
-rw-r--r--canvas/source/tools/makefile.mk91
-rw-r--r--canvas/source/tools/page.cxx155
-rw-r--r--canvas/source/tools/page.hxx160
-rw-r--r--canvas/source/tools/pagemanager.cxx225
-rw-r--r--canvas/source/tools/pagemanager.hxx97
-rw-r--r--canvas/source/tools/parametricpolypolygon.cxx293
-rw-r--r--canvas/source/tools/prioritybooster.cxx86
-rw-r--r--canvas/source/tools/propertysethelper.cxx190
-rw-r--r--canvas/source/tools/spriteredrawmanager.cxx523
-rw-r--r--canvas/source/tools/surface.cxx498
-rw-r--r--canvas/source/tools/surface.hxx165
-rw-r--r--canvas/source/tools/surfaceproxy.cxx185
-rw-r--r--canvas/source/tools/surfaceproxy.hxx137
-rw-r--r--canvas/source/tools/surfaceproxymanager.cxx89
-rw-r--r--canvas/source/tools/surfacerect.hxx138
-rw-r--r--canvas/source/tools/verifyinput.cxx929
-rw-r--r--canvas/source/vcl/backbuffer.cxx74
-rw-r--r--canvas/source/vcl/backbuffer.hxx70
-rw-r--r--canvas/source/vcl/bitmapbackbuffer.cxx167
-rw-r--r--canvas/source/vcl/bitmapbackbuffer.hxx106
-rw-r--r--canvas/source/vcl/cachedbitmap.cxx107
-rw-r--r--canvas/source/vcl/cachedbitmap.hxx81
-rw-r--r--canvas/source/vcl/canvas.cxx164
-rw-r--r--canvas/source/vcl/canvas.hxx134
-rw-r--r--canvas/source/vcl/canvasbitmap.cxx147
-rw-r--r--canvas/source/vcl/canvasbitmap.hxx132
-rw-r--r--canvas/source/vcl/canvasbitmaphelper.cxx570
-rw-r--r--canvas/source/vcl/canvasbitmaphelper.hxx132
-rw-r--r--canvas/source/vcl/canvascustomsprite.cxx200
-rw-r--r--canvas/source/vcl/canvascustomsprite.hxx136
-rw-r--r--canvas/source/vcl/canvasfont.cxx191
-rw-r--r--canvas/source/vcl/canvasfont.hxx103
-rw-r--r--canvas/source/vcl/canvashelper.cxx1431
-rw-r--r--canvas/source/vcl/canvashelper.hxx347
-rw-r--r--canvas/source/vcl/canvashelper_texturefill.cxx1185
-rw-r--r--canvas/source/vcl/devicehelper.cxx245
-rw-r--r--canvas/source/vcl/devicehelper.hxx106
-rw-r--r--canvas/source/vcl/exports.dxp3
-rw-r--r--canvas/source/vcl/impltools.cxx547
-rw-r--r--canvas/source/vcl/impltools.hxx205
-rw-r--r--canvas/source/vcl/makefile.mk85
-rw-r--r--canvas/source/vcl/outdevprovider.hxx64
-rw-r--r--canvas/source/vcl/repainttarget.hxx66
-rw-r--r--canvas/source/vcl/services.cxx93
-rw-r--r--canvas/source/vcl/sprite.hxx74
-rw-r--r--canvas/source/vcl/spritecanvas.cxx181
-rw-r--r--canvas/source/vcl/spritecanvas.hxx175
-rw-r--r--canvas/source/vcl/spritecanvashelper.cxx721
-rw-r--r--canvas/source/vcl/spritecanvashelper.hxx181
-rw-r--r--canvas/source/vcl/spritedevicehelper.cxx161
-rw-r--r--canvas/source/vcl/spritedevicehelper.hxx85
-rw-r--r--canvas/source/vcl/spritehelper.cxx446
-rw-r--r--canvas/source/vcl/spritehelper.hxx124
-rw-r--r--canvas/source/vcl/textlayout.cxx499
-rw-r--r--canvas/source/vcl/textlayout.hxx118
-rw-r--r--canvas/source/vcl/windowoutdevholder.cxx60
-rw-r--r--canvas/source/vcl/windowoutdevholder.hxx69
-rw-r--r--canvas/workben/canvasdemo.cxx715
-rw-r--r--canvas/workben/makefile.mk37
-rw-r--r--chart2/chartview.pmk30
-rw-r--r--chart2/inc/makefile.mk47
-rw-r--r--chart2/inc/pch/precompiled_chart2.cxx31
-rw-r--r--chart2/inc/pch/precompiled_chart2.hxx278
-rw-r--r--chart2/prj/build.lst27
-rw-r--r--chart2/prj/d.lst23
-rw-r--r--chart2/qa/TestCaseOldAPI.java1033
-rw-r--r--chart2/qa/data.chd14
-rw-r--r--chart2/qa/makefile.mk70
-rw-r--r--chart2/qa/unoapi/Test.java51
-rw-r--r--chart2/qa/unoapi/knownissues.xcl40
-rw-r--r--chart2/qa/unoapi/makefile.mk48
-rw-r--r--chart2/qa/unoapi/sch.sce26
-rw-r--r--chart2/qa/unoapi/testdocuments/TransparencyChart.sxsbin0 -> 10810 bytes
-rw-r--r--chart2/qa/unoapi/testdocuments/emptyChart.sdsbin0 -> 44544 bytes
-rw-r--r--chart2/qa/unoapi/testdocuments/space-metal.jpgbin0 -> 4313 bytes
-rw-r--r--chart2/source/controller/accessibility/AccStatisticsObject.cxx84
-rw-r--r--chart2/source/controller/accessibility/AccStatisticsObject.hxx69
-rw-r--r--chart2/source/controller/accessibility/AccessibleBase.cxx1013
-rw-r--r--chart2/source/controller/accessibility/AccessibleChartElement.cxx318
-rw-r--r--chart2/source/controller/accessibility/AccessibleChartElement.hxx145
-rw-r--r--chart2/source/controller/accessibility/AccessibleChartShape.cxx292
-rw-r--r--chart2/source/controller/accessibility/AccessibleChartShape.hxx107
-rw-r--r--chart2/source/controller/accessibility/AccessibleChartView.cxx419
-rw-r--r--chart2/source/controller/accessibility/AccessibleTextHelper.cxx206
-rw-r--r--chart2/source/controller/accessibility/AccessibleViewForwarder.cxx119
-rw-r--r--chart2/source/controller/accessibility/AccessibleViewForwarder.hxx68
-rw-r--r--chart2/source/controller/accessibility/ChartElementFactory.cxx148
-rw-r--r--chart2/source/controller/accessibility/ChartElementFactory.hxx51
-rw-r--r--chart2/source/controller/accessibility/makefile.mk54
-rw-r--r--chart2/source/controller/chartapiwrapper/AreaWrapper.cxx210
-rw-r--r--chart2/source/controller/chartapiwrapper/AreaWrapper.hxx108
-rw-r--r--chart2/source/controller/chartapiwrapper/AxisWrapper.cxx599
-rw-r--r--chart2/source/controller/chartapiwrapper/AxisWrapper.hxx143
-rw-r--r--chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx322
-rw-r--r--chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx172
-rw-r--r--chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx636
-rw-r--r--chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx152
-rw-r--r--chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx1626
-rw-r--r--chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx890
-rw-r--r--chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.hxx163
-rw-r--r--chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx2151
-rw-r--r--chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx322
-rw-r--r--chart2/source/controller/chartapiwrapper/GridWrapper.cxx214
-rw-r--r--chart2/source/controller/chartapiwrapper/GridWrapper.hxx106
-rw-r--r--chart2/source/controller/chartapiwrapper/LegendWrapper.cxx462
-rw-r--r--chart2/source/controller/chartapiwrapper/LegendWrapper.hxx116
-rw-r--r--chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.cxx438
-rw-r--r--chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.hxx142
-rw-r--r--chart2/source/controller/chartapiwrapper/ReferenceSizePropertyProvider.hxx51
-rw-r--r--chart2/source/controller/chartapiwrapper/TitleWrapper.cxx569
-rw-r--r--chart2/source/controller/chartapiwrapper/TitleWrapper.hxx139
-rw-r--r--chart2/source/controller/chartapiwrapper/UpDownBarWrapper.cxx404
-rw-r--r--chart2/source/controller/chartapiwrapper/UpDownBarWrapper.hxx140
-rw-r--r--chart2/source/controller/chartapiwrapper/WallFloorWrapper.cxx195
-rw-r--r--chart2/source/controller/chartapiwrapper/WallFloorWrapper.hxx92
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedAddInProperty.cxx161
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedAddInProperty.hxx114
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedAutomaticPositionProperties.cxx159
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedAutomaticPositionProperties.hxx52
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx451
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.hxx79
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.cxx175
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.hxx105
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedDataCaptionProperties.cxx196
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedDataCaptionProperties.hxx64
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.cxx204
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.hxx90
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.cxx202
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.hxx95
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedScaleProperty.cxx514
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedScaleProperty.hxx95
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedScaleTextProperties.cxx170
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedScaleTextProperties.hxx57
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSceneProperty.cxx134
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSceneProperty.hxx85
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.cxx73
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.hxx63
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSeriesOrDiagramProperty.hxx192
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx290
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSplineProperties.hxx62
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx1157
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.hxx60
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedStockProperties.cxx333
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedStockProperties.hxx62
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx596
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.hxx64
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx90
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.hxx61
-rw-r--r--chart2/source/controller/chartapiwrapper/makefile.mk77
-rw-r--r--chart2/source/controller/dialogs/Bitmaps.hrc216
-rw-r--r--chart2/source/controller/dialogs/Bitmaps.src543
-rw-r--r--chart2/source/controller/dialogs/Bitmaps_HC.hrc213
-rw-r--r--chart2/source/controller/dialogs/Bitmaps_HC.src543
-rw-r--r--chart2/source/controller/dialogs/ChangingResource.cxx59
-rw-r--r--chart2/source/controller/dialogs/ChangingResource.hxx66
-rw-r--r--chart2/source/controller/dialogs/ChartTypeDialogController.cxx1286
-rw-r--r--chart2/source/controller/dialogs/ChartTypeDialogController.hxx318
-rw-r--r--chart2/source/controller/dialogs/ChartTypeTemplateProvider.hxx56
-rw-r--r--chart2/source/controller/dialogs/CommonResources.hrc79
-rw-r--r--chart2/source/controller/dialogs/DataBrowser.cxx1367
-rw-r--r--chart2/source/controller/dialogs/DataBrowser.hxx207
-rw-r--r--chart2/source/controller/dialogs/DataBrowserModel.cxx1003
-rw-r--r--chart2/source/controller/dialogs/DataBrowserModel.hxx184
-rw-r--r--chart2/source/controller/dialogs/DialogModel.cxx852
-rw-r--r--chart2/source/controller/dialogs/DialogModel.hxx200
-rw-r--r--chart2/source/controller/dialogs/ObjectNameProvider.cxx855
-rw-r--r--chart2/source/controller/dialogs/RangeEdit.cxx73
-rw-r--r--chart2/source/controller/dialogs/RangeSelectionButton.cxx59
-rw-r--r--chart2/source/controller/dialogs/RangeSelectionHelper.cxx201
-rw-r--r--chart2/source/controller/dialogs/RangeSelectionListener.cxx78
-rw-r--r--chart2/source/controller/dialogs/ResourceIds.hrc86
-rw-r--r--chart2/source/controller/dialogs/Strings.src608
-rw-r--r--chart2/source/controller/dialogs/Strings_AdditionalControls.src57
-rw-r--r--chart2/source/controller/dialogs/Strings_ChartTypes.src153
-rw-r--r--chart2/source/controller/dialogs/Strings_Scale.src44
-rw-r--r--chart2/source/controller/dialogs/Strings_Statistic.src72
-rw-r--r--chart2/source/controller/dialogs/TabPages.hrc172
-rw-r--r--chart2/source/controller/dialogs/TextDirectionListBox.cxx62
-rw-r--r--chart2/source/controller/dialogs/TimerTriggeredControllerLock.cxx73
-rw-r--r--chart2/source/controller/dialogs/TitleDialogData.cxx127
-rw-r--r--chart2/source/controller/dialogs/dlg_ChartType.cxx81
-rw-r--r--chart2/source/controller/dialogs/dlg_ChartType.hrc35
-rw-r--r--chart2/source/controller/dialogs/dlg_ChartType.src57
-rw-r--r--chart2/source/controller/dialogs/dlg_ChartType_UNO.cxx142
-rw-r--r--chart2/source/controller/dialogs/dlg_CreationWizard.cxx270
-rw-r--r--chart2/source/controller/dialogs/dlg_CreationWizard.hrc32
-rw-r--r--chart2/source/controller/dialogs/dlg_CreationWizard.src39
-rw-r--r--chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx436
-rw-r--r--chart2/source/controller/dialogs/dlg_DataEditor.cxx363
-rw-r--r--chart2/source/controller/dialogs/dlg_DataEditor.hrc47
-rw-r--r--chart2/source/controller/dialogs/dlg_DataEditor.src148
-rw-r--r--chart2/source/controller/dialogs/dlg_DataSource.cxx256
-rw-r--r--chart2/source/controller/dialogs/dlg_DataSource.hrc33
-rw-r--r--chart2/source/controller/dialogs/dlg_DataSource.src48
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertAxis_Grid.cxx166
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertAxis_Grid.hrc46
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertAxis_Grid.src99
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertDataLabel.cxx76
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertDataLabel.hrc32
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertDataLabel.src42
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx137
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertErrorBars.hrc31
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertErrorBars.src43
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertLegend.cxx81
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertLegend.hrc31
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertLegend.src47
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertTitle.cxx69
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertTitle.hrc31
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertTitle.src42
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertTrendline.cxx117
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertTrendline.hrc31
-rw-r--r--chart2/source/controller/dialogs/dlg_InsertTrendline.src48
-rw-r--r--chart2/source/controller/dialogs/dlg_NumberFormat.cxx89
-rw-r--r--chart2/source/controller/dialogs/dlg_NumberFormat.hxx56
-rw-r--r--chart2/source/controller/dialogs/dlg_ObjectProperties.cxx652
-rw-r--r--chart2/source/controller/dialogs/dlg_ObjectProperties.src39
-rw-r--r--chart2/source/controller/dialogs/dlg_ShapeFont.cxx95
-rw-r--r--chart2/source/controller/dialogs/dlg_ShapeFont.src62
-rw-r--r--chart2/source/controller/dialogs/dlg_ShapeParagraph.cxx96
-rw-r--r--chart2/source/controller/dialogs/dlg_ShapeParagraph.src67
-rw-r--r--chart2/source/controller/dialogs/dlg_View3D.cxx121
-rw-r--r--chart2/source/controller/dialogs/dlg_View3D.hrc40
-rw-r--r--chart2/source/controller/dialogs/dlg_View3D.src48
-rw-r--r--chart2/source/controller/dialogs/hidother.src116
-rw-r--r--chart2/source/controller/dialogs/makefile.mk205
-rw-r--r--chart2/source/controller/dialogs/res_BarGeometry.cxx112
-rw-r--r--chart2/source/controller/dialogs/res_BarGeometry.hxx70
-rw-r--r--chart2/source/controller/dialogs/res_BarGeometry.src49
-rw-r--r--chart2/source/controller/dialogs/res_DataLabel.cxx422
-rw-r--r--chart2/source/controller/dialogs/res_DataLabel.hxx107
-rw-r--r--chart2/source/controller/dialogs/res_DataLabel_IDs.hrc45
-rw-r--r--chart2/source/controller/dialogs/res_DataLabel_tmpl.hrc169
-rw-r--r--chart2/source/controller/dialogs/res_ErrorBar.cxx790
-rw-r--r--chart2/source/controller/dialogs/res_ErrorBar_IDs.hrc63
-rw-r--r--chart2/source/controller/dialogs/res_ErrorBar_tmpl.hrc228
-rw-r--r--chart2/source/controller/dialogs/res_LegendPosition.cxx265
-rw-r--r--chart2/source/controller/dialogs/res_LegendPosition.hxx91
-rw-r--r--chart2/source/controller/dialogs/res_LegendPosition_IDs.hrc32
-rw-r--r--chart2/source/controller/dialogs/res_LegendPosition_tmpl.hrc80
-rw-r--r--chart2/source/controller/dialogs/res_SecondaryAxisCheckBoxes_tmpl.hrc59
-rw-r--r--chart2/source/controller/dialogs/res_TextSeparator.cxx155
-rw-r--r--chart2/source/controller/dialogs/res_TextSeparator.hxx78
-rw-r--r--chart2/source/controller/dialogs/res_TextSeparator.src49
-rw-r--r--chart2/source/controller/dialogs/res_Titles.cxx226
-rw-r--r--chart2/source/controller/dialogs/res_Titles.hrc47
-rw-r--r--chart2/source/controller/dialogs/res_Titles.hxx80
-rw-r--r--chart2/source/controller/dialogs/res_Titlesx_tmpl.hrc149
-rw-r--r--chart2/source/controller/dialogs/res_Trendline.cxx285
-rw-r--r--chart2/source/controller/dialogs/res_Trendline.hxx86
-rw-r--r--chart2/source/controller/dialogs/res_Trendline_IDs.hrc44
-rw-r--r--chart2/source/controller/dialogs/res_Trendline_tmpl.hrc123
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx366
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneAppearance.hrc38
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneAppearance.hxx100
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneAppearance.src98
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneGeometry.cxx299
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneGeometry.hrc40
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneGeometry.hxx113
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneGeometry.src147
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx651
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneIllumination.hrc46
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx143
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneIllumination.src162
-rw-r--r--chart2/source/controller/dialogs/tp_AxisLabel.cxx326
-rw-r--r--chart2/source/controller/dialogs/tp_AxisLabel.hxx101
-rw-r--r--chart2/source/controller/dialogs/tp_AxisLabel.src186
-rw-r--r--chart2/source/controller/dialogs/tp_AxisPositions.cxx499
-rw-r--r--chart2/source/controller/dialogs/tp_AxisPositions.hxx115
-rw-r--r--chart2/source/controller/dialogs/tp_AxisPositions.src292
-rw-r--r--chart2/source/controller/dialogs/tp_ChartType.cxx1184
-rw-r--r--chart2/source/controller/dialogs/tp_ChartType.hrc62
-rw-r--r--chart2/source/controller/dialogs/tp_ChartType.hxx128
-rw-r--r--chart2/source/controller/dialogs/tp_ChartType.src259
-rw-r--r--chart2/source/controller/dialogs/tp_DataLabel.cxx77
-rw-r--r--chart2/source/controller/dialogs/tp_DataLabel.hxx67
-rw-r--r--chart2/source/controller/dialogs/tp_DataLabel.src42
-rw-r--r--chart2/source/controller/dialogs/tp_DataSource.cxx1079
-rw-r--r--chart2/source/controller/dialogs/tp_DataSource.hrc50
-rw-r--r--chart2/source/controller/dialogs/tp_DataSource.hxx180
-rw-r--r--chart2/source/controller/dialogs/tp_DataSource.src171
-rw-r--r--chart2/source/controller/dialogs/tp_DataSourceControls.cxx60
-rw-r--r--chart2/source/controller/dialogs/tp_DataSourceControls.hxx73
-rw-r--r--chart2/source/controller/dialogs/tp_ErrorBars.cxx103
-rw-r--r--chart2/source/controller/dialogs/tp_ErrorBars.hxx68
-rw-r--r--chart2/source/controller/dialogs/tp_ErrorBars.src38
-rw-r--r--chart2/source/controller/dialogs/tp_LegendPosition.cxx91
-rw-r--r--chart2/source/controller/dialogs/tp_LegendPosition.hxx71
-rw-r--r--chart2/source/controller/dialogs/tp_LegendPosition.src65
-rw-r--r--chart2/source/controller/dialogs/tp_Location.cxx74
-rw-r--r--chart2/source/controller/dialogs/tp_Location.hrc32
-rw-r--r--chart2/source/controller/dialogs/tp_Location.hxx79
-rw-r--r--chart2/source/controller/dialogs/tp_Location.src73
-rw-r--r--chart2/source/controller/dialogs/tp_PointGeometry.cxx107
-rw-r--r--chart2/source/controller/dialogs/tp_PointGeometry.hxx60
-rw-r--r--chart2/source/controller/dialogs/tp_PointGeometry.src36
-rw-r--r--chart2/source/controller/dialogs/tp_PolarOptions.cxx129
-rw-r--r--chart2/source/controller/dialogs/tp_PolarOptions.hrc40
-rw-r--r--chart2/source/controller/dialogs/tp_PolarOptions.hxx70
-rw-r--r--chart2/source/controller/dialogs/tp_PolarOptions.src87
-rw-r--r--chart2/source/controller/dialogs/tp_RangeChooser.cxx417
-rw-r--r--chart2/source/controller/dialogs/tp_RangeChooser.hrc40
-rw-r--r--chart2/source/controller/dialogs/tp_RangeChooser.hxx127
-rw-r--r--chart2/source/controller/dialogs/tp_RangeChooser.src94
-rw-r--r--chart2/source/controller/dialogs/tp_Scale.cxx519
-rw-r--r--chart2/source/controller/dialogs/tp_Scale.hxx128
-rw-r--r--chart2/source/controller/dialogs/tp_Scale.src190
-rw-r--r--chart2/source/controller/dialogs/tp_SeriesToAxis.cxx316
-rw-r--r--chart2/source/controller/dialogs/tp_SeriesToAxis.hrc45
-rw-r--r--chart2/source/controller/dialogs/tp_SeriesToAxis.hxx96
-rw-r--r--chart2/source/controller/dialogs/tp_SeriesToAxis.src176
-rw-r--r--chart2/source/controller/dialogs/tp_TitleRotation.cxx128
-rw-r--r--chart2/source/controller/dialogs/tp_TitleRotation.hxx72
-rw-r--r--chart2/source/controller/dialogs/tp_TitleRotation.src93
-rw-r--r--chart2/source/controller/dialogs/tp_Trendline.cxx80
-rw-r--r--chart2/source/controller/dialogs/tp_Trendline.hxx62
-rw-r--r--chart2/source/controller/dialogs/tp_Trendline.src38
-rw-r--r--chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx190
-rw-r--r--chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.hrc50
-rw-r--r--chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.hxx96
-rw-r--r--chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.src92
-rw-r--r--chart2/source/controller/drawinglayer/DrawViewWrapper.cxx446
-rw-r--r--chart2/source/controller/drawinglayer/ViewElementListProvider.cxx277
-rw-r--r--chart2/source/controller/drawinglayer/makefile.mk49
-rw-r--r--chart2/source/controller/inc/AccessibleBase.hxx382
-rw-r--r--chart2/source/controller/inc/AccessibleChartView.hxx158
-rw-r--r--chart2/source/controller/inc/AccessibleTextHelper.hxx116
-rw-r--r--chart2/source/controller/inc/AxisItemConverter.hxx95
-rw-r--r--chart2/source/controller/inc/CharacterPropertyItemConverter.hxx87
-rw-r--r--chart2/source/controller/inc/ChartDocumentWrapper.hxx237
-rw-r--r--chart2/source/controller/inc/ChartRenderer.hxx79
-rw-r--r--chart2/source/controller/inc/ConfigurationAccess.hxx62
-rw-r--r--chart2/source/controller/inc/DataPointItemConverter.hxx113
-rw-r--r--chart2/source/controller/inc/DrawViewWrapper.hxx114
-rw-r--r--chart2/source/controller/inc/ErrorBarItemConverter.hxx87
-rw-r--r--chart2/source/controller/inc/GraphicPropertyItemConverter.hxx88
-rw-r--r--chart2/source/controller/inc/HelpIds.hrc182
-rw-r--r--chart2/source/controller/inc/ItemConverter.hxx218
-rw-r--r--chart2/source/controller/inc/ItemPropertyMap.hxx93
-rw-r--r--chart2/source/controller/inc/LegendItemConverter.hxx82
-rw-r--r--chart2/source/controller/inc/MenuResIds.hrc41
-rw-r--r--chart2/source/controller/inc/MultipleChartConverters.hxx133
-rw-r--r--chart2/source/controller/inc/MultipleItemConverter.hxx63
-rw-r--r--chart2/source/controller/inc/ObjectHierarchy.hxx123
-rw-r--r--chart2/source/controller/inc/ObjectNameProvider.hxx90
-rw-r--r--chart2/source/controller/inc/PositionAndSizeHelper.hxx63
-rw-r--r--chart2/source/controller/inc/RangeEdit.hxx59
-rw-r--r--chart2/source/controller/inc/RangeSelectionButton.hxx56
-rw-r--r--chart2/source/controller/inc/RangeSelectionHelper.hxx90
-rw-r--r--chart2/source/controller/inc/RangeSelectionListener.hxx82
-rw-r--r--chart2/source/controller/inc/RegressionCurveItemConverter.hxx85
-rw-r--r--chart2/source/controller/inc/RegressionEquationItemConverter.hxx86
-rw-r--r--chart2/source/controller/inc/SchSlotIds.hxx237
-rw-r--r--chart2/source/controller/inc/SeriesOptionsItemConverter.hxx105
-rw-r--r--chart2/source/controller/inc/ShapeController.hrc50
-rw-r--r--chart2/source/controller/inc/StatisticsItemConverter.hxx78
-rw-r--r--chart2/source/controller/inc/TabPageNotifiable.hxx54
-rw-r--r--chart2/source/controller/inc/TextDirectionListBox.hxx51
-rw-r--r--chart2/source/controller/inc/TimerTriggeredControllerLock.hxx66
-rw-r--r--chart2/source/controller/inc/TitleDialogData.hxx70
-rw-r--r--chart2/source/controller/inc/TitleItemConverter.hxx83
-rw-r--r--chart2/source/controller/inc/ViewElementListProvider.hxx73
-rw-r--r--chart2/source/controller/inc/dlg_ChartType.hxx76
-rw-r--r--chart2/source/controller/inc/dlg_ChartType_UNO.hxx89
-rw-r--r--chart2/source/controller/inc/dlg_CreationWizard.hxx108
-rw-r--r--chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx132
-rw-r--r--chart2/source/controller/inc/dlg_DataEditor.hxx124
-rw-r--r--chart2/source/controller/inc/dlg_DataSource.hxx101
-rw-r--r--chart2/source/controller/inc/dlg_InsertAxis_Grid.hxx102
-rw-r--r--chart2/source/controller/inc/dlg_InsertDataLabel.hxx73
-rw-r--r--chart2/source/controller/inc/dlg_InsertErrorBars.hxx81
-rw-r--r--chart2/source/controller/inc/dlg_InsertLegend.hxx72
-rw-r--r--chart2/source/controller/inc/dlg_InsertTitle.hxx64
-rw-r--r--chart2/source/controller/inc/dlg_InsertTrendline.hxx71
-rw-r--r--chart2/source/controller/inc/dlg_ObjectProperties.hxx157
-rw-r--r--chart2/source/controller/inc/dlg_ShapeFont.hxx62
-rw-r--r--chart2/source/controller/inc/dlg_ShapeParagraph.hxx57
-rw-r--r--chart2/source/controller/inc/dlg_View3D.hxx85
-rw-r--r--chart2/source/controller/inc/res_ErrorBar.hxx158
-rw-r--r--chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx838
-rw-r--r--chart2/source/controller/itemsetwrapper/CharacterPropertyItemConverter.cxx521
-rw-r--r--chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx703
-rw-r--r--chart2/source/controller/itemsetwrapper/ErrorBarItemConverter.cxx459
-rw-r--r--chart2/source/controller/itemsetwrapper/GraphicPropertyItemConverter.cxx812
-rw-r--r--chart2/source/controller/itemsetwrapper/ItemConverter.cxx272
-rw-r--r--chart2/source/controller/itemsetwrapper/LegendItemConverter.cxx239
-rw-r--r--chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx236
-rw-r--r--chart2/source/controller/itemsetwrapper/MultipleItemConverter.cxx87
-rw-r--r--chart2/source/controller/itemsetwrapper/RegressionCurveItemConverter.cxx279
-rw-r--r--chart2/source/controller/itemsetwrapper/RegressionEquationItemConverter.cxx190
-rw-r--r--chart2/source/controller/itemsetwrapper/SchWhichPairs.hxx255
-rw-r--r--chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx456
-rw-r--r--chart2/source/controller/itemsetwrapper/StatisticsItemConverter.cxx700
-rw-r--r--chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx248
-rw-r--r--chart2/source/controller/itemsetwrapper/makefile.mk60
-rw-r--r--chart2/source/controller/main/ChartController.cxx1587
-rw-r--r--chart2/source/controller/main/ChartController.hxx739
-rw-r--r--chart2/source/controller/main/ChartController_EditData.cxx83
-rw-r--r--chart2/source/controller/main/ChartController_Insert.cxx949
-rw-r--r--chart2/source/controller/main/ChartController_Position.cxx194
-rw-r--r--chart2/source/controller/main/ChartController_Properties.cxx863
-rw-r--r--chart2/source/controller/main/ChartController_TextEdit.cxx272
-rw-r--r--chart2/source/controller/main/ChartController_Tools.cxx922
-rw-r--r--chart2/source/controller/main/ChartController_Window.cxx2032
-rw-r--r--chart2/source/controller/main/ChartDropTargetHelper.cxx207
-rw-r--r--chart2/source/controller/main/ChartDropTargetHelper.hxx72
-rw-r--r--chart2/source/controller/main/ChartFrameloader.cxx211
-rw-r--r--chart2/source/controller/main/ChartFrameloader.hxx94
-rw-r--r--chart2/source/controller/main/ChartRenderer.cxx181
-rw-r--r--chart2/source/controller/main/ChartTransferable.cxx175
-rw-r--r--chart2/source/controller/main/ChartTransferable.hxx70
-rw-r--r--chart2/source/controller/main/ChartWindow.cxx274
-rw-r--r--chart2/source/controller/main/ChartWindow.hxx91
-rw-r--r--chart2/source/controller/main/CommandDispatch.cxx214
-rw-r--r--chart2/source/controller/main/CommandDispatch.hxx154
-rw-r--r--chart2/source/controller/main/CommandDispatchContainer.cxx219
-rw-r--r--chart2/source/controller/main/CommandDispatchContainer.hxx163
-rw-r--r--chart2/source/controller/main/ConfigurationAccess.cxx123
-rw-r--r--chart2/source/controller/main/ControllerCommandDispatch.cxx808
-rw-r--r--chart2/source/controller/main/ControllerCommandDispatch.hxx139
-rw-r--r--chart2/source/controller/main/DragMethod_Base.cxx96
-rw-r--r--chart2/source/controller/main/DragMethod_Base.hxx72
-rw-r--r--chart2/source/controller/main/DragMethod_PieSegment.cxx166
-rw-r--r--chart2/source/controller/main/DragMethod_PieSegment.hxx67
-rw-r--r--chart2/source/controller/main/DragMethod_RotateDiagram.cxx240
-rw-r--r--chart2/source/controller/main/DragMethod_RotateDiagram.hxx95
-rw-r--r--chart2/source/controller/main/DrawCommandDispatch.cxx677
-rw-r--r--chart2/source/controller/main/DrawCommandDispatch.hrc50
-rw-r--r--chart2/source/controller/main/DrawCommandDispatch.hxx96
-rw-r--r--chart2/source/controller/main/ElementSelector.cxx347
-rw-r--r--chart2/source/controller/main/ElementSelector.hxx126
-rw-r--r--chart2/source/controller/main/FeatureCommandDispatchBase.cxx117
-rw-r--r--chart2/source/controller/main/FeatureCommandDispatchBase.hxx118
-rw-r--r--chart2/source/controller/main/ImplUndoManager.cxx508
-rw-r--r--chart2/source/controller/main/ImplUndoManager.hxx230
-rw-r--r--chart2/source/controller/main/ObjectHierarchy.cxx865
-rw-r--r--chart2/source/controller/main/PositionAndSizeHelper.cxx192
-rw-r--r--chart2/source/controller/main/SelectionHelper.cxx688
-rw-r--r--chart2/source/controller/main/SelectionHelper.hxx142
-rw-r--r--chart2/source/controller/main/ShapeController.cxx741
-rw-r--r--chart2/source/controller/main/ShapeController.hxx103
-rw-r--r--chart2/source/controller/main/ShapeToolbarController.cxx301
-rw-r--r--chart2/source/controller/main/ShapeToolbarController.hxx105
-rw-r--r--chart2/source/controller/main/StatusBarCommandDispatch.cxx152
-rw-r--r--chart2/source/controller/main/StatusBarCommandDispatch.hxx113
-rw-r--r--chart2/source/controller/main/UndoCommandDispatch.cxx150
-rw-r--r--chart2/source/controller/main/UndoCommandDispatch.hxx89
-rw-r--r--chart2/source/controller/main/UndoGuard.cxx146
-rw-r--r--chart2/source/controller/main/UndoManager.cxx443
-rw-r--r--chart2/source/controller/main/_serviceregistration_controller.cxx128
-rw-r--r--chart2/source/controller/main/makefile.mk84
-rw-r--r--chart2/source/controller/makefile.mk128
-rw-r--r--chart2/source/controller/menus/ShapeContextMenu.src124
-rw-r--r--chart2/source/controller/menus/ShapeEditContextMenu.src65
-rw-r--r--chart2/source/controller/menus/makefile.mk63
-rw-r--r--chart2/source/inc/AxisHelper.hxx250
-rw-r--r--chart2/source/inc/AxisIndexDefines.hxx41
-rw-r--r--chart2/source/inc/BaseGFXHelper.hxx105
-rw-r--r--chart2/source/inc/CachedDataSequence.hxx195
-rw-r--r--chart2/source/inc/CharacterProperties.hxx150
-rw-r--r--chart2/source/inc/ChartDebugTrace.hxx72
-rw-r--r--chart2/source/inc/ChartModelHelper.hxx118
-rw-r--r--chart2/source/inc/ChartTypeHelper.hxx107
-rw-r--r--chart2/source/inc/ChartViewHelper.hxx54
-rw-r--r--chart2/source/inc/CloneHelper.hxx127
-rw-r--r--chart2/source/inc/ColorPerPointHelper.hxx68
-rw-r--r--chart2/source/inc/CommonConverters.hxx282
-rw-r--r--chart2/source/inc/CommonFunctors.hxx231
-rw-r--r--chart2/source/inc/ConfigColorScheme.hxx97
-rw-r--r--chart2/source/inc/ConfigItemListener.hxx48
-rw-r--r--chart2/source/inc/ContainerHelper.hxx184
-rw-r--r--chart2/source/inc/ControllerLockGuard.hxx96
-rw-r--r--chart2/source/inc/DataSeriesHelper.hxx216
-rw-r--r--chart2/source/inc/DataSource.hxx86
-rw-r--r--chart2/source/inc/DataSourceHelper.hxx167
-rw-r--r--chart2/source/inc/DiagramHelper.hxx353
-rw-r--r--chart2/source/inc/DisposeHelper.hxx104
-rw-r--r--chart2/source/inc/ErrorBar.hxx163
-rw-r--r--chart2/source/inc/EventListenerHelper.hxx225
-rw-r--r--chart2/source/inc/ExplicitCategoriesProvider.hxx111
-rw-r--r--chart2/source/inc/ExponentialRegressionCurveCalculator.hxx77
-rw-r--r--chart2/source/inc/FastPropertyIdRanges.hxx60
-rw-r--r--chart2/source/inc/FillProperties.hxx94
-rw-r--r--chart2/source/inc/FormattedStringHelper.hxx60
-rw-r--r--chart2/source/inc/InternalData.hxx114
-rw-r--r--chart2/source/inc/InternalDataProvider.hxx249
-rw-r--r--chart2/source/inc/LabeledDataSequence.hxx116
-rw-r--r--chart2/source/inc/LegendHelper.hxx81
-rw-r--r--chart2/source/inc/LifeTime.hxx256
-rw-r--r--chart2/source/inc/LineProperties.hxx80
-rw-r--r--chart2/source/inc/LinearRegressionCurveCalculator.hxx77
-rw-r--r--chart2/source/inc/LogarithmicRegressionCurveCalculator.hxx77
-rw-r--r--chart2/source/inc/MeanValueRegressionCurveCalculator.hxx76
-rw-r--r--chart2/source/inc/MediaDescriptorHelper.hxx210
-rw-r--r--chart2/source/inc/ModifyListenerCallBack.hxx70
-rw-r--r--chart2/source/inc/ModifyListenerHelper.hxx310
-rw-r--r--chart2/source/inc/MutexContainer.hxx53
-rw-r--r--chart2/source/inc/NameContainer.hxx107
-rw-r--r--chart2/source/inc/NamedFillProperties.hxx78
-rw-r--r--chart2/source/inc/NamedLineProperties.hxx78
-rw-r--r--chart2/source/inc/NamedProperties.hxx65
-rw-r--r--chart2/source/inc/NoWarningThisInCTOR.hxx49
-rw-r--r--chart2/source/inc/OPropertySet.hxx316
-rw-r--r--chart2/source/inc/ObjectIdentifier.hxx281
-rw-r--r--chart2/source/inc/PotentialRegressionCurveCalculator.hxx79
-rw-r--r--chart2/source/inc/PropertyHelper.hxx200
-rw-r--r--chart2/source/inc/RangeHighlighter.hxx119
-rw-r--r--chart2/source/inc/ReferenceSizeProvider.hxx148
-rw-r--r--chart2/source/inc/RegressionCurveCalculator.hxx96
-rw-r--r--chart2/source/inc/RegressionCurveHelper.hxx244
-rw-r--r--chart2/source/inc/RelativePositionHelper.hxx123
-rw-r--r--chart2/source/inc/RelativeSizeHelper.hxx62
-rw-r--r--chart2/source/inc/ResId.hxx51
-rw-r--r--chart2/source/inc/RessourceManager.hxx56
-rw-r--r--chart2/source/inc/Scaling.hxx212
-rw-r--r--chart2/source/inc/SceneProperties.hxx99
-rw-r--r--chart2/source/inc/ServiceMacros.hxx149
-rw-r--r--chart2/source/inc/StackMode.hxx50
-rw-r--r--chart2/source/inc/StatisticsHelper.hxx136
-rw-r--r--chart2/source/inc/Strings.hrc409
-rw-r--r--chart2/source/inc/ThreeDHelper.hxx162
-rw-r--r--chart2/source/inc/TitleHelper.hxx104
-rw-r--r--chart2/source/inc/TrueGuard.hxx51
-rw-r--r--chart2/source/inc/UncachedDataSequence.hxx209
-rw-r--r--chart2/source/inc/UndoGuard.hxx123
-rw-r--r--chart2/source/inc/UndoManager.hxx183
-rw-r--r--chart2/source/inc/UserDefinedProperties.hxx72
-rw-r--r--chart2/source/inc/WeakListenerAdapter.hxx130
-rw-r--r--chart2/source/inc/WrappedDefaultProperty.hxx69
-rw-r--r--chart2/source/inc/WrappedDirectStateProperty.hxx56
-rw-r--r--chart2/source/inc/WrappedIgnoreProperty.hxx84
-rw-r--r--chart2/source/inc/WrappedProperty.hxx89
-rw-r--r--chart2/source/inc/WrappedPropertySet.hxx148
-rw-r--r--chart2/source/inc/XMLRangeHelper.hxx77
-rw-r--r--chart2/source/inc/charttoolsdllapi.hxx44
-rw-r--r--chart2/source/inc/chartview/ChartSfxItemIds.hxx260
-rw-r--r--chart2/source/inc/chartview/DataPointSymbolSupplier.hxx62
-rw-r--r--chart2/source/inc/chartview/DrawModelWrapper.hxx117
-rw-r--r--chart2/source/inc/chartview/ExplicitValueProvider.hxx122
-rw-r--r--chart2/source/inc/chartview/NumberFormatterWrapper.hxx85
-rw-r--r--chart2/source/inc/chartview/chartviewdllapi.hxx44
-rw-r--r--chart2/source/inc/chartview/servicenames_charttypes.hxx50
-rw-r--r--chart2/source/inc/exports.dxp3
-rw-r--r--chart2/source/inc/macros.hxx56
-rw-r--r--chart2/source/inc/servicenames.hxx74
-rw-r--r--chart2/source/inc/servicenames_charttypes.hxx52
-rw-r--r--chart2/source/inc/servicenames_coosystems.hxx46
-rw-r--r--chart2/source/inc/servicenames_dlwrapper.hxx44
-rw-r--r--chart2/source/model/filter/XMLFilter.cxx876
-rw-r--r--chart2/source/model/filter/makefile.mk49
-rw-r--r--chart2/source/model/inc/BaseCoordinateSystem.hxx193
-rw-r--r--chart2/source/model/inc/CartesianCoordinateSystem.hxx96
-rw-r--r--chart2/source/model/inc/ChartTypeManager.hxx90
-rw-r--r--chart2/source/model/inc/DataSeries.hxx233
-rw-r--r--chart2/source/model/inc/DataSeriesTree.hxx94
-rw-r--r--chart2/source/model/inc/Diagram.hxx244
-rw-r--r--chart2/source/model/inc/PolarCoordinateSystem.hxx96
-rw-r--r--chart2/source/model/inc/StockBar.hxx122
-rw-r--r--chart2/source/model/inc/XMLFilter.hxx226
-rw-r--r--chart2/source/model/inc/_serviceregistration_charttypes.hxx43
-rw-r--r--chart2/source/model/main/Axis.cxx649
-rw-r--r--chart2/source/model/main/Axis.hxx187
-rw-r--r--chart2/source/model/main/BaseCoordinateSystem.cxx412
-rw-r--r--chart2/source/model/main/CartesianCoordinateSystem.cxx158
-rw-r--r--chart2/source/model/main/ChartModel.cxx1382
-rw-r--r--chart2/source/model/main/ChartModel.hxx612
-rw-r--r--chart2/source/model/main/ChartModel_Persistence.cxx861
-rw-r--r--chart2/source/model/main/DataPoint.cxx322
-rw-r--r--chart2/source/model/main/DataPoint.hxx146
-rw-r--r--chart2/source/model/main/DataPointProperties.cxx432
-rw-r--r--chart2/source/model/main/DataPointProperties.hxx104
-rw-r--r--chart2/source/model/main/DataSeries.cxx627
-rw-r--r--chart2/source/model/main/DataSeriesProperties.cxx101
-rw-r--r--chart2/source/model/main/DataSeriesProperties.hxx66
-rw-r--r--chart2/source/model/main/Diagram.cxx716
-rw-r--r--chart2/source/model/main/FormattedString.cxx266
-rw-r--r--chart2/source/model/main/FormattedString.hxx143
-rw-r--r--chart2/source/model/main/GridProperties.cxx276
-rw-r--r--chart2/source/model/main/GridProperties.hxx131
-rw-r--r--chart2/source/model/main/LayoutContainer.cxx141
-rw-r--r--chart2/source/model/main/LayoutContainer.hxx93
-rw-r--r--chart2/source/model/main/Legend.cxx372
-rw-r--r--chart2/source/model/main/Legend.hxx157
-rw-r--r--chart2/source/model/main/PageBackground.cxx258
-rw-r--r--chart2/source/model/main/PageBackground.hxx135
-rw-r--r--chart2/source/model/main/PolarCoordinateSystem.cxx158
-rw-r--r--chart2/source/model/main/StockBar.cxx270
-rw-r--r--chart2/source/model/main/Title.cxx415
-rw-r--r--chart2/source/model/main/Title.hxx150
-rw-r--r--chart2/source/model/main/Wall.cxx263
-rw-r--r--chart2/source/model/main/Wall.hxx130
-rw-r--r--chart2/source/model/main/_serviceregistration_model.cxx221
-rw-r--r--chart2/source/model/main/makefile.mk67
-rw-r--r--chart2/source/model/makefile.mk100
-rw-r--r--chart2/source/model/template/AreaChartType.cxx80
-rw-r--r--chart2/source/model/template/AreaChartType.hxx67
-rw-r--r--chart2/source/model/template/AreaChartTypeTemplate.cxx284
-rw-r--r--chart2/source/model/template/AreaChartTypeTemplate.hxx106
-rw-r--r--chart2/source/model/template/BarChartType.cxx81
-rw-r--r--chart2/source/model/template/BarChartType.hxx67
-rw-r--r--chart2/source/model/template/BarChartTypeTemplate.cxx356
-rw-r--r--chart2/source/model/template/BarChartTypeTemplate.hxx124
-rw-r--r--chart2/source/model/template/BubbleChartType.cxx245
-rw-r--r--chart2/source/model/template/BubbleChartType.hxx89
-rw-r--r--chart2/source/model/template/BubbleChartTypeTemplate.cxx317
-rw-r--r--chart2/source/model/template/BubbleChartTypeTemplate.hxx104
-rw-r--r--chart2/source/model/template/BubbleDataInterpreter.cxx311
-rw-r--r--chart2/source/model/template/BubbleDataInterpreter.hxx64
-rw-r--r--chart2/source/model/template/CandleStickChartType.cxx358
-rw-r--r--chart2/source/model/template/CandleStickChartType.hxx93
-rw-r--r--chart2/source/model/template/ChartType.cxx328
-rw-r--r--chart2/source/model/template/ChartType.hxx186
-rw-r--r--chart2/source/model/template/ChartTypeManager.cxx622
-rw-r--r--chart2/source/model/template/ChartTypeTemplate.cxx936
-rw-r--r--chart2/source/model/template/ChartTypeTemplate.hxx302
-rw-r--r--chart2/source/model/template/ColumnChartType.cxx205
-rw-r--r--chart2/source/model/template/ColumnChartType.hxx77
-rw-r--r--chart2/source/model/template/ColumnLineChartTypeTemplate.cxx456
-rw-r--r--chart2/source/model/template/ColumnLineChartTypeTemplate.hxx122
-rw-r--r--chart2/source/model/template/ColumnLineDataInterpreter.cxx102
-rw-r--r--chart2/source/model/template/ColumnLineDataInterpreter.hxx62
-rw-r--r--chart2/source/model/template/DataInterpreter.cxx464
-rw-r--r--chart2/source/model/template/DataInterpreter.hxx103
-rw-r--r--chart2/source/model/template/FilledNetChartType.cxx97
-rw-r--r--chart2/source/model/template/FilledNetChartType.hxx66
-rw-r--r--chart2/source/model/template/LineChartType.cxx217
-rw-r--r--chart2/source/model/template/LineChartType.hxx78
-rw-r--r--chart2/source/model/template/LineChartTypeTemplate.cxx415
-rw-r--r--chart2/source/model/template/LineChartTypeTemplate.hxx112
-rw-r--r--chart2/source/model/template/NetChartType.cxx183
-rw-r--r--chart2/source/model/template/NetChartType.hxx96
-rw-r--r--chart2/source/model/template/NetChartTypeTemplate.cxx232
-rw-r--r--chart2/source/model/template/NetChartTypeTemplate.hxx90
-rw-r--r--chart2/source/model/template/PieChartType.cxx242
-rw-r--r--chart2/source/model/template/PieChartType.hxx84
-rw-r--r--chart2/source/model/template/PieChartTypeTemplate.cxx664
-rw-r--r--chart2/source/model/template/PieChartTypeTemplate.hxx143
-rw-r--r--chart2/source/model/template/ScatterChartType.cxx299
-rw-r--r--chart2/source/model/template/ScatterChartType.hxx94
-rw-r--r--chart2/source/model/template/ScatterChartTypeTemplate.cxx435
-rw-r--r--chart2/source/model/template/ScatterChartTypeTemplate.hxx113
-rw-r--r--chart2/source/model/template/StockChartTypeTemplate.cxx563
-rw-r--r--chart2/source/model/template/StockChartTypeTemplate.hxx141
-rw-r--r--chart2/source/model/template/StockDataInterpreter.cxx345
-rw-r--r--chart2/source/model/template/StockDataInterpreter.hxx72
-rw-r--r--chart2/source/model/template/XYDataInterpreter.cxx276
-rw-r--r--chart2/source/model/template/XYDataInterpreter.hxx64
-rw-r--r--chart2/source/model/template/_serviceregistration_charttypes.cxx141
-rw-r--r--chart2/source/model/template/makefile.mk82
-rw-r--r--chart2/source/tools/AxisHelper.cxx979
-rw-r--r--chart2/source/tools/BaseGFXHelper.cxx225
-rw-r--r--chart2/source/tools/CachedDataSequence.cxx412
-rw-r--r--chart2/source/tools/CharacterProperties.cxx605
-rw-r--r--chart2/source/tools/ChartDebugTrace.cxx420
-rw-r--r--chart2/source/tools/ChartModelHelper.cxx270
-rw-r--r--chart2/source/tools/ChartTypeHelper.cxx688
-rw-r--r--chart2/source/tools/ChartViewHelper.cxx75
-rw-r--r--chart2/source/tools/ColorPerPointHelper.cxx100
-rw-r--r--chart2/source/tools/CommonConverters.cxx552
-rw-r--r--chart2/source/tools/ConfigColorScheme.cxx205
-rw-r--r--chart2/source/tools/ControllerLockGuard.cxx92
-rw-r--r--chart2/source/tools/DataSeriesHelper.cxx921
-rw-r--r--chart2/source/tools/DataSource.cxx94
-rw-r--r--chart2/source/tools/DataSourceHelper.cxx555
-rw-r--r--chart2/source/tools/DiagramHelper.cxx1562
-rw-r--r--chart2/source/tools/ErrorBar.cxx366
-rw-r--r--chart2/source/tools/ExplicitCategoriesProvider.cxx425
-rw-r--r--chart2/source/tools/ExponentialRegressionCurveCalculator.cxx186
-rw-r--r--chart2/source/tools/FillProperties.cxx280
-rw-r--r--chart2/source/tools/FormattedStringHelper.cxx82
-rw-r--r--chart2/source/tools/ImplOPropertySet.cxx210
-rw-r--r--chart2/source/tools/ImplOPropertySet.hxx99
-rw-r--r--chart2/source/tools/InternalData.cxx559
-rw-r--r--chart2/source/tools/InternalDataProvider.cxx1386
-rw-r--r--chart2/source/tools/LabeledDataSequence.cxx182
-rw-r--r--chart2/source/tools/LegendHelper.cxx149
-rw-r--r--chart2/source/tools/LifeTime.cxx549
-rw-r--r--chart2/source/tools/LineProperties.cxx188
-rw-r--r--chart2/source/tools/LinearRegressionCurveCalculator.cxx182
-rw-r--r--chart2/source/tools/LogarithmicRegressionCurveCalculator.cxx194
-rw-r--r--chart2/source/tools/MeanValueRegressionCurveCalculator.cxx146
-rw-r--r--chart2/source/tools/MediaDescriptorHelper.cxx224
-rw-r--r--chart2/source/tools/ModifyListenerCallBack.cxx136
-rw-r--r--chart2/source/tools/ModifyListenerHelper.cxx216
-rw-r--r--chart2/source/tools/MutexContainer.cxx46
-rw-r--r--chart2/source/tools/NameContainer.cxx192
-rw-r--r--chart2/source/tools/NamedFillProperties.cxx117
-rw-r--r--chart2/source/tools/NamedLineProperties.cxx102
-rw-r--r--chart2/source/tools/NamedProperties.cxx62
-rw-r--r--chart2/source/tools/OPropertySet.cxx533
-rw-r--r--chart2/source/tools/ObjectIdentifier.cxx1494
-rw-r--r--chart2/source/tools/PotentialRegressionCurveCalculator.cxx180
-rw-r--r--chart2/source/tools/PropertyHelper.cxx317
-rw-r--r--chart2/source/tools/RangeHighlighter.cxx409
-rw-r--r--chart2/source/tools/ReferenceSizeProvider.cxx381
-rw-r--r--chart2/source/tools/RegressionCalculationHelper.hxx134
-rw-r--r--chart2/source/tools/RegressionCurveCalculator.cxx171
-rw-r--r--chart2/source/tools/RegressionCurveHelper.cxx739
-rw-r--r--chart2/source/tools/RegressionCurveModel.cxx444
-rw-r--r--chart2/source/tools/RegressionCurveModel.hxx262
-rw-r--r--chart2/source/tools/RegressionEquation.cxx365
-rw-r--r--chart2/source/tools/RegressionEquation.hxx146
-rw-r--r--chart2/source/tools/RelativePositionHelper.cxx402
-rw-r--r--chart2/source/tools/RelativeSizeHelper.cxx103
-rw-r--r--chart2/source/tools/ResId.cxx50
-rw-r--r--chart2/source/tools/RessourceManager.cxx52
-rw-r--r--chart2/source/tools/Scaling.cxx274
-rw-r--r--chart2/source/tools/SceneProperties.cxx385
-rw-r--r--chart2/source/tools/StatisticsHelper.cxx406
-rw-r--r--chart2/source/tools/ThreeDHelper.cxx1530
-rw-r--r--chart2/source/tools/TitleHelper.cxx380
-rw-r--r--chart2/source/tools/TrueGuard.cxx50
-rw-r--r--chart2/source/tools/UncachedDataSequence.cxx382
-rw-r--r--chart2/source/tools/UserDefinedProperties.cxx76
-rw-r--r--chart2/source/tools/WeakListenerAdapter.cxx79
-rw-r--r--chart2/source/tools/WrappedDefaultProperty.cxx95
-rw-r--r--chart2/source/tools/WrappedDirectStateProperty.cxx62
-rw-r--r--chart2/source/tools/WrappedIgnoreProperty.cxx151
-rw-r--r--chart2/source/tools/WrappedProperty.cxx153
-rw-r--r--chart2/source/tools/WrappedPropertySet.cxx498
-rw-r--r--chart2/source/tools/XMLRangeHelper.cxx421
-rw-r--r--chart2/source/tools/_serviceregistration_tools.cxx203
-rw-r--r--chart2/source/tools/exports.flt3
-rw-r--r--chart2/source/tools/makefile.mk189
-rw-r--r--chart2/source/view/axes/MinimumAndMaximumSupplier.cxx204
-rw-r--r--chart2/source/view/axes/ScaleAutomatism.cxx763
-rw-r--r--chart2/source/view/axes/TickmarkHelper.cxx943
-rw-r--r--chart2/source/view/axes/TickmarkHelper.hxx279
-rw-r--r--chart2/source/view/axes/TickmarkProperties.hxx56
-rw-r--r--chart2/source/view/axes/VAxisBase.cxx256
-rw-r--r--chart2/source/view/axes/VAxisBase.hxx110
-rw-r--r--chart2/source/view/axes/VAxisOrGridBase.cxx101
-rw-r--r--chart2/source/view/axes/VAxisOrGridBase.hxx86
-rw-r--r--chart2/source/view/axes/VAxisProperties.cxx489
-rw-r--r--chart2/source/view/axes/VAxisProperties.hxx171
-rw-r--r--chart2/source/view/axes/VCartesianAxis.cxx1603
-rw-r--r--chart2/source/view/axes/VCartesianAxis.hxx149
-rw-r--r--chart2/source/view/axes/VCartesianCoordinateSystem.cxx253
-rw-r--r--chart2/source/view/axes/VCartesianCoordinateSystem.hxx67
-rw-r--r--chart2/source/view/axes/VCartesianGrid.cxx342
-rw-r--r--chart2/source/view/axes/VCartesianGrid.hxx74
-rw-r--r--chart2/source/view/axes/VCoordinateSystem.cxx601
-rw-r--r--chart2/source/view/axes/VPolarAngleAxis.cxx237
-rw-r--r--chart2/source/view/axes/VPolarAngleAxis.hxx69
-rw-r--r--chart2/source/view/axes/VPolarAxis.cxx86
-rw-r--r--chart2/source/view/axes/VPolarAxis.hxx74
-rw-r--r--chart2/source/view/axes/VPolarCoordinateSystem.cxx214
-rw-r--r--chart2/source/view/axes/VPolarCoordinateSystem.hxx71
-rw-r--r--chart2/source/view/axes/VPolarGrid.cxx276
-rw-r--r--chart2/source/view/axes/VPolarGrid.hxx99
-rw-r--r--chart2/source/view/axes/VPolarRadiusAxis.cxx189
-rw-r--r--chart2/source/view/axes/VPolarRadiusAxis.hxx101
-rw-r--r--chart2/source/view/axes/makefile.mk66
-rw-r--r--chart2/source/view/charttypes/AreaChart.cxx981
-rw-r--r--chart2/source/view/charttypes/AreaChart.hxx137
-rw-r--r--chart2/source/view/charttypes/BarChart.cxx969
-rw-r--r--chart2/source/view/charttypes/BarChart.hxx113
-rw-r--r--chart2/source/view/charttypes/BarPositionHelper.cxx141
-rw-r--r--chart2/source/view/charttypes/BarPositionHelper.hxx79
-rw-r--r--chart2/source/view/charttypes/BubbleChart.cxx420
-rw-r--r--chart2/source/view/charttypes/BubbleChart.hxx97
-rw-r--r--chart2/source/view/charttypes/CandleStickChart.cxx372
-rw-r--r--chart2/source/view/charttypes/CandleStickChart.hxx92
-rw-r--r--chart2/source/view/charttypes/CategoryPositionHelper.cxx103
-rw-r--r--chart2/source/view/charttypes/CategoryPositionHelper.hxx71
-rw-r--r--chart2/source/view/charttypes/PieChart.cxx883
-rw-r--r--chart2/source/view/charttypes/PieChart.hxx148
-rw-r--r--chart2/source/view/charttypes/Splines.cxx547
-rw-r--r--chart2/source/view/charttypes/Splines.hxx64
-rw-r--r--chart2/source/view/charttypes/VSeriesPlotter.cxx2113
-rw-r--r--chart2/source/view/charttypes/makefile.mk55
-rw-r--r--chart2/source/view/diagram/VDiagram.cxx813
-rw-r--r--chart2/source/view/diagram/makefile.mk48
-rw-r--r--chart2/source/view/exports.flt4
-rw-r--r--chart2/source/view/inc/Clipping.hxx73
-rw-r--r--chart2/source/view/inc/LabelAlignment.hxx44
-rw-r--r--chart2/source/view/inc/LabelPositionHelper.hxx89
-rw-r--r--chart2/source/view/inc/LegendEntryProvider.hxx64
-rw-r--r--chart2/source/view/inc/Linear3DTransformation.hxx69
-rw-r--r--chart2/source/view/inc/MinimumAndMaximumSupplier.hxx103
-rw-r--r--chart2/source/view/inc/PlotterBase.hxx129
-rw-r--r--chart2/source/view/inc/PlottingPositionHelper.hxx409
-rw-r--r--chart2/source/view/inc/PolarLabelPositionHelper.hxx79
-rw-r--r--chart2/source/view/inc/PropertyMapper.hxx136
-rw-r--r--chart2/source/view/inc/ScaleAutomatism.hxx122
-rw-r--r--chart2/source/view/inc/ShapeFactory.hxx257
-rw-r--r--chart2/source/view/inc/Stripe.hxx92
-rw-r--r--chart2/source/view/inc/VCoordinateSystem.hxx215
-rw-r--r--chart2/source/view/inc/VDataSeries.hxx267
-rw-r--r--chart2/source/view/inc/VDiagram.hxx138
-rw-r--r--chart2/source/view/inc/VLegendSymbolFactory.hxx80
-rw-r--r--chart2/source/view/inc/VLineProperties.hxx64
-rw-r--r--chart2/source/view/inc/VPolarTransformation.hxx69
-rw-r--r--chart2/source/view/inc/VSeriesPlotter.hxx456
-rw-r--r--chart2/source/view/inc/ViewDefines.hxx50
-rw-r--r--chart2/source/view/main/ChartItemPool.cxx255
-rw-r--r--chart2/source/view/main/ChartItemPool.hxx61
-rw-r--r--chart2/source/view/main/ChartView.cxx3190
-rw-r--r--chart2/source/view/main/ChartView.hxx264
-rw-r--r--chart2/source/view/main/Clipping.cxx307
-rw-r--r--chart2/source/view/main/DataPointSymbolSupplier.cxx69
-rw-r--r--chart2/source/view/main/DrawModelWrapper.cxx414
-rw-r--r--chart2/source/view/main/LabelPositionHelper.cxx491
-rw-r--r--chart2/source/view/main/Linear3DTransformation.cxx110
-rw-r--r--chart2/source/view/main/NumberFormatterWrapper.cxx172
-rw-r--r--chart2/source/view/main/PlotterBase.cxx138
-rw-r--r--chart2/source/view/main/PlottingPositionHelper.cxx670
-rw-r--r--chart2/source/view/main/PolarLabelPositionHelper.cxx191
-rw-r--r--chart2/source/view/main/PropertyMapper.cxx542
-rw-r--r--chart2/source/view/main/ShapeFactory.cxx2112
-rw-r--r--chart2/source/view/main/Stripe.cxx363
-rw-r--r--chart2/source/view/main/VDataSeries.cxx988
-rw-r--r--chart2/source/view/main/VLegend.cxx837
-rw-r--r--chart2/source/view/main/VLegend.hxx113
-rw-r--r--chart2/source/view/main/VLegendSymbolFactory.cxx377
-rw-r--r--chart2/source/view/main/VLineProperties.cxx112
-rw-r--r--chart2/source/view/main/VPolarTransformation.cxx97
-rw-r--r--chart2/source/view/main/VTitle.cxx302
-rw-r--r--chart2/source/view/main/VTitle.hxx85
-rw-r--r--chart2/source/view/main/_serviceregistration_view.cxx74
-rw-r--r--chart2/source/view/main/makefile.mk68
-rw-r--r--chart2/source/view/makefile.mk120
-rw-r--r--chart2/uiconfig/accelerator/en-US/default.xml30
-rw-r--r--chart2/uiconfig/menubar/menubar.xml156
-rw-r--r--chart2/uiconfig/statusbar/statusbar.xml6
-rw-r--r--chart2/uiconfig/toolbar/arrowshapes.xml34
-rw-r--r--chart2/uiconfig/toolbar/basicshapes.xml29
-rw-r--r--chart2/uiconfig/toolbar/calloutshapes.xml11
-rw-r--r--chart2/uiconfig/toolbar/drawbar.xml20
-rw-r--r--chart2/uiconfig/toolbar/flowchartshapes.xml36
-rw-r--r--chart2/uiconfig/toolbar/standardbar.xml22
-rw-r--r--chart2/uiconfig/toolbar/starshapes.xml17
-rw-r--r--chart2/uiconfig/toolbar/symbolshapes.xml24
-rw-r--r--chart2/uiconfig/toolbar/toolbar.xml15
-rw-r--r--chart2/util/makefile.mk60
-rw-r--r--chart2/util/makefile.pmk46
-rw-r--r--chart2/util/target.pmk32
-rw-r--r--chart2/workbench/addin/exports.dxp3
-rw-r--r--chart2/workbench/addin/makefile.mk85
-rw-r--r--chart2/workbench/addin/sampleaddin.cxx719
-rw-r--r--chart2/workbench/addin/sampleaddin.def7
-rw-r--r--chart2/workbench/addin/sampleaddin.hxx164
-rw-r--r--cli_ure/inc/makefile.mk48
-rw-r--r--cli_ure/inc/pch/precompiled_cli_ure.cxx31
-rw-r--r--cli_ure/inc/pch/precompiled_cli_ure.hxx34
-rw-r--r--cli_ure/prj/build.lst12
-rw-r--r--cli_ure/prj/d.lst13
-rw-r--r--cli_ure/qa/climaker/ClimakerTestCase.java98
-rw-r--r--cli_ure/qa/climaker/climaker.cs1487
-rw-r--r--cli_ure/qa/climaker/makefile.mk135
-rw-r--r--cli_ure/qa/climaker/testobjects.cs588
-rw-r--r--cli_ure/qa/climaker/types.idl483
-rw-r--r--cli_ure/qa/versioning/readme.txt28
-rw-r--r--cli_ure/readme.txt272
-rw-r--r--cli_ure/source/basetypes/assembly.cs2
-rw-r--r--cli_ure/source/basetypes/cli_basetypes_config11
-rw-r--r--cli_ure/source/basetypes/makefile.mk105
-rw-r--r--cli_ure/source/basetypes/uno/Any.cs211
-rw-r--r--cli_ure/source/basetypes/uno/BoundAttribute.cs46
-rw-r--r--cli_ure/source/basetypes/uno/ExceptionAttribute.cs70
-rw-r--r--cli_ure/source/basetypes/uno/OnewayAttribute.cs43
-rw-r--r--cli_ure/source/basetypes/uno/ParameterizedTypeAttribute.cs68
-rw-r--r--cli_ure/source/basetypes/uno/PolymorphicType.cs443
-rw-r--r--cli_ure/source/basetypes/uno/TypeArgumentsAttribute.cs84
-rw-r--r--cli_ure/source/basetypes/uno/TypeParametersAttribute.cs65
-rw-r--r--cli_ure/source/climaker/climaker.exe.config10
-rw-r--r--cli_ure/source/climaker/climaker_app.cxx752
-rw-r--r--cli_ure/source/climaker/climaker_emit.cxx2326
-rw-r--r--cli_ure/source/climaker/climaker_share.h271
-rw-r--r--cli_ure/source/climaker/makefile.mk137
-rw-r--r--cli_ure/source/cliuno.snkbin0 -> 596 bytes
-rw-r--r--cli_ure/source/makefile.mk48
-rw-r--r--cli_ure/source/native/assembly.cxx39
-rw-r--r--cli_ure/source/native/cli_cppuhelper_config11
-rw-r--r--cli_ure/source/native/makefile.mk184
-rw-r--r--cli_ure/source/native/msvc.map6
-rw-r--r--cli_ure/source/native/native_bootstrap.cxx436
-rw-r--r--cli_ure/source/native/native_share.h123
-rw-r--r--cli_ure/source/native/path.cxx220
-rw-r--r--cli_ure/source/scripts/increment_version.pl281
-rw-r--r--cli_ure/source/scripts/subst_template.pl133
-rw-r--r--cli_ure/source/uno_bridge/README.txt20
-rw-r--r--cli_ure/source/uno_bridge/bridge_exports.map8
-rw-r--r--cli_ure/source/uno_bridge/cli_base.h183
-rw-r--r--cli_ure/source/uno_bridge/cli_bridge.cxx372
-rw-r--r--cli_ure/source/uno_bridge/cli_bridge.h123
-rw-r--r--cli_ure/source/uno_bridge/cli_data.cxx2014
-rw-r--r--cli_ure/source/uno_bridge/cli_environment.cxx176
-rw-r--r--cli_ure/source/uno_bridge/cli_environment.h117
-rw-r--r--cli_ure/source/uno_bridge/cli_proxy.cxx1180
-rw-r--r--cli_ure/source/uno_bridge/cli_proxy.h302
-rw-r--r--cli_ure/source/uno_bridge/cli_uno.cxx293
-rw-r--r--cli_ure/source/uno_bridge/makefile.mk95
-rw-r--r--cli_ure/source/ure/assembly.cs2
-rw-r--r--cli_ure/source/ure/cli_ure_config11
-rw-r--r--cli_ure/source/ure/makefile.mk102
-rw-r--r--cli_ure/source/ure/uno/util/DisposeGuard.cs59
-rw-r--r--cli_ure/source/ure/uno/util/WeakAdapter.cs120
-rw-r--r--cli_ure/source/ure/uno/util/WeakBase.cs178
-rw-r--r--cli_ure/source/ure/uno/util/WeakComponentBase.cs194
-rw-r--r--cli_ure/unotypes/cli_uretypes_config11
-rw-r--r--cli_ure/unotypes/makefile.mk79
-rw-r--r--cli_ure/util/makefile.pmk35
-rw-r--r--cli_ure/util/target.pmk44
-rw-r--r--cli_ure/version/incversions.txt39
-rw-r--r--cli_ure/version/makefile.mk60
-rw-r--r--cli_ure/version/version.txt47
-rw-r--r--cli_ure/workbench/dynload/dynload.cs35
-rw-r--r--cli_ure/workbench/dynload/makefile.mk68
-rw-r--r--cli_ure/workbench/dynload/readme.txt2
-rwxr-xr-xcodemaker/codemaker.pmk53
-rw-r--r--codemaker/inc/codemaker/codemaker.hxx59
-rw-r--r--codemaker/inc/codemaker/commoncpp.hxx60
-rw-r--r--codemaker/inc/codemaker/commonjava.hxx47
-rw-r--r--codemaker/inc/codemaker/dependencies.hxx152
-rw-r--r--codemaker/inc/codemaker/exceptiontree.hxx127
-rw-r--r--codemaker/inc/codemaker/generatedtypeset.hxx82
-rw-r--r--codemaker/inc/codemaker/global.hxx153
-rw-r--r--codemaker/inc/codemaker/options.hxx100
-rw-r--r--codemaker/inc/codemaker/typemanager.hxx185
-rw-r--r--codemaker/inc/codemaker/unotype.hxx113
-rw-r--r--codemaker/inc/makefile.mk47
-rw-r--r--codemaker/inc/pch/precompiled_codemaker.cxx31
-rw-r--r--codemaker/inc/pch/precompiled_codemaker.hxx34
-rw-r--r--codemaker/prj/build.lst11
-rw-r--r--codemaker/prj/d.lst14
-rw-r--r--codemaker/source/codemaker/codemaker.cxx191
-rw-r--r--codemaker/source/codemaker/dependencies.cxx284
-rw-r--r--codemaker/source/codemaker/exceptiontree.cxx109
-rw-r--r--codemaker/source/codemaker/global.cxx452
-rw-r--r--codemaker/source/codemaker/makefile.mk51
-rw-r--r--codemaker/source/codemaker/options.cxx101
-rw-r--r--codemaker/source/codemaker/typemanager.cxx406
-rw-r--r--codemaker/source/codemaker/unotype.cxx106
-rw-r--r--codemaker/source/commoncpp/commoncpp.cxx358
-rw-r--r--codemaker/source/commoncpp/makefile.mk42
-rw-r--r--codemaker/source/commonjava/commonjava.cxx170
-rw-r--r--codemaker/source/commonjava/makefile.mk42
-rw-r--r--codemaker/source/cppumaker/cppumaker.cxx246
-rw-r--r--codemaker/source/cppumaker/cppuoptions.cxx358
-rw-r--r--codemaker/source/cppumaker/cppuoptions.hxx54
-rw-r--r--codemaker/source/cppumaker/cpputype.cxx4507
-rw-r--r--codemaker/source/cppumaker/cpputype.hxx408
-rw-r--r--codemaker/source/cppumaker/dumputils.cxx94
-rw-r--r--codemaker/source/cppumaker/dumputils.hxx49
-rw-r--r--codemaker/source/cppumaker/includes.cxx283
-rw-r--r--codemaker/source/cppumaker/includes.hxx124
-rw-r--r--codemaker/source/cppumaker/makefile.mk65
-rw-r--r--codemaker/source/cunomaker/cunomaker.cxx188
-rw-r--r--codemaker/source/cunomaker/cunooptions.cxx333
-rw-r--r--codemaker/source/cunomaker/cunooptions.hxx54
-rw-r--r--codemaker/source/cunomaker/cunotype.cxx3535
-rw-r--r--codemaker/source/cunomaker/cunotype.hxx311
-rw-r--r--codemaker/source/cunomaker/makefile.mk61
-rw-r--r--codemaker/source/idlmaker/idlmaker.cxx188
-rw-r--r--codemaker/source/idlmaker/idloptions.cxx254
-rw-r--r--codemaker/source/idlmaker/idloptions.hxx54
-rw-r--r--codemaker/source/idlmaker/idltype.cxx1754
-rw-r--r--codemaker/source/idlmaker/idltype.hxx251
-rw-r--r--codemaker/source/idlmaker/makefile.mk62
-rw-r--r--codemaker/source/javamaker/classfile.cxx906
-rw-r--r--codemaker/source/javamaker/classfile.hxx277
-rw-r--r--codemaker/source/javamaker/javamaker.cxx249
-rw-r--r--codemaker/source/javamaker/javaoptions.cxx302
-rw-r--r--codemaker/source/javamaker/javaoptions.hxx54
-rw-r--r--codemaker/source/javamaker/javatype.cxx3377
-rw-r--r--codemaker/source/javamaker/javatype.hxx48
-rw-r--r--codemaker/source/javamaker/makefile.mk58
-rw-r--r--codemaker/test/cppumaker/makefile.mk73
-rw-r--r--codemaker/test/cppumaker/test_codemaker_cppumaker.cxx570
-rw-r--r--codemaker/test/cppumaker/types.idl717
-rw-r--r--codemaker/test/cppumaker/version.map34
-rw-r--r--codemaker/test/javamaker/Test.java559
-rw-r--r--codemaker/test/javamaker/java15/Test.java100
-rw-r--r--codemaker/test/javamaker/java15/makefile.mk41
-rw-r--r--codemaker/test/javamaker/java15/types.idl50
-rw-r--r--codemaker/test/javamaker/makefile.mk41
-rw-r--r--codemaker/test/javamaker/types.idl433
-rw-r--r--comphelper/inc/comphelper/ChainablePropertySet.hxx155
-rw-r--r--comphelper/inc/comphelper/ChainablePropertySetInfo.hxx80
-rw-r--r--comphelper/inc/comphelper/IdPropArrayHelper.hxx126
-rw-r--r--comphelper/inc/comphelper/InlineContainer.hxx152
-rw-r--r--comphelper/inc/comphelper/MasterPropertySet.hxx154
-rw-r--r--comphelper/inc/comphelper/MasterPropertySetInfo.hxx72
-rw-r--r--comphelper/inc/comphelper/PropertyInfoHash.hxx74
-rw-r--r--comphelper/inc/comphelper/SelectionMultiplex.hxx119
-rw-r--r--comphelper/inc/comphelper/SettingsHelper.hxx122
-rw-r--r--comphelper/inc/comphelper/TypeGeneration.hxx126
-rw-r--r--comphelper/inc/comphelper/accessiblecomponenthelper.hxx146
-rw-r--r--comphelper/inc/comphelper/accessiblecontexthelper.hxx378
-rw-r--r--comphelper/inc/comphelper/accessibleeventbuffer.hxx136
-rw-r--r--comphelper/inc/comphelper/accessibleeventnotifier.hxx175
-rw-r--r--comphelper/inc/comphelper/accessiblekeybindinghelper.hxx86
-rw-r--r--comphelper/inc/comphelper/accessibleselectionhelper.hxx134
-rw-r--r--comphelper/inc/comphelper/accessibletexthelper.hxx188
-rw-r--r--comphelper/inc/comphelper/accessiblewrapper.hxx414
-rw-r--r--comphelper/inc/comphelper/accimplaccess.hxx168
-rw-r--r--comphelper/inc/comphelper/anytostring.hxx52
-rw-r--r--comphelper/inc/comphelper/asyncnotification.hxx201
-rw-r--r--comphelper/inc/comphelper/attributelist.hxx79
-rw-r--r--comphelper/inc/comphelper/basicio.hxx108
-rw-r--r--comphelper/inc/comphelper/broadcasthelper.hxx72
-rw-r--r--comphelper/inc/comphelper/classids.hxx577
-rw-r--r--comphelper/inc/comphelper/comphelperdllapi.h16
-rw-r--r--comphelper/inc/comphelper/componentbase.hxx164
-rw-r--r--comphelper/inc/comphelper/componentcontext.hxx254
-rw-r--r--comphelper/inc/comphelper/componentfactory.hxx121
-rw-r--r--comphelper/inc/comphelper/componentmodule.hxx443
-rw-r--r--comphelper/inc/comphelper/composedprops.hxx129
-rw-r--r--comphelper/inc/comphelper/configurationhelper.hxx264
-rw-r--r--comphelper/inc/comphelper/container.hxx87
-rw-r--r--comphelper/inc/comphelper/containermultiplexer.hxx117
-rw-r--r--comphelper/inc/comphelper/docpasswordhelper.hxx322
-rw-r--r--comphelper/inc/comphelper/docpasswordrequest.hxx105
-rw-r--r--comphelper/inc/comphelper/documentconstants.hxx115
-rw-r--r--comphelper/inc/comphelper/documentinfo.hxx62
-rw-r--r--comphelper/inc/comphelper/embeddedobjectcontainer.hxx190
-rw-r--r--comphelper/inc/comphelper/enumhelper.hxx152
-rw-r--r--comphelper/inc/comphelper/eventattachermgr.hxx70
-rw-r--r--comphelper/inc/comphelper/evtlistenerhlp.hxx59
-rw-r--r--comphelper/inc/comphelper/evtmethodhelper.hxx44
-rw-r--r--comphelper/inc/comphelper/extract.hxx167
-rw-r--r--comphelper/inc/comphelper/fileformat.h43
-rw-r--r--comphelper/inc/comphelper/genericpropertyset.hxx43
-rw-r--r--comphelper/inc/comphelper/guarding.hxx65
-rw-r--r--comphelper/inc/comphelper/ihwrapnofilter.hxx101
-rw-r--r--comphelper/inc/comphelper/implbase_var.hxx405
-rw-r--r--comphelper/inc/comphelper/implementationreference.hxx276
-rw-r--r--comphelper/inc/comphelper/interaction.hxx172
-rw-r--r--comphelper/inc/comphelper/legacysingletonfactory.hxx75
-rw-r--r--comphelper/inc/comphelper/listenernotification.hxx310
-rw-r--r--comphelper/inc/comphelper/locale.hxx446
-rw-r--r--comphelper/inc/comphelper/logging.hxx797
-rw-r--r--comphelper/inc/comphelper/make_shared_from_uno.hxx77
-rw-r--r--comphelper/inc/comphelper/makesequence.hxx89
-rw-r--r--comphelper/inc/comphelper/mediadescriptor.hxx343
-rw-r--r--comphelper/inc/comphelper/mimeconfighelper.hxx135
-rw-r--r--comphelper/inc/comphelper/namecontainer.hxx44
-rw-r--r--comphelper/inc/comphelper/namedvaluecollection.hxx357
-rw-r--r--comphelper/inc/comphelper/numberedcollection.hxx201
-rw-r--r--comphelper/inc/comphelper/numbers.hxx76
-rw-r--r--comphelper/inc/comphelper/officeresourcebundle.hxx118
-rw-r--r--comphelper/inc/comphelper/ofopxmlhelper.hxx139
-rw-r--r--comphelper/inc/comphelper/optional.hxx92
-rw-r--r--comphelper/inc/comphelper/optionalvalue.hxx190
-rw-r--r--comphelper/inc/comphelper/oslfile2streamwrap.hxx110
-rw-r--r--comphelper/inc/comphelper/otransactedfilestream.hxx138
-rw-r--r--comphelper/inc/comphelper/processfactory.hxx100
-rw-r--r--comphelper/inc/comphelper/propagg.hxx331
-rw-r--r--comphelper/inc/comphelper/proparrhlp.hxx184
-rw-r--r--comphelper/inc/comphelper/property.hxx240
-rw-r--r--comphelper/inc/comphelper/propertybag.hxx239
-rw-r--r--comphelper/inc/comphelper/propertycontainer.hxx99
-rw-r--r--comphelper/inc/comphelper/propertycontainerhelper.hxx221
-rw-r--r--comphelper/inc/comphelper/propertysethelper.hxx104
-rw-r--r--comphelper/inc/comphelper/propertysetinfo.hxx105
-rw-r--r--comphelper/inc/comphelper/propertystatecontainer.hxx123
-rw-r--r--comphelper/inc/comphelper/propmultiplex.hxx118
-rw-r--r--comphelper/inc/comphelper/propstate.hxx114
-rw-r--r--comphelper/inc/comphelper/proxyaggregation.hxx232
-rw-r--r--comphelper/inc/comphelper/querydeep.hxx486
-rw-r--r--comphelper/inc/comphelper/regpathhelper.hxx73
-rw-r--r--comphelper/inc/comphelper/scopeguard.hxx74
-rw-r--r--comphelper/inc/comphelper/seekableinput.hxx86
-rw-r--r--comphelper/inc/comphelper/seqstream.hxx148
-rw-r--r--comphelper/inc/comphelper/sequence.hxx391
-rw-r--r--comphelper/inc/comphelper/sequenceashashmap.hxx385
-rw-r--r--comphelper/inc/comphelper/sequenceasvector.hxx247
-rw-r--r--comphelper/inc/comphelper/servicedecl.hxx461
-rw-r--r--comphelper/inc/comphelper/servicehelper.hxx107
-rw-r--r--comphelper/inc/comphelper/serviceinfohelper.hxx65
-rw-r--r--comphelper/inc/comphelper/sharedmutex.hxx94
-rw-r--r--comphelper/inc/comphelper/stillreadwriteinteraction.hxx70
-rw-r--r--comphelper/inc/comphelper/stl_types.hxx284
-rw-r--r--comphelper/inc/comphelper/stlunosequence.hxx89
-rw-r--r--comphelper/inc/comphelper/storagehelper.hxx173
-rw-r--r--comphelper/inc/comphelper/streamsection.hxx91
-rw-r--r--comphelper/inc/comphelper/string.hxx138
-rw-r--r--comphelper/inc/comphelper/synchronousdispatch.hxx76
-rw-r--r--comphelper/inc/comphelper/types.hxx182
-rw-r--r--comphelper/inc/comphelper/uieventslogger.hxx60
-rw-r--r--comphelper/inc/comphelper/uno3.hxx304
-rw-r--r--comphelper/inc/comphelper/unwrapargs.hxx152
-rw-r--r--comphelper/inc/comphelper/weak.hxx65
-rw-r--r--comphelper/inc/comphelper/weakbag.hxx95
-rw-r--r--comphelper/inc/comphelper/weakeventlistener.hxx191
-rw-r--r--comphelper/inc/makefile.mk48
-rw-r--r--comphelper/inc/pch/precompiled_comphelper.cxx31
-rw-r--r--comphelper/inc/pch/precompiled_comphelper.hxx34
-rw-r--r--comphelper/prj/build.lst13
-rw-r--r--comphelper/prj/d.lst14
-rw-r--r--comphelper/qa/complex/comphelper/Map.java514
-rw-r--r--comphelper/qa/complex/comphelper/SequenceOutputStreamUnitTest.java71
-rw-r--r--comphelper/qa/complex/comphelper/Test01.java107
-rw-r--r--comphelper/qa/complex/comphelper/TestHelper.java49
-rw-r--r--comphelper/qa/complex/comphelper_all.sce2
-rw-r--r--comphelper/qa/complex/makefile.mk83
-rw-r--r--comphelper/qa/makefile.mk56
-rw-r--r--comphelper/qa/test_string.cxx85
-rw-r--r--comphelper/qa/test_weakbag.cxx73
-rw-r--r--comphelper/qa/version.map34
-rw-r--r--comphelper/source/compare/AnyCompareFactory.cxx194
-rw-r--r--comphelper/source/compare/makefile.mk47
-rw-r--r--comphelper/source/container/IndexedPropertyValuesContainer.cxx273
-rw-r--r--comphelper/source/container/NamedPropertyValuesContainer.cxx242
-rw-r--r--comphelper/source/container/container.cxx155
-rw-r--r--comphelper/source/container/containermultiplexer.cxx205
-rw-r--r--comphelper/source/container/embeddedobjectcontainer.cxx1666
-rw-r--r--comphelper/source/container/enumerablemap.cxx1003
-rw-r--r--comphelper/source/container/enumhelper.cxx299
-rw-r--r--comphelper/source/container/makefile.mk55
-rw-r--r--comphelper/source/container/namecontainer.cxx214
-rw-r--r--comphelper/source/eventattachermgr/eventattachermgr.cxx1009
-rw-r--r--comphelper/source/eventattachermgr/makefile.mk50
-rw-r--r--comphelper/source/inc/comphelper_module.hxx46
-rw-r--r--comphelper/source/misc/SelectionMultiplex.cxx176
-rw-r--r--comphelper/source/misc/accessiblecomponenthelper.cxx223
-rw-r--r--comphelper/source/misc/accessiblecontexthelper.cxx358
-rw-r--r--comphelper/source/misc/accessibleeventbuffer.cxx113
-rw-r--r--comphelper/source/misc/accessibleeventnotifier.cxx261
-rw-r--r--comphelper/source/misc/accessiblekeybindinghelper.cxx117
-rw-r--r--comphelper/source/misc/accessibleselectionhelper.cxx194
-rw-r--r--comphelper/source/misc/accessibletexthelper.cxx916
-rw-r--r--comphelper/source/misc/accessiblewrapper.cxx686
-rw-r--r--comphelper/source/misc/accimplaccess.cxx191
-rw-r--r--comphelper/source/misc/anytostring.cxx337
-rw-r--r--comphelper/source/misc/asyncnotification.cxx283
-rw-r--r--comphelper/source/misc/comphelper_module.cxx44
-rw-r--r--comphelper/source/misc/comphelper_services.cxx82
-rw-r--r--comphelper/source/misc/componentbase.cxx77
-rw-r--r--comphelper/source/misc/componentcontext.cxx153
-rw-r--r--comphelper/source/misc/componentmodule.cxx240
-rw-r--r--comphelper/source/misc/configurationhelper.cxx210
-rw-r--r--comphelper/source/misc/docpasswordhelper.cxx382
-rw-r--r--comphelper/source/misc/docpasswordrequest.cxx196
-rw-r--r--comphelper/source/misc/documentinfo.cxx200
-rw-r--r--comphelper/source/misc/documentiologring.cxx182
-rw-r--r--comphelper/source/misc/documentiologring.hxx90
-rw-r--r--comphelper/source/misc/evtlistenerhlp.cxx54
-rw-r--r--comphelper/source/misc/evtmethodhelper.cxx79
-rw-r--r--comphelper/source/misc/ihwrapnofilter.cxx120
-rw-r--r--comphelper/source/misc/instancelocker.cxx515
-rw-r--r--comphelper/source/misc/instancelocker.hxx135
-rw-r--r--comphelper/source/misc/interaction.cxx101
-rw-r--r--comphelper/source/misc/legacysingletonfactory.cxx200
-rw-r--r--comphelper/source/misc/listenernotification.cxx129
-rw-r--r--comphelper/source/misc/locale.cxx685
-rw-r--r--comphelper/source/misc/logging.cxx408
-rw-r--r--comphelper/source/misc/makefile.mk101
-rw-r--r--comphelper/source/misc/mediadescriptor.cxx870
-rw-r--r--comphelper/source/misc/mimeconfighelper.cxx807
-rw-r--r--comphelper/source/misc/namedvaluecollection.cxx340
-rw-r--r--comphelper/source/misc/numberedcollection.cxx278
-rw-r--r--comphelper/source/misc/numbers.cxx152
-rw-r--r--comphelper/source/misc/officeresourcebundle.cxx243
-rw-r--r--comphelper/source/misc/officerestartmanager.cxx213
-rw-r--r--comphelper/source/misc/officerestartmanager.hxx93
-rw-r--r--comphelper/source/misc/proxyaggregation.cxx278
-rw-r--r--comphelper/source/misc/querydeep.cxx78
-rw-r--r--comphelper/source/misc/regpathhelper.cxx234
-rw-r--r--comphelper/source/misc/scopeguard.cxx73
-rw-r--r--comphelper/source/misc/sequence.cxx105
-rw-r--r--comphelper/source/misc/sequenceashashmap.cxx403
-rw-r--r--comphelper/source/misc/servicedecl.cxx198
-rw-r--r--comphelper/source/misc/serviceinfohelper.cxx114
-rw-r--r--comphelper/source/misc/sharedmutex.cxx65
-rw-r--r--comphelper/source/misc/stillreadwriteinteraction.cxx141
-rw-r--r--comphelper/source/misc/storagehelper.cxx489
-rw-r--r--comphelper/source/misc/string.cxx128
-rw-r--r--comphelper/source/misc/synchronousdispatch.cxx104
-rw-r--r--comphelper/source/misc/types.cxx479
-rw-r--r--comphelper/source/misc/uieventslogger.cxx689
-rw-r--r--comphelper/source/misc/weak.cxx78
-rw-r--r--comphelper/source/misc/weakeventlistener.cxx95
-rw-r--r--comphelper/source/officeinstdir/makefile.mk50
-rw-r--r--comphelper/source/officeinstdir/officeinstallationdirectories.cxx353
-rw-r--r--comphelper/source/officeinstdir/officeinstallationdirectories.hxx110
-rw-r--r--comphelper/source/processfactory/componentfactory.cxx83
-rw-r--r--comphelper/source/processfactory/makefile.mk52
-rw-r--r--comphelper/source/processfactory/processfactory.cxx129
-rw-r--r--comphelper/source/property/ChainablePropertySet.cxx323
-rw-r--r--comphelper/source/property/ChainablePropertySetInfo.cxx145
-rw-r--r--comphelper/source/property/MasterPropertySet.cxx506
-rw-r--r--comphelper/source/property/MasterPropertySetInfo.cxx171
-rw-r--r--comphelper/source/property/TypeGeneration.cxx234
-rw-r--r--comphelper/source/property/composedprops.cxx359
-rw-r--r--comphelper/source/property/genericpropertyset.cxx303
-rw-r--r--comphelper/source/property/makefile.mk65
-rw-r--r--comphelper/source/property/opropertybag.cxx583
-rw-r--r--comphelper/source/property/opropertybag.hxx245
-rw-r--r--comphelper/source/property/propagg.cxx1029
-rw-r--r--comphelper/source/property/property.cxx247
-rw-r--r--comphelper/source/property/propertybag.cxx223
-rw-r--r--comphelper/source/property/propertycontainer.cxx107
-rw-r--r--comphelper/source/property/propertycontainerhelper.cxx554
-rw-r--r--comphelper/source/property/propertysethelper.cxx331
-rw-r--r--comphelper/source/property/propertysetinfo.cxx217
-rw-r--r--comphelper/source/property/propertystatecontainer.cxx341
-rw-r--r--comphelper/source/property/propmultiplex.cxx184
-rw-r--r--comphelper/source/property/propstate.cxx263
-rw-r--r--comphelper/source/streaming/basicio.cxx176
-rw-r--r--comphelper/source/streaming/makefile.mk54
-rw-r--r--comphelper/source/streaming/memorystream.cxx250
-rw-r--r--comphelper/source/streaming/oslfile2streamwrap.cxx200
-rw-r--r--comphelper/source/streaming/otransactedfilestream.cxx826
-rw-r--r--comphelper/source/streaming/seekableinput.cxx269
-rw-r--r--comphelper/source/streaming/seqinputstreamserv.cxx254
-rw-r--r--comphelper/source/streaming/seqoutputstreamserv.cxx175
-rw-r--r--comphelper/source/streaming/seqstream.cxx246
-rw-r--r--comphelper/source/streaming/streamsection.cxx124
-rw-r--r--comphelper/source/xml/attributelist.cxx181
-rw-r--r--comphelper/source/xml/makefile.mk48
-rw-r--r--comphelper/source/xml/ofopxmlhelper.cxx457
-rw-r--r--comphelper/test/uno_iterators/makefile.mk48
-rw-r--r--comphelper/test/uno_iterators/uno_iterators.cxx221
-rw-r--r--comphelper/util/exports.dxp3
-rw-r--r--comphelper/util/makefile.mk70
-rw-r--r--comphelper/util/makefile.pmk35
-rw-r--r--comphelper/version.mk46
-rwxr-xr-xconfig.guess1502
-rwxr-xr-xconfig.sub1714
-rwxr-xr-xconfigure.cmd7
-rw-r--r--configure.in8003
-rw-r--r--cosv/inc/cosv/bstream.hxx152
-rw-r--r--cosv/inc/cosv/comdline.hxx72
-rw-r--r--cosv/inc/cosv/comfunc.hxx128
-rw-r--r--cosv/inc/cosv/commandline.hxx183
-rw-r--r--cosv/inc/cosv/csv_env.hxx157
-rw-r--r--cosv/inc/cosv/csv_ostream.hxx136
-rw-r--r--cosv/inc/cosv/csv_precomp.h49
-rw-r--r--cosv/inc/cosv/datetime.hxx86
-rw-r--r--cosv/inc/cosv/dirchain.hxx182
-rw-r--r--cosv/inc/cosv/file.hxx139
-rw-r--r--cosv/inc/cosv/mbstream.hxx95
-rw-r--r--cosv/inc/cosv/openclose.hxx146
-rw-r--r--cosv/inc/cosv/persist.hxx107
-rw-r--r--cosv/inc/cosv/ploc.hxx132
-rw-r--r--cosv/inc/cosv/ploc_dir.hxx120
-rw-r--r--cosv/inc/cosv/plocroot.hxx82
-rw-r--r--cosv/inc/cosv/std_outp.hxx138
-rw-r--r--cosv/inc/cosv/str_types.hxx97
-rw-r--r--cosv/inc/cosv/streamstr.hxx394
-rw-r--r--cosv/inc/cosv/string.hxx582
-rw-r--r--cosv/inc/cosv/stringdata.hxx137
-rw-r--r--cosv/inc/cosv/tpl/dyn.hxx241
-rw-r--r--cosv/inc/cosv/tpl/funcall.hxx310
-rw-r--r--cosv/inc/cosv/tpl/processor.hxx186
-rw-r--r--cosv/inc/cosv/tpl/range.hxx194
-rw-r--r--cosv/inc/cosv/tpl/swelist.hxx371
-rw-r--r--cosv/inc/cosv/tpl/tpltools.hxx231
-rw-r--r--cosv/inc/cosv/tpl/vvector.hxx542
-rw-r--r--cosv/inc/cosv/x.hxx73
-rw-r--r--cosv/prj/build.lst16
-rw-r--r--cosv/prj/d.lst8
-rw-r--r--cosv/source/comphelp/badcast.cxx47
-rw-r--r--cosv/source/comphelp/makefile.mk55
-rw-r--r--cosv/source/fullcpp.mk57
-rw-r--r--cosv/source/inc/precomp.h38
-rw-r--r--cosv/source/service/comdline.cxx59
-rw-r--r--cosv/source/service/comfunc.cxx157
-rw-r--r--cosv/source/service/commandline.cxx345
-rw-r--r--cosv/source/service/csv_ostream.cxx94
-rw-r--r--cosv/source/service/datetime.cxx86
-rw-r--r--cosv/source/service/makefile.mk59
-rw-r--r--cosv/source/service/std_outp.cxx83
-rw-r--r--cosv/source/storage/dirchain.cxx158
-rw-r--r--cosv/source/storage/file.cxx244
-rw-r--r--cosv/source/storage/makefile.mk69
-rw-r--r--cosv/source/storage/mbstream.cxx121
-rw-r--r--cosv/source/storage/persist.cxx115
-rw-r--r--cosv/source/storage/ploc.cxx160
-rw-r--r--cosv/source/storage/ploc_dir.cxx366
-rw-r--r--cosv/source/storage/plocroot.cxx527
-rw-r--r--cosv/source/strings/makefile.mk58
-rw-r--r--cosv/source/strings/str_types.cxx46
-rw-r--r--cosv/source/strings/streamstr.cxx984
-rw-r--r--cosv/source/strings/string.cxx417
-rw-r--r--cosv/source/unittest/file_ut.cxx123
-rw-r--r--cosv/source/unittest/makefile.mk80
-rw-r--r--cosv/source/unittest/string_ut.cxx76
-rw-r--r--cosv/source/unittest/ut.hxx55
-rw-r--r--cosv/source/unittest/ut_main.cxx49
-rw-r--r--cosv/util/makefile.mk58
-rw-r--r--cppcanvas/inc/cppcanvas/basegfxfactory.hxx107
-rw-r--r--cppcanvas/inc/cppcanvas/bitmap.hxx83
-rw-r--r--cppcanvas/inc/cppcanvas/bitmapcanvas.hxx69
-rw-r--r--cppcanvas/inc/cppcanvas/canvas.hxx119
-rw-r--r--cppcanvas/inc/cppcanvas/canvasgraphic.hxx173
-rw-r--r--cppcanvas/inc/cppcanvas/color.hxx98
-rw-r--r--cppcanvas/inc/cppcanvas/customsprite.hxx56
-rw-r--r--cppcanvas/inc/cppcanvas/font.hxx68
-rw-r--r--cppcanvas/inc/cppcanvas/polypolygon.hxx96
-rw-r--r--cppcanvas/inc/cppcanvas/renderer.hxx153
-rw-r--r--cppcanvas/inc/cppcanvas/sprite.hxx119
-rw-r--r--cppcanvas/inc/cppcanvas/spritecanvas.hxx84
-rw-r--r--cppcanvas/inc/cppcanvas/text.hxx58
-rw-r--r--cppcanvas/inc/cppcanvas/vclfactory.hxx150
-rw-r--r--cppcanvas/inc/makefile.mk47
-rw-r--r--cppcanvas/inc/pch/precompiled_cppcanvas.cxx31
-rw-r--r--cppcanvas/inc/pch/precompiled_cppcanvas.hxx34
-rw-r--r--cppcanvas/prj/build.lst8
-rw-r--r--cppcanvas/prj/d.lst20
-rw-r--r--cppcanvas/source/inc/action.hxx165
-rw-r--r--cppcanvas/source/inc/canvasgraphichelper.hxx89
-rw-r--r--cppcanvas/source/inc/implrenderer.hxx327
-rw-r--r--cppcanvas/source/inc/tools.hxx59
-rw-r--r--cppcanvas/source/mtfrenderer/bitmapaction.cxx241
-rw-r--r--cppcanvas/source/mtfrenderer/bitmapaction.hxx84
-rw-r--r--cppcanvas/source/mtfrenderer/cachedprimitivebase.cxx96
-rw-r--r--cppcanvas/source/mtfrenderer/cachedprimitivebase.hxx98
-rw-r--r--cppcanvas/source/mtfrenderer/emfplus.cxx1617
-rw-r--r--cppcanvas/source/mtfrenderer/implrenderer.cxx3212
-rw-r--r--cppcanvas/source/mtfrenderer/lineaction.cxx170
-rw-r--r--cppcanvas/source/mtfrenderer/lineaction.hxx76
-rw-r--r--cppcanvas/source/mtfrenderer/makefile.mk58
-rw-r--r--cppcanvas/source/mtfrenderer/mtftools.cxx696
-rw-r--r--cppcanvas/source/mtfrenderer/mtftools.hxx273
-rw-r--r--cppcanvas/source/mtfrenderer/outdevstate.hxx136
-rw-r--r--cppcanvas/source/mtfrenderer/pointaction.cxx190
-rw-r--r--cppcanvas/source/mtfrenderer/pointaction.hxx81
-rw-r--r--cppcanvas/source/mtfrenderer/polypolyaction.cxx541
-rw-r--r--cppcanvas/source/mtfrenderer/polypolyaction.hxx104
-rw-r--r--cppcanvas/source/mtfrenderer/textaction.cxx2318
-rw-r--r--cppcanvas/source/mtfrenderer/textaction.hxx105
-rw-r--r--cppcanvas/source/mtfrenderer/transparencygroupaction.cxx595
-rw-r--r--cppcanvas/source/mtfrenderer/transparencygroupaction.hxx143
-rw-r--r--cppcanvas/source/tools/canvasgraphichelper.cxx154
-rw-r--r--cppcanvas/source/tools/makefile.mk50
-rw-r--r--cppcanvas/source/tools/tools.cxx65
-rw-r--r--cppcanvas/source/uno/exports.dxp3
-rw-r--r--cppcanvas/source/uno/exports.map9
-rw-r--r--cppcanvas/source/uno/makefile.mk62
-rw-r--r--cppcanvas/source/uno/uno_mtfrenderer.cxx83
-rw-r--r--cppcanvas/source/uno/uno_mtfrenderer.hxx63
-rw-r--r--cppcanvas/source/wrapper/basegfxfactory.cxx167
-rw-r--r--cppcanvas/source/wrapper/implbitmap.cxx129
-rw-r--r--cppcanvas/source/wrapper/implbitmap.hxx81
-rw-r--r--cppcanvas/source/wrapper/implbitmapcanvas.cxx76
-rw-r--r--cppcanvas/source/wrapper/implbitmapcanvas.hxx73
-rw-r--r--cppcanvas/source/wrapper/implcanvas.cxx144
-rw-r--r--cppcanvas/source/wrapper/implcanvas.hxx107
-rw-r--r--cppcanvas/source/wrapper/implcolor.cxx71
-rw-r--r--cppcanvas/source/wrapper/implcolor.hxx65
-rw-r--r--cppcanvas/source/wrapper/implcustomsprite.cxx85
-rw-r--r--cppcanvas/source/wrapper/implcustomsprite.hxx72
-rw-r--r--cppcanvas/source/wrapper/implfont.cxx94
-rw-r--r--cppcanvas/source/wrapper/implfont.hxx82
-rw-r--r--cppcanvas/source/wrapper/implpolypolygon.cxx204
-rw-r--r--cppcanvas/source/wrapper/implpolypolygon.hxx96
-rw-r--r--cppcanvas/source/wrapper/implsprite.cxx239
-rw-r--r--cppcanvas/source/wrapper/implsprite.hxx96
-rw-r--r--cppcanvas/source/wrapper/implspritecanvas.cxx162
-rw-r--r--cppcanvas/source/wrapper/implspritecanvas.hxx109
-rw-r--r--cppcanvas/source/wrapper/impltext.cxx98
-rw-r--r--cppcanvas/source/wrapper/impltext.hxx73
-rw-r--r--cppcanvas/source/wrapper/makefile.mk60
-rw-r--r--cppcanvas/source/wrapper/vclfactory.cxx366
-rw-r--r--cppcanvas/util/cppcanvas.flt4
-rw-r--r--cppcanvas/util/makefile.mk70
-rw-r--r--cppu/inc/com/sun/star/uno/Any.h386
-rw-r--r--cppu/inc/com/sun/star/uno/Any.hxx583
-rw-r--r--cppu/inc/com/sun/star/uno/Reference.h536
-rw-r--r--cppu/inc/com/sun/star/uno/Reference.hxx432
-rw-r--r--cppu/inc/com/sun/star/uno/Sequence.h291
-rw-r--r--cppu/inc/com/sun/star/uno/Sequence.hxx310
-rw-r--r--cppu/inc/com/sun/star/uno/Type.h461
-rw-r--r--cppu/inc/com/sun/star/uno/Type.hxx330
-rw-r--r--cppu/inc/com/sun/star/uno/genfunc.h72
-rw-r--r--cppu/inc/com/sun/star/uno/genfunc.hxx91
-rw-r--r--cppu/inc/cppu/Enterable.hxx117
-rw-r--r--cppu/inc/cppu/EnvDcp.hxx78
-rw-r--r--cppu/inc/cppu/EnvGuards.hxx116
-rw-r--r--cppu/inc/cppu/FreeReference.hxx169
-rw-r--r--cppu/inc/cppu/Map.hxx116
-rw-r--r--cppu/inc/cppu/Shield.hxx93
-rw-r--r--cppu/inc/cppu/helper/purpenv/Environment.hxx49
-rw-r--r--cppu/inc/cppu/helper/purpenv/Mapping.hxx71
-rw-r--r--cppu/inc/cppu/macros.hxx67
-rw-r--r--cppu/inc/cppu/unotype.hxx380
-rw-r--r--cppu/inc/makefile.mk48
-rw-r--r--cppu/inc/pch/precompiled_cppu.cxx31
-rw-r--r--cppu/inc/pch/precompiled_cppu.hxx34
-rw-r--r--cppu/inc/typelib/typeclass.h107
-rw-r--r--cppu/inc/typelib/typedescription.h1163
-rw-r--r--cppu/inc/typelib/typedescription.hxx227
-rw-r--r--cppu/inc/typelib/uik.h56
-rw-r--r--cppu/inc/uno/Enterable.h115
-rw-r--r--cppu/inc/uno/EnvDcp.h66
-rw-r--r--cppu/inc/uno/any2.h181
-rw-r--r--cppu/inc/uno/cuno.h52
-rw-r--r--cppu/inc/uno/current_context.h71
-rw-r--r--cppu/inc/uno/current_context.hxx130
-rw-r--r--cppu/inc/uno/data.h260
-rw-r--r--cppu/inc/uno/dispatcher.h100
-rw-r--r--cppu/inc/uno/dispatcher.hxx177
-rw-r--r--cppu/inc/uno/environment.h388
-rw-r--r--cppu/inc/uno/environment.hxx281
-rw-r--r--cppu/inc/uno/lbnames.h61
-rw-r--r--cppu/inc/uno/mapping.h206
-rw-r--r--cppu/inc/uno/mapping.hxx357
-rw-r--r--cppu/inc/uno/sequence2.h190
-rw-r--r--cppu/inc/uno/threadpool.h192
-rw-r--r--cppu/prj/build.lst12
-rw-r--r--cppu/prj/d.lst74
-rw-r--r--cppu/qa/makefile.mk96
-rw-r--r--cppu/qa/test_any.cxx2333
-rw-r--r--cppu/qa/test_recursion.cxx60
-rw-r--r--cppu/qa/test_reference.cxx159
-rw-r--r--cppu/qa/test_unotype.cxx815
-rw-r--r--cppu/qa/types.idl63
-rw-r--r--cppu/qa/version.map34
-rw-r--r--cppu/source/AffineBridge/AffineBridge.cxx366
-rw-r--r--cppu/source/AffineBridge/makefile.mk44
-rw-r--r--cppu/source/LogBridge/LogBridge.cxx280
-rwxr-xr-xcppu/source/LogBridge/makefile.mk44
-rw-r--r--cppu/source/UnsafeBridge/UnsafeBridge.cxx165
-rw-r--r--cppu/source/UnsafeBridge/makefile.mk44
-rw-r--r--cppu/source/cppu/cppu_opt.cxx84
-rw-r--r--cppu/source/cppu/makefile.mk45
-rw-r--r--cppu/source/helper/purpenv/Proxy.hxx92
-rw-r--r--cppu/source/helper/purpenv/export.mk19
-rw-r--r--cppu/source/helper/purpenv/helper_purpenv_Environment.cxx540
-rw-r--r--cppu/source/helper/purpenv/helper_purpenv_Mapping.cxx236
-rw-r--r--cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx532
-rw-r--r--cppu/source/helper/purpenv/makefile.mk46
-rw-r--r--cppu/source/threadpool/current.cxx300
-rw-r--r--cppu/source/threadpool/current.hxx51
-rw-r--r--cppu/source/threadpool/jobqueue.cxx195
-rw-r--r--cppu/source/threadpool/jobqueue.hxx88
-rw-r--r--cppu/source/threadpool/makefile.mk49
-rw-r--r--cppu/source/threadpool/thread.cxx222
-rw-r--r--cppu/source/threadpool/thread.hxx93
-rw-r--r--cppu/source/threadpool/threadident.cxx138
-rw-r--r--cppu/source/threadpool/threadpool.cxx509
-rw-r--r--cppu/source/threadpool/threadpool.hxx143
-rw-r--r--cppu/source/typelib/makefile.mk45
-rw-r--r--cppu/source/typelib/static_types.cxx659
-rw-r--r--cppu/source/typelib/typelib.cxx2678
-rw-r--r--cppu/source/uno/EnvDcp.c52
-rw-r--r--cppu/source/uno/EnvStack.cxx389
-rw-r--r--cppu/source/uno/IdentityMapping.cxx109
-rw-r--r--cppu/source/uno/IdentityMapping.hxx42
-rw-r--r--cppu/source/uno/any.cxx153
-rw-r--r--cppu/source/uno/assign.hxx638
-rw-r--r--cppu/source/uno/cascade_mapping.cxx339
-rw-r--r--cppu/source/uno/cascade_mapping.hxx44
-rw-r--r--cppu/source/uno/constr.hxx270
-rw-r--r--cppu/source/uno/copy.hxx889
-rw-r--r--cppu/source/uno/data.cxx622
-rw-r--r--cppu/source/uno/destr.hxx441
-rw-r--r--cppu/source/uno/env_subst.cxx57
-rw-r--r--cppu/source/uno/env_subst.hxx44
-rw-r--r--cppu/source/uno/eq.hxx671
-rw-r--r--cppu/source/uno/lbenv.cxx1189
-rw-r--r--cppu/source/uno/lbmap.cxx694
-rw-r--r--cppu/source/uno/loadmodule.cxx58
-rw-r--r--cppu/source/uno/loadmodule.hxx54
-rw-r--r--cppu/source/uno/makefile.mk55
-rw-r--r--cppu/source/uno/prim.hxx203
-rw-r--r--cppu/source/uno/sequence.cxx1019
-rwxr-xr-xcppu/util/cppu.map127
-rw-r--r--cppu/util/empty.def6
-rw-r--r--cppu/util/extra.mk89
-rw-r--r--cppu/util/makefile.mk105
-rw-r--r--cppu/util/makefile.pmk32
-rw-r--r--cppu/util/purpenvhelper3MSC.map8
-rw-r--r--cppu/util/target.pmk63
-rw-r--r--cppu/util/uno_purpenvhelperC52.map9
-rw-r--r--cppu/util/uno_purpenvhelpergcc3.map8
-rw-r--r--cppu/util/uno_purpenvhelperwntgcc.map8
-rw-r--r--cppu/util/unsafe_os2.map7
-rw-r--r--cppuhelper/inc/cppuhelper/access_control.hxx127
-rw-r--r--cppuhelper/inc/cppuhelper/basemutex.hxx52
-rw-r--r--cppuhelper/inc/cppuhelper/bootstrap.hxx226
-rw-r--r--cppuhelper/inc/cppuhelper/compbase.hxx118
-rw-r--r--cppuhelper/inc/cppuhelper/compbase1.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase10.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase11.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase12.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase2.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase3.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase4.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase5.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase6.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase7.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase8.hxx140
-rw-r--r--cppuhelper/inc/cppuhelper/compbase9.hxx139
-rw-r--r--cppuhelper/inc/cppuhelper/compbase_ex.hxx179
-rw-r--r--cppuhelper/inc/cppuhelper/component.hxx121
-rw-r--r--cppuhelper/inc/cppuhelper/component_context.hxx99
-rw-r--r--cppuhelper/inc/cppuhelper/exc_hlp.hxx100
-rw-r--r--cppuhelper/inc/cppuhelper/factory.hxx278
-rw-r--r--cppuhelper/inc/cppuhelper/findsofficepath.h48
-rw-r--r--cppuhelper/inc/cppuhelper/implbase.hxx300
-rw-r--r--cppuhelper/inc/cppuhelper/implbase1.hxx302
-rw-r--r--cppuhelper/inc/cppuhelper/implbase10.hxx303
-rw-r--r--cppuhelper/inc/cppuhelper/implbase11.hxx304
-rw-r--r--cppuhelper/inc/cppuhelper/implbase12.hxx305
-rw-r--r--cppuhelper/inc/cppuhelper/implbase2.hxx294
-rw-r--r--cppuhelper/inc/cppuhelper/implbase3.hxx296
-rw-r--r--cppuhelper/inc/cppuhelper/implbase4.hxx297
-rw-r--r--cppuhelper/inc/cppuhelper/implbase5.hxx298
-rw-r--r--cppuhelper/inc/cppuhelper/implbase6.hxx299
-rw-r--r--cppuhelper/inc/cppuhelper/implbase7.hxx301
-rw-r--r--cppuhelper/inc/cppuhelper/implbase8.hxx301
-rw-r--r--cppuhelper/inc/cppuhelper/implbase9.hxx303
-rw-r--r--cppuhelper/inc/cppuhelper/implbase_ex.hxx177
-rw-r--r--cppuhelper/inc/cppuhelper/implbase_ex_post.hxx234
-rw-r--r--cppuhelper/inc/cppuhelper/implbase_ex_pre.hxx39
-rw-r--r--cppuhelper/inc/cppuhelper/implementationentry.hxx114
-rw-r--r--cppuhelper/inc/cppuhelper/interfacecontainer.h619
-rw-r--r--cppuhelper/inc/cppuhelper/interfacecontainer.hxx204
-rw-r--r--cppuhelper/inc/cppuhelper/propertysetmixin.hxx491
-rw-r--r--cppuhelper/inc/cppuhelper/propshlp.hxx642
-rw-r--r--cppuhelper/inc/cppuhelper/proptypehlp.h79
-rw-r--r--cppuhelper/inc/cppuhelper/proptypehlp.hxx532
-rw-r--r--cppuhelper/inc/cppuhelper/queryinterface.hxx543
-rw-r--r--cppuhelper/inc/cppuhelper/servicefactory.hxx124
-rw-r--r--cppuhelper/inc/cppuhelper/shlib.hxx85
-rw-r--r--cppuhelper/inc/cppuhelper/stdidlclass.hxx392
-rw-r--r--cppuhelper/inc/cppuhelper/typeprovider.hxx245
-rw-r--r--cppuhelper/inc/cppuhelper/unourl.hxx195
-rw-r--r--cppuhelper/inc/cppuhelper/weak.hxx172
-rw-r--r--cppuhelper/inc/cppuhelper/weakagg.hxx114
-rw-r--r--cppuhelper/inc/cppuhelper/weakref.hxx172
-rw-r--r--cppuhelper/inc/makefile.mk47
-rw-r--r--cppuhelper/inc/pch/precompiled_cppuhelper.cxx31
-rw-r--r--cppuhelper/inc/pch/precompiled_cppuhelper.hxx34
-rw-r--r--cppuhelper/prj/build.lst6
-rw-r--r--cppuhelper/prj/d.lst74
-rw-r--r--cppuhelper/qa/ifcontainer/cppu_ifcontainer.cxx286
-rw-r--r--cppuhelper/qa/ifcontainer/export.map7
-rw-r--r--cppuhelper/qa/ifcontainer/makefile.mk61
-rw-r--r--cppuhelper/qa/propertysetmixin/JavaSupplier.java322
-rw-r--r--cppuhelper/qa/propertysetmixin/comp_propertysetmixin.cxx439
-rw-r--r--cppuhelper/qa/propertysetmixin/makefile.mk125
-rw-r--r--cppuhelper/qa/propertysetmixin/manifest2
-rw-r--r--cppuhelper/qa/propertysetmixin/test.map34
-rw-r--r--cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx683
-rw-r--r--cppuhelper/qa/propertysetmixin/types.idl85
-rw-r--r--cppuhelper/qa/sce/test_unourl.sce1
-rw-r--r--cppuhelper/qa/unourl/cppu_unourl.cxx483
-rw-r--r--cppuhelper/qa/unourl/export.map7
-rw-r--r--cppuhelper/qa/unourl/makefile.mk61
-rw-r--r--cppuhelper/qa/weak/makefile.mk53
-rw-r--r--cppuhelper/qa/weak/test_weak.cxx112
-rw-r--r--cppuhelper/qa/weak/version.map34
-rw-r--r--cppuhelper/source/access_control.cxx152
-rw-r--r--cppuhelper/source/bootstrap.cxx667
-rwxr-xr-xcppuhelper/source/cc5_solaris_sparc.map389
-rw-r--r--cppuhelper/source/component.cxx250
-rw-r--r--cppuhelper/source/component_context.cxx902
-rw-r--r--cppuhelper/source/exc_thrower.cxx301
-rw-r--r--cppuhelper/source/factory.cxx1138
-rw-r--r--cppuhelper/source/findsofficepath.c208
-rw-r--r--cppuhelper/source/gcc3.map384
-rw-r--r--cppuhelper/source/gcc3os2.map377
-rw-r--r--cppuhelper/source/implbase.cxx474
-rw-r--r--cppuhelper/source/implbase_ex.cxx472
-rw-r--r--cppuhelper/source/implementationentry.cxx105
-rw-r--r--cppuhelper/source/interfacecontainer.cxx730
-rw-r--r--cppuhelper/source/macro_expander.cxx201
-rw-r--r--cppuhelper/source/macro_expander.hxx63
-rw-r--r--cppuhelper/source/makefile.mk192
-rw-r--r--cppuhelper/source/msvc_win32_intel.map280
-rw-r--r--cppuhelper/source/propertysetmixin.cxx1431
-rw-r--r--cppuhelper/source/propshlp.cxx1243
-rw-r--r--cppuhelper/source/servicefactory.cxx663
-rw-r--r--cppuhelper/source/shlib.cxx612
-rw-r--r--cppuhelper/source/stdidlclass.cxx262
-rw-r--r--cppuhelper/source/tdmgr.cxx764
-rw-r--r--cppuhelper/source/typeprovider.cxx328
-rw-r--r--cppuhelper/source/unorc30
-rw-r--r--cppuhelper/source/unourl.cxx301
-rw-r--r--cppuhelper/source/weak.cxx541
-rw-r--r--cppuhelper/test/bootstrap/TestEnv.cxx130
-rw-r--r--cppuhelper/test/bootstrap/TestEnv.def8
-rw-r--r--cppuhelper/test/bootstrap/bootstrap.test.cxx323
-rw-r--r--cppuhelper/test/bootstrap/makefile.mk61
-rw-r--r--cppuhelper/test/cfg_data/instance/uno/components.xml76
-rw-r--r--cppuhelper/test/cfg_data/template/uno/components.xml24
-rw-r--r--cppuhelper/test/cfg_test.cxx306
-rw-r--r--cppuhelper/test/helpertest.idl84
-rw-r--r--cppuhelper/test/loader/loader.test.cxx208
-rw-r--r--cppuhelper/test/loader/makefile.mk59
-rw-r--r--cppuhelper/test/makefile.mk168
-rw-r--r--cppuhelper/test/testcmp/TestComponent.cxx250
-rw-r--r--cppuhelper/test/testcmp/TestComponent.hxx59
-rwxr-xr-xcppuhelper/test/testcmp/TestComponent.uno.def11
-rw-r--r--cppuhelper/test/testcmp/makefile.mk49
-rw-r--r--cppuhelper/test/testcontainer.cxx156
-rw-r--r--cppuhelper/test/testdefaultbootstrapping.cxx87
-rw-r--r--cppuhelper/test/testdefaultbootstrapping.pl277
-rw-r--r--cppuhelper/test/testhelper.cxx107
-rw-r--r--cppuhelper/test/testhelper.hxx34
-rw-r--r--cppuhelper/test/testidlclass.cxx230
-rw-r--r--cppuhelper/test/testimplhelper.cxx583
-rw-r--r--cppuhelper/test/testlib/UNO.pm68
-rwxr-xr-xcppuhelper/test/testlib/defbootstrap.map8
-rw-r--r--cppuhelper/test/testlib/defbootstrap_lib.cxx120
-rwxr-xr-xcppuhelper/test/testlib/makefile.mk103
-rw-r--r--cppuhelper/test/testpropshlp.cxx1184
-rw-r--r--cppuhelper/test/testproptyphlp.cxx87
-rw-r--r--cppuhelper/unotypes/cppuhelper/detail/XExceptionThrower.idl47
-rw-r--r--cppuhelper/unotypes/makefile.mk52
-rw-r--r--cppunit/aix.patch21
-rw-r--r--cppunit/ldflags.patch10
-rw-r--r--cppunit/makefile.mk196
-rw-r--r--cppunit/ooo-DllPlugInTester.mk50
-rw-r--r--cppunit/ooo-cppunit_dll.mk100
-rw-r--r--cppunit/prj/build.lst2
-rw-r--r--cppunit/prj/d.lst35
-rw-r--r--cppunit/solarisfinite.patch14
-rw-r--r--cppunit/warnings.patch22
-rw-r--r--cppunit/windows.patch12
-rw-r--r--cpputools/prj/build.lst8
-rw-r--r--cpputools/prj/d.lst12
-rwxr-xr-xcpputools/source/regcomplazy/makefile.mk54
-rw-r--r--cpputools/source/regcomplazy/regcomplazy.cxx285
-rw-r--r--cpputools/source/registercomponent/makefile.mk75
-rw-r--r--cpputools/source/registercomponent/registercomponent.cxx848
-rw-r--r--cpputools/source/regsingleton/makefile.mk79
-rw-r--r--cpputools/source/regsingleton/regsingleton.cxx176
-rw-r--r--cpputools/source/sp2bv/makefile.mk56
-rw-r--r--cpputools/source/sp2bv/readme.txt10
-rw-r--r--cpputools/source/sp2bv/sp2bv.cxx143
-rw-r--r--cpputools/source/unoexe/makefile.mk91
-rw-r--r--cpputools/source/unoexe/unoexe.cxx901
-rwxr-xr-xcrashrep/prj/build.lst5
-rwxr-xr-xcrashrep/prj/d.lst3
-rw-r--r--crashrep/source/all/crashrep.ulf220
-rw-r--r--crashrep/source/all/makefile.mk49
-rw-r--r--crashrep/source/unx/main.cxx1125
-rwxr-xr-xcrashrep/source/unx/makefile.mk74
-rw-r--r--crashrep/source/win32/base64.cpp86
-rw-r--r--crashrep/source/win32/base64.h47
-rwxr-xr-xcrashrep/source/win32/ctrylnglist.txt29
-rwxr-xr-xcrashrep/source/win32/makefile.mk89
-rwxr-xr-xcrashrep/source/win32/rcfooter.txt1
-rwxr-xr-xcrashrep/source/win32/rcheader.txt92
-rwxr-xr-xcrashrep/source/win32/rctemplate.txt192
-rw-r--r--crashrep/source/win32/resource.h123
-rw-r--r--crashrep/source/win32/soreport.cpp2984
-rw-r--r--cui/inc/makefile.mk48
-rw-r--r--cui/inc/pch/precompiled_cui.cxx31
-rw-r--r--cui/inc/pch/precompiled_cui.hxx964
-rw-r--r--cui/prj/build.lst9
-rwxr-xr-xcui/prj/d.lst8
-rw-r--r--cui/source/customize/acccfg.cxx1717
-rw-r--r--cui/source/customize/acccfg.hrc75
-rw-r--r--cui/source/customize/acccfg.src357
-rw-r--r--cui/source/customize/cfg.cxx6049
-rw-r--r--cui/source/customize/cfg.hrc105
-rw-r--r--cui/source/customize/cfg.src872
-rw-r--r--cui/source/customize/cfgutil.cxx1801
-rw-r--r--cui/source/customize/eventdlg.cxx249
-rw-r--r--cui/source/customize/eventdlg.hrc43
-rw-r--r--cui/source/customize/eventdlg.hxx80
-rw-r--r--cui/source/customize/eventdlg.src111
-rw-r--r--cui/source/customize/macropg.cxx1057
-rw-r--r--cui/source/customize/macropg.hrc101
-rw-r--r--cui/source/customize/macropg.src485
-rw-r--r--cui/source/customize/macropg_impl.hxx76
-rw-r--r--cui/source/customize/makefile.mk63
-rw-r--r--cui/source/customize/selector.cxx1256
-rw-r--r--cui/source/customize/selector.hrc57
-rw-r--r--cui/source/customize/selector.src212
-rw-r--r--cui/source/dialogs/SpellAttrib.cxx174
-rw-r--r--cui/source/dialogs/SpellAttrib.hxx176
-rw-r--r--cui/source/dialogs/SpellDialog.cxx2155
-rw-r--r--cui/source/dialogs/SpellDialog.hrc55
-rw-r--r--cui/source/dialogs/SpellDialog.src242
-rw-r--r--cui/source/dialogs/charmap.hrc51
-rw-r--r--cui/source/dialogs/charmap.src159
-rw-r--r--cui/source/dialogs/commonlingui.cxx293
-rw-r--r--cui/source/dialogs/commonlingui.hxx172
-rw-r--r--cui/source/dialogs/commonlingui.src153
-rw-r--r--cui/source/dialogs/cuicharmap.cxx592
-rw-r--r--cui/source/dialogs/cuifmsearch.cxx967
-rw-r--r--cui/source/dialogs/cuigaldlg.cxx1272
-rw-r--r--cui/source/dialogs/cuigrfflt.cxx485
-rw-r--r--cui/source/dialogs/cuihyperdlg.cxx418
-rw-r--r--cui/source/dialogs/cuiimapdlg.hrc44
-rw-r--r--cui/source/dialogs/cuiimapdlg.src148
-rw-r--r--cui/source/dialogs/cuiimapwnd.cxx100
-rw-r--r--cui/source/dialogs/cuitbxform.cxx68
-rw-r--r--cui/source/dialogs/dlgname.cxx235
-rw-r--r--cui/source/dialogs/dlgname.hrc46
-rw-r--r--cui/source/dialogs/dlgname.src269
-rw-r--r--cui/source/dialogs/fmsearch.hrc86
-rw-r--r--cui/source/dialogs/fmsearch.src329
-rw-r--r--cui/source/dialogs/gallery.src479
-rw-r--r--cui/source/dialogs/grfflt.hrc80
-rw-r--r--cui/source/dialogs/grfflt.src454
-rw-r--r--cui/source/dialogs/hangulhanjadlg.cxx1913
-rw-r--r--cui/source/dialogs/hangulhanjadlg.hrc197
-rw-r--r--cui/source/dialogs/hangulhanjadlg.src428
-rw-r--r--cui/source/dialogs/hldocntp.cxx520
-rw-r--r--cui/source/dialogs/hldoctp.cxx377
-rw-r--r--cui/source/dialogs/hlinettp.cxx547
-rw-r--r--cui/source/dialogs/hlmailtp.cxx363
-rw-r--r--cui/source/dialogs/hlmarkwn.cxx545
-rw-r--r--cui/source/dialogs/hlmarkwn.hrc34
-rw-r--r--cui/source/dialogs/hlmarkwn.src95
-rw-r--r--cui/source/dialogs/hltpbase.cxx749
-rw-r--r--cui/source/dialogs/hyperdlg.hrc100
-rw-r--r--cui/source/dialogs/hyperdlg.src968
-rw-r--r--cui/source/dialogs/hyphen.cxx659
-rwxr-xr-xcui/source/dialogs/hyphen.hrc46
-rwxr-xr-xcui/source/dialogs/hyphen.src126
-rw-r--r--cui/source/dialogs/iconcdlg.cxx1438
-rw-r--r--cui/source/dialogs/iconcdlg.src60
-rw-r--r--cui/source/dialogs/insdlg.cxx1059
-rw-r--r--cui/source/dialogs/insrc.cxx84
-rw-r--r--cui/source/dialogs/insrc.hrc40
-rw-r--r--cui/source/dialogs/insrc.src115
-rw-r--r--cui/source/dialogs/linkdlg.cxx717
-rwxr-xr-xcui/source/dialogs/makefile.mk120
-rw-r--r--cui/source/dialogs/multifil.cxx186
-rw-r--r--cui/source/dialogs/multipat.cxx362
-rw-r--r--cui/source/dialogs/multipat.hrc44
-rw-r--r--cui/source/dialogs/multipat.src150
-rw-r--r--cui/source/dialogs/newtabledlg.cxx74
-rw-r--r--cui/source/dialogs/newtabledlg.hrc35
-rw-r--r--cui/source/dialogs/newtabledlg.src135
-rw-r--r--cui/source/dialogs/passwdomdlg.cxx345
-rwxr-xr-xcui/source/dialogs/passwdomdlg.hrc61
-rwxr-xr-xcui/source/dialogs/passwdomdlg.src228
-rw-r--r--cui/source/dialogs/pastedlg.cxx309
-rw-r--r--cui/source/dialogs/plfilter.cxx128
-rw-r--r--cui/source/dialogs/postdlg.cxx261
-rw-r--r--cui/source/dialogs/postdlg.hrc51
-rw-r--r--cui/source/dialogs/postdlg.src157
-rw-r--r--cui/source/dialogs/scriptdlg.cxx1694
-rw-r--r--cui/source/dialogs/scriptdlg.hrc80
-rw-r--r--cui/source/dialogs/scriptdlg.src307
-rw-r--r--cui/source/dialogs/sdrcelldlg.cxx104
-rw-r--r--cui/source/dialogs/sdrcelldlg.src141
-rw-r--r--cui/source/dialogs/showcols.cxx136
-rw-r--r--cui/source/dialogs/showcols.src102
-rw-r--r--cui/source/dialogs/splitcelldlg.cxx114
-rw-r--r--cui/source/dialogs/splitcelldlg.hrc42
-rw-r--r--cui/source/dialogs/splitcelldlg.src132
-rw-r--r--cui/source/dialogs/srchxtra.cxx291
-rw-r--r--cui/source/dialogs/srchxtra.hrc51
-rw-r--r--cui/source/dialogs/srchxtra.src279
-rw-r--r--cui/source/dialogs/svuidlg.hrc134
-rw-r--r--cui/source/dialogs/svuidlg.src708
-rw-r--r--cui/source/dialogs/tbxform.src64
-rw-r--r--cui/source/dialogs/thesdlg.cxx782
-rwxr-xr-xcui/source/dialogs/thesdlg.hrc52
-rwxr-xr-xcui/source/dialogs/thesdlg.src146
-rw-r--r--cui/source/dialogs/thesdlg_impl.hxx229
-rw-r--r--cui/source/dialogs/winpluginlib.cpp229
-rw-r--r--cui/source/dialogs/zoom.cxx536
-rw-r--r--cui/source/dialogs/zoom.hrc53
-rw-r--r--cui/source/dialogs/zoom.src157
-rw-r--r--cui/source/factory/cuiexp.cxx54
-rw-r--r--cui/source/factory/cuiresmgr.cxx53
-rw-r--r--cui/source/factory/dlgfact.cxx1981
-rw-r--r--cui/source/factory/dlgfact.hxx819
-rw-r--r--cui/source/factory/init.cxx56
-rw-r--r--cui/source/factory/makefile.mk52
-rw-r--r--cui/source/inc/ControlFocusHelper.hxx51
-rw-r--r--cui/source/inc/SpellDialog.hxx265
-rw-r--r--cui/source/inc/acccfg.hxx285
-rw-r--r--cui/source/inc/align.hxx106
-rw-r--r--cui/source/inc/autocdlg.hxx519
-rw-r--r--cui/source/inc/backgrnd.hxx168
-rw-r--r--cui/source/inc/bbdlg.hxx58
-rw-r--r--cui/source/inc/border.hxx158
-rw-r--r--cui/source/inc/cfg.hxx836
-rw-r--r--cui/source/inc/cfgutil.hxx219
-rw-r--r--cui/source/inc/chardlg.hxx399
-rw-r--r--cui/source/inc/connect.hxx120
-rw-r--r--cui/source/inc/cuicharmap.hxx146
-rw-r--r--cui/source/inc/cuifmsearch.hxx222
-rw-r--r--cui/source/inc/cuigaldlg.hxx375
-rw-r--r--cui/source/inc/cuigrfflt.hxx254
-rw-r--r--cui/source/inc/cuihyperdlg.hxx117
-rw-r--r--cui/source/inc/cuiimapwnd.hxx57
-rw-r--r--cui/source/inc/cuioptgenrl.hxx129
-rwxr-xr-xcui/source/inc/cuires.hrc439
-rw-r--r--cui/source/inc/cuisrchdlg.hxx76
-rw-r--r--cui/source/inc/cuitabarea.hxx804
-rw-r--r--cui/source/inc/cuitabline.hxx432
-rw-r--r--cui/source/inc/cuitbxform.hxx30
-rw-r--r--cui/source/inc/dbregister.hxx161
-rw-r--r--cui/source/inc/defdlgname.hxx43
-rw-r--r--cui/source/inc/dialmgr.hxx50
-rw-r--r--cui/source/inc/dlgname.hxx198
-rw-r--r--cui/source/inc/dstribut.hxx127
-rw-r--r--cui/source/inc/gallery.hrc101
-rw-r--r--cui/source/inc/grfpage.hxx137
-rw-r--r--cui/source/inc/hangulhanjadlg.hxx353
-rw-r--r--cui/source/inc/headertablistbox.hxx71
-rwxr-xr-xcui/source/inc/helpid.hrc400
-rw-r--r--cui/source/inc/hldocntp.hxx81
-rw-r--r--cui/source/inc/hldoctp.hxx96
-rw-r--r--cui/source/inc/hlinettp.hxx110
-rw-r--r--cui/source/inc/hlmailtp.hxx80
-rw-r--r--cui/source/inc/hlmarkwn.hxx112
-rw-r--r--cui/source/inc/hlmarkwn_def.hxx38
-rw-r--r--cui/source/inc/hltpbase.hxx210
-rw-r--r--cui/source/inc/hyphen.hxx74
-rw-r--r--cui/source/inc/iconcdlg.hxx289
-rw-r--r--cui/source/inc/insdlg.hxx216
-rw-r--r--cui/source/inc/insrc.hxx71
-rw-r--r--cui/source/inc/internationaloptions.hxx60
-rw-r--r--cui/source/inc/labdlg.hxx140
-rw-r--r--cui/source/inc/linkdlg.hxx135
-rw-r--r--cui/source/inc/macroass.hxx146
-rw-r--r--cui/source/inc/macropg.hxx176
-rw-r--r--cui/source/inc/measure.hxx129
-rw-r--r--cui/source/inc/multifil.hxx61
-rw-r--r--cui/source/inc/multipat.hxx89
-rw-r--r--cui/source/inc/newtabledlg.hxx64
-rw-r--r--cui/source/inc/numfmt.hxx193
-rw-r--r--cui/source/inc/numpages.hxx463
-rw-r--r--cui/source/inc/optasian.hxx81
-rw-r--r--cui/source/inc/optdict.hxx188
-rw-r--r--cui/source/inc/optimprove.hxx140
-rw-r--r--cui/source/inc/optlingu.hxx183
-rw-r--r--cui/source/inc/optpath.hxx112
-rw-r--r--cui/source/inc/page.hxx240
-rw-r--r--cui/source/inc/paragrph.hxx329
-rw-r--r--cui/source/inc/passwdomdlg.hxx64
-rw-r--r--cui/source/inc/pastedlg.hxx96
-rw-r--r--cui/source/inc/postdlg.hxx122
-rw-r--r--cui/source/inc/radiobtnbox.hxx64
-rw-r--r--cui/source/inc/scriptdlg.hxx251
-rw-r--r--cui/source/inc/sdrcelldlg.hxx65
-rw-r--r--cui/source/inc/selector.hxx249
-rw-r--r--cui/source/inc/showcols.hxx66
-rw-r--r--cui/source/inc/splitcelldlg.hxx72
-rw-r--r--cui/source/inc/srchxtra.hxx110
-rw-r--r--cui/source/inc/tabstpge.hxx161
-rw-r--r--cui/source/inc/textanim.hxx130
-rw-r--r--cui/source/inc/textattr.hxx116
-rw-r--r--cui/source/inc/thesdlg.hxx63
-rw-r--r--cui/source/inc/transfrm.hxx305
-rw-r--r--cui/source/inc/treeopt.hxx361
-rw-r--r--cui/source/inc/zoom.hxx97
-rw-r--r--cui/source/options/cfgchart.cxx327
-rw-r--r--cui/source/options/cfgchart.hxx118
-rw-r--r--cui/source/options/connpoolconfig.cxx225
-rw-r--r--cui/source/options/connpoolconfig.hxx56
-rw-r--r--cui/source/options/connpooloptions.cxx509
-rw-r--r--cui/source/options/connpooloptions.hrc49
-rw-r--r--cui/source/options/connpooloptions.hxx94
-rw-r--r--cui/source/options/connpooloptions.src166
-rw-r--r--cui/source/options/connpoolsettings.cxx122
-rw-r--r--cui/source/options/connpoolsettings.hxx110
-rw-r--r--cui/source/options/cuisrchdlg.cxx103
-rw-r--r--cui/source/options/dbregister.cxx526
-rw-r--r--cui/source/options/dbregister.hrc42
-rw-r--r--cui/source/options/dbregister.src90
-rw-r--r--cui/source/options/dbregisterednamesconfig.cxx145
-rw-r--r--cui/source/options/dbregisterednamesconfig.hxx56
-rw-r--r--cui/source/options/dbregistersettings.cxx78
-rw-r--r--cui/source/options/dbregistersettings.hxx97
-rw-r--r--cui/source/options/doclinkdialog.cxx226
-rw-r--r--cui/source/options/doclinkdialog.hrc50
-rw-r--r--cui/source/options/doclinkdialog.hxx93
-rw-r--r--cui/source/options/doclinkdialog.src151
-rw-r--r--cui/source/options/fontsubs.cxx613
-rw-r--r--cui/source/options/fontsubs.hrc62
-rw-r--r--cui/source/options/fontsubs.hxx136
-rw-r--r--cui/source/options/fontsubs.src196
-rw-r--r--cui/source/options/internationaloptions.cxx166
-rw-r--r--cui/source/options/internationaloptions.hrc72
-rw-r--r--cui/source/options/internationaloptions.src103
-rw-r--r--cui/source/options/makefile.mk118
-rw-r--r--cui/source/options/optHeaderTabListbox.cxx90
-rw-r--r--cui/source/options/optHeaderTabListbox.hxx47
-rw-r--r--cui/source/options/optaccessibility.cxx188
-rw-r--r--cui/source/options/optaccessibility.hrc84
-rw-r--r--cui/source/options/optaccessibility.hxx67
-rw-r--r--cui/source/options/optaccessibility.src152
-rw-r--r--cui/source/options/optasian.cxx470
-rw-r--r--cui/source/options/optasian.hrc49
-rw-r--r--cui/source/options/optasian.src174
-rw-r--r--cui/source/options/optchart.cxx238
-rw-r--r--cui/source/options/optchart.hrc37
-rw-r--r--cui/source/options/optchart.hxx89
-rw-r--r--cui/source/options/optchart.src83
-rw-r--r--cui/source/options/optcolor.cxx1582
-rw-r--r--cui/source/options/optcolor.hrc219
-rw-r--r--cui/source/options/optcolor.hxx83
-rw-r--r--cui/source/options/optcolor.src549
-rw-r--r--cui/source/options/optctl.cxx172
-rw-r--r--cui/source/options/optctl.hrc58
-rw-r--r--cui/source/options/optctl.hxx70
-rw-r--r--cui/source/options/optctl.src116
-rw-r--r--cui/source/options/optdict.cxx805
-rw-r--r--cui/source/options/optdict.hrc65
-rw-r--r--cui/source/options/optdict.src279
-rw-r--r--cui/source/options/optfltr.cxx451
-rw-r--r--cui/source/options/optfltr.hrc56
-rw-r--r--cui/source/options/optfltr.hxx115
-rw-r--r--cui/source/options/optfltr.src208
-rw-r--r--cui/source/options/optgdlg.cxx2011
-rw-r--r--cui/source/options/optgdlg.hrc219
-rw-r--r--cui/source/options/optgdlg.hxx226
-rw-r--r--cui/source/options/optgdlg.src662
-rw-r--r--cui/source/options/optgenrl.cxx583
-rw-r--r--cui/source/options/optgenrl.hrc85
-rw-r--r--cui/source/options/optgenrl.src312
-rw-r--r--cui/source/options/opthtml.cxx269
-rw-r--r--cui/source/options/opthtml.hrc63
-rw-r--r--cui/source/options/opthtml.hxx91
-rw-r--r--cui/source/options/opthtml.src287
-rw-r--r--cui/source/options/optimprove.cxx229
-rw-r--r--cui/source/options/optimprove.hrc50
-rw-r--r--cui/source/options/optimprove.src121
-rw-r--r--cui/source/options/optimprove2.cxx271
-rw-r--r--cui/source/options/optinet2.cxx2129
-rwxr-xr-xcui/source/options/optinet2.hrc171
-rw-r--r--cui/source/options/optinet2.hxx342
-rwxr-xr-xcui/source/options/optinet2.src613
-rw-r--r--cui/source/options/optjava.cxx1137
-rw-r--r--cui/source/options/optjava.hrc83
-rw-r--r--cui/source/options/optjava.hxx216
-rw-r--r--cui/source/options/optjava.src287
-rw-r--r--cui/source/options/optjsearch.cxx384
-rw-r--r--cui/source/options/optjsearch.hrc50
-rw-r--r--cui/source/options/optjsearch.hxx93
-rw-r--r--cui/source/options/optjsearch.src220
-rw-r--r--cui/source/options/optlingu.cxx2556
-rw-r--r--cui/source/options/optlingu.hrc88
-rw-r--r--cui/source/options/optlingu.src354
-rw-r--r--cui/source/options/optmemory.cxx273
-rw-r--r--cui/source/options/optmemory.hrc86
-rw-r--r--cui/source/options/optmemory.hxx92
-rw-r--r--cui/source/options/optmemory.src207
-rw-r--r--cui/source/options/optpath.cxx864
-rw-r--r--cui/source/options/optpath.hrc43
-rw-r--r--cui/source/options/optpath.src200
-rw-r--r--cui/source/options/optsave.cxx829
-rw-r--r--cui/source/options/optsave.hrc81
-rw-r--r--cui/source/options/optsave.hxx107
-rw-r--r--cui/source/options/optsave.src322
-rw-r--r--cui/source/options/optspell.hrc42
-rw-r--r--cui/source/options/optspell.src125
-rw-r--r--cui/source/options/optupdt.cxx414
-rw-r--r--cui/source/options/optupdt.hrc49
-rw-r--r--cui/source/options/optupdt.hxx81
-rw-r--r--cui/source/options/optupdt.src111
-rw-r--r--cui/source/options/radiobtnbox.cxx117
-rw-r--r--cui/source/options/readonlyimage.cxx84
-rw-r--r--cui/source/options/readonlyimage.hxx45
-rw-r--r--cui/source/options/readonlyimage.src52
-rw-r--r--cui/source/options/sdbcdriverenum.cxx131
-rw-r--r--cui/source/options/sdbcdriverenum.hxx78
-rw-r--r--cui/source/options/securityoptions.cxx106
-rw-r--r--cui/source/options/securityoptions.hrc80
-rw-r--r--cui/source/options/securityoptions.hxx93
-rw-r--r--cui/source/options/securityoptions.src165
-rw-r--r--cui/source/options/treeopt.cxx2881
-rw-r--r--cui/source/options/treeopt.hrc100
-rw-r--r--cui/source/options/treeopt.src353
-rw-r--r--cui/source/options/webconninfo.cxx377
-rw-r--r--cui/source/options/webconninfo.hrc62
-rw-r--r--cui/source/options/webconninfo.hxx87
-rw-r--r--cui/source/options/webconninfo.src103
-rw-r--r--cui/source/tabpages/align.cxx400
-rw-r--r--cui/source/tabpages/align.hrc87
-rw-r--r--cui/source/tabpages/align.src251
-rw-r--r--cui/source/tabpages/autocdlg.cxx2872
-rw-r--r--cui/source/tabpages/autocdlg.hrc160
-rw-r--r--cui/source/tabpages/autocdlg.src868
-rw-r--r--cui/source/tabpages/backgrnd.cxx1980
-rw-r--r--cui/source/tabpages/backgrnd.hrc70
-rw-r--r--cui/source/tabpages/backgrnd.src306
-rw-r--r--cui/source/tabpages/bbdlg.cxx74
-rw-r--r--cui/source/tabpages/bbdlg.src85
-rw-r--r--cui/source/tabpages/border.cxx1286
-rw-r--r--cui/source/tabpages/border.hrc106
-rw-r--r--cui/source/tabpages/border.src428
-rw-r--r--cui/source/tabpages/borderconn.cxx313
-rw-r--r--cui/source/tabpages/borderconn.hxx78
-rw-r--r--cui/source/tabpages/chardlg.cxx4066
-rw-r--r--cui/source/tabpages/chardlg.h73
-rw-r--r--cui/source/tabpages/chardlg.hrc181
-rw-r--r--cui/source/tabpages/chardlg.src1125
-rw-r--r--cui/source/tabpages/connect.cxx566
-rw-r--r--cui/source/tabpages/connect.hrc45
-rw-r--r--cui/source/tabpages/connect.src267
-rw-r--r--cui/source/tabpages/dstribut.cxx246
-rw-r--r--cui/source/tabpages/dstribut.hrc55
-rw-r--r--cui/source/tabpages/dstribut.src291
-rw-r--r--cui/source/tabpages/frmdirlbox.src93
-rw-r--r--cui/source/tabpages/grfpage.cxx837
-rw-r--r--cui/source/tabpages/grfpage.hrc53
-rw-r--r--cui/source/tabpages/grfpage.src332
-rw-r--r--cui/source/tabpages/labdlg.cxx652
-rw-r--r--cui/source/tabpages/labdlg.hrc77
-rw-r--r--cui/source/tabpages/labdlg.src298
-rw-r--r--cui/source/tabpages/macroass.cxx718
-rw-r--r--cui/source/tabpages/macroass.hrc82
-rw-r--r--cui/source/tabpages/macroass.src142
-rw-r--r--cui/source/tabpages/makefile.mk110
-rw-r--r--cui/source/tabpages/measure.cxx876
-rw-r--r--cui/source/tabpages/measure.hrc53
-rw-r--r--cui/source/tabpages/measure.src309
-rw-r--r--cui/source/tabpages/numfmt.cxx1953
-rw-r--r--cui/source/tabpages/numfmt.hrc74
-rw-r--r--cui/source/tabpages/numfmt.src294
-rw-r--r--cui/source/tabpages/numpages.cxx3972
-rw-r--r--cui/source/tabpages/numpages.hrc132
-rw-r--r--cui/source/tabpages/numpages.src811
-rw-r--r--cui/source/tabpages/page.cxx1774
-rw-r--r--cui/source/tabpages/page.h73
-rw-r--r--cui/source/tabpages/page.hrc84
-rw-r--r--cui/source/tabpages/page.src504
-rw-r--r--cui/source/tabpages/paragrph.cxx2344
-rw-r--r--cui/source/tabpages/paragrph.hrc121
-rw-r--r--cui/source/tabpages/paragrph.src732
-rw-r--r--cui/source/tabpages/strings.src178
-rw-r--r--cui/source/tabpages/swpossizetabpage.cxx1974
-rw-r--r--cui/source/tabpages/swpossizetabpage.hrc59
-rw-r--r--cui/source/tabpages/swpossizetabpage.hxx161
-rw-r--r--cui/source/tabpages/swpossizetabpage.src295
-rw-r--r--cui/source/tabpages/tabarea.cxx354
-rw-r--r--cui/source/tabpages/tabarea.hrc187
-rw-r--r--cui/source/tabpages/tabarea.src1539
-rw-r--r--cui/source/tabpages/tabline.cxx298
-rw-r--r--cui/source/tabpages/tabline.hrc106
-rw-r--r--cui/source/tabpages/tabline.src801
-rw-r--r--cui/source/tabpages/tabstpge.cxx746
-rw-r--r--cui/source/tabpages/tabstpge.hrc63
-rw-r--r--cui/source/tabpages/tabstpge.src231
-rw-r--r--cui/source/tabpages/textanim.cxx759
-rw-r--r--cui/source/tabpages/textanim.hrc47
-rw-r--r--cui/source/tabpages/textanim.src320
-rw-r--r--cui/source/tabpages/textattr.cxx799
-rw-r--r--cui/source/tabpages/textattr.hrc46
-rw-r--r--cui/source/tabpages/textattr.src244
-rw-r--r--cui/source/tabpages/tparea.cxx2522
-rw-r--r--cui/source/tabpages/tpbitmap.cxx1161
-rw-r--r--cui/source/tabpages/tpcolor.cxx1268
-rw-r--r--cui/source/tabpages/tpgradnt.cxx935
-rw-r--r--cui/source/tabpages/tphatch.cxx893
-rw-r--r--cui/source/tabpages/tpline.cxx1837
-rw-r--r--cui/source/tabpages/tplnedef.cxx1012
-rw-r--r--cui/source/tabpages/tplneend.cxx749
-rw-r--r--cui/source/tabpages/tpshadow.cxx613
-rw-r--r--cui/source/tabpages/transfrm.cxx1700
-rw-r--r--cui/source/tabpages/transfrm.hrc76
-rw-r--r--cui/source/tabpages/transfrm.src609
-rw-r--r--cui/util/cui.map7
-rw-r--r--cui/util/hidother.src204
-rw-r--r--cui/util/makefile.mk105
-rw-r--r--cui/util/makefile.pmk40
-rw-r--r--curl/curl-7.19.7.patch83
-rw-r--r--curl/curl-7.19.7_mingw.patch24
-rw-r--r--curl/curl-7.19.7_win.patch19
-rw-r--r--curl/curl-aix.patch21
-rw-r--r--curl/makefile.mk168
-rw-r--r--curl/prj/build.lst3
-rw-r--r--curl/prj/d.lst15
-rw-r--r--dbaccess/inc/AsyncronousLink.hxx73
-rw-r--r--dbaccess/inc/IController.hxx137
-rw-r--r--dbaccess/inc/IEnvironment.hxx80
-rw-r--r--dbaccess/inc/IReference.hxx46
-rw-r--r--dbaccess/inc/ToolBoxHelper.hxx89
-rw-r--r--dbaccess/inc/controllerframe.hxx87
-rw-r--r--dbaccess/inc/dataview.hxx96
-rw-r--r--dbaccess/inc/dbaccess_helpid.hrc475
-rw-r--r--dbaccess/inc/dbaccess_slotid.hrc114
-rw-r--r--dbaccess/inc/dbaccessdllapi.h45
-rw-r--r--dbaccess/inc/genericcontroller.hxx544
-rw-r--r--dbaccess/inc/makefile.mk47
-rw-r--r--dbaccess/inc/pch/precompiled_dbaccess.cxx31
-rw-r--r--dbaccess/inc/pch/precompiled_dbaccess.hxx521
-rw-r--r--dbaccess/inc/singledoccontroller.hxx236
-rw-r--r--dbaccess/prj/build.lst31
-rw-r--r--dbaccess/prj/d.lst53
-rw-r--r--dbaccess/prj/dba.xml97
-rw-r--r--dbaccess/prj/dbu.xml134
-rw-r--r--dbaccess/qa/complex/dbaccess/ApplicationController.java176
-rw-r--r--dbaccess/qa/complex/dbaccess/Beamer.java191
-rw-r--r--dbaccess/qa/complex/dbaccess/CRMBasedTestCase.java83
-rwxr-xr-xdbaccess/qa/complex/dbaccess/CopyTableInterActionHandler.java50
-rwxr-xr-xdbaccess/qa/complex/dbaccess/CopyTableWizard.java236
-rw-r--r--dbaccess/qa/complex/dbaccess/DataSource.java110
-rwxr-xr-xdbaccess/qa/complex/dbaccess/DatabaseApplication.java101
-rw-r--r--dbaccess/qa/complex/dbaccess/DatabaseDocument.java1034
-rw-r--r--dbaccess/qa/complex/dbaccess/FileHelper.java44
-rw-r--r--dbaccess/qa/complex/dbaccess/Parser.java208
-rw-r--r--dbaccess/qa/complex/dbaccess/PropertyBag.java294
-rw-r--r--dbaccess/qa/complex/dbaccess/Query.java126
-rw-r--r--dbaccess/qa/complex/dbaccess/QueryInQuery.java192
-rw-r--r--dbaccess/qa/complex/dbaccess/RowSet.java1026
-rw-r--r--dbaccess/qa/complex/dbaccess/RowSetEventListener.java111
-rwxr-xr-xdbaccess/qa/complex/dbaccess/SingleSelectQueryComposer.java395
-rw-r--r--dbaccess/qa/complex/dbaccess/TestCase.java126
-rw-r--r--dbaccess/qa/complex/dbaccess/UISettings.java152
-rw-r--r--dbaccess/qa/complex/dbaccess/dbaccess.sce12
-rwxr-xr-xdbaccess/qa/complex/dbaccess/makefile.mk78
-rw-r--r--dbaccess/qa/unoapi/Test.java52
-rw-r--r--dbaccess/qa/unoapi/dbaccess.props6
-rw-r--r--dbaccess/qa/unoapi/dbaccess.sce15
-rw-r--r--dbaccess/qa/unoapi/knownissues.xcl62
-rw-r--r--dbaccess/qa/unoapi/makefile.mk48
-rwxr-xr-xdbaccess/qa/unoapi/testdocuments/TestDB/testDB.dbfbin0 -> 949 bytes
-rwxr-xr-xdbaccess/qa/unoapi/testdocuments/TestDB/testDB.dbtbin0 -> 512 bytes
-rw-r--r--dbaccess/source/core/api/BookmarkSet.cxx269
-rw-r--r--dbaccess/source/core/api/BookmarkSet.hxx73
-rw-r--r--dbaccess/source/core/api/CIndexColumn.hxx60
-rw-r--r--dbaccess/source/core/api/CIndexes.cxx104
-rw-r--r--dbaccess/source/core/api/CIndexes.hxx59
-rw-r--r--dbaccess/source/core/api/CRowSetColumn.cxx105
-rw-r--r--dbaccess/source/core/api/CRowSetColumn.hxx61
-rw-r--r--dbaccess/source/core/api/CRowSetDataColumn.cxx274
-rw-r--r--dbaccess/source/core/api/CRowSetDataColumn.hxx112
-rw-r--r--dbaccess/source/core/api/CacheSet.cxx702
-rw-r--r--dbaccess/source/core/api/CacheSet.hxx159
-rw-r--r--dbaccess/source/core/api/FilteredContainer.cxx486
-rw-r--r--dbaccess/source/core/api/HelperCollections.cxx118
-rw-r--r--dbaccess/source/core/api/HelperCollections.hxx121
-rw-r--r--dbaccess/source/core/api/KeySet.cxx1652
-rw-r--r--dbaccess/source/core/api/KeySet.hxx225
-rw-r--r--dbaccess/source/core/api/OptimisticSet.cxx743
-rw-r--r--dbaccess/source/core/api/OptimisticSet.hxx109
-rw-r--r--dbaccess/source/core/api/PrivateRow.cxx144
-rw-r--r--dbaccess/source/core/api/PrivateRow.hxx72
-rw-r--r--dbaccess/source/core/api/RowSet.cxx2980
-rw-r--r--dbaccess/source/core/api/RowSet.hxx548
-rw-r--r--dbaccess/source/core/api/RowSetBase.cxx1575
-rw-r--r--dbaccess/source/core/api/RowSetBase.hxx426
-rw-r--r--dbaccess/source/core/api/RowSetCache.cxx1676
-rw-r--r--dbaccess/source/core/api/RowSetCache.hxx227
-rw-r--r--dbaccess/source/core/api/RowSetCacheIterator.cxx149
-rw-r--r--dbaccess/source/core/api/RowSetCacheIterator.hxx89
-rw-r--r--dbaccess/source/core/api/RowSetRow.hxx98
-rw-r--r--dbaccess/source/core/api/SingleSelectQueryComposer.cxx1848
-rw-r--r--dbaccess/source/core/api/StaticSet.cxx373
-rw-r--r--dbaccess/source/core/api/StaticSet.hxx93
-rw-r--r--dbaccess/source/core/api/TableDeco.cxx699
-rw-r--r--dbaccess/source/core/api/View.cxx154
-rw-r--r--dbaccess/source/core/api/WrappedResultSet.cxx256
-rw-r--r--dbaccess/source/core/api/WrappedResultSet.hxx79
-rw-r--r--dbaccess/source/core/api/callablestatement.cxx304
-rw-r--r--dbaccess/source/core/api/column.cxx460
-rw-r--r--dbaccess/source/core/api/columnsettings.cxx181
-rw-r--r--dbaccess/source/core/api/datacolumn.cxx428
-rw-r--r--dbaccess/source/core/api/datacolumn.hxx119
-rw-r--r--dbaccess/source/core/api/datasettings.cxx223
-rw-r--r--dbaccess/source/core/api/definitioncolumn.cxx632
-rw-r--r--dbaccess/source/core/api/makefile.mk82
-rw-r--r--dbaccess/source/core/api/preparedstatement.cxx434
-rw-r--r--dbaccess/source/core/api/query.cxx383
-rw-r--r--dbaccess/source/core/api/query.hxx174
-rw-r--r--dbaccess/source/core/api/querycomposer.cxx355
-rw-r--r--dbaccess/source/core/api/querycontainer.cxx419
-rw-r--r--dbaccess/source/core/api/querydescriptor.cxx285
-rw-r--r--dbaccess/source/core/api/querydescriptor.hxx161
-rw-r--r--dbaccess/source/core/api/resultcolumn.cxx325
-rw-r--r--dbaccess/source/core/api/resultcolumn.hxx99
-rw-r--r--dbaccess/source/core/api/resultset.cxx1115
-rw-r--r--dbaccess/source/core/api/resultset.hxx240
-rw-r--r--dbaccess/source/core/api/statement.cxx640
-rw-r--r--dbaccess/source/core/api/table.cxx413
-rw-r--r--dbaccess/source/core/api/tablecontainer.cxx505
-rw-r--r--dbaccess/source/core/api/viewcontainer.cxx275
-rw-r--r--dbaccess/source/core/dataaccess/ComponentDefinition.cxx301
-rw-r--r--dbaccess/source/core/dataaccess/ComponentDefinition.hxx184
-rw-r--r--dbaccess/source/core/dataaccess/ContentHelper.cxx673
-rw-r--r--dbaccess/source/core/dataaccess/ModelImpl.cxx1435
-rw-r--r--dbaccess/source/core/dataaccess/ModelImpl.hxx644
-rw-r--r--dbaccess/source/core/dataaccess/SharedConnection.cxx168
-rw-r--r--dbaccess/source/core/dataaccess/SharedConnection.hxx144
-rw-r--r--dbaccess/source/core/dataaccess/bookmarkcontainer.cxx371
-rw-r--r--dbaccess/source/core/dataaccess/bookmarkcontainer.hxx179
-rw-r--r--dbaccess/source/core/dataaccess/commandcontainer.cxx101
-rw-r--r--dbaccess/source/core/dataaccess/commandcontainer.hxx85
-rw-r--r--dbaccess/source/core/dataaccess/commanddefinition.cxx167
-rw-r--r--dbaccess/source/core/dataaccess/commanddefinition.hxx123
-rw-r--r--dbaccess/source/core/dataaccess/connection.cxx894
-rw-r--r--dbaccess/source/core/dataaccess/connection.hxx254
-rw-r--r--dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx328
-rw-r--r--dbaccess/source/core/dataaccess/databasecontext.cxx770
-rw-r--r--dbaccess/source/core/dataaccess/databasecontext.hxx214
-rw-r--r--dbaccess/source/core/dataaccess/databasedocument.cxx2092
-rw-r--r--dbaccess/source/core/dataaccess/databasedocument.hxx709
-rw-r--r--dbaccess/source/core/dataaccess/databaseregistrations.cxx377
-rw-r--r--dbaccess/source/core/dataaccess/databaseregistrations.hxx50
-rw-r--r--dbaccess/source/core/dataaccess/datasource.cxx1418
-rw-r--r--dbaccess/source/core/dataaccess/datasource.hxx239
-rw-r--r--dbaccess/source/core/dataaccess/definitioncontainer.cxx681
-rw-r--r--dbaccess/source/core/dataaccess/documentcontainer.cxx784
-rw-r--r--dbaccess/source/core/dataaccess/documentcontainer.hxx146
-rw-r--r--dbaccess/source/core/dataaccess/documentdefinition.cxx2211
-rw-r--r--dbaccess/source/core/dataaccess/documentdefinition.hxx386
-rw-r--r--dbaccess/source/core/dataaccess/documenteventexecutor.cxx222
-rw-r--r--dbaccess/source/core/dataaccess/documenteventexecutor.hxx77
-rw-r--r--dbaccess/source/core/dataaccess/documenteventnotifier.cxx300
-rw-r--r--dbaccess/source/core/dataaccess/documenteventnotifier.hxx143
-rw-r--r--dbaccess/source/core/dataaccess/documentevents.cxx250
-rw-r--r--dbaccess/source/core/dataaccess/documentevents.hxx89
-rw-r--r--dbaccess/source/core/dataaccess/intercept.cxx446
-rw-r--r--dbaccess/source/core/dataaccess/intercept.hxx169
-rw-r--r--dbaccess/source/core/dataaccess/makefile.mk69
-rw-r--r--dbaccess/source/core/dataaccess/myucp_datasupplier.cxx393
-rw-r--r--dbaccess/source/core/dataaccess/myucp_datasupplier.hxx80
-rw-r--r--dbaccess/source/core/dataaccess/myucp_resultset.cxx99
-rw-r--r--dbaccess/source/core/dataaccess/myucp_resultset.hxx64
-rw-r--r--dbaccess/source/core/inc/ContainerListener.hxx89
-rw-r--r--dbaccess/source/core/inc/ContainerMediator.hxx105
-rw-r--r--dbaccess/source/core/inc/ContentHelper.hxx207
-rw-r--r--dbaccess/source/core/inc/DatabaseDataProvider.hxx281
-rw-r--r--dbaccess/source/core/inc/FilteredContainer.hxx147
-rw-r--r--dbaccess/source/core/inc/PropertyForward.hxx83
-rw-r--r--dbaccess/source/core/inc/RefreshListener.hxx56
-rw-r--r--dbaccess/source/core/inc/SingleSelectQueryComposer.hxx256
-rw-r--r--dbaccess/source/core/inc/TableDeco.hxx186
-rw-r--r--dbaccess/source/core/inc/View.hxx90
-rw-r--r--dbaccess/source/core/inc/callablestatement.hxx91
-rw-r--r--dbaccess/source/core/inc/column.hxx259
-rw-r--r--dbaccess/source/core/inc/columnsettings.hxx108
-rw-r--r--dbaccess/source/core/inc/commandbase.hxx64
-rw-r--r--dbaccess/source/core/inc/composertools.hxx138
-rw-r--r--dbaccess/source/core/inc/containerapprove.hxx76
-rw-r--r--dbaccess/source/core/inc/core_resource.hrc110
-rw-r--r--dbaccess/source/core/inc/core_resource.hxx127
-rw-r--r--dbaccess/source/core/inc/datasettings.hxx95
-rw-r--r--dbaccess/source/core/inc/dbamiscres.hrc62
-rw-r--r--dbaccess/source/core/inc/definitioncolumn.hxx320
-rw-r--r--dbaccess/source/core/inc/definitioncontainer.hxx336
-rw-r--r--dbaccess/source/core/inc/module_dba.hxx43
-rw-r--r--dbaccess/source/core/inc/object.hxx42
-rw-r--r--dbaccess/source/core/inc/objectnameapproval.hxx90
-rw-r--r--dbaccess/source/core/inc/preparedstatement.hxx118
-rw-r--r--dbaccess/source/core/inc/querycomposer.hxx116
-rw-r--r--dbaccess/source/core/inc/querycontainer.hxx186
-rw-r--r--dbaccess/source/core/inc/recovery/dbdocrecovery.hxx91
-rw-r--r--dbaccess/source/core/inc/sdbcoretools.hxx82
-rw-r--r--dbaccess/source/core/inc/statement.hxx194
-rw-r--r--dbaccess/source/core/inc/table.hxx166
-rw-r--r--dbaccess/source/core/inc/tablecontainer.hxx119
-rw-r--r--dbaccess/source/core/inc/userinformation.hxx48
-rw-r--r--dbaccess/source/core/inc/veto.hxx73
-rw-r--r--dbaccess/source/core/inc/viewcontainer.hxx115
-rw-r--r--dbaccess/source/core/misc/ContainerListener.cxx132
-rw-r--r--dbaccess/source/core/misc/ContainerMediator.cxx264
-rw-r--r--dbaccess/source/core/misc/DatabaseDataProvider.cxx1173
-rw-r--r--dbaccess/source/core/misc/PropertyForward.cxx175
-rw-r--r--dbaccess/source/core/misc/apitools.cxx147
-rw-r--r--dbaccess/source/core/misc/dbastrings.cxx50
-rw-r--r--dbaccess/source/core/misc/dsntypes.cxx633
-rw-r--r--dbaccess/source/core/misc/makefile.mk60
-rw-r--r--dbaccess/source/core/misc/module_dba.cxx45
-rw-r--r--dbaccess/source/core/misc/objectnameapproval.cxx104
-rw-r--r--dbaccess/source/core/misc/sdbcoretools.cxx177
-rw-r--r--dbaccess/source/core/misc/services.cxx141
-rw-r--r--dbaccess/source/core/misc/userinformation.cxx51
-rw-r--r--dbaccess/source/core/misc/veto.cxx78
-rw-r--r--dbaccess/source/core/recovery/dbdocrecovery.cxx440
-rw-r--r--dbaccess/source/core/recovery/makefile.mk58
-rw-r--r--dbaccess/source/core/recovery/settingsimport.cxx297
-rw-r--r--dbaccess/source/core/recovery/settingsimport.hxx193
-rw-r--r--dbaccess/source/core/recovery/storagestream.cxx129
-rw-r--r--dbaccess/source/core/recovery/storagestream.hxx112
-rw-r--r--dbaccess/source/core/recovery/storagetextstream.cxx133
-rw-r--r--dbaccess/source/core/recovery/storagetextstream.hxx69
-rw-r--r--dbaccess/source/core/recovery/storagexmlstream.cxx200
-rw-r--r--dbaccess/source/core/recovery/storagexmlstream.hxx116
-rw-r--r--dbaccess/source/core/recovery/subcomponentloader.cxx203
-rw-r--r--dbaccess/source/core/recovery/subcomponentloader.hxx90
-rw-r--r--dbaccess/source/core/recovery/subcomponentrecovery.cxx705
-rw-r--r--dbaccess/source/core/recovery/subcomponentrecovery.hxx129
-rw-r--r--dbaccess/source/core/recovery/subcomponents.hxx91
-rw-r--r--dbaccess/source/core/resource/core_resource.cxx117
-rw-r--r--dbaccess/source/core/resource/makefile.mk48
-rw-r--r--dbaccess/source/core/resource/strings.src326
-rw-r--r--dbaccess/source/ext/adabas/ANewDb.cxx151
-rw-r--r--dbaccess/source/ext/adabas/ANewDb.hxx97
-rw-r--r--dbaccess/source/ext/adabas/ASQLNameEdit.hxx59
-rw-r--r--dbaccess/source/ext/adabas/ASqlNameEdit.cxx80
-rw-r--r--dbaccess/source/ext/adabas/Acomponentmodule.cxx343
-rw-r--r--dbaccess/source/ext/adabas/Acomponentmodule.hxx280
-rw-r--r--dbaccess/source/ext/adabas/AdabasNewDb.cxx750
-rw-r--r--dbaccess/source/ext/adabas/AdabasNewDb.hrc78
-rw-r--r--dbaccess/source/ext/adabas/AdabasNewDb.hxx151
-rw-r--r--dbaccess/source/ext/adabas/AdabasNewDb.src455
-rw-r--r--dbaccess/source/ext/adabas/Aservices.cxx111
-rw-r--r--dbaccess/source/ext/adabas/Astringconstants.cxx62
-rw-r--r--dbaccess/source/ext/adabas/Astringconstants.hrc103
-rw-r--r--dbaccess/source/ext/adabas/adabasui.dxp4
-rw-r--r--dbaccess/source/ext/adabas/adabasui_resource.hrc92
-rw-r--r--dbaccess/source/ext/adabas/adabasuistrings.cxx37
-rw-r--r--dbaccess/source/ext/adabas/adabasuistrings.hrc42
-rw-r--r--dbaccess/source/ext/adabas/exports.dxp3
-rw-r--r--dbaccess/source/ext/adabas/makefile.mk93
-rw-r--r--dbaccess/source/ext/macromigration/dbmm_global.hrc86
-rw-r--r--dbaccess/source/ext/macromigration/dbmm_module.cxx47
-rw-r--r--dbaccess/source/ext/macromigration/dbmm_module.hxx47
-rw-r--r--dbaccess/source/ext/macromigration/dbmm_services.cxx61
-rw-r--r--dbaccess/source/ext/macromigration/dbmm_types.cxx66
-rw-r--r--dbaccess/source/ext/macromigration/dbmm_types.hxx73
-rw-r--r--dbaccess/source/ext/macromigration/docinteraction.cxx145
-rw-r--r--dbaccess/source/ext/macromigration/docinteraction.hxx98
-rw-r--r--dbaccess/source/ext/macromigration/macromigration.hrc96
-rw-r--r--dbaccess/source/ext/macromigration/macromigration.src453
-rw-r--r--dbaccess/source/ext/macromigration/macromigrationdialog.cxx631
-rw-r--r--dbaccess/source/ext/macromigration/macromigrationdialog.hxx97
-rw-r--r--dbaccess/source/ext/macromigration/macromigrationpages.cxx364
-rw-r--r--dbaccess/source/ext/macromigration/macromigrationpages.hxx184
-rw-r--r--dbaccess/source/ext/macromigration/macromigrationwizard.cxx266
-rw-r--r--dbaccess/source/ext/macromigration/makefile.mk101
-rw-r--r--dbaccess/source/ext/macromigration/migrationengine.cxx1993
-rw-r--r--dbaccess/source/ext/macromigration/migrationengine.hxx103
-rw-r--r--dbaccess/source/ext/macromigration/migrationerror.hxx175
-rw-r--r--dbaccess/source/ext/macromigration/migrationlog.cxx515
-rw-r--r--dbaccess/source/ext/macromigration/migrationlog.hxx131
-rw-r--r--dbaccess/source/ext/macromigration/migrationprogress.hxx61
-rw-r--r--dbaccess/source/ext/macromigration/progresscapture.cxx138
-rw-r--r--dbaccess/source/ext/macromigration/progresscapture.hxx82
-rw-r--r--dbaccess/source/ext/macromigration/progressmixer.cxx219
-rw-r--r--dbaccess/source/ext/macromigration/progressmixer.hxx103
-rw-r--r--dbaccess/source/ext/macromigration/rangeprogressbar.hxx107
-rw-r--r--dbaccess/source/filter/migration/cfgimport.cxx1183
-rw-r--r--dbaccess/source/filter/migration/cfgimport.hxx202
-rw-r--r--dbaccess/source/filter/migration/cfgservices.cxx111
-rw-r--r--dbaccess/source/filter/migration/makefile.mk74
-rw-r--r--dbaccess/source/filter/xml/dbloader2.cxx660
-rw-r--r--dbaccess/source/filter/xml/makefile.mk114
-rw-r--r--dbaccess/source/filter/xml/xmlAutoStyle.cxx102
-rw-r--r--dbaccess/source/filter/xml/xmlAutoStyle.hxx60
-rw-r--r--dbaccess/source/filter/xml/xmlColumn.cxx196
-rw-r--r--dbaccess/source/filter/xml/xmlColumn.hxx69
-rw-r--r--dbaccess/source/filter/xml/xmlComponent.cxx136
-rw-r--r--dbaccess/source/filter/xml/xmlComponent.hxx63
-rw-r--r--dbaccess/source/filter/xml/xmlConnectionData.cxx122
-rw-r--r--dbaccess/source/filter/xml/xmlConnectionData.hxx59
-rw-r--r--dbaccess/source/filter/xml/xmlConnectionResource.cxx115
-rw-r--r--dbaccess/source/filter/xml/xmlConnectionResource.hxx53
-rw-r--r--dbaccess/source/filter/xml/xmlDataSource.cxx284
-rw-r--r--dbaccess/source/filter/xml/xmlDataSource.hxx65
-rw-r--r--dbaccess/source/filter/xml/xmlDataSourceInfo.cxx156
-rw-r--r--dbaccess/source/filter/xml/xmlDataSourceInfo.hxx53
-rw-r--r--dbaccess/source/filter/xml/xmlDataSourceSetting.cxx254
-rw-r--r--dbaccess/source/filter/xml/xmlDataSourceSetting.hxx78
-rw-r--r--dbaccess/source/filter/xml/xmlDataSourceSettings.cxx97
-rw-r--r--dbaccess/source/filter/xml/xmlDataSourceSettings.hxx54
-rw-r--r--dbaccess/source/filter/xml/xmlDatabase.cxx161
-rw-r--r--dbaccess/source/filter/xml/xmlDatabase.hxx57
-rw-r--r--dbaccess/source/filter/xml/xmlDatabaseDescription.cxx109
-rw-r--r--dbaccess/source/filter/xml/xmlDatabaseDescription.hxx59
-rw-r--r--dbaccess/source/filter/xml/xmlDocuments.cxx131
-rw-r--r--dbaccess/source/filter/xml/xmlDocuments.hxx76
-rw-r--r--dbaccess/source/filter/xml/xmlEnums.hxx175
-rw-r--r--dbaccess/source/filter/xml/xmlExport.cxx1459
-rw-r--r--dbaccess/source/filter/xml/xmlExport.hxx204
-rw-r--r--dbaccess/source/filter/xml/xmlFileBasedDatabase.cxx138
-rw-r--r--dbaccess/source/filter/xml/xmlFileBasedDatabase.hxx53
-rw-r--r--dbaccess/source/filter/xml/xmlHelper.cxx198
-rw-r--r--dbaccess/source/filter/xml/xmlHelper.hxx72
-rw-r--r--dbaccess/source/filter/xml/xmlHierarchyCollection.cxx180
-rw-r--r--dbaccess/source/filter/xml/xmlHierarchyCollection.hxx78
-rw-r--r--dbaccess/source/filter/xml/xmlLogin.cxx142
-rw-r--r--dbaccess/source/filter/xml/xmlLogin.hxx53
-rw-r--r--dbaccess/source/filter/xml/xmlQuery.cxx155
-rw-r--r--dbaccess/source/filter/xml/xmlQuery.hxx65
-rw-r--r--dbaccess/source/filter/xml/xmlServerDatabase.cxx178
-rw-r--r--dbaccess/source/filter/xml/xmlServerDatabase.hxx53
-rw-r--r--dbaccess/source/filter/xml/xmlStyleImport.cxx332
-rw-r--r--dbaccess/source/filter/xml/xmlStyleImport.hxx140
-rw-r--r--dbaccess/source/filter/xml/xmlTable.cxx270
-rw-r--r--dbaccess/source/filter/xml/xmlTable.hxx88
-rw-r--r--dbaccess/source/filter/xml/xmlTableFilterList.cxx111
-rw-r--r--dbaccess/source/filter/xml/xmlTableFilterList.hxx80
-rw-r--r--dbaccess/source/filter/xml/xmlTableFilterPattern.cxx73
-rw-r--r--dbaccess/source/filter/xml/xmlTableFilterPattern.hxx57
-rw-r--r--dbaccess/source/filter/xml/xmlfilter.cxx922
-rw-r--r--dbaccess/source/filter/xml/xmlfilter.hxx175
-rw-r--r--dbaccess/source/filter/xml/xmlservices.cxx122
-rw-r--r--dbaccess/source/inc/OAuthenticationContinuation.hxx84
-rw-r--r--dbaccess/source/inc/apitools.hxx443
-rw-r--r--dbaccess/source/inc/cfg_reghelper.hxx50
-rw-r--r--dbaccess/source/inc/cfgstrings.hrc99
-rw-r--r--dbaccess/source/inc/constasciistring.hxx64
-rw-r--r--dbaccess/source/inc/dbadllapi.hxx44
-rw-r--r--dbaccess/source/inc/dbastrings.hrc53
-rw-r--r--dbaccess/source/inc/dbu_reghelper.hxx50
-rw-r--r--dbaccess/source/inc/dbustrings.hrc78
-rw-r--r--dbaccess/source/inc/dsntypes.hxx243
-rw-r--r--dbaccess/source/inc/flt_reghelper.hxx50
-rw-r--r--dbaccess/source/inc/registrationhelper.hxx170
-rw-r--r--dbaccess/source/inc/sdbtstrings.hrc42
-rw-r--r--dbaccess/source/inc/stringconstants.hrc435
-rw-r--r--dbaccess/source/inc/stringconstants.inc270
-rw-r--r--dbaccess/source/inc/xmlstrings.hrc45
-rw-r--r--dbaccess/source/sdbtools/connection/connectiondependent.hxx158
-rw-r--r--dbaccess/source/sdbtools/connection/connectiontools.cxx189
-rw-r--r--dbaccess/source/sdbtools/connection/connectiontools.hxx111
-rw-r--r--dbaccess/source/sdbtools/connection/datasourcemetadata.cxx89
-rw-r--r--dbaccess/source/sdbtools/connection/datasourcemetadata.hxx94
-rw-r--r--dbaccess/source/sdbtools/connection/makefile.mk49
-rw-r--r--dbaccess/source/sdbtools/connection/objectnames.cxx494
-rw-r--r--dbaccess/source/sdbtools/connection/objectnames.hxx100
-rw-r--r--dbaccess/source/sdbtools/connection/tablename.cxx278
-rw-r--r--dbaccess/source/sdbtools/connection/tablename.hxx105
-rw-r--r--dbaccess/source/sdbtools/inc/module_sdbt.hxx47
-rw-r--r--dbaccess/source/sdbtools/inc/sdbt_resource.hrc48
-rw-r--r--dbaccess/source/sdbtools/misc/makefile.mk47
-rw-r--r--dbaccess/source/sdbtools/misc/module_sdbt.cxx45
-rw-r--r--dbaccess/source/sdbtools/misc/sdbt_services.cxx107
-rw-r--r--dbaccess/source/sdbtools/resource/makefile.mk45
-rw-r--r--dbaccess/source/sdbtools/resource/sdbt_strings.src65
-rw-r--r--dbaccess/source/shared/cfg_reghelper.cxx46
-rw-r--r--dbaccess/source/shared/cfgstrings.cxx93
-rw-r--r--dbaccess/source/shared/dbu_reghelper.cxx46
-rw-r--r--dbaccess/source/shared/dbustrings.cxx76
-rw-r--r--dbaccess/source/shared/flt_reghelper.cxx46
-rw-r--r--dbaccess/source/shared/makefile.mk76
-rw-r--r--dbaccess/source/shared/registrationhelper.cxx217
-rw-r--r--dbaccess/source/shared/sdbtstrings.cxx38
-rw-r--r--dbaccess/source/shared/xmlstrings.cxx38
-rw-r--r--dbaccess/source/ui/app/AppController.cxx3018
-rw-r--r--dbaccess/source/ui/app/AppController.hxx578
-rw-r--r--dbaccess/source/ui/app/AppControllerDnD.cxx818
-rw-r--r--dbaccess/source/ui/app/AppControllerGen.cxx845
-rw-r--r--dbaccess/source/ui/app/AppDetailPageHelper.cxx1439
-rw-r--r--dbaccess/source/ui/app/AppDetailPageHelper.hxx381
-rw-r--r--dbaccess/source/ui/app/AppDetailView.cxx963
-rw-r--r--dbaccess/source/ui/app/AppDetailView.hxx381
-rw-r--r--dbaccess/source/ui/app/AppIconControl.cxx122
-rw-r--r--dbaccess/source/ui/app/AppIconControl.hxx60
-rw-r--r--dbaccess/source/ui/app/AppSwapWindow.cxx217
-rw-r--r--dbaccess/source/ui/app/AppSwapWindow.hxx106
-rw-r--r--dbaccess/source/ui/app/AppTitleWindow.cxx183
-rw-r--r--dbaccess/source/ui/app/AppTitleWindow.hxx85
-rw-r--r--dbaccess/source/ui/app/AppView.cxx610
-rw-r--r--dbaccess/source/ui/app/AppView.hxx316
-rw-r--r--dbaccess/source/ui/app/IApplicationController.hxx103
-rw-r--r--dbaccess/source/ui/app/app.src476
-rw-r--r--dbaccess/source/ui/app/dbu_app.hrc78
-rw-r--r--dbaccess/source/ui/app/makefile.mk69
-rw-r--r--dbaccess/source/ui/app/subcomponentmanager.cxx615
-rw-r--r--dbaccess/source/ui/app/subcomponentmanager.hxx139
-rw-r--r--dbaccess/source/ui/app/window_layout.txt31
-rw-r--r--dbaccess/source/ui/browser/AsyncronousLink.cxx109
-rw-r--r--dbaccess/source/ui/browser/bcommon.src35
-rw-r--r--dbaccess/source/ui/browser/brwctrlr.cxx3084
-rw-r--r--dbaccess/source/ui/browser/brwview.cxx374
-rw-r--r--dbaccess/source/ui/browser/dataview.cxx251
-rw-r--r--dbaccess/source/ui/browser/dbexchange.cxx265
-rw-r--r--dbaccess/source/ui/browser/dbloader.cxx361
-rw-r--r--dbaccess/source/ui/browser/dbtreemodel.cxx52
-rw-r--r--dbaccess/source/ui/browser/dbtreemodel.hxx72
-rw-r--r--dbaccess/source/ui/browser/dbtreeview.cxx125
-rw-r--r--dbaccess/source/ui/browser/dbtreeview.hxx80
-rw-r--r--dbaccess/source/ui/browser/dsEntriesNoExp.cxx275
-rw-r--r--dbaccess/source/ui/browser/dsbrowserDnD.cxx297
-rw-r--r--dbaccess/source/ui/browser/exsrcbrw.cxx481
-rw-r--r--dbaccess/source/ui/browser/formadapter.cxx1776
-rw-r--r--dbaccess/source/ui/browser/genericcontroller.cxx1621
-rw-r--r--dbaccess/source/ui/browser/makefile.mk71
-rw-r--r--dbaccess/source/ui/browser/sbabrw.src205
-rw-r--r--dbaccess/source/ui/browser/sbagrid.cxx1669
-rw-r--r--dbaccess/source/ui/browser/sbagrid.src139
-rw-r--r--dbaccess/source/ui/browser/sbamultiplex.cxx111
-rw-r--r--dbaccess/source/ui/browser/unodatbr.cxx3786
-rw-r--r--dbaccess/source/ui/control/ColumnControlWindow.cxx189
-rw-r--r--dbaccess/source/ui/control/FieldDescControl.cxx1943
-rw-r--r--dbaccess/source/ui/control/RelationControl.cxx719
-rw-r--r--dbaccess/source/ui/control/ScrollHelper.cxx79
-rw-r--r--dbaccess/source/ui/control/SqlNameEdit.cxx100
-rw-r--r--dbaccess/source/ui/control/TableGrantCtrl.cxx500
-rw-r--r--dbaccess/source/ui/control/TableGrantCtrl.src96
-rw-r--r--dbaccess/source/ui/control/VertSplitView.cxx219
-rw-r--r--dbaccess/source/ui/control/charsetlistbox.cxx121
-rw-r--r--dbaccess/source/ui/control/curledit.cxx156
-rw-r--r--dbaccess/source/ui/control/dbtreelistbox.cxx727
-rw-r--r--dbaccess/source/ui/control/listviewitems.cxx84
-rw-r--r--dbaccess/source/ui/control/makefile.mk78
-rw-r--r--dbaccess/source/ui/control/marktree.cxx243
-rw-r--r--dbaccess/source/ui/control/opendoccontrols.cxx334
-rw-r--r--dbaccess/source/ui/control/sqledit.cxx227
-rw-r--r--dbaccess/source/ui/control/statusbarontroller.cxx51
-rw-r--r--dbaccess/source/ui/control/tabletree.cxx696
-rw-r--r--dbaccess/source/ui/control/tabletree.hrc37
-rw-r--r--dbaccess/source/ui/control/tabletree.src88
-rw-r--r--dbaccess/source/ui/control/toolboxcontroller.cxx283
-rw-r--r--dbaccess/source/ui/control/undosqledit.cxx48
-rw-r--r--dbaccess/source/ui/control/undosqledit.src66
-rw-r--r--dbaccess/source/ui/dlg/AdabasPage.hrc50
-rw-r--r--dbaccess/source/ui/dlg/AdabasStat.cxx305
-rw-r--r--dbaccess/source/ui/dlg/AdabasStat.hrc52
-rw-r--r--dbaccess/source/ui/dlg/AdabasStat.hxx86
-rw-r--r--dbaccess/source/ui/dlg/AdabasStat.src231
-rw-r--r--dbaccess/source/ui/dlg/AutoControls.src102
-rw-r--r--dbaccess/source/ui/dlg/AutoControls_tmpl.hrc516
-rw-r--r--dbaccess/source/ui/dlg/CollectionView.cxx343
-rw-r--r--dbaccess/source/ui/dlg/CollectionView.hrc50
-rw-r--r--dbaccess/source/ui/dlg/CollectionView.src167
-rw-r--r--dbaccess/source/ui/dlg/ConnectionHelper.cxx913
-rw-r--r--dbaccess/source/ui/dlg/ConnectionHelper.hxx135
-rw-r--r--dbaccess/source/ui/dlg/ConnectionPage.cxx382
-rw-r--r--dbaccess/source/ui/dlg/ConnectionPage.hrc59
-rw-r--r--dbaccess/source/ui/dlg/ConnectionPage.hxx109
-rw-r--r--dbaccess/source/ui/dlg/ConnectionPage.src187
-rw-r--r--dbaccess/source/ui/dlg/ConnectionPageSetup.cxx245
-rw-r--r--dbaccess/source/ui/dlg/ConnectionPageSetup.hxx110
-rw-r--r--dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx986
-rw-r--r--dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx345
-rw-r--r--dbaccess/source/ui/dlg/DbAdminImpl.cxx1221
-rw-r--r--dbaccess/source/ui/dlg/DbAdminImpl.hxx196
-rw-r--r--dbaccess/source/ui/dlg/DriverSettings.cxx119
-rw-r--r--dbaccess/source/ui/dlg/DriverSettings.hxx112
-rw-r--r--dbaccess/source/ui/dlg/ExtensionNotPresent.cxx222
-rw-r--r--dbaccess/source/ui/dlg/ExtensionNotPresent.hrc48
-rw-r--r--dbaccess/source/ui/dlg/ExtensionNotPresent.src89
-rw-r--r--dbaccess/source/ui/dlg/RelationDlg.cxx270
-rw-r--r--dbaccess/source/ui/dlg/RelationDlg.hrc54
-rw-r--r--dbaccess/source/ui/dlg/RelationDlg.src185
-rw-r--r--dbaccess/source/ui/dlg/TablesSingleDlg.cxx139
-rw-r--r--dbaccess/source/ui/dlg/TextConnectionHelper.cxx550
-rw-r--r--dbaccess/source/ui/dlg/TextConnectionHelper.hxx124
-rw-r--r--dbaccess/source/ui/dlg/UserAdmin.cxx354
-rw-r--r--dbaccess/source/ui/dlg/UserAdmin.hrc59
-rw-r--r--dbaccess/source/ui/dlg/UserAdmin.hxx92
-rw-r--r--dbaccess/source/ui/dlg/UserAdmin.src242
-rw-r--r--dbaccess/source/ui/dlg/UserAdminDlg.cxx209
-rw-r--r--dbaccess/source/ui/dlg/UserAdminDlg.hrc33
-rw-r--r--dbaccess/source/ui/dlg/UserAdminDlg.src60
-rw-r--r--dbaccess/source/ui/dlg/admincontrols.cxx314
-rwxr-xr-xdbaccess/source/ui/dlg/admincontrols.hrc49
-rw-r--r--dbaccess/source/ui/dlg/admincontrols.hxx85
-rwxr-xr-xdbaccess/source/ui/dlg/admincontrols.src131
-rw-r--r--dbaccess/source/ui/dlg/adminpages.cxx339
-rw-r--r--dbaccess/source/ui/dlg/adminpages.hxx289
-rw-r--r--dbaccess/source/ui/dlg/adodatalinks.cxx212
-rw-r--r--dbaccess/source/ui/dlg/adodatalinks.hxx37
-rw-r--r--dbaccess/source/ui/dlg/adtabdlg.cxx535
-rw-r--r--dbaccess/source/ui/dlg/adtabdlg.hrc47
-rw-r--r--dbaccess/source/ui/dlg/adtabdlg.src102
-rw-r--r--dbaccess/source/ui/dlg/advancedsettings.cxx568
-rw-r--r--dbaccess/source/ui/dlg/advancedsettings.hrc75
-rw-r--r--dbaccess/source/ui/dlg/advancedsettings.hxx153
-rw-r--r--dbaccess/source/ui/dlg/advancedsettings.src366
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.cxx517
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.hrc111
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.src787
-rw-r--r--dbaccess/source/ui/dlg/dbadmin2.src188
-rw-r--r--dbaccess/source/ui/dlg/dbadminsetup.hrc135
-rw-r--r--dbaccess/source/ui/dlg/dbadminsetup.src673
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.cxx561
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.hrc26
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.hxx156
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.src246
-rw-r--r--dbaccess/source/ui/dlg/dbwiz.cxx386
-rw-r--r--dbaccess/source/ui/dlg/dbwizsetup.cxx1141
-rw-r--r--dbaccess/source/ui/dlg/detailpages.cxx1128
-rw-r--r--dbaccess/source/ui/dlg/detailpages.hxx373
-rw-r--r--dbaccess/source/ui/dlg/directsql.cxx351
-rw-r--r--dbaccess/source/ui/dlg/directsql.hrc43
-rw-r--r--dbaccess/source/ui/dlg/directsql.src134
-rw-r--r--dbaccess/source/ui/dlg/dlgattr.cxx116
-rw-r--r--dbaccess/source/ui/dlg/dlgattr.src122
-rw-r--r--dbaccess/source/ui/dlg/dlgsave.cxx448
-rw-r--r--dbaccess/source/ui/dlg/dlgsave.hrc53
-rw-r--r--dbaccess/source/ui/dlg/dlgsave.src141
-rw-r--r--dbaccess/source/ui/dlg/dlgsize.cxx124
-rw-r--r--dbaccess/source/ui/dlg/dlgsize.hrc39
-rw-r--r--dbaccess/source/ui/dlg/dlgsize.src189
-rw-r--r--dbaccess/source/ui/dlg/dsnItem.hxx71
-rw-r--r--dbaccess/source/ui/dlg/dsselect.cxx279
-rw-r--r--dbaccess/source/ui/dlg/dsselect.hrc41
-rw-r--r--dbaccess/source/ui/dlg/dsselect.hxx97
-rw-r--r--dbaccess/source/ui/dlg/dsselect.src107
-rw-r--r--dbaccess/source/ui/dlg/finteraction.cxx84
-rw-r--r--dbaccess/source/ui/dlg/finteraction.hxx73
-rw-r--r--dbaccess/source/ui/dlg/generalpage.cxx638
-rw-r--r--dbaccess/source/ui/dlg/generalpage.hxx170
-rw-r--r--dbaccess/source/ui/dlg/indexdialog.cxx940
-rw-r--r--dbaccess/source/ui/dlg/indexdialog.hrc49
-rw-r--r--dbaccess/source/ui/dlg/indexdialog.src236
-rw-r--r--dbaccess/source/ui/dlg/indexfieldscontrol.cxx510
-rw-r--r--dbaccess/source/ui/dlg/makefile.mk156
-rw-r--r--dbaccess/source/ui/dlg/odbcconfig.cxx388
-rw-r--r--dbaccess/source/ui/dlg/odbcconfig.hxx142
-rw-r--r--dbaccess/source/ui/dlg/optionalboolitem.cxx79
-rw-r--r--dbaccess/source/ui/dlg/optionalboolitem.hxx70
-rw-r--r--dbaccess/source/ui/dlg/paramdialog.cxx427
-rw-r--r--dbaccess/source/ui/dlg/paramdialog.hrc46
-rw-r--r--dbaccess/source/ui/dlg/paramdialog.src100
-rw-r--r--dbaccess/source/ui/dlg/queryfilter.cxx877
-rw-r--r--dbaccess/source/ui/dlg/queryfilter.hrc64
-rw-r--r--dbaccess/source/ui/dlg/queryfilter.src222
-rw-r--r--dbaccess/source/ui/dlg/queryorder.cxx310
-rw-r--r--dbaccess/source/ui/dlg/queryorder.hrc57
-rw-r--r--dbaccess/source/ui/dlg/queryorder.src211
-rw-r--r--dbaccess/source/ui/dlg/sqlmessage.cxx787
-rw-r--r--dbaccess/source/ui/dlg/sqlmessage.hrc50
-rw-r--r--dbaccess/source/ui/dlg/sqlmessage.src161
-rw-r--r--dbaccess/source/ui/dlg/tablespage.cxx634
-rw-r--r--dbaccess/source/ui/dlg/tablespage.hxx123
-rw-r--r--dbaccess/source/ui/dlg/textconnectionsettings.cxx109
-rw-r--r--dbaccess/source/ui/dlg/textconnectionsettings.src60
-rw-r--r--dbaccess/source/ui/imagelists/dbimagelists.src262
-rw-r--r--dbaccess/source/ui/imagelists/makefile.mk49
-rw-r--r--dbaccess/source/ui/inc/AccessibleBaseIFace.hxx55
-rw-r--r--dbaccess/source/ui/inc/AppElementType.hxx68
-rw-r--r--dbaccess/source/ui/inc/CollectionView.hxx90
-rw-r--r--dbaccess/source/ui/inc/ColumnControlWindow.hxx85
-rw-r--r--dbaccess/source/ui/inc/ConnectionLine.hxx112
-rw-r--r--dbaccess/source/ui/inc/ConnectionLineAccess.hxx110
-rw-r--r--dbaccess/source/ui/inc/ConnectionLineData.hxx102
-rw-r--r--dbaccess/source/ui/inc/DExport.hxx191
-rw-r--r--dbaccess/source/ui/inc/ExtensionNotPresent.hxx89
-rw-r--r--dbaccess/source/ui/inc/FieldControls.hxx191
-rw-r--r--dbaccess/source/ui/inc/FieldDescControl.hxx234
-rw-r--r--dbaccess/source/ui/inc/FieldDescriptions.hxx125
-rw-r--r--dbaccess/source/ui/inc/GeneralUndo.hxx57
-rw-r--r--dbaccess/source/ui/inc/HtmlReader.hxx92
-rw-r--r--dbaccess/source/ui/inc/IClipBoardTest.hxx50
-rw-r--r--dbaccess/source/ui/inc/IItemSetHelper.hxx72
-rw-r--r--dbaccess/source/ui/inc/IUpdateHelper.hxx54
-rw-r--r--dbaccess/source/ui/inc/JAccess.hxx89
-rw-r--r--dbaccess/source/ui/inc/JoinController.hxx180
-rw-r--r--dbaccess/source/ui/inc/JoinDesignView.hxx87
-rw-r--r--dbaccess/source/ui/inc/JoinExchange.hxx89
-rw-r--r--dbaccess/source/ui/inc/JoinTableView.hxx326
-rw-r--r--dbaccess/source/ui/inc/QEnumTypes.hxx92
-rw-r--r--dbaccess/source/ui/inc/QueryDesignView.hxx177
-rw-r--r--dbaccess/source/ui/inc/QueryTableView.hxx145
-rw-r--r--dbaccess/source/ui/inc/QueryTextView.hxx74
-rw-r--r--dbaccess/source/ui/inc/QueryViewSwitch.hxx106
-rw-r--r--dbaccess/source/ui/inc/RTableConnectionData.hxx102
-rw-r--r--dbaccess/source/ui/inc/RefFunctor.hxx60
-rw-r--r--dbaccess/source/ui/inc/RelControliFace.hxx61
-rw-r--r--dbaccess/source/ui/inc/RelationControl.hrc34
-rw-r--r--dbaccess/source/ui/inc/RelationControl.hxx105
-rw-r--r--dbaccess/source/ui/inc/RelationController.hxx99
-rw-r--r--dbaccess/source/ui/inc/RelationDesignView.hxx68
-rw-r--r--dbaccess/source/ui/inc/RelationDlg.hxx115
-rw-r--r--dbaccess/source/ui/inc/RelationTableView.hxx84
-rw-r--r--dbaccess/source/ui/inc/RtfReader.hxx80
-rw-r--r--dbaccess/source/ui/inc/ScrollHelper.hxx77
-rw-r--r--dbaccess/source/ui/inc/SqlNameEdit.hxx110
-rw-r--r--dbaccess/source/ui/inc/TableConnection.hxx111
-rw-r--r--dbaccess/source/ui/inc/TableConnectionData.hxx115
-rw-r--r--dbaccess/source/ui/inc/TableController.hxx160
-rw-r--r--dbaccess/source/ui/inc/TableCopyHelper.hxx200
-rw-r--r--dbaccess/source/ui/inc/TableDesignControl.hxx102
-rw-r--r--dbaccess/source/ui/inc/TableDesignHelpBar.hxx75
-rw-r--r--dbaccess/source/ui/inc/TableDesignView.hxx123
-rw-r--r--dbaccess/source/ui/inc/TableFieldDescription.hxx163
-rw-r--r--dbaccess/source/ui/inc/TableGrantCtrl.hxx117
-rw-r--r--dbaccess/source/ui/inc/TableRow.hxx93
-rw-r--r--dbaccess/source/ui/inc/TableRowExchange.hxx53
-rw-r--r--dbaccess/source/ui/inc/TableWindow.hxx211
-rw-r--r--dbaccess/source/ui/inc/TableWindowAccess.hxx121
-rw-r--r--dbaccess/source/ui/inc/TableWindowData.hxx106
-rw-r--r--dbaccess/source/ui/inc/TableWindowListBox.hxx111
-rw-r--r--dbaccess/source/ui/inc/TableWindowTitle.hxx59
-rw-r--r--dbaccess/source/ui/inc/TablesSingleDlg.hxx87
-rw-r--r--dbaccess/source/ui/inc/TokenWriter.hxx259
-rw-r--r--dbaccess/source/ui/inc/TypeInfo.hxx146
-rw-r--r--dbaccess/source/ui/inc/UITools.hxx464
-rw-r--r--dbaccess/source/ui/inc/UserAdminDlg.hxx93
-rw-r--r--dbaccess/source/ui/inc/VertSplitView.hxx60
-rw-r--r--dbaccess/source/ui/inc/WCPage.hxx110
-rw-r--r--dbaccess/source/ui/inc/WColumnSelect.hxx105
-rw-r--r--dbaccess/source/ui/inc/WCopyTable.hxx423
-rw-r--r--dbaccess/source/ui/inc/WExtendPages.hxx86
-rw-r--r--dbaccess/source/ui/inc/WNameMatch.hxx102
-rw-r--r--dbaccess/source/ui/inc/WTabPage.hxx60
-rw-r--r--dbaccess/source/ui/inc/WTypeSelect.hxx144
-rw-r--r--dbaccess/source/ui/inc/adtabdlg.hxx127
-rw-r--r--dbaccess/source/ui/inc/advancedsettingsdlg.hxx97
-rw-r--r--dbaccess/source/ui/inc/asyncmodaldialog.hxx67
-rw-r--r--dbaccess/source/ui/inc/browserids.hxx121
-rw-r--r--dbaccess/source/ui/inc/brwctrlr.hxx369
-rw-r--r--dbaccess/source/ui/inc/brwview.hxx117
-rw-r--r--dbaccess/source/ui/inc/callbacks.hxx129
-rw-r--r--dbaccess/source/ui/inc/charsetlistbox.hxx68
-rw-r--r--dbaccess/source/ui/inc/charsets.hxx144
-rw-r--r--dbaccess/source/ui/inc/commontypes.hxx58
-rw-r--r--dbaccess/source/ui/inc/curledit.hxx89
-rw-r--r--dbaccess/source/ui/inc/databaseobjectview.hxx264
-rw-r--r--dbaccess/source/ui/inc/datasourceconnector.hxx96
-rw-r--r--dbaccess/source/ui/inc/datasourcemap.hxx266
-rw-r--r--dbaccess/source/ui/inc/dbadmin.hxx139
-rw-r--r--dbaccess/source/ui/inc/dbexchange.hxx99
-rw-r--r--dbaccess/source/ui/inc/dbtreelistbox.hxx170
-rw-r--r--dbaccess/source/ui/inc/dbu_brw.hrc55
-rw-r--r--dbaccess/source/ui/inc/dbu_control.hrc56
-rw-r--r--dbaccess/source/ui/inc/dbu_dlg.hrc135
-rw-r--r--dbaccess/source/ui/inc/dbu_misc.hrc62
-rw-r--r--dbaccess/source/ui/inc/dbu_qry.hrc96
-rw-r--r--dbaccess/source/ui/inc/dbu_rel.hrc50
-rw-r--r--dbaccess/source/ui/inc/dbu_resource.hrc420
-rw-r--r--dbaccess/source/ui/inc/dbu_tbl.hrc99
-rw-r--r--dbaccess/source/ui/inc/dbu_uno.hrc56
-rw-r--r--dbaccess/source/ui/inc/dbwiz.hxx135
-rw-r--r--dbaccess/source/ui/inc/dbwizsetup.hxx197
-rw-r--r--dbaccess/source/ui/inc/defaultobjectnamecheck.hxx146
-rw-r--r--dbaccess/source/ui/inc/directsql.hxx141
-rw-r--r--dbaccess/source/ui/inc/dlgattr.hrc37
-rw-r--r--dbaccess/source/ui/inc/dlgattr.hxx64
-rw-r--r--dbaccess/source/ui/inc/dlgsave.hxx99
-rw-r--r--dbaccess/source/ui/inc/dlgsize.hxx72
-rw-r--r--dbaccess/source/ui/inc/dsitems.hxx107
-rw-r--r--dbaccess/source/ui/inc/dsmeta.hxx145
-rw-r--r--dbaccess/source/ui/inc/exsrcbrw.hxx115
-rw-r--r--dbaccess/source/ui/inc/formadapter.hxx449
-rw-r--r--dbaccess/source/ui/inc/imageprovider.hxx188
-rw-r--r--dbaccess/source/ui/inc/indexcollection.hxx119
-rw-r--r--dbaccess/source/ui/inc/indexdialog.hxx185
-rw-r--r--dbaccess/source/ui/inc/indexes.hxx105
-rw-r--r--dbaccess/source/ui/inc/indexfieldscontrol.hxx112
-rw-r--r--dbaccess/source/ui/inc/linkeddocuments.hxx141
-rw-r--r--dbaccess/source/ui/inc/listviewitems.hxx70
-rw-r--r--dbaccess/source/ui/inc/localresaccess.hxx62
-rw-r--r--dbaccess/source/ui/inc/makefile.mk43
-rw-r--r--dbaccess/source/ui/inc/marktree.hxx86
-rw-r--r--dbaccess/source/ui/inc/moduledbu.hxx106
-rw-r--r--dbaccess/source/ui/inc/objectnamecheck.hxx77
-rw-r--r--dbaccess/source/ui/inc/opendoccontrols.hxx95
-rw-r--r--dbaccess/source/ui/inc/paramdialog.hxx126
-rw-r--r--dbaccess/source/ui/inc/propertysetitem.hxx69
-rw-r--r--dbaccess/source/ui/inc/propertystorage.hxx97
-rw-r--r--dbaccess/source/ui/inc/querycontainerwindow.hxx126
-rw-r--r--dbaccess/source/ui/inc/querycontroller.hxx261
-rw-r--r--dbaccess/source/ui/inc/queryfilter.hxx149
-rw-r--r--dbaccess/source/ui/inc/queryorder.hxx130
-rw-r--r--dbaccess/source/ui/inc/queryview.hxx60
-rw-r--r--dbaccess/source/ui/inc/sbagrid.hrc107
-rw-r--r--dbaccess/source/ui/inc/sbagrid.hxx347
-rw-r--r--dbaccess/source/ui/inc/sbamultiplex.hxx438
-rw-r--r--dbaccess/source/ui/inc/sqledit.hxx91
-rw-r--r--dbaccess/source/ui/inc/sqlmessage.hxx137
-rw-r--r--dbaccess/source/ui/inc/statusbarontroller.hxx54
-rw-r--r--dbaccess/source/ui/inc/stringlistitem.hxx68
-rw-r--r--dbaccess/source/ui/inc/tabletree.hxx200
-rw-r--r--dbaccess/source/ui/inc/textconnectionsettings.hxx82
-rw-r--r--dbaccess/source/ui/inc/toolbox_tmpl.hrc100
-rw-r--r--dbaccess/source/ui/inc/toolboxcontroller.hxx75
-rw-r--r--dbaccess/source/ui/inc/undosqledit.hxx59
-rw-r--r--dbaccess/source/ui/inc/unoadmin.hxx81
-rw-r--r--dbaccess/source/ui/inc/unodatbr.hxx499
-rw-r--r--dbaccess/source/ui/inc/unosqlmessage.hxx90
-rw-r--r--dbaccess/source/ui/misc/DExport.cxx906
-rw-r--r--dbaccess/source/ui/misc/HtmlReader.cxx600
-rw-r--r--dbaccess/source/ui/misc/ModuleHelper.cxx44
-rw-r--r--dbaccess/source/ui/misc/RowSetDrop.cxx275
-rw-r--r--dbaccess/source/ui/misc/RtfReader.cxx379
-rw-r--r--dbaccess/source/ui/misc/TableCopyHelper.cxx345
-rw-r--r--dbaccess/source/ui/misc/TokenWriter.cxx1164
-rw-r--r--dbaccess/source/ui/misc/ToolBoxHelper.cxx130
-rw-r--r--dbaccess/source/ui/misc/UITools.cxx1722
-rw-r--r--dbaccess/source/ui/misc/UpdateHelperImpl.hxx151
-rw-r--r--dbaccess/source/ui/misc/WCPage.cxx387
-rw-r--r--dbaccess/source/ui/misc/WColumnSelect.cxx428
-rw-r--r--dbaccess/source/ui/misc/WCopyTable.cxx1694
-rw-r--r--dbaccess/source/ui/misc/WExtendPages.cxx86
-rw-r--r--dbaccess/source/ui/misc/WNameMatch.cxx432
-rw-r--r--dbaccess/source/ui/misc/WTypeSelect.cxx482
-rw-r--r--dbaccess/source/ui/misc/WizardPages.hrc81
-rw-r--r--dbaccess/source/ui/misc/WizardPages.src630
-rw-r--r--dbaccess/source/ui/misc/asyncmodaldialog.cxx115
-rw-r--r--dbaccess/source/ui/misc/charsets.cxx186
-rw-r--r--dbaccess/source/ui/misc/controllerframe.cxx446
-rw-r--r--dbaccess/source/ui/misc/databaseobjectview.cxx346
-rw-r--r--dbaccess/source/ui/misc/datasourceconnector.cxx235
-rw-r--r--dbaccess/source/ui/misc/dbumiscres.hrc62
-rw-r--r--dbaccess/source/ui/misc/dbumiscres.src100
-rw-r--r--dbaccess/source/ui/misc/defaultobjectnamecheck.cxx206
-rw-r--r--dbaccess/source/ui/misc/dsmeta.cxx216
-rw-r--r--dbaccess/source/ui/misc/imageprovider.cxx263
-rw-r--r--dbaccess/source/ui/misc/indexcollection.cxx408
-rw-r--r--dbaccess/source/ui/misc/linkeddocuments.cxx415
-rw-r--r--dbaccess/source/ui/misc/makefile.mk85
-rw-r--r--dbaccess/source/ui/misc/moduledbu.cxx140
-rw-r--r--dbaccess/source/ui/misc/propertysetitem.cxx86
-rw-r--r--dbaccess/source/ui/misc/propertystorage.cxx139
-rw-r--r--dbaccess/source/ui/misc/singledoccontroller.cxx751
-rw-r--r--dbaccess/source/ui/misc/stringlistitem.cxx87
-rw-r--r--dbaccess/source/ui/misc/uiservices.cxx161
-rw-r--r--dbaccess/source/ui/querydesign/ConnectionData.hxx66
-rw-r--r--dbaccess/source/ui/querydesign/ConnectionLine.cxx385
-rw-r--r--dbaccess/source/ui/querydesign/ConnectionLineAccess.cxx252
-rw-r--r--dbaccess/source/ui/querydesign/ConnectionLineData.cxx104
-rw-r--r--dbaccess/source/ui/querydesign/JAccess.cxx131
-rw-r--r--dbaccess/source/ui/querydesign/JoinController.cxx474
-rw-r--r--dbaccess/source/ui/querydesign/JoinDesignView.cxx130
-rw-r--r--dbaccess/source/ui/querydesign/JoinExchange.cxx179
-rw-r--r--dbaccess/source/ui/querydesign/JoinTableView.cxx1729
-rw-r--r--dbaccess/source/ui/querydesign/QTableConnection.cxx105
-rw-r--r--dbaccess/source/ui/querydesign/QTableConnection.hxx59
-rw-r--r--dbaccess/source/ui/querydesign/QTableConnectionData.cxx172
-rw-r--r--dbaccess/source/ui/querydesign/QTableConnectionData.hxx91
-rw-r--r--dbaccess/source/ui/querydesign/QTableWindow.cxx244
-rw-r--r--dbaccess/source/ui/querydesign/QTableWindow.hxx94
-rw-r--r--dbaccess/source/ui/querydesign/QTableWindowData.cxx60
-rw-r--r--dbaccess/source/ui/querydesign/QTableWindowData.hxx55
-rw-r--r--dbaccess/source/ui/querydesign/Query.hrc35
-rw-r--r--dbaccess/source/ui/querydesign/QueryAddTabConnUndoAction.hxx63
-rw-r--r--dbaccess/source/ui/querydesign/QueryDesignFieldUndoAct.hxx161
-rw-r--r--dbaccess/source/ui/querydesign/QueryDesignUndoAction.hxx50
-rw-r--r--dbaccess/source/ui/querydesign/QueryDesignView.cxx3233
-rw-r--r--dbaccess/source/ui/querydesign/QueryMoveTabWinUndoAct.cxx52
-rw-r--r--dbaccess/source/ui/querydesign/QueryMoveTabWinUndoAct.hxx68
-rw-r--r--dbaccess/source/ui/querydesign/QuerySizeTabWinUndoAct.hxx86
-rw-r--r--dbaccess/source/ui/querydesign/QueryTabConnUndoAction.cxx139
-rw-r--r--dbaccess/source/ui/querydesign/QueryTabConnUndoAction.hxx59
-rw-r--r--dbaccess/source/ui/querydesign/QueryTabWinShowUndoAct.hxx66
-rw-r--r--dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx141
-rw-r--r--dbaccess/source/ui/querydesign/QueryTabWinUndoAct.hxx87
-rw-r--r--dbaccess/source/ui/querydesign/QueryTableView.cxx1041
-rw-r--r--dbaccess/source/ui/querydesign/QueryTextView.cxx154
-rw-r--r--dbaccess/source/ui/querydesign/QueryViewSwitch.cxx344
-rw-r--r--dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx2841
-rw-r--r--dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx347
-rw-r--r--dbaccess/source/ui/querydesign/TableConnection.cxx246
-rw-r--r--dbaccess/source/ui/querydesign/TableConnectionData.cxx198
-rw-r--r--dbaccess/source/ui/querydesign/TableFieldDescription.cxx242
-rw-r--r--dbaccess/source/ui/querydesign/TableFieldInfo.cxx57
-rw-r--r--dbaccess/source/ui/querydesign/TableFieldInfo.hxx55
-rw-r--r--dbaccess/source/ui/querydesign/TableWindow.cxx804
-rw-r--r--dbaccess/source/ui/querydesign/TableWindowAccess.cxx295
-rw-r--r--dbaccess/source/ui/querydesign/TableWindowData.cxx156
-rw-r--r--dbaccess/source/ui/querydesign/TableWindowListBox.cxx406
-rw-r--r--dbaccess/source/ui/querydesign/TableWindowTitle.cxx222
-rw-r--r--dbaccess/source/ui/querydesign/class.jpgbin0 -> 224242 bytes
-rw-r--r--dbaccess/source/ui/querydesign/makefile.mk89
-rw-r--r--dbaccess/source/ui/querydesign/query.src423
-rw-r--r--dbaccess/source/ui/querydesign/querycontainerwindow.cxx266
-rw-r--r--dbaccess/source/ui/querydesign/querycontroller.cxx1870
-rw-r--r--dbaccess/source/ui/querydesign/querydlg.cxx377
-rw-r--r--dbaccess/source/ui/querydesign/querydlg.hrc61
-rw-r--r--dbaccess/source/ui/querydesign/querydlg.hxx108
-rw-r--r--dbaccess/source/ui/querydesign/querydlg.src194
-rw-r--r--dbaccess/source/ui/querydesign/queryview.cxx58
-rw-r--r--dbaccess/source/ui/relationdesign/RTableConnection.cxx150
-rw-r--r--dbaccess/source/ui/relationdesign/RTableConnection.hxx57
-rw-r--r--dbaccess/source/ui/relationdesign/RTableConnectionData.cxx468
-rw-r--r--dbaccess/source/ui/relationdesign/RTableWindow.hxx51
-rw-r--r--dbaccess/source/ui/relationdesign/RelationController.cxx617
-rw-r--r--dbaccess/source/ui/relationdesign/RelationDesignView.cxx115
-rw-r--r--dbaccess/source/ui/relationdesign/RelationTableView.cxx488
-rw-r--r--dbaccess/source/ui/relationdesign/makefile.mk58
-rw-r--r--dbaccess/source/ui/relationdesign/relation.src130
-rw-r--r--dbaccess/source/ui/tabledesign/FieldDescGenWin.cxx191
-rw-r--r--dbaccess/source/ui/tabledesign/FieldDescGenWin.hxx86
-rw-r--r--dbaccess/source/ui/tabledesign/FieldDescriptions.cxx682
-rw-r--r--dbaccess/source/ui/tabledesign/TEditControl.cxx1965
-rw-r--r--dbaccess/source/ui/tabledesign/TEditControl.hxx222
-rw-r--r--dbaccess/source/ui/tabledesign/TableController.cxx1616
-rw-r--r--dbaccess/source/ui/tabledesign/TableDesignControl.cxx227
-rw-r--r--dbaccess/source/ui/tabledesign/TableDesignHelpBar.cxx125
-rw-r--r--dbaccess/source/ui/tabledesign/TableDesignView.cxx376
-rw-r--r--dbaccess/source/ui/tabledesign/TableFieldControl.cxx159
-rw-r--r--dbaccess/source/ui/tabledesign/TableFieldControl.hxx72
-rw-r--r--dbaccess/source/ui/tabledesign/TableFieldDescWin.cxx321
-rw-r--r--dbaccess/source/ui/tabledesign/TableFieldDescWin.hxx111
-rw-r--r--dbaccess/source/ui/tabledesign/TableRow.cxx231
-rw-r--r--dbaccess/source/ui/tabledesign/TableRowExchange.cxx91
-rw-r--r--dbaccess/source/ui/tabledesign/TableUndo.cxx479
-rw-r--r--dbaccess/source/ui/tabledesign/TableUndo.hxx172
-rw-r--r--dbaccess/source/ui/tabledesign/makefile.mk65
-rw-r--r--dbaccess/source/ui/tabledesign/table.src413
-rw-r--r--dbaccess/source/ui/uno/AdabasSettingsDlg.cxx129
-rw-r--r--dbaccess/source/ui/uno/AdabasSettingsDlg.hxx82
-rw-r--r--dbaccess/source/ui/uno/AdvancedSettingsDlg.cxx162
-rw-r--r--dbaccess/source/ui/uno/ColumnControl.cxx142
-rw-r--r--dbaccess/source/ui/uno/ColumnControl.hxx57
-rw-r--r--dbaccess/source/ui/uno/ColumnModel.cxx170
-rw-r--r--dbaccess/source/ui/uno/ColumnModel.hxx115
-rw-r--r--dbaccess/source/ui/uno/ColumnPeer.cxx165
-rw-r--r--dbaccess/source/ui/uno/ColumnPeer.hxx64
-rw-r--r--dbaccess/source/ui/uno/DBTypeWizDlg.cxx128
-rw-r--r--dbaccess/source/ui/uno/DBTypeWizDlg.hxx82
-rw-r--r--dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx152
-rw-r--r--dbaccess/source/ui/uno/DBTypeWizDlgSetup.hxx86
-rw-r--r--dbaccess/source/ui/uno/TableFilterDlg.cxx129
-rw-r--r--dbaccess/source/ui/uno/TableFilterDlg.hxx82
-rw-r--r--dbaccess/source/ui/uno/UserSettingsDlg.cxx129
-rw-r--r--dbaccess/source/ui/uno/UserSettingsDlg.hxx82
-rw-r--r--dbaccess/source/ui/uno/admindlg.cxx135
-rw-r--r--dbaccess/source/ui/uno/admindlg.hxx82
-rw-r--r--dbaccess/source/ui/uno/composerdialogs.cxx211
-rw-r--r--dbaccess/source/ui/uno/composerdialogs.hxx146
-rw-r--r--dbaccess/source/ui/uno/copytablewizard.cxx1630
-rw-r--r--dbaccess/source/ui/uno/copytablewizard.src80
-rw-r--r--dbaccess/source/ui/uno/dbinteraction.cxx389
-rw-r--r--dbaccess/source/ui/uno/dbinteraction.hxx188
-rw-r--r--dbaccess/source/ui/uno/dbinteraction.src41
-rw-r--r--dbaccess/source/ui/uno/makefile.mk76
-rw-r--r--dbaccess/source/ui/uno/textconnectionsettings_uno.cxx265
-rw-r--r--dbaccess/source/ui/uno/unoDirectSql.cxx138
-rw-r--r--dbaccess/source/ui/uno/unoDirectSql.hxx82
-rw-r--r--dbaccess/source/ui/uno/unoadmin.cxx125
-rw-r--r--dbaccess/source/ui/uno/unosqlmessage.cxx166
-rw-r--r--dbaccess/uiconfig/dbapp/menubar/menubar.xml143
-rw-r--r--dbaccess/uiconfig/dbapp/statusbar/statusbar.xml8
-rw-r--r--dbaccess/uiconfig/dbapp/toolbar/formobjectbar.xml8
-rw-r--r--dbaccess/uiconfig/dbapp/toolbar/queryobjectbar.xml8
-rw-r--r--dbaccess/uiconfig/dbapp/toolbar/reportobjectbar.xml8
-rw-r--r--dbaccess/uiconfig/dbapp/toolbar/tableobjectbar.xml8
-rw-r--r--dbaccess/uiconfig/dbapp/toolbar/toolbar.xml19
-rw-r--r--dbaccess/uiconfig/dbbrowser/menubar/compat.xml1
-rw-r--r--dbaccess/uiconfig/dbbrowser/menubar/preserve.txt1
-rw-r--r--dbaccess/uiconfig/dbbrowser/toolbar/toolbar.xml33
-rw-r--r--dbaccess/uiconfig/dbquery/menubar/menubar.xml84
-rw-r--r--dbaccess/uiconfig/dbquery/toolbar/designobjectbar.xml10
-rw-r--r--dbaccess/uiconfig/dbquery/toolbar/sqlobjectbar.xml5
-rw-r--r--dbaccess/uiconfig/dbquery/toolbar/toolbar.xml20
-rw-r--r--dbaccess/uiconfig/dbrelation/menubar/menubar.xml67
-rw-r--r--dbaccess/uiconfig/dbrelation/toolbar/toolbar.xml13
-rw-r--r--dbaccess/uiconfig/dbtable/menubar/menubar.xml68
-rw-r--r--dbaccess/uiconfig/dbtable/toolbar/toolbar.xml17
-rw-r--r--dbaccess/uiconfig/dbtdata/menubar/menubar.xml76
-rw-r--r--dbaccess/uiconfig/dbtdata/toolbar/toolbar.xml27
-rw-r--r--dbaccess/util/dba.pmk29
-rw-r--r--dbaccess/util/hidother.src518
-rw-r--r--dbaccess/util/makefile.mk242
-rw-r--r--dbaccess/util/makefile.pmk31
-rw-r--r--dbaccess/win32/source/odbcconfig/makefile.mk54
-rw-r--r--dbaccess/win32/source/odbcconfig/odbcconfig.cxx161
-rw-r--r--default_images/README.txt8
-rw-r--r--default_images/avmedia/res/av02048.pngbin0 -> 437 bytes
-rw-r--r--default_images/avmedia/res/av02049.pngbin0 -> 534 bytes
-rw-r--r--default_images/avmedia/res/av02050.pngbin0 -> 455 bytes
-rw-r--r--default_images/avmedia/res/av02051.pngbin0 -> 469 bytes
-rw-r--r--default_images/avmedia/res/av02052.pngbin0 -> 578 bytes
-rw-r--r--default_images/avmedia/res/av02053.pngbin0 -> 266 bytes
-rw-r--r--default_images/avmedia/res/av02054.pngbin0 -> 772 bytes
-rwxr-xr-xdefault_images/avmedia/res/avaudiologo.pngbin0 -> 2574 bytes
-rwxr-xr-xdefault_images/avmedia/res/avemptylogo.pngbin0 -> 516 bytes
-rw-r--r--default_images/avmedia/res/avh02048.pngbin0 -> 133 bytes
-rw-r--r--default_images/avmedia/res/avh02049.pngbin0 -> 128 bytes
-rw-r--r--default_images/avmedia/res/avh02050.pngbin0 -> 124 bytes
-rw-r--r--default_images/avmedia/res/avh02051.pngbin0 -> 123 bytes
-rw-r--r--default_images/avmedia/res/avh02052.pngbin0 -> 151 bytes
-rw-r--r--default_images/avmedia/res/avh02053.pngbin0 -> 115 bytes
-rw-r--r--default_images/avmedia/res/avh02054.pngbin0 -> 173 bytes
-rw-r--r--default_images/avmedia/res/avl02048.pngbin0 -> 863 bytes
-rw-r--r--default_images/avmedia/res/avl02049.pngbin0 -> 737 bytes
-rw-r--r--default_images/avmedia/res/avl02050.pngbin0 -> 649 bytes
-rw-r--r--default_images/avmedia/res/avl02051.pngbin0 -> 633 bytes
-rw-r--r--default_images/avmedia/res/avl02052.pngbin0 -> 889 bytes
-rw-r--r--default_images/avmedia/res/avl02053.pngbin0 -> 410 bytes
-rw-r--r--default_images/avmedia/res/avl02054.pngbin0 -> 1359 bytes
-rw-r--r--default_images/avmedia/res/avlh02048.pngbin0 -> 161 bytes
-rw-r--r--default_images/avmedia/res/avlh02049.pngbin0 -> 162 bytes
-rw-r--r--default_images/avmedia/res/avlh02050.pngbin0 -> 146 bytes
-rw-r--r--default_images/avmedia/res/avlh02051.pngbin0 -> 144 bytes
-rw-r--r--default_images/avmedia/res/avlh02052.pngbin0 -> 199 bytes
-rw-r--r--default_images/avmedia/res/avlh02053.pngbin0 -> 128 bytes
-rw-r--r--default_images/avmedia/res/avlh02054.pngbin0 -> 230 bytes
-rw-r--r--default_images/basctl/res/im01.pngbin0 -> 458 bytes
-rw-r--r--default_images/basctl/res/imh01.pngbin0 -> 182 bytes
-rw-r--r--default_images/basctl/res/locked.pngbin0 -> 234 bytes
-rw-r--r--default_images/basctl/res/locked_h.pngbin0 -> 116 bytes
-rw-r--r--default_images/brand/about-pt_BR.pngbin0 -> 11941 bytes
-rw-r--r--default_images/brand/about-pt_BR.svg948
-rwxr-xr-xdefault_images/brand/about.pngbin0 -> 12956 bytes
-rw-r--r--default_images/brand/intro-pt_BR.pngbin0 -> 29187 bytes
-rw-r--r--default_images/brand/intro-pt_BR.svg1814
-rwxr-xr-xdefault_images/brand/intro.pngbin0 -> 31528 bytes
-rw-r--r--default_images/brand/shell/backing-pt_BR.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing.pngbin0 -> 19498 bytes
-rw-r--r--default_images/brand/shell/backing_hc-pt_BR.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing_hc.pngbin0 -> 19498 bytes
-rw-r--r--default_images/brand/shell/backing_left-pt_BR.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing_left-pt_BR.svg1054
-rw-r--r--default_images/brand/shell/backing_left.pngbin0 -> 19498 bytes
-rw-r--r--default_images/brand/shell/backing_left_hc-pt_BR.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing_left_hc.pngbin0 -> 19498 bytes
-rw-r--r--default_images/brand/shell/backing_right-pt_BR.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_right.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_right_hc-pt_BR.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_right_hc.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_left-pt_BR.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_left.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_left_hc-pt_BR.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_left_hc.pngbin0 -> 18149 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_right-pt_BR.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_right.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_right_hc-pt_BR.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_rtl_right_hc.pngbin0 -> 6396 bytes
-rw-r--r--default_images/brand/shell/backing_space.pngbin0 -> 336 bytes
-rw-r--r--default_images/brand/shell/backing_space_hc.pngbin0 -> 336 bytes
-rwxr-xr-xdefault_images/brand_dev/about-pt_BR.pngbin0 -> 7923 bytes
-rwxr-xr-xdefault_images/brand_dev/about.pngbin0 -> 9246 bytes
-rw-r--r--default_images/brand_dev/intro-pt_BR.pngbin0 -> 19114 bytes
-rwxr-xr-xdefault_images/brand_dev/intro.pngbin0 -> 24676 bytes
-rw-r--r--default_images/chart2/res/areas3d_52x60.pngbin0 -> 459 bytes
-rw-r--r--default_images/chart2/res/areas3d_52x60_h.pngbin0 -> 336 bytes
-rw-r--r--default_images/chart2/res/areas_52x60.pngbin0 -> 400 bytes
-rw-r--r--default_images/chart2/res/areas_52x60_h.pngbin0 -> 300 bytes
-rw-r--r--default_images/chart2/res/areasfull3d_52x60.pngbin0 -> 319 bytes
-rw-r--r--default_images/chart2/res/areasfull3d_52x60_h.pngbin0 -> 283 bytes
-rw-r--r--default_images/chart2/res/areasfull_52x60.pngbin0 -> 287 bytes
-rw-r--r--default_images/chart2/res/areasfull_52x60_h.pngbin0 -> 230 bytes
-rw-r--r--default_images/chart2/res/areaspiled3d_52x60.pngbin0 -> 484 bytes
-rw-r--r--default_images/chart2/res/areaspiled3d_52x60_h.pngbin0 -> 382 bytes
-rw-r--r--default_images/chart2/res/areaspiled_52x60.pngbin0 -> 358 bytes
-rw-r--r--default_images/chart2/res/areaspiled_52x60_h.pngbin0 -> 283 bytes
-rw-r--r--default_images/chart2/res/bar3d_52x60.pngbin0 -> 337 bytes
-rw-r--r--default_images/chart2/res/bar3d_52x60_h.pngbin0 -> 289 bytes
-rw-r--r--default_images/chart2/res/bar3ddeep_52x60.pngbin0 -> 468 bytes
-rw-r--r--default_images/chart2/res/bar3ddeep_52x60_h.pngbin0 -> 332 bytes
-rw-r--r--default_images/chart2/res/bar_52x60.pngbin0 -> 227 bytes
-rw-r--r--default_images/chart2/res/bar_52x60_h.pngbin0 -> 188 bytes
-rw-r--r--default_images/chart2/res/barpercent3d_52x60.pngbin0 -> 303 bytes
-rw-r--r--default_images/chart2/res/barpercent3d_52x60_h.pngbin0 -> 247 bytes
-rw-r--r--default_images/chart2/res/barpercent_52x60.pngbin0 -> 218 bytes
-rw-r--r--default_images/chart2/res/barpercent_52x60_h.pngbin0 -> 167 bytes
-rw-r--r--default_images/chart2/res/barstack3d_52x60.pngbin0 -> 307 bytes
-rw-r--r--default_images/chart2/res/barstack3d_52x60_h.pngbin0 -> 251 bytes
-rw-r--r--default_images/chart2/res/barstack_52x60.pngbin0 -> 218 bytes
-rw-r--r--default_images/chart2/res/barstack_52x60_h.pngbin0 -> 172 bytes
-rw-r--r--default_images/chart2/res/bubble_52x60.pngbin0 -> 979 bytes
-rw-r--r--default_images/chart2/res/bubble_52x60_h.pngbin0 -> 337 bytes
-rw-r--r--default_images/chart2/res/columnline_52x60.pngbin0 -> 281 bytes
-rw-r--r--default_images/chart2/res/columnline_52x60_h.pngbin0 -> 221 bytes
-rw-r--r--default_images/chart2/res/columnpercent3d_52x60.pngbin0 -> 324 bytes
-rw-r--r--default_images/chart2/res/columnpercent3d_52x60_h.pngbin0 -> 274 bytes
-rw-r--r--default_images/chart2/res/columnpercent_52x60.pngbin0 -> 218 bytes
-rw-r--r--default_images/chart2/res/columnpercent_52x60_h.pngbin0 -> 177 bytes
-rw-r--r--default_images/chart2/res/columns3d_52x60.pngbin0 -> 345 bytes
-rw-r--r--default_images/chart2/res/columns3d_52x60_h.pngbin0 -> 278 bytes
-rw-r--r--default_images/chart2/res/columns3ddeep_52x60.pngbin0 -> 454 bytes
-rw-r--r--default_images/chart2/res/columns3ddeep_52x60_h.pngbin0 -> 334 bytes
-rw-r--r--default_images/chart2/res/columns_52x60.pngbin0 -> 214 bytes
-rw-r--r--default_images/chart2/res/columns_52x60_h.pngbin0 -> 174 bytes
-rw-r--r--default_images/chart2/res/columnstack3d_52x60.pngbin0 -> 326 bytes
-rw-r--r--default_images/chart2/res/columnstack3d_52x60_h.pngbin0 -> 278 bytes
-rw-r--r--default_images/chart2/res/columnstack_52x60.pngbin0 -> 218 bytes
-rw-r--r--default_images/chart2/res/columnstack_52x60_h.pngbin0 -> 178 bytes
-rw-r--r--default_images/chart2/res/columnstackline_52x60.pngbin0 -> 247 bytes
-rw-r--r--default_images/chart2/res/columnstackline_52x60_h.pngbin0 -> 194 bytes
-rw-r--r--default_images/chart2/res/cone_52x60.pngbin0 -> 717 bytes
-rw-r--r--default_images/chart2/res/cone_52x60_h.pngbin0 -> 341 bytes
-rw-r--r--default_images/chart2/res/conedeep_52x60.pngbin0 -> 742 bytes
-rw-r--r--default_images/chart2/res/conedeep_52x60_h.pngbin0 -> 462 bytes
-rw-r--r--default_images/chart2/res/conehori_52x60.pngbin0 -> 623 bytes
-rw-r--r--default_images/chart2/res/conehori_52x60_h.pngbin0 -> 356 bytes
-rw-r--r--default_images/chart2/res/conehorideep_52x60.pngbin0 -> 685 bytes
-rw-r--r--default_images/chart2/res/conehorideep_52x60_h.pngbin0 -> 436 bytes
-rw-r--r--default_images/chart2/res/conehoripercent_52x60.pngbin0 -> 605 bytes
-rw-r--r--default_images/chart2/res/conehoripercent_52x60_h.pngbin0 -> 360 bytes
-rw-r--r--default_images/chart2/res/conehoristack_52x60.pngbin0 -> 650 bytes
-rw-r--r--default_images/chart2/res/conehoristack_52x60_h.pngbin0 -> 378 bytes
-rw-r--r--default_images/chart2/res/conepercent_52x60.pngbin0 -> 628 bytes
-rw-r--r--default_images/chart2/res/conepercent_52x60_h.pngbin0 -> 383 bytes
-rw-r--r--default_images/chart2/res/conestack_52x60.pngbin0 -> 687 bytes
-rw-r--r--default_images/chart2/res/conestack_52x60_h.pngbin0 -> 401 bytes
-rw-r--r--default_images/chart2/res/cylinder_52x60.pngbin0 -> 489 bytes
-rw-r--r--default_images/chart2/res/cylinder_52x60_h.pngbin0 -> 326 bytes
-rw-r--r--default_images/chart2/res/cylinderdeep_52x60.pngbin0 -> 570 bytes
-rw-r--r--default_images/chart2/res/cylinderdeep_52x60_h.pngbin0 -> 397 bytes
-rw-r--r--default_images/chart2/res/cylinderhori_52x60.pngbin0 -> 457 bytes
-rw-r--r--default_images/chart2/res/cylinderhori_52x60_h.pngbin0 -> 295 bytes
-rw-r--r--default_images/chart2/res/cylinderhorideep_52x60.pngbin0 -> 666 bytes
-rw-r--r--default_images/chart2/res/cylinderhorideep_52x60_h.pngbin0 -> 379 bytes
-rw-r--r--default_images/chart2/res/cylinderhoriprocent_52x60.pngbin0 -> 608 bytes
-rw-r--r--default_images/chart2/res/cylinderhoriprocent_52x60_h.pngbin0 -> 333 bytes
-rw-r--r--default_images/chart2/res/cylinderhoristack_52x60.pngbin0 -> 614 bytes
-rw-r--r--default_images/chart2/res/cylinderhoristack_52x60_h.pngbin0 -> 321 bytes
-rw-r--r--default_images/chart2/res/cylinderpercent_52x60.pngbin0 -> 596 bytes
-rw-r--r--default_images/chart2/res/cylinderpercent_52x60_h.pngbin0 -> 341 bytes
-rw-r--r--default_images/chart2/res/cylinderstack_52x60.pngbin0 -> 602 bytes
-rw-r--r--default_images/chart2/res/cylinderstack_52x60_h.pngbin0 -> 355 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon01.pngbin0 -> 316 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon02.pngbin0 -> 374 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon03.pngbin0 -> 225 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon04.pngbin0 -> 299 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon05.pngbin0 -> 457 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon06.pngbin0 -> 402 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon07.pngbin0 -> 333 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon_h01.pngbin0 -> 111 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon_h02.pngbin0 -> 107 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon_h03.pngbin0 -> 99 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon_h04.pngbin0 -> 97 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon_h05.pngbin0 -> 145 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon_h06.pngbin0 -> 146 bytes
-rw-r--r--default_images/chart2/res/dataeditor_icon_h07.pngbin0 -> 107 bytes
-rw-r--r--default_images/chart2/res/donut3d_52x60.pngbin0 -> 538 bytes
-rw-r--r--default_images/chart2/res/donut3d_52x60_h.pngbin0 -> 394 bytes
-rw-r--r--default_images/chart2/res/donut3dexploded_52x60.pngbin0 -> 733 bytes
-rw-r--r--default_images/chart2/res/donut3dexploded_52x60_h.pngbin0 -> 462 bytes
-rw-r--r--default_images/chart2/res/donut_52x60.pngbin0 -> 481 bytes
-rw-r--r--default_images/chart2/res/donut_52x60_h.pngbin0 -> 379 bytes
-rw-r--r--default_images/chart2/res/donutexploded_52x60.pngbin0 -> 564 bytes
-rw-r--r--default_images/chart2/res/donutexploded_52x60_h.pngbin0 -> 451 bytes
-rw-r--r--default_images/chart2/res/errorbothhori_30.pngbin0 -> 264 bytes
-rw-r--r--default_images/chart2/res/errorbothhori_30_h.pngbin0 -> 112 bytes
-rw-r--r--default_images/chart2/res/errorbothverti_30.pngbin0 -> 297 bytes
-rw-r--r--default_images/chart2/res/errorbothverti_30_h.pngbin0 -> 112 bytes
-rw-r--r--default_images/chart2/res/errordown_30.pngbin0 -> 277 bytes
-rw-r--r--default_images/chart2/res/errordown_30_h.pngbin0 -> 111 bytes
-rw-r--r--default_images/chart2/res/errorleft_30.pngbin0 -> 257 bytes
-rw-r--r--default_images/chart2/res/errorleft_30_h.pngbin0 -> 111 bytes
-rw-r--r--default_images/chart2/res/errorright_30.pngbin0 -> 258 bytes
-rw-r--r--default_images/chart2/res/errorright_30_h.pngbin0 -> 110 bytes
-rw-r--r--default_images/chart2/res/errorup_30.pngbin0 -> 275 bytes
-rw-r--r--default_images/chart2/res/errorup_30_h.pngbin0 -> 106 bytes
-rw-r--r--default_images/chart2/res/net_52x60.pngbin0 -> 805 bytes
-rw-r--r--default_images/chart2/res/net_52x60_h.pngbin0 -> 557 bytes
-rw-r--r--default_images/chart2/res/netfill_52x60.pngbin0 -> 1008 bytes
-rw-r--r--default_images/chart2/res/netfill_52x60_h.pngbin0 -> 473 bytes
-rw-r--r--default_images/chart2/res/netlinepoint_52x60.pngbin0 -> 971 bytes
-rw-r--r--default_images/chart2/res/netlinepoint_52x60_h.pngbin0 -> 571 bytes
-rw-r--r--default_images/chart2/res/netlinepointstack_52x60.pngbin0 -> 1029 bytes
-rw-r--r--default_images/chart2/res/netlinepointstack_52x60_h.pngbin0 -> 516 bytes
-rw-r--r--default_images/chart2/res/netpoint_52x60.pngbin0 -> 789 bytes
-rw-r--r--default_images/chart2/res/netpoint_52x60_h.pngbin0 -> 402 bytes
-rw-r--r--default_images/chart2/res/netpointstack_52x60.pngbin0 -> 749 bytes
-rw-r--r--default_images/chart2/res/netpointstack_52x60_h.pngbin0 -> 389 bytes
-rw-r--r--default_images/chart2/res/netstack_52x60.pngbin0 -> 857 bytes
-rw-r--r--default_images/chart2/res/netstack_52x60_h.pngbin0 -> 494 bytes
-rw-r--r--default_images/chart2/res/netstackfill_52x60.pngbin0 -> 1575 bytes
-rw-r--r--default_images/chart2/res/netstackfill_52x60_h.pngbin0 -> 441 bytes
-rw-r--r--default_images/chart2/res/nostackdirect3d_52x60.pngbin0 -> 813 bytes
-rw-r--r--default_images/chart2/res/nostackdirect3d_52x60_h.pngbin0 -> 347 bytes
-rw-r--r--default_images/chart2/res/nostackdirectboth_52x60.pngbin0 -> 566 bytes
-rw-r--r--default_images/chart2/res/nostackdirectboth_52x60_h.pngbin0 -> 318 bytes
-rw-r--r--default_images/chart2/res/nostackdirectlines_52x60.pngbin0 -> 394 bytes
-rw-r--r--default_images/chart2/res/nostackdirectlines_52x60_h.pngbin0 -> 299 bytes
-rw-r--r--default_images/chart2/res/nostackdirectpoints_52x60.pngbin0 -> 343 bytes
-rw-r--r--default_images/chart2/res/nostackdirectpoints_52x60_h.pngbin0 -> 206 bytes
-rw-r--r--default_images/chart2/res/nostacksmooth3d_52x60.pngbin0 -> 1314 bytes
-rw-r--r--default_images/chart2/res/nostacksmooth3d_52x60_h.pngbin0 -> 361 bytes
-rw-r--r--default_images/chart2/res/nostacksmoothboth_52x60.pngbin0 -> 847 bytes
-rw-r--r--default_images/chart2/res/nostacksmoothboth_52x60_h.pngbin0 -> 337 bytes
-rw-r--r--default_images/chart2/res/nostacksmoothlines_52x60.pngbin0 -> 756 bytes
-rw-r--r--default_images/chart2/res/nostacksmoothlines_52x60_h.pngbin0 -> 302 bytes
-rw-r--r--default_images/chart2/res/pie3d_52x60.pngbin0 -> 461 bytes
-rw-r--r--default_images/chart2/res/pie3d_52x60_h.pngbin0 -> 313 bytes
-rw-r--r--default_images/chart2/res/pie3dexploded_52x60.pngbin0 -> 555 bytes
-rw-r--r--default_images/chart2/res/pie3dexploded_52x60_h.pngbin0 -> 411 bytes
-rw-r--r--default_images/chart2/res/pie_52x60.pngbin0 -> 403 bytes
-rw-r--r--default_images/chart2/res/pie_52x60_h.pngbin0 -> 312 bytes
-rw-r--r--default_images/chart2/res/pieexploded_52x60.pngbin0 -> 442 bytes
-rw-r--r--default_images/chart2/res/pieexploded_52x60_h.pngbin0 -> 347 bytes
-rw-r--r--default_images/chart2/res/pyramind_52x60.pngbin0 -> 571 bytes
-rw-r--r--default_images/chart2/res/pyramind_52x60_h.pngbin0 -> 347 bytes
-rw-r--r--default_images/chart2/res/pyraminddeep_52x60.pngbin0 -> 657 bytes
-rw-r--r--default_images/chart2/res/pyraminddeep_52x60_h.pngbin0 -> 430 bytes
-rw-r--r--default_images/chart2/res/pyramindhori_52x60.pngbin0 -> 441 bytes
-rw-r--r--default_images/chart2/res/pyramindhori_52x60_h.pngbin0 -> 332 bytes
-rw-r--r--default_images/chart2/res/pyramindhorideep_52x60.pngbin0 -> 584 bytes
-rw-r--r--default_images/chart2/res/pyramindhorideep_52x60_h.pngbin0 -> 409 bytes
-rw-r--r--default_images/chart2/res/pyramindhoripercent_52x60.pngbin0 -> 463 bytes
-rw-r--r--default_images/chart2/res/pyramindhoripercent_52x60_h.pngbin0 -> 319 bytes
-rw-r--r--default_images/chart2/res/pyramindhoristack_52x60.pngbin0 -> 469 bytes
-rw-r--r--default_images/chart2/res/pyramindhoristack_52x60_h.pngbin0 -> 317 bytes
-rw-r--r--default_images/chart2/res/pyramindpercent_52x60.pngbin0 -> 533 bytes
-rw-r--r--default_images/chart2/res/pyramindpercent_52x60_h.pngbin0 -> 357 bytes
-rw-r--r--default_images/chart2/res/pyramindstack_52x60.pngbin0 -> 564 bytes
-rw-r--r--default_images/chart2/res/pyramindstack_52x60_h.pngbin0 -> 361 bytes
-rw-r--r--default_images/chart2/res/regexp.pngbin0 -> 816 bytes
-rw-r--r--default_images/chart2/res/regexp_h.pngbin0 -> 187 bytes
-rw-r--r--default_images/chart2/res/reglin.pngbin0 -> 741 bytes
-rw-r--r--default_images/chart2/res/reglin_h.pngbin0 -> 179 bytes
-rw-r--r--default_images/chart2/res/reglog.pngbin0 -> 774 bytes
-rw-r--r--default_images/chart2/res/reglog_h.pngbin0 -> 184 bytes
-rw-r--r--default_images/chart2/res/regno.pngbin0 -> 284 bytes
-rw-r--r--default_images/chart2/res/regno_h.pngbin0 -> 118 bytes
-rw-r--r--default_images/chart2/res/regpow.pngbin0 -> 869 bytes
-rw-r--r--default_images/chart2/res/regpow_h.pngbin0 -> 188 bytes
-rw-r--r--default_images/chart2/res/selectrange.pngbin0 -> 428 bytes
-rw-r--r--default_images/chart2/res/selectrange_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/chart2/res/stackdirect3d_52x60.pngbin0 -> 737 bytes
-rw-r--r--default_images/chart2/res/stackdirect3d_52x60_h.pngbin0 -> 286 bytes
-rw-r--r--default_images/chart2/res/stackdirectboth_52x60.pngbin0 -> 582 bytes
-rw-r--r--default_images/chart2/res/stackdirectboth_52x60_h.pngbin0 -> 279 bytes
-rw-r--r--default_images/chart2/res/stackdirectlines_52x60.pngbin0 -> 409 bytes
-rw-r--r--default_images/chart2/res/stackdirectlines_52x60_h.pngbin0 -> 246 bytes
-rw-r--r--default_images/chart2/res/stackdirectpoints_52x60.pngbin0 -> 336 bytes
-rw-r--r--default_images/chart2/res/stackdirectpoints_52x60_h.pngbin0 -> 205 bytes
-rw-r--r--default_images/chart2/res/stacksmooth3d_52x60.pngbin0 -> 946 bytes
-rw-r--r--default_images/chart2/res/stacksmooth3d_52x60_h.pngbin0 -> 279 bytes
-rw-r--r--default_images/chart2/res/stacksmoothboth_52x60.pngbin0 -> 598 bytes
-rw-r--r--default_images/chart2/res/stacksmoothboth_52x60_h.pngbin0 -> 289 bytes
-rw-r--r--default_images/chart2/res/stacksmoothlines_52x60.pngbin0 -> 878 bytes
-rw-r--r--default_images/chart2/res/stacksmoothlines_52x60_h.pngbin0 -> 251 bytes
-rw-r--r--default_images/chart2/res/stock_52x60.pngbin0 -> 296 bytes
-rw-r--r--default_images/chart2/res/stock_52x60_h.pngbin0 -> 166 bytes
-rw-r--r--default_images/chart2/res/stockblock_52x60.pngbin0 -> 366 bytes
-rw-r--r--default_images/chart2/res/stockblock_52x60_h.pngbin0 -> 195 bytes
-rw-r--r--default_images/chart2/res/stockcolumns_52x60.pngbin0 -> 489 bytes
-rw-r--r--default_images/chart2/res/stockcolumns_52x60_h.pngbin0 -> 248 bytes
-rw-r--r--default_images/chart2/res/stockcolumnsattach_52x60.pngbin0 -> 557 bytes
-rw-r--r--default_images/chart2/res/stockcolumnsattach_52x60_h.pngbin0 -> 258 bytes
-rw-r--r--default_images/chart2/res/typearea_16.pngbin0 -> 379 bytes
-rw-r--r--default_images/chart2/res/typearea_16_h.pngbin0 -> 154 bytes
-rw-r--r--default_images/chart2/res/typebar_16.pngbin0 -> 245 bytes
-rw-r--r--default_images/chart2/res/typebar_16_h.pngbin0 -> 103 bytes
-rw-r--r--default_images/chart2/res/typebubble_16.pngbin0 -> 345 bytes
-rw-r--r--default_images/chart2/res/typebubble_16_h.pngbin0 -> 141 bytes
-rw-r--r--default_images/chart2/res/typecolumn_16.pngbin0 -> 346 bytes
-rw-r--r--default_images/chart2/res/typecolumn_16_h.pngbin0 -> 100 bytes
-rw-r--r--default_images/chart2/res/typecolumnline_16.pngbin0 -> 295 bytes
-rw-r--r--default_images/chart2/res/typecolumnline_16_h.pngbin0 -> 150 bytes
-rw-r--r--default_images/chart2/res/typenet_16.pngbin0 -> 296 bytes
-rw-r--r--default_images/chart2/res/typenet_16_h.pngbin0 -> 187 bytes
-rw-r--r--default_images/chart2/res/typepie_16.pngbin0 -> 616 bytes
-rw-r--r--default_images/chart2/res/typepie_16_h.pngbin0 -> 155 bytes
-rw-r--r--default_images/chart2/res/typepointline_16.pngbin0 -> 411 bytes
-rw-r--r--default_images/chart2/res/typepointline_16_h.pngbin0 -> 155 bytes
-rw-r--r--default_images/chart2/res/typestock_16.pngbin0 -> 215 bytes
-rw-r--r--default_images/chart2/res/typestock_16_h.pngbin0 -> 124 bytes
-rw-r--r--default_images/chart2/res/typexy_16.pngbin0 -> 205 bytes
-rw-r--r--default_images/chart2/res/typexy_16_h.pngbin0 -> 163 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirect3d_52x60.pngbin0 -> 524 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirect3d_52x60_h.pngbin0 -> 363 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirectboth_52x60.pngbin0 -> 572 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirectboth_52x60_h.pngbin0 -> 345 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirectlines_52x60.pngbin0 -> 375 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirectlines_52x60_h.pngbin0 -> 313 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirectpoints_52x60.pngbin0 -> 344 bytes
-rw-r--r--default_images/chart2/res/valueaxisdirectpoints_52x60_h.pngbin0 -> 207 bytes
-rw-r--r--default_images/chart2/res/valueaxissmooth3d_52x60.pngbin0 -> 1501 bytes
-rw-r--r--default_images/chart2/res/valueaxissmooth3d_52x60_h.pngbin0 -> 354 bytes
-rw-r--r--default_images/chart2/res/valueaxissmoothboth_52x60.pngbin0 -> 879 bytes
-rw-r--r--default_images/chart2/res/valueaxissmoothboth_52x60_h.pngbin0 -> 344 bytes
-rw-r--r--default_images/chart2/res/valueaxissmoothlines_52x60.pngbin0 -> 796 bytes
-rw-r--r--default_images/chart2/res/valueaxissmoothlines_52x60_h.pngbin0 -> 313 bytes
-rw-r--r--default_images/database/linked_text_table.pngbin0 -> 412 bytes
-rw-r--r--default_images/database/linked_text_table_hc.pngbin0 -> 142 bytes
-rw-r--r--default_images/dbaccess/res/all_left.pngbin0 -> 266 bytes
-rw-r--r--default_images/dbaccess/res/all_left_h.pngbin0 -> 81 bytes
-rw-r--r--default_images/dbaccess/res/all_right.pngbin0 -> 266 bytes
-rw-r--r--default_images/dbaccess/res/all_right_h.pngbin0 -> 81 bytes
-rw-r--r--default_images/dbaccess/res/db.pngbin0 -> 751 bytes
-rw-r--r--default_images/dbaccess/res/db_sch.pngbin0 -> 174 bytes
-rw-r--r--default_images/dbaccess/res/exerror.pngbin0 -> 296 bytes
-rw-r--r--default_images/dbaccess/res/exerror_sch.pngbin0 -> 134 bytes
-rw-r--r--default_images/dbaccess/res/exinfo.pngbin0 -> 520 bytes
-rw-r--r--default_images/dbaccess/res/exinfo_sch.pngbin0 -> 162 bytes
-rw-r--r--default_images/dbaccess/res/exwarning.pngbin0 -> 523 bytes
-rw-r--r--default_images/dbaccess/res/exwarning_sch.pngbin0 -> 150 bytes
-rw-r--r--default_images/dbaccess/res/form_16.pngbin0 -> 322 bytes
-rw-r--r--default_images/dbaccess/res/form_16_h.pngbin0 -> 115 bytes
-rw-r--r--default_images/dbaccess/res/forms_16.pngbin0 -> 380 bytes
-rw-r--r--default_images/dbaccess/res/forms_16_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/dbaccess/res/forms_32.pngbin0 -> 1033 bytes
-rw-r--r--default_images/dbaccess/res/forms_32_h.pngbin0 -> 209 bytes
-rw-r--r--default_images/dbaccess/res/jo01.pngbin0 -> 239 bytes
-rw-r--r--default_images/dbaccess/res/jo02.pngbin0 -> 267 bytes
-rw-r--r--default_images/dbaccess/res/joh01.pngbin0 -> 109 bytes
-rw-r--r--default_images/dbaccess/res/joh02.pngbin0 -> 104 bytes
-rw-r--r--default_images/dbaccess/res/lc036.pngbin0 -> 656 bytes
-rw-r--r--default_images/dbaccess/res/lc037.pngbin0 -> 770 bytes
-rw-r--r--default_images/dbaccess/res/lc038.pngbin0 -> 726 bytes
-rw-r--r--default_images/dbaccess/res/lc039.pngbin0 -> 733 bytes
-rw-r--r--default_images/dbaccess/res/lc040.pngbin0 -> 1199 bytes
-rw-r--r--default_images/dbaccess/res/lch036.pngbin0 -> 172 bytes
-rw-r--r--default_images/dbaccess/res/lch037.pngbin0 -> 184 bytes
-rw-r--r--default_images/dbaccess/res/lch038.pngbin0 -> 197 bytes
-rw-r--r--default_images/dbaccess/res/lch039.pngbin0 -> 164 bytes
-rw-r--r--default_images/dbaccess/res/lch040.pngbin0 -> 235 bytes
-rw-r--r--default_images/dbaccess/res/nu07.pngbin0 -> 266 bytes
-rw-r--r--default_images/dbaccess/res/nu08.pngbin0 -> 296 bytes
-rw-r--r--default_images/dbaccess/res/nu09.pngbin0 -> 246 bytes
-rw-r--r--default_images/dbaccess/res/nuh07.pngbin0 -> 135 bytes
-rw-r--r--default_images/dbaccess/res/nuh08.pngbin0 -> 140 bytes
-rw-r--r--default_images/dbaccess/res/nuh09.pngbin0 -> 126 bytes
-rw-r--r--default_images/dbaccess/res/one_left.pngbin0 -> 251 bytes
-rw-r--r--default_images/dbaccess/res/one_left_h.pngbin0 -> 79 bytes
-rw-r--r--default_images/dbaccess/res/one_right.pngbin0 -> 253 bytes
-rw-r--r--default_images/dbaccess/res/one_right_h.pngbin0 -> 79 bytes
-rw-r--r--default_images/dbaccess/res/pkey.pngbin0 -> 235 bytes
-rw-r--r--default_images/dbaccess/res/pkey_sch.pngbin0 -> 105 bytes
-rw-r--r--default_images/dbaccess/res/queries_32.pngbin0 -> 740 bytes
-rw-r--r--default_images/dbaccess/res/queries_32_h.pngbin0 -> 202 bytes
-rw-r--r--default_images/dbaccess/res/report_16.pngbin0 -> 398 bytes
-rw-r--r--default_images/dbaccess/res/report_16_h.pngbin0 -> 102 bytes
-rw-r--r--default_images/dbaccess/res/reports_16.pngbin0 -> 382 bytes
-rw-r--r--default_images/dbaccess/res/reports_16_h.pngbin0 -> 128 bytes
-rw-r--r--default_images/dbaccess/res/reports_32.pngbin0 -> 1159 bytes
-rw-r--r--default_images/dbaccess/res/reports_32_h.pngbin0 -> 210 bytes
-rw-r--r--default_images/dbaccess/res/sc036.pngbin0 -> 459 bytes
-rw-r--r--default_images/dbaccess/res/sc037.pngbin0 -> 515 bytes
-rw-r--r--default_images/dbaccess/res/sc038.pngbin0 -> 493 bytes
-rw-r--r--default_images/dbaccess/res/sc039.pngbin0 -> 516 bytes
-rw-r--r--default_images/dbaccess/res/sc040.pngbin0 -> 655 bytes
-rw-r--r--default_images/dbaccess/res/sch036.pngbin0 -> 142 bytes
-rw-r--r--default_images/dbaccess/res/sch037.pngbin0 -> 160 bytes
-rw-r--r--default_images/dbaccess/res/sch038.pngbin0 -> 176 bytes
-rw-r--r--default_images/dbaccess/res/sch039.pngbin0 -> 146 bytes
-rw-r--r--default_images/dbaccess/res/sch040.pngbin0 -> 175 bytes
-rw-r--r--default_images/dbaccess/res/sortdown.pngbin0 -> 320 bytes
-rw-r--r--default_images/dbaccess/res/sortdown_h.pngbin0 -> 136 bytes
-rw-r--r--default_images/dbaccess/res/sortup.pngbin0 -> 334 bytes
-rw-r--r--default_images/dbaccess/res/sortup_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/dbaccess/res/sxh03187.pngbin0 -> 141 bytes
-rw-r--r--default_images/dbaccess/res/sxh16670.pngbin0 -> 167 bytes
-rw-r--r--default_images/dbaccess/res/tables_32.pngbin0 -> 944 bytes
-rw-r--r--default_images/dbaccess/res/tables_32_h.pngbin0 -> 220 bytes
-rw-r--r--default_images/desktop/res/caution_12.pngbin0 -> 376 bytes
-rw-r--r--default_images/desktop/res/caution_12_h.pngbin0 -> 137 bytes
-rw-r--r--default_images/desktop/res/caution_16.pngbin0 -> 523 bytes
-rw-r--r--default_images/desktop/res/caution_16_h.pngbin0 -> 150 bytes
-rw-r--r--default_images/desktop/res/extension_16.pngbin0 -> 557 bytes
-rw-r--r--default_images/desktop/res/extension_16_h.pngbin0 -> 148 bytes
-rw-r--r--default_images/desktop/res/extension_32.pngbin0 -> 838 bytes
-rw-r--r--default_images/desktop/res/extension_32_h.pngbin0 -> 223 bytes
-rw-r--r--default_images/desktop/res/info_16.pngbin0 -> 801 bytes
-rw-r--r--default_images/desktop/res/info_16_h.pngbin0 -> 370 bytes
-rw-r--r--default_images/desktop/res/lock_16.pngbin0 -> 735 bytes
-rw-r--r--default_images/desktop/res/lock_16_h.pngbin0 -> 149 bytes
-rw-r--r--default_images/desktop/res/regkey.pngbin0 -> 1130 bytes
-rw-r--r--default_images/desktop/res/shared_16.pngbin0 -> 390 bytes
-rw-r--r--default_images/desktop/res/shared_16_h.pngbin0 -> 153 bytes
-rw-r--r--default_images/extensions/res/addresspilot.pngbin0 -> 1304 bytes
-rw-r--r--default_images/extensions/res/arrow.pngbin0 -> 320 bytes
-rw-r--r--default_images/extensions/res/buttonminus.pngbin0 -> 278 bytes
-rw-r--r--default_images/extensions/res/buttonminus_hc.pngbin0 -> 119 bytes
-rw-r--r--default_images/extensions/res/buttonplus.pngbin0 -> 232 bytes
-rw-r--r--default_images/extensions/res/buttonplus_hc.pngbin0 -> 84 bytes
-rw-r--r--default_images/extensions/res/m_arrow.pngbin0 -> 328 bytes
-rw-r--r--default_images/extensions/source/scanner/handle.pngbin0 -> 122 bytes
-rw-r--r--default_images/extensions/source/scanner/minus.pngbin0 -> 175 bytes
-rw-r--r--default_images/extensions/source/scanner/plus.pngbin0 -> 191 bytes
-rw-r--r--default_images/extensions/source/update/ui/onlineupdate_16.pngbin0 -> 334 bytes
-rw-r--r--default_images/extensions/source/update/ui/onlineupdate_16_h.pngbin0 -> 132 bytes
-rw-r--r--default_images/extensions/source/update/ui/onlineupdate_26.pngbin0 -> 543 bytes
-rw-r--r--default_images/extensions/source/update/ui/onlineupdate_26_h.pngbin0 -> 160 bytes
-rw-r--r--default_images/formula/res/fapclose.pngbin0 -> 255 bytes
-rw-r--r--default_images/formula/res/fapclose_h.pngbin0 -> 103 bytes
-rw-r--r--default_images/formula/res/faperror.pngbin0 -> 257 bytes
-rw-r--r--default_images/formula/res/faperror_h.pngbin0 -> 102 bytes
-rw-r--r--default_images/formula/res/fapok.pngbin0 -> 248 bytes
-rw-r--r--default_images/formula/res/fapok_h.pngbin0 -> 102 bytes
-rw-r--r--default_images/formula/res/fapopen.pngbin0 -> 463 bytes
-rw-r--r--default_images/formula/res/fapopen_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/formula/res/fx.pngbin0 -> 280 bytes
-rw-r--r--default_images/formula/res/fx_h.pngbin0 -> 118 bytes
-rw-r--r--default_images/formula/res/refinp1.pngbin0 -> 428 bytes
-rw-r--r--default_images/formula/res/refinp1_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/formula/res/refinp2.pngbin0 -> 349 bytes
-rw-r--r--default_images/formula/res/refinp2_h.pngbin0 -> 122 bytes
-rw-r--r--default_images/fpicker/res/fp011.pngbin0 -> 446 bytes
-rw-r--r--default_images/fpicker/res/fp014.pngbin0 -> 374 bytes
-rw-r--r--default_images/fpicker/res/fph011.pngbin0 -> 135 bytes
-rw-r--r--default_images/fpicker/res/fph014.pngbin0 -> 125 bytes
-rw-r--r--default_images/fpicker/res/list.pngbin0 -> 202 bytes
-rw-r--r--default_images/framework/res/addtemplate_32.pngbin0 -> 572 bytes
-rw-r--r--default_images/framework/res/arrow.pngbin0 -> 320 bytes
-rw-r--r--default_images/framework/res/backing.pngbin0 -> 19498 bytes
-rw-r--r--default_images/framework/res/backing_hc.pngbin0 -> 19498 bytes
-rw-r--r--default_images/framework/res/backing_right.pngbin0 -> 6396 bytes
-rw-r--r--default_images/framework/res/backing_right_hc.pngbin0 -> 6396 bytes
-rw-r--r--default_images/framework/res/backing_rtl_left.pngbin0 -> 19498 bytes
-rw-r--r--default_images/framework/res/backing_rtl_left_hc.pngbin0 -> 19498 bytes
-rw-r--r--default_images/framework/res/backing_rtl_right.pngbin0 -> 6396 bytes
-rw-r--r--default_images/framework/res/backing_rtl_right_hc.pngbin0 -> 6396 bytes
-rw-r--r--default_images/framework/res/backing_space.pngbin0 -> 336 bytes
-rw-r--r--default_images/framework/res/backing_space_hc.pngbin0 -> 336 bytes
-rw-r--r--default_images/framework/res/extension.pngbin0 -> 376 bytes
-rw-r--r--default_images/framework/res/extension_hc.pngbin0 -> 181 bytes
-rw-r--r--default_images/framework/res/folder_32.pngbin0 -> 723 bytes
-rw-r--r--default_images/framework/res/folder_32_hc.pngbin0 -> 169 bytes
-rw-r--r--default_images/framework/res/info_26.pngbin0 -> 490 bytes
-rw-r--r--default_images/framework/res/info_hc.pngbin0 -> 122 bytes
-rw-r--r--default_images/framework/res/logo.pngbin0 -> 492 bytes
-rw-r--r--default_images/framework/res/register_32.pngbin0 -> 441 bytes
-rw-r--r--default_images/framework/res/register_hc.pngbin0 -> 162 bytes
-rw-r--r--default_images/framework/res/template_hc.pngbin0 -> 152 bytes
-rw-r--r--default_images/framework/res/templates_32.pngbin0 -> 810 bytes
-rw-r--r--default_images/framework/res/templates_32_hc.pngbin0 -> 209 bytes
-rw-r--r--default_images/goodies/res/bombe.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/explos1.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/explos2.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/explos3.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/fighter1.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/fighterl.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/fighterr.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/helden.bmpbin0 -> 4438 bytes
-rw-r--r--default_images/goodies/res/monitio1.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monitio2.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monstb1.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monstb2.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monstb3.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monstb4.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monster1.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monster2.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monster3.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/monster4.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/scores.bmpbin0 -> 66 bytes
-rw-r--r--default_images/goodies/res/swars.bmpbin0 -> 2142 bytes
-rw-r--r--default_images/goodies/res/uvisibl1.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/uvisibl2.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/uvisibl3.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall1.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall10.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall2.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall3.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall4.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall5.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall6.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall7.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall8.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wall9.bmpbin0 -> 190 bytes
-rw-r--r--default_images/goodies/res/wlcome2.bmpbin0 -> 190 bytes
-rw-r--r--default_images/introabout/about.bmpbin0 -> 147114 bytes
-rwxr-xr-xdefault_images/introabout/about.pngbin0 -> 12956 bytes
-rw-r--r--default_images/introabout/intro.bmpbin0 -> 806718 bytes
-rwxr-xr-xdefault_images/introabout/intro.pngbin0 -> 31528 bytes
-rw-r--r--default_images/minimizer/minimizepresi_80.pngbin0 -> 6716 bytes
-rw-r--r--default_images/minimizer/minimizepresi_80_h.pngbin0 -> 4233 bytes
-rw-r--r--default_images/minimizer/opt_16.pngbin0 -> 4033 bytes
-rw-r--r--default_images/minimizer/opt_16_h.pngbin0 -> 3683 bytes
-rw-r--r--default_images/minimizer/opt_26.pngbin0 -> 4401 bytes
-rw-r--r--default_images/minimizer/opt_26_h.pngbin0 -> 3845 bytes
-rw-r--r--default_images/oracleirm/res/irmprotecteditem.bmp0
-rw-r--r--default_images/padmin/source/butter.pngbin0 -> 1013 bytes
-rw-r--r--default_images/padmin/source/fax.pngbin0 -> 457 bytes
-rw-r--r--default_images/padmin/source/fax_16_h.pngbin0 -> 151 bytes
-rw-r--r--default_images/padmin/source/pdf.pngbin0 -> 381 bytes
-rw-r--r--default_images/padmin/source/print.pngbin0 -> 346 bytes
-rw-r--r--default_images/padmin/source/printer_16_h.pngbin0 -> 132 bytes
-rw-r--r--default_images/padmin/source/printer_40x48_h.pngbin0 -> 297 bytes
-rw-r--r--default_images/padmin/source/printer_large.pngbin0 -> 480 bytes
-rw-r--r--default_images/padmin/source/printpdf_16_h.pngbin0 -> 149 bytes
-rw-r--r--default_images/reportdesign/res/report_16.pngbin0 -> 398 bytes
-rw-r--r--default_images/reportdesign/res/sc20557.pngbin0 -> 510 bytes
-rw-r--r--default_images/reportdesign/res/sc30768.pngbin0 -> 336 bytes
-rw-r--r--default_images/reportdesign/res/sc30769.pngbin0 -> 323 bytes
-rw-r--r--default_images/reportdesign/res/sc30770.pngbin0 -> 296 bytes
-rw-r--r--default_images/reportdesign/res/sch30768.pngbin0 -> 137 bytes
-rw-r--r--default_images/reportdesign/res/sch30769.pngbin0 -> 139 bytes
-rw-r--r--default_images/reportdesign/res/sch30770.pngbin0 -> 134 bytes
-rw-r--r--default_images/reportdesign/res/sortdown.pngbin0 -> 583 bytes
-rw-r--r--default_images/reportdesign/res/sortdown_h.pngbin0 -> 174 bytes
-rw-r--r--default_images/reportdesign/res/sortup.pngbin0 -> 574 bytes
-rw-r--r--default_images/reportdesign/res/sortup_h.pngbin0 -> 176 bytes
-rw-r--r--default_images/reportdesign/res/sx10454.pngbin0 -> 326 bytes
-rw-r--r--default_images/reportdesign/res/sx10928.pngbin0 -> 149 bytes
-rw-r--r--default_images/reportdesign/res/sx10929.pngbin0 -> 205 bytes
-rw-r--r--default_images/reportdesign/res/sx11047.pngbin0 -> 387 bytes
-rw-r--r--default_images/reportdesign/res/sx12452.pngbin0 -> 570 bytes
-rw-r--r--default_images/reportdesign/res/sx12453.pngbin0 -> 570 bytes
-rw-r--r--default_images/reportdesign/res/sx12454.pngbin0 -> 362 bytes
-rw-r--r--default_images/reportdesign/res/sx12464.pngbin0 -> 398 bytes
-rw-r--r--default_images/reportdesign/res/sx12466.pngbin0 -> 339 bytes
-rw-r--r--default_images/reportdesign/res/sx12468.pngbin0 -> 331 bytes
-rw-r--r--default_images/reportdesign/res/sx12477.pngbin0 -> 394 bytes
-rw-r--r--default_images/reportdesign/res/sx12594.pngbin0 -> 287 bytes
-rw-r--r--default_images/reportdesign/res/sx12602.pngbin0 -> 498 bytes
-rw-r--r--default_images/reportdesign/res/sx12603.pngbin0 -> 326 bytes
-rw-r--r--default_images/reportdesign/res/sxh10454.pngbin0 -> 82 bytes
-rw-r--r--default_images/reportdesign/res/sxh10928.pngbin0 -> 96 bytes
-rw-r--r--default_images/reportdesign/res/sxh10929.pngbin0 -> 101 bytes
-rw-r--r--default_images/reportdesign/res/sxh11047.pngbin0 -> 126 bytes
-rw-r--r--default_images/reportdesign/res/sxh12452.pngbin0 -> 570 bytes
-rw-r--r--default_images/reportdesign/res/sxh12453.pngbin0 -> 570 bytes
-rw-r--r--default_images/reportdesign/res/sxh12454.pngbin0 -> 83 bytes
-rw-r--r--default_images/reportdesign/res/sxh12464.pngbin0 -> 398 bytes
-rw-r--r--default_images/reportdesign/res/sxh12466.pngbin0 -> 99 bytes
-rw-r--r--default_images/reportdesign/res/sxh12468.pngbin0 -> 96 bytes
-rw-r--r--default_images/reportdesign/res/sxh12477.pngbin0 -> 101 bytes
-rw-r--r--default_images/reportdesign/res/sxh12594.pngbin0 -> 124 bytes
-rw-r--r--default_images/reportdesign/res/sxh12602.pngbin0 -> 259 bytes
-rw-r--r--default_images/reportdesign/res/sxh12603.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/adrbook.pngbin0 -> 763 bytes
-rw-r--r--default_images/res/adrbook_hc.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/arrow_move_down.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/arrow_move_down_hc.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/arrow_move_up.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/arrow_move_up_hc.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/arrowup_16.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/ballgreen_7.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/ballred_7.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/basbrk.pngbin0 -> 385 bytes
-rw-r--r--default_images/res/basgocl.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/basobj2.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/baswatr.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/baswatr_h.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/browse.pngbin0 -> 562 bytes
-rw-r--r--default_images/res/browse_hc.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/ar/lc_bold.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/ar/lc_italic.pngbin0 -> 238 bytes
-rw-r--r--default_images/res/commandimagelist/ar/lc_underline.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/ar/lch_bold.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/ar/lch_italic.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/ar/lch_underline.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/ar/sc_bold.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/ar/sc_italic.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/ar/sc_underline.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/ar/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/ar/sch_italic.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/ar/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_backcolor.pngbin0 -> 336 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_bold.pngbin0 -> 354 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_dbqueryrename.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_dbtablerename.pngbin0 -> 198 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_doubleclicktextedit.pngbin0 -> 223 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_edit.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_editglossary.pngbin0 -> 252 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_hyphenate.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_hyphenation.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_insertedit.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_italic.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_label.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_ordercrit.pngbin0 -> 356 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_pickthrough.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_shadowed.pngbin0 -> 600 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_sortascending.pngbin0 -> 431 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_sortdescending.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_sortdown.pngbin0 -> 431 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_sortup.pngbin0 -> 431 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_spelldialog.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_spelling.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_spellonline.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_strikeout.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_tablesort.pngbin0 -> 356 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_textdraft.pngbin0 -> 247 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_thesaurus.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_thesaurusdialog.pngbin0 -> 249 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_underline.pngbin0 -> 341 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lc_underlinedouble.pngbin0 -> 342 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_backcolor.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_bold.pngbin0 -> 312 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_doubleclicktextedit.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_edit.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_editglossary.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_hyphenate.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_hyphenation.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_insertedit.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_insertfixedtext.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_italic.pngbin0 -> 330 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_label.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_ordercrit.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_pickthrough.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_quickedit.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_sortascending.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_sortdescending.pngbin0 -> 373 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_sortdown.pngbin0 -> 376 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_sortup.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_spelldialog.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_spelling.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_spellonline.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_strikeout.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_tablesort.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_thesaurus.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_thesaurusdialog.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_toggleaxistitle.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_toggletitle.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_underline.pngbin0 -> 285 bytes
-rw-r--r--default_images/res/commandimagelist/bg/lch_underlinedouble.pngbin0 -> 287 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_backcolor.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_bold.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_dbqueryrename.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_dbtablerename.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_doubleclicktextedit.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_edit.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_editglossary.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_hyphenate.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_hyphenation.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_insertedit.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_insertfixedtext.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_italic.pngbin0 -> 232 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_label.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_ordercrit.pngbin0 -> 237 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_quickedit.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_shadowed.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_sortascending.pngbin0 -> 286 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_sortdescending.pngbin0 -> 279 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_sortdown.pngbin0 -> 279 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_sortup.pngbin0 -> 281 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_spelldialog.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_spelling.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_spellonline.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_strikeout.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_tablesort.pngbin0 -> 237 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_textdraft.pngbin0 -> 192 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_thesaurus.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_thesaurusdialog.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_underline.pngbin0 -> 233 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sc_underlinedouble.pngbin0 -> 251 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_backcolor.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_bold.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_editglossary.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_hyphenate.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_hyphenation.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_insertedit.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_italic.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_label.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_ordercrit.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_pickthrough.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_sortascending.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_sortdescending.pngbin0 -> 246 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_sortdown.pngbin0 -> 246 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_sortup.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_spelldialog.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_spelling.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_spellonline.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_strikeout.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_tablesort.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_thesaurus.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_thesaurusdialog.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_underline.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/bg/sch_underlinedouble.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lc_bold.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lc_italic.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lc_underline.pngbin0 -> 274 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lc_underlinedouble.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lch_bold.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lch_italic.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lch_underline.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/ca/lch_underlinedouble.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sc_bold.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sc_italic.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sc_underline.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sc_underlinedouble.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sch_bold.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sch_italic.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sch_underline.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/ca/sch_underlinedouble.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lc_bold.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lc_italic.pngbin0 -> 239 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lc_numberformatdecimal.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lc_underline.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lc_underlinedouble.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lch_bold.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lch_numberformatdecimal.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lch_underline.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/cs/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sc_bold.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sc_italic.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sc_numberformatdecimal.pngbin0 -> 266 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sc_underline.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sc_underlinedouble.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sch_italic.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sch_numberformatdecimal.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/cs/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/de/lc_bold.pngbin0 -> 256 bytes
-rw-r--r--default_images/res/commandimagelist/de/lc_italic.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/commandimagelist/de/lc_numberformatdecimal.pngbin0 -> 373 bytes
-rw-r--r--default_images/res/commandimagelist/de/lc_underline.pngbin0 -> 361 bytes
-rw-r--r--default_images/res/commandimagelist/de/lc_underlinedouble.pngbin0 -> 357 bytes
-rw-r--r--default_images/res/commandimagelist/de/lch_bold.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/de/lch_italic.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/de/lch_numberformatdecimal.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/de/lch_underline.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/de/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/de/sc_bold.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/de/sc_italic.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/de/sc_numberformatdecimal.pngbin0 -> 280 bytes
-rw-r--r--default_images/res/commandimagelist/de/sc_underline.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/de/sc_underlinedouble.pngbin0 -> 258 bytes
-rw-r--r--default_images/res/commandimagelist/de/sch_bold.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/de/sch_italic.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/de/sch_numberformatdecimal.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/de/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/de/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lc_bold.pngbin0 -> 366 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lc_italic.pngbin0 -> 320 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lc_numberformatdecimal.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lc_underline.pngbin0 -> 361 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lc_underlinedouble.pngbin0 -> 356 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lch_bold.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lch_italic.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lch_numberformatdecimal.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lch_underline.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sc_bold.pngbin0 -> 275 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sc_italic.pngbin0 -> 236 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sc_numberformatdecimal.pngbin0 -> 266 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sc_underline.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sc_underlinedouble.pngbin0 -> 258 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sch_italic.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sch_numberformatdecimal.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sch_underline.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/en-GB/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/es/lc_bold.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/es/lc_italic.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/es/lc_numberformatdecimal.pngbin0 -> 372 bytes
-rw-r--r--default_images/res/commandimagelist/es/lc_underline.pngbin0 -> 274 bytes
-rw-r--r--default_images/res/commandimagelist/es/lc_underlinedouble.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/es/lch_bold.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/es/lch_italic.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/es/lch_numberformatdecimal.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/es/lch_underline.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/es/lch_underlinedouble.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/es/sc_bold.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/es/sc_italic.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/es/sc_numberformatdecimal.pngbin0 -> 280 bytes
-rw-r--r--default_images/res/commandimagelist/es/sc_underline.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/es/sc_underlinedouble.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/es/sch_bold.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/es/sch_italic.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/es/sch_numberformatdecimal.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/es/sch_underline.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/es/sch_underlinedouble.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/et/lc_bold.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/et/lc_italic.pngbin0 -> 238 bytes
-rw-r--r--default_images/res/commandimagelist/et/lc_numberformatdecimal.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/et/lc_underline.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/et/lc_underlinedouble.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/et/lch_bold.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/et/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/et/lch_numberformatdecimal.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/et/lch_underline.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/et/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/et/sc_bold.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/et/sc_italic.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/et/sc_numberformatdecimal.pngbin0 -> 266 bytes
-rw-r--r--default_images/res/commandimagelist/et/sc_underline.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/et/sc_underlinedouble.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/et/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/et/sch_italic.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/et/sch_numberformatdecimal.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/et/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/et/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lc_bold.pngbin0 -> 249 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lc_italic.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lc_underline.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lc_underlinedouble.pngbin0 -> 259 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lch_bold.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lch_italic.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lch_underline.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/fr/lch_underlinedouble.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sc_bold.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sc_italic.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sc_underline.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sc_underlinedouble.pngbin0 -> 211 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sch_bold.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sch_italic.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sch_underline.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/fr/sch_underlinedouble.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lc_bold.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lc_italic.pngbin0 -> 316 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lc_underline.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lc_underlinedouble.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lch_bold.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lch_italic.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lch_underline.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/hu/lch_underlinedouble.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sc_bold.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sc_italic.pngbin0 -> 233 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sc_underline.pngbin0 -> 219 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sc_underlinedouble.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sch_bold.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sch_italic.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sch_underline.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/hu/sch_underlinedouble.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/it/lc_bold.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/commandimagelist/it/lc_italic.pngbin0 -> 289 bytes
-rw-r--r--default_images/res/commandimagelist/it/lc_underline.pngbin0 -> 274 bytes
-rw-r--r--default_images/res/commandimagelist/it/lc_underlinedouble.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/it/lch_bold.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/it/lch_italic.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/it/lch_underline.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/it/lch_underlinedouble.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/it/sc_bold.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/it/sc_italic.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/it/sc_underline.pngbin0 -> 219 bytes
-rw-r--r--default_images/res/commandimagelist/it/sc_underlinedouble.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/it/sch_bold.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/it/sch_italic.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/it/sch_underline.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/it/sch_underlinedouble.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lc_bold.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lc_italic.pngbin0 -> 240 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lc_underline.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lc_underlinedouble.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lch_bold.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lch_underline.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/ja/lch_underlinedouble.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sc_bold.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sc_italic.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sc_underline.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sc_underlinedouble.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sch_italic.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/ja/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/km/lc_bold.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/km/lc_italic.pngbin0 -> 293 bytes
-rw-r--r--default_images/res/commandimagelist/km/lc_numberformatdecimal.pngbin0 -> 356 bytes
-rw-r--r--default_images/res/commandimagelist/km/lc_underline.pngbin0 -> 309 bytes
-rw-r--r--default_images/res/commandimagelist/km/lc_underlinedouble.pngbin0 -> 308 bytes
-rw-r--r--default_images/res/commandimagelist/km/lch_bold.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/km/lch_italic.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/km/lch_numberformatdecimal.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/km/lch_underline.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/km/lch_underlinedouble.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/km/sc_bold.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/km/sc_italic.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/km/sc_numberformatdecimal.pngbin0 -> 266 bytes
-rw-r--r--default_images/res/commandimagelist/km/sc_underline.pngbin0 -> 294 bytes
-rw-r--r--default_images/res/commandimagelist/km/sc_underlinedouble.pngbin0 -> 298 bytes
-rw-r--r--default_images/res/commandimagelist/km/sch_bold.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/km/sch_italic.pngbin0 -> 259 bytes
-rw-r--r--default_images/res/commandimagelist/km/sch_numberformatdecimal.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/km/sch_underline.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/km/sch_underlinedouble.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_bold.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_charfontname.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_color.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_drawtext.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_fontcolor.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_fontheight.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_italic.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_ordercrit.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_outlinefont.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_shadowed.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_sortdown.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_sortup.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_strikeout.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_tablesort.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_text.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_text_marquee.pngbin0 -> 192 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_textdirectionlefttoright.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_textdirectiontoptobottom.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_texttoolbox.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_underline.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_underlinedouble.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lc_verticaltext.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_bold.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_charfontname.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_color.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_drawtext.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_fontcolor.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_fontheight.pngbin0 -> 216 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_italic.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_ordercrit.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_outlinefont.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_shadowed.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_sortdown.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_sortup.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_strikeout.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_tablesort.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_text.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_text_marquee.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_textdirectionlefttoright.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_textdirectiontoptobottom.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_texttoolbox.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_underline.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_underlinedouble.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/ko/lch_verticaltext.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_charfontname.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_color.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_drawtext.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_fontcolor.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_fontheight.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_italic.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_ordercrit.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_outlinefont.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_shadowed.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_sortdown.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_sortup.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_strikeout.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_tablesort.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_text.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_text_marquee.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_textdirectionlefttoright.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_textdirectiontoptobottom.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_texttoolbox.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_underline.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_underlinedouble.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sc_verticaltext.pngbin0 -> 106 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_bold.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_charfontname.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_color.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_drawtext.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_fontcolor.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_fontheight.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_italic.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_ordercrit.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_outlinefont.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_shadowed.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_sortdown.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_sortup.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_strikeout.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_tablesort.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_text.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_text_marquee.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_textdirectionlefttoright.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_textdirectiontoptobottom.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_texttoolbox.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_underline.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_underlinedouble.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/ko/sch_verticaltext.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/lc_absoluterecord.pngbin0 -> 1055 bytes
-rw-r--r--default_images/res/commandimagelist/lc_actionmode.pngbin0 -> 854 bytes
-rw-r--r--default_images/res/commandimagelist/lc_addbookmark.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_adddatefield.pngbin0 -> 591 bytes
-rw-r--r--default_images/res/commandimagelist/lc_adddirect.pngbin0 -> 445 bytes
-rw-r--r--default_images/res/commandimagelist/lc_addfield.pngbin0 -> 429 bytes
-rw-r--r--default_images/res/commandimagelist/lc_addons.pngbin0 -> 546 bytes
-rw-r--r--default_images/res/commandimagelist/lc_addprintarea.pngbin0 -> 561 bytes
-rw-r--r--default_images/res/commandimagelist/lc_addtable.pngbin0 -> 490 bytes
-rw-r--r--default_images/res/commandimagelist/lc_addwatch.pngbin0 -> 542 bytes
-rw-r--r--default_images/res/commandimagelist/lc_adjust.pngbin0 -> 963 bytes
-rw-r--r--default_images/res/commandimagelist/lc_advancedmode.pngbin0 -> 1054 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignblock.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignbottom.pngbin0 -> 584 bytes
-rw-r--r--default_images/res/commandimagelist/lc_aligncenter.pngbin0 -> 624 bytes
-rw-r--r--default_images/res/commandimagelist/lc_aligndown.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignhorizontalcenter.pngbin0 -> 235 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignleft.pngbin0 -> 232 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignmiddle.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignright.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/commandimagelist/lc_aligntop.pngbin0 -> 572 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignup.pngbin0 -> 426 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignvcenter.pngbin0 -> 671 bytes
-rw-r--r--default_images/res/commandimagelist/lc_alignverticalcenter.pngbin0 -> 672 bytes
-rw-r--r--default_images/res/commandimagelist/lc_animationeffects.pngbin0 -> 619 bytes
-rw-r--r--default_images/res/commandimagelist/lc_animationmode.pngbin0 -> 962 bytes
-rw-r--r--default_images/res/commandimagelist/lc_animationobjects.pngbin0 -> 680 bytes
-rw-r--r--default_images/res/commandimagelist/lc_apply.pngbin0 -> 1329 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arc.pngbin0 -> 680 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.chevron.pngbin0 -> 547 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.circular-arrow.pngbin0 -> 787 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.corner-right-arrow.pngbin0 -> 413 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.down-arrow-callout.pngbin0 -> 515 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.down-arrow.pngbin0 -> 527 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.left-arrow-callout.pngbin0 -> 550 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.left-arrow.pngbin0 -> 508 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.left-right-arrow-callout.pngbin0 -> 564 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.left-right-arrow.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.notched-right-arrow.pngbin0 -> 532 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.pentagon-right.pngbin0 -> 487 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.quad-arrow-callout.pngbin0 -> 779 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.quad-arrow.pngbin0 -> 648 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.right-arrow-callout.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.right-arrow.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.s-sharped-arrow.pngbin0 -> 867 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.split-arrow.pngbin0 -> 611 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.split-round-arrow.pngbin0 -> 730 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.striped-right-arrow.pngbin0 -> 554 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.up-arrow-callout.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.up-arrow.pngbin0 -> 487 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.up-down-arrow-callout.pngbin0 -> 598 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.up-down-arrow.pngbin0 -> 586 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.up-right-arrow-callout.pngbin0 -> 642 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.up-right-arrow.pngbin0 -> 534 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowshapes.up-right-down-arrow.pngbin0 -> 613 bytes
-rw-r--r--default_images/res/commandimagelist/lc_arrowstoolbox.pngbin0 -> 301 bytes
-rw-r--r--default_images/res/commandimagelist/lc_assignlayout.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/lc_autocontrolfocus.pngbin0 -> 731 bytes
-rw-r--r--default_images/res/commandimagelist/lc_autofilter.pngbin0 -> 854 bytes
-rw-r--r--default_images/res/commandimagelist/lc_autoformat.pngbin0 -> 810 bytes
-rw-r--r--default_images/res/commandimagelist/lc_autosum.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/commandimagelist/lc_avmediaplayer.pngbin0 -> 501 bytes
-rw-r--r--default_images/res/commandimagelist/lc_backcolor.pngbin0 -> 769 bytes
-rw-r--r--default_images/res/commandimagelist/lc_backgroundcolor.pngbin0 -> 713 bytes
-rw-r--r--default_images/res/commandimagelist/lc_backgroundpatterncontroller.pngbin0 -> 712 bytes
-rw-r--r--default_images/res/commandimagelist/lc_backward.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.block-arc.pngbin0 -> 665 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.can.pngbin0 -> 752 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.circle-pie.pngbin0 -> 804 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.circle.pngbin0 -> 822 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.cross.pngbin0 -> 448 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.cube.pngbin0 -> 590 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.diamond.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.ellipse.pngbin0 -> 693 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.frame.pngbin0 -> 463 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.hexagon.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.isosceles-triangle.pngbin0 -> 462 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.octagon.pngbin0 -> 490 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.paper.pngbin0 -> 522 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.parallelogram.pngbin0 -> 507 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.pentagon.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.pngbin0 -> 572 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.quadrat.pngbin0 -> 310 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.rectangle.pngbin0 -> 271 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.right-triangle.pngbin0 -> 461 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.ring.pngbin0 -> 1146 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.round-quadrat.pngbin0 -> 505 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.round-rectangle.pngbin0 -> 408 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicshapes.trapezoid.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicstepinto.pngbin0 -> 801 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicstepout.pngbin0 -> 771 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicstepover.pngbin0 -> 739 bytes
-rw-r--r--default_images/res/commandimagelist/lc_basicstop.pngbin0 -> 616 bytes
-rw-r--r--default_images/res/commandimagelist/lc_beamer.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_beforeobject.pngbin0 -> 654 bytes
-rw-r--r--default_images/res/commandimagelist/lc_behindobject.pngbin0 -> 726 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezier_unfilled.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezierappend.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezierclose.pngbin0 -> 245 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezierconvert.pngbin0 -> 665 bytes
-rw-r--r--default_images/res/commandimagelist/lc_beziercutline.pngbin0 -> 1078 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezierdelete.pngbin0 -> 416 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezieredge.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/lc_beziereliminatepoints.pngbin0 -> 447 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezierfill.pngbin0 -> 725 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bezierinsert.pngbin0 -> 429 bytes
-rw-r--r--default_images/res/commandimagelist/lc_beziermove.pngbin0 -> 429 bytes
-rw-r--r--default_images/res/commandimagelist/lc_beziersmooth.pngbin0 -> 294 bytes
-rw-r--r--default_images/res/commandimagelist/lc_beziersymmetric.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bighandles.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bold.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/lc_borderdialog.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bringtofront.pngbin0 -> 436 bytes
-rw-r--r--default_images/res/commandimagelist/lc_browsebackward.pngbin0 -> 731 bytes
-rw-r--r--default_images/res/commandimagelist/lc_browseforward.pngbin0 -> 716 bytes
-rw-r--r--default_images/res/commandimagelist/lc_browseview.pngbin0 -> 1139 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bullet.pngbin0 -> 1067 bytes
-rw-r--r--default_images/res/commandimagelist/lc_bulletsandnumberingdialog.pngbin0 -> 603 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.cloud-callout.pngbin0 -> 1140 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.line-callout-1.pngbin0 -> 497 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.line-callout-2.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.line-callout-3.pngbin0 -> 350 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.pngbin0 -> 759 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.rectangular-callout.pngbin0 -> 536 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.round-callout.pngbin0 -> 867 bytes
-rw-r--r--default_images/res/commandimagelist/lc_calloutshapes.round-rectangular-callout.pngbin0 -> 759 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cancel.pngbin0 -> 853 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cellvertbottom.pngbin0 -> 584 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cellvertcenter.pngbin0 -> 671 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cellverttop.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/commandimagelist/lc_centerpara.pngbin0 -> 235 bytes
-rw-r--r--default_images/res/commandimagelist/lc_chainframes.pngbin0 -> 513 bytes
-rw-r--r--default_images/res/commandimagelist/lc_changebezier.pngbin0 -> 913 bytes
-rw-r--r--default_images/res/commandimagelist/lc_changepolygon.pngbin0 -> 833 bytes
-rw-r--r--default_images/res/commandimagelist/lc_charfontname.pngbin0 -> 925 bytes
-rw-r--r--default_images/res/commandimagelist/lc_checkbox.pngbin0 -> 608 bytes
-rw-r--r--default_images/res/commandimagelist/lc_choosecontrols.pngbin0 -> 958 bytes
-rw-r--r--default_images/res/commandimagelist/lc_choosedesign.pngbin0 -> 827 bytes
-rw-r--r--default_images/res/commandimagelist/lc_choosemacro.pngbin0 -> 1444 bytes
-rw-r--r--default_images/res/commandimagelist/lc_choosepolygon.pngbin0 -> 417 bytes
-rw-r--r--default_images/res/commandimagelist/lc_circle.pngbin0 -> 822 bytes
-rw-r--r--default_images/res/commandimagelist/lc_circle_unfilled.pngbin0 -> 834 bytes
-rw-r--r--default_images/res/commandimagelist/lc_circlearc.pngbin0 -> 733 bytes
-rw-r--r--default_images/res/commandimagelist/lc_circlecut.pngbin0 -> 866 bytes
-rw-r--r--default_images/res/commandimagelist/lc_circlecut_unfilled.pngbin0 -> 927 bytes
-rw-r--r--default_images/res/commandimagelist/lc_circlepie.pngbin0 -> 804 bytes
-rw-r--r--default_images/res/commandimagelist/lc_circlepie_unfilled.pngbin0 -> 801 bytes
-rw-r--r--default_images/res/commandimagelist/lc_clickchangerotation.pngbin0 -> 1062 bytes
-rw-r--r--default_images/res/commandimagelist/lc_closedoc.pngbin0 -> 772 bytes
-rw-r--r--default_images/res/commandimagelist/lc_closedocs.pngbin0 -> 373 bytes
-rw-r--r--default_images/res/commandimagelist/lc_closemasterview.pngbin0 -> 870 bytes
-rw-r--r--default_images/res/commandimagelist/lc_closewin.pngbin0 -> 772 bytes
-rw-r--r--default_images/res/commandimagelist/lc_color.pngbin0 -> 630 bytes
-rw-r--r--default_images/res/commandimagelist/lc_colorsettings.pngbin0 -> 812 bytes
-rw-r--r--default_images/res/commandimagelist/lc_colorview.pngbin0 -> 469 bytes
-rw-r--r--default_images/res/commandimagelist/lc_combobox.pngbin0 -> 866 bytes
-rw-r--r--default_images/res/commandimagelist/lc_commontaskbarvisible.pngbin0 -> 761 bytes
-rw-r--r--default_images/res/commandimagelist/lc_compilebasic.pngbin0 -> 630 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cone.pngbin0 -> 611 bytes
-rw-r--r--default_images/res/commandimagelist/lc_config.pngbin0 -> 958 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connector.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorarrowend.pngbin0 -> 498 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorarrows.pngbin0 -> 434 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorarrowstart.pngbin0 -> 500 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcircleend.pngbin0 -> 504 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcircles.pngbin0 -> 408 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcirclestart.pngbin0 -> 512 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcurve.pngbin0 -> 450 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcurvearrowend.pngbin0 -> 580 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcurvearrows.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcurvearrowstart.pngbin0 -> 578 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcurvecircleend.pngbin0 -> 589 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcurvecircles.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorcurvecirclestart.pngbin0 -> 591 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorline.pngbin0 -> 373 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinearrowend.pngbin0 -> 492 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinearrows.pngbin0 -> 460 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinearrowstart.pngbin0 -> 492 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinecircleend.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinecircles.pngbin0 -> 425 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinecirclestart.pngbin0 -> 523 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlines.pngbin0 -> 409 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinesarrowend.pngbin0 -> 522 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinesarrows.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinesarrowstart.pngbin0 -> 540 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinescircleend.pngbin0 -> 549 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinescircles.pngbin0 -> 438 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectorlinescirclestart.pngbin0 -> 554 bytes
-rw-r--r--default_images/res/commandimagelist/lc_connectortoolbox.pngbin0 -> 408 bytes
-rw-r--r--default_images/res/commandimagelist/lc_contourdialog.pngbin0 -> 648 bytes
-rw-r--r--default_images/res/commandimagelist/lc_controlcodes.pngbin0 -> 486 bytes
-rw-r--r--default_images/res/commandimagelist/lc_controlproperties.pngbin0 -> 737 bytes
-rw-r--r--default_images/res/commandimagelist/lc_convertinto3d.pngbin0 -> 818 bytes
-rw-r--r--default_images/res/commandimagelist/lc_convertinto3dlathe.pngbin0 -> 883 bytes
-rw-r--r--default_images/res/commandimagelist/lc_convertinto3dlathefast.pngbin0 -> 957 bytes
-rw-r--r--default_images/res/commandimagelist/lc_copy.pngbin0 -> 542 bytes
-rw-r--r--default_images/res/commandimagelist/lc_countall.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_crookrotate.pngbin0 -> 865 bytes
-rw-r--r--default_images/res/commandimagelist/lc_crookslant.pngbin0 -> 1034 bytes
-rw-r--r--default_images/res/commandimagelist/lc_crop.pngbin0 -> 1398 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cube.pngbin0 -> 626 bytes
-rw-r--r--default_images/res/commandimagelist/lc_currencyfield.pngbin0 -> 785 bytes
-rw-r--r--default_images/res/commandimagelist/lc_customanimation.pngbin0 -> 883 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cut.pngbin0 -> 1120 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cylinder.pngbin0 -> 834 bytes
-rw-r--r--default_images/res/commandimagelist/lc_cyramid.pngbin0 -> 743 bytes
-rw-r--r--default_images/res/commandimagelist/lc_datadatapilotrun.pngbin0 -> 826 bytes
-rw-r--r--default_images/res/commandimagelist/lc_datafilterautofilter.pngbin0 -> 855 bytes
-rw-r--r--default_images/res/commandimagelist/lc_datafilterspecialfilter.pngbin0 -> 569 bytes
-rw-r--r--default_images/res/commandimagelist/lc_datafilterstandardfilter.pngbin0 -> 520 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dataimport.pngbin0 -> 348 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dataincolumns.pngbin0 -> 293 bytes
-rw-r--r--default_images/res/commandimagelist/lc_datainrows.pngbin0 -> 375 bytes
-rw-r--r--default_images/res/commandimagelist/lc_datefield.pngbin0 -> 591 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbaddrelation.pngbin0 -> 455 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbchangedesignmode.pngbin0 -> 847 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbclearquery.pngbin0 -> 920 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbdistinctvalues.pngbin0 -> 706 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbdtableedit.pngbin0 -> 599 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbformdelete.pngbin0 -> 754 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbformedit.pngbin0 -> 724 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbformopen.pngbin0 -> 777 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbformrename.pngbin0 -> 558 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbindexdesign.pngbin0 -> 780 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewform.pngbin0 -> 660 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewformautopilot.pngbin0 -> 884 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewquery.pngbin0 -> 812 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewqueryautopilot.pngbin0 -> 1048 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewquerysql.pngbin0 -> 569 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewreport.pngbin0 -> 751 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewreportautopilot.pngbin0 -> 1001 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewtable.pngbin0 -> 535 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewtableautopilot.pngbin0 -> 803 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewview.pngbin0 -> 751 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbnewviewsql.pngbin0 -> 801 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbquerydelete.pngbin0 -> 647 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbqueryedit.pngbin0 -> 896 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbqueryopen.pngbin0 -> 997 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbqueryrename.pngbin0 -> 331 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbreportdelete.pngbin0 -> 863 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbreportedit.pngbin0 -> 809 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbreportopen.pngbin0 -> 923 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbreportrename.pngbin0 -> 626 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbsortingandgrouping.pngbin0 -> 558 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbtabledelete.pngbin0 -> 647 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbtableedit.pngbin0 -> 600 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbtableopen.pngbin0 -> 743 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbtablerename.pngbin0 -> 331 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbviewaliases.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbviewfunctions.pngbin0 -> 367 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dbviewtablenames.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/lc_decrementindent.pngbin0 -> 540 bytes
-rw-r--r--default_images/res/commandimagelist/lc_decrementlevel.pngbin0 -> 581 bytes
-rw-r--r--default_images/res/commandimagelist/lc_decrementsublevels.pngbin0 -> 728 bytes
-rw-r--r--default_images/res/commandimagelist/lc_defaultbullet.pngbin0 -> 277 bytes
-rw-r--r--default_images/res/commandimagelist/lc_defaultnumbering.pngbin0 -> 331 bytes
-rw-r--r--default_images/res/commandimagelist/lc_definename.pngbin0 -> 406 bytes
-rw-r--r--default_images/res/commandimagelist/lc_defineprintarea.pngbin0 -> 602 bytes
-rw-r--r--default_images/res/commandimagelist/lc_delete.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/lc_deleteallannotation.pngbin0 -> 824 bytes
-rw-r--r--default_images/res/commandimagelist/lc_deleteannotation.pngbin0 -> 843 bytes
-rw-r--r--default_images/res/commandimagelist/lc_deletecolumns.pngbin0 -> 486 bytes
-rw-r--r--default_images/res/commandimagelist/lc_deletemasterpage.pngbin0 -> 891 bytes
-rw-r--r--default_images/res/commandimagelist/lc_deleteprintarea.pngbin0 -> 707 bytes
-rw-r--r--default_images/res/commandimagelist/lc_deleterecord.pngbin0 -> 790 bytes
-rw-r--r--default_images/res/commandimagelist/lc_deleterows.pngbin0 -> 329 bytes
-rw-r--r--default_images/res/commandimagelist/lc_designerdialog.pngbin0 -> 746 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dia.pngbin0 -> 846 bytes
-rw-r--r--default_images/res/commandimagelist/lc_diaauto.pngbin0 -> 846 bytes
-rw-r--r--default_images/res/commandimagelist/lc_diaeffect.pngbin0 -> 846 bytes
-rw-r--r--default_images/res/commandimagelist/lc_diagramdata.pngbin0 -> 341 bytes
-rw-r--r--default_images/res/commandimagelist/lc_diagramtype.pngbin0 -> 803 bytes
-rw-r--r--default_images/res/commandimagelist/lc_diaspeed.pngbin0 -> 850 bytes
-rw-r--r--default_images/res/commandimagelist/lc_diatime.pngbin0 -> 846 bytes
-rw-r--r--default_images/res/commandimagelist/lc_distributecolumns.pngbin0 -> 672 bytes
-rw-r--r--default_images/res/commandimagelist/lc_distributerows.pngbin0 -> 333 bytes
-rw-r--r--default_images/res/commandimagelist/lc_doubleclicktextedit.pngbin0 -> 809 bytes
-rw-r--r--default_images/res/commandimagelist/lc_downsearch.pngbin0 -> 620 bytes
-rw-r--r--default_images/res/commandimagelist/lc_draw.pngbin0 -> 1147 bytes
-rw-r--r--default_images/res/commandimagelist/lc_drawcaption.pngbin0 -> 926 bytes
-rw-r--r--default_images/res/commandimagelist/lc_drawchart.pngbin0 -> 636 bytes
-rw-r--r--default_images/res/commandimagelist/lc_drawselect.pngbin0 -> 502 bytes
-rw-r--r--default_images/res/commandimagelist/lc_drawtext.pngbin0 -> 439 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dsbdocumentdatasource.pngbin0 -> 1399 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dsbeditdoc.pngbin0 -> 753 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dsbformletter.pngbin0 -> 736 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dsbinsertcolumns.pngbin0 -> 495 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dsbinsertcontent.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/commandimagelist/lc_dsbrowserexplorer.pngbin0 -> 666 bytes
-rw-r--r--default_images/res/commandimagelist/lc_duplicatepage.pngbin0 -> 976 bytes
-rw-r--r--default_images/res/commandimagelist/lc_edit.pngbin0 -> 514 bytes
-rw-r--r--default_images/res/commandimagelist/lc_editdoc.pngbin0 -> 753 bytes
-rw-r--r--default_images/res/commandimagelist/lc_editframeset.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_editglossary.pngbin0 -> 705 bytes
-rw-r--r--default_images/res/commandimagelist/lc_editheaderandfooter.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/lc_editprintarea.pngbin0 -> 704 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ellipse.pngbin0 -> 692 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ellipse_unfilled.pngbin0 -> 718 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ellipsecut.pngbin0 -> 715 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ellipsecut_unfilled.pngbin0 -> 743 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ellipsetoolbox.pngbin0 -> 693 bytes
-rw-r--r--default_images/res/commandimagelist/lc_entergroup.pngbin0 -> 682 bytes
-rw-r--r--default_images/res/commandimagelist/lc_entirecolumn.pngbin0 -> 789 bytes
-rw-r--r--default_images/res/commandimagelist/lc_entirerow.pngbin0 -> 616 bytes
-rw-r--r--default_images/res/commandimagelist/lc_euroconverter.pngbin0 -> 515 bytes
-rw-r--r--default_images/res/commandimagelist/lc_executereport.pngbin0 -> 752 bytes
-rw-r--r--default_images/res/commandimagelist/lc_expandpage.pngbin0 -> 352 bytes
-rw-r--r--default_images/res/commandimagelist/lc_exportdialog.pngbin0 -> 656 bytes
-rw-r--r--default_images/res/commandimagelist/lc_exportdirecttopdf.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/commandimagelist/lc_exportto.pngbin0 -> 847 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extendedhelp.pngbin0 -> 1585 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusion3dcolor.pngbin0 -> 474 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusiondepthfloater.pngbin0 -> 890 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusiondirectionfloater.pngbin0 -> 798 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusionlightingfloater.pngbin0 -> 292 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusionsurfacefloater.pngbin0 -> 1353 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusiontiltdown.pngbin0 -> 1106 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusiontiltleft.pngbin0 -> 1271 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusiontiltright.pngbin0 -> 1271 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusiontiltup.pngbin0 -> 1118 bytes
-rw-r--r--default_images/res/commandimagelist/lc_extrusiontoggle.pngbin0 -> 894 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fieldnames.pngbin0 -> 481 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fields.pngbin0 -> 481 bytes
-rw-r--r--default_images/res/commandimagelist/lc_filecontrol.pngbin0 -> 774 bytes
-rw-r--r--default_images/res/commandimagelist/lc_filedocument.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fillshadow.pngbin0 -> 303 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fillstyle.pngbin0 -> 708 bytes
-rw-r--r--default_images/res/commandimagelist/lc_filtercrit.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/commandimagelist/lc_firstpage.pngbin0 -> 735 bytes
-rw-r--r--default_images/res/commandimagelist/lc_firstrecord.pngbin0 -> 565 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fliphorizontal.pngbin0 -> 569 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flipvertical.pngbin0 -> 635 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-alternate-process.pngbin0 -> 505 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-card.pngbin0 -> 386 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-collate.pngbin0 -> 557 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-connector.pngbin0 -> 822 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-data.pngbin0 -> 507 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-decision.pngbin0 -> 573 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-delay.pngbin0 -> 764 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-direct-access-storage.pngbin0 -> 780 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-display.pngbin0 -> 587 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-document.pngbin0 -> 732 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-extract.pngbin0 -> 462 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-internal-storage.pngbin0 -> 399 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-magnetic-disk.pngbin0 -> 751 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-manual-input.pngbin0 -> 413 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-manual-operation.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-merge.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-multidocument.pngbin0 -> 723 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-off-page-connector.pngbin0 -> 468 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-or.pngbin0 -> 953 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-predefined-process.pngbin0 -> 382 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-preparation.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-process.pngbin0 -> 310 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-punched-tape.pngbin0 -> 1031 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-sequential-access.pngbin0 -> 843 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-sort.pngbin0 -> 563 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-stored-data.pngbin0 -> 651 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-summing-junction.pngbin0 -> 1061 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.flowchart-terminator.pngbin0 -> 382 bytes
-rw-r--r--default_images/res/commandimagelist/lc_flowchartshapes.pngbin0 -> 398 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontcolor.pngbin0 -> 630 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontdialog.pngbin0 -> 1035 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontheight.pngbin0 -> 1180 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontwork.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkalignmentfloater.pngbin0 -> 235 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkcharacterspacingfloater.pngbin0 -> 689 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkgalleryfloater.pngbin0 -> 590 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworksameletterheights.pngbin0 -> 401 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-down-curve.pngbin0 -> 283 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-down-pour.pngbin0 -> 272 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-left-curve.pngbin0 -> 237 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-left-pour.pngbin0 -> 233 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-right-curve.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-right-pour.pngbin0 -> 226 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-up-curve.pngbin0 -> 280 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-up-pour.pngbin0 -> 263 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-chevron-down.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-chevron-up.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-circle-curve.pngbin0 -> 312 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-circle-pour.pngbin0 -> 296 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-curve-down.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-curve-up.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-down.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-left.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-right.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up-and-left.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up-and-right.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-inflate.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-open-circle-curve.pngbin0 -> 310 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-open-circle-pour.pngbin0 -> 292 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-plain-text.pngbin0 -> 95 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-slant-down.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-slant-up.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-stop.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-triangle-down.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-triangle-up.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.fontwork-wave.pngbin0 -> 244 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fontworkshapetype.pngbin0 -> 447 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formatarea.pngbin0 -> 709 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formatgroup.pngbin0 -> 524 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formatline.pngbin0 -> 474 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formatpaintbrush.pngbin0 -> 1245 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formattedfield.pngbin0 -> 557 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formatungroup.pngbin0 -> 428 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formdesigntools.pngbin0 -> 671 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formelcursor.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formfilter.pngbin0 -> 677 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formfiltered.pngbin0 -> 683 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formfilterexecute.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formfilternavigator.pngbin0 -> 1044 bytes
-rw-r--r--default_images/res/commandimagelist/lc_formproperties.pngbin0 -> 710 bytes
-rw-r--r--default_images/res/commandimagelist/lc_forward.pngbin0 -> 363 bytes
-rw-r--r--default_images/res/commandimagelist/lc_framedialog.pngbin0 -> 636 bytes
-rw-r--r--default_images/res/commandimagelist/lc_framelinecolor.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lc_freeline.pngbin0 -> 801 bytes
-rw-r--r--default_images/res/commandimagelist/lc_freeline_unfilled.pngbin0 -> 752 bytes
-rw-r--r--default_images/res/commandimagelist/lc_fullscreen.pngbin0 -> 510 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gallery.pngbin0 -> 768 bytes
-rw-r--r--default_images/res/commandimagelist/lc_getactivetask.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_glueeditmode.pngbin0 -> 758 bytes
-rw-r--r--default_images/res/commandimagelist/lc_glueescapedirectionbottom.pngbin0 -> 531 bytes
-rw-r--r--default_images/res/commandimagelist/lc_glueescapedirectionleft.pngbin0 -> 532 bytes
-rw-r--r--default_images/res/commandimagelist/lc_glueescapedirectionright.pngbin0 -> 540 bytes
-rw-r--r--default_images/res/commandimagelist/lc_glueescapedirectiontop.pngbin0 -> 540 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gluehorzaligncenter.pngbin0 -> 577 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gluehorzalignleft.pngbin0 -> 603 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gluehorzalignright.pngbin0 -> 608 bytes
-rw-r--r--default_images/res/commandimagelist/lc_glueinsertpoint.pngbin0 -> 636 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gluepercent.pngbin0 -> 743 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gluevertalignbottom.pngbin0 -> 635 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gluevertaligncenter.pngbin0 -> 556 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gluevertaligntop.pngbin0 -> 641 bytes
-rw-r--r--default_images/res/commandimagelist/lc_goalseekdialog.pngbin0 -> 894 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gotoend.pngbin0 -> 622 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gotoendofdoc.pngbin0 -> 736 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gotostartofdoc.pngbin0 -> 735 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gotostartoftable.pngbin0 -> 625 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafattrcrop.pngbin0 -> 1399 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafblue.pngbin0 -> 604 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafcontrast.pngbin0 -> 862 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafgamma.pngbin0 -> 1091 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafgreen.pngbin0 -> 604 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafinvert.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafluminance.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafmode.pngbin0 -> 869 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grafred.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graftransparence.pngbin0 -> 602 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphic.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfilterinvert.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfiltermosaic.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfilterpopart.pngbin0 -> 236 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfilterposter.pngbin0 -> 994 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfilterrelief.pngbin0 -> 848 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfilterremovenoise.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfiltersepia.pngbin0 -> 984 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfiltersharpen.pngbin0 -> 393 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfiltersmooth.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfiltersobel.pngbin0 -> 298 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfiltersolarize.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/lc_graphicfiltertoolbox.pngbin0 -> 657 bytes
-rw-r--r--default_images/res/commandimagelist/lc_greatestheight.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/commandimagelist/lc_greatestwidth.pngbin0 -> 410 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grid.pngbin0 -> 341 bytes
-rw-r--r--default_images/res/commandimagelist/lc_griduse.pngbin0 -> 439 bytes
-rw-r--r--default_images/res/commandimagelist/lc_gridvisible.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lc_group.pngbin0 -> 348 bytes
-rw-r--r--default_images/res/commandimagelist/lc_groupbox.pngbin0 -> 619 bytes
-rw-r--r--default_images/res/commandimagelist/lc_grow.pngbin0 -> 1044 bytes
-rw-r--r--default_images/res/commandimagelist/lc_halfsphere.pngbin0 -> 1127 bytes
-rw-r--r--default_images/res/commandimagelist/lc_handlesdraft.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/lc_help.pngbin0 -> 1327 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpannotate.pngbin0 -> 672 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpbookmark.pngbin0 -> 479 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpdownload.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helperdialog.pngbin0 -> 1343 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpindex.pngbin0 -> 1343 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helplinesmove.pngbin0 -> 449 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helplinesuse.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helplinesvisible.pngbin0 -> 266 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpmenu.pngbin0 -> 1118 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpsearch.pngbin0 -> 402 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpzoomin.pngbin0 -> 1008 bytes
-rw-r--r--default_images/res/commandimagelist/lc_helpzoomout.pngbin0 -> 976 bytes
-rw-r--r--default_images/res/commandimagelist/lc_hfixedline.pngbin0 -> 254 bytes
-rw-r--r--default_images/res/commandimagelist/lc_hideslide.pngbin0 -> 587 bytes
-rw-r--r--default_images/res/commandimagelist/lc_hscrollbar.pngbin0 -> 680 bytes
-rw-r--r--default_images/res/commandimagelist/lc_hyperlinkdialog.pngbin0 -> 1944 bytes
-rw-r--r--default_images/res/commandimagelist/lc_hyphenate.pngbin0 -> 405 bytes
-rw-r--r--default_images/res/commandimagelist/lc_hyphenation.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/commandimagelist/lc_imagebutton.pngbin0 -> 701 bytes
-rw-r--r--default_images/res/commandimagelist/lc_imagecontrol.pngbin0 -> 718 bytes
-rw-r--r--default_images/res/commandimagelist/lc_imagemapdialog.pngbin0 -> 899 bytes
-rw-r--r--default_images/res/commandimagelist/lc_importdialog.pngbin0 -> 546 bytes
-rw-r--r--default_images/res/commandimagelist/lc_importfromfile.pngbin0 -> 961 bytes
-rw-r--r--default_images/res/commandimagelist/lc_incrementindent.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/commandimagelist/lc_incrementlevel.pngbin0 -> 597 bytes
-rw-r--r--default_images/res/commandimagelist/lc_incrementsublevels.pngbin0 -> 751 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inscellsctrl.pngbin0 -> 559 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertannotation.pngbin0 -> 722 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertauthorfield.pngbin0 -> 812 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertavmedia.pngbin0 -> 641 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertbookmark.pngbin0 -> 751 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertcaptiondialog.pngbin0 -> 455 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertcellsdown.pngbin0 -> 695 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertcellsright.pngbin0 -> 614 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertcolumns.pngbin0 -> 616 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertctrl.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertcurrencyfield.pngbin0 -> 785 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertdatefield.pngbin0 -> 591 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertdoc.pngbin0 -> 912 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertdraw.pngbin0 -> 732 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertedit.pngbin0 -> 514 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertendnote.pngbin0 -> 919 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertfield.pngbin0 -> 495 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertfieldctrl.pngbin0 -> 495 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertfilecontrol.pngbin0 -> 773 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertfixedtext.pngbin0 -> 298 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertfootnote.pngbin0 -> 992 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertformattedfield.pngbin0 -> 557 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertformula.pngbin0 -> 584 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertframe.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertframeinteract.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertframeinteractnocolumns.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertgraphic.pngbin0 -> 810 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserthyperlink.pngbin0 -> 1139 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertimagecontrol.pngbin0 -> 719 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertindexesentry.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertlistbox.pngbin0 -> 758 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertmasterpage.pngbin0 -> 757 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertmath.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertneutralparagraph.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertnumericfield.pngbin0 -> 333 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertobjctrl.pngbin0 -> 681 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertobject.pngbin0 -> 681 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertobjectchart.pngbin0 -> 636 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertobjectdialog.pngbin0 -> 681 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertobjectfloatingframe.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertobjectstarmath.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertpage.pngbin0 -> 665 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertpagecountfield.pngbin0 -> 895 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertpagenumberfield.pngbin0 -> 727 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertpatternfield.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertplugin.pngbin0 -> 908 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertpushbutton.pngbin0 -> 476 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertreferencefield.pngbin0 -> 636 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertrows.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertsection.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertsound.pngbin0 -> 645 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertspreadsheet.pngbin0 -> 341 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertsymbol.pngbin0 -> 1068 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserttable.pngbin0 -> 341 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserttextframe.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserttimefield.pngbin0 -> 1280 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserttitlefield.pngbin0 -> 456 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserttoolbox.pngbin0 -> 961 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserttopicfield.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/commandimagelist/lc_inserttreecontrol.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insertvideo.pngbin0 -> 680 bytes
-rw-r--r--default_images/res/commandimagelist/lc_insobjctrl.pngbin0 -> 681 bytes
-rw-r--r--default_images/res/commandimagelist/lc_interactivegradient.pngbin0 -> 1237 bytes
-rw-r--r--default_images/res/commandimagelist/lc_interactivetransparence.pngbin0 -> 639 bytes
-rw-r--r--default_images/res/commandimagelist/lc_internetonline.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_italic.pngbin0 -> 303 bytes
-rw-r--r--default_images/res/commandimagelist/lc_justifypara.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lc_label.pngbin0 -> 298 bytes
-rw-r--r--default_images/res/commandimagelist/lc_lastpage.pngbin0 -> 736 bytes
-rw-r--r--default_images/res/commandimagelist/lc_lastrecord.pngbin0 -> 561 bytes
-rw-r--r--default_images/res/commandimagelist/lc_leaveallgroups.pngbin0 -> 811 bytes
-rw-r--r--default_images/res/commandimagelist/lc_leavegroup.pngbin0 -> 677 bytes
-rw-r--r--default_images/res/commandimagelist/lc_leftpara.pngbin0 -> 232 bytes
-rw-r--r--default_images/res/commandimagelist/lc_line.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/lc_line_diagonal.pngbin0 -> 348 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linearrowcircle.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linearrowend.pngbin0 -> 301 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linearrows.pngbin0 -> 339 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linearrowsquare.pngbin0 -> 351 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linearrowstart.pngbin0 -> 301 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linecirclearrow.pngbin0 -> 444 bytes
-rw-r--r--default_images/res/commandimagelist/lc_lineendstyle.pngbin0 -> 515 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linesquarearrow.pngbin0 -> 350 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linestyle.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linetoolbox.pngbin0 -> 754 bytes
-rw-r--r--default_images/res/commandimagelist/lc_linewidth.pngbin0 -> 708 bytes
-rw-r--r--default_images/res/commandimagelist/lc_listbox.pngbin0 -> 758 bytes
-rw-r--r--default_images/res/commandimagelist/lc_loadbasic.pngbin0 -> 549 bytes
-rw-r--r--default_images/res/commandimagelist/lc_macrorecorder.pngbin0 -> 879 bytes
-rw-r--r--default_images/res/commandimagelist/lc_macrorecordingfloat.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_mailwindow.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_managebreakpoints.pngbin0 -> 899 bytes
-rw-r--r--default_images/res/commandimagelist/lc_managelanguage.pngbin0 -> 1417 bytes
-rw-r--r--default_images/res/commandimagelist/lc_marks.pngbin0 -> 268 bytes
-rw-r--r--default_images/res/commandimagelist/lc_matchgroup.pngbin0 -> 413 bytes
-rw-r--r--default_images/res/commandimagelist/lc_measureline.pngbin0 -> 498 bytes
-rw-r--r--default_images/res/commandimagelist/lc_mergecells.pngbin0 -> 364 bytes
-rw-r--r--default_images/res/commandimagelist/lc_mergedialog.pngbin0 -> 735 bytes
-rw-r--r--default_images/res/commandimagelist/lc_mirror.pngbin0 -> 1496 bytes
-rw-r--r--default_images/res/commandimagelist/lc_modifyframe.pngbin0 -> 771 bytes
-rw-r--r--default_images/res/commandimagelist/lc_modifypage.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/commandimagelist/lc_moduledialog.pngbin0 -> 816 bytes
-rw-r--r--default_images/res/commandimagelist/lc_morecontrols.pngbin0 -> 520 bytes
-rw-r--r--default_images/res/commandimagelist/lc_movedown.pngbin0 -> 629 bytes
-rw-r--r--default_images/res/commandimagelist/lc_movedownsubitems.pngbin0 -> 811 bytes
-rw-r--r--default_images/res/commandimagelist/lc_moveup.pngbin0 -> 637 bytes
-rw-r--r--default_images/res/commandimagelist/lc_moveupsubitems.pngbin0 -> 811 bytes
-rw-r--r--default_images/res/commandimagelist/lc_navigationbar.pngbin0 -> 675 bytes
-rw-r--r--default_images/res/commandimagelist/lc_navigator.pngbin0 -> 1136 bytes
-rw-r--r--default_images/res/commandimagelist/lc_newarrangement.pngbin0 -> 871 bytes
-rw-r--r--default_images/res/commandimagelist/lc_newdoc.pngbin0 -> 445 bytes
-rw-r--r--default_images/res/commandimagelist/lc_newrecord.pngbin0 -> 525 bytes
-rw-r--r--default_images/res/commandimagelist/lc_nextannotation.pngbin0 -> 906 bytes
-rw-r--r--default_images/res/commandimagelist/lc_nextpage.pngbin0 -> 693 bytes
-rw-r--r--default_images/res/commandimagelist/lc_nextrecord.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/lc_no.pngbin0 -> 1305 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatcurrency.pngbin0 -> 785 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatdate.pngbin0 -> 591 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatdecdecimals.pngbin0 -> 671 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatdecimal.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatincdecimals.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatpercent.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatscientific.pngbin0 -> 349 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberformatstandard.pngbin0 -> 600 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numberingstart.pngbin0 -> 769 bytes
-rw-r--r--default_images/res/commandimagelist/lc_numericfield.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/commandimagelist/lc_objectalign.pngbin0 -> 590 bytes
-rw-r--r--default_images/res/commandimagelist/lc_objectalignleft.pngbin0 -> 590 bytes
-rw-r--r--default_images/res/commandimagelist/lc_objectalignright.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/commandimagelist/lc_objectcatalog.pngbin0 -> 810 bytes
-rw-r--r--default_images/res/commandimagelist/lc_objectposition.pngbin0 -> 417 bytes
-rw-r--r--default_images/res/commandimagelist/lc_objects3dtoolbox.pngbin0 -> 627 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ok.pngbin0 -> 901 bytes
-rw-r--r--default_images/res/commandimagelist/lc_open.pngbin0 -> 863 bytes
-rw-r--r--default_images/res/commandimagelist/lc_openreadonly.pngbin0 -> 983 bytes
-rw-r--r--default_images/res/commandimagelist/lc_openurl.pngbin0 -> 1139 bytes
-rw-r--r--default_images/res/commandimagelist/lc_optimizetable.pngbin0 -> 545 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ordercrit.pngbin0 -> 331 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlinebullet.pngbin0 -> 601 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlinecollapse.pngbin0 -> 514 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlinecollapseall.pngbin0 -> 503 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlinedown.pngbin0 -> 629 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlineexpand.pngbin0 -> 505 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlineexpandall.pngbin0 -> 499 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlinefont.pngbin0 -> 757 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlineformat.pngbin0 -> 1035 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlineleft.pngbin0 -> 597 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlineright.pngbin0 -> 581 bytes
-rw-r--r--default_images/res/commandimagelist/lc_outlineup.pngbin0 -> 637 bytes
-rw-r--r--default_images/res/commandimagelist/lc_overline.pngbin0 -> 323 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pagedown.pngbin0 -> 693 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pageup.pngbin0 -> 703 bytes
-rw-r--r--default_images/res/commandimagelist/lc_paragraphdialog.pngbin0 -> 730 bytes
-rw-r--r--default_images/res/commandimagelist/lc_paralefttoright.pngbin0 -> 695 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pararighttoleft.pngbin0 -> 688 bytes
-rw-r--r--default_images/res/commandimagelist/lc_paraspacedecrease.pngbin0 -> 478 bytes
-rw-r--r--default_images/res/commandimagelist/lc_paraspaceincrease.pngbin0 -> 490 bytes
-rw-r--r--default_images/res/commandimagelist/lc_paste.pngbin0 -> 850 bytes
-rw-r--r--default_images/res/commandimagelist/lc_patternfield.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pickthrough.pngbin0 -> 1039 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pie.pngbin0 -> 679 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pie_unfilled.pngbin0 -> 693 bytes
-rw-r--r--default_images/res/commandimagelist/lc_playmacro.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pluginsactive.pngbin0 -> 907 bytes
-rw-r--r--default_images/res/commandimagelist/lc_polygon.pngbin0 -> 693 bytes
-rw-r--r--default_images/res/commandimagelist/lc_polygon_diagonal.pngbin0 -> 351 bytes
-rw-r--r--default_images/res/commandimagelist/lc_polygon_diagonal_unfilled.pngbin0 -> 272 bytes
-rw-r--r--default_images/res/commandimagelist/lc_polygon_unfilled.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/commandimagelist/lc_presentation.pngbin0 -> 666 bytes
-rw-r--r--default_images/res/commandimagelist/lc_presentationlayout.pngbin0 -> 854 bytes
-rw-r--r--default_images/res/commandimagelist/lc_preview.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_previewprintoptions.pngbin0 -> 804 bytes
-rw-r--r--default_images/res/commandimagelist/lc_previewzoom.pngbin0 -> 963 bytes
-rw-r--r--default_images/res/commandimagelist/lc_previousannotation.pngbin0 -> 917 bytes
-rw-r--r--default_images/res/commandimagelist/lc_previouspage.pngbin0 -> 703 bytes
-rw-r--r--default_images/res/commandimagelist/lc_prevrecord.pngbin0 -> 473 bytes
-rw-r--r--default_images/res/commandimagelist/lc_print.pngbin0 -> 594 bytes
-rw-r--r--default_images/res/commandimagelist/lc_printdefault.pngbin0 -> 594 bytes
-rw-r--r--default_images/res/commandimagelist/lc_printersetup.pngbin0 -> 804 bytes
-rw-r--r--default_images/res/commandimagelist/lc_printlayout.pngbin0 -> 879 bytes
-rw-r--r--default_images/res/commandimagelist/lc_printpagepreview.pngbin0 -> 643 bytes
-rw-r--r--default_images/res/commandimagelist/lc_printpreview.pngbin0 -> 832 bytes
-rw-r--r--default_images/res/commandimagelist/lc_progressbar.pngbin0 -> 352 bytes
-rw-r--r--default_images/res/commandimagelist/lc_pushbutton.pngbin0 -> 476 bytes
-rw-r--r--default_images/res/commandimagelist/lc_quickedit.pngbin0 -> 687 bytes
-rw-r--r--default_images/res/commandimagelist/lc_quit.pngbin0 -> 793 bytes
-rw-r--r--default_images/res/commandimagelist/lc_radiobutton.pngbin0 -> 615 bytes
-rw-r--r--default_images/res/commandimagelist/lc_recsave.pngbin0 -> 757 bytes
-rw-r--r--default_images/res/commandimagelist/lc_recsearch.pngbin0 -> 399 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rect.pngbin0 -> 271 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rect_rounded.pngbin0 -> 408 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rect_rounded_unfilled.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rect_unfilled.pngbin0 -> 226 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rectangletoolbox.pngbin0 -> 271 bytes
-rw-r--r--default_images/res/commandimagelist/lc_recundo.pngbin0 -> 1309 bytes
-rw-r--r--default_images/res/commandimagelist/lc_redo.pngbin0 -> 1117 bytes
-rw-r--r--default_images/res/commandimagelist/lc_refresh.pngbin0 -> 1147 bytes
-rw-r--r--default_images/res/commandimagelist/lc_refreshformcontrol.pngbin0 -> 1201 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rehearsetimings.pngbin0 -> 1107 bytes
-rw-r--r--default_images/res/commandimagelist/lc_reload.pngbin0 -> 1147 bytes
-rw-r--r--default_images/res/commandimagelist/lc_removebullets.pngbin0 -> 237 bytes
-rw-r--r--default_images/res/commandimagelist/lc_removefilter.pngbin0 -> 717 bytes
-rw-r--r--default_images/res/commandimagelist/lc_removefiltersort.pngbin0 -> 717 bytes
-rw-r--r--default_images/res/commandimagelist/lc_renamemasterpage.pngbin0 -> 719 bytes
-rw-r--r--default_images/res/commandimagelist/lc_repeat.pngbin0 -> 1177 bytes
-rw-r--r--default_images/res/commandimagelist/lc_reportnavigator.pngbin0 -> 1178 bytes
-rw-r--r--default_images/res/commandimagelist/lc_reverseorder.pngbin0 -> 814 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rightpara.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rulerrows.pngbin0 -> 1273 bytes
-rw-r--r--default_images/res/commandimagelist/lc_rulerrowsvertical.pngbin0 -> 1272 bytes
-rw-r--r--default_images/res/commandimagelist/lc_runbasic.pngbin0 -> 740 bytes
-rw-r--r--default_images/res/commandimagelist/lc_save.pngbin0 -> 535 bytes
-rw-r--r--default_images/res/commandimagelist/lc_saveas.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/commandimagelist/lc_saveastemplate.pngbin0 -> 775 bytes
-rw-r--r--default_images/res/commandimagelist/lc_savebasicas.pngbin0 -> 687 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sbabrwinsert.pngbin0 -> 495 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sbaexecutesql.pngbin0 -> 819 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sbanativesql.pngbin0 -> 569 bytes
-rw-r--r--default_images/res/commandimagelist/lc_scaletext.pngbin0 -> 934 bytes
-rw-r--r--default_images/res/commandimagelist/lc_scrollbar.pngbin0 -> 695 bytes
-rw-r--r--default_images/res/commandimagelist/lc_searchdialog.pngbin0 -> 398 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sectionalignbottom.pngbin0 -> 471 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sectionalignleft.pngbin0 -> 623 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sectionalignright.pngbin0 -> 615 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sectionaligntop.pngbin0 -> 468 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sectionshrink.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sectionshrinkbottom.pngbin0 -> 354 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sectionshrinktop.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/commandimagelist/lc_selectall.pngbin0 -> 595 bytes
-rw-r--r--default_images/res/commandimagelist/lc_selectmode.pngbin0 -> 502 bytes
-rw-r--r--default_images/res/commandimagelist/lc_selectobject.pngbin0 -> 502 bytes
-rw-r--r--default_images/res/commandimagelist/lc_selecttable.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sendfax.pngbin0 -> 716 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sendmail.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sendtoback.pngbin0 -> 418 bytes
-rw-r--r--default_images/res/commandimagelist/lc_setborderstyle.pngbin0 -> 239 bytes
-rw-r--r--default_images/res/commandimagelist/lc_setdocumentproperties.pngbin0 -> 744 bytes
-rw-r--r--default_images/res/commandimagelist/lc_setobjecttobackground.pngbin0 -> 556 bytes
-rw-r--r--default_images/res/commandimagelist/lc_setobjecttoforeground.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/commandimagelist/lc_setoptimalcolumnwidth.pngbin0 -> 407 bytes
-rw-r--r--default_images/res/commandimagelist/lc_setoptimalcolumnwidthdirect.pngbin0 -> 408 bytes
-rw-r--r--default_images/res/commandimagelist/lc_setoptimalrowheight.pngbin0 -> 319 bytes
-rw-r--r--default_images/res/commandimagelist/lc_shadowcursor.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/commandimagelist/lc_shadowed.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/commandimagelist/lc_shear.pngbin0 -> 303 bytes
-rw-r--r--default_images/res/commandimagelist/lc_shell3d.pngbin0 -> 1026 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showannotation.pngbin0 -> 611 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showbookview.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showbrowser.pngbin0 -> 737 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showdatanavigator.pngbin0 -> 618 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showfmexplorer.pngbin0 -> 1075 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showmultiplepages.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showpropbrowser.pngbin0 -> 737 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showslide.pngbin0 -> 599 bytes
-rw-r--r--default_images/res/commandimagelist/lc_showtwopages.pngbin0 -> 394 bytes
-rw-r--r--default_images/res/commandimagelist/lc_shrink.pngbin0 -> 978 bytes
-rw-r--r--default_images/res/commandimagelist/lc_smallestheight.pngbin0 -> 462 bytes
-rw-r--r--default_images/res/commandimagelist/lc_smallestwidth.pngbin0 -> 448 bytes
-rw-r--r--default_images/res/commandimagelist/lc_snapborder.pngbin0 -> 761 bytes
-rw-r--r--default_images/res/commandimagelist/lc_snapframe.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/lc_snappoints.pngbin0 -> 438 bytes
-rw-r--r--default_images/res/commandimagelist/lc_solidcreate.pngbin0 -> 701 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sortascending.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sortdescending.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sortdown.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sortup.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sourceview.pngbin0 -> 753 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spacepara1.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spacepara15.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spacepara2.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spelldialog.pngbin0 -> 666 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spelling.pngbin0 -> 667 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spellingandgrammardialog.pngbin0 -> 668 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spellonline.pngbin0 -> 385 bytes
-rw-r--r--default_images/res/commandimagelist/lc_sphere.pngbin0 -> 1371 bytes
-rw-r--r--default_images/res/commandimagelist/lc_spinbutton.pngbin0 -> 672 bytes
-rw-r--r--default_images/res/commandimagelist/lc_splitcell.pngbin0 -> 375 bytes
-rw-r--r--default_images/res/commandimagelist/lc_splithorizontal.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_splitparenthorizontal.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_splitparentvertical.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lc_splitvertical.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_square.pngbin0 -> 310 bytes
-rw-r--r--default_images/res/commandimagelist/lc_square_rounded.pngbin0 -> 505 bytes
-rw-r--r--default_images/res/commandimagelist/lc_square_rounded_unfilled.pngbin0 -> 464 bytes
-rw-r--r--default_images/res/commandimagelist/lc_square_unfilled.pngbin0 -> 258 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starchartdialog.pngbin0 -> 635 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.bang.pngbin0 -> 1018 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.concave-star6.pngbin0 -> 797 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.doorplate.pngbin0 -> 688 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.horizontal-scroll.pngbin0 -> 734 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.pngbin0 -> 771 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.signet.pngbin0 -> 1022 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.star12.pngbin0 -> 950 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.star24.pngbin0 -> 1167 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.star4.pngbin0 -> 589 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.star5.pngbin0 -> 770 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.star6.pngbin0 -> 631 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.star8.pngbin0 -> 796 bytes
-rw-r--r--default_images/res/commandimagelist/lc_starshapes.vertical-scroll.pngbin0 -> 676 bytes
-rw-r--r--default_images/res/commandimagelist/lc_strikeout.pngbin0 -> 363 bytes
-rw-r--r--default_images/res/commandimagelist/lc_styleapply.pngbin0 -> 708 bytes
-rw-r--r--default_images/res/commandimagelist/lc_stylenewbyexample.pngbin0 -> 705 bytes
-rw-r--r--default_images/res/commandimagelist/lc_styleupdatebyexample.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_subscript.pngbin0 -> 1215 bytes
-rw-r--r--default_images/res/commandimagelist/lc_superscript.pngbin0 -> 1187 bytes
-rw-r--r--default_images/res/commandimagelist/lc_switchcontroldesignmode.pngbin0 -> 639 bytes
-rw-r--r--default_images/res/commandimagelist/lc_switchxformsdesignmode.pngbin0 -> 640 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolcatalogue.pngbin0 -> 515 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.brace-pair.pngbin0 -> 766 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.bracket-pair.pngbin0 -> 603 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.cloud.pngbin0 -> 941 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.diamond-bevel.pngbin0 -> 838 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.flower.pngbin0 -> 1364 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.forbidden.pngbin0 -> 1309 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.heart.pngbin0 -> 1246 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.left-brace.pngbin0 -> 564 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.left-bracket.pngbin0 -> 458 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.lightning.pngbin0 -> 699 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.moon.pngbin0 -> 1012 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.octagon-bevel.pngbin0 -> 726 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.pngbin0 -> 1128 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.puzzle.pngbin0 -> 903 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.quad-bevel.pngbin0 -> 620 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.right-brace.pngbin0 -> 555 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.right-bracket.pngbin0 -> 444 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.smiley.pngbin0 -> 1128 bytes
-rw-r--r--default_images/res/commandimagelist/lc_symbolshapes.sun.pngbin0 -> 901 bytes
-rw-r--r--default_images/res/commandimagelist/lc_tabdialog.pngbin0 -> 918 bytes
-rw-r--r--default_images/res/commandimagelist/lc_tabledesign.pngbin0 -> 661 bytes
-rw-r--r--default_images/res/commandimagelist/lc_tabledialog.pngbin0 -> 663 bytes
-rw-r--r--default_images/res/commandimagelist/lc_tablemodefix.pngbin0 -> 367 bytes
-rw-r--r--default_images/res/commandimagelist/lc_tablemodefixprop.pngbin0 -> 450 bytes
-rw-r--r--default_images/res/commandimagelist/lc_tablemodevariable.pngbin0 -> 401 bytes
-rw-r--r--default_images/res/commandimagelist/lc_tablesort.pngbin0 -> 331 bytes
-rw-r--r--default_images/res/commandimagelist/lc_testmode.pngbin0 -> 636 bytes
-rw-r--r--default_images/res/commandimagelist/lc_text.pngbin0 -> 439 bytes
-rw-r--r--default_images/res/commandimagelist/lc_text_marquee.pngbin0 -> 654 bytes
-rw-r--r--default_images/res/commandimagelist/lc_textdirectionlefttoright.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/commandimagelist/lc_textdirectiontoptobottom.pngbin0 -> 426 bytes
-rw-r--r--default_images/res/commandimagelist/lc_textfittosizetool.pngbin0 -> 754 bytes
-rw-r--r--default_images/res/commandimagelist/lc_texttoolbox.pngbin0 -> 439 bytes
-rw-r--r--default_images/res/commandimagelist/lc_thesaurus.pngbin0 -> 829 bytes
-rw-r--r--default_images/res/commandimagelist/lc_thesaurusdialog.pngbin0 -> 829 bytes
-rw-r--r--default_images/res/commandimagelist/lc_timefield.pngbin0 -> 1280 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toggleanchortype.pngbin0 -> 675 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toggleaxisdescr.pngbin0 -> 267 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toggleaxistitle.pngbin0 -> 585 bytes
-rw-r--r--default_images/res/commandimagelist/lc_togglebreakpoint.pngbin0 -> 932 bytes
-rw-r--r--default_images/res/commandimagelist/lc_togglegridhorizontal.pngbin0 -> 277 bytes
-rw-r--r--default_images/res/commandimagelist/lc_togglegridvertical.pngbin0 -> 352 bytes
-rw-r--r--default_images/res/commandimagelist/lc_togglelegend.pngbin0 -> 590 bytes
-rw-r--r--default_images/res/commandimagelist/lc_togglemergecells.pngbin0 -> 364 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toggleobjectbeziermode.pngbin0 -> 367 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toggleobjectrotatemode.pngbin0 -> 1052 bytes
-rw-r--r--default_images/res/commandimagelist/lc_togglesheetgrid.pngbin0 -> 651 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toggletitle.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toolsmacroedit.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_toolsoptions.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_torus.pngbin0 -> 1128 bytes
-rw-r--r--default_images/res/commandimagelist/lc_transformdialog.pngbin0 -> 1014 bytes
-rw-r--r--default_images/res/commandimagelist/lc_underline.pngbin0 -> 342 bytes
-rw-r--r--default_images/res/commandimagelist/lc_underlinedouble.pngbin0 -> 336 bytes
-rw-r--r--default_images/res/commandimagelist/lc_undo.pngbin0 -> 1119 bytes
-rw-r--r--default_images/res/commandimagelist/lc_ungroup.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/lc_unhainframes.pngbin0 -> 718 bytes
-rw-r--r--default_images/res/commandimagelist/lc_upsearch.pngbin0 -> 648 bytes
-rw-r--r--default_images/res/commandimagelist/lc_urlbutton.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/lc_usewizards.pngbin0 -> 798 bytes
-rw-r--r--default_images/res/commandimagelist/lc_verticalcaption.pngbin0 -> 965 bytes
-rw-r--r--default_images/res/commandimagelist/lc_verticaltext.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/lc_verticaltextfittosizetool.pngbin0 -> 918 bytes
-rw-r--r--default_images/res/commandimagelist/lc_vfixedline.pngbin0 -> 289 bytes
-rw-r--r--default_images/res/commandimagelist/lc_view100.pngbin0 -> 766 bytes
-rw-r--r--default_images/res/commandimagelist/lc_viewdatasourcebrowser.pngbin0 -> 1158 bytes
-rw-r--r--default_images/res/commandimagelist/lc_viewformasgrid.pngbin0 -> 527 bytes
-rw-r--r--default_images/res/commandimagelist/lc_vscrollbar.pngbin0 -> 695 bytes
-rw-r--r--default_images/res/commandimagelist/lc_window3d.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/lc_wrapcontour.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/lc_wrapideal.pngbin0 -> 337 bytes
-rw-r--r--default_images/res/commandimagelist/lc_wrapleft.pngbin0 -> 272 bytes
-rw-r--r--default_images/res/commandimagelist/lc_wrapoff.pngbin0 -> 254 bytes
-rw-r--r--default_images/res/commandimagelist/lc_wrapon.pngbin0 -> 274 bytes
-rw-r--r--default_images/res/commandimagelist/lc_wrapright.pngbin0 -> 274 bytes
-rw-r--r--default_images/res/commandimagelist/lc_wrapthrough.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lc_xlinecolor.pngbin0 -> 708 bytes
-rw-r--r--default_images/res/commandimagelist/lc_xlinestyle.pngbin0 -> 709 bytes
-rw-r--r--default_images/res/commandimagelist/lc_yes.pngbin0 -> 1320 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoom.pngbin0 -> 963 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoom100percent.pngbin0 -> 765 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomin.pngbin0 -> 1008 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomminus.pngbin0 -> 976 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomnext.pngbin0 -> 1343 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomobjects.pngbin0 -> 720 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomoptimal.pngbin0 -> 737 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomout.pngbin0 -> 976 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoompage.pngbin0 -> 832 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoompagewidth.pngbin0 -> 885 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoompanning.pngbin0 -> 1269 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomplus.pngbin0 -> 1008 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomprevious.pngbin0 -> 1205 bytes
-rw-r--r--default_images/res/commandimagelist/lc_zoomtoolbox.pngbin0 -> 963 bytes
-rw-r--r--default_images/res/commandimagelist/lch_absoluterecord.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_actionmode.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/commandimagelist/lch_addbookmark.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_adddatefield.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_adddirect.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/lch_addfield.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_addons.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_addprintarea.pngbin0 -> 186 bytes
-rw-r--r--default_images/res/commandimagelist/lch_addtable.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_addwatch.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_adjust.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/lch_advancedmode.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignblock.pngbin0 -> 87 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignbottom.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_aligncenter.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_aligndown.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignhorizontalcenter.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignleft.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignmiddle.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignright.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_aligntop.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignup.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignvcenter.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_alignverticalcenter.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_animationeffects.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/lch_animationmode.pngbin0 -> 240 bytes
-rw-r--r--default_images/res/commandimagelist/lch_animationobjects.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arc.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.chevron.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.circular-arrow.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.corner-right-arrow.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.down-arrow-callout.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.down-arrow.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.left-arrow-callout.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.left-arrow.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.left-right-arrow-callout.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.left-right-arrow.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.notched-right-arrow.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.pentagon-right.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.quad-arrow-callout.pngbin0 -> 207 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.quad-arrow.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.right-arrow-callout.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.right-arrow.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.s-sharped-arrow.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.split-arrow.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.split-round-arrow.pngbin0 -> 193 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.striped-right-arrow.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.up-arrow-callout.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.up-arrow.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.up-down-arrow-callout.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.up-down-arrow.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.up-right-arrow-callout.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.up-right-arrow.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowshapes.up-right-down-arrow.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_arrowstoolbox.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/lch_assignlayout.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/lch_autocontrolfocus.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_autofilter.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/lch_autoformat.pngbin0 -> 233 bytes
-rw-r--r--default_images/res/commandimagelist/lch_autosum.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_avmediaplayer.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_backcolor.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/lch_backgroundcolor.pngbin0 -> 226 bytes
-rw-r--r--default_images/res/commandimagelist/lch_backgroundpatterncontroller.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_backward.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.block-arc.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.can.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.circle-pie.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.circle.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.cross.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.cube.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.diamond.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.ellipse.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.frame.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.hexagon.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.isosceles-triangle.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.octagon.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.paper.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.parallelogram.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.pentagon.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.quadrat.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.rectangle.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.right-triangle.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.ring.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.round-quadrat.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.round-rectangle.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicshapes.trapezoid.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicstepinto.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicstepout.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicstepover.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_basicstop.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_beamer.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_beforeobject.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/lch_behindobject.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezier_unfilled.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezierappend.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezierclose.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezierconvert.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_beziercutline.pngbin0 -> 226 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezierdelete.pngbin0 -> 207 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezieredge.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_beziereliminatepoints.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezierfill.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bezierinsert.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_beziermove.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_beziersmooth.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_beziersymmetric.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bighandles.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bold.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/lch_borderdialog.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bringtofront.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_browsebackward.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/lch_browseforward.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/lch_browseview.pngbin0 -> 279 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bullet.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/lch_bulletsandnumberingdialog.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.cloud-callout.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.line-callout-1.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.line-callout-2.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.line-callout-3.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.rectangular-callout.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.round-callout.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/lch_calloutshapes.round-rectangular-callout.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cellvertbottom.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cellvertcenter.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cellverttop.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/lch_centerpara.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_chainframes.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_changebezier.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/lch_changepolygon.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_charfontname.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_checkbox.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/lch_choosecontrols.pngbin0 -> 208 bytes
-rw-r--r--default_images/res/commandimagelist/lch_choosedesign.pngbin0 -> 235 bytes
-rw-r--r--default_images/res/commandimagelist/lch_choosemacro.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_choosepolygon.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_circle.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/lch_circle_unfilled.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_circlearc.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_circlecut.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_circlecut_unfilled.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_circlepie.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_circlepie_unfilled.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_clickchangerotation.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/commandimagelist/lch_closedoc.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_closedocs.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lch_closemasterview.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_closewin.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_color.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_colorsettings.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/lch_colorview.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/lch_combobox.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_commontaskbarvisible.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/lch_compilebasic.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cone.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/lch_config.pngbin0 -> 211 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connector.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorarrowend.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorarrows.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorarrowstart.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcircleend.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcircles.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcirclestart.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcurve.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcurvearrowend.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcurvearrows.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcurvearrowstart.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcurvecircleend.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcurvecircles.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorcurvecirclestart.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorline.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinearrowend.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinearrows.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinearrowstart.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinecircleend.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinecircles.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinecirclestart.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlines.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinesarrowend.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinesarrows.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinesarrowstart.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinescircleend.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinescircles.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectorlinescirclestart.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_connectortoolbox.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_contourdialog.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_controlcodes.pngbin0 -> 112 bytes
-rw-r--r--default_images/res/commandimagelist/lch_controlproperties.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lch_convertinto3d.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_convertinto3dlathe.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/lch_convertinto3dlathefast.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_copy.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_countall.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_crookrotate.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/lch_crookslant.pngbin0 -> 207 bytes
-rw-r--r--default_images/res/commandimagelist/lch_crop.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cube.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_currencyfield.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/lch_customanimation.pngbin0 -> 226 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cut.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cylinder.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_cyramid.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/lch_datadatapilotrun.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/lch_datafilterautofilter.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/lch_datafilterspecialfilter.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_datafilterstandardfilter.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dataimport.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dataincolumns.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_datainrows.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/lch_datefield.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbaddrelation.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbchangedesignmode.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbclearquery.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbdistinctvalues.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbformdelete.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbformedit.pngbin0 -> 219 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbformopen.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbformrename.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbindexdesign.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewform.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewformautopilot.pngbin0 -> 284 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewquery.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewqueryautopilot.pngbin0 -> 271 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewquerysql.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewreport.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewreportautopilot.pngbin0 -> 246 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewtable.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewtableautopilot.pngbin0 -> 250 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewview.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbnewviewsql.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbquerydelete.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbqueryedit.pngbin0 -> 241 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbqueryopen.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbqueryrename.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbreportdelete.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbreportedit.pngbin0 -> 211 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbreportopen.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbreportrename.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbsortingandgrouping.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbtabledelete.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbtableedit.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbtableopen.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbtablerename.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbviewaliases.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbviewfunctions.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dbviewtablenames.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_decrementindent.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/lch_decrementlevel.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_decrementsublevels.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_defaultbullet.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/lch_defaultnumbering.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/lch_definename.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_defineprintarea.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_delete.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_deleteallannotation.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_deleteannotation.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_deletecolumns.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/lch_deletemasterpage.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/commandimagelist/lch_deleteprintarea.pngbin0 -> 245 bytes
-rw-r--r--default_images/res/commandimagelist/lch_deleterecord.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/lch_deleterows.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lch_designerdialog.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dia.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_diaauto.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_diaeffect.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_diagramdata.pngbin0 -> 93 bytes
-rw-r--r--default_images/res/commandimagelist/lch_diagramtype.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_diaspeed.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_diatime.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_distributecolumns.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_distributerows.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_doubleclicktextedit.pngbin0 -> 186 bytes
-rw-r--r--default_images/res/commandimagelist/lch_downsearch.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_draw.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_drawcaption.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_drawchart.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_drawselect.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_drawtext.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dsbdocumentdatasource.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dsbeditdoc.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dsbformletter.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dsbinsertcolumns.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dsbinsertcontent.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_dsbrowserexplorer.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_duplicatepage.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/lch_edit.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/lch_editdoc.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/commandimagelist/lch_editframeset.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_editglossary.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/lch_editheaderandfooter.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/lch_editprintarea.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/commandimagelist/lch_ellipse.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_ellipse_unfilled.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_ellipsecut.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_ellipsecut_unfilled.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_ellipsetoolbox.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_entergroup.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_entirecolumn.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/lch_entirerow.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/lch_euroconverter.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/lch_executereport.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_expandpage.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_exportdialog.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_exportdirecttopdf.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_exportto.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extendedhelp.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusion3dcolor.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusiondepthfloater.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusiondirectionfloater.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusionlightingfloater.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusionsurfacefloater.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusiontiltdown.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusiontiltleft.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusiontiltright.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusiontiltup.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/lch_extrusiontoggle.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fieldnames.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fields.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/lch_filecontrol.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/lch_filedocument.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fillshadow.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fillstyle.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_filtercrit.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_firstpage.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/lch_firstrecord.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fliphorizontal.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flipvertical.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-alternate-process.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-card.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-collate.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-connector.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-data.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-decision.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-delay.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-direct-access-storage.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-display.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-document.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-extract.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-internal-storage.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-magnetic-disk.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-manual-input.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-manual-operation.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-merge.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-multidocument.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-off-page-connector.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-or.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-predefined-process.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-preparation.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-process.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-punched-tape.pngbin0 -> 193 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-sequential-access.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-sort.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-stored-data.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-summing-junction.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.flowchart-terminator.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_flowchartshapes.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontcolor.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontdialog.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontheight.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontwork.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkalignmentfloater.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkcharacterspacingfloater.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkgalleryfloater.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworksameletterheights.pngbin0 -> 211 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-down-curve.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-down-pour.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-left-curve.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-left-pour.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-right-curve.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-right-pour.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-up-curve.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-arch-up-pour.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-chevron-down.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-chevron-up.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-circle-curve.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-circle-pour.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-curve-down.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-curve-up.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-fade-down.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-fade-left.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-fade-right.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-fade-up-and-left.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-fade-up-and-right.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-fade-up.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-inflate.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-open-circle-curve.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-open-circle-pour.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-plain-text.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-slant-down.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-slant-up.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-stop.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-triangle-down.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-triangle-up.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.fontwork-wave.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fontworkshapetype.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formatarea.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formatgroup.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formatline.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formatpaintbrush.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formattedfield.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formatungroup.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formdesigntools.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formelcursor.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formfilter.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formfiltered.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formfilterexecute.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formfilternavigator.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/commandimagelist/lch_formproperties.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_forward.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_framedialog.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_framelinecolor.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/lch_freeline.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/lch_freeline_unfilled.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_fullscreen.pngbin0 -> 193 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gallery.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_getactivetask.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_glueeditmode.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/lch_glueescapedirectionbottom.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_glueescapedirectionleft.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_glueescapedirectionright.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_glueescapedirectiontop.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gluehorzaligncenter.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gluehorzalignleft.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gluehorzalignright.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_glueinsertpoint.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gluepercent.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gluevertalignbottom.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gluevertaligncenter.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gluevertaligntop.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_goalseekdialog.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gotoend.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gotoendofdoc.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gotostartofdoc.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gotostartoftable.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafattrcrop.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafblue.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafcontrast.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafgamma.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafgreen.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafinvert.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafluminance.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafmode.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grafred.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graftransparence.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphic.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfilterinvert.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfiltermosaic.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfilterpopart.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfilterposter.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfilterrelief.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfilterremovenoise.pngbin0 -> 229 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfiltersepia.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfiltersharpen.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfiltersmooth.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfiltersobel.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfiltersolarize.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_graphicfiltertoolbox.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/commandimagelist/lch_greatestheight.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_greatestwidth.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grid.pngbin0 -> 93 bytes
-rw-r--r--default_images/res/commandimagelist/lch_griduse.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/lch_gridvisible.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/lch_group.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_groupbox.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_grow.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_halfsphere.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_handlesdraft.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpannotate.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpbookmark.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpdownload.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helperdialog.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpindex.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helplinesmove.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helplinesuse.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helplinesvisible.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpmenu.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpsearch.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpzoomin.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_helpzoomout.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_hfixedline.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/lch_hideslide.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/lch_hscrollbar.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_hyperlinkdialog.pngbin0 -> 311 bytes
-rw-r--r--default_images/res/commandimagelist/lch_hyphenate.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/lch_hyphenation.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/lch_imagebutton.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_imagecontrol.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_imagemapdialog.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/lch_importdialog.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_importfromfile.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lch_incrementindent.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_incrementlevel.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/lch_incrementsublevels.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inscellsctrl.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertannotation.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertauthorfield.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertavmedia.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertbookmark.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertcaptiondialog.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertcellsdown.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertcellsright.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertcolumns.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertctrl.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertcurrencyfield.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertdatefield.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertdoc.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertdraw.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertedit.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertendnote.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertfield.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertfieldctrl.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertfilecontrol.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertfixedtext.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertfootnote.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertformattedfield.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertformula.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertframe.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertframeinteract.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertframeinteractnocolumns.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertgraphic.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserthyperlink.pngbin0 -> 245 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertimagecontrol.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertindexesentry.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertlistbox.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertmasterpage.pngbin0 -> 198 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertmath.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertneutralparagraph.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertnumericfield.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertobjctrl.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertobject.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertobjectchart.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertobjectdialog.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertobjectfloatingframe.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertobjectstarmath.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertpage.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertpagecountfield.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertpagenumberfield.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertpatternfield.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertplugin.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertpushbutton.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertreferencefield.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertrows.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertsection.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertsound.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertspreadsheet.pngbin0 -> 93 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertsymbol.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserttable.pngbin0 -> 93 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserttextframe.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserttimefield.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserttitlefield.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserttoolbox.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserttopicfield.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lch_inserttreecontrol.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insertvideo.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_insobjctrl.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/lch_interactivegradient.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/commandimagelist/lch_interactivetransparence.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/commandimagelist/lch_internetonline.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_italic.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/lch_justifypara.pngbin0 -> 87 bytes
-rw-r--r--default_images/res/commandimagelist/lch_label.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_lastpage.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_lastrecord.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_leaveallgroups.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_leavegroup.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_leftpara.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_line.pngbin0 -> 94 bytes
-rw-r--r--default_images/res/commandimagelist/lch_line_diagonal.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linearrowcircle.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linearrowend.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linearrows.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linearrowsquare.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linearrowstart.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linecirclearrow.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/lch_lineendstyle.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linesquarearrow.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linestyle.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linetoolbox.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/commandimagelist/lch_linewidth.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_listbox.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_loadbasic.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_macrorecorder.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/commandimagelist/lch_macrorecordingfloat.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_mailwindow.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_managebreakpoints.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lch_managelanguage.pngbin0 -> 265 bytes
-rw-r--r--default_images/res/commandimagelist/lch_marks.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/lch_matchgroup.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_measureline.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/lch_mergecells.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_mergedialog.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/lch_mirror.pngbin0 -> 232 bytes
-rw-r--r--default_images/res/commandimagelist/lch_modifyframe.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_modifypage.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_moduledialog.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_morecontrols.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_movedown.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_movedownsubitems.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/lch_moveup.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_moveupsubitems.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/lch_navigationbar.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/lch_navigator.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/commandimagelist/lch_newarrangement.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/lch_newdoc.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/lch_newrecord.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_nextannotation.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_nextpage.pngbin0 -> 192 bytes
-rw-r--r--default_images/res/commandimagelist/lch_nextrecord.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatcurrency.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatdate.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatdecdecimals.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatdecimal.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatincdecimals.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatpercent.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatscientific.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberformatstandard.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numberingstart.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_numericfield.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_objectalign.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_objectalignleft.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_objectalignright.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lch_objectcatalog.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/lch_objectposition.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_objects3dtoolbox.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_open.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_openreadonly.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/lch_openurl.pngbin0 -> 246 bytes
-rw-r--r--default_images/res/commandimagelist/lch_optimizetable.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_ordercrit.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlinebullet.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlinecollapse.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlinecollapseall.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlinedown.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlineexpand.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlineexpandall.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlinefont.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlineformat.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlineleft.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlineright.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_outlineup.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_overline.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pagedown.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pageup.pngbin0 -> 192 bytes
-rw-r--r--default_images/res/commandimagelist/lch_paragraphdialog.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_paralefttoright.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pararighttoleft.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_paraspacedecrease.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lch_paraspaceincrease.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/lch_paste.pngbin0 -> 198 bytes
-rw-r--r--default_images/res/commandimagelist/lch_patternfield.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pickthrough.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pie.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pie_unfilled.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_playmacro.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pluginsactive.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/lch_polygon.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_polygon_diagonal.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/lch_polygon_diagonal_unfilled.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/lch_polygon_unfilled.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_presentation.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_presentationlayout.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_preview.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_previewprintoptions.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/lch_previewzoom.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/lch_previousannotation.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/lch_previouspage.pngbin0 -> 192 bytes
-rw-r--r--default_images/res/commandimagelist/lch_prevrecord.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/lch_print.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_printdefault.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_printersetup.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/lch_printlayout.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/lch_printpagepreview.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_printpreview.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_progressbar.pngbin0 -> 106 bytes
-rw-r--r--default_images/res/commandimagelist/lch_pushbutton.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/lch_quickedit.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/lch_quit.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_radiobutton.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_recsave.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_recsearch.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rect.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rect_rounded.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rect_rounded_unfilled.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rect_unfilled.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rectangletoolbox.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/lch_recundo.pngbin0 -> 207 bytes
-rw-r--r--default_images/res/commandimagelist/lch_redo.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/lch_refresh.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/lch_refreshformcontrol.pngbin0 -> 247 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rehearsetimings.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lch_reload.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/lch_removebullets.pngbin0 -> 84 bytes
-rw-r--r--default_images/res/commandimagelist/lch_removefilter.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/lch_removefiltersort.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/lch_renamemasterpage.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/lch_repeat.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/lch_reportnavigator.pngbin0 -> 227 bytes
-rw-r--r--default_images/res/commandimagelist/lch_reverseorder.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rightpara.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rulerrows.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_rulerrowsvertical.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_runbasic.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_save.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/lch_saveas.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_saveastemplate.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/lch_savebasicas.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sbabrwinsert.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sbaexecutesql.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sbanativesql.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_scaletext.pngbin0 -> 216 bytes
-rw-r--r--default_images/res/commandimagelist/lch_scrollbar.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/lch_searchdialog.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sectionalignbottom.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sectionalignleft.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sectionalignright.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sectionaligntop.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sectionshrink.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sectionshrinkbottom.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sectionshrinktop.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_selectall.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_selectmode.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_selectobject.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_selecttable.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sendfax.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sendmail.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sendtoback.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/lch_setborderstyle.pngbin0 -> 95 bytes
-rw-r--r--default_images/res/commandimagelist/lch_setdocumentproperties.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_setobjecttobackground.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_setobjecttoforeground.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_setoptimalcolumnwidth.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_setoptimalcolumnwidthdirect.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/lch_setoptimalrowheight.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_shadowcursor.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_shadowed.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_shear.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_shell3d.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showannotation.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showbookview.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showbrowser.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showdatanavigator.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showfmexplorer.pngbin0 -> 242 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showmultiplepages.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showpropbrowser.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showslide.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/lch_showtwopages.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_shrink.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/lch_smallestheight.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/lch_smallestwidth.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/lch_snapborder.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/lch_snapframe.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/lch_snappoints.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/lch_solidcreate.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sortascending.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sortdescending.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sortdown.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sortup.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sourceview.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spacepara1.pngbin0 -> 87 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spacepara15.pngbin0 -> 86 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spacepara2.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spelldialog.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spelling.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spellingandgrammardialog.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spellonline.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_sphere.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_spinbutton.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/lch_splitcell.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_splithorizontal.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_splitparenthorizontal.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_splitparentvertical.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_splitvertical.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_square.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/lch_square_rounded.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/lch_square_rounded_unfilled.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/lch_square_unfilled.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starchartdialog.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.bang.pngbin0 -> 239 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.concave-star6.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.doorplate.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.horizontal-scroll.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.pngbin0 -> 207 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.signet.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.star12.pngbin0 -> 240 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.star24.pngbin0 -> 235 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.star4.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.star5.pngbin0 -> 208 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.star6.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.star8.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/commandimagelist/lch_starshapes.vertical-scroll.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_strikeout.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_styleapply.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_stylenewbyexample.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/lch_styleupdatebyexample.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_subscript.pngbin0 -> 217 bytes
-rw-r--r--default_images/res/commandimagelist/lch_superscript.pngbin0 -> 224 bytes
-rw-r--r--default_images/res/commandimagelist/lch_switchcontroldesignmode.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/lch_switchxformsdesignmode.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolcatalogue.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.brace-pair.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.bracket-pair.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.cloud.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.diamond-bevel.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.flower.pngbin0 -> 207 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.forbidden.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.heart.pngbin0 -> 198 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.left-brace.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.left-bracket.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.lightning.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.moon.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.octagon-bevel.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.puzzle.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.quad-bevel.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.right-brace.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.right-bracket.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.smiley.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lch_symbolshapes.sun.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/commandimagelist/lch_tabdialog.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/lch_tabledesign.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/lch_tabledialog.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/lch_tablemodefix.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/lch_tablemodefixprop.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/lch_tablemodevariable.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/lch_tablesort.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_testmode.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/lch_text.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_text_marquee.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/lch_textdirectionlefttoright.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/lch_textdirectiontoptobottom.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_textfittosizetool.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_texttoolbox.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/lch_thesaurus.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/lch_thesaurusdialog.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/lch_timefield.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toggleanchortype.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toggleaxisdescr.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toggleaxistitle.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/lch_togglebreakpoint.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/lch_togglegridhorizontal.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/lch_togglegridvertical.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/lch_togglelegend.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/lch_togglemergecells.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toggleobjectbeziermode.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toggleobjectrotatemode.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_togglesheetgrid.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toggletitle.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toolsmacroedit.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_toolsoptions.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_torus.pngbin0 -> 186 bytes
-rw-r--r--default_images/res/commandimagelist/lch_transformdialog.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_underline.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_underlinedouble.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/lch_undo.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_ungroup.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/lch_unhainframes.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/lch_upsearch.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_urlbutton.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/lch_usewizards.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/commandimagelist/lch_verticalcaption.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/lch_verticaltext.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/lch_verticaltextfittosizetool.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/lch_vfixedline.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/lch_view100.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_viewdatasourcebrowser.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/lch_viewformasgrid.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/lch_vscrollbar.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/lch_window3d.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/lch_wrapcontour.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/lch_wrapideal.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/lch_wrapleft.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/lch_wrapoff.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/lch_wrapon.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/lch_wrapright.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/lch_wrapthrough.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/lch_xlinecolor.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_xlinestyle.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoom.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoom100percent.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomin.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomminus.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomnext.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomobjects.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomoptimal.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomout.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoompage.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoompagewidth.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoompanning.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomplus.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomprevious.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/commandimagelist/lch_zoomtoolbox.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lc_bold.pngbin0 -> 278 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lc_italic.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lc_underline.pngbin0 -> 293 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lc_underlinedouble.pngbin0 -> 294 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lch_bold.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lch_italic.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lch_underline.pngbin0 -> 186 bytes
-rw-r--r--default_images/res/commandimagelist/nl/lch_underlinedouble.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sc_bold.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sc_italic.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sc_underline.pngbin0 -> 219 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sc_underlinedouble.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sch_bold.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sch_italic.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sch_underline.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/nl/sch_underlinedouble.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lc_bold.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lc_italic.pngbin0 -> 320 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lc_underline.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lc_underlinedouble.pngbin0 -> 236 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lch_bold.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lch_italic.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lch_underline.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/pl/lch_underlinedouble.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sc_bold.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sc_italic.pngbin0 -> 236 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sc_underline.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sc_underlinedouble.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sch_italic.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sch_underline.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/pl/sch_underlinedouble.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lc_bold.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lc_italic.pngbin0 -> 240 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lc_underline.pngbin0 -> 275 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lc_underlinedouble.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lch_bold.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lch_underline.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/lch_underlinedouble.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sc_bold.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sc_italic.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sc_underline.pngbin0 -> 219 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sc_underlinedouble.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sch_bold.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sch_italic.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sch_underline.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/pt-BR/sch_underlinedouble.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lc_bold.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lc_italic.pngbin0 -> 239 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lc_underline.pngbin0 -> 275 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lc_underlinedouble.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lch_bold.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lch_underline.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/pt/lch_underlinedouble.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sc_bold.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sc_italic.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sc_underline.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sc_underlinedouble.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sch_bold.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sch_italic.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sch_underline.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/pt/sch_underlinedouble.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lc_bold.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lc_italic.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lc_underline.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lc_underlinedouble.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lch_bold.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lch_italic.pngbin0 -> 341 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lch_underline.pngbin0 -> 112 bytes
-rw-r--r--default_images/res/commandimagelist/ru/lch_underlinedouble.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sc_bold.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sc_italic.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sc_underline.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sc_underlinedouble.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sch_bold.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sch_italic.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sch_underline.pngbin0 -> 106 bytes
-rw-r--r--default_images/res/commandimagelist/ru/sch_underlinedouble.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/sc_absoluterecord.pngbin0 -> 621 bytes
-rw-r--r--default_images/res/commandimagelist/sc_actionmode.pngbin0 -> 570 bytes
-rw-r--r--default_images/res/commandimagelist/sc_addbookmark.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_adddatefield.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/commandimagelist/sc_adddirect.pngbin0 -> 350 bytes
-rw-r--r--default_images/res/commandimagelist/sc_addfield.pngbin0 -> 305 bytes
-rw-r--r--default_images/res/commandimagelist/sc_addons.pngbin0 -> 360 bytes
-rw-r--r--default_images/res/commandimagelist/sc_addprintarea.pngbin0 -> 346 bytes
-rw-r--r--default_images/res/commandimagelist/sc_addtable.pngbin0 -> 370 bytes
-rw-r--r--default_images/res/commandimagelist/sc_addwatch.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/sc_adjust.pngbin0 -> 523 bytes
-rw-r--r--default_images/res/commandimagelist/sc_advancedmode.pngbin0 -> 599 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignblock.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignbottom.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_aligncenter.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/commandimagelist/sc_aligndown.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignhorizontalcenter.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignleft.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignmiddle.pngbin0 -> 462 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignright.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sc_aligntop.pngbin0 -> 425 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignup.pngbin0 -> 337 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignvcenter.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_alignverticalcenter.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_animationeffects.pngbin0 -> 429 bytes
-rw-r--r--default_images/res/commandimagelist/sc_animationmode.pngbin0 -> 476 bytes
-rw-r--r--default_images/res/commandimagelist/sc_animationobjects.pngbin0 -> 362 bytes
-rw-r--r--default_images/res/commandimagelist/sc_apply.pngbin0 -> 850 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arc.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.chevron.pngbin0 -> 359 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.circular-arrow.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.corner-right-arrow.pngbin0 -> 289 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.down-arrow-callout.pngbin0 -> 337 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.down-arrow.pngbin0 -> 340 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.left-arrow-callout.pngbin0 -> 370 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.left-arrow.pngbin0 -> 305 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.left-right-arrow-callout.pngbin0 -> 390 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.left-right-arrow.pngbin0 -> 303 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.notched-right-arrow.pngbin0 -> 321 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.pentagon-right.pngbin0 -> 317 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.pngbin0 -> 303 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.quad-arrow-callout.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.quad-arrow.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.right-arrow-callout.pngbin0 -> 371 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.right-arrow.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.s-sharped-arrow.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.split-arrow.pngbin0 -> 379 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.split-round-arrow.pngbin0 -> 471 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.striped-right-arrow.pngbin0 -> 336 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.up-arrow-callout.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.up-arrow.pngbin0 -> 323 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.up-down-arrow-callout.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.up-down-arrow.pngbin0 -> 371 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.up-right-arrow-callout.pngbin0 -> 423 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.up-right-arrow.pngbin0 -> 354 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowshapes.up-right-down-arrow.pngbin0 -> 385 bytes
-rw-r--r--default_images/res/commandimagelist/sc_arrowstoolbox.pngbin0 -> 333 bytes
-rw-r--r--default_images/res/commandimagelist/sc_assignlayout.pngbin0 -> 383 bytes
-rw-r--r--default_images/res/commandimagelist/sc_autocontrolfocus.pngbin0 -> 452 bytes
-rw-r--r--default_images/res/commandimagelist/sc_autofilter.pngbin0 -> 481 bytes
-rw-r--r--default_images/res/commandimagelist/sc_autoformat.pngbin0 -> 474 bytes
-rw-r--r--default_images/res/commandimagelist/sc_autosum.pngbin0 -> 329 bytes
-rw-r--r--default_images/res/commandimagelist/sc_avmediaplayer.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/sc_backcolor.pngbin0 -> 387 bytes
-rw-r--r--default_images/res/commandimagelist/sc_backgroundcolor.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/commandimagelist/sc_backgroundpatterncontroller.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/commandimagelist/sc_backward.pngbin0 -> 295 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.block-arc.pngbin0 -> 421 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.can.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.circle-pie.pngbin0 -> 527 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.circle.pngbin0 -> 555 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.cross.pngbin0 -> 330 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.cube.pngbin0 -> 382 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.diamond.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.ellipse.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.frame.pngbin0 -> 280 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.hexagon.pngbin0 -> 326 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.isosceles-triangle.pngbin0 -> 327 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.octagon.pngbin0 -> 343 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.paper.pngbin0 -> 357 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.parallelogram.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.pentagon.pngbin0 -> 363 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.quadrat.pngbin0 -> 250 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.rectangle.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.right-triangle.pngbin0 -> 357 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.ring.pngbin0 -> 663 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.round-quadrat.pngbin0 -> 420 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.round-rectangle.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicshapes.trapezoid.pngbin0 -> 317 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicstepinto.pngbin0 -> 444 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicstepout.pngbin0 -> 434 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicstepover.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/commandimagelist/sc_basicstop.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/commandimagelist/sc_beamer.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_beforeobject.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/sc_behindobject.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezier_unfilled.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezierappend.pngbin0 -> 289 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezierclose.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezierconvert.pngbin0 -> 530 bytes
-rw-r--r--default_images/res/commandimagelist/sc_beziercutline.pngbin0 -> 591 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezierdelete.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezieredge.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sc_beziereliminatepoints.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezierfill.pngbin0 -> 475 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bezierinsert.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/sc_beziermove.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/commandimagelist/sc_beziersmooth.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/sc_beziersymmetric.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bighandles.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bmpmask.pngbin0 -> 344 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bmpmask_h.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bold.pngbin0 -> 263 bytes
-rw-r--r--default_images/res/commandimagelist/sc_borderdialog.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bringtofront.pngbin0 -> 326 bytes
-rw-r--r--default_images/res/commandimagelist/sc_browsebackward.pngbin0 -> 328 bytes
-rw-r--r--default_images/res/commandimagelist/sc_browseforward.pngbin0 -> 320 bytes
-rw-r--r--default_images/res/commandimagelist/sc_browseview.pngbin0 -> 622 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bullet.pngbin0 -> 473 bytes
-rw-r--r--default_images/res/commandimagelist/sc_bulletsandnumberingdialog.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.cloud-callout.pngbin0 -> 624 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.line-callout-1.pngbin0 -> 343 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.line-callout-2.pngbin0 -> 370 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.line-callout-3.pngbin0 -> 325 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.rectangular-callout.pngbin0 -> 345 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.round-callout.pngbin0 -> 580 bytes
-rw-r--r--default_images/res/commandimagelist/sc_calloutshapes.round-rectangular-callout.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cancel.pngbin0 -> 606 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cellvertbottom.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cellvertcenter.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cellverttop.pngbin0 -> 426 bytes
-rw-r--r--default_images/res/commandimagelist/sc_centerpara.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sc_chainframes.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_changebezier.pngbin0 -> 532 bytes
-rw-r--r--default_images/res/commandimagelist/sc_changecasetolower.pngbin0 -> 297 bytes
-rw-r--r--default_images/res/commandimagelist/sc_changecasetoupper.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/sc_changedatabasefield.pngbin0 -> 751 bytes
-rw-r--r--default_images/res/commandimagelist/sc_changepolygon.pngbin0 -> 537 bytes
-rw-r--r--default_images/res/commandimagelist/sc_charfontname.pngbin0 -> 558 bytes
-rw-r--r--default_images/res/commandimagelist/sc_checkbox.pngbin0 -> 403 bytes
-rw-r--r--default_images/res/commandimagelist/sc_choosecontrols.pngbin0 -> 423 bytes
-rw-r--r--default_images/res/commandimagelist/sc_choosedesign.pngbin0 -> 598 bytes
-rw-r--r--default_images/res/commandimagelist/sc_choosemacro.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/commandimagelist/sc_choosepolygon.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/sc_circle.pngbin0 -> 550 bytes
-rw-r--r--default_images/res/commandimagelist/sc_circle_unfilled.pngbin0 -> 572 bytes
-rw-r--r--default_images/res/commandimagelist/sc_circlearc.pngbin0 -> 483 bytes
-rw-r--r--default_images/res/commandimagelist/sc_circlecut.pngbin0 -> 560 bytes
-rw-r--r--default_images/res/commandimagelist/sc_circlecut_unfilled.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/commandimagelist/sc_circlepie.pngbin0 -> 527 bytes
-rw-r--r--default_images/res/commandimagelist/sc_circlepie_unfilled.pngbin0 -> 552 bytes
-rw-r--r--default_images/res/commandimagelist/sc_clickchangerotation.pngbin0 -> 598 bytes
-rw-r--r--default_images/res/commandimagelist/sc_closedoc.pngbin0 -> 520 bytes
-rw-r--r--default_images/res/commandimagelist/sc_closedocs.pngbin0 -> 243 bytes
-rw-r--r--default_images/res/commandimagelist/sc_closemasterview.pngbin0 -> 523 bytes
-rw-r--r--default_images/res/commandimagelist/sc_closewin.pngbin0 -> 520 bytes
-rw-r--r--default_images/res/commandimagelist/sc_color.pngbin0 -> 352 bytes
-rw-r--r--default_images/res/commandimagelist/sc_colorsettings.pngbin0 -> 463 bytes
-rw-r--r--default_images/res/commandimagelist/sc_colorview.pngbin0 -> 348 bytes
-rw-r--r--default_images/res/commandimagelist/sc_combobox.pngbin0 -> 553 bytes
-rw-r--r--default_images/res/commandimagelist/sc_commontaskbarvisible.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/commandimagelist/sc_compilebasic.pngbin0 -> 418 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cone.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/commandimagelist/sc_config.pngbin0 -> 581 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connector.pngbin0 -> 376 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorarrowend.pngbin0 -> 425 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorarrows.pngbin0 -> 412 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorarrowstart.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcircleend.pngbin0 -> 479 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcircles.pngbin0 -> 409 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcirclestart.pngbin0 -> 465 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcurve.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcurvearrowend.pngbin0 -> 473 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcurvearrows.pngbin0 -> 509 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcurvearrowstart.pngbin0 -> 471 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcurvecircleend.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcurvecircles.pngbin0 -> 427 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorcurvecirclestart.pngbin0 -> 493 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorline.pngbin0 -> 363 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinearrowend.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinearrows.pngbin0 -> 375 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinearrowstart.pngbin0 -> 435 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinecircleend.pngbin0 -> 460 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinecircles.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinecirclestart.pngbin0 -> 464 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlines.pngbin0 -> 366 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinesarrowend.pngbin0 -> 451 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinesarrows.pngbin0 -> 454 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinesarrowstart.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinescircleend.pngbin0 -> 461 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinescircles.pngbin0 -> 380 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectorlinescirclestart.pngbin0 -> 446 bytes
-rw-r--r--default_images/res/commandimagelist/sc_connectortoolbox.pngbin0 -> 409 bytes
-rw-r--r--default_images/res/commandimagelist/sc_contourdialog.pngbin0 -> 371 bytes
-rw-r--r--default_images/res/commandimagelist/sc_controlcodes.pngbin0 -> 278 bytes
-rw-r--r--default_images/res/commandimagelist/sc_controlproperties.pngbin0 -> 503 bytes
-rw-r--r--default_images/res/commandimagelist/sc_convertinto3d.pngbin0 -> 513 bytes
-rw-r--r--default_images/res/commandimagelist/sc_convertinto3dlathe.pngbin0 -> 509 bytes
-rw-r--r--default_images/res/commandimagelist/sc_convertinto3dlathefast.pngbin0 -> 490 bytes
-rw-r--r--default_images/res/commandimagelist/sc_copy.pngbin0 -> 357 bytes
-rw-r--r--default_images/res/commandimagelist/sc_countall.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_crookrotate.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/commandimagelist/sc_crookslant.pngbin0 -> 484 bytes
-rw-r--r--default_images/res/commandimagelist/sc_crop.pngbin0 -> 767 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cube.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/commandimagelist/sc_currencyfield.pngbin0 -> 455 bytes
-rw-r--r--default_images/res/commandimagelist/sc_customanimation.pngbin0 -> 530 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cut.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cylinder.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/commandimagelist/sc_cyramid.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_datadatapilotrun.pngbin0 -> 555 bytes
-rw-r--r--default_images/res/commandimagelist/sc_datafilterautofilter.pngbin0 -> 481 bytes
-rw-r--r--default_images/res/commandimagelist/sc_datafilterspecialfilter.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_datafilterstandardfilter.pngbin0 -> 265 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dataimport.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dataincolumns.pngbin0 -> 226 bytes
-rw-r--r--default_images/res/commandimagelist/sc_datainrows.pngbin0 -> 271 bytes
-rw-r--r--default_images/res/commandimagelist/sc_datefield.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbaddrelation.pngbin0 -> 413 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbchangedesignmode.pngbin0 -> 520 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbclearquery.pngbin0 -> 612 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbdistinctvalues.pngbin0 -> 389 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbdtableedit.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbformdelete.pngbin0 -> 477 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbformedit.pngbin0 -> 476 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbformopen.pngbin0 -> 401 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbformrename.pngbin0 -> 390 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbindexdesign.pngbin0 -> 474 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewform.pngbin0 -> 438 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewformautopilot.pngbin0 -> 554 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewquery.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewqueryautopilot.pngbin0 -> 660 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewquerysql.pngbin0 -> 385 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewreport.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewreportautopilot.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewtable.pngbin0 -> 406 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewtableautopilot.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewview.pngbin0 -> 475 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbnewviewsql.pngbin0 -> 550 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbquerydelete.pngbin0 -> 453 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbqueryedit.pngbin0 -> 563 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbqueryopen.pngbin0 -> 506 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbqueryrename.pngbin0 -> 266 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbreportdelete.pngbin0 -> 557 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbreportedit.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbreportopen.pngbin0 -> 479 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbreportrename.pngbin0 -> 425 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbsortingandgrouping.pngbin0 -> 362 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbtabledelete.pngbin0 -> 453 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbtableedit.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbtableopen.pngbin0 -> 389 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbtablerename.pngbin0 -> 265 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbviewaliases.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbviewfunctions.pngbin0 -> 287 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dbviewtablenames.pngbin0 -> 333 bytes
-rw-r--r--default_images/res/commandimagelist/sc_decrementindent.pngbin0 -> 308 bytes
-rw-r--r--default_images/res/commandimagelist/sc_decrementlevel.pngbin0 -> 280 bytes
-rw-r--r--default_images/res/commandimagelist/sc_decrementsublevels.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/commandimagelist/sc_defaultbullet.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/sc_defaultnumbering.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/sc_definename.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/commandimagelist/sc_defineprintarea.pngbin0 -> 403 bytes
-rw-r--r--default_images/res/commandimagelist/sc_delete.pngbin0 -> 296 bytes
-rw-r--r--default_images/res/commandimagelist/sc_deleteallannotation.pngbin0 -> 496 bytes
-rw-r--r--default_images/res/commandimagelist/sc_deleteannotation.pngbin0 -> 467 bytes
-rw-r--r--default_images/res/commandimagelist/sc_deletecolumns.pngbin0 -> 299 bytes
-rw-r--r--default_images/res/commandimagelist/sc_deletemasterpage.pngbin0 -> 536 bytes
-rw-r--r--default_images/res/commandimagelist/sc_deleteprintarea.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_deleterecord.pngbin0 -> 447 bytes
-rw-r--r--default_images/res/commandimagelist/sc_deleterows.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/sc_designerdialog.pngbin0 -> 499 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dia.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_diaauto.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_diaeffect.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_diagramdata.pngbin0 -> 244 bytes
-rw-r--r--default_images/res/commandimagelist/sc_diagramtype.pngbin0 -> 488 bytes
-rw-r--r--default_images/res/commandimagelist/sc_diaspeed.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_diatime.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_distributecolumns.pngbin0 -> 411 bytes
-rw-r--r--default_images/res/commandimagelist/sc_distributerows.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/sc_doubleclicktextedit.pngbin0 -> 460 bytes
-rw-r--r--default_images/res/commandimagelist/sc_downsearch.pngbin0 -> 323 bytes
-rw-r--r--default_images/res/commandimagelist/sc_draw.pngbin0 -> 585 bytes
-rw-r--r--default_images/res/commandimagelist/sc_drawcaption.pngbin0 -> 566 bytes
-rw-r--r--default_images/res/commandimagelist/sc_drawchart.pngbin0 -> 360 bytes
-rw-r--r--default_images/res/commandimagelist/sc_drawselect.pngbin0 -> 361 bytes
-rw-r--r--default_images/res/commandimagelist/sc_drawtext.pngbin0 -> 291 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dsbdocumentdatasource.pngbin0 -> 802 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dsbeditdoc.pngbin0 -> 532 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dsbformletter.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dsbinsertcolumns.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dsbinsertcontent.pngbin0 -> 283 bytes
-rw-r--r--default_images/res/commandimagelist/sc_dsbrowserexplorer.pngbin0 -> 492 bytes
-rw-r--r--default_images/res/commandimagelist/sc_duplicatepage.pngbin0 -> 471 bytes
-rw-r--r--default_images/res/commandimagelist/sc_edit.pngbin0 -> 330 bytes
-rw-r--r--default_images/res/commandimagelist/sc_editdoc.pngbin0 -> 532 bytes
-rw-r--r--default_images/res/commandimagelist/sc_editframeset.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_editglossary.pngbin0 -> 429 bytes
-rw-r--r--default_images/res/commandimagelist/sc_editheaderandfooter.pngbin0 -> 359 bytes
-rw-r--r--default_images/res/commandimagelist/sc_editprintarea.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ellipse.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ellipse_unfilled.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ellipsecut.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ellipsecut_unfilled.pngbin0 -> 568 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ellipsetoolbox.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_entergroup.pngbin0 -> 452 bytes
-rw-r--r--default_images/res/commandimagelist/sc_entirecolumn.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/commandimagelist/sc_entirerow.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/commandimagelist/sc_euroconverter.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/commandimagelist/sc_executereport.pngbin0 -> 525 bytes
-rw-r--r--default_images/res/commandimagelist/sc_expandpage.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/sc_exportdialog.pngbin0 -> 471 bytes
-rw-r--r--default_images/res/commandimagelist/sc_exportdirecttopdf.pngbin0 -> 401 bytes
-rw-r--r--default_images/res/commandimagelist/sc_exportto.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extendedhelp.pngbin0 -> 689 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusion3dcolor.pngbin0 -> 357 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusiondepthfloater.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusiondirectionfloater.pngbin0 -> 539 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusionlightingfloater.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusionsurfacefloater.pngbin0 -> 607 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusiontiltdown.pngbin0 -> 626 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusiontiltleft.pngbin0 -> 715 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusiontiltright.pngbin0 -> 709 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusiontiltup.pngbin0 -> 655 bytes
-rw-r--r--default_images/res/commandimagelist/sc_extrusiontoggle.pngbin0 -> 530 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fieldnames.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fields.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/commandimagelist/sc_filecontrol.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/commandimagelist/sc_filedocument.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fillshadow.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fillstyle.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/commandimagelist/sc_filtercrit.pngbin0 -> 262 bytes
-rw-r--r--default_images/res/commandimagelist/sc_firstpage.pngbin0 -> 494 bytes
-rw-r--r--default_images/res/commandimagelist/sc_firstrecord.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fliphorizontal.pngbin0 -> 396 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flipvertical.pngbin0 -> 420 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-alternate-process.pngbin0 -> 420 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-card.pngbin0 -> 311 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-collate.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-connector.pngbin0 -> 550 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-data.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-decision.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-delay.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-direct-access-storage.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-display.pngbin0 -> 410 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-document.pngbin0 -> 484 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-extract.pngbin0 -> 327 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-internal-storage.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-magnetic-disk.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-manual-input.pngbin0 -> 317 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-manual-operation.pngbin0 -> 317 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-merge.pngbin0 -> 340 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-multidocument.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-off-page-connector.pngbin0 -> 307 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-or.pngbin0 -> 601 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-predefined-process.pngbin0 -> 312 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-preparation.pngbin0 -> 326 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-process.pngbin0 -> 250 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-punched-tape.pngbin0 -> 647 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-sequential-access.pngbin0 -> 617 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-sort.pngbin0 -> 389 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-stored-data.pngbin0 -> 495 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-summing-junction.pngbin0 -> 666 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.flowchart-terminator.pngbin0 -> 311 bytes
-rw-r--r--default_images/res/commandimagelist/sc_flowchartshapes.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontcolor.pngbin0 -> 352 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontdialog.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontheight.pngbin0 -> 699 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontwork.pngbin0 -> 279 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkalignmentfloater.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkcharacterspacingfloater.pngbin0 -> 487 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkgalleryfloater.pngbin0 -> 415 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworksameletterheights.pngbin0 -> 254 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-down-curve.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-down-pour.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-left-curve.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-left-pour.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-right-curve.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-right-pour.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-up-curve.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-up-pour.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-chevron-down.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-chevron-up.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-circle-curve.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-circle-pour.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-curve-down.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-curve-up.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-down.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-left.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-right.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-up-and-left.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-up-and-right.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-up.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-inflate.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-open-circle-curve.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-open-circle-pour.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-plain-text.pngbin0 -> 83 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-slant-down.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-slant-up.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-stop.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-triangle-down.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-triangle-up.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.fontwork-wave.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fontworkshapetype.pngbin0 -> 279 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formatarea.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formatgroup.pngbin0 -> 348 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formatline.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formatpaintbrush.pngbin0 -> 595 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formattedfield.pngbin0 -> 323 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formatungroup.pngbin0 -> 281 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formdesigntools.pngbin0 -> 421 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formelcursor.pngbin0 -> 284 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formfilter.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formfiltered.pngbin0 -> 380 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formfilterexecute.pngbin0 -> 265 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formfilternavigator.pngbin0 -> 556 bytes
-rw-r--r--default_images/res/commandimagelist/sc_formproperties.pngbin0 -> 498 bytes
-rw-r--r--default_images/res/commandimagelist/sc_forward.pngbin0 -> 285 bytes
-rw-r--r--default_images/res/commandimagelist/sc_framedialog.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/commandimagelist/sc_framelinecolor.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/sc_freeline.pngbin0 -> 530 bytes
-rw-r--r--default_images/res/commandimagelist/sc_freeline_unfilled.pngbin0 -> 562 bytes
-rw-r--r--default_images/res/commandimagelist/sc_fullscreen.pngbin0 -> 335 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gallery.pngbin0 -> 473 bytes
-rw-r--r--default_images/res/commandimagelist/sc_getactivetask.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_glueeditmode.pngbin0 -> 351 bytes
-rw-r--r--default_images/res/commandimagelist/sc_glueescapedirectionbottom.pngbin0 -> 373 bytes
-rw-r--r--default_images/res/commandimagelist/sc_glueescapedirectionleft.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/sc_glueescapedirectionright.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/sc_glueescapedirectiontop.pngbin0 -> 372 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gluehorzaligncenter.pngbin0 -> 410 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gluehorzalignleft.pngbin0 -> 418 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gluehorzalignright.pngbin0 -> 422 bytes
-rw-r--r--default_images/res/commandimagelist/sc_glueinsertpoint.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gluepercent.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gluevertalignbottom.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gluevertaligncenter.pngbin0 -> 403 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gluevertaligntop.pngbin0 -> 436 bytes
-rw-r--r--default_images/res/commandimagelist/sc_goalseekdialog.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gotoend.pngbin0 -> 383 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gotoendofdoc.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gotostartofdoc.pngbin0 -> 494 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gotostartoftable.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafattrcrop.pngbin0 -> 767 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafblue.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafcontrast.pngbin0 -> 498 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafgamma.pngbin0 -> 666 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafgreen.pngbin0 -> 439 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafinvert.pngbin0 -> 387 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafluminance.pngbin0 -> 345 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafmode.pngbin0 -> 502 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grafred.pngbin0 -> 434 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graftransparence.pngbin0 -> 447 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphic.pngbin0 -> 336 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfilterinvert.pngbin0 -> 387 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfiltermosaic.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfilterpopart.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfilterposter.pngbin0 -> 486 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfilterrelief.pngbin0 -> 609 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfilterremovenoise.pngbin0 -> 333 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfiltersepia.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfiltersharpen.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfiltersmooth.pngbin0 -> 370 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfiltersobel.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfiltersolarize.pngbin0 -> 420 bytes
-rw-r--r--default_images/res/commandimagelist/sc_graphicfiltertoolbox.pngbin0 -> 376 bytes
-rw-r--r--default_images/res/commandimagelist/sc_greatestheight.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_greatestwidth.pngbin0 -> 372 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grid.pngbin0 -> 244 bytes
-rw-r--r--default_images/res/commandimagelist/sc_griduse.pngbin0 -> 254 bytes
-rw-r--r--default_images/res/commandimagelist/sc_gridvisible.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sc_group.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/commandimagelist/sc_groupbox.pngbin0 -> 413 bytes
-rw-r--r--default_images/res/commandimagelist/sc_grow.pngbin0 -> 603 bytes
-rw-r--r--default_images/res/commandimagelist/sc_halfsphere.pngbin0 -> 608 bytes
-rw-r--r--default_images/res/commandimagelist/sc_handlesdraft.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sc_help.pngbin0 -> 815 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpannotate.pngbin0 -> 428 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpbookmark.pngbin0 -> 369 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpdownload.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helperdialog.pngbin0 -> 715 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpindex.pngbin0 -> 715 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helplinesmove.pngbin0 -> 232 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helplinesuse.pngbin0 -> 295 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helplinesvisible.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpmenu.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpsearch.pngbin0 -> 278 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpzoomin.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/sc_helpzoomout.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/commandimagelist/sc_hfixedline.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sc_hideslide.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/commandimagelist/sc_hscrollbar.pngbin0 -> 387 bytes
-rw-r--r--default_images/res/commandimagelist/sc_hyperlinkdialog.pngbin0 -> 915 bytes
-rw-r--r--default_images/res/commandimagelist/sc_hyphenate.pngbin0 -> 267 bytes
-rw-r--r--default_images/res/commandimagelist/sc_hyphenation.pngbin0 -> 267 bytes
-rw-r--r--default_images/res/commandimagelist/sc_imagebutton.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/commandimagelist/sc_imagecontrol.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/commandimagelist/sc_imagemapdialog.pngbin0 -> 494 bytes
-rw-r--r--default_images/res/commandimagelist/sc_importdialog.pngbin0 -> 381 bytes
-rw-r--r--default_images/res/commandimagelist/sc_importfromfile.pngbin0 -> 555 bytes
-rw-r--r--default_images/res/commandimagelist/sc_incrementindent.pngbin0 -> 316 bytes
-rw-r--r--default_images/res/commandimagelist/sc_incrementlevel.pngbin0 -> 284 bytes
-rw-r--r--default_images/res/commandimagelist/sc_incrementsublevels.pngbin0 -> 389 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inscellsctrl.pngbin0 -> 393 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertannotation.pngbin0 -> 434 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertauthorfield.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertavmedia.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertbookmark.pngbin0 -> 458 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertcaptiondialog.pngbin0 -> 312 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertcellsdown.pngbin0 -> 487 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertcellsright.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertcolumns.pngbin0 -> 375 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertctrl.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertcurrencyfield.pngbin0 -> 455 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertdatefield.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertdoc.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertdraw.pngbin0 -> 492 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertedit.pngbin0 -> 330 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertendnote.pngbin0 -> 508 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertfield.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertfieldctrl.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertfilecontrol.pngbin0 -> 539 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertfixedtext.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertfootnote.pngbin0 -> 553 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertformattedfield.pngbin0 -> 323 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertformula.pngbin0 -> 357 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertframe.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertframeinteract.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertframeinteractnocolumns.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertgraphic.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserthyperlink.pngbin0 -> 556 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertimagecontrol.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertindexesentry.pngbin0 -> 256 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertlistbox.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertmasterpage.pngbin0 -> 450 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertmath.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertneutralparagraph.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertnumericfield.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertobjctrl.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertobject.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertobjectchart.pngbin0 -> 360 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertobjectdialog.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertobjectfloatingframe.pngbin0 -> 250 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertobjectstarmath.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertpage.pngbin0 -> 441 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertpagecountfield.pngbin0 -> 562 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertpagenumberfield.pngbin0 -> 514 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertpatternfield.pngbin0 -> 312 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertplugin.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertpushbutton.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertreferencefield.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertrows.pngbin0 -> 316 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertsection.pngbin0 -> 320 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertsound.pngbin0 -> 301 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertspreadsheet.pngbin0 -> 244 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertsymbol.pngbin0 -> 473 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserttable.pngbin0 -> 244 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserttextframe.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserttimefield.pngbin0 -> 564 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserttitlefield.pngbin0 -> 324 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserttoolbox.pngbin0 -> 555 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserttopicfield.pngbin0 -> 438 bytes
-rw-r--r--default_images/res/commandimagelist/sc_inserttreecontrol.pngbin0 -> 210 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insertvideo.pngbin0 -> 362 bytes
-rw-r--r--default_images/res/commandimagelist/sc_insobjctrl.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_interactivegradient.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/commandimagelist/sc_interactivetransparence.pngbin0 -> 447 bytes
-rw-r--r--default_images/res/commandimagelist/sc_internetonline.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_italic.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/commandimagelist/sc_justifypara.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sc_label.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/sc_lastpage.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/commandimagelist/sc_lastrecord.pngbin0 -> 309 bytes
-rw-r--r--default_images/res/commandimagelist/sc_leaveallgroups.pngbin0 -> 490 bytes
-rw-r--r--default_images/res/commandimagelist/sc_leavegroup.pngbin0 -> 454 bytes
-rw-r--r--default_images/res/commandimagelist/sc_leftpara.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sc_line.pngbin0 -> 371 bytes
-rw-r--r--default_images/res/commandimagelist/sc_line_diagonal.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linearrowcircle.pngbin0 -> 401 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linearrowend.pngbin0 -> 333 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linearrows.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linearrowsquare.pngbin0 -> 347 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linearrowstart.pngbin0 -> 337 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linecirclearrow.pngbin0 -> 399 bytes
-rw-r--r--default_images/res/commandimagelist/sc_lineendstyle.pngbin0 -> 423 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linesquarearrow.pngbin0 -> 344 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linestyle.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linetoolbox.pngbin0 -> 562 bytes
-rw-r--r--default_images/res/commandimagelist/sc_linewidth.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/sc_listbox.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/commandimagelist/sc_loadbasic.pngbin0 -> 407 bytes
-rw-r--r--default_images/res/commandimagelist/sc_macrorecorder.pngbin0 -> 513 bytes
-rw-r--r--default_images/res/commandimagelist/sc_macrorecordingfloat.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_mailwindow.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_managebreakpoints.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/commandimagelist/sc_managelanguage.pngbin0 -> 671 bytes
-rw-r--r--default_images/res/commandimagelist/sc_marks.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/sc_matchgroup.pngbin0 -> 250 bytes
-rw-r--r--default_images/res/commandimagelist/sc_measureline.pngbin0 -> 407 bytes
-rw-r--r--default_images/res/commandimagelist/sc_mergecells.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/sc_mergedialog.pngbin0 -> 459 bytes
-rw-r--r--default_images/res/commandimagelist/sc_mirror.pngbin0 -> 726 bytes
-rw-r--r--default_images/res/commandimagelist/sc_modifyframe.pngbin0 -> 487 bytes
-rw-r--r--default_images/res/commandimagelist/sc_modifypage.pngbin0 -> 398 bytes
-rw-r--r--default_images/res/commandimagelist/sc_moduledialog.pngbin0 -> 384 bytes
-rw-r--r--default_images/res/commandimagelist/sc_morecontrols.pngbin0 -> 361 bytes
-rw-r--r--default_images/res/commandimagelist/sc_movedown.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_movedownsubitems.pngbin0 -> 434 bytes
-rw-r--r--default_images/res/commandimagelist/sc_moveup.pngbin0 -> 313 bytes
-rw-r--r--default_images/res/commandimagelist/sc_moveupsubitems.pngbin0 -> 432 bytes
-rw-r--r--default_images/res/commandimagelist/sc_navigationbar.pngbin0 -> 553 bytes
-rw-r--r--default_images/res/commandimagelist/sc_navigator.pngbin0 -> 715 bytes
-rw-r--r--default_images/res/commandimagelist/sc_newarrangement.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/sc_newdoc.pngbin0 -> 350 bytes
-rw-r--r--default_images/res/commandimagelist/sc_newrecord.pngbin0 -> 367 bytes
-rw-r--r--default_images/res/commandimagelist/sc_nextannotation.pngbin0 -> 491 bytes
-rw-r--r--default_images/res/commandimagelist/sc_nextpage.pngbin0 -> 475 bytes
-rw-r--r--default_images/res/commandimagelist/sc_nextrecord.pngbin0 -> 264 bytes
-rw-r--r--default_images/res/commandimagelist/sc_no.pngbin0 -> 875 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatcurrency.pngbin0 -> 455 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatdate.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatdecdecimals.pngbin0 -> 461 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatdecimal.pngbin0 -> 255 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatincdecimals.pngbin0 -> 350 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatpercent.pngbin0 -> 281 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatscientific.pngbin0 -> 223 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberformatstandard.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numberingstart.pngbin0 -> 479 bytes
-rw-r--r--default_images/res/commandimagelist/sc_numericfield.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/sc_objectalign.pngbin0 -> 435 bytes
-rw-r--r--default_images/res/commandimagelist/sc_objectalignleft.pngbin0 -> 435 bytes
-rw-r--r--default_images/res/commandimagelist/sc_objectalignright.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_objectcatalog.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_objectposition.pngbin0 -> 288 bytes
-rw-r--r--default_images/res/commandimagelist/sc_objects3dtoolbox.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ok.pngbin0 -> 436 bytes
-rw-r--r--default_images/res/commandimagelist/sc_open.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/commandimagelist/sc_open_h.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sc_openreadonly.pngbin0 -> 539 bytes
-rw-r--r--default_images/res/commandimagelist/sc_openurl.pngbin0 -> 556 bytes
-rw-r--r--default_images/res/commandimagelist/sc_optimizetable.pngbin0 -> 372 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ordercrit.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlinebullet.pngbin0 -> 393 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlinecollapse.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlinecollapseall.pngbin0 -> 320 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlinedown.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlineexpand.pngbin0 -> 320 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlineexpandall.pngbin0 -> 322 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlinefont.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlineformat.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlineleft.pngbin0 -> 284 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlineright.pngbin0 -> 280 bytes
-rw-r--r--default_images/res/commandimagelist/sc_outlineup.pngbin0 -> 313 bytes
-rw-r--r--default_images/res/commandimagelist/sc_overline.pngbin0 -> 232 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pagedown.pngbin0 -> 475 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pageup.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/commandimagelist/sc_paragraphdialog.pngbin0 -> 429 bytes
-rw-r--r--default_images/res/commandimagelist/sc_paralefttoright.pngbin0 -> 406 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pararighttoleft.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/commandimagelist/sc_paraspacedecrease.pngbin0 -> 305 bytes
-rw-r--r--default_images/res/commandimagelist/sc_paraspaceincrease.pngbin0 -> 305 bytes
-rw-r--r--default_images/res/commandimagelist/sc_paste.pngbin0 -> 552 bytes
-rw-r--r--default_images/res/commandimagelist/sc_patternfield.pngbin0 -> 312 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pickthrough.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pie.pngbin0 -> 452 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pie_unfilled.pngbin0 -> 533 bytes
-rw-r--r--default_images/res/commandimagelist/sc_playmacro.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pluginsactive.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/sc_polygon.pngbin0 -> 411 bytes
-rw-r--r--default_images/res/commandimagelist/sc_polygon_diagonal.pngbin0 -> 275 bytes
-rw-r--r--default_images/res/commandimagelist/sc_polygon_diagonal_unfilled.pngbin0 -> 292 bytes
-rw-r--r--default_images/res/commandimagelist/sc_polygon_unfilled.pngbin0 -> 416 bytes
-rw-r--r--default_images/res/commandimagelist/sc_position.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sc_presentation.pngbin0 -> 451 bytes
-rw-r--r--default_images/res/commandimagelist/sc_presentationlayout.pngbin0 -> 505 bytes
-rw-r--r--default_images/res/commandimagelist/sc_preview.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_previewprintoptions.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/sc_previewzoom.pngbin0 -> 523 bytes
-rw-r--r--default_images/res/commandimagelist/sc_previousannotation.pngbin0 -> 510 bytes
-rw-r--r--default_images/res/commandimagelist/sc_previouspage.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/commandimagelist/sc_prevrecord.pngbin0 -> 272 bytes
-rw-r--r--default_images/res/commandimagelist/sc_print.pngbin0 -> 346 bytes
-rw-r--r--default_images/res/commandimagelist/sc_printdefault.pngbin0 -> 346 bytes
-rw-r--r--default_images/res/commandimagelist/sc_printersetup.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/sc_printlayout.pngbin0 -> 471 bytes
-rw-r--r--default_images/res/commandimagelist/sc_printpagepreview.pngbin0 -> 380 bytes
-rw-r--r--default_images/res/commandimagelist/sc_printpreview.pngbin0 -> 602 bytes
-rw-r--r--default_images/res/commandimagelist/sc_progressbar.pngbin0 -> 254 bytes
-rw-r--r--default_images/res/commandimagelist/sc_pushbutton.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/commandimagelist/sc_quickedit.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/commandimagelist/sc_quit.pngbin0 -> 400 bytes
-rw-r--r--default_images/res/commandimagelist/sc_radiobutton.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/sc_recsave.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/commandimagelist/sc_recsearch.pngbin0 -> 278 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rect.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rect_rounded.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rect_rounded_unfilled.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rect_unfilled.pngbin0 -> 219 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rectangletoolbox.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/sc_recundo.pngbin0 -> 712 bytes
-rw-r--r--default_images/res/commandimagelist/sc_redo.pngbin0 -> 602 bytes
-rw-r--r--default_images/res/commandimagelist/sc_refresh.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/commandimagelist/sc_refreshformcontrol.pngbin0 -> 581 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rehearsetimings.pngbin0 -> 689 bytes
-rw-r--r--default_images/res/commandimagelist/sc_reload.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/commandimagelist/sc_removebullets.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sc_removefilter.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/commandimagelist/sc_removefiltersort.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/commandimagelist/sc_renamemasterpage.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/sc_repeat.pngbin0 -> 609 bytes
-rw-r--r--default_images/res/commandimagelist/sc_reportnavigator.pngbin0 -> 676 bytes
-rw-r--r--default_images/res/commandimagelist/sc_reverseorder.pngbin0 -> 500 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rightpara.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rulerrows.pngbin0 -> 715 bytes
-rw-r--r--default_images/res/commandimagelist/sc_rulerrowsvertical.pngbin0 -> 709 bytes
-rw-r--r--default_images/res/commandimagelist/sc_runbasic.pngbin0 -> 534 bytes
-rw-r--r--default_images/res/commandimagelist/sc_save.pngbin0 -> 366 bytes
-rw-r--r--default_images/res/commandimagelist/sc_saveas.pngbin0 -> 402 bytes
-rw-r--r--default_images/res/commandimagelist/sc_saveastemplate.pngbin0 -> 558 bytes
-rw-r--r--default_images/res/commandimagelist/sc_savebasicas.pngbin0 -> 513 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sbabrwinsert.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sbaexecutesql.pngbin0 -> 585 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sbanativesql.pngbin0 -> 386 bytes
-rw-r--r--default_images/res/commandimagelist/sc_scaletext.pngbin0 -> 546 bytes
-rw-r--r--default_images/res/commandimagelist/sc_scrollbar.pngbin0 -> 390 bytes
-rw-r--r--default_images/res/commandimagelist/sc_searchdialog.pngbin0 -> 278 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sectionalignbottom.pngbin0 -> 354 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sectionalignleft.pngbin0 -> 449 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sectionalignright.pngbin0 -> 451 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sectionaligntop.pngbin0 -> 356 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sectionshrink.pngbin0 -> 369 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sectionshrinkbottom.pngbin0 -> 290 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sectionshrinktop.pngbin0 -> 296 bytes
-rw-r--r--default_images/res/commandimagelist/sc_selectall.pngbin0 -> 410 bytes
-rw-r--r--default_images/res/commandimagelist/sc_selectmode.pngbin0 -> 361 bytes
-rw-r--r--default_images/res/commandimagelist/sc_selectobject.pngbin0 -> 361 bytes
-rw-r--r--default_images/res/commandimagelist/sc_selecttable.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sendfax.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sendmail.pngbin0 -> 323 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sendtoback.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/commandimagelist/sc_setborderstyle.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/sc_setdocumentproperties.pngbin0 -> 500 bytes
-rw-r--r--default_images/res/commandimagelist/sc_setobjecttobackground.pngbin0 -> 396 bytes
-rw-r--r--default_images/res/commandimagelist/sc_setobjecttoforeground.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/commandimagelist/sc_setoptimalcolumnwidth.pngbin0 -> 268 bytes
-rw-r--r--default_images/res/commandimagelist/sc_setoptimalcolumnwidthdirect.pngbin0 -> 268 bytes
-rw-r--r--default_images/res/commandimagelist/sc_setoptimalrowheight.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/commandimagelist/sc_shadowcursor.pngbin0 -> 310 bytes
-rw-r--r--default_images/res/commandimagelist/sc_shadowed.pngbin0 -> 376 bytes
-rw-r--r--default_images/res/commandimagelist/sc_shear.pngbin0 -> 235 bytes
-rw-r--r--default_images/res/commandimagelist/sc_shell3d.pngbin0 -> 619 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showannotation.pngbin0 -> 382 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showbookview.pngbin0 -> 317 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showbrowser.pngbin0 -> 503 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showdatanavigator.pngbin0 -> 428 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showfmexplorer.pngbin0 -> 619 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showmultiplepages.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showpropbrowser.pngbin0 -> 503 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showslide.pngbin0 -> 417 bytes
-rw-r--r--default_images/res/commandimagelist/sc_showtwopages.pngbin0 -> 293 bytes
-rw-r--r--default_images/res/commandimagelist/sc_shrink.pngbin0 -> 512 bytes
-rw-r--r--default_images/res/commandimagelist/sc_size.pngbin0 -> 106 bytes
-rw-r--r--default_images/res/commandimagelist/sc_smallestheight.pngbin0 -> 385 bytes
-rw-r--r--default_images/res/commandimagelist/sc_smallestwidth.pngbin0 -> 370 bytes
-rw-r--r--default_images/res/commandimagelist/sc_snapborder.pngbin0 -> 458 bytes
-rw-r--r--default_images/res/commandimagelist/sc_snapframe.pngbin0 -> 318 bytes
-rw-r--r--default_images/res/commandimagelist/sc_snappoints.pngbin0 -> 294 bytes
-rw-r--r--default_images/res/commandimagelist/sc_solidcreate.pngbin0 -> 372 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sortascending.pngbin0 -> 394 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sortdescending.pngbin0 -> 405 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sortdown.pngbin0 -> 405 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sortup.pngbin0 -> 394 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sourceview.pngbin0 -> 399 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spacepara1.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spacepara15.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spacepara2.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spelldialog.pngbin0 -> 353 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spelling.pngbin0 -> 353 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spellingandgrammardialog.pngbin0 -> 353 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spellonline.pngbin0 -> 265 bytes
-rw-r--r--default_images/res/commandimagelist/sc_sphere.pngbin0 -> 676 bytes
-rw-r--r--default_images/res/commandimagelist/sc_spinbutton.pngbin0 -> 381 bytes
-rw-r--r--default_images/res/commandimagelist/sc_splitcell.pngbin0 -> 259 bytes
-rw-r--r--default_images/res/commandimagelist/sc_splithorizontal.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_splitparenthorizontal.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_splitparentvertical.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_splitvertical.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_square.pngbin0 -> 250 bytes
-rw-r--r--default_images/res/commandimagelist/sc_square_rounded.pngbin0 -> 420 bytes
-rw-r--r--default_images/res/commandimagelist/sc_square_rounded_unfilled.pngbin0 -> 362 bytes
-rw-r--r--default_images/res/commandimagelist/sc_square_unfilled.pngbin0 -> 265 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starchartdialog.pngbin0 -> 360 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.bang.pngbin0 -> 539 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.concave-star6.pngbin0 -> 514 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.doorplate.pngbin0 -> 428 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.horizontal-scroll.pngbin0 -> 377 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.pngbin0 -> 367 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.signet.pngbin0 -> 500 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.star12.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.star24.pngbin0 -> 703 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.star4.pngbin0 -> 343 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.star5.pngbin0 -> 367 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.star6.pngbin0 -> 451 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.star8.pngbin0 -> 468 bytes
-rw-r--r--default_images/res/commandimagelist/sc_starshapes.vertical-scroll.pngbin0 -> 374 bytes
-rw-r--r--default_images/res/commandimagelist/sc_strikeout.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/commandimagelist/sc_styleapply.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/commandimagelist/sc_stylenewbyexample.pngbin0 -> 427 bytes
-rw-r--r--default_images/res/commandimagelist/sc_styleupdatebyexample.pngbin0 -> 542 bytes
-rw-r--r--default_images/res/commandimagelist/sc_stylewatercanmode.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/commandimagelist/sc_subscript.pngbin0 -> 633 bytes
-rw-r--r--default_images/res/commandimagelist/sc_superscript.pngbin0 -> 639 bytes
-rw-r--r--default_images/res/commandimagelist/sc_switchcontroldesignmode.pngbin0 -> 435 bytes
-rw-r--r--default_images/res/commandimagelist/sc_switchxformsdesignmode.pngbin0 -> 435 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolcatalogue.pngbin0 -> 329 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.brace-pair.pngbin0 -> 461 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.bracket-pair.pngbin0 -> 415 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.cloud.pngbin0 -> 639 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.diamond-bevel.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.flower.pngbin0 -> 555 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.forbidden.pngbin0 -> 718 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.heart.pngbin0 -> 651 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.left-brace.pngbin0 -> 365 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.left-bracket.pngbin0 -> 327 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.lightning.pngbin0 -> 412 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.moon.pngbin0 -> 593 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.octagon-bevel.pngbin0 -> 470 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.pngbin0 -> 726 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.puzzle.pngbin0 -> 576 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.quad-bevel.pngbin0 -> 341 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.right-brace.pngbin0 -> 362 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.right-bracket.pngbin0 -> 327 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.smiley.pngbin0 -> 726 bytes
-rw-r--r--default_images/res/commandimagelist/sc_symbolshapes.sun.pngbin0 -> 428 bytes
-rw-r--r--default_images/res/commandimagelist/sc_tabdialog.pngbin0 -> 514 bytes
-rw-r--r--default_images/res/commandimagelist/sc_tabledesign.pngbin0 -> 403 bytes
-rw-r--r--default_images/res/commandimagelist/sc_tabledialog.pngbin0 -> 443 bytes
-rw-r--r--default_images/res/commandimagelist/sc_tablemodefix.pngbin0 -> 243 bytes
-rw-r--r--default_images/res/commandimagelist/sc_tablemodefixprop.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/commandimagelist/sc_tablemodevariable.pngbin0 -> 263 bytes
-rw-r--r--default_images/res/commandimagelist/sc_tablesort.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/commandimagelist/sc_testmode.pngbin0 -> 435 bytes
-rw-r--r--default_images/res/commandimagelist/sc_text.pngbin0 -> 291 bytes
-rw-r--r--default_images/res/commandimagelist/sc_text_marquee.pngbin0 -> 364 bytes
-rw-r--r--default_images/res/commandimagelist/sc_textdirectionlefttoright.pngbin0 -> 319 bytes
-rw-r--r--default_images/res/commandimagelist/sc_textdirectiontoptobottom.pngbin0 -> 329 bytes
-rw-r--r--default_images/res/commandimagelist/sc_textfittosizetool.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/commandimagelist/sc_texttoolbox.pngbin0 -> 291 bytes
-rw-r--r--default_images/res/commandimagelist/sc_thesaurus.pngbin0 -> 492 bytes
-rw-r--r--default_images/res/commandimagelist/sc_thesaurusdialog.pngbin0 -> 492 bytes
-rw-r--r--default_images/res/commandimagelist/sc_timefield.pngbin0 -> 564 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toggleanchortype.pngbin0 -> 370 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toggleaxisdescr.pngbin0 -> 197 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toggleaxistitle.pngbin0 -> 378 bytes
-rw-r--r--default_images/res/commandimagelist/sc_togglebreakpoint.pngbin0 -> 517 bytes
-rw-r--r--default_images/res/commandimagelist/sc_togglegridhorizontal.pngbin0 -> 271 bytes
-rw-r--r--default_images/res/commandimagelist/sc_togglegridvertical.pngbin0 -> 322 bytes
-rw-r--r--default_images/res/commandimagelist/sc_togglelegend.pngbin0 -> 376 bytes
-rw-r--r--default_images/res/commandimagelist/sc_togglemergecells.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toggleobjectbeziermode.pngbin0 -> 248 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toggleobjectrotatemode.pngbin0 -> 599 bytes
-rw-r--r--default_images/res/commandimagelist/sc_togglesheetgrid.pngbin0 -> 381 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toggletitle.pngbin0 -> 338 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toolsmacroedit.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_toolsoptions.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_torus.pngbin0 -> 510 bytes
-rw-r--r--default_images/res/commandimagelist/sc_transformdialog.pngbin0 -> 581 bytes
-rw-r--r--default_images/res/commandimagelist/sc_underline.pngbin0 -> 250 bytes
-rw-r--r--default_images/res/commandimagelist/sc_underlinedouble.pngbin0 -> 252 bytes
-rw-r--r--default_images/res/commandimagelist/sc_undo.pngbin0 -> 599 bytes
-rw-r--r--default_images/res/commandimagelist/sc_ungroup.pngbin0 -> 281 bytes
-rw-r--r--default_images/res/commandimagelist/sc_unhainframes.pngbin0 -> 409 bytes
-rw-r--r--default_images/res/commandimagelist/sc_upsearch.pngbin0 -> 336 bytes
-rw-r--r--default_images/res/commandimagelist/sc_urlbutton.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/commandimagelist/sc_usewizards.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/commandimagelist/sc_verticalcaption.pngbin0 -> 593 bytes
-rw-r--r--default_images/res/commandimagelist/sc_verticaltext.pngbin0 -> 268 bytes
-rw-r--r--default_images/res/commandimagelist/sc_verticaltextfittosizetool.pngbin0 -> 630 bytes
-rw-r--r--default_images/res/commandimagelist/sc_vfixedline.pngbin0 -> 205 bytes
-rw-r--r--default_images/res/commandimagelist/sc_view100.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/sc_viewdatasourcebrowser.pngbin0 -> 763 bytes
-rw-r--r--default_images/res/commandimagelist/sc_viewformasgrid.pngbin0 -> 391 bytes
-rw-r--r--default_images/res/commandimagelist/sc_vscrollbar.pngbin0 -> 390 bytes
-rw-r--r--default_images/res/commandimagelist/sc_window3d.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sc_wrapcontour.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/sc_wrapideal.pngbin0 -> 264 bytes
-rw-r--r--default_images/res/commandimagelist/sc_wrapleft.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sc_wrapoff.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sc_wrapon.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/sc_wrapright.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sc_wrapthrough.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sc_xlinecolor.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/sc_xlinestyle.pngbin0 -> 302 bytes
-rw-r--r--default_images/res/commandimagelist/sc_yes.pngbin0 -> 874 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoom.pngbin0 -> 523 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoom100percent.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomin.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomminus.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomnext.pngbin0 -> 708 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomobjects.pngbin0 -> 551 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomoptimal.pngbin0 -> 546 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomout.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoompage.pngbin0 -> 602 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoompagewidth.pngbin0 -> 631 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoompanning.pngbin0 -> 629 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomplus.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomprevious.pngbin0 -> 669 bytes
-rw-r--r--default_images/res/commandimagelist/sc_zoomtoolbox.pngbin0 -> 523 bytes
-rw-r--r--default_images/res/commandimagelist/sch_absoluterecord.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_actionmode.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/sch_addbookmark.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_adddatefield.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_adddirect.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_addfield.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_addons.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sch_addprintarea.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_addtable.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_addwatch.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_adjust.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_advancedmode.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignblock.pngbin0 -> 78 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignbottom.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_aligncenter.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_aligndown.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignhorizontalcenter.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignleft.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignmiddle.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignright.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_aligntop.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignup.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignvcenter.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_alignverticalcenter.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_animationeffects.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_animationmode.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/sch_animationobjects.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arc.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.chevron.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.circular-arrow.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.corner-right-arrow.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.down-arrow-callout.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.down-arrow.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.left-arrow-callout.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.left-arrow.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.left-right-arrow-callout.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.left-right-arrow.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.notched-right-arrow.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.pentagon-right.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.quad-arrow-callout.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.quad-arrow.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.right-arrow-callout.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.right-arrow.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.s-sharped-arrow.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.split-arrow.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.split-round-arrow.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.striped-right-arrow.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.up-arrow-callout.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.up-arrow.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.up-down-arrow-callout.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.up-down-arrow.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.up-right-arrow-callout.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.up-right-arrow.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowshapes.up-right-down-arrow.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/sch_arrowstoolbox.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/commandimagelist/sch_assignlayout.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_autocontrolfocus.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_autofilter.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/sch_autoformat.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/commandimagelist/sch_autosum.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_avmediaplayer.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_backcolor.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/sch_backgroundcolor.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/sch_backgroundpatterncontroller.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/sch_backward.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.block-arc.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.can.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.circle-pie.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.circle.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.cross.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.cube.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.diamond.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.ellipse.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.frame.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.hexagon.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.isosceles-triangle.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.octagon.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.paper.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.parallelogram.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.pentagon.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.quadrat.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.rectangle.pngbin0 -> 89 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.right-triangle.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.ring.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.round-quadrat.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.round-rectangle.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicshapes.trapezoid.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicstepinto.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicstepout.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicstepover.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/sch_basicstop.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_beamer.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_beforeobject.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_behindobject.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezier_unfilled.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezierappend.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezierclose.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezierconvert.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_beziercutline.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezierdelete.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezieredge.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_beziereliminatepoints.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezierfill.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bezierinsert.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_beziermove.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_beziersmooth.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_beziersymmetric.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bighandles.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bold.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_borderdialog.pngbin0 -> 82 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bringtofront.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_browsebackward.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_browseforward.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_browseview.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bullet.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_bulletsandnumberingdialog.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.cloud-callout.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.line-callout-1.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.line-callout-2.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.line-callout-3.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.rectangular-callout.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.round-callout.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_calloutshapes.round-rectangular-callout.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cellvertbottom.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cellvertcenter.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cellverttop.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_centerpara.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_chainframes.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_changebezier.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_changecasetolower.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_changecasetoupper.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_changedatabasefield.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/sch_changepolygon.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_charfontname.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_checkbox.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_choosecontrols.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_choosedesign.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/sch_choosemacro.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_choosepolygon.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_circle.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_circle_unfilled.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_circlearc.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_circlecut.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_circlecut_unfilled.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_circlepie.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_circlepie_unfilled.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_clickchangerotation.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_closedoc.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_closedocs.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_closemasterview.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sch_closewin.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/sch_color.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_colorsettings.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/sch_colorview.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_combobox.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_commontaskbarvisible.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_compilebasic.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cone.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_config.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connector.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorarrowend.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorarrows.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorarrowstart.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcircleend.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcircles.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcirclestart.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcurve.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcurvearrowend.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcurvearrows.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcurvearrowstart.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcurvecircleend.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcurvecircles.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorcurvecirclestart.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorline.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinearrowend.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinearrows.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinearrowstart.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinecircleend.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinecircles.pngbin0 -> 92 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinecirclestart.pngbin0 -> 112 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlines.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinesarrowend.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinesarrows.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinesarrowstart.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinescircleend.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinescircles.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectorlinescirclestart.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_connectortoolbox.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_contourdialog.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/sch_controlcodes.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_controlproperties.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_convertinto3d.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_convertinto3dlathe.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_convertinto3dlathefast.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_copy.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_countall.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_crookrotate.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_crookslant.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/sch_crop.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cube.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_currencyfield.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_customanimation.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cut.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cylinder.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_cyramid.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_datadatapilotrun.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sch_datafilterautofilter.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sch_datafilterspecialfilter.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_datafilterstandardfilter.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dataimport.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dataincolumns.pngbin0 -> 100 bytes
-rw-r--r--default_images/res/commandimagelist/sch_datainrows.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_datefield.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbaddrelation.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbchangedesignmode.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbclearquery.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbdistinctvalues.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbformdelete.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbformedit.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbformopen.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbformrename.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbindexdesign.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewform.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewformautopilot.pngbin0 -> 188 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewquery.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewqueryautopilot.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewquerysql.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewreport.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewreportautopilot.pngbin0 -> 194 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewtable.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewtableautopilot.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewview.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbnewviewsql.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbquerydelete.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbqueryedit.pngbin0 -> 180 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbqueryopen.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbqueryrename.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbreportdelete.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbreportedit.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbreportopen.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbreportrename.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbsortingandgrouping.pngbin0 -> 83 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbtabledelete.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbtableedit.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbtableopen.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbtablerename.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbviewaliases.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbviewfunctions.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dbviewtablenames.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_decrementindent.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_decrementlevel.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_decrementsublevels.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_defaultbullet.pngbin0 -> 87 bytes
-rw-r--r--default_images/res/commandimagelist/sch_defaultnumbering.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_definename.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_defineprintarea.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_delete.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_deleteallannotation.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sch_deleteannotation.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_deletecolumns.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/sch_deletemasterpage.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/sch_deleteprintarea.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_deleterecord.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_deleterows.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_designerdialog.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dia.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_diaauto.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_diaeffect.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_diagramdata.pngbin0 -> 75 bytes
-rw-r--r--default_images/res/commandimagelist/sch_diagramtype.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_diaspeed.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_diatime.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_distributecolumns.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_distributerows.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_doubleclicktextedit.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_downsearch.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_draw.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_drawcaption.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_drawchart.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_drawselect.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_drawtext.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dsbdocumentdatasource.pngbin0 -> 187 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dsbeditdoc.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dsbformletter.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dsbinsertcolumns.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dsbinsertcontent.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_dsbrowserexplorer.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_duplicatepage.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_edit.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_editdoc.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/sch_editframeset.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_editglossary.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/sch_editheaderandfooter.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_editprintarea.pngbin0 -> 178 bytes
-rw-r--r--default_images/res/commandimagelist/sch_ellipse.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_ellipse_unfilled.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_ellipsecut.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_ellipsecut_unfilled.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_ellipsetoolbox.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_entergroup.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_entirecolumn.pngbin0 -> 92 bytes
-rw-r--r--default_images/res/commandimagelist/sch_entirerow.pngbin0 -> 100 bytes
-rw-r--r--default_images/res/commandimagelist/sch_euroconverter.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_executereport.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_expandpage.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_exportdialog.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/sch_exportdirecttopdf.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_exportto.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extendedhelp.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusion3dcolor.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusiondepthfloater.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusiondirectionfloater.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusionlightingfloater.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusionsurfacefloater.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusiontiltdown.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusiontiltleft.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusiontiltright.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusiontiltup.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sch_extrusiontoggle.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fieldnames.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fields.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_filecontrol.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_filedocument.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fillshadow.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fillstyle.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/sch_filtercrit.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_firstpage.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/sch_firstrecord.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fliphorizontal.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flipvertical.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-alternate-process.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-card.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-collate.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-connector.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-data.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-decision.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-delay.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-direct-access-storage.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-display.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-document.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-extract.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-internal-storage.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-magnetic-disk.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-manual-input.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-manual-operation.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-merge.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-multidocument.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-off-page-connector.pngbin0 -> 112 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-or.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-predefined-process.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-preparation.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-process.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-punched-tape.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-sequential-access.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-sort.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-stored-data.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-summing-junction.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.flowchart-terminator.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_flowchartshapes.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontcolor.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontdialog.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontheight.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontwork.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkalignmentfloater.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkcharacterspacingfloater.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkgalleryfloater.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworksameletterheights.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-down-curve.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-down-pour.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-left-curve.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-left-pour.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-right-curve.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-right-pour.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-up-curve.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-arch-up-pour.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-chevron-down.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-chevron-up.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-circle-curve.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-circle-pour.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-curve-down.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-curve-up.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-fade-down.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-fade-left.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-fade-right.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-fade-up-and-left.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-fade-up-and-right.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-fade-up.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-inflate.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-open-circle-curve.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-open-circle-pour.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-plain-text.pngbin0 -> 80 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-slant-down.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-slant-up.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-stop.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-triangle-down.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-triangle-up.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.fontwork-wave.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fontworkshapetype.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formatarea.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formatgroup.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formatline.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formatpaintbrush.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formattedfield.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formatungroup.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formdesigntools.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formelcursor.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formfilter.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formfiltered.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formfilterexecute.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formfilternavigator.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/sch_formproperties.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_forward.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_framedialog.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_framelinecolor.pngbin0 -> 89 bytes
-rw-r--r--default_images/res/commandimagelist/sch_freeline.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_freeline_unfilled.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_fullscreen.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gallery.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_getactivetask.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_glueeditmode.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_glueescapedirectionbottom.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/sch_glueescapedirectionleft.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_glueescapedirectionright.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_glueescapedirectiontop.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gluehorzaligncenter.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gluehorzalignleft.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gluehorzalignright.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_glueinsertpoint.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gluepercent.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gluevertalignbottom.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gluevertaligncenter.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gluevertaligntop.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_goalseekdialog.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gotoend.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gotoendofdoc.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gotostartofdoc.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gotostartoftable.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafattrcrop.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafblue.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafcontrast.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafgamma.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafgreen.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafinvert.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafluminance.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafmode.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grafred.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graftransparence.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphic.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfilterinvert.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfiltermosaic.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfilterpopart.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfilterposter.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfilterrelief.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfilterremovenoise.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfiltersepia.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfiltersharpen.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfiltersmooth.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfiltersobel.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfiltersolarize.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_graphicfiltertoolbox.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_greatestheight.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_greatestwidth.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grid.pngbin0 -> 75 bytes
-rw-r--r--default_images/res/commandimagelist/sch_griduse.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_gridvisible.pngbin0 -> 84 bytes
-rw-r--r--default_images/res/commandimagelist/sch_group.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_groupbox.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_grow.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_halfsphere.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_handlesdraft.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpannotate.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpbookmark.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpdownload.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helperdialog.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpindex.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helplinesmove.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helplinesuse.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helplinesvisible.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpmenu.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpsearch.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpzoomin.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_helpzoomout.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_hfixedline.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_hideslide.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_hscrollbar.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_hyperlinkdialog.pngbin0 -> 203 bytes
-rw-r--r--default_images/res/commandimagelist/sch_hyphenate.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_hyphenation.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_imagebutton.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_imagecontrol.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_imagemapdialog.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_importdialog.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/sch_importfromfile.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/sch_incrementindent.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_incrementlevel.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_incrementsublevels.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inscellsctrl.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertannotation.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertauthorfield.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertavmedia.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertbookmark.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertcaptiondialog.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertcellsdown.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertcellsright.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertcolumns.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertctrl.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertcurrencyfield.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertdatefield.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertdoc.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertdraw.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertedit.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertendnote.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertfield.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertfieldctrl.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertfilecontrol.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertfixedtext.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertfootnote.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertformattedfield.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertformula.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertframe.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertframeinteract.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertframeinteractnocolumns.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertgraphic.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserthyperlink.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertimagecontrol.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertindexesentry.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertlistbox.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertmasterpage.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertmath.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertneutralparagraph.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertnumericfield.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertobjctrl.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertobject.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertobjectchart.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertobjectdialog.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertobjectfloatingframe.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertobjectstarmath.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertpage.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertpagecountfield.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertpagenumberfield.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertpatternfield.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertplugin.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertpushbutton.pngbin0 -> 100 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertreferencefield.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertrows.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertsection.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertsound.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertspreadsheet.pngbin0 -> 75 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertsymbol.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserttable.pngbin0 -> 75 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserttextframe.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserttimefield.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserttitlefield.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserttoolbox.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserttopicfield.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_inserttreecontrol.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insertvideo.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_insobjctrl.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_interactivegradient.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_interactivetransparence.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sch_internetonline.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_italic.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_justifypara.pngbin0 -> 78 bytes
-rw-r--r--default_images/res/commandimagelist/sch_label.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_lastpage.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_lastrecord.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_leaveallgroups.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_leavegroup.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/sch_leftpara.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_line.pngbin0 -> 81 bytes
-rw-r--r--default_images/res/commandimagelist/sch_line_diagonal.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linearrowcircle.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linearrowend.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linearrows.pngbin0 -> 100 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linearrowsquare.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linearrowstart.pngbin0 -> 88 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linecirclearrow.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/sch_lineendstyle.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linesquarearrow.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linestyle.pngbin0 -> 82 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linetoolbox.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_linewidth.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_listbox.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_loadbasic.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_macrorecorder.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_macrorecordingfloat.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_mailwindow.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_managebreakpoints.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_managelanguage.pngbin0 -> 181 bytes
-rw-r--r--default_images/res/commandimagelist/sch_marks.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_matchgroup.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_measureline.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_mergecells.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_mergedialog.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/sch_mirror.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/sch_modifyframe.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sch_modifypage.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_moduledialog.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_morecontrols.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_movedown.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/commandimagelist/sch_movedownsubitems.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_moveup.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_moveupsubitems.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_navigationbar.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_navigator.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/sch_newarrangement.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_newdoc.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_newrecord.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_nextannotation.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_nextpage.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/sch_nextrecord.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatcurrency.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatdate.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatdecdecimals.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatdecimal.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatincdecimals.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatpercent.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatscientific.pngbin0 -> 100 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberformatstandard.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numberingstart.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_numericfield.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/sch_objectalign.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_objectalignleft.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_objectalignright.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_objectcatalog.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_objectposition.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_objects3dtoolbox.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_open.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_openreadonly.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/sch_openurl.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/sch_optimizetable.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_ordercrit.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlinebullet.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlinecollapse.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlinecollapseall.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlinedown.pngbin0 -> 112 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlineexpand.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlineexpandall.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlinefont.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlineformat.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlineleft.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlineright.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_outlineup.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_overline.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pagedown.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pageup.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_paragraphdialog.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_paralefttoright.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pararighttoleft.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_paraspacedecrease.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_paraspaceincrease.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/commandimagelist/sch_paste.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_patternfield.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pickthrough.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pie.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pie_unfilled.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_playmacro.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pluginsactive.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_polygon.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_polygon_diagonal.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/sch_polygon_diagonal_unfilled.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/commandimagelist/sch_polygon_unfilled.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_presentation.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_presentationlayout.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sch_preview.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_previewprintoptions.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/sch_previewzoom.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_previousannotation.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_previouspage.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_prevrecord.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/commandimagelist/sch_print.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_printdefault.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_printersetup.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/sch_printlayout.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sch_printpagepreview.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_printpreview.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_progressbar.pngbin0 -> 96 bytes
-rw-r--r--default_images/res/commandimagelist/sch_pushbutton.pngbin0 -> 100 bytes
-rw-r--r--default_images/res/commandimagelist/sch_quickedit.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_quit.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_radiobutton.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_recsave.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_recsearch.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rect.pngbin0 -> 89 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rect_rounded.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rect_rounded_unfilled.pngbin0 -> 92 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rect_unfilled.pngbin0 -> 83 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rectangletoolbox.pngbin0 -> 89 bytes
-rw-r--r--default_images/res/commandimagelist/sch_recundo.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_redo.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_refresh.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_refreshformcontrol.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rehearsetimings.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_reload.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_removebullets.pngbin0 -> 80 bytes
-rw-r--r--default_images/res/commandimagelist/sch_removefilter.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_removefiltersort.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_renamemasterpage.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_repeat.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/sch_reportnavigator.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/commandimagelist/sch_reverseorder.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rightpara.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rulerrows.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_rulerrowsvertical.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_runbasic.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_save.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_saveas.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_saveastemplate.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_savebasicas.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sbabrwinsert.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sbaexecutesql.pngbin0 -> 171 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sbanativesql.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_scaletext.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/sch_scrollbar.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_searchdialog.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sectionalignbottom.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sectionalignleft.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sectionalignright.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sectionaligntop.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sectionshrink.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sectionshrinkbottom.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sectionshrinktop.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_selectall.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_selectmode.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_selectobject.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_selecttable.pngbin0 -> 86 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sendfax.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sendmail.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sendtoback.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_setborderstyle.pngbin0 -> 85 bytes
-rw-r--r--default_images/res/commandimagelist/sch_setdocumentproperties.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_setobjecttobackground.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_setobjecttoforeground.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_setoptimalcolumnwidth.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_setoptimalcolumnwidthdirect.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/commandimagelist/sch_setoptimalrowheight.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_shadowcursor.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_shadowed.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_shear.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_shell3d.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showannotation.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showbookview.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showbrowser.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showdatanavigator.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showfmexplorer.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showmultiplepages.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showpropbrowser.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showslide.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/commandimagelist/sch_showtwopages.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sch_shrink.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_smallestheight.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_smallestwidth.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_snapborder.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_snapframe.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_snappoints.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/commandimagelist/sch_solidcreate.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sortascending.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sortdescending.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sortdown.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sortup.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sourceview.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spacepara1.pngbin0 -> 78 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spacepara15.pngbin0 -> 78 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spacepara2.pngbin0 -> 79 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spelldialog.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spelling.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spellingandgrammardialog.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spellonline.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_sphere.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/commandimagelist/sch_spinbutton.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/commandimagelist/sch_splitcell.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_splithorizontal.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_splitparenthorizontal.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_splitparentvertical.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_splitvertical.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_square.pngbin0 -> 91 bytes
-rw-r--r--default_images/res/commandimagelist/sch_square_rounded.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_square_rounded_unfilled.pngbin0 -> 92 bytes
-rw-r--r--default_images/res/commandimagelist/sch_square_unfilled.pngbin0 -> 85 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starchartdialog.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.bang.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.concave-star6.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.doorplate.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.horizontal-scroll.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.signet.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.star12.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.star24.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.star4.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.star5.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.star6.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.star8.pngbin0 -> 154 bytes
-rw-r--r--default_images/res/commandimagelist/sch_starshapes.vertical-scroll.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_strikeout.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_styleapply.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_stylenewbyexample.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/commandimagelist/sch_styleupdatebyexample.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/commandimagelist/sch_stylewatercanmode.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/commandimagelist/sch_subscript.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sch_superscript.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/sch_switchcontroldesignmode.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/sch_switchxformsdesignmode.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolcatalogue.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.brace-pair.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.bracket-pair.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.cloud.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.diamond-bevel.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.flower.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.forbidden.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.heart.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.left-brace.pngbin0 -> 106 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.left-bracket.pngbin0 -> 94 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.lightning.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.moon.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.octagon-bevel.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.puzzle.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.quad-bevel.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.right-brace.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.right-bracket.pngbin0 -> 89 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.smiley.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/commandimagelist/sch_symbolshapes.sun.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/commandimagelist/sch_tabdialog.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/commandimagelist/sch_tabledesign.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sch_tabledialog.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_tablemodefix.pngbin0 -> 99 bytes
-rw-r--r--default_images/res/commandimagelist/sch_tablemodefixprop.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_tablemodevariable.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_tablesort.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_testmode.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/commandimagelist/sch_text.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_text_marquee.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_textdirectionlefttoright.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_textdirectiontoptobottom.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_textfittosizetool.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/commandimagelist/sch_texttoolbox.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_thesaurus.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/commandimagelist/sch_thesaurusdialog.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_timefield.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toggleanchortype.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toggleaxisdescr.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toggleaxistitle.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_togglebreakpoint.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/commandimagelist/sch_togglegridhorizontal.pngbin0 -> 95 bytes
-rw-r--r--default_images/res/commandimagelist/sch_togglegridvertical.pngbin0 -> 93 bytes
-rw-r--r--default_images/res/commandimagelist/sch_togglelegend.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/commandimagelist/sch_togglemergecells.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toggleobjectbeziermode.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toggleobjectrotatemode.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/commandimagelist/sch_togglesheetgrid.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toggletitle.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toolsmacroedit.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_toolsoptions.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_torus.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_transformdialog.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/commandimagelist/sch_underline.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_underlinedouble.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/commandimagelist/sch_undo.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/commandimagelist/sch_ungroup.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/commandimagelist/sch_unhainframes.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/commandimagelist/sch_upsearch.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/sch_urlbutton.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sch_usewizards.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/commandimagelist/sch_verticalcaption.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_verticaltext.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/commandimagelist/sch_verticaltextfittosizetool.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_vfixedline.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/commandimagelist/sch_view100.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sch_viewdatasourcebrowser.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_viewformasgrid.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/commandimagelist/sch_vscrollbar.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/commandimagelist/sch_window3d.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_wrapcontour.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sch_wrapideal.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_wrapleft.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_wrapoff.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/sch_wrapon.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/commandimagelist/sch_wrapright.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/commandimagelist/sch_wrapthrough.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/commandimagelist/sch_xlinecolor.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_xlinestyle.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoom.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoom100percent.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomin.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomminus.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomnext.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomobjects.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomoptimal.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomout.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoompage.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoompagewidth.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoompanning.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomplus.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomprevious.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/commandimagelist/sch_zoomtoolbox.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lc_bold.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lc_italic.pngbin0 -> 240 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lc_numberformatdecimal.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lc_underline.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lc_underlinedouble.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lch_bold.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lch_numberformatdecimal.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lch_underline.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/sk/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sc_bold.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sc_italic.pngbin0 -> 183 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sc_numberformatdecimal.pngbin0 -> 266 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sc_underline.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sc_underlinedouble.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sch_italic.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sch_numberformatdecimal.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sk/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lc_bold.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lc_italic.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lc_underline.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lc_underlinedouble.pngbin0 -> 236 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lch_bold.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lch_italic.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lch_underline.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/sl/lch_underlinedouble.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sc_bold.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sc_italic.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sc_underline.pngbin0 -> 179 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sc_underlinedouble.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sch_bold.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sch_italic.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sch_underline.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/commandimagelist/sl/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lc_bold.pngbin0 -> 256 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lc_italic.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lc_underline.pngbin0 -> 361 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lc_underlinedouble.pngbin0 -> 356 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lch_bold.pngbin0 -> 97 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lch_italic.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lch_underline.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/sv/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sc_bold.pngbin0 -> 206 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sc_italic.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sc_underline.pngbin0 -> 257 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sc_underlinedouble.pngbin0 -> 258 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sch_bold.pngbin0 -> 90 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sch_italic.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/sv/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lc_bold.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lc_italic.pngbin0 -> 271 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lc_underline.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lc_underlinedouble.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lch_bold.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lch_italic.pngbin0 -> 173 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lch_underline.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/tr/lch_underlinedouble.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sc_bold.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sc_italic.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sc_underline.pngbin0 -> 219 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sc_underlinedouble.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sch_bold.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sch_italic.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sch_underline.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/tr/sch_underlinedouble.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lc_bold.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lc_italic.pngbin0 -> 239 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lc_underline.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lc_underlinedouble.pngbin0 -> 214 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lch_bold.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lch_underline.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sc_bold.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sc_italic.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sc_underline.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sc_underlinedouble.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sch_italic.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/zh-CN/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lc_bold.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lc_italic.pngbin0 -> 239 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lc_underline.pngbin0 -> 213 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lc_underlinedouble.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lch_bold.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lch_italic.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lch_underline.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/lch_underlinedouble.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/sc_bold.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/sc_italic.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/sc_underline.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/sc_underlinedouble.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/sch_bold.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/sch_underline.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/commandimagelist/zh-TW/sch_underlinedouble.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/component_16.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/component_16_h.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/cookie.pngbin0 -> 18364 bytes
-rw-r--r--default_images/res/cs/lc26648.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/cs/sc10009.pngbin0 -> 328 bytes
-rw-r--r--default_images/res/cs/sch10008.pngbin0 -> 289 bytes
-rw-r--r--default_images/res/da01.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/da02.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/da03.pngbin0 -> 291 bytes
-rw-r--r--default_images/res/da04.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/da05.pngbin0 -> 274 bytes
-rw-r--r--default_images/res/da06.pngbin0 -> 330 bytes
-rw-r--r--default_images/res/dah01.pngbin0 -> 85 bytes
-rw-r--r--default_images/res/dah02.pngbin0 -> 85 bytes
-rw-r--r--default_images/res/dah03.pngbin0 -> 111 bytes
-rw-r--r--default_images/res/dah04.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/dah05.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/dah06.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/de/lc10008.pngbin0 -> 846 bytes
-rw-r--r--default_images/res/de/lch10014.pngbin0 -> 177 bytes
-rw-r--r--default_images/res/de/sc10009.pngbin0 -> 354 bytes
-rw-r--r--default_images/res/de/sc10014.pngbin0 -> 408 bytes
-rw-r--r--default_images/res/de/sch10014.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/de/sch26648.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/dialogfolder_16.pngbin0 -> 371 bytes
-rw-r--r--default_images/res/dialogfolder_16_h.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/dialogfoldernot_16.pngbin0 -> 383 bytes
-rw-r--r--default_images/res/dialogfoldernot_16_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/dir-clos.pngbin0 -> 253 bytes
-rw-r--r--default_images/res/dir-open.pngbin0 -> 466 bytes
-rw-r--r--default_images/res/empty.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/empty_l.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/es/lc10008.pngbin0 -> 531 bytes
-rw-r--r--default_images/res/es/lc10009.pngbin0 -> 396 bytes
-rw-r--r--default_images/res/es/lc10014.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/es/lc26648.pngbin0 -> 531 bytes
-rw-r--r--default_images/res/es/lch10008.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/es/lch10009.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/es/lch10014.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/es/lch26648.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/es/sc10008.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/es/sc10009.pngbin0 -> 296 bytes
-rw-r--r--default_images/res/es/sc10014.pngbin0 -> 386 bytes
-rw-r--r--default_images/res/es/sc26648.pngbin0 -> 394 bytes
-rw-r--r--default_images/res/es/sch10008.pngbin0 -> 339 bytes
-rw-r--r--default_images/res/es/sch10009.pngbin0 -> 105 bytes
-rw-r--r--default_images/res/es/sch10014.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/es/sch26648.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/extension_plus_26.pngbin0 -> 1117 bytes
-rw-r--r--default_images/res/extension_plus_32.pngbin0 -> 1298 bytes
-rw-r--r--default_images/res/fileopen.pngbin0 -> 243 bytes
-rw-r--r--default_images/res/fileopen_hc.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/foldercl.pngbin0 -> 238 bytes
-rw-r--r--default_images/res/foldercl_h.pngbin0 -> 101 bytes
-rw-r--r--default_images/res/folderop.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/folderop_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/fp010.pngbin0 -> 380 bytes
-rw-r--r--default_images/res/fp015.pngbin0 -> 374 bytes
-rw-r--r--default_images/res/fph010.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/fph015.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/fr/lc10008.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/fr/lc10009.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/fr/lc10014.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/fr/lc26648.pngbin0 -> 531 bytes
-rw-r--r--default_images/res/fr/lch10008.pngbin0 -> 425 bytes
-rw-r--r--default_images/res/fr/lch10009.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/fr/lch10014.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/fr/lch26648.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/fr/sc10008.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/fr/sc10009.pngbin0 -> 366 bytes
-rw-r--r--default_images/res/fr/sc10014.pngbin0 -> 386 bytes
-rw-r--r--default_images/res/fr/sc26648.pngbin0 -> 394 bytes
-rw-r--r--default_images/res/fr/sch10008.pngbin0 -> 289 bytes
-rw-r--r--default_images/res/fr/sch10009.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/fr/sch10014.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/fr/sch26648.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/fwthcirc.pngbin0 -> 112 bytes
-rw-r--r--default_images/res/fwthcirc_h.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/grafikde.pngbin0 -> 524 bytes
-rw-r--r--default_images/res/grafikde_h.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/grafikei.pngbin0 -> 481 bytes
-rw-r--r--default_images/res/grafikei_h.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/harddisk_16.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/harddisk_16_h.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/helpimg/area1.pngbin0 -> 2194 bytes
-rw-r--r--default_images/res/helpimg/area2.pngbin0 -> 3202 bytes
-rw-r--r--default_images/res/helpimg/bg/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/bg/feldalle.pngbin0 -> 1752 bytes
-rw-r--r--default_images/res/helpimg/bg/feldbrei.pngbin0 -> 454 bytes
-rw-r--r--default_images/res/helpimg/bg/feldcolo.pngbin0 -> 833 bytes
-rw-r--r--default_images/res/helpimg/bg/names_as_addressing.pngbin0 -> 5852 bytes
-rw-r--r--default_images/res/helpimg/bg/objbitmp.pngbin0 -> 3523 bytes
-rw-r--r--default_images/res/helpimg/bg/prinzoom.pngbin0 -> 1395 bytes
-rw-r--r--default_images/res/helpimg/bg/rechenlt.pngbin0 -> 585 bytes
-rw-r--r--default_images/res/helpimg/bg/sheettabs.pngbin0 -> 2103 bytes
-rw-r--r--default_images/res/helpimg/bg/swh00055.pngbin0 -> 594 bytes
-rw-r--r--default_images/res/helpimg/bg/swh00056.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/helpimg/bg/swh00117.pngbin0 -> 1109 bytes
-rw-r--r--default_images/res/helpimg/bg/zellvor.pngbin0 -> 634 bytes
-rw-r--r--default_images/res/helpimg/border_ca_1.pngbin0 -> 740 bytes
-rw-r--r--default_images/res/helpimg/border_ca_2.pngbin0 -> 665 bytes
-rw-r--r--default_images/res/helpimg/border_ca_3.pngbin0 -> 701 bytes
-rw-r--r--default_images/res/helpimg/border_ca_4.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/helpimg/border_ca_5.pngbin0 -> 200 bytes
-rw-r--r--default_images/res/helpimg/border_ca_6.pngbin0 -> 503 bytes
-rw-r--r--default_images/res/helpimg/border_ca_7.pngbin0 -> 507 bytes
-rw-r--r--default_images/res/helpimg/border_ca_8.pngbin0 -> 546 bytes
-rw-r--r--default_images/res/helpimg/border_ca_9.pngbin0 -> 679 bytes
-rw-r--r--default_images/res/helpimg/border_ca_gray.pngbin0 -> 525 bytes
-rw-r--r--default_images/res/helpimg/border_ca_white.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/border_wr_1.pngbin0 -> 765 bytes
-rw-r--r--default_images/res/helpimg/border_wr_2.pngbin0 -> 799 bytes
-rw-r--r--default_images/res/helpimg/border_wr_3.pngbin0 -> 856 bytes
-rw-r--r--default_images/res/helpimg/border_wr_4.pngbin0 -> 858 bytes
-rw-r--r--default_images/res/helpimg/border_wr_5.pngbin0 -> 869 bytes
-rw-r--r--default_images/res/helpimg/border_wr_6.pngbin0 -> 370 bytes
-rw-r--r--default_images/res/helpimg/border_wr_7.pngbin0 -> 372 bytes
-rw-r--r--default_images/res/helpimg/border_wr_8.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/helpimg/border_wr_9.pngbin0 -> 319 bytes
-rw-r--r--default_images/res/helpimg/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/calcnav.pngbin0 -> 656 bytes
-rw-r--r--default_images/res/helpimg/copydata.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/helpimg/cs/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/cs/feldalle.pngbin0 -> 752 bytes
-rw-r--r--default_images/res/helpimg/cs/feldbrei.pngbin0 -> 458 bytes
-rw-r--r--default_images/res/helpimg/cs/feldcolo.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/helpimg/cs/names_as_addressing.pngbin0 -> 1920 bytes
-rw-r--r--default_images/res/helpimg/cs/rechenlt.pngbin0 -> 1006 bytes
-rw-r--r--default_images/res/helpimg/cs/sheettabs.pngbin0 -> 1397 bytes
-rw-r--r--default_images/res/helpimg/cs/swh00055.pngbin0 -> 650 bytes
-rw-r--r--default_images/res/helpimg/cs/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/cs/swh00117.pngbin0 -> 723 bytes
-rw-r--r--default_images/res/helpimg/cs/zellvor.pngbin0 -> 585 bytes
-rw-r--r--default_images/res/helpimg/da/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/da/feldalle.pngbin0 -> 763 bytes
-rw-r--r--default_images/res/helpimg/da/feldbrei.pngbin0 -> 458 bytes
-rw-r--r--default_images/res/helpimg/da/feldcolo.pngbin0 -> 534 bytes
-rw-r--r--default_images/res/helpimg/da/names_as_addressing.pngbin0 -> 1907 bytes
-rw-r--r--default_images/res/helpimg/da/rechenlt.pngbin0 -> 567 bytes
-rw-r--r--default_images/res/helpimg/da/sheettabs.pngbin0 -> 1404 bytes
-rw-r--r--default_images/res/helpimg/da/swh00055.pngbin0 -> 593 bytes
-rw-r--r--default_images/res/helpimg/da/swh00056.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/helpimg/da/swh00117.pngbin0 -> 689 bytes
-rw-r--r--default_images/res/helpimg/da/zellvor.pngbin0 -> 577 bytes
-rw-r--r--default_images/res/helpimg/de/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/de/feldalle.pngbin0 -> 1090 bytes
-rw-r--r--default_images/res/helpimg/de/feldbrei.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/helpimg/de/feldcolo.pngbin0 -> 722 bytes
-rw-r--r--default_images/res/helpimg/de/names_as_addressing.pngbin0 -> 1914 bytes
-rw-r--r--default_images/res/helpimg/de/objbitmp.pngbin0 -> 4618 bytes
-rw-r--r--default_images/res/helpimg/de/prinzoom.pngbin0 -> 1571 bytes
-rw-r--r--default_images/res/helpimg/de/rechenlt.pngbin0 -> 531 bytes
-rw-r--r--default_images/res/helpimg/de/sheettabs.pngbin0 -> 1446 bytes
-rw-r--r--default_images/res/helpimg/de/swh00055.pngbin0 -> 591 bytes
-rw-r--r--default_images/res/helpimg/de/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/de/swh00117.pngbin0 -> 910 bytes
-rw-r--r--default_images/res/helpimg/de/zellvor.pngbin0 -> 738 bytes
-rw-r--r--default_images/res/helpimg/diatrans.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/helpimg/dircurscent.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/helpimg/dircursleft.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/helpimg/dircursright.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/helpimg/ein.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/helpimg/en-GB/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/en-GB/feldalle.pngbin0 -> 346 bytes
-rw-r--r--default_images/res/helpimg/en-GB/feldbrei.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/helpimg/en-GB/feldcolo.pngbin0 -> 557 bytes
-rw-r--r--default_images/res/helpimg/en-GB/names_as_addressing.pngbin0 -> 2959 bytes
-rw-r--r--default_images/res/helpimg/en-GB/rechenlt.pngbin0 -> 585 bytes
-rw-r--r--default_images/res/helpimg/en-GB/sheettabs.pngbin0 -> 1414 bytes
-rw-r--r--default_images/res/helpimg/en-GB/swh00055.pngbin0 -> 596 bytes
-rw-r--r--default_images/res/helpimg/en-GB/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/en-GB/swh00117.pngbin0 -> 891 bytes
-rw-r--r--default_images/res/helpimg/en-GB/zellvor.pngbin0 -> 572 bytes
-rw-r--r--default_images/res/helpimg/es/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/es/feldalle.pngbin0 -> 1221 bytes
-rw-r--r--default_images/res/helpimg/es/feldbrei.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/helpimg/es/feldcolo.pngbin0 -> 645 bytes
-rw-r--r--default_images/res/helpimg/es/names_as_addressing.pngbin0 -> 3180 bytes
-rw-r--r--default_images/res/helpimg/es/objbitmp.pngbin0 -> 2540 bytes
-rw-r--r--default_images/res/helpimg/es/prinzoom.pngbin0 -> 1476 bytes
-rw-r--r--default_images/res/helpimg/es/rechenlt.pngbin0 -> 950 bytes
-rw-r--r--default_images/res/helpimg/es/sheettabs.pngbin0 -> 1868 bytes
-rw-r--r--default_images/res/helpimg/es/swh00055.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/helpimg/es/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/es/swh00117.pngbin0 -> 829 bytes
-rw-r--r--default_images/res/helpimg/es/zellvor.pngbin0 -> 761 bytes
-rw-r--r--default_images/res/helpimg/et/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/et/feldalle.pngbin0 -> 1024 bytes
-rw-r--r--default_images/res/helpimg/et/feldbrei.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/helpimg/et/feldcolo.pngbin0 -> 639 bytes
-rw-r--r--default_images/res/helpimg/et/names_as_addressing.pngbin0 -> 3251 bytes
-rw-r--r--default_images/res/helpimg/et/rechenlt.pngbin0 -> 1006 bytes
-rw-r--r--default_images/res/helpimg/et/sheettabs.pngbin0 -> 1809 bytes
-rw-r--r--default_images/res/helpimg/et/swh00055.pngbin0 -> 650 bytes
-rw-r--r--default_images/res/helpimg/et/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/et/swh00117.pngbin0 -> 835 bytes
-rw-r--r--default_images/res/helpimg/et/zellvor.pngbin0 -> 695 bytes
-rw-r--r--default_images/res/helpimg/feldalle.pngbin0 -> 747 bytes
-rw-r--r--default_images/res/helpimg/feldbrei.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/helpimg/feldcolo.pngbin0 -> 556 bytes
-rw-r--r--default_images/res/helpimg/feldurch.pngbin0 -> 486 bytes
-rw-r--r--default_images/res/helpimg/formschn.pngbin0 -> 601 bytes
-rw-r--r--default_images/res/helpimg/formsubt.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/helpimg/formvers.pngbin0 -> 739 bytes
-rw-r--r--default_images/res/helpimg/fr/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/fr/feldalle.pngbin0 -> 1108 bytes
-rw-r--r--default_images/res/helpimg/fr/feldbrei.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/helpimg/fr/feldcolo.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/helpimg/fr/names_as_addressing.pngbin0 -> 2991 bytes
-rw-r--r--default_images/res/helpimg/fr/objbitmp.pngbin0 -> 2315 bytes
-rw-r--r--default_images/res/helpimg/fr/prinzoom.pngbin0 -> 1395 bytes
-rw-r--r--default_images/res/helpimg/fr/rechenlt.pngbin0 -> 876 bytes
-rw-r--r--default_images/res/helpimg/fr/sheettabs.pngbin0 -> 1869 bytes
-rw-r--r--default_images/res/helpimg/fr/swh00055.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/helpimg/fr/swh00056.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/helpimg/fr/swh00117.pngbin0 -> 826 bytes
-rw-r--r--default_images/res/helpimg/fr/zellvor.pngbin0 -> 679 bytes
-rw-r--r--default_images/res/helpimg/hand01.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/helpimg/hsizebar.pngbin0 -> 95 bytes
-rw-r--r--default_images/res/helpimg/hu/calcein.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/helpimg/hu/feldalle.pngbin0 -> 820 bytes
-rw-r--r--default_images/res/helpimg/hu/feldbrei.pngbin0 -> 453 bytes
-rw-r--r--default_images/res/helpimg/hu/feldcolo.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/helpimg/hu/names_as_addressing.pngbin0 -> 1802 bytes
-rw-r--r--default_images/res/helpimg/hu/rechenlt.pngbin0 -> 643 bytes
-rw-r--r--default_images/res/helpimg/hu/sheettabs.pngbin0 -> 2168 bytes
-rw-r--r--default_images/res/helpimg/hu/swh00055.pngbin0 -> 593 bytes
-rw-r--r--default_images/res/helpimg/hu/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/hu/swh00117.pngbin0 -> 709 bytes
-rw-r--r--default_images/res/helpimg/hu/zellvor.pngbin0 -> 644 bytes
-rw-r--r--default_images/res/helpimg/it/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/it/feldalle.pngbin0 -> 1724 bytes
-rw-r--r--default_images/res/helpimg/it/feldbrei.pngbin0 -> 603 bytes
-rw-r--r--default_images/res/helpimg/it/feldcolo.pngbin0 -> 760 bytes
-rw-r--r--default_images/res/helpimg/it/names_as_addressing.pngbin0 -> 3177 bytes
-rw-r--r--default_images/res/helpimg/it/objbitmp.pngbin0 -> 3209 bytes
-rw-r--r--default_images/res/helpimg/it/prinzoom.pngbin0 -> 1395 bytes
-rw-r--r--default_images/res/helpimg/it/rechenlt.pngbin0 -> 917 bytes
-rw-r--r--default_images/res/helpimg/it/sheettabs.pngbin0 -> 1955 bytes
-rw-r--r--default_images/res/helpimg/it/swh00055.pngbin0 -> 593 bytes
-rw-r--r--default_images/res/helpimg/it/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/it/swh00117.pngbin0 -> 1032 bytes
-rw-r--r--default_images/res/helpimg/it/zellvor.pngbin0 -> 844 bytes
-rw-r--r--default_images/res/helpimg/ja/calcein.pngbin0 -> 527 bytes
-rw-r--r--default_images/res/helpimg/ja/feldalle.pngbin0 -> 767 bytes
-rw-r--r--default_images/res/helpimg/ja/feldbrei.pngbin0 -> 445 bytes
-rw-r--r--default_images/res/helpimg/ja/feldcolo.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/helpimg/ja/names_as_addressing.pngbin0 -> 1749 bytes
-rw-r--r--default_images/res/helpimg/ja/objbitmp.pngbin0 -> 4218 bytes
-rw-r--r--default_images/res/helpimg/ja/prinzoom.pngbin0 -> 1273 bytes
-rw-r--r--default_images/res/helpimg/ja/rechenlt.pngbin0 -> 607 bytes
-rw-r--r--default_images/res/helpimg/ja/sheettabs.pngbin0 -> 1420 bytes
-rw-r--r--default_images/res/helpimg/ja/swh00055.pngbin0 -> 646 bytes
-rw-r--r--default_images/res/helpimg/ja/swh00056.pngbin0 -> 510 bytes
-rw-r--r--default_images/res/helpimg/ja/swh00117.pngbin0 -> 679 bytes
-rw-r--r--default_images/res/helpimg/ja/zellvor.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/helpimg/km/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/km/feldalle.pngbin0 -> 748 bytes
-rw-r--r--default_images/res/helpimg/km/feldbrei.pngbin0 -> 441 bytes
-rw-r--r--default_images/res/helpimg/km/feldcolo.pngbin0 -> 557 bytes
-rw-r--r--default_images/res/helpimg/km/names_as_addressing.pngbin0 -> 2137 bytes
-rw-r--r--default_images/res/helpimg/km/rechenlt.pngbin0 -> 607 bytes
-rw-r--r--default_images/res/helpimg/km/sheettabs.pngbin0 -> 1431 bytes
-rw-r--r--default_images/res/helpimg/km/swh00055.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/helpimg/km/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/km/swh00117.pngbin0 -> 714 bytes
-rw-r--r--default_images/res/helpimg/km/zellvor.pngbin0 -> 614 bytes
-rw-r--r--default_images/res/helpimg/ko/calcein.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/helpimg/ko/feldalle.pngbin0 -> 784 bytes
-rw-r--r--default_images/res/helpimg/ko/feldbrei.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/helpimg/ko/feldcolo.pngbin0 -> 587 bytes
-rw-r--r--default_images/res/helpimg/ko/names_as_addressing.pngbin0 -> 2143 bytes
-rw-r--r--default_images/res/helpimg/ko/objbitmp.pngbin0 -> 3775 bytes
-rw-r--r--default_images/res/helpimg/ko/prinzoom.pngbin0 -> 1171 bytes
-rw-r--r--default_images/res/helpimg/ko/rechenlt.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/helpimg/ko/sheettabs.pngbin0 -> 1433 bytes
-rw-r--r--default_images/res/helpimg/ko/swh00055.pngbin0 -> 619 bytes
-rw-r--r--default_images/res/helpimg/ko/swh00056.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/helpimg/ko/swh00117.pngbin0 -> 739 bytes
-rw-r--r--default_images/res/helpimg/ko/zellvor.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/helpimg/kombi1.pngbin0 -> 1595 bytes
-rw-r--r--default_images/res/helpimg/left.pngbin0 -> 442 bytes
-rw-r--r--default_images/res/helpimg/left2.pngbin0 -> 446 bytes
-rw-r--r--default_images/res/helpimg/linkdata.pngbin0 -> 167 bytes
-rw-r--r--default_images/res/helpimg/linleft.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/helpimg/linright.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/helpimg/movedata.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/helpimg/names_as_addressing.pngbin0 -> 2958 bytes
-rw-r--r--default_images/res/helpimg/note.pngbin0 -> 1504 bytes
-rw-r--r--default_images/res/helpimg/note_small.pngbin0 -> 615 bytes
-rw-r--r--default_images/res/helpimg/pl/calcein.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/helpimg/pl/feldalle.pngbin0 -> 983 bytes
-rw-r--r--default_images/res/helpimg/pl/feldbrei.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/helpimg/pl/feldcolo.pngbin0 -> 597 bytes
-rw-r--r--default_images/res/helpimg/pl/names_as_addressing.pngbin0 -> 2243 bytes
-rw-r--r--default_images/res/helpimg/pl/objbitmp.pngbin0 -> 3325 bytes
-rw-r--r--default_images/res/helpimg/pl/prinzoom.pngbin0 -> 1585 bytes
-rw-r--r--default_images/res/helpimg/pl/rechenlt.pngbin0 -> 654 bytes
-rw-r--r--default_images/res/helpimg/pl/sheettabs.pngbin0 -> 1439 bytes
-rw-r--r--default_images/res/helpimg/pl/swh00055.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/helpimg/pl/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/pl/swh00117.pngbin0 -> 819 bytes
-rw-r--r--default_images/res/helpimg/pl/zellvor.pngbin0 -> 599 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/feldalle.pngbin0 -> 483 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/feldbrei.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/feldcolo.pngbin0 -> 461 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/names_as_addressing.pngbin0 -> 1567 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/prinzoom.pngbin0 -> 1486 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/rechenlt.pngbin0 -> 603 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/sheettabs.pngbin0 -> 1405 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/swh00055.pngbin0 -> 595 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/swh00056.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/swh00117.pngbin0 -> 811 bytes
-rw-r--r--default_images/res/helpimg/pt-BR/zellvor.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/helpimg/pt/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/pt/feldalle.pngbin0 -> 483 bytes
-rw-r--r--default_images/res/helpimg/pt/feldbrei.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/helpimg/pt/feldcolo.pngbin0 -> 461 bytes
-rw-r--r--default_images/res/helpimg/pt/names_as_addressing.pngbin0 -> 1567 bytes
-rw-r--r--default_images/res/helpimg/pt/prinzoom.pngbin0 -> 1486 bytes
-rw-r--r--default_images/res/helpimg/pt/rechenlt.pngbin0 -> 603 bytes
-rw-r--r--default_images/res/helpimg/pt/sheettabs.pngbin0 -> 1405 bytes
-rw-r--r--default_images/res/helpimg/pt/swh00055.pngbin0 -> 595 bytes
-rw-r--r--default_images/res/helpimg/pt/swh00056.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/helpimg/pt/swh00117.pngbin0 -> 811 bytes
-rw-r--r--default_images/res/helpimg/pt/zellvor.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/helpimg/rechenlt.pngbin0 -> 585 bytes
-rw-r--r--default_images/res/helpimg/refhand.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/helpimg/right.pngbin0 -> 433 bytes
-rw-r--r--default_images/res/helpimg/right2.pngbin0 -> 449 bytes
-rw-r--r--default_images/res/helpimg/rotieren.pngbin0 -> 647 bytes
-rw-r--r--default_images/res/helpimg/sheettabs.pngbin0 -> 1415 bytes
-rw-r--r--default_images/res/helpimg/sistop.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/helpimg/sk/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/sk/feldalle.pngbin0 -> 765 bytes
-rw-r--r--default_images/res/helpimg/sk/feldbrei.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/helpimg/sk/feldcolo.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/helpimg/sk/names_as_addressing.pngbin0 -> 1929 bytes
-rw-r--r--default_images/res/helpimg/sk/rechenlt.pngbin0 -> 1006 bytes
-rw-r--r--default_images/res/helpimg/sk/sheettabs.pngbin0 -> 1397 bytes
-rw-r--r--default_images/res/helpimg/sk/swh00055.pngbin0 -> 650 bytes
-rw-r--r--default_images/res/helpimg/sk/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/sk/swh00117.pngbin0 -> 720 bytes
-rw-r--r--default_images/res/helpimg/sk/zellvor.pngbin0 -> 616 bytes
-rw-r--r--default_images/res/helpimg/sl/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/sl/feldalle.pngbin0 -> 709 bytes
-rw-r--r--default_images/res/helpimg/sl/feldbrei.pngbin0 -> 454 bytes
-rw-r--r--default_images/res/helpimg/sl/feldcolo.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/helpimg/sl/names_as_addressing.pngbin0 -> 1923 bytes
-rw-r--r--default_images/res/helpimg/sl/rechenlt.pngbin0 -> 597 bytes
-rw-r--r--default_images/res/helpimg/sl/sheettabs.pngbin0 -> 2022 bytes
-rw-r--r--default_images/res/helpimg/sl/swh00055.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/helpimg/sl/swh00056.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/helpimg/sl/swh00117.pngbin0 -> 711 bytes
-rw-r--r--default_images/res/helpimg/sl/zellvor.pngbin0 -> 564 bytes
-rw-r--r--default_images/res/helpimg/smzb1.pngbin0 -> 985 bytes
-rw-r--r--default_images/res/helpimg/smzb10.pngbin0 -> 1249 bytes
-rw-r--r--default_images/res/helpimg/smzb2.pngbin0 -> 647 bytes
-rw-r--r--default_images/res/helpimg/smzb3.pngbin0 -> 1104 bytes
-rw-r--r--default_images/res/helpimg/smzb4.pngbin0 -> 1759 bytes
-rw-r--r--default_images/res/helpimg/smzb5.pngbin0 -> 3068 bytes
-rw-r--r--default_images/res/helpimg/smzb6.pngbin0 -> 2386 bytes
-rw-r--r--default_images/res/helpimg/smzb7.pngbin0 -> 1075 bytes
-rw-r--r--default_images/res/helpimg/smzb8.pngbin0 -> 1303 bytes
-rw-r--r--default_images/res/helpimg/smzb9.pngbin0 -> 1555 bytes
-rw-r--r--default_images/res/helpimg/sv/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/sv/feldalle.pngbin0 -> 764 bytes
-rw-r--r--default_images/res/helpimg/sv/feldbrei.pngbin0 -> 440 bytes
-rw-r--r--default_images/res/helpimg/sv/feldcolo.pngbin0 -> 552 bytes
-rw-r--r--default_images/res/helpimg/sv/names_as_addressing.pngbin0 -> 1873 bytes
-rw-r--r--default_images/res/helpimg/sv/objbitmp.pngbin0 -> 3111 bytes
-rw-r--r--default_images/res/helpimg/sv/prinzoom.pngbin0 -> 1473 bytes
-rw-r--r--default_images/res/helpimg/sv/rechenlt.pngbin0 -> 558 bytes
-rw-r--r--default_images/res/helpimg/sv/sheettabs.pngbin0 -> 1407 bytes
-rw-r--r--default_images/res/helpimg/sv/swh00055.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/helpimg/sv/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/sv/swh00117.pngbin0 -> 692 bytes
-rw-r--r--default_images/res/helpimg/sv/zellvor.pngbin0 -> 575 bytes
-rw-r--r--default_images/res/helpimg/swh00055.pngbin0 -> 595 bytes
-rw-r--r--default_images/res/helpimg/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/swh00117.pngbin0 -> 692 bytes
-rw-r--r--default_images/res/helpimg/swh00177.pngbin0 -> 101 bytes
-rwxr-xr-xdefault_images/res/helpimg/swh00178.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/helpimg/swh00179.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/helpimg/swh00180.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/helpimg/tip.pngbin0 -> 1761 bytes
-rw-r--r--default_images/res/helpimg/tip_small.pngbin0 -> 711 bytes
-rw-r--r--default_images/res/helpimg/tr/calcein.pngbin0 -> 538 bytes
-rw-r--r--default_images/res/helpimg/tr/feldalle.pngbin0 -> 775 bytes
-rw-r--r--default_images/res/helpimg/tr/feldbrei.pngbin0 -> 379 bytes
-rw-r--r--default_images/res/helpimg/tr/feldcolo.pngbin0 -> 388 bytes
-rw-r--r--default_images/res/helpimg/tr/names_as_addressing.pngbin0 -> 4229 bytes
-rw-r--r--default_images/res/helpimg/tr/objbitmp.pngbin0 -> 4109 bytes
-rw-r--r--default_images/res/helpimg/tr/prinzoom.pngbin0 -> 1809 bytes
-rw-r--r--default_images/res/helpimg/tr/rechenlt.pngbin0 -> 1911 bytes
-rw-r--r--default_images/res/helpimg/tr/sheettabs.pngbin0 -> 1515 bytes
-rw-r--r--default_images/res/helpimg/tr/swh00055.pngbin0 -> 596 bytes
-rw-r--r--default_images/res/helpimg/tr/swh00056.pngbin0 -> 518 bytes
-rw-r--r--default_images/res/helpimg/tr/swh00117.pngbin0 -> 561 bytes
-rw-r--r--default_images/res/helpimg/tr/zellvor.pngbin0 -> 393 bytes
-rw-r--r--default_images/res/helpimg/ueberblenden.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/helpimg/warning.pngbin0 -> 784 bytes
-rw-r--r--default_images/res/helpimg/warning_small.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/helpimg/what-if.pngbin0 -> 8080 bytes
-rw-r--r--default_images/res/helpimg/zellvor.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/calcein.pngbin0 -> 535 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/feldalle.pngbin0 -> 794 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/feldbrei.pngbin0 -> 469 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/feldcolo.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/names_as_addressing.pngbin0 -> 1837 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/objbitmp.pngbin0 -> 3739 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/prinzoom.pngbin0 -> 1445 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/rechenlt.pngbin0 -> 592 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/sheettabs.pngbin0 -> 1591 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/swh00055.pngbin0 -> 637 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/swh00056.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/swh00117.pngbin0 -> 748 bytes
-rw-r--r--default_images/res/helpimg/zh-CN/zellvor.pngbin0 -> 598 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/calcein.pngbin0 -> 540 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/feldalle.pngbin0 -> 832 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/feldbrei.pngbin0 -> 482 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/feldcolo.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/names_as_addressing.pngbin0 -> 1889 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/objbitmp.pngbin0 -> 3096 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/prinzoom.pngbin0 -> 1395 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/rechenlt.pngbin0 -> 600 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/sheettabs.pngbin0 -> 1474 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/swh00055.pngbin0 -> 657 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/swh00056.pngbin0 -> 520 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/swh00117.pngbin0 -> 750 bytes
-rw-r--r--default_images/res/helpimg/zh-TW/zellvor.pngbin0 -> 599 bytes
-rw-r--r--default_images/res/hidedependency_16.pngbin0 -> 328 bytes
-rw-r--r--default_images/res/hldocntp.pngbin0 -> 772 bytes
-rw-r--r--default_images/res/hldocntp_h.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/hldoctp.pngbin0 -> 1344 bytes
-rw-r--r--default_images/res/hldoctp_h.pngbin0 -> 217 bytes
-rw-r--r--default_images/res/hlinettp.pngbin0 -> 1400 bytes
-rw-r--r--default_images/res/hlinettp_h.pngbin0 -> 332 bytes
-rw-r--r--default_images/res/hlmailtp.pngbin0 -> 1381 bytes
-rw-r--r--default_images/res/hlmailtp_h.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/hu/lc10008.pngbin0 -> 549 bytes
-rw-r--r--default_images/res/hu/lc10009.pngbin0 -> 340 bytes
-rw-r--r--default_images/res/hu/lc10014.pngbin0 -> 528 bytes
-rw-r--r--default_images/res/hu/lc26648.pngbin0 -> 652 bytes
-rw-r--r--default_images/res/hu/lch10008.pngbin0 -> 182 bytes
-rw-r--r--default_images/res/hu/lch10009.pngbin0 -> 285 bytes
-rw-r--r--default_images/res/hu/lch10014.pngbin0 -> 186 bytes
-rw-r--r--default_images/res/hu/lch26648.pngbin0 -> 184 bytes
-rw-r--r--default_images/res/hu/sc10008.pngbin0 -> 373 bytes
-rw-r--r--default_images/res/hu/sc10009.pngbin0 -> 258 bytes
-rw-r--r--default_images/res/hu/sc10014.pngbin0 -> 353 bytes
-rw-r--r--default_images/res/hu/sc26648.pngbin0 -> 472 bytes
-rw-r--r--default_images/res/hu/sch10008.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/hu/sch10009.pngbin0 -> 226 bytes
-rw-r--r--default_images/res/hu/sch10014.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/hu/sch26648.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/im30820.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/im30821.pngbin0 -> 384 bytes
-rw-r--r--default_images/res/im30822.pngbin0 -> 310 bytes
-rw-r--r--default_images/res/im30823.pngbin0 -> 308 bytes
-rw-r--r--default_images/res/im30826.pngbin0 -> 285 bytes
-rw-r--r--default_images/res/im30827.pngbin0 -> 405 bytes
-rw-r--r--default_images/res/im30838.pngbin0 -> 385 bytes
-rw-r--r--default_images/res/im30839.pngbin0 -> 284 bytes
-rw-r--r--default_images/res/im30840.pngbin0 -> 249 bytes
-rw-r--r--default_images/res/im30841.pngbin0 -> 270 bytes
-rw-r--r--default_images/res/imh30820.pngbin0 -> 148 bytes
-rw-r--r--default_images/res/imh30821.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/imh30822.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/imh30823.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/imh30826.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/imh30827.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/imh30838.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/imh30839.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/imh30840.pngbin0 -> 113 bytes
-rw-r--r--default_images/res/imh30841.pngbin0 -> 112 bytes
-rw-r--r--default_images/res/info.pngbin0 -> 1167 bytes
-rw-r--r--default_images/res/info_16.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/it/lc10008.pngbin0 -> 531 bytes
-rw-r--r--default_images/res/it/lc10009.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/it/lc10014.pngbin0 -> 521 bytes
-rw-r--r--default_images/res/it/lc26648.pngbin0 -> 531 bytes
-rw-r--r--default_images/res/it/lch10008.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/it/lch26648.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/it/sc10008.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/it/sc10009.pngbin0 -> 366 bytes
-rw-r--r--default_images/res/it/sc10014.pngbin0 -> 386 bytes
-rw-r--r--default_images/res/it/sch10009.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/javacomponent_16.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/javacomponent_16_h.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/javalibrary_16.pngbin0 -> 696 bytes
-rw-r--r--default_images/res/javalibrary_16_h.pngbin0 -> 164 bytes
-rw-r--r--default_images/res/ko/lc10712.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/ko/lc10713.pngbin0 -> 355 bytes
-rw-r--r--default_images/res/ko/lch10712.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/ko/lch10713.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/ko/sc10712.pngbin0 -> 281 bytes
-rw-r--r--default_images/res/ko/sc10713.pngbin0 -> 307 bytes
-rw-r--r--default_images/res/ko/sch10712.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/ko/sch10713.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/lc05504.pngbin0 -> 594 bytes
-rw-r--r--default_images/res/lc05505.pngbin0 -> 776 bytes
-rw-r--r--default_images/res/lc05508.pngbin0 -> 1603 bytes
-rw-r--r--default_images/res/lc05509.pngbin0 -> 594 bytes
-rw-r--r--default_images/res/lc05539.pngbin0 -> 970 bytes
-rw-r--r--default_images/res/lc05596.pngbin0 -> 1553 bytes
-rw-r--r--default_images/res/lc05646.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc05647.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc05648.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc05649.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc05650.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/lc05651.pngbin0 -> 1163 bytes
-rw-r--r--default_images/res/lc05678.pngbin0 -> 1944 bytes
-rw-r--r--default_images/res/lc05700.pngbin0 -> 1549 bytes
-rw-r--r--default_images/res/lc05701.pngbin0 -> 1569 bytes
-rw-r--r--default_images/res/lc05710.pngbin0 -> 1623 bytes
-rw-r--r--default_images/res/lc05711.pngbin0 -> 542 bytes
-rw-r--r--default_images/res/lc05961.pngbin0 -> 399 bytes
-rw-r--r--default_images/res/lc06300.pngbin0 -> 716 bytes
-rw-r--r--default_images/res/lc06301.pngbin0 -> 731 bytes
-rw-r--r--default_images/res/lc06302.pngbin0 -> 885 bytes
-rw-r--r--default_images/res/lc06303.pngbin0 -> 742 bytes
-rw-r--r--default_images/res/lc06304.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06308.pngbin0 -> 1130 bytes
-rw-r--r--default_images/res/lc06309.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06312.pngbin0 -> 1094 bytes
-rw-r--r--default_images/res/lc06331.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06332.pngbin0 -> 764 bytes
-rw-r--r--default_images/res/lc06333.pngbin0 -> 736 bytes
-rw-r--r--default_images/res/lc06334.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06335.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06336.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06337.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06338.pngbin0 -> 1610 bytes
-rw-r--r--default_images/res/lc06350.pngbin0 -> 1163 bytes
-rw-r--r--default_images/res/lc06351.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06352.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06353.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06354.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06355.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06356.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc06357.pngbin0 -> 276 bytes
-rw-r--r--default_images/res/lc10366.pngbin0 -> 1692 bytes
-rw-r--r--default_images/res/lc10711.pngbin0 -> 717 bytes
-rw-r--r--default_images/res/lc10712.pngbin0 -> 968 bytes
-rw-r--r--default_images/res/lc10713.pngbin0 -> 951 bytes
-rw-r--r--default_images/res/lc10715.pngbin0 -> 519 bytes
-rw-r--r--default_images/res/lc10716.pngbin0 -> 854 bytes
-rw-r--r--default_images/res/lc10851.pngbin0 -> 513 bytes
-rw-r--r--default_images/res/lc10853.pngbin0 -> 401 bytes
-rw-r--r--default_images/res/lc10854.pngbin0 -> 1604 bytes
-rw-r--r--default_images/res/lch05504.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/lch05509.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/lch05678.pngbin0 -> 311 bytes
-rw-r--r--default_images/res/lch05711.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/lch05961.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/lch06300.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/lch06301.pngbin0 -> 124 bytes
-rw-r--r--default_images/res/lch06303.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/lch06308.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/lch10711.pngbin0 -> 190 bytes
-rw-r--r--default_images/res/lch10712.pngbin0 -> 199 bytes
-rw-r--r--default_images/res/lch10713.pngbin0 -> 212 bytes
-rw-r--r--default_images/res/lch10715.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/lch10716.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/lch10851.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/lch10853.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/lch10854.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/library_16.pngbin0 -> 637 bytes
-rw-r--r--default_images/res/library_16_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/res/lock.pngbin0 -> 234 bytes
-rw-r--r--default_images/res/lock_hc.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/lx03123.pngbin0 -> 839 bytes
-rw-r--r--default_images/res/lx03124.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03125.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03126.pngbin0 -> 610 bytes
-rw-r--r--default_images/res/lx03127.pngbin0 -> 828 bytes
-rw-r--r--default_images/res/lx03128.pngbin0 -> 1009 bytes
-rw-r--r--default_images/res/lx03129.pngbin0 -> 1105 bytes
-rw-r--r--default_images/res/lx03130.pngbin0 -> 1001 bytes
-rw-r--r--default_images/res/lx03131.pngbin0 -> 827 bytes
-rw-r--r--default_images/res/lx03132.pngbin0 -> 827 bytes
-rw-r--r--default_images/res/lx03134.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03135.pngbin0 -> 574 bytes
-rw-r--r--default_images/res/lx03136.pngbin0 -> 549 bytes
-rw-r--r--default_images/res/lx03137.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03138.pngbin0 -> 912 bytes
-rw-r--r--default_images/res/lx03139.pngbin0 -> 1127 bytes
-rw-r--r--default_images/res/lx03140.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03141.pngbin0 -> 386 bytes
-rw-r--r--default_images/res/lx03142.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03144.pngbin0 -> 1009 bytes
-rw-r--r--default_images/res/lx03145.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/lx03150.pngbin0 -> 492 bytes
-rw-r--r--default_images/res/lx03151.pngbin0 -> 195 bytes
-rw-r--r--default_images/res/lx03152.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03153.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03154.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03155.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03156.pngbin0 -> 790 bytes
-rw-r--r--default_images/res/lx03157.pngbin0 -> 912 bytes
-rw-r--r--default_images/res/lx03158.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03159.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03160.pngbin0 -> 1004 bytes
-rw-r--r--default_images/res/lx03161.pngbin0 -> 792 bytes
-rw-r--r--default_images/res/lx03162.pngbin0 -> 792 bytes
-rw-r--r--default_images/res/lx03163.pngbin0 -> 836 bytes
-rw-r--r--default_images/res/lx03164.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/lx03165.pngbin0 -> 267 bytes
-rw-r--r--default_images/res/lx03166.pngbin0 -> 322 bytes
-rw-r--r--default_images/res/lx03167.pngbin0 -> 285 bytes
-rw-r--r--default_images/res/lx03168.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03187.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03188.pngbin0 -> 610 bytes
-rw-r--r--default_images/res/lx03189.pngbin0 -> 385 bytes
-rw-r--r--default_images/res/lx03190.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03193.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03198.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03201.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03202.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03203.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03204.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03205.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03206.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03214.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/lx03216.pngbin0 -> 1139 bytes
-rw-r--r--default_images/res/lx03217.pngbin0 -> 1139 bytes
-rw-r--r--default_images/res/lx03218.pngbin0 -> 1136 bytes
-rw-r--r--default_images/res/lx03219.pngbin0 -> 1069 bytes
-rw-r--r--default_images/res/lx03220.pngbin0 -> 1139 bytes
-rw-r--r--default_images/res/lx03221.pngbin0 -> 1138 bytes
-rw-r--r--default_images/res/lx03222.pngbin0 -> 1139 bytes
-rw-r--r--default_images/res/lx03226.pngbin0 -> 819 bytes
-rw-r--r--default_images/res/lx03227.pngbin0 -> 1138 bytes
-rw-r--r--default_images/res/lx03228.pngbin0 -> 1067 bytes
-rw-r--r--default_images/res/lx03236.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03237.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lx03239.pngbin0 -> 399 bytes
-rw-r--r--default_images/res/lx03241.pngbin0 -> 162 bytes
-rw-r--r--default_images/res/lx03242.pngbin0 -> 698 bytes
-rw-r--r--default_images/res/lx03243.pngbin0 -> 839 bytes
-rw-r--r--default_images/res/lx03244.pngbin0 -> 1001 bytes
-rw-r--r--default_images/res/lx03245.pngbin0 -> 1329 bytes
-rw-r--r--default_images/res/lx03246.pngbin0 -> 1271 bytes
-rw-r--r--default_images/res/lx03247.pngbin0 -> 1128 bytes
-rw-r--r--default_images/res/lx03248.pngbin0 -> 867 bytes
-rw-r--r--default_images/res/lx03249.pngbin0 -> 1042 bytes
-rw-r--r--default_images/res/lx03250.pngbin0 -> 1015 bytes
-rw-r--r--default_images/res/lx03251.pngbin0 -> 987 bytes
-rw-r--r--default_images/res/lx03252.pngbin0 -> 1352 bytes
-rw-r--r--default_images/res/lx03253.pngbin0 -> 1390 bytes
-rw-r--r--default_images/res/lx03254.pngbin0 -> 1281 bytes
-rw-r--r--default_images/res/lx03255.pngbin0 -> 1328 bytes
-rw-r--r--default_images/res/lx03256.pngbin0 -> 736 bytes
-rw-r--r--default_images/res/lxh03123.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/lxh03124.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03125.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/lxh03126.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/lxh03127.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/lxh03128.pngbin0 -> 552 bytes
-rw-r--r--default_images/res/lxh03129.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/lxh03130.pngbin0 -> 193 bytes
-rw-r--r--default_images/res/lxh03131.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/lxh03132.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/lxh03134.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03135.pngbin0 -> 141 bytes
-rw-r--r--default_images/res/lxh03136.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/lxh03137.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/lxh03138.pngbin0 -> 193 bytes
-rw-r--r--default_images/res/lxh03139.pngbin0 -> 589 bytes
-rw-r--r--default_images/res/lxh03140.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/lxh03141.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/lxh03142.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03144.pngbin0 -> 192 bytes
-rw-r--r--default_images/res/lxh03145.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03150.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/lxh03151.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/lxh03152.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/lxh03153.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/lxh03154.pngbin0 -> 221 bytes
-rw-r--r--default_images/res/lxh03155.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/lxh03156.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/lxh03157.pngbin0 -> 193 bytes
-rw-r--r--default_images/res/lxh03158.pngbin0 -> 222 bytes
-rw-r--r--default_images/res/lxh03159.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03160.pngbin0 -> 218 bytes
-rw-r--r--default_images/res/lxh03161.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/lxh03162.pngbin0 -> 176 bytes
-rw-r--r--default_images/res/lxh03163.pngbin0 -> 172 bytes
-rw-r--r--default_images/res/lxh03164.pngbin0 -> 163 bytes
-rw-r--r--default_images/res/lxh03165.pngbin0 -> 198 bytes
-rw-r--r--default_images/res/lxh03166.pngbin0 -> 282 bytes
-rw-r--r--default_images/res/lxh03167.pngbin0 -> 189 bytes
-rw-r--r--default_images/res/lxh03168.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03187.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03188.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/lxh03189.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/lxh03190.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lxh03193.pngbin0 -> 315 bytes
-rw-r--r--default_images/res/lxh03198.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03201.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03202.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03203.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03204.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03205.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03206.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03214.pngbin0 -> 196 bytes
-rw-r--r--default_images/res/lxh03216.pngbin0 -> 737 bytes
-rw-r--r--default_images/res/lxh03217.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/lxh03218.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/lxh03219.pngbin0 -> 223 bytes
-rw-r--r--default_images/res/lxh03220.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/lxh03221.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/lxh03222.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/lxh03226.pngbin0 -> 165 bytes
-rw-r--r--default_images/res/lxh03227.pngbin0 -> 230 bytes
-rw-r--r--default_images/res/lxh03228.pngbin0 -> 228 bytes
-rw-r--r--default_images/res/lxh03236.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03237.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03239.pngbin0 -> 166 bytes
-rw-r--r--default_images/res/lxh03241.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/lxh03242.pngbin0 -> 422 bytes
-rw-r--r--default_images/res/lxh03243.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/lxh03244.pngbin0 -> 193 bytes
-rw-r--r--default_images/res/lxh03245.pngbin0 -> 818 bytes
-rw-r--r--default_images/res/lxh03246.pngbin0 -> 801 bytes
-rw-r--r--default_images/res/lxh03247.pngbin0 -> 699 bytes
-rw-r--r--default_images/res/lxh03248.pngbin0 -> 502 bytes
-rw-r--r--default_images/res/lxh03249.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/lxh03250.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/lxh03251.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/lxh03252.pngbin0 -> 825 bytes
-rw-r--r--default_images/res/lxh03253.pngbin0 -> 573 bytes
-rw-r--r--default_images/res/lxh03254.pngbin0 -> 544 bytes
-rw-r--r--default_images/res/lxh03255.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/lxh03256.pngbin0 -> 201 bytes
-rw-r--r--default_images/res/mainapp_16.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/mainapp_16_8.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/mainapp_16_h.pngbin0 -> 231 bytes
-rw-r--r--default_images/res/mainapp_32.pngbin0 -> 831 bytes
-rw-r--r--default_images/res/mainapp_32_8.pngbin0 -> 831 bytes
-rw-r--r--default_images/res/mainapp_32_h.pngbin0 -> 1026 bytes
-rw-r--r--default_images/res/mainapp_48_8.pngbin0 -> 1116 bytes
-rw-r--r--default_images/res/minus.pngbin0 -> 175 bytes
-rw-r--r--default_images/res/minus_sch.pngbin0 -> 76 bytes
-rw-r--r--default_images/res/newdoc.pngbin0 -> 243 bytes
-rw-r--r--default_images/res/newdoc_hc.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/odb_16_8.pngbin0 -> 632 bytes
-rw-r--r--default_images/res/odb_32.pngbin0 -> 1329 bytes
-rw-r--r--default_images/res/odb_32_8.pngbin0 -> 1329 bytes
-rw-r--r--default_images/res/odb_32_hc.pngbin0 -> 818 bytes
-rw-r--r--default_images/res/odb_48_8.pngbin0 -> 2135 bytes
-rw-r--r--default_images/res/odf_16_8.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/odf_32.pngbin0 -> 1128 bytes
-rw-r--r--default_images/res/odf_32_8.pngbin0 -> 1128 bytes
-rw-r--r--default_images/res/odf_32_hc.pngbin0 -> 699 bytes
-rw-r--r--default_images/res/odf_48_8.pngbin0 -> 1588 bytes
-rw-r--r--default_images/res/odg_16_8.pngbin0 -> 653 bytes
-rw-r--r--default_images/res/odg_32.pngbin0 -> 1271 bytes
-rw-r--r--default_images/res/odg_32_8.pngbin0 -> 1271 bytes
-rw-r--r--default_images/res/odg_32_hc.pngbin0 -> 801 bytes
-rw-r--r--default_images/res/odg_48_8.pngbin0 -> 1690 bytes
-rw-r--r--default_images/res/odm_16_8.pngbin0 -> 487 bytes
-rw-r--r--default_images/res/odm_32.pngbin0 -> 867 bytes
-rw-r--r--default_images/res/odm_32_8.pngbin0 -> 867 bytes
-rw-r--r--default_images/res/odm_32_hc.pngbin0 -> 502 bytes
-rw-r--r--default_images/res/odm_48_8.pngbin0 -> 1399 bytes
-rw-r--r--default_images/res/odp_16_8.pngbin0 -> 577 bytes
-rw-r--r--default_images/res/odp_32.pngbin0 -> 1042 bytes
-rw-r--r--default_images/res/odp_32_8.pngbin0 -> 1042 bytes
-rw-r--r--default_images/res/odp_32_hc.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/odp_48_8.pngbin0 -> 1560 bytes
-rw-r--r--default_images/res/ods_16_8.pngbin0 -> 539 bytes
-rw-r--r--default_images/res/ods_32.pngbin0 -> 1015 bytes
-rw-r--r--default_images/res/ods_32_8.pngbin0 -> 1015 bytes
-rw-r--r--default_images/res/ods_32_hc.pngbin0 -> 485 bytes
-rw-r--r--default_images/res/ods_48_8.pngbin0 -> 1465 bytes
-rw-r--r--default_images/res/odt_16_8.pngbin0 -> 532 bytes
-rw-r--r--default_images/res/odt_32.pngbin0 -> 987 bytes
-rw-r--r--default_images/res/odt_32_8.pngbin0 -> 987 bytes
-rw-r--r--default_images/res/odt_32_hc.pngbin0 -> 489 bytes
-rw-r--r--default_images/res/odt_48_8.pngbin0 -> 1332 bytes
-rw-r--r--default_images/res/oleobj.pngbin0 -> 907 bytes
-rw-r--r--default_images/res/open_32.pngbin0 -> 1319 bytes
-rw-r--r--default_images/res/otg_16_8.pngbin0 -> 480 bytes
-rw-r--r--default_images/res/otg_32_8.pngbin0 -> 1178 bytes
-rw-r--r--default_images/res/otg_48_8.pngbin0 -> 1888 bytes
-rw-r--r--default_images/res/oth_16_8.pngbin0 -> 386 bytes
-rw-r--r--default_images/res/oth_32_8.pngbin0 -> 828 bytes
-rw-r--r--default_images/res/oth_48_8.pngbin0 -> 1294 bytes
-rw-r--r--default_images/res/otp_16_8.pngbin0 -> 420 bytes
-rw-r--r--default_images/res/otp_32_8.pngbin0 -> 1116 bytes
-rw-r--r--default_images/res/otp_48_8.pngbin0 -> 1968 bytes
-rw-r--r--default_images/res/ots_16_8.pngbin0 -> 423 bytes
-rw-r--r--default_images/res/ots_32_8.pngbin0 -> 938 bytes
-rw-r--r--default_images/res/ots_48_8.pngbin0 -> 2003 bytes
-rw-r--r--default_images/res/ott_16_8.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/ott_32_8.pngbin0 -> 959 bytes
-rw-r--r--default_images/res/ott_48_8.pngbin0 -> 1830 bytes
-rw-r--r--default_images/res/plugin.pngbin0 -> 1312 bytes
-rw-r--r--default_images/res/plus.pngbin0 -> 191 bytes
-rw-r--r--default_images/res/plus_sch.pngbin0 -> 81 bytes
-rw-r--r--default_images/res/printeradmin_16.pngbin0 -> 572 bytes
-rw-r--r--default_images/res/printeradmin_16_8.pngbin0 -> 572 bytes
-rw-r--r--default_images/res/printeradmin_16_h.pngbin0 -> 253 bytes
-rw-r--r--default_images/res/printeradmin_32.pngbin0 -> 1355 bytes
-rw-r--r--default_images/res/printeradmin_32_8.pngbin0 -> 1355 bytes
-rw-r--r--default_images/res/printeradmin_32_h.pngbin0 -> 899 bytes
-rw-r--r--default_images/res/printeradmin_48_8.pngbin0 -> 1699 bytes
-rw-r--r--default_images/res/puzzlefolder_16.pngbin0 -> 695 bytes
-rw-r--r--default_images/res/puzzlefolder_16_h.pngbin0 -> 155 bytes
-rw-r--r--default_images/res/puzzleslice_16.pngbin0 -> 593 bytes
-rw-r--r--default_images/res/puzzleslice_16_h.pngbin0 -> 149 bytes
-rw-r--r--default_images/res/sc05500.pngbin0 -> 351 bytes
-rw-r--r--default_images/res/sc05501.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/sc05502.pngbin0 -> 402 bytes
-rw-r--r--default_images/res/sc05504.pngbin0 -> 346 bytes
-rw-r--r--default_images/res/sc05505.pngbin0 -> 535 bytes
-rw-r--r--default_images/res/sc05508.pngbin0 -> 909 bytes
-rw-r--r--default_images/res/sc05509.pngbin0 -> 346 bytes
-rw-r--r--default_images/res/sc05539.pngbin0 -> 499 bytes
-rw-r--r--default_images/res/sc05554.pngbin0 -> 548 bytes
-rw-r--r--default_images/res/sc05555.pngbin0 -> 427 bytes
-rw-r--r--default_images/res/sc05556.pngbin0 -> 542 bytes
-rw-r--r--default_images/res/sc05596.pngbin0 -> 802 bytes
-rw-r--r--default_images/res/sc05646.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc05647.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc05648.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc05649.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc05650.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc05651.pngbin0 -> 712 bytes
-rw-r--r--default_images/res/sc05678.pngbin0 -> 915 bytes
-rw-r--r--default_images/res/sc05700.pngbin0 -> 601 bytes
-rw-r--r--default_images/res/sc05701.pngbin0 -> 888 bytes
-rw-r--r--default_images/res/sc05710.pngbin0 -> 802 bytes
-rw-r--r--default_images/res/sc05711.pngbin0 -> 357 bytes
-rw-r--r--default_images/res/sc05961.pngbin0 -> 278 bytes
-rw-r--r--default_images/res/sc06300.pngbin0 -> 320 bytes
-rw-r--r--default_images/res/sc06301.pngbin0 -> 328 bytes
-rw-r--r--default_images/res/sc06302.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/sc06303.pngbin0 -> 446 bytes
-rw-r--r--default_images/res/sc06304.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06308.pngbin0 -> 796 bytes
-rw-r--r--default_images/res/sc06309.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06312.pngbin0 -> 760 bytes
-rw-r--r--default_images/res/sc06331.pngbin0 -> 663 bytes
-rw-r--r--default_images/res/sc06332.pngbin0 -> 503 bytes
-rw-r--r--default_images/res/sc06333.pngbin0 -> 494 bytes
-rw-r--r--default_images/res/sc06334.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06335.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06336.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06337.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06338.pngbin0 -> 1007 bytes
-rw-r--r--default_images/res/sc06350.pngbin0 -> 712 bytes
-rw-r--r--default_images/res/sc06351.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06352.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06353.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06354.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06355.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06356.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06357.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc06580.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sc10223.pngbin0 -> 102 bytes
-rw-r--r--default_images/res/sc10224.pngbin0 -> 106 bytes
-rw-r--r--default_images/res/sc10243.pngbin0 -> 605 bytes
-rw-r--r--default_images/res/sc10350.pngbin0 -> 344 bytes
-rw-r--r--default_images/res/sc10366.pngbin0 -> 1014 bytes
-rw-r--r--default_images/res/sc10711.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/sc10712.pngbin0 -> 394 bytes
-rw-r--r--default_images/res/sc10713.pngbin0 -> 405 bytes
-rw-r--r--default_images/res/sc10715.pngbin0 -> 262 bytes
-rw-r--r--default_images/res/sc10716.pngbin0 -> 481 bytes
-rw-r--r--default_images/res/sc10851.pngbin0 -> 314 bytes
-rw-r--r--default_images/res/sc10853.pngbin0 -> 278 bytes
-rw-r--r--default_images/res/sc10854.pngbin0 -> 497 bytes
-rw-r--r--default_images/res/sc10863.pngbin0 -> 346 bytes
-rw-r--r--default_images/res/sc10864.pngbin0 -> 498 bytes
-rw-r--r--default_images/res/sc10865.pngbin0 -> 434 bytes
-rw-r--r--default_images/res/sc10866.pngbin0 -> 439 bytes
-rw-r--r--default_images/res/sc10867.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/sc10868.pngbin0 -> 666 bytes
-rw-r--r--default_images/res/sc10869.pngbin0 -> 447 bytes
-rw-r--r--default_images/res/sch05500.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/sch05501.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/sch05502.pngbin0 -> 123 bytes
-rw-r--r--default_images/res/sch05504.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/sch05509.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/sch05554.pngbin0 -> 168 bytes
-rw-r--r--default_images/res/sch05555.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sch05556.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/sch05678.pngbin0 -> 204 bytes
-rw-r--r--default_images/res/sch05711.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/sch05961.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/sch06300.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/sch06301.pngbin0 -> 126 bytes
-rw-r--r--default_images/res/sch06303.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/sch06308.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/sch10243.pngbin0 -> 156 bytes
-rw-r--r--default_images/res/sch10711.pngbin0 -> 160 bytes
-rw-r--r--default_images/res/sch10712.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sch10713.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/sch10715.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/sch10716.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/sch10851.pngbin0 -> 125 bytes
-rw-r--r--default_images/res/sch10853.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/sch10854.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/sch10863.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/sch10864.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/sch10865.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/sch10866.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/sch10867.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/sch10868.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/sch10869.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/script.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/script_hc.pngbin0 -> 158 bytes
-rw-r--r--default_images/res/selectupd_16.pngbin0 -> 382 bytes
-rw-r--r--default_images/res/soliline.pngbin0 -> 75 bytes
-rw-r--r--default_images/res/sx03123.pngbin0 -> 297 bytes
-rw-r--r--default_images/res/sx03124.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03125.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03126.pngbin0 -> 305 bytes
-rw-r--r--default_images/res/sx03127.pngbin0 -> 400 bytes
-rw-r--r--default_images/res/sx03128.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/sx03129.pngbin0 -> 451 bytes
-rw-r--r--default_images/res/sx03130.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/sx03131.pngbin0 -> 400 bytes
-rw-r--r--default_images/res/sx03132.pngbin0 -> 400 bytes
-rw-r--r--default_images/res/sx03134.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03135.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/sx03136.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/sx03137.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03138.pngbin0 -> 418 bytes
-rw-r--r--default_images/res/sx03139.pngbin0 -> 593 bytes
-rw-r--r--default_images/res/sx03140.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03141.pngbin0 -> 243 bytes
-rw-r--r--default_images/res/sx03142.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03144.pngbin0 -> 438 bytes
-rw-r--r--default_images/res/sx03145.pngbin0 -> 143 bytes
-rw-r--r--default_images/res/sx03150.pngbin0 -> 351 bytes
-rw-r--r--default_images/res/sx03151.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/sx03152.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03153.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03154.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03155.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03156.pngbin0 -> 311 bytes
-rw-r--r--default_images/res/sx03157.pngbin0 -> 418 bytes
-rw-r--r--default_images/res/sx03158.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03159.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03160.pngbin0 -> 524 bytes
-rw-r--r--default_images/res/sx03161.pngbin0 -> 311 bytes
-rw-r--r--default_images/res/sx03162.pngbin0 -> 311 bytes
-rw-r--r--default_images/res/sx03163.pngbin0 -> 368 bytes
-rw-r--r--default_images/res/sx03164.pngbin0 -> 174 bytes
-rw-r--r--default_images/res/sx03165.pngbin0 -> 225 bytes
-rw-r--r--default_images/res/sx03166.pngbin0 -> 249 bytes
-rw-r--r--default_images/res/sx03167.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/sx03168.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03187.pngbin0 -> 374 bytes
-rw-r--r--default_images/res/sx03188.pngbin0 -> 305 bytes
-rw-r--r--default_images/res/sx03189.pngbin0 -> 243 bytes
-rw-r--r--default_images/res/sx03190.pngbin0 -> 437 bytes
-rw-r--r--default_images/res/sx03193.pngbin0 -> 296 bytes
-rw-r--r--default_images/res/sx03198.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03201.pngbin0 -> 488 bytes
-rw-r--r--default_images/res/sx03202.pngbin0 -> 514 bytes
-rw-r--r--default_images/res/sx03203.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03204.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03205.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03206.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03214.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/sx03216.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/sx03217.pngbin0 -> 430 bytes
-rw-r--r--default_images/res/sx03218.pngbin0 -> 430 bytes
-rw-r--r--default_images/res/sx03219.pngbin0 -> 529 bytes
-rw-r--r--default_images/res/sx03220.pngbin0 -> 430 bytes
-rw-r--r--default_images/res/sx03221.pngbin0 -> 430 bytes
-rw-r--r--default_images/res/sx03222.pngbin0 -> 430 bytes
-rw-r--r--default_images/res/sx03226.pngbin0 -> 333 bytes
-rw-r--r--default_images/res/sx03227.pngbin0 -> 430 bytes
-rw-r--r--default_images/res/sx03228.pngbin0 -> 455 bytes
-rw-r--r--default_images/res/sx03236.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03237.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx03239.pngbin0 -> 273 bytes
-rw-r--r--default_images/res/sx03241.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sx03242.pngbin0 -> 434 bytes
-rw-r--r--default_images/res/sx03243.pngbin0 -> 297 bytes
-rw-r--r--default_images/res/sx03244.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/sx03245.pngbin0 -> 632 bytes
-rw-r--r--default_images/res/sx03246.pngbin0 -> 653 bytes
-rw-r--r--default_images/res/sx03247.pngbin0 -> 395 bytes
-rw-r--r--default_images/res/sx03248.pngbin0 -> 487 bytes
-rw-r--r--default_images/res/sx03249.pngbin0 -> 577 bytes
-rw-r--r--default_images/res/sx03250.pngbin0 -> 539 bytes
-rw-r--r--default_images/res/sx03251.pngbin0 -> 532 bytes
-rw-r--r--default_images/res/sx03252.pngbin0 -> 707 bytes
-rw-r--r--default_images/res/sx03253.pngbin0 -> 626 bytes
-rw-r--r--default_images/res/sx03254.pngbin0 -> 567 bytes
-rw-r--r--default_images/res/sx03255.pngbin0 -> 562 bytes
-rw-r--r--default_images/res/sx03256.pngbin0 -> 360 bytes
-rw-r--r--default_images/res/sx10144.pngbin0 -> 424 bytes
-rw-r--r--default_images/res/sx10593.pngbin0 -> 322 bytes
-rw-r--r--default_images/res/sx10594.pngbin0 -> 397 bytes
-rw-r--r--default_images/res/sx10595.pngbin0 -> 358 bytes
-rw-r--r--default_images/res/sx10596.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/sx10597.pngbin0 -> 209 bytes
-rw-r--r--default_images/res/sx10598.pngbin0 -> 413 bytes
-rw-r--r--default_images/res/sx10599.pngbin0 -> 330 bytes
-rw-r--r--default_images/res/sx10600.pngbin0 -> 571 bytes
-rw-r--r--default_images/res/sx10601.pngbin0 -> 553 bytes
-rw-r--r--default_images/res/sx10602.pngbin0 -> 202 bytes
-rw-r--r--default_images/res/sx10603.pngbin0 -> 244 bytes
-rw-r--r--default_images/res/sx10604.pngbin0 -> 516 bytes
-rw-r--r--default_images/res/sx10605.pngbin0 -> 540 bytes
-rw-r--r--default_images/res/sx10607.pngbin0 -> 553 bytes
-rw-r--r--default_images/res/sx10704.pngbin0 -> 404 bytes
-rw-r--r--default_images/res/sx10705.pngbin0 -> 564 bytes
-rw-r--r--default_images/res/sx10706.pngbin0 -> 220 bytes
-rw-r--r--default_images/res/sx10707.pngbin0 -> 455 bytes
-rw-r--r--default_images/res/sx10708.pngbin0 -> 312 bytes
-rw-r--r--default_images/res/sx10710.pngbin0 -> 457 bytes
-rw-r--r--default_images/res/sx10715.pngbin0 -> 265 bytes
-rw-r--r--default_images/res/sx10728.pngbin0 -> 323 bytes
-rw-r--r--default_images/res/sx10757.pngbin0 -> 477 bytes
-rw-r--r--default_images/res/sx10768.pngbin0 -> 390 bytes
-rw-r--r--default_images/res/sx10769.pngbin0 -> 381 bytes
-rw-r--r--default_images/res/sx16670.pngbin0 -> 583 bytes
-rw-r--r--default_images/res/sx18002.pngbin0 -> 233 bytes
-rw-r--r--default_images/res/sx18003.pngbin0 -> 215 bytes
-rw-r--r--default_images/res/sx18013.pngbin0 -> 380 bytes
-rw-r--r--default_images/res/sx18022.pngbin0 -> 306 bytes
-rw-r--r--default_images/res/sx18027.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sxh03123.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/sxh03124.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03125.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/sxh03126.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/sxh03127.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sxh03128.pngbin0 -> 309 bytes
-rw-r--r--default_images/res/sxh03129.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/sxh03130.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sxh03131.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sxh03132.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sxh03134.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03135.pngbin0 -> 120 bytes
-rw-r--r--default_images/res/sxh03136.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/sxh03137.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/sxh03138.pngbin0 -> 169 bytes
-rw-r--r--default_images/res/sxh03139.pngbin0 -> 339 bytes
-rw-r--r--default_images/res/sxh03140.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/sxh03141.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/sxh03142.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03144.pngbin0 -> 135 bytes
-rw-r--r--default_images/res/sxh03145.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03150.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/sxh03151.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/sxh03152.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/sxh03153.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/sxh03154.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/sxh03155.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/sxh03156.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/sxh03157.pngbin0 -> 170 bytes
-rw-r--r--default_images/res/sxh03158.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/sxh03159.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03160.pngbin0 -> 137 bytes
-rw-r--r--default_images/res/sxh03161.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/sxh03162.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/sxh03163.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/sxh03164.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/sxh03165.pngbin0 -> 159 bytes
-rw-r--r--default_images/res/sxh03166.pngbin0 -> 185 bytes
-rw-r--r--default_images/res/sxh03167.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sxh03168.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03187.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03188.pngbin0 -> 127 bytes
-rw-r--r--default_images/res/sxh03189.pngbin0 -> 103 bytes
-rw-r--r--default_images/res/sxh03190.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/sxh03193.pngbin0 -> 134 bytes
-rw-r--r--default_images/res/sxh03198.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03201.pngbin0 -> 157 bytes
-rw-r--r--default_images/res/sxh03202.pngbin0 -> 147 bytes
-rw-r--r--default_images/res/sxh03203.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03204.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03205.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03206.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03214.pngbin0 -> 142 bytes
-rw-r--r--default_images/res/sxh03216.pngbin0 -> 420 bytes
-rw-r--r--default_images/res/sxh03217.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/sxh03218.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/sxh03219.pngbin0 -> 151 bytes
-rw-r--r--default_images/res/sxh03220.pngbin0 -> 140 bytes
-rw-r--r--default_images/res/sxh03221.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/sxh03222.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/sxh03226.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/sxh03227.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/sxh03228.pngbin0 -> 136 bytes
-rw-r--r--default_images/res/sxh03236.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03237.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03239.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/sxh03241.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh03242.pngbin0 -> 260 bytes
-rw-r--r--default_images/res/sxh03243.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/sxh03244.pngbin0 -> 145 bytes
-rw-r--r--default_images/res/sxh03245.pngbin0 -> 415 bytes
-rw-r--r--default_images/res/sxh03246.pngbin0 -> 461 bytes
-rw-r--r--default_images/res/sxh03247.pngbin0 -> 392 bytes
-rw-r--r--default_images/res/sxh03248.pngbin0 -> 304 bytes
-rw-r--r--default_images/res/sxh03249.pngbin0 -> 343 bytes
-rw-r--r--default_images/res/sxh03250.pngbin0 -> 287 bytes
-rw-r--r--default_images/res/sxh03251.pngbin0 -> 284 bytes
-rw-r--r--default_images/res/sxh03252.pngbin0 -> 479 bytes
-rw-r--r--default_images/res/sxh03253.pngbin0 -> 351 bytes
-rw-r--r--default_images/res/sxh03254.pngbin0 -> 305 bytes
-rw-r--r--default_images/res/sxh03255.pngbin0 -> 303 bytes
-rw-r--r--default_images/res/sxh03256.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/sxh10144.pngbin0 -> 153 bytes
-rw-r--r--default_images/res/sxh10593.pngbin0 -> 116 bytes
-rw-r--r--default_images/res/sxh10594.pngbin0 -> 100 bytes
-rw-r--r--default_images/res/sxh10595.pngbin0 -> 128 bytes
-rw-r--r--default_images/res/sxh10596.pngbin0 -> 130 bytes
-rw-r--r--default_images/res/sxh10597.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/sxh10598.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/sxh10599.pngbin0 -> 115 bytes
-rw-r--r--default_images/res/sxh10600.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/sxh10601.pngbin0 -> 129 bytes
-rw-r--r--default_images/res/sxh10602.pngbin0 -> 122 bytes
-rw-r--r--default_images/res/sxh10603.pngbin0 -> 75 bytes
-rw-r--r--default_images/res/sxh10604.pngbin0 -> 121 bytes
-rw-r--r--default_images/res/sxh10605.pngbin0 -> 132 bytes
-rw-r--r--default_images/res/sxh10607.pngbin0 -> 107 bytes
-rw-r--r--default_images/res/sxh10704.pngbin0 -> 118 bytes
-rw-r--r--default_images/res/sxh10705.pngbin0 -> 161 bytes
-rw-r--r--default_images/res/sxh10706.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/sxh10707.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/sxh10708.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/sxh10710.pngbin0 -> 133 bytes
-rw-r--r--default_images/res/sxh10715.pngbin0 -> 109 bytes
-rw-r--r--default_images/res/sxh10728.pngbin0 -> 117 bytes
-rw-r--r--default_images/res/sxh10757.pngbin0 -> 150 bytes
-rw-r--r--default_images/res/sxh10768.pngbin0 -> 108 bytes
-rw-r--r--default_images/res/sxh10769.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/sxh18002.pngbin0 -> 98 bytes
-rw-r--r--default_images/res/sxh18003.pngbin0 -> 89 bytes
-rw-r--r--default_images/res/sxh18013.pngbin0 -> 139 bytes
-rw-r--r--default_images/res/sxh18022.pngbin0 -> 104 bytes
-rw-r--r--default_images/res/sxh18027.pngbin0 -> 110 bytes
-rw-r--r--default_images/res/target.pngbin0 -> 497 bytes
-rw-r--r--default_images/res/target_hc.pngbin0 -> 144 bytes
-rw-r--r--default_images/res/tb01.pngbin0 -> 331 bytes
-rw-r--r--default_images/res/tb02.pngbin0 -> 383 bytes
-rw-r--r--default_images/res/tb03.pngbin0 -> 352 bytes
-rw-r--r--default_images/res/tb04.pngbin0 -> 435 bytes
-rw-r--r--default_images/res/tb05.pngbin0 -> 406 bytes
-rw-r--r--default_images/res/tbh01.pngbin0 -> 114 bytes
-rw-r--r--default_images/res/tbh02.pngbin0 -> 138 bytes
-rw-r--r--default_images/res/tbh03.pngbin0 -> 131 bytes
-rw-r--r--default_images/res/tbh04.pngbin0 -> 152 bytes
-rw-r--r--default_images/res/tbh05.pngbin0 -> 146 bytes
-rw-r--r--default_images/res/template_32.pngbin0 -> 1180 bytes
-rw-r--r--default_images/res/versionwarning.pngbin0 -> 543 bytes
-rw-r--r--default_images/res/xml_16.pngbin0 -> 496 bytes
-rw-r--r--default_images/res/xml_16_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/sc/res/date.pngbin0 -> 429 bytes
-rw-r--r--default_images/sc/res/date_h.pngbin0 -> 120 bytes
-rw-r--r--default_images/sc/res/dropcopy.pngbin0 -> 425 bytes
-rw-r--r--default_images/sc/res/dropcopy_h.pngbin0 -> 124 bytes
-rw-r--r--default_images/sc/res/droplink.pngbin0 -> 302 bytes
-rw-r--r--default_images/sc/res/droplink_h.pngbin0 -> 99 bytes
-rw-r--r--default_images/sc/res/dropurl.pngbin0 -> 314 bytes
-rw-r--r--default_images/sc/res/dropurl_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/sc/res/file.pngbin0 -> 463 bytes
-rw-r--r--default_images/sc/res/file_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/sc/res/fx.pngbin0 -> 280 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lc26047.pngbin0 -> 584 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lc26048.pngbin0 -> 515 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lc26049.pngbin0 -> 151 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lc26050.pngbin0 -> 551 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lc26051.pngbin0 -> 410 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lch26047.pngbin0 -> 197 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lch26048.pngbin0 -> 135 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lch26049.pngbin0 -> 83 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lch26050.pngbin0 -> 158 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/lch26051.pngbin0 -> 128 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sc26047.pngbin0 -> 357 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sc26048.pngbin0 -> 329 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sc26049.pngbin0 -> 119 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sc26050.pngbin0 -> 296 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sc26051.pngbin0 -> 266 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sch26047.pngbin0 -> 154 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sch26048.pngbin0 -> 117 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sch26049.pngbin0 -> 77 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sch26050.pngbin0 -> 134 bytes
-rw-r--r--default_images/sc/res/imglst/apptbx/sch26051.pngbin0 -> 116 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou01.pngbin0 -> 95 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou010.pngbin0 -> 95 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou011.pngbin0 -> 83 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou012.pngbin0 -> 83 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou02.pngbin0 -> 114 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou03.pngbin0 -> 106 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou04.pngbin0 -> 110 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou05.pngbin0 -> 106 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou06.pngbin0 -> 113 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou07.pngbin0 -> 100 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou08.pngbin0 -> 104 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ou09.pngbin0 -> 103 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh01.pngbin0 -> 96 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh010.pngbin0 -> 90 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh011.pngbin0 -> 83 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh012.pngbin0 -> 83 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh02.pngbin0 -> 108 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh03.pngbin0 -> 100 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh04.pngbin0 -> 103 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh05.pngbin0 -> 101 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh06.pngbin0 -> 105 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh07.pngbin0 -> 101 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh08.pngbin0 -> 98 bytes
-rw-r--r--default_images/sc/res/imglst/dbgui/ouh09.pngbin0 -> 97 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/na010.pngbin0 -> 526 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/na011.pngbin0 -> 409 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/na03.pngbin0 -> 287 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/na05.pngbin0 -> 421 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/na06.pngbin0 -> 422 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/na07.pngbin0 -> 221 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/na09.pngbin0 -> 170 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nah010.pngbin0 -> 137 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nah011.pngbin0 -> 147 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nah03.pngbin0 -> 122 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nah05.pngbin0 -> 147 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nah06.pngbin0 -> 145 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nah07.pngbin0 -> 148 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nah09.pngbin0 -> 110 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc01.pngbin0 -> 244 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc02.pngbin0 -> 260 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc03.pngbin0 -> 751 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc04.pngbin0 -> 517 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc05.pngbin0 -> 360 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc06.pngbin0 -> 430 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc07.pngbin0 -> 302 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nc08.pngbin0 -> 517 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch01.pngbin0 -> 75 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch02.pngbin0 -> 111 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch03.pngbin0 -> 174 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch04.pngbin0 -> 126 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch05.pngbin0 -> 101 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch06.pngbin0 -> 128 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch07.pngbin0 -> 99 bytes
-rw-r--r--default_images/sc/res/imglst/navipi/nch08.pngbin0 -> 126 bytes
-rw-r--r--default_images/sc/res/lftrgt.pngbin0 -> 452 bytes
-rw-r--r--default_images/sc/res/lftrgt_h.pngbin0 -> 364 bytes
-rw-r--r--default_images/sc/res/page.pngbin0 -> 512 bytes
-rw-r--r--default_images/sc/res/page_h.pngbin0 -> 118 bytes
-rw-r--r--default_images/sc/res/pages.pngbin0 -> 564 bytes
-rw-r--r--default_images/sc/res/pages_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/sc/res/popup_select_current.pngbin0 -> 265 bytes
-rw-r--r--default_images/sc/res/popup_unselect_current.pngbin0 -> 182 bytes
-rw-r--r--default_images/sc/res/sf01.pngbin0 -> 442 bytes
-rw-r--r--default_images/sc/res/sf02.pngbin0 -> 417 bytes
-rw-r--r--default_images/sc/res/sfh01.pngbin0 -> 116 bytes
-rw-r--r--default_images/sc/res/sfh02.pngbin0 -> 122 bytes
-rw-r--r--default_images/sc/res/table.pngbin0 -> 289 bytes
-rw-r--r--default_images/sc/res/table_h.pngbin0 -> 122 bytes
-rw-r--r--default_images/sc/res/text.pngbin0 -> 558 bytes
-rw-r--r--default_images/sc/res/text_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/sc/res/time.pngbin0 -> 574 bytes
-rw-r--r--default_images/sc/res/time_h.pngbin0 -> 164 bytes
-rw-r--r--default_images/sc/res/topdown.pngbin0 -> 523 bytes
-rw-r--r--default_images/sc/res/topdown_h.pngbin0 -> 409 bytes
-rw-r--r--default_images/sd/res/breakplayingblue_16.pngbin0 -> 455 bytes
-rw-r--r--default_images/sd/res/breakplayingblue_16_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/sd/res/chart.pngbin0 -> 1608 bytes
-rw-r--r--default_images/sd/res/chkpage0.pngbin0 -> 645 bytes
-rw-r--r--default_images/sd/res/chkpage0_h.pngbin0 -> 124 bytes
-rw-r--r--default_images/sd/res/chkpage1.pngbin0 -> 910 bytes
-rw-r--r--default_images/sd/res/chkpage1_h.pngbin0 -> 159 bytes
-rw-r--r--default_images/sd/res/click_16.pngbin0 -> 312 bytes
-rw-r--r--default_images/sd/res/click_16_h.pngbin0 -> 151 bytes
-rw-r--r--default_images/sd/res/comments_indicator.pngbin0 -> 95 bytes
-rw-r--r--default_images/sd/res/comments_indicator_hc.pngbin0 -> 95 bytes
-rw-r--r--default_images/sd/res/del1bmp.pngbin0 -> 168 bytes
-rw-r--r--default_images/sd/res/del1bmp_h.pngbin0 -> 121 bytes
-rw-r--r--default_images/sd/res/delall.pngbin0 -> 188 bytes
-rw-r--r--default_images/sd/res/delall_h.pngbin0 -> 143 bytes
-rw-r--r--default_images/sd/res/dlgass1.pngbin0 -> 8730 bytes
-rw-r--r--default_images/sd/res/dlgass2.pngbin0 -> 7161 bytes
-rw-r--r--default_images/sd/res/dlgass3.pngbin0 -> 5637 bytes
-rw-r--r--default_images/sd/res/dlgass4.pngbin0 -> 6737 bytes
-rw-r--r--default_images/sd/res/dlgass5.pngbin0 -> 5816 bytes
-rw-r--r--default_images/sd/res/docclose.pngbin0 -> 154 bytes
-rw-r--r--default_images/sd/res/docclose_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/sd/res/docopen.pngbin0 -> 165 bytes
-rw-r--r--default_images/sd/res/docopen_h.pngbin0 -> 148 bytes
-rw-r--r--default_images/sd/res/doctext.pngbin0 -> 120 bytes
-rw-r--r--default_images/sd/res/doctext_h.pngbin0 -> 118 bytes
-rw-r--r--default_images/sd/res/effect_16.pngbin0 -> 230 bytes
-rw-r--r--default_images/sd/res/effect_16_h.pngbin0 -> 117 bytes
-rw-r--r--default_images/sd/res/effectfade_16.pngbin0 -> 309 bytes
-rw-r--r--default_images/sd/res/effectfade_16_h.pngbin0 -> 129 bytes
-rw-r--r--default_images/sd/res/effectole_16.pngbin0 -> 349 bytes
-rw-r--r--default_images/sd/res/effectole_16_h.pngbin0 -> 142 bytes
-rw-r--r--default_images/sd/res/effectpath_16.pngbin0 -> 343 bytes
-rw-r--r--default_images/sd/res/effectpath_16_h.pngbin0 -> 136 bytes
-rw-r--r--default_images/sd/res/effectshape_16.pngbin0 -> 228 bytes
-rw-r--r--default_images/sd/res/effectshape_16_h.pngbin0 -> 128 bytes
-rw-r--r--default_images/sd/res/fade_effect_indicator.pngbin0 -> 129 bytes
-rw-r--r--default_images/sd/res/fade_effect_indicator_hc.pngbin0 -> 117 bytes
-rw-r--r--default_images/sd/res/foilh01.pngbin0 -> 403 bytes
-rw-r--r--default_images/sd/res/foilh01_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/sd/res/foilh02.pngbin0 -> 410 bytes
-rw-r--r--default_images/sd/res/foilh02_h.pngbin0 -> 144 bytes
-rw-r--r--default_images/sd/res/foilh03.pngbin0 -> 577 bytes
-rw-r--r--default_images/sd/res/foilh03_h.pngbin0 -> 183 bytes
-rw-r--r--default_images/sd/res/foilh04.pngbin0 -> 450 bytes
-rw-r--r--default_images/sd/res/foilh04_h.pngbin0 -> 146 bytes
-rw-r--r--default_images/sd/res/foilh06.pngbin0 -> 480 bytes
-rw-r--r--default_images/sd/res/foilh06_h.pngbin0 -> 150 bytes
-rw-r--r--default_images/sd/res/foilh09.pngbin0 -> 476 bytes
-rw-r--r--default_images/sd/res/foilh09_h.pngbin0 -> 156 bytes
-rw-r--r--default_images/sd/res/foiln01.pngbin0 -> 499 bytes
-rw-r--r--default_images/sd/res/foiln01_h.pngbin0 -> 181 bytes
-rw-r--r--default_images/sd/res/foilnone.pngbin0 -> 1184 bytes
-rw-r--r--default_images/sd/res/get1obj.pngbin0 -> 154 bytes
-rw-r--r--default_images/sd/res/get1obj_h.pngbin0 -> 133 bytes
-rw-r--r--default_images/sd/res/getallob.pngbin0 -> 176 bytes
-rw-r--r--default_images/sd/res/getallob_h.pngbin0 -> 156 bytes
-rw-r--r--default_images/sd/res/graphic.pngbin0 -> 571 bytes
-rw-r--r--default_images/sd/res/graphic_h.pngbin0 -> 130 bytes
-rw-r--r--default_images/sd/res/group.pngbin0 -> 365 bytes
-rw-r--r--default_images/sd/res/group_h.pngbin0 -> 134 bytes
-rw-r--r--default_images/sd/res/hlplhorz.pngbin0 -> 313 bytes
-rw-r--r--default_images/sd/res/hlplhorz_h.pngbin0 -> 108 bytes
-rw-r--r--default_images/sd/res/hlplvert.pngbin0 -> 335 bytes
-rw-r--r--default_images/sd/res/hlplvert_h.pngbin0 -> 114 bytes
-rw-r--r--default_images/sd/res/hlppoint.pngbin0 -> 393 bytes
-rw-r--r--default_images/sd/res/hlppoint_h.pngbin0 -> 134 bytes
-rw-r--r--default_images/sd/res/image.pngbin0 -> 6246 bytes
-rw-r--r--default_images/sd/res/imagelst/nv010.pngbin0 -> 321 bytes
-rw-r--r--default_images/sd/res/imagelst/nv02.pngbin0 -> 297 bytes
-rw-r--r--default_images/sd/res/imagelst/nv03.pngbin0 -> 337 bytes
-rw-r--r--default_images/sd/res/imagelst/nv04.pngbin0 -> 282 bytes
-rw-r--r--default_images/sd/res/imagelst/nv05.pngbin0 -> 285 bytes
-rw-r--r--default_images/sd/res/imagelst/nv06.pngbin0 -> 331 bytes
-rw-r--r--default_images/sd/res/imagelst/nv08.pngbin0 -> 435 bytes
-rw-r--r--default_images/sd/res/imagelst/nv09.pngbin0 -> 324 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh010.pngbin0 -> 127 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh02.pngbin0 -> 148 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh03.pngbin0 -> 119 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh04.pngbin0 -> 114 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh05.pngbin0 -> 108 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh06.pngbin0 -> 115 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh08.pngbin0 -> 124 bytes
-rw-r--r--default_images/sd/res/imagelst/nvh09.pngbin0 -> 100 bytes
-rw-r--r--default_images/sd/res/imagelst/sc27036.pngbin0 -> 779 bytes
-rw-r--r--default_images/sd/res/imagelst/sf01.pngbin0 -> 421 bytes
-rw-r--r--default_images/sd/res/imagelst/sf02.pngbin0 -> 438 bytes
-rw-r--r--default_images/sd/res/imagelst/sfh01.pngbin0 -> 149 bytes
-rw-r--r--default_images/sd/res/imagelst/sfh02.pngbin0 -> 144 bytes
-rw-r--r--default_images/sd/res/layout_empty.pngbin0 -> 269 bytes
-rw-r--r--default_images/sd/res/layout_empty_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/sd/res/layout_head01.pngbin0 -> 382 bytes
-rw-r--r--default_images/sd/res/layout_head01_h.pngbin0 -> 163 bytes
-rw-r--r--default_images/sd/res/layout_head02.pngbin0 -> 467 bytes
-rw-r--r--default_images/sd/res/layout_head02_h.pngbin0 -> 163 bytes
-rw-r--r--default_images/sd/res/layout_head02a.pngbin0 -> 505 bytes
-rw-r--r--default_images/sd/res/layout_head02a_h.pngbin0 -> 177 bytes
-rw-r--r--default_images/sd/res/layout_head02b.pngbin0 -> 479 bytes
-rw-r--r--default_images/sd/res/layout_head02b_h.pngbin0 -> 165 bytes
-rw-r--r--default_images/sd/res/layout_head03.pngbin0 -> 494 bytes
-rw-r--r--default_images/sd/res/layout_head03_h.pngbin0 -> 178 bytes
-rw-r--r--default_images/sd/res/layout_head03a.pngbin0 -> 515 bytes
-rw-r--r--default_images/sd/res/layout_head03a_h.pngbin0 -> 178 bytes
-rw-r--r--default_images/sd/res/layout_head03b.pngbin0 -> 530 bytes
-rw-r--r--default_images/sd/res/layout_head03b_h.pngbin0 -> 187 bytes
-rw-r--r--default_images/sd/res/layout_head03c.pngbin0 -> 529 bytes
-rw-r--r--default_images/sd/res/layout_head03c_h.pngbin0 -> 186 bytes
-rw-r--r--default_images/sd/res/layout_head04.pngbin0 -> 523 bytes
-rw-r--r--default_images/sd/res/layout_head04_h.pngbin0 -> 180 bytes
-rw-r--r--default_images/sd/res/layout_head06.pngbin0 -> 509 bytes
-rw-r--r--default_images/sd/res/layout_head06_h.pngbin0 -> 181 bytes
-rw-r--r--default_images/sd/res/layout_textonly.pngbin0 -> 454 bytes
-rw-r--r--default_images/sd/res/layout_textonly_h.pngbin0 -> 178 bytes
-rw-r--r--default_images/sd/res/layout_vertical01.pngbin0 -> 540 bytes
-rw-r--r--default_images/sd/res/layout_vertical01_h.pngbin0 -> 169 bytes
-rw-r--r--default_images/sd/res/layout_vertical02.pngbin0 -> 563 bytes
-rw-r--r--default_images/sd/res/layout_vertical02_h.pngbin0 -> 179 bytes
-rw-r--r--default_images/sd/res/minus_h.pngbin0 -> 76 bytes
-rw-r--r--default_images/sd/res/mspgmode.pngbin0 -> 239 bytes
-rw-r--r--default_images/sd/res/mspgmode_h.pngbin0 -> 111 bytes
-rw-r--r--default_images/sd/res/object.pngbin0 -> 1912 bytes
-rw-r--r--default_images/sd/res/objects.pngbin0 -> 307 bytes
-rw-r--r--default_images/sd/res/objects_h.pngbin0 -> 105 bytes
-rw-r--r--default_images/sd/res/objekt.pngbin0 -> 302 bytes
-rw-r--r--default_images/sd/res/objekt_h.pngbin0 -> 140 bytes
-rw-r--r--default_images/sd/res/ole.pngbin0 -> 517 bytes
-rw-r--r--default_images/sd/res/ole_h.pngbin0 -> 146 bytes
-rw-r--r--default_images/sd/res/orgchart.pngbin0 -> 1063 bytes
-rw-r--r--default_images/sd/res/page.pngbin0 -> 353 bytes
-rw-r--r--default_images/sd/res/page_h.pngbin0 -> 114 bytes
-rw-r--r--default_images/sd/res/pageexcl.pngbin0 -> 326 bytes
-rw-r--r--default_images/sd/res/pageexcl_h.pngbin0 -> 108 bytes
-rw-r--r--default_images/sd/res/pagemode.pngbin0 -> 219 bytes
-rw-r--r--default_images/sd/res/pagemode_h.pngbin0 -> 103 bytes
-rw-r--r--default_images/sd/res/pageobjs.pngbin0 -> 460 bytes
-rw-r--r--default_images/sd/res/pageobjs_h.pngbin0 -> 140 bytes
-rw-r--r--default_images/sd/res/pagobjex.pngbin0 -> 409 bytes
-rw-r--r--default_images/sd/res/pagobjex_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/sd/res/pipette.pngbin0 -> 344 bytes
-rw-r--r--default_images/sd/res/pipette_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/sd/res/placeholder_chart_large.pngbin0 -> 202 bytes
-rw-r--r--default_images/sd/res/placeholder_chart_large_hover.pngbin0 -> 202 bytes
-rw-r--r--default_images/sd/res/placeholder_chart_small.pngbin0 -> 181 bytes
-rw-r--r--default_images/sd/res/placeholder_chart_small_hover.pngbin0 -> 181 bytes
-rw-r--r--default_images/sd/res/placeholder_image_large.pngbin0 -> 207 bytes
-rw-r--r--default_images/sd/res/placeholder_image_large_hover.pngbin0 -> 210 bytes
-rw-r--r--default_images/sd/res/placeholder_image_small.pngbin0 -> 172 bytes
-rw-r--r--default_images/sd/res/placeholder_image_small_hover.pngbin0 -> 172 bytes
-rw-r--r--default_images/sd/res/placeholder_movie_large.pngbin0 -> 219 bytes
-rw-r--r--default_images/sd/res/placeholder_movie_large_hover.pngbin0 -> 217 bytes
-rw-r--r--default_images/sd/res/placeholder_movie_small.pngbin0 -> 184 bytes
-rw-r--r--default_images/sd/res/placeholder_movie_small_hover.pngbin0 -> 184 bytes
-rw-r--r--default_images/sd/res/placeholder_table_large.pngbin0 -> 188 bytes
-rw-r--r--default_images/sd/res/placeholder_table_large_hover.pngbin0 -> 192 bytes
-rw-r--r--default_images/sd/res/placeholder_table_small.pngbin0 -> 164 bytes
-rw-r--r--default_images/sd/res/placeholder_table_small_hover.pngbin0 -> 164 bytes
-rw-r--r--default_images/sd/res/playblue_16.pngbin0 -> 534 bytes
-rw-r--r--default_images/sd/res/playblue_16_h.pngbin0 -> 129 bytes
-rw-r--r--default_images/sd/res/plus_h.pngbin0 -> 81 bytes
-rw-r--r--default_images/sd/res/pubdes.pngbin0 -> 1665 bytes
-rw-r--r--default_images/sd/res/pubdes2.pngbin0 -> 2075 bytes
-rw-r--r--default_images/sd/res/pubdes3.pngbin0 -> 3232 bytes
-rw-r--r--default_images/sd/res/pubdes4.pngbin0 -> 3104 bytes
-rw-r--r--default_images/sd/res/pubdlg1.pngbin0 -> 11336 bytes
-rw-r--r--default_images/sd/res/pubdlg2.pngbin0 -> 10183 bytes
-rw-r--r--default_images/sd/res/pubdlg3.pngbin0 -> 12367 bytes
-rw-r--r--default_images/sd/res/pubdlg4.pngbin0 -> 10105 bytes
-rw-r--r--default_images/sd/res/pubdlg5.pngbin0 -> 12800 bytes
-rw-r--r--default_images/sd/res/stopplayingblue_16.pngbin0 -> 469 bytes
-rw-r--r--default_images/sd/res/stopplayingblue_16_h.pngbin0 -> 123 bytes
-rw-r--r--default_images/sd/res/table.pngbin0 -> 1058 bytes
-rw-r--r--default_images/sd/res/time_16.pngbin0 -> 564 bytes
-rw-r--r--default_images/sd/res/time_16_h.pngbin0 -> 161 bytes
-rw-r--r--default_images/sd/res/waiticon.pngbin0 -> 156 bytes
-rw-r--r--default_images/sfx2/res/128x128_calc_doc-p.pngbin0 -> 4782 bytes
-rw-r--r--default_images/sfx2/res/128x128_draw_doc-p.pngbin0 -> 6041 bytes
-rw-r--r--default_images/sfx2/res/128x128_impress_doc-p.pngbin0 -> 6180 bytes
-rw-r--r--default_images/sfx2/res/128x128_math_doc-p.pngbin0 -> 5807 bytes
-rw-r--r--default_images/sfx2/res/128x128_writer_doc-p.pngbin0 -> 3715 bytes
-rw-r--r--default_images/sfx2/res/an01.pngbin0 -> 6796 bytes
-rw-r--r--default_images/sfx2/res/an02.pngbin0 -> 6125 bytes
-rw-r--r--default_images/sfx2/res/an03.pngbin0 -> 5474 bytes
-rw-r--r--default_images/sfx2/res/an04.pngbin0 -> 4714 bytes
-rw-r--r--default_images/sfx2/res/an05.pngbin0 -> 3872 bytes
-rw-r--r--default_images/sfx2/res/an06.pngbin0 -> 2708 bytes
-rw-r--r--default_images/sfx2/res/closedoc.pngbin0 -> 162 bytes
-rw-r--r--default_images/sfx2/res/closedochc.pngbin0 -> 102 bytes
-rw-r--r--default_images/sfx2/res/command.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/deleterow.pngbin0 -> 125 bytes
-rw-r--r--default_images/sfx2/res/deleterow_h.pngbin0 -> 106 bytes
-rw-r--r--default_images/sfx2/res/dictate.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/doccl.pngbin0 -> 392 bytes
-rw-r--r--default_images/sfx2/res/doccl_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/sfx2/res/favourite.pngbin0 -> 434 bytes
-rw-r--r--default_images/sfx2/res/favourite_big.pngbin0 -> 631 bytes
-rw-r--r--default_images/sfx2/res/favourite_big_h.pngbin0 -> 150 bytes
-rw-r--r--default_images/sfx2/res/favourite_h.pngbin0 -> 134 bytes
-rw-r--r--default_images/sfx2/res/hlpbookclosed.pngbin0 -> 418 bytes
-rw-r--r--default_images/sfx2/res/hlpbookclosed_h.pngbin0 -> 171 bytes
-rw-r--r--default_images/sfx2/res/hlpbookopen.pngbin0 -> 546 bytes
-rw-r--r--default_images/sfx2/res/hlpbookopen_h.pngbin0 -> 199 bytes
-rw-r--r--default_images/sfx2/res/hlpdoc.pngbin0 -> 717 bytes
-rw-r--r--default_images/sfx2/res/hlpdoc_h.pngbin0 -> 142 bytes
-rw-r--r--default_images/sfx2/res/indexoff_big.pngbin0 -> 606 bytes
-rw-r--r--default_images/sfx2/res/indexoff_big_h.pngbin0 -> 153 bytes
-rw-r--r--default_images/sfx2/res/indexoff_small.pngbin0 -> 451 bytes
-rw-r--r--default_images/sfx2/res/indexoff_small_h.pngbin0 -> 138 bytes
-rw-r--r--default_images/sfx2/res/indexon_big.pngbin0 -> 601 bytes
-rw-r--r--default_images/sfx2/res/indexon_big_h.pngbin0 -> 149 bytes
-rw-r--r--default_images/sfx2/res/indexon_small.pngbin0 -> 446 bytes
-rw-r--r--default_images/sfx2/res/indexon_small_h.pngbin0 -> 133 bytes
-rw-r--r--default_images/sfx2/res/lco.pngbin0 -> 1592 bytes
-rw-r--r--default_images/sfx2/res/lmo.pngbin0 -> 1590 bytes
-rw-r--r--default_images/sfx2/res/ln01.pngbin0 -> 246 bytes
-rw-r--r--default_images/sfx2/res/ln010.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0100.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0101.pngbin0 -> 308 bytes
-rw-r--r--default_images/sfx2/res/ln0102.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0103.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0104.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0105.pngbin0 -> 1430 bytes
-rw-r--r--default_images/sfx2/res/ln0106.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0107.pngbin0 -> 625 bytes
-rw-r--r--default_images/sfx2/res/ln0108.pngbin0 -> 1218 bytes
-rw-r--r--default_images/sfx2/res/ln0109.pngbin0 -> 330 bytes
-rw-r--r--default_images/sfx2/res/ln011.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0110.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0111.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0112.pngbin0 -> 349 bytes
-rw-r--r--default_images/sfx2/res/ln0113.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0114.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0115.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0116.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0117.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0118.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0119.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln012.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0120.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0121.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0122.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0123.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0124.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0125.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln0126.pngbin0 -> 418 bytes
-rw-r--r--default_images/sfx2/res/ln013.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln014.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln015.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln016.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln017.pngbin0 -> 444 bytes
-rw-r--r--default_images/sfx2/res/ln018.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln019.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln02.pngbin0 -> 625 bytes
-rw-r--r--default_images/sfx2/res/ln020.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln021.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln022.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln023.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln024.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln025.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln026.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln027.pngbin0 -> 409 bytes
-rw-r--r--default_images/sfx2/res/ln028.pngbin0 -> 581 bytes
-rw-r--r--default_images/sfx2/res/ln029.pngbin0 -> 772 bytes
-rw-r--r--default_images/sfx2/res/ln03.pngbin0 -> 625 bytes
-rw-r--r--default_images/sfx2/res/ln030.pngbin0 -> 648 bytes
-rw-r--r--default_images/sfx2/res/ln031.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln032.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln033.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln034.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln035.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln036.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln037.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln038.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln039.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln04.pngbin0 -> 625 bytes
-rw-r--r--default_images/sfx2/res/ln040.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln041.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln042.pngbin0 -> 388 bytes
-rw-r--r--default_images/sfx2/res/ln043.pngbin0 -> 401 bytes
-rw-r--r--default_images/sfx2/res/ln044.pngbin0 -> 322 bytes
-rw-r--r--default_images/sfx2/res/ln045.pngbin0 -> 1418 bytes
-rw-r--r--default_images/sfx2/res/ln046.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln047.pngbin0 -> 448 bytes
-rw-r--r--default_images/sfx2/res/ln048.pngbin0 -> 1315 bytes
-rw-r--r--default_images/sfx2/res/ln049.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln05.pngbin0 -> 625 bytes
-rw-r--r--default_images/sfx2/res/ln050.pngbin0 -> 1218 bytes
-rw-r--r--default_images/sfx2/res/ln051.pngbin0 -> 371 bytes
-rw-r--r--default_images/sfx2/res/ln052.pngbin0 -> 1418 bytes
-rw-r--r--default_images/sfx2/res/ln053.pngbin0 -> 1315 bytes
-rw-r--r--default_images/sfx2/res/ln054.pngbin0 -> 1418 bytes
-rw-r--r--default_images/sfx2/res/ln055.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln056.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln057.pngbin0 -> 1418 bytes
-rw-r--r--default_images/sfx2/res/ln058.pngbin0 -> 370 bytes
-rw-r--r--default_images/sfx2/res/ln059.pngbin0 -> 1430 bytes
-rw-r--r--default_images/sfx2/res/ln06.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln060.pngbin0 -> 434 bytes
-rw-r--r--default_images/sfx2/res/ln061.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln062.pngbin0 -> 330 bytes
-rw-r--r--default_images/sfx2/res/ln063.pngbin0 -> 314 bytes
-rw-r--r--default_images/sfx2/res/ln064.pngbin0 -> 349 bytes
-rw-r--r--default_images/sfx2/res/ln065.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln066.pngbin0 -> 860 bytes
-rw-r--r--default_images/sfx2/res/ln067.pngbin0 -> 1315 bytes
-rw-r--r--default_images/sfx2/res/ln068.pngbin0 -> 350 bytes
-rw-r--r--default_images/sfx2/res/ln069.pngbin0 -> 1315 bytes
-rw-r--r--default_images/sfx2/res/ln07.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln070.pngbin0 -> 1418 bytes
-rw-r--r--default_images/sfx2/res/ln071.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln072.pngbin0 -> 332 bytes
-rw-r--r--default_images/sfx2/res/ln073.pngbin0 -> 1218 bytes
-rw-r--r--default_images/sfx2/res/ln074.pngbin0 -> 1418 bytes
-rw-r--r--default_images/sfx2/res/ln075.pngbin0 -> 1418 bytes
-rw-r--r--default_images/sfx2/res/ln076.pngbin0 -> 353 bytes
-rw-r--r--default_images/sfx2/res/ln077.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln078.pngbin0 -> 551 bytes
-rw-r--r--default_images/sfx2/res/ln079.pngbin0 -> 547 bytes
-rw-r--r--default_images/sfx2/res/ln08.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln080.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln081.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln082.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln083.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln084.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln085.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln086.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln087.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln088.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln089.pngbin0 -> 860 bytes
-rw-r--r--default_images/sfx2/res/ln09.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln090.pngbin0 -> 821 bytes
-rw-r--r--default_images/sfx2/res/ln091.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln092.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln093.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln094.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln095.pngbin0 -> 749 bytes
-rw-r--r--default_images/sfx2/res/ln096.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln097.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln098.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/ln099.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/lxrun.pngbin0 -> 315 bytes
-rw-r--r--default_images/sfx2/res/minus.pngbin0 -> 293 bytes
-rw-r--r--default_images/sfx2/res/newex.pngbin0 -> 427 bytes
-rw-r--r--default_images/sfx2/res/newex_h.pngbin0 -> 145 bytes
-rw-r--r--default_images/sfx2/res/phndial1.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/phndial2.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/phndis.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/phnidle.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/phnring1.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/phnring2.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/phnspk1.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/plus.pngbin0 -> 331 bytes
-rw-r--r--default_images/sfx2/res/pr01.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr010.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr011.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr012.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr013.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr014.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr015.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr016.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr02.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr03.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr04.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr05.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr06.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr07.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr08.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/pr09.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sco.pngbin0 -> 1051 bytes
-rw-r--r--default_images/sfx2/res/signet.pngbin0 -> 3529 bytes
-rw-r--r--default_images/sfx2/res/smo.pngbin0 -> 1051 bytes
-rw-r--r--default_images/sfx2/res/sn01.pngbin0 -> 454 bytes
-rw-r--r--default_images/sfx2/res/sn010.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0100.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0101.pngbin0 -> 252 bytes
-rw-r--r--default_images/sfx2/res/sn0102.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0103.pngbin0 -> 265 bytes
-rw-r--r--default_images/sfx2/res/sn0104.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0105.pngbin0 -> 271 bytes
-rw-r--r--default_images/sfx2/res/sn0106.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0107.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0108.pngbin0 -> 596 bytes
-rw-r--r--default_images/sfx2/res/sn0109.pngbin0 -> 268 bytes
-rw-r--r--default_images/sfx2/res/sn011.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0110.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0111.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0112.pngbin0 -> 255 bytes
-rw-r--r--default_images/sfx2/res/sn0113.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0114.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0115.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0116.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0117.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0118.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0119.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn012.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0120.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0121.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0122.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0123.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0124.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0125.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn0126.pngbin0 -> 253 bytes
-rw-r--r--default_images/sfx2/res/sn013.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn014.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn015.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn016.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn017.pngbin0 -> 510 bytes
-rw-r--r--default_images/sfx2/res/sn018.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn019.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn02.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn020.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn021.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn022.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn023.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn024.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn025.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn026.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn027.pngbin0 -> 335 bytes
-rw-r--r--default_images/sfx2/res/sn028.pngbin0 -> 433 bytes
-rw-r--r--default_images/sfx2/res/sn029.pngbin0 -> 534 bytes
-rw-r--r--default_images/sfx2/res/sn03.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn030.pngbin0 -> 392 bytes
-rw-r--r--default_images/sfx2/res/sn031.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn032.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn033.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn034.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn035.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn036.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn037.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn038.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn039.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn04.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn040.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn041.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn042.pngbin0 -> 272 bytes
-rw-r--r--default_images/sfx2/res/sn043.pngbin0 -> 286 bytes
-rw-r--r--default_images/sfx2/res/sn044.pngbin0 -> 271 bytes
-rw-r--r--default_images/sfx2/res/sn045.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn046.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn047.pngbin0 -> 317 bytes
-rw-r--r--default_images/sfx2/res/sn048.pngbin0 -> 701 bytes
-rw-r--r--default_images/sfx2/res/sn049.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn05.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn050.pngbin0 -> 596 bytes
-rw-r--r--default_images/sfx2/res/sn051.pngbin0 -> 271 bytes
-rw-r--r--default_images/sfx2/res/sn052.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn053.pngbin0 -> 701 bytes
-rw-r--r--default_images/sfx2/res/sn054.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn055.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn056.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn057.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn058.pngbin0 -> 276 bytes
-rw-r--r--default_images/sfx2/res/sn059.pngbin0 -> 271 bytes
-rw-r--r--default_images/sfx2/res/sn06.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn060.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn061.pngbin0 -> 265 bytes
-rw-r--r--default_images/sfx2/res/sn062.pngbin0 -> 268 bytes
-rw-r--r--default_images/sfx2/res/sn063.pngbin0 -> 269 bytes
-rw-r--r--default_images/sfx2/res/sn064.pngbin0 -> 160 bytes
-rw-r--r--default_images/sfx2/res/sn065.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn066.pngbin0 -> 484 bytes
-rw-r--r--default_images/sfx2/res/sn067.pngbin0 -> 701 bytes
-rw-r--r--default_images/sfx2/res/sn068.pngbin0 -> 265 bytes
-rw-r--r--default_images/sfx2/res/sn069.pngbin0 -> 701 bytes
-rw-r--r--default_images/sfx2/res/sn07.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn070.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn071.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn072.pngbin0 -> 267 bytes
-rw-r--r--default_images/sfx2/res/sn073.pngbin0 -> 596 bytes
-rw-r--r--default_images/sfx2/res/sn074.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn075.pngbin0 -> 725 bytes
-rw-r--r--default_images/sfx2/res/sn076.pngbin0 -> 262 bytes
-rw-r--r--default_images/sfx2/res/sn077.pngbin0 -> 701 bytes
-rw-r--r--default_images/sfx2/res/sn078.pngbin0 -> 314 bytes
-rw-r--r--default_images/sfx2/res/sn079.pngbin0 -> 280 bytes
-rw-r--r--default_images/sfx2/res/sn08.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn080.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn081.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn082.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn083.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn084.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn085.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn086.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn087.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn088.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn089.pngbin0 -> 484 bytes
-rw-r--r--default_images/sfx2/res/sn09.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn090.pngbin0 -> 485 bytes
-rw-r--r--default_images/sfx2/res/sn091.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn092.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn093.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn094.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn095.pngbin0 -> 525 bytes
-rw-r--r--default_images/sfx2/res/sn096.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn097.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn098.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/sn099.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/speekoff.pngbin0 -> 202 bytes
-rw-r--r--default_images/sfx2/res/styfam1.pngbin0 -> 470 bytes
-rw-r--r--default_images/sfx2/res/styfam1_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/sfx2/res/styfam2.pngbin0 -> 464 bytes
-rw-r--r--default_images/sfx2/res/styfam2_h.pngbin0 -> 121 bytes
-rw-r--r--default_images/sfx2/res/styfam3.pngbin0 -> 98 bytes
-rw-r--r--default_images/sfx2/res/styfam3_h.pngbin0 -> 82 bytes
-rw-r--r--default_images/sfx2/res/styfam4.pngbin0 -> 417 bytes
-rw-r--r--default_images/sfx2/res/styfam4_h.pngbin0 -> 122 bytes
-rw-r--r--default_images/starmath/res/al21801.pngbin0 -> 160 bytes
-rw-r--r--default_images/starmath/res/al21802.pngbin0 -> 137 bytes
-rw-r--r--default_images/starmath/res/al21803.pngbin0 -> 161 bytes
-rw-r--r--default_images/starmath/res/al21804.pngbin0 -> 151 bytes
-rw-r--r--default_images/starmath/res/al21805.pngbin0 -> 129 bytes
-rw-r--r--default_images/starmath/res/al21806.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/al21808.pngbin0 -> 121 bytes
-rw-r--r--default_images/starmath/res/al21809.pngbin0 -> 168 bytes
-rw-r--r--default_images/starmath/res/al21810.pngbin0 -> 147 bytes
-rw-r--r--default_images/starmath/res/al21811.pngbin0 -> 174 bytes
-rw-r--r--default_images/starmath/res/al21812.pngbin0 -> 164 bytes
-rw-r--r--default_images/starmath/res/al21813.pngbin0 -> 144 bytes
-rw-r--r--default_images/starmath/res/al21814.pngbin0 -> 144 bytes
-rw-r--r--default_images/starmath/res/al21821.pngbin0 -> 162 bytes
-rw-r--r--default_images/starmath/res/al21822.pngbin0 -> 166 bytes
-rw-r--r--default_images/starmath/res/al21823.pngbin0 -> 139 bytes
-rw-r--r--default_images/starmath/res/al21824.pngbin0 -> 150 bytes
-rw-r--r--default_images/starmath/res/al21825.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/al21826.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/alh21801.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/alh21802.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/alh21803.pngbin0 -> 144 bytes
-rw-r--r--default_images/starmath/res/alh21804.pngbin0 -> 129 bytes
-rw-r--r--default_images/starmath/res/alh21805.pngbin0 -> 110 bytes
-rw-r--r--default_images/starmath/res/alh21806.pngbin0 -> 113 bytes
-rw-r--r--default_images/starmath/res/alh21808.pngbin0 -> 121 bytes
-rw-r--r--default_images/starmath/res/alh21809.pngbin0 -> 146 bytes
-rw-r--r--default_images/starmath/res/alh21810.pngbin0 -> 126 bytes
-rw-r--r--default_images/starmath/res/alh21811.pngbin0 -> 159 bytes
-rw-r--r--default_images/starmath/res/alh21812.pngbin0 -> 139 bytes
-rw-r--r--default_images/starmath/res/alh21813.pngbin0 -> 122 bytes
-rw-r--r--default_images/starmath/res/alh21814.pngbin0 -> 126 bytes
-rw-r--r--default_images/starmath/res/alh21821.pngbin0 -> 141 bytes
-rw-r--r--default_images/starmath/res/alh21822.pngbin0 -> 150 bytes
-rw-r--r--default_images/starmath/res/alh21823.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/alh21824.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/alh21825.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/alh21826.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/ar_right.pngbin0 -> 989 bytes
-rw-r--r--default_images/starmath/res/ar_right_h.pngbin0 -> 171 bytes
-rw-r--r--default_images/starmath/res/at21701.pngbin0 -> 139 bytes
-rw-r--r--default_images/starmath/res/at21702.pngbin0 -> 139 bytes
-rw-r--r--default_images/starmath/res/at21703.pngbin0 -> 144 bytes
-rw-r--r--default_images/starmath/res/at21704.pngbin0 -> 140 bytes
-rw-r--r--default_images/starmath/res/at21705.pngbin0 -> 135 bytes
-rw-r--r--default_images/starmath/res/at21706.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/at21707.pngbin0 -> 145 bytes
-rw-r--r--default_images/starmath/res/at21708.pngbin0 -> 143 bytes
-rw-r--r--default_images/starmath/res/at21709.pngbin0 -> 140 bytes
-rw-r--r--default_images/starmath/res/at21710.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/at21711.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/at21712.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/at21713.pngbin0 -> 157 bytes
-rw-r--r--default_images/starmath/res/at21714.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/at21715.pngbin0 -> 157 bytes
-rw-r--r--default_images/starmath/res/at21716.pngbin0 -> 104 bytes
-rw-r--r--default_images/starmath/res/at21717.pngbin0 -> 358 bytes
-rw-r--r--default_images/starmath/res/at21718.pngbin0 -> 295 bytes
-rw-r--r--default_images/starmath/res/at21719.pngbin0 -> 1113 bytes
-rw-r--r--default_images/starmath/res/at21720.pngbin0 -> 900 bytes
-rw-r--r--default_images/starmath/res/at21722.pngbin0 -> 167 bytes
-rw-r--r--default_images/starmath/res/at21723.pngbin0 -> 173 bytes
-rw-r--r--default_images/starmath/res/at21724.pngbin0 -> 163 bytes
-rw-r--r--default_images/starmath/res/ath21701.pngbin0 -> 110 bytes
-rw-r--r--default_images/starmath/res/ath21702.pngbin0 -> 110 bytes
-rw-r--r--default_images/starmath/res/ath21703.pngbin0 -> 117 bytes
-rw-r--r--default_images/starmath/res/ath21704.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/ath21705.pngbin0 -> 112 bytes
-rw-r--r--default_images/starmath/res/ath21706.pngbin0 -> 114 bytes
-rw-r--r--default_images/starmath/res/ath21707.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/ath21708.pngbin0 -> 118 bytes
-rw-r--r--default_images/starmath/res/ath21709.pngbin0 -> 118 bytes
-rw-r--r--default_images/starmath/res/ath21710.pngbin0 -> 115 bytes
-rw-r--r--default_images/starmath/res/ath21711.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/ath21712.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/ath21713.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/ath21714.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/ath21715.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/ath21716.pngbin0 -> 111 bytes
-rw-r--r--default_images/starmath/res/ath21717.pngbin0 -> 140 bytes
-rw-r--r--default_images/starmath/res/ath21718.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/ath21719.pngbin0 -> 174 bytes
-rw-r--r--default_images/starmath/res/ath21720.pngbin0 -> 148 bytes
-rw-r--r--default_images/starmath/res/ath21722.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/ath21723.pngbin0 -> 139 bytes
-rw-r--r--default_images/starmath/res/ath21724.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/bi21301.pngbin0 -> 148 bytes
-rw-r--r--default_images/starmath/res/bi21302.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/bi21303.pngbin0 -> 150 bytes
-rw-r--r--default_images/starmath/res/bi21304.pngbin0 -> 147 bytes
-rw-r--r--default_images/starmath/res/bi21305.pngbin0 -> 156 bytes
-rw-r--r--default_images/starmath/res/bi21306.pngbin0 -> 154 bytes
-rw-r--r--default_images/starmath/res/bi21307.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/bi21308.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/bi21309.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/bi21310.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/bi21311.pngbin0 -> 153 bytes
-rw-r--r--default_images/starmath/res/bi21312.pngbin0 -> 152 bytes
-rw-r--r--default_images/starmath/res/bi21313.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/bi21314.pngbin0 -> 154 bytes
-rw-r--r--default_images/starmath/res/bi21315.pngbin0 -> 151 bytes
-rw-r--r--default_images/starmath/res/bi21316.pngbin0 -> 154 bytes
-rw-r--r--default_images/starmath/res/bi21322.pngbin0 -> 145 bytes
-rw-r--r--default_images/starmath/res/bi21323.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/bi21324.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/bi21325.pngbin0 -> 152 bytes
-rw-r--r--default_images/starmath/res/bi21326.pngbin0 -> 151 bytes
-rw-r--r--default_images/starmath/res/bih21301.pngbin0 -> 126 bytes
-rw-r--r--default_images/starmath/res/bih21302.pngbin0 -> 128 bytes
-rw-r--r--default_images/starmath/res/bih21303.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/bih21304.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/bih21305.pngbin0 -> 129 bytes
-rw-r--r--default_images/starmath/res/bih21306.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/bih21307.pngbin0 -> 131 bytes
-rw-r--r--default_images/starmath/res/bih21308.pngbin0 -> 126 bytes
-rw-r--r--default_images/starmath/res/bih21309.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/bih21310.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/bih21311.pngbin0 -> 131 bytes
-rw-r--r--default_images/starmath/res/bih21312.pngbin0 -> 131 bytes
-rw-r--r--default_images/starmath/res/bih21313.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/bih21314.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/bih21315.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/bih21316.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/bih21322.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/bih21323.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/bih21324.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/bih21325.pngbin0 -> 137 bytes
-rw-r--r--default_images/starmath/res/bih21326.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/co21901.pngbin0 -> 371 bytes
-rw-r--r--default_images/starmath/res/co21902.pngbin0 -> 82 bytes
-rw-r--r--default_images/starmath/res/co21903.pngbin0 -> 83 bytes
-rw-r--r--default_images/starmath/res/co21904.pngbin0 -> 140 bytes
-rw-r--r--default_images/starmath/res/co21905.pngbin0 -> 134 bytes
-rw-r--r--default_images/starmath/res/co21906.pngbin0 -> 145 bytes
-rw-r--r--default_images/starmath/res/co21907.pngbin0 -> 159 bytes
-rw-r--r--default_images/starmath/res/co21908.pngbin0 -> 141 bytes
-rw-r--r--default_images/starmath/res/co21909.pngbin0 -> 150 bytes
-rw-r--r--default_images/starmath/res/co21910.pngbin0 -> 156 bytes
-rw-r--r--default_images/starmath/res/co21911.pngbin0 -> 150 bytes
-rw-r--r--default_images/starmath/res/co21912.pngbin0 -> 143 bytes
-rw-r--r--default_images/starmath/res/co21916.pngbin0 -> 140 bytes
-rw-r--r--default_images/starmath/res/co21917.pngbin0 -> 144 bytes
-rw-r--r--default_images/starmath/res/co21918.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/coh21901.pngbin0 -> 113 bytes
-rw-r--r--default_images/starmath/res/coh21902.pngbin0 -> 84 bytes
-rw-r--r--default_images/starmath/res/coh21903.pngbin0 -> 85 bytes
-rw-r--r--default_images/starmath/res/coh21904.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/coh21905.pngbin0 -> 111 bytes
-rw-r--r--default_images/starmath/res/coh21906.pngbin0 -> 122 bytes
-rw-r--r--default_images/starmath/res/coh21907.pngbin0 -> 140 bytes
-rw-r--r--default_images/starmath/res/coh21908.pngbin0 -> 123 bytes
-rw-r--r--default_images/starmath/res/coh21909.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/coh21910.pngbin0 -> 135 bytes
-rw-r--r--default_images/starmath/res/coh21911.pngbin0 -> 128 bytes
-rw-r--r--default_images/starmath/res/coh21912.pngbin0 -> 126 bytes
-rw-r--r--default_images/starmath/res/coh21916.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/coh21917.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/coh21918.pngbin0 -> 128 bytes
-rw-r--r--default_images/starmath/res/dist101.pngbin0 -> 236 bytes
-rw-r--r--default_images/starmath/res/dist101_h.pngbin0 -> 224 bytes
-rw-r--r--default_images/starmath/res/dist102.pngbin0 -> 234 bytes
-rw-r--r--default_images/starmath/res/dist102_h.pngbin0 -> 220 bytes
-rw-r--r--default_images/starmath/res/dist103.pngbin0 -> 234 bytes
-rw-r--r--default_images/starmath/res/dist103_h.pngbin0 -> 221 bytes
-rw-r--r--default_images/starmath/res/dist104.pngbin0 -> 236 bytes
-rw-r--r--default_images/starmath/res/dist104_h.pngbin0 -> 222 bytes
-rw-r--r--default_images/starmath/res/dist11.pngbin0 -> 261 bytes
-rw-r--r--default_images/starmath/res/dist11_h.pngbin0 -> 243 bytes
-rw-r--r--default_images/starmath/res/dist12.pngbin0 -> 334 bytes
-rw-r--r--default_images/starmath/res/dist12_h.pngbin0 -> 324 bytes
-rw-r--r--default_images/starmath/res/dist13.pngbin0 -> 309 bytes
-rw-r--r--default_images/starmath/res/dist13_h.pngbin0 -> 290 bytes
-rw-r--r--default_images/starmath/res/dist21.pngbin0 -> 394 bytes
-rw-r--r--default_images/starmath/res/dist21_h.pngbin0 -> 375 bytes
-rw-r--r--default_images/starmath/res/dist22.pngbin0 -> 383 bytes
-rw-r--r--default_images/starmath/res/dist22_h.pngbin0 -> 363 bytes
-rw-r--r--default_images/starmath/res/dist31.pngbin0 -> 307 bytes
-rw-r--r--default_images/starmath/res/dist31_h.pngbin0 -> 293 bytes
-rw-r--r--default_images/starmath/res/dist32.pngbin0 -> 302 bytes
-rw-r--r--default_images/starmath/res/dist32_h.pngbin0 -> 290 bytes
-rw-r--r--default_images/starmath/res/dist41.pngbin0 -> 297 bytes
-rw-r--r--default_images/starmath/res/dist41_h.pngbin0 -> 286 bytes
-rw-r--r--default_images/starmath/res/dist42.pngbin0 -> 304 bytes
-rw-r--r--default_images/starmath/res/dist42_h.pngbin0 -> 287 bytes
-rw-r--r--default_images/starmath/res/dist51.pngbin0 -> 320 bytes
-rw-r--r--default_images/starmath/res/dist51_h.pngbin0 -> 300 bytes
-rw-r--r--default_images/starmath/res/dist52.pngbin0 -> 305 bytes
-rw-r--r--default_images/starmath/res/dist52_h.pngbin0 -> 283 bytes
-rw-r--r--default_images/starmath/res/dist61.pngbin0 -> 332 bytes
-rw-r--r--default_images/starmath/res/dist61_h.pngbin0 -> 320 bytes
-rw-r--r--default_images/starmath/res/dist62.pngbin0 -> 305 bytes
-rw-r--r--default_images/starmath/res/dist62_h.pngbin0 -> 303 bytes
-rw-r--r--default_images/starmath/res/dist71.pngbin0 -> 312 bytes
-rw-r--r--default_images/starmath/res/dist71_h.pngbin0 -> 312 bytes
-rw-r--r--default_images/starmath/res/dist72.pngbin0 -> 314 bytes
-rw-r--r--default_images/starmath/res/dist72_h.pngbin0 -> 313 bytes
-rw-r--r--default_images/starmath/res/dist81.pngbin0 -> 351 bytes
-rw-r--r--default_images/starmath/res/dist81_h.pngbin0 -> 339 bytes
-rw-r--r--default_images/starmath/res/dist82.pngbin0 -> 322 bytes
-rw-r--r--default_images/starmath/res/dist82_h.pngbin0 -> 302 bytes
-rw-r--r--default_images/starmath/res/dist91.pngbin0 -> 336 bytes
-rw-r--r--default_images/starmath/res/dist91_h.pngbin0 -> 325 bytes
-rw-r--r--default_images/starmath/res/dist92.pngbin0 -> 357 bytes
-rw-r--r--default_images/starmath/res/dist92_h.pngbin0 -> 349 bytes
-rw-r--r--default_images/starmath/res/fo21601.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/fo21602.pngbin0 -> 151 bytes
-rw-r--r--default_images/starmath/res/fo21603.pngbin0 -> 136 bytes
-rw-r--r--default_images/starmath/res/fo21604.pngbin0 -> 135 bytes
-rw-r--r--default_images/starmath/res/fo21605.pngbin0 -> 144 bytes
-rw-r--r--default_images/starmath/res/fo21606.pngbin0 -> 148 bytes
-rw-r--r--default_images/starmath/res/fo21607.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/fo21609.pngbin0 -> 161 bytes
-rw-r--r--default_images/starmath/res/fo21610.pngbin0 -> 170 bytes
-rw-r--r--default_images/starmath/res/fo21611.pngbin0 -> 170 bytes
-rw-r--r--default_images/starmath/res/fo21613.pngbin0 -> 161 bytes
-rw-r--r--default_images/starmath/res/fo21614.pngbin0 -> 150 bytes
-rw-r--r--default_images/starmath/res/fo21615.pngbin0 -> 152 bytes
-rw-r--r--default_images/starmath/res/foh21601.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/foh21602.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/foh21603.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/foh21604.pngbin0 -> 123 bytes
-rw-r--r--default_images/starmath/res/foh21605.pngbin0 -> 129 bytes
-rw-r--r--default_images/starmath/res/foh21606.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/foh21607.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/foh21609.pngbin0 -> 143 bytes
-rw-r--r--default_images/starmath/res/foh21610.pngbin0 -> 143 bytes
-rw-r--r--default_images/starmath/res/foh21611.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/foh21613.pngbin0 -> 141 bytes
-rw-r--r--default_images/starmath/res/foh21614.pngbin0 -> 131 bytes
-rw-r--r--default_images/starmath/res/foh21615.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/fu21501.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/fu21502.pngbin0 -> 137 bytes
-rw-r--r--default_images/starmath/res/fu21503.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/fu21504.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/fu21505.pngbin0 -> 136 bytes
-rw-r--r--default_images/starmath/res/fu21506.pngbin0 -> 96 bytes
-rw-r--r--default_images/starmath/res/fu21507.pngbin0 -> 134 bytes
-rw-r--r--default_images/starmath/res/fu21508.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/fu21509.pngbin0 -> 112 bytes
-rw-r--r--default_images/starmath/res/fu21510.pngbin0 -> 116 bytes
-rw-r--r--default_images/starmath/res/fu21511.pngbin0 -> 128 bytes
-rw-r--r--default_images/starmath/res/fu21512.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/fu21513.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/fu21514.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/fu21515.pngbin0 -> 136 bytes
-rw-r--r--default_images/starmath/res/fu21516.pngbin0 -> 134 bytes
-rw-r--r--default_images/starmath/res/fu21517.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/fu21518.pngbin0 -> 141 bytes
-rw-r--r--default_images/starmath/res/fu21519.pngbin0 -> 137 bytes
-rw-r--r--default_images/starmath/res/fu21520.pngbin0 -> 136 bytes
-rw-r--r--default_images/starmath/res/fu21521.pngbin0 -> 146 bytes
-rw-r--r--default_images/starmath/res/fu21522.pngbin0 -> 148 bytes
-rw-r--r--default_images/starmath/res/fu21523.pngbin0 -> 141 bytes
-rw-r--r--default_images/starmath/res/fu21524.pngbin0 -> 143 bytes
-rw-r--r--default_images/starmath/res/fu21908.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/fuh21501.pngbin0 -> 100 bytes
-rw-r--r--default_images/starmath/res/fuh21502.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/fuh21503.pngbin0 -> 118 bytes
-rw-r--r--default_images/starmath/res/fuh21504.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/fuh21505.pngbin0 -> 110 bytes
-rw-r--r--default_images/starmath/res/fuh21506.pngbin0 -> 95 bytes
-rw-r--r--default_images/starmath/res/fuh21507.pngbin0 -> 123 bytes
-rw-r--r--default_images/starmath/res/fuh21508.pngbin0 -> 111 bytes
-rw-r--r--default_images/starmath/res/fuh21509.pngbin0 -> 112 bytes
-rw-r--r--default_images/starmath/res/fuh21510.pngbin0 -> 115 bytes
-rw-r--r--default_images/starmath/res/fuh21511.pngbin0 -> 113 bytes
-rw-r--r--default_images/starmath/res/fuh21512.pngbin0 -> 113 bytes
-rw-r--r--default_images/starmath/res/fuh21513.pngbin0 -> 118 bytes
-rw-r--r--default_images/starmath/res/fuh21514.pngbin0 -> 122 bytes
-rw-r--r--default_images/starmath/res/fuh21515.pngbin0 -> 118 bytes
-rw-r--r--default_images/starmath/res/fuh21516.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/fuh21517.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/fuh21518.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/fuh21519.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/fuh21520.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/fuh21521.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/fuh21522.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/fuh21523.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/fuh21524.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/fuh21908.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/im21101.pngbin0 -> 166 bytes
-rw-r--r--default_images/starmath/res/im21102.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/im21103.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/im21104.pngbin0 -> 168 bytes
-rw-r--r--default_images/starmath/res/im21105.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/im21106.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/im21107.pngbin0 -> 172 bytes
-rw-r--r--default_images/starmath/res/im21108.pngbin0 -> 813 bytes
-rw-r--r--default_images/starmath/res/im21117.pngbin0 -> 159 bytes
-rw-r--r--default_images/starmath/res/imh21101.pngbin0 -> 150 bytes
-rw-r--r--default_images/starmath/res/imh21102.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/imh21103.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/imh21104.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/imh21105.pngbin0 -> 134 bytes
-rw-r--r--default_images/starmath/res/imh21106.pngbin0 -> 114 bytes
-rw-r--r--default_images/starmath/res/imh21107.pngbin0 -> 146 bytes
-rw-r--r--default_images/starmath/res/imh21108.pngbin0 -> 216 bytes
-rw-r--r--default_images/starmath/res/imh21117.pngbin0 -> 136 bytes
-rw-r--r--default_images/starmath/res/mi21608.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/mi21612.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/mi22003.pngbin0 -> 149 bytes
-rw-r--r--default_images/starmath/res/mi22004.pngbin0 -> 148 bytes
-rw-r--r--default_images/starmath/res/mi22005.pngbin0 -> 137 bytes
-rw-r--r--default_images/starmath/res/mi22006.pngbin0 -> 145 bytes
-rw-r--r--default_images/starmath/res/mi22007.pngbin0 -> 156 bytes
-rw-r--r--default_images/starmath/res/mi22008.pngbin0 -> 88 bytes
-rw-r--r--default_images/starmath/res/mi22009.pngbin0 -> 86 bytes
-rw-r--r--default_images/starmath/res/mi22010.pngbin0 -> 86 bytes
-rw-r--r--default_images/starmath/res/mi22011.pngbin0 -> 87 bytes
-rw-r--r--default_images/starmath/res/mi22012.pngbin0 -> 86 bytes
-rw-r--r--default_images/starmath/res/mi22013.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/mi22014.pngbin0 -> 145 bytes
-rw-r--r--default_images/starmath/res/mi22015.pngbin0 -> 139 bytes
-rw-r--r--default_images/starmath/res/mi22016.pngbin0 -> 299 bytes
-rw-r--r--default_images/starmath/res/mi22017.pngbin0 -> 300 bytes
-rw-r--r--default_images/starmath/res/mi22018.pngbin0 -> 303 bytes
-rw-r--r--default_images/starmath/res/mi22019.pngbin0 -> 311 bytes
-rw-r--r--default_images/starmath/res/mih21608.pngbin0 -> 90 bytes
-rw-r--r--default_images/starmath/res/mih21612.pngbin0 -> 123 bytes
-rw-r--r--default_images/starmath/res/mih22003.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/mih22004.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/mih22005.pngbin0 -> 113 bytes
-rw-r--r--default_images/starmath/res/mih22006.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/mih22007.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/mih22008.pngbin0 -> 84 bytes
-rw-r--r--default_images/starmath/res/mih22009.pngbin0 -> 85 bytes
-rw-r--r--default_images/starmath/res/mih22010.pngbin0 -> 83 bytes
-rw-r--r--default_images/starmath/res/mih22011.pngbin0 -> 83 bytes
-rw-r--r--default_images/starmath/res/mih22012.pngbin0 -> 84 bytes
-rw-r--r--default_images/starmath/res/mih22013.pngbin0 -> 114 bytes
-rw-r--r--default_images/starmath/res/mih22014.pngbin0 -> 113 bytes
-rw-r--r--default_images/starmath/res/mih22015.pngbin0 -> 111 bytes
-rw-r--r--default_images/starmath/res/mih22016.pngbin0 -> 100 bytes
-rw-r--r--default_images/starmath/res/mih22017.pngbin0 -> 102 bytes
-rw-r--r--default_images/starmath/res/mih22018.pngbin0 -> 110 bytes
-rw-r--r--default_images/starmath/res/mih22019.pngbin0 -> 112 bytes
-rw-r--r--default_images/starmath/res/op21401.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/op21402.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/op21403.pngbin0 -> 156 bytes
-rw-r--r--default_images/starmath/res/op21405.pngbin0 -> 154 bytes
-rw-r--r--default_images/starmath/res/op21406.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/op21407.pngbin0 -> 161 bytes
-rw-r--r--default_images/starmath/res/op21408.pngbin0 -> 162 bytes
-rw-r--r--default_images/starmath/res/op21409.pngbin0 -> 154 bytes
-rw-r--r--default_images/starmath/res/op21410.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/op21411.pngbin0 -> 156 bytes
-rw-r--r--default_images/starmath/res/op21412.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/op21413.pngbin0 -> 160 bytes
-rw-r--r--default_images/starmath/res/op21414.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/op21415.pngbin0 -> 160 bytes
-rw-r--r--default_images/starmath/res/op21416.pngbin0 -> 158 bytes
-rw-r--r--default_images/starmath/res/op21417.pngbin0 -> 146 bytes
-rw-r--r--default_images/starmath/res/op21418.pngbin0 -> 114 bytes
-rw-r--r--default_images/starmath/res/op21419.pngbin0 -> 147 bytes
-rw-r--r--default_images/starmath/res/op21420.pngbin0 -> 144 bytes
-rw-r--r--default_images/starmath/res/op21421.pngbin0 -> 142 bytes
-rw-r--r--default_images/starmath/res/op22001.pngbin0 -> 151 bytes
-rw-r--r--default_images/starmath/res/op22002.pngbin0 -> 147 bytes
-rw-r--r--default_images/starmath/res/oph21401.pngbin0 -> 137 bytes
-rw-r--r--default_images/starmath/res/oph21402.pngbin0 -> 140 bytes
-rw-r--r--default_images/starmath/res/oph21403.pngbin0 -> 137 bytes
-rw-r--r--default_images/starmath/res/oph21405.pngbin0 -> 130 bytes
-rw-r--r--default_images/starmath/res/oph21406.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/oph21407.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/oph21408.pngbin0 -> 135 bytes
-rw-r--r--default_images/starmath/res/oph21409.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/oph21410.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/oph21411.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/oph21412.pngbin0 -> 136 bytes
-rw-r--r--default_images/starmath/res/oph21413.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/oph21414.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/oph21415.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/oph21416.pngbin0 -> 138 bytes
-rw-r--r--default_images/starmath/res/oph21417.pngbin0 -> 120 bytes
-rw-r--r--default_images/starmath/res/oph21418.pngbin0 -> 88 bytes
-rw-r--r--default_images/starmath/res/oph21419.pngbin0 -> 121 bytes
-rw-r--r--default_images/starmath/res/oph21420.pngbin0 -> 114 bytes
-rw-r--r--default_images/starmath/res/oph21421.pngbin0 -> 112 bytes
-rw-r--r--default_images/starmath/res/oph22001.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/oph22002.pngbin0 -> 122 bytes
-rw-r--r--default_images/starmath/res/un21201.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/un21202.pngbin0 -> 131 bytes
-rw-r--r--default_images/starmath/res/un21203.pngbin0 -> 133 bytes
-rw-r--r--default_images/starmath/res/un21204.pngbin0 -> 135 bytes
-rw-r--r--default_images/starmath/res/un21205.pngbin0 -> 147 bytes
-rw-r--r--default_images/starmath/res/un21206.pngbin0 -> 148 bytes
-rw-r--r--default_images/starmath/res/un21207.pngbin0 -> 152 bytes
-rw-r--r--default_images/starmath/res/un21208.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/un21209.pngbin0 -> 145 bytes
-rw-r--r--default_images/starmath/res/un21210.pngbin0 -> 152 bytes
-rw-r--r--default_images/starmath/res/un21211.pngbin0 -> 154 bytes
-rw-r--r--default_images/starmath/res/un21212.pngbin0 -> 166 bytes
-rw-r--r--default_images/starmath/res/un21213.pngbin0 -> 129 bytes
-rw-r--r--default_images/starmath/res/un21214.pngbin0 -> 156 bytes
-rw-r--r--default_images/starmath/res/un21215.pngbin0 -> 155 bytes
-rw-r--r--default_images/starmath/res/un21221.pngbin0 -> 146 bytes
-rw-r--r--default_images/starmath/res/unh21201.pngbin0 -> 116 bytes
-rw-r--r--default_images/starmath/res/unh21202.pngbin0 -> 114 bytes
-rw-r--r--default_images/starmath/res/unh21203.pngbin0 -> 119 bytes
-rw-r--r--default_images/starmath/res/unh21204.pngbin0 -> 118 bytes
-rw-r--r--default_images/starmath/res/unh21205.pngbin0 -> 125 bytes
-rw-r--r--default_images/starmath/res/unh21206.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/unh21207.pngbin0 -> 129 bytes
-rw-r--r--default_images/starmath/res/unh21208.pngbin0 -> 132 bytes
-rw-r--r--default_images/starmath/res/unh21209.pngbin0 -> 124 bytes
-rw-r--r--default_images/starmath/res/unh21210.pngbin0 -> 116 bytes
-rw-r--r--default_images/starmath/res/unh21211.pngbin0 -> 128 bytes
-rw-r--r--default_images/starmath/res/unh21212.pngbin0 -> 131 bytes
-rw-r--r--default_images/starmath/res/unh21213.pngbin0 -> 115 bytes
-rw-r--r--default_images/starmath/res/unh21214.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/unh21215.pngbin0 -> 127 bytes
-rw-r--r--default_images/starmath/res/unh21221.pngbin0 -> 129 bytes
-rw-r--r--default_images/svtools/res/back_large.pngbin0 -> 731 bytes
-rw-r--r--default_images/svtools/res/back_large_h.pngbin0 -> 140 bytes
-rw-r--r--default_images/svtools/res/back_small.pngbin0 -> 328 bytes
-rw-r--r--default_images/svtools/res/back_small_h.pngbin0 -> 126 bytes
-rw-r--r--default_images/svtools/res/bmpfont.pngbin0 -> 558 bytes
-rw-r--r--default_images/svtools/res/bmpfont_h.pngbin0 -> 161 bytes
-rw-r--r--default_images/svtools/res/closer.pngbin0 -> 162 bytes
-rw-r--r--default_images/svtools/res/collate.pngbin0 -> 1423 bytes
-rw-r--r--default_images/svtools/res/collate_h.pngbin0 -> 268 bytes
-rw-r--r--default_images/svtools/res/ed01.pngbin0 -> 212 bytes
-rw-r--r--default_images/svtools/res/ed02.pngbin0 -> 248 bytes
-rw-r--r--default_images/svtools/res/ed03.pngbin0 -> 210 bytes
-rw-r--r--default_images/svtools/res/ed04.pngbin0 -> 231 bytes
-rw-r--r--default_images/svtools/res/ed05.pngbin0 -> 324 bytes
-rw-r--r--default_images/svtools/res/ed06.pngbin0 -> 239 bytes
-rw-r--r--default_images/svtools/res/ed07.pngbin0 -> 339 bytes
-rw-r--r--default_images/svtools/res/ed08.pngbin0 -> 215 bytes
-rw-r--r--default_images/svtools/res/ed09.pngbin0 -> 83 bytes
-rw-r--r--default_images/svtools/res/edh01.pngbin0 -> 101 bytes
-rw-r--r--default_images/svtools/res/edh02.pngbin0 -> 124 bytes
-rw-r--r--default_images/svtools/res/edh03.pngbin0 -> 105 bytes
-rw-r--r--default_images/svtools/res/edh04.pngbin0 -> 114 bytes
-rw-r--r--default_images/svtools/res/edh05.pngbin0 -> 117 bytes
-rw-r--r--default_images/svtools/res/edh06.pngbin0 -> 109 bytes
-rw-r--r--default_images/svtools/res/edh07.pngbin0 -> 125 bytes
-rw-r--r--default_images/svtools/res/edh08.pngbin0 -> 96 bytes
-rw-r--r--default_images/svtools/res/edh09.pngbin0 -> 98 bytes
-rw-r--r--default_images/svtools/res/folder.pngbin0 -> 251 bytes
-rw-r--r--default_images/svtools/res/helpagent.pngbin0 -> 2180 bytes
-rw-r--r--default_images/svtools/res/info_large.pngbin0 -> 538 bytes
-rw-r--r--default_images/svtools/res/info_large_h.pngbin0 -> 89 bytes
-rw-r--r--default_images/svtools/res/info_small.pngbin0 -> 329 bytes
-rw-r--r--default_images/svtools/res/info_small_h.pngbin0 -> 83 bytes
-rw-r--r--default_images/svtools/res/list_add.pngbin0 -> 533 bytes
-rw-r--r--default_images/svtools/res/list_add_16.pngbin0 -> 491 bytes
-rw-r--r--default_images/svtools/res/list_add_24.pngbin0 -> 720 bytes
-rw-r--r--default_images/svtools/res/list_remove.pngbin0 -> 310 bytes
-rw-r--r--default_images/svtools/res/list_remove_16.pngbin0 -> 301 bytes
-rw-r--r--default_images/svtools/res/list_remove_24.pngbin0 -> 441 bytes
-rw-r--r--default_images/svtools/res/my_docs.pngbin0 -> 918 bytes
-rw-r--r--default_images/svtools/res/my_docs_h.pngbin0 -> 233 bytes
-rw-r--r--default_images/svtools/res/ncollate.pngbin0 -> 1488 bytes
-rw-r--r--default_images/svtools/res/ncollate_h.pngbin0 -> 297 bytes
-rw-r--r--default_images/svtools/res/new_doc.pngbin0 -> 812 bytes
-rw-r--r--default_images/svtools/res/new_doc_h.pngbin0 -> 206 bytes
-rw-r--r--default_images/svtools/res/preview_large.pngbin0 -> 478 bytes
-rw-r--r--default_images/svtools/res/preview_large_h.pngbin0 -> 110 bytes
-rw-r--r--default_images/svtools/res/preview_small.pngbin0 -> 340 bytes
-rw-r--r--default_images/svtools/res/preview_small_h.pngbin0 -> 104 bytes
-rw-r--r--default_images/svtools/res/prnfont.pngbin0 -> 419 bytes
-rw-r--r--default_images/svtools/res/prnfont_h.pngbin0 -> 146 bytes
-rw-r--r--default_images/svtools/res/regkey.pngbin0 -> 297 bytes
-rw-r--r--default_images/svtools/res/samples.pngbin0 -> 1062 bytes
-rw-r--r--default_images/svtools/res/samples_h.pngbin0 -> 215 bytes
-rw-r--r--default_images/svtools/res/scalfont.pngbin0 -> 534 bytes
-rw-r--r--default_images/svtools/res/scalfont_h.pngbin0 -> 162 bytes
-rw-r--r--default_images/svtools/res/template.pngbin0 -> 828 bytes
-rw-r--r--default_images/svtools/res/template_h.pngbin0 -> 205 bytes
-rw-r--r--default_images/svtools/res/triangle_down.pngbin0 -> 178 bytes
-rw-r--r--default_images/svtools/res/triangle_down_hc.pngbin0 -> 100 bytes
-rw-r--r--default_images/svtools/res/triangle_right.pngbin0 -> 226 bytes
-rw-r--r--default_images/svtools/res/triangle_right_hc.pngbin0 -> 98 bytes
-rw-r--r--default_images/svtools/res/ttall.pngbin0 -> 98 bytes
-rw-r--r--default_images/svtools/res/ttdef.pngbin0 -> 101 bytes
-rw-r--r--default_images/svtools/res/tthid.pngbin0 -> 103 bytes
-rw-r--r--default_images/svtools/res/ttremote.pngbin0 -> 118 bytes
-rw-r--r--default_images/svtools/res/ttshow.pngbin0 -> 108 bytes
-rw-r--r--default_images/svtools/res/ttshow2.pngbin0 -> 115 bytes
-rw-r--r--default_images/svtools/res/up_large.pngbin0 -> 613 bytes
-rw-r--r--default_images/svtools/res/up_large_h.pngbin0 -> 167 bytes
-rw-r--r--default_images/svtools/res/up_small.pngbin0 -> 380 bytes
-rw-r--r--default_images/svtools/res/up_small_h.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/3dgeo.pngbin0 -> 169 bytes
-rw-r--r--default_images/svx/res/3dgeo_h.pngbin0 -> 150 bytes
-rw-r--r--default_images/svx/res/3dlight.pngbin0 -> 214 bytes
-rw-r--r--default_images/svx/res/3dlight_h.pngbin0 -> 156 bytes
-rw-r--r--default_images/svx/res/3drepres.pngbin0 -> 195 bytes
-rw-r--r--default_images/svx/res/3drepres_h.pngbin0 -> 156 bytes
-rw-r--r--default_images/svx/res/3dtextur.pngbin0 -> 214 bytes
-rw-r--r--default_images/svx/res/3dtextur_h.pngbin0 -> 147 bytes
-rw-r--r--default_images/svx/res/apply.pngbin0 -> 266 bytes
-rw-r--r--default_images/svx/res/apply_h.pngbin0 -> 117 bytes
-rw-r--r--default_images/svx/res/blend3d.pngbin0 -> 676 bytes
-rw-r--r--default_images/svx/res/blend3d_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/svx/res/brightlit_16.pngbin0 -> 192 bytes
-rw-r--r--default_images/svx/res/brightlit_16_h.pngbin0 -> 153 bytes
-rw-r--r--default_images/svx/res/caution_11x16.pngbin0 -> 360 bytes
-rw-r--r--default_images/svx/res/caution_11x16_h.pngbin0 -> 140 bytes
-rw-r--r--default_images/svx/res/cd01.pngbin0 -> 266 bytes
-rw-r--r--default_images/svx/res/cd015.pngbin0 -> 248 bytes
-rw-r--r--default_images/svx/res/cd016.pngbin0 -> 332 bytes
-rw-r--r--default_images/svx/res/cd017.pngbin0 -> 302 bytes
-rw-r--r--default_images/svx/res/cd018.pngbin0 -> 314 bytes
-rw-r--r--default_images/svx/res/cd02.pngbin0 -> 159 bytes
-rw-r--r--default_images/svx/res/cd020.pngbin0 -> 599 bytes
-rw-r--r--default_images/svx/res/cd021.pngbin0 -> 601 bytes
-rw-r--r--default_images/svx/res/cd025.pngbin0 -> 394 bytes
-rw-r--r--default_images/svx/res/cd026.pngbin0 -> 344 bytes
-rw-r--r--default_images/svx/res/cd05.pngbin0 -> 361 bytes
-rw-r--r--default_images/svx/res/cd06.pngbin0 -> 213 bytes
-rw-r--r--default_images/svx/res/cd07.pngbin0 -> 459 bytes
-rw-r--r--default_images/svx/res/cd08.pngbin0 -> 411 bytes
-rw-r--r--default_images/svx/res/cdh01.pngbin0 -> 116 bytes
-rw-r--r--default_images/svx/res/cdh015.pngbin0 -> 138 bytes
-rw-r--r--default_images/svx/res/cdh016.pngbin0 -> 145 bytes
-rw-r--r--default_images/svx/res/cdh017.pngbin0 -> 152 bytes
-rw-r--r--default_images/svx/res/cdh018.pngbin0 -> 164 bytes
-rw-r--r--default_images/svx/res/cdh02.pngbin0 -> 120 bytes
-rw-r--r--default_images/svx/res/cdh020.pngbin0 -> 140 bytes
-rw-r--r--default_images/svx/res/cdh021.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/cdh025.pngbin0 -> 148 bytes
-rw-r--r--default_images/svx/res/cdh026.pngbin0 -> 138 bytes
-rw-r--r--default_images/svx/res/cdh05.pngbin0 -> 120 bytes
-rw-r--r--default_images/svx/res/cdh06.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/cdh07.pngbin0 -> 118 bytes
-rw-r--r--default_images/svx/res/cdh08.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/color.pngbin0 -> 271 bytes
-rw-r--r--default_images/svx/res/color_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/svx/res/colordlg.pngbin0 -> 463 bytes
-rw-r--r--default_images/svx/res/colordlg_h.pngbin0 -> 164 bytes
-rw-r--r--default_images/svx/res/convrt3d.pngbin0 -> 513 bytes
-rw-r--r--default_images/svx/res/convrt3d_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/dimlit_16.pngbin0 -> 192 bytes
-rw-r--r--default_images/svx/res/dimlit_16_h.pngbin0 -> 156 bytes
-rw-r--r--default_images/svx/res/directioneast_22.pngbin0 -> 149 bytes
-rw-r--r--default_images/svx/res/directioneast_22_h.pngbin0 -> 136 bytes
-rw-r--r--default_images/svx/res/directionnorth_22.pngbin0 -> 145 bytes
-rw-r--r--default_images/svx/res/directionnorth_22_h.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/directionnortheast_22.pngbin0 -> 197 bytes
-rw-r--r--default_images/svx/res/directionnortheast_22_h.pngbin0 -> 174 bytes
-rw-r--r--default_images/svx/res/directionnorthwest_22.pngbin0 -> 191 bytes
-rw-r--r--default_images/svx/res/directionnorthwest_22_h.pngbin0 -> 169 bytes
-rw-r--r--default_images/svx/res/directionsouth_22.pngbin0 -> 154 bytes
-rw-r--r--default_images/svx/res/directionsouth_22_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/svx/res/directionsoutheast_22.pngbin0 -> 197 bytes
-rw-r--r--default_images/svx/res/directionsoutheast_22_h.pngbin0 -> 171 bytes
-rw-r--r--default_images/svx/res/directionsouthwest_22.pngbin0 -> 205 bytes
-rw-r--r--default_images/svx/res/directionsouthwest_22_h.pngbin0 -> 165 bytes
-rw-r--r--default_images/svx/res/directionstraight_22.pngbin0 -> 104 bytes
-rw-r--r--default_images/svx/res/directionstraight_22_h.pngbin0 -> 96 bytes
-rw-r--r--default_images/svx/res/directionwest_22.pngbin0 -> 158 bytes
-rw-r--r--default_images/svx/res/directionwest_22_h.pngbin0 -> 132 bytes
-rw-r--r--default_images/svx/res/doc_modified_no_14.pngbin0 -> 156 bytes
-rw-r--r--default_images/svx/res/doc_modified_yes_14.pngbin0 -> 664 bytes
-rw-r--r--default_images/svx/res/doublesi.pngbin0 -> 182 bytes
-rw-r--r--default_images/svx/res/doublesi_h.pngbin0 -> 145 bytes
-rw-r--r--default_images/svx/res/dsth_cen.pngbin0 -> 436 bytes
-rw-r--r--default_images/svx/res/dsth_cen_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/dsth_dst.pngbin0 -> 469 bytes
-rw-r--r--default_images/svx/res/dsth_dst_h.pngbin0 -> 133 bytes
-rw-r--r--default_images/svx/res/dsth_hig.pngbin0 -> 445 bytes
-rw-r--r--default_images/svx/res/dsth_hig_h.pngbin0 -> 133 bytes
-rw-r--r--default_images/svx/res/dsth_low.pngbin0 -> 452 bytes
-rw-r--r--default_images/svx/res/dsth_low_h.pngbin0 -> 133 bytes
-rw-r--r--default_images/svx/res/dstv_cen.pngbin0 -> 422 bytes
-rw-r--r--default_images/svx/res/dstv_cen_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/dstv_dst.pngbin0 -> 425 bytes
-rw-r--r--default_images/svx/res/dstv_dst_h.pngbin0 -> 132 bytes
-rw-r--r--default_images/svx/res/dstv_hig.pngbin0 -> 425 bytes
-rw-r--r--default_images/svx/res/dstv_hig_h.pngbin0 -> 130 bytes
-rw-r--r--default_images/svx/res/dstv_low.pngbin0 -> 411 bytes
-rw-r--r--default_images/svx/res/dstv_low_h.pngbin0 -> 131 bytes
-rw-r--r--default_images/svx/res/extrusion05inch_16.pngbin0 -> 307 bytes
-rw-r--r--default_images/svx/res/extrusion05inch_16_h.pngbin0 -> 111 bytes
-rw-r--r--default_images/svx/res/extrusion0inch_16.pngbin0 -> 197 bytes
-rw-r--r--default_images/svx/res/extrusion0inch_16_h.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/extrusion1inch_16.pngbin0 -> 365 bytes
-rw-r--r--default_images/svx/res/extrusion1inch_16_h.pngbin0 -> 132 bytes
-rw-r--r--default_images/svx/res/extrusion2inch_16.pngbin0 -> 422 bytes
-rw-r--r--default_images/svx/res/extrusion2inch_16_h.pngbin0 -> 141 bytes
-rw-r--r--default_images/svx/res/extrusion4inch_16.pngbin0 -> 457 bytes
-rw-r--r--default_images/svx/res/extrusion4inch_16_h.pngbin0 -> 144 bytes
-rw-r--r--default_images/svx/res/extrusioninfinity_16.pngbin0 -> 502 bytes
-rw-r--r--default_images/svx/res/extrusioninfinity_16_h.pngbin0 -> 147 bytes
-rw-r--r--default_images/svx/res/filter3d.pngbin0 -> 262 bytes
-rw-r--r--default_images/svx/res/filter3d_h.pngbin0 -> 109 bytes
-rw-r--r--default_images/svx/res/fontworkaligncentered_16.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/fontworkaligncentered_16_h.pngbin0 -> 79 bytes
-rw-r--r--default_images/svx/res/fontworkaligncentered_26.pngbin0 -> 235 bytes
-rw-r--r--default_images/svx/res/fontworkaligncentered_26_h.pngbin0 -> 90 bytes
-rw-r--r--default_images/svx/res/fontworkalignjustified_16.pngbin0 -> 130 bytes
-rw-r--r--default_images/svx/res/fontworkalignjustified_16_h.pngbin0 -> 78 bytes
-rw-r--r--default_images/svx/res/fontworkalignjustified_26.pngbin0 -> 227 bytes
-rw-r--r--default_images/svx/res/fontworkalignjustified_26_h.pngbin0 -> 87 bytes
-rw-r--r--default_images/svx/res/fontworkalignleft_16.pngbin0 -> 132 bytes
-rw-r--r--default_images/svx/res/fontworkalignleft_16_h.pngbin0 -> 79 bytes
-rw-r--r--default_images/svx/res/fontworkalignleft_26.pngbin0 -> 232 bytes
-rw-r--r--default_images/svx/res/fontworkalignleft_26_h.pngbin0 -> 90 bytes
-rw-r--r--default_images/svx/res/fontworkalignright_16.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/fontworkalignright_16_h.pngbin0 -> 79 bytes
-rw-r--r--default_images/svx/res/fontworkalignright_26.pngbin0 -> 234 bytes
-rw-r--r--default_images/svx/res/fontworkalignright_26_h.pngbin0 -> 90 bytes
-rw-r--r--default_images/svx/res/fontworkalignstretch_16.pngbin0 -> 265 bytes
-rw-r--r--default_images/svx/res/fontworkalignstretch_16_h.pngbin0 -> 100 bytes
-rw-r--r--default_images/svx/res/fontworkalignstretch_26.pngbin0 -> 440 bytes
-rw-r--r--default_images/svx/res/fontworkalignstretch_26_h.pngbin0 -> 117 bytes
-rw-r--r--default_images/svx/res/fr01.pngbin0 -> 216 bytes
-rw-r--r--default_images/svx/res/fr010.pngbin0 -> 282 bytes
-rw-r--r--default_images/svx/res/fr011.pngbin0 -> 282 bytes
-rw-r--r--default_images/svx/res/fr012.pngbin0 -> 278 bytes
-rw-r--r--default_images/svx/res/fr02.pngbin0 -> 236 bytes
-rw-r--r--default_images/svx/res/fr03.pngbin0 -> 237 bytes
-rw-r--r--default_images/svx/res/fr04.pngbin0 -> 229 bytes
-rw-r--r--default_images/svx/res/fr05.pngbin0 -> 228 bytes
-rw-r--r--default_images/svx/res/fr06.pngbin0 -> 219 bytes
-rw-r--r--default_images/svx/res/fr07.pngbin0 -> 229 bytes
-rw-r--r--default_images/svx/res/fr08.pngbin0 -> 208 bytes
-rw-r--r--default_images/svx/res/fr09.pngbin0 -> 283 bytes
-rw-r--r--default_images/svx/res/frh01.pngbin0 -> 87 bytes
-rw-r--r--default_images/svx/res/frh010.pngbin0 -> 101 bytes
-rw-r--r--default_images/svx/res/frh011.pngbin0 -> 108 bytes
-rw-r--r--default_images/svx/res/frh012.pngbin0 -> 99 bytes
-rw-r--r--default_images/svx/res/frh02.pngbin0 -> 90 bytes
-rw-r--r--default_images/svx/res/frh03.pngbin0 -> 91 bytes
-rw-r--r--default_images/svx/res/frh04.pngbin0 -> 91 bytes
-rw-r--r--default_images/svx/res/frh05.pngbin0 -> 93 bytes
-rw-r--r--default_images/svx/res/frh06.pngbin0 -> 92 bytes
-rw-r--r--default_images/svx/res/frh07.pngbin0 -> 92 bytes
-rw-r--r--default_images/svx/res/frh08.pngbin0 -> 95 bytes
-rw-r--r--default_images/svx/res/frh09.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/frmsel.bmpbin0 -> 510 bytes
-rw-r--r--default_images/svx/res/fw01.pngbin0 -> 97 bytes
-rw-r--r--default_images/svx/res/fw010.pngbin0 -> 93 bytes
-rw-r--r--default_images/svx/res/fw011.pngbin0 -> 117 bytes
-rw-r--r--default_images/svx/res/fw012.pngbin0 -> 112 bytes
-rw-r--r--default_images/svx/res/fw013.pngbin0 -> 84 bytes
-rw-r--r--default_images/svx/res/fw014.pngbin0 -> 98 bytes
-rw-r--r--default_images/svx/res/fw015.pngbin0 -> 101 bytes
-rw-r--r--default_images/svx/res/fw016.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/fw017.pngbin0 -> 95 bytes
-rw-r--r--default_images/svx/res/fw018.pngbin0 -> 104 bytes
-rw-r--r--default_images/svx/res/fw019.pngbin0 -> 111 bytes
-rw-r--r--default_images/svx/res/fw02.pngbin0 -> 118 bytes
-rw-r--r--default_images/svx/res/fw020.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/fw021.pngbin0 -> 107 bytes
-rw-r--r--default_images/svx/res/fw03.pngbin0 -> 125 bytes
-rw-r--r--default_images/svx/res/fw04.pngbin0 -> 108 bytes
-rw-r--r--default_images/svx/res/fw05.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/fw06.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/fw07.pngbin0 -> 78 bytes
-rw-r--r--default_images/svx/res/fw08.pngbin0 -> 78 bytes
-rw-r--r--default_images/svx/res/fw09.pngbin0 -> 79 bytes
-rw-r--r--default_images/svx/res/fwbhcirc.pngbin0 -> 111 bytes
-rw-r--r--default_images/svx/res/fwbhcirc_h.pngbin0 -> 102 bytes
-rw-r--r--default_images/svx/res/fwbotarc.pngbin0 -> 102 bytes
-rw-r--r--default_images/svx/res/fwbotarc_h.pngbin0 -> 96 bytes
-rw-r--r--default_images/svx/res/fwbuttn1.pngbin0 -> 115 bytes
-rw-r--r--default_images/svx/res/fwbuttn1_h.pngbin0 -> 108 bytes
-rw-r--r--default_images/svx/res/fwbuttn2.pngbin0 -> 120 bytes
-rw-r--r--default_images/svx/res/fwbuttn2_h.pngbin0 -> 113 bytes
-rw-r--r--default_images/svx/res/fwbuttn3.pngbin0 -> 122 bytes
-rw-r--r--default_images/svx/res/fwbuttn3_h.pngbin0 -> 115 bytes
-rw-r--r--default_images/svx/res/fwbuttn4.pngbin0 -> 121 bytes
-rw-r--r--default_images/svx/res/fwbuttn4_h.pngbin0 -> 110 bytes
-rw-r--r--default_images/svx/res/fwh01.pngbin0 -> 91 bytes
-rw-r--r--default_images/svx/res/fwh010.pngbin0 -> 94 bytes
-rw-r--r--default_images/svx/res/fwh011.pngbin0 -> 110 bytes
-rw-r--r--default_images/svx/res/fwh012.pngbin0 -> 106 bytes
-rw-r--r--default_images/svx/res/fwh013.pngbin0 -> 85 bytes
-rw-r--r--default_images/svx/res/fwh014.pngbin0 -> 90 bytes
-rw-r--r--default_images/svx/res/fwh015.pngbin0 -> 96 bytes
-rw-r--r--default_images/svx/res/fwh016.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/fwh017.pngbin0 -> 91 bytes
-rw-r--r--default_images/svx/res/fwh018.pngbin0 -> 104 bytes
-rw-r--r--default_images/svx/res/fwh019.pngbin0 -> 106 bytes
-rw-r--r--default_images/svx/res/fwh02.pngbin0 -> 112 bytes
-rw-r--r--default_images/svx/res/fwh020.pngbin0 -> 101 bytes
-rw-r--r--default_images/svx/res/fwh021.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/fwh03.pngbin0 -> 97 bytes
-rw-r--r--default_images/svx/res/fwh04.pngbin0 -> 98 bytes
-rw-r--r--default_images/svx/res/fwh05.pngbin0 -> 114 bytes
-rw-r--r--default_images/svx/res/fwh06.pngbin0 -> 100 bytes
-rw-r--r--default_images/svx/res/fwh07.pngbin0 -> 78 bytes
-rw-r--r--default_images/svx/res/fwh08.pngbin0 -> 78 bytes
-rw-r--r--default_images/svx/res/fwh09.pngbin0 -> 79 bytes
-rw-r--r--default_images/svx/res/fwlftarc.pngbin0 -> 108 bytes
-rw-r--r--default_images/svx/res/fwlftarc_h.pngbin0 -> 93 bytes
-rw-r--r--default_images/svx/res/fwlhcirc.pngbin0 -> 111 bytes
-rw-r--r--default_images/svx/res/fwlhcirc_h.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/fwrgtarc.pngbin0 -> 107 bytes
-rw-r--r--default_images/svx/res/fwrgtarc_h.pngbin0 -> 94 bytes
-rw-r--r--default_images/svx/res/fwrhcirc.pngbin0 -> 109 bytes
-rw-r--r--default_images/svx/res/fwrhcirc_h.pngbin0 -> 103 bytes
-rw-r--r--default_images/svx/res/fwtoparc.pngbin0 -> 103 bytes
-rw-r--r--default_images/svx/res/fwtoparc_h.pngbin0 -> 91 bytes
-rw-r--r--default_images/svx/res/galdefl.pngbin0 -> 550 bytes
-rw-r--r--default_images/svx/res/galdefs.pngbin0 -> 306 bytes
-rw-r--r--default_images/svx/res/galicon.pngbin0 -> 377 bytes
-rw-r--r--default_images/svx/res/galicon_h.pngbin0 -> 99 bytes
-rw-r--r--default_images/svx/res/galimpl.pngbin0 -> 162 bytes
-rw-r--r--default_images/svx/res/galimps.pngbin0 -> 122 bytes
-rw-r--r--default_images/svx/res/gallist.pngbin0 -> 374 bytes
-rw-r--r--default_images/svx/res/gallist_h.pngbin0 -> 99 bytes
-rw-r--r--default_images/svx/res/galmedia.pngbin0 -> 1358 bytes
-rw-r--r--default_images/svx/res/galnorl.pngbin0 -> 573 bytes
-rw-r--r--default_images/svx/res/galnors.pngbin0 -> 306 bytes
-rw-r--r--default_images/svx/res/galrdol.pngbin0 -> 563 bytes
-rw-r--r--default_images/svx/res/galrdos.pngbin0 -> 306 bytes
-rw-r--r--default_images/svx/res/galsnd1.pngbin0 -> 351 bytes
-rw-r--r--default_images/svx/res/galsnd2.pngbin0 -> 383 bytes
-rw-r--r--default_images/svx/res/galsnd3.pngbin0 -> 322 bytes
-rw-r--r--default_images/svx/res/galsnd4.pngbin0 -> 469 bytes
-rw-r--r--default_images/svx/res/galsnd5.pngbin0 -> 310 bytes
-rw-r--r--default_images/svx/res/galsnd6.pngbin0 -> 359 bytes
-rw-r--r--default_images/svx/res/galsnd7.pngbin0 -> 334 bytes
-rw-r--r--default_images/svx/res/graphic.pngbin0 -> 571 bytes
-rw-r--r--default_images/svx/res/grfload.pngbin0 -> 262 bytes
-rw-r--r--default_images/svx/res/id01.pngbin0 -> 266 bytes
-rw-r--r--default_images/svx/res/id016.pngbin0 -> 293 bytes
-rw-r--r--default_images/svx/res/id018.pngbin0 -> 403 bytes
-rw-r--r--default_images/svx/res/id019.pngbin0 -> 487 bytes
-rw-r--r--default_images/svx/res/id02.pngbin0 -> 437 bytes
-rw-r--r--default_images/svx/res/id03.pngbin0 -> 402 bytes
-rw-r--r--default_images/svx/res/id030.pngbin0 -> 248 bytes
-rw-r--r--default_images/svx/res/id031.pngbin0 -> 332 bytes
-rw-r--r--default_images/svx/res/id032.pngbin0 -> 302 bytes
-rw-r--r--default_images/svx/res/id033.pngbin0 -> 314 bytes
-rw-r--r--default_images/svx/res/id04.pngbin0 -> 361 bytes
-rw-r--r--default_images/svx/res/id040.pngbin0 -> 599 bytes
-rw-r--r--default_images/svx/res/id041.pngbin0 -> 601 bytes
-rw-r--r--default_images/svx/res/id05.pngbin0 -> 213 bytes
-rw-r--r--default_images/svx/res/id06.pngbin0 -> 459 bytes
-rw-r--r--default_images/svx/res/id07.pngbin0 -> 411 bytes
-rw-r--r--default_images/svx/res/id08.pngbin0 -> 530 bytes
-rw-r--r--default_images/svx/res/idh01.pngbin0 -> 116 bytes
-rw-r--r--default_images/svx/res/idh016.pngbin0 -> 138 bytes
-rw-r--r--default_images/svx/res/idh018.pngbin0 -> 153 bytes
-rw-r--r--default_images/svx/res/idh019.pngbin0 -> 171 bytes
-rw-r--r--default_images/svx/res/idh02.pngbin0 -> 133 bytes
-rw-r--r--default_images/svx/res/idh03.pngbin0 -> 123 bytes
-rw-r--r--default_images/svx/res/idh030.pngbin0 -> 138 bytes
-rw-r--r--default_images/svx/res/idh031.pngbin0 -> 146 bytes
-rw-r--r--default_images/svx/res/idh032.pngbin0 -> 153 bytes
-rw-r--r--default_images/svx/res/idh033.pngbin0 -> 164 bytes
-rw-r--r--default_images/svx/res/idh04.pngbin0 -> 119 bytes
-rw-r--r--default_images/svx/res/idh040.pngbin0 -> 140 bytes
-rw-r--r--default_images/svx/res/idh041.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/idh05.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/idh06.pngbin0 -> 118 bytes
-rw-r--r--default_images/svx/res/idh07.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/idh08.pngbin0 -> 158 bytes
-rw-r--r--default_images/svx/res/invert3d.pngbin0 -> 189 bytes
-rw-r--r--default_images/svx/res/invert3d_h.pngbin0 -> 144 bytes
-rw-r--r--default_images/svx/res/legtyp1.pngbin0 -> 378 bytes
-rw-r--r--default_images/svx/res/legtyp1_hc.pngbin0 -> 110 bytes
-rw-r--r--default_images/svx/res/legtyp2.pngbin0 -> 476 bytes
-rw-r--r--default_images/svx/res/legtyp2_hc.pngbin0 -> 133 bytes
-rw-r--r--default_images/svx/res/legtyp3.pngbin0 -> 442 bytes
-rw-r--r--default_images/svx/res/legtyp3_hc.pngbin0 -> 136 bytes
-rw-r--r--default_images/svx/res/legtyp4.pngbin0 -> 472 bytes
-rw-r--r--default_images/svx/res/legtyp4_hc.pngbin0 -> 121 bytes
-rw-r--r--default_images/svx/res/lght2sid.pngbin0 -> 203 bytes
-rw-r--r--default_images/svx/res/lght2sid_h.pngbin0 -> 152 bytes
-rw-r--r--default_images/svx/res/light.pngbin0 -> 176 bytes
-rw-r--r--default_images/svx/res/light_h.pngbin0 -> 128 bytes
-rw-r--r--default_images/svx/res/lightfrombottom_22.pngbin0 -> 716 bytes
-rw-r--r--default_images/svx/res/lightfrombottom_22_h.pngbin0 -> 193 bytes
-rw-r--r--default_images/svx/res/lightfrombottomleft_22.pngbin0 -> 736 bytes
-rw-r--r--default_images/svx/res/lightfrombottomleft_22_h.pngbin0 -> 188 bytes
-rw-r--r--default_images/svx/res/lightfrombottomright_22.pngbin0 -> 713 bytes
-rw-r--r--default_images/svx/res/lightfrombottomright_22_h.pngbin0 -> 186 bytes
-rw-r--r--default_images/svx/res/lightfromfront_22.pngbin0 -> 805 bytes
-rw-r--r--default_images/svx/res/lightfromfront_22_h.pngbin0 -> 212 bytes
-rw-r--r--default_images/svx/res/lightfromleft_22.pngbin0 -> 691 bytes
-rw-r--r--default_images/svx/res/lightfromleft_22_h.pngbin0 -> 203 bytes
-rw-r--r--default_images/svx/res/lightfromright_22.pngbin0 -> 700 bytes
-rw-r--r--default_images/svx/res/lightfromright_22_h.pngbin0 -> 206 bytes
-rw-r--r--default_images/svx/res/lightfromtop_22.pngbin0 -> 769 bytes
-rw-r--r--default_images/svx/res/lightfromtop_22_h.pngbin0 -> 186 bytes
-rw-r--r--default_images/svx/res/lightfromtopleft_22.pngbin0 -> 735 bytes
-rw-r--r--default_images/svx/res/lightfromtopleft_22_h.pngbin0 -> 208 bytes
-rw-r--r--default_images/svx/res/lightfromtopright_22.pngbin0 -> 752 bytes
-rw-r--r--default_images/svx/res/lightfromtopright_22_h.pngbin0 -> 207 bytes
-rw-r--r--default_images/svx/res/lightofffrombottom_22.pngbin0 -> 216 bytes
-rw-r--r--default_images/svx/res/lightofffrombottom_22_h.pngbin0 -> 179 bytes
-rw-r--r--default_images/svx/res/lightofffrombottomleft_22.pngbin0 -> 246 bytes
-rw-r--r--default_images/svx/res/lightofffrombottomleft_22_h.pngbin0 -> 164 bytes
-rw-r--r--default_images/svx/res/lightofffrombottomright_22.pngbin0 -> 244 bytes
-rw-r--r--default_images/svx/res/lightofffrombottomright_22_h.pngbin0 -> 163 bytes
-rw-r--r--default_images/svx/res/lightofffromleft_22.pngbin0 -> 217 bytes
-rw-r--r--default_images/svx/res/lightofffromleft_22_h.pngbin0 -> 155 bytes
-rw-r--r--default_images/svx/res/lightofffromright_22.pngbin0 -> 221 bytes
-rw-r--r--default_images/svx/res/lightofffromright_22_h.pngbin0 -> 159 bytes
-rw-r--r--default_images/svx/res/lightofffromtop_22.pngbin0 -> 227 bytes
-rw-r--r--default_images/svx/res/lightofffromtop_22_h.pngbin0 -> 182 bytes
-rw-r--r--default_images/svx/res/lightofffromtopleft_22.pngbin0 -> 226 bytes
-rw-r--r--default_images/svx/res/lightofffromtopleft_22_h.pngbin0 -> 166 bytes
-rw-r--r--default_images/svx/res/lightofffromtopright_22.pngbin0 -> 233 bytes
-rw-r--r--default_images/svx/res/lightofffromtopright_22_h.pngbin0 -> 165 bytes
-rw-r--r--default_images/svx/res/lighton.pngbin0 -> 214 bytes
-rw-r--r--default_images/svx/res/lighton_h.pngbin0 -> 157 bytes
-rw-r--r--default_images/svx/res/lightonfrombottom_22.pngbin0 -> 265 bytes
-rw-r--r--default_images/svx/res/lightonfrombottom_22_h.pngbin0 -> 189 bytes
-rw-r--r--default_images/svx/res/lightonfrombottomleft_22.pngbin0 -> 272 bytes
-rw-r--r--default_images/svx/res/lightonfrombottomleft_22_h.pngbin0 -> 203 bytes
-rw-r--r--default_images/svx/res/lightonfrombottomright_22.pngbin0 -> 282 bytes
-rw-r--r--default_images/svx/res/lightonfrombottomright_22_h.pngbin0 -> 207 bytes
-rw-r--r--default_images/svx/res/lightonfromleft_22.pngbin0 -> 267 bytes
-rw-r--r--default_images/svx/res/lightonfromleft_22_h.pngbin0 -> 190 bytes
-rw-r--r--default_images/svx/res/lightonfromright_22.pngbin0 -> 265 bytes
-rw-r--r--default_images/svx/res/lightonfromright_22_h.pngbin0 -> 184 bytes
-rw-r--r--default_images/svx/res/lightonfromtop_22.pngbin0 -> 268 bytes
-rw-r--r--default_images/svx/res/lightonfromtop_22_h.pngbin0 -> 193 bytes
-rw-r--r--default_images/svx/res/lightonfromtopleft_22.pngbin0 -> 277 bytes
-rw-r--r--default_images/svx/res/lightonfromtopleft_22_h.pngbin0 -> 204 bytes
-rw-r--r--default_images/svx/res/lightonfromtopright_22.pngbin0 -> 275 bytes
-rw-r--r--default_images/svx/res/lightonfromtopright_22_h.pngbin0 -> 203 bytes
-rw-r--r--default_images/svx/res/lngcheck.pngbin0 -> 317 bytes
-rw-r--r--default_images/svx/res/lngcheck_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/lo01.pngbin0 -> 125 bytes
-rw-r--r--default_images/svx/res/lo02.pngbin0 -> 128 bytes
-rw-r--r--default_images/svx/res/lo03.pngbin0 -> 94 bytes
-rw-r--r--default_images/svx/res/loh01.pngbin0 -> 104 bytes
-rw-r--r--default_images/svx/res/loh02.pngbin0 -> 107 bytes
-rw-r--r--default_images/svx/res/loh03.pngbin0 -> 82 bytes
-rw-r--r--default_images/svx/res/luminanc.pngbin0 -> 348 bytes
-rw-r--r--default_images/svx/res/luminanc_h.pngbin0 -> 99 bytes
-rw-r--r--default_images/svx/res/material.pngbin0 -> 189 bytes
-rw-r--r--default_images/svx/res/material_h.pngbin0 -> 149 bytes
-rw-r--r--default_images/svx/res/matte_16.pngbin0 -> 547 bytes
-rw-r--r--default_images/svx/res/matte_16_h.pngbin0 -> 132 bytes
-rw-r--r--default_images/svx/res/metal_16.pngbin0 -> 576 bytes
-rw-r--r--default_images/svx/res/metal_16_h.pngbin0 -> 160 bytes
-rw-r--r--default_images/svx/res/minus_h.pngbin0 -> 76 bytes
-rw-r--r--default_images/svx/res/modula3d.pngbin0 -> 215 bytes
-rw-r--r--default_images/svx/res/modula3d_h.pngbin0 -> 126 bytes
-rw-r--r--default_images/svx/res/navigationball_10.pngbin0 -> 245 bytes
-rw-r--r--default_images/svx/res/navigationball_10_h.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/normallit_16.pngbin0 -> 192 bytes
-rw-r--r--default_images/svx/res/normallit_16_h.pngbin0 -> 156 bytes
-rw-r--r--default_images/svx/res/normflat.pngbin0 -> 171 bytes
-rw-r--r--default_images/svx/res/normflat_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/normobjs.pngbin0 -> 203 bytes
-rw-r--r--default_images/svx/res/normobjs_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/normsphe.pngbin0 -> 190 bytes
-rw-r--r--default_images/svx/res/normsphe_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/svx/res/notcertificate_16.pngbin0 -> 617 bytes
-rw-r--r--default_images/svx/res/notcertificate_16_h.pngbin0 -> 190 bytes
-rw-r--r--default_images/svx/res/notcheck.pngbin0 -> 71 bytes
-rw-r--r--default_images/svx/res/nu01.pngbin0 -> 266 bytes
-rw-r--r--default_images/svx/res/nu02.pngbin0 -> 296 bytes
-rw-r--r--default_images/svx/res/nu03.pngbin0 -> 430 bytes
-rw-r--r--default_images/svx/res/nu04.pngbin0 -> 243 bytes
-rw-r--r--default_images/svx/res/nu07.pngbin0 -> 266 bytes
-rw-r--r--default_images/svx/res/nu08.pngbin0 -> 296 bytes
-rw-r--r--default_images/svx/res/nuh01.pngbin0 -> 117 bytes
-rw-r--r--default_images/svx/res/nuh02.pngbin0 -> 134 bytes
-rw-r--r--default_images/svx/res/nuh03.pngbin0 -> 127 bytes
-rw-r--r--default_images/svx/res/nuh04.pngbin0 -> 120 bytes
-rw-r--r--default_images/svx/res/objects.pngbin0 -> 307 bytes
-rw-r--r--default_images/svx/res/objspc3d.pngbin0 -> 152 bytes
-rw-r--r--default_images/svx/res/objspc3d_h.pngbin0 -> 111 bytes
-rw-r--r--default_images/svx/res/odfwarning.pngbin0 -> 360 bytes
-rw-r--r--default_images/svx/res/odfwarning_h.pngbin0 -> 140 bytes
-rw-r--r--default_images/svx/res/ole.pngbin0 -> 516 bytes
-rw-r--r--default_images/svx/res/parallel.pngbin0 -> 119 bytes
-rw-r--r--default_images/svx/res/parallel_16.pngbin0 -> 172 bytes
-rw-r--r--default_images/svx/res/parallel_16_h.pngbin0 -> 153 bytes
-rw-r--r--default_images/svx/res/parallel_h.pngbin0 -> 77 bytes
-rw-r--r--default_images/svx/res/persp3d.pngbin0 -> 177 bytes
-rw-r--r--default_images/svx/res/persp3d_h.pngbin0 -> 136 bytes
-rw-r--r--default_images/svx/res/perspective_16.pngbin0 -> 189 bytes
-rw-r--r--default_images/svx/res/perspective_16_h.pngbin0 -> 159 bytes
-rw-r--r--default_images/svx/res/plastic_16.pngbin0 -> 462 bytes
-rw-r--r--default_images/svx/res/plastic_16_h.pngbin0 -> 144 bytes
-rw-r--r--default_images/svx/res/plus_h.pngbin0 -> 81 bytes
-rw-r--r--default_images/svx/res/pr01.pngbin0 -> 186 bytes
-rw-r--r--default_images/svx/res/pr010.pngbin0 -> 189 bytes
-rw-r--r--default_images/svx/res/pr011.pngbin0 -> 215 bytes
-rw-r--r--default_images/svx/res/pr012.pngbin0 -> 191 bytes
-rw-r--r--default_images/svx/res/pr013.pngbin0 -> 103 bytes
-rw-r--r--default_images/svx/res/pr014.pngbin0 -> 242 bytes
-rw-r--r--default_images/svx/res/pr015.pngbin0 -> 190 bytes
-rw-r--r--default_images/svx/res/pr016.pngbin0 -> 239 bytes
-rw-r--r--default_images/svx/res/pr017.pngbin0 -> 201 bytes
-rw-r--r--default_images/svx/res/pr018.pngbin0 -> 226 bytes
-rw-r--r--default_images/svx/res/pr019.pngbin0 -> 228 bytes
-rw-r--r--default_images/svx/res/pr02.pngbin0 -> 186 bytes
-rw-r--r--default_images/svx/res/pr020.pngbin0 -> 216 bytes
-rw-r--r--default_images/svx/res/pr021.pngbin0 -> 256 bytes
-rw-r--r--default_images/svx/res/pr03.pngbin0 -> 185 bytes
-rw-r--r--default_images/svx/res/pr04.pngbin0 -> 186 bytes
-rw-r--r--default_images/svx/res/pr05.pngbin0 -> 200 bytes
-rw-r--r--default_images/svx/res/pr06.pngbin0 -> 216 bytes
-rw-r--r--default_images/svx/res/pr07.pngbin0 -> 103 bytes
-rw-r--r--default_images/svx/res/pr08.pngbin0 -> 101 bytes
-rw-r--r--default_images/svx/res/pr09.pngbin0 -> 234 bytes
-rw-r--r--default_images/svx/res/prh01.pngbin0 -> 86 bytes
-rw-r--r--default_images/svx/res/prh010.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/prh011.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/prh012.pngbin0 -> 87 bytes
-rw-r--r--default_images/svx/res/prh013.pngbin0 -> 87 bytes
-rw-r--r--default_images/svx/res/prh014.pngbin0 -> 99 bytes
-rw-r--r--default_images/svx/res/prh015.pngbin0 -> 92 bytes
-rw-r--r--default_images/svx/res/prh016.pngbin0 -> 103 bytes
-rw-r--r--default_images/svx/res/prh017.pngbin0 -> 88 bytes
-rw-r--r--default_images/svx/res/prh018.pngbin0 -> 101 bytes
-rw-r--r--default_images/svx/res/prh019.pngbin0 -> 94 bytes
-rw-r--r--default_images/svx/res/prh02.pngbin0 -> 90 bytes
-rw-r--r--default_images/svx/res/prh020.pngbin0 -> 93 bytes
-rw-r--r--default_images/svx/res/prh021.pngbin0 -> 117 bytes
-rw-r--r--default_images/svx/res/prh03.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/prh04.pngbin0 -> 88 bytes
-rw-r--r--default_images/svx/res/prh05.pngbin0 -> 87 bytes
-rw-r--r--default_images/svx/res/prh06.pngbin0 -> 136 bytes
-rw-r--r--default_images/svx/res/prh07.pngbin0 -> 85 bytes
-rw-r--r--default_images/svx/res/prh08.pngbin0 -> 89 bytes
-rw-r--r--default_images/svx/res/prh09.pngbin0 -> 94 bytes
-rw-r--r--default_images/svx/res/rectbtns.pngbin0 -> 170 bytes
-rw-r--r--default_images/svx/res/reload.pngbin0 -> 583 bytes
-rw-r--r--default_images/svx/res/reloads.pngbin0 -> 194 bytes
-rw-r--r--default_images/svx/res/replac3d.pngbin0 -> 157 bytes
-rw-r--r--default_images/svx/res/replac3d_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/svx/res/rotate3d.pngbin0 -> 490 bytes
-rw-r--r--default_images/svx/res/rotate3d_h.pngbin0 -> 136 bytes
-rw-r--r--default_images/svx/res/sc10350_h.pngbin0 -> 138 bytes
-rw-r--r--default_images/svx/res/sh01.pngbin0 -> 187 bytes
-rw-r--r--default_images/svx/res/sh02.pngbin0 -> 198 bytes
-rw-r--r--default_images/svx/res/sh03.pngbin0 -> 197 bytes
-rw-r--r--default_images/svx/res/sh04.pngbin0 -> 195 bytes
-rw-r--r--default_images/svx/res/sh05.pngbin0 -> 197 bytes
-rw-r--r--default_images/svx/res/shadow3d.pngbin0 -> 121 bytes
-rw-r--r--default_images/svx/res/shadow3d_h.pngbin0 -> 111 bytes
-rw-r--r--default_images/svx/res/shh01.pngbin0 -> 83 bytes
-rw-r--r--default_images/svx/res/shh02.pngbin0 -> 102 bytes
-rw-r--r--default_images/svx/res/shh03.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/shh04.pngbin0 -> 103 bytes
-rw-r--r--default_images/svx/res/shh05.pngbin0 -> 105 bytes
-rw-r--r--default_images/svx/res/signet_11x16.pngbin0 -> 406 bytes
-rw-r--r--default_images/svx/res/signet_11x16_h.pngbin0 -> 145 bytes
-rw-r--r--default_images/svx/res/slidezoomin_11.pngbin0 -> 373 bytes
-rw-r--r--default_images/svx/res/slidezoomin_11_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/svx/res/slidezoomout_11.pngbin0 -> 354 bytes
-rw-r--r--default_images/svx/res/slidezoomout_11_h.pngbin0 -> 119 bytes
-rw-r--r--default_images/svx/res/spellerr.pngbin0 -> 510 bytes
-rw-r--r--default_images/svx/res/spellok.pngbin0 -> 477 bytes
-rw-r--r--default_images/svx/res/sphere3d.pngbin0 -> 572 bytes
-rw-r--r--default_images/svx/res/sphere3d_h.pngbin0 -> 122 bytes
-rw-r--r--default_images/svx/res/time.pngbin0 -> 574 bytes
-rw-r--r--default_images/svx/res/time_h.pngbin0 -> 163 bytes
-rw-r--r--default_images/svx/res/tr10416.pngbin0 -> 1400 bytes
-rw-r--r--default_images/svx/res/tr10432.pngbin0 -> 2289 bytes
-rw-r--r--default_images/svx/res/tr10433.pngbin0 -> 1967 bytes
-rw-r--r--default_images/svx/res/tr10434.pngbin0 -> 2354 bytes
-rw-r--r--default_images/svx/res/tr10435.pngbin0 -> 2113 bytes
-rw-r--r--default_images/svx/res/tr10436.pngbin0 -> 2134 bytes
-rw-r--r--default_images/svx/res/tr10437.pngbin0 -> 1107 bytes
-rw-r--r--default_images/svx/res/tr10439.pngbin0 -> 1966 bytes
-rw-r--r--default_images/svx/res/tr10447.pngbin0 -> 2285 bytes
-rw-r--r--default_images/svx/res/tr10450.pngbin0 -> 2365 bytes
-rw-r--r--default_images/svx/res/tr10452.pngbin0 -> 1137 bytes
-rw-r--r--default_images/svx/res/tr10921.pngbin0 -> 2321 bytes
-rw-r--r--default_images/svx/res/trh10416.pngbin0 -> 332 bytes
-rw-r--r--default_images/svx/res/trh10432.pngbin0 -> 243 bytes
-rw-r--r--default_images/svx/res/trh10433.pngbin0 -> 259 bytes
-rw-r--r--default_images/svx/res/trh10434.pngbin0 -> 284 bytes
-rw-r--r--default_images/svx/res/trh10435.pngbin0 -> 268 bytes
-rw-r--r--default_images/svx/res/trh10436.pngbin0 -> 267 bytes
-rw-r--r--default_images/svx/res/trh10437.pngbin0 -> 228 bytes
-rw-r--r--default_images/svx/res/trh10439.pngbin0 -> 258 bytes
-rw-r--r--default_images/svx/res/trh10447.pngbin0 -> 281 bytes
-rw-r--r--default_images/svx/res/trh10450.pngbin0 -> 285 bytes
-rw-r--r--default_images/svx/res/trh10452.pngbin0 -> 228 bytes
-rw-r--r--default_images/svx/res/trh10921.pngbin0 -> 344 bytes
-rw-r--r--default_images/svx/res/vendor01.pngbin0 -> 2948 bytes
-rw-r--r--default_images/svx/res/vendor01h.pngbin0 -> 2949 bytes
-rw-r--r--default_images/svx/res/wireframe_16.pngbin0 -> 226 bytes
-rw-r--r--default_images/svx/res/wireframe_16_h.pngbin0 -> 133 bytes
-rw-r--r--default_images/svx/res/zetlhor2.pngbin0 -> 111 bytes
-rw-r--r--default_images/svx/res/zetlhor2_h.pngbin0 -> 97 bytes
-rw-r--r--default_images/svx/res/zetlver2.pngbin0 -> 120 bytes
-rw-r--r--default_images/svx/res/zetlver2_h.pngbin0 -> 91 bytes
-rw-r--r--default_images/svx/source/svdraw/cropmarkers.pngbin0 -> 239 bytes
-rw-r--r--default_images/svx/source/svdraw/cropmarkers2.pngbin0 -> 348 bytes
-rw-r--r--default_images/svx/source/svdraw/cropmarkersACC.pngbin0 -> 239 bytes
-rw-r--r--default_images/svx/source/svdraw/markers.pngbin0 -> 1208 bytes
-rw-r--r--default_images/svx/source/svdraw/markers2.pngbin0 -> 2250 bytes
-rw-r--r--default_images/svx/source/svdraw/markersACC.pngbin0 -> 1042 bytes
-rw-r--r--default_images/sw/imglst/lc20556.pngbin0 -> 584 bytes
-rw-r--r--default_images/sw/imglst/lc20557.pngbin0 -> 551 bytes
-rw-r--r--default_images/sw/imglst/lc20558.pngbin0 -> 410 bytes
-rw-r--r--default_images/sw/imglst/lch20556.pngbin0 -> 195 bytes
-rw-r--r--default_images/sw/imglst/lch20557.pngbin0 -> 158 bytes
-rw-r--r--default_images/sw/imglst/lch20558.pngbin0 -> 128 bytes
-rw-r--r--default_images/sw/imglst/nc20000.pngbin0 -> 97 bytes
-rw-r--r--default_images/sw/imglst/nc20001.pngbin0 -> 244 bytes
-rw-r--r--default_images/sw/imglst/nc20002.pngbin0 -> 282 bytes
-rw-r--r--default_images/sw/imglst/nc20003.pngbin0 -> 517 bytes
-rw-r--r--default_images/sw/imglst/nc20004.pngbin0 -> 360 bytes
-rw-r--r--default_images/sw/imglst/nc20005.pngbin0 -> 458 bytes
-rw-r--r--default_images/sw/imglst/nc20006.pngbin0 -> 99 bytes
-rw-r--r--default_images/sw/imglst/nc20007.pngbin0 -> 314 bytes
-rw-r--r--default_images/sw/imglst/nc20008.pngbin0 -> 334 bytes
-rw-r--r--default_images/sw/imglst/nc20009.pngbin0 -> 256 bytes
-rw-r--r--default_images/sw/imglst/nc20010.pngbin0 -> 430 bytes
-rw-r--r--default_images/sw/imglst/nc20011.pngbin0 -> 517 bytes
-rw-r--r--default_images/sw/imglst/nch20000.pngbin0 -> 96 bytes
-rw-r--r--default_images/sw/imglst/nch20001.pngbin0 -> 75 bytes
-rw-r--r--default_images/sw/imglst/nch20002.pngbin0 -> 101 bytes
-rw-r--r--default_images/sw/imglst/nch20003.pngbin0 -> 126 bytes
-rw-r--r--default_images/sw/imglst/nch20004.pngbin0 -> 101 bytes
-rw-r--r--default_images/sw/imglst/nch20005.pngbin0 -> 153 bytes
-rw-r--r--default_images/sw/imglst/nch20006.pngbin0 -> 92 bytes
-rw-r--r--default_images/sw/imglst/nch20007.pngbin0 -> 125 bytes
-rw-r--r--default_images/sw/imglst/nch20008.pngbin0 -> 130 bytes
-rw-r--r--default_images/sw/imglst/nch20009.pngbin0 -> 109 bytes
-rw-r--r--default_images/sw/imglst/nch20010.pngbin0 -> 127 bytes
-rw-r--r--default_images/sw/imglst/nch20011.pngbin0 -> 126 bytes
-rw-r--r--default_images/sw/imglst/re01.pngbin0 -> 209 bytes
-rw-r--r--default_images/sw/imglst/re02.pngbin0 -> 311 bytes
-rw-r--r--default_images/sw/imglst/re03.pngbin0 -> 184 bytes
-rw-r--r--default_images/sw/imglst/re04.pngbin0 -> 288 bytes
-rw-r--r--default_images/sw/imglst/reh01.pngbin0 -> 102 bytes
-rw-r--r--default_images/sw/imglst/reh02.pngbin0 -> 134 bytes
-rw-r--r--default_images/sw/imglst/reh03.pngbin0 -> 92 bytes
-rw-r--r--default_images/sw/imglst/reh04.pngbin0 -> 125 bytes
-rw-r--r--default_images/sw/imglst/sc20171.pngbin0 -> 249 bytes
-rw-r--r--default_images/sw/imglst/sc20172.pngbin0 -> 241 bytes
-rw-r--r--default_images/sw/imglst/sc20173.pngbin0 -> 238 bytes
-rw-r--r--default_images/sw/imglst/sc20174.pngbin0 -> 244 bytes
-rw-r--r--default_images/sw/imglst/sc20175.pngbin0 -> 422 bytes
-rw-r--r--default_images/sw/imglst/sc20177.pngbin0 -> 427 bytes
-rw-r--r--default_images/sw/imglst/sc20179.pngbin0 -> 434 bytes
-rw-r--r--default_images/sw/imglst/sc20182.pngbin0 -> 434 bytes
-rw-r--r--default_images/sw/imglst/sc20183.pngbin0 -> 374 bytes
-rw-r--r--default_images/sw/imglst/sc20186.pngbin0 -> 421 bytes
-rw-r--r--default_images/sw/imglst/sc20233.pngbin0 -> 409 bytes
-rw-r--r--default_images/sw/imglst/sc20234.pngbin0 -> 526 bytes
-rw-r--r--default_images/sw/imglst/sc20235.pngbin0 -> 314 bytes
-rw-r--r--default_images/sw/imglst/sc20236.pngbin0 -> 111 bytes
-rw-r--r--default_images/sw/imglst/sc20238.pngbin0 -> 302 bytes
-rw-r--r--default_images/sw/imglst/sc20239.pngbin0 -> 425 bytes
-rw-r--r--default_images/sw/imglst/sc20244.pngbin0 -> 526 bytes
-rw-r--r--default_images/sw/imglst/sc20245.pngbin0 -> 462 bytes
-rw-r--r--default_images/sw/imglst/sc20246.pngbin0 -> 460 bytes
-rw-r--r--default_images/sw/imglst/sc20247.pngbin0 -> 477 bytes
-rw-r--r--default_images/sw/imglst/sc20248.pngbin0 -> 454 bytes
-rw-r--r--default_images/sw/imglst/sc20249.pngbin0 -> 498 bytes
-rw-r--r--default_images/sw/imglst/sc20556.pngbin0 -> 356 bytes
-rw-r--r--default_images/sw/imglst/sc20557.pngbin0 -> 296 bytes
-rw-r--r--default_images/sw/imglst/sc20558.pngbin0 -> 266 bytes
-rw-r--r--default_images/sw/imglst/sch20171.pngbin0 -> 126 bytes
-rw-r--r--default_images/sw/imglst/sch20172.pngbin0 -> 99 bytes
-rw-r--r--default_images/sw/imglst/sch20173.pngbin0 -> 99 bytes
-rw-r--r--default_images/sw/imglst/sch20174.pngbin0 -> 124 bytes
-rw-r--r--default_images/sw/imglst/sch20175.pngbin0 -> 145 bytes
-rw-r--r--default_images/sw/imglst/sch20177.pngbin0 -> 141 bytes
-rw-r--r--default_images/sw/imglst/sch20179.pngbin0 -> 147 bytes
-rw-r--r--default_images/sw/imglst/sch20182.pngbin0 -> 145 bytes
-rw-r--r--default_images/sw/imglst/sch20183.pngbin0 -> 116 bytes
-rw-r--r--default_images/sw/imglst/sch20186.pngbin0 -> 147 bytes
-rw-r--r--default_images/sw/imglst/sch20233.pngbin0 -> 147 bytes
-rw-r--r--default_images/sw/imglst/sch20234.pngbin0 -> 137 bytes
-rw-r--r--default_images/sw/imglst/sch20235.pngbin0 -> 125 bytes
-rw-r--r--default_images/sw/imglst/sch20236.pngbin0 -> 121 bytes
-rw-r--r--default_images/sw/imglst/sch20238.pngbin0 -> 99 bytes
-rw-r--r--default_images/sw/imglst/sch20239.pngbin0 -> 124 bytes
-rw-r--r--default_images/sw/imglst/sch20244.pngbin0 -> 137 bytes
-rw-r--r--default_images/sw/imglst/sch20245.pngbin0 -> 162 bytes
-rw-r--r--default_images/sw/imglst/sch20246.pngbin0 -> 129 bytes
-rw-r--r--default_images/sw/imglst/sch20247.pngbin0 -> 147 bytes
-rw-r--r--default_images/sw/imglst/sch20248.pngbin0 -> 135 bytes
-rw-r--r--default_images/sw/imglst/sch20249.pngbin0 -> 120 bytes
-rw-r--r--default_images/sw/imglst/sch20556.pngbin0 -> 153 bytes
-rw-r--r--default_images/sw/imglst/sch20557.pngbin0 -> 134 bytes
-rw-r--r--default_images/sw/imglst/sch20558.pngbin0 -> 116 bytes
-rw-r--r--default_images/sw/imglst/sf01.pngbin0 -> 464 bytes
-rw-r--r--default_images/sw/imglst/sf02.pngbin0 -> 470 bytes
-rw-r--r--default_images/sw/imglst/sf03.pngbin0 -> 371 bytes
-rw-r--r--default_images/sw/imglst/sf04.pngbin0 -> 417 bytes
-rw-r--r--default_images/sw/imglst/sf05.pngbin0 -> 494 bytes
-rw-r--r--default_images/sw/imglst/sfh01.pngbin0 -> 122 bytes
-rw-r--r--default_images/sw/imglst/sfh02.pngbin0 -> 139 bytes
-rw-r--r--default_images/sw/imglst/sfh03.pngbin0 -> 126 bytes
-rw-r--r--default_images/sw/imglst/sfh04.pngbin0 -> 122 bytes
-rw-r--r--default_images/sw/imglst/sfh05.pngbin0 -> 121 bytes
-rw-r--r--default_images/sw/imglst/sr20000.pngbin0 -> 184 bytes
-rw-r--r--default_images/sw/imglst/sr20001.pngbin0 -> 190 bytes
-rw-r--r--default_images/sw/imglst/sr20002.pngbin0 -> 244 bytes
-rw-r--r--default_images/sw/imglst/sr20003.pngbin0 -> 282 bytes
-rw-r--r--default_images/sw/imglst/sr20004.pngbin0 -> 351 bytes
-rw-r--r--default_images/sw/imglst/sr20005.pngbin0 -> 492 bytes
-rw-r--r--default_images/sw/imglst/sr20006.pngbin0 -> 424 bytes
-rw-r--r--default_images/sw/imglst/sr20007.pngbin0 -> 99 bytes
-rw-r--r--default_images/sw/imglst/sr20008.pngbin0 -> 458 bytes
-rw-r--r--default_images/sw/imglst/sr20009.pngbin0 -> 517 bytes
-rw-r--r--default_images/sw/imglst/sr20010.pngbin0 -> 360 bytes
-rw-r--r--default_images/sw/imglst/sr20011.pngbin0 -> 97 bytes
-rw-r--r--default_images/sw/imglst/sr20012.pngbin0 -> 245 bytes
-rw-r--r--default_images/sw/imglst/sr20013.pngbin0 -> 553 bytes
-rw-r--r--default_images/sw/imglst/sr20014.pngbin0 -> 374 bytes
-rw-r--r--default_images/sw/imglst/sr20015.pngbin0 -> 430 bytes
-rw-r--r--default_images/sw/imglst/sr20016.pngbin0 -> 648 bytes
-rw-r--r--default_images/sw/imglst/sr20017.pngbin0 -> 226 bytes
-rw-r--r--default_images/sw/imglst/sr20018.pngbin0 -> 382 bytes
-rw-r--r--default_images/sw/imglst/sr20019.pngbin0 -> 376 bytes
-rw-r--r--default_images/sw/imglst/srh20000.pngbin0 -> 92 bytes
-rw-r--r--default_images/sw/imglst/srh20001.pngbin0 -> 96 bytes
-rw-r--r--default_images/sw/imglst/srh20002.pngbin0 -> 75 bytes
-rw-r--r--default_images/sw/imglst/srh20003.pngbin0 -> 101 bytes
-rw-r--r--default_images/sw/imglst/srh20004.pngbin0 -> 108 bytes
-rw-r--r--default_images/sw/imglst/srh20005.pngbin0 -> 143 bytes
-rw-r--r--default_images/sw/imglst/srh20006.pngbin0 -> 153 bytes
-rw-r--r--default_images/sw/imglst/srh20007.pngbin0 -> 92 bytes
-rw-r--r--default_images/sw/imglst/srh20008.pngbin0 -> 153 bytes
-rw-r--r--default_images/sw/imglst/srh20009.pngbin0 -> 126 bytes
-rw-r--r--default_images/sw/imglst/srh20010.pngbin0 -> 101 bytes
-rw-r--r--default_images/sw/imglst/srh20011.pngbin0 -> 96 bytes
-rw-r--r--default_images/sw/imglst/srh20012.pngbin0 -> 112 bytes
-rw-r--r--default_images/sw/imglst/srh20013.pngbin0 -> 151 bytes
-rw-r--r--default_images/sw/imglst/srh20014.pngbin0 -> 115 bytes
-rw-r--r--default_images/sw/imglst/srh20015.pngbin0 -> 127 bytes
-rw-r--r--default_images/sw/imglst/srh20016.pngbin0 -> 166 bytes
-rw-r--r--default_images/sw/imglst/srh20017.pngbin0 -> 110 bytes
-rw-r--r--default_images/sw/imglst/srh20018.pngbin0 -> 112 bytes
-rw-r--r--default_images/sw/imglst/srh20019.pngbin0 -> 139 bytes
-rw-r--r--default_images/sw/imglst/sx01.pngbin0 -> 159 bytes
-rw-r--r--default_images/sw/imglst/sx02.pngbin0 -> 226 bytes
-rw-r--r--default_images/sw/imglst/sx03.pngbin0 -> 514 bytes
-rw-r--r--default_images/sw/imglst/sxh01.pngbin0 -> 173 bytes
-rw-r--r--default_images/sw/imglst/sxh02.pngbin0 -> 100 bytes
-rw-r--r--default_images/sw/imglst/sxh03.pngbin0 -> 147 bytes
-rw-r--r--default_images/sw/imglst/wr01.pngbin0 -> 297 bytes
-rw-r--r--default_images/sw/imglst/wr010.pngbin0 -> 394 bytes
-rw-r--r--default_images/sw/imglst/wr011.pngbin0 -> 378 bytes
-rw-r--r--default_images/sw/imglst/wr02.pngbin0 -> 310 bytes
-rw-r--r--default_images/sw/imglst/wr03.pngbin0 -> 309 bytes
-rw-r--r--default_images/sw/imglst/wr04.pngbin0 -> 310 bytes
-rw-r--r--default_images/sw/imglst/wr05.pngbin0 -> 321 bytes
-rw-r--r--default_images/sw/imglst/wr06.pngbin0 -> 309 bytes
-rw-r--r--default_images/sw/imglst/wr07.pngbin0 -> 357 bytes
-rw-r--r--default_images/sw/imglst/wr08.pngbin0 -> 375 bytes
-rw-r--r--default_images/sw/imglst/wr09.pngbin0 -> 378 bytes
-rw-r--r--default_images/sw/imglst/wrh01.pngbin0 -> 118 bytes
-rw-r--r--default_images/sw/imglst/wrh010.pngbin0 -> 170 bytes
-rw-r--r--default_images/sw/imglst/wrh011.pngbin0 -> 161 bytes
-rw-r--r--default_images/sw/imglst/wrh02.pngbin0 -> 131 bytes
-rw-r--r--default_images/sw/imglst/wrh03.pngbin0 -> 132 bytes
-rw-r--r--default_images/sw/imglst/wrh04.pngbin0 -> 136 bytes
-rw-r--r--default_images/sw/imglst/wrh05.pngbin0 -> 142 bytes
-rw-r--r--default_images/sw/imglst/wrh06.pngbin0 -> 132 bytes
-rw-r--r--default_images/sw/imglst/wrh07.pngbin0 -> 150 bytes
-rw-r--r--default_images/sw/imglst/wrh08.pngbin0 -> 159 bytes
-rw-r--r--default_images/sw/imglst/wrh09.pngbin0 -> 160 bytes
-rw-r--r--default_images/sw/res/all_left.pngbin0 -> 266 bytes
-rw-r--r--default_images/sw/res/all_left_h.pngbin0 -> 81 bytes
-rw-r--r--default_images/sw/res/all_right.pngbin0 -> 266 bytes
-rw-r--r--default_images/sw/res/all_right_h.pngbin0 -> 81 bytes
-rw-r--r--default_images/sw/res/anchor.pngbin0 -> 264 bytes
-rw-r--r--default_images/sw/res/danchor.pngbin0 -> 264 bytes
-rw-r--r--default_images/sw/res/dog.pngbin0 -> 787 bytes
-rw-r--r--default_images/sw/res/dog_h.pngbin0 -> 197 bytes
-rw-r--r--default_images/sw/res/doublepage_11x23.pngbin0 -> 321 bytes
-rw-r--r--default_images/sw/res/doublepage_11x23_h.pngbin0 -> 116 bytes
-rw-r--r--default_images/sw/res/doublepage_a_11x23.pngbin0 -> 321 bytes
-rw-r--r--default_images/sw/res/doublepage_a_11x23_h.pngbin0 -> 127 bytes
-rw-r--r--default_images/sw/res/emptypage_11x15.pngbin0 -> 279 bytes
-rw-r--r--default_images/sw/res/emptypage_11x15_h.pngbin0 -> 99 bytes
-rw-r--r--default_images/sw/res/emptypage_a_11x15.pngbin0 -> 277 bytes
-rw-r--r--default_images/sw/res/emptypage_a_11x15_h.pngbin0 -> 111 bytes
-rw-r--r--default_images/sw/res/envhc_l.pngbin0 -> 854 bytes
-rw-r--r--default_images/sw/res/envhc_l_h.pngbin0 -> 142 bytes
-rw-r--r--default_images/sw/res/envhc_u.pngbin0 -> 740 bytes
-rw-r--r--default_images/sw/res/envhc_u_h.pngbin0 -> 130 bytes
-rw-r--r--default_images/sw/res/envhl_l.pngbin0 -> 813 bytes
-rw-r--r--default_images/sw/res/envhl_l_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/sw/res/envhl_u.pngbin0 -> 701 bytes
-rw-r--r--default_images/sw/res/envhl_u_h.pngbin0 -> 130 bytes
-rw-r--r--default_images/sw/res/envhr_l.pngbin0 -> 822 bytes
-rw-r--r--default_images/sw/res/envhr_l_h.pngbin0 -> 140 bytes
-rw-r--r--default_images/sw/res/envhr_u.pngbin0 -> 704 bytes
-rw-r--r--default_images/sw/res/envhr_u_h.pngbin0 -> 129 bytes
-rw-r--r--default_images/sw/res/envvc_l.pngbin0 -> 949 bytes
-rw-r--r--default_images/sw/res/envvc_l_h.pngbin0 -> 143 bytes
-rw-r--r--default_images/sw/res/envvc_u.pngbin0 -> 779 bytes
-rw-r--r--default_images/sw/res/envvc_u_h.pngbin0 -> 138 bytes
-rw-r--r--default_images/sw/res/envvl_l.pngbin0 -> 898 bytes
-rw-r--r--default_images/sw/res/envvl_l_h.pngbin0 -> 142 bytes
-rw-r--r--default_images/sw/res/envvl_u.pngbin0 -> 740 bytes
-rw-r--r--default_images/sw/res/envvl_u_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/sw/res/envvr_l.pngbin0 -> 899 bytes
-rw-r--r--default_images/sw/res/envvr_l_h.pngbin0 -> 142 bytes
-rw-r--r--default_images/sw/res/envvr_u.pngbin0 -> 743 bytes
-rw-r--r--default_images/sw/res/envvr_u_h.pngbin0 -> 135 bytes
-rw-r--r--default_images/sw/res/one_left.pngbin0 -> 251 bytes
-rw-r--r--default_images/sw/res/one_left_h.pngbin0 -> 79 bytes
-rw-r--r--default_images/sw/res/one_right.pngbin0 -> 253 bytes
-rw-r--r--default_images/sw/res/one_right_h.pngbin0 -> 79 bytes
-rw-r--r--default_images/sw/res/punkt.pngbin0 -> 245 bytes
-rw-r--r--default_images/sw/res/punkt_h.pngbin0 -> 105 bytes
-rw-r--r--default_images/sw/res/styfamnu.pngbin0 -> 494 bytes
-rw-r--r--default_images/sw/res/styfamnu_h.pngbin0 -> 121 bytes
-rw-r--r--default_images/sw/res/twopages_11x25.pngbin0 -> 303 bytes
-rw-r--r--default_images/sw/res/twopages_11x25_h.pngbin0 -> 114 bytes
-rw-r--r--default_images/sw/res/twopages_a_11x25.pngbin0 -> 303 bytes
-rw-r--r--default_images/sw/res/twopages_a_11x25_h.pngbin0 -> 124 bytes
-rw-r--r--default_images/sw/res/x.pngbin0 -> 202 bytes
-rw-r--r--default_images/sw/res/zetlhor2.pngbin0 -> 359 bytes
-rw-r--r--default_images/sw/res/zetlhor2_h.pngbin0 -> 171 bytes
-rw-r--r--default_images/sw/res/zetlver2.pngbin0 -> 387 bytes
-rw-r--r--default_images/sw/res/zetlver2_h.pngbin0 -> 104 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_01.pngbin0 -> 137 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_02.pngbin0 -> 135 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_03.pngbin0 -> 139 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_04.pngbin0 -> 135 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_05.pngbin0 -> 131 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_06.pngbin0 -> 133 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_07.pngbin0 -> 136 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_08.pngbin0 -> 133 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_09.pngbin0 -> 139 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_10.pngbin0 -> 136 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_11.pngbin0 -> 131 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-32-hc_12.pngbin0 -> 134 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_01.pngbin0 -> 260 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_02.pngbin0 -> 262 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_03.pngbin0 -> 264 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_04.pngbin0 -> 266 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_05.pngbin0 -> 265 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_06.pngbin0 -> 266 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_07.pngbin0 -> 267 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_08.pngbin0 -> 262 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_09.pngbin0 -> 261 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_10.pngbin0 -> 260 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_11.pngbin0 -> 259 bytes
-rw-r--r--default_images/toolkit/source/awt/spinner03-grey_12.pngbin0 -> 264 bytes
-rw-r--r--default_images/vcl/source/src/check.pngbin0 -> 245 bytes
-rw-r--r--default_images/vcl/source/src/checkmac.pngbin0 -> 228 bytes
-rw-r--r--default_images/vcl/source/src/checkmono.bmpbin0 -> 898 bytes
-rw-r--r--default_images/vcl/source/src/checkos2.pngbin0 -> 263 bytes
-rw-r--r--default_images/vcl/source/src/checkunx.pngbin0 -> 130 bytes
-rw-r--r--default_images/vcl/source/src/checkwin.pngbin0 -> 245 bytes
-rw-r--r--default_images/vcl/source/src/closedoc.pngbin0 -> 162 bytes
-rw-r--r--default_images/vcl/source/src/closedochc.pngbin0 -> 102 bytes
-rw-r--r--default_images/vcl/source/src/collate.pngbin0 -> 319 bytes
-rw-r--r--default_images/vcl/source/src/collate_h.pngbin0 -> 231 bytes
-rw-r--r--default_images/vcl/source/src/msgbox.pngbin0 -> 4432 bytes
-rw-r--r--default_images/vcl/source/src/msgbox_hc.pngbin0 -> 514 bytes
-rw-r--r--default_images/vcl/source/src/ncollate.pngbin0 -> 314 bytes
-rw-r--r--default_images/vcl/source/src/ncollate_h.pngbin0 -> 226 bytes
-rw-r--r--default_images/vcl/source/src/pin.pngbin0 -> 231 bytes
-rw-r--r--default_images/vcl/source/src/radio.pngbin0 -> 191 bytes
-rw-r--r--default_images/vcl/source/src/radiomac.pngbin0 -> 259 bytes
-rw-r--r--default_images/vcl/source/src/radiomono.bmpbin0 -> 638 bytes
-rw-r--r--default_images/vcl/source/src/radioos2.pngbin0 -> 269 bytes
-rw-r--r--default_images/vcl/source/src/radiounx.pngbin0 -> 221 bytes
-rw-r--r--default_images/vcl/source/src/radiowin.pngbin0 -> 191 bytes
-rw-r--r--default_images/vcl/source/src/scrbmp.pngbin0 -> 500 bytes
-rw-r--r--default_images/vcl/source/src/scrmsk.pngbin0 -> 118 bytes
-rw-r--r--default_images/vcl/source/src/splharw.pngbin0 -> 158 bytes
-rw-r--r--default_images/vcl/source/src/splhpin.pngbin0 -> 210 bytes
-rw-r--r--default_images/vcl/source/src/splvarw.pngbin0 -> 180 bytes
-rw-r--r--default_images/vcl/source/src/splvpin.pngbin0 -> 206 bytes
-rw-r--r--default_images/wizards/res/diagonal.pngbin0 -> 236 bytes
-rw-r--r--default_images/wizards/res/diagonal_h.pngbin0 -> 231 bytes
-rw-r--r--default_images/wizards/res/formarrangefree_42.pngbin0 -> 199 bytes
-rw-r--r--default_images/wizards/res/formarrangefree_42_h.pngbin0 -> 172 bytes
-rw-r--r--default_images/wizards/res/formarrangelistside_42.pngbin0 -> 157 bytes
-rw-r--r--default_images/wizards/res/formarrangelistside_42_h.pngbin0 -> 130 bytes
-rw-r--r--default_images/wizards/res/formarrangelisttop_42.pngbin0 -> 156 bytes
-rw-r--r--default_images/wizards/res/formarrangelisttop_42_h.pngbin0 -> 132 bytes
-rw-r--r--default_images/wizards/res/formarrangetable_42.pngbin0 -> 158 bytes
-rw-r--r--default_images/wizards/res/formarrangetable_42_h.pngbin0 -> 127 bytes
-rw-r--r--default_images/wizards/res/frame_bottom.pngbin0 -> 192 bytes
-rw-r--r--default_images/wizards/res/frame_bottom_h.pngbin0 -> 167 bytes
-rw-r--r--default_images/wizards/res/frame_left.pngbin0 -> 188 bytes
-rw-r--r--default_images/wizards/res/frame_left_h.pngbin0 -> 159 bytes
-rw-r--r--default_images/wizards/res/frame_right.pngbin0 -> 188 bytes
-rw-r--r--default_images/wizards/res/frame_right_h.pngbin0 -> 158 bytes
-rw-r--r--default_images/wizards/res/frame_top.pngbin0 -> 192 bytes
-rw-r--r--default_images/wizards/res/frame_top_h.pngbin0 -> 170 bytes
-rw-r--r--default_images/wizards/res/landscape_32.pngbin0 -> 501 bytes
-rw-r--r--default_images/wizards/res/landscape_32_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/wizards/res/portrait_32.pngbin0 -> 492 bytes
-rw-r--r--default_images/wizards/res/portrait_32_h.pngbin0 -> 125 bytes
-rw-r--r--default_images/wizards/res/simple.pngbin0 -> 179 bytes
-rw-r--r--default_images/wizards/res/simple_h.pngbin0 -> 159 bytes
-rw-r--r--default_images/wizards/res/table_2.pngbin0 -> 194 bytes
-rw-r--r--default_images/wizards/res/table_2_h.pngbin0 -> 180 bytes
-rw-r--r--default_images/wizards/res/table_3.pngbin0 -> 189 bytes
-rw-r--r--default_images/wizards/res/table_3_h.pngbin0 -> 167 bytes
-rw-r--r--default_images/wizards/res/ttt.pngbin0 -> 749 bytes
-rw-r--r--default_images/wizards/res/zigzag.pngbin0 -> 249 bytes
-rw-r--r--default_images/wizards/res/zigzag_h.pngbin0 -> 240 bytes
-rw-r--r--default_images/xmlsecurity/res/caution_11x16.pngbin0 -> 358 bytes
-rw-r--r--default_images/xmlsecurity/res/caution_11x16_h.pngbin0 -> 139 bytes
-rw-r--r--default_images/xmlsecurity/res/certificate_16.pngbin0 -> 468 bytes
-rw-r--r--default_images/xmlsecurity/res/certificate_16_h.pngbin0 -> 157 bytes
-rw-r--r--default_images/xmlsecurity/res/certificate_40x56.pngbin0 -> 2021 bytes
-rw-r--r--default_images/xmlsecurity/res/certificate_40x56_h.pngbin0 -> 266 bytes
-rw-r--r--default_images/xmlsecurity/res/key_12.pngbin0 -> 255 bytes
-rw-r--r--default_images/xmlsecurity/res/key_12_h.pngbin0 -> 120 bytes
-rw-r--r--default_images/xmlsecurity/res/notcertificate_16.pngbin0 -> 617 bytes
-rw-r--r--default_images/xmlsecurity/res/notcertificate_16_h.pngbin0 -> 191 bytes
-rw-r--r--default_images/xmlsecurity/res/notcertificate_40x56.pngbin0 -> 2631 bytes
-rw-r--r--default_images/xmlsecurity/res/notcertificate_40x56_h.pngbin0 -> 371 bytes
-rw-r--r--default_images/xmlsecurity/res/signet_11x16.pngbin0 -> 406 bytes
-rw-r--r--default_images/xmlsecurity/res/signet_11x16_h.pngbin0 -> 144 bytes
-rw-r--r--dmake/.gitignore11
-rwxr-xr-xdmake/AUTHORS0
-rwxr-xr-xdmake/COPYING37
-rwxr-xr-xdmake/ChangeLog4259
-rwxr-xr-xdmake/INSTALL3
-rwxr-xr-xdmake/Makefile.am64
-rwxr-xr-xdmake/Makefile.in869
-rwxr-xr-xdmake/NEWS316
-rwxr-xr-xdmake/acinclude.m43
-rwxr-xr-xdmake/aclocal.m4908
-rw-r--r--dmake/alloc.h59
-rwxr-xr-xdmake/autogen.sh63
-rwxr-xr-xdmake/compile142
-rwxr-xr-xdmake/config.guess1463
-rw-r--r--dmake/config.h.in184
-rwxr-xr-xdmake/config.sub1579
-rwxr-xr-xdmake/configure9000
-rwxr-xr-xdmake/configure.in220
-rw-r--r--dmake/dag.c697
-rw-r--r--dmake/db.h66
-rw-r--r--dmake/dbug/dbug.mk66
-rw-r--r--dmake/dbug/dbug/dbug.c1806
-rw-r--r--dmake/dbug/dbug/dbug.h164
-rwxr-xr-xdmake/dbug/dbug/dbug.txt1452
-rw-r--r--dmake/dbug/dbug/dbug.uue368
-rwxr-xr-xdmake/dbug/dbug/example1.c12
-rwxr-xr-xdmake/dbug/dbug/example2.c17
-rwxr-xr-xdmake/dbug/dbug/example3.c16
-rwxr-xr-xdmake/dbug/dbug/factorial.c15
-rwxr-xr-xdmake/dbug/dbug/main.c27
-rwxr-xr-xdmake/dbug/dbug/makeman.sh18
-rw-r--r--dmake/dbug/dbug/readme52
-rwxr-xr-xdmake/dbug/dbug/user.r938
-rw-r--r--dmake/dbug/getwd.c6
-rw-r--r--dmake/dbug/malloc/_changes9
-rw-r--r--dmake/dbug/malloc/_readme133
-rw-r--r--dmake/dbug/malloc/calloc.c49
-rw-r--r--dmake/dbug/malloc/debug.h99
-rw-r--r--dmake/dbug/malloc/dump.c103
-rw-r--r--dmake/dbug/malloc/free.c150
-rw-r--r--dmake/dbug/malloc/m_init.c79
-rw-r--r--dmake/dbug/malloc/m_perror.c73
-rw-r--r--dmake/dbug/malloc/makefile77
-rw-r--r--dmake/dbug/malloc/malloc.3223
-rw-r--r--dmake/dbug/malloc/malloc.c627
-rw-r--r--dmake/dbug/malloc/malloc.h85
-rw-r--r--dmake/dbug/malloc/mallopt.c98
-rw-r--r--dmake/dbug/malloc/memory.c195
-rw-r--r--dmake/dbug/malloc/mlc_chk.c256
-rw-r--r--dmake/dbug/malloc/mlc_chn.c188
-rw-r--r--dmake/dbug/malloc/patchlev1
-rw-r--r--dmake/dbug/malloc/realloc.c180
-rw-r--r--dmake/dbug/malloc/string.c533
-rw-r--r--dmake/dbug/malloc/testmem.c618
-rw-r--r--dmake/dbug/malloc/testmlc.c176
-rw-r--r--dmake/dbug/malloc/tostring.c132
-rw-r--r--dmake/dbug/malloc/tostring.h13
-rw-r--r--dmake/dbug/readme13
-rwxr-xr-xdmake/depcomp530
-rw-r--r--dmake/dmake.c947
-rw-r--r--dmake/dmake.h230
-rw-r--r--dmake/dmakeroot.h.in6
-rw-r--r--dmake/dmdump.c287
-rw-r--r--dmake/dmstring.c300
-rw-r--r--dmake/dstdarg.h43
-rw-r--r--dmake/expand.c1204
-rw-r--r--dmake/extern.h192
-rw-r--r--dmake/function.c726
-rw-r--r--dmake/getinp.c854
-rw-r--r--dmake/hash.c54
-rw-r--r--dmake/imacs.c206
-rw-r--r--dmake/infer.c904
-rwxr-xr-xdmake/install-sh323
-rw-r--r--dmake/itypes.h82
-rw-r--r--dmake/macparse.c232
-rwxr-xr-xdmake/make.bat273
-rw-r--r--dmake/make.c1774
-rwxr-xr-xdmake/make.cmd115
-rw-r--r--dmake/makefile.mk432
-rw-r--r--dmake/man/dmake.nc3644
-rw-r--r--dmake/man/dmake.tf3480
-rw-r--r--dmake/man/readme12
-rwxr-xr-xdmake/missing360
-rwxr-xr-xdmake/mkinstalldirs158
-rw-r--r--dmake/msdos/arlib.c56
-rw-r--r--dmake/msdos/borland/bcc30/config.h48
-rw-r--r--dmake/msdos/borland/bcc30/config.mk8
-rw-r--r--dmake/msdos/borland/bcc30/lib.rsp1
-rw-r--r--dmake/msdos/borland/bcc30/libswp.rsp1
-rwxr-xr-xdmake/msdos/borland/bcc30/mkswp.bat107
-rw-r--r--dmake/msdos/borland/bcc30/obj.rsp34
-rw-r--r--dmake/msdos/borland/bcc30/objswp.rsp36
-rw-r--r--dmake/msdos/borland/bcc30/public.h170
-rw-r--r--dmake/msdos/borland/bcc30/template.mk7
-rw-r--r--dmake/msdos/borland/bcc40/config.h51
-rw-r--r--dmake/msdos/borland/bcc40/config.mk7
-rw-r--r--dmake/msdos/borland/bcc40/lib.rsp2
-rw-r--r--dmake/msdos/borland/bcc40/libswp.rsp1
-rwxr-xr-xdmake/msdos/borland/bcc40/mkswp.bat107
-rw-r--r--dmake/msdos/borland/bcc40/obj.rsp34
-rw-r--r--dmake/msdos/borland/bcc40/objswp.rsp36
-rw-r--r--dmake/msdos/borland/bcc40/public.h170
-rw-r--r--dmake/msdos/borland/bcc40/template.mk7
-rw-r--r--dmake/msdos/borland/bcc45/config.h51
-rw-r--r--dmake/msdos/borland/bcc45/config.mk7
-rw-r--r--dmake/msdos/borland/bcc45/lib.rsp2
-rw-r--r--dmake/msdos/borland/bcc45/libswp.rsp1
-rwxr-xr-xdmake/msdos/borland/bcc45/mkswp.bat107
-rw-r--r--dmake/msdos/borland/bcc45/obj.rsp34
-rw-r--r--dmake/msdos/borland/bcc45/objswp.rsp36
-rw-r--r--dmake/msdos/borland/bcc45/public.h170
-rw-r--r--dmake/msdos/borland/bcc45/template.mk7
-rw-r--r--dmake/msdos/borland/bcc50/config.h51
-rw-r--r--dmake/msdos/borland/bcc50/config.mk7
-rw-r--r--dmake/msdos/borland/bcc50/lib.rsp2
-rw-r--r--dmake/msdos/borland/bcc50/libswp.rsp1
-rwxr-xr-xdmake/msdos/borland/bcc50/mkswp.bat107
-rw-r--r--dmake/msdos/borland/bcc50/obj.rsp34
-rw-r--r--dmake/msdos/borland/bcc50/objswp.rsp36
-rw-r--r--dmake/msdos/borland/bcc50/public.h170
-rw-r--r--dmake/msdos/borland/bcc50/template.mk7
-rw-r--r--dmake/msdos/borland/config.mk46
-rw-r--r--dmake/msdos/borland/tcc20/config.h48
-rw-r--r--dmake/msdos/borland/tcc20/config.mk10
-rw-r--r--dmake/msdos/borland/tcc20/libswp.rsp1
-rwxr-xr-xdmake/msdos/borland/tcc20/mkswp.bat107
-rw-r--r--dmake/msdos/borland/tcc20/objswp.rsp36
-rw-r--r--dmake/msdos/borland/tcc20/public.h170
-rw-r--r--dmake/msdos/borland/tcc20/template.mk7
-rw-r--r--dmake/msdos/borland/tempnam.c109
-rw-r--r--dmake/msdos/borland/utime.c66
-rw-r--r--dmake/msdos/config.mk71
-rw-r--r--dmake/msdos/dchdir.c47
-rw-r--r--dmake/msdos/dirbrk.c42
-rw-r--r--dmake/msdos/dirent.h32
-rw-r--r--dmake/msdos/dirlib.c285
-rw-r--r--dmake/msdos/dosdta.h16
-rw-r--r--dmake/msdos/dstrlwr.c49
-rw-r--r--dmake/msdos/exec.asm1234
-rw-r--r--dmake/msdos/exec.h43
-rw-r--r--dmake/msdos/exec.uue63
-rw-r--r--dmake/msdos/find.c130
-rw-r--r--dmake/msdos/microsft/config.h77
-rw-r--r--dmake/msdos/microsft/config.mk59
-rw-r--r--dmake/msdos/microsft/msc51/config.mk11
-rw-r--r--dmake/msdos/microsft/msc51/lib.rsp1
-rw-r--r--dmake/msdos/microsft/msc51/libswp.rsp1
-rwxr-xr-xdmake/msdos/microsft/msc51/mk.bat102
-rwxr-xr-xdmake/msdos/microsft/msc51/mkswp.bat104
-rw-r--r--dmake/msdos/microsft/msc51/obj.rsp33
-rw-r--r--dmake/msdos/microsft/msc51/objswp.rsp34
-rw-r--r--dmake/msdos/microsft/msc51/public.h170
-rw-r--r--dmake/msdos/microsft/msc51/template.mk7
-rw-r--r--dmake/msdos/microsft/msc60/config.mk11
-rw-r--r--dmake/msdos/microsft/msc60/lib.rsp1
-rw-r--r--dmake/msdos/microsft/msc60/libswp.rsp1
-rwxr-xr-xdmake/msdos/microsft/msc60/mk.bat102
-rwxr-xr-xdmake/msdos/microsft/msc60/mkswp.bat104
-rw-r--r--dmake/msdos/microsft/msc60/obj.rsp33
-rw-r--r--dmake/msdos/microsft/msc60/objswp.rsp34
-rw-r--r--dmake/msdos/microsft/msc60/public.h170
-rw-r--r--dmake/msdos/microsft/msc60/template.mk7
-rw-r--r--dmake/msdos/microsft/optoff.h27
-rw-r--r--dmake/msdos/microsft/tempnam.c110
-rw-r--r--dmake/msdos/rmprq.c44
-rw-r--r--dmake/msdos/ruletab.c45
-rw-r--r--dmake/msdos/runargv.c188
-rw-r--r--dmake/msdos/spawn.c415
-rw-r--r--dmake/msdos/startup.h26
-rw-r--r--dmake/msdos/switchar.c55
-rw-r--r--dmake/msdos/sysintf.h52
-rw-r--r--dmake/msdos/tee.c31
-rw-r--r--dmake/msdos/zortech/config.h52
-rw-r--r--dmake/msdos/zortech/config.mk73
-rw-r--r--dmake/msdos/zortech/environ.c59
-rw-r--r--dmake/msdos/zortech/lib.rsp1
-rw-r--r--dmake/msdos/zortech/libswp.rsp1
-rwxr-xr-xdmake/msdos/zortech/mkswp.bat36
-rw-r--r--dmake/msdos/zortech/obj.rsp34
-rw-r--r--dmake/msdos/zortech/objswp.rsp35
-rw-r--r--dmake/msdos/zortech/public.h169
-rw-r--r--dmake/msdos/zortech/startup.mk153
-rw-r--r--dmake/msdos/zortech/tempnam.c106
-rw-r--r--dmake/os2/config.mk54
-rw-r--r--dmake/os2/dchdir.c41
-rw-r--r--dmake/os2/dirent.h36
-rw-r--r--dmake/os2/ibm/config.h78
-rw-r--r--dmake/os2/ibm/config.mk54
-rw-r--r--dmake/os2/ibm/icc/config.mk11
-rw-r--r--dmake/os2/ibm/icc/lib.rsp1
-rwxr-xr-xdmake/os2/ibm/icc/mk.cmd96
-rw-r--r--dmake/os2/ibm/icc/obj.rsp31
-rw-r--r--dmake/os2/ibm/icc/public.h169
-rw-r--r--dmake/os2/ibm/icc/template.mk7
-rw-r--r--dmake/os2/ibm/icc3/config.mk11
-rw-r--r--dmake/os2/ibm/icc3/lib.rsp1
-rwxr-xr-xdmake/os2/ibm/icc3/mk.cmd192
-rw-r--r--dmake/os2/ibm/icc3/obj.rsp30
-rw-r--r--dmake/os2/ibm/icc3/public.h169
-rw-r--r--dmake/os2/ibm/icc3/template.mk7
-rw-r--r--dmake/os2/ibm/tempnam.c111
-rw-r--r--dmake/os2/ruletab.c47
-rw-r--r--dmake/os2/startup.h27
-rw-r--r--dmake/os2/switchar.c43
-rw-r--r--dmake/os2/sysintf.h62
-rw-r--r--dmake/parse.c176
-rw-r--r--dmake/path.c337
-rw-r--r--dmake/percent.c251
-rw-r--r--dmake/posix.h66
-rw-r--r--dmake/qssl/config.mk43
-rw-r--r--dmake/qssl/make.sh62
-rw-r--r--dmake/qssl/public.h166
-rw-r--r--dmake/qssl/ruletab.c41
-rw-r--r--dmake/qssl/runargv.c298
-rw-r--r--dmake/qssl/setup40
-rw-r--r--dmake/qssl/startup.h28
-rw-r--r--dmake/qssl/stdlib.h48
-rw-r--r--dmake/qssl/sysintf.h42
-rw-r--r--dmake/qssl/template.mk7
-rw-r--r--dmake/qssl/tempnam.c102
-rw-r--r--dmake/qssl/time.h32
-rw-r--r--dmake/quit.c116
-rw-r--r--dmake/rcsclean.awk57
-rw-r--r--dmake/readme/intro.txt40
-rw-r--r--dmake/readme/license.txt248
-rw-r--r--dmake/readme/public/install.txt203
-rw-r--r--dmake/readme/public/mac.txt43
-rw-r--r--dmake/readme/public/msdos.txt124
-rw-r--r--dmake/readme/public/os2.txt76
-rw-r--r--dmake/readme/public/qssl-qnx.txt5
-rw-r--r--dmake/readme/public/srcorg.txt74
-rw-r--r--dmake/readme/public/tos.txt31
-rw-r--r--dmake/readme/public/unix.txt171
-rw-r--r--dmake/readme/read1st.txt58
-rw-r--r--dmake/readme/release.txt196
-rw-r--r--dmake/rulparse.c1734
-rwxr-xr-xdmake/stamp-h1
-rwxr-xr-xdmake/startup/Makefile.am7
-rw-r--r--dmake/startup/Makefile.in492
-rw-r--r--dmake/startup/config.mk.in5
-rw-r--r--dmake/startup/msdos/borland/bcc30/macros.mk4
-rw-r--r--dmake/startup/msdos/borland/bcc40/macros.mk4
-rw-r--r--dmake/startup/msdos/borland/bcc45/macros.mk4
-rw-r--r--dmake/startup/msdos/borland/bcc50.32/macros.mk4
-rw-r--r--dmake/startup/msdos/borland/bcc50/macros.mk4
-rw-r--r--dmake/startup/msdos/borland/macros.mk33
-rw-r--r--dmake/startup/msdos/borland/tcc20/macros.mk4
-rw-r--r--dmake/startup/msdos/macros.mk62
-rw-r--r--dmake/startup/msdos/microsft/macros.mk34
-rw-r--r--dmake/startup/msdos/recipes.mk9
-rw-r--r--dmake/startup/msdos/zortech/macros.mk30
-rw-r--r--dmake/startup/os2/ibm/macros.mk30
-rw-r--r--dmake/startup/os2/macros.mk60
-rw-r--r--dmake/startup/qssl/macros.mk11
-rw-r--r--dmake/startup/qssl/qnx/macros.mk11
-rw-r--r--dmake/startup/qssl/qnx/recipes.mk8
-rw-r--r--dmake/startup/qssl/recipes.mk8
-rw-r--r--dmake/startup/startup.mk211
-rw-r--r--dmake/startup/summary3
-rw-r--r--dmake/startup/template.mk7
-rw-r--r--dmake/startup/templates/mac/template.mk7
-rw-r--r--dmake/startup/templates/msdos/borland/bcc30/template.mk7
-rw-r--r--dmake/startup/templates/msdos/borland/bcc40/template.mk7
-rw-r--r--dmake/startup/templates/msdos/borland/bcc45/template.mk7
-rw-r--r--dmake/startup/templates/msdos/borland/bcc50/template.mk7
-rw-r--r--dmake/startup/templates/msdos/borland/tcc20/template.mk7
-rw-r--r--dmake/startup/templates/msdos/microsft/msc51/template.mk7
-rw-r--r--dmake/startup/templates/msdos/microsft/msc60/template.mk7
-rw-r--r--dmake/startup/templates/os2/ibm/icc/template.mk7
-rw-r--r--dmake/startup/templates/qssl/template.mk7
-rw-r--r--dmake/startup/templates/tos/template.mk7
-rw-r--r--dmake/startup/templates/unix/386ix/template.mk7
-rw-r--r--dmake/startup/templates/unix/bsd43/template.mk7
-rw-r--r--dmake/startup/templates/unix/bsd43/uw/template.mk7
-rw-r--r--dmake/startup/templates/unix/bsd43/vf/template.mk7
-rw-r--r--dmake/startup/templates/unix/coherent/ver40/template.mk7
-rw-r--r--dmake/startup/templates/unix/coherent/ver42/template.mk7
-rw-r--r--dmake/startup/templates/unix/linux/gnu/template.mk7
-rw-r--r--dmake/startup/templates/unix/solaris/gnu/template.mk7
-rw-r--r--dmake/startup/templates/unix/solaris/template.mk7
-rw-r--r--dmake/startup/templates/unix/sysvr1/template.mk7
-rw-r--r--dmake/startup/templates/unix/sysvr3/pwd/template.mk7
-rw-r--r--dmake/startup/templates/unix/sysvr3/template.mk7
-rw-r--r--dmake/startup/templates/unix/sysvr4/template.mk7
-rw-r--r--dmake/startup/templates/unix/xenix/pwd/template.mk7
-rw-r--r--dmake/startup/templates/unix/xenix/template.mk7
-rw-r--r--dmake/startup/templates/win95/borland/bcc50/template.mk7
-rw-r--r--dmake/startup/templates/win95/microsft/vpp40/template.mk7
-rw-r--r--dmake/startup/templates/winnt/borland/bcc50/template.mk7
-rw-r--r--dmake/startup/templates/winnt/microsft/vpp40/template.mk7
-rw-r--r--dmake/startup/tos/macros.mk24
-rw-r--r--dmake/startup/unix/386ix/macros.mk6
-rwxr-xr-xdmake/startup/unix/Makefile.am8
-rw-r--r--dmake/startup/unix/Makefile.in489
-rw-r--r--dmake/startup/unix/bsd43/macros.mk11
-rw-r--r--dmake/startup/unix/bsd43/recipes.mk13
-rw-r--r--dmake/startup/unix/coherent/macros.mk6
-rw-r--r--dmake/startup/unix/coherent/recipes.mk6
-rw-r--r--dmake/startup/unix/cygwin/Makefile.am6
-rw-r--r--dmake/startup/unix/cygwin/Makefile.in331
-rw-r--r--dmake/startup/unix/cygwin/macros.mk10
-rwxr-xr-xdmake/startup/unix/linux/Makefile.am6
-rw-r--r--dmake/startup/unix/linux/Makefile.in331
-rw-r--r--dmake/startup/unix/linux/gnu/macros.mk6
-rw-r--r--dmake/startup/unix/linux/macros.mk10
-rwxr-xr-xdmake/startup/unix/macosx/Makefile.am6
-rw-r--r--dmake/startup/unix/macosx/Makefile.in331
-rw-r--r--dmake/startup/unix/macosx/gnu/macros.mk6
-rw-r--r--dmake/startup/unix/macosx/macros.mk10
-rw-r--r--dmake/startup/unix/macros.mk5
-rw-r--r--dmake/startup/unix/os2/Makefile.am6
-rw-r--r--dmake/startup/unix/os2/Makefile.in331
-rw-r--r--dmake/startup/unix/os2/macros.mk60
-rw-r--r--dmake/startup/unix/recipes.mk15
-rwxr-xr-xdmake/startup/unix/solaris/Makefile.am6
-rw-r--r--dmake/startup/unix/solaris/Makefile.in331
-rw-r--r--dmake/startup/unix/solaris/macros.mk6
-rw-r--r--dmake/startup/unix/sysvr1/macros.mk6
-rw-r--r--dmake/startup/unix/sysvr3/gnu/macros.mk12
-rw-r--r--dmake/startup/unix/sysvr3/macros.mk7
-rwxr-xr-xdmake/startup/unix/sysvr4/Makefile.am6
-rw-r--r--dmake/startup/unix/sysvr4/Makefile.in331
-rw-r--r--dmake/startup/unix/sysvr4/macros.mk6
-rw-r--r--dmake/startup/unix/xenix/macros.mk6
-rw-r--r--dmake/startup/win95/borland/macros.mk34
-rw-r--r--dmake/startup/win95/macros.mk75
-rw-r--r--dmake/startup/win95/microsft/macros.mk38
-rw-r--r--dmake/startup/win95/recipes.mk9
-rw-r--r--dmake/startup/winnt/Makefile.am8
-rw-r--r--dmake/startup/winnt/Makefile.in489
-rw-r--r--dmake/startup/winnt/borland/macros.mk34
-rw-r--r--dmake/startup/winnt/macros.mk75
-rw-r--r--dmake/startup/winnt/microsft/macros.mk37
-rw-r--r--dmake/startup/winnt/mingw/Makefile.am6
-rw-r--r--dmake/startup/winnt/mingw/Makefile.in331
-rw-r--r--dmake/startup/winnt/mingw/macros.mk10
-rw-r--r--dmake/startup/winnt/msvc6/Makefile.am6
-rw-r--r--dmake/startup/winnt/msvc6/Makefile.in331
-rw-r--r--dmake/startup/winnt/msvc6/macros.mk37
-rw-r--r--dmake/startup/winnt/recipes.mk9
-rw-r--r--dmake/stat.c278
-rw-r--r--dmake/state.c231
-rw-r--r--dmake/stdmacs.h60
-rw-r--r--dmake/struct.h261
-rw-r--r--dmake/sysintf.c1157
-rw-r--r--dmake/tests/Makefile.am22
-rw-r--r--dmake/tests/Makefile.in392
-rw-r--r--dmake/tests/README12
-rwxr-xr-xdmake/tests/function_macros-196
-rwxr-xr-xdmake/tests/function_macros-10122
-rwxr-xr-xdmake/tests/function_macros-264
-rwxr-xr-xdmake/tests/function_macros-340
-rwxr-xr-xdmake/tests/function_macros-435
-rwxr-xr-xdmake/tests/function_macros-546
-rwxr-xr-xdmake/tests/function_macros-642
-rwxr-xr-xdmake/tests/function_macros-739
-rwxr-xr-xdmake/tests/function_macros-8101
-rwxr-xr-xdmake/tests/function_macros-970
-rwxr-xr-xdmake/tests/infra-044
-rwxr-xr-xdmake/tests/macros-141
-rwxr-xr-xdmake/tests/macros-1099
-rwxr-xr-xdmake/tests/macros-11147
-rwxr-xr-xdmake/tests/macros-262
-rwxr-xr-xdmake/tests/macros-371
-rwxr-xr-xdmake/tests/macros-492
-rwxr-xr-xdmake/tests/macros-568
-rwxr-xr-xdmake/tests/macros-662
-rwxr-xr-xdmake/tests/macros-776
-rwxr-xr-xdmake/tests/macros-8157
-rwxr-xr-xdmake/tests/macros-9141
-rwxr-xr-xdmake/tests/misc-135
-rwxr-xr-xdmake/tests/misc-1041
-rwxr-xr-xdmake/tests/misc-1142
-rwxr-xr-xdmake/tests/misc-1240
-rwxr-xr-xdmake/tests/misc-1351
-rwxr-xr-xdmake/tests/misc-1444
-rwxr-xr-xdmake/tests/misc-1553
-rwxr-xr-xdmake/tests/misc-1648
-rwxr-xr-xdmake/tests/misc-1742
-rwxr-xr-xdmake/tests/misc-18169
-rwxr-xr-xdmake/tests/misc-1945
-rwxr-xr-xdmake/tests/misc-240
-rwxr-xr-xdmake/tests/misc-20121
-rwxr-xr-xdmake/tests/misc-2141
-rwxr-xr-xdmake/tests/misc-344
-rwxr-xr-xdmake/tests/misc-462
-rwxr-xr-xdmake/tests/misc-549
-rwxr-xr-xdmake/tests/misc-665
-rwxr-xr-xdmake/tests/misc-747
-rwxr-xr-xdmake/tests/misc-839
-rwxr-xr-xdmake/tests/misc-953
-rwxr-xr-xdmake/tests/recipes-138
-rwxr-xr-xdmake/tests/recipes-241
-rwxr-xr-xdmake/tests/recipes-340
-rwxr-xr-xdmake/tests/recipes-438
-rwxr-xr-xdmake/tests/recipes-562
-rwxr-xr-xdmake/tests/recipes-666
-rwxr-xr-xdmake/tests/recipes-738
-rwxr-xr-xdmake/tests/recipes-8104
-rwxr-xr-xdmake/tests/recipes-9117
-rw-r--r--dmake/tests/targets-178
-rw-r--r--dmake/tests/targets-1050
-rw-r--r--dmake/tests/targets-1138
-rw-r--r--dmake/tests/targets-1247
-rwxr-xr-xdmake/tests/targets-1349
-rwxr-xr-xdmake/tests/targets-1453
-rwxr-xr-xdmake/tests/targets-1556
-rwxr-xr-xdmake/tests/targets-1649
-rwxr-xr-xdmake/tests/targets-1738
-rwxr-xr-xdmake/tests/targets-1852
-rwxr-xr-xdmake/tests/targets-1968
-rw-r--r--dmake/tests/targets-270
-rwxr-xr-xdmake/tests/targets-2065
-rwxr-xr-xdmake/tests/targets-2155
-rwxr-xr-xdmake/tests/targets-2255
-rwxr-xr-xdmake/tests/targets-2356
-rwxr-xr-xdmake/tests/targets-2461
-rwxr-xr-xdmake/tests/targets-2551
-rwxr-xr-xdmake/tests/targets-2657
-rwxr-xr-xdmake/tests/targets-2759
-rwxr-xr-xdmake/tests/targets-28175
-rwxr-xr-xdmake/tests/targets-2959
-rw-r--r--dmake/tests/targets-349
-rwxr-xr-xdmake/tests/targets-3064
-rw-r--r--dmake/tests/targets-470
-rw-r--r--dmake/tests/targets-551
-rw-r--r--dmake/tests/targets-652
-rw-r--r--dmake/tests/targets-754
-rw-r--r--dmake/tests/targets-850
-rw-r--r--dmake/tests/targets-949
-rw-r--r--dmake/tos/config.mk49
-rw-r--r--dmake/tos/make.sh57
-rw-r--r--dmake/tos/public.h166
-rw-r--r--dmake/tos/putenv.c78
-rw-r--r--dmake/tos/ruletab.c42
-rw-r--r--dmake/tos/startup.h28
-rw-r--r--dmake/tos/sysintf.h45
-rw-r--r--dmake/tos/template.mk7
-rw-r--r--dmake/tos/tempnam.c104
-rw-r--r--dmake/unix/386ix/ar.h27
-rw-r--r--dmake/unix/386ix/config.mk27
-rw-r--r--dmake/unix/386ix/make.sh60
-rw-r--r--dmake/unix/386ix/public.h167
-rw-r--r--dmake/unix/386ix/stdlib.h44
-rw-r--r--dmake/unix/386ix/template.mk7
-rw-r--r--dmake/unix/386ix/time.h35
-rwxr-xr-xdmake/unix/Makefile.am7
-rwxr-xr-xdmake/unix/Makefile.in396
-rw-r--r--dmake/unix/arlib.c610
-rw-r--r--dmake/unix/bsd43/config.mk27
-rw-r--r--dmake/unix/bsd43/dirent.h28
-rw-r--r--dmake/unix/bsd43/limits.h32
-rw-r--r--dmake/unix/bsd43/make.sh69
-rw-r--r--dmake/unix/bsd43/public.h167
-rw-r--r--dmake/unix/bsd43/putenv.c78
-rw-r--r--dmake/unix/bsd43/setvbuf.c40
-rw-r--r--dmake/unix/bsd43/stdlib.h44
-rw-r--r--dmake/unix/bsd43/string.h43
-rw-r--r--dmake/unix/bsd43/template.mk7
-rw-r--r--dmake/unix/bsd43/tempnam.c103
-rw-r--r--dmake/unix/bsd43/utime.c70
-rw-r--r--dmake/unix/bsd43/uw/config.mk17
-rw-r--r--dmake/unix/bsd43/uw/make.sh69
-rw-r--r--dmake/unix/bsd43/uw/public.h167
-rw-r--r--dmake/unix/bsd43/uw/template.mk7
-rw-r--r--dmake/unix/bsd43/vf/config.mk11
-rw-r--r--dmake/unix/bsd43/vf/ctype.h51
-rw-r--r--dmake/unix/bsd43/vf/make.sh73
-rw-r--r--dmake/unix/bsd43/vf/memcpy.c36
-rw-r--r--dmake/unix/bsd43/vf/public.h167
-rw-r--r--dmake/unix/bsd43/vf/template.mk7
-rw-r--r--dmake/unix/bsd43/vf/vfprintf.c48
-rw-r--r--dmake/unix/bsdarm32/config.mk27
-rw-r--r--dmake/unix/bsdarm32/dirent.h30
-rw-r--r--dmake/unix/bsdarm32/limits.h29
-rw-r--r--dmake/unix/bsdarm32/make.sh67
-rw-r--r--dmake/unix/bsdarm32/public.h167
-rw-r--r--dmake/unix/bsdarm32/putenv.c78
-rw-r--r--dmake/unix/bsdarm32/stdlib.h44
-rw-r--r--dmake/unix/bsdarm32/string.h42
-rw-r--r--dmake/unix/bsdarm32/template.mk7
-rw-r--r--dmake/unix/bsdarm32/tempnam.c105
-rw-r--r--dmake/unix/bsdarm32/utime.c70
-rw-r--r--dmake/unix/coherent/config.mk26
-rw-r--r--dmake/unix/coherent/stdlib.h44
-rw-r--r--dmake/unix/coherent/time.h32
-rw-r--r--dmake/unix/coherent/ver40/config.mk11
-rw-r--r--dmake/unix/coherent/ver40/getcwd.c49
-rw-r--r--dmake/unix/coherent/ver40/make.sh64
-rw-r--r--dmake/unix/coherent/ver40/public.h167
-rw-r--r--dmake/unix/coherent/ver40/template.mk7
-rw-r--r--dmake/unix/coherent/ver40/vfprintf.c190
-rw-r--r--dmake/unix/coherent/ver42/config.mk11
-rw-r--r--dmake/unix/coherent/ver42/make.sh60
-rw-r--r--dmake/unix/coherent/ver42/public.h167
-rw-r--r--dmake/unix/coherent/ver42/template.mk7
-rw-r--r--dmake/unix/config.mk39
-rw-r--r--dmake/unix/cygwin/public.h172
-rw-r--r--dmake/unix/dcache.c223
-rw-r--r--dmake/unix/dirbrk.c53
-rw-r--r--dmake/unix/linux/config.mk27
-rw-r--r--dmake/unix/linux/gnu/config.mk4
-rw-r--r--dmake/unix/linux/gnu/make.sh193
-rw-r--r--dmake/unix/linux/gnu/public.h172
-rw-r--r--dmake/unix/linux/gnu/template.mk7
-rw-r--r--dmake/unix/macosx/config.mk27
-rw-r--r--dmake/unix/macosx/gnu/config.mk4
-rw-r--r--dmake/unix/macosx/gnu/make.sh63
-rw-r--r--dmake/unix/macosx/gnu/public.h167
-rw-r--r--dmake/unix/macosx/gnu/template.mk7
-rw-r--r--dmake/unix/macosx/tempnam.c102
-rw-r--r--dmake/unix/os2/public.h172
-rw-r--r--dmake/unix/rmprq.c121
-rw-r--r--dmake/unix/ruletab.c44
-rw-r--r--dmake/unix/runargv.c1101
-rw-r--r--dmake/unix/solaris/config.mk27
-rw-r--r--dmake/unix/solaris/getcwd.c231
-rw-r--r--dmake/unix/solaris/gnu/config.mk8
-rw-r--r--dmake/unix/solaris/gnu/make.sh64
-rw-r--r--dmake/unix/solaris/gnu/public.h167
-rw-r--r--dmake/unix/solaris/gnu/template.mk7
-rw-r--r--dmake/unix/solaris/make.sh64
-rw-r--r--dmake/unix/solaris/public.h166
-rw-r--r--dmake/unix/solaris/template.mk7
-rw-r--r--dmake/unix/solaris/tempnam.c103
-rw-r--r--dmake/unix/startup.h27
-rw-r--r--dmake/unix/sysintf.h50
-rw-r--r--dmake/unix/sysvr1/config.mk28
-rw-r--r--dmake/unix/sysvr1/make.sh62
-rw-r--r--dmake/unix/sysvr1/public.h167
-rw-r--r--dmake/unix/sysvr1/putenv.c78
-rw-r--r--dmake/unix/sysvr1/stdlib.h44
-rw-r--r--dmake/unix/sysvr1/template.mk7
-rw-r--r--dmake/unix/sysvr1/time.h32
-rw-r--r--dmake/unix/sysvr1/vfprintf.c58
-rw-r--r--dmake/unix/sysvr3/config.mk27
-rw-r--r--dmake/unix/sysvr3/gnu/public.h165
-rw-r--r--dmake/unix/sysvr3/make.sh60
-rw-r--r--dmake/unix/sysvr3/public.h167
-rw-r--r--dmake/unix/sysvr3/pwd/config.mk20
-rw-r--r--dmake/unix/sysvr3/pwd/getcwd.c231
-rw-r--r--dmake/unix/sysvr3/pwd/make.sh62
-rw-r--r--dmake/unix/sysvr3/pwd/public.h167
-rw-r--r--dmake/unix/sysvr3/pwd/template.mk7
-rw-r--r--dmake/unix/sysvr3/stdlib.h55
-rw-r--r--dmake/unix/sysvr3/template.mk7
-rw-r--r--dmake/unix/sysvr3/time.h32
-rw-r--r--dmake/unix/sysvr4/config.mk27
-rw-r--r--dmake/unix/sysvr4/make.sh60
-rw-r--r--dmake/unix/sysvr4/public.h167
-rw-r--r--dmake/unix/sysvr4/template.mk7
-rw-r--r--dmake/unix/tempnam.c106
-rw-r--r--dmake/unix/xenix/config.mk27
-rw-r--r--dmake/unix/xenix/make.sh60
-rw-r--r--dmake/unix/xenix/public.h167
-rw-r--r--dmake/unix/xenix/pwd/config.mk23
-rw-r--r--dmake/unix/xenix/pwd/getcwd.c231
-rw-r--r--dmake/unix/xenix/pwd/make.sh62
-rw-r--r--dmake/unix/xenix/pwd/public.h167
-rw-r--r--dmake/unix/xenix/pwd/template.mk7
-rw-r--r--dmake/unix/xenix/stdlib.h50
-rw-r--r--dmake/unix/xenix/template.mk7
-rw-r--r--dmake/unix/xenix/time.h32
-rw-r--r--dmake/vextern.h129
-rw-r--r--dmake/win95/borland/bcc50/config.h44
-rw-r--r--dmake/win95/borland/bcc50/config.mk14
-rw-r--r--dmake/win95/borland/bcc50/lib.rsp2
-rwxr-xr-xdmake/win95/borland/bcc50/mk.bat96
-rw-r--r--dmake/win95/borland/bcc50/obj.rsp32
-rw-r--r--dmake/win95/borland/bcc50/public.h168
-rw-r--r--dmake/win95/borland/bcc50/template.mk7
-rw-r--r--dmake/win95/borland/config.mk51
-rw-r--r--dmake/win95/borland/ruletab.c44
-rw-r--r--dmake/win95/borland/sysintf.h55
-rw-r--r--dmake/win95/borland/tempnam.c114
-rw-r--r--dmake/win95/config.mk53
-rw-r--r--dmake/win95/dchdir.c46
-rw-r--r--dmake/win95/microsft/config.h122
-rw-r--r--dmake/win95/microsft/config.mk62
-rw-r--r--dmake/win95/microsft/optoff.h27
-rw-r--r--dmake/win95/microsft/ruletab.c56
-rw-r--r--dmake/win95/microsft/sysintf.h57
-rw-r--r--dmake/win95/microsft/tempnam.c110
-rw-r--r--dmake/win95/microsft/vpp40/config.mk14
-rw-r--r--dmake/win95/microsft/vpp40/lib.rsp1
-rwxr-xr-xdmake/win95/microsft/vpp40/mk.bat41
-rw-r--r--dmake/win95/microsft/vpp40/obj.rsp28
-rw-r--r--dmake/win95/microsft/vpp40/public.h167
-rw-r--r--dmake/win95/microsft/vpp40/runargv.c288
-rw-r--r--dmake/win95/microsft/vpp40/template.mk7
-rw-r--r--dmake/win95/microsft/vpp40/tempnam.c110
-rw-r--r--dmake/win95/startup.h28
-rw-r--r--dmake/win95/switchar.c43
-rw-r--r--dmake/winnt/borland/bcc50/config.h44
-rw-r--r--dmake/winnt/borland/bcc50/config.mk12
-rw-r--r--dmake/winnt/borland/bcc50/lib.rsp2
-rwxr-xr-xdmake/winnt/borland/bcc50/mk.bat95
-rwxr-xr-xdmake/winnt/borland/bcc50/mk.cmd93
-rw-r--r--dmake/winnt/borland/bcc50/obj.rsp31
-rw-r--r--dmake/winnt/borland/bcc50/public.h168
-rw-r--r--dmake/winnt/borland/bcc50/template.mk7
-rw-r--r--dmake/winnt/borland/config.mk51
-rw-r--r--dmake/winnt/borland/ruletab.c44
-rw-r--r--dmake/winnt/borland/sysintf.h55
-rw-r--r--dmake/winnt/borland/tempnam.c114
-rw-r--r--dmake/winnt/config.mk57
-rw-r--r--dmake/winnt/dchdir.c47
-rw-r--r--dmake/winnt/microsft/config.h85
-rw-r--r--dmake/winnt/microsft/config.mk61
-rw-r--r--dmake/winnt/microsft/optoff.h27
-rw-r--r--dmake/winnt/microsft/ruletab.c45
-rw-r--r--dmake/winnt/microsft/sysintf.h57
-rw-r--r--dmake/winnt/microsft/tempnam.c110
-rw-r--r--dmake/winnt/microsft/vpp40/config.mk14
-rw-r--r--dmake/winnt/microsft/vpp40/lib.rsp1
-rwxr-xr-xdmake/winnt/microsft/vpp40/mk.bat32
-rwxr-xr-xdmake/winnt/microsft/vpp40/mk.cmd31
-rw-r--r--dmake/winnt/microsft/vpp40/obj.rsp28
-rw-r--r--dmake/winnt/microsft/vpp40/public.h167
-rw-r--r--dmake/winnt/microsft/vpp40/runargv.c288
-rw-r--r--dmake/winnt/microsft/vpp40/template.mk7
-rw-r--r--dmake/winnt/microsft/vpp40/tempnam.c110
-rw-r--r--dmake/winnt/mingw/public.h167
-rw-r--r--dmake/winnt/mingw/sysintf.h62
-rw-r--r--dmake/winnt/msvc6/public.h167
-rw-r--r--dmake/winnt/msvc6/sysintf.h62
-rw-r--r--dmake/winnt/startup.h29
-rw-r--r--dtrans/inc/makefile.mk47
-rw-r--r--dtrans/inc/pch/precompiled_dtrans.cxx31
-rw-r--r--dtrans/inc/pch/precompiled_dtrans.hxx34
-rw-r--r--dtrans/prj/build.lst15
-rw-r--r--dtrans/prj/d.lst9
-rw-r--r--dtrans/source/cnttype/exports.dxp3
-rw-r--r--dtrans/source/cnttype/makefile.mk53
-rw-r--r--dtrans/source/cnttype/mcnttfactory.cxx126
-rw-r--r--dtrans/source/cnttype/mcnttfactory.hxx87
-rw-r--r--dtrans/source/cnttype/mcnttype.cxx430
-rw-r--r--dtrans/source/cnttype/mcnttype.hxx99
-rw-r--r--dtrans/source/cnttype/mcnttype.xml35
-rw-r--r--dtrans/source/cnttype/mctfentry.cxx163
-rw-r--r--dtrans/source/cnttype/wbench/makefile.mk53
-rw-r--r--dtrans/source/cnttype/wbench/testcnttype.cxx272
-rw-r--r--dtrans/source/generic/clipboardmanager.cxx268
-rw-r--r--dtrans/source/generic/clipboardmanager.hxx128
-rw-r--r--dtrans/source/generic/dtrans.cxx134
-rw-r--r--dtrans/source/generic/dtrans.xml44
-rw-r--r--dtrans/source/generic/exports.dxp3
-rw-r--r--dtrans/source/generic/generic_clipboard.cxx208
-rw-r--r--dtrans/source/generic/generic_clipboard.hxx134
-rw-r--r--dtrans/source/generic/makefile.mk67
-rw-r--r--dtrans/source/inc/DtObjFactory.hxx57
-rw-r--r--dtrans/source/inc/MtaOleClipb.hxx137
-rw-r--r--dtrans/source/os2/clipb/OS2Bitmap.cxx248
-rw-r--r--dtrans/source/os2/clipb/Os2Clipboard.cxx429
-rw-r--r--dtrans/source/os2/clipb/Os2Clipboard.hxx138
-rw-r--r--dtrans/source/os2/clipb/Os2Service.cxx109
-rw-r--r--dtrans/source/os2/clipb/Os2Transferable.cxx178
-rw-r--r--dtrans/source/os2/clipb/Os2Transferable.hxx99
-rw-r--r--dtrans/source/os2/clipb/exports.dxp4
-rw-r--r--dtrans/source/os2/clipb/makefile.mk59
-rw-r--r--dtrans/source/os2/clipb/sysdtrans.xml43
-rw-r--r--dtrans/source/test/makefile.mk53
-rw-r--r--dtrans/source/test/test_dtrans.cxx497
-rw-r--r--dtrans/source/win32/clipb/APNDataObject.hxx90
-rw-r--r--dtrans/source/win32/clipb/WinClipbImpl.cxx276
-rw-r--r--dtrans/source/win32/clipb/WinClipbImpl.hxx128
-rw-r--r--dtrans/source/win32/clipb/WinClipboard.cxx325
-rw-r--r--dtrans/source/win32/clipb/WinClipboard.hxx160
-rw-r--r--dtrans/source/win32/clipb/exports.dxp4
-rw-r--r--dtrans/source/win32/clipb/makefile.mk59
-rw-r--r--dtrans/source/win32/clipb/sysdtrans.xml43
-rw-r--r--dtrans/source/win32/clipb/wcbentry.cxx162
-rw-r--r--dtrans/source/win32/dnd/dnd.xml46
-rw-r--r--dtrans/source/win32/dnd/dndentry.cxx156
-rw-r--r--dtrans/source/win32/dnd/exports.dxp3
-rw-r--r--dtrans/source/win32/dnd/globals.cxx142
-rw-r--r--dtrans/source/win32/dnd/globals.hxx95
-rw-r--r--dtrans/source/win32/dnd/idroptarget.cxx117
-rw-r--r--dtrans/source/win32/dnd/idroptarget.hxx77
-rw-r--r--dtrans/source/win32/dnd/makefile.mk66
-rw-r--r--dtrans/source/win32/dnd/source.cxx433
-rw-r--r--dtrans/source/win32/dnd/source.hxx150
-rw-r--r--dtrans/source/win32/dnd/sourcecontext.cxx159
-rw-r--r--dtrans/source/win32/dnd/sourcecontext.hxx92
-rw-r--r--dtrans/source/win32/dnd/target.cxx663
-rw-r--r--dtrans/source/win32/dnd/target.hxx212
-rw-r--r--dtrans/source/win32/dnd/targetdragcontext.cxx61
-rw-r--r--dtrans/source/win32/dnd/targetdragcontext.hxx65
-rw-r--r--dtrans/source/win32/dnd/targetdropcontext.cxx72
-rw-r--r--dtrans/source/win32/dnd/targetdropcontext.hxx75
-rw-r--r--dtrans/source/win32/dtobj/APNDataObject.cxx381
-rw-r--r--dtrans/source/win32/dtobj/APNDataObject.hxx92
-rw-r--r--dtrans/source/win32/dtobj/DOTransferable.cxx606
-rw-r--r--dtrans/source/win32/dtobj/DOTransferable.hxx134
-rw-r--r--dtrans/source/win32/dtobj/DTransHelper.cxx241
-rw-r--r--dtrans/source/win32/dtobj/DTransHelper.hxx217
-rw-r--r--dtrans/source/win32/dtobj/DataFmtTransl.cxx339
-rw-r--r--dtrans/source/win32/dtobj/DataFmtTransl.hxx86
-rw-r--r--dtrans/source/win32/dtobj/DtObjFactory.cxx72
-rw-r--r--dtrans/source/win32/dtobj/Fetc.cxx261
-rw-r--r--dtrans/source/win32/dtobj/Fetc.hxx96
-rw-r--r--dtrans/source/win32/dtobj/FetcList.cxx480
-rw-r--r--dtrans/source/win32/dtobj/FetcList.hxx159
-rw-r--r--dtrans/source/win32/dtobj/FmtFilter.cxx538
-rw-r--r--dtrans/source/win32/dtobj/FmtFilter.hxx91
-rw-r--r--dtrans/source/win32/dtobj/MimeAttrib.hxx53
-rw-r--r--dtrans/source/win32/dtobj/TxtCnvtHlp.cxx147
-rw-r--r--dtrans/source/win32/dtobj/TxtCnvtHlp.hxx64
-rw-r--r--dtrans/source/win32/dtobj/XNotifyingDataObject.cxx166
-rw-r--r--dtrans/source/win32/dtobj/XNotifyingDataObject.hxx108
-rw-r--r--dtrans/source/win32/dtobj/XTDataObject.cxx849
-rw-r--r--dtrans/source/win32/dtobj/XTDataObject.hxx176
-rw-r--r--dtrans/source/win32/dtobj/makefile.mk76
-rw-r--r--dtrans/source/win32/ftransl/exports.dxp3
-rw-r--r--dtrans/source/win32/ftransl/ftransl.cxx649
-rw-r--r--dtrans/source/win32/ftransl/ftransl.hxx134
-rw-r--r--dtrans/source/win32/ftransl/ftransl.xml33
-rw-r--r--dtrans/source/win32/ftransl/ftranslentry.cxx164
-rw-r--r--dtrans/source/win32/ftransl/makefile.mk51
-rw-r--r--dtrans/source/win32/misc/ImplHelper.cxx492
-rw-r--r--dtrans/source/win32/misc/ImplHelper.hxx109
-rw-r--r--dtrans/source/win32/misc/WinClip.hxx48
-rw-r--r--dtrans/source/win32/misc/makefile.mk60
-rw-r--r--dtrans/source/win32/mtaole/MtaOleClipb.cxx895
-rw-r--r--dtrans/source/win32/mtaole/makefile.mk54
-rw-r--r--dtrans/source/win32/workbench/XTDo.cxx432
-rw-r--r--dtrans/source/win32/workbench/XTDo.hxx137
-rw-r--r--dtrans/source/win32/workbench/makefile.mk96
-rw-r--r--dtrans/source/win32/workbench/test_wincb.cxx351
-rw-r--r--dtrans/source/win32/workbench/testmarshal.cxx246
-rw-r--r--dtrans/test/win32/dnd/atlwindow.cxx264
-rw-r--r--dtrans/test/win32/dnd/atlwindow.hxx103
-rw-r--r--dtrans/test/win32/dnd/dndTest.cxx211
-rw-r--r--dtrans/test/win32/dnd/makefile.mk83
-rw-r--r--dtrans/test/win32/dnd/sourcelistener.cxx75
-rw-r--r--dtrans/test/win32/dnd/sourcelistener.hxx68
-rw-r--r--dtrans/test/win32/dnd/targetlistener.cxx106
-rw-r--r--dtrans/test/win32/dnd/targetlistener.hxx77
-rw-r--r--dtrans/test/win32/dnd/transferable.cxx129
-rw-r--r--dtrans/test/win32/dnd/transferable.hxx116
-rw-r--r--dtrans/util/exports.dxp3
-rw-r--r--dtrans/util/makefile.mk182
-rwxr-xr-xembedserv/prj/build.lst5
-rwxr-xr-xembedserv/prj/d.lst1
-rw-r--r--embedserv/regentries/calc.reg103
-rw-r--r--embedserv/regentries/draw.reg104
-rw-r--r--embedserv/regentries/impress.reg103
-rw-r--r--embedserv/regentries/math.reg103
-rw-r--r--embedserv/regentries/writer.reg103
-rw-r--r--embedserv/source/embed/docholder.cxx1645
-rw-r--r--embedserv/source/embed/ed_idataobj.cxx327
-rw-r--r--embedserv/source/embed/ed_iinplace.cxx103
-rw-r--r--embedserv/source/embed/ed_ioleobject.cxx506
-rw-r--r--embedserv/source/embed/ed_ipersiststr.cxx1020
-rw-r--r--embedserv/source/embed/esdll.cxx94
-rw-r--r--embedserv/source/embed/guid.cxx216
-rw-r--r--embedserv/source/embed/iipaobj.cxx133
-rw-r--r--embedserv/source/embed/intercept.cxx592
-rwxr-xr-xembedserv/source/embed/makefile.mk81
-rw-r--r--embedserv/source/embed/register.cxx135
-rw-r--r--embedserv/source/embed/servprov.cxx308
-rw-r--r--embedserv/source/embed/stdafx.cpp16
-rw-r--r--embedserv/source/embed/syswinwrapper.cxx480
-rw-r--r--embedserv/source/embed/tracker.cxx841
-rw-r--r--embedserv/source/embed/xwin.cxx349
-rw-r--r--embedserv/source/inc/common.h59
-rw-r--r--embedserv/source/inc/docholder.hxx292
-rw-r--r--embedserv/source/inc/embeddoc.hxx211
-rw-r--r--embedserv/source/inc/embeddocaccess.hxx88
-rw-r--r--embedserv/source/inc/embservconst.h83
-rw-r--r--embedserv/source/inc/iipaobj.hxx76
-rw-r--r--embedserv/source/inc/intercept.hxx198
-rw-r--r--embedserv/source/inc/servprov.hxx101
-rw-r--r--embedserv/source/inc/stdafx.h44
-rw-r--r--embedserv/source/inc/syswinwrapper.hxx180
-rw-r--r--embedserv/source/inc/xwin.hxx255
-rw-r--r--embedserv/source/inprocserv/advisesink.cxx189
-rw-r--r--embedserv/source/inprocserv/advisesink.hxx97
-rw-r--r--embedserv/source/inprocserv/dllentry.cxx351
-rw-r--r--embedserv/source/inprocserv/exports.dxp5
-rw-r--r--embedserv/source/inprocserv/inprocembobj.cxx1984
-rw-r--r--embedserv/source/inprocserv/inprocembobj.h244
-rw-r--r--embedserv/source/inprocserv/makefile.mk80
-rw-r--r--embedserv/source/inprocserv/smartpointer.hxx199
-rwxr-xr-xembedserv/util/exports.dxp3
-rwxr-xr-xembedserv/util/makefile.mk96
-rw-r--r--epm/epm-3.7.patch657
-rw-r--r--epm/makefile.mk62
-rw-r--r--epm/prj/build.lst2
-rw-r--r--epm/prj/d.lst3
-rw-r--r--expat/expat-2.0.1.patch93
-rw-r--r--expat/expat-winapi.patch13
-rw-r--r--expat/makefile.mk65
-rw-r--r--expat/prj/build.lst3
-rw-r--r--expat/prj/d.lst15
-rw-r--r--extensions/inc/abpilot.hrc45
-rw-r--r--extensions/inc/appsettings.hxx45
-rw-r--r--extensions/inc/bibliography.hrc86
-rw-r--r--extensions/inc/dbpilots.hrc55
-rw-r--r--extensions/inc/extensio.hrc75
-rw-r--r--extensions/inc/makefile.mk47
-rw-r--r--extensions/inc/pch/precompiled_extensions.cxx31
-rw-r--r--extensions/inc/pch/precompiled_extensions.hxx551
-rw-r--r--extensions/inc/propctrlr.hrc338
-rw-r--r--extensions/inc/ucbhelper/ext_content.hxx331
-rw-r--r--extensions/inc/update.hrc49
-rw-r--r--extensions/prj/build.lst36
-rw-r--r--extensions/prj/d.lst41
-rw-r--r--extensions/qa/complex/extensions/OfficeResourceLoader.java121
-rw-r--r--extensions/qa/complex/extensions/extensions_all.sce1
-rw-r--r--extensions/qa/complex/extensions/makefile.mk101
-rw-r--r--extensions/qa/complex/extensions/orl_de.src31
-rw-r--r--extensions/qa/complex/extensions/orl_en-US.src31
-rw-r--r--extensions/qa/integration/extensions/ComponentFactory.java106
-rw-r--r--extensions/qa/integration/extensions/ConsoleWait.java128
-rw-r--r--extensions/qa/integration/extensions/Frame.java226
-rw-r--r--extensions/qa/integration/extensions/HelpTextProvider.java50
-rw-r--r--extensions/qa/integration/extensions/MethodHandler.java239
-rw-r--r--extensions/qa/integration/extensions/ObjectInspector.java176
-rw-r--r--extensions/qa/integration/extensions/ServicesHandler.java228
-rw-r--r--extensions/qa/integration/extensions/TestSkeleton.java71
-rw-r--r--extensions/qa/integration/extensions/extensions_complex.sce1
-rw-r--r--extensions/qa/integration/extensions/makefile.mk83
-rw-r--r--extensions/qa/unoapi/Test.java50
-rw-r--r--extensions/qa/unoapi/extensions.sce5
-rw-r--r--extensions/qa/unoapi/makefile.mk48
-rw-r--r--extensions/source/abpilot/abpfinalpage.cxx229
-rw-r--r--extensions/source/abpilot/abpfinalpage.hxx94
-rw-r--r--extensions/source/abpilot/abpresid.hrc219
-rw-r--r--extensions/source/abpilot/abpservices.cxx109
-rw-r--r--extensions/source/abpilot/abptypes.hxx50
-rw-r--r--extensions/source/abpilot/abspage.cxx91
-rw-r--r--extensions/source/abpilot/abspage.hxx75
-rw-r--r--extensions/source/abpilot/abspilot.cxx501
-rw-r--r--extensions/source/abpilot/abspilot.hxx151
-rw-r--r--extensions/source/abpilot/abspilot.src376
-rw-r--r--extensions/source/abpilot/addresssettings.hxx81
-rw-r--r--extensions/source/abpilot/admininvokationimpl.cxx135
-rw-r--r--extensions/source/abpilot/admininvokationimpl.hxx72
-rw-r--r--extensions/source/abpilot/admininvokationpage.cxx116
-rw-r--r--extensions/source/abpilot/admininvokationpage.hxx75
-rw-r--r--extensions/source/abpilot/datasourcehandling.cxx639
-rw-r--r--extensions/source/abpilot/datasourcehandling.hxx217
-rw-r--r--extensions/source/abpilot/exports.dxp3
-rw-r--r--extensions/source/abpilot/fieldmappingimpl.cxx374
-rw-r--r--extensions/source/abpilot/fieldmappingimpl.hxx128
-rw-r--r--extensions/source/abpilot/fieldmappingpage.cxx121
-rw-r--r--extensions/source/abpilot/fieldmappingpage.hxx72
-rw-r--r--extensions/source/abpilot/makefile.mk106
-rw-r--r--extensions/source/abpilot/moduleabp.cxx34
-rw-r--r--extensions/source/abpilot/tableselectionpage.cxx135
-rw-r--r--extensions/source/abpilot/tableselectionpage.hxx75
-rw-r--r--extensions/source/abpilot/typeselectionpage.cxx248
-rw-r--r--extensions/source/abpilot/typeselectionpage.hxx108
-rw-r--r--extensions/source/abpilot/unodialogabp.cxx198
-rw-r--r--extensions/source/abpilot/unodialogabp.hxx103
-rw-r--r--extensions/source/activex/main/README.txt33
-rw-r--r--extensions/source/activex/main/SOActionsApproval.cpp31
-rw-r--r--extensions/source/activex/main/SOActionsApproval.h83
-rw-r--r--extensions/source/activex/main/SOActionsApproval.rgs24
-rw-r--r--extensions/source/activex/main/SOActiveX.cpp1153
-rw-r--r--extensions/source/activex/main/SOActiveX.h178
-rw-r--r--extensions/source/activex/main/SOActiveX.rgs33
-rw-r--r--extensions/source/activex/main/SOComWindowPeer.cpp30
-rw-r--r--extensions/source/activex/main/SOComWindowPeer.h136
-rw-r--r--extensions/source/activex/main/SOComWindowPeer.rgs23
-rw-r--r--extensions/source/activex/main/SODispatchInterceptor.cpp224
-rw-r--r--extensions/source/activex/main/SODispatchInterceptor.h158
-rw-r--r--extensions/source/activex/main/SODispatchInterceptor.rgs23
-rw-r--r--extensions/source/activex/main/StdAfx2.cpp21
-rw-r--r--extensions/source/activex/main/StdAfx2.h45
-rw-r--r--extensions/source/activex/main/com_uno_helper.h26
-rw-r--r--extensions/source/activex/main/example.html26
-rw-r--r--extensions/source/activex/main/makefile.mk155
-rw-r--r--extensions/source/activex/main/resource.h28
-rw-r--r--extensions/source/activex/main/so_activex.cpp692
-rw-r--r--extensions/source/activex/main/so_activex.def13
-rw-r--r--extensions/source/activex/main/so_activex.rc113
-rw-r--r--extensions/source/activex/msidl/makefile.mk62
-rw-r--r--extensions/source/activex/msidl/so_activex.idl210
-rw-r--r--extensions/source/bibliography/bib.hrc111
-rw-r--r--extensions/source/bibliography/bib.src74
-rw-r--r--extensions/source/bibliography/bibbeam.cxx322
-rw-r--r--extensions/source/bibliography/bibbeam.hxx96
-rw-r--r--extensions/source/bibliography/bibconfig.cxx391
-rw-r--r--extensions/source/bibliography/bibconfig.hxx158
-rw-r--r--extensions/source/bibliography/bibcont.cxx278
-rw-r--r--extensions/source/bibliography/bibcont.hxx117
-rw-r--r--extensions/source/bibliography/bibload.cxx805
-rw-r--r--extensions/source/bibliography/bibmod.cxx125
-rw-r--r--extensions/source/bibliography/bibmod.hxx68
-rw-r--r--extensions/source/bibliography/bibprop.hrc45
-rw-r--r--extensions/source/bibliography/bibresid.hxx46
-rw-r--r--extensions/source/bibliography/bibshortcuthandler.hxx90
-rw-r--r--extensions/source/bibliography/bibtools.hxx53
-rw-r--r--extensions/source/bibliography/bibview.cxx233
-rw-r--r--extensions/source/bibliography/bibview.hxx88
-rw-r--r--extensions/source/bibliography/datman.cxx1835
-rw-r--r--extensions/source/bibliography/datman.hrc102
-rw-r--r--extensions/source/bibliography/datman.hxx202
-rw-r--r--extensions/source/bibliography/datman.src469
-rw-r--r--extensions/source/bibliography/formcontrolcontainer.cxx182
-rw-r--r--extensions/source/bibliography/formcontrolcontainer.hxx86
-rw-r--r--extensions/source/bibliography/framectr.cxx979
-rw-r--r--extensions/source/bibliography/framectr.hxx132
-rw-r--r--extensions/source/bibliography/general.cxx895
-rw-r--r--extensions/source/bibliography/general.hxx207
-rw-r--r--extensions/source/bibliography/hidother.src61
-rw-r--r--extensions/source/bibliography/loadlisteneradapter.cxx241
-rw-r--r--extensions/source/bibliography/loadlisteneradapter.hxx187
-rw-r--r--extensions/source/bibliography/makefile.mk91
-rw-r--r--extensions/source/bibliography/menu.src45
-rw-r--r--extensions/source/bibliography/sections.hrc128
-rw-r--r--extensions/source/bibliography/sections.src584
-rw-r--r--extensions/source/bibliography/toolbar.cxx646
-rw-r--r--extensions/source/bibliography/toolbar.hrc46
-rw-r--r--extensions/source/bibliography/toolbar.hxx192
-rw-r--r--extensions/source/bibliography/toolbar.src241
-rw-r--r--extensions/source/bibliography/uiconfig/sbibliography/menubar/menubar.xml92
-rw-r--r--extensions/source/config/ldap/componentdef.cxx83
-rw-r--r--extensions/source/config/ldap/exports.dxp3
-rw-r--r--extensions/source/config/ldap/ldapaccess.cxx321
-rw-r--r--extensions/source/config/ldap/ldapaccess.hxx171
-rw-r--r--extensions/source/config/ldap/ldapuserprofilebe.cxx280
-rw-r--r--extensions/source/config/ldap/ldapuserprofilebe.hxx161
-rw-r--r--extensions/source/config/ldap/makefile.mk97
-rw-r--r--extensions/source/config/ldap/wrapldapinclude.hxx53
-rw-r--r--extensions/source/dbpilots/commonpagesdbp.cxx507
-rw-r--r--extensions/source/dbpilots/commonpagesdbp.hxx148
-rw-r--r--extensions/source/dbpilots/commonpagesdbp.src230
-rw-r--r--extensions/source/dbpilots/controlwizard.cxx779
-rw-r--r--extensions/source/dbpilots/controlwizard.hxx185
-rw-r--r--extensions/source/dbpilots/dbpilots.src78
-rw-r--r--extensions/source/dbpilots/dbpresid.hrc233
-rw-r--r--extensions/source/dbpilots/dbpservices.cxx114
-rw-r--r--extensions/source/dbpilots/dbptools.cxx72
-rw-r--r--extensions/source/dbpilots/dbptools.hxx50
-rw-r--r--extensions/source/dbpilots/dbptypes.hxx49
-rw-r--r--extensions/source/dbpilots/gridpages.src114
-rw-r--r--extensions/source/dbpilots/gridwizard.cxx487
-rw-r--r--extensions/source/dbpilots/gridwizard.hxx138
-rw-r--r--extensions/source/dbpilots/groupboxpages.src226
-rw-r--r--extensions/source/dbpilots/groupboxwiz.cxx563
-rw-r--r--extensions/source/dbpilots/groupboxwiz.hxx231
-rw-r--r--extensions/source/dbpilots/listcombopages.src203
-rw-r--r--extensions/source/dbpilots/listcombowizard.cxx564
-rw-r--r--extensions/source/dbpilots/listcombowizard.hxx229
-rw-r--r--extensions/source/dbpilots/makefile.mk103
-rw-r--r--extensions/source/dbpilots/moduledbp.cxx34
-rw-r--r--extensions/source/dbpilots/optiongrouplayouter.cxx218
-rw-r--r--extensions/source/dbpilots/optiongrouplayouter.hxx77
-rw-r--r--extensions/source/dbpilots/unoautopilot.hxx108
-rw-r--r--extensions/source/dbpilots/unoautopilot.inl134
-rw-r--r--extensions/source/dbpilots/wizardcontext.hxx94
-rw-r--r--extensions/source/dbpilots/wizardservices.cxx122
-rw-r--r--extensions/source/dbpilots/wizardservices.hxx82
-rw-r--r--extensions/source/inc/componentmodule.cxx341
-rw-r--r--extensions/source/inc/componentmodule.hxx280
-rw-r--r--extensions/source/logging/consolehandler.cxx345
-rw-r--r--extensions/source/logging/csvformatter.cxx377
-rw-r--r--extensions/source/logging/filehandler.cxx444
-rw-r--r--extensions/source/logging/log_module.cxx45
-rw-r--r--extensions/source/logging/log_module.hxx47
-rw-r--r--extensions/source/logging/log_services.cxx71
-rw-r--r--extensions/source/logging/logger.cxx406
-rw-r--r--extensions/source/logging/loggerconfig.cxx287
-rw-r--r--extensions/source/logging/loggerconfig.hxx68
-rw-r--r--extensions/source/logging/loghandler.cxx204
-rw-r--r--extensions/source/logging/loghandler.hxx157
-rw-r--r--extensions/source/logging/logrecord.cxx105
-rw-r--r--extensions/source/logging/logrecord.hxx71
-rw-r--r--extensions/source/logging/makefile.mk76
-rw-r--r--extensions/source/logging/methodguard.hxx75
-rw-r--r--extensions/source/logging/plaintextformatter.cxx229
-rw-r--r--extensions/source/macosx/spotlight/GetMetadataForFile.m70
-rw-r--r--extensions/source/macosx/spotlight/OOoContentDataParser.h61
-rw-r--r--extensions/source/macosx/spotlight/OOoContentDataParser.m133
-rw-r--r--extensions/source/macosx/spotlight/OOoMetaDataParser.h55
-rw-r--r--extensions/source/macosx/spotlight/OOoMetaDataParser.m200
-rw-r--r--extensions/source/macosx/spotlight/OOoSpotlightImporter.h45
-rw-r--r--extensions/source/macosx/spotlight/OOoSpotlightImporter.m235
-rw-r--r--extensions/source/macosx/spotlight/delzip0
-rw-r--r--extensions/source/macosx/spotlight/ioapi.h100
-rw-r--r--extensions/source/macosx/spotlight/ioapi.m204
-rw-r--r--extensions/source/macosx/spotlight/main.m225
-rw-r--r--extensions/source/macosx/spotlight/makefile.mk96
-rw-r--r--extensions/source/macosx/spotlight/mdimporter/Info.plist70
-rw-r--r--extensions/source/macosx/spotlight/mdimporter/en.lproj/schema.strings1
-rw-r--r--extensions/source/macosx/spotlight/mdimporter/schema.xml397
-rw-r--r--extensions/source/macosx/spotlight/unzip.h380
-rw-r--r--extensions/source/macosx/spotlight/unzip.m1586
-rw-r--r--extensions/source/macosx/spotlight/version.plist16
-rw-r--r--extensions/source/nsplugin/source/exports.dxp16
-rw-r--r--extensions/source/nsplugin/source/exports_wnt.dxp18
-rw-r--r--extensions/source/nsplugin/source/makefile.mk162
-rw-r--r--extensions/source/nsplugin/source/npshell.cxx933
-rw-r--r--extensions/source/nsplugin/source/npshell.hxx94
-rw-r--r--extensions/source/nsplugin/source/ns_debug.hxx42
-rw-r--r--extensions/source/nsplugin/source/nsp_func.hxx106
-rw-r--r--extensions/source/nsplugin/source/nsp_windows.cxx66
-rw-r--r--extensions/source/nsplugin/source/nsp_windows.hxx38
-rw-r--r--extensions/source/nsplugin/source/nsplugin.rc30
-rw-r--r--extensions/source/nsplugin/source/nsplugin_oo.rc30
-rw-r--r--extensions/source/nsplugin/source/so_closelistener.cxx50
-rw-r--r--extensions/source/nsplugin/source/so_closelistener.hxx56
-rw-r--r--extensions/source/nsplugin/source/so_env.cxx509
-rw-r--r--extensions/source/nsplugin/source/so_env.hxx97
-rw-r--r--extensions/source/nsplugin/source/so_instance.cxx498
-rw-r--r--extensions/source/nsplugin/source/so_instance.hxx113
-rw-r--r--extensions/source/nsplugin/source/so_main.cxx500
-rw-r--r--extensions/source/nsplugin/source/so_msg.hxx57
-rw-r--r--extensions/source/ole/comifaces.hxx72
-rw-r--r--extensions/source/ole/jscriptclasses.cxx324
-rw-r--r--extensions/source/ole/jscriptclasses.hxx163
-rw-r--r--extensions/source/ole/makefile.mk129
-rw-r--r--extensions/source/ole/ole2uno.cxx76
-rw-r--r--extensions/source/ole/ole2uno.hxx147
-rw-r--r--extensions/source/ole/oleautobridge.uno.dxp4
-rw-r--r--extensions/source/ole/oledll.cxx72
-rw-r--r--extensions/source/ole/oleobjw.cxx2391
-rw-r--r--extensions/source/ole/oleobjw.hxx284
-rw-r--r--extensions/source/ole/olethread.cxx79
-rw-r--r--extensions/source/ole/servprov.cxx757
-rw-r--r--extensions/source/ole/servprov.hxx279
-rw-r--r--extensions/source/ole/servreg.cxx176
-rw-r--r--extensions/source/ole/unoconversionutilities.hxx2452
-rw-r--r--extensions/source/ole/unoobjw.cxx1690
-rw-r--r--extensions/source/ole/unoobjw.hxx302
-rw-r--r--extensions/source/ole/unotypewrapper.cxx181
-rw-r--r--extensions/source/ole/unotypewrapper.hxx103
-rw-r--r--extensions/source/ole/windata.cxx42
-rw-r--r--extensions/source/ole/windata.hxx201
-rw-r--r--extensions/source/oooimprovecore/core.cxx193
-rw-r--r--extensions/source/oooimprovecore/makefile.mk77
-rw-r--r--extensions/source/oooimprovecore/oooimprovecore_module.cxx39
-rw-r--r--extensions/source/oooimprovecore/oooimprovecore_module.hxx40
-rw-r--r--extensions/source/oooimprovecore/oooimprovecore_services.cxx55
-rw-r--r--extensions/source/oooimprovement/Jobs.xcu25
-rw-r--r--extensions/source/oooimprovement/Logging.xcu8
-rw-r--r--extensions/source/oooimprovement/config.cxx299
-rw-r--r--extensions/source/oooimprovement/config.hxx71
-rw-r--r--extensions/source/oooimprovement/corecontroller.cxx92
-rw-r--r--extensions/source/oooimprovement/corecontroller.hxx87
-rw-r--r--extensions/source/oooimprovement/errormail.cxx210
-rw-r--r--extensions/source/oooimprovement/errormail.hxx57
-rw-r--r--extensions/source/oooimprovement/invite_job.cxx136
-rw-r--r--extensions/source/oooimprovement/invite_job.hxx85
-rw-r--r--extensions/source/oooimprovement/logpacker.cxx117
-rw-r--r--extensions/source/oooimprovement/logpacker.hxx54
-rw-r--r--extensions/source/oooimprovement/logstorage.cxx149
-rw-r--r--extensions/source/oooimprovement/logstorage.hxx58
-rw-r--r--extensions/source/oooimprovement/makefile.mk104
-rw-r--r--extensions/source/oooimprovement/makefile.pmk29
-rw-r--r--extensions/source/oooimprovement/myconfigurationhelper.cxx181
-rw-r--r--extensions/source/oooimprovement/myconfigurationhelper.hxx217
-rw-r--r--extensions/source/oooimprovement/onlogrotate_job.cxx205
-rw-r--r--extensions/source/oooimprovement/onlogrotate_job.hxx86
-rw-r--r--extensions/source/oooimprovement/oooimprovement_exports.cxx113
-rw-r--r--extensions/source/oooimprovement/soaprequest.cxx203
-rw-r--r--extensions/source/oooimprovement/soaprequest.hxx63
-rw-r--r--extensions/source/oooimprovement/soapsender.cxx163
-rw-r--r--extensions/source/oooimprovement/soapsender.hxx59
-rw-r--r--extensions/source/plugin/aqua/macmgr.cxx648
-rw-r--r--extensions/source/plugin/aqua/makefile.mk74
-rw-r--r--extensions/source/plugin/aqua/sysplug.cxx810
-rw-r--r--extensions/source/plugin/base/context.cxx350
-rw-r--r--extensions/source/plugin/base/evtlstnr.cxx73
-rw-r--r--extensions/source/plugin/base/makefile.mk70
-rw-r--r--extensions/source/plugin/base/manager.cxx233
-rw-r--r--extensions/source/plugin/base/multiplx.cxx335
-rw-r--r--extensions/source/plugin/base/nfuncs.cxx686
-rw-r--r--extensions/source/plugin/base/plcom.cxx79
-rw-r--r--extensions/source/plugin/base/plctrl.cxx325
-rw-r--r--extensions/source/plugin/base/plmodel.cxx206
-rw-r--r--extensions/source/plugin/base/service.cxx129
-rw-r--r--extensions/source/plugin/base/xplugin.cxx1162
-rw-r--r--extensions/source/plugin/inc/plugin/aqua/sysplug.hxx169
-rw-r--r--extensions/source/plugin/inc/plugin/impl.hxx433
-rw-r--r--extensions/source/plugin/inc/plugin/model.hxx139
-rw-r--r--extensions/source/plugin/inc/plugin/multiplx.hxx169
-rw-r--r--extensions/source/plugin/inc/plugin/plcom.hxx88
-rw-r--r--extensions/source/plugin/inc/plugin/plctrl.hxx183
-rw-r--r--extensions/source/plugin/inc/plugin/unx/mediator.hxx186
-rw-r--r--extensions/source/plugin/inc/plugin/unx/plugcon.hxx254
-rw-r--r--extensions/source/plugin/inc/plugin/unx/sysplug.hxx86
-rw-r--r--extensions/source/plugin/inc/plugin/win/sysplug.hxx127
-rw-r--r--extensions/source/plugin/unx/makefile.mk111
-rw-r--r--extensions/source/plugin/unx/mediator.cxx312
-rw-r--r--extensions/source/plugin/unx/npnapi.cxx926
-rw-r--r--extensions/source/plugin/unx/nppapi.cxx630
-rw-r--r--extensions/source/plugin/unx/npwrap.cxx522
-rw-r--r--extensions/source/plugin/unx/plugcon.cxx292
-rw-r--r--extensions/source/plugin/unx/sysplug.cxx141
-rw-r--r--extensions/source/plugin/unx/unxmgr.cxx325
-rw-r--r--extensions/source/plugin/util/makefile.mk109
-rw-r--r--extensions/source/plugin/util/makefile.pmk48
-rw-r--r--extensions/source/plugin/win/makefile.mk65
-rw-r--r--extensions/source/plugin/win/sysplug.cxx446
-rw-r--r--extensions/source/plugin/win/winmgr.cxx472
-rw-r--r--extensions/source/preload/makefile.mk85
-rw-r--r--extensions/source/preload/modulepreload.cxx34
-rw-r--r--extensions/source/preload/oemwiz.cxx469
-rw-r--r--extensions/source/preload/oemwiz.hxx156
-rw-r--r--extensions/source/preload/preload.hrc58
-rw-r--r--extensions/source/preload/preload.src282
-rw-r--r--extensions/source/preload/preloadservices.cxx73
-rw-r--r--extensions/source/preload/preloadservices.hxx57
-rw-r--r--extensions/source/preload/services.cxx109
-rw-r--r--extensions/source/preload/unoautopilot.hxx109
-rw-r--r--extensions/source/preload/unoautopilot.inl133
-rw-r--r--extensions/source/propctrlr/MasterDetailLinkDialog.cxx160
-rw-r--r--extensions/source/propctrlr/MasterDetailLinkDialog.hxx87
-rw-r--r--extensions/source/propctrlr/browserline.cxx550
-rw-r--r--extensions/source/propctrlr/browserline.hxx143
-rw-r--r--extensions/source/propctrlr/browserlistbox.cxx1312
-rw-r--r--extensions/source/propctrlr/browserlistbox.hxx248
-rw-r--r--extensions/source/propctrlr/browserpage.cxx107
-rw-r--r--extensions/source/propctrlr/browserpage.hxx70
-rw-r--r--extensions/source/propctrlr/browserview.cxx146
-rw-r--r--extensions/source/propctrlr/browserview.hxx91
-rw-r--r--extensions/source/propctrlr/buttonnavigationhandler.cxx297
-rw-r--r--extensions/source/propctrlr/buttonnavigationhandler.hxx92
-rw-r--r--extensions/source/propctrlr/cellbindinghandler.cxx507
-rw-r--r--extensions/source/propctrlr/cellbindinghandler.hxx111
-rw-r--r--extensions/source/propctrlr/cellbindinghelper.cxx568
-rw-r--r--extensions/source/propctrlr/cellbindinghelper.hxx293
-rw-r--r--extensions/source/propctrlr/commoncontrol.cxx208
-rw-r--r--extensions/source/propctrlr/commoncontrol.hxx339
-rw-r--r--extensions/source/propctrlr/composeduiupdate.cxx861
-rw-r--r--extensions/source/propctrlr/composeduiupdate.hxx233
-rw-r--r--extensions/source/propctrlr/controlfontdialog.cxx177
-rw-r--r--extensions/source/propctrlr/controlfontdialog.hxx102
-rw-r--r--extensions/source/propctrlr/controltype.hxx56
-rw-r--r--extensions/source/propctrlr/defaultforminspection.cxx267
-rw-r--r--extensions/source/propctrlr/defaultforminspection.hxx93
-rw-r--r--extensions/source/propctrlr/defaulthelpprovider.cxx209
-rw-r--r--extensions/source/propctrlr/defaulthelpprovider.hxx96
-rw-r--r--extensions/source/propctrlr/editpropertyhandler.cxx325
-rw-r--r--extensions/source/propctrlr/editpropertyhandler.hxx84
-rw-r--r--extensions/source/propctrlr/eformshelper.cxx788
-rw-r--r--extensions/source/propctrlr/eformshelper.hxx271
-rw-r--r--extensions/source/propctrlr/eformspropertyhandler.cxx618
-rw-r--r--extensions/source/propctrlr/eformspropertyhandler.hxx110
-rw-r--r--extensions/source/propctrlr/enumrepresentation.hxx78
-rw-r--r--extensions/source/propctrlr/eventhandler.cxx1287
-rw-r--r--extensions/source/propctrlr/eventhandler.hxx269
-rw-r--r--extensions/source/propctrlr/fontdialog.cxx609
-rw-r--r--extensions/source/propctrlr/fontdialog.hxx85
-rw-r--r--extensions/source/propctrlr/fontdialog.src60
-rw-r--r--extensions/source/propctrlr/fontitemids.hxx68
-rw-r--r--extensions/source/propctrlr/formbrowsertools.cxx146
-rw-r--r--extensions/source/propctrlr/formbrowsertools.hxx110
-rw-r--r--extensions/source/propctrlr/formcomponenthandler.cxx3344
-rw-r--r--extensions/source/propctrlr/formcomponenthandler.hxx481
-rw-r--r--extensions/source/propctrlr/formcontroller.cxx300
-rw-r--r--extensions/source/propctrlr/formcontroller.hxx142
-rw-r--r--extensions/source/propctrlr/formgeometryhandler.cxx829
-rw-r--r--extensions/source/propctrlr/formlinkdialog.cxx675
-rw-r--r--extensions/source/propctrlr/formlinkdialog.hrc44
-rw-r--r--extensions/source/propctrlr/formlinkdialog.hxx151
-rw-r--r--extensions/source/propctrlr/formlinkdialog.src160
-rw-r--r--extensions/source/propctrlr/formlocalid.hrc39
-rw-r--r--extensions/source/propctrlr/formmetadata.cxx705
-rw-r--r--extensions/source/propctrlr/formmetadata.hxx351
-rw-r--r--extensions/source/propctrlr/formres.src1527
-rw-r--r--extensions/source/propctrlr/formresid.hrc390
-rw-r--r--extensions/source/propctrlr/formstrings.cxx38
-rw-r--r--extensions/source/propctrlr/formstrings.hxx310
-rw-r--r--extensions/source/propctrlr/genericpropertyhandler.cxx728
-rw-r--r--extensions/source/propctrlr/genericpropertyhandler.hxx163
-rw-r--r--extensions/source/propctrlr/handlerhelper.cxx290
-rw-r--r--extensions/source/propctrlr/handlerhelper.hxx219
-rw-r--r--extensions/source/propctrlr/inspectorhelpwindow.cxx153
-rw-r--r--extensions/source/propctrlr/inspectorhelpwindow.hxx80
-rw-r--r--extensions/source/propctrlr/inspectormodelbase.cxx275
-rw-r--r--extensions/source/propctrlr/inspectormodelbase.hxx110
-rw-r--r--extensions/source/propctrlr/linedescriptor.hxx72
-rw-r--r--extensions/source/propctrlr/listselectiondlg.cxx170
-rw-r--r--extensions/source/propctrlr/listselectiondlg.hrc39
-rw-r--r--extensions/source/propctrlr/listselectiondlg.hxx89
-rw-r--r--extensions/source/propctrlr/listselectiondlg.src80
-rw-r--r--extensions/source/propctrlr/makefile.mk146
-rw-r--r--extensions/source/propctrlr/modulepcr.cxx47
-rw-r--r--extensions/source/propctrlr/modulepcr.hxx47
-rw-r--r--extensions/source/propctrlr/newdatatype.cxx105
-rw-r--r--extensions/source/propctrlr/newdatatype.hrc38
-rw-r--r--extensions/source/propctrlr/newdatatype.hxx77
-rw-r--r--extensions/source/propctrlr/newdatatype.src77
-rw-r--r--extensions/source/propctrlr/objectinspectormodel.cxx245
-rw-r--r--extensions/source/propctrlr/pcr.xml146
-rw-r--r--extensions/source/propctrlr/pcrcommon.cxx71
-rw-r--r--extensions/source/propctrlr/pcrcommon.hxx155
-rw-r--r--extensions/source/propctrlr/pcrcommontypes.hxx53
-rw-r--r--extensions/source/propctrlr/pcrcomponentcontext.cxx108
-rw-r--r--extensions/source/propctrlr/pcrcomponentcontext.hxx170
-rw-r--r--extensions/source/propctrlr/pcrmiscres.src189
-rw-r--r--extensions/source/propctrlr/pcrservices.cxx145
-rw-r--r--extensions/source/propctrlr/pcrstrings.cxx38
-rw-r--r--extensions/source/propctrlr/pcrstrings.hxx48
-rw-r--r--extensions/source/propctrlr/pcrunodialogs.cxx148
-rw-r--r--extensions/source/propctrlr/pcrunodialogs.hxx96
-rw-r--r--extensions/source/propctrlr/propcontroller.cxx1773
-rw-r--r--extensions/source/propctrlr/propcontroller.hxx430
-rw-r--r--extensions/source/propctrlr/propcontrolobserver.hxx58
-rw-r--r--extensions/source/propctrlr/propertycomposer.cxx518
-rw-r--r--extensions/source/propctrlr/propertycomposer.hxx159
-rw-r--r--extensions/source/propctrlr/propertycontrolextender.cxx146
-rw-r--r--extensions/source/propctrlr/propertycontrolextender.hxx77
-rw-r--r--extensions/source/propctrlr/propertyeditor.cxx544
-rw-r--r--extensions/source/propctrlr/propertyeditor.hxx165
-rw-r--r--extensions/source/propctrlr/propertyhandler.cxx466
-rw-r--r--extensions/source/propctrlr/propertyhandler.hxx457
-rw-r--r--extensions/source/propctrlr/propertyinfo.hxx67
-rw-r--r--extensions/source/propctrlr/propeventtranslation.cxx107
-rw-r--r--extensions/source/propctrlr/propeventtranslation.hxx86
-rw-r--r--extensions/source/propctrlr/proplinelistener.hxx53
-rw-r--r--extensions/source/propctrlr/propres.src68
-rw-r--r--extensions/source/propctrlr/propresid.hrc48
-rw-r--r--extensions/source/propctrlr/pushbuttonnavigation.cxx309
-rw-r--r--extensions/source/propctrlr/pushbuttonnavigation.hxx111
-rw-r--r--extensions/source/propctrlr/selectlabeldialog.cxx313
-rw-r--r--extensions/source/propctrlr/selectlabeldialog.hxx89
-rw-r--r--extensions/source/propctrlr/selectlabeldialog.src83
-rw-r--r--extensions/source/propctrlr/sqlcommanddesign.cxx391
-rw-r--r--extensions/source/propctrlr/sqlcommanddesign.hxx225
-rw-r--r--extensions/source/propctrlr/standardcontrol.cxx1440
-rw-r--r--extensions/source/propctrlr/standardcontrol.hxx447
-rw-r--r--extensions/source/propctrlr/stlops.hxx72
-rw-r--r--extensions/source/propctrlr/stringdefine.hxx101
-rw-r--r--extensions/source/propctrlr/stringrepresentation.cxx646
-rw-r--r--extensions/source/propctrlr/submissionhandler.cxx450
-rw-r--r--extensions/source/propctrlr/submissionhandler.hxx127
-rw-r--r--extensions/source/propctrlr/taborder.cxx421
-rw-r--r--extensions/source/propctrlr/taborder.hrc45
-rw-r--r--extensions/source/propctrlr/taborder.hxx127
-rw-r--r--extensions/source/propctrlr/taborder.src103
-rw-r--r--extensions/source/propctrlr/unourl.cxx72
-rw-r--r--extensions/source/propctrlr/unourl.hxx67
-rw-r--r--extensions/source/propctrlr/usercontrol.cxx372
-rw-r--r--extensions/source/propctrlr/usercontrol.hxx174
-rw-r--r--extensions/source/propctrlr/xsddatatypes.cxx252
-rw-r--r--extensions/source/propctrlr/xsddatatypes.hxx116
-rw-r--r--extensions/source/propctrlr/xsdvalidationhelper.cxx414
-rw-r--r--extensions/source/propctrlr/xsdvalidationhelper.hxx152
-rw-r--r--extensions/source/propctrlr/xsdvalidationpropertyhandler.cxx695
-rw-r--r--extensions/source/propctrlr/xsdvalidationpropertyhandler.hxx105
-rw-r--r--extensions/source/resource/exports.dxp3
-rw-r--r--extensions/source/resource/makefile.mk76
-rw-r--r--extensions/source/resource/oooresourceloader.cxx492
-rw-r--r--extensions/source/resource/res_services.cxx131
-rw-r--r--extensions/source/resource/res_services.hxx67
-rw-r--r--extensions/source/resource/resource.cxx472
-rw-r--r--extensions/source/scanner/exports.dxp3
-rw-r--r--extensions/source/scanner/grid.cxx611
-rw-r--r--extensions/source/scanner/grid.hrc42
-rw-r--r--extensions/source/scanner/grid.hxx150
-rw-r--r--extensions/source/scanner/grid.src112
-rw-r--r--extensions/source/scanner/makefile.mk96
-rw-r--r--extensions/source/scanner/sane.cxx1008
-rw-r--r--extensions/source/scanner/sane.hxx203
-rw-r--r--extensions/source/scanner/sanedlg.cxx1433
-rw-r--r--extensions/source/scanner/sanedlg.hrc82
-rw-r--r--extensions/source/scanner/sanedlg.hxx153
-rw-r--r--extensions/source/scanner/sanedlg.src301
-rw-r--r--extensions/source/scanner/scanner.cxx107
-rw-r--r--extensions/source/scanner/scanner.hxx113
-rw-r--r--extensions/source/scanner/scanunx.cxx386
-rw-r--r--extensions/source/scanner/scanwin.cxx1060
-rw-r--r--extensions/source/scanner/scnserv.cxx107
-rw-r--r--extensions/source/scanner/twain.cxx535
-rw-r--r--extensions/source/scanner/twain.hxx101
-rw-r--r--extensions/source/svg/makefile.mk67
-rw-r--r--extensions/source/svg/svgaction.cxx1461
-rw-r--r--extensions/source/svg/svgaction.hxx167
-rw-r--r--extensions/source/svg/svgcom.hxx77
-rw-r--r--extensions/source/svg/svgprinter.cxx331
-rw-r--r--extensions/source/svg/svgprinter.hxx70
-rw-r--r--extensions/source/svg/svguno.cxx131
-rw-r--r--extensions/source/svg/svgwriter.cxx178
-rw-r--r--extensions/source/svg/svgwriter.hxx63
-rw-r--r--extensions/source/unoactivex/main/initwindowpeer.cxx89
-rw-r--r--extensions/source/update/check/Addons.xcu26
-rw-r--r--extensions/source/update/check/Jobs.xcu42
-rw-r--r--extensions/source/update/check/actionlistener.hxx48
-rw-r--r--extensions/source/update/check/download.cxx463
-rw-r--r--extensions/source/update/check/download.hxx86
-rw-r--r--extensions/source/update/check/makefile.mk134
-rw-r--r--extensions/source/update/check/transform.pl61
-rw-r--r--extensions/source/update/check/updatecheck.cxx1691
-rw-r--r--extensions/source/update/check/updatecheck.hxx197
-rw-r--r--extensions/source/update/check/updatecheckconfig.cxx763
-rw-r--r--extensions/source/update/check/updatecheckconfig.hxx241
-rw-r--r--extensions/source/update/check/updatecheckconfiglistener.hxx46
-rw-r--r--extensions/source/update/check/updatecheckjob.cxx413
-rw-r--r--extensions/source/update/check/updatehdl.cxx1422
-rw-r--r--extensions/source/update/check/updatehdl.hrc83
-rw-r--r--extensions/source/update/check/updatehdl.hxx222
-rw-r--r--extensions/source/update/check/updatehdl.src264
-rw-r--r--extensions/source/update/check/updateinfo.hxx89
-rw-r--r--extensions/source/update/check/updateprotocol.cxx334
-rw-r--r--extensions/source/update/check/updateprotocol.hxx58
-rw-r--r--extensions/source/update/check/updateprotocoltest.cxx97
-rw-r--r--extensions/source/update/check/updchk.xml49
-rw-r--r--extensions/source/update/feed/makefile.mk64
-rw-r--r--extensions/source/update/feed/test/makefile.mk58
-rw-r--r--extensions/source/update/feed/test/updatefeedtest.cxx109
-rw-r--r--extensions/source/update/feed/updatefeed.cxx877
-rw-r--r--extensions/source/update/feed/updatefeed.xml49
-rw-r--r--extensions/source/update/tools/makefile.mk68
-rw-r--r--extensions/source/update/tools/ztool.cxx66
-rw-r--r--extensions/source/update/ui/makefile.mk74
-rw-r--r--extensions/source/update/ui/updatecheckui.cxx1085
-rw-r--r--extensions/source/update/ui/updatecheckui.hrc36
-rw-r--r--extensions/source/update/ui/updatecheckui.src51
-rw-r--r--extensions/source/update/ui/updchkui.xml34
-rw-r--r--extensions/source/xmlextract/makefile.mk65
-rw-r--r--extensions/source/xmlextract/xmxcom.hxx66
-rw-r--r--extensions/source/xmlextract/xmxtrct.cxx200
-rw-r--r--extensions/source/xmlextract/xmxtrct.hxx57
-rw-r--r--extensions/source/xmlextract/xmxuno.cxx103
-rw-r--r--extensions/stardiv/fontest/fontest.idl111
-rw-r--r--extensions/stardiv/fontest/makefile.mk48
-rw-r--r--extensions/stardiv/oinstchk/makefile.mk47
-rw-r--r--extensions/stardiv/oinstchk/oinstchk.idl108
-rw-r--r--extensions/stardiv/pgp/makefile.mk53
-rw-r--r--extensions/test/ole/AxTestComponents/AxTestComponents.cpp101
-rw-r--r--extensions/test/ole/AxTestComponents/AxTestComponents.def9
-rw-r--r--extensions/test/ole/AxTestComponents/AxTestComponents.dsp325
-rw-r--r--extensions/test/ole/AxTestComponents/AxTestComponents.idl257
-rw-r--r--extensions/test/ole/AxTestComponents/AxTestComponents.rc164
-rw-r--r--extensions/test/ole/AxTestComponents/AxTestComponents.sln31
-rw-r--r--extensions/test/ole/AxTestComponents/AxTestComponents.vcproj819
-rw-r--r--extensions/test/ole/AxTestComponents/Basic.cpp1366
-rw-r--r--extensions/test/ole/AxTestComponents/Basic.h270
-rw-r--r--extensions/test/ole/AxTestComponents/Basic.rgs50
-rw-r--r--extensions/test/ole/AxTestComponents/Foo.cpp49
-rw-r--r--extensions/test/ole/AxTestComponents/Foo.h66
-rw-r--r--extensions/test/ole/AxTestComponents/StdAfx.cpp35
-rw-r--r--extensions/test/ole/AxTestComponents/StdAfx.h59
-rw-r--r--extensions/test/ole/AxTestComponents/readme.txt4
-rw-r--r--extensions/test/ole/AxTestComponents/resource.h47
-rw-r--r--extensions/test/ole/DCOM/Clients/WriterDemo/Module1.bas8
-rw-r--r--extensions/test/ole/DCOM/Clients/WriterDemo/client_writerdemo.vbp33
-rw-r--r--extensions/test/ole/DCOM/Clients/WriterDemo/client_writerdemo.vbw1
-rw-r--r--extensions/test/ole/DCOM/Clients/WriterDemo/readme.txt4
-rw-r--r--extensions/test/ole/DCOM/dcom_test/Module1.bas38
-rw-r--r--extensions/test/ole/DCOM/dcom_test/dcom_test.vbp37
-rw-r--r--extensions/test/ole/DCOM/dcom_test/dcom_test.vbw1
-rw-r--r--extensions/test/ole/DCOM/dcom_test/readme.txt5
-rw-r--r--extensions/test/ole/DCOM/scriptComponents/WriterDemo.wsc186
-rw-r--r--extensions/test/ole/DCOM/scriptComponents/readme.txt13
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EventListener.cpp74
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EventListener.def9
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EventListener.idl39
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EventListener.rc136
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EventListener.sln32
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EventListener.vcproj927
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EvtListener.cpp21
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EvtListener.h38
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/EvtListener.rgs26
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/StdAfx.cpp15
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/StdAfx.h30
-rw-r--r--extensions/test/ole/EventListenerSample/EventListener/resource.h20
-rw-r--r--extensions/test/ole/EventListenerSample/VBEventListener/Module1.bas9
-rw-r--r--extensions/test/ole/EventListenerSample/VBEventListener/VBEventListener.cls78
-rw-r--r--extensions/test/ole/EventListenerSample/VBEventListener/VBasicEventListener.dllbin0 -> 24576 bytes
-rw-r--r--extensions/test/ole/EventListenerSample/VBEventListener/VBasicEventListener.vbp38
-rw-r--r--extensions/test/ole/EventListenerSample/VBEventListener/VBasicEventListener.vbw2
-rw-r--r--extensions/test/ole/EventListenerSample/VBEventListener/readme.txt7
-rw-r--r--extensions/test/ole/EventListenerSample/events.htm98
-rw-r--r--extensions/test/ole/EventListenerSample/readme.txt20
-rw-r--r--extensions/test/ole/JScriptNewStyle.htm1054
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.cpp82
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.def9
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.dsp265
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.h36
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.odl82
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.rc145
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.sln25
-rw-r--r--extensions/test/ole/MfcControl/MfcControl.vcproj581
-rw-r--r--extensions/test/ole/MfcControl/MfcControlCtl.cpp347
-rw-r--r--extensions/test/ole/MfcControl/MfcControlCtl.h99
-rw-r--r--extensions/test/ole/MfcControl/MfcControlCtl.pngbin0 -> 204 bytes
-rw-r--r--extensions/test/ole/MfcControl/MfcControlPpg.cpp79
-rw-r--r--extensions/test/ole/MfcControl/MfcControlPpg.h49
-rw-r--r--extensions/test/ole/MfcControl/Resource.h23
-rw-r--r--extensions/test/ole/MfcControl/StdAfx.cpp8
-rw-r--r--extensions/test/ole/MfcControl/StdAfx.h33
-rw-r--r--extensions/test/ole/OleClient/OleClient.ini5
-rw-r--r--extensions/test/ole/OleClient/axhost.cxx58
-rw-r--r--extensions/test/ole/OleClient/axhost.hxx62
-rw-r--r--extensions/test/ole/OleClient/clientTest.cxx1326
-rw-r--r--extensions/test/ole/OleClient/funcs.cxx357
-rw-r--r--extensions/test/ole/OleClient/makefile.mk72
-rw-r--r--extensions/test/ole/OleClient/readme.txt10
-rw-r--r--extensions/test/ole/OleConverterVar1/convTest.cxx658
-rw-r--r--extensions/test/ole/OleConverterVar1/makefile.mk66
-rw-r--r--extensions/test/ole/OleConverterVar1/readme.txt10
-rw-r--r--extensions/test/ole/OleConverterVar1/smartarray.h236
-rw-r--r--extensions/test/ole/OleTest.htm1063
-rw-r--r--extensions/test/ole/ScriptTest.html1555
-rw-r--r--extensions/test/ole/StarBasic_OleClient/oleclient.bas609
-rw-r--r--extensions/test/ole/StarBasic_OleClient/readme.txt10
-rw-r--r--extensions/test/ole/VisualBasic/AssemblyInfo.vb33
-rw-r--r--extensions/test/ole/VisualBasic/Module1.vb853
-rw-r--r--extensions/test/ole/VisualBasic/Project1.sln20
-rw-r--r--extensions/test/ole/VisualBasic/Project1.vbproj90
-rw-r--r--extensions/test/ole/VisualBasic/readme.txt18
-rw-r--r--extensions/test/ole/callUnoToJava.htm538
-rw-r--r--extensions/test/ole/cpnt/cpnt.cxx2126
-rw-r--r--extensions/test/ole/cpnt/exports.dxp3
-rw-r--r--extensions/test/ole/cpnt/makefile.mk102
-rw-r--r--extensions/test/ole/cpnt/readme.txt21
-rw-r--r--extensions/test/ole/cppToUno/makefile.mk65
-rw-r--r--extensions/test/ole/cppToUno/readme.txt9
-rw-r--r--extensions/test/ole/cppToUno/testcppuno.cxx222
-rw-r--r--extensions/test/ole/cpptest/cpptest.cxx116
-rw-r--r--extensions/test/ole/cpptest/makefile.mk64
-rw-r--r--extensions/test/ole/cpptest/readme.txt6
-rw-r--r--extensions/test/ole/idl/oletest.idl308
-rw-r--r--extensions/test/ole/unloading/makefile.mk70
-rw-r--r--extensions/test/ole/unloading/readme.txt6
-rw-r--r--extensions/test/ole/unloading/unloadTest.cxx229
-rw-r--r--extensions/test/ole/unoTocomCalls/Test/StdAfx.cpp37
-rw-r--r--extensions/test/ole/unoTocomCalls/Test/StdAfx.h58
-rw-r--r--extensions/test/ole/unoTocomCalls/Test/Test.cpp249
-rw-r--r--extensions/test/ole/unoTocomCalls/Test/Test.dsp114
-rw-r--r--extensions/test/ole/unoTocomCalls/Test/Test.sln19
-rw-r--r--extensions/test/ole/unoTocomCalls/Test/Test.vcproj247
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/Basic.rgs27
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/BasicTest.rgs27
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/Callback.cpp514
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/Callback.h138
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/Callback.rgs27
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/Simple.cpp82
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/Simple.h67
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/Simple.rgs27
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/StdAfx.cpp41
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/StdAfx.h59
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/XCallback_Impl.cpp103
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/XCallback_Impl.def10
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/XCallback_Impl.dsp337
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/XCallback_Impl.idl151
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/XCallback_Impl.rc163
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/XCallback_Impl.sln31
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/XCallback_Impl.vcproj816
-rw-r--r--extensions/test/ole/unoTocomCalls/XCallback_Impl/resource.h48
-rw-r--r--extensions/test/ole/unoTocomCalls/readme.txt9
-rw-r--r--extensions/test/pgp/TestPGP.java146
-rw-r--r--extensions/test/pgp/makefile.mk124
-rw-r--r--extensions/test/pgp/readme.txt33
-rw-r--r--extensions/test/sax/exports.dxp2
-rw-r--r--extensions/test/sax/factory.hxx33
-rw-r--r--extensions/test/sax/makefile.mk64
-rw-r--r--extensions/test/sax/testsax.cxx910
-rw-r--r--extensions/test/sax/testwriter.cxx772
-rw-r--r--extensions/test/stm/datatest.cxx1073
-rw-r--r--extensions/test/stm/exports.dxp2
-rw-r--r--extensions/test/stm/makefile.mk61
-rw-r--r--extensions/test/stm/marktest.cxx685
-rw-r--r--extensions/test/stm/pipetest.cxx450
-rw-r--r--extensions/test/stm/testfactreg.cxx173
-rw-r--r--extensions/test/stm/testfactreg.hxx113
-rw-r--r--extensions/util/hidother.src428
-rw-r--r--extensions/util/makefile.mk39
-rw-r--r--extensions/util/makefile.pmk29
-rw-r--r--extensions/util/target.pmk35
-rw-r--r--extensions/workben/makefile.mk170
-rw-r--r--extensions/workben/pythonautotest.cxx623
-rw-r--r--extensions/workben/pythontest.cxx557
-rw-r--r--extensions/workben/testcomponent.cxx222
-rw-r--r--extensions/workben/testframecontrol.cxx319
-rw-r--r--extensions/workben/testpgp.cxx842
-rw-r--r--extensions/workben/testresource.cxx92
-rw-r--r--extensions/workben/testresource.src30
-rw-r--r--external/gcc3_specific/makefile.mk87
-rw-r--r--external/glibc-2.1.3.patch210
-rw-r--r--external/glibc/makefile.mk70
-rw-r--r--external/mingwheaders/makefile.mk210
-rw-r--r--external/mingwheaders/mingw_atl_headers.patch1654
-rw-r--r--external/mingwheaders/mingw_headers.patch2130
-rw-r--r--external/prj/build.lst5
-rw-r--r--external/prj/d.lst67
-rw-r--r--external/unowinreg/README2
-rw-r--r--extras/prj/build.lst86
-rw-r--r--extras/prj/d.lst16
-rw-r--r--extras/source/autotext/delzip1
-rw-r--r--extras/source/autotext/lang/af-ZA/acor_af-ZA.datbin0 -> 61042 bytes
-rw-r--r--extras/source/autotext/lang/bg/acor_bg-BG.datbin0 -> 3410 bytes
-rw-r--r--extras/source/autotext/lang/bg/crdbus50.baubin0 -> 14598 bytes
-rw-r--r--extras/source/autotext/lang/bg/standard.baubin0 -> 56036 bytes
-rw-r--r--extras/source/autotext/lang/bg/template.baubin0 -> 59956 bytes
-rw-r--r--extras/source/autotext/lang/cs/acor_cs-CZ.datbin0 -> 99637 bytes
-rw-r--r--extras/source/autotext/lang/cs/crdbus50.baubin0 -> 34953 bytes
-rw-r--r--extras/source/autotext/lang/cs/crdbus54.baubin0 -> 34910 bytes
-rw-r--r--extras/source/autotext/lang/cs/standard.baubin0 -> 86365 bytes
-rw-r--r--extras/source/autotext/lang/cs/template.baubin0 -> 58306 bytes
-rw-r--r--extras/source/autotext/lang/da/acor_da-DK.datbin0 -> 68118 bytes
-rw-r--r--extras/source/autotext/lang/da/crdbus50.baubin0 -> 28865 bytes
-rw-r--r--extras/source/autotext/lang/da/standard.baubin0 -> 55464 bytes
-rw-r--r--extras/source/autotext/lang/da/template.baubin0 -> 45130 bytes
-rw-r--r--extras/source/autotext/lang/de/acor_de-DE.datbin0 -> 31785 bytes
-rw-r--r--extras/source/autotext/lang/de/crdbus50.baubin0 -> 20777 bytes
-rw-r--r--extras/source/autotext/lang/de/standard.baubin0 -> 48317 bytes
-rw-r--r--extras/source/autotext/lang/de/template.baubin0 -> 49052 bytes
-rw-r--r--extras/source/autotext/lang/delzip1
-rw-r--r--extras/source/autotext/lang/en-AU/acor_en-AU.datbin0 -> 79211 bytes
-rw-r--r--extras/source/autotext/lang/en-GB/acor_en-GB.datbin0 -> 79212 bytes
-rw-r--r--extras/source/autotext/lang/en-GB/crdbus50.baubin0 -> 30564 bytes
-rw-r--r--extras/source/autotext/lang/en-GB/standard.baubin0 -> 68960 bytes
-rw-r--r--extras/source/autotext/lang/en-GB/template.baubin0 -> 49042 bytes
-rw-r--r--extras/source/autotext/lang/en-US/acor_en-US.datbin0 -> 78472 bytes
-rw-r--r--extras/source/autotext/lang/en-US/crdbus50.baubin0 -> 29311 bytes
-rw-r--r--extras/source/autotext/lang/en-US/standard.baubin0 -> 57462 bytes
-rw-r--r--extras/source/autotext/lang/en-US/template.baubin0 -> 45671 bytes
-rw-r--r--extras/source/autotext/lang/en-ZA/acor_en-ZA.datbin0 -> 80173 bytes
-rw-r--r--extras/source/autotext/lang/es/acor_es-ES.datbin0 -> 39611 bytes
-rw-r--r--extras/source/autotext/lang/es/crdbus50.baubin0 -> 29126 bytes
-rw-r--r--extras/source/autotext/lang/es/standard.baubin0 -> 43448 bytes
-rw-r--r--extras/source/autotext/lang/es/template.baubin0 -> 45738 bytes
-rw-r--r--extras/source/autotext/lang/eu/acor_eu.datbin0 -> 78988 bytes
-rw-r--r--extras/source/autotext/lang/eu/crdbus50.baubin0 -> 29311 bytes
-rw-r--r--extras/source/autotext/lang/eu/standard.baubin0 -> 57462 bytes
-rw-r--r--extras/source/autotext/lang/eu/template.baubin0 -> 45671 bytes
-rw-r--r--extras/source/autotext/lang/fa/acor_fa-IR.datbin0 -> 629744 bytes
-rw-r--r--extras/source/autotext/lang/fi/acor_fi-FI.datbin0 -> 5810 bytes
-rw-r--r--extras/source/autotext/lang/fr/acor_fr-FR.datbin0 -> 4650 bytes
-rw-r--r--extras/source/autotext/lang/fr/crdbus50.baubin0 -> 29255 bytes
-rw-r--r--extras/source/autotext/lang/fr/standard.baubin0 -> 48704 bytes
-rw-r--r--extras/source/autotext/lang/fr/template.baubin0 -> 45856 bytes
-rw-r--r--extras/source/autotext/lang/ga-IE/acor_ga-IE.datbin0 -> 13750 bytes
-rw-r--r--extras/source/autotext/lang/hr/acor_hr-HR.datbin0 -> 50366 bytes
-rw-r--r--extras/source/autotext/lang/hu/acor_hu-HU.datbin0 -> 96464 bytes
-rw-r--r--extras/source/autotext/lang/hu/crdbus50.baubin0 -> 29629 bytes
-rw-r--r--extras/source/autotext/lang/hu/crdbus54.baubin0 -> 29564 bytes
-rw-r--r--extras/source/autotext/lang/hu/standard.baubin0 -> 54393 bytes
-rw-r--r--extras/source/autotext/lang/hu/template.baubin0 -> 52935 bytes
-rw-r--r--extras/source/autotext/lang/it/acor_it-IT.datbin0 -> 13337 bytes
-rw-r--r--extras/source/autotext/lang/it/crdbus50.baubin0 -> 29144 bytes
-rw-r--r--extras/source/autotext/lang/it/standard.baubin0 -> 44669 bytes
-rw-r--r--extras/source/autotext/lang/it/template.baubin0 -> 45994 bytes
-rw-r--r--extras/source/autotext/lang/ja/acor_ja-JP.datbin0 -> 77736 bytes
-rw-r--r--extras/source/autotext/lang/ja/crdbus50.baubin0 -> 15065 bytes
-rw-r--r--extras/source/autotext/lang/ja/standard.baubin0 -> 36137 bytes
-rw-r--r--extras/source/autotext/lang/ja/template.baubin0 -> 46244 bytes
-rw-r--r--extras/source/autotext/lang/km/crdbus50.baubin0 -> 29311 bytes
-rw-r--r--extras/source/autotext/lang/km/standard.baubin0 -> 57462 bytes
-rw-r--r--extras/source/autotext/lang/km/template.baubin0 -> 45671 bytes
-rw-r--r--extras/source/autotext/lang/ko/acor_ko-KR.datbin0 -> 77736 bytes
-rw-r--r--extras/source/autotext/lang/ko/crdbus50.baubin0 -> 15587 bytes
-rw-r--r--extras/source/autotext/lang/ko/standard.baubin0 -> 40482 bytes
-rw-r--r--extras/source/autotext/lang/ko/template.baubin0 -> 46406 bytes
-rw-r--r--extras/source/autotext/lang/lb-LU/acor_lb-LU.datbin0 -> 45098 bytes
-rw-r--r--extras/source/autotext/lang/lt/acor_lt-LT.datbin0 -> 3748 bytes
-rw-r--r--extras/source/autotext/lang/makefile.mk50
-rw-r--r--extras/source/autotext/lang/mn/acor_mn-MN.datbin0 -> 31583 bytes
-rw-r--r--extras/source/autotext/lang/mn/crdbus50.baubin0 -> 31760 bytes
-rw-r--r--extras/source/autotext/lang/mn/standard.baubin0 -> 64482 bytes
-rw-r--r--extras/source/autotext/lang/mn/template.baubin0 -> 50850 bytes
-rw-r--r--extras/source/autotext/lang/nl/acor_nl-NL.datbin0 -> 3407 bytes
-rw-r--r--extras/source/autotext/lang/nl/crdbus50.baubin0 -> 34228 bytes
-rw-r--r--extras/source/autotext/lang/nl/standard.baubin0 -> 40557 bytes
-rw-r--r--extras/source/autotext/lang/nl/template.baubin0 -> 39676 bytes
-rw-r--r--extras/source/autotext/lang/pl/acor_pl-PL.datbin0 -> 80008 bytes
-rw-r--r--extras/source/autotext/lang/pl/crdbus50.baubin0 -> 16633 bytes
-rw-r--r--extras/source/autotext/lang/pl/standard.baubin0 -> 33032 bytes
-rw-r--r--extras/source/autotext/lang/pl/template.baubin0 -> 7581 bytes
-rw-r--r--extras/source/autotext/lang/pt-BR/acor_pt-BR.datbin0 -> 40513 bytes
-rw-r--r--extras/source/autotext/lang/pt-BR/crdbus50.baubin0 -> 14627 bytes
-rw-r--r--extras/source/autotext/lang/pt-BR/standard.baubin0 -> 36413 bytes
-rw-r--r--extras/source/autotext/lang/pt-BR/template.baubin0 -> 46270 bytes
-rw-r--r--extras/source/autotext/lang/pt/acor_pt-PT.datbin0 -> 15141 bytes
-rw-r--r--extras/source/autotext/lang/pt/crdbus50.baubin0 -> 36662 bytes
-rw-r--r--extras/source/autotext/lang/pt/standard.baubin0 -> 61444 bytes
-rw-r--r--extras/source/autotext/lang/pt/template.baubin0 -> 7042 bytes
-rw-r--r--extras/source/autotext/lang/ru/acor_ru-RU.datbin0 -> 25673 bytes
-rw-r--r--extras/source/autotext/lang/ru/crdbus50.baubin0 -> 29311 bytes
-rw-r--r--extras/source/autotext/lang/ru/standard.baubin0 -> 57462 bytes
-rw-r--r--extras/source/autotext/lang/ru/template.baubin0 -> 45671 bytes
-rw-r--r--extras/source/autotext/lang/sh-ME/acor_sh-ME.datbin0 -> 1631 bytes
-rw-r--r--extras/source/autotext/lang/sh-RS/acor_sh-RS.datbin0 -> 1631 bytes
-rw-r--r--extras/source/autotext/lang/sh-YU/acor_sh-YU.datbin0 -> 1631 bytes
-rw-r--r--extras/source/autotext/lang/sk/acor_sk-SK.datbin0 -> 5641 bytes
-rw-r--r--extras/source/autotext/lang/sk/crdbus50.baubin0 -> 30465 bytes
-rw-r--r--extras/source/autotext/lang/sk/crdbus54.baubin0 -> 30842 bytes
-rw-r--r--extras/source/autotext/lang/sk/standard.baubin0 -> 92337 bytes
-rw-r--r--extras/source/autotext/lang/sk/template.baubin0 -> 60907 bytes
-rw-r--r--extras/source/autotext/lang/sl/acor_sl-SI.datbin0 -> 46882 bytes
-rw-r--r--extras/source/autotext/lang/sl/crdbus50.baubin0 -> 30684 bytes
-rw-r--r--extras/source/autotext/lang/sl/crdbus54.baubin0 -> 30620 bytes
-rw-r--r--extras/source/autotext/lang/sl/standard.baubin0 -> 59934 bytes
-rw-r--r--extras/source/autotext/lang/sl/template.baubin0 -> 61243 bytes
-rw-r--r--extras/source/autotext/lang/sr-ME/acor_sr-ME.datbin0 -> 1683 bytes
-rw-r--r--extras/source/autotext/lang/sr-RS/acor_sr-RS.datbin0 -> 1683 bytes
-rw-r--r--extras/source/autotext/lang/sr-YU/acor_sr-YU.datbin0 -> 1683 bytes
-rw-r--r--extras/source/autotext/lang/sv/acor_sv-SE.datbin0 -> 15453 bytes
-rw-r--r--extras/source/autotext/lang/sv/crdbus50.baubin0 -> 29241 bytes
-rw-r--r--extras/source/autotext/lang/sv/standard.baubin0 -> 38778 bytes
-rw-r--r--extras/source/autotext/lang/sv/template.baubin0 -> 45349 bytes
-rw-r--r--extras/source/autotext/lang/tr/acor_tr-TR.datbin0 -> 16444 bytes
-rw-r--r--extras/source/autotext/lang/tr/crdbus50.baubin0 -> 143872 bytes
-rw-r--r--extras/source/autotext/lang/tr/template.baubin0 -> 28672 bytes
-rw-r--r--extras/source/autotext/lang/vi/acor_vi-VN.datbin0 -> 77337 bytes
-rw-r--r--extras/source/autotext/lang/zh-CN/acor_zh-CN.datbin0 -> 14211 bytes
-rw-r--r--extras/source/autotext/lang/zh-CN/crdbus50.baubin0 -> 15356 bytes
-rw-r--r--extras/source/autotext/lang/zh-CN/standard.baubin0 -> 38238 bytes
-rw-r--r--extras/source/autotext/lang/zh-CN/template.baubin0 -> 46139 bytes
-rw-r--r--extras/source/autotext/lang/zh-TW/acor_zh-TW.datbin0 -> 14211 bytes
-rw-r--r--extras/source/autotext/lang/zh-TW/crdbus50.baubin0 -> 15481 bytes
-rw-r--r--extras/source/autotext/lang/zh-TW/standard.baubin0 -> 35426 bytes
-rw-r--r--extras/source/autotext/lang/zh-TW/template.baubin0 -> 47136 bytes
-rw-r--r--extras/source/autotext/makefile.mk53
-rw-r--r--extras/source/autotext/mytexts.baubin0 -> 567 bytes
-rw-r--r--extras/source/database/biblio.dbfbin0 -> 343909 bytes
-rw-r--r--extras/source/database/biblio.dbtbin0 -> 564226 bytes
-rw-r--r--extras/source/database/biblio.odbbin0 -> 1661 bytes
-rw-r--r--extras/source/database/delzip1
-rw-r--r--extras/source/database/evolocal.odbbin0 -> 3759 bytes
-rw-r--r--extras/source/database/makefile.mk53
-rw-r--r--extras/source/gallery/accessories-nonfree/delzip0
-rw-r--r--extras/source/gallery/accessories-nonfree/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Draws/People/delzip0
-rw-r--r--extras/source/gallery/accessories/Draws/People/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Elements/Bullets2/delzip0
-rw-r--r--extras/source/gallery/accessories/Elements/Bullets2/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Buildings/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Buildings/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Celebration/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Celebration/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Cities/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Cities/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Fauna/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Fauna/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Flowers/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Flowers/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/FoodsandDrinks/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/FoodsandDrinks/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Humans/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Humans/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Landscapes/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Landscapes/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Objects/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Objects/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Plants/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Plants/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Space/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Space/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Statues/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Statues/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/Photos/Travel/delzip0
-rw-r--r--extras/source/gallery/accessories/Photos/Travel/makefile.mk52
-rw-r--r--extras/source/gallery/accessories/delzip0
-rw-r--r--extras/source/gallery/accessories/makefile.mk52
-rw-r--r--extras/source/gallery/apples.gifbin0 -> 6197 bytes
-rw-r--r--extras/source/gallery/bigapple.gifbin0 -> 35287 bytes
-rw-r--r--extras/source/gallery/bullets/blkpearl.gifbin0 -> 929 bytes
-rw-r--r--extras/source/gallery/bullets/bluarrow.gifbin0 -> 93 bytes
-rw-r--r--extras/source/gallery/bullets/bluball.gifbin0 -> 103 bytes
-rw-r--r--extras/source/gallery/bullets/bludiamd.gifbin0 -> 111 bytes
-rw-r--r--extras/source/gallery/bullets/bluered.gifbin0 -> 507 bytes
-rw-r--r--extras/source/gallery/bullets/blusqare.gifbin0 -> 96 bytes
-rw-r--r--extras/source/gallery/bullets/blustar.gifbin0 -> 146 bytes
-rw-r--r--extras/source/gallery/bullets/coffee_1.gifbin0 -> 644 bytes
-rw-r--r--extras/source/gallery/bullets/coffee_2.gifbin0 -> 656 bytes
-rw-r--r--extras/source/gallery/bullets/coffee_3.gifbin0 -> 625 bytes
-rw-r--r--extras/source/gallery/bullets/coffee_4.gifbin0 -> 605 bytes
-rw-r--r--extras/source/gallery/bullets/coffee_5.gifbin0 -> 671 bytes
-rw-r--r--extras/source/gallery/bullets/con-blue.gifbin0 -> 594 bytes
-rw-r--r--extras/source/gallery/bullets/con-cyan.gifbin0 -> 614 bytes
-rw-r--r--extras/source/gallery/bullets/con-green.gifbin0 -> 393 bytes
-rw-r--r--extras/source/gallery/bullets/con-lilac.gifbin0 -> 600 bytes
-rw-r--r--extras/source/gallery/bullets/con-oran.gifbin0 -> 594 bytes
-rw-r--r--extras/source/gallery/bullets/con-pink.gifbin0 -> 394 bytes
-rw-r--r--extras/source/gallery/bullets/con-red.gifbin0 -> 388 bytes
-rw-r--r--extras/source/gallery/bullets/con-yellow.gifbin0 -> 375 bytes
-rw-r--r--extras/source/gallery/bullets/corner_1.gifbin0 -> 399 bytes
-rw-r--r--extras/source/gallery/bullets/corner_2.gifbin0 -> 399 bytes
-rw-r--r--extras/source/gallery/bullets/corner_3.gifbin0 -> 402 bytes
-rw-r--r--extras/source/gallery/bullets/corner_4.gifbin0 -> 408 bytes
-rw-r--r--extras/source/gallery/bullets/darkball.gifbin0 -> 924 bytes
-rw-r--r--extras/source/gallery/bullets/darkblue.gifbin0 -> 527 bytes
-rw-r--r--extras/source/gallery/bullets/delzip1
-rw-r--r--extras/source/gallery/bullets/gldpearl.gifbin0 -> 929 bytes
-rw-r--r--extras/source/gallery/bullets/golfball.gifbin0 -> 960 bytes
-rw-r--r--extras/source/gallery/bullets/grnarrow.gifbin0 -> 94 bytes
-rw-r--r--extras/source/gallery/bullets/grnball.gifbin0 -> 101 bytes
-rw-r--r--extras/source/gallery/bullets/grndiamd.gifbin0 -> 111 bytes
-rw-r--r--extras/source/gallery/bullets/grnpearl.gifbin0 -> 935 bytes
-rw-r--r--extras/source/gallery/bullets/grnsqare.gifbin0 -> 97 bytes
-rw-r--r--extras/source/gallery/bullets/grnstar.gifbin0 -> 144 bytes
-rw-r--r--extras/source/gallery/bullets/gryarrow.gifbin0 -> 94 bytes
-rw-r--r--extras/source/gallery/bullets/gryball.gifbin0 -> 103 bytes
-rw-r--r--extras/source/gallery/bullets/grydiamd.gifbin0 -> 113 bytes
-rw-r--r--extras/source/gallery/bullets/grysqare.gifbin0 -> 98 bytes
-rw-r--r--extras/source/gallery/bullets/grystar.gifbin0 -> 144 bytes
-rw-r--r--extras/source/gallery/bullets/makefile.mk49
-rw-r--r--extras/source/gallery/bullets/orgarrow.gifbin0 -> 96 bytes
-rw-r--r--extras/source/gallery/bullets/orgball.gifbin0 -> 104 bytes
-rw-r--r--extras/source/gallery/bullets/orgdiamd.gifbin0 -> 149 bytes
-rw-r--r--extras/source/gallery/bullets/orgsqare.gifbin0 -> 99 bytes
-rw-r--r--extras/source/gallery/bullets/orgstar.gifbin0 -> 143 bytes
-rw-r--r--extras/source/gallery/bullets/pebble_1.gifbin0 -> 434 bytes
-rw-r--r--extras/source/gallery/bullets/pebble_2.gifbin0 -> 460 bytes
-rw-r--r--extras/source/gallery/bullets/pebble_3.gifbin0 -> 463 bytes
-rw-r--r--extras/source/gallery/bullets/poliball.gifbin0 -> 945 bytes
-rw-r--r--extras/source/gallery/bullets/popcorn_1.gifbin0 -> 1005 bytes
-rw-r--r--extras/source/gallery/bullets/popcorn_2.gifbin0 -> 1249 bytes
-rw-r--r--extras/source/gallery/bullets/rainbow.gifbin0 -> 527 bytes
-rw-r--r--extras/source/gallery/bullets/redarrow.gifbin0 -> 97 bytes
-rw-r--r--extras/source/gallery/bullets/redball.gifbin0 -> 103 bytes
-rw-r--r--extras/source/gallery/bullets/reddiamd.gifbin0 -> 111 bytes
-rw-r--r--extras/source/gallery/bullets/redsqare.gifbin0 -> 97 bytes
-rw-r--r--extras/source/gallery/bullets/redstar.gifbin0 -> 145 bytes
-rw-r--r--extras/source/gallery/bullets/whtpearl.gifbin0 -> 931 bytes
-rw-r--r--extras/source/gallery/bullets/ylwarrow.gifbin0 -> 126 bytes
-rw-r--r--extras/source/gallery/bullets/ylwball.gifbin0 -> 133 bytes
-rw-r--r--extras/source/gallery/bullets/ylwdiamd.gifbin0 -> 145 bytes
-rw-r--r--extras/source/gallery/bullets/ylwsqare.gifbin0 -> 96 bytes
-rw-r--r--extras/source/gallery/bullets/ylwstar.gifbin0 -> 145 bytes
-rw-r--r--extras/source/gallery/delzip0
-rw-r--r--extras/source/gallery/flower.gifbin0 -> 6073 bytes
-rw-r--r--extras/source/gallery/flowers.gifbin0 -> 9333 bytes
-rw-r--r--extras/source/gallery/gallery_sound/delzip1
-rw-r--r--extras/source/gallery/gallery_sound/makefile.mk49
-rw-r--r--extras/source/gallery/gallery_sound/sg100.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_sound/sg100.thmbin0 -> 538 bytes
-rw-r--r--extras/source/gallery/gallery_sound/sg30.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_sound/sg30.thmbin0 -> 565 bytes
-rw-r--r--extras/source/gallery/gallery_system/delzip1
-rw-r--r--extras/source/gallery/gallery_system/makefile.mk49
-rw-r--r--extras/source/gallery/gallery_system/sg1.sdgbin0 -> 29872 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg1.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg1.thmbin0 -> 2432 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg2.sdgbin0 -> 25785 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg2.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg2.thmbin0 -> 1266 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg24.sdgbin0 -> 49161 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg24.sdvbin0 -> 359424 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg24.thmbin0 -> 1236 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg25.sdgbin0 -> 55650 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg25.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg25.thmbin0 -> 2016 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg3.sdgbin0 -> 270058 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg3.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg3.thmbin0 -> 2503 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg36.sdgbin0 -> 65354 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg36.sdvbin0 -> 589312 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg36.thmbin0 -> 1163 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg4.sdgbin0 -> 60533 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg4.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg4.thmbin0 -> 3323 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg9.sdgbin0 -> 5331 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg9.sdvbin0 -> 2048 bytes
-rw-r--r--extras/source/gallery/gallery_system/sg9.thmbin0 -> 1458 bytes
-rw-r--r--extras/source/gallery/htmlexpo/bludown.gifbin0 -> 873 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blufirs.gifbin0 -> 906 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blufirs_.gifbin0 -> 884 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blulast.gifbin0 -> 909 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blulast_.gifbin0 -> 898 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blunav.gifbin0 -> 1441 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blunext.gifbin0 -> 886 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blunext_.gifbin0 -> 841 bytes
-rw-r--r--extras/source/gallery/htmlexpo/bluprev.gifbin0 -> 893 bytes
-rw-r--r--extras/source/gallery/htmlexpo/bluprev_.gifbin0 -> 841 bytes
-rw-r--r--extras/source/gallery/htmlexpo/blutext.gifbin0 -> 1390 bytes
-rw-r--r--extras/source/gallery/htmlexpo/bluup.gifbin0 -> 874 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubdown.gifbin0 -> 1628 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubfirs.gifbin0 -> 1704 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubfirs_.gifbin0 -> 1320 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cublast.gifbin0 -> 1712 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cublast_.gifbin0 -> 1282 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubnav.gifbin0 -> 1719 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubnext.gifbin0 -> 1651 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubnext_.gifbin0 -> 1244 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubprev.gifbin0 -> 1648 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubprev_.gifbin0 -> 1239 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubtext.gifbin0 -> 1687 bytes
-rw-r--r--extras/source/gallery/htmlexpo/cubup.gifbin0 -> 1646 bytes
-rw-r--r--extras/source/gallery/htmlexpo/delzip1
-rw-r--r--extras/source/gallery/htmlexpo/gredown.gifbin0 -> 1360 bytes
-rw-r--r--extras/source/gallery/htmlexpo/grefirs.gifbin0 -> 1517 bytes
-rw-r--r--extras/source/gallery/htmlexpo/grefirs_.gifbin0 -> 1442 bytes
-rw-r--r--extras/source/gallery/htmlexpo/grelast.gifbin0 -> 1457 bytes
-rw-r--r--extras/source/gallery/htmlexpo/grelast_.gifbin0 -> 1290 bytes
-rw-r--r--extras/source/gallery/htmlexpo/grenav.gifbin0 -> 1582 bytes
-rw-r--r--extras/source/gallery/htmlexpo/grenext.gifbin0 -> 1372 bytes
-rw-r--r--extras/source/gallery/htmlexpo/grenext_.gifbin0 -> 1184 bytes
-rw-r--r--extras/source/gallery/htmlexpo/greprev.gifbin0 -> 1370 bytes
-rw-r--r--extras/source/gallery/htmlexpo/greprev_.gifbin0 -> 1180 bytes
-rw-r--r--extras/source/gallery/htmlexpo/gretext.gifbin0 -> 1433 bytes
-rw-r--r--extras/source/gallery/htmlexpo/greup.gifbin0 -> 1365 bytes
-rw-r--r--extras/source/gallery/htmlexpo/makefile.mk49
-rw-r--r--extras/source/gallery/htmlexpo/simdown.gifbin0 -> 439 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simfirs.gifbin0 -> 477 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simfirs_.gifbin0 -> 477 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simlast.gifbin0 -> 483 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simlast_.gifbin0 -> 624 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simnav.gifbin0 -> 483 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simnext.gifbin0 -> 448 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simnext_.gifbin0 -> 445 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simprev.gifbin0 -> 444 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simprev_.gifbin0 -> 446 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simtext.gifbin0 -> 646 bytes
-rw-r--r--extras/source/gallery/htmlexpo/simup.gifbin0 -> 439 bytes
-rw-r--r--extras/source/gallery/makefile.mk49
-rw-r--r--extras/source/gallery/rulers/blkballs.gifbin0 -> 2272 bytes
-rw-r--r--extras/source/gallery/rulers/blurulr1.gifbin0 -> 6583 bytes
-rw-r--r--extras/source/gallery/rulers/blurulr2.gifbin0 -> 2965 bytes
-rw-r--r--extras/source/gallery/rulers/blurulr3.gifbin0 -> 2011 bytes
-rw-r--r--extras/source/gallery/rulers/blurulr4.gifbin0 -> 2561 bytes
-rw-r--r--extras/source/gallery/rulers/blurulr5.gifbin0 -> 5708 bytes
-rw-r--r--extras/source/gallery/rulers/blurulr6.gifbin0 -> 1878 bytes
-rw-r--r--extras/source/gallery/rulers/delzip1
-rw-r--r--extras/source/gallery/rulers/gldballs.gifbin0 -> 2240 bytes
-rw-r--r--extras/source/gallery/rulers/grnballs.gifbin0 -> 3702 bytes
-rw-r--r--extras/source/gallery/rulers/grnrulr1.gifbin0 -> 2409 bytes
-rw-r--r--extras/source/gallery/rulers/grnrulr2.gifbin0 -> 2759 bytes
-rw-r--r--extras/source/gallery/rulers/grnrulr3.gifbin0 -> 2599 bytes
-rw-r--r--extras/source/gallery/rulers/grnrulr4.gifbin0 -> 3172 bytes
-rw-r--r--extras/source/gallery/rulers/gryrulr1.gifbin0 -> 2144 bytes
-rw-r--r--extras/source/gallery/rulers/gryrulr2.gifbin0 -> 3014 bytes
-rw-r--r--extras/source/gallery/rulers/gryrulr3.gifbin0 -> 1479 bytes
-rw-r--r--extras/source/gallery/rulers/makefile.mk49
-rw-r--r--extras/source/gallery/rulers/orgrulr1.gifbin0 -> 2667 bytes
-rw-r--r--extras/source/gallery/rulers/redrulr1.gifbin0 -> 2138 bytes
-rw-r--r--extras/source/gallery/rulers/redrulr2.gifbin0 -> 2037 bytes
-rw-r--r--extras/source/gallery/rulers/redrulr3.gifbin0 -> 2192 bytes
-rw-r--r--extras/source/gallery/rulers/redrulr4.gifbin0 -> 2089 bytes
-rw-r--r--extras/source/gallery/rulers/redrulr5.gifbin0 -> 1343 bytes
-rw-r--r--extras/source/gallery/rulers/striped.gifbin0 -> 1553 bytes
-rw-r--r--extras/source/gallery/rulers/whtballs.gifbin0 -> 3616 bytes
-rw-r--r--extras/source/gallery/rulers/ylwrulr1.gifbin0 -> 2667 bytes
-rw-r--r--extras/source/gallery/sky.gifbin0 -> 7517 bytes
-rw-r--r--extras/source/gallery/sounds/apert.wavbin0 -> 47760 bytes
-rw-r--r--extras/source/gallery/sounds/apert2.wavbin0 -> 60904 bytes
-rw-r--r--extras/source/gallery/sounds/applause.wavbin0 -> 90472 bytes
-rw-r--r--extras/source/gallery/sounds/beam.wavbin0 -> 43728 bytes
-rw-r--r--extras/source/gallery/sounds/beam2.wavbin0 -> 73456 bytes
-rw-r--r--extras/source/gallery/sounds/cow.wavbin0 -> 37546 bytes
-rw-r--r--extras/source/gallery/sounds/curve.wavbin0 -> 134660 bytes
-rw-r--r--extras/source/gallery/sounds/delzip1
-rw-r--r--extras/source/gallery/sounds/drama.wavbin0 -> 162366 bytes
-rw-r--r--extras/source/gallery/sounds/explos.wavbin0 -> 47532 bytes
-rw-r--r--extras/source/gallery/sounds/falling.wavbin0 -> 87008 bytes
-rw-r--r--extras/source/gallery/sounds/glasses.wavbin0 -> 36270 bytes
-rw-r--r--extras/source/gallery/sounds/gong.wavbin0 -> 191292 bytes
-rw-r--r--extras/source/gallery/sounds/horse.wavbin0 -> 41958 bytes
-rw-r--r--extras/source/gallery/sounds/kling.wavbin0 -> 46376 bytes
-rw-r--r--extras/source/gallery/sounds/kongas.wavbin0 -> 54866 bytes
-rw-r--r--extras/source/gallery/sounds/laser.wavbin0 -> 8408 bytes
-rw-r--r--extras/source/gallery/sounds/left.wavbin0 -> 29788 bytes
-rw-r--r--extras/source/gallery/sounds/makefile.mk49
-rw-r--r--extras/source/gallery/sounds/nature1.wavbin0 -> 83102 bytes
-rw-r--r--extras/source/gallery/sounds/nature2.wavbin0 -> 37164 bytes
-rw-r--r--extras/source/gallery/sounds/ok.wavbin0 -> 8862 bytes
-rw-r--r--extras/source/gallery/sounds/pluck.wavbin0 -> 28510 bytes
-rw-r--r--extras/source/gallery/sounds/roll.wavbin0 -> 242648 bytes
-rw-r--r--extras/source/gallery/sounds/romans.wavbin0 -> 90466 bytes
-rw-r--r--extras/source/gallery/sounds/soft.wavbin0 -> 185752 bytes
-rw-r--r--extras/source/gallery/sounds/space.wavbin0 -> 133758 bytes
-rw-r--r--extras/source/gallery/sounds/space2.wavbin0 -> 192686 bytes
-rw-r--r--extras/source/gallery/sounds/space3.wavbin0 -> 144748 bytes
-rw-r--r--extras/source/gallery/sounds/sparcle.wavbin0 -> 65580 bytes
-rw-r--r--extras/source/gallery/sounds/strom.wavbin0 -> 85106 bytes
-rw-r--r--extras/source/gallery/sounds/theetone.wavbin0 -> 49506 bytes
-rw-r--r--extras/source/gallery/sounds/top.wavbin0 -> 69242 bytes
-rw-r--r--extras/source/gallery/sounds/train.wavbin0 -> 56716 bytes
-rw-r--r--extras/source/gallery/sounds/untie.wavbin0 -> 190884 bytes
-rw-r--r--extras/source/gallery/sounds/ups.wavbin0 -> 28682 bytes
-rw-r--r--extras/source/gallery/sounds/wallewal.wavbin0 -> 104018 bytes
-rw-r--r--extras/source/gallery/www-back/aqua.jpgbin0 -> 5511 bytes
-rw-r--r--extras/source/gallery/www-back/bathroom.jpgbin0 -> 4473 bytes
-rw-r--r--extras/source/gallery/www-back/blocks.jpgbin0 -> 5664 bytes
-rw-r--r--extras/source/gallery/www-back/blow_green.jpgbin0 -> 3159 bytes
-rw-r--r--extras/source/gallery/www-back/blueblop.jpgbin0 -> 4469 bytes
-rw-r--r--extras/source/gallery/www-back/bulging.jpgbin0 -> 4523 bytes
-rw-r--r--extras/source/gallery/www-back/canvas_blue.jpgbin0 -> 5961 bytes
-rw-r--r--extras/source/gallery/www-back/cheese.jpgbin0 -> 3029 bytes
-rw-r--r--extras/source/gallery/www-back/chocolate.jpgbin0 -> 4316 bytes
-rw-r--r--extras/source/gallery/www-back/citrus.jpgbin0 -> 7669 bytes
-rw-r--r--extras/source/gallery/www-back/confetti.jpgbin0 -> 11733 bytes
-rw-r--r--extras/source/gallery/www-back/daisy.jpgbin0 -> 8197 bytes
-rw-r--r--extras/source/gallery/www-back/delzip1
-rw-r--r--extras/source/gallery/www-back/fluffy-grey.jpgbin0 -> 4314 bytes
-rw-r--r--extras/source/gallery/www-back/fluffy.jpgbin0 -> 6890 bytes
-rw-r--r--extras/source/gallery/www-back/fuzzy-blue.jpgbin0 -> 11472 bytes
-rw-r--r--extras/source/gallery/www-back/fuzzy-darkgrey.jpgbin0 -> 7293 bytes
-rw-r--r--extras/source/gallery/www-back/fuzzy-grey.jpgbin0 -> 6340 bytes
-rw-r--r--extras/source/gallery/www-back/fuzzy-lightgrey.jpgbin0 -> 4321 bytes
-rw-r--r--extras/source/gallery/www-back/fuzzy_light.jpgbin0 -> 4880 bytes
-rw-r--r--extras/source/gallery/www-back/gregre.gifbin0 -> 2326 bytes
-rw-r--r--extras/source/gallery/www-back/grey.gifbin0 -> 8529 bytes
-rw-r--r--extras/source/gallery/www-back/grypaws.gifbin0 -> 3537 bytes
-rw-r--r--extras/source/gallery/www-back/ice-blue.jpgbin0 -> 4675 bytes
-rw-r--r--extras/source/gallery/www-back/ice-light.jpgbin0 -> 3182 bytes
-rw-r--r--extras/source/gallery/www-back/imitation_leather.jpgbin0 -> 4207 bytes
-rw-r--r--extras/source/gallery/www-back/interstices.jpgbin0 -> 3964 bytes
-rw-r--r--extras/source/gallery/www-back/jeans.jpgbin0 -> 7002 bytes
-rw-r--r--extras/source/gallery/www-back/jeansblk.jpgbin0 -> 5436 bytes
-rw-r--r--extras/source/gallery/www-back/lawn-artificial.jpgbin0 -> 13522 bytes
-rw-r--r--extras/source/gallery/www-back/lawn.jpgbin0 -> 11635 bytes
-rw-r--r--extras/source/gallery/www-back/lightblue-wet.jpgbin0 -> 5235 bytes
-rw-r--r--extras/source/gallery/www-back/linen-fine.jpgbin0 -> 5580 bytes
-rw-r--r--extras/source/gallery/www-back/lino-green.jpgbin0 -> 6275 bytes
-rw-r--r--extras/source/gallery/www-back/liquid-blue.jpgbin0 -> 3497 bytes
-rw-r--r--extras/source/gallery/www-back/makefile.mk49
-rw-r--r--extras/source/gallery/www-back/marble.jpgbin0 -> 4161 bytes
-rw-r--r--extras/source/gallery/www-back/marble_dark.jpgbin0 -> 6805 bytes
-rw-r--r--extras/source/gallery/www-back/mazes.jpgbin0 -> 9817 bytes
-rw-r--r--extras/source/gallery/www-back/mint.gifbin0 -> 4469 bytes
-rw-r--r--extras/source/gallery/www-back/notes.gifbin0 -> 1429 bytes
-rw-r--r--extras/source/gallery/www-back/pattern.jpgbin0 -> 13299 bytes
-rw-r--r--extras/source/gallery/www-back/pebble-light.jpgbin0 -> 5816 bytes
-rw-r--r--extras/source/gallery/www-back/pink.gifbin0 -> 4687 bytes
-rw-r--r--extras/source/gallery/www-back/pool.jpgbin0 -> 6005 bytes
-rw-r--r--extras/source/gallery/www-back/popcorn.jpgbin0 -> 12694 bytes
-rw-r--r--extras/source/gallery/www-back/purple.jpgbin0 -> 4257 bytes
-rw-r--r--extras/source/gallery/www-back/reddark.jpgbin0 -> 4968 bytes
-rw-r--r--extras/source/gallery/www-back/rings-green.jpgbin0 -> 5094 bytes
-rw-r--r--extras/source/gallery/www-back/rings-orange.jpgbin0 -> 6445 bytes
-rw-r--r--extras/source/gallery/www-back/roses.jpgbin0 -> 8323 bytes
-rw-r--r--extras/source/gallery/www-back/sand-light.jpgbin0 -> 4049 bytes
-rw-r--r--extras/source/gallery/www-back/sand.jpgbin0 -> 5402 bytes
-rw-r--r--extras/source/gallery/www-back/sky.jpgbin0 -> 1969 bytes
-rw-r--r--extras/source/gallery/www-back/soft-structure_grey.jpgbin0 -> 4818 bytes
-rw-r--r--extras/source/gallery/www-back/space.jpgbin0 -> 3011 bytes
-rw-r--r--extras/source/gallery/www-back/stone-dark.jpgbin0 -> 6351 bytes
-rw-r--r--extras/source/gallery/www-back/stone.jpgbin0 -> 7011 bytes
-rw-r--r--extras/source/gallery/www-back/structure.jpgbin0 -> 3834 bytes
-rw-r--r--extras/source/gallery/www-back/structure_darkgreen.gifbin0 -> 3782 bytes
-rw-r--r--extras/source/gallery/www-back/structure_green.jpgbin0 -> 4035 bytes
-rw-r--r--extras/source/gallery/www-back/wall-grey.jpgbin0 -> 5414 bytes
-rw-r--r--extras/source/gallery/www-back/wet-turquoise.jpgbin0 -> 3119 bytes
-rw-r--r--extras/source/gallery/www-back/wood.jpgbin0 -> 10382 bytes
-rw-r--r--extras/source/gallery/www-graf/bluat.gifbin0 -> 1330 bytes
-rw-r--r--extras/source/gallery/www-graf/bluback.gifbin0 -> 1016 bytes
-rw-r--r--extras/source/gallery/www-graf/bludisk.gifbin0 -> 1016 bytes
-rw-r--r--extras/source/gallery/www-graf/bludown.gifbin0 -> 1010 bytes
-rw-r--r--extras/source/gallery/www-graf/bluhome.gifbin0 -> 1031 bytes
-rw-r--r--extras/source/gallery/www-graf/bluinfo.gifbin0 -> 1000 bytes
-rw-r--r--extras/source/gallery/www-graf/bluleft.gifbin0 -> 1017 bytes
-rw-r--r--extras/source/gallery/www-graf/blumail.gifbin0 -> 1017 bytes
-rw-r--r--extras/source/gallery/www-graf/bluminus.gifbin0 -> 989 bytes
-rw-r--r--extras/source/gallery/www-graf/bluplus.gifbin0 -> 1009 bytes
-rw-r--r--extras/source/gallery/www-graf/bluquest.gifbin0 -> 1041 bytes
-rw-r--r--extras/source/gallery/www-graf/bluright.gifbin0 -> 1020 bytes
-rw-r--r--extras/source/gallery/www-graf/bluup.gifbin0 -> 1011 bytes
-rw-r--r--extras/source/gallery/www-graf/delzip1
-rw-r--r--extras/source/gallery/www-graf/gredisk.gifbin0 -> 1016 bytes
-rw-r--r--extras/source/gallery/www-graf/gredown.gifbin0 -> 1010 bytes
-rw-r--r--extras/source/gallery/www-graf/grehome.gifbin0 -> 1031 bytes
-rw-r--r--extras/source/gallery/www-graf/greinfo.gifbin0 -> 1000 bytes
-rw-r--r--extras/source/gallery/www-graf/greleft.gifbin0 -> 1017 bytes
-rw-r--r--extras/source/gallery/www-graf/gremail.gifbin0 -> 1017 bytes
-rw-r--r--extras/source/gallery/www-graf/greminus.gifbin0 -> 989 bytes
-rw-r--r--extras/source/gallery/www-graf/greplus.gifbin0 -> 1009 bytes
-rw-r--r--extras/source/gallery/www-graf/grequest.gifbin0 -> 1041 bytes
-rw-r--r--extras/source/gallery/www-graf/greright.gifbin0 -> 1020 bytes
-rw-r--r--extras/source/gallery/www-graf/greup.gifbin0 -> 1011 bytes
-rw-r--r--extras/source/gallery/www-graf/grnat.gifbin0 -> 1264 bytes
-rw-r--r--extras/source/gallery/www-graf/grnback.gifbin0 -> 1073 bytes
-rw-r--r--extras/source/gallery/www-graf/grndisk.gifbin0 -> 1219 bytes
-rw-r--r--extras/source/gallery/www-graf/grndown.gifbin0 -> 1231 bytes
-rw-r--r--extras/source/gallery/www-graf/grnexcla.gifbin0 -> 1206 bytes
-rw-r--r--extras/source/gallery/www-graf/grnhome.gifbin0 -> 872 bytes
-rw-r--r--extras/source/gallery/www-graf/grninfo.gifbin0 -> 1200 bytes
-rw-r--r--extras/source/gallery/www-graf/grnleft.gifbin0 -> 1227 bytes
-rw-r--r--extras/source/gallery/www-graf/grnmail.gifbin0 -> 1222 bytes
-rw-r--r--extras/source/gallery/www-graf/grnminus.gifbin0 -> 1187 bytes
-rw-r--r--extras/source/gallery/www-graf/grnplus.gifbin0 -> 1204 bytes
-rw-r--r--extras/source/gallery/www-graf/grnquest.gifbin0 -> 1226 bytes
-rw-r--r--extras/source/gallery/www-graf/grnright.gifbin0 -> 1201 bytes
-rw-r--r--extras/source/gallery/www-graf/grnup.gifbin0 -> 1220 bytes
-rw-r--r--extras/source/gallery/www-graf/gryat.gifbin0 -> 1052 bytes
-rw-r--r--extras/source/gallery/www-graf/gryback.gifbin0 -> 1032 bytes
-rw-r--r--extras/source/gallery/www-graf/grydisk.gifbin0 -> 1044 bytes
-rw-r--r--extras/source/gallery/www-graf/grydown.gifbin0 -> 1022 bytes
-rw-r--r--extras/source/gallery/www-graf/gryhome.gifbin0 -> 1050 bytes
-rw-r--r--extras/source/gallery/www-graf/gryinfo.gifbin0 -> 1017 bytes
-rw-r--r--extras/source/gallery/www-graf/gryleft.gifbin0 -> 1030 bytes
-rw-r--r--extras/source/gallery/www-graf/grymail.gifbin0 -> 1036 bytes
-rw-r--r--extras/source/gallery/www-graf/gryminus.gifbin0 -> 1012 bytes
-rw-r--r--extras/source/gallery/www-graf/gryplus.gifbin0 -> 1030 bytes
-rw-r--r--extras/source/gallery/www-graf/gryquest.gifbin0 -> 1023 bytes
-rw-r--r--extras/source/gallery/www-graf/gryright.gifbin0 -> 1033 bytes
-rw-r--r--extras/source/gallery/www-graf/gryup.gifbin0 -> 1027 bytes
-rw-r--r--extras/source/gallery/www-graf/makefile.mk23
-rw-r--r--extras/source/gallery/www-graf/men@work.gifbin0 -> 1287 bytes
-rw-r--r--extras/source/gallery/www-graf/orgat.gifbin0 -> 606 bytes
-rw-r--r--extras/source/gallery/www-graf/orgback.gifbin0 -> 1259 bytes
-rw-r--r--extras/source/gallery/www-graf/orgdisk.gifbin0 -> 421 bytes
-rw-r--r--extras/source/gallery/www-graf/orgdown.gifbin0 -> 560 bytes
-rw-r--r--extras/source/gallery/www-graf/orghome.gifbin0 -> 808 bytes
-rw-r--r--extras/source/gallery/www-graf/orginfo.gifbin0 -> 341 bytes
-rw-r--r--extras/source/gallery/www-graf/orgleft.gifbin0 -> 285 bytes
-rw-r--r--extras/source/gallery/www-graf/orgmail.gifbin0 -> 517 bytes
-rw-r--r--extras/source/gallery/www-graf/orgminus.gifbin0 -> 272 bytes
-rw-r--r--extras/source/gallery/www-graf/orgplus.gifbin0 -> 289 bytes
-rw-r--r--extras/source/gallery/www-graf/orgquest.gifbin0 -> 281 bytes
-rw-r--r--extras/source/gallery/www-graf/orgright.gifbin0 -> 293 bytes
-rw-r--r--extras/source/gallery/www-graf/orgup.gifbin0 -> 1042 bytes
-rw-r--r--extras/source/gallery/www-graf/redat.gifbin0 -> 1413 bytes
-rw-r--r--extras/source/gallery/www-graf/redback.gifbin0 -> 1040 bytes
-rw-r--r--extras/source/gallery/www-graf/reddisk.gifbin0 -> 1019 bytes
-rw-r--r--extras/source/gallery/www-graf/reddown.gifbin0 -> 1015 bytes
-rw-r--r--extras/source/gallery/www-graf/redhome.gifbin0 -> 1032 bytes
-rw-r--r--extras/source/gallery/www-graf/redinfo.gifbin0 -> 1002 bytes
-rw-r--r--extras/source/gallery/www-graf/redleft.gifbin0 -> 1018 bytes
-rw-r--r--extras/source/gallery/www-graf/redmail.gifbin0 -> 1018 bytes
-rw-r--r--extras/source/gallery/www-graf/redminus.gifbin0 -> 993 bytes
-rw-r--r--extras/source/gallery/www-graf/redplus.gifbin0 -> 1015 bytes
-rw-r--r--extras/source/gallery/www-graf/redquest.gifbin0 -> 1045 bytes
-rw-r--r--extras/source/gallery/www-graf/redright.gifbin0 -> 1019 bytes
-rw-r--r--extras/source/gallery/www-graf/redup.gifbin0 -> 1015 bytes
-rw-r--r--extras/source/gallery/www-graf/turdown.gifbin0 -> 669 bytes
-rw-r--r--extras/source/gallery/www-graf/turhome.gifbin0 -> 474 bytes
-rw-r--r--extras/source/gallery/www-graf/turleft.gifbin0 -> 663 bytes
-rw-r--r--extras/source/gallery/www-graf/turright.gifbin0 -> 667 bytes
-rw-r--r--extras/source/gallery/www-graf/turup.gifbin0 -> 663 bytes
-rw-r--r--extras/source/gallery/www-graf/viohome.gifbin0 -> 249 bytes
-rw-r--r--extras/source/gallery/www-graf/violeft.gifbin0 -> 236 bytes
-rw-r--r--extras/source/gallery/www-graf/vioright.gifbin0 -> 238 bytes
-rw-r--r--extras/source/gallery/www-graf/vioup.gifbin0 -> 230 bytes
-rw-r--r--extras/source/gallery/www-graf/ylwdown.gifbin0 -> 149 bytes
-rw-r--r--extras/source/gallery/www-graf/ylwhome.gifbin0 -> 221 bytes
-rw-r--r--extras/source/gallery/www-graf/ylwleft.gifbin0 -> 177 bytes
-rw-r--r--extras/source/gallery/www-graf/ylwmail.gifbin0 -> 208 bytes
-rw-r--r--extras/source/gallery/www-graf/ylwright.gifbin0 -> 177 bytes
-rw-r--r--extras/source/gallery/www-graf/ylwup.gifbin0 -> 150 bytes
-rw-r--r--extras/source/misc_config/autotbl.fmtbin0 -> 48408 bytes
-rw-r--r--extras/source/misc_config/delzip0
-rw-r--r--extras/source/misc_config/makefile.mk49
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/beige.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/bgr.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/dark.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/grey.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/ibg.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/ice.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/orange.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/red.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/violet.css79
-rwxr-xr-xextras/source/misc_config/wizard/form/styles/water.css79
-rw-r--r--extras/source/misc_config/wizard/web/images/calc.gifbin0 -> 1252 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/draw.gifbin0 -> 1386 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/fls.gifbin0 -> 1488 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/graphics.gifbin0 -> 1533 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/html.gifbin0 -> 1366 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/impress.gifbin0 -> 1311 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/media.gifbin0 -> 1407 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/other.gifbin0 -> 1356 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/pdf.gifbin0 -> 1485 bytes
-rw-r--r--extras/source/misc_config/wizard/web/images/writer.gifbin0 -> 1376 bytes
-rw-r--r--extras/source/misc_config/wizard/web/layouts/diagonal/index.html.xsl104
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_bottom/index.html.xsl71
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_bottom/mainframe.html7
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_bottom/tocframe.html.xsl100
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_left/index.html.xsl71
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_left/mainframe.html7
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_left/tocframe.html.xsl96
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_right/index.html.xsl71
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_right/mainframe.html7
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_right/tocframe.html.xsl99
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_top/index.html.xsl71
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_top/mainframe.html7
-rw-r--r--extras/source/misc_config/wizard/web/layouts/frame_top/tocframe.html.xsl99
-rw-r--r--extras/source/misc_config/wizard/web/layouts/layout.xsl204
-rw-r--r--extras/source/misc_config/wizard/web/layouts/layoutF.xsl122
-rw-r--r--extras/source/misc_config/wizard/web/layouts/layoutX.xsl291
-rw-r--r--extras/source/misc_config/wizard/web/layouts/simple/index.html.xsl131
-rw-r--r--extras/source/misc_config/wizard/web/layouts/source.xml.xsl55
-rw-r--r--extras/source/misc_config/wizard/web/layouts/table_2/index.html.xsl185
-rw-r--r--extras/source/misc_config/wizard/web/layouts/table_3/index.html.xsl191
-rw-r--r--extras/source/misc_config/wizard/web/layouts/zigzag/index.html.xsl190
-rwxr-xr-xextras/source/misc_config/wizard/web/preview.html41
-rw-r--r--extras/source/misc_config/wizard/web/styles/beige.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/bg.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/bgr.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/bgrey.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/bwb.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/bwo.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/dark.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/dp.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/forest.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/green.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/greenred.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/grey.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/ibg.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/ice.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/marine.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/orange.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/pc_old.css91
-rw-r--r--extras/source/misc_config/wizard/web/styles/red.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/rgb.css91
-rw-r--r--extras/source/misc_config/wizard/web/styles/strange.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/violet.css79
-rw-r--r--extras/source/misc_config/wizard/web/styles/water.css79
-rw-r--r--extras/source/palettes/cmyk.soc220
-rw-r--r--extras/source/palettes/delzip3
-rw-r--r--extras/source/palettes/gallery.soc65
-rw-r--r--extras/source/palettes/html.soc135
-rw-r--r--extras/source/palettes/lang/bg/arrowhd_bg.soe28
-rw-r--r--extras/source/palettes/lang/bg/classic_bg.sog141
-rw-r--r--extras/source/palettes/lang/bg/hatching_bg.soh39
-rw-r--r--extras/source/palettes/lang/bg/modern_bg.sog31
-rw-r--r--extras/source/palettes/lang/bg/palette_bg.soc81
-rw-r--r--extras/source/palettes/lang/bg/styles_bg.sod10
-rw-r--r--extras/source/palettes/lang/cs/arrowhd_cs.soe28
-rw-r--r--extras/source/palettes/lang/cs/classic_cs.sog141
-rw-r--r--extras/source/palettes/lang/cs/hatching_cs.soh39
-rw-r--r--extras/source/palettes/lang/cs/modern_cs.sog31
-rw-r--r--extras/source/palettes/lang/cs/palette_cs.soc81
-rw-r--r--extras/source/palettes/lang/cs/styles_cs.sod2
-rw-r--r--extras/source/palettes/lang/da/arrowhd_da.soe26
-rw-r--r--extras/source/palettes/lang/da/classic_da.sog139
-rw-r--r--extras/source/palettes/lang/da/hatching_da.soh37
-rw-r--r--extras/source/palettes/lang/da/modern_da.sog29
-rw-r--r--extras/source/palettes/lang/da/palette_da.soc81
-rw-r--r--extras/source/palettes/lang/da/styles_da.sod8
-rw-r--r--extras/source/palettes/lang/de/arrowhd_de.soe28
-rw-r--r--extras/source/palettes/lang/de/classic_de.sog141
-rw-r--r--extras/source/palettes/lang/de/hatching_de.soh39
-rw-r--r--extras/source/palettes/lang/de/modern_de.sog31
-rw-r--r--extras/source/palettes/lang/de/palette_de.soc81
-rw-r--r--extras/source/palettes/lang/de/styles_de.sod10
-rw-r--r--extras/source/palettes/lang/delzip0
-rw-r--r--extras/source/palettes/lang/en-GB/arrowhd_en-GB.soe28
-rw-r--r--extras/source/palettes/lang/en-GB/classic_en-GB.sog141
-rw-r--r--extras/source/palettes/lang/en-GB/hatching_en-GB.soh39
-rw-r--r--extras/source/palettes/lang/en-GB/modern_en-GB.sog31
-rw-r--r--extras/source/palettes/lang/en-GB/palette_en-GB.soc81
-rw-r--r--extras/source/palettes/lang/en-GB/styles_en-GB.sod10
-rw-r--r--extras/source/palettes/lang/en-US/arrowhd_en-US.soe28
-rw-r--r--extras/source/palettes/lang/en-US/classic_en-US.sog141
-rw-r--r--extras/source/palettes/lang/en-US/hatching_en-US.soh39
-rw-r--r--extras/source/palettes/lang/en-US/modern_en-US.sog31
-rw-r--r--extras/source/palettes/lang/en-US/palette_en-US.soc81
-rw-r--r--extras/source/palettes/lang/en-US/styles_en-US.sod10
-rw-r--r--extras/source/palettes/lang/es/arrowhd_es.soe28
-rw-r--r--extras/source/palettes/lang/es/classic_es.sog141
-rw-r--r--extras/source/palettes/lang/es/hatching_es.soh39
-rw-r--r--extras/source/palettes/lang/es/modern_es.sog31
-rw-r--r--extras/source/palettes/lang/es/palette_es.soc81
-rw-r--r--extras/source/palettes/lang/es/styles_es.sod10
-rwxr-xr-xextras/source/palettes/lang/eu/arrowhd_eu.soe28
-rwxr-xr-xextras/source/palettes/lang/eu/classic_eu.sog141
-rwxr-xr-xextras/source/palettes/lang/eu/hatching_eu.soh39
-rwxr-xr-xextras/source/palettes/lang/eu/modern_eu.sog31
-rwxr-xr-xextras/source/palettes/lang/eu/palette_eu.soc81
-rwxr-xr-xextras/source/palettes/lang/eu/styles_eu.sod10
-rw-r--r--extras/source/palettes/lang/fr/arrowhd_fr.soe28
-rw-r--r--extras/source/palettes/lang/fr/classic_fr.sog141
-rw-r--r--extras/source/palettes/lang/fr/hatching_fr.soh39
-rw-r--r--extras/source/palettes/lang/fr/modern_fr.sog31
-rw-r--r--extras/source/palettes/lang/fr/palette_fr.soc81
-rw-r--r--extras/source/palettes/lang/fr/styles_fr.sod10
-rw-r--r--extras/source/palettes/lang/hu/arrowhd_hu.soe28
-rw-r--r--extras/source/palettes/lang/hu/classic_hu.sog141
-rw-r--r--extras/source/palettes/lang/hu/hatching_hu.soh39
-rw-r--r--extras/source/palettes/lang/hu/modern_hu.sog31
-rw-r--r--extras/source/palettes/lang/hu/palette_hu.soc81
-rw-r--r--extras/source/palettes/lang/hu/styles_hu.sod10
-rw-r--r--extras/source/palettes/lang/it/arrowhd_it.soe28
-rw-r--r--extras/source/palettes/lang/it/classic_it.sog141
-rw-r--r--extras/source/palettes/lang/it/hatching_it.soh39
-rw-r--r--extras/source/palettes/lang/it/modern_it.sog31
-rw-r--r--extras/source/palettes/lang/it/palette_it.soc81
-rw-r--r--extras/source/palettes/lang/it/styles_it.sod10
-rw-r--r--extras/source/palettes/lang/ja/arrowhd_ja.soe28
-rw-r--r--extras/source/palettes/lang/ja/classic_ja.sog2
-rw-r--r--extras/source/palettes/lang/ja/hatching_ja.soh39
-rw-r--r--extras/source/palettes/lang/ja/modern_ja.sog31
-rw-r--r--extras/source/palettes/lang/ja/palette_ja.soc81
-rw-r--r--extras/source/palettes/lang/ja/styles_ja.sod10
-rw-r--r--extras/source/palettes/lang/km/arrowhd_km.soe28
-rw-r--r--extras/source/palettes/lang/km/classic_km.sog141
-rw-r--r--extras/source/palettes/lang/km/hatching_km.soh39
-rw-r--r--extras/source/palettes/lang/km/modern_km.sog31
-rw-r--r--extras/source/palettes/lang/km/palette_km.soc81
-rw-r--r--extras/source/palettes/lang/km/styles_km.sod10
-rw-r--r--extras/source/palettes/lang/ko/arrowhd_ko.soe28
-rw-r--r--extras/source/palettes/lang/ko/classic_ko.sog2
-rw-r--r--extras/source/palettes/lang/ko/hatching_ko.soh39
-rw-r--r--extras/source/palettes/lang/ko/modern_ko.sog31
-rw-r--r--extras/source/palettes/lang/ko/palette_ko.soc81
-rw-r--r--extras/source/palettes/lang/ko/styles_ko.sod10
-rw-r--r--extras/source/palettes/lang/makefile.mk47
-rw-r--r--extras/source/palettes/lang/nl/arrowhd_nl.soe28
-rw-r--r--extras/source/palettes/lang/nl/classic_nl.sog141
-rw-r--r--extras/source/palettes/lang/nl/hatching_nl.soh39
-rw-r--r--extras/source/palettes/lang/nl/modern_nl.sog31
-rw-r--r--extras/source/palettes/lang/nl/palette_nl.soc81
-rw-r--r--extras/source/palettes/lang/nl/styles_nl.sod10
-rw-r--r--extras/source/palettes/lang/pl/arrowhd_pl.soebin0 -> 2846 bytes
-rw-r--r--extras/source/palettes/lang/pl/classic_pl.sogbin0 -> 9006 bytes
-rw-r--r--extras/source/palettes/lang/pl/hatching_pl.sohbin0 -> 1300 bytes
-rw-r--r--extras/source/palettes/lang/pl/modern_pl.sogbin0 -> 1598 bytes
-rw-r--r--extras/source/palettes/lang/pl/palette_pl.socbin0 -> 2078 bytes
-rw-r--r--extras/source/palettes/lang/pl/styles_pl.sodbin0 -> 278 bytes
-rw-r--r--extras/source/palettes/lang/pt-BR/arrowhd_pt-BR.soe28
-rw-r--r--extras/source/palettes/lang/pt-BR/classic_pt-BR.sog20
-rw-r--r--extras/source/palettes/lang/pt-BR/hatching_pt-BR.soh39
-rw-r--r--extras/source/palettes/lang/pt-BR/modern_pt-BR.sog31
-rw-r--r--extras/source/palettes/lang/pt-BR/palette_pt-BR.soc81
-rw-r--r--extras/source/palettes/lang/pt-BR/styles_pt-BR.sod3
-rw-r--r--extras/source/palettes/lang/pt/arrowhd_pt.soe28
-rw-r--r--extras/source/palettes/lang/pt/classic_pt.sog141
-rw-r--r--extras/source/palettes/lang/pt/hatching_pt.soh39
-rw-r--r--extras/source/palettes/lang/pt/modern_pt.sog32
-rw-r--r--extras/source/palettes/lang/pt/palette_pt.soc81
-rw-r--r--extras/source/palettes/lang/pt/styles_pt.sod11
-rw-r--r--extras/source/palettes/lang/ru/arrowhd_ru.soebin0 -> 2846 bytes
-rw-r--r--extras/source/palettes/lang/ru/classic_ru.sogbin0 -> 9006 bytes
-rw-r--r--extras/source/palettes/lang/ru/hatching_ru.sohbin0 -> 1300 bytes
-rw-r--r--extras/source/palettes/lang/ru/modern_ru.sogbin0 -> 1598 bytes
-rw-r--r--extras/source/palettes/lang/ru/palette_ru.socbin0 -> 2078 bytes
-rw-r--r--extras/source/palettes/lang/ru/styles_ru.sodbin0 -> 278 bytes
-rw-r--r--extras/source/palettes/lang/sk/arrowhd_sk.soe28
-rw-r--r--extras/source/palettes/lang/sk/classic_sk.sog141
-rw-r--r--extras/source/palettes/lang/sk/hatching_sk.soh39
-rw-r--r--extras/source/palettes/lang/sk/modern_sk.sog31
-rw-r--r--extras/source/palettes/lang/sk/palette_sk.soc81
-rw-r--r--extras/source/palettes/lang/sk/styles_sk.sod10
-rw-r--r--extras/source/palettes/lang/sl/arrowhd_sl.soe28
-rw-r--r--extras/source/palettes/lang/sl/classic_sl.sog141
-rw-r--r--extras/source/palettes/lang/sl/hatching_sl.soh39
-rw-r--r--extras/source/palettes/lang/sl/modern_sl.sog31
-rw-r--r--extras/source/palettes/lang/sl/palette_sl.soc81
-rw-r--r--extras/source/palettes/lang/sl/styles_sl.sod10
-rw-r--r--extras/source/palettes/lang/sv/arrowhd_sv.soe28
-rw-r--r--extras/source/palettes/lang/sv/classic_sv.sog141
-rw-r--r--extras/source/palettes/lang/sv/hatching_sv.soh39
-rw-r--r--extras/source/palettes/lang/sv/modern_sv.sog32
-rw-r--r--extras/source/palettes/lang/sv/palette_sv.soc81
-rw-r--r--extras/source/palettes/lang/sv/styles_sv.sod10
-rw-r--r--extras/source/palettes/lang/tr/arrowhd_tr.soe28
-rw-r--r--extras/source/palettes/lang/tr/classic_tr.sog141
-rw-r--r--extras/source/palettes/lang/tr/hatching_tr.soh39
-rw-r--r--extras/source/palettes/lang/tr/modern_tr.sog31
-rw-r--r--extras/source/palettes/lang/tr/palette_tr.soc81
-rw-r--r--extras/source/palettes/lang/tr/styles_tr.sod10
-rw-r--r--extras/source/palettes/lang/zh-CN/arrowhd_zh-CN.soe28
-rw-r--r--extras/source/palettes/lang/zh-CN/classic_zh-CN.sog2
-rw-r--r--extras/source/palettes/lang/zh-CN/hatching_zh-CN.soh39
-rw-r--r--extras/source/palettes/lang/zh-CN/modern_zh-CN.sog31
-rw-r--r--extras/source/palettes/lang/zh-CN/palette_zh-CN.soc81
-rw-r--r--extras/source/palettes/lang/zh-CN/styles_zh-CN.sod10
-rw-r--r--extras/source/palettes/lang/zh-TW/arrowhd_zh-TW.soe28
-rw-r--r--extras/source/palettes/lang/zh-TW/classic_zh-TW.sog2
-rw-r--r--extras/source/palettes/lang/zh-TW/hatching_zh-TW.soh39
-rw-r--r--extras/source/palettes/lang/zh-TW/modern_zh-TW.sog31
-rw-r--r--extras/source/palettes/lang/zh-TW/palette_zh-TW.soc81
-rw-r--r--extras/source/palettes/lang/zh-TW/styles_zh-TW.sod10
-rw-r--r--extras/source/palettes/libreoffice.soc38
-rw-r--r--extras/source/palettes/makefile.mk51
-rw-r--r--extras/source/palettes/scribus.soc548
-rw-r--r--extras/source/palettes/standard.sobbin0 -> 155895 bytes
-rw-r--r--extras/source/palettes/standard.soc102
-rw-r--r--extras/source/palettes/standard.sod15
-rw-r--r--extras/source/palettes/standard.soe16
-rw-r--r--extras/source/palettes/standard.sog19
-rw-r--r--extras/source/palettes/standard.soh14
-rw-r--r--extras/source/palettes/tango.soc35
-rw-r--r--extras/source/palettes/web.soc236
-rw-r--r--extras/source/premium/samples-nonfree/advertisement/lang/delzip1
-rw-r--r--extras/source/premium/samples-nonfree/advertisement/lang/makefile.mk52
-rw-r--r--extras/source/premium/samples-nonfree/documentation/lang/delzip1
-rw-r--r--extras/source/premium/samples-nonfree/documentation/lang/makefile.mk52
-rw-r--r--extras/source/premium/samples-nonfree/lang/delzip1
-rw-r--r--extras/source/premium/samples-nonfree/lang/makefile.mk52
-rw-r--r--extras/source/premium/samples/advertisement/lang/delzip1
-rw-r--r--extras/source/premium/samples/advertisement/lang/makefile.mk52
-rw-r--r--extras/source/premium/samples/documentation/lang/delzip1
-rw-r--r--extras/source/premium/samples/documentation/lang/makefile.mk52
-rw-r--r--extras/source/premium/samples/lang/delzip1
-rw-r--r--extras/source/premium/samples/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/educate/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/educate/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/finance/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/finance/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/forms/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/forms/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/labels/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/labels/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/layout/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/layout/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/misc/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/misc/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/officorr/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/officorr/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/offimisc/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/offimisc/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/personal/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/personal/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates-nonfree/presnt/lang/delzip1
-rw-r--r--extras/source/premium/templates-nonfree/presnt/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/delzip1
-rw-r--r--extras/source/premium/templates/common/educate/delzip1
-rw-r--r--extras/source/premium/templates/common/educate/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/finance/delzip1
-rw-r--r--extras/source/premium/templates/common/finance/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/forms/delzip1
-rw-r--r--extras/source/premium/templates/common/forms/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/labels/delzip1
-rw-r--r--extras/source/premium/templates/common/labels/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/layout/delzip1
-rw-r--r--extras/source/premium/templates/common/layout/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/misc/delzip1
-rw-r--r--extras/source/premium/templates/common/misc/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/officorr/delzip1
-rw-r--r--extras/source/premium/templates/common/officorr/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/offimisc/delzip1
-rw-r--r--extras/source/premium/templates/common/offimisc/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/personal/delzip1
-rw-r--r--extras/source/premium/templates/common/personal/makefile.mk52
-rw-r--r--extras/source/premium/templates/common/presnt/delzip1
-rw-r--r--extras/source/premium/templates/common/presnt/makefile.mk52
-rw-r--r--extras/source/premium/templates/educate/lang/delzip1
-rw-r--r--extras/source/premium/templates/educate/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/finance/lang/delzip1
-rw-r--r--extras/source/premium/templates/finance/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/forms/lang/delzip1
-rw-r--r--extras/source/premium/templates/forms/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/labels/lang/delzip1
-rw-r--r--extras/source/premium/templates/labels/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/lang/delzip1
-rw-r--r--extras/source/premium/templates/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/layout/lang/delzip1
-rw-r--r--extras/source/premium/templates/layout/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/misc/lang/delzip1
-rw-r--r--extras/source/premium/templates/misc/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/officorr/lang/delzip1
-rw-r--r--extras/source/premium/templates/officorr/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/offimisc/lang/delzip1
-rw-r--r--extras/source/premium/templates/offimisc/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/personal/lang/delzip1
-rw-r--r--extras/source/premium/templates/personal/lang/makefile.mk52
-rw-r--r--extras/source/premium/templates/presnt/lang/delzip1
-rw-r--r--extras/source/premium/templates/presnt/lang/makefile.mk52
-rw-r--r--extras/source/shellnew/soffice.html12
-rw-r--r--extras/source/shellnew/soffice.odgbin0 -> 8428 bytes
-rw-r--r--extras/source/shellnew/soffice.odpbin0 -> 9026 bytes
-rw-r--r--extras/source/shellnew/soffice.odsbin0 -> 6598 bytes
-rw-r--r--extras/source/shellnew/soffice.odtbin0 -> 7334 bytes
-rw-r--r--extras/source/symbols/delzip1
-rw-r--r--extras/source/symbols/l_2people.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_attention1.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_attention2.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_attention3.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_candy.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_face.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_flower.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_ghost.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_halloween.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_home.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_lamp.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_lock.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_page_b.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_page_g.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_page_y.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_people.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_rose.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_save.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_smiley_1.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_smiley_oh.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_smiley_sad.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_snow.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/l_star.bmpbin0 -> 2136 bytes
-rw-r--r--extras/source/symbols/makefile.mk51
-rw-r--r--extras/source/symbols/s_arrow-1.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_arrow-2.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_arrow-3.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_arrow-4.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_attention1.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_attention2.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_attention3.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_ball-b.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_ball-g.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_ball-r.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_ball.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_bug.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_clover.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_egg.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_face.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_flower.bmpbin0 -> 344 bytes
-rw-r--r--extras/source/symbols/s_ghost.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_group.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_halloween.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_heart.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_home.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_lock.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_ok-g.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_ok-r.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_ok.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_page_b.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_page_g.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_page_y.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_pen-b.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_pen-g.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_pen-r.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_people.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_smily_1.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_smily_oh.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_smily_sad.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_snow.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_star.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_team.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_x-g.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_x-r.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/symbols/s_x.bmpbin0 -> 824 bytes
-rw-r--r--extras/source/templates/lang/delzip1
-rw-r--r--extras/source/templates/lang/makefile.mk49
-rw-r--r--extras/source/templates/layout/delzip1
-rw-r--r--extras/source/templates/layout/lyt-aqua.otpbin0 -> 32050 bytes
-rw-r--r--extras/source/templates/layout/lyt-blackandwhite.otpbin0 -> 198973 bytes
-rw-r--r--extras/source/templates/layout/lyt-bluegrey.otpbin0 -> 292498 bytes
-rw-r--r--extras/source/templates/layout/lyt-bluelinesgrad.otpbin0 -> 47900 bytes
-rw-r--r--extras/source/templates/layout/lyt-bluetitledown.otpbin0 -> 75772 bytes
-rw-r--r--extras/source/templates/layout/lyt-book.otpbin0 -> 1144672 bytes
-rw-r--r--extras/source/templates/layout/lyt-brown.otpbin0 -> 59337 bytes
-rw-r--r--extras/source/templates/layout/lyt-charglow.otpbin0 -> 85053 bytes
-rw-r--r--extras/source/templates/layout/lyt-forest.otpbin0 -> 721971 bytes
-rwxr-xr-xextras/source/templates/layout/lyt-frepa.otpbin0 -> 68188 bytes
-rw-r--r--extras/source/templates/layout/lyt-glacier.otpbin0 -> 654229 bytes
-rw-r--r--extras/source/templates/layout/lyt-greengradlines.otpbin0 -> 71713 bytes
-rw-r--r--extras/source/templates/layout/lyt-keyboard.otpbin0 -> 517689 bytes
-rwxr-xr-xextras/source/templates/layout/lyt-movwaves.otpbin0 -> 56012 bytes
-rwxr-xr-xextras/source/templates/layout/lyt-numdark.otpbin0 -> 327978 bytes
-rwxr-xr-xextras/source/templates/layout/lyt-ocean.otpbin0 -> 14004 bytes
-rw-r--r--extras/source/templates/layout/lyt-organic.otpbin0 -> 64322 bytes
-rw-r--r--extras/source/templates/layout/lyt-paper.otpbin0 -> 706327 bytes
-rw-r--r--extras/source/templates/layout/lyt-rededges.otpbin0 -> 502708 bytes
-rwxr-xr-xextras/source/templates/layout/lyt-roundedrect.otpbin0 -> 125387 bytes
-rwxr-xr-xextras/source/templates/layout/lyt-sunrise.otpbin0 -> 115754 bytes
-rwxr-xr-xextras/source/templates/layout/lyt-techpoly.otpbin0 -> 312460 bytes
-rw-r--r--extras/source/templates/layout/lyt-tunnel.otpbin0 -> 52416 bytes
-rw-r--r--extras/source/templates/layout/lyt-water.otpbin0 -> 507283 bytes
-rw-r--r--extras/source/templates/layout/lyt-wine.otpbin0 -> 652454 bytes
-rw-r--r--extras/source/templates/layout/makefile.mk45
-rw-r--r--extras/source/templates/presnt/lang/bg/prs-novelty.otpbin0 -> 54229 bytes
-rw-r--r--extras/source/templates/presnt/lang/bg/prs-strategy.otpbin0 -> 68781 bytes
-rw-r--r--extras/source/templates/presnt/lang/cs/prs-novelty.otpbin0 -> 54784 bytes
-rw-r--r--extras/source/templates/presnt/lang/cs/prs-strategy.otpbin0 -> 69075 bytes
-rw-r--r--extras/source/templates/presnt/lang/da/prs-novelty.otpbin0 -> 25093 bytes
-rw-r--r--extras/source/templates/presnt/lang/da/prs-strategy.otpbin0 -> 66669 bytes
-rw-r--r--extras/source/templates/presnt/lang/de/prs-novelty.otpbin0 -> 25464 bytes
-rw-r--r--extras/source/templates/presnt/lang/de/prs-strategy.otpbin0 -> 66954 bytes
-rw-r--r--extras/source/templates/presnt/lang/delzip0
-rw-r--r--extras/source/templates/presnt/lang/en-GB/prs-novelty.otpbin0 -> 54731 bytes
-rw-r--r--extras/source/templates/presnt/lang/en-GB/prs-strategy.otpbin0 -> 69725 bytes
-rw-r--r--extras/source/templates/presnt/lang/en-US/prs-novelty.otpbin0 -> 25355 bytes
-rw-r--r--extras/source/templates/presnt/lang/en-US/prs-strategy.otpbin0 -> 66860 bytes
-rw-r--r--extras/source/templates/presnt/lang/es/prs-novelty.otpbin0 -> 52743 bytes
-rw-r--r--extras/source/templates/presnt/lang/es/prs-strategy.otpbin0 -> 66884 bytes
-rwxr-xr-xextras/source/templates/presnt/lang/eu/prs-novelty.otpbin0 -> 58417 bytes
-rwxr-xr-xextras/source/templates/presnt/lang/eu/prs-strategy.otpbin0 -> 70690 bytes
-rw-r--r--extras/source/templates/presnt/lang/fr/prs-novelty.otpbin0 -> 53725 bytes
-rw-r--r--extras/source/templates/presnt/lang/fr/prs-strategy.otpbin0 -> 66912 bytes
-rwxr-xr-xextras/source/templates/presnt/lang/hu/prs-novelty.otpbin0 -> 54529 bytes
-rwxr-xr-xextras/source/templates/presnt/lang/hu/prs-strategy.otpbin0 -> 68672 bytes
-rw-r--r--extras/source/templates/presnt/lang/it/prs-novelty.otpbin0 -> 52801 bytes
-rw-r--r--extras/source/templates/presnt/lang/it/prs-strategy.otpbin0 -> 66817 bytes
-rw-r--r--extras/source/templates/presnt/lang/ja/prs-novelty.otpbin0 -> 25351 bytes
-rw-r--r--extras/source/templates/presnt/lang/ja/prs-strategy.otpbin0 -> 68096 bytes
-rw-r--r--extras/source/templates/presnt/lang/km/prs-novelty.otpbin0 -> 57314 bytes
-rw-r--r--extras/source/templates/presnt/lang/km/prs-strategy.otpbin0 -> 72026 bytes
-rw-r--r--extras/source/templates/presnt/lang/ko/prs-novelty.otpbin0 -> 53586 bytes
-rw-r--r--extras/source/templates/presnt/lang/ko/prs-strategy.otpbin0 -> 67730 bytes
-rw-r--r--extras/source/templates/presnt/lang/makefile.mk49
-rw-r--r--extras/source/templates/presnt/lang/nl/prs-novelty.otpbin0 -> 54675 bytes
-rw-r--r--extras/source/templates/presnt/lang/nl/prs-strategy.otpbin0 -> 68327 bytes
-rw-r--r--extras/source/templates/presnt/lang/pl/prs-novelty.otpbin0 -> 55915 bytes
-rw-r--r--extras/source/templates/presnt/lang/pl/prs-strategy.otpbin0 -> 68238 bytes
-rw-r--r--extras/source/templates/presnt/lang/pt-BR/prs-novelty.otpbin0 -> 53726 bytes
-rw-r--r--extras/source/templates/presnt/lang/pt-BR/prs-strategy.otpbin0 -> 67814 bytes
-rw-r--r--extras/source/templates/presnt/lang/pt/prs-novelty.otpbin0 -> 55945 bytes
-rw-r--r--extras/source/templates/presnt/lang/pt/prs-strategy.otpbin0 -> 70038 bytes
-rw-r--r--extras/source/templates/presnt/lang/ru/prs-novelty.otpbin0 -> 55520 bytes
-rw-r--r--extras/source/templates/presnt/lang/ru/prs-strategy.otpbin0 -> 69043 bytes
-rw-r--r--extras/source/templates/presnt/lang/sk/prs-novelty.otpbin0 -> 13106 bytes
-rw-r--r--extras/source/templates/presnt/lang/sk/prs-strategy.otpbin0 -> 69109 bytes
-rw-r--r--extras/source/templates/presnt/lang/sl/prs-novelty.otpbin0 -> 53634 bytes
-rw-r--r--extras/source/templates/presnt/lang/sl/prs-strategy.otpbin0 -> 68143 bytes
-rw-r--r--extras/source/templates/presnt/lang/sv/prs-novelty.otpbin0 -> 52672 bytes
-rw-r--r--extras/source/templates/presnt/lang/sv/prs-strategy.otpbin0 -> 66833 bytes
-rw-r--r--extras/source/templates/presnt/lang/tr/prs-novelty.otpbin0 -> 54712 bytes
-rw-r--r--extras/source/templates/presnt/lang/tr/prs-strategy.otpbin0 -> 68733 bytes
-rwxr-xr-xextras/source/templates/presnt/lang/vi/prs-novelty.otpbin0 -> 25355 bytes
-rwxr-xr-xextras/source/templates/presnt/lang/vi/prs-novelty_new.otpbin0 -> 63417 bytes
-rwxr-xr-xextras/source/templates/presnt/lang/vi/prs-strategy.otpbin0 -> 77744 bytes
-rw-r--r--extras/source/templates/presnt/lang/zh-CN/prs-novelty.otpbin0 -> 53205 bytes
-rw-r--r--extras/source/templates/presnt/lang/zh-CN/prs-strategy.otpbin0 -> 67504 bytes
-rw-r--r--extras/source/templates/presnt/lang/zh-TW/prs-novelty.otpbin0 -> 53171 bytes
-rw-r--r--extras/source/templates/presnt/lang/zh-TW/prs-strategy.otpbin0 -> 67522 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/10grey.ottbin0 -> 11474 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/1simple.ottbin0 -> 11153 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/2elegant.ottbin0 -> 16078 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/3modern.ottbin0 -> 11655 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/4classic.ottbin0 -> 11086 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/5blue.ottbin0 -> 11222 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/6orange.ottbin0 -> 11759 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/7red.ottbin0 -> 11614 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/8green.ottbin0 -> 11363 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/9colorful.ottbin0 -> 11207 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-10grey.ottbin0 -> 11438 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-1simple.ottbin0 -> 11012 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-2elegant.ottbin0 -> 16087 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-3modern.ottbin0 -> 11599 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-4classic.ottbin0 -> 11105 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-5blue.ottbin0 -> 11227 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-6orange.ottbin0 -> 11750 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-7red.ottbin0 -> 11377 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-8green.ottbin0 -> 11362 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/bg/aw-9colorful.ottbin0 -> 11158 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/10grey.ottbin0 -> 10427 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/1simple.ottbin0 -> 10232 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/2elegant.ottbin0 -> 14396 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/3modern.ottbin0 -> 10732 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/4classic.ottbin0 -> 10193 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/5blue.ottbin0 -> 10238 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/6orange.ottbin0 -> 10793 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/7red.ottbin0 -> 10716 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/8green.ottbin0 -> 10545 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/9colorful.ottbin0 -> 10192 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-10grey.ottbin0 -> 10427 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-1simple.ottbin0 -> 10232 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-2elegant.ottbin0 -> 14396 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-3modern.ottbin0 -> 10732 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-4classic.ottbin0 -> 10193 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-5blue.ottbin0 -> 10238 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-6orange.ottbin0 -> 10793 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-7red.ottbin0 -> 10716 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-8green.ottbin0 -> 10545 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/cs/aw-9colorful.ottbin0 -> 10192 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/10grey.ottbin0 -> 10031 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/1simple.ottbin0 -> 9789 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/2elegant.ottbin0 -> 13979 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/3modern.ottbin0 -> 10306 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/4classic.ottbin0 -> 9776 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/5blue.ottbin0 -> 9854 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/6orange.ottbin0 -> 10329 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/7red.ottbin0 -> 10274 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/8green.ottbin0 -> 9993 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/9colorful.ottbin0 -> 9821 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-10grey.ottbin0 -> 10031 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-1simple.ottbin0 -> 9788 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-2elegant.ottbin0 -> 13979 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-3modern.ottbin0 -> 10306 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-4classic.ottbin0 -> 9776 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-5blue.ottbin0 -> 9854 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-6orange.ottbin0 -> 10330 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-7red.ottbin0 -> 11424 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-8green.ottbin0 -> 9992 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/da/aw-9colorful.ottbin0 -> 9861 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/10grey.ottbin0 -> 10282 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/1simple.ottbin0 -> 10041 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/2elegant.ottbin0 -> 14230 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/3modern.ottbin0 -> 10554 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/4classic.ottbin0 -> 10056 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/5blue.ottbin0 -> 10114 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/6orange.ottbin0 -> 10554 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/7red.ottbin0 -> 10503 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/8green.ottbin0 -> 10238 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/9colorful.ottbin0 -> 10078 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-10grey.ottbin0 -> 10282 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-1simple.ottbin0 -> 10041 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-2elegant.ottbin0 -> 14230 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-3modern.ottbin0 -> 10554 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-4classic.ottbin0 -> 10056 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-5blue.ottbin0 -> 10114 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-6orange.ottbin0 -> 10554 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-7red.ottbin0 -> 10503 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-8green.ottbin0 -> 10238 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/de/aw-9colorful.ottbin0 -> 10078 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/delzip2
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/10grey.ottbin0 -> 12479 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/1simple.ottbin0 -> 12618 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/2elegant.ottbin0 -> 17817 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/3modern.ottbin0 -> 13030 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/4classic.ottbin0 -> 11232 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/5blue.ottbin0 -> 11537 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/6orange.ottbin0 -> 12219 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/7red.ottbin0 -> 12256 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/8green.ottbin0 -> 11543 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/9colorful.ottbin0 -> 11583 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-10grey.ottbin0 -> 12416 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-1simple.ottbin0 -> 12061 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-2elegant.ottbin0 -> 16831 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-3modern.ottbin0 -> 13023 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-4classic.ottbin0 -> 11787 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-5blue.ottbin0 -> 12138 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-6orange.ottbin0 -> 12773 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-7red.ottbin0 -> 12187 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-8green.ottbin0 -> 12072 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-GB/aw-9colorful.ottbin0 -> 12131 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/10grey.ottbin0 -> 10240 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/1simple.ottbin0 -> 10009 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/2elegant.ottbin0 -> 14214 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/3modern.ottbin0 -> 10529 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/4classic.ottbin0 -> 10011 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/5blue.ottbin0 -> 10088 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/6orange.ottbin0 -> 10529 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/7red.ottbin0 -> 10493 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/8green.ottbin0 -> 10202 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/9colorful.ottbin0 -> 10047 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-10grey.ottbin0 -> 10240 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-1simple.ottbin0 -> 10009 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-2elegant.ottbin0 -> 14215 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-3modern.ottbin0 -> 10529 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-4classic.ottbin0 -> 10011 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-5blue.ottbin0 -> 10087 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-6orange.ottbin0 -> 10530 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-7red.ottbin0 -> 12159 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-8green.ottbin0 -> 10202 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/en-US/aw-9colorful.ottbin0 -> 10087 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/10grey.ottbin0 -> 10132 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/1simple.ottbin0 -> 10132 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/2elegant.ottbin0 -> 11890 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/3modern.ottbin0 -> 10348 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/4classic.ottbin0 -> 9747 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/5blue.ottbin0 -> 9809 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/6orange.ottbin0 -> 10466 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/7red.ottbin0 -> 10515 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/8green.ottbin0 -> 10058 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/9colorful.ottbin0 -> 9853 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-10grey.ottbin0 -> 10132 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-1simple.ottbin0 -> 9829 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-2elegant.ottbin0 -> 11890 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-3modern.ottbin0 -> 10701 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-4classic.ottbin0 -> 9747 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-5blue.ottbin0 -> 9809 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-6orange.ottbin0 -> 10466 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-7red.ottbin0 -> 10132 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-8green.ottbin0 -> 10058 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/es/aw-9colorful.ottbin0 -> 9853 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/10grey.ottbin0 -> 14000 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/1simple.ottbin0 -> 13888 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/2elegant.ottbin0 -> 19679 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/3modern.ottbin0 -> 14841 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/4classic.ottbin0 -> 13315 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/5blue.ottbin0 -> 13192 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/6orange.ottbin0 -> 13903 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/7red.ottbin0 -> 13847 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/8green.ottbin0 -> 13568 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/9colorful.ottbin0 -> 13214 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-10grey.ottbin0 -> 13957 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-1simple.ottbin0 -> 14397 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-2elegant.ottbin0 -> 18599 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-3modern.ottbin0 -> 14874 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-4classic.ottbin0 -> 13876 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-5blue.ottbin0 -> 13765 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-6orange.ottbin0 -> 14456 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-7red.ottbin0 -> 14196 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-8green.ottbin0 -> 14087 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/eu/aw-9colorful.ottbin0 -> 13735 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/10grey.ottbin0 -> 10184 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/1simple.ottbin0 -> 9834 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/2elegant.ottbin0 -> 11884 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/3modern.ottbin0 -> 10422 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/4classic.ottbin0 -> 9807 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/5blue.ottbin0 -> 9873 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/6orange.ottbin0 -> 10435 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/7red.ottbin0 -> 10170 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/8green.ottbin0 -> 10129 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/9colorful.ottbin0 -> 9923 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-10grey.ottbin0 -> 10184 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-1simple.ottbin0 -> 9832 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-2elegant.ottbin0 -> 11884 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-3modern.ottbin0 -> 10422 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-4classic.ottbin0 -> 9807 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-5blue.ottbin0 -> 9873 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-6orange.ottbin0 -> 10435 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-7red.ottbin0 -> 10170 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-8green.ottbin0 -> 10129 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/fr/aw-9colorful.ottbin0 -> 9923 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/10grey.ottbin0 -> 12232 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/1simple.ottbin0 -> 11858 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/2elegant.ottbin0 -> 16589 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/3modern.ottbin0 -> 12428 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/4classic.ottbin0 -> 11631 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/5blue.ottbin0 -> 11964 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/6orange.ottbin0 -> 12340 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/7red.ottbin0 -> 12390 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/8green.ottbin0 -> 11918 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/9colorful.ottbin0 -> 11942 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-10grey.ottbin0 -> 12232 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-1simple.ottbin0 -> 11858 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-2elegant.ottbin0 -> 16589 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-3modern.ottbin0 -> 12428 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-4classic.ottbin0 -> 11631 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-5blue.ottbin0 -> 11964 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-6orange.ottbin0 -> 12340 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-7red.ottbin0 -> 12390 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-8green.ottbin0 -> 11918 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/hu/aw-9colorful.ottbin0 -> 11942 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/10grey.ottbin0 -> 10174 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/1simple.ottbin0 -> 9822 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/2elegant.ottbin0 -> 11869 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/3modern.ottbin0 -> 10363 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/4classic.ottbin0 -> 9739 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/5blue.ottbin0 -> 9814 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/6orange.ottbin0 -> 10441 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/7red.ottbin0 -> 10155 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/8green.ottbin0 -> 10089 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/9colorful.ottbin0 -> 9851 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-10grey.ottbin0 -> 10174 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-1simple.ottbin0 -> 9822 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-2elegant.ottbin0 -> 11869 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-3modern.ottbin0 -> 10363 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-4classic.ottbin0 -> 9739 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-5blue.ottbin0 -> 9814 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-6orange.ottbin0 -> 10441 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-7red.ottbin0 -> 10684 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-8green.ottbin0 -> 10089 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/it/aw-9colorful.ottbin0 -> 9851 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/10grey.ottbin0 -> 12733 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/1simple.ottbin0 -> 12404 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/2elegant.ottbin0 -> 14509 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/3modern.ottbin0 -> 12961 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/4classic.ottbin0 -> 12350 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/5blue.ottbin0 -> 12366 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/6orange.ottbin0 -> 13043 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/7red.ottbin0 -> 12805 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/8green.ottbin0 -> 12665 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/9colorful.ottbin0 -> 12428 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-10grey.ottbin0 -> 12733 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-1simple.ottbin0 -> 12404 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-2elegant.ottbin0 -> 14509 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-3modern.ottbin0 -> 12961 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-4classic.ottbin0 -> 12350 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-5blue.ottbin0 -> 12366 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-6orange.ottbin0 -> 13043 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-7red.ottbin0 -> 12805 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-8green.ottbin0 -> 12665 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ja/aw-9colorful.ottbin0 -> 12428 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/10grey.ottbin0 -> 12935 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/1simple.ottbin0 -> 12448 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/2elegant.ottbin0 -> 17523 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/3modern.ottbin0 -> 13146 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/4classic.ottbin0 -> 12522 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/5blue.ottbin0 -> 12777 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/6orange.ottbin0 -> 13284 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/7red.ottbin0 -> 13099 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/8green.ottbin0 -> 12964 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/9colorful.ottbin0 -> 12807 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-10grey.ottbin0 -> 12927 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-1simple.ottbin0 -> 12470 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-2elegant.ottbin0 -> 17599 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-3modern.ottbin0 -> 13225 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-4classic.ottbin0 -> 12542 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-5blue.ottbin0 -> 12816 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-6orange.ottbin0 -> 13351 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-7red.ottbin0 -> 12882 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-8green.ottbin0 -> 12888 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/km/aw-9colorful.ottbin0 -> 12863 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/10grey.ottbin0 -> 12702 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/1simple.ottbin0 -> 12363 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/2elegant.ottbin0 -> 14482 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/3modern.ottbin0 -> 12951 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/4classic.ottbin0 -> 12294 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/5blue.ottbin0 -> 12362 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/6orange.ottbin0 -> 13035 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/7red.ottbin0 -> 10823 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/8green.ottbin0 -> 12654 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/9colorful.ottbin0 -> 12381 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-10grey.ottbin0 -> 12702 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-1simple.ottbin0 -> 12363 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-2elegant.ottbin0 -> 14482 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-3modern.ottbin0 -> 13538 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-4classic.ottbin0 -> 10263 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-5blue.ottbin0 -> 12362 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-6orange.ottbin0 -> 13035 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-7red.ottbin0 -> 12714 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-8green.ottbin0 -> 12654 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ko/aw-9colorful.ottbin0 -> 12381 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/makefile.mk47
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/10grey.ottbin0 -> 12008 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/1simple.ottbin0 -> 11796 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/2elegant.ottbin0 -> 16528 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/3modern.ottbin0 -> 12231 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/4classic.ottbin0 -> 11684 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/5blue.ottbin0 -> 11856 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/6orange.ottbin0 -> 12263 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/7red.ottbin0 -> 12230 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/8green.ottbin0 -> 11827 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/9colorful.ottbin0 -> 11872 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-10grey.ottbin0 -> 12008 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-1simple.ottbin0 -> 11796 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-2elegant.ottbin0 -> 16528 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-3modern.ottbin0 -> 12261 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-4classic.ottbin0 -> 11684 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-5blue.ottbin0 -> 11856 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-6orange.ottbin0 -> 12263 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-7red.ottbin0 -> 12260 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-8green.ottbin0 -> 11857 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/nl/aw-9colorful.ottbin0 -> 11872 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/10grey.ottbin0 -> 11315 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/1simple.ottbin0 -> 12791 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/2elegant.ottbin0 -> 17591 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/3modern.ottbin0 -> 11235 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/4classic.ottbin0 -> 12694 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/5blue.ottbin0 -> 12784 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/6orange.ottbin0 -> 13261 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/7red.ottbin0 -> 11278 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/8green.ottbin0 -> 11109 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/9colorful.ottbin0 -> 12881 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-10grey.ottbin0 -> 13107 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-1simple.ottbin0 -> 12806 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-2elegant.ottbin0 -> 17608 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-3modern.ottbin0 -> 13273 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-4classic.ottbin0 -> 12709 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-5blue.ottbin0 -> 12799 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-6orange.ottbin0 -> 13276 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-7red.ottbin0 -> 13225 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-8green.ottbin0 -> 12840 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pl/aw-9colorful.ottbin0 -> 12896 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/10grey.ottbin0 -> 10175 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/1simple.ottbin0 -> 9833 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/2elegant.ottbin0 -> 11890 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/3modern.ottbin0 -> 10395 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/4classic.ottbin0 -> 9767 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/5blue.ottbin0 -> 9855 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/6orange.ottbin0 -> 10467 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/7red.ottbin0 -> 10167 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/8green.ottbin0 -> 10009 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/9colorful.ottbin0 -> 9892 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-10grey.ottbin0 -> 10175 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-1simple.ottbin0 -> 9833 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-2elegant.ottbin0 -> 11890 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-3modern.ottbin0 -> 10395 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-4classic.ottbin0 -> 9767 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-5blue.ottbin0 -> 9855 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-6orange.ottbin0 -> 10467 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-7red.ottbin0 -> 10167 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-8green.ottbin0 -> 10009 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt-BR/aw-9colorful.ottbin0 -> 9892 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/10grey.ottbin0 -> 12846 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/1simple.ottbin0 -> 12739 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/2elegant.ottbin0 -> 17215 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/3modern.ottbin0 -> 13615 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/4classic.ottbin0 -> 12486 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/5blue.ottbin0 -> 12539 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/6orange.ottbin0 -> 13032 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/7red.ottbin0 -> 12998 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/8green.ottbin0 -> 12685 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/9colorful.ottbin0 -> 12670 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-10grey.ottbin0 -> 12846 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-1simple.ottbin0 -> 12743 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-2elegant.ottbin0 -> 17203 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-3modern.ottbin0 -> 13614 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-4classic.ottbin0 -> 12485 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-5blue.ottbin0 -> 12539 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-6orange.ottbin0 -> 13032 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-7red.ottbin0 -> 12999 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-8green.ottbin0 -> 12694 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/pt/aw-9colorful.ottbin0 -> 12671 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/10grey.ottbin0 -> 12347 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/1simple.ottbin0 -> 12120 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/2elegant.ottbin0 -> 16668 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/3modern.ottbin0 -> 13134 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/4classic.ottbin0 -> 11954 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/5blue.ottbin0 -> 12066 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/6orange.ottbin0 -> 12519 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/7red.ottbin0 -> 12502 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/8green.ottbin0 -> 12152 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/9colorful.ottbin0 -> 12217 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-10grey.ottbin0 -> 12347 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-1simple.ottbin0 -> 12120 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-2elegant.ottbin0 -> 16670 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-3modern.ottbin0 -> 13135 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-4classic.ottbin0 -> 11954 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-5blue.ottbin0 -> 12066 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-6orange.ottbin0 -> 12519 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-7red.ottbin0 -> 12501 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-8green.ottbin0 -> 12152 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/ru/aw-9colorful.ottbin0 -> 11078 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/10grey.ottbin0 -> 11317 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/1simple.ottbin0 -> 11090 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/2elegant.ottbin0 -> 15913 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/3modern.ottbin0 -> 11699 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/4classic.ottbin0 -> 11077 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/5blue.ottbin0 -> 11138 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/6orange.ottbin0 -> 11662 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/7red.ottbin0 -> 11532 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/8green.ottbin0 -> 11419 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/9colorful.ottbin0 -> 11090 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-10grey.ottbin0 -> 11395 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-1simple.ottbin0 -> 11123 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-2elegant.ottbin0 -> 15917 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-3modern.ottbin0 -> 11704 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-4classic.ottbin0 -> 11075 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-5blue.ottbin0 -> 11142 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-6orange.ottbin0 -> 11662 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-7red.ottbin0 -> 11532 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-8green.ottbin0 -> 11419 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sk/aw-9colorful.ottbin0 -> 11090 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/10grey.ottbin0 -> 10976 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/1simple.ottbin0 -> 10450 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/2elegant.ottbin0 -> 15402 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/3modern.ottbin0 -> 11342 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/4classic.ottbin0 -> 10612 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/5blue.ottbin0 -> 10752 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/6orange.ottbin0 -> 11226 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/7red.ottbin0 -> 11158 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/8green.ottbin0 -> 10914 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/9colorful.ottbin0 -> 10717 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-10grey.ottbin0 -> 10946 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-1simple.ottbin0 -> 10616 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-2elegant.ottbin0 -> 15434 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-3modern.ottbin0 -> 11408 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-4classic.ottbin0 -> 10604 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-5blue.ottbin0 -> 10731 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-6orange.ottbin0 -> 11286 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-7red.ottbin0 -> 11003 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-8green.ottbin0 -> 11001 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sl/aw-9colorful.ottbin0 -> 10737 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/10grey.ottbin0 -> 10138 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/1simple.ottbin0 -> 9812 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/2elegant.ottbin0 -> 11839 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/3modern.ottbin0 -> 10410 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/4classic.ottbin0 -> 9722 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/5blue.ottbin0 -> 9798 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/6orange.ottbin0 -> 10389 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/7red.ottbin0 -> 10179 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/8green.ottbin0 -> 10103 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/9colorful.ottbin0 -> 9824 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-10grey.ottbin0 -> 10138 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-1simple.ottbin0 -> 9812 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-2elegant.ottbin0 -> 11839 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-3modern.ottbin0 -> 10410 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-4classic.ottbin0 -> 9722 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-5blue.ottbin0 -> 9798 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-6orange.ottbin0 -> 10389 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-7red.ottbin0 -> 10179 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-8green.ottbin0 -> 10103 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/sv/aw-9colorful.ottbin0 -> 9824 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/10grey.ottbin0 -> 12001 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/1simple.ottbin0 -> 11939 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/2elegant.ottbin0 -> 16514 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/3modern.ottbin0 -> 12223 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/4classic.ottbin0 -> 11486 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/5blue.ottbin0 -> 11803 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/6orange.ottbin0 -> 12242 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/7red.ottbin0 -> 12294 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/8green.ottbin0 -> 11770 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/9colorful.ottbin0 -> 11806 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-10grey.ottbin0 -> 11998 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-1simple.ottbin0 -> 11748 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-2elegant.ottbin0 -> 16475 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-3modern.ottbin0 -> 12220 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-4classic.ottbin0 -> 11481 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-5blue.ottbin0 -> 11883 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-6orange.ottbin0 -> 12242 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-7red.ottbin0 -> 11772 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-8green.ottbin0 -> 11772 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/tr/aw-9colorful.ottbin0 -> 11853 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/10grey.ottbin0 -> 12525 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/1simple.ottbin0 -> 12597 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/2elegant.ottbin0 -> 17620 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/3modern.ottbin0 -> 12895 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/4classic.ottbin0 -> 12431 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/5blue.ottbin0 -> 12364 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/6orange.ottbin0 -> 12871 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/7red.ottbin0 -> 12743 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/8green.ottbin0 -> 12661 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/9colorful.ottbin0 -> 12297 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-10grey.ottbin0 -> 12642 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-1simple.ottbin0 -> 12743 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-2elegant.ottbin0 -> 17682 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-3modern.ottbin0 -> 13049 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-4classic.ottbin0 -> 12502 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-5blue.ottbin0 -> 12412 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-6orange.ottbin0 -> 12893 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-7red.ottbin0 -> 12858 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-8green.ottbin0 -> 12745 bytes
-rwxr-xr-xextras/source/templates/wizard/agenda/lang/vi/aw-9colorful.ottbin0 -> 12315 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/10grey.ottbin0 -> 12735 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/1simple.ottbin0 -> 12394 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/2elegant.ottbin0 -> 16460 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/3modern.ottbin0 -> 12957 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/4classic.ottbin0 -> 12316 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/5blue.ottbin0 -> 12372 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/6orange.ottbin0 -> 13030 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/7red.ottbin0 -> 12780 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/8green.ottbin0 -> 12679 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/9colorful.ottbin0 -> 12406 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-10grey.ottbin0 -> 12735 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-1simple.ottbin0 -> 12394 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-2elegant.ottbin0 -> 16534 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-3modern.ottbin0 -> 12957 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-4classic.ottbin0 -> 12316 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-5blue.ottbin0 -> 12372 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-6orange.ottbin0 -> 13030 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-7red.ottbin0 -> 12780 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-8green.ottbin0 -> 12679 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-CN/aw-9colorful.ottbin0 -> 12406 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/10grey.ottbin0 -> 12720 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/1simple.ottbin0 -> 12380 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/2elegant.ottbin0 -> 16478 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/3modern.ottbin0 -> 12970 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/4classic.ottbin0 -> 12314 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/5blue.ottbin0 -> 12372 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/6orange.ottbin0 -> 13057 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/7red.ottbin0 -> 12743 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/8green.ottbin0 -> 12691 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/9colorful.ottbin0 -> 12408 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-10grey.ottbin0 -> 12720 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-1simple.ottbin0 -> 12380 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-2elegant.ottbin0 -> 16559 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-3modern.ottbin0 -> 12970 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-4classic.ottbin0 -> 12314 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-5blue.ottbin0 -> 12372 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-6orange.ottbin0 -> 13057 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-7red.ottbin0 -> 12743 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-8green.ottbin0 -> 12691 bytes
-rw-r--r--extras/source/templates/wizard/agenda/lang/zh-TW/aw-9colorful.ottbin0 -> 12408 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/Import_1.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/Import_3.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/Import_4.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/MS-Import_2-1.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/MS-Import_2-2.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/MS-Import_2-3.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/XML-Import_2-1.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/XML-Import_2-2.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/XML-Import_2-3.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/XML-Import_2-4.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/brasil.gifbin0 -> 6075 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/cancel_down.bmpbin0 -> 416 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/cancel_up.bmpbin0 -> 416 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/china.gifbin0 -> 10764 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/delzip0
-rw-r--r--extras/source/templates/wizard/bitmap/denmark.gifbin0 -> 12229 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/down.bmpbin0 -> 644 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/end.bmpbin0 -> 13190 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/euro_1.bmpbin0 -> 23344 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/euro_2.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/euro_3.bmpbin0 -> 66480 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/finland.gifbin0 -> 9569 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/france.gifbin0 -> 7934 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/ftpconnected.gifbin0 -> 114 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/ftpconnecting.gifbin0 -> 166 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/ftperror.gifbin0 -> 123 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/ftpunknown.gifbin0 -> 152 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/germany.wmfbin0 -> 18306 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/greece.gifbin0 -> 13597 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/italia.gifbin0 -> 11213 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/japan.gifbin0 -> 7283 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/makefile.mk47
-rw-r--r--extras/source/templates/wizard/bitmap/maximize.bmpbin0 -> 822 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/minimize.bmpbin0 -> 726 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/netherlands.gifbin0 -> 8639 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/okay_down.bmpbin0 -> 416 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/okay_up.bmpbin0 -> 416 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/polska.gifbin0 -> 7839 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/portugal.gifbin0 -> 5638 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/report.bmpbin0 -> 15744 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/russia.gifbin0 -> 7711 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/spain.gifbin0 -> 6863 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/sweden.gifbin0 -> 8605 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/taiwan.gifbin0 -> 4900 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/turkey.gifbin0 -> 6000 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/tutorial_background.gifbin0 -> 1888 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/up.bmpbin0 -> 644 bytes
-rw-r--r--extras/source/templates/wizard/bitmap/usa.gifbin0 -> 7208 bytes
-rw-r--r--extras/source/templates/wizard/desktop/delzip1
-rw-r--r--extras/source/templates/wizard/desktop/lang/bg/html.stwbin0 -> 5305 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/bg/idxexample.odtbin0 -> 21286 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/bg/url_transfer.htm87
-rw-r--r--extras/source/templates/wizard/desktop/lang/cs/idxexample.odtbin0 -> 21272 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/cs/url_transfer.htm83
-rw-r--r--extras/source/templates/wizard/desktop/lang/da/html.stwbin0 -> 5227 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/da/idxexample.odtbin0 -> 21140 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/da/url_transfer.htm81
-rw-r--r--extras/source/templates/wizard/desktop/lang/de/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/de/idxexample.odtbin0 -> 21157 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/de/url_transfer.htm85
-rw-r--r--extras/source/templates/wizard/desktop/lang/delzip2
-rw-r--r--extras/source/templates/wizard/desktop/lang/en-GB/html.stwbin0 -> 6140 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/en-GB/idxexample.odtbin0 -> 21837 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/en-GB/url_transfer.htm92
-rw-r--r--extras/source/templates/wizard/desktop/lang/en-US/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/en-US/idxexample.odtbin0 -> 21126 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/en-US/url_transfer.htm83
-rw-r--r--extras/source/templates/wizard/desktop/lang/es/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/es/idxexample.odtbin0 -> 21146 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/es/url_transfer.htm85
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/eu/html.stwbin0 -> 5335 bytes
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/eu/idxexample.odtbin0 -> 22234 bytes
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/eu/url_transfer.htm80
-rw-r--r--extras/source/templates/wizard/desktop/lang/fr/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/fr/idxexample.odtbin0 -> 21152 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/fr/url_transfer.htm86
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/hu/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/hu/idxexample.odtbin0 -> 21196 bytes
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/hu/url_transfer.htm83
-rw-r--r--extras/source/templates/wizard/desktop/lang/it/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/it/idxexample.odtbin0 -> 21150 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/it/url_transfer.htm84
-rw-r--r--extras/source/templates/wizard/desktop/lang/ja/html.stwbin0 -> 5529 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/ja/idxexample.odtbin0 -> 24039 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/ja/url_transfer.htm100
-rw-r--r--extras/source/templates/wizard/desktop/lang/km/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/km/idxexample.odtbin0 -> 21643 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/km/url_transfer.htm100
-rw-r--r--extras/source/templates/wizard/desktop/lang/ko/html.stwbin0 -> 5482 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/ko/idxexample.odtbin0 -> 24086 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/ko/url_transfer.htm96
-rw-r--r--extras/source/templates/wizard/desktop/lang/makefile.mk47
-rw-r--r--extras/source/templates/wizard/desktop/lang/nl/html.stwbin0 -> 7211 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/nl/idxexample.odtbin0 -> 9361 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/nl/url_transfer.htm82
-rw-r--r--extras/source/templates/wizard/desktop/lang/pl/idxexample.odtbin0 -> 13229 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/pl/url_transfer.htm84
-rw-r--r--extras/source/templates/wizard/desktop/lang/pt-BR/html.stwbin0 -> 7141 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/pt-BR/idxexample.odtbin0 -> 21200 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/pt-BR/url_transfer.htm93
-rw-r--r--extras/source/templates/wizard/desktop/lang/pt/html.stwbin0 -> 8091 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/pt/idxexample.odtbin0 -> 9339 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/pt/url_transfer.htm83
-rw-r--r--extras/source/templates/wizard/desktop/lang/ru/idxexample.odtbin0 -> 13458 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/ru/url_transfer.htm83
-rw-r--r--extras/source/templates/wizard/desktop/lang/sk/html.stwbin0 -> 6059 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/sk/idxexample.odtbin0 -> 9399 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/sk/url_transfer.htm83
-rw-r--r--extras/source/templates/wizard/desktop/lang/sl/html.stwbin0 -> 5229 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/sl/idxexample.odtbin0 -> 21320 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/sl/idxexample.sxwbin0 -> 20352 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/sl/url_transfer.htm82
-rw-r--r--extras/source/templates/wizard/desktop/lang/sv/html.stwbin0 -> 5335 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/sv/idxexample.odtbin0 -> 21170 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/sv/url_transfer.htm83
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/vi/html.stwbin0 -> 5335 bytes
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/vi/idxexample.odtbin0 -> 22170 bytes
-rwxr-xr-xextras/source/templates/wizard/desktop/lang/vi/url_transfer.htm83
-rw-r--r--extras/source/templates/wizard/desktop/lang/zh-CN/html.stwbin0 -> 5877 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/zh-CN/idxexample.odtbin0 -> 24054 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/zh-CN/url_transfer.htm94
-rw-r--r--extras/source/templates/wizard/desktop/lang/zh-TW/html.stwbin0 -> 5930 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/zh-TW/idxexample.odtbin0 -> 24033 bytes
-rw-r--r--extras/source/templates/wizard/desktop/lang/zh-TW/url_transfer.htm98
-rw-r--r--extras/source/templates/wizard/desktop/makefile.mk49
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/bus-classic-pri_f.ottbin0 -> 13962 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/bus-classic_f.ottbin0 -> 26328 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/bus-modern-pri_f.ottbin0 -> 13895 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/bus-modern_f.ottbin0 -> 26302 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/pri-bottle_f.ottbin0 -> 48536 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/pri-fax_f.ottbin0 -> 58797 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/pri-lines_f.ottbin0 -> 12413 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/bg/pri-marine_f.ottbin0 -> 19615 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/bus-classic-pri_f.ottbin0 -> 14002 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/bus-classic_f.ottbin0 -> 26389 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/bus-modern-pri_f.ottbin0 -> 13887 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/bus-modern_f.ottbin0 -> 26295 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/pri-bottle_f.ottbin0 -> 48469 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/pri-fax_f.ottbin0 -> 58690 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/pri-lines_f.ottbin0 -> 12506 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/cs/pri-marine_f.ottbin0 -> 19556 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/bus-classic-pri_f.ottbin0 -> 13247 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/bus-classic_f.ottbin0 -> 25604 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/bus-modern-pri_f.ottbin0 -> 13210 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/bus-modern_f.ottbin0 -> 25500 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/pri-bottle_f.ottbin0 -> 47905 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/pri-fax_f.ottbin0 -> 58181 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/pri-lines_f.ottbin0 -> 11991 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/da/pri-marine_f.ottbin0 -> 19005 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/bus-classic-pri_f.ottbin0 -> 16876 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/bus-classic_f.ottbin0 -> 29457 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/bus-modern-pri_f.ottbin0 -> 16793 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/bus-modern_f.ottbin0 -> 29437 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/pri-bottle_f.ottbin0 -> 50477 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/pri-fax_f.ottbin0 -> 60698 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/pri-lines_f.ottbin0 -> 14361 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/de/pri-marine_f.ottbin0 -> 21451 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/delzip1
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/bus-classic-pri_f.ottbin0 -> 14266 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/bus-classic_f.ottbin0 -> 26573 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/bus-modern-pri_f.ottbin0 -> 14167 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/bus-modern_f.ottbin0 -> 26458 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/pri-bottle_f.ottbin0 -> 48319 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/pri-fax_f.ottbin0 -> 58632 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/pri-lines_f.ottbin0 -> 12445 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-GB/pri-marine_f.ottbin0 -> 19486 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/bus-classic-pri_f.ottbin0 -> 13433 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/bus-classic_f.ottbin0 -> 25806 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/bus-modern-pri_f.ottbin0 -> 13391 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/bus-modern_f.ottbin0 -> 25693 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/pri-bottle_f.ottbin0 -> 48122 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/pri-fax_f.ottbin0 -> 58398 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/pri-lines_f.ottbin0 -> 12192 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/en-US/pri-marine_f.ottbin0 -> 19214 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/bus-classic-pri_f.ottbin0 -> 13013 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/bus-classic_f.ottbin0 -> 13717 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/bus-modern-pri_f.ottbin0 -> 12972 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/bus-modern_f.ottbin0 -> 13752 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/pri-bottle_f.ottbin0 -> 47907 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/pri-fax_f.ottbin0 -> 58176 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/pri-lines_f.ottbin0 -> 11998 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/es/pri-marine_f.ottbin0 -> 19028 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/bus-classic-pri_f.ottbin0 -> 16130 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/bus-classic_f.ottbin0 -> 28403 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/bus-modern-pri_f.ottbin0 -> 16032 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/bus-modern_f.ottbin0 -> 28356 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/pri-bottle_f.ottbin0 -> 49792 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/pri-fax_f.ottbin0 -> 60089 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/pri-lines_f.ottbin0 -> 13823 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/eu/pri-marine_f.ottbin0 -> 20942 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/bus-classic-pri_f.ottbin0 -> 17369 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/bus-classic_f.ottbin0 -> 17470 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/bus-modern-pri_f.ottbin0 -> 17295 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/bus-modern_f.ottbin0 -> 17445 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/pri-bottle_f.ottbin0 -> 52227 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/pri-fax_f.ottbin0 -> 62441 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/pri-lines_f.ottbin0 -> 15884 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/fr/pri-marine_f.ottbin0 -> 23099 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/bus-classic-pri_f.ottbin0 -> 15321 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/bus-classic_f.ottbin0 -> 27827 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/bus-modern-pri_f.ottbin0 -> 15210 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/bus-modern_f.ottbin0 -> 27671 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/pri-bottle_f.ottbin0 -> 48943 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/pri-fax_f.ottbin0 -> 59204 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/pri-lines_f.ottbin0 -> 12935 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/hu/pri-marine_f.ottbin0 -> 20155 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/bus-classic-pri_f.ottbin0 -> 15872 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/bus-classic_f.ottbin0 -> 16076 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/bus-modern-pri_f.ottbin0 -> 15969 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/bus-modern_f.ottbin0 -> 16295 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/pri-bottle_f.ottbin0 -> 50212 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/pri-fax_f.ottbin0 -> 60326 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/pri-lines_f.ottbin0 -> 13799 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/it/pri-marine_f.ottbin0 -> 21243 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/bus-classic-pri_f.ottbin0 -> 13383 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/bus-classic_f.ottbin0 -> 14053 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/bus-modern-pri_f.ottbin0 -> 13319 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/bus-modern_f.ottbin0 -> 14128 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/pri-bottle_f.ottbin0 -> 48355 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/pri-fax_f.ottbin0 -> 58538 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/pri-lines_f.ottbin0 -> 12319 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ja/pri-marine_f.ottbin0 -> 19373 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/bus-classic-pri_f.ottbin0 -> 15539 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/bus-classic_f.ottbin0 -> 27837 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/bus-modern-pri_f.ottbin0 -> 15478 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/bus-modern_f.ottbin0 -> 27743 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/pri-bottle_f.ottbin0 -> 49157 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/pri-fax_f.ottbin0 -> 59430 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/pri-lines_f.ottbin0 -> 13259 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/km/pri-marine_f.ottbin0 -> 20312 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/bus-classic-pri_f.ottbin0 -> 13343 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/bus-classic_f.ottbin0 -> 14054 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/bus-modern-pri_f.ottbin0 -> 13289 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/bus-modern_f.ottbin0 -> 13576 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/pri-bottle_f.ottbin0 -> 12483 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/pri-fax_f.ottbin0 -> 13120 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/pri-lines_f.ottbin0 -> 12292 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ko/pri-marine_f.ottbin0 -> 12449 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/makefile.mk49
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/bus-classic-pri_f.ottbin0 -> 14349 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/bus-classic_f.ottbin0 -> 26669 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/bus-modern-pri_f.ottbin0 -> 14322 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/bus-modern_f.ottbin0 -> 26624 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/pri-bottle_f.ottbin0 -> 48410 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/pri-fax_f.ottbin0 -> 58728 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/pri-lines_f.ottbin0 -> 12554 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/nl/pri-marine_f.ottbin0 -> 19533 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/bus-classic-pri_f.ottbin0 -> 15439 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/bus-classic_f.ottbin0 -> 27785 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/bus-modern-pri_f.ottbin0 -> 15409 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/bus-modern_f.ottbin0 -> 27719 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/pri-bottle_f.ottbin0 -> 49546 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/pri-fax_f.ottbin0 -> 59823 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/pri-lines_f.ottbin0 -> 12224 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pl/pri-marine_f.ottbin0 -> 20644 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/bus-classic-pri_f.ottbin0 -> 15944 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/bus-classic_f.ottbin0 -> 16152 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/bus-modern-pri_f.ottbin0 -> 15899 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/bus-modern_f.ottbin0 -> 16225 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/pri-bottle_f.ottbin0 -> 50297 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/pri-fax_f.ottbin0 -> 60408 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/pri-lines_f.ottbin0 -> 13867 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt-BR/pri-marine_f.ottbin0 -> 21372 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/bus-classic-pri_f.ottbin0 -> 15598 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/bus-classic_f.ottbin0 -> 28016 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/bus-modern-pri_f.ottbin0 -> 15585 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/bus-modern_f.ottbin0 -> 27904 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/pri-bottle_f.ottbin0 -> 49710 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/pri-fax_f.ottbin0 -> 60034 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/pri-lines_f.ottbin0 -> 13686 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/pt/pri-marine_f.ottbin0 -> 20846 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/bus-classic-pri_f.ottbin0 -> 14856 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/bus-classic_f.ottbin0 -> 27108 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/bus-modern-pri_f.ottbin0 -> 14879 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/bus-modern_f.ottbin0 -> 27165 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/pri-bottle_f.ottbin0 -> 48761 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/pri-fax_f.ottbin0 -> 59018 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/pri-lines_f.ottbin0 -> 12763 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/ru/pri-marine_f.ottbin0 -> 19920 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/bus-classic-pri_f.ottbin0 -> 14378 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/bus-classic_f.ottbin0 -> 26780 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/bus-modern-pri_f.ottbin0 -> 14281 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/bus-modern_f.ottbin0 -> 26654 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/pri-bottle_f.ottbin0 -> 48863 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/pri-fax_f.ottbin0 -> 59103 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/pri-lines_f.ottbin0 -> 12809 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sk/pri-marine_f.ottbin0 -> 19790 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/bus-classic-pri_f.ottbin0 -> 13578 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/bus-classic_f.ottbin0 -> 26009 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/bus-modern-pri_f.ottbin0 -> 13401 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/bus-modern_f.ottbin0 -> 25879 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/pri-bottle_f.ottbin0 -> 48301 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/pri-fax_f.ottbin0 -> 58562 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/pri-lines_f.ottbin0 -> 12202 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sl/pri-marine_f.ottbin0 -> 19442 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/bus-classic-pri_f.ottbin0 -> 13040 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/bus-classic_f.ottbin0 -> 13727 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/bus-modern-pri_f.ottbin0 -> 12969 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/bus-modern_f.ottbin0 -> 13761 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/pri-bottle_f.ottbin0 -> 47941 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/pri-fax_f.ottbin0 -> 58188 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/pri-lines_f.ottbin0 -> 12009 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/sv/pri-marine_f.ottbin0 -> 19049 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/bus-classic-pri_f.ottbin0 -> 14762 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/bus-classic_f.ottbin0 -> 27043 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/bus-modern-pri_f.ottbin0 -> 14734 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/bus-modern_f.ottbin0 -> 26979 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/pri-bottle_f.ottbin0 -> 48657 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/pri-fax_f.ottbin0 -> 58959 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/pri-lines_f.ottbin0 -> 12676 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/tr/pri-marine_f.ottbin0 -> 19823 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/bus-classic-pri_f.ottbin0 -> 27437 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/bus-classic_f.ottbin0 -> 27438 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/bus-modern-pri_f.ottbin0 -> 14972 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/bus-modern_f.ottbin0 -> 27533 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/pri-bottle_f.ottbin0 -> 49902 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/pri-fax_f.ottbin0 -> 60112 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/pri-lines_f.ottbin0 -> 13539 bytes
-rwxr-xr-xextras/source/templates/wizard/fax/lang/vi/pri-marine_f.ottbin0 -> 20782 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/bus-classic-pri_f.ottbin0 -> 13272 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/bus-classic_f.ottbin0 -> 13980 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/bus-modern-pri_f.ottbin0 -> 13219 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/bus-modern_f.ottbin0 -> 14028 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/pri-bottle_f.ottbin0 -> 48306 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/pri-fax_f.ottbin0 -> 58488 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/pri-lines_f.ottbin0 -> 12263 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-CN/pri-marine_f.ottbin0 -> 19355 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/bus-classic-pri_f.ottbin0 -> 13489 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/bus-classic_f.ottbin0 -> 13990 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/bus-modern-pri_f.ottbin0 -> 13287 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/bus-modern_f.ottbin0 -> 14068 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/pri-bottle_f.ottbin0 -> 48327 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/pri-fax_f.ottbin0 -> 58507 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/pri-lines_f.ottbin0 -> 12286 bytes
-rw-r--r--extras/source/templates/wizard/fax/lang/zh-TW/pri-marine_f.ottbin0 -> 19364 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/bus-elegant_l.ottbin0 -> 33481 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/bus-modern_l.ottbin0 -> 33305 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/bus-office_l.ottbin0 -> 33302 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/off-elegant_l.ottbin0 -> 15115 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/off-modern_l.ottbin0 -> 14690 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/off-office_l.ottbin0 -> 14392 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/pri-bottle_l.ottbin0 -> 48155 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/pri-mail_l.ottbin0 -> 24078 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/pri-marine_l.ottbin0 -> 19317 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/bg/pri-redline_l.ottbin0 -> 12133 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/bus-elegant_l.ottbin0 -> 35308 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/bus-modern_l.ottbin0 -> 35774 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/bus-office_l.ottbin0 -> 35420 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/off-elegant_l.ottbin0 -> 16796 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/off-modern_l.ottbin0 -> 16474 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/off-office_l.ottbin0 -> 16099 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/pri-bottle_l.ottbin0 -> 48166 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/pri-mail_l.ottbin0 -> 24034 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/pri-marine_l.ottbin0 -> 19287 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/cs/pri-redline_l.ottbin0 -> 12291 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/bus-elegant_l.ottbin0 -> 34076 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/bus-modern_l.ottbin0 -> 34201 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/bus-office_l.ottbin0 -> 34097 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/off-elegant_l.ottbin0 -> 15647 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/off-modern_l.ottbin0 -> 15245 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/off-office_l.ottbin0 -> 14769 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/pri-bottle_l.ottbin0 -> 47452 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/pri-mail_l.ottbin0 -> 23344 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/pri-marine_l.ottbin0 -> 18528 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/da/pri-redline_l.ottbin0 -> 11639 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/bus-elegant_l.ottbin0 -> 36299 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/bus-modern_l.ottbin0 -> 36496 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/bus-office_l.ottbin0 -> 36279 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/off-elegant_l.ottbin0 -> 15742 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/off-modern_l.ottbin0 -> 15315 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/off-office_l.ottbin0 -> 14789 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/pri-bottle_l.ottbin0 -> 48191 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/pri-mail_l.ottbin0 -> 24168 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/pri-marine_l.ottbin0 -> 19306 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/de/pri-redline_l.ottbin0 -> 12473 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/delzip1
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/bus-elegant_l.ottbin0 -> 34203 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/bus-modern_l.ottbin0 -> 34370 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/bus-office_l.ottbin0 -> 34188 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/off-elegant_l.ottbin0 -> 15692 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/off-modern_l.ottbin0 -> 15332 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/off-office_l.ottbin0 -> 14881 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/pri-bottle_l.ottbin0 -> 47926 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/pri-mail_l.ottbin0 -> 23854 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/pri-marine_l.ottbin0 -> 19125 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-GB/pri-redline_l.ottbin0 -> 12148 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/bus-elegant_l.ottbin0 -> 33945 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/bus-modern_l.ottbin0 -> 34270 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/bus-office_l.ottbin0 -> 34041 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/off-elegant_l.ottbin0 -> 15629 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/off-modern_l.ottbin0 -> 15341 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/off-office_l.ottbin0 -> 14731 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/pri-bottle_l.ottbin0 -> 48260 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/pri-mail_l.ottbin0 -> 24144 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/pri-marine_l.ottbin0 -> 19326 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/en-US/pri-redline_l.ottbin0 -> 12423 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/bus-elegant_l.ottbin0 -> 35196 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/bus-modern_l.ottbin0 -> 35293 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/bus-office_l.ottbin0 -> 35288 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/off-elegant_l.ottbin0 -> 15714 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/off-modern_l.ottbin0 -> 15514 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/off-office_l.ottbin0 -> 14755 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/pri-bottle_l.ottbin0 -> 48283 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/pri-mail_l.ottbin0 -> 24241 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/pri-marine_l.ottbin0 -> 19443 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/es/pri-redline_l.ottbin0 -> 12544 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/bus-elegant_l.ottbin0 -> 33891 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/bus-modern_l.ottbin0 -> 33889 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/bus-office_l.ottbin0 -> 33857 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/off-elegant_l.ottbin0 -> 15864 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/off-modern_l.ottbin0 -> 15381 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/off-office_l.ottbin0 -> 15020 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/pri-bottle_l.ottbin0 -> 49465 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/pri-mail_l.ottbin0 -> 25367 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/pri-marine_l.ottbin0 -> 20630 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/eu/pri-redline_l.ottbin0 -> 13539 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/bus-elegant_l.ottbin0 -> 35087 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/bus-modern_l.ottbin0 -> 35258 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/bus-office_l.ottbin0 -> 35187 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/off-elegant_l.ottbin0 -> 15706 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/off-modern_l.ottbin0 -> 15517 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/off-office_l.ottbin0 -> 14721 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/pri-bottle_l.ottbin0 -> 48247 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/pri-mail_l.ottbin0 -> 24192 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/pri-marine_l.ottbin0 -> 19393 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/fr/pri-redline_l.ottbin0 -> 12485 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/bus-elegant_l.ottbin0 -> 28811 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/bus-modern_l.ottbin0 -> 29220 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/bus-office_l.ottbin0 -> 28943 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/off-elegant_l.ottbin0 -> 17014 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/off-modern_l.ottbin0 -> 16696 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/off-office_l.ottbin0 -> 16232 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/pri-bottle_l.ottbin0 -> 48573 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/pri-mail_l.ottbin0 -> 24608 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/pri-marine_l.ottbin0 -> 19848 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/hu/pri-redline_l.ottbin0 -> 12724 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/bus-elegant_l.ottbin0 -> 35132 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/bus-modern_l.ottbin0 -> 35272 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/bus-office_l.ottbin0 -> 35239 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/off-elegant_l.ottbin0 -> 15685 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/off-modern_l.ottbin0 -> 15531 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/off-office_l.ottbin0 -> 14763 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/pri-bottle_l.ottbin0 -> 48251 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/pri-mail_l.ottbin0 -> 24212 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/pri-marine_l.ottbin0 -> 19414 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/it/pri-redline_l.ottbin0 -> 12505 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/bus-elegant_l.ottbin0 -> 32851 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/bus-modern_l.ottbin0 -> 32811 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/bus-office_l.ottbin0 -> 32866 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/off-elegant_l.ottbin0 -> 13980 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/off-modern_l.ottbin0 -> 13542 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/off-office_l.ottbin0 -> 13078 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/pri-bottle_l.ottbin0 -> 48475 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/pri-mail_l.ottbin0 -> 24376 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/pri-marine_l.ottbin0 -> 19693 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ja/pri-redline_l.ottbin0 -> 12690 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/bus-elegant_l.ottbin0 -> 33195 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/bus-modern_l.ottbin0 -> 33366 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/bus-office_l.ottbin0 -> 33297 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/off-elegant_l.ottbin0 -> 15136 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/off-modern_l.ottbin0 -> 14766 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/off-office_l.ottbin0 -> 14343 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/pri-bottle_l.ottbin0 -> 48755 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/pri-mail_l.ottbin0 -> 24707 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/pri-marine_l.ottbin0 -> 19963 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/km/pri-redline_l.ottbin0 -> 12974 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/bus-elegant_l.ottbin0 -> 33016 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/bus-modern_l.ottbin0 -> 32993 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/bus-office_l.ottbin0 -> 33110 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/off-elegant_l.ottbin0 -> 14164 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/off-modern_l.ottbin0 -> 13716 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/off-office_l.ottbin0 -> 13242 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/pri-bottle_l.ottbin0 -> 48425 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/pri-mail_l.ottbin0 -> 24371 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/pri-marine_l.ottbin0 -> 19629 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ko/pri-redline_l.ottbin0 -> 12664 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/makefile.mk56
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/bus-elegant_l.ottbin0 -> 35129 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/bus-modern_l.ottbin0 -> 35296 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/bus-office_l.ottbin0 -> 35304 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/off-elegant_l.ottbin0 -> 15686 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/off-modern_l.ottbin0 -> 15300 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/off-office_l.ottbin0 -> 14769 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/pri-bottle_l.ottbin0 -> 48038 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/pri-mail_l.ottbin0 -> 23992 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/pri-marine_l.ottbin0 -> 19194 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/nl/pri-redline_l.ottbin0 -> 12272 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/bus-elegant_l.ottbin0 -> 35321 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/bus-modern_l.ottbin0 -> 35491 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/bus-office_l.ottbin0 -> 35400 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/off-elegant_l.ottbin0 -> 15723 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/off-modern_l.ottbin0 -> 15361 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/off-office_l.ottbin0 -> 14779 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/pri-bottle_l.ottbin0 -> 48075 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/pri-mail_l.ottbin0 -> 24013 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/pri-marine_l.ottbin0 -> 19287 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pl/pri-redline_l.ottbin0 -> 12202 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/bus-elegant_l.ottbin0 -> 32898 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/bus-modern_l.ottbin0 -> 32976 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/bus-office_l.ottbin0 -> 33065 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/off-elegant_l.ottbin0 -> 13883 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/off-modern_l.ottbin0 -> 13540 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/off-office_l.ottbin0 -> 13125 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/pri-bottle_l.ottbin0 -> 48298 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/pri-mail_l.ottbin0 -> 24283 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/pri-marine_l.ottbin0 -> 19487 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt-BR/pri-redline_l.ottbin0 -> 12581 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/bus-elegant_l.ottbin0 -> 34166 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/bus-modern_l.ottbin0 -> 34295 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/bus-office_l.ottbin0 -> 34137 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/off-elegant_l.ottbin0 -> 15666 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/off-modern_l.ottbin0 -> 15271 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/off-office_l.ottbin0 -> 14805 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/pri-bottle_l.ottbin0 -> 49425 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/pri-mail_l.ottbin0 -> 25343 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/pri-marine_l.ottbin0 -> 20592 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/pt/pri-redline_l.ottbin0 -> 13497 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/bus-elegant_l.ottbin0 -> 32769 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/bus-modern_l.ottbin0 -> 32828 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/bus-office_l.ottbin0 -> 32818 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/off-elegant_l.ottbin0 -> 14608 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/off-modern_l.ottbin0 -> 13644 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/off-office_l.ottbin0 -> 13848 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/pri-bottle_l.ottbin0 -> 48536 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/pri-mail_l.ottbin0 -> 24413 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/pri-marine_l.ottbin0 -> 19526 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/ru/pri-redline_l.ottbin0 -> 12568 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/bus-elegant_l.ottbin0 -> 32678 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/bus-modern_l.ottbin0 -> 32647 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/bus-office_l.ottbin0 -> 32986 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/off-elegant_l.ottbin0 -> 14478 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/off-modern_l.ottbin0 -> 13966 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/off-office_l.ottbin0 -> 13750 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/pri-bottle_l.ottbin0 -> 48272 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/pri-mail_l.ottbin0 -> 24170 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/pri-marine_l.ottbin0 -> 19478 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sk/pri-redline_l.ottbin0 -> 12598 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/bus-elegant_l.ottbin0 -> 19390 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/bus-modern_l.ottbin0 -> 19439 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/bus-office_l.ottbin0 -> 19454 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/off-elegant_l.ottbin0 -> 13944 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/off-modern_l.ottbin0 -> 13501 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/off-office_l.ottbin0 -> 13109 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/pri-bottle_l.ottbin0 -> 47978 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/pri-mail_l.ottbin0 -> 23904 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/pri-marine_l.ottbin0 -> 19152 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sl/pri-redline_l.ottbin0 -> 11951 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/bus-elegant_l.ottbin0 -> 35195 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/bus-modern_l.ottbin0 -> 35342 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/bus-office_l.ottbin0 -> 35313 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/off-elegant_l.ottbin0 -> 15768 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/off-modern_l.ottbin0 -> 15347 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/off-office_l.ottbin0 -> 14801 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/pri-bottle_l.ottbin0 -> 48237 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/pri-mail_l.ottbin0 -> 24226 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/pri-marine_l.ottbin0 -> 19359 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/sv/pri-redline_l.ottbin0 -> 12522 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/bus-elegant_l.ottbin0 -> 32509 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/bus-modern_l.ottbin0 -> 32664 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/bus-office_l.ottbin0 -> 32593 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/off-elegant_l.ottbin0 -> 14371 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/off-modern_l.ottbin0 -> 14067 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/off-office_l.ottbin0 -> 13636 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/pri-bottle_l.ottbin0 -> 48166 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/pri-mail_l.ottbin0 -> 24128 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/pri-marine_l.ottbin0 -> 19377 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/tr/pri-redline_l.ottbin0 -> 12290 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/bus-elegant_l.ottbin0 -> 34581 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/bus-modern_l.ottbin0 -> 34704 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/bus-office_l.ottbin0 -> 34605 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/off-elegant_l.ottbin0 -> 15318 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/off-modern_l.ottbin0 -> 14885 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/off-office_l.ottbin0 -> 14412 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/pri-bottle_l.ottbin0 -> 49511 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/pri-mail_l.ottbin0 -> 25281 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/pri-marine_l.ottbin0 -> 20477 bytes
-rwxr-xr-xextras/source/templates/wizard/letter/lang/vi/pri-redline_l.ottbin0 -> 13302 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/bus-elegant_l.ottbin0 -> 32964 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/bus-modern_l.ottbin0 -> 32935 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/bus-office_l.ottbin0 -> 33050 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/off-elegant_l.ottbin0 -> 14136 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/off-modern_l.ottbin0 -> 13669 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/off-office_l.ottbin0 -> 13239 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/pri-bottle_l.ottbin0 -> 48484 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/pri-mail_l.ottbin0 -> 24392 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/pri-marine_l.ottbin0 -> 19680 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-CN/pri-redline_l.ottbin0 -> 12693 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/bus-elegant_l.ottbin0 -> 32949 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/bus-modern_l.ottbin0 -> 32924 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/bus-office_l.ottbin0 -> 33059 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/off-elegant_l.ottbin0 -> 14096 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/off-modern_l.ottbin0 -> 13615 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/off-office_l.ottbin0 -> 13206 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/pri-bottle_l.ottbin0 -> 48497 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/pri-mail_l.ottbin0 -> 24420 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/pri-marine_l.ottbin0 -> 19681 bytes
-rw-r--r--extras/source/templates/wizard/letter/lang/zh-TW/pri-redline_l.ottbin0 -> 12701 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-01.ottbin0 -> 9846 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-011.ottbin0 -> 9686 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-012.ottbin0 -> 9640 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-02.ottbin0 -> 9500 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-021.ottbin0 -> 9520 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-022.ottbin0 -> 9396 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-03.ottbin0 -> 9951 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-031.ottbin0 -> 10031 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-032.ottbin0 -> 9895 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-04.ottbin0 -> 10090 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-041.ottbin0 -> 10224 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-042.ottbin0 -> 9955 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-05.ottbin0 -> 9515 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-051.ottbin0 -> 9518 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-052.ottbin0 -> 9561 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-06.ottbin0 -> 9921 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-061.ottbin0 -> 9906 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-062.ottbin0 -> 9827 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/cnt-default.ottbin0 -> 9657 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-01.ottbin0 -> 37043 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-02.ottbin0 -> 26176 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-03.ottbin0 -> 46632 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-04.ottbin0 -> 25021 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-05.ottbin0 -> 46527 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-06.ottbin0 -> 18351 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-07.ottbin0 -> 8793 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-08.ottbin0 -> 13368 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-09.ottbin0 -> 50528 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/bg/stl-default.ottbin0 -> 7693 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-01.ottbin0 -> 8755 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-011.ottbin0 -> 8773 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-012.ottbin0 -> 8700 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-02.ottbin0 -> 8648 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-021.ottbin0 -> 8695 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-022.ottbin0 -> 8591 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-03.ottbin0 -> 8998 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-031.ottbin0 -> 8994 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-032.ottbin0 -> 8928 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-04.ottbin0 -> 9100 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-041.ottbin0 -> 9250 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-042.ottbin0 -> 8949 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-05.ottbin0 -> 8647 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-051.ottbin0 -> 8685 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-052.ottbin0 -> 8627 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-06.ottbin0 -> 8911 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-061.ottbin0 -> 8867 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-062.ottbin0 -> 8764 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/cnt-default.ottbin0 -> 8773 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-01.ottbin0 -> 35377 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-02.ottbin0 -> 25279 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-03.ottbin0 -> 45733 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-04.ottbin0 -> 23274 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-05.ottbin0 -> 45684 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-06.ottbin0 -> 16844 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-07.ottbin0 -> 8055 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-08.ottbin0 -> 10882 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-09.ottbin0 -> 48611 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/cs/stl-default.ottbin0 -> 6927 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-01.ottbin0 -> 8620 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-011.ottbin0 -> 8613 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-012.ottbin0 -> 8510 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-02.ottbin0 -> 8464 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-021.ottbin0 -> 8537 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-022.ottbin0 -> 8396 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-03.ottbin0 -> 8812 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-031.ottbin0 -> 8806 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-032.ottbin0 -> 8737 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-04.ottbin0 -> 8921 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-041.ottbin0 -> 9058 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-042.ottbin0 -> 8767 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-05.ottbin0 -> 8450 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-051.ottbin0 -> 8435 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-052.ottbin0 -> 8432 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-06.ottbin0 -> 8725 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-061.ottbin0 -> 8654 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-062.ottbin0 -> 8585 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/cnt-default.ottbin0 -> 8589 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-01.ottbin0 -> 35087 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-02.ottbin0 -> 24973 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-03.ottbin0 -> 45383 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-04.ottbin0 -> 22956 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-05.ottbin0 -> 45354 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-06.ottbin0 -> 16531 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-07.ottbin0 -> 7616 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-08.ottbin0 -> 10605 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-09.ottbin0 -> 48279 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/da/stl-default.ottbin0 -> 6627 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-01.ottbin0 -> 8760 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-011.ottbin0 -> 8817 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-012.ottbin0 -> 8690 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-02.ottbin0 -> 8720 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-021.ottbin0 -> 8770 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-022.ottbin0 -> 8598 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-03.ottbin0 -> 9073 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-031.ottbin0 -> 9063 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-032.ottbin0 -> 8956 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-04.ottbin0 -> 9096 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-041.ottbin0 -> 9119 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-042.ottbin0 -> 8981 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-05.ottbin0 -> 8596 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-051.ottbin0 -> 8661 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-052.ottbin0 -> 8625 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-06.ottbin0 -> 8895 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-061.ottbin0 -> 8885 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-062.ottbin0 -> 8765 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/cnt-default.ottbin0 -> 8882 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-01.ottbin0 -> 35301 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-02.ottbin0 -> 25192 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-03.ottbin0 -> 45591 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-04.ottbin0 -> 22663 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-05.ottbin0 -> 45398 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-06.ottbin0 -> 16719 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-07.ottbin0 -> 7792 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-08.ottbin0 -> 11405 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-09.ottbin0 -> 48416 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/de/stl-default.ottbin0 -> 6843 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/delzip2
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-01.ottbin0 -> 10277 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-011.ottbin0 -> 10146 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-012.ottbin0 -> 10137 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-02.ottbin0 -> 10011 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-021.ottbin0 -> 9997 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-022.ottbin0 -> 9833 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-03.ottbin0 -> 10383 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-031.ottbin0 -> 10275 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-032.ottbin0 -> 10174 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-04.ottbin0 -> 10388 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-041.ottbin0 -> 10424 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-042.ottbin0 -> 10381 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-05.ottbin0 -> 9725 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-051.ottbin0 -> 9687 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-052.ottbin0 -> 9703 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-06.ottbin0 -> 10297 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-061.ottbin0 -> 10196 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-062.ottbin0 -> 10129 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/cnt-default.ottbin0 -> 10060 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-01.ottbin0 -> 36755 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-02.ottbin0 -> 25830 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-03.ottbin0 -> 46351 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-04.ottbin0 -> 24172 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-05.ottbin0 -> 46261 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-06.ottbin0 -> 18156 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-07.ottbin0 -> 9121 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-08.ottbin0 -> 12482 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-09.ottbin0 -> 50141 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-GB/stl-default.ottbin0 -> 7561 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-01.ottbin0 -> 8813 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-011.ottbin0 -> 8803 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-012.ottbin0 -> 8707 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-02.ottbin0 -> 8666 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-021.ottbin0 -> 8738 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-022.ottbin0 -> 8594 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-03.ottbin0 -> 9003 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-031.ottbin0 -> 8999 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-032.ottbin0 -> 8931 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-04.ottbin0 -> 9119 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-041.ottbin0 -> 9264 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-042.ottbin0 -> 8959 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-05.ottbin0 -> 8651 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-051.ottbin0 -> 8635 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-052.ottbin0 -> 8633 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-06.ottbin0 -> 8900 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-061.ottbin0 -> 8831 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-062.ottbin0 -> 8763 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/cnt-default.ottbin0 -> 8777 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-01.ottbin0 -> 35361 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-02.ottbin0 -> 25203 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-03.ottbin0 -> 45630 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-04.ottbin0 -> 23224 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-05.ottbin0 -> 45601 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-06.ottbin0 -> 16824 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-07.ottbin0 -> 7951 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-08.ottbin0 -> 10871 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-09.ottbin0 -> 48567 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/en-US/stl-default.ottbin0 -> 6857 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-01.ottbin0 -> 8764 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-011.ottbin0 -> 8824 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-012.ottbin0 -> 8698 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-02.ottbin0 -> 8727 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-021.ottbin0 -> 8776 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-022.ottbin0 -> 8611 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-03.ottbin0 -> 9080 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-031.ottbin0 -> 9067 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-032.ottbin0 -> 8966 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-04.ottbin0 -> 9104 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-041.ottbin0 -> 9128 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-042.ottbin0 -> 8998 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-05.ottbin0 -> 8612 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-051.ottbin0 -> 8664 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-052.ottbin0 -> 8633 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-06.ottbin0 -> 8887 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-061.ottbin0 -> 8877 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-062.ottbin0 -> 8766 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/cnt-default.ottbin0 -> 8892 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-01.ottbin0 -> 38158 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-02.ottbin0 -> 25281 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-03.ottbin0 -> 47640 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-04.ottbin0 -> 22734 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-05.ottbin0 -> 47395 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-06.ottbin0 -> 16709 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-07.ottbin0 -> 7891 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-08.ottbin0 -> 11440 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-09.ottbin0 -> 51540 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/es/stl-default.ottbin0 -> 6941 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-01.ottbin0 -> 11556 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-011.ottbin0 -> 11494 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-012.ottbin0 -> 11496 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-02.ottbin0 -> 11432 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-021.ottbin0 -> 11541 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-022.ottbin0 -> 11427 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-03.ottbin0 -> 11588 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-031.ottbin0 -> 11591 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-032.ottbin0 -> 11602 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-04.ottbin0 -> 11792 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-041.ottbin0 -> 11966 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-042.ottbin0 -> 11725 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-05.ottbin0 -> 11048 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-051.ottbin0 -> 10985 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-052.ottbin0 -> 11106 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-06.ottbin0 -> 11808 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-061.ottbin0 -> 11638 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-062.ottbin0 -> 11663 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/cnt-default.ottbin0 -> 11590 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-01.ottbin0 -> 39568 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-02.ottbin0 -> 27248 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-03.ottbin0 -> 47648 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-04.ottbin0 -> 25668 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-05.ottbin0 -> 47578 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-06.ottbin0 -> 19489 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-07.ottbin0 -> 9840 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-08.ottbin0 -> 13631 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-09.ottbin0 -> 51465 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-10.ottbin0 -> 38022 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/eu/stl-default.ottbin0 -> 8818 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-01.ottbin0 -> 8761 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-011.ottbin0 -> 8813 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-012.ottbin0 -> 8699 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-02.ottbin0 -> 8729 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-021.ottbin0 -> 8786 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-022.ottbin0 -> 8611 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-03.ottbin0 -> 9076 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-031.ottbin0 -> 9057 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-032.ottbin0 -> 8968 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-04.ottbin0 -> 9101 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-041.ottbin0 -> 9116 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-042.ottbin0 -> 8999 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-05.ottbin0 -> 8608 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-051.ottbin0 -> 8651 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-052.ottbin0 -> 8633 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-06.ottbin0 -> 8887 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-061.ottbin0 -> 8868 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-062.ottbin0 -> 8769 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/cnt-default.ottbin0 -> 8888 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-01.ottbin0 -> 35384 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-02.ottbin0 -> 25300 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-03.ottbin0 -> 45705 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-04.ottbin0 -> 22729 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-05.ottbin0 -> 45480 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-06.ottbin0 -> 16730 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-07.ottbin0 -> 7828 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-08.ottbin0 -> 11422 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-09.ottbin0 -> 48481 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/fr/stl-default.ottbin0 -> 6912 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-01.ottbin0 -> 9838 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-011.ottbin0 -> 9870 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-012.ottbin0 -> 9902 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-02.ottbin0 -> 9612 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-021.ottbin0 -> 9589 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-022.ottbin0 -> 9601 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-03.ottbin0 -> 10121 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-031.ottbin0 -> 10136 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-032.ottbin0 -> 10102 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-04.ottbin0 -> 10161 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-041.ottbin0 -> 10318 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-042.ottbin0 -> 10170 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-05.ottbin0 -> 9565 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-051.ottbin0 -> 9577 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-052.ottbin0 -> 9624 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-06.ottbin0 -> 10151 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-061.ottbin0 -> 10151 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-062.ottbin0 -> 10182 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/cnt-default.ottbin0 -> 9779 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-01.ottbin0 -> 36754 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-02.ottbin0 -> 26061 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-03.ottbin0 -> 46450 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-04.ottbin0 -> 24626 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-05.ottbin0 -> 46432 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-06.ottbin0 -> 19218 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-07.ottbin0 -> 9398 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-08.ottbin0 -> 11850 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-09.ottbin0 -> 50209 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/hu/stl-default.ottbin0 -> 7774 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-01.ottbin0 -> 8766 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-011.ottbin0 -> 8818 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-012.ottbin0 -> 8696 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-02.ottbin0 -> 8727 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-021.ottbin0 -> 8765 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-022.ottbin0 -> 8603 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-03.ottbin0 -> 9082 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-031.ottbin0 -> 9063 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-032.ottbin0 -> 8966 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-04.ottbin0 -> 9103 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-041.ottbin0 -> 9121 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-042.ottbin0 -> 8995 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-05.ottbin0 -> 8612 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-051.ottbin0 -> 8657 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-052.ottbin0 -> 8628 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-06.ottbin0 -> 8886 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-061.ottbin0 -> 8868 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-062.ottbin0 -> 8760 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/cnt-default.ottbin0 -> 8888 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-01.ottbin0 -> 38086 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-02.ottbin0 -> 25263 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-03.ottbin0 -> 47639 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-04.ottbin0 -> 22725 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-05.ottbin0 -> 47385 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-06.ottbin0 -> 16692 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-07.ottbin0 -> 7857 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-08.ottbin0 -> 11498 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-09.ottbin0 -> 51470 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/it/stl-default.ottbin0 -> 6923 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-01.ottbin0 -> 11484 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-011.ottbin0 -> 11505 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-012.ottbin0 -> 11384 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-02.ottbin0 -> 11448 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-021.ottbin0 -> 11509 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-022.ottbin0 -> 11334 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-03.ottbin0 -> 11772 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-031.ottbin0 -> 11805 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-032.ottbin0 -> 11647 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-04.ottbin0 -> 11826 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-041.ottbin0 -> 11850 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-042.ottbin0 -> 11683 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-05.ottbin0 -> 11353 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-051.ottbin0 -> 11557 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-052.ottbin0 -> 11508 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-06.ottbin0 -> 11620 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-061.ottbin0 -> 11645 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-062.ottbin0 -> 11510 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/cnt-default.ottbin0 -> 11693 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-01.ottbin0 -> 41044 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-02.ottbin0 -> 28184 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-03.ottbin0 -> 50532 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-04.ottbin0 -> 25686 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-05.ottbin0 -> 50380 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-06.ottbin0 -> 19615 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-07.ottbin0 -> 10746 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-08.ottbin0 -> 14405 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-09.ottbin0 -> 54354 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ja/stl-default.ottbin0 -> 9831 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-01.ottbin0 -> 11316 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-011.ottbin0 -> 11255 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-012.ottbin0 -> 11240 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-02.ottbin0 -> 11144 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-021.ottbin0 -> 11207 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-022.ottbin0 -> 11074 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-03.ottbin0 -> 11699 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-031.ottbin0 -> 11457 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-032.ottbin0 -> 11599 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-04.ottbin0 -> 11751 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-041.ottbin0 -> 11864 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-042.ottbin0 -> 11603 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-05.ottbin0 -> 11084 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-051.ottbin0 -> 10950 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-052.ottbin0 -> 11132 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-06.ottbin0 -> 11457 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-061.ottbin0 -> 11331 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-062.ottbin0 -> 11383 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/cnt-default.ottbin0 -> 11264 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-01.ottbin0 -> 37328 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-02.ottbin0 -> 26732 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-03.ottbin0 -> 47109 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-04.ottbin0 -> 25395 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-05.ottbin0 -> 47104 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-06.ottbin0 -> 19041 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-07.ottbin0 -> 9888 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-08.ottbin0 -> 12584 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-09.ottbin0 -> 50780 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/km/stl-default.ottbin0 -> 8411 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-01.ottbin0 -> 11441 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-011.ottbin0 -> 11456 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-012.ottbin0 -> 11362 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-02.ottbin0 -> 11444 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-021.ottbin0 -> 11484 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-022.ottbin0 -> 11335 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-03.ottbin0 -> 11709 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-031.ottbin0 -> 11760 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-032.ottbin0 -> 11621 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-04.ottbin0 -> 11754 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-041.ottbin0 -> 11757 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-042.ottbin0 -> 11630 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-05.ottbin0 -> 11334 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-051.ottbin0 -> 11385 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-052.ottbin0 -> 11305 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-06.ottbin0 -> 11549 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-061.ottbin0 -> 11583 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-062.ottbin0 -> 11490 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/cnt-default.ottbin0 -> 11679 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-01.ottbin0 -> 41018 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-02.ottbin0 -> 28159 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-03.ottbin0 -> 50596 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-04.ottbin0 -> 25674 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-05.ottbin0 -> 50372 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-06.ottbin0 -> 19619 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-07.ottbin0 -> 10853 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-08.ottbin0 -> 14379 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-09.ottbin0 -> 54368 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ko/stl-default.ottbin0 -> 9817 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/makefile.mk49
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-01.ottbin0 -> 10157 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-011.ottbin0 -> 10260 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-012.ottbin0 -> 10126 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-02.ottbin0 -> 10062 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-021.ottbin0 -> 10083 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-022.ottbin0 -> 9928 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-03.ottbin0 -> 10660 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-031.ottbin0 -> 10609 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-032.ottbin0 -> 10542 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-04.ottbin0 -> 10602 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-041.ottbin0 -> 10520 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-042.ottbin0 -> 10439 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-05.ottbin0 -> 9738 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-051.ottbin0 -> 9748 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-052.ottbin0 -> 9839 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-06.ottbin0 -> 10356 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-061.ottbin0 -> 10322 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-062.ottbin0 -> 10236 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/cnt-default.ottbin0 -> 10290 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-01.ottbin0 -> 36988 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-02.ottbin0 -> 26139 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-03.ottbin0 -> 47719 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-04.ottbin0 -> 24307 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-05.ottbin0 -> 47456 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-06.ottbin0 -> 18359 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-07.ottbin0 -> 9140 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-08.ottbin0 -> 12513 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-09.ottbin0 -> 51480 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/nl/stl-default.ottbin0 -> 7803 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-01.ottbin0 -> 9366 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-011.ottbin0 -> 9366 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-012.ottbin0 -> 9275 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-02.ottbin0 -> 9304 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-021.ottbin0 -> 9364 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-022.ottbin0 -> 9194 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-03.ottbin0 -> 10117 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-031.ottbin0 -> 10098 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-032.ottbin0 -> 10031 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-04.ottbin0 -> 9785 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-041.ottbin0 -> 9822 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-042.ottbin0 -> 9679 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-05.ottbin0 -> 9188 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-051.ottbin0 -> 9248 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-052.ottbin0 -> 9278 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-06.ottbin0 -> 9492 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-061.ottbin0 -> 9482 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-062.ottbin0 -> 9380 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/cnt-default.ottbin0 -> 9477 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-01.ottbin0 -> 38124 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-02.ottbin0 -> 25929 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-03.ottbin0 -> 47641 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-04.ottbin0 -> 22600 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-05.ottbin0 -> 47404 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-06.ottbin0 -> 18088 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-07.ottbin0 -> 8434 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-08.ottbin0 -> 11784 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-09.ottbin0 -> 51499 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pl/stl-default.ottbin0 -> 7545 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-01.ottbin0 -> 8767 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-011.ottbin0 -> 8820 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-012.ottbin0 -> 8702 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-02.ottbin0 -> 8725 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-021.ottbin0 -> 8768 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-022.ottbin0 -> 8605 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-03.ottbin0 -> 9080 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-031.ottbin0 -> 9061 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-032.ottbin0 -> 8969 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-04.ottbin0 -> 9104 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-041.ottbin0 -> 9120 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-042.ottbin0 -> 8996 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-05.ottbin0 -> 8623 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-051.ottbin0 -> 8660 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-052.ottbin0 -> 8632 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-06.ottbin0 -> 8908 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-061.ottbin0 -> 8892 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-062.ottbin0 -> 8775 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/cnt-default.ottbin0 -> 8896 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-01.ottbin0 -> 35355 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-02.ottbin0 -> 25454 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-03.ottbin0 -> 45704 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-04.ottbin0 -> 22711 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-05.ottbin0 -> 45495 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-06.ottbin0 -> 16695 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-07.ottbin0 -> 7943 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-08.ottbin0 -> 11440 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-09.ottbin0 -> 48461 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt-BR/stl-default.ottbin0 -> 6931 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-01.ottbin0 -> 11246 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-011.ottbin0 -> 11262 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-012.ottbin0 -> 11183 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-02.ottbin0 -> 11107 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-021.ottbin0 -> 11112 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-022.ottbin0 -> 10944 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-03.ottbin0 -> 11683 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-031.ottbin0 -> 11628 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-032.ottbin0 -> 11475 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-04.ottbin0 -> 11645 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-041.ottbin0 -> 11749 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-042.ottbin0 -> 11458 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-05.ottbin0 -> 10753 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-051.ottbin0 -> 10761 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-052.ottbin0 -> 10814 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-06.ottbin0 -> 11404 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-061.ottbin0 -> 11450 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-062.ottbin0 -> 11249 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/cnt-default.ottbin0 -> 11240 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-01.ottbin0 -> 38394 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-02.ottbin0 -> 27286 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-03.ottbin0 -> 47749 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-04.ottbin0 -> 25528 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-05.ottbin0 -> 47677 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-06.ottbin0 -> 19547 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-07.ottbin0 -> 10488 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-08.ottbin0 -> 13932 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-09.ottbin0 -> 51649 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/pt/stl-default.ottbin0 -> 8912 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-01.ottbin0 -> 9703 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-011.ottbin0 -> 9772 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-012.ottbin0 -> 9627 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-02.ottbin0 -> 9703 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-021.ottbin0 -> 9746 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-022.ottbin0 -> 9572 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-03.ottbin0 -> 10057 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-031.ottbin0 -> 11196 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-032.ottbin0 -> 9911 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-04.ottbin0 -> 10140 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-041.ottbin0 -> 10260 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-042.ottbin0 -> 9964 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-05.ottbin0 -> 9551 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-051.ottbin0 -> 9589 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-052.ottbin0 -> 9557 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-06.ottbin0 -> 9847 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-061.ottbin0 -> 9794 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-062.ottbin0 -> 9684 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/cnt-default.ottbin0 -> 9847 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-01.ottbin0 -> 37521 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-02.ottbin0 -> 26592 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-03.ottbin0 -> 47036 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-04.ottbin0 -> 24746 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-05.ottbin0 -> 47004 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-06.ottbin0 -> 18766 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-07.ottbin0 -> 9731 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-08.ottbin0 -> 13117 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-09.ottbin0 -> 50866 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/ru/stl-default.ottbin0 -> 8152 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-01.ottbin0 -> 9121 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-011.ottbin0 -> 9224 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-012.ottbin0 -> 9078 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-02.ottbin0 -> 9204 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-021.ottbin0 -> 9210 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-022.ottbin0 -> 8971 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-03.ottbin0 -> 9516 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-031.ottbin0 -> 9509 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-032.ottbin0 -> 9323 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-04.ottbin0 -> 9533 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-041.ottbin0 -> 9657 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-042.ottbin0 -> 9315 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-05.ottbin0 -> 8856 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-051.ottbin0 -> 8875 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-052.ottbin0 -> 8882 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-06.ottbin0 -> 9044 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-061.ottbin0 -> 8987 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-062.ottbin0 -> 9029 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/cnt-default.ottbin0 -> 9246 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-01.ottbin0 -> 36603 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-02.ottbin0 -> 25860 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-03.ottbin0 -> 46251 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-04.ottbin0 -> 23405 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-05.ottbin0 -> 46218 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-06.ottbin0 -> 18890 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-07.ottbin0 -> 8333 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-08.ottbin0 -> 11956 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-09.ottbin0 -> 50068 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sk/stl-default.ottbin0 -> 7493 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-01.ottbin0 -> 9203 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-011.ottbin0 -> 9374 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-012.ottbin0 -> 9443 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-02.ottbin0 -> 9192 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-021.ottbin0 -> 9523 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-022.ottbin0 -> 9356 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-03.ottbin0 -> 9806 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-031.ottbin0 -> 9801 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-032.ottbin0 -> 9713 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-04.ottbin0 -> 9741 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-041.ottbin0 -> 9900 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-042.ottbin0 -> 9480 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-05.ottbin0 -> 9218 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-051.ottbin0 -> 9085 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-052.ottbin0 -> 9139 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-06.ottbin0 -> 9739 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-061.ottbin0 -> 9419 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-062.ottbin0 -> 9273 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/cnt-default.ottbin0 -> 9308 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-01.ottbin0 -> 36900 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-02.ottbin0 -> 25891 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-03.ottbin0 -> 46338 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-04.ottbin0 -> 24065 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-05.ottbin0 -> 46255 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-06.ottbin0 -> 18084 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-07.ottbin0 -> 8470 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-08.ottbin0 -> 12468 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-09.ottbin0 -> 50207 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sl/stl-default.ottbin0 -> 7460 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-01.ottbin0 -> 8766 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-011.ottbin0 -> 8820 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-012.ottbin0 -> 8698 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-02.ottbin0 -> 8726 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-021.ottbin0 -> 8770 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-022.ottbin0 -> 8605 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-03.ottbin0 -> 9080 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-031.ottbin0 -> 9063 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-032.ottbin0 -> 8965 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-04.ottbin0 -> 9103 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-041.ottbin0 -> 9122 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-042.ottbin0 -> 8996 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-05.ottbin0 -> 8614 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-051.ottbin0 -> 8660 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-052.ottbin0 -> 8629 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-06.ottbin0 -> 8897 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-061.ottbin0 -> 8881 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-062.ottbin0 -> 8771 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/cnt-default.ottbin0 -> 8890 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-01.ottbin0 -> 38087 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-02.ottbin0 -> 25254 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-03.ottbin0 -> 47673 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-04.ottbin0 -> 22735 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-05.ottbin0 -> 47420 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-06.ottbin0 -> 16708 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-07.ottbin0 -> 7867 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-08.ottbin0 -> 11465 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-09.ottbin0 -> 51466 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/sv/stl-default.ottbin0 -> 6911 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-01.ottbin0 -> 11124 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-011.ottbin0 -> 11124 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-012.ottbin0 -> 11016 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-02.ottbin0 -> 10967 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-021.ottbin0 -> 10940 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-022.ottbin0 -> 10790 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-03.ottbin0 -> 11364 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-031.ottbin0 -> 11364 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-032.ottbin0 -> 11267 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-04.ottbin0 -> 11449 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-041.ottbin0 -> 11619 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-042.ottbin0 -> 11362 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-05.ottbin0 -> 10812 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-051.ottbin0 -> 10685 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-052.ottbin0 -> 10639 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-06.ottbin0 -> 11509 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-061.ottbin0 -> 11528 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-062.ottbin0 -> 11336 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/cnt-default.ottbin0 -> 11040 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-01.ottbin0 -> 38294 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-02.ottbin0 -> 27580 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-03.ottbin0 -> 48111 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-04.ottbin0 -> 28355 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-05.ottbin0 -> 48212 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-06.ottbin0 -> 20214 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-07.ottbin0 -> 9935 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-08.ottbin0 -> 13187 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-09.ottbin0 -> 51976 bytes
-rwxr-xr-xextras/source/templates/wizard/report/lang/vi/stl-default.ottbin0 -> 8804 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-01.ottbin0 -> 11723 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-011.ottbin0 -> 11740 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-012.ottbin0 -> 11646 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-02.ottbin0 -> 11730 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-021.ottbin0 -> 11771 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-022.ottbin0 -> 11619 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-03.ottbin0 -> 11929 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-031.ottbin0 -> 11990 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-032.ottbin0 -> 11846 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-04.ottbin0 -> 11984 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-041.ottbin0 -> 11983 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-042.ottbin0 -> 11863 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-05.ottbin0 -> 11634 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-051.ottbin0 -> 11684 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-052.ottbin0 -> 11599 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-06.ottbin0 -> 11776 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-061.ottbin0 -> 11808 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-062.ottbin0 -> 11716 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/cnt-default.ottbin0 -> 11859 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-01.ottbin0 -> 40838 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-02.ottbin0 -> 28127 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-03.ottbin0 -> 50561 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-04.ottbin0 -> 25631 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-05.ottbin0 -> 50287 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-06.ottbin0 -> 19586 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-07.ottbin0 -> 10742 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-08.ottbin0 -> 14293 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-09.ottbin0 -> 54270 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-CN/stl-default.ottbin0 -> 9777 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-01.ottbin0 -> 11721 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-011.ottbin0 -> 11738 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-012.ottbin0 -> 11638 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-02.ottbin0 -> 11728 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-021.ottbin0 -> 11769 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-022.ottbin0 -> 11613 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-03.ottbin0 -> 11928 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-031.ottbin0 -> 11987 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-032.ottbin0 -> 11841 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-04.ottbin0 -> 11975 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-041.ottbin0 -> 11981 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-042.ottbin0 -> 11853 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-05.ottbin0 -> 11629 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-051.ottbin0 -> 11681 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-052.ottbin0 -> 11594 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-06.ottbin0 -> 11783 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-061.ottbin0 -> 11804 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-062.ottbin0 -> 11712 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/cnt-default.ottbin0 -> 11858 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-01.ottbin0 -> 40925 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-02.ottbin0 -> 28113 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-03.ottbin0 -> 50478 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-04.ottbin0 -> 25627 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-05.ottbin0 -> 50185 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-06.ottbin0 -> 19581 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-07.ottbin0 -> 10588 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-08.ottbin0 -> 14278 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-09.ottbin0 -> 54305 bytes
-rw-r--r--extras/source/templates/wizard/report/lang/zh-TW/stl-default.ottbin0 -> 9768 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/black_white.otsbin0 -> 9627 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/blackberry.otsbin0 -> 9854 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/default.otsbin0 -> 9500 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/diner.otsbin0 -> 9522 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/fall.otsbin0 -> 8860 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/glacier.otsbin0 -> 9548 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/green_grapes.otsbin0 -> 9634 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/jeans.otsbin0 -> 9514 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/marine.otsbin0 -> 8723 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/millennium.otsbin0 -> 9559 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/nature.otsbin0 -> 9674 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/neon.otsbin0 -> 9990 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/night.otsbin0 -> 9941 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/nostalgic.otsbin0 -> 9267 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/pastell.otsbin0 -> 9532 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/pool.otsbin0 -> 9959 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/pumpkin.otsbin0 -> 9728 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/xos.otsbin0 -> 9301 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/black_white.otsbin0 -> 8249 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/blackberry.otsbin0 -> 8165 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/default.otsbin0 -> 8043 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/diner.otsbin0 -> 8608 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/fall.otsbin0 -> 8097 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/glacier.otsbin0 -> 8203 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/green_grapes.otsbin0 -> 8078 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/jeans.otsbin0 -> 8084 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/marine.otsbin0 -> 7969 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/millennium.otsbin0 -> 8207 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/nature.otsbin0 -> 8126 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/neon.otsbin0 -> 8438 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/night.otsbin0 -> 8219 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/nostalgic.otsbin0 -> 8273 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/pastell.otsbin0 -> 8187 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/pool.otsbin0 -> 8383 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/pumpkin.otsbin0 -> 8028 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/xos.otsbin0 -> 8090 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/black_white.otsbin0 -> 8020 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/blackberry.otsbin0 -> 7947 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/default.otsbin0 -> 7806 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/diner.otsbin0 -> 8413 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/fall.otsbin0 -> 7878 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/glacier.otsbin0 -> 7976 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/green_grapes.otsbin0 -> 7842 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/jeans.otsbin0 -> 7879 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/marine.otsbin0 -> 7721 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/millennium.otsbin0 -> 7993 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/nature.otsbin0 -> 7898 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/neon.otsbin0 -> 8206 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/night.otsbin0 -> 7990 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/nostalgic.otsbin0 -> 8103 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/pastell.otsbin0 -> 7973 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/pool.otsbin0 -> 8157 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/pumpkin.otsbin0 -> 7797 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/xos.otsbin0 -> 7846 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/black_white.otsbin0 -> 8287 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/blackberry.otsbin0 -> 8240 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/default.otsbin0 -> 8114 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/diner.otsbin0 -> 8821 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/fall.otsbin0 -> 8100 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/glacier.otsbin0 -> 8290 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/green_grapes.otsbin0 -> 8078 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/jeans.otsbin0 -> 8214 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/marine.otsbin0 -> 8040 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/millennium.otsbin0 -> 8327 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/nature.otsbin0 -> 8158 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/neon.otsbin0 -> 8575 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/night.otsbin0 -> 8325 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/nostalgic.otsbin0 -> 8367 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/pastell.otsbin0 -> 8345 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/pool.otsbin0 -> 8513 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/pumpkin.otsbin0 -> 8186 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/xos.otsbin0 -> 8289 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/delzip0
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/black_white.otsbin0 -> 9710 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/blackberry.otsbin0 -> 9774 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/default.otsbin0 -> 9698 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/diner.otsbin0 -> 12195 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/fall.otsbin0 -> 9375 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/glacier.otsbin0 -> 9857 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/green_grapes.otsbin0 -> 9436 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/jeans.otsbin0 -> 9713 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/marine.otsbin0 -> 9156 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/millennium.otsbin0 -> 9685 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/nature.otsbin0 -> 9502 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/neon.otsbin0 -> 10133 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/night.otsbin0 -> 10455 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/nostalgic.otsbin0 -> 9605 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/pastell.otsbin0 -> 9813 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/pool.otsbin0 -> 10222 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/pumpkin.otsbin0 -> 9474 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/xos.otsbin0 -> 9054 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/black_white.otsbin0 -> 8204 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/blackberry.otsbin0 -> 8150 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/default.otsbin0 -> 8018 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/diner.otsbin0 -> 8590 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/fall.otsbin0 -> 8077 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/glacier.otsbin0 -> 8185 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/green_grapes.otsbin0 -> 8055 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/jeans.otsbin0 -> 8059 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/marine.otsbin0 -> 7941 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/millennium.otsbin0 -> 8189 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/nature.otsbin0 -> 8110 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/neon.otsbin0 -> 8421 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/night.otsbin0 -> 8201 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/nostalgic.otsbin0 -> 8260 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/pastell.otsbin0 -> 8160 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/pool.otsbin0 -> 8360 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/pumpkin.otsbin0 -> 8005 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/xos.otsbin0 -> 8072 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/black_white.otsbin0 -> 8202 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/blackberry.otsbin0 -> 7934 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/default.otsbin0 -> 7930 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/diner.otsbin0 -> 8423 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/fall.otsbin0 -> 7886 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/glacier.otsbin0 -> 8083 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/green_grapes.otsbin0 -> 7929 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/jeans.otsbin0 -> 7870 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/marine.otsbin0 -> 7784 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/millennium.otsbin0 -> 8035 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/nature.otsbin0 -> 8012 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/neon.otsbin0 -> 8276 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/night.otsbin0 -> 8088 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/nostalgic.otsbin0 -> 8248 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/pastell.otsbin0 -> 8002 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/pool.otsbin0 -> 8254 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/pumpkin.otsbin0 -> 7928 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/xos.otsbin0 -> 8069 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/black_white.otsbin0 -> 11666 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/blackberry.otsbin0 -> 12259 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/default.otsbin0 -> 11939 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/diner.otsbin0 -> 14377 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/fall.otsbin0 -> 12185 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/glacier.otsbin0 -> 12233 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/green_grapes.otsbin0 -> 11853 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/jeans.otsbin0 -> 12003 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/marine.otsbin0 -> 11705 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/millennium.otsbin0 -> 12044 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/nature.otsbin0 -> 12050 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/neon.otsbin0 -> 12676 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/night.otsbin0 -> 12630 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/nostalgic.otsbin0 -> 10732 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/pastell.otsbin0 -> 12021 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/pool.otsbin0 -> 12656 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/pumpkin.otsbin0 -> 12273 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/xos.otsbin0 -> 11616 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/black_white.otsbin0 -> 7968 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/blackberry.otsbin0 -> 7954 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/default.otsbin0 -> 7863 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/diner.otsbin0 -> 8408 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/fall.otsbin0 -> 7967 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/glacier.otsbin0 -> 7996 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/green_grapes.otsbin0 -> 7833 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/jeans.otsbin0 -> 7954 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/marine.otsbin0 -> 7842 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/millennium.otsbin0 -> 8072 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/nature.otsbin0 -> 7897 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/neon.otsbin0 -> 8121 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/night.otsbin0 -> 7969 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/nostalgic.otsbin0 -> 8142 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/pastell.otsbin0 -> 8022 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/pool.otsbin0 -> 8136 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/pumpkin.otsbin0 -> 7893 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/xos.otsbin0 -> 8049 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/black_white.otsbin0 -> 9996 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/blackberry.otsbin0 -> 10256 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/default.otsbin0 -> 10095 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/diner.otsbin0 -> 12306 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/fall.otsbin0 -> 9530 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/glacier.otsbin0 -> 10259 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/green_grapes.otsbin0 -> 9841 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/jeans.otsbin0 -> 10116 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/marine.otsbin0 -> 9467 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/millennium.otsbin0 -> 10014 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/nature.otsbin0 -> 9847 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/neon.otsbin0 -> 10740 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/night.otsbin0 -> 10616 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/nostalgic.otsbin0 -> 9949 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/pastell.otsbin0 -> 10129 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/pool.otsbin0 -> 10620 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/pumpkin.otsbin0 -> 9868 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/xos.otsbin0 -> 9391 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/black_white.otsbin0 -> 8106 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/blackberry.otsbin0 -> 7696 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/default.otsbin0 -> 7921 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/diner.otsbin0 -> 8626 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/fall.otsbin0 -> 7961 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/glacier.otsbin0 -> 8181 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/green_grapes.otsbin0 -> 7611 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/jeans.otsbin0 -> 8080 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/marine.otsbin0 -> 7957 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/millennium.otsbin0 -> 7773 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/nature.otsbin0 -> 7684 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/neon.otsbin0 -> 8290 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/night.otsbin0 -> 8119 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/nostalgic.otsbin0 -> 8194 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/pastell.otsbin0 -> 7801 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/pool.otsbin0 -> 8325 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/pumpkin.otsbin0 -> 7655 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/xos.otsbin0 -> 8213 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/black_white.otsbin0 -> 8483 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/blackberry.otsbin0 -> 8308 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/default.otsbin0 -> 8266 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/diner.otsbin0 -> 8655 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/fall.otsbin0 -> 8310 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/glacier.otsbin0 -> 8458 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/green_grapes.otsbin0 -> 8159 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/jeans.otsbin0 -> 8414 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/marine.otsbin0 -> 8160 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/millennium.otsbin0 -> 8388 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/nature.otsbin0 -> 8213 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/neon.otsbin0 -> 8521 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/night.otsbin0 -> 8455 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/nostalgic.otsbin0 -> 8591 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/pastell.otsbin0 -> 8443 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/pool.otsbin0 -> 8579 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/pumpkin.otsbin0 -> 8186 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/xos.otsbin0 -> 8453 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/black_white.otsbin0 -> 11108 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/blackberry.otsbin0 -> 11416 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/default.otsbin0 -> 11153 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/diner.otsbin0 -> 12436 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/fall.otsbin0 -> 11223 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/glacier.otsbin0 -> 11499 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/green_grapes.otsbin0 -> 10882 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/jeans.otsbin0 -> 10985 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/marine.otsbin0 -> 11056 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/millennium.otsbin0 -> 11279 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/nature.otsbin0 -> 11016 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/neon.otsbin0 -> 11886 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/night.otsbin0 -> 11749 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/nostalgic.otsbin0 -> 11487 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/pastell.otsbin0 -> 10891 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/pool.otsbin0 -> 11706 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/pumpkin.otsbin0 -> 10942 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/xos.otsbin0 -> 10931 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/black_white.otsbin0 -> 8461 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/blackberry.otsbin0 -> 8361 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/default.otsbin0 -> 8219 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/diner.otsbin0 -> 8731 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/fall.otsbin0 -> 8256 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/glacier.otsbin0 -> 8409 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/green_grapes.otsbin0 -> 8235 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/jeans.otsbin0 -> 8319 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/marine.otsbin0 -> 8135 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/millennium.otsbin0 -> 8384 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/nature.otsbin0 -> 8263 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/neon.otsbin0 -> 8508 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/night.otsbin0 -> 8411 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/nostalgic.otsbin0 -> 8552 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/pastell.otsbin0 -> 8381 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/pool.otsbin0 -> 8523 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/pumpkin.otsbin0 -> 8258 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/xos.otsbin0 -> 8342 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/makefile.mk45
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/black_white.otsbin0 -> 7867 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/blackberry.otsbin0 -> 7814 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/default.otsbin0 -> 7766 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/diner.otsbin0 -> 8187 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/fall.otsbin0 -> 7714 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/glacier.otsbin0 -> 7902 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/green_grapes.otsbin0 -> 7711 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/jeans.otsbin0 -> 7750 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/marine.otsbin0 -> 7605 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/millennium.otsbin0 -> 7878 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/nature.otsbin0 -> 7777 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/neon.otsbin0 -> 8000 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/night.otsbin0 -> 7894 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/nostalgic.otsbin0 -> 7960 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/pastell.otsbin0 -> 7890 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/pool.otsbin0 -> 8118 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/pumpkin.otsbin0 -> 7766 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/xos.otsbin0 -> 7874 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/black_white.otsbin0 -> 8198 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/blackberry.otsbin0 -> 8017 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/default.otsbin0 -> 7908 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/diner.otsbin0 -> 8561 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/fall.otsbin0 -> 7908 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/glacier.otsbin0 -> 8021 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/green_grapes.otsbin0 -> 7886 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/jeans.otsbin0 -> 7853 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/marine.otsbin0 -> 7787 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/millennium.otsbin0 -> 7996 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/nature.otsbin0 -> 7895 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/neon.otsbin0 -> 8152 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/night.otsbin0 -> 8025 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/nostalgic.otsbin0 -> 8332 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/pastell.otsbin0 -> 7997 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/pool.otsbin0 -> 8371 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/pumpkin.otsbin0 -> 7920 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/xos.otsbin0 -> 8040 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/black_white.otsbin0 -> 8261 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/blackberry.otsbin0 -> 8243 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/default.otsbin0 -> 8137 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/diner.otsbin0 -> 8774 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/fall.otsbin0 -> 8213 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/glacier.otsbin0 -> 8299 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/green_grapes.otsbin0 -> 8153 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/jeans.otsbin0 -> 8195 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/marine.otsbin0 -> 8123 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/millennium.otsbin0 -> 8395 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/nature.otsbin0 -> 8223 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/neon.otsbin0 -> 8479 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/night.otsbin0 -> 8315 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/nostalgic.otsbin0 -> 8391 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/pastell.otsbin0 -> 8329 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/pool.otsbin0 -> 8446 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/pumpkin.otsbin0 -> 8203 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/xos.otsbin0 -> 8378 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/black_white.otsbin0 -> 8017 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/blackberry.otsbin0 -> 7912 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/default.otsbin0 -> 7842 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/diner.otsbin0 -> 8344 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/fall.otsbin0 -> 8027 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/glacier.otsbin0 -> 8004 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/green_grapes.otsbin0 -> 7845 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/jeans.otsbin0 -> 7885 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/marine.otsbin0 -> 7873 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/millennium.otsbin0 -> 8109 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/nature.otsbin0 -> 7910 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/neon.otsbin0 -> 8310 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/night.otsbin0 -> 8013 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/nostalgic.otsbin0 -> 8078 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/pastell.otsbin0 -> 7981 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/pool.otsbin0 -> 8203 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/pumpkin.otsbin0 -> 7929 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/xos.otsbin0 -> 8086 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/black_white.otsbin0 -> 8177 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/blackberry.otsbin0 -> 8031 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/default.otsbin0 -> 7923 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/diner.otsbin0 -> 8515 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/fall.otsbin0 -> 8165 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/glacier.otsbin0 -> 8063 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/green_grapes.otsbin0 -> 7979 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/jeans.otsbin0 -> 8076 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/marine.otsbin0 -> 8054 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/millennium.otsbin0 -> 8210 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/nature.otsbin0 -> 8006 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/neon.otsbin0 -> 8379 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/night.otsbin0 -> 8075 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/nostalgic.otsbin0 -> 8220 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/pastell.otsbin0 -> 8108 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/pool.otsbin0 -> 8229 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/pumpkin.otsbin0 -> 7929 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/xos.otsbin0 -> 8138 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/black_white.otsbin0 -> 9208 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/blackberry.otsbin0 -> 9339 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/default.otsbin0 -> 9055 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/diner.otsbin0 -> 11420 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/fall.otsbin0 -> 8635 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/glacier.otsbin0 -> 9298 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/green_grapes.otsbin0 -> 9177 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/jeans.otsbin0 -> 9119 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/marine.otsbin0 -> 8554 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/millennium.otsbin0 -> 9270 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/nature.otsbin0 -> 9275 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/neon.otsbin0 -> 9533 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/night.otsbin0 -> 9599 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/nostalgic.otsbin0 -> 9123 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/pastell.otsbin0 -> 9180 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/pool.otsbin0 -> 9570 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/pumpkin.otsbin0 -> 9264 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/xos.otsbin0 -> 8795 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/black_white.otsbin0 -> 8644 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/blackberry.otsbin0 -> 8499 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/default.otsbin0 -> 8507 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/diner.otsbin0 -> 8906 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/fall.otsbin0 -> 8566 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/glacier.otsbin0 -> 8590 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/green_grapes.otsbin0 -> 8372 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/jeans.otsbin0 -> 8391 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/marine.otsbin0 -> 8497 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/millennium.otsbin0 -> 8512 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/nature.otsbin0 -> 8433 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/neon.otsbin0 -> 8841 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/night.otsbin0 -> 8615 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/nostalgic.otsbin0 -> 8695 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/pastell.otsbin0 -> 8581 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/pool.otsbin0 -> 8802 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/pumpkin.otsbin0 -> 8388 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/xos.otsbin0 -> 8685 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/black_white.otsbin0 -> 8182 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/blackberry.otsbin0 -> 8199 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/default.otsbin0 -> 8059 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/diner.otsbin0 -> 8661 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/fall.otsbin0 -> 8010 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/glacier.otsbin0 -> 8237 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/green_grapes.otsbin0 -> 8070 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/jeans.otsbin0 -> 8097 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/marine.otsbin0 -> 7950 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/millennium.otsbin0 -> 8237 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/nature.otsbin0 -> 8096 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/neon.otsbin0 -> 8442 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/night.otsbin0 -> 8264 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/nostalgic.otsbin0 -> 8210 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/pastell.otsbin0 -> 8200 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/pool.otsbin0 -> 8419 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/pumpkin.otsbin0 -> 8109 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/xos.otsbin0 -> 8237 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/black_white.otsbin0 -> 11371 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/blackberry.otsbin0 -> 11347 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/default.otsbin0 -> 11174 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/diner.otsbin0 -> 14551 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/fall.otsbin0 -> 10880 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/glacier.otsbin0 -> 11410 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/green_grapes.otsbin0 -> 11477 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/jeans.otsbin0 -> 11891 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/marine.otsbin0 -> 10849 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/millennium.otsbin0 -> 10892 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/nature.otsbin0 -> 11306 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/neon.otsbin0 -> 11900 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/night.otsbin0 -> 12036 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/nostalgic.otsbin0 -> 10889 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/pastell.otsbin0 -> 11216 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/pool.otsbin0 -> 11498 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/pumpkin.otsbin0 -> 11236 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/xos.otsbin0 -> 10864 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/black_white.otsbin0 -> 8351 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/blackberry.otsbin0 -> 8199 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/default.otsbin0 -> 8050 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/diner.otsbin0 -> 8596 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/fall.otsbin0 -> 8099 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/glacier.otsbin0 -> 8258 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/green_grapes.otsbin0 -> 8065 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/jeans.otsbin0 -> 8198 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/marine.otsbin0 -> 7968 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/millennium.otsbin0 -> 8219 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/nature.otsbin0 -> 8160 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/neon.otsbin0 -> 8383 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/night.otsbin0 -> 8271 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/nostalgic.otsbin0 -> 8336 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/pastell.otsbin0 -> 8221 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/pool.otsbin0 -> 8360 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/pumpkin.otsbin0 -> 8141 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/xos.otsbin0 -> 8201 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/black_white.otsbin0 -> 8311 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/blackberry.otsbin0 -> 8109 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/default.otsbin0 -> 8078 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/diner.otsbin0 -> 8616 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/fall.otsbin0 -> 8096 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/glacier.otsbin0 -> 8234 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/green_grapes.otsbin0 -> 7988 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/jeans.otsbin0 -> 8148 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/marine.otsbin0 -> 7998 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/millennium.otsbin0 -> 8204 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/nature.otsbin0 -> 8097 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/neon.otsbin0 -> 8301 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/night.otsbin0 -> 8199 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/nostalgic.otsbin0 -> 8288 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/pastell.otsbin0 -> 8190 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/pool.otsbin0 -> 8302 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/pumpkin.otsbin0 -> 8026 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/xos.otsbin0 -> 8148 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-album.stwbin0 -> 12433 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-bilingual.stwbin0 -> 9428 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-chapters.stwbin0 -> 11164 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-empty.stwbin0 -> 7796 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-fixonecol.stwbin0 -> 10541 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-fixtwocol.stwbin0 -> 11025 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-formcontact.stwbin0 -> 8553 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-formcustomer.stwbin0 -> 8680 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-formfix.stwbin0 -> 8747 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-formvar.stwbin0 -> 8860 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-list.stwbin0 -> 12060 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-onepic.stwbin0 -> 13677 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-standard.stwbin0 -> 9223 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/cnt-twotitles.stwbin0 -> 10889 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-banana.stwbin0 -> 9588 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-blkjeans.stwbin0 -> 13366 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-blue.stwbin0 -> 9525 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-blueblock.stwbin0 -> 14050 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-bluejeans.stwbin0 -> 14856 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-fieryred.stwbin0 -> 13971 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-hightech.stwbin0 -> 15868 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-mint.stwbin0 -> 12165 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-music.stwbin0 -> 11264 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-nostalg.stwbin0 -> 9609 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-orange.stwbin0 -> 9798 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-petrol.stwbin0 -> 9726 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-seventies.stwbin0 -> 12802 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-standard.stwbin0 -> 13107 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-strwbryice.stwbin0 -> 12415 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-sun.stwbin0 -> 9615 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-tracks.stwbin0 -> 11798 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-turquoise.stwbin0 -> 9811 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/bg/stl-wetblue.stwbin0 -> 13994 bytes
-rw-r--r--extras/source/templates/wizard/web/lang/delzip1
-rw-r--r--extras/source/templates/wizard/web/lang/makefile.mk46
-rw-r--r--extras/source/truetype/symbol/OpenSymbol.sfd107080
-rw-r--r--extras/source/truetype/symbol/opens___.ttfbin0 -> 206612 bytes
-rw-r--r--extras/source/wordbook/delzip2
-rw-r--r--extras/source/wordbook/lang/bg/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/cs/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/da/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/de/soffice.dicbin0 -> 1412 bytes
-rw-r--r--extras/source/wordbook/lang/delzip1
-rw-r--r--extras/source/wordbook/lang/en-GB/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/en-US/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/es/soffice.dicbin0 -> 819 bytes
-rwxr-xr-xextras/source/wordbook/lang/eu/soffice.dicbin0 -> 786 bytes
-rw-r--r--extras/source/wordbook/lang/fr/soffice.dicbin0 -> 819 bytes
-rwxr-xr-xextras/source/wordbook/lang/hu/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/it/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/makefile.mk47
-rw-r--r--extras/source/wordbook/lang/nl/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/pl/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/pt-BR/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/pt/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/ru/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/sk/soffice.dicbin0 -> 819 bytes
-rw-r--r--extras/source/wordbook/lang/sl/soffice.dicbin0 -> 1114 bytes
-rw-r--r--extras/source/wordbook/lang/sv/soffice.dicbin0 -> 810 bytes
-rw-r--r--extras/source/wordbook/makefile.mk57
-rw-r--r--extras/source/wordbook/oracle.dic626
-rw-r--r--extras/source/wordbook/standard.dic4
-rw-r--r--extras/source/wordbook/technical.dic215
-rw-r--r--extras/unx/source/bitmaps/delzip1
-rw-r--r--extras/unx/source/bitmaps/makefile.mk47
-rw-r--r--extras/unx/source/bitmaps/psetup.xpm31
-rw-r--r--extras/unx/source/bitmaps/psetupl.xpm49
-rw-r--r--extras/unx/source/fonts/fonts.dir2
-rw-r--r--extras/unx/source/kde/applnk/.directory5
-rw-r--r--extras/unx/source/kde/applnk/SPAdmin.kdelnk23
-rw-r--r--extras/unx/source/kde/applnk/Setup.kdelnk14
-rw-r--r--extras/unx/source/kde/applnk/StarOffice.kdelnk14
-rw-r--r--extras/unx/source/kde/applnk/delzip1
-rw-r--r--extras/unx/source/kde/applnk/makefile.mk47
-rw-r--r--extras/unx/source/kde/icons/delzip1
-rw-r--r--extras/unx/source/kde/icons/htm.xpm52
-rw-r--r--extras/unx/source/kde/icons/html.xpm52
-rw-r--r--extras/unx/source/kde/icons/makefile.mk47
-rw-r--r--extras/unx/source/kde/icons/mini/delzip1
-rw-r--r--extras/unx/source/kde/icons/mini/htm.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/html.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/makefile.mk47
-rw-r--r--extras/unx/source/kde/icons/mini/psetup.xpm31
-rw-r--r--extras/unx/source/kde/icons/mini/sch.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/sda.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/sdc.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/sdd.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/sdf.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/sds.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/sdw.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/set52.xpm40
-rw-r--r--extras/unx/source/kde/icons/mini/sgl.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/smf.xpm36
-rw-r--r--extras/unx/source/kde/icons/mini/so52.xpm40
-rw-r--r--extras/unx/source/kde/icons/psetup.xpm49
-rw-r--r--extras/unx/source/kde/icons/sch.xpm52
-rw-r--r--extras/unx/source/kde/icons/sda.xpm52
-rw-r--r--extras/unx/source/kde/icons/sdc.xpm52
-rw-r--r--extras/unx/source/kde/icons/sdd.xpm52
-rw-r--r--extras/unx/source/kde/icons/sdf.xpm52
-rw-r--r--extras/unx/source/kde/icons/sds.xpm52
-rw-r--r--extras/unx/source/kde/icons/sdw.xpm52
-rw-r--r--extras/unx/source/kde/icons/set52.xpm52
-rw-r--r--extras/unx/source/kde/icons/sgl.xpm52
-rw-r--r--extras/unx/source/kde/icons/smf.xpm52
-rw-r--r--extras/unx/source/kde/icons/so52.xpm52
-rw-r--r--extras/unx/source/kde/mimelnk/application/delzip1
-rw-r--r--extras/unx/source/kde/mimelnk/application/makefile.mk47
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-scalc.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-sda.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-sdf.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-sdraw.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-sds.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-sgl.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-smf.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/application/x-swriter.kdelnk21
-rw-r--r--extras/unx/source/kde/mimelnk/text/delzip1
-rw-r--r--extras/unx/source/kde/mimelnk/text/html.kdelnk10
-rw-r--r--extras/unx/source/kde/mimelnk/text/makefile.mk49
-rw-r--r--extras/util/target.pmk259
-rwxr-xr-xfetch_tarballs.sh165
-rw-r--r--filter/inc/filter.hrc66
-rw-r--r--filter/inc/filter/msfilter/countryid.hxx320
-rw-r--r--filter/inc/filter/msfilter/escherex.hxx1635
-rw-r--r--filter/inc/filter/msfilter/mscodec.hxx342
-rw-r--r--filter/inc/filter/msfilter/msdffimp.hxx862
-rw-r--r--filter/inc/filter/msfilter/msfilterdllapi.h44
-rw-r--r--filter/inc/filter/msfilter/msfiltertracer.hxx99
-rw-r--r--filter/inc/filter/msfilter/msocximex.hxx1421
-rw-r--r--filter/inc/filter/msfilter/msoleexp.hxx62
-rw-r--r--filter/inc/filter/msfilter/mstoolbar.hxx337
-rw-r--r--filter/inc/filter/msfilter/msvbahelper.hxx59
-rw-r--r--filter/inc/filter/msfilter/svdfppt.hxx1418
-rw-r--r--filter/inc/filter/msfilter/svxmsbas.hxx117
-rw-r--r--filter/inc/makefile.mk47
-rw-r--r--filter/inc/pch/precompiled_filter.cxx31
-rw-r--r--filter/inc/pch/precompiled_filter.hxx34
-rw-r--r--filter/prj/build.lst44
-rw-r--r--filter/prj/d.lst59
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/Helper.java443
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/TypeDetection.java559
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/TypeDetection.props13
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/files.csv117
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/makefile.mk118
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/preselectedFilter.csv6
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/preselectedType.csv6
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/serviceName.csv6
-rw-r--r--filter/qa/complex/filter/misc/FinalizedMandatoryTest.java307
-rw-r--r--filter/qa/complex/filter/misc/TypeDetection6FileFormat.java105
-rwxr-xr-xfilter/qa/complex/filter/misc/TypeDetection6FileFormat.xcu25
-rwxr-xr-xfilter/qa/complex/filter/misc/makefile.mk97
-rw-r--r--filter/source/config/cache/basecontainer.cxx641
-rw-r--r--filter/source/config/cache/basecontainer.hxx326
-rw-r--r--filter/source/config/cache/cacheitem.cxx444
-rw-r--r--filter/source/config/cache/cacheitem.hxx264
-rw-r--r--filter/source/config/cache/cacheupdatelistener.cxx249
-rw-r--r--filter/source/config/cache/cacheupdatelistener.hxx150
-rw-r--r--filter/source/config/cache/configflush.cxx171
-rw-r--r--filter/source/config/cache/configflush.hxx131
-rw-r--r--filter/source/config/cache/constant.hxx222
-rw-r--r--filter/source/config/cache/contenthandlerfactory.cxx204
-rw-r--r--filter/source/config/cache/contenthandlerfactory.hxx151
-rw-r--r--filter/source/config/cache/filtercache.cxx2543
-rw-r--r--filter/source/config/cache/filtercache.hxx1069
-rw-r--r--filter/source/config/cache/filterfactory.cxx727
-rw-r--r--filter/source/config/cache/filterfactory.hxx215
-rw-r--r--filter/source/config/cache/frameloaderfactory.cxx201
-rw-r--r--filter/source/config/cache/frameloaderfactory.hxx151
-rw-r--r--filter/source/config/cache/lateinitlistener.cxx139
-rw-r--r--filter/source/config/cache/lateinitlistener.hxx128
-rw-r--r--filter/source/config/cache/lateinitthread.cxx83
-rw-r--r--filter/source/config/cache/lateinitthread.hxx92
-rw-r--r--filter/source/config/cache/macros.hxx135
-rw-r--r--filter/source/config/cache/makefile.mk79
-rw-r--r--filter/source/config/cache/querytokenizer.cxx102
-rw-r--r--filter/source/config/cache/querytokenizer.hxx118
-rw-r--r--filter/source/config/cache/registration.cxx150
-rw-r--r--filter/source/config/cache/registration.hxx217
-rw-r--r--filter/source/config/cache/typedetection.cxx1258
-rw-r--r--filter/source/config/cache/typedetection.hxx462
-rw-r--r--filter/source/config/cache/versions.hxx39
-rw-r--r--filter/source/config/fragments/contenthandlers/com_sun_star_comp_framework_SoundHandler.xcu3
-rw-r--r--filter/source/config/fragments/contenthandlers/com_sun_star_comp_framework_oxt_handler.xcu3
-rw-r--r--filter/source/config/fragments/delzip0
-rw-r--r--filter/source/config/fragments/fcfg_base.mk51
-rw-r--r--filter/source/config/fragments/fcfg_calc.mk114
-rw-r--r--filter/source/config/fragments/fcfg_calc_bf.mk59
-rw-r--r--filter/source/config/fragments/fcfg_chart.mk48
-rw-r--r--filter/source/config/fragments/fcfg_chart_bf.mk47
-rw-r--r--filter/source/config/fragments/fcfg_database.mk45
-rw-r--r--filter/source/config/fragments/fcfg_draw.mk59
-rw-r--r--filter/source/config/fragments/fcfg_draw_bf.mk51
-rw-r--r--filter/source/config/fragments/fcfg_drawgraphics.mk118
-rw-r--r--filter/source/config/fragments/fcfg_global.mk59
-rw-r--r--filter/source/config/fragments/fcfg_global_bf.mk55
-rw-r--r--filter/source/config/fragments/fcfg_impress.mk86
-rw-r--r--filter/source/config/fragments/fcfg_impress_bf.mk66
-rw-r--r--filter/source/config/fragments/fcfg_impressgraphics.mk83
-rw-r--r--filter/source/config/fragments/fcfg_internalgraphics.mk110
-rw-r--r--filter/source/config/fragments/fcfg_math.mk55
-rw-r--r--filter/source/config/fragments/fcfg_math_bf.mk50
-rw-r--r--filter/source/config/fragments/fcfg_palm.mk44
-rw-r--r--filter/source/config/fragments/fcfg_pocketexcel.mk44
-rw-r--r--filter/source/config/fragments/fcfg_pocketword.mk44
-rw-r--r--filter/source/config/fragments/fcfg_w4w.mk260
-rw-r--r--filter/source/config/fragments/fcfg_web.mk65
-rw-r--r--filter/source/config/fragments/fcfg_web_bf.mk54
-rw-r--r--filter/source/config/fragments/fcfg_writer.mk116
-rw-r--r--filter/source/config/fragments/fcfg_writer_bf.mk63
-rw-r--r--filter/source/config/fragments/fcfg_xslt.mk63
-rw-r--r--filter/source/config/fragments/filters/Ami_Pro_1_x_3_1__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/AportisDoc_Palm_DB.xcu13
-rw-r--r--filter/source/config/fragments/filters/BMP___MS_Windows.xcu13
-rw-r--r--filter/source/config/fragments/filters/CGM___Computer_Graphics_Metafile.xcu13
-rw-r--r--filter/source/config/fragments/filters/CTOS_DEF__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Claris_Works__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DCA_FFT_Final_Form_Text__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DCA_Revisable_Form_Text__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DCA_with_Display_Write_5__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DEC_DX__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DEC_WPS_PLUS__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DIF.xcu13
-rw-r--r--filter/source/config/fragments/filters/DXF___AutoCAD_Interchange.xcu13
-rw-r--r--filter/source/config/fragments/filters/DataGeneral_CEO_Write__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DisplayWrite_2_0_4_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DisplayWrite_5_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/DocBook_File.xcu13
-rw-r--r--filter/source/config/fragments/filters/EBCDIC__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/EMF___MS_Windows_Metafile.xcu13
-rw-r--r--filter/source/config/fragments/filters/EPS___Encapsulated_PostScript.xcu13
-rw-r--r--filter/source/config/fragments/filters/Enable__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Frame_Maker_MIF_3_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Frame_Maker_MIF_4_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Frame_Maker_MIF_5_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Frame_Work_III__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Frame_Work_IV___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/GIF___Graphics_Interchange.xcu13
-rw-r--r--filter/source/config/fragments/filters/HP_AdvanceWrite_Plus__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/HTML.xcu10
-rw-r--r--filter/source/config/fragments/filters/HTML_MasterDoc.xcu13
-rw-r--r--filter/source/config/fragments/filters/HTML_MasterDoc_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/HTML__StarCalc_.xcu10
-rw-r--r--filter/source/config/fragments/filters/HTML__StarCalc__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/HTML__StarWriter_.xcu10
-rw-r--r--filter/source/config/fragments/filters/HTML__StarWriter__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/HTML_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/ICL_Office_Power_6__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/ICL_Office_Power_7__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Interleaf_5___6__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Interleaf__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/JPG___JPEG.xcu13
-rw-r--r--filter/source/config/fragments/filters/Legacy_Winstar_onGO__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Lotus.xcu13
-rw-r--r--filter/source/config/fragments/filters/LotusWordPro.xcu13
-rw-r--r--filter/source/config/fragments/filters/Lotus_1_2_3_1_0__DOS___StarWriter_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Lotus_1_2_3_1_0__WIN___StarWriter_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Lotus_Manuscript__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MASS_11_Rel__8_0_8_3__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MASS_11_Rel__8_5_9_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MET___OS_2_Metafile.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_2003_XML.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_2003_XML_ui.xcu12
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_4_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_4_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_4_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_4_0__StarWriter_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_5_0_95.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_5_0_95_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_5_0_95_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_5_0__StarWriter_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_95.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_95_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_95_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_95__StarWriter_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_97.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_97_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Excel_97_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_MacWord_3_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_MacWord_4_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_MacWord_5_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_PowerPoint_97.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_PowerPoint_97_AutoPlay.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_PowerPoint_97_Vorlage.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_PowerPoint_97_Vorlage_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_WinWord_1_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_WinWord_2_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_WinWord_5.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_WinWord_6_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_2003_XML.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Word_2003_XML_ui.xcu12
-rw-r--r--filter/source/config/fragments/filters/MS_Word_2007_XML.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_2007_XML_Template.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_2007_XML_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_Word_2007_XML_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_Word_3_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_4_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_5_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_6_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_95.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_95_Vorlage.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Word_95_Vorlage_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_Word_97.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Word_97_Vorlage.xcu10
-rw-r--r--filter/source/config/fragments/filters/MS_Word_97_Vorlage_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/MS_Works.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Works_2_0_DOS__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Works_3_0_Win__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MS_Works_4_0_Mac__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Mac_Write_4_x_5_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Mac_Write_II__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Mac_Write_Pro__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MathML_XML__Math_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MathType_3_x.xcu13
-rw-r--r--filter/source/config/fragments/filters/MiniCalc__Palm_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MultiMate_3_3__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MultiMate_4__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MultiMate_Adv__3_6__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/MultiMate_Adv__II_3_7__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/NAVY_DIF__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/ODG_FlatXML.xcu13
-rw-r--r--filter/source/config/fragments/filters/ODP_FlatXML.xcu13
-rw-r--r--filter/source/config/fragments/filters/ODS_FlatXML.xcu13
-rw-r--r--filter/source/config/fragments/filters/ODT_FlatXML.xcu13
-rw-r--r--filter/source/config/fragments/filters/OOXML_Text.xcu14
-rw-r--r--filter/source/config/fragments/filters/OOXML_Text_Template.xcu14
-rw-r--r--filter/source/config/fragments/filters/OOXML_Text_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/OOXML_Text_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/OfficeWriter_4_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/OfficeWriter_5_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/OfficeWriter_6_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/PBM___Portable_Bitmap.xcu13
-rw-r--r--filter/source/config/fragments/filters/PCT___Mac_Pict.xcu13
-rw-r--r--filter/source/config/fragments/filters/PCX___Zsoft_Paintbrush.xcu13
-rw-r--r--filter/source/config/fragments/filters/PFS_First_Choice_1_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/PFS_First_Choice_2_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/PFS_First_Choice_3_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/PFS_Write__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/PGM___Portable_Graymap.xcu13
-rw-r--r--filter/source/config/fragments/filters/PNG___Portable_Network_Graphic.xcu13
-rw-r--r--filter/source/config/fragments/filters/PPM___Portable_Pixelmap.xcu13
-rw-r--r--filter/source/config/fragments/filters/PSD___Adobe_Photoshop.xcu13
-rw-r--r--filter/source/config/fragments/filters/Peach_Text__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/PocketWord_File.xcu13
-rw-r--r--filter/source/config/fragments/filters/Pocket_Excel.xcu13
-rw-r--r--filter/source/config/fragments/filters/Professional_Write_1_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Professional_Write_2_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Professional_Write_Plus__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/QPro.xcu13
-rw-r--r--filter/source/config/fragments/filters/Q_A_Write_1_0_3_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Q_A_Write_4_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/RAS___Sun_Rasterfile.xcu13
-rw-r--r--filter/source/config/fragments/filters/Rapid_File_1_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Rapid_File_1_2__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Rich_Text_Format.xcu13
-rw-r--r--filter/source/config/fragments/filters/Rich_Text_Format__StarCalc_.xcu13
-rw-r--r--filter/source/config/fragments/filters/SGF___StarOffice_Writer_SGF.xcu13
-rw-r--r--filter/source/config/fragments/filters/SGV___StarDraw_2_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/SVG___Scalable_Vector_Graphics.xcu13
-rw-r--r--filter/source/config/fragments/filters/SVM___StarView_Metafile.xcu13
-rw-r--r--filter/source/config/fragments/filters/SYLK.xcu13
-rw-r--r--filter/source/config/fragments/filters/Samna_Word_IV_IV_Plus__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarCalc_1_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarCalc_3_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarCalc_3_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarCalc_3_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarCalc_4_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarCalc_4_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarCalc_4_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarCalc_5_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarCalc_5_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarCalc_5_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarChart_3_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarChart_4_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarChart_5_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarDraw_3_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarDraw_3_0_Vorlage.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarDraw_3_0_Vorlage__StarImpress_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarDraw_3_0_Vorlage__StarImpress__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarDraw_3_0_Vorlage_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarDraw_3_0__StarImpress_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarDraw_5_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarDraw_5_0_Vorlage.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarDraw_5_0_Vorlage__StarImpress_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarDraw_5_0_Vorlage__StarImpress__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarDraw_5_0_Vorlage_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarDraw_5_0__StarImpress_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarImpress_4_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarImpress_4_0_Vorlage.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarImpress_4_0_Vorlage_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarImpress_5_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarImpress_5_0_Vorlage.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarImpress_5_0_Vorlage_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarImpress_5_0__packed_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarImpress_5_0__packed__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarMath_2_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarMath_3_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarMath_4_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarMath_5_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Base_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Base__ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Calc_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Calc__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Chart_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Chart__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Draw_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Draw__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Impress_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Impress__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Math_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Math__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Writer_.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarOffice_XML__Writer__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarWriter_1_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_2_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_3_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_3_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarWriter_3_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarWriter_3_0__StarWriter_GlobalDocument_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_3_0__StarWriter_Web_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_4_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_4_0_GlobalDocument.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarWriter_4_0_GlobalDocument_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarWriter_4_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarWriter_4_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarWriter_4_0__StarWriter_GlobalDocument_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_4_0__StarWriter_Web_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_5_0.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_5_0_GlobalDocument.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarWriter_5_0_GlobalDocument_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarWriter_5_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarWriter_5_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarWriter_5_0__StarWriter_GlobalDocument_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_5_0__StarWriter_Web_.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_DOS.xcu13
-rw-r--r--filter/source/config/fragments/filters/StarWriter_Web_4_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarWriter_Web_4_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/StarWriter_Web_5_0_Vorlage_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/StarWriter_Web_5_0_Vorlage_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/T602Document.xcu13
-rw-r--r--filter/source/config/fragments/filters/TGA___Truevision_TARGA.xcu13
-rw-r--r--filter/source/config/fragments/filters/TIF___Tag_Image_File.xcu13
-rw-r--r--filter/source/config/fragments/filters/Text.xcu10
-rw-r--r--filter/source/config/fragments/filters/Text__StarWriter_Web_.xcu10
-rw-r--r--filter/source/config/fragments/filters/Text__StarWriter_Web__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/Text___txt___csv__StarCalc_.xcu10
-rw-r--r--filter/source/config/fragments/filters/Text___txt___csv__StarCalc__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/Text__encoded_.xcu10
-rw-r--r--filter/source/config/fragments/filters/Text__encoded___StarWriter_GlobalDocument_.xcu10
-rw-r--r--filter/source/config/fragments/filters/Text__encoded___StarWriter_GlobalDocument__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/Text__encoded___StarWriter_Web_.xcu10
-rw-r--r--filter/source/config/fragments/filters/Text__encoded___StarWriter_Web__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/Text__encoded__ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/Text_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/Total_Word__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/UOF_presentation.xcu13
-rw-r--r--filter/source/config/fragments/filters/UOF_presentation_ui.xcu13
-rw-r--r--filter/source/config/fragments/filters/UOF_spreadsheet.xcu13
-rw-r--r--filter/source/config/fragments/filters/UOF_spreadsheet_ui.xcu13
-rw-r--r--filter/source/config/fragments/filters/UOF_text.xcu13
-rw-r--r--filter/source/config/fragments/filters/UOF_text_ui.xcu13
-rw-r--r--filter/source/config/fragments/filters/Uniplex_V7_V8__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Uniplex_onGO__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/VolksWriter_3_and_4__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/VolksWriter_Deluxe__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WITA__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WMF___MS_Windows_Metafile.xcu13
-rw-r--r--filter/source/config/fragments/filters/Wang_II_SWP__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Wang_PC__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Wang_WP_Plus__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Win_Write_3_x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WiziWord_3_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfectGraphics.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_4_1__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_4_2__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_5_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_5_1__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_6_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_6_1__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_Mac_1__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_Mac_2__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect_Mac_3__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect__Win__5_1_5_2__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect__Win__6_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect__Win__6_1__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordPerfect__Win__7_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_2000_Rel__3_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_2000_Rel__3_5__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_3_3x__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_3_45__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_4_0___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_5_0___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_5_5___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_6_0___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar_7_0___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WordStar__Win__1_x_2_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/WriteNow_3_0__Macintosh___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/Writing_Assistant__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XBM___X_Consortium.xcu13
-rw-r--r--filter/source/config/fragments/filters/XEROX_XIF_5_0__Illustrator___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XEROX_XIF_5_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XEROX_XIF_6_0__Color_Bitmap___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XEROX_XIF_6_0__Res_Graphic___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XHTML_Calc_File.xcu13
-rw-r--r--filter/source/config/fragments/filters/XHTML_Draw_File.xcu13
-rw-r--r--filter/source/config/fragments/filters/XHTML_Impress_File.xcu13
-rw-r--r--filter/source/config/fragments/filters/XHTML_Writer_File.xcu13
-rw-r--r--filter/source/config/fragments/filters/XPM.xcu13
-rw-r--r--filter/source/config/fragments/filters/XyWrite_III___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XyWrite_III____W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XyWrite_IV__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XyWrite_Sig___Win___W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XyWrite_Signature__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/XyWrite__Win__1_0__W4W_.xcu13
-rw-r--r--filter/source/config/fragments/filters/calc8.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc8_template.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc8_template_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/calc8_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/calc_HTML_WebQuery.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc_HTML_WebQuery_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/calc_MS_Excel_2007_Binary.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc_MS_Excel_2007_Binary_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc_MS_Excel_2007_XML_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc_MS_Excel_2007_XML_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/calc_MS_Excel_2007_XML_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/calc_OOXML.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc_OOXML_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc_OOXML_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/calc_OOXML_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/calc_StarOffice_XML_Calc_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/calc_StarOffice_XML_Calc_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/calc_pdf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/chart8.xcu10
-rw-r--r--filter/source/config/fragments/filters/chart8_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/dBase.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw8.xcu10
-rw-r--r--filter/source/config/fragments/filters/draw8_template.xcu10
-rw-r--r--filter/source/config/fragments/filters/draw8_template_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/draw8_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/draw_PCD_Photo_CD_Base.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_PCD_Photo_CD_Base16.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_PCD_Photo_CD_Base4.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_StarOffice_XML_Draw_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/draw_StarOffice_XML_Draw_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/draw_bmp_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_emf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_eps_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_flash_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_gif_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_html_Export.xcu10
-rw-r--r--filter/source/config/fragments/filters/draw_html_Export_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/draw_jpg_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_met_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_pbm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_pct_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_pdf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_pgm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_png_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_ppm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_ras_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_svg_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_svm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_tif_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_wmf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/draw_xpm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress8.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress8_draw.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress8_draw_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/impress8_template.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress8_template_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/impress8_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML_AutoPlay.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML_Template.xcu11
-rw-r--r--filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/impress_OOXML.xcu12
-rw-r--r--filter/source/config/fragments/filters/impress_OOXML_AutoPlay.xcu11
-rw-r--r--filter/source/config/fragments/filters/impress_OOXML_Template.xcu12
-rw-r--r--filter/source/config/fragments/filters/impress_OOXML_Template_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/impress_OOXML_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/impress_StarOffice_XML_Draw.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress_StarOffice_XML_Draw_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/impress_StarOffice_XML_Impress_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress_StarOffice_XML_Impress_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/impress_bmp_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_emf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_eps_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_flash_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_gif_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_html_Export.xcu10
-rw-r--r--filter/source/config/fragments/filters/impress_html_Export_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/impress_jpg_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_met_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_pbm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_pct_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_pdf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_pgm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_png_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_ppm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_ras_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_svg_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_svm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_tif_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_wmf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/impress_xpm_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/makefile.mk57
-rw-r--r--filter/source/config/fragments/filters/math8.xcu10
-rw-r--r--filter/source/config/fragments/filters/math8_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/math_pdf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/placeware_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/writer8.xcu10
-rw-r--r--filter/source/config/fragments/filters/writer8_template.xcu10
-rw-r--r--filter/source/config/fragments/filters/writer8_template_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/writer8_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/writer_MIZI_Hwp_97.xcu13
-rw-r--r--filter/source/config/fragments/filters/writer_StarOffice_XML_Writer_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/writer_StarOffice_XML_Writer_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/writer_globaldocument_StarOffice_XML_Writer.xcu10
-rw-r--r--filter/source/config/fragments/filters/writer_globaldocument_StarOffice_XML_Writer_GlobalDocument.xcu10
-rw-r--r--filter/source/config/fragments/filters/writer_globaldocument_StarOffice_XML_Writer_GlobalDocument_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/writer_globaldocument_StarOffice_XML_Writer_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/writer_globaldocument_pdf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/writer_pdf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/writer_web_HTML_help.xcu13
-rw-r--r--filter/source/config/fragments/filters/writer_web_StarOffice_XML_Writer.xcu10
-rw-r--r--filter/source/config/fragments/filters/writer_web_StarOffice_XML_Writer_Web_Template.xcu10
-rw-r--r--filter/source/config/fragments/filters/writer_web_StarOffice_XML_Writer_Web_Template_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/writer_web_StarOffice_XML_Writer_ui.xcu6
-rw-r--r--filter/source/config/fragments/filters/writer_web_pdf_Export.xcu13
-rw-r--r--filter/source/config/fragments/filters/writerglobal8.xcu10
-rw-r--r--filter/source/config/fragments/filters/writerglobal8_HTML.xcu13
-rw-r--r--filter/source/config/fragments/filters/writerglobal8_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/writerglobal8_writer.xcu10
-rw-r--r--filter/source/config/fragments/filters/writerglobal8_writer_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/writerweb8_writer.xcu10
-rw-r--r--filter/source/config/fragments/filters/writerweb8_writer_template.xcu10
-rw-r--r--filter/source/config/fragments/filters/writerweb8_writer_template_ui.xcu5
-rw-r--r--filter/source/config/fragments/filters/writerweb8_writer_ui.xcu5
-rw-r--r--filter/source/config/fragments/frameloaders/com_sun_star_comp_chart2_ChartFrameLoader.xcu3
-rw-r--r--filter/source/config/fragments/frameloaders/com_sun_star_frame_Bibliography.xcu3
-rw-r--r--filter/source/config/fragments/frameloaders/com_sun_star_sdb_ContentLoader.xcu3
-rw-r--r--filter/source/config/fragments/frameloaders/org_openoffice_comp_dbflt_DBContentLoader2.xcu3
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/bmp_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/bmp_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/dxf_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/emf_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/emf_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/eps_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/eps_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/gif_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/gif_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/jpg_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/jpg_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/met_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/met_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pbm_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pbm_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pcd_Import_Base.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pcd_Import_Base16.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pcd_Import_Base4.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pct_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pct_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pcx_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pgm_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/pgm_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/png_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/png_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/ppm_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/ppm_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/psd_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/ras_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/ras_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/sgf_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/sgv_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/svg_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/svg_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/svm_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/svm_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/tga_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/tif_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/tif_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/wmf_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/wmf_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/xbm_Import.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/xpm_Export.xcu10
-rw-r--r--filter/source/config/fragments/internalgraphicfilters/xpm_Import.xcu10
-rw-r--r--filter/source/config/fragments/langfilter.xsl37
-rw-r--r--filter/source/config/fragments/makefile.mk255
-rw-r--r--filter/source/config/fragments/packagedef.mk71
-rw-r--r--filter/source/config/fragments/types/MS_Excel_2007_Binary.xcu10
-rw-r--r--filter/source/config/fragments/types/MS_Excel_2007_XML.xcu10
-rw-r--r--filter/source/config/fragments/types/MS_Excel_2007_XML_Template.xcu10
-rw-r--r--filter/source/config/fragments/types/MS_PowerPoint_2007_XML.xcu10
-rw-r--r--filter/source/config/fragments/types/MS_PowerPoint_2007_XML_AutoPlay.xcu10
-rw-r--r--filter/source/config/fragments/types/MS_PowerPoint_2007_XML_Template.xcu10
-rw-r--r--filter/source/config/fragments/types/StarBase.xcu12
-rw-r--r--filter/source/config/fragments/types/Unified_Office_Format_presentation.xcu12
-rw-r--r--filter/source/config/fragments/types/Unified_Office_Format_spreadsheet.xcu12
-rw-r--r--filter/source/config/fragments/types/Unified_Office_Format_text.xcu12
-rw-r--r--filter/source/config/fragments/types/XHTML_File.xcu12
-rw-r--r--filter/source/config/fragments/types/bmp_MS_Windows.xcu12
-rw-r--r--filter/source/config/fragments/types/calc8.xcu12
-rw-r--r--filter/source/config/fragments/types/calc8_template.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_DIF.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_Lotus.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_2003_XML.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_40.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_40_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_5095.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_5095_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_95.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_95_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_97.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MS_Excel_97_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_MiniCalc_PalmDB_File.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_ODS_FlatXML.xcu14
-rw-r--r--filter/source/config/fragments/types/calc_OOXML.xcu10
-rw-r--r--filter/source/config/fragments/types/calc_OOXML_Template.xcu10
-rw-r--r--filter/source/config/fragments/types/calc_Pocket_Excel_File.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_QPro.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_SYLK.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarCalc_10.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarCalc_30.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarCalc_30_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarCalc_40.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarCalc_40_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarCalc_50.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarCalc_50_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarOffice_XML_Calc.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_StarOffice_XML_Calc_Template.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_Text_txt_csv_StarCalc.xcu12
-rw-r--r--filter/source/config/fragments/types/calc_dBase.xcu12
-rw-r--r--filter/source/config/fragments/types/chart8.xcu12
-rw-r--r--filter/source/config/fragments/types/chart_StarChart_30.xcu12
-rw-r--r--filter/source/config/fragments/types/chart_StarChart_40.xcu12
-rw-r--r--filter/source/config/fragments/types/chart_StarChart_50.xcu12
-rw-r--r--filter/source/config/fragments/types/chart_StarOffice_XML_Chart.xcu12
-rw-r--r--filter/source/config/fragments/types/component_Bibliography.xcu12
-rw-r--r--filter/source/config/fragments/types/component_DB.xcu12
-rw-r--r--filter/source/config/fragments/types/draw8.xcu12
-rw-r--r--filter/source/config/fragments/types/draw8_template.xcu12
-rw-r--r--filter/source/config/fragments/types/draw_ODG_FlatXML.xcu14
-rw-r--r--filter/source/config/fragments/types/draw_StarDraw_30.xcu12
-rw-r--r--filter/source/config/fragments/types/draw_StarDraw_30_Vorlage.xcu12
-rw-r--r--filter/source/config/fragments/types/draw_StarDraw_50.xcu12
-rw-r--r--filter/source/config/fragments/types/draw_StarDraw_50_Vorlage.xcu12
-rw-r--r--filter/source/config/fragments/types/draw_StarOffice_XML_Draw.xcu12
-rw-r--r--filter/source/config/fragments/types/draw_StarOffice_XML_Draw_Template.xcu12
-rw-r--r--filter/source/config/fragments/types/draw_WordPerfect_Graphics.xcu12
-rw-r--r--filter/source/config/fragments/types/dxf_AutoCAD_Interchange.xcu12
-rw-r--r--filter/source/config/fragments/types/emf_MS_Windows_Metafile.xcu12
-rw-r--r--filter/source/config/fragments/types/eps_Encapsulated_PostScript.xcu12
-rw-r--r--filter/source/config/fragments/types/gif_Graphics_Interchange.xcu12
-rw-r--r--filter/source/config/fragments/types/graphic_HTML.xcu12
-rw-r--r--filter/source/config/fragments/types/graphic_SWF.xcu12
-rw-r--r--filter/source/config/fragments/types/impress8.xcu12
-rw-r--r--filter/source/config/fragments/types/impress8_template.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_CGM_Computer_Graphics_Metafile.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_MS_PowerPoint_97.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_MS_PowerPoint_97_AutoPlay.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_MS_PowerPoint_97_Vorlage.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_ODP_FlatXML.xcu14
-rw-r--r--filter/source/config/fragments/types/impress_OOXML_Presentation.xcu10
-rw-r--r--filter/source/config/fragments/types/impress_OOXML_Presentation_AutoPlay.xcu10
-rw-r--r--filter/source/config/fragments/types/impress_OOXML_Presentation_Template.xcu10
-rw-r--r--filter/source/config/fragments/types/impress_StarImpress_40.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_StarImpress_40_Vorlage.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_StarImpress_50.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_StarImpress_50_Vorlage.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_StarImpress_50_packed.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_StarOffice_XML_Impress.xcu12
-rw-r--r--filter/source/config/fragments/types/impress_StarOffice_XML_Impress_Template.xcu12
-rw-r--r--filter/source/config/fragments/types/jpg_JPEG.xcu12
-rw-r--r--filter/source/config/fragments/types/makefile.mk54
-rw-r--r--filter/source/config/fragments/types/math8.xcu12
-rw-r--r--filter/source/config/fragments/types/math_MathML_XML_Math.xcu12
-rw-r--r--filter/source/config/fragments/types/math_MathType_3x.xcu12
-rw-r--r--filter/source/config/fragments/types/math_StarMath_20.xcu12
-rw-r--r--filter/source/config/fragments/types/math_StarMath_30.xcu12
-rw-r--r--filter/source/config/fragments/types/math_StarMath_40.xcu12
-rw-r--r--filter/source/config/fragments/types/math_StarMath_50.xcu12
-rw-r--r--filter/source/config/fragments/types/math_StarOffice_XML_Math.xcu12
-rw-r--r--filter/source/config/fragments/types/met_OS2_Metafile.xcu12
-rw-r--r--filter/source/config/fragments/types/oxt_OpenOffice_Extension.xcu12
-rw-r--r--filter/source/config/fragments/types/pbm_Portable_Bitmap.xcu12
-rw-r--r--filter/source/config/fragments/types/pcd_Photo_CD_Base.xcu12
-rw-r--r--filter/source/config/fragments/types/pcd_Photo_CD_Base16.xcu12
-rw-r--r--filter/source/config/fragments/types/pcd_Photo_CD_Base4.xcu12
-rw-r--r--filter/source/config/fragments/types/pct_Mac_Pict.xcu12
-rw-r--r--filter/source/config/fragments/types/pcx_Zsoft_Paintbrush.xcu12
-rw-r--r--filter/source/config/fragments/types/pdf_Portable_Document_Format.xcu12
-rw-r--r--filter/source/config/fragments/types/pgm_Portable_Graymap.xcu12
-rw-r--r--filter/source/config/fragments/types/png_Portable_Network_Graphic.xcu12
-rw-r--r--filter/source/config/fragments/types/ppm_Portable_Pixelmap.xcu12
-rw-r--r--filter/source/config/fragments/types/psd_Adobe_Photoshop.xcu12
-rw-r--r--filter/source/config/fragments/types/pwp_PlaceWare.xcu12
-rw-r--r--filter/source/config/fragments/types/ras_Sun_Rasterfile.xcu12
-rw-r--r--filter/source/config/fragments/types/sgf_StarOffice_Writer_SGF.xcu12
-rw-r--r--filter/source/config/fragments/types/sgv_StarDraw_20.xcu12
-rw-r--r--filter/source/config/fragments/types/svg_Scalable_Vector_Graphics.xcu12
-rw-r--r--filter/source/config/fragments/types/svm_StarView_Metafile.xcu12
-rw-r--r--filter/source/config/fragments/types/tga_Truevision_TARGA.xcu12
-rw-r--r--filter/source/config/fragments/types/tif_Tag_Image_File.xcu12
-rw-r--r--filter/source/config/fragments/types/wav_Wave_Audio_File.xcu12
-rw-r--r--filter/source/config/fragments/types/wmf_MS_Windows_Metafile.xcu12
-rw-r--r--filter/source/config/fragments/types/writer8.xcu12
-rw-r--r--filter/source/config/fragments/types/writer8_template.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Ami_Pro_1x_31_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_AportisDoc_PalmDB_File.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_CTOS_DEF_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Claris_Works_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DCAFFT_Final_Form_Text_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DCA_Revisable_Form_Text_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DCA_with_Display_Write_5_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DEC_DX_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DEC_WPS_PLUS_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DataGeneral_CEO_Write_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DisplayWrite_20_4x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DisplayWrite_5x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_DocBook_File.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_EBCDIC_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Enable_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Frame_Maker_MIF_30_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Frame_Maker_MIF_40_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Frame_Maker_MIF_50_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Frame_Work_III_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Frame_Work_IV_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_HP_AdvanceWrite_Plus_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_ICL_Office_Power_6_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_ICL_Office_Power_7_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Interleaf_5_6_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Interleaf_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Legacy_Winstar_onGO_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_LotusWordPro_Document.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Lotus_1_2_3_10_DOS_StarWriter.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Lotus_1_2_3_10_WIN_StarWriter.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Lotus_Manuscript_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MASS_11_Rel_80_83_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MASS_11_Rel_85_90_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MIZI_Hwp_97.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_MacWord_30_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_MacWord_40_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_MacWord_5x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_WinWord_1x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_WinWord_2x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_WinWord_5.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_WinWord_60.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_2003_XML.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_2007_XML.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_2007_XML_Template.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_3x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_4x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_5x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_6x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_95.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_95_Vorlage.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_97.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Word_97_Vorlage.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Works_20_DOS_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Works_30_Win_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Works_40_Mac_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MS_Works_Document.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Mac_Write_4x_50_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Mac_Write_II_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Mac_Write_Pro_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MultiMate_33_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MultiMate_4_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MultiMate_Adv_36_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_MultiMate_Adv_II_37_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_NAVY_DIF_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_ODT_FlatXML.xcu14
-rw-r--r--filter/source/config/fragments/types/writer_OOXML.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_OOXML_Template.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_OfficeWriter_40_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_OfficeWriter_50_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_OfficeWriter_6x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_PFS_First_Choice_10_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_PFS_First_Choice_20_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_PFS_First_Choice_30_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_PFS_Write_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Peach_Text_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_PocketWord_File.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Professional_Write_10_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Professional_Write_2x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Professional_Write_Plus_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_QA_Write_10_30_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_QA_Write_40_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Rapid_File_10_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Rapid_File_12_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Rich_Text_Format.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Samna_Word_IV_IV_Plus_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarOffice_XML_Writer.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarOffice_XML_Writer_Template.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_10.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_20.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_30.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_30_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_40.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_40_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_50.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_50_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_StarWriter_DOS.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_T602_Document.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Text.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Text_encoded.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Total_Word_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Uniplex_V7_V8_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Uniplex_onGO_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_VolksWriter_3_and_4_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_VolksWriter_Deluxe_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WITA_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Wang_II_SWP_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Wang_PC_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Wang_WP_Plus_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Win_Write_3x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WiziWord_30_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_41_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_42_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_50_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_51_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_60_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_61_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Document.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Mac_1_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Mac_2_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Mac_3_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Win_51_52_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Win_60_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Win_61_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordPerfect_Win_70_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_2000_Rel_30_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_2000_Rel_35_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_33x_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_345_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_40_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_50_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_55_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_60_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_70_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WordStar_Win_1x_20_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_WriteNow_30_Macintosh_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_Writing_Assistant_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XEROX_XIF_50_Illustrator_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XEROX_XIF_50_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XEROX_XIF_60_Color_Bitmap_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XEROX_XIF_60_Res_Graphic_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XyWrite_IIIP_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XyWrite_III_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XyWrite_IV_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XyWrite_Sig_Win_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XyWrite_Signature_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_XyWrite_Win_10_W4W.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_globaldocument_StarOffice_XML_Writer_GlobalDocument.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_globaldocument_StarWriter_40GlobalDocument.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_globaldocument_StarWriter_50GlobalDocument.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_web_HTML.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_web_HTML_help.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_web_StarOffice_XML_Writer_Web_Template.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_web_StarWriterWeb_40_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/writer_web_StarWriterWeb_50_VorlageTemplate.xcu12
-rw-r--r--filter/source/config/fragments/types/writerglobal8.xcu12
-rw-r--r--filter/source/config/fragments/types/writerweb8_writer_template.xcu12
-rw-r--r--filter/source/config/fragments/types/xbm_X_Consortium.xcu12
-rw-r--r--filter/source/config/fragments/types/xpm_XPM.xcu12
-rw-r--r--filter/source/config/tools/Manifest.mf4
-rwxr-xr-xfilter/source/config/tools/merge/pyAltFCFGMerge591
-rw-r--r--filter/source/config/tools/split/FCFGSplit.cfg110
-rw-r--r--filter/source/config/tools/split/FCFGSplit.java565
-rw-r--r--filter/source/config/tools/split/Manifest.mf1
-rw-r--r--filter/source/config/tools/split/Splitter.java310
-rw-r--r--filter/source/config/tools/split/SplitterData.java87
-rw-r--r--filter/source/config/tools/split/makefile.mk88
-rw-r--r--filter/source/docbook/DocBookTemplate.stwbin0 -> 6688 bytes
-rw-r--r--filter/source/docbook/docbooktosoffheadings.xsl1424
-rw-r--r--filter/source/docbook/makefile.mk51
-rw-r--r--filter/source/docbook/sofftodocbookheadings.xsl1180
-rw-r--r--filter/source/filtertracer/exports.dxp3
-rw-r--r--filter/source/filtertracer/filtertracer.cxx258
-rw-r--r--filter/source/filtertracer/filtertracer.hxx189
-rw-r--r--filter/source/filtertracer/filtertraceruno.cxx113
-rw-r--r--filter/source/filtertracer/makefile.mk63
-rw-r--r--filter/source/flash/impswfdialog.cxx128
-rw-r--r--filter/source/flash/impswfdialog.hrc48
-rw-r--r--filter/source/flash/impswfdialog.hxx88
-rw-r--r--filter/source/flash/impswfdialog.src182
-rw-r--r--filter/source/flash/makefile.mk98
-rw-r--r--filter/source/flash/swfdialog.cxx286
-rw-r--r--filter/source/flash/swfdialog.hxx92
-rw-r--r--filter/source/flash/swfexporter.cxx771
-rw-r--r--filter/source/flash/swfexporter.hxx221
-rw-r--r--filter/source/flash/swffilter.cxx527
-rw-r--r--filter/source/flash/swfuno.cxx139
-rw-r--r--filter/source/flash/swfwriter.cxx643
-rw-r--r--filter/source/flash/swfwriter.hxx465
-rw-r--r--filter/source/flash/swfwriter1.cxx2129
-rw-r--r--filter/source/flash/swfwriter2.cxx694
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.cxx109
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.hrc36
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.hxx73
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.src118
-rw-r--r--filter/source/graphicfilter/egif/egif.cxx630
-rw-r--r--filter/source/graphicfilter/egif/egifstr.src39
-rw-r--r--filter/source/graphicfilter/egif/exports.map8
-rw-r--r--filter/source/graphicfilter/egif/giflzwc.cxx259
-rw-r--r--filter/source/graphicfilter/egif/giflzwc.hxx66
-rw-r--r--filter/source/graphicfilter/egif/makefile.mk83
-rw-r--r--filter/source/graphicfilter/egif/strings.hrc28
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.cxx179
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.hrc41
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.hxx82
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.src162
-rw-r--r--filter/source/graphicfilter/eos2met/eos2met.cxx2649
-rw-r--r--filter/source/graphicfilter/eos2met/eos2mstr.src38
-rw-r--r--filter/source/graphicfilter/eos2met/exports.map8
-rw-r--r--filter/source/graphicfilter/eos2met/makefile.mk77
-rw-r--r--filter/source/graphicfilter/eos2met/strings.hrc29
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.cxx100
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.hrc34
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.hxx74
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.src106
-rw-r--r--filter/source/graphicfilter/epbm/epbm.cxx273
-rw-r--r--filter/source/graphicfilter/epbm/epbmstr.src35
-rw-r--r--filter/source/graphicfilter/epbm/exports.map8
-rw-r--r--filter/source/graphicfilter/epbm/makefile.mk78
-rw-r--r--filter/source/graphicfilter/epbm/strings.hrc27
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.cxx98
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.hrc34
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.hxx74
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.src105
-rw-r--r--filter/source/graphicfilter/epgm/epgm.cxx298
-rw-r--r--filter/source/graphicfilter/epgm/epgmstr.src35
-rw-r--r--filter/source/graphicfilter/epgm/exports.map8
-rw-r--r--filter/source/graphicfilter/epgm/makefile.mk79
-rw-r--r--filter/source/graphicfilter/epgm/strings.hrc27
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.cxx185
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.hrc41
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.hxx82
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.src163
-rw-r--r--filter/source/graphicfilter/epict/epict.cxx2387
-rw-r--r--filter/source/graphicfilter/epict/epictstr.src38
-rw-r--r--filter/source/graphicfilter/epict/exports.map8
-rw-r--r--filter/source/graphicfilter/epict/makefile.mk78
-rw-r--r--filter/source/graphicfilter/epict/strings.hrc29
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.cxx98
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.hrc34
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.hxx74
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.src106
-rw-r--r--filter/source/graphicfilter/eppm/eppm.cxx305
-rw-r--r--filter/source/graphicfilter/eppm/eppmstr.src35
-rw-r--r--filter/source/graphicfilter/eppm/exports.map8
-rw-r--r--filter/source/graphicfilter/eppm/makefile.mk80
-rw-r--r--filter/source/graphicfilter/eppm/strings.hrc27
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.cxx207
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.hrc43
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.hxx85
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.src160
-rw-r--r--filter/source/graphicfilter/eps/eps.cxx2808
-rw-r--r--filter/source/graphicfilter/eps/epsstr.src70
-rw-r--r--filter/source/graphicfilter/eps/exports.map8
-rw-r--r--filter/source/graphicfilter/eps/makefile.mk80
-rw-r--r--filter/source/graphicfilter/eps/strings.hrc29
-rw-r--r--filter/source/graphicfilter/eras/eras.cxx318
-rw-r--r--filter/source/graphicfilter/eras/exports.map7
-rw-r--r--filter/source/graphicfilter/eras/makefile.mk68
-rw-r--r--filter/source/graphicfilter/etiff/etiff.cxx647
-rw-r--r--filter/source/graphicfilter/etiff/exports.map7
-rw-r--r--filter/source/graphicfilter/etiff/makefile.mk66
-rw-r--r--filter/source/graphicfilter/expm/expm.cxx302
-rw-r--r--filter/source/graphicfilter/expm/exports.map7
-rw-r--r--filter/source/graphicfilter/expm/makefile.mk67
-rw-r--r--filter/source/graphicfilter/icgm/actimpr.cxx1135
-rw-r--r--filter/source/graphicfilter/icgm/bitmap.cxx412
-rw-r--r--filter/source/graphicfilter/icgm/bitmap.hxx89
-rw-r--r--filter/source/graphicfilter/icgm/bundles.cxx290
-rw-r--r--filter/source/graphicfilter/icgm/bundles.hxx176
-rw-r--r--filter/source/graphicfilter/icgm/cgm.cxx930
-rw-r--r--filter/source/graphicfilter/icgm/cgm.hxx180
-rw-r--r--filter/source/graphicfilter/icgm/cgmres.hrc28
-rw-r--r--filter/source/graphicfilter/icgm/cgmtypes.hxx148
-rw-r--r--filter/source/graphicfilter/icgm/chart.cxx102
-rw-r--r--filter/source/graphicfilter/icgm/chart.hxx216
-rw-r--r--filter/source/graphicfilter/icgm/class0.cxx140
-rw-r--r--filter/source/graphicfilter/icgm/class1.cxx233
-rw-r--r--filter/source/graphicfilter/icgm/class2.cxx229
-rw-r--r--filter/source/graphicfilter/icgm/class3.cxx146
-rw-r--r--filter/source/graphicfilter/icgm/class4.cxx863
-rw-r--r--filter/source/graphicfilter/icgm/class5.cxx526
-rw-r--r--filter/source/graphicfilter/icgm/class7.cxx239
-rw-r--r--filter/source/graphicfilter/icgm/classx.cxx265
-rw-r--r--filter/source/graphicfilter/icgm/elements.cxx397
-rw-r--r--filter/source/graphicfilter/icgm/elements.hxx147
-rw-r--r--filter/source/graphicfilter/icgm/exports.map7
-rw-r--r--filter/source/graphicfilter/icgm/main.hxx65
-rw-r--r--filter/source/graphicfilter/icgm/makefile.mk80
-rw-r--r--filter/source/graphicfilter/icgm/outact.cxx202
-rw-r--r--filter/source/graphicfilter/icgm/outact.hxx150
-rw-r--r--filter/source/graphicfilter/idxf/dxf2mtf.cxx982
-rw-r--r--filter/source/graphicfilter/idxf/dxf2mtf.hxx130
-rw-r--r--filter/source/graphicfilter/idxf/dxfblkrd.cxx141
-rw-r--r--filter/source/graphicfilter/idxf/dxfblkrd.hxx89
-rw-r--r--filter/source/graphicfilter/idxf/dxfentrd.cxx873
-rw-r--r--filter/source/graphicfilter/idxf/dxfentrd.hxx604
-rw-r--r--filter/source/graphicfilter/idxf/dxfgrprd.cxx363
-rw-r--r--filter/source/graphicfilter/idxf/dxfgrprd.hxx157
-rw-r--r--filter/source/graphicfilter/idxf/dxfreprd.cxx388
-rw-r--r--filter/source/graphicfilter/idxf/dxfreprd.hxx140
-rw-r--r--filter/source/graphicfilter/idxf/dxftblrd.cxx350
-rw-r--r--filter/source/graphicfilter/idxf/dxftblrd.hxx185
-rw-r--r--filter/source/graphicfilter/idxf/dxfvec.cxx256
-rw-r--r--filter/source/graphicfilter/idxf/dxfvec.hxx264
-rw-r--r--filter/source/graphicfilter/idxf/exports.map7
-rw-r--r--filter/source/graphicfilter/idxf/idxf.cxx82
-rw-r--r--filter/source/graphicfilter/idxf/makefile.mk79
-rw-r--r--filter/source/graphicfilter/ieps/exports.map7
-rw-r--r--filter/source/graphicfilter/ieps/ieps.cxx771
-rw-r--r--filter/source/graphicfilter/ieps/makefile.mk67
-rw-r--r--filter/source/graphicfilter/ios2met/exports.map7
-rw-r--r--filter/source/graphicfilter/ios2met/ios2met.cxx2784
-rw-r--r--filter/source/graphicfilter/ios2met/makefile.mk69
-rw-r--r--filter/source/graphicfilter/ipbm/exports.map7
-rw-r--r--filter/source/graphicfilter/ipbm/ipbm.cxx565
-rw-r--r--filter/source/graphicfilter/ipbm/makefile.mk69
-rw-r--r--filter/source/graphicfilter/ipcd/exports.map7
-rw-r--r--filter/source/graphicfilter/ipcd/ipcd.cxx422
-rw-r--r--filter/source/graphicfilter/ipcd/makefile.mk68
-rw-r--r--filter/source/graphicfilter/ipcx/exports.map7
-rw-r--r--filter/source/graphicfilter/ipcx/ipcx.cxx458
-rw-r--r--filter/source/graphicfilter/ipcx/makefile.mk68
-rw-r--r--filter/source/graphicfilter/ipict/exports.map7
-rw-r--r--filter/source/graphicfilter/ipict/ipict.cxx1938
-rw-r--r--filter/source/graphicfilter/ipict/makefile.mk69
-rw-r--r--filter/source/graphicfilter/ipsd/exports.map7
-rw-r--r--filter/source/graphicfilter/ipsd/ipsd.cxx764
-rw-r--r--filter/source/graphicfilter/ipsd/makefile.mk68
-rw-r--r--filter/source/graphicfilter/iras/exports.map7
-rw-r--r--filter/source/graphicfilter/iras/iras.cxx383
-rw-r--r--filter/source/graphicfilter/iras/makefile.mk68
-rw-r--r--filter/source/graphicfilter/itga/exports.map7
-rw-r--r--filter/source/graphicfilter/itga/itga.cxx788
-rw-r--r--filter/source/graphicfilter/itga/makefile.mk68
-rw-r--r--filter/source/graphicfilter/itiff/ccidecom.cxx1114
-rw-r--r--filter/source/graphicfilter/itiff/ccidecom.hxx127
-rw-r--r--filter/source/graphicfilter/itiff/exports.map7
-rw-r--r--filter/source/graphicfilter/itiff/itiff.cxx1403
-rw-r--r--filter/source/graphicfilter/itiff/lzwdecom.cxx194
-rw-r--r--filter/source/graphicfilter/itiff/lzwdecom.hxx81
-rw-r--r--filter/source/graphicfilter/itiff/makefile.mk71
-rw-r--r--filter/source/msfilter/countryid.cxx345
-rw-r--r--filter/source/msfilter/escherex.cxx4978
-rw-r--r--filter/source/msfilter/eschesdo.cxx1270
-rw-r--r--filter/source/msfilter/eschesdo.hxx209
-rw-r--r--filter/source/msfilter/makefile.mk88
-rw-r--r--filter/source/msfilter/makefile.pmk30
-rw-r--r--filter/source/msfilter/mscodec.cxx536
-rw-r--r--filter/source/msfilter/msdffimp.cxx8157
-rw-r--r--filter/source/msfilter/msfiltertracer.cxx253
-rw-r--r--filter/source/msfilter/msocximex.cxx6405
-rw-r--r--filter/source/msfilter/msoleexp.cxx371
-rw-r--r--filter/source/msfilter/mstoolbar.cxx819
-rw-r--r--filter/source/msfilter/msvbahelper.cxx413
-rw-r--r--filter/source/msfilter/msvbasic.cxx1461
-rw-r--r--filter/source/msfilter/msvbasic.hxx128
-rw-r--r--filter/source/msfilter/powerpoint/makefile.mk65
-rw-r--r--filter/source/msfilter/powerpoint/pptcom.hxx79
-rw-r--r--filter/source/msfilter/powerpoint/pptimporter.cxx164
-rw-r--r--filter/source/msfilter/powerpoint/pptimporter.hxx94
-rw-r--r--filter/source/msfilter/powerpoint/pptimporteruno.cxx113
-rw-r--r--filter/source/msfilter/powerpoint/ppttoxml.cxx94
-rw-r--r--filter/source/msfilter/powerpoint/ppttoxml.hxx54
-rw-r--r--filter/source/msfilter/svdfppt.cxx7753
-rw-r--r--filter/source/msfilter/svxmsbas.cxx592
-rw-r--r--filter/source/msfilter/svxmsbas2.cxx88
-rw-r--r--filter/source/msfilter/viscache.hxx84
-rw-r--r--filter/source/odfflatxml/odfflatxmlexport.xsl14
-rw-r--r--filter/source/odfflatxml/odfflatxmlimport.xsl10
-rw-r--r--filter/source/pdf/impdialog.cxx1556
-rw-r--r--filter/source/pdf/impdialog.hrc185
-rw-r--r--filter/source/pdf/impdialog.hxx408
-rw-r--r--filter/source/pdf/impdialog.src840
-rw-r--r--filter/source/pdf/makefile.mk83
-rw-r--r--filter/source/pdf/pdf.hrc29
-rw-r--r--filter/source/pdf/pdf.src66
-rw-r--r--filter/source/pdf/pdfdialog.cxx225
-rw-r--r--filter/source/pdf/pdfdialog.hxx94
-rw-r--r--filter/source/pdf/pdfexport.cxx1974
-rw-r--r--filter/source/pdf/pdfexport.hxx144
-rw-r--r--filter/source/pdf/pdffilter.cxx270
-rw-r--r--filter/source/pdf/pdffilter.hxx135
-rw-r--r--filter/source/pdf/pdfuno.cxx127
-rw-r--r--filter/source/placeware/Base64Codec.cxx210
-rw-r--r--filter/source/placeware/Base64Codec.hxx50
-rw-r--r--filter/source/placeware/exporter.cxx517
-rw-r--r--filter/source/placeware/exporter.hxx63
-rw-r--r--filter/source/placeware/exports.dxp3
-rw-r--r--filter/source/placeware/filter.cxx220
-rw-r--r--filter/source/placeware/makefile.mk67
-rw-r--r--filter/source/placeware/placeware.xml45
-rw-r--r--filter/source/placeware/tempfile.cxx191
-rw-r--r--filter/source/placeware/tempfile.hxx51
-rw-r--r--filter/source/placeware/uno.cxx113
-rw-r--r--filter/source/placeware/zip.cxx335
-rw-r--r--filter/source/placeware/zip.hxx65
-rw-r--r--filter/source/placeware/zipfile.hxx93
-rw-r--r--filter/source/svg/SOTranscoder.java45
-rw-r--r--filter/source/svg/b2dellipse.cxx152
-rw-r--r--filter/source/svg/b2dellipse.hxx90
-rw-r--r--filter/source/svg/exports.map10
-rw-r--r--filter/source/svg/gentoken.pl83
-rw-r--r--filter/source/svg/gfxtypes.hxx358
-rw-r--r--filter/source/svg/makefile.mk106
-rw-r--r--filter/source/svg/parserfragments.cxx613
-rw-r--r--filter/source/svg/parserfragments.hxx87
-rw-r--r--filter/source/svg/spirit_supplements.hxx128
-rw-r--r--filter/source/svg/svgexport.cxx1010
-rw-r--r--filter/source/svg/svgfilter.cxx236
-rw-r--r--filter/source/svg/svgfilter.hxx281
-rw-r--r--filter/source/svg/svgfontexport.cxx261
-rw-r--r--filter/source/svg/svgfontexport.hxx67
-rw-r--r--filter/source/svg/svgimport.cxx90
-rw-r--r--filter/source/svg/svgreader.cxx2798
-rw-r--r--filter/source/svg/svgreader.hxx56
-rw-r--r--filter/source/svg/svgscript.hxx212
-rw-r--r--filter/source/svg/svguno.cxx105
-rw-r--r--filter/source/svg/svgwriter.cxx1660
-rw-r--r--filter/source/svg/svgwriter.hxx216
-rw-r--r--filter/source/svg/test/makefile.mk115
-rw-r--r--filter/source/svg/test/odfserializer.cxx143
-rw-r--r--filter/source/svg/test/odfserializer.hxx34
-rw-r--r--filter/source/svg/test/parsertest.cxx222
-rw-r--r--filter/source/svg/test/svg2odf.cxx127
-rw-r--r--filter/source/svg/tokenmap.cxx65
-rw-r--r--filter/source/svg/tokenmap.hxx45
-rw-r--r--filter/source/svg/tokens.txt403
-rw-r--r--filter/source/svg/units.cxx129
-rw-r--r--filter/source/svg/units.hxx73
-rw-r--r--filter/source/t602/filterenv.cxx130
-rw-r--r--filter/source/t602/makefile.mk62
-rw-r--r--filter/source/t602/t602filter.cxx1268
-rw-r--r--filter/source/t602/t602filter.hrc45
-rw-r--r--filter/source/t602/t602filter.hxx289
-rw-r--r--filter/source/t602/t602filter.src83
-rw-r--r--filter/source/xmlfilteradaptor/XmlFilterAdaptor.cxx434
-rw-r--r--filter/source/xmlfilteradaptor/XmlFilterAdaptor.hxx186
-rw-r--r--filter/source/xmlfilteradaptor/genericfilter.cxx182
-rw-r--r--filter/source/xmlfilteradaptor/makefile.mk62
-rw-r--r--filter/source/xmlfilteradaptor/streamwrap.cxx70
-rw-r--r--filter/source/xmlfilteradaptor/streamwrap.hxx80
-rw-r--r--filter/source/xmlfilterdetect/fdcomp.cxx182
-rw-r--r--filter/source/xmlfilterdetect/filterdetect.cxx312
-rw-r--r--filter/source/xmlfilterdetect/filterdetect.hxx168
-rw-r--r--filter/source/xmlfilterdetect/makefile.mk60
-rw-r--r--filter/source/xslt/common/copy.xsl9
-rw-r--r--filter/source/xslt/common/math.xsl589
-rw-r--r--filter/source/xslt/common/measure_conversion.xsl387
-rw-r--r--filter/source/xslt/export/common/ooo2ms_docpr.xsl137
-rw-r--r--filter/source/xslt/export/spreadsheetml/formular.xsl640
-rw-r--r--filter/source/xslt/export/spreadsheetml/ooo2spreadsheetml.xsl417
-rw-r--r--filter/source/xslt/export/spreadsheetml/style_mapping.xsl390
-rw-r--r--filter/source/xslt/export/spreadsheetml/styles.xsl695
-rw-r--r--filter/source/xslt/export/spreadsheetml/table.xsl937
-rw-r--r--filter/source/xslt/export/uof/odf2uof_presentation.xsl3375
-rw-r--r--filter/source/xslt/export/uof/odf2uof_spreadsheet.xsl6194
-rw-r--r--filter/source/xslt/export/uof/odf2uof_text.xsl4439
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml.xsl218
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_border.xsl153
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_custom_draw.xsl284
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_draw.xsl1885
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_field.xsl733
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_list.xsl340
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_page.xsl401
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_path.xsl858
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_settings.xsl312
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_table.xsl416
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_text.xsl1279
-rw-r--r--filter/source/xslt/import/common/ms2ooo_docpr.xsl101
-rw-r--r--filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl9173
-rw-r--r--filter/source/xslt/import/uof/uof2odf_presentation.xsl3478
-rw-r--r--filter/source/xslt/import/uof/uof2odf_spreadsheet.xsl9054
-rw-r--r--filter/source/xslt/import/uof/uof2odf_text.xsl4650
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo.xsl348
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_custom_draw.xsl284
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_draw.xsl2213
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_field.xsl1587
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_list.xsl657
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_page.xsl387
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_path.xsl1818
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_props.xsl107
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_settings.xsl69
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_table.xsl1286
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_text.xsl1058
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/body.xsl422
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/styles/style_collector.xsl828
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/styles/style_mapping_css.xsl355
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table.xsl164
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table_cells.xsl279
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table_columns.xsl243
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table_rows.xsl212
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table_of_content.xsl554
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/body.xsl2923
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/header.xsl484
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/opendoc2xhtml.xsl183
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/table.xsl222
-rw-r--r--filter/source/xsltdialog/exports.dxp3
-rw-r--r--filter/source/xsltdialog/hidother.src78
-rw-r--r--filter/source/xsltdialog/makefile.mk94
-rw-r--r--filter/source/xsltdialog/typedetectionexport.cxx296
-rw-r--r--filter/source/xsltdialog/typedetectionexport.hxx54
-rw-r--r--filter/source/xsltdialog/typedetectionimport.cxx364
-rw-r--r--filter/source/xsltdialog/typedetectionimport.hxx130
-rw-r--r--filter/source/xsltdialog/xmlfileview.cxx991
-rw-r--r--filter/source/xsltdialog/xmlfileview.hrc36
-rw-r--r--filter/source/xsltdialog/xmlfileview.hxx174
-rw-r--r--filter/source/xsltdialog/xmlfileview.src64
-rw-r--r--filter/source/xsltdialog/xmlfiltercommon.hrc41
-rw-r--r--filter/source/xsltdialog/xmlfiltercommon.hxx110
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogcomponent.cxx469
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogstrings.hrc72
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogstrings.src203
-rw-r--r--filter/source/xsltdialog/xmlfilterhelpids.hrc88
-rw-r--r--filter/source/xsltdialog/xmlfilterjar.cxx408
-rw-r--r--filter/source/xsltdialog/xmlfilterjar.hxx68
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.cxx1800
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.hrc43
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.hxx162
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.src139
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.cxx374
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.hrc33
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.hxx78
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.src65
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.cxx156
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.hrc44
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.hxx70
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.src152
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.cxx223
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.hrc48
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.hxx85
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.src176
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.cxx781
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.hrc53
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.hxx108
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.src210
-rw-r--r--filter/source/xsltfilter/Base64.java1833
-rw-r--r--filter/source/xsltfilter/Manifest3
-rw-r--r--filter/source/xsltfilter/XSLTFilter.cxx734
-rw-r--r--filter/source/xsltfilter/XSLTFilterOLEExtracter.java393
-rw-r--r--filter/source/xsltfilter/XSLTransformer.java484
-rw-r--r--filter/source/xsltfilter/fla.cxx330
-rw-r--r--filter/source/xsltfilter/fla.hxx56
-rw-r--r--filter/source/xsltfilter/makefile.mk85
-rw-r--r--filter/source/xsltvalidate/Manifest2
-rw-r--r--filter/source/xsltvalidate/XSLTValidate.java347
-rw-r--r--filter/source/xsltvalidate/makefile.mk76
-rw-r--r--forms/inc/makefile.mk48
-rw-r--r--forms/inc/pch/precompiled_forms.cxx31
-rw-r--r--forms/inc/pch/precompiled_forms.hxx403
-rw-r--r--forms/makefile.pmk28
-rw-r--r--forms/prj/build.lst18
-rw-r--r--forms/prj/d.lst7
-rwxr-xr-xforms/qa/complex/forms/CheckOGroupBoxModel.java147
-rwxr-xr-xforms/qa/complex/forms/makefile.mk78
-rw-r--r--forms/qa/forms_all.sce8
-rw-r--r--forms/qa/integration/forms/BooleanValidator.java59
-rw-r--r--forms/qa/integration/forms/CellBinding.java560
-rw-r--r--forms/qa/integration/forms/ControlValidation.java202
-rw-r--r--forms/qa/integration/forms/ControlValidator.java61
-rw-r--r--forms/qa/integration/forms/DateValidator.java103
-rw-r--r--forms/qa/integration/forms/DocumentHelper.java404
-rw-r--r--forms/qa/integration/forms/DocumentType.java61
-rw-r--r--forms/qa/integration/forms/DocumentViewHelper.java257
-rw-r--r--forms/qa/integration/forms/FormComponent.java197
-rw-r--r--forms/qa/integration/forms/FormControlTest.java952
-rw-r--r--forms/qa/integration/forms/FormLayer.java376
-rw-r--r--forms/qa/integration/forms/FormPropertyBags.java208
-rw-r--r--forms/qa/integration/forms/ImageComparison.java73
-rw-r--r--forms/qa/integration/forms/ListBox.java290
-rw-r--r--forms/qa/integration/forms/ListSelection.java298
-rw-r--r--forms/qa/integration/forms/ListSelection.props3
-rw-r--r--forms/qa/integration/forms/ListSelectionValidator.java71
-rw-r--r--forms/qa/integration/forms/MasterDetailForms.java435
-rw-r--r--forms/qa/integration/forms/NumericValidator.java90
-rw-r--r--forms/qa/integration/forms/RadioButtons.java459
-rw-r--r--forms/qa/integration/forms/SingleControlValidation.java191
-rw-r--r--forms/qa/integration/forms/SpreadsheetDocument.java151
-rw-r--r--forms/qa/integration/forms/SpreadsheetView.java81
-rw-r--r--forms/qa/integration/forms/TableCellTextBinding.java213
-rw-r--r--forms/qa/integration/forms/TestCase.java158
-rw-r--r--forms/qa/integration/forms/TestSkeleton.java75
-rw-r--r--forms/qa/integration/forms/TextValidator.java90
-rw-r--r--forms/qa/integration/forms/TimeValidator.java95
-rw-r--r--forms/qa/integration/forms/ValueBinding.java120
-rw-r--r--forms/qa/integration/forms/WaitForInput.java66
-rw-r--r--forms/qa/integration/forms/XMLFormSettings.java229
-rw-r--r--forms/qa/integration/forms/dbfTools.java55
-rw-r--r--forms/qa/makefile.mk79
-rw-r--r--forms/qa/org/openoffice/complex/forms/tools/ResultSet.java264
-rw-r--r--forms/qa/org/openoffice/xforms/Instance.java198
-rw-r--r--forms/qa/org/openoffice/xforms/Model.java100
-rw-r--r--forms/qa/org/openoffice/xforms/XMLDocument.java96
-rw-r--r--forms/qa/unoapi/Test.java51
-rw-r--r--forms/qa/unoapi/forms.sce40
-rw-r--r--forms/qa/unoapi/knownissues.xcl129
-rw-r--r--forms/qa/unoapi/makefile.mk48
-rw-r--r--forms/qa/unoapi/testdocuments/TestDB/testDB.dbfbin0 -> 11101 bytes
-rw-r--r--forms/qa/unoapi/testdocuments/TestDB/testDB.dbtbin0 -> 18435 bytes
-rw-r--r--forms/source/component/BaseListBox.hxx45
-rw-r--r--forms/source/component/Button.cxx782
-rw-r--r--forms/source/component/Button.hxx212
-rw-r--r--forms/source/component/CheckBox.cxx275
-rw-r--r--forms/source/component/CheckBox.hxx93
-rw-r--r--forms/source/component/Columns.cxx600
-rw-r--r--forms/source/component/Columns.hxx223
-rw-r--r--forms/source/component/ComboBox.cxx916
-rw-r--r--forms/source/component/ComboBox.hxx180
-rw-r--r--forms/source/component/Currency.cxx270
-rw-r--r--forms/source/component/Currency.hxx103
-rw-r--r--forms/source/component/DatabaseForm.cxx4164
-rw-r--r--forms/source/component/DatabaseForm.hxx569
-rw-r--r--forms/source/component/Date.cxx365
-rw-r--r--forms/source/component/Date.hxx135
-rw-r--r--forms/source/component/Edit.cxx768
-rw-r--r--forms/source/component/Edit.hxx190
-rw-r--r--forms/source/component/EditBase.cxx361
-rw-r--r--forms/source/component/EditBase.hxx115
-rw-r--r--forms/source/component/EventThread.cxx254
-rw-r--r--forms/source/component/EventThread.hxx128
-rw-r--r--forms/source/component/File.cxx307
-rw-r--r--forms/source/component/File.hxx105
-rw-r--r--forms/source/component/Filter.cxx876
-rw-r--r--forms/source/component/Filter.hxx159
-rw-r--r--forms/source/component/FixedText.cxx138
-rw-r--r--forms/source/component/FixedText.hxx73
-rw-r--r--forms/source/component/FormComponent.cxx3084
-rw-r--r--forms/source/component/FormattedField.cxx1260
-rw-r--r--forms/source/component/FormattedField.hxx200
-rw-r--r--forms/source/component/FormattedFieldWrapper.cxx400
-rw-r--r--forms/source/component/FormattedFieldWrapper.hxx101
-rw-r--r--forms/source/component/FormsCollection.cxx188
-rw-r--r--forms/source/component/FormsCollection.hxx102
-rw-r--r--forms/source/component/Grid.cxx1165
-rw-r--r--forms/source/component/Grid.hxx221
-rw-r--r--forms/source/component/GroupBox.cxx175
-rw-r--r--forms/source/component/GroupBox.hxx86
-rw-r--r--forms/source/component/GroupManager.cxx533
-rw-r--r--forms/source/component/GroupManager.hxx235
-rw-r--r--forms/source/component/Hidden.cxx190
-rw-r--r--forms/source/component/Hidden.hxx86
-rw-r--r--forms/source/component/ImageButton.cxx275
-rw-r--r--forms/source/component/ImageButton.hxx109
-rw-r--r--forms/source/component/ImageControl.cxx1025
-rw-r--r--forms/source/component/ImageControl.hxx212
-rw-r--r--forms/source/component/ListBox.cxx1856
-rw-r--r--forms/source/component/ListBox.hxx288
-rw-r--r--forms/source/component/Numeric.cxx224
-rw-r--r--forms/source/component/Numeric.hxx101
-rw-r--r--forms/source/component/Pattern.cxx264
-rw-r--r--forms/source/component/Pattern.hxx110
-rw-r--r--forms/source/component/RadioButton.cxx438
-rw-r--r--forms/source/component/RadioButton.hxx115
-rw-r--r--forms/source/component/Time.cxx367
-rw-r--r--forms/source/component/Time.hxx135
-rw-r--r--forms/source/component/cachedrowset.cxx205
-rw-r--r--forms/source/component/cachedrowset.hxx100
-rw-r--r--forms/source/component/clickableimage.cxx931
-rw-r--r--forms/source/component/clickableimage.hxx297
-rw-r--r--forms/source/component/cloneable.cxx70
-rw-r--r--forms/source/component/entrylisthelper.cxx324
-rw-r--r--forms/source/component/entrylisthelper.hxx201
-rw-r--r--forms/source/component/errorbroadcaster.cxx115
-rw-r--r--forms/source/component/errorbroadcaster.hxx76
-rw-r--r--forms/source/component/findpos.cxx60
-rw-r--r--forms/source/component/findpos.hxx48
-rw-r--r--forms/source/component/formcontrolfont.cxx552
-rw-r--r--forms/source/component/imgprod.cxx626
-rw-r--r--forms/source/component/imgprod.hxx110
-rw-r--r--forms/source/component/makefile.mk95
-rw-r--r--forms/source/component/navigationbar.cxx512
-rw-r--r--forms/source/component/navigationbar.hxx140
-rw-r--r--forms/source/component/propertybaghelper.cxx371
-rw-r--r--forms/source/component/refvaluecomponent.cxx303
-rw-r--r--forms/source/component/refvaluecomponent.hxx111
-rw-r--r--forms/source/component/scrollbar.cxx322
-rw-r--r--forms/source/component/scrollbar.hxx104
-rw-r--r--forms/source/component/spinbutton.cxx278
-rw-r--r--forms/source/component/spinbutton.hxx104
-rw-r--r--forms/source/helper/commanddescriptionprovider.cxx143
-rw-r--r--forms/source/helper/commandimageprovider.cxx184
-rw-r--r--forms/source/helper/controlfeatureinterception.cxx172
-rw-r--r--forms/source/helper/formnavigation.cxx487
-rw-r--r--forms/source/helper/makefile.mk58
-rw-r--r--forms/source/helper/resettable.cxx105
-rw-r--r--forms/source/helper/urltransformer.cxx105
-rw-r--r--forms/source/helper/windowstateguard.cxx228
-rw-r--r--forms/source/inc/FormComponent.hxx1322
-rw-r--r--forms/source/inc/InterfaceContainer.hxx330
-rw-r--r--forms/source/inc/cloneable.hxx57
-rw-r--r--forms/source/inc/commanddescriptionprovider.hxx72
-rw-r--r--forms/source/inc/commandimageprovider.hxx81
-rw-r--r--forms/source/inc/componenttools.hxx107
-rw-r--r--forms/source/inc/controlfeatureinterception.hxx102
-rw-r--r--forms/source/inc/featuredispatcher.hxx113
-rw-r--r--forms/source/inc/formcontrolfont.hxx104
-rw-r--r--forms/source/inc/formnavigation.hxx238
-rw-r--r--forms/source/inc/forms_module.hxx335
-rw-r--r--forms/source/inc/forms_module_impl.hxx211
-rw-r--r--forms/source/inc/frm_module.hxx39
-rw-r--r--forms/source/inc/frm_resource.hrc108
-rw-r--r--forms/source/inc/frm_resource.hxx79
-rw-r--r--forms/source/inc/frm_strings.hxx365
-rw-r--r--forms/source/inc/ids.hxx38
-rw-r--r--forms/source/inc/limitedformats.hxx107
-rw-r--r--forms/source/inc/listenercontainers.hxx142
-rw-r--r--forms/source/inc/property.hrc318
-rw-r--r--forms/source/inc/property.hxx238
-rw-r--r--forms/source/inc/propertybaghelper.hxx168
-rw-r--r--forms/source/inc/resettable.hxx79
-rw-r--r--forms/source/inc/services.hxx235
-rw-r--r--forms/source/inc/togglestate.hxx47
-rw-r--r--forms/source/inc/urltransformer.hxx88
-rw-r--r--forms/source/inc/windowstateguard.hxx85
-rw-r--r--forms/source/misc/InterfaceContainer.cxx1372
-rw-r--r--forms/source/misc/componenttools.cxx125
-rw-r--r--forms/source/misc/frm_module.cxx38
-rw-r--r--forms/source/misc/frm_strings.cxx36
-rw-r--r--forms/source/misc/ids.cxx38
-rw-r--r--forms/source/misc/limitedformats.cxx404
-rw-r--r--forms/source/misc/listenercontainers.cxx72
-rw-r--r--forms/source/misc/makefile.mk70
-rw-r--r--forms/source/misc/property.cxx258
-rw-r--r--forms/source/misc/services.cxx467
-rw-r--r--forms/source/resource/frm_resource.cxx89
-rw-r--r--forms/source/resource/makefile.mk49
-rw-r--r--forms/source/resource/strings.src161
-rw-r--r--forms/source/resource/xforms.src196
-rw-r--r--forms/source/richtext/attributedispatcher.cxx141
-rw-r--r--forms/source/richtext/attributedispatcher.hxx106
-rw-r--r--forms/source/richtext/clipboarddispatcher.cxx210
-rw-r--r--forms/source/richtext/clipboarddispatcher.hxx109
-rw-r--r--forms/source/richtext/featuredispatcher.cxx160
-rw-r--r--forms/source/richtext/featuredispatcher.hxx109
-rw-r--r--forms/source/richtext/makefile.mk60
-rw-r--r--forms/source/richtext/parametrizedattributedispatcher.cxx144
-rw-r--r--forms/source/richtext/parametrizedattributedispatcher.hxx77
-rw-r--r--forms/source/richtext/richtextcontrol.cxx766
-rw-r--r--forms/source/richtext/richtextcontrol.hxx165
-rw-r--r--forms/source/richtext/richtextengine.cxx163
-rw-r--r--forms/source/richtext/richtextengine.hxx93
-rw-r--r--forms/source/richtext/richtextimplcontrol.cxx680
-rw-r--r--forms/source/richtext/richtextimplcontrol.hxx198
-rw-r--r--forms/source/richtext/richtextmodel.cxx641
-rw-r--r--forms/source/richtext/richtextmodel.hxx196
-rw-r--r--forms/source/richtext/richtextunowrapper.cxx138
-rw-r--r--forms/source/richtext/richtextunowrapper.hxx100
-rw-r--r--forms/source/richtext/richtextvclcontrol.cxx394
-rw-r--r--forms/source/richtext/richtextvclcontrol.hxx143
-rw-r--r--forms/source/richtext/richtextviewport.cxx130
-rw-r--r--forms/source/richtext/richtextviewport.hxx82
-rw-r--r--forms/source/richtext/rtattributehandler.cxx533
-rw-r--r--forms/source/richtext/rtattributehandler.hxx242
-rw-r--r--forms/source/richtext/rtattributes.hxx174
-rw-r--r--forms/source/richtext/specialdispatchers.cxx200
-rw-r--r--forms/source/richtext/specialdispatchers.hxx116
-rw-r--r--forms/source/richtext/textattributelistener.hxx63
-rw-r--r--forms/source/runtime/formoperations.cxx1743
-rw-r--r--forms/source/runtime/formoperations.hxx382
-rw-r--r--forms/source/runtime/makefile.mk47
-rw-r--r--forms/source/solar/component/makefile.mk51
-rw-r--r--forms/source/solar/component/navbarcontrol.cxx567
-rw-r--r--forms/source/solar/component/navbarcontrol.hxx165
-rw-r--r--forms/source/solar/control/makefile.mk53
-rw-r--r--forms/source/solar/control/navtoolbar.cxx740
-rw-r--r--forms/source/solar/inc/navtoolbar.hxx197
-rw-r--r--forms/source/xforms/NameContainer.hxx224
-rw-r--r--forms/source/xforms/binding.cxx1412
-rw-r--r--forms/source/xforms/binding.hxx530
-rw-r--r--forms/source/xforms/boolexpression.cxx61
-rw-r--r--forms/source/xforms/boolexpression.hxx58
-rw-r--r--forms/source/xforms/collection.hxx340
-rw-r--r--forms/source/xforms/computedexpression.cxx249
-rw-r--r--forms/source/xforms/computedexpression.hxx141
-rw-r--r--forms/source/xforms/convert.cxx630
-rw-r--r--forms/source/xforms/convert.hxx116
-rw-r--r--forms/source/xforms/datatyperepository.cxx294
-rw-r--r--forms/source/xforms/datatyperepository.hxx100
-rw-r--r--forms/source/xforms/datatypes.cxx995
-rw-r--r--forms/source/xforms/datatypes.hxx426
-rw-r--r--forms/source/xforms/datatypes_impl.hxx78
-rw-r--r--forms/source/xforms/enumeration.cxx77
-rw-r--r--forms/source/xforms/enumeration.hxx66
-rw-r--r--forms/source/xforms/evaluationcontext.hxx78
-rw-r--r--forms/source/xforms/makefile.mk66
-rw-r--r--forms/source/xforms/mip.cxx129
-rw-r--r--forms/source/xforms/mip.hxx125
-rw-r--r--forms/source/xforms/model.cxx811
-rw-r--r--forms/source/xforms/model.hxx438
-rw-r--r--forms/source/xforms/model_helper.hxx170
-rw-r--r--forms/source/xforms/model_ui.cxx1069
-rw-r--r--forms/source/xforms/namedcollection.hxx145
-rw-r--r--forms/source/xforms/pathexpression.cxx157
-rw-r--r--forms/source/xforms/pathexpression.hxx94
-rw-r--r--forms/source/xforms/propertysetbase.cxx195
-rw-r--r--forms/source/xforms/propertysetbase.hxx374
-rw-r--r--forms/source/xforms/resourcehelper.cxx82
-rw-r--r--forms/source/xforms/resourcehelper.hxx55
-rw-r--r--forms/source/xforms/submission.cxx721
-rw-r--r--forms/source/xforms/submission.hxx279
-rw-r--r--forms/source/xforms/submission/makefile.mk57
-rw-r--r--forms/source/xforms/submission/replace.cxx147
-rw-r--r--forms/source/xforms/submission/serialization.hxx101
-rw-r--r--forms/source/xforms/submission/serialization_app_xml.cxx124
-rw-r--r--forms/source/xforms/submission/serialization_app_xml.hxx58
-rw-r--r--forms/source/xforms/submission/serialization_urlencoded.cxx212
-rw-r--r--forms/source/xforms/submission/serialization_urlencoded.hxx59
-rw-r--r--forms/source/xforms/submission/submission.hxx163
-rw-r--r--forms/source/xforms/submission/submission_get.cxx119
-rw-r--r--forms/source/xforms/submission/submission_get.hxx47
-rw-r--r--forms/source/xforms/submission/submission_post.cxx107
-rw-r--r--forms/source/xforms/submission/submission_post.hxx43
-rw-r--r--forms/source/xforms/submission/submission_put.cxx83
-rw-r--r--forms/source/xforms/submission/submission_put.hxx46
-rw-r--r--forms/source/xforms/unohelper.cxx106
-rw-r--r--forms/source/xforms/unohelper.hxx60
-rw-r--r--forms/source/xforms/warnings_guard_unicode_regex.h51
-rw-r--r--forms/source/xforms/xforms_services.cxx75
-rw-r--r--forms/source/xforms/xforms_services.hxx30
-rw-r--r--forms/source/xforms/xformsevent.cxx103
-rw-r--r--forms/source/xforms/xformsevent.hxx69
-rw-r--r--forms/source/xforms/xmlhelper.cxx150
-rw-r--r--forms/source/xforms/xmlhelper.hxx54
-rw-r--r--forms/source/xforms/xpathlib/extension.cxx107
-rw-r--r--forms/source/xforms/xpathlib/extension.hxx42
-rw-r--r--forms/source/xforms/xpathlib/makefile.mk56
-rw-r--r--forms/source/xforms/xpathlib/xpathlib.cxx570
-rw-r--r--forms/source/xforms/xpathlib/xpathlib.hxx86
-rw-r--r--forms/util/frm.dxp3
-rw-r--r--forms/util/frm.xml569
-rw-r--r--forms/util/makefile.mk113
-rw-r--r--forms/workben/xforms/sickness.odtbin0 -> 9233 bytes
-rw-r--r--forms/workben/xforms/simple_validation.odtbin0 -> 7184 bytes
-rw-r--r--forms/workben/xforms/vacationrequest.odtbin0 -> 8089 bytes
-rw-r--r--forms/workben/xforms/xforms-ubl.odtbin0 -> 22265 bytes
-rw-r--r--graphite/graphite-2.3.1.patch2396
-rw-r--r--graphite/graphite-2.3.1.patch.mingw159
-rw-r--r--graphite/makefile.mk175
-rw-r--r--graphite/prj/build.lst3
-rw-r--r--graphite/prj/d.lst15
-rw-r--r--guw/guw.cc686
-rw-r--r--guw/makefile5
-rwxr-xr-xhsqldb/makefile.mk83
-rw-r--r--hsqldb/patches/i103528.patch11
-rw-r--r--hsqldb/patches/i104901.patch27
-rw-r--r--hsqldb/patches/i96823.patch94
-rw-r--r--hsqldb/patches/i97032.patch10
-rwxr-xr-xhsqldb/prj/build.lst2
-rwxr-xr-xhsqldb/prj/d.lst1
-rwxr-xr-xhsqldb/version.mk6
-rw-r--r--hunspell/hunspell-1.2.8-thesfix.patch28
-rw-r--r--hunspell/hunspell-1.2.9-crashfix.patch11
-rw-r--r--hunspell/hunspell-mingw.patch12
-rw-r--r--hunspell/hunspell-solaris.patch12
-rw-r--r--hunspell/hunspell-stacksmash.patch28
-rw-r--r--hunspell/hunspell-wntconfig.patch4
-rw-r--r--hunspell/makefile.mk103
-rw-r--r--hunspell/prj/build.lst3
-rw-r--r--hunspell/prj/d.lst5
-rw-r--r--hwpfilter/inc/makefile.mk47
-rw-r--r--hwpfilter/inc/pch/precompiled_hwpfilter.cxx31
-rw-r--r--hwpfilter/inc/pch/precompiled_hwpfilter.hxx34
-rw-r--r--hwpfilter/prj/build.lst5
-rw-r--r--hwpfilter/prj/d.lst5
-rw-r--r--hwpfilter/source/attributes.cxx171
-rw-r--r--hwpfilter/source/attributes.hxx76
-rw-r--r--hwpfilter/source/cspline.cpp176
-rw-r--r--hwpfilter/source/cspline.h39
-rw-r--r--hwpfilter/source/datecode.h60
-rw-r--r--hwpfilter/source/drawdef.h265
-rw-r--r--hwpfilter/source/drawing.h814
-rw-r--r--hwpfilter/source/fontmap.cpp177
-rw-r--r--hwpfilter/source/formula.cpp689
-rw-r--r--hwpfilter/source/formula.h105
-rw-r--r--hwpfilter/source/grammar.cpp1477
-rw-r--r--hwpfilter/source/grammar.h68
-rw-r--r--hwpfilter/source/hbox.cpp716
-rw-r--r--hwpfilter/source/hbox.h1044
-rw-r--r--hwpfilter/source/hcode.cpp1542
-rw-r--r--hwpfilter/source/hcode.h87
-rw-r--r--hwpfilter/source/hfont.cpp110
-rw-r--r--hwpfilter/source/hfont.h80
-rw-r--r--hwpfilter/source/hgzip.cpp340
-rw-r--r--hwpfilter/source/hgzip.h117
-rw-r--r--hwpfilter/source/himgutil.cpp172
-rw-r--r--hwpfilter/source/himgutil.h79
-rw-r--r--hwpfilter/source/hinfo.cpp224
-rw-r--r--hwpfilter/source/hinfo.h267
-rw-r--r--hwpfilter/source/hiodev.cpp368
-rw-r--r--hwpfilter/source/hiodev.h174
-rw-r--r--hwpfilter/source/hpara.cpp323
-rw-r--r--hwpfilter/source/hpara.h185
-rw-r--r--hwpfilter/source/hstream.cpp83
-rw-r--r--hwpfilter/source/hstream.h69
-rw-r--r--hwpfilter/source/hstyle.cpp156
-rw-r--r--hwpfilter/source/hstyle.h64
-rw-r--r--hwpfilter/source/htags.cpp171
-rw-r--r--hwpfilter/source/htags.h92
-rw-r--r--hwpfilter/source/hutil.cpp104
-rw-r--r--hwpfilter/source/hutil.h50
-rw-r--r--hwpfilter/source/hwpeq.cpp767
-rw-r--r--hwpfilter/source/hwpeq.h47
-rw-r--r--hwpfilter/source/hwpfile.cpp683
-rw-r--r--hwpfilter/source/hwpfile.h315
-rw-r--r--hwpfilter/source/hwplib.h247
-rw-r--r--hwpfilter/source/hwpread.cpp816
-rw-r--r--hwpfilter/source/hwpreader.cxx4952
-rw-r--r--hwpfilter/source/hwpreader.hxx403
-rw-r--r--hwpfilter/source/ksc5601.h763
-rw-r--r--hwpfilter/source/lexer.cpp2419
-rw-r--r--hwpfilter/source/list.hxx286
-rw-r--r--hwpfilter/source/makefile.mk97
-rw-r--r--hwpfilter/source/mapping.h402
-rw-r--r--hwpfilter/source/mzstring.cpp315
-rw-r--r--hwpfilter/source/mzstring.h190
-rw-r--r--hwpfilter/source/nodes.h110
-rw-r--r--hwpfilter/source/precompile.h46
-rw-r--r--hwpfilter/source/solver.cpp186
-rw-r--r--hwpfilter/source/solver.h53
-rw-r--r--hyphen/hyphen-2.4.patch176
-rw-r--r--hyphen/makefile.mk107
-rw-r--r--hyphen/prj/build.lst3
-rw-r--r--hyphen/prj/d.lst5
-rw-r--r--i18npool/inc/breakiteratorImpl.hxx155
-rw-r--r--i18npool/inc/breakiterator_cjk.hxx81
-rw-r--r--i18npool/inc/breakiterator_ctl.hxx67
-rw-r--r--i18npool/inc/breakiterator_th.hxx51
-rw-r--r--i18npool/inc/breakiterator_unicode.hxx105
-rw-r--r--i18npool/inc/bullet.h334
-rw-r--r--i18npool/inc/calendarImpl.hxx109
-rw-r--r--i18npool/inc/calendar_gregorian.hxx177
-rw-r--r--i18npool/inc/calendar_hijri.hxx87
-rw-r--r--i18npool/inc/calendar_jewish.hxx57
-rw-r--r--i18npool/inc/cclass_cjk.hxx98
-rw-r--r--i18npool/inc/cclass_unicode.hxx191
-rw-r--r--i18npool/inc/chaptercollator.hxx65
-rw-r--r--i18npool/inc/characterclassificationImpl.hxx121
-rw-r--r--i18npool/inc/chartonum.hxx64
-rw-r--r--i18npool/inc/collatorImpl.hxx121
-rw-r--r--i18npool/inc/collator_unicode.hxx88
-rw-r--r--i18npool/inc/defaultnumberingprovider.hxx109
-rw-r--r--i18npool/inc/i18npool/i18npooldllapi.h43
-rw-r--r--i18npool/inc/i18npool/lang.h524
-rw-r--r--i18npool/inc/i18npool/mslangid.hxx315
-rw-r--r--i18npool/inc/i18npool/paper.hxx150
-rw-r--r--i18npool/inc/indexentrysupplier.hxx113
-rw-r--r--i18npool/inc/indexentrysupplier_asian.hxx68
-rw-r--r--i18npool/inc/indexentrysupplier_common.hxx113
-rw-r--r--i18npool/inc/indexentrysupplier_default.hxx117
-rw-r--r--i18npool/inc/indexentrysupplier_ja_phonetic.hxx78
-rw-r--r--i18npool/inc/inputsequencechecker.hxx93
-rw-r--r--i18npool/inc/inputsequencechecker_hi.hxx58
-rw-r--r--i18npool/inc/inputsequencechecker_th.hxx55
-rw-r--r--i18npool/inc/localedata.hxx142
-rw-r--r--i18npool/inc/makefile.mk48
-rw-r--r--i18npool/inc/nativenumbersupplier.hxx94
-rw-r--r--i18npool/inc/numberformatcode.hxx84
-rw-r--r--i18npool/inc/numtochar.hxx65
-rw-r--r--i18npool/inc/numtotext_cjk.hxx80
-rw-r--r--i18npool/inc/ordinalsuffix.hxx60
-rw-r--r--i18npool/inc/pch/precompiled_i18npool.cxx31
-rw-r--r--i18npool/inc/pch/precompiled_i18npool.hxx34
-rw-r--r--i18npool/inc/scripttypedetector.hxx69
-rw-r--r--i18npool/inc/servicename.hxx89
-rw-r--r--i18npool/inc/textToPronounce_zh.hxx84
-rw-r--r--i18npool/inc/textconversion.hxx214
-rw-r--r--i18npool/inc/textconversionImpl.hxx106
-rw-r--r--i18npool/inc/texttonum.hxx62
-rw-r--r--i18npool/inc/transliterationImpl.hxx158
-rw-r--r--i18npool/inc/transliteration_Ignore.hxx191
-rw-r--r--i18npool/inc/transliteration_Numeric.hxx76
-rw-r--r--i18npool/inc/transliteration_OneToOne.hxx130
-rw-r--r--i18npool/inc/transliteration_body.hxx123
-rw-r--r--i18npool/inc/transliteration_caseignore.hxx79
-rw-r--r--i18npool/inc/transliteration_commonclass.hxx125
-rw-r--r--i18npool/inc/warnings_guard_unicode_brkiter.h51
-rw-r--r--i18npool/inc/warnings_guard_unicode_calendar.h51
-rw-r--r--i18npool/inc/warnings_guard_unicode_tblcoll.h51
-rw-r--r--i18npool/inc/wtt.h77
-rw-r--r--i18npool/inc/xdictionary.hxx98
-rw-r--r--i18npool/prj/build.lst26
-rw-r--r--i18npool/prj/d.lst48
-rw-r--r--i18npool/source/breakiterator/breakiteratorImpl.cxx603
-rw-r--r--i18npool/source/breakiterator/breakiterator_cjk.cxx189
-rw-r--r--i18npool/source/breakiterator/breakiterator_ctl.cxx148
-rw-r--r--i18npool/source/breakiterator/breakiterator_th.cxx160
-rw-r--r--i18npool/source/breakiterator/breakiterator_unicode.cxx448
-rw-r--r--i18npool/source/breakiterator/data/char_in.txt108
-rw-r--r--i18npool/source/breakiterator/data/count_word.txt125
-rw-r--r--i18npool/source/breakiterator/data/count_word_fi.txt134
-rw-r--r--i18npool/source/breakiterator/data/dict.map12
-rw-r--r--i18npool/source/breakiterator/data/dict_word.txt148
-rw-r--r--i18npool/source/breakiterator/data/dict_word_ca.txt139
-rw-r--r--i18npool/source/breakiterator/data/dict_word_fi.txt147
-rw-r--r--i18npool/source/breakiterator/data/dict_word_he.txt139
-rw-r--r--i18npool/source/breakiterator/data/dict_word_hu.txt162
-rw-r--r--i18npool/source/breakiterator/data/dict_word_nodash.txt147
-rw-r--r--i18npool/source/breakiterator/data/dict_word_prepostdash.txt157
-rw-r--r--i18npool/source/breakiterator/data/edit_word.txt142
-rw-r--r--i18npool/source/breakiterator/data/edit_word_he.txt142
-rw-r--r--i18npool/source/breakiterator/data/edit_word_hu.txt159
-rw-r--r--i18npool/source/breakiterator/data/ja.dic119817
-rw-r--r--i18npool/source/breakiterator/data/line.txt634
-rw-r--r--i18npool/source/breakiterator/data/makefile.mk84
-rw-r--r--i18npool/source/breakiterator/data/sent.txt128
-rw-r--r--i18npool/source/breakiterator/data/zh.dic251404
-rw-r--r--i18npool/source/breakiterator/gendict.cxx208
-rw-r--r--i18npool/source/breakiterator/makefile.mk110
-rw-r--r--i18npool/source/breakiterator/xdictionary.cxx405
-rw-r--r--i18npool/source/calendar/calendarImpl.cxx326
-rw-r--r--i18npool/source/calendar/calendar_gregorian.cxx1089
-rw-r--r--i18npool/source/calendar/calendar_hijri.cxx344
-rw-r--r--i18npool/source/calendar/calendar_jewish.cxx309
-rw-r--r--i18npool/source/calendar/makefile.mk53
-rw-r--r--i18npool/source/characterclassification/cclass_unicode.cxx290
-rw-r--r--i18npool/source/characterclassification/cclass_unicode_parser.cxx1070
-rw-r--r--i18npool/source/characterclassification/characterclassificationImpl.cxx239
-rw-r--r--i18npool/source/characterclassification/makefile.mk52
-rw-r--r--i18npool/source/characterclassification/scripttypedetector.cxx184
-rw-r--r--i18npool/source/collator/chaptercollator.cxx114
-rw-r--r--i18npool/source/collator/collatorImpl.cxx263
-rw-r--r--i18npool/source/collator/collator_unicode.cxx178
-rwxr-xr-xi18npool/source/collator/data/ca_charset.txt4
-rw-r--r--i18npool/source/collator/data/collator_data.map26
-rw-r--r--i18npool/source/collator/data/dz_charset.txt74
-rw-r--r--i18npool/source/collator/data/hu_charset.txt14
-rw-r--r--i18npool/source/collator/data/ja_charset.txt1446
-rw-r--r--i18npool/source/collator/data/ja_phonetic_alphanumeric_first.txt1466
-rw-r--r--i18npool/source/collator/data/ja_phonetic_alphanumeric_last.txt1466
-rw-r--r--i18npool/source/collator/data/ko_charset.txt733
-rw-r--r--i18npool/source/collator/data/ku_alphanumeric.txt9
-rw-r--r--i18npool/source/collator/data/ln_charset.txt6
-rw-r--r--i18npool/source/collator/data/makefile.mk64
-rw-r--r--i18npool/source/collator/data/my_dictionary.txt373
-rw-r--r--i18npool/source/collator/data/ne_charset.txt5
-rw-r--r--i18npool/source/collator/data/zh_TW_charset.txt1337
-rw-r--r--i18npool/source/collator/data/zh_TW_radical.txt2787
-rw-r--r--i18npool/source/collator/data/zh_TW_stroke.txt2787
-rw-r--r--i18npool/source/collator/data/zh_charset.txt2099
-rw-r--r--i18npool/source/collator/data/zh_pinyin.txt2099
-rw-r--r--i18npool/source/collator/data/zh_radical.txt2787
-rw-r--r--i18npool/source/collator/data/zh_stroke.txt2101
-rw-r--r--i18npool/source/collator/data/zh_zhuyin.txt1702
-rw-r--r--i18npool/source/collator/gencoll_rule.cxx143
-rw-r--r--i18npool/source/collator/makefile.mk73
-rw-r--r--i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx862
-rw-r--r--i18npool/source/defaultnumberingprovider/makefile.mk49
-rw-r--r--i18npool/source/indexentry/data/index_data.map17
-rw-r--r--i18npool/source/indexentry/data/indexdata_alphanumeric.h50
-rw-r--r--i18npool/source/indexentry/data/indexdata_ja_phonetic.h122
-rw-r--r--i18npool/source/indexentry/data/indexdata_ko_dict.txt16167
-rw-r--r--i18npool/source/indexentry/data/indexdata_zh_TW_radical.txt27786
-rw-r--r--i18npool/source/indexentry/data/indexdata_zh_TW_stroke.txt27786
-rw-r--r--i18npool/source/indexentry/data/indexdata_zh_pinyin.txt20903
-rw-r--r--i18npool/source/indexentry/data/indexdata_zh_radical.txt27786
-rw-r--r--i18npool/source/indexentry/data/indexdata_zh_stroke.txt20923
-rw-r--r--i18npool/source/indexentry/data/indexdata_zh_zhuyin.txt16971
-rw-r--r--i18npool/source/indexentry/data/ko_phonetic.txt16153
-rw-r--r--i18npool/source/indexentry/data/makefile.mk67
-rw-r--r--i18npool/source/indexentry/data/zh_pinyin.txt20378
-rw-r--r--i18npool/source/indexentry/data/zh_zhuyin.txt16936
-rw-r--r--i18npool/source/indexentry/genindex_data.cxx169
-rw-r--r--i18npool/source/indexentry/indexentrysupplier.cxx212
-rw-r--r--i18npool/source/indexentry/indexentrysupplier_asian.cxx157
-rw-r--r--i18npool/source/indexentry/indexentrysupplier_common.cxx153
-rw-r--r--i18npool/source/indexentry/indexentrysupplier_default.cxx293
-rw-r--r--i18npool/source/indexentry/indexentrysupplier_ja_phonetic.cxx109
-rw-r--r--i18npool/source/indexentry/makefile.mk66
-rw-r--r--i18npool/source/inputchecker/inputsequencechecker.cxx169
-rw-r--r--i18npool/source/inputchecker/inputsequencechecker_hi.cxx151
-rw-r--r--i18npool/source/inputchecker/inputsequencechecker_th.cxx157
-rw-r--r--i18npool/source/inputchecker/makefile.mk51
-rw-r--r--i18npool/source/isolang/insys.cxx46
-rw-r--r--i18npool/source/isolang/inunx.cxx153
-rw-r--r--i18npool/source/isolang/inwnt.cxx112
-rw-r--r--i18npool/source/isolang/isolang.cxx1110
-rwxr-xr-xi18npool/source/isolang/langid.pl424
-rw-r--r--i18npool/source/isolang/lcid.awk171
-rw-r--r--i18npool/source/isolang/makefile.mk69
-rw-r--r--i18npool/source/isolang/mslangid.cxx470
-rw-r--r--i18npool/source/localedata/LocaleNode.cxx1802
-rw-r--r--i18npool/source/localedata/LocaleNode.hxx262
-rw-r--r--i18npool/source/localedata/data/af_NA.xml25
-rw-r--r--i18npool/source/localedata/data/af_ZA.xml186
-rw-r--r--i18npool/source/localedata/data/ak_GH.xml374
-rw-r--r--i18npool/source/localedata/data/am_ET.xml193
-rw-r--r--i18npool/source/localedata/data/ar_DZ.xml437
-rw-r--r--i18npool/source/localedata/data/ar_EG.xml523
-rw-r--r--i18npool/source/localedata/data/ar_LB.xml290
-rw-r--r--i18npool/source/localedata/data/ar_OM.xml357
-rw-r--r--i18npool/source/localedata/data/ar_SA.xml290
-rw-r--r--i18npool/source/localedata/data/ar_TN.xml290
-rw-r--r--i18npool/source/localedata/data/ast_ES.xml359
-rw-r--r--i18npool/source/localedata/data/az_AZ.xml339
-rw-r--r--i18npool/source/localedata/data/be_BY.xml334
-rw-r--r--i18npool/source/localedata/data/bg_BG.xml409
-rw-r--r--i18npool/source/localedata/data/bn_BD.xml178
-rw-r--r--i18npool/source/localedata/data/bn_IN.xml352
-rw-r--r--i18npool/source/localedata/data/br_FR.xml347
-rw-r--r--i18npool/source/localedata/data/bs_BA.xml460
-rw-r--r--i18npool/source/localedata/data/ca_ES.xml348
-rw-r--r--i18npool/source/localedata/data/cs_CZ.xml380
-rw-r--r--i18npool/source/localedata/data/currency-check.awk318
-rw-r--r--i18npool/source/localedata/data/cv_RU.xml341
-rw-r--r--i18npool/source/localedata/data/cy_GB.xml143
-rw-r--r--i18npool/source/localedata/data/da_DK.xml336
-rw-r--r--i18npool/source/localedata/data/de_AT.xml321
-rw-r--r--i18npool/source/localedata/data/de_CH.xml199
-rw-r--r--i18npool/source/localedata/data/de_DE.xml355
-rw-r--r--i18npool/source/localedata/data/de_LI.xml196
-rw-r--r--i18npool/source/localedata/data/de_LU.xml321
-rw-r--r--i18npool/source/localedata/data/dz_BT.xml509
-rw-r--r--i18npool/source/localedata/data/ee_GH.xml368
-rw-r--r--i18npool/source/localedata/data/el_GR.xml341
-rw-r--r--i18npool/source/localedata/data/en_AU.xml314
-rw-r--r--i18npool/source/localedata/data/en_BZ.xml65
-rw-r--r--i18npool/source/localedata/data/en_CA.xml206
-rw-r--r--i18npool/source/localedata/data/en_GB.xml240
-rw-r--r--i18npool/source/localedata/data/en_GH.xml361
-rw-r--r--i18npool/source/localedata/data/en_IE.xml79
-rw-r--r--i18npool/source/localedata/data/en_IN.xml43
-rw-r--r--i18npool/source/localedata/data/en_JM.xml314
-rw-r--r--i18npool/source/localedata/data/en_NA.xml322
-rw-r--r--i18npool/source/localedata/data/en_NZ.xml173
-rw-r--r--i18npool/source/localedata/data/en_PH.xml33
-rw-r--r--i18npool/source/localedata/data/en_TT.xml173
-rw-r--r--i18npool/source/localedata/data/en_US.xml569
-rw-r--r--i18npool/source/localedata/data/en_ZA.xml314
-rw-r--r--i18npool/source/localedata/data/en_ZW.xml173
-rw-r--r--i18npool/source/localedata/data/eo.xml349
-rw-r--r--i18npool/source/localedata/data/es_AR.xml209
-rw-r--r--i18npool/source/localedata/data/es_BO.xml220
-rw-r--r--i18npool/source/localedata/data/es_CL.xml206
-rw-r--r--i18npool/source/localedata/data/es_CO.xml199
-rw-r--r--i18npool/source/localedata/data/es_CR.xml218
-rw-r--r--i18npool/source/localedata/data/es_DO.xml243
-rw-r--r--i18npool/source/localedata/data/es_EC.xml206
-rw-r--r--i18npool/source/localedata/data/es_ES.xml349
-rw-r--r--i18npool/source/localedata/data/es_GT.xml243
-rw-r--r--i18npool/source/localedata/data/es_HN.xml36
-rw-r--r--i18npool/source/localedata/data/es_MX.xml36
-rw-r--r--i18npool/source/localedata/data/es_NI.xml58
-rw-r--r--i18npool/source/localedata/data/es_PA.xml43
-rw-r--r--i18npool/source/localedata/data/es_PE.xml243
-rw-r--r--i18npool/source/localedata/data/es_PR.xml36
-rw-r--r--i18npool/source/localedata/data/es_PY.xml36
-rw-r--r--i18npool/source/localedata/data/es_SV.xml36
-rw-r--r--i18npool/source/localedata/data/es_UY.xml58
-rw-r--r--i18npool/source/localedata/data/es_VE.xml43
-rw-r--r--i18npool/source/localedata/data/et_EE.xml348
-rw-r--r--i18npool/source/localedata/data/eu.xml356
-rw-r--r--i18npool/source/localedata/data/fa_IR.xml640
-rw-r--r--i18npool/source/localedata/data/fi_FI.xml342
-rw-r--r--i18npool/source/localedata/data/fo_FO.xml379
-rw-r--r--i18npool/source/localedata/data/fr_BE.xml206
-rw-r--r--i18npool/source/localedata/data/fr_CA.xml209
-rw-r--r--i18npool/source/localedata/data/fr_CH.xml206
-rw-r--r--i18npool/source/localedata/data/fr_FR.xml347
-rw-r--r--i18npool/source/localedata/data/fr_LU.xml203
-rw-r--r--i18npool/source/localedata/data/fr_MC.xml26
-rw-r--r--i18npool/source/localedata/data/fur_IT.xml361
-rw-r--r--i18npool/source/localedata/data/fy_NL.xml360
-rw-r--r--i18npool/source/localedata/data/ga_IE.xml186
-rw-r--r--i18npool/source/localedata/data/gl_ES.xml343
-rw-r--r--i18npool/source/localedata/data/gsc_FR.xml361
-rw-r--r--i18npool/source/localedata/data/gu_IN.xml173
-rw-r--r--i18npool/source/localedata/data/gug_PY.xml361
-rw-r--r--i18npool/source/localedata/data/ha_GH.xml371
-rw-r--r--i18npool/source/localedata/data/he_IL.xml472
-rw-r--r--i18npool/source/localedata/data/hi_IN.xml394
-rw-r--r--i18npool/source/localedata/data/hil_PH.xml362
-rw-r--r--i18npool/source/localedata/data/hr_HR.xml452
-rw-r--r--i18npool/source/localedata/data/hsb_DE.xml350
-rw-r--r--i18npool/source/localedata/data/hu_HU.xml342
-rw-r--r--i18npool/source/localedata/data/hy_AM.xml348
-rw-r--r--i18npool/source/localedata/data/ia.xml384
-rw-r--r--i18npool/source/localedata/data/id_ID.xml329
-rw-r--r--i18npool/source/localedata/data/is_IS.xml408
-rw-r--r--i18npool/source/localedata/data/it_CH.xml196
-rw-r--r--i18npool/source/localedata/data/it_IT.xml349
-rw-r--r--i18npool/source/localedata/data/ja_JP.xml591
-rw-r--r--i18npool/source/localedata/data/ka_GE.xml348
-rw-r--r--i18npool/source/localedata/data/kab_DZ.xml358
-rw-r--r--i18npool/source/localedata/data/kk_KZ.xml360
-rw-r--r--i18npool/source/localedata/data/kl_GL.xml335
-rw-r--r--i18npool/source/localedata/data/km_KH.xml440
-rw-r--r--i18npool/source/localedata/data/kn_IN.xml173
-rw-r--r--i18npool/source/localedata/data/ko_KR.xml671
-rw-r--r--i18npool/source/localedata/data/ku_TR.xml424
-rw-r--r--i18npool/source/localedata/data/ky_KG.xml334
-rw-r--r--i18npool/source/localedata/data/la_VA.xml349
-rw-r--r--i18npool/source/localedata/data/lb_LU.xml348
-rw-r--r--i18npool/source/localedata/data/lg_UG.xml361
-rw-r--r--i18npool/source/localedata/data/linkermapfile-check.awk105
-rw-r--r--i18npool/source/localedata/data/list-locales.awk75
-rw-r--r--i18npool/source/localedata/data/ln_CD.xml365
-rw-r--r--i18npool/source/localedata/data/lo_LA.xml520
-rw-r--r--i18npool/source/localedata/data/locale.dtd550
-rw-r--r--i18npool/source/localedata/data/localedata_en.map246
-rw-r--r--i18npool/source/localedata/data/localedata_es.map348
-rw-r--r--i18npool/source/localedata/data/localedata_euro.map1197
-rw-r--r--i18npool/source/localedata/data/localedata_others.map1350
-rw-r--r--i18npool/source/localedata/data/lt_LT.xml440
-rw-r--r--i18npool/source/localedata/data/ltg_LV.xml350
-rw-r--r--i18npool/source/localedata/data/lv_LV.xml417
-rw-r--r--i18npool/source/localedata/data/mai_IN.xml357
-rw-r--r--i18npool/source/localedata/data/makefile.mk518
-rw-r--r--i18npool/source/localedata/data/mk_MK.xml416
-rw-r--r--i18npool/source/localedata/data/ml_IN.xml350
-rw-r--r--i18npool/source/localedata/data/mn_MN.xml378
-rw-r--r--i18npool/source/localedata/data/mr_IN.xml25
-rw-r--r--i18npool/source/localedata/data/ms_MY.xml188
-rw-r--r--i18npool/source/localedata/data/mt_MT.xml362
-rw-r--r--i18npool/source/localedata/data/my_MM.xml489
-rw-r--r--i18npool/source/localedata/data/nb_NO.xml25
-rw-r--r--i18npool/source/localedata/data/ne_NP.xml416
-rw-r--r--i18npool/source/localedata/data/nl_BE.xml210
-rw-r--r--i18npool/source/localedata/data/nl_NL.xml387
-rw-r--r--i18npool/source/localedata/data/nn_NO.xml71
-rw-r--r--i18npool/source/localedata/data/no_NO.xml388
-rw-r--r--i18npool/source/localedata/data/nr_ZA.xml158
-rw-r--r--i18npool/source/localedata/data/nso_ZA.xml149
-rw-r--r--i18npool/source/localedata/data/oc_FR.xml360
-rw-r--r--i18npool/source/localedata/data/om_ET.xml358
-rw-r--r--i18npool/source/localedata/data/or_IN.xml366
-rw-r--r--i18npool/source/localedata/data/pa_IN.xml195
-rw-r--r--i18npool/source/localedata/data/pl_PL.xml346
-rw-r--r--i18npool/source/localedata/data/plt_MG.xml358
-rw-r--r--i18npool/source/localedata/data/pt_BR.xml240
-rw-r--r--i18npool/source/localedata/data/pt_PT.xml380
-rw-r--r--i18npool/source/localedata/data/ro_RO.xml391
-rw-r--r--i18npool/source/localedata/data/ru_RU.xml341
-rw-r--r--i18npool/source/localedata/data/rue_SK.xml359
-rw-r--r--i18npool/source/localedata/data/rw_RW.xml384
-rw-r--r--i18npool/source/localedata/data/sc_IT.xml358
-rw-r--r--i18npool/source/localedata/data/sg_CF.xml361
-rw-r--r--i18npool/source/localedata/data/sh_ME.xml41
-rw-r--r--i18npool/source/localedata/data/sh_RS.xml239
-rw-r--r--i18npool/source/localedata/data/sh_YU.xml41
-rw-r--r--i18npool/source/localedata/data/shs_CA.xml417
-rw-r--r--i18npool/source/localedata/data/sk_SK.xml463
-rw-r--r--i18npool/source/localedata/data/sl_SI.xml425
-rw-r--r--i18npool/source/localedata/data/so_SO.xml368
-rw-r--r--i18npool/source/localedata/data/sr_ME.xml41
-rw-r--r--i18npool/source/localedata/data/sr_RS.xml444
-rw-r--r--i18npool/source/localedata/data/sr_YU.xml41
-rw-r--r--i18npool/source/localedata/data/ss_ZA.xml143
-rw-r--r--i18npool/source/localedata/data/st_ZA.xml143
-rw-r--r--i18npool/source/localedata/data/sv_FI.xml321
-rw-r--r--i18npool/source/localedata/data/sv_SE.xml342
-rw-r--r--i18npool/source/localedata/data/sw_TZ.xml350
-rw-r--r--i18npool/source/localedata/data/ta_IN.xml173
-rw-r--r--i18npool/source/localedata/data/te_IN.xml172
-rw-r--r--i18npool/source/localedata/data/tg_TJ.xml341
-rw-r--r--i18npool/source/localedata/data/th_TH.xml674
-rw-r--r--i18npool/source/localedata/data/ti_ER.xml334
-rw-r--r--i18npool/source/localedata/data/tk_TM.xml361
-rw-r--r--i18npool/source/localedata/data/tn_ZA.xml143
-rw-r--r--i18npool/source/localedata/data/tpi_PG.xml361
-rw-r--r--i18npool/source/localedata/data/tr_TR.xml343
-rw-r--r--i18npool/source/localedata/data/ts_ZA.xml164
-rw-r--r--i18npool/source/localedata/data/ug_CN.xml364
-rw-r--r--i18npool/source/localedata/data/uk_UA.xml463
-rw-r--r--i18npool/source/localedata/data/uz_UZ.xml334
-rw-r--r--i18npool/source/localedata/data/ve_ZA.xml164
-rw-r--r--i18npool/source/localedata/data/vi_VN.xml417
-rw-r--r--i18npool/source/localedata/data/wa_BE.xml342
-rw-r--r--i18npool/source/localedata/data/xh_ZA.xml158
-rw-r--r--i18npool/source/localedata/data/zh_CN.xml521
-rw-r--r--i18npool/source/localedata/data/zh_HK.xml276
-rw-r--r--i18npool/source/localedata/data/zh_MO.xml265
-rw-r--r--i18npool/source/localedata/data/zh_SG.xml262
-rw-r--r--i18npool/source/localedata/data/zh_TW.xml450
-rw-r--r--i18npool/source/localedata/data/zu_ZA.xml143
-rw-r--r--i18npool/source/localedata/filewriter.cxx215
-rw-r--r--i18npool/source/localedata/localedata.cxx1473
-rw-r--r--i18npool/source/localedata/makefile.mk84
-rw-r--r--i18npool/source/localedata/saxparser.cxx432
-rw-r--r--i18npool/source/nativenumber/data/numberchar.h280
-rw-r--r--i18npool/source/nativenumber/makefile.mk49
-rw-r--r--i18npool/source/nativenumber/nativenumbersupplier.cxx921
-rw-r--r--i18npool/source/numberformatcode/makefile.mk49
-rw-r--r--i18npool/source/numberformatcode/numberformatcode.cxx306
-rw-r--r--i18npool/source/ordinalsuffix/makefile.mk50
-rw-r--r--i18npool/source/ordinalsuffix/ordinalsuffix.cxx120
-rw-r--r--i18npool/source/paper/makefile.mk71
-rw-r--r--i18npool/source/paper/paper.cxx512
-rw-r--r--i18npool/source/registerservices/makefile.mk46
-rw-r--r--i18npool/source/registerservices/registerservices.cxx642
-rw-r--r--i18npool/source/search/levdis.cxx781
-rw-r--r--i18npool/source/search/levdis.hxx231
-rw-r--r--i18npool/source/search/makefile.mk78
-rw-r--r--i18npool/source/search/textsearch.cxx1041
-rw-r--r--i18npool/source/search/textsearch.hxx157
-rw-r--r--i18npool/source/textconversion/data/hhc_char.dic502
-rw-r--r--i18npool/source/textconversion/data/makefile.mk68
-rw-r--r--i18npool/source/textconversion/data/stc_char.dic2835
-rw-r--r--i18npool/source/textconversion/data/stc_word.dic1150
-rw-r--r--i18npool/source/textconversion/data/textconv_dict.map23
-rw-r--r--i18npool/source/textconversion/genconv_dict.cxx485
-rw-r--r--i18npool/source/textconversion/makefile.mk59
-rw-r--r--i18npool/source/textconversion/textconversion.cxx94
-rw-r--r--i18npool/source/textconversion/textconversionImpl.cxx148
-rw-r--r--i18npool/source/textconversion/textconversion_ko.cxx346
-rw-r--r--i18npool/source/textconversion/textconversion_zh.cxx299
-rw-r--r--i18npool/source/transliteration/chartonum.cxx67
-rw-r--r--i18npool/source/transliteration/data/numberchar.h95
-rw-r--r--i18npool/source/transliteration/fullwidthToHalfwidth.cxx157
-rw-r--r--i18npool/source/transliteration/halfwidthToFullwidth.cxx138
-rw-r--r--i18npool/source/transliteration/hiraganaToKatakana.cxx64
-rw-r--r--i18npool/source/transliteration/ignoreBaFa_ja_JP.cxx62
-rw-r--r--i18npool/source/transliteration/ignoreHyuByu_ja_JP.cxx63
-rw-r--r--i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx152
-rw-r--r--i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx160
-rw-r--r--i18npool/source/transliteration/ignoreKana.cxx74
-rw-r--r--i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx109
-rw-r--r--i18npool/source/transliteration/ignoreMiddleDot_ja_JP.cxx63
-rw-r--r--i18npool/source/transliteration/ignoreMinusSign_ja_JP.cxx70
-rw-r--r--i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx368
-rw-r--r--i18npool/source/transliteration/ignoreSeZe_ja_JP.cxx68
-rw-r--r--i18npool/source/transliteration/ignoreSeparator_ja_JP.cxx128
-rw-r--r--i18npool/source/transliteration/ignoreSize_ja_JP.cxx75
-rw-r--r--i18npool/source/transliteration/ignoreSpace_ja_JP.cxx70
-rw-r--r--i18npool/source/transliteration/ignoreTiJi_ja_JP.cxx73
-rw-r--r--i18npool/source/transliteration/ignoreTraditionalKana_ja_JP.cxx71
-rw-r--r--i18npool/source/transliteration/ignoreTraditionalKanji_ja_JP.cxx750
-rw-r--r--i18npool/source/transliteration/ignoreWidth.cxx75
-rw-r--r--i18npool/source/transliteration/ignoreZiZu_ja_JP.cxx71
-rw-r--r--i18npool/source/transliteration/katakanaToHiragana.cxx61
-rw-r--r--i18npool/source/transliteration/largeToSmall_ja_JP.cxx96
-rw-r--r--i18npool/source/transliteration/makefile.mk84
-rw-r--r--i18npool/source/transliteration/numtochar.cxx72
-rw-r--r--i18npool/source/transliteration/numtotext_cjk.cxx95
-rw-r--r--i18npool/source/transliteration/smallToLarge_ja_JP.cxx96
-rw-r--r--i18npool/source/transliteration/textToPronounce_zh.cxx171
-rw-r--r--i18npool/source/transliteration/texttonum.cxx67
-rw-r--r--i18npool/source/transliteration/transliterationImpl.cxx687
-rw-r--r--i18npool/source/transliteration/transliteration_Ignore.cxx223
-rw-r--r--i18npool/source/transliteration/transliteration_Numeric.cxx152
-rw-r--r--i18npool/source/transliteration/transliteration_OneToOne.cxx110
-rw-r--r--i18npool/source/transliteration/transliteration_body.cxx362
-rw-r--r--i18npool/source/transliteration/transliteration_caseignore.cxx161
-rw-r--r--i18npool/source/transliteration/transliteration_commonclass.cxx167
-rw-r--r--i18npool/util/makefile.mk81
-rw-r--r--i18npool/util/makefile.pmk31
-rw-r--r--i18npool/version.mk40
-rw-r--r--i18npool/xml/BreakIterator.xml82
-rw-r--r--i18npool/xml/Calendar.xml54
-rw-r--r--i18npool/xml/ChapterCollator.xml33
-rw-r--r--i18npool/xml/CharacterClassification.xml52
-rw-r--r--i18npool/xml/Collator.xml33
-rw-r--r--i18npool/xml/DefaultNumberingProvider.xml52
-rw-r--r--i18npool/xml/IndexEntrySupplier.xml53
-rw-r--r--i18npool/xml/LocaleData.xml60
-rw-r--r--i18npool/xml/NumberFormatCodeMapper.xml64
-rw-r--r--i18npool/xml/OrdinalSuffix.xml34
-rw-r--r--i18npool/xml/TextSearch.xml52
-rw-r--r--i18npool/xml/Transliteration.xml73
-rw-r--r--i18nutil/inc/i18nutil/casefolding.hxx87
-rw-r--r--i18nutil/inc/i18nutil/oneToOneMapping.hxx103
-rw-r--r--i18nutil/inc/i18nutil/unicode.hxx69
-rw-r--r--i18nutil/inc/i18nutil/widthfolding.hxx62
-rw-r--r--i18nutil/inc/i18nutil/x_rtl_ustring.h81
-rw-r--r--i18nutil/prj/build.lst3
-rw-r--r--i18nutil/prj/d.lst13
-rw-r--r--i18nutil/source/utility/casefolding.cxx169
-rw-r--r--i18nutil/source/utility/casefolding_data.h867
-rw-r--r--i18nutil/source/utility/makefile.mk78
-rw-r--r--i18nutil/source/utility/oneToOneMapping.cxx164
-rw-r--r--i18nutil/source/utility/unicode.cxx496
-rw-r--r--i18nutil/source/utility/unicode_data.h1652
-rw-r--r--i18nutil/source/utility/widthfolding.cxx304
-rw-r--r--i18nutil/source/utility/widthfolding_data.h962
-rw-r--r--icc/README39
-rw-r--r--icc/SampleICC-1.3.2.patch5142
-rw-r--r--icc/makefile.mk58
-rw-r--r--icc/makefiles.zipbin0 -> 4073 bytes
-rw-r--r--icc/prj/build.lst3
-rw-r--r--icc/prj/d.lst5
-rw-r--r--icc/source/create_sRGB_profile/Makefile.am13
-rw-r--r--icc/source/create_sRGB_profile/Makefile.in378
-rw-r--r--icc/source/create_sRGB_profile/create_sRGB_profile.cpp551
-rw-r--r--icu/Readme4
-rw-r--r--icu/createmak.cfg452
-rw-r--r--icu/createmak.pl1109
-rw-r--r--icu/icu4c-4_0_1-src.patch260
-rw-r--r--icu/icu4c-aix.patch155
-rwxr-xr-xicu/icuversion.mk33
-rw-r--r--icu/makefile.mk274
-rw-r--r--icu/prj/build.lst4
-rw-r--r--icu/prj/d.lst36
-rw-r--r--idlc/inc/idlc/astarray.hxx64
-rw-r--r--idlc/inc/idlc/astattribute.hxx123
-rw-r--r--idlc/inc/idlc/astbasetype.hxx64
-rw-r--r--idlc/inc/idlc/astconstant.hxx59
-rw-r--r--idlc/inc/idlc/astconstants.hxx44
-rw-r--r--idlc/inc/idlc/astdeclaration.hxx150
-rw-r--r--idlc/inc/idlc/astenum.hxx59
-rw-r--r--idlc/inc/idlc/astexception.hxx45
-rw-r--r--idlc/inc/idlc/astexpression.hxx188
-rw-r--r--idlc/inc/idlc/astinterface.hxx146
-rw-r--r--idlc/inc/idlc/astinterfacemember.hxx55
-rw-r--r--idlc/inc/idlc/astmember.hxx60
-rw-r--r--idlc/inc/idlc/astmodule.hxx53
-rw-r--r--idlc/inc/idlc/astneeds.hxx50
-rw-r--r--idlc/inc/idlc/astobserves.hxx50
-rw-r--r--idlc/inc/idlc/astoperation.hxx78
-rw-r--r--idlc/inc/idlc/astparameter.hxx57
-rw-r--r--idlc/inc/idlc/astscope.hxx80
-rw-r--r--idlc/inc/idlc/astsequence.hxx61
-rw-r--r--idlc/inc/idlc/astservice.hxx62
-rw-r--r--idlc/inc/idlc/astservicemember.hxx55
-rw-r--r--idlc/inc/idlc/aststack.hxx58
-rw-r--r--idlc/inc/idlc/aststruct.hxx71
-rw-r--r--idlc/inc/idlc/aststructinstance.hxx59
-rw-r--r--idlc/inc/idlc/asttype.hxx47
-rw-r--r--idlc/inc/idlc/asttypedef.hxx55
-rw-r--r--idlc/inc/idlc/astunion.hxx70
-rw-r--r--idlc/inc/idlc/astunionbranch.hxx48
-rw-r--r--idlc/inc/idlc/astunionlabel.hxx54
-rw-r--r--idlc/inc/idlc/errorhandler.hxx159
-rw-r--r--idlc/inc/idlc/fehelper.hxx100
-rw-r--r--idlc/inc/idlc/idlc.hxx178
-rw-r--r--idlc/inc/idlc/idlctypes.hxx268
-rw-r--r--idlc/inc/idlc/inheritedinterface.hxx64
-rw-r--r--idlc/inc/idlc/options.hxx82
-rw-r--r--idlc/inc/makefile.mk47
-rw-r--r--idlc/inc/pch/precompiled_idlc.cxx31
-rw-r--r--idlc/inc/pch/precompiled_idlc.hxx34
-rw-r--r--idlc/prj/build.lst5
-rw-r--r--idlc/prj/d.lst7
-rw-r--r--idlc/source/astarray.cxx77
-rw-r--r--idlc/source/astconstant.cxx139
-rw-r--r--idlc/source/astdeclaration.cxx213
-rw-r--r--idlc/source/astdump.cxx455
-rw-r--r--idlc/source/astenum.cxx128
-rw-r--r--idlc/source/astexpression.cxx1269
-rw-r--r--idlc/source/astinterface.cxx430
-rw-r--r--idlc/source/astoperation.cxx156
-rw-r--r--idlc/source/astscope.cxx357
-rw-r--r--idlc/source/astservice.cxx73
-rw-r--r--idlc/source/aststack.cxx139
-rw-r--r--idlc/source/aststruct.cxx191
-rw-r--r--idlc/source/aststructinstance.cxx73
-rw-r--r--idlc/source/astunion.cxx404
-rw-r--r--idlc/source/attributeexceptions.hxx45
-rw-r--r--idlc/source/errorhandler.cxx707
-rw-r--r--idlc/source/fehelper.cxx147
-rw-r--r--idlc/source/idlc.cxx346
-rw-r--r--idlc/source/idlccompile.cxx422
-rw-r--r--idlc/source/idlcmain.cxx151
-rw-r--r--idlc/source/idlcproduce.cxx213
-rw-r--r--idlc/source/makefile.mk129
-rw-r--r--idlc/source/options.cxx374
-rw-r--r--idlc/source/parser.y3292
-rw-r--r--idlc/source/preproc/cpp.c501
-rw-r--r--idlc/source/preproc/cpp.h215
-rw-r--r--idlc/source/preproc/eval.c793
-rw-r--r--idlc/source/preproc/include.c258
-rw-r--r--idlc/source/preproc/lex.c698
-rw-r--r--idlc/source/preproc/macro.c703
-rw-r--r--idlc/source/preproc/makefile.mk75
-rw-r--r--idlc/source/preproc/nlist.c146
-rw-r--r--idlc/source/preproc/tokens.c537
-rw-r--r--idlc/source/preproc/unix.c250
-rw-r--r--idlc/source/scanner.ll535
-rw-r--r--idlc/source/wrap_parser.cxx34
-rw-r--r--idlc/source/wrap_scanner.cxx34
-rw-r--r--idlc/test/const.idl50
-rw-r--r--idlc/test/enum.idl24
-rw-r--r--idlc/test/exception.idl20
-rw-r--r--idlc/test/identifiers.idl22
-rw-r--r--idlc/test/interface.idl51
-rw-r--r--idlc/test/parser/attribute.tests223
-rw-r--r--idlc/test/parser/constant.tests295
-rw-r--r--idlc/test/parser/constructor.tests199
-rw-r--r--idlc/test/parser/interfaceinheritance.tests280
-rw-r--r--idlc/test/parser/makefile.mk55
-rw-r--r--idlc/test/parser/methodoverload.tests124
-rw-r--r--idlc/test/parser/polystruct.tests255
-rw-r--r--idlc/test/parser/published.tests708
-rw-r--r--idlc/test/parser/struct.tests55
-rw-r--r--idlc/test/parser/typedef.tests67
-rw-r--r--idlc/test/service.idl44
-rw-r--r--idlc/test/singleton.idl41
-rw-r--r--idlc/test/struct.idl107
-rw-r--r--idlc/test/typelookup.idl63
-rw-r--r--idlc/test/union.idl35
-rw-r--r--install-sh276
-rw-r--r--instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmpbin0 -> 7106 bytes
-rw-r--r--instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmpbin0 -> 52242 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/ActionTe.idt73
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/AdminExe.idt13
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/AdminUIS.idt14
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/AdvtExec.idt19
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary.idt20
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/Banner.bmpbin0 -> 7106 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/Image.bmpbin0 -> 52242 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/caution.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/dontinstall.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/install.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/installfirstuse.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/installpartial.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/installstatemenu.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/networkinstall.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/newfolder.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/openfolder.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/setup.icobin0 -> 11502 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/setupcomplete.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/setuppartial.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/setuprepair.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/trashcan.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Binary/up.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/CheckBox.idt4
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Control.idt380
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/ControlC.idt70
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/ControlE.idt138
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/CustomAc.idt10
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Dialog.idt33
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Error.idt133
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/EventMap.idt19
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/InstallE.idt74
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/InstallU.idt30
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/LaunchCo.idt4
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/ListBox.idt3
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Property.idt56
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/RadioBut.idt11
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/TextStyl.idt25
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/UIText.idt53
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/_Validat.idt461
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/bro_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/brodev_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/codes.txt152
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/codes_broo.txt67
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/codes_ooodev.txt152
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/components.txt0
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/ooo_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/ooodev_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/ActionTe.idt73
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/AdminExe.idt13
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/AdminUIS.idt14
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/AdvtExec.idt19
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary.idt20
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Banner.bmpbin0 -> 7106 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Image.bmpbin0 -> 52242 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/caution.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/dontinstall.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/install.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/installfirstuse.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/installpartial.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/installstatemenu.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/networkinstall.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/newfolder.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/openfolder.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/setup.icobin0 -> 11502 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/setupcomplete.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/setuppartial.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/setuprepair.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/trashcan.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/up.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/CheckBox.idt4
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Control.idt380
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/ControlC.idt70
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/ControlE.idt138
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/CustomAc.idt10
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Dialog.idt33
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Error.idt133
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/EventMap.idt19
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/InstallE.idt74
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/InstallU.idt30
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/LaunchCo.idt4
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/ListBox.idt3
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Property.idt56
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/RadioBut.idt11
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/TextStyl.idt25
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/UIText.idt53
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/_Validat.idt461
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/bro_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/brodev_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/codes.txt152
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/codes_broo.txt67
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/codes_ooodev.txt152
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/components.txt0
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/ooo_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/ooodev_patchcodes.txt3
-rw-r--r--instsetoo_native/inc_openoffice/unix/find-requires-gnome.sh11
-rw-r--r--instsetoo_native/inc_openoffice/unix/find-requires-x11.sh9
-rw-r--r--instsetoo_native/inc_openoffice/unix/makefile.mk55
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/ActionTe.ulf373
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/Control.ulf736
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/CustomAc.ulf11
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/Error.ulf391
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/LaunchCo.ulf4
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/Nsis.ulf41
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/Property.ulf47
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/RadioBut.ulf27
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/SIS.ulf18
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/UIText.ulf148
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/makefile.mk62
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/ActionTe.idt73
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt13
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/AdminUIS.idt14
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/AdvtExec.idt19
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/AppSearc.idt7
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary.idt20
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Banner.bmpbin0 -> 7106 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Image.bmpbin0 -> 52242 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/caution.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/dontinstall.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/install.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/installfirstuse.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/installpartial.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/installstatemenu.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/networkinstall.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/newfolder.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/openfolder.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/setup.icobin0 -> 11502 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/setupcomplete.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/setuppartial.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/setuprepair.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/trashcan.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/up.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/CheckBox.idt6
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Control.idt395
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/ControlC.idt79
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/ControlE.idt152
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt131
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Dialog.idt36
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Error.idt133
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/EventMap.idt18
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt191
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/InstallU.idt31
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/LaunchCo.idt5
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/ListBox.idt3
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Property.idt62
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/RadioBut.idt12
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/RegLocat.idt7
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Signatur.idt3
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/TextStyl.idt25
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/UIText.idt53
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/_Validat.idt461
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/codes.txt37
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/codes_broo.txt5
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/codes_broodev.txt5
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/codes_ooodev.txt37
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/components.txt0
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/upgradecode_remove_ooo.txt121
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/ActionTe.idt73
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/AdminExe.idt13
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/AdminUIS.idt14
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/AdvtExec.idt19
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/AppSearc.idt7
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary.idt20
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/Banner.bmpbin0 -> 6400 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/Image.bmpbin0 -> 154544 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/caution.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/dontinstall.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/install.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/installfirstuse.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/installpartial.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/installstatemenu.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/networkinstall.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/newfolder.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/openfolder.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/setup.icobin0 -> 11502 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/setupcomplete.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/setuppartial.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/setuprepair.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/trashcan.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/up.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/CheckBox.idt4
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Control.idt377
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/ControlC.idt70
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/ControlE.idt139
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/CustomAc.idt8
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Dialog.idt33
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Error.idt133
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/EventMap.idt18
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/InstallE.idt72
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/InstallU.idt29
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/LaunchCo.idt4
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/ListBox.idt3
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Property.idt56
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/RadioBut.idt12
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/RegLocat.idt7
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Signatur.idt3
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/TextStyl.idt25
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/UIText.idt53
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/_Validat.idt461
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/codes.txt36
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/components.txt0
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/ActionTe.idt73
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/AdminExe.idt13
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/AdminUIS.idt14
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/AdvtExec.idt19
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/AppSearc.idt3
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary.idt20
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/Banner.bmpbin0 -> 7112 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/Image.bmpbin0 -> 52248 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/caution.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/dontinstall.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/install.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/installfirstuse.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/installpartial.icobin0 -> 766 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/installstatemenu.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/networkinstall.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/newfolder.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/openfolder.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/setup.icobin0 -> 11502 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/setupcomplete.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/setuppartial.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/setuprepair.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/trashcan.icobin0 -> 3262 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Binary/up.icobin0 -> 894 bytes
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/CheckBox.idt4
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Control.idt377
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/ControlC.idt70
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/ControlE.idt139
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/CustomAc.idt10
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Dialog.idt33
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Error.idt133
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/EventMap.idt18
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/InstallE.idt74
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/InstallU.idt31
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/LaunchCo.idt4
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/ListBox.idt3
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Property.idt57
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/RadioBut.idt12
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/RegLocat.idt3
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/Signatur.idt3
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/TextStyl.idt25
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/UIText.idt53
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/_Validat.idt461
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/codes.txt36
-rw-r--r--instsetoo_native/inc_ure/windows/msi_templates/components.txt0
-rw-r--r--instsetoo_native/prj/build.lst5
-rw-r--r--instsetoo_native/prj/d.lst4
-rw-r--r--instsetoo_native/res/nologobanner.bmpbin0 -> 7110 bytes
-rw-r--r--instsetoo_native/res/nologoinstall.bmpbin0 -> 52030 bytes
-rw-r--r--instsetoo_native/util/makefile.mk412
-rw-r--r--instsetoo_native/util/openoffice.lst536
-rw-r--r--instsetoo_native/util/pack.lst20
-rw-r--r--instsetoo_native/util/update.xml10
-rw-r--r--io/inc/makefile.mk49
-rw-r--r--io/inc/pch/precompiled_io.cxx31
-rw-r--r--io/inc/pch/precompiled_io.hxx34
-rw-r--r--io/prj/build.lst8
-rw-r--r--io/prj/d.lst7
-rw-r--r--io/source/TextInputStream/TextInputStream.cxx539
-rw-r--r--io/source/TextInputStream/makefile.mk61
-rw-r--r--io/source/TextOutputStream/TextOutputStream.cxx337
-rw-r--r--io/source/TextOutputStream/makefile.mk62
-rw-r--r--io/source/acceptor/acc_pipe.cxx227
-rw-r--r--io/source/acceptor/acc_socket.cxx418
-rw-r--r--io/source/acceptor/acceptor.cxx385
-rw-r--r--io/source/acceptor/acceptor.hxx80
-rw-r--r--io/source/acceptor/acceptor.xml42
-rw-r--r--io/source/acceptor/makefile.mk73
-rw-r--r--io/source/connector/connector.cxx297
-rw-r--r--io/source/connector/connector.hxx146
-rw-r--r--io/source/connector/connectr.xml42
-rw-r--r--io/source/connector/ctr_pipe.cxx120
-rw-r--r--io/source/connector/ctr_socket.cxx257
-rw-r--r--io/source/connector/makefile.mk73
-rw-r--r--io/source/stm/factreg.cxx128
-rw-r--r--io/source/stm/factreg.hxx69
-rw-r--r--io/source/stm/makefile.mk77
-rw-r--r--io/source/stm/odata.cxx1667
-rw-r--r--io/source/stm/omark.cxx1018
-rw-r--r--io/source/stm/opipe.cxx494
-rw-r--r--io/source/stm/opump.cxx506
-rw-r--r--io/source/stm/stm.xml278
-rw-r--r--io/source/stm/streamhelper.cxx247
-rw-r--r--io/source/stm/streamhelper.hxx165
-rw-r--r--io/test/makefile.mk92
-rw-r--r--io/test/stm/datatest.cxx1124
-rw-r--r--io/test/stm/exports.dxp3
-rw-r--r--io/test/stm/makefile.mk99
-rw-r--r--io/test/stm/marktest.cxx680
-rw-r--r--io/test/stm/pipetest.cxx442
-rw-r--r--io/test/stm/pumptest.cxx452
-rw-r--r--io/test/stm/testfactreg.cxx218
-rw-r--r--io/test/stm/testfactreg.hxx122
-rw-r--r--io/test/testcomponent.cxx220
-rw-r--r--io/test/testconnection.cxx289
-rwxr-xr-xjavainstaller2/build.xml105
-rwxr-xr-xjavainstaller2/makefile.mk35
-rwxr-xr-xjavainstaller2/nbproject/private/private.xml4
-rwxr-xr-xjavainstaller2/nbproject/project.xml56
-rwxr-xr-xjavainstaller2/prj/build.lst5
-rwxr-xr-xjavainstaller2/prj/d.lst2
-rwxr-xr-xjavainstaller2/src/Helpfiles/create_helpfiles.pl268
-rwxr-xr-xjavainstaller2/src/Helpfiles/helpfilenames.txt43
-rwxr-xr-xjavainstaller2/src/Helpfiles/makefile.mk57
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/AcceptLicenseCtrl.java77
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseComponentsCtrl.java204
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseDirectoryCtrl.java256
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseInstallationTypeCtrl.java174
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseUninstallationComponentsCtrl.java131
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseUninstallationTypeCtrl.java133
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/InstallationCompletedCtrl.java111
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/InstallationImminentCtrl.java155
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/InstallationOngoingCtrl.java195
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/PrologueCtrl.java200
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/UninstallationCompletedCtrl.java103
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/UninstallationImminentCtrl.java112
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/UninstallationOngoingCtrl.java146
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/UninstallationPrologueCtrl.java186
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/DeckOfPanels.java54
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Dialogs/DatabaseDialog.java64
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Dialogs/DetailsDialog.java139
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Dialogs/HelpDialog.java166
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Icons/Back.gifbin0 -> 91 bytes
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Icons/DontInstall.pngbin0 -> 154 bytes
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Icons/DontKnow.pngbin0 -> 180 bytes
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Icons/Forward.gifbin0 -> 91 bytes
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Icons/Install.pngbin0 -> 163 bytes
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Icons/Installed.pngbin0 -> 110 bytes
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Icons/Remove.pngbin0 -> 198 bytes
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java746
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Installer/Installer.java79
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Installer/InstallerFactory.java67
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java720
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Installer/SolarisInstaller.java574
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java540
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/SolarisHelper.java404
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Main.java98
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/AcceptLicense.java104
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/ChooseComponents.java189
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/ChooseDirectory.java185
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/ChooseInstallationType.java180
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/ChooseUninstallationComponents.java182
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/ChooseUninstallationType.java176
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/InstallationImminent.java115
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/InstallationOngoing.java121
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/Prologue.java76
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/UninstallationCompleted.java108
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/UninstallationImminent.java110
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/UninstallationOngoing.java109
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/UninstallationPrologue.java62
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Panel/installationCompleted.java107
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/PanelController.java97
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/PanelHelper/PanelLabel.java82
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/PanelHelper/PanelTitle.java116
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/PanelHelper/TreeNodeRenderer.java89
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java171
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupActionListener.java116
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/DisplayPackageDescription.java200
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java659
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/ProductDescription.java277
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/SetupDataProvider.java109
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/XMLPackageDescription.java307
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupFrame.java300
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/AbortInstaller.java52
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/Calculator.java88
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/Controller.java291
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/Converter.java95
-rw-r--r--javainstaller2/src/JavaSetup/org/openoffice/setup/Util/DialogFocusTraversalPolicy.java115
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/Dumper.java202
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/ExecuteProcess.java114
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/FileExtensionFilter.java53
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/InfoCtrl.java163
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/InfoDir.java319
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/Informer.java45
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/InstallChangeCtrl.java137
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/LogManager.java105
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/ModuleCtrl.java1004
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/PackageCollector.java179
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/Parser.java49
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/SystemManager.java484
-rwxr-xr-xjavainstaller2/src/Localization/makefile.mk54
-rwxr-xr-xjavainstaller2/src/Localization/setupstrings.ulf455
-rwxr-xr-xjavainstaller2/src/Properties/create_property.pl303
-rwxr-xr-xjavainstaller2/src/Properties/makefile.mk50
-rw-r--r--javainstaller2/src/Properties/setupfiles_template.properties26
-rw-r--r--javainstaller2/src/Properties/setupstrings_template.properties123
-rw-r--r--javaunohelper/com/sun/star/comp/JavaUNOHelperServices.java81
-rw-r--r--javaunohelper/com/sun/star/comp/helper/Bootstrap.java329
-rw-r--r--javaunohelper/com/sun/star/comp/helper/BootstrapException.java91
-rw-r--r--javaunohelper/com/sun/star/comp/helper/ComponentContext.java310
-rw-r--r--javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java73
-rw-r--r--javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java168
-rw-r--r--javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java159
-rw-r--r--javaunohelper/com/sun/star/comp/helper/UnoInfo.java115
-rw-r--r--javaunohelper/com/sun/star/comp/helper/makefile.mk54
-rw-r--r--javaunohelper/com/sun/star/comp/juhtest/SmoketestCommandEnvironment.java151
-rw-r--r--javaunohelper/com/sun/star/comp/juhtest/makefile.mk50
-rw-r--r--javaunohelper/com/sun/star/comp/makefile.mk49
-rwxr-xr-xjavaunohelper/com/sun/star/lib/uno/adapter/ByteArrayToXInputStreamAdapter.java161
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/InputStreamToXInputStreamAdapter.java166
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/OutputStreamToXOutputStreamAdapter.java87
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/XInputStreamToInputStreamAdapter.java207
-rwxr-xr-xjavaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToByteArrayAdapter.java121
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToOutputStreamAdapter.java111
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/makefile.mk54
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/ComponentBase.java141
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/Factory.java244
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/InterfaceContainer.java856
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/MultiTypeInterfaceContainer.java165
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/PropertySet.java1102
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/PropertySetMixin.java1093
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/UnoUrl.java412
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/WeakAdapter.java102
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java143
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/makefile.mk49
-rw-r--r--javaunohelper/inc/makefile.mk47
-rw-r--r--javaunohelper/inc/pch/precompiled_javaunohelper.cxx31
-rw-r--r--javaunohelper/inc/pch/precompiled_javaunohelper.hxx34
-rw-r--r--javaunohelper/prj/build.lst10
-rw-r--r--javaunohelper/prj/d.lst6
-rw-r--r--javaunohelper/source/bootstrap.cxx191
-rw-r--r--javaunohelper/source/javaunohelper.cxx326
-rw-r--r--javaunohelper/source/javaunohelper.map9
-rw-r--r--javaunohelper/source/makefile.mk134
-rw-r--r--javaunohelper/source/preload.cxx161
-rw-r--r--javaunohelper/source/vm.cxx150
-rw-r--r--javaunohelper/source/vm.hxx58
-rw-r--r--javaunohelper/test/com/sun/star/comp/helper/Bootstrap_Test.java117
-rw-r--r--javaunohelper/test/com/sun/star/comp/helper/ComponentContext_Test.java99
-rw-r--r--javaunohelper/test/com/sun/star/comp/helper/RegistryServiceFactory_Test.java100
-rw-r--r--javaunohelper/test/com/sun/star/comp/helper/SharedLibraryLoader_Test.java194
-rw-r--r--javaunohelper/test/com/sun/star/comp/helper/makefile.mk52
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/AWeakBase.java50
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/ComponentBase_Test.java153
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/Factory_Test.java207
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/InterfaceContainer_Test.java992
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/MultiTypeInterfaceContainer_Test.java372
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/PropertySet_Test.java1693
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/ProxyProvider.java165
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/UnoUrlTest.java261
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/WeakBase_Test.java251
-rw-r--r--javaunohelper/test/com/sun/star/lib/uno/helper/makefile.mk68
-rw-r--r--javaunohelper/util/delzip0
-rw-r--r--javaunohelper/util/makefile.mk53
-rw-r--r--javaunohelper/util/manifest3
-rw-r--r--javaunohelper/util/settings.pmk28
-rw-r--r--jfreereport/java/flute/makefile.mk73
-rw-r--r--jfreereport/java/jfreereport/makefile.mk71
-rw-r--r--jfreereport/java/libbase/makefile.mk85
-rw-r--r--jfreereport/java/libfonts/makefile.mk72
-rw-r--r--jfreereport/java/libformula/makefile.mk77
-rw-r--r--jfreereport/java/liblayout/makefile.mk71
-rw-r--r--jfreereport/java/libloader/makefile.mk71
-rw-r--r--jfreereport/java/librepository/makefile.mk71
-rw-r--r--jfreereport/java/libserializer/makefile.mk71
-rw-r--r--jfreereport/java/libxml/makefile.mk71
-rw-r--r--jfreereport/java/sac/makefile.mk83
-rw-r--r--jfreereport/nbprojects/flute/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/jcommon-serializer/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/jfreereport/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libfonts/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libformula/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/liblayout/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libloader/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/librepository/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libxml/nbproject/project.xml42
-rw-r--r--jfreereport/patches/flow-engine.patch10
-rw-r--r--jfreereport/patches/flute.patch19
-rw-r--r--jfreereport/patches/libbase.patch19
-rw-r--r--jfreereport/patches/libfonts.patch10
-rw-r--r--jfreereport/patches/libformula.patch27
-rw-r--r--jfreereport/patches/liblayout.patch10
-rw-r--r--jfreereport/patches/libloader.patch11
-rw-r--r--jfreereport/patches/librepository.patch10
-rw-r--r--jfreereport/patches/libserializer.patch10
-rw-r--r--jfreereport/patches/libxml.patch10
-rw-r--r--jfreereport/patches/sac.patch73
-rw-r--r--jfreereport/prj/build.lst13
-rw-r--r--jfreereport/prj/d.lst1
-rw-r--r--jpeg/jpeg-6b.patch113
-rw-r--r--jpeg/makefile.mk67
-rw-r--r--jpeg/prj/build.lst2
-rw-r--r--jpeg/prj/d.lst10
-rw-r--r--jurt/com/sun/star/comp/bridgefactory/BridgeFactory.java228
-rw-r--r--jurt/com/sun/star/comp/bridgefactory/makefile.mk43
-rw-r--r--jurt/com/sun/star/comp/connections/Acceptor.java170
-rw-r--r--jurt/com/sun/star/comp/connections/Connector.java151
-rw-r--r--jurt/com/sun/star/comp/connections/ConstantInstanceProvider.java139
-rw-r--r--jurt/com/sun/star/comp/connections/Implementation.java101
-rw-r--r--jurt/com/sun/star/comp/connections/PipedConnection.java283
-rw-r--r--jurt/com/sun/star/comp/connections/makefile.mk43
-rw-r--r--jurt/com/sun/star/comp/loader/FactoryHelper.java564
-rw-r--r--jurt/com/sun/star/comp/loader/JavaLoader.java483
-rw-r--r--jurt/com/sun/star/comp/loader/JavaLoaderFactory.java104
-rw-r--r--jurt/com/sun/star/comp/loader/RegistrationClassFinder.java133
-rw-r--r--jurt/com/sun/star/comp/loader/makefile.mk47
-rw-r--r--jurt/com/sun/star/comp/servicemanager/ServiceManager.java926
-rw-r--r--jurt/com/sun/star/comp/servicemanager/makefile.mk43
-rw-r--r--jurt/com/sun/star/comp/urlresolver/UrlResolver.java171
-rw-r--r--jurt/com/sun/star/comp/urlresolver/makefile.mk43
-rw-r--r--jurt/com/sun/star/lib/connections/pipe/PipeConnection.java232
-rw-r--r--jurt/com/sun/star/lib/connections/pipe/makefile.mk41
-rw-r--r--jurt/com/sun/star/lib/connections/pipe/pipeAcceptor.java146
-rw-r--r--jurt/com/sun/star/lib/connections/pipe/pipeConnector.java142
-rw-r--r--jurt/com/sun/star/lib/connections/socket/ConnectionDescriptor.java107
-rw-r--r--jurt/com/sun/star/lib/connections/socket/SocketConnection.java252
-rw-r--r--jurt/com/sun/star/lib/connections/socket/makefile.mk42
-rw-r--r--jurt/com/sun/star/lib/connections/socket/socketAcceptor.java207
-rw-r--r--jurt/com/sun/star/lib/connections/socket/socketConnector.java181
-rw-r--r--jurt/com/sun/star/lib/uno/Proxy.java40
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/BridgedObject.java49
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/ProxyFactory.java185
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/RequestHandler.java41
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/XConnectionInputStream_Adapter.java82
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/XConnectionOutputStream_Adapter.java91
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java711
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/makefile.mk44
-rw-r--r--jurt/com/sun/star/lib/uno/environments/java/java_environment.java311
-rw-r--r--jurt/com/sun/star/lib/uno/environments/java/makefile.mk44
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/IProtocol.java97
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/IReceiver.java48
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java127
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/JavaThreadPool.java132
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/JavaThreadPoolFactory.java94
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/Job.java180
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java396
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/Message.java195
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/NativeThreadPool.java100
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/ThreadId.java95
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/ThreadPoolManager.java80
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/makefile.mk50
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/remote_environment.java72
-rw-r--r--jurt/com/sun/star/lib/uno/makefile.mk37
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/Cache.java120
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/Marshal.java390
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/PendingRequests.java71
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java490
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/UrpMessage.java54
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/makefile.mk44
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/urp.java734
-rw-r--r--jurt/com/sun/star/lib/util/AsynchronousFinalizer.java102
-rw-r--r--jurt/com/sun/star/lib/util/NativeLibraryLoader.java118
-rw-r--r--jurt/com/sun/star/lib/util/StringHelper.java51
-rw-r--r--jurt/com/sun/star/lib/util/UrlToFileMapper.java161
-rw-r--r--jurt/com/sun/star/lib/util/makefile.mk42
-rw-r--r--jurt/com/sun/star/uno/AnyConverter.java543
-rw-r--r--jurt/com/sun/star/uno/Ascii.java50
-rw-r--r--jurt/com/sun/star/uno/AsciiString.java51
-rw-r--r--jurt/com/sun/star/uno/MappingException.java70
-rw-r--r--jurt/com/sun/star/uno/WeakReference.java147
-rw-r--r--jurt/com/sun/star/uno/makefile.mk52
-rw-r--r--jurt/demo/com/sun/star/demo/DemoServer.java101
-rw-r--r--jurt/demo/com/sun/star/demo/TestOffice.java193
-rw-r--r--jurt/demo/com/sun/star/demo/makefile.mk57
-rw-r--r--jurt/prj/build.lst19
-rw-r--r--jurt/prj/d.lst7
-rw-r--r--jurt/source/pipe/com_sun_star_lib_connections_pipe_PipeConnection.c569
-rw-r--r--jurt/source/pipe/makefile.mk57
-rw-r--r--jurt/source/pipe/wrapper/makefile.mk52
-rw-r--r--jurt/source/pipe/wrapper/wrapper.c102
-rw-r--r--jurt/test/com/sun/star/comp/bridgefactory/BridgeFactory_Test.java106
-rw-r--r--jurt/test/com/sun/star/comp/bridgefactory/makefile.mk36
-rw-r--r--jurt/test/com/sun/star/comp/connections/PipedConnection_Test.java147
-rw-r--r--jurt/test/com/sun/star/comp/connections/makefile.mk36
-rw-r--r--jurt/test/com/sun/star/lib/uno/bridges/java_remote/BridgedObject_Test.java73
-rw-r--r--jurt/test/com/sun/star/lib/uno/bridges/java_remote/ProxyFactory_Test.java145
-rw-r--r--jurt/test/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge_Test.java251
-rw-r--r--jurt/test/com/sun/star/lib/uno/bridges/java_remote/makefile.mk39
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/java/java_environment_Test.java66
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/java/makefile.mk36
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/JavaThreadPoolFactory_Test.java56
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/JobQueue_Test.java274
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/TestIWorkAt.java49
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/TestMessage.java89
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/TestReceiver.java33
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/TestWorkAt.java97
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/ThreadId_Test.java63
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/ThreadPool_Test.java443
-rw-r--r--jurt/test/com/sun/star/lib/uno/environments/remote/makefile.mk44
-rw-r--r--jurt/test/com/sun/star/lib/uno/protocols/urp/Cache_Test.java106
-rw-r--r--jurt/test/com/sun/star/lib/uno/protocols/urp/Marshaling_Test.java369
-rw-r--r--jurt/test/com/sun/star/lib/uno/protocols/urp/Protocol_Test.java317
-rw-r--r--jurt/test/com/sun/star/lib/uno/protocols/urp/TestBridge.java115
-rw-r--r--jurt/test/com/sun/star/lib/uno/protocols/urp/TestObject.java70
-rw-r--r--jurt/test/com/sun/star/lib/uno/protocols/urp/interfaces.idl119
-rw-r--r--jurt/test/com/sun/star/lib/uno/protocols/urp/makefile.mk42
-rw-r--r--jurt/test/com/sun/star/lib/util/NativeLibraryLoader_Test.java83
-rw-r--r--jurt/test/com/sun/star/lib/util/makefile.mk36
-rw-r--r--jurt/test/com/sun/star/uno/AnyConverter_Test.java905
-rw-r--r--jurt/test/com/sun/star/uno/UnoRuntime_EnvironmentTest.java96
-rw-r--r--jurt/test/com/sun/star/uno/WeakReference_Test.java118
-rw-r--r--jurt/test/com/sun/star/uno/makefile.mk39
-rw-r--r--jurt/test/makefile.mk39
-rw-r--r--jurt/util/delzip0
-rw-r--r--jurt/util/makefile.mk52
-rw-r--r--jurt/util/makefile.pmk32
-rw-r--r--jurt/util/manifest7
-rw-r--r--jurt/workbench/com/sun/star/comp/urlresolver/UrlResolver_Test.java95
-rw-r--r--jurt/workbench/com/sun/star/comp/urlresolver/makefile.mk53
-rw-r--r--jvmaccess/inc/jvmaccess/classpath.hxx154
-rw-r--r--jvmaccess/inc/jvmaccess/unovirtualmachine.hxx112
-rw-r--r--jvmaccess/inc/jvmaccess/virtualmachine.hxx166
-rw-r--r--jvmaccess/prj/build.lst4
-rw-r--r--jvmaccess/prj/d.lst8
-rw-r--r--jvmaccess/source/classpath.cxx177
-rw-r--r--jvmaccess/source/makefile.mk41
-rw-r--r--jvmaccess/source/unovirtualmachine.cxx99
-rw-r--r--jvmaccess/source/virtualmachine.cxx127
-rw-r--r--jvmaccess/util/cc5_solaris_sparc.map81
-rw-r--r--jvmaccess/util/gcc3.map88
-rw-r--r--jvmaccess/util/makefile.mk66
-rw-r--r--jvmaccess/util/mingw.map71
-rw-r--r--jvmaccess/util/msvc_win32_intel.map37
-rw-r--r--jvmaccess/workbench/exceptiontest1.cxx49
-rw-r--r--jvmaccess/workbench/exceptiontest2.cxx49
-rw-r--r--jvmaccess/workbench/java/TestComponent.java104
-rw-r--r--jvmaccess/workbench/java/makefile.mk43
-rw-r--r--jvmaccess/workbench/java/manifest1
-rw-r--r--jvmaccess/workbench/javainfo/javainfotest.cxx375
-rw-r--r--jvmaccess/workbench/javainfo/makefile.mk43
-rw-r--r--jvmaccess/workbench/makefile.mk51
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors.xsd77
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_freebsd.xml25
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml33
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml20
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_os2.xml21
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_template.xml35
-rwxr-xr-xjvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml17
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml21
-rwxr-xr-xjvmfwk/distributions/OpenOfficeorg/makefile.mk65
-rw-r--r--jvmfwk/inc/jvmfwk/framework.h871
-rw-r--r--jvmfwk/inc/jvmfwk/vendorplugin.h268
-rw-r--r--jvmfwk/inc/makefile.mk47
-rw-r--r--jvmfwk/inc/pch/precompiled_jvmfwk.cxx31
-rw-r--r--jvmfwk/inc/pch/precompiled_jvmfwk.hxx34
-rw-r--r--jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx190
-rwxr-xr-xjvmfwk/plugins/sunmajor/javaenvsetup/makefile.mk56
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/JREProperties.java85
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/diagnostics.h123
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/gnujre.cxx290
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/gnujre.hxx58
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/makefile.mk117
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx133
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/otherjre.hxx56
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx678
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.map13
-rwxr-xr-xjvmfwk/plugins/sunmajor/pluginlib/sunjavapluginrc2
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx130
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunjre.hxx55
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx430
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx130
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/util.cxx1270
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/util.hxx133
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/vendorbase.cxx279
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx188
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx94
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/vendorlist.hxx78
-rw-r--r--jvmfwk/prj/build.lst6
-rw-r--r--jvmfwk/prj/d.lst22
-rw-r--r--jvmfwk/source/elements.cxx1244
-rw-r--r--jvmfwk/source/elements.hxx394
-rw-r--r--jvmfwk/source/framework.cxx1290
-rw-r--r--jvmfwk/source/framework.hxx131
-rw-r--r--jvmfwk/source/framework.map31
-rw-r--r--jvmfwk/source/fwkbase.cxx721
-rw-r--r--jvmfwk/source/fwkbase.hxx161
-rw-r--r--jvmfwk/source/fwkutil.cxx359
-rw-r--r--jvmfwk/source/fwkutil.hxx141
-rw-r--r--jvmfwk/source/javasettings.xsd54
-rw-r--r--jvmfwk/source/javasettings_template.xml35
-rw-r--r--jvmfwk/source/javasettingsunopkginstall.xml3
-rw-r--r--jvmfwk/source/jvmfwk3rc4
-rw-r--r--jvmfwk/source/libxmlutil.cxx187
-rw-r--r--jvmfwk/source/libxmlutil.hxx131
-rw-r--r--jvmfwk/source/makefile.mk90
-rw-r--r--jvmfwk/source/readme.txt9
-rw-r--r--l10ntools/inc/cfgmerge.hxx208
-rw-r--r--l10ntools/inc/export.hxx587
-rw-r--r--l10ntools/inc/gsicheck.hxx130
-rw-r--r--l10ntools/inc/helpmerge.hxx87
-rw-r--r--l10ntools/inc/inireader.hxx55
-rw-r--r--l10ntools/inc/l10ntools/directory.hxx57
-rw-r--r--l10ntools/inc/l10ntools/file.hxx26
-rw-r--r--l10ntools/inc/l10ntools/vosapp.hxx33
-rw-r--r--l10ntools/inc/lngmerge.hxx69
-rw-r--r--l10ntools/inc/makefile.mk47
-rw-r--r--l10ntools/inc/pch/precompiled_l10ntools.cxx31
-rw-r--r--l10ntools/inc/pch/precompiled_l10ntools.hxx34
-rw-r--r--l10ntools/inc/srciter.hxx60
-rw-r--r--l10ntools/inc/tagtest.hxx398
-rw-r--r--l10ntools/inc/tokens.h112
-rw-r--r--l10ntools/inc/treeconfig.hxx31
-rw-r--r--l10ntools/inc/utf8conv.hxx47
-rw-r--r--l10ntools/inc/wtranode.hxx120
-rw-r--r--l10ntools/inc/wtratree.hxx161
-rw-r--r--l10ntools/inc/xmlparse.hxx553
-rw-r--r--l10ntools/inc/xmlutil.hxx11
-rw-r--r--l10ntools/inc/xrmmerge.hxx160
-rwxr-xr-xl10ntools/java/jpropex/build.xml169
-rw-r--r--l10ntools/java/jpropex/java/JPropEx.java509
-rw-r--r--l10ntools/java/jpropex/java/Main.java38
-rw-r--r--l10ntools/java/jpropex/java/NoLocalizeFilter.java54
-rw-r--r--l10ntools/java/jpropex/java/OrderedHashMap.java96
-rw-r--r--l10ntools/java/jpropex/java/SdfData.java108
-rw-r--r--l10ntools/java/jpropex/java/SdfEntity.java255
-rwxr-xr-xl10ntools/java/jpropex/jpropex12
-rwxr-xr-xl10ntools/java/jpropex/jpropex.MF1
-rwxr-xr-xl10ntools/java/jpropex/makefile.mk36
-rwxr-xr-xl10ntools/java/l10nconv/build.xml229
-rwxr-xr-xl10ntools/java/l10nconv/converter.MF1
-rwxr-xr-xl10ntools/java/l10nconv/documentation/readmeConverter.sxwbin0 -> 9824 bytes
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/DirtyTags/DirtyTagWrapCheck.java82
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/DirtyTags/DirtyTagWrapper.java249
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/DirtyTags/Tag.java246
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/DirtyTags/TagPair.java307
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/Convert.java550
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/Converter.java520
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/ConverterException.java76
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/DataHandler.java146
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/DataReader.java76
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/DataWriter.java88
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/ExtMap.java94
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/FileMaker.java84
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/GSIReader.java247
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/GSIWriter.java243
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/GSIandSDFMerger.java164
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/LineErrorException.java78
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/OutputHandler.java225
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/ResTypeResolver.java68
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/Resolver.java95
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/SDFReader.java632
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/SDFWriter.java172
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/XLIFFReader.java742
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/XLIFFWriter.java532
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/converter/dtd/xliff.dtd391
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/languageResolver/LanguageResolver.java198
-rwxr-xr-xl10ntools/java/l10nconv/java/com/sun/star/tooling/languageResolver/lang.map41
-rwxr-xr-xl10ntools/java/l10nconv/makefile.mk35
-rwxr-xr-xl10ntools/java/receditor/build.xml169
-rw-r--r--l10ntools/java/receditor/java/transex3/controller/EditorController.java334
-rw-r--r--l10ntools/java/receditor/java/transex3/controller/Main.java10
-rw-r--r--l10ntools/java/receditor/java/transex3/model/ResourceFile.java77
-rw-r--r--l10ntools/java/receditor/java/transex3/model/SdfEntity.java211
-rw-r--r--l10ntools/java/receditor/java/transex3/model/SdfString.java167
-rw-r--r--l10ntools/java/receditor/java/transex3/view/Editor.java97
-rw-r--r--l10ntools/java/receditor/java/transex3/view/SdfTable.java24
-rwxr-xr-xl10ntools/java/receditor/makefile.mk35
-rwxr-xr-xl10ntools/java/receditor/receditor.MF1
-rw-r--r--l10ntools/layout/README27
-rw-r--r--l10ntools/layout/layoutparse.cxx138
-rw-r--r--l10ntools/layout/layoutparse.hxx54
-rw-r--r--l10ntools/layout/loc.sdf24
-rw-r--r--l10ntools/layout/makefile.mk76
-rw-r--r--l10ntools/layout/tralay.cxx400
-rw-r--r--l10ntools/layout/zoom.xml40
-rw-r--r--l10ntools/prj/build.lst10
-rw-r--r--l10ntools/prj/d.lst77
-rw-r--r--l10ntools/scripts/fast_merge.pl334
-rw-r--r--l10ntools/scripts/keyidGen.pl185
-rw-r--r--l10ntools/scripts/localize.pl1078
-rwxr-xr-xl10ntools/scripts/localize_old.pl1070
-rw-r--r--l10ntools/scripts/makefile.mk57
-rw-r--r--l10ntools/scripts/tool/const.py39
-rw-r--r--l10ntools/scripts/tool/l10ntool.py210
-rw-r--r--l10ntools/scripts/tool/pseudo.py184
-rw-r--r--l10ntools/scripts/tool/sdf.py170
-rw-r--r--l10ntools/scripts/tool/xhtex.py136
-rw-r--r--l10ntools/scripts/tool/xtxex.py94
-rwxr-xr-xl10ntools/scripts/xhtex38
-rwxr-xr-xl10ntools/scripts/xtxex39
-rw-r--r--l10ntools/source/cfg_yy_wrapper.c5
-rw-r--r--l10ntools/source/cfglex.l221
-rw-r--r--l10ntools/source/cfgmerge.cxx875
-rw-r--r--l10ntools/source/directory.cxx273
-rw-r--r--l10ntools/source/export.cxx2636
-rw-r--r--l10ntools/source/export2.cxx738
-rw-r--r--l10ntools/source/file.cxx58
-rw-r--r--l10ntools/source/filter/merge/FCFGMerge.cfg121
-rw-r--r--l10ntools/source/filter/merge/FCFGMerge.java128
-rw-r--r--l10ntools/source/filter/merge/Manifest.mf1
-rw-r--r--l10ntools/source/filter/merge/Merger.java361
-rw-r--r--l10ntools/source/filter/merge/makefile.mk92
-rw-r--r--l10ntools/source/filter/utils/AnalyzeStartupLog.java325
-rw-r--r--l10ntools/source/filter/utils/Cache.java2446
-rw-r--r--l10ntools/source/filter/utils/ConfigHelper.java300
-rw-r--r--l10ntools/source/filter/utils/FileHelper.java763
-rw-r--r--l10ntools/source/filter/utils/Logger.java174
-rw-r--r--l10ntools/source/filter/utils/MalformedCommandLineException.java47
-rw-r--r--l10ntools/source/filter/utils/XMLHelper.java822
-rw-r--r--l10ntools/source/filter/utils/makefile.mk53
-rw-r--r--l10ntools/source/gsicheck.cxx1177
-rw-r--r--l10ntools/source/gsiconv.cxx372
-rw-r--r--l10ntools/source/help/HelpCompiler.cxx591
-rw-r--r--l10ntools/source/help/HelpCompiler.hxx318
-rw-r--r--l10ntools/source/help/HelpFileDocument.java86
-rw-r--r--l10ntools/source/help/HelpIndexerTool.java401
-rw-r--r--l10ntools/source/help/HelpLinker.cxx1229
-rw-r--r--l10ntools/source/help/compilehelp.hxx80
-rw-r--r--l10ntools/source/help/helplinker.pmk31
-rw-r--r--l10ntools/source/help/makefile.mk116
-rw-r--r--l10ntools/source/helpex.cxx293
-rw-r--r--l10ntools/source/helpmerge.cxx717
-rw-r--r--l10ntools/source/inireader.cxx135
-rw-r--r--l10ntools/source/lngex.cxx208
-rw-r--r--l10ntools/source/lngmerge.cxx359
-rw-r--r--l10ntools/source/localize.cxx976
-rw-r--r--l10ntools/source/makefile.mk199
-rw-r--r--l10ntools/source/merge.cxx461
-rw-r--r--l10ntools/source/src_yy_wrapper.c5
-rw-r--r--l10ntools/source/srciter.cxx141
-rw-r--r--l10ntools/source/srclex.l302
-rw-r--r--l10ntools/source/tagtest.cxx1576
-rw-r--r--l10ntools/source/treeconfig.cxx131
-rw-r--r--l10ntools/source/utf8conv.cxx77
-rw-r--r--l10ntools/source/wtranode.cxx110
-rw-r--r--l10ntools/source/wtratree.cxx420
-rw-r--r--l10ntools/source/xgfconv.cxx68
-rw-r--r--l10ntools/source/xmlparse.cxx1455
-rw-r--r--l10ntools/source/xrm_yy_wrapper.c5
-rw-r--r--l10ntools/source/xrmlex.l224
-rw-r--r--l10ntools/source/xrmmerge.cxx733
-rw-r--r--l10ntools/workbench/gsicheck_errors.sdf15
-rw-r--r--l10ntools/workbench/gsicheck_errors_err-.sdf11
-rw-r--r--l10ntools/workbench/gsicheck_errors_err-l.sdf2
-rw-r--r--l10ntools/workbench/gsicheck_errors_err-s.sdf9
-rw-r--r--l10ntools/workbench/gsicheck_errors_err-t.sdf9
-rw-r--r--l10ntools/workbench/gsicheck_errors_ok-.sdf5
-rw-r--r--l10ntools/workbench/gsicheck_errors_ok-l.sdf12
-rw-r--r--l10ntools/workbench/gsicheck_errors_ok-s.sdf6
-rw-r--r--l10ntools/workbench/gsicheck_errors_ok-t.sdf6
-rw-r--r--l10ntools/workbench/gsicheckcheck.btm17
-rw-r--r--languagetool/JLanguageTool-1.0.0.patch137
-rw-r--r--languagetool/makefile.mk67
-rw-r--r--languagetool/prj/build.lst3
-rw-r--r--languagetool/prj/d.lst1
-rw-r--r--libegg/README7
-rw-r--r--libegg/inc/eggtrayicon.h35
-rw-r--r--libegg/prj/build.lst2
-rw-r--r--libegg/prj/d.lst5
-rw-r--r--libegg/source/eggtrayicon-impl.h76
-rw-r--r--libegg/source/eggtrayicon.c573
-rw-r--r--libegg/source/makefile.mk66
-rw-r--r--libtextcat/data/new_fingerprints/LICENSE30
-rw-r--r--libtextcat/data/new_fingerprints/fpdb.conf85
-rw-r--r--libtextcat/data/new_fingerprints/lm/afrikaans.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/albanian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/amharic_utf.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/arabic.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/armenian.lm0
-rw-r--r--libtextcat/data/new_fingerprints/lm/basque.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/belarus.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/bosnian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/breton.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/catalan.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/chinese_simplified.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/chinese_traditional.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/croatian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/czech.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/danish.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/drents.lm0
-rw-r--r--libtextcat/data/new_fingerprints/lm/dutch.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/english.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/esperanto.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/estonian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/finnish.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/french.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/frisian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/georgian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/german.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/greek.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/hebrew.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/hindi.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/hungarian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/icelandic.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/indonesian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/irish_gaelic.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/italian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/japanese.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/korean.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/latin.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/latvian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/lithuanian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/luxembourgish.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/malay.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/manx_gaelic.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/marathi.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/middle_frisian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/mingo.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/mongolian_cyrillic.lm363
-rw-r--r--libtextcat/data/new_fingerprints/lm/nepali.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/norwegian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/persian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/polish.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/portuguese.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/quechua.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/romanian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/romansh.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/russian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/sanskrit.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/scots.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/scots_gaelic.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/serbian_ascii.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/slovak_ascii.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/slovenian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/spanish.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/swahili.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/swedish.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/tagalog.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/tamil.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/thai.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/turkish.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/ukrainian.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/vietnamese.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/welsh.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/yiddish_utf.lm400
-rw-r--r--libtextcat/data/new_fingerprints/lm/zulu.lm400
-rw-r--r--libtextcat/libtextcat-2.2.patch4078
-rw-r--r--libtextcat/libtextcat-aix.patch86
-rw-r--r--libtextcat/makefile.mk95
-rw-r--r--libtextcat/prj/build.lst3
-rw-r--r--libtextcat/prj/d.lst12
-rw-r--r--libwpd/makefile.mk54
-rw-r--r--libwpd/prj/build.lst3
-rw-r--r--libwpd/prj/d.lst15
-rw-r--r--libwpg/makefile.mk61
-rw-r--r--libwpg/prj/build.lst3
-rw-r--r--libwpg/prj/d.lst6
-rw-r--r--libwps/libwps-0.1.1.diff93
-rw-r--r--libwps/makefile.mk61
-rw-r--r--libwps/prj/build.lst3
-rw-r--r--libwps/prj/d.lst5
-rw-r--r--libxml2/libxml2-aix.patch21
-rw-r--r--libxml2/libxml2-configure.patch118
-rw-r--r--libxml2/libxml2-global-symbols.patch59
-rw-r--r--libxml2/libxml2-gnome599717.patch20
-rw-r--r--libxml2/libxml2-mingw.patch48
-rwxr-xr-xlibxml2/libxml2-vc10.patch15
-rw-r--r--libxml2/libxml2-xpath.patch70
-rw-r--r--libxml2/makefile.mk142
-rw-r--r--libxml2/prj/build.lst3
-rw-r--r--libxml2/prj/d.lst9
-rw-r--r--libxmlsec/makefile.mk197
-rw-r--r--libxmlsec/prj/build.lst3
-rw-r--r--libxmlsec/prj/d.lst9
-rw-r--r--libxmlsec/readme.txt32
-rw-r--r--libxmlsec/xmlsec1-configure-libxml-libxslt.patch40
-rw-r--r--libxmlsec/xmlsec1-configure.patch765
-rw-r--r--libxmlsec/xmlsec1-customkeymanage.patch6065
-rw-r--r--libxmlsec/xmlsec1-mingw-keymgr-mscrypto.patch62
-rw-r--r--libxmlsec/xmlsec1-mingw32.patch257
-rw-r--r--libxmlsec/xmlsec1-noverify.patch59
-rw-r--r--libxmlsec/xmlsec1-nssdisablecallbacks.patch36
-rw-r--r--libxmlsec/xmlsec1-nssmangleciphers.patch1134
-rw-r--r--libxmlsec/xmlsec1-olderlibxml2.patch23
-rw-r--r--libxmlsec/xmlsec1-update-config-sub-and-guess.patch2314
-rw-r--r--libxmlsec/xmlsec1-vc10.patch15
-rw-r--r--libxslt/libxslt-aix.patch21
-rw-r--r--libxslt/libxslt-configure.patch79
-rw-r--r--libxslt/libxslt-internal-symbols.patch66
-rw-r--r--libxslt/libxslt-mingw.patch36
-rw-r--r--libxslt/libxslt-vc10.patch15
-rw-r--r--libxslt/libxslt-win_manifest.patch11
-rw-r--r--libxslt/libxsltversion.mk33
-rw-r--r--libxslt/makefile.mk158
-rw-r--r--libxslt/prj/build.lst3
-rw-r--r--libxslt/prj/d.lst12
-rw-r--r--lingucomponent/config/Linguistic-lingucomponent-hyphenator.xcu14
-rw-r--r--lingucomponent/config/Linguistic-lingucomponent-spellchecker.xcu14
-rw-r--r--lingucomponent/config/Linguistic-lingucomponent-thesaurus.xcu14
-rw-r--r--lingucomponent/inc/makefile.mk47
-rw-r--r--lingucomponent/inc/pch/precompiled_lingucomponent.cxx31
-rw-r--r--lingucomponent/inc/pch/precompiled_lingucomponent.hxx35
-rw-r--r--lingucomponent/prj/build.lst10
-rw-r--r--lingucomponent/prj/d.lst48
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp3
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx88
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx982
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx212
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk93
-rw-r--r--lingucomponent/source/languageguessing/altstrfunc.cxx50
-rw-r--r--lingucomponent/source/languageguessing/altstrfunc.hxx43
-rw-r--r--lingucomponent/source/languageguessing/guess.cxx139
-rw-r--r--lingucomponent/source/languageguessing/guess.hxx74
-rw-r--r--lingucomponent/source/languageguessing/guesslang.cxx485
-rw-r--r--lingucomponent/source/languageguessing/makefile.mk80
-rw-r--r--lingucomponent/source/languageguessing/simpleguesser.cxx237
-rw-r--r--lingucomponent/source/languageguessing/simpleguesser.hxx124
-rw-r--r--lingucomponent/source/lingutil/lingutil.cxx274
-rw-r--r--lingucomponent/source/lingutil/lingutil.hxx107
-rw-r--r--lingucomponent/source/lingutil/makefile.mk63
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macreg.cxx89
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx694
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx195
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/makefile.mk92
-rw-r--r--lingucomponent/source/spellcheck/spell/exports.dxp3
-rw-r--r--lingucomponent/source/spellcheck/spell/makefile.mk87
-rw-r--r--lingucomponent/source/spellcheck/spell/sreg.cxx88
-rw-r--r--lingucomponent/source/spellcheck/spell/sspellimp.cxx726
-rw-r--r--lingucomponent/source/spellcheck/spell/sspellimp.hxx186
-rw-r--r--lingucomponent/source/thesaurus/libnth/exports.dxp3
-rw-r--r--lingucomponent/source/thesaurus/libnth/makefile.mk107
-rw-r--r--lingucomponent/source/thesaurus/libnth/nthesdta.cxx115
-rw-r--r--lingucomponent/source/thesaurus/libnth/nthesdta.hxx98
-rw-r--r--lingucomponent/source/thesaurus/libnth/nthesimp.cxx798
-rw-r--r--lingucomponent/source/thesaurus/libnth/nthesimp.hxx202
-rw-r--r--lingucomponent/source/thesaurus/libnth/ntreg.cxx87
-rw-r--r--lotuswordpro/prj/build.lst5
-rw-r--r--lotuswordpro/prj/d.lst3
-rw-r--r--lotuswordpro/source/filter/LotusWordProImportFilter.cxx400
-rw-r--r--lotuswordpro/source/filter/LotusWordProImportFilter.hxx93
-rw-r--r--lotuswordpro/source/filter/bencont.cxx719
-rw-r--r--lotuswordpro/source/filter/benlist.cxx124
-rw-r--r--lotuswordpro/source/filter/benname.cxx85
-rw-r--r--lotuswordpro/source/filter/benobj.cxx131
-rw-r--r--lotuswordpro/source/filter/bento.hxx546
-rw-r--r--lotuswordpro/source/filter/bentoid.hxx113
-rw-r--r--lotuswordpro/source/filter/benval.cxx265
-rw-r--r--lotuswordpro/source/filter/explode.cxx521
-rw-r--r--lotuswordpro/source/filter/explode.hxx128
-rw-r--r--lotuswordpro/source/filter/first.hxx82
-rw-r--r--lotuswordpro/source/filter/genericfilter.cxx80
-rw-r--r--lotuswordpro/source/filter/localtime.cxx195
-rw-r--r--lotuswordpro/source/filter/localtime.hxx76
-rw-r--r--lotuswordpro/source/filter/lwp9reader.cxx258
-rw-r--r--lotuswordpro/source/filter/lwp9reader.hxx92
-rw-r--r--lotuswordpro/source/filter/lwparrowstyles.hxx103
-rw-r--r--lotuswordpro/source/filter/lwpatomholder.cxx111
-rw-r--r--lotuswordpro/source/filter/lwpatomholder.hxx89
-rw-r--r--lotuswordpro/source/filter/lwpbackgroundoverride.hxx93
-rw-r--r--lotuswordpro/source/filter/lwpbackgroundstuff.cxx185
-rw-r--r--lotuswordpro/source/filter/lwpbackgroundstuff.hxx171
-rw-r--r--lotuswordpro/source/filter/lwpbasetype.cxx95
-rw-r--r--lotuswordpro/source/filter/lwpbasetype.hxx120
-rw-r--r--lotuswordpro/source/filter/lwpbookmarkmgr.cxx115
-rw-r--r--lotuswordpro/source/filter/lwpbookmarkmgr.hxx86
-rw-r--r--lotuswordpro/source/filter/lwpborderstuff.cxx258
-rw-r--r--lotuswordpro/source/filter/lwpborderstuff.hxx122
-rw-r--r--lotuswordpro/source/filter/lwpbreaksoverride.cxx283
-rw-r--r--lotuswordpro/source/filter/lwpbreaksoverride.hxx251
-rw-r--r--lotuswordpro/source/filter/lwpbulletstylemgr.cxx593
-rw-r--r--lotuswordpro/source/filter/lwpbulletstylemgr.hxx171
-rw-r--r--lotuswordpro/source/filter/lwpcelllayout.cxx958
-rw-r--r--lotuswordpro/source/filter/lwpcelllayout.hxx212
-rw-r--r--lotuswordpro/source/filter/lwpchangemgr.cxx386
-rw-r--r--lotuswordpro/source/filter/lwpchangemgr.hxx97
-rw-r--r--lotuswordpro/source/filter/lwpcharacterstyle.cxx210
-rw-r--r--lotuswordpro/source/filter/lwpcharacterstyle.hxx140
-rw-r--r--lotuswordpro/source/filter/lwpcharborderoverride.cxx150
-rw-r--r--lotuswordpro/source/filter/lwpcharborderoverride.hxx198
-rw-r--r--lotuswordpro/source/filter/lwpcharsetmgr.cxx122
-rw-r--r--lotuswordpro/source/filter/lwpcharsetmgr.hxx88
-rw-r--r--lotuswordpro/source/filter/lwpchartstreamtools.cxx362
-rw-r--r--lotuswordpro/source/filter/lwpchartstreamtools.hxx152
-rw-r--r--lotuswordpro/source/filter/lwpchartwrapper.cxx96
-rw-r--r--lotuswordpro/source/filter/lwpchartwrapper.hxx82
-rw-r--r--lotuswordpro/source/filter/lwpcolor.cxx152
-rw-r--r--lotuswordpro/source/filter/lwpcolor.hxx133
-rw-r--r--lotuswordpro/source/filter/lwpcontent.cxx156
-rw-r--r--lotuswordpro/source/filter/lwpcontent.hxx161
-rw-r--r--lotuswordpro/source/filter/lwpdefobj.cxx91
-rw-r--r--lotuswordpro/source/filter/lwpdefobj.hxx84
-rw-r--r--lotuswordpro/source/filter/lwpdefs.hxx426
-rw-r--r--lotuswordpro/source/filter/lwpdivinfo.cxx177
-rw-r--r--lotuswordpro/source/filter/lwpdivinfo.hxx169
-rw-r--r--lotuswordpro/source/filter/lwpdivopts.cxx136
-rw-r--r--lotuswordpro/source/filter/lwpdivopts.hxx123
-rw-r--r--lotuswordpro/source/filter/lwpdllist.cxx102
-rw-r--r--lotuswordpro/source/filter/lwpdllist.hxx107
-rw-r--r--lotuswordpro/source/filter/lwpdlvlist.cxx188
-rw-r--r--lotuswordpro/source/filter/lwpdlvlist.hxx208
-rw-r--r--lotuswordpro/source/filter/lwpdoc.cxx833
-rw-r--r--lotuswordpro/source/filter/lwpdoc.hxx251
-rw-r--r--lotuswordpro/source/filter/lwpdocdata.cxx398
-rw-r--r--lotuswordpro/source/filter/lwpdocdata.hxx194
-rw-r--r--lotuswordpro/source/filter/lwpdrawobj.cxx1554
-rw-r--r--lotuswordpro/source/filter/lwpdrawobj.hxx379
-rw-r--r--lotuswordpro/source/filter/lwpdropcapmgr.cxx84
-rw-r--r--lotuswordpro/source/filter/lwpdropcapmgr.hxx81
-rw-r--r--lotuswordpro/source/filter/lwpfilehdr.cxx86
-rw-r--r--lotuswordpro/source/filter/lwpfilehdr.hxx92
-rw-r--r--lotuswordpro/source/filter/lwpfilter.cxx529
-rw-r--r--lotuswordpro/source/filter/lwpfilter.hxx187
-rw-r--r--lotuswordpro/source/filter/lwpfnlayout.cxx398
-rw-r--r--lotuswordpro/source/filter/lwpfnlayout.hxx198
-rw-r--r--lotuswordpro/source/filter/lwpfont.cxx559
-rw-r--r--lotuswordpro/source/filter/lwpfont.hxx286
-rw-r--r--lotuswordpro/source/filter/lwpfootnote.cxx598
-rw-r--r--lotuswordpro/source/filter/lwpfootnote.hxx288
-rw-r--r--lotuswordpro/source/filter/lwpfoundry.cxx582
-rw-r--r--lotuswordpro/source/filter/lwpfoundry.hxx329
-rw-r--r--lotuswordpro/source/filter/lwpframelayout.cxx1284
-rw-r--r--lotuswordpro/source/filter/lwpframelayout.hxx243
-rw-r--r--lotuswordpro/source/filter/lwpfrib.cxx466
-rw-r--r--lotuswordpro/source/filter/lwpfrib.hxx142
-rw-r--r--lotuswordpro/source/filter/lwpfribbreaks.cxx168
-rw-r--r--lotuswordpro/source/filter/lwpfribbreaks.hxx107
-rw-r--r--lotuswordpro/source/filter/lwpfribframe.cxx238
-rw-r--r--lotuswordpro/source/filter/lwpfribframe.hxx100
-rw-r--r--lotuswordpro/source/filter/lwpfribheader.hxx138
-rw-r--r--lotuswordpro/source/filter/lwpfribmark.cxx1463
-rw-r--r--lotuswordpro/source/filter/lwpfribmark.hxx167
-rw-r--r--lotuswordpro/source/filter/lwpfribptr.cxx692
-rw-r--r--lotuswordpro/source/filter/lwpfribptr.hxx103
-rw-r--r--lotuswordpro/source/filter/lwpfribsection.cxx473
-rw-r--r--lotuswordpro/source/filter/lwpfribsection.hxx134
-rw-r--r--lotuswordpro/source/filter/lwpfribtable.cxx176
-rw-r--r--lotuswordpro/source/filter/lwpfribtable.hxx77
-rw-r--r--lotuswordpro/source/filter/lwpfribtext.cxx499
-rw-r--r--lotuswordpro/source/filter/lwpfribtext.hxx233
-rw-r--r--lotuswordpro/source/filter/lwpglobalmgr.cxx168
-rw-r--r--lotuswordpro/source/filter/lwpglobalmgr.hxx105
-rw-r--r--lotuswordpro/source/filter/lwpgrfobj.cxx846
-rw-r--r--lotuswordpro/source/filter/lwpgrfobj.hxx143
-rw-r--r--lotuswordpro/source/filter/lwpheader.hxx87
-rw-r--r--lotuswordpro/source/filter/lwpholder.cxx121
-rw-r--r--lotuswordpro/source/filter/lwpholder.hxx132
-rw-r--r--lotuswordpro/source/filter/lwphyperlinkmgr.cxx84
-rw-r--r--lotuswordpro/source/filter/lwphyperlinkmgr.hxx85
-rw-r--r--lotuswordpro/source/filter/lwpidxmgr.cxx357
-rw-r--r--lotuswordpro/source/filter/lwpidxmgr.hxx119
-rw-r--r--lotuswordpro/source/filter/lwplayout.cxx2216
-rw-r--r--lotuswordpro/source/filter/lwplayout.hxx461
-rw-r--r--lotuswordpro/source/filter/lwplayoutdef.hxx173
-rw-r--r--lotuswordpro/source/filter/lwplaypiece.cxx467
-rw-r--r--lotuswordpro/source/filter/lwplaypiece.hxx395
-rw-r--r--lotuswordpro/source/filter/lwplnopts.cxx99
-rw-r--r--lotuswordpro/source/filter/lwplnopts.hxx101
-rw-r--r--lotuswordpro/source/filter/lwpmargins.hxx123
-rw-r--r--lotuswordpro/source/filter/lwpmarker.cxx579
-rw-r--r--lotuswordpro/source/filter/lwpmarker.hxx284
-rw-r--r--lotuswordpro/source/filter/lwpnotes.cxx329
-rw-r--r--lotuswordpro/source/filter/lwpnotes.hxx163
-rw-r--r--lotuswordpro/source/filter/lwpnumberingoverride.cxx183
-rw-r--r--lotuswordpro/source/filter/lwpnumberingoverride.hxx172
-rw-r--r--lotuswordpro/source/filter/lwpnumericfmt.cxx571
-rw-r--r--lotuswordpro/source/filter/lwpnumericfmt.hxx315
-rw-r--r--lotuswordpro/source/filter/lwpobj.cxx123
-rw-r--r--lotuswordpro/source/filter/lwpobj.hxx108
-rw-r--r--lotuswordpro/source/filter/lwpobjfactory.cxx769
-rw-r--r--lotuswordpro/source/filter/lwpobjfactory.hxx122
-rw-r--r--lotuswordpro/source/filter/lwpobjhdr.cxx201
-rw-r--r--lotuswordpro/source/filter/lwpobjhdr.hxx140
-rw-r--r--lotuswordpro/source/filter/lwpobjid.cxx259
-rw-r--r--lotuswordpro/source/filter/lwpobjid.hxx162
-rw-r--r--lotuswordpro/source/filter/lwpobjstrm.cxx374
-rw-r--r--lotuswordpro/source/filter/lwpobjstrm.hxx130
-rw-r--r--lotuswordpro/source/filter/lwpobjtags.hxx244
-rw-r--r--lotuswordpro/source/filter/lwpoleobject.cxx406
-rw-r--r--lotuswordpro/source/filter/lwpoleobject.hxx197
-rw-r--r--lotuswordpro/source/filter/lwpoverride.cxx558
-rw-r--r--lotuswordpro/source/filter/lwpoverride.hxx441
-rw-r--r--lotuswordpro/source/filter/lwppagehint.cxx120
-rw-r--r--lotuswordpro/source/filter/lwppagehint.hxx131
-rw-r--r--lotuswordpro/source/filter/lwppagelayout.cxx1064
-rw-r--r--lotuswordpro/source/filter/lwppagelayout.hxx172
-rw-r--r--lotuswordpro/source/filter/lwppara.cxx997
-rw-r--r--lotuswordpro/source/filter/lwppara.hxx426
-rw-r--r--lotuswordpro/source/filter/lwppara1.cxx733
-rw-r--r--lotuswordpro/source/filter/lwpparaborderoverride.cxx397
-rw-r--r--lotuswordpro/source/filter/lwpparaborderoverride.hxx287
-rw-r--r--lotuswordpro/source/filter/lwpparaproperty.cxx297
-rw-r--r--lotuswordpro/source/filter/lwpparaproperty.hxx322
-rw-r--r--lotuswordpro/source/filter/lwpparastyle.cxx800
-rw-r--r--lotuswordpro/source/filter/lwpparastyle.hxx133
-rw-r--r--lotuswordpro/source/filter/lwppiece.hxx204
-rw-r--r--lotuswordpro/source/filter/lwpproplist.cxx154
-rw-r--r--lotuswordpro/source/filter/lwpproplist.hxx102
-rw-r--r--lotuswordpro/source/filter/lwpprtinfo.cxx108
-rw-r--r--lotuswordpro/source/filter/lwpprtinfo.hxx95
-rw-r--r--lotuswordpro/source/filter/lwppttntbl.hxx148
-rw-r--r--lotuswordpro/source/filter/lwpresource.hxx68
-rw-r--r--lotuswordpro/source/filter/lwprowlayout.cxx489
-rw-r--r--lotuswordpro/source/filter/lwprowlayout.hxx137
-rw-r--r--lotuswordpro/source/filter/lwpsdwdrawheader.hxx300
-rw-r--r--lotuswordpro/source/filter/lwpsdwfileloader.cxx152
-rw-r--r--lotuswordpro/source/filter/lwpsdwfileloader.hxx89
-rw-r--r--lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx415
-rw-r--r--lotuswordpro/source/filter/lwpsdwgrouploaderv0102.hxx97
-rw-r--r--lotuswordpro/source/filter/lwpsdwrect.cxx233
-rw-r--r--lotuswordpro/source/filter/lwpsdwrect.hxx131
-rw-r--r--lotuswordpro/source/filter/lwpsection.cxx158
-rw-r--r--lotuswordpro/source/filter/lwpsection.hxx175
-rw-r--r--lotuswordpro/source/filter/lwpshadow.hxx123
-rw-r--r--lotuswordpro/source/filter/lwpsilverbullet.cxx488
-rw-r--r--lotuswordpro/source/filter/lwpsilverbullet.hxx192
-rw-r--r--lotuswordpro/source/filter/lwpslvlist.hxx91
-rw-r--r--lotuswordpro/source/filter/lwpsortopt.cxx108
-rw-r--r--lotuswordpro/source/filter/lwpsortopt.hxx105
-rw-r--r--lotuswordpro/source/filter/lwpstory.cxx552
-rw-r--r--lotuswordpro/source/filter/lwpstory.hxx204
-rw-r--r--lotuswordpro/source/filter/lwpstyledef.hxx260
-rw-r--r--lotuswordpro/source/filter/lwpsvstream.cxx102
-rw-r--r--lotuswordpro/source/filter/lwpsvstream.hxx102
-rw-r--r--lotuswordpro/source/filter/lwptable.cxx283
-rw-r--r--lotuswordpro/source/filter/lwptable.hxx239
-rw-r--r--lotuswordpro/source/filter/lwptablelayout.cxx1542
-rw-r--r--lotuswordpro/source/filter/lwptablelayout.hxx272
-rw-r--r--lotuswordpro/source/filter/lwptaboverride.hxx131
-rw-r--r--lotuswordpro/source/filter/lwptabrack.cxx137
-rw-r--r--lotuswordpro/source/filter/lwptabrack.hxx165
-rw-r--r--lotuswordpro/source/filter/lwptblcell.cxx264
-rw-r--r--lotuswordpro/source/filter/lwptblcell.hxx497
-rw-r--r--lotuswordpro/source/filter/lwptblformula.cxx808
-rw-r--r--lotuswordpro/source/filter/lwptblformula.hxx226
-rw-r--r--lotuswordpro/source/filter/lwptemp.hxx82
-rw-r--r--lotuswordpro/source/filter/lwptoc.cxx459
-rw-r--r--lotuswordpro/source/filter/lwptoc.hxx173
-rw-r--r--lotuswordpro/source/filter/lwptools.cxx923
-rw-r--r--lotuswordpro/source/filter/lwptools.hxx152
-rw-r--r--lotuswordpro/source/filter/lwpuidoc.cxx142
-rw-r--r--lotuswordpro/source/filter/lwpuidoc.hxx157
-rw-r--r--lotuswordpro/source/filter/lwpunoheader.hxx87
-rw-r--r--lotuswordpro/source/filter/lwpusewhen.hxx179
-rw-r--r--lotuswordpro/source/filter/lwpusrdicts.cxx88
-rw-r--r--lotuswordpro/source/filter/lwpusrdicts.hxx83
-rw-r--r--lotuswordpro/source/filter/lwpverdocument.cxx112
-rw-r--r--lotuswordpro/source/filter/lwpverdocument.hxx87
-rw-r--r--lotuswordpro/source/filter/lwpvpointer.cxx84
-rw-r--r--lotuswordpro/source/filter/lwpvpointer.hxx85
-rw-r--r--lotuswordpro/source/filter/makefile.mk110
-rw-r--r--lotuswordpro/source/filter/schxmlwrapper.cxx491
-rw-r--r--lotuswordpro/source/filter/schxmlwrapper.hxx121
-rw-r--r--lotuswordpro/source/filter/tocread.cxx522
-rw-r--r--lotuswordpro/source/filter/tocread.hxx92
-rw-r--r--lotuswordpro/source/filter/ut.hxx104
-rw-r--r--lotuswordpro/source/filter/utbenvs.cxx170
-rw-r--r--lotuswordpro/source/filter/utlist.cxx212
-rw-r--r--lotuswordpro/source/filter/utlist.hxx155
-rw-r--r--lotuswordpro/source/filter/xfilter/ixfattrlist.hxx92
-rw-r--r--lotuswordpro/source/filter/xfilter/ixfcontent.hxx104
-rw-r--r--lotuswordpro/source/filter/xfilter/ixfobject.hxx94
-rw-r--r--lotuswordpro/source/filter/xfilter/ixfproperty.hxx78
-rw-r--r--lotuswordpro/source/filter/xfilter/ixfstream.hxx116
-rw-r--r--lotuswordpro/source/filter/xfilter/ixfstyle.hxx116
-rw-r--r--lotuswordpro/source/filter/xfilter/makefile.mk148
-rw-r--r--lotuswordpro/source/filter/xfilter/xfannotation.hxx121
-rw-r--r--lotuswordpro/source/filter/xfilter/xfarrowstyle.hxx132
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbase64.cxx138
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbase64.hxx86
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbgimage.cxx165
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbgimage.hxx157
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbookmark.hxx132
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbookmarkref.cxx109
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbookmarkref.hxx105
-rw-r--r--lotuswordpro/source/filter/xfilter/xfborders.cxx375
-rw-r--r--lotuswordpro/source/filter/xfilter/xfborders.hxx197
-rw-r--r--lotuswordpro/source/filter/xfilter/xfbreaks.hxx148
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcell.cxx306
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcell.hxx263
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcellstyle.cxx311
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcellstyle.hxx207
-rw-r--r--lotuswordpro/source/filter/xfilter/xfchange.cxx166
-rw-r--r--lotuswordpro/source/filter/xfilter/xfchange.hxx148
-rw-r--r--lotuswordpro/source/filter/xfilter/xfchartstreamtools.cxx120
-rw-r--r--lotuswordpro/source/filter/xfilter/xfchartstreamtools.hxx114
-rw-r--r--lotuswordpro/source/filter/xfilter/xfchartxmlhandler.cxx127
-rw-r--r--lotuswordpro/source/filter/xfilter/xfchartxmlhandler.hxx131
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcolor.cxx94
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcolor.hxx133
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcolstyle.cxx97
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcolstyle.hxx114
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcolumns.cxx215
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcolumns.hxx182
-rw-r--r--lotuswordpro/source/filter/xfilter/xfconditionformat.hxx72
-rw-r--r--lotuswordpro/source/filter/xfilter/xfconfigmanager.cxx110
-rw-r--r--lotuswordpro/source/filter/xfilter/xfconfigmanager.hxx112
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcontent.hxx102
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx221
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcontentcontainer.hxx146
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcrossref.cxx107
-rw-r--r--lotuswordpro/source/filter/xfilter/xfcrossref.hxx111
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdate.cxx121
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdate.hxx137
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdatestyle.cxx194
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdatestyle.hxx263
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdefs.hxx517
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdocfield.cxx236
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdocfield.hxx203
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawareastyle.cxx101
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawareastyle.hxx147
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawchart.cxx98
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawchart.hxx100
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawcircle.cxx137
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawcircle.hxx145
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawellipse.cxx120
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawellipse.hxx159
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawgroup.hxx117
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawline.cxx127
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawline.hxx114
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawlinestyle.cxx125
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawlinestyle.hxx220
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawobj.cxx138
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawobj.hxx181
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawpath.cxx225
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawpath.hxx156
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawpolygon.cxx104
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawpolygon.hxx84
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawpolyline.cxx136
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawpolyline.hxx101
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawrect.cxx85
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawrect.hxx118
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawstyle.cxx352
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdrawstyle.hxx169
-rw-r--r--lotuswordpro/source/filter/xfilter/xfdropcap.hxx154
-rw-r--r--lotuswordpro/source/filter/xfilter/xfendnote.hxx131
-rw-r--r--lotuswordpro/source/filter/xfilter/xfendnoteconfig.hxx84
-rw-r--r--lotuswordpro/source/filter/xfilter/xfentry.cxx110
-rw-r--r--lotuswordpro/source/filter/xfilter/xfentry.hxx164
-rw-r--r--lotuswordpro/source/filter/xfilter/xffileattrlist.cxx84
-rw-r--r--lotuswordpro/source/filter/xfilter/xffileattrlist.hxx91
-rw-r--r--lotuswordpro/source/filter/xfilter/xffilestream.cxx210
-rw-r--r--lotuswordpro/source/filter/xfilter/xffilestream.hxx94
-rw-r--r--lotuswordpro/source/filter/xfilter/xffloatframe.cxx93
-rw-r--r--lotuswordpro/source/filter/xfilter/xffloatframe.hxx96
-rw-r--r--lotuswordpro/source/filter/xfilter/xffont.cxx416
-rw-r--r--lotuswordpro/source/filter/xfilter/xffont.hxx511
-rw-r--r--lotuswordpro/source/filter/xfilter/xffontdecl.cxx106
-rw-r--r--lotuswordpro/source/filter/xfilter/xffontdecl.hxx114
-rw-r--r--lotuswordpro/source/filter/xfilter/xffontfactory.cxx104
-rw-r--r--lotuswordpro/source/filter/xfilter/xffontfactory.hxx110
-rw-r--r--lotuswordpro/source/filter/xfilter/xffontworkstyle.hxx159
-rw-r--r--lotuswordpro/source/filter/xfilter/xffooter.hxx92
-rw-r--r--lotuswordpro/source/filter/xfilter/xffooterstyle.hxx128
-rw-r--r--lotuswordpro/source/filter/xfilter/xffootnote.hxx131
-rw-r--r--lotuswordpro/source/filter/xfilter/xffootnoteconfig.hxx271
-rw-r--r--lotuswordpro/source/filter/xfilter/xfframe.cxx213
-rw-r--r--lotuswordpro/source/filter/xfilter/xfframe.hxx267
-rw-r--r--lotuswordpro/source/filter/xfilter/xfframestyle.cxx240
-rw-r--r--lotuswordpro/source/filter/xfilter/xfframestyle.hxx254
-rw-r--r--lotuswordpro/source/filter/xfilter/xfframetable.hxx93
-rw-r--r--lotuswordpro/source/filter/xfilter/xfglobal.cxx148
-rw-r--r--lotuswordpro/source/filter/xfilter/xfglobal.hxx180
-rw-r--r--lotuswordpro/source/filter/xfilter/xfheader.hxx92
-rw-r--r--lotuswordpro/source/filter/xfilter/xfheaderstyle.cxx195
-rw-r--r--lotuswordpro/source/filter/xfilter/xfheaderstyle.hxx145
-rw-r--r--lotuswordpro/source/filter/xfilter/xfhyperlink.hxx142
-rw-r--r--lotuswordpro/source/filter/xfilter/xfimage.cxx149
-rw-r--r--lotuswordpro/source/filter/xfilter/xfimage.hxx102
-rw-r--r--lotuswordpro/source/filter/xfilter/xfimagestyle.cxx214
-rw-r--r--lotuswordpro/source/filter/xfilter/xfimagestyle.hxx166
-rw-r--r--lotuswordpro/source/filter/xfilter/xfindex.cxx456
-rw-r--r--lotuswordpro/source/filter/xfilter/xfindex.hxx285
-rw-r--r--lotuswordpro/source/filter/xfilter/xfinputlist.hxx117
-rw-r--r--lotuswordpro/source/filter/xfilter/xflinebreak.hxx86
-rw-r--r--lotuswordpro/source/filter/xfilter/xflineheight.hxx178
-rw-r--r--lotuswordpro/source/filter/xfilter/xflinenumberconfig.hxx213
-rw-r--r--lotuswordpro/source/filter/xfilter/xflist.cxx191
-rw-r--r--lotuswordpro/source/filter/xfilter/xflist.hxx165
-rw-r--r--lotuswordpro/source/filter/xfilter/xflistitem.hxx120
-rw-r--r--lotuswordpro/source/filter/xfilter/xfliststyle.cxx344
-rw-r--r--lotuswordpro/source/filter/xfilter/xfliststyle.hxx271
-rw-r--r--lotuswordpro/source/filter/xfilter/xfmargins.cxx132
-rw-r--r--lotuswordpro/source/filter/xfilter/xfmargins.hxx149
-rw-r--r--lotuswordpro/source/filter/xfilter/xfmasterpage.cxx134
-rw-r--r--lotuswordpro/source/filter/xfilter/xfmasterpage.hxx101
-rw-r--r--lotuswordpro/source/filter/xfilter/xfnumberstyle.cxx391
-rw-r--r--lotuswordpro/source/filter/xfilter/xfnumberstyle.hxx199
-rw-r--r--lotuswordpro/source/filter/xfilter/xfnumfmt.hxx155
-rw-r--r--lotuswordpro/source/filter/xfilter/xfofficemeta.cxx153
-rw-r--r--lotuswordpro/source/filter/xfilter/xfofficemeta.hxx100
-rw-r--r--lotuswordpro/source/filter/xfilter/xfoleobj.cxx122
-rw-r--r--lotuswordpro/source/filter/xfilter/xfoleobj.hxx91
-rw-r--r--lotuswordpro/source/filter/xfilter/xfoutlinestyle.cxx133
-rw-r--r--lotuswordpro/source/filter/xfilter/xfoutlinestyle.hxx194
-rw-r--r--lotuswordpro/source/filter/xfilter/xfpadding.hxx212
-rw-r--r--lotuswordpro/source/filter/xfilter/xfpagecount.hxx91
-rw-r--r--lotuswordpro/source/filter/xfilter/xfpagemaster.cxx303
-rw-r--r--lotuswordpro/source/filter/xfilter/xfpagemaster.hxx171
-rw-r--r--lotuswordpro/source/filter/xfilter/xfpagenumber.hxx103
-rw-r--r--lotuswordpro/source/filter/xfilter/xfparagraph.cxx125
-rw-r--r--lotuswordpro/source/filter/xfilter/xfparagraph.hxx101
-rw-r--r--lotuswordpro/source/filter/xfilter/xfparastyle.cxx532
-rw-r--r--lotuswordpro/source/filter/xfilter/xfparastyle.hxx366
-rw-r--r--lotuswordpro/source/filter/xfilter/xfplaceholder.hxx146
-rw-r--r--lotuswordpro/source/filter/xfilter/xfpoint.hxx108
-rw-r--r--lotuswordpro/source/filter/xfilter/xfpvector.hxx102
-rw-r--r--lotuswordpro/source/filter/xfilter/xfrect.hxx142
-rw-r--r--lotuswordpro/source/filter/xfilter/xfrow.cxx187
-rw-r--r--lotuswordpro/source/filter/xfilter/xfrow.hxx144
-rw-r--r--lotuswordpro/source/filter/xfilter/xfrowstyle.cxx131
-rw-r--r--lotuswordpro/source/filter/xfilter/xfrowstyle.hxx128
-rw-r--r--lotuswordpro/source/filter/xfilter/xfruby.hxx115
-rw-r--r--lotuswordpro/source/filter/xfilter/xfrubystyle.hxx145
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsaxattrlist.cxx90
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsaxattrlist.hxx103
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsaxstream.cxx133
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsaxstream.hxx140
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsection.cxx157
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsection.hxx123
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsectionstyle.cxx158
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsectionstyle.hxx109
-rw-r--r--lotuswordpro/source/filter/xfilter/xfshadow.cxx132
-rw-r--r--lotuswordpro/source/filter/xfilter/xfshadow.hxx159
-rw-r--r--lotuswordpro/source/filter/xfilter/xfstyle.cxx109
-rw-r--r--lotuswordpro/source/filter/xfilter/xfstyle.hxx124
-rw-r--r--lotuswordpro/source/filter/xfilter/xfstylecont.cxx302
-rw-r--r--lotuswordpro/source/filter/xfilter/xfstylecont.hxx142
-rw-r--r--lotuswordpro/source/filter/xfilter/xfstylefamily.hxx74
-rw-r--r--lotuswordpro/source/filter/xfilter/xfstylemanager.cxx390
-rw-r--r--lotuswordpro/source/filter/xfilter/xfstylemanager.hxx149
-rw-r--r--lotuswordpro/source/filter/xfilter/xfsubject.hxx87
-rw-r--r--lotuswordpro/source/filter/xfilter/xftable.cxx321
-rw-r--r--lotuswordpro/source/filter/xfilter/xftable.hxx174
-rw-r--r--lotuswordpro/source/filter/xfilter/xftablestyle.cxx141
-rw-r--r--lotuswordpro/source/filter/xfilter/xftablestyle.hxx158
-rw-r--r--lotuswordpro/source/filter/xfilter/xftabstop.hxx86
-rw-r--r--lotuswordpro/source/filter/xfilter/xftabstyle.cxx106
-rw-r--r--lotuswordpro/source/filter/xfilter/xftabstyle.hxx124
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextboxstyle.cxx104
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextboxstyle.hxx92
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextcontent.cxx128
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextcontent.hxx107
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextheading.cxx110
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextheading.hxx95
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextspan.cxx194
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextspan.hxx105
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextstyle.cxx142
-rw-r--r--lotuswordpro/source/filter/xfilter/xftextstyle.hxx104
-rw-r--r--lotuswordpro/source/filter/xfilter/xftexttable.cxx144
-rw-r--r--lotuswordpro/source/filter/xfilter/xftexttable.hxx89
-rw-r--r--lotuswordpro/source/filter/xfilter/xftime.cxx92
-rw-r--r--lotuswordpro/source/filter/xfilter/xftime.hxx111
-rw-r--r--lotuswordpro/source/filter/xfilter/xftimestyle.cxx156
-rw-r--r--lotuswordpro/source/filter/xfilter/xftimestyle.hxx208
-rw-r--r--lotuswordpro/source/filter/xfilter/xftitle.hxx91
-rw-r--r--lotuswordpro/source/filter/xfilter/xfutil.cxx584
-rw-r--r--lotuswordpro/source/filter/xfilter/xfutil.hxx124
-rw-r--r--lotuswordpro/util/lwpft.map8
-rw-r--r--lotuswordpro/util/makefile.mk37
-rw-r--r--lpsolve/lp_solve-aix.patch39
-rw-r--r--lpsolve/lp_solve_5.5-openbsd.patch20
-rw-r--r--lpsolve/lp_solve_5.5-windows.patch40
-rw-r--r--lpsolve/lp_solve_5.5.patch94
-rw-r--r--lpsolve/makefile.mk101
-rw-r--r--lpsolve/prj/build.lst3
-rw-r--r--lpsolve/prj/d.lst9
-rw-r--r--lucene/lucene.patch12
-rw-r--r--lucene/makefile.mk69
-rw-r--r--lucene/prj/build.lst3
-rw-r--r--lucene/prj/d.lst3
-rw-r--r--lucene/version.mk27
-rw-r--r--makefile.rc101
-rw-r--r--mdds/makefile.mk66
-rw-r--r--mdds/prj/build.lst3
-rw-r--r--mdds/prj/d.lst5
-rw-r--r--migrationanalysis/Read Me.odtbin0 -> 15137 bytes
-rw-r--r--migrationanalysis/no_localization1
-rw-r--r--migrationanalysis/prj/build.lst7
-rw-r--r--migrationanalysis/prj/d.lst1
-rw-r--r--migrationanalysis/src/driver_docs/CreateDriverDocs.wsf221
-rw-r--r--migrationanalysis/src/driver_docs/DocAnalysisRunMacro.vbs438
-rw-r--r--migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisExcelDriver.xlsbin0 -> 696832 bytes
-rw-r--r--migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisPPTDriver.pptbin0 -> 284672 bytes
-rw-r--r--migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisWordDriver.docbin0 -> 664064 bytes
-rw-r--r--migrationanalysis/src/driver_docs/allstrings.ulf2371
-rw-r--r--migrationanalysis/src/driver_docs/makefile.mk127
-rw-r--r--migrationanalysis/src/driver_docs/sources/AnalysisDriver.bas3646
-rw-r--r--migrationanalysis/src/driver_docs/sources/CollectedFiles.cls378
-rw-r--r--migrationanalysis/src/driver_docs/sources/CommonMigrationAnalyser.bas1119
-rw-r--r--migrationanalysis/src/driver_docs/sources/CommonPreparation.bas226
-rw-r--r--migrationanalysis/src/driver_docs/sources/DocumentAnalysis.cls342
-rw-r--r--migrationanalysis/src/driver_docs/sources/FileTypeAssociation.cls56
-rw-r--r--migrationanalysis/src/driver_docs/sources/IssueInfo.cls206
-rw-r--r--migrationanalysis/src/driver_docs/sources/LocalizeResults.bas308
-rw-r--r--migrationanalysis/src/driver_docs/sources/PrepareInfo.cls42
-rw-r--r--migrationanalysis/src/driver_docs/sources/StringDataManager.cls131
-rw-r--r--migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisExcelDriver.xlsbin0 -> 31232 bytes
-rw-r--r--migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisPPTDriver.pptbin0 -> 64512 bytes
-rw-r--r--migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisWordDriver.docbin0 -> 38912 bytes
-rw-r--r--migrationanalysis/src/driver_docs/sources/common_res.bas284
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/ApplicationSpecific.bas164
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/MigrationAnalyser.cls2319
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/Preparation.bas51
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/SetTextBoxFont.bas50
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/ThisWorkbook.cls53
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/excel_res.bas375
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/ApplicationSpecific.bas176
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/Loader.bas62
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/MigrationAnalyser.cls824
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/Preparation.bas41
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/Slide1.cls54
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/powerpoint_res.bas107
-rw-r--r--migrationanalysis/src/driver_docs/sources/results_res.bas613
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/ApplicationSpecific.bas156
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/MigrationAnalyser.cls1522
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/Preparation.bas151
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/ThisDocument.cls52
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/word_res.bas289
-rw-r--r--migrationanalysis/src/driver_docs/ulf2dat.pl153
-rw-r--r--migrationanalysis/src/exe/LaunchDrivers.exebin0 -> 28672 bytes
-rw-r--r--migrationanalysis/src/exe/ProAnalysisWizard.exebin0 -> 843776 bytes
-rw-r--r--migrationanalysis/src/msokill/StdAfx.cpp38
-rw-r--r--migrationanalysis/src/msokill/StdAfx.h57
-rw-r--r--migrationanalysis/src/msokill/makefile.mk83
-rw-r--r--migrationanalysis/src/msokill/msokill.cpp261
-rw-r--r--migrationanalysis/src/resources/analysis.dtd52
-rw-r--r--migrationanalysis/src/resources/makefile.mk59
-rw-r--r--migrationanalysis/src/resources/results_paw.xltbin0 -> 140800 bytes
-rw-r--r--migrationanalysis/src/wizard/Analyse.bas589
-rw-r--r--migrationanalysis/src/wizard/CollectedFiles.cls530
-rw-r--r--migrationanalysis/src/wizard/DocAnalysisWizard.exe.manifest22
-rw-r--r--migrationanalysis/src/wizard/Get Directory Dialog.bas143
-rw-r--r--migrationanalysis/src/wizard/IniSupport.bas269
-rw-r--r--migrationanalysis/src/wizard/LaunchDrivers.vbp42
-rw-r--r--migrationanalysis/src/wizard/LaunchDrivers.vbw1
-rw-r--r--migrationanalysis/src/wizard/OOo3_Analysis.icobin0 -> 295606 bytes
-rw-r--r--migrationanalysis/src/wizard/OOo_AnalysisBitmap.pngbin0 -> 8625 bytes
-rw-r--r--migrationanalysis/src/wizard/Office10Issues.bas361
-rw-r--r--migrationanalysis/src/wizard/ProAnalysisWizard.vbp65
-rw-r--r--migrationanalysis/src/wizard/RunServer.bas199
-rw-r--r--migrationanalysis/src/wizard/ScanFolders.frm157
-rw-r--r--migrationanalysis/src/wizard/SearchDocs.frm124
-rw-r--r--migrationanalysis/src/wizard/Terminate.frm81
-rw-r--r--migrationanalysis/src/wizard/Utilities.bas552
-rw-r--r--migrationanalysis/src/wizard/Wizard.DCAbin0 -> 3927 bytes
-rw-r--r--migrationanalysis/src/wizard/Wizard.Dsr79
-rw-r--r--migrationanalysis/src/wizard/Wizard.FRXbin0 -> 416643 bytes
-rw-r--r--migrationanalysis/src/wizard/Wizard.bas651
-rw-r--r--migrationanalysis/src/wizard/Wizard.frm3453
-rw-r--r--migrationanalysis/src/wizard/makefile.mk116
-rw-r--r--migrationanalysis/src/wizard/rcfooter.txt1
-rw-r--r--migrationanalysis/src/wizard/rcheader.txt17
-rw-r--r--migrationanalysis/src/wizard/rctmpl.txt126
-rw-r--r--migrationanalysis/src/wizard/res_defines.h153
-rw-r--r--migrationanalysis/src/wizard/wizard.ulf352
-rw-r--r--migrationanalysis/util/delzip1
-rw-r--r--migrationanalysis/util/makefile.mk53
-rw-r--r--more_fonts/fonts/fc_local.conf24
-rw-r--r--more_fonts/fonts/ttf_dejavu/makefile.mk61
-rw-r--r--more_fonts/fonts/ttf_gentium/makefile.mk61
-rw-r--r--more_fonts/fonts/ttf_liberation/makefile.mk60
-rw-r--r--more_fonts/fonts/ttf_linlibertineg/makefile.mk60
-rw-r--r--more_fonts/prj/build.lst5
-rw-r--r--more_fonts/prj/d.lst11
-rwxr-xr-xmoz/README4
-rw-r--r--moz/extractfiles.mk459
-rw-r--r--moz/makefile.mk431
-rw-r--r--moz/patches/aix_build_fix.patch203
-rw-r--r--moz/patches/arm_build_fix.patch189
-rw-r--r--moz/patches/brokenmakefile.patch13
-rw-r--r--moz/patches/consecutive_ldap_queries.patch13
-rw-r--r--moz/patches/cygwin_paths_in_ldap_sdk.patch12
-rw-r--r--moz/patches/dtoa.patch237
-rwxr-xr-xmoz/patches/embed_manifest.patch142
-rw-r--r--moz/patches/index.txt65
-rw-r--r--moz/patches/link_fontconfig.patch11
-rw-r--r--moz/patches/no_core_abspath_in_nss.patch52
-rw-r--r--moz/patches/respect_disable_pango.patch54
-rw-r--r--moz/patches/wchart_on_msvc8.patch20
-rw-r--r--moz/prj/build.lst4
-rw-r--r--moz/prj/d.lst240
-rw-r--r--moz/seamonkey-source-1.1.14.patch6338
-rw-r--r--moz/zipped/makefile.mk213
-rw-r--r--mysqlc/prj/build.lst3
-rw-r--r--mysqlc/prj/d.lst4
-rw-r--r--mysqlc/source/DataAccess.xcu19
-rw-r--r--mysqlc/source/README65
-rw-r--r--mysqlc/source/delzip0
-rwxr-xr-xmysqlc/source/description.xml24
-rw-r--r--mysqlc/source/description/description_de.txt1
-rwxr-xr-xmysqlc/source/description/description_en-US.txt1
-rw-r--r--mysqlc/source/description/description_es.txt1
-rw-r--r--mysqlc/source/description/description_fr.txt1
-rw-r--r--mysqlc/source/description/description_hu.txt1
-rw-r--r--mysqlc/source/description/description_it.txt1
-rw-r--r--mysqlc/source/description/description_ja.txt1
-rw-r--r--mysqlc/source/description/description_ko.txt1
-rw-r--r--mysqlc/source/description/description_nl.txt1
-rw-r--r--mysqlc/source/description/description_pl.txt1
-rw-r--r--mysqlc/source/description/description_pt-BR.txt1
-rw-r--r--mysqlc/source/description/description_pt.txt1
-rw-r--r--mysqlc/source/description/description_ru.txt1
-rw-r--r--mysqlc/source/description/description_sv.txt1
-rw-r--r--mysqlc/source/description/description_zh-CN.txt1
-rw-r--r--mysqlc/source/description/description_zh-TW.txt1
-rw-r--r--mysqlc/source/exports.dxp3
-rwxr-xr-xmysqlc/source/makefile.mk335
-rw-r--r--mysqlc/source/manifest.xml8
-rw-r--r--mysqlc/source/mysqlc.map8
-rw-r--r--mysqlc/source/mysqlc.xml79
-rw-r--r--mysqlc/source/mysqlc_connection.cxx796
-rw-r--r--mysqlc/source/mysqlc_connection.hxx254
-rw-r--r--mysqlc/source/mysqlc_databasemetadata.cxx2220
-rw-r--r--mysqlc/source/mysqlc_databasemetadata.hxx244
-rw-r--r--mysqlc/source/mysqlc_driver.cxx372
-rw-r--r--mysqlc/source/mysqlc_driver.hxx123
-rw-r--r--mysqlc/source/mysqlc_general.cxx179
-rw-r--r--mysqlc/source/mysqlc_general.hxx71
-rw-r--r--mysqlc/source/mysqlc_preparedstatement.cxx947
-rw-r--r--mysqlc/source/mysqlc_preparedstatement.hxx189
-rw-r--r--mysqlc/source/mysqlc_propertyids.cxx211
-rw-r--r--mysqlc/source/mysqlc_propertyids.hxx138
-rw-r--r--mysqlc/source/mysqlc_resultset.cxx1517
-rw-r--r--mysqlc/source/mysqlc_resultset.hxx340
-rw-r--r--mysqlc/source/mysqlc_resultsetmetadata.cxx470
-rw-r--r--mysqlc/source/mysqlc_resultsetmetadata.hxx126
-rw-r--r--mysqlc/source/mysqlc_services.cxx186
-rw-r--r--mysqlc/source/mysqlc_statement.cxx534
-rw-r--r--mysqlc/source/mysqlc_statement.hxx192
-rw-r--r--mysqlc/source/mysqlc_subcomponent.hxx245
-rw-r--r--mysqlc/source/mysqlc_types.cxx795
-rw-r--r--mysqlc/source/mysqlc_types.hxx59
-rw-r--r--mysqlc/source/registry/data/org/openoffice/Office/DataAccess/Drivers.xcu103
-rw-r--r--mysqlc/version.mk38
-rw-r--r--mysqlcppconn/cppconn_config.pmk33
-rw-r--r--mysqlcppconn/makefile.mk91
-rw-r--r--mysqlcppconn/mysql-connector-cpp.patch385
-rw-r--r--mysqlcppconn/mysql_config.pmk49
-rw-r--r--mysqlcppconn/patches/default_to_protocol_tcp.patch12
-rw-r--r--mysqlcppconn/prj/build.lst3
-rw-r--r--mysqlcppconn/prj/d.lst15
-rw-r--r--mythes/makefile.mk116
-rw-r--r--mythes/mythes-1.2.0-makefile-mk.diff94
-rw-r--r--mythes/mythes-1.2.0-vanilla-th-gen-idx.patch97
-rw-r--r--mythes/prj/build.lst3
-rw-r--r--mythes/prj/d.lst7
-rw-r--r--neon/makefile.mk91
-rw-r--r--neon/neon.patch927
-rw-r--r--neon/neon_exports_unix.patch291
-rw-r--r--neon/neon_exports_win.patch297
-rwxr-xr-xneon/prj/build.lst3
-rw-r--r--neon/prj/d.lst8
-rw-r--r--neon/version.mk37
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ast.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ca.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_de.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_en_GB.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_es.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_fa.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_fi.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_fr.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_gl.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_hu.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_it.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ja.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ko.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_nb.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_nl.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_pt_BR.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ro.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ru.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_sk.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_sl.properties24
-rw-r--r--nlpsolver/locale/NLPSolverCommon_zh_CN.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_zh_TW.properties22
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ast.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ca.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_de.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_en_GB.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_es.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_fa.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_fi.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_fr.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_gl.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_hu.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_is.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_it.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ja.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ko.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_nb.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_nl.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_pt_BR.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ro.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ru.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_sk.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_sl.properties31
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_zh_CN.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_zh_TW.properties28
-rw-r--r--nlpsolver/makefile.mk75
-rw-r--r--nlpsolver/nlpsolver-0.9.patch62
-rw-r--r--nlpsolver/prj/build.lst3
-rw-r--r--nlpsolver/prj/d.lst1
-rw-r--r--np_sdk/mozsrc/LEGAL43
-rw-r--r--np_sdk/mozsrc/LICENSE567
-rw-r--r--np_sdk/mozsrc/README2
-rw-r--r--np_sdk/mozsrc/jri.h689
-rw-r--r--np_sdk/mozsrc/jri_md.h564
-rw-r--r--np_sdk/mozsrc/jritypes.h232
-rw-r--r--np_sdk/mozsrc/makefile.mk59
-rw-r--r--np_sdk/mozsrc/npapi.h610
-rw-r--r--np_sdk/mozsrc/npunix.c505
-rw-r--r--np_sdk/mozsrc/npupp.h1292
-rw-r--r--np_sdk/mozsrc/npwin.cpp369
-rw-r--r--np_sdk/prj/build.lst3
-rw-r--r--np_sdk/prj/d.lst7
-rw-r--r--nss/makefile.mk184
-rw-r--r--nss/nss.aix.patch143
-rw-r--r--nss/nss.patch191
-rwxr-xr-xnss/nss.patch.mingw167
-rw-r--r--nss/nss_macosx.patch12
-rw-r--r--nss/prj/build.lst3
-rwxr-xr-xnss/prj/d.lst31
-rwxr-xr-xnss/readme.txt75
-rw-r--r--o3tl/inc/o3tl/cow_wrapper.hxx331
-rw-r--r--o3tl/inc/o3tl/heap_ptr.hxx314
-rw-r--r--o3tl/inc/o3tl/lazy_update.hxx274
-rw-r--r--o3tl/inc/o3tl/range.hxx192
-rw-r--r--o3tl/inc/o3tl/vector_pool.hxx135
-rw-r--r--o3tl/prj/build.lst5
-rw-r--r--o3tl/prj/d.lst2
-rw-r--r--o3tl/qa/cow_wrapper_clients.cxx183
-rw-r--r--o3tl/qa/cow_wrapper_clients.hxx131
-rw-r--r--o3tl/qa/export.map34
-rw-r--r--o3tl/qa/makefile.mk84
-rw-r--r--o3tl/qa/test-cow_wrapper.cxx132
-rw-r--r--o3tl/qa/test-heap_ptr.cxx170
-rw-r--r--o3tl/qa/test-range.cxx239
-rw-r--r--o3tl/qa/test-vector_pool.cxx74
-rw-r--r--odk/cfgWin.js981
-rwxr-xr-xodk/configure.pl803
-rw-r--r--odk/docs/common/ref/idl.css130
-rw-r--r--odk/docs/cpp/ref/cpp.css127
-rw-r--r--odk/docs/images/arrow-1.gifbin0 -> 98 bytes
-rw-r--r--odk/docs/images/arrow-2.gifbin0 -> 68 bytes
-rw-r--r--odk/docs/images/arrow-3.gifbin0 -> 98 bytes
-rw-r--r--odk/docs/images/bg_table.gifbin0 -> 42 bytes
-rw-r--r--odk/docs/images/bg_table.pngbin0 -> 128 bytes
-rwxr-xr-xodk/docs/images/bg_table2.gifbin0 -> 44 bytes
-rw-r--r--odk/docs/images/bg_table2.pngbin0 -> 128 bytes
-rwxr-xr-xodk/docs/images/bg_table3.gifbin0 -> 44 bytes
-rw-r--r--odk/docs/images/bg_table3.pngbin0 -> 128 bytes
-rw-r--r--odk/docs/images/bluball.gifbin0 -> 103 bytes
-rw-r--r--odk/docs/images/nada.gifbin0 -> 49 bytes
-rw-r--r--odk/docs/images/nav_down.pngbin0 -> 224 bytes
-rw-r--r--odk/docs/images/nav_home.pngbin0 -> 471 bytes
-rw-r--r--odk/docs/images/nav_left.pngbin0 -> 223 bytes
-rw-r--r--odk/docs/images/nav_right.pngbin0 -> 225 bytes
-rw-r--r--odk/docs/images/nav_up.pngbin0 -> 211 bytes
-rw-r--r--odk/docs/images/odk-footer-logo.gifbin0 -> 850 bytes
-rw-r--r--odk/docs/images/ooo-main-app_32.pngbin0 -> 2429 bytes
-rw-r--r--odk/docs/images/orc-main-app_32.pngbin0 -> 2496 bytes
-rw-r--r--odk/docs/images/sdk_head-1.pngbin0 -> 11767 bytes
-rw-r--r--odk/docs/images/sdk_head-2.pngbin0 -> 175 bytes
-rw-r--r--odk/docs/images/sdk_line-1.gifbin0 -> 43 bytes
-rw-r--r--odk/docs/images/sdk_line-2.gifbin0 -> 113 bytes
-rw-r--r--odk/docs/install.html420
-rw-r--r--odk/docs/notsupported.html4
-rw-r--r--odk/docs/sdk_styles.css130
-rw-r--r--odk/docs/tools.html1094
-rw-r--r--odk/examples/CLI/CSharp/Spreadsheet/GeneralTableSample.cs206
-rw-r--r--odk/examples/CLI/CSharp/Spreadsheet/Makefile79
-rw-r--r--odk/examples/CLI/CSharp/Spreadsheet/SpreadsheetDocHelper.cs344
-rw-r--r--odk/examples/CLI/CSharp/Spreadsheet/SpreadsheetSample.cs1478
-rw-r--r--odk/examples/CLI/CSharp/Spreadsheet/ViewSample.cs165
-rw-r--r--odk/examples/CLI/VB.NET/WriterDemo/Makefile61
-rw-r--r--odk/examples/CLI/VB.NET/WriterDemo/WriterDemo.vb242
-rw-r--r--odk/examples/CLI/makefile.mk72
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/ConnectionTask.java208
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/EventHandler.java447
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/EventListenerProxy.java232
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/GraphicalDisplay.java189
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/IAccessibleObjectDisplay.java46
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/Makefile113
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/MessageArea.java133
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/NameProvider.java290
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/RegistrationThread.java156
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/SSR.java171
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/TextualDisplay.java230
-rw-r--r--odk/examples/DevelopersGuide/Accessibility/makefile.mk73
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/CreatingDialogs/CreatingDialogs.odtbin0 -> 8654 bytes
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/CreatingDialogs/Makefile139
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/CreatingDialogs/SampleDialog.java275
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/FirstStepsBasic.odtbin0 -> 18560 bytes
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/Makefile126
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls.odtbin0 -> 7793 bytes
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/FileDialog.xba73
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/FileDialogDlg.xdl12
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/MultiPage.xba286
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/MultiPageDlg.xdl75
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/ProgressBar.xba76
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/ProgressBarDlg.xdl11
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/ScrollBar.xba86
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/ScrollBarDlg.xdl13
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/dialog.xlb8
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/ToolkitControls/ToolkitControls/script.xlb8
-rw-r--r--odk/examples/DevelopersGuide/BasicAndDialogs/makefile.mk84
-rw-r--r--odk/examples/DevelopersGuide/Charts/AddInChart.odsbin0 -> 18045 bytes
-rw-r--r--odk/examples/DevelopersGuide/Charts/CalcHelper.java412
-rw-r--r--odk/examples/DevelopersGuide/Charts/ChartHelper.java261
-rw-r--r--odk/examples/DevelopersGuide/Charts/ChartInCalc.java424
-rw-r--r--odk/examples/DevelopersGuide/Charts/ChartInDraw.java308
-rw-r--r--odk/examples/DevelopersGuide/Charts/ChartInWriter.java178
-rw-r--r--odk/examples/DevelopersGuide/Charts/Helper.java170
-rw-r--r--odk/examples/DevelopersGuide/Charts/JavaSampleChartAddIn.java476
-rw-r--r--odk/examples/DevelopersGuide/Charts/ListenAtCalcRangeInDraw.java211
-rw-r--r--odk/examples/DevelopersGuide/Charts/Makefile198
-rw-r--r--odk/examples/DevelopersGuide/Charts/SelectionChangeListener.java219
-rw-r--r--odk/examples/DevelopersGuide/Charts/bullet.gifbin0 -> 335 bytes
-rw-r--r--odk/examples/DevelopersGuide/Charts/makefile.mk75
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/JobsAddon/Addons.xcu81
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/JobsAddon/AsyncJob.java426
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/JobsAddon/Jobs.xcu27
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/JobsAddon/Makefile136
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/Addons.xcu220
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/Makefile148
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/ProtocolHandler.xcu11
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/addon.cxx253
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/addon.hxx128
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/component.cxx134
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_java/Addons.xcu220
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_java/Makefile138
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_java/ProtocolHandler.xcu10
-rw-r--r--odk/examples/DevelopersGuide/Components/Addons/ProtocolHandlerAddon_java/ProtocolHandlerAddon.java283
-rw-r--r--odk/examples/DevelopersGuide/Components/CppComponent/Makefile220
-rw-r--r--odk/examples/DevelopersGuide/Components/CppComponent/SimpleComponent.odtbin0 -> 8841 bytes
-rw-r--r--odk/examples/DevelopersGuide/Components/CppComponent/TestCppComponent.cxx92
-rw-r--r--odk/examples/DevelopersGuide/Components/CppComponent/service1_impl.cxx311
-rw-r--r--odk/examples/DevelopersGuide/Components/CppComponent/service2_impl.cxx227
-rw-r--r--odk/examples/DevelopersGuide/Components/CppComponent/some.idl54
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/Makefile204
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/SomethingA.idl46
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/SomethingB.idl46
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/TestComponentA.java71
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/TestComponentB.java100
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/TestJavaComponent.java143
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/TestServiceProvider.java71
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/XSomethingA.idl48
-rw-r--r--odk/examples/DevelopersGuide/Components/JavaComponent/XSomethingB.idl48
-rw-r--r--odk/examples/DevelopersGuide/Components/SimpleLicense/LicenseTest.idl50
-rw-r--r--odk/examples/DevelopersGuide/Components/SimpleLicense/LicenseTest.java171
-rw-r--r--odk/examples/DevelopersGuide/Components/SimpleLicense/Makefile170
-rw-r--r--odk/examples/DevelopersGuide/Components/SimpleLicense/description.xml12
-rw-r--r--odk/examples/DevelopersGuide/Components/SimpleLicense/registration/license_de.txt1
-rw-r--r--odk/examples/DevelopersGuide/Components/SimpleLicense/registration/license_en_US.txt1
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/Makefile81
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/org/openoffice/comp/test/ImageShrink.java158
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/org/openoffice/comp/test/Makefile128
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/org/openoffice/comp/test/Thumbs.java79
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/org/openoffice/test/ImageShrink.idl46
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/org/openoffice/test/Makefile73
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/org/openoffice/test/XImageShrink.idl53
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/org/openoffice/test/XImageShrinkFilter.idl50
-rw-r--r--odk/examples/DevelopersGuide/Components/Thumbs/thumbs.mk27
-rw-r--r--odk/examples/DevelopersGuide/Components/dialogcomponent/DialogComponent.java324
-rw-r--r--odk/examples/DevelopersGuide/Components/dialogcomponent/DialogComponent.odtbin0 -> 11902 bytes
-rw-r--r--odk/examples/DevelopersGuide/Components/dialogcomponent/Makefile177
-rw-r--r--odk/examples/DevelopersGuide/Components/dialogcomponent/TestDialogHandler.idl47
-rw-r--r--odk/examples/DevelopersGuide/Components/dialogcomponent/XTestDialogHandler.idl53
-rw-r--r--odk/examples/DevelopersGuide/Components/makefile.mk123
-rw-r--r--odk/examples/DevelopersGuide/Config/ConfigExamples.java1202
-rw-r--r--odk/examples/DevelopersGuide/Config/Makefile99
-rw-r--r--odk/examples/DevelopersGuide/Config/makefile.mk64
-rw-r--r--odk/examples/DevelopersGuide/Database/CodeSamples.java356
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/How_to_write_my_own_driver.txt25
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/Makefile150
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/OSubComponent.hxx254
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/OTypeInfo.hxx100
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SConnection.cxx404
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SConnection.hxx157
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SDatabaseMetaData.cxx889
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SDatabaseMetaData.hxx221
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SDriver.cxx212
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SDriver.hxx88
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SPreparedStatement.cxx390
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SPreparedStatement.hxx149
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SResultSet.cxx875
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SResultSet.hxx221
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SResultSetMetaData.cxx171
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SResultSetMetaData.hxx93
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SServices.cxx182
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SStatement.cxx370
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/SStatement.hxx178
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/propertyids.cxx185
-rw-r--r--odk/examples/DevelopersGuide/Database/DriverSkeleton/propertyids.hxx163
-rw-r--r--odk/examples/DevelopersGuide/Database/Makefile134
-rw-r--r--odk/examples/DevelopersGuide/Database/OpenQuery.java162
-rw-r--r--odk/examples/DevelopersGuide/Database/RowSet.java241
-rw-r--r--odk/examples/DevelopersGuide/Database/RowSetEventListener.java77
-rw-r--r--odk/examples/DevelopersGuide/Database/Sales.java250
-rw-r--r--odk/examples/DevelopersGuide/Database/SalesMan.java145
-rw-r--r--odk/examples/DevelopersGuide/Database/makefile.mk95
-rw-r--r--odk/examples/DevelopersGuide/Database/sdbcx.java420
-rw-r--r--odk/examples/DevelopersGuide/Drawing/ChangeOrderDemo.java115
-rw-r--r--odk/examples/DevelopersGuide/Drawing/ControlAndSelectDemo.java143
-rw-r--r--odk/examples/DevelopersGuide/Drawing/CustomShowDemo.java173
-rw-r--r--odk/examples/DevelopersGuide/Drawing/DrawViewDemo.java141
-rw-r--r--odk/examples/DevelopersGuide/Drawing/DrawingDemo.java426
-rw-r--r--odk/examples/DevelopersGuide/Drawing/FillAndLineStyleDemo.java133
-rw-r--r--odk/examples/DevelopersGuide/Drawing/GluePointDemo.java188
-rw-r--r--odk/examples/DevelopersGuide/Drawing/GraphicExportDemo.java152
-rw-r--r--odk/examples/DevelopersGuide/Drawing/Helper.java83
-rw-r--r--odk/examples/DevelopersGuide/Drawing/LayerDemo.java156
-rw-r--r--odk/examples/DevelopersGuide/Drawing/Makefile175
-rw-r--r--odk/examples/DevelopersGuide/Drawing/ObjectTransformationDemo.java133
-rw-r--r--odk/examples/DevelopersGuide/Drawing/Organigram.java191
-rw-r--r--odk/examples/DevelopersGuide/Drawing/PageHelper.java223
-rw-r--r--odk/examples/DevelopersGuide/Drawing/PresentationDemo.java239
-rw-r--r--odk/examples/DevelopersGuide/Drawing/ShapeHelper.java145
-rw-r--r--odk/examples/DevelopersGuide/Drawing/SimplePresentation.odpbin0 -> 74753 bytes
-rw-r--r--odk/examples/DevelopersGuide/Drawing/StyleDemo.java174
-rw-r--r--odk/examples/DevelopersGuide/Drawing/TextDemo.java155
-rw-r--r--odk/examples/DevelopersGuide/Drawing/makefile.mk81
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/Addons.xcu58
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/DialogWithHelp/Dialog1.xdl10
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/DialogWithHelp/Module1.xba16
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/DialogWithHelp/dialog.xlb5
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/DialogWithHelp/script.xlb5
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/META-INF/manifest.xml6
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/Makefile118
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/description.xml8
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/help/de/com.foocorp.foo-ext/page1.xhp73
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/help/de/com.foocorp.foo-ext/page2.xhp27
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/help/de/com.foocorp.foo-ext/subfolder/anotherpage.xhp100
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/help/en/com.foocorp.foo-ext/page1.xhp73
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/help/en/com.foocorp.foo-ext/page2.xhp26
-rw-r--r--odk/examples/DevelopersGuide/Extensions/DialogWithHelp/help/en/com.foocorp.foo-ext/subfolder/anotherpage.xhp100
-rw-r--r--odk/examples/DevelopersGuide/FirstSteps/FirstConnection.java58
-rw-r--r--odk/examples/DevelopersGuide/FirstSteps/FirstLoadComponent.java329
-rw-r--r--odk/examples/DevelopersGuide/FirstSteps/FirstUnoContact.java58
-rw-r--r--odk/examples/DevelopersGuide/FirstSteps/HelloTextTableShape.java462
-rw-r--r--odk/examples/DevelopersGuide/FirstSteps/Makefile101
-rw-r--r--odk/examples/DevelopersGuide/FirstSteps/build_FirstUnoContact.xml64
-rw-r--r--odk/examples/DevelopersGuide/FirstSteps/makefile.mk67
-rw-r--r--odk/examples/DevelopersGuide/Forms/BooleanValidator.java85
-rw-r--r--odk/examples/DevelopersGuide/Forms/ButtonOperator.java223
-rw-r--r--odk/examples/DevelopersGuide/Forms/ComponentTreeTraversal.java91
-rw-r--r--odk/examples/DevelopersGuide/Forms/ControlLock.java219
-rw-r--r--odk/examples/DevelopersGuide/Forms/ControlValidation.java100
-rw-r--r--odk/examples/DevelopersGuide/Forms/ControlValidator.java60
-rw-r--r--odk/examples/DevelopersGuide/Forms/DataAwareness.java932
-rw-r--r--odk/examples/DevelopersGuide/Forms/DateValidator.java102
-rw-r--r--odk/examples/DevelopersGuide/Forms/DocumentBasedExample.java228
-rw-r--r--odk/examples/DevelopersGuide/Forms/DocumentHelper.java320
-rw-r--r--odk/examples/DevelopersGuide/Forms/DocumentType.java59
-rw-r--r--odk/examples/DevelopersGuide/Forms/DocumentViewHelper.java230
-rw-r--r--odk/examples/DevelopersGuide/Forms/FLTools.java270
-rw-r--r--odk/examples/DevelopersGuide/Forms/FormLayer.java294
-rw-r--r--odk/examples/DevelopersGuide/Forms/GridFieldValidator.java176
-rw-r--r--odk/examples/DevelopersGuide/Forms/HsqlDatabase.java256
-rw-r--r--odk/examples/DevelopersGuide/Forms/InteractionRequest.java76
-rw-r--r--odk/examples/DevelopersGuide/Forms/KeyGenerator.java432
-rw-r--r--odk/examples/DevelopersGuide/Forms/ListSelectionValidator.java69
-rw-r--r--odk/examples/DevelopersGuide/Forms/Makefile197
-rw-r--r--odk/examples/DevelopersGuide/Forms/NumericValidator.java89
-rw-r--r--odk/examples/DevelopersGuide/Forms/ProgrammaticScriptAssignment.odtbin0 -> 19198 bytes
-rw-r--r--odk/examples/DevelopersGuide/Forms/RowSet.java290
-rw-r--r--odk/examples/DevelopersGuide/Forms/SalesFilter.java512
-rw-r--r--odk/examples/DevelopersGuide/Forms/SingleControlValidation.java187
-rw-r--r--odk/examples/DevelopersGuide/Forms/SpreadsheetDocument.java131
-rw-r--r--odk/examples/DevelopersGuide/Forms/SpreadsheetValueBinding.java136
-rw-r--r--odk/examples/DevelopersGuide/Forms/SpreadsheetView.java76
-rw-r--r--odk/examples/DevelopersGuide/Forms/TableCellTextBinding.java210
-rw-r--r--odk/examples/DevelopersGuide/Forms/TextValidator.java89
-rw-r--r--odk/examples/DevelopersGuide/Forms/TimeValidator.java94
-rw-r--r--odk/examples/DevelopersGuide/Forms/UNO.java90
-rw-r--r--odk/examples/DevelopersGuide/Forms/URLHelper.java72
-rw-r--r--odk/examples/DevelopersGuide/Forms/ValueBinding.java88
-rw-r--r--odk/examples/DevelopersGuide/Forms/WaitForInput.java64
-rw-r--r--odk/examples/DevelopersGuide/Forms/makefile.mk97
-rw-r--r--odk/examples/DevelopersGuide/GUI/DialogDocument.java145
-rw-r--r--odk/examples/DevelopersGuide/GUI/ImageControlSample.java163
-rw-r--r--odk/examples/DevelopersGuide/GUI/Makefile142
-rw-r--r--odk/examples/DevelopersGuide/GUI/MessageBox.java245
-rw-r--r--odk/examples/DevelopersGuide/GUI/RoadmapItemStateChangeListener.java68
-rw-r--r--odk/examples/DevelopersGuide/GUI/SystemDialog.java186
-rw-r--r--odk/examples/DevelopersGuide/GUI/UnoDialogSample.java1482
-rw-r--r--odk/examples/DevelopersGuide/GUI/UnoDialogSample2.java264
-rw-r--r--odk/examples/DevelopersGuide/GUI/UnoMenu.java167
-rw-r--r--odk/examples/DevelopersGuide/GUI/UnoMenu2.java95
-rw-r--r--odk/examples/DevelopersGuide/GUI/oologo.gifbin0 -> 2563 bytes
-rw-r--r--odk/examples/DevelopersGuide/OfficeBean/Makefile89
-rw-r--r--odk/examples/DevelopersGuide/OfficeBean/OOoBeanViewer.java407
-rw-r--r--odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor16.jpgbin0 -> 321 bytes
-rw-r--r--odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor32.jpgbin0 -> 569 bytes
-rw-r--r--odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono16.jpgbin0 -> 321 bytes
-rw-r--r--odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono32.jpgbin0 -> 569 bytes
-rw-r--r--odk/examples/DevelopersGuide/OfficeBean/makefile.mk68
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Clipboard/Clipboard.java229
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Clipboard/ClipboardListener.java55
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Clipboard/ClipboardOwner.java60
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Clipboard/Makefile99
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Clipboard/TextTransferable.java85
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/ContextMenuInterceptor.java256
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/CustomizeView.java298
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/Desk.java96
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/DocumentView.java430
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/FunctionHelper.java1060
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/IOnewayLink.java70
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/IShutdownListener.java47
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/Install.txt10
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/Interceptor.java672
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/JavaWindowPeerFake.java107
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/Makefile128
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/NativeView.java182
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/OfficeConnect.java205
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/OnewayExecutor.java240
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/StatusListener.java478
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/StatusView.java266
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/ViewContainer.java269
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/unix/Makefile73
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/unix/nativeview.c114
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/unix/nativeview.h66
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/windows/Makefile78
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/windows/nativeview.c181
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/windows/nativeview.def3
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/windows/nativeview.h66
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DisableCommands/DisableCommandsTest.java411
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/DisableCommands/Makefile92
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/AsciiFilter/AsciiReplaceFilter.java733
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/AsciiFilter/FilterOptions.java230
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/AsciiFilter/Makefile138
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/AsciiFilter/TypeDetection.xcu29
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/FlatXmlTypeDetection.xcu71
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/Makefile150
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/fdcomp.cxx112
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/filterdetect.cxx257
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/filterdetect.hxx118
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_cpp/FlatXml.cxx376
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_cpp/FlatXmlFilter_cpp.uno.xml59
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_cpp/FlatXmlFilter_cpp.xcu86
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_cpp/Makefile148
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_java/FlatXml.java273
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_java/FlatXmlFilter_java.xcu86
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_java/Makefile141
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/LinguisticExamples.java368
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/Makefile237
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/OneInstanceFactory.java155
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/PropChgHelper.java194
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/PropChgHelper_Hyph.java86
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/PropChgHelper_Spell.java110
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/SampleHyphenator.java548
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/SampleSpellChecker.java491
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/SampleThesaurus.java328
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/XHyphenatedWord_impl.java97
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/XMeaning_impl.java69
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/XPossibleHyphens_impl.java89
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Linguistic/XSpellAlternatives_impl.java92
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Makefile106
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/MenuElement.java56
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/Number_Formats.java253
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/OfficeConnect.java184
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/PathSettings/Makefile92
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/PathSettings/PathSettingsTest.java168
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/PathSubstitution/Makefile92
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/PathSubstitution/PathSubstitutionTest.java119
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/TerminationTest/Makefile97
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/TerminationTest/TerminateListener.java60
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/TerminationTest/TerminationTest.java101
-rw-r--r--odk/examples/DevelopersGuide/OfficeDev/makefile.mk180
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/CppBinding/Makefile140
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/CppBinding/office_connect.cxx107
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/CppBinding/office_connect.ini2
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/CppBinding/office_connectrc2
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/CppBinding/string_samples.cxx87
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/InterprocessConn/ConnectionAwareClient.java260
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/InterprocessConn/Makefile86
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/InterprocessConn/UrlResolver.java111
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/Lifetime/Makefile113
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/Lifetime/MyUnoObject.java60
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/Lifetime/object_lifetime.cxx71
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/SimpleBootstrap_cpp/Makefile101
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/SimpleBootstrap_cpp/SimpleBootstrap_cpp.cxx105
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/SimpleBootstrap_java/Makefile91
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/SimpleBootstrap_java/SimpleBootstrap_java.java76
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/SimpleBootstrap_java/manifest.mf4
-rw-r--r--odk/examples/DevelopersGuide/ProfUNO/makefile.mk95
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/SayHello/META-INF/manifest.xml5
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/SayHello/Makefile129
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/SayHello/SayHello.odtbin0 -> 8874 bytes
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/SayHello/SayHello/SayHello.java46
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/SayHello/SayHello/parcel-descriptor.xml17
-rwxr-xr-xodk/examples/DevelopersGuide/ScriptingFramework/SayHello/build.xml81
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/META-INF/manifest.xml5
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/Makefile131
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/ScriptSelector.odtbin0 -> 8921 bytes
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/ScriptSelector/ScriptSelector.java397
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/ScriptSelector/container.gifbin0 -> 164 bytes
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/ScriptSelector/parcel-descriptor.xml17
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/ScriptSelector/script.gifbin0 -> 187 bytes
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/ScriptSelector/soffice.gifbin0 -> 136 bytes
-rwxr-xr-xodk/examples/DevelopersGuide/ScriptingFramework/ScriptSelector/build.xml81
-rw-r--r--odk/examples/DevelopersGuide/ScriptingFramework/makefile.mk79
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/DataPilotReadme.txt30
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/ExampleAddIn.java314
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/ExampleAddIn.odsbin0 -> 8961 bytes
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/ExampleDataPilotSource.java981
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/GeneralTableSample.java241
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/Makefile306
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/SpreadsheetDocHelper.java405
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/SpreadsheetSample.java1417
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/ViewSample.java170
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/XExampleAddIn.idl60
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/makefile.mk72
-rw-r--r--odk/examples/DevelopersGuide/Text/Makefile96
-rw-r--r--odk/examples/DevelopersGuide/Text/PrintDemo.odtbin0 -> 6909 bytes
-rw-r--r--odk/examples/DevelopersGuide/Text/TextDocuments.java1792
-rw-r--r--odk/examples/DevelopersGuide/Text/TextTemplateWithUserFields.odtbin0 -> 6641 bytes
-rw-r--r--odk/examples/DevelopersGuide/Text/makefile.mk67
-rw-r--r--odk/examples/DevelopersGuide/UCB/ChildrenRetriever.java348
-rw-r--r--odk/examples/DevelopersGuide/UCB/DataStreamComposer.java258
-rw-r--r--odk/examples/DevelopersGuide/UCB/DataStreamRetriever.java233
-rw-r--r--odk/examples/DevelopersGuide/UCB/Helper.java250
-rw-r--r--odk/examples/DevelopersGuide/UCB/Makefile156
-rw-r--r--odk/examples/DevelopersGuide/UCB/MyActiveDataSink.java73
-rw-r--r--odk/examples/DevelopersGuide/UCB/MyInputStream.java190
-rw-r--r--odk/examples/DevelopersGuide/UCB/PropertiesComposer.java299
-rw-r--r--odk/examples/DevelopersGuide/UCB/PropertiesRetriever.java254
-rw-r--r--odk/examples/DevelopersGuide/UCB/ResourceCreator.java313
-rw-r--r--odk/examples/DevelopersGuide/UCB/ResourceManager.java289
-rw-r--r--odk/examples/DevelopersGuide/UCB/ResourceRemover.java180
-rw-r--r--odk/examples/DevelopersGuide/UCB/data/data.txt1
-rw-r--r--odk/examples/DevelopersGuide/UCB/makefile.mk75
-rw-r--r--odk/examples/DevelopersGuide/examples.html3032
-rw-r--r--odk/examples/OLE/activex/Makefile122
-rw-r--r--odk/examples/OLE/activex/README.txt39
-rw-r--r--odk/examples/OLE/activex/SOActiveX.cpp647
-rw-r--r--odk/examples/OLE/activex/SOActiveX.h168
-rw-r--r--odk/examples/OLE/activex/SOActiveX.rgs33
-rw-r--r--odk/examples/OLE/activex/SOComWindowPeer.cpp60
-rw-r--r--odk/examples/OLE/activex/SOComWindowPeer.h165
-rw-r--r--odk/examples/OLE/activex/SOComWindowPeer.rgs23
-rw-r--r--odk/examples/OLE/activex/StdAfx2.cpp49
-rw-r--r--odk/examples/OLE/activex/StdAfx2.h68
-rw-r--r--odk/examples/OLE/activex/example.html26
-rw-r--r--odk/examples/OLE/activex/resource.h57
-rw-r--r--odk/examples/OLE/activex/so_activex.cpp110
-rw-r--r--odk/examples/OLE/activex/so_activex.def5
-rw-r--r--odk/examples/OLE/activex/so_activex.idl138
-rw-r--r--odk/examples/OLE/activex/so_activex.rc136
-rw-r--r--odk/examples/OLE/delphi/InsertTables/Project1.dpr14
-rw-r--r--odk/examples/OLE/delphi/InsertTables/Project1.res0
-rw-r--r--odk/examples/OLE/delphi/InsertTables/SampleCode.pas393
-rw-r--r--odk/examples/OLE/delphi/InsertTables/SampleUI.dfm4
-rw-r--r--odk/examples/OLE/delphi/InsertTables/SampleUI.pas168
-rw-r--r--odk/examples/OLE/delphi/StarOffice_Delphi.sxwbin0 -> 34970 bytes
-rw-r--r--odk/examples/OLE/delphi/StarOffice_and_Delphi.pdfbin0 -> 60963 bytes
-rw-r--r--odk/examples/OLE/makefile.mk93
-rw-r--r--odk/examples/OLE/vbscript/WriterDemo.vbs172
-rw-r--r--odk/examples/OLE/vbscript/readme.txt4
-rw-r--r--odk/examples/basic/drawing/dirtree.txt20
-rw-r--r--odk/examples/basic/drawing/importexportofasciifiles.odgbin0 -> 11125 bytes
-rw-r--r--odk/examples/basic/forms_and_controls/beef.wmfbin0 -> 9856 bytes
-rw-r--r--odk/examples/basic/forms_and_controls/burger.wmfbin0 -> 84308 bytes
-rw-r--r--odk/examples/basic/forms_and_controls/burger_factory.odtbin0 -> 18934 bytes
-rw-r--r--odk/examples/basic/forms_and_controls/chicken.wmfbin0 -> 14272 bytes
-rw-r--r--odk/examples/basic/forms_and_controls/fish.wmfbin0 -> 13716 bytes
-rw-r--r--odk/examples/basic/forms_and_controls/vegetable.wmfbin0 -> 17862 bytes
-rw-r--r--odk/examples/basic/makefile.mk91
-rw-r--r--odk/examples/basic/sheet/adapting_to_euroland.odsbin0 -> 9964 bytes
-rw-r--r--odk/examples/basic/stock_quotes_updater/stock.odsbin0 -> 21540 bytes
-rw-r--r--odk/examples/basic/text/creating_an_index/index.odtbin0 -> 13160 bytes
-rw-r--r--odk/examples/basic/text/creating_an_index/indexlist.txt9
-rw-r--r--odk/examples/basic/text/modifying_text_automatically/changing_appearance.odtbin0 -> 9883 bytes
-rw-r--r--odk/examples/basic/text/modifying_text_automatically/inserting_bookmarks.odtbin0 -> 10207 bytes
-rw-r--r--odk/examples/basic/text/modifying_text_automatically/replacing_text.odtbin0 -> 10021 bytes
-rw-r--r--odk/examples/basic/text/modifying_text_automatically/using_regular_expressions.odtbin0 -> 10072 bytes
-rw-r--r--odk/examples/cpp/DocumentLoader/DocumentLoader.cxx170
-rw-r--r--odk/examples/cpp/DocumentLoader/Makefile127
-rw-r--r--odk/examples/cpp/DocumentLoader/test.odtbin0 -> 6737 bytes
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/Addons.xcu170
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/CalcListener.cxx41
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/CalcWindowState.xcu21
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/Jobs.xcu23
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/ListenerHelper.cxx147
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/ListenerHelper.h85
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/Makefile166
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/MyJob.cxx110
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/MyJob.h152
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/MyListener.cxx170
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/MyListener.h99
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/MyProtocolHandler.cxx542
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/MyProtocolHandler.h144
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/ProtocolHandler.xcu10
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/WriterListener.cxx49
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/WriterWindowState.xcu21
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/exports.cxx123
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/logo_big.pngbin0 -> 616 bytes
-rw-r--r--odk/examples/cpp/complextoolbarcontrols/logo_small.pngbin0 -> 585 bytes
-rw-r--r--odk/examples/cpp/counter/Makefile161
-rw-r--r--odk/examples/cpp/counter/XCountable.idl55
-rw-r--r--odk/examples/cpp/counter/counter.cxx241
-rw-r--r--odk/examples/cpp/counter/countermain.cxx125
-rw-r--r--odk/examples/cpp/makefile.mk80
-rw-r--r--odk/examples/cpp/remoteclient/Makefile160
-rw-r--r--odk/examples/cpp/remoteclient/remoteclient.cxx286
-rw-r--r--odk/examples/examples.html750
-rw-r--r--odk/examples/java/ConverterServlet/ConverterServlet.html46
-rw-r--r--odk/examples/java/ConverterServlet/ConverterServlet.java336
-rw-r--r--odk/examples/java/ConverterServlet/Makefile94
-rw-r--r--odk/examples/java/ConverterServlet/README38
-rw-r--r--odk/examples/java/ConverterServlet/web.xml23
-rw-r--r--odk/examples/java/DocumentHandling/DocumentConverter.java225
-rw-r--r--odk/examples/java/DocumentHandling/DocumentLoader.java92
-rw-r--r--odk/examples/java/DocumentHandling/DocumentPrinter.java109
-rw-r--r--odk/examples/java/DocumentHandling/DocumentSaver.java131
-rw-r--r--odk/examples/java/DocumentHandling/Makefile145
-rw-r--r--odk/examples/java/DocumentHandling/test/test1.odtbin0 -> 7999 bytes
-rw-r--r--odk/examples/java/Drawing/Makefile92
-rw-r--r--odk/examples/java/Drawing/SDraw.java272
-rw-r--r--odk/examples/java/EmbedDocument/Container1/EmbedContApp.java1024
-rw-r--r--odk/examples/java/EmbedDocument/Container1/EmbedContFrame.java108
-rw-r--r--odk/examples/java/EmbedDocument/Container1/Makefile48
-rwxr-xr-xodk/examples/java/EmbedDocument/EmbeddedObject/EditorFrame.java121
-rw-r--r--odk/examples/java/EmbedDocument/EmbeddedObject/EmbeddedObject.odtbin0 -> 9975 bytes
-rwxr-xr-xodk/examples/java/EmbedDocument/EmbeddedObject/EmbeddedObject.xcu28
-rw-r--r--odk/examples/java/EmbedDocument/EmbeddedObject/Makefile147
-rwxr-xr-xodk/examples/java/EmbedDocument/EmbeddedObject/OwnEmbeddedObject.java1124
-rwxr-xr-xodk/examples/java/EmbedDocument/EmbeddedObject/OwnEmbeddedObjectFactory.java101
-rwxr-xr-xodk/examples/java/Inspector/Addon.xcu28
-rwxr-xr-xodk/examples/java/Inspector/Addons.xcu23
-rw-r--r--odk/examples/java/Inspector/HideableMutableTreeNode.java88
-rw-r--r--odk/examples/java/Inspector/HideableTreeModel.java298
-rw-r--r--odk/examples/java/Inspector/Inspector.java461
-rw-r--r--odk/examples/java/Inspector/InspectorAddon.java228
-rw-r--r--odk/examples/java/Inspector/InspectorPane.java629
-rw-r--r--odk/examples/java/Inspector/InstanceInspector.idl52
-rw-r--r--odk/examples/java/Inspector/InstanceInspectorTest.odtbin0 -> 12272 bytes
-rw-r--r--odk/examples/java/Inspector/Introspector.java667
-rw-r--r--odk/examples/java/Inspector/Makefile195
-rw-r--r--odk/examples/java/Inspector/MethodParametersDialog.java353
-rwxr-xr-xodk/examples/java/Inspector/ObjectInspector.xcs18
-rwxr-xr-xodk/examples/java/Inspector/ObjectInspector.xcu18
-rwxr-xr-xodk/examples/java/Inspector/ProtocolHandler.xcu11
-rw-r--r--odk/examples/java/Inspector/ProtocolHandlerAddon.java283
-rw-r--r--odk/examples/java/Inspector/SourceCodeGenerator.java1766
-rw-r--r--odk/examples/java/Inspector/SwingDialogProvider.java442
-rw-r--r--odk/examples/java/Inspector/SwingTreeControlProvider.java427
-rw-r--r--odk/examples/java/Inspector/SwingTreePathProvider.java40
-rw-r--r--odk/examples/java/Inspector/SwingUnoFacetteNode.java84
-rw-r--r--odk/examples/java/Inspector/SwingUnoMethodNode.java138
-rw-r--r--odk/examples/java/Inspector/SwingUnoNode.java156
-rw-r--r--odk/examples/java/Inspector/SwingUnoPropertyNode.java96
-rw-r--r--odk/examples/java/Inspector/TDocSupplier.java168
-rw-r--r--odk/examples/java/Inspector/TestInspector.java88
-rw-r--r--odk/examples/java/Inspector/UnoFacetteNode.java85
-rw-r--r--odk/examples/java/Inspector/UnoMethodNode.java228
-rw-r--r--odk/examples/java/Inspector/UnoNode.java437
-rw-r--r--odk/examples/java/Inspector/UnoPropertyNode.java225
-rw-r--r--odk/examples/java/Inspector/UnoTreeRenderer.java135
-rw-r--r--odk/examples/java/Inspector/XDialogProvider.java65
-rw-r--r--odk/examples/java/Inspector/XInstanceInspector.idl56
-rw-r--r--odk/examples/java/Inspector/XLanguageSourceCodeGenerator.java106
-rw-r--r--odk/examples/java/Inspector/XMethodParametersDialog.java37
-rw-r--r--odk/examples/java/Inspector/XTreeControlProvider.java93
-rw-r--r--odk/examples/java/Inspector/XTreePathProvider.java25
-rw-r--r--odk/examples/java/Inspector/XUnoFacetteNode.java63
-rw-r--r--odk/examples/java/Inspector/XUnoMethodNode.java68
-rw-r--r--odk/examples/java/Inspector/XUnoNode.java84
-rw-r--r--odk/examples/java/Inspector/XUnoPropertyNode.java51
-rwxr-xr-xodk/examples/java/Inspector/images/containers_16.pngbin0 -> 233 bytes
-rwxr-xr-xodk/examples/java/Inspector/images/content_16.pngbin0 -> 370 bytes
-rwxr-xr-xodk/examples/java/Inspector/images/interfaces_16.pngbin0 -> 433 bytes
-rwxr-xr-xodk/examples/java/Inspector/images/methods_16.pngbin0 -> 380 bytes
-rwxr-xr-xodk/examples/java/Inspector/images/properties_16.pngbin0 -> 242 bytes
-rwxr-xr-xodk/examples/java/Inspector/images/services_16.pngbin0 -> 258 bytes
-rwxr-xr-xodk/examples/java/Inspector/manifest.mf3
-rw-r--r--odk/examples/java/MinimalComponent/BuildMinimalComponent.xml64
-rw-r--r--odk/examples/java/MinimalComponent/Makefile203
-rw-r--r--odk/examples/java/MinimalComponent/MinimalComponent.idl52
-rw-r--r--odk/examples/java/MinimalComponent/MinimalComponent.java171
-rw-r--r--odk/examples/java/MinimalComponent/TestMinimalComponent.java69
-rw-r--r--odk/examples/java/NotesAccess/Makefile113
-rw-r--r--odk/examples/java/NotesAccess/NotesAccess.java288
-rw-r--r--odk/examples/java/NotesAccess/Stocks.nsfbin0 -> 262144 bytes
-rw-r--r--odk/examples/java/PropertySet/Makefile134
-rw-r--r--odk/examples/java/PropertySet/PropTest.java265
-rw-r--r--odk/examples/java/PropertySet/PropertySet.odtbin0 -> 8391 bytes
-rw-r--r--odk/examples/java/Spreadsheet/CalcAddins.java304
-rw-r--r--odk/examples/java/Spreadsheet/CalcAddins.odsbin0 -> 8653 bytes
-rw-r--r--odk/examples/java/Spreadsheet/ChartTypeChange.java355
-rw-r--r--odk/examples/java/Spreadsheet/EuroAdaption.java389
-rw-r--r--odk/examples/java/Spreadsheet/Makefile213
-rw-r--r--odk/examples/java/Spreadsheet/SCalc.java412
-rw-r--r--odk/examples/java/Spreadsheet/XCalcAddins.idl100
-rw-r--r--odk/examples/java/Storage/Makefile58
-rw-r--r--odk/examples/java/Storage/StorageFunctionality.java147
-rw-r--r--odk/examples/java/Storage/StorageTest.java7
-rw-r--r--odk/examples/java/Storage/Test01.java158
-rw-r--r--odk/examples/java/Storage/Test02.java152
-rw-r--r--odk/examples/java/Storage/Test03.java209
-rw-r--r--odk/examples/java/Storage/Test04.java273
-rw-r--r--odk/examples/java/Storage/Test05.java268
-rw-r--r--odk/examples/java/Storage/Test06.java278
-rw-r--r--odk/examples/java/Storage/Test07.java137
-rw-r--r--odk/examples/java/Storage/Test08.java213
-rw-r--r--odk/examples/java/Storage/Test09.java123
-rw-r--r--odk/examples/java/Storage/TestHelper.java864
-rw-r--r--odk/examples/java/Text/BookmarkInsertion.java284
-rw-r--r--odk/examples/java/Text/GraphicsInserter.java179
-rw-r--r--odk/examples/java/Text/HardFormatting.java286
-rw-r--r--odk/examples/java/Text/Makefile136
-rw-r--r--odk/examples/java/Text/SWriter.java397
-rw-r--r--odk/examples/java/Text/StyleCreation.java226
-rw-r--r--odk/examples/java/Text/StyleInitialization.java320
-rw-r--r--odk/examples/java/Text/TextDocumentStructure.java205
-rw-r--r--odk/examples/java/Text/TextReplace.java231
-rw-r--r--odk/examples/java/Text/WriterSelector.java162
-rw-r--r--odk/examples/java/Text/oo_smiley.gifbin0 -> 46109 bytes
-rw-r--r--odk/examples/java/ToDo/Makefile166
-rw-r--r--odk/examples/java/ToDo/ToDo.idl50
-rw-r--r--odk/examples/java/ToDo/ToDo.java965
-rw-r--r--odk/examples/java/ToDo/ToDo.odsbin0 -> 13276 bytes
-rw-r--r--odk/examples/java/ToDo/XToDo.idl50
-rw-r--r--odk/examples/java/makefile.mk155
-rw-r--r--odk/inc/makefile.mk47
-rw-r--r--odk/inc/pch/precompiled_odk.cxx31
-rw-r--r--odk/inc/pch/precompiled_odk.hxx34
-rw-r--r--odk/index.html203
-rw-r--r--odk/no_localization1
-rw-r--r--odk/pack/checkbin/makefile.mk51
-rw-r--r--odk/pack/checkidl/makefile.mk51
-rw-r--r--odk/pack/checkinc/makefile.mk53
-rw-r--r--odk/pack/checkinc2/makefile.mk54
-rwxr-xr-xodk/pack/copying/addsym-macosx.sh11
-rw-r--r--odk/pack/copying/dk.mk3
-rw-r--r--odk/pack/copying/idl_chapter_refs.txt7590
-rw-r--r--odk/pack/copying/makefile.mk262
-rw-r--r--odk/pack/gendocu/java/package-list135
-rw-r--r--odk/pack/gendocu/makefile.mk122
-rw-r--r--odk/pack/gendocu/uno/package-list53
-rw-r--r--odk/pack/unzip_udk/deltree.txt0
-rw-r--r--odk/pack/unzip_udk/makefile.mk46
-rw-r--r--odk/prj/build.lst15
-rw-r--r--odk/prj/d.lst5
-rwxr-xr-xodk/setsdkenv_unix67
-rw-r--r--odk/setsdkenv_unix.csh.in313
-rw-r--r--odk/setsdkenv_unix.sh.in343
-rwxr-xr-xodk/setsdkenv_windows.bat64
-rwxr-xr-xodk/setsdkenv_windows.template183
-rwxr-xr-xodk/setsdkname.bat3
-rw-r--r--odk/settings/component.uno.def4
-rw-r--r--odk/settings/settings.mk611
-rw-r--r--odk/settings/std.mk63
-rw-r--r--odk/settings/stdtarget.mk16
-rw-r--r--odk/source/com/sun/star/lib/loader/InstallationFinder.java584
-rw-r--r--odk/source/com/sun/star/lib/loader/Loader.java385
-rw-r--r--odk/source/com/sun/star/lib/loader/WinRegKey.java200
-rw-r--r--odk/source/com/sun/star/lib/loader/WinRegKeyException.java51
-rw-r--r--odk/source/com/sun/star/lib/loader/makefile.mk56
-rw-r--r--odk/source/unoapploader/unx/makefile.mk60
-rw-r--r--odk/source/unoapploader/unx/unoapploader.c312
-rw-r--r--odk/source/unoapploader/win/makefile.mk57
-rw-r--r--odk/source/unoapploader/win/unoapploader.c428
-rw-r--r--odk/source/unowinreg/win/makefile.mk114
-rw-r--r--odk/source/unowinreg/win/unowinreg.cxx188
-rw-r--r--odk/source/unowinreg/win/unowinreg.dxp9
-rw-r--r--odk/util/check.pl485
-rw-r--r--odk/util/checkdiff.pl62
-rw-r--r--odk/util/delzip1
-rw-r--r--odk/util/makefile.mk58
-rw-r--r--odk/util/makefile.pmk226
-rw-r--r--odk/util/odk_rules.pmk193
-rw-r--r--offapi/com/sun/star/accessibility/AccessBridge.idl54
-rw-r--r--offapi/com/sun/star/accessibility/Accessible.idl56
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleContext.idl67
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleEventId.idl387
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleEventObject.idl69
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleRelation.idl68
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleRelationType.idl121
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleRole.idl720
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleStateType.idl225
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleTableModelChange.idl90
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleTableModelChangeType.idl82
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleTextType.idl105
-rw-r--r--offapi/com/sun/star/accessibility/IllegalAccessibleComponentStateException.idl54
-rw-r--r--offapi/com/sun/star/accessibility/TextSegment.idl85
-rw-r--r--offapi/com/sun/star/accessibility/XAccessible.idl86
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleAction.idl123
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleComponent.idl236
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleContext.idl215
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleEditableText.idl240
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleEventBroadcaster.idl64
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleEventListener.idl59
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleExtendedComponent.idl109
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleHyperlink.idl142
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleHypertext.idl118
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleImage.idl86
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleKeyBinding.idl93
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleMultiLineText.idl148
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleRelationSet.idl113
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleSelection.idl164
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleStateSet.idl109
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleTable.idl387
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleText.idl519
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleTextAttributes.idl105
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleTextMarkup.idl140
-rw-r--r--offapi/com/sun/star/accessibility/XAccessibleValue.idl106
-rw-r--r--offapi/com/sun/star/accessibility/makefile.mk80
-rw-r--r--offapi/com/sun/star/animations/AnimationAdditiveMode.idl69
-rw-r--r--offapi/com/sun/star/animations/AnimationCalcMode.idl74
-rw-r--r--offapi/com/sun/star/animations/AnimationColorSpace.idl58
-rw-r--r--offapi/com/sun/star/animations/AnimationEndSync.idl81
-rw-r--r--offapi/com/sun/star/animations/AnimationFill.idl100
-rw-r--r--offapi/com/sun/star/animations/AnimationNodeType.idl87
-rw-r--r--offapi/com/sun/star/animations/AnimationRestart.idl75
-rw-r--r--offapi/com/sun/star/animations/AnimationTransformType.idl67
-rw-r--r--offapi/com/sun/star/animations/AnimationValueType.idl57
-rw-r--r--offapi/com/sun/star/animations/Event.idl69
-rw-r--r--offapi/com/sun/star/animations/EventTrigger.idl91
-rw-r--r--offapi/com/sun/star/animations/TargetProperties.idl59
-rw-r--r--offapi/com/sun/star/animations/TimeFilterPair.idl51
-rw-r--r--offapi/com/sun/star/animations/Timing.idl53
-rw-r--r--offapi/com/sun/star/animations/TransitionSubType.idl163
-rw-r--r--offapi/com/sun/star/animations/TransitionType.idl91
-rw-r--r--offapi/com/sun/star/animations/ValuePair.idl48
-rw-r--r--offapi/com/sun/star/animations/XAnimate.idl155
-rw-r--r--offapi/com/sun/star/animations/XAnimateColor.idl74
-rw-r--r--offapi/com/sun/star/animations/XAnimateMotion.idl65
-rw-r--r--offapi/com/sun/star/animations/XAnimateSet.idl66
-rw-r--r--offapi/com/sun/star/animations/XAnimateTransform.idl79
-rw-r--r--offapi/com/sun/star/animations/XAnimationListener.idl88
-rw-r--r--offapi/com/sun/star/animations/XAnimationNode.idl261
-rw-r--r--offapi/com/sun/star/animations/XAnimationNodeSupplier.idl51
-rw-r--r--offapi/com/sun/star/animations/XAudio.idl58
-rw-r--r--offapi/com/sun/star/animations/XCommand.idl66
-rw-r--r--offapi/com/sun/star/animations/XIterateContainer.idl79
-rw-r--r--offapi/com/sun/star/animations/XTargetPropertiesCreator.idl78
-rw-r--r--offapi/com/sun/star/animations/XTimeContainer.idl132
-rw-r--r--offapi/com/sun/star/animations/XTransitionFilter.idl99
-rw-r--r--offapi/com/sun/star/animations/makefile.mk76
-rw-r--r--offapi/com/sun/star/auth/AuthenticationFailedException.idl47
-rw-r--r--offapi/com/sun/star/auth/InvalidArgumentException.idl47
-rw-r--r--offapi/com/sun/star/auth/InvalidContextException.idl47
-rw-r--r--offapi/com/sun/star/auth/InvalidCredentialException.idl47
-rw-r--r--offapi/com/sun/star/auth/InvalidPrincipalException.idl48
-rw-r--r--offapi/com/sun/star/auth/PersistenceFailureException.idl48
-rw-r--r--offapi/com/sun/star/auth/SSOExceptions.idl53
-rw-r--r--offapi/com/sun/star/auth/SSOManagerFactory.idl75
-rw-r--r--offapi/com/sun/star/auth/SSOPasswordCache.idl53
-rw-r--r--offapi/com/sun/star/auth/UnsupportedException.idl48
-rw-r--r--offapi/com/sun/star/auth/XSSOAcceptorContext.idl75
-rw-r--r--offapi/com/sun/star/auth/XSSOContext.idl77
-rw-r--r--offapi/com/sun/star/auth/XSSOInitiatorContext.idl80
-rw-r--r--offapi/com/sun/star/auth/XSSOManager.idl113
-rw-r--r--offapi/com/sun/star/auth/XSSOManagerFactory.idl60
-rw-r--r--offapi/com/sun/star/auth/XSSOPasswordCache.idl105
-rw-r--r--offapi/com/sun/star/auth/makefile.mk28
-rw-r--r--offapi/com/sun/star/awt/AccessibleButton.idl136
-rw-r--r--offapi/com/sun/star/awt/AccessibleCheckBox.idl137
-rw-r--r--offapi/com/sun/star/awt/AccessibleComboBox.idl108
-rw-r--r--offapi/com/sun/star/awt/AccessibleDropDownComboBox.idl119
-rw-r--r--offapi/com/sun/star/awt/AccessibleDropDownListBox.idl119
-rw-r--r--offapi/com/sun/star/awt/AccessibleEdit.idl135
-rw-r--r--offapi/com/sun/star/awt/AccessibleFixedText.idl114
-rw-r--r--offapi/com/sun/star/awt/AccessibleIconChoiceControl.idl115
-rw-r--r--offapi/com/sun/star/awt/AccessibleIconChoiceControlEntry.idl107
-rw-r--r--offapi/com/sun/star/awt/AccessibleList.idl138
-rw-r--r--offapi/com/sun/star/awt/AccessibleListBox.idl107
-rw-r--r--offapi/com/sun/star/awt/AccessibleListBoxList.idl52
-rw-r--r--offapi/com/sun/star/awt/AccessibleListItem.idl104
-rw-r--r--offapi/com/sun/star/awt/AccessibleMenu.idl152
-rw-r--r--offapi/com/sun/star/awt/AccessibleMenuBar.idl115
-rw-r--r--offapi/com/sun/star/awt/AccessibleMenuItem.idl141
-rw-r--r--offapi/com/sun/star/awt/AccessibleMenuSeparator.idl107
-rw-r--r--offapi/com/sun/star/awt/AccessiblePopupMenu.idl115
-rw-r--r--offapi/com/sun/star/awt/AccessibleRadioButton.idl141
-rw-r--r--offapi/com/sun/star/awt/AccessibleScrollBar.idl129
-rw-r--r--offapi/com/sun/star/awt/AccessibleStatusBar.idl98
-rw-r--r--offapi/com/sun/star/awt/AccessibleStatusBarItem.idl107
-rw-r--r--offapi/com/sun/star/awt/AccessibleTabBar.idl109
-rw-r--r--offapi/com/sun/star/awt/AccessibleTabBarPage.idl105
-rw-r--r--offapi/com/sun/star/awt/AccessibleTabBarPageList.idl108
-rw-r--r--offapi/com/sun/star/awt/AccessibleTabControl.idl113
-rw-r--r--offapi/com/sun/star/awt/AccessibleTabPage.idl117
-rw-r--r--offapi/com/sun/star/awt/AccessibleTextField.idl116
-rw-r--r--offapi/com/sun/star/awt/AccessibleToolBox.idl116
-rw-r--r--offapi/com/sun/star/awt/AccessibleToolBoxItem.idl134
-rw-r--r--offapi/com/sun/star/awt/AccessibleTreeListBox.idl115
-rw-r--r--offapi/com/sun/star/awt/AccessibleTreeListBoxEntry.idl133
-rw-r--r--offapi/com/sun/star/awt/AccessibleWindow.idl125
-rw-r--r--offapi/com/sun/star/awt/ActionEvent.idl69
-rw-r--r--offapi/com/sun/star/awt/AdjustmentEvent.idl67
-rw-r--r--offapi/com/sun/star/awt/AdjustmentType.idl72
-rw-r--r--offapi/com/sun/star/awt/AsyncCallback.idl47
-rw-r--r--offapi/com/sun/star/awt/CharSet.idl123
-rw-r--r--offapi/com/sun/star/awt/Command.idl134
-rw-r--r--offapi/com/sun/star/awt/ContainerWindowProvider.idl56
-rw-r--r--offapi/com/sun/star/awt/DeviceCapability.idl65
-rw-r--r--offapi/com/sun/star/awt/DeviceInfo.idl110
-rw-r--r--offapi/com/sun/star/awt/DialogProvider.idl59
-rw-r--r--offapi/com/sun/star/awt/DialogProvider2.idl55
-rw-r--r--offapi/com/sun/star/awt/DockingData.idl63
-rw-r--r--offapi/com/sun/star/awt/DockingEvent.idl84
-rw-r--r--offapi/com/sun/star/awt/EndDockingEvent.idl72
-rw-r--r--offapi/com/sun/star/awt/EndPopupModeEvent.idl68
-rw-r--r--offapi/com/sun/star/awt/EnhancedMouseEvent.idl63
-rw-r--r--offapi/com/sun/star/awt/FieldUnit.idl63
-rw-r--r--offapi/com/sun/star/awt/FocusChangeReason.idl93
-rw-r--r--offapi/com/sun/star/awt/FocusEvent.idl90
-rw-r--r--offapi/com/sun/star/awt/FontDescriptor.idl190
-rw-r--r--offapi/com/sun/star/awt/FontEmphasisMark.idl94
-rw-r--r--offapi/com/sun/star/awt/FontFamily.idl91
-rw-r--r--offapi/com/sun/star/awt/FontPitch.idl68
-rw-r--r--offapi/com/sun/star/awt/FontRelief.idl68
-rw-r--r--offapi/com/sun/star/awt/FontSlant.idl83
-rw-r--r--offapi/com/sun/star/awt/FontStrikeout.idl91
-rw-r--r--offapi/com/sun/star/awt/FontType.idl73
-rw-r--r--offapi/com/sun/star/awt/FontUnderline.idl163
-rw-r--r--offapi/com/sun/star/awt/FontWeight.idl109
-rw-r--r--offapi/com/sun/star/awt/FontWidth.idl109
-rw-r--r--offapi/com/sun/star/awt/Gradient.idl115
-rw-r--r--offapi/com/sun/star/awt/GradientStyle.idl83
-rw-r--r--offapi/com/sun/star/awt/ImageAlign.idl71
-rw-r--r--offapi/com/sun/star/awt/ImagePosition.idl100
-rw-r--r--offapi/com/sun/star/awt/ImageScaleMode.idl62
-rw-r--r--offapi/com/sun/star/awt/ImageStatus.idl73
-rw-r--r--offapi/com/sun/star/awt/InputEvent.idl65
-rw-r--r--offapi/com/sun/star/awt/InvalidateStyle.idl89
-rw-r--r--offapi/com/sun/star/awt/ItemEvent.idl69
-rw-r--r--offapi/com/sun/star/awt/ItemListEvent.idl76
-rw-r--r--offapi/com/sun/star/awt/Key.idl598
-rw-r--r--offapi/com/sun/star/awt/KeyEvent.idl76
-rw-r--r--offapi/com/sun/star/awt/KeyFunction.idl123
-rw-r--r--offapi/com/sun/star/awt/KeyGroup.idl85
-rw-r--r--offapi/com/sun/star/awt/KeyModifier.idl68
-rw-r--r--offapi/com/sun/star/awt/KeyStroke.idl81
-rw-r--r--offapi/com/sun/star/awt/LineEndFormat.idl66
-rw-r--r--offapi/com/sun/star/awt/MaxChildrenException.idl29
-rw-r--r--offapi/com/sun/star/awt/MenuBar.idl56
-rw-r--r--offapi/com/sun/star/awt/MenuEvent.idl57
-rw-r--r--offapi/com/sun/star/awt/MenuItemStyle.idl68
-rw-r--r--offapi/com/sun/star/awt/MenuItemType.idl68
-rwxr-xr-xoffapi/com/sun/star/awt/MenuLogo.idl70
-rw-r--r--offapi/com/sun/star/awt/MessageBoxButtons.idl97
-rw-r--r--offapi/com/sun/star/awt/MessageBoxCommand.idl69
-rw-r--r--offapi/com/sun/star/awt/MouseButton.idl65
-rw-r--r--offapi/com/sun/star/awt/MouseEvent.idl101
-rwxr-xr-xoffapi/com/sun/star/awt/MouseWheelBehavior.idl62
-rw-r--r--offapi/com/sun/star/awt/PaintEvent.idl75
-rw-r--r--offapi/com/sun/star/awt/Point.idl57
-rw-r--r--offapi/com/sun/star/awt/PopupMenu.idl55
-rw-r--r--offapi/com/sun/star/awt/PopupMenuDirection.idl92
-rw-r--r--offapi/com/sun/star/awt/PosSize.idl89
-rw-r--r--offapi/com/sun/star/awt/PrinterException.idl54
-rw-r--r--offapi/com/sun/star/awt/PushButtonType.idl71
-rw-r--r--offapi/com/sun/star/awt/RasterOperation.idl79
-rw-r--r--offapi/com/sun/star/awt/Rectangle.idl69
-rw-r--r--offapi/com/sun/star/awt/RoadmapItem.idl78
-rw-r--r--offapi/com/sun/star/awt/ScrollBarOrientation.idl59
-rw-r--r--offapi/com/sun/star/awt/Selection.idl59
-rw-r--r--offapi/com/sun/star/awt/SimpleFontMetric.idl101
-rw-r--r--offapi/com/sun/star/awt/Size.idl59
-rw-r--r--offapi/com/sun/star/awt/SpinEvent.idl57
-rw-r--r--offapi/com/sun/star/awt/Style.idl60
-rw-r--r--offapi/com/sun/star/awt/SystemDependentXWindow.idl67
-rw-r--r--offapi/com/sun/star/awt/SystemPointer.idl492
-rw-r--r--offapi/com/sun/star/awt/TabController.idl53
-rw-r--r--offapi/com/sun/star/awt/TabControllerModel.idl59
-rw-r--r--offapi/com/sun/star/awt/TextAlign.idl65
-rw-r--r--offapi/com/sun/star/awt/TextEvent.idl57
-rw-r--r--offapi/com/sun/star/awt/Toolkit.idl76
-rw-r--r--offapi/com/sun/star/awt/UnoControl.idl94
-rw-r--r--offapi/com/sun/star/awt/UnoControlButton.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlButtonModel.idl282
-rw-r--r--offapi/com/sun/star/awt/UnoControlCheckBox.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlCheckBoxModel.idl240
-rw-r--r--offapi/com/sun/star/awt/UnoControlComboBox.idl59
-rw-r--r--offapi/com/sun/star/awt/UnoControlComboBoxModel.idl240
-rw-r--r--offapi/com/sun/star/awt/UnoControlContainer.idl71
-rw-r--r--offapi/com/sun/star/awt/UnoControlContainerModel.idl116
-rw-r--r--offapi/com/sun/star/awt/UnoControlCurrencyField.idl73
-rw-r--r--offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl279
-rw-r--r--offapi/com/sun/star/awt/UnoControlDateField.idl72
-rw-r--r--offapi/com/sun/star/awt/UnoControlDateFieldModel.idl291
-rw-r--r--offapi/com/sun/star/awt/UnoControlDialog.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlDialogElement.idl97
-rw-r--r--offapi/com/sun/star/awt/UnoControlDialogModel.idl197
-rw-r--r--offapi/com/sun/star/awt/UnoControlEdit.idl71
-rw-r--r--offapi/com/sun/star/awt/UnoControlEditModel.idl291
-rw-r--r--offapi/com/sun/star/awt/UnoControlFileControl.idl56
-rw-r--r--offapi/com/sun/star/awt/UnoControlFileControlModel.idl185
-rw-r--r--offapi/com/sun/star/awt/UnoControlFixedHyperlink.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlFixedHyperlinkModel.idl188
-rw-r--r--offapi/com/sun/star/awt/UnoControlFixedLine.idl54
-rw-r--r--offapi/com/sun/star/awt/UnoControlFixedLineModel.idl134
-rw-r--r--offapi/com/sun/star/awt/UnoControlFixedText.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlFixedTextModel.idl182
-rw-r--r--offapi/com/sun/star/awt/UnoControlFormattedField.idl64
-rw-r--r--offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl324
-rw-r--r--offapi/com/sun/star/awt/UnoControlGroupBox.idl53
-rw-r--r--offapi/com/sun/star/awt/UnoControlGroupBoxModel.idl132
-rw-r--r--offapi/com/sun/star/awt/UnoControlImageControl.idl59
-rw-r--r--offapi/com/sun/star/awt/UnoControlImageControlModel.idl161
-rw-r--r--offapi/com/sun/star/awt/UnoControlListBox.idl74
-rw-r--r--offapi/com/sun/star/awt/UnoControlListBoxModel.idl235
-rw-r--r--offapi/com/sun/star/awt/UnoControlModel.idl105
-rw-r--r--offapi/com/sun/star/awt/UnoControlNumericField.idl73
-rw-r--r--offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl267
-rw-r--r--offapi/com/sun/star/awt/UnoControlPatternField.idl73
-rw-r--r--offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl226
-rw-r--r--offapi/com/sun/star/awt/UnoControlProgressBar.idl60
-rw-r--r--offapi/com/sun/star/awt/UnoControlProgressBarModel.idl134
-rw-r--r--offapi/com/sun/star/awt/UnoControlRadioButton.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlRadioButtonModel.idl234
-rw-r--r--offapi/com/sun/star/awt/UnoControlRoadmap.idl85
-rw-r--r--offapi/com/sun/star/awt/UnoControlRoadmapModel.idl169
-rw-r--r--offapi/com/sun/star/awt/UnoControlScrollBar.idl60
-rw-r--r--offapi/com/sun/star/awt/UnoControlScrollBarModel.idl201
-rw-r--r--offapi/com/sun/star/awt/UnoControlSimpleAnimation.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlSimpleAnimationModel.idl78
-rw-r--r--offapi/com/sun/star/awt/UnoControlSpinButton.idl63
-rw-r--r--offapi/com/sun/star/awt/UnoControlSpinButtonModel.idl183
-rw-r--r--offapi/com/sun/star/awt/UnoControlThrobber.idl65
-rw-r--r--offapi/com/sun/star/awt/UnoControlThrobberModel.idl60
-rw-r--r--offapi/com/sun/star/awt/UnoControlTimeField.idl73
-rw-r--r--offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl271
-rw-r--r--offapi/com/sun/star/awt/VclContainerEvent.idl66
-rw-r--r--offapi/com/sun/star/awt/VclWindowPeerAttribute.idl156
-rw-r--r--offapi/com/sun/star/awt/VisualEffect.idl63
-rw-r--r--offapi/com/sun/star/awt/WindowAttribute.idl135
-rw-r--r--offapi/com/sun/star/awt/WindowClass.idl72
-rw-r--r--offapi/com/sun/star/awt/WindowDescriptor.idl179
-rw-r--r--offapi/com/sun/star/awt/WindowEvent.idl111
-rw-r--r--offapi/com/sun/star/awt/XActionListener.idl61
-rw-r--r--offapi/com/sun/star/awt/XActivateListener.idl78
-rw-r--r--offapi/com/sun/star/awt/XAdjustmentListener.idl61
-rw-r--r--offapi/com/sun/star/awt/XBitmap.idl73
-rw-r--r--offapi/com/sun/star/awt/XButton.idl79
-rw-r--r--offapi/com/sun/star/awt/XCallback.idl60
-rw-r--r--offapi/com/sun/star/awt/XCheckBox.idl92
-rw-r--r--offapi/com/sun/star/awt/XComboBox.idl132
-rw-r--r--offapi/com/sun/star/awt/XContainerWindowEventHandler.idl107
-rw-r--r--offapi/com/sun/star/awt/XContainerWindowProvider.idl130
-rw-r--r--offapi/com/sun/star/awt/XControl.idl146
-rw-r--r--offapi/com/sun/star/awt/XControlContainer.idl87
-rw-r--r--offapi/com/sun/star/awt/XControlModel.idl51
-rw-r--r--offapi/com/sun/star/awt/XCurrencyField.idl149
-rw-r--r--offapi/com/sun/star/awt/XDataTransferProviderAccess.idl111
-rw-r--r--offapi/com/sun/star/awt/XDateField.idl152
-rw-r--r--offapi/com/sun/star/awt/XDevice.idl127
-rw-r--r--offapi/com/sun/star/awt/XDialog.idl77
-rw-r--r--offapi/com/sun/star/awt/XDialog2.idl35
-rw-r--r--offapi/com/sun/star/awt/XDialogEventHandler.idl106
-rw-r--r--offapi/com/sun/star/awt/XDialogProvider.idl75
-rw-r--r--offapi/com/sun/star/awt/XDialogProvider2.idl138
-rw-r--r--offapi/com/sun/star/awt/XDisplayBitmap.idl54
-rw-r--r--offapi/com/sun/star/awt/XDisplayConnection.idl109
-rw-r--r--offapi/com/sun/star/awt/XDockableWindow.idl146
-rw-r--r--offapi/com/sun/star/awt/XDockableWindowListener.idl121
-rw-r--r--offapi/com/sun/star/awt/XEnhancedMouseClickHandler.idl70
-rw-r--r--offapi/com/sun/star/awt/XEventHandler.idl66
-rwxr-xr-xoffapi/com/sun/star/awt/XExtendedToolkit.idl230
-rw-r--r--offapi/com/sun/star/awt/XFileDialog.idl84
-rw-r--r--offapi/com/sun/star/awt/XFixedHyperlink.idl109
-rw-r--r--offapi/com/sun/star/awt/XFixedText.idl81
-rw-r--r--offapi/com/sun/star/awt/XFocusListener.idl74
-rw-r--r--offapi/com/sun/star/awt/XFont.idl126
-rw-r--r--offapi/com/sun/star/awt/XFont2.idl68
-rw-r--r--offapi/com/sun/star/awt/XGraphics.idl321
-rw-r--r--offapi/com/sun/star/awt/XImageButton.idl74
-rw-r--r--offapi/com/sun/star/awt/XImageConsumer.idl132
-rw-r--r--offapi/com/sun/star/awt/XImageProducer.idl91
-rw-r--r--offapi/com/sun/star/awt/XInfoPrinter.idl63
-rw-r--r--offapi/com/sun/star/awt/XItemEventBroadcaster.idl70
-rw-r--r--offapi/com/sun/star/awt/XItemList.idl286
-rw-r--r--offapi/com/sun/star/awt/XItemListListener.idl85
-rw-r--r--offapi/com/sun/star/awt/XItemListener.idl62
-rw-r--r--offapi/com/sun/star/awt/XKeyHandler.idl101
-rw-r--r--offapi/com/sun/star/awt/XKeyListener.idl67
-rw-r--r--offapi/com/sun/star/awt/XLayoutConstrains.idl73
-rw-r--r--offapi/com/sun/star/awt/XLayoutContainer.idl89
-rw-r--r--offapi/com/sun/star/awt/XLayoutFlow.idl32
-rw-r--r--offapi/com/sun/star/awt/XLayoutFlowContainer.idl27
-rw-r--r--offapi/com/sun/star/awt/XLayoutRoot.idl33
-rw-r--r--offapi/com/sun/star/awt/XLayoutUnit.idl31
-rw-r--r--offapi/com/sun/star/awt/XListBox.idl199
-rw-r--r--offapi/com/sun/star/awt/XMenu.idl142
-rw-r--r--offapi/com/sun/star/awt/XMenuBar.idl51
-rwxr-xr-xoffapi/com/sun/star/awt/XMenuBarExtended.idl69
-rw-r--r--offapi/com/sun/star/awt/XMenuExtended.idl80
-rwxr-xr-xoffapi/com/sun/star/awt/XMenuExtended2.idl112
-rw-r--r--offapi/com/sun/star/awt/XMenuListener.idl79
-rw-r--r--offapi/com/sun/star/awt/XMessageBox.idl83
-rw-r--r--offapi/com/sun/star/awt/XMessageBoxFactory.idl108
-rw-r--r--offapi/com/sun/star/awt/XMetricField.idl163
-rw-r--r--offapi/com/sun/star/awt/XMouseClickHandler.idl83
-rw-r--r--offapi/com/sun/star/awt/XMouseListener.idl88
-rw-r--r--offapi/com/sun/star/awt/XMouseMotionHandler.idl90
-rw-r--r--offapi/com/sun/star/awt/XMouseMotionListener.idl74
-rw-r--r--offapi/com/sun/star/awt/XNumericField.idl149
-rw-r--r--offapi/com/sun/star/awt/XPaintListener.idl62
-rw-r--r--offapi/com/sun/star/awt/XPatternField.idl89
-rw-r--r--offapi/com/sun/star/awt/XPointer.idl64
-rw-r--r--offapi/com/sun/star/awt/XPopupMenu.idl96
-rwxr-xr-xoffapi/com/sun/star/awt/XPopupMenuExtended.idl361
-rw-r--r--offapi/com/sun/star/awt/XPrinter.idl124
-rw-r--r--offapi/com/sun/star/awt/XPrinterPropertySet.idl109
-rw-r--r--offapi/com/sun/star/awt/XPrinterServer.idl84
-rw-r--r--offapi/com/sun/star/awt/XProgressBar.idl89
-rw-r--r--offapi/com/sun/star/awt/XProgressMonitor.idl71
-rw-r--r--offapi/com/sun/star/awt/XRadioButton.idl86
-rw-r--r--offapi/com/sun/star/awt/XRegion.idl130
-rw-r--r--offapi/com/sun/star/awt/XRequestCallback.idl64
-rw-r--r--offapi/com/sun/star/awt/XReschedule.idl60
-rw-r--r--offapi/com/sun/star/awt/XScrollBar.idl150
-rw-r--r--offapi/com/sun/star/awt/XSimpleAnimation.idl72
-rw-r--r--offapi/com/sun/star/awt/XSimpleTabController.idl172
-rw-r--r--offapi/com/sun/star/awt/XSpinField.idl98
-rw-r--r--offapi/com/sun/star/awt/XSpinListener.idl79
-rw-r--r--offapi/com/sun/star/awt/XSpinValue.idl148
-rw-r--r--offapi/com/sun/star/awt/XStyleChangeListener.idl54
-rw-r--r--offapi/com/sun/star/awt/XStyleSettings.idl239
-rw-r--r--offapi/com/sun/star/awt/XStyleSettingsSupplier.idl53
-rw-r--r--offapi/com/sun/star/awt/XSystemChildFactory.idl84
-rw-r--r--offapi/com/sun/star/awt/XSystemDependentMenuPeer.idl77
-rw-r--r--offapi/com/sun/star/awt/XSystemDependentWindowPeer.idl87
-rw-r--r--offapi/com/sun/star/awt/XTabController.idl119
-rw-r--r--offapi/com/sun/star/awt/XTabControllerModel.idl107
-rw-r--r--offapi/com/sun/star/awt/XTabListener.idl97
-rw-r--r--offapi/com/sun/star/awt/XTextArea.idl57
-rw-r--r--offapi/com/sun/star/awt/XTextComponent.idl133
-rw-r--r--offapi/com/sun/star/awt/XTextEditField.idl57
-rw-r--r--offapi/com/sun/star/awt/XTextLayoutConstrains.idl68
-rw-r--r--offapi/com/sun/star/awt/XTextListener.idl61
-rw-r--r--offapi/com/sun/star/awt/XThrobber.idl65
-rw-r--r--offapi/com/sun/star/awt/XTimeField.idl141
-rw-r--r--offapi/com/sun/star/awt/XToggleButton.idl57
-rw-r--r--offapi/com/sun/star/awt/XToolkit.idl118
-rw-r--r--offapi/com/sun/star/awt/XTopWindow.idl93
-rw-r--r--offapi/com/sun/star/awt/XTopWindow2.idl77
-rw-r--r--offapi/com/sun/star/awt/XTopWindowListener.idl101
-rw-r--r--offapi/com/sun/star/awt/XUnitConversion.idl118
-rw-r--r--offapi/com/sun/star/awt/XUnoControlContainer.idl79
-rw-r--r--offapi/com/sun/star/awt/XUserInputInterception.idl100
-rw-r--r--offapi/com/sun/star/awt/XVclContainer.idl81
-rw-r--r--offapi/com/sun/star/awt/XVclContainerListener.idl74
-rw-r--r--offapi/com/sun/star/awt/XVclContainerPeer.idl77
-rw-r--r--offapi/com/sun/star/awt/XVclWindowPeer.idl121
-rw-r--r--offapi/com/sun/star/awt/XView.idl101
-rw-r--r--offapi/com/sun/star/awt/XWindow.idl210
-rw-r--r--offapi/com/sun/star/awt/XWindow2.idl102
-rw-r--r--offapi/com/sun/star/awt/XWindowListener.idl88
-rw-r--r--offapi/com/sun/star/awt/XWindowListener2.idl61
-rw-r--r--offapi/com/sun/star/awt/XWindowPeer.idl93
-rw-r--r--offapi/com/sun/star/awt/grid/DefaultGridColumnModel.idl52
-rw-r--r--offapi/com/sun/star/awt/grid/DefaultGridDataModel.idl53
-rw-r--r--offapi/com/sun/star/awt/grid/GridColumn.idl53
-rw-r--r--offapi/com/sun/star/awt/grid/GridColumnEvent.idl63
-rw-r--r--offapi/com/sun/star/awt/grid/GridControlEvent.idl54
-rw-r--r--offapi/com/sun/star/awt/grid/GridDataEvent.idl78
-rw-r--r--offapi/com/sun/star/awt/grid/GridInvalidDataException.idl58
-rw-r--r--offapi/com/sun/star/awt/grid/GridInvalidModelException.idl57
-rw-r--r--offapi/com/sun/star/awt/grid/GridSelectionEvent.idl71
-rw-r--r--offapi/com/sun/star/awt/grid/ScrollBarMode.idl70
-rw-r--r--offapi/com/sun/star/awt/grid/SelectionEventType.idl66
-rw-r--r--offapi/com/sun/star/awt/grid/UnoControlGrid.idl82
-rw-r--r--offapi/com/sun/star/awt/grid/UnoControlGridModel.idl163
-rw-r--r--offapi/com/sun/star/awt/grid/XGridCell.idl56
-rw-r--r--offapi/com/sun/star/awt/grid/XGridCellRenderer.idl52
-rw-r--r--offapi/com/sun/star/awt/grid/XGridColumn.idl111
-rw-r--r--offapi/com/sun/star/awt/grid/XGridColumnListener.idl73
-rw-r--r--offapi/com/sun/star/awt/grid/XGridColumnModel.idl119
-rw-r--r--offapi/com/sun/star/awt/grid/XGridControl.idl70
-rw-r--r--offapi/com/sun/star/awt/grid/XGridControlListener.idl49
-rw-r--r--offapi/com/sun/star/awt/grid/XGridDataListener.idl75
-rw-r--r--offapi/com/sun/star/awt/grid/XGridDataModel.idl134
-rw-r--r--offapi/com/sun/star/awt/grid/XGridSelection.idl127
-rw-r--r--offapi/com/sun/star/awt/grid/XGridSelectionListener.idl63
-rw-r--r--offapi/com/sun/star/awt/grid/makefile.mk66
-rw-r--r--offapi/com/sun/star/awt/makefile.mk342
-rw-r--r--offapi/com/sun/star/awt/tree/ExpandVetoException.idl58
-rw-r--r--offapi/com/sun/star/awt/tree/MutableTreeDataModel.idl55
-rw-r--r--offapi/com/sun/star/awt/tree/MutableTreeNode.idl50
-rw-r--r--offapi/com/sun/star/awt/tree/TreeControl.idl97
-rw-r--r--offapi/com/sun/star/awt/tree/TreeControlModel.idl114
-rw-r--r--offapi/com/sun/star/awt/tree/TreeDataModelEvent.idl68
-rw-r--r--offapi/com/sun/star/awt/tree/TreeExpansionEvent.idl59
-rw-r--r--offapi/com/sun/star/awt/tree/XMutableTreeDataModel.idl85
-rw-r--r--offapi/com/sun/star/awt/tree/XMutableTreeNode.idl122
-rw-r--r--offapi/com/sun/star/awt/tree/XTreeControl.idl295
-rw-r--r--offapi/com/sun/star/awt/tree/XTreeDataModel.idl92
-rw-r--r--offapi/com/sun/star/awt/tree/XTreeDataModelListener.idl95
-rw-r--r--offapi/com/sun/star/awt/tree/XTreeEditListener.idl89
-rw-r--r--offapi/com/sun/star/awt/tree/XTreeExpansionListener.idl92
-rw-r--r--offapi/com/sun/star/awt/tree/XTreeNode.idl105
-rw-r--r--offapi/com/sun/star/awt/tree/makefile.mk61
-rw-r--r--offapi/com/sun/star/chart/AccessibleChartDocumentView.idl143
-rw-r--r--offapi/com/sun/star/chart/AccessibleChartElement.idl195
-rw-r--r--offapi/com/sun/star/chart/AreaDiagram.idl82
-rw-r--r--offapi/com/sun/star/chart/BarDiagram.idl138
-rw-r--r--offapi/com/sun/star/chart/BubbleDiagram.idl66
-rw-r--r--offapi/com/sun/star/chart/Chart3DBarProperties.idl59
-rw-r--r--offapi/com/sun/star/chart/ChartArea.idl76
-rw-r--r--offapi/com/sun/star/chart/ChartAxis.idl311
-rw-r--r--offapi/com/sun/star/chart/ChartAxisArrangeOrderType.idl76
-rw-r--r--offapi/com/sun/star/chart/ChartAxisAssign.idl59
-rw-r--r--offapi/com/sun/star/chart/ChartAxisLabelPosition.idl75
-rw-r--r--offapi/com/sun/star/chart/ChartAxisMarkPosition.idl67
-rw-r--r--offapi/com/sun/star/chart/ChartAxisMarks.idl70
-rw-r--r--offapi/com/sun/star/chart/ChartAxisPosition.idl73
-rw-r--r--offapi/com/sun/star/chart/ChartAxisXSupplier.idl90
-rw-r--r--offapi/com/sun/star/chart/ChartAxisYSupplier.idl89
-rw-r--r--offapi/com/sun/star/chart/ChartAxisZSupplier.idl88
-rw-r--r--offapi/com/sun/star/chart/ChartData.idl53
-rw-r--r--offapi/com/sun/star/chart/ChartDataArray.idl65
-rw-r--r--offapi/com/sun/star/chart/ChartDataCaption.idl93
-rw-r--r--offapi/com/sun/star/chart/ChartDataChangeEvent.idl85
-rw-r--r--offapi/com/sun/star/chart/ChartDataChangeType.idl88
-rw-r--r--offapi/com/sun/star/chart/ChartDataPoint.idl47
-rw-r--r--offapi/com/sun/star/chart/ChartDataPointProperties.idl173
-rw-r--r--offapi/com/sun/star/chart/ChartDataRow.idl63
-rw-r--r--offapi/com/sun/star/chart/ChartDataRowProperties.idl127
-rw-r--r--offapi/com/sun/star/chart/ChartDataRowSource.idl61
-rw-r--r--offapi/com/sun/star/chart/ChartDataValue.idl67
-rw-r--r--offapi/com/sun/star/chart/ChartDocument.idl100
-rw-r--r--offapi/com/sun/star/chart/ChartErrorCategory.idl101
-rw-r--r--offapi/com/sun/star/chart/ChartErrorIndicatorType.idl70
-rw-r--r--offapi/com/sun/star/chart/ChartGrid.idl74
-rw-r--r--offapi/com/sun/star/chart/ChartLegend.idl100
-rw-r--r--offapi/com/sun/star/chart/ChartLegendPosition.idl93
-rw-r--r--offapi/com/sun/star/chart/ChartLine.idl57
-rw-r--r--offapi/com/sun/star/chart/ChartPieSegmentProperties.idl75
-rw-r--r--offapi/com/sun/star/chart/ChartRegressionCurveType.idl98
-rw-r--r--offapi/com/sun/star/chart/ChartSeriesAddress.idl69
-rw-r--r--offapi/com/sun/star/chart/ChartSolidType.idl72
-rw-r--r--offapi/com/sun/star/chart/ChartStatistics.idl183
-rw-r--r--offapi/com/sun/star/chart/ChartSymbolType.idl139
-rw-r--r--offapi/com/sun/star/chart/ChartTableAddressSupplier.idl80
-rw-r--r--offapi/com/sun/star/chart/ChartTitle.idl98
-rw-r--r--offapi/com/sun/star/chart/ChartTwoAxisXSupplier.idl87
-rw-r--r--offapi/com/sun/star/chart/ChartTwoAxisYSupplier.idl88
-rw-r--r--offapi/com/sun/star/chart/DataLabelPlacement.idl60
-rw-r--r--offapi/com/sun/star/chart/Diagram.idl148
-rw-r--r--offapi/com/sun/star/chart/Dim3DDiagram.idl84
-rw-r--r--offapi/com/sun/star/chart/DonutDiagram.idl54
-rwxr-xr-xoffapi/com/sun/star/chart/ErrorBarStyle.idl98
-rw-r--r--offapi/com/sun/star/chart/FilledNetDiagram.idl69
-rw-r--r--offapi/com/sun/star/chart/LineDiagram.idl161
-rw-r--r--offapi/com/sun/star/chart/MissingValueTreatment.idl50
-rw-r--r--offapi/com/sun/star/chart/NetDiagram.idl65
-rw-r--r--offapi/com/sun/star/chart/PieDiagram.idl57
-rw-r--r--offapi/com/sun/star/chart/StackableDiagram.idl68
-rw-r--r--offapi/com/sun/star/chart/StockDiagram.idl151
-rw-r--r--offapi/com/sun/star/chart/X3DDefaultSetter.idl67
-rw-r--r--offapi/com/sun/star/chart/X3DDisplay.idl84
-rw-r--r--offapi/com/sun/star/chart/XAxisXSupplier.idl105
-rw-r--r--offapi/com/sun/star/chart/XAxisYSupplier.idl105
-rw-r--r--offapi/com/sun/star/chart/XAxisZSupplier.idl102
-rw-r--r--offapi/com/sun/star/chart/XChartData.idl116
-rw-r--r--offapi/com/sun/star/chart/XChartDataArray.idl114
-rw-r--r--offapi/com/sun/star/chart/XChartDataChangeEventListener.idl71
-rw-r--r--offapi/com/sun/star/chart/XChartDocument.idl180
-rwxr-xr-xoffapi/com/sun/star/chart/XComplexDescriptionAccess.idl98
-rw-r--r--offapi/com/sun/star/chart/XDiagram.idl98
-rw-r--r--offapi/com/sun/star/chart/XDiagramPositioning.idl107
-rw-r--r--offapi/com/sun/star/chart/XSecondAxisTitleSupplier.idl24
-rw-r--r--offapi/com/sun/star/chart/XStatisticDisplay.idl99
-rw-r--r--offapi/com/sun/star/chart/XTwoAxisXSupplier.idl71
-rw-r--r--offapi/com/sun/star/chart/XTwoAxisYSupplier.idl68
-rw-r--r--offapi/com/sun/star/chart/XYDiagram.idl77
-rw-r--r--offapi/com/sun/star/chart/makefile.mk119
-rw-r--r--offapi/com/sun/star/chart2/Axis.idl142
-rw-r--r--offapi/com/sun/star/chart2/AxisOrientation.idl51
-rw-r--r--offapi/com/sun/star/chart2/AxisType.idl60
-rw-r--r--offapi/com/sun/star/chart2/Break.idl46
-rw-r--r--offapi/com/sun/star/chart2/CandleStickChartType.idl119
-rw-r--r--offapi/com/sun/star/chart2/ChartDocument.idl92
-rw-r--r--offapi/com/sun/star/chart2/ChartDocumentWrapper.idl67
-rw-r--r--offapi/com/sun/star/chart2/ChartType.idl63
-rw-r--r--offapi/com/sun/star/chart2/ChartTypeManager.idl56
-rw-r--r--offapi/com/sun/star/chart2/ChartTypeTemplate.idl25
-rw-r--r--offapi/com/sun/star/chart2/CoordinateSystem.idl56
-rw-r--r--offapi/com/sun/star/chart2/CoordinateSystemType.idl27
-rw-r--r--offapi/com/sun/star/chart2/CoordinateSystemTypeID.idl17
-rw-r--r--offapi/com/sun/star/chart2/CurveStyle.idl69
-rw-r--r--offapi/com/sun/star/chart2/CustomLegendEntry.idl50
-rw-r--r--offapi/com/sun/star/chart2/DataPoint.idl74
-rw-r--r--offapi/com/sun/star/chart2/DataPointGeometry3D.idl73
-rw-r--r--offapi/com/sun/star/chart2/DataPointLabel.idl78
-rw-r--r--offapi/com/sun/star/chart2/DataPointProperties.idl328
-rw-r--r--offapi/com/sun/star/chart2/DataSeries.idl197
-rw-r--r--offapi/com/sun/star/chart2/Diagram.idl135
-rw-r--r--offapi/com/sun/star/chart2/ErrorBar.idl89
-rw-r--r--offapi/com/sun/star/chart2/ExplicitIncrementData.idl96
-rw-r--r--offapi/com/sun/star/chart2/ExplicitScaleData.idl45
-rw-r--r--offapi/com/sun/star/chart2/ExplicitSubIncrement.idl30
-rw-r--r--offapi/com/sun/star/chart2/ExponentialScaling.idl55
-rw-r--r--offapi/com/sun/star/chart2/FillBitmap.idl115
-rw-r--r--offapi/com/sun/star/chart2/FormattedString.idl44
-rw-r--r--offapi/com/sun/star/chart2/GridProperties.idl63
-rw-r--r--offapi/com/sun/star/chart2/IncrementData.idl69
-rw-r--r--offapi/com/sun/star/chart2/InterpretedData.idl62
-rw-r--r--offapi/com/sun/star/chart2/Legend.idl101
-rw-r--r--offapi/com/sun/star/chart2/LegendExpansion.idl75
-rw-r--r--offapi/com/sun/star/chart2/LegendPosition.idl71
-rw-r--r--offapi/com/sun/star/chart2/LegendSymbolStyle.idl107
-rw-r--r--offapi/com/sun/star/chart2/LightSource.idl68
-rw-r--r--offapi/com/sun/star/chart2/LinearScaling.idl56
-rw-r--r--offapi/com/sun/star/chart2/LogarithmicScaling.idl54
-rw-r--r--offapi/com/sun/star/chart2/LogicTargetModel.idl41
-rw-r--r--offapi/com/sun/star/chart2/MutableDataSequence.idl62
-rw-r--r--offapi/com/sun/star/chart2/PieChartOffsetMode.idl60
-rw-r--r--offapi/com/sun/star/chart2/PowerScaling.idl55
-rw-r--r--offapi/com/sun/star/chart2/PropertyPool.idl68
-rw-r--r--offapi/com/sun/star/chart2/RegressionCurve.idl69
-rw-r--r--offapi/com/sun/star/chart2/RegressionCurveEquation.idl65
-rw-r--r--offapi/com/sun/star/chart2/RelativePosition.idl88
-rw-r--r--offapi/com/sun/star/chart2/RelativeSize.idl84
-rw-r--r--offapi/com/sun/star/chart2/ScaleData.idl97
-rw-r--r--offapi/com/sun/star/chart2/Scaling.idl53
-rw-r--r--offapi/com/sun/star/chart2/StackingDirection.idl52
-rw-r--r--offapi/com/sun/star/chart2/StandardDiagramCreationParameters.idl59
-rw-r--r--offapi/com/sun/star/chart2/SubIncrement.idl31
-rw-r--r--offapi/com/sun/star/chart2/Symbol.idl122
-rw-r--r--offapi/com/sun/star/chart2/SymbolStyle.idl73
-rw-r--r--offapi/com/sun/star/chart2/TextAnchor.idl51
-rw-r--r--offapi/com/sun/star/chart2/TickmarkStyle.idl61
-rw-r--r--offapi/com/sun/star/chart2/Title.idl94
-rw-r--r--offapi/com/sun/star/chart2/TransparencyStyle.idl62
-rw-r--r--offapi/com/sun/star/chart2/ViewLegendEntry.idl58
-rw-r--r--offapi/com/sun/star/chart2/XAxis.idl56
-rw-r--r--offapi/com/sun/star/chart2/XChartDocument.idl141
-rw-r--r--offapi/com/sun/star/chart2/XChartShape.idl96
-rw-r--r--offapi/com/sun/star/chart2/XChartShapeContainer.idl36
-rw-r--r--offapi/com/sun/star/chart2/XChartType.idl75
-rw-r--r--offapi/com/sun/star/chart2/XChartTypeContainer.idl82
-rw-r--r--offapi/com/sun/star/chart2/XChartTypeManager.idl27
-rw-r--r--offapi/com/sun/star/chart2/XChartTypeTemplate.idl240
-rw-r--r--offapi/com/sun/star/chart2/XColorScheme.idl67
-rw-r--r--offapi/com/sun/star/chart2/XCoordinateSystem.idl73
-rw-r--r--offapi/com/sun/star/chart2/XCoordinateSystemContainer.idl80
-rw-r--r--offapi/com/sun/star/chart2/XDataInterpreter.idl107
-rw-r--r--offapi/com/sun/star/chart2/XDataSeries.idl86
-rw-r--r--offapi/com/sun/star/chart2/XDataSeriesContainer.idl82
-rw-r--r--offapi/com/sun/star/chart2/XDefaultSizeTransmitter.idl64
-rw-r--r--offapi/com/sun/star/chart2/XDiagram.idl97
-rw-r--r--offapi/com/sun/star/chart2/XDiagramProvider.idl65
-rw-r--r--offapi/com/sun/star/chart2/XFastPropertyState.idl146
-rw-r--r--offapi/com/sun/star/chart2/XFormattedString.idl35
-rw-r--r--offapi/com/sun/star/chart2/XInternalDataProvider.idl95
-rw-r--r--offapi/com/sun/star/chart2/XLabeled.idl93
-rw-r--r--offapi/com/sun/star/chart2/XLegend.idl59
-rw-r--r--offapi/com/sun/star/chart2/XLegendEntry.idl30
-rw-r--r--offapi/com/sun/star/chart2/XLegendSymbolProvider.idl35
-rw-r--r--offapi/com/sun/star/chart2/XPlotter.idl128
-rw-r--r--offapi/com/sun/star/chart2/XRegressionCurve.idl66
-rw-r--r--offapi/com/sun/star/chart2/XRegressionCurveCalculator.idl152
-rw-r--r--offapi/com/sun/star/chart2/XRegressionCurveContainer.idl81
-rw-r--r--offapi/com/sun/star/chart2/XScaling.idl32
-rw-r--r--offapi/com/sun/star/chart2/XStyleSupplier.idl75
-rw-r--r--offapi/com/sun/star/chart2/XTarget.idl24
-rw-r--r--offapi/com/sun/star/chart2/XTitle.idl61
-rw-r--r--offapi/com/sun/star/chart2/XTitled.idl64
-rw-r--r--offapi/com/sun/star/chart2/XTransformation.idl101
-rw-r--r--offapi/com/sun/star/chart2/XUndoHelper.idl89
-rw-r--r--offapi/com/sun/star/chart2/XUndoManager.idl111
-rw-r--r--offapi/com/sun/star/chart2/XUndoSupplier.idl57
-rw-r--r--offapi/com/sun/star/chart2/data/DataFilter.idl68
-rw-r--r--offapi/com/sun/star/chart2/data/DataProvider.idl69
-rw-r--r--offapi/com/sun/star/chart2/data/DataSequence.idl157
-rw-r--r--offapi/com/sun/star/chart2/data/DataSequenceRole.idl108
-rw-r--r--offapi/com/sun/star/chart2/data/DataSink.idl60
-rw-r--r--offapi/com/sun/star/chart2/data/DataSource.idl60
-rw-r--r--offapi/com/sun/star/chart2/data/HighlightedRange.idl74
-rw-r--r--offapi/com/sun/star/chart2/data/LabelOrigin.idl100
-rw-r--r--offapi/com/sun/star/chart2/data/LabeledDataSequence.idl83
-rw-r--r--offapi/com/sun/star/chart2/data/RangeHighlightListener.idl60
-rw-r--r--offapi/com/sun/star/chart2/data/RangeHighlighter.idl58
-rw-r--r--offapi/com/sun/star/chart2/data/TabularDataProviderArguments.idl161
-rw-r--r--offapi/com/sun/star/chart2/data/XDataProvider.idl164
-rw-r--r--offapi/com/sun/star/chart2/data/XDataReceiver.idl122
-rw-r--r--offapi/com/sun/star/chart2/data/XDataSequence.idl138
-rw-r--r--offapi/com/sun/star/chart2/data/XDataSink.idl78
-rw-r--r--offapi/com/sun/star/chart2/data/XDataSource.idl83
-rw-r--r--offapi/com/sun/star/chart2/data/XDatabaseDataProvider.idl224
-rw-r--r--offapi/com/sun/star/chart2/data/XLabeledDataSequence.idl79
-rw-r--r--offapi/com/sun/star/chart2/data/XNumericalDataSequence.idl60
-rw-r--r--offapi/com/sun/star/chart2/data/XRangeHighlighter.idl80
-rw-r--r--offapi/com/sun/star/chart2/data/XRangeXMLConversion.idl72
-rw-r--r--offapi/com/sun/star/chart2/data/XTextualDataSequence.idl59
-rw-r--r--offapi/com/sun/star/chart2/data/makefile.mk60
-rw-r--r--offapi/com/sun/star/chart2/makefile.mk111
-rw-r--r--offapi/com/sun/star/configuration/AccessRootElement.idl176
-rw-r--r--offapi/com/sun/star/configuration/AdministrationProvider.idl191
-rw-r--r--offapi/com/sun/star/configuration/CannotLoadConfigurationException.idl51
-rw-r--r--offapi/com/sun/star/configuration/ConfigurationAccess.idl265
-rw-r--r--offapi/com/sun/star/configuration/ConfigurationProvider.idl251
-rw-r--r--offapi/com/sun/star/configuration/ConfigurationRegistry.idl108
-rw-r--r--offapi/com/sun/star/configuration/ConfigurationUpdateAccess.idl144
-rw-r--r--offapi/com/sun/star/configuration/CorruptedConfigurationException.idl61
-rw-r--r--offapi/com/sun/star/configuration/CorruptedUIConfigurationException.idl55
-rw-r--r--offapi/com/sun/star/configuration/DefaultProvider.idl100
-rw-r--r--offapi/com/sun/star/configuration/GroupAccess.idl143
-rw-r--r--offapi/com/sun/star/configuration/GroupElement.idl89
-rw-r--r--offapi/com/sun/star/configuration/GroupUpdate.idl93
-rw-r--r--offapi/com/sun/star/configuration/HierarchyAccess.idl187
-rw-r--r--offapi/com/sun/star/configuration/HierarchyElement.idl132
-rw-r--r--offapi/com/sun/star/configuration/InstallationIncompleteException.idl51
-rw-r--r--offapi/com/sun/star/configuration/InvalidBootstrapFileException.idl53
-rw-r--r--offapi/com/sun/star/configuration/MissingBootstrapFileException.idl53
-rw-r--r--offapi/com/sun/star/configuration/PropertyHierarchy.idl104
-rw-r--r--offapi/com/sun/star/configuration/SetAccess.idl105
-rw-r--r--offapi/com/sun/star/configuration/SetElement.idl186
-rw-r--r--offapi/com/sun/star/configuration/SetUpdate.idl105
-rw-r--r--offapi/com/sun/star/configuration/SimpleSetAccess.idl122
-rw-r--r--offapi/com/sun/star/configuration/SimpleSetUpdate.idl184
-rw-r--r--offapi/com/sun/star/configuration/Update.idl45
-rw-r--r--offapi/com/sun/star/configuration/UpdateRootElement.idl110
-rw-r--r--offapi/com/sun/star/configuration/XTemplateContainer.idl80
-rw-r--r--offapi/com/sun/star/configuration/XTemplateInstance.idl70
-rw-r--r--offapi/com/sun/star/configuration/XUpdate.idl57
-rw-r--r--offapi/com/sun/star/configuration/backend/AuthenticationFailedException.idl50
-rw-r--r--offapi/com/sun/star/configuration/backend/Backend.idl100
-rw-r--r--offapi/com/sun/star/configuration/backend/BackendAccessException.idl51
-rw-r--r--offapi/com/sun/star/configuration/backend/BackendAdapter.idl94
-rw-r--r--offapi/com/sun/star/configuration/backend/BackendSetupException.idl59
-rw-r--r--offapi/com/sun/star/configuration/backend/CannotConnectException.idl59
-rw-r--r--offapi/com/sun/star/configuration/backend/ComponentChangeEvent.idl58
-rw-r--r--offapi/com/sun/star/configuration/backend/ConnectionLostException.idl54
-rw-r--r--offapi/com/sun/star/configuration/backend/CopyImporter.idl89
-rw-r--r--offapi/com/sun/star/configuration/backend/DataImporter.idl127
-rw-r--r--offapi/com/sun/star/configuration/backend/DefaultBackend.idl64
-rw-r--r--offapi/com/sun/star/configuration/backend/HierarchyBrowser.idl85
-rw-r--r--offapi/com/sun/star/configuration/backend/Importer.idl87
-rw-r--r--offapi/com/sun/star/configuration/backend/InsufficientAccessRightsException.idl60
-rw-r--r--offapi/com/sun/star/configuration/backend/InteractionHandler.idl102
-rw-r--r--offapi/com/sun/star/configuration/backend/InvalidAuthenticationMechanismException.idl51
-rw-r--r--offapi/com/sun/star/configuration/backend/Layer.idl117
-rw-r--r--offapi/com/sun/star/configuration/backend/LayerDescriber.idl41
-rw-r--r--offapi/com/sun/star/configuration/backend/LayerFilter.idl94
-rw-r--r--offapi/com/sun/star/configuration/backend/LayerUpdateMerger.idl101
-rw-r--r--offapi/com/sun/star/configuration/backend/LdapMultiLayerStratum.idl60
-rw-r--r--offapi/com/sun/star/configuration/backend/LdapSingleBackend.idl61
-rw-r--r--offapi/com/sun/star/configuration/backend/LdapSingleStratum.idl60
-rw-r--r--offapi/com/sun/star/configuration/backend/LocalDataImporter.idl111
-rw-r--r--offapi/com/sun/star/configuration/backend/LocalHierarchyBrowser.idl92
-rw-r--r--offapi/com/sun/star/configuration/backend/LocalSchemaSupplier.idl61
-rw-r--r--offapi/com/sun/star/configuration/backend/LocalSingleBackend.idl61
-rw-r--r--offapi/com/sun/star/configuration/backend/LocalSingleStratum.idl60
-rw-r--r--offapi/com/sun/star/configuration/backend/MalformedDataException.idl91
-rw-r--r--offapi/com/sun/star/configuration/backend/MergeImporter.idl77
-rw-r--r--offapi/com/sun/star/configuration/backend/MergeRecoveryRequest.idl90
-rw-r--r--offapi/com/sun/star/configuration/backend/MultiLayerStratum.idl73
-rw-r--r--offapi/com/sun/star/configuration/backend/MultiStratumBackend.idl76
-rw-r--r--offapi/com/sun/star/configuration/backend/NodeAttribute.idl101
-rw-r--r--offapi/com/sun/star/configuration/backend/OfflineBackend.idl78
-rw-r--r--offapi/com/sun/star/configuration/backend/OnlineBackend.idl65
-rw-r--r--offapi/com/sun/star/configuration/backend/PlatformBackend.idl60
-rw-r--r--offapi/com/sun/star/configuration/backend/PropertyInfo.idl69
-rw-r--r--offapi/com/sun/star/configuration/backend/Schema.idl87
-rw-r--r--offapi/com/sun/star/configuration/backend/SchemaAttribute.idl80
-rw-r--r--offapi/com/sun/star/configuration/backend/SchemaSupplier.idl60
-rw-r--r--offapi/com/sun/star/configuration/backend/SingleBackend.idl101
-rw-r--r--offapi/com/sun/star/configuration/backend/SingleBackendAdapter.idl65
-rw-r--r--offapi/com/sun/star/configuration/backend/SingleLayerStratum.idl73
-rw-r--r--offapi/com/sun/star/configuration/backend/StratumCreationException.idl62
-rw-r--r--offapi/com/sun/star/configuration/backend/SystemIntegration.idl72
-rw-r--r--offapi/com/sun/star/configuration/backend/TemplateIdentifier.idl67
-rw-r--r--offapi/com/sun/star/configuration/backend/UpdatableLayer.idl127
-rw-r--r--offapi/com/sun/star/configuration/backend/XBackend.idl206
-rw-r--r--offapi/com/sun/star/configuration/backend/XBackendChangesListener.idl65
-rw-r--r--offapi/com/sun/star/configuration/backend/XBackendChangesNotifier.idl80
-rw-r--r--offapi/com/sun/star/configuration/backend/XBackendEntities.idl142
-rw-r--r--offapi/com/sun/star/configuration/backend/XCompositeLayer.idl118
-rw-r--r--offapi/com/sun/star/configuration/backend/XLayer.idl91
-rw-r--r--offapi/com/sun/star/configuration/backend/XLayerContentDescriber.idl95
-rw-r--r--offapi/com/sun/star/configuration/backend/XLayerHandler.idl570
-rw-r--r--offapi/com/sun/star/configuration/backend/XLayerImporter.idl163
-rw-r--r--offapi/com/sun/star/configuration/backend/XMultiLayerStratum.idl347
-rw-r--r--offapi/com/sun/star/configuration/backend/XSchema.idl148
-rw-r--r--offapi/com/sun/star/configuration/backend/XSchemaHandler.idl538
-rw-r--r--offapi/com/sun/star/configuration/backend/XSchemaSupplier.idl89
-rw-r--r--offapi/com/sun/star/configuration/backend/XSingleLayerStratum.idl151
-rw-r--r--offapi/com/sun/star/configuration/backend/XUpdatableLayer.idl92
-rw-r--r--offapi/com/sun/star/configuration/backend/XUpdateHandler.idl673
-rw-r--r--offapi/com/sun/star/configuration/backend/XVersionedSchemaSupplier.idl97
-rw-r--r--offapi/com/sun/star/configuration/backend/makefile.mk103
-rw-r--r--offapi/com/sun/star/configuration/backend/xml/LayerParser.idl98
-rw-r--r--offapi/com/sun/star/configuration/backend/xml/LayerWriter.idl93
-rw-r--r--offapi/com/sun/star/configuration/backend/xml/SchemaParser.idl93
-rw-r--r--offapi/com/sun/star/configuration/backend/xml/makefile.mk43
-rw-r--r--offapi/com/sun/star/configuration/bootstrap/BootstrapContext.idl76
-rw-r--r--offapi/com/sun/star/configuration/bootstrap/makefile.mk41
-rw-r--r--offapi/com/sun/star/configuration/makefile.mk74
-rw-r--r--offapi/com/sun/star/datatransfer/DataFlavor.idl64
-rw-r--r--offapi/com/sun/star/datatransfer/DataFormatTranslator.idl78
-rw-r--r--offapi/com/sun/star/datatransfer/MimeContentTypeFactory.idl86
-rw-r--r--offapi/com/sun/star/datatransfer/UnsupportedFlavorException.idl54
-rw-r--r--offapi/com/sun/star/datatransfer/XDataFormatTranslator.idl84
-rw-r--r--offapi/com/sun/star/datatransfer/XMimeContentType.idl115
-rw-r--r--offapi/com/sun/star/datatransfer/XMimeContentTypeFactory.idl82
-rw-r--r--offapi/com/sun/star/datatransfer/XSystemTransferable.idl72
-rw-r--r--offapi/com/sun/star/datatransfer/XTransferDataAccess.idl84
-rw-r--r--offapi/com/sun/star/datatransfer/XTransferable.idl110
-rw-r--r--offapi/com/sun/star/datatransfer/XTransferableEx.idl71
-rw-r--r--offapi/com/sun/star/datatransfer/XTransferableSource.idl59
-rw-r--r--offapi/com/sun/star/datatransfer/XTransferableSupplier.idl77
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/ClipboardEvent.idl61
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/ClipboardManager.idl84
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/GenericClipboard.idl96
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/RenderingCapabilities.idl59
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/SystemClipboard.idl114
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XClipboard.idl100
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XClipboardEx.idl62
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XClipboardFactory.idl75
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XClipboardListener.idl65
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XClipboardManager.idl114
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XClipboardNotifier.idl70
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XClipboardOwner.idl73
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/XFlushableClipboard.idl60
-rw-r--r--offapi/com/sun/star/datatransfer/clipboard/makefile.mk59
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DNDConstants.idl89
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DragGestureEvent.idl96
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DragSourceDragEvent.idl72
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DragSourceDropEvent.idl70
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DragSourceEvent.idl73
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DropTargetDragEnterEvent.idl69
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DropTargetDragEvent.idl97
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DropTargetDropEvent.idl106
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/DropTargetEvent.idl61
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/InvalidDNDOperationException.idl56
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/OleDragSource.idl102
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/OleDropTarget.idl94
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/X11DragSource.idl97
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/X11DropTarget.idl100
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XAutoscroll.idl90
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDragGestureListener.idl70
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDragGestureRecognizer.idl84
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDragSource.idl139
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDragSourceContext.idl107
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDragSourceListener.idl114
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDropTarget.idl130
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDropTargetDragContext.idl91
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDropTargetDropContext.idl96
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/XDropTargetListener.idl116
-rw-r--r--offapi/com/sun/star/datatransfer/dnd/makefile.mk70
-rw-r--r--offapi/com/sun/star/datatransfer/makefile.mk59
-rw-r--r--offapi/com/sun/star/deployment/DependencyException.idl71
-rw-r--r--offapi/com/sun/star/deployment/DeploymentException.idl49
-rw-r--r--offapi/com/sun/star/deployment/ExtensionManager.idl49
-rw-r--r--offapi/com/sun/star/deployment/ExtensionRemovedException.idl50
-rw-r--r--offapi/com/sun/star/deployment/InstallException.idl57
-rw-r--r--offapi/com/sun/star/deployment/InvalidRemovedParameterException.idl62
-rw-r--r--offapi/com/sun/star/deployment/LicenseException.idl61
-rw-r--r--offapi/com/sun/star/deployment/PackageInformationProvider.idl40
-rw-r--r--offapi/com/sun/star/deployment/PackageRegistryBackend.idl70
-rw-r--r--offapi/com/sun/star/deployment/PlatformException.idl50
-rw-r--r--offapi/com/sun/star/deployment/Prerequisites.idl45
-rw-r--r--offapi/com/sun/star/deployment/UpdateInformationEntry.idl52
-rw-r--r--offapi/com/sun/star/deployment/UpdateInformationProvider.idl40
-rw-r--r--offapi/com/sun/star/deployment/VersionException.idl65
-rw-r--r--offapi/com/sun/star/deployment/XExtensionManager.idl342
-rw-r--r--offapi/com/sun/star/deployment/XPackage.idl358
-rw-r--r--offapi/com/sun/star/deployment/XPackageInformationProvider.idl70
-rw-r--r--offapi/com/sun/star/deployment/XPackageManager.idl314
-rw-r--r--offapi/com/sun/star/deployment/XPackageManagerFactory.idl100
-rw-r--r--offapi/com/sun/star/deployment/XPackageRegistry.idl122
-rw-r--r--offapi/com/sun/star/deployment/XPackageTypeInfo.idl94
-rw-r--r--offapi/com/sun/star/deployment/XUpdateInformationProvider.idl109
-rw-r--r--offapi/com/sun/star/deployment/makefile.mk64
-rw-r--r--offapi/com/sun/star/deployment/test/SmoketestCommandEnvironment.idl43
-rw-r--r--offapi/com/sun/star/deployment/test/makefile.mk41
-rw-r--r--offapi/com/sun/star/deployment/thePackageManagerFactory.idl53
-rw-r--r--offapi/com/sun/star/deployment/ui/LicenseDialog.idl61
-rw-r--r--offapi/com/sun/star/deployment/ui/PackageManagerDialog.idl74
-rw-r--r--offapi/com/sun/star/deployment/ui/UpdateRequiredDialog.idl54
-rw-r--r--offapi/com/sun/star/deployment/ui/makefile.mk43
-rw-r--r--offapi/com/sun/star/document/AmbigousFilterRequest.idl75
-rw-r--r--offapi/com/sun/star/document/BrokenPackageRequest.idl56
-rw-r--r--offapi/com/sun/star/document/ChangedByOthersRequest.idl61
-rw-r--r--offapi/com/sun/star/document/CorruptedFilterConfigurationException.idl57
-rw-r--r--offapi/com/sun/star/document/DocumentEvent.idl85
-rw-r--r--offapi/com/sun/star/document/DocumentInfo.idl272
-rwxr-xr-xoffapi/com/sun/star/document/DocumentProperties.idl64
-rw-r--r--offapi/com/sun/star/document/DocumentRevisionListPersistence.idl51
-rw-r--r--offapi/com/sun/star/document/EventDescriptor.idl68
-rw-r--r--offapi/com/sun/star/document/EventObject.idl63
-rw-r--r--offapi/com/sun/star/document/Events.idl105
-rw-r--r--offapi/com/sun/star/document/ExportFilter.idl136
-rw-r--r--offapi/com/sun/star/document/ExtendedTypeDetection.idl109
-rw-r--r--offapi/com/sun/star/document/ExtendedTypeDetectionFactory.idl154
-rw-r--r--offapi/com/sun/star/document/FilterAdapter.idl53
-rw-r--r--offapi/com/sun/star/document/FilterFactory.idl251
-rw-r--r--offapi/com/sun/star/document/FilterOptionsRequest.idl68
-rw-r--r--offapi/com/sun/star/document/HeaderFooterSettings.idl73
-rw-r--r--offapi/com/sun/star/document/ImportFilter.idl136
-rw-r--r--offapi/com/sun/star/document/LinkTarget.idl69
-rw-r--r--offapi/com/sun/star/document/LinkTargets.idl58
-rw-r--r--offapi/com/sun/star/document/LinkUpdateModes.idl61
-rw-r--r--offapi/com/sun/star/document/LockFileIgnoreRequest.idl61
-rw-r--r--offapi/com/sun/star/document/LockedDocumentRequest.idl68
-rw-r--r--offapi/com/sun/star/document/LockedOnSavingRequest.idl69
-rw-r--r--offapi/com/sun/star/document/MacroExecMode.idl132
-rw-r--r--offapi/com/sun/star/document/MediaDescriptor.idl616
-rw-r--r--offapi/com/sun/star/document/NoSuchFilterRequest.idl69
-rw-r--r--offapi/com/sun/star/document/OOXMLDocumentPropertiesImporter.idl48
-rw-r--r--offapi/com/sun/star/document/OfficeDocument.idl230
-rw-r--r--offapi/com/sun/star/document/OleEmbeddedServerRegistration.idl64
-rw-r--r--offapi/com/sun/star/document/OwnLockOnDocumentRequest.idl72
-rw-r--r--offapi/com/sun/star/document/PDFDialog.idl64
-rw-r--r--offapi/com/sun/star/document/PrinterIndependentLayout.idl66
-rw-r--r--offapi/com/sun/star/document/RedlineDisplayType.idl60
-rw-r--r--offapi/com/sun/star/document/Settings.idl291
-rw-r--r--offapi/com/sun/star/document/StandaloneDocumentInfo.idl79
-rw-r--r--offapi/com/sun/star/document/TypeDetection.idl198
-rw-r--r--offapi/com/sun/star/document/UpdateDocMode.idl75
-rw-r--r--offapi/com/sun/star/document/XActionLockable.idl88
-rw-r--r--offapi/com/sun/star/document/XBinaryStreamResolver.idl84
-rwxr-xr-xoffapi/com/sun/star/document/XCodeNameQuery.idl56
-rw-r--r--offapi/com/sun/star/document/XCompatWriterDocProperties.idl49
-rw-r--r--offapi/com/sun/star/document/XDocumentEventBroadcaster.idl125
-rw-r--r--offapi/com/sun/star/document/XDocumentEventListener.idl65
-rw-r--r--offapi/com/sun/star/document/XDocumentInfo.idl147
-rw-r--r--offapi/com/sun/star/document/XDocumentInfoSupplier.idl74
-rw-r--r--offapi/com/sun/star/document/XDocumentInsertable.idl72
-rw-r--r--offapi/com/sun/star/document/XDocumentLanguages.idl64
-rwxr-xr-xoffapi/com/sun/star/document/XDocumentProperties.idl460
-rw-r--r--offapi/com/sun/star/document/XDocumentPropertiesSupplier.idl70
-rw-r--r--offapi/com/sun/star/document/XDocumentRecovery.idl127
-rw-r--r--offapi/com/sun/star/document/XDocumentRevisionListPersistence.idl90
-rw-r--r--offapi/com/sun/star/document/XDocumentSubStorageSupplier.idl87
-rw-r--r--offapi/com/sun/star/document/XEmbeddedObjectResolver.idl54
-rw-r--r--offapi/com/sun/star/document/XEmbeddedObjectSupplier.idl60
-rw-r--r--offapi/com/sun/star/document/XEmbeddedObjectSupplier2.idl80
-rw-r--r--offapi/com/sun/star/document/XEmbeddedScripts.idl72
-rw-r--r--offapi/com/sun/star/document/XEventBroadcaster.idl72
-rw-r--r--offapi/com/sun/star/document/XEventListener.idl66
-rw-r--r--offapi/com/sun/star/document/XEventsSupplier.idl57
-rw-r--r--offapi/com/sun/star/document/XExporter.idl78
-rw-r--r--offapi/com/sun/star/document/XExtendedFilterDetection.idl82
-rw-r--r--offapi/com/sun/star/document/XFilter.idl88
-rw-r--r--offapi/com/sun/star/document/XFilterAdapter.idl67
-rw-r--r--offapi/com/sun/star/document/XGraphicObjectResolver.idl54
-rw-r--r--offapi/com/sun/star/document/XImporter.idl78
-rw-r--r--offapi/com/sun/star/document/XInteractionFilterOptions.idl69
-rw-r--r--offapi/com/sun/star/document/XInteractionFilterSelect.idl80
-rw-r--r--offapi/com/sun/star/document/XLinkTargetSupplier.idl65
-rw-r--r--offapi/com/sun/star/document/XMLBasicExporter.idl84
-rw-r--r--offapi/com/sun/star/document/XMLBasicImporter.idl75
-rw-r--r--offapi/com/sun/star/document/XMLOasisBasicExporter.idl84
-rw-r--r--offapi/com/sun/star/document/XMLOasisBasicImporter.idl75
-rw-r--r--offapi/com/sun/star/document/XMimeTypeInfo.idl63
-rw-r--r--offapi/com/sun/star/document/XOOXMLDocumentPropertiesImporter.idl105
-rw-r--r--offapi/com/sun/star/document/XRedlinesSupplier.idl60
-rw-r--r--offapi/com/sun/star/document/XScriptInvocationContext.idl73
-rw-r--r--offapi/com/sun/star/document/XStandaloneDocumentInfo.idl105
-rw-r--r--offapi/com/sun/star/document/XStorageBasedDocument.idl123
-rw-r--r--offapi/com/sun/star/document/XStorageChangeListener.idl70
-rw-r--r--offapi/com/sun/star/document/XTypeDetection.idl124
-rw-r--r--offapi/com/sun/star/document/XVbaMethodParameter.idl68
-rw-r--r--offapi/com/sun/star/document/XViewDataSupplier.idl76
-rw-r--r--offapi/com/sun/star/document/makefile.mk125
-rw-r--r--offapi/com/sun/star/drawing/AccessibleDrawDocumentView.idl142
-rw-r--r--offapi/com/sun/star/drawing/AccessibleGraphControl.idl83
-rw-r--r--offapi/com/sun/star/drawing/AccessibleGraphicShape.idl100
-rw-r--r--offapi/com/sun/star/drawing/AccessibleImageBullet.idl111
-rw-r--r--offapi/com/sun/star/drawing/AccessibleOLEShape.idl87
-rw-r--r--offapi/com/sun/star/drawing/AccessibleShape.idl206
-rw-r--r--offapi/com/sun/star/drawing/AccessibleSlideView.idl65
-rw-r--r--offapi/com/sun/star/drawing/AccessibleSlideViewObject.idl64
-rw-r--r--offapi/com/sun/star/drawing/Alignment.idl104
-rw-r--r--offapi/com/sun/star/drawing/AppletShape.idl98
-rw-r--r--offapi/com/sun/star/drawing/Arrangement.idl80
-rw-r--r--offapi/com/sun/star/drawing/Background.idl54
-rw-r--r--offapi/com/sun/star/drawing/BezierPoint.idl77
-rw-r--r--offapi/com/sun/star/drawing/BitmapMode.idl66
-rw-r--r--offapi/com/sun/star/drawing/BitmapTable.idl64
-rw-r--r--offapi/com/sun/star/drawing/BoundVolume.idl60
-rw-r--r--offapi/com/sun/star/drawing/CameraGeometry.idl64
-rw-r--r--offapi/com/sun/star/drawing/CaptionEscapeDirection.idl67
-rw-r--r--offapi/com/sun/star/drawing/CaptionShape.idl158
-rw-r--r--offapi/com/sun/star/drawing/CaptionType.idl66
-rw-r--r--offapi/com/sun/star/drawing/CircleKind.idl77
-rw-r--r--offapi/com/sun/star/drawing/ClosedBezierShape.idl89
-rw-r--r--offapi/com/sun/star/drawing/ColorMode.idl79
-rw-r--r--offapi/com/sun/star/drawing/ConnectionType.idl92
-rw-r--r--offapi/com/sun/star/drawing/ConnectorProperties.idl82
-rw-r--r--offapi/com/sun/star/drawing/ConnectorShape.idl152
-rw-r--r--offapi/com/sun/star/drawing/ConnectorType.idl78
-rw-r--r--offapi/com/sun/star/drawing/ControlShape.idl61
-rw-r--r--offapi/com/sun/star/drawing/CoordinateSequence.idl45
-rw-r--r--offapi/com/sun/star/drawing/CoordinateSequenceSequence.idl48
-rw-r--r--offapi/com/sun/star/drawing/CustomShape.idl116
-rw-r--r--offapi/com/sun/star/drawing/CustomShapeEngine.idl64
-rw-r--r--offapi/com/sun/star/drawing/DashStyle.idl79
-rw-r--r--offapi/com/sun/star/drawing/DashTable.idl64
-rw-r--r--offapi/com/sun/star/drawing/Defaults.idl80
-rw-r--r--offapi/com/sun/star/drawing/Direction3D.idl64
-rw-r--r--offapi/com/sun/star/drawing/DocumentSettings.idl109
-rw-r--r--offapi/com/sun/star/drawing/DoubleSequence.idl44
-rw-r--r--offapi/com/sun/star/drawing/DoubleSequenceSequence.idl48
-rw-r--r--offapi/com/sun/star/drawing/DrawPage.idl88
-rw-r--r--offapi/com/sun/star/drawing/DrawPages.idl80
-rw-r--r--offapi/com/sun/star/drawing/DrawViewMode.idl72
-rw-r--r--offapi/com/sun/star/drawing/DrawingDocument.idl54
-rw-r--r--offapi/com/sun/star/drawing/DrawingDocumentDrawView.idl203
-rw-r--r--offapi/com/sun/star/drawing/DrawingDocumentFactory.idl54
-rw-r--r--offapi/com/sun/star/drawing/EllipseShape.idl105
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.idl58
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeExtrusion.idl176
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeGeometry.idl119
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeGluePointType.idl64
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeHandle.idl121
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeParameter.idl54
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeParameterPair.idl56
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeParameterType.idl107
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapePath.idl119
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeSegment.idl54
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.idl115
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeTextFrame.idl57
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeTextPath.idl63
-rw-r--r--offapi/com/sun/star/drawing/EnhancedCustomShapeTextPathMode.idl57
-rw-r--r--offapi/com/sun/star/drawing/EscapeDirection.idl76
-rw-r--r--offapi/com/sun/star/drawing/FillProperties.idl274
-rw-r--r--offapi/com/sun/star/drawing/FillStyle.idl89
-rw-r--r--offapi/com/sun/star/drawing/FlagSequence.idl48
-rw-r--r--offapi/com/sun/star/drawing/FlagSequenceSequence.idl49
-rw-r--r--offapi/com/sun/star/drawing/GenericDrawPage.idl238
-rw-r--r--offapi/com/sun/star/drawing/GenericDrawingDocument.idl240
-rw-r--r--offapi/com/sun/star/drawing/GluePoint.idl91
-rw-r--r--offapi/com/sun/star/drawing/GluePoint2.idl89
-rw-r--r--offapi/com/sun/star/drawing/GradientTable.idl64
-rw-r--r--offapi/com/sun/star/drawing/GraphicExportFilter.idl104
-rw-r--r--offapi/com/sun/star/drawing/GraphicFilterRequest.idl56
-rw-r--r--offapi/com/sun/star/drawing/GraphicObjectShape.idl160
-rw-r--r--offapi/com/sun/star/drawing/GroupShape.idl76
-rw-r--r--offapi/com/sun/star/drawing/Hatch.idl86
-rw-r--r--offapi/com/sun/star/drawing/HatchStyle.idl70
-rw-r--r--offapi/com/sun/star/drawing/HatchTable.idl64
-rw-r--r--offapi/com/sun/star/drawing/HomogenMatrix.idl74
-rw-r--r--offapi/com/sun/star/drawing/HomogenMatrix3.idl64
-rw-r--r--offapi/com/sun/star/drawing/HomogenMatrix4.idl68
-rw-r--r--offapi/com/sun/star/drawing/HomogenMatrixLine.idl70
-rw-r--r--offapi/com/sun/star/drawing/HomogenMatrixLine3.idl59
-rw-r--r--offapi/com/sun/star/drawing/HomogenMatrixLine4.idl63
-rw-r--r--offapi/com/sun/star/drawing/HorizontalDimensioning.idl79
-rw-r--r--offapi/com/sun/star/drawing/Layer.idl106
-rw-r--r--offapi/com/sun/star/drawing/LayerManager.idl80
-rw-r--r--offapi/com/sun/star/drawing/LayerType.idl77
-rw-r--r--offapi/com/sun/star/drawing/LineDash.idl94
-rw-r--r--offapi/com/sun/star/drawing/LineEndType.idl92
-rw-r--r--offapi/com/sun/star/drawing/LineJoint.idl74
-rw-r--r--offapi/com/sun/star/drawing/LineProperties.idl161
-rw-r--r--offapi/com/sun/star/drawing/LineShape.idl82
-rw-r--r--offapi/com/sun/star/drawing/LineStyle.idl74
-rw-r--r--offapi/com/sun/star/drawing/MarkerTable.idl64
-rw-r--r--offapi/com/sun/star/drawing/MasterPage.idl77
-rw-r--r--offapi/com/sun/star/drawing/MasterPages.idl60
-rw-r--r--offapi/com/sun/star/drawing/MeasureKind.idl69
-rw-r--r--offapi/com/sun/star/drawing/MeasureProperties.idl154
-rw-r--r--offapi/com/sun/star/drawing/MeasureShape.idl94
-rw-r--r--offapi/com/sun/star/drawing/MeasureTextHorzPos.idl75
-rw-r--r--offapi/com/sun/star/drawing/MeasureTextVertPos.idl80
-rw-r--r--offapi/com/sun/star/drawing/MirrorAxis.idl63
-rw-r--r--offapi/com/sun/star/drawing/NormalsKind.idl73
-rw-r--r--offapi/com/sun/star/drawing/OLE2Shape.idl89
-rw-r--r--offapi/com/sun/star/drawing/OpenBezierShape.idl84
-rw-r--r--offapi/com/sun/star/drawing/PageShape.idl67
-rw-r--r--offapi/com/sun/star/drawing/PluginShape.idl82
-rw-r--r--offapi/com/sun/star/drawing/PointSequence.idl48
-rw-r--r--offapi/com/sun/star/drawing/PointSequenceSequence.idl48
-rw-r--r--offapi/com/sun/star/drawing/PolyLineShape.idl84
-rw-r--r--offapi/com/sun/star/drawing/PolyPolygonBezierCoords.idl66
-rw-r--r--offapi/com/sun/star/drawing/PolyPolygonBezierDescriptor.idl75
-rw-r--r--offapi/com/sun/star/drawing/PolyPolygonBezierShape.idl90
-rw-r--r--offapi/com/sun/star/drawing/PolyPolygonDescriptor.idl74
-rw-r--r--offapi/com/sun/star/drawing/PolyPolygonShape.idl92
-rw-r--r--offapi/com/sun/star/drawing/PolyPolygonShape3D.idl68
-rw-r--r--offapi/com/sun/star/drawing/PolygonFlags.idl81
-rw-r--r--offapi/com/sun/star/drawing/PolygonKind.idl112
-rw-r--r--offapi/com/sun/star/drawing/Position3D.idl70
-rw-r--r--offapi/com/sun/star/drawing/ProjectionMode.idl66
-rw-r--r--offapi/com/sun/star/drawing/RectanglePoint.idl121
-rw-r--r--offapi/com/sun/star/drawing/RectangleShape.idl90
-rw-r--r--offapi/com/sun/star/drawing/RotationDescriptor.idl77
-rw-r--r--offapi/com/sun/star/drawing/ShadeMode.idl80
-rw-r--r--offapi/com/sun/star/drawing/ShadowProperties.idl86
-rw-r--r--offapi/com/sun/star/drawing/Shape.idl214
-rw-r--r--offapi/com/sun/star/drawing/ShapeCollection.idl67
-rw-r--r--offapi/com/sun/star/drawing/Shapes.idl56
-rw-r--r--offapi/com/sun/star/drawing/SlideRenderer.idl48
-rw-r--r--offapi/com/sun/star/drawing/SlideSorter.idl160
-rw-r--r--offapi/com/sun/star/drawing/SnapObjectType.idl67
-rw-r--r--offapi/com/sun/star/drawing/Text.idl65
-rw-r--r--offapi/com/sun/star/drawing/TextAdjust.idl90
-rw-r--r--offapi/com/sun/star/drawing/TextAnimationDirection.idl73
-rw-r--r--offapi/com/sun/star/drawing/TextAnimationKind.idl84
-rw-r--r--offapi/com/sun/star/drawing/TextFitToSizeType.idl75
-rw-r--r--offapi/com/sun/star/drawing/TextHorizontalAdjust.idl73
-rw-r--r--offapi/com/sun/star/drawing/TextProperties.idl334
-rw-r--r--offapi/com/sun/star/drawing/TextShape.idl87
-rw-r--r--offapi/com/sun/star/drawing/TextVerticalAdjust.idl76
-rw-r--r--offapi/com/sun/star/drawing/TextureKind.idl67
-rw-r--r--offapi/com/sun/star/drawing/TextureKind2.idl66
-rw-r--r--offapi/com/sun/star/drawing/TextureMode.idl71
-rw-r--r--offapi/com/sun/star/drawing/TextureProjectionMode.idl76
-rw-r--r--offapi/com/sun/star/drawing/TransparencyGradientTable.idl64
-rw-r--r--offapi/com/sun/star/drawing/VerticalDimensioning.idl79
-rw-r--r--offapi/com/sun/star/drawing/XConnectableShape.idl72
-rw-r--r--offapi/com/sun/star/drawing/XConnectorShape.idl92
-rw-r--r--offapi/com/sun/star/drawing/XControlShape.idl83
-rw-r--r--offapi/com/sun/star/drawing/XCustomShapeEngine.idl87
-rw-r--r--offapi/com/sun/star/drawing/XCustomShapeHandle.idl68
-rw-r--r--offapi/com/sun/star/drawing/XDrawPage.idl52
-rw-r--r--offapi/com/sun/star/drawing/XDrawPageDuplicator.idl73
-rw-r--r--offapi/com/sun/star/drawing/XDrawPageExpander.idl74
-rw-r--r--offapi/com/sun/star/drawing/XDrawPageSummarizer.idl72
-rw-r--r--offapi/com/sun/star/drawing/XDrawPageSupplier.idl71
-rw-r--r--offapi/com/sun/star/drawing/XDrawPages.idl90
-rw-r--r--offapi/com/sun/star/drawing/XDrawPagesSupplier.idl62
-rw-r--r--offapi/com/sun/star/drawing/XDrawSubController.idl74
-rw-r--r--offapi/com/sun/star/drawing/XDrawView.idl76
-rw-r--r--offapi/com/sun/star/drawing/XEnhancedCustomShapeDefaulter.idl295
-rw-r--r--offapi/com/sun/star/drawing/XGluePointsSupplier.idl58
-rw-r--r--offapi/com/sun/star/drawing/XLayer.idl52
-rw-r--r--offapi/com/sun/star/drawing/XLayerManager.idl117
-rw-r--r--offapi/com/sun/star/drawing/XLayerSupplier.idl66
-rw-r--r--offapi/com/sun/star/drawing/XMasterPageTarget.idl74
-rw-r--r--offapi/com/sun/star/drawing/XMasterPagesSupplier.idl64
-rw-r--r--offapi/com/sun/star/drawing/XPresenterHelper.idl179
-rw-r--r--offapi/com/sun/star/drawing/XSelectionFunction.idl86
-rw-r--r--offapi/com/sun/star/drawing/XShape.idl102
-rw-r--r--offapi/com/sun/star/drawing/XShapeAligner.idl72
-rw-r--r--offapi/com/sun/star/drawing/XShapeArranger.idl121
-rw-r--r--offapi/com/sun/star/drawing/XShapeBinder.idl89
-rw-r--r--offapi/com/sun/star/drawing/XShapeCombiner.idl92
-rw-r--r--offapi/com/sun/star/drawing/XShapeDescriptor.idl61
-rw-r--r--offapi/com/sun/star/drawing/XShapeGroup.idl85
-rw-r--r--offapi/com/sun/star/drawing/XShapeGrouper.idl93
-rw-r--r--offapi/com/sun/star/drawing/XShapeMirror.idl83
-rw-r--r--offapi/com/sun/star/drawing/XShapes.idl80
-rw-r--r--offapi/com/sun/star/drawing/XSlidePreviewCache.idl143
-rw-r--r--offapi/com/sun/star/drawing/XSlideRenderer.idl112
-rw-r--r--offapi/com/sun/star/drawing/XUniversalShapeDescriptor.idl59
-rw-r--r--offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl54
-rw-r--r--offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl62
-rw-r--r--offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl65
-rw-r--r--offapi/com/sun/star/drawing/framework/BasicViewFactory.idl67
-rw-r--r--offapi/com/sun/star/drawing/framework/Configuration.idl58
-rw-r--r--offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl87
-rw-r--r--offapi/com/sun/star/drawing/framework/ConfigurationController.idl63
-rw-r--r--offapi/com/sun/star/drawing/framework/ModuleController.idl59
-rw-r--r--offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl54
-rw-r--r--offapi/com/sun/star/drawing/framework/ResourceId.idl70
-rw-r--r--offapi/com/sun/star/drawing/framework/TabBarButton.idl64
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfiguration.idl138
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl57
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl68
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationController.idl272
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl91
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl77
-rw-r--r--offapi/com/sun/star/drawing/framework/XControllerManager.idl63
-rw-r--r--offapi/com/sun/star/drawing/framework/XModuleController.idl67
-rw-r--r--offapi/com/sun/star/drawing/framework/XPane.idl75
-rw-r--r--offapi/com/sun/star/drawing/framework/XPane2.idl76
-rw-r--r--offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl161
-rw-r--r--offapi/com/sun/star/drawing/framework/XRelocatableResource.idl56
-rw-r--r--offapi/com/sun/star/drawing/framework/XResource.idl63
-rw-r--r--offapi/com/sun/star/drawing/framework/XResourceFactory.idl92
-rw-r--r--offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl98
-rw-r--r--offapi/com/sun/star/drawing/framework/XResourceId.idl157
-rw-r--r--offapi/com/sun/star/drawing/framework/XTabBar.idl106
-rw-r--r--offapi/com/sun/star/drawing/framework/XToolBar.idl48
-rw-r--r--offapi/com/sun/star/drawing/framework/XView.idl56
-rw-r--r--offapi/com/sun/star/drawing/framework/makefile.mk75
-rw-r--r--offapi/com/sun/star/drawing/makefile.mk227
-rw-r--r--offapi/com/sun/star/drawing/modules.idl65
-rw-r--r--offapi/com/sun/star/embed/Actions.idl70
-rw-r--r--offapi/com/sun/star/embed/Aspects.idl84
-rw-r--r--offapi/com/sun/star/embed/BaseStorage.idl82
-rw-r--r--offapi/com/sun/star/embed/DocumentCloser.idl88
-rw-r--r--offapi/com/sun/star/embed/ElementModes.idl116
-rw-r--r--offapi/com/sun/star/embed/EmbedMapUnits.idl112
-rw-r--r--offapi/com/sun/star/embed/EmbedMisc.idl188
-rw-r--r--offapi/com/sun/star/embed/EmbedStates.idl99
-rw-r--r--offapi/com/sun/star/embed/EmbedUpdateModes.idl68
-rw-r--r--offapi/com/sun/star/embed/EmbedVerbs.idl84
-rw-r--r--offapi/com/sun/star/embed/EmbeddedObjectDescriptor.idl114
-rw-r--r--offapi/com/sun/star/embed/EntryInitModes.idl81
-rw-r--r--offapi/com/sun/star/embed/FileSystemStorage.idl117
-rw-r--r--offapi/com/sun/star/embed/FileSystemStorageFactory.idl109
-rw-r--r--offapi/com/sun/star/embed/InsertedObjectInfo.idl71
-rw-r--r--offapi/com/sun/star/embed/InstanceLocker.idl117
-rw-r--r--offapi/com/sun/star/embed/InvalidStorageException.idl56
-rw-r--r--offapi/com/sun/star/embed/LinkageMisuseException.idl56
-rw-r--r--offapi/com/sun/star/embed/NeedsRunningStateException.idl59
-rw-r--r--offapi/com/sun/star/embed/NoVisualAreaSizeException.idl53
-rw-r--r--offapi/com/sun/star/embed/OLESimpleStorage.idl82
-rw-r--r--offapi/com/sun/star/embed/ObjectSaveVetoException.idl55
-rw-r--r--offapi/com/sun/star/embed/StateChangeInProgressException.idl62
-rw-r--r--offapi/com/sun/star/embed/Storage.idl367
-rw-r--r--offapi/com/sun/star/embed/StorageFactory.idl126
-rw-r--r--offapi/com/sun/star/embed/StorageFormats.idl65
-rw-r--r--offapi/com/sun/star/embed/StorageStream.idl239
-rw-r--r--offapi/com/sun/star/embed/StorageWrappedTargetException.idl53
-rw-r--r--offapi/com/sun/star/embed/UnreachableStateException.idl61
-rw-r--r--offapi/com/sun/star/embed/UseBackupException.idl66
-rw-r--r--offapi/com/sun/star/embed/VerbAttributes.idl59
-rw-r--r--offapi/com/sun/star/embed/VerbDescriptor.idl76
-rw-r--r--offapi/com/sun/star/embed/VisualRepresentation.idl61
-rw-r--r--offapi/com/sun/star/embed/WrongStateException.idl53
-rw-r--r--offapi/com/sun/star/embed/XActionsApproval.idl70
-rw-r--r--offapi/com/sun/star/embed/XClassifiedObject.idl86
-rw-r--r--offapi/com/sun/star/embed/XCommonEmbedPersist.idl136
-rw-r--r--offapi/com/sun/star/embed/XComponentSupplier.idl61
-rw-r--r--offapi/com/sun/star/embed/XEmbedObjectClipboardCreator.idl122
-rw-r--r--offapi/com/sun/star/embed/XEmbedObjectCreator.idl206
-rw-r--r--offapi/com/sun/star/embed/XEmbedObjectFactory.idl134
-rw-r--r--offapi/com/sun/star/embed/XEmbedPersist.idl275
-rw-r--r--offapi/com/sun/star/embed/XEmbeddedClient.idl90
-rw-r--r--offapi/com/sun/star/embed/XEmbeddedObject.idl306
-rw-r--r--offapi/com/sun/star/embed/XEncryptionProtectedSource.idl74
-rw-r--r--offapi/com/sun/star/embed/XExtendedStorageStream.idl134
-rw-r--r--offapi/com/sun/star/embed/XHatchWindow.idl75
-rw-r--r--offapi/com/sun/star/embed/XHatchWindowController.idl83
-rw-r--r--offapi/com/sun/star/embed/XHatchWindowFactory.idl91
-rw-r--r--offapi/com/sun/star/embed/XHierarchicalStorageAccess.idl235
-rw-r--r--offapi/com/sun/star/embed/XInplaceClient.idl242
-rw-r--r--offapi/com/sun/star/embed/XInplaceObject.idl133
-rw-r--r--offapi/com/sun/star/embed/XInsertObjectDialog.idl112
-rw-r--r--offapi/com/sun/star/embed/XLinkCreator.idl116
-rw-r--r--offapi/com/sun/star/embed/XLinkFactory.idl119
-rw-r--r--offapi/com/sun/star/embed/XLinkageSupport.idl146
-rw-r--r--offapi/com/sun/star/embed/XOLESimpleStorage.idl105
-rw-r--r--offapi/com/sun/star/embed/XOptimizedStorage.idl226
-rw-r--r--offapi/com/sun/star/embed/XPackageStructureCreator.idl71
-rw-r--r--offapi/com/sun/star/embed/XPersistanceHolder.idl88
-rw-r--r--offapi/com/sun/star/embed/XRelationshipAccess.idl283
-rw-r--r--offapi/com/sun/star/embed/XStateChangeBroadcaster.idl67
-rw-r--r--offapi/com/sun/star/embed/XStateChangeListener.idl102
-rw-r--r--offapi/com/sun/star/embed/XStorage.idl661
-rw-r--r--offapi/com/sun/star/embed/XStorageRawAccess.idl235
-rw-r--r--offapi/com/sun/star/embed/XTransactedObject.idl71
-rw-r--r--offapi/com/sun/star/embed/XTransactionBroadcaster.idl68
-rw-r--r--offapi/com/sun/star/embed/XTransactionListener.idl81
-rw-r--r--offapi/com/sun/star/embed/XTransferableSupplier.idl62
-rw-r--r--offapi/com/sun/star/embed/XVisualObject.idl179
-rw-r--r--offapi/com/sun/star/embed/XWindowSupplier.idl57
-rw-r--r--offapi/com/sun/star/embed/makefile.mk116
-rw-r--r--offapi/com/sun/star/form/DataAwareControlModel.idl195
-rw-r--r--offapi/com/sun/star/form/DataSelectionType.idl58
-rw-r--r--offapi/com/sun/star/form/DatabaseDeleteEvent.idl55
-rw-r--r--offapi/com/sun/star/form/DatabaseParameterEvent.idl70
-rw-r--r--offapi/com/sun/star/form/ErrorEvent.idl60
-rw-r--r--offapi/com/sun/star/form/FormButtonType.idl77
-rw-r--r--offapi/com/sun/star/form/FormComponent.idl129
-rw-r--r--offapi/com/sun/star/form/FormComponentType.idl144
-rw-r--r--offapi/com/sun/star/form/FormComponents.idl107
-rw-r--r--offapi/com/sun/star/form/FormControlModel.idl110
-rw-r--r--offapi/com/sun/star/form/FormController.idl114
-rw-r--r--offapi/com/sun/star/form/FormControllerDispatcher.idl57
-rw-r--r--offapi/com/sun/star/form/FormSubmitEncoding.idl71
-rw-r--r--offapi/com/sun/star/form/FormSubmitMethod.idl63
-rw-r--r--offapi/com/sun/star/form/Forms.idl72
-rw-r--r--offapi/com/sun/star/form/ListSourceType.idl89
-rw-r--r--offapi/com/sun/star/form/NavigationBarMode.idl83
-rw-r--r--offapi/com/sun/star/form/PropertyBrowserController.idl147
-rw-r--r--offapi/com/sun/star/form/TabulatorCycle.idl84
-rw-r--r--offapi/com/sun/star/form/XApproveActionBroadcaster.idl81
-rw-r--r--offapi/com/sun/star/form/XApproveActionListener.idl77
-rw-r--r--offapi/com/sun/star/form/XBoundComponent.idl75
-rw-r--r--offapi/com/sun/star/form/XBoundControl.idl74
-rw-r--r--offapi/com/sun/star/form/XChangeBroadcaster.idl85
-rw-r--r--offapi/com/sun/star/form/XChangeListener.idl73
-rw-r--r--offapi/com/sun/star/form/XConfirmDeleteBroadcaster.idl86
-rw-r--r--offapi/com/sun/star/form/XConfirmDeleteListener.idl71
-rw-r--r--offapi/com/sun/star/form/XDatabaseParameterBroadcaster.idl83
-rw-r--r--offapi/com/sun/star/form/XDatabaseParameterBroadcaster2.idl79
-rw-r--r--offapi/com/sun/star/form/XDatabaseParameterListener.idl72
-rw-r--r--offapi/com/sun/star/form/XDeleteListener.idl80
-rw-r--r--offapi/com/sun/star/form/XErrorBroadcaster.idl75
-rw-r--r--offapi/com/sun/star/form/XErrorListener.idl75
-rw-r--r--offapi/com/sun/star/form/XForm.idl59
-rw-r--r--offapi/com/sun/star/form/XFormComponent.idl59
-rw-r--r--offapi/com/sun/star/form/XFormController.idl67
-rw-r--r--offapi/com/sun/star/form/XFormControllerListener.idl84
-rw-r--r--offapi/com/sun/star/form/XFormsSupplier.idl105
-rw-r--r--offapi/com/sun/star/form/XFormsSupplier2.idl68
-rw-r--r--offapi/com/sun/star/form/XGrid.idl79
-rw-r--r--offapi/com/sun/star/form/XGridColumnFactory.idl93
-rw-r--r--offapi/com/sun/star/form/XGridControl.idl69
-rw-r--r--offapi/com/sun/star/form/XGridControlListener.idl57
-rw-r--r--offapi/com/sun/star/form/XGridFieldDataSupplier.idl97
-rw-r--r--offapi/com/sun/star/form/XGridPeer.idl80
-rw-r--r--offapi/com/sun/star/form/XImageProducerSupplier.idl69
-rw-r--r--offapi/com/sun/star/form/XInsertListener.idl77
-rw-r--r--offapi/com/sun/star/form/XLoadListener.idl114
-rw-r--r--offapi/com/sun/star/form/XLoadable.idl107
-rw-r--r--offapi/com/sun/star/form/XPositioningListener.idl70
-rw-r--r--offapi/com/sun/star/form/XReset.idl85
-rw-r--r--offapi/com/sun/star/form/XResetListener.idl91
-rw-r--r--offapi/com/sun/star/form/XRestoreListener.idl74
-rw-r--r--offapi/com/sun/star/form/XSubmit.idl106
-rw-r--r--offapi/com/sun/star/form/XSubmitListener.idl79
-rw-r--r--offapi/com/sun/star/form/XUpdateBroadcaster.idl84
-rw-r--r--offapi/com/sun/star/form/XUpdateListener.idl87
-rw-r--r--offapi/com/sun/star/form/binding/BindableControlModel.idl92
-rw-r--r--offapi/com/sun/star/form/binding/BindableDataAwareControlModel.idl132
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseCheckBox.idl95
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseComboBox.idl73
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseDateField.idl70
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseFormattedField.idl69
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseListBox.idl81
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseNumericField.idl69
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseRadioButton.idl92
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseTextField.idl72
-rw-r--r--offapi/com/sun/star/form/binding/BindableDatabaseTimeField.idl70
-rw-r--r--offapi/com/sun/star/form/binding/BindableIntegerValueRange.idl75
-rw-r--r--offapi/com/sun/star/form/binding/IncompatibleTypesException.idl54
-rw-r--r--offapi/com/sun/star/form/binding/InvalidBindingStateException.idl54
-rw-r--r--offapi/com/sun/star/form/binding/ListEntryEvent.idl74
-rw-r--r--offapi/com/sun/star/form/binding/ListEntrySource.idl74
-rw-r--r--offapi/com/sun/star/form/binding/ValueBinding.idl124
-rw-r--r--offapi/com/sun/star/form/binding/XBindableValue.idl78
-rw-r--r--offapi/com/sun/star/form/binding/XListEntryListener.idl89
-rw-r--r--offapi/com/sun/star/form/binding/XListEntrySink.idl68
-rw-r--r--offapi/com/sun/star/form/binding/XListEntrySource.idl100
-rw-r--r--offapi/com/sun/star/form/binding/XValueBinding.idl104
-rw-r--r--offapi/com/sun/star/form/binding/makefile.mk69
-rw-r--r--offapi/com/sun/star/form/component/CheckBox.idl92
-rw-r--r--offapi/com/sun/star/form/component/ComboBox.idl78
-rw-r--r--offapi/com/sun/star/form/component/CommandButton.idl116
-rw-r--r--offapi/com/sun/star/form/component/CurrencyField.idl77
-rw-r--r--offapi/com/sun/star/form/component/DataForm.idl232
-rw-r--r--offapi/com/sun/star/form/component/DatabaseCheckBox.idl64
-rw-r--r--offapi/com/sun/star/form/component/DatabaseComboBox.idl96
-rw-r--r--offapi/com/sun/star/form/component/DatabaseCurrencyField.idl59
-rw-r--r--offapi/com/sun/star/form/component/DatabaseDateField.idl59
-rw-r--r--offapi/com/sun/star/form/component/DatabaseFormattedField.idl73
-rw-r--r--offapi/com/sun/star/form/component/DatabaseImageControl.idl122
-rw-r--r--offapi/com/sun/star/form/component/DatabaseListBox.idl159
-rw-r--r--offapi/com/sun/star/form/component/DatabaseNumericField.idl59
-rw-r--r--offapi/com/sun/star/form/component/DatabasePatternField.idl74
-rw-r--r--offapi/com/sun/star/form/component/DatabaseRadioButton.idl59
-rw-r--r--offapi/com/sun/star/form/component/DatabaseTextField.idl73
-rw-r--r--offapi/com/sun/star/form/component/DatabaseTimeField.idl59
-rw-r--r--offapi/com/sun/star/form/component/DateField.idl81
-rw-r--r--offapi/com/sun/star/form/component/FileControl.idl78
-rw-r--r--offapi/com/sun/star/form/component/FixedText.idl64
-rw-r--r--offapi/com/sun/star/form/component/Form.idl93
-rw-r--r--offapi/com/sun/star/form/component/FormattedField.idl72
-rw-r--r--offapi/com/sun/star/form/component/GridControl.idl210
-rw-r--r--offapi/com/sun/star/form/component/GroupBox.idl60
-rw-r--r--offapi/com/sun/star/form/component/HTMLForm.idl106
-rw-r--r--offapi/com/sun/star/form/component/HiddenControl.idl65
-rw-r--r--offapi/com/sun/star/form/component/ImageButton.idl116
-rw-r--r--offapi/com/sun/star/form/component/ListBox.idl84
-rw-r--r--offapi/com/sun/star/form/component/NavigationToolBar.idl150
-rw-r--r--offapi/com/sun/star/form/component/NumericField.idl80
-rw-r--r--offapi/com/sun/star/form/component/PatternField.idl78
-rw-r--r--offapi/com/sun/star/form/component/RadioButton.idl112
-rw-r--r--offapi/com/sun/star/form/component/RichTextControl.idl91
-rw-r--r--offapi/com/sun/star/form/component/ScrollBar.idl78
-rw-r--r--offapi/com/sun/star/form/component/SpinButton.idl78
-rw-r--r--offapi/com/sun/star/form/component/SubmitButton.idl72
-rw-r--r--offapi/com/sun/star/form/component/TextField.idl89
-rw-r--r--offapi/com/sun/star/form/component/TimeField.idl81
-rw-r--r--offapi/com/sun/star/form/component/makefile.mk83
-rw-r--r--offapi/com/sun/star/form/control/CheckBox.idl70
-rw-r--r--offapi/com/sun/star/form/control/ComboBox.idl70
-rw-r--r--offapi/com/sun/star/form/control/CommandButton.idl88
-rw-r--r--offapi/com/sun/star/form/control/CurrencyField.idl71
-rw-r--r--offapi/com/sun/star/form/control/DateField.idl71
-rw-r--r--offapi/com/sun/star/form/control/FormattedField.idl76
-rw-r--r--offapi/com/sun/star/form/control/GridControl.idl172
-rw-r--r--offapi/com/sun/star/form/control/GroupBox.idl68
-rw-r--r--offapi/com/sun/star/form/control/ImageButton.idl88
-rw-r--r--offapi/com/sun/star/form/control/ImageControl.idl74
-rw-r--r--offapi/com/sun/star/form/control/InteractionGridControl.idl85
-rw-r--r--offapi/com/sun/star/form/control/ListBox.idl86
-rw-r--r--offapi/com/sun/star/form/control/NavigationToolBar.idl57
-rw-r--r--offapi/com/sun/star/form/control/NumericField.idl71
-rw-r--r--offapi/com/sun/star/form/control/PatternField.idl71
-rw-r--r--offapi/com/sun/star/form/control/RadioButton.idl70
-rw-r--r--offapi/com/sun/star/form/control/SubmitButton.idl88
-rw-r--r--offapi/com/sun/star/form/control/TextField.idl90
-rw-r--r--offapi/com/sun/star/form/control/TimeField.idl71
-rw-r--r--offapi/com/sun/star/form/control/makefile.mk64
-rw-r--r--offapi/com/sun/star/form/inspection/ButtonNavigationHandler.idl65
-rw-r--r--offapi/com/sun/star/form/inspection/CellBindingPropertyHandler.idl68
-rw-r--r--offapi/com/sun/star/form/inspection/DefaultFormComponentInspectorModel.idl101
-rw-r--r--offapi/com/sun/star/form/inspection/EditPropertyHandler.idl69
-rw-r--r--offapi/com/sun/star/form/inspection/EventHandler.idl63
-rw-r--r--offapi/com/sun/star/form/inspection/FormComponentPropertyHandler.idl56
-rw-r--r--offapi/com/sun/star/form/inspection/SubmissionPropertyHandler.idl67
-rw-r--r--offapi/com/sun/star/form/inspection/XMLFormsPropertyHandler.idl73
-rw-r--r--offapi/com/sun/star/form/inspection/XSDValidationPropertyHandler.idl77
-rw-r--r--offapi/com/sun/star/form/inspection/makefile.mk54
-rw-r--r--offapi/com/sun/star/form/makefile.mk104
-rw-r--r--offapi/com/sun/star/form/modules.idl68
-rw-r--r--offapi/com/sun/star/form/runtime/FeatureState.idl62
-rw-r--r--offapi/com/sun/star/form/runtime/FilterEvent.idl65
-rw-r--r--offapi/com/sun/star/form/runtime/FormController.idl52
-rw-r--r--offapi/com/sun/star/form/runtime/FormFeature.idl155
-rw-r--r--offapi/com/sun/star/form/runtime/FormOperations.idl91
-rw-r--r--offapi/com/sun/star/form/runtime/XFeatureInvalidation.idl76
-rw-r--r--offapi/com/sun/star/form/runtime/XFilterController.idl181
-rw-r--r--offapi/com/sun/star/form/runtime/XFilterControllerListener.idl85
-rw-r--r--offapi/com/sun/star/form/runtime/XFormController.idl374
-rw-r--r--offapi/com/sun/star/form/runtime/XFormControllerContext.idl58
-rw-r--r--offapi/com/sun/star/form/runtime/XFormOperations.idl284
-rw-r--r--offapi/com/sun/star/form/runtime/makefile.mk56
-rw-r--r--offapi/com/sun/star/form/submission/XSubmission.idl114
-rw-r--r--offapi/com/sun/star/form/submission/XSubmissionSupplier.idl60
-rw-r--r--offapi/com/sun/star/form/submission/XSubmissionVetoListener.idl71
-rw-r--r--offapi/com/sun/star/form/submission/makefile.mk48
-rw-r--r--offapi/com/sun/star/form/validation/ValidatableBindableControlModel.idl79
-rw-r--r--offapi/com/sun/star/form/validation/ValidatableControlModel.idl97
-rw-r--r--offapi/com/sun/star/form/validation/XFormComponentValidityListener.idl63
-rw-r--r--offapi/com/sun/star/form/validation/XValidatable.idl77
-rw-r--r--offapi/com/sun/star/form/validation/XValidatableFormComponent.idl126
-rw-r--r--offapi/com/sun/star/form/validation/XValidator.idl107
-rw-r--r--offapi/com/sun/star/form/validation/XValidityConstraintListener.idl60
-rw-r--r--offapi/com/sun/star/form/validation/makefile.mk53
-rw-r--r--offapi/com/sun/star/formula/AccessibleFormulaText.idl69
-rw-r--r--offapi/com/sun/star/formula/AccessibleFormulaView.idl70
-rw-r--r--offapi/com/sun/star/formula/FormulaProperties.idl347
-rw-r--r--offapi/com/sun/star/formula/SymbolDescriptor.idl113
-rw-r--r--offapi/com/sun/star/formula/makefile.mk49
-rw-r--r--offapi/com/sun/star/frame/BorderWidths.idl68
-rw-r--r--offapi/com/sun/star/frame/CommandGroup.idl179
-rw-r--r--offapi/com/sun/star/frame/Components.idl61
-rw-r--r--offapi/com/sun/star/frame/ContentHandler.idl70
-rw-r--r--offapi/com/sun/star/frame/ContentHandlerFactory.idl111
-rw-r--r--offapi/com/sun/star/frame/ControlCommand.idl67
-rw-r--r--offapi/com/sun/star/frame/ControlEvent.idl74
-rw-r--r--offapi/com/sun/star/frame/Controller.idl130
-rw-r--r--offapi/com/sun/star/frame/Desktop.idl100
-rw-r--r--offapi/com/sun/star/frame/DesktopTask.idl109
-rw-r--r--offapi/com/sun/star/frame/DesktopTasks.idl50
-rw-r--r--offapi/com/sun/star/frame/DispatchDescriptor.idl93
-rw-r--r--offapi/com/sun/star/frame/DispatchHelper.idl67
-rw-r--r--offapi/com/sun/star/frame/DispatchInformation.idl67
-rw-r--r--offapi/com/sun/star/frame/DispatchProvider.idl86
-rw-r--r--offapi/com/sun/star/frame/DispatchRecorder.idl75
-rw-r--r--offapi/com/sun/star/frame/DispatchRecorderSupplier.idl68
-rw-r--r--offapi/com/sun/star/frame/DispatchResultEvent.idl73
-rw-r--r--offapi/com/sun/star/frame/DispatchResultState.idl59
-rw-r--r--offapi/com/sun/star/frame/DispatchStatement.idl105
-rw-r--r--offapi/com/sun/star/frame/DocumentTemplates.idl55
-rw-r--r--offapi/com/sun/star/frame/DoubleInitializationException.idl54
-rw-r--r--offapi/com/sun/star/frame/FeatureStateEvent.idl95
-rw-r--r--offapi/com/sun/star/frame/Frame.idl206
-rw-r--r--offapi/com/sun/star/frame/FrameAction.idl151
-rw-r--r--offapi/com/sun/star/frame/FrameActionEvent.idl69
-rw-r--r--offapi/com/sun/star/frame/FrameControl.idl80
-rw-r--r--offapi/com/sun/star/frame/FrameLoader.idl99
-rw-r--r--offapi/com/sun/star/frame/FrameLoaderFactory.idl110
-rw-r--r--offapi/com/sun/star/frame/FrameSearchFlag.idl130
-rw-r--r--offapi/com/sun/star/frame/FramesContainer.idl61
-rw-r--r--offapi/com/sun/star/frame/GlobalEventBroadcaster.idl66
-rw-r--r--offapi/com/sun/star/frame/IllegalArgumentIOException.idl54
-rw-r--r--offapi/com/sun/star/frame/LayoutManager.idl132
-rw-r--r--offapi/com/sun/star/frame/LayoutManagerEvents.idl133
-rw-r--r--offapi/com/sun/star/frame/MediaTypeDetectionHelper.idl61
-rw-r--r--offapi/com/sun/star/frame/ModuleManager.idl78
-rw-r--r--offapi/com/sun/star/frame/PopupMenuController.idl153
-rw-r--r--offapi/com/sun/star/frame/PopupMenuControllerFactory.idl85
-rw-r--r--offapi/com/sun/star/frame/ProtocolHandler.idl97
-rw-r--r--offapi/com/sun/star/frame/SessionManager.idl84
-rw-r--r--offapi/com/sun/star/frame/Settings.idl50
-rw-r--r--offapi/com/sun/star/frame/StatusbarController.idl142
-rw-r--r--offapi/com/sun/star/frame/StatusbarControllerFactory.idl91
-rw-r--r--offapi/com/sun/star/frame/SynchronousFrameLoader.idl99
-rw-r--r--offapi/com/sun/star/frame/Task.idl78
-rw-r--r--offapi/com/sun/star/frame/TemplateAccess.idl62
-rw-r--r--offapi/com/sun/star/frame/TerminationVetoException.idl61
-rw-r--r--offapi/com/sun/star/frame/TitleChangedEvent.idl53
-rw-r--r--offapi/com/sun/star/frame/ToolbarController.idl146
-rw-r--r--offapi/com/sun/star/frame/TransientDocumentsDocumentContentFactory.idl56
-rw-r--r--offapi/com/sun/star/frame/UnknownModuleException.idl51
-rw-r--r--offapi/com/sun/star/frame/WindowArrange.idl74
-rw-r--r--offapi/com/sun/star/frame/XBorderResizeListener.idl66
-rw-r--r--offapi/com/sun/star/frame/XBrowseHistoryRegistry.idl66
-rw-r--r--offapi/com/sun/star/frame/XComponentLoader.idl192
-rw-r--r--offapi/com/sun/star/frame/XComponentRegistry.idl60
-rw-r--r--offapi/com/sun/star/frame/XConfigManager.idl118
-rw-r--r--offapi/com/sun/star/frame/XControlNotificationListener.idl65
-rw-r--r--offapi/com/sun/star/frame/XController.idl125
-rw-r--r--offapi/com/sun/star/frame/XController2.idl81
-rw-r--r--offapi/com/sun/star/frame/XControllerBorder.idl91
-rw-r--r--offapi/com/sun/star/frame/XDesktop.idl165
-rw-r--r--offapi/com/sun/star/frame/XDesktopTask.idl69
-rw-r--r--offapi/com/sun/star/frame/XDispatch.idl164
-rw-r--r--offapi/com/sun/star/frame/XDispatchHelper.idl96
-rw-r--r--offapi/com/sun/star/frame/XDispatchInformationProvider.idl91
-rw-r--r--offapi/com/sun/star/frame/XDispatchProvider.idl109
-rw-r--r--offapi/com/sun/star/frame/XDispatchProviderInterception.idl90
-rw-r--r--offapi/com/sun/star/frame/XDispatchProviderInterceptor.idl100
-rw-r--r--offapi/com/sun/star/frame/XDispatchRecorder.idl146
-rw-r--r--offapi/com/sun/star/frame/XDispatchRecorderSupplier.idl130
-rw-r--r--offapi/com/sun/star/frame/XDispatchResultListener.idl64
-rw-r--r--offapi/com/sun/star/frame/XDocumentTemplates.idl215
-rw-r--r--offapi/com/sun/star/frame/XExtendedFilterDetection.idl65
-rw-r--r--offapi/com/sun/star/frame/XFilterDetect.idl58
-rw-r--r--offapi/com/sun/star/frame/XFrame.idl388
-rw-r--r--offapi/com/sun/star/frame/XFrameActionListener.idl70
-rw-r--r--offapi/com/sun/star/frame/XFrameLoader.idl109
-rw-r--r--offapi/com/sun/star/frame/XFrameLoaderQuery.idl82
-rw-r--r--offapi/com/sun/star/frame/XFrameSetModel.idl58
-rw-r--r--offapi/com/sun/star/frame/XFrames.idl102
-rw-r--r--offapi/com/sun/star/frame/XFramesSupplier.idl106
-rw-r--r--offapi/com/sun/star/frame/XInplaceLayout.idl67
-rw-r--r--offapi/com/sun/star/frame/XInterceptorInfo.idl73
-rw-r--r--offapi/com/sun/star/frame/XLayoutManager.idl510
-rw-r--r--offapi/com/sun/star/frame/XLayoutManagerEventBroadcaster.idl68
-rw-r--r--offapi/com/sun/star/frame/XLayoutManagerListener.idl72
-rw-r--r--offapi/com/sun/star/frame/XLoadEventListener.idl68
-rw-r--r--offapi/com/sun/star/frame/XLoadable.idl85
-rw-r--r--offapi/com/sun/star/frame/XMenuBarAcceptor.idl68
-rw-r--r--offapi/com/sun/star/frame/XMenuBarMergingAcceptor.idl82
-rw-r--r--offapi/com/sun/star/frame/XModel.idl236
-rw-r--r--offapi/com/sun/star/frame/XModel2.idl152
-rw-r--r--offapi/com/sun/star/frame/XModule.idl79
-rw-r--r--offapi/com/sun/star/frame/XModuleManager.idl115
-rw-r--r--offapi/com/sun/star/frame/XNotifyingDispatch.idl73
-rw-r--r--offapi/com/sun/star/frame/XPopupMenuController.idl81
-rw-r--r--offapi/com/sun/star/frame/XRecordableDispatch.idl114
-rw-r--r--offapi/com/sun/star/frame/XSessionManagerClient.idl106
-rw-r--r--offapi/com/sun/star/frame/XSessionManagerListener.idl103
-rw-r--r--offapi/com/sun/star/frame/XSessionManagerListener2.idl53
-rw-r--r--offapi/com/sun/star/frame/XStatusListener.idl70
-rw-r--r--offapi/com/sun/star/frame/XStatusbarController.idl172
-rw-r--r--offapi/com/sun/star/frame/XStorable.idl176
-rw-r--r--offapi/com/sun/star/frame/XStorable2.idl92
-rw-r--r--offapi/com/sun/star/frame/XSubToolbarController.idl102
-rw-r--r--offapi/com/sun/star/frame/XSynchronousDispatch.idl77
-rw-r--r--offapi/com/sun/star/frame/XSynchronousFrameLoader.idl95
-rw-r--r--offapi/com/sun/star/frame/XTask.idl73
-rw-r--r--offapi/com/sun/star/frame/XTasksSupplier.idl70
-rw-r--r--offapi/com/sun/star/frame/XTerminateListener.idl89
-rw-r--r--offapi/com/sun/star/frame/XTerminateListener2.idl69
-rw-r--r--offapi/com/sun/star/frame/XTitle.idl62
-rw-r--r--offapi/com/sun/star/frame/XTitleChangeBroadcaster.idl62
-rw-r--r--offapi/com/sun/star/frame/XTitleChangeListener.idl57
-rw-r--r--offapi/com/sun/star/frame/XToolbarController.idl110
-rw-r--r--offapi/com/sun/star/frame/XToolbarControllerListener.idl64
-rw-r--r--offapi/com/sun/star/frame/XTransientDocumentsDocumentContentFactory.idl92
-rw-r--r--offapi/com/sun/star/frame/XUIControllerRegistration.idl107
-rw-r--r--offapi/com/sun/star/frame/XUntitledNumbers.idl118
-rw-r--r--offapi/com/sun/star/frame/XUrlList.idl52
-rw-r--r--offapi/com/sun/star/frame/XWindowArranger.idl59
-rw-r--r--offapi/com/sun/star/frame/makefile.mk166
-rw-r--r--offapi/com/sun/star/frame/status/ClipboardFormats.idl63
-rw-r--r--offapi/com/sun/star/frame/status/FontHeight.idl70
-rw-r--r--offapi/com/sun/star/frame/status/ItemState.idl85
-rw-r--r--offapi/com/sun/star/frame/status/ItemStatus.idl62
-rw-r--r--offapi/com/sun/star/frame/status/LeftRightMargin.idl58
-rw-r--r--offapi/com/sun/star/frame/status/Template.idl60
-rw-r--r--offapi/com/sun/star/frame/status/UpperLowerMargin.idl58
-rw-r--r--offapi/com/sun/star/frame/status/UpperLowerMarginScale.idl70
-rw-r--r--offapi/com/sun/star/frame/status/Verb.idl72
-rw-r--r--offapi/com/sun/star/frame/status/Visibility.idl53
-rw-r--r--offapi/com/sun/star/frame/status/makefile.mk55
-rw-r--r--offapi/com/sun/star/gallery/GalleryItem.idl100
-rw-r--r--offapi/com/sun/star/gallery/GalleryItemType.idl62
-rw-r--r--offapi/com/sun/star/gallery/GalleryTheme.idl57
-rw-r--r--offapi/com/sun/star/gallery/GalleryThemeProvider.idl73
-rw-r--r--offapi/com/sun/star/gallery/XGalleryItem.idl59
-rw-r--r--offapi/com/sun/star/gallery/XGalleryTheme.idl172
-rw-r--r--offapi/com/sun/star/gallery/XGalleryThemeProvider.idl94
-rw-r--r--offapi/com/sun/star/gallery/makefile.mk51
-rw-r--r--offapi/com/sun/star/geometry/AffineMatrix2D.idl93
-rw-r--r--offapi/com/sun/star/geometry/AffineMatrix3D.idl113
-rw-r--r--offapi/com/sun/star/geometry/EllipticalArc.idl94
-rw-r--r--offapi/com/sun/star/geometry/IntegerBezierSegment2D.idl67
-rw-r--r--offapi/com/sun/star/geometry/IntegerPoint2D.idl52
-rw-r--r--offapi/com/sun/star/geometry/IntegerRectangle2D.idl79
-rw-r--r--offapi/com/sun/star/geometry/IntegerSize2D.idl51
-rw-r--r--offapi/com/sun/star/geometry/Matrix2D.idl90
-rw-r--r--offapi/com/sun/star/geometry/RealBezierSegment2D.idl67
-rw-r--r--offapi/com/sun/star/geometry/RealPoint2D.idl52
-rw-r--r--offapi/com/sun/star/geometry/RealRectangle2D.idl79
-rw-r--r--offapi/com/sun/star/geometry/RealRectangle3D.idl79
-rw-r--r--offapi/com/sun/star/geometry/RealSize2D.idl51
-rw-r--r--offapi/com/sun/star/geometry/XMapping2D.idl72
-rw-r--r--offapi/com/sun/star/geometry/makefile.mk59
-rwxr-xr-xoffapi/com/sun/star/graphic/Graphic.idl62
-rw-r--r--offapi/com/sun/star/graphic/GraphicColorMode.idl59
-rwxr-xr-xoffapi/com/sun/star/graphic/GraphicDescriptor.idl151
-rw-r--r--offapi/com/sun/star/graphic/GraphicObject.idl63
-rwxr-xr-xoffapi/com/sun/star/graphic/GraphicProvider.idl53
-rwxr-xr-xoffapi/com/sun/star/graphic/GraphicRendererVCL.idl79
-rwxr-xr-xoffapi/com/sun/star/graphic/GraphicType.idl57
-rwxr-xr-xoffapi/com/sun/star/graphic/MediaProperties.idl128
-rwxr-xr-xoffapi/com/sun/star/graphic/XGraphic.idl65
-rw-r--r--offapi/com/sun/star/graphic/XGraphicObject.idl65
-rwxr-xr-xoffapi/com/sun/star/graphic/XGraphicProvider.idl119
-rwxr-xr-xoffapi/com/sun/star/graphic/XGraphicRenderer.idl54
-rw-r--r--offapi/com/sun/star/graphic/XGraphicTransformer.idl57
-rw-r--r--offapi/com/sun/star/graphic/XPrimitive2D.idl93
-rw-r--r--offapi/com/sun/star/graphic/XPrimitive3D.idl80
-rw-r--r--offapi/com/sun/star/graphic/XPrimitiveFactory2D.idl101
-rwxr-xr-xoffapi/com/sun/star/graphic/makefile.mk62
-rw-r--r--offapi/com/sun/star/i18n/AmPmValue.idl50
-rw-r--r--offapi/com/sun/star/i18n/Boundary.idl56
-rw-r--r--offapi/com/sun/star/i18n/BreakIterator.idl59
-rw-r--r--offapi/com/sun/star/i18n/BreakType.idl56
-rw-r--r--offapi/com/sun/star/i18n/CTLScriptType.idl68
-rw-r--r--offapi/com/sun/star/i18n/Calendar.idl68
-rw-r--r--offapi/com/sun/star/i18n/CalendarDisplayCode.idl90
-rw-r--r--offapi/com/sun/star/i18n/CalendarDisplayIndex.idl58
-rw-r--r--offapi/com/sun/star/i18n/CalendarFieldIndex.idl137
-rw-r--r--offapi/com/sun/star/i18n/CalendarItem.idl60
-rw-r--r--offapi/com/sun/star/i18n/ChapterCollator.idl49
-rw-r--r--offapi/com/sun/star/i18n/CharType.idl85
-rw-r--r--offapi/com/sun/star/i18n/CharacterClassification.idl55
-rw-r--r--offapi/com/sun/star/i18n/CharacterIteratorMode.idl57
-rw-r--r--offapi/com/sun/star/i18n/Collator.idl55
-rw-r--r--offapi/com/sun/star/i18n/CollatorOptions.idl53
-rw-r--r--offapi/com/sun/star/i18n/Currency.idl84
-rw-r--r--offapi/com/sun/star/i18n/Currency2.idl68
-rw-r--r--offapi/com/sun/star/i18n/DirectionProperty.idl67
-rw-r--r--offapi/com/sun/star/i18n/ForbiddenCharacters.idl57
-rw-r--r--offapi/com/sun/star/i18n/FormatElement.idl77
-rw-r--r--offapi/com/sun/star/i18n/Implementation.idl55
-rw-r--r--offapi/com/sun/star/i18n/IndexEntrySupplier.idl53
-rw-r--r--offapi/com/sun/star/i18n/InputSequenceCheckMode.idl61
-rw-r--r--offapi/com/sun/star/i18n/InputSequenceChecker.idl55
-rw-r--r--offapi/com/sun/star/i18n/KCharacterType.idl78
-rw-r--r--offapi/com/sun/star/i18n/KNumberFormatType.idl54
-rw-r--r--offapi/com/sun/star/i18n/KNumberFormatUsage.idl63
-rw-r--r--offapi/com/sun/star/i18n/KParseTokens.idl178
-rw-r--r--offapi/com/sun/star/i18n/KParseType.idl92
-rw-r--r--offapi/com/sun/star/i18n/LanguageCountryInfo.idl63
-rw-r--r--offapi/com/sun/star/i18n/LineBreakHyphenationOptions.idl59
-rw-r--r--offapi/com/sun/star/i18n/LineBreakResults.idl57
-rw-r--r--offapi/com/sun/star/i18n/LineBreakUserOptions.idl62
-rw-r--r--offapi/com/sun/star/i18n/LocaleCalendar.idl53
-rw-r--r--offapi/com/sun/star/i18n/LocaleData.idl52
-rw-r--r--offapi/com/sun/star/i18n/LocaleDataItem.idl85
-rw-r--r--offapi/com/sun/star/i18n/LocaleItem.idl102
-rw-r--r--offapi/com/sun/star/i18n/Months.idl72
-rw-r--r--offapi/com/sun/star/i18n/MultipleCharsOutputException.idl58
-rw-r--r--offapi/com/sun/star/i18n/NativeNumberMode.idl144
-rw-r--r--offapi/com/sun/star/i18n/NativeNumberSupplier.idl53
-rw-r--r--offapi/com/sun/star/i18n/NativeNumberXmlAttributes.idl68
-rw-r--r--offapi/com/sun/star/i18n/NumberFormatCode.idl62
-rw-r--r--offapi/com/sun/star/i18n/NumberFormatIndex.idl280
-rw-r--r--offapi/com/sun/star/i18n/NumberFormatMapper.idl52
-rw-r--r--offapi/com/sun/star/i18n/OrdinalSuffix.idl59
-rw-r--r--offapi/com/sun/star/i18n/ParseResult.idl83
-rw-r--r--offapi/com/sun/star/i18n/ScriptDirection.idl60
-rw-r--r--offapi/com/sun/star/i18n/ScriptType.idl61
-rw-r--r--offapi/com/sun/star/i18n/TextConversion.idl57
-rw-r--r--offapi/com/sun/star/i18n/TextConversionOption.idl71
-rw-r--r--offapi/com/sun/star/i18n/TextConversionResult.idl67
-rw-r--r--offapi/com/sun/star/i18n/TextConversionType.idl64
-rw-r--r--offapi/com/sun/star/i18n/Transliteration.idl53
-rw-r--r--offapi/com/sun/star/i18n/TransliterationModules.idl119
-rw-r--r--offapi/com/sun/star/i18n/TransliterationModulesExtra.idl76
-rw-r--r--offapi/com/sun/star/i18n/TransliterationModulesNew.idl175
-rw-r--r--offapi/com/sun/star/i18n/TransliterationType.idl81
-rw-r--r--offapi/com/sun/star/i18n/UnicodeScript.idl136
-rw-r--r--offapi/com/sun/star/i18n/UnicodeType.idl79
-rw-r--r--offapi/com/sun/star/i18n/Weekdays.idl65
-rw-r--r--offapi/com/sun/star/i18n/WordType.idl73
-rw-r--r--offapi/com/sun/star/i18n/XBreakIterator.idl374
-rw-r--r--offapi/com/sun/star/i18n/XCalendar.idl228
-rw-r--r--offapi/com/sun/star/i18n/XCharacterClassification.idl286
-rw-r--r--offapi/com/sun/star/i18n/XCollator.idl174
-rw-r--r--offapi/com/sun/star/i18n/XExtendedCalendar.idl85
-rw-r--r--offapi/com/sun/star/i18n/XExtendedIndexEntrySupplier.idl157
-rw-r--r--offapi/com/sun/star/i18n/XExtendedInputSequenceChecker.idl64
-rw-r--r--offapi/com/sun/star/i18n/XExtendedTextConversion.idl82
-rw-r--r--offapi/com/sun/star/i18n/XExtendedTransliteration.idl105
-rw-r--r--offapi/com/sun/star/i18n/XForbiddenCharacters.idl86
-rw-r--r--offapi/com/sun/star/i18n/XIndexEntrySupplier.idl78
-rw-r--r--offapi/com/sun/star/i18n/XInputSequenceChecker.idl60
-rw-r--r--offapi/com/sun/star/i18n/XLocaleData.idl137
-rw-r--r--offapi/com/sun/star/i18n/XLocaleData2.idl62
-rw-r--r--offapi/com/sun/star/i18n/XNativeNumberSupplier.idl95
-rw-r--r--offapi/com/sun/star/i18n/XNumberFormatCode.idl97
-rw-r--r--offapi/com/sun/star/i18n/XOrdinalSuffix.idl70
-rw-r--r--offapi/com/sun/star/i18n/XScriptTypeDetector.idl91
-rw-r--r--offapi/com/sun/star/i18n/XTextConversion.idl161
-rw-r--r--offapi/com/sun/star/i18n/XTransliteration.idl331
-rw-r--r--offapi/com/sun/star/i18n/makefile.mk129
-rw-r--r--offapi/com/sun/star/i18n/reservedWords.idl80
-rw-r--r--offapi/com/sun/star/image/ImageMap.idl64
-rw-r--r--offapi/com/sun/star/image/ImageMapCircleObject.idl65
-rw-r--r--offapi/com/sun/star/image/ImageMapObject.idl84
-rw-r--r--offapi/com/sun/star/image/ImageMapPolygonObject.idl63
-rw-r--r--offapi/com/sun/star/image/ImageMapRectangleObject.idl62
-rw-r--r--offapi/com/sun/star/image/makefile.mk50
-rw-r--r--offapi/com/sun/star/inspection/DefaultHelpProvider.idl71
-rw-r--r--offapi/com/sun/star/inspection/GenericPropertyHandler.idl63
-rw-r--r--offapi/com/sun/star/inspection/InteractiveSelectionResult.idl76
-rw-r--r--offapi/com/sun/star/inspection/LineDescriptor.idl201
-rw-r--r--offapi/com/sun/star/inspection/ObjectInspector.idl111
-rw-r--r--offapi/com/sun/star/inspection/ObjectInspectorModel.idl121
-rw-r--r--offapi/com/sun/star/inspection/PropertyCategoryDescriptor.idl67
-rw-r--r--offapi/com/sun/star/inspection/PropertyControlType.idl153
-rw-r--r--offapi/com/sun/star/inspection/PropertyLineElement.idl61
-rw-r--r--offapi/com/sun/star/inspection/XHyperlinkControl.idl69
-rw-r--r--offapi/com/sun/star/inspection/XNumericControl.idl98
-rw-r--r--offapi/com/sun/star/inspection/XObjectInspector.idl133
-rw-r--r--offapi/com/sun/star/inspection/XObjectInspectorModel.idl192
-rw-r--r--offapi/com/sun/star/inspection/XObjectInspectorUI.idl187
-rw-r--r--offapi/com/sun/star/inspection/XPropertyControl.idl120
-rw-r--r--offapi/com/sun/star/inspection/XPropertyControlContext.idl60
-rw-r--r--offapi/com/sun/star/inspection/XPropertyControlFactory.idl81
-rw-r--r--offapi/com/sun/star/inspection/XPropertyControlObserver.idl75
-rw-r--r--offapi/com/sun/star/inspection/XPropertyHandler.idl471
-rw-r--r--offapi/com/sun/star/inspection/XStringListControl.idl73
-rw-r--r--offapi/com/sun/star/inspection/XStringRepresentation.idl76
-rw-r--r--offapi/com/sun/star/inspection/makefile.mk66
-rw-r--r--offapi/com/sun/star/installation/InstallationCheck.idl64
-rw-r--r--offapi/com/sun/star/installation/InstallationCheckService.idl61
-rw-r--r--offapi/com/sun/star/installation/InternetSettings.idl52
-rw-r--r--offapi/com/sun/star/installation/ProtDlgRes.idl72
-rw-r--r--offapi/com/sun/star/installation/ProtocolHandlerCheck.idl52
-rw-r--r--offapi/com/sun/star/installation/ProtocolHandlerCheckService.idl52
-rw-r--r--offapi/com/sun/star/installation/XInstallationCheck.idl114
-rw-r--r--offapi/com/sun/star/installation/XProtocolHandlerCheck.idl91
-rw-r--r--offapi/com/sun/star/installation/makefile.mk55
-rw-r--r--offapi/com/sun/star/installation/protocols.idl94
-rw-r--r--offapi/com/sun/star/ldap/LdapConnectionException.idl49
-rw-r--r--offapi/com/sun/star/ldap/LdapGenericException.idl55
-rw-r--r--offapi/com/sun/star/ldap/makefile.mk47
-rw-r--r--offapi/com/sun/star/linguistic2/ConversionDictionary.idl81
-rw-r--r--offapi/com/sun/star/linguistic2/ConversionDictionaryList.idl70
-rw-r--r--offapi/com/sun/star/linguistic2/ConversionDictionaryType.idl56
-rw-r--r--offapi/com/sun/star/linguistic2/ConversionDirection.idl57
-rw-r--r--offapi/com/sun/star/linguistic2/ConversionPropertyType.idl114
-rw-r--r--offapi/com/sun/star/linguistic2/Dictionary.idl82
-rw-r--r--offapi/com/sun/star/linguistic2/DictionaryEvent.idl83
-rw-r--r--offapi/com/sun/star/linguistic2/DictionaryEventFlags.idl86
-rw-r--r--offapi/com/sun/star/linguistic2/DictionaryList.idl64
-rw-r--r--offapi/com/sun/star/linguistic2/DictionaryListEvent.idl95
-rw-r--r--offapi/com/sun/star/linguistic2/DictionaryListEventFlags.idl102
-rw-r--r--offapi/com/sun/star/linguistic2/DictionaryType.idl71
-rw-r--r--offapi/com/sun/star/linguistic2/HangulHanjaConversionDictionary.idl60
-rw-r--r--offapi/com/sun/star/linguistic2/Hyphenator.idl67
-rw-r--r--offapi/com/sun/star/linguistic2/LanguageGuessing.idl44
-rw-r--r--offapi/com/sun/star/linguistic2/LinguProperties.idl183
-rw-r--r--offapi/com/sun/star/linguistic2/LinguServiceEvent.idl71
-rw-r--r--offapi/com/sun/star/linguistic2/LinguServiceEventFlags.idl73
-rw-r--r--offapi/com/sun/star/linguistic2/LinguServiceManager.idl60
-rw-r--r--offapi/com/sun/star/linguistic2/Proofreader.idl63
-rw-r--r--offapi/com/sun/star/linguistic2/ProofreadingIterator.idl57
-rw-r--r--offapi/com/sun/star/linguistic2/ProofreadingResult.idl99
-rw-r--r--offapi/com/sun/star/linguistic2/SingleProofreadingError.idl81
-rw-r--r--offapi/com/sun/star/linguistic2/SpellChecker.idl67
-rw-r--r--offapi/com/sun/star/linguistic2/SpellFailure.idl68
-rw-r--r--offapi/com/sun/star/linguistic2/Thesaurus.idl65
-rw-r--r--offapi/com/sun/star/linguistic2/XAvailableLocales.idl66
-rw-r--r--offapi/com/sun/star/linguistic2/XConversionDictionary.idl243
-rw-r--r--offapi/com/sun/star/linguistic2/XConversionDictionaryList.idl219
-rw-r--r--offapi/com/sun/star/linguistic2/XConversionPropertyType.idl110
-rw-r--r--offapi/com/sun/star/linguistic2/XDictionary.idl275
-rw-r--r--offapi/com/sun/star/linguistic2/XDictionary1.idl112
-rw-r--r--offapi/com/sun/star/linguistic2/XDictionaryEntry.idl97
-rw-r--r--offapi/com/sun/star/linguistic2/XDictionaryEventListener.idl72
-rw-r--r--offapi/com/sun/star/linguistic2/XDictionaryList.idl261
-rw-r--r--offapi/com/sun/star/linguistic2/XDictionaryListEventListener.idl74
-rw-r--r--offapi/com/sun/star/linguistic2/XHyphenatedWord.idl117
-rw-r--r--offapi/com/sun/star/linguistic2/XHyphenator.idl215
-rw-r--r--offapi/com/sun/star/linguistic2/XLanguageGuessing.idl203
-rw-r--r--offapi/com/sun/star/linguistic2/XLinguServiceEventBroadcaster.idl93
-rw-r--r--offapi/com/sun/star/linguistic2/XLinguServiceEventListener.idl71
-rw-r--r--offapi/com/sun/star/linguistic2/XLinguServiceManager.idl194
-rw-r--r--offapi/com/sun/star/linguistic2/XMeaning.idl72
-rw-r--r--offapi/com/sun/star/linguistic2/XPossibleHyphens.idl102
-rw-r--r--offapi/com/sun/star/linguistic2/XProofreader.idl129
-rw-r--r--offapi/com/sun/star/linguistic2/XProofreadingIterator.idl127
-rw-r--r--offapi/com/sun/star/linguistic2/XSearchableDictionary.idl71
-rw-r--r--offapi/com/sun/star/linguistic2/XSearchableDictionaryList.idl95
-rw-r--r--offapi/com/sun/star/linguistic2/XSetSpellAlternatives.idl74
-rw-r--r--offapi/com/sun/star/linguistic2/XSpellAlternatives.idl100
-rw-r--r--offapi/com/sun/star/linguistic2/XSpellChecker.idl137
-rw-r--r--offapi/com/sun/star/linguistic2/XSpellChecker1.idl81
-rw-r--r--offapi/com/sun/star/linguistic2/XSupportedLanguages.idl60
-rw-r--r--offapi/com/sun/star/linguistic2/XSupportedLocales.idl85
-rw-r--r--offapi/com/sun/star/linguistic2/XThesaurus.idl99
-rw-r--r--offapi/com/sun/star/linguistic2/makefile.mk101
-rw-r--r--offapi/com/sun/star/logging/ConsoleHandler.idl82
-rw-r--r--offapi/com/sun/star/logging/CsvLogFormatter.idl63
-rw-r--r--offapi/com/sun/star/logging/DocumentIOLogRing.idl63
-rw-r--r--offapi/com/sun/star/logging/FileHandler.idl97
-rw-r--r--offapi/com/sun/star/logging/LogLevel.idl87
-rw-r--r--offapi/com/sun/star/logging/LogRecord.idl96
-rw-r--r--offapi/com/sun/star/logging/LoggerPool.idl34
-rw-r--r--offapi/com/sun/star/logging/PlainTextFormatter.idl60
-rw-r--r--offapi/com/sun/star/logging/SimpleLogRing.idl69
-rw-r--r--offapi/com/sun/star/logging/XConsoleHandler.idl67
-rw-r--r--offapi/com/sun/star/logging/XCsvLogFormatter.idl83
-rw-r--r--offapi/com/sun/star/logging/XLogFormatter.idl88
-rw-r--r--offapi/com/sun/star/logging/XLogHandler.idl110
-rw-r--r--offapi/com/sun/star/logging/XLogger.idl148
-rw-r--r--offapi/com/sun/star/logging/XLoggerPool.idl73
-rw-r--r--offapi/com/sun/star/logging/XSimpleLogRing.idl74
-rw-r--r--offapi/com/sun/star/logging/makefile.mk55
-rw-r--r--offapi/com/sun/star/mail/MailAttachment.idl67
-rw-r--r--offapi/com/sun/star/mail/MailException.idl49
-rw-r--r--offapi/com/sun/star/mail/MailMessage.idl111
-rw-r--r--offapi/com/sun/star/mail/MailServer.idl65
-rw-r--r--offapi/com/sun/star/mail/MailServiceProvider.idl62
-rw-r--r--offapi/com/sun/star/mail/MailServiceType.idl50
-rw-r--r--offapi/com/sun/star/mail/NoMailServiceProviderException.idl52
-rw-r--r--offapi/com/sun/star/mail/NoMailTransportProviderException.idl52
-rw-r--r--offapi/com/sun/star/mail/SendMailMessageFailedException.idl68
-rw-r--r--offapi/com/sun/star/mail/XAuthenticator.idl66
-rw-r--r--offapi/com/sun/star/mail/XConnectionListener.idl73
-rw-r--r--offapi/com/sun/star/mail/XMailMessage.idl158
-rw-r--r--offapi/com/sun/star/mail/XMailServer.idl279
-rw-r--r--offapi/com/sun/star/mail/XMailService.idl229
-rw-r--r--offapi/com/sun/star/mail/XMailServiceProvider.idl70
-rw-r--r--offapi/com/sun/star/mail/XSmtpService.idl107
-rw-r--r--offapi/com/sun/star/mail/makefile.mk58
-rw-r--r--offapi/com/sun/star/makefile.mk46
-rw-r--r--offapi/com/sun/star/media/Manager.idl42
-rw-r--r--offapi/com/sun/star/media/XFrameGrabber.idl51
-rw-r--r--offapi/com/sun/star/media/XManager.idl53
-rw-r--r--offapi/com/sun/star/media/XPlayer.idl182
-rw-r--r--offapi/com/sun/star/media/XPlayerWindow.idl65
-rw-r--r--offapi/com/sun/star/media/ZoomLevel.idl94
-rw-r--r--offapi/com/sun/star/media/makefile.mk50
-rw-r--r--offapi/com/sun/star/modules.idl259
-rw-r--r--offapi/com/sun/star/mozilla/MenuMultipleChange.idl116
-rw-r--r--offapi/com/sun/star/mozilla/MenuProxy.idl63
-rw-r--r--offapi/com/sun/star/mozilla/MenuProxyListener.idl62
-rw-r--r--offapi/com/sun/star/mozilla/MenuSingleChange.idl74
-rw-r--r--offapi/com/sun/star/mozilla/MozillaBootstrap.idl62
-rw-r--r--offapi/com/sun/star/mozilla/MozillaProductType.idl64
-rw-r--r--offapi/com/sun/star/mozilla/XCloseSessionListener.idl62
-rw-r--r--offapi/com/sun/star/mozilla/XCodeProxy.idl67
-rw-r--r--offapi/com/sun/star/mozilla/XMenuProxy.idl91
-rw-r--r--offapi/com/sun/star/mozilla/XMenuProxyListener.idl89
-rw-r--r--offapi/com/sun/star/mozilla/XMozillaBootstrap.idl69
-rw-r--r--offapi/com/sun/star/mozilla/XPluginInstance.idl146
-rw-r--r--offapi/com/sun/star/mozilla/XPluginInstanceNotifySink.idl65
-rw-r--r--offapi/com/sun/star/mozilla/XPluginInstancePeer.idl170
-rw-r--r--offapi/com/sun/star/mozilla/XPluginInstanceSyncPeer.idl73
-rw-r--r--offapi/com/sun/star/mozilla/XPluginWindowPeer.idl62
-rw-r--r--offapi/com/sun/star/mozilla/XProfileDiscover.idl127
-rw-r--r--offapi/com/sun/star/mozilla/XProfileManager.idl116
-rw-r--r--offapi/com/sun/star/mozilla/XProxyRunner.idl69
-rw-r--r--offapi/com/sun/star/mozilla/XRemoteServiceManagerProvider.idl61
-rw-r--r--offapi/com/sun/star/mozilla/makefile.mk67
-rw-r--r--offapi/com/sun/star/office/XAnnotation.idl102
-rw-r--r--offapi/com/sun/star/office/XAnnotationAccess.idl72
-rw-r--r--offapi/com/sun/star/office/XAnnotationEnumeration.idl71
-rw-r--r--offapi/com/sun/star/office/makefile.mk47
-rw-r--r--offapi/com/sun/star/oooimprovement/Core.idl55
-rw-r--r--offapi/com/sun/star/oooimprovement/CoreController.idl56
-rw-r--r--offapi/com/sun/star/oooimprovement/XCore.idl59
-rw-r--r--offapi/com/sun/star/oooimprovement/XCoreController.idl57
-rw-r--r--offapi/com/sun/star/oooimprovement/makefile.mk44
-rw-r--r--offapi/com/sun/star/packages/EncryptionNotAllowedException.idl53
-rw-r--r--offapi/com/sun/star/packages/NoEncryptionException.idl53
-rw-r--r--offapi/com/sun/star/packages/NoRawFormatException.idl54
-rw-r--r--offapi/com/sun/star/packages/Package.idl126
-rw-r--r--offapi/com/sun/star/packages/PackageFolder.idl108
-rw-r--r--offapi/com/sun/star/packages/PackageFolderEnumeration.idl54
-rw-r--r--offapi/com/sun/star/packages/PackageStream.idl95
-rw-r--r--offapi/com/sun/star/packages/WrongPasswordException.idl53
-rw-r--r--offapi/com/sun/star/packages/XDataSinkEncrSupport.idl171
-rw-r--r--offapi/com/sun/star/packages/makefile.mk55
-rw-r--r--offapi/com/sun/star/packages/manifest/XManifestReader.idl56
-rw-r--r--offapi/com/sun/star/packages/manifest/XManifestWriter.idl57
-rw-r--r--offapi/com/sun/star/packages/manifest/makefile.mk47
-rw-r--r--offapi/com/sun/star/packages/zip/XZipFileAccess.idl79
-rw-r--r--offapi/com/sun/star/packages/zip/ZipConstants.idl311
-rw-r--r--offapi/com/sun/star/packages/zip/ZipEntry.idl122
-rw-r--r--offapi/com/sun/star/packages/zip/ZipException.idl60
-rw-r--r--offapi/com/sun/star/packages/zip/ZipFileAccess.idl72
-rwxr-xr-xoffapi/com/sun/star/packages/zip/ZipIOException.idl55
-rw-r--r--offapi/com/sun/star/packages/zip/makefile.mk51
-rw-r--r--offapi/com/sun/star/plugin/PluginDescription.idl56
-rw-r--r--offapi/com/sun/star/plugin/PluginException.idl57
-rw-r--r--offapi/com/sun/star/plugin/PluginManager.idl52
-rw-r--r--offapi/com/sun/star/plugin/PluginMode.idl49
-rw-r--r--offapi/com/sun/star/plugin/PluginVariable.idl57
-rw-r--r--offapi/com/sun/star/plugin/XPlugin.idl82
-rw-r--r--offapi/com/sun/star/plugin/XPluginContext.idl198
-rw-r--r--offapi/com/sun/star/plugin/XPluginManager.idl137
-rw-r--r--offapi/com/sun/star/plugin/makefile.mk53
-rw-r--r--offapi/com/sun/star/presentation/AnimationEffect.idl944
-rw-r--r--offapi/com/sun/star/presentation/AnimationSpeed.idl65
-rw-r--r--offapi/com/sun/star/presentation/ChartShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/ClickAction.idl132
-rw-r--r--offapi/com/sun/star/presentation/CustomPresentation.idl68
-rw-r--r--offapi/com/sun/star/presentation/CustomPresentationAccess.idl71
-rw-r--r--offapi/com/sun/star/presentation/DateTimeShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/DocumentSettings.idl120
-rw-r--r--offapi/com/sun/star/presentation/DrawPage.idl177
-rw-r--r--offapi/com/sun/star/presentation/EffectCommands.idl76
-rw-r--r--offapi/com/sun/star/presentation/EffectNodeType.idl81
-rw-r--r--offapi/com/sun/star/presentation/EffectPresetClass.idl81
-rw-r--r--offapi/com/sun/star/presentation/FadeEffect.idl388
-rw-r--r--offapi/com/sun/star/presentation/FooterShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/GraphicObjectShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/HandoutShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/HandoutView.idl59
-rw-r--r--offapi/com/sun/star/presentation/HeaderShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/NotesShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/NotesView.idl59
-rw-r--r--offapi/com/sun/star/presentation/OLE2Shape.idl62
-rw-r--r--offapi/com/sun/star/presentation/OutlineView.idl109
-rw-r--r--offapi/com/sun/star/presentation/OutlinerShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/PageShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/ParagraphTarget.idl58
-rw-r--r--offapi/com/sun/star/presentation/Presentation.idl159
-rw-r--r--offapi/com/sun/star/presentation/Presentation2.idl65
-rw-r--r--offapi/com/sun/star/presentation/PresentationDocument.idl105
-rw-r--r--offapi/com/sun/star/presentation/PresentationRange.idl63
-rw-r--r--offapi/com/sun/star/presentation/PresentationView.idl117
-rw-r--r--offapi/com/sun/star/presentation/PreviewView.idl119
-rw-r--r--offapi/com/sun/star/presentation/Shape.idl180
-rw-r--r--offapi/com/sun/star/presentation/ShapeAnimationSubType.idl66
-rw-r--r--offapi/com/sun/star/presentation/SlideNumberShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/SlidesView.idl110
-rw-r--r--offapi/com/sun/star/presentation/SubtitleShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/TextAnimationType.idl63
-rw-r--r--offapi/com/sun/star/presentation/TitleTextShape.idl62
-rw-r--r--offapi/com/sun/star/presentation/XCustomPresentationSupplier.idl66
-rw-r--r--offapi/com/sun/star/presentation/XHandoutMasterSupplier.idl58
-rw-r--r--offapi/com/sun/star/presentation/XPresentation.idl72
-rw-r--r--offapi/com/sun/star/presentation/XPresentation2.idl99
-rw-r--r--offapi/com/sun/star/presentation/XPresentationPage.idl61
-rw-r--r--offapi/com/sun/star/presentation/XPresentationSupplier.idl62
-rw-r--r--offapi/com/sun/star/presentation/XShapeEventListener.idl66
-rw-r--r--offapi/com/sun/star/presentation/XSlideShow.idl378
-rw-r--r--offapi/com/sun/star/presentation/XSlideShowController.idl308
-rw-r--r--offapi/com/sun/star/presentation/XSlideShowListener.idl80
-rw-r--r--offapi/com/sun/star/presentation/XSlideShowView.idl187
-rw-r--r--offapi/com/sun/star/presentation/XTransition.idl64
-rw-r--r--offapi/com/sun/star/presentation/XTransitionFactory.idl92
-rw-r--r--offapi/com/sun/star/presentation/makefile.mk96
-rw-r--r--offapi/com/sun/star/presentation/textfield/DateTime.idl51
-rw-r--r--offapi/com/sun/star/presentation/textfield/Footer.idl51
-rw-r--r--offapi/com/sun/star/presentation/textfield/Header.idl51
-rw-r--r--offapi/com/sun/star/presentation/textfield/makefile.mk48
-rw-r--r--offapi/com/sun/star/rdf/BlankNode.idl82
-rw-r--r--offapi/com/sun/star/rdf/FileFormat.idl82
-rw-r--r--offapi/com/sun/star/rdf/Literal.idl92
-rw-r--r--offapi/com/sun/star/rdf/ParseException.idl55
-rw-r--r--offapi/com/sun/star/rdf/QueryException.idl56
-rw-r--r--offapi/com/sun/star/rdf/Repository.idl60
-rw-r--r--offapi/com/sun/star/rdf/RepositoryException.idl56
-rw-r--r--offapi/com/sun/star/rdf/Statement.idl63
-rw-r--r--offapi/com/sun/star/rdf/URI.idl102
-rw-r--r--offapi/com/sun/star/rdf/URIs.idl333
-rw-r--r--offapi/com/sun/star/rdf/XBlankNode.idl60
-rw-r--r--offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl452
-rw-r--r--offapi/com/sun/star/rdf/XDocumentRepository.idl243
-rw-r--r--offapi/com/sun/star/rdf/XLiteral.idl72
-rw-r--r--offapi/com/sun/star/rdf/XMetadatable.idl106
-rw-r--r--offapi/com/sun/star/rdf/XNamedGraph.idl229
-rw-r--r--offapi/com/sun/star/rdf/XNode.idl79
-rw-r--r--offapi/com/sun/star/rdf/XQuerySelectResult.idl76
-rw-r--r--offapi/com/sun/star/rdf/XReifiedStatement.idl57
-rw-r--r--offapi/com/sun/star/rdf/XRepository.idl465
-rw-r--r--offapi/com/sun/star/rdf/XRepositorySupplier.idl63
-rw-r--r--offapi/com/sun/star/rdf/XResource.idl61
-rw-r--r--offapi/com/sun/star/rdf/XURI.idl77
-rw-r--r--offapi/com/sun/star/rdf/makefile.mk71
-rw-r--r--offapi/com/sun/star/rendering/AnimationAttributes.idl71
-rw-r--r--offapi/com/sun/star/rendering/AnimationRepeat.idl84
-rwxr-xr-xoffapi/com/sun/star/rendering/BlendMode.idl62
-rw-r--r--offapi/com/sun/star/rendering/CanvasFactory.idl58
-rw-r--r--offapi/com/sun/star/rendering/Caret.idl70
-rw-r--r--offapi/com/sun/star/rendering/ColorComponentTag.idl140
-rw-r--r--offapi/com/sun/star/rendering/ColorProfile.idl43
-rw-r--r--offapi/com/sun/star/rendering/ColorSpaceType.idl126
-rw-r--r--offapi/com/sun/star/rendering/CompositeOperation.idl158
-rw-r--r--offapi/com/sun/star/rendering/EmphasisMark.idl87
-rw-r--r--offapi/com/sun/star/rendering/FillRule.idl63
-rw-r--r--offapi/com/sun/star/rendering/FloatingPointBitmapFormat.idl67
-rw-r--r--offapi/com/sun/star/rendering/FloatingPointBitmapLayout.idl113
-rw-r--r--offapi/com/sun/star/rendering/FontInfo.idl126
-rw-r--r--offapi/com/sun/star/rendering/FontMetrics.idl107
-rw-r--r--offapi/com/sun/star/rendering/FontRequest.idl121
-rw-r--r--offapi/com/sun/star/rendering/IntegerBitmapLayout.idl127
-rw-r--r--offapi/com/sun/star/rendering/InterpolationMode.idl97
-rw-r--r--offapi/com/sun/star/rendering/MtfRenderer.idl46
-rw-r--r--offapi/com/sun/star/rendering/Panose.idl67
-rw-r--r--offapi/com/sun/star/rendering/PanoseArmStyle.idl50
-rw-r--r--offapi/com/sun/star/rendering/PanoseContrast.idl48
-rw-r--r--offapi/com/sun/star/rendering/PanoseFamilyTypes.idl44
-rw-r--r--offapi/com/sun/star/rendering/PanoseLetterForm.idl54
-rw-r--r--offapi/com/sun/star/rendering/PanoseMidline.idl52
-rw-r--r--offapi/com/sun/star/rendering/PanoseProportion.idl48
-rw-r--r--offapi/com/sun/star/rendering/PanoseSerifStyle.idl54
-rw-r--r--offapi/com/sun/star/rendering/PanoseStrokeVariation.idl47
-rw-r--r--offapi/com/sun/star/rendering/PanoseWeight.idl50
-rw-r--r--offapi/com/sun/star/rendering/PanoseXHeight.idl46
-rw-r--r--offapi/com/sun/star/rendering/PathCapType.idl59
-rw-r--r--offapi/com/sun/star/rendering/PathJoinType.idl73
-rw-r--r--offapi/com/sun/star/rendering/RenderState.idl108
-rw-r--r--offapi/com/sun/star/rendering/RenderingIntent.idl89
-rw-r--r--offapi/com/sun/star/rendering/RepaintResult.idl58
-rw-r--r--offapi/com/sun/star/rendering/StringContext.idl68
-rw-r--r--offapi/com/sun/star/rendering/StrokeAttributes.idl154
-rw-r--r--offapi/com/sun/star/rendering/TextDirection.idl53
-rw-r--r--offapi/com/sun/star/rendering/TextHit.idl70
-rw-r--r--offapi/com/sun/star/rendering/Texture.idl156
-rw-r--r--offapi/com/sun/star/rendering/TexturingMode.idl70
-rw-r--r--offapi/com/sun/star/rendering/ViewState.idl77
-rw-r--r--offapi/com/sun/star/rendering/VolatileContentDestroyedException.idl49
-rw-r--r--offapi/com/sun/star/rendering/XAnimatedSprite.idl196
-rw-r--r--offapi/com/sun/star/rendering/XAnimation.idl123
-rw-r--r--offapi/com/sun/star/rendering/XBezierPolyPolygon2D.idl175
-rw-r--r--offapi/com/sun/star/rendering/XBitmap.idl115
-rw-r--r--offapi/com/sun/star/rendering/XBitmapCanvas.idl151
-rw-r--r--offapi/com/sun/star/rendering/XBitmapPalette.idl126
-rw-r--r--offapi/com/sun/star/rendering/XBufferController.idl134
-rw-r--r--offapi/com/sun/star/rendering/XCachedPrimitive.idl73
-rw-r--r--offapi/com/sun/star/rendering/XCanvas.idl744
-rw-r--r--offapi/com/sun/star/rendering/XCanvasFont.idl140
-rw-r--r--offapi/com/sun/star/rendering/XColorSpace.idl292
-rw-r--r--offapi/com/sun/star/rendering/XCustomSprite.idl77
-rw-r--r--offapi/com/sun/star/rendering/XGraphicDevice.idl303
-rw-r--r--offapi/com/sun/star/rendering/XHalfFloatBitmap.idl97
-rw-r--r--offapi/com/sun/star/rendering/XHalfFloatReadOnlyBitmap.idl113
-rw-r--r--offapi/com/sun/star/rendering/XIeeeDoubleBitmap.idl141
-rw-r--r--offapi/com/sun/star/rendering/XIeeeDoubleReadOnlyBitmap.idl140
-rw-r--r--offapi/com/sun/star/rendering/XIeeeFloatBitmap.idl140
-rw-r--r--offapi/com/sun/star/rendering/XIeeeFloatReadOnlyBitmap.idl139
-rw-r--r--offapi/com/sun/star/rendering/XIntegerBitmap.idl147
-rw-r--r--offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl276
-rw-r--r--offapi/com/sun/star/rendering/XIntegerReadOnlyBitmap.idl160
-rw-r--r--offapi/com/sun/star/rendering/XLinePolyPolygon2D.idl123
-rw-r--r--offapi/com/sun/star/rendering/XParametricPolyPolygon2D.idl108
-rw-r--r--offapi/com/sun/star/rendering/XPolyPolygon2D.idl136
-rw-r--r--offapi/com/sun/star/rendering/XSimpleCanvas.idl291
-rw-r--r--offapi/com/sun/star/rendering/XSprite.idl214
-rw-r--r--offapi/com/sun/star/rendering/XSpriteCanvas.idl160
-rw-r--r--offapi/com/sun/star/rendering/XTextLayout.idl432
-rw-r--r--offapi/com/sun/star/rendering/XVolatileBitmap.idl54
-rw-r--r--offapi/com/sun/star/rendering/makefile.mk118
-rw-r--r--offapi/com/sun/star/report/Calculation.idl136
-rw-r--r--offapi/com/sun/star/report/ForceNewPage.idl69
-rw-r--r--offapi/com/sun/star/report/GroupKeepTogether.idl61
-rw-r--r--offapi/com/sun/star/report/GroupOn.idl92
-rw-r--r--offapi/com/sun/star/report/KeepTogether.idl64
-rw-r--r--offapi/com/sun/star/report/ReportPrintOption.idl67
-rw-r--r--offapi/com/sun/star/report/SectionPageBreak.idl60
-rw-r--r--offapi/com/sun/star/report/XFixedLine.idl108
-rw-r--r--offapi/com/sun/star/report/XFixedText.idl55
-rw-r--r--offapi/com/sun/star/report/XFormatCondition.idl61
-rw-r--r--offapi/com/sun/star/report/XFormattedField.idl72
-rw-r--r--offapi/com/sun/star/report/XFunction.idl90
-rw-r--r--offapi/com/sun/star/report/XFunctions.idl80
-rw-r--r--offapi/com/sun/star/report/XFunctionsSupplier.idl51
-rw-r--r--offapi/com/sun/star/report/XGroup.idl149
-rw-r--r--offapi/com/sun/star/report/XGroups.idl83
-rw-r--r--offapi/com/sun/star/report/XImageControl.idl92
-rw-r--r--offapi/com/sun/star/report/XReportComponent.idl200
-rw-r--r--offapi/com/sun/star/report/XReportControlFormat.idl613
-rw-r--r--offapi/com/sun/star/report/XReportControlModel.idl115
-rw-r--r--offapi/com/sun/star/report/XReportDefinition.idl362
-rw-r--r--offapi/com/sun/star/report/XReportEngine.idl169
-rw-r--r--offapi/com/sun/star/report/XSection.idl195
-rw-r--r--offapi/com/sun/star/report/XShape.idl96
-rw-r--r--offapi/com/sun/star/report/inspection/DataProviderHandler.idl55
-rw-r--r--offapi/com/sun/star/report/inspection/DefaultComponentInspectorModel.idl96
-rw-r--r--offapi/com/sun/star/report/inspection/ReportComponentHandler.idl55
-rw-r--r--offapi/com/sun/star/report/inspection/makefile.mk49
-rw-r--r--offapi/com/sun/star/report/makefile.mk69
-rw-r--r--offapi/com/sun/star/report/meta/XFormulaParser.idl72
-rw-r--r--offapi/com/sun/star/report/meta/XFunctionCategory.idl76
-rw-r--r--offapi/com/sun/star/report/meta/XFunctionDescription.idl87
-rw-r--r--offapi/com/sun/star/report/meta/XFunctionManager.idl74
-rw-r--r--offapi/com/sun/star/report/meta/makefile.mk49
-rw-r--r--offapi/com/sun/star/report/modules.idl45
-rw-r--r--offapi/com/sun/star/resource/MissingResourceException.idl53
-rw-r--r--offapi/com/sun/star/resource/OfficeResourceLoader.idl81
-rw-r--r--offapi/com/sun/star/resource/StringResource.idl51
-rw-r--r--offapi/com/sun/star/resource/StringResourceWithLocation.idl97
-rw-r--r--offapi/com/sun/star/resource/StringResourceWithStorage.idl92
-rw-r--r--offapi/com/sun/star/resource/XLocale.idl275
-rw-r--r--offapi/com/sun/star/resource/XResourceBundle.idl243
-rw-r--r--offapi/com/sun/star/resource/XResourceBundleLoader.idl86
-rw-r--r--offapi/com/sun/star/resource/XStringResourceManager.idl317
-rw-r--r--offapi/com/sun/star/resource/XStringResourcePersistence.idl247
-rw-r--r--offapi/com/sun/star/resource/XStringResourceResolver.idl201
-rw-r--r--offapi/com/sun/star/resource/XStringResourceSupplier.idl70
-rw-r--r--offapi/com/sun/star/resource/XStringResourceWithLocation.idl89
-rw-r--r--offapi/com/sun/star/resource/XStringResourceWithStorage.idl89
-rw-r--r--offapi/com/sun/star/resource/makefile.mk59
-rw-r--r--offapi/com/sun/star/scanner/ScanError.idl83
-rw-r--r--offapi/com/sun/star/scanner/ScannerContext.idl58
-rw-r--r--offapi/com/sun/star/scanner/ScannerException.idl61
-rw-r--r--offapi/com/sun/star/scanner/ScannerManager.idl56
-rw-r--r--offapi/com/sun/star/scanner/XScannerManager.idl107
-rw-r--r--offapi/com/sun/star/scanner/makefile.mk50
-rw-r--r--offapi/com/sun/star/script/DocumentDialogLibraryContainer.idl82
-rw-r--r--offapi/com/sun/star/script/DocumentScriptLibraryContainer.idl83
-rw-r--r--offapi/com/sun/star/script/LibraryNotLoadedException.idl55
-rw-r--r--offapi/com/sun/star/script/ModuleInfo.idl55
-rw-r--r--offapi/com/sun/star/script/ModuleSizeExceededRequest.idl55
-rw-r--r--offapi/com/sun/star/script/ModuleType.idl72
-rw-r--r--offapi/com/sun/star/script/XLibraryContainer.idl123
-rw-r--r--offapi/com/sun/star/script/XLibraryContainer2.idl99
-rw-r--r--offapi/com/sun/star/script/XLibraryContainer3.idl66
-rw-r--r--offapi/com/sun/star/script/XLibraryContainerExport.idl80
-rw-r--r--offapi/com/sun/star/script/XLibraryContainerPassword.idl143
-rw-r--r--offapi/com/sun/star/script/XLibraryQueryExecutable.idl51
-rw-r--r--offapi/com/sun/star/script/XPersistentLibraryContainer.idl104
-rw-r--r--offapi/com/sun/star/script/XStorageBasedLibraryContainer.idl105
-rwxr-xr-xoffapi/com/sun/star/script/browse/BrowseNode.idl62
-rwxr-xr-xoffapi/com/sun/star/script/browse/BrowseNodeFactory.idl64
-rwxr-xr-xoffapi/com/sun/star/script/browse/BrowseNodeFactoryViewTypes.idl51
-rwxr-xr-xoffapi/com/sun/star/script/browse/BrowseNodeTypes.idl56
-rwxr-xr-xoffapi/com/sun/star/script/browse/XBrowseNode.idl83
-rw-r--r--offapi/com/sun/star/script/browse/XBrowseNodeFactory.idl66
-rw-r--r--offapi/com/sun/star/script/browse/makefile.mk52
-rw-r--r--offapi/com/sun/star/script/makefile.mk59
-rwxr-xr-xoffapi/com/sun/star/script/provider/LanguageScriptProvider.idl55
-rwxr-xr-xoffapi/com/sun/star/script/provider/MasterScriptProvider.idl55
-rwxr-xr-xoffapi/com/sun/star/script/provider/MasterScriptProviderFactory.idl64
-rw-r--r--offapi/com/sun/star/script/provider/ScriptErrorRaisedException.idl59
-rw-r--r--offapi/com/sun/star/script/provider/ScriptExceptionRaisedException.idl53
-rw-r--r--offapi/com/sun/star/script/provider/ScriptFrameworkErrorException.idl59
-rw-r--r--offapi/com/sun/star/script/provider/ScriptFrameworkErrorType.idl62
-rwxr-xr-xoffapi/com/sun/star/script/provider/ScriptProvider.idl61
-rw-r--r--offapi/com/sun/star/script/provider/ScriptProviderForBasic.idl54
-rwxr-xr-xoffapi/com/sun/star/script/provider/ScriptProviderForBeanShell.idl54
-rwxr-xr-xoffapi/com/sun/star/script/provider/ScriptProviderForJava.idl54
-rwxr-xr-xoffapi/com/sun/star/script/provider/ScriptProviderForJavaScript.idl54
-rwxr-xr-xoffapi/com/sun/star/script/provider/ScriptURIHelper.idl72
-rw-r--r--offapi/com/sun/star/script/provider/XScript.idl102
-rw-r--r--offapi/com/sun/star/script/provider/XScriptContext.idl114
-rw-r--r--offapi/com/sun/star/script/provider/XScriptProvider.idl74
-rw-r--r--offapi/com/sun/star/script/provider/XScriptProviderFactory.idl72
-rw-r--r--offapi/com/sun/star/script/provider/XScriptProviderSupplier.idl64
-rw-r--r--offapi/com/sun/star/script/provider/XScriptURIHelper.idl88
-rwxr-xr-xoffapi/com/sun/star/script/provider/makefile.mk68
-rwxr-xr-xoffapi/com/sun/star/script/vba/VBAEventId.idl140
-rwxr-xr-xoffapi/com/sun/star/script/vba/VBAEventProcessor.idl49
-rwxr-xr-xoffapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl50
-rwxr-xr-xoffapi/com/sun/star/script/vba/VBATextEventProcessor.idl50
-rw-r--r--offapi/com/sun/star/script/vba/XVBACompatibility.idl50
-rwxr-xr-xoffapi/com/sun/star/script/vba/XVBAEventProcessor.idl106
-rw-r--r--offapi/com/sun/star/script/vba/XVBAModuleInfo.idl75
-rwxr-xr-xoffapi/com/sun/star/script/vba/makefile.mk52
-rw-r--r--offapi/com/sun/star/sdb/BooleanComparisonMode.idl74
-rw-r--r--offapi/com/sun/star/sdb/CallableStatement.idl59
-rw-r--r--offapi/com/sun/star/sdb/Column.idl59
-rw-r--r--offapi/com/sun/star/sdb/ColumnDescriptorControl.idl52
-rw-r--r--offapi/com/sun/star/sdb/ColumnDescriptorControlModel.idl94
-rw-r--r--offapi/com/sun/star/sdb/ColumnSettings.idl134
-rw-r--r--offapi/com/sun/star/sdb/CommandType.idl61
-rw-r--r--offapi/com/sun/star/sdb/Connection.idl98
-rw-r--r--offapi/com/sun/star/sdb/ContentLoader.idl103
-rw-r--r--offapi/com/sun/star/sdb/DataAccessDescriptor.idl270
-rw-r--r--offapi/com/sun/star/sdb/DataAccessDescriptorFactory.idl49
-rw-r--r--offapi/com/sun/star/sdb/DataColumn.idl76
-rw-r--r--offapi/com/sun/star/sdb/DataSettings.idl98
-rw-r--r--offapi/com/sun/star/sdb/DataSource.idl255
-rw-r--r--offapi/com/sun/star/sdb/DataSourceBrowser.idl290
-rw-r--r--offapi/com/sun/star/sdb/DatabaseAccess.idl119
-rw-r--r--offapi/com/sun/star/sdb/DatabaseAccessConnection.idl100
-rw-r--r--offapi/com/sun/star/sdb/DatabaseAccessContext.idl92
-rw-r--r--offapi/com/sun/star/sdb/DatabaseAccessDataSource.idl79
-rw-r--r--offapi/com/sun/star/sdb/DatabaseContext.idl110
-rw-r--r--offapi/com/sun/star/sdb/DatabaseDocument.idl76
-rw-r--r--offapi/com/sun/star/sdb/DatabaseEnvironment.idl72
-rw-r--r--offapi/com/sun/star/sdb/DatabaseInteractionHandler.idl71
-rw-r--r--offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl61
-rw-r--r--offapi/com/sun/star/sdb/DatasourceAdministrationDialog.idl129
-rw-r--r--offapi/com/sun/star/sdb/DefinitionContainer.idl97
-rw-r--r--offapi/com/sun/star/sdb/DefinitionContent.idl76
-rw-r--r--offapi/com/sun/star/sdb/Document.idl64
-rw-r--r--offapi/com/sun/star/sdb/DocumentContainer.idl129
-rw-r--r--offapi/com/sun/star/sdb/DocumentDataSource.idl65
-rw-r--r--offapi/com/sun/star/sdb/DocumentDefinition.idl100
-rw-r--r--offapi/com/sun/star/sdb/DocumentSaveRequest.idl70
-rw-r--r--offapi/com/sun/star/sdb/ErrorCondition.idl180
-rw-r--r--offapi/com/sun/star/sdb/ErrorMessageDialog.idl171
-rw-r--r--offapi/com/sun/star/sdb/Forms.idl55
-rw-r--r--offapi/com/sun/star/sdb/InteractionHandler.idl49
-rw-r--r--offapi/com/sun/star/sdb/OfficeDatabaseDocument.idl250
-rw-r--r--offapi/com/sun/star/sdb/OrderColumn.idl55
-rw-r--r--offapi/com/sun/star/sdb/ParametersRequest.idl78
-rw-r--r--offapi/com/sun/star/sdb/PreparedStatement.idl62
-rw-r--r--offapi/com/sun/star/sdb/Query.idl91
-rw-r--r--offapi/com/sun/star/sdb/QueryDefinition.idl88
-rw-r--r--offapi/com/sun/star/sdb/QueryDescriptor.idl106
-rw-r--r--offapi/com/sun/star/sdb/QueryDesign.idl201
-rw-r--r--offapi/com/sun/star/sdb/RelationDesign.idl93
-rw-r--r--offapi/com/sun/star/sdb/Reports.idl55
-rw-r--r--offapi/com/sun/star/sdb/ResultColumn.idl123
-rw-r--r--offapi/com/sun/star/sdb/ResultSet.idl62
-rw-r--r--offapi/com/sun/star/sdb/RowChangeAction.idl59
-rw-r--r--offapi/com/sun/star/sdb/RowChangeEvent.idl59
-rw-r--r--offapi/com/sun/star/sdb/RowSet.idl400
-rw-r--r--offapi/com/sun/star/sdb/RowSetVetoException.idl51
-rw-r--r--offapi/com/sun/star/sdb/RowsChangeEvent.idl52
-rw-r--r--offapi/com/sun/star/sdb/SQLContext.idl65
-rw-r--r--offapi/com/sun/star/sdb/SQLErrorEvent.idl55
-rw-r--r--offapi/com/sun/star/sdb/SQLFilterOperator.idl78
-rw-r--r--offapi/com/sun/star/sdb/SQLQueryComposer.idl75
-rw-r--r--offapi/com/sun/star/sdb/SingleSelectQueryAnalyzer.idl90
-rw-r--r--offapi/com/sun/star/sdb/SingleSelectQueryComposer.idl73
-rw-r--r--offapi/com/sun/star/sdb/Table.idl67
-rw-r--r--offapi/com/sun/star/sdb/TableDescriptor.idl61
-rw-r--r--offapi/com/sun/star/sdb/TableDesign.idl96
-rw-r--r--offapi/com/sun/star/sdb/XAlterQuery.idl63
-rw-r--r--offapi/com/sun/star/sdb/XBookmarksSupplier.idl68
-rw-r--r--offapi/com/sun/star/sdb/XColumn.idl304
-rw-r--r--offapi/com/sun/star/sdb/XColumnUpdate.idl230
-rw-r--r--offapi/com/sun/star/sdb/XCommandPreparation.idl81
-rw-r--r--offapi/com/sun/star/sdb/XCompletedConnection.idl72
-rw-r--r--offapi/com/sun/star/sdb/XCompletedExecution.idl63
-rw-r--r--offapi/com/sun/star/sdb/XDataAccessDescriptorFactory.idl64
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseAccess.idl74
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseAccessListener.idl53
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseEnvironment.idl73
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseRegistrations.idl159
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl71
-rw-r--r--offapi/com/sun/star/sdb/XDocumentDataSource.idl75
-rw-r--r--offapi/com/sun/star/sdb/XFormDocumentsSupplier.idl61
-rw-r--r--offapi/com/sun/star/sdb/XInteractionDocumentSave.idl65
-rw-r--r--offapi/com/sun/star/sdb/XInteractionSupplyParameters.idl62
-rw-r--r--offapi/com/sun/star/sdb/XOfficeDatabaseDocument.idl78
-rw-r--r--offapi/com/sun/star/sdb/XParametersSupplier.idl60
-rw-r--r--offapi/com/sun/star/sdb/XQueriesSupplier.idl63
-rw-r--r--offapi/com/sun/star/sdb/XQueryDefinitionsSupplier.idl59
-rw-r--r--offapi/com/sun/star/sdb/XReportDocumentsSupplier.idl61
-rw-r--r--offapi/com/sun/star/sdb/XResultSetAccess.idl70
-rw-r--r--offapi/com/sun/star/sdb/XRowSetApproveBroadcaster.idl66
-rw-r--r--offapi/com/sun/star/sdb/XRowSetApproveListener.idl77
-rw-r--r--offapi/com/sun/star/sdb/XRowSetChangeBroadcaster.idl63
-rw-r--r--offapi/com/sun/star/sdb/XRowSetChangeListener.idl59
-rw-r--r--offapi/com/sun/star/sdb/XRowSetSupplier.idl73
-rw-r--r--offapi/com/sun/star/sdb/XRowsChangeBroadcaster.idl66
-rw-r--r--offapi/com/sun/star/sdb/XRowsChangeListener.idl60
-rw-r--r--offapi/com/sun/star/sdb/XSQLErrorBroadcaster.idl70
-rw-r--r--offapi/com/sun/star/sdb/XSQLErrorListener.idl62
-rw-r--r--offapi/com/sun/star/sdb/XSQLQueryComposer.idl175
-rw-r--r--offapi/com/sun/star/sdb/XSQLQueryComposerFactory.idl60
-rw-r--r--offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl262
-rw-r--r--offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl274
-rw-r--r--offapi/com/sun/star/sdb/XSubDocument.idl102
-rw-r--r--offapi/com/sun/star/sdb/application/CopyTableContinuation.idl69
-rw-r--r--offapi/com/sun/star/sdb/application/CopyTableOperation.idl72
-rw-r--r--offapi/com/sun/star/sdb/application/CopyTableRowEvent.idl71
-rw-r--r--offapi/com/sun/star/sdb/application/CopyTableWizard.idl231
-rw-r--r--offapi/com/sun/star/sdb/application/DatabaseObject.idl77
-rw-r--r--offapi/com/sun/star/sdb/application/DatabaseObjectContainer.idl104
-rw-r--r--offapi/com/sun/star/sdb/application/DefaultViewController.idl101
-rw-r--r--offapi/com/sun/star/sdb/application/NamedDatabaseObject.idl87
-rw-r--r--offapi/com/sun/star/sdb/application/XCopyTableListener.idl98
-rw-r--r--offapi/com/sun/star/sdb/application/XCopyTableWizard.idl153
-rw-r--r--offapi/com/sun/star/sdb/application/XDatabaseDocumentUI.idl330
-rw-r--r--offapi/com/sun/star/sdb/application/XTableUIProvider.idl123
-rw-r--r--offapi/com/sun/star/sdb/application/makefile.mk60
-rw-r--r--offapi/com/sun/star/sdb/makefile.mk147
-rw-r--r--offapi/com/sun/star/sdb/tools/CompositionType.idl89
-rw-r--r--offapi/com/sun/star/sdb/tools/XConnectionSupplier.idl67
-rw-r--r--offapi/com/sun/star/sdb/tools/XConnectionTools.idl146
-rw-r--r--offapi/com/sun/star/sdb/tools/XDataSourceMetaData.idl53
-rw-r--r--offapi/com/sun/star/sdb/tools/XIndexAlteration.idl96
-rw-r--r--offapi/com/sun/star/sdb/tools/XKeyAlteration.idl96
-rw-r--r--offapi/com/sun/star/sdb/tools/XObjectNames.idl179
-rw-r--r--offapi/com/sun/star/sdb/tools/XTableAlteration.idl115
-rw-r--r--offapi/com/sun/star/sdb/tools/XTableName.idl154
-rw-r--r--offapi/com/sun/star/sdb/tools/XTableRename.idl78
-rw-r--r--offapi/com/sun/star/sdb/tools/XViewAccess.idl88
-rw-r--r--offapi/com/sun/star/sdb/tools/makefile.mk59
-rw-r--r--offapi/com/sun/star/sdbc/BatchUpdateException.idl68
-rw-r--r--offapi/com/sun/star/sdbc/BestRowScope.idl86
-rw-r--r--offapi/com/sun/star/sdbc/BestRowType.idl83
-rw-r--r--offapi/com/sun/star/sdbc/CallableStatement.idl110
-rw-r--r--offapi/com/sun/star/sdbc/ChangeAction.idl61
-rw-r--r--offapi/com/sun/star/sdbc/ChangeEvent.idl53
-rw-r--r--offapi/com/sun/star/sdbc/ColumnSearch.idl107
-rw-r--r--offapi/com/sun/star/sdbc/ColumnType.idl83
-rw-r--r--offapi/com/sun/star/sdbc/ColumnValue.idl57
-rw-r--r--offapi/com/sun/star/sdbc/Connection.idl92
-rw-r--r--offapi/com/sun/star/sdbc/ConnectionPool.idl57
-rw-r--r--offapi/com/sun/star/sdbc/ConnectionProperties.idl71
-rw-r--r--offapi/com/sun/star/sdbc/DBASEConnectionProperties.idl66
-rw-r--r--offapi/com/sun/star/sdbc/DataTruncation.idl92
-rw-r--r--offapi/com/sun/star/sdbc/DataType.idl147
-rw-r--r--offapi/com/sun/star/sdbc/Deferrability.idl77
-rw-r--r--offapi/com/sun/star/sdbc/Driver.idl75
-rw-r--r--offapi/com/sun/star/sdbc/DriverManager.idl76
-rw-r--r--offapi/com/sun/star/sdbc/DriverPropertyInfo.idl87
-rw-r--r--offapi/com/sun/star/sdbc/FILEConnectionProperties.idl69
-rw-r--r--offapi/com/sun/star/sdbc/FLATConnectionProperties.idl86
-rw-r--r--offapi/com/sun/star/sdbc/FetchDirection.idl61
-rw-r--r--offapi/com/sun/star/sdbc/IndexType.idl103
-rw-r--r--offapi/com/sun/star/sdbc/JDBCConnectionProperties.idl119
-rw-r--r--offapi/com/sun/star/sdbc/KeyRule.idl192
-rw-r--r--offapi/com/sun/star/sdbc/ODBCConnectionProperties.idl94
-rw-r--r--offapi/com/sun/star/sdbc/PreparedStatement.idl272
-rw-r--r--offapi/com/sun/star/sdbc/ProcedureColumn.idl116
-rw-r--r--offapi/com/sun/star/sdbc/ProcedureResult.idl89
-rw-r--r--offapi/com/sun/star/sdbc/ResultSet.idl249
-rw-r--r--offapi/com/sun/star/sdbc/ResultSetConcurrency.idl58
-rw-r--r--offapi/com/sun/star/sdbc/ResultSetType.idl67
-rw-r--r--offapi/com/sun/star/sdbc/RowSet.idl188
-rw-r--r--offapi/com/sun/star/sdbc/SQLException.idl81
-rw-r--r--offapi/com/sun/star/sdbc/SQLWarning.idl55
-rw-r--r--offapi/com/sun/star/sdbc/Statement.idl233
-rw-r--r--offapi/com/sun/star/sdbc/TransactionIsolation.idl85
-rw-r--r--offapi/com/sun/star/sdbc/XArray.idl255
-rw-r--r--offapi/com/sun/star/sdbc/XBatchExecution.idl83
-rw-r--r--offapi/com/sun/star/sdbc/XBlob.idl251
-rw-r--r--offapi/com/sun/star/sdbc/XClob.idl210
-rw-r--r--offapi/com/sun/star/sdbc/XCloseable.idl59
-rw-r--r--offapi/com/sun/star/sdbc/XColumnLocate.idl76
-rw-r--r--offapi/com/sun/star/sdbc/XConnection.idl438
-rw-r--r--offapi/com/sun/star/sdbc/XDataSource.idl106
-rw-r--r--offapi/com/sun/star/sdbc/XDatabaseMetaData.idl2610
-rw-r--r--offapi/com/sun/star/sdbc/XDatabaseMetaData2.idl66
-rw-r--r--offapi/com/sun/star/sdbc/XDriver.idl182
-rw-r--r--offapi/com/sun/star/sdbc/XDriverAccess.idl64
-rw-r--r--offapi/com/sun/star/sdbc/XDriverManager.idl126
-rw-r--r--offapi/com/sun/star/sdbc/XGeneratedResultSet.idl71
-rw-r--r--offapi/com/sun/star/sdbc/XIsolatedConnection.idl85
-rw-r--r--offapi/com/sun/star/sdbc/XMultipleResults.idl117
-rw-r--r--offapi/com/sun/star/sdbc/XOutParameters.idl148
-rw-r--r--offapi/com/sun/star/sdbc/XParameters.idl458
-rw-r--r--offapi/com/sun/star/sdbc/XPooledConnection.idl80
-rw-r--r--offapi/com/sun/star/sdbc/XPreparedBatchExecution.idl86
-rw-r--r--offapi/com/sun/star/sdbc/XPreparedStatement.idl117
-rw-r--r--offapi/com/sun/star/sdbc/XRef.idl65
-rw-r--r--offapi/com/sun/star/sdbc/XResultSet.idl345
-rw-r--r--offapi/com/sun/star/sdbc/XResultSetMetaData.idl286
-rw-r--r--offapi/com/sun/star/sdbc/XResultSetMetaDataSupplier.idl73
-rw-r--r--offapi/com/sun/star/sdbc/XResultSetUpdate.idl143
-rw-r--r--offapi/com/sun/star/sdbc/XRow.idl349
-rw-r--r--offapi/com/sun/star/sdbc/XRowSet.idl86
-rw-r--r--offapi/com/sun/star/sdbc/XRowSetListener.idl73
-rw-r--r--offapi/com/sun/star/sdbc/XRowUpdate.idl269
-rw-r--r--offapi/com/sun/star/sdbc/XSQLData.idl146
-rw-r--r--offapi/com/sun/star/sdbc/XSQLInput.idl300
-rw-r--r--offapi/com/sun/star/sdbc/XSQLOutput.idl310
-rw-r--r--offapi/com/sun/star/sdbc/XStatement.idl142
-rw-r--r--offapi/com/sun/star/sdbc/XStruct.idl111
-rw-r--r--offapi/com/sun/star/sdbc/XWarningsSupplier.idl84
-rw-r--r--offapi/com/sun/star/sdbc/makefile.mk118
-rw-r--r--offapi/com/sun/star/sdbcx/CheckOption.idl61
-rw-r--r--offapi/com/sun/star/sdbcx/Column.idl125
-rw-r--r--offapi/com/sun/star/sdbcx/ColumnDescriptor.idl107
-rw-r--r--offapi/com/sun/star/sdbcx/CompareBookmark.idl69
-rw-r--r--offapi/com/sun/star/sdbcx/Container.idl101
-rw-r--r--offapi/com/sun/star/sdbcx/DatabaseDefinition.idl80
-rw-r--r--offapi/com/sun/star/sdbcx/Descriptor.idl67
-rw-r--r--offapi/com/sun/star/sdbcx/Driver.idl78
-rw-r--r--offapi/com/sun/star/sdbcx/Group.idl68
-rw-r--r--offapi/com/sun/star/sdbcx/GroupDescriptor.idl53
-rw-r--r--offapi/com/sun/star/sdbcx/Index.idl97
-rw-r--r--offapi/com/sun/star/sdbcx/IndexColumn.idl56
-rw-r--r--offapi/com/sun/star/sdbcx/IndexColumnDescriptor.idl56
-rw-r--r--offapi/com/sun/star/sdbcx/IndexDescriptor.idl73
-rw-r--r--offapi/com/sun/star/sdbcx/Key.idl93
-rw-r--r--offapi/com/sun/star/sdbcx/KeyColumn.idl54
-rw-r--r--offapi/com/sun/star/sdbcx/KeyColumnDescriptor.idl57
-rw-r--r--offapi/com/sun/star/sdbcx/KeyDescriptor.idl75
-rw-r--r--offapi/com/sun/star/sdbcx/KeyType.idl59
-rw-r--r--offapi/com/sun/star/sdbcx/PreparedStatement.idl59
-rw-r--r--offapi/com/sun/star/sdbcx/Privilege.idl91
-rw-r--r--offapi/com/sun/star/sdbcx/PrivilegeObject.idl60
-rw-r--r--offapi/com/sun/star/sdbcx/ReferenceColumn.idl57
-rw-r--r--offapi/com/sun/star/sdbcx/ResultSet.idl84
-rw-r--r--offapi/com/sun/star/sdbcx/Statement.idl64
-rw-r--r--offapi/com/sun/star/sdbcx/Table.idl134
-rw-r--r--offapi/com/sun/star/sdbcx/TableDescriptor.idl88
-rw-r--r--offapi/com/sun/star/sdbcx/User.idl68
-rw-r--r--offapi/com/sun/star/sdbcx/UserDescriptor.idl56
-rw-r--r--offapi/com/sun/star/sdbcx/View.idl108
-rw-r--r--offapi/com/sun/star/sdbcx/ViewDescriptor.idl74
-rw-r--r--offapi/com/sun/star/sdbcx/XAlterTable.idl97
-rw-r--r--offapi/com/sun/star/sdbcx/XAlterView.idl67
-rw-r--r--offapi/com/sun/star/sdbcx/XAppend.idl75
-rw-r--r--offapi/com/sun/star/sdbcx/XAuthorizable.idl110
-rw-r--r--offapi/com/sun/star/sdbcx/XColumnsSupplier.idl64
-rw-r--r--offapi/com/sun/star/sdbcx/XCreateCatalog.idl74
-rw-r--r--offapi/com/sun/star/sdbcx/XDataDefinitionSupplier.idl92
-rw-r--r--offapi/com/sun/star/sdbcx/XDataDescriptorFactory.idl58
-rw-r--r--offapi/com/sun/star/sdbcx/XDeleteRows.idl67
-rw-r--r--offapi/com/sun/star/sdbcx/XDrop.idl81
-rw-r--r--offapi/com/sun/star/sdbcx/XDropCatalog.idl76
-rw-r--r--offapi/com/sun/star/sdbcx/XGroupsSupplier.idl60
-rw-r--r--offapi/com/sun/star/sdbcx/XIndexesSupplier.idl60
-rw-r--r--offapi/com/sun/star/sdbcx/XKeysSupplier.idl60
-rw-r--r--offapi/com/sun/star/sdbcx/XRename.idl70
-rw-r--r--offapi/com/sun/star/sdbcx/XRowLocate.idl158
-rw-r--r--offapi/com/sun/star/sdbcx/XTablesSupplier.idl60
-rw-r--r--offapi/com/sun/star/sdbcx/XUser.idl59
-rw-r--r--offapi/com/sun/star/sdbcx/XUsersSupplier.idl64
-rw-r--r--offapi/com/sun/star/sdbcx/XViewsSupplier.idl60
-rw-r--r--offapi/com/sun/star/sdbcx/makefile.mk97
-rw-r--r--offapi/com/sun/star/security/CertificateCharacters.idl61
-rw-r--r--offapi/com/sun/star/security/CertificateContainer.idl46
-rw-r--r--offapi/com/sun/star/security/CertificateContainerStatus.idl64
-rw-r--r--offapi/com/sun/star/security/CertificateException.idl54
-rw-r--r--offapi/com/sun/star/security/CertificateValidity.idl133
-rw-r--r--offapi/com/sun/star/security/CryptographyException.idl55
-rw-r--r--offapi/com/sun/star/security/DocumentDigitalSignatures.idl55
-rw-r--r--offapi/com/sun/star/security/DocumentSignatureInformation.idl86
-rw-r--r--offapi/com/sun/star/security/EncryptionException.idl55
-rw-r--r--offapi/com/sun/star/security/KeyException.idl55
-rw-r--r--offapi/com/sun/star/security/KeyUsage.idl49
-rw-r--r--offapi/com/sun/star/security/NoPasswordException.idl55
-rw-r--r--offapi/com/sun/star/security/SecurityInfrastructureException.idl55
-rw-r--r--offapi/com/sun/star/security/SerialNumberAdapter.idl57
-rw-r--r--offapi/com/sun/star/security/SignatureException.idl55
-rw-r--r--offapi/com/sun/star/security/XCertificate.idl137
-rw-r--r--offapi/com/sun/star/security/XCertificateContainer.idl66
-rw-r--r--offapi/com/sun/star/security/XCertificateExtension.idl65
-rw-r--r--offapi/com/sun/star/security/XDocumentDigitalSignatures.idl153
-rw-r--r--offapi/com/sun/star/security/XSerialNumberAdapter.idl59
-rw-r--r--offapi/com/sun/star/security/makefile.mk67
-rw-r--r--offapi/com/sun/star/setup/ActionType.idl67
-rw-r--r--offapi/com/sun/star/setup/BaseAction.idl48
-rw-r--r--offapi/com/sun/star/setup/CopyFileAction.idl64
-rw-r--r--offapi/com/sun/star/setup/DeleteDirAction.idl44
-rw-r--r--offapi/com/sun/star/setup/DeleteFileAction.idl60
-rw-r--r--offapi/com/sun/star/setup/DeleteFolderAction.idl44
-rw-r--r--offapi/com/sun/star/setup/DeleteFolderItemAction.idl47
-rw-r--r--offapi/com/sun/star/setup/DownloadAction.idl50
-rw-r--r--offapi/com/sun/star/setup/FontAction.idl50
-rw-r--r--offapi/com/sun/star/setup/InstallEnvironment.idl116
-rw-r--r--offapi/com/sun/star/setup/InstallResponse.idl62
-rw-r--r--offapi/com/sun/star/setup/InstallType.idl61
-rw-r--r--offapi/com/sun/star/setup/MakeDirAction.idl47
-rw-r--r--offapi/com/sun/star/setup/MakeFolderAction.idl47
-rw-r--r--offapi/com/sun/star/setup/MakeFolderItemAction.idl56
-rw-r--r--offapi/com/sun/star/setup/MakeShortcutAction.idl53
-rw-r--r--offapi/com/sun/star/setup/MirrorEntry.idl46
-rw-r--r--offapi/com/sun/star/setup/ModuleInfo.idl70
-rw-r--r--offapi/com/sun/star/setup/ModuleState.idl46
-rw-r--r--offapi/com/sun/star/setup/OSType.idl74
-rw-r--r--offapi/com/sun/star/setup/ProductRegistration.idl93
-rw-r--r--offapi/com/sun/star/setup/ProfileItemAction.idl56
-rw-r--r--offapi/com/sun/star/setup/Setup.idl49
-rw-r--r--offapi/com/sun/star/setup/SizeInfo.idl49
-rw-r--r--offapi/com/sun/star/setup/UnzipAction.idl70
-rw-r--r--offapi/com/sun/star/setup/UpdateType.idl49
-rw-r--r--offapi/com/sun/star/setup/VersionIdentifier.idl57
-rw-r--r--offapi/com/sun/star/setup/WindowsRegistryAction.idl62
-rw-r--r--offapi/com/sun/star/setup/XSetup.idl108
-rw-r--r--offapi/com/sun/star/setup/makefile.mk74
-rw-r--r--offapi/com/sun/star/sheet/AccessibleCell.idl135
-rw-r--r--offapi/com/sun/star/sheet/AccessibleCsvCell.idl81
-rw-r--r--offapi/com/sun/star/sheet/AccessibleCsvRuler.idl80
-rw-r--r--offapi/com/sun/star/sheet/AccessibleCsvTable.idl91
-rw-r--r--offapi/com/sun/star/sheet/AccessiblePageHeaderFooterAreasView.idl148
-rw-r--r--offapi/com/sun/star/sheet/AccessibleSpreadsheet.idl157
-rw-r--r--offapi/com/sun/star/sheet/AccessibleSpreadsheetDocumentView.idl166
-rw-r--r--offapi/com/sun/star/sheet/AccessibleSpreadsheetPageView.idl183
-rw-r--r--offapi/com/sun/star/sheet/ActivationEvent.idl64
-rw-r--r--offapi/com/sun/star/sheet/AddIn.idl160
-rw-r--r--offapi/com/sun/star/sheet/AddressConvention.idl70
-rw-r--r--offapi/com/sun/star/sheet/Border.idl72
-rw-r--r--offapi/com/sun/star/sheet/CellAnnotation.idl91
-rw-r--r--offapi/com/sun/star/sheet/CellAnnotationShape.idl57
-rw-r--r--offapi/com/sun/star/sheet/CellAnnotations.idl75
-rw-r--r--offapi/com/sun/star/sheet/CellAnnotationsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/CellAreaLink.idl121
-rw-r--r--offapi/com/sun/star/sheet/CellAreaLinks.idl83
-rw-r--r--offapi/com/sun/star/sheet/CellAreaLinksEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/CellDeleteMode.idl78
-rw-r--r--offapi/com/sun/star/sheet/CellFlags.idl114
-rw-r--r--offapi/com/sun/star/sheet/CellFormatRanges.idl79
-rw-r--r--offapi/com/sun/star/sheet/CellFormatRangesEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/CellInsertMode.idl78
-rw-r--r--offapi/com/sun/star/sheet/Cells.idl62
-rw-r--r--offapi/com/sun/star/sheet/CellsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/ComplexReference.idl63
-rw-r--r--offapi/com/sun/star/sheet/ConditionOperator.idl108
-rw-r--r--offapi/com/sun/star/sheet/ConsolidationDescriptor.idl61
-rw-r--r--offapi/com/sun/star/sheet/DDEItemInfo.idl65
-rw-r--r--offapi/com/sun/star/sheet/DDELink.idl94
-rw-r--r--offapi/com/sun/star/sheet/DDELinkInfo.idl80
-rw-r--r--offapi/com/sun/star/sheet/DDELinkMode.idl70
-rw-r--r--offapi/com/sun/star/sheet/DDELinks.idl98
-rw-r--r--offapi/com/sun/star/sheet/DDELinksEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/DataImportMode.idl72
-rw-r--r--offapi/com/sun/star/sheet/DataPilotDescriptor.idl151
-rw-r--r--offapi/com/sun/star/sheet/DataPilotField.idl248
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldAutoShowInfo.idl83
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldFilter.idl51
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldGroup.idl133
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldGroupBy.idl138
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldGroupEnumeration.idl64
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldGroupInfo.idl164
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldGroupItem.idl60
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldGroups.idl127
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldGroupsEnumeration.idl64
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldLayoutInfo.idl66
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldLayoutMode.idl86
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldOrientation.idl78
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldReference.idl91
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldReferenceItemType.idl68
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldReferenceType.idl175
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldShowItemsMode.idl64
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldSortInfo.idl74
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldSortMode.idl81
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFields.idl84
-rw-r--r--offapi/com/sun/star/sheet/DataPilotFieldsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/DataPilotItem.idl90
-rw-r--r--offapi/com/sun/star/sheet/DataPilotItems.idl80
-rw-r--r--offapi/com/sun/star/sheet/DataPilotItemsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/DataPilotOutputRangeType.idl72
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSource.idl129
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceDimension.idl174
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceDimensions.idl62
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceHierarchies.idl64
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceHierarchy.idl72
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceLevel.idl110
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceLevels.idl63
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceMember.idl99
-rw-r--r--offapi/com/sun/star/sheet/DataPilotSourceMembers.idl63
-rw-r--r--offapi/com/sun/star/sheet/DataPilotTable.idl80
-rw-r--r--offapi/com/sun/star/sheet/DataPilotTableHeaderData.idl79
-rw-r--r--offapi/com/sun/star/sheet/DataPilotTablePositionData.idl90
-rw-r--r--offapi/com/sun/star/sheet/DataPilotTablePositionType.idl78
-rw-r--r--offapi/com/sun/star/sheet/DataPilotTableResultData.idl86
-rw-r--r--offapi/com/sun/star/sheet/DataPilotTables.idl77
-rw-r--r--offapi/com/sun/star/sheet/DataPilotTablesEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/DataResult.idl62
-rw-r--r--offapi/com/sun/star/sheet/DataResultFlags.idl69
-rw-r--r--offapi/com/sun/star/sheet/DatabaseImportDescriptor.idl94
-rw-r--r--offapi/com/sun/star/sheet/DatabaseRange.idl172
-rw-r--r--offapi/com/sun/star/sheet/DatabaseRanges.idl83
-rw-r--r--offapi/com/sun/star/sheet/DatabaseRangesEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/DimensionFlags.idl74
-rw-r--r--offapi/com/sun/star/sheet/DocumentSettings.idl137
-rw-r--r--offapi/com/sun/star/sheet/ExternalDocLink.idl54
-rw-r--r--offapi/com/sun/star/sheet/ExternalDocLinks.idl52
-rw-r--r--offapi/com/sun/star/sheet/ExternalLinkInfo.idl77
-rw-r--r--offapi/com/sun/star/sheet/ExternalLinkType.idl64
-rw-r--r--offapi/com/sun/star/sheet/ExternalReference.idl96
-rw-r--r--offapi/com/sun/star/sheet/ExternalSheetCache.idl52
-rw-r--r--offapi/com/sun/star/sheet/FillDateMode.idl75
-rw-r--r--offapi/com/sun/star/sheet/FillDirection.idl73
-rw-r--r--offapi/com/sun/star/sheet/FillMode.idl93
-rw-r--r--offapi/com/sun/star/sheet/FilterConnection.idl61
-rw-r--r--offapi/com/sun/star/sheet/FilterFormulaParser.idl52
-rw-r--r--offapi/com/sun/star/sheet/FilterOperator.idl120
-rw-r--r--offapi/com/sun/star/sheet/FilterOperator2.idl161
-rw-r--r--offapi/com/sun/star/sheet/FormulaLanguage.idl75
-rw-r--r--offapi/com/sun/star/sheet/FormulaMapGroup.idl77
-rw-r--r--offapi/com/sun/star/sheet/FormulaMapGroupSpecialOffset.idl210
-rw-r--r--offapi/com/sun/star/sheet/FormulaOpCodeMapEntry.idl65
-rw-r--r--offapi/com/sun/star/sheet/FormulaParser.idl118
-rw-r--r--offapi/com/sun/star/sheet/FormulaResult.idl66
-rw-r--r--offapi/com/sun/star/sheet/FormulaToken.idl64
-rw-r--r--offapi/com/sun/star/sheet/FunctionAccess.idl95
-rw-r--r--offapi/com/sun/star/sheet/FunctionArgument.idl69
-rw-r--r--offapi/com/sun/star/sheet/FunctionCategory.idl116
-rw-r--r--offapi/com/sun/star/sheet/FunctionDescription.idl89
-rw-r--r--offapi/com/sun/star/sheet/FunctionDescriptionEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/FunctionDescriptions.idl91
-rw-r--r--offapi/com/sun/star/sheet/GeneralFunction.idl128
-rw-r--r--offapi/com/sun/star/sheet/GlobalSheetSettings.idl192
-rw-r--r--offapi/com/sun/star/sheet/GoalResult.idl58
-rw-r--r--offapi/com/sun/star/sheet/HeaderFooterContent.idl60
-rw-r--r--offapi/com/sun/star/sheet/LabelRange.idl61
-rw-r--r--offapi/com/sun/star/sheet/LabelRanges.idl87
-rw-r--r--offapi/com/sun/star/sheet/LabelRangesEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/LocalizedName.idl65
-rw-r--r--offapi/com/sun/star/sheet/MemberResult.idl68
-rw-r--r--offapi/com/sun/star/sheet/MemberResultFlags.idl77
-rw-r--r--offapi/com/sun/star/sheet/MoveDirection.idl73
-rw-r--r--offapi/com/sun/star/sheet/NamedRange.idl112
-rw-r--r--offapi/com/sun/star/sheet/NamedRangeFlag.idl72
-rw-r--r--offapi/com/sun/star/sheet/NamedRanges.idl102
-rw-r--r--offapi/com/sun/star/sheet/NamedRangesEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/NoConvergenceException.idl52
-rw-r--r--offapi/com/sun/star/sheet/PasteOperation.idl79
-rw-r--r--offapi/com/sun/star/sheet/RangeSelectionArguments.idl72
-rw-r--r--offapi/com/sun/star/sheet/RangeSelectionEvent.idl57
-rw-r--r--offapi/com/sun/star/sheet/RecentFunctions.idl58
-rw-r--r--offapi/com/sun/star/sheet/ReferenceFlags.idl97
-rw-r--r--offapi/com/sun/star/sheet/ResultEvent.idl63
-rw-r--r--offapi/com/sun/star/sheet/Scenario.idl122
-rw-r--r--offapi/com/sun/star/sheet/Scenarios.idl81
-rw-r--r--offapi/com/sun/star/sheet/ScenariosEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/Shape.idl82
-rw-r--r--offapi/com/sun/star/sheet/SheetCell.idl340
-rw-r--r--offapi/com/sun/star/sheet/SheetCellCursor.idl92
-rw-r--r--offapi/com/sun/star/sheet/SheetCellRange.idl434
-rw-r--r--offapi/com/sun/star/sheet/SheetCellRanges.idl257
-rw-r--r--offapi/com/sun/star/sheet/SheetCellRangesEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/SheetFilterDescriptor.idl148
-rw-r--r--offapi/com/sun/star/sheet/SheetLink.idl109
-rw-r--r--offapi/com/sun/star/sheet/SheetLinkMode.idl70
-rw-r--r--offapi/com/sun/star/sheet/SheetLinks.idl89
-rw-r--r--offapi/com/sun/star/sheet/SheetLinksEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/SheetRangesQuery.idl68
-rw-r--r--offapi/com/sun/star/sheet/SheetSortDescriptor.idl102
-rw-r--r--offapi/com/sun/star/sheet/SheetSortDescriptor2.idl116
-rw-r--r--offapi/com/sun/star/sheet/SingleReference.idl90
-rw-r--r--offapi/com/sun/star/sheet/Solver.idl50
-rw-r--r--offapi/com/sun/star/sheet/SolverConstraint.idl66
-rw-r--r--offapi/com/sun/star/sheet/SolverConstraintOperator.idl62
-rw-r--r--offapi/com/sun/star/sheet/Spreadsheet.idl279
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetDocument.idl288
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetDocumentSettings.idl250
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetDrawPage.idl97
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetView.idl148
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetViewPane.idl71
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetViewPanesEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetViewSettings.idl193
-rw-r--r--offapi/com/sun/star/sheet/Spreadsheets.idl95
-rw-r--r--offapi/com/sun/star/sheet/SpreadsheetsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/StatusBarFunction.idl91
-rw-r--r--offapi/com/sun/star/sheet/SubTotalColumn.idl66
-rw-r--r--offapi/com/sun/star/sheet/SubTotalDescriptor.idl150
-rw-r--r--offapi/com/sun/star/sheet/SubTotalField.idl63
-rw-r--r--offapi/com/sun/star/sheet/SubTotalFieldsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/TableAutoFormat.idl141
-rw-r--r--offapi/com/sun/star/sheet/TableAutoFormatEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/TableAutoFormatField.idl329
-rw-r--r--offapi/com/sun/star/sheet/TableAutoFormats.idl85
-rw-r--r--offapi/com/sun/star/sheet/TableAutoFormatsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/TableCellStyle.idl112
-rw-r--r--offapi/com/sun/star/sheet/TableConditionalEntry.idl70
-rw-r--r--offapi/com/sun/star/sheet/TableConditionalEntryEnumeration.idl62
-rw-r--r--offapi/com/sun/star/sheet/TableConditionalFormat.idl103
-rw-r--r--offapi/com/sun/star/sheet/TableFilterField.idl95
-rw-r--r--offapi/com/sun/star/sheet/TableFilterField2.idl103
-rw-r--r--offapi/com/sun/star/sheet/TableOperationMode.idl76
-rw-r--r--offapi/com/sun/star/sheet/TablePageBreakData.idl62
-rw-r--r--offapi/com/sun/star/sheet/TablePageStyle.idl221
-rw-r--r--offapi/com/sun/star/sheet/TableValidation.idl148
-rw-r--r--offapi/com/sun/star/sheet/TableValidationVisibility.idl67
-rw-r--r--offapi/com/sun/star/sheet/UniqueCellFormatRanges.idl80
-rw-r--r--offapi/com/sun/star/sheet/UniqueCellFormatRangesEnumeration.idl63
-rw-r--r--offapi/com/sun/star/sheet/ValidationAlertStyle.idl74
-rw-r--r--offapi/com/sun/star/sheet/ValidationType.idl96
-rw-r--r--offapi/com/sun/star/sheet/VolatileResult.idl64
-rw-r--r--offapi/com/sun/star/sheet/XActivationBroadcaster.idl85
-rw-r--r--offapi/com/sun/star/sheet/XActivationEventListener.idl74
-rw-r--r--offapi/com/sun/star/sheet/XAddIn.idl218
-rw-r--r--offapi/com/sun/star/sheet/XAreaLink.idl89
-rw-r--r--offapi/com/sun/star/sheet/XAreaLinks.idl95
-rw-r--r--offapi/com/sun/star/sheet/XArrayFormulaRange.idl69
-rw-r--r--offapi/com/sun/star/sheet/XArrayFormulaTokens.idl68
-rw-r--r--offapi/com/sun/star/sheet/XCalculatable.idl95
-rw-r--r--offapi/com/sun/star/sheet/XCellAddressable.idl66
-rw-r--r--offapi/com/sun/star/sheet/XCellFormatRangesSupplier.idl75
-rw-r--r--offapi/com/sun/star/sheet/XCellRangeAddressable.idl66
-rw-r--r--offapi/com/sun/star/sheet/XCellRangeData.idl69
-rw-r--r--offapi/com/sun/star/sheet/XCellRangeFormula.idl79
-rw-r--r--offapi/com/sun/star/sheet/XCellRangeMovement.idl131
-rw-r--r--offapi/com/sun/star/sheet/XCellRangeReferrer.idl68
-rw-r--r--offapi/com/sun/star/sheet/XCellRangesAccess.idl152
-rw-r--r--offapi/com/sun/star/sheet/XCellRangesQuery.idl172
-rw-r--r--offapi/com/sun/star/sheet/XCellSeries.idl110
-rw-r--r--offapi/com/sun/star/sheet/XCompatibilityNames.idl82
-rw-r--r--offapi/com/sun/star/sheet/XConsolidatable.idl87
-rw-r--r--offapi/com/sun/star/sheet/XConsolidationDescriptor.idl150
-rw-r--r--offapi/com/sun/star/sheet/XDDELink.idl75
-rw-r--r--offapi/com/sun/star/sheet/XDDELinkResults.idl77
-rw-r--r--offapi/com/sun/star/sheet/XDDELinks.idl92
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotDataLayoutFieldSupplier.idl74
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotDescriptor.idl150
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotField.idl67
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotFieldGrouping.idl174
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotMemberResults.idl70
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotResults.idl70
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotTable.idl73
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotTable2.idl131
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotTables.idl106
-rw-r--r--offapi/com/sun/star/sheet/XDataPilotTablesSupplier.idl66
-rw-r--r--offapi/com/sun/star/sheet/XDatabaseRange.idl127
-rw-r--r--offapi/com/sun/star/sheet/XDatabaseRanges.idl72
-rw-r--r--offapi/com/sun/star/sheet/XDimensionsSupplier.idl66
-rw-r--r--offapi/com/sun/star/sheet/XDocumentAuditing.idl62
-rw-r--r--offapi/com/sun/star/sheet/XDrillDownDataSupplier.idl87
-rw-r--r--offapi/com/sun/star/sheet/XEnhancedMouseClickBroadcaster.idl91
-rw-r--r--offapi/com/sun/star/sheet/XExternalDocLink.idl98
-rw-r--r--offapi/com/sun/star/sheet/XExternalDocLinks.idl63
-rw-r--r--offapi/com/sun/star/sheet/XExternalSheetCache.idl99
-rw-r--r--offapi/com/sun/star/sheet/XExternalSheetName.idl82
-rw-r--r--offapi/com/sun/star/sheet/XFillAcrossSheet.idl60
-rw-r--r--offapi/com/sun/star/sheet/XFilterFormulaParser.idl59
-rw-r--r--offapi/com/sun/star/sheet/XFormulaOpCodeMapper.idl155
-rw-r--r--offapi/com/sun/star/sheet/XFormulaParser.idl68
-rw-r--r--offapi/com/sun/star/sheet/XFormulaQuery.idl100
-rw-r--r--offapi/com/sun/star/sheet/XFormulaTokens.idl68
-rw-r--r--offapi/com/sun/star/sheet/XFunctionAccess.idl125
-rw-r--r--offapi/com/sun/star/sheet/XFunctionDescriptions.idl83
-rw-r--r--offapi/com/sun/star/sheet/XGoalSeek.idl83
-rw-r--r--offapi/com/sun/star/sheet/XHeaderFooterContent.idl86
-rw-r--r--offapi/com/sun/star/sheet/XHierarchiesSupplier.idl68
-rw-r--r--offapi/com/sun/star/sheet/XLabelRange.idl87
-rw-r--r--offapi/com/sun/star/sheet/XLabelRanges.idl80
-rw-r--r--offapi/com/sun/star/sheet/XLevelsSupplier.idl68
-rw-r--r--offapi/com/sun/star/sheet/XMembersSupplier.idl68
-rw-r--r--offapi/com/sun/star/sheet/XMultiFormulaTokens.idl99
-rw-r--r--offapi/com/sun/star/sheet/XMultipleOperation.idl102
-rw-r--r--offapi/com/sun/star/sheet/XNamedRange.idl111
-rw-r--r--offapi/com/sun/star/sheet/XNamedRanges.idl142
-rw-r--r--offapi/com/sun/star/sheet/XPrintAreas.idl165
-rw-r--r--offapi/com/sun/star/sheet/XRangeSelection.idl94
-rw-r--r--offapi/com/sun/star/sheet/XRangeSelectionChangeListener.idl64
-rw-r--r--offapi/com/sun/star/sheet/XRangeSelectionListener.idl67
-rw-r--r--offapi/com/sun/star/sheet/XRecentFunctions.idl83
-rw-r--r--offapi/com/sun/star/sheet/XResultListener.idl64
-rw-r--r--offapi/com/sun/star/sheet/XScenario.idl93
-rw-r--r--offapi/com/sun/star/sheet/XScenarioEnhanced.idl72
-rw-r--r--offapi/com/sun/star/sheet/XScenarios.idl84
-rw-r--r--offapi/com/sun/star/sheet/XScenariosSupplier.idl64
-rw-r--r--offapi/com/sun/star/sheet/XSheetAnnotation.idl91
-rw-r--r--offapi/com/sun/star/sheet/XSheetAnnotationAnchor.idl65
-rw-r--r--offapi/com/sun/star/sheet/XSheetAnnotationShapeSupplier.idl66
-rw-r--r--offapi/com/sun/star/sheet/XSheetAnnotations.idl90
-rw-r--r--offapi/com/sun/star/sheet/XSheetAnnotationsSupplier.idl64
-rw-r--r--offapi/com/sun/star/sheet/XSheetAuditing.idl124
-rw-r--r--offapi/com/sun/star/sheet/XSheetCellCursor.idl113
-rw-r--r--offapi/com/sun/star/sheet/XSheetCellRange.idl70
-rw-r--r--offapi/com/sun/star/sheet/XSheetCellRangeContainer.idl127
-rw-r--r--offapi/com/sun/star/sheet/XSheetCellRanges.idl92
-rw-r--r--offapi/com/sun/star/sheet/XSheetCondition.idl132
-rw-r--r--offapi/com/sun/star/sheet/XSheetConditionalEntries.idl102
-rw-r--r--offapi/com/sun/star/sheet/XSheetConditionalEntry.idl69
-rw-r--r--offapi/com/sun/star/sheet/XSheetFilterDescriptor.idl71
-rw-r--r--offapi/com/sun/star/sheet/XSheetFilterDescriptor2.idl76
-rw-r--r--offapi/com/sun/star/sheet/XSheetFilterable.idl81
-rw-r--r--offapi/com/sun/star/sheet/XSheetFilterableEx.idl71
-rw-r--r--offapi/com/sun/star/sheet/XSheetLinkable.idl134
-rw-r--r--offapi/com/sun/star/sheet/XSheetOperation.idl87
-rw-r--r--offapi/com/sun/star/sheet/XSheetOutline.idl141
-rw-r--r--offapi/com/sun/star/sheet/XSheetPageBreak.idl94
-rw-r--r--offapi/com/sun/star/sheet/XSheetPastable.idl100
-rw-r--r--offapi/com/sun/star/sheet/XSolver.idl84
-rw-r--r--offapi/com/sun/star/sheet/XSolverDescription.idl65
-rw-r--r--offapi/com/sun/star/sheet/XSpreadsheet.idl76
-rw-r--r--offapi/com/sun/star/sheet/XSpreadsheetDocument.idl66
-rw-r--r--offapi/com/sun/star/sheet/XSpreadsheetView.idl69
-rw-r--r--offapi/com/sun/star/sheet/XSpreadsheets.idl93
-rw-r--r--offapi/com/sun/star/sheet/XSubTotalCalculatable.idl95
-rw-r--r--offapi/com/sun/star/sheet/XSubTotalDescriptor.idl80
-rw-r--r--offapi/com/sun/star/sheet/XSubTotalField.idl87
-rw-r--r--offapi/com/sun/star/sheet/XUniqueCellFormatRangesSupplier.idl77
-rw-r--r--offapi/com/sun/star/sheet/XUsedAreaCursor.idl78
-rw-r--r--offapi/com/sun/star/sheet/XViewFreezable.idl75
-rw-r--r--offapi/com/sun/star/sheet/XViewPane.idl89
-rw-r--r--offapi/com/sun/star/sheet/XViewPanesSupplier.idl64
-rw-r--r--offapi/com/sun/star/sheet/XViewSplitable.idl102
-rw-r--r--offapi/com/sun/star/sheet/XVolatileResult.idl73
-rw-r--r--offapi/com/sun/star/sheet/_NamedRange.idl73
-rw-r--r--offapi/com/sun/star/sheet/makefile.mk349
-rw-r--r--offapi/com/sun/star/smarttags/SmartTagAction.idl58
-rw-r--r--offapi/com/sun/star/smarttags/SmartTagRecognizer.idl60
-rw-r--r--offapi/com/sun/star/smarttags/SmartTagRecognizerMode.idl60
-rw-r--r--offapi/com/sun/star/smarttags/XSmartTagAction.idl358
-rw-r--r--offapi/com/sun/star/smarttags/XSmartTagRecognizer.idl231
-rw-r--r--offapi/com/sun/star/smarttags/makefile.mk66
-rw-r--r--offapi/com/sun/star/style/BreakType.idl131
-rw-r--r--offapi/com/sun/star/style/CaseMap.idl87
-rw-r--r--offapi/com/sun/star/style/CellStyle.idl60
-rw-r--r--offapi/com/sun/star/style/CharacterProperties.idl450
-rw-r--r--offapi/com/sun/star/style/CharacterPropertiesAsian.idl91
-rw-r--r--offapi/com/sun/star/style/CharacterPropertiesComplex.idl91
-rw-r--r--offapi/com/sun/star/style/CharacterStyle.idl86
-rw-r--r--offapi/com/sun/star/style/DropCapFormat.idl70
-rw-r--r--offapi/com/sun/star/style/GraphicLocation.idl137
-rw-r--r--offapi/com/sun/star/style/HorizontalAlignment.idl76
-rw-r--r--offapi/com/sun/star/style/LineNumberPosition.idl80
-rw-r--r--offapi/com/sun/star/style/LineSpacing.idl63
-rw-r--r--offapi/com/sun/star/style/LineSpacingMode.idl79
-rw-r--r--offapi/com/sun/star/style/NumberingAlignment.idl83
-rw-r--r--offapi/com/sun/star/style/NumberingLevel.idl121
-rw-r--r--offapi/com/sun/star/style/NumberingRule.idl68
-rw-r--r--offapi/com/sun/star/style/NumberingType.idl480
-rw-r--r--offapi/com/sun/star/style/PageProperties.idl502
-rw-r--r--offapi/com/sun/star/style/PageStyle.idl70
-rw-r--r--offapi/com/sun/star/style/PageStyleLayout.idl73
-rw-r--r--offapi/com/sun/star/style/ParagraphAdjust.idl86
-rw-r--r--offapi/com/sun/star/style/ParagraphProperties.idl463
-rw-r--r--offapi/com/sun/star/style/ParagraphPropertiesAsian.idl63
-rw-r--r--offapi/com/sun/star/style/ParagraphPropertiesComplex.idl53
-rw-r--r--offapi/com/sun/star/style/ParagraphStyle.idl163
-rw-r--r--offapi/com/sun/star/style/ParagraphStyleCategory.idl86
-rw-r--r--offapi/com/sun/star/style/Style.idl174
-rw-r--r--offapi/com/sun/star/style/StyleFamilies.idl119
-rw-r--r--offapi/com/sun/star/style/StyleFamily.idl89
-rw-r--r--offapi/com/sun/star/style/TabAlign.idl91
-rw-r--r--offapi/com/sun/star/style/TabStop.idl84
-rw-r--r--offapi/com/sun/star/style/VerticalAlignment.idl76
-rw-r--r--offapi/com/sun/star/style/XAutoStyle.idl74
-rw-r--r--offapi/com/sun/star/style/XAutoStyleFamily.idl65
-rw-r--r--offapi/com/sun/star/style/XAutoStyles.idl64
-rw-r--r--offapi/com/sun/star/style/XAutoStylesSupplier.idl66
-rw-r--r--offapi/com/sun/star/style/XDefaultsSupplier.idl62
-rw-r--r--offapi/com/sun/star/style/XStyle.idl85
-rw-r--r--offapi/com/sun/star/style/XStyleCondition.idl70
-rw-r--r--offapi/com/sun/star/style/XStyleFamiliesSupplier.idl68
-rw-r--r--offapi/com/sun/star/style/XStyleLoader.idl97
-rw-r--r--offapi/com/sun/star/style/makefile.mk87
-rw-r--r--offapi/com/sun/star/svg/XSVGPrinter.idl61
-rw-r--r--offapi/com/sun/star/svg/XSVGWriter.idl52
-rw-r--r--offapi/com/sun/star/svg/makefile.mk48
-rw-r--r--offapi/com/sun/star/sync/SyncAction.idl62
-rw-r--r--offapi/com/sun/star/sync/SyncCollector.idl49
-rw-r--r--offapi/com/sun/star/sync/SyncElement.idl72
-rw-r--r--offapi/com/sun/star/sync/SyncEvent.idl56
-rw-r--r--offapi/com/sun/star/sync/SyncInfo.idl61
-rw-r--r--offapi/com/sun/star/sync/SyncMode.idl54
-rw-r--r--offapi/com/sun/star/sync/SyncOptions.idl60
-rw-r--r--offapi/com/sun/star/sync/SyncScheme.idl56
-rw-r--r--offapi/com/sun/star/sync/SyncType.idl59
-rw-r--r--offapi/com/sun/star/sync/Synchronizer.idl49
-rw-r--r--offapi/com/sun/star/sync/XSyncCollector.idl88
-rw-r--r--offapi/com/sun/star/sync/XSynchronizer.idl61
-rw-r--r--offapi/com/sun/star/sync/makefile.mk57
-rw-r--r--offapi/com/sun/star/sync2/BadPartnershipException.idl54
-rw-r--r--offapi/com/sun/star/sync2/makefile.mk39
-rw-r--r--offapi/com/sun/star/system/ProxySettings.idl78
-rw-r--r--offapi/com/sun/star/system/SOffice52ProxySettings.idl65
-rw-r--r--offapi/com/sun/star/system/SimpleCommandMail.idl82
-rw-r--r--offapi/com/sun/star/system/SimpleMailClientFlags.idl72
-rw-r--r--offapi/com/sun/star/system/SimpleSystemMail.idl77
-rw-r--r--offapi/com/sun/star/system/SystemProxySettings.idl63
-rw-r--r--offapi/com/sun/star/system/SystemShellExecute.idl76
-rw-r--r--offapi/com/sun/star/system/SystemShellExecuteException.idl62
-rw-r--r--offapi/com/sun/star/system/SystemShellExecuteFlags.idl56
-rw-r--r--offapi/com/sun/star/system/XProxySettings.idl144
-rw-r--r--offapi/com/sun/star/system/XSimpleMailClient.idl105
-rw-r--r--offapi/com/sun/star/system/XSimpleMailClientSupplier.idl77
-rw-r--r--offapi/com/sun/star/system/XSimpleMailMessage.idl165
-rw-r--r--offapi/com/sun/star/system/XSystemShellExecute.idl94
-rw-r--r--offapi/com/sun/star/system/makefile.mk59
-rw-r--r--offapi/com/sun/star/table/AccessibleCellView.idl157
-rw-r--r--offapi/com/sun/star/table/AccessibleTableView.idl161
-rw-r--r--offapi/com/sun/star/table/BorderLine.idl81
-rw-r--r--offapi/com/sun/star/table/BorderLine2.idl55
-rw-r--r--offapi/com/sun/star/table/BorderLineStyle.idl63
-rw-r--r--offapi/com/sun/star/table/Cell.idl78
-rw-r--r--offapi/com/sun/star/table/CellAddress.idl66
-rw-r--r--offapi/com/sun/star/table/CellContentType.idl72
-rw-r--r--offapi/com/sun/star/table/CellCursor.idl61
-rw-r--r--offapi/com/sun/star/table/CellHoriJustify.idl84
-rw-r--r--offapi/com/sun/star/table/CellJustifyMethod.idl69
-rw-r--r--offapi/com/sun/star/table/CellOrientation.idl73
-rw-r--r--offapi/com/sun/star/table/CellProperties.idl265
-rw-r--r--offapi/com/sun/star/table/CellRange.idl68
-rw-r--r--offapi/com/sun/star/table/CellRangeAddress.idl78
-rw-r--r--offapi/com/sun/star/table/CellRangeListSource.idl93
-rw-r--r--offapi/com/sun/star/table/CellValueBinding.idl106
-rw-r--r--offapi/com/sun/star/table/CellVertJustify.idl72
-rw-r--r--offapi/com/sun/star/table/CellVertJustify2.idl79
-rw-r--r--offapi/com/sun/star/table/ListPositionCellBinding.idl61
-rw-r--r--offapi/com/sun/star/table/ShadowFormat.idl80
-rw-r--r--offapi/com/sun/star/table/ShadowLocation.idl78
-rw-r--r--offapi/com/sun/star/table/TableBorder.idl154
-rw-r--r--offapi/com/sun/star/table/TableBorderDistances.idl109
-rw-r--r--offapi/com/sun/star/table/TableChart.idl83
-rw-r--r--offapi/com/sun/star/table/TableCharts.idl82
-rw-r--r--offapi/com/sun/star/table/TableChartsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/table/TableColumn.idl112
-rw-r--r--offapi/com/sun/star/table/TableColumns.idl85
-rw-r--r--offapi/com/sun/star/table/TableColumnsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/table/TableOrientation.idl60
-rw-r--r--offapi/com/sun/star/table/TableRow.idl100
-rw-r--r--offapi/com/sun/star/table/TableRows.idl72
-rw-r--r--offapi/com/sun/star/table/TableRowsEnumeration.idl62
-rw-r--r--offapi/com/sun/star/table/TableSortDescriptor.idl104
-rw-r--r--offapi/com/sun/star/table/TableSortDescriptor2.idl87
-rw-r--r--offapi/com/sun/star/table/TableSortField.idl107
-rw-r--r--offapi/com/sun/star/table/TableSortFieldType.idl65
-rw-r--r--offapi/com/sun/star/table/XAutoFormattable.idl69
-rw-r--r--offapi/com/sun/star/table/XCell.idl116
-rw-r--r--offapi/com/sun/star/table/XCellCursor.idl100
-rw-r--r--offapi/com/sun/star/table/XCellRange.idl135
-rw-r--r--offapi/com/sun/star/table/XColumnRowRange.idl79
-rw-r--r--offapi/com/sun/star/table/XMergeableCell.idl76
-rw-r--r--offapi/com/sun/star/table/XMergeableCellRange.idl97
-rw-r--r--offapi/com/sun/star/table/XTable.idl147
-rw-r--r--offapi/com/sun/star/table/XTableChart.idl100
-rw-r--r--offapi/com/sun/star/table/XTableCharts.idl102
-rw-r--r--offapi/com/sun/star/table/XTableChartsSupplier.idl65
-rw-r--r--offapi/com/sun/star/table/XTableColumns.idl85
-rw-r--r--offapi/com/sun/star/table/XTableRows.idl84
-rw-r--r--offapi/com/sun/star/table/makefile.mk96
-rw-r--r--offapi/com/sun/star/task/AsyncJob.idl66
-rw-r--r--offapi/com/sun/star/task/ClassifiedInteractionRequest.idl63
-rw-r--r--offapi/com/sun/star/task/DocumentMSPasswordRequest.idl64
-rwxr-xr-xoffapi/com/sun/star/task/DocumentMSPasswordRequest2.idl68
-rw-r--r--offapi/com/sun/star/task/DocumentMacroConfirmationRequest.idl79
-rw-r--r--offapi/com/sun/star/task/DocumentPasswordRequest.idl63
-rwxr-xr-xoffapi/com/sun/star/task/DocumentPasswordRequest2.idl67
-rw-r--r--offapi/com/sun/star/task/ErrorCodeIOException.idl56
-rw-r--r--offapi/com/sun/star/task/ErrorCodeRequest.idl56
-rw-r--r--offapi/com/sun/star/task/FutureDocumentVersionProductUpdateRequest.idl65
-rw-r--r--offapi/com/sun/star/task/InteractionClassification.idl86
-rw-r--r--offapi/com/sun/star/task/InteractionHandler.idl187
-rw-r--r--offapi/com/sun/star/task/InteractionRequestStringResolver.idl46
-rw-r--r--offapi/com/sun/star/task/Job.idl66
-rw-r--r--offapi/com/sun/star/task/JobExecutor.idl63
-rw-r--r--offapi/com/sun/star/task/MasterPasswordRequest.idl58
-rw-r--r--offapi/com/sun/star/task/NoMasterException.idl59
-rw-r--r--offapi/com/sun/star/task/OfficeRestartManager.idl53
-rw-r--r--offapi/com/sun/star/task/PasswordContainer.idl82
-rw-r--r--offapi/com/sun/star/task/PasswordContainerInteractionHandler.idl57
-rw-r--r--offapi/com/sun/star/task/PasswordRequest.idl67
-rw-r--r--offapi/com/sun/star/task/PasswordRequestMode.idl79
-rw-r--r--offapi/com/sun/star/task/UnsupportedOverwriteRequest.idl63
-rw-r--r--offapi/com/sun/star/task/UrlRecord.idl54
-rw-r--r--offapi/com/sun/star/task/UserRecord.idl50
-rw-r--r--offapi/com/sun/star/task/XAbortChannel.idl49
-rw-r--r--offapi/com/sun/star/task/XAsyncJob.idl92
-rw-r--r--offapi/com/sun/star/task/XInteractionApprove.idl52
-rw-r--r--offapi/com/sun/star/task/XInteractionAskLater.idl51
-rw-r--r--offapi/com/sun/star/task/XInteractionDisapprove.idl52
-rw-r--r--offapi/com/sun/star/task/XInteractionPassword.idl66
-rw-r--r--offapi/com/sun/star/task/XInteractionPassword2.idl80
-rw-r--r--offapi/com/sun/star/task/XInteractionRequestStringResolver.idl82
-rw-r--r--offapi/com/sun/star/task/XJob.idl96
-rw-r--r--offapi/com/sun/star/task/XJobExecutor.idl74
-rw-r--r--offapi/com/sun/star/task/XJobListener.idl73
-rw-r--r--offapi/com/sun/star/task/XMasterPasswordHandling.idl112
-rw-r--r--offapi/com/sun/star/task/XMasterPasswordHandling2.idl70
-rw-r--r--offapi/com/sun/star/task/XPasswordContainer.idl147
-rw-r--r--offapi/com/sun/star/task/XRestartManager.idl99
-rw-r--r--offapi/com/sun/star/task/XStatusIndicator.idl130
-rw-r--r--offapi/com/sun/star/task/XStatusIndicatorFactory.idl65
-rw-r--r--offapi/com/sun/star/task/XStatusIndicatorSupplier.idl61
-rw-r--r--offapi/com/sun/star/task/XUrlContainer.idl91
-rwxr-xr-xoffapi/com/sun/star/task/makefile.mk90
-rw-r--r--offapi/com/sun/star/text/AccessibleEndnoteView.idl138
-rw-r--r--offapi/com/sun/star/text/AccessibleFootnoteView.idl138
-rw-r--r--offapi/com/sun/star/text/AccessibleHeaderFooterView.idl143
-rw-r--r--offapi/com/sun/star/text/AccessiblePageView.idl214
-rw-r--r--offapi/com/sun/star/text/AccessibleParagraphView.idl212
-rw-r--r--offapi/com/sun/star/text/AccessibleTextDocumentPageView.idl116
-rw-r--r--offapi/com/sun/star/text/AccessibleTextDocumentView.idl218
-rw-r--r--offapi/com/sun/star/text/AccessibleTextEmbeddedObject.idl136
-rw-r--r--offapi/com/sun/star/text/AccessibleTextFrameView.idl149
-rw-r--r--offapi/com/sun/star/text/AccessibleTextGraphicObject.idl130
-rw-r--r--offapi/com/sun/star/text/AdvancedTextDocument.idl162
-rw-r--r--offapi/com/sun/star/text/AuthorDisplayFormat.idl72
-rw-r--r--offapi/com/sun/star/text/AutoTextContainer.idl61
-rw-r--r--offapi/com/sun/star/text/AutoTextEntry.idl68
-rw-r--r--offapi/com/sun/star/text/AutoTextGroup.idl72
-rw-r--r--offapi/com/sun/star/text/BaseFrame.idl118
-rw-r--r--offapi/com/sun/star/text/BaseFrameProperties.idl380
-rw-r--r--offapi/com/sun/star/text/BaseIndex.idl188
-rw-r--r--offapi/com/sun/star/text/BaseIndexMark.idl61
-rw-r--r--offapi/com/sun/star/text/Bibliography.idl62
-rw-r--r--offapi/com/sun/star/text/BibliographyDataField.idl208
-rw-r--r--offapi/com/sun/star/text/BibliographyDataType.idl157
-rw-r--r--offapi/com/sun/star/text/Bookmark.idl66
-rw-r--r--offapi/com/sun/star/text/Bookmarks.idl69
-rw-r--r--offapi/com/sun/star/text/Cell.idl119
-rw-r--r--offapi/com/sun/star/text/CellProperties.idl176
-rw-r--r--offapi/com/sun/star/text/CellRange.idl160
-rw-r--r--offapi/com/sun/star/text/ChainedTextFrame.idl73
-rw-r--r--offapi/com/sun/star/text/ChapterFormat.idl84
-rw-r--r--offapi/com/sun/star/text/ChapterNumberingRule.idl87
-rw-r--r--offapi/com/sun/star/text/CharacterCompressionType.idl61
-rw-r--r--offapi/com/sun/star/text/ContentIndex.idl74
-rw-r--r--offapi/com/sun/star/text/ContentIndexMark.idl65
-rw-r--r--offapi/com/sun/star/text/ControlCharacter.idl94
-rw-r--r--offapi/com/sun/star/text/DateDisplayFormat.idl96
-rw-r--r--offapi/com/sun/star/text/DefaultNumberingProvider.idl50
-rw-r--r--offapi/com/sun/star/text/Defaults.idl89
-rw-r--r--offapi/com/sun/star/text/DependentTextField.idl68
-rw-r--r--offapi/com/sun/star/text/DocumentIndex.idl102
-rw-r--r--offapi/com/sun/star/text/DocumentIndexFormat.idl86
-rw-r--r--offapi/com/sun/star/text/DocumentIndexLevelFormat.idl156
-rw-r--r--offapi/com/sun/star/text/DocumentIndexMark.idl73
-rw-r--r--offapi/com/sun/star/text/DocumentIndexMarkAsian.idl70
-rw-r--r--offapi/com/sun/star/text/DocumentIndexParagraphStyles.idl63
-rw-r--r--offapi/com/sun/star/text/DocumentIndexes.idl73
-rw-r--r--offapi/com/sun/star/text/DocumentSettings.idl204
-rw-r--r--offapi/com/sun/star/text/DocumentStatistic.idl73
-rw-r--r--offapi/com/sun/star/text/Endnote.idl52
-rw-r--r--offapi/com/sun/star/text/EndnoteSettings.idl52
-rw-r--r--offapi/com/sun/star/text/FilenameDisplayFormat.idl77
-rw-r--r--offapi/com/sun/star/text/FontEmphasis.idl85
-rw-r--r--offapi/com/sun/star/text/FontRelief.idl60
-rw-r--r--offapi/com/sun/star/text/Footnote.idl71
-rw-r--r--offapi/com/sun/star/text/FootnoteNumbering.idl70
-rw-r--r--offapi/com/sun/star/text/FootnoteSettings.idl139
-rw-r--r--offapi/com/sun/star/text/Footnotes.idl60
-rw-r--r--offapi/com/sun/star/text/GenericTextDocument.idl273
-rw-r--r--offapi/com/sun/star/text/GlobalDocument.idl52
-rw-r--r--offapi/com/sun/star/text/GlobalSettings.idl64
-rw-r--r--offapi/com/sun/star/text/GraphicCrop.idl88
-rw-r--r--offapi/com/sun/star/text/HoriOrientation.idl112
-rw-r--r--offapi/com/sun/star/text/HoriOrientationFormat.idl87
-rw-r--r--offapi/com/sun/star/text/HorizontalAdjust.idl69
-rw-r--r--offapi/com/sun/star/text/HypertextDocument.idl81
-rw-r--r--offapi/com/sun/star/text/IllustrationsIndex.idl61
-rwxr-xr-xoffapi/com/sun/star/text/InContentMetadata.idl88
-rw-r--r--offapi/com/sun/star/text/InvalidTextContentException.idl66
-rw-r--r--offapi/com/sun/star/text/LabelFollow.idl66
-rw-r--r--offapi/com/sun/star/text/LineNumberingProperties.idl117
-rw-r--r--offapi/com/sun/star/text/LineNumberingSettings.idl111
-rw-r--r--offapi/com/sun/star/text/MailMerge.idl412
-rw-r--r--offapi/com/sun/star/text/MailMergeEvent.idl67
-rw-r--r--offapi/com/sun/star/text/MailMergeType.idl67
-rw-r--r--offapi/com/sun/star/text/NotePrintMode.idl78
-rw-r--r--offapi/com/sun/star/text/NumberingLevel.idl267
-rw-r--r--offapi/com/sun/star/text/NumberingRules.idl107
-rw-r--r--offapi/com/sun/star/text/NumberingStyle.idl59
-rw-r--r--offapi/com/sun/star/text/ObjectIndex.idl82
-rw-r--r--offapi/com/sun/star/text/PageFootnoteInfo.idl106
-rw-r--r--offapi/com/sun/star/text/PageNumberType.idl65
-rw-r--r--offapi/com/sun/star/text/PagePrintSettings.idl112
-rw-r--r--offapi/com/sun/star/text/Paragraph.idl154
-rw-r--r--offapi/com/sun/star/text/ParagraphEnumeration.idl60
-rw-r--r--offapi/com/sun/star/text/ParagraphVertAlign.idl69
-rw-r--r--offapi/com/sun/star/text/PlaceholderType.idl83
-rw-r--r--offapi/com/sun/star/text/PositionAndSpaceMode.idl61
-rw-r--r--offapi/com/sun/star/text/PositionLayoutDir.idl64
-rw-r--r--offapi/com/sun/star/text/PrintPreviewSettings.idl80
-rw-r--r--offapi/com/sun/star/text/PrintSettings.idl154
-rw-r--r--offapi/com/sun/star/text/RedlinePortion.idl98
-rw-r--r--offapi/com/sun/star/text/ReferenceFieldPart.idl136
-rw-r--r--offapi/com/sun/star/text/ReferenceFieldSource.idl69
-rw-r--r--offapi/com/sun/star/text/ReferenceMark.idl57
-rw-r--r--offapi/com/sun/star/text/ReferenceMarks.idl57
-rw-r--r--offapi/com/sun/star/text/RelOrientation.idl121
-rw-r--r--offapi/com/sun/star/text/RubyAdjust.idl67
-rw-r--r--offapi/com/sun/star/text/SectionFileLink.idl76
-rw-r--r--offapi/com/sun/star/text/SetVariableType.idl72
-rw-r--r--offapi/com/sun/star/text/Shape.idl242
-rw-r--r--offapi/com/sun/star/text/SizeType.idl75
-rw-r--r--offapi/com/sun/star/text/TableColumnSeparator.idl86
-rw-r--r--offapi/com/sun/star/text/TableColumns.idl71
-rw-r--r--offapi/com/sun/star/text/TableIndex.idl71
-rw-r--r--offapi/com/sun/star/text/TableRows.idl67
-rw-r--r--offapi/com/sun/star/text/TemplateDisplayFormat.idl91
-rw-r--r--offapi/com/sun/star/text/Text.idl149
-rw-r--r--offapi/com/sun/star/text/TextColumn.idl78
-rw-r--r--offapi/com/sun/star/text/TextColumnSequence.idl47
-rw-r--r--offapi/com/sun/star/text/TextColumns.idl93
-rw-r--r--offapi/com/sun/star/text/TextContent.idl98
-rw-r--r--offapi/com/sun/star/text/TextContentAnchorType.idl98
-rw-r--r--offapi/com/sun/star/text/TextContentCollection.idl71
-rw-r--r--offapi/com/sun/star/text/TextCursor.idl136
-rw-r--r--offapi/com/sun/star/text/TextDocument.idl52
-rw-r--r--offapi/com/sun/star/text/TextDocumentView.idl120
-rw-r--r--offapi/com/sun/star/text/TextEmbeddedObject.idl85
-rw-r--r--offapi/com/sun/star/text/TextEmbeddedObjects.idl71
-rw-r--r--offapi/com/sun/star/text/TextField.idl98
-rw-r--r--offapi/com/sun/star/text/TextFieldEnumeration.idl55
-rw-r--r--offapi/com/sun/star/text/TextFieldMaster.idl74
-rw-r--r--offapi/com/sun/star/text/TextFieldMasters.idl62
-rw-r--r--offapi/com/sun/star/text/TextFields.idl69
-rwxr-xr-xoffapi/com/sun/star/text/TextFrame.idl172
-rw-r--r--offapi/com/sun/star/text/TextFrames.idl86
-rw-r--r--offapi/com/sun/star/text/TextGraphicObject.idl179
-rw-r--r--offapi/com/sun/star/text/TextGraphicObjects.idl72
-rw-r--r--offapi/com/sun/star/text/TextGridMode.idl62
-rw-r--r--offapi/com/sun/star/text/TextLayoutCursor.idl63
-rw-r--r--offapi/com/sun/star/text/TextMarkupDescriptor.idl70
-rw-r--r--offapi/com/sun/star/text/TextMarkupType.idl70
-rw-r--r--offapi/com/sun/star/text/TextPageStyle.idl200
-rw-r--r--offapi/com/sun/star/text/TextPortion.idl178
-rw-r--r--offapi/com/sun/star/text/TextPortionEnumeration.idl56
-rw-r--r--offapi/com/sun/star/text/TextRange.idl112
-rw-r--r--offapi/com/sun/star/text/TextRangeContentProperties.idl133
-rw-r--r--offapi/com/sun/star/text/TextRanges.idl55
-rw-r--r--offapi/com/sun/star/text/TextSection.idl254
-rw-r--r--offapi/com/sun/star/text/TextSections.idl62
-rw-r--r--offapi/com/sun/star/text/TextSortDescriptor.idl143
-rw-r--r--offapi/com/sun/star/text/TextSortDescriptor2.idl77
-rw-r--r--offapi/com/sun/star/text/TextSortable.idl67
-rw-r--r--offapi/com/sun/star/text/TextTable.idl295
-rw-r--r--offapi/com/sun/star/text/TextTableCursor.idl90
-rw-r--r--offapi/com/sun/star/text/TextTableRow.idl126
-rw-r--r--offapi/com/sun/star/text/TextTables.idl62
-rw-r--r--offapi/com/sun/star/text/TextViewCursor.idl64
-rw-r--r--offapi/com/sun/star/text/TimeDisplayFormat.idl91
-rw-r--r--offapi/com/sun/star/text/UserDataPart.idl154
-rw-r--r--offapi/com/sun/star/text/UserDefinedIndex.idl89
-rw-r--r--offapi/com/sun/star/text/UserFieldFormat.idl70
-rw-r--r--offapi/com/sun/star/text/UserIndex.idl84
-rw-r--r--offapi/com/sun/star/text/UserIndexMark.idl63
-rw-r--r--offapi/com/sun/star/text/VertOrientation.idl121
-rw-r--r--offapi/com/sun/star/text/VertOrientationFormat.idl77
-rw-r--r--offapi/com/sun/star/text/ViewSettings.idl362
-rw-r--r--offapi/com/sun/star/text/WebDocument.idl52
-rw-r--r--offapi/com/sun/star/text/WrapInfluenceOnPosition.idl70
-rw-r--r--offapi/com/sun/star/text/WrapTextMode.idl91
-rw-r--r--offapi/com/sun/star/text/WritingMode.idl77
-rw-r--r--offapi/com/sun/star/text/WritingMode2.idl100
-rw-r--r--offapi/com/sun/star/text/XAutoTextContainer.idl107
-rw-r--r--offapi/com/sun/star/text/XAutoTextEntry.idl78
-rw-r--r--offapi/com/sun/star/text/XAutoTextGroup.idl121
-rw-r--r--offapi/com/sun/star/text/XBookmarkInsertTool.idl69
-rw-r--r--offapi/com/sun/star/text/XBookmarksSupplier.idl66
-rw-r--r--offapi/com/sun/star/text/XChapterNumberingSupplier.idl69
-rw-r--r--offapi/com/sun/star/text/XDefaultNumberingProvider.idl79
-rw-r--r--offapi/com/sun/star/text/XDependentTextField.idl101
-rw-r--r--offapi/com/sun/star/text/XDocumentIndex.idl82
-rw-r--r--offapi/com/sun/star/text/XDocumentIndexMark.idl76
-rw-r--r--offapi/com/sun/star/text/XDocumentIndexesSupplier.idl69
-rw-r--r--offapi/com/sun/star/text/XEndnotesSettingsSupplier.idl68
-rw-r--r--offapi/com/sun/star/text/XEndnotesSupplier.idl80
-rw-r--r--offapi/com/sun/star/text/XFlatParagraph.idl201
-rw-r--r--offapi/com/sun/star/text/XFlatParagraphIterator.idl118
-rw-r--r--offapi/com/sun/star/text/XFlatParagraphIteratorProvider.idl87
-rw-r--r--offapi/com/sun/star/text/XFootnote.idl71
-rw-r--r--offapi/com/sun/star/text/XFootnotesSettingsSupplier.idl66
-rw-r--r--offapi/com/sun/star/text/XFootnotesSupplier.idl76
-rw-r--r--offapi/com/sun/star/text/XFormField.idl20
-rw-r--r--offapi/com/sun/star/text/XHeaderFooter.idl73
-rw-r--r--offapi/com/sun/star/text/XHeaderFooterPageStyle.idl74
-rw-r--r--offapi/com/sun/star/text/XLineNumberingProperties.idl60
-rw-r--r--offapi/com/sun/star/text/XLineNumberingSupplier.idl77
-rw-r--r--offapi/com/sun/star/text/XMailMergeBroadcaster.idl83
-rw-r--r--offapi/com/sun/star/text/XMailMergeListener.idl72
-rw-r--r--offapi/com/sun/star/text/XModule.idl53
-rw-r--r--offapi/com/sun/star/text/XMultiTextMarkup.idl79
-rw-r--r--offapi/com/sun/star/text/XNumberingFormatter.idl65
-rw-r--r--offapi/com/sun/star/text/XNumberingRulesSupplier.idl62
-rw-r--r--offapi/com/sun/star/text/XNumberingTypeInfo.idl63
-rw-r--r--offapi/com/sun/star/text/XPageCursor.idl115
-rw-r--r--offapi/com/sun/star/text/XPagePrintable.idl96
-rw-r--r--offapi/com/sun/star/text/XParagraphAppend.idl94
-rw-r--r--offapi/com/sun/star/text/XParagraphCursor.idl105
-rw-r--r--offapi/com/sun/star/text/XRedline.idl73
-rw-r--r--offapi/com/sun/star/text/XReferenceMarksSupplier.idl72
-rw-r--r--offapi/com/sun/star/text/XRelativeTextContentInsert.idl86
-rw-r--r--offapi/com/sun/star/text/XRelativeTextContentRemove.idl82
-rw-r--r--offapi/com/sun/star/text/XRubySelection.idl75
-rw-r--r--offapi/com/sun/star/text/XSentenceCursor.idl105
-rw-r--r--offapi/com/sun/star/text/XSimpleText.idl151
-rw-r--r--offapi/com/sun/star/text/XText.idl105
-rw-r--r--offapi/com/sun/star/text/XTextAppend.idl60
-rw-r--r--offapi/com/sun/star/text/XTextAppendAndConvert.idl61
-rw-r--r--offapi/com/sun/star/text/XTextColumns.idl115
-rw-r--r--offapi/com/sun/star/text/XTextContent.idl100
-rw-r--r--offapi/com/sun/star/text/XTextContentAppend.idl88
-rw-r--r--offapi/com/sun/star/text/XTextConvert.idl117
-rw-r--r--offapi/com/sun/star/text/XTextCopy.idl59
-rw-r--r--offapi/com/sun/star/text/XTextCursor.idl134
-rw-r--r--offapi/com/sun/star/text/XTextDocument.idl76
-rw-r--r--offapi/com/sun/star/text/XTextEmbeddedObject.idl77
-rw-r--r--offapi/com/sun/star/text/XTextEmbeddedObjectsSupplier.idl65
-rw-r--r--offapi/com/sun/star/text/XTextField.idl69
-rw-r--r--offapi/com/sun/star/text/XTextFieldsSupplier.idl80
-rw-r--r--offapi/com/sun/star/text/XTextFrame.idl66
-rw-r--r--offapi/com/sun/star/text/XTextFramesSupplier.idl64
-rw-r--r--offapi/com/sun/star/text/XTextGraphicObjectsSupplier.idl65
-rw-r--r--offapi/com/sun/star/text/XTextMarkup.idl90
-rw-r--r--offapi/com/sun/star/text/XTextPortionAppend.idl86
-rw-r--r--offapi/com/sun/star/text/XTextRange.idl104
-rw-r--r--offapi/com/sun/star/text/XTextRangeCompare.idl94
-rw-r--r--offapi/com/sun/star/text/XTextRangeMover.idl73
-rw-r--r--offapi/com/sun/star/text/XTextSection.idl68
-rw-r--r--offapi/com/sun/star/text/XTextSectionsSupplier.idl64
-rw-r--r--offapi/com/sun/star/text/XTextShapesSupplier.idl65
-rw-r--r--offapi/com/sun/star/text/XTextTable.idl143
-rw-r--r--offapi/com/sun/star/text/XTextTableCursor.idl179
-rw-r--r--offapi/com/sun/star/text/XTextTablesSupplier.idl64
-rw-r--r--offapi/com/sun/star/text/XTextViewCursor.idl80
-rw-r--r--offapi/com/sun/star/text/XTextViewCursorSupplier.idl71
-rw-r--r--offapi/com/sun/star/text/XWordCursor.idl113
-rw-r--r--offapi/com/sun/star/text/fieldmaster/Bibliography.idl100
-rw-r--r--offapi/com/sun/star/text/fieldmaster/DDE.idl73
-rw-r--r--offapi/com/sun/star/text/fieldmaster/Database.idl96
-rw-r--r--offapi/com/sun/star/text/fieldmaster/SetExpression.idl67
-rw-r--r--offapi/com/sun/star/text/fieldmaster/User.idl65
-rw-r--r--offapi/com/sun/star/text/fieldmaster/makefile.mk50
-rw-r--r--offapi/com/sun/star/text/makefile.mk278
-rw-r--r--offapi/com/sun/star/text/textfield/Annotation.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/Author.idl74
-rw-r--r--offapi/com/sun/star/text/textfield/Bibliography.idl58
-rw-r--r--offapi/com/sun/star/text/textfield/Chapter.idl60
-rw-r--r--offapi/com/sun/star/text/textfield/CharacterCount.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/CombinedCharacters.idl55
-rw-r--r--offapi/com/sun/star/text/textfield/ConditionalText.idl70
-rw-r--r--offapi/com/sun/star/text/textfield/DDE.idl54
-rw-r--r--offapi/com/sun/star/text/textfield/Database.idl69
-rw-r--r--offapi/com/sun/star/text/textfield/DatabaseName.idl81
-rw-r--r--offapi/com/sun/star/text/textfield/DatabaseNextSet.idl85
-rw-r--r--offapi/com/sun/star/text/textfield/DatabaseNumberOfSet.idl90
-rw-r--r--offapi/com/sun/star/text/textfield/DatabaseSetNumber.idl91
-rw-r--r--offapi/com/sun/star/text/textfield/DateTime.idl98
-rw-r--r--offapi/com/sun/star/text/textfield/DropDown.idl70
-rw-r--r--offapi/com/sun/star/text/textfield/EmbeddedObjectCount.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/ExtendedUser.idl67
-rw-r--r--offapi/com/sun/star/text/textfield/FileName.idl63
-rw-r--r--offapi/com/sun/star/text/textfield/GetExpression.idl85
-rw-r--r--offapi/com/sun/star/text/textfield/GetReference.idl74
-rw-r--r--offapi/com/sun/star/text/textfield/GraphicObjectCount.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/HiddenParagraph.idl60
-rw-r--r--offapi/com/sun/star/text/textfield/HiddenText.idl64
-rw-r--r--offapi/com/sun/star/text/textfield/Input.idl73
-rw-r--r--offapi/com/sun/star/text/textfield/InputUser.idl63
-rw-r--r--offapi/com/sun/star/text/textfield/JumpEdit.idl62
-rw-r--r--offapi/com/sun/star/text/textfield/Macro.idl61
-rwxr-xr-xoffapi/com/sun/star/text/textfield/MetadataField.idl111
-rw-r--r--offapi/com/sun/star/text/textfield/PageCount.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/PageNumber.idl70
-rw-r--r--offapi/com/sun/star/text/textfield/ParagraphCount.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/ReferencePageGet.idl58
-rw-r--r--offapi/com/sun/star/text/textfield/ReferencePageSet.idl59
-rw-r--r--offapi/com/sun/star/text/textfield/Script.idl62
-rw-r--r--offapi/com/sun/star/text/textfield/SetExpression.idl101
-rw-r--r--offapi/com/sun/star/text/textfield/TableCount.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/TableFormula.idl68
-rw-r--r--offapi/com/sun/star/text/textfield/TemplateName.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/URL.idl70
-rw-r--r--offapi/com/sun/star/text/textfield/User.idl72
-rw-r--r--offapi/com/sun/star/text/textfield/WordCount.idl57
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/ChangeAuthor.idl66
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/ChangeDateTime.idl83
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/CreateAuthor.idl66
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/CreateDateTime.idl83
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Custom.idl70
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Description.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/EditTime.idl78
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Info0.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Info1.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Info2.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Info3.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Keywords.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/PrintAuthor.idl66
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/PrintDateTime.idl83
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Revision.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Subject.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/Title.idl65
-rw-r--r--offapi/com/sun/star/text/textfield/docinfo/makefile.mk63
-rw-r--r--offapi/com/sun/star/text/textfield/makefile.mk86
-rw-r--r--offapi/com/sun/star/ucb/AlreadyInitializedException.idl54
-rw-r--r--offapi/com/sun/star/ucb/AnyCompareFactory.idl57
-rw-r--r--offapi/com/sun/star/ucb/AuthenticationRequest.idl114
-rw-r--r--offapi/com/sun/star/ucb/CHAOSProgressStart.idl69
-rw-r--r--offapi/com/sun/star/ucb/CachedContentResultSet.idl84
-rw-r--r--offapi/com/sun/star/ucb/CachedContentResultSetFactory.idl55
-rw-r--r--offapi/com/sun/star/ucb/CachedContentResultSetStub.idl76
-rw-r--r--offapi/com/sun/star/ucb/CachedContentResultSetStubFactory.idl55
-rw-r--r--offapi/com/sun/star/ucb/CachedDynamicResultSet.idl83
-rw-r--r--offapi/com/sun/star/ucb/CachedDynamicResultSetFactory.idl56
-rw-r--r--offapi/com/sun/star/ucb/CachedDynamicResultSetStub.idl84
-rw-r--r--offapi/com/sun/star/ucb/CachedDynamicResultSetStubFactory.idl56
-rwxr-xr-xoffapi/com/sun/star/ucb/CertificateValidationRequest.idl65
-rw-r--r--offapi/com/sun/star/ucb/Command.idl70
-rw-r--r--offapi/com/sun/star/ucb/CommandAbortedException.idl55
-rw-r--r--offapi/com/sun/star/ucb/CommandEnvironment.idl64
-rw-r--r--offapi/com/sun/star/ucb/CommandFailedException.idl65
-rw-r--r--offapi/com/sun/star/ucb/CommandInfo.idl68
-rw-r--r--offapi/com/sun/star/ucb/CommandInfoChange.idl58
-rw-r--r--offapi/com/sun/star/ucb/CommandInfoChangeEvent.idl71
-rw-r--r--offapi/com/sun/star/ucb/ConnectionMode.idl59
-rw-r--r--offapi/com/sun/star/ucb/Content.idl756
-rw-r--r--offapi/com/sun/star/ucb/ContentAction.idl161
-rw-r--r--offapi/com/sun/star/ucb/ContentCreationError.idl75
-rw-r--r--offapi/com/sun/star/ucb/ContentCreationException.idl60
-rw-r--r--offapi/com/sun/star/ucb/ContentEvent.idl114
-rw-r--r--offapi/com/sun/star/ucb/ContentInfo.idl108
-rw-r--r--offapi/com/sun/star/ucb/ContentInfoAttribute.idl78
-rw-r--r--offapi/com/sun/star/ucb/ContentProvider.idl88
-rw-r--r--offapi/com/sun/star/ucb/ContentProviderInfo.idl62
-rw-r--r--offapi/com/sun/star/ucb/ContentProviderProxy.idl95
-rw-r--r--offapi/com/sun/star/ucb/ContentProviderProxyFactory.idl55
-rw-r--r--offapi/com/sun/star/ucb/ContentResultSet.idl233
-rw-r--r--offapi/com/sun/star/ucb/ContentResultSetCapability.idl53
-rw-r--r--offapi/com/sun/star/ucb/ContentTransmitter.idl60
-rw-r--r--offapi/com/sun/star/ucb/Cookie.idl89
-rw-r--r--offapi/com/sun/star/ucb/CookiePolicy.idl61
-rw-r--r--offapi/com/sun/star/ucb/CookieRequest.idl56
-rw-r--r--offapi/com/sun/star/ucb/CrossReference.idl61
-rw-r--r--offapi/com/sun/star/ucb/DefaultHierarchyDataSource.idl64
-rw-r--r--offapi/com/sun/star/ucb/DocumentHeaderField.idl57
-rw-r--r--offapi/com/sun/star/ucb/DocumentStoreMode.idl59
-rw-r--r--offapi/com/sun/star/ucb/DuplicateCommandIdentifierException.idl60
-rw-r--r--offapi/com/sun/star/ucb/DuplicateProviderException.idl55
-rw-r--r--offapi/com/sun/star/ucb/DynamicResultSet.idl62
-rw-r--r--offapi/com/sun/star/ucb/Error.idl444
-rw-r--r--offapi/com/sun/star/ucb/ExpandContentProvider.idl55
-rw-r--r--offapi/com/sun/star/ucb/ExportStreamInfo.idl61
-rw-r--r--offapi/com/sun/star/ucb/FTPContent.idl233
-rw-r--r--offapi/com/sun/star/ucb/FTPContentProvider.idl69
-rw-r--r--offapi/com/sun/star/ucb/FetchError.idl71
-rw-r--r--offapi/com/sun/star/ucb/FetchResult.idl86
-rw-r--r--offapi/com/sun/star/ucb/FileContent.idl268
-rw-r--r--offapi/com/sun/star/ucb/FileContentProvider.idl115
-rw-r--r--offapi/com/sun/star/ucb/FileSystemNotation.idl70
-rw-r--r--offapi/com/sun/star/ucb/FolderList.idl64
-rw-r--r--offapi/com/sun/star/ucb/FolderListCommand.idl62
-rw-r--r--offapi/com/sun/star/ucb/FolderListEntry.idl78
-rw-r--r--offapi/com/sun/star/ucb/GIOContentProvider.idl15
-rw-r--r--offapi/com/sun/star/ucb/GlobalTransferCommandArgument.idl84
-rw-r--r--offapi/com/sun/star/ucb/GnomeVFSContentProvider.idl21
-rw-r--r--offapi/com/sun/star/ucb/GnomeVFSDocumentContent.idl97
-rw-r--r--offapi/com/sun/star/ucb/GnomeVFSFolderContent.idl109
-rw-r--r--offapi/com/sun/star/ucb/HandleCookiesRequest.idl73
-rw-r--r--offapi/com/sun/star/ucb/HelpContent.idl215
-rw-r--r--offapi/com/sun/star/ucb/HelpContentProvider.idl66
-rw-r--r--offapi/com/sun/star/ucb/HierarchyContentProvider.idl112
-rw-r--r--offapi/com/sun/star/ucb/HierarchyDataReadAccess.idl171
-rw-r--r--offapi/com/sun/star/ucb/HierarchyDataReadWriteAccess.idl105
-rw-r--r--offapi/com/sun/star/ucb/HierarchyDataSource.idl119
-rw-r--r--offapi/com/sun/star/ucb/HierarchyFolderContent.idl228
-rw-r--r--offapi/com/sun/star/ucb/HierarchyLinkContent.idl191
-rw-r--r--offapi/com/sun/star/ucb/HierarchyRootFolderContent.idl226
-rw-r--r--offapi/com/sun/star/ucb/IOErrorCode.idl233
-rw-r--r--offapi/com/sun/star/ucb/IllegalIdentifierException.idl55
-rw-r--r--offapi/com/sun/star/ucb/InsertCommandArgument.idl72
-rw-r--r--offapi/com/sun/star/ucb/InteractiveAppException.idl60
-rw-r--r--offapi/com/sun/star/ucb/InteractiveAugmentedIOException.idl57
-rw-r--r--offapi/com/sun/star/ucb/InteractiveBadTransferURLException.idl53
-rw-r--r--offapi/com/sun/star/ucb/InteractiveCHAOSException.idl68
-rw-r--r--offapi/com/sun/star/ucb/InteractiveFileIOException.idl63
-rw-r--r--offapi/com/sun/star/ucb/InteractiveIOException.idl58
-rw-r--r--offapi/com/sun/star/ucb/InteractiveLockingException.idl58
-rw-r--r--offapi/com/sun/star/ucb/InteractiveLockingLockExpiredException.idl53
-rw-r--r--offapi/com/sun/star/ucb/InteractiveLockingLockedException.idl59
-rw-r--r--offapi/com/sun/star/ucb/InteractiveLockingNotLockedException.idl56
-rw-r--r--offapi/com/sun/star/ucb/InteractiveNetworkConnectException.idl55
-rw-r--r--offapi/com/sun/star/ucb/InteractiveNetworkException.idl52
-rw-r--r--offapi/com/sun/star/ucb/InteractiveNetworkGeneralException.idl50
-rw-r--r--offapi/com/sun/star/ucb/InteractiveNetworkOffLineException.idl50
-rw-r--r--offapi/com/sun/star/ucb/InteractiveNetworkReadException.idl56
-rw-r--r--offapi/com/sun/star/ucb/InteractiveNetworkResolveNameException.idl55
-rw-r--r--offapi/com/sun/star/ucb/InteractiveNetworkWriteException.idl56
-rw-r--r--offapi/com/sun/star/ucb/InteractiveWrongMediumException.idl55
-rw-r--r--offapi/com/sun/star/ucb/Link.idl56
-rw-r--r--offapi/com/sun/star/ucb/ListAction.idl122
-rw-r--r--offapi/com/sun/star/ucb/ListActionType.idl191
-rw-r--r--offapi/com/sun/star/ucb/ListEvent.idl60
-rw-r--r--offapi/com/sun/star/ucb/ListenerAlreadySetException.idl54
-rw-r--r--offapi/com/sun/star/ucb/Lock.idl83
-rw-r--r--offapi/com/sun/star/ucb/LockDepth.idl61
-rw-r--r--offapi/com/sun/star/ucb/LockEntry.idl61
-rw-r--r--offapi/com/sun/star/ucb/LockScope.idl57
-rw-r--r--offapi/com/sun/star/ucb/LockType.idl63
-rw-r--r--offapi/com/sun/star/ucb/MissingInputStreamException.idl59
-rw-r--r--offapi/com/sun/star/ucb/MissingPropertiesException.idl62
-rw-r--r--offapi/com/sun/star/ucb/NameClash.idl78
-rw-r--r--offapi/com/sun/star/ucb/NameClashException.idl53
-rw-r--r--offapi/com/sun/star/ucb/NameClashResolveRequest.idl83
-rw-r--r--offapi/com/sun/star/ucb/NumberedSortingInfo.idl58
-rw-r--r--offapi/com/sun/star/ucb/ODMAContent.idl211
-rw-r--r--offapi/com/sun/star/ucb/ODMAContentProvider.idl90
-rw-r--r--offapi/com/sun/star/ucb/OpenCommandArgument.idl93
-rw-r--r--offapi/com/sun/star/ucb/OpenCommandArgument2.idl67
-rw-r--r--offapi/com/sun/star/ucb/OpenMode.idl94
-rw-r--r--offapi/com/sun/star/ucb/OutgoingMessageState.idl88
-rw-r--r--offapi/com/sun/star/ucb/PackageContentProvider.idl132
-rw-r--r--offapi/com/sun/star/ucb/PackageFolderContent.idl256
-rw-r--r--offapi/com/sun/star/ucb/PackageStreamContent.idl206
-rw-r--r--offapi/com/sun/star/ucb/PersistentPropertySet.idl78
-rw-r--r--offapi/com/sun/star/ucb/PostCommandArgument.idl63
-rw-r--r--offapi/com/sun/star/ucb/PostCommandArgument2.idl62
-rw-r--r--offapi/com/sun/star/ucb/Priority.idl74
-rw-r--r--offapi/com/sun/star/ucb/PropertiesManager.idl59
-rw-r--r--offapi/com/sun/star/ucb/PropertySetRegistry.idl62
-rw-r--r--offapi/com/sun/star/ucb/PropertyValueInfo.idl60
-rw-r--r--offapi/com/sun/star/ucb/PropertyValueState.idl71
-rw-r--r--offapi/com/sun/star/ucb/RecipientInfo.idl129
-rw-r--r--offapi/com/sun/star/ucb/RememberAuthentication.idl63
-rw-r--r--offapi/com/sun/star/ucb/RemoteAccessContentProvider.idl75
-rw-r--r--offapi/com/sun/star/ucb/RemoteContentProviderAcceptor.idl62
-rw-r--r--offapi/com/sun/star/ucb/RemoteContentProviderChangeAction.idl58
-rw-r--r--offapi/com/sun/star/ucb/RemoteContentProviderChangeEvent.idl65
-rw-r--r--offapi/com/sun/star/ucb/RemoteProxyContentProvider.idl77
-rw-r--r--offapi/com/sun/star/ucb/ResultSetException.idl54
-rw-r--r--offapi/com/sun/star/ucb/Rule.idl91
-rw-r--r--offapi/com/sun/star/ucb/RuleAction.idl112
-rw-r--r--offapi/com/sun/star/ucb/RuleOperator.idl92
-rw-r--r--offapi/com/sun/star/ucb/RuleSet.idl65
-rw-r--r--offapi/com/sun/star/ucb/RuleTerm.idl79
-rw-r--r--offapi/com/sun/star/ucb/SearchCommandArgument.idl69
-rw-r--r--offapi/com/sun/star/ucb/SearchCriterium.idl56
-rw-r--r--offapi/com/sun/star/ucb/SearchInfo.idl90
-rw-r--r--offapi/com/sun/star/ucb/SearchRecursion.idl64
-rw-r--r--offapi/com/sun/star/ucb/SendInfo.idl59
-rw-r--r--offapi/com/sun/star/ucb/SendMediaTypes.idl58
-rw-r--r--offapi/com/sun/star/ucb/ServiceNotFoundException.idl50
-rw-r--r--offapi/com/sun/star/ucb/SimpleFileAccess.idl56
-rw-r--r--offapi/com/sun/star/ucb/SortedDynamicResultSetFactory.idl56
-rw-r--r--offapi/com/sun/star/ucb/SortingInfo.idl56
-rw-r--r--offapi/com/sun/star/ucb/Store.idl54
-rw-r--r--offapi/com/sun/star/ucb/SynchronizePolicy.idl64
-rw-r--r--offapi/com/sun/star/ucb/TransferCommandOperation.idl59
-rw-r--r--offapi/com/sun/star/ucb/TransferInfo.idl87
-rw-r--r--offapi/com/sun/star/ucb/TransferResult.idl60
-rw-r--r--offapi/com/sun/star/ucb/TransientDocumentsContentProvider.idl158
-rw-r--r--offapi/com/sun/star/ucb/TransientDocumentsDocumentContent.idl230
-rw-r--r--offapi/com/sun/star/ucb/TransientDocumentsFolderContent.idl240
-rw-r--r--offapi/com/sun/star/ucb/TransientDocumentsRootContent.idl190
-rw-r--r--offapi/com/sun/star/ucb/TransientDocumentsStreamContent.idl197
-rw-r--r--offapi/com/sun/star/ucb/URLAuthenticationRequest.idl57
-rw-r--r--offapi/com/sun/star/ucb/UniversalContentBroker.idl200
-rw-r--r--offapi/com/sun/star/ucb/UnsupportedCommandException.idl55
-rw-r--r--offapi/com/sun/star/ucb/UnsupportedDataSinkException.idl65
-rw-r--r--offapi/com/sun/star/ucb/UnsupportedNameClashException.idl73
-rw-r--r--offapi/com/sun/star/ucb/UnsupportedOpenModeException.idl62
-rw-r--r--offapi/com/sun/star/ucb/VerificationMode.idl64
-rw-r--r--offapi/com/sun/star/ucb/WebDAVContentProvider.idl117
-rw-r--r--offapi/com/sun/star/ucb/WebDAVDocumentContent.idl211
-rw-r--r--offapi/com/sun/star/ucb/WebDAVFolderContent.idl243
-rw-r--r--offapi/com/sun/star/ucb/WelcomeDynamicResultSetStruct.idl66
-rw-r--r--offapi/com/sun/star/ucb/XAnyCompare.idl74
-rw-r--r--offapi/com/sun/star/ucb/XAnyCompareFactory.idl69
-rw-r--r--offapi/com/sun/star/ucb/XCachedContentResultSetFactory.idl76
-rw-r--r--offapi/com/sun/star/ucb/XCachedContentResultSetStubFactory.idl66
-rw-r--r--offapi/com/sun/star/ucb/XCachedDynamicResultSetFactory.idl86
-rw-r--r--offapi/com/sun/star/ucb/XCachedDynamicResultSetStubFactory.idl127
-rw-r--r--offapi/com/sun/star/ucb/XCommandEnvironment.idl83
-rw-r--r--offapi/com/sun/star/ucb/XCommandInfo.idl123
-rw-r--r--offapi/com/sun/star/ucb/XCommandInfoChangeListener.idl66
-rw-r--r--offapi/com/sun/star/ucb/XCommandInfoChangeNotifier.idl74
-rw-r--r--offapi/com/sun/star/ucb/XCommandProcessor.idl153
-rw-r--r--offapi/com/sun/star/ucb/XCommandProcessor2.idl69
-rw-r--r--offapi/com/sun/star/ucb/XContent.idl103
-rw-r--r--offapi/com/sun/star/ucb/XContentAccess.idl90
-rw-r--r--offapi/com/sun/star/ucb/XContentCreator.idl97
-rw-r--r--offapi/com/sun/star/ucb/XContentEventListener.idl65
-rw-r--r--offapi/com/sun/star/ucb/XContentIdentifier.idl88
-rw-r--r--offapi/com/sun/star/ucb/XContentIdentifierFactory.idl69
-rw-r--r--offapi/com/sun/star/ucb/XContentIdentifierMapping.idl125
-rw-r--r--offapi/com/sun/star/ucb/XContentProvider.idl103
-rw-r--r--offapi/com/sun/star/ucb/XContentProviderFactory.idl68
-rw-r--r--offapi/com/sun/star/ucb/XContentProviderManager.idl184
-rw-r--r--offapi/com/sun/star/ucb/XContentProviderSupplier.idl64
-rw-r--r--offapi/com/sun/star/ucb/XContentTransmitter.idl65
-rw-r--r--offapi/com/sun/star/ucb/XDataContainer.idl104
-rw-r--r--offapi/com/sun/star/ucb/XDynamicResultSet.idl207
-rw-r--r--offapi/com/sun/star/ucb/XDynamicResultSetListener.idl80
-rw-r--r--offapi/com/sun/star/ucb/XFetchProvider.idl76
-rw-r--r--offapi/com/sun/star/ucb/XFetchProviderForContentAccess.idl125
-rw-r--r--offapi/com/sun/star/ucb/XFileIdentifierConverter.idl100
-rw-r--r--offapi/com/sun/star/ucb/XInteractionCookieHandling.idl90
-rw-r--r--offapi/com/sun/star/ucb/XInteractionHandlerSupplier.idl65
-rw-r--r--offapi/com/sun/star/ucb/XInteractionReplaceExistingData.idl57
-rw-r--r--offapi/com/sun/star/ucb/XInteractionSupplyAuthentication.idl177
-rw-r--r--offapi/com/sun/star/ucb/XInteractionSupplyAuthentication2.idl78
-rw-r--r--offapi/com/sun/star/ucb/XInteractionSupplyName.idl63
-rw-r--r--offapi/com/sun/star/ucb/XParameterizedContentProvider.idl118
-rw-r--r--offapi/com/sun/star/ucb/XPersistentPropertySet.idl71
-rw-r--r--offapi/com/sun/star/ucb/XProgressHandler.idl83
-rw-r--r--offapi/com/sun/star/ucb/XPropertyMatcher.idl74
-rw-r--r--offapi/com/sun/star/ucb/XPropertyMatcherFactory.idl68
-rw-r--r--offapi/com/sun/star/ucb/XPropertySetRegistry.idl80
-rw-r--r--offapi/com/sun/star/ucb/XPropertySetRegistryFactory.idl68
-rw-r--r--offapi/com/sun/star/ucb/XRecycler.idl77
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderAcceptor.idl105
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderActivator.idl74
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderChangeListener.idl64
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderChangeNotifier.idl74
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderConnectionControl.idl79
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderDistributor.idl106
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderDoneListener.idl64
-rw-r--r--offapi/com/sun/star/ucb/XRemoteContentProviderSupplier.idl69
-rw-r--r--offapi/com/sun/star/ucb/XSimpleFileAccess.idl292
-rw-r--r--offapi/com/sun/star/ucb/XSimpleFileAccess2.idl74
-rw-r--r--offapi/com/sun/star/ucb/XSimpleFileAccess3.idl83
-rw-r--r--offapi/com/sun/star/ucb/XSortedDynamicResultSetFactory.idl81
-rw-r--r--offapi/com/sun/star/ucb/XSourceInitialization.idl77
-rw-r--r--offapi/com/sun/star/ucb/XWebDAVCommandEnvironment.idl77
-rw-r--r--offapi/com/sun/star/ucb/makefile.mk274
-rw-r--r--offapi/com/sun/star/ucb/smart/makefile.mk49
-rw-r--r--offapi/com/sun/star/ui/ActionTrigger.idl68
-rw-r--r--offapi/com/sun/star/ui/ActionTriggerContainer.idl97
-rw-r--r--offapi/com/sun/star/ui/ActionTriggerSeparator.idl45
-rw-r--r--offapi/com/sun/star/ui/ActionTriggerSeparatorType.idl52
-rw-r--r--offapi/com/sun/star/ui/ConfigurableUIElement.idl128
-rw-r--r--offapi/com/sun/star/ui/ConfigurationEvent.idl59
-rw-r--r--offapi/com/sun/star/ui/ContextMenuExecuteEvent.idl66
-rw-r--r--offapi/com/sun/star/ui/ContextMenuInterceptorAction.idl58
-rw-r--r--offapi/com/sun/star/ui/DockingArea.idl76
-rw-r--r--offapi/com/sun/star/ui/GlobalAcceleratorConfiguration.idl50
-rw-r--r--offapi/com/sun/star/ui/ImageType.idl64
-rw-r--r--offapi/com/sun/star/ui/ItemDescriptor.idl102
-rw-r--r--offapi/com/sun/star/ui/ItemStyle.idl158
-rw-r--r--offapi/com/sun/star/ui/ItemType.idl59
-rw-r--r--offapi/com/sun/star/ui/ModuleUICategoryDescription.idl77
-rw-r--r--offapi/com/sun/star/ui/ModuleUICommandDescription.idl84
-rw-r--r--offapi/com/sun/star/ui/ModuleUIConfigurationManager.idl117
-rw-r--r--offapi/com/sun/star/ui/ModuleUIConfigurationManagerSupplier.idl66
-rw-r--r--offapi/com/sun/star/ui/ModuleWindowStateConfiguration.idl98
-rw-r--r--offapi/com/sun/star/ui/UICategoryDescription.idl77
-rw-r--r--offapi/com/sun/star/ui/UICommandDescription.idl71
-rw-r--r--offapi/com/sun/star/ui/UIConfigurationManager.idl94
-rw-r--r--offapi/com/sun/star/ui/UIElement.idl112
-rw-r--r--offapi/com/sun/star/ui/UIElementFactory.idl67
-rw-r--r--offapi/com/sun/star/ui/UIElementFactoryManager.idl76
-rw-r--r--offapi/com/sun/star/ui/UIElementSettings.idl94
-rw-r--r--offapi/com/sun/star/ui/UIElementType.idl88
-rw-r--r--offapi/com/sun/star/ui/WindowContentFactory.idl59
-rw-r--r--offapi/com/sun/star/ui/WindowStateConfiguration.idl74
-rw-r--r--offapi/com/sun/star/ui/XAcceleratorConfiguration.idl304
-rw-r--r--offapi/com/sun/star/ui/XContextMenuInterception.idl57
-rw-r--r--offapi/com/sun/star/ui/XContextMenuInterceptor.idl57
-rw-r--r--offapi/com/sun/star/ui/XDockingAreaAcceptor.idl119
-rw-r--r--offapi/com/sun/star/ui/XImageManager.idl256
-rw-r--r--offapi/com/sun/star/ui/XModuleUIConfigurationManager.idl113
-rw-r--r--offapi/com/sun/star/ui/XModuleUIConfigurationManagerSupplier.idl71
-rw-r--r--offapi/com/sun/star/ui/XToolPanel.idl64
-rw-r--r--offapi/com/sun/star/ui/XUIConfiguration.idl85
-rw-r--r--offapi/com/sun/star/ui/XUIConfigurationListener.idl87
-rw-r--r--offapi/com/sun/star/ui/XUIConfigurationManager.idl274
-rw-r--r--offapi/com/sun/star/ui/XUIConfigurationManagerSupplier.idl61
-rw-r--r--offapi/com/sun/star/ui/XUIConfigurationPersistence.idl105
-rw-r--r--offapi/com/sun/star/ui/XUIConfigurationStorage.idl86
-rw-r--r--offapi/com/sun/star/ui/XUIElement.idl97
-rw-r--r--offapi/com/sun/star/ui/XUIElementFactory.idl130
-rw-r--r--offapi/com/sun/star/ui/XUIElementFactoryRegistration.idl182
-rw-r--r--offapi/com/sun/star/ui/XUIElementSettings.idl102
-rw-r--r--offapi/com/sun/star/ui/XUIFunctionListener.idl64
-rw-r--r--offapi/com/sun/star/ui/dialogs/CommonFilePickerElementIds.idl86
-rw-r--r--offapi/com/sun/star/ui/dialogs/ControlActions.idl111
-rw-r--r--offapi/com/sun/star/ui/dialogs/DialogClosedEvent.idl65
-rw-r--r--offapi/com/sun/star/ui/dialogs/ExecutableDialogException.idl54
-rw-r--r--offapi/com/sun/star/ui/dialogs/ExecutableDialogResults.idl58
-rw-r--r--offapi/com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.idl127
-rw-r--r--offapi/com/sun/star/ui/dialogs/FilePicker.idl165
-rw-r--r--offapi/com/sun/star/ui/dialogs/FilePickerEvent.idl62
-rw-r--r--offapi/com/sun/star/ui/dialogs/FilePreviewImageFormats.idl53
-rw-r--r--offapi/com/sun/star/ui/dialogs/FilterOptionsDialog.idl89
-rw-r--r--offapi/com/sun/star/ui/dialogs/FolderPicker.idl88
-rw-r--r--offapi/com/sun/star/ui/dialogs/ListboxControlActions.idl91
-rw-r--r--offapi/com/sun/star/ui/dialogs/TemplateDescription.idl143
-rw-r--r--offapi/com/sun/star/ui/dialogs/Wizard.idl75
-rw-r--r--offapi/com/sun/star/ui/dialogs/WizardButton.idl60
-rw-r--r--offapi/com/sun/star/ui/dialogs/WizardTravelType.idl54
-rw-r--r--offapi/com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.idl72
-rw-r--r--offapi/com/sun/star/ui/dialogs/XControlAccess.idl105
-rw-r--r--offapi/com/sun/star/ui/dialogs/XControlInformation.idl111
-rw-r--r--offapi/com/sun/star/ui/dialogs/XDialogClosedListener.idl68
-rw-r--r--offapi/com/sun/star/ui/dialogs/XExecutableDialog.idl75
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilePicker.idl145
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilePicker2.idl75
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilePickerControlAccess.idl153
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilePickerListener.idl120
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilePickerNotifier.idl75
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilePreview.idl144
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilterGroupManager.idl80
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFilterManager.idl97
-rw-r--r--offapi/com/sun/star/ui/dialogs/XFolderPicker.idl100
-rw-r--r--offapi/com/sun/star/ui/dialogs/XWizard.idl228
-rw-r--r--offapi/com/sun/star/ui/dialogs/XWizardController.idl85
-rw-r--r--offapi/com/sun/star/ui/dialogs/XWizardPage.idl86
-rw-r--r--offapi/com/sun/star/ui/dialogs/makefile.mk79
-rw-r--r--offapi/com/sun/star/ui/makefile.mk93
-rw-r--r--offapi/com/sun/star/util/AliasProgrammaticPair.idl56
-rw-r--r--offapi/com/sun/star/util/AtomClassRequest.idl61
-rw-r--r--offapi/com/sun/star/util/AtomDescription.idl60
-rw-r--r--offapi/com/sun/star/util/CellProtection.idl66
-rw-r--r--offapi/com/sun/star/util/ChangesEvent.idl77
-rw-r--r--offapi/com/sun/star/util/ChangesSet.idl61
-rw-r--r--offapi/com/sun/star/util/CloseVetoException.idl52
-rw-r--r--offapi/com/sun/star/util/Color.idl52
-rw-r--r--offapi/com/sun/star/util/DataEditorEvent.idl55
-rw-r--r--offapi/com/sun/star/util/DataEditorEventType.idl51
-rw-r--r--offapi/com/sun/star/util/Date.idl63
-rw-r--r--offapi/com/sun/star/util/DateTime.idl87
-rw-r--r--offapi/com/sun/star/util/DateTimeRange.idl116
-rw-r--r--offapi/com/sun/star/util/DiskFullException.idl51
-rw-r--r--offapi/com/sun/star/util/Duration.idl101
-rw-r--r--offapi/com/sun/star/util/ElementChange.idl65
-rw-r--r--offapi/com/sun/star/util/Endianness.idl64
-rw-r--r--offapi/com/sun/star/util/FileIOException.idl50
-rw-r--r--offapi/com/sun/star/util/InvalidStateException.idl50
-rw-r--r--offapi/com/sun/star/util/JobManager.idl46
-rw-r--r--offapi/com/sun/star/util/Language.idl44
-rw-r--r--offapi/com/sun/star/util/MalformedNumberFormatException.idl60
-rw-r--r--offapi/com/sun/star/util/MeasureUnit.idl106
-rw-r--r--offapi/com/sun/star/util/ModeChangeEvent.idl63
-rw-r--r--offapi/com/sun/star/util/NotNumericException.idl51
-rw-r--r--offapi/com/sun/star/util/NumberFormat.idl126
-rw-r--r--offapi/com/sun/star/util/NumberFormatProperties.idl81
-rw-r--r--offapi/com/sun/star/util/NumberFormatSettings.idl88
-rw-r--r--offapi/com/sun/star/util/NumberFormats.idl64
-rw-r--r--offapi/com/sun/star/util/NumberFormatsSupplier.idl77
-rw-r--r--offapi/com/sun/star/util/NumberFormatter.idl69
-rw-r--r--offapi/com/sun/star/util/OfficeInstallationDirectories.idl79
-rw-r--r--offapi/com/sun/star/util/PathSettings.idl173
-rw-r--r--offapi/com/sun/star/util/PathSubstitution.idl108
-rw-r--r--offapi/com/sun/star/util/ReplaceDescriptor.idl59
-rw-r--r--offapi/com/sun/star/util/RevisionTag.idl71
-rw-r--r--offapi/com/sun/star/util/SearchDescriptor.idl140
-rw-r--r--offapi/com/sun/star/util/SortDescriptor.idl111
-rw-r--r--offapi/com/sun/star/util/SortDescriptor2.idl57
-rw-r--r--offapi/com/sun/star/util/SortField.idl67
-rw-r--r--offapi/com/sun/star/util/SortFieldType.idl64
-rw-r--r--offapi/com/sun/star/util/Sortable.idl67
-rw-r--r--offapi/com/sun/star/util/TextSearch.idl53
-rw-r--r--offapi/com/sun/star/util/Time.idl66
-rw-r--r--offapi/com/sun/star/util/TriState.idl66
-rw-r--r--offapi/com/sun/star/util/URL.idl131
-rw-r--r--offapi/com/sun/star/util/URLTransformer.idl54
-rw-r--r--offapi/com/sun/star/util/UriAbbreviation.idl48
-rw-r--r--offapi/com/sun/star/util/VetoException.idl54
-rw-r--r--offapi/com/sun/star/util/XArchiver.idl80
-rw-r--r--offapi/com/sun/star/util/XAtomServer.idl146
-rw-r--r--offapi/com/sun/star/util/XBroadcaster.idl84
-rw-r--r--offapi/com/sun/star/util/XCancelManager.idl67
-rw-r--r--offapi/com/sun/star/util/XCancellable.idl58
-rw-r--r--offapi/com/sun/star/util/XChainable.idl83
-rw-r--r--offapi/com/sun/star/util/XChangesBatch.idl86
-rw-r--r--offapi/com/sun/star/util/XChangesListener.idl64
-rw-r--r--offapi/com/sun/star/util/XChangesNotifier.idl64
-rw-r--r--offapi/com/sun/star/util/XChangesSet.idl73
-rw-r--r--offapi/com/sun/star/util/XCloneable.idl56
-rw-r--r--offapi/com/sun/star/util/XCloseBroadcaster.idl80
-rw-r--r--offapi/com/sun/star/util/XCloseListener.idl139
-rw-r--r--offapi/com/sun/star/util/XCloseable.idl135
-rw-r--r--offapi/com/sun/star/util/XDataEditor.idl76
-rw-r--r--offapi/com/sun/star/util/XDataEditorListener.idl56
-rw-r--r--offapi/com/sun/star/util/XFlushListener.idl60
-rw-r--r--offapi/com/sun/star/util/XFlushable.idl70
-rw-r--r--offapi/com/sun/star/util/XImportable.idl71
-rw-r--r--offapi/com/sun/star/util/XIndent.idl60
-rw-r--r--offapi/com/sun/star/util/XJobManager.idl65
-rw-r--r--offapi/com/sun/star/util/XLinkUpdate.idl59
-rw-r--r--offapi/com/sun/star/util/XLocalizedAliases.idl117
-rw-r--r--offapi/com/sun/star/util/XMergeable.idl63
-rw-r--r--offapi/com/sun/star/util/XModeChangeApproveListener.idl74
-rw-r--r--offapi/com/sun/star/util/XModeChangeBroadcaster.idl97
-rw-r--r--offapi/com/sun/star/util/XModeChangeListener.idl63
-rw-r--r--offapi/com/sun/star/util/XModeSelector.idl78
-rw-r--r--offapi/com/sun/star/util/XModifiable.idl74
-rw-r--r--offapi/com/sun/star/util/XModifiable2.idl88
-rw-r--r--offapi/com/sun/star/util/XModifyBroadcaster.idl69
-rw-r--r--offapi/com/sun/star/util/XModifyListener.idl66
-rw-r--r--offapi/com/sun/star/util/XNumberFormatPreviewer.idl137
-rw-r--r--offapi/com/sun/star/util/XNumberFormatTypes.idl111
-rw-r--r--offapi/com/sun/star/util/XNumberFormats.idl136
-rw-r--r--offapi/com/sun/star/util/XNumberFormatsSupplier.idl75
-rw-r--r--offapi/com/sun/star/util/XNumberFormatter.idl149
-rw-r--r--offapi/com/sun/star/util/XOfficeInstallationDirectories.idl114
-rw-r--r--offapi/com/sun/star/util/XPropertyReplace.idl101
-rw-r--r--offapi/com/sun/star/util/XProtectable.idl72
-rw-r--r--offapi/com/sun/star/util/XRefreshListener.idl60
-rw-r--r--offapi/com/sun/star/util/XRefreshable.idl70
-rw-r--r--offapi/com/sun/star/util/XReplaceDescriptor.idl62
-rw-r--r--offapi/com/sun/star/util/XReplaceable.idl80
-rw-r--r--offapi/com/sun/star/util/XSearchDescriptor.idl62
-rw-r--r--offapi/com/sun/star/util/XSearchable.idl112
-rw-r--r--offapi/com/sun/star/util/XSimpleErrorHandler.idl54
-rw-r--r--offapi/com/sun/star/util/XSortable.idl113
-rw-r--r--offapi/com/sun/star/util/XStringAbbreviation.idl83
-rw-r--r--offapi/com/sun/star/util/XStringEscape.idl83
-rw-r--r--offapi/com/sun/star/util/XStringMapping.idl55
-rw-r--r--offapi/com/sun/star/util/XStringSubstitution.idl134
-rw-r--r--offapi/com/sun/star/util/XStringWidth.idl63
-rw-r--r--offapi/com/sun/star/util/XTextSearch.idl185
-rw-r--r--offapi/com/sun/star/util/XTimeStamped.idl73
-rw-r--r--offapi/com/sun/star/util/XURLTransformer.idl146
-rw-r--r--offapi/com/sun/star/util/XUniqueIDFactory.idl51
-rw-r--r--offapi/com/sun/star/util/XUpdatable.idl58
-rw-r--r--offapi/com/sun/star/util/makefile.mk152
-rw-r--r--offapi/com/sun/star/view/DocumentZoomType.idl72
-rw-r--r--offapi/com/sun/star/view/DuplexMode.idl66
-rw-r--r--offapi/com/sun/star/view/OfficeDocumentView.idl80
-rw-r--r--offapi/com/sun/star/view/PaperFormat.idl92
-rw-r--r--offapi/com/sun/star/view/PaperOrientation.idl57
-rw-r--r--offapi/com/sun/star/view/PrintJobEvent.idl62
-rw-r--r--offapi/com/sun/star/view/PrintOptions.idl98
-rw-r--r--offapi/com/sun/star/view/PrintSettings.idl111
-rw-r--r--offapi/com/sun/star/view/PrintableState.idl78
-rw-r--r--offapi/com/sun/star/view/PrintableStateEvent.idl60
-rw-r--r--offapi/com/sun/star/view/PrinterDescriptor.idl117
-rw-r--r--offapi/com/sun/star/view/RenderDescriptor.idl59
-rw-r--r--offapi/com/sun/star/view/RenderOptions.idl112
-rw-r--r--offapi/com/sun/star/view/SelectionType.idl72
-rw-r--r--offapi/com/sun/star/view/ViewSettings.idl76
-rw-r--r--offapi/com/sun/star/view/XControlAccess.idl71
-rw-r--r--offapi/com/sun/star/view/XFormLayerAccess.idl109
-rw-r--r--offapi/com/sun/star/view/XLineCursor.idl83
-rw-r--r--offapi/com/sun/star/view/XMultiSelectionSupplier.idl131
-rw-r--r--offapi/com/sun/star/view/XPrintJob.idl77
-rw-r--r--offapi/com/sun/star/view/XPrintJobBroadcaster.idl66
-rw-r--r--offapi/com/sun/star/view/XPrintJobListener.idl64
-rw-r--r--offapi/com/sun/star/view/XPrintPreview.idl57
-rw-r--r--offapi/com/sun/star/view/XPrintSettingsSupplier.idl65
-rw-r--r--offapi/com/sun/star/view/XPrintable.idl91
-rw-r--r--offapi/com/sun/star/view/XPrintableBroadcaster.idl64
-rw-r--r--offapi/com/sun/star/view/XPrintableListener.idl66
-rw-r--r--offapi/com/sun/star/view/XRenderable.idl110
-rw-r--r--offapi/com/sun/star/view/XScreenCursor.idl61
-rw-r--r--offapi/com/sun/star/view/XSelectionChangeListener.idl67
-rw-r--r--offapi/com/sun/star/view/XSelectionSupplier.idl89
-rw-r--r--offapi/com/sun/star/view/XViewCursor.idl116
-rw-r--r--offapi/com/sun/star/view/XViewSettingsSupplier.idl64
-rw-r--r--offapi/com/sun/star/view/makefile.mk78
-rw-r--r--offapi/com/sun/star/xforms/Binding.idl94
-rw-r--r--offapi/com/sun/star/xforms/InvalidDataOnSubmitException.idl57
-rw-r--r--offapi/com/sun/star/xforms/XDataTypeRepository.idl120
-rw-r--r--offapi/com/sun/star/xforms/XFormsEvent.idl43
-rw-r--r--offapi/com/sun/star/xforms/XFormsSupplier.idl65
-rw-r--r--offapi/com/sun/star/xforms/XFormsUIHelper1.idl165
-rw-r--r--offapi/com/sun/star/xforms/XModel.idl238
-rw-r--r--offapi/com/sun/star/xforms/XSubmission.idl76
-rw-r--r--offapi/com/sun/star/xforms/makefile.mk55
-rw-r--r--offapi/com/sun/star/xml/Attribute.idl61
-rw-r--r--offapi/com/sun/star/xml/AttributeContainer.idl56
-rw-r--r--offapi/com/sun/star/xml/AttributeData.idl65
-rw-r--r--offapi/com/sun/star/xml/ExportFilter.idl65
-rw-r--r--offapi/com/sun/star/xml/FastAttribute.idl56
-rw-r--r--offapi/com/sun/star/xml/ImportFilter.idl49
-rw-r--r--offapi/com/sun/star/xml/NamespaceContainer.idl52
-rw-r--r--offapi/com/sun/star/xml/ParaUserDefinedAttributesSupplier.idl62
-rw-r--r--offapi/com/sun/star/xml/TextUserDefinedAttributesSupplier.idl62
-rw-r--r--offapi/com/sun/star/xml/UserDefinedAttributeSupplier.idl71
-rw-r--r--offapi/com/sun/star/xml/UserDefinedAttributesSupplier.idl62
-rw-r--r--offapi/com/sun/star/xml/XExportFilter.idl77
-rw-r--r--offapi/com/sun/star/xml/XImportFilter.idl81
-rw-r--r--offapi/com/sun/star/xml/XMLExportFilter.idl60
-rw-r--r--offapi/com/sun/star/xml/XMLImportFilter.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/SEInitializer.idl56
-rw-r--r--offapi/com/sun/star/xml/crypto/SecurityEnvironment.idl60
-rw-r--r--offapi/com/sun/star/xml/crypto/SecurityOperationStatus.idl150
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLEncryption.idl57
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLEncryptionException.idl55
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLEncryptionTemplate.idl58
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLSecurityContext.idl58
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLSignature.idl58
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLSignatureException.idl55
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLSignatureTemplate.idl58
-rw-r--r--offapi/com/sun/star/xml/crypto/XSEInitializer.idl68
-rw-r--r--offapi/com/sun/star/xml/crypto/XSecurityEnvironment.idl122
-rw-r--r--offapi/com/sun/star/xml/crypto/XUriBinding.idl72
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLEncryption.idl87
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLEncryptionTemplate.idl97
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSecurityContext.idl87
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSecurityTemplate.idl89
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSignature.idl88
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSignatureTemplate.idl85
-rw-r--r--offapi/com/sun/star/xml/crypto/makefile.mk66
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/Decryptor.idl66
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/Encryptor.idl68
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/SAXEventKeeper.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/SignatureCreator.idl67
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/SignatureVerifier.idl68
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XBlockerMonitor.idl60
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XDecryptionResultBroadcaster.idl75
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XDecryptionResultListener.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XElementStackKeeper.idl94
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XEncryptionResultBroadcaster.idl75
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XEncryptionResultListener.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XKeyCollector.idl61
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XMissionTaker.idl60
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XReferenceCollector.idl70
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedBroadcaster.idl82
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedListener.idl61
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeper.idl147
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeBroadcaster.idl76
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeListener.idl78
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSecurityController.idl55
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSecuritySAXEventKeeper.idl133
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultBroadcaster.idl76
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultListener.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultBroadcaster.idl76
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultListener.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/makefile.mk72
-rw-r--r--offapi/com/sun/star/xml/csax/XCompressedDocumentHandler.idl96
-rw-r--r--offapi/com/sun/star/xml/csax/makefile.mk48
-rw-r--r--offapi/com/sun/star/xml/dom/DOMException.idl54
-rw-r--r--offapi/com/sun/star/xml/dom/DOMExceptionType.idl54
-rw-r--r--offapi/com/sun/star/xml/dom/DocumentBuilder.idl14
-rw-r--r--offapi/com/sun/star/xml/dom/NodeType.idl51
-rw-r--r--offapi/com/sun/star/xml/dom/SAXDocumentBuilder.idl19
-rw-r--r--offapi/com/sun/star/xml/dom/SAXDocumentBuilderState.idl44
-rw-r--r--offapi/com/sun/star/xml/dom/XAttr.idl73
-rw-r--r--offapi/com/sun/star/xml/dom/XCDATASection.idl42
-rw-r--r--offapi/com/sun/star/xml/dom/XCharacterData.idl112
-rw-r--r--offapi/com/sun/star/xml/dom/XComment.idl43
-rw-r--r--offapi/com/sun/star/xml/dom/XDOMImplementation.idl88
-rw-r--r--offapi/com/sun/star/xml/dom/XDocument.idl195
-rw-r--r--offapi/com/sun/star/xml/dom/XDocumentBuilder.idl126
-rw-r--r--offapi/com/sun/star/xml/dom/XDocumentFragment.idl42
-rw-r--r--offapi/com/sun/star/xml/dom/XDocumentType.idl78
-rw-r--r--offapi/com/sun/star/xml/dom/XElement.idl156
-rw-r--r--offapi/com/sun/star/xml/dom/XEntity.idl57
-rw-r--r--offapi/com/sun/star/xml/dom/XEntityReference.idl42
-rw-r--r--offapi/com/sun/star/xml/dom/XNamedNodeMap.idl104
-rw-r--r--offapi/com/sun/star/xml/dom/XNode.idl282
-rw-r--r--offapi/com/sun/star/xml/dom/XNodeList.idl53
-rw-r--r--offapi/com/sun/star/xml/dom/XNotation.idl52
-rw-r--r--offapi/com/sun/star/xml/dom/XProcessingInstruction.idl61
-rw-r--r--offapi/com/sun/star/xml/dom/XSAXDocumentBuilder.idl65
-rw-r--r--offapi/com/sun/star/xml/dom/XText.idl49
-rw-r--r--offapi/com/sun/star/xml/dom/events/AttrChangeType.idl42
-rw-r--r--offapi/com/sun/star/xml/dom/events/EventException.idl43
-rw-r--r--offapi/com/sun/star/xml/dom/events/EventType.idl174
-rw-r--r--offapi/com/sun/star/xml/dom/events/PhaseType.idl40
-rw-r--r--offapi/com/sun/star/xml/dom/events/XDocumentEvent.idl42
-rw-r--r--offapi/com/sun/star/xml/dom/events/XEvent.idl66
-rw-r--r--offapi/com/sun/star/xml/dom/events/XEventListener.idl42
-rw-r--r--offapi/com/sun/star/xml/dom/events/XEventTarget.idl55
-rw-r--r--offapi/com/sun/star/xml/dom/events/XMouseEvent.idl69
-rw-r--r--offapi/com/sun/star/xml/dom/events/XMutationEvent.idl60
-rw-r--r--offapi/com/sun/star/xml/dom/events/XUIEvent.idl49
-rw-r--r--offapi/com/sun/star/xml/dom/events/makefile.mk62
-rw-r--r--offapi/com/sun/star/xml/dom/makefile.mk75
-rw-r--r--offapi/com/sun/star/xml/dom/views/XAbstractView.idl41
-rw-r--r--offapi/com/sun/star/xml/dom/views/XDocumentView.idl39
-rw-r--r--offapi/com/sun/star/xml/dom/views/makefile.mk53
-rw-r--r--offapi/com/sun/star/xml/input/SaxDocumentHandler.idl56
-rw-r--r--offapi/com/sun/star/xml/input/XAttributes.idl127
-rw-r--r--offapi/com/sun/star/xml/input/XElement.idl120
-rw-r--r--offapi/com/sun/star/xml/input/XNamespaceMapping.idl65
-rw-r--r--offapi/com/sun/star/xml/input/XRoot.idl97
-rw-r--r--offapi/com/sun/star/xml/input/makefile.mk51
-rw-r--r--offapi/com/sun/star/xml/makefile.mk60
-rw-r--r--offapi/com/sun/star/xml/sax/FastShapeContextHandler.idl45
-rw-r--r--offapi/com/sun/star/xml/sax/FastToken.idl59
-rw-r--r--offapi/com/sun/star/xml/sax/FastTokenHandler.idl43
-rw-r--r--offapi/com/sun/star/xml/sax/InputSource.idl88
-rw-r--r--offapi/com/sun/star/xml/sax/SAXException.idl66
-rw-r--r--offapi/com/sun/star/xml/sax/SAXInvalidCharacterException.idl54
-rw-r--r--offapi/com/sun/star/xml/sax/SAXParseException.idl78
-rw-r--r--offapi/com/sun/star/xml/sax/XAttributeList.idl102
-rw-r--r--offapi/com/sun/star/xml/sax/XDTDHandler.idl79
-rw-r--r--offapi/com/sun/star/xml/sax/XDocumentHandler.idl125
-rw-r--r--offapi/com/sun/star/xml/sax/XEntityResolver.idl71
-rw-r--r--offapi/com/sun/star/xml/sax/XErrorHandler.idl84
-rw-r--r--offapi/com/sun/star/xml/sax/XExtendedDocumentHandler.idl95
-rw-r--r--offapi/com/sun/star/xml/sax/XFastAttributeList.idl180
-rw-r--r--offapi/com/sun/star/xml/sax/XFastContextHandler.idl161
-rw-r--r--offapi/com/sun/star/xml/sax/XFastDocumentHandler.idl89
-rw-r--r--offapi/com/sun/star/xml/sax/XFastParser.idl196
-rw-r--r--offapi/com/sun/star/xml/sax/XFastSAXSerializable.idl99
-rw-r--r--offapi/com/sun/star/xml/sax/XFastSerializer.idl191
-rw-r--r--offapi/com/sun/star/xml/sax/XFastShapeContextHandler.idl62
-rw-r--r--offapi/com/sun/star/xml/sax/XFastTokenHandler.idl93
-rw-r--r--offapi/com/sun/star/xml/sax/XLocator.idl77
-rw-r--r--offapi/com/sun/star/xml/sax/XParser.idl126
-rw-r--r--offapi/com/sun/star/xml/sax/XSAXSerializable.idl82
-rw-r--r--offapi/com/sun/star/xml/sax/makefile.mk69
-rw-r--r--offapi/com/sun/star/xml/wrapper/XMLDocumentWrapper.idl58
-rw-r--r--offapi/com/sun/star/xml/wrapper/XMLElementWrapper.idl60
-rw-r--r--offapi/com/sun/star/xml/wrapper/XXMLDocumentWrapper.idl176
-rw-r--r--offapi/com/sun/star/xml/wrapper/XXMLElementWrapper.idl55
-rw-r--r--offapi/com/sun/star/xml/wrapper/makefile.mk51
-rw-r--r--offapi/com/sun/star/xml/xpath/Libxml2ExtensionHandle.idl49
-rw-r--r--offapi/com/sun/star/xml/xpath/XPathAPI.idl14
-rw-r--r--offapi/com/sun/star/xml/xpath/XPathException.idl50
-rw-r--r--offapi/com/sun/star/xml/xpath/XPathExtension.idl14
-rw-r--r--offapi/com/sun/star/xml/xpath/XPathObjectType.idl51
-rw-r--r--offapi/com/sun/star/xml/xpath/XXPathAPI.idl207
-rw-r--r--offapi/com/sun/star/xml/xpath/XXPathExtension.idl47
-rw-r--r--offapi/com/sun/star/xml/xpath/XXPathObject.idl102
-rw-r--r--offapi/com/sun/star/xml/xpath/makefile.mk60
-rw-r--r--offapi/com/sun/star/xsd/Boolean.idl53
-rw-r--r--offapi/com/sun/star/xsd/DataTypeClass.idl125
-rw-r--r--offapi/com/sun/star/xsd/Date.idl75
-rw-r--r--offapi/com/sun/star/xsd/DateTime.idl75
-rw-r--r--offapi/com/sun/star/xsd/Day.idl73
-rw-r--r--offapi/com/sun/star/xsd/Decimal.idl90
-rw-r--r--offapi/com/sun/star/xsd/Month.idl73
-rw-r--r--offapi/com/sun/star/xsd/String.idl73
-rw-r--r--offapi/com/sun/star/xsd/Time.idl75
-rw-r--r--offapi/com/sun/star/xsd/WhiteSpaceTreatment.idl59
-rw-r--r--offapi/com/sun/star/xsd/XDataType.idl102
-rw-r--r--offapi/com/sun/star/xsd/Year.idl73
-rw-r--r--offapi/com/sun/star/xsd/makefile.mk58
-rw-r--r--offapi/drafts/com/sun/star/form/IncompatibleTypesException.idl57
-rw-r--r--offapi/drafts/com/sun/star/form/ListEntryEvent.idl77
-rw-r--r--offapi/drafts/com/sun/star/form/XBindableValue.idl81
-rw-r--r--offapi/drafts/com/sun/star/form/XListEntryListener.idl92
-rw-r--r--offapi/drafts/com/sun/star/form/XListEntrySink.idl71
-rw-r--r--offapi/drafts/com/sun/star/form/XListEntrySource.idl103
-rw-r--r--offapi/drafts/com/sun/star/form/XValueBinding.idl101
-rw-r--r--offapi/drafts/com/sun/star/form/makefile.mk52
-rw-r--r--offapi/prj/build.lst109
-rw-r--r--offapi/prj/d.lst230
-rw-r--r--offapi/type_reference/typelibrary_history.txt160
-rw-r--r--offapi/type_reference/types.rdbbin0 -> 7307264 bytes
-rwxr-xr-xoffapi/util/checknewapi.pl198
-rw-r--r--offapi/util/makefile.mk191
-rw-r--r--offapi/util/makefile.pmk34
-rw-r--r--offapi/util/regfilter.sed2
-rw-r--r--offapi/util/target.pmk33
-rw-r--r--offapi/util/types-whitelist1
-rw-r--r--offuh/prj/build.lst4
-rw-r--r--offuh/prj/d.lst379
-rw-r--r--offuh/source/makefile.mk44
-rw-r--r--ooo.lst86
-rw-r--r--ooo_custom_images/README.txt45
-rw-r--r--ooo_custom_images/classic/classic_images.tar.gzbin0 -> 1683284 bytes
-rw-r--r--ooo_custom_images/industrial/README33
-rw-r--r--ooo_custom_images/industrial/TODO70
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/bookmark_sx.pngbin0 -> 325 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/bookmarkcontainer_sx.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/db.pngbin0 -> 466 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/db_deleted.pngbin0 -> 619 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/db_modified.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/db_new.pngbin0 -> 458 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/docedit_sc.pngbin0 -> 419 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/docopen_sc.pngbin0 -> 490 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/exerror.pngbin0 -> 529 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/exinfo.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/exwarning.pngbin0 -> 570 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/formnew_sc.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/forms_32.pngbin0 -> 650 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc010.pngbin0 -> 969 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc011.pngbin0 -> 917 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc012.pngbin0 -> 929 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc013.pngbin0 -> 804 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc014.pngbin0 -> 697 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc021.pngbin0 -> 811 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc023.pngbin0 -> 464 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc05621.pngbin0 -> 159 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc09.pngbin0 -> 925 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/lc12252.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/linkdrop_sc.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/linkedit_sc.pngbin0 -> 372 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/linknew_sc.pngbin0 -> 474 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/queries_32.pngbin0 -> 789 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/querydrop_sc.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/queryeditdesign_sc.pngbin0 -> 344 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/queryeditsql_sc.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/querynewdesign_sc.pngbin0 -> 479 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/querynewsql_sc.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/rename_sc.pngbin0 -> 125 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/reports_32.pngbin0 -> 967 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc010.pngbin0 -> 419 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc011.pngbin0 -> 474 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc012.pngbin0 -> 372 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc013.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc014.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc021.pngbin0 -> 344 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc023.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc05621.pngbin0 -> 154 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc09.pngbin0 -> 490 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/sc12252.pngbin0 -> 440 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/tabledrop_sc.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/tableedit_sc.pngbin0 -> 313 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/tablenew_sc.pngbin0 -> 499 bytes
-rw-r--r--ooo_custom_images/industrial/dbaccess/res/tables_32.pngbin0 -> 906 bytes
-rw-r--r--ooo_custom_images/industrial/duplicates39
-rw-r--r--ooo_custom_images/industrial/fpicker/res/fp011.pngbin0 -> 413 bytes
-rw-r--r--ooo_custom_images/industrial/fpicker/res/fp014.pngbin0 -> 555 bytes
-rw-r--r--ooo_custom_images/industrial/lc10713.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/industrial/missing53
-rw-r--r--ooo_custom_images/industrial/res/adrbook.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/baswatr.pngbin0 -> 492 bytes
-rw-r--r--ooo_custom_images/industrial/res/browse.pngbin0 -> 511 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ar/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ar/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ar/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ar/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ar/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ar/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/lc_underline.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/sc_underline.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ca/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/lc_italic.pngbin0 -> 409 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/lc_underline.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/lc_underlinedouble.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/cs/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/lc_underline.pngbin0 -> 437 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/sc_underline.pngbin0 -> 281 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/de/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/en-GB/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/lc_underline.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/es/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/lc_italic.pngbin0 -> 409 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/lc_underline.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/fr/sc_underlinedouble.pngbin0 -> 269 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/frobnicate-icons.php41
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/hu/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/lc_bold.pngbin0 -> 413 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/it/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ja/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/km/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_charfontname.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_color.pngbin0 -> 713 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_drawtext.pngbin0 -> 488 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_fontcolor.pngbin0 -> 712 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_fontheight.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_ordercrit.pngbin0 -> 380 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_outlinefont.pngbin0 -> 539 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_shadowed.pngbin0 -> 435 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_sortdown.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_sortup.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_strikeout.pngbin0 -> 432 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_text.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_text_marquee.pngbin0 -> 553 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_textdirectionlefttoright.pngbin0 -> 569 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_textdirectiontoptobottom.pngbin0 -> 561 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_texttoolbox.pngbin0 -> 490 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_underline.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/lc_verticaltext.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_charfontname.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_color.pngbin0 -> 437 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_drawtext.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_fontcolor.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_fontheight.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_ordercrit.pngbin0 -> 287 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_outlinefont.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_shadowed.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_sortdown.pngbin0 -> 185 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_sortup.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_strikeout.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_text.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_text_marquee.pngbin0 -> 426 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_textdirectionlefttoright.pngbin0 -> 354 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_textdirectiontoptobottom.pngbin0 -> 359 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_texttoolbox.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ko/sc_verticaltext.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_absoluterecord.pngbin0 -> 522 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_addbookmark.pngbin0 -> 536 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_adddatefield.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_adddirect.pngbin0 -> 695 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_addfield.pngbin0 -> 452 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_addtable.pngbin0 -> 416 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_addwatch.pngbin0 -> 443 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_adjust.pngbin0 -> 905 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_adjust.xcf.bz2bin0 -> 2722 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_advancedmode.pngbin0 -> 675 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignblock.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignbottom.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_aligncenter.pngbin0 -> 541 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_aligndown.pngbin0 -> 472 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignhorizontalcenter.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignleft.pngbin0 -> 338 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignmiddle.pngbin0 -> 553 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignright.pngbin0 -> 331 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_aligntop.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignup.pngbin0 -> 511 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignvcenter.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_alignverticalcenter.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_animationeffects.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_animationmode.pngbin0 -> 1307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_animationobjects.pngbin0 -> 1140 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_apply.pngbin0 -> 1435 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_arc.pngbin0 -> 319 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.chevron.pngbin0 -> 517 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.chevron.svg109
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.circular-arrow.pngbin0 -> 600 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.circular-arrow.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.corner-right-arrow.pngbin0 -> 467 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.corner-right-arrow.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.down-arrow-callout.pngbin0 -> 467 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.down-arrow-callout.svg109
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.down-arrow.pngbin0 -> 473 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.down-arrow.png.pngbin0 -> 408 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.down-arrow.png.svg114
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.down-arrow.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-arrow-callout.pngbin0 -> 440 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-arrow-callout.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-arrow.pngbin0 -> 441 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-arrow.svg125
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-right-arrow-callout.pngbin0 -> 506 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-right-arrow-callout.svg181
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-right-arrow.pngbin0 -> 512 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.left-right-arrow.svg139
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.notched-left-arrow.pngbin0 -> 521 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.notched-left-arrow.svg125
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.notched-right-arrow.pngbin0 -> 512 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.notched-right-arrow.svg125
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.pentagon-right.pngbin0 -> 393 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.pentagon-right.svg117
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.pentagon-right.xcf.bz2bin0 -> 1213 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.pngbin0 -> 512 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.quad-arrow-callout.pngbin0 -> 706 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.quad-arrow-callout.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.quad-arrow.pngbin0 -> 687 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.quad-arrow.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.right-arrow-callout.pngbin0 -> 489 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.right-arrow-callout.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.right-arrow.pngbin0 -> 472 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.right-arrow.svg125
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.s-sharped-arrow.pngbin0 -> 549 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.s-sharped-arrow.svg129
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.split-arrow.pngbin0 -> 572 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.split-arrow.svg129
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.split-round-arrow.pngbin0 -> 615 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.split-round-arrow.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.striped-right-arrow.pngbin0 -> 545 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.striped-right-arrow.svg170
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-arrow-callout.pngbin0 -> 396 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-arrow-callout.svg175
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-arrow.pngbin0 -> 473 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-arrow.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-down-arrow-callout.pngbin0 -> 524 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-down-arrow-callout.svg182
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-down-arrow.pngbin0 -> 526 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-down-arrow.svg139
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-right-arrow-callout.pngbin0 -> 610 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-right-arrow-callout.svg165
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-right-arrow.pngbin0 -> 569 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-right-arrow.svg109
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-right-down-arrow.pngbin0 -> 575 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowshapes.up-right-down-arrow.svg104
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_arrowstoolbox.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_autocontrolfocus.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_autofilter.pngbin0 -> 277 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_autoformat.pngbin0 -> 892 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_autosum.pngbin0 -> 299 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_avmediaplayer.pngbin0 -> 907 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_backcolor.pngbin0 -> 694 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_backgroundcolor.pngbin0 -> 762 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_backgroundpatterncontroller.pngbin0 -> 1153 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_backgroundpatterncontroller.xcf.bz2bin0 -> 2494 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_backward.pngbin0 -> 481 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.block-arc.pngbin0 -> 511 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.block-arc.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.can.pngbin0 -> 532 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.can.svg147
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.circle-pie.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.circle-pie.svg139
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.circle.pngbin0 -> 612 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.circle.svg138
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.cross.pngbin0 -> 341 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.cross.svg107
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.cube.pngbin0 -> 383 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.cube.svg204
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.diamond.pngbin0 -> 419 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.diamond.svg202
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.ellipse.pngbin0 -> 506 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.ellipse.svg138
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.frame.pngbin0 -> 297 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.frame.svg203
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.hexagon.pngbin0 -> 501 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.hexagon.svg213
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.isosceles-triangle.pngbin0 -> 456 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.isosceles-triangle.svg222
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.octagon.pngbin0 -> 481 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.octagon.svg193
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.paper.pngbin0 -> 327 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.paper.svg203
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.parallelogram.pngbin0 -> 410 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.parallelogram.svg222
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.pentagon.pngbin0 -> 543 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.pentagon.svg223
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.pngbin0 -> 419 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.quadrat.pngbin0 -> 272 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.quadrat.svg119
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.rectangle.pngbin0 -> 252 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.rectangle.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.right-triangle.pngbin0 -> 383 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.right-triangle.svg119
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.ring.pngbin0 -> 760 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.ring.svg136
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.round-quadrat.pngbin0 -> 338 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.round-quadrat.svg141
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.round-rectangle.pngbin0 -> 348 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.round-rectangle.svg141
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.trapezoid.pngbin0 -> 393 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_basicshapes.trapezoid.svg139
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicstepinto.pngbin0 -> 624 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicstepout.pngbin0 -> 642 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicstepover.pngbin0 -> 641 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_basicstop.pngbin0 -> 1302 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_beforeobject.pngbin0 -> 690 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_behindobject.pngbin0 -> 879 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bezier_unfilled.pngbin0 -> 263 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_bezierappend.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bezierclose.pngbin0 -> 341 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bezierconvert.pngbin0 -> 487 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_beziercutline.pngbin0 -> 580 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bezierdelete.pngbin0 -> 583 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bezieredge.pngbin0 -> 315 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_beziereliminatepoints.pngbin0 -> 634 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bezierfill.pngbin0 -> 649 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bezierinsert.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_beziermove.pngbin0 -> 504 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_beziersmooth.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_beziersymmetric.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bighandles.pngbin0 -> 313 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bmpmask.pngbin0 -> 520 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bringtofront.pngbin0 -> 572 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_browsebackward.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_browseforward.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_browseview.pngbin0 -> 1235 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bullet.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_bulletsandnumberingdialog.pngbin0 -> 377 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.cloud-callout.pngbin0 -> 661 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.cloud-callout.svg139
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.line-callout-1.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.line-callout-1.svg124
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.line-callout-2.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.line-callout-2.svg124
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.line-callout-3.pngbin0 -> 274 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.line-callout-3.svg124
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.pngbin0 -> 442 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.rectangular-callout.pngbin0 -> 402 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.rectangular-callout.svg129
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.round-callout.pngbin0 -> 618 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.round-callout.svg147
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.round-rectangular-callout.pngbin0 -> 447 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_calloutshapes.svg129
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cancel.pngbin0 -> 1119 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cellvertbottom.pngbin0 -> 225 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cellvertcenter.pngbin0 -> 256 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cellverttop.pngbin0 -> 236 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_centerpara.pngbin0 -> 332 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_chainframes.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_changebezier.pngbin0 -> 452 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_changepolygon.pngbin0 -> 452 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_charfontname.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_checkbox.pngbin0 -> 187 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_choosecontrols.pngbin0 -> 446 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_choosemacro.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_choosepolygon.pngbin0 -> 638 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_circle.pngbin0 -> 817 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_circle_unfilled.pngbin0 -> 427 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_circlearc.pngbin0 -> 418 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_circlecut.pngbin0 -> 836 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_circlecut_unfilled.pngbin0 -> 453 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_circlepie.pngbin0 -> 807 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_circlepie_unfilled.pngbin0 -> 371 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_clickchangerotation.pngbin0 -> 600 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_closedoc.pngbin0 -> 159 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_closedocs.pngbin0 -> 520 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_closedocs.xcf.bz2bin0 -> 1308 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_closewin.pngbin0 -> 375 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_color.pngbin0 -> 711 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_colorsettings.pngbin0 -> 443 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_combobox.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_commontaskbarvisible.pngbin0 -> 828 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_compilebasic.pngbin0 -> 521 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cone.pngbin0 -> 793 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_config.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connector.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorarrowend.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorarrows.pngbin0 -> 259 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorarrowstart.pngbin0 -> 285 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcircleend.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcircles.pngbin0 -> 258 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcirclestart.pngbin0 -> 296 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcurve.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcurvearrowend.pngbin0 -> 368 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcurvearrows.pngbin0 -> 354 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcurvearrowstart.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcurvecircleend.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcurvecircles.pngbin0 -> 336 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorcurvecirclestart.pngbin0 -> 370 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorline.pngbin0 -> 229 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinearrowend.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinearrows.pngbin0 -> 272 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinearrowstart.pngbin0 -> 264 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinecircleend.pngbin0 -> 253 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinecircles.pngbin0 -> 234 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinecirclestart.pngbin0 -> 248 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlines.pngbin0 -> 271 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinesarrowend.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinesarrows.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinesarrowstart.pngbin0 -> 281 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinescircleend.pngbin0 -> 287 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinescircles.pngbin0 -> 265 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectorlinescirclestart.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_connectortoolbox.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_contourdialog.pngbin0 -> 487 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_controlcodes.pngbin0 -> 312 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_controlproperties.pngbin0 -> 611 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_convertinto3d.pngbin0 -> 702 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_convertinto3dlathe.pngbin0 -> 931 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_convertinto3dlathefast.pngbin0 -> 808 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_copy.pngbin0 -> 345 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_crookrotate.pngbin0 -> 577 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_crookslant.pngbin0 -> 559 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cube.pngbin0 -> 544 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_currencyfield.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_customanimation.pngbin0 -> 1142 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cut.pngbin0 -> 649 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cylinder.pngbin0 -> 694 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_cyramid.pngbin0 -> 959 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_datadatapilotrun.pngbin0 -> 570 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_datafilterautofilter.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_datafilterspecialfilter.pngbin0 -> 441 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_datafilterstandardfilter.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dataincolumns.pngbin0 -> 321 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_datainrows.pngbin0 -> 294 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_datefield.pngbin0 -> 406 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbchangedesignmode.pngbin0 -> 430 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbclearquery.pngbin0 -> 704 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbdistinctvalues.pngbin0 -> 607 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbformdelete.pngbin0 -> 619 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbformedit.pngbin0 -> 833 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbformopen.pngbin0 -> 775 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbformrename.pngbin0 -> 586 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewform.pngbin0 -> 775 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewformautopilot.pngbin0 -> 848 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewquery.pngbin0 -> 975 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewqueryautopilot.pngbin0 -> 978 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewquerysql.pngbin0 -> 590 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewreport.pngbin0 -> 959 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewreportautopilot.pngbin0 -> 1002 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewtable.pngbin0 -> 732 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbnewtableautopilot.pngbin0 -> 862 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbquerydelete.pngbin0 -> 762 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbqueryedit.pngbin0 -> 947 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbqueryopen.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbqueryrename.pngbin0 -> 717 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbreportdelete.pngbin0 -> 803 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbreportedit.pngbin0 -> 961 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbreportopen.pngbin0 -> 832 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbreportrename.pngbin0 -> 702 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbtabledelete.pngbin0 -> 660 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbtableedit.pngbin0 -> 838 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbtableopen.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbtablerename.pngbin0 -> 674 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbviewaliases.pngbin0 -> 399 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbviewfunctions.pngbin0 -> 682 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dbviewtablenames.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_decrementindent.pngbin0 -> 388 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_decrementlevel.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_decrementsublevels.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_defaultbullet.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_defaultnumbering.pngbin0 -> 363 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_definename.pngbin0 -> 474 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_delete.pngbin0 -> 1228 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_deletecolumns.pngbin0 -> 367 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_deleterecord.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_deleterows.pngbin0 -> 404 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_designerdialog.pngbin0 -> 975 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dia.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_diaauto.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_diaeffect.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_diagramdata.pngbin0 -> 939 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_diagramtype.pngbin0 -> 631 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_diaspeed.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_diatime.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_doubleclicktextedit.pngbin0 -> 851 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_downsearch.pngbin0 -> 411 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_draw.pngbin0 -> 882 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_draw.xcf.bz2bin0 -> 2832 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_drawcaption.pngbin0 -> 542 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_drawchart.pngbin0 -> 646 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_drawselect.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_drawtext.pngbin0 -> 490 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dsbdocumentdatasource.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dsbeditdoc.pngbin0 -> 971 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dsbformletter.pngbin0 -> 341 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dsbinsertcolumns.pngbin0 -> 499 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dsbinsertcontent.pngbin0 -> 520 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_dsbrowserexplorer.pngbin0 -> 595 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_duplicatepage.pngbin0 -> 576 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_edit.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_editdoc.pngbin0 -> 970 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_editglossary.pngbin0 -> 543 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_editheaderandfooter.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ellipse.pngbin0 -> 904 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ellipse_unfilled.pngbin0 -> 375 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ellipsecut.pngbin0 -> 828 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ellipsecut_unfilled.pngbin0 -> 341 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ellipsetoolbox.pngbin0 -> 904 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_entergroup.pngbin0 -> 418 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_entirecolumn.pngbin0 -> 236 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_entirerow.pngbin0 -> 241 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_euroconverter.pngbin0 -> 451 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_expandpage.pngbin0 -> 469 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_exportdirecttopdf.pngbin0 -> 960 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_exportto.pngbin0 -> 1301 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_extendedhelp.pngbin0 -> 493 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_extrusionlightingfloater.pngbin0 -> 1087 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_extrusiontoggle.pngbin0 -> 702 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_filecontrol.pngbin0 -> 1191 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_filldraft.pngbin0 -> 523 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fillshadow.pngbin0 -> 345 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fillstyle.pngbin0 -> 977 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_filtercrit.pngbin0 -> 352 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_firstpage.pngbin0 -> 748 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_firstrecord.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fliphorizontal.pngbin0 -> 576 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_flipvertical.pngbin0 -> 588 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-alternate-process.pngbin0 -> 338 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-card.pngbin0 -> 357 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-card.svg179
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-collate.pngbin0 -> 544 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-collate.svg194
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-connector.pngbin0 -> 613 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-connector.svg138
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-data.pngbin0 -> 467 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-data.svg253
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-decision.pngbin0 -> 444 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-delay.pngbin0 -> 490 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-delay.svg199
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-direct-access-storage.pngbin0 -> 547 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-direct-access-storage.svg157
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-display.pngbin0 -> 500 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-display.svg152
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-document.pngbin0 -> 405 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-document.svg110
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-extract.pngbin0 -> 456 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-internal-storage.pngbin0 -> 332 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-internal-storage.svg131
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-magnetic-disk.pngbin0 -> 532 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-manual-input.pngbin0 -> 386 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-manual-input.svg120
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-manual-operation.pngbin0 -> 479 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-manual-operation.svg246
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-merge.pngbin0 -> 497 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-merge.svg222
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-multidocument.pngbin0 -> 410 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-multidocument.svg138
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-off-page-connector.pngbin0 -> 382 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-off-page-connector.svg118
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-or.pngbin0 -> 649 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-or.svg142
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-predefined-process.pngbin0 -> 322 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-predefined-process.svg136
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-preparation.pngbin0 -> 502 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-process.pngbin0 -> 240 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-process.svg126
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-punched-tape.pngbin0 -> 548 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-punched-tape.svg130
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-sequential-access.pngbin0 -> 599 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-sequential-access.svg130
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-sort.pngbin0 -> 453 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-sort.svg207
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-stored-data.pngbin0 -> 454 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-stored-data.svg120
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-summing-junction.pngbin0 -> 680 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-summing-junction.svg142
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-terminator.pngbin0 -> 426 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.flowchart-terminator.svg120
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.pngbin0 -> 332 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_flowchartshapes.svg131
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fontcolor.pngbin0 -> 712 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fontdialog.pngbin0 -> 811 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fontheight.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fontwork.pngbin0 -> 1056 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fontworkgalleryfloater.pngbin0 -> 623 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-down-curve.pngbin0 -> 510 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-down-curve.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-down-pour.pngbin0 -> 512 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-down-pour.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-left-curve.pngbin0 -> 514 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-left-curve.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-left-pour.pngbin0 -> 533 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-left-pour.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-right-curve.pngbin0 -> 515 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-right-curve.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-right-pour.pngbin0 -> 560 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-right-pour.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-up-curve.pngbin0 -> 508 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-up-curve.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-up-pour.pngbin0 -> 511 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-arch-up-pour.svg99
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-chevron-down.pngbin0 -> 521 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-chevron-down.svg109
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-chevron-up.pngbin0 -> 529 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-chevron-up.svg109
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-circle-curve.pngbin0 -> 760 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-circle-pour.pngbin0 -> 753 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-circle-pour.svg138
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-curve-down.pngbin0 -> 527 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-curve-down.svg109
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-curve-up.pngbin0 -> 532 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-curve-up.svg109
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-down.pngbin0 -> 480 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-down.svg246
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-left.pngbin0 -> 485 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-left.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-right.pngbin0 -> 504 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-right.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up-and-left.pngbin0 -> 499 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up-and-left.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up-and-right.pngbin0 -> 480 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up-and-right.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up.pngbin0 -> 477 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-fade-up.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-inflate.pngbin0 -> 475 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-inflate.svg129
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-open-circle-curve.pngbin0 -> 736 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-open-circle-curve.svg137
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-open-circle-pour.pngbin0 -> 723 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-open-circle-pour.svg139
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-plain-text.pngbin0 -> 208 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-plain-text.svg259
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-slant-down.pngbin0 -> 518 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-slant-down.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-slant-up.pngbin0 -> 508 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-slant-up.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-stop.pngbin0 -> 481 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-triangle-down.pngbin0 -> 497 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-triangle-up.pngbin0 -> 456 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetype.fontwork-wave.pngbin0 -> 548 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fontworkshapetypes.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formatarea.pngbin0 -> 1110 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formatgroup.pngbin0 -> 391 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formatline.pngbin0 -> 974 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formatpaintbrush.pngbin0 -> 892 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formattedfield.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formatungroup.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formdesigntools.pngbin0 -> 322 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formelcursor.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formfilter.pngbin0 -> 523 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formfiltered.pngbin0 -> 513 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formfilterexecute.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formfilternavigator.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_formproperties.pngbin0 -> 905 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_forward.pngbin0 -> 518 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_framedialog.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_framelinecolor.pngbin0 -> 492 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_freeline.pngbin0 -> 908 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_freeline_unfilled.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_fullscreen.pngbin0 -> 612 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gallery.pngbin0 -> 968 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_glueeditmode.pngbin0 -> 967 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_glueescapedirectionbottom.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_glueescapedirectionleft.pngbin0 -> 222 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_glueescapedirectionright.pngbin0 -> 222 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_glueescapedirectiontop.pngbin0 -> 247 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gluehorzaligncenter.pngbin0 -> 185 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gluehorzalignleft.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gluehorzalignright.pngbin0 -> 193 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_glueinsertpoint.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gluepercent.pngbin0 -> 637 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gluevertalignbottom.pngbin0 -> 186 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gluevertaligncenter.pngbin0 -> 169 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gluevertaligntop.pngbin0 -> 186 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_goalseekdialog.pngbin0 -> 561 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gotoendofdoc.pngbin0 -> 754 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gotostartofdoc.pngbin0 -> 748 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafattrcrop.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafblue.pngbin0 -> 447 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafcontrast.pngbin0 -> 493 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafgamma.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafgreen.pngbin0 -> 431 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafinvert.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafluminance.pngbin0 -> 503 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_grafmode.pngbin0 -> 805 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_grafmode.xcf.bz2bin0 -> 1667 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grafred.pngbin0 -> 443 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graftransparence.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphic.pngbin0 -> 479 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicdraft.pngbin0 -> 506 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfilterinvert.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfiltermosaic.pngbin0 -> 256 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfilterpopart.pngbin0 -> 688 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfilterposter.pngbin0 -> 770 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfilterrelief.pngbin0 -> 261 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfilterremovenoise.pngbin0 -> 886 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfiltersepia.pngbin0 -> 1022 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfiltersharpen.pngbin0 -> 1020 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfiltersmooth.pngbin0 -> 344 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfiltersobel.pngbin0 -> 492 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfiltersolarize.pngbin0 -> 723 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_graphicfiltertoolbox.pngbin0 -> 854 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grid.pngbin0 -> 331 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_griduse.pngbin0 -> 447 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_gridvisible.pngbin0 -> 88 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_group.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_groupbox.pngbin0 -> 137 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_grow.pngbin0 -> 426 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_halfsphere.pngbin0 -> 878 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_handlesdraft.pngbin0 -> 313 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_help.pngbin0 -> 1446 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helpbookmark.pngbin0 -> 1034 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helperdialog.pngbin0 -> 902 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helpindex.pngbin0 -> 1501 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helplinesmove.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helplinesuse.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helplinesvisible.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helpmenu.pngbin0 -> 652 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helpsearch.pngbin0 -> 1001 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helpzoomin.pngbin0 -> 578 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_helpzoomout.pngbin0 -> 579 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_hfixedline.pngbin0 -> 129 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_hideslide.pngbin0 -> 392 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_hscrollbar.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_hyperlinkdialog.pngbin0 -> 1300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_hyphenate.pngbin0 -> 673 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_hyphenation.pngbin0 -> 673 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_imagebutton.pngbin0 -> 379 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_imagecontrol.pngbin0 -> 860 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_imagemapdialog.pngbin0 -> 620 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_importfromfile.pngbin0 -> 812 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_incrementindent.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_incrementlevel.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_incrementsublevels.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_inscellsctrl.pngbin0 -> 448 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertannotation.pngbin0 -> 1220 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertapplet.pngbin0 -> 926 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertauthorfield.pngbin0 -> 1033 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertavmedia.pngbin0 -> 695 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertbookmark.pngbin0 -> 536 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertcaptiondialog.pngbin0 -> 486 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertcellsdown.pngbin0 -> 418 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertcellsright.pngbin0 -> 402 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertcolumns.pngbin0 -> 435 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertctrl.pngbin0 -> 724 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertcurrencyfield.pngbin0 -> 357 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertdatefield.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertdoc.pngbin0 -> 985 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertdraw.pngbin0 -> 946 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertedit.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertendnote.pngbin0 -> 533 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertfield.pngbin0 -> 499 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertfieldctrl.pngbin0 -> 724 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertfilecontrol.pngbin0 -> 1191 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertfixedtext.pngbin0 -> 258 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertfootnote.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertformattedfield.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertformula.pngbin0 -> 683 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertframe.pngbin0 -> 258 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertframeinteract.pngbin0 -> 199 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertframeinteractnocolumns.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertgraphic.pngbin0 -> 480 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_inserthyperlink.pngbin0 -> 1115 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertimagecontrol.pngbin0 -> 860 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertindexesentry.pngbin0 -> 391 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertlistbox.pngbin0 -> 315 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertmath.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertneutralparagraph.pngbin0 -> 417 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertnumericfield.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertobjctrl.pngbin0 -> 872 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertobject.pngbin0 -> 873 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertobjectchart.pngbin0 -> 647 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertobjectdialog.pngbin0 -> 874 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertobjectfloatingframe.pngbin0 -> 289 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertobjectstarmath.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertpage.pngbin0 -> 644 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertpagecountfield.pngbin0 -> 928 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertpagenumberfield.pngbin0 -> 840 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertpatternfield.pngbin0 -> 646 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertplugin.pngbin0 -> 547 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertpushbutton.pngbin0 -> 194 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertreferencefield.pngbin0 -> 569 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertrows.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertsection.pngbin0 -> 638 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertsound.pngbin0 -> 407 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertspreadsheet.pngbin0 -> 331 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertsymbol.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_inserttable.pngbin0 -> 331 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_inserttextframe.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_inserttimefield.pngbin0 -> 622 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_inserttitlefield.pngbin0 -> 342 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_inserttopicfield.pngbin0 -> 765 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insertvideo.pngbin0 -> 314 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_insobjctrl.pngbin0 -> 873 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_interactivegradient.pngbin0 -> 632 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_interactivetransparence.pngbin0 -> 780 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_justifypara.pngbin0 -> 332 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_label.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_lastpage.pngbin0 -> 754 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_lastrecord.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_leaveallgroups.pngbin0 -> 426 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_leavegroup.pngbin0 -> 426 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_leftpara.pngbin0 -> 335 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_line.pngbin0 -> 149 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_line_diagonal.pngbin0 -> 194 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linearrowcircle.pngbin0 -> 252 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linearrowend.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linearrows.pngbin0 -> 238 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linearrowsquare.pngbin0 -> 234 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linearrowstart.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linecirclearrow.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linedraft.pngbin0 -> 324 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_lineendstyle.pngbin0 -> 437 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linesquarearrow.pngbin0 -> 234 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linestyle.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linetoolbox.pngbin0 -> 908 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_linewidth.pngbin0 -> 975 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_listbox.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_loadbasic.pngbin0 -> 1099 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_macrorecorder.pngbin0 -> 715 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_managebreakpoints.pngbin0 -> 968 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_matchgroup.pngbin0 -> 650 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_measureline.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_mergecells.pngbin0 -> 214 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_mergedialog.pngbin0 -> 1013 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_mergedialog.xcf.bz2bin0 -> 2235 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_mirror.pngbin0 -> 1033 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_modifypage.pngbin0 -> 794 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_moduledialog.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_morecontrols.pngbin0 -> 533 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_movedown.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_movedownsubitems.pngbin0 -> 439 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_moveup.pngbin0 -> 509 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_moveupsubitems.pngbin0 -> 443 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_navigationbar.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_navigator.pngbin0 -> 584 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_newarrangement.pngbin0 -> 474 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_newdoc.pngbin0 -> 1042 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_newrecord.pngbin0 -> 436 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_nextpage.pngbin0 -> 595 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_nextrecord.pngbin0 -> 165 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_no.pngbin0 -> 1479 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberformatcurrency.pngbin0 -> 356 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberformatdate.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberformatdecdecimals.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberformatincdecimals.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberformatpercent.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberformatscientific.pngbin0 -> 703 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberformatstandard.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numberingstart.pngbin0 -> 620 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_numericfield.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_objectalign.pngbin0 -> 480 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_objectalignleft.pngbin0 -> 478 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_objectalignright.pngbin0 -> 446 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_objectcatalog.pngbin0 -> 433 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_objectposition.pngbin0 -> 292 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_objectposition.svg162
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_objects3dtoolbox.pngbin0 -> 545 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ok.pngbin0 -> 1015 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_open.pngbin0 -> 1031 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_openreadonly.pngbin0 -> 909 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_openurl.pngbin0 -> 1415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_optimizetable.pngbin0 -> 832 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ordercrit.pngbin0 -> 380 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlinebullet.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlinecollapse.pngbin0 -> 284 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlinecollapseall.pngbin0 -> 207 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlinedown.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlineexpand.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlineexpandall.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlinefont.pngbin0 -> 539 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlineformat.pngbin0 -> 457 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlineleft.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlineright.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_outlineup.pngbin0 -> 509 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pagedown.pngbin0 -> 595 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pageup.pngbin0 -> 579 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_paragraphdialog.pngbin0 -> 497 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_paralefttoright.pngbin0 -> 376 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pararighttoleft.pngbin0 -> 383 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_paraspacedecrease.pngbin0 -> 526 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_paraspaceincrease.pngbin0 -> 509 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_paste.pngbin0 -> 730 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_patternfield.pngbin0 -> 648 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pickthrough.pngbin0 -> 563 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pie.pngbin0 -> 812 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pie_unfilled.pngbin0 -> 337 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pluginsactive.pngbin0 -> 550 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_polygon.pngbin0 -> 553 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_polygon_diagonal.pngbin0 -> 376 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_polygon_diagonal_unfilled.pngbin0 -> 122 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_polygon_unfilled.pngbin0 -> 163 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_presentation.pngbin0 -> 795 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_presentationlayout.pngbin0 -> 814 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_previewprintoptions.pngbin0 -> 1075 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_previewzoom.pngbin0 -> 572 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_previouspage.pngbin0 -> 579 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_prevrecord.pngbin0 -> 162 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_print.pngbin0 -> 941 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_printdefault.pngbin0 -> 941 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_printersetup.pngbin0 -> 883 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_printlayout.pngbin0 -> 862 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_printpagepreview.pngbin0 -> 945 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_printpreview.pngbin0 -> 978 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_progressbar.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_pushbutton.pngbin0 -> 194 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_quickedit.pngbin0 -> 375 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_quit.pngbin0 -> 766 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_radiobutton.pngbin0 -> 261 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_recsave.pngbin0 -> 953 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_recsearch.pngbin0 -> 1000 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_rect.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_rect_rounded.pngbin0 -> 482 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_rect_rounded_unfilled.pngbin0 -> 163 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_rect_unfilled.pngbin0 -> 100 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_rectangletoolbox.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_recundo.pngbin0 -> 584 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_redo.pngbin0 -> 573 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_refresh.pngbin0 -> 916 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_rehearsetimings.pngbin0 -> 916 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_reload.pngbin0 -> 1245 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_removebullets.pngbin0 -> 323 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_removefilter.pngbin0 -> 649 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_removefiltersort.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_repeat.pngbin0 -> 501 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_reverseorder.pngbin0 -> 418 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_rightpara.pngbin0 -> 332 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_runbasic.pngbin0 -> 540 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_save.pngbin0 -> 934 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_saveas.pngbin0 -> 1184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_saveastemplate.pngbin0 -> 1118 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_savebasicas.pngbin0 -> 1184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sbabrwinsert.pngbin0 -> 499 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sbaexecutesql.pngbin0 -> 949 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sbanativesql.pngbin0 -> 341 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_scaletext.pngbin0 -> 793 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_scrollbar.pngbin0 -> 199 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_searchdialog.pngbin0 -> 1000 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_selectall.pngbin0 -> 635 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_selectmode.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_selectobject.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_selecttable.pngbin0 -> 220 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sendfax.pngbin0 -> 1070 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sendmail.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sendtoback.pngbin0 -> 513 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_setborderstyle.pngbin0 -> 285 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_setdocumentproperties.pngbin0 -> 1041 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_setobjecttobackground.pngbin0 -> 795 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_setobjecttoforeground.pngbin0 -> 947 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_shadowcursor.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_shadowed.pngbin0 -> 435 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_shear.pngbin0 -> 544 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_shell3d.pngbin0 -> 852 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_showbookview.pngbin0 -> 402 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_showbrowser.pngbin0 -> 611 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_showfmexplorer.pngbin0 -> 847 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_showmultiplepages.pngbin0 -> 272 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_showpropbrowser.pngbin0 -> 904 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_showtwopages.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_shrink.pngbin0 -> 371 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_snapborder.pngbin0 -> 854 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_snapframe.pngbin0 -> 669 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_snappoints.pngbin0 -> 618 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_solidcreate.pngbin0 -> 847 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sortascending.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sortdescending.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sortdown.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sortup.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sourceview.pngbin0 -> 1073 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_spacepara1.pngbin0 -> 291 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_spacepara15.pngbin0 -> 291 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_spacepara2.pngbin0 -> 289 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_spelldialog.pngbin0 -> 557 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_spelling.pngbin0 -> 556 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_spellonline.pngbin0 -> 618 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_sphere.pngbin0 -> 1111 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_splitcell.pngbin0 -> 232 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_square.pngbin0 -> 281 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_square_rounded.pngbin0 -> 494 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_square_rounded_unfilled.pngbin0 -> 166 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_square_unfilled.pngbin0 -> 103 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_starchartdialog.pngbin0 -> 646 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.bang.pngbin0 -> 756 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.bang.svg223
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.concave-star6.pngbin0 -> 656 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.concave-star6.svg275
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.doorplate.pngbin0 -> 485 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.doorplate.svg243
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.horizontal-scroll.pngbin0 -> 405 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.horizontal-scroll.svg169
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.pngbin0 -> 596 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.signet.pngbin0 -> 652 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.signet.svg175
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star12.pngbin0 -> 625 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star12.svg294
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star24.pngbin0 -> 734 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star24.svg294
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star4.pngbin0 -> 500 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star4.svg276
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star5.pngbin0 -> 597 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star5.svg276
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star6.pngbin0 -> 652 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star6.svg276
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star8.pngbin0 -> 594 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.star8.svg294
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.vertical-scroll.pngbin0 -> 408 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_starshapes.vertical-scroll.svg154
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_strikeout.pngbin0 -> 432 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_styleapply.pngbin0 -> 1109 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_stylenewbyexample.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_styleupdatebyexample.pngbin0 -> 220 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_subscript.pngbin0 -> 413 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_superscript.pngbin0 -> 408 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_switchcontroldesignmode.pngbin0 -> 691 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_switchxformsdesignmode.pngbin0 -> 689 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolcatalogue.pngbin0 -> 558 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.brace-pair.pngbin0 -> 553 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.brace-pair.svg229
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.bracket-pair.pngbin0 -> 338 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.bracket-pair.svg224
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.cloud.pngbin0 -> 626 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.cloud.svg147
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.diamond-bevel.pngbin0 -> 496 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.diamond-bevel.svg198
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.flower.pngbin0 -> 792 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.flower.svg193
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.forbidden.pngbin0 -> 856 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.forbidden.svg354
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.heart.pngbin0 -> 614 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.heart.svg194
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.left-brace.pngbin0 -> 367 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.left-brace.svg219
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.left-bracket.pngbin0 -> 233 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.left-bracket.svg206
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.lightning.pngbin0 -> 636 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.lightning.svg204
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.moon.pngbin0 -> 559 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.moon.svg211
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.octagon-bevel.pngbin0 -> 625 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.octagon-bevel.svg192
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.pngbin0 -> 682 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.puzzle.pngbin0 -> 750 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.puzzle.svg194
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.quad-bevel.pngbin0 -> 351 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.quad-bevel.svg123
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.right-brace.pngbin0 -> 373 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.right-brace.svg219
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.right-bracket.pngbin0 -> 229 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.right-bracket.svg206
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.smiley.pngbin0 -> 682 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.sun.pngbin0 -> 625 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.sun.svg340
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/lc_symbolshapes.svg230
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_tabdialog.pngbin0 -> 380 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_tablemodefix.pngbin0 -> 471 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_tablemodefixprop.pngbin0 -> 466 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_tablemodevariable.pngbin0 -> 503 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_tablesort.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_testmode.pngbin0 -> 751 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_text.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_text_marquee.pngbin0 -> 553 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_textdirectionlefttoright.pngbin0 -> 570 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_textdirectiontoptobottom.pngbin0 -> 562 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_textdraft.pngbin0 -> 273 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_textfittosizetool.pngbin0 -> 248 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_texttoolbox.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_thesaurus.pngbin0 -> 672 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_thesaurusdialog.pngbin0 -> 671 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_timefield.pngbin0 -> 623 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_toggleanchortype.pngbin0 -> 513 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_toggleaxisdescr.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_toggleaxistitle.pngbin0 -> 258 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_togglebreakpoint.pngbin0 -> 797 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_togglegridhorizontal.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_togglegridvertical.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_togglelegend.pngbin0 -> 478 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_togglemergecells.pngbin0 -> 684 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_toggleobjectbeziermode.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_toggleobjectrotatemode.pngbin0 -> 675 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_toggletitle.pngbin0 -> 308 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_torus.pngbin0 -> 1063 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_transformdialog.pngbin0 -> 207 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_undo.pngbin0 -> 522 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_ungroup.pngbin0 -> 328 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_unhainframes.pngbin0 -> 806 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_upsearch.pngbin0 -> 509 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_usewizards.pngbin0 -> 980 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_verticalcaption.pngbin0 -> 600 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_verticaltext.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_verticaltextfittosizetool.pngbin0 -> 251 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_vfixedline.pngbin0 -> 109 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_view100.pngbin0 -> 581 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_viewdatasourcebrowser.pngbin0 -> 939 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_viewformasgrid.pngbin0 -> 379 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_vscrollbar.pngbin0 -> 199 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_window3d.pngbin0 -> 993 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_wrapcontour.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_wrapideal.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_wrapleft.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_wrapoff.pngbin0 -> 222 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_wrapon.pngbin0 -> 227 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_wrapright.pngbin0 -> 225 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_wrapthrough.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_xlinecolor.pngbin0 -> 975 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_xlinestyle.pngbin0 -> 976 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_yes.pngbin0 -> 1443 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoom.pngbin0 -> 572 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoom100percent.pngbin0 -> 580 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomin.pngbin0 -> 579 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomminus.pngbin0 -> 578 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomnext.pngbin0 -> 1097 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomobjects.pngbin0 -> 587 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomoptimal.pngbin0 -> 586 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomout.pngbin0 -> 578 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoompage.pngbin0 -> 1110 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoompagewidth.pngbin0 -> 1107 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoompanning.pngbin0 -> 1291 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomplus.pngbin0 -> 579 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomprevious.pngbin0 -> 1038 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_zoomtoolbox.pngbin0 -> 574 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/lc_underline.pngbin0 -> 431 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/nl/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pl/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/lc_bold.pngbin0 -> 413 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt-BR/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/sc_underline.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/pt/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/ru/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_absoluterecord.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_addbookmark.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_adddatefield.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_adddirect.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_addfield.pngbin0 -> 295 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_addtable.pngbin0 -> 317 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_addwatch.pngbin0 -> 153 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_adjust.pngbin0 -> 711 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_advancedmode.pngbin0 -> 339 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignblock.pngbin0 -> 217 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignbottom.pngbin0 -> 172 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_aligncenter.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_aligndown.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignhorizontalcenter.pngbin0 -> 215 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignleft.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignmiddle.pngbin0 -> 235 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignright.pngbin0 -> 218 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_aligntop.pngbin0 -> 175 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignup.pngbin0 -> 245 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignvcenter.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_alignverticalcenter.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_animationeffects.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_animationmode.pngbin0 -> 702 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_animationobjects.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_apply.pngbin0 -> 928 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_arc.pngbin0 -> 217 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.chevron.pngbin0 -> 349 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.circular-arrow.pngbin0 -> 362 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.corner-right-arrow.pngbin0 -> 320 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.down-arrow-callout.pngbin0 -> 333 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.down-arrow.pngbin0 -> 315 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.down-arrow.png.pngbin0 -> 292 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.left-arrow-callout.pngbin0 -> 332 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.left-arrow.pngbin0 -> 304 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.left-right-arrow-callout.pngbin0 -> 323 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.left-right-arrow.pngbin0 -> 328 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.notched-left-arrow.pngbin0 -> 330 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.notched-right-arrow.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.pentagon-right.pngbin0 -> 297 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.pngbin0 -> 328 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.quad-arrow-callout.pngbin0 -> 430 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.quad-arrow.pngbin0 -> 421 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.right-arrow-callout.pngbin0 -> 348 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.right-arrow.pngbin0 -> 319 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.s-sharped-arrow.pngbin0 -> 365 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.split-arrow.pngbin0 -> 397 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.split-round-arrow.pngbin0 -> 377 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.striped-right-arrow.pngbin0 -> 368 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.up-arrow-callout.pngbin0 -> 284 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.up-arrow.pngbin0 -> 317 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.up-down-arrow-callout.pngbin0 -> 349 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.up-down-arrow.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.up-right-arrow-callout.pngbin0 -> 408 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.up-right-arrow.pngbin0 -> 374 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowshapes.up-right-down-arrow.pngbin0 -> 381 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_arrowstoolbox.pngbin0 -> 124 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_autocontrolfocus.pngbin0 -> 198 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_autofilter.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_autoformat.pngbin0 -> 554 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_autosum.pngbin0 -> 124 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_avmediaplayer.pngbin0 -> 348 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_backcolor.pngbin0 -> 414 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_backgroundcolor.pngbin0 -> 456 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_backgroundpatterncontroller.pngbin0 -> 845 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_backward.pngbin0 -> 311 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.block-arc.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.can.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.circle-pie.pngbin0 -> 348 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.circle.pngbin0 -> 373 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.cross.pngbin0 -> 304 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.cube.pngbin0 -> 298 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.diamond.pngbin0 -> 291 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.ellipse.pngbin0 -> 316 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.frame.pngbin0 -> 254 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.hexagon.pngbin0 -> 336 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.isosceles-triangle.pngbin0 -> 312 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.octagon.pngbin0 -> 323 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.paper.pngbin0 -> 261 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.parallelogram.pngbin0 -> 290 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.pentagon.pngbin0 -> 368 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.pngbin0 -> 291 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.quadrat.pngbin0 -> 236 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.rectangle.pngbin0 -> 202 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.right-triangle.pngbin0 -> 267 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.ring.pngbin0 -> 450 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.round-quadrat.pngbin0 -> 256 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.round-rectangle.pngbin0 -> 259 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_basicshapes.trapezoid.pngbin0 -> 247 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicstepinto.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicstepout.pngbin0 -> 259 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicstepover.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_basicstop.pngbin0 -> 590 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_beforeobject.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_behindobject.pngbin0 -> 528 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bezier_unfilled.pngbin0 -> 175 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_bezierappend.pngbin0 -> 468 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bezierclose.pngbin0 -> 228 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bezierconvert.pngbin0 -> 174 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_beziercutline.pngbin0 -> 193 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bezierdelete.pngbin0 -> 386 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bezieredge.pngbin0 -> 220 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_beziereliminatepoints.pngbin0 -> 354 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bezierfill.pngbin0 -> 331 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bezierinsert.pngbin0 -> 197 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_beziermove.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_beziersmooth.pngbin0 -> 174 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_beziersymmetric.pngbin0 -> 174 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bighandles.pngbin0 -> 219 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bmpmask.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bringtofront.pngbin0 -> 380 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_browsebackward.pngbin0 -> 233 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_browseforward.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_browseview.pngbin0 -> 624 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bullet.pngbin0 -> 285 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_bulletsandnumberingdialog.pngbin0 -> 256 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.cloud-callout.pngbin0 -> 408 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.line-callout-1.pngbin0 -> 242 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.line-callout-2.pngbin0 -> 242 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.line-callout-3.pngbin0 -> 214 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.pngbin0 -> 324 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.rectangular-callout.pngbin0 -> 295 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.round-callout.pngbin0 -> 380 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_calloutshapes.round-rectangular-callout.pngbin0 -> 324 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cancel.pngbin0 -> 794 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cellvertbottom.pngbin0 -> 193 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cellvertcenter.pngbin0 -> 197 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cellverttop.pngbin0 -> 201 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_centerpara.pngbin0 -> 215 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_chainframes.pngbin0 -> 273 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_changebezier.pngbin0 -> 231 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_changepolygon.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_charfontname.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_checkbox.pngbin0 -> 183 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_choosecontrols.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_choosemacro.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_choosepolygon.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_circle.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_circle_unfilled.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_circlearc.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_circlecut.pngbin0 -> 429 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_circlecut_unfilled.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_circlepie.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_circlepie_unfilled.pngbin0 -> 261 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_clickchangerotation.pngbin0 -> 400 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_closedoc.pngbin0 -> 153 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_closedocs.pngbin0 -> 831 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_closewin.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_color.pngbin0 -> 437 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_colorsettings.pngbin0 -> 328 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_combobox.pngbin0 -> 185 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_commontaskbarvisible.pngbin0 -> 524 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_compilebasic.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cone.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_config.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connector.pngbin0 -> 121 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorarrowend.pngbin0 -> 138 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorarrows.pngbin0 -> 133 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorarrowstart.pngbin0 -> 134 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcircleend.pngbin0 -> 141 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcircles.pngbin0 -> 138 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcirclestart.pngbin0 -> 142 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcurve.pngbin0 -> 155 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcurvearrowend.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcurvearrows.pngbin0 -> 159 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcurvearrowstart.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcurvecircleend.pngbin0 -> 150 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcurvecircles.pngbin0 -> 137 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorcurvecirclestart.pngbin0 -> 152 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorline.pngbin0 -> 109 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinearrowend.pngbin0 -> 129 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinearrows.pngbin0 -> 125 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinearrowstart.pngbin0 -> 131 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinecircleend.pngbin0 -> 118 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinecircles.pngbin0 -> 103 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinecirclestart.pngbin0 -> 117 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlines.pngbin0 -> 119 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinesarrowend.pngbin0 -> 137 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinesarrows.pngbin0 -> 138 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinesarrowstart.pngbin0 -> 140 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinescircleend.pngbin0 -> 139 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinescircles.pngbin0 -> 136 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectorlinescirclestart.pngbin0 -> 142 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_connectortoolbox.pngbin0 -> 121 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_contourdialog.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_controlcodes.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_controlproperties.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_convertinto3d.pngbin0 -> 356 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_convertinto3dlathe.pngbin0 -> 575 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_convertinto3dlathefast.pngbin0 -> 559 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_copy.pngbin0 -> 168 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_crookrotate.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_crookslant.pngbin0 -> 225 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cube.pngbin0 -> 275 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_currencyfield.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_customanimation.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cut.pngbin0 -> 275 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cylinder.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_cyramid.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_datadatapilotrun.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_datafilterautofilter.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_datafilterspecialfilter.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_datafilterstandardfilter.pngbin0 -> 248 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dataincolumns.pngbin0 -> 226 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_datainrows.pngbin0 -> 198 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_datefield.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbchangedesignmode.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbclearquery.pngbin0 -> 483 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbdistinctvalues.pngbin0 -> 295 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbformdelete.pngbin0 -> 297 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbformedit.pngbin0 -> 362 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbformopen.pngbin0 -> 439 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbformrename.pngbin0 -> 259 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewform.pngbin0 -> 418 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewformautopilot.pngbin0 -> 479 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewquery.pngbin0 -> 601 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewqueryautopilot.pngbin0 -> 571 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewquerysql.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewreport.pngbin0 -> 532 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewreportautopilot.pngbin0 -> 576 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewtable.pngbin0 -> 322 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbnewtableautopilot.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbquerydelete.pngbin0 -> 429 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbqueryedit.pngbin0 -> 488 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbqueryopen.pngbin0 -> 531 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbqueryrename.pngbin0 -> 369 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbreportdelete.pngbin0 -> 468 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbreportedit.pngbin0 -> 479 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbreportopen.pngbin0 -> 449 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbreportrename.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbtabledelete.pngbin0 -> 222 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbtableedit.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbtableopen.pngbin0 -> 391 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbtablerename.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbviewaliases.pngbin0 -> 163 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbviewfunctions.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dbviewtablenames.pngbin0 -> 281 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_decrementindent.pngbin0 -> 258 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_decrementlevel.pngbin0 -> 230 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_decrementsublevels.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_defaultbullet.pngbin0 -> 230 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_defaultnumbering.pngbin0 -> 249 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_definename.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_delete.pngbin0 -> 715 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_deletecolumns.pngbin0 -> 262 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_deleterecord.pngbin0 -> 173 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_deleterows.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_designerdialog.pngbin0 -> 310 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dia.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_diaauto.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_diaeffect.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_diagramdata.pngbin0 -> 464 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_diagramtype.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_diaspeed.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_diatime.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_doubleclicktextedit.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_downsearch.pngbin0 -> 240 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_draw.pngbin0 -> 763 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_drawcaption.pngbin0 -> 308 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_drawchart.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_drawselect.pngbin0 -> 138 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_drawtext.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dsbdocumentdatasource.pngbin0 -> 440 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dsbeditdoc.pngbin0 -> 419 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dsbformletter.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dsbinsertcolumns.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dsbinsertcontent.pngbin0 -> 323 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_dsbrowserexplorer.pngbin0 -> 563 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_duplicatepage.pngbin0 -> 341 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_edit.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_editdoc.pngbin0 -> 419 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_editglossary.pngbin0 -> 149 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_editheaderandfooter.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ellipse.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ellipse_unfilled.pngbin0 -> 253 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ellipsecut.pngbin0 -> 379 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ellipsecut_unfilled.pngbin0 -> 236 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ellipsetoolbox.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_entergroup.pngbin0 -> 262 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_entirecolumn.pngbin0 -> 118 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_entirerow.pngbin0 -> 122 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_euroconverter.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_expandpage.pngbin0 -> 396 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_exportdirecttopdf.pngbin0 -> 374 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_exportto.pngbin0 -> 737 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_extendedhelp.pngbin0 -> 310 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_extrusionlightingfloater.pngbin0 -> 528 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_extrusiontoggle.pngbin0 -> 356 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_filecontrol.pngbin0 -> 683 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_filldraft.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fillshadow.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fillstyle.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_filtercrit.pngbin0 -> 249 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_firstpage.pngbin0 -> 297 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_firstrecord.pngbin0 -> 103 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fliphorizontal.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_flipvertical.pngbin0 -> 391 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-alternate-process.pngbin0 -> 206 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-card.pngbin0 -> 276 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-collate.pngbin0 -> 363 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-connector.pngbin0 -> 393 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-data.pngbin0 -> 337 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-decision.pngbin0 -> 323 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-delay.pngbin0 -> 327 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-direct-access-storage.pngbin0 -> 366 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-display.pngbin0 -> 342 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-document.pngbin0 -> 294 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-extract.pngbin0 -> 307 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-internal-storage.pngbin0 -> 250 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-magnetic-disk.pngbin0 -> 372 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-manual-input.pngbin0 -> 287 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-manual-operation.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-merge.pngbin0 -> 318 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-multidocument.pngbin0 -> 299 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-off-page-connector.pngbin0 -> 271 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-or.pngbin0 -> 419 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-predefined-process.pngbin0 -> 252 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-preparation.pngbin0 -> 349 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-process.pngbin0 -> 206 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-punched-tape.pngbin0 -> 356 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-sequential-access.pngbin0 -> 388 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-sort.pngbin0 -> 323 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-stored-data.pngbin0 -> 321 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-summing-junction.pngbin0 -> 432 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.flowchart-terminator.pngbin0 -> 311 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_flowchartshapes.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fontcolor.pngbin0 -> 437 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fontdialog.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fontheight.pngbin0 -> 285 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fontwork.pngbin0 -> 603 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fontworkgalleryfloater.pngbin0 -> 170 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-down-curve.pngbin0 -> 316 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-down-pour.pngbin0 -> 329 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-left-curve.pngbin0 -> 317 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-left-pour.pngbin0 -> 341 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-right-curve.pngbin0 -> 331 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-right-pour.pngbin0 -> 344 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-up-curve.pngbin0 -> 327 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-arch-up-pour.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-chevron-down.pngbin0 -> 342 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-chevron-up.pngbin0 -> 345 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-circle-curve.pngbin0 -> 450 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-circle-pour.pngbin0 -> 454 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-curve-down.pngbin0 -> 363 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-curve-up.pngbin0 -> 361 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-down.pngbin0 -> 334 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-left.pngbin0 -> 344 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-right.pngbin0 -> 362 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-up-and-left.pngbin0 -> 339 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-up-and-right.pngbin0 -> 339 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-fade-up.pngbin0 -> 332 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-inflate.pngbin0 -> 322 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-open-circle-curve.pngbin0 -> 443 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-open-circle-pour.pngbin0 -> 447 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-plain-text.pngbin0 -> 185 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-slant-down.pngbin0 -> 341 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-slant-up.pngbin0 -> 344 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-stop.pngbin0 -> 322 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-triangle-down.pngbin0 -> 318 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-triangle-up.pngbin0 -> 307 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetype.fontwork-wave.pngbin0 -> 356 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fontworkshapetypes.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formatarea.pngbin0 -> 501 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formatgroup.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formatline.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formatpaintbrush.pngbin0 -> 465 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formattedfield.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formatungroup.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formdesigntools.pngbin0 -> 245 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formelcursor.pngbin0 -> 125 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formfilter.pngbin0 -> 320 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formfiltered.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formfilterexecute.pngbin0 -> 249 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formfilternavigator.pngbin0 -> 417 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_formproperties.pngbin0 -> 466 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_forward.pngbin0 -> 359 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_framedialog.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_framelinecolor.pngbin0 -> 431 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_freeline.pngbin0 -> 408 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_freeline_unfilled.pngbin0 -> 239 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_fullscreen.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gallery.pngbin0 -> 513 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_glueeditmode.pngbin0 -> 551 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_glueescapedirectionbottom.pngbin0 -> 179 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_glueescapedirectionleft.pngbin0 -> 160 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_glueescapedirectionright.pngbin0 -> 153 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_glueescapedirectiontop.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gluehorzaligncenter.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gluehorzalignleft.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gluehorzalignright.pngbin0 -> 169 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_glueinsertpoint.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gluepercent.pngbin0 -> 400 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gluevertalignbottom.pngbin0 -> 162 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gluevertaligncenter.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gluevertaligntop.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_goalseekdialog.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gotoendofdoc.pngbin0 -> 298 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gotostartofdoc.pngbin0 -> 297 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafattrcrop.pngbin0 -> 144 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafblue.pngbin0 -> 335 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafcontrast.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafgamma.pngbin0 -> 170 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafgreen.pngbin0 -> 331 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafinvert.pngbin0 -> 155 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafluminance.pngbin0 -> 177 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_grafmode.pngbin0 -> 579 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grafred.pngbin0 -> 328 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graftransparence.pngbin0 -> 461 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphic.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicdraft.pngbin0 -> 404 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfilterinvert.pngbin0 -> 155 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfiltermosaic.pngbin0 -> 146 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfilterpopart.pngbin0 -> 479 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfilterposter.pngbin0 -> 458 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfilterrelief.pngbin0 -> 174 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfilterremovenoise.pngbin0 -> 481 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfiltersepia.pngbin0 -> 670 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfiltersharpen.pngbin0 -> 518 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfiltersmooth.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfiltersobel.pngbin0 -> 304 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfiltersolarize.pngbin0 -> 522 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_graphicfiltertoolbox.pngbin0 -> 580 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grid.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_griduse.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_gridvisible.pngbin0 -> 289 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_group.pngbin0 -> 239 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_groupbox.pngbin0 -> 133 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_grow.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_halfsphere.pngbin0 -> 613 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_handlesdraft.pngbin0 -> 212 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_help.pngbin0 -> 950 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helpbookmark.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helperdialog.pngbin0 -> 528 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helpindex.pngbin0 -> 758 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helplinesmove.pngbin0 -> 194 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helplinesuse.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helplinesvisible.pngbin0 -> 100 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helpmenu.pngbin0 -> 275 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helpsearch.pngbin0 -> 398 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helpzoomin.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_helpzoomout.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_hfixedline.pngbin0 -> 122 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_hideslide.pngbin0 -> 293 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_hscrollbar.pngbin0 -> 189 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_hyperlinkdialog.pngbin0 -> 737 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_hyphenate.pngbin0 -> 368 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_hyphenation.pngbin0 -> 368 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_imagebutton.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_imagecontrol.pngbin0 -> 430 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_imagemapdialog.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_importfromfile.pngbin0 -> 551 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_incrementindent.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_incrementlevel.pngbin0 -> 235 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_incrementsublevels.pngbin0 -> 235 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_inscellsctrl.pngbin0 -> 272 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertannotation.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertapplet.pngbin0 -> 600 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertauthorfield.pngbin0 -> 686 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertavmedia.pngbin0 -> 462 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertbookmark.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertcaptiondialog.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertcellsdown.pngbin0 -> 259 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertcellsright.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertcolumns.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertctrl.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertcurrencyfield.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertdatefield.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertdoc.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertdraw.pngbin0 -> 523 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertedit.pngbin0 -> 179 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertendnote.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertfield.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertfieldctrl.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertfilecontrol.pngbin0 -> 684 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertfixedtext.pngbin0 -> 251 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertfootnote.pngbin0 -> 359 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertformattedfield.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertformula.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertframe.pngbin0 -> 189 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertframeinteract.pngbin0 -> 166 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertframeinteractnocolumns.pngbin0 -> 177 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertgraphic.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_inserthyperlink.pngbin0 -> 700 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertimagecontrol.pngbin0 -> 429 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertindexesentry.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertlistbox.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertmath.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertneutralparagraph.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertnumericfield.pngbin0 -> 169 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertobjctrl.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertobject.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertobjectchart.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertobjectdialog.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertobjectfloatingframe.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertobjectstarmath.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertpage.pngbin0 -> 490 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertpagecountfield.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertpagenumberfield.pngbin0 -> 402 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertpatternfield.pngbin0 -> 571 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertplugin.pngbin0 -> 348 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertpushbutton.pngbin0 -> 183 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertreferencefield.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertrows.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertsection.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertsound.pngbin0 -> 295 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertspreadsheet.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertsymbol.pngbin0 -> 285 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_inserttable.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_inserttextframe.pngbin0 -> 188 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_inserttimefield.pngbin0 -> 345 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_inserttitlefield.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_inserttopicfield.pngbin0 -> 371 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insertvideo.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_insobjctrl.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_interactivegradient.pngbin0 -> 372 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_interactivetransparence.pngbin0 -> 464 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_justifypara.pngbin0 -> 217 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_label.pngbin0 -> 251 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_lastpage.pngbin0 -> 298 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_lastrecord.pngbin0 -> 107 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_leaveallgroups.pngbin0 -> 294 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_leavegroup.pngbin0 -> 294 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_leftpara.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_line.pngbin0 -> 88 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_line_diagonal.pngbin0 -> 87 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linearrowcircle.pngbin0 -> 150 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linearrowend.pngbin0 -> 118 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linearrows.pngbin0 -> 138 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linearrowsquare.pngbin0 -> 127 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linearrowstart.pngbin0 -> 119 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linecirclearrow.pngbin0 -> 151 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linedraft.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_lineendstyle.pngbin0 -> 131 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linesquarearrow.pngbin0 -> 127 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linestyle.pngbin0 -> 154 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linetoolbox.pngbin0 -> 408 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_linewidth.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_listbox.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_loadbasic.pngbin0 -> 426 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_macrorecorder.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_managebreakpoints.pngbin0 -> 546 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_matchgroup.pngbin0 -> 273 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_measureline.pngbin0 -> 142 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_mergecells.pngbin0 -> 113 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_mergedialog.pngbin0 -> 673 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_mirror.pngbin0 -> 659 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_modifypage.pngbin0 -> 452 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_moduledialog.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_morecontrols.pngbin0 -> 359 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_movedown.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_movedownsubitems.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_moveup.pngbin0 -> 236 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_moveupsubitems.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_navigationbar.pngbin0 -> 150 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_navigator.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_newarrangement.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_newdoc.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_newrecord.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_nextpage.pngbin0 -> 376 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_nextrecord.pngbin0 -> 100 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_no.pngbin0 -> 958 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberformatcurrency.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberformatdate.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberformatdecdecimals.pngbin0 -> 141 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberformatincdecimals.pngbin0 -> 127 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberformatpercent.pngbin0 -> 175 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberformatscientific.pngbin0 -> 199 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberformatstandard.pngbin0 -> 264 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numberingstart.pngbin0 -> 357 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_numericfield.pngbin0 -> 169 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_objectalign.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_objectalignleft.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_objectalignright.pngbin0 -> 245 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_objectcatalog.pngbin0 -> 257 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_objectposition.pngbin0 -> 251 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_objects3dtoolbox.pngbin0 -> 277 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ok.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_open.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_openreadonly.pngbin0 -> 467 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_openurl.pngbin0 -> 816 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_optimizetable.pngbin0 -> 342 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ordercrit.pngbin0 -> 287 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlinebullet.pngbin0 -> 230 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlinecollapse.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlinecollapseall.pngbin0 -> 159 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlinedown.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlineexpand.pngbin0 -> 154 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlineexpandall.pngbin0 -> 120 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlinefont.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlineformat.pngbin0 -> 302 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlineleft.pngbin0 -> 233 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlineright.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_outlineup.pngbin0 -> 236 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pagedown.pngbin0 -> 376 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pageup.pngbin0 -> 380 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_paragraphdialog.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_paralefttoright.pngbin0 -> 353 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pararighttoleft.pngbin0 -> 352 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_paraspacedecrease.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_paraspaceincrease.pngbin0 -> 313 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_paste.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_patternfield.pngbin0 -> 571 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pickthrough.pngbin0 -> 220 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pie.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pie_unfilled.pngbin0 -> 232 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pluginsactive.pngbin0 -> 348 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_polygon.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_polygon_diagonal.pngbin0 -> 284 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_polygon_diagonal_unfilled.pngbin0 -> 119 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_polygon_unfilled.pngbin0 -> 132 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_presentation.pngbin0 -> 325 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_presentationlayout.pngbin0 -> 393 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_previewprintoptions.pngbin0 -> 589 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_previewzoom.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_previouspage.pngbin0 -> 380 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_prevrecord.pngbin0 -> 98 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_print.pngbin0 -> 465 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_printdefault.pngbin0 -> 465 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_printersetup.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_printlayout.pngbin0 -> 498 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_printpagepreview.pngbin0 -> 505 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_printpreview.pngbin0 -> 624 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_progressbar.pngbin0 -> 162 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_pushbutton.pngbin0 -> 183 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_quickedit.pngbin0 -> 135 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_quit.pngbin0 -> 414 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_radiobutton.pngbin0 -> 258 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_recsave.pngbin0 -> 487 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_recsearch.pngbin0 -> 398 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_rect.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_rect_rounded.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_rect_rounded_unfilled.pngbin0 -> 131 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_rect_unfilled.pngbin0 -> 90 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_rectangletoolbox.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_recundo.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_redo.pngbin0 -> 338 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_refresh.pngbin0 -> 539 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_rehearsetimings.pngbin0 -> 447 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_reload.pngbin0 -> 621 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_removebullets.pngbin0 -> 213 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_removefilter.pngbin0 -> 293 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_removefiltersort.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_repeat.pngbin0 -> 198 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_reverseorder.pngbin0 -> 223 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_rightpara.pngbin0 -> 218 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_runbasic.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_save.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_saveas.pngbin0 -> 599 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_saveastemplate.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_savebasicas.pngbin0 -> 599 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sbabrwinsert.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sbaexecutesql.pngbin0 -> 402 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sbanativesql.pngbin0 -> 173 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_scaletext.pngbin0 -> 234 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_scrollbar.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_searchdialog.pngbin0 -> 398 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_selectall.pngbin0 -> 312 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_selectmode.pngbin0 -> 139 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_selectobject.pngbin0 -> 139 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_selecttable.pngbin0 -> 108 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sendfax.pngbin0 -> 435 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sendmail.pngbin0 -> 323 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sendtoback.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_setborderstyle.pngbin0 -> 172 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_setdocumentproperties.pngbin0 -> 399 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_setobjecttobackground.pngbin0 -> 473 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_setobjecttoforeground.pngbin0 -> 607 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_shadowcursor.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_shadowed.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_shear.pngbin0 -> 491 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_shell3d.pngbin0 -> 583 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_showbookview.pngbin0 -> 247 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_showbrowser.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_showfmexplorer.pngbin0 -> 533 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_showmultiplepages.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_showpropbrowser.pngbin0 -> 466 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_showtwopages.pngbin0 -> 210 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_shrink.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_snapborder.pngbin0 -> 397 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_snapframe.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_snappoints.pngbin0 -> 423 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_solidcreate.pngbin0 -> 466 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sortascending.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sortdescending.pngbin0 -> 185 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sortdown.pngbin0 -> 185 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sortup.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sourceview.pngbin0 -> 501 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_spacepara1.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_spacepara15.pngbin0 -> 203 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_spacepara2.pngbin0 -> 203 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_spelldialog.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_spelling.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_spellonline.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_sphere.pngbin0 -> 732 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_splitcell.pngbin0 -> 137 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_square.pngbin0 -> 226 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_square_rounded.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_square_rounded_unfilled.pngbin0 -> 155 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_square_unfilled.pngbin0 -> 92 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_starchartdialog.pngbin0 -> 316 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.bang.pngbin0 -> 434 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.concave-star6.pngbin0 -> 414 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.doorplate.pngbin0 -> 341 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.horizontal-scroll.pngbin0 -> 308 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.pngbin0 -> 378 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.signet.pngbin0 -> 395 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.star12.pngbin0 -> 396 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.star24.pngbin0 -> 453 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.star4.pngbin0 -> 311 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.star5.pngbin0 -> 378 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.star6.pngbin0 -> 399 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.star8.pngbin0 -> 395 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_starshapes.vertical-scroll.pngbin0 -> 309 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_strikeout.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_styleapply.pngbin0 -> 501 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_stylenewbyexample.pngbin0 -> 110 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_styleupdatebyexample.pngbin0 -> 126 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_stylewatercanmode.pngbin0 -> 448 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_subscript.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_superscript.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_switchcontroldesignmode.pngbin0 -> 588 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_switchxformsdesignmode.pngbin0 -> 589 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolcatalogue.pngbin0 -> 424 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.brace-pair.pngbin0 -> 384 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.bracket-pair.pngbin0 -> 245 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.cloud.pngbin0 -> 385 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.diamond-bevel.pngbin0 -> 326 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.flower.pngbin0 -> 459 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.forbidden.pngbin0 -> 494 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.heart.pngbin0 -> 400 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.left-brace.pngbin0 -> 266 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.left-bracket.pngbin0 -> 172 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.lightning.pngbin0 -> 383 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.moon.pngbin0 -> 346 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.octagon-bevel.pngbin0 -> 397 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.pngbin0 -> 443 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.puzzle.pngbin0 -> 468 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.quad-bevel.pngbin0 -> 275 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.right-brace.pngbin0 -> 257 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.right-bracket.pngbin0 -> 168 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.smiley.pngbin0 -> 443 bytes
-rwxr-xr-xooo_custom_images/industrial/res/commandimagelist/sc_symbolshapes.sun.pngbin0 -> 383 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_tabdialog.pngbin0 -> 294 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_tablemodefix.pngbin0 -> 171 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_tablemodefixprop.pngbin0 -> 169 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_tablemodevariable.pngbin0 -> 182 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_tablesort.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_testmode.pngbin0 -> 383 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_text.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_text_marquee.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_textdirectionlefttoright.pngbin0 -> 354 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_textdirectiontoptobottom.pngbin0 -> 359 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_textdraft.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_textfittosizetool.pngbin0 -> 194 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_texttoolbox.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_thesaurus.pngbin0 -> 235 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_thesaurusdialog.pngbin0 -> 235 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_timefield.pngbin0 -> 345 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_toggleanchortype.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_toggleaxisdescr.pngbin0 -> 96 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_toggleaxistitle.pngbin0 -> 231 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_togglebreakpoint.pngbin0 -> 397 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_togglegridhorizontal.pngbin0 -> 104 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_togglegridvertical.pngbin0 -> 105 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_togglelegend.pngbin0 -> 303 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_togglemergecells.pngbin0 -> 475 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_toggleobjectbeziermode.pngbin0 -> 133 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_toggleobjectrotatemode.pngbin0 -> 339 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_toggletitle.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_torus.pngbin0 -> 536 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_transformdialog.pngbin0 -> 188 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_undo.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_ungroup.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_unhainframes.pngbin0 -> 559 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_upsearch.pngbin0 -> 236 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_usewizards.pngbin0 -> 492 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_verticalcaption.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_verticaltext.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_verticaltextfittosizetool.pngbin0 -> 182 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_vfixedline.pngbin0 -> 121 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_view100.pngbin0 -> 295 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_viewdatasourcebrowser.pngbin0 -> 464 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_viewformasgrid.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_vscrollbar.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_window3d.pngbin0 -> 490 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_wrapcontour.pngbin0 -> 213 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_wrapideal.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_wrapleft.pngbin0 -> 157 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_wrapoff.pngbin0 -> 150 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_wrapon.pngbin0 -> 159 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_wrapright.pngbin0 -> 157 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_wrapthrough.pngbin0 -> 176 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_xlinecolor.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_xlinestyle.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_yes.pngbin0 -> 948 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoom.pngbin0 -> 291 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoom100percent.pngbin0 -> 296 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomin.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomminus.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomnext.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomobjects.pngbin0 -> 303 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomoptimal.pngbin0 -> 303 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomout.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoompage.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoompagewidth.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoompanning.pngbin0 -> 656 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomplus.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomprevious.pngbin0 -> 488 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_zoomtoolbox.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/lc_underlinedouble.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/sc_underline.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sk/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/lc_underline.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sl/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/lc_underline.pngbin0 -> 431 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/tr/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/lc_italic.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/lc_underline.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-CN/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/lc_bold.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/lc_italic.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/lc_underline.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/lc_underlinedouble.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/sc_bold.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/sc_italic.pngbin0 -> 263 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/sc_underline.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/zh-TW/sc_underlinedouble.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/res/fileopen.pngbin0 -> 328 bytes
-rw-r--r--ooo_custom_images/industrial/res/foldercl.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/industrial/res/folderop.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/fp010.pngbin0 -> 383 bytes
-rw-r--r--ooo_custom_images/industrial/res/fp015.pngbin0 -> 555 bytes
-rw-r--r--ooo_custom_images/industrial/res/hldocntp.pngbin0 -> 911 bytes
-rw-r--r--ooo_custom_images/industrial/res/hldoctp.pngbin0 -> 792 bytes
-rw-r--r--ooo_custom_images/industrial/res/hlinettp.pngbin0 -> 1934 bytes
-rw-r--r--ooo_custom_images/industrial/res/hlmailtp.pngbin0 -> 1188 bytes
-rw-r--r--ooo_custom_images/industrial/res/im30819.pngbin0 -> 562 bytes
-rw-r--r--ooo_custom_images/industrial/res/im30820.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/industrial/res/im30821.pngbin0 -> 456 bytes
-rw-r--r--ooo_custom_images/industrial/res/im30826.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05303.pngbin0 -> 766 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05501.pngbin0 -> 1031 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05502.pngbin0 -> 1184 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05504.pngbin0 -> 941 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05505.pngbin0 -> 934 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05508.pngbin0 -> 1245 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05509.pngbin0 -> 941 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05539.pngbin0 -> 975 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05555.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05556.pngbin0 -> 220 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05596.pngbin0 -> 1415 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05678.pngbin0 -> 1300 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05700.pngbin0 -> 573 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05701.pngbin0 -> 522 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05710.pngbin0 -> 649 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05711.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc05961.pngbin0 -> 1001 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc06300.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc06301.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc06302.pngbin0 -> 1302 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc06303.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc06312.pngbin0 -> 970 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10107.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10113.pngbin0 -> 812 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10243.pngbin0 -> 557 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10366.pngbin0 -> 584 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10375.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10376.pngbin0 -> 320 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10711.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10715.pngbin0 -> 352 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10716.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10851.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10853.pngbin0 -> 1474 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10854.pngbin0 -> 764 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10863.pngbin0 -> 504 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10864.pngbin0 -> 493 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10865.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10866.pngbin0 -> 432 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10867.pngbin0 -> 447 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10868.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10869.pngbin0 -> 780 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10907.pngbin0 -> 569 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10908.pngbin0 -> 562 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc10937.pngbin0 -> 623 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc12201.pngbin0 -> 523 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc12203.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc12231.pngbin0 -> 704 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc12235.pngbin0 -> 679 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc12236.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc12237.pngbin0 -> 398 bytes
-rw-r--r--ooo_custom_images/industrial/res/lc12238.pngbin0 -> 607 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03123.pngbin0 -> 1356 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03126.pngbin0 -> 1519 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03127.pngbin0 -> 1519 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03129.pngbin0 -> 1695 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03130.pngbin0 -> 1358 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03139.pngbin0 -> 1392 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03144.pngbin0 -> 768 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03162.pngbin0 -> 1257 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03163.pngbin0 -> 553 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03216.pngbin0 -> 1534 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03226.pngbin0 -> 1004 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03227.pngbin0 -> 1606 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03228.pngbin0 -> 1608 bytes
-rw-r--r--ooo_custom_images/industrial/res/lo03242.pngbin0 -> 772 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03123.pngbin0 -> 1357 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03125.pngbin0 -> 1230 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03126.pngbin0 -> 1519 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03127.pngbin0 -> 1519 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03128.pngbin0 -> 1186 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03129.pngbin0 -> 1695 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03130.pngbin0 -> 1357 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03131.pngbin0 -> 1498 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03132.pngbin0 -> 1498 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03137.pngbin0 -> 1087 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03139.pngbin0 -> 1391 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03140.pngbin0 -> 1190 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03141.pngbin0 -> 805 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03144.pngbin0 -> 767 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03145.pngbin0 -> 768 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03150.pngbin0 -> 647 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03158.pngbin0 -> 1099 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03160.pngbin0 -> 1481 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03161.pngbin0 -> 1291 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03162.pngbin0 -> 1255 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03163.pngbin0 -> 1257 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03189.pngbin0 -> 805 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03216.pngbin0 -> 1534 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03219.pngbin0 -> 1121 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03226.pngbin0 -> 646 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03227.pngbin0 -> 1604 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03228.pngbin0 -> 1608 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03241.pngbin0 -> 1357 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03242.pngbin0 -> 1039 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03243.pngbin0 -> 1389 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03244.pngbin0 -> 1386 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03245.pngbin0 -> 1695 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03246.pngbin0 -> 1608 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03247.pngbin0 -> 767 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03248.pngbin0 -> 647 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03249.pngbin0 -> 1358 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03250.pngbin0 -> 1519 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03251.pngbin0 -> 1256 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03252.pngbin0 -> 1603 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03253.pngbin0 -> 1357 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03254.pngbin0 -> 1520 bytes
-rw-r--r--ooo_custom_images/industrial/res/lx03255.pngbin0 -> 557 bytes
-rw-r--r--ooo_custom_images/industrial/res/newdoc.pngbin0 -> 555 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05303.pngbin0 -> 414 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05500.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05501.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05502.pngbin0 -> 599 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05504.pngbin0 -> 465 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05505.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05508.pngbin0 -> 621 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05509.pngbin0 -> 465 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05539.pngbin0 -> 310 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05554.pngbin0 -> 501 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05555.pngbin0 -> 110 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05556.pngbin0 -> 126 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05596.pngbin0 -> 816 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05678.pngbin0 -> 737 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05710.pngbin0 -> 275 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05711.pngbin0 -> 168 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc05961.pngbin0 -> 398 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc06300.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc06301.pngbin0 -> 233 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc06302.pngbin0 -> 590 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc06303.pngbin0 -> 413 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc06312.pngbin0 -> 419 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc06331.pngbin0 -> 555 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc06694.pngbin0 -> 513 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10108.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10113.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10116.pngbin0 -> 379 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10243.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10366.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10375.pngbin0 -> 225 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10376.pngbin0 -> 245 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10711.pngbin0 -> 293 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10715.pngbin0 -> 249 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10716.pngbin0 -> 197 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10851.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10853.pngbin0 -> 677 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10854.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10863.pngbin0 -> 176 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10864.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10865.pngbin0 -> 325 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10866.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10867.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10868.pngbin0 -> 170 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10869.pngbin0 -> 461 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10907.pngbin0 -> 354 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10908.pngbin0 -> 359 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc10937.pngbin0 -> 345 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc12201.pngbin0 -> 324 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc12203.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc12231.pngbin0 -> 483 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc12235.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc12236.pngbin0 -> 281 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc12237.pngbin0 -> 163 bytes
-rw-r--r--ooo_custom_images/industrial/res/sc12238.pngbin0 -> 296 bytes
-rw-r--r--ooo_custom_images/industrial/res/sco206.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/script.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03123.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03126.pngbin0 -> 515 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03127.pngbin0 -> 515 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03129.pngbin0 -> 465 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03130.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03139.pngbin0 -> 473 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03144.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03162.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03163.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03216.pngbin0 -> 426 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03226.pngbin0 -> 312 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03227.pngbin0 -> 450 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03228.pngbin0 -> 450 bytes
-rw-r--r--ooo_custom_images/industrial/res/so03242.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03123.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03125.pngbin0 -> 443 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03126.pngbin0 -> 515 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03127.pngbin0 -> 515 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03128.pngbin0 -> 560 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03129.pngbin0 -> 466 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03130.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03131.pngbin0 -> 493 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03132.pngbin0 -> 493 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03137.pngbin0 -> 487 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03139.pngbin0 -> 473 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03140.pngbin0 -> 439 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03141.pngbin0 -> 328 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03144.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03145.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03150.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03158.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03160.pngbin0 -> 413 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03161.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03162.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03163.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03187.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03188.pngbin0 -> 238 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03189.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03201.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03202.pngbin0 -> 210 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03216.pngbin0 -> 419 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03219.pngbin0 -> 472 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03226.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03227.pngbin0 -> 450 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03228.pngbin0 -> 450 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03241.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03242.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03243.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03244.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03245.pngbin0 -> 464 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03246.pngbin0 -> 450 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03247.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03248.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03249.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03250.pngbin0 -> 515 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03251.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03252.pngbin0 -> 450 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03253.pngbin0 -> 387 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03254.pngbin0 -> 515 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx03255.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/industrial/res/sx10768.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/res/target.pngbin0 -> 372 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/date.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/dropcopy.pngbin0 -> 353 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/droplink.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/dropurl.pngbin0 -> 699 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/file.pngbin0 -> 391 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/lc26047.pngbin0 -> 679 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/lc26048.pngbin0 -> 299 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/lc26049.pngbin0 -> 145 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/lc26050.pngbin0 -> 959 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/lc26051.pngbin0 -> 683 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/sc26047.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/sc26048.pngbin0 -> 124 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/sc26049.pngbin0 -> 92 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/sc26050.pngbin0 -> 666 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/apptbx/sc26051.pngbin0 -> 527 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/na010.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/na011.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/na05.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/na06.pngbin0 -> 385 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/na07.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/na09.pngbin0 -> 570 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc01.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc02.pngbin0 -> 241 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc03.pngbin0 -> 275 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc04.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc05.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc06.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc07.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/imglst/navipi/nc08.pngbin0 -> 523 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/page.pngbin0 -> 402 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/pages.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/sf01.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/sf02.pngbin0 -> 215 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/table.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/text.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/industrial/sc/res/time.pngbin0 -> 345 bytes
-rw-r--r--ooo_custom_images/industrial/sc10713.pngbin0 -> 185 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/dlgass1.pngbin0 -> 19531 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/dlgass2.pngbin0 -> 18743 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/dlgass3.pngbin0 -> 17881 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/dlgass4.pngbin0 -> 17873 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/dlgass5.pngbin0 -> 17657 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/extras.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/graphic.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv010.pngbin0 -> 699 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv02.pngbin0 -> 239 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv03.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv04.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv05.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv06.pngbin0 -> 304 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv08.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/nv09.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/sc27036.pngbin0 -> 231 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/sf01.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/imagelst/sf02.pngbin0 -> 428 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/objekt.pngbin0 -> 745 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/ole.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/page.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/pageobjs.pngbin0 -> 417 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/pipette.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/industrial/sd/res/text.pngbin0 -> 482 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/doccl.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/favourite.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/favourite_big.pngbin0 -> 1033 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/hlpbookclosed.pngbin0 -> 625 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/hlpbookopen.pngbin0 -> 691 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/hlpdoc.pngbin0 -> 457 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/indexoff_big.pngbin0 -> 643 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/indexoff_small.pngbin0 -> 371 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/indexon_big.pngbin0 -> 666 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/indexon_small.pngbin0 -> 368 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln02.pngbin0 -> 805 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln03.pngbin0 -> 805 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln04.pngbin0 -> 805 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln045.pngbin0 -> 1229 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln047.pngbin0 -> 1293 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln05.pngbin0 -> 804 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln052.pngbin0 -> 1191 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln057.pngbin0 -> 1122 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln075.pngbin0 -> 1099 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln078.pngbin0 -> 1499 bytes
-rw-r--r--ooo_custom_images/industrial/sfx2/res/ln095.pngbin0 -> 647 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30257.pngbin0 -> 671 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30258.pngbin0 -> 670 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30261.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30264.pngbin0 -> 581 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30266.pngbin0 -> 578 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30267.pngbin0 -> 578 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30268.pngbin0 -> 870 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30269.pngbin0 -> 587 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30270.pngbin0 -> 659 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30271.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30306.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30307.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30308.pngbin0 -> 351 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/lc30309.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30257.pngbin0 -> 530 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30258.pngbin0 -> 532 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30261.pngbin0 -> 124 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30264.pngbin0 -> 296 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30266.pngbin0 -> 307 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30267.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30268.pngbin0 -> 253 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30269.pngbin0 -> 303 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30270.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30271.pngbin0 -> 125 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30306.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30307.pngbin0 -> 285 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30308.pngbin0 -> 253 bytes
-rw-r--r--ooo_custom_images/industrial/starmath/res/sc30309.pngbin0 -> 220 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/back_large.pngbin0 -> 410 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/back_small.pngbin0 -> 233 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/folder.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/fp011.pngbin0 -> 475 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/helpagent.pngbin0 -> 6600 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/info_large.pngbin0 -> 377 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/info_small.pngbin0 -> 248 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/my_docs.pngbin0 -> 1445 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/new_doc.pngbin0 -> 863 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/preview_large.pngbin0 -> 457 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/preview_small.pngbin0 -> 271 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/samples.pngbin0 -> 1404 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/template.pngbin0 -> 1212 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/up_large.pngbin0 -> 769 bytes
-rw-r--r--ooo_custom_images/industrial/svtools/res/up_small.pngbin0 -> 383 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/3dgeo.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/3dlight.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/3drepres.pngbin0 -> 497 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/3dtextur.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/apply.pngbin0 -> 211 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd01.pngbin0 -> 211 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd015.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd016.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd017.pngbin0 -> 197 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd018.pngbin0 -> 386 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd02.pngbin0 -> 679 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd020.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd021.pngbin0 -> 338 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd025.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd026.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd05.pngbin0 -> 138 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd06.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd07.pngbin0 -> 491 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/cd08.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/color.pngbin0 -> 424 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/colordlg.pngbin0 -> 305 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/convrt3d.pngbin0 -> 702 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/doublesi.pngbin0 -> 157 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/filter3d.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/galdefs.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/galicon.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/galimps.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/gallist.pngbin0 -> 211 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/galnors.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/galrdos.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id01.pngbin0 -> 211 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id016.pngbin0 -> 324 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id018.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id019.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id02.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id03.pngbin0 -> 599 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id030.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id031.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id032.pngbin0 -> 197 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id033.pngbin0 -> 386 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id04.pngbin0 -> 139 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id040.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id041.pngbin0 -> 338 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id05.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id06.pngbin0 -> 491 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id07.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/id08.pngbin0 -> 408 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/invert3d.pngbin0 -> 182 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/lght2sid.pngbin0 -> 183 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/light.pngbin0 -> 439 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/lighton.pngbin0 -> 592 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/material.pngbin0 -> 581 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/modula3d.pngbin0 -> 534 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/normflat.pngbin0 -> 137 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/normobjs.pngbin0 -> 322 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/normsphe.pngbin0 -> 248 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/objspc3d.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/parallel.pngbin0 -> 129 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/persp3d.pngbin0 -> 194 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/reload.pngbin0 -> 621 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/replac3d.pngbin0 -> 409 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/rotate3d.pngbin0 -> 808 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/shadow3d.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/sphere3d.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10416.pngbin0 -> 2092 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10432.pngbin0 -> 1496 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10433.pngbin0 -> 1254 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10434.pngbin0 -> 1357 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10435.pngbin0 -> 1519 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10436.pngbin0 -> 768 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10437.pngbin0 -> 1186 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10439.pngbin0 -> 1391 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10447.pngbin0 -> 1604 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10450.pngbin0 -> 1241 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10452.pngbin0 -> 1109 bytes
-rw-r--r--ooo_custom_images/industrial/svx/res/tr10921.pngbin0 -> 1340 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/lc20556.pngbin0 -> 681 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/lc20557.pngbin0 -> 959 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/lc20558.pngbin0 -> 683 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20000.pngbin0 -> 306 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20001.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20002.pngbin0 -> 193 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20003.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20004.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20005.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20006.pngbin0 -> 291 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20007.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20008.pngbin0 -> 312 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20009.pngbin0 -> 308 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20010.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/nc20011.pngbin0 -> 523 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20171.pngbin0 -> 222 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20172.pngbin0 -> 225 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20173.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20174.pngbin0 -> 228 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20175.pngbin0 -> 385 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20177.pngbin0 -> 215 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20179.pngbin0 -> 222 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20182.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20183.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20186.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20233.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20234.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20235.pngbin0 -> 700 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20236.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20238.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20239.pngbin0 -> 353 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20244.pngbin0 -> 526 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20245.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20246.pngbin0 -> 270 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20247.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20248.pngbin0 -> 310 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20249.pngbin0 -> 432 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20556.pngbin0 -> 318 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20557.pngbin0 -> 667 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sc20558.pngbin0 -> 527 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sf01.pngbin0 -> 215 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sf02.pngbin0 -> 252 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sf03.pngbin0 -> 223 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sf04.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sf05.pngbin0 -> 217 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20000.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20001.pngbin0 -> 181 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20002.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20003.pngbin0 -> 205 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20004.pngbin0 -> 383 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20005.pngbin0 -> 523 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20006.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20007.pngbin0 -> 291 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20008.pngbin0 -> 477 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20009.pngbin0 -> 279 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20010.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20011.pngbin0 -> 306 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20013.pngbin0 -> 359 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20014.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20015.pngbin0 -> 221 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20016.pngbin0 -> 399 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20017.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20018.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/industrial/sw/imglst/sr20019.pngbin0 -> 353 bytes
-rw-r--r--ooo_custom_images/industrial/vcl/source/src/msgbox.pngbin0 -> 7529 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/bookmark_sx.pngbin0 -> 317 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/bookmarkcontainer_sx.pngbin0 -> 311 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/db.pngbin0 -> 486 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/db.xcf.bz2bin0 -> 1664 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/db_deleted.pngbin0 -> 586 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/db_deleted.xcf.bz2bin0 -> 1465 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/db_modified.pngbin0 -> 509 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/db_modified.xcf.bz2bin0 -> 1544 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/db_new.pngbin0 -> 440 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/docedit_sc.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/docopen_sc.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/exerror.pngbin0 -> 588 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/exinfo.pngbin0 -> 680 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/exwarning.pngbin0 -> 427 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/formnew_sc.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/forms_32.pngbin0 -> 675 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/forms_32.xcf.bz2bin0 -> 1437 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc010.pngbin0 -> 537 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc011.pngbin0 -> 816 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc011.xcf.bz2bin0 -> 1799 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc012.pngbin0 -> 969 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc012.xcf.bz2bin0 -> 2508 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc013.pngbin0 -> 788 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc013.xcf.bz2bin0 -> 2381 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc014.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc014.svg2101
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc021.pngbin0 -> 565 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc021.xcf.bz2bin0 -> 1797 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc023.pngbin0 -> 531 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc05621.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc05621.xcf.bz2bin0 -> 1027 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc09.pngbin0 -> 822 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/lc12252.pngbin0 -> 604 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/linkdrop_sc.pngbin0 -> 392 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/linkdrop_sc.xcf.bz2bin0 -> 977 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/linkedit_sc.pngbin0 -> 389 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/linkedit_sc.xcf.bz2bin0 -> 1508 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/linknew_sc.pngbin0 -> 436 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/linknew_sc.xcf.bz2bin0 -> 1752 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/queries_32.pngbin0 -> 789 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/querydrop_sc.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/querydrop_sc.xcf.bz2bin0 -> 936 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/queryeditdesign_sc.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/queryeditdesign_sc.xcf.bz2bin0 -> 1443 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/queryeditsql_sc.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/queryeditsql_sc.xcf.bz2bin0 -> 1398 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/querynewdesign_sc.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/querynewdesign_sc.xcf.bz2bin0 -> 1728 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/querynewsql_sc.pngbin0 -> 447 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/querynewsql_sc.xcf.bz2bin0 -> 1040 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/rename_sc.pngbin0 -> 137 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/reports_32.pngbin0 -> 968 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc010.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc011.pngbin0 -> 436 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc012.pngbin0 -> 389 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc013.pngbin0 -> 393 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc014.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc021.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc023.pngbin0 -> 364 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc05621.pngbin0 -> 252 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc05621.xcf.bz2bin0 -> 765 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc09.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc12252.pngbin0 -> 526 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/sc12252.xcf.bz2bin0 -> 1185 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tabledrop_sc.pngbin0 -> 295 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tabledrop_sc.xcf.bz2bin0 -> 1725 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tableedit_sc.pngbin0 -> 314 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tableedit_sc.xcf.bz2bin0 -> 1717 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tablenew_sc.pngbin0 -> 408 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tablenew_sc.xcf.bz2bin0 -> 1718 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tables_32.pngbin0 -> 776 bytes
-rw-r--r--ooo_custom_images/tango/dbaccess/res/tables_32.xcf.bz2bin0 -> 2159 bytes
-rw-r--r--ooo_custom_images/tango/fpicker/res/fp011.pngbin0 -> 473 bytes
-rw-r--r--ooo_custom_images/tango/fpicker/res/fp014.pngbin0 -> 510 bytes
-rw-r--r--ooo_custom_images/tango/lc10713.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/tango/res/adrbook.pngbin0 -> 652 bytes
-rw-r--r--ooo_custom_images/tango/res/baswatr.pngbin0 -> 478 bytes
-rw-r--r--ooo_custom_images/tango/res/baswatr.xcf.bz2bin0 -> 1091 bytes
-rw-r--r--ooo_custom_images/tango/res/browse.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ar/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ca/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/cs/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/de/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/en-GB/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/es/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/fr/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/hu/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/it/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ja/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/km/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ko/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_absoluterecord.pngbin0 -> 497 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_absoluterecord.xcf.bz2bin0 -> 938 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_addbookmark.pngbin0 -> 646 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_addbookmark.xcf.bz2bin0 -> 1387 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_adddatefield.pngbin0 -> 482 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_adddatefield.xcf.bz2bin0 -> 1196 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_adddirect.pngbin0 -> 385 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_adddirect.xcf.bz2bin0 -> 1769 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_adddirect32.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_addfield.pngbin0 -> 496 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_addfield.xcf.bz2bin0 -> 1266 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_addtable.pngbin0 -> 546 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_addtable.xcf.bz2bin0 -> 1467 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_addwatch.pngbin0 -> 449 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_adjust.pngbin0 -> 999 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_adjust.xcf.bz2bin0 -> 1974 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_advancedmode.pngbin0 -> 658 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignblock.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignblock.xcf.bz2bin0 -> 1143 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignbottom.pngbin0 -> 439 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignbottom.xcf.bz2bin0 -> 1045 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_aligncenter.pngbin0 -> 541 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_aligndown.pngbin0 -> 472 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignhorizontalcenter.pngbin0 -> 516 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignhorizontalcenter.xcf.bz2bin0 -> 1183 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignleft.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignleft.xcf.bz2bin0 -> 1188 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignmiddle.pngbin0 -> 553 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignright.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignright.xcf.bz2bin0 -> 1169 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_aligntop.pngbin0 -> 464 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_aligntop.xcf.bz2bin0 -> 1057 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignup.pngbin0 -> 509 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignvcenter.pngbin0 -> 454 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignvcenter.xcf.bz2bin0 -> 1130 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_alignverticalcenter.pngbin0 -> 454 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_animationeffects.pngbin0 -> 459 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_animationmode.pngbin0 -> 925 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_animationobjects.pngbin0 -> 1159 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_apply.pngbin0 -> 1435 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_arc.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_arrowshapes.chevron.pngbin0 -> 793 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_arrowshapes.chevron.svg182
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_arrowshapes.circular-arrow.pngbin0 -> 1030 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_arrowshapes.circular-arrow.svg124
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_autoformat.pngbin0 -> 862 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_backcolor.pngbin0 -> 851 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_backgroundcolor.pngbin0 -> 808 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_bold.xcf.bz2bin0 -> 1789 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_cancel.pngbin0 -> 1119 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_centerpara.pngbin0 -> 516 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_charfontname.pngbin0 -> 868 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_charfontname.xcf.bz2bin0 -> 1761 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_closewin.pngbin0 -> 418 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_color.pngbin0 -> 1016 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_commontaskbarvisible.pngbin0 -> 862 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_controlcodes.pngbin0 -> 312 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_copy.pngbin0 -> 564 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_copy.xcf.bz2bin0 -> 1730 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_customanimation.pngbin0 -> 1158 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_cut.pngbin0 -> 669 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_cut.xcf.bz2bin0 -> 2928 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_decrementindent.pngbin0 -> 559 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_decrementindent.xcf.bz2bin0 -> 1359 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_defaultbullet.pngbin0 -> 554 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_defaultbullet.xcf.bz2bin0 -> 1317 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_defaultnumbering.pngbin0 -> 574 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_defaultnumbering.xcf.bz2bin0 -> 1643 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_delete.pngbin0 -> 984 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_delete.xcf.bz2bin0 -> 1915 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_designerdialog.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_dia.pngbin0 -> 459 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_diaauto.pngbin0 -> 460 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_diaeffect.pngbin0 -> 460 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_diagramtype.pngbin0 -> 708 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_diaspeed.pngbin0 -> 460 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_diatime.pngbin0 -> 460 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_drawchart.pngbin0 -> 1076 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_duplicatepage.pngbin0 -> 588 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_editdoc.pngbin0 -> 608 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_editdoc.xcf.bz2bin0 -> 1729 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_editheaderandfooter.pngbin0 -> 514 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_editheaderandfooter.xcf.bz2bin0 -> 2187 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_ellipse.pngbin0 -> 903 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_ellipsecut.pngbin0 -> 828 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_ellipsetoolbox.pngbin0 -> 903 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_expandpage.pngbin0 -> 665 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_exportdirecttopdf.pngbin0 -> 819 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_exportdirecttopdf.xcf.bz2bin0 -> 2270 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_exportto.pngbin0 -> 731 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_exportto.xcf.bz2bin0 -> 1627 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_extendedhelp.pngbin0 -> 467 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_extendedhelp.xcf.bz2bin0 -> 1170 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/lc_extrusionlightingfloater.pngbin0 -> 1087 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_fillstyle.pngbin0 -> 887 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_fontcolor-alt.pngbin0 -> 937 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_fontcolor-alt.xcf.bz2bin0 -> 2259 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_fontcolor.pngbin0 -> 1017 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_fontcolor.xcf.bz2bin0 -> 3353 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_fontheight.pngbin0 -> 730 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_fontheight.xcf.bz2bin0 -> 1625 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_formatarea.pngbin0 -> 1157 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_formatline.pngbin0 -> 887 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_formatpaintbrush.pngbin0 -> 915 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_formatpaintbrush.xcf.bz2bin0 -> 1773 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_formfiltered.pngbin0 -> 467 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_formfiltered.xcf.bz2bin0 -> 2034 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_gallery.pngbin0 -> 511 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_gallery.xcf.bz2bin0 -> 1627 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_goalseekdialog.pngbin0 -> 599 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_goalseekdialog.xcf.bz2bin0 -> 1285 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_graphicdraft.pngbin0 -> 829 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_grow.pngbin0 -> 719 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_grow.xcf.bz2bin0 -> 1634 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_help.pngbin0 -> 1446 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_helpindex.pngbin0 -> 1465 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_helpindex.xcf.bz2bin0 -> 2671 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_hyperlinkdialog.pngbin0 -> 1219 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_hyperlinkdialog.xcf.bz2bin0 -> 2588 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_importfromfile.pngbin0 -> 858 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_incrementindent.pngbin0 -> 563 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_incrementindent.xcf.bz2bin0 -> 1317 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertannotation.pngbin0 -> 563 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertannotation.xcf.bz2bin0 -> 1481 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertapplet.pngbin0 -> 892 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertapplet.xcf.bz2bin0 -> 1422 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertavmedia.pngbin0 -> 1299 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertavmedia.xcf.bz2bin0 -> 2762 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertbookmark.pngbin0 -> 646 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertdraw.pngbin0 -> 1288 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertdraw.xcf.bz2bin0 -> 2781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertendnote.pngbin0 -> 529 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertendnote.xcf.bz2bin0 -> 2289 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertobjectchart.pngbin0 -> 1076 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertpage.pngbin0 -> 1057 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertpage.xcf.bz2bin0 -> 2191 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertspreadsheet.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertspreadsheet.xcf.bz2bin0 -> 1105 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_insertsymbol.pngbin0 -> 674 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_inserttable.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_inserttable.xcf.bz2bin0 -> 1133 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_italic.xcf.bz2bin0 -> 1497 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_justifypara.pngbin0 -> 488 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_leftpara.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_linewidth.pngbin0 -> 888 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_mergecells.pngbin0 -> 591 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_mergecells.xcf.bz2bin0 -> 1500 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_mirror.pngbin0 -> 973 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_navigator.pngbin0 -> 684 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_newdoc.pngbin0 -> 764 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_newdoc.xcf.bz2bin0 -> 1452 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_no.pngbin0 -> 1479 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_numberformatcurrency.pngbin0 -> 427 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_numberformatcurrency.xcf.bz2bin0 -> 1102 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_numberformatdate.pngbin0 -> 601 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_numberformatdate.xcf.bz2bin0 -> 1569 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_ok.pngbin0 -> 1015 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_open.pngbin0 -> 731 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_open.xcf.bz2bin0 -> 1963 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_openurl.pngbin0 -> 1456 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_openurl.xcf.bz2bin0 -> 3057 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_outlinebullet.pngbin0 -> 555 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_overline.pngbin0 -> 822 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_paste.pngbin0 -> 875 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_paste.xcf.bz2bin0 -> 2745 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_presentation.pngbin0 -> 932 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_presentation.svg909
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_presentationlayout.pngbin0 -> 819 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_presentationlayout.xcf.bz2bin0 -> 1824 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_print.pngbin0 -> 678 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_print.xcf.bz2bin0 -> 2534 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_printdefault.pngbin0 -> 677 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_printersetup.pngbin0 -> 899 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_printersetup.xcf.bz2bin0 -> 2536 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_printpagepreview.pngbin0 -> 775 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_printpagepreview.xcf.bz2bin0 -> 3301 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_printpreview.pngbin0 -> 1021 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_printpreview.xcf.bz2bin0 -> 2593 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_quit.pngbin0 -> 732 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_quit.xcf.bz2bin0 -> 1746 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_recundo.pngbin0 -> 914 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_recundo.xcf.bz2bin0 -> 1944 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_redo.pngbin0 -> 671 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_reload.pngbin0 -> 1249 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_reload.xcf.bz2bin0 -> 2606 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_rightpara.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_save.pngbin0 -> 790 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_save.xcf.bz2bin0 -> 1678 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_saveas.pngbin0 -> 921 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_saveas.xcf.bz2bin0 -> 2126 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_saveastemplate.pngbin0 -> 912 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_saveastemplate.xcf.bz2bin0 -> 2335 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_searchdialog.pngbin0 -> 848 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_searchdialog.xcf.bz2bin0 -> 2235 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_selectall.pngbin0 -> 568 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_selectall.xcf.bz2bin0 -> 2318 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_sendmail.pngbin0 -> 782 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_sendmail.xcf.bz2bin0 -> 1506 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_setborderstyle.pngbin0 -> 599 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_setborderstyle.xcf.bz2bin0 -> 1389 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_setdocumentproperties.pngbin0 -> 812 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_setdocumentproperties.xcf.bz2bin0 -> 1805 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_shrink.pngbin0 -> 713 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_shrink.xcf.bz2bin0 -> 1618 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_sortascending.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_sortdescending.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_sortdown.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_sortup.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_spelldialog.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_spelling.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_spelling.xcf.bz2bin0 -> 1352 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_spellingandgrammardialog.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_spellonline.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_spellonline.xcf.bz2bin0 -> 1397 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_styleapply.pngbin0 -> 1157 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_styleapply.xcf.bz2bin0 -> 2078 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_subscript.pngbin0 -> 741 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_subscript.xcf.bz2bin0 -> 1760 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_superscript.pngbin0 -> 735 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_superscript.xcf.bz2bin0 -> 1743 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_symbolcatalogue.pngbin0 -> 675 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_textdirectionlefttoright.pngbin0 -> 750 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_textdirectionlefttoright.xcf.bz2bin0 -> 1709 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_textdirectiontoptobottom.pngbin0 -> 777 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_textdirectiontoptobottom.xcf.bz2bin0 -> 1833 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_togglemergecells.pngbin0 -> 588 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_underline.xcf.bz2bin0 -> 1549 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_underlinedouble.xcf.bz2bin0 -> 1585 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_undo.pngbin0 -> 857 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_viewdatasourcebrowser.pngbin0 -> 833 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_xlinecolor.pngbin0 -> 887 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_xlinestyle.pngbin0 -> 887 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_xlinestyle.xcf.bz2bin0 -> 1843 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_yes.pngbin0 -> 1443 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoom.pngbin0 -> 1126 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoom.xcf.bz2bin0 -> 1707 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoom100percent.pngbin0 -> 1076 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoom100percent.xcf.bz2bin0 -> 2560 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomin.pngbin0 -> 1064 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomin.xcf.bz2bin0 -> 2273 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomminus.pngbin0 -> 1055 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomobjects.pngbin0 -> 1215 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomobjects.xcf.bz2bin0 -> 2650 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomoptimal.pngbin0 -> 1152 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomoptimal.xcf.bz2bin0 -> 2469 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomout.pngbin0 -> 1056 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomout.xcf.bz2bin0 -> 2315 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoompage.pngbin0 -> 1209 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoompage.xcf.bz2bin0 -> 3453 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoompagewidth.pngbin0 -> 1197 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoompagewidth.xcf.bz2bin0 -> 3720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoompanning.pngbin0 -> 1032 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomplus.pngbin0 -> 1064 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/lc_zoomtoolbox.pngbin0 -> 1126 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/nl/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pl/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt-BR/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/pt/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/ru/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_adddirect.pngbin0 -> 297 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_adddirect.xcf.bz2bin0 -> 1412 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignblock.pngbin0 -> 232 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignblock.xcf.bz2bin0 -> 849 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignhorizontalcenter.pngbin0 -> 246 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignhorizontalcenter.xcf.bz2bin0 -> 871 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignleft.pngbin0 -> 249 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignleft.xcf.bz2bin0 -> 868 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignright.pngbin0 -> 248 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_alignright.xcf.bz2bin0 -> 868 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_animationobjects.pngbin0 -> 385 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_apply.pngbin0 -> 928 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_autoformat.pngbin0 -> 620 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_backcolor.pngbin0 -> 490 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_backgroundcolor.pngbin0 -> 461 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_bulletsandnumberingdialog.pngbin0 -> 284 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_bulletsandnumberingdialog.xcf.bz2bin0 -> 995 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_cancel.pngbin0 -> 794 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_centerpara.pngbin0 -> 246 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_charfontname.pngbin0 -> 484 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_charfontname.xcf.bz2bin0 -> 1313 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_choosemacro.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_choosemacro.xcf.bz2bin0 -> 673 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_closewin.pngbin0 -> 250 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_color.pngbin0 -> 790 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_commontaskbarvisible.pngbin0 -> 620 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_controlcodes.pngbin0 -> 326 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_copy.pngbin0 -> 336 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_customanimation.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_cut.pngbin0 -> 622 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_decrementindent.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_decrementindent.xcf.bz2bin0 -> 923 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_defaultbullet.pngbin0 -> 282 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_defaultbullet.xcf.bz2bin0 -> 956 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_defaultnumbering.pngbin0 -> 290 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_defaultnumbering.xcf.bz2bin0 -> 987 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_delete.pngbin0 -> 453 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_delete.xcf.bz2bin0 -> 1033 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_deletecolumns.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_deletecolumns.xcf.bz2bin0 -> 1482 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_deleterows.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_deleterows.xcf.bz2bin0 -> 1357 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_designerdialog.pngbin0 -> 245 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_diagramtype.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_drawchart.pngbin0 -> 565 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_drawchart.xcf.bz2bin0 -> 1847 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_duplicatepage.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_editdoc.pngbin0 -> 296 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_editdoc.xcf.bz2bin0 -> 1081 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_editheaderandfooter.pngbin0 -> 303 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_editheaderandfooter.xcf.bz2bin0 -> 1292 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_expandpage.pngbin0 -> 453 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_expandpage.xcf.bz2bin0 -> 1041 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_exportdirecttopdf.pngbin0 -> 432 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_exportdirecttopdf.xcf.bz2bin0 -> 1639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_exportto.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_exportto.xcf.bz2bin0 -> 1326 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_extendedhelp.pngbin0 -> 308 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_extendedhelp.xcf.bz2bin0 -> 850 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_fillstyle.pngbin0 -> 608 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_fontcolor.pngbin0 -> 790 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_fontcolor.xcf.bz2bin0 -> 2948 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_fontdialog.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_fontdialog.xcf.bz2bin0 -> 928 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_fontheight.pngbin0 -> 400 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_fontheight.xcf.bz2bin0 -> 1209 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_formatarea.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_formatline.pngbin0 -> 609 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_formatpaintbrush.pngbin0 -> 630 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_formatpaintbrush.xcf.bz2bin0 -> 1189 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_formfiltered.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_formfiltered.xcf.bz2bin0 -> 880 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_framedialog.pngbin0 -> 298 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_framedialog.xcf.bz2bin0 -> 1233 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_gallery.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_goalseekdialog.pngbin0 -> 352 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_goalseekdialog.xcf.bz2bin0 -> 1025 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_graphicdraft.pngbin0 -> 583 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_grow.pngbin0 -> 409 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_grow.xcf.bz2bin0 -> 1210 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_help.pngbin0 -> 950 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_helpindex.pngbin0 -> 774 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_helpindex.xcf.bz2bin0 -> 1519 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_hyperlinkdialog.pngbin0 -> 729 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_hyperlinkdialog.xcf.bz2bin0 -> 1825 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_importfromfile.pngbin0 -> 612 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_incrementindent.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_incrementindent.xcf.bz2bin0 -> 935 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertannotation.pngbin0 -> 386 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertapplet.pngbin0 -> 538 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertapplet.xcf.bz2bin0 -> 951 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertavmedia.pngbin0 -> 460 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertavmedia.xcf.bz2bin0 -> 1173 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertbookmark.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertbookmark.xcf.bz2bin0 -> 893 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertcellsright.pngbin0 -> 292 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertcellsright.xcf.bz2bin0 -> 1338 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertcolumns.pngbin0 -> 277 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertcolumns.xcf.bz2bin0 -> 1442 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertdraw.pngbin0 -> 731 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertdraw.xcf.bz2bin0 -> 1601 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertendnote.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertendnote.xcf.bz2bin0 -> 1200 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertgraphic.pngbin0 -> 347 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserthyperlink.pngbin0 -> 776 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertimagecontrol.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertimagecontrol.xcf.bz2bin0 -> 1419 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobjctrl.pngbin0 -> 363 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobject.pngbin0 -> 363 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobject.xcf.bz2bin0 -> 1319 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobjectchart.pngbin0 -> 566 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobjectdialog.pngbin0 -> 363 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobjectfloatingframe.pngbin0 -> 276 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobjectfloatingframe.xcf.bz2bin0 -> 795 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobjectstarmath.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertobjectstarmath.xcf.bz2bin0 -> 1170 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertpage.pngbin0 -> 546 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertpage.xcf.bz2bin0 -> 1790 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertpagecountfield.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertpagecountfield.xcf.bz2bin0 -> 1156 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertpagenumberfield.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertpagenumberfield.xcf.bz2bin0 -> 1176 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertplugin.pngbin0 -> 312 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertplugin.xcf.bz2bin0 -> 775 bytes
-rwxr-xr-xooo_custom_images/tango/res/commandimagelist/sc_insertpushbutton.pngbin0 -> 183 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertreferencefield.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertreferencefield.xcf.bz2bin0 -> 1012 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertrows.pngbin0 -> 285 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertrows.xcf.bz2bin0 -> 1334 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertsection.pngbin0 -> 258 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertsection.xcf.bz2bin0 -> 979 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertsound.pngbin0 -> 217 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertsound.xcf.bz2bin0 -> 878 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertspreadsheet.pngbin0 -> 264 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertspreadsheet.xcf.bz2bin0 -> 715 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertsymbol.pngbin0 -> 256 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttable.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttextframe.pngbin0 -> 278 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttextframe.xcf.bz2bin0 -> 1015 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttimefield.pngbin0 -> 714 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttimefield.xcf.bz2bin0 -> 1318 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttitlefield.pngbin0 -> 362 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttitlefield.xcf.bz2bin0 -> 1148 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttopicfield.pngbin0 -> 335 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_inserttopicfield.xcf.bz2bin0 -> 977 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertvideo.pngbin0 -> 286 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_insertvideo.xcf.bz2bin0 -> 762 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_justifypara.pngbin0 -> 232 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_leftpara.pngbin0 -> 249 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_linewidth.pngbin0 -> 608 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_macrorecorder.pngbin0 -> 308 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_mergecells.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_mergecells.xcf.bz2bin0 -> 996 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_mirror.pngbin0 -> 467 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_modifypage.pngbin0 -> 403 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_modifypage.xcf.bz2bin0 -> 1008 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_moduledialog.pngbin0 -> 336 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_moduledialog.xcf.bz2bin0 -> 1209 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_navigator.pngbin0 -> 355 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_newdoc.pngbin0 -> 308 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_no.pngbin0 -> 958 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_numberformatcurrency.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_numberformatcurrency.xcf.bz2bin0 -> 679 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_numberformatdate.pngbin0 -> 319 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_numberformatdate.xcf.bz2bin0 -> 1038 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_ok.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_open.pngbin0 -> 317 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_openurl.pngbin0 -> 908 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_openurl.xcf.bz2bin0 -> 2234 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_overline.pngbin0 -> 564 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_paragraphdialog.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_paragraphdialog.xcf.bz2bin0 -> 902 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_paste.pngbin0 -> 471 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_presentation.pngbin0 -> 589 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_presentation.svg888
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_presentationlayout.pngbin0 -> 439 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_presentationlayout.xcf.bz2bin0 -> 1689 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_previewprintoptions.pngbin0 -> 452 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_previewprintoptions.xcf.bz2bin0 -> 1356 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_print.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_print.xcf.bz2bin0 -> 813 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_printdefault.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_printersetup.pngbin0 -> 453 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_printersetup.xcf.bz2bin0 -> 1823 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_printpagepreview.pngbin0 -> 402 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_printpagepreview.xcf.bz2bin0 -> 1600 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_printpreview.pngbin0 -> 447 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_printpreview.xcf.bz2bin0 -> 1259 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_quit.pngbin0 -> 374 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_quit.xcf.bz2bin0 -> 793 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_recundo.pngbin0 -> 473 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_recundo.xcf.bz2bin0 -> 1177 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_redo.pngbin0 -> 414 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_reload.pngbin0 -> 601 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_reload.xcf.bz2bin0 -> 2035 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_rightpara.pngbin0 -> 247 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_save.pngbin0 -> 379 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_save.xcf.bz2bin0 -> 865 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_saveas.pngbin0 -> 438 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_saveas.xcf.bz2bin0 -> 1378 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_saveastemplate.pngbin0 -> 467 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_saveastemplate.xcf.bz2bin0 -> 1327 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_searchdialog.pngbin0 -> 576 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_selectall.pngbin0 -> 338 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_selectall.xcf.bz2bin0 -> 1284 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_sendmail.pngbin0 -> 355 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_sendmail.xcf.bz2bin0 -> 875 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_setborderstyle.pngbin0 -> 391 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_setborderstyle.xcf.bz2bin0 -> 892 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_setdocumentproperties.pngbin0 -> 343 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_setdocumentproperties.xcf.bz2bin0 -> 1267 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_shrink.pngbin0 -> 407 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_shrink.xcf.bz2bin0 -> 1215 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_sortascending.pngbin0 -> 173 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_sortdescending.pngbin0 -> 172 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_sortdown.pngbin0 -> 172 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_sortup.pngbin0 -> 173 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spacepara1.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spacepara1.xcf.bz2bin0 -> 841 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spacepara15.pngbin0 -> 244 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spacepara15.xcf.bz2bin0 -> 849 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spacepara2.pngbin0 -> 246 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spacepara2.xcf.bz2bin0 -> 848 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spelldialog.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spelling.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spellingandgrammardialog.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_spellonline.pngbin0 -> 283 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_starchartdialog.pngbin0 -> 564 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_styleapply.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_styleapply.xcf.bz2bin0 -> 1414 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_stylewatercanmode.pngbin0 -> 487 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_subscript.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_subscript.xcf.bz2bin0 -> 1274 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_superscript.pngbin0 -> 404 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_superscript.xcf.bz2bin0 -> 1282 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_symbolcatalogue.pngbin0 -> 256 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_textdirectionlefttoright.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_textdirectionlefttoright.xcf.bz2bin0 -> 1387 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_textdirectiontoptobottom.pngbin0 -> 430 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_textdirectiontoptobottom.xcf.bz2bin0 -> 1459 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_togglemergecells.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_undo.pngbin0 -> 456 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_viewdatasourcebrowser.pngbin0 -> 435 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_xlinecolor.pngbin0 -> 608 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_xlinestyle.pngbin0 -> 608 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_xlinestyle.xcf.bz2bin0 -> 1356 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_yes.pngbin0 -> 948 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_zoom.pngbin0 -> 791 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_zoom.xcf.bz2bin0 -> 1345 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_zoompanning.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sc_zoomtoolbox.pngbin0 -> 791 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sk/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/sl/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/tr/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-CN/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/lc_bold.pngbin0 -> 781 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/lc_italic.pngbin0 -> 639 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/lc_underline.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/lc_underlinedouble.pngbin0 -> 645 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/sc_bold.pngbin0 -> 382 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/sc_italic.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/sc_underline.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/commandimagelist/zh-TW/sc_underlinedouble.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/fileopen.pngbin0 -> 360 bytes
-rw-r--r--ooo_custom_images/tango/res/foldercl.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/tango/res/folderop.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/tango/res/fp010.pngbin0 -> 435 bytes
-rw-r--r--ooo_custom_images/tango/res/fp015.pngbin0 -> 510 bytes
-rw-r--r--ooo_custom_images/tango/res/hldocntp.pngbin0 -> 1074 bytes
-rw-r--r--ooo_custom_images/tango/res/hldocntp.xcfbin0 -> 4603 bytes
-rw-r--r--ooo_custom_images/tango/res/hldoctp.pngbin0 -> 933 bytes
-rw-r--r--ooo_custom_images/tango/res/hldoctp.xcfbin0 -> 5530 bytes
-rw-r--r--ooo_custom_images/tango/res/hlinettp.pngbin0 -> 1655 bytes
-rw-r--r--ooo_custom_images/tango/res/hlmailtp.pngbin0 -> 1201 bytes
-rw-r--r--ooo_custom_images/tango/res/hlmailtp.xcf.bz2bin0 -> 2273 bytes
-rw-r--r--ooo_custom_images/tango/res/im30819.pngbin0 -> 622 bytes
-rw-r--r--ooo_custom_images/tango/res/im30819.xcf.bz2bin0 -> 1207 bytes
-rw-r--r--ooo_custom_images/tango/res/im30820.pngbin0 -> 367 bytes
-rw-r--r--ooo_custom_images/tango/res/im30821.pngbin0 -> 367 bytes
-rw-r--r--ooo_custom_images/tango/res/im30826.pngbin0 -> 301 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05303.pngbin0 -> 760 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05501.pngbin0 -> 561 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05502.pngbin0 -> 875 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05504.pngbin0 -> 738 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05505.pngbin0 -> 707 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05508.pngbin0 -> 1074 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05509.pngbin0 -> 738 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05539.pngbin0 -> 390 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05555.pngbin0 -> 161 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05556.pngbin0 -> 331 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05596.pngbin0 -> 1184 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05678.pngbin0 -> 1023 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05700.pngbin0 -> 731 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05701.pngbin0 -> 836 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05710.pngbin0 -> 904 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05711.pngbin0 -> 637 bytes
-rw-r--r--ooo_custom_images/tango/res/lc05961.pngbin0 -> 945 bytes
-rw-r--r--ooo_custom_images/tango/res/lc06300.pngbin0 -> 840 bytes
-rw-r--r--ooo_custom_images/tango/res/lc06301.pngbin0 -> 829 bytes
-rw-r--r--ooo_custom_images/tango/res/lc06302.pngbin0 -> 1143 bytes
-rw-r--r--ooo_custom_images/tango/res/lc06303.pngbin0 -> 747 bytes
-rw-r--r--ooo_custom_images/tango/res/lc06312.pngbin0 -> 539 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10107.pngbin0 -> 413 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10113.pngbin0 -> 859 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10243.pngbin0 -> 641 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10366.pngbin0 -> 684 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10366.xcf.bz2bin0 -> 1901 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10375.pngbin0 -> 426 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10376.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10711.pngbin0 -> 682 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10715.pngbin0 -> 541 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10716.pngbin0 -> 633 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10851.pngbin0 -> 590 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10853.pngbin0 -> 1472 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10854.pngbin0 -> 810 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10863.pngbin0 -> 960 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10863.xcf.bz2bin0 -> 1720 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10864.pngbin0 -> 955 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10864.xcf.bz2bin0 -> 1549 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10865.pngbin0 -> 512 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10865.xcf.bz2bin0 -> 1309 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10866.pngbin0 -> 544 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10867.pngbin0 -> 552 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10868.pngbin0 -> 508 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10869.pngbin0 -> 1098 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10907.pngbin0 -> 568 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10908.pngbin0 -> 553 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10937.pngbin0 -> 1350 bytes
-rw-r--r--ooo_custom_images/tango/res/lc10937.xcf.bz2bin0 -> 3162 bytes
-rw-r--r--ooo_custom_images/tango/res/lc12201.pngbin0 -> 532 bytes
-rw-r--r--ooo_custom_images/tango/res/lc12203.pngbin0 -> 867 bytes
-rw-r--r--ooo_custom_images/tango/res/lc12231.pngbin0 -> 720 bytes
-rw-r--r--ooo_custom_images/tango/res/lc12235.pngbin0 -> 681 bytes
-rw-r--r--ooo_custom_images/tango/res/lc12236.pngbin0 -> 444 bytes
-rw-r--r--ooo_custom_images/tango/res/lc12237.pngbin0 -> 449 bytes
-rw-r--r--ooo_custom_images/tango/res/lc12238.pngbin0 -> 633 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03123.pngbin0 -> 903 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03123.svg1055
-rw-r--r--ooo_custom_images/tango/res/lo03126.pngbin0 -> 1086 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03126.svg1056
-rw-r--r--ooo_custom_images/tango/res/lo03127.pngbin0 -> 1087 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03129.pngbin0 -> 1837 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03129.xcf.bz2bin0 -> 3757 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03130.pngbin0 -> 1094 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03139.pngbin0 -> 1178 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03139.svg2867
-rw-r--r--ooo_custom_images/tango/res/lo03144.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03144.svg2225
-rw-r--r--ooo_custom_images/tango/res/lo03162.pngbin0 -> 820 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03162.svg1350
-rw-r--r--ooo_custom_images/tango/res/lo03163.pngbin0 -> 585 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03163.svg586
-rw-r--r--ooo_custom_images/tango/res/lo03216.pngbin0 -> 732 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03216.svg2135
-rw-r--r--ooo_custom_images/tango/res/lo03226.pngbin0 -> 919 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03226.svg2348
-rw-r--r--ooo_custom_images/tango/res/lo03227.pngbin0 -> 1266 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03227.svg1381
-rw-r--r--ooo_custom_images/tango/res/lo03228.pngbin0 -> 1266 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03242.pngbin0 -> 534 bytes
-rw-r--r--ooo_custom_images/tango/res/lo03242.svg2381
-rw-r--r--ooo_custom_images/tango/res/lx03123.pngbin0 -> 1094 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03125.pngbin0 -> 1019 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03126.pngbin0 -> 1089 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03127.pngbin0 -> 1087 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03128.pngbin0 -> 1009 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03128.svg1054
-rw-r--r--ooo_custom_images/tango/res/lx03129.pngbin0 -> 1837 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03130.pngbin0 -> 1093 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03131.pngbin0 -> 1086 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03132.pngbin0 -> 1086 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03137.pngbin0 -> 1165 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03137.svg520
-rw-r--r--ooo_custom_images/tango/res/lx03139.pngbin0 -> 1127 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03140.pngbin0 -> 1020 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03140.svg658
-rw-r--r--ooo_custom_images/tango/res/lx03141.pngbin0 -> 942 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03141.svg606
-rw-r--r--ooo_custom_images/tango/res/lx03144.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03145.pngbin0 -> 501 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03150.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03158.pngbin0 -> 1019 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03160.pngbin0 -> 1267 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03161.pngbin0 -> 820 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03162.pngbin0 -> 821 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03163.pngbin0 -> 802 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03189.pngbin0 -> 941 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03216.pngbin0 -> 1139 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03216.svg566
-rw-r--r--ooo_custom_images/tango/res/lx03219.pngbin0 -> 1166 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03226.pngbin0 -> 421 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03227.pngbin0 -> 1267 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03228.pngbin0 -> 1267 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03241.pngbin0 -> 1095 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03242.pngbin0 -> 698 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03242.svg2291
-rw-r--r--ooo_custom_images/tango/res/lx03243.pngbin0 -> 1094 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03244.pngbin0 -> 1095 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03245.pngbin0 -> 1329 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03246.pngbin0 -> 1271 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03247.pngbin0 -> 1128 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03248.pngbin0 -> 867 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03249.pngbin0 -> 1042 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03250.pngbin0 -> 1015 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03251.pngbin0 -> 987 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03252.pngbin0 -> 1352 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03253.pngbin0 -> 1390 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03254.pngbin0 -> 1281 bytes
-rw-r--r--ooo_custom_images/tango/res/lx03255.pngbin0 -> 1328 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03128.pngbin0 -> 552 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03139.pngbin0 -> 589 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03216.pngbin0 -> 737 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03242.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03245.pngbin0 -> 818 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03246.pngbin0 -> 801 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03247.pngbin0 -> 699 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03248.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03249.pngbin0 -> 548 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03250.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03251.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03252.pngbin0 -> 825 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03253.pngbin0 -> 573 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03254.pngbin0 -> 544 bytes
-rw-r--r--ooo_custom_images/tango/res/lxh03255.pngbin0 -> 543 bytes
-rw-r--r--ooo_custom_images/tango/res/newdoc.pngbin0 -> 509 bytes
-rw-r--r--ooo_custom_images/tango/res/odb_16_8.pngbin0 -> 632 bytes
-rw-r--r--ooo_custom_images/tango/res/odb_32.pngbin0 -> 1329 bytes
-rw-r--r--ooo_custom_images/tango/res/odb_32_8.pngbin0 -> 1329 bytes
-rw-r--r--ooo_custom_images/tango/res/odb_32_hc.pngbin0 -> 818 bytes
-rw-r--r--ooo_custom_images/tango/res/odb_48_8.pngbin0 -> 2135 bytes
-rw-r--r--ooo_custom_images/tango/res/odf_16_8.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/tango/res/odf_32.pngbin0 -> 1128 bytes
-rw-r--r--ooo_custom_images/tango/res/odf_32_8.pngbin0 -> 1128 bytes
-rw-r--r--ooo_custom_images/tango/res/odf_32_hc.pngbin0 -> 699 bytes
-rw-r--r--ooo_custom_images/tango/res/odf_48_8.pngbin0 -> 1588 bytes
-rw-r--r--ooo_custom_images/tango/res/odg_16_8.pngbin0 -> 653 bytes
-rw-r--r--ooo_custom_images/tango/res/odg_32.pngbin0 -> 1271 bytes
-rw-r--r--ooo_custom_images/tango/res/odg_32_8.pngbin0 -> 1271 bytes
-rw-r--r--ooo_custom_images/tango/res/odg_32_hc.pngbin0 -> 801 bytes
-rw-r--r--ooo_custom_images/tango/res/odg_48_8.pngbin0 -> 1690 bytes
-rw-r--r--ooo_custom_images/tango/res/odm_16_8.pngbin0 -> 487 bytes
-rw-r--r--ooo_custom_images/tango/res/odm_32.pngbin0 -> 867 bytes
-rw-r--r--ooo_custom_images/tango/res/odm_32_8.pngbin0 -> 867 bytes
-rw-r--r--ooo_custom_images/tango/res/odm_32_hc.pngbin0 -> 502 bytes
-rw-r--r--ooo_custom_images/tango/res/odm_48_8.pngbin0 -> 1399 bytes
-rw-r--r--ooo_custom_images/tango/res/odp_16_8.pngbin0 -> 577 bytes
-rw-r--r--ooo_custom_images/tango/res/odp_32.pngbin0 -> 1042 bytes
-rw-r--r--ooo_custom_images/tango/res/odp_32_8.pngbin0 -> 1042 bytes
-rw-r--r--ooo_custom_images/tango/res/odp_32_hc.pngbin0 -> 548 bytes
-rw-r--r--ooo_custom_images/tango/res/odp_48_8.pngbin0 -> 1560 bytes
-rw-r--r--ooo_custom_images/tango/res/ods_16_8.pngbin0 -> 539 bytes
-rw-r--r--ooo_custom_images/tango/res/ods_32.pngbin0 -> 1015 bytes
-rw-r--r--ooo_custom_images/tango/res/ods_32_8.pngbin0 -> 1015 bytes
-rw-r--r--ooo_custom_images/tango/res/ods_32_hc.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/tango/res/ods_48_8.pngbin0 -> 1465 bytes
-rw-r--r--ooo_custom_images/tango/res/odt_16_8.pngbin0 -> 532 bytes
-rw-r--r--ooo_custom_images/tango/res/odt_32.pngbin0 -> 987 bytes
-rw-r--r--ooo_custom_images/tango/res/odt_32_8.pngbin0 -> 987 bytes
-rw-r--r--ooo_custom_images/tango/res/odt_32_hc.pngbin0 -> 489 bytes
-rw-r--r--ooo_custom_images/tango/res/odt_48_8.pngbin0 -> 1332 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05303.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05500.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05500.xcf.bz2bin0 -> 1222 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05501.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05502.pngbin0 -> 430 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05504.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05505.pngbin0 -> 343 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05508.pngbin0 -> 481 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05508.xcf.bz2bin0 -> 1261 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05509.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05539.pngbin0 -> 182 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05554.pngbin0 -> 670 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05555.pngbin0 -> 125 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05556.pngbin0 -> 122 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05596.pngbin0 -> 879 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05596.svg1412
-rw-r--r--ooo_custom_images/tango/res/sc05678.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05710.pngbin0 -> 621 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05711.pngbin0 -> 146 bytes
-rw-r--r--ooo_custom_images/tango/res/sc05961.pngbin0 -> 463 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06300.pngbin0 -> 569 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06301.pngbin0 -> 563 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06302.pngbin0 -> 676 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06303.pngbin0 -> 476 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06312.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06312.xcf.bz2bin0 -> 1312 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06331.pngbin0 -> 510 bytes
-rw-r--r--ooo_custom_images/tango/res/sc06694.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10108.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10113.pngbin0 -> 344 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10116.pngbin0 -> 379 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10243.pngbin0 -> 335 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10366.pngbin0 -> 356 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10375.pngbin0 -> 225 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10376.pngbin0 -> 251 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10711.pngbin0 -> 335 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10715.pngbin0 -> 381 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10716.pngbin0 -> 320 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10851.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10853.pngbin0 -> 883 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10854.pngbin0 -> 633 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10863.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10864.pngbin0 -> 483 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10864.xcf.bz2bin0 -> 1095 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10865.pngbin0 -> 315 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10866.pngbin0 -> 321 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10867.pngbin0 -> 317 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10868.pngbin0 -> 318 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10869.pngbin0 -> 613 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10869.xcf.bz2bin0 -> 1036 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10907.pngbin0 -> 350 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10908.pngbin0 -> 367 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10937.pngbin0 -> 714 bytes
-rw-r--r--ooo_custom_images/tango/res/sc10937.xcf.bz2bin0 -> 1326 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12201.pngbin0 -> 327 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12203.pngbin0 -> 324 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12203.xcf.bz2bin0 -> 885 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12231.pngbin0 -> 400 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12231.xcf.bz2bin0 -> 1282 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12235.pngbin0 -> 317 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12236.pngbin0 -> 240 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12237.pngbin0 -> 209 bytes
-rw-r--r--ooo_custom_images/tango/res/sc12238.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/sch06694.pngbin0 -> 366 bytes
-rw-r--r--ooo_custom_images/tango/res/sco206.pngbin0 -> 242 bytes
-rw-r--r--ooo_custom_images/tango/res/script.pngbin0 -> 233 bytes
-rw-r--r--ooo_custom_images/tango/res/so03123.pngbin0 -> 299 bytes
-rw-r--r--ooo_custom_images/tango/res/so03126.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/tango/res/so03127.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/tango/res/so03129.pngbin0 -> 499 bytes
-rw-r--r--ooo_custom_images/tango/res/so03130.pngbin0 -> 298 bytes
-rw-r--r--ooo_custom_images/tango/res/so03139.pngbin0 -> 423 bytes
-rw-r--r--ooo_custom_images/tango/res/so03139.xcf.bz2bin0 -> 1135 bytes
-rw-r--r--ooo_custom_images/tango/res/so03144.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/tango/res/so03162.pngbin0 -> 321 bytes
-rw-r--r--ooo_custom_images/tango/res/so03163.pngbin0 -> 189 bytes
-rw-r--r--ooo_custom_images/tango/res/so03163.xcf.bz2bin0 -> 660 bytes
-rw-r--r--ooo_custom_images/tango/res/so03216.pngbin0 -> 325 bytes
-rw-r--r--ooo_custom_images/tango/res/so03216.xcf.bz2bin0 -> 1301 bytes
-rw-r--r--ooo_custom_images/tango/res/so03226.pngbin0 -> 313 bytes
-rw-r--r--ooo_custom_images/tango/res/so03226.xcf.bz2bin0 -> 1167 bytes
-rw-r--r--ooo_custom_images/tango/res/so03227.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/tango/res/so03227.xcf.bz2bin0 -> 945 bytes
-rw-r--r--ooo_custom_images/tango/res/so03228.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/tango/res/so03242.pngbin0 -> 374 bytes
-rw-r--r--ooo_custom_images/tango/res/so03242.xcf.bz2bin0 -> 1136 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03123.pngbin0 -> 299 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03125.pngbin0 -> 504 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03126.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03127.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03128.pngbin0 -> 516 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03128.xcf.bz2bin0 -> 1265 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03129.pngbin0 -> 486 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03130.pngbin0 -> 298 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03131.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03132.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03137.pngbin0 -> 406 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03139.pngbin0 -> 593 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03140.pngbin0 -> 503 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03141.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03144.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03145.pngbin0 -> 346 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03150.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03158.pngbin0 -> 503 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03160.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03161.pngbin0 -> 321 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03162.pngbin0 -> 321 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03163.pngbin0 -> 320 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03187.pngbin0 -> 238 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03188.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03189.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03201.pngbin0 -> 175 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03201.xcf.bz2bin0 -> 725 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03202.pngbin0 -> 151 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03202.xcf.bz2bin0 -> 654 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03216.pngbin0 -> 404 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03216.xcf.bz2bin0 -> 891 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03219.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03226.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03227.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03228.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03241.pngbin0 -> 299 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03242.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03243.pngbin0 -> 299 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03244.pngbin0 -> 299 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03245.pngbin0 -> 632 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03245.xcf.bz2bin0 -> 1207 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03246.pngbin0 -> 653 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03247.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03248.pngbin0 -> 487 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03249.pngbin0 -> 577 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03250.pngbin0 -> 539 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03251.pngbin0 -> 532 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03252.pngbin0 -> 707 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03253.pngbin0 -> 626 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03254.pngbin0 -> 567 bytes
-rw-r--r--ooo_custom_images/tango/res/sx03255.pngbin0 -> 562 bytes
-rw-r--r--ooo_custom_images/tango/res/sx10768.pngbin0 -> 191 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03128.pngbin0 -> 309 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03139.pngbin0 -> 339 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03216.pngbin0 -> 420 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03242.pngbin0 -> 260 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03245.pngbin0 -> 415 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03246.pngbin0 -> 461 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03247.pngbin0 -> 392 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03248.pngbin0 -> 304 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03249.pngbin0 -> 343 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03250.pngbin0 -> 287 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03251.pngbin0 -> 284 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03252.pngbin0 -> 479 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03253.pngbin0 -> 351 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03254.pngbin0 -> 305 bytes
-rw-r--r--ooo_custom_images/tango/res/sxh03255.pngbin0 -> 303 bytes
-rw-r--r--ooo_custom_images/tango/res/target.pngbin0 -> 633 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/date.pngbin0 -> 165 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/dropcopy.pngbin0 -> 356 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/dropcopy.xcf.bz2bin0 -> 1257 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/droplink.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/dropurl.pngbin0 -> 776 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/dropurl.xcf.bz2bin0 -> 1832 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/file.pngbin0 -> 361 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/page.pngbin0 -> 311 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/page.xcf.bz2bin0 -> 1010 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/pages.pngbin0 -> 352 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/pages.xcf.bz2bin0 -> 1130 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/sf01.pngbin0 -> 325 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/sf02.pngbin0 -> 358 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/table.pngbin0 -> 111 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/text.pngbin0 -> 456 bytes
-rw-r--r--ooo_custom_images/tango/sc/res/time.pngbin0 -> 715 bytes
-rw-r--r--ooo_custom_images/tango/sc10713.pngbin0 -> 172 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc10242.pngbin0 -> 959 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc10242.xcf.bz2bin0 -> 2028 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30514.pngbin0 -> 833 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30514.xcf.bz2bin0 -> 1381 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30528.pngbin0 -> 708 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30528.xcf.bz2bin0 -> 1801 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30529.pngbin0 -> 309 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30530.pngbin0 -> 596 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30530.xcf.bz2bin0 -> 1426 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30531.pngbin0 -> 248 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30532.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30533.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30534.pngbin0 -> 289 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30535.pngbin0 -> 272 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30535.xcf.bz2bin0 -> 922 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30536.pngbin0 -> 302 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30536.xcf.bz2bin0 -> 997 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30539.pngbin0 -> 474 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30586.pngbin0 -> 954 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/lc30586.xcf.bz2bin0 -> 1608 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc10242.pngbin0 -> 660 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc10242.xcf.bz2bin0 -> 1973 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30514.pngbin0 -> 435 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30528.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30529.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30530.pngbin0 -> 425 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30531.pngbin0 -> 234 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30532.pngbin0 -> 97 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30533.pngbin0 -> 137 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30534.pngbin0 -> 165 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30535.pngbin0 -> 160 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30536.pngbin0 -> 195 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30539.pngbin0 -> 216 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30586.pngbin0 -> 625 bytes
-rw-r--r--ooo_custom_images/tango/sch/res/sc30586.xcf.bz2bin0 -> 1248 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/apply.pngbin0 -> 199 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/dlgass1.pngbin0 -> 18518 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/dlgass2.pngbin0 -> 16656 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/dlgass3.pngbin0 -> 17043 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/dlgass4.pngbin0 -> 15465 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/dlgass5.pngbin0 -> 17526 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/extras.pngbin0 -> 688 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/fadeout.pngbin0 -> 214 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/graphic.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc05928.pngbin0 -> 862 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc10245.pngbin0 -> 670 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc10299.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27008.pngbin0 -> 782 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27014.pngbin0 -> 799 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27015.pngbin0 -> 858 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27017.pngbin0 -> 1032 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27019.pngbin0 -> 675 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27022.pngbin0 -> 572 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27028.pngbin0 -> 293 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27031.pngbin0 -> 516 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27032.pngbin0 -> 479 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27036.pngbin0 -> 506 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27037.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27046.pngbin0 -> 673 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27051.pngbin0 -> 369 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27054.pngbin0 -> 459 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27055.pngbin0 -> 459 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27056.pngbin0 -> 460 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27057.pngbin0 -> 459 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27058.pngbin0 -> 293 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27059.pngbin0 -> 925 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27060.pngbin0 -> 460 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27062.pngbin0 -> 1158 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27063.pngbin0 -> 459 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27064.pngbin0 -> 587 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27085.pngbin0 -> 973 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27090.pngbin0 -> 944 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27091.pngbin0 -> 760 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27095.pngbin0 -> 658 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27098.pngbin0 -> 1221 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27099.pngbin0 -> 1222 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27106.pngbin0 -> 412 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27107.pngbin0 -> 736 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27116.pngbin0 -> 878 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27117.pngbin0 -> 418 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27119.pngbin0 -> 310 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27120.pngbin0 -> 365 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27121.pngbin0 -> 372 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27122.pngbin0 -> 297 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27123.pngbin0 -> 328 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27124.pngbin0 -> 308 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27125.pngbin0 -> 274 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27126.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27127.pngbin0 -> 370 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27128.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27129.pngbin0 -> 284 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27130.pngbin0 -> 315 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27131.pngbin0 -> 296 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27132.pngbin0 -> 394 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27133.pngbin0 -> 407 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27134.pngbin0 -> 434 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27135.pngbin0 -> 442 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27136.pngbin0 -> 391 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27137.pngbin0 -> 417 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27138.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27139.pngbin0 -> 340 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27140.pngbin0 -> 357 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27141.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27142.pngbin0 -> 408 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27143.pngbin0 -> 373 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27144.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27145.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27146.pngbin0 -> 818 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27147.pngbin0 -> 869 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27148.pngbin0 -> 686 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27149.pngbin0 -> 589 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27150.pngbin0 -> 313 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27151.pngbin0 -> 787 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27152.pngbin0 -> 254 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27153.pngbin0 -> 196 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27154.pngbin0 -> 548 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27155.pngbin0 -> 801 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27155.xcf.bz2bin0 -> 1972 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27156.pngbin0 -> 715 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27156.xcf.bz2bin0 -> 1878 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27157.pngbin0 -> 757 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27157.xcf.bz2bin0 -> 2190 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27158.pngbin0 -> 168 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27159.pngbin0 -> 369 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27159.xcf.bz2bin0 -> 1150 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27168.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27168.xcf.bz2bin0 -> 1121 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27169.pngbin0 -> 567 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27169.xcf.bz2bin0 -> 1678 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27170.pngbin0 -> 644 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27171.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27172.pngbin0 -> 204 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27173.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27174.pngbin0 -> 199 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27175.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27176.pngbin0 -> 177 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27177.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27178.pngbin0 -> 160 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27285.pngbin0 -> 561 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27285.xcf.bz2bin0 -> 1506 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27286.pngbin0 -> 549 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27286.xcf.bz2bin0 -> 1518 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27295.pngbin0 -> 503 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27296.pngbin0 -> 503 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27297.pngbin0 -> 1058 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27298.pngbin0 -> 833 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27299.pngbin0 -> 826 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27300.pngbin0 -> 644 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27300.xcf.bz2bin0 -> 2611 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27301.pngbin0 -> 1017 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27302.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27302.xcf.bz2bin0 -> 1397 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27303.pngbin0 -> 831 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27303.xcf.bz2bin0 -> 2159 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27305.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27305.xcf.bz2bin0 -> 1285 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27306.pngbin0 -> 422 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27306.xcf.bz2bin0 -> 1332 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27307.pngbin0 -> 423 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27308.pngbin0 -> 349 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27308.xcf.bz2bin0 -> 1271 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27309.pngbin0 -> 401 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27309.xcf.bz2bin0 -> 1322 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27310.pngbin0 -> 399 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27310.xcf.bz2bin0 -> 1334 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27311.pngbin0 -> 969 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27311.xcf.bz2bin0 -> 2666 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27312.pngbin0 -> 1021 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27312.xcf.bz2bin0 -> 1917 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27313.pngbin0 -> 964 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27313.xcf.bz2bin0 -> 3292 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27314.pngbin0 -> 591 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27314.xcf.bz2bin0 -> 1500 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27315.pngbin0 -> 580 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27315.xcf.bz2bin0 -> 1497 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27316.pngbin0 -> 568 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27316.xcf.bz2bin0 -> 1509 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27317.pngbin0 -> 620 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27317.xcf.bz2bin0 -> 1484 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27318.pngbin0 -> 1076 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27318.xcf.bz2bin0 -> 2017 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27322.pngbin0 -> 88 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27324.pngbin0 -> 215 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27326.pngbin0 -> 834 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27326.xcf.bz2bin0 -> 2007 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27328.pngbin0 -> 887 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27328.xcf.bz2bin0 -> 1718 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27340.pngbin0 -> 827 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27340.xcf.bz2bin0 -> 1526 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27342.pngbin0 -> 586 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27343.pngbin0 -> 664 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27343.xcf.bz2bin0 -> 2287 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27345.pngbin0 -> 539 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27345.xcf.bz2bin0 -> 1371 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27346.pngbin0 -> 592 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27346.xcf.bz2bin0 -> 1439 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27347.pngbin0 -> 597 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/lc27347.xcf.bz2bin0 -> 1449 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv01.pngbin0 -> 386 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv01.xcf.bz2bin0 -> 1265 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv010.pngbin0 -> 821 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv010.xcf.bz2bin0 -> 1938 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv02.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv02.xcf.bz2bin0 -> 898 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv03.pngbin0 -> 298 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv04.pngbin0 -> 297 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv05.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv06.pngbin0 -> 300 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv06.xcf.bz2bin0 -> 835 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv08.pngbin0 -> 343 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv08.xcf.bz2bin0 -> 1128 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/nv09.pngbin0 -> 257 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc05928.pngbin0 -> 620 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc05928.xcf.bz2bin0 -> 2270 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc10245.pngbin0 -> 235 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc10299.pngbin0 -> 275 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc10299.xcf.bz2bin0 -> 831 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27008.pngbin0 -> 414 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27008.xcf.bz2bin0 -> 1262 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27014.pngbin0 -> 506 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27014.xcf.bz2bin0 -> 1911 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27015.pngbin0 -> 612 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27015.xcf.bz2bin0 -> 1880 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27017.pngbin0 -> 498 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27017.xcf.bz2bin0 -> 2230 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27019.pngbin0 -> 256 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27019.xcf.bz2bin0 -> 824 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27022.pngbin0 -> 380 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27028.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27028.xcf.bz2bin0 -> 589 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27031.pngbin0 -> 358 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27032.pngbin0 -> 311 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27036.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27036.xcf.bz2bin0 -> 1610 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27037.pngbin0 -> 256 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27037.xcf.bz2bin0 -> 1022 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27046.pngbin0 -> 333 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27046.xcf.bz2bin0 -> 1129 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27051.pngbin0 -> 181 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27054.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27054.xcf.bz2bin0 -> 684 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27055.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27056.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27057.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27058.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27059.pngbin0 -> 598 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27059.xcf.bz2bin0 -> 2115 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27060.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27062.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27063.pngbin0 -> 164 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27064.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27064.xcf.bz2bin0 -> 1844 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27085.pngbin0 -> 467 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27085.xcf.bz2bin0 -> 1402 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27090.pngbin0 -> 447 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27090.xcf.bz2bin0 -> 1147 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27091.pngbin0 -> 280 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27091.xcf.bz2bin0 -> 897 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27095.pngbin0 -> 433 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27098.pngbin0 -> 501 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27098.xcf.bz2bin0 -> 1694 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27099.pngbin0 -> 583 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27099.xcf.bz2bin0 -> 1891 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27106.pngbin0 -> 483 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27106.xcf.bz2bin0 -> 852 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27107.pngbin0 -> 593 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27107.xcf.bz2bin0 -> 1476 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27116.pngbin0 -> 530 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27117.pngbin0 -> 223 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27119.pngbin0 -> 168 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27120.pngbin0 -> 174 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27121.pngbin0 -> 172 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27122.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27123.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27124.pngbin0 -> 173 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27125.pngbin0 -> 119 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27126.pngbin0 -> 177 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27127.pngbin0 -> 182 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27128.pngbin0 -> 183 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27129.pngbin0 -> 128 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27130.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27131.pngbin0 -> 156 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27132.pngbin0 -> 189 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27133.pngbin0 -> 211 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27134.pngbin0 -> 209 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27135.pngbin0 -> 203 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27136.pngbin0 -> 189 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27137.pngbin0 -> 193 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27138.pngbin0 -> 173 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27139.pngbin0 -> 165 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27140.pngbin0 -> 184 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27141.pngbin0 -> 185 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27142.pngbin0 -> 186 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27143.pngbin0 -> 190 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27144.pngbin0 -> 192 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27145.pngbin0 -> 192 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27146.pngbin0 -> 580 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27147.pngbin0 -> 294 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27148.pngbin0 -> 381 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27148.xcf.bz2bin0 -> 1381 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27149.pngbin0 -> 358 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27149.xcf.bz2bin0 -> 1299 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27150.pngbin0 -> 217 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27151.pngbin0 -> 369 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27151.xcf.bz2bin0 -> 1059 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27152.pngbin0 -> 251 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27153.pngbin0 -> 194 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27154.pngbin0 -> 268 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27155.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27155.xcf.bz2bin0 -> 1176 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27156.pngbin0 -> 352 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27156.xcf.bz2bin0 -> 1212 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27157.pngbin0 -> 378 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27157.xcf.bz2bin0 -> 1331 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27158.pngbin0 -> 141 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27159.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27168.pngbin0 -> 224 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27169.pngbin0 -> 262 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27169.xcf.bz2bin0 -> 1189 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27170.pngbin0 -> 404 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27171.pngbin0 -> 121 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27172.pngbin0 -> 143 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27173.pngbin0 -> 121 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27174.pngbin0 -> 179 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27175.pngbin0 -> 189 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27176.pngbin0 -> 188 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27177.pngbin0 -> 160 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27178.pngbin0 -> 161 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27285.pngbin0 -> 267 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27285.xcf.bz2bin0 -> 943 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27286.pngbin0 -> 256 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27295.pngbin0 -> 317 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27296.pngbin0 -> 317 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27297.pngbin0 -> 732 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27298.pngbin0 -> 384 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27299.pngbin0 -> 536 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27300.pngbin0 -> 269 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27301.pngbin0 -> 551 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27302.pngbin0 -> 243 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27303.pngbin0 -> 400 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27305.pngbin0 -> 163 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27306.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27307.pngbin0 -> 169 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27308.pngbin0 -> 147 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27309.pngbin0 -> 167 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27310.pngbin0 -> 162 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27311.pngbin0 -> 583 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27312.pngbin0 -> 536 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27313.pngbin0 -> 613 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27314.pngbin0 -> 160 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27315.pngbin0 -> 153 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27316.pngbin0 -> 180 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27317.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27318.pngbin0 -> 316 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27322.pngbin0 -> 288 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27324.pngbin0 -> 92 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27326.pngbin0 -> 485 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27328.pngbin0 -> 535 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27340.pngbin0 -> 368 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27342.pngbin0 -> 341 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27343.pngbin0 -> 395 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27345.pngbin0 -> 294 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27346.pngbin0 -> 313 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sc27347.pngbin0 -> 318 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sf01.pngbin0 -> 255 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/imagelst/sf02.pngbin0 -> 427 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/invisibl.pngbin0 -> 178 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/objekt.pngbin0 -> 638 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/ole.pngbin0 -> 558 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/page.pngbin0 -> 330 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/pageobjs.pngbin0 -> 334 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/pipette.pngbin0 -> 277 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/playfull.pngbin0 -> 510 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/preview.pngbin0 -> 328 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/reihe.pngbin0 -> 202 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/sound.pngbin0 -> 289 bytes
-rw-r--r--ooo_custom_images/tango/sd/res/text.pngbin0 -> 399 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/back_large.pngbin0 -> 614 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/back_large.xcf.bz2bin0 -> 1332 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/back_small.pngbin0 -> 411 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/folder.pngbin0 -> 405 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/fp011.pngbin0 -> 530 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/fp011.xcf.bz2bin0 -> 1343 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/helpagent.pngbin0 -> 5352 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/helpagent.svg1209
-rw-r--r--ooo_custom_images/tango/svtools/res/info_large.pngbin0 -> 291 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/info_large.xcf.bz2bin0 -> 913 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/info_small.pngbin0 -> 169 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/info_small.xcf.bz2bin0 -> 672 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/my_docs.pngbin0 -> 1300 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/my_docs.xcf.bz2bin0 -> 3020 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/new_doc.pngbin0 -> 555 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/new_doc.xcf.bz2bin0 -> 1554 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/preview_large.pngbin0 -> 329 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/preview_large.xcf.bz2bin0 -> 980 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/preview_small.pngbin0 -> 223 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/preview_small.xcf.bz2bin0 -> 740 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/samples.pngbin0 -> 1196 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/samples.xcf.bz2bin0 -> 2643 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/template.pngbin0 -> 1223 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/template.xcf.bz2bin0 -> 3114 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/up_large.pngbin0 -> 649 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/up_large.xcf.bz2bin0 -> 1318 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/up_small.pngbin0 -> 431 bytes
-rw-r--r--ooo_custom_images/tango/svtools/res/up_small.xcf.bz2bin0 -> 966 bytes
-rw-r--r--ooo_custom_images/tango/vcl/source/src/msgbox.pngbin0 -> 5879 bytes
-rw-r--r--ooo_custom_images/tango/vcl/source/src/msgbox.xcf.bz2bin0 -> 7553 bytes
-rw-r--r--ooo_custom_images/tango/vcl/source/src/question.svg387
-rwxr-xr-xoowintool361
-rw-r--r--oox/inc/oox/core/binarycodec.hxx294
-rw-r--r--oox/inc/oox/core/binaryfilterbase.hxx64
-rw-r--r--oox/inc/oox/core/contexthandler.hxx119
-rw-r--r--oox/inc/oox/core/contexthandler2.hxx255
-rw-r--r--oox/inc/oox/core/fasttokenhandler.hxx67
-rw-r--r--oox/inc/oox/core/filterbase.hxx301
-rw-r--r--oox/inc/oox/core/filterdetect.hxx168
-rw-r--r--oox/inc/oox/core/fragmenthandler.hxx139
-rw-r--r--oox/inc/oox/core/fragmenthandler2.hxx117
-rw-r--r--oox/inc/oox/core/recordparser.hxx100
-rw-r--r--oox/inc/oox/core/relations.hxx104
-rw-r--r--oox/inc/oox/core/relationshandler.hxx63
-rw-r--r--oox/inc/oox/core/xmlfilterbase.hxx229
-rw-r--r--oox/inc/oox/dllapi.h42
-rw-r--r--oox/inc/oox/drawingml/chart/axiscontext.hxx129
-rw-r--r--oox/inc/oox/drawingml/chart/axisconverter.hxx73
-rw-r--r--oox/inc/oox/drawingml/chart/axismodel.hxx114
-rw-r--r--oox/inc/oox/drawingml/chart/chartcontextbase.hxx104
-rw-r--r--oox/inc/oox/drawingml/chart/chartconverter.hxx113
-rw-r--r--oox/inc/oox/drawingml/chart/chartdrawingfragment.hxx124
-rw-r--r--oox/inc/oox/drawingml/chart/chartspaceconverter.hxx66
-rw-r--r--oox/inc/oox/drawingml/chart/chartspacefragment.hxx64
-rw-r--r--oox/inc/oox/drawingml/chart/chartspacemodel.hxx80
-rw-r--r--oox/inc/oox/drawingml/chart/converterbase.hxx160
-rw-r--r--oox/inc/oox/drawingml/chart/datasourcecontext.hxx103
-rw-r--r--oox/inc/oox/drawingml/chart/datasourceconverter.hxx80
-rw-r--r--oox/inc/oox/drawingml/chart/datasourcemodel.hxx74
-rw-r--r--oox/inc/oox/drawingml/chart/modelbase.hxx143
-rw-r--r--oox/inc/oox/drawingml/chart/objectformatter.hxx175
-rw-r--r--oox/inc/oox/drawingml/chart/plotareacontext.hxx92
-rw-r--r--oox/inc/oox/drawingml/chart/plotareaconverter.hxx112
-rw-r--r--oox/inc/oox/drawingml/chart/plotareamodel.hxx96
-rw-r--r--oox/inc/oox/drawingml/chart/seriescontext.hxx275
-rw-r--r--oox/inc/oox/drawingml/chart/seriesconverter.hxx176
-rw-r--r--oox/inc/oox/drawingml/chart/seriesmodel.hxx246
-rw-r--r--oox/inc/oox/drawingml/chart/titlecontext.hxx92
-rw-r--r--oox/inc/oox/drawingml/chart/titleconverter.hxx115
-rw-r--r--oox/inc/oox/drawingml/chart/titlemodel.hxx98
-rw-r--r--oox/inc/oox/drawingml/chart/typegroupcontext.hxx173
-rw-r--r--oox/inc/oox/drawingml/chart/typegroupconverter.hxx207
-rw-r--r--oox/inc/oox/drawingml/chart/typegroupmodel.hxx105
-rw-r--r--oox/inc/oox/drawingml/clrscheme.hxx71
-rw-r--r--oox/inc/oox/drawingml/clrschemecontext.hxx71
-rw-r--r--oox/inc/oox/drawingml/color.hxx152
-rw-r--r--oox/inc/oox/drawingml/colorchoicecontext.hxx89
-rw-r--r--oox/inc/oox/drawingml/connectorshapecontext.hxx49
-rw-r--r--oox/inc/oox/drawingml/customshapegeometry.hxx80
-rw-r--r--oox/inc/oox/drawingml/customshapeproperties.hxx164
-rw-r--r--oox/inc/oox/drawingml/diagram/datamodelcontext.hxx57
-rw-r--r--oox/inc/oox/drawingml/diagram/diagram.hxx259
-rw-r--r--oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx103
-rw-r--r--oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx212
-rw-r--r--oox/inc/oox/drawingml/drawingmltypes.hxx190
-rw-r--r--oox/inc/oox/drawingml/embeddedwavaudiofile.hxx60
-rw-r--r--oox/inc/oox/drawingml/fillproperties.hxx206
-rw-r--r--oox/inc/oox/drawingml/fillpropertiesgroupcontext.hxx217
-rw-r--r--oox/inc/oox/drawingml/graphicshapecontext.hxx119
-rw-r--r--oox/inc/oox/drawingml/guidcontext.hxx52
-rw-r--r--oox/inc/oox/drawingml/lineproperties.hxx129
-rw-r--r--oox/inc/oox/drawingml/linepropertiescontext.hxx60
-rw-r--r--oox/inc/oox/drawingml/objectdefaultcontext.hxx52
-rw-r--r--oox/inc/oox/drawingml/shape.hxx231
-rw-r--r--oox/inc/oox/drawingml/shapecontext.hxx61
-rw-r--r--oox/inc/oox/drawingml/shapegroupcontext.hxx54
-rw-r--r--oox/inc/oox/drawingml/shapepropertiescontext.hxx52
-rw-r--r--oox/inc/oox/drawingml/shapestylecontext.hxx54
-rw-r--r--oox/inc/oox/drawingml/spdefcontext.hxx51
-rw-r--r--oox/inc/oox/drawingml/table/tablebackgroundstylecontext.hxx56
-rw-r--r--oox/inc/oox/drawingml/table/tablecell.hxx124
-rw-r--r--oox/inc/oox/drawingml/table/tablecellcontext.hxx57
-rw-r--r--oox/inc/oox/drawingml/table/tablecontext.hxx57
-rw-r--r--oox/inc/oox/drawingml/table/tablepartstylecontext.hxx56
-rw-r--r--oox/inc/oox/drawingml/table/tableproperties.hxx90
-rw-r--r--oox/inc/oox/drawingml/table/tablerow.hxx58
-rw-r--r--oox/inc/oox/drawingml/table/tablerowcontext.hxx58
-rw-r--r--oox/inc/oox/drawingml/table/tablestyle.hxx94
-rw-r--r--oox/inc/oox/drawingml/table/tablestylecellstylecontext.hxx57
-rw-r--r--oox/inc/oox/drawingml/table/tablestylecontext.hxx58
-rw-r--r--oox/inc/oox/drawingml/table/tablestylelist.hxx63
-rw-r--r--oox/inc/oox/drawingml/table/tablestylelistfragmenthandler.hxx65
-rw-r--r--oox/inc/oox/drawingml/table/tablestylepart.hxx82
-rw-r--r--oox/inc/oox/drawingml/table/tablestyletextstylecontext.hxx58
-rw-r--r--oox/inc/oox/drawingml/textbody.hxx82
-rw-r--r--oox/inc/oox/drawingml/textbodycontext.hxx72
-rw-r--r--oox/inc/oox/drawingml/textbodyproperties.hxx58
-rw-r--r--oox/inc/oox/drawingml/textbodypropertiescontext.hxx56
-rw-r--r--oox/inc/oox/drawingml/textcharacterproperties.hxx91
-rw-r--r--oox/inc/oox/drawingml/textcharacterpropertiescontext.hxx57
-rw-r--r--oox/inc/oox/drawingml/textfield.hxx71
-rw-r--r--oox/inc/oox/drawingml/textfieldcontext.hxx61
-rw-r--r--oox/inc/oox/drawingml/textfont.hxx82
-rw-r--r--oox/inc/oox/drawingml/textliststyle.hxx70
-rw-r--r--oox/inc/oox/drawingml/textliststylecontext.hxx54
-rw-r--r--oox/inc/oox/drawingml/textparagraph.hxx83
-rw-r--r--oox/inc/oox/drawingml/textparagraphproperties.hxx136
-rw-r--r--oox/inc/oox/drawingml/textparagraphpropertiescontext.hxx67
-rw-r--r--oox/inc/oox/drawingml/textrun.hxx71
-rw-r--r--oox/inc/oox/drawingml/textspacing.hxx83
-rw-r--r--oox/inc/oox/drawingml/theme.hxx118
-rw-r--r--oox/inc/oox/drawingml/themeelementscontext.hxx60
-rw-r--r--oox/inc/oox/drawingml/themefragmenthandler.hxx63
-rw-r--r--oox/inc/oox/drawingml/transform2dcontext.hxx60
-rw-r--r--oox/inc/oox/dump/biffdumper.hxx571
-rw-r--r--oox/inc/oox/dump/dffdumper.hxx84
-rw-r--r--oox/inc/oox/dump/dumperbase.hxx1981
-rw-r--r--oox/inc/oox/dump/oledumper.hxx937
-rw-r--r--oox/inc/oox/dump/pptxdumper.hxx80
-rw-r--r--oox/inc/oox/dump/xlsbdumper.hxx261
-rw-r--r--oox/inc/oox/export/chartexport.hxx216
-rw-r--r--oox/inc/oox/export/drawingml.hxx135
-rw-r--r--oox/inc/oox/export/shapes.hxx175
-rw-r--r--oox/inc/oox/export/utils.hxx73
-rw-r--r--oox/inc/oox/export/vmlexport.hxx118
-rw-r--r--oox/inc/oox/helper/attributelist.hxx194
-rw-r--r--oox/inc/oox/helper/binaryinputstream.hxx293
-rw-r--r--oox/inc/oox/helper/binaryoutputstream.hxx163
-rw-r--r--oox/inc/oox/helper/binarystreambase.hxx149
-rw-r--r--oox/inc/oox/helper/containerhelper.hxx704
-rw-r--r--oox/inc/oox/helper/graphichelper.hxx177
-rw-r--r--oox/inc/oox/helper/helper.hxx331
-rw-r--r--oox/inc/oox/helper/modelobjecthelper.hxx96
-rw-r--r--oox/inc/oox/helper/progressbar.hxx147
-rw-r--r--oox/inc/oox/helper/propertymap.hxx108
-rw-r--r--oox/inc/oox/helper/propertyset.hxx172
-rw-r--r--oox/inc/oox/helper/recordinputstream.hxx60
-rw-r--r--oox/inc/oox/helper/storagebase.hxx198
-rw-r--r--oox/inc/oox/helper/textinputstream.hxx60
-rw-r--r--oox/inc/oox/helper/zipstorage.hxx98
-rw-r--r--oox/inc/oox/ole/axbinaryreader.hxx298
-rw-r--r--oox/inc/oox/ole/axcontrol.hxx839
-rw-r--r--oox/inc/oox/ole/axcontrolfragment.hxx83
-rw-r--r--oox/inc/oox/ole/olehelper.hxx145
-rw-r--r--oox/inc/oox/ole/oleobjecthelper.hxx88
-rw-r--r--oox/inc/oox/ole/olestorage.hxx119
-rw-r--r--oox/inc/oox/ole/vbacontrol.hxx214
-rw-r--r--oox/inc/oox/ole/vbahelper.hxx113
-rw-r--r--oox/inc/oox/ole/vbainputstream.hxx74
-rw-r--r--oox/inc/oox/ole/vbamodule.hxx99
-rw-r--r--oox/inc/oox/ole/vbaproject.hxx141
-rw-r--r--oox/inc/oox/ppt/animationspersist.hxx135
-rw-r--r--oox/inc/oox/ppt/backgroundproperties.hxx53
-rw-r--r--oox/inc/oox/ppt/headerfooter.hxx54
-rw-r--r--oox/inc/oox/ppt/layoutfragmenthandler.hxx52
-rw-r--r--oox/inc/oox/ppt/pptgraphicshapecontext.hxx52
-rw-r--r--oox/inc/oox/ppt/pptimport.hxx95
-rw-r--r--oox/inc/oox/ppt/pptshape.hxx80
-rw-r--r--oox/inc/oox/ppt/pptshapecontext.hxx49
-rw-r--r--oox/inc/oox/ppt/pptshapegroupcontext.hxx61
-rw-r--r--oox/inc/oox/ppt/pptshapepropertiescontext.hxx49
-rw-r--r--oox/inc/oox/ppt/presentationfragmenthandler.hxx75
-rw-r--r--oox/inc/oox/ppt/slidefragmenthandler.hxx65
-rw-r--r--oox/inc/oox/ppt/slidemastertextstylescontext.hxx54
-rw-r--r--oox/inc/oox/ppt/slidepersist.hxx156
-rw-r--r--oox/inc/oox/ppt/slidetimingcontext.hxx60
-rw-r--r--oox/inc/oox/ppt/slidetransition.hxx81
-rw-r--r--oox/inc/oox/ppt/slidetransitioncontext.hxx63
-rw-r--r--oox/inc/oox/ppt/soundactioncontext.hxx64
-rw-r--r--oox/inc/oox/ppt/timenode.hxx137
-rw-r--r--oox/inc/oox/ppt/timenodelistcontext.hxx77
-rw-r--r--oox/inc/oox/token/propertylist.hxx52
-rw-r--r--oox/inc/oox/token/tokenmap.hxx83
-rw-r--r--oox/inc/oox/vml/vmldrawing.hxx182
-rw-r--r--oox/inc/oox/vml/vmldrawingfragment.hxx68
-rw-r--r--oox/inc/oox/vml/vmlformatting.hxx192
-rw-r--r--oox/inc/oox/vml/vmlinputstream.hxx71
-rw-r--r--oox/inc/oox/vml/vmlshape.hxx334
-rw-r--r--oox/inc/oox/vml/vmlshapecontainer.hxx143
-rw-r--r--oox/inc/oox/vml/vmlshapecontext.hxx167
-rw-r--r--oox/inc/oox/xls/addressconverter.hxx694
-rw-r--r--oox/inc/oox/xls/autofiltercontext.hxx161
-rw-r--r--oox/inc/oox/xls/biffcodec.hxx187
-rw-r--r--oox/inc/oox/xls/biffdetector.hxx99
-rw-r--r--oox/inc/oox/xls/biffhelper.hxx610
-rw-r--r--oox/inc/oox/xls/biffinputstream.hxx449
-rw-r--r--oox/inc/oox/xls/biffoutputstream.hxx167
-rw-r--r--oox/inc/oox/xls/chartsheetfragment.hxx90
-rw-r--r--oox/inc/oox/xls/commentsbuffer.hxx118
-rw-r--r--oox/inc/oox/xls/commentsfragment.hxx76
-rw-r--r--oox/inc/oox/xls/condformatbuffer.hxx197
-rw-r--r--oox/inc/oox/xls/condformatcontext.hxx67
-rw-r--r--oox/inc/oox/xls/connectionsfragment.hxx67
-rw-r--r--oox/inc/oox/xls/defnamesbuffer.hxx223
-rw-r--r--oox/inc/oox/xls/drawingfragment.hxx208
-rw-r--r--oox/inc/oox/xls/excelchartconverter.hxx64
-rw-r--r--oox/inc/oox/xls/excelfilter.hxx105
-rw-r--r--oox/inc/oox/xls/excelhandlers.hxx388
-rw-r--r--oox/inc/oox/xls/externallinkbuffer.hxx403
-rw-r--r--oox/inc/oox/xls/externallinkfragment.hxx161
-rw-r--r--oox/inc/oox/xls/formulabase.hxx938
-rw-r--r--oox/inc/oox/xls/formulaparser.hxx172
-rw-r--r--oox/inc/oox/xls/numberformatsbuffer.hxx142
-rw-r--r--oox/inc/oox/xls/ooxformulaparser.hxx114
-rw-r--r--oox/inc/oox/xls/pagesettings.hxx224
-rw-r--r--oox/inc/oox/xls/pivotcachebuffer.hxx513
-rw-r--r--oox/inc/oox/xls/pivotcachefragment.hxx158
-rw-r--r--oox/inc/oox/xls/pivottablebuffer.hxx451
-rw-r--r--oox/inc/oox/xls/pivottablefragment.hxx120
-rw-r--r--oox/inc/oox/xls/querytablefragment.hxx59
-rw-r--r--oox/inc/oox/xls/richstring.hxx301
-rw-r--r--oox/inc/oox/xls/richstringcontext.hxx76
-rw-r--r--oox/inc/oox/xls/scenariobuffer.hxx157
-rw-r--r--oox/inc/oox/xls/scenariocontext.hxx83
-rw-r--r--oox/inc/oox/xls/sharedformulabuffer.hxx114
-rw-r--r--oox/inc/oox/xls/sharedstringsbuffer.hxx72
-rw-r--r--oox/inc/oox/xls/sharedstringsfragment.hxx66
-rw-r--r--oox/inc/oox/xls/sheetdatacontext.hxx176
-rw-r--r--oox/inc/oox/xls/stylesbuffer.hxx1086
-rw-r--r--oox/inc/oox/xls/stylesfragment.hxx162
-rw-r--r--oox/inc/oox/xls/tablebuffer.hxx137
-rw-r--r--oox/inc/oox/xls/tablefragment.hxx68
-rw-r--r--oox/inc/oox/xls/themebuffer.hxx66
-rw-r--r--oox/inc/oox/xls/unitconverter.hxx126
-rw-r--r--oox/inc/oox/xls/viewsettings.hxx233
-rw-r--r--oox/inc/oox/xls/webquerybuffer.hxx129
-rw-r--r--oox/inc/oox/xls/workbookfragment.hxx105
-rw-r--r--oox/inc/oox/xls/workbookhelper.hxx337
-rw-r--r--oox/inc/oox/xls/workbooksettings.hxx168
-rw-r--r--oox/inc/oox/xls/worksheetbuffer.hxx135
-rw-r--r--oox/inc/oox/xls/worksheetfragment.hxx199
-rw-r--r--oox/inc/oox/xls/worksheethelper.hxx473
-rw-r--r--oox/inc/oox/xls/worksheetsettings.hxx145
-rw-r--r--oox/prj/build.lst19
-rw-r--r--oox/prj/d.lst49
-rw-r--r--oox/source/core/binarycodec.cxx392
-rw-r--r--oox/source/core/binaryfilterbase.cxx69
-rw-r--r--oox/source/core/contexthandler.cxx155
-rw-r--r--oox/source/core/contexthandler2.cxx278
-rw-r--r--oox/source/core/facreg.cxx178
-rw-r--r--oox/source/core/fasttokenhandler.cxx94
-rw-r--r--oox/source/core/filterbase.cxx603
-rw-r--r--oox/source/core/filterdetect.cxx663
-rw-r--r--oox/source/core/fragmenthandler.cxx144
-rw-r--r--oox/source/core/fragmenthandler2.cxx154
-rw-r--r--oox/source/core/makefile.mk65
-rw-r--r--oox/source/core/recordparser.cxx353
-rw-r--r--oox/source/core/relations.cxx148
-rw-r--r--oox/source/core/relationshandler.cxx111
-rw-r--r--oox/source/core/xmlfilterbase.cxx596
-rw-r--r--oox/source/docprop/docprophandler.cxx695
-rw-r--r--oox/source/docprop/docprophandler.hxx94
-rw-r--r--oox/source/docprop/makefile.mk49
-rw-r--r--oox/source/docprop/ooxmldocpropimport.cxx229
-rw-r--r--oox/source/docprop/ooxmldocpropimport.hxx73
-rw-r--r--oox/source/drawingml/chart/axiscontext.cxx320
-rw-r--r--oox/source/drawingml/chart/axisconverter.cxx335
-rw-r--r--oox/source/drawingml/chart/axismodel.cxx83
-rw-r--r--oox/source/drawingml/chart/chartcontextbase.cxx122
-rw-r--r--oox/source/drawingml/chart/chartconverter.cxx169
-rw-r--r--oox/source/drawingml/chart/chartdrawingfragment.cxx237
-rw-r--r--oox/source/drawingml/chart/chartspaceconverter.cxx211
-rw-r--r--oox/source/drawingml/chart/chartspacefragment.cxx129
-rw-r--r--oox/source/drawingml/chart/chartspacemodel.cxx56
-rw-r--r--oox/source/drawingml/chart/converterbase.cxx424
-rw-r--r--oox/source/drawingml/chart/datasourcecontext.cxx243
-rw-r--r--oox/source/drawingml/chart/datasourceconverter.cxx94
-rw-r--r--oox/source/drawingml/chart/datasourcemodel.cxx62
-rw-r--r--oox/source/drawingml/chart/makefile.mk74
-rw-r--r--oox/source/drawingml/chart/modelbase.cxx78
-rw-r--r--oox/source/drawingml/chart/objectformatter.cxx1216
-rw-r--r--oox/source/drawingml/chart/plotareacontext.cxx187
-rw-r--r--oox/source/drawingml/chart/plotareaconverter.cxx457
-rw-r--r--oox/source/drawingml/chart/plotareamodel.cxx74
-rw-r--r--oox/source/drawingml/chart/seriescontext.cxx762
-rw-r--r--oox/source/drawingml/chart/seriesconverter.cxx626
-rw-r--r--oox/source/drawingml/chart/seriesmodel.cxx159
-rw-r--r--oox/source/drawingml/chart/titlecontext.cxx165
-rw-r--r--oox/source/drawingml/chart/titleconverter.cxx275
-rw-r--r--oox/source/drawingml/chart/titlemodel.cxx74
-rw-r--r--oox/source/drawingml/chart/typegroupcontext.cxx404
-rw-r--r--oox/source/drawingml/chart/typegroupconverter.cxx575
-rw-r--r--oox/source/drawingml/chart/typegroupmodel.cxx85
-rw-r--r--oox/source/drawingml/clrscheme.cxx85
-rw-r--r--oox/source/drawingml/clrschemecontext.cxx110
-rw-r--r--oox/source/drawingml/color.cxx672
-rw-r--r--oox/source/drawingml/colorchoicecontext.cxx163
-rw-r--r--oox/source/drawingml/connectorshapecontext.cxx84
-rw-r--r--oox/source/drawingml/customshapegeometry.cxx2071
-rw-r--r--oox/source/drawingml/customshapeproperties.cxx279
-rw-r--r--oox/source/drawingml/diagram/datamodelcontext.cxx340
-rw-r--r--oox/source/drawingml/diagram/diagram.cxx302
-rw-r--r--oox/source/drawingml/diagram/diagramdefinitioncontext.cxx120
-rw-r--r--oox/source/drawingml/diagram/diagramdefinitioncontext.hxx54
-rw-r--r--oox/source/drawingml/diagram/diagramfragmenthandler.cxx227
-rw-r--r--oox/source/drawingml/diagram/diagramlayoutatoms.cxx144
-rw-r--r--oox/source/drawingml/diagram/layoutnodecontext.cxx360
-rw-r--r--oox/source/drawingml/diagram/layoutnodecontext.hxx55
-rw-r--r--oox/source/drawingml/diagram/makefile.mk53
-rw-r--r--oox/source/drawingml/drawingmltypes.cxx297
-rw-r--r--oox/source/drawingml/embeddedwavaudiofile.cxx59
-rw-r--r--oox/source/drawingml/fillproperties.cxx471
-rw-r--r--oox/source/drawingml/fillpropertiesgroupcontext.cxx303
-rw-r--r--oox/source/drawingml/graphicshapecontext.cxx429
-rw-r--r--oox/source/drawingml/guidcontext.cxx53
-rw-r--r--oox/source/drawingml/hyperlinkcontext.cxx183
-rw-r--r--oox/source/drawingml/hyperlinkcontext.hxx60
-rw-r--r--oox/source/drawingml/lineproperties.cxx480
-rw-r--r--oox/source/drawingml/linepropertiescontext.cxx111
-rw-r--r--oox/source/drawingml/makefile.mk91
-rw-r--r--oox/source/drawingml/objectdefaultcontext.cxx64
-rw-r--r--oox/source/drawingml/shape.cxx531
-rw-r--r--oox/source/drawingml/shapecontext.cxx133
-rw-r--r--oox/source/drawingml/shapegroupcontext.cxx125
-rw-r--r--oox/source/drawingml/shapepropertiescontext.cxx124
-rw-r--r--oox/source/drawingml/shapestylecontext.cxx90
-rw-r--r--oox/source/drawingml/spdefcontext.cxx81
-rw-r--r--oox/source/drawingml/table/makefile.mk62
-rw-r--r--oox/source/drawingml/table/tablebackgroundstylecontext.cxx95
-rw-r--r--oox/source/drawingml/table/tablecell.cxx369
-rw-r--r--oox/source/drawingml/table/tablecellcontext.cxx130
-rw-r--r--oox/source/drawingml/table/tablecontext.cxx112
-rw-r--r--oox/source/drawingml/table/tablepartstylecontext.cxx80
-rw-r--r--oox/source/drawingml/table/tableproperties.cxx183
-rw-r--r--oox/source/drawingml/table/tablerow.cxx58
-rw-r--r--oox/source/drawingml/table/tablerowcontext.cxx83
-rw-r--r--oox/source/drawingml/table/tablestyle.cxx43
-rw-r--r--oox/source/drawingml/table/tablestylecellstylecontext.cxx129
-rw-r--r--oox/source/drawingml/table/tablestylecontext.cxx120
-rw-r--r--oox/source/drawingml/table/tablestylelist.cxx44
-rw-r--r--oox/source/drawingml/table/tablestylelistfragmenthandler.cxx86
-rw-r--r--oox/source/drawingml/table/tablestylepart.cxx52
-rw-r--r--oox/source/drawingml/table/tablestyletextstylecontext.cxx112
-rw-r--r--oox/source/drawingml/textbody.cxx83
-rw-r--r--oox/source/drawingml/textbodycontext.cxx216
-rw-r--r--oox/source/drawingml/textbodyproperties.cxx57
-rw-r--r--oox/source/drawingml/textbodypropertiescontext.cxx198
-rw-r--r--oox/source/drawingml/textcharacterproperties.cxx172
-rw-r--r--oox/source/drawingml/textcharacterpropertiescontext.cxx183
-rw-r--r--oox/source/drawingml/textfield.cxx198
-rw-r--r--oox/source/drawingml/textfieldcontext.cxx94
-rw-r--r--oox/source/drawingml/textfont.cxx106
-rw-r--r--oox/source/drawingml/textliststyle.cxx82
-rw-r--r--oox/source/drawingml/textliststylecontext.cxx114
-rw-r--r--oox/source/drawingml/textparagraph.cxx132
-rw-r--r--oox/source/drawingml/textparagraphproperties.cxx429
-rw-r--r--oox/source/drawingml/textparagraphpropertiescontext.cxx288
-rw-r--r--oox/source/drawingml/textrun.cxx124
-rw-r--r--oox/source/drawingml/textspacingcontext.cxx81
-rw-r--r--oox/source/drawingml/textspacingcontext.hxx59
-rw-r--r--oox/source/drawingml/texttabstoplistcontext.cxx99
-rw-r--r--oox/source/drawingml/texttabstoplistcontext.hxx60
-rw-r--r--oox/source/drawingml/theme.cxx111
-rw-r--r--oox/source/drawingml/themeelementscontext.cxx245
-rw-r--r--oox/source/drawingml/themefragmenthandler.cxx89
-rw-r--r--oox/source/drawingml/transform2dcontext.cxx84
-rw-r--r--oox/source/dump/biffdumper.cxx4373
-rw-r--r--oox/source/dump/biffdumper.ini2238
-rw-r--r--oox/source/dump/dffdumper.cxx325
-rw-r--r--oox/source/dump/dffdumper.ini651
-rw-r--r--oox/source/dump/dumperbase.cxx3217
-rw-r--r--oox/source/dump/dumperbase.ini396
-rw-r--r--oox/source/dump/makefile.mk53
-rw-r--r--oox/source/dump/oledumper.cxx2317
-rw-r--r--oox/source/dump/oledumper.ini888
-rw-r--r--oox/source/dump/pptxdumper.cxx149
-rw-r--r--oox/source/dump/pptxdumper.ini19
-rw-r--r--oox/source/dump/xlsbdumper.cxx2274
-rw-r--r--oox/source/dump/xlsbdumper.ini1079
-rw-r--r--oox/source/export/ColorPropertySet.cxx233
-rw-r--r--oox/source/export/ColorPropertySet.hxx129
-rw-r--r--oox/source/export/README2
-rw-r--r--oox/source/export/SchXMLSeriesHelper.cxx301
-rw-r--r--oox/source/export/SchXMLSeriesHelper.hxx83
-rw-r--r--oox/source/export/chartexport.cxx2848
-rw-r--r--oox/source/export/drawingml.cxx1589
-rw-r--r--oox/source/export/makefile.mk33
-rw-r--r--oox/source/export/preset-definitions-to-shape-types.pl1242
-rw-r--r--oox/source/export/presetShapeDefinitions.xml19915
-rw-r--r--oox/source/export/presetTextWarpDefinitions.xml1885
-rw-r--r--oox/source/export/shapes.cxx1009
-rw-r--r--oox/source/export/vmlexport.cxx840
-rw-r--r--oox/source/helper/attributelist.cxx319
-rw-r--r--oox/source/helper/binaryinputstream.cxx335
-rw-r--r--oox/source/helper/binaryoutputstream.cxx139
-rw-r--r--oox/source/helper/binarystreambase.cxx163
-rw-r--r--oox/source/helper/containerhelper.cxx226
-rw-r--r--oox/source/helper/graphichelper.cxx360
-rw-r--r--oox/source/helper/makefile.mk61
-rw-r--r--oox/source/helper/modelobjecthelper.cxx93
-rw-r--r--oox/source/helper/progressbar.cxx187
-rw-r--r--oox/source/helper/propertymap.cxx356
-rw-r--r--oox/source/helper/propertyset.cxx187
-rw-r--r--oox/source/helper/recordinputstream.cxx73
-rw-r--r--oox/source/helper/storagebase.cxx277
-rw-r--r--oox/source/helper/textinputstream.cxx130
-rw-r--r--oox/source/helper/zipstorage.cxx214
-rw-r--r--oox/source/ole/axbinaryreader.cxx345
-rw-r--r--oox/source/ole/axcontrol.cxx1753
-rw-r--r--oox/source/ole/axcontrolfragment.cxx159
-rw-r--r--oox/source/ole/makefile.mk59
-rw-r--r--oox/source/ole/olehelper.cxx302
-rw-r--r--oox/source/ole/oleobjecthelper.cxx143
-rw-r--r--oox/source/ole/olestorage.cxx426
-rwxr-xr-xoox/source/ole/vbacontrol.cxx849
-rw-r--r--oox/source/ole/vbahelper.cxx88
-rw-r--r--oox/source/ole/vbainputstream.cxx187
-rw-r--r--oox/source/ole/vbamodule.cxx238
-rwxr-xr-xoox/source/ole/vbaproject.cxx456
-rw-r--r--oox/source/ppt/animationspersist.cxx204
-rw-r--r--oox/source/ppt/animationtypes.cxx77
-rw-r--r--oox/source/ppt/animationtypes.hxx50
-rw-r--r--oox/source/ppt/animvariantcontext.cxx127
-rw-r--r--oox/source/ppt/animvariantcontext.hxx63
-rw-r--r--oox/source/ppt/backgroundproperties.cxx68
-rw-r--r--oox/source/ppt/buildlistcontext.cxx116
-rw-r--r--oox/source/ppt/buildlistcontext.hxx67
-rw-r--r--oox/source/ppt/commonbehaviorcontext.cxx183
-rw-r--r--oox/source/ppt/commonbehaviorcontext.hxx85
-rw-r--r--oox/source/ppt/commontimenodecontext.cxx713
-rw-r--r--oox/source/ppt/commontimenodecontext.hxx65
-rw-r--r--oox/source/ppt/conditioncontext.cxx216
-rw-r--r--oox/source/ppt/conditioncontext.hxx87
-rw-r--r--oox/source/ppt/customshowlistcontext.cxx124
-rw-r--r--oox/source/ppt/customshowlistcontext.hxx66
-rw-r--r--oox/source/ppt/headerfootercontext.cxx69
-rw-r--r--oox/source/ppt/headerfootercontext.hxx53
-rw-r--r--oox/source/ppt/layoutfragmenthandler.cxx90
-rw-r--r--oox/source/ppt/makefile.mk77
-rw-r--r--oox/source/ppt/pptfilterhelpers.cxx143
-rw-r--r--oox/source/ppt/pptfilterhelpers.hxx107
-rw-r--r--oox/source/ppt/pptgraphicshapecontext.cxx242
-rw-r--r--oox/source/ppt/pptimport.cxx217
-rw-r--r--oox/source/ppt/pptshape.cxx310
-rw-r--r--oox/source/ppt/pptshapecontext.cxx224
-rw-r--r--oox/source/ppt/pptshapegroupcontext.cxx128
-rw-r--r--oox/source/ppt/pptshapepropertiescontext.cxx89
-rw-r--r--oox/source/ppt/presentationfragmenthandler.cxx394
-rw-r--r--oox/source/ppt/slidefragmenthandler.cxx203
-rw-r--r--oox/source/ppt/slidemastertextstylescontext.cxx93
-rw-r--r--oox/source/ppt/slidepersist.cxx316
-rw-r--r--oox/source/ppt/slidetimingcontext.cxx105
-rw-r--r--oox/source/ppt/slidetransition.cxx426
-rw-r--r--oox/source/ppt/slidetransitioncontext.cxx202
-rw-r--r--oox/source/ppt/soundactioncontext.cxx140
-rw-r--r--oox/source/ppt/timeanimvaluecontext.cxx105
-rw-r--r--oox/source/ppt/timeanimvaluecontext.hxx67
-rw-r--r--oox/source/ppt/timenode.cxx633
-rw-r--r--oox/source/ppt/timenodelistcontext.cxx1168
-rw-r--r--oox/source/ppt/timetargetelementcontext.cxx179
-rw-r--r--oox/source/ppt/timetargetelementcontext.hxx56
-rw-r--r--oox/source/shape/FastTokenHandlerService.cxx119
-rw-r--r--oox/source/shape/FastTokenHandlerService.hxx84
-rw-r--r--oox/source/shape/ShapeContextHandler.cxx379
-rw-r--r--oox/source/shape/ShapeContextHandler.hxx194
-rw-r--r--oox/source/shape/ShapeFilterBase.cxx77
-rw-r--r--oox/source/shape/ShapeFilterBase.hxx80
-rw-r--r--oox/source/shape/makefile.mk50
-rw-r--r--oox/source/token/gennamespaces.pl66
-rw-r--r--oox/source/token/genproperties.pl46
-rw-r--r--oox/source/token/gentoken.pl61
-rw-r--r--oox/source/token/makefile.mk78
-rw-r--r--oox/source/token/namespaces.txt49
-rw-r--r--oox/source/token/parsexsd.pl48
-rw-r--r--oox/source/token/properties.txt467
-rw-r--r--oox/source/token/propertylist.cxx58
-rw-r--r--oox/source/token/tokenmap.cxx116
-rw-r--r--oox/source/token/tokens.txt5685
-rw-r--r--oox/source/vml/makefile.mk54
-rw-r--r--oox/source/vml/vmldrawing.cxx169
-rw-r--r--oox/source/vml/vmldrawingfragment.cxx95
-rw-r--r--oox/source/vml/vmlformatting.cxx605
-rw-r--r--oox/source/vml/vmlinputstream.cxx286
-rw-r--r--oox/source/vml/vmlshape.cxx630
-rw-r--r--oox/source/vml/vmlshapecontainer.cxx135
-rw-r--r--oox/source/vml/vmlshapecontext.cxx355
-rw-r--r--oox/source/xls/addressconverter.cxx786
-rw-r--r--oox/source/xls/autofiltercontext.cxx777
-rw-r--r--oox/source/xls/biffcodec.cxx336
-rw-r--r--oox/source/xls/biffdetector.cxx235
-rw-r--r--oox/source/xls/biffhelper.cxx289
-rw-r--r--oox/source/xls/biffinputstream.cxx633
-rw-r--r--oox/source/xls/biffoutputstream.cxx210
-rw-r--r--oox/source/xls/chartsheetfragment.cxx294
-rw-r--r--oox/source/xls/commentsbuffer.cxx276
-rw-r--r--oox/source/xls/commentsfragment.cxx176
-rw-r--r--oox/source/xls/condformatbuffer.cxx789
-rw-r--r--oox/source/xls/condformatcontext.cxx109
-rw-r--r--oox/source/xls/connectionsfragment.cxx115
-rw-r--r--oox/source/xls/defnamesbuffer.cxx714
-rw-r--r--oox/source/xls/drawingfragment.cxx682
-rw-r--r--oox/source/xls/excelchartconverter.cxx127
-rw-r--r--oox/source/xls/excelfilter.cxx280
-rw-r--r--oox/source/xls/excelhandlers.cxx261
-rw-r--r--oox/source/xls/externallinkbuffer.cxx1145
-rw-r--r--oox/source/xls/externallinkfragment.cxx553
-rw-r--r--oox/source/xls/formulabase.cxx1752
-rw-r--r--oox/source/xls/formulaparser.cxx2863
-rw-r--r--oox/source/xls/makefile.mk100
-rw-r--r--oox/source/xls/numberformatsbuffer.cxx2125
-rw-r--r--oox/source/xls/ooxformulaparser.cxx227
-rw-r--r--oox/source/xls/pagesettings.cxx1287
-rw-r--r--oox/source/xls/pivotcachebuffer.cxx1550
-rw-r--r--oox/source/xls/pivotcachefragment.cxx467
-rw-r--r--oox/source/xls/pivottablebuffer.cxx1555
-rw-r--r--oox/source/xls/pivottablefragment.cxx319
-rw-r--r--oox/source/xls/querytablefragment.cxx58
-rw-r--r--oox/source/xls/richstring.cxx639
-rw-r--r--oox/source/xls/richstringcontext.cxx97
-rw-r--r--oox/source/xls/scenariobuffer.cxx308
-rw-r--r--oox/source/xls/scenariocontext.cxx126
-rw-r--r--oox/source/xls/sharedformulabuffer.cxx217
-rw-r--r--oox/source/xls/sharedstringsbuffer.cxx86
-rw-r--r--oox/source/xls/sharedstringsfragment.cxx106
-rw-r--r--oox/source/xls/sheetdatacontext.cxx994
-rw-r--r--oox/source/xls/stylesbuffer.cxx3522
-rw-r--r--oox/source/xls/stylesfragment.cxx333
-rw-r--r--oox/source/xls/tablebuffer.cxx175
-rw-r--r--oox/source/xls/tablefragment.cxx88
-rw-r--r--oox/source/xls/themebuffer.cxx124
-rw-r--r--oox/source/xls/unitconverter.cxx260
-rw-r--r--oox/source/xls/viewsettings.cxx835
-rw-r--r--oox/source/xls/webquerybuffer.cxx201
-rw-r--r--oox/source/xls/workbookfragment.cxx740
-rw-r--r--oox/source/xls/workbookhelper.cxx1007
-rw-r--r--oox/source/xls/workbooksettings.cxx387
-rw-r--r--oox/source/xls/worksheetbuffer.cxx263
-rw-r--r--oox/source/xls/worksheetfragment.cxx1204
-rw-r--r--oox/source/xls/worksheethelper.cxx2297
-rw-r--r--oox/source/xls/worksheetsettings.cxx340
-rw-r--r--oox/util/makefile.mk106
-rw-r--r--oox/util/makefile.pmk30
-rw-r--r--oox/workben/ooxml-export-notes.txt220
-rw-r--r--openssl/makefile.mk173
-rw-r--r--openssl/openssl.patch134
-rw-r--r--openssl/openssllnx.patch3805
-rw-r--r--openssl/opensslmacosx.patch3751
-rwxr-xr-xopenssl/opensslmingw.patch109
-rw-r--r--openssl/opensslsol.patch3831
-rw-r--r--openssl/prj/build.lst3
-rw-r--r--openssl/prj/d.lst11
-rw-r--r--openssl/version.mk33
-rw-r--r--package/dtd/Manifest.dtd58
-rw-r--r--package/inc/ByteChucker.hxx70
-rw-r--r--package/inc/ByteGrabber.hxx80
-rw-r--r--package/inc/CRC32.hxx59
-rw-r--r--package/inc/Deflater.hxx69
-rw-r--r--package/inc/EncryptedDataHeader.hxx54
-rw-r--r--package/inc/EncryptionData.hxx46
-rw-r--r--package/inc/HashMaps.hxx66
-rw-r--r--package/inc/Inflater.hxx60
-rw-r--r--package/inc/PackageConstants.hxx54
-rw-r--r--package/inc/ZipEntry.hxx49
-rw-r--r--package/inc/ZipEnumeration.hxx46
-rw-r--r--package/inc/ZipFile.hxx199
-rw-r--r--package/inc/ZipOutputStream.hxx102
-rw-r--r--package/inc/ZipPackage.hxx190
-rw-r--r--package/inc/ZipPackageBuffer.hxx85
-rw-r--r--package/inc/ZipPackageFolder.hxx142
-rw-r--r--package/inc/makefile.mk47
-rw-r--r--package/inc/mutexholder.hxx133
-rw-r--r--package/inc/pch/precompiled_package.cxx31
-rw-r--r--package/inc/pch/precompiled_package.hxx34
-rw-r--r--package/inc/zipfileaccess.hxx111
-rw-r--r--package/prj/build.lst9
-rw-r--r--package/prj/d.lst5
-rw-r--r--package/qa/ofopxmlstorages/StorageTest.java7
-rw-r--r--package/qa/ofopxmlstorages/StorageUnitTest.java158
-rw-r--r--package/qa/ofopxmlstorages/Test01.java200
-rw-r--r--package/qa/ofopxmlstorages/Test02.java164
-rw-r--r--package/qa/ofopxmlstorages/Test03.java233
-rw-r--r--package/qa/ofopxmlstorages/Test04.java308
-rw-r--r--package/qa/ofopxmlstorages/Test05.java314
-rw-r--r--package/qa/ofopxmlstorages/Test06.java277
-rw-r--r--package/qa/ofopxmlstorages/Test07.java258
-rw-r--r--package/qa/ofopxmlstorages/Test08.java261
-rw-r--r--package/qa/ofopxmlstorages/TestHelper.java1098
-rw-r--r--package/qa/ofopxmlstorages/makefile.mk91
-rw-r--r--package/qa/storages/BorderedStream.java195
-rw-r--r--package/qa/storages/RegressionTest_114358.java190
-rw-r--r--package/qa/storages/RegressionTest_125919.java134
-rw-r--r--package/qa/storages/RegressionTest_i26398.java146
-rw-r--r--package/qa/storages/RegressionTest_i27773.java299
-rw-r--r--package/qa/storages/RegressionTest_i29169.java369
-rw-r--r--package/qa/storages/RegressionTest_i29321.java170
-rw-r--r--package/qa/storages/RegressionTest_i30400.java435
-rw-r--r--package/qa/storages/RegressionTest_i30677.java263
-rw-r--r--package/qa/storages/RegressionTest_i35095.java166
-rw-r--r--package/qa/storages/RegressionTest_i46848.java191
-rw-r--r--package/qa/storages/RegressionTest_i49755.java272
-rw-r--r--package/qa/storages/RegressionTest_i55821.java111
-rw-r--r--package/qa/storages/RegressionTest_i59886.java243
-rw-r--r--package/qa/storages/RegressionTest_i61909.java167
-rw-r--r--package/qa/storages/RegressionTest_i84234.java134
-rw-r--r--package/qa/storages/StorageTest.java7
-rw-r--r--package/qa/storages/StorageUnitTest.java326
-rw-r--r--package/qa/storages/Test01.java177
-rw-r--r--package/qa/storages/Test02.java163
-rw-r--r--package/qa/storages/Test03.java231
-rw-r--r--package/qa/storages/Test04.java307
-rw-r--r--package/qa/storages/Test05.java299
-rw-r--r--package/qa/storages/Test06.java279
-rw-r--r--package/qa/storages/Test07.java162
-rw-r--r--package/qa/storages/Test08.java230
-rw-r--r--package/qa/storages/Test09.java138
-rw-r--r--package/qa/storages/Test10.java232
-rw-r--r--package/qa/storages/Test11.java218
-rw-r--r--package/qa/storages/Test12.java240
-rw-r--r--package/qa/storages/Test13.java215
-rw-r--r--package/qa/storages/Test14.java188
-rw-r--r--package/qa/storages/Test15.java268
-rw-r--r--package/qa/storages/Test16.java159
-rw-r--r--package/qa/storages/Test17.java142
-rw-r--r--package/qa/storages/Test18.java172
-rw-r--r--package/qa/storages/TestHelper.java1661
-rw-r--r--package/qa/storages/makefile.mk116
-rw-r--r--package/source/manifest/Base64Codec.cxx207
-rw-r--r--package/source/manifest/Base64Codec.hxx48
-rw-r--r--package/source/manifest/ManifestDefines.hxx70
-rw-r--r--package/source/manifest/ManifestExport.cxx318
-rw-r--r--package/source/manifest/ManifestExport.hxx48
-rw-r--r--package/source/manifest/ManifestImport.cxx332
-rw-r--r--package/source/manifest/ManifestImport.hxx132
-rw-r--r--package/source/manifest/ManifestReader.cxx143
-rw-r--r--package/source/manifest/ManifestReader.hxx72
-rw-r--r--package/source/manifest/ManifestWriter.cxx128
-rw-r--r--package/source/manifest/ManifestWriter.hxx72
-rw-r--r--package/source/manifest/UnoRegister.cxx155
-rw-r--r--package/source/manifest/makefile.mk55
-rw-r--r--package/source/xstor/disposelistener.cxx59
-rw-r--r--package/source/xstor/disposelistener.hxx53
-rw-r--r--package/source/xstor/makefile.mk75
-rw-r--r--package/source/xstor/ocompinstream.cxx761
-rw-r--r--package/source/xstor/ocompinstream.hxx130
-rw-r--r--package/source/xstor/ohierarchyholder.cxx358
-rw-r--r--package/source/xstor/ohierarchyholder.hxx141
-rw-r--r--package/source/xstor/oseekinstream.cxx182
-rw-r--r--package/source/xstor/oseekinstream.hxx70
-rw-r--r--package/source/xstor/owriteablestream.cxx3605
-rw-r--r--package/source/xstor/owriteablestream.hxx413
-rw-r--r--package/source/xstor/register.cxx103
-rw-r--r--package/source/xstor/selfterminatefilestream.cxx155
-rw-r--r--package/source/xstor/selfterminatefilestream.hxx78
-rw-r--r--package/source/xstor/switchpersistencestream.cxx490
-rw-r--r--package/source/xstor/switchpersistencestream.hxx122
-rw-r--r--package/source/xstor/xfactory.cxx326
-rw-r--r--package/source/xstor/xfactory.hxx76
-rw-r--r--package/source/xstor/xstor.dxp3
-rw-r--r--package/source/xstor/xstorage.cxx6167
-rw-r--r--package/source/xstor/xstorage.hxx809
-rw-r--r--package/source/zipapi/ByteChucker.cxx115
-rw-r--r--package/source/zipapi/ByteGrabber.cxx194
-rw-r--r--package/source/zipapi/CRC32.cxx99
-rw-r--r--package/source/zipapi/Deflater.cxx215
-rw-r--r--package/source/zipapi/EntryInputStream.cxx204
-rw-r--r--package/source/zipapi/EntryInputStream.hxx85
-rw-r--r--package/source/zipapi/Inflater.cxx164
-rw-r--r--package/source/zipapi/MemoryByteGrabber.hxx180
-rw-r--r--package/source/zipapi/XFileStream.cxx230
-rw-r--r--package/source/zipapi/XFileStream.hxx95
-rw-r--r--package/source/zipapi/XMemoryStream.cxx55
-rw-r--r--package/source/zipapi/XMemoryStream.hxx45
-rw-r--r--package/source/zipapi/XUnbufferedStream.cxx363
-rw-r--r--package/source/zipapi/XUnbufferedStream.hxx111
-rw-r--r--package/source/zipapi/ZipEnumeration.cxx56
-rw-r--r--package/source/zipapi/ZipFile.cxx1070
-rw-r--r--package/source/zipapi/ZipOutputStream.cxx429
-rw-r--r--package/source/zipapi/makefile.mk59
-rw-r--r--package/source/zippackage/ContentInfo.hxx70
-rw-r--r--package/source/zippackage/ZipPackage.cxx1716
-rw-r--r--package/source/zippackage/ZipPackageBuffer.cxx139
-rw-r--r--package/source/zippackage/ZipPackageEntry.cxx140
-rw-r--r--package/source/zippackage/ZipPackageEntry.hxx106
-rw-r--r--package/source/zippackage/ZipPackageFolder.cxx819
-rw-r--r--package/source/zippackage/ZipPackageFolderEnumeration.cxx82
-rw-r--r--package/source/zippackage/ZipPackageFolderEnumeration.hxx67
-rw-r--r--package/source/zippackage/ZipPackageSink.cxx51
-rw-r--r--package/source/zippackage/ZipPackageSink.hxx51
-rw-r--r--package/source/zippackage/ZipPackageStream.cxx805
-rw-r--r--package/source/zippackage/ZipPackageStream.hxx196
-rw-r--r--package/source/zippackage/makefile.mk63
-rw-r--r--package/source/zippackage/wrapstreamforshare.cxx182
-rw-r--r--package/source/zippackage/wrapstreamforshare.hxx75
-rw-r--r--package/source/zippackage/zipfileaccess.cxx492
-rw-r--r--package/util/exports.dxp3
-rw-r--r--package/util/makefile.mk77
-rw-r--r--packimages/pack/image-sort.lst342
-rw-r--r--packimages/pack/makefile.mk110
-rw-r--r--packimages/prj/build.lst3
-rw-r--r--packimages/prj/d.lst2
-rw-r--r--padmin/prj/build.lst3
-rw-r--r--padmin/prj/d.lst8
-rw-r--r--padmin/source/adddlg.cxx1131
-rw-r--r--padmin/source/adddlg.hxx251
-rw-r--r--padmin/source/cmddlg.cxx552
-rw-r--r--padmin/source/cmddlg.hxx123
-rw-r--r--padmin/source/desktopcontext.cxx62
-rw-r--r--padmin/source/desktopcontext.hxx55
-rw-r--r--padmin/source/fontentry.cxx585
-rw-r--r--padmin/source/fontentry.hxx140
-rw-r--r--padmin/source/helper.cxx328
-rw-r--r--padmin/source/helper.hxx123
-rw-r--r--padmin/source/makefile.mk115
-rw-r--r--padmin/source/newppdlg.cxx229
-rw-r--r--padmin/source/newppdlg.hxx77
-rw-r--r--padmin/source/padialog.cxx758
-rw-r--r--padmin/source/padialog.hrc285
-rw-r--r--padmin/source/padialog.hxx121
-rw-r--r--padmin/source/padialog.src1153
-rw-r--r--padmin/source/pamain.cxx179
-rw-r--r--padmin/source/progress.cxx104
-rw-r--r--padmin/source/progress.hxx69
-rw-r--r--padmin/source/prtsetup.cxx820
-rw-r--r--padmin/source/prtsetup.hxx216
-rw-r--r--padmin/source/psetupl.xpm76
-rw-r--r--padmin/source/rtsetup.hrc120
-rw-r--r--padmin/source/rtsetup.src568
-rw-r--r--padmin/source/spadmin.sh85
-rw-r--r--padmin/source/titlectrl.cxx103
-rw-r--r--padmin/source/titlectrl.hxx69
-rw-r--r--postprocess/checkdeliver/checkdeliver.pl306
-rw-r--r--postprocess/checkdeliver/makefile.mk44
-rw-r--r--postprocess/checkxml/checkxml.pl140
-rw-r--r--postprocess/checkxml/makefile.mk42
-rw-r--r--postprocess/packconfig/macosx/macosx_menubar_modification.xsl26
-rw-r--r--postprocess/packconfig/makefile.mk42
-rwxr-xr-xpostprocess/packconfig/packconfig.pl291
-rw-r--r--postprocess/packregistry/makefile.mk548
-rw-r--r--postprocess/prj/build.lst8
-rw-r--r--postprocess/prj/d.lst3
-rwxr-xr-xpostprocess/rebase/coffbase.txt402
-rwxr-xr-xpostprocess/rebase/makefile.mk59
-rw-r--r--postprocess/rebase/no_rebase.txt33
-rwxr-xr-xpostprocess/rebase/rebase.pl302
-rw-r--r--postprocess/signing/makefile.mk60
-rw-r--r--postprocess/signing/no_signing.txt13
-rw-r--r--postprocess/signing/signing.pl273
-rw-r--r--psprint_config/configuration/delzip0
-rw-r--r--psprint_config/configuration/makefile.mk11
-rw-r--r--psprint_config/configuration/ppds/SGENPRT.PS589
-rw-r--r--psprint_config/configuration/ppds/SGENT42.PS29
-rw-r--r--psprint_config/configuration/ppds/delzip0
-rw-r--r--psprint_config/configuration/ppds/makefile.mk46
-rw-r--r--psprint_config/configuration/psprint.conf114
-rw-r--r--psprint_config/prj/build.lst4
-rw-r--r--psprint_config/prj/d.lst4
-rw-r--r--python/Python-2.6.1-mingw.patch1269
-rw-r--r--python/Python-2.6.1-urllib.patch93
-rwxr-xr-xpython/Python-2.6.1-vc10.patch6367
-rw-r--r--python/Python-2.6.1.patch406
-rw-r--r--python/Python-aix.patch151
-rw-r--r--python/Python-ssl.patch372
-rw-r--r--python/makefile.mk177
-rw-r--r--python/prj/build.lst3
-rw-r--r--python/prj/d.lst171
-rw-r--r--python/pyversion.mk26
-rw-r--r--pyuno/demo/Addons.xcu21
-rw-r--r--pyuno/demo/biblioaccess.py35
-rw-r--r--pyuno/demo/hello_world_comp.py40
-rw-r--r--pyuno/demo/makefile.mk229
-rw-r--r--pyuno/demo/ooextract.py109
-rw-r--r--pyuno/demo/pyunoenv.bat6
-rw-r--r--pyuno/demo/pyunoenv.tcsh30
-rw-r--r--pyuno/demo/swriter.py105
-rw-r--r--pyuno/demo/swritercomp.py112
-rw-r--r--pyuno/demo/swritercompclient.py13
-rw-r--r--pyuno/doc/modes.sxdbin0 -> 7181 bytes
-rw-r--r--pyuno/inc/pyuno/pyuno.hxx299
-rw-r--r--pyuno/prj/build.lst5
-rw-r--r--pyuno/prj/d.lst27
-rw-r--r--pyuno/source/loader/makefile.mk112
-rw-r--r--pyuno/source/loader/pythonloader.py151
-rw-r--r--pyuno/source/loader/pyuno_loader.cxx247
-rw-r--r--pyuno/source/module/makefile.mk167
-rw-r--r--pyuno/source/module/pyuno4
-rw-r--r--pyuno/source/module/pyuno.cxx747
-rwxr-xr-xpyuno/source/module/pyuno.flt14
-rw-r--r--pyuno/source/module/pyuno_adapter.cxx440
-rw-r--r--pyuno/source/module/pyuno_callable.cxx276
-rw-r--r--pyuno/source/module/pyuno_dlopenwrapper.c63
-rw-r--r--pyuno/source/module/pyuno_except.cxx254
-rw-r--r--pyuno/source/module/pyuno_gc.cxx120
-rw-r--r--pyuno/source/module/pyuno_impl.hxx296
-rw-r--r--pyuno/source/module/pyuno_module.cxx720
-rw-r--r--pyuno/source/module/pyuno_runtime.cxx1061
-rw-r--r--pyuno/source/module/pyuno_type.cxx434
-rw-r--r--pyuno/source/module/pyuno_util.cxx252
-rw-r--r--pyuno/source/module/uno.py352
-rw-r--r--pyuno/source/module/unohelper.py304
-rwxr-xr-xpyuno/zipcore/makefile.mk132
-rw-r--r--pyuno/zipcore/python.cxx306
-rw-r--r--pyuno/zipcore/python.sh65
-rw-r--r--pyuno/zipcore/pyversion.inc28
-rwxr-xr-xqadevOOo/build.xml52
-rwxr-xr-xqadevOOo/makefile.mk51
-rw-r--r--qadevOOo/objdsc/acceptor.uno/com.sun.star.comp.io.Acceptor.csv2
-rw-r--r--qadevOOo/objdsc/acceptor/com.sun.star.comp.io.Acceptor.csv2
-rw-r--r--qadevOOo/objdsc/adabas/com.sun.star.comp.sdbcx.adabas.ODriver.csv5
-rw-r--r--qadevOOo/objdsc/ado/com.sun.star.comp.sdbc.ado.ODriver.csv5
-rw-r--r--qadevOOo/objdsc/basctl/com.sun.star.comp.basctl.AccessibleShape.csv23
-rw-r--r--qadevOOo/objdsc/basctl/com.sun.star.comp.basctl.AccessibleWindow.csv24
-rw-r--r--qadevOOo/objdsc/brdgfctr/com.sun.star.comp.remotebridges.BridgeFactory.csv6
-rw-r--r--qadevOOo/objdsc/bridgefac.uno/com.sun.star.comp.remotebridges.BridgeFactory.csv6
-rw-r--r--qadevOOo/objdsc/cached/com.sun.star.comp.ucb.CachedContentResultSetFactory.csv1
-rw-r--r--qadevOOo/objdsc/cached/com.sun.star.comp.ucb.CachedContentResultSetStubFactory.csv1
-rw-r--r--qadevOOo/objdsc/cached/com.sun.star.comp.ucb.CachedDynamicResultSetFactory.csv1
-rw-r--r--qadevOOo/objdsc/cached/com.sun.star.comp.ucb.CachedDynamicResultSetStubFactory.csv2
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.AdministrationProvider.csv6
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.ConfigurationProvider.csv6
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.ConfigurationProviderWrapper.csv6
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OConfigurationRegistry.csv11
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OInnerGroupInfoAccess.csv61
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OInnerGroupUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OInnerSetInfoAccess.csv61
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OInnerTreeSetUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OInnerValueSetUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.ORootElementGroupInfoAccess.csv61
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.ORootElementGroupUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.ORootElementSetInfoAccess.csv61
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.ORootElementTreeSetUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.ORootElementValueSetUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OSetElementGroupInfoAccess.csv61
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OSetElementGroupUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OSetElementSetInfoAccess.csv61
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OSetElementTreeSetUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.OSetElementValueSetUpdateAccess.csv72
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.CopyImporter.csv5
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.LayerUpdateMerger.csv18
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.LocalDataImporter.csv1
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.LocalHierarchyBrowser.csv1
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.LocalSchemaSupplier.csv1
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.LocalSingleBackend.csv11
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.LocalSingleStratum.csv6
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.MergeImporter.csv5
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.MultiStratumBackend.csv10
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.SingleBackendAdapter.csv10
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.xml.LayerParser.csv4
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.xml.LayerWriter.csv16
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.backend.xml.SchemaParser.csv6
-rw-r--r--qadevOOo/objdsc/cfgmgr2/com.sun.star.comp.configuration.bootstrap.BootstrapContext.csv2
-rw-r--r--qadevOOo/objdsc/cmdmail/com.sun.star.comp.system.SimpleCommandMail.csv6
-rw-r--r--qadevOOo/objdsc/configmgr/com.sun.star.comp.configuration.ConfigurationProvider.csv45
-rw-r--r--qadevOOo/objdsc/configmgr/com.sun.star.comp.configuration.DefaultProvider.csv33
-rw-r--r--qadevOOo/objdsc/connector.uno/com.sun.star.comp.io.Connector.csv1
-rw-r--r--qadevOOo/objdsc/connectr/com.sun.star.comp.io.Connector.csv1
-rw-r--r--qadevOOo/objdsc/corefl/com.sun.star.comp.stoc.CoreReflection.csv5
-rw-r--r--qadevOOo/objdsc/corereflection.uno/com.sun.star.comp.stoc.CoreReflection.csv5
-rw-r--r--qadevOOo/objdsc/cpld/com.sun.star.comp.stoc.DLLComponentLoader.csv5
-rw-r--r--qadevOOo/objdsc/dbaccess/com.sun.star.comp.dba.OCommandDefinition.csv13
-rw-r--r--qadevOOo/objdsc/dbaccess/com.sun.star.comp.dba.ODatabaseContext.csv13
-rw-r--r--qadevOOo/objdsc/dbaccess/com.sun.star.comp.dba.ODatabaseSource.csv29
-rw-r--r--qadevOOo/objdsc/dbaccess/com.sun.star.comp.dba.ORowSet.csv154
-rw-r--r--qadevOOo/objdsc/dbaccess/com.sun.star.comp.dbu.OInteractionHandler.csv1
-rw-r--r--qadevOOo/objdsc/dbaccess/com.sun.star.comp.dbu.SbaXGridControl.csv63
-rwxr-xr-xqadevOOo/objdsc/dbaccess/org.openoffice.comp.dba.OSingleSelectQueryComposer.csv24
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.ConnectionLineAccessibility.csv13
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.DBContentLoader.csv5
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.JoinViewAccessibility.csv13
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.ODatasourceAdministrationDialog.csv12
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.ODatasourceBrowser.csv40
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.OQueryDesign.csv11
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.OSQLMessageDialog.csv13
-rw-r--r--qadevOOo/objdsc/dbaccess/org.openoffice.comp.dbu.TableWindowAccessibility.csv13
-rw-r--r--qadevOOo/objdsc/dbpool/com.sun.star.comp.sdbc.OConnectionPool.csv4
-rw-r--r--qadevOOo/objdsc/defreg/com.sun.star.comp.stoc.NestedRegistry.csv9
-rw-r--r--qadevOOo/objdsc/dnd/com.sun.star.comp.datatransfer.dnd.OleDragAndDrop.csv18
-rw-r--r--qadevOOo/objdsc/dtrans/com.sun.star.comp.datatransfer.generic.csv19
-rw-r--r--qadevOOo/objdsc/dtransX11/com.sun.star.comp.datatransfer.X11.csv25
-rw-r--r--qadevOOo/objdsc/dynamicloader/com.sun.star.loader.Dynamic.csv5
-rw-r--r--qadevOOo/objdsc/file/com.sun.star.comp.sdbc.dbase.ODriver.csv9
-rw-r--r--qadevOOo/objdsc/file/com.sun.star.comp.sdbc.evoab.OEvoabDriver.csv9
-rw-r--r--qadevOOo/objdsc/file/com.sun.star.comp.sdbc.flat.ODriver.csv9
-rw-r--r--qadevOOo/objdsc/file/com.sun.star.sdbc.driver.calc.ODriver.csv9
-rw-r--r--qadevOOo/objdsc/file/com.sun.star.sdbc.driver.file.Driver.csv9
-rw-r--r--qadevOOo/objdsc/fileacc/com.sun.star.comp.ucb.SimpleFileAccess.csv17
-rw-r--r--qadevOOo/objdsc/fop/com.sun.star.comp.ui.dialogs.FolderPicker.csv12
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.form.ONavigationBarControl.csv36
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.form.ONavigationBarModel.csv60
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OButtonControl.csv49
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OButtonModel.csv78
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OCheckBoxControl.csv47
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OCheckBoxModel.csv95
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OComboBoxControl.csv67
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OComboBoxModel.csv97
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OCurrencyControl.csv78
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OCurrencyModel.csv97
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.ODatabaseForm.csv225
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.ODateControl.csv78
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.ODateModel.csv98
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OEditControl.csv57
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OEditModel.csv235
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OFileControlModel.csv67
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OFixedTextModel.csv63
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OFormattedControl.csv62
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OFormattedFieldWrapper.csv101
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OFormsCollection.csv27
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OGridControlModel.csv90
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OGroupBoxControl.csv36
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OGroupBoxModel.csv57
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OHiddenModel.csv23
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OImageButtonControl.csv45
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OImageButtonModel.csv63
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OImageControlControl.csv41
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OImageControlModel.csv75
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OListBoxControl.csv67
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OListBoxModel.csv95
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.ONumericControl.csv78
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.ONumericModel.csv97
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OPatternControl.csv68
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OPatternModel.csv84
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.ORadioButtonControl.csv46
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.ORadioButtonModel.csv95
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OScrollBarModel.csv69
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OSpinButtonModel.csv66
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OTimeControl.csv76
-rw-r--r--qadevOOo/objdsc/forms/com.sun.star.comp.forms.OTimeModel.csv96
-rw-r--r--qadevOOo/objdsc/fps/com.sun.star.comp.ui.dialogs.FilePicker.csv36
-rw-r--r--qadevOOo/objdsc/ftransl/com.sun.star.comp.datatransfer.DataFormatTranslator.csv7
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.ControlMenuController.csv5
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.Desktop.csv37
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.DispatchRecorder.csv10
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.DispatchRecorderSupplier.csv3
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.FontMenuController.csv5
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.FontSizeMenuController.csv5
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.FooterMenuController.csv5
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.Frame.csv30
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.HeaderMenuController.csv5
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.JobExecutor.csv1
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.JobHandler.csv3
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.LayoutManager.csv30
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.MacrosMenuController.csv5
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.MailToDispatcher.csv3
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.MenuBarFactory.csv1
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.ModuleManager.csv6
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.ModuleUIConfigurationManager.csv21
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.ModuleUIConfigurationManagerSupplier.csv1
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.ObjectMenuController.csv5
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.PopupMenuControllerFactory.csv6
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.ServiceHandler.csv3
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.SoundHandler.csv4
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.StatusBarControllerFactory.csv6
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.ToolBarsMenuController.csv5
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.UICategoryDescription.csv5
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.UICommandDescription.csv5
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.UIConfigurationManager.csv23
-rwxr-xr-xqadevOOo/objdsc/fwk/com.sun.star.comp.framework.UIElementFactoryManager.csv5
-rw-r--r--qadevOOo/objdsc/fwk/com.sun.star.comp.framework.URLTransformer.csv4
-rw-r--r--qadevOOo/objdsc/fwl/com.sun.star.comp.framework.ContentHandlerFactory.csv10
-rw-r--r--qadevOOo/objdsc/fwl/com.sun.star.comp.framework.FilterFactory.csv16
-rw-r--r--qadevOOo/objdsc/fwl/com.sun.star.comp.framework.FrameLoaderFactory.csv10
-rw-r--r--qadevOOo/objdsc/fwl/com.sun.star.comp.framework.PathSettings.csv39
-rw-r--r--qadevOOo/objdsc/fwl/com.sun.star.comp.framework.SubstituteVariables.csv3
-rw-r--r--qadevOOo/objdsc/fwl/com.sun.star.comp.framework.TypeDetection.csv15
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.BreakIterator.csv23
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.CalendarImpl.csv24
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.ChapterCollator.csv10
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.CharacterClassification.csv13
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.Collator.csv10
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.IndexEntrySupplier.csv12
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.LocaleData.csv15
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.NumberFormatCodeMapper.csv7
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.i18n.Transliteration.csv19
-rw-r--r--qadevOOo/objdsc/i18n/com.sun.star.util.TextSearch.csv3
-rw-r--r--qadevOOo/objdsc/implreg.uno/com.sun.star.comp.stoc.ImplementationRegistration.csv4
-rw-r--r--qadevOOo/objdsc/impreg/com.sun.star.comp.stoc.ImplementationRegistration.csv4
-rw-r--r--qadevOOo/objdsc/insp/com.sun.star.comp.stoc.Introspection.csv1
-rw-r--r--qadevOOo/objdsc/introspection.uno/com.sun.star.comp.stoc.Introspection.csv1
-rw-r--r--qadevOOo/objdsc/inv/com.sun.star.comp.stoc.Invocation.csv2
-rw-r--r--qadevOOo/objdsc/invadp/com.sun.star.comp.stoc.InvocationAdapterFactory.csv2
-rw-r--r--qadevOOo/objdsc/invocadapt.uno/com.sun.star.comp.stoc.InvocationAdapterFactory.csv2
-rw-r--r--qadevOOo/objdsc/invocation.uno/com.sun.star.comp.stoc.Invocation.csv2
-rw-r--r--qadevOOo/objdsc/javaloader.uno/com.sun.star.comp.stoc.JavaComponentLoader.csv5
-rw-r--r--qadevOOo/objdsc/javaloader/com.sun.star.comp.stoc.JavaComponentLoader.csv5
-rw-r--r--qadevOOo/objdsc/javavm.uno/com.sun.star.comp.stoc.JavaVirtualMachine.csv6
-rw-r--r--qadevOOo/objdsc/jdbc/com.sun.star.comp.sdbc.JDBCDriver.csv5
-rw-r--r--qadevOOo/objdsc/jen/com.sun.star.comp.stoc.JavaVirtualMachine.csv6
-rw-r--r--qadevOOo/objdsc/lng/com.sun.star.lingu2.DicList.csv18
-rw-r--r--qadevOOo/objdsc/lng/com.sun.star.lingu2.LinguProps.csv34
-rw-r--r--qadevOOo/objdsc/lng/com.sun.star.lingu2.LngSvcMgr.csv15
-rw-r--r--qadevOOo/objdsc/lnn/com.sun.star.lingu2.Hyphenator.csv15
-rw-r--r--qadevOOo/objdsc/lnn/com.sun.star.lingu2.SpellChecker.csv14
-rw-r--r--qadevOOo/objdsc/lnn/com.sun.star.lingu2.Thesaurus.csv11
-rw-r--r--qadevOOo/objdsc/mcnttype/com.sun.star.comp.datatransfer.MimeContentTypeFactory.csv6
-rw-r--r--qadevOOo/objdsc/mozab/com.sun.star.comp.sdbc.MozabDriver.csv5
-rw-r--r--qadevOOo/objdsc/namingservice.uno/com.sun.star.comp.stoc.NamingService.csv3
-rw-r--r--qadevOOo/objdsc/namingservice/com.sun.star.comp.stoc.NamingService.csv3
-rw-r--r--qadevOOo/objdsc/nestedreg.uno/com.sun.star.comp.stoc.NestedRegistry.csv9
-rw-r--r--qadevOOo/objdsc/odbc/com.sun.star.comp.sdbc.ODBCDriver.csv5
-rw-r--r--qadevOOo/objdsc/odbc/org.openoffice.comp.drivers.MySQL.Driver.csv9
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.ButtonNavigationHandler.csv19
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.CellBindingPropertyHandler.csv19
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.DefaultFormComponentInspectorModel.csv7
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.EFormsPropertyHandler.csv19
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.EditPropertyHandler.csv19
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.EventHandler.csv19
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.FormComponentPropertyHandler.csv19
-rwxr-xr-xqadevOOo/objdsc/pcr/com.sun.star.comp.extensions.GenericPropertyHandler.csv19
-rw-r--r--qadevOOo/objdsc/pcr/com.sun.star.comp.extensions.XSDValidationPropertyHandler.csv19
-rw-r--r--qadevOOo/objdsc/pcr/org.openoffice.comp.extensions.FormController.csv27
-rwxr-xr-xqadevOOo/objdsc/pcr/org.openoffice.comp.extensions.ObjectInspector.csv13
-rw-r--r--qadevOOo/objdsc/pcr/org.openoffice.comp.extensions.ObjectInspectorModel.csv7
-rw-r--r--qadevOOo/objdsc/proxyfac.uno/com.sun.star.comp.stoc.ProxyFactory.csv1
-rw-r--r--qadevOOo/objdsc/proxyfac/com.sun.star.comp.stoc.ProxyFactory.csv1
-rw-r--r--qadevOOo/objdsc/proxyset/com.sun.star.comp.system.SystemProxySettings.csv17
-rwxr-xr-xqadevOOo/objdsc/qadevOOo/bogus.SelfTest.csv7
-rw-r--r--qadevOOo/objdsc/rdbtdp/com.sun.star.comp.stoc.RegistryTypeDescriptionProvider.csv6
-rw-r--r--qadevOOo/objdsc/regtypeprov.uno/com.sun.star.comp.stoc.RegistryTypeDescriptionProvider.csv6
-rw-r--r--qadevOOo/objdsc/remotebridge.uno/com.sun.star.comp.remotebridges.Bridge.various.csv7
-rw-r--r--qadevOOo/objdsc/remotebridge/com.sun.star.comp.remotebridges.Bridge.various.csv7
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLContentExporter.csv6
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLContentImporter.csv14
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLExporter.csv6
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLImporter.csv14
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLMetaExporter.csv6
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLMetaImporter.csv14
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLSettingsExporter.csv6
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLSettingsImporter.csv14
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLStylesExporter.csv6
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.Calc.XMLStylesImporter.csv14
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAnnotationObj.csv17
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAnnotationShapeObj.csv244
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAnnotationsObj.csv7
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAreaLinkObj.csv19
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAreaLinksObj.csv7
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAutoFormatFieldObj.csv50
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAutoFormatObj.csv20
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScAutoFormatsObj.csv11
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv239
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellFieldObj.csv16
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellFieldsObj.csv6
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellFormatsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellFormatsObj.csv5
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellObj.csv223
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv226
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangesObj.csv206
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellSearchObj.csv21
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellTextCursor.csv180
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellsObj.csv3
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScChartObj.csv9
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScChartsObj.csv10
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScConsolidationDescriptor.csv12
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDDELinkObj.csv8
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDDELinksObj.csv8
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotFieldGroupItemObj.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotFieldGroupObj.csv10
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotFieldGroupsObj.csv8
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotFieldObj.csv28
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotFieldsObj.csv8
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotItemObj.csv11
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotItemsObj.csv8
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotTableObj.csv20
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDataPilotTablesObj.csv11
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDatabaseRangeObj.csv28
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDatabaseRangesObj.csv10
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDocumentConfiguration.csv49
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDrawPageObj.csv11
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScDrawPagesObj.csv8
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScFilterDescriptorBase.csv18
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScFunctionListObj.csv9
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScHeaderFieldObj.csv16
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScHeaderFieldsObj.csv6
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScHeaderFooterContentObj.csv3
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScHeaderFooterTextCursor.csv180
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScHeaderFooterTextObj.csv21
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_CellAnnotationsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_CellAreaLinksEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_DDELinksEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_DataPilotFieldsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_DataPilotItemsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_DataPilotTablesEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_DatabaseRangesEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_FunctionDescriptionEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_LabelRangesEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_NamedRangesEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_ScenariosEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_SheetCellRangesEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_SheetLinksEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_SpreadsheetViewPanesEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_SpreadsheetsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_SubTotalFieldsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_TableAutoFormatEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_TableChartsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_TableColumnsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_TableConditionalEntryEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_TableRowsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScIndexEnumeration_TextFieldEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScLabelRangeObj.csv4
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScLabelRangesObj.csv7
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv94
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScNamedRangeObj.csv9
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScNamedRangesObj.csv12
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScPageObj.csv11
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScRecentFunctionsObj.csv3
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScScenariosObj.csv10
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScShapeObj.csv29
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScSheetLinkObj.csv15
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScSheetLinksObj.csv8
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScSpreadsheetSettings.csv25
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScSpreadsheetSettingsObj.csv24
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScStyleFamiliesObj.csv7
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScStyleFamilyObj.csv10
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScStyleObj.csv27
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScSubTotalDescriptorBase.csv22
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScSubTotalFieldObj.csv4
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTabViewObj.csv86
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableColumnObj.csv16
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableColumnsObj.csv10
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableConditionalEntry.csv10
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableConditionalFormat.csv11
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableRowObj.csv14
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableRowsObj.csv7
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv293
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetsObj.csv14
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableValidationObj.csv25
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScUniqueCellFormatsEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScUniqueCellFormatsObj.csv5
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScViewPaneObj.csv11
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.AccessibleEditableTextPara_HeaderFooter.csv52
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.AccessibleEditableTextPara_PreviewCell.csv52
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.AccessibleEditableTextPara_PreviewNote.csv52
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessibleCell.csv40
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessibleCsvCell.csv36
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessibleCsvGrid.csv45
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessibleCsvRuler.csv36
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessibleDocument.csv28
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessibleDocumentPagePreview.csv21
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessiblePageHeader.csv21
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessiblePageHeaderArea.csv21
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessiblePreviewCell.csv32
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessiblePreviewHeaderCell.csv32
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessiblePreviewTable.csv47
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.unknown.ScAccessibleSpreadsheet.csv47
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccAxis.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccDataPoint.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccDataSeries.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccDiagram.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccFloor.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccGrid.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccLegend.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccLegendEntry.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccStatisticsObject.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccTitle.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccWall.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.chart.AccessibleDocumentView.csv22
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.AccArea.csv25
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXChartAxis.csv92
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXChartData.csv4
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXChartDataArray.csv10
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXChartDocument.csv37
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXChartView.csv10
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDataPoint.csv97
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDataRow.csv109
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDiagram.csv80
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChartArea.csv43
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChartGrid.csv21
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChartLegend.csv113
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChartLine.csv21
-rw-r--r--qadevOOo/objdsc/sch/com.sun.star.comp.office.ChartTitle.csv79
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdDocLinkTargets.csv5
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdDrawPage.csv37
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdDrawPagesAccess.csv8
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdGenericDrawPage.csv34
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdLayer.csv11
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdLayerManager.csv11
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdMasterPage.csv34
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdMasterPagesAccess.csv6
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdPageLinkTargets.csv5
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdXCustomPresentation.csv9
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdXCustomPresentationAccess.csv10
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdXImpressDocument.csv60
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdXPresentation.csv22
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.office.SdXShape.csv29
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.AccessibleDrawDocumentView.csv22
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.AccessibleOutlineView.csv13
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.AccessibleSlideView.csv22
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.DrawController_DrawView.csv58
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.DrawController_HandoutView.csv58
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.DrawController_NotesView.csv58
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.DrawController_OutlineView.csv58
-rw-r--r--qadevOOo/objdsc/sd/com.sun.star.comp.unknown.DrawController_PresentationView.csv58
-rw-r--r--qadevOOo/objdsc/servicemgr.uno/com.sun.star.comp.stoc.OServiceManager.csv28
-rw-r--r--qadevOOo/objdsc/sfx/com.sun.star.comp.office.FrameLoader.csv5
-rw-r--r--qadevOOo/objdsc/sfx/com.sun.star.comp.sfx2.AppDispatchProvider.csv3
-rw-r--r--qadevOOo/objdsc/sfx/com.sun.star.comp.sfx2.DocumentTemplates.csv9
-rw-r--r--qadevOOo/objdsc/sfx/com.sun.star.comp.sfx2.SfxMacroLoader.csv3
-rw-r--r--qadevOOo/objdsc/sfx/com.sun.star.comp.sfx2.StandaloneDocumentInfo.csv46
-rw-r--r--qadevOOo/objdsc/shlibloader.uno/com.sun.star.comp.stoc.DLLComponentLoader.csv5
-rw-r--r--qadevOOo/objdsc/simplereg.uno/com.sun.star.comp.stoc.SimpleRegistry.csv8
-rw-r--r--qadevOOo/objdsc/simreg/com.sun.star.comp.stoc.SimpleRegistry.csv8
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.Math.XMLExporter.csv6
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.Math.XMLImporter.csv14
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.Math.XMLMetaExporter.csv6
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.Math.XMLMetaImporter.csv14
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.Math.XMLSettingsExporter.csv6
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.Math.XMLSettingsImporter.csv14
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.unknown.SmEditAccessible.csv22
-rw-r--r--qadevOOo/objdsc/sm/com.sun.star.comp.unknown.SmGraphicAccessible.csv39
-rw-r--r--qadevOOo/objdsc/sm/math.SmModel.csv55
-rw-r--r--qadevOOo/objdsc/smgr/com.sun.star.comp.stoc.OServiceManager.csv28
-rw-r--r--qadevOOo/objdsc/smplmail/com.sun.star.comp.system.SimpleSystemMail.csv6
-rw-r--r--qadevOOo/objdsc/srtrs/com.sun.star.comp.ucb.SortedDynamicResultSetFactory.csv1
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.io.stm.DataInputStream.csv20
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.io.stm.DataOutputStream.csv14
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.io.stm.MarkableInputStream.csv16
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.io.stm.MarkableOutputStream.csv14
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.io.stm.ObjectInputStream.csv26
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.io.stm.ObjectOutputStream.csv19
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.io.stm.Pipe.csv8
-rw-r--r--qadevOOo/objdsc/stm/com.sun.star.comp.stoc.Pump.csv8
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.io.stm.DataInputStream.csv20
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.io.stm.DataOutputStream.csv14
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.io.stm.MarkableInputStream.csv16
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.io.stm.MarkableOutputStream.csv14
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.io.stm.ObjectInputStream.csv26
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.io.stm.ObjectOutputStream.csv19
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.io.stm.Pipe.csv8
-rw-r--r--qadevOOo/objdsc/streams.uno/com.sun.star.comp.stoc.Pump.csv8
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleBrowseBox.csv12
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleBrowseBoxHeaderBar.csv12
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleBrowseBoxHeaderCell.csv12
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleBrowseBoxTable.csv12
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleBrowseBoxTableCell.csv12
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleIconChoiceCtrl.csv28
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleIconChoiceCtrlEntry.csv38
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleTabBar.csv24
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleTabBarPage.csv24
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleTabBarPageList.csv31
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleTreeListBox.csv28
-rw-r--r--qadevOOo/objdsc/svtools/com.sun.star.comp.svtools.AccessibleTreeListBoxEntry.csv49
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.Draw.GraphicExporter.csv5
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxDrawPage.csv37
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxGraphicObject.csv212
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShape.csv236
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapeCircle.csv238
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapeCollection.csv6
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapeConnector.csv227
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapeControl.csv31
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapeDimensioning.csv233
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapeGroup.csv37
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapePolyPolygon.csv238
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxShapePolyPolygonBezier.csv238
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoNumberingRules.csv16
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoText.csv21
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoTextContent.csv205
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoTextContentEnum.csv2
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoTextCursor.csv180
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoTextField.csv16
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoTextRange.csv147
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.office.SvxUnoTextRangeEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.ui.SvxGraphCtrlAccessibleContext.csv29
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessibleControlShape.csv25
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessibleEditableTextPara.csv53
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessibleGraphicShape.csv25
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessibleImageBullet.csv13
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessibleOLEShape.csv25
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessiblePageShape.csv25
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessiblePresentationGraphicShape.csv25
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessiblePresentationOLEShape.csv25
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessiblePresentationShape.csv25
-rw-r--r--qadevOOo/objdsc/svx/com.sun.star.comp.unknown.AccessibleShape.csv25
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.DocumentSettings.csv65
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleDocumentPageView.csv22
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleDocumentView.csv29
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleEndnoteView.csv22
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleFooterView.csv22
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleFootnoteView.csv22
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleHeaderView.csv22
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessiblePageView.csv22
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleParagraphView.csv53
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleTableCellView.csv33
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleTableView.csv48
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleTextEmbeddedObject.csv25
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleTextFrameView.csv22
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.SwAccessibleTextGraphicObject.csv25
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLContentExporter.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLContentImporter.csv14
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLExporter.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLImporter.csv14
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLMetaExporter.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLMetaImporter.csv14
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLSettingsExporter.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLSettingsImporter.csv14
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLStylesExporter.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.Writer.XMLStylesImporter.csv14
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXAutoTextContainer.csv9
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXAutoTextEntry.csv12
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXAutoTextGroup.csv13
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXBodyText.csv21
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXBookmark.csv10
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXBookmarks.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXCell.csv26
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXCellRange.csv148
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXChapterNumbering.csv16
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXDocumentIndex.csv42
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXDocumentIndexMark.csv12
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXDocumentIndexes.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXDrawPage.csv34
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXEndnoteProperties.csv11
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXFieldEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXFieldMaster.csv10
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXFootnote.csv19
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXFootnoteProperties.csv11
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXFootnoteText.csv21
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXFootnotes.csv4
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXFrames.csv9
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXHeadFootText.csv21
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXLineNumberingProperties.csv10
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXMailMerge.csv36
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXModule.csv2
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXNumberingRules.csv16
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXParagraph.csv205
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXParagraphEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXPrintSettings.csv13
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXPropertySet.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXPropertySetInfo.csv3
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXReferenceMark.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXReferenceMarks.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXShape.csv26
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXStyleFamilies.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXStyleFamily.csv10
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTableCellText.csv21
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTableColumns.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTableRows.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextColumns.csv12
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextCursor.csv180
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextDefaults.csv137
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextDocument.csv87
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextEmbeddedObject.csv73
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextEmbeddedObjects.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextField.csv16
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextFieldMasters.csv5
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextFieldTypes.csv6
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextFrame.csv78
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextFrameText.csv21
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextGraphicObject.csv90
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextGraphicObjects.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextPortion.csv155
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextPortionEnumeration.csv2
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextRange.csv147
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextRanges.csv4
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextSearch.csv19
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextSection.csv52
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextSections.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextTable.csv59
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextTableCursor.csv142
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextTableRow.csv16
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextTables.csv7
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextView.csv11
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXTextViewCursor.csv190
-rw-r--r--qadevOOo/objdsc/sw/com.sun.star.comp.office.SwXViewSettings.csv37
-rwxr-xr-xqadevOOo/objdsc/sw/com.sun.star.style.CharacterStyle.csv105
-rwxr-xr-xqadevOOo/objdsc/sw/com.sun.star.style.ConditionalParagraphStyle.csv95
-rwxr-xr-xqadevOOo/objdsc/sw/com.sun.star.style.PageStyle.csv125
-rwxr-xr-xqadevOOo/objdsc/sw/com.sun.star.style.ParagraphStyle.csv95
-rw-r--r--qadevOOo/objdsc/sysdtrans/com.sun.star.comp.datatransfer.SystemClipboard.csv16
-rwxr-xr-xqadevOOo/objdsc/sysmgr1/com.sun.star.comp.configuration.backend.SystemIntegration.csv5
-rw-r--r--qadevOOo/objdsc/syssh/com.sun.star.comp.system.SystemShellExecute.csv6
-rw-r--r--qadevOOo/objdsc/tcv/com.sun.star.comp.stoc.TypeConverter.csv2
-rw-r--r--qadevOOo/objdsc/tdmgr/com.sun.star.comp.stoc.TypeDescriptionManager.csv12
-rw-r--r--qadevOOo/objdsc/text/com.sun.star.text.DefaultNumberingProvider.csv2
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.TabController.csv9
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.TabControllerModel.csv11
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.Toolkit.csv12
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlButton.csv43
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlButtonModel.csv55
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlCheckBox.csv45
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlCheckBoxModel.csv50
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlComboBox.csv65
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlComboBoxModel.csv51
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlContainer.csv47
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlContainerModel.csv37
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlCurrencyField.csv76
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlCurrencyFieldModel.csv56
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlDateField.csv76
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlDateFieldModel.csv55
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlDialog.csv56
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlDialogModel.csv55
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlEdit.csv53
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlEditModel.csv53
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlFileControl.csv53
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlFileControlModel.csv45
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlFixedLineModel.csv40
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlFixedText.csv43
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlFixedTextModel.csv45
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlFormattedField.csv60
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlFormattedFieldModel.csv58
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlGroupBox.csv36
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlGroupBoxModel.csv39
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlImageControl.csv39
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlImageControlModel.csv40
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlListBox.csv63
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlListBoxModel.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlNumericField.csv76
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlNumericFieldModel.csv54
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlPatternField.csv66
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlPatternFieldModel.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlProgressBarModel.csv40
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlRadioButton.csv44
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlRadioButtonModel.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlScrollBarModel.csv47
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlTimeField.csv74
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.awt.UnoControlTimeFieldModel.csv53
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleButton.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleCheckBox.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleComboBox.csv24
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleDropDownComboBox.csv28
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleDropDownListBox.csv28
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleEdit.csv48
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleFixedText.csv41
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleList.csv32
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleListBox.csv24
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleListItem.csv38
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleMenu.csv56
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleMenuBar.csv31
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleMenuItem.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleMenuSeparator.csv24
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessiblePopupMenu.csv31
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleRadioButton.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleScrollBar.csv32
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleStatusBar.csv24
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleStatusBarItem.csv41
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleTabControl.csv31
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleTabPage.csv41
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleToolBox.csv24
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleToolBoxItem.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.AccessibleWindow.csv24
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.UnoSimpleAnimationControl.csv36
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.UnoSimpleAnimationControlModel.csv29
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.UnoSpinButtonControl.csv49
-rw-r--r--qadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.UnoSpinButtonControlModel.csv44
-rwxr-xr-xqadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.UnoThrobberControl.csv36
-rwxr-xr-xqadevOOo/objdsc/toolkit/com.sun.star.comp.toolkit.UnoThrobberControlModel.csv29
-rwxr-xr-xqadevOOo/objdsc/toolkit/stardiv.Toolkit.UnoTreeControl.csv28
-rwxr-xr-xqadevOOo/objdsc/toolkit/stardiv.Toolkit.UnoTreeModel.csv37
-rw-r--r--qadevOOo/objdsc/toolkit/stardiv.toolkit.UnoScrollBarControl.csv51
-rwxr-xr-xqadevOOo/objdsc/toolkit/toolkit.MutableTreeDataModel.csv8
-rwxr-xr-xqadevOOo/objdsc/toolkit/toolkit.MutableTreeNode.csv18
-rw-r--r--qadevOOo/objdsc/typeconverter.uno/com.sun.star.comp.stoc.TypeConverter.csv2
-rw-r--r--qadevOOo/objdsc/typemgr.uno/com.sun.star.comp.stoc.TypeDescriptionManager.csv12
-rw-r--r--qadevOOo/objdsc/ucb/com.sun.star.comp.ucb.UcbContentProviderProxyFactory.csv1
-rw-r--r--qadevOOo/objdsc/ucb/com.sun.star.comp.ucb.UcbPropertiesManager.csv3
-rw-r--r--qadevOOo/objdsc/ucb/com.sun.star.comp.ucb.UcbStore.csv1
-rw-r--r--qadevOOo/objdsc/ucb/com.sun.star.comp.ucb.UniversalContentBroker.csv15
-rw-r--r--qadevOOo/objdsc/ucpchelp/com.sun.star.comp.unknown.CHelpContentProvider.csv2
-rw-r--r--qadevOOo/objdsc/ucpdav/com.sun.star.comp.ucb.WebDAVContentProvider.csv2
-rw-r--r--qadevOOo/objdsc/ucpfile/com.sun.star.comp.ucb.FileProvider.csv13
-rw-r--r--qadevOOo/objdsc/ucpftp/com.sun.star.comp.ucb.FTPContentProvider.csv2
-rw-r--r--qadevOOo/objdsc/ucphier/com.sun.star.comp.ucb.HierarchyContentProvider.csv2
-rw-r--r--qadevOOo/objdsc/ucphier/com.sun.star.comp.ucb.HierarchyDataSource.csv6
-rw-r--r--qadevOOo/objdsc/ucppkg/com.sun.star.comp.ucb.PackageContentProvider.csv2
-rw-r--r--qadevOOo/objdsc/ucprmt/com.sun.star.comp.ucb.ucp.remote.ContentProvider.csv5
-rw-r--r--qadevOOo/objdsc/ucprmt/com.sun.star.comp.ucb.ucp.remote.ProviderAcceptor.csv3
-rw-r--r--qadevOOo/objdsc/ucprmt/com.sun.star.comp.ucb.ucp.remote.ProxyProvider.csv5
-rw-r--r--qadevOOo/objdsc/uui/com.sun.star.comp.uui.UUIInteractionHandler.csv2
-rw-r--r--qadevOOo/objdsc/uuresolver.uno/com.sun.star.comp.bridge.UnoUrlResolver.csv1
-rw-r--r--qadevOOo/objdsc/uuresolver/com.sun.star.comp.bridge.UnoUrlResolver.csv1
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Chart.XMLContentExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Chart.XMLContentImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Chart.XMLExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Chart.XMLImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Chart.XMLStylesExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Chart.XMLStylesImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLContentExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLContentImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLMetaExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLMetaImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLSettingsExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLSettingsImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLStylesExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Draw.XMLStylesImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLContentExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLContentImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLMetaExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLMetaImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLSettingsExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLSettingsImporter.csv14
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLStylesExporter.csv6
-rw-r--r--qadevOOo/objdsc/xmloff/com.sun.star.comp.Impress.XMLStylesImporter.csv14
-rw-r--r--qadevOOo/prj/build.lst5
-rw-r--r--qadevOOo/prj/d.lst1
-rw-r--r--qadevOOo/qa/unoapi/Test.java51
-rwxr-xr-xqadevOOo/qa/unoapi/knownissues.xcl1
-rwxr-xr-xqadevOOo/qa/unoapi/makefile.mk48
-rwxr-xr-xqadevOOo/qa/unoapi/qadevOOo.sce1
-rw-r--r--qadevOOo/runner/base/TestBase.java39
-rw-r--r--qadevOOo/runner/base/basic_fat.java457
-rw-r--r--qadevOOo/runner/base/java_cmp.java83
-rw-r--r--qadevOOo/runner/base/java_complex.java170
-rw-r--r--qadevOOo/runner/base/java_fat.java602
-rw-r--r--qadevOOo/runner/base/java_fat_service.java267
-rw-r--r--qadevOOo/runner/base/makefile.mk52
-rw-r--r--qadevOOo/runner/basicrunner/BasicException.java42
-rw-r--r--qadevOOo/runner/basicrunner/BasicHandler.java612
-rw-r--r--qadevOOo/runner/basicrunner/BasicHandlerProvider.java153
-rw-r--r--qadevOOo/runner/basicrunner/BasicIfcTest.java169
-rw-r--r--qadevOOo/runner/basicrunner/BasicTestCase.java178
-rw-r--r--qadevOOo/runner/basicrunner/basichelper/AttributeList.java138
-rw-r--r--qadevOOo/runner/basicrunner/basichelper/Connector.java272
-rw-r--r--qadevOOo/runner/basicrunner/basichelper/DispatchProviderInterceptor.java194
-rw-r--r--qadevOOo/runner/basicrunner/basichelper/DocumentHandler.java344
-rw-r--r--qadevOOo/runner/basicrunner/basichelper/Filter.java269
-rw-r--r--qadevOOo/runner/basicrunner/basichelper/ThreadRunner.java254
-rw-r--r--qadevOOo/runner/basicrunner/basichelper/makefile.mk47
-rw-r--r--qadevOOo/runner/basicrunner/makefile.mk46
-rw-r--r--qadevOOo/runner/complexlib/Assurance.java407
-rw-r--r--qadevOOo/runner/complexlib/ComplexTestCase.java315
-rw-r--r--qadevOOo/runner/complexlib/MethodThread.java112
-rw-r--r--qadevOOo/runner/complexlib/ShowTargets.java138
-rw-r--r--qadevOOo/runner/complexlib/makefile.mk49
-rw-r--r--qadevOOo/runner/convwatch/Basename.java61
-rw-r--r--qadevOOo/runner/convwatch/BorderRemover.java319
-rw-r--r--qadevOOo/runner/convwatch/BuildID.java163
-rw-r--r--qadevOOo/runner/convwatch/ConvWatch.java432
-rw-r--r--qadevOOo/runner/convwatch/ConvWatchCancelException.java38
-rw-r--r--qadevOOo/runner/convwatch/ConvWatchException.java37
-rw-r--r--qadevOOo/runner/convwatch/ConvWatchStarter.java445
-rw-r--r--qadevOOo/runner/convwatch/CrashLoopTest.java57
-rw-r--r--qadevOOo/runner/convwatch/DB.java541
-rw-r--r--qadevOOo/runner/convwatch/DBHelper.java316
-rwxr-xr-xqadevOOo/runner/convwatch/DateHelper.java58
-rw-r--r--qadevOOo/runner/convwatch/DirectoryHelper.java156
-rw-r--r--qadevOOo/runner/convwatch/DocumentConverter.java277
-rw-r--r--qadevOOo/runner/convwatch/EnhancedComplexTestCase.java130
-rw-r--r--qadevOOo/runner/convwatch/FileHelper.java405
-rw-r--r--qadevOOo/runner/convwatch/FilenameHelper.java398
-rw-r--r--qadevOOo/runner/convwatch/GfxCompare.java196
-rw-r--r--qadevOOo/runner/convwatch/GlobalLogWriter.java57
-rw-r--r--qadevOOo/runner/convwatch/GraphicalDifferenceCheck.java410
-rw-r--r--qadevOOo/runner/convwatch/GraphicalTestArguments.java744
-rw-r--r--qadevOOo/runner/convwatch/HTMLOutputter.java418
-rw-r--r--qadevOOo/runner/convwatch/INIOutputter.java207
-rw-r--r--qadevOOo/runner/convwatch/ImageHelper.java116
-rw-r--r--qadevOOo/runner/convwatch/IniFile.java452
-rw-r--r--qadevOOo/runner/convwatch/LISTOutputter.java104
-rw-r--r--qadevOOo/runner/convwatch/MSOfficePrint.java870
-rw-r--r--qadevOOo/runner/convwatch/NameHelper.java89
-rw-r--r--qadevOOo/runner/convwatch/OSHelper.java84
-rw-r--r--qadevOOo/runner/convwatch/OfficePrint.java1377
-rw-r--r--qadevOOo/runner/convwatch/PRNCompare.java805
-rw-r--r--qadevOOo/runner/convwatch/PerformanceContainer.java250
-rw-r--r--qadevOOo/runner/convwatch/PixelCounter.java206
-rw-r--r--qadevOOo/runner/convwatch/PropertyName.java67
-rw-r--r--qadevOOo/runner/convwatch/ReferenceBuilder.java304
-rwxr-xr-xqadevOOo/runner/convwatch/ReportDesignerTest.java694
-rw-r--r--qadevOOo/runner/convwatch/SimpleFileSemaphore.java189
-rw-r--r--qadevOOo/runner/convwatch/StatusHelper.java108
-rw-r--r--qadevOOo/runner/convwatch/StringHelper.java103
-rwxr-xr-xqadevOOo/runner/convwatch/TimeHelper.java44
-rw-r--r--qadevOOo/runner/convwatch/TriState.java76
-rw-r--r--qadevOOo/runner/convwatch/ValueNotFoundException.java36
-rw-r--r--qadevOOo/runner/convwatch/makefile.mk86
-rw-r--r--qadevOOo/runner/graphical/BuildID.java226
-rw-r--r--qadevOOo/runner/graphical/DateHelper.java58
-rw-r--r--qadevOOo/runner/graphical/DirectoryHelper.java160
-rw-r--r--qadevOOo/runner/graphical/EnhancedComplexTestCase.java519
-rw-r--r--qadevOOo/runner/graphical/FileHelper.java767
-rw-r--r--qadevOOo/runner/graphical/GlobalLogWriter.java72
-rw-r--r--qadevOOo/runner/graphical/GraphicalComparator.java31
-rw-r--r--qadevOOo/runner/graphical/HTMLResult.java212
-rw-r--r--qadevOOo/runner/graphical/IDocument.java46
-rw-r--r--qadevOOo/runner/graphical/IOffice.java63
-rw-r--r--qadevOOo/runner/graphical/ImageHelper.java120
-rw-r--r--qadevOOo/runner/graphical/IniFile.java693
-rw-r--r--qadevOOo/runner/graphical/JPEGComparator.java816
-rw-r--r--qadevOOo/runner/graphical/JPEGCreator.java475
-rw-r--r--qadevOOo/runner/graphical/JPEGEvaluator.java163
-rw-r--r--qadevOOo/runner/graphical/MSOfficePostscriptCreator.java1004
-rw-r--r--qadevOOo/runner/graphical/Office.java170
-rw-r--r--qadevOOo/runner/graphical/OfficeException.java45
-rw-r--r--qadevOOo/runner/graphical/OpenOfficeDatabaseReportExtractor.java560
-rw-r--r--qadevOOo/runner/graphical/OpenOfficePostscriptCreator.java1427
-rw-r--r--qadevOOo/runner/graphical/ParameterHelper.java433
-rw-r--r--qadevOOo/runner/graphical/PerformanceContainer.java271
-rw-r--r--qadevOOo/runner/graphical/PixelCounter.java247
-rw-r--r--qadevOOo/runner/graphical/PostscriptCreator.java137
-rw-r--r--qadevOOo/runner/graphical/PropertyName.java73
-rw-r--r--qadevOOo/runner/graphical/TimeHelper.java91
-rw-r--r--qadevOOo/runner/graphical/Tolerance.java23
-rw-r--r--qadevOOo/runner/graphical/WrongEnvironmentException.java42
-rw-r--r--qadevOOo/runner/graphical/WrongSuffixException.java42
-rw-r--r--qadevOOo/runner/graphical/makefile.mk76
-rw-r--r--qadevOOo/runner/helper/APIDescGetter.java985
-rw-r--r--qadevOOo/runner/helper/AppProvider.java55
-rw-r--r--qadevOOo/runner/helper/BuildEnvTools.java195
-rw-r--r--qadevOOo/runner/helper/CfgParser.java192
-rw-r--r--qadevOOo/runner/helper/ClParser.java193
-rw-r--r--qadevOOo/runner/helper/ComplexDescGetter.java194
-rw-r--r--qadevOOo/runner/helper/ConfigHelper.java348
-rw-r--r--qadevOOo/runner/helper/ConfigurationRead.java141
-rw-r--r--qadevOOo/runner/helper/ContextMenuInterceptor.java140
-rw-r--r--qadevOOo/runner/helper/CwsDataExchangeImpl.java157
-rw-r--r--qadevOOo/runner/helper/FileTools.java160
-rw-r--r--qadevOOo/runner/helper/InetTools.java88
-rw-r--r--qadevOOo/runner/helper/LoggingThread.java96
-rw-r--r--qadevOOo/runner/helper/OSHelper.java88
-rw-r--r--qadevOOo/runner/helper/ObjectInspectorModelImpl.java145
-rw-r--r--qadevOOo/runner/helper/OfficeProvider.java833
-rw-r--r--qadevOOo/runner/helper/OfficeWatcher.java132
-rw-r--r--qadevOOo/runner/helper/ParameterNotFoundException.java39
-rw-r--r--qadevOOo/runner/helper/ProcessHandler.java824
-rw-r--r--qadevOOo/runner/helper/PropertyHandlerFactroy.java49
-rw-r--r--qadevOOo/runner/helper/PropertyHandlerImpl.java258
-rwxr-xr-xqadevOOo/runner/helper/PropertyHelper.java81
-rw-r--r--qadevOOo/runner/helper/SimpleMailSender.java171
-rw-r--r--qadevOOo/runner/helper/StreamSimulator.java533
-rw-r--r--qadevOOo/runner/helper/StringHelper.java125
-rw-r--r--qadevOOo/runner/helper/URLHelper.java292
-rw-r--r--qadevOOo/runner/helper/UnoProvider.java165
-rw-r--r--qadevOOo/runner/helper/WindowListener.java78
-rw-r--r--qadevOOo/runner/helper/makefile.mk65
-rw-r--r--qadevOOo/runner/lib/DynamicClassLoader.java94
-rw-r--r--qadevOOo/runner/lib/ExceptionStatus.java48
-rw-r--r--qadevOOo/runner/lib/MultiMethodTest.java511
-rw-r--r--qadevOOo/runner/lib/MultiPropertyTest.java608
-rw-r--r--qadevOOo/runner/lib/Parameters.java233
-rw-r--r--qadevOOo/runner/lib/SimpleStatus.java149
-rw-r--r--qadevOOo/runner/lib/Status.java173
-rw-r--r--qadevOOo/runner/lib/StatusException.java81
-rw-r--r--qadevOOo/runner/lib/TestCase.java182
-rw-r--r--qadevOOo/runner/lib/TestEnvironment.java153
-rw-r--r--qadevOOo/runner/lib/TestParameters.java343
-rw-r--r--qadevOOo/runner/lib/TestResult.java106
-rw-r--r--qadevOOo/runner/lib/makefile.mk58
-rw-r--r--qadevOOo/runner/makefile.mk60
-rw-r--r--qadevOOo/runner/manifest3
-rw-r--r--qadevOOo/runner/org/openoffice/Runner.java261
-rw-r--r--qadevOOo/runner/org/openoffice/RunnerService.java397
-rw-r--r--qadevOOo/runner/org/openoffice/makefile.mk46
-rw-r--r--qadevOOo/runner/share/ComplexTest.java39
-rw-r--r--qadevOOo/runner/share/CwsDataExchange.java51
-rw-r--r--qadevOOo/runner/share/DescEntry.java97
-rw-r--r--qadevOOo/runner/share/DescGetter.java197
-rw-r--r--qadevOOo/runner/share/LogWriter.java68
-rw-r--r--qadevOOo/runner/share/Watcher.java42
-rw-r--r--qadevOOo/runner/share/makefile.mk52
-rw-r--r--qadevOOo/runner/stats/ComplexDataBaseOutProducer.java181
-rw-r--r--qadevOOo/runner/stats/DataBaseOutProducer.java207
-rw-r--r--qadevOOo/runner/stats/FatDataBaseOutProducer.java147
-rw-r--r--qadevOOo/runner/stats/FileLogWriter.java141
-rw-r--r--qadevOOo/runner/stats/InternalLogWriter.java124
-rw-r--r--qadevOOo/runner/stats/OutProducerFactory.java137
-rw-r--r--qadevOOo/runner/stats/SQLExecution.java337
-rw-r--r--qadevOOo/runner/stats/SimpleFileOutProducer.java114
-rw-r--r--qadevOOo/runner/stats/SimpleLogWriter.java111
-rw-r--r--qadevOOo/runner/stats/SimpleOutProducer.java77
-rw-r--r--qadevOOo/runner/stats/Summarizer.java114
-rw-r--r--qadevOOo/runner/stats/makefile.mk59
-rw-r--r--qadevOOo/runner/util/AccessibilityTools.java461
-rw-r--r--qadevOOo/runner/util/BasicMacroTools.java261
-rw-r--r--qadevOOo/runner/util/BookmarkDsc.java84
-rw-r--r--qadevOOo/runner/util/CalcTools.java160
-rw-r--r--qadevOOo/runner/util/ControlDsc.java80
-rw-r--r--qadevOOo/runner/util/DBTools.java824
-rw-r--r--qadevOOo/runner/util/DefaultDsc.java81
-rw-r--r--qadevOOo/runner/util/DesktopTools.java515
-rw-r--r--qadevOOo/runner/util/DrawTools.java162
-rw-r--r--qadevOOo/runner/util/DynamicClassLoader.java123
-rw-r--r--qadevOOo/runner/util/FootnoteDsc.java84
-rw-r--r--qadevOOo/runner/util/FormTools.java349
-rw-r--r--qadevOOo/runner/util/FrameDsc.java126
-rw-r--r--qadevOOo/runner/util/InstCreator.java122
-rw-r--r--qadevOOo/runner/util/InstDescr.java53
-rw-r--r--qadevOOo/runner/util/ParagraphDsc.java85
-rw-r--r--qadevOOo/runner/util/PropertyName.java169
-rw-r--r--qadevOOo/runner/util/ReferenceMarkDsc.java84
-rw-r--r--qadevOOo/runner/util/RegistryTools.java370
-rw-r--r--qadevOOo/runner/util/SOfficeFactory.java629
-rw-r--r--qadevOOo/runner/util/ShapeDsc.java101
-rw-r--r--qadevOOo/runner/util/StyleFamilyDsc.java80
-rw-r--r--qadevOOo/runner/util/SysUtils.java153
-rw-r--r--qadevOOo/runner/util/TableDsc.java96
-rw-r--r--qadevOOo/runner/util/TextSectionDsc.java84
-rw-r--r--qadevOOo/runner/util/UITools.java814
-rw-r--r--qadevOOo/runner/util/ValueChanger.java994
-rw-r--r--qadevOOo/runner/util/ValueComparer.java266
-rw-r--r--qadevOOo/runner/util/WaitUnreachable.java127
-rw-r--r--qadevOOo/runner/util/WriterTools.java121
-rw-r--r--qadevOOo/runner/util/XInstCreator.java38
-rw-r--r--qadevOOo/runner/util/XLayerHandlerImpl.java119
-rw-r--r--qadevOOo/runner/util/XLayerImpl.java45
-rw-r--r--qadevOOo/runner/util/XMLTools.java939
-rw-r--r--qadevOOo/runner/util/XSchemaHandlerImpl.java137
-rw-r--r--qadevOOo/runner/util/compare/DocComparator.java52
-rw-r--r--qadevOOo/runner/util/compare/DocComparatorFactory.java64
-rw-r--r--qadevOOo/runner/util/compare/GraphicalComparator.java260
-rw-r--r--qadevOOo/runner/util/compare/PDFComparator.java62
-rw-r--r--qadevOOo/runner/util/compare/XMLComparator.java58
-rw-r--r--qadevOOo/runner/util/compare/makefile.mk54
-rw-r--r--qadevOOo/runner/util/db/DataSource.java163
-rw-r--r--qadevOOo/runner/util/db/DataSourceDescriptor.java74
-rw-r--r--qadevOOo/runner/util/db/DatabaseDocument.java90
-rw-r--r--qadevOOo/runner/util/dbg.java347
-rw-r--r--qadevOOo/runner/util/makefile.mk87
-rw-r--r--qadevOOo/runner/util/utils.java1020
-rw-r--r--qadevOOo/testdocs/10test.csv19
-rw-r--r--qadevOOo/testdocs/BasicBridge.sxwbin0 -> 27011 bytes
-rw-r--r--qadevOOo/testdocs/BasicDB/DBTest.dbfbin0 -> 1575 bytes
-rw-r--r--qadevOOo/testdocs/Calc_Link.sxcbin0 -> 5410 bytes
-rw-r--r--qadevOOo/testdocs/ChXChartObject.sdsbin0 -> 52736 bytes
-rw-r--r--qadevOOo/testdocs/FiexdTextDialog.sxwbin0 -> 8259 bytes
-rw-r--r--qadevOOo/testdocs/FixedTextDialog.sxwbin0 -> 8259 bytes
-rw-r--r--qadevOOo/testdocs/Iterator.sxwbin0 -> 5627 bytes
-rw-r--r--qadevOOo/testdocs/JAJPIterator.sxwbin0 -> 5853 bytes
-rw-r--r--qadevOOo/testdocs/MailMerge.sxwbin0 -> 5391 bytes
-rw-r--r--qadevOOo/testdocs/ORowSet.dbfbin0 -> 39449 bytes
-rw-r--r--qadevOOo/testdocs/RunnerStart.sxwbin0 -> 8224 bytes
-rw-r--r--qadevOOo/testdocs/ScAnnotationShapeObj.sxcbin0 -> 6542 bytes
-rw-r--r--qadevOOo/testdocs/ScDDELinksObj.sdcbin0 -> 17408 bytes
-rw-r--r--qadevOOo/testdocs/ScSheetLinksObj.sdcbin0 -> 16896 bytes
-rw-r--r--qadevOOo/testdocs/SfxStandaloneDocInfoObject.sdwbin0 -> 8192 bytes
-rw-r--r--qadevOOo/testdocs/SvxShape.sdabin0 -> 39424 bytes
-rw-r--r--qadevOOo/testdocs/SvxShape.sxdbin0 -> 6344 bytes
-rw-r--r--qadevOOo/testdocs/SwOLE.sxwbin0 -> 8603 bytes
-rw-r--r--qadevOOo/testdocs/SwXTextEmbeddedObject.sdwbin0 -> 180736 bytes
-rw-r--r--qadevOOo/testdocs/SwXTextEmbeddedObject.sxwbin0 -> 24763 bytes
-rw-r--r--qadevOOo/testdocs/SwXTextSection.sdwbin0 -> 8704 bytes
-rw-r--r--qadevOOo/testdocs/TestDB/testDB.dbfbin0 -> 949 bytes
-rw-r--r--qadevOOo/testdocs/TestDB/testDB.dbtbin0 -> 512 bytes
-rw-r--r--qadevOOo/testdocs/TransparencyCalcChart.sxcbin0 -> 8755 bytes
-rw-r--r--qadevOOo/testdocs/TransparencyChart.sxsbin0 -> 10846 bytes
-rw-r--r--qadevOOo/testdocs/TwoShapes.sxibin0 -> 7283 bytes
-rw-r--r--qadevOOo/testdocs/Writer_link.sxwbin0 -> 5188 bytes
-rw-r--r--qadevOOo/testdocs/XDocumentInsertable.sxwbin0 -> 4914 bytes
-rw-r--r--qadevOOo/testdocs/XPageCursor.sdwbin0 -> 16896 bytes
-rw-r--r--qadevOOo/testdocs/XSimpleFileAccess/XSimpleFileAccess.txt1
-rw-r--r--qadevOOo/testdocs/XSimpleFileAccess/XSimpleFileAccess2.txt1
-rw-r--r--qadevOOo/testdocs/XSimpleFileAccessBASIC/File1.txt1
-rw-r--r--qadevOOo/testdocs/XSimpleFileAccessBASIC/File2.txt1
-rw-r--r--qadevOOo/testdocs/XSimpleRegistry.rdbbin0 -> 8192 bytes
-rw-r--r--qadevOOo/testdocs/XTypeDetection.sxwbin0 -> 4995 bytes
-rw-r--r--qadevOOo/testdocs/ZHCNIterator.sxwbin0 -> 5883 bytes
-rw-r--r--qadevOOo/testdocs/ZHTWIterator.sxwbin0 -> 6247 bytes
-rw-r--r--qadevOOo/testdocs/_BasicBridge.sxwbin0 -> 25191 bytes
-rw-r--r--qadevOOo/testdocs/backend/org/openoffice/JavaSystemBackend.java259
-rw-r--r--qadevOOo/testdocs/backend/org/openoffice/makefile.mk64
-rw-r--r--qadevOOo/testdocs/backend/org/openoffice/manifest1
-rw-r--r--qadevOOo/testdocs/basDialog.odtbin0 -> 9950 bytes
-rw-r--r--qadevOOo/testdocs/calcshapes.sxcbin0 -> 13030 bytes
-rw-r--r--qadevOOo/testdocs/chinese.sxwbin0 -> 5757 bytes
-rw-r--r--qadevOOo/testdocs/crazy-blue.jpgbin0 -> 4451 bytes
-rwxr-xr-xqadevOOo/testdocs/delete.cfgbin0 -> 2799 bytes
-rw-r--r--qadevOOo/testdocs/emptyChart.sdsbin0 -> 44544 bytes
-rw-r--r--qadevOOo/testdocs/filter.sxwbin0 -> 14359 bytes
-rw-r--r--qadevOOo/testdocs/ok.wavbin0 -> 4454 bytes
-rw-r--r--qadevOOo/testdocs/poliball.gifbin0 -> 945 bytes
-rw-r--r--qadevOOo/testdocs/qadevlibs/JobExecutor.jarbin0 -> 3912 bytes
-rw-r--r--qadevOOo/testdocs/qadevlibs/MyPersistObjectImpl.jarbin0 -> 4346 bytes
-rw-r--r--qadevOOo/testdocs/qadevlibs/source/com/sun/star/cmp/MyPersistObject.java356
-rw-r--r--qadevOOo/testdocs/qadevlibs/source/com/sun/star/cmp/makefile.mk64
-rw-r--r--qadevOOo/testdocs/qadevlibs/source/com/sun/star/cmp/manifest1
-rw-r--r--qadevOOo/testdocs/qadevlibs/source/test/Job.java128
-rw-r--r--qadevOOo/testdocs/qadevlibs/source/test/makefile.mk64
-rw-r--r--qadevOOo/testdocs/qadevlibs/source/test/manifest2
-rw-r--r--qadevOOo/testdocs/report.stwbin0 -> 11186 bytes
-rw-r--r--qadevOOo/testdocs/report2.stwbin0 -> 11000 bytes
-rw-r--r--qadevOOo/testdocs/sForm.sxwbin0 -> 5568 bytes
-rw-r--r--qadevOOo/testdocs/setexpression.sxwbin0 -> 6364 bytes
-rw-r--r--qadevOOo/testdocs/small_submit_test.sdwbin0 -> 18944 bytes
-rw-r--r--qadevOOo/testdocs/space-metal.jpgbin0 -> 4313 bytes
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessible/accessibility_XAccessible.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessible/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleAction/accessibility_XAccessibleAction.xba99
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleAction/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleComponent/accessibility_XAccessibleComponent.xba247
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleComponent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleContext/accessibility_XAccessibleContext.xba156
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleContext/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleEditableText/accessibility_XAccessibleEditableText.xba181
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleEditableText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleEventBroadcaster/accessibility_XAccessibleEventBroadcaster.xba149
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleEventBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleExtendedComponent/accessibility_XAccessibleExtendedComponent.xba86
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleExtendedComponent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleImage/accessibility_XAccessibleImage.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleImage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleSelection/accessibility_XAccessibleSelection.xba259
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleSelection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleTable/accessibility_XAccessibleTable.xba291
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleTable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleText/accessibility_XAccessibleText.xba197
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleValue/accessibility_XAccessibleValue.xba119
-rw-r--r--qadevOOo/tests/basic/ifc/accessibility/XAccessibleValue/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlButtonModel/awt_UnoControlButtonModel.xba84
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlButtonModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlCheckBoxModel/awt_UnoControlCheckBoxModel.xba80
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlCheckBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlComboBoxModel/awt_UnoControlComboBoxModel.xba95
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlComboBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlContainerModel/awt_UnoControlContainerModel.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlContainerModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlCurrencyFieldModel/awt_UnoControlCurrencyFieldModel.xba134
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlCurrencyFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlDateFieldModel/awt_UnoControlDateFieldModel.xba93
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlDateFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlDialogElement/awt_UnoControlDialogElement.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlDialogElement/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlDialogModel/awt_UnoControlDialogModel.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlDialogModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlEditModel/awt_UnoControlEditModel.xba96
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlEditModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFileControlModel/awt_UnoControlFileControlModel.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFileControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFixedLineModel/awt_UnoControlFixedLineModel.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFixedLineModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFixedTextModel/awt_UnoControlFixedTextModel.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFixedTextModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFormattedFieldModel/awt_UnoControlFormattedFieldModel.xba141
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlFormattedFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlGroupBoxModel/awt_UnoControlGroupBoxModel.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlGroupBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlImageControlModel/awt_UnoControlImageControlModel.xba72
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlImageControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlListBoxModel/awt_UnoControlListBoxModel.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlListBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlModel/awt_UnoControlModel.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlNumericFieldModel/awt_UnoControlNumericFieldModel.xba132
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlNumericFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlPatternFieldModel/awt_UnoControlPatternFieldModel.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlPatternFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlProgressBarModel/awt_UnoControlProgressBarModel.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlProgressBarModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlRadioButtonModel/awt_UnoControlRadioButtonModel.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlRadioButtonModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlScrollBarModel/awt_UnoControlScrollBarModel.xba76
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlScrollBarModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlTimeFieldModel/awt_UnoControlTimeFieldModel.xba91
-rw-r--r--qadevOOo/tests/basic/ifc/awt/UnoControlTimeFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XButton/awt_XButton.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XCheckBox/awt_XCheckBox.xba107
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XCheckBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XComboBox/awt_XComboBox.xba146
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XComboBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XControl/awt_XControl.xba123
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XControlContainer/awt_XControlContainer.xba104
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XControlContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XCurrencyField/awt_XCurrencyField.xba144
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XCurrencyField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XDataTransferProviderAccess/awt_XDataTransferProviderAccess.xba117
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XDataTransferProviderAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XDateField/awt_XDateField.xba123
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XDateField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XDialog/awt_XDialog.xba73
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XDialog/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XFixedText/awt_XFixedText.xba87
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XFixedText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XItemListener/awt_XItemListener.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XItemListener/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XLayoutConstrains/awt_XLayoutConstrains.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XLayoutConstrains/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XListBox/awt_XListBox.xba239
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XListBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XNumericField/awt_XNumericField.xba157
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XNumericField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XPatternField/awt_XPatternField.xba99
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XPatternField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XRadioButton/awt_XRadioButton.xba98
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XRadioButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XSpinField/awt_XSpinField.xba126
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XSpinField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTabController/awt_XTabController.xba116
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTabController/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTabControllerModel/awt_XTabControllerModel.xba117
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTabControllerModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTextComponent/awt_XTextComponent.xba191
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTextComponent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTextLayoutConstrains/awt_XTextLayoutConstrains.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTextLayoutConstrains/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTextListener/awt_XTextListener.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTextListener/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTimeField/awt_XTimeField.xba145
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTimeField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XToolkit/awt_XToolkit.xba168
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XToolkit/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTopWindow/awt_XTopWindow.xba138
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XTopWindow/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XView/awt_XView.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XWindow/awt_XWindow.xba482
-rw-r--r--qadevOOo/tests/basic/ifc/awt/XWindow/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XExactName/beans_XExactName.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XExactName/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XFastPropertySet/beans_XFastPropertySet.xba122
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XFastPropertySet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XIntrospection/beans_XIntrospection.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XIntrospection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XMultiPropertySet/beans_XMultiPropertySet.xba261
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XMultiPropertySet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XMultiPropertyStates/beans_XMultiPropertyStates.xba183
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XMultiPropertyStates/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XProperty/beans_XProperty.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XProperty/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XPropertySet/beans_XPropertySet.xba357
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XPropertySet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XPropertySetInfo/beans_XPropertySetInfo.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XPropertySetInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XPropertyState/beans_XPropertyState.xba178
-rw-r--r--qadevOOo/tests/basic/ifc/beans/XPropertyState/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/bridge/XBridge/bridge_XBridge.xba88
-rw-r--r--qadevOOo/tests/basic/ifc/bridge/XBridge/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/bridge/XBridgeFactory/bridge_XBridgeFactory.xba123
-rw-r--r--qadevOOo/tests/basic/ifc/bridge/XBridgeFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/bridge/XUnoUrlResolver/bridge_XUnoUrlResolver.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/bridge/XUnoUrlResolver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/BarDiagram/chart_BarDiagram.xba101
-rw-r--r--qadevOOo/tests/basic/ifc/chart/BarDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/Chart3DBarProperties/chart_Chart3DBarProperties.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/chart/Chart3DBarProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxis/chart_ChartAxis.xba105
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxis/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxisXSupplier/chart_ChartAxisXSupplier.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxisXSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxisYSupplier/chart_ChartAxisYSupplier.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxisYSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxisZSupplier/chart_ChartAxisZSupplier.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartAxisZSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartDataPointProperties/chart_ChartDataPointProperties.xba72
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartDataPointProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartDataRowProperties/chart_ChartDataRowProperties.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartDataRowProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartDocument/chart_ChartDocument.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartLegend/chart_ChartLegend.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartLegend/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartStatistics/chart_ChartStatistics.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartStatistics/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTableAddressSupplier/chart_ChartTableAddressSupplier.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTableAddressSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTitle/chart_ChartTitle.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTitle/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTwoAxisXSupplier/chart_ChartTwoAxisXSupplier.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTwoAxisXSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTwoAxisYSupplier/chart_ChartTwoAxisYSupplier.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/chart/ChartTwoAxisYSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/Diagram/chart_Diagram.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/chart/Diagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/Dim3DDiagram/chart_Dim3DDiagram.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/chart/Dim3DDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/LineDiagram/chart_LineDiagram.xba107
-rw-r--r--qadevOOo/tests/basic/ifc/chart/LineDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/StackableDiagram/chart_StackableDiagram.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/chart/StackableDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/StockDiagram/chart_StockDiagram.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/chart/StockDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/X3DDisplay/chart_X3DDisplay.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/chart/X3DDisplay/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XAxisXSupplier/chart_XAxisXSupplier.xba69
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XAxisXSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XAxisYSupplier/chart_XAxisYSupplier.xba69
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XAxisYSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XAxisZSupplier/chart_XAxisZSupplier.xba69
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XAxisZSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XChartData/chart_XChartData.xba130
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XChartData/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XChartDataArray/chart_XChartDataArray.xba179
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XChartDataArray/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XChartDocument/chart_XChartDocument.xba129
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XChartDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XDiagram/chart_XDiagram.xba73
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XStatisticDisplay/chart_XStatisticDisplay.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XStatisticDisplay/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XTwoAxisXSupplier/chart_XTwoAxisXSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XTwoAxisXSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XTwoAxisYSupplier/chart_XTwoAxisYSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/chart/XTwoAxisYSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/connection/XAcceptor/connection_XAcceptor.xba132
-rw-r--r--qadevOOo/tests/basic/ifc/connection/XAcceptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/connection/XConnector/connection_XConnector.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/connection/XConnector/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XChild/container_XChild.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/container/XChild/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XContainer/container_XContainer.xba228
-rw-r--r--qadevOOo/tests/basic/ifc/container/XContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XContentEnumerationAccess/container_XContentEnumerationAccess.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/container/XContentEnumerationAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XElementAccess/container_XElementAccess.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/container/XElementAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XEnumeration/container_XEnumeration.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/container/XEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XEnumerationAccess/container_XEnumerationAccess.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/container/XEnumerationAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XHierarchicalName/container_XHierarchicalName.xba97
-rw-r--r--qadevOOo/tests/basic/ifc/container/XHierarchicalName/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XHierarchicalNameAccess/container_XHierarchicalNameAccess.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/container/XHierarchicalNameAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XIndexAccess/container_XIndexAccess.xba73
-rw-r--r--qadevOOo/tests/basic/ifc/container/XIndexAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XIndexContainer/container_XIndexContainer.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/container/XIndexContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XIndexReplace/container_XIndexReplace.xba84
-rw-r--r--qadevOOo/tests/basic/ifc/container/XIndexReplace/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNameAccess/container_XNameAccess.xba81
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNameAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNameContainer/container_XNameContainer.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNameContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNameReplace/container_XNameReplace.xba116
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNameReplace/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNamed/container_XNamed.xba111
-rw-r--r--qadevOOo/tests/basic/ifc/container/XNamed/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/container/XSet/container_XSet.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/container/XSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/XDataFormatTranslator/datatransfer_XDataFormatTranslator.xba95
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/XDataFormatTranslator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/XMimeContentTypeFactory/datatransfer_XMimeContentTypeFactory.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/XMimeContentTypeFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XClipboard/datatransfer_clipboard_XClipboard.xba105
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XClipboard/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XClipboardEx/datatransfer_clipboard_XClipboardEx.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XClipboardEx/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XClipboardNotifier/datatransfer_clipboard_XClipboardNotifier.xba133
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XClipboardNotifier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XFlushableClipboard/datatransfer_clipboard_XFlushableClipboard.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/datatransfer/clipboard/XFlushableClipboard/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/DocumentInfo/document_DocumentInfo.xba206
-rw-r--r--qadevOOo/tests/basic/ifc/document/DocumentInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/OfficeDocument/document_OfficeDocument.xba55
-rw-r--r--qadevOOo/tests/basic/ifc/document/OfficeDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XActionLockable/document_XActionLockable.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/document/XActionLockable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XDocumentInfo/document_XDocumentInfo.xba94
-rw-r--r--qadevOOo/tests/basic/ifc/document/XDocumentInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XDocumentInfoSupplier/document_XDocumentInfoSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/document/XDocumentInfoSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XDocumentInsertable/document_XDocumentInsertable.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/document/XDocumentInsertable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XEmbeddedObjectSupplier/document_XEmbeddedObjectSupplier.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/document/XEmbeddedObjectSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XEventsSupplier/document_XEventsSupplier.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/document/XEventsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XExporter/document_XExporter.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/document/XExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XFilter/document_XFilter.xba89
-rw-r--r--qadevOOo/tests/basic/ifc/document/XFilter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XImporter/document_XImporter.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/document/XImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XLinkTargetSupplier/document_XLinkTargetSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/document/XLinkTargetSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XMimeTypeInfo/document_XMimeTypeInfo.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/document/XMimeTypeInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XStandaloneDocumentInfo/document_XStandaloneDocumentInfo.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/document/XStandaloneDocumentInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XTypeDetection/document_XTypeDetection.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/document/XTypeDetection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/document/XViewDataSupplier/document_XViewDataSupplier.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/document/XViewDataSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/ConnectorProperties/drawing_ConnectorProperties.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/ConnectorProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/ConnectorShape/drawing_ConnectorShape.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/ConnectorShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/DrawingDocument/drawing_DrawingDocument.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/DrawingDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/DrawingDocumentDrawView/drawing_DrawingDocumentDrawView.xba73
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/DrawingDocumentDrawView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/EllipseShape/drawing_EllipseShape.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/EllipseShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/FillProperties/drawing_FillProperties.xba121
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/FillProperties/drawing__FillProperties.xba121
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/FillProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/GenericDrawPage/drawing_GenericDrawPage.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/GenericDrawPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/GraphicObjectShape/drawing_GraphicObjectShape.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/GraphicObjectShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/Layer/drawing_Layer.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/Layer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/LineProperties/drawing_LineProperties.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/LineProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/MeasureProperties/drawing_MeasureProperties.xba120
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/MeasureProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/MeasureShape/drawing_MeasureShape.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/MeasureShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/PolyPolygonBezierDescriptor/drawing_PolyPolygonBezierDescriptor.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/PolyPolygonBezierDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/PolyPolygonDescriptor/drawing_PolyPolygonDescriptor.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/PolyPolygonDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/RotationDescriptor/drawing_RotationDescriptor.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/RotationDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/ShadowProperties/drawing_ShadowProperties.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/ShadowProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/Shape/drawing_Shape.xba93
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/Shape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/TextProperties/drawing_TextProperties.xba104
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/TextProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/TextShape/drawing_TextShape.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/TextShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XControlShape/drawing_XControlShape.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XControlShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageDuplicator/drawing_XDrawPageDuplicator.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageDuplicator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageExpander/drawing_XDrawPageExpander.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageExpander/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageSummarizer/drawing_XDrawPageSummarizer.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageSummarizer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageSupplier/drawing_XDrawPageSupplier.xba57
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPageSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPages/drawing_XDrawPages.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPages/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPagesSupplier/drawing_XDrawPagesSupplier.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawPagesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawView/drawing_XDrawView.xba89
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XDrawView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XGluePointsSupplier/drawing_XGluePointsSupplier.xba69
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XGluePointsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XLayerManager/drawing_XLayerManager.xba94
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XLayerManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XLayerSupplier/drawing_XLayerSupplier.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XLayerSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XMasterPageTarget/drawing_XMasterPageTarget.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XMasterPageTarget/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XMasterPagesSupplier/drawing_XMasterPagesSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XMasterPagesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShape/drawing_XShape.xba133
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeBinder/drawing_XShapeBinder.xba94
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeBinder/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeCombiner/drawing_XShapeCombiner.xba86
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeCombiner/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeDescriptor/drawing_XShapeDescriptor.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeGroup/drawing_XShapeGroup.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeGroup/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeGrouper/drawing_XShapeGrouper.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapeGrouper/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapes/drawing_XShapes.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/drawing/XShapes/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/DataAwareControlModel/form_DataAwareControlModel.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/form/DataAwareControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/FormComponent/form_FormComponent.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/form/FormComponent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/FormControlModel/form_FormControlModel.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/form/FormControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XApproveActionBroadcaster/form_XApproveActionBroadcaster.xba99
-rw-r--r--qadevOOo/tests/basic/ifc/form/XApproveActionBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XBoundComponent/form_XBoundComponent.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/form/XBoundComponent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XBoundControl/form_XBoundControl.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/form/XBoundControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XChangeBroadcaster/form_XChangeBroadcaster.xba103
-rw-r--r--qadevOOo/tests/basic/ifc/form/XChangeBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XFormController/form_XFormController.xba123
-rw-r--r--qadevOOo/tests/basic/ifc/form/XFormController/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XFormsSupplier/form_XFormsSupplier.xba57
-rw-r--r--qadevOOo/tests/basic/ifc/form/XFormsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XGrid/form_XGrid.xba73
-rw-r--r--qadevOOo/tests/basic/ifc/form/XGrid/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XGridColumnFactory/form_XGridColumnFactory.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/form/XGridColumnFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XGridFieldDataSupplier/form_XGridFieldDataSupplier.xba91
-rw-r--r--qadevOOo/tests/basic/ifc/form/XGridFieldDataSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XImageProducerSupplier/form_XImageProducerSupplier.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/form/XImageProducerSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XLoadListener/form_XLoadListener.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/form/XLoadListener/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XLoadable/form_XLoadable.xba139
-rw-r--r--qadevOOo/tests/basic/ifc/form/XLoadable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XReset/form_XReset.xba116
-rw-r--r--qadevOOo/tests/basic/ifc/form/XReset/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XSubmit/form_XSubmit.xba107
-rw-r--r--qadevOOo/tests/basic/ifc/form/XSubmit/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/XUpdateBroadcaster/form_XUpdateBroadcaster.xba172
-rw-r--r--qadevOOo/tests/basic/ifc/form/XUpdateBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/CheckBox/form_component_CheckBox.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/CheckBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/ComboBox/form_component_ComboBox.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/ComboBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/CommandButton/form_component_CommandButton.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/CommandButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/CurrencyField/form_component_CurrencyField.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/CurrencyField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DataForm/form_component_DataForm.xba89
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DataForm/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseComboBox/form_component_DatabaseComboBox.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseComboBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseFormattedField/form_component_DatabaseFormattedField.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseFormattedField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseImageControl/form_component_DatabaseImageControl.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseImageControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseListBox/form_component_DatabaseListBox.xba76
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseListBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabasePatternField/form_component_DatabasePatternField.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabasePatternField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseTextField/form_component_DatabaseTextField.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DatabaseTextField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DateField/form_component_DateField.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/DateField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/FileControl/form_component_FileControl.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/FileControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/GridControl/form_component_GridControl.xba69
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/GridControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/HTMLForm/form_component_HTMLForm.xba83
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/HTMLForm/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/HiddenControl/form_component_HiddenControl.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/HiddenControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/ImageButton/form_component_ImageButton.xba72
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/ImageButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/ListBox/form_component_ListBox.xba80
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/ListBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/NumericField/form_component_NumericField.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/NumericField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/PatternField/form_component_PatternField.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/PatternField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/RadioButton/form_component_RadioButton.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/RadioButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/TextField/form_component_TextField.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/TextField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/TimeField/form_component_TimeField.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/form/component/TimeField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/formula/FormulaProperties/formula_FormulaProperties.xba170
-rw-r--r--qadevOOo/tests/basic/ifc/formula/FormulaProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/Frame/frame_Frame.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/frame/Frame/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XComponentLoader/frame_XComponentLoader.xba109
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XComponentLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XController/frame_XController.xba134
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XController/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDesktop/frame_XDesktop.xba97
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDesktop/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatch/frame_XDispatch.xba120
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatch/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchProvider/frame_XDispatchProvider.xba110
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchProviderInterception/frame_XDispatchProviderInterception.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchProviderInterception/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchRecorder/frame_XDispatchRecorder.xba154
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchRecorder/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchRecorderSupplier/frame_XDispatchRecorderSupplier.xba109
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDispatchRecorderSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDocumentTemplates/frame_XDocumentTemplates.xba191
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XDocumentTemplates/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XFrame/frame_XFrame.xba347
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XFrame/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XFrameLoader/frame_XFrameLoader.xba127
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XFrameLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XFramesSupplier/frame_XFramesSupplier.xba129
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XFramesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XModel/frame_XModel.xba145
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XStorable/frame_XStorable.xba116
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XStorable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XSynchronousFrameLoader/frame_XSynchronousFrameLoader.xba87
-rw-r--r--qadevOOo/tests/basic/ifc/frame/XSynchronousFrameLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XBreakIterator/i18n_XBreakIterator.xba408
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XBreakIterator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XCalendar/i18n_XCalendar.xba306
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XCalendar/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XCharacterClassification/i18n_XCharacterClassification.xba223
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XCharacterClassification/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XCollator/i18n_XCollator.xba133
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XCollator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XIndexEntrySupplier/i18n_XIndexEntrySupplier.xba84
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XIndexEntrySupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XLocaleData/i18n_XLocaleData.xba245
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XLocaleData/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XNumberFormatCode/i18n_XNumberFormatCode.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XNumberFormatCode/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XTransliteration/i18n_XTransliteration.xba282
-rw-r--r--qadevOOo/tests/basic/ifc/i18n/XTransliteration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XActiveDataControl/io_XActiveDataControl.xba204
-rw-r--r--qadevOOo/tests/basic/ifc/io/XActiveDataControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XActiveDataSink/io_XActiveDataSink.xba112
-rw-r--r--qadevOOo/tests/basic/ifc/io/XActiveDataSink/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XActiveDataSource/io_XActiveDataSource.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/io/XActiveDataSource/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XConnectable/io_XConnectable.xba77
-rw-r--r--qadevOOo/tests/basic/ifc/io/XConnectable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XDataInputStream/io_XDataInputStream.xba170
-rw-r--r--qadevOOo/tests/basic/ifc/io/XDataInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XDataOutputStream/io_XDataOutputStream.xba173
-rw-r--r--qadevOOo/tests/basic/ifc/io/XDataOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XInputStream/io_XInputStream.xba115
-rw-r--r--qadevOOo/tests/basic/ifc/io/XInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XMarkableStream/io_XMarkableStream.xba253
-rw-r--r--qadevOOo/tests/basic/ifc/io/XMarkableStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XObjectInputStream/io_XObjectInputStream.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/io/XObjectInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XObjectOutputStream/io_XObjectOutputStream.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/io/XObjectOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XOutputStream/io_XOutputStream.xba88
-rw-r--r--qadevOOo/tests/basic/ifc/io/XOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/io/XPersistObject/io_XPersistObject.xba130
-rw-r--r--qadevOOo/tests/basic/ifc/io/XPersistObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/java/XJavaVM/javajava_XJavaVM.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/java/XJavaVM/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/ServiceManager/lang_ServiceManager.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/lang/ServiceManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XComponent/lang_XComponent.xba112
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XComponent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XEventListener/lang_XEventListener.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XEventListener/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XInitialization/lang_XInitialization.xba86
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XInitialization/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XMultiComponentFactory/lang_XMultiComponentFactory.xba91
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XMultiComponentFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XMultiServiceFactory/lang_XMultiServiceFactory.xba99
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XMultiServiceFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XServiceDisplayName/lang_XServiceDisplayName.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XServiceDisplayName/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XServiceInfo/lang_XServiceInfo.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XServiceInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XSingleServiceFactory/lang_XSingleServiceFactory.xba106
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XSingleServiceFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XTypeProvider/lang_XTypeProvider.xba88
-rw-r--r--qadevOOo/tests/basic/ifc/lang/XTypeProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/LinguProperties/linguistic2_LinguProperties.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/LinguProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XDictionaryList/linguistic2_XDictionaryList.xba191
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XDictionaryList/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XHyphenator/linguistic2_XHyphenator.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XHyphenator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XLinguServiceEventBroadcaster/linguistic2_XLinguServiceEventBroadcaster.xba77
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XLinguServiceEventBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XLinguServiceManager/linguistic2_XLinguServiceManager.xba138
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XLinguServiceManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XSearchableDictionaryList/linguistic2_XSearchableDictionaryList.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XSearchableDictionaryList/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XSpellChecker/linguistic2_XSpellChecker.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XSpellChecker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XSupportedLocales/linguistic2_XSupportedLocales.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XSupportedLocales/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XThesaurus/linguistic2_XThesaurus.xba69
-rw-r--r--qadevOOo/tests/basic/ifc/linguistic2/XThesaurus/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/loader/XImplementationLoader/loader_XImplementationLoader.xba94
-rw-r--r--qadevOOo/tests/basic/ifc/loader/XImplementationLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/OutlineView/presentation_OutlineView.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/OutlineView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/Presentation/presentation_Presentation.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/Presentation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/PresentationView/presentation_PresentationView.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/PresentationView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/PreviewView/presentation_PreviewView.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/PreviewView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/XCustomPresentationSupplier/presentation_XCustomPresentationSupplier.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/XCustomPresentationSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/XPresentation/presentation_XPresentation.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/XPresentation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/XPresentationSupplier/presentation_XPresentationSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/presentation/XPresentationSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/reflection/XIdlReflection/reflection_XIdlReflection.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/reflection/XIdlReflection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/reflection/XProxyFactory/reflection_XProxyFactory.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/reflection/XProxyFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/registry/XImplementationRegistration/registry_XImplementationRegistration.xba168
-rw-r--r--qadevOOo/tests/basic/ifc/registry/XImplementationRegistration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/registry/XSimpleRegistry/registry_XSimpleRegistry.xba132
-rw-r--r--qadevOOo/tests/basic/ifc/registry/XSimpleRegistry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/script/XEventAttacherManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/script/XEventAttacherManager/script_XEventAttacherManager.xba160
-rw-r--r--qadevOOo/tests/basic/ifc/script/XInvocationAdapterFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/script/XInvocationAdapterFactory/script_XInvocationAdapterFactory.xba81
-rw-r--r--qadevOOo/tests/basic/ifc/script/XInvocationAdapterFactory2/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/script/XInvocationAdapterFactory2/script_XInvocationAdapterFactory2.xba80
-rw-r--r--qadevOOo/tests/basic/ifc/script/XTypeConverter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/script/XTypeConverter/script_XTypeConverter.xba109
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/DataAccessDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/DataAccessDescriptor/sdb_DataAccessDescriptor.xba81
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/DataSource/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/DataSource/sdb_DataSource.xba111
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/DatasourceAdministrationDialog/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/DatasourceAdministrationDialog/sdb_DatasourceAdministrationDialog.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/ErrorMessageDialog/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/ErrorMessageDialog/sdb_ErrorMessageDialog.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/QueryDefinition/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/QueryDefinition/sdb_QueryDefinition.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/RowSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/RowSet/sdb_RowSet.xba100
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XBookmarksSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XBookmarksSupplier/sdb_XBookmarksSupplier.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XCompletedConnection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XCompletedConnection/sdb_XCompletedConnection.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XQueryDefinitionsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XQueryDefinitionsSupplier/sdb_XQueryDefinitionsSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XResultSetAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XResultSetAccess/sdb_XResultSetAccess.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XRowSetApproveBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdb/XRowSetApproveBroadcaster/sdb_XRowSetApproveBroadcaster.xba214
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/ResultSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/ResultSet/sdbc_ResultSet.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/RowSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/RowSet/sdbc_RowSet.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XCloseable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XCloseable/sdbc_XCloseable.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XColumnLocate/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XColumnLocate/sdbc_XColumnLocate.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XDataSource/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XDataSource/sdbc_XDataSource.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XDriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XDriver/sdbc_XDriver.xba104
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XDriverManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XDriverManager/sdbc_XDriverManager.xba86
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XIsolatedConnection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XIsolatedConnection/sdbc_XIsolatedConnection.xba76
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XParameters/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XParameters/sdbc_XParameters.xba211
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XResultSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XResultSet/sdbc_XResultSet.xba311
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XResultSetMetaDataSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XResultSetMetaDataSupplier/sdbc_XResultSetMetaDataSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XResultSetUpdate/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XResultSetUpdate/sdbc_XResultSetUpdate.xba138
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XRow/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XRow/sdbc_XRow.xba317
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XRowSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XRowSet/sdbc_XRowSet.xba107
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XRowUpdate/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XRowUpdate/sdbc_XRowUpdate.xba514
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XWarningsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbc/XWarningsSupplier/sdbc_XWarningsSupplier.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/ResultSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/ResultSet/sdbcx_ResultSet.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XColumnsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XColumnsSupplier/sdbcx_XColumnsSupplier.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XDataDefinitionSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XDataDefinitionSupplier/sdbcx_XDataDefinitionSupplier.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XDeleteRows/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XDeleteRows/sdbcx_XDeleteRows.xba84
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XRowLocate/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sdbcx/XRowLocate/sdbcx_XRowLocate.xba128
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/CellAreaLink/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/CellAreaLink/sheet_CellAreaLink.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/DataPilotField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/DataPilotField/sheet_DataPilotField.xba57
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/DatabaseRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/DatabaseRange/sheet_DatabaseRange.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/GlobalSheetSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/GlobalSheetSettings/sheet_GlobalSheetSettings.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetCell/sheet_SheetCell.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetCellRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetCellRange/sheet_SheetCellRange.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetCellRanges/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetCellRanges/sheet_SheetCellRanges.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetFilterDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetFilterDescriptor/sheet_SheetFilterDescriptor.xba72
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetLink/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SheetLink/sheet_SheetLink.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/Spreadsheet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/Spreadsheet/sheet_Spreadsheet.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SpreadsheetDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SpreadsheetDocument/sheet_SpreadsheetDocument.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SpreadsheetDocumentSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SpreadsheetDocumentSettings/sheet_SpreadsheetDocumentSettings.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SpreadsheetViewSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SpreadsheetViewSettings/sheet_SpreadsheetViewSettings.xba96
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SubTotalDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/SubTotalDescriptor/sheet_SubTotalDescriptor.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/TableAutoFormat/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/TableAutoFormat/sheet_TableAutoFormat.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/TableAutoFormatField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/TableAutoFormatField/sheet_TableAutoFormatField.xba163
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/TableValidation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/TableValidation/sheet_TableValidation.xba72
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XAreaLink/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XAreaLink/sheet_XAreaLink.xba111
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XAreaLinks/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XAreaLinks/sheet_XAreaLinks.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XArrayFormulaRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XArrayFormulaRange/sheet_XArrayFormulaRange.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellAddressable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellAddressable/sheet_XCellAddressable.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeAddressable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeAddressable/sheet_XCellRangeAddressable.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeData/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeData/sheet_XCellRangeData.xba72
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeMovement/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeMovement/sheet_XCellRangeMovement.xba167
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeReferrer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellRangeReferrer/sheet_XCellRangeReferrer.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellSeries/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XCellSeries/sheet_XCellSeries.xba126
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XConsolidationDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XConsolidationDescriptor/sheet_XConsolidationDescriptor.xba144
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDDELink/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDDELink/sheet_XDDELink.xba84
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotDescriptor/sheet_XDataPilotDescriptor.xba143
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotTable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotTable/sheet_XDataPilotTable.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotTables/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotTables/sheet_XDataPilotTables.xba88
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotTablesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDataPilotTablesSupplier/sheet_XDataPilotTablesSupplier.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDatabaseRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDatabaseRange/sheet_XDatabaseRange.xba106
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDatabaseRanges/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XDatabaseRanges/sheet_XDatabaseRanges.xba76
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XFunctionDescriptions/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XFunctionDescriptions/sheet_XFunctionDescriptions.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XHeaderFooterContent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XHeaderFooterContent/sheet_XHeaderFooterContent.xba94
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XLabelRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XLabelRange/sheet_XLabelRange.xba116
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XLabelRanges/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XLabelRanges/sheet_XLabelRanges.xba88
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XNamedRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XNamedRange/sheet_XNamedRange.xba110
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XNamedRanges/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XNamedRanges/sheet_XNamedRanges.xba131
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XRecentFunctions/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XRecentFunctions/sheet_XRecentFunctions.xba110
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XScenarios/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XScenarios/sheet_XScenarios.xba80
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XScenariosSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XScenariosSupplier/sheet_XScenariosSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetAnnotation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetAnnotation/sheet_XSheetAnnotation.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetAnnotations/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetAnnotations/sheet_XSheetAnnotations.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetAnnotationsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetAnnotationsSupplier/sheet_XSheetAnnotationsSupplier.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellCursor/sheet_XSheetCellCursor.xba135
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellRange/sheet_XSheetCellRange.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellRangeContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellRangeContainer/sheet_XSheetCellRangeContainer.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellRanges/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCellRanges/sheet_XSheetCellRanges.xba81
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCondition/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetCondition/sheet_XSheetCondition.xba103
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetConditionalEntries/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetConditionalEntries/sheet_XSheetConditionalEntries.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetConditionalEntry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetConditionalEntry/sheet_XSheetConditionalEntry.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetFilterDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetFilterDescriptor/sheet_XSheetFilterDescriptor.xba77
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetOperation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetOperation/sheet_XSheetOperation.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetPageBreak/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSheetPageBreak/sheet_XSheetPageBreak.xba103
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheet/sheet_XSpreadsheet.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheetDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheetDocument/sheet_XSpreadsheetDocument.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheetView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheetView/sheet_XSpreadsheetView.xba95
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheets/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSpreadsheets/sheet_XSpreadsheets.xba130
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSubTotalDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSubTotalDescriptor/sheet_XSubTotalDescriptor.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSubTotalField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XSubTotalField/sheet_XSubTotalField.xba87
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XUsedAreaCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XUsedAreaCursor/sheet_XUsedAreaCursor.xba86
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XViewFreezable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XViewFreezable/sheet_XViewFreezable.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XViewPane/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XViewPane/sheet_XViewPane.xba87
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XViewSplitable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/sheet/XViewSplitable/sheet_XViewSplitable.xba133
-rw-r--r--qadevOOo/tests/basic/ifc/style/CharacterProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/CharacterProperties/style_CharacterProperties.xba292
-rw-r--r--qadevOOo/tests/basic/ifc/style/CharacterPropertiesAsian/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/CharacterPropertiesAsian/style_CharacterPropertiesAsian.xba100
-rw-r--r--qadevOOo/tests/basic/ifc/style/CharacterPropertiesComplex/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/CharacterPropertiesComplex/style_CharacterPropertiesComplex.xba94
-rw-r--r--qadevOOo/tests/basic/ifc/style/ParagraphProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/ParagraphProperties/style_ParagraphProperties.xba212
-rw-r--r--qadevOOo/tests/basic/ifc/style/ParagraphPropertiesAsian/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/ParagraphPropertiesAsian/style_ParagraphPropertiesAsian.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/style/ParagraphPropertiesComplex/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/ParagraphPropertiesComplex/style_ParagraphPropertiesComplex.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/style/Style/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/Style/style_Style.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/style/XStyle/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/XStyle/style_XStyle.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/style/XStyleFamiliesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/style/XStyleFamiliesSupplier/style_XStyleFamiliesSupplier.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/system/XProxySettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/system/XProxySettings/system_XProxySettings.xba114
-rw-r--r--qadevOOo/tests/basic/ifc/system/XSimpleMailClientSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/system/XSimpleMailClientSupplier/system_XSimpleMailClientSupplier.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/system/XSystemShellExecute/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/system/XSystemShellExecute/system_XSystemShellExecute.xba105
-rw-r--r--qadevOOo/tests/basic/ifc/table/CellProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/CellProperties/table_CellProperties.xba109
-rw-r--r--qadevOOo/tests/basic/ifc/table/TableColumn/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/TableColumn/table_TableColumn.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/table/TableRow/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/TableRow/table_TableRow.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/table/XAutoFormattable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XAutoFormattable/table_XAutoFormattable.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/table/XCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XCell/table_XCell.xba100
-rw-r--r--qadevOOo/tests/basic/ifc/table/XCellCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XCellCursor/table_XCellCursor.xba144
-rw-r--r--qadevOOo/tests/basic/ifc/table/XCellRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XCellRange/table_XCellRange.xba142
-rw-r--r--qadevOOo/tests/basic/ifc/table/XColumnRowRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XColumnRowRange/table_XColumnRowRange.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableChart/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableChart/table_XTableChart.xba106
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableCharts/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableCharts/table_XTableCharts.xba99
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableChartsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableChartsSupplier/table_XTableChartsSupplier.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableColumns/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableColumns/table_XTableColumns.xba87
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableRows/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/table/XTableRows/table_XTableRows.xba88
-rw-r--r--qadevOOo/tests/basic/ifc/task/XInteractionHandler/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/task/XInteractionHandler/task_XInteractionHandler.xba79
-rw-r--r--qadevOOo/tests/basic/ifc/task/XJob/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/task/XJob/task_XJob.xba88
-rw-r--r--qadevOOo/tests/basic/ifc/task/XStatusIndicatorFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/task/XStatusIndicatorFactory/task_XStatusIndicatorFactory.xba77
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseFrame/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseFrame/text_BaseFrame.xba63
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseFrameProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseFrameProperties/text_BaseFrameProperties.xba183
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseIndex/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseIndex/text_BaseIndex.xba102
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseIndexMark/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/BaseIndexMark/text_BaseIndexMark.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/text/CellProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/CellProperties/text_CellProperties.xba109
-rw-r--r--qadevOOo/tests/basic/ifc/text/CellRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/CellRange/text_CellRange.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/text/Defaults/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/Defaults/text_Defaults.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/text/DocumentIndex/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/DocumentIndex/text_DocumentIndex.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/text/DocumentIndexMark/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/DocumentIndexMark/text_DocumentIndexMark.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/text/Footnote/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/Footnote/text_Footnote.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/text/FootnoteSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/FootnoteSettings/text_FootnoteSettings.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/text/LineNumberingProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/LineNumberingProperties/text_LineNumberingProperties.xba80
-rw-r--r--qadevOOo/tests/basic/ifc/text/MailMerge/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/MailMerge/text_MailMerge.xba94
-rw-r--r--qadevOOo/tests/basic/ifc/text/NumberingRules/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/NumberingRules/text_NumberingRules.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/text/PrintSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/PrintSettings/text_PrintSettings.xba83
-rw-r--r--qadevOOo/tests/basic/ifc/text/Text/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/Text/text_Text.xba56
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextColumns/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextColumns/text_TextColumns.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextContent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextContent/text_TextContent.xba78
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextDocument/text_TextDocument.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextFieldMaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextFieldMaster/text_TextFieldMaster.xba57
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextFrame/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextFrame/text_TextFrame.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextGraphicObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextGraphicObject/text_TextGraphicObject.xba207
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextPortion/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextPortion/text_TextPortion.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextSection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextSection/text_TextSection.xba139
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextTable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextTable/text_TextTable.xba128
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextTableRow/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/TextTableRow/text_TextTableRow.xba75
-rw-r--r--qadevOOo/tests/basic/ifc/text/ViewSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/ViewSettings/text_ViewSettings.xba114
-rw-r--r--qadevOOo/tests/basic/ifc/text/XAutoTextContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XAutoTextContainer/text_XAutoTextContainer.xba95
-rw-r--r--qadevOOo/tests/basic/ifc/text/XAutoTextEntry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XAutoTextEntry/text_XAutoTextEntry.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/text/XAutoTextGroup/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XAutoTextGroup/text_XAutoTextGroup.xba100
-rw-r--r--qadevOOo/tests/basic/ifc/text/XChapterNumberingSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XChapterNumberingSupplier/text_XChapterNumberingSupplier.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/text/XDefaultNumberingProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XDefaultNumberingProvider/text_XDefaultNumberingProvider.xba119
-rw-r--r--qadevOOo/tests/basic/ifc/text/XDocumentIndex/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XDocumentIndex/text_XDocumentIndex.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/text/XEndnotesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XEndnotesSupplier/text_XEndnotesSupplier.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/text/XFootnote/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XFootnote/text_XFootnote.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/text/XFootnotesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XFootnotesSupplier/text_XFootnotesSupplier.xba64
-rw-r--r--qadevOOo/tests/basic/ifc/text/XLineNumberingSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XLineNumberingSupplier/text_XLineNumberingSupplier.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/text/XMailMergeBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XMailMergeBroadcaster/text_XMailMergeBroadcaster.xba106
-rw-r--r--qadevOOo/tests/basic/ifc/text/XPageCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XPageCursor/text_XPageCursor.xba123
-rw-r--r--qadevOOo/tests/basic/ifc/text/XPagePrintable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XPagePrintable/text_XPagePrintable.xba98
-rw-r--r--qadevOOo/tests/basic/ifc/text/XParagraphCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XParagraphCursor/text_XParagraphCursor.xba121
-rw-r--r--qadevOOo/tests/basic/ifc/text/XReferenceMarksSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XReferenceMarksSupplier/text_XReferenceMarksSupplier.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/text/XRelativeTextContentInsert/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XRelativeTextContentInsert/text_XRelativeTextContentInsert.xba164
-rw-r--r--qadevOOo/tests/basic/ifc/text/XSentenceCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XSentenceCursor/text_XSentenceCursor.xba105
-rw-r--r--qadevOOo/tests/basic/ifc/text/XSimpleText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XSimpleText/text_XSimpleText.xba113
-rw-r--r--qadevOOo/tests/basic/ifc/text/XText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XText/text_XText.xba153
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextColumns/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextColumns/text_XTextColumns.xba119
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextContent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextContent/text_XTextContent.xba83
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextCursor/text_XTextCursor.xba134
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextDocument/text_XTextDocument.xba65
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextEmbeddedObjectsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextEmbeddedObjectsSupplier/text_XTextEmbeddedObjectsSupplier.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextField/text_XTextField.xba67
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextFrame/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextFrame/text_XTextFrame.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextGraphicObjectsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextGraphicObjectsSupplier/text_XTextGraphicObjectsSupplier.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextRange/text_XTextRange.xba86
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextRangeCompare/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextRangeCompare/text_XTextRangeCompare.xba98
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextRangeMover/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextRangeMover/text_XTextRangeMover.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextSection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextSection/text_XTextSection.xba106
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextTable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextTable/text_XTextTable.xba140
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextTableCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextTableCursor/text_XTextTableCursor.xba142
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextTablesSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextTablesSupplier/text_XTextTablesSupplier.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextViewCursorSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XTextViewCursorSupplier/text_XTextViewCursorSupplier.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/text/XWordCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/text/XWordCursor/text_XWordCursor.xba99
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedContentResultSetFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedContentResultSetFactory/ucb_XCachedContentResultSetFactory.xba91
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedContentResultSetStubFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedContentResultSetStubFactory/ucb_XCachedContentResultSetStubFactory.xba91
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedDynamicResultSetFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedDynamicResultSetFactory/ucb_XCachedDynamicResultSetFactory.xba97
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedDynamicResultSetStubFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCachedDynamicResultSetStubFactory/ucb_XCachedDynamicResultSetStubFactory.xba125
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCommandProcessor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XCommandProcessor/ucb_XCommandProcessor.xba85
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentIdentifierFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentIdentifierFactory/ucb_XContentIdentifierFactory.xba77
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentProvider/ucb_XContentProvider.xba95
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentProviderFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentProviderFactory/ucb_XContentProviderFactory.xba61
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentProviderManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XContentProviderManager/ucb_XContentProviderManager.xba115
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XDataContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XDataContainer/ucb_XDataContainer.xba155
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XFileIdentifierConverter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XFileIdentifierConverter/ucb_XFileIdentifierConverter.xba90
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XPropertyMatcherFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XPropertyMatcherFactory/ucb_XPropertyMatcherFactory.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XPropertySetRegistryFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XPropertySetRegistryFactory/ucb_XPropertySetRegistryFactory.xba62
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XSimpleFileAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XSimpleFileAccess/ucb_XSimpleFileAccess.xba242
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XSimpleFileAccess2/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XSimpleFileAccess2/ucb_XSimpleFileAccess2.xba77
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XSortedDynamicResultSetFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ucb/XSortedDynamicResultSetFactory/ucb_XSortedDynamicResultSetFactory.xba111
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/FilePicker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/FilePicker/ui_dialogs_FilePicker.xba55
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XExecutableDialog/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XExecutableDialog/ui_dialogs_XExecutableDialog.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePicker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePicker/ui_dialogs_XFilePicker.xba93
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePickerControlAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePickerControlAccess/ui_dialogs_XFilePickerControlAccess.xba102
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePickerNotifier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePickerNotifier/ui_dialogs_XFilePickerNotifier.xba93
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePreview/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilePreview/ui_dialogs_XFilePreview.xba112
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilterManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFilterManager/ui_dialogs_XFilterManager.xba73
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFolderPicker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/ui/dialogs/XFolderPicker/ui_dialogs_XFolderPicker.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/uno/XNamingService/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/uno/XNamingService/uno_XNamingService.xba92
-rw-r--r--qadevOOo/tests/basic/ifc/util/PathSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/PathSettings/util_PathSettings.xba151
-rw-r--r--qadevOOo/tests/basic/ifc/util/SearchDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/SearchDescriptor/util_SearchDescriptor.xba74
-rw-r--r--qadevOOo/tests/basic/ifc/util/XCancellable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XCancellable/util_XCancellable.xba58
-rw-r--r--qadevOOo/tests/basic/ifc/util/XCloneable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XCloneable/util_XCloneable.xba66
-rw-r--r--qadevOOo/tests/basic/ifc/util/XFlushable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XFlushable/util_XFlushable.xba98
-rw-r--r--qadevOOo/tests/basic/ifc/util/XMergeable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XMergeable/util_XMergeable.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/util/XModeSelector/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XModeSelector/util_XModeSelector.xba84
-rw-r--r--qadevOOo/tests/basic/ifc/util/XModifyBroadcaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XModifyBroadcaster/util_XModifyBroadcaster.xba82
-rw-r--r--qadevOOo/tests/basic/ifc/util/XNumberFormatsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XNumberFormatsSupplier/util_XNumberFormatsSupplier.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/util/XRefreshable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XRefreshable/util_XRefreshable.xba106
-rw-r--r--qadevOOo/tests/basic/ifc/util/XReplaceDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XReplaceDescriptor/util_XReplaceDescriptor.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/util/XReplaceable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XReplaceable/util_XReplaceable.xba93
-rw-r--r--qadevOOo/tests/basic/ifc/util/XSearchDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XSearchDescriptor/util_XSearchDescriptor.xba70
-rw-r--r--qadevOOo/tests/basic/ifc/util/XSearchable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XSearchable/util_XSearchable.xba111
-rw-r--r--qadevOOo/tests/basic/ifc/util/XSortable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XSortable/util_XSortable.xba80
-rw-r--r--qadevOOo/tests/basic/ifc/util/XStringEscape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XStringEscape/util_XStringEscape.xba71
-rw-r--r--qadevOOo/tests/basic/ifc/util/XTextSearch/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/util/XTextSearch/util_XTextSearch.xba104
-rw-r--r--qadevOOo/tests/basic/ifc/view/XControlAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/view/XControlAccess/view_XControlAccess.xba68
-rw-r--r--qadevOOo/tests/basic/ifc/view/XPrintSettingsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/view/XPrintSettingsSupplier/view_XPrintSettingsSupplier.xba59
-rw-r--r--qadevOOo/tests/basic/ifc/view/XPrintable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/view/XPrintable/view_XPrintable.xba119
-rw-r--r--qadevOOo/tests/basic/ifc/view/XScreenCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/view/XScreenCursor/view_XScreenCursor.xba69
-rw-r--r--qadevOOo/tests/basic/ifc/view/XSelectionSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/view/XSelectionSupplier/view_XSelectionSupplier.xba146
-rw-r--r--qadevOOo/tests/basic/ifc/view/XViewSettingsSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/view/XViewSettingsSupplier/view_XViewSettingsSupplier.xba60
-rw-r--r--qadevOOo/tests/basic/ifc/xml/UserDefinedAttributeSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/xml/UserDefinedAttributeSupplier/xml_UserDefinedAttributeSupplier.xba72
-rw-r--r--qadevOOo/tests/basic/ifc/xml/sax/XDocumentHandler/script.xlb5
-rw-r--r--qadevOOo/tests/basic/ifc/xml/sax/XDocumentHandler/xml_sax_XDocumentHandler.xba137
-rw-r--r--qadevOOo/tests/basic/mod/acceptor.uno/Acceptor/acceptor_uno_Acceptor.xba49
-rw-r--r--qadevOOo/tests/basic/mod/acceptor.uno/Acceptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/acceptor/Acceptor/acceptor_Acceptor.xba49
-rw-r--r--qadevOOo/tests/basic/mod/acceptor/Acceptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/adabas/ODriver/adabas_ODriver.xba69
-rw-r--r--qadevOOo/tests/basic/mod/adabas/ODriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ado/ODriver/ado_ODriver.xba67
-rw-r--r--qadevOOo/tests/basic/mod/ado/ODriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/brdgfctr/BridgeFactory/brdgfctr_BridgeFactory.xba70
-rw-r--r--qadevOOo/tests/basic/mod/brdgfctr/BridgeFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/bridgefac.uno/BridgeFactory/bridgefac_uno_BridgeFactory.xba70
-rw-r--r--qadevOOo/tests/basic/mod/bridgefac.uno/BridgeFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedContentResultSetFactory/cached_CachedContentResultSetFactory.xba100
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedContentResultSetFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedContentResultSetStubFactory/cached_CachedContentResultSetStubFactory.xba94
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedContentResultSetStubFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedDynamicResultSetFactory/cached_CachedDynamicResultSetFactory.xba96
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedDynamicResultSetFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedDynamicResultSetStubFactory/cached_CachedDynamicResultSetStubFactory.xba94
-rw-r--r--qadevOOo/tests/basic/mod/cached/CachedDynamicResultSetStubFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cmdmail/SimpleCommandMail/cmdmail_SimpleCommandMail.xba56
-rw-r--r--qadevOOo/tests/basic/mod/cmdmail/SimpleCommandMail/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cnt/ChaosContentProvider/cnt_ChaosContentProvider.xba59
-rw-r--r--qadevOOo/tests/basic/mod/cnt/ChaosContentProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cnt/CntUnoDataContainer/cnt_CntUnoDataContainer.xba94
-rw-r--r--qadevOOo/tests/basic/mod/cnt/CntUnoDataContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cnt/PropertyMatcherFactory/cnt_PropertyMatcherFactory.xba49
-rw-r--r--qadevOOo/tests/basic/mod/cnt/PropertyMatcherFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/connector.uno/Connector/connector_uno_Connector.xba49
-rw-r--r--qadevOOo/tests/basic/mod/connector.uno/Connector/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/connectr/Connector/connectr_Connector.xba49
-rw-r--r--qadevOOo/tests/basic/mod/connectr/Connector/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/corefl/CoreReflection/corefl_CoreReflection.xba57
-rw-r--r--qadevOOo/tests/basic/mod/corefl/CoreReflection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/corereflection.uno/CoreReflection/corereflection_uno_CoreReflection.xba57
-rw-r--r--qadevOOo/tests/basic/mod/corereflection.uno/CoreReflection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/cpld/DLLComponentLoader/cpld_DLLComponentLoader.xba59
-rw-r--r--qadevOOo/tests/basic/mod/cpld/DLLComponentLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ConnectionLineAccessibility/dbaccess_ConnectionLineAccessibility.xba147
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ConnectionLineAccessibility/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/DBContentLoader/dbaccess_DBContentLoader.xba63
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/DBContentLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/JoinViewAccessibility/dbaccess_JoinViewAccessibility.xba148
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/JoinViewAccessibility/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/OCommandDefinition/dbaccess_OCommandDefinition.xba56
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/OCommandDefinition/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatabaseContext/dbaccess_ODatabaseContext.xba56
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatabaseContext/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatabaseSource/dbaccess_ODatabaseSource.xba88
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatabaseSource/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatasourceAdministrationDialog/dbaccess_ODatasourceAdministrationDialog.xba67
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatasourceAdministrationDialog/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatasourceBrowser/dbaccess_ODatasourceBrowser.xba142
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ODatasourceBrowser/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/OInteractionHandler/dbaccess_OInteractionHandler.xba56
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/OInteractionHandler/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ORowSet/dbaccess_ORowSet.xba176
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/ORowSet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/OSQLMessageDialog/dbaccess_OSQLMessageDialog.xba56
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/OSQLMessageDialog/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/SbaXGridControl/dbaccess_SbaXGridControl.xba222
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/SbaXGridControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/TableWindowAccessibility/dbaccess_TableWindowAccessibility.xba147
-rw-r--r--qadevOOo/tests/basic/mod/dbaccess/TableWindowAccessibility/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dbpool/OConnectionPool/dbpool_OConnectionPool.xba55
-rw-r--r--qadevOOo/tests/basic/mod/dbpool/OConnectionPool/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/defreg/NestedRegistry/defreg_NestedRegistry.xba94
-rw-r--r--qadevOOo/tests/basic/mod/defreg/NestedRegistry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dtrans/generic/dtrans_generic.xba58
-rw-r--r--qadevOOo/tests/basic/mod/dtrans/generic/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dynamicloader.uno/Dynamic/dynamicloader_uno_Dynamic.xba64
-rw-r--r--qadevOOo/tests/basic/mod/dynamicloader.uno/Dynamic/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/dynamicloader/Dynamic/dynamicloader_Dynamic.xba64
-rw-r--r--qadevOOo/tests/basic/mod/dynamicloader/Dynamic/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/file/calc/ODriver/file_calc_ODriver.xba67
-rw-r--r--qadevOOo/tests/basic/mod/file/calc/ODriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/file/dbase/ODriver/file_dbase_ODriver.xba67
-rw-r--r--qadevOOo/tests/basic/mod/file/dbase/ODriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/file/flat/ODriver/file_flat_ODriver.xba67
-rw-r--r--qadevOOo/tests/basic/mod/file/flat/ODriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fileacc/SimpleFileAccess/fileacc_SimpleFileAccess.xba49
-rw-r--r--qadevOOo/tests/basic/mod/fileacc/SimpleFileAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fop/FolderPicker/fop_FolderPicker.xba56
-rw-r--r--qadevOOo/tests/basic/mod/fop/FolderPicker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OButtonControl/forms_OButtonControl.xba107
-rw-r--r--qadevOOo/tests/basic/mod/forms/OButtonControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OButtonModel/forms_OButtonModel.xba72
-rw-r--r--qadevOOo/tests/basic/mod/forms/OButtonModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCheckBoxControl/forms_OCheckBoxControl.xba127
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCheckBoxControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCheckBoxModel/forms_OCheckBoxModel.xba71
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCheckBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OComboBoxControl/forms_OComboBoxControl.xba108
-rw-r--r--qadevOOo/tests/basic/mod/forms/OComboBoxControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OComboBoxModel/forms_OComboBoxModel.xba131
-rw-r--r--qadevOOo/tests/basic/mod/forms/OComboBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCurrencyControl/forms_OCurrencyControl.xba106
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCurrencyControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCurrencyModel/forms_OCurrencyModel.xba137
-rw-r--r--qadevOOo/tests/basic/mod/forms/OCurrencyModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/ODatabaseForm/forms_ODatabaseForm.xba212
-rw-r--r--qadevOOo/tests/basic/mod/forms/ODatabaseForm/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/ODateControl/forms_ODateControl.xba107
-rw-r--r--qadevOOo/tests/basic/mod/forms/ODateControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/ODateModel/forms_ODateModel.xba140
-rw-r--r--qadevOOo/tests/basic/mod/forms/ODateModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OEditControl/forms_OEditControl.xba106
-rw-r--r--qadevOOo/tests/basic/mod/forms/OEditControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OEditModel/forms_OEditModel.xba128
-rw-r--r--qadevOOo/tests/basic/mod/forms/OEditModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFileControlModel/forms_OFileControlModel.xba76
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFileControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFixedTextModel/forms_OFixedTextModel.xba74
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFixedTextModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFormattedControl/forms_OFormattedControl.xba107
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFormattedControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFormattedFieldWrapper/forms_OFormattedFieldWrapper.xba166
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFormattedFieldWrapper/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFormsCollection/forms_OFormsCollection.xba97
-rw-r--r--qadevOOo/tests/basic/mod/forms/OFormsCollection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OGridControlModel/forms_OGridControlModel.xba123
-rw-r--r--qadevOOo/tests/basic/mod/forms/OGridControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OGroupBoxControl/forms_OGroupBoxControl.xba104
-rw-r--r--qadevOOo/tests/basic/mod/forms/OGroupBoxControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OGroupBoxModel/forms_OGroupBoxModel.xba75
-rw-r--r--qadevOOo/tests/basic/mod/forms/OGroupBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OHiddenModel/forms_OHiddenModel.xba101
-rw-r--r--qadevOOo/tests/basic/mod/forms/OHiddenModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageButtonControl/forms_OImageButtonControl.xba105
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageButtonControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageButtonModel/forms_OImageButtonModel.xba74
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageButtonModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageControlControl/forms_OImageControlControl.xba108
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageControlControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageControlModel/forms_OImageControlModel.xba75
-rw-r--r--qadevOOo/tests/basic/mod/forms/OImageControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OListBoxControl/forms_OListBoxControl.xba121
-rw-r--r--qadevOOo/tests/basic/mod/forms/OListBoxControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OListBoxModel/forms_OListBoxModel.xba158
-rw-r--r--qadevOOo/tests/basic/mod/forms/OListBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/ONumericControl/forms_ONumericControl.xba106
-rw-r--r--qadevOOo/tests/basic/mod/forms/ONumericControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/ONumericModel/forms_ONumericModel.xba127
-rw-r--r--qadevOOo/tests/basic/mod/forms/ONumericModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OPatternControl/forms_OPatternControl.xba104
-rw-r--r--qadevOOo/tests/basic/mod/forms/OPatternControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OPatternModel/forms_OPatternModel.xba128
-rw-r--r--qadevOOo/tests/basic/mod/forms/OPatternModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/ORadioButtonControl/forms_ORadioButtonControl.xba105
-rw-r--r--qadevOOo/tests/basic/mod/forms/ORadioButtonControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/ORadioButtonModel/forms_ORadioButtonModel.xba132
-rw-r--r--qadevOOo/tests/basic/mod/forms/ORadioButtonModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OTimeControl/forms_OTimeControl.xba106
-rw-r--r--qadevOOo/tests/basic/mod/forms/OTimeControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/forms/OTimeModel/forms_OTimeModel.xba182
-rw-r--r--qadevOOo/tests/basic/mod/forms/OTimeModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fps/FilePicker/fps_FilePicker.xba80
-rw-r--r--qadevOOo/tests/basic/mod/fps/FilePicker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ftransl/DataFormatTranslator/ftransl_DataFormatTranslator.xba53
-rw-r--r--qadevOOo/tests/basic/mod/ftransl/DataFormatTranslator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwk/Desktop/fwk_Desktop.xba66
-rw-r--r--qadevOOo/tests/basic/mod/fwk/Desktop/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwk/DispatchRecorder/fwk_DispatchRecorder.xba76
-rw-r--r--qadevOOo/tests/basic/mod/fwk/DispatchRecorder/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwk/DispatchRecorderSupplier/fwk_DispatchRecorderSupplier.xba53
-rw-r--r--qadevOOo/tests/basic/mod/fwk/DispatchRecorderSupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwk/DocumentProperties/fwk_DocumentProperties.xba60
-rw-r--r--qadevOOo/tests/basic/mod/fwk/DocumentProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwk/Frame/fwk_Frame.xba64
-rw-r--r--qadevOOo/tests/basic/mod/fwk/Frame/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwk/JobHandler/fwk_JobHandler.xba59
-rw-r--r--qadevOOo/tests/basic/mod/fwk/JobHandler/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwl/FilterFactory/fwl_FilterFactory.xba94
-rw-r--r--qadevOOo/tests/basic/mod/fwl/FilterFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwl/FrameLoaderFactory/fwl_FrameLoaderFactory.xba65
-rw-r--r--qadevOOo/tests/basic/mod/fwl/FrameLoaderFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwl/PathSettings/fwl_PathSettings.xba55
-rw-r--r--qadevOOo/tests/basic/mod/fwl/PathSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/fwl/TypeDetection/fwl_TypeDetection.xba55
-rw-r--r--qadevOOo/tests/basic/mod/fwl/TypeDetection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/BreakIterator/i18n_BreakIterator.xba72
-rw-r--r--qadevOOo/tests/basic/mod/i18n/BreakIterator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/CalendarImpl/i18n_CalendarImpl.xba55
-rw-r--r--qadevOOo/tests/basic/mod/i18n/CalendarImpl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/ChapterCollator/i18n_ChapterCollator.xba70
-rw-r--r--qadevOOo/tests/basic/mod/i18n/ChapterCollator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/CharacterClassification/i18n_CharacterClassification.xba56
-rw-r--r--qadevOOo/tests/basic/mod/i18n/CharacterClassification/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/Collator/i18n_Collator.xba70
-rw-r--r--qadevOOo/tests/basic/mod/i18n/Collator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/IndexEntrySupplier/i18n_IndexEntrySupplier.xba71
-rw-r--r--qadevOOo/tests/basic/mod/i18n/IndexEntrySupplier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/LocaleData/i18n_LocaleData.xba55
-rw-r--r--qadevOOo/tests/basic/mod/i18n/LocaleData/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/NumberFormatCodeMapper/i18n_NumberFormatCodeMapper.xba56
-rw-r--r--qadevOOo/tests/basic/mod/i18n/NumberFormatCodeMapper/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/TextSearch/i18n_TextSearch.xba59
-rw-r--r--qadevOOo/tests/basic/mod/i18n/TextSearch/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/i18n/Transliteration/i18n_Transliteration.xba71
-rw-r--r--qadevOOo/tests/basic/mod/i18n/Transliteration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/implreg.uno/ImplementationRegistration/implreg_uno_ImplementationRegistration.xba53
-rw-r--r--qadevOOo/tests/basic/mod/implreg.uno/ImplementationRegistration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/impreg/ImplementationRegistration/impreg_ImplementationRegistration.xba53
-rw-r--r--qadevOOo/tests/basic/mod/impreg/ImplementationRegistration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/insp/Introspection/insp_Introspection.xba53
-rw-r--r--qadevOOo/tests/basic/mod/insp/Introspection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/introspection.uno/Introspection/introspection_uno_Introspection.xba53
-rw-r--r--qadevOOo/tests/basic/mod/introspection.uno/Introspection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/inv/Invocation/inv_Invocation.xba66
-rw-r--r--qadevOOo/tests/basic/mod/inv/Invocation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/invadp/InvocationAdapterFactory/invadp_InvocationAdapterFactory.xba56
-rw-r--r--qadevOOo/tests/basic/mod/invadp/InvocationAdapterFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/invocadapt.uno/InvocationAdapterFactory/invocadapt_uno_InvocationAdapterFactory.xba56
-rw-r--r--qadevOOo/tests/basic/mod/invocadapt.uno/InvocationAdapterFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/invocation.uno/Invocation/invocation_uno_Invocation.xba66
-rw-r--r--qadevOOo/tests/basic/mod/invocation.uno/Invocation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/javaloader.uno/JavaComponentLoader/javaloader_uno_JavaComponentLoader.xba59
-rw-r--r--qadevOOo/tests/basic/mod/javaloader.uno/JavaComponentLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/javaloader/JavaComponentLoader/javaloader_JavaComponentLoader.xba59
-rw-r--r--qadevOOo/tests/basic/mod/javaloader/JavaComponentLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/javavm.uno/JavaVirtualMachine/javavm_uno_JavaVirtualMachine.xba72
-rw-r--r--qadevOOo/tests/basic/mod/javavm.uno/JavaVirtualMachine/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/jdbc/JDBCDriver/jdbc_JDBCDriver.xba71
-rw-r--r--qadevOOo/tests/basic/mod/jdbc/JDBCDriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/jen/JavaVirtualMachine/jen_JavaVirtualMachine.xba72
-rw-r--r--qadevOOo/tests/basic/mod/jen/JavaVirtualMachine/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/lng/DicList/lng_DicList.xba89
-rw-r--r--qadevOOo/tests/basic/mod/lng/DicList/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/lng/LinguProps/lng_LinguProps.xba59
-rw-r--r--qadevOOo/tests/basic/mod/lng/LinguProps/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/lng/LngSvcMgr/lng_LngSvcMgr.xba59
-rw-r--r--qadevOOo/tests/basic/mod/lng/LngSvcMgr/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/lnn/Hyphenator/lnn_Hyphenator.xba62
-rw-r--r--qadevOOo/tests/basic/mod/lnn/Hyphenator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/lnn/SpellChecker/lnn_SpellChecker.xba62
-rw-r--r--qadevOOo/tests/basic/mod/lnn/SpellChecker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/lnn/Thesaurus/lnn_Thesaurus.xba62
-rw-r--r--qadevOOo/tests/basic/mod/lnn/Thesaurus/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/mcnttype/MimeContentTypeFactory/mcnttype_MimeContentTypeFactory.xba53
-rw-r--r--qadevOOo/tests/basic/mod/mcnttype/MimeContentTypeFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/mozab/MozabDriver/mozab_MozabDriver.xba67
-rw-r--r--qadevOOo/tests/basic/mod/mozab/MozabDriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/namingservice.uno/NamingService/namingservice_uno_NamingService.xba60
-rw-r--r--qadevOOo/tests/basic/mod/namingservice.uno/NamingService/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/namingservice/NamingService/namingservice_NamingService.xba60
-rw-r--r--qadevOOo/tests/basic/mod/namingservice/NamingService/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/nestedreg.uno/NestedRegistry/nestedreg_uno_NestedRegistry.xba94
-rw-r--r--qadevOOo/tests/basic/mod/nestedreg.uno/NestedRegistry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/odbc/ODBCDriver/odbc_ODBCDriver.xba67
-rw-r--r--qadevOOo/tests/basic/mod/odbc/ODBCDriver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/proxyfac.uno/ProxyFactory/proxyfac_ProxyFactory.xba53
-rw-r--r--qadevOOo/tests/basic/mod/proxyfac.uno/ProxyFactory/proxyfac_uno_ProxyFactory.xba53
-rw-r--r--qadevOOo/tests/basic/mod/proxyfac.uno/ProxyFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/proxyfac/ProxyFactory/proxyfac_ProxyFactory.xba53
-rw-r--r--qadevOOo/tests/basic/mod/proxyfac/ProxyFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/proxyset/SOffice52ProxySettings/proxyset_SOffice52ProxySettings.xba53
-rw-r--r--qadevOOo/tests/basic/mod/proxyset/SOffice52ProxySettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/proxyset/SystemProxySettings/proxyset_SystemProxySettings.xba53
-rw-r--r--qadevOOo/tests/basic/mod/proxyset/SystemProxySettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/rdbtdp/RegistryTypeDescriptionProvider/rdbtdp_RegistryTypeDescriptionProvider.xba70
-rw-r--r--qadevOOo/tests/basic/mod/rdbtdp/RegistryTypeDescriptionProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/regtypeprov.uno/RegistryTypeDescriptionProvider/regtypeprov_uno_RegistryTypeDescriptionProvider.xba70
-rw-r--r--qadevOOo/tests/basic/mod/regtypeprov.uno/RegistryTypeDescriptionProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/remotebridge.uno/various/remotebridge_uno_various.xba95
-rw-r--r--qadevOOo/tests/basic/mod/remotebridge.uno/various/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/remotebridge/various/remotebridge_various.xba98
-rw-r--r--qadevOOo/tests/basic/mod/remotebridge/various/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/AccessibleEditableTextPara_HeaderFooter/sc_AccessibleEditableTextPara_HeaderFooter.xba99
-rw-r--r--qadevOOo/tests/basic/mod/sc/AccessibleEditableTextPara_HeaderFooter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/AccessibleEditableTextPara_PreviewCell/sc_AccessibleEditableTextPara_PreviewCell.xba109
-rw-r--r--qadevOOo/tests/basic/mod/sc/AccessibleEditableTextPara_PreviewCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCell/sc_ScAccessibleCell.xba69
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCsvCell/sc_ScAccessibleCsvCell.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCsvCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCsvGrid/sc_ScAccessibleCsvGrid.xba80
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCsvGrid/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCsvRuler/sc_ScAccessibleCsvRuler.xba87
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleCsvRuler/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleDocument/sc_ScAccessibleDocument.xba68
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleDocumentPagePreview/sc_ScAccessibleDocumentPagePreview.xba91
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleDocumentPagePreview/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePageHeader/sc_ScAccessiblePageHeader.xba100
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePageHeader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePageHeaderArea/sc_ScAccessiblePageHeaderArea.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePageHeaderArea/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePreviewCell/sc_ScAccessiblePreviewCell.xba85
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePreviewCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePreviewHeaderCell/sc_ScAccessiblePreviewHeaderCell.xba87
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePreviewHeaderCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePreviewTable/sc_ScAccessiblePreviewTable.xba85
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessiblePreviewTable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleSpreadsheet/sc_ScAccessibleSpreadsheet.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAccessibleSpreadsheet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAnnotationObj/sc_ScAnnotationObj.xba63
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAnnotationObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAnnotationsObj/sc_ScAnnotationsObj.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAnnotationsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAreaLinkObj/sc_ScAreaLinkObj.xba65
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAreaLinkObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAreaLinksObj/sc_ScAreaLinksObj.xba65
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAreaLinksObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAutoFormatFieldObj/sc_ScAutoFormatFieldObj.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAutoFormatFieldObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAutoFormatObj/sc_ScAutoFormatObj.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAutoFormatObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAutoFormatsObj/sc_ScAutoFormatsObj.xba76
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScAutoFormatsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellCursorObj/sc_ScCellCursorObj.xba145
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellCursorObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFieldObj/sc_ScCellFieldObj.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFieldObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFieldsObj/sc_ScCellFieldsObj.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFieldsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFormatsEnumeration/sc_ScCellFormatsEnumeration.xba62
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFormatsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFormatsObj/sc_ScCellFormatsObj.xba60
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellFormatsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellObj/sc_ScCellObj.xba68
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellRangeObj/sc_ScCellRangeObj.xba135
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellRangeObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellRangesObj/sc_ScCellRangesObj.xba78
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellRangesObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellSearchObj/sc_ScCellSearchObj.xba57
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellSearchObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellTextCursor/sc_ScCellTextCursor.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellTextCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellsEnumeration/sc_ScCellsEnumeration.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellsObj/sc_ScCellsObj.xba74
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScCellsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScChartObj/sc_ScChartObj.xba98
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScChartObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScChartsObj/sc_ScChartsObj.xba95
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScChartsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScConsolidationDescriptor/sc_ScConsolidationDescriptor.xba62
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScConsolidationDescriptor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDDELinkObj/sc_ScDDELinkObj.xba91
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDDELinkObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDDELinksObj/sc_ScDDELinksObj.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDDELinksObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotFieldObj/sc_ScDataPilotFieldObj.xba100
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotFieldObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotFieldsObj/sc_ScDataPilotFieldsObj.xba94
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotFieldsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotTableObj/sc_ScDataPilotTableObj.xba122
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotTableObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotTablesObj/sc_ScDataPilotTablesObj.xba91
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDataPilotTablesObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDatabaseRangeObj/sc_ScDatabaseRangeObj.xba75
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDatabaseRangeObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDatabaseRangesObj/sc_ScDatabaseRangesObj.xba74
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDatabaseRangesObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDrawPageObj/sc_ScDrawPageObj.xba103
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDrawPageObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDrawPagesObj/sc_ScDrawPagesObj.xba55
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScDrawPagesObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScFilterDescriptorBase/sc_ScFilterDescriptorBase.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScFilterDescriptorBase/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScFunctionListObj/sc_ScFunctionListObj.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScFunctionListObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFieldObj/sc_ScHeaderFieldObj.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFieldObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFieldsObj/sc_ScHeaderFieldsObj.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFieldsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFooterContentObj/sc_ScHeaderFooterContentObj.xba82
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFooterContentObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFooterTextCursor/sc_ScHeaderFooterTextCursor.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFooterTextCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFooterTextObj/sc_ScHeaderFooterTextObj.xba80
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScHeaderFooterTextObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_CellAnnotationsEnumeration/sc_ScIndexEnumeration_CellAnnotationsEnumeration.xba85
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_CellAnnotationsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_CellAreaLinksEnumeration/sc_ScIndexEnumeration_CellAreaLinksEnumeration.xba63
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_CellAreaLinksEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DDELinksEnumeration/sc_ScIndexEnumeration_DDELinksEnumeration.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DDELinksEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DataPilotFieldsEnumeration/sc_ScIndexEnumeration_DataPilotFieldsEnumeration.xba90
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DataPilotFieldsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DataPilotTablesEnumeration/sc_ScIndexEnumeration_DataPilotTablesEnumeration.xba89
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DataPilotTablesEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DatabaseRangesEnumeration/sc_ScIndexEnumeration_DatabaseRangesEnumeration.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_DatabaseRangesEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_FunctionDescriptionEnumeration/sc_ScIndexEnumeration_FunctionDescriptionEnumeration.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_FunctionDescriptionEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_LabelRangesEnumeration/sc_ScIndexEnumeration_LabelRangesEnumeration.xba78
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_LabelRangesEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_NamedRangesEnumeration/sc_ScIndexEnumeration_NamedRangesEnumeration.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_NamedRangesEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_ScenariosEnumeration/sc_ScIndexEnumeration_ScenariosEnumeration.xba80
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_ScenariosEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SheetCellRangesEnumeration/sc_ScIndexEnumeration_SheetCellRangesEnumeration.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SheetCellRangesEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SheetLinksEnumeration/sc_ScIndexEnumeration_SheetLinksEnumeration.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SheetLinksEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SpreadsheetViewPanesEnumeration/sc_ScIndexEnumeration_SpreadsheetViewPanesEnumeration.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SpreadsheetViewPanesEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SpreadsheetsEnumeration/sc_ScIndexEnumeration_SpreadsheetsEnumeration.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SpreadsheetsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SubTotalFieldsEnumeration/sc_ScIndexEnumeration_SubTotalFieldsEnumeration.xba69
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_SubTotalFieldsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableAutoFormatEnumeration/sc_ScIndexEnumeration_TableAutoFormatEnumeration.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableAutoFormatEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableChartsEnumeration/sc_ScIndexEnumeration_TableChartsEnumeration.xba95
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableChartsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableColumnsEnumeration/sc_ScIndexEnumeration_TableColumnsEnumeration.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableColumnsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableConditionalEntryEnumeration/sc_ScIndexEnumeration_TableConditionalEntryEnumeration.xba106
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableConditionalEntryEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableRowsEnumeration/sc_ScIndexEnumeration_TableRowsEnumeration.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TableRowsEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TextFieldEnumeration/sc_ScIndexEnumeration_TextFieldEnumeration.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScIndexEnumeration_TextFieldEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScLabelRangeObj/sc_ScLabelRangeObj.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScLabelRangeObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScLabelRangesObj/sc_ScLabelRangesObj.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScLabelRangesObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScModelObj/sc_ScModelObj.xba73
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScModelObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScNamedRangeObj/sc_ScNamedRangeObj.xba82
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScNamedRangeObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScNamedRangesObj/sc_ScNamedRangesObj.xba69
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScNamedRangesObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScPageObj/sc_ScPageObj.xba106
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScPageObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScRecentFunctionsObj/sc_ScRecentFunctionsObj.xba61
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScRecentFunctionsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScScenariosObj/sc_ScScenariosObj.xba75
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScScenariosObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSheetLinkObj/sc_ScSheetLinkObj.xba68
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSheetLinkObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSheetLinksObj/sc_ScSheetLinksObj.xba62
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSheetLinksObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSpreadsheetSettings/sc_ScSpreadsheetSettings.xba61
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSpreadsheetSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSpreadsheetSettingsObj/sc_ScSpreadsheetSettingsObj.xba56
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSpreadsheetSettingsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScStyleFamiliesObj/sc_ScStyleFamiliesObj.xba62
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScStyleFamiliesObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScStyleFamilyObj/sc_ScStyleFamilyObj.xba84
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScStyleFamilyObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScStyleObj/sc_ScStyleObj.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScStyleObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSubTotalDescriptorBase/sc_ScSubTotalDescriptorBase.xba61
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSubTotalDescriptorBase/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSubTotalFieldObj/sc_ScSubTotalFieldObj.xba66
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScSubTotalFieldObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTabViewObj/sc_ScTabViewObj.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTabViewObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableColumnObj/sc_ScTableColumnObj.xba69
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableColumnObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableColumnsObj/sc_ScTableColumnsObj.xba62
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableColumnsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableConditionalEntry/sc_ScTableConditionalEntry.xba103
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableConditionalEntry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableConditionalFormat/sc_ScTableConditionalFormat.xba104
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableConditionalFormat/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableRowObj/sc_ScTableRowObj.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableRowObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableRowsObj/sc_ScTableRowsObj.xba62
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableRowsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableSheetObj/sc_ScTableSheetObj.xba123
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableSheetObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableSheetsObj/sc_ScTableSheetsObj.xba78
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableSheetsObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableValidationObj/sc_ScTableValidationObj.xba60
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScTableValidationObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScViewPaneObj/sc_ScViewPaneObj.xba69
-rw-r--r--qadevOOo/tests/basic/mod/sc/ScViewPaneObj/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLContentExporter/sc_XMLContentExporter.xba124
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLContentExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLContentImporter/sc_XMLContentImporter.xba92
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLContentImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLExporter/sc_XMLExporter.xba122
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLImporter/sc_XMLImporter.xba92
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLMetaExporter/sc_XMLMetaExporter.xba110
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLMetaExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLMetaImporter/sc_XMLMetaImporter.xba93
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLMetaImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLSettingsExporter/sc_XMLSettingsExporter.xba118
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLSettingsExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLSettingsImporter/sc_XMLSettingsImporter.xba99
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLSettingsImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLStylesExporter/sc_XMLStylesExporter.xba110
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLStylesExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLStylesImporter/sc_XMLStylesImporter.xba100
-rw-r--r--qadevOOo/tests/basic/mod/sc/XMLStylesImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccArea/sch_AccArea.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccArea/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccAxis/sch_AccAxis.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccAxis/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccDataPoint/sch_AccDataPoint.xba68
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccDataPoint/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccDataSeries/sch_AccDataSeries.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccDataSeries/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccDiagram/sch_AccDiagram.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccFloor/sch_AccFloor.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccFloor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccGrid/sch_AccGrid.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccGrid/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccLegend/sch_AccLegend.xba66
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccLegend/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccLegendEntry/sch_AccLegendEntry.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccLegendEntry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccStatisticsObject/sch_AccStatisticsObject.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccStatisticsObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccTitle/sch_AccTitle.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccTitle/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccWall/sch_AccWall.xba66
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccWall/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccessibleDocumentView/sch_AccessibleDocumentView.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sch/AccessibleDocumentView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartAxis/sch_ChXChartAxis.xba57
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartAxis/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartData/sch_ChXChartData.xba68
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartData/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartDataArray/sch_ChXChartDataArray.xba74
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartDataArray/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartDocument/sch_ChXChartDocument.xba89
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartView/sch_ChXChartView.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXChartView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXDataPoint/sch_ChXDataPoint.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXDataPoint/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXDataRow/sch_ChXDataRow.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXDataRow/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXDiagram/sch_ChXDiagram.xba143
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChXDiagram/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartArea/sch_ChartArea.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartArea/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartGrid/sch_ChartGrid.xba58
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartGrid/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartLegend/sch_ChartLegend.xba83
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartLegend/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartLine/sch_ChartLine.xba58
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartLine/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartTitle/sch_ChartTitle.xba92
-rw-r--r--qadevOOo/tests/basic/mod/sch/ChartTitle/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/AccessibleDrawDocumentView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/AccessibleDrawDocumentView/sd_AccessibleDrawDocumentView.xba82
-rw-r--r--qadevOOo/tests/basic/mod/sd/AccessibleOutlineView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/AccessibleOutlineView/sd_AccessibleOutlineView.xba136
-rw-r--r--qadevOOo/tests/basic/mod/sd/AccessibleSlideView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/AccessibleSlideView/sd_AccessibleSlideView.xba113
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdDocLinkTargets/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdDocLinkTargets/sd_SdDocLinkTargets.xba54
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdDrawPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdDrawPage/sd_SdDrawPage.xba107
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdDrawPagesAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdDrawPagesAccess/sd_SdDrawPagesAccess.xba61
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdGenericDrawPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdGenericDrawPage/sd_SdGenericDrawPage.xba109
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdLayer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdLayer/sd_SdLayer.xba58
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdLayerManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdLayerManager/sd_SdLayerManager.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdMasterPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdMasterPage/sd_SdMasterPage.xba110
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdMasterPagesAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdMasterPagesAccess/sd_SdMasterPagesAccess.xba58
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdPageLinkTargets/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdPageLinkTargets/sd_SdPageLinkTargets.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdUnoDrawView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdUnoDrawView/sd_SdUnoDrawView.xba123
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdUnoOutlineView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdUnoOutlineView/sd_SdUnoOutlineView.xba130
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdUnoPresView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdUnoPresView/sd_SdUnoPresView.xba137
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXCustomPresentation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXCustomPresentation/sd_SdXCustomPresentation.xba84
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXCustomPresentationAccess/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXCustomPresentationAccess/sd_SdXCustomPresentationAccess.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXImpressDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXImpressDocument/sd_SdXImpressDocument.xba100
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXPresentation/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXPresentation/sd_SdXPresentation.xba63
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sd/SdXShape/sd_SdXShape.xba98
-rw-r--r--qadevOOo/tests/basic/mod/servicemgr.uno/OServiceManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/servicemgr.uno/OServiceManager/servicemgr_uno_OServiceManager.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sfx/DocumentTemplates/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sfx/DocumentTemplates/sfx_DocumentTemplates.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sfx/FrameLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sfx/FrameLoader/sfx_FrameLoader.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sfx/SfxMacroLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sfx/SfxMacroLoader/sfx_SfxMacroLoader.xba62
-rw-r--r--qadevOOo/tests/basic/mod/sfx/StandaloneDocumentInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sfx/StandaloneDocumentInfo/sfx_StandaloneDocumentInfo.xba77
-rw-r--r--qadevOOo/tests/basic/mod/shlibloader.uno/DLLComponentLoader/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/shlibloader.uno/DLLComponentLoader/shlibloader_uno_DLLComponentLoader.xba59
-rw-r--r--qadevOOo/tests/basic/mod/simplereg.uno/SimpleRegistry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/simplereg.uno/SimpleRegistry/simplereg_uno_SimpleRegistry.xba53
-rw-r--r--qadevOOo/tests/basic/mod/simreg/SimpleRegistry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/simreg/SimpleRegistry/simreg_SimpleRegistry.xba53
-rw-r--r--qadevOOo/tests/basic/mod/sm/SmEditAccessible/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/SmEditAccessible/sm_SmEditAccessible.xba78
-rw-r--r--qadevOOo/tests/basic/mod/sm/SmGraphicAccessible/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/SmGraphicAccessible/sm_SmGraphicAccessible.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sm/SmModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/SmModel/sm_SmModel.xba54
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLExporter/sm_XMLExporter.xba109
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLImporter/sm_XMLImporter.xba85
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLMetaExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLMetaExporter/sm_XMLMetaExporter.xba111
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLMetaImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLMetaImporter/sm_XMLMetaImporter.xba113
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLSettingsExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLSettingsExporter/sm_XMLSettingsExporter.xba107
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLSettingsImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sm/XMLSettingsImporter/sm_XMLSettingsImporter.xba98
-rw-r--r--qadevOOo/tests/basic/mod/smgr/OServiceManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/smgr/OServiceManager/smgr_OServiceManager.xba79
-rw-r--r--qadevOOo/tests/basic/mod/smplmail/SimpleSystemMail/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/smplmail/SimpleSystemMail/smplmail_SimpleSystemMail.xba62
-rw-r--r--qadevOOo/tests/basic/mod/srtrs/SortedDynamicResultSetFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/srtrs/SortedDynamicResultSetFactory/srtrs_SortedDynamicResultSetFactory.xba56
-rw-r--r--qadevOOo/tests/basic/mod/stm/DataInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/DataInputStream/stm_DataInputStream.xba131
-rw-r--r--qadevOOo/tests/basic/mod/stm/DataOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/DataOutputStream/stm_DataOutputStream.xba115
-rw-r--r--qadevOOo/tests/basic/mod/stm/MarkableInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/MarkableInputStream/stm_MarkableInputStream.xba125
-rw-r--r--qadevOOo/tests/basic/mod/stm/MarkableOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/MarkableOutputStream/stm_MarkableOutputStream.xba127
-rw-r--r--qadevOOo/tests/basic/mod/stm/ObjectInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/ObjectInputStream/stm_ObjectInputStream.xba109
-rw-r--r--qadevOOo/tests/basic/mod/stm/ObjectOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/ObjectOutputStream/stm_ObjectOutputStream.xba104
-rw-r--r--qadevOOo/tests/basic/mod/stm/Pipe/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/Pipe/stm_Pipe.xba81
-rw-r--r--qadevOOo/tests/basic/mod/stm/Pump/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/stm/Pump/stm_Pump.xba92
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/DataInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/DataInputStream/streams_uno_DataInputStream.xba131
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/DataOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/DataOutputStream/streams_uno_DataOutputStream.xba115
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/MarkableInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/MarkableInputStream/streams_uno_MarkableInputStream.xba125
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/MarkableOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/MarkableOutputStream/streams_uno_MarkableOutputStream.xba127
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/ObjectInputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/ObjectInputStream/streams_uno_ObjectInputStream.xba109
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/ObjectOutputStream/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/ObjectOutputStream/streams_uno_ObjectOutputStream.xba104
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/Pipe/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/Pipe/streams_uno_Pipe.xba81
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/Pump/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/streams.uno/Pump/streams_uno_Pump.xba92
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBox/svtools_AccessibleBrowseBox.xba115
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxHeaderBar/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxHeaderBar/svtools_AccessibleBrowseBoxHeaderBar.xba85
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxHeaderCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxHeaderCell/svtools_AccessibleBrowseBoxHeaderCell.xba98
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxTable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxTable/svtools_AccessibleBrowseBoxTable.xba81
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxTableCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleBrowseBoxTableCell/svtools_AccessibleBrowseBoxTableCell.xba98
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleIconChoiceCtrl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleIconChoiceCtrl/svtools_AccessibleIconChoiceCtrl.xba98
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleIconChoiceCtrlEntry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleIconChoiceCtrlEntry/svtools_AccessibleIconChoiceCtrlEntry.xba97
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTabBarPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTabBarPage/svtools_AccessibleTabBarPage.xba66
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTabBarPageList/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTabBarPageList/svtools_AccessibleTabBarPageList.xba75
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTreeListBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTreeListBox/svtools_AccessibleTreeListBox.xba87
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTreeListBoxEntry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svtools/AccessibleTreeListBoxEntry/svtools_AccessibleTreeListBoxEntry.xba93
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleControlShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleControlShape/svx_AccessibleControlShape.xba89
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleEditableTextPara/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleEditableTextPara/svx_AccessibleEditableTextPara.xba108
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleGraphicShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleGraphicShape/svx_AccessibleGraphicShape.xba83
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleOLEShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleOLEShape/svx_AccessibleOLEShape.xba83
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePageShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePageShape/svx_AccessiblePageShape.xba86
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePresentationGraphicShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePresentationGraphicShape/svx_AccessiblePresentationGraphicShape.xba86
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePresentationOLEShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePresentationOLEShape/svx_AccessiblePresentationOLEShape.xba85
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePresentationShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessiblePresentationShape/svx_AccessiblePresentationShape.xba87
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/AccessibleShape/svx_AccessibleShape.xba83
-rw-r--r--qadevOOo/tests/basic/mod/svx/GraphicExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/GraphicExporter/svx_GraphicExporter.xba109
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxDrawPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxDrawPage/svx_SvxDrawPage.xba125
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxGraphCtrlAccessibleContext/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxGraphCtrlAccessibleContext/svx_SvxGraphCtrlAccessibleContext.xba102
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxGraphicObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxGraphicObject/svx_SvxGraphicObject.xba102
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShape/svx_SvxShape.xba80
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeCircle/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeCircle/svx_SvxShapeCircle.xba102
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeCollection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeCollection/svx_SvxShapeCollection.xba68
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeConnector/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeConnector/svx_SvxShapeConnector.xba78
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeControl/svx_SvxShapeControl.xba108
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeDimensioning/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeDimensioning/svx_SvxShapeDimensioning.xba98
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeGroup/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapeGroup/svx_SvxShapeGroup.xba102
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapePolyPolygon/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapePolyPolygon/svx_SvxShapePolyPolygon.xba107
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapePolyPolygonBezier/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxShapePolyPolygonBezier/svx_SvxShapePolyPolygonBezier.xba121
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoNumberingRules/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoNumberingRules/svx_SvxUnoNumberingRules.xba58
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoText/svx_SvxUnoText.xba91
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextContent/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextContent/svx_SvxUnoTextContent.xba90
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextContentEnum/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextContentEnum/svx_SvxUnoTextContentEnum.xba81
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextCursor/svx_SvxUnoTextCursor.xba85
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextField/svx_SvxUnoTextField.xba94
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextRange/svx_SvxUnoTextRange.xba80
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextRangeEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/svx/SvxUnoTextRangeEnumeration/svx_SvxUnoTextRangeEnumeration.xba81
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleDocumentPageView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleDocumentPageView/sw_SwAccessibleDocumentPageView.xba110
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleDocumentView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleDocumentView/sw_SwAccessibleDocumentView.xba76
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleEndnoteView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleEndnoteView/sw_SwAccessibleEndnoteView.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleFooterView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleFooterView/sw_SwAccessibleFooterView.xba76
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleFootnoteView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleFootnoteView/sw_SwAccessibleFootnoteView.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleHeaderView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleHeaderView/sw_SwAccessibleHeaderView.xba80
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessiblePageView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessiblePageView/sw_SwAccessiblePageView.xba114
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleParagraphView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleParagraphView/sw_SwAccessibleParagraphView.xba85
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTableCellView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTableCellView/sw_SwAccessibleTableCellView.xba73
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTableView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTableView/sw_SwAccessibleTableView.xba84
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTextEmbeddedObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTextEmbeddedObject/sw_SwAccessibleTextEmbeddedObject.xba75
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTextFrameView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTextFrameView/sw_SwAccessibleTextFrameView.xba91
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTextGraphicObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwAccessibleTextGraphicObject/sw_SwAccessibleTextGraphicObject.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXAutoTextContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXAutoTextContainer/sw_SwXAutoTextContainer.xba59
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXAutoTextEntry/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXAutoTextEntry/sw_SwXAutoTextEntry.xba108
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXAutoTextGroup/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXAutoTextGroup/sw_SwXAutoTextGroup.xba83
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXBodyText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXBodyText/sw_SwXBodyText.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXBookmark/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXBookmark/sw_SwXBookmark.xba104
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXBookmarks/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXBookmarks/sw_SwXBookmarks.xba92
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXCell/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXCell/sw_SwXCell.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXCellRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXCellRange/sw_SwXCellRange.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXChapterNumbering/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXChapterNumbering/sw_SwXChapterNumbering.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDocumentIndex/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDocumentIndex/sw_SwXDocumentIndex.xba107
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDocumentIndexMark/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDocumentIndexMark/sw_SwXDocumentIndexMark.xba82
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDocumentIndexes/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDocumentIndexes/sw_SwXDocumentIndexes.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDrawPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXDrawPage/sw_SwXDrawPage.xba86
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXEndnoteProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXEndnoteProperties/sw_SwXEndnoteProperties.xba66
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFieldEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFieldEnumeration/sw_SwXFieldEnumeration.xba72
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFieldMaster/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFieldMaster/sw_SwXFieldMaster.xba54
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnote/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnote/sw_SwXFootnote.xba85
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnoteProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnoteProperties/sw_SwXFootnoteProperties.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnoteText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnoteText/sw_SwXFootnoteText.xba76
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnotes/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFootnotes/sw_SwXFootnotes.xba66
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFrames/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXFrames/sw_SwXFrames.xba81
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXHeadFootText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXHeadFootText/sw_SwXHeadFootText.xba87
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXLineNumberingProperties/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXLineNumberingProperties/sw_SwXLineNumberingProperties.xba66
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXMailMerge/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXMailMerge/sw_SwXMailMerge.xba155
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXModule/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXModule/sw_SwXModule.xba50
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXNumberingRules/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXNumberingRules/sw_SwXNumberingRules.xba75
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXParagraph/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXParagraph/sw_SwXParagraph.xba101
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXParagraphEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXParagraphEnumeration/sw_SwXParagraphEnumeration.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXPrintSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXPrintSettings/sw_SwXPrintSettings.xba60
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXPropertySet/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXPropertySet/sw_SwXPropertySet.xba51
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXPropertySetInfo/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXPropertySetInfo/sw_SwXPropertySetInfo.xba51
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXReferenceMark/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXReferenceMark/sw_SwXReferenceMark.xba92
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXReferenceMarks/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXReferenceMarks/sw_SwXReferenceMarks.xba85
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXShape/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXShape/sw_SwXShape.xba92
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXStyle/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXStyle/sw_SwXStyle.xba104
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXStyleFamilies/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXStyleFamilies/sw_SwXStyleFamilies.xba57
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXStyleFamily/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXStyleFamily/sw_SwXStyleFamily.xba78
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTableCellText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTableCellText/sw_SwXTableCellText.xba75
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTableColumns/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTableColumns/sw_SwXTableColumns.xba84
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTableRows/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTableRows/sw_SwXTableRows.xba87
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextColumns/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextColumns/sw_SwXTextColumns.xba70
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextCursor/sw_SwXTextCursor.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextDefaults/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextDefaults/sw_SwXTextDefaults.xba75
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextDocument/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextDocument/sw_SwXTextDocument.xba98
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextEmbeddedObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextEmbeddedObject/sw_SwXTextEmbeddedObject.xba68
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextEmbeddedObjects/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextEmbeddedObjects/sw_SwXTextEmbeddedObjects.xba54
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextField/sw_SwXTextField.xba93
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFieldMasters/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFieldMasters/sw_SwXTextFieldMasters.xba76
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFieldTypes/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFieldTypes/sw_SwXTextFieldTypes.xba71
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFrame/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFrame/sw_SwXTextFrame.xba120
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFrameText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextFrameText/sw_SwXTextFrameText.xba83
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextGraphicObject/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextGraphicObject/sw_SwXTextGraphicObject.xba89
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextGraphicObjects/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextGraphicObjects/sw_SwXTextGraphicObjects.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextPortion/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextPortion/sw_SwXTextPortion.xba74
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextPortionEnumeration/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextPortionEnumeration/sw_SwXTextPortionEnumeration.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextRange/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextRange/sw_SwXTextRange.xba57
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextRanges/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextRanges/sw_SwXTextRanges.xba79
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextSearch/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextSearch/sw_SwXTextSearch.xba58
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextSection/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextSection/sw_SwXTextSection.xba103
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextSections/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextSections/sw_SwXTextSections.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTable/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTable/sw_SwXTextTable.xba148
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTableCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTableCursor/sw_SwXTextTableCursor.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTableRow/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTableRow/sw_SwXTextTableRow.xba64
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTables/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextTables/sw_SwXTextTables.xba77
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextView/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextView/sw_SwXTextView.xba120
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextViewCursor/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXTextViewCursor/sw_SwXTextViewCursor.xba67
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXViewSettings/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/SwXViewSettings/sw_SwXViewSettings.xba58
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLContentExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLContentExporter/sw_XMLContentExporter.xba119
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLContentImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLContentImporter/sw_XMLContentImporter.xba90
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLExporter/sw_XMLExporter.xba121
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLImporter/sw_XMLImporter.xba91
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLMetaExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLMetaExporter/sw_XMLMetaExporter.xba111
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLMetaImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLMetaImporter/sw_XMLMetaImporter.xba92
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLSettingsExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLSettingsExporter/sw_XMLSettingsExporter.xba113
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLSettingsImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLSettingsImporter/sw_XMLSettingsImporter.xba110
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLStylesExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLStylesExporter/sw_XMLStylesExporter.xba106
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLStylesImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sw/XMLStylesImporter/sw_XMLStylesImporter.xba93
-rw-r--r--qadevOOo/tests/basic/mod/sysdtrans/SystemClipboard/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/sysdtrans/SystemClipboard/sysdtrans_SystemClipboard.xba86
-rw-r--r--qadevOOo/tests/basic/mod/syssh/SystemShellExecute/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/syssh/SystemShellExecute/syssh_SystemShellExecute.xba53
-rw-r--r--qadevOOo/tests/basic/mod/tcv/TypeConverter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/tcv/TypeConverter/tcv_TypeConverter.xba53
-rw-r--r--qadevOOo/tests/basic/mod/tdmgr/TypeDescriptionManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/tdmgr/TypeDescriptionManager/tdmgr_TypeDescriptionManager.xba59
-rw-r--r--qadevOOo/tests/basic/mod/text/DefaultNumberingProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/text/DefaultNumberingProvider/text_DefaultNumberingProvider.xba53
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleButton/toolkit_AccessibleButton.xba90
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleCheckBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleCheckBox/toolkit_AccessibleCheckBox.xba89
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleComboBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleComboBox/toolkit_AccessibleComboBox.xba92
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleDropDownComboBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleDropDownComboBox/toolkit_AccessibleDropDownComboBox.xba65
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleDropDownListBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleDropDownListBox/toolkit_AccessibleDropDownListBox.xba70
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleEdit/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleEdit/toolkit_AccessibleEdit.xba111
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleFixedText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleFixedText/toolkit_AccessibleFixedText.xba97
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleList/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleList/toolkit_AccessibleList.xba122
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleListBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleListBox/toolkit_AccessibleListBox.xba99
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleListItem/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleListItem/toolkit_AccessibleListItem.xba107
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenu/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenu/toolkit_AccessibleMenu.xba86
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenuBar/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenuBar/toolkit_AccessibleMenuBar.xba75
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenuItem/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenuItem/toolkit_AccessibleMenuItem.xba82
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenuSeparator/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleMenuSeparator/toolkit_AccessibleMenuSeparator.xba77
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleRadioButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleRadioButton/toolkit_AccessibleRadioButton.xba102
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleScrollBar/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleScrollBar/toolkit_AccessibleScrollBar.xba78
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleStatusBar/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleStatusBar/toolkit_AccessibleStatusBar.xba73
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleStatusBarItem/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleStatusBarItem/toolkit_AccessibleStatusBarItem.xba91
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleTabControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleTabControl/toolkit_AccessibleTabControl.xba101
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleTabPage/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleTabPage/toolkit_AccessibleTabPage.xba106
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleToolBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleToolBox/toolkit_AccessibleToolBox.xba79
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleToolBoxItem/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/AccessibleToolBoxItem/toolkit_AccessibleToolBoxItem.xba79
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/TabController/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/TabController/toolkit_TabController.xba75
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/TabControllerModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/TabControllerModel/toolkit_TabControllerModel.xba74
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/Toolkit/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/Toolkit/toolkit_Toolkit.xba65
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlButton/toolkit_UnoControlButton.xba111
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlButtonModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlButtonModel/toolkit_UnoControlButtonModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCheckBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCheckBox/toolkit_UnoControlCheckBox.xba119
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCheckBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCheckBoxModel/toolkit_UnoControlCheckBoxModel.xba56
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlComboBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlComboBox/toolkit_UnoControlComboBox.xba103
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlComboBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlComboBoxModel/toolkit_UnoControlComboBoxModel.xba56
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlContainer/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlContainer/toolkit_UnoControlContainer.xba113
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlContainerModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlContainerModel/toolkit_UnoControlContainerModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCurrencyField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCurrencyField/toolkit_UnoControlCurrencyField.xba105
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCurrencyFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlCurrencyFieldModel/toolkit_UnoControlCurrencyFieldModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDateField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDateField/toolkit_UnoControlDateField.xba102
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDateFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDateFieldModel/toolkit_UnoControlDateFieldModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDialog/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDialog/toolkit_UnoControlDialog.xba108
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDialogModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlDialogModel/toolkit_UnoControlDialogModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlEdit/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlEdit/toolkit_UnoControlEdit.xba101
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlEditModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlEditModel/toolkit_UnoControlEditModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFileControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFileControl/toolkit_UnoControlFileControl.xba103
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFileControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFileControlModel/toolkit_UnoControlFileControlModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFixedLineModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFixedLineModel/toolkit_UnoControlFixedLineModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFixedText/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFixedText/toolkit_UnoControlFixedText.xba102
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFixedTextModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFixedTextModel/toolkit_UnoControlFixedTextModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFormattedField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFormattedField/toolkit_UnoControlFormattedField.xba100
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFormattedFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlFormattedFieldModel/toolkit_UnoControlFormattedFieldModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlGroupBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlGroupBox/toolkit_UnoControlGroupBox.xba102
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlGroupBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlGroupBoxModel/toolkit_UnoControlGroupBoxModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlImageControl/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlImageControl/toolkit_UnoControlImageControl.xba99
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlImageControlModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlImageControlModel/toolkit_UnoControlImageControlModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlListBox/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlListBox/toolkit_UnoControlListBox.xba120
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlListBoxModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlListBoxModel/toolkit_UnoControlListBoxModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlNumericField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlNumericField/toolkit_UnoControlNumericField.xba101
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlNumericFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlNumericFieldModel/toolkit_UnoControlNumericFieldModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlPatternField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlPatternField/toolkit_UnoControlPatternField.xba101
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlPatternFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlPatternFieldModel/toolkit_UnoControlPatternFieldModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlProgressBarModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlProgressBarModel/toolkit_UnoControlProgressBarModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlRadioButton/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlRadioButton/toolkit_UnoControlRadioButton.xba101
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlRadioButtonModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlRadioButtonModel/toolkit_UnoControlRadioButtonModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlScrollBarModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlScrollBarModel/toolkit_UnoControlScrollBarModel.xba57
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlTimeField/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlTimeField/toolkit_UnoControlTimeField.xba101
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlTimeFieldModel/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/toolkit/UnoControlTimeFieldModel/toolkit_UnoControlTimeFieldModel.xba59
-rw-r--r--qadevOOo/tests/basic/mod/typeconverter.uno/TypeConverter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/typeconverter.uno/TypeConverter/typeconverter_uno_TypeConverter.xba53
-rw-r--r--qadevOOo/tests/basic/mod/typemgr.uno/TypeDescriptionManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/typemgr.uno/TypeDescriptionManager/typemgr_uno_TypeDescriptionManager.xba59
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UcbContentProviderProxyFactory/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UcbContentProviderProxyFactory/ucb_UcbContentProviderProxyFactory.xba53
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UcbPropertiesManager/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UcbPropertiesManager/ucb_UcbPropertiesManager.xba53
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UcbStore/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UcbStore/ucb_UcbStore.xba53
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UniversalContentBroker/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucb/UniversalContentBroker/ucb_UniversalContentBroker.xba80
-rw-r--r--qadevOOo/tests/basic/mod/ucpdav/WebDAVContentProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucpdav/WebDAVContentProvider/ucpdav_WebDAVContentProvider.xba69
-rw-r--r--qadevOOo/tests/basic/mod/ucpfile/FileProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucpfile/FileProvider/ucpfile_FileProvider.xba73
-rw-r--r--qadevOOo/tests/basic/mod/ucphier/HierarchyContentProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucphier/HierarchyContentProvider/ucphier_HierarchyContentProvider.xba65
-rw-r--r--qadevOOo/tests/basic/mod/ucphier/HierarchyDataSource/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucphier/HierarchyDataSource/ucphier_HierarchyDataSource.xba71
-rw-r--r--qadevOOo/tests/basic/mod/ucppkg/PackageContentProvider/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/ucppkg/PackageContentProvider/ucppkg_PackageContentProvider.xba65
-rw-r--r--qadevOOo/tests/basic/mod/uui/UUIInteractionHandler/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/uui/UUIInteractionHandler/uui_UUIInteractionHandler.xba53
-rw-r--r--qadevOOo/tests/basic/mod/uuresolver.uno/UnoUrlResolver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/uuresolver.uno/UnoUrlResolver/uuresolver_uno_UnoUrlResolver.xba53
-rw-r--r--qadevOOo/tests/basic/mod/uuresolver/UnoUrlResolver/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/uuresolver/UnoUrlResolver/uuresolver_UnoUrlResolver.xba53
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLContentExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLContentExporter/xmloff_Chart_XMLContentExporter.xba111
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLContentImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLContentImporter/xmloff_Chart_XMLContentImporter.xba101
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLExporter/xmloff_Chart_XMLExporter.xba112
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLImporter/xmloff_Chart_XMLImporter.xba101
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLStylesExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLStylesExporter/xmloff_Chart_XMLStylesExporter.xba99
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLStylesImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Chart/XMLStylesImporter/xmloff_Chart_XMLStylesImporter.xba87
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLContentExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLContentExporter/xmloff_Draw_XMLContentExporter.xba115
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLContentImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLContentImporter/xmloff_Draw_XMLContentImporter.xba115
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLExporter/xmloff_Draw_XMLExporter.xba110
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLImporter/xmloff_Draw_XMLImporter.xba115
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLMetaExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLMetaExporter/xmloff_Draw_XMLMetaExporter.xba111
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLMetaImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLMetaImporter/xmloff_Draw_XMLMetaImporter.xba94
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLSettingsExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLSettingsExporter/xmloff_Draw_XMLSettingsExporter.xba119
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLSettingsImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLSettingsImporter/xmloff_Draw_XMLSettingsImporter.xba95
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLStylesExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLStylesExporter/xmloff_Draw_XMLStylesExporter.xba116
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLStylesImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Draw/XMLStylesImporter/xmloff_Draw_XMLStylesImporter.xba93
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLContentExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLContentExporter/xmloff_Impress_XMLContentExporter.xba112
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLContentImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLContentImporter/xmloff_Impress_XMLContentImporter.xba128
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLExporter/xmloff_Impress_XMLExporter.xba112
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLImporter/xmloff_Impress_XMLImporter.xba90
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLMetaExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLMetaExporter/xmloff_Impress_XMLMetaExporter.xba111
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLMetaImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLMetaImporter/xmloff_Impress_XMLMetaImporter.xba93
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLSettingsExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLSettingsExporter/xmloff_Impress_XMLSettingsExporter.xba123
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLSettingsImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLSettingsImporter/xmloff_Impress_XMLSettingsImporter.xba95
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLStylesExporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLStylesExporter/xmloff_Impress_XMLStylesExporter.xba113
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLStylesImporter/script.xlb5
-rw-r--r--qadevOOo/tests/basic/mod/xmloff/Impress/XMLStylesImporter/xmloff_Impress_XMLStylesImporter.xba95
-rw-r--r--qadevOOo/tests/java/complex/unoapi/CheckModuleAPI.java654
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessible.java57
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleAction.java167
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleComponent.java651
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleContext.java354
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleEditableText.java542
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleEventBroadcaster.java212
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleExtendedComponent.java123
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleImage.java74
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleSelection.java600
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleTable.java1010
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleText.java1195
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleValue.java351
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlButtonModel.java122
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlCheckBoxModel.java109
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlComboBoxModel.java138
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlContainerModel.java72
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlCurrencyFieldModel.java133
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlDateFieldModel.java173
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlDialogElement.java35
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlDialogModel.java87
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlEditModel.java130
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlFileControlModel.java117
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlFixedLineModel.java76
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlFixedTextModel.java111
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlFormattedFieldModel.java251
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlGroupBoxModel.java85
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlImageControlModel.java109
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlListBoxModel.java126
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlModel.java35
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlNumericFieldModel.java133
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlPatternFieldModel.java116
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlProgressBarModel.java90
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlRadioButtonModel.java108
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlScrollBarModel.java115
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlSpinButtonModel.java71
-rw-r--r--qadevOOo/tests/java/ifc/awt/_UnoControlTimeFieldModel.java137
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XButton.java118
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XCheckBox.java150
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XComboBox.java285
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XControl.java222
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XControlContainer.java142
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XCurrencyField.java308
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XDataTransferProviderAccess.java135
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XDateField.java340
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XDialog.java158
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XFixedText.java120
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XImageConsumer.java144
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XImageProducer.java165
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XItemListener.java119
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XLayoutConstrains.java77
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XListBox.java513
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XMessageBoxFactory.java110
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XNumericField.java311
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XPatternField.java176
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XRadioButton.java151
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XScrollBar.java228
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XSpinField.java216
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XSpinValue.java220
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XSystemChildFactory.java40
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XTabController.java168
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XTabControllerModel.java166
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XTextComponent.java270
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XTextLayoutConstrains.java80
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XTextListener.java128
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XTimeField.java295
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XToolkit.java156
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XTopWindow.java206
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XUnoControlContainer.java181
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XUserInputInterception.java539
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XView.java143
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XWindow.java624
-rw-r--r--qadevOOo/tests/java/ifc/awt/tree/_TreeControlModel.java37
-rw-r--r--qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeDataModel.java99
-rw-r--r--qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeNode.java295
-rw-r--r--qadevOOo/tests/java/ifc/awt/tree/_XTreeControl.java671
-rw-r--r--qadevOOo/tests/java/ifc/awt/tree/_XTreeDataModel.java183
-rw-r--r--qadevOOo/tests/java/ifc/awt/tree/_XTreeNode.java261
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XExactName.java94
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XFastPropertySet.java235
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XHierarchicalPropertySet.java161
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XIntrospection.java62
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XMultiHierarchicalPropertySet.java157
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XMultiPropertySet.java378
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XMultiPropertyStates.java235
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XProperty.java44
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XPropertyAccess.java236
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XPropertyContainer.java309
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XPropertySet.java674
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XPropertySetInfo.java126
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XPropertyState.java274
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XPropertyWithState.java113
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XTolerantMultiPropertySet.java346
-rw-r--r--qadevOOo/tests/java/ifc/bridge/_XBridge.java148
-rw-r--r--qadevOOo/tests/java/ifc/bridge/_XBridgeFactory.java233
-rw-r--r--qadevOOo/tests/java/ifc/bridge/_XUnoUrlResolver.java207
-rw-r--r--qadevOOo/tests/java/ifc/chart/_BarDiagram.java159
-rw-r--r--qadevOOo/tests/java/ifc/chart/_Chart3DBarProperties.java132
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartAxis.java196
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartAxisXSupplier.java141
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartAxisYSupplier.java167
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartAxisZSupplier.java204
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartDataPointProperties.java115
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartDataRowProperties.java63
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartDocument.java44
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartLegend.java42
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartStatistics.java74
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartTableAddressSupplier.java67
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartTitle.java57
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartTwoAxisXSupplier.java108
-rw-r--r--qadevOOo/tests/java/ifc/chart/_ChartTwoAxisYSupplier.java108
-rw-r--r--qadevOOo/tests/java/ifc/chart/_Diagram.java68
-rw-r--r--qadevOOo/tests/java/ifc/chart/_Dim3DDiagram.java67
-rw-r--r--qadevOOo/tests/java/ifc/chart/_LineDiagram.java194
-rw-r--r--qadevOOo/tests/java/ifc/chart/_StackableDiagram.java89
-rw-r--r--qadevOOo/tests/java/ifc/chart/_StockDiagram.java87
-rw-r--r--qadevOOo/tests/java/ifc/chart/_X3DDisplay.java77
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XAxisXSupplier.java106
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XAxisYSupplier.java109
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XAxisZSupplier.java109
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XChartData.java184
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XChartDataArray.java233
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XChartDocument.java164
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XDiagram.java156
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XStatisticDisplay.java91
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XTwoAxisXSupplier.java63
-rw-r--r--qadevOOo/tests/java/ifc/chart/_XTwoAxisYSupplier.java71
-rw-r--r--qadevOOo/tests/java/ifc/configuration/_XTemplateContainer.java50
-rw-r--r--qadevOOo/tests/java/ifc/configuration/_XTemplateInstance.java50
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XBackend.java265
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XBackendEntities.java181
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XLayer.java90
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XLayerHandler.java266
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XLayerImporter.java166
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XMultiLayerStratum.java316
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XSchema.java263
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XSchemaSupplier.java118
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XSingleLayerStratum.java152
-rw-r--r--qadevOOo/tests/java/ifc/configuration/backend/_XUpdateHandler.java260
-rw-r--r--qadevOOo/tests/java/ifc/connection/_XAcceptor.java323
-rw-r--r--qadevOOo/tests/java/ifc/connection/_XConnector.java198
-rw-r--r--qadevOOo/tests/java/ifc/container/_XChild.java100
-rw-r--r--qadevOOo/tests/java/ifc/container/_XContainer.java370
-rw-r--r--qadevOOo/tests/java/ifc/container/_XContainerQuery.java162
-rw-r--r--qadevOOo/tests/java/ifc/container/_XContentEnumerationAccess.java95
-rw-r--r--qadevOOo/tests/java/ifc/container/_XElementAccess.java69
-rw-r--r--qadevOOo/tests/java/ifc/container/_XEnumeration.java137
-rw-r--r--qadevOOo/tests/java/ifc/container/_XEnumerationAccess.java57
-rw-r--r--qadevOOo/tests/java/ifc/container/_XHierarchicalName.java80
-rw-r--r--qadevOOo/tests/java/ifc/container/_XHierarchicalNameAccess.java92
-rw-r--r--qadevOOo/tests/java/ifc/container/_XIndexAccess.java158
-rw-r--r--qadevOOo/tests/java/ifc/container/_XIndexContainer.java210
-rw-r--r--qadevOOo/tests/java/ifc/container/_XIndexReplace.java211
-rw-r--r--qadevOOo/tests/java/ifc/container/_XNameAccess.java164
-rw-r--r--qadevOOo/tests/java/ifc/container/_XNameContainer.java259
-rw-r--r--qadevOOo/tests/java/ifc/container/_XNameReplace.java226
-rw-r--r--qadevOOo/tests/java/ifc/container/_XNamed.java165
-rw-r--r--qadevOOo/tests/java/ifc/container/_XSet.java150
-rw-r--r--qadevOOo/tests/java/ifc/datatransfer/_XDataFormatTranslator.java77
-rw-r--r--qadevOOo/tests/java/ifc/datatransfer/_XMimeContentTypeFactory.java95
-rw-r--r--qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboard.java146
-rw-r--r--qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardEx.java55
-rw-r--r--qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardNotifier.java175
-rw-r--r--qadevOOo/tests/java/ifc/datatransfer/clipboard/_XFlushableClipboard.java56
-rw-r--r--qadevOOo/tests/java/ifc/document/_DocumentInfo.java151
-rw-r--r--qadevOOo/tests/java/ifc/document/_ExportFilter.java51
-rw-r--r--qadevOOo/tests/java/ifc/document/_ImportFilter.java52
-rw-r--r--qadevOOo/tests/java/ifc/document/_LinkTarget.java75
-rw-r--r--qadevOOo/tests/java/ifc/document/_OfficeDocument.java45
-rw-r--r--qadevOOo/tests/java/ifc/document/_Settings.java174
-rw-r--r--qadevOOo/tests/java/ifc/document/_XActionLockable.java109
-rw-r--r--qadevOOo/tests/java/ifc/document/_XDocumentInfo.java224
-rw-r--r--qadevOOo/tests/java/ifc/document/_XDocumentInfoSupplier.java56
-rw-r--r--qadevOOo/tests/java/ifc/document/_XDocumentInsertable.java198
-rw-r--r--qadevOOo/tests/java/ifc/document/_XEmbeddedObjectSupplier.java56
-rw-r--r--qadevOOo/tests/java/ifc/document/_XEventBroadcaster.java83
-rw-r--r--qadevOOo/tests/java/ifc/document/_XEventsSupplier.java60
-rw-r--r--qadevOOo/tests/java/ifc/document/_XExporter.java90
-rw-r--r--qadevOOo/tests/java/ifc/document/_XFilter.java183
-rw-r--r--qadevOOo/tests/java/ifc/document/_XImporter.java77
-rw-r--r--qadevOOo/tests/java/ifc/document/_XLinkTargetSupplier.java59
-rw-r--r--qadevOOo/tests/java/ifc/document/_XMimeTypeInfo.java91
-rw-r--r--qadevOOo/tests/java/ifc/document/_XStandaloneDocumentInfo.java131
-rw-r--r--qadevOOo/tests/java/ifc/document/_XTypeDetection.java123
-rw-r--r--qadevOOo/tests/java/ifc/document/_XViewDataSupplier.java123
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_AreaShapeDescriptor.java115
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_CaptionShape.java35
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_ConnectorProperties.java48
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_ConnectorShape.java78
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_ConnectorShapeDescriptor.java43
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_DimensioningShapeDescriptor.java48
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_DrawingDocument.java45
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_DrawingDocumentDrawView.java177
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_EllipseShape.java46
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_EllipseShapeDescriptor.java36
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_FillProperties.java219
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_GenericDrawPage.java96
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_GenericDrawingDocument.java34
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_GraphicObjectShape.java177
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_GraphicObjectShapeDescriptor.java71
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_Layer.java47
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_LineProperties.java86
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_LineShapeDescriptor.java150
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_MeasureProperties.java60
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_MeasureShape.java46
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_PolyPolygonBezierDescriptor.java47
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_PolyPolygonDescriptor.java47
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_RotationDescriptor.java102
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_ShadowDescriptor.java43
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_ShadowProperties.java48
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_Shape.java158
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_ShapeDescriptor.java147
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_Text.java72
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_TextProperties.java67
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_TextShape.java44
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_TextShapeDescriptor.java36
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XConnectorShape.java147
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XControlShape.java106
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XDrawPageDuplicator.java91
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XDrawPageExpander.java74
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XDrawPageSummarizer.java74
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XDrawPageSupplier.java44
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XDrawPages.java94
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XDrawPagesSupplier.java64
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XDrawView.java113
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XGluePointsSupplier.java64
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XLayerManager.java166
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XLayerSupplier.java70
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XMasterPageTarget.java108
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XMasterPagesSupplier.java63
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XShape.java196
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XShapeBinder.java109
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XShapeCombiner.java110
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XShapeDescriptor.java97
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XShapeGroup.java70
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XShapeGrouper.java110
-rw-r--r--qadevOOo/tests/java/ifc/drawing/_XShapes.java109
-rw-r--r--qadevOOo/tests/java/ifc/form/_DataAwareControlModel.java168
-rw-r--r--qadevOOo/tests/java/ifc/form/_FormComponent.java43
-rw-r--r--qadevOOo/tests/java/ifc/form/_FormControlModel.java45
-rw-r--r--qadevOOo/tests/java/ifc/form/_XApproveActionBroadcaster.java110
-rw-r--r--qadevOOo/tests/java/ifc/form/_XBoundComponent.java58
-rw-r--r--qadevOOo/tests/java/ifc/form/_XBoundControl.java82
-rw-r--r--qadevOOo/tests/java/ifc/form/_XChangeBroadcaster.java200
-rw-r--r--qadevOOo/tests/java/ifc/form/_XConfirmDeleteBroadcaster.java75
-rwxr-xr-xqadevOOo/tests/java/ifc/form/_XDatabaseParameterBroadcaster.java100
-rw-r--r--qadevOOo/tests/java/ifc/form/_XFormController.java173
-rw-r--r--qadevOOo/tests/java/ifc/form/_XFormsSupplier.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/_XGrid.java83
-rw-r--r--qadevOOo/tests/java/ifc/form/_XGridColumnFactory.java80
-rw-r--r--qadevOOo/tests/java/ifc/form/_XGridFieldDataSupplier.java68
-rw-r--r--qadevOOo/tests/java/ifc/form/_XImageProducerSupplier.java61
-rw-r--r--qadevOOo/tests/java/ifc/form/_XLoadListener.java94
-rw-r--r--qadevOOo/tests/java/ifc/form/_XLoadable.java247
-rw-r--r--qadevOOo/tests/java/ifc/form/_XReset.java194
-rw-r--r--qadevOOo/tests/java/ifc/form/_XSubmit.java191
-rw-r--r--qadevOOo/tests/java/ifc/form/_XUpdateBroadcaster.java248
-rw-r--r--qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseCheckBox.java36
-rw-r--r--qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseRadioButton.java36
-rw-r--r--qadevOOo/tests/java/ifc/form/binding/_XBindableValue.java122
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_CheckBox.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_ComboBox.java43
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_CommandButton.java45
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_CurrencyField.java58
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DataForm.java89
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DatabaseComboBox.java46
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DatabaseForm.java93
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DatabaseFormattedField.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DatabaseImageControl.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DatabaseListBox.java46
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DatabasePatternField.java45
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DatabaseTextField.java45
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_DateField.java55
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_FileControl.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_FormattedField.java35
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_GridControl.java101
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_HTMLForm.java47
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_HiddenControl.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_ImageButton.java46
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_ListBox.java46
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_NavigationToolBar.java52
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_NumericField.java57
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_PatternField.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_RadioButton.java46
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_RichTextControl.java34
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_ScrollBar.java34
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_SpinButton.java34
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_TextField.java44
-rw-r--r--qadevOOo/tests/java/ifc/form/component/_TimeField.java57
-rw-r--r--qadevOOo/tests/java/ifc/form/submission/_XSubmission.java192
-rw-r--r--qadevOOo/tests/java/ifc/form/submission/_XSubmissionSupplier.java81
-rw-r--r--qadevOOo/tests/java/ifc/form/validation/_XValidatable.java85
-rw-r--r--qadevOOo/tests/java/ifc/form/validation/_XValidatableFormComponent.java247
-rw-r--r--qadevOOo/tests/java/ifc/form/validation/_XValidityConstraintListener.java90
-rw-r--r--qadevOOo/tests/java/ifc/formula/_FormulaProperties.java99
-rw-r--r--qadevOOo/tests/java/ifc/frame/_Desktop.java54
-rw-r--r--qadevOOo/tests/java/ifc/frame/_Frame.java35
-rw-r--r--qadevOOo/tests/java/ifc/frame/_FrameLoader.java45
-rw-r--r--qadevOOo/tests/java/ifc/frame/_SynchronousFrameLoader.java45
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XComponentLoader.java157
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XController.java226
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XDesktop.java130
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XDispatch.java243
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XDispatchProvider.java167
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XDispatchProviderInterception.java142
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XDispatchRecorder.java224
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XDispatchRecorderSupplier.java245
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XDocumentTemplates.java276
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XFrame.java583
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XFrameActionListener.java44
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XFrameLoader.java210
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XFramesSupplier.java211
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XInplaceLayout.java48
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XLayoutManager.java198
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XModel.java258
-rwxr-xr-xqadevOOo/tests/java/ifc/frame/_XModuleManager.java163
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XNotifyingDispatch.java131
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XPopupMenuController.java139
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XStatusListener.java48
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XStorable.java228
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XSynchronousFrameLoader.java183
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XTasksSupplier.java100
-rw-r--r--qadevOOo/tests/java/ifc/frame/_XUIControllerRegistration.java63
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XBreakIterator.java681
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XCalendar.java561
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XCharacterClassification.java416
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XCollator.java430
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XExtendedCalendar.java138
-rwxr-xr-xqadevOOo/tests/java/ifc/i18n/_XExtendedIndexEntrySupplier.java336
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XExtendedTransliteration.java95
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XIndexEntrySupplier.java107
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XLocaleData.java497
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XNumberFormatCode.java163
-rw-r--r--qadevOOo/tests/java/ifc/i18n/_XTransliteration.java456
-rw-r--r--qadevOOo/tests/java/ifc/inspection/_XObjectInspector.java157
-rw-r--r--qadevOOo/tests/java/ifc/inspection/_XObjectInspectorModel.java160
-rw-r--r--qadevOOo/tests/java/ifc/io/_XActiveDataControl.java249
-rw-r--r--qadevOOo/tests/java/ifc/io/_XActiveDataSink.java111
-rw-r--r--qadevOOo/tests/java/ifc/io/_XActiveDataSource.java104
-rw-r--r--qadevOOo/tests/java/ifc/io/_XConnectable.java132
-rw-r--r--qadevOOo/tests/java/ifc/io/_XDataInputStream.java421
-rw-r--r--qadevOOo/tests/java/ifc/io/_XDataOutputStream.java282
-rw-r--r--qadevOOo/tests/java/ifc/io/_XInputStream.java247
-rw-r--r--qadevOOo/tests/java/ifc/io/_XMarkableStream.java197
-rw-r--r--qadevOOo/tests/java/ifc/io/_XObjectInputStream.java174
-rw-r--r--qadevOOo/tests/java/ifc/io/_XObjectOutputStream.java95
-rw-r--r--qadevOOo/tests/java/ifc/io/_XOutputStream.java173
-rw-r--r--qadevOOo/tests/java/ifc/io/_XPersistObject.java269
-rw-r--r--qadevOOo/tests/java/ifc/java/_XJavaThreadRegister_11.java70
-rw-r--r--qadevOOo/tests/java/ifc/java/_XJavaVM.java70
-rw-r--r--qadevOOo/tests/java/ifc/lang/_ServiceManager.java60
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XComponent.java181
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XEventListener.java62
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XInitialization.java110
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XLocalizable.java72
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XMain.java72
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XMultiComponentFactory.java128
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XMultiServiceFactory.java197
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XServiceDisplayName.java59
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XServiceInfo.java97
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XSingleServiceFactory.java168
-rw-r--r--qadevOOo/tests/java/ifc/lang/_XTypeProvider.java93
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_LinguProperties.java61
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XAvailableLocales.java58
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XDictionaryList.java295
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XHyphenator.java111
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceEventBroadcaster.java94
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceManager.java185
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XSearchableDictionaryList.java73
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XSpellChecker.java116
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XSupportedLocales.java89
-rw-r--r--qadevOOo/tests/java/ifc/linguistic2/_XThesaurus.java72
-rw-r--r--qadevOOo/tests/java/ifc/loader/_XImplementationLoader.java188
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_OutlineView.java36
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_Presentation.java91
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_PresentationView.java56
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_PreviewView.java39
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_SlidesView.java34
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_XCustomPresentationSupplier.java58
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_XPresentation.java83
-rw-r--r--qadevOOo/tests/java/ifc/presentation/_XPresentationSupplier.java58
-rwxr-xr-xqadevOOo/tests/java/ifc/qadevooo/_SelfTest.java83
-rw-r--r--qadevOOo/tests/java/ifc/reflection/_XIdlReflection.java107
-rw-r--r--qadevOOo/tests/java/ifc/reflection/_XProxyFactory.java97
-rw-r--r--qadevOOo/tests/java/ifc/reflection/_XTypeDescriptionEnumerationAccess.java95
-rw-r--r--qadevOOo/tests/java/ifc/registry/_XImplementationRegistration.java198
-rw-r--r--qadevOOo/tests/java/ifc/registry/_XSimpleRegistry.java414
-rw-r--r--qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java498
-rw-r--r--qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory.java112
-rw-r--r--qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory2.java114
-rw-r--r--qadevOOo/tests/java/ifc/script/_XTypeConverter.java131
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_DataAccessDescriptor.java125
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_DataSource.java171
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_DatasourceAdministrationDialog.java45
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_ErrorMessageDialog.java69
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_QueryDefinition.java55
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_RowSet.java149
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_SingleSelectQueryComposer.java50
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XBookmarksSupplier.java60
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XCompletedConnection.java84
-rwxr-xr-xqadevOOo/tests/java/ifc/sdb/_XCompletedExecution.java84
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XFormDocumentsSupplier.java64
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XParametersSupplier.java61
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XQueryDefinitionsSupplier.java69
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XReportDocumentsSupplier.java64
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XResultSetAccess.java69
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XRowSetApproveBroadcaster.java214
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XSQLErrorBroadcaster.java38
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryAnalyzer.java299
-rw-r--r--qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryComposer.java396
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_ResultSet.java49
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_RowSet.java81
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XCloseable.java94
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XColumnLocate.java85
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XDataSource.java114
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XDriver.java213
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XDriverManager.java160
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XIsolatedConnection.java123
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XParameters.java574
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XResultSet.java505
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XResultSetMetaDataSupplier.java69
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XResultSetUpdate.java263
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XRow.java544
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XRowSet.java193
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XRowUpdate.java695
-rw-r--r--qadevOOo/tests/java/ifc/sdbc/_XWarningsSupplier.java139
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_ResultSet.java45
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_XColumnsSupplier.java79
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_XCreateCatalog.java50
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_XDataDefinitionSupplier.java179
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_XDeleteRows.java94
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_XDropCatalog.java50
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_XRowLocate.java234
-rw-r--r--qadevOOo/tests/java/ifc/sdbcx/_XTablesSupplier.java81
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_CellAreaLink.java48
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_DataPilotField.java169
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_DataPilotItem.java33
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_DatabaseImportDescriptor.java108
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_DatabaseRange.java48
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_DocumentSettings.java39
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_FunctionDescription.java156
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_GlobalSheetSettings.java56
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_Scenario.java41
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_Shape.java62
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SheetCell.java38
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SheetCellRange.java44
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SheetCellRanges.java33
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SheetFilterDescriptor.java52
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SheetLink.java84
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SheetSortDescriptor.java148
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_Spreadsheet.java63
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SpreadsheetDocument.java50
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SpreadsheetDocumentSettings.java150
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SpreadsheetViewSettings.java75
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_SubTotalDescriptor.java49
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_TableAutoFormat.java49
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_TableAutoFormatField.java130
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_TableValidation.java52
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XActivationBroadcaster.java105
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XAreaLink.java159
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XAreaLinks.java107
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XArrayFormulaRange.java182
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCalculatable.java105
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellAddressable.java59
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellFormatRangesSupplier.java92
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellRangeAddressable.java57
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellRangeData.java85
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellRangeFormula.java71
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellRangeMovement.java246
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellRangeReferrer.java103
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java307
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCellSeries.java244
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XConsolidatable.java56
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XConsolidationDescriptor.java264
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDDELink.java111
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDataPilotDescriptor.java429
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDataPilotField.java70
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDataPilotFieldGrouping.java73
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDataPilotTable.java105
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDataPilotTable2.java576
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDataPilotTables.java157
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDataPilotTablesSupplier.java59
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDatabaseRange.java244
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDatabaseRanges.java121
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XDocumentAuditing.java228
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XEnhancedMouseClickBroadcaster.java163
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XFormulaQuery.java201
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XFunctionDescriptions.java131
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XGoalSeek.java112
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XHeaderFooterContent.java82
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XLabelRange.java109
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XLabelRanges.java97
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XMultipleOperation.java182
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XNamedRange.java209
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XNamedRanges.java327
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XPrintAreas.java158
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XRangeSelection.java380
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XRecentFunctions.java168
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XScenario.java100
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XScenarioEnhanced.java93
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XScenarios.java88
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XScenariosSupplier.java56
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetAnnotation.java141
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetAnnotationAnchor.java132
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetAnnotationShapeSupplier.java43
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetAnnotations.java90
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetAnnotationsSupplier.java58
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetAuditing.java206
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor.java403
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetCellRange.java57
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetCellRangeContainer.java205
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetCellRanges.java89
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetCondition.java158
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetConditionalEntries.java137
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetConditionalEntry.java75
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetFilterDescriptor.java82
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetFilterable.java135
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetFilterableEx.java99
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetLinkable.java112
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetOperation.java104
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetOutline.java145
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetPageBreak.java93
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSpreadsheet.java90
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSpreadsheetDocument.java59
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSpreadsheetView.java92
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSpreadsheets.java184
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSubTotalCalculatable.java125
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSubTotalDescriptor.java77
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSubTotalField.java115
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XUniqueCellFormatRangesSupplier.java83
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XUsedAreaCursor.java138
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XViewFreezable.java78
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XViewPane.java133
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XViewSplitable.java136
-rw-r--r--qadevOOo/tests/java/ifc/style/_CharacterProperties.java544
-rw-r--r--qadevOOo/tests/java/ifc/style/_CharacterPropertiesAsian.java77
-rw-r--r--qadevOOo/tests/java/ifc/style/_CharacterPropertiesComplex.java69
-rwxr-xr-xqadevOOo/tests/java/ifc/style/_CharacterStyle.java50
-rwxr-xr-xqadevOOo/tests/java/ifc/style/_PageProperties.java125
-rwxr-xr-xqadevOOo/tests/java/ifc/style/_PageStyle.java56
-rw-r--r--qadevOOo/tests/java/ifc/style/_ParagraphProperties.java507
-rw-r--r--qadevOOo/tests/java/ifc/style/_ParagraphPropertiesAsian.java86
-rw-r--r--qadevOOo/tests/java/ifc/style/_ParagraphPropertiesComplex.java55
-rw-r--r--qadevOOo/tests/java/ifc/style/_ParagraphStyle.java36
-rw-r--r--qadevOOo/tests/java/ifc/style/_Style.java54
-rw-r--r--qadevOOo/tests/java/ifc/style/_XStyle.java117
-rw-r--r--qadevOOo/tests/java/ifc/style/_XStyleFamiliesSupplier.java55
-rw-r--r--qadevOOo/tests/java/ifc/system/_XProxySettings.java305
-rw-r--r--qadevOOo/tests/java/ifc/system/_XSimpleMailClientSupplier.java77
-rw-r--r--qadevOOo/tests/java/ifc/system/_XSystemShellExecute.java130
-rw-r--r--qadevOOo/tests/java/ifc/table/_CellProperties.java110
-rw-r--r--qadevOOo/tests/java/ifc/table/_TableColumn.java74
-rw-r--r--qadevOOo/tests/java/ifc/table/_TableRow.java47
-rw-r--r--qadevOOo/tests/java/ifc/table/_XAutoFormattable.java134
-rw-r--r--qadevOOo/tests/java/ifc/table/_XCell.java167
-rw-r--r--qadevOOo/tests/java/ifc/table/_XCellCursor.java247
-rw-r--r--qadevOOo/tests/java/ifc/table/_XCellRange.java151
-rw-r--r--qadevOOo/tests/java/ifc/table/_XColumnRowRange.java66
-rw-r--r--qadevOOo/tests/java/ifc/table/_XTableChart.java125
-rw-r--r--qadevOOo/tests/java/ifc/table/_XTableCharts.java94
-rw-r--r--qadevOOo/tests/java/ifc/table/_XTableChartsSupplier.java60
-rw-r--r--qadevOOo/tests/java/ifc/table/_XTableColumns.java399
-rw-r--r--qadevOOo/tests/java/ifc/table/_XTableRows.java138
-rw-r--r--qadevOOo/tests/java/ifc/task/_XInteractionHandler.java151
-rw-r--r--qadevOOo/tests/java/ifc/task/_XJob.java98
-rw-r--r--qadevOOo/tests/java/ifc/task/_XJobExecutor.java79
-rw-r--r--qadevOOo/tests/java/ifc/task/_XStatusIndicatorFactory.java78
-rw-r--r--qadevOOo/tests/java/ifc/text/_BaseFrame.java124
-rw-r--r--qadevOOo/tests/java/ifc/text/_BaseFrameProperties.java45
-rw-r--r--qadevOOo/tests/java/ifc/text/_BaseIndex.java204
-rw-r--r--qadevOOo/tests/java/ifc/text/_BaseIndexMark.java45
-rw-r--r--qadevOOo/tests/java/ifc/text/_CellProperties.java155
-rw-r--r--qadevOOo/tests/java/ifc/text/_CellRange.java101
-rw-r--r--qadevOOo/tests/java/ifc/text/_Defaults.java41
-rw-r--r--qadevOOo/tests/java/ifc/text/_DocumentIndex.java54
-rw-r--r--qadevOOo/tests/java/ifc/text/_DocumentIndexMark.java47
-rw-r--r--qadevOOo/tests/java/ifc/text/_DocumentSettings.java35
-rw-r--r--qadevOOo/tests/java/ifc/text/_Footnote.java56
-rw-r--r--qadevOOo/tests/java/ifc/text/_FootnoteSettings.java104
-rw-r--r--qadevOOo/tests/java/ifc/text/_GenericTextDocument.java48
-rw-r--r--qadevOOo/tests/java/ifc/text/_LineNumberingProperties.java63
-rw-r--r--qadevOOo/tests/java/ifc/text/_MailMerge.java174
-rw-r--r--qadevOOo/tests/java/ifc/text/_NumberingLevel.java174
-rw-r--r--qadevOOo/tests/java/ifc/text/_NumberingRules.java48
-rw-r--r--qadevOOo/tests/java/ifc/text/_PrintPreviewSettings.java35
-rw-r--r--qadevOOo/tests/java/ifc/text/_PrintSettings.java56
-rw-r--r--qadevOOo/tests/java/ifc/text/_Text.java35
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextColumns.java73
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextContent.java46
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextDocument.java48
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextEmbeddedObject.java68
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextFieldMaster.java46
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextFrame.java69
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextGraphicObject.java171
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextPortion.java57
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextSection.java148
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextTable.java118
-rw-r--r--qadevOOo/tests/java/ifc/text/_TextTableRow.java52
-rw-r--r--qadevOOo/tests/java/ifc/text/_ViewSettings.java71
-rw-r--r--qadevOOo/tests/java/ifc/text/_XAutoTextContainer.java141
-rw-r--r--qadevOOo/tests/java/ifc/text/_XAutoTextEntry.java78
-rw-r--r--qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java308
-rw-r--r--qadevOOo/tests/java/ifc/text/_XBookmarksSupplier.java64
-rw-r--r--qadevOOo/tests/java/ifc/text/_XChapterNumberingSupplier.java63
-rw-r--r--qadevOOo/tests/java/ifc/text/_XDefaultNumberingProvider.java74
-rw-r--r--qadevOOo/tests/java/ifc/text/_XDocumentIndex.java129
-rw-r--r--qadevOOo/tests/java/ifc/text/_XDocumentIndexesSupplier.java63
-rw-r--r--qadevOOo/tests/java/ifc/text/_XEndnotesSupplier.java81
-rw-r--r--qadevOOo/tests/java/ifc/text/_XFootnote.java116
-rw-r--r--qadevOOo/tests/java/ifc/text/_XFootnotesSettingsSupplier.java63
-rw-r--r--qadevOOo/tests/java/ifc/text/_XFootnotesSupplier.java82
-rw-r--r--qadevOOo/tests/java/ifc/text/_XLineNumberingProperties.java61
-rw-r--r--qadevOOo/tests/java/ifc/text/_XLineNumberingSupplier.java64
-rw-r--r--qadevOOo/tests/java/ifc/text/_XMailMergeBroadcaster.java162
-rw-r--r--qadevOOo/tests/java/ifc/text/_XPageCursor.java171
-rw-r--r--qadevOOo/tests/java/ifc/text/_XPagePrintable.java161
-rw-r--r--qadevOOo/tests/java/ifc/text/_XParagraphCursor.java140
-rw-r--r--qadevOOo/tests/java/ifc/text/_XReferenceMarksSupplier.java66
-rw-r--r--qadevOOo/tests/java/ifc/text/_XRelativeTextContentInsert.java136
-rw-r--r--qadevOOo/tests/java/ifc/text/_XSentenceCursor.java127
-rw-r--r--qadevOOo/tests/java/ifc/text/_XSimpleText.java136
-rw-r--r--qadevOOo/tests/java/ifc/text/_XText.java170
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextColumns.java114
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextContent.java117
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextCursor.java242
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextDocument.java71
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextEmbeddedObject.java60
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextEmbeddedObjectsSupplier.java61
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextField.java66
-rwxr-xr-xqadevOOo/tests/java/ifc/text/_XTextFieldsSupplier.java191
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextFrame.java68
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextFramesSupplier.java64
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextGraphicObjectsSupplier.java67
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextRange.java184
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextRangeCompare.java189
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextRangeMover.java97
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextSection.java77
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextSectionsSupplier.java75
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextTable.java181
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextTableCursor.java294
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextTablesSupplier.java66
-rw-r--r--qadevOOo/tests/java/ifc/text/_XTextViewCursorSupplier.java62
-rw-r--r--qadevOOo/tests/java/ifc/text/_XWordCursor.java132
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetFactory.java114
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetStubFactory.java112
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetFactory.java122
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetStubFactory.java192
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XCommandProcessor.java249
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XCommandProcessor2.java50
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XContentIdentifierFactory.java77
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XContentProvider.java138
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XContentProviderFactory.java60
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XContentProviderManager.java278
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XDataContainer.java136
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XFileIdentifierConverter.java100
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XParameterizedContentProvider.java93
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XPropertyMatcherFactory.java71
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XPropertySetRegistryFactory.java59
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderAcceptor.java100
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderActivator.java79
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess.java542
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess2.java92
-rw-r--r--qadevOOo/tests/java/ifc/ucb/_XSortedDynamicResultSetFactory.java162
-rw-r--r--qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java212
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.java81
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.java64
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XUIConfiguration.java102
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.java53
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java363
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XUIConfigurationPersistence.java83
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XUIConfigurationStorage.java76
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XUIElementFactory.java56
-rwxr-xr-xqadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java83
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_FilePicker.java36
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XControlAccess.java142
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.java192
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.java195
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java160
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerControlAccess.java202
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerNotifier.java290
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XFilePreview.java122
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XFilterGroupManager.java64
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XFilterManager.java106
-rw-r--r--qadevOOo/tests/java/ifc/ui/dialogs/_XFolderPicker.java115
-rw-r--r--qadevOOo/tests/java/ifc/uno/_XComponentContext.java81
-rw-r--r--qadevOOo/tests/java/ifc/uno/_XNamingService.java155
-rw-r--r--qadevOOo/tests/java/ifc/util/_PathSettings.java89
-rw-r--r--qadevOOo/tests/java/ifc/util/_SearchDescriptor.java53
-rw-r--r--qadevOOo/tests/java/ifc/util/_XCancellable.java65
-rw-r--r--qadevOOo/tests/java/ifc/util/_XChangesBatch.java172
-rw-r--r--qadevOOo/tests/java/ifc/util/_XChangesNotifier.java222
-rw-r--r--qadevOOo/tests/java/ifc/util/_XCloneable.java112
-rw-r--r--qadevOOo/tests/java/ifc/util/_XFlushable.java111
-rw-r--r--qadevOOo/tests/java/ifc/util/_XImportable.java202
-rw-r--r--qadevOOo/tests/java/ifc/util/_XIndent.java98
-rw-r--r--qadevOOo/tests/java/ifc/util/_XMergeable.java74
-rw-r--r--qadevOOo/tests/java/ifc/util/_XModeSelector.java104
-rw-r--r--qadevOOo/tests/java/ifc/util/_XModifiable.java57
-rw-r--r--qadevOOo/tests/java/ifc/util/_XModifyBroadcaster.java86
-rw-r--r--qadevOOo/tests/java/ifc/util/_XNumberFormatsSupplier.java98
-rw-r--r--qadevOOo/tests/java/ifc/util/_XNumberFormatter.java128
-rw-r--r--qadevOOo/tests/java/ifc/util/_XProtectable.java84
-rw-r--r--qadevOOo/tests/java/ifc/util/_XRefreshable.java119
-rw-r--r--qadevOOo/tests/java/ifc/util/_XReplaceDescriptor.java75
-rw-r--r--qadevOOo/tests/java/ifc/util/_XReplaceable.java147
-rw-r--r--qadevOOo/tests/java/ifc/util/_XSearchDescriptor.java87
-rw-r--r--qadevOOo/tests/java/ifc/util/_XSearchable.java185
-rw-r--r--qadevOOo/tests/java/ifc/util/_XSortable.java238
-rw-r--r--qadevOOo/tests/java/ifc/util/_XStringEscape.java64
-rw-r--r--qadevOOo/tests/java/ifc/util/_XStringSubstitution.java101
-rw-r--r--qadevOOo/tests/java/ifc/util/_XTextSearch.java119
-rw-r--r--qadevOOo/tests/java/ifc/util/_XURLTransformer.java471
-rw-r--r--qadevOOo/tests/java/ifc/view/_XControlAccess.java124
-rw-r--r--qadevOOo/tests/java/ifc/view/_XFormLayerAccess.java158
-rw-r--r--qadevOOo/tests/java/ifc/view/_XMultiSelectionSupplier.java427
-rw-r--r--qadevOOo/tests/java/ifc/view/_XPrintJobBroadcaster.java150
-rw-r--r--qadevOOo/tests/java/ifc/view/_XPrintSettingsSupplier.java62
-rw-r--r--qadevOOo/tests/java/ifc/view/_XPrintable.java196
-rw-r--r--qadevOOo/tests/java/ifc/view/_XScreenCursor.java87
-rw-r--r--qadevOOo/tests/java/ifc/view/_XSelectionSupplier.java208
-rw-r--r--qadevOOo/tests/java/ifc/view/_XViewSettingsSupplier.java62
-rw-r--r--qadevOOo/tests/java/ifc/xml/_UserDefinedAttributeSupplier.java72
-rw-r--r--qadevOOo/tests/java/ifc/xml/sax/_XDocumentHandler.java408
-rw-r--r--qadevOOo/tests/java/mod/_acceptor.uno/Acceptor.java122
-rw-r--r--qadevOOo/tests/java/mod/_acceptor/Acceptor.java127
-rw-r--r--qadevOOo/tests/java/mod/_acceptor/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_adabas/ODriver.java121
-rw-r--r--qadevOOo/tests/java/mod/_ado/ODriver.java105
-rw-r--r--qadevOOo/tests/java/mod/_basctl/AccessibleShape.java155
-rw-r--r--qadevOOo/tests/java/mod/_brdgfctr/BridgeFactory.java118
-rw-r--r--qadevOOo/tests/java/mod/_brdgfctr/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_bridgefac.uno/BridgeFactory.java116
-rw-r--r--qadevOOo/tests/java/mod/_bridgefac.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_cached/CachedContentResultSetFactory.java186
-rw-r--r--qadevOOo/tests/java/mod/_cached/CachedContentResultSetStubFactory.java176
-rw-r--r--qadevOOo/tests/java/mod/_cached/CachedDynamicResultSetFactory.java183
-rw-r--r--qadevOOo/tests/java/mod/_cached/CachedDynamicResultSetStubFactory.java169
-rw-r--r--qadevOOo/tests/java/mod/_cmdmail/SimpleCommandMail.java71
-rw-r--r--qadevOOo/tests/java/mod/_cnt/ChaosContentProvider.java110
-rw-r--r--qadevOOo/tests/java/mod/_cnt/CntUnoDataContainer.java131
-rw-r--r--qadevOOo/tests/java/mod/_cnt/PropertyMatcherFactory.java86
-rw-r--r--qadevOOo/tests/java/mod/_configmgr/ConfigurationProvider.java57
-rw-r--r--qadevOOo/tests/java/mod/_configmgr/DefaultProvider.java54
-rw-r--r--qadevOOo/tests/java/mod/_configmgr/ProviderTestEnvironment.java51
-rw-r--r--qadevOOo/tests/java/mod/_connector.uno/Connector.java122
-rw-r--r--qadevOOo/tests/java/mod/_connector.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_connectr/Connector.java125
-rw-r--r--qadevOOo/tests/java/mod/_connectr/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_corefl/CoreReflection.java87
-rw-r--r--qadevOOo/tests/java/mod/_corefl/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_corereflection.uno/CoreReflection.java83
-rw-r--r--qadevOOo/tests/java/mod/_corereflection.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_cpld/DLLComponentLoader.java117
-rw-r--r--qadevOOo/tests/java/mod/_cpld/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/ConnectionLineAccessibility.java421
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/DBContentLoader.java110
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/JoinViewAccessibility.java392
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/OCommandDefinition.java91
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/ODatabaseContext.java149
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/ODatabaseSource.java245
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/ODatasourceAdministrationDialog.java100
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/ODatasourceBrowser.java332
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/OInteractionHandler.java117
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/OQueryDesign.java325
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/ORowSet.java644
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/OSQLMessageDialog.java157
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/OSingleSelectQueryComposer.java283
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/SbaXGridControl.java485
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/TableWindowAccessibility.java380
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_dbpool/OConnectionPool.java114
-rw-r--r--qadevOOo/tests/java/mod/_defreg/NestedRegistry.java202
-rw-r--r--qadevOOo/tests/java/mod/_defreg/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_dtrans/generic.java77
-rw-r--r--qadevOOo/tests/java/mod/_dynamicloader/Dynamic.java101
-rw-r--r--qadevOOo/tests/java/mod/_file/calc/ODriver.java112
-rw-r--r--qadevOOo/tests/java/mod/_file/dbase/ODriver.java109
-rw-r--r--qadevOOo/tests/java/mod/_file/flat/ODriver.java107
-rw-r--r--qadevOOo/tests/java/mod/_fileacc/SimpleFileAccess.java86
-rw-r--r--qadevOOo/tests/java/mod/_fileacc/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_fop/FolderPicker.java102
-rw-r--r--qadevOOo/tests/java/mod/_forms/GenericModelTest.java565
-rw-r--r--qadevOOo/tests/java/mod/_forms/OButtonControl.java223
-rw-r--r--qadevOOo/tests/java/mod/_forms/OButtonModel.java134
-rw-r--r--qadevOOo/tests/java/mod/_forms/OCheckBoxControl.java237
-rw-r--r--qadevOOo/tests/java/mod/_forms/OCheckBoxModel.java149
-rw-r--r--qadevOOo/tests/java/mod/_forms/OComboBoxControl.java244
-rw-r--r--qadevOOo/tests/java/mod/_forms/OComboBoxModel.java164
-rw-r--r--qadevOOo/tests/java/mod/_forms/OCurrencyControl.java251
-rw-r--r--qadevOOo/tests/java/mod/_forms/OCurrencyModel.java159
-rw-r--r--qadevOOo/tests/java/mod/_forms/ODatabaseForm.java901
-rw-r--r--qadevOOo/tests/java/mod/_forms/ODateControl.java243
-rw-r--r--qadevOOo/tests/java/mod/_forms/ODateModel.java178
-rw-r--r--qadevOOo/tests/java/mod/_forms/OEditControl.java261
-rw-r--r--qadevOOo/tests/java/mod/_forms/OEditModel.java170
-rw-r--r--qadevOOo/tests/java/mod/_forms/OFileControlModel.java210
-rw-r--r--qadevOOo/tests/java/mod/_forms/OFixedTextModel.java128
-rw-r--r--qadevOOo/tests/java/mod/_forms/OFormattedControl.java240
-rw-r--r--qadevOOo/tests/java/mod/_forms/OFormattedFieldWrapper.java162
-rw-r--r--qadevOOo/tests/java/mod/_forms/OFormsCollection.java184
-rw-r--r--qadevOOo/tests/java/mod/_forms/OGridControlModel.java431
-rw-r--r--qadevOOo/tests/java/mod/_forms/OGroupBoxControl.java214
-rw-r--r--qadevOOo/tests/java/mod/_forms/OGroupBoxModel.java128
-rw-r--r--qadevOOo/tests/java/mod/_forms/OHiddenModel.java203
-rw-r--r--qadevOOo/tests/java/mod/_forms/OImageButtonControl.java219
-rw-r--r--qadevOOo/tests/java/mod/_forms/OImageButtonModel.java132
-rw-r--r--qadevOOo/tests/java/mod/_forms/OImageControlControl.java220
-rw-r--r--qadevOOo/tests/java/mod/_forms/OImageControlModel.java161
-rw-r--r--qadevOOo/tests/java/mod/_forms/OListBoxControl.java180
-rw-r--r--qadevOOo/tests/java/mod/_forms/OListBoxModel.java236
-rw-r--r--qadevOOo/tests/java/mod/_forms/ONavigationBarControl.java180
-rw-r--r--qadevOOo/tests/java/mod/_forms/ONavigationBarModel.java81
-rw-r--r--qadevOOo/tests/java/mod/_forms/ONumericControl.java245
-rw-r--r--qadevOOo/tests/java/mod/_forms/ONumericModel.java160
-rw-r--r--qadevOOo/tests/java/mod/_forms/OPatternControl.java243
-rw-r--r--qadevOOo/tests/java/mod/_forms/OPatternModel.java166
-rw-r--r--qadevOOo/tests/java/mod/_forms/ORadioButtonControl.java222
-rw-r--r--qadevOOo/tests/java/mod/_forms/ORadioButtonModel.java173
-rw-r--r--qadevOOo/tests/java/mod/_forms/OScrollBarModel.java99
-rw-r--r--qadevOOo/tests/java/mod/_forms/OSpinButtonModel.java102
-rw-r--r--qadevOOo/tests/java/mod/_forms/OTimeControl.java258
-rw-r--r--qadevOOo/tests/java/mod/_forms/OTimeModel.java237
-rw-r--r--qadevOOo/tests/java/mod/_forms/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_fps/FilePicker.java133
-rw-r--r--qadevOOo/tests/java/mod/_ftransl/DataFormatTranslator.java91
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/ControlMenuController.java110
-rw-r--r--qadevOOo/tests/java/mod/_fwk/Desktop.java137
-rw-r--r--qadevOOo/tests/java/mod/_fwk/DispatchRecorder.java174
-rw-r--r--qadevOOo/tests/java/mod/_fwk/DispatchRecorderSupplier.java74
-rw-r--r--qadevOOo/tests/java/mod/_fwk/DocumentProperties.java130
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/FontMenuController.java60
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/FontSizeMenuController.java60
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/FooterMenuController.java60
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/FormatMenuController.java60
-rw-r--r--qadevOOo/tests/java/mod/_fwk/Frame.java119
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/HeaderMenuController.java60
-rw-r--r--qadevOOo/tests/java/mod/_fwk/JobExecutor.java317
-rw-r--r--qadevOOo/tests/java/mod/_fwk/JobHandler.java91
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/LayoutManager.java124
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/MacrosMenuController.java60
-rw-r--r--qadevOOo/tests/java/mod/_fwk/MailToDispatcher.java80
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/MenuBarFactory.java58
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/ModuleManager.java281
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/ModuleUIConfigurationManager.java245
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/ModuleUIConfigurationManagerSupplier.java60
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/ObjectMenuController.java97
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/PopupMenuControllerFactory.java124
-rw-r--r--qadevOOo/tests/java/mod/_fwk/ServiceHandler.java80
-rw-r--r--qadevOOo/tests/java/mod/_fwk/SoundHandler.java81
-rw-r--r--qadevOOo/tests/java/mod/_fwk/StatusBarControllerFactory.java74
-rw-r--r--qadevOOo/tests/java/mod/_fwk/ToolBarsMenuController.java60
-rw-r--r--qadevOOo/tests/java/mod/_fwk/UICategoryDescription.java60
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/UICommandDescription.java61
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/UIConfigurationManager.java205
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/UIElementFactoryManager.java101
-rw-r--r--qadevOOo/tests/java/mod/_fwk/URLTransformer.java73
-rw-r--r--qadevOOo/tests/java/mod/_fwl/ContentHandlerFactory.java115
-rw-r--r--qadevOOo/tests/java/mod/_fwl/FilterFactory.java205
-rw-r--r--qadevOOo/tests/java/mod/_fwl/FrameLoaderFactory.java113
-rw-r--r--qadevOOo/tests/java/mod/_fwl/PathSettings.java161
-rw-r--r--qadevOOo/tests/java/mod/_fwl/SubstituteVariables.java94
-rw-r--r--qadevOOo/tests/java/mod/_fwl/TypeDetection.java187
-rw-r--r--qadevOOo/tests/java/mod/_i18n/BreakIterator.java123
-rw-r--r--qadevOOo/tests/java/mod/_i18n/CalendarImpl.java80
-rw-r--r--qadevOOo/tests/java/mod/_i18n/ChapterCollator.java84
-rw-r--r--qadevOOo/tests/java/mod/_i18n/CharacterClassification.java87
-rw-r--r--qadevOOo/tests/java/mod/_i18n/Collator.java81
-rw-r--r--qadevOOo/tests/java/mod/_i18n/IndexEntrySupplier.java86
-rw-r--r--qadevOOo/tests/java/mod/_i18n/LocaleData.java85
-rw-r--r--qadevOOo/tests/java/mod/_i18n/NumberFormatCodeMapper.java91
-rw-r--r--qadevOOo/tests/java/mod/_i18n/TextSearch.java81
-rw-r--r--qadevOOo/tests/java/mod/_i18n/Transliteration.java81
-rw-r--r--qadevOOo/tests/java/mod/_implreg.uno/ImplementationRegistration.java81
-rw-r--r--qadevOOo/tests/java/mod/_implreg.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_impreg/ImplementationRegistration.java86
-rw-r--r--qadevOOo/tests/java/mod/_impreg/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_insp/Introspection.java81
-rw-r--r--qadevOOo/tests/java/mod/_insp/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_introspection.uno/Introspection.java76
-rw-r--r--qadevOOo/tests/java/mod/_introspection.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_inv/Invocation.java106
-rw-r--r--qadevOOo/tests/java/mod/_inv/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_invadp/InvocationAdapterFactory.java75
-rw-r--r--qadevOOo/tests/java/mod/_invadp/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_invocadapt.uno/InvocationAdapterFactory.java74
-rw-r--r--qadevOOo/tests/java/mod/_invocadapt.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_invocation.uno/Invocation.java104
-rw-r--r--qadevOOo/tests/java/mod/_invocation.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_javaloader.uno/JavaComponentLoader.java96
-rw-r--r--qadevOOo/tests/java/mod/_javaloader/JavaComponentLoader.java101
-rw-r--r--qadevOOo/tests/java/mod/_javavm.uno/JavaVirtualMachine.java75
-rw-r--r--qadevOOo/tests/java/mod/_javavm.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_jdbc/JDBCDriver.java123
-rw-r--r--qadevOOo/tests/java/mod/_jen/JavaVirtualMachine.java77
-rw-r--r--qadevOOo/tests/java/mod/_jen/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_lng/DicList.java113
-rw-r--r--qadevOOo/tests/java/mod/_lng/LinguProps.java98
-rw-r--r--qadevOOo/tests/java/mod/_lng/LngSvcMgr.java92
-rw-r--r--qadevOOo/tests/java/mod/_lnn/Hyphenator.java111
-rw-r--r--qadevOOo/tests/java/mod/_lnn/SpellChecker.java109
-rw-r--r--qadevOOo/tests/java/mod/_lnn/Thesaurus.java98
-rw-r--r--qadevOOo/tests/java/mod/_mcnttype/MimeContentTypeFactory.java90
-rw-r--r--qadevOOo/tests/java/mod/_mozab/MozabDriver.java104
-rw-r--r--qadevOOo/tests/java/mod/_namingservice.uno/NamingService.java99
-rw-r--r--qadevOOo/tests/java/mod/_namingservice/NamingService.java102
-rw-r--r--qadevOOo/tests/java/mod/_namingservice/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_nestedreg.uno/NestedRegistry.java198
-rw-r--r--qadevOOo/tests/java/mod/_nestedreg.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_odbc/ODBCDriver.java101
-rw-r--r--qadevOOo/tests/java/mod/_pcr/ObjectInspector.java215
-rw-r--r--qadevOOo/tests/java/mod/_pcr/ObjectInspectorModel.java174
-rw-r--r--qadevOOo/tests/java/mod/_proxyfac.uno/ProxyFactory.java76
-rw-r--r--qadevOOo/tests/java/mod/_proxyfac/ProxyFactory.java78
-rw-r--r--qadevOOo/tests/java/mod/_proxyfac/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_proxyset/SOffice52ProxySettings.java144
-rw-r--r--qadevOOo/tests/java/mod/_proxyset/SystemProxySettings.java145
-rwxr-xr-xqadevOOo/tests/java/mod/_qadevOOo/SelfTest.java92
-rw-r--r--qadevOOo/tests/java/mod/_rdbtdp/RegistryTypeDescriptionProvider.java131
-rw-r--r--qadevOOo/tests/java/mod/_rdbtdp/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_regtypeprov.uno/RegistryTypeDescriptionProvider.java126
-rw-r--r--qadevOOo/tests/java/mod/_remotebridge.uno/various.java309
-rw-r--r--qadevOOo/tests/java/mod/_remotebridge/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_remotebridge/various.java305
-rw-r--r--qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_HeaderFooter.java220
-rw-r--r--qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_PreviewCell.java193
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessibleCell.java200
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessibleCsvCell.java208
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessibleCsvGrid.java202
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessibleCsvRuler.java229
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessibleDocument.java172
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessibleDocumentPagePreview.java242
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java282
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java233
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewCell.java208
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewHeaderCell.java293
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewTable.java222
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessibleSpreadsheet.java168
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAnnotationObj.java178
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAnnotationShapeObj.java213
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAnnotationTextCursor.java152
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAnnotationsObj.java175
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAreaLinkObj.java152
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAreaLinksObj.java150
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAutoFormatFieldObj.java106
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAutoFormatObj.java109
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAutoFormatsObj.java158
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellCursorObj.java326
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellFieldObj.java196
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellFieldsObj.java167
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellFormatsEnumeration.java157
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellFormatsObj.java141
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellObj.java216
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellRangeObj.java312
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellRangesObj.java264
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellSearchObj.java151
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellTextCursor.java195
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellsEnumeration.java172
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScCellsObj.java167
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScChartObj.java289
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScChartsObj.java273
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScConsolidationDescriptor.java116
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDDELinkObj.java245
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDDELinksObj.java208
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotFieldGroupItemObj.java371
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotFieldGroupObj.java369
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotFieldGroupsObj.java367
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotFieldObj.java396
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotFieldsObj.java183
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java414
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotItemsObj.java402
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotTableObj.java355
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDataPilotTablesObj.java195
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDatabaseRangeObj.java258
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDatabaseRangesObj.java154
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDocumentConfiguration.java90
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDrawPageObj.java162
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScDrawPagesObj.java135
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScFilterDescriptorBase.java159
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScFunctionDescriptionObj.java118
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScFunctionListObj.java130
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScHeaderFieldObj.java241
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScHeaderFieldsObj.java221
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScHeaderFooterContentObj.java190
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextCursor.java228
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextObj.java278
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScImportDescriptorBase.java149
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_CellAnnotationsEnumeration.java138
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_CellAreaLinksEnumeration.java131
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_DDELinksEnumeration.java187
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_DataPilotFieldsEnumeration.java165
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_DataPilotItemsEnumeration.java408
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_DataPilotTablesEnumeration.java166
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_DatabaseRangesEnumeration.java134
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_FunctionDescriptionEnumeration.java113
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_LabelRangesEnumeration.java126
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_NamedRangesEnumeration.java133
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_ScenariosEnumeration.java145
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_SheetCellRangesEnumeration.java167
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_SheetLinksEnumeration.java148
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_SpreadsheetViewPanesEnumeration.java116
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_SpreadsheetsEnumeration.java97
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_SubTotalFieldsEnumeration.java141
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_TableAutoFormatEnumeration.java105
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_TableChartsEnumeration.java238
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_TableColumnsEnumeration.java129
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_TableConditionalEntryEnumeration.java207
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_TableRowsEnumeration.java128
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScIndexEnumeration_TextFieldEnumeration.java166
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScLabelRangeObj.java154
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScLabelRangesObj.java147
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScModelObj.java232
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScNamedRangeObj.java177
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScNamedRangesObj.java178
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScRecentFunctionsObj.java133
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScScenariosObj.java174
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScShapeObj.java117
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScSheetLinkObj.java193
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScSheetLinksObj.java167
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScSortDescriptorBase.java151
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScSpreadsheetSettings.java84
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScSpreadsheetSettingsObj.java110
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScStyleFamiliesObj.java121
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScStyleFamilyObj.java216
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScStyleObj.java270
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScSubTotalDescriptorBase.java154
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScSubTotalFieldObj.java169
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTabViewObj.java283
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableColumnObj.java176
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableColumnsObj.java153
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableConditionalEntry.java230
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableConditionalFormat.java208
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableRowObj.java161
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableRowsObj.java148
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableSheetObj.java421
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableSheetsObj.java171
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScTableValidationObj.java164
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScUniqueCellFormatsEnumeration.java145
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScUniqueCellFormatsObj.java139
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScViewPaneObj.java209
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLContentExporter.java216
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLContentImporter.java198
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLExporter.java224
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLImporter.java195
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLMetaExporter.java205
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLMetaImporter.java197
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLSettingsExporter.java206
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLSettingsImporter.java219
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLStylesExporter.java211
-rw-r--r--qadevOOo/tests/java/mod/_sc/XMLStylesImporter.java215
-rw-r--r--qadevOOo/tests/java/mod/_sc/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccArea.java121
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccAxis.java119
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccDataPoint.java120
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccDataSeries.java120
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccDiagram.java120
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccFloor.java145
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccGrid.java121
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccLegend.java119
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccLegendEntry.java119
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccStatisticsObject.java124
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccTitle.java119
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccWall.java144
-rw-r--r--qadevOOo/tests/java/mod/_sch/AccessibleDocumentView.java133
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXChartAxis.java130
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXChartData.java102
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXChartDataArray.java106
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXChartDocument.java172
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXChartView.java147
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXDataPoint.java162
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXDataRow.java169
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChXDiagram.java413
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChartArea.java122
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChartGrid.java122
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChartLegend.java142
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChartLine.java150
-rw-r--r--qadevOOo/tests/java/mod/_sch/ChartTitle.java120
-rw-r--r--qadevOOo/tests/java/mod/_sd/AccessibleDrawDocumentView.java183
-rw-r--r--qadevOOo/tests/java/mod/_sd/AccessibleOutlineView.java182
-rw-r--r--qadevOOo/tests/java/mod/_sd/AccessibleSlideView.java191
-rw-r--r--qadevOOo/tests/java/mod/_sd/DrawController_DrawView.java303
-rw-r--r--qadevOOo/tests/java/mod/_sd/DrawController_HandoutView.java337
-rw-r--r--qadevOOo/tests/java/mod/_sd/DrawController_NotesView.java334
-rw-r--r--qadevOOo/tests/java/mod/_sd/DrawController_OutlineView.java334
-rw-r--r--qadevOOo/tests/java/mod/_sd/DrawController_PresentationView.java334
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdDocLinkTargets.java111
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdDrawPage.java216
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdDrawPagesAccess.java129
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdGenericDrawPage.java189
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdLayer.java139
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdLayerManager.java171
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdMasterPage.java194
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdMasterPagesAccess.java122
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdPageLinkTargets.java153
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdUnoDrawView.java299
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdUnoOutlineView.java246
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdUnoPresView.java301
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdUnoSlideView.java222
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdXCustomPresentation.java243
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdXCustomPresentationAccess.java212
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdXImpressDocument.java199
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdXPresentation.java164
-rw-r--r--qadevOOo/tests/java/mod/_sd/SdXShape.java219
-rw-r--r--qadevOOo/tests/java/mod/_sd/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_servicemgr.uno/OServiceManager.java169
-rw-r--r--qadevOOo/tests/java/mod/_servicemgr.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_sfx/AppDispatchProvider.java104
-rw-r--r--qadevOOo/tests/java/mod/_sfx/DocumentTemplates.java97
-rw-r--r--qadevOOo/tests/java/mod/_sfx/FrameLoader.java103
-rw-r--r--qadevOOo/tests/java/mod/_sfx/SfxMacroLoader.java107
-rw-r--r--qadevOOo/tests/java/mod/_sfx/StandaloneDocumentInfo.java133
-rw-r--r--qadevOOo/tests/java/mod/_shlibloader.uno/DLLComponentLoader.java117
-rw-r--r--qadevOOo/tests/java/mod/_shlibloader.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_simplereg.uno/SimpleRegistry.java163
-rw-r--r--qadevOOo/tests/java/mod/_simplereg.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_simreg/SimpleRegistry.java167
-rw-r--r--qadevOOo/tests/java/mod/_simreg/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_sm/SmEditAccessible.java178
-rw-r--r--qadevOOo/tests/java/mod/_sm/SmGraphicAccessible.java182
-rw-r--r--qadevOOo/tests/java/mod/_sm/SmModel.java100
-rw-r--r--qadevOOo/tests/java/mod/_sm/XMLExporter.java197
-rw-r--r--qadevOOo/tests/java/mod/_sm/XMLImporter.java170
-rw-r--r--qadevOOo/tests/java/mod/_sm/XMLMetaExporter.java198
-rw-r--r--qadevOOo/tests/java/mod/_sm/XMLMetaImporter.java198
-rw-r--r--qadevOOo/tests/java/mod/_sm/XMLSettingsExporter.java198
-rw-r--r--qadevOOo/tests/java/mod/_sm/XMLSettingsImporter.java180
-rw-r--r--qadevOOo/tests/java/mod/_smgr/OServiceManager.java171
-rw-r--r--qadevOOo/tests/java/mod/_smgr/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_smplmail/SimpleSystemMail.java121
-rw-r--r--qadevOOo/tests/java/mod/_srtrs/SortedDynamicResultSetFactory.java83
-rw-r--r--qadevOOo/tests/java/mod/_stm/DataInputStream.java197
-rw-r--r--qadevOOo/tests/java/mod/_stm/DataOutputStream.java182
-rw-r--r--qadevOOo/tests/java/mod/_stm/MarkableInputStream.java147
-rw-r--r--qadevOOo/tests/java/mod/_stm/MarkableOutputStream.java207
-rw-r--r--qadevOOo/tests/java/mod/_stm/ObjectInputStream.java299
-rw-r--r--qadevOOo/tests/java/mod/_stm/ObjectOutputStream.java320
-rw-r--r--qadevOOo/tests/java/mod/_stm/Pipe.java115
-rw-r--r--qadevOOo/tests/java/mod/_stm/Pump.java190
-rw-r--r--qadevOOo/tests/java/mod/_stm/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/DataInputStream.java194
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/DataOutputStream.java179
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/MarkableInputStream.java144
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/MarkableOutputStream.java204
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/ObjectInputStream.java296
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/ObjectOutputStream.java317
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/Pipe.java111
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/Pump.java187
-rw-r--r--qadevOOo/tests/java/mod/_streams.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBox.java202
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxHeaderBar.java255
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxHeaderCell.java240
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxTable.java238
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxTableCell.java226
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleIconChoiceCtrl.java287
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleIconChoiceCtrlEntry.java264
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTabBar.java162
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTabBarPage.java194
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTabBarPageList.java209
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTreeListBox.java249
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTreeListBoxEntry.java295
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessibleControlShape.java125
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessibleEditableTextPara.java162
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessibleGraphicShape.java129
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessibleOLEShape.java151
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessiblePageShape.java141
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessiblePresentationGraphicShape.java149
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessiblePresentationOLEShape.java158
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessiblePresentationShape.java147
-rw-r--r--qadevOOo/tests/java/mod/_svx/AccessibleShape.java128
-rw-r--r--qadevOOo/tests/java/mod/_svx/GraphicExporter.java237
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxDrawPage.java224
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxGraphCtrlAccessibleContext.java251
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxGraphicObject.java263
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShape.java227
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapeCircle.java247
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapeCollection.java148
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapeConnector.java204
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapeControl.java158
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapeDimensioning.java169
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapeGroup.java195
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapePolyPolygon.java265
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxShapePolyPolygonBezier.java278
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoNumberingRules.java94
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoText.java170
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoTextContent.java150
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoTextContentEnum.java152
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoTextCursor.java144
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoTextField.java161
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoTextRange.java156
-rw-r--r--qadevOOo/tests/java/mod/_svx/SvxUnoTextRangeEnumeration.java157
-rw-r--r--qadevOOo/tests/java/mod/_svx/package.html6
-rwxr-xr-xqadevOOo/tests/java/mod/_sw/CharacterStyle.java207
-rwxr-xr-xqadevOOo/tests/java/mod/_sw/ConditionalParagraphStyle.java201
-rw-r--r--qadevOOo/tests/java/mod/_sw/DocumentSettings.java85
-rwxr-xr-xqadevOOo/tests/java/mod/_sw/PageStyle.java201
-rwxr-xr-xqadevOOo/tests/java/mod/_sw/ParagraphStyle.java192
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleDocumentPageView.java200
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleDocumentView.java187
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleEndnoteView.java195
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleFooterView.java200
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleFootnoteView.java195
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleHeaderView.java188
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessiblePageView.java286
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleParagraphView.java139
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleTableCellView.java154
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleTableView.java174
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleTextEmbeddedObject.java156
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleTextFrameView.java187
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwAccessibleTextGraphicObject.java177
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXAutoTextContainer.java89
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXAutoTextEntry.java217
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXAutoTextGroup.java178
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXBodyText.java148
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXBookmark.java121
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXBookmarks.java119
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXCell.java135
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXCellRange.java169
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXChapterNumbering.java123
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXDocumentIndex.java144
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXDocumentIndexMark.java145
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXDocumentIndexes.java135
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXDrawPage.java164
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXEndnoteProperties.java134
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXFieldEnumeration.java176
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXFieldMaster.java111
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXFootnote.java158
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXFootnoteProperties.java132
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXFootnoteText.java176
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXFootnotes.java134
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXFrames.java143
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXHeadFootText.java198
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXLineNumberingProperties.java119
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXMailMerge.java439
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXModule.java90
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXNumberingRules.java178
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXParagraph.java279
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXParagraphEnumeration.java154
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXPrintSettings.java110
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXPropertySet.java85
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXPropertySetInfo.java97
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXReferenceMark.java142
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXReferenceMarks.java164
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXShape.java133
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXStyle.java248
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXStyleFamilies.java111
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXStyleFamily.java197
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTableCellText.java172
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTableColumns.java136
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTableRows.java128
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextColumns.java184
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextCursor.java316
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextDefaults.java123
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextDocument.java268
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextEmbeddedObject.java173
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextEmbeddedObjects.java137
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextField.java168
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextFieldMasters.java140
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextFieldTypes.java140
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextFrame.java159
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextFrameText.java156
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextGraphicObject.java207
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextGraphicObjects.java165
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextPortion.java187
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextPortionEnumeration.java161
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextRange.java99
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextRanges.java129
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextSearch.java131
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextSection.java187
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextSections.java152
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextTable.java261
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextTableCursor.java124
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextTableRow.java127
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextTables.java154
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextView.java297
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXTextViewCursor.java122
-rw-r--r--qadevOOo/tests/java/mod/_sw/SwXViewSettings.java112
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLContentExporter.java196
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLContentImporter.java178
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLExporter.java199
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLImporter.java171
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLMetaExporter.java200
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLMetaImporter.java189
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLSettingsExporter.java209
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLSettingsImporter.java208
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLStylesExporter.java203
-rw-r--r--qadevOOo/tests/java/mod/_sw/XMLStylesImporter.java188
-rw-r--r--qadevOOo/tests/java/mod/_sw/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_sysdtrans/SystemClipboard.java60
-rw-r--r--qadevOOo/tests/java/mod/_sysdtrans/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_syssh/SystemShellExecute.java60
-rw-r--r--qadevOOo/tests/java/mod/_tcv/TypeConverter.java71
-rw-r--r--qadevOOo/tests/java/mod/_tcv/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_tdmgr/TypeDescriptionManager.java89
-rw-r--r--qadevOOo/tests/java/mod/_tdmgr/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_text/DefaultNumberingProvider.java83
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleButton.java246
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleCheckBox.java261
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleComboBox.java246
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleDropDownComboBox.java139
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleDropDownListBox.java154
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleEdit.java235
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleFixedText.java209
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleList.java237
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleListBox.java250
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleListItem.java241
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleMenu.java196
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleMenuBar.java156
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleMenuItem.java203
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleMenuSeparator.java170
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessiblePopupMenu.java230
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleRadioButton.java310
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleScrollBar.java186
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleStatusBar.java182
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleStatusBarItem.java197
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleTabControl.java282
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleTabPage.java292
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleToolBox.java188
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleToolBoxItem.java207
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleWindow.java207
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/MutableTreeDataModel.java105
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/MutableTreeNode.java191
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/TabController.java143
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/TabControllerModel.java105
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/Toolkit.java142
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlButton.java156
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlButtonModel.java87
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlCheckBox.java164
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlCheckBoxModel.java87
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlComboBox.java160
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlComboBoxModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlContainer.java252
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlContainerModel.java66
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlCurrencyField.java162
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlCurrencyFieldModel.java85
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlDateField.java166
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlDateFieldModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlDialog.java254
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlDialogModel.java189
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlEdit.java161
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlEditModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlFileControl.java162
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlFileControlModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlFixedLineModel.java97
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlFixedText.java152
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlFixedTextModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlFormattedField.java167
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlFormattedFieldModel.java85
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlGroupBox.java151
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlGroupBoxModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlImageControl.java160
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlImageControlModel.java62
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlListBox.java161
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlListBoxModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlNumericField.java171
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlNumericFieldModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlPatternField.java162
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlPatternFieldModel.java62
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlProgressBarModel.java94
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlRadioButton.java152
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlRadioButtonModel.java62
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlScrollBarModel.java97
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlTimeField.java162
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoControlTimeFieldModel.java62
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoScrollBarControl.java179
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoSpinButtonControl.java149
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoSpinButtonControlModel.java69
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoTreeControl.java303
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoTreeModel.java84
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_typeconverter.uno/TypeConverter.java66
-rw-r--r--qadevOOo/tests/java/mod/_typeconverter.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_typemgr.uno/TypeDescriptionManager.java84
-rw-r--r--qadevOOo/tests/java/mod/_typemgr.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_ucb/UcbContentProviderProxyFactory.java77
-rw-r--r--qadevOOo/tests/java/mod/_ucb/UcbPropertiesManager.java68
-rw-r--r--qadevOOo/tests/java/mod/_ucb/UcbStore.java77
-rw-r--r--qadevOOo/tests/java/mod/_ucb/UniversalContentBroker.java88
-rw-r--r--qadevOOo/tests/java/mod/_ucpchelp/CHelpContentProvider.java82
-rw-r--r--qadevOOo/tests/java/mod/_ucpdav/WebDAVContentProvider.java90
-rw-r--r--qadevOOo/tests/java/mod/_ucpfile/FileProvider.java80
-rw-r--r--qadevOOo/tests/java/mod/_ucpftp/FTPContentProvider.java81
-rw-r--r--qadevOOo/tests/java/mod/_ucphier/HierarchyContentProvider.java80
-rw-r--r--qadevOOo/tests/java/mod/_ucphier/HierarchyDataSource.java68
-rw-r--r--qadevOOo/tests/java/mod/_ucppkg/PackageContentProvider.java83
-rw-r--r--qadevOOo/tests/java/mod/_ucprmt/ContentProvider.java118
-rw-r--r--qadevOOo/tests/java/mod/_ucprmt/ProviderAcceptor.java72
-rw-r--r--qadevOOo/tests/java/mod/_ucprmt/ProxyProvider.java81
-rw-r--r--qadevOOo/tests/java/mod/_uui/UUIInteractionHandler.java82
-rw-r--r--qadevOOo/tests/java/mod/_uuresolver.uno/UnoUrlResolver.java68
-rw-r--r--qadevOOo/tests/java/mod/_uuresolver.uno/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_uuresolver/UnoUrlResolver.java81
-rw-r--r--qadevOOo/tests/java/mod/_uuresolver/package.html6
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Chart/XMLContentExporter.java201
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Chart/XMLContentImporter.java206
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Chart/XMLExporter.java204
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Chart/XMLImporter.java204
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Chart/XMLStylesExporter.java191
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Chart/XMLStylesImporter.java185
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLContentExporter.java215
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLContentImporter.java211
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLExporter.java215
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLImporter.java211
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLMetaExporter.java205
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLMetaImporter.java189
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLSettingsExporter.java211
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLSettingsImporter.java199
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLStylesExporter.java214
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Draw/XMLStylesImporter.java197
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLContentExporter.java207
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLContentImporter.java221
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLExporter.java210
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLImporter.java180
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLMetaExporter.java206
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLMetaImporter.java189
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLSettingsExporter.java219
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLSettingsImporter.java213
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLStylesExporter.java209
-rw-r--r--qadevOOo/tests/java/mod/_xmloff/Impress/XMLStylesImporter.java202
-rw-r--r--rdbmaker/inc/codemaker/dependency.hxx171
-rw-r--r--rdbmaker/inc/codemaker/global.hxx140
-rw-r--r--rdbmaker/inc/codemaker/options.hxx100
-rw-r--r--rdbmaker/inc/codemaker/registry.hxx211
-rw-r--r--rdbmaker/inc/codemaker/typemanager.hxx175
-rw-r--r--rdbmaker/prj/build.lst6
-rw-r--r--rdbmaker/prj/d.lst4
-rw-r--r--rdbmaker/source/codemaker/dependency.cxx303
-rw-r--r--rdbmaker/source/codemaker/global.cxx171
-rw-r--r--rdbmaker/source/codemaker/makefile.mk55
-rw-r--r--rdbmaker/source/codemaker/options.cxx70
-rw-r--r--rdbmaker/source/codemaker/typemanager.cxx276
-rw-r--r--rdbmaker/source/rdbmaker/makefile.mk63
-rw-r--r--rdbmaker/source/rdbmaker/rdbmaker.cxx508
-rw-r--r--rdbmaker/source/rdbmaker/rdboptions.cxx384
-rw-r--r--rdbmaker/source/rdbmaker/rdboptions.hxx60
-rw-r--r--rdbmaker/source/rdbmaker/rdbtype.cxx197
-rw-r--r--rdbmaker/source/rdbmaker/rdbtype.hxx54
-rw-r--r--rdbmaker/source/rdbmaker/specialtypemanager.cxx104
-rw-r--r--rdbmaker/source/rdbmaker/specialtypemanager.hxx74
-rw-r--r--rdbmaker/source/rdbmaker/typeblop.cxx536
-rw-r--r--redland/LICENSE.txt11
-rw-r--r--redland/README38
-rw-r--r--redland/prj/build.lst5
-rw-r--r--redland/prj/d.lst19
-rw-r--r--redland/raptor/makefile.mk171
-rw-r--r--redland/raptor/raptor-1.4.18.patch.autotools46
-rw-r--r--redland/raptor/raptor-1.4.18.patch.dmake124
-rw-r--r--redland/raptor/raptor-1.4.18.patch.legal18
-rw-r--r--redland/raptor/raptor-1.4.18.patch.mingw30
-rw-r--r--redland/raptor/raptor-1.4.18.patch.ooo_build43
-rw-r--r--redland/raptor/raptor-1.4.18.patch.win3278
-rw-r--r--redland/raptor/raptor-aix.patch21
-rw-r--r--redland/raptor/raptor2.map294
-rw-r--r--redland/rasqal/makefile.mk164
-rw-r--r--redland/rasqal/rasqal-0.9.16.patch.autotools38
-rw-r--r--redland/rasqal/rasqal-0.9.16.patch.dmake98
-rw-r--r--redland/rasqal/rasqal-0.9.16.patch.legal18
-rw-r--r--redland/rasqal/rasqal-0.9.16.patch.ooo_build56
-rw-r--r--redland/rasqal/rasqal-0.9.16.patch.win3243
-rw-r--r--redland/rasqal/rasqal-aix.patch44
-rw-r--r--redland/rasqal/rasqal2.map194
-rw-r--r--redland/redland/makefile.mk165
-rw-r--r--redland/redland/redland-1.0.8.patch.autotools58
-rw-r--r--redland/redland/redland-1.0.8.patch.dmake115
-rw-r--r--redland/redland/redland-1.0.8.patch.legal54
-rw-r--r--redland/redland/redland-1.0.8.patch.ooo_build22
-rw-r--r--redland/redland/redland-1.0.8.patch.win32154
-rw-r--r--redland/redland/redland-aix.patch21
-rw-r--r--redland/redland/redland2.map316
-rw-r--r--redland/redlandversion.mk32
-rw-r--r--regexp/inc/makefile.mk47
-rw-r--r--regexp/inc/pch/precompiled_regexp.cxx31
-rw-r--r--regexp/inc/pch/precompiled_regexp.hxx34
-rw-r--r--regexp/prj/build.lst4
-rw-r--r--regexp/prj/d.lst8
-rw-r--r--regexp/source/makefile.mk70
-rw-r--r--regexp/source/reclass.cxx2947
-rw-r--r--regexp/source/reclass.hxx388
-rw-r--r--registry/inc/makefile.mk47
-rw-r--r--registry/inc/pch/precompiled_registry.cxx31
-rw-r--r--registry/inc/pch/precompiled_registry.hxx34
-rw-r--r--registry/inc/registry/reader.h613
-rw-r--r--registry/inc/registry/reader.hxx635
-rw-r--r--registry/inc/registry/reflread.hxx522
-rw-r--r--registry/inc/registry/refltype.hxx89
-rw-r--r--registry/inc/registry/reflwrit.hxx358
-rw-r--r--registry/inc/registry/registry.h479
-rw-r--r--registry/inc/registry/registry.hxx1261
-rw-r--r--registry/inc/registry/regtype.h182
-rw-r--r--registry/inc/registry/types.h343
-rw-r--r--registry/inc/registry/version.h80
-rw-r--r--registry/inc/registry/writer.h272
-rw-r--r--registry/inc/registry/writer.hxx306
-rw-r--r--registry/prj/build.lst7
-rw-r--r--registry/prj/d.lst19
-rw-r--r--registry/source/keyimpl.cxx1081
-rw-r--r--registry/source/keyimpl.hxx153
-rw-r--r--registry/source/makefile.mk53
-rw-r--r--registry/source/reflcnst.hxx297
-rw-r--r--registry/source/reflread.cxx1777
-rw-r--r--registry/source/reflwrit.cxx1494
-rw-r--r--registry/source/regimpl.cxx1759
-rw-r--r--registry/source/regimpl.hxx186
-rw-r--r--registry/source/registry.cxx634
-rw-r--r--registry/source/regkey.cxx1025
-rw-r--r--registry/source/regkey.hxx83
-rw-r--r--registry/test/makefile.mk90
-rw-r--r--registry/test/regcompare/makefile.mk107
-rw-r--r--registry/test/regcompare/other1.idl1
-rw-r--r--registry/test/regcompare/other2.idl1
-rw-r--r--registry/test/regcompare/pe.idl1
-rw-r--r--registry/test/regcompare/psa.idl1
-rw-r--r--registry/test/regcompare/psb.idl1
-rw-r--r--registry/test/regcompare/ue.idl1
-rw-r--r--registry/test/regcompare/usa.idl1
-rw-r--r--registry/test/regcompare/usb.idl1
-rw-r--r--registry/test/regdiagnose.h47
-rw-r--r--registry/test/testmerge.cxx424
-rw-r--r--registry/test/testregcpp.cxx709
-rw-r--r--registry/tools/checksingleton.cxx485
-rw-r--r--registry/tools/makefile.mk80
-rw-r--r--registry/tools/regcompare.cxx2401
-rw-r--r--registry/tools/regmerge.cxx284
-rw-r--r--registry/tools/regview.cxx163
-rw-r--r--registry/util/makefile.mk76
-rw-r--r--registry/util/reg.map88
-rw-r--r--registry/version.mk39
-rw-r--r--registry/workben/makefile.mk86
-rw-r--r--registry/workben/regspeed.cxx273
-rw-r--r--registry/workben/regtest.cxx342
-rw-r--r--registry/workben/test.cxx56
-rw-r--r--remotebridges/examples/exports.dxp3
-rw-r--r--remotebridges/examples/makefile.mk61
-rw-r--r--remotebridges/examples/officeclient.cxx336
-rw-r--r--remotebridges/prj/build.lst6
-rw-r--r--remotebridges/prj/d.lst17
-rw-r--r--remotebridges/source/bridge/bridge_connection.cxx141
-rw-r--r--remotebridges/source/bridge/bridge_connection.hxx59
-rw-r--r--remotebridges/source/bridge/bridge_provider.cxx182
-rw-r--r--remotebridges/source/bridge/makefile.mk64
-rw-r--r--remotebridges/source/bridge/remote_bridge.cxx478
-rw-r--r--remotebridges/source/bridge/remote_bridge.hxx149
-rw-r--r--remotebridges/source/bridge/remotebridge.xml47
-rw-r--r--remotebridges/source/dynamicloader/dynamicloader.cxx434
-rw-r--r--remotebridges/source/dynamicloader/dynamicloader.xml36
-rwxr-xr-xremotebridges/source/dynamicloader/makefile.mk69
-rw-r--r--remotebridges/source/factory/brdgfctr.xml44
-rw-r--r--remotebridges/source/factory/bridgefactory.cxx501
-rw-r--r--remotebridges/source/factory/bridgeimpl.cxx273
-rw-r--r--remotebridges/source/factory/bridgeimpl.hxx108
-rw-r--r--remotebridges/source/factory/makefile.mk66
-rw-r--r--remotebridges/source/unourl_resolver/makefile.mk64
-rw-r--r--remotebridges/source/unourl_resolver/unourl_resolver.cxx256
-rw-r--r--remotebridges/source/unourl_resolver/uuresolver.xml38
-rw-r--r--reportbuilder/java/com/sun/star/report/DataRow.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/DataSource.java48
-rw-r--r--reportbuilder/java/com/sun/star/report/DataSourceException.java94
-rw-r--r--reportbuilder/java/com/sun/star/report/DataSourceFactory.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/ImageService.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/InputRepository.java88
-rw-r--r--reportbuilder/java/com/sun/star/report/JobDefinitionException.java64
-rw-r--r--reportbuilder/java/com/sun/star/report/JobProgressIndicator.java79
-rw-r--r--reportbuilder/java/com/sun/star/report/JobProperties.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/OfficeToken.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/OutputRepository.java71
-rw-r--r--reportbuilder/java/com/sun/star/report/ParameterMap.java68
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportAddIn.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportEngine.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportEngineMetaData.java59
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportEngineParameterNames.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportExecutionException.java86
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportExpression.java51
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportExpressionMetaData.java47
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportFunction.java44
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportJob.java91
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportJobDefinition.java57
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportJobFactory.java41
-rw-r--r--reportbuilder/java/com/sun/star/report/SDBCReportData.java381
-rw-r--r--reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java591
-rw-r--r--reportbuilder/java/com/sun/star/report/SOImageService.java189
-rw-r--r--reportbuilder/java/com/sun/star/report/StorageRepository.java353
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Author-Function.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Author-Function_en_US.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunction.java61
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunctionDescription.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/MetaDataFunctionCategory.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Title-Function.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Title-Function_en_US.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/TitleFunction.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/TitleFunctionDescription.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/category.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/category_en_US.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/makefile.mk64
-rw-r--r--reportbuilder/java/com/sun/star/report/makefile.mk74
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/DefaultNameGenerator.java156
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/Manifest.mf7
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/OfficeNamespaces.java72
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoFormulaContext.java97
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportAddIn.java60
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngine.java72
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngineMetaData.java147
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java419
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOFormulaOpCodeMapper.java153
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOFormulaParser.java446
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOFunctionManager.java172
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOReportJobFactory.java448
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarFunctionCategory.java161
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarFunctionDescription.java194
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarReportData.java168
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarReportDataFactory.java125
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarReportModule.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/configuration.properties156
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpression.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpressionMetaData.java78
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/AbstractReportElementLayoutController.java269
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FixedTextLayoutController.java85
-rwxr-xr-xreportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java222
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormattedTextLayoutController.java229
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementContext.java90
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementLayoutController.java325
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ObjectOleLayoutController.java124
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java159
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupInstanceSectionLayoutController.java153
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java204
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupSectionLayoutController.java109
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficePageSectionLayoutController.java30
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeRepeatingStructureLayoutController.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeReportLayoutController.java270
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableLayoutController.java79
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableTemplateLayoutController.java189
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java214
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesCollection.java97
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesDeclarationLayoutController.java191
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryLoader.java188
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryResourceData.java85
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/loader/InputResourceKey.java63
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/makefile.mk135
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/DataStyle.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FixedTextElement.java52
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceDeclsSection.java74
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceElement.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FormatCondition.java67
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FormattedTextElement.java58
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/ImageElement.java87
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/ObjectOleElement.java88
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDetailSection.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDocument.java73
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroup.java94
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupInstanceSection.java16
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupSection.java54
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterPage.java66
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterStyles.java83
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeReport.java148
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyle.java130
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyles.java198
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStylesCollection.java123
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeTableSection.java42
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/PageLayout.java68
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/PageSection.java60
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/RawText.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/ReportElement.java110
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/TableCellElement.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/VariablesDeclarationSection.java52
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/module.properties45
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-datastyle.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-draw.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-form.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-style.css10
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-table.css37
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-text.css9
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/ImageProducer.java498
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/OfficeDocumentReportTarget.java1671
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/OleProducer.java139
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/StyleUtilities.java615
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/StylesWriter.java390
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java106
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java286
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportProcessor.java121
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java968
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/MasterPageFactory.java417
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/PageBreakDefinition.java49
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/PageContext.java228
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportProcessor.java116
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportTarget.java1466
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/VariablesDeclarations.java108
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/AttributeSpecification.java57
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/ElementReadHandler.java91
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeDocumentXmlResourceFactory.java51
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeParserUtil.java191
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeStylesXmlResourceFactory.java59
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/StarStyleXmlFactoryModule.java62
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/StarXmlFactoryModule.java62
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/StyleMapper.java38
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/chart/ChartReadHandler.java115
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/data/DataStyleReadHandler.java130
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/draw/ObjectOleReadHandler.java85
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/BodyReadHandler.java91
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentContentReadHandler.java236
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentStylesReadHandler.java106
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/FontFaceDeclsReadHandler.java117
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/MasterStylesReadHandler.java125
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt-schema-v1.0-os.xsd414
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ConditionalPrintExpressionReadHandler.java81
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/DetailRootTableReadHandler.java38
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FixedContentReadHandler.java98
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormatConditionReadHandler.java100
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormattedTextReadHandler.java118
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FunctionReadHandler.java116
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupReadHandler.java182
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupSectionReadHandler.java38
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ImageReadHandler.java141
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/MasterDetailReadHandler.java109
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportElementReadHandler.java109
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportReadHandler.java239
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/RootTableReadHandler.java105
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/SubDocumentReadHandler.java137
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/selectors.properties113
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style-mapping.txt8
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/FontFaceReadHandler.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/MasterPageReadHandler.java106
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStyleReadHandler.java105
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStylesReadHandler.java143
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/PageLayoutReadHandler.java104
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/StyleDefinitionReadHandler.java99
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/OneOfConstantsMapper.java77
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/draw/TextAreaVerticalAlignMapper.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BackgroundColorMapper.java50
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BorderRightMapper.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/ColorMapper.java52
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontSizeMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontStyleMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontWeightMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/TextAlignMapper.java47
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyGenericMapper.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyMapper.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontNameMapper.java49
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontPitchMapper.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontReliefMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextEmphasizeMapper.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineColorMapper.java54
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineStyleMapper.java49
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWidthMapper.java76
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWordMode.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/VerticalAlignMapper.java47
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/ColumnWidthMapper.java53
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/RowHeightMapper.java53
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/CoveredCellReadHandler.java54
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableCellReadHandler.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnReadHandler.java53
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnsReadHandler.java103
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableReadHandler.java145
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowReadHandler.java126
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowsReadHandler.java102
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/text/NoCDATATextContentReadHandler.java168
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/text/TextContentReadHandler.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/xlink/XLinkReadHandler.java97
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/smil.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/star-office.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/star-report.css73
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/star-rpt.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/LengthCalculator.java110
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapper.java96
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperKey.java118
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlFactoryModule.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlResourceFactory.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingDocumentReadHandler.java107
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingReadHandler.java101
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingRule.java64
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xml168
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xsd91
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/svg.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/xsl-fo.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/util/DefaultJobProperties.java80
-rw-r--r--reportbuilder/java/com/sun/star/report/util/DefaultParameterMap.java123
-rw-r--r--reportbuilder/java/com/sun/star/report/util/DefaultReportJobDefinition.java116
-rw-r--r--reportbuilder/java/com/sun/star/report/util/ManifestWriter.java123
-rw-r--r--reportbuilder/java/com/sun/star/report/util/ReportUtil.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/util/makefile.mk45
-rw-r--r--reportbuilder/java/jfreereport.properties30
-rw-r--r--reportbuilder/java/libformula.properties43
-rw-r--r--reportbuilder/java/loader.properties31
-rw-r--r--reportbuilder/java/makefile.mk45
-rw-r--r--reportbuilder/license/THIRDPARTYREADMELICENSE.html768
-rw-r--r--reportbuilder/license/readme_en-US.html30
-rw-r--r--reportbuilder/license/readme_en-US.txt34
-rw-r--r--reportbuilder/prj/build.lst16
-rw-r--r--reportbuilder/prj/d.lst12
-rw-r--r--reportbuilder/prj/rpt.xml14
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/Accelerators.xcu156
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/DataAccess.xcu44
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/Embedding.xcu71
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/ExtendedColorScheme.xcu195
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/Paths.xcu39
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/ReportDesign.xcu34
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/Controller.xcu167
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/DbReportWindowState.xcu154
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/ReportCommands.xcu403
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/makefile.mk48
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/makefile.mk68
-rw-r--r--reportbuilder/registry/data/org/openoffice/Setup.xcu54
-rw-r--r--reportbuilder/registry/data/org/openoffice/TypeDetection/Filter.xcu76
-rw-r--r--reportbuilder/registry/data/org/openoffice/TypeDetection/Types.xcu81
-rw-r--r--reportbuilder/registry/data/org/openoffice/TypeDetection/makefile.mk55
-rw-r--r--reportbuilder/registry/data/org/openoffice/makefile.mk50
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/ReportDesign.xcs71
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/UI/DbReportWindowState.xcs48
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/UI/ReportCommands.xcs53
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/UI/makefile.mk58
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/makefile.mk46
-rw-r--r--reportbuilder/template/delzip0
-rw-r--r--reportbuilder/template/en-US/wizard/report/default.otrbin0 -> 2561 bytes
-rw-r--r--reportbuilder/template/en-US/wizard/report/makefile.mk69
-rw-r--r--reportbuilder/template/makefile.mk122
-rw-r--r--reportbuilder/template/manifest.xml3
-rw-r--r--reportbuilder/template/post.xml8
-rw-r--r--reportbuilder/template/pre.xml6
-rw-r--r--reportbuilder/template/registry/data/org/openoffice/Office/Paths.xcu40
-rw-r--r--reportbuilder/template/registry/data/org/openoffice/Office/makefile.mk49
-rw-r--r--reportbuilder/template/wizard/report/default.odr1
-rw-r--r--reportbuilder/template/wizard/report/finance.odr1
-rw-r--r--reportbuilder/template/wizard/report/finance_2.odr1
-rw-r--r--reportbuilder/template/wizard/report/makefile.mk69
-rw-r--r--reportbuilder/template/wizard/report/yellow.odr1
-rwxr-xr-xreportbuilder/util/component.txt1
-rw-r--r--reportbuilder/util/delzip1
-rwxr-xr-xreportbuilder/util/description.xml25
-rw-r--r--reportbuilder/util/hidother.src146
-rwxr-xr-xreportbuilder/util/makefile.mk155
-rw-r--r--reportbuilder/util/makefile.pmk66
-rw-r--r--reportbuilder/util/manifest.xml5
-rw-r--r--reportbuilder/util/target.pmk34
-rw-r--r--reportdesign/images/em42.pngbin0 -> 1965 bytes
-rw-r--r--reportdesign/images/em42_hc.pngbin0 -> 1160 bytes
-rw-r--r--reportdesign/inc/ModuleHelper.hxx102
-rw-r--r--reportdesign/inc/PropertyForward.hxx94
-rw-r--r--reportdesign/inc/ReportDefinition.hxx397
-rw-r--r--reportdesign/inc/ReportHelperDefines.hxx197
-rw-r--r--reportdesign/inc/ReportVisitor.hxx69
-rw-r--r--reportdesign/inc/RptDef.hxx123
-rw-r--r--reportdesign/inc/RptModel.hxx105
-rw-r--r--reportdesign/inc/RptObject.hxx288
-rw-r--r--reportdesign/inc/RptPage.hxx101
-rw-r--r--reportdesign/inc/RptResId.hrc298
-rw-r--r--reportdesign/inc/UndoActions.hxx302
-rw-r--r--reportdesign/inc/UndoEnv.hxx152
-rw-r--r--reportdesign/inc/conditionalexpression.hxx126
-rw-r--r--reportdesign/inc/dllapi.h43
-rw-r--r--reportdesign/inc/helpids.hrc130
-rw-r--r--reportdesign/inc/makefile.mk47
-rw-r--r--reportdesign/inc/pch/precompiled_reportdesign.cxx31
-rw-r--r--reportdesign/inc/pch/precompiled_reportdesign.hxx47
-rw-r--r--reportdesign/inc/reportformula.hxx137
-rw-r--r--reportdesign/inc/rptui_slotid.hrc212
-rw-r--r--reportdesign/prj/build.lst15
-rw-r--r--reportdesign/prj/d.lst21
-rw-r--r--reportdesign/prj/rpt.xml14
-rwxr-xr-xreportdesign/qa/complex/RPTCalcTests.odbbin0 -> 6715 bytes
-rwxr-xr-xreportdesign/qa/complex/RPTWriterTests.odbbin0 -> 5886 bytes
-rwxr-xr-xreportdesign/qa/complex/ReportDesignerTest.java608
-rwxr-xr-xreportdesign/qa/complex/makefile.mk58
-rw-r--r--reportdesign/qa/complex/mysql-connector-exists.pl9
-rwxr-xr-xreportdesign/qa/complex/runner.props22
-rw-r--r--reportdesign/source/core/api/FixedLine.cxx583
-rw-r--r--reportdesign/source/core/api/FixedText.cxx345
-rw-r--r--reportdesign/source/core/api/FormatCondition.cxx167
-rw-r--r--reportdesign/source/core/api/FormattedField.cxx386
-rw-r--r--reportdesign/source/core/api/Function.cxx223
-rw-r--r--reportdesign/source/core/api/Functions.cxx205
-rw-r--r--reportdesign/source/core/api/Group.cxx355
-rw-r--r--reportdesign/source/core/api/Groups.cxx218
-rw-r--r--reportdesign/source/core/api/ImageControl.cxx503
-rw-r--r--reportdesign/source/core/api/ReportComponent.cxx153
-rw-r--r--reportdesign/source/core/api/ReportControlModel.cxx160
-rw-r--r--reportdesign/source/core/api/ReportDefinition.cxx2941
-rw-r--r--reportdesign/source/core/api/ReportEngineJFree.cxx429
-rw-r--r--reportdesign/source/core/api/ReportVisitor.cxx96
-rw-r--r--reportdesign/source/core/api/Section.cxx722
-rw-r--r--reportdesign/source/core/api/Shape.cxx525
-rw-r--r--reportdesign/source/core/api/Tools.cxx78
-rw-r--r--reportdesign/source/core/api/makefile.mk63
-rw-r--r--reportdesign/source/core/api/services.cxx102
-rw-r--r--reportdesign/source/core/inc/FixedLine.hxx177
-rw-r--r--reportdesign/source/core/inc/FixedText.hxx162
-rw-r--r--reportdesign/source/core/inc/FormatCondition.hxx119
-rw-r--r--reportdesign/source/core/inc/FormattedField.hxx169
-rw-r--r--reportdesign/source/core/inc/Function.hxx129
-rw-r--r--reportdesign/source/core/inc/Functions.hxx107
-rw-r--r--reportdesign/source/core/inc/Group.hxx166
-rw-r--r--reportdesign/source/core/inc/Groups.hxx110
-rw-r--r--reportdesign/source/core/inc/ImageControl.hxx166
-rw-r--r--reportdesign/source/core/inc/ReportComponent.hxx90
-rw-r--r--reportdesign/source/core/inc/ReportControlModel.hxx139
-rw-r--r--reportdesign/source/core/inc/ReportDrawPage.hxx52
-rw-r--r--reportdesign/source/core/inc/ReportEngineJFree.hxx141
-rw-r--r--reportdesign/source/core/inc/ReportHelperImpl.hxx1293
-rw-r--r--reportdesign/source/core/inc/ReportUndoFactory.hxx87
-rw-r--r--reportdesign/source/core/inc/RptObjectListener.hxx66
-rw-r--r--reportdesign/source/core/inc/Section.hxx211
-rw-r--r--reportdesign/source/core/inc/Shape.hxx184
-rw-r--r--reportdesign/source/core/inc/Tools.hxx186
-rw-r--r--reportdesign/source/core/inc/conditionupdater.hxx78
-rw-r--r--reportdesign/source/core/inc/core_resource.hrc59
-rw-r--r--reportdesign/source/core/inc/core_resource.hxx80
-rw-r--r--reportdesign/source/core/misc/conditionalexpression.cxx207
-rw-r--r--reportdesign/source/core/misc/conditionupdater.cxx138
-rw-r--r--reportdesign/source/core/misc/makefile.mk46
-rw-r--r--reportdesign/source/core/misc/reportformula.cxx185
-rw-r--r--reportdesign/source/core/resource/core_resource.cxx90
-rw-r--r--reportdesign/source/core/resource/makefile.mk48
-rw-r--r--reportdesign/source/core/resource/strings.src95
-rw-r--r--reportdesign/source/core/sdr/ModuleHelper.cxx142
-rw-r--r--reportdesign/source/core/sdr/PropertyForward.cxx207
-rw-r--r--reportdesign/source/core/sdr/ReportDrawPage.cxx159
-rw-r--r--reportdesign/source/core/sdr/ReportUndoFactory.cxx183
-rw-r--r--reportdesign/source/core/sdr/RptModel.cxx236
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx1259
-rw-r--r--reportdesign/source/core/sdr/RptObjectListener.cxx98
-rw-r--r--reportdesign/source/core/sdr/RptPage.cxx254
-rw-r--r--reportdesign/source/core/sdr/UndoActions.cxx451
-rw-r--r--reportdesign/source/core/sdr/UndoEnv.cxx633
-rw-r--r--reportdesign/source/core/sdr/formatnormalizer.cxx282
-rw-r--r--reportdesign/source/core/sdr/formatnormalizer.hxx97
-rw-r--r--reportdesign/source/core/sdr/makefile.mk52
-rw-r--r--reportdesign/source/filter/xml/dbloader2.cxx127
-rw-r--r--reportdesign/source/filter/xml/dbloader2.hxx105
-rw-r--r--reportdesign/source/filter/xml/makefile.mk70
-rw-r--r--reportdesign/source/filter/xml/xmlAutoStyle.cxx102
-rw-r--r--reportdesign/source/filter/xml/xmlAutoStyle.hxx63
-rw-r--r--reportdesign/source/filter/xml/xmlCell.cxx291
-rw-r--r--reportdesign/source/filter/xml/xmlCell.hxx77
-rw-r--r--reportdesign/source/filter/xml/xmlColumn.cxx187
-rw-r--r--reportdesign/source/filter/xml/xmlColumn.hxx67
-rw-r--r--reportdesign/source/filter/xml/xmlComponent.cxx116
-rw-r--r--reportdesign/source/filter/xml/xmlComponent.hxx63
-rw-r--r--reportdesign/source/filter/xml/xmlCondPrtExpr.cxx104
-rw-r--r--reportdesign/source/filter/xml/xmlCondPrtExpr.hxx61
-rw-r--r--reportdesign/source/filter/xml/xmlControlProperty.cxx363
-rw-r--r--reportdesign/source/filter/xml/xmlControlProperty.hxx89
-rw-r--r--reportdesign/source/filter/xml/xmlEnums.hxx182
-rw-r--r--reportdesign/source/filter/xml/xmlExport.cxx1675
-rw-r--r--reportdesign/source/filter/xml/xmlExport.hxx284
-rw-r--r--reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx458
-rw-r--r--reportdesign/source/filter/xml/xmlExportDocumentHandler.hxx108
-rw-r--r--reportdesign/source/filter/xml/xmlFixedContent.cxx244
-rw-r--r--reportdesign/source/filter/xml/xmlFixedContent.hxx74
-rw-r--r--reportdesign/source/filter/xml/xmlFormatCondition.cxx117
-rw-r--r--reportdesign/source/filter/xml/xmlFormatCondition.hxx60
-rw-r--r--reportdesign/source/filter/xml/xmlFormattedField.cxx108
-rw-r--r--reportdesign/source/filter/xml/xmlFormattedField.hxx58
-rw-r--r--reportdesign/source/filter/xml/xmlFunction.cxx144
-rw-r--r--reportdesign/source/filter/xml/xmlFunction.hxx70
-rw-r--r--reportdesign/source/filter/xml/xmlGroup.cxx282
-rw-r--r--reportdesign/source/filter/xml/xmlGroup.hxx69
-rw-r--r--reportdesign/source/filter/xml/xmlHelper.cxx421
-rw-r--r--reportdesign/source/filter/xml/xmlHelper.hxx95
-rw-r--r--reportdesign/source/filter/xml/xmlImage.cxx133
-rw-r--r--reportdesign/source/filter/xml/xmlImage.hxx56
-rw-r--r--reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx399
-rw-r--r--reportdesign/source/filter/xml/xmlImportDocumentHandler.hxx108
-rw-r--r--reportdesign/source/filter/xml/xmlMasterFields.cxx124
-rw-r--r--reportdesign/source/filter/xml/xmlMasterFields.hxx60
-rw-r--r--reportdesign/source/filter/xml/xmlPropertyHandler.cxx59
-rw-r--r--reportdesign/source/filter/xml/xmlPropertyHandler.hxx51
-rw-r--r--reportdesign/source/filter/xml/xmlReport.cxx239
-rw-r--r--reportdesign/source/filter/xml/xmlReport.hxx73
-rw-r--r--reportdesign/source/filter/xml/xmlReportElement.cxx146
-rw-r--r--reportdesign/source/filter/xml/xmlReportElement.hxx61
-rw-r--r--reportdesign/source/filter/xml/xmlReportElementBase.cxx118
-rw-r--r--reportdesign/source/filter/xml/xmlReportElementBase.hxx79
-rw-r--r--reportdesign/source/filter/xml/xmlRow.cxx181
-rw-r--r--reportdesign/source/filter/xml/xmlRow.hxx66
-rw-r--r--reportdesign/source/filter/xml/xmlSection.cxx155
-rw-r--r--reportdesign/source/filter/xml/xmlSection.hxx67
-rw-r--r--reportdesign/source/filter/xml/xmlStyleImport.cxx462
-rw-r--r--reportdesign/source/filter/xml/xmlStyleImport.hxx165
-rw-r--r--reportdesign/source/filter/xml/xmlSubDocument.cxx167
-rw-r--r--reportdesign/source/filter/xml/xmlSubDocument.hxx74
-rw-r--r--reportdesign/source/filter/xml/xmlTable.cxx322
-rw-r--r--reportdesign/source/filter/xml/xmlTable.hxx102
-rw-r--r--reportdesign/source/filter/xml/xmlfilter.cxx1140
-rw-r--r--reportdesign/source/filter/xml/xmlfilter.hxx250
-rw-r--r--reportdesign/source/filter/xml/xmlservices.cxx104
-rw-r--r--reportdesign/source/inc/GroupProperties.hxx57
-rw-r--r--reportdesign/source/inc/constasciistring.hxx64
-rw-r--r--reportdesign/source/inc/corestrings.hrc41
-rw-r--r--reportdesign/source/inc/stringconstants.hrc288
-rw-r--r--reportdesign/source/inc/uistrings.hrc78
-rw-r--r--reportdesign/source/inc/xmlstrings.hrc56
-rw-r--r--reportdesign/source/shared/corestrings.cxx37
-rw-r--r--reportdesign/source/shared/makefile.mk67
-rw-r--r--reportdesign/source/shared/stringconstants.cxx279
-rw-r--r--reportdesign/source/shared/uistrings.cxx72
-rw-r--r--reportdesign/source/shared/xmlstrings.cxx47
-rw-r--r--reportdesign/source/ui/dlg/AddField.cxx576
-rw-r--r--reportdesign/source/ui/dlg/CondFormat.cxx628
-rw-r--r--reportdesign/source/ui/dlg/CondFormat.hrc87
-rw-r--r--reportdesign/source/ui/dlg/CondFormat.src445
-rw-r--r--reportdesign/source/ui/dlg/Condition.cxx742
-rw-r--r--reportdesign/source/ui/dlg/Condition.hxx200
-rw-r--r--reportdesign/source/ui/dlg/DateTime.cxx258
-rw-r--r--reportdesign/source/ui/dlg/DateTime.hrc55
-rw-r--r--reportdesign/source/ui/dlg/DateTime.src128
-rw-r--r--reportdesign/source/ui/dlg/Formula.cxx276
-rw-r--r--reportdesign/source/ui/dlg/GroupExchange.cxx79
-rw-r--r--reportdesign/source/ui/dlg/GroupExchange.hxx55
-rw-r--r--reportdesign/source/ui/dlg/GroupsSorting.cxx1566
-rw-r--r--reportdesign/source/ui/dlg/GroupsSorting.hrc79
-rw-r--r--reportdesign/source/ui/dlg/GroupsSorting.src496
-rw-r--r--reportdesign/source/ui/dlg/Navigator.cxx988
-rw-r--r--reportdesign/source/ui/dlg/Navigator.src187
-rw-r--r--reportdesign/source/ui/dlg/PageNumber.cxx147
-rw-r--r--reportdesign/source/ui/dlg/PageNumber.hrc59
-rw-r--r--reportdesign/source/ui/dlg/PageNumber.src164
-rw-r--r--reportdesign/source/ui/dlg/dlgpage.cxx96
-rw-r--r--reportdesign/source/ui/dlg/dlgpage.src304
-rw-r--r--reportdesign/source/ui/dlg/makefile.mk77
-rw-r--r--reportdesign/source/ui/inc/AddField.hxx145
-rw-r--r--reportdesign/source/ui/inc/ColorChanger.hxx72
-rw-r--r--reportdesign/source/ui/inc/ColorListener.hxx86
-rw-r--r--reportdesign/source/ui/inc/ColumnInfo.hxx60
-rw-r--r--reportdesign/source/ui/inc/CondFormat.hxx189
-rw-r--r--reportdesign/source/ui/inc/DataProviderHandler.hxx132
-rw-r--r--reportdesign/source/ui/inc/DateTime.hxx106
-rw-r--r--reportdesign/source/ui/inc/DefaultInspection.hxx113
-rw-r--r--reportdesign/source/ui/inc/DesignView.hxx294
-rw-r--r--reportdesign/source/ui/inc/EndMarker.hxx55
-rw-r--r--reportdesign/source/ui/inc/FixedTextColor.hxx74
-rw-r--r--reportdesign/source/ui/inc/FormattedFieldBeautifier.hxx72
-rw-r--r--reportdesign/source/ui/inc/Formula.hxx114
-rw-r--r--reportdesign/source/ui/inc/FunctionHelper.hxx115
-rw-r--r--reportdesign/source/ui/inc/GeometryHandler.hxx324
-rw-r--r--reportdesign/source/ui/inc/GroupsSorting.hxx205
-rw-r--r--reportdesign/source/ui/inc/IReportControllerObserver.hxx56
-rw-r--r--reportdesign/source/ui/inc/InsertFunctions.hxx46
-rw-r--r--reportdesign/source/ui/inc/MarkedSection.hxx63
-rw-r--r--reportdesign/source/ui/inc/Navigator.hxx58
-rw-r--r--reportdesign/source/ui/inc/PageNumber.hxx85
-rw-r--r--reportdesign/source/ui/inc/ReportComponentHandler.hxx118
-rw-r--r--reportdesign/source/ui/inc/ReportController.hxx489
-rw-r--r--reportdesign/source/ui/inc/ReportControllerObserver.hxx133
-rw-r--r--reportdesign/source/ui/inc/ReportDefines.hxx42
-rw-r--r--reportdesign/source/ui/inc/ReportRuler.hxx66
-rw-r--r--reportdesign/source/ui/inc/ReportSection.hxx175
-rw-r--r--reportdesign/source/ui/inc/ReportWindow.hxx240
-rw-r--r--reportdesign/source/ui/inc/ScrollHelper.hxx232
-rw-r--r--reportdesign/source/ui/inc/SectionView.hxx80
-rw-r--r--reportdesign/source/ui/inc/SectionWindow.hxx142
-rw-r--r--reportdesign/source/ui/inc/StartMarker.hxx90
-rw-r--r--reportdesign/source/ui/inc/UITools.hxx191
-rw-r--r--reportdesign/source/ui/inc/Undo.hxx156
-rw-r--r--reportdesign/source/ui/inc/ViewsWindow.hxx363
-rw-r--r--reportdesign/source/ui/inc/dlgedclip.hxx89
-rw-r--r--reportdesign/source/ui/inc/dlgedfac.hxx52
-rw-r--r--reportdesign/source/ui/inc/dlgedfunc.hxx163
-rw-r--r--reportdesign/source/ui/inc/dlgpage.hxx57
-rw-r--r--reportdesign/source/ui/inc/metadata.hxx166
-rw-r--r--reportdesign/source/ui/inc/propbrw.hxx121
-rw-r--r--reportdesign/source/ui/inc/statusbarcontroller.hxx94
-rw-r--r--reportdesign/source/ui/inc/toolboxcontroller.hxx93
-rw-r--r--reportdesign/source/ui/inspection/DataProviderHandler.cxx567
-rw-r--r--reportdesign/source/ui/inspection/DefaultInspection.cxx279
-rw-r--r--reportdesign/source/ui/inspection/GeometryHandler.cxx2248
-rw-r--r--reportdesign/source/ui/inspection/ReportComponentHandler.cxx232
-rw-r--r--reportdesign/source/ui/inspection/inspection.src394
-rw-r--r--reportdesign/source/ui/inspection/makefile.mk53
-rw-r--r--reportdesign/source/ui/inspection/metadata.cxx334
-rw-r--r--reportdesign/source/ui/misc/ColorListener.cxx98
-rw-r--r--reportdesign/source/ui/misc/FunctionHelper.cxx260
-rw-r--r--reportdesign/source/ui/misc/UITools.cxx1089
-rw-r--r--reportdesign/source/ui/misc/Undo.cxx412
-rw-r--r--reportdesign/source/ui/misc/makefile.mk62
-rw-r--r--reportdesign/source/ui/misc/rptuiservices.cxx92
-rw-r--r--reportdesign/source/ui/misc/statusbarcontroller.cxx233
-rw-r--r--reportdesign/source/ui/misc/toolboxcontroller.cxx362
-rw-r--r--reportdesign/source/ui/report/DesignView.cxx782
-rw-r--r--reportdesign/source/ui/report/EndMarker.cxx107
-rw-r--r--reportdesign/source/ui/report/FixedTextColor.cxx286
-rw-r--r--reportdesign/source/ui/report/FormattedFieldBeautifier.cxx206
-rw-r--r--reportdesign/source/ui/report/ReportController.cxx4405
-rw-r--r--reportdesign/source/ui/report/ReportControllerObserver.cxx464
-rw-r--r--reportdesign/source/ui/report/ReportRuler.cxx66
-rw-r--r--reportdesign/source/ui/report/ReportSection.cxx881
-rw-r--r--reportdesign/source/ui/report/ReportWindow.cxx446
-rw-r--r--reportdesign/source/ui/report/ScrollHelper.cxx419
-rw-r--r--reportdesign/source/ui/report/SectionView.cxx277
-rw-r--r--reportdesign/source/ui/report/SectionWindow.cxx420
-rw-r--r--reportdesign/source/ui/report/StartMarker.cxx327
-rw-r--r--reportdesign/source/ui/report/ViewsWindow.cxx1816
-rw-r--r--reportdesign/source/ui/report/dlgedclip.cxx110
-rw-r--r--reportdesign/source/ui/report/dlgedfac.cxx114
-rw-r--r--reportdesign/source/ui/report/dlgedfunc.cxx1122
-rw-r--r--reportdesign/source/ui/report/makefile.mk72
-rw-r--r--reportdesign/source/ui/report/propbrw.cxx612
-rw-r--r--reportdesign/source/ui/report/report.src700
-rw-r--r--reportdesign/uiconfig/dbreport/menubar/menubar.xml422
-rw-r--r--reportdesign/uiconfig/dbreport/statusbar/statusbar.xml6
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/Formatting.xml23
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/alignmentbar.xml11
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/arrowshapes.xml34
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/basicshapes.xml29
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/calloutshapes.xml11
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/drawbar.xml10
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/flowchartshapes.xml36
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/reportcontrols.xml19
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/resizebar.xml9
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/sectionalignmentbar.xml9
-rwxr-xr-xreportdesign/uiconfig/dbreport/toolbar/sectionshrinkbar.xml7
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/starshapes.xml17
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/symbolshapes.xml24
-rw-r--r--reportdesign/uiconfig/dbreport/toolbar/toolbar.xml22
-rw-r--r--reportdesign/util/dll.pmk31
-rw-r--r--reportdesign/util/hidother.src171
-rw-r--r--reportdesign/util/makefile.mk232
-rwxr-xr-xrhino/README12
-rwxr-xr-xrhino/makefile.mk68
-rw-r--r--rhino/prj/build.lst3
-rw-r--r--rhino/prj/d.lst1
-rw-r--r--rhino/rhino1_5R5-find_swing.patch20
-rw-r--r--rhino/rhino1_5R5.patch1205
-rw-r--r--ridljar/com/makefile.mk64
-rw-r--r--ridljar/com/sun/star/lib/uno/typedesc/FieldDescription.java76
-rw-r--r--ridljar/com/sun/star/lib/uno/typedesc/MemberDescriptionHelper.java64
-rw-r--r--ridljar/com/sun/star/lib/uno/typedesc/MethodDescription.java111
-rw-r--r--ridljar/com/sun/star/lib/uno/typedesc/TypeDescription.java721
-rw-r--r--ridljar/com/sun/star/lib/uno/typeinfo/AttributeTypeInfo.java95
-rw-r--r--ridljar/com/sun/star/lib/uno/typeinfo/ConstantTypeInfo.java40
-rw-r--r--ridljar/com/sun/star/lib/uno/typeinfo/MemberTypeInfo.java105
-rw-r--r--ridljar/com/sun/star/lib/uno/typeinfo/MethodTypeInfo.java98
-rw-r--r--ridljar/com/sun/star/lib/uno/typeinfo/ParameterTypeInfo.java114
-rw-r--r--ridljar/com/sun/star/lib/uno/typeinfo/TypeInfo.java85
-rw-r--r--ridljar/com/sun/star/lib/util/DisposeListener.java43
-rw-r--r--ridljar/com/sun/star/lib/util/DisposeNotifier.java53
-rw-r--r--ridljar/com/sun/star/lib/util/WeakMap.java311
-rw-r--r--ridljar/com/sun/star/uno/Any.java140
-rw-r--r--ridljar/com/sun/star/uno/Enum.java61
-rw-r--r--ridljar/com/sun/star/uno/IBridge.java99
-rw-r--r--ridljar/com/sun/star/uno/IEnvironment.java152
-rw-r--r--ridljar/com/sun/star/uno/IFieldDescription.java55
-rw-r--r--ridljar/com/sun/star/uno/IMapping.java49
-rw-r--r--ridljar/com/sun/star/uno/IMemberDescription.java75
-rw-r--r--ridljar/com/sun/star/uno/IMethodDescription.java88
-rw-r--r--ridljar/com/sun/star/uno/IQueryInterface.java69
-rw-r--r--ridljar/com/sun/star/uno/ITypeDescription.java188
-rw-r--r--ridljar/com/sun/star/uno/Type.java652
-rw-r--r--ridljar/com/sun/star/uno/Union.java52
-rw-r--r--ridljar/com/sun/star/uno/UnoRuntime.java696
-rw-r--r--ridljar/javamaker/makefile.mk46
-rw-r--r--ridljar/prj/build.lst6
-rw-r--r--ridljar/prj/d.lst4
-rw-r--r--ridljar/source/unoloader/com/sun/star/lib/unoloader/UnoClassLoader.java214
-rw-r--r--ridljar/source/unoloader/com/sun/star/lib/unoloader/UnoLoader.java94
-rw-r--r--ridljar/source/unoloader/com/sun/star/lib/unoloader/makefile.mk60
-rw-r--r--ridljar/source/unoloader/com/sun/star/lib/unoloader/manifest1
-rw-r--r--ridljar/source/unoloader/delzip0
-rw-r--r--ridljar/source/unoloader/makefile.mk39
-rw-r--r--ridljar/test/com/sun/star/lib/uno/typedesc/TypeDescription_Test.java310
-rw-r--r--ridljar/test/com/sun/star/lib/uno/typedesc/makefile.mk35
-rw-r--r--ridljar/test/com/sun/star/lib/util/WeakMap_Test.java86
-rw-r--r--ridljar/test/com/sun/star/lib/util/makefile.mk36
-rw-r--r--ridljar/test/com/sun/star/uno/Any_Test.java58
-rw-r--r--ridljar/test/com/sun/star/uno/Type_Test.java111
-rw-r--r--ridljar/test/com/sun/star/uno/UnoRuntime_Test.java216
-rw-r--r--ridljar/test/com/sun/star/uno/makefile.mk38
-rw-r--r--ridljar/test/makefile.mk35
-rw-r--r--ridljar/util/delzip0
-rw-r--r--ridljar/util/makefile.mk52
-rw-r--r--rsc/doku/feinkonz.43/rsc.doc4096
-rw-r--r--rsc/doku/feinkonz.43/rscerror.doc2119
-rw-r--r--rsc/doku/feinkonz.43/rscinst.doc4138
-rw-r--r--rsc/doku/schriftw.16/change.doc1105
-rw-r--r--rsc/inc/pch/precompiled_rsc.cxx31
-rw-r--r--rsc/inc/pch/precompiled_rsc.hxx34
-rw-r--r--rsc/inc/rscall.h115
-rw-r--r--rsc/inc/rscarray.hxx139
-rw-r--r--rsc/inc/rscclass.hxx142
-rw-r--r--rsc/inc/rscclobj.hxx115
-rw-r--r--rsc/inc/rscconst.hxx113
-rw-r--r--rsc/inc/rsccont.hxx156
-rw-r--r--rsc/inc/rscdb.hxx363
-rw-r--r--rsc/inc/rscdef.hxx275
-rw-r--r--rsc/inc/rscerror.h165
-rw-r--r--rsc/inc/rscflag.hxx109
-rw-r--r--rsc/inc/rschash.hxx56
-rw-r--r--rsc/inc/rscinst.hxx247
-rw-r--r--rsc/inc/rsckey.hxx64
-rw-r--r--rsc/inc/rsclst.hxx68
-rw-r--r--rsc/inc/rscmgr.hxx83
-rw-r--r--rsc/inc/rscpar.hxx95
-rw-r--r--rsc/inc/rscrange.hxx212
-rw-r--r--rsc/inc/rscrsc.hxx135
-rw-r--r--rsc/inc/rscsfx.hxx65
-rw-r--r--rsc/inc/rscstr.hxx82
-rw-r--r--rsc/inc/rsctools.hxx223
-rw-r--r--rsc/inc/rsctop.hxx250
-rw-r--r--rsc/inc/rsctree.hxx121
-rw-r--r--rsc/inc/vclrsc.hxx353
-rw-r--r--rsc/prj/build.lst9
-rw-r--r--rsc/prj/d.lst9
-rw-r--r--rsc/source/misc/makefile.mk45
-rw-r--r--rsc/source/misc/rscdbl.cxx122
-rw-r--r--rsc/source/misc/rsclst.cxx54
-rw-r--r--rsc/source/parser/erscerr.cxx518
-rw-r--r--rsc/source/parser/makefile.mk67
-rw-r--r--rsc/source/parser/rscdb.cxx1118
-rw-r--r--rsc/source/parser/rscibas.cxx716
-rw-r--r--rsc/source/parser/rscicpx.cxx2392
-rw-r--r--rsc/source/parser/rscinit.cxx945
-rw-r--r--rsc/source/parser/rsckey.cxx216
-rw-r--r--rsc/source/parser/rsclex.cxx444
-rw-r--r--rsc/source/parser/rsclex.hxx131
-rw-r--r--rsc/source/parser/rscpar.cxx242
-rw-r--r--rsc/source/parser/rscyacc.cxx273
-rw-r--r--rsc/source/parser/rscyacc.y1118
-rw-r--r--rsc/source/prj/gui.cxx129
-rw-r--r--rsc/source/prj/makefile.mk79
-rw-r--r--rsc/source/prj/start.cxx486
-rw-r--r--rsc/source/res/makefile.mk61
-rw-r--r--rsc/source/res/rscall.cxx66
-rw-r--r--rsc/source/res/rscarray.cxx728
-rw-r--r--rsc/source/res/rscclass.cxx1264
-rw-r--r--rsc/source/res/rscclobj.cxx230
-rw-r--r--rsc/source/res/rscconst.cxx418
-rw-r--r--rsc/source/res/rsccont.cxx1182
-rw-r--r--rsc/source/res/rscflag.cxx492
-rw-r--r--rsc/source/res/rscmgr.cxx720
-rw-r--r--rsc/source/res/rscrange.cxx852
-rw-r--r--rsc/source/res/rscstr.cxx403
-rw-r--r--rsc/source/res/rsctop.cxx996
-rw-r--r--rsc/source/rsc/makefile.mk41
-rw-r--r--rsc/source/rsc/rsc.cxx1389
-rw-r--r--rsc/source/rscpp/cpp.h418
-rw-r--r--rsc/source/rscpp/cpp1.c619
-rw-r--r--rsc/source/rscpp/cpp2.c627
-rw-r--r--rsc/source/rscpp/cpp3.c604
-rw-r--r--rsc/source/rscpp/cpp4.c638
-rw-r--r--rsc/source/rscpp/cpp5.c931
-rw-r--r--rsc/source/rscpp/cpp6.c1146
-rw-r--r--rsc/source/rscpp/cppdef.h348
-rw-r--r--rsc/source/rscpp/cppmain.c47
-rw-r--r--rsc/source/rscpp/makefile.mk92
-rw-r--r--rsc/source/tools/makefile.mk45
-rw-r--r--rsc/source/tools/rscchar.cxx197
-rw-r--r--rsc/source/tools/rscdef.cxx1404
-rw-r--r--rsc/source/tools/rschash.cxx71
-rw-r--r--rsc/source/tools/rsctools.cxx495
-rw-r--r--rsc/source/tools/rsctree.cxx549
-rw-r--r--sal/cpprt/makefile.mk71
-rw-r--r--sal/cpprt/operators_new_delete.cxx254
-rw-r--r--sal/cppunittester/cppunittester.cxx70
-rw-r--r--sal/cppunittester/makefile.mk52
-rw-r--r--sal/inc/internal/once.h82
-rw-r--r--sal/inc/makefile.mk47
-rw-r--r--sal/inc/osl/conditn.h94
-rw-r--r--sal/inc/osl/conditn.hxx130
-rw-r--r--sal/inc/osl/diagnose.h169
-rw-r--r--sal/inc/osl/diagnose.hxx207
-rw-r--r--sal/inc/osl/doublecheckedlocking.h84
-rw-r--r--sal/inc/osl/endian.h244
-rw-r--r--sal/inc/osl/file.h1595
-rw-r--r--sal/inc/osl/file.hxx1955
-rw-r--r--sal/inc/osl/getglobalmutex.hxx53
-rw-r--r--sal/inc/osl/interlck.h59
-rw-r--r--sal/inc/osl/module.h214
-rw-r--r--sal/inc/osl/module.hxx161
-rw-r--r--sal/inc/osl/mutex.h80
-rw-r--r--sal/inc/osl/mutex.hxx280
-rw-r--r--sal/inc/osl/nlsupport.h62
-rw-r--r--sal/inc/osl/pipe.h104
-rw-r--r--sal/inc/osl/pipe.hxx215
-rw-r--r--sal/inc/osl/pipe_decl.hxx238
-rw-r--r--sal/inc/osl/process.h445
-rw-r--r--sal/inc/osl/profile.h142
-rw-r--r--sal/inc/osl/profile.hxx206
-rw-r--r--sal/inc/osl/security.h161
-rw-r--r--sal/inc/osl/security.hxx112
-rw-r--r--sal/inc/osl/security_decl.hxx119
-rw-r--r--sal/inc/osl/semaphor.h97
-rw-r--r--sal/inc/osl/semaphor.hxx129
-rw-r--r--sal/inc/osl/signal.h116
-rw-r--r--sal/inc/osl/socket.h893
-rw-r--r--sal/inc/osl/socket.hxx568
-rw-r--r--sal/inc/osl/socket_decl.hxx725
-rw-r--r--sal/inc/osl/thread.h193
-rw-r--r--sal/inc/osl/thread.hxx236
-rw-r--r--sal/inc/osl/time.h162
-rw-r--r--sal/inc/osl/util.h56
-rw-r--r--sal/inc/pch/precompiled_sal.cxx31
-rw-r--r--sal/inc/pch/precompiled_sal.hxx34
-rw-r--r--sal/inc/rtl/alloc.h268
-rw-r--r--sal/inc/rtl/allocator.hxx194
-rw-r--r--sal/inc/rtl/bootstrap.h236
-rw-r--r--sal/inc/rtl/bootstrap.hxx237
-rw-r--r--sal/inc/rtl/byteseq.h325
-rw-r--r--sal/inc/rtl/byteseq.hxx146
-rw-r--r--sal/inc/rtl/cipher.h321
-rw-r--r--sal/inc/rtl/crc.h68
-rw-r--r--sal/inc/rtl/digest.h641
-rw-r--r--sal/inc/rtl/instance.hxx475
-rw-r--r--sal/inc/rtl/locale.h142
-rw-r--r--sal/inc/rtl/locale.hxx268
-rw-r--r--sal/inc/rtl/logfile.h137
-rw-r--r--sal/inc/rtl/logfile.hxx207
-rw-r--r--sal/inc/rtl/malformeduriexception.hxx77
-rw-r--r--sal/inc/rtl/math.h477
-rw-r--r--sal/inc/rtl/math.hxx435
-rw-r--r--sal/inc/rtl/memory.h53
-rw-r--r--sal/inc/rtl/process.h85
-rw-r--r--sal/inc/rtl/random.h116
-rw-r--r--sal/inc/rtl/ref.hxx245
-rw-r--r--sal/inc/rtl/strbuf.h122
-rw-r--r--sal/inc/rtl/strbuf.hxx667
-rw-r--r--sal/inc/rtl/string.h1196
-rw-r--r--sal/inc/rtl/string.hxx942
-rw-r--r--sal/inc/rtl/tencinfo.h279
-rw-r--r--sal/inc/rtl/textcvt.h183
-rw-r--r--sal/inc/rtl/textenc.h281
-rw-r--r--sal/inc/rtl/tres.h109
-rw-r--r--sal/inc/rtl/tres.hxx111
-rw-r--r--sal/inc/rtl/unload.h318
-rw-r--r--sal/inc/rtl/uri.h357
-rw-r--r--sal/inc/rtl/uri.hxx157
-rw-r--r--sal/inc/rtl/ustrbuf.h168
-rw-r--r--sal/inc/rtl/ustrbuf.hxx775
-rw-r--r--sal/inc/rtl/ustring.h1663
-rw-r--r--sal/inc/rtl/ustring.hxx1541
-rw-r--r--sal/inc/rtl/uuid.h216
-rw-r--r--sal/inc/sal/alloca.h68
-rw-r--r--sal/inc/sal/config.h147
-rw-r--r--sal/inc/sal/macros.h58
-rw-r--r--sal/inc/sal/main.h148
-rw-r--r--sal/inc/sal/mathconf.h150
-rw-r--r--sal/inc/sal/types.h440
-rw-r--r--sal/inc/systools/win32/AutoSystoolInit.hxx65
-rw-r--r--sal/inc/systools/win32/StrConvert.h135
-rw-r--r--sal/inc/systools/win32/SyncObjects.hxx113
-rw-r--r--sal/inc/systools/win32/advapi9x.h212
-rw-r--r--sal/inc/systools/win32/comdlg9x.h83
-rw-r--r--sal/inc/systools/win32/comptr.hxx236
-rw-r--r--sal/inc/systools/win32/comtools.hxx196
-rw-r--r--sal/inc/systools/win32/kernel9x.h385
-rw-r--r--sal/inc/systools/win32/mpr9x.h75
-rw-r--r--sal/inc/systools/win32/shell9x.h104
-rw-r--r--sal/inc/systools/win32/snprintf.h67
-rw-r--r--sal/inc/systools/win32/user9x.h195
-rw-r--r--sal/inc/systools/win32/uwinapi.h119
-rw-r--r--sal/osl/all/debugbase.cxx163
-rw-r--r--sal/osl/all/filepath.c125
-rw-r--r--sal/osl/all/loadmodulerelative.cxx74
-rw-r--r--sal/osl/all/makefile.mk76
-rw-r--r--sal/osl/all/utility.cxx106
-rw-r--r--sal/osl/os2/conditn.c126
-rw-r--r--sal/osl/os2/debug.c2153
-rw-r--r--sal/osl/os2/diagnose.c181
-rw-r--r--sal/osl/os2/dllentry.c76
-rw-r--r--sal/osl/os2/except.c1061
-rw-r--r--sal/osl/os2/file.cxx2912
-rw-r--r--sal/osl/os2/file_error_transl.cxx255
-rw-r--r--sal/osl/os2/file_error_transl.h73
-rw-r--r--sal/osl/os2/file_path_helper.cxx380
-rw-r--r--sal/osl/os2/file_path_helper.h295
-rw-r--r--sal/osl/os2/file_path_helper.hxx297
-rw-r--r--sal/osl/os2/file_url.cxx999
-rw-r--r--sal/osl/os2/file_url.h183
-rw-r--r--sal/osl/os2/helpers/debug.h1771
-rw-r--r--sal/osl/os2/helpers/dosh.h52
-rw-r--r--sal/osl/os2/helpers/except.h257
-rw-r--r--sal/osl/os2/helpers/setup.h141
-rw-r--r--sal/osl/os2/interlck.c53
-rw-r--r--sal/osl/os2/makefile.mk117
-rw-r--r--sal/osl/os2/module.c283
-rw-r--r--sal/osl/os2/mutex.c170
-rw-r--r--sal/osl/os2/nlsupport.c447
-rw-r--r--sal/osl/os2/path_helper.cxx118
-rw-r--r--sal/osl/os2/path_helper.h73
-rw-r--r--sal/osl/os2/path_helper.hxx76
-rw-r--r--sal/osl/os2/pipe.cxx557
-rw-r--r--sal/osl/os2/pipeimpl.cxx758
-rw-r--r--sal/osl/os2/pipeimpl.h85
-rw-r--r--sal/osl/os2/process.c990
-rw-r--r--sal/osl/os2/process_impl.cxx461
-rw-r--r--sal/osl/os2/procimpl.h54
-rw-r--r--sal/osl/os2/profile.c1770
-rw-r--r--sal/osl/os2/salinit.cxx123
-rw-r--r--sal/osl/os2/secimpl.h52
-rw-r--r--sal/osl/os2/security.c315
-rw-r--r--sal/osl/os2/semaphor.c192
-rw-r--r--sal/osl/os2/signal.c251
-rw-r--r--sal/osl/os2/socket.c2851
-rw-r--r--sal/osl/os2/sockimpl.h82
-rw-r--r--sal/osl/os2/system.h516
-rw-r--r--sal/osl/os2/tempfile.c363
-rw-r--r--sal/osl/os2/thread.c774
-rw-r--r--sal/osl/os2/time.c272
-rw-r--r--sal/osl/os2/util.c39
-rw-r--r--sal/osl/os2/uunxapi.cxx89
-rw-r--r--sal/osl/os2/uunxapi.h89
-rw-r--r--sal/osl/os2/uunxapi.hxx109
-rw-r--r--sal/osl/unx/asm/interlck_sparc.s267
-rw-r--r--sal/osl/unx/asm/interlck_x86.s92
-rw-r--r--sal/osl/unx/backtrace.c373
-rw-r--r--sal/osl/unx/backtrace.h103
-rw-r--r--sal/osl/unx/conditn.c352
-rw-r--r--sal/osl/unx/diagnose.c334
-rw-r--r--sal/osl/unx/file.cxx1401
-rw-r--r--sal/osl/unx/file_error_transl.cxx260
-rw-r--r--sal/osl/unx/file_error_transl.h73
-rw-r--r--sal/osl/unx/file_impl.hxx57
-rw-r--r--sal/osl/unx/file_misc.cxx1056
-rw-r--r--sal/osl/unx/file_path_helper.cxx353
-rw-r--r--sal/osl/unx/file_path_helper.h250
-rw-r--r--sal/osl/unx/file_path_helper.hxx248
-rw-r--r--sal/osl/unx/file_stat.cxx495
-rw-r--r--sal/osl/unx/file_url.cxx991
-rw-r--r--sal/osl/unx/file_url.h72
-rw-r--r--sal/osl/unx/file_volume.cxx1192
-rw-r--r--sal/osl/unx/interlck.c173
-rw-r--r--sal/osl/unx/makefile.mk182
-rw-r--r--sal/osl/unx/module.c311
-rw-r--r--sal/osl/unx/mutex.c224
-rw-r--r--sal/osl/unx/nlsupport.c987
-rw-r--r--sal/osl/unx/osxlocale.cxx131
-rw-r--r--sal/osl/unx/pipe.c589
-rw-r--r--sal/osl/unx/process.c1539
-rw-r--r--sal/osl/unx/process_impl.cxx516
-rw-r--r--sal/osl/unx/procimpl.h52
-rw-r--r--sal/osl/unx/profile.c2225
-rw-r--r--sal/osl/unx/salinit.cxx46
-rw-r--r--sal/osl/unx/secimpl.h49
-rw-r--r--sal/osl/unx/security.c428
-rw-r--r--sal/osl/unx/semaphor.c316
-rw-r--r--sal/osl/unx/signal.c1097
-rw-r--r--sal/osl/unx/socket.c2887
-rw-r--r--sal/osl/unx/sockimpl.h80
-rw-r--r--sal/osl/unx/system.c603
-rw-r--r--sal/osl/unx/system.h536
-rw-r--r--sal/osl/unx/tempfile.c382
-rw-r--r--sal/osl/unx/thread.c1061
-rw-r--r--sal/osl/unx/time.c273
-rw-r--r--sal/osl/unx/util.c353
-rw-r--r--sal/osl/unx/uunxapi.cxx133
-rw-r--r--sal/osl/unx/uunxapi.h89
-rw-r--r--sal/osl/unx/uunxapi.hxx101
-rw-r--r--sal/osl/w32/MAKEFILE.MK118
-rw-r--r--sal/osl/w32/conditn.c143
-rw-r--r--sal/osl/w32/diagnose.c190
-rw-r--r--sal/osl/w32/dllentry.c375
-rw-r--r--sal/osl/w32/file.cxx1197
-rw-r--r--sal/osl/w32/file_dirvol.cxx1869
-rw-r--r--sal/osl/w32/file_error.c155
-rw-r--r--sal/osl/w32/file_error.h54
-rw-r--r--sal/osl/w32/file_url.cxx1144
-rw-r--r--sal/osl/w32/file_url.h100
-rw-r--r--sal/osl/w32/interlck.c145
-rw-r--r--sal/osl/w32/libutil.c57
-rw-r--r--sal/osl/w32/module.cxx484
-rw-r--r--sal/osl/w32/mutex.c209
-rw-r--r--sal/osl/w32/nlsupport.c233
-rw-r--r--sal/osl/w32/path_helper.cxx120
-rw-r--r--sal/osl/w32/path_helper.h73
-rw-r--r--sal/osl/w32/path_helper.hxx121
-rw-r--r--sal/osl/w32/pipe.c638
-rw-r--r--sal/osl/w32/pipeimpl.cxx788
-rw-r--r--sal/osl/w32/pipeimpl.h91
-rw-r--r--sal/osl/w32/process.cxx658
-rw-r--r--sal/osl/w32/procimpl.cxx609
-rw-r--r--sal/osl/w32/procimpl.h49
-rw-r--r--sal/osl/w32/profile.cxx2705
-rw-r--r--sal/osl/w32/salinit.cxx105
-rw-r--r--sal/osl/w32/secimpl.h56
-rw-r--r--sal/osl/w32/security.c1014
-rw-r--r--sal/osl/w32/semaphor.c113
-rw-r--r--sal/osl/w32/signal.cxx440
-rw-r--r--sal/osl/w32/socket.cxx2174
-rw-r--r--sal/osl/w32/sockimpl.h110
-rw-r--r--sal/osl/w32/system.h128
-rw-r--r--sal/osl/w32/tempfile.cxx274
-rw-r--r--sal/osl/w32/thread.c595
-rw-r--r--sal/osl/w32/time.c218
-rw-r--r--sal/osl/w32/util.c39
-rw-r--r--sal/prj/build.lst21
-rw-r--r--sal/prj/d.lst36
-rw-r--r--sal/qa/ByteSequence/ByteSequence.cxx197
-rw-r--r--sal/qa/ByteSequence/makefile.mk55
-rw-r--r--sal/qa/OStringBuffer/makefile.mk80
-rw-r--r--sal/qa/OStringBuffer/rtl_OStringBuffer.cxx18445
-rw-r--r--sal/qa/OStringBuffer/rtl_String_Const.h558
-rw-r--r--sal/qa/OStringBuffer/rtl_String_Utils.cxx617
-rw-r--r--sal/qa/OStringBuffer/rtl_String_Utils.hxx140
-rw-r--r--sal/qa/OStringBuffer/rtl_String_Utils_Const.h76
-rw-r--r--sal/qa/buildall.pl507
-rwxr-xr-xsal/qa/export.map34
-rwxr-xr-xsal/qa/helper/gcov/build_coverage23
-rw-r--r--sal/qa/helper/gcov/deprecated.txt213
-rwxr-xr-xsal/qa/helper/gcov/gcov_all15
-rwxr-xr-xsal/qa/helper/gcov/gcov_filter.pl427
-rw-r--r--sal/qa/helper/gcov/gcov_result.pl232
-rw-r--r--sal/qa/helper/gcov/gcov_resultcompare.pl151
-rw-r--r--sal/qa/helper/gcov/gcov_resultinterpreter.pl172
-rwxr-xr-xsal/qa/helper/gcov/gcov_run.sh64
-rw-r--r--sal/qa/helper/gcov/readme.txt13
-rwxr-xr-xsal/qa/helper/gcov/statistics20
-rw-r--r--sal/qa/inc/stringhelper.hxx19
-rw-r--r--sal/qa/inc/valueequal.hxx136
-rw-r--r--sal/qa/libs2test.txt86
-rw-r--r--sal/qa/makefile.mk62
-rw-r--r--sal/qa/osl/condition/makefile.mk60
-rw-r--r--sal/qa/osl/condition/osl_Condition.cxx387
-rw-r--r--sal/qa/osl/condition/osl_Condition_Const.h75
-rw-r--r--sal/qa/osl/file/makefile.mk85
-rw-r--r--sal/qa/osl/file/osl_File.cxx6449
-rw-r--r--sal/qa/osl/file/osl_File_Const.h245
-rw-r--r--sal/qa/osl/file/osl_old_test_file.cxx275
-rw-r--r--sal/qa/osl/file/test_cpy_wrt_file.cxx113
-rw-r--r--sal/qa/osl/module/export_dll.map34
-rw-r--r--sal/qa/osl/module/makefile.mk79
-rw-r--r--sal/qa/osl/module/osl_Module.cxx525
-rw-r--r--sal/qa/osl/module/osl_Module_Const.h69
-rw-r--r--sal/qa/osl/module/osl_Module_DLL.cxx45
-rwxr-xr-xsal/qa/osl/mutex/makefile.mk73
-rw-r--r--sal/qa/osl/mutex/osl_Mutex.cxx943
-rw-r--r--sal/qa/osl/mutex/osl_Mutex_Const.h59
-rw-r--r--sal/qa/osl/pipe/makefile.mk70
-rw-r--r--sal/qa/osl/pipe/osl_Pipe.cxx1056
-rwxr-xr-xsal/qa/osl/process/batch.bat2
-rw-r--r--sal/qa/osl/process/export.exp1
-rw-r--r--sal/qa/osl/process/makefile.mk110
-rw-r--r--sal/qa/osl/process/osl_Thread.cxx2338
-rw-r--r--sal/qa/osl/process/osl_Thread.xsce1
-rw-r--r--sal/qa/osl/process/osl_process.cxx687
-rw-r--r--sal/qa/osl/process/osl_process_child.cxx133
-rw-r--r--sal/qa/osl/profile/makefile.mk73
-rw-r--r--sal/qa/osl/profile/osl_old_testprofile.cxx102
-rwxr-xr-xsal/qa/osl/security/makefile.mk64
-rw-r--r--sal/qa/osl/security/osl_Security.cxx681
-rw-r--r--sal/qa/osl/security/osl_Security_Const.h75
-rwxr-xr-xsal/qa/osl/socket/export.exp1
-rwxr-xr-xsal/qa/osl/socket/makefile.mk223
-rw-r--r--sal/qa/osl/socket/osl_AcceptorSocket.cxx264
-rw-r--r--sal/qa/osl/socket/osl_ConnectorSocket.cxx267
-rw-r--r--sal/qa/osl/socket/osl_ConnectorSocket.xsce1
-rw-r--r--sal/qa/osl/socket/osl_DatagramSocket.cxx314
-rw-r--r--sal/qa/osl/socket/osl_Socket.cxx3674
-rw-r--r--sal/qa/osl/socket/osl_Socket.xsce5
-rw-r--r--sal/qa/osl/socket/osl_Socket2.cxx1466
-rw-r--r--sal/qa/osl/socket/osl_Socket2.xsce2
-rw-r--r--sal/qa/osl/socket/osl_SocketAddr.cxx883
-rw-r--r--sal/qa/osl/socket/osl_SocketAddr.xsce0
-rw-r--r--sal/qa/osl/socket/osl_SocketOld.xsce14
-rw-r--r--sal/qa/osl/socket/osl_Socket_Const.h199
-rw-r--r--sal/qa/osl/socket/osl_Socket_Const_orig.h203
-rw-r--r--sal/qa/osl/socket/osl_Socket_tests.cxx91
-rw-r--r--sal/qa/osl/socket/osl_Socket_tests.xsce1
-rw-r--r--sal/qa/osl/socket/osl_StreamSocket.cxx1504
-rw-r--r--sal/qa/osl/socket/osl_StreamSocket.xsce4
-rw-r--r--sal/qa/osl/socket/sockethelper.cxx404
-rw-r--r--sal/qa/osl/socket/sockethelper.hxx152
-rw-r--r--sal/qa/osl/thread/makefile.mk52
-rw-r--r--sal/qa/osl/thread/test_thread.cxx92
-rw-r--r--sal/qa/osl/thread/version.map34
-rwxr-xr-xsal/qa/rtl/alloc/jobfile.txt8
-rwxr-xr-xsal/qa/rtl/alloc/makefile.mk70
-rw-r--r--sal/qa/rtl/alloc/rtl_alloc.cxx181
-rw-r--r--sal/qa/rtl/bootstrap/bootstrap_process.cxx121
-rw-r--r--sal/qa/rtl/bootstrap/makefile.mk90
-rw-r--r--sal/qa/rtl/bootstrap/rtl_Bootstrap.cxx1040
-rw-r--r--sal/qa/rtl/bootstrap/rtl_Bootstrap.xsce7
-rw-r--r--sal/qa/rtl/cipher/makefile.mk70
-rw-r--r--sal/qa/rtl/cipher/rtl_cipher.cxx720
-rwxr-xr-xsal/qa/rtl/crc32/jobfile.txt5
-rwxr-xr-xsal/qa/rtl/crc32/makefile.mk70
-rw-r--r--sal/qa/rtl/crc32/rtl_crc32.cxx183
-rw-r--r--sal/qa/rtl/digest/makefile.mk66
-rw-r--r--sal/qa/rtl/digest/rtl_digest.cxx1454
-rw-r--r--sal/qa/rtl/doublelock/makefile.mk72
-rw-r--r--sal/qa/rtl/doublelock/rtl_doublelocking.cxx259
-rw-r--r--sal/qa/rtl/locale/makefile.mk71
-rw-r--r--sal/qa/rtl/locale/rtl_locale.cxx346
-rw-r--r--sal/qa/rtl/logfile/makefile.mk63
-rw-r--r--sal/qa/rtl/logfile/rtl_logfile.cxx254
-rw-r--r--sal/qa/rtl/math/export.exp1
-rw-r--r--sal/qa/rtl/math/makefile.mk97
-rw-r--r--sal/qa/rtl/math/rtl_math.cxx628
-rw-r--r--sal/qa/rtl/math/rtl_old_testint64.cxx124
-rw-r--r--sal/qa/rtl/math/test_rtl_math.cxx677
-rw-r--r--sal/qa/rtl/ostring/joblist.txt10
-rw-r--r--sal/qa/rtl/ostring/makefile.mk93
-rw-r--r--sal/qa/rtl/ostring/rtl_OString2.cxx570
-rw-r--r--sal/qa/rtl/ostring/rtl_str.cxx893
-rw-r--r--sal/qa/rtl/ostring/rtl_str.xsce26
-rw-r--r--sal/qa/rtl/ostring/rtl_string.cxx186
-rw-r--r--sal/qa/rtl/ostring/rtl_string.xsce1
-rw-r--r--sal/qa/rtl/oustring/joblist.txt10
-rw-r--r--sal/qa/rtl/oustring/makefile.mk82
-rw-r--r--sal/qa/rtl/oustring/rtl_OUString2.cxx1283
-rw-r--r--sal/qa/rtl/oustring/rtl_ustr.cxx1426
-rw-r--r--sal/qa/rtl/oustring/rtl_ustr.xsce33
-rw-r--r--sal/qa/rtl/oustringbuffer/makefile.mk70
-rw-r--r--sal/qa/rtl/oustringbuffer/rtl_OUStringBuffer2.cxx103
-rw-r--r--sal/qa/rtl/process/child_process.cxx74
-rw-r--r--sal/qa/rtl/process/child_process_id.cxx66
-rw-r--r--sal/qa/rtl/process/makefile.mk93
-rw-r--r--sal/qa/rtl/process/rtl_Process.cxx299
-rw-r--r--sal/qa/rtl/process/rtl_Process_Const.h29
-rw-r--r--sal/qa/rtl/random/makefile.add19
-rw-r--r--sal/qa/rtl/random/makefile.mk66
-rw-r--r--sal/qa/rtl/random/random.txt5
-rw-r--r--sal/qa/rtl/random/rtl_random.cxx414
-rw-r--r--sal/qa/rtl/strings/makefile.mk55
-rw-r--r--sal/qa/rtl/strings/test_oustring_compare.cxx70
-rw-r--r--sal/qa/rtl/strings/test_oustring_convert.cxx188
-rw-r--r--sal/qa/rtl/strings/test_oustring_endswith.cxx125
-rw-r--r--sal/qa/rtl/strings/test_oustring_noadditional.cxx36
-rw-r--r--sal/qa/rtl/strings/test_oustringbuffer_utf32.cxx133
-rw-r--r--sal/qa/rtl/textenc/makefile.mk75
-rw-r--r--sal/qa/rtl/textenc/rtl_tencinfo.cxx1904
-rw-r--r--sal/qa/rtl/textenc/rtl_textcvt.cxx2905
-rw-r--r--sal/qa/rtl/uri/makefile.mk75
-rw-r--r--sal/qa/rtl/uri/rtl_Uri.cxx300
-rw-r--r--sal/qa/rtl/uri/rtl_testuri.cxx548
-rw-r--r--sal/qa/rtl/uuid/makefile.mk68
-rw-r--r--sal/qa/rtl/uuid/rtl_Uuid.cxx230
-rw-r--r--sal/qa/rtl_strings/export.exp1
-rw-r--r--sal/qa/rtl_strings/makefile.mk153
-rw-r--r--sal/qa/rtl_strings/readme.txt20
-rw-r--r--sal/qa/rtl_strings/rtl_OString.cxx3606
-rw-r--r--sal/qa/rtl_strings/rtl_OUString.cxx3859
-rw-r--r--sal/qa/rtl_strings/rtl_OUStringBuffer.cxx1824
-rw-r--r--sal/qa/rtl_strings/rtl_String_Const.h887
-rw-r--r--sal/qa/rtl_strings/rtl_String_Utils.cxx595
-rw-r--r--sal/qa/rtl_strings/rtl_String_Utils.hxx139
-rw-r--r--sal/qa/rtl_strings/rtl_String_Utils_Const.h76
-rw-r--r--sal/qa/rtl_strings/rtl_old_testostring.cxx254
-rw-r--r--sal/qa/rtl_strings/rtl_old_testowstring.cxx408
-rw-r--r--sal/qa/rtl_strings/rtl_old_teststrbuf.cxx255
-rw-r--r--sal/qa/sal/makefile.mk50
-rw-r--r--sal/qa/sal/test_types.cxx84
-rw-r--r--sal/qa/sal/version.map34
-rw-r--r--sal/qa/systools/makefile.mk70
-rw-r--r--sal/qa/systools/test_comtools.cxx252
-rw-r--r--sal/qa/testHelperFunctions/makefile.mk63
-rw-r--r--sal/qa/testHelperFunctions/testHelperFunctions.cxx457
-rw-r--r--sal/qa/testHelperFunctions/testHelperFunctions2.cxx64
-rw-r--r--sal/rtl/source/alloc.c1652
-rw-r--r--sal/rtl/source/alloc_arena.c1384
-rw-r--r--sal/rtl/source/alloc_arena.h140
-rw-r--r--sal/rtl/source/alloc_cache.c1724
-rw-r--r--sal/rtl/source/alloc_cache.h185
-rw-r--r--sal/rtl/source/alloc_global.c361
-rw-r--r--sal/rtl/source/alloc_impl.h250
-rw-r--r--sal/rtl/source/bootstrap.cxx1062
-rw-r--r--sal/rtl/source/byteseq.c257
-rw-r--r--sal/rtl/source/cipher.c1365
-rw-r--r--sal/rtl/source/cmdargs.cxx112
-rw-r--r--sal/rtl/source/crc.c166
-rw-r--r--sal/rtl/source/debugprint.cxx67
-rw-r--r--sal/rtl/source/digest.c2121
-rw-r--r--sal/rtl/source/gen_makefile.cxx43
-rw-r--r--sal/rtl/source/hash.cxx243
-rw-r--r--sal/rtl/source/hash.h24
-rw-r--r--sal/rtl/source/locale.c365
-rw-r--r--sal/rtl/source/logfile.cxx253
-rw-r--r--sal/rtl/source/macro.hxx116
-rw-r--r--sal/rtl/source/makefile.mk181
-rw-r--r--sal/rtl/source/math.cxx1268
-rw-r--r--sal/rtl/source/memory.c64
-rw-r--r--sal/rtl/source/memory_fini.cxx57
-rw-r--r--sal/rtl/source/random.c340
-rw-r--r--sal/rtl/source/rtl_process.c51
-rw-r--r--sal/rtl/source/strbuf.c149
-rw-r--r--sal/rtl/source/strimp.c61
-rw-r--r--sal/rtl/source/strimp.h67
-rw-r--r--sal/rtl/source/string.c323
-rw-r--r--sal/rtl/source/strtmpl.c1570
-rw-r--r--sal/rtl/source/surrogates.h53
-rw-r--r--sal/rtl/source/tres.c688
-rw-r--r--sal/rtl/source/unload.cxx420
-rw-r--r--sal/rtl/source/uri.cxx803
-rw-r--r--sal/rtl/source/ustrbuf.c210
-rw-r--r--sal/rtl/source/ustring.c983
-rw-r--r--sal/rtl/source/uuid.cxx182
-rw-r--r--sal/systools/win32/kill/kill.cxx443
-rw-r--r--sal/systools/win32/kill/makefile.mk64
-rw-r--r--sal/systools/win32/onlineupdate/makefile.mk82
-rw-r--r--sal/systools/win32/onlineupdate/onlinecheck.cxx84
-rw-r--r--sal/systools/win32/onlineupdate/onlinecheck.dxp28
-rw-r--r--sal/systools/win32/uwinapi/CheckTokenMembership.cpp37
-rw-r--r--sal/systools/win32/uwinapi/CommandLineToArgvW.cpp174
-rw-r--r--sal/systools/win32/uwinapi/CopyFileExA.cpp169
-rw-r--r--sal/systools/win32/uwinapi/CopyFileExW.cpp42
-rw-r--r--sal/systools/win32/uwinapi/DeleteVolumeMountPointA.cpp35
-rw-r--r--sal/systools/win32/uwinapi/DeleteVolumeMountPointW.cpp35
-rw-r--r--sal/systools/win32/uwinapi/DllGetVersion.cpp76
-rw-r--r--sal/systools/win32/uwinapi/DllMain.cpp238
-rw-r--r--sal/systools/win32/uwinapi/DrawStateW.cpp77
-rw-r--r--sal/systools/win32/uwinapi/EnumProcesses.cpp43
-rw-r--r--sal/systools/win32/uwinapi/FindFirstVolumeA.cpp32
-rw-r--r--sal/systools/win32/uwinapi/FindFirstVolumeMountPointA.cpp54
-rw-r--r--sal/systools/win32/uwinapi/FindFirstVolumeMountPointW.cpp35
-rw-r--r--sal/systools/win32/uwinapi/FindFirstVolumeW.cpp32
-rw-r--r--sal/systools/win32/uwinapi/FindNextVolumeA.cpp32
-rw-r--r--sal/systools/win32/uwinapi/FindNextVolumeMountPointA.cpp32
-rw-r--r--sal/systools/win32/uwinapi/FindNextVolumeMountPointW.cpp32
-rw-r--r--sal/systools/win32/uwinapi/FindNextVolumeW.cpp32
-rw-r--r--sal/systools/win32/uwinapi/FindVolumeClose.cpp32
-rw-r--r--sal/systools/win32/uwinapi/FindVolumeMountPointClose.cpp32
-rw-r--r--sal/systools/win32/uwinapi/GetDiskFreeSpaceExA.cpp61
-rw-r--r--sal/systools/win32/uwinapi/GetDiskFreeSpaceExW.cpp43
-rw-r--r--sal/systools/win32/uwinapi/GetLogicalDriveStringsW.cpp43
-rw-r--r--sal/systools/win32/uwinapi/GetLongPathName.cpp115
-rw-r--r--sal/systools/win32/uwinapi/GetLongPathNameA.cpp33
-rw-r--r--sal/systools/win32/uwinapi/GetLongPathNameW.cpp66
-rw-r--r--sal/systools/win32/uwinapi/GetModuleFileNameExA.cpp55
-rw-r--r--sal/systools/win32/uwinapi/GetModuleFileNameExW.cpp20
-rw-r--r--sal/systools/win32/uwinapi/GetProcessId.cpp167
-rw-r--r--sal/systools/win32/uwinapi/GetUserDefaultUILanguage.cpp36
-rw-r--r--sal/systools/win32/uwinapi/GetUserDomainA.cpp48
-rw-r--r--sal/systools/win32/uwinapi/GetUserDomainW.cpp49
-rw-r--r--sal/systools/win32/uwinapi/GetUserDomain_NT.cpp33
-rw-r--r--sal/systools/win32/uwinapi/GetUserDomain_WINDOWS.cpp82
-rw-r--r--sal/systools/win32/uwinapi/GetVolumeNameForVolumeMountPointA.cpp32
-rw-r--r--sal/systools/win32/uwinapi/GetVolumeNameForVolumeMountPointW.cpp32
-rw-r--r--sal/systools/win32/uwinapi/GetVolumePathNameA.cpp32
-rw-r--r--sal/systools/win32/uwinapi/GetVolumePathNameW.cpp32
-rw-r--r--sal/systools/win32/uwinapi/MCIWndCreateW.cpp44
-rw-r--r--sal/systools/win32/uwinapi/MoveFileExA.cpp100
-rw-r--r--sal/systools/win32/uwinapi/MoveFileExW.cpp40
-rw-r--r--sal/systools/win32/uwinapi/PathAddBackslashW.cpp45
-rw-r--r--sal/systools/win32/uwinapi/PathCompactPathExW.cpp48
-rw-r--r--sal/systools/win32/uwinapi/PathFileExistsW.cpp43
-rw-r--r--sal/systools/win32/uwinapi/PathFindExtensionW.cpp55
-rw-r--r--sal/systools/win32/uwinapi/PathFindFileNameW.cpp54
-rw-r--r--sal/systools/win32/uwinapi/PathIsFileSpecW.cpp43
-rw-r--r--sal/systools/win32/uwinapi/PathIsUNCW.cpp43
-rw-r--r--sal/systools/win32/uwinapi/PathRemoveExtensionW.cpp44
-rw-r--r--sal/systools/win32/uwinapi/PathRemoveFileSpecW.cpp45
-rw-r--r--sal/systools/win32/uwinapi/PathSetDlgItemPathW.cpp45
-rw-r--r--sal/systools/win32/uwinapi/PathStripToRootW.cpp45
-rw-r--r--sal/systools/win32/uwinapi/ResolveThunk.cpp66
-rw-r--r--sal/systools/win32/uwinapi/ResolveUnicows.cpp513
-rw-r--r--sal/systools/win32/uwinapi/SHCreateItemFromParsingName.cpp35
-rw-r--r--sal/systools/win32/uwinapi/SHILCreateFromPathW.cpp35
-rw-r--r--sal/systools/win32/uwinapi/SetVolumeMountPointA.cpp32
-rw-r--r--sal/systools/win32/uwinapi/SetVolumeMountPointW.cpp32
-rw-r--r--sal/systools/win32/uwinapi/Uwinapi.def22
-rw-r--r--sal/systools/win32/uwinapi/Uwinapi.h134
-rw-r--r--sal/systools/win32/uwinapi/macros.h235
-rw-r--r--sal/systools/win32/uwinapi/makefile.mk167
-rw-r--r--sal/systools/win32/uwinapi/snprintf.c13
-rw-r--r--sal/systools/win32/uwinapi/sntprintf.c121
-rw-r--r--sal/systools/win32/uwinapi/snwprintf.c8
-rw-r--r--sal/systools/win32/uwinapi/toolhelp.cpp60
-rw-r--r--sal/systools/win32/uwinapi/unicows.dxp546
-rw-r--r--sal/systools/win32/uwinapi/unicows_mingw.dxp544
-rw-r--r--sal/systools/win32/uwinapi/uwinapi.dxp86
-rw-r--r--sal/systools/win32/uwinapi/uwinapi_mingw.dxp90
-rw-r--r--sal/systools/win32/uwinapi/win95sys.h350
-rw-r--r--sal/test/bootstrap65
-rwxr-xr-xsal/test/bootstrap.bat62
-rwxr-xr-xsal/test/bootstrap.pl260
-rw-r--r--sal/test/bootstraptest.ini11
-rw-r--r--sal/test/makefile.mk152
-rw-r--r--sal/test/test_salmain.cxx45
-rw-r--r--sal/test/test_salmainwithargs.cxx45
-rw-r--r--sal/test/testbootstrap.cxx137
-rw-r--r--sal/test/testbootstrap.ini4
-rw-r--r--sal/test/unloading/exports.dxp4
-rw-r--r--sal/test/unloading/makefile.mk126
-rw-r--r--sal/test/unloading/readme.txt14
-rw-r--r--sal/test/unloading/samplelib1.cxx272
-rw-r--r--sal/test/unloading/samplelib1.xml41
-rw-r--r--sal/test/unloading/samplelib2.cxx239
-rw-r--r--sal/test/unloading/unloadTest.cxx659
-rw-r--r--sal/textenc/context.c50
-rw-r--r--sal/textenc/context.h55
-rw-r--r--sal/textenc/convertadobe.tab327
-rw-r--r--sal/textenc/convertbig5hkscs.c496
-rw-r--r--sal/textenc/convertbig5hkscs.h84
-rw-r--r--sal/textenc/convertbig5hkscs.tab72
-rw-r--r--sal/textenc/converter.c167
-rw-r--r--sal/textenc/converter.h69
-rw-r--r--sal/textenc/converteuctw.c455
-rw-r--r--sal/textenc/converteuctw.h81
-rw-r--r--sal/textenc/converteuctw.tab69
-rw-r--r--sal/textenc/convertgb18030.c471
-rw-r--r--sal/textenc/convertgb18030.h95
-rw-r--r--sal/textenc/convertgb18030.tab69
-rw-r--r--sal/textenc/convertiscii.tab112
-rw-r--r--sal/textenc/convertiso2022cn.c865
-rw-r--r--sal/textenc/convertiso2022cn.h87
-rw-r--r--sal/textenc/convertiso2022cn.tab77
-rw-r--r--sal/textenc/convertiso2022jp.c572
-rw-r--r--sal/textenc/convertiso2022jp.h81
-rw-r--r--sal/textenc/convertiso2022jp.tab68
-rw-r--r--sal/textenc/convertiso2022kr.c530
-rw-r--r--sal/textenc/convertiso2022kr.h81
-rw-r--r--sal/textenc/convertiso2022kr.tab68
-rw-r--r--sal/textenc/convertsinglebytetobmpunicode.cxx214
-rw-r--r--sal/textenc/convertsinglebytetobmpunicode.hxx129
-rw-r--r--sal/textenc/generate/big5hkscs2001.pl806
-rw-r--r--sal/textenc/generate/big5hkscs2001.tab8824
-rw-r--r--sal/textenc/generate/cns116431992.pl856
-rw-r--r--sal/textenc/generate/cns116431992.tab22869
-rw-r--r--sal/textenc/generate/gb180302000.pl309
-rw-r--r--sal/textenc/generate/gb180302000.tab9038
-rw-r--r--sal/textenc/gettextencodingdata.h49
-rw-r--r--sal/textenc/makefile.mk87
-rw-r--r--sal/textenc/tcvtarb1.tab936
-rw-r--r--sal/textenc/tcvtbyte.c858
-rw-r--r--sal/textenc/tcvteas1.tab436
-rw-r--r--sal/textenc/tcvtest1.tab4584
-rw-r--r--sal/textenc/tcvtjp1.tab1556
-rw-r--r--sal/textenc/tcvtjp2.tab3964
-rw-r--r--sal/textenc/tcvtjp3.tab2914
-rw-r--r--sal/textenc/tcvtjp4.tab3585
-rw-r--r--sal/textenc/tcvtjp5.tab3350
-rw-r--r--sal/textenc/tcvtjp6.tab2660
-rw-r--r--sal/textenc/tcvtkr1.tab3323
-rw-r--r--sal/textenc/tcvtkr2.tab5415
-rw-r--r--sal/textenc/tcvtkr4.tab3503
-rw-r--r--sal/textenc/tcvtkr5.tab5415
-rw-r--r--sal/textenc/tcvtkr6.tab1238
-rw-r--r--sal/textenc/tcvtlat1.tab1775
-rw-r--r--sal/textenc/tcvtmb.c696
-rw-r--r--sal/textenc/tcvtscn1.tab3860
-rw-r--r--sal/textenc/tcvtscn2.tab4463
-rw-r--r--sal/textenc/tcvtscn3.tab1502
-rw-r--r--sal/textenc/tcvtscn4.tab3070
-rw-r--r--sal/textenc/tcvtscn5.tab3235
-rw-r--r--sal/textenc/tcvtscn6.tab2956
-rw-r--r--sal/textenc/tcvtsym1.tab47
-rw-r--r--sal/textenc/tcvttcn1.tab2894
-rw-r--r--sal/textenc/tcvttcn2.tab3715
-rw-r--r--sal/textenc/tcvttcn6.tab1733
-rw-r--r--sal/textenc/tcvtuni1.tab100
-rw-r--r--sal/textenc/tcvtutf7.c591
-rw-r--r--sal/textenc/tcvtutf8.c422
-rw-r--r--sal/textenc/tenchelp.c215
-rw-r--r--sal/textenc/tenchelp.h305
-rw-r--r--sal/textenc/tencinfo.c1002
-rw-r--r--sal/textenc/textcvt.c267
-rw-r--r--sal/textenc/textenc.cxx230
-rw-r--r--sal/textenc/unichars.c139
-rw-r--r--sal/textenc/unichars.h65
-rw-r--r--sal/typesconfig/makefile.mk61
-rw-r--r--sal/typesconfig/typesconfig.c493
-rw-r--r--sal/unosdk.mk47
-rw-r--r--sal/util/makefile.mk217
-rwxr-xr-xsal/util/sal.map620
-rw-r--r--sal/version.mk40
-rw-r--r--sal/workben/clipboardwben/testcopy/StdAfx.cpp11
-rw-r--r--sal/workben/clipboardwben/testcopy/StdAfx.h35
-rw-r--r--sal/workben/clipboardwben/testcopy/TestWin32.icobin0 -> 1590 bytes
-rw-r--r--sal/workben/clipboardwben/testcopy/XTDataObject.cxx470
-rw-r--r--sal/workben/clipboardwben/testcopy/XTDataObject.hxx135
-rw-r--r--sal/workben/clipboardwben/testcopy/cbcpytest.cxx404
-rw-r--r--sal/workben/clipboardwben/testcopy/cbcpytest.rc122
-rw-r--r--sal/workben/clipboardwben/testcopy/makefile.mk67
-rw-r--r--sal/workben/clipboardwben/testcopy/resource.h34
-rw-r--r--sal/workben/clipboardwben/testcopy/small.icobin0 -> 318 bytes
-rw-r--r--sal/workben/clipboardwben/testpaste/StdAfx.cpp11
-rw-r--r--sal/workben/clipboardwben/testpaste/StdAfx.h35
-rw-r--r--sal/workben/clipboardwben/testpaste/TestWin32.icobin0 -> 1590 bytes
-rw-r--r--sal/workben/clipboardwben/testpaste/cbptest.cxx431
-rw-r--r--sal/workben/clipboardwben/testpaste/cbptest.rc120
-rw-r--r--sal/workben/clipboardwben/testpaste/makefile.mk67
-rw-r--r--sal/workben/clipboardwben/testpaste/resource.h31
-rw-r--r--sal/workben/clipboardwben/testpaste/small.icobin0 -> 318 bytes
-rw-r--r--sal/workben/clipboardwben/testviewer/StdAfx.cpp11
-rw-r--r--sal/workben/clipboardwben/testviewer/StdAfx.h35
-rw-r--r--sal/workben/clipboardwben/testviewer/TestWin32.icobin0 -> 1590 bytes
-rw-r--r--sal/workben/clipboardwben/testviewer/cbvtest.cxx353
-rw-r--r--sal/workben/clipboardwben/testviewer/cbvtest.rc127
-rw-r--r--sal/workben/clipboardwben/testviewer/makefile.mk67
-rw-r--r--sal/workben/clipboardwben/testviewer/resource.h35
-rw-r--r--sal/workben/clipboardwben/testviewer/small.icobin0 -> 318 bytes
-rw-r--r--sal/workben/export.exp1
-rw-r--r--sal/workben/getlocaleinfotest.cxx52
-rw-r--r--sal/workben/makefile.mk387
-rw-r--r--sal/workben/saldyntest.c54
-rw-r--r--sal/workben/salstattest.c55
-rw-r--r--sal/workben/t_cipher.c400
-rw-r--r--sal/workben/t_digest.c380
-rw-r--r--sal/workben/t_ojp_exe.cxx57
-rw-r--r--sal/workben/t_osl_getVolInfo.cxx134
-rw-r--r--sal/workben/t_osl_joinProcess.cxx230
-rw-r--r--sal/workben/t_random.c67
-rw-r--r--sal/workben/t_readline.c56
-rw-r--r--sal/workben/test.cxx68
-rw-r--r--sal/workben/testfile.cxx2788
-rw-r--r--sal/workben/testpip2.cxx99
-rw-r--r--sal/workben/testpipe.cxx170
-rw-r--r--sal/workben/testproc.cxx79
-rw-r--r--sal/workben/tgetpwnam.cxx250
-rw-r--r--salhelper/inc/salhelper/condition.hxx127
-rw-r--r--salhelper/inc/salhelper/dynload.hxx208
-rw-r--r--salhelper/inc/salhelper/future.hxx123
-rw-r--r--salhelper/inc/salhelper/futurequeue.hxx111
-rw-r--r--salhelper/inc/salhelper/monitor.hxx291
-rw-r--r--salhelper/inc/salhelper/queue.hxx187
-rw-r--r--salhelper/inc/salhelper/refobj.hxx113
-rw-r--r--salhelper/inc/salhelper/simplereferenceobject.hxx145
-rw-r--r--salhelper/inc/salhelper/singletonref.hxx213
-rw-r--r--salhelper/inc/salhelper/timer.hxx238
-rw-r--r--salhelper/prj/build.lst3
-rw-r--r--salhelper/prj/d.lst22
-rw-r--r--salhelper/qa/makefile.mk52
-rw-r--r--salhelper/qa/test_api.cxx253
-rwxr-xr-xsalhelper/qa/version.map6
-rw-r--r--salhelper/source/condition.cxx145
-rw-r--r--salhelper/source/dynload.cxx112
-rw-r--r--salhelper/source/gcc3.map96
-rw-r--r--salhelper/source/gcc3os2.map73
-rw-r--r--salhelper/source/makefile.mk83
-rw-r--r--salhelper/source/msci.map50
-rw-r--r--salhelper/source/simplereferenceobject.cxx92
-rw-r--r--salhelper/source/sols.map76
-rw-r--r--salhelper/source/timer.cxx488
-rw-r--r--salhelper/test/Symbols/loader.cxx40
-rw-r--r--salhelper/test/Symbols/makefile.mk97
-rw-r--r--salhelper/test/Symbols/samplelib.cxx39
-rw-r--r--salhelper/test/Symbols/samplelib.hxx25
-rw-r--r--salhelper/test/dynamicloader/loader.cxx40
-rw-r--r--salhelper/test/dynamicloader/makefile.mk117
-rw-r--r--salhelper/test/dynamicloader/samplelib.cxx39
-rw-r--r--salhelper/test/dynamicloader/samplelib.hxx25
-rw-r--r--salhelper/test/rtti/exports.dxp8
-rw-r--r--salhelper/test/rtti/makefile.mk107
-rw-r--r--salhelper/test/rtti/rttitest.cxx32
-rw-r--r--salhelper/test/rtti/samplelibrtti.cxx42
-rw-r--r--salhelper/test/rtti/samplelibrtti.hxx31
-rw-r--r--salhelper/test/rtti/sols.map34
-rw-r--r--salhelper/version.mk44
-rw-r--r--sane/inc/sane.h213
-rw-r--r--sane/prj/build.lst3
-rw-r--r--sane/prj/d.lst3
-rw-r--r--sax/inc/sax/dllapi.h42
-rw-r--r--sax/inc/sax/fastattribs.hxx94
-rw-r--r--sax/inc/sax/fshelper.hxx121
-rw-r--r--sax/inc/sax/parser/saxparser.hxx151
-rw-r--r--sax/inc/sax/tools/attributemap.hxx73
-rw-r--r--sax/inc/sax/tools/converter.hxx211
-rw-r--r--sax/inc/sax/tools/saxobject.hxx53
-rw-r--r--sax/inc/sax/tools/tokenmap.hxx68
-rw-r--r--sax/inc/xml2utf.hxx150
-rw-r--r--sax/prj/build.lst6
-rw-r--r--sax/prj/d.lst13
-rw-r--r--sax/qa/cppunit/makefile.mk78
-rw-r--r--sax/qa/cppunit/test_converter.cxx248
-rw-r--r--sax/qa/cppunit/version.map34
-rw-r--r--sax/source/expatwrap/attrlistimpl.cxx171
-rw-r--r--sax/source/expatwrap/attrlistimpl.hxx86
-rw-r--r--sax/source/expatwrap/factory.hxx36
-rw-r--r--sax/source/expatwrap/makefile.mk76
-rw-r--r--sax/source/expatwrap/sax_expat.cxx1109
-rw-r--r--sax/source/expatwrap/saxwriter.cxx1456
-rw-r--r--sax/source/expatwrap/xml2utf.cxx573
-rw-r--r--sax/source/fastparser/facreg.cxx109
-rw-r--r--sax/source/fastparser/fastparser.cxx953
-rw-r--r--sax/source/fastparser/fastparser.hxx167
-rw-r--r--sax/source/fastparser/makefile.mk74
-rw-r--r--sax/source/tools/converter.cxx1902
-rw-r--r--sax/source/tools/fastattribs.cxx171
-rw-r--r--sax/source/tools/fastserializer.cxx450
-rw-r--r--sax/source/tools/fastserializer.hxx171
-rw-r--r--sax/source/tools/fshelper.cxx204
-rw-r--r--sax/source/tools/makefile.mk67
-rw-r--r--sax/test/makefile.mk62
-rw-r--r--sax/test/sax/exports.dxp3
-rw-r--r--sax/test/sax/factory.hxx91
-rw-r--r--sax/test/sax/makefile.mk61
-rw-r--r--sax/test/sax/testsax.cxx872
-rw-r--r--sax/test/sax/testwriter.cxx701
-rw-r--r--sax/test/saxdemo.cxx653
-rw-r--r--sax/test/testcomponent.cxx232
-rw-r--r--sax/util/makefile.mk67
-rw-r--r--sax/util/makefile.pmk30
-rw-r--r--saxon/makefile.mk69
-rw-r--r--saxon/prj/build.lst2
-rw-r--r--saxon/prj/d.lst1
-rw-r--r--saxon/saxon-9.0.0.7-bj.patch1031
-rw-r--r--sc/addin/datefunc/dfa.cl729
-rw-r--r--sc/addin/datefunc/dfa.src178
-rw-r--r--sc/addin/datefunc/makefile.mk145
-rw-r--r--sc/addin/inc/addin.h150
-rw-r--r--sc/addin/inc/dfa.hrc61
-rw-r--r--sc/addin/inc/rot13.hrc35
-rw-r--r--sc/addin/makefile.mk45
-rw-r--r--sc/addin/rot13/exports.map11
-rw-r--r--sc/addin/rot13/makefile.mk88
-rw-r--r--sc/addin/rot13/rot13.cl158
-rw-r--r--sc/addin/rot13/rot13.src58
-rw-r--r--sc/addin/util/cl2c.pl238
-rw-r--r--sc/addin/util/makefile.mk47
-rw-r--r--sc/inc/AccessibleFilterMenu.hxx194
-rw-r--r--sc/inc/AccessibleFilterMenuItem.hxx124
-rw-r--r--sc/inc/AccessibleFilterTopWindow.hxx100
-rw-r--r--sc/inc/AccessibleGlobal.hxx72
-rw-r--r--sc/inc/ViewSettingsSequenceDefines.hxx112
-rw-r--r--sc/inc/addincfg.hxx57
-rw-r--r--sc/inc/addincol.hxx246
-rw-r--r--sc/inc/address.hxx830
-rw-r--r--sc/inc/addruno.hxx112
-rw-r--r--sc/inc/afmtuno.hxx312
-rw-r--r--sc/inc/appluno.hxx213
-rw-r--r--sc/inc/appoptio.hxx156
-rw-r--r--sc/inc/arealink.hxx95
-rw-r--r--sc/inc/attarray.hxx246
-rw-r--r--sc/inc/attrib.hxx400
-rw-r--r--sc/inc/autoform.hxx286
-rw-r--r--sc/inc/autonamecache.hxx60
-rw-r--r--sc/inc/bigrange.hxx276
-rw-r--r--sc/inc/brdcst.hxx73
-rw-r--r--sc/inc/callform.hxx127
-rw-r--r--sc/inc/cell.hxx562
-rw-r--r--sc/inc/cellform.hxx67
-rw-r--r--sc/inc/cellsuno.hxx1571
-rw-r--r--sc/inc/cfgids.hxx43
-rw-r--r--sc/inc/chart2uno.hxx698
-rw-r--r--sc/inc/chartarr.hxx129
-rw-r--r--sc/inc/charthelper.hxx57
-rw-r--r--sc/inc/chartlis.hxx220
-rw-r--r--sc/inc/chartlock.hxx89
-rw-r--r--sc/inc/chartpos.hxx170
-rw-r--r--sc/inc/chartuno.hxx206
-rw-r--r--sc/inc/chgtrack.hxx1372
-rw-r--r--sc/inc/chgviset.hxx151
-rw-r--r--sc/inc/clipparam.hxx91
-rw-r--r--sc/inc/collect.hxx204
-rw-r--r--sc/inc/column.hxx453
-rw-r--r--sc/inc/compiler.hxx540
-rw-r--r--sc/inc/compressedarray.hxx672
-rw-r--r--sc/inc/conditio.hxx303
-rw-r--r--sc/inc/confuno.hxx109
-rw-r--r--sc/inc/consoli.hxx136
-rw-r--r--sc/inc/convuno.hxx220
-rw-r--r--sc/inc/cursuno.hxx112
-rw-r--r--sc/inc/dapiuno.hxx993
-rw-r--r--sc/inc/datauno.hxx667
-rw-r--r--sc/inc/dbcolect.hxx246
-rw-r--r--sc/inc/dbdocutl.hxx64
-rw-r--r--sc/inc/dbtoken.hxx56
-rw-r--r--sc/inc/defltuno.hxx132
-rw-r--r--sc/inc/detdata.hxx109
-rw-r--r--sc/inc/detfunc.hxx176
-rw-r--r--sc/inc/dispuno.hxx153
-rw-r--r--sc/inc/dociter.hxx572
-rw-r--r--sc/inc/docoptio.hxx244
-rw-r--r--sc/inc/docparam.hxx50
-rw-r--r--sc/inc/docpool.hxx86
-rw-r--r--sc/inc/document.hxx1900
-rw-r--r--sc/inc/docuno.hxx861
-rw-r--r--sc/inc/dpcachetable.hxx252
-rw-r--r--sc/inc/dpdimsave.hxx204
-rw-r--r--sc/inc/dpglobal.hxx212
-rw-r--r--sc/inc/dpgroup.hxx267
-rw-r--r--sc/inc/dpobject.hxx302
-rw-r--r--sc/inc/dpoutput.hxx176
-rw-r--r--sc/inc/dpoutputgeometry.hxx80
-rw-r--r--sc/inc/dpsave.hxx288
-rw-r--r--sc/inc/dpsdbtab.hxx99
-rw-r--r--sc/inc/dpshttab.hxx112
-rw-r--r--sc/inc/dptabdat.hxx213
-rw-r--r--sc/inc/dptablecache.hxx123
-rw-r--r--sc/inc/dptabres.hxx740
-rw-r--r--sc/inc/dptabsrc.hxx874
-rw-r--r--sc/inc/drawattr.hxx67
-rw-r--r--sc/inc/drawpage.hxx52
-rw-r--r--sc/inc/drdefuno.hxx54
-rw-r--r--sc/inc/drwlayer.hxx232
-rw-r--r--sc/inc/editsrc.hxx195
-rw-r--r--sc/inc/editutil.hxx266
-rw-r--r--sc/inc/eventuno.hxx93
-rw-r--r--sc/inc/externalrefmgr.hxx801
-rw-r--r--sc/inc/fielduno.hxx456
-rw-r--r--sc/inc/fillinfo.hxx155
-rw-r--r--sc/inc/filter.hxx147
-rw-r--r--sc/inc/filtopt.hxx64
-rw-r--r--sc/inc/filtuno.hxx113
-rw-r--r--sc/inc/fmtuno.hxx334
-rw-r--r--sc/inc/forbiuno.hxx57
-rw-r--r--sc/inc/formulaparserpool.hxx69
-rw-r--r--sc/inc/formularesult.hxx618
-rw-r--r--sc/inc/funcdesc.hxx183
-rw-r--r--sc/inc/funcuno.hxx150
-rw-r--r--sc/inc/global.hxx896
-rw-r--r--sc/inc/globstr.hrc602
-rw-r--r--sc/inc/hints.hxx187
-rw-r--r--sc/inc/inputopt.hxx107
-rw-r--r--sc/inc/linkuno.hxx636
-rw-r--r--sc/inc/listenercalls.hxx81
-rw-r--r--sc/inc/lookupcache.hxx260
-rw-r--r--sc/inc/macromgr.hxx72
-rw-r--r--sc/inc/makefile.mk48
-rw-r--r--sc/inc/markarr.hxx88
-rw-r--r--sc/inc/markdata.hxx123
-rw-r--r--sc/inc/miscuno.hxx206
-rw-r--r--sc/inc/mutexhlp.hxx48
-rw-r--r--sc/inc/nameuno.hxx403
-rw-r--r--sc/inc/navicfg.hxx60
-rw-r--r--sc/inc/notesuno.hxx323
-rw-r--r--sc/inc/olinetab.hxx181
-rw-r--r--sc/inc/optuno.hxx95
-rw-r--r--sc/inc/optutil.hxx82
-rw-r--r--sc/inc/pagepar.hxx88
-rw-r--r--sc/inc/pageuno.hxx58
-rw-r--r--sc/inc/paramisc.hxx79
-rw-r--r--sc/inc/patattr.hxx183
-rw-r--r--sc/inc/pch/precompiled_sc.cxx31
-rw-r--r--sc/inc/pch/precompiled_sc.hxx244
-rw-r--r--sc/inc/pivot.hxx211
-rw-r--r--sc/inc/postit.hxx266
-rw-r--r--sc/inc/printopt.hxx101
-rw-r--r--sc/inc/prnsave.hxx83
-rw-r--r--sc/inc/progress.hxx161
-rw-r--r--sc/inc/queryparam.hxx147
-rw-r--r--sc/inc/rangelst.hxx120
-rw-r--r--sc/inc/rangenam.hxx223
-rw-r--r--sc/inc/rangeseq.hxx116
-rw-r--r--sc/inc/rangeutl.hxx328
-rw-r--r--sc/inc/rechead.hxx172
-rw-r--r--sc/inc/recursionhelper.hxx162
-rw-r--r--sc/inc/refdata.hxx216
-rw-r--r--sc/inc/reffind.hxx70
-rw-r--r--sc/inc/refreshtimer.hxx160
-rw-r--r--sc/inc/reftokenhelper.hxx86
-rw-r--r--sc/inc/sc.hrc1685
-rw-r--r--sc/inc/scabstdlg.hxx515
-rw-r--r--sc/inc/scdll.hxx80
-rw-r--r--sc/inc/scdllapi.h16
-rw-r--r--sc/inc/scerrors.hxx78
-rw-r--r--sc/inc/scextopt.hxx134
-rw-r--r--sc/inc/scfuncs.hrc332
-rw-r--r--sc/inc/scitems.hxx197
-rw-r--r--sc/inc/scmatrix.hxx440
-rw-r--r--sc/inc/scmod.hxx298
-rw-r--r--sc/inc/scresid.hxx47
-rw-r--r--sc/inc/scwarngs.hxx38
-rw-r--r--sc/inc/segmenttree.hxx175
-rw-r--r--sc/inc/servuno.hxx119
-rw-r--r--sc/inc/shapeuno.hxx246
-rw-r--r--sc/inc/sheetdata.hxx187
-rw-r--r--sc/inc/sheetevents.hxx69
-rw-r--r--sc/inc/shellids.hxx57
-rw-r--r--sc/inc/simplerangelist.hxx85
-rw-r--r--sc/inc/sortparam.hxx85
-rw-r--r--sc/inc/srchuno.hxx131
-rw-r--r--sc/inc/stlpool.hxx86
-rw-r--r--sc/inc/stlsheet.hxx93
-rw-r--r--sc/inc/stringutil.hxx96
-rw-r--r--sc/inc/strload.hxx53
-rw-r--r--sc/inc/styleuno.hxx379
-rw-r--r--sc/inc/subtotal.hxx59
-rw-r--r--sc/inc/tabbgcolor.hxx57
-rw-r--r--sc/inc/table.hxx953
-rw-r--r--sc/inc/tablink.hxx124
-rw-r--r--sc/inc/tabopparams.hxx106
-rw-r--r--sc/inc/tabprotection.hxx190
-rw-r--r--sc/inc/targuno.hxx208
-rw-r--r--sc/inc/textuno.hxx420
-rw-r--r--sc/inc/token.hxx510
-rw-r--r--sc/inc/tokenarray.hxx99
-rw-r--r--sc/inc/tokenuno.hxx160
-rw-r--r--sc/inc/unitconv.hxx75
-rw-r--r--sc/inc/unonames.hxx657
-rw-r--r--sc/inc/unoreflist.hxx86
-rw-r--r--sc/inc/unowids.hxx98
-rw-r--r--sc/inc/userdat.hxx116
-rw-r--r--sc/inc/userlist.hxx93
-rw-r--r--sc/inc/validat.hxx215
-rw-r--r--sc/inc/viewopti.hxx179
-rw-r--r--sc/inc/viewuno.hxx406
-rw-r--r--sc/inc/waitoff.hxx49
-rw-r--r--sc/inc/warnpassword.hxx50
-rw-r--r--sc/inc/xmlwrap.hxx85
-rw-r--r--sc/inc/zforauto.hxx74
-rwxr-xr-xsc/prj/build.lst51
-rw-r--r--sc/prj/d.lst34
-rwxr-xr-xsc/qa/complex/calcPreview/ViewForwarder.java1057
-rwxr-xr-xsc/qa/complex/calcPreview/makefile.mk93
-rwxr-xr-xsc/qa/complex/calcPreview/test_documents/calcshapes.sxcbin0 -> 13030 bytes
-rwxr-xr-xsc/qa/complex/cellRanges/CheckXCellRangesQuery.java229
-rwxr-xr-xsc/qa/complex/cellRanges/makefile.mk77
-rw-r--r--sc/qa/complex/dataPilot/CheckDataPilot.java329
-rw-r--r--sc/qa/complex/dataPilot/interfaceTests/beans/_XPropertySet.java631
-rw-r--r--sc/qa/complex/dataPilot/interfaceTests/beans/makefile.mk46
-rw-r--r--sc/qa/complex/dataPilot/interfaceTests/container/_XNamed.java147
-rw-r--r--sc/qa/complex/dataPilot/interfaceTests/container/makefile.mk46
-rw-r--r--sc/qa/complex/dataPilot/interfaceTests/sheet/_XDataPilotDescriptor.java449
-rw-r--r--sc/qa/complex/dataPilot/interfaceTests/sheet/_XDataPilotTable.java133
-rw-r--r--sc/qa/complex/dataPilot/interfaceTests/sheet/makefile.mk46
-rw-r--r--sc/qa/complex/dataPilot/makefile.mk58
-rw-r--r--sc/qa/complex/sc/CalcRTL.java567
-rw-r--r--sc/qa/complex/sc/makefile.mk57
-rw-r--r--sc/qa/unit/export.map7
-rw-r--r--sc/qa/unit/makefile.mk137
-rw-r--r--sc/qa/unit/ucalc.cxx111
-rw-r--r--sc/qa/unoapi/Test.java51
-rw-r--r--sc/qa/unoapi/knownissues.xcl199
-rw-r--r--sc/qa/unoapi/makefile.mk48
-rw-r--r--sc/qa/unoapi/sc.sce125
-rw-r--r--sc/qa/unoapi/testdocuments/10test.csv19
-rw-r--r--sc/qa/unoapi/testdocuments/ScAnnotationShapeObj.sxcbin0 -> 6542 bytes
-rw-r--r--sc/qa/unoapi/testdocuments/ScDDELinksObj.sdcbin0 -> 17408 bytes
-rw-r--r--sc/qa/unoapi/testdocuments/ScSheetLinksObj.sdcbin0 -> 16896 bytes
-rw-r--r--sc/qa/unoapi/testdocuments/calcshapes.sxcbin0 -> 13030 bytes
-rw-r--r--sc/qa/unoapi/testdocuments/crazy-blue.jpgbin0 -> 4451 bytes
-rw-r--r--sc/qa/unoapi/testdocuments/space-metal.jpgbin0 -> 4313 bytes
-rw-r--r--sc/sdi/app.sdi93
-rw-r--r--sc/sdi/auditsh.sdi41
-rw-r--r--sc/sdi/cellsh.sdi427
-rw-r--r--sc/sdi/chartsh.sdi31
-rw-r--r--sc/sdi/docsh.sdi124
-rw-r--r--sc/sdi/drawsh.sdi239
-rw-r--r--sc/sdi/drformsh.sdi31
-rw-r--r--sc/sdi/drtxtob.sdi148
-rw-r--r--sc/sdi/editsh.sdi109
-rw-r--r--sc/sdi/formatsh.sdi149
-rw-r--r--sc/sdi/graphsh.sdi152
-rw-r--r--sc/sdi/makefile.mk75
-rw-r--r--sc/sdi/mediash.sdi41
-rw-r--r--sc/sdi/oleobjsh.sdi31
-rw-r--r--sc/sdi/pgbrksh.sdi31
-rw-r--r--sc/sdi/pivotsh.sdi39
-rw-r--r--sc/sdi/prevwsh.sdi169
-rw-r--r--sc/sdi/scalc.sdi7980
-rw-r--r--sc/sdi/scslots.hrc33
-rw-r--r--sc/sdi/scslots.sdi78
-rw-r--r--sc/sdi/tabpopsh.sdi31
-rw-r--r--sc/sdi/tabvwsh.sdi286
-rw-r--r--sc/source/core/data/attarray.cxx2459
-rw-r--r--sc/source/core/data/attrib.cxx1235
-rw-r--r--sc/source/core/data/autonamecache.cxx111
-rw-r--r--sc/source/core/data/bcaslot.cxx940
-rw-r--r--sc/source/core/data/cell.cxx2108
-rw-r--r--sc/source/core/data/cell2.cxx1725
-rw-r--r--sc/source/core/data/clipparam.cxx203
-rw-r--r--sc/source/core/data/column.cxx2180
-rw-r--r--sc/source/core/data/column2.cxx1792
-rw-r--r--sc/source/core/data/column3.cxx2023
-rw-r--r--sc/source/core/data/compressedarray.cxx909
-rw-r--r--sc/source/core/data/conditio.cxx1606
-rw-r--r--sc/source/core/data/dbdocutl.cxx209
-rw-r--r--sc/source/core/data/dociter.cxx2222
-rw-r--r--sc/source/core/data/docparam.cxx42
-rw-r--r--sc/source/core/data/docpool.cxx1069
-rw-r--r--sc/source/core/data/documen2.cxx1283
-rw-r--r--sc/source/core/data/documen3.cxx2164
-rw-r--r--sc/source/core/data/documen4.cxx1205
-rw-r--r--sc/source/core/data/documen5.cxx787
-rw-r--r--sc/source/core/data/documen6.cxx186
-rw-r--r--sc/source/core/data/documen7.cxx536
-rw-r--r--sc/source/core/data/documen8.cxx1637
-rw-r--r--sc/source/core/data/documen9.cxx779
-rw-r--r--sc/source/core/data/document.cxx5436
-rw-r--r--sc/source/core/data/dpcachetable.cxx471
-rw-r--r--sc/source/core/data/dpdimsave.cxx586
-rw-r--r--sc/source/core/data/dpglobal.cxx152
-rw-r--r--sc/source/core/data/dpgroup.cxx1591
-rw-r--r--sc/source/core/data/dpobject.cxx2645
-rw-r--r--sc/source/core/data/dpoutput.cxx2063
-rw-r--r--sc/source/core/data/dpoutputgeometry.cxx217
-rw-r--r--sc/source/core/data/dpsave.cxx1478
-rw-r--r--sc/source/core/data/dpsdbtab.cxx314
-rw-r--r--sc/source/core/data/dpshttab.cxx317
-rw-r--r--sc/source/core/data/dptabdat.cxx332
-rw-r--r--sc/source/core/data/dptablecache.cxx1138
-rw-r--r--sc/source/core/data/dptabres.cxx4112
-rw-r--r--sc/source/core/data/dptabsrc.cxx2911
-rw-r--r--sc/source/core/data/drawpage.cxx67
-rw-r--r--sc/source/core/data/drwlayer.cxx2084
-rw-r--r--sc/source/core/data/fillinfo.cxx1081
-rw-r--r--sc/source/core/data/global.cxx1994
-rw-r--r--sc/source/core/data/global2.cxx896
-rw-r--r--sc/source/core/data/globalx.cxx174
-rw-r--r--sc/source/core/data/makefile.mk179
-rw-r--r--sc/source/core/data/markarr.cxx407
-rw-r--r--sc/source/core/data/markdata.cxx610
-rw-r--r--sc/source/core/data/olinetab.cxx808
-rw-r--r--sc/source/core/data/pagepar.cxx125
-rw-r--r--sc/source/core/data/patattr.cxx1340
-rw-r--r--sc/source/core/data/pivot2.cxx122
-rw-r--r--sc/source/core/data/poolhelp.cxx130
-rw-r--r--sc/source/core/data/postit.cxx923
-rw-r--r--sc/source/core/data/scdpoutputimpl.cxx190
-rw-r--r--sc/source/core/data/scdpoutputimpl.hxx82
-rw-r--r--sc/source/core/data/segmenttree.cxx584
-rw-r--r--sc/source/core/data/sheetevents.cxx174
-rw-r--r--sc/source/core/data/sortparam.cxx271
-rw-r--r--sc/source/core/data/stlpool.cxx529
-rw-r--r--sc/source/core/data/stlsheet.cxx348
-rw-r--r--sc/source/core/data/tabbgcolor.cxx65
-rw-r--r--sc/source/core/data/table1.cxx1819
-rw-r--r--sc/source/core/data/table2.cxx3207
-rw-r--r--sc/source/core/data/table3.cxx2113
-rw-r--r--sc/source/core/data/table4.cxx1982
-rw-r--r--sc/source/core/data/table5.cxx1207
-rw-r--r--sc/source/core/data/table6.cxx1047
-rw-r--r--sc/source/core/data/tabprotection.cxx526
-rw-r--r--sc/source/core/data/userdat.cxx129
-rw-r--r--sc/source/core/data/validat.cxx988
-rw-r--r--sc/source/core/inc/addinhelpid.hxx62
-rw-r--r--sc/source/core/inc/addinlis.hxx100
-rw-r--r--sc/source/core/inc/adiasync.hxx95
-rw-r--r--sc/source/core/inc/bcaslot.hxx309
-rw-r--r--sc/source/core/inc/cellkeytranslator.hxx94
-rw-r--r--sc/source/core/inc/core_pch.hxx245
-rw-r--r--sc/source/core/inc/ddelink.hxx101
-rw-r--r--sc/source/core/inc/doubleref.hxx196
-rw-r--r--sc/source/core/inc/interpre.hxx931
-rw-r--r--sc/source/core/inc/jumpmatrix.hxx224
-rw-r--r--sc/source/core/inc/makefile.mk26
-rw-r--r--sc/source/core/inc/parclass.hxx182
-rw-r--r--sc/source/core/inc/poolhelp.hxx76
-rw-r--r--sc/source/core/inc/refupdat.hxx102
-rw-r--r--sc/source/core/inc/scrdata.hxx51
-rw-r--r--sc/source/core/src/compiler.src79
-rw-r--r--sc/source/core/src/makefile.mk46
-rw-r--r--sc/source/core/tool/addincfg.cxx74
-rw-r--r--sc/source/core/tool/addincol.cxx1790
-rw-r--r--sc/source/core/tool/addinhelpid.cxx214
-rw-r--r--sc/source/core/tool/addinlis.cxx178
-rw-r--r--sc/source/core/tool/address.cxx2008
-rw-r--r--sc/source/core/tool/adiasync.cxx189
-rw-r--r--sc/source/core/tool/appoptio.cxx751
-rw-r--r--sc/source/core/tool/autoform.cxx1177
-rw-r--r--sc/source/core/tool/callform.cxx471
-rw-r--r--sc/source/core/tool/cellform.cxx218
-rw-r--r--sc/source/core/tool/cellkeytranslator.cxx235
-rw-r--r--sc/source/core/tool/cellkeywords.inl181
-rw-r--r--sc/source/core/tool/chartarr.cxx617
-rw-r--r--sc/source/core/tool/charthelper.cxx299
-rw-r--r--sc/source/core/tool/chartlis.cxx738
-rw-r--r--sc/source/core/tool/chartlock.cxx198
-rw-r--r--sc/source/core/tool/chartpos.cxx616
-rw-r--r--sc/source/core/tool/chgtrack.cxx4872
-rw-r--r--sc/source/core/tool/chgviset.cxx171
-rw-r--r--sc/source/core/tool/collect.cxx506
-rw-r--r--sc/source/core/tool/compiler.cxx5507
-rw-r--r--sc/source/core/tool/consoli.cxx862
-rw-r--r--sc/source/core/tool/dbcolect.cxx899
-rw-r--r--sc/source/core/tool/ddelink.cxx281
-rw-r--r--sc/source/core/tool/detdata.cxx120
-rw-r--r--sc/source/core/tool/detfunc.cxx1766
-rw-r--r--sc/source/core/tool/docoptio.cxx716
-rw-r--r--sc/source/core/tool/doubleref.cxx567
-rw-r--r--sc/source/core/tool/editutil.cxx782
-rw-r--r--sc/source/core/tool/filtopt.cxx122
-rw-r--r--sc/source/core/tool/formulaparserpool.cxx170
-rw-r--r--sc/source/core/tool/hints.cxx160
-rw-r--r--sc/source/core/tool/inputopt.cxx276
-rw-r--r--sc/source/core/tool/interpr1.cxx7646
-rw-r--r--sc/source/core/tool/interpr2.cxx3036
-rw-r--r--sc/source/core/tool/interpr3.cxx4231
-rw-r--r--sc/source/core/tool/interpr4.cxx4272
-rw-r--r--sc/source/core/tool/interpr5.cxx2821
-rw-r--r--sc/source/core/tool/interpr6.cxx200
-rw-r--r--sc/source/core/tool/interpr7.cxx38
-rw-r--r--sc/source/core/tool/lookupcache.cxx129
-rw-r--r--sc/source/core/tool/makefile.mk169
-rw-r--r--sc/source/core/tool/navicfg.cxx82
-rw-r--r--sc/source/core/tool/odffmap.cxx153
-rw-r--r--sc/source/core/tool/optutil.cxx81
-rw-r--r--sc/source/core/tool/parclass.cxx580
-rw-r--r--sc/source/core/tool/printopt.cxx210
-rw-r--r--sc/source/core/tool/prnsave.cxx137
-rw-r--r--sc/source/core/tool/progress.cxx200
-rw-r--r--sc/source/core/tool/queryparam.cxx381
-rw-r--r--sc/source/core/tool/rangelst.cxx708
-rw-r--r--sc/source/core/tool/rangenam.cxx803
-rw-r--r--sc/source/core/tool/rangeseq.cxx478
-rw-r--r--sc/source/core/tool/rangeutl.cxx1109
-rw-r--r--sc/source/core/tool/rechead.cxx175
-rw-r--r--sc/source/core/tool/refdata.cxx271
-rw-r--r--sc/source/core/tool/reffind.cxx177
-rw-r--r--sc/source/core/tool/refreshtimer.cxx83
-rw-r--r--sc/source/core/tool/reftokenhelper.cxx478
-rw-r--r--sc/source/core/tool/refupdat.cxx941
-rw-r--r--sc/source/core/tool/scmatrix.cxx818
-rw-r--r--sc/source/core/tool/simplerangelist.cxx246
-rw-r--r--sc/source/core/tool/stringutil.cxx170
-rw-r--r--sc/source/core/tool/subtotal.cxx84
-rw-r--r--sc/source/core/tool/token.cxx1796
-rw-r--r--sc/source/core/tool/unitconv.cxx180
-rw-r--r--sc/source/core/tool/userlist.cxx299
-rw-r--r--sc/source/core/tool/viewopti.cxx752
-rw-r--r--sc/source/core/tool/zforauto.cxx109
-rw-r--r--sc/source/filter/dif/difexp.cxx319
-rw-r--r--sc/source/filter/dif/difimp.cxx1010
-rw-r--r--sc/source/filter/dif/makefile.mk52
-rw-r--r--sc/source/filter/excel/colrowst.cxx367
-rw-r--r--sc/source/filter/excel/excdoc.cxx829
-rw-r--r--sc/source/filter/excel/excel.cxx289
-rw-r--r--sc/source/filter/excel/excform.cxx1959
-rw-r--r--sc/source/filter/excel/excform8.cxx1596
-rw-r--r--sc/source/filter/excel/excimp8.cxx757
-rw-r--r--sc/source/filter/excel/excrecds.cxx1075
-rw-r--r--sc/source/filter/excel/exctools.cxx345
-rw-r--r--sc/source/filter/excel/expop2.cxx151
-rw-r--r--sc/source/filter/excel/fontbuff.cxx165
-rw-r--r--sc/source/filter/excel/frmbase.cxx280
-rw-r--r--sc/source/filter/excel/impop.cxx1342
-rw-r--r--sc/source/filter/excel/makefile.mk160
-rw-r--r--sc/source/filter/excel/namebuff.cxx346
-rw-r--r--sc/source/filter/excel/ooxml-export-TODO.txt148
-rw-r--r--sc/source/filter/excel/read.cxx1311
-rw-r--r--sc/source/filter/excel/tokstack.cxx851
-rw-r--r--sc/source/filter/excel/xechart.cxx3342
-rw-r--r--sc/source/filter/excel/xecontent.cxx1481
-rw-r--r--sc/source/filter/excel/xeescher.cxx1665
-rw-r--r--sc/source/filter/excel/xeformula.cxx2641
-rw-r--r--sc/source/filter/excel/xehelper.cxx1130
-rw-r--r--sc/source/filter/excel/xelink.cxx2367
-rw-r--r--sc/source/filter/excel/xename.cxx788
-rw-r--r--sc/source/filter/excel/xepage.cxx428
-rw-r--r--sc/source/filter/excel/xepivot.cxx1956
-rw-r--r--sc/source/filter/excel/xerecord.cxx304
-rw-r--r--sc/source/filter/excel/xeroot.cxx271
-rw-r--r--sc/source/filter/excel/xestream.cxx1249
-rw-r--r--sc/source/filter/excel/xestring.cxx622
-rw-r--r--sc/source/filter/excel/xestyle.cxx2845
-rw-r--r--sc/source/filter/excel/xetable.cxx2443
-rw-r--r--sc/source/filter/excel/xeview.cxx540
-rw-r--r--sc/source/filter/excel/xichart.cxx4149
-rw-r--r--sc/source/filter/excel/xicontent.cxx1327
-rw-r--r--sc/source/filter/excel/xiescher.cxx4201
-rw-r--r--sc/source/filter/excel/xiformula.cxx129
-rw-r--r--sc/source/filter/excel/xihelper.cxx898
-rw-r--r--sc/source/filter/excel/xilink.cxx773
-rw-r--r--sc/source/filter/excel/xiname.cxx289
-rw-r--r--sc/source/filter/excel/xipage.cxx392
-rw-r--r--sc/source/filter/excel/xipivot.cxx1640
-rw-r--r--sc/source/filter/excel/xiroot.cxx309
-rw-r--r--sc/source/filter/excel/xistream.cxx1097
-rw-r--r--sc/source/filter/excel/xistring.cxx215
-rw-r--r--sc/source/filter/excel/xistyle.cxx1954
-rw-r--r--sc/source/filter/excel/xiview.cxx308
-rw-r--r--sc/source/filter/excel/xladdress.cxx163
-rw-r--r--sc/source/filter/excel/xlchart.cxx1331
-rw-r--r--sc/source/filter/excel/xlescher.cxx382
-rw-r--r--sc/source/filter/excel/xlformula.cxx788
-rw-r--r--sc/source/filter/excel/xlpage.cxx276
-rw-r--r--sc/source/filter/excel/xlpivot.cxx1028
-rw-r--r--sc/source/filter/excel/xlroot.cxx432
-rw-r--r--sc/source/filter/excel/xlstyle.cxx1771
-rw-r--r--sc/source/filter/excel/xltoolbar.cxx434
-rw-r--r--sc/source/filter/excel/xltoolbar.hxx98
-rw-r--r--sc/source/filter/excel/xltools.cxx742
-rw-r--r--sc/source/filter/excel/xltracer.cxx272
-rw-r--r--sc/source/filter/excel/xlview.cxx117
-rw-r--r--sc/source/filter/ftools/fapihelper.cxx408
-rw-r--r--sc/source/filter/ftools/fprogressbar.cxx254
-rw-r--r--sc/source/filter/ftools/ftools.cxx408
-rw-r--r--sc/source/filter/ftools/makefile.mk56
-rw-r--r--sc/source/filter/html/htmlexp.cxx1346
-rw-r--r--sc/source/filter/html/htmlexp2.cxx251
-rw-r--r--sc/source/filter/html/htmlimp.cxx262
-rw-r--r--sc/source/filter/html/htmlpars.cxx3072
-rw-r--r--sc/source/filter/html/makefile.mk60
-rw-r--r--sc/source/filter/inc/XclExpChangeTrack.hxx679
-rw-r--r--sc/source/filter/inc/XclImpChangeTrack.hxx204
-rw-r--r--sc/source/filter/inc/biff.hxx66
-rw-r--r--sc/source/filter/inc/colrowst.hxx91
-rw-r--r--sc/source/filter/inc/decl.h46
-rw-r--r--sc/source/filter/inc/dif.hxx229
-rw-r--r--sc/source/filter/inc/eeimport.hxx71
-rw-r--r--sc/source/filter/inc/eeparser.hxx155
-rw-r--r--sc/source/filter/inc/excdefs.hxx108
-rw-r--r--sc/source/filter/inc/excdoc.hxx122
-rw-r--r--sc/source/filter/inc/excform.hxx159
-rw-r--r--sc/source/filter/inc/excimp8.hxx170
-rw-r--r--sc/source/filter/inc/excrecds.hxx512
-rw-r--r--sc/source/filter/inc/excscen.hxx149
-rw-r--r--sc/source/filter/inc/exp_op.hxx134
-rw-r--r--sc/source/filter/inc/expbase.hxx84
-rw-r--r--sc/source/filter/inc/fapihelper.hxx348
-rw-r--r--sc/source/filter/inc/filt_pch.hxx315
-rw-r--r--sc/source/filter/inc/fkttab.h48
-rw-r--r--sc/source/filter/inc/flttypes.hxx53
-rw-r--r--sc/source/filter/inc/formel.hxx296
-rw-r--r--sc/source/filter/inc/fprogressbar.hxx244
-rw-r--r--sc/source/filter/inc/ftools.hxx547
-rw-r--r--sc/source/filter/inc/funktion.h52
-rw-r--r--sc/source/filter/inc/htmlexp.hxx176
-rw-r--r--sc/source/filter/inc/htmlimp.hxx55
-rw-r--r--sc/source/filter/inc/htmlpars.hxx640
-rw-r--r--sc/source/filter/inc/imp_op.hxx207
-rw-r--r--sc/source/filter/inc/lotattr.hxx155
-rw-r--r--sc/source/filter/inc/lotfntbf.hxx114
-rw-r--r--sc/source/filter/inc/lotform.hxx134
-rw-r--r--sc/source/filter/inc/lotimpop.hxx172
-rw-r--r--sc/source/filter/inc/lotrange.hxx169
-rw-r--r--sc/source/filter/inc/makefile.mk26
-rw-r--r--sc/source/filter/inc/namebuff.hxx358
-rw-r--r--sc/source/filter/inc/op.h72
-rw-r--r--sc/source/filter/inc/optab.h54
-rw-r--r--sc/source/filter/inc/otlnbuff.hxx62
-rw-r--r--sc/source/filter/inc/qpro.hxx61
-rw-r--r--sc/source/filter/inc/qproform.hxx89
-rw-r--r--sc/source/filter/inc/qprostyle.hxx72
-rw-r--r--sc/source/filter/inc/root.hxx121
-rw-r--r--sc/source/filter/inc/rtfexp.hxx54
-rw-r--r--sc/source/filter/inc/rtfimp.hxx44
-rw-r--r--sc/source/filter/inc/rtfparse.hxx92
-rw-r--r--sc/source/filter/inc/scflt.hxx766
-rw-r--r--sc/source/filter/inc/scfobj.hxx47
-rw-r--r--sc/source/filter/inc/scmem.h39
-rw-r--r--sc/source/filter/inc/tokstack.hxx407
-rw-r--r--sc/source/filter/inc/tool.h166
-rw-r--r--sc/source/filter/inc/xcl97dum.hxx93
-rw-r--r--sc/source/filter/inc/xcl97esc.hxx214
-rw-r--r--sc/source/filter/inc/xcl97rec.hxx627
-rw-r--r--sc/source/filter/inc/xechart.hxx1279
-rw-r--r--sc/source/filter/inc/xecontent.hxx356
-rw-r--r--sc/source/filter/inc/xeescher.hxx484
-rw-r--r--sc/source/filter/inc/xeformula.hxx99
-rw-r--r--sc/source/filter/inc/xehelper.hxx437
-rw-r--r--sc/source/filter/inc/xelink.hxx221
-rw-r--r--sc/source/filter/inc/xename.hxx91
-rw-r--r--sc/source/filter/inc/xepage.hxx139
-rw-r--r--sc/source/filter/inc/xepivot.hxx485
-rw-r--r--sc/source/filter/inc/xerecord.hxx421
-rw-r--r--sc/source/filter/inc/xeroot.hxx177
-rw-r--r--sc/source/filter/inc/xestream.hxx359
-rw-r--r--sc/source/filter/inc/xestring.hxx317
-rw-r--r--sc/source/filter/inc/xestyle.hxx742
-rw-r--r--sc/source/filter/inc/xetable.hxx1070
-rw-r--r--sc/source/filter/inc/xeview.hxx182
-rw-r--r--sc/source/filter/inc/xichart.hxx1516
-rw-r--r--sc/source/filter/inc/xicontent.hxx330
-rw-r--r--sc/source/filter/inc/xiescher.hxx1314
-rw-r--r--sc/source/filter/inc/xiformula.hxx70
-rw-r--r--sc/source/filter/inc/xihelper.hxx348
-rw-r--r--sc/source/filter/inc/xilink.hxx212
-rw-r--r--sc/source/filter/inc/xiname.hxx102
-rw-r--r--sc/source/filter/inc/xipage.hxx84
-rw-r--r--sc/source/filter/inc/xipivot.hxx459
-rw-r--r--sc/source/filter/inc/xiroot.hxx227
-rw-r--r--sc/source/filter/inc/xistream.hxx529
-rw-r--r--sc/source/filter/inc/xistring.hxx123
-rw-r--r--sc/source/filter/inc/xistyle.hxx671
-rw-r--r--sc/source/filter/inc/xiview.hxx97
-rw-r--r--sc/source/filter/inc/xladdress.hxx199
-rw-r--r--sc/source/filter/inc/xlchart.hxx1488
-rw-r--r--sc/source/filter/inc/xlconst.hxx279
-rw-r--r--sc/source/filter/inc/xlcontent.hxx196
-rw-r--r--sc/source/filter/inc/xlescher.hxx452
-rw-r--r--sc/source/filter/inc/xlformula.hxx571
-rw-r--r--sc/source/filter/inc/xllink.hxx95
-rw-r--r--sc/source/filter/inc/xlname.hxx77
-rw-r--r--sc/source/filter/inc/xlpage.hxx162
-rw-r--r--sc/source/filter/inc/xlpivot.hxx816
-rw-r--r--sc/source/filter/inc/xlroot.hxx294
-rw-r--r--sc/source/filter/inc/xlstream.hxx55
-rw-r--r--sc/source/filter/inc/xlstring.hxx99
-rw-r--r--sc/source/filter/inc/xlstyle.hxx623
-rw-r--r--sc/source/filter/inc/xltable.hxx204
-rw-r--r--sc/source/filter/inc/xltools.hxx269
-rw-r--r--sc/source/filter/inc/xltracer.hxx150
-rw-r--r--sc/source/filter/inc/xlview.hxx180
-rw-r--r--sc/source/filter/lotus/expop.cxx414
-rw-r--r--sc/source/filter/lotus/export.cxx60
-rw-r--r--sc/source/filter/lotus/filter.cxx250
-rw-r--r--sc/source/filter/lotus/lotattr.cxx302
-rw-r--r--sc/source/filter/lotus/lotform.cxx2076
-rw-r--r--sc/source/filter/lotus/lotimpop.cxx475
-rw-r--r--sc/source/filter/lotus/lotread.cxx326
-rw-r--r--sc/source/filter/lotus/lotus.cxx104
-rw-r--r--sc/source/filter/lotus/makefile.mk67
-rw-r--r--sc/source/filter/lotus/memory.cxx142
-rw-r--r--sc/source/filter/lotus/op.cxx670
-rw-r--r--sc/source/filter/lotus/optab.cxx251
-rw-r--r--sc/source/filter/lotus/tool.cxx654
-rw-r--r--sc/source/filter/qpro/biff.cxx106
-rw-r--r--sc/source/filter/qpro/makefile.mk55
-rw-r--r--sc/source/filter/qpro/qpro.cxx233
-rw-r--r--sc/source/filter/qpro/qproform.cxx749
-rw-r--r--sc/source/filter/qpro/qprostyle.cxx171
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx647
-rw-r--r--sc/source/filter/rtf/expbase.cxx109
-rw-r--r--sc/source/filter/rtf/makefile.mk57
-rw-r--r--sc/source/filter/rtf/rtfexp.cxx277
-rw-r--r--sc/source/filter/rtf/rtfimp.cxx77
-rw-r--r--sc/source/filter/rtf/rtfparse.cxx422
-rw-r--r--sc/source/filter/starcalc/makefile.mk54
-rw-r--r--sc/source/filter/starcalc/scflt.cxx2514
-rw-r--r--sc/source/filter/starcalc/scfobj.cxx106
-rw-r--r--sc/source/filter/xcl97/XclExpChangeTrack.cxx1703
-rw-r--r--sc/source/filter/xcl97/XclImpChangeTrack.cxx504
-rw-r--r--sc/source/filter/xcl97/makefile.mk60
-rw-r--r--sc/source/filter/xcl97/xcl97dum.cxx165
-rw-r--r--sc/source/filter/xcl97/xcl97esc.cxx554
-rw-r--r--sc/source/filter/xcl97/xcl97rec.cxx1790
-rw-r--r--sc/source/filter/xml/XMLCalculationSettingsContext.cxx276
-rw-r--r--sc/source/filter/xml/XMLCalculationSettingsContext.hxx114
-rw-r--r--sc/source/filter/xml/XMLCellRangeSourceContext.cxx135
-rw-r--r--sc/source/filter/xml/XMLCellRangeSourceContext.hxx82
-rw-r--r--sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx820
-rw-r--r--sc/source/filter/xml/XMLChangeTrackingExportHelper.hxx101
-rw-r--r--sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx938
-rw-r--r--sc/source/filter/xml/XMLChangeTrackingImportHelper.hxx252
-rw-r--r--sc/source/filter/xml/XMLCodeNameProvider.cxx207
-rw-r--r--sc/source/filter/xml/XMLCodeNameProvider.hxx73
-rw-r--r--sc/source/filter/xml/XMLColumnRowGroupExport.cxx189
-rw-r--r--sc/source/filter/xml/XMLColumnRowGroupExport.hxx75
-rw-r--r--sc/source/filter/xml/XMLConsolidationContext.cxx162
-rw-r--r--sc/source/filter/xml/XMLConsolidationContext.hxx75
-rw-r--r--sc/source/filter/xml/XMLConverter.cxx665
-rw-r--r--sc/source/filter/xml/XMLConverter.hxx176
-rw-r--r--sc/source/filter/xml/XMLDDELinksContext.cxx495
-rw-r--r--sc/source/filter/xml/XMLDDELinksContext.hxx233
-rw-r--r--sc/source/filter/xml/XMLDetectiveContext.cxx267
-rw-r--r--sc/source/filter/xml/XMLDetectiveContext.hxx177
-rw-r--r--sc/source/filter/xml/XMLEmptyContext.cxx66
-rw-r--r--sc/source/filter/xml/XMLEmptyContext.hxx60
-rw-r--r--sc/source/filter/xml/XMLExportDDELinks.cxx224
-rw-r--r--sc/source/filter/xml/XMLExportDDELinks.hxx54
-rw-r--r--sc/source/filter/xml/XMLExportDataPilot.cxx904
-rw-r--r--sc/source/filter/xml/XMLExportDataPilot.hxx82
-rw-r--r--sc/source/filter/xml/XMLExportDatabaseRanges.cxx702
-rw-r--r--sc/source/filter/xml/XMLExportDatabaseRanges.hxx64
-rw-r--r--sc/source/filter/xml/XMLExportIterator.cxx894
-rw-r--r--sc/source/filter/xml/XMLExportIterator.hxx415
-rw-r--r--sc/source/filter/xml/XMLExportSharedData.cxx166
-rw-r--r--sc/source/filter/xml/XMLExportSharedData.hxx92
-rw-r--r--sc/source/filter/xml/XMLStylesExportHelper.cxx1270
-rw-r--r--sc/source/filter/xml/XMLStylesExportHelper.hxx296
-rw-r--r--sc/source/filter/xml/XMLStylesImportHelper.cxx629
-rw-r--r--sc/source/filter/xml/XMLStylesImportHelper.hxx203
-rw-r--r--sc/source/filter/xml/XMLTableHeaderFooterContext.cxx272
-rw-r--r--sc/source/filter/xml/XMLTableHeaderFooterContext.hxx117
-rw-r--r--sc/source/filter/xml/XMLTableMasterPageExport.cxx180
-rw-r--r--sc/source/filter/xml/XMLTableMasterPageExport.hxx68
-rw-r--r--sc/source/filter/xml/XMLTableShapeImportHelper.cxx220
-rw-r--r--sc/source/filter/xml/XMLTableShapeImportHelper.hxx65
-rw-r--r--sc/source/filter/xml/XMLTableShapeResizer.cxx388
-rw-r--r--sc/source/filter/xml/XMLTableShapeResizer.hxx84
-rw-r--r--sc/source/filter/xml/XMLTableShapesContext.cxx89
-rw-r--r--sc/source/filter/xml/XMLTableShapesContext.hxx58
-rw-r--r--sc/source/filter/xml/XMLTableSourceContext.cxx148
-rw-r--r--sc/source/filter/xml/XMLTableSourceContext.hxx66
-rw-r--r--sc/source/filter/xml/XMLTextPContext.cxx226
-rw-r--r--sc/source/filter/xml/XMLTextPContext.hxx75
-rw-r--r--sc/source/filter/xml/XMLTrackedChangesContext.cxx2029
-rw-r--r--sc/source/filter/xml/XMLTrackedChangesContext.hxx64
-rw-r--r--sc/source/filter/xml/makefile.mk107
-rw-r--r--sc/source/filter/xml/sheetdata.cxx285
-rw-r--r--sc/source/filter/xml/xmlannoi.cxx223
-rw-r--r--sc/source/filter/xml/xmlannoi.hxx124
-rw-r--r--sc/source/filter/xml/xmlbodyi.cxx310
-rw-r--r--sc/source/filter/xml/xmlbodyi.hxx67
-rw-r--r--sc/source/filter/xml/xmlcelli.cxx1132
-rw-r--r--sc/source/filter/xml/xmlcelli.hxx132
-rw-r--r--sc/source/filter/xml/xmlcoli.cxx336
-rw-r--r--sc/source/filter/xml/xmlcoli.hxx96
-rw-r--r--sc/source/filter/xml/xmlconti.cxx110
-rw-r--r--sc/source/filter/xml/xmlconti.hxx66
-rw-r--r--sc/source/filter/xml/xmlcvali.cxx699
-rw-r--r--sc/source/filter/xml/xmlcvali.hxx64
-rw-r--r--sc/source/filter/xml/xmldpimp.cxx1845
-rw-r--r--sc/source/filter/xml/xmldpimp.hxx696
-rw-r--r--sc/source/filter/xml/xmldrani.cxx993
-rw-r--r--sc/source/filter/xml/xmldrani.hxx365
-rw-r--r--sc/source/filter/xml/xmlexprt.cxx4595
-rw-r--r--sc/source/filter/xml/xmlexprt.hxx284
-rw-r--r--sc/source/filter/xml/xmlexternaltabi.cxx440
-rw-r--r--sc/source/filter/xml/xmlexternaltabi.hxx179
-rw-r--r--sc/source/filter/xml/xmlfilti.cxx787
-rw-r--r--sc/source/filter/xml/xmlfilti.hxx313
-rw-r--r--sc/source/filter/xml/xmlfonte.cxx155
-rw-r--r--sc/source/filter/xml/xmlimprt.cxx3113
-rw-r--r--sc/source/filter/xml/xmlimprt.hxx1059
-rw-r--r--sc/source/filter/xml/xmllabri.cxx147
-rw-r--r--sc/source/filter/xml/xmllabri.hxx93
-rw-r--r--sc/source/filter/xml/xmlnexpi.cxx252
-rw-r--r--sc/source/filter/xml/xmlnexpi.hxx104
-rw-r--r--sc/source/filter/xml/xmlrowi.cxx363
-rw-r--r--sc/source/filter/xml/xmlrowi.hxx96
-rw-r--r--sc/source/filter/xml/xmlsceni.cxx177
-rw-r--r--sc/source/filter/xml/xmlsceni.hxx73
-rw-r--r--sc/source/filter/xml/xmlsorti.cxx281
-rw-r--r--sc/source/filter/xml/xmlsorti.hxx109
-rw-r--r--sc/source/filter/xml/xmlstyle.cxx1980
-rw-r--r--sc/source/filter/xml/xmlstyle.hxx363
-rw-r--r--sc/source/filter/xml/xmlstyli.cxx1094
-rw-r--r--sc/source/filter/xml/xmlstyli.hxx331
-rw-r--r--sc/source/filter/xml/xmlsubti.cxx847
-rw-r--r--sc/source/filter/xml/xmlsubti.hxx209
-rw-r--r--sc/source/filter/xml/xmltabi.cxx494
-rw-r--r--sc/source/filter/xml/xmltabi.hxx103
-rw-r--r--sc/source/filter/xml/xmlwrap.cxx998
-rw-r--r--sc/source/ui/Accessibility/AccessibilityHints.cxx115
-rw-r--r--sc/source/ui/Accessibility/AccessibleCell.cxx456
-rw-r--r--sc/source/ui/Accessibility/AccessibleCellBase.cxx342
-rw-r--r--sc/source/ui/Accessibility/AccessibleContextBase.cxx626
-rw-r--r--sc/source/ui/Accessibility/AccessibleCsvControl.cxx1676
-rw-r--r--sc/source/ui/Accessibility/AccessibleDataPilotControl.cxx736
-rw-r--r--sc/source/ui/Accessibility/AccessibleDocument.cxx2115
-rw-r--r--sc/source/ui/Accessibility/AccessibleDocumentBase.cxx52
-rw-r--r--sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx1891
-rw-r--r--sc/source/ui/Accessibility/AccessibleEditObject.cxx354
-rw-r--r--sc/source/ui/Accessibility/AccessibleFilterMenu.cxx400
-rw-r--r--sc/source/ui/Accessibility/AccessibleFilterMenuItem.cxx207
-rw-r--r--sc/source/ui/Accessibility/AccessibleFilterTopWindow.cxx129
-rw-r--r--sc/source/ui/Accessibility/AccessibleGlobal.cxx97
-rw-r--r--sc/source/ui/Accessibility/AccessiblePageHeader.cxx442
-rw-r--r--sc/source/ui/Accessibility/AccessiblePageHeaderArea.cxx327
-rw-r--r--sc/source/ui/Accessibility/AccessiblePreviewCell.cxx318
-rw-r--r--sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx444
-rw-r--r--sc/source/ui/Accessibility/AccessiblePreviewTable.cxx769
-rw-r--r--sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx996
-rw-r--r--sc/source/ui/Accessibility/AccessibleTableBase.cxx494
-rw-r--r--sc/source/ui/Accessibility/AccessibleText.cxx1846
-rw-r--r--sc/source/ui/Accessibility/DrawModelBroadcaster.cxx95
-rw-r--r--sc/source/ui/Accessibility/makefile.mk92
-rw-r--r--sc/source/ui/app/client.cxx258
-rw-r--r--sc/source/ui/app/drwtrans.cxx804
-rw-r--r--sc/source/ui/app/inputhdl.cxx3828
-rw-r--r--sc/source/ui/app/inputwin.cxx1812
-rw-r--r--sc/source/ui/app/lnktrans.cxx99
-rw-r--r--sc/source/ui/app/makefile.mk73
-rw-r--r--sc/source/ui/app/msgpool.cxx125
-rw-r--r--sc/source/ui/app/rfindlst.cxx69
-rw-r--r--sc/source/ui/app/scdll.cxx349
-rw-r--r--sc/source/ui/app/scmod.cxx2289
-rw-r--r--sc/source/ui/app/scmod2.cxx109
-rw-r--r--sc/source/ui/app/seltrans.cxx451
-rw-r--r--sc/source/ui/app/template.cxx81
-rw-r--r--sc/source/ui/app/transobj.cxx869
-rw-r--r--sc/source/ui/app/typemap.cxx139
-rw-r--r--sc/source/ui/app/uiitems.cxx724
-rw-r--r--sc/source/ui/app/wtcdummy.cxx68
-rw-r--r--sc/source/ui/attrdlg/attrdlg.cxx147
-rw-r--r--sc/source/ui/attrdlg/condfrmt.cxx831
-rw-r--r--sc/source/ui/attrdlg/makefile.mk61
-rw-r--r--sc/source/ui/attrdlg/scabstdlg.cxx59
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.cxx1631
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.hxx594
-rw-r--r--sc/source/ui/attrdlg/scuiexp.cxx58
-rw-r--r--sc/source/ui/attrdlg/tabpages.cxx253
-rw-r--r--sc/source/ui/cctrl/cbuttonw.cxx180
-rw-r--r--sc/source/ui/cctrl/dpcontrol.cxx1424
-rw-r--r--sc/source/ui/cctrl/dpcontrol.src79
-rw-r--r--sc/source/ui/cctrl/editfield.cxx86
-rw-r--r--sc/source/ui/cctrl/makefile.mk69
-rw-r--r--sc/source/ui/cctrl/popmenu.cxx50
-rw-r--r--sc/source/ui/cctrl/tbinsert.cxx234
-rw-r--r--sc/source/ui/cctrl/tbzoomsliderctrl.cxx533
-rw-r--r--sc/source/ui/dbgui/asciiopt.cxx406
-rw-r--r--sc/source/ui/dbgui/asciiopt.hrc71
-rw-r--r--sc/source/ui/dbgui/asciiopt.src305
-rw-r--r--sc/source/ui/dbgui/consdlg.cxx657
-rw-r--r--sc/source/ui/dbgui/consdlg.hrc61
-rw-r--r--sc/source/ui/dbgui/consdlg.src217
-rw-r--r--sc/source/ui/dbgui/csvcontrol.cxx339
-rw-r--r--sc/source/ui/dbgui/csvgrid.cxx1357
-rw-r--r--sc/source/ui/dbgui/csvruler.cxx684
-rw-r--r--sc/source/ui/dbgui/csvsplits.cxx122
-rw-r--r--sc/source/ui/dbgui/csvtablebox.cxx436
-rw-r--r--sc/source/ui/dbgui/dapidata.cxx231
-rw-r--r--sc/source/ui/dbgui/dapitype.cxx144
-rw-r--r--sc/source/ui/dbgui/dapitype.hrc53
-rw-r--r--sc/source/ui/dbgui/dapitype.src308
-rw-r--r--sc/source/ui/dbgui/dbnamdlg.cxx723
-rw-r--r--sc/source/ui/dbgui/dpgroupdlg.cxx358
-rw-r--r--sc/source/ui/dbgui/dpgroupdlg.hrc64
-rw-r--r--sc/source/ui/dbgui/dpgroupdlg.src270
-rw-r--r--sc/source/ui/dbgui/expftext.cxx97
-rw-r--r--sc/source/ui/dbgui/fieldwnd.cxx778
-rw-r--r--sc/source/ui/dbgui/filtdlg.cxx1190
-rw-r--r--sc/source/ui/dbgui/foptmgr.cxx340
-rw-r--r--sc/source/ui/dbgui/imoptdlg.cxx93
-rw-r--r--sc/source/ui/dbgui/imoptdlg.hrc44
-rw-r--r--sc/source/ui/dbgui/imoptdlg.src141
-rw-r--r--sc/source/ui/dbgui/makefile.mk120
-rw-r--r--sc/source/ui/dbgui/outline.src51
-rw-r--r--sc/source/ui/dbgui/pfiltdlg.cxx622
-rw-r--r--sc/source/ui/dbgui/pivot.hrc81
-rw-r--r--sc/source/ui/dbgui/pivot.src328
-rw-r--r--sc/source/ui/dbgui/pvfundlg.cxx858
-rw-r--r--sc/source/ui/dbgui/pvfundlg.hrc83
-rw-r--r--sc/source/ui/dbgui/pvfundlg.src515
-rw-r--r--sc/source/ui/dbgui/pvglob.hxx45
-rw-r--r--sc/source/ui/dbgui/pvlaydlg.cxx1871
-rw-r--r--sc/source/ui/dbgui/scendlg.cxx245
-rw-r--r--sc/source/ui/dbgui/scendlg.hrc57
-rw-r--r--sc/source/ui/dbgui/scendlg.src195
-rw-r--r--sc/source/ui/dbgui/scuiasciiopt.cxx726
-rw-r--r--sc/source/ui/dbgui/scuiimoptdlg.cxx319
-rw-r--r--sc/source/ui/dbgui/sfiltdlg.cxx532
-rw-r--r--sc/source/ui/dbgui/sortdlg.cxx110
-rw-r--r--sc/source/ui/dbgui/subtdlg.cxx71
-rw-r--r--sc/source/ui/dbgui/textimportoptions.cxx123
-rw-r--r--sc/source/ui/dbgui/textimportoptions.src110
-rw-r--r--sc/source/ui/dbgui/tpsort.cxx1085
-rw-r--r--sc/source/ui/dbgui/tpsubt.cxx688
-rw-r--r--sc/source/ui/dbgui/validate.cxx998
-rw-r--r--sc/source/ui/dbgui/validate.src407
-rw-r--r--sc/source/ui/docshell/arealink.cxx531
-rw-r--r--sc/source/ui/docshell/autostyl.cxx246
-rw-r--r--sc/source/ui/docshell/dbdocfun.cxx1504
-rw-r--r--sc/source/ui/docshell/dbdocimp.cxx725
-rw-r--r--sc/source/ui/docshell/docfunc.cxx4946
-rw-r--r--sc/source/ui/docshell/docsh.cxx3081
-rw-r--r--sc/source/ui/docshell/docsh2.cxx266
-rw-r--r--sc/source/ui/docshell/docsh3.cxx1412
-rw-r--r--sc/source/ui/docshell/docsh4.cxx2718
-rw-r--r--sc/source/ui/docshell/docsh5.cxx1034
-rw-r--r--sc/source/ui/docshell/docsh6.cxx542
-rw-r--r--sc/source/ui/docshell/docsh7.cxx47
-rw-r--r--sc/source/ui/docshell/docsh8.cxx1184
-rw-r--r--sc/source/ui/docshell/docshimp.hxx59
-rw-r--r--sc/source/ui/docshell/editable.cxx164
-rw-r--r--sc/source/ui/docshell/externalrefmgr.cxx2555
-rw-r--r--sc/source/ui/docshell/hiranges.cxx55
-rw-r--r--sc/source/ui/docshell/impex.cxx2071
-rw-r--r--sc/source/ui/docshell/macromgr.cxx219
-rw-r--r--sc/source/ui/docshell/makefile.mk141
-rw-r--r--sc/source/ui/docshell/olinefun.cxx799
-rw-r--r--sc/source/ui/docshell/pagedata.cxx141
-rw-r--r--sc/source/ui/docshell/pntlock.cxx63
-rw-r--r--sc/source/ui/docshell/servobj.cxx279
-rw-r--r--sc/source/ui/docshell/sizedev.cxx79
-rw-r--r--sc/source/ui/docshell/tablink.cxx623
-rw-r--r--sc/source/ui/docshell/tpstat.cxx103
-rw-r--r--sc/source/ui/docshell/tpstat.hrc36
-rw-r--r--sc/source/ui/docshell/tpstat.src112
-rw-r--r--sc/source/ui/drawfunc/chartsh.cxx83
-rw-r--r--sc/source/ui/drawfunc/drawsh.cxx485
-rw-r--r--sc/source/ui/drawfunc/drawsh2.cxx397
-rw-r--r--sc/source/ui/drawfunc/drawsh4.cxx117
-rw-r--r--sc/source/ui/drawfunc/drawsh5.cxx756
-rw-r--r--sc/source/ui/drawfunc/drformsh.cxx83
-rw-r--r--sc/source/ui/drawfunc/drformsh.src250
-rw-r--r--sc/source/ui/drawfunc/drtxtob.cxx1076
-rw-r--r--sc/source/ui/drawfunc/drtxtob1.cxx150
-rw-r--r--sc/source/ui/drawfunc/drtxtob2.cxx301
-rw-r--r--sc/source/ui/drawfunc/fuconarc.cxx236
-rw-r--r--sc/source/ui/drawfunc/fuconcustomshape.cxx291
-rw-r--r--sc/source/ui/drawfunc/fuconpol.cxx358
-rw-r--r--sc/source/ui/drawfunc/fuconrec.cxx317
-rw-r--r--sc/source/ui/drawfunc/fuconstr.cxx337
-rw-r--r--sc/source/ui/drawfunc/fuconuno.cxx192
-rw-r--r--sc/source/ui/drawfunc/fudraw.cxx862
-rw-r--r--sc/source/ui/drawfunc/fuins1.cxx436
-rw-r--r--sc/source/ui/drawfunc/fuins2.cxx851
-rw-r--r--sc/source/ui/drawfunc/fumark.cxx292
-rw-r--r--sc/source/ui/drawfunc/fupoor.cxx388
-rw-r--r--sc/source/ui/drawfunc/fusel.cxx657
-rw-r--r--sc/source/ui/drawfunc/fusel2.cxx187
-rw-r--r--sc/source/ui/drawfunc/futext.cxx884
-rw-r--r--sc/source/ui/drawfunc/futext2.cxx309
-rw-r--r--sc/source/ui/drawfunc/futext3.cxx200
-rw-r--r--sc/source/ui/drawfunc/graphsh.cxx150
-rw-r--r--sc/source/ui/drawfunc/makefile.mk87
-rw-r--r--sc/source/ui/drawfunc/mediash.cxx146
-rw-r--r--sc/source/ui/drawfunc/objdraw.src1541
-rw-r--r--sc/source/ui/drawfunc/oleobjsh.cxx83
-rw-r--r--sc/source/ui/formdlg/dwfunctr.cxx1184
-rw-r--r--sc/source/ui/formdlg/dwfunctr.hrc37
-rw-r--r--sc/source/ui/formdlg/dwfunctr.src155
-rw-r--r--sc/source/ui/formdlg/formdata.cxx63
-rw-r--r--sc/source/ui/formdlg/formdlgs.src29
-rw-r--r--sc/source/ui/formdlg/formula.cxx684
-rw-r--r--sc/source/ui/formdlg/makefile.mk53
-rw-r--r--sc/source/ui/formdlg/privsplt.cxx424
-rw-r--r--sc/source/ui/inc/AccessibilityHints.hxx100
-rw-r--r--sc/source/ui/inc/AccessibleCell.hxx176
-rw-r--r--sc/source/ui/inc/AccessibleCellBase.hxx156
-rw-r--r--sc/source/ui/inc/AccessibleContextBase.hxx345
-rw-r--r--sc/source/ui/inc/AccessibleCsvControl.hxx668
-rw-r--r--sc/source/ui/inc/AccessibleDataPilotControl.hxx148
-rw-r--r--sc/source/ui/inc/AccessibleDocument.hxx331
-rw-r--r--sc/source/ui/inc/AccessibleDocumentBase.hxx50
-rw-r--r--sc/source/ui/inc/AccessibleDocumentPagePreview.hxx157
-rw-r--r--sc/source/ui/inc/AccessibleEditObject.hxx181
-rw-r--r--sc/source/ui/inc/AccessiblePageHeader.hxx114
-rw-r--r--sc/source/ui/inc/AccessiblePageHeaderArea.hxx138
-rw-r--r--sc/source/ui/inc/AccessiblePreviewCell.hxx123
-rw-r--r--sc/source/ui/inc/AccessiblePreviewHeaderCell.hxx155
-rw-r--r--sc/source/ui/inc/AccessiblePreviewTable.hxx185
-rw-r--r--sc/source/ui/inc/AccessibleSpreadsheet.hxx292
-rw-r--r--sc/source/ui/inc/AccessibleTableBase.hxx301
-rw-r--r--sc/source/ui/inc/AccessibleText.hxx360
-rw-r--r--sc/source/ui/inc/ChartRangeSelectionListener.hxx82
-rw-r--r--sc/source/ui/inc/DrawModelBroadcaster.hxx62
-rw-r--r--sc/source/ui/inc/IAnyRefDialog.hxx67
-rw-r--r--sc/source/ui/inc/ScDevChart.hxx87
-rw-r--r--sc/source/ui/inc/acredlin.hrc75
-rw-r--r--sc/source/ui/inc/acredlin.hxx257
-rw-r--r--sc/source/ui/inc/anyrefdg.hxx277
-rw-r--r--sc/source/ui/inc/areasave.hxx86
-rw-r--r--sc/source/ui/inc/areasdlg.hxx106
-rw-r--r--sc/source/ui/inc/asciiopt.hxx112
-rw-r--r--sc/source/ui/inc/attrdlg.hrc51
-rw-r--r--sc/source/ui/inc/attrdlg.hxx71
-rw-r--r--sc/source/ui/inc/auditsh.hxx61
-rw-r--r--sc/source/ui/inc/autofmt.hxx141
-rw-r--r--sc/source/ui/inc/autostyl.hxx70
-rw-r--r--sc/source/ui/inc/cbutton.hxx86
-rw-r--r--sc/source/ui/inc/cellmergeoption.hxx61
-rw-r--r--sc/source/ui/inc/cellsh.hxx110
-rw-r--r--sc/source/ui/inc/chartsh.hxx55
-rw-r--r--sc/source/ui/inc/client.hxx64
-rw-r--r--sc/source/ui/inc/colrowba.hxx112
-rw-r--r--sc/source/ui/inc/condfrmt.hrc73
-rw-r--r--sc/source/ui/inc/condfrmt.hxx157
-rw-r--r--sc/source/ui/inc/conflictsdlg.hrc43
-rw-r--r--sc/source/ui/inc/conflictsdlg.hxx215
-rw-r--r--sc/source/ui/inc/consdlg.hxx130
-rw-r--r--sc/source/ui/inc/content.hxx170
-rw-r--r--sc/source/ui/inc/corodlg.hxx77
-rw-r--r--sc/source/ui/inc/crdlg.hxx65
-rw-r--r--sc/source/ui/inc/crnrdlg.hrc46
-rw-r--r--sc/source/ui/inc/crnrdlg.hxx114
-rw-r--r--sc/source/ui/inc/csvcontrol.hxx434
-rw-r--r--sc/source/ui/inc/csvgrid.hxx360
-rw-r--r--sc/source/ui/inc/csvruler.hxx202
-rw-r--r--sc/source/ui/inc/csvsplits.hxx105
-rw-r--r--sc/source/ui/inc/csvtablebox.hxx158
-rw-r--r--sc/source/ui/inc/dapidata.hxx72
-rw-r--r--sc/source/ui/inc/dapitype.hxx95
-rw-r--r--sc/source/ui/inc/datafdlg.hrc42
-rw-r--r--sc/source/ui/inc/datafdlg.hxx114
-rw-r--r--sc/source/ui/inc/dbdocfun.hxx127
-rw-r--r--sc/source/ui/inc/dbfunc.hxx137
-rw-r--r--sc/source/ui/inc/dbnamdlg.hrc51
-rw-r--r--sc/source/ui/inc/dbnamdlg.hxx123
-rw-r--r--sc/source/ui/inc/delcldlg.hxx66
-rw-r--r--sc/source/ui/inc/delcodlg.hxx76
-rw-r--r--sc/source/ui/inc/docfunc.hxx199
-rw-r--r--sc/source/ui/inc/docsh.hxx483
-rw-r--r--sc/source/ui/inc/dpcontrol.hrc40
-rw-r--r--sc/source/ui/inc/dpcontrol.hxx366
-rw-r--r--sc/source/ui/inc/dpgroupdlg.hxx168
-rw-r--r--sc/source/ui/inc/drawsh.hxx94
-rw-r--r--sc/source/ui/inc/drawutil.hxx53
-rw-r--r--sc/source/ui/inc/drawview.hxx151
-rw-r--r--sc/source/ui/inc/drformsh.hxx58
-rw-r--r--sc/source/ui/inc/drtxtob.hxx91
-rw-r--r--sc/source/ui/inc/drwtrans.hxx112
-rw-r--r--sc/source/ui/inc/dwfunctr.hxx154
-rw-r--r--sc/source/ui/inc/editable.hxx88
-rw-r--r--sc/source/ui/inc/editfield.hxx52
-rw-r--r--sc/source/ui/inc/editsh.hxx88
-rw-r--r--sc/source/ui/inc/expftext.hxx48
-rw-r--r--sc/source/ui/inc/fieldwnd.hxx223
-rw-r--r--sc/source/ui/inc/filldlg.hxx134
-rw-r--r--sc/source/ui/inc/filtdlg.hxx263
-rw-r--r--sc/source/ui/inc/filter.hrc82
-rw-r--r--sc/source/ui/inc/foptmgr.hxx116
-rw-r--r--sc/source/ui/inc/formatsh.hxx85
-rw-r--r--sc/source/ui/inc/formdata.hxx68
-rw-r--r--sc/source/ui/inc/formula.hxx138
-rw-r--r--sc/source/ui/inc/fuconarc.hxx64
-rw-r--r--sc/source/ui/inc/fuconcustomshape.hxx63
-rw-r--r--sc/source/ui/inc/fuconpol.hxx65
-rw-r--r--sc/source/ui/inc/fuconrec.hxx64
-rw-r--r--sc/source/ui/inc/fuconstr.hxx70
-rw-r--r--sc/source/ui/inc/fuconuno.hxx69
-rw-r--r--sc/source/ui/inc/fudraw.hxx80
-rw-r--r--sc/source/ui/inc/fuedipo.hxx62
-rw-r--r--sc/source/ui/inc/fuinsert.hxx87
-rw-r--r--sc/source/ui/inc/fumark.hxx76
-rw-r--r--sc/source/ui/inc/funcpage.hxx128
-rw-r--r--sc/source/ui/inc/funcutl.hxx197
-rw-r--r--sc/source/ui/inc/fupoor.hxx138
-rw-r--r--sc/source/ui/inc/fusel.hxx83
-rw-r--r--sc/source/ui/inc/futext.hxx83
-rw-r--r--sc/source/ui/inc/graphsh.hxx60
-rw-r--r--sc/source/ui/inc/gridmerg.hxx66
-rw-r--r--sc/source/ui/inc/gridwin.hxx430
-rw-r--r--sc/source/ui/inc/groupdlg.hxx63
-rw-r--r--sc/source/ui/inc/hdrcont.hxx141
-rw-r--r--sc/source/ui/inc/hfedtdlg.hxx59
-rw-r--r--sc/source/ui/inc/highred.hrc71
-rw-r--r--sc/source/ui/inc/highred.hxx116
-rw-r--r--sc/source/ui/inc/hintwin.hxx56
-rw-r--r--sc/source/ui/inc/hiranges.hxx66
-rw-r--r--sc/source/ui/inc/imoptdlg.hxx110
-rw-r--r--sc/source/ui/inc/impex.hxx193
-rw-r--r--sc/source/ui/inc/inputhdl.hxx302
-rw-r--r--sc/source/ui/inc/inputwin.hxx228
-rw-r--r--sc/source/ui/inc/inscldlg.hxx64
-rw-r--r--sc/source/ui/inc/inscodlg.hxx118
-rw-r--r--sc/source/ui/inc/instbdlg.hrc52
-rw-r--r--sc/source/ui/inc/instbdlg.hxx126
-rw-r--r--sc/source/ui/inc/invmerge.hxx63
-rw-r--r--sc/source/ui/inc/lbseldlg.hxx69
-rw-r--r--sc/source/ui/inc/linkarea.hrc42
-rw-r--r--sc/source/ui/inc/linkarea.hxx106
-rw-r--r--sc/source/ui/inc/lnktrans.hxx55
-rw-r--r--sc/source/ui/inc/makefile.mk26
-rw-r--r--sc/source/ui/inc/mediash.hxx57
-rw-r--r--sc/source/ui/inc/miscdlgs.hrc188
-rw-r--r--sc/source/ui/inc/msgpool.hxx79
-rw-r--r--sc/source/ui/inc/mtrindlg.hxx78
-rw-r--r--sc/source/ui/inc/mvtabdlg.hxx81
-rw-r--r--sc/source/ui/inc/namecrea.hxx57
-rw-r--r--sc/source/ui/inc/namedlg.hrc52
-rw-r--r--sc/source/ui/inc/namedlg.hxx119
-rw-r--r--sc/source/ui/inc/namepast.hxx62
-rw-r--r--sc/source/ui/inc/navcitem.hxx57
-rw-r--r--sc/source/ui/inc/navipi.hxx368
-rw-r--r--sc/source/ui/inc/navsett.hxx61
-rw-r--r--sc/source/ui/inc/notemark.hxx80
-rw-r--r--sc/source/ui/inc/oleobjsh.hxx55
-rw-r--r--sc/source/ui/inc/olinefun.hxx70
-rw-r--r--sc/source/ui/inc/olinewin.hxx246
-rw-r--r--sc/source/ui/inc/opredlin.hrc38
-rw-r--r--sc/source/ui/inc/opredlin.hxx78
-rw-r--r--sc/source/ui/inc/optdlg.hrc197
-rw-r--r--sc/source/ui/inc/optload.hrc40
-rw-r--r--sc/source/ui/inc/optload.hxx68
-rw-r--r--sc/source/ui/inc/optsolver.hrc98
-rw-r--r--sc/source/ui/inc/optsolver.hxx266
-rw-r--r--sc/source/ui/inc/output.hxx275
-rw-r--r--sc/source/ui/inc/overlayobject.hxx61
-rw-r--r--sc/source/ui/inc/pagedata.hxx97
-rw-r--r--sc/source/ui/inc/parawin.hxx171
-rw-r--r--sc/source/ui/inc/pfiltdlg.hxx135
-rw-r--r--sc/source/ui/inc/pfuncache.hxx127
-rw-r--r--sc/source/ui/inc/pgbrksh.hxx55
-rw-r--r--sc/source/ui/inc/pivotsh.hxx63
-rw-r--r--sc/source/ui/inc/pntlock.hxx69
-rw-r--r--sc/source/ui/inc/popmenu.hxx53
-rw-r--r--sc/source/ui/inc/preview.hxx173
-rw-r--r--sc/source/ui/inc/prevloc.hxx159
-rw-r--r--sc/source/ui/inc/prevwsh.hxx140
-rw-r--r--sc/source/ui/inc/printfun.hxx368
-rw-r--r--sc/source/ui/inc/privsplt.hxx89
-rw-r--r--sc/source/ui/inc/protectiondlg.hrc44
-rw-r--r--sc/source/ui/inc/protectiondlg.hxx85
-rw-r--r--sc/source/ui/inc/pvfundlg.hxx254
-rw-r--r--sc/source/ui/inc/pvlaydlg.hxx236
-rw-r--r--sc/source/ui/inc/redcom.hxx68
-rw-r--r--sc/source/ui/inc/reffact.hxx125
-rw-r--r--sc/source/ui/inc/refundo.hxx71
-rw-r--r--sc/source/ui/inc/retypepassdlg.hrc71
-rw-r--r--sc/source/ui/inc/retypepassdlg.hxx177
-rw-r--r--sc/source/ui/inc/rfindlst.hxx77
-rw-r--r--sc/source/ui/inc/scendlg.hxx82
-rw-r--r--sc/source/ui/inc/scui_def.hxx59
-rw-r--r--sc/source/ui/inc/scuiasciiopt.hxx149
-rw-r--r--sc/source/ui/inc/scuiautofmt.hxx90
-rw-r--r--sc/source/ui/inc/scuiimoptdlg.hxx80
-rw-r--r--sc/source/ui/inc/scuitphfedit.hxx167
-rw-r--r--sc/source/ui/inc/select.hxx128
-rw-r--r--sc/source/ui/inc/selectionstate.hxx81
-rw-r--r--sc/source/ui/inc/seltrans.hxx83
-rw-r--r--sc/source/ui/inc/servobj.hxx79
-rw-r--r--sc/source/ui/inc/sharedocdlg.hrc44
-rw-r--r--sc/source/ui/inc/sharedocdlg.hxx79
-rw-r--r--sc/source/ui/inc/shtabdlg.hxx71
-rw-r--r--sc/source/ui/inc/simpref.hrc37
-rw-r--r--sc/source/ui/inc/simpref.hxx116
-rw-r--r--sc/source/ui/inc/sizedev.hxx57
-rw-r--r--sc/source/ui/inc/solveroptions.hrc47
-rw-r--r--sc/source/ui/inc/solveroptions.hxx123
-rw-r--r--sc/source/ui/inc/solverutil.hxx52
-rw-r--r--sc/source/ui/inc/solvrdlg.hrc46
-rw-r--r--sc/source/ui/inc/solvrdlg.hxx111
-rw-r--r--sc/source/ui/inc/sortdlg.hrc91
-rw-r--r--sc/source/ui/inc/sortdlg.hxx90
-rw-r--r--sc/source/ui/inc/spelldialog.hxx105
-rw-r--r--sc/source/ui/inc/spelleng.hxx171
-rw-r--r--sc/source/ui/inc/spellparam.hxx89
-rw-r--r--sc/source/ui/inc/strindlg.hxx68
-rw-r--r--sc/source/ui/inc/styledlg.hrc39
-rw-r--r--sc/source/ui/inc/styledlg.hxx61
-rw-r--r--sc/source/ui/inc/submenu.hrc68
-rw-r--r--sc/source/ui/inc/subtdlg.hrc64
-rw-r--r--sc/source/ui/inc/subtdlg.hxx55
-rw-r--r--sc/source/ui/inc/tabbgcolordlg.hxx81
-rw-r--r--sc/source/ui/inc/tabcont.hxx91
-rw-r--r--sc/source/ui/inc/tabopdlg.hrc50
-rw-r--r--sc/source/ui/inc/tabopdlg.hxx116
-rw-r--r--sc/source/ui/inc/tabpages.hxx84
-rw-r--r--sc/source/ui/inc/tabpopsh.hxx55
-rw-r--r--sc/source/ui/inc/tabsplit.hxx62
-rw-r--r--sc/source/ui/inc/tabview.hxx529
-rw-r--r--sc/source/ui/inc/tabvwsh.hxx431
-rw-r--r--sc/source/ui/inc/target.hxx54
-rw-r--r--sc/source/ui/inc/tbinsert.hrc32
-rw-r--r--sc/source/ui/inc/tbinsert.hxx90
-rw-r--r--sc/source/ui/inc/tbzoomsliderctrl.hxx80
-rw-r--r--sc/source/ui/inc/textdlgs.hxx74
-rw-r--r--sc/source/ui/inc/textimportoptions.hrc42
-rw-r--r--sc/source/ui/inc/textimportoptions.hxx79
-rw-r--r--sc/source/ui/inc/tpcalc.hxx104
-rw-r--r--sc/source/ui/inc/tpcompatibility.hxx64
-rw-r--r--sc/source/ui/inc/tpformula.hxx100
-rw-r--r--sc/source/ui/inc/tphf.hxx105
-rw-r--r--sc/source/ui/inc/tphfedit.hxx140
-rw-r--r--sc/source/ui/inc/tpprint.hxx58
-rw-r--r--sc/source/ui/inc/tpsort.hxx225
-rw-r--r--sc/source/ui/inc/tpstat.hxx68
-rw-r--r--sc/source/ui/inc/tpsubt.hxx190
-rw-r--r--sc/source/ui/inc/tptable.hxx118
-rw-r--r--sc/source/ui/inc/tpusrlst.hxx119
-rw-r--r--sc/source/ui/inc/tpview.hxx173
-rw-r--r--sc/source/ui/inc/transobj.hxx117
-rw-r--r--sc/source/ui/inc/ui_pch.hxx329
-rw-r--r--sc/source/ui/inc/uiitems.hxx373
-rw-r--r--sc/source/ui/inc/undobase.hxx173
-rw-r--r--sc/source/ui/inc/undoblk.hxx999
-rw-r--r--sc/source/ui/inc/undocell.hxx377
-rw-r--r--sc/source/ui/inc/undodat.hxx540
-rw-r--r--sc/source/ui/inc/undodraw.hxx65
-rw-r--r--sc/source/ui/inc/undoolk.hxx47
-rw-r--r--sc/source/ui/inc/undostyl.hxx119
-rw-r--r--sc/source/ui/inc/undotab.hxx523
-rw-r--r--sc/source/ui/inc/undoutil.hxx69
-rw-r--r--sc/source/ui/inc/validate.hrc88
-rw-r--r--sc/source/ui/inc/validate.hxx349
-rw-r--r--sc/source/ui/inc/viewdata.hxx570
-rw-r--r--sc/source/ui/inc/viewfunc.hxx381
-rw-r--r--sc/source/ui/inc/viewutil.hxx118
-rw-r--r--sc/source/ui/inc/warnbox.hxx76
-rw-r--r--sc/source/ui/miscdlgs/acredlin.cxx2137
-rw-r--r--sc/source/ui/miscdlgs/acredlin.src258
-rw-r--r--sc/source/ui/miscdlgs/anyrefdg.cxx1013
-rw-r--r--sc/source/ui/miscdlgs/autofmt.cxx569
-rw-r--r--sc/source/ui/miscdlgs/conflictsdlg.cxx861
-rw-r--r--sc/source/ui/miscdlgs/conflictsdlg.src109
-rw-r--r--sc/source/ui/miscdlgs/crdlg.cxx89
-rw-r--r--sc/source/ui/miscdlgs/crnrdlg.cxx1175
-rw-r--r--sc/source/ui/miscdlgs/datafdlg.cxx425
-rw-r--r--sc/source/ui/miscdlgs/delcldlg.cxx122
-rw-r--r--sc/source/ui/miscdlgs/delcodlg.cxx182
-rw-r--r--sc/source/ui/miscdlgs/filldlg.cxx377
-rw-r--r--sc/source/ui/miscdlgs/groupdlg.cxx85
-rw-r--r--sc/source/ui/miscdlgs/highred.cxx303
-rw-r--r--sc/source/ui/miscdlgs/highred.src133
-rw-r--r--sc/source/ui/miscdlgs/inscldlg.cxx122
-rw-r--r--sc/source/ui/miscdlgs/inscodlg.cxx374
-rw-r--r--sc/source/ui/miscdlgs/instbdlg.cxx435
-rw-r--r--sc/source/ui/miscdlgs/instbdlg.src184
-rw-r--r--sc/source/ui/miscdlgs/lbseldlg.cxx103
-rw-r--r--sc/source/ui/miscdlgs/linkarea.cxx368
-rw-r--r--sc/source/ui/miscdlgs/linkarea.src120
-rw-r--r--sc/source/ui/miscdlgs/makefile.mk126
-rw-r--r--sc/source/ui/miscdlgs/mtrindlg.cxx188
-rw-r--r--sc/source/ui/miscdlgs/mvtabdlg.cxx207
-rw-r--r--sc/source/ui/miscdlgs/namecrea.cxx81
-rw-r--r--sc/source/ui/miscdlgs/namepast.cxx135
-rw-r--r--sc/source/ui/miscdlgs/optsolver.cxx1068
-rw-r--r--sc/source/ui/miscdlgs/protectiondlg.cxx165
-rw-r--r--sc/source/ui/miscdlgs/protectiondlg.src127
-rw-r--r--sc/source/ui/miscdlgs/redcom.cxx187
-rw-r--r--sc/source/ui/miscdlgs/retypepassdlg.cxx547
-rw-r--r--sc/source/ui/miscdlgs/retypepassdlg.src313
-rw-r--r--sc/source/ui/miscdlgs/scuiautofmt.cxx479
-rw-r--r--sc/source/ui/miscdlgs/sharedocdlg.cxx238
-rw-r--r--sc/source/ui/miscdlgs/sharedocdlg.src110
-rw-r--r--sc/source/ui/miscdlgs/shtabdlg.cxx113
-rw-r--r--sc/source/ui/miscdlgs/simpref.cxx259
-rw-r--r--sc/source/ui/miscdlgs/solveroptions.cxx494
-rw-r--r--sc/source/ui/miscdlgs/solverutil.cxx231
-rw-r--r--sc/source/ui/miscdlgs/solvrdlg.cxx315
-rw-r--r--sc/source/ui/miscdlgs/strindlg.cxx109
-rw-r--r--sc/source/ui/miscdlgs/tabbgcolordlg.cxx201
-rw-r--r--sc/source/ui/miscdlgs/tabopdlg.cxx373
-rw-r--r--sc/source/ui/miscdlgs/textdlgs.cxx132
-rw-r--r--sc/source/ui/miscdlgs/warnbox.cxx93
-rw-r--r--sc/source/ui/namedlg/makefile.mk49
-rw-r--r--sc/source/ui/namedlg/namedlg.cxx651
-rw-r--r--sc/source/ui/navipi/content.cxx1517
-rw-r--r--sc/source/ui/navipi/makefile.mk55
-rw-r--r--sc/source/ui/navipi/navcitem.cxx129
-rw-r--r--sc/source/ui/navipi/navipi.cxx1508
-rw-r--r--sc/source/ui/navipi/navipi.hrc63
-rw-r--r--sc/source/ui/navipi/navipi.src414
-rw-r--r--sc/source/ui/navipi/scenwnd.cxx311
-rw-r--r--sc/source/ui/optdlg/makefile.mk67
-rw-r--r--sc/source/ui/optdlg/opredlin.cxx291
-rw-r--r--sc/source/ui/optdlg/tpcalc.cxx307
-rw-r--r--sc/source/ui/optdlg/tpcompatibility.cxx108
-rw-r--r--sc/source/ui/optdlg/tpformula.cxx294
-rw-r--r--sc/source/ui/optdlg/tpprint.cxx146
-rw-r--r--sc/source/ui/optdlg/tpusrlst.cxx829
-rw-r--r--sc/source/ui/optdlg/tpview.cxx747
-rw-r--r--sc/source/ui/pagedlg/areasdlg.cxx909
-rw-r--r--sc/source/ui/pagedlg/hfedtdlg.cxx187
-rw-r--r--sc/source/ui/pagedlg/hfedtdlg.hrc64
-rw-r--r--sc/source/ui/pagedlg/hfedtdlg.src829
-rw-r--r--sc/source/ui/pagedlg/makefile.mk72
-rw-r--r--sc/source/ui/pagedlg/pagedlg.hrc103
-rw-r--r--sc/source/ui/pagedlg/pagedlg.src416
-rw-r--r--sc/source/ui/pagedlg/scuitphfedit.cxx1002
-rw-r--r--sc/source/ui/pagedlg/tphf.cxx332
-rw-r--r--sc/source/ui/pagedlg/tphf.src64
-rw-r--r--sc/source/ui/pagedlg/tphfedit.cxx567
-rw-r--r--sc/source/ui/pagedlg/tptable.cxx572
-rw-r--r--sc/source/ui/src/attrdlg.src203
-rw-r--r--sc/source/ui/src/autofmt.src271
-rw-r--r--sc/source/ui/src/condfrmt.src398
-rw-r--r--sc/source/ui/src/crnrdlg.src166
-rw-r--r--sc/source/ui/src/datafdlg.src99
-rw-r--r--sc/source/ui/src/dbnamdlg.src198
-rw-r--r--sc/source/ui/src/filter.src820
-rw-r--r--sc/source/ui/src/globstr.src1829
-rw-r--r--sc/source/ui/src/hdrcont.src256
-rw-r--r--sc/source/ui/src/makefile.mk76
-rw-r--r--sc/source/ui/src/miscdlgs.src1463
-rw-r--r--sc/source/ui/src/namedlg.src165
-rw-r--r--sc/source/ui/src/opredlin.src136
-rw-r--r--sc/source/ui/src/optdlg.src865
-rw-r--r--sc/source/ui/src/optsolver.src540
-rw-r--r--sc/source/ui/src/popup.src544
-rw-r--r--sc/source/ui/src/pseudo.src62
-rw-r--r--sc/source/ui/src/sc.src49
-rw-r--r--sc/source/ui/src/scerrors.src170
-rw-r--r--sc/source/ui/src/scfuncs.src9043
-rw-r--r--sc/source/ui/src/scstring.src771
-rw-r--r--sc/source/ui/src/scwarngs.src83
-rw-r--r--sc/source/ui/src/simpref.src105
-rw-r--r--sc/source/ui/src/solveroptions.src189
-rw-r--r--sc/source/ui/src/solvrdlg.src135
-rw-r--r--sc/source/ui/src/sortdlg.src361
-rw-r--r--sc/source/ui/src/subtdlg.src291
-rw-r--r--sc/source/ui/src/tabopdlg.src142
-rw-r--r--sc/source/ui/src/textdlgs.src197
-rw-r--r--sc/source/ui/src/toolbox.src299
-rw-r--r--sc/source/ui/styleui/makefile.mk55
-rw-r--r--sc/source/ui/styleui/scstyles.src70
-rw-r--r--sc/source/ui/styleui/styledlg.cxx219
-rw-r--r--sc/source/ui/styleui/styledlg.src172
-rw-r--r--sc/source/ui/styleui/template.curbin0 -> 326 bytes
-rw-r--r--sc/source/ui/undo/areasave.cxx232
-rw-r--r--sc/source/ui/undo/makefile.mk83
-rw-r--r--sc/source/ui/undo/refundo.cxx216
-rw-r--r--sc/source/ui/undo/target.cxx48
-rw-r--r--sc/source/ui/undo/undobase.cxx541
-rw-r--r--sc/source/ui/undo/undoblk.cxx2277
-rw-r--r--sc/source/ui/undo/undoblk2.cxx217
-rw-r--r--sc/source/ui/undo/undoblk3.cxx2181
-rw-r--r--sc/source/ui/undo/undocell.cxx1147
-rw-r--r--sc/source/ui/undo/undodat.cxx2241
-rw-r--r--sc/source/ui/undo/undodraw.cxx271
-rw-r--r--sc/source/ui/undo/undoolk.cxx104
-rw-r--r--sc/source/ui/undo/undostyl.cxx313
-rw-r--r--sc/source/ui/undo/undotab.cxx1668
-rw-r--r--sc/source/ui/undo/undoutil.cxx136
-rw-r--r--sc/source/ui/unoobj/ChartRangeSelectionListener.cxx98
-rw-r--r--sc/source/ui/unoobj/addruno.cxx329
-rw-r--r--sc/source/ui/unoobj/afmtuno.cxx886
-rw-r--r--sc/source/ui/unoobj/appluno.cxx1087
-rw-r--r--sc/source/ui/unoobj/celllistsource.cxx452
-rw-r--r--sc/source/ui/unoobj/celllistsource.hxx178
-rw-r--r--sc/source/ui/unoobj/cellsuno.cxx9855
-rw-r--r--sc/source/ui/unoobj/cellvaluebinding.cxx666
-rw-r--r--sc/source/ui/unoobj/cellvaluebinding.hxx174
-rw-r--r--sc/source/ui/unoobj/chart2uno.cxx3865
-rw-r--r--sc/source/ui/unoobj/chartuno.cxx818
-rw-r--r--sc/source/ui/unoobj/confuno.cxx490
-rw-r--r--sc/source/ui/unoobj/convuno.cxx66
-rw-r--r--sc/source/ui/unoobj/cursuno.cxx512
-rw-r--r--sc/source/ui/unoobj/dapiuno.cxx3556
-rw-r--r--sc/source/ui/unoobj/datauno.cxx2373
-rw-r--r--sc/source/ui/unoobj/defltuno.cxx389
-rw-r--r--sc/source/ui/unoobj/detreg.cxx113
-rw-r--r--sc/source/ui/unoobj/dispuno.cxx417
-rw-r--r--sc/source/ui/unoobj/docuno.cxx3726
-rw-r--r--sc/source/ui/unoobj/drdefuno.cxx85
-rw-r--r--sc/source/ui/unoobj/editsrc.cxx375
-rw-r--r--sc/source/ui/unoobj/eventuno.cxx203
-rw-r--r--sc/source/ui/unoobj/fielduno.cxx1530
-rw-r--r--sc/source/ui/unoobj/filtuno.cxx314
-rw-r--r--sc/source/ui/unoobj/fmtuno.cxx1063
-rw-r--r--sc/source/ui/unoobj/forbiuno.cxx95
-rw-r--r--sc/source/ui/unoobj/funcuno.cxx746
-rw-r--r--sc/source/ui/unoobj/linkuno.cxx1823
-rw-r--r--sc/source/ui/unoobj/listenercalls.cxx91
-rw-r--r--sc/source/ui/unoobj/makefile.mk117
-rw-r--r--sc/source/ui/unoobj/miscuno.cxx330
-rw-r--r--sc/source/ui/unoobj/nameuno.cxx1186
-rw-r--r--sc/source/ui/unoobj/notesuno.cxx735
-rw-r--r--sc/source/ui/unoobj/optuno.cxx238
-rw-r--r--sc/source/ui/unoobj/pageuno.cxx81
-rw-r--r--sc/source/ui/unoobj/scdetect.cxx903
-rw-r--r--sc/source/ui/unoobj/scdetect.hxx98
-rw-r--r--sc/source/ui/unoobj/servuno.cxx614
-rw-r--r--sc/source/ui/unoobj/shapeuno.cxx1527
-rw-r--r--sc/source/ui/unoobj/srchuno.cxx280
-rw-r--r--sc/source/ui/unoobj/styleuno.cxx2137
-rw-r--r--sc/source/ui/unoobj/targuno.cxx317
-rw-r--r--sc/source/ui/unoobj/textuno.cxx1147
-rw-r--r--sc/source/ui/unoobj/tokenuno.cxx471
-rw-r--r--sc/source/ui/unoobj/unodoc.cxx69
-rw-r--r--sc/source/ui/unoobj/unoreflist.cxx75
-rw-r--r--sc/source/ui/unoobj/viewuno.cxx2376
-rw-r--r--sc/source/ui/unoobj/warnpassword.cxx97
-rw-r--r--sc/source/ui/vba/excelvbahelper.cxx437
-rw-r--r--sc/source/ui/vba/excelvbahelper.hxx83
-rw-r--r--sc/source/ui/vba/helperdecl.hxx55
-rw-r--r--sc/source/ui/vba/makefile.mk136
-rw-r--r--sc/source/ui/vba/service.cxx137
-rw-r--r--sc/source/ui/vba/testvba/README37
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/ApplicationRunTest.xlsbin0 -> 25088 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/AutoFilter.xlsbin0 -> 54272 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/CalcFont.xlsbin0 -> 73728 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/CalcZoom.xlsbin0 -> 62976 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/FinancialFuncTests.xlsbin0 -> 71168 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/FinancialFuncs.xlsbin0 -> 47104 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/MiscOperatorTests.xlsbin0 -> 66048 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/MiscRangeTests.xlsbin0 -> 126976 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/PageBreaks.xlsbin0 -> 63488 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/Ranges-2.xlsbin0 -> 2209280 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/Ranges-3.xlsbin0 -> 54784 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/Ranges.xlsbin0 -> 2236416 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/Shapes.xlsbin0 -> 74240 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/StrConv-test.xlsbin0 -> 65024 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/Template.xlsbin0 -> 65024 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/TestAddress.xlsbin0 -> 84480 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/TestCalc_Rangetest.xlsbin0 -> 67584 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/TestCalc_Rangetest2.xlsbin0 -> 71680 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/TestIntersection.xlsbin0 -> 81408 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/TestUnion.xlsbin0 -> 72192 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/VariantTest.xlsbin0 -> 68608 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/Window.xlsbin0 -> 87040 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/bytearraystring.xlsbin0 -> 58880 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/dateserial.xlsbin0 -> 57344 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/datevalue.xlsbin0 -> 61952 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/format.xlsbin0 -> 102400 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/AutoFilter.log20
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/MiscRangeTests.log45
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/Ranges-2.log68
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/Ranges-3.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/Ranges.log280
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/TestAddress.log62
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/TestCalc_Rangetest.log60
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/excel/TestCalc_Rangetest2.log64
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/format.log36
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/AutoFilter.log20
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/CalcFont.log17
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/CalcZoom.log18
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/FinancialFuncTests.log31
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/MiscOperatorTests.log30
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/MiscRangeTests.log45
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/PageBreaks.log10
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/Ranges-2.log68
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/Ranges-3.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/Ranges.log280
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/Shapes.log77
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/StrConv-test.log9
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/Template.log14
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/TestAddress.log67
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/TestCalc_Rangetest.log60
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/TestCalc_Rangetest2.log65
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/TestIntersection.log26
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/TestUnion.log17
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/VariantTest.log47
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/Window.log46
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/bytearraystring.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/dateserial.log9
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/datevalue.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/format.log36
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/pagesetup.log77
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/partition.log11
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/range-4.log16
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/replace.log14
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/stringplusdouble.log62
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/unix/window2.log41
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/AutoFilter.log20
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/CalcFont.log17
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/MiscOperatorTests.log29
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/MiscRangeTests.log45
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/PageBreaks.log10
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/Ranges-2.log68
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/Ranges-3.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/Ranges.log280
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/Shapes.log77
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/StrConv-test.log9
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/Template.log14
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/TestAddress.log67
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/TestCalc_Rangetest.log60
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/TestCalc_Rangetest2.log65
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/TestIntersection.log26
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/TestUnion.log17
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/VariantTest.log47
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/Window.log46
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/bytearraystring.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/dateserial.log9
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/datevalue.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/format.log36
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/pagesetup.log87
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/partition.log11
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/range-4.log16
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/replace.log14
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/stringplusdouble.log62
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/logs/win/window2.log41
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/notwork/error.xlsbin0 -> 38400 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/notwork/imagecontrols.xlsbin0 -> 2415104 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/notwork/keyword.xlsbin0 -> 50688 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/notwork/objectmodule.xlsbin0 -> 62464 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/notwork/stringtodouble.odsbin0 -> 13260 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/partition.xlsbin0 -> 65536 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/range-4.xlsbin0 -> 2192384 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/replace.xlsbin0 -> 64512 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/stringplusdouble.xlsbin0 -> 75264 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments-ooo-build/window2.xlsbin0 -> 72192 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/ApplicationRunTest.xlsbin0 -> 25088 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/AutoFilter.xlsbin0 -> 54272 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/CalcFont.xlsbin0 -> 73728 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/FinancialFuncs.xlsbin0 -> 47104 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/MiscRangeTests.xlsbin0 -> 126976 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/PageBreaks.xlsbin0 -> 63488 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/Ranges-2.xlsbin0 -> 2209280 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/Ranges-3.xlsbin0 -> 54784 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/Ranges.xlsbin0 -> 2236416 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/Shapes.xlsbin0 -> 74240 bytes
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/StrConv-test.xlsbin0 -> 65024 bytes
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/Template.xlsbin0 -> 65024 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/TestAddress.xlsbin0 -> 84480 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/TestCalc_Rangetest.xlsbin0 -> 67584 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/TestCalc_Rangetest2.xlsbin0 -> 71680 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/TestIntersection.xlsbin0 -> 81408 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/TestUnion.xlsbin0 -> 72192 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/Window.xlsbin0 -> 87040 bytes
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/bytearraystring.xlsbin0 -> 58880 bytes
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/dateserial.xlsbin0 -> 57344 bytes
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/datevalue.xlsbin0 -> 61952 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/format.xlsbin0 -> 102400 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/AutoFilter.log20
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/MiscRangeTests.log45
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/Ranges-2.log68
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/Ranges-3.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/Ranges.log280
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/TestAddress.log62
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/TestCalc_Rangetest.log60
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/excel/TestCalc_Rangetest2.log64
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/AutoFilter.log20
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/CalcFont.log17
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/MiscRangeTests.log45
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/PageBreaks.log10
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/Ranges-2.log68
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/Ranges-3.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/Ranges.log280
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/Shapes.log77
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/StrConv-test.log9
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/Template.log14
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/TestAddress.log67
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/TestCalc_Rangetest.log60
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/TestCalc_Rangetest2.log65
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/TestIntersection.log26
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/TestUnion.log17
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/Window.log46
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/bytearraystring.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/dateserial.log9
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/datevalue.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/format.log36
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/pagesetup.log77
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/partition.log11
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/range-4.log16
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/replace.log14
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/stringplusdouble.log62
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/unix/window2.log41
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/AutoFilter.log20
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/MiscRangeTests.log45
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/Ranges-2.log68
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/Ranges-3.log8
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/Ranges.log280
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/Shapes.log77
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/TestAddress.log62
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/TestCalc_Rangetest.log60
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/TestCalc_Rangetest2.log65
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/pagesetup.log87
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/logs/win/replace.log14
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/pagesetup.xlsbin0 -> 72704 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/partition.xlsbin0 -> 65536 bytes
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/range-4.xlsbin0 -> 2192384 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/replace.xlsbin0 -> 64512 bytes
-rw-r--r--sc/source/ui/vba/testvba/TestDocuments/stringplusdouble.xlsbin0 -> 75264 bytes
-rwxr-xr-xsc/source/ui/vba/testvba/TestDocuments/window2.xlsbin0 -> 72192 bytes
-rw-r--r--sc/source/ui/vba/testvba/launchTest.pl45
-rw-r--r--sc/source/ui/vba/testvba/makefile.mk69
-rwxr-xr-xsc/source/ui/vba/testvba/runTests.pl121
-rw-r--r--sc/source/ui/vba/testvba/testResult.pl171
-rwxr-xr-xsc/source/ui/vba/testvba/testResults.pl163
-rwxr-xr-xsc/source/ui/vba/testvba/testclientbin0 -> 50595 bytes
-rw-r--r--sc/source/ui/vba/testvba/testvba.cxx312
-rwxr-xr-xsc/source/ui/vba/testvba/timestampsClean.pl73
-rw-r--r--sc/source/ui/vba/vbaapplication.cxx1813
-rw-r--r--sc/source/ui/vba/vbaapplication.hxx147
-rw-r--r--sc/source/ui/vba/vbaassistant.cxx135
-rw-r--r--sc/source/ui/vba/vbaassistant.hxx73
-rw-r--r--sc/source/ui/vba/vbaaxes.cxx205
-rw-r--r--sc/source/ui/vba/vbaaxes.hxx54
-rw-r--r--sc/source/ui/vba/vbaaxis.cxx672
-rw-r--r--sc/source/ui/vba/vbaaxis.hxx101
-rw-r--r--sc/source/ui/vba/vbaaxistitle.cxx60
-rw-r--r--sc/source/ui/vba/vbaaxistitle.hxx47
-rw-r--r--sc/source/ui/vba/vbaborders.cxx577
-rw-r--r--sc/source/ui/vba/vbaborders.hxx78
-rw-r--r--sc/source/ui/vba/vbacharacters.cxx138
-rw-r--r--sc/source/ui/vba/vbacharacters.hxx77
-rw-r--r--sc/source/ui/vba/vbachart.cxx1255
-rw-r--r--sc/source/ui/vba/vbachart.hxx117
-rw-r--r--sc/source/ui/vba/vbachartobject.cxx213
-rw-r--r--sc/source/ui/vba/vbachartobject.hxx83
-rw-r--r--sc/source/ui/vba/vbachartobjects.cxx196
-rw-r--r--sc/source/ui/vba/vbachartobjects.hxx78
-rw-r--r--sc/source/ui/vba/vbacharts.cxx122
-rw-r--r--sc/source/ui/vba/vbacharts.hxx63
-rw-r--r--sc/source/ui/vba/vbacharttitle.cxx60
-rw-r--r--sc/source/ui/vba/vbacharttitle.hxx47
-rw-r--r--sc/source/ui/vba/vbacomment.cxx252
-rw-r--r--sc/source/ui/vba/vbacomment.hxx83
-rw-r--r--sc/source/ui/vba/vbacomments.cxx119
-rw-r--r--sc/source/ui/vba/vbacomments.hxx67
-rw-r--r--sc/source/ui/vba/vbacommentshape.cxx49
-rw-r--r--sc/source/ui/vba/vbacommentshape.hxx49
-rw-r--r--sc/source/ui/vba/vbacondition.cxx177
-rw-r--r--sc/source/ui/vba/vbacondition.hxx57
-rw-r--r--sc/source/ui/vba/vbadialog.cxx114
-rw-r--r--sc/source/ui/vba/vbadialog.hxx56
-rw-r--r--sc/source/ui/vba/vbadialogs.cxx78
-rw-r--r--sc/source/ui/vba/vbadialogs.hxx59
-rw-r--r--sc/source/ui/vba/vbaeventshelper.cxx764
-rw-r--r--sc/source/ui/vba/vbaeventshelper.hxx91
-rw-r--r--sc/source/ui/vba/vbafiledialog.cxx186
-rw-r--r--sc/source/ui/vba/vbafiledialog.hxx63
-rw-r--r--sc/source/ui/vba/vbafiledialogselecteditems.cxx157
-rw-r--r--sc/source/ui/vba/vbafiledialogselecteditems.hxx90
-rw-r--r--sc/source/ui/vba/vbafilesearch.cxx245
-rw-r--r--sc/source/ui/vba/vbafilesearch.hxx80
-rw-r--r--sc/source/ui/vba/vbafont.cxx504
-rw-r--r--sc/source/ui/vba/vbafont.hxx92
-rw-r--r--sc/source/ui/vba/vbaformat.cxx845
-rw-r--r--sc/source/ui/vba/vbaformat.hxx111
-rw-r--r--sc/source/ui/vba/vbaformatcondition.cxx179
-rw-r--r--sc/source/ui/vba/vbaformatcondition.hxx73
-rw-r--r--sc/source/ui/vba/vbaformatconditions.cxx303
-rw-r--r--sc/source/ui/vba/vbaformatconditions.hxx68
-rw-r--r--sc/source/ui/vba/vbafoundfiles.cxx146
-rw-r--r--sc/source/ui/vba/vbafoundfiles.hxx91
-rw-r--r--sc/source/ui/vba/vbaglobals.cxx313
-rw-r--r--sc/source/ui/vba/vbaglobals.hxx99
-rw-r--r--sc/source/ui/vba/vbahelper.cxx761
-rw-r--r--sc/source/ui/vba/vbahyperlink.cxx249
-rw-r--r--sc/source/ui/vba/vbahyperlink.hxx90
-rw-r--r--sc/source/ui/vba/vbahyperlinks.cxx296
-rw-r--r--sc/source/ui/vba/vbahyperlinks.hxx153
-rw-r--r--sc/source/ui/vba/vbainterior.cxx419
-rw-r--r--sc/source/ui/vba/vbainterior.hxx90
-rw-r--r--sc/source/ui/vba/vbamenu.cxx87
-rw-r--r--sc/source/ui/vba/vbamenu.hxx57
-rw-r--r--sc/source/ui/vba/vbamenubar.cxx69
-rw-r--r--sc/source/ui/vba/vbamenubar.hxx53
-rw-r--r--sc/source/ui/vba/vbamenubars.cxx140
-rw-r--r--sc/source/ui/vba/vbamenubars.hxx64
-rw-r--r--sc/source/ui/vba/vbamenuitem.cxx85
-rw-r--r--sc/source/ui/vba/vbamenuitem.hxx58
-rw-r--r--sc/source/ui/vba/vbamenuitems.cxx153
-rw-r--r--sc/source/ui/vba/vbamenuitems.hxx63
-rw-r--r--sc/source/ui/vba/vbamenus.cxx139
-rw-r--r--sc/source/ui/vba/vbamenus.hxx63
-rw-r--r--sc/source/ui/vba/vbaname.cxx234
-rw-r--r--sc/source/ui/vba/vbaname.hxx90
-rw-r--r--sc/source/ui/vba/vbanames.cxx262
-rw-r--r--sc/source/ui/vba/vbanames.hxx84
-rw-r--r--sc/source/ui/vba/vbaoleobject.cxx167
-rw-r--r--sc/source/ui/vba/vbaoleobject.hxx69
-rw-r--r--sc/source/ui/vba/vbaoleobjects.cxx188
-rw-r--r--sc/source/ui/vba/vbaoleobjects.hxx59
-rw-r--r--sc/source/ui/vba/vbaoutline.cxx68
-rw-r--r--sc/source/ui/vba/vbaoutline.hxx55
-rw-r--r--sc/source/ui/vba/vbapagebreak.cxx174
-rw-r--r--sc/source/ui/vba/vbapagebreak.hxx106
-rw-r--r--sc/source/ui/vba/vbapagebreaks.cxx321
-rw-r--r--sc/source/ui/vba/vbapagebreaks.hxx100
-rw-r--r--sc/source/ui/vba/vbapagesetup.cxx734
-rw-r--r--sc/source/ui/vba/vbapagesetup.hxx95
-rw-r--r--sc/source/ui/vba/vbapalette.cxx116
-rw-r--r--sc/source/ui/vba/vbapalette.hxx56
-rw-r--r--sc/source/ui/vba/vbapane.cxx209
-rw-r--r--sc/source/ui/vba/vbapane.hxx70
-rw-r--r--sc/source/ui/vba/vbapivotcache.cxx73
-rw-r--r--sc/source/ui/vba/vbapivotcache.hxx56
-rw-r--r--sc/source/ui/vba/vbapivottable.cxx66
-rw-r--r--sc/source/ui/vba/vbapivottable.hxx52
-rw-r--r--sc/source/ui/vba/vbapivottables.cxx97
-rw-r--r--sc/source/ui/vba/vbapivottables.hxx68
-rw-r--r--sc/source/ui/vba/vbapropvalue.cxx48
-rw-r--r--sc/source/ui/vba/vbapropvalue.hxx60
-rw-r--r--sc/source/ui/vba/vbaquerytable.cxx90
-rw-r--r--sc/source/ui/vba/vbaquerytable.hxx62
-rw-r--r--sc/source/ui/vba/vbarange.cxx6239
-rw-r--r--sc/source/ui/vba/vbarange.hxx312
-rw-r--r--sc/source/ui/vba/vbaseriescollection.cxx82
-rw-r--r--sc/source/ui/vba/vbaseriescollection.hxx57
-rw-r--r--sc/source/ui/vba/vbasheetobject.cxx520
-rw-r--r--sc/source/ui/vba/vbasheetobject.hxx223
-rw-r--r--sc/source/ui/vba/vbasheetobjects.cxx537
-rw-r--r--sc/source/ui/vba/vbasheetobjects.hxx116
-rw-r--r--sc/source/ui/vba/vbastyle.cxx189
-rw-r--r--sc/source/ui/vba/vbastyle.hxx99
-rw-r--r--sc/source/ui/vba/vbastyles.cxx185
-rw-r--r--sc/source/ui/vba/vbastyles.hxx60
-rw-r--r--sc/source/ui/vba/vbatextboxshape.cxx69
-rw-r--r--sc/source/ui/vba/vbatextboxshape.hxx53
-rw-r--r--sc/source/ui/vba/vbatextframe.cxx81
-rw-r--r--sc/source/ui/vba/vbatextframe.hxx52
-rw-r--r--sc/source/ui/vba/vbatitle.hxx166
-rw-r--r--sc/source/ui/vba/vbavalidation.cxx346
-rw-r--r--sc/source/ui/vba/vbavalidation.hxx74
-rw-r--r--sc/source/ui/vba/vbawindow.cxx861
-rw-r--r--sc/source/ui/vba/vbawindow.hxx126
-rw-r--r--sc/source/ui/vba/vbawindows.cxx262
-rw-r--r--sc/source/ui/vba/vbawindows.hxx66
-rw-r--r--sc/source/ui/vba/vbaworkbook.cxx435
-rw-r--r--sc/source/ui/vba/vbaworkbook.hxx90
-rw-r--r--sc/source/ui/vba/vbaworkbooks.cxx370
-rw-r--r--sc/source/ui/vba/vbaworkbooks.hxx74
-rw-r--r--sc/source/ui/vba/vbaworksheet.cxx1112
-rw-r--r--sc/source/ui/vba/vbaworksheet.hxx177
-rw-r--r--sc/source/ui/vba/vbaworksheets.cxx504
-rw-r--r--sc/source/ui/vba/vbaworksheets.hxx86
-rw-r--r--sc/source/ui/vba/vbawsfunction.cxx322
-rw-r--r--sc/source/ui/vba/vbawsfunction.hxx59
-rw-r--r--sc/source/ui/view/auditsh.cxx157
-rw-r--r--sc/source/ui/view/cellmergeoption.cxx87
-rw-r--r--sc/source/ui/view/cellsh.cxx1007
-rw-r--r--sc/source/ui/view/cellsh1.cxx2198
-rw-r--r--sc/source/ui/view/cellsh2.cxx1392
-rw-r--r--sc/source/ui/view/cellsh3.cxx932
-rw-r--r--sc/source/ui/view/cellsh4.cxx456
-rw-r--r--sc/source/ui/view/colrowba.cxx419
-rw-r--r--sc/source/ui/view/dbfunc.cxx515
-rw-r--r--sc/source/ui/view/dbfunc2.cxx79
-rw-r--r--sc/source/ui/view/dbfunc3.cxx2374
-rw-r--r--sc/source/ui/view/dbfunc4.cxx104
-rw-r--r--sc/source/ui/view/drawattr.cxx84
-rw-r--r--sc/source/ui/view/drawutil.cxx118
-rw-r--r--sc/source/ui/view/drawvie2.cxx64
-rw-r--r--sc/source/ui/view/drawvie3.cxx184
-rw-r--r--sc/source/ui/view/drawvie4.cxx358
-rw-r--r--sc/source/ui/view/drawview.cxx810
-rw-r--r--sc/source/ui/view/editsh.cxx1202
-rw-r--r--sc/source/ui/view/formatsh.cxx2274
-rw-r--r--sc/source/ui/view/galwrap.cxx81
-rw-r--r--sc/source/ui/view/gridmerg.cxx176
-rw-r--r--sc/source/ui/view/gridwin.cxx5852
-rw-r--r--sc/source/ui/view/gridwin2.cxx1075
-rw-r--r--sc/source/ui/view/gridwin3.cxx445
-rw-r--r--sc/source/ui/view/gridwin4.cxx1941
-rw-r--r--sc/source/ui/view/gridwin5.cxx440
-rw-r--r--sc/source/ui/view/hdrcont.cxx1039
-rw-r--r--sc/source/ui/view/hintwin.cxx111
-rw-r--r--sc/source/ui/view/imapwrap.cxx78
-rw-r--r--sc/source/ui/view/invmerge.cxx194
-rw-r--r--sc/source/ui/view/makefile.mk174
-rw-r--r--sc/source/ui/view/notemark.cxx202
-rw-r--r--sc/source/ui/view/olinewin.cxx1047
-rw-r--r--sc/source/ui/view/olkact.cxx284
-rw-r--r--sc/source/ui/view/output.cxx2443
-rw-r--r--sc/source/ui/view/output2.cxx3887
-rw-r--r--sc/source/ui/view/output3.cxx278
-rw-r--r--sc/source/ui/view/overlayobject.cxx107
-rw-r--r--sc/source/ui/view/pfuncache.cxx200
-rw-r--r--sc/source/ui/view/pgbrksh.cxx87
-rw-r--r--sc/source/ui/view/pivotsh.cxx202
-rw-r--r--sc/source/ui/view/preview.cxx1616
-rw-r--r--sc/source/ui/view/prevloc.cxx756
-rw-r--r--sc/source/ui/view/prevwsh.cxx1236
-rw-r--r--sc/source/ui/view/prevwsh2.cxx359
-rw-r--r--sc/source/ui/view/printfun.cxx3204
-rw-r--r--sc/source/ui/view/reffact.cxx437
-rw-r--r--sc/source/ui/view/scextopt.cxx227
-rw-r--r--sc/source/ui/view/select.cxx871
-rw-r--r--sc/source/ui/view/selectionstate.cxx91
-rw-r--r--sc/source/ui/view/spelldialog.cxx281
-rw-r--r--sc/source/ui/view/spelleng.cxx460
-rw-r--r--sc/source/ui/view/tabcont.cxx665
-rw-r--r--sc/source/ui/view/tabpopsh.cxx75
-rw-r--r--sc/source/ui/view/tabsplit.cxx107
-rw-r--r--sc/source/ui/view/tabview.cxx2457
-rw-r--r--sc/source/ui/view/tabview2.cxx1406
-rw-r--r--sc/source/ui/view/tabview3.cxx2641
-rw-r--r--sc/source/ui/view/tabview4.cxx567
-rw-r--r--sc/source/ui/view/tabview5.cxx690
-rw-r--r--sc/source/ui/view/tabvwsh.cxx120
-rw-r--r--sc/source/ui/view/tabvwsh2.cxx482
-rw-r--r--sc/source/ui/view/tabvwsh3.cxx1237
-rw-r--r--sc/source/ui/view/tabvwsh4.cxx2028
-rw-r--r--sc/source/ui/view/tabvwsh5.cxx430
-rw-r--r--sc/source/ui/view/tabvwsh8.cxx106
-rw-r--r--sc/source/ui/view/tabvwsh9.cxx297
-rw-r--r--sc/source/ui/view/tabvwsha.cxx894
-rw-r--r--sc/source/ui/view/tabvwshb.cxx502
-rw-r--r--sc/source/ui/view/tabvwshc.cxx335
-rw-r--r--sc/source/ui/view/tabvwshd.cxx102
-rw-r--r--sc/source/ui/view/tabvwshe.cxx343
-rw-r--r--sc/source/ui/view/tabvwshf.cxx954
-rw-r--r--sc/source/ui/view/tabvwshg.cxx142
-rw-r--r--sc/source/ui/view/tabvwshh.cxx295
-rw-r--r--sc/source/ui/view/viewdata.cxx3118
-rw-r--r--sc/source/ui/view/viewfun2.cxx3159
-rw-r--r--sc/source/ui/view/viewfun3.cxx1947
-rw-r--r--sc/source/ui/view/viewfun4.cxx830
-rw-r--r--sc/source/ui/view/viewfun5.cxx732
-rw-r--r--sc/source/ui/view/viewfun6.cxx363
-rw-r--r--sc/source/ui/view/viewfun7.cxx456
-rw-r--r--sc/source/ui/view/viewfunc.cxx3035
-rw-r--r--sc/source/ui/view/viewutil.cxx642
-rw-r--r--sc/source/ui/view/waitoff.cxx72
-rw-r--r--sc/uiconfig/layout/delzip1
-rw-r--r--sc/uiconfig/layout/insert-sheet.xml57
-rw-r--r--sc/uiconfig/layout/makefile.mk59
-rw-r--r--sc/uiconfig/layout/move-copy-sheet.xml21
-rw-r--r--sc/uiconfig/layout/sort-options.xml40
-rw-r--r--sc/uiconfig/layout/string-input.xml16
-rw-r--r--sc/uiconfig/scalc/menubar/menubar.xml456
-rw-r--r--sc/uiconfig/scalc/statusbar/statusbar.xml13
-rw-r--r--sc/uiconfig/scalc/toolbar/alignmentbar.xml11
-rw-r--r--sc/uiconfig/scalc/toolbar/arrowshapes.xml34
-rw-r--r--sc/uiconfig/scalc/toolbar/basicshapes.xml29
-rw-r--r--sc/uiconfig/scalc/toolbar/calloutshapes.xml11
-rw-r--r--sc/uiconfig/scalc/toolbar/colorbar.xml15
-rw-r--r--sc/uiconfig/scalc/toolbar/drawbar.xml34
-rw-r--r--sc/uiconfig/scalc/toolbar/drawobjectbar.xml30
-rw-r--r--sc/uiconfig/scalc/toolbar/extrusionobjectbar.xml16
-rw-r--r--sc/uiconfig/scalc/toolbar/findbar.xml8
-rw-r--r--sc/uiconfig/scalc/toolbar/flowchartshapes.xml36
-rw-r--r--sc/uiconfig/scalc/toolbar/fontworkobjectbar.xml11
-rw-r--r--sc/uiconfig/scalc/toolbar/fontworkshapetype.xml38
-rw-r--r--sc/uiconfig/scalc/toolbar/formatobjectbar.xml55
-rw-r--r--sc/uiconfig/scalc/toolbar/formcontrols.xml29
-rw-r--r--sc/uiconfig/scalc/toolbar/formdesign.xml32
-rw-r--r--sc/uiconfig/scalc/toolbar/formsfilterbar.xml7
-rw-r--r--sc/uiconfig/scalc/toolbar/formsnavigationbar.xml33
-rw-r--r--sc/uiconfig/scalc/toolbar/formtextobjectbar.xml28
-rw-r--r--sc/uiconfig/scalc/toolbar/fullscreenbar.xml5
-rw-r--r--sc/uiconfig/scalc/toolbar/graffilterbar.xml17
-rw-r--r--sc/uiconfig/scalc/toolbar/graphicobjectbar.xml32
-rw-r--r--sc/uiconfig/scalc/toolbar/insertbar.xml13
-rw-r--r--sc/uiconfig/scalc/toolbar/insertcellsbar.xml8
-rw-r--r--sc/uiconfig/scalc/toolbar/mediaobjectbar.xml7
-rw-r--r--sc/uiconfig/scalc/toolbar/moreformcontrols.xml20
-rw-r--r--sc/uiconfig/scalc/toolbar/previewbar.xml22
-rw-r--r--sc/uiconfig/scalc/toolbar/standardbar.xml44
-rw-r--r--sc/uiconfig/scalc/toolbar/starshapes.xml17
-rw-r--r--sc/uiconfig/scalc/toolbar/symbolshapes.xml24
-rw-r--r--sc/uiconfig/scalc/toolbar/textobjectbar.xml35
-rw-r--r--sc/uiconfig/scalc/toolbar/toolbar.xml23
-rw-r--r--sc/uiconfig/scalc/toolbar/viewerbar.xml18
-rw-r--r--sc/util/createExtPackage.pl67
-rw-r--r--sc/util/hidother.src504
-rw-r--r--sc/util/makefile.mk345
-rw-r--r--sc/util/makefile.pmk32
-rw-r--r--sc/util/sc.flt136
-rw-r--r--sc/util/sc.r777
-rw-r--r--sc/util/scfilt.map9
-rw-r--r--sc/util/scui.map6
-rw-r--r--sc/workben/addin.cxx597
-rw-r--r--sc/workben/addin.hxx104
-rw-r--r--sc/workben/celltrans/keywords_utf16.txtbin0 -> 1830 bytes
-rwxr-xr-xsc/workben/celltrans/parse.py209
-rw-r--r--sc/workben/makefile.mk96
-rw-r--r--sc/workben/map.idl37
-rw-r--r--sc/workben/result.cxx135
-rw-r--r--sc/workben/result.hxx77
-rw-r--r--sc/workben/test.cxx1939
-rw-r--r--sc/workben/testadd.idl67
-rw-r--r--sc/xml/AccessibleEditableTextPara_HeaderFooter.xml29
-rw-r--r--sc/xml/AccessibleEditableTextPara_PreviewCell.xml28
-rw-r--r--sc/xml/AccessibleEditableTextPara_PreviewNote.xml28
-rw-r--r--sc/xml/ScAccessibleCell.xml29
-rw-r--r--sc/xml/ScAccessibleCsvCell.xml27
-rw-r--r--sc/xml/ScAccessibleCsvGrid.xml28
-rw-r--r--sc/xml/ScAccessibleCsvRuler.xml27
-rw-r--r--sc/xml/ScAccessibleDocument.xml27
-rw-r--r--sc/xml/ScAccessibleDocumentPagePreview.xml26
-rw-r--r--sc/xml/ScAccessiblePageHeader.xml26
-rw-r--r--sc/xml/ScAccessiblePageHeaderArea.xml26
-rw-r--r--sc/xml/ScAccessiblePreviewCell.xml27
-rw-r--r--sc/xml/ScAccessiblePreviewHeaderCell.xml27
-rw-r--r--sc/xml/ScAccessiblePreviewTable.xml26
-rw-r--r--sc/xml/ScAccessibleSpreadsheet.xml27
-rw-r--r--sc/xml/ScAnnotationObj.xml202
-rw-r--r--sc/xml/ScAnnotationShapeObj.xml202
-rw-r--r--sc/xml/ScAnnotationsObj.xml294
-rw-r--r--sc/xml/ScAreaLinkObj.xml107
-rw-r--r--sc/xml/ScAreaLinksObj.xml107
-rw-r--r--sc/xml/ScAutoFormatFieldObj.xml134
-rw-r--r--sc/xml/ScAutoFormatObj.xml134
-rw-r--r--sc/xml/ScAutoFormatsObj.xml134
-rw-r--r--sc/xml/ScCellCursorObj.xml199
-rw-r--r--sc/xml/ScCellFieldObj.xml204
-rw-r--r--sc/xml/ScCellFieldsObj.xml204
-rw-r--r--sc/xml/ScCellFormatsEnumeration.xml316
-rw-r--r--sc/xml/ScCellFormatsObj.xml316
-rw-r--r--sc/xml/ScCellObj.xml316
-rw-r--r--sc/xml/ScCellRangeObj.xml316
-rw-r--r--sc/xml/ScCellRangesObj.xml316
-rw-r--r--sc/xml/ScCellSearchObj.xml102
-rw-r--r--sc/xml/ScCellTextCursor.xml120
-rw-r--r--sc/xml/ScCellsEnumeration.xml316
-rw-r--r--sc/xml/ScCellsObj.xml316
-rw-r--r--sc/xml/ScChartObj.xml110
-rw-r--r--sc/xml/ScChartsObj.xml110
-rw-r--r--sc/xml/ScConsolidationDescriptor.xml218
-rw-r--r--sc/xml/ScDDELinkObj.xml107
-rw-r--r--sc/xml/ScDDELinksObj.xml107
-rw-r--r--sc/xml/ScDataPilotFieldGroupItemObj.xml122
-rw-r--r--sc/xml/ScDataPilotFieldGroupObj.xml122
-rw-r--r--sc/xml/ScDataPilotFieldGroupsObj.xml122
-rw-r--r--sc/xml/ScDataPilotFieldObj.xml122
-rw-r--r--sc/xml/ScDataPilotFieldsObj.xml122
-rw-r--r--sc/xml/ScDataPilotItemObj.xml122
-rw-r--r--sc/xml/ScDataPilotItemsObj.xml122
-rw-r--r--sc/xml/ScDataPilotTableObj.xml123
-rw-r--r--sc/xml/ScDataPilotTablesObj.xml122
-rw-r--r--sc/xml/ScDatabaseRangeObj.xml218
-rw-r--r--sc/xml/ScDatabaseRangesObj.xml218
-rw-r--r--sc/xml/ScDocumentConfiguration.xml294
-rw-r--r--sc/xml/ScDrawPageObj.xml294
-rw-r--r--sc/xml/ScDrawPagesObj.xml294
-rw-r--r--sc/xml/ScFilterDescriptorBase.xml218
-rw-r--r--sc/xml/ScFunctionListObj.xml113
-rw-r--r--sc/xml/ScHeaderFieldObj.xml204
-rw-r--r--sc/xml/ScHeaderFieldsObj.xml204
-rw-r--r--sc/xml/ScHeaderFooterContentObj.xml120
-rw-r--r--sc/xml/ScHeaderFooterTextCursor.xml120
-rw-r--r--sc/xml/ScHeaderFooterTextObj.xml120
-rw-r--r--sc/xml/ScIndexEnumeration_CellAnnotationsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_CellAreaLinksEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_DDELinksEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_DataPilotFieldsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_DataPilotItemsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_DataPilotTablesEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_DatabaseRangesEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_FunctionDescriptionEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_LabelRangesEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_NamedRangesEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_ScenariosEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_SheetCellRangesEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_SheetLinksEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_SpreadsheetViewPanesEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_SpreadsheetsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_SubTotalFieldsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_TableAutoFormatEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_TableChartsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_TableColumnsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_TableConditionalEntryEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_TableRowsEnumeration.xml60
-rw-r--r--sc/xml/ScIndexEnumeration_TextFieldEnumeration.xml60
-rw-r--r--sc/xml/ScLabelRangeObj.xml216
-rw-r--r--sc/xml/ScLabelRangesObj.xml216
-rw-r--r--sc/xml/ScModelObj.xml294
-rw-r--r--sc/xml/ScNamedRangeObj.xml216
-rw-r--r--sc/xml/ScNamedRangesObj.xml216
-rw-r--r--sc/xml/ScPageObj.xml294
-rw-r--r--sc/xml/ScRecentFunctionsObj.xml113
-rw-r--r--sc/xml/ScScenariosObj.xml294
-rw-r--r--sc/xml/ScShapeObj.xml33
-rw-r--r--sc/xml/ScSheetLinkObj.xml107
-rw-r--r--sc/xml/ScSheetLinksObj.xml107
-rw-r--r--sc/xml/ScSpreadsheetSettings.xml113
-rw-r--r--sc/xml/ScSpreadsheetSettingsObj.xml295
-rw-r--r--sc/xml/ScStyleFamiliesObj.xml134
-rw-r--r--sc/xml/ScStyleFamilyObj.xml133
-rw-r--r--sc/xml/ScStyleObj.xml133
-rw-r--r--sc/xml/ScSubTotalDescriptorBase.xml218
-rw-r--r--sc/xml/ScSubTotalFieldObj.xml218
-rw-r--r--sc/xml/ScTabViewObj.xml249
-rw-r--r--sc/xml/ScTableColumnObj.xml316
-rw-r--r--sc/xml/ScTableColumnsObj.xml294
-rw-r--r--sc/xml/ScTableConditionalEntry.xml72
-rw-r--r--sc/xml/ScTableConditionalFormat.xml72
-rw-r--r--sc/xml/ScTableRowObj.xml316
-rw-r--r--sc/xml/ScTableRowsObj.xml294
-rw-r--r--sc/xml/ScTableSheetObj.xml316
-rw-r--r--sc/xml/ScTableSheetsObj.xml294
-rw-r--r--sc/xml/ScTableValidationObj.xml72
-rw-r--r--sc/xml/ScUniqueCellFormatsEnumeration.xml316
-rw-r--r--sc/xml/ScUniqueCellFormatsObj.xml316
-rw-r--r--sc/xml/ScViewPaneObj.xml249
-rw-r--r--sc/xml/ScXMLExport.xml115
-rw-r--r--sc/xml/ScXMLImport.xml115
-rw-r--r--scaddins/prj/build.lst4
-rw-r--r--scaddins/prj/d.lst9
-rw-r--r--scaddins/source/analysis/analysis.cxx1314
-rw-r--r--scaddins/source/analysis/analysis.hrc330
-rw-r--r--scaddins/source/analysis/analysis.hxx243
-rw-r--r--scaddins/source/analysis/analysis.src3604
-rw-r--r--scaddins/source/analysis/analysis_deffuncnames.src874
-rw-r--r--scaddins/source/analysis/analysis_funcnames.src548
-rw-r--r--scaddins/source/analysis/analysisadd.idl599
-rw-r--r--scaddins/source/analysis/analysisdefs.hxx57
-rw-r--r--scaddins/source/analysis/analysishelper.cxx2990
-rw-r--r--scaddins/source/analysis/analysishelper.hxx1107
-rw-r--r--scaddins/source/analysis/bessel.cxx502
-rw-r--r--scaddins/source/analysis/bessel.hxx62
-rw-r--r--scaddins/source/analysis/financial.cxx663
-rw-r--r--scaddins/source/analysis/makefile.mk135
-rw-r--r--scaddins/source/datefunc/dateadd.idl118
-rw-r--r--scaddins/source/datefunc/datefunc.cxx1000
-rw-r--r--scaddins/source/datefunc/datefunc.def7
-rw-r--r--scaddins/source/datefunc/datefunc.hrc75
-rw-r--r--scaddins/source/datefunc/datefunc.hxx430
-rw-r--r--scaddins/source/datefunc/datefunc.src348
-rw-r--r--scaddins/source/datefunc/makefile.mk121
-rw-r--r--scaddins/source/datefunc/msdev.mk115
-rw-r--r--sccomp/prj/build.lst4
-rw-r--r--sccomp/prj/d.lst9
-rw-r--r--sccomp/source/solver/makefile.mk77
-rw-r--r--sccomp/source/solver/solver.cxx659
-rw-r--r--sccomp/source/solver/solver.hrc45
-rw-r--r--sccomp/source/solver/solver.hxx129
-rw-r--r--sccomp/source/solver/solver.src76
-rw-r--r--scp2/inc/macros.inc611
-rw-r--r--scp2/macros/macro.pl303
-rw-r--r--scp2/macros/makefile.mk48
-rw-r--r--scp2/prj/build.lst30
-rw-r--r--scp2/prj/d.lst27
-rw-r--r--scp2/source/accessories/file_font_accessories.scp901
-rw-r--r--scp2/source/accessories/file_gallery_accessories.scp139
-rw-r--r--scp2/source/accessories/file_samples_accessories.scp81
-rw-r--r--scp2/source/accessories/file_templates_accessories.scp272
-rw-r--r--scp2/source/accessories/makefile.mk86
-rw-r--r--scp2/source/accessories/module_accessories.scp40
-rw-r--r--scp2/source/accessories/module_accessories.ulf33
-rw-r--r--scp2/source/accessories/module_font_accessories.scp205
-rw-r--r--scp2/source/accessories/module_font_accessories.ulf33
-rw-r--r--scp2/source/accessories/module_gallery_accessories.scp60
-rw-r--r--scp2/source/accessories/module_gallery_accessories.ulf33
-rw-r--r--scp2/source/accessories/module_samples_accessories.scp98
-rw-r--r--scp2/source/accessories/module_samples_accessories.ulf706
-rw-r--r--scp2/source/accessories/module_templates_accessories.scp99
-rw-r--r--scp2/source/accessories/module_templates_accessories.ulf701
-rw-r--r--scp2/source/activex/file_activex.scp63
-rw-r--r--scp2/source/activex/makefile.mk56
-rw-r--r--scp2/source/activex/module_activex.scp42
-rw-r--r--scp2/source/activex/module_activex.ulf35
-rw-r--r--scp2/source/base/file_base.scp87
-rw-r--r--scp2/source/base/folderitem_base.scp42
-rw-r--r--scp2/source/base/folderitem_base.ulf30
-rw-r--r--scp2/source/base/makefile.mk62
-rw-r--r--scp2/source/base/module_base.scp86
-rw-r--r--scp2/source/base/module_base.ulf47
-rwxr-xr-xscp2/source/base/registryitem_base.scp163
-rw-r--r--scp2/source/base/registryitem_base.ulf29
-rw-r--r--scp2/source/binfilter/file_binfilter.scp74
-rw-r--r--scp2/source/binfilter/makefile.mk52
-rw-r--r--scp2/source/binfilter/module_binfilter.scp77
-rw-r--r--scp2/source/binfilter/module_binfilter.ulf32
-rw-r--r--scp2/source/binfilter/registryitem_binfilter.scp931
-rw-r--r--scp2/source/binfilter/registryitem_binfilter.ulf53
-rw-r--r--scp2/source/calc/file_calc.scp94
-rw-r--r--scp2/source/calc/folderitem_calc.scp42
-rw-r--r--scp2/source/calc/folderitem_calc.ulf32
-rw-r--r--scp2/source/calc/makefile.mk61
-rw-r--r--scp2/source/calc/module_calc.scp92
-rw-r--r--scp2/source/calc/module_calc.ulf50
-rw-r--r--scp2/source/calc/registryitem_calc.scp1179
-rw-r--r--scp2/source/calc/registryitem_calc.ulf54
-rw-r--r--scp2/source/canvas/cairocanvas.scp41
-rw-r--r--scp2/source/canvas/canvascommons.scp34
-rw-r--r--scp2/source/canvas/directxcanvas.scp36
-rw-r--r--scp2/source/canvas/makefile.mk58
-rwxr-xr-xscp2/source/canvas/mtfrenderer.scp40
-rw-r--r--scp2/source/canvas/vclcanvas.scp30
-rw-r--r--scp2/source/crashrep/file_crashrep.scp64
-rw-r--r--scp2/source/crashrep/makefile.mk50
-rw-r--r--scp2/source/draw/file_draw.scp64
-rw-r--r--scp2/source/draw/folderitem_draw.scp42
-rw-r--r--scp2/source/draw/folderitem_draw.ulf34
-rw-r--r--scp2/source/draw/makefile.mk58
-rw-r--r--scp2/source/draw/module_draw.scp71
-rw-r--r--scp2/source/draw/module_draw.ulf47
-rw-r--r--scp2/source/draw/registryitem_draw.scp984
-rw-r--r--scp2/source/draw/registryitem_draw.ulf42
-rw-r--r--scp2/source/extensions/directory_extensions.scp271
-rw-r--r--scp2/source/extensions/file_extensions.scp309
-rw-r--r--scp2/source/extensions/makefile.mk62
-rw-r--r--scp2/source/extensions/module_extensions.scp346
-rw-r--r--scp2/source/extensions/module_extensions.ulf160
-rw-r--r--scp2/source/extensions/module_extensions_lightproof.scp58
-rw-r--r--scp2/source/extensions/module_extensions_lightproof.ulf695
-rw-r--r--scp2/source/extensions/module_extensions_sun_templates.scp58
-rw-r--r--scp2/source/extensions/module_extensions_sun_templates.ulf695
-rw-r--r--scp2/source/gnome/file_gnome.scp69
-rw-r--r--scp2/source/gnome/makefile.mk71
-rw-r--r--scp2/source/gnome/module_gnome.scp58
-rw-r--r--scp2/source/gnome/module_gnome.ulf33
-rw-r--r--scp2/source/graphicfilter/file_graphicfilter.scp41
-rw-r--r--scp2/source/graphicfilter/makefile.mk50
-rw-r--r--scp2/source/graphicfilter/module_graphicfilter.scp38
-rw-r--r--scp2/source/graphicfilter/module_graphicfilter.ulf119
-rw-r--r--scp2/source/impress/file_impress.scp90
-rw-r--r--scp2/source/impress/folderitem_impress.scp42
-rw-r--r--scp2/source/impress/folderitem_impress.ulf34
-rw-r--r--scp2/source/impress/makefile.mk65
-rw-r--r--scp2/source/impress/module_impress.scp81
-rw-r--r--scp2/source/impress/module_impress.ulf48
-rw-r--r--scp2/source/impress/module_ogltrans.scp63
-rw-r--r--scp2/source/impress/module_ogltrans.ulf34
-rw-r--r--scp2/source/impress/registryitem_impress.scp1041
-rw-r--r--scp2/source/impress/registryitem_impress.ulf60
-rw-r--r--scp2/source/javafilter/file_javafilter.scp81
-rw-r--r--scp2/source/javafilter/makefile.mk59
-rw-r--r--scp2/source/javafilter/module_javafilter.scp123
-rw-r--r--scp2/source/javafilter/module_javafilter.ulf68
-rw-r--r--scp2/source/javafilter/registryitem_javafilter.scp437
-rw-r--r--scp2/source/javafilter/registryitem_javafilter.ulf59
-rw-r--r--scp2/source/kde/file_kde.scp49
-rw-r--r--scp2/source/kde/makefile.mk62
-rw-r--r--scp2/source/kde/module_kde.scp50
-rw-r--r--scp2/source/kde/module_kde.ulf33
-rw-r--r--scp2/source/layout/layout.scp62
-rw-r--r--scp2/source/layout/makefile.mk50
-rw-r--r--scp2/source/math/file_math.scp80
-rw-r--r--scp2/source/math/folderitem_math.scp42
-rw-r--r--scp2/source/math/folderitem_math.ulf31
-rw-r--r--scp2/source/math/makefile.mk57
-rw-r--r--scp2/source/math/module_math.scp71
-rw-r--r--scp2/source/math/module_math.ulf47
-rw-r--r--scp2/source/math/registryitem_math.scp691
-rw-r--r--scp2/source/math/registryitem_math.ulf36
-rwxr-xr-xscp2/source/mkopenwith.btm52
-rw-r--r--scp2/source/onlineupdate/file_onlineupdate.scp46
-rw-r--r--scp2/source/onlineupdate/makefile.mk51
-rw-r--r--scp2/source/onlineupdate/module_onlineupdate.scp38
-rw-r--r--scp2/source/onlineupdate/module_onlineupdate.ulf33
-rw-r--r--scp2/source/ooo/common_brand.scp1537
-rw-r--r--scp2/source/ooo/common_brand_readme.scp42
-rw-r--r--scp2/source/ooo/datacarrier_ooo.scp34
-rw-r--r--scp2/source/ooo/directory_ooo.scp1535
-rw-r--r--scp2/source/ooo/directory_ooo.ulf54
-rwxr-xr-xscp2/source/ooo/directory_ooo_macosx.scp45
-rw-r--r--scp2/source/ooo/file_extra_ooo.scp443
-rw-r--r--scp2/source/ooo/file_font_ooo.scp162
-rw-r--r--scp2/source/ooo/file_improvement.scp41
-rw-r--r--scp2/source/ooo/file_jre_ooo.scp49
-rw-r--r--scp2/source/ooo/file_library_ooo.scp1888
-rw-r--r--scp2/source/ooo/file_ooo.scp2237
-rw-r--r--scp2/source/ooo/file_resource_ooo.scp140
-rw-r--r--scp2/source/ooo/folder_ooo.scp33
-rw-r--r--scp2/source/ooo/folderitem_ooo.scp58
-rw-r--r--scp2/source/ooo/folderitem_ooo.ulf35
-rw-r--r--scp2/source/ooo/installation_ooo.scp50
-rw-r--r--scp2/source/ooo/makefile.mk332
-rwxr-xr-xscp2/source/ooo/mergemodules_ooo.scp56
-rw-r--r--scp2/source/ooo/module_headless.scp27
-rw-r--r--scp2/source/ooo/module_headless.ulf32
-rw-r--r--scp2/source/ooo/module_help_template.scp46
-rw-r--r--scp2/source/ooo/module_helppack.scp42
-rw-r--r--scp2/source/ooo/module_helppack.ulf848
-rw-r--r--scp2/source/ooo/module_hidden_ooo.scp824
-rw-r--r--scp2/source/ooo/module_improvement.scp42
-rw-r--r--scp2/source/ooo/module_java.scp100
-rw-r--r--scp2/source/ooo/module_java.ulf32
-rwxr-xr-xscp2/source/ooo/module_lang_template.scp125
-rw-r--r--scp2/source/ooo/module_langpack.scp38
-rw-r--r--scp2/source/ooo/module_langpack.ulf848
-rw-r--r--scp2/source/ooo/module_ooo.scp453
-rw-r--r--scp2/source/ooo/module_ooo.ulf266
-rw-r--r--scp2/source/ooo/module_systemint.scp50
-rw-r--r--scp2/source/ooo/module_systemint.ulf32
-rw-r--r--scp2/source/ooo/ooo_brand.scp55
-rw-r--r--scp2/source/ooo/profile_ooo.scp52
-rw-r--r--scp2/source/ooo/profileitem_ooo.scp463
-rw-r--r--scp2/source/ooo/registryitem_ooo.scp677
-rw-r--r--scp2/source/ooo/registryitem_ooo.ulf41
-rw-r--r--scp2/source/ooo/scpaction_ooo.scp317
-rw-r--r--scp2/source/ooo/shortcut_ooo.scp113
-rw-r--r--scp2/source/ooo/starregistry_ooo.scp34
-rwxr-xr-xscp2/source/ooo/ure.scp1407
-rwxr-xr-xscp2/source/ooo/ure_into_ooo.scp67
-rwxr-xr-xscp2/source/ooo/ure_standalone.scp109
-rw-r--r--scp2/source/ooo/vc_redist.scp52
-rwxr-xr-xscp2/source/ooo/windowscustomaction_ooo.scp506
-rw-r--r--scp2/source/python/file_python.scp324
-rw-r--r--scp2/source/python/makefile.mk63
-rw-r--r--scp2/source/python/module_python.scp39
-rw-r--r--scp2/source/python/module_python.ulf32
-rw-r--r--scp2/source/python/module_python_mailmerge.scp38
-rwxr-xr-xscp2/source/python/module_python_mailmerge.ulf32
-rw-r--r--scp2/source/python/profileitem_python.scp94
-rw-r--r--scp2/source/quickstart/file_quickstart.scp35
-rw-r--r--scp2/source/quickstart/folderitem_quickstart.scp36
-rw-r--r--scp2/source/quickstart/makefile.mk53
-rw-r--r--scp2/source/quickstart/module_quickstart.scp36
-rw-r--r--scp2/source/quickstart/module_quickstart.ulf35
-rw-r--r--scp2/source/quickstart/registryitem_quickstart.scp36
-rw-r--r--scp2/source/sdkoo/makefile.mk46
-rw-r--r--scp2/source/sdkoo/module_sdkoo.scp37
-rw-r--r--scp2/source/sdkoo/module_sdkoo.ulf32
-rw-r--r--scp2/source/sdkoo/sdkoo.scp210
-rwxr-xr-xscp2/source/supported_extensions.txt80
-rwxr-xr-xscp2/source/templates/makefile.mk56
-rw-r--r--scp2/source/templates/module_helppack.sct38
-rw-r--r--scp2/source/templates/module_helppack_root.sct37
-rwxr-xr-xscp2/source/templates/module_langpack.sct34
-rw-r--r--scp2/source/templates/module_langpack_accessories_samples.sct64
-rw-r--r--scp2/source/templates/module_langpack_accessories_samples_root.sct55
-rw-r--r--scp2/source/templates/module_langpack_accessories_templates.sct42
-rw-r--r--scp2/source/templates/module_langpack_accessories_templates_root.sct39
-rwxr-xr-xscp2/source/templates/module_langpack_base.sct37
-rw-r--r--scp2/source/templates/module_langpack_binfilter.sct38
-rwxr-xr-xscp2/source/templates/module_langpack_calc.sct37
-rwxr-xr-xscp2/source/templates/module_langpack_draw.sct37
-rw-r--r--scp2/source/templates/module_langpack_extensions_lightproof.sct55
-rw-r--r--scp2/source/templates/module_langpack_extensions_templates.sct55
-rwxr-xr-xscp2/source/templates/module_langpack_impress.sct37
-rwxr-xr-xscp2/source/templates/module_langpack_math.sct37
-rwxr-xr-xscp2/source/templates/module_langpack_onlineupdate.sct37
-rwxr-xr-xscp2/source/templates/module_langpack_root.sct72
-rwxr-xr-xscp2/source/templates/module_langpack_writer.sct37
-rwxr-xr-xscp2/source/templates/modules.pl185
-rw-r--r--scp2/source/testtool/file_testtool.scp78
-rw-r--r--scp2/source/testtool/makefile.mk50
-rw-r--r--scp2/source/testtool/module_testtool.scp38
-rw-r--r--scp2/source/testtool/module_testtool.ulf32
-rwxr-xr-xscp2/source/winexplorerext/file_winexplorerext.scp112
-rwxr-xr-xscp2/source/winexplorerext/makefile.mk61
-rwxr-xr-xscp2/source/winexplorerext/module_winexplorerext.scp57
-rw-r--r--scp2/source/winexplorerext/module_winexplorerext.ulf35
-rw-r--r--scp2/source/winexplorerext/registryitem_winexplorerext.scp230
-rw-r--r--scp2/source/writer/file_writer.scp101
-rw-r--r--scp2/source/writer/folderitem_writer.scp42
-rw-r--r--scp2/source/writer/folderitem_writer.ulf35
-rw-r--r--scp2/source/writer/makefile.mk58
-rw-r--r--scp2/source/writer/module_writer.scp97
-rw-r--r--scp2/source/writer/module_writer.ulf50
-rw-r--r--scp2/source/writer/registryitem_writer.scp1565
-rw-r--r--scp2/source/writer/registryitem_writer.ulf66
-rw-r--r--scp2/source/xsltfilter/file_xsltfilter.scp99
-rw-r--r--scp2/source/xsltfilter/makefile.mk51
-rw-r--r--scp2/source/xsltfilter/module_xsltfilter.scp52
-rw-r--r--scp2/source/xsltfilter/module_xsltfilter.ulf35
-rw-r--r--scp2/util/makefile.mk421
-rw-r--r--sd/inc/CustomAnimationCloner.hxx45
-rw-r--r--sd/inc/CustomAnimationEffect.hxx479
-rw-r--r--sd/inc/CustomAnimationPreset.hxx153
-rw-r--r--sd/inc/EffectMigration.hxx86
-rw-r--r--sd/inc/FactoryIds.hxx53
-rw-r--r--sd/inc/Outliner.hxx555
-rw-r--r--sd/inc/OutlinerIterator.hxx372
-rw-r--r--sd/inc/SdShapeTypes.hxx84
-rw-r--r--sd/inc/TransitionPreset.hxx93
-rw-r--r--sd/inc/animations.hxx33
-rw-r--r--sd/inc/anmdef.hxx43
-rw-r--r--sd/inc/anminfo.hxx91
-rwxr-xr-xsd/inc/app.hrc463
-rw-r--r--sd/inc/app.hxx31
-rw-r--r--sd/inc/cusshow.hxx81
-rw-r--r--sd/inc/diadef.h44
-rw-r--r--sd/inc/drawdoc.hxx694
-rw-r--r--sd/inc/eetext.hxx36
-rw-r--r--sd/inc/fadedef.h46
-rwxr-xr-xsd/inc/glob.hrc158
-rw-r--r--sd/inc/glob.hxx101
-rw-r--r--sd/inc/helper/simplereferencecomponent.hxx118
-rw-r--r--sd/inc/helpids.h283
-rw-r--r--sd/inc/imapinfo.hxx73
-rw-r--r--sd/inc/makefile.mk48
-rw-r--r--sd/inc/misc.hxx38
-rw-r--r--sd/inc/misc/scopelock.hxx61
-rw-r--r--sd/inc/movedef.hxx44
-rw-r--r--sd/inc/pch/precompiled_sd.cxx31
-rw-r--r--sd/inc/pch/precompiled_sd.hxx917
-rw-r--r--sd/inc/pglink.hxx65
-rw-r--r--sd/inc/pres.hxx143
-rw-r--r--sd/inc/prlayout.hxx58
-rw-r--r--sd/inc/resltn.hxx54
-rw-r--r--sd/inc/sd_primitivetypes2d.hxx50
-rw-r--r--sd/inc/sdabstdlg.hxx227
-rw-r--r--sd/inc/sdattr.hrc245
-rw-r--r--sd/inc/sdattr.hxx175
-rw-r--r--sd/inc/sdcgmfilter.hxx53
-rw-r--r--sd/inc/sddll.hxx81
-rw-r--r--sd/inc/sddllapi.h43
-rw-r--r--sd/inc/sdenumdef.hxx40
-rw-r--r--sd/inc/sderror.hxx68
-rw-r--r--sd/inc/sdfilter.hxx82
-rw-r--r--sd/inc/sdgrffilter.hxx59
-rw-r--r--sd/inc/sdhtmlfilter.hxx57
-rw-r--r--sd/inc/sdiocmpt.hxx78
-rw-r--r--sd/inc/sdmod.hxx220
-rw-r--r--sd/inc/sdobjfac.hxx61
-rw-r--r--sd/inc/sdpage.hxx412
-rw-r--r--sd/inc/sdpptwrp.hxx59
-rw-r--r--sd/inc/sdresid.hxx43
-rw-r--r--sd/inc/sduiks.hrc73
-rw-r--r--sd/inc/sdundo.hxx56
-rw-r--r--sd/inc/sdxmlwrp.hxx66
-rw-r--r--sd/inc/shapelist.hxx91
-rw-r--r--sd/inc/stlfamily.hxx129
-rw-r--r--sd/inc/stlpool.hxx154
-rw-r--r--sd/inc/stlsheet.hxx163
-rw-r--r--sd/inc/strmname.h54
-rw-r--r--sd/inc/textapi.hxx72
-rw-r--r--sd/inc/undo/undofactory.hxx53
-rw-r--r--sd/inc/undo/undomanager.hxx84
-rw-r--r--sd/inc/undo/undoobjects.hxx205
-rw-r--r--sd/inc/undoanim.hxx97
-rw-r--r--sd/prj/build.lst48
-rwxr-xr-xsd/prj/d.lst57
-rw-r--r--sd/prj/struct.txt54
-rw-r--r--sd/qa/unoapi/Test.java51
-rw-r--r--sd/qa/unoapi/knownissues.xcl56
-rw-r--r--sd/qa/unoapi/makefile.mk48
-rw-r--r--sd/qa/unoapi/sd.sce23
-rw-r--r--sd/res/buttons/glas-blue.zipbin0 -> 22010 bytes
-rw-r--r--sd/res/buttons/glas-green.zipbin0 -> 25032 bytes
-rw-r--r--sd/res/buttons/glas-red.zipbin0 -> 24325 bytes
-rw-r--r--sd/res/buttons/round-gorilla.zipbin0 -> 19208 bytes
-rw-r--r--sd/res/buttons/round-white.zipbin0 -> 10533 bytes
-rw-r--r--sd/res/buttons/simple.zipbin0 -> 4046 bytes
-rw-r--r--sd/res/buttons/square-blue.zipbin0 -> 15123 bytes
-rw-r--r--sd/res/buttons/square-gray.zipbin0 -> 8919 bytes
-rw-r--r--sd/res/buttons/square-green.zipbin0 -> 15750 bytes
-rw-r--r--sd/res/buttons/square-red.zipbin0 -> 15319 bytes
-rw-r--r--sd/res/buttons/square-yellow.zipbin0 -> 15185 bytes
-rw-r--r--sd/res/webview/common.inc110
-rw-r--r--sd/res/webview/common.pl48
-rw-r--r--sd/res/webview/edit.asp9
-rw-r--r--sd/res/webview/edit.pl18
-rw-r--r--sd/res/webview/editpic.asp58
-rw-r--r--sd/res/webview/editpic.pl40
-rw-r--r--sd/res/webview/index.pl17
-rw-r--r--sd/res/webview/poll.asp36
-rw-r--r--sd/res/webview/poll.pl32
-rw-r--r--sd/res/webview/savepic.asp39
-rw-r--r--sd/res/webview/savepic.pl41
-rw-r--r--sd/res/webview/show.asp42
-rw-r--r--sd/res/webview/show.pl39
-rw-r--r--sd/res/webview/webview.asp28
-rw-r--r--sd/res/webview/webview.pl21
-rw-r--r--sd/sdi/SlideSorterController.sdi327
-rw-r--r--sd/sdi/ToolPanelViewShell.sdi307
-rwxr-xr-xsd/sdi/ViewShellBase.sdi357
-rw-r--r--sd/sdi/_docsh.sdi84
-rwxr-xr-xsd/sdi/_drvwsh.sdi2493
-rw-r--r--sd/sdi/app.sdi84
-rw-r--r--sd/sdi/docshell.sdi38
-rw-r--r--sd/sdi/drbezob.sdi64
-rw-r--r--sd/sdi/drgrfob.sdi121
-rwxr-xr-xsd/sdi/drtxtob.sdi212
-rw-r--r--sd/sdi/drviewsh.sdi237
-rw-r--r--sd/sdi/grdocsh.sdi38
-rw-r--r--sd/sdi/grviewsh.sdi90
-rwxr-xr-xsd/sdi/makefile.mk97
-rw-r--r--sd/sdi/mediaob.sdi8
-rwxr-xr-xsd/sdi/outlnvsh.sdi532
-rw-r--r--sd/sdi/sdgslots.sdi105
-rw-r--r--sd/sdi/sdnew.sdi77
-rwxr-xr-xsd/sdi/sdraw.sdi6877
-rw-r--r--sd/sdi/sdslots.hrc33
-rwxr-xr-xsd/sdi/sdslots.sdi108
-rw-r--r--sd/sdi/tables.sdi153
-rw-r--r--sd/source/core/CustomAnimationCloner.cxx343
-rw-r--r--sd/source/core/CustomAnimationEffect.cxx3835
-rw-r--r--sd/source/core/CustomAnimationPreset.cxx673
-rw-r--r--sd/source/core/EffectMigration.cxx1345
-rw-r--r--sd/source/core/PageListWatcher.cxx226
-rw-r--r--sd/source/core/PageListWatcher.hxx102
-rw-r--r--sd/source/core/TransitionPreset.cxx258
-rw-r--r--sd/source/core/anminfo.cxx155
-rw-r--r--sd/source/core/annotations/Annotation.cxx447
-rw-r--r--sd/source/core/annotations/AnnotationAccess.cxx61
-rw-r--r--sd/source/core/annotations/AnnotationEnumeration.cxx95
-rw-r--r--sd/source/core/annotations/makefile.mk49
-rw-r--r--sd/source/core/cusshow.cxx138
-rw-r--r--sd/source/core/drawdoc.cxx1078
-rw-r--r--sd/source/core/drawdoc2.cxx1624
-rw-r--r--sd/source/core/drawdoc3.cxx2058
-rw-r--r--sd/source/core/drawdoc4.cxx1509
-rw-r--r--sd/source/core/drawdoc_animations.cxx67
-rwxr-xr-xsd/source/core/glob.src426
-rw-r--r--sd/source/core/makefile.mk78
-rw-r--r--sd/source/core/pglink.cxx147
-rw-r--r--sd/source/core/sdattr.cxx156
-rw-r--r--sd/source/core/sdiocmpt.cxx139
-rw-r--r--sd/source/core/sdobjfac.cxx81
-rw-r--r--sd/source/core/sdpage.cxx3151
-rw-r--r--sd/source/core/sdpage2.cxx647
-rw-r--r--sd/source/core/sdpage_animations.cxx164
-rw-r--r--sd/source/core/shapelist.cxx216
-rw-r--r--sd/source/core/stlfamily.cxx604
-rw-r--r--sd/source/core/stlpool.cxx1444
-rw-r--r--sd/source/core/stlsheet.cxx1449
-rw-r--r--sd/source/core/text/makefile.mk48
-rw-r--r--sd/source/core/text/textapi.cxx299
-rw-r--r--sd/source/core/typemap.cxx138
-rw-r--r--sd/source/core/undo/makefile.mk50
-rw-r--r--sd/source/core/undo/undofactory.cxx68
-rw-r--r--sd/source/core/undo/undomanager.cxx112
-rw-r--r--sd/source/core/undo/undoobjects.cxx450
-rw-r--r--sd/source/core/undoanim.cxx299
-rw-r--r--sd/source/filter/cgm/makefile.mk43
-rw-r--r--sd/source/filter/cgm/sdcgmfilter.cxx162
-rw-r--r--sd/source/filter/eppt/eppt.cxx1637
-rw-r--r--sd/source/filter/eppt/eppt.hxx306
-rw-r--r--sd/source/filter/eppt/epptbase.hxx443
-rw-r--r--sd/source/filter/eppt/epptdef.hxx266
-rw-r--r--sd/source/filter/eppt/epptooxml.hxx165
-rw-r--r--sd/source/filter/eppt/epptso.cxx3901
-rw-r--r--sd/source/filter/eppt/escherex.cxx307
-rw-r--r--sd/source/filter/eppt/escherex.hxx80
-rw-r--r--sd/source/filter/eppt/grouptable.hxx86
-rw-r--r--sd/source/filter/eppt/makefile.mk57
-rw-r--r--sd/source/filter/eppt/pptexanimations.cxx2226
-rw-r--r--sd/source/filter/eppt/pptexanimations.hxx147
-rw-r--r--sd/source/filter/eppt/pptexsoundcollection.cxx225
-rw-r--r--sd/source/filter/eppt/pptexsoundcollection.hxx84
-rw-r--r--sd/source/filter/eppt/pptx-epptbase.cxx1010
-rw-r--r--sd/source/filter/eppt/pptx-epptooxml.cxx2079
-rw-r--r--sd/source/filter/eppt/pptx-grouptable.cxx142
-rw-r--r--sd/source/filter/eppt/pptx-stylesheet.cxx514
-rw-r--r--sd/source/filter/eppt/pptx-text.cxx1479
-rw-r--r--sd/source/filter/eppt/text.hxx270
-rw-r--r--sd/source/filter/grf/makefile.mk44
-rw-r--r--sd/source/filter/grf/sdgrffilter.cxx561
-rw-r--r--sd/source/filter/html/HtmlOptionsDialog.cxx290
-rw-r--r--sd/source/filter/html/buttonset.cxx311
-rw-r--r--sd/source/filter/html/buttonset.hxx56
-rw-r--r--sd/source/filter/html/htmlattr.cxx105
-rw-r--r--sd/source/filter/html/htmlattr.hxx54
-rw-r--r--sd/source/filter/html/htmlex.cxx3392
-rw-r--r--sd/source/filter/html/htmlex.hxx240
-rw-r--r--sd/source/filter/html/makefile.mk68
-rw-r--r--sd/source/filter/html/pubdlg.cxx1756
-rw-r--r--sd/source/filter/html/pubdlg.src817
-rw-r--r--sd/source/filter/html/sdhtmlfilter.cxx89
-rw-r--r--sd/source/filter/makefile.mk55
-rw-r--r--sd/source/filter/ppt/makefile.mk57
-rw-r--r--sd/source/filter/ppt/ppt97animations.cxx802
-rw-r--r--sd/source/filter/ppt/ppt97animations.hxx162
-rw-r--r--sd/source/filter/ppt/pptanimations.hxx562
-rw-r--r--sd/source/filter/ppt/pptatom.cpp122
-rw-r--r--sd/source/filter/ppt/pptatom.hxx144
-rw-r--r--sd/source/filter/ppt/pptin.cxx2765
-rw-r--r--sd/source/filter/ppt/pptin.hxx108
-rw-r--r--sd/source/filter/ppt/pptinanimations.cxx3892
-rw-r--r--sd/source/filter/ppt/pptinanimations.hxx134
-rw-r--r--sd/source/filter/ppt/propread.cxx736
-rw-r--r--sd/source/filter/ppt/propread.hxx193
-rw-r--r--sd/source/filter/sdfilter.cxx135
-rw-r--r--sd/source/filter/sdpptwrp.cxx202
-rw-r--r--sd/source/filter/xml/makefile.mk47
-rw-r--r--sd/source/filter/xml/sdtransform.cxx379
-rw-r--r--sd/source/filter/xml/sdxmlwrp.cxx1116
-rw-r--r--sd/source/helper/makefile.mk47
-rw-r--r--sd/source/helper/simplereferencecomponent.cxx141
-rw-r--r--sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx845
-rw-r--r--sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx745
-rw-r--r--sd/source/ui/accessibility/AccessibleOutlineEditSource.cxx226
-rw-r--r--sd/source/ui/accessibility/AccessibleOutlineView.cxx285
-rw-r--r--sd/source/ui/accessibility/AccessiblePageShape.cxx375
-rw-r--r--sd/source/ui/accessibility/AccessiblePresentationGraphicShape.cxx130
-rw-r--r--sd/source/ui/accessibility/AccessiblePresentationOLEShape.cxx151
-rw-r--r--sd/source/ui/accessibility/AccessiblePresentationShape.cxx183
-rw-r--r--sd/source/ui/accessibility/AccessibleScrollPanel.cxx154
-rw-r--r--sd/source/ui/accessibility/AccessibleSlideSorterObject.cxx583
-rw-r--r--sd/source/ui/accessibility/AccessibleSlideSorterView.cxx1093
-rw-r--r--sd/source/ui/accessibility/AccessibleTreeNode.cxx725
-rw-r--r--sd/source/ui/accessibility/AccessibleViewForwarder.cxx173
-rw-r--r--sd/source/ui/accessibility/SdShapeTypes.cxx150
-rw-r--r--sd/source/ui/accessibility/accessibility.hrc53
-rw-r--r--sd/source/ui/accessibility/accessibility.src115
-rwxr-xr-xsd/source/ui/accessibility/makefile.mk71
-rw-r--r--sd/source/ui/animations/CustomAnimation.hrc144
-rw-r--r--sd/source/ui/animations/CustomAnimation.src495
-rw-r--r--sd/source/ui/animations/CustomAnimationCreateDialog.cxx708
-rw-r--r--sd/source/ui/animations/CustomAnimationCreateDialog.hrc38
-rw-r--r--sd/source/ui/animations/CustomAnimationCreateDialog.hxx88
-rw-r--r--sd/source/ui/animations/CustomAnimationCreateDialog.src144
-rw-r--r--sd/source/ui/animations/CustomAnimationDialog.cxx2629
-rw-r--r--sd/source/ui/animations/CustomAnimationDialog.hrc89
-rw-r--r--sd/source/ui/animations/CustomAnimationDialog.hxx189
-rw-r--r--sd/source/ui/animations/CustomAnimationDialog.src653
-rw-r--r--sd/source/ui/animations/CustomAnimationList.cxx1017
-rw-r--r--sd/source/ui/animations/CustomAnimationList.hxx130
-rw-r--r--sd/source/ui/animations/CustomAnimationPane.cxx2492
-rw-r--r--sd/source/ui/animations/CustomAnimationPane.hrc60
-rw-r--r--sd/source/ui/animations/CustomAnimationPane.hxx193
-rw-r--r--sd/source/ui/animations/CustomAnimationPane.src225
-rw-r--r--sd/source/ui/animations/DialogListBox.cxx343
-rw-r--r--sd/source/ui/animations/STLPropertySet.cxx127
-rw-r--r--sd/source/ui/animations/STLPropertySet.hxx87
-rw-r--r--sd/source/ui/animations/SlideTransitionPane.cxx1322
-rw-r--r--sd/source/ui/animations/SlideTransitionPane.hrc68
-rw-r--r--sd/source/ui/animations/SlideTransitionPane.hxx154
-rw-r--r--sd/source/ui/animations/SlideTransitionPane.src220
-rwxr-xr-xsd/source/ui/animations/makefile.mk65
-rw-r--r--sd/source/ui/animations/motionpathtag.cxx1329
-rw-r--r--sd/source/ui/animations/motionpathtag.hxx135
-rw-r--r--sd/source/ui/annotations/annotationmanager.cxx1253
-rw-r--r--sd/source/ui/annotations/annotationmanagerimpl.hxx145
-rw-r--r--sd/source/ui/annotations/annotations.hrc65
-rw-r--r--sd/source/ui/annotations/annotations.src209
-rw-r--r--sd/source/ui/annotations/annotationtag.cxx792
-rw-r--r--sd/source/ui/annotations/annotationtag.hxx109
-rw-r--r--sd/source/ui/annotations/annotationwindow.cxx851
-rw-r--r--sd/source/ui/annotations/annotationwindow.hxx178
-rw-r--r--sd/source/ui/annotations/makefile.mk56
-rw-r--r--sd/source/ui/app/_app.hrc42
-rw-r--r--sd/source/ui/app/accel_tmpl.src117
-rw-r--r--sd/source/ui/app/accelids_tmpl.src54
-rw-r--r--sd/source/ui/app/app.img120
-rw-r--r--sd/source/ui/app/app.src35
-rwxr-xr-xsd/source/ui/app/makefile.mk113
-rw-r--r--sd/source/ui/app/menu_tmpl.src40
-rwxr-xr-xsd/source/ui/app/menuids2_tmpl.src987
-rw-r--r--sd/source/ui/app/menuids3_tmpl.src246
-rw-r--r--sd/source/ui/app/menuids4_tmpl.src79
-rw-r--r--sd/source/ui/app/menuids_tmpl.src1313
-rw-r--r--sd/source/ui/app/menuportal_tmpl.src387
-rw-r--r--sd/source/ui/app/optsitem.cxx1589
-rw-r--r--sd/source/ui/app/popup.src553
-rw-r--r--sd/source/ui/app/popup2_tmpl.src915
-rwxr-xr-xsd/source/ui/app/res_bmp.src495
-rw-r--r--sd/source/ui/app/sddll.cxx153
-rw-r--r--sd/source/ui/app/sddll1.cxx137
-rw-r--r--sd/source/ui/app/sddll2.cxx215
-rw-r--r--sd/source/ui/app/sdmod.cxx339
-rw-r--r--sd/source/ui/app/sdmod1.cxx1066
-rw-r--r--sd/source/ui/app/sdmod2.cxx836
-rw-r--r--sd/source/ui/app/sdpopup.cxx340
-rw-r--r--sd/source/ui/app/sdresid.cxx48
-rw-r--r--sd/source/ui/app/sdstring.src52
-rw-r--r--sd/source/ui/app/sdxfer.cxx878
-rwxr-xr-xsd/source/ui/app/strings.src1261
-rw-r--r--sd/source/ui/app/tbx_ww.src1124
-rw-r--r--sd/source/ui/app/tbxids_tmpl.src536
-rw-r--r--sd/source/ui/app/tbxww.cxx472
-rw-r--r--sd/source/ui/app/tmplctrl.cxx162
-rw-r--r--sd/source/ui/app/toolbox.src786
-rw-r--r--sd/source/ui/app/toolbox2_tmpl.src885
-rwxr-xr-xsd/source/ui/controller/makefile.mk54
-rw-r--r--sd/source/ui/controller/slidelayoutcontroller.cxx422
-rw-r--r--sd/source/ui/controller/slidelayoutcontroller.hxx57
-rw-r--r--sd/source/ui/dlg/AnimationChildWindow.cxx84
-rw-r--r--sd/source/ui/dlg/LayerDialog.src59
-rw-r--r--sd/source/ui/dlg/LayerDialogChildWindow.cxx87
-rw-r--r--sd/source/ui/dlg/LayerDialogContent.cxx109
-rw-r--r--sd/source/ui/dlg/LayerTabBar.cxx386
-rw-r--r--sd/source/ui/dlg/NavigatorChildWindow.cxx57
-rw-r--r--sd/source/ui/dlg/PaneChildWindows.cxx237
-rw-r--r--sd/source/ui/dlg/PaneDockingWindow.cxx84
-rwxr-xr-xsd/source/ui/dlg/PaneDockingWindow.src76
-rw-r--r--sd/source/ui/dlg/PaneShells.cxx142
-rw-r--r--sd/source/ui/dlg/SpellDialogChildWindow.cxx216
-rw-r--r--sd/source/ui/dlg/TemplateScanner.cxx494
-rw-r--r--sd/source/ui/dlg/animobjs.cxx1313
-rw-r--r--sd/source/ui/dlg/animobjs.src356
-rw-r--r--sd/source/ui/dlg/assclass.cxx223
-rw-r--r--sd/source/ui/dlg/brkdlg.cxx190
-rw-r--r--sd/source/ui/dlg/brkdlg.src96
-rw-r--r--sd/source/ui/dlg/celltempl.cxx123
-rw-r--r--sd/source/ui/dlg/celltempl.src78
-rw-r--r--sd/source/ui/dlg/copydlg.cxx360
-rw-r--r--sd/source/ui/dlg/copydlg.src308
-rw-r--r--sd/source/ui/dlg/custsdlg.cxx562
-rw-r--r--sd/source/ui/dlg/custsdlg.src190
-rw-r--r--sd/source/ui/dlg/diactrl.cxx181
-rw-r--r--sd/source/ui/dlg/dlg_char.src129
-rw-r--r--sd/source/ui/dlg/dlgass.cxx2040
-rw-r--r--sd/source/ui/dlg/dlgass.src570
-rw-r--r--sd/source/ui/dlg/dlgassim.cxx211
-rw-r--r--sd/source/ui/dlg/dlgassim.hxx73
-rw-r--r--sd/source/ui/dlg/dlgchar.cxx95
-rw-r--r--sd/source/ui/dlg/dlgctrls.cxx125
-rw-r--r--sd/source/ui/dlg/dlgfield.cxx368
-rw-r--r--sd/source/ui/dlg/dlgfield.src127
-rw-r--r--sd/source/ui/dlg/dlgolbul.cxx241
-rw-r--r--sd/source/ui/dlg/dlgolbul.src70
-rw-r--r--sd/source/ui/dlg/dlgpage.cxx116
-rw-r--r--sd/source/ui/dlg/dlgpage.src119
-rw-r--r--sd/source/ui/dlg/dlgsnap.cxx237
-rw-r--r--sd/source/ui/dlg/dlgsnap.src206
-rw-r--r--sd/source/ui/dlg/docprev.cxx308
-rw-r--r--sd/source/ui/dlg/filedlg.cxx371
-rw-r--r--sd/source/ui/dlg/gluectrl.cxx239
-rw-r--r--sd/source/ui/dlg/headerfooterdlg.cxx939
-rw-r--r--sd/source/ui/dlg/headerfooterdlg.src303
-rw-r--r--sd/source/ui/dlg/ins_paste.cxx69
-rw-r--r--sd/source/ui/dlg/ins_paste.src98
-rw-r--r--sd/source/ui/dlg/inspagob.cxx190
-rw-r--r--sd/source/ui/dlg/inspagob.src117
-rw-r--r--sd/source/ui/dlg/layeroptionsdlg.cxx88
-rw-r--r--sd/source/ui/dlg/layeroptionsdlg.src183
-rwxr-xr-xsd/source/ui/dlg/makefile.mk193
-rw-r--r--sd/source/ui/dlg/masterlayoutdlg.cxx178
-rw-r--r--sd/source/ui/dlg/masterlayoutdlg.src110
-rw-r--r--sd/source/ui/dlg/morphdlg.cxx169
-rw-r--r--sd/source/ui/dlg/morphdlg.src137
-rw-r--r--sd/source/ui/dlg/navigatr.cxx1002
-rw-r--r--sd/source/ui/dlg/navigatr.src161
-rw-r--r--sd/source/ui/dlg/paragr.cxx195
-rw-r--r--sd/source/ui/dlg/paragr.src173
-rw-r--r--sd/source/ui/dlg/present.cxx321
-rw-r--r--sd/source/ui/dlg/present.src277
-rw-r--r--sd/source/ui/dlg/prltempl.cxx358
-rw-r--r--sd/source/ui/dlg/prltempl.src195
-rw-r--r--sd/source/ui/dlg/prntopts.cxx313
-rw-r--r--sd/source/ui/dlg/prntopts.src232
-rw-r--r--sd/source/ui/dlg/sdabstdlg.cxx55
-rw-r--r--sd/source/ui/dlg/sddlgfact.cxx566
-rw-r--r--sd/source/ui/dlg/sddlgfact.hxx302
-rw-r--r--sd/source/ui/dlg/sdpreslt.cxx360
-rw-r--r--sd/source/ui/dlg/sdpreslt.src124
-rw-r--r--sd/source/ui/dlg/sdtreelb.cxx1461
-rw-r--r--sd/source/ui/dlg/sduiexp.cxx58
-rw-r--r--sd/source/ui/dlg/tabtempl.cxx225
-rw-r--r--sd/source/ui/dlg/tabtempl.src193
-rw-r--r--sd/source/ui/dlg/tpaction.cxx925
-rw-r--r--sd/source/ui/dlg/tpaction.src196
-rw-r--r--sd/source/ui/dlg/tpoption.cxx860
-rw-r--r--sd/source/ui/dlg/tpoption.src360
-rw-r--r--sd/source/ui/dlg/unchss.cxx181
-rw-r--r--sd/source/ui/dlg/vectdlg.cxx403
-rw-r--r--sd/source/ui/dlg/vectdlg.src245
-rw-r--r--sd/source/ui/docshell/docshel2.cxx508
-rw-r--r--sd/source/ui/docshell/docshel3.cxx258
-rw-r--r--sd/source/ui/docshell/docshel4.cxx1056
-rw-r--r--sd/source/ui/docshell/docshell.cxx601
-rw-r--r--sd/source/ui/docshell/grdocsh.cxx89
-rw-r--r--sd/source/ui/docshell/makefile.mk56
-rw-r--r--sd/source/ui/docshell/sdclient.cxx233
-rw-r--r--sd/source/ui/framework/configuration/ChangeRequestQueue.cxx41
-rw-r--r--sd/source/ui/framework/configuration/ChangeRequestQueue.hxx58
-rw-r--r--sd/source/ui/framework/configuration/ChangeRequestQueueProcessor.cxx239
-rw-r--r--sd/source/ui/framework/configuration/ChangeRequestQueueProcessor.hxx139
-rw-r--r--sd/source/ui/framework/configuration/Configuration.cxx423
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationClassifier.cxx241
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationClassifier.hxx186
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationController.cxx729
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationControllerBroadcaster.cxx233
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationControllerBroadcaster.hxx154
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationControllerResourceManager.cxx354
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationControllerResourceManager.hxx148
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationTracer.cxx86
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationTracer.hxx60
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationUpdater.cxx471
-rw-r--r--sd/source/ui/framework/configuration/ConfigurationUpdater.hxx218
-rw-r--r--sd/source/ui/framework/configuration/GenericConfigurationChangeRequest.cxx106
-rw-r--r--sd/source/ui/framework/configuration/GenericConfigurationChangeRequest.hxx126
-rw-r--r--sd/source/ui/framework/configuration/ResourceFactoryManager.cxx233
-rw-r--r--sd/source/ui/framework/configuration/ResourceFactoryManager.hxx131
-rw-r--r--sd/source/ui/framework/configuration/ResourceId.cxx629
-rw-r--r--sd/source/ui/framework/configuration/UpdateRequest.cxx88
-rw-r--r--sd/source/ui/framework/configuration/UpdateRequest.hxx96
-rw-r--r--sd/source/ui/framework/configuration/makefile.mk63
-rw-r--r--sd/source/ui/framework/factories/BasicPaneFactory.cxx571
-rw-r--r--sd/source/ui/framework/factories/BasicPaneFactory.hxx171
-rw-r--r--sd/source/ui/framework/factories/BasicToolBarFactory.cxx248
-rw-r--r--sd/source/ui/framework/factories/BasicToolBarFactory.hxx121
-rw-r--r--sd/source/ui/framework/factories/BasicViewFactory.cxx618
-rw-r--r--sd/source/ui/framework/factories/BasicViewFactory.hxx160
-rw-r--r--sd/source/ui/framework/factories/ChildWindowPane.cxx254
-rw-r--r--sd/source/ui/framework/factories/ChildWindowPane.hxx125
-rw-r--r--sd/source/ui/framework/factories/FrameWindowPane.cxx65
-rw-r--r--sd/source/ui/framework/factories/FrameWindowPane.hxx64
-rw-r--r--sd/source/ui/framework/factories/FullScreenPane.cxx297
-rw-r--r--sd/source/ui/framework/factories/FullScreenPane.hxx108
-rw-r--r--sd/source/ui/framework/factories/Pane.cxx270
-rw-r--r--sd/source/ui/framework/factories/PresentationFactory.cxx326
-rw-r--r--sd/source/ui/framework/factories/TaskPanelFactory.cxx326
-rw-r--r--sd/source/ui/framework/factories/TaskPanelFactory.hxx99
-rw-r--r--sd/source/ui/framework/factories/ViewShellWrapper.cxx272
-rw-r--r--sd/source/ui/framework/factories/makefile.mk60
-rw-r--r--sd/source/ui/framework/module/CenterViewFocusModule.cxx198
-rw-r--r--sd/source/ui/framework/module/CenterViewFocusModule.hxx115
-rw-r--r--sd/source/ui/framework/module/DrawModule.cxx59
-rw-r--r--sd/source/ui/framework/module/ImpressModule.cxx66
-rw-r--r--sd/source/ui/framework/module/ModuleController.cxx344
-rw-r--r--sd/source/ui/framework/module/PresentationModule.cxx50
-rw-r--r--sd/source/ui/framework/module/ReadOnlyModeObserver.cxx223
-rw-r--r--sd/source/ui/framework/module/ReadOnlyModeObserver.hxx142
-rw-r--r--sd/source/ui/framework/module/ResourceManager.cxx297
-rw-r--r--sd/source/ui/framework/module/ResourceManager.hxx136
-rw-r--r--sd/source/ui/framework/module/ShellStackGuard.cxx195
-rw-r--r--sd/source/ui/framework/module/ShellStackGuard.hxx119
-rw-r--r--sd/source/ui/framework/module/SlideSorterModule.cxx158
-rw-r--r--sd/source/ui/framework/module/SlideSorterModule.hxx72
-rw-r--r--sd/source/ui/framework/module/ToolBarModule.cxx237
-rw-r--r--sd/source/ui/framework/module/ToolBarModule.hxx105
-rw-r--r--sd/source/ui/framework/module/ToolPanelModule.cxx168
-rw-r--r--sd/source/ui/framework/module/ToolPanelModule.hxx52
-rw-r--r--sd/source/ui/framework/module/ViewTabBarModule.cxx223
-rw-r--r--sd/source/ui/framework/module/ViewTabBarModule.hxx110
-rwxr-xr-xsd/source/ui/framework/module/makefile.mk62
-rw-r--r--sd/source/ui/framework/tools/FrameworkHelper.cxx1222
-rw-r--r--sd/source/ui/framework/tools/makefile.mk51
-rw-r--r--sd/source/ui/func/bulmaper.cxx147
-rw-r--r--sd/source/ui/func/fuarea.cxx120
-rw-r--r--sd/source/ui/func/fubullet.cxx361
-rw-r--r--sd/source/ui/func/fuchar.cxx150
-rw-r--r--sd/source/ui/func/fucon3d.cxx534
-rw-r--r--sd/source/ui/func/fuconarc.cxx342
-rw-r--r--sd/source/ui/func/fuconbez.cxx541
-rw-r--r--sd/source/ui/func/fuconcs.cxx347
-rw-r--r--sd/source/ui/func/fuconnct.cxx94
-rw-r--r--sd/source/ui/func/fuconrec.cxx1027
-rw-r--r--sd/source/ui/func/fuconstr.cxx423
-rw-r--r--sd/source/ui/func/fuconuno.cxx222
-rw-r--r--sd/source/ui/func/fucopy.cxx318
-rw-r--r--sd/source/ui/func/fucushow.cxx102
-rw-r--r--sd/source/ui/func/fudraw.cxx1143
-rw-r--r--sd/source/ui/func/fudspord.cxx195
-rw-r--r--sd/source/ui/func/fuediglu.cxx463
-rw-r--r--sd/source/ui/func/fuexpand.cxx278
-rw-r--r--sd/source/ui/func/fuformatpaintbrush.cxx296
-rw-r--r--sd/source/ui/func/fuhhconv.cxx293
-rw-r--r--sd/source/ui/func/fuinsert.cxx787
-rw-r--r--sd/source/ui/func/fuinsfil.cxx825
-rw-r--r--sd/source/ui/func/fuline.cxx131
-rw-r--r--sd/source/ui/func/fulinend.cxx184
-rw-r--r--sd/source/ui/func/fulink.cxx93
-rw-r--r--sd/source/ui/func/fumeasur.cxx95
-rw-r--r--sd/source/ui/func/fumorph.cxx516
-rw-r--r--sd/source/ui/func/fuoaprms.cxx840
-rw-r--r--sd/source/ui/func/fuolbull.cxx147
-rw-r--r--sd/source/ui/func/fuoltext.cxx362
-rw-r--r--sd/source/ui/func/fuoutl.cxx95
-rw-r--r--sd/source/ui/func/fupage.cxx629
-rw-r--r--sd/source/ui/func/fuparagr.cxx188
-rw-r--r--sd/source/ui/func/fupoor.cxx1276
-rw-r--r--sd/source/ui/func/fuprlout.cxx288
-rw-r--r--sd/source/ui/func/fuprobjs.cxx178
-rw-r--r--sd/source/ui/func/fuscale.cxx215
-rw-r--r--sd/source/ui/func/fusearch.cxx179
-rw-r--r--sd/source/ui/func/fusel.cxx1496
-rw-r--r--sd/source/ui/func/fusldlg.cxx266
-rw-r--r--sd/source/ui/func/fusnapln.cxx220
-rw-r--r--sd/source/ui/func/fusumry.cxx246
-rw-r--r--sd/source/ui/func/futempl.cxx734
-rw-r--r--sd/source/ui/func/futext.cxx1552
-rw-r--r--sd/source/ui/func/futhes.cxx171
-rw-r--r--sd/source/ui/func/futransf.cxx142
-rw-r--r--sd/source/ui/func/futxtatt.cxx108
-rw-r--r--sd/source/ui/func/fuvect.cxx113
-rw-r--r--sd/source/ui/func/fuzoom.cxx261
-rwxr-xr-xsd/source/ui/func/makefile.mk185
-rw-r--r--sd/source/ui/func/sdundo.cxx38
-rw-r--r--sd/source/ui/func/sdundogr.cxx121
-rw-r--r--sd/source/ui/func/smarttag.cxx481
-rw-r--r--sd/source/ui/func/undoback.cxx101
-rw-r--r--sd/source/ui/func/undoheaderfooter.cxx67
-rw-r--r--sd/source/ui/func/undolayer.cxx93
-rw-r--r--sd/source/ui/func/undopage.cxx142
-rw-r--r--sd/source/ui/func/unmovss.cxx110
-rw-r--r--sd/source/ui/func/unoaprms.cxx143
-rw-r--r--sd/source/ui/func/unprlout.cxx121
-rw-r--r--sd/source/ui/inc/3dchld.hxx52
-rw-r--r--sd/source/ui/inc/AccessibleDocumentViewBase.hxx375
-rw-r--r--sd/source/ui/inc/AccessibleDrawDocumentView.hxx176
-rw-r--r--sd/source/ui/inc/AccessibleOutlineEditSource.hxx107
-rw-r--r--sd/source/ui/inc/AccessibleOutlineView.hxx164
-rw-r--r--sd/source/ui/inc/AccessiblePageShape.hxx181
-rw-r--r--sd/source/ui/inc/AccessiblePresentationGraphicShape.hxx74
-rw-r--r--sd/source/ui/inc/AccessiblePresentationOLEShape.hxx74
-rw-r--r--sd/source/ui/inc/AccessiblePresentationShape.hxx85
-rw-r--r--sd/source/ui/inc/AccessibleScrollPanel.hxx83
-rw-r--r--sd/source/ui/inc/AccessibleSlideSorterObject.hxx252
-rw-r--r--sd/source/ui/inc/AccessibleSlideSorterView.hxx331
-rw-r--r--sd/source/ui/inc/AccessibleSlideView.hxx283
-rw-r--r--sd/source/ui/inc/AccessibleTreeNode.hxx321
-rw-r--r--sd/source/ui/inc/AccessibleViewForwarder.hxx139
-rw-r--r--sd/source/ui/inc/AnimationChildWindow.hxx57
-rw-r--r--sd/source/ui/inc/BezierObjectBar.hxx63
-rw-r--r--sd/source/ui/inc/BreakDlg.hxx97
-rw-r--r--sd/source/ui/inc/Client.hxx75
-rw-r--r--sd/source/ui/inc/ClientView.hxx67
-rw-r--r--sd/source/ui/inc/CustomAnimation.hxx44
-rw-r--r--sd/source/ui/inc/DialogListBox.hxx78
-rw-r--r--sd/source/ui/inc/DocumentRenderer.hxx85
-rw-r--r--sd/source/ui/inc/DrawController.hxx342
-rw-r--r--sd/source/ui/inc/DrawDocShell.hxx245
-rw-r--r--sd/source/ui/inc/DrawSubController.hxx59
-rw-r--r--sd/source/ui/inc/DrawViewShell.hxx501
-rw-r--r--sd/source/ui/inc/EventMultiplexer.hxx225
-rw-r--r--sd/source/ui/inc/FormShellManager.hxx146
-rw-r--r--sd/source/ui/inc/FrameView.hxx239
-rw-r--r--sd/source/ui/inc/GraphicDocShell.hxx82
-rw-r--r--sd/source/ui/inc/GraphicObjectBar.hxx69
-rw-r--r--sd/source/ui/inc/GraphicViewShell.hxx88
-rw-r--r--sd/source/ui/inc/GraphicViewShellBase.hxx65
-rw-r--r--sd/source/ui/inc/ImpressViewShellBase.hxx65
-rw-r--r--sd/source/ui/inc/LayerDialog.hrc29
-rw-r--r--sd/source/ui/inc/LayerDialogChildWindow.hxx57
-rw-r--r--sd/source/ui/inc/LayerDialogContent.hxx64
-rw-r--r--sd/source/ui/inc/LayerTabBar.hxx96
-rw-r--r--sd/source/ui/inc/MasterPageObserver.hxx137
-rw-r--r--sd/source/ui/inc/MediaObjectBar.hxx64
-rw-r--r--sd/source/ui/inc/MutexOwner.hxx50
-rw-r--r--sd/source/ui/inc/NavigatorChildWindow.hxx62
-rw-r--r--sd/source/ui/inc/NotesChildWindow.hrc30
-rw-r--r--sd/source/ui/inc/NotesChildWindow.hxx58
-rw-r--r--sd/source/ui/inc/OutlineBulletDlg.hxx73
-rw-r--r--sd/source/ui/inc/OutlineView.hxx262
-rw-r--r--sd/source/ui/inc/OutlineViewShell.hxx186
-rw-r--r--sd/source/ui/inc/OutlineViewShellBase.hxx58
-rw-r--r--sd/source/ui/inc/OutlinerIteratorImpl.hxx275
-rw-r--r--sd/source/ui/inc/PaneChildWindows.hxx103
-rwxr-xr-xsd/source/ui/inc/PaneDockingWindow.hrc30
-rw-r--r--sd/source/ui/inc/PaneDockingWindow.hxx75
-rw-r--r--sd/source/ui/inc/PaneShells.hxx93
-rw-r--r--sd/source/ui/inc/PresentationViewShell.hxx78
-rw-r--r--sd/source/ui/inc/PresentationViewShellBase.hxx61
-rw-r--r--sd/source/ui/inc/PreviewRenderer.hxx171
-rw-r--r--sd/source/ui/inc/Ruler.hxx85
-rw-r--r--sd/source/ui/inc/SdUnoDrawView.hxx156
-rw-r--r--sd/source/ui/inc/SdUnoOutlineView.hxx130
-rw-r--r--sd/source/ui/inc/SdUnoSlideView.hxx145
-rw-r--r--sd/source/ui/inc/ShellFactory.hxx76
-rw-r--r--sd/source/ui/inc/SlideSorter.hxx273
-rw-r--r--sd/source/ui/inc/SlideSorterChildWindow.hrc30
-rw-r--r--sd/source/ui/inc/SlideSorterChildWindow.hxx61
-rw-r--r--sd/source/ui/inc/SlideSorterViewShell.hxx221
-rw-r--r--sd/source/ui/inc/SlideSorterViewShellBase.hxx58
-rw-r--r--sd/source/ui/inc/SlideView.hxx147
-rw-r--r--sd/source/ui/inc/SlideViewShell.hxx182
-rw-r--r--sd/source/ui/inc/SpellDialogChildWindow.hxx98
-rw-r--r--sd/source/ui/inc/TabControl.hxx124
-rw-r--r--sd/source/ui/inc/TemplateScanner.hxx223
-rw-r--r--sd/source/ui/inc/TextLogger.hxx65
-rw-r--r--sd/source/ui/inc/TextObjectBar.hxx72
-rw-r--r--sd/source/ui/inc/ToolBarManager.hxx286
-rw-r--r--sd/source/ui/inc/UpdateLockManager.hxx94
-rw-r--r--sd/source/ui/inc/View.hxx261
-rw-r--r--sd/source/ui/inc/ViewClipboard.hxx96
-rw-r--r--sd/source/ui/inc/ViewShell.hxx602
-rw-r--r--sd/source/ui/inc/ViewShellBase.hxx290
-rw-r--r--sd/source/ui/inc/ViewShellHint.hxx71
-rw-r--r--sd/source/ui/inc/ViewShellImplementation.hxx169
-rw-r--r--sd/source/ui/inc/ViewShellManager.hxx214
-rw-r--r--sd/source/ui/inc/ViewTabBar.hxx210
-rw-r--r--sd/source/ui/inc/ViewTabControl.hxx122
-rw-r--r--sd/source/ui/inc/Window.hxx220
-rw-r--r--sd/source/ui/inc/WindowUpdater.hxx155
-rw-r--r--sd/source/ui/inc/animobjs.hrc49
-rw-r--r--sd/source/ui/inc/animobjs.hxx200
-rw-r--r--sd/source/ui/inc/annotationmanager.hxx62
-rw-r--r--sd/source/ui/inc/assclass.hxx89
-rw-r--r--sd/source/ui/inc/bmcache.hxx54
-rw-r--r--sd/source/ui/inc/brkdlg.hrc34
-rw-r--r--sd/source/ui/inc/bulmaper.hxx52
-rw-r--r--sd/source/ui/inc/celltempl.hrc29
-rw-r--r--sd/source/ui/inc/celltempl.hxx62
-rw-r--r--sd/source/ui/inc/cfgids.hxx78
-rw-r--r--sd/source/ui/inc/copydlg.hrc51
-rw-r--r--sd/source/ui/inc/copydlg.hxx105
-rw-r--r--sd/source/ui/inc/custsdlg.hrc47
-rw-r--r--sd/source/ui/inc/custsdlg.hxx116
-rw-r--r--sd/source/ui/inc/diactrl.hxx82
-rw-r--r--sd/source/ui/inc/dialogs.hrc36
-rw-r--r--sd/source/ui/inc/dlg_char.hrc28
-rw-r--r--sd/source/ui/inc/dlg_char.hxx63
-rw-r--r--sd/source/ui/inc/dlgass.hrc88
-rw-r--r--sd/source/ui/inc/dlgass.hxx70
-rw-r--r--sd/source/ui/inc/dlgctrls.hxx63
-rw-r--r--sd/source/ui/inc/dlgfield.hrc37
-rw-r--r--sd/source/ui/inc/dlgfield.hxx82
-rw-r--r--sd/source/ui/inc/dlgolbul.hrc27
-rw-r--r--sd/source/ui/inc/dlgpage.hrc27
-rw-r--r--sd/source/ui/inc/dlgpage.hxx70
-rw-r--r--sd/source/ui/inc/dlgsnap.hrc44
-rw-r--r--sd/source/ui/inc/dlgsnap.hxx92
-rw-r--r--sd/source/ui/inc/docprev.hxx90
-rw-r--r--sd/source/ui/inc/drawview.hxx96
-rw-r--r--sd/source/ui/inc/enumdlg.hrc42
-rw-r--r--sd/source/ui/inc/filedlg.hxx74
-rw-r--r--sd/source/ui/inc/fontwork.hrc45
-rw-r--r--sd/source/ui/inc/framework/Configuration.hxx210
-rw-r--r--sd/source/ui/inc/framework/ConfigurationController.hxx234
-rw-r--r--sd/source/ui/inc/framework/DrawModule.hxx51
-rw-r--r--sd/source/ui/inc/framework/FrameworkHelper.hxx424
-rw-r--r--sd/source/ui/inc/framework/ImpressModule.hxx50
-rw-r--r--sd/source/ui/inc/framework/ModuleController.hxx151
-rw-r--r--sd/source/ui/inc/framework/Pane.hxx178
-rw-r--r--sd/source/ui/inc/framework/PresentationFactory.hxx119
-rw-r--r--sd/source/ui/inc/framework/PresentationModule.hxx50
-rw-r--r--sd/source/ui/inc/framework/ResourceId.hxx247
-rw-r--r--sd/source/ui/inc/framework/ViewShellWrapper.hxx151
-rw-r--r--sd/source/ui/inc/fuarea.hxx61
-rw-r--r--sd/source/ui/inc/fubullet.hxx67
-rw-r--r--sd/source/ui/inc/fuchar.hxx62
-rw-r--r--sd/source/ui/inc/fucon3d.hxx79
-rw-r--r--sd/source/ui/inc/fuconarc.hxx72
-rw-r--r--sd/source/ui/inc/fuconbez.hxx87
-rw-r--r--sd/source/ui/inc/fuconcs.hxx89
-rw-r--r--sd/source/ui/inc/fuconnct.hxx59
-rw-r--r--sd/source/ui/inc/fuconrec.hxx86
-rw-r--r--sd/source/ui/inc/fuconstr.hxx90
-rw-r--r--sd/source/ui/inc/fuconuno.hxx83
-rw-r--r--sd/source/ui/inc/fucopy.hxx60
-rw-r--r--sd/source/ui/inc/fucushow.hxx58
-rw-r--r--sd/source/ui/inc/fudraw.hxx103
-rw-r--r--sd/source/ui/inc/fudspord.hxx84
-rw-r--r--sd/source/ui/inc/fuediglu.hxx76
-rw-r--r--sd/source/ui/inc/fuexpand.hxx58
-rw-r--r--sd/source/ui/inc/fuformatpaintbrush.hxx79
-rw-r--r--sd/source/ui/inc/fugrid.hxx61
-rw-r--r--sd/source/ui/inc/fuhhconv.hxx76
-rw-r--r--sd/source/ui/inc/fuinsert.hxx122
-rw-r--r--sd/source/ui/inc/fuinsfil.hxx73
-rw-r--r--sd/source/ui/inc/fuline.hxx62
-rw-r--r--sd/source/ui/inc/fulinend.hxx62
-rw-r--r--sd/source/ui/inc/fulink.hxx60
-rw-r--r--sd/source/ui/inc/fumeasur.hxx59
-rw-r--r--sd/source/ui/inc/fumorph.hxx83
-rw-r--r--sd/source/ui/inc/fuoaprms.hxx62
-rw-r--r--sd/source/ui/inc/fuolbull.hxx71
-rw-r--r--sd/source/ui/inc/fuoltext.hxx88
-rw-r--r--sd/source/ui/inc/fuoutl.hxx79
-rw-r--r--sd/source/ui/inc/fupage.hxx83
-rw-r--r--sd/source/ui/inc/fuparagr.hxx61
-rw-r--r--sd/source/ui/inc/fupoor.hxx212
-rw-r--r--sd/source/ui/inc/fuprlout.hxx66
-rw-r--r--sd/source/ui/inc/fuprobjs.hxx66
-rw-r--r--sd/source/ui/inc/fuscale.hxx58
-rw-r--r--sd/source/ui/inc/fusearch.hxx74
-rw-r--r--sd/source/ui/inc/fusel.hxx114
-rw-r--r--sd/source/ui/inc/fusldlg.hxx58
-rw-r--r--sd/source/ui/inc/fuslhide.hxx65
-rw-r--r--sd/source/ui/inc/fuslid.hxx80
-rw-r--r--sd/source/ui/inc/fuslsel.hxx122
-rw-r--r--sd/source/ui/inc/fusnapln.hxx61
-rw-r--r--sd/source/ui/inc/fusumry.hxx58
-rw-r--r--sd/source/ui/inc/futempl.hxx61
-rw-r--r--sd/source/ui/inc/futext.hxx117
-rw-r--r--sd/source/ui/inc/futhes.hxx59
-rw-r--r--sd/source/ui/inc/futransf.hxx59
-rw-r--r--sd/source/ui/inc/futxtatt.hxx58
-rw-r--r--sd/source/ui/inc/fuvect.hxx59
-rw-r--r--sd/source/ui/inc/fuzoom.hxx79
-rw-r--r--sd/source/ui/inc/gluectrl.hxx78
-rw-r--r--sd/source/ui/inc/headerfooterdlg.hrc55
-rw-r--r--sd/source/ui/inc/headerfooterdlg.hxx85
-rw-r--r--sd/source/ui/inc/ins_paste.hrc36
-rw-r--r--sd/source/ui/inc/ins_paste.hxx62
-rw-r--r--sd/source/ui/inc/inspagob.hrc33
-rw-r--r--sd/source/ui/inc/inspagob.hxx72
-rw-r--r--sd/source/ui/inc/layeroptionsdlg.hrc44
-rw-r--r--sd/source/ui/inc/layeroptionsdlg.hxx70
-rw-r--r--sd/source/ui/inc/masterlayoutdlg.hrc36
-rw-r--r--sd/source/ui/inc/masterlayoutdlg.hxx78
-rw-r--r--sd/source/ui/inc/morphdlg.hrc35
-rw-r--r--sd/source/ui/inc/morphdlg.hxx84
-rw-r--r--sd/source/ui/inc/navigatr.hrc43
-rw-r--r--sd/source/ui/inc/navigatr.hxx208
-rw-r--r--sd/source/ui/inc/optdlg.hrc34
-rw-r--r--sd/source/ui/inc/optdlg.hxx59
-rw-r--r--sd/source/ui/inc/optsitem.hxx682
-rw-r--r--sd/source/ui/inc/packgdlg.hrc46
-rw-r--r--sd/source/ui/inc/paragr.hrc33
-rw-r--r--sd/source/ui/inc/paragr.hxx55
-rw-r--r--sd/source/ui/inc/pgjump.hxx45
-rw-r--r--sd/source/ui/inc/present.hrc67
-rw-r--r--sd/source/ui/inc/present.hxx106
-rw-r--r--sd/source/ui/inc/preview.hrc28
-rw-r--r--sd/source/ui/inc/prltempl.hrc31
-rw-r--r--sd/source/ui/inc/prltempl.hxx101
-rw-r--r--sd/source/ui/inc/prntopts.hrc56
-rw-r--r--sd/source/ui/inc/prntopts.hxx109
-rw-r--r--sd/source/ui/inc/pubdlg.hrc153
-rw-r--r--sd/source/ui/inc/pubdlg.hxx228
-rwxr-xr-xsd/source/ui/inc/res_bmp.hrc344
-rw-r--r--sd/source/ui/inc/sdpopup.hxx64
-rw-r--r--sd/source/ui/inc/sdpreslt.hrc36
-rw-r--r--sd/source/ui/inc/sdpreslt.hxx89
-rw-r--r--sd/source/ui/inc/sdstring.hrc35
-rw-r--r--sd/source/ui/inc/sdtreelb.hxx272
-rw-r--r--sd/source/ui/inc/sdundogr.hxx58
-rw-r--r--sd/source/ui/inc/sdxfer.hxx141
-rw-r--r--sd/source/ui/inc/slideshow.hxx235
-rw-r--r--sd/source/ui/inc/smarttag.hxx190
-rw-r--r--sd/source/ui/inc/sprite.hxx91
-rwxr-xr-xsd/source/ui/inc/strings.hrc512
-rw-r--r--sd/source/ui/inc/tabtempl.hrc30
-rw-r--r--sd/source/ui/inc/tabtempl.hxx88
-rw-r--r--sd/source/ui/inc/taskpane/ControlContainer.hxx214
-rw-r--r--sd/source/ui/inc/taskpane/ILayoutableWindow.hxx105
-rw-r--r--sd/source/ui/inc/taskpane/PanelId.hxx65
-rw-r--r--sd/source/ui/inc/taskpane/ScrollPanel.hxx192
-rw-r--r--sd/source/ui/inc/taskpane/SlideSorterCacheDisplay.hxx204
-rw-r--r--sd/source/ui/inc/taskpane/SubToolPanel.hxx138
-rw-r--r--sd/source/ui/inc/taskpane/TaskPaneControlFactory.hxx101
-rw-r--r--sd/source/ui/inc/taskpane/TaskPaneTreeNode.hxx217
-rw-r--r--sd/source/ui/inc/taskpane/TitleBar.hxx172
-rw-r--r--sd/source/ui/inc/taskpane/TitledControl.hxx182
-rw-r--r--sd/source/ui/inc/taskpane/ToolPanelViewShell.hxx178
-rw-r--r--sd/source/ui/inc/tbx_ww.hrc29
-rw-r--r--sd/source/ui/inc/tbx_ww.hxx91
-rw-r--r--sd/source/ui/inc/tmplctrl.hxx55
-rw-r--r--sd/source/ui/inc/tools/AsynchronousCall.hxx95
-rw-r--r--sd/source/ui/inc/tools/AsynchronousTask.hxx58
-rw-r--r--sd/source/ui/inc/tools/ConfigurationAccess.hxx155
-rw-r--r--sd/source/ui/inc/tools/IconCache.hxx82
-rw-r--r--sd/source/ui/inc/tools/IdleDetection.hxx94
-rw-r--r--sd/source/ui/inc/tools/PropertySet.hxx153
-rw-r--r--sd/source/ui/inc/tools/SdGlobalResourceContainer.hxx111
-rw-r--r--sd/source/ui/inc/tools/SlotStateListener.hxx161
-rw-r--r--sd/source/ui/inc/tools/TimerBasedTaskExecution.hxx102
-rw-r--r--sd/source/ui/inc/tpaction.hrc51
-rw-r--r--sd/source/ui/inc/tpaction.hxx143
-rw-r--r--sd/source/ui/inc/tpoption.hrc90
-rw-r--r--sd/source/ui/inc/tpoption.hxx193
-rw-r--r--sd/source/ui/inc/unchss.hxx61
-rw-r--r--sd/source/ui/inc/undoback.hxx69
-rw-r--r--sd/source/ui/inc/undoheaderfooter.hxx59
-rw-r--r--sd/source/ui/inc/undolayer.hxx69
-rw-r--r--sd/source/ui/inc/undopage.hxx182
-rw-r--r--sd/source/ui/inc/unmodpg.hxx93
-rw-r--r--sd/source/ui/inc/unmovss.hxx56
-rw-r--r--sd/source/ui/inc/unoaprms.hxx151
-rw-r--r--sd/source/ui/inc/unokywds.hxx217
-rw-r--r--sd/source/ui/inc/unomodel.hxx356
-rw-r--r--sd/source/ui/inc/unoprnms.hxx102
-rw-r--r--sd/source/ui/inc/unosrch.hxx151
-rw-r--r--sd/source/ui/inc/unprlout.hxx67
-rw-r--r--sd/source/ui/inc/unslsel.hxx53
-rw-r--r--sd/source/ui/inc/vectdlg.hrc53
-rw-r--r--sd/source/ui/inc/vectdlg.hxx109
-rw-r--r--sd/source/ui/inc/view/viewoverlaymanager.hxx74
-rw-r--r--sd/source/ui/inc/zoomlist.hxx63
-rw-r--r--sd/source/ui/notes/EditWindow.cxx886
-rw-r--r--sd/source/ui/notes/EditWindow.hxx130
-rw-r--r--sd/source/ui/notes/NotesChildWindow.cxx66
-rwxr-xr-xsd/source/ui/notes/NotesChildWindow.src45
-rw-r--r--sd/source/ui/notes/NotesDockingWindow.cxx114
-rw-r--r--sd/source/ui/notes/NotesDockingWindow.hxx59
-rw-r--r--sd/source/ui/notes/TextLogger.cxx132
-rwxr-xr-xsd/source/ui/notes/makefile.mk60
-rw-r--r--sd/source/ui/presenter/CanvasUpdateRequester.cxx130
-rw-r--r--sd/source/ui/presenter/CanvasUpdateRequester.hxx83
-rw-r--r--sd/source/ui/presenter/PresenterCanvas.cxx1231
-rw-r--r--sd/source/ui/presenter/PresenterCanvas.hxx447
-rw-r--r--sd/source/ui/presenter/PresenterCanvasFactory.cxx310
-rw-r--r--sd/source/ui/presenter/PresenterHelper.cxx346
-rw-r--r--sd/source/ui/presenter/PresenterHelper.hxx123
-rw-r--r--sd/source/ui/presenter/PresenterPreviewCache.cxx518
-rw-r--r--sd/source/ui/presenter/PresenterPreviewCache.hxx125
-rw-r--r--sd/source/ui/presenter/PresenterTextView.cxx648
-rw-r--r--sd/source/ui/presenter/PresenterTextView.hxx92
-rw-r--r--sd/source/ui/presenter/SlideRenderer.cxx274
-rw-r--r--sd/source/ui/presenter/SlideRenderer.hxx111
-rw-r--r--sd/source/ui/presenter/makefile.mk56
-rw-r--r--sd/source/ui/slideshow/PaneHider.cxx120
-rw-r--r--sd/source/ui/slideshow/PaneHider.hxx76
-rw-r--r--sd/source/ui/slideshow/SlideShowRestarter.cxx187
-rw-r--r--sd/source/ui/slideshow/SlideShowRestarter.hxx94
-rw-r--r--sd/source/ui/slideshow/makefile.mk66
-rw-r--r--sd/source/ui/slideshow/showwin.cxx748
-rw-r--r--sd/source/ui/slideshow/showwindow.hxx145
-rw-r--r--sd/source/ui/slideshow/slideshow.cxx1291
-rw-r--r--sd/source/ui/slideshow/slideshow.hrc61
-rw-r--r--sd/source/ui/slideshow/slideshow.src221
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx4048
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.hxx433
-rw-r--r--sd/source/ui/slideshow/slideshowviewimpl.cxx698
-rw-r--r--sd/source/ui/slideshow/slideshowviewimpl.hxx285
-rw-r--r--sd/source/ui/slidesorter/cache/SlsBitmapCache.cxx634
-rw-r--r--sd/source/ui/slidesorter/cache/SlsBitmapCache.hxx214
-rw-r--r--sd/source/ui/slidesorter/cache/SlsBitmapCompressor.cxx276
-rw-r--r--sd/source/ui/slidesorter/cache/SlsBitmapCompressor.hxx163
-rw-r--r--sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx83
-rw-r--r--sd/source/ui/slidesorter/cache/SlsBitmapFactory.hxx68
-rw-r--r--sd/source/ui/slidesorter/cache/SlsCacheCompactor.cxx239
-rw-r--r--sd/source/ui/slidesorter/cache/SlsCacheCompactor.hxx103
-rw-r--r--sd/source/ui/slidesorter/cache/SlsCacheConfiguration.cxx178
-rw-r--r--sd/source/ui/slidesorter/cache/SlsCacheConfiguration.hxx77
-rw-r--r--sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx312
-rw-r--r--sd/source/ui/slidesorter/cache/SlsGenericPageCache.hxx149
-rw-r--r--sd/source/ui/slidesorter/cache/SlsPageCache.cxx127
-rw-r--r--sd/source/ui/slidesorter/cache/SlsPageCacheManager.cxx449
-rw-r--r--sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx257
-rw-r--r--sd/source/ui/slidesorter/cache/SlsQueueProcessor.hxx141
-rw-r--r--sd/source/ui/slidesorter/cache/SlsQueueProcessorThread.hxx368
-rw-r--r--sd/source/ui/slidesorter/cache/SlsRequestFactory.cxx80
-rw-r--r--sd/source/ui/slidesorter/cache/SlsRequestFactory.hxx51
-rw-r--r--sd/source/ui/slidesorter/cache/SlsRequestPriorityClass.hxx58
-rw-r--r--sd/source/ui/slidesorter/cache/SlsRequestQueue.cxx293
-rw-r--r--sd/source/ui/slidesorter/cache/SlsRequestQueue.hxx136
-rwxr-xr-xsd/source/ui/slidesorter/cache/makefile.mk64
-rw-r--r--sd/source/ui/slidesorter/controller/SlideSorterController.cxx999
-rw-r--r--sd/source/ui/slidesorter/controller/SlsAnimator.cxx235
-rw-r--r--sd/source/ui/slidesorter/controller/SlsClipboard.cxx780
-rw-r--r--sd/source/ui/slidesorter/controller/SlsCommand.hxx48
-rw-r--r--sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx259
-rw-r--r--sd/source/ui/slidesorter/controller/SlsFocusManager.cxx364
-rw-r--r--sd/source/ui/slidesorter/controller/SlsHideSlideFunction.cxx172
-rw-r--r--sd/source/ui/slidesorter/controller/SlsHideSlideFunction.hxx75
-rw-r--r--sd/source/ui/slidesorter/controller/SlsListener.cxx602
-rw-r--r--sd/source/ui/slidesorter/controller/SlsListener.hxx186
-rw-r--r--sd/source/ui/slidesorter/controller/SlsPageObjectFactory.cxx103
-rw-r--r--sd/source/ui/slidesorter/controller/SlsPageSelector.cxx327
-rw-r--r--sd/source/ui/slidesorter/controller/SlsProperties.cxx236
-rw-r--r--sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx634
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionCommand.cxx88
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionCommand.hxx98
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx1320
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx665
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlideFunction.cxx83
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlotManager.cxx1136
-rw-r--r--sd/source/ui/slidesorter/controller/SlsTransferable.cxx95
-rw-r--r--sd/source/ui/slidesorter/controller/SlsTransferable.hxx73
-rw-r--r--sd/source/ui/slidesorter/controller/makefile.mk71
-rw-r--r--sd/source/ui/slidesorter/inc/cache/SlsCacheContext.hxx108
-rw-r--r--sd/source/ui/slidesorter/inc/cache/SlsPageCache.hxx151
-rw-r--r--sd/source/ui/slidesorter/inc/cache/SlsPageCacheManager.hxx180
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx340
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsAnimator.hxx99
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx218
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx108
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx238
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsPageObjectFactory.hxx99
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx184
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsProperties.hxx130
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx252
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx206
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx214
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSlideFunction.hxx76
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx104
-rw-r--r--sd/source/ui/slidesorter/inc/model/SlideSorterModel.hxx204
-rw-r--r--sd/source/ui/slidesorter/inc/model/SlsEnumeration.hxx56
-rw-r--r--sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx218
-rw-r--r--sd/source/ui/slidesorter/inc/model/SlsPageEnumeration.hxx130
-rw-r--r--sd/source/ui/slidesorter/inc/model/SlsPageEnumerationProvider.hxx63
-rw-r--r--sd/source/ui/slidesorter/inc/model/SlsSharedPageDescriptor.hxx44
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlideSorterView.hxx310
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsFontProvider.hxx97
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx385
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsPageObject.hxx68
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsPageObjectViewContact.hxx92
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsPageObjectViewObjectContact.hxx228
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsViewOverlay.hxx276
-rw-r--r--sd/source/ui/slidesorter/makefile.mk58
-rw-r--r--sd/source/ui/slidesorter/model/SlideSorterModel.cxx445
-rw-r--r--sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx284
-rw-r--r--sd/source/ui/slidesorter/model/SlsPageEnumeration.cxx286
-rw-r--r--sd/source/ui/slidesorter/model/SlsPageEnumerationProvider.cxx113
-rw-r--r--sd/source/ui/slidesorter/model/makefile.mk56
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorter.cxx654
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorterChildWindow.cxx69
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorterChildWindow.src52
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorterService.cxx650
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorterService.hxx219
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx787
-rw-r--r--sd/source/ui/slidesorter/shell/makefile.mk55
-rw-r--r--sd/source/ui/slidesorter/view/SlideSorterView.cxx824
-rw-r--r--sd/source/ui/slidesorter/view/SlsFontProvider.cxx135
-rw-r--r--sd/source/ui/slidesorter/view/SlsLayouter.cxx761
-rw-r--r--sd/source/ui/slidesorter/view/SlsPageObject.cxx83
-rw-r--r--sd/source/ui/slidesorter/view/SlsPageObjectViewContact.cxx128
-rw-r--r--sd/source/ui/slidesorter/view/SlsPageObjectViewObjectContact.cxx1406
-rw-r--r--sd/source/ui/slidesorter/view/SlsViewCacheContext.cxx170
-rw-r--r--sd/source/ui/slidesorter/view/SlsViewCacheContext.hxx73
-rw-r--r--sd/source/ui/slidesorter/view/SlsViewOverlay.cxx609
-rw-r--r--sd/source/ui/slidesorter/view/makefile.mk61
-rw-r--r--sd/source/ui/table/TableDesignPane.cxx953
-rw-r--r--sd/source/ui/table/TableDesignPane.hrc50
-rw-r--r--sd/source/ui/table/TableDesignPane.hxx129
-rw-r--r--sd/source/ui/table/TableDesignPane.src154
-rw-r--r--sd/source/ui/table/makefile.mk56
-rw-r--r--sd/source/ui/table/tablefunction.cxx273
-rw-r--r--sd/source/ui/table/tableobjectbar.cxx237
-rw-r--r--sd/source/ui/table/tableobjectbar.hxx67
-rw-r--r--sd/source/ui/toolpanel/ConstrainedIterator.cxx270
-rw-r--r--sd/source/ui/toolpanel/ConstrainedIterator.hxx107
-rw-r--r--sd/source/ui/toolpanel/ControlContainer.cxx503
-rw-r--r--sd/source/ui/toolpanel/ControlContainerDescriptor.hxx140
-rw-r--r--sd/source/ui/toolpanel/ControlList.hxx62
-rw-r--r--sd/source/ui/toolpanel/LayoutMenu.cxx1015
-rw-r--r--sd/source/ui/toolpanel/LayoutMenu.hxx240
-rw-r--r--sd/source/ui/toolpanel/MethodGuard.hxx70
-rw-r--r--sd/source/ui/toolpanel/ScrollPanel.cxx837
-rw-r--r--sd/source/ui/toolpanel/SlideSorterCacheDisplay.cxx375
-rw-r--r--sd/source/ui/toolpanel/SubToolPanel.cxx422
-rw-r--r--sd/source/ui/toolpanel/TaskPaneControlFactory.cxx60
-rw-r--r--sd/source/ui/toolpanel/TaskPaneFocusManager.cxx328
-rw-r--r--sd/source/ui/toolpanel/TaskPaneFocusManager.hxx138
-rw-r--r--sd/source/ui/toolpanel/TaskPaneShellManager.cxx186
-rw-r--r--sd/source/ui/toolpanel/TaskPaneShellManager.hxx124
-rw-r--r--sd/source/ui/toolpanel/TaskPaneTreeNode.cxx295
-rw-r--r--sd/source/ui/toolpanel/TestMenu.cxx321
-rw-r--r--sd/source/ui/toolpanel/TestMenu.hxx87
-rw-r--r--sd/source/ui/toolpanel/TestPanel.cxx177
-rw-r--r--sd/source/ui/toolpanel/TestPanel.hxx60
-rw-r--r--sd/source/ui/toolpanel/TitleBar.cxx588
-rw-r--r--sd/source/ui/toolpanel/TitledControl.cxx435
-rw-r--r--sd/source/ui/toolpanel/ToolPanel.cxx116
-rw-r--r--sd/source/ui/toolpanel/ToolPanel.hxx83
-rw-r--r--sd/source/ui/toolpanel/ToolPanelDescriptor.hxx92
-rw-r--r--sd/source/ui/toolpanel/ToolPanelFactory.cxx258
-rw-r--r--sd/source/ui/toolpanel/ToolPanelUIElement.cxx137
-rw-r--r--sd/source/ui/toolpanel/ToolPanelUIElement.hxx90
-rw-r--r--sd/source/ui/toolpanel/ToolPanelViewShell.cxx916
-rw-r--r--sd/source/ui/toolpanel/controls/AllMasterPagesSelector.cxx211
-rw-r--r--sd/source/ui/toolpanel/controls/AllMasterPagesSelector.hxx97
-rw-r--r--sd/source/ui/toolpanel/controls/AnimationSchemesPanel.cxx173
-rw-r--r--sd/source/ui/toolpanel/controls/AnimationSchemesPanel.hxx141
-rw-r--r--sd/source/ui/toolpanel/controls/CurrentMasterPagesSelector.cxx346
-rw-r--r--sd/source/ui/toolpanel/controls/CurrentMasterPagesSelector.hxx86
-rw-r--r--sd/source/ui/toolpanel/controls/CustomAnimationPanel.cxx116
-rw-r--r--sd/source/ui/toolpanel/controls/CustomAnimationPanel.hxx84
-rw-r--r--sd/source/ui/toolpanel/controls/DocumentHelper.cxx584
-rw-r--r--sd/source/ui/toolpanel/controls/DocumentHelper.hxx119
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainer.cxx1223
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainer.hxx223
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainerFiller.cxx202
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainerFiller.hxx98
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainerProviders.cxx432
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainerProviders.hxx192
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainerQueue.cxx307
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainerQueue.hxx139
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageDescriptor.cxx426
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageDescriptor.hxx243
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageObserver.cxx429
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPagesPanel.cxx160
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPagesPanel.hxx75
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx846
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPagesSelector.hxx238
-rw-r--r--sd/source/ui/toolpanel/controls/PreviewValueSet.cxx243
-rw-r--r--sd/source/ui/toolpanel/controls/PreviewValueSet.hxx99
-rw-r--r--sd/source/ui/toolpanel/controls/RecentMasterPagesSelector.cxx162
-rw-r--r--sd/source/ui/toolpanel/controls/RecentMasterPagesSelector.hxx79
-rw-r--r--sd/source/ui/toolpanel/controls/RecentlyUsedMasterPages.cxx496
-rw-r--r--sd/source/ui/toolpanel/controls/RecentlyUsedMasterPages.hxx131
-rw-r--r--sd/source/ui/toolpanel/controls/SlideTransitionPanel.cxx119
-rw-r--r--sd/source/ui/toolpanel/controls/SlideTransitionPanel.hxx84
-rw-r--r--sd/source/ui/toolpanel/controls/TableDesignPanel.cxx113
-rw-r--r--sd/source/ui/toolpanel/controls/TableDesignPanel.hxx84
-rwxr-xr-xsd/source/ui/toolpanel/controls/makefile.mk67
-rwxr-xr-xsd/source/ui/toolpanel/makefile.mk70
-rw-r--r--sd/source/ui/tools/AsynchronousCall.cxx85
-rw-r--r--sd/source/ui/tools/ConfigurationAccess.cxx232
-rw-r--r--sd/source/ui/tools/EventMultiplexer.cxx826
-rw-r--r--sd/source/ui/tools/IconCache.cxx136
-rw-r--r--sd/source/ui/tools/IdleDetection.cxx130
-rw-r--r--sd/source/ui/tools/PreviewRenderer.cxx505
-rw-r--r--sd/source/ui/tools/PropertySet.cxx235
-rw-r--r--sd/source/ui/tools/SdGlobalResourceContainer.cxx218
-rw-r--r--sd/source/ui/tools/SlotStateListener.cxx226
-rw-r--r--sd/source/ui/tools/TimerBasedTaskExecution.cxx182
-rw-r--r--sd/source/ui/tools/makefile.mk61
-rw-r--r--sd/source/ui/unoidl/DrawController.cxx937
-rw-r--r--sd/source/ui/unoidl/SdUnoDrawView.cxx642
-rw-r--r--sd/source/ui/unoidl/SdUnoOutlineView.cxx273
-rw-r--r--sd/source/ui/unoidl/SdUnoSlideView.cxx277
-rw-r--r--sd/source/ui/unoidl/UnoDocumentSettings.cxx1243
-rw-r--r--sd/source/ui/unoidl/UnoDocumentSettings.hxx43
-rw-r--r--sd/source/ui/unoidl/detreg.cxx115
-rw-r--r--sd/source/ui/unoidl/facreg.cxx626
-rwxr-xr-xsd/source/ui/unoidl/makefile.mk90
-rw-r--r--sd/source/ui/unoidl/randomnode.cxx705
-rw-r--r--sd/source/ui/unoidl/sddetect.cxx550
-rw-r--r--sd/source/ui/unoidl/sddetect.hxx98
-rw-r--r--sd/source/ui/unoidl/unocpres.cxx497
-rw-r--r--sd/source/ui/unoidl/unocpres.hxx171
-rw-r--r--sd/source/ui/unoidl/unodoc.cxx106
-rw-r--r--sd/source/ui/unoidl/unohelp.hxx62
-rw-r--r--sd/source/ui/unoidl/unokywds.cxx39
-rw-r--r--sd/source/ui/unoidl/unolayer.cxx832
-rw-r--r--sd/source/ui/unoidl/unolayer.hxx190
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx3069
-rw-r--r--sd/source/ui/unoidl/unomodule.cxx165
-rw-r--r--sd/source/ui/unoidl/unomodule.hxx101
-rw-r--r--sd/source/ui/unoidl/unoobj.cxx1762
-rw-r--r--sd/source/ui/unoidl/unoobj.hxx140
-rw-r--r--sd/source/ui/unoidl/unopage.cxx3181
-rw-r--r--sd/source/ui/unoidl/unopage.hxx320
-rw-r--r--sd/source/ui/unoidl/unopback.cxx464
-rw-r--r--sd/source/ui/unoidl/unopback.hxx94
-rw-r--r--sd/source/ui/unoidl/unopool.cxx102
-rw-r--r--sd/source/ui/unoidl/unosrch.cxx880
-rw-r--r--sd/source/ui/unoidl/unowcntr.cxx127
-rw-r--r--sd/source/ui/unoidl/unowcntr.hxx60
-rw-r--r--sd/source/ui/view/DocumentRenderer.cxx2381
-rw-r--r--sd/source/ui/view/DocumentRenderer.hrc77
-rwxr-xr-xsd/source/ui/view/DocumentRenderer.src296
-rw-r--r--sd/source/ui/view/FormShellManager.cxx388
-rw-r--r--sd/source/ui/view/GraphicObjectBar.cxx188
-rw-r--r--sd/source/ui/view/GraphicViewShellBase.cxx140
-rw-r--r--sd/source/ui/view/ImpressViewShellBase.cxx130
-rw-r--r--sd/source/ui/view/MediaObjectBar.cxx169
-rw-r--r--sd/source/ui/view/OutlineViewShellBase.cxx94
-rw-r--r--sd/source/ui/view/Outliner.cxx1831
-rw-r--r--sd/source/ui/view/OutlinerIterator.cxx901
-rw-r--r--sd/source/ui/view/PresentationViewShellBase.cxx132
-rw-r--r--sd/source/ui/view/SlideSorterViewShellBase.cxx105
-rw-r--r--sd/source/ui/view/ToolBarManager.cxx1698
-rw-r--r--sd/source/ui/view/UpdateLockManager.cxx432
-rw-r--r--sd/source/ui/view/ViewClipboard.cxx277
-rw-r--r--sd/source/ui/view/ViewShellBase.cxx1789
-rw-r--r--sd/source/ui/view/ViewShellHint.cxx55
-rw-r--r--sd/source/ui/view/ViewShellImplementation.cxx452
-rw-r--r--sd/source/ui/view/ViewShellManager.cxx1459
-rw-r--r--sd/source/ui/view/ViewTabBar.cxx719
-rw-r--r--sd/source/ui/view/WindowUpdater.cxx190
-rw-r--r--sd/source/ui/view/bmcache.cxx80
-rw-r--r--sd/source/ui/view/clview.cxx110
-rw-r--r--sd/source/ui/view/drawview.cxx648
-rw-r--r--sd/source/ui/view/drbezob.cxx368
-rw-r--r--sd/source/ui/view/drtxtob.cxx594
-rw-r--r--sd/source/ui/view/drtxtob1.cxx615
-rw-r--r--sd/source/ui/view/drviews1.cxx1445
-rw-r--r--sd/source/ui/view/drviews2.cxx995
-rw-r--r--sd/source/ui/view/drviews3.cxx1025
-rw-r--r--sd/source/ui/view/drviews4.cxx1006
-rw-r--r--sd/source/ui/view/drviews5.cxx748
-rw-r--r--sd/source/ui/view/drviews6.cxx733
-rw-r--r--sd/source/ui/view/drviews7.cxx1724
-rw-r--r--sd/source/ui/view/drviews8.cxx553
-rw-r--r--sd/source/ui/view/drviews9.cxx880
-rw-r--r--sd/source/ui/view/drviewsa.cxx860
-rw-r--r--sd/source/ui/view/drviewsb.cxx878
-rw-r--r--sd/source/ui/view/drviewsc.cxx991
-rw-r--r--sd/source/ui/view/drviewsd.cxx258
-rw-r--r--sd/source/ui/view/drviewse.cxx1687
-rw-r--r--sd/source/ui/view/drviewsf.cxx571
-rw-r--r--sd/source/ui/view/drviewsg.cxx295
-rw-r--r--sd/source/ui/view/drviewsh.cxx194
-rw-r--r--sd/source/ui/view/drviewsi.cxx206
-rw-r--r--sd/source/ui/view/drviewsj.cxx566
-rw-r--r--sd/source/ui/view/drvwshrg.cxx130
-rw-r--r--sd/source/ui/view/frmview.cxx1215
-rw-r--r--sd/source/ui/view/grviewsh.cxx159
-rw-r--r--sd/source/ui/view/makefile.mk123
-rw-r--r--sd/source/ui/view/outlnvs2.cxx649
-rw-r--r--sd/source/ui/view/outlnvsh.cxx2248
-rw-r--r--sd/source/ui/view/outlview.cxx2155
-rw-r--r--sd/source/ui/view/presvish.cxx189
-rw-r--r--sd/source/ui/view/sdruler.cxx226
-rw-r--r--sd/source/ui/view/sdview.cxx1317
-rw-r--r--sd/source/ui/view/sdview2.cxx1039
-rw-r--r--sd/source/ui/view/sdview3.cxx1488
-rw-r--r--sd/source/ui/view/sdview4.cxx637
-rw-r--r--sd/source/ui/view/sdview5.cxx117
-rw-r--r--sd/source/ui/view/sdwindow.cxx1228
-rw-r--r--sd/source/ui/view/tabcontr.cxx467
-rw-r--r--sd/source/ui/view/unmodpg.cxx251
-rw-r--r--sd/source/ui/view/viewoverlaymanager.cxx622
-rw-r--r--sd/source/ui/view/viewshe2.cxx1210
-rw-r--r--sd/source/ui/view/viewshe3.cxx441
-rw-r--r--sd/source/ui/view/viewshel.cxx1614
-rw-r--r--sd/source/ui/view/zoomlist.cxx196
-rw-r--r--sd/source/unotypes/makefile.mk53
-rw-r--r--sd/uiconfig/sdraw/menubar/menubar.xml332
-rw-r--r--sd/uiconfig/sdraw/statusbar/statusbar.xml12
-rw-r--r--sd/uiconfig/sdraw/toolbar/3dobjectsbar.xml13
-rw-r--r--sd/uiconfig/sdraw/toolbar/alignmentbar.xml11
-rw-r--r--sd/uiconfig/sdraw/toolbar/arrowsbar.xml16
-rw-r--r--sd/uiconfig/sdraw/toolbar/arrowshapes.xml34
-rw-r--r--sd/uiconfig/sdraw/toolbar/basicshapes.xml29
-rw-r--r--sd/uiconfig/sdraw/toolbar/bezierobjectbar.xml20
-rw-r--r--sd/uiconfig/sdraw/toolbar/calloutshapes.xml11
-rw-r--r--sd/uiconfig/sdraw/toolbar/choosemodebar.xml13
-rw-r--r--sd/uiconfig/sdraw/toolbar/colorbar.xml15
-rw-r--r--sd/uiconfig/sdraw/toolbar/commentsbar.xml11
-rw-r--r--sd/uiconfig/sdraw/toolbar/connectorsbar.xml35
-rw-r--r--sd/uiconfig/sdraw/toolbar/drawingobjectbar.xml21
-rw-r--r--sd/uiconfig/sdraw/toolbar/ellipsesbar.xml19
-rwxr-xr-xsd/uiconfig/sdraw/toolbar/extrusionobjectbar.xml16
-rw-r--r--sd/uiconfig/sdraw/toolbar/findbar.xml8
-rw-r--r--sd/uiconfig/sdraw/toolbar/flowchartshapes.xml36
-rwxr-xr-xsd/uiconfig/sdraw/toolbar/fontworkobjectbar.xml11
-rw-r--r--sd/uiconfig/sdraw/toolbar/fontworkshapetype.xml38
-rw-r--r--sd/uiconfig/sdraw/toolbar/formcontrols.xml26
-rw-r--r--sd/uiconfig/sdraw/toolbar/formdesign.xml29
-rw-r--r--sd/uiconfig/sdraw/toolbar/formsfilterbar.xml8
-rw-r--r--sd/uiconfig/sdraw/toolbar/formsnavigationbar.xml32
-rw-r--r--sd/uiconfig/sdraw/toolbar/formtextobjectbar.xml28
-rw-r--r--sd/uiconfig/sdraw/toolbar/fullscreenbar.xml5
-rw-r--r--sd/uiconfig/sdraw/toolbar/gluepointsobjectbar.xml20
-rw-r--r--sd/uiconfig/sdraw/toolbar/graffilterbar.xml17
-rw-r--r--sd/uiconfig/sdraw/toolbar/graphicobjectbar.xml17
-rw-r--r--sd/uiconfig/sdraw/toolbar/insertbar.xml20
-rw-r--r--sd/uiconfig/sdraw/toolbar/linesbar.xml13
-rw-r--r--sd/uiconfig/sdraw/toolbar/masterviewtoolbar.xml9
-rw-r--r--sd/uiconfig/sdraw/toolbar/mediaobjectbar.xml7
-rw-r--r--sd/uiconfig/sdraw/toolbar/moreformcontrols.xml23
-rw-r--r--sd/uiconfig/sdraw/toolbar/optimizetablebar.xml6
-rw-r--r--sd/uiconfig/sdraw/toolbar/optionsbar.xml25
-rw-r--r--sd/uiconfig/sdraw/toolbar/positionbar.xml13
-rw-r--r--sd/uiconfig/sdraw/toolbar/rectanglesbar.xml13
-rw-r--r--sd/uiconfig/sdraw/toolbar/standardbar.xml37
-rw-r--r--sd/uiconfig/sdraw/toolbar/starshapes.xml17
-rw-r--r--sd/uiconfig/sdraw/toolbar/symbolshapes.xml24
-rw-r--r--sd/uiconfig/sdraw/toolbar/tableobjectbar.xml31
-rw-r--r--sd/uiconfig/sdraw/toolbar/textbar.xml11
-rw-r--r--sd/uiconfig/sdraw/toolbar/textobjectbar.xml40
-rw-r--r--sd/uiconfig/sdraw/toolbar/toolbar.xml45
-rw-r--r--sd/uiconfig/sdraw/toolbar/viewerbar.xml18
-rw-r--r--sd/uiconfig/sdraw/toolbar/zoombar.xml16
-rwxr-xr-xsd/uiconfig/simpress/menubar/menubar.xml306
-rw-r--r--sd/uiconfig/simpress/statusbar/statusbar.xml12
-rw-r--r--sd/uiconfig/simpress/toolbar/3dobjectsbar.xml13
-rw-r--r--sd/uiconfig/simpress/toolbar/alignmentbar.xml11
-rw-r--r--sd/uiconfig/simpress/toolbar/arrowsbar.xml16
-rw-r--r--sd/uiconfig/simpress/toolbar/arrowshapes.xml34
-rw-r--r--sd/uiconfig/simpress/toolbar/basicshapes.xml29
-rw-r--r--sd/uiconfig/simpress/toolbar/bezierobjectbar.xml20
-rw-r--r--sd/uiconfig/simpress/toolbar/calloutshapes.xml11
-rw-r--r--sd/uiconfig/simpress/toolbar/choosemodebar.xml13
-rw-r--r--sd/uiconfig/simpress/toolbar/colorbar.xml15
-rw-r--r--sd/uiconfig/simpress/toolbar/commentsbar.xml11
-rwxr-xr-xsd/uiconfig/simpress/toolbar/commontaskbar.xml11
-rw-r--r--sd/uiconfig/simpress/toolbar/connectorsbar.xml35
-rw-r--r--sd/uiconfig/simpress/toolbar/drawingobjectbar.xml21
-rw-r--r--sd/uiconfig/simpress/toolbar/ellipsesbar.xml19
-rwxr-xr-xsd/uiconfig/simpress/toolbar/extrusionobjectbar.xml16
-rw-r--r--sd/uiconfig/simpress/toolbar/findbar.xml8
-rw-r--r--sd/uiconfig/simpress/toolbar/flowchartshapes.xml36
-rwxr-xr-xsd/uiconfig/simpress/toolbar/fontworkobjectbar.xml11
-rw-r--r--sd/uiconfig/simpress/toolbar/fontworkshapetype.xml38
-rw-r--r--sd/uiconfig/simpress/toolbar/formcontrols.xml26
-rw-r--r--sd/uiconfig/simpress/toolbar/formdesign.xml29
-rw-r--r--sd/uiconfig/simpress/toolbar/formsfilterbar.xml8
-rw-r--r--sd/uiconfig/simpress/toolbar/formsnavigationbar.xml32
-rw-r--r--sd/uiconfig/simpress/toolbar/formtextobjectbar.xml28
-rw-r--r--sd/uiconfig/simpress/toolbar/fullscreenbar.xml5
-rw-r--r--sd/uiconfig/simpress/toolbar/gluepointsobjectbar.xml20
-rw-r--r--sd/uiconfig/simpress/toolbar/graffilterbar.xml17
-rw-r--r--sd/uiconfig/simpress/toolbar/graphicobjectbar.xml17
-rwxr-xr-xsd/uiconfig/simpress/toolbar/insertbar.xml20
-rw-r--r--sd/uiconfig/simpress/toolbar/linesbar.xml13
-rw-r--r--sd/uiconfig/simpress/toolbar/masterviewtoolbar.xml9
-rw-r--r--sd/uiconfig/simpress/toolbar/mediaobjectbar.xml7
-rw-r--r--sd/uiconfig/simpress/toolbar/moreformcontrols.xml23
-rw-r--r--sd/uiconfig/simpress/toolbar/optimizetablebar.xml6
-rw-r--r--sd/uiconfig/simpress/toolbar/optionsbar.xml25
-rw-r--r--sd/uiconfig/simpress/toolbar/outlinetoolbar.xml13
-rw-r--r--sd/uiconfig/simpress/toolbar/positionbar.xml13
-rw-r--r--sd/uiconfig/simpress/toolbar/rectanglesbar.xml13
-rw-r--r--sd/uiconfig/simpress/toolbar/slideviewobjectbar.xml10
-rw-r--r--sd/uiconfig/simpress/toolbar/slideviewtoolbar.xml7
-rw-r--r--sd/uiconfig/simpress/toolbar/standardbar.xml39
-rw-r--r--sd/uiconfig/simpress/toolbar/starshapes.xml17
-rw-r--r--sd/uiconfig/simpress/toolbar/symbolshapes.xml24
-rw-r--r--sd/uiconfig/simpress/toolbar/tableobjectbar.xml31
-rw-r--r--sd/uiconfig/simpress/toolbar/textbar.xml11
-rw-r--r--sd/uiconfig/simpress/toolbar/textobjectbar.xml45
-rw-r--r--sd/uiconfig/simpress/toolbar/toolbar.xml49
-rw-r--r--sd/uiconfig/simpress/toolbar/viewerbar.xml20
-rw-r--r--sd/uiconfig/simpress/toolbar/zoombar.xml16
-rw-r--r--sd/util/exports.dxp3
-rw-r--r--sd/util/hidother.hrc43
-rw-r--r--sd/util/hidother.src206
-rwxr-xr-xsd/util/makefile.mk281
-rw-r--r--sd/util/makefile.pmk32
-rw-r--r--sd/util/sd.flt136
-rw-r--r--sd/util/sdfilt.map11
-rw-r--r--sd/util/sdui.map6
-rw-r--r--sd/workben/custompanel/ctp_panel.cxx252
-rw-r--r--sd/workben/custompanel/ctp_panel.hxx102
-rw-r--r--sd/workben/testdll/makefile101
-rw-r--r--sd/xml/AccessibleDrawDocumentView.xml41
-rw-r--r--sd/xml/AccessibleOutlineView.xml39
-rw-r--r--sd/xml/AccessiblePageShape.xml39
-rw-r--r--sd/xml/AccessiblePresentationGraphicShape.xml40
-rw-r--r--sd/xml/AccessiblePresentationOLEShape.xml40
-rw-r--r--sd/xml/AccessiblePresentationShape.xml38
-rw-r--r--sd/xml/AccessibleSlideView.xml35
-rw-r--r--sd/xml/AccessibleSlideViewObject.xml34
-rw-r--r--sd/xml/DrawingView.xml17
-rw-r--r--sd/xml/HandoutView.xml17
-rw-r--r--sd/xml/NotesView.xml17
-rw-r--r--sd/xml/OutlineView.xml17
-rw-r--r--sd/xml/PresentationView.xml17
-rw-r--r--sd/xml/SdDocLinkTargets.xml16
-rw-r--r--sd/xml/SdDrawPage.xml16
-rw-r--r--sd/xml/SdDrawPagesAccess.xml16
-rw-r--r--sd/xml/SdGenericDrawPage.xml16
-rw-r--r--sd/xml/SdLayer.xml16
-rw-r--r--sd/xml/SdLayerManager.xml16
-rw-r--r--sd/xml/SdMasterPage.xml16
-rw-r--r--sd/xml/SdMasterPagesAccess.xml16
-rw-r--r--sd/xml/SdPageLinkTargets.xml16
-rw-r--r--sd/xml/SdXCustomPresentation.xml16
-rw-r--r--sd/xml/SdXCustomPresentationAccess.xml16
-rw-r--r--sd/xml/SdXImpressDocument.xml16
-rw-r--r--sd/xml/SdXPresentation.xml16
-rw-r--r--sd/xml/SdXShape.xml16
-rw-r--r--sd/xml/SlidesView.xml17
-rw-r--r--sd/xml/effects.xml2630
-rw-r--r--sd/xml/transitions-ogl.xml33
-rw-r--r--sd/xml/transitions.xml225
-rw-r--r--sd/xsl/effect.xsl563
-rw-r--r--sdext/inc/makefile.mk47
-rw-r--r--sdext/inc/pch/precompiled_sdext.cxx31
-rw-r--r--sdext/inc/pch/precompiled_sdext.hxx34
-rw-r--r--sdext/prj/build.lst19
-rw-r--r--sdext/prj/d.lst13
-rw-r--r--sdext/source/minimizer/basic.txt89
-rw-r--r--sdext/source/minimizer/configurationaccess.cxx540
-rw-r--r--sdext/source/minimizer/configurationaccess.hxx141
-rw-r--r--sdext/source/minimizer/delzip1
-rwxr-xr-xsdext/source/minimizer/description.xml31
-rw-r--r--sdext/source/minimizer/fileopendialog.cxx210
-rw-r--r--sdext/source/minimizer/fileopendialog.hxx74
-rw-r--r--sdext/source/minimizer/graphiccollector.cxx462
-rw-r--r--sdext/source/minimizer/graphiccollector.hxx109
-rwxr-xr-xsdext/source/minimizer/help/component.txt2
-rw-r--r--sdext/source/minimizer/help/help_de.odtbin0 -> 8987 bytes
-rw-r--r--sdext/source/minimizer/help/help_en-US.odtbin0 -> 8987 bytes
-rw-r--r--sdext/source/minimizer/impoptimizer.cxx752
-rw-r--r--sdext/source/minimizer/impoptimizer.hxx88
-rw-r--r--sdext/source/minimizer/informationdialog.cxx411
-rw-r--r--sdext/source/minimizer/informationdialog.hxx102
-rwxr-xr-xsdext/source/minimizer/makefile.mk153
-rw-r--r--sdext/source/minimizer/manifest.xml16
-rw-r--r--sdext/source/minimizer/minimizer.pmk28
-rw-r--r--sdext/source/minimizer/optimizationstats.cxx105
-rw-r--r--sdext/source/minimizer/optimizationstats.hxx66
-rw-r--r--sdext/source/minimizer/optimizerdialog.cxx840
-rw-r--r--sdext/source/minimizer/optimizerdialog.hrc36
-rw-r--r--sdext/source/minimizer/optimizerdialog.hxx248
-rw-r--r--sdext/source/minimizer/optimizerdialogcontrols.cxx961
-rw-r--r--sdext/source/minimizer/pagecollector.cxx182
-rw-r--r--sdext/source/minimizer/pagecollector.hxx52
-rw-r--r--sdext/source/minimizer/pppoptimizer.cxx212
-rw-r--r--sdext/source/minimizer/pppoptimizer.hxx103
-rw-r--r--sdext/source/minimizer/pppoptimizerdialog.cxx220
-rw-r--r--sdext/source/minimizer/pppoptimizerdialog.hxx112
-rw-r--r--sdext/source/minimizer/pppoptimizertoken.cxx341
-rw-r--r--sdext/source/minimizer/pppoptimizertoken.hxx286
-rw-r--r--sdext/source/minimizer/pppoptimizeruno.cxx123
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu65
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/ProtocolHandler.xcu10
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu383
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/extension/makefile.mk50
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/makefile.mk48
-rw-r--r--sdext/source/minimizer/registry/schema/org/openoffice/Office/extension/SunPresentationMinimizer.xcs326
-rw-r--r--sdext/source/minimizer/unodialog.cxx406
-rw-r--r--sdext/source/minimizer/unodialog.hxx148
-rwxr-xr-xsdext/source/pdfimport/config/description.xml30
-rw-r--r--sdext/source/pdfimport/config/manifest.xml16
-rw-r--r--sdext/source/pdfimport/config/pdf_import_filter.xcu199
-rw-r--r--sdext/source/pdfimport/config/pdf_types.xcu18
-rw-r--r--sdext/source/pdfimport/delzip1
-rw-r--r--sdext/source/pdfimport/dialogs/Module1.xba7
-rw-r--r--sdext/source/pdfimport/dialogs/TargetChooser.xdl21
-rw-r--r--sdext/source/pdfimport/dialogs/dialog.xlb5
-rw-r--r--sdext/source/pdfimport/dialogs/impress.pngbin0 -> 11117 bytes
-rw-r--r--sdext/source/pdfimport/dialogs/script.xlb5
-rw-r--r--sdext/source/pdfimport/dialogs/writer.pngbin0 -> 10176 bytes
-rwxr-xr-xsdext/source/pdfimport/dialogs/xpdfimport_err.pdfbin0 -> 21204 bytes
-rw-r--r--sdext/source/pdfimport/filterdet.cxx753
-rw-r--r--sdext/source/pdfimport/filterdet.hxx116
-rwxr-xr-xsdext/source/pdfimport/help/component.txt1
-rw-r--r--sdext/source/pdfimport/inc/contentsink.hxx186
-rw-r--r--sdext/source/pdfimport/inc/odfemitter.hxx48
-rw-r--r--sdext/source/pdfimport/inc/pdfihelper.hxx203
-rw-r--r--sdext/source/pdfimport/inc/pdfparse.hxx312
-rw-r--r--sdext/source/pdfimport/inc/saxemitter.hxx49
-rw-r--r--sdext/source/pdfimport/inc/treevisitorfactory.hxx69
-rw-r--r--sdext/source/pdfimport/inc/wrapper.hxx66
-rw-r--r--sdext/source/pdfimport/inc/xmlemitter.hxx62
-rwxr-xr-xsdext/source/pdfimport/makefile.mk155
-rw-r--r--sdext/source/pdfimport/misc/makefile.mk51
-rw-r--r--sdext/source/pdfimport/misc/pdfihelper.cxx82
-rw-r--r--sdext/source/pdfimport/misc/pwdinteract.cxx166
-rw-r--r--sdext/source/pdfimport/odf/makefile.mk50
-rw-r--r--sdext/source/pdfimport/odf/odfemitter.cxx139
-rw-r--r--sdext/source/pdfimport/pdfiadaptor.cxx332
-rw-r--r--sdext/source/pdfimport/pdfiadaptor.hxx141
-rw-r--r--sdext/source/pdfimport/pdfisettings.pmk28
-rw-r--r--sdext/source/pdfimport/pdfparse/makefile.mk58
-rw-r--r--sdext/source/pdfimport/pdfparse/pdfentries.cxx1366
-rw-r--r--sdext/source/pdfimport/pdfparse/pdfparse.cxx703
-rw-r--r--sdext/source/pdfimport/sax/emitcontext.cxx193
-rw-r--r--sdext/source/pdfimport/sax/emitcontext.hxx62
-rw-r--r--sdext/source/pdfimport/sax/makefile.mk51
-rw-r--r--sdext/source/pdfimport/sax/saxattrlist.cxx106
-rw-r--r--sdext/source/pdfimport/sax/saxattrlist.hxx79
-rw-r--r--sdext/source/pdfimport/services.cxx190
-rwxr-xr-xsdext/source/pdfimport/test/export.map34
-rwxr-xr-xsdext/source/pdfimport/test/makefile.mk166
-rw-r--r--sdext/source/pdfimport/test/outputwrap.hxx75
-rw-r--r--sdext/source/pdfimport/test/pdf2xml.cxx108
-rw-r--r--sdext/source/pdfimport/test/pdfunzip.cxx540
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats.pdfbin0 -> 27149 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_draw.xml242
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_impress.xml242
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_writer.xml368
-rw-r--r--sdext/source/pdfimport/test/testdocs/makefile.mk81
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt.pdfbin0 -> 24475 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_draw.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_impress.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_writer.xml533
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic.pdfbin0 -> 24486 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_draw.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_impress.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_writer.xml533
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt.pdfbin0 -> 24484 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_draw.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_impress.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_writer.xml533
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext.pdfbin0 -> 16533 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_draw.xml216
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_impress.xml216
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_writer.xml339
-rwxr-xr-xsdext/source/pdfimport/test/testinput.odpbin0 -> 40660 bytes
-rwxr-xr-xsdext/source/pdfimport/test/testinput.pdfbin0 -> 67103 bytes
-rw-r--r--sdext/source/pdfimport/test/tests.cxx582
-rw-r--r--sdext/source/pdfimport/tree/drawtreevisiting.cxx1084
-rw-r--r--sdext/source/pdfimport/tree/drawtreevisiting.hxx123
-rw-r--r--sdext/source/pdfimport/tree/genericelements.cxx496
-rw-r--r--sdext/source/pdfimport/tree/genericelements.hxx326
-rw-r--r--sdext/source/pdfimport/tree/imagecontainer.cxx156
-rw-r--r--sdext/source/pdfimport/tree/imagecontainer.hxx63
-rw-r--r--sdext/source/pdfimport/tree/makefile.mk56
-rw-r--r--sdext/source/pdfimport/tree/pdfiprocessor.cxx1052
-rw-r--r--sdext/source/pdfimport/tree/pdfiprocessor.hxx297
-rw-r--r--sdext/source/pdfimport/tree/style.cxx260
-rw-r--r--sdext/source/pdfimport/tree/style.hxx184
-rw-r--r--sdext/source/pdfimport/tree/treevisiting.hxx83
-rw-r--r--sdext/source/pdfimport/tree/treevisitorfactory.cxx120
-rw-r--r--sdext/source/pdfimport/tree/writertreevisiting.cxx1221
-rw-r--r--sdext/source/pdfimport/tree/writertreevisiting.hxx119
-rwxr-xr-xsdext/source/pdfimport/wrapper/keyword_list53
-rwxr-xr-xsdext/source/pdfimport/wrapper/makefile.mk59
-rw-r--r--sdext/source/pdfimport/wrapper/wrapper.cxx1118
-rw-r--r--sdext/source/pdfimport/xpdftest/binary_0_out.defbin0 -> 80097 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/binary_1_out.defbin0 -> 75159156 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/book.pdfbin0 -> 463628 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/makefile.mk59
-rw-r--r--sdext/source/pdfimport/xpdftest/testinput.odpbin0 -> 44591 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/testinput.pdfbin0 -> 64488 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/text_0_out.def202
-rw-r--r--sdext/source/pdfimport/xpdftest/text_1_out.def70338
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/makefile.mk82
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx931
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx292
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx418
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pnghelper.hxx95
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx212
-rw-r--r--sdext/source/presenter/PresenterAccessibility.cxx2490
-rw-r--r--sdext/source/presenter/PresenterAccessibility.hxx159
-rw-r--r--sdext/source/presenter/PresenterAnimation.cxx143
-rw-r--r--sdext/source/presenter/PresenterAnimation.hxx133
-rw-r--r--sdext/source/presenter/PresenterAnimator.cxx174
-rw-r--r--sdext/source/presenter/PresenterAnimator.hxx75
-rw-r--r--sdext/source/presenter/PresenterBitmapContainer.cxx501
-rw-r--r--sdext/source/presenter/PresenterBitmapContainer.hxx168
-rw-r--r--sdext/source/presenter/PresenterButton.cxx615
-rw-r--r--sdext/source/presenter/PresenterButton.hxx188
-rw-r--r--sdext/source/presenter/PresenterCanvasHelper.cxx331
-rw-r--r--sdext/source/presenter/PresenterCanvasHelper.hxx122
-rw-r--r--sdext/source/presenter/PresenterClock.cxx1452
-rw-r--r--sdext/source/presenter/PresenterClock.hxx202
-rw-r--r--sdext/source/presenter/PresenterComponent.cxx153
-rw-r--r--sdext/source/presenter/PresenterComponent.hxx58
-rw-r--r--sdext/source/presenter/PresenterConfigurationAccess.cxx412
-rw-r--r--sdext/source/presenter/PresenterConfigurationAccess.hxx208
-rw-r--r--sdext/source/presenter/PresenterController.cxx1380
-rw-r--r--sdext/source/presenter/PresenterController.hxx270
-rw-r--r--sdext/source/presenter/PresenterCurrentSlideObserver.cxx157
-rw-r--r--sdext/source/presenter/PresenterCurrentSlideObserver.hxx98
-rw-r--r--sdext/source/presenter/PresenterExtensionIdentifier.txx41
-rw-r--r--sdext/source/presenter/PresenterFrameworkObserver.cxx216
-rw-r--r--sdext/source/presenter/PresenterFrameworkObserver.hxx133
-rw-r--r--sdext/source/presenter/PresenterGeometryHelper.cxx337
-rw-r--r--sdext/source/presenter/PresenterGeometryHelper.hxx134
-rw-r--r--sdext/source/presenter/PresenterHelpView.cxx825
-rw-r--r--sdext/source/presenter/PresenterHelpView.hxx146
-rw-r--r--sdext/source/presenter/PresenterHelper.cxx96
-rw-r--r--sdext/source/presenter/PresenterHelper.hxx80
-rw-r--r--sdext/source/presenter/PresenterNotesView.cxx810
-rw-r--r--sdext/source/presenter/PresenterNotesView.hxx200
-rw-r--r--sdext/source/presenter/PresenterPaintManager.cxx178
-rw-r--r--sdext/source/presenter/PresenterPaintManager.hxx99
-rw-r--r--sdext/source/presenter/PresenterPane.cxx237
-rw-r--r--sdext/source/presenter/PresenterPane.hxx121
-rw-r--r--sdext/source/presenter/PresenterPaneAnimator.cxx1427
-rw-r--r--sdext/source/presenter/PresenterPaneAnimator.hxx97
-rw-r--r--sdext/source/presenter/PresenterPaneBase.cxx561
-rw-r--r--sdext/source/presenter/PresenterPaneBase.hxx176
-rw-r--r--sdext/source/presenter/PresenterPaneBorderManager.cxx585
-rw-r--r--sdext/source/presenter/PresenterPaneBorderManager.hxx176
-rw-r--r--sdext/source/presenter/PresenterPaneBorderPainter.cxx1104
-rw-r--r--sdext/source/presenter/PresenterPaneBorderPainter.hxx166
-rw-r--r--sdext/source/presenter/PresenterPaneContainer.cxx450
-rw-r--r--sdext/source/presenter/PresenterPaneContainer.hxx200
-rw-r--r--sdext/source/presenter/PresenterPaneFactory.cxx381
-rw-r--r--sdext/source/presenter/PresenterPaneFactory.hxx142
-rw-r--r--sdext/source/presenter/PresenterProtocolHandler.cxx1004
-rw-r--r--sdext/source/presenter/PresenterProtocolHandler.hxx106
-rw-r--r--sdext/source/presenter/PresenterScreen.cxx930
-rw-r--r--sdext/source/presenter/PresenterScreen.hxx250
-rw-r--r--sdext/source/presenter/PresenterScrollBar.cxx1348
-rw-r--r--sdext/source/presenter/PresenterScrollBar.hxx340
-rw-r--r--sdext/source/presenter/PresenterSlidePreview.cxx429
-rw-r--r--sdext/source/presenter/PresenterSlidePreview.hxx176
-rw-r--r--sdext/source/presenter/PresenterSlideShowView.cxx1159
-rw-r--r--sdext/source/presenter/PresenterSlideShowView.hxx300
-rw-r--r--sdext/source/presenter/PresenterSlideSorter.cxx2324
-rw-r--r--sdext/source/presenter/PresenterSlideSorter.hxx236
-rw-r--r--sdext/source/presenter/PresenterSprite.cxx292
-rw-r--r--sdext/source/presenter/PresenterSprite.hxx102
-rw-r--r--sdext/source/presenter/PresenterSpritePane.cxx263
-rw-r--r--sdext/source/presenter/PresenterSpritePane.hxx129
-rw-r--r--sdext/source/presenter/PresenterTextView.cxx1600
-rw-r--r--sdext/source/presenter/PresenterTextView.hxx322
-rw-r--r--sdext/source/presenter/PresenterTheme.cxx1417
-rw-r--r--sdext/source/presenter/PresenterTheme.hxx160
-rw-r--r--sdext/source/presenter/PresenterTimer.cxx681
-rw-r--r--sdext/source/presenter/PresenterTimer.hxx146
-rw-r--r--sdext/source/presenter/PresenterToolBar.cxx2461
-rw-r--r--sdext/source/presenter/PresenterToolBar.hxx318
-rw-r--r--sdext/source/presenter/PresenterUIPainter.cxx259
-rw-r--r--sdext/source/presenter/PresenterUIPainter.hxx73
-rw-r--r--sdext/source/presenter/PresenterViewFactory.cxx656
-rw-r--r--sdext/source/presenter/PresenterViewFactory.hxx189
-rw-r--r--sdext/source/presenter/PresenterWindowManager.cxx1644
-rw-r--r--sdext/source/presenter/PresenterWindowManager.hxx262
-rw-r--r--sdext/source/presenter/bitmaps/Background.pngbin0 -> 3474 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottom.pngbin0 -> 214 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottomCallout.pngbin0 -> 1425 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottomLeft.pngbin0 -> 598 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottomRight.pngbin0 -> 626 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveLeft.pngbin0 -> 145 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveRight.pngbin0 -> 141 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveTop.pngbin0 -> 148 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveTopLeft.pngbin0 -> 442 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveTopRight.pngbin0 -> 438 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderBottom.pngbin0 -> 164 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderBottomLeft.pngbin0 -> 576 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderBottomRight.pngbin0 -> 587 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideBottom.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideBottomLeft.pngbin0 -> 161 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideBottomRight.pngbin0 -> 159 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideLeft.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideRight.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideTop.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideTopLeft.pngbin0 -> 164 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideTopRight.pngbin0 -> 164 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderLeft.pngbin0 -> 147 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderRight.pngbin0 -> 177 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarBottom.pngbin0 -> 112 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarLeft.pngbin0 -> 119 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarRight.pngbin0 -> 121 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarTop.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarTopLeft.pngbin0 -> 268 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarTopRight.pngbin0 -> 244 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderTop.pngbin0 -> 174 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderTopLeft.pngbin0 -> 426 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderTopRight.pngbin0 -> 414 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextDisabled.pngbin0 -> 258 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextMouseOver.pngbin0 -> 259 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextNormal.pngbin0 -> 262 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextSelected.pngbin0 -> 257 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameCenterMouseOver.pngbin0 -> 131 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameCenterNormal.pngbin0 -> 138 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameLeftMouseOver.pngbin0 -> 166 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameLeftNormal.pngbin0 -> 166 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameRightMouseOver.pngbin0 -> 163 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameRightNormal.pngbin0 -> 163 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpDisabled.pngbin0 -> 543 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpMouseOver.pngbin0 -> 538 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpNormal.pngbin0 -> 550 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpSelected.pngbin0 -> 623 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusDisabled.pngbin0 -> 243 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusMouseOver.pngbin0 -> 239 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusNormal.pngbin0 -> 244 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusSelected.pngbin0 -> 245 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesDisabled.pngbin0 -> 321 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesMouseOver.pngbin0 -> 314 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesNormal.pngbin0 -> 324 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesSelected.pngbin0 -> 318 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusDisabled.pngbin0 -> 277 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusMouseOver.pngbin0 -> 275 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusNormal.pngbin0 -> 279 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusSelected.pngbin0 -> 280 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideNextDisabled.pngbin0 -> 246 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideNextMouseOver.pngbin0 -> 250 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideNextNormal.pngbin0 -> 250 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousDisabled.pngbin0 -> 270 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousMouseOver.pngbin0 -> 263 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousNormal.pngbin0 -> 271 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousSelected.pngbin0 -> 270 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterDisabled.pngbin0 -> 342 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterMouseOver.pngbin0 -> 338 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterNormal.pngbin0 -> 347 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterSelected.pngbin0 -> 338 bytes
-rw-r--r--sdext/source/presenter/bitmaps/LabelMouseOverCenter.pngbin0 -> 208 bytes
-rw-r--r--sdext/source/presenter/bitmaps/LabelMouseOverLeft.pngbin0 -> 157 bytes
-rw-r--r--sdext/source/presenter/bitmaps/LabelMouseOverRight.pngbin0 -> 154 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownDisabled.pngbin0 -> 324 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownMouseOver.pngbin0 -> 324 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownNormal.pngbin0 -> 331 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownSelected.pngbin0 -> 369 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpDisabled.pngbin0 -> 319 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpMouseOver.pngbin0 -> 323 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpNormal.pngbin0 -> 329 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpSelected.pngbin0 -> 365 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarPagerMiddleMouseOver.pngbin0 -> 125 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarPagerMiddleNormal.pngbin0 -> 119 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbBottomMouseOver.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbBottomNormal.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbMiddleMouseOver.pngbin0 -> 118 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbMiddleNormal.pngbin0 -> 118 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbTopMouseOver.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbTopNormal.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ViewBackground.pngbin0 -> 177 bytes
-rw-r--r--sdext/source/presenter/delzip1
-rwxr-xr-xsdext/source/presenter/description.xml31
-rwxr-xr-xsdext/source/presenter/help/component.txt2
-rw-r--r--sdext/source/presenter/help/en-US/com.sun.PresenterScreen/makefile.mk51
-rw-r--r--sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp186
-rwxr-xr-xsdext/source/presenter/makefile.mk383
-rw-r--r--sdext/source/presenter/manifest.xml18
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/Jobs.xcu20
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/ProtocolHandler.xcu10
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu1224
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/extension/makefile.mk51
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/makefile.mk48
-rw-r--r--sdext/source/presenter/registry/schema/org/openoffice/Office/extension/PresenterScreen.xcs469
-rw-r--r--sdext/util/makefile.pmk37
-rw-r--r--set_soenv.in2673
-rw-r--r--setup_native/inc/setup_native/qswin32.h52
-rw-r--r--setup_native/prj/build.lst21
-rw-r--r--setup_native/prj/d.lst63
-rw-r--r--setup_native/scripts/admin.pl1443
-rw-r--r--setup_native/scripts/deregister_extensions78
-rw-r--r--setup_native/scripts/downloadscript.sh87
-rw-r--r--setup_native/scripts/fake-db.spec38
-rwxr-xr-xsetup_native/scripts/install_create.pl44
-rw-r--r--setup_native/scripts/install_linux.sh301
-rw-r--r--setup_native/scripts/install_solaris.sh364
-rw-r--r--setup_native/scripts/javaloader.sh498
-rw-r--r--setup_native/scripts/langpackscript.sh153
-rw-r--r--setup_native/scripts/linuxpatchscript.sh84
-rw-r--r--setup_native/scripts/mac_install.script10
-rw-r--r--setup_native/scripts/makefile.mk103
-rw-r--r--setup_native/scripts/osx_install_languagepack.applescript116
-rw-r--r--setup_native/scripts/osx_install_patch.applescript113
-rw-r--r--setup_native/scripts/register_extensions84
-rw-r--r--setup_native/scripts/source/getuid.c137
-rw-r--r--setup_native/scripts/source/makefile.mk90
-rw-r--r--setup_native/scripts/stclient_wrapper.sh66
-rw-r--r--setup_native/scripts/uninstall_linux.sh55
-rw-r--r--setup_native/scripts/uninstall_solaris.sh57
-rw-r--r--setup_native/scripts/unpack_update.sh33
-rw-r--r--setup_native/scripts/update.sh195
-rw-r--r--setup_native/scripts/userland.txt28
-rw-r--r--setup_native/source/java/brofficeorg_setup.gifbin0 -> 3115 bytes
-rwxr-xr-xsetup_native/source/java/javaversion.dat57
-rw-r--r--setup_native/source/java/javaversion2.dat57
-rw-r--r--setup_native/source/java/openofficeorg_setup.gifbin0 -> 6641 bytes
-rw-r--r--setup_native/source/linux/root3.dat4
-rw-r--r--setup_native/source/linux/root4.dat4
-rw-r--r--setup_native/source/linux/root5.dat4
-rw-r--r--setup_native/source/mac/Info.plist.langpack36
-rw-r--r--setup_native/source/mac/broffice/DS_Storebin0 -> 12292 bytes
-rw-r--r--setup_native/source/mac/broffice/osxdndinstall.pngbin0 -> 32890 bytes
-rw-r--r--setup_native/source/mac/broffice/osxdndinstall.svg1765
-rw-r--r--setup_native/source/mac/broffice/osxdndinstall_nologo.pngbin0 -> 32890 bytes
-rw-r--r--setup_native/source/mac/macinstall.ulf68
-rw-r--r--setup_native/source/mac/makefile.mk57
-rw-r--r--setup_native/source/mac/ooo/DS_Storebin0 -> 12292 bytes
-rw-r--r--setup_native/source/mac/ooo/DS_Store_Langpackbin0 -> 12292 bytes
-rw-r--r--setup_native/source/mac/ooo/osxdndinstall.pngbin0 -> 34637 bytes
-rw-r--r--setup_native/source/mac/ooo/osxdndinstall_nologo.pngbin0 -> 34637 bytes
-rw-r--r--setup_native/source/mac/ooo3_installer.icnsbin0 -> 49809 bytes
-rw-r--r--setup_native/source/opensolaris/bundledextensions/README80
-rw-r--r--setup_native/source/opensolaris/bundledextensions/installed1
-rw-r--r--setup_native/source/opensolaris/bundledextensions/ooo_bundled_extensions.xml60
-rw-r--r--setup_native/source/opensolaris/bundledextensions/svc-ooo_bundled_extensions108
-rw-r--r--setup_native/source/packinfo/finals_instsetoo.txt14
-rw-r--r--setup_native/source/packinfo/linuxcopyrightfile2
-rw-r--r--setup_native/source/packinfo/openoffice.pcpbin0 -> 6144 bytes
-rw-r--r--setup_native/source/packinfo/openofficelanguagepack.pcpbin0 -> 6144 bytes
-rw-r--r--setup_native/source/packinfo/package.txt1
-rw-r--r--setup_native/source/packinfo/package_names.txt74
-rw-r--r--setup_native/source/packinfo/package_names_ext.txt21
-rw-r--r--setup_native/source/packinfo/packinfo_accessories.txt73
-rw-r--r--setup_native/source/packinfo/packinfo_brand.txt139
-rw-r--r--setup_native/source/packinfo/packinfo_extensions.txt303
-rwxr-xr-xsetup_native/source/packinfo/packinfo_office.txt1084
-rwxr-xr-xsetup_native/source/packinfo/packinfo_office_help.txt36
-rwxr-xr-xsetup_native/source/packinfo/packinfo_office_lang.txt297
-rwxr-xr-xsetup_native/source/packinfo/packinfo_sdkoo.txt41
-rwxr-xr-xsetup_native/source/packinfo/packinfo_ure.txt52
-rw-r--r--setup_native/source/packinfo/private1copyrightfile2
-rwxr-xr-xsetup_native/source/packinfo/shellscripts.txt11
-rw-r--r--setup_native/source/packinfo/shellscripts_brand.txt69
-rw-r--r--setup_native/source/packinfo/shellscripts_core01.txt69
-rwxr-xr-xsetup_native/source/packinfo/shellscripts_extensions.txt272
-rwxr-xr-xsetup_native/source/packinfo/shellscripts_module.txt33
-rwxr-xr-xsetup_native/source/packinfo/shellscripts_root.txt11
-rwxr-xr-xsetup_native/source/packinfo/solariscopyrightfile2
-rw-r--r--setup_native/source/packinfo/spellchecker_selection.txt54
-rw-r--r--setup_native/source/packinfo/ure.pcpbin0 -> 6144 bytes
-rw-r--r--setup_native/source/ulfconv/makefile.mk54
-rw-r--r--setup_native/source/ulfconv/ulfconv.cxx360
-rw-r--r--setup_native/source/win32/customactions/indexingfilter/exports.dxp3
-rw-r--r--setup_native/source/win32/customactions/indexingfilter/makefile.mk68
-rw-r--r--setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx210
-rw-r--r--setup_native/source/win32/customactions/javafilter/exports.dxp2
-rw-r--r--setup_native/source/win32/customactions/javafilter/jfregca.cxx332
-rw-r--r--setup_native/source/win32/customactions/javafilter/makefile.mk70
-rw-r--r--setup_native/source/win32/customactions/languagepacks/checkrunningofficelanguagepack.cxx221
-rw-r--r--setup_native/source/win32/customactions/languagepacks/exports.dxp6
-rw-r--r--setup_native/source/win32/customactions/languagepacks/lngpckinsthelper.cxx206
-rw-r--r--setup_native/source/win32/customactions/languagepacks/makefile.mk100
-rw-r--r--setup_native/source/win32/customactions/languagepacks/respintest.cxx215
-rwxr-xr-xsetup_native/source/win32/customactions/patch/exports.dxp11
-rwxr-xr-xsetup_native/source/win32/customactions/patch/makefile.mk98
-rw-r--r--setup_native/source/win32/customactions/patch/swappatchfiles.cxx902
-rw-r--r--setup_native/source/win32/customactions/quickstarter/exports.dxp3
-rw-r--r--setup_native/source/win32/customactions/quickstarter/makefile.mk102
-rw-r--r--setup_native/source/win32/customactions/quickstarter/qslnkmsi.dxp2
-rw-r--r--setup_native/source/win32/customactions/quickstarter/quickstarter.cxx223
-rw-r--r--setup_native/source/win32/customactions/quickstarter/quickstarter.hxx21
-rw-r--r--setup_native/source/win32/customactions/quickstarter/remove_quickstart_link.cxx63
-rw-r--r--setup_native/source/win32/customactions/quickstarter/sdqsmsi.dxp2
-rw-r--r--setup_native/source/win32/customactions/quickstarter/shutdown_quickstart.cxx81
-rw-r--r--setup_native/source/win32/customactions/rebase/makefile.mk90
-rw-r--r--setup_native/source/win32/customactions/rebase/rebase.cxx169
-rw-r--r--setup_native/source/win32/customactions/rebase/rebase.dxp1
-rw-r--r--setup_native/source/win32/customactions/reg4allmsdoc/exports.dxp3
-rw-r--r--setup_native/source/win32/customactions/reg4allmsdoc/makefile.mk83
-rw-r--r--setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx504
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/constants.hxx42
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/exports.dxp3
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/makefile.mk96
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/msihelper.cxx105
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/msihelper.hxx187
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/reg4msdocmsi.cxx190
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/register.cxx342
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/register.hxx85
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrar.cxx760
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrar.hxx104
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx353
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx161
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registry.cxx245
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registry.hxx341
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registryexception.cxx114
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registryexception.hxx107
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.cxx192
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.hxx111
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx552
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registryw9x.hxx202
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrywnt.cxx621
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrywnt.hxx205
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/stringconverter.cxx72
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/stringconverter.hxx44
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/userregistrar.cxx139
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/userregistrar.hxx46
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/windowsregistry.cxx82
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/windowsregistry.hxx43
-rwxr-xr-xsetup_native/source/win32/customactions/reg64/exports.dxp2
-rw-r--r--setup_native/source/win32/customactions/reg64/makefile.mk108
-rw-r--r--setup_native/source/win32/customactions/reg64/reg64.cxx473
-rw-r--r--setup_native/source/win32/customactions/regactivex/exports.dxp2
-rw-r--r--setup_native/source/win32/customactions/regactivex/makefile.mk70
-rw-r--r--setup_native/source/win32/customactions/regactivex/regactivex.cxx441
-rw-r--r--setup_native/source/win32/customactions/regpatchactivex/exports.dxp1
-rw-r--r--setup_native/source/win32/customactions/regpatchactivex/makefile.mk93
-rw-r--r--setup_native/source/win32/customactions/regpatchactivex/regpatchactivex.cxx124
-rw-r--r--setup_native/source/win32/customactions/relnotes/exports.dxp3
-rw-r--r--setup_native/source/win32/customactions/relnotes/makefile.mk83
-rw-r--r--setup_native/source/win32/customactions/relnotes/relnotes.cxx188
-rw-r--r--setup_native/source/win32/customactions/sellang/exports.dxp1
-rw-r--r--setup_native/source/win32/customactions/sellang/makefile.mk79
-rw-r--r--setup_native/source/win32/customactions/sellang/sellang.cxx342
-rw-r--r--setup_native/source/win32/customactions/shellextensions/checkdirectory.cxx120
-rw-r--r--setup_native/source/win32/customactions/shellextensions/checkpatches.cxx116
-rw-r--r--setup_native/source/win32/customactions/shellextensions/checkrunningoffice.cxx293
-rw-r--r--setup_native/source/win32/customactions/shellextensions/completeinstallpath.cxx183
-rw-r--r--setup_native/source/win32/customactions/shellextensions/copyeditiondata.cxx133
-rw-r--r--setup_native/source/win32/customactions/shellextensions/copyextensiondata.cxx127
-rw-r--r--setup_native/source/win32/customactions/shellextensions/dotnetcheck.cxx184
-rw-r--r--setup_native/source/win32/customactions/shellextensions/exports.dxp23
-rw-r--r--setup_native/source/win32/customactions/shellextensions/iconcache.cxx113
-rw-r--r--setup_native/source/win32/customactions/shellextensions/layerlinks.cxx260
-rw-r--r--setup_native/source/win32/customactions/shellextensions/makefile.mk108
-rw-r--r--setup_native/source/win32/customactions/shellextensions/migrateinstallpath.cxx120
-rw-r--r--setup_native/source/win32/customactions/shellextensions/postuninstall.cxx157
-rw-r--r--setup_native/source/win32/customactions/shellextensions/registerextensions.cxx430
-rw-r--r--setup_native/source/win32/customactions/shellextensions/setadmininstall.cxx69
-rw-r--r--setup_native/source/win32/customactions/shellextensions/shellextensions.cxx216
-rw-r--r--setup_native/source/win32/customactions/shellextensions/startmenuicon.cxx145
-rw-r--r--setup_native/source/win32/customactions/shellextensions/upgrade.cxx207
-rw-r--r--setup_native/source/win32/customactions/shellextensions/vistaspecial.cxx245
-rw-r--r--setup_native/source/win32/customactions/tools/checkversion.cxx151
-rw-r--r--setup_native/source/win32/customactions/tools/exports.dxp1
-rw-r--r--setup_native/source/win32/customactions/tools/makefile.mk84
-rw-r--r--setup_native/source/win32/customactions/tools/seterror.cxx99
-rw-r--r--setup_native/source/win32/customactions/tools/seterror.hxx56
-rw-r--r--setup_native/source/win32/desktophelper.txt1
-rwxr-xr-xsetup_native/source/win32/get_retval.bat3
-rw-r--r--setup_native/source/win32/msi-encodinglist.txt141
-rw-r--r--setup_native/source/win32/nsis/brobanner.bmpbin0 -> 18150 bytes
-rw-r--r--setup_native/source/win32/nsis/brobanner.svg667
-rw-r--r--setup_native/source/win32/nsis/brobitmap.bmpbin0 -> 52242 bytes
-rw-r--r--setup_native/source/win32/nsis/brobitmap.svg1011
-rw-r--r--setup_native/source/win32/nsis/brosdkbanner.bmpbin0 -> 18150 bytes
-rw-r--r--setup_native/source/win32/nsis/downloadtemplate.nsi456
-rw-r--r--setup_native/source/win32/nsis/ooobanner.bmpbin0 -> 6274 bytes
-rw-r--r--setup_native/source/win32/nsis/ooobitmap.bmpbin0 -> 52242 bytes
-rw-r--r--setup_native/source/win32/nsis/ooosdkbanner.bmpbin0 -> 7106 bytes
-rw-r--r--setup_native/source/win32/nsis/ooosdkbitmap.bmpbin0 -> 52242 bytes
-rw-r--r--setup_native/source/win32/nsis/ooosetup.icobin0 -> 26918 bytes
-rw-r--r--setup_native/source/win32/nsis/urebanner.bmpbin0 -> 7106 bytes
-rwxr-xr-xsetup_native/source/win32/nsis/urebitmap.bmpbin0 -> 52242 bytes
-rw-r--r--setup_native/source/win32/patchlist.txt2
-rw-r--r--setup_native/source/win32/stwrapper/makefile.mk50
-rw-r--r--setup_native/source/win32/stwrapper/resource.rc102
-rw-r--r--setup_native/source/win32/stwrapper/stwrapper.cxx497
-rw-r--r--setup_native/source/win32/stwrapper/stwrapper.manifest20
-rw-r--r--setup_native/tests/opensolaris/bundledextensions/send_ooo32
-rw-r--r--slideshow/inc/makefile.mk47
-rw-r--r--slideshow/inc/pch/precompiled_slideshow.cxx31
-rw-r--r--slideshow/inc/pch/precompiled_slideshow.hxx54
-rw-r--r--slideshow/manifest.txt95
-rw-r--r--slideshow/prj/build.lst11
-rw-r--r--slideshow/prj/d.lst6
-rw-r--r--slideshow/qa/debug/colors.sh16
-rw-r--r--slideshow/qa/debug/nodetree.sh50
-rw-r--r--slideshow/qa/debug/readme.txt20
-rw-r--r--slideshow/qa/debug/timings.pl81
-rwxr-xr-xslideshow/qa/tools/mkeffects.pl810
-rw-r--r--slideshow/qa/tools/mktransitions.pl681
-rw-r--r--slideshow/source/engine/OGLTrans/OGLTrans_Shaders.cxx142
-rw-r--r--slideshow/source/engine/OGLTrans/OGLTrans_Shaders.hxx71
-rw-r--r--slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx1317
-rw-r--r--slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.hxx508
-rw-r--r--slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx1500
-rw-r--r--slideshow/source/engine/OGLTrans/exports.dxp3
-rw-r--r--slideshow/source/engine/OGLTrans/makefile.mk80
-rw-r--r--slideshow/source/engine/activities/accumulation.hxx95
-rw-r--r--slideshow/source/engine/activities/activitiesfactory.cxx989
-rw-r--r--slideshow/source/engine/activities/activitybase.cxx249
-rw-r--r--slideshow/source/engine/activities/activitybase.hxx154
-rw-r--r--slideshow/source/engine/activities/activityparameters.hxx145
-rw-r--r--slideshow/source/engine/activities/continuousactivitybase.cxx57
-rw-r--r--slideshow/source/engine/activities/continuousactivitybase.hxx76
-rw-r--r--slideshow/source/engine/activities/continuouskeytimeactivitybase.cxx79
-rw-r--r--slideshow/source/engine/activities/continuouskeytimeactivitybase.hxx86
-rw-r--r--slideshow/source/engine/activities/discreteactivitybase.cxx209
-rw-r--r--slideshow/source/engine/activities/discreteactivitybase.hxx90
-rw-r--r--slideshow/source/engine/activities/interpolation.hxx197
-rw-r--r--slideshow/source/engine/activities/makefile.mk53
-rw-r--r--slideshow/source/engine/activities/simplecontinuousactivitybase.cxx261
-rw-r--r--slideshow/source/engine/activities/simplecontinuousactivitybase.hxx90
-rw-r--r--slideshow/source/engine/activitiesqueue.cxx213
-rw-r--r--slideshow/source/engine/animatedsprite.cxx228
-rw-r--r--slideshow/source/engine/animationfactory.cxx1389
-rw-r--r--slideshow/source/engine/animationnodes/animationaudionode.cxx183
-rw-r--r--slideshow/source/engine/animationnodes/animationaudionode.hxx80
-rw-r--r--slideshow/source/engine/animationnodes/animationbasenode.cxx492
-rw-r--r--slideshow/source/engine/animationnodes/animationbasenode.hxx113
-rw-r--r--slideshow/source/engine/animationnodes/animationcolornode.cxx139
-rw-r--r--slideshow/source/engine/animationnodes/animationcolornode.hxx65
-rw-r--r--slideshow/source/engine/animationnodes/animationcommandnode.cxx137
-rw-r--r--slideshow/source/engine/animationnodes/animationcommandnode.hxx72
-rw-r--r--slideshow/source/engine/animationnodes/animationnodefactory.cxx622
-rw-r--r--slideshow/source/engine/animationnodes/animationpathmotionnode.cxx69
-rw-r--r--slideshow/source/engine/animationnodes/animationpathmotionnode.hxx68
-rw-r--r--slideshow/source/engine/animationnodes/animationsetnode.cxx215
-rw-r--r--slideshow/source/engine/animationnodes/animationsetnode.hxx60
-rw-r--r--slideshow/source/engine/animationnodes/animationtransformnode.cxx117
-rw-r--r--slideshow/source/engine/animationnodes/animationtransformnode.hxx69
-rw-r--r--slideshow/source/engine/animationnodes/animationtransitionfilternode.cxx62
-rw-r--r--slideshow/source/engine/animationnodes/animationtransitionfilternode.hxx70
-rw-r--r--slideshow/source/engine/animationnodes/basecontainernode.cxx177
-rw-r--r--slideshow/source/engine/animationnodes/basecontainernode.hxx107
-rw-r--r--slideshow/source/engine/animationnodes/basenode.cxx771
-rw-r--r--slideshow/source/engine/animationnodes/basenode.hxx231
-rw-r--r--slideshow/source/engine/animationnodes/generateevent.cxx248
-rw-r--r--slideshow/source/engine/animationnodes/generateevent.hxx64
-rw-r--r--slideshow/source/engine/animationnodes/makefile.mk61
-rw-r--r--slideshow/source/engine/animationnodes/nodetools.cxx131
-rw-r--r--slideshow/source/engine/animationnodes/nodetools.hxx91
-rw-r--r--slideshow/source/engine/animationnodes/paralleltimecontainer.cxx71
-rw-r--r--slideshow/source/engine/animationnodes/paralleltimecontainer.hxx65
-rw-r--r--slideshow/source/engine/animationnodes/propertyanimationnode.cxx117
-rw-r--r--slideshow/source/engine/animationnodes/propertyanimationnode.hxx60
-rw-r--r--slideshow/source/engine/animationnodes/sequentialtimecontainer.cxx164
-rw-r--r--slideshow/source/engine/animationnodes/sequentialtimecontainer.hxx77
-rw-r--r--slideshow/source/engine/animationnodes/setactivity.hxx158
-rw-r--r--slideshow/source/engine/arith-grammar.txt61
-rw-r--r--slideshow/source/engine/attributemap.cxx126
-rw-r--r--slideshow/source/engine/color.cxx470
-rw-r--r--slideshow/source/engine/debug.cxx327
-rw-r--r--slideshow/source/engine/delayevent.cxx71
-rw-r--r--slideshow/source/engine/effectrewinder.cxx436
-rw-r--r--slideshow/source/engine/effectrewinder.hxx185
-rw-r--r--slideshow/source/engine/eventmultiplexer.cxx1280
-rw-r--r--slideshow/source/engine/eventqueue.cxx338
-rw-r--r--slideshow/source/engine/expressionnodefactory.cxx282
-rw-r--r--slideshow/source/engine/makefile.mk102
-rw-r--r--slideshow/source/engine/rehearsetimingsactivity.cxx584
-rw-r--r--slideshow/source/engine/rehearsetimingsactivity.hxx150
-rw-r--r--slideshow/source/engine/screenupdater.cxx271
-rw-r--r--slideshow/source/engine/shapeattributelayer.cxx859
-rw-r--r--slideshow/source/engine/shapes/appletshape.cxx333
-rw-r--r--slideshow/source/engine/shapes/appletshape.hxx63
-rw-r--r--slideshow/source/engine/shapes/backgroundshape.cxx339
-rw-r--r--slideshow/source/engine/shapes/backgroundshape.hxx65
-rw-r--r--slideshow/source/engine/shapes/drawinglayeranimation.cxx986
-rw-r--r--slideshow/source/engine/shapes/drawinglayeranimation.hxx50
-rw-r--r--slideshow/source/engine/shapes/drawshape.cxx1481
-rw-r--r--slideshow/source/engine/shapes/drawshape.hxx385
-rw-r--r--slideshow/source/engine/shapes/drawshapesubsetting.cxx868
-rw-r--r--slideshow/source/engine/shapes/drawshapesubsetting.hxx291
-rw-r--r--slideshow/source/engine/shapes/externalshapebase.cxx249
-rw-r--r--slideshow/source/engine/shapes/externalshapebase.hxx148
-rw-r--r--slideshow/source/engine/shapes/gdimtftools.cxx551
-rw-r--r--slideshow/source/engine/shapes/gdimtftools.hxx158
-rw-r--r--slideshow/source/engine/shapes/intrinsicanimationactivity.cxx293
-rw-r--r--slideshow/source/engine/shapes/intrinsicanimationactivity.hxx79
-rw-r--r--slideshow/source/engine/shapes/makefile.mk60
-rw-r--r--slideshow/source/engine/shapes/mediashape.cxx300
-rw-r--r--slideshow/source/engine/shapes/mediashape.hxx58
-rw-r--r--slideshow/source/engine/shapes/shapeimporter.cxx679
-rw-r--r--slideshow/source/engine/shapes/viewappletshape.cxx303
-rw-r--r--slideshow/source/engine/shapes/viewappletshape.hxx172
-rw-r--r--slideshow/source/engine/shapes/viewbackgroundshape.cxx215
-rw-r--r--slideshow/source/engine/shapes/viewbackgroundshape.hxx107
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.cxx575
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.hxx182
-rw-r--r--slideshow/source/engine/shapes/viewshape.cxx901
-rw-r--r--slideshow/source/engine/shapes/viewshape.hxx343
-rw-r--r--slideshow/source/engine/shapesubset.cxx144
-rw-r--r--slideshow/source/engine/slide/layer.cxx367
-rw-r--r--slideshow/source/engine/slide/layer.hxx319
-rw-r--r--slideshow/source/engine/slide/layermanager.cxx926
-rw-r--r--slideshow/source/engine/slide/layermanager.hxx388
-rw-r--r--slideshow/source/engine/slide/makefile.mk51
-rw-r--r--slideshow/source/engine/slide/shapemanagerimpl.cxx464
-rw-r--r--slideshow/source/engine/slide/shapemanagerimpl.hxx212
-rw-r--r--slideshow/source/engine/slide/slideanimations.cxx134
-rw-r--r--slideshow/source/engine/slide/slideanimations.hxx128
-rw-r--r--slideshow/source/engine/slide/slideimpl.cxx1286
-rw-r--r--slideshow/source/engine/slide/userpaintoverlay.cxx507
-rw-r--r--slideshow/source/engine/slide/userpaintoverlay.hxx92
-rw-r--r--slideshow/source/engine/slidebitmap.cxx135
-rw-r--r--slideshow/source/engine/slideshowcontext.cxx79
-rw-r--r--slideshow/source/engine/slideshowimpl.cxx2538
-rw-r--r--slideshow/source/engine/slideview.cxx1198
-rw-r--r--slideshow/source/engine/smilfunctionparser.cxx641
-rw-r--r--slideshow/source/engine/soundplayer.cxx186
-rw-r--r--slideshow/source/engine/sp_debug.cxx300
-rw-r--r--slideshow/source/engine/tools.cxx856
-rw-r--r--slideshow/source/engine/transitions/barndoorwipe.cxx68
-rw-r--r--slideshow/source/engine/transitions/barndoorwipe.hxx58
-rw-r--r--slideshow/source/engine/transitions/barwipepolypolygon.cxx59
-rw-r--r--slideshow/source/engine/transitions/barwipepolypolygon.hxx58
-rw-r--r--slideshow/source/engine/transitions/boxwipe.cxx60
-rw-r--r--slideshow/source/engine/transitions/boxwipe.hxx57
-rw-r--r--slideshow/source/engine/transitions/checkerboardwipe.cxx68
-rw-r--r--slideshow/source/engine/transitions/checkerboardwipe.hxx60
-rw-r--r--slideshow/source/engine/transitions/clippingfunctor.cxx241
-rw-r--r--slideshow/source/engine/transitions/clippingfunctor.hxx98
-rw-r--r--slideshow/source/engine/transitions/clockwipe.cxx77
-rw-r--r--slideshow/source/engine/transitions/clockwipe.hxx53
-rw-r--r--slideshow/source/engine/transitions/combtransition.cxx199
-rw-r--r--slideshow/source/engine/transitions/combtransition.hxx75
-rw-r--r--slideshow/source/engine/transitions/doublediamondwipe.cxx69
-rw-r--r--slideshow/source/engine/transitions/doublediamondwipe.hxx56
-rw-r--r--slideshow/source/engine/transitions/ellipsewipe.cxx55
-rw-r--r--slideshow/source/engine/transitions/ellipsewipe.hxx51
-rw-r--r--slideshow/source/engine/transitions/fanwipe.cxx74
-rw-r--r--slideshow/source/engine/transitions/fanwipe.hxx54
-rw-r--r--slideshow/source/engine/transitions/figurewipe.cxx132
-rw-r--r--slideshow/source/engine/transitions/figurewipe.hxx58
-rw-r--r--slideshow/source/engine/transitions/fourboxwipe.cxx88
-rw-r--r--slideshow/source/engine/transitions/fourboxwipe.hxx58
-rw-r--r--slideshow/source/engine/transitions/iriswipe.cxx55
-rw-r--r--slideshow/source/engine/transitions/iriswipe.hxx55
-rw-r--r--slideshow/source/engine/transitions/makefile.mk73
-rw-r--r--slideshow/source/engine/transitions/parametricpolypolygon.hxx101
-rw-r--r--slideshow/source/engine/transitions/parametricpolypolygonfactory.cxx315
-rw-r--r--slideshow/source/engine/transitions/parametricpolypolygonfactory.hxx57
-rw-r--r--slideshow/source/engine/transitions/pinwheelwipe.cxx62
-rw-r--r--slideshow/source/engine/transitions/pinwheelwipe.hxx54
-rw-r--r--slideshow/source/engine/transitions/randomwipe.cxx97
-rw-r--r--slideshow/source/engine/transitions/randomwipe.hxx61
-rw-r--r--slideshow/source/engine/transitions/shapetransitionfactory.cxx411
-rw-r--r--slideshow/source/engine/transitions/slidechangebase.cxx538
-rw-r--r--slideshow/source/engine/transitions/slidechangebase.hxx211
-rw-r--r--slideshow/source/engine/transitions/slidetransitionfactory.cxx1172
-rw-r--r--slideshow/source/engine/transitions/snakewipe.cxx247
-rw-r--r--slideshow/source/engine/transitions/snakewipe.hxx79
-rw-r--r--slideshow/source/engine/transitions/spiralwipe.cxx134
-rw-r--r--slideshow/source/engine/transitions/spiralwipe.hxx71
-rw-r--r--slideshow/source/engine/transitions/sweepwipe.cxx87
-rw-r--r--slideshow/source/engine/transitions/sweepwipe.hxx56
-rw-r--r--slideshow/source/engine/transitions/transitionfactorytab.cxx2149
-rw-r--r--slideshow/source/engine/transitions/transitiontools.cxx72
-rw-r--r--slideshow/source/engine/transitions/transitiontools.hxx58
-rw-r--r--slideshow/source/engine/transitions/veewipe.cxx56
-rw-r--r--slideshow/source/engine/transitions/veewipe.hxx54
-rw-r--r--slideshow/source/engine/transitions/waterfallwipe.cxx80
-rw-r--r--slideshow/source/engine/transitions/waterfallwipe.hxx55
-rw-r--r--slideshow/source/engine/transitions/zigzagwipe.cxx85
-rw-r--r--slideshow/source/engine/transitions/zigzagwipe.hxx63
-rw-r--r--slideshow/source/engine/unoviewcontainer.cxx152
-rw-r--r--slideshow/source/engine/usereventqueue.cxx1009
-rw-r--r--slideshow/source/engine/waitsymbol.cxx211
-rw-r--r--slideshow/source/engine/waitsymbol.hxx111
-rw-r--r--slideshow/source/engine/wakeupevent.cxx102
-rw-r--r--slideshow/source/inc/activitiesfactory.hxx336
-rw-r--r--slideshow/source/inc/activitiesqueue.hxx133
-rw-r--r--slideshow/source/inc/activity.hxx103
-rw-r--r--slideshow/source/inc/animatableshape.hxx91
-rw-r--r--slideshow/source/inc/animatedsprite.hxx189
-rw-r--r--slideshow/source/inc/animation.hxx100
-rw-r--r--slideshow/source/inc/animationactivity.hxx78
-rw-r--r--slideshow/source/inc/animationeventhandler.hxx74
-rw-r--r--slideshow/source/inc/animationfactory.hxx160
-rw-r--r--slideshow/source/inc/animationfunction.hxx74
-rw-r--r--slideshow/source/inc/animationnode.hxx165
-rw-r--r--slideshow/source/inc/animationnodefactory.hxx81
-rw-r--r--slideshow/source/inc/attributableshape.hxx231
-rw-r--r--slideshow/source/inc/attributemap.hxx83
-rw-r--r--slideshow/source/inc/boolanimation.hxx80
-rw-r--r--slideshow/source/inc/coloranimation.hxx80
-rw-r--r--slideshow/source/inc/cursormanager.hxx75
-rw-r--r--slideshow/source/inc/debug.hxx80
-rw-r--r--slideshow/source/inc/delayevent.hxx160
-rw-r--r--slideshow/source/inc/disposable.hxx68
-rw-r--r--slideshow/source/inc/doctreenode.hxx144
-rw-r--r--slideshow/source/inc/doctreenodesupplier.hxx154
-rw-r--r--slideshow/source/inc/enumanimation.hxx82
-rw-r--r--slideshow/source/inc/event.hxx95
-rw-r--r--slideshow/source/inc/eventhandler.hxx70
-rw-r--r--slideshow/source/inc/eventmultiplexer.hxx663
-rw-r--r--slideshow/source/inc/eventqueue.hxx159
-rw-r--r--slideshow/source/inc/expressionnode.hxx69
-rw-r--r--slideshow/source/inc/expressionnodefactory.hxx85
-rw-r--r--slideshow/source/inc/externalmediashape.hxx94
-rw-r--r--slideshow/source/inc/framerate.hxx56
-rw-r--r--slideshow/source/inc/hslcolor.hxx126
-rw-r--r--slideshow/source/inc/hslcoloranimation.hxx80
-rw-r--r--slideshow/source/inc/hyperlinkarea.hxx107
-rw-r--r--slideshow/source/inc/hyperlinkhandler.hxx71
-rw-r--r--slideshow/source/inc/interruptabledelayevent.hxx153
-rw-r--r--slideshow/source/inc/intrinsicanimationeventhandler.hxx63
-rw-r--r--slideshow/source/inc/listenercontainer.hxx317
-rw-r--r--slideshow/source/inc/listenercontainerimpl.hxx227
-rw-r--r--slideshow/source/inc/mouseeventhandler.hxx156
-rw-r--r--slideshow/source/inc/numberanimation.hxx82
-rw-r--r--slideshow/source/inc/pairanimation.hxx81
-rw-r--r--slideshow/source/inc/pauseeventhandler.hxx71
-rw-r--r--slideshow/source/inc/rgbcolor.hxx128
-rw-r--r--slideshow/source/inc/screenupdater.hxx142
-rw-r--r--slideshow/source/inc/shape.hxx276
-rw-r--r--slideshow/source/inc/shapeattributelayer.hxx559
-rw-r--r--slideshow/source/inc/shapeattributelayerholder.hxx113
-rw-r--r--slideshow/source/inc/shapecursoreventhandler.hxx70
-rw-r--r--slideshow/source/inc/shapeimporter.hxx158
-rw-r--r--slideshow/source/inc/shapelistenereventhandler.hxx78
-rw-r--r--slideshow/source/inc/shapemanager.hxx128
-rw-r--r--slideshow/source/inc/shapemaps.hxx64
-rw-r--r--slideshow/source/inc/shapesubset.hxx153
-rw-r--r--slideshow/source/inc/slide.hxx220
-rw-r--r--slideshow/source/inc/slidebitmap.hxx98
-rw-r--r--slideshow/source/inc/slideshowcontext.hxx121
-rw-r--r--slideshow/source/inc/slideshowexceptions.hxx56
-rw-r--r--slideshow/source/inc/slideview.hxx64
-rw-r--r--slideshow/source/inc/smilfunctionparser.hxx170
-rw-r--r--slideshow/source/inc/soundplayer.hxx121
-rw-r--r--slideshow/source/inc/state.hxx76
-rw-r--r--slideshow/source/inc/stringanimation.hxx80
-rw-r--r--slideshow/source/inc/subsettableshapemanager.hxx129
-rw-r--r--slideshow/source/inc/tools.hxx407
-rw-r--r--slideshow/source/inc/transitionfactory.hxx151
-rw-r--r--slideshow/source/inc/transitioninfo.hxx163
-rw-r--r--slideshow/source/inc/unoview.hxx88
-rw-r--r--slideshow/source/inc/unoviewcontainer.hxx113
-rw-r--r--slideshow/source/inc/usereventqueue.hxx329
-rw-r--r--slideshow/source/inc/userpainteventhandler.hxx68
-rw-r--r--slideshow/source/inc/view.hxx98
-rw-r--r--slideshow/source/inc/vieweventhandler.hxx102
-rw-r--r--slideshow/source/inc/viewlayer.hxx178
-rw-r--r--slideshow/source/inc/viewrepainthandler.hxx76
-rw-r--r--slideshow/source/inc/viewupdate.hxx79
-rw-r--r--slideshow/source/inc/wakeupevent.hxx96
-rw-r--r--slideshow/test/demoshow.cxx573
-rw-r--r--slideshow/test/export.map34
-rw-r--r--slideshow/test/makefile.mk101
-rw-r--r--slideshow/test/slidetest.cxx372
-rw-r--r--slideshow/test/tests.hxx75
-rw-r--r--slideshow/test/testshape.cxx224
-rw-r--r--slideshow/test/testview.cxx289
-rw-r--r--slideshow/test/views.cxx92
-rw-r--r--slideshow/util/exports.dxp3
-rw-r--r--slideshow/util/makefile.mk104
-rw-r--r--slideshow/util/makefile.pmk47
-rw-r--r--slideshow/util/slideshowtest.flt4
-rwxr-xr-xsmoketestoo_native/com/sun/star/comp/smoketest/MANIFEST.MF2
-rwxr-xr-xsmoketestoo_native/com/sun/star/comp/smoketest/TestExtension.idl40
-rwxr-xr-xsmoketestoo_native/com/sun/star/comp/smoketest/TestExtension.java166
-rwxr-xr-xsmoketestoo_native/com/sun/star/comp/smoketest/delzip1
-rwxr-xr-xsmoketestoo_native/com/sun/star/comp/smoketest/makefile.mk90
-rwxr-xr-xsmoketestoo_native/com/sun/star/comp/smoketest/manifest.xml5
-rw-r--r--smoketestoo_native/data/Events.xml65
-rw-r--r--smoketestoo_native/data/Global.xml786
-rw-r--r--smoketestoo_native/data/OptionsDlg.xml64
-rw-r--r--smoketestoo_native/data/Test_10er.xml921
-rw-r--r--smoketestoo_native/data/Test_DB.xml161
-rw-r--r--smoketestoo_native/data/Test_Ext.xml121
-rw-r--r--smoketestoo_native/data/content.xml28
-rw-r--r--smoketestoo_native/data/dialog-lb.xml31
-rw-r--r--smoketestoo_native/data/dialog-lc.xml31
-rw-r--r--smoketestoo_native/data/makefile.mk70
-rw-r--r--smoketestoo_native/data/manifest.xml49
-rw-r--r--smoketestoo_native/data/meta.xml28
-rw-r--r--smoketestoo_native/data/script-lb.xml35
-rw-r--r--smoketestoo_native/data/script-lc.xml31
-rw-r--r--smoketestoo_native/data/settings.xml28
-rw-r--r--smoketestoo_native/data/styles.xml28
-rw-r--r--smoketestoo_native/makefile.mk72
-rw-r--r--smoketestoo_native/prj/build.lst5
-rw-r--r--smoketestoo_native/prj/d.lst0
-rw-r--r--smoketestoo_native/smoketest.cxx208
-rw-r--r--smoketestoo_native/version.map34
-rw-r--r--soldep/bootstrp/appdef.cxx168
-rw-r--r--soldep/bootstrp/build_list_converter.pl892
-rw-r--r--soldep/bootstrp/dep.cxx119
-rw-r--r--soldep/bootstrp/hashtbl.cxx514
-rw-r--r--soldep/bootstrp/makefile.mk82
-rw-r--r--soldep/bootstrp/minormk.cxx189
-rw-r--r--soldep/bootstrp/prj.cxx2896
-rw-r--r--soldep/bootstrp/prodmap.cxx519
-rw-r--r--soldep/inc/appdef.hxx164
-rw-r--r--soldep/inc/dep.hxx72
-rw-r--r--soldep/inc/dtsodcmp.hrc99
-rw-r--r--soldep/inc/minormk.hxx80
-rw-r--r--soldep/inc/prodmap.hxx86
-rw-r--r--soldep/inc/soldep/connctr.hxx87
-rw-r--r--soldep/inc/soldep/depper.hxx211
-rw-r--r--soldep/inc/soldep/depwin.hxx76
-rw-r--r--soldep/inc/soldep/graphwin.hxx56
-rw-r--r--soldep/inc/soldep/hashobj.hxx47
-rw-r--r--soldep/inc/soldep/hashtbl.hxx207
-rw-r--r--soldep/inc/soldep/objwin.hxx160
-rw-r--r--soldep/inc/soldep/prj.hxx485
-rw-r--r--soldep/inc/soldep/sdtresid.hxx54
-rw-r--r--soldep/inc/soldep/soldep.hxx119
-rw-r--r--soldep/inc/soldep/soldlg.hrc79
-rw-r--r--soldep/inc/soldep/soldlg.hxx163
-rw-r--r--soldep/inc/soldep/tbox.hxx105
-rw-r--r--soldep/prj/build.lst5
-rw-r--r--soldep/prj/d.lst38
-rw-r--r--soldep/source/connctr.cxx275
-rw-r--r--soldep/source/depapp.cxx150
-rw-r--r--soldep/source/depapp.hxx111
-rw-r--r--soldep/source/depper.cxx689
-rw-r--r--soldep/source/depwin.cxx167
-rw-r--r--soldep/source/graphwin.cxx80
-rw-r--r--soldep/source/hashobj.cxx40
-rw-r--r--soldep/source/makefile.mk144
-rw-r--r--soldep/source/objwin.cxx823
-rw-r--r--soldep/source/sdtresid.cxx51
-rw-r--r--soldep/source/soldep.cxx1810
-rw-r--r--soldep/source/soldep.icobin0 -> 10134 bytes
-rw-r--r--soldep/source/soldlg.cxx269
-rw-r--r--soldep/source/soldlg.src374
-rw-r--r--soldep/source/tbox.cxx598
-rw-r--r--soldep/util/perl.mk71
-rwxr-xr-xsolenv/bin/_mkout11
-rwxr-xr-xsolenv/bin/addsym-macosx.sh29
-rw-r--r--solenv/bin/addsym-mingw.sh34
-rw-r--r--solenv/bin/addsym.awk54
-rwxr-xr-xsolenv/bin/build.pl3643
-rwxr-xr-xsolenv/bin/build_client.pl445
-rwxr-xr-xsolenv/bin/checkdll.sh88
-rw-r--r--solenv/bin/chrel.sed2
-rw-r--r--solenv/bin/cleandiff.pl45
-rwxr-xr-xsolenv/bin/cleanzip.pl64
-rw-r--r--solenv/bin/clipatchconfig.pl133
-rw-r--r--solenv/bin/convertlinks.pl122
-rw-r--r--solenv/bin/converttags.pl94
-rwxr-xr-xsolenv/bin/createpdbrelocators7
-rw-r--r--solenv/bin/createpdbrelocators.btm9
-rw-r--r--solenv/bin/createpdbrelocators.pl82
-rw-r--r--solenv/bin/dbgsv.ini29
-rwxr-xr-xsolenv/bin/deliver.pl1522
-rwxr-xr-xsolenv/bin/diffmv.pl76
-rw-r--r--solenv/bin/exectest.pl98
-rw-r--r--solenv/bin/fix_def_file.cmd52
-rw-r--r--solenv/bin/fix_def_ord.cmd19
-rw-r--r--solenv/bin/fix_dxp_file.cmd30
-rw-r--r--solenv/bin/fix_exp_file.cmd54
-rw-r--r--solenv/bin/fix_lin_file.cmd13
-rw-r--r--solenv/bin/fix_shl.cmd11
-rwxr-xr-xsolenv/bin/gccinstlib.pl65
-rw-r--r--solenv/bin/gdbtrycatchtrace21
-rw-r--r--solenv/bin/gen_update_info.pl176
-rwxr-xr-xsolenv/bin/gen_userfeedback_VCL_names.pl196
-rwxr-xr-xsolenv/bin/genmap1
-rw-r--r--solenv/bin/getcompver.awk79
-rw-r--r--solenv/bin/getcsym.awk34
-rwxr-xr-xsolenv/bin/gsicheck18
-rwxr-xr-xsolenv/bin/guw.pl347
-rw-r--r--solenv/bin/hicontrast-to-theme.pl125
-rwxr-xr-xsolenv/bin/image-sort.pl149
-rwxr-xr-xsolenv/bin/install-sh3
-rw-r--r--solenv/bin/installoffice.oxtbin0 -> 1680 bytes
-rwxr-xr-xsolenv/bin/installoffice_impress.oxtbin0 -> 1311 bytes
-rwxr-xr-xsolenv/bin/langwrap131
-rwxr-xr-xsolenv/bin/leconvert.pl91
-rw-r--r--solenv/bin/licinserter.pl138
-rwxr-xr-xsolenv/bin/linkoo374
-rwxr-xr-xsolenv/bin/localize20
-rwxr-xr-xsolenv/bin/localize_sl18
-rw-r--r--solenv/bin/macosx-change-install-names.pl98
-rwxr-xr-xsolenv/bin/macosx-create-bundle105
-rw-r--r--solenv/bin/macosx-dylib-link-list.pl91
-rw-r--r--solenv/bin/make_download.pl129
-rwxr-xr-xsolenv/bin/make_ext_update_info.pl613
-rw-r--r--solenv/bin/make_installer.pl2448
-rwxr-xr-xsolenv/bin/makedepn13
-rw-r--r--solenv/bin/makemani.pl112
-rw-r--r--solenv/bin/mapgen.pl208
-rw-r--r--solenv/bin/mhids.pl398
-rw-r--r--solenv/bin/mkdir.btm6
-rwxr-xr-xsolenv/bin/mkdir.pl65
-rwxr-xr-xsolenv/bin/mkout.pl162
-rw-r--r--solenv/bin/modules/CreatePDBRelocators.pm206
-rwxr-xr-xsolenv/bin/modules/Eis.pm220
-rw-r--r--solenv/bin/modules/GenInfoParser.pm296
-rw-r--r--solenv/bin/modules/RepositoryHelper.pm205
-rwxr-xr-xsolenv/bin/modules/SourceConfig.pm658
-rw-r--r--solenv/bin/modules/installer/archivefiles.pm565
-rw-r--r--solenv/bin/modules/installer/configuration.pm901
-rw-r--r--solenv/bin/modules/installer/control.pm737
-rw-r--r--solenv/bin/modules/installer/converter.pm462
-rw-r--r--solenv/bin/modules/installer/copyproject.pm118
-rw-r--r--solenv/bin/modules/installer/download.pm2081
-rw-r--r--solenv/bin/modules/installer/downloadsigner.pm585
-rw-r--r--solenv/bin/modules/installer/environment.pm141
-rw-r--r--solenv/bin/modules/installer/epmfile.pm3503
-rw-r--r--solenv/bin/modules/installer/existence.pm190
-rw-r--r--solenv/bin/modules/installer/exiter.pm113
-rw-r--r--solenv/bin/modules/installer/files.pm219
-rw-r--r--solenv/bin/modules/installer/followme.pm217
-rw-r--r--solenv/bin/modules/installer/globals.pm550
-rw-r--r--solenv/bin/modules/installer/helppack.pm537
-rw-r--r--solenv/bin/modules/installer/javainstaller.pm1885
-rw-r--r--solenv/bin/modules/installer/languagepack.pm565
-rw-r--r--solenv/bin/modules/installer/languages.pm379
-rw-r--r--solenv/bin/modules/installer/logger.pm339
-rw-r--r--solenv/bin/modules/installer/mail.pm136
-rw-r--r--solenv/bin/modules/installer/packagelist.pm872
-rw-r--r--solenv/bin/modules/installer/packagepool.pm1048
-rw-r--r--solenv/bin/modules/installer/parameter.pm685
-rw-r--r--solenv/bin/modules/installer/pathanalyzer.pm75
-rw-r--r--solenv/bin/modules/installer/profiles.pm231
-rw-r--r--solenv/bin/modules/installer/regmerge.pm340
-rw-r--r--solenv/bin/modules/installer/remover.pm82
-rw-r--r--solenv/bin/modules/installer/scppatchsoname.pm218
-rw-r--r--solenv/bin/modules/installer/scpzipfiles.pm187
-rw-r--r--solenv/bin/modules/installer/scriptitems.pm3009
-rw-r--r--solenv/bin/modules/installer/servicesfile.pm1073
-rw-r--r--solenv/bin/modules/installer/setupscript.pm540
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm824
-rw-r--r--solenv/bin/modules/installer/sorter.pm116
-rw-r--r--solenv/bin/modules/installer/strip.pm139
-rw-r--r--solenv/bin/modules/installer/substfilenamefiles.pm169
-rw-r--r--solenv/bin/modules/installer/systemactions.pm1749
-rw-r--r--solenv/bin/modules/installer/upx.pm156
-rw-r--r--solenv/bin/modules/installer/windows/admin.pm916
-rw-r--r--solenv/bin/modules/installer/windows/assembly.pm371
-rw-r--r--solenv/bin/modules/installer/windows/binary.pm77
-rw-r--r--solenv/bin/modules/installer/windows/component.pm529
-rw-r--r--solenv/bin/modules/installer/windows/createfolder.pm154
-rw-r--r--solenv/bin/modules/installer/windows/directory.pm473
-rw-r--r--solenv/bin/modules/installer/windows/feature.pm446
-rw-r--r--solenv/bin/modules/installer/windows/featurecomponent.pm244
-rw-r--r--solenv/bin/modules/installer/windows/file.pm971
-rw-r--r--solenv/bin/modules/installer/windows/font.pm110
-rw-r--r--solenv/bin/modules/installer/windows/icon.pm77
-rw-r--r--solenv/bin/modules/installer/windows/idtglobal.pm2423
-rw-r--r--solenv/bin/modules/installer/windows/inifile.pm146
-rw-r--r--solenv/bin/modules/installer/windows/java.pm120
-rw-r--r--solenv/bin/modules/installer/windows/language.pm74
-rw-r--r--solenv/bin/modules/installer/windows/media.pm458
-rwxr-xr-xsolenv/bin/modules/installer/windows/mergemodule.pm1658
-rw-r--r--solenv/bin/modules/installer/windows/msiglobal.pm2265
-rw-r--r--solenv/bin/modules/installer/windows/msp.pm1295
-rw-r--r--solenv/bin/modules/installer/windows/patch.pm155
-rw-r--r--solenv/bin/modules/installer/windows/property.pm680
-rw-r--r--solenv/bin/modules/installer/windows/registry.pm398
-rw-r--r--solenv/bin/modules/installer/windows/removefile.pm152
-rw-r--r--solenv/bin/modules/installer/windows/selfreg.pm88
-rw-r--r--solenv/bin/modules/installer/windows/shortcut.pm697
-rw-r--r--solenv/bin/modules/installer/windows/sign.pm1249
-rw-r--r--solenv/bin/modules/installer/windows/strip.pm159
-rw-r--r--solenv/bin/modules/installer/windows/update.pm601
-rw-r--r--solenv/bin/modules/installer/windows/upgrade.pm168
-rw-r--r--solenv/bin/modules/installer/worker.pm3462
-rw-r--r--solenv/bin/modules/installer/xpdinstaller.pm1832
-rw-r--r--solenv/bin/modules/installer/ziplist.pm813
-rw-r--r--solenv/bin/modules/macosxotoolhelper.pm44
-rwxr-xr-xsolenv/bin/modules/osarch.pm198
-rw-r--r--solenv/bin/modules/packager/check.pm88
-rw-r--r--solenv/bin/modules/packager/existence.pm52
-rw-r--r--solenv/bin/modules/packager/exiter.pm71
-rw-r--r--solenv/bin/modules/packager/files.pm184
-rw-r--r--solenv/bin/modules/packager/globals.pm54
-rw-r--r--solenv/bin/modules/packager/work.pm327
-rw-r--r--solenv/bin/modules/par2script/check.pm396
-rw-r--r--solenv/bin/modules/par2script/converter.pm142
-rw-r--r--solenv/bin/modules/par2script/existence.pm74
-rw-r--r--solenv/bin/modules/par2script/exiter.pm122
-rw-r--r--solenv/bin/modules/par2script/files.pm124
-rw-r--r--solenv/bin/modules/par2script/globals.pm81
-rw-r--r--solenv/bin/modules/par2script/module.pm264
-rw-r--r--solenv/bin/modules/par2script/parameter.pm154
-rw-r--r--solenv/bin/modules/par2script/remover.pm75
-rw-r--r--solenv/bin/modules/par2script/shortcut.pm75
-rw-r--r--solenv/bin/modules/par2script/systemactions.pm184
-rw-r--r--solenv/bin/modules/par2script/undefine.pm144
-rw-r--r--solenv/bin/modules/par2script/work.pm416
-rw-r--r--solenv/bin/modules/pre2par/directory.pm54
-rw-r--r--solenv/bin/modules/pre2par/existence.pm74
-rw-r--r--solenv/bin/modules/pre2par/exiter.pm70
-rw-r--r--solenv/bin/modules/pre2par/files.pm125
-rw-r--r--solenv/bin/modules/pre2par/globals.pm68
-rw-r--r--solenv/bin/modules/pre2par/language.pm147
-rw-r--r--solenv/bin/modules/pre2par/parameter.pm178
-rw-r--r--solenv/bin/modules/pre2par/pathanalyzer.pm75
-rw-r--r--solenv/bin/modules/pre2par/remover.pm67
-rw-r--r--solenv/bin/modules/pre2par/systemactions.pm206
-rw-r--r--solenv/bin/modules/pre2par/work.pm363
-rwxr-xr-xsolenv/bin/msg_filter61
-rw-r--r--solenv/bin/newfolderforce1
-rwxr-xr-xsolenv/bin/oochkpatch6
-rwxr-xr-xsolenv/bin/oochkpatch.btm2
-rw-r--r--solenv/bin/oochkpatch.pl301
-rwxr-xr-xsolenv/bin/ooinstall102
-rw-r--r--solenv/bin/packager.pl61
-rwxr-xr-xsolenv/bin/packimages.pl437
-rw-r--r--solenv/bin/packregistry.xslt90
-rw-r--r--solenv/bin/par2script.pl117
-rwxr-xr-xsolenv/bin/patch_sanitizer.pl126
-rwxr-xr-xsolenv/bin/pchdelta4
-rwxr-xr-xsolenv/bin/pchdelta.py149
-rw-r--r--solenv/bin/pre2par.pl74
-rwxr-xr-xsolenv/bin/receditor6
-rwxr-xr-xsolenv/bin/relocate233
-rw-r--r--solenv/bin/rmdir.pl46
-rwxr-xr-xsolenv/bin/rpm-wrapper49
-rwxr-xr-xsolenv/bin/slfl.pl176
-rw-r--r--solenv/bin/soirpm.sh32
-rw-r--r--solenv/bin/sort.pl50
-rwxr-xr-xsolenv/bin/striplanguagetags.sh48
-rw-r--r--solenv/bin/subsequenttests131
-rw-r--r--solenv/bin/touch.pl42
-rw-r--r--solenv/bin/transform_description.pl138
-rw-r--r--solenv/bin/unxmap-to-macosx-explist.awk63
-rw-r--r--solenv/bin/update_module_ignore_lists.pl255
-rwxr-xr-xsolenv/bin/zipdep.pl337
-rw-r--r--solenv/config/sooo330.ini3557
-rw-r--r--solenv/config/ssolar.cmn335
-rw-r--r--solenv/inc/_cppunit.mk120
-rw-r--r--solenv/inc/_tg_app.mk2840
-rw-r--r--solenv/inc/_tg_def.mk2810
-rw-r--r--solenv/inc/_tg_lib.mk1020
-rw-r--r--solenv/inc/_tg_rslb.mk770
-rw-r--r--solenv/inc/_tg_scp.mk180
-rw-r--r--solenv/inc/_tg_sdi.mk270
-rw-r--r--solenv/inc/_tg_shl.mk6060
-rw-r--r--solenv/inc/_tg_srs.mk530
-rw-r--r--solenv/inc/_tg_zip.mk1330
-rw-r--r--solenv/inc/ant.mk100
-rw-r--r--solenv/inc/ant.properties12
-rw-r--r--solenv/inc/antsettings.mk90
-rw-r--r--solenv/inc/cppunit.mk56
-rw-r--r--solenv/inc/dummy.flt0
-rw-r--r--solenv/inc/extension_helplink.mk79
-rw-r--r--solenv/inc/extension_post.mk173
-rw-r--r--solenv/inc/extension_pre.mk59
-rw-r--r--solenv/inc/found_no.mk5
-rw-r--r--solenv/inc/installationtest.mk130
-rw-r--r--solenv/inc/javaunittest.mk107
-rw-r--r--solenv/inc/lang.mk57
-rw-r--r--solenv/inc/layout.mk32
-rw-r--r--solenv/inc/libs.mk543
-rw-r--r--solenv/inc/mime.types201
-rw-r--r--solenv/inc/minor.mk5
-rw-r--r--solenv/inc/os2.mk333
-rw-r--r--solenv/inc/os2gcci.mk288
-rw-r--r--solenv/inc/pkg_config.mk49
-rw-r--r--solenv/inc/postmac.h55
-rw-r--r--solenv/inc/postset.mk138
-rw-r--r--solenv/inc/preinclude.h41
-rw-r--r--solenv/inc/premac.h55
-rw-r--r--solenv/inc/productversion.mk32
-rw-r--r--solenv/inc/pstrules.mk176
-rw-r--r--solenv/inc/rules.mk804
-rw-r--r--solenv/inc/set_ext.mk37
-rw-r--r--solenv/inc/set_wntx64.mk215
-rw-r--r--solenv/inc/settings.mk1381
-rw-r--r--solenv/inc/shlinfo.rc86
-rw-r--r--solenv/inc/startup/OS2/macros.mk30
-rw-r--r--solenv/inc/startup/Readme6
-rw-r--r--solenv/inc/startup/startup.mk109
-rw-r--r--solenv/inc/startup/summary3
-rw-r--r--solenv/inc/startup/wnt/macros.mk32
-rw-r--r--solenv/inc/starview.hid304
-rw-r--r--solenv/inc/target.mk2117
-rw-r--r--solenv/inc/templates/extension_tmpl.mk153
-rw-r--r--solenv/inc/tg_app.mk316
-rw-r--r--solenv/inc/tg_compv.mk158
-rw-r--r--solenv/inc/tg_config.mk203
-rw-r--r--solenv/inc/tg_def.mk313
-rw-r--r--solenv/inc/tg_dep.mk96
-rw-r--r--solenv/inc/tg_ext.mk363
-rw-r--r--solenv/inc/tg_help.mk90
-rw-r--r--solenv/inc/tg_jar.mk89
-rw-r--r--solenv/inc/tg_java.mk84
-rw-r--r--solenv/inc/tg_javav.mk53
-rw-r--r--solenv/inc/tg_lib.mk134
-rw-r--r--solenv/inc/tg_merge.mk66
-rw-r--r--solenv/inc/tg_moz.mk89
-rw-r--r--solenv/inc/tg_obj.mk94
-rwxr-xr-xsolenv/inc/tg_propmerge.mk66
-rw-r--r--solenv/inc/tg_res.mk43
-rw-r--r--solenv/inc/tg_rslb.mk108
-rw-r--r--solenv/inc/tg_scp.mk50
-rw-r--r--solenv/inc/tg_sdi.mk59
-rw-r--r--solenv/inc/tg_shl.mk645
-rw-r--r--solenv/inc/tg_slo.mk98
-rw-r--r--solenv/inc/tg_srs.mk85
-rw-r--r--solenv/inc/tg_wntx64.mk514
-rwxr-xr-xsolenv/inc/tg_xmerge.mk108
-rw-r--r--solenv/inc/tg_yxx.mk48
-rw-r--r--solenv/inc/tg_zip.mk164
-rw-r--r--solenv/inc/trustedinfo.manifest11
-rw-r--r--solenv/inc/udkversion.mk33
-rw-r--r--solenv/inc/unitools.mk192
-rw-r--r--solenv/inc/unx.mk209
-rw-r--r--solenv/inc/unxaigppc.mk69
-rw-r--r--solenv/inc/unxaixp.mk113
-rw-r--r--solenv/inc/unxbsda.mk99
-rw-r--r--solenv/inc/unxbsdi.mk179
-rw-r--r--solenv/inc/unxbsdi2.mk198
-rw-r--r--solenv/inc/unxbsds.mk179
-rw-r--r--solenv/inc/unxfbsd.mk229
-rw-r--r--solenv/inc/unxfbsdi.mk46
-rw-r--r--solenv/inc/unxfbsdx.mk49
-rw-r--r--solenv/inc/unxgcc.mk279
-rw-r--r--solenv/inc/unxhpgr.mk133
-rw-r--r--solenv/inc/unxhpxr.mk131
-rw-r--r--solenv/inc/unxlng.mk32
-rw-r--r--solenv/inc/unxlnga.mk33
-rw-r--r--solenv/inc/unxlngaxp.mk34
-rw-r--r--solenv/inc/unxlnghppa.mk35
-rw-r--r--solenv/inc/unxlngi.mk34
-rw-r--r--solenv/inc/unxlngm68k.mk37
-rw-r--r--solenv/inc/unxlngmips.mk33
-rw-r--r--solenv/inc/unxlngppc.mk37
-rw-r--r--solenv/inc/unxlngppc64.mk34
-rw-r--r--solenv/inc/unxlngr.mk34
-rw-r--r--solenv/inc/unxlngs.mk36
-rw-r--r--solenv/inc/unxlngs390.mk36
-rw-r--r--solenv/inc/unxlngs390x.mk33
-rw-r--r--solenv/inc/unxlngx.mk33
-rw-r--r--solenv/inc/unxmacx.mk289
-rw-r--r--solenv/inc/unxmacxi.mk53
-rw-r--r--solenv/inc/unxmacxp.mk37
-rw-r--r--solenv/inc/unxobsd.mk49
-rw-r--r--solenv/inc/unxscoi.mk140
-rw-r--r--solenv/inc/unxsogi.mk141
-rw-r--r--solenv/inc/unxsogs.mk140
-rw-r--r--solenv/inc/unxsoli4.mk241
-rw-r--r--solenv/inc/unxsols4.mk247
-rw-r--r--solenv/inc/unxsolu4.mk242
-rw-r--r--solenv/inc/verinfo.hrc201
-rwxr-xr-xsolenv/inc/version.hrc75
-rw-r--r--solenv/inc/version.lst30
-rwxr-xr-xsolenv/inc/version_so.hrc74
-rw-r--r--solenv/inc/versionlist.mk30
-rw-r--r--solenv/inc/wnt.mk72
-rw-r--r--solenv/inc/wntgcci.mk217
-rw-r--r--solenv/inc/wntmsci10.mk343
-rw-r--r--solenv/inc/wntmsci11.mk391
-rw-r--r--solenv/makefile.mk40
-rw-r--r--solenv/prj/build.lst3
-rw-r--r--solenv/prj/d.lst2
-rwxr-xr-xsolenv/src/component.map8
-rw-r--r--solenv/src/default_description.xml15
-rw-r--r--solenv/src/solaris_noexstk.map4
-rwxr-xr-xsolenv/src/unloadablecomponent.map9
-rw-r--r--solenv/src/version.c67
-rw-r--r--solenv/unxmacxp/inc/poll.h176
-rwxr-xr-xsoltools/HIDCompiler/hidclex.l951
-rw-r--r--soltools/HIDCompiler/makefile.mk63
-rw-r--r--soltools/HIDCompiler/wrap_hidclex.cxx34
-rw-r--r--soltools/adjustvisibility/adjustvisibility.cxx314
-rw-r--r--soltools/adjustvisibility/makefile.mk59
-rw-r--r--soltools/checkdll/checkdll.c99
-rw-r--r--soltools/checkdll/makefile.mk59
-rw-r--r--soltools/cpp/Test.txt101
-rw-r--r--soltools/cpp/_cpp.c386
-rw-r--r--soltools/cpp/_eval.c769
-rw-r--r--soltools/cpp/_getopt.c74
-rw-r--r--soltools/cpp/_include.c237
-rw-r--r--soltools/cpp/_lex.c691
-rw-r--r--soltools/cpp/_macro.c758
-rw-r--r--soltools/cpp/_mcrvalid.c131
-rw-r--r--soltools/cpp/_nlist.c120
-rw-r--r--soltools/cpp/_tokens.c538
-rw-r--r--soltools/cpp/_unix.c236
-rw-r--r--soltools/cpp/cpp.h241
-rw-r--r--soltools/cpp/makefile.mk76
-rw-r--r--soltools/giparser/gen_info.cxx90
-rw-r--r--soltools/giparser/gi_list.cxx236
-rw-r--r--soltools/giparser/gi_parse.cxx409
-rw-r--r--soltools/giparser/makefile.mk62
-rw-r--r--soltools/giparser/st_gilrw.cxx110
-rw-r--r--soltools/inc/gen_info.hxx91
-rw-r--r--soltools/inc/gi_list.hxx217
-rw-r--r--soltools/inc/gi_parse.hxx167
-rw-r--r--soltools/inc/gilacces.hxx106
-rw-r--r--soltools/inc/pch/precompiled_soltools.cxx31
-rw-r--r--soltools/inc/pch/precompiled_soltools.hxx34
-rw-r--r--soltools/inc/simstr.hxx225
-rw-r--r--soltools/inc/st_gilrw.hxx127
-rw-r--r--soltools/inc/st_list.hxx332
-rw-r--r--soltools/inc/st_types.hxx42
-rw-r--r--soltools/javadep/javadep.c915
-rw-r--r--soltools/javadep/makefile.mk50
-rw-r--r--soltools/ldump/hashtbl.cxx461
-rw-r--r--soltools/ldump/hashtbl.hxx113
-rw-r--r--soltools/ldump/ldump.cxx761
-rw-r--r--soltools/ldump/ldump.hxx80
-rw-r--r--soltools/ldump/makefile.mk59
-rw-r--r--soltools/mkdepend/collectdircontent.cxx86
-rw-r--r--soltools/mkdepend/collectdircontent.hxx61
-rw-r--r--soltools/mkdepend/cppsetup.c236
-rw-r--r--soltools/mkdepend/def.h191
-rw-r--r--soltools/mkdepend/ifparser.c462
-rw-r--r--soltools/mkdepend/ifparser.h77
-rw-r--r--soltools/mkdepend/imakemdep.h733
-rw-r--r--soltools/mkdepend/include.c329
-rw-r--r--soltools/mkdepend/main.c801
-rw-r--r--soltools/mkdepend/makefile.mk82
-rw-r--r--soltools/mkdepend/mkdepend.man368
-rw-r--r--soltools/mkdepend/parse.c617
-rw-r--r--soltools/mkdepend/pr.c140
-rw-r--r--soltools/prj/build.lst14
-rw-r--r--soltools/prj/d.lst13
-rw-r--r--soltools/support/makefile.mk55
-rw-r--r--soltools/support/simstr.cxx835
-rw-r--r--soltools/testSHL/inc/tlog.hxx101
-rw-r--r--soltools/testSHL/inc/tstMgr.hxx75
-rw-r--r--soltools/testSHL/inc/tutil.hxx52
-rw-r--r--soltools/testSHL/makefile.mk52
-rw-r--r--soltools/testSHL/testshl.cxx96
-rw-r--r--soltools/testSHL/util/makefile.mk45
-rw-r--r--soltools/testSHL/util/tlog.cxx110
-rw-r--r--soltools/testSHL/util/tstMgr.cxx163
-rw-r--r--soltools/testSHL/util/tutil.cxx149
-rw-r--r--soltools/testhxx/create.pl125
-rw-r--r--soltools/testhxx/makefile.mk51
-rw-r--r--soltools/testhxx/testhxx.cxx35
-rwxr-xr-xsoltools/util/makefile.pmk52
-rw-r--r--soltools/winunistd/makefile.mk52
-rw-r--r--soltools/winunistd/unistd.h6
-rw-r--r--sot/inc/absdev.hxx49
-rw-r--r--sot/inc/agg.hxx71
-rw-r--r--sot/inc/clsids.hxx36
-rw-r--r--sot/inc/filelist.hxx78
-rw-r--r--sot/inc/makefile.mk48
-rw-r--r--sot/inc/pch/precompiled_sot.cxx31
-rw-r--r--sot/inc/pch/precompiled_sot.hxx34
-rw-r--r--sot/inc/sot/exchange.hxx254
-rw-r--r--sot/inc/sot/factory.hxx90
-rw-r--r--sot/inc/sot/formats.hxx193
-rw-r--r--sot/inc/sot/object.hxx468
-rw-r--r--sot/inc/sot/sotdata.hxx61
-rw-r--r--sot/inc/sot/sotdllapi.h43
-rw-r--r--sot/inc/sot/sotref.hxx78
-rw-r--r--sot/inc/sot/storage.hxx269
-rw-r--r--sot/inc/stg.hxx391
-rw-r--r--sot/inc/storinfo.hxx75
-rw-r--r--sot/prj/build.lst8
-rw-r--r--sot/prj/d.lst27
-rw-r--r--sot/qa/complex/olesimplestorage/OLESimpleStorageTest.java5
-rw-r--r--sot/qa/complex/olesimplestorage/OLESimpleStorageUnitTest.java67
-rw-r--r--sot/qa/complex/olesimplestorage/Test01.java126
-rw-r--r--sot/qa/complex/olesimplestorage/TestHelper.java26
-rw-r--r--sot/qa/complex/olesimplestorage/makefile.mk84
-rw-r--r--sot/source/base/exchange.cxx511
-rw-r--r--sot/source/base/factory.cxx408
-rw-r--r--sot/source/base/filelist.cxx201
-rw-r--r--sot/source/base/formats.cxx1665
-rw-r--r--sot/source/base/makefile.mk58
-rw-r--r--sot/source/base/object.cxx491
-rw-r--r--sot/source/sdstor/makefile.mk64
-rw-r--r--sot/source/sdstor/stg.cxx1089
-rw-r--r--sot/source/sdstor/stgavl.cxx421
-rw-r--r--sot/source/sdstor/stgavl.hxx80
-rw-r--r--sot/source/sdstor/stgcache.cxx547
-rw-r--r--sot/source/sdstor/stgcache.hxx131
-rw-r--r--sot/source/sdstor/stgdir.cxx1056
-rw-r--r--sot/source/sdstor/stgdir.hxx135
-rw-r--r--sot/source/sdstor/stgelem.cxx427
-rw-r--r--sot/source/sdstor/stgelem.hxx167
-rw-r--r--sot/source/sdstor/stgio.cxx391
-rw-r--r--sot/source/sdstor/stgio.hxx83
-rw-r--r--sot/source/sdstor/stgole.cxx232
-rw-r--r--sot/source/sdstor/stgole.hxx80
-rw-r--r--sot/source/sdstor/stgstrms.cxx1249
-rw-r--r--sot/source/sdstor/stgstrms.hxx171
-rw-r--r--sot/source/sdstor/storage.cxx1563
-rw-r--r--sot/source/sdstor/storinfo.cxx113
-rw-r--r--sot/source/sdstor/ucbstorage.cxx3577
-rw-r--r--sot/source/sdstor/unostorageholder.cxx199
-rw-r--r--sot/source/sdstor/unostorageholder.hxx79
-rw-r--r--sot/source/unoolestorage/makefile.mk51
-rw-r--r--sot/source/unoolestorage/register.cxx103
-rw-r--r--sot/source/unoolestorage/xolesimplestorage.cxx813
-rw-r--r--sot/source/unoolestorage/xolesimplestorage.hxx197
-rw-r--r--sot/util/makefile.mk81
-rw-r--r--sot/util/makefile.pmk31
-rw-r--r--sot/util/sot.flt6
-rw-r--r--sot/workben/makefile.mk53
-rw-r--r--sot/workben/testsot.cxx57
-rw-r--r--splitbuild/base.lst1
-rw-r--r--splitbuild/binfilter.lst1
-rwxr-xr-xsplitbuild/bm4
-rw-r--r--splitbuild/build.lst1
-rw-r--r--splitbuild/calc.lst1
-rw-r--r--splitbuild/common.lst1
-rw-r--r--splitbuild/content.lst1
-rw-r--r--splitbuild/draw.lst1
-rw-r--r--splitbuild/extensions.lst1
-rw-r--r--splitbuild/extern.lst1
-rwxr-xr-xsplitbuild/filter.lst1
-rw-r--r--splitbuild/framework.lst1
-rw-r--r--splitbuild/gui.lst1
-rw-r--r--splitbuild/prj/build.lst1
-rw-r--r--splitbuild/prj/d.lst1
-rw-r--r--splitbuild/start.lst1
-rw-r--r--splitbuild/uno.lst1
-rw-r--r--splitbuild/writer.lst1
-rw-r--r--starmath/inc/action.hxx54
-rw-r--r--starmath/inc/applicat.hxx98
-rw-r--r--starmath/inc/caret.hxx471
-rw-r--r--starmath/inc/config.hxx60
-rw-r--r--starmath/inc/cursor.hxx450
-rw-r--r--starmath/inc/dialog.hxx525
-rw-r--r--starmath/inc/document.hxx245
-rw-r--r--starmath/inc/edit.hxx151
-rw-r--r--starmath/inc/format.hxx173
-rw-r--r--starmath/inc/makefile.mk47
-rw-r--r--starmath/inc/node.hxx1265
-rw-r--r--starmath/inc/parse.hxx288
-rw-r--r--starmath/inc/pch/precompiled_starmath.cxx31
-rw-r--r--starmath/inc/pch/precompiled_starmath.hxx34
-rw-r--r--starmath/inc/rect.hxx260
-rw-r--r--starmath/inc/smdll.hxx52
-rw-r--r--starmath/inc/smmod.hxx179
-rw-r--r--starmath/inc/starmath.hrc770
-rw-r--r--starmath/inc/symbol.hxx193
-rw-r--r--starmath/inc/toolbox.hxx92
-rw-r--r--starmath/inc/types.hxx206
-rw-r--r--starmath/inc/unomodel.hxx111
-rw-r--r--starmath/inc/utility.hxx380
-rw-r--r--starmath/inc/view.hxx321
-rw-r--r--starmath/inc/visitors.hxx495
-rw-r--r--starmath/prj/build.lst9
-rw-r--r--starmath/prj/d.lst21
-rw-r--r--starmath/qa/unoapi/Test.java51
-rw-r--r--starmath/qa/unoapi/knownissues.xcl18
-rw-r--r--starmath/qa/unoapi/makefile.mk48
-rw-r--r--starmath/qa/unoapi/sm.sce9
-rw-r--r--starmath/sdi/makefile.mk58
-rw-r--r--starmath/sdi/smath.sdi964
-rw-r--r--starmath/sdi/smitems.sdi595
-rw-r--r--starmath/sdi/smslots.sdi332
-rw-r--r--starmath/source/accessibility.cxx1993
-rw-r--r--starmath/source/accessibility.hxx407
-rw-r--r--starmath/source/action.cxx69
-rw-r--r--starmath/source/caret.cxx59
-rw-r--r--starmath/source/cfgitem.cxx1279
-rw-r--r--starmath/source/cfgitem.hxx208
-rw-r--r--starmath/source/commands.src1561
-rw-r--r--starmath/source/config.cxx128
-rw-r--r--starmath/source/cursor.cxx1617
-rw-r--r--starmath/source/detreg.cxx114
-rw-r--r--starmath/source/dialog.cxx2444
-rw-r--r--starmath/source/dialog.hrc51
-rw-r--r--starmath/source/document.cxx1431
-rw-r--r--starmath/source/edit.cxx995
-rw-r--r--starmath/source/eqnolefilehdr.cxx92
-rw-r--r--starmath/source/eqnolefilehdr.hxx65
-rw-r--r--starmath/source/format.cxx244
-rw-r--r--starmath/source/makefile.mk117
-rw-r--r--starmath/source/math_pch.cxx455
-rw-r--r--starmath/source/mathmlexport.cxx1503
-rw-r--r--starmath/source/mathmlexport.hxx145
-rw-r--r--starmath/source/mathmlimport.cxx3027
-rw-r--r--starmath/source/mathmlimport.hxx349
-rw-r--r--starmath/source/mathtype.cxx3373
-rw-r--r--starmath/source/mathtype.hxx177
-rw-r--r--starmath/source/menu_tmpl.src160
-rw-r--r--starmath/source/node.cxx3116
-rw-r--r--starmath/source/parse.cxx2518
-rw-r--r--starmath/source/rect.cxx778
-rw-r--r--starmath/source/register.cxx321
-rw-r--r--starmath/source/smdetect.cxx487
-rw-r--r--starmath/source/smdetect.hxx98
-rw-r--r--starmath/source/smdll.cxx112
-rw-r--r--starmath/source/smmod.cxx384
-rw-r--r--starmath/source/smres.src3576
-rw-r--r--starmath/source/symbol.cxx334
-rw-r--r--starmath/source/symbol.src344
-rw-r--r--starmath/source/toolbox.cxx411
-rw-r--r--starmath/source/toolbox.hrc34
-rw-r--r--starmath/source/typemap.cxx152
-rw-r--r--starmath/source/types.cxx55
-rw-r--r--starmath/source/unodoc.cxx73
-rw-r--r--starmath/source/unomodel.cxx1115
-rw-r--r--starmath/source/utility.cxx383
-rw-r--r--starmath/source/view.cxx2007
-rw-r--r--starmath/source/visitors.cxx2527
-rw-r--r--starmath/uiconfig/smath/menubar/menubar.xml121
-rw-r--r--starmath/uiconfig/smath/statusbar/statusbar.xml8
-rw-r--r--starmath/uiconfig/smath/toolbar/fullscreenbar.xml5
-rw-r--r--starmath/uiconfig/smath/toolbar/standardbar.xml26
-rw-r--r--starmath/uiconfig/smath/toolbar/toolbar.xml12
-rw-r--r--starmath/util/hidother.src117
-rw-r--r--starmath/util/makefile.mk114
-rw-r--r--starmath/visual-editor-todo44
-rwxr-xr-xstarmath/workben/smath-dump-watch.sh26
-rw-r--r--starmath/xml/math.xml92
-rw-r--r--stax/makefile.mk78
-rw-r--r--stax/prj/build.lst2
-rw-r--r--stax/prj/d.lst1
-rw-r--r--stlport/STLport-4.0-sunstudio12u1.patch21
-rw-r--r--stlport/STLport-4.0.patch4943
-rw-r--r--stlport/STLport-4.5-0119.patch1328
-rw-r--r--stlport/STLport-4.5-gcc43_warnings.patch113
-rw-r--r--stlport/STLport-4.5.patch1047
-rw-r--r--stlport/dos_lineends.patch60
-rw-r--r--stlport/makefile.mk246
-rw-r--r--stlport/prj/build.lst2
-rw-r--r--stlport/prj/d.lst25
-rw-r--r--stlport/systemstl/functional63
-rw-r--r--stlport/systemstl/hash_map82
-rw-r--r--stlport/systemstl/hash_set53
-rw-r--r--stlport/systemstl/numeric54
-rw-r--r--stlport/systemstl/rope49
-rw-r--r--stlport/systemstl/slist46
-rw-r--r--stlport/systemstl/vector50
-rw-r--r--stlport/systemstlguards/postextstl.h38
-rw-r--r--stlport/systemstlguards/preextstl.h85
-rw-r--r--stlport/win32_custom.bat11
-rwxr-xr-xstlport/win32_custom.sh9
-rwxr-xr-xstlport/win32_sdk.bat11
-rw-r--r--stlport/win32_sdk.sh9
-rw-r--r--stoc/inc/bootstrapservices.hxx114
-rw-r--r--stoc/inc/makefile.mk47
-rw-r--r--stoc/inc/pch/precompiled_stoc.cxx31
-rw-r--r--stoc/inc/pch/precompiled_stoc.hxx292
-rw-r--r--stoc/inc/stocservices.hxx97
-rw-r--r--stoc/prj/build.lst25
-rw-r--r--stoc/prj/d.lst18
-rw-r--r--stoc/source/bootstrap/bootstrap.xml358
-rw-r--r--stoc/source/bootstrap/makefile.mk50
-rw-r--r--stoc/source/bootstrap/services.cxx150
-rw-r--r--stoc/source/corereflection/base.hxx458
-rw-r--r--stoc/source/corereflection/corefl.xml44
-rw-r--r--stoc/source/corereflection/crarray.cxx234
-rw-r--r--stoc/source/corereflection/crbase.cxx293
-rw-r--r--stoc/source/corereflection/crcomp.cxx407
-rw-r--r--stoc/source/corereflection/crefl.cxx547
-rw-r--r--stoc/source/corereflection/crenum.cxx249
-rw-r--r--stoc/source/corereflection/criface.cxx995
-rw-r--r--stoc/source/corereflection/lrucache.hxx246
-rw-r--r--stoc/source/corereflection/makefile.mk75
-rw-r--r--stoc/source/cppumaker.mk41
-rw-r--r--stoc/source/defaultregistry/defaultregistry.cxx1421
-rw-r--r--stoc/source/defaultregistry/makefile.mk46
-rw-r--r--stoc/source/implementationregistration/implreg.cxx1928
-rw-r--r--stoc/source/implementationregistration/makefile.mk47
-rw-r--r--stoc/source/implementationregistration/mergekeys.cxx189
-rw-r--r--stoc/source/implementationregistration/mergekeys.hxx55
-rw-r--r--stoc/source/inspect/insp.xml59
-rw-r--r--stoc/source/inspect/introspection.cxx3120
-rw-r--r--stoc/source/inspect/makefile.mk66
-rw-r--r--stoc/source/invocation/inv.xml77
-rw-r--r--stoc/source/invocation/invocation.cxx1266
-rw-r--r--stoc/source/invocation/makefile.mk65
-rw-r--r--stoc/source/invocation_adapterfactory/iafactory.cxx1036
-rw-r--r--stoc/source/invocation_adapterfactory/invadp.xml41
-rw-r--r--stoc/source/invocation_adapterfactory/makefile.mk65
-rw-r--r--stoc/source/javaloader/javaloader.cxx489
-rw-r--r--stoc/source/javaloader/javaloader.xml39
-rw-r--r--stoc/source/javaloader/makefile.mk72
-rw-r--r--stoc/source/javavm/interact.cxx128
-rw-r--r--stoc/source/javavm/interact.hxx78
-rw-r--r--stoc/source/javavm/javavm.cxx1812
-rw-r--r--stoc/source/javavm/javavm.hxx175
-rw-r--r--stoc/source/javavm/jen.xml70
-rw-r--r--stoc/source/javavm/jvmargs.cxx69
-rw-r--r--stoc/source/javavm/jvmargs.hxx61
-rw-r--r--stoc/source/javavm/makefile.mk87
-rw-r--r--stoc/source/loader/dllcomponentloader.cxx261
-rw-r--r--stoc/source/loader/makefile.mk47
-rw-r--r--stoc/source/module-description.dtd54
-rw-r--r--stoc/source/namingservice/makefile.mk66
-rw-r--r--stoc/source/namingservice/namingservice.cxx253
-rw-r--r--stoc/source/namingservice/namingservice.xml37
-rw-r--r--stoc/source/proxy_factory/makefile.mk65
-rw-r--r--stoc/source/proxy_factory/proxyfac.cxx546
-rw-r--r--stoc/source/proxy_factory/proxyfac.xml37
-rw-r--r--stoc/source/registry_tdprovider/base.hxx648
-rw-r--r--stoc/source/registry_tdprovider/functiondescription.cxx118
-rw-r--r--stoc/source/registry_tdprovider/functiondescription.hxx89
-rw-r--r--stoc/source/registry_tdprovider/makefile.mk61
-rw-r--r--stoc/source/registry_tdprovider/methoddescription.cxx147
-rw-r--r--stoc/source/registry_tdprovider/methoddescription.hxx85
-rw-r--r--stoc/source/registry_tdprovider/rdbtdp_tdenumeration.cxx645
-rw-r--r--stoc/source/registry_tdprovider/rdbtdp_tdenumeration.hxx118
-rw-r--r--stoc/source/registry_tdprovider/structtypedescription.cxx142
-rw-r--r--stoc/source/registry_tdprovider/structtypedescription.hxx108
-rw-r--r--stoc/source/registry_tdprovider/td.cxx82
-rw-r--r--stoc/source/registry_tdprovider/tdcomp.cxx189
-rw-r--r--stoc/source/registry_tdprovider/tdconsts.cxx113
-rw-r--r--stoc/source/registry_tdprovider/tdef.cxx84
-rw-r--r--stoc/source/registry_tdprovider/tdenum.cxx137
-rw-r--r--stoc/source/registry_tdprovider/tdiface.cxx588
-rw-r--r--stoc/source/registry_tdprovider/tdmodule.cxx129
-rw-r--r--stoc/source/registry_tdprovider/tdprop.cxx71
-rw-r--r--stoc/source/registry_tdprovider/tdprovider.cxx635
-rw-r--r--stoc/source/registry_tdprovider/tdservice.cxx568
-rw-r--r--stoc/source/registry_tdprovider/tdsingleton.cxx135
-rw-r--r--stoc/source/security/access_controller.cxx1066
-rw-r--r--stoc/source/security/file_policy.cxx605
-rw-r--r--stoc/source/security/lru_cache.h282
-rw-r--r--stoc/source/security/makefile.mk62
-rw-r--r--stoc/source/security/permissions.cxx669
-rw-r--r--stoc/source/security/permissions.h105
-rw-r--r--stoc/source/servicemanager/makefile.mk47
-rw-r--r--stoc/source/servicemanager/servicemanager.cxx2058
-rw-r--r--stoc/source/simpleregistry/makefile.mk46
-rw-r--r--stoc/source/simpleregistry/simpleregistry.cxx1304
-rw-r--r--stoc/source/stocservices/makefile.mk49
-rw-r--r--stoc/source/stocservices/stocserv.xml98
-rw-r--r--stoc/source/stocservices/stocservices.cxx120
-rw-r--r--stoc/source/tdmanager/lrucache.hxx250
-rw-r--r--stoc/source/tdmanager/makefile.mk49
-rw-r--r--stoc/source/tdmanager/tdmgr.cxx1161
-rw-r--r--stoc/source/tdmanager/tdmgr_check.cxx559
-rw-r--r--stoc/source/tdmanager/tdmgr_common.hxx63
-rw-r--r--stoc/source/tdmanager/tdmgr_tdenumeration.cxx189
-rw-r--r--stoc/source/tdmanager/tdmgr_tdenumeration.hxx91
-rw-r--r--stoc/source/typeconv/convert.cxx965
-rw-r--r--stoc/source/typeconv/makefile.mk48
-rw-r--r--stoc/source/uriproc/ExternalUriReferenceTranslator.cxx243
-rw-r--r--stoc/source/uriproc/ExternalUriReferenceTranslator.hxx62
-rw-r--r--stoc/source/uriproc/UriReference.cxx209
-rw-r--r--stoc/source/uriproc/UriReference.hxx111
-rw-r--r--stoc/source/uriproc/UriReferenceFactory.cxx727
-rw-r--r--stoc/source/uriproc/UriReferenceFactory.hxx62
-rw-r--r--stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.cxx271
-rw-r--r--stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.hxx65
-rw-r--r--stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.cxx488
-rw-r--r--stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.hxx64
-rw-r--r--stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.cxx170
-rw-r--r--stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.hxx62
-rw-r--r--stoc/source/uriproc/makefile.mk53
-rw-r--r--stoc/source/uriproc/supportsService.cxx54
-rw-r--r--stoc/source/uriproc/supportsService.hxx46
-rw-r--r--stoc/test/excomp/example/ExampleComponent1.idl43
-rw-r--r--stoc/test/excomp/example/ExampleComponent2.idl43
-rw-r--r--stoc/test/excomp/example/XTest.idl49
-rw-r--r--stoc/test/excomp/excomp.cxx138
-rw-r--r--stoc/test/excomp/excomp1.cxx217
-rw-r--r--stoc/test/excomp/excomp1.xml31
-rw-r--r--stoc/test/excomp/excomp2.cxx288
-rw-r--r--stoc/test/excomp/excomp2.xml31
-rw-r--r--stoc/test/excomp/exports.dxp3
-rw-r--r--stoc/test/excomp/makefile.mk130
-rw-r--r--stoc/test/javavm/jvm_interaction/interactionhandler.cxx206
-rw-r--r--stoc/test/javavm/jvm_interaction/makefile.mk81
-rw-r--r--stoc/test/javavm/makefile.mk73
-rw-r--r--stoc/test/javavm/testapplet/TestApplet.html19
-rw-r--r--stoc/test/javavm/testapplet/TestApplet.java58
-rw-r--r--stoc/test/javavm/testapplet/makefile.mk55
-rw-r--r--stoc/test/javavm/testcomponent/TestComponent.java128
-rw-r--r--stoc/test/javavm/testcomponent/makefile.mk58
-rw-r--r--stoc/test/javavm/testcomponent/manifest1
-rw-r--r--stoc/test/javavm/testjavavm.cxx201
-rw-r--r--stoc/test/javavm/testjavavm.java39
-rw-r--r--stoc/test/language_binding.idl177
-rw-r--r--stoc/test/makefile.mk223
-rw-r--r--stoc/test/mergekeys_.cxx34
-rw-r--r--stoc/test/registry_tdprovider/makefile.mk63
-rw-r--r--stoc/test/registry_tdprovider/readme.txt4
-rw-r--r--stoc/test/registry_tdprovider/testregistrytdprovider.cxx946
-rw-r--r--stoc/test/registry_tdprovider/types.idl112
-rw-r--r--stoc/test/security/makefile.mk59
-rw-r--r--stoc/test/security/test_security.cxx526
-rw-r--r--stoc/test/security/test_security.ini6
-rw-r--r--stoc/test/security/test_security.policy37
-rw-r--r--stoc/test/security/test_security_singleuser.ini6
-rw-r--r--stoc/test/tdmanager/makefile.mk75
-rw-r--r--stoc/test/tdmanager/readme.txt4
-rw-r--r--stoc/test/tdmanager/testtdmanager.cxx377
-rw-r--r--stoc/test/tdmanager/types.idl45
-rw-r--r--stoc/test/tdmanager/types2_incomp.idl38
-rw-r--r--stoc/test/tdmanager/types3_incomp.idl33
-rw-r--r--stoc/test/tdmanager/types4_incomp.idl42
-rw-r--r--stoc/test/tdmanager/types5.idl45
-rw-r--r--stoc/test/tdmanager/types5_incomp.idl43
-rw-r--r--stoc/test/tdmanager/types6_incomp.idl43
-rw-r--r--stoc/test/testconv.cxx708
-rw-r--r--stoc/test/testcorefl.cxx415
-rw-r--r--stoc/test/testcorefl.idl102
-rw-r--r--stoc/test/testiadapter.cxx1072
-rw-r--r--stoc/test/testintrosp.cxx1615
-rw-r--r--stoc/test/testintrosp.idl220
-rw-r--r--stoc/test/testloader.cxx137
-rw-r--r--stoc/test/testproxyfac.cxx381
-rw-r--r--stoc/test/testregistry.cxx698
-rw-r--r--stoc/test/testsmgr.cxx108
-rw-r--r--stoc/test/testsmgr2.cxx121
-rw-r--r--stoc/test/testsmgr_cpnt.cxx474
-rw-r--r--stoc/test/testsmgr_cpnt.map9
-rw-r--r--stoc/test/uriproc/makefile.mk75
-rw-r--r--stoc/test/uriproc/test_uriproc.cxx1008
-rw-r--r--stoc/test/uriproc/version.map34
-rw-r--r--stoc/unosdk.mk34
-rw-r--r--stoc/util/makefile.mk96
-rw-r--r--store/inc/makefile.mk47
-rw-r--r--store/inc/pch/precompiled_store.cxx31
-rw-r--r--store/inc/pch/precompiled_store.hxx34
-rw-r--r--store/inc/store/store.h413
-rw-r--r--store/inc/store/store.hxx611
-rw-r--r--store/inc/store/types.h169
-rw-r--r--store/prj/build.lst5
-rw-r--r--store/prj/d.lst13
-rw-r--r--store/source/lockbyte.cxx950
-rw-r--r--store/source/lockbyte.hxx176
-rw-r--r--store/source/makefile.mk71
-rw-r--r--store/source/object.cxx115
-rw-r--r--store/source/object.hxx135
-rw-r--r--store/source/storbase.cxx200
-rw-r--r--store/source/storbase.hxx957
-rw-r--r--store/source/storbios.cxx1132
-rw-r--r--store/source/storbios.hxx270
-rw-r--r--store/source/storcach.cxx565
-rw-r--r--store/source/storcach.hxx114
-rw-r--r--store/source/stordata.cxx1108
-rw-r--r--store/source/stordata.hxx872
-rw-r--r--store/source/stordir.cxx226
-rw-r--r--store/source/stordir.hxx137
-rw-r--r--store/source/store.cxx768
-rw-r--r--store/source/storlckb.cxx454
-rw-r--r--store/source/storlckb.hxx173
-rw-r--r--store/source/storpage.cxx995
-rw-r--r--store/source/storpage.hxx228
-rw-r--r--store/source/stortree.cxx550
-rw-r--r--store/source/stortree.hxx342
-rw-r--r--store/util/makefile.mk79
-rw-r--r--store/util/store.map31
-rw-r--r--store/util/store.xml7
-rw-r--r--store/version.mk40
-rw-r--r--store/workben/makefile.mk108
-rw-r--r--store/workben/t_base.cxx365
-rw-r--r--store/workben/t_file.cxx225
-rw-r--r--store/workben/t_leak.cxx18
-rw-r--r--store/workben/t_page.cxx1358
-rw-r--r--store/workben/t_store.cxx591
-rw-r--r--svl/inc/PasswordHelper.hxx57
-rw-r--r--svl/inc/adrparse.hxx109
-rw-r--r--svl/inc/broadcast.hxx69
-rw-r--r--svl/inc/cntnrsrt.hxx175
-rw-r--r--svl/inc/cntwids.hrc506
-rw-r--r--svl/inc/converter.hxx45
-rw-r--r--svl/inc/filenotation.hxx73
-rw-r--r--svl/inc/folderrestriction.hxx59
-rw-r--r--svl/inc/fstathelper.hxx68
-rw-r--r--svl/inc/inetdef.hxx31
-rw-r--r--svl/inc/inetmsg.hxx31
-rw-r--r--svl/inc/inetstrm.hxx31
-rw-r--r--svl/inc/instrm.hxx82
-rw-r--r--svl/inc/listener.hxx67
-rw-r--r--svl/inc/listeneriter.hxx81
-rw-r--r--svl/inc/lngmisc.hxx76
-rw-r--r--svl/inc/makefile.mk48
-rw-r--r--svl/inc/nfsymbol.hxx72
-rw-r--r--svl/inc/numuno.hxx101
-rw-r--r--svl/inc/outstrm.hxx68
-rw-r--r--svl/inc/pch/precompiled_svl.cxx31
-rw-r--r--svl/inc/pch/precompiled_svl.hxx430
-rw-r--r--svl/inc/pickerhelper.hxx72
-rw-r--r--svl/inc/pickerhistory.hxx53
-rw-r--r--svl/inc/pickerhistoryaccess.hxx54
-rw-r--r--svl/inc/poolcach.hxx60
-rw-r--r--svl/inc/strmadpt.hxx137
-rw-r--r--svl/inc/stylepool.hxx101
-rw-r--r--svl/inc/svl/aeitem.hxx74
-rw-r--r--svl/inc/svl/asiancfg.hxx72
-rw-r--r--svl/inc/svl/brdcst.hxx78
-rw-r--r--svl/inc/svl/cancel.hxx144
-rw-r--r--svl/inc/svl/cenumitm.hxx179
-rw-r--r--svl/inc/svl/cintitem.hxx285
-rw-r--r--svl/inc/svl/cjkoptions.hxx81
-rw-r--r--svl/inc/svl/cnclhint.hxx51
-rw-r--r--svl/inc/svl/cntwall.hxx80
-rw-r--r--svl/inc/svl/ctloptions.hxx96
-rw-r--r--svl/inc/svl/ctypeitm.hxx84
-rw-r--r--svl/inc/svl/custritm.hxx94
-rw-r--r--svl/inc/svl/dateitem.hxx108
-rw-r--r--svl/inc/svl/documentlockfile.hxx73
-rw-r--r--svl/inc/svl/eitem.hxx71
-rw-r--r--svl/inc/svl/filerec.hxx1086
-rw-r--r--svl/inc/svl/flagitem.hxx83
-rw-r--r--svl/inc/svl/globalnameitem.hxx61
-rw-r--r--svl/inc/svl/hint.hxx74
-rw-r--r--svl/inc/svl/httpcook.hxx154
-rw-r--r--svl/inc/svl/ilstitem.hxx65
-rw-r--r--svl/inc/svl/imageitm.hxx62
-rw-r--r--svl/inc/svl/inethist.hxx134
-rw-r--r--svl/inc/svl/inettype.hxx482
-rw-r--r--svl/inc/svl/intitem.hxx175
-rw-r--r--svl/inc/svl/isethint.hxx55
-rw-r--r--svl/inc/svl/itemiter.hxx71
-rw-r--r--svl/inc/svl/itempool.hxx306
-rw-r--r--svl/inc/svl/itemprop.hxx222
-rw-r--r--svl/inc/svl/itemset.hxx215
-rw-r--r--svl/inc/svl/languageoptions.hxx130
-rw-r--r--svl/inc/svl/lckbitem.hxx67
-rw-r--r--svl/inc/svl/lockfilecommon.hxx82
-rw-r--r--svl/inc/svl/lstner.hxx81
-rw-r--r--svl/inc/svl/macitem.hxx210
-rw-r--r--svl/inc/svl/mailenum.hxx97
-rw-r--r--svl/inc/svl/memberid.hrc70
-rw-r--r--svl/inc/svl/metitem.hxx55
-rw-r--r--svl/inc/svl/nfkeytab.hxx119
-rw-r--r--svl/inc/svl/nfversi.hxx71
-rw-r--r--svl/inc/svl/nranges.hxx97
-rw-r--r--svl/inc/svl/ondemand.hxx467
-rw-r--r--svl/inc/svl/ownlist.hxx102
-rw-r--r--svl/inc/svl/poolitem.hxx433
-rw-r--r--svl/inc/svl/ptitem.hxx80
-rw-r--r--svl/inc/svl/rectitem.hxx79
-rw-r--r--svl/inc/svl/restrictedpaths.hxx85
-rw-r--r--svl/inc/svl/rngitem.hxx117
-rw-r--r--svl/inc/svl/sfontitm.hxx243
-rw-r--r--svl/inc/svl/sharecontrolfile.hxx87
-rw-r--r--svl/inc/svl/slstitm.hxx87
-rw-r--r--svl/inc/svl/smplhint.hxx102
-rw-r--r--svl/inc/svl/solar.hrc341
-rw-r--r--svl/inc/svl/srchcfg.hxx84
-rw-r--r--svl/inc/svl/srchdefs.hxx51
-rw-r--r--svl/inc/svl/srchitem.hxx299
-rw-r--r--svl/inc/svl/stritem.hxx57
-rw-r--r--svl/inc/svl/style.hrc39
-rw-r--r--svl/inc/svl/style.hxx397
-rw-r--r--svl/inc/svl/svarray.hxx1048
-rw-r--r--svl/inc/svl/svdde.hxx476
-rw-r--r--svl/inc/svl/svl.hrc162
-rw-r--r--svl/inc/svl/svldata.hxx74
-rw-r--r--svl/inc/svl/svldllapi.h43
-rw-r--r--svl/inc/svl/svstdarr.hxx206
-rw-r--r--svl/inc/svl/szitem.hxx79
-rw-r--r--svl/inc/svl/undo.hxx240
-rw-r--r--svl/inc/svl/urlfilter.hxx66
-rw-r--r--svl/inc/svl/visitem.hxx96
-rw-r--r--svl/inc/svl/zforlist.hxx1028
-rw-r--r--svl/inc/svl/zformat.hxx596
-rw-r--r--svl/inc/urihelper.hxx238
-rw-r--r--svl/inc/urlbmk.hxx71
-rw-r--r--svl/inc/whiter.hxx63
-rw-r--r--svl/inc/xmlement.hxx43
-rw-r--r--svl/prj/build.lst22
-rw-r--r--svl/prj/d.lst22
-rw-r--r--svl/qa/complex/ConfigItems/CheckConfigItems.java178
-rw-r--r--svl/qa/complex/ConfigItems/helper/AccessibilityOptTest.cxx395
-rw-r--r--svl/qa/complex/ConfigItems/helper/AccessibilityOptTest.hxx73
-rw-r--r--svl/qa/complex/ConfigItems/helper/ConfigItemTest.cxx248
-rw-r--r--svl/qa/complex/ConfigItems/helper/HistoryOptTest.cxx801
-rw-r--r--svl/qa/complex/ConfigItems/helper/HistoryOptTest.hxx206
-rw-r--r--svl/qa/complex/ConfigItems/helper/PrintOptTest.cxx738
-rw-r--r--svl/qa/complex/ConfigItems/helper/PrintOptTest.hxx87
-rw-r--r--svl/qa/complex/ConfigItems/helper/UserOptTest.cxx269
-rw-r--r--svl/qa/complex/ConfigItems/helper/UserOptTest.hxx73
-rw-r--r--svl/qa/complex/ConfigItems/helper/makefile.mk73
-rw-r--r--svl/qa/complex/ConfigItems/makefile.mk83
-rw-r--r--svl/qa/complex/passwordcontainer/MasterPasswdHandler.java61
-rw-r--r--svl/qa/complex/passwordcontainer/PasswordContainerTest.java32
-rw-r--r--svl/qa/complex/passwordcontainer/PasswordContainerUnitTest.java73
-rw-r--r--svl/qa/complex/passwordcontainer/Test01.java111
-rw-r--r--svl/qa/complex/passwordcontainer/Test02.java155
-rw-r--r--svl/qa/complex/passwordcontainer/Test03.java118
-rw-r--r--svl/qa/complex/passwordcontainer/TestHelper.java88
-rw-r--r--svl/qa/complex/passwordcontainer/makefile.mk87
-rw-r--r--svl/qa/export.map34
-rw-r--r--svl/qa/makefile.mk101
-rw-r--r--svl/qa/test_URIHelper.cxx463
-rw-r--r--svl/source/config/asiancfg.cxx294
-rw-r--r--svl/source/config/cjkoptions.cxx506
-rw-r--r--svl/source/config/ctloptions.cxx494
-rw-r--r--svl/source/config/itemholder2.cxx182
-rw-r--r--svl/source/config/itemholder2.hxx92
-rw-r--r--svl/source/config/languageoptions.cxx278
-rw-r--r--svl/source/config/makefile.mk52
-rw-r--r--svl/source/config/srchcfg.cxx289
-rw-r--r--svl/source/filepicker/makefile.mk47
-rw-r--r--svl/source/filepicker/pickerhelper.cxx101
-rw-r--r--svl/source/filepicker/pickerhistory.cxx140
-rw-r--r--svl/source/filerec/filerec.cxx1018
-rw-r--r--svl/source/filerec/makefile.mk46
-rw-r--r--svl/source/fsstor/fsfactory.cxx294
-rw-r--r--svl/source/fsstor/fsstorage.cxx1612
-rw-r--r--svl/source/fsstor/fsstorage.hxx339
-rw-r--r--svl/source/fsstor/makefile.mk66
-rw-r--r--svl/source/fsstor/oinputstreamcontainer.cxx349
-rw-r--r--svl/source/fsstor/oinputstreamcontainer.hxx98
-rw-r--r--svl/source/fsstor/ostreamcontainer.cxx569
-rw-r--r--svl/source/fsstor/ostreamcontainer.hxx127
-rw-r--r--svl/source/inc/fsfactory.hxx74
-rw-r--r--svl/source/inc/passwordcontainer.hxx428
-rw-r--r--svl/source/inc/poolio.hxx203
-rw-r--r--svl/source/items/aeitem.cxx314
-rw-r--r--svl/source/items/cenumitm.cxx294
-rw-r--r--svl/source/items/cintitem.cxx564
-rw-r--r--svl/source/items/cntwall.cxx169
-rw-r--r--svl/source/items/cstitem.src69
-rw-r--r--svl/source/items/ctypeitm.cxx254
-rw-r--r--svl/source/items/custritm.cxx140
-rw-r--r--svl/source/items/dateitem.cxx280
-rw-r--r--svl/source/items/eitem.cxx49
-rw-r--r--svl/source/items/flagitem.cxx165
-rw-r--r--svl/source/items/globalnameitem.cxx116
-rw-r--r--svl/source/items/ilstitem.cxx106
-rw-r--r--svl/source/items/imageitm.cxx147
-rw-r--r--svl/source/items/intitem.cxx260
-rw-r--r--svl/source/items/itemiter.cxx118
-rw-r--r--svl/source/items/itempool.cxx1173
-rw-r--r--svl/source/items/itemprop.cxx505
-rw-r--r--svl/source/items/itemset.cxx2057
-rw-r--r--svl/source/items/lckbitem.cxx193
-rw-r--r--svl/source/items/macitem.cxx294
-rw-r--r--svl/source/items/makefile.mk84
-rw-r--r--svl/source/items/nranges.cxx853
-rw-r--r--svl/source/items/poolcach.cxx155
-rw-r--r--svl/source/items/poolio.cxx1713
-rw-r--r--svl/source/items/poolitem.cxx444
-rw-r--r--svl/source/items/ptitem.cxx207
-rw-r--r--svl/source/items/rectitem.cxx203
-rw-r--r--svl/source/items/rngitem.cxx56
-rw-r--r--svl/source/items/rngitem_inc.cxx243
-rw-r--r--svl/source/items/sfontitm.cxx141
-rw-r--r--svl/source/items/sitem.cxx111
-rw-r--r--svl/source/items/slstitm.cxx424
-rw-r--r--svl/source/items/srchitem.cxx671
-rw-r--r--svl/source/items/stritem.cxx74
-rw-r--r--svl/source/items/style.cxx1398
-rw-r--r--svl/source/items/stylepool.cxx507
-rw-r--r--svl/source/items/szitem.cxx213
-rw-r--r--svl/source/items/visitem.cxx148
-rw-r--r--svl/source/items/whassert.hxx57
-rw-r--r--svl/source/items/whiter.cxx123
-rw-r--r--svl/source/memtools/makefile.mk46
-rw-r--r--svl/source/memtools/svarray.cxx384
-rw-r--r--svl/source/misc/PasswordHelper.cxx105
-rw-r--r--svl/source/misc/adrparse.cxx920
-rw-r--r--svl/source/misc/documentlockfile.cxx236
-rw-r--r--svl/source/misc/filenotation.cxx146
-rw-r--r--svl/source/misc/folderrestriction.cxx108
-rw-r--r--svl/source/misc/fstathelper.cxx102
-rw-r--r--svl/source/misc/inethist.cxx544
-rw-r--r--svl/source/misc/inettype.cxx1347
-rw-r--r--svl/source/misc/lngmisc.cxx140
-rw-r--r--svl/source/misc/lockfilecommon.cxx274
-rw-r--r--svl/source/misc/makefile.mk70
-rw-r--r--svl/source/misc/mediatyp.src769
-rw-r--r--svl/source/misc/ownlist.cxx329
-rw-r--r--svl/source/misc/restrictedpaths.cxx217
-rw-r--r--svl/source/misc/sharecontrolfile.cxx375
-rw-r--r--svl/source/misc/strmadpt.cxx1047
-rw-r--r--svl/source/misc/svldata.cxx92
-rw-r--r--svl/source/misc/urihelper.cxx951
-rw-r--r--svl/source/notify/brdcst.cxx210
-rw-r--r--svl/source/notify/broadcast.cxx148
-rw-r--r--svl/source/notify/cancel.cxx203
-rw-r--r--svl/source/notify/hint.cxx47
-rw-r--r--svl/source/notify/isethint.cxx75
-rw-r--r--svl/source/notify/listener.cxx164
-rw-r--r--svl/source/notify/listenerbase.cxx79
-rw-r--r--svl/source/notify/listenerbase.hxx59
-rw-r--r--svl/source/notify/listeneriter.cxx192
-rw-r--r--svl/source/notify/lstner.cxx191
-rw-r--r--svl/source/notify/makefile.mk62
-rw-r--r--svl/source/notify/smplhint.cxx47
-rw-r--r--svl/source/numbers/makefile.mk74
-rw-r--r--svl/source/numbers/nbdll.cxx80
-rw-r--r--svl/source/numbers/numfmuno.cxx1140
-rw-r--r--svl/source/numbers/numfmuno.hxx323
-rw-r--r--svl/source/numbers/numhead.cxx249
-rw-r--r--svl/source/numbers/numhead.hxx108
-rw-r--r--svl/source/numbers/numuno.cxx167
-rw-r--r--svl/source/numbers/supservs.cxx230
-rw-r--r--svl/source/numbers/supservs.hxx104
-rw-r--r--svl/source/numbers/zforfind.cxx2811
-rw-r--r--svl/source/numbers/zforfind.hxx291
-rw-r--r--svl/source/numbers/zforlist.cxx4403
-rw-r--r--svl/source/numbers/zformat.cxx4594
-rw-r--r--svl/source/numbers/zforscan.cxx2809
-rw-r--r--svl/source/numbers/zforscan.hxx278
-rw-r--r--svl/source/passwordcontainer/makefile.mk62
-rw-r--r--svl/source/passwordcontainer/passwordcontainer.cxx1588
-rw-r--r--svl/source/passwordcontainer/syscreds.cxx303
-rw-r--r--svl/source/passwordcontainer/syscreds.hxx95
-rw-r--r--svl/source/svdde/ddecli.cxx476
-rw-r--r--svl/source/svdde/ddedata.cxx232
-rw-r--r--svl/source/svdde/ddedll.cxx66
-rw-r--r--svl/source/svdde/ddeimp.hxx180
-rw-r--r--svl/source/svdde/ddeinf.cxx192
-rw-r--r--svl/source/svdde/ddeml1.cxx2660
-rw-r--r--svl/source/svdde/ddeml2.cxx1013
-rw-r--r--svl/source/svdde/ddemldeb.cxx282
-rw-r--r--svl/source/svdde/ddemldeb.hxx68
-rw-r--r--svl/source/svdde/ddemlimp.hxx435
-rw-r--r--svl/source/svdde/ddemlos2.h377
-rw-r--r--svl/source/svdde/ddestrg.cxx81
-rw-r--r--svl/source/svdde/ddesvr.cxx1106
-rw-r--r--svl/source/svdde/ddewrap.cxx102
-rw-r--r--svl/source/svdde/ddewrap.hxx27
-rw-r--r--svl/source/svdde/makefile.mk60
-rw-r--r--svl/source/svsql/converter.cxx44
-rw-r--r--svl/source/svsql/makefile.mk46
-rw-r--r--svl/source/undo/makefile.mk47
-rw-r--r--svl/source/undo/undo.cxx818
-rw-r--r--svl/source/uno/makefile.mk47
-rw-r--r--svl/source/uno/pathservice.cxx106
-rw-r--r--svl/source/uno/registerservices.cxx153
-rw-r--r--svl/unx/inc/convert.hxx66
-rw-r--r--svl/unx/source/svdde/ddedummy.cxx341
-rw-r--r--svl/unx/source/svdde/makefile.mk46
-rw-r--r--svl/util/makefile.mk121
-rw-r--r--svl/util/svl.pmk31
-rw-r--r--svtools/bmpmaker/bmp.cxx249
-rw-r--r--svtools/bmpmaker/bmp.hrc44
-rw-r--r--svtools/bmpmaker/bmp.src116
-rw-r--r--svtools/bmpmaker/bmpcore.cxx423
-rw-r--r--svtools/bmpmaker/bmpcore.hxx100
-rw-r--r--svtools/bmpmaker/bmpsum.cxx511
-rw-r--r--svtools/bmpmaker/g2g.cxx254
-rw-r--r--svtools/bmpmaker/makefile.mk72
-rw-r--r--svtools/inc/DocumentInfoPreview.hxx63
-rw-r--r--svtools/inc/QueryFolderName.hxx66
-rw-r--r--svtools/inc/acceleratorexecute.hxx278
-rw-r--r--svtools/inc/addresstemplate.hxx163
-rw-r--r--svtools/inc/apearcfg.hxx130
-rw-r--r--svtools/inc/asynclink.hxx76
-rw-r--r--svtools/inc/bindablecontrolhelper.hxx64
-rw-r--r--svtools/inc/borderhelper.hxx52
-rw-r--r--svtools/inc/calendar.hxx498
-rw-r--r--svtools/inc/cliplistener.hxx63
-rw-r--r--svtools/inc/collatorres.hxx26
-rw-r--r--svtools/inc/contextmenuhelper.hxx133
-rw-r--r--svtools/inc/controldims.hrc102
-rw-r--r--svtools/inc/ctrlbox.hxx516
-rw-r--r--svtools/inc/ctrltool.hxx250
-rw-r--r--svtools/inc/dialogclosedlistener.hxx79
-rw-r--r--svtools/inc/dialogcontrolling.hxx308
-rw-r--r--svtools/inc/expander.hxx95
-rw-r--r--svtools/inc/extcolorcfg.hxx130
-rw-r--r--svtools/inc/filectrl.hxx111
-rw-r--r--svtools/inc/filedlg.hxx109
-rw-r--r--svtools/inc/filedlg2.hrc41
-rw-r--r--svtools/inc/fileview.hxx271
-rw-r--r--svtools/inc/filterutils.hxx25
-rw-r--r--svtools/inc/fltdefs.hxx155
-rw-r--r--svtools/inc/fontsubstconfig.hxx70
-rw-r--r--svtools/inc/framestatuslistener.hxx119
-rw-r--r--svtools/inc/helpagentwindow.hxx90
-rw-r--r--svtools/inc/htmlkywd.hxx804
-rw-r--r--svtools/inc/htmltokn.h572
-rw-r--r--svtools/inc/imagemgr.hrc190
-rw-r--r--svtools/inc/imagemgr.hxx97
-rw-r--r--svtools/inc/imageresourceaccess.hxx92
-rw-r--r--svtools/inc/imgdef.hxx45
-rw-r--r--svtools/inc/indexentryres.hxx25
-rw-r--r--svtools/inc/inetimg.hxx88
-rw-r--r--svtools/inc/itemdel.hxx41
-rw-r--r--svtools/inc/ivctrl.hxx392
-rw-r--r--svtools/inc/localresaccess.hxx84
-rw-r--r--svtools/inc/makefile.mk48
-rw-r--r--svtools/inc/pch/precompiled_svtools.cxx31
-rw-r--r--svtools/inc/pch/precompiled_svtools.hxx435
-rw-r--r--svtools/inc/prgsbar.hxx103
-rw-r--r--svtools/inc/roadmap.hxx137
-rw-r--r--svtools/inc/rtfkeywd.hxx1159
-rw-r--r--svtools/inc/rtfout.hxx67
-rw-r--r--svtools/inc/rtftoken.h1272
-rw-r--r--svtools/inc/ruler.hxx884
-rw-r--r--svtools/inc/scriptedtext.hxx131
-rw-r--r--svtools/inc/scrwin.hxx113
-rw-r--r--svtools/inc/sfxecode.hxx120
-rw-r--r--svtools/inc/soerr.hxx83
-rw-r--r--svtools/inc/sores.hxx182
-rw-r--r--svtools/inc/statusbarcontroller.hxx161
-rw-r--r--svtools/inc/stdmenu.hxx242
-rw-r--r--svtools/inc/svtools/AccessibleBrowseBoxObjType.hxx61
-rw-r--r--svtools/inc/svtools/FilterConfigItem.hxx102
-rw-r--r--svtools/inc/svtools/accessibilityoptions.hxx84
-rw-r--r--svtools/inc/svtools/accessiblefactory.hxx186
-rw-r--r--svtools/inc/svtools/accessibletable.hxx185
-rw-r--r--svtools/inc/svtools/accessibletableprovider.hxx254
-rw-r--r--svtools/inc/svtools/brwbox.hxx878
-rw-r--r--svtools/inc/svtools/brwhead.hxx55
-rw-r--r--svtools/inc/svtools/chartprettypainter.hxx71
-rw-r--r--svtools/inc/svtools/colctrl.hxx205
-rw-r--r--svtools/inc/svtools/colorcfg.hxx154
-rw-r--r--svtools/inc/svtools/colrdlg.hxx108
-rw-r--r--svtools/inc/svtools/editbrowsebox.hxx696
-rw-r--r--svtools/inc/svtools/editimplementation.hxx153
-rw-r--r--svtools/inc/svtools/editsyntaxhighlighter.hxx67
-rw-r--r--svtools/inc/svtools/ehdl.hxx86
-rw-r--r--svtools/inc/svtools/embedhlp.hxx143
-rw-r--r--svtools/inc/svtools/embedtransfer.hxx66
-rw-r--r--svtools/inc/svtools/extensionlistbox.hxx107
-rw-r--r--svtools/inc/svtools/fileurlbox.hxx79
-rw-r--r--svtools/inc/svtools/filter.hxx426
-rw-r--r--svtools/inc/svtools/fixedhyper.hxx233
-rw-r--r--svtools/inc/svtools/fltcall.hxx77
-rw-r--r--svtools/inc/svtools/fmtfield.hxx352
-rw-r--r--svtools/inc/svtools/generictoolboxcontroller.hxx74
-rw-r--r--svtools/inc/svtools/genericunodialog.hxx196
-rw-r--r--svtools/inc/svtools/grfmgr.hxx573
-rw-r--r--svtools/inc/svtools/headbar.hxx397
-rw-r--r--svtools/inc/svtools/helpid.hrc117
-rw-r--r--svtools/inc/svtools/helpopt.hxx98
-rw-r--r--svtools/inc/svtools/htmlcfg.hxx109
-rw-r--r--svtools/inc/svtools/htmlout.hxx127
-rw-r--r--svtools/inc/svtools/hyperlabel.hxx100
-rw-r--r--svtools/inc/svtools/imap.hxx171
-rw-r--r--svtools/inc/svtools/imapcirc.hxx90
-rw-r--r--svtools/inc/svtools/imapobj.hxx165
-rw-r--r--svtools/inc/svtools/imappoly.hxx96
-rw-r--r--svtools/inc/svtools/imaprect.hxx88
-rw-r--r--svtools/inc/svtools/inettbc.hxx111
-rw-r--r--svtools/inc/svtools/insdlg.hxx74
-rw-r--r--svtools/inc/svtools/javacontext.hxx91
-rw-r--r--svtools/inc/svtools/javainteractionhandler.hxx84
-rw-r--r--svtools/inc/svtools/langhelp.hxx44
-rw-r--r--svtools/inc/svtools/langtab.hxx60
-rw-r--r--svtools/inc/svtools/menuoptions.hxx172
-rw-r--r--svtools/inc/svtools/miscopt.hxx199
-rw-r--r--svtools/inc/svtools/optionsdrawinglayer.hxx241
-rw-r--r--svtools/inc/svtools/parhtml.hxx300
-rw-r--r--svtools/inc/svtools/parrtf.hxx94
-rw-r--r--svtools/inc/svtools/popupmenucontrollerbase.hxx144
-rw-r--r--svtools/inc/svtools/popupwindowcontroller.hxx88
-rw-r--r--svtools/inc/svtools/printdlg.hxx285
-rw-r--r--svtools/inc/svtools/printoptions.hxx127
-rw-r--r--svtools/inc/svtools/prnsetup.hxx113
-rw-r--r--svtools/inc/svtools/roadmapwizard.hxx260
-rw-r--r--svtools/inc/svtools/stdctrl.hxx71
-rw-r--r--svtools/inc/svtools/stringtransfer.hxx85
-rw-r--r--svtools/inc/svtools/svicnvw.hxx291
-rw-r--r--svtools/inc/svtools/svlbitm.hxx296
-rw-r--r--svtools/inc/svtools/svlbox.hxx653
-rw-r--r--svtools/inc/svtools/svmedit.hxx157
-rw-r--r--svtools/inc/svtools/svmedit2.hxx56
-rw-r--r--svtools/inc/svtools/svparser.hxx284
-rw-r--r--svtools/inc/svtools/svtabbx.hxx270
-rw-r--r--svtools/inc/svtools/svtdata.hxx87
-rw-r--r--svtools/inc/svtools/svtdllapi.h43
-rw-r--r--svtools/inc/svtools/svtools.hrc402
-rw-r--r--svtools/inc/svtools/svtreebx.hxx424
-rw-r--r--svtools/inc/svtools/svxbox.hxx195
-rw-r--r--svtools/inc/svtools/syntaxhighlight.hxx193
-rw-r--r--svtools/inc/svtools/table/abstracttablecontrol.hxx137
-rw-r--r--svtools/inc/svtools/table/defaultinputhandler.hxx72
-rw-r--r--svtools/inc/svtools/table/gridtablerenderer.hxx111
-rw-r--r--svtools/inc/svtools/table/tablecontrol.hxx246
-rw-r--r--svtools/inc/svtools/table/tabledatawindow.hxx87
-rw-r--r--svtools/inc/svtools/table/tableinputhandler.hxx81
-rw-r--r--svtools/inc/svtools/table/tablemodel.hxx486
-rw-r--r--svtools/inc/svtools/table/tablerenderer.hxx277
-rw-r--r--svtools/inc/svtools/table/tabletypes.hxx79
-rw-r--r--svtools/inc/svtools/textdata.hxx208
-rw-r--r--svtools/inc/svtools/texteng.hxx329
-rw-r--r--svtools/inc/svtools/textview.hxx227
-rw-r--r--svtools/inc/svtools/textwindowpeer.hxx74
-rw-r--r--svtools/inc/svtools/toolbarmenu.hxx158
-rw-r--r--svtools/inc/svtools/toolboxcontroller.hxx178
-rw-r--r--svtools/inc/svtools/toolpanel/decklayouter.hxx107
-rw-r--r--svtools/inc/svtools/toolpanel/drawerlayouter.hxx105
-rw-r--r--svtools/inc/svtools/toolpanel/paneltabbar.hxx104
-rw-r--r--svtools/inc/svtools/toolpanel/refbase.hxx83
-rw-r--r--svtools/inc/svtools/toolpanel/tabalignment.hxx50
-rw-r--r--svtools/inc/svtools/toolpanel/tabitemcontent.hxx51
-rw-r--r--svtools/inc/svtools/toolpanel/tablayouter.hxx115
-rw-r--r--svtools/inc/svtools/toolpanel/toolpanel.hxx150
-rw-r--r--svtools/inc/svtools/toolpanel/toolpaneldeck.hxx196
-rw-r--r--svtools/inc/svtools/transfer.hxx592
-rw-r--r--svtools/inc/svtools/treelist.hxx511
-rw-r--r--svtools/inc/svtools/ttprops.hxx108
-rw-r--r--svtools/inc/svtools/unitconv.hxx71
-rw-r--r--svtools/inc/svtools/urlcontrol.hxx63
-rw-r--r--svtools/inc/svtools/valueset.hxx444
-rw-r--r--svtools/inc/svtools/wizardmachine.hxx394
-rw-r--r--svtools/inc/svtools/wizdlg.hxx312
-rw-r--r--svtools/inc/svtools/wmf.hxx49
-rw-r--r--svtools/inc/svtools/xtextedt.hxx82
-rw-r--r--svtools/inc/svtools/xwindowitem.hxx72
-rw-r--r--svtools/inc/sychconv.hxx50
-rw-r--r--svtools/inc/tabbar.hxx570
-rw-r--r--svtools/inc/taskbar.hxx491
-rw-r--r--svtools/inc/templatefoldercache.hxx111
-rw-r--r--svtools/inc/templdlg.hxx94
-rw-r--r--svtools/inc/testtool.hxx78
-rw-r--r--svtools/inc/tooltiplbox.hxx69
-rw-r--r--svtools/inc/txtattr.hxx238
-rw-r--r--svtools/inc/txtcmp.hxx35
-rw-r--r--svtools/inc/unoevent.hxx332
-rw-r--r--svtools/inc/unoimap.hxx48
-rw-r--r--svtools/inc/wallitem.hxx65
-rw-r--r--svtools/prj/build.lst33
-rw-r--r--svtools/prj/d.lst40
-rw-r--r--svtools/prj/svtools.xml122
-rw-r--r--svtools/qa/unoapi/Test.java51
-rw-r--r--svtools/qa/unoapi/knownissues.xcl35
-rw-r--r--svtools/qa/unoapi/makefile.mk48
-rw-r--r--svtools/qa/unoapi/svtools.sce12
-rw-r--r--svtools/source/brwbox/brwbox1.cxx2745
-rw-r--r--svtools/source/brwbox/brwbox2.cxx2177
-rw-r--r--svtools/source/brwbox/brwbox3.cxx571
-rw-r--r--svtools/source/brwbox/brwhead.cxx118
-rw-r--r--svtools/source/brwbox/brwimpl.hxx90
-rw-r--r--svtools/source/brwbox/datwin.cxx775
-rw-r--r--svtools/source/brwbox/datwin.hxx252
-rw-r--r--svtools/source/brwbox/ebbcontrols.cxx630
-rw-r--r--svtools/source/brwbox/editbrowsebox.cxx1431
-rw-r--r--svtools/source/brwbox/editbrowsebox.hrc42
-rw-r--r--svtools/source/brwbox/editbrowsebox.src66
-rw-r--r--svtools/source/brwbox/editbrowsebox2.cxx224
-rw-r--r--svtools/source/brwbox/editbrowseboximpl.hxx47
-rw-r--r--svtools/source/brwbox/makefile.mk59
-rw-r--r--svtools/source/config/accessibilityoptions.cxx642
-rw-r--r--svtools/source/config/apearcfg.cxx324
-rw-r--r--svtools/source/config/colorcfg.cxx689
-rw-r--r--svtools/source/config/extcolorcfg.cxx830
-rw-r--r--svtools/source/config/fontsubstconfig.cxx232
-rw-r--r--svtools/source/config/helpopt.cxx766
-rw-r--r--svtools/source/config/htmlcfg.cxx527
-rw-r--r--svtools/source/config/itemholder2.cxx212
-rw-r--r--svtools/source/config/itemholder2.hxx92
-rw-r--r--svtools/source/config/makefile.mk58
-rw-r--r--svtools/source/config/menuoptions.cxx569
-rw-r--r--svtools/source/config/miscopt.cxx1044
-rw-r--r--svtools/source/config/optionsdrawinglayer.cxx1715
-rw-r--r--svtools/source/config/printoptions.cxx859
-rw-r--r--svtools/source/config/test/makefile.mk61
-rw-r--r--svtools/source/config/test/test.cxx271
-rw-r--r--svtools/source/contnr/cont_pch.cxx43
-rw-r--r--svtools/source/contnr/contentenumeration.cxx466
-rw-r--r--svtools/source/contnr/contentenumeration.hxx289
-rw-r--r--svtools/source/contnr/ctrdll.cxx80
-rw-r--r--svtools/source/contnr/fileview.cxx2789
-rw-r--r--svtools/source/contnr/fileview.hrc40
-rw-r--r--svtools/source/contnr/fileview.src196
-rw-r--r--svtools/source/contnr/imivctl.hxx635
-rw-r--r--svtools/source/contnr/imivctl1.cxx4654
-rw-r--r--svtools/source/contnr/imivctl2.cxx850
-rw-r--r--svtools/source/contnr/ivctrl.cxx641
-rw-r--r--svtools/source/contnr/makefile.mk82
-rw-r--r--svtools/source/contnr/svcontnr.src103
-rw-r--r--svtools/source/contnr/svicnvw.cxx832
-rw-r--r--svtools/source/contnr/svimpbox.cxx3629
-rw-r--r--svtools/source/contnr/svimpicn.cxx4165
-rw-r--r--svtools/source/contnr/svlbitm.cxx618
-rw-r--r--svtools/source/contnr/svlbox.cxx1934
-rw-r--r--svtools/source/contnr/svtabbx.cxx1302
-rw-r--r--svtools/source/contnr/svtreebx.cxx2656
-rw-r--r--svtools/source/contnr/templwin.cxx2023
-rw-r--r--svtools/source/contnr/templwin.hrc59
-rw-r--r--svtools/source/contnr/templwin.hxx311
-rw-r--r--svtools/source/contnr/templwin.src376
-rw-r--r--svtools/source/contnr/tooltiplbox.cxx122
-rw-r--r--svtools/source/contnr/treelist.cxx2120
-rw-r--r--svtools/source/control/asynclink.cxx142
-rw-r--r--svtools/source/control/calendar.cxx3037
-rwxr-xr-xsvtools/source/control/calendar.src74
-rw-r--r--svtools/source/control/collatorres.cxx130
-rw-r--r--svtools/source/control/ctrlbox.cxx1631
-rwxr-xr-xsvtools/source/control/ctrlbox.src232
-rw-r--r--svtools/source/control/ctrldll.cxx79
-rw-r--r--svtools/source/control/ctrltool.cxx992
-rwxr-xr-xsvtools/source/control/ctrltool.src144
-rw-r--r--svtools/source/control/filectrl.cxx233
-rw-r--r--svtools/source/control/filectrl.src58
-rw-r--r--svtools/source/control/filectrl2.cxx96
-rw-r--r--svtools/source/control/fileurlbox.cxx126
-rw-r--r--svtools/source/control/fixedhyper.cxx235
-rw-r--r--svtools/source/control/fmtfield.cxx1400
-rw-r--r--svtools/source/control/headbar.cxx1647
-rw-r--r--svtools/source/control/hyperlabel.cxx268
-rw-r--r--svtools/source/control/indexentryres.cxx135
-rw-r--r--svtools/source/control/inettbc.cxx1369
-rwxr-xr-xsvtools/source/control/makefile.mk87
-rw-r--r--svtools/source/control/prgsbar.cxx260
-rw-r--r--svtools/source/control/roadmap.cxx1025
-rw-r--r--svtools/source/control/ruler.cxx3240
-rw-r--r--svtools/source/control/scriptedtext.cxx397
-rw-r--r--svtools/source/control/scrwin.cxx574
-rw-r--r--svtools/source/control/stdctrl.cxx98
-rw-r--r--svtools/source/control/stdmenu.cxx516
-rw-r--r--svtools/source/control/svxbox.cxx619
-rw-r--r--svtools/source/control/tabbar.cxx2949
-rw-r--r--svtools/source/control/taskbar.cxx593
-rw-r--r--svtools/source/control/taskbox.cxx352
-rw-r--r--svtools/source/control/taskmisc.cxx380
-rw-r--r--svtools/source/control/taskstat.cxx656
-rw-r--r--svtools/source/control/toolbarmenu.cxx1830
-rw-r--r--svtools/source/control/toolbarmenuacc.cxx1006
-rw-r--r--svtools/source/control/toolbarmenuimp.hxx317
-rw-r--r--svtools/source/control/urlcontrol.cxx97
-rw-r--r--svtools/source/control/valueacc.cxx1261
-rw-r--r--svtools/source/control/valueimp.hxx330
-rw-r--r--svtools/source/control/valueset.cxx2746
-rw-r--r--svtools/source/dialogs/addresstemplate.cxx1332
-rw-r--r--svtools/source/dialogs/addresstemplate.hrc88
-rw-r--r--svtools/source/dialogs/addresstemplate.src358
-rw-r--r--svtools/source/dialogs/colctrl.cxx692
-rw-r--r--svtools/source/dialogs/colrdlg.cxx328
-rw-r--r--svtools/source/dialogs/colrdlg.hrc67
-rw-r--r--svtools/source/dialogs/colrdlg.src308
-rw-r--r--svtools/source/dialogs/filedlg.cxx151
-rw-r--r--svtools/source/dialogs/filedlg2.cxx1362
-rw-r--r--svtools/source/dialogs/filedlg2.hxx220
-rw-r--r--svtools/source/dialogs/filedlg2.src126
-rw-r--r--svtools/source/dialogs/formats.src294
-rw-r--r--svtools/source/dialogs/insdlg.cxx392
-rwxr-xr-xsvtools/source/dialogs/makefile.mk81
-rw-r--r--svtools/source/dialogs/mcvmath.cxx307
-rw-r--r--svtools/source/dialogs/mcvmath.hxx231
-rw-r--r--svtools/source/dialogs/printdlg.cxx795
-rw-r--r--svtools/source/dialogs/printdlg.hrc74
-rw-r--r--svtools/source/dialogs/printdlg.src333
-rw-r--r--svtools/source/dialogs/prnsetup.cxx401
-rw-r--r--svtools/source/dialogs/prnsetup.hrc48
-rw-r--r--svtools/source/dialogs/prnsetup.src278
-rw-r--r--svtools/source/dialogs/propctrl.cxx499
-rw-r--r--svtools/source/dialogs/propctrl.hxx109
-rw-r--r--svtools/source/dialogs/property.cxx1551
-rw-r--r--svtools/source/dialogs/roadmapwizard.cxx751
-rw-r--r--svtools/source/dialogs/so3res.src315
-rw-r--r--svtools/source/dialogs/wizardmachine.cxx751
-rw-r--r--svtools/source/dialogs/wizardmachine.src50
-rw-r--r--svtools/source/dialogs/wizdlg.cxx704
-rw-r--r--svtools/source/edit/editsyntaxhighlighter.cxx207
-rw-r--r--svtools/source/edit/makefile.mk71
-rw-r--r--svtools/source/edit/svmedit.cxx1659
-rw-r--r--svtools/source/edit/svmedit2.cxx83
-rw-r--r--svtools/source/edit/sychconv.cxx106
-rw-r--r--svtools/source/edit/syntaxhighlight.cxx912
-rw-r--r--svtools/source/edit/textdat2.hxx309
-rw-r--r--svtools/source/edit/textdata.cxx363
-rw-r--r--svtools/source/edit/textdoc.cxx1049
-rw-r--r--svtools/source/edit/textdoc.hxx151
-rw-r--r--svtools/source/edit/texteng.cxx3298
-rw-r--r--svtools/source/edit/textund2.hxx151
-rw-r--r--svtools/source/edit/textundo.cxx346
-rw-r--r--svtools/source/edit/textundo.hxx87
-rw-r--r--svtools/source/edit/textview.cxx2464
-rw-r--r--svtools/source/edit/textwindowpeer.cxx62
-rw-r--r--svtools/source/edit/txtattr.cxx200
-rw-r--r--svtools/source/edit/xtextedt.cxx423
-rw-r--r--svtools/source/filter.vcl/filter/FilterConfigCache.cxx599
-rw-r--r--svtools/source/filter.vcl/filter/FilterConfigCache.hxx147
-rw-r--r--svtools/source/filter.vcl/filter/FilterConfigItem.cxx625
-rw-r--r--svtools/source/filter.vcl/filter/SvFilterOptionsDialog.cxx329
-rw-r--r--svtools/source/filter.vcl/filter/SvFilterOptionsDialog.hxx103
-rw-r--r--svtools/source/filter.vcl/filter/dlgejpg.cxx98
-rw-r--r--svtools/source/filter.vcl/filter/dlgejpg.hrc39
-rw-r--r--svtools/source/filter.vcl/filter/dlgejpg.hxx74
-rw-r--r--svtools/source/filter.vcl/filter/dlgejpg.src136
-rw-r--r--svtools/source/filter.vcl/filter/dlgepng.cxx93
-rw-r--r--svtools/source/filter.vcl/filter/dlgepng.hrc35
-rw-r--r--svtools/source/filter.vcl/filter/dlgepng.hxx74
-rw-r--r--svtools/source/filter.vcl/filter/dlgepng.src119
-rw-r--r--svtools/source/filter.vcl/filter/dlgexpor.cxx444
-rw-r--r--svtools/source/filter.vcl/filter/dlgexpor.hrc58
-rw-r--r--svtools/source/filter.vcl/filter/dlgexpor.hxx129
-rw-r--r--svtools/source/filter.vcl/filter/dlgexpor.src315
-rw-r--r--svtools/source/filter.vcl/filter/filter.cxx2171
-rw-r--r--svtools/source/filter.vcl/filter/filter2.cxx1422
-rw-r--r--svtools/source/filter.vcl/filter/fldll.cxx78
-rw-r--r--svtools/source/filter.vcl/filter/gradwrap.cxx573
-rw-r--r--svtools/source/filter.vcl/filter/makefile.mk97
-rw-r--r--svtools/source/filter.vcl/filter/sgf.ini118
-rw-r--r--svtools/source/filter.vcl/filter/sgfbram.cxx669
-rw-r--r--svtools/source/filter.vcl/filter/sgvmain.cxx1141
-rw-r--r--svtools/source/filter.vcl/filter/sgvspln.cxx898
-rw-r--r--svtools/source/filter.vcl/filter/sgvtext.cxx1340
-rw-r--r--svtools/source/filter.vcl/filter/strings.hrc27
-rw-r--r--svtools/source/filter.vcl/filter/strings.src85
-rw-r--r--svtools/source/filter.vcl/igif/decode.cxx218
-rw-r--r--svtools/source/filter.vcl/igif/decode.hxx69
-rw-r--r--svtools/source/filter.vcl/igif/gifread.cxx861
-rw-r--r--svtools/source/filter.vcl/igif/makefile.mk45
-rw-r--r--svtools/source/filter.vcl/ixbm/makefile.mk44
-rw-r--r--svtools/source/filter.vcl/ixbm/xbmread.cxx401
-rw-r--r--svtools/source/filter.vcl/ixpm/makefile.mk43
-rw-r--r--svtools/source/filter.vcl/ixpm/rgbtable.hxx698
-rw-r--r--svtools/source/filter.vcl/ixpm/xpmread.cxx701
-rw-r--r--svtools/source/filter.vcl/jpeg/jpeg.cxx782
-rw-r--r--svtools/source/filter.vcl/jpeg/jpeg.h78
-rw-r--r--svtools/source/filter.vcl/jpeg/jpegc.c287
-rw-r--r--svtools/source/filter.vcl/jpeg/makefile.mk48
-rw-r--r--svtools/source/filter.vcl/wmf/emfwr.cxx1418
-rw-r--r--svtools/source/filter.vcl/wmf/emfwr.hxx103
-rw-r--r--svtools/source/filter.vcl/wmf/enhwmf.cxx1533
-rw-r--r--svtools/source/filter.vcl/wmf/makefile.mk50
-rw-r--r--svtools/source/filter.vcl/wmf/winmtf.cxx2229
-rw-r--r--svtools/source/filter.vcl/wmf/winmtf.hxx792
-rw-r--r--svtools/source/filter.vcl/wmf/winwmf.cxx1433
-rw-r--r--svtools/source/filter.vcl/wmf/wmf.cxx117
-rw-r--r--svtools/source/filter.vcl/wmf/wmfwr.cxx2097
-rw-r--r--svtools/source/filter.vcl/wmf/wmfwr.hxx232
-rw-r--r--svtools/source/graphic/descriptor.cxx501
-rw-r--r--svtools/source/graphic/descriptor.hxx143
-rw-r--r--svtools/source/graphic/graphic.cxx303
-rw-r--r--svtools/source/graphic/graphic.hxx106
-rw-r--r--svtools/source/graphic/graphicunofactory.cxx106
-rw-r--r--svtools/source/graphic/grfattr.cxx121
-rw-r--r--svtools/source/graphic/grfcache.cxx1065
-rw-r--r--svtools/source/graphic/grfcache.hxx112
-rw-r--r--svtools/source/graphic/grfmgr.cxx1241
-rw-r--r--svtools/source/graphic/grfmgr2.cxx2383
-rw-r--r--svtools/source/graphic/makefile.mk69
-rw-r--r--svtools/source/graphic/provider.cxx864
-rw-r--r--svtools/source/graphic/renderer.cxx348
-rw-r--r--svtools/source/graphic/transformer.cxx159
-rw-r--r--svtools/source/graphic/transformer.hxx66
-rw-r--r--svtools/source/hatchwindow/documentcloser.cxx297
-rw-r--r--svtools/source/hatchwindow/documentcloser.hxx91
-rw-r--r--svtools/source/hatchwindow/hatchwindow.cxx238
-rw-r--r--svtools/source/hatchwindow/hatchwindow.hxx81
-rw-r--r--svtools/source/hatchwindow/hatchwindowfactory.cxx190
-rw-r--r--svtools/source/hatchwindow/hatchwindowfactory.hxx74
-rw-r--r--svtools/source/hatchwindow/ipwin.cxx646
-rw-r--r--svtools/source/hatchwindow/ipwin.hxx112
-rw-r--r--svtools/source/hatchwindow/makefile.mk65
-rw-r--r--svtools/source/inc/accessibletableimp.hxx65
-rw-r--r--svtools/source/inc/configitems/accessibilityoptions_const.hxx53
-rw-r--r--svtools/source/inc/filectrl.hrc34
-rw-r--r--svtools/source/inc/gifread.hxx143
-rw-r--r--svtools/source/inc/gradwrap.hxx78
-rw-r--r--svtools/source/inc/iodlg.hrc107
-rw-r--r--svtools/source/inc/jpeg.hxx132
-rw-r--r--svtools/source/inc/msgrd.hxx40
-rw-r--r--svtools/source/inc/msgwr.hxx40
-rw-r--r--svtools/source/inc/property.hxx573
-rw-r--r--svtools/source/inc/provider.hxx85
-rw-r--r--svtools/source/inc/renderer.hxx103
-rw-r--r--svtools/source/inc/sgfbram.hxx160
-rw-r--r--svtools/source/inc/sgffilt.hxx49
-rw-r--r--svtools/source/inc/sgvmain.hxx355
-rw-r--r--svtools/source/inc/sgvspln.hxx76
-rw-r--r--svtools/source/inc/svimpbox.hxx472
-rw-r--r--svtools/source/inc/svimpicn.hxx319
-rw-r--r--svtools/source/inc/svtaccessiblefactory.hxx75
-rw-r--r--svtools/source/inc/unoiface.hxx444
-rw-r--r--svtools/source/inc/xbmread.hxx96
-rw-r--r--svtools/source/inc/xpmread.hxx132
-rw-r--r--svtools/source/java/javacontext.cxx101
-rw-r--r--svtools/source/java/javaerror.src93
-rw-r--r--svtools/source/java/javainteractionhandler.cxx331
-rw-r--r--svtools/source/java/makefile.mk54
-rw-r--r--svtools/source/java/patchjavaerror.src93
-rw-r--r--svtools/source/misc/acceleratorexecute.cxx561
-rw-r--r--svtools/source/misc/bindablecontrolhelper.cxx164
-rw-r--r--svtools/source/misc/chartprettypainter.cxx142
-rw-r--r--svtools/source/misc/cliplistener.cxx100
-rw-r--r--svtools/source/misc/dialogclosedlistener.cxx77
-rw-r--r--svtools/source/misc/dialogcontrolling.cxx316
-rw-r--r--svtools/source/misc/ehdl.cxx489
-rw-r--r--svtools/source/misc/ehdl.src40
-rw-r--r--svtools/source/misc/embedhlp.cxx948
-rw-r--r--svtools/source/misc/embedtransfer.cxx258
-rw-r--r--svtools/source/misc/errtxt.src514
-rw-r--r--svtools/source/misc/filterutils.cxx58
-rw-r--r--svtools/source/misc/helpagent.src41
-rw-r--r--svtools/source/misc/helpagentwindow.cxx188
-rw-r--r--svtools/source/misc/imagemgr.cxx881
-rw-r--r--svtools/source/misc/imagemgr.src461
-rw-r--r--svtools/source/misc/imageresourceaccess.cxx211
-rw-r--r--svtools/source/misc/imap.cxx1234
-rw-r--r--svtools/source/misc/imap2.cxx757
-rw-r--r--svtools/source/misc/imap3.cxx99
-rw-r--r--svtools/source/misc/itemdel.cxx137
-rw-r--r--svtools/source/misc/langhelp.cxx47
-rw-r--r--svtools/source/misc/langtab.cxx207
-rw-r--r--svtools/source/misc/langtab.src330
-rwxr-xr-xsvtools/source/misc/makefile.mk87
-rw-r--r--svtools/source/misc/stringtransfer.cxx114
-rw-r--r--svtools/source/misc/svtaccessiblefactory.cxx358
-rw-r--r--svtools/source/misc/svtdata.cxx93
-rw-r--r--svtools/source/misc/templatefoldercache.cxx921
-rw-r--r--svtools/source/misc/transfer.cxx2417
-rw-r--r--svtools/source/misc/transfer2.cxx632
-rw-r--r--svtools/source/misc/unitconv.cxx768
-rw-r--r--svtools/source/misc/wallitem.cxx67
-rw-r--r--svtools/source/misc/xwindowitem.cxx99
-rw-r--r--svtools/source/plugapp/commtest.cxx262
-rw-r--r--svtools/source/plugapp/commtest.hrc34
-rw-r--r--svtools/source/plugapp/commtest.src60
-rw-r--r--svtools/source/plugapp/makefile.mk64
-rw-r--r--svtools/source/plugapp/testtool.hrc55
-rw-r--r--svtools/source/plugapp/testtool.src194
-rw-r--r--svtools/source/plugapp/ttprops.cxx81
-rw-r--r--svtools/source/productregistration/makefile.mk78
-rw-r--r--svtools/source/productregistration/productregistration.cxx508
-rw-r--r--svtools/source/productregistration/productregistration.hxx102
-rw-r--r--svtools/source/productregistration/registrationdlg.cxx164
-rw-r--r--svtools/source/productregistration/registrationdlg.hrc43
-rw-r--r--svtools/source/productregistration/registrationdlg.hxx88
-rw-r--r--svtools/source/productregistration/registrationdlg.src129
-rw-r--r--svtools/source/svhtml/htmlkywd.cxx1083
-rw-r--r--svtools/source/svhtml/htmlout.cxx982
-rw-r--r--svtools/source/svhtml/htmlsupp.cxx175
-rw-r--r--svtools/source/svhtml/makefile.mk51
-rw-r--r--svtools/source/svhtml/parhtml.cxx2371
-rw-r--r--svtools/source/svrtf/makefile.mk49
-rw-r--r--svtools/source/svrtf/parrtf.cxx702
-rw-r--r--svtools/source/svrtf/rtfkey2.cxx1159
-rw-r--r--svtools/source/svrtf/rtfkeywd.cxx1248
-rw-r--r--svtools/source/svrtf/rtfout.cxx211
-rw-r--r--svtools/source/svrtf/svparser.cxx726
-rw-r--r--svtools/source/table/defaultinputhandler.cxx238
-rw-r--r--svtools/source/table/gridtablerenderer.cxx384
-rw-r--r--svtools/source/table/makefile.mk55
-rw-r--r--svtools/source/table/tablecontrol.cxx631
-rw-r--r--svtools/source/table/tablecontrol_impl.cxx2366
-rw-r--r--svtools/source/table/tablecontrol_impl.hxx357
-rw-r--r--svtools/source/table/tabledatawindow.cxx176
-rw-r--r--svtools/source/table/tablegeometry.cxx134
-rw-r--r--svtools/source/table/tablegeometry.hxx161
-rw-r--r--svtools/source/toolpanel/drawerlayouter.cxx308
-rw-r--r--svtools/source/toolpanel/dummypanel.cxx110
-rw-r--r--svtools/source/toolpanel/dummypanel.hxx73
-rwxr-xr-xsvtools/source/toolpanel/makefile.mk68
-rw-r--r--svtools/source/toolpanel/paneldecklisteners.cxx140
-rw-r--r--svtools/source/toolpanel/paneldecklisteners.hxx75
-rw-r--r--svtools/source/toolpanel/paneltabbar.cxx1357
-rw-r--r--svtools/source/toolpanel/paneltabbarpeer.cxx104
-rw-r--r--svtools/source/toolpanel/paneltabbarpeer.hxx72
-rw-r--r--svtools/source/toolpanel/refbase.cxx59
-rw-r--r--svtools/source/toolpanel/tabbargeometry.cxx331
-rw-r--r--svtools/source/toolpanel/tabbargeometry.hxx140
-rw-r--r--svtools/source/toolpanel/tabitemdescriptor.hxx93
-rw-r--r--svtools/source/toolpanel/tablayouter.cxx265
-rw-r--r--svtools/source/toolpanel/toolpanel.cxx57
-rw-r--r--svtools/source/toolpanel/toolpanel.src57
-rw-r--r--svtools/source/toolpanel/toolpanelcollection.cxx196
-rw-r--r--svtools/source/toolpanel/toolpanelcollection.hxx72
-rw-r--r--svtools/source/toolpanel/toolpaneldeck.cxx563
-rw-r--r--svtools/source/toolpanel/toolpaneldeckpeer.cxx102
-rw-r--r--svtools/source/toolpanel/toolpaneldeckpeer.hxx72
-rw-r--r--svtools/source/toolpanel/toolpaneldrawer.cxx376
-rw-r--r--svtools/source/toolpanel/toolpaneldrawer.hxx116
-rw-r--r--svtools/source/toolpanel/toolpaneldrawerpeer.cxx145
-rw-r--r--svtools/source/toolpanel/toolpaneldrawerpeer.hxx59
-rw-r--r--svtools/source/uno/addrtempuno.cxx243
-rw-r--r--svtools/source/uno/contextmenuhelper.cxx690
-rw-r--r--svtools/source/uno/framestatuslistener.cxx447
-rw-r--r--svtools/source/uno/generictoolboxcontroller.cxx211
-rw-r--r--svtools/source/uno/genericunodialog.cxx375
-rw-r--r--svtools/source/uno/makefile.mk61
-rw-r--r--svtools/source/uno/miscservices.cxx221
-rw-r--r--svtools/source/uno/popupmenucontrollerbase.cxx421
-rw-r--r--svtools/source/uno/popupwindowcontroller.cxx260
-rw-r--r--svtools/source/uno/statusbarcontroller.cxx785
-rw-r--r--svtools/source/uno/svtxgridcontrol.cxx902
-rw-r--r--svtools/source/uno/svtxgridcontrol.hxx120
-rw-r--r--svtools/source/uno/toolboxcontroller.cxx887
-rw-r--r--svtools/source/uno/treecontrolpeer.cxx1768
-rw-r--r--svtools/source/uno/treecontrolpeer.hxx176
-rw-r--r--svtools/source/uno/unocontroltablemodel.cxx515
-rw-r--r--svtools/source/uno/unocontroltablemodel.hxx180
-rw-r--r--svtools/source/uno/unoevent.cxx610
-rw-r--r--svtools/source/uno/unoiface.cxx2370
-rw-r--r--svtools/source/uno/unoimap.cxx825
-rw-r--r--svtools/source/uno/unowizard.hxx120
-rw-r--r--svtools/source/uno/wizard/makefile.mk48
-rw-r--r--svtools/source/uno/wizard/unowizard.cxx455
-rw-r--r--svtools/source/uno/wizard/wizardpagecontroller.cxx193
-rw-r--r--svtools/source/uno/wizard/wizardpagecontroller.hxx78
-rw-r--r--svtools/source/uno/wizard/wizardshell.cxx282
-rw-r--r--svtools/source/uno/wizard/wizardshell.hxx150
-rw-r--r--svtools/source/urlobj/inetimg.cxx148
-rw-r--r--svtools/source/urlobj/makefile.mk46
-rw-r--r--svtools/util/hidother.src59
-rw-r--r--svtools/util/makefile.mk192
-rw-r--r--svtools/util/svt.pmk31
-rw-r--r--svtools/workben/browser.cxx810
-rw-r--r--svtools/workben/cui/loadlib.cxx91
-rw-r--r--svtools/workben/cui/makefile.mk59
-rw-r--r--svtools/workben/makefile.mk68
-rw-r--r--svtools/workben/stest.cxx187
-rw-r--r--svtools/workben/svdem.cxx1128
-rw-r--r--svtools/workben/toolpanel/makefile.mk110
-rw-r--r--svtools/workben/toolpanel/toolpaneltest.cxx884
-rw-r--r--svtools/workben/treecontrol/makefile.mk91
-rw-r--r--svtools/workben/treecontrol/treetest.cxx399
-rw-r--r--svtools/workben/unodialog/makefile.mk90
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.cxx116
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.hrc41
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.hxx68
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.src84
-rw-r--r--svtools/workben/unodialog/roadmapskeletonpages.cxx117
-rw-r--r--svtools/workben/unodialog/roadmapskeletonpages.hxx107
-rw-r--r--svtools/workben/unodialog/udlg_global.hrc54
-rw-r--r--svtools/workben/unodialog/udlg_module.cxx44
-rw-r--r--svtools/workben/unodialog/udlg_module.hxx47
-rw-r--r--svtools/workben/unodialog/udlg_services.cxx61
-rw-r--r--svtools/workben/unodialog/unodialogsample.cxx217
-rw-r--r--svtools/workben/urange.cxx220
-rw-r--r--sw/inc/AnnotationWin.hxx86
-rw-r--r--sw/inc/EnhancedPDFExportHelper.hxx259
-rw-r--r--sw/inc/HandleAnchorNodeChg.hxx84
-rw-r--r--sw/inc/IDocumentChartDataProviderAccess.hxx71
-rw-r--r--sw/inc/IDocumentContentOperations.hxx205
-rw-r--r--sw/inc/IDocumentDeviceAccess.hxx148
-rw-r--r--sw/inc/IDocumentDrawModelAccess.hxx114
-rw-r--r--sw/inc/IDocumentExternalData.hxx72
-rw-r--r--sw/inc/IDocumentFieldsAccess.hxx194
-rw-r--r--sw/inc/IDocumentLayoutAccess.hxx81
-rw-r--r--sw/inc/IDocumentLineNumberAccess.hxx53
-rw-r--r--sw/inc/IDocumentLinksAdministration.hxx94
-rw-r--r--sw/inc/IDocumentListItems.hxx64
-rw-r--r--sw/inc/IDocumentListsAccess.hxx60
-rw-r--r--sw/inc/IDocumentMarkAccess.hxx254
-rw-r--r--sw/inc/IDocumentOutlineNodes.hxx60
-rw-r--r--sw/inc/IDocumentRedlineAccess.hxx262
-rw-r--r--sw/inc/IDocumentSettingAccess.hxx215
-rw-r--r--sw/inc/IDocumentState.hxx90
-rw-r--r--sw/inc/IDocumentStatistics.hxx63
-rw-r--r--sw/inc/IDocumentStylePoolAccess.hxx89
-rw-r--r--sw/inc/IDocumentTimerAccess.hxx63
-rw-r--r--sw/inc/IDocumentUndoRedo.hxx195
-rw-r--r--sw/inc/IGrammarContact.hxx89
-rw-r--r--sw/inc/IInterface.hxx70
-rw-r--r--sw/inc/IMark.hxx123
-rw-r--r--sw/inc/PostItMgr.hxx300
-rw-r--r--sw/inc/RefreshListenerContainer.hxx41
-rw-r--r--sw/inc/SidebarWin.hxx274
-rw-r--r--sw/inc/SidebarWindowsTypes.hxx56
-rw-r--r--sw/inc/SwAppletImpl.hxx80
-rw-r--r--sw/inc/SwCapObjType.hxx38
-rw-r--r--sw/inc/SwGetPoolIdFromName.hxx47
-rw-r--r--sw/inc/SwNodeNum.hxx121
-rw-r--r--sw/inc/SwNumberTree.hxx770
-rw-r--r--sw/inc/SwNumberTreeTypes.hxx42
-rw-r--r--sw/inc/SwRewriter.hxx53
-rw-r--r--sw/inc/SwSmartTagMgr.hxx68
-rw-r--r--sw/inc/SwStyleNameMapper.hxx207
-rw-r--r--sw/inc/SwUndoField.hxx88
-rw-r--r--sw/inc/SwUndoFmt.hxx253
-rw-r--r--sw/inc/SwUndoPageDesc.hxx93
-rw-r--r--sw/inc/SwUndoTOXChange.hxx50
-rw-r--r--sw/inc/SwXMLSectionList.hxx92
-rw-r--r--sw/inc/TextCursorHelper.hxx56
-rw-r--r--sw/inc/access.hrc62
-rw-r--r--sw/inc/accessibilityoptions.hxx55
-rw-r--r--sw/inc/accmap.hxx332
-rw-r--r--sw/inc/acmplwrd.hxx76
-rw-r--r--sw/inc/anchoreddrawobject.hxx226
-rw-r--r--sw/inc/anchoredobject.hxx645
-rw-r--r--sw/inc/authfld.hxx205
-rw-r--r--sw/inc/authratr.hxx57
-rw-r--r--sw/inc/bparr.hxx129
-rw-r--r--sw/inc/breakit.hxx124
-rw-r--r--sw/inc/calbck.hxx253
-rw-r--r--sw/inc/calc.hxx246
-rw-r--r--sw/inc/ccoll.hxx96
-rw-r--r--sw/inc/cellatr.hxx132
-rw-r--r--sw/inc/cellfml.hxx167
-rw-r--r--sw/inc/charatr.hxx181
-rw-r--r--sw/inc/charfmt.hxx63
-rw-r--r--sw/inc/chcmprse.hxx42
-rw-r--r--sw/inc/checkit.hxx54
-rw-r--r--sw/inc/chpfld.hxx105
-rw-r--r--sw/inc/chrdlg.hrc60
-rw-r--r--sw/inc/cmdid.h1315
-rw-r--r--sw/inc/colwd.hxx63
-rw-r--r--sw/inc/comcore.hrc123
-rw-r--r--sw/inc/crsrsh.hxx955
-rw-r--r--sw/inc/crsskip.hxx45
-rw-r--r--sw/inc/crstate.hxx219
-rw-r--r--sw/inc/cshtyp.hxx122
-rw-r--r--sw/inc/dbfld.hxx341
-rw-r--r--sw/inc/dbgoutsw.hxx132
-rw-r--r--sw/inc/dbmgr.hxx401
-rw-r--r--sw/inc/dbui.hrc124
-rw-r--r--sw/inc/dcontact.hxx564
-rw-r--r--sw/inc/ddefld.hxx120
-rw-r--r--sw/inc/dialog.hrc87
-rw-r--r--sw/inc/dlelstnr.hxx97
-rw-r--r--sw/inc/dobjfac.hxx49
-rw-r--r--sw/inc/doc.hxx2227
-rw-r--r--sw/inc/docary.hxx132
-rw-r--r--sw/inc/docfac.hxx50
-rw-r--r--sw/inc/dochdl.hrc54
-rw-r--r--sw/inc/docsh.hxx328
-rw-r--r--sw/inc/docstat.hxx56
-rw-r--r--sw/inc/docstyle.hxx248
-rw-r--r--sw/inc/docufld.hxx839
-rw-r--r--sw/inc/dpage.hxx64
-rw-r--r--sw/inc/drawdoc.hxx66
-rw-r--r--sw/inc/edglbldc.hxx80
-rw-r--r--sw/inc/edimp.hxx86
-rw-r--r--sw/inc/editsh.hxx994
-rw-r--r--sw/inc/envelp.hrc95
-rw-r--r--sw/inc/errhdl.hxx70
-rw-r--r--sw/inc/error.h53
-rw-r--r--sw/inc/expfld.hxx439
-rw-r--r--sw/inc/extinput.hxx61
-rw-r--r--sw/inc/fchrfmt.hxx85
-rw-r--r--sw/inc/fesh.hxx789
-rw-r--r--sw/inc/fldbas.hxx468
-rw-r--r--sw/inc/flddat.hxx151
-rw-r--r--sw/inc/flddropdown.hxx280
-rw-r--r--sw/inc/fldinit.hxx41
-rw-r--r--sw/inc/fldui.hrc292
-rw-r--r--sw/inc/fldupde.hxx42
-rw-r--r--sw/inc/flyenum.hxx57
-rw-r--r--sw/inc/flypos.hxx63
-rw-r--r--sw/inc/fmtanchr.hxx94
-rw-r--r--sw/inc/fmtautofmt.hxx77
-rw-r--r--sw/inc/fmtclbl.hxx56
-rw-r--r--sw/inc/fmtclds.hxx181
-rw-r--r--sw/inc/fmtcnct.hxx89
-rw-r--r--sw/inc/fmtcntnt.hxx68
-rw-r--r--sw/inc/fmtcol.hxx306
-rw-r--r--sw/inc/fmtcolfunc.hxx92
-rw-r--r--sw/inc/fmteiro.hxx62
-rw-r--r--sw/inc/fmtflcnt.hxx66
-rw-r--r--sw/inc/fmtfld.hxx122
-rw-r--r--sw/inc/fmtfollowtextflow.hxx68
-rw-r--r--sw/inc/fmtfordr.hxx74
-rw-r--r--sw/inc/fmtfsize.hxx115
-rw-r--r--sw/inc/fmtftn.hxx83
-rw-r--r--sw/inc/fmtftntx.hxx139
-rw-r--r--sw/inc/fmthdft.hxx116
-rw-r--r--sw/inc/fmtinfmt.hxx112
-rw-r--r--sw/inc/fmtline.hxx73
-rw-r--r--sw/inc/fmtlsplt.hxx60
-rw-r--r--sw/inc/fmtmeta.hxx231
-rw-r--r--sw/inc/fmtornt.hxx145
-rw-r--r--sw/inc/fmtpdsc.hxx101
-rw-r--r--sw/inc/fmtrfmrk.hxx66
-rw-r--r--sw/inc/fmtrowsplt.hxx60
-rw-r--r--sw/inc/fmtruby.hxx93
-rw-r--r--sw/inc/fmtsrnd.hxx95
-rw-r--r--sw/inc/fmtsrndenum.hxx44
-rw-r--r--sw/inc/fmtui.hrc89
-rw-r--r--sw/inc/fmturl.hxx94
-rw-r--r--sw/inc/fmtwrapinfluenceonobjpos.hxx80
-rw-r--r--sw/inc/format.hxx361
-rw-r--r--sw/inc/frmatr.hxx102
-rw-r--r--sw/inc/frmfmt.hxx325
-rw-r--r--sw/inc/ftnidx.hxx81
-rw-r--r--sw/inc/ftninfo.hxx117
-rw-r--r--sw/inc/globals.hrc293
-rw-r--r--sw/inc/globdoc.hxx55
-rw-r--r--sw/inc/grfatr.hxx373
-rw-r--r--sw/inc/helpid.h987
-rw-r--r--sw/inc/hfspacingitem.hxx61
-rw-r--r--sw/inc/hhcwrp.hxx123
-rw-r--r--sw/inc/hintids.hxx489
-rw-r--r--sw/inc/hints.hxx253
-rw-r--r--sw/inc/htmltbl.hxx494
-rw-r--r--sw/inc/index.hrc66
-rw-r--r--sw/inc/index.hxx220
-rw-r--r--sw/inc/inetfld.hxx111
-rw-r--r--sw/inc/init.hxx51
-rw-r--r--sw/inc/io.hxx176
-rw-r--r--sw/inc/iodetect.hxx130
-rw-r--r--sw/inc/istyleaccess.hxx72
-rw-r--r--sw/inc/itabenum.hxx56
-rw-r--r--sw/inc/lineinfo.hxx108
-rw-r--r--sw/inc/linkenum.hxx41
-rw-r--r--sw/inc/list.hxx77
-rw-r--r--sw/inc/listfunc.hxx41
-rw-r--r--sw/inc/makefile.mk49
-rw-r--r--sw/inc/mdiexp.hxx81
-rw-r--r--sw/inc/modcfg.hxx345
-rw-r--r--sw/inc/modeltoviewhelper.hxx114
-rw-r--r--sw/inc/ndarr.hxx355
-rw-r--r--sw/inc/ndgrf.hxx260
-rw-r--r--sw/inc/ndhints.hxx224
-rw-r--r--sw/inc/ndindex.hxx255
-rw-r--r--sw/inc/ndnotxt.hxx124
-rw-r--r--sw/inc/ndole.hxx173
-rw-r--r--sw/inc/ndtxt.hxx924
-rw-r--r--sw/inc/ndtyp.hxx72
-rw-r--r--sw/inc/newhdl.hxx75
-rw-r--r--sw/inc/node.hxx764
-rw-r--r--sw/inc/numrule.hxx377
-rw-r--r--sw/inc/pagedesc.hxx347
-rw-r--r--sw/inc/pageiter.hxx55
-rw-r--r--sw/inc/pagepreviewlayout.hxx624
-rw-r--r--sw/inc/pam.hxx283
-rw-r--r--sw/inc/paratr.hxx281
-rw-r--r--sw/inc/pausethreadstarting.hxx51
-rw-r--r--sw/inc/pch/precompiled_sw.cxx31
-rw-r--r--sw/inc/pch/precompiled_sw.hxx1006
-rw-r--r--sw/inc/poolfmt.awk73
-rw-r--r--sw/inc/poolfmt.hrc281
-rw-r--r--sw/inc/poolfmt.hxx446
-rw-r--r--sw/inc/postithelper.hxx162
-rw-r--r--sw/inc/printdata.hxx326
-rw-r--r--sw/inc/pvprtdat.hxx81
-rw-r--r--sw/inc/rcid.hrc271
-rw-r--r--sw/inc/redline.hxx317
-rw-r--r--sw/inc/redlnaut.hxx57
-rw-r--r--sw/inc/reffld.hxx164
-rw-r--r--sw/inc/ring.hxx56
-rw-r--r--sw/inc/rolbck.hxx454
-rw-r--r--sw/inc/rubylist.hxx57
-rw-r--r--sw/inc/section.hxx392
-rw-r--r--sw/inc/shellid.hxx76
-rw-r--r--sw/inc/shellio.hxx681
-rw-r--r--sw/inc/shellres.hxx121
-rw-r--r--sw/inc/sortopt.hxx72
-rw-r--r--sw/inc/splargs.hxx183
-rw-r--r--sw/inc/statstr.hrc54
-rw-r--r--sw/inc/stringhash.hxx107
-rw-r--r--sw/inc/sw.mk40
-rw-r--r--sw/inc/sw_primitivetypes2d.hxx47
-rw-r--r--sw/inc/swabstdlg.hxx499
-rw-r--r--sw/inc/swacorr.hxx61
-rw-r--r--sw/inc/swatrset.hxx356
-rw-r--r--sw/inc/swbaslnk.hxx97
-rw-r--r--sw/inc/swcalwrp.hxx57
-rw-r--r--sw/inc/swcli.hxx59
-rw-r--r--sw/inc/swcrsr.hxx314
-rw-r--r--sw/inc/swdbdata.hxx51
-rw-r--r--sw/inc/swdbtoolsclient.hxx78
-rw-r--r--sw/inc/swddetbl.hxx64
-rw-r--r--sw/inc/swdll.hxx71
-rw-r--r--sw/inc/swdllapi.h16
-rw-r--r--sw/inc/swerror.h114
-rw-r--r--sw/inc/swevent.hxx129
-rw-r--r--sw/inc/swfltopt.hxx47
-rw-r--r--sw/inc/swgstr.hxx151
-rw-r--r--sw/inc/swhints.hxx39
-rw-r--r--sw/inc/swmodule.hxx283
-rw-r--r--sw/inc/swpre.mk46
-rw-r--r--sw/inc/swprtopt.hxx104
-rw-r--r--sw/inc/swrect.hxx368
-rw-r--r--sw/inc/swregion.hxx60
-rw-r--r--sw/inc/swserv.hxx95
-rw-r--r--sw/inc/swstyle.h43
-rw-r--r--sw/inc/swtable.hxx492
-rw-r--r--sw/inc/swtblfmt.hxx102
-rw-r--r--sw/inc/swtypes.hxx341
-rw-r--r--sw/inc/swundo.hxx203
-rw-r--r--sw/inc/swunodef.hxx39
-rw-r--r--sw/inc/swunohelper.hxx84
-rw-r--r--sw/inc/swurl.hxx49
-rw-r--r--sw/inc/swwait.hxx47
-rw-r--r--sw/inc/tabcol.hxx110
-rw-r--r--sw/inc/tblafmt.hxx272
-rw-r--r--sw/inc/tblenum.hxx82
-rw-r--r--sw/inc/tblsel.hxx233
-rw-r--r--sw/inc/tgrditem.hxx122
-rw-r--r--sw/inc/tox.hxx797
-rw-r--r--sw/inc/toxe.hxx128
-rw-r--r--sw/inc/toxinit.hxx40
-rw-r--r--sw/inc/toxwrap.hxx80
-rw-r--r--sw/inc/txatbase.hxx247
-rw-r--r--sw/inc/txatritr.hxx102
-rw-r--r--sw/inc/txtatr.hxx121
-rw-r--r--sw/inc/txtflcnt.hxx70
-rw-r--r--sw/inc/txtfld.hxx83
-rw-r--r--sw/inc/txtftn.hxx83
-rw-r--r--sw/inc/txtinet.hxx83
-rw-r--r--sw/inc/txtrfmrk.hxx63
-rw-r--r--sw/inc/txttxmrk.hxx67
-rw-r--r--sw/inc/undobj.hxx1922
-rw-r--r--sw/inc/unoatxt.hxx309
-rw-r--r--sw/inc/unobaseclass.hxx176
-rw-r--r--sw/inc/unobookmark.hxx268
-rw-r--r--sw/inc/unochart.hxx435
-rw-r--r--sw/inc/unocoll.hxx587
-rw-r--r--sw/inc/unocore.hrc48
-rw-r--r--sw/inc/unocrsr.hxx125
-rw-r--r--sw/inc/unocrsrhelper.hxx221
-rw-r--r--sw/inc/unodraw.hxx355
-rw-r--r--sw/inc/unoevent.hxx121
-rw-r--r--sw/inc/unoevtlstnr.hxx61
-rw-r--r--sw/inc/unofield.hxx332
-rw-r--r--sw/inc/unoflatpara.hxx148
-rw-r--r--sw/inc/unofootnote.hxx231
-rw-r--r--sw/inc/unoframe.hxx381
-rw-r--r--sw/inc/unoidx.hxx377
-rw-r--r--sw/inc/unomailmerge.hxx208
-rw-r--r--sw/inc/unomap.hxx352
-rw-r--r--sw/inc/unomid.h160
-rw-r--r--sw/inc/unomod.hxx213
-rw-r--r--sw/inc/unoparaframeenum.hxx129
-rw-r--r--sw/inc/unoparagraph.hxx367
-rw-r--r--sw/inc/unoport.hxx328
-rw-r--r--sw/inc/unoprnms.hxx846
-rw-r--r--sw/inc/unoredline.hxx159
-rw-r--r--sw/inc/unoredlines.hxx107
-rw-r--r--sw/inc/unorefmark.hxx176
-rw-r--r--sw/inc/unosection.hxx257
-rw-r--r--sw/inc/unosett.hxx328
-rw-r--r--sw/inc/unosrch.hxx138
-rw-r--r--sw/inc/unostyle.hxx469
-rw-r--r--sw/inc/unotbl.hxx625
-rw-r--r--sw/inc/unotext.hxx348
-rw-r--r--sw/inc/unotextbodyhf.hxx212
-rw-r--r--sw/inc/unotextcursor.hxx349
-rw-r--r--sw/inc/unotextmarkup.hxx112
-rw-r--r--sw/inc/unotextrange.hxx340
-rw-r--r--sw/inc/unotxdoc.hxx617
-rw-r--r--sw/inc/usrfld.hxx135
-rw-r--r--sw/inc/viewopt.hxx618
-rw-r--r--sw/inc/viewsh.hxx639
-rw-r--r--sw/inc/viscrs.hxx226
-rw-r--r--sw/inc/wdocsh.hxx65
-rwxr-xr-xsw/prj/build.lst77
-rw-r--r--sw/prj/d.lst59
-rw-r--r--sw/qa/complex/accessibility/AccessibleRelationSet.java252
-rw-r--r--sw/qa/complex/accessibility/makefile.mk57
-rw-r--r--sw/qa/complex/checkColor/CheckChangeColor.java90
-rw-r--r--sw/qa/complex/checkColor/makefile.mk75
-rw-r--r--sw/qa/complex/indeterminateState/CheckIndeterminateState.java136
-rw-r--r--sw/qa/complex/indeterminateState/makefile.mk82
-rw-r--r--sw/qa/complex/writer/CheckBookmarks.java277
-rw-r--r--sw/qa/complex/writer/CheckCrossReferences.java369
-rw-r--r--sw/qa/complex/writer/CheckFlies.java233
-rw-r--r--sw/qa/complex/writer/CheckIndexedPropertyValues.java182
-rw-r--r--sw/qa/complex/writer/CheckNamedPropertyValues.java196
-rw-r--r--sw/qa/complex/writer/TextPortionEnumerationTest.java4251
-rw-r--r--sw/qa/complex/writer/makefile.mk108
-rw-r--r--sw/qa/complex/writer/testdocuments/CheckCrossReferences.odtbin0 -> 11628 bytes
-rw-r--r--sw/qa/complex/writer/testdocuments/CheckFlies.odtbin0 -> 65022 bytes
-rwxr-xr-xsw/qa/complex/writer/testdocuments/TESTMETA.odtbin0 -> 8678 bytes
-rw-r--r--sw/qa/complex/writer/testdocuments/TESTXMLID.odtbin0 -> 10879 bytes
-rw-r--r--sw/qa/core/Test-BigPtrArray.cxx879
-rw-r--r--sw/qa/core/bigpointerarray-new.cxx113
-rw-r--r--sw/qa/core/bigpointerarray-new.hxx162
-rw-r--r--sw/qa/core/export.exp1
-rw-r--r--sw/qa/core/export.map34
-rw-r--r--sw/qa/core/makefile.mk69
-rw-r--r--sw/qa/core/performance-jobfile9
-rw-r--r--sw/qa/unoapi/Test.java51
-rw-r--r--sw/qa/unoapi/knownissues.xcl172
-rw-r--r--sw/qa/unoapi/lastCheck.txt1
-rw-r--r--sw/qa/unoapi/makefile.mk48
-rw-r--r--sw/qa/unoapi/sw.sce94
-rw-r--r--sw/qa/unoapi/testdocuments/MailMerge.sxwbin0 -> 5391 bytes
-rw-r--r--sw/qa/unoapi/testdocuments/SwXTextEmbeddedObject.sdwbin0 -> 180736 bytes
-rw-r--r--sw/qa/unoapi/testdocuments/SwXTextEmbeddedObject.sxwbin0 -> 24763 bytes
-rw-r--r--sw/qa/unoapi/testdocuments/XDocumentInsertable.sxwbin0 -> 4914 bytes
-rw-r--r--sw/qa/unoapi/testdocuments/sForm.sxwbin0 -> 5568 bytes
-rw-r--r--sw/sdi/_annotsh.sdi391
-rw-r--r--sw/sdi/_basesh.sdi531
-rw-r--r--sw/sdi/_beziers.sdi128
-rw-r--r--sw/sdi/_docsh.sdi137
-rw-r--r--sw/sdi/_drwbase.sdi139
-rw-r--r--sw/sdi/_formsh.sdi44
-rw-r--r--sw/sdi/_frmsh.sdi305
-rw-r--r--sw/sdi/_grfsh.sdi216
-rw-r--r--sw/sdi/_listsh.sdi111
-rw-r--r--sw/sdi/_mediash.sdi51
-rw-r--r--sw/sdi/_olesh.sdi35
-rw-r--r--sw/sdi/_tabsh.sdi409
-rw-r--r--sw/sdi/_textsh.sdi1616
-rw-r--r--sw/sdi/_viewsh.sdi774
-rw-r--r--sw/sdi/annotsh.sdi380
-rw-r--r--sw/sdi/basesh.sdi64
-rw-r--r--sw/sdi/beziersh.sdi135
-rw-r--r--sw/sdi/docsh.sdi83
-rw-r--r--sw/sdi/drawsh.sdi477
-rw-r--r--sw/sdi/drwbassh.sdi47
-rw-r--r--sw/sdi/drwtxtsh.sdi659
-rw-r--r--sw/sdi/formsh.sdi40
-rw-r--r--sw/sdi/frmsh.sdi56
-rw-r--r--sw/sdi/grfsh.sdi44
-rw-r--r--sw/sdi/listsh.sdi43
-rw-r--r--sw/sdi/makefile.mk106
-rw-r--r--sw/sdi/mediash.sdi42
-rw-r--r--sw/sdi/olesh.sdi41
-rw-r--r--sw/sdi/swinterf.c251
-rw-r--r--sw/sdi/switems.sdi82
-rw-r--r--sw/sdi/swpatch.txt21
-rw-r--r--sw/sdi/swriter.sdi10318
-rw-r--r--sw/sdi/swslots.hrc33
-rw-r--r--sw/sdi/swslots.sdi125
-rw-r--r--sw/sdi/tabsh.sdi67
-rw-r--r--sw/sdi/textsh.sdi124
-rw-r--r--sw/sdi/viewsh.sdi326
-rw-r--r--sw/sdi/wbasesh.sdi44
-rw-r--r--sw/sdi/wbeziers.sdi38
-rw-r--r--sw/sdi/wdocsh.sdi60
-rw-r--r--sw/sdi/wdrwbase.sdi49
-rw-r--r--sw/sdi/wformsh.sdi40
-rw-r--r--sw/sdi/wfrmsh.sdi44
-rw-r--r--sw/sdi/wgrfsh.sdi43
-rw-r--r--sw/sdi/wlistsh.sdi41
-rw-r--r--sw/sdi/wolesh.sdi43
-rw-r--r--sw/sdi/wrtapp.sdi90
-rw-r--r--sw/sdi/wtabsh.sdi40
-rw-r--r--sw/sdi/wtextsh.sdi49
-rw-r--r--sw/sdi/wviewsh.sdi203
-rw-r--r--sw/source/core/SwNumberTree/SwNodeNum.cxx536
-rw-r--r--sw/source/core/SwNumberTree/SwNumberTree.cxx1412
-rw-r--r--sw/source/core/SwNumberTree/makefile.mk50
-rw-r--r--sw/source/core/access/acccell.cxx378
-rw-r--r--sw/source/core/access/acccell.hxx139
-rw-r--r--sw/source/core/access/acccontext.cxx1607
-rw-r--r--sw/source/core/access/acccontext.hxx461
-rw-r--r--sw/source/core/access/accdoc.cxx516
-rw-r--r--sw/source/core/access/accdoc.hxx213
-rw-r--r--sw/source/core/access/accembedded.cxx100
-rw-r--r--sw/source/core/access/accembedded.hxx72
-rw-r--r--sw/source/core/access/accfootnote.cxx158
-rw-r--r--sw/source/core/access/accfootnote.hxx90
-rw-r--r--sw/source/core/access/accframe.cxx499
-rw-r--r--sw/source/core/access/accframe.hxx177
-rw-r--r--sw/source/core/access/accframebase.cxx280
-rw-r--r--sw/source/core/access/accframebase.hxx75
-rw-r--r--sw/source/core/access/accfrmobj.cxx430
-rw-r--r--sw/source/core/access/accfrmobj.hxx98
-rw-r--r--sw/source/core/access/accfrmobjmap.cxx171
-rw-r--r--sw/source/core/access/accfrmobjmap.hxx98
-rw-r--r--sw/source/core/access/accfrmobjslist.cxx175
-rw-r--r--sw/source/core/access/accfrmobjslist.hxx148
-rw-r--r--sw/source/core/access/accgraphic.cxx100
-rw-r--r--sw/source/core/access/accgraphic.hxx72
-rw-r--r--sw/source/core/access/accheaderfooter.cxx146
-rw-r--r--sw/source/core/access/accheaderfooter.hxx85
-rw-r--r--sw/source/core/access/acchyperlink.cxx192
-rw-r--r--sw/source/core/access/acchyperlink.hxx93
-rw-r--r--sw/source/core/access/acchypertextdata.cxx58
-rw-r--r--sw/source/core/access/acchypertextdata.hxx53
-rw-r--r--sw/source/core/access/accmap.cxx2789
-rw-r--r--sw/source/core/access/accnotextframe.cxx278
-rw-r--r--sw/source/core/access/accnotextframe.hxx113
-rw-r--r--sw/source/core/access/accpage.cxx201
-rw-r--r--sw/source/core/access/accpage.hxx99
-rw-r--r--sw/source/core/access/accpara.cxx2680
-rw-r--r--sw/source/core/access/accpara.hxx451
-rw-r--r--sw/source/core/access/accportions.cxx754
-rw-r--r--sw/source/core/access/accportions.hxx177
-rw-r--r--sw/source/core/access/accpreview.cxx105
-rw-r--r--sw/source/core/access/accpreview.hxx78
-rw-r--r--sw/source/core/access/accselectionhelper.cxx337
-rw-r--r--sw/source/core/access/accselectionhelper.hxx83
-rw-r--r--sw/source/core/access/acctable.cxx1806
-rw-r--r--sw/source/core/access/acctable.hxx335
-rw-r--r--sw/source/core/access/acctextframe.cxx281
-rw-r--r--sw/source/core/access/acctextframe.hxx118
-rw-r--r--sw/source/core/access/makefile.mk100
-rw-r--r--sw/source/core/access/parachangetrackinginfo.cxx234
-rw-r--r--sw/source/core/access/parachangetrackinginfo.hxx61
-rw-r--r--sw/source/core/access/textmarkuphelper.cxx234
-rw-r--r--sw/source/core/access/textmarkuphelper.hxx89
-rw-r--r--sw/source/core/attr/calbck.cxx638
-rw-r--r--sw/source/core/attr/cellatr.cxx271
-rw-r--r--sw/source/core/attr/fmtfollowtextflow.cxx40
-rw-r--r--sw/source/core/attr/fmtwrapinfluenceonobjpos.cxx167
-rw-r--r--sw/source/core/attr/format.cxx696
-rw-r--r--sw/source/core/attr/hints.cxx309
-rw-r--r--sw/source/core/attr/makefile.mk55
-rw-r--r--sw/source/core/attr/swatrset.cxx404
-rw-r--r--sw/source/core/bastyp/SwSmartTagMgr.cxx95
-rw-r--r--sw/source/core/bastyp/bparr.cxx582
-rw-r--r--sw/source/core/bastyp/breakit.cxx184
-rw-r--r--sw/source/core/bastyp/calc.cxx1824
-rw-r--r--sw/source/core/bastyp/checkit.cxx53
-rw-r--r--sw/source/core/bastyp/index.cxx596
-rw-r--r--sw/source/core/bastyp/init.cxx919
-rw-r--r--sw/source/core/bastyp/makefile.mk79
-rw-r--r--sw/source/core/bastyp/ring.cxx127
-rw-r--r--sw/source/core/bastyp/swcache.cxx658
-rw-r--r--sw/source/core/bastyp/swrect.cxx336
-rw-r--r--sw/source/core/bastyp/swregion.cxx256
-rw-r--r--sw/source/core/bastyp/swtypes.cxx135
-rw-r--r--sw/source/core/bastyp/tabcol.cxx144
-rw-r--r--sw/source/core/crsr/BlockCursor.cxx108
-rw-r--r--sw/source/core/crsr/BlockCursor.hxx39
-rw-r--r--sw/source/core/crsr/IBlockCursor.hxx97
-rw-r--r--sw/source/core/crsr/bookmrk.cxx372
-rw-r--r--sw/source/core/crsr/callnk.cxx275
-rw-r--r--sw/source/core/crsr/callnk.hxx59
-rw-r--r--sw/source/core/crsr/crbm.cxx263
-rw-r--r--sw/source/core/crsr/crossrefbookmark.cxx105
-rw-r--r--sw/source/core/crsr/crsrsh.cxx3488
-rw-r--r--sw/source/core/crsr/crstrvl.cxx2218
-rw-r--r--sw/source/core/crsr/crstrvl1.cxx107
-rw-r--r--sw/source/core/crsr/findattr.cxx1311
-rw-r--r--sw/source/core/crsr/findcoll.cxx119
-rw-r--r--sw/source/core/crsr/findfmt.cxx86
-rw-r--r--sw/source/core/crsr/findtxt.cxx709
-rw-r--r--sw/source/core/crsr/makefile.mk83
-rw-r--r--sw/source/core/crsr/pam.cxx1258
-rw-r--r--sw/source/core/crsr/paminit.cxx134
-rw-r--r--sw/source/core/crsr/swcrsr.cxx2384
-rw-r--r--sw/source/core/crsr/trvlcol.cxx135
-rw-r--r--sw/source/core/crsr/trvlfnfl.cxx361
-rw-r--r--sw/source/core/crsr/trvlreg.cxx293
-rw-r--r--sw/source/core/crsr/trvltbl.cxx933
-rw-r--r--sw/source/core/crsr/unocrsr.cxx282
-rw-r--r--sw/source/core/crsr/viscrs.cxx914
-rw-r--r--sw/source/core/doc/SwStyleNameMapper.cxx1142
-rw-r--r--sw/source/core/doc/acmplwrd.cxx442
-rw-r--r--sw/source/core/doc/dbgoutsw.cxx1107
-rw-r--r--sw/source/core/doc/doc.cxx2744
-rw-r--r--sw/source/core/doc/docbasic.cxx274
-rw-r--r--sw/source/core/doc/docbm.cxx1752
-rw-r--r--sw/source/core/doc/docchart.cxx279
-rw-r--r--sw/source/core/doc/doccomp.cxx1849
-rw-r--r--sw/source/core/doc/doccorr.cxx463
-rw-r--r--sw/source/core/doc/docdde.cxx418
-rw-r--r--sw/source/core/doc/docdesc.cxx1017
-rw-r--r--sw/source/core/doc/docdraw.cxx1070
-rw-r--r--sw/source/core/doc/docedt.cxx2803
-rw-r--r--sw/source/core/doc/docfld.cxx2755
-rw-r--r--sw/source/core/doc/docfly.cxx1048
-rw-r--r--sw/source/core/doc/docfmt.cxx2688
-rw-r--r--sw/source/core/doc/docftn.cxx507
-rw-r--r--sw/source/core/doc/docglbl.cxx857
-rw-r--r--sw/source/core/doc/docglos.cxx205
-rw-r--r--sw/source/core/doc/doclay.cxx2284
-rw-r--r--sw/source/core/doc/docnew.cxx1215
-rw-r--r--sw/source/core/doc/docnum.cxx2860
-rw-r--r--sw/source/core/doc/docredln.cxx3883
-rw-r--r--sw/source/core/doc/docruby.cxx363
-rw-r--r--sw/source/core/doc/docsort.cxx985
-rw-r--r--sw/source/core/doc/docstat.cxx71
-rw-r--r--sw/source/core/doc/doctxm.cxx2408
-rw-r--r--sw/source/core/doc/docxforms.cxx126
-rw-r--r--sw/source/core/doc/extinput.cxx296
-rw-r--r--sw/source/core/doc/fmtcol.cxx720
-rw-r--r--sw/source/core/doc/ftnidx.cxx400
-rw-r--r--sw/source/core/doc/gctable.cxx453
-rw-r--r--sw/source/core/doc/htmltbl.cxx1901
-rw-r--r--sw/source/core/doc/lineinfo.cxx154
-rw-r--r--sw/source/core/doc/list.cxx306
-rw-r--r--sw/source/core/doc/makefile.mk92
-rw-r--r--sw/source/core/doc/notxtfrm.cxx1100
-rw-r--r--sw/source/core/doc/number.cxx1598
-rw-r--r--sw/source/core/doc/poolfmt.cxx2595
-rw-r--r--sw/source/core/doc/sortopt.cxx96
-rw-r--r--sw/source/core/doc/swserv.cxx372
-rw-r--r--sw/source/core/doc/swstylemanager.cxx176
-rw-r--r--sw/source/core/doc/swstylemanager.hxx41
-rw-r--r--sw/source/core/doc/tblafmt.cxx1106
-rw-r--r--sw/source/core/doc/tblcpy.cxx1092
-rw-r--r--sw/source/core/doc/tblrwcl.cxx4729
-rw-r--r--sw/source/core/doc/visiturl.cxx141
-rw-r--r--sw/source/core/docnode/cancellablejob.cxx43
-rw-r--r--sw/source/core/docnode/cancellablejob.hxx56
-rw-r--r--sw/source/core/docnode/finalthreadmanager.cxx550
-rw-r--r--sw/source/core/docnode/makefile.mk82
-rw-r--r--sw/source/core/docnode/ndcopy.cxx1623
-rw-r--r--sw/source/core/docnode/ndindex.cxx170
-rw-r--r--sw/source/core/docnode/ndnotxt.cxx310
-rw-r--r--sw/source/core/docnode/ndnum.cxx228
-rw-r--r--sw/source/core/docnode/ndsect.cxx1522
-rw-r--r--sw/source/core/docnode/ndtbl.cxx4733
-rw-r--r--sw/source/core/docnode/ndtbl1.cxx1607
-rw-r--r--sw/source/core/docnode/node.cxx2129
-rw-r--r--sw/source/core/docnode/node2lay.cxx407
-rw-r--r--sw/source/core/docnode/nodes.cxx2702
-rw-r--r--sw/source/core/docnode/observablethread.cxx100
-rw-r--r--sw/source/core/docnode/pausethreadstarting.cxx58
-rw-r--r--sw/source/core/docnode/retrievedinputstreamdata.cxx169
-rw-r--r--sw/source/core/docnode/retrieveinputstream.cxx87
-rw-r--r--sw/source/core/docnode/retrieveinputstreamconsumer.cxx74
-rw-r--r--sw/source/core/docnode/section.cxx1864
-rw-r--r--sw/source/core/docnode/swbaslnk.cxx537
-rw-r--r--sw/source/core/docnode/swthreadjoiner.cxx64
-rw-r--r--sw/source/core/docnode/swthreadmanager.cxx90
-rw-r--r--sw/source/core/docnode/threadlistener.cxx59
-rw-r--r--sw/source/core/docnode/threadmanager.cxx261
-rw-r--r--sw/source/core/draw/dcontact.cxx2846
-rw-r--r--sw/source/core/draw/dflyobj.cxx965
-rw-r--r--sw/source/core/draw/dobjfac.cxx59
-rw-r--r--sw/source/core/draw/dpage.cxx263
-rw-r--r--sw/source/core/draw/drawdoc.cxx239
-rw-r--r--sw/source/core/draw/dview.cxx1113
-rw-r--r--sw/source/core/draw/makefile.mk60
-rw-r--r--sw/source/core/edit/acorrect.cxx526
-rw-r--r--sw/source/core/edit/autofmt.cxx2838
-rw-r--r--sw/source/core/edit/edatmisc.cxx191
-rw-r--r--sw/source/core/edit/edattr.cxx649
-rw-r--r--sw/source/core/edit/eddel.cxx356
-rw-r--r--sw/source/core/edit/edfcol.cxx163
-rw-r--r--sw/source/core/edit/edfld.cxx599
-rw-r--r--sw/source/core/edit/edfldexp.cxx101
-rw-r--r--sw/source/core/edit/edfmt.cxx200
-rw-r--r--sw/source/core/edit/edglbldc.cxx406
-rw-r--r--sw/source/core/edit/edglss.cxx375
-rw-r--r--sw/source/core/edit/editsh.cxx1198
-rw-r--r--sw/source/core/edit/edlingu.cxx1977
-rw-r--r--sw/source/core/edit/ednumber.cxx838
-rw-r--r--sw/source/core/edit/edredln.cxx152
-rw-r--r--sw/source/core/edit/edsect.cxx458
-rw-r--r--sw/source/core/edit/edtab.cxx492
-rw-r--r--sw/source/core/edit/edtox.cxx481
-rw-r--r--sw/source/core/edit/edundo.cxx282
-rw-r--r--sw/source/core/edit/edws.cxx387
-rw-r--r--sw/source/core/edit/makefile.mk71
-rw-r--r--sw/source/core/except/dbgloop.cxx170
-rw-r--r--sw/source/core/except/errhdl.cxx92
-rw-r--r--sw/source/core/except/makefile.mk60
-rw-r--r--sw/source/core/fields/authfld.cxx833
-rw-r--r--sw/source/core/fields/cellfml.cxx1234
-rw-r--r--sw/source/core/fields/chpfld.cxx310
-rw-r--r--sw/source/core/fields/dbfld.cxx1074
-rw-r--r--sw/source/core/fields/ddefld.cxx450
-rw-r--r--sw/source/core/fields/ddetbl.cxx189
-rw-r--r--sw/source/core/fields/docufld.cxx2795
-rw-r--r--sw/source/core/fields/expfld.cxx1332
-rw-r--r--sw/source/core/fields/fldbas.cxx814
-rw-r--r--sw/source/core/fields/flddat.cxx322
-rw-r--r--sw/source/core/fields/flddropdown.cxx285
-rw-r--r--sw/source/core/fields/fldlst.cxx235
-rw-r--r--sw/source/core/fields/macrofld.cxx267
-rw-r--r--sw/source/core/fields/makefile.mk94
-rw-r--r--sw/source/core/fields/postithelper.cxx226
-rw-r--r--sw/source/core/fields/reffld.cxx1095
-rw-r--r--sw/source/core/fields/scrptfld.cxx151
-rw-r--r--sw/source/core/fields/tblcalc.cxx261
-rw-r--r--sw/source/core/fields/textapi.cxx194
-rw-r--r--sw/source/core/fields/usrfld.cxx378
-rw-r--r--sw/source/core/frmedt/fecopy.cxx1554
-rw-r--r--sw/source/core/frmedt/fedesc.cxx293
-rw-r--r--sw/source/core/frmedt/fefly1.cxx2159
-rw-r--r--sw/source/core/frmedt/feflyole.cxx150
-rw-r--r--sw/source/core/frmedt/feshview.cxx3241
-rw-r--r--sw/source/core/frmedt/fetab.cxx2593
-rw-r--r--sw/source/core/frmedt/fews.cxx1298
-rw-r--r--sw/source/core/frmedt/makefile.mk76
-rw-r--r--sw/source/core/frmedt/tblsel.cxx2730
-rw-r--r--sw/source/core/graphic/grfatr.cxx364
-rw-r--r--sw/source/core/graphic/makefile.mk53
-rw-r--r--sw/source/core/graphic/ndgrf.cxx1226
-rw-r--r--sw/source/core/inc/GetMetricVal.hxx57
-rw-r--r--sw/source/core/inc/MarkManager.hxx100
-rw-r--r--sw/source/core/inc/SwGrammarMarkUp.hxx77
-rw-r--r--sw/source/core/inc/SwPortionHandler.hxx104
-rw-r--r--sw/source/core/inc/SwXMLBlockExport.hxx76
-rw-r--r--sw/source/core/inc/SwXMLBlockImport.hxx92
-rw-r--r--sw/source/core/inc/SwXMLBlockListContext.hxx129
-rw-r--r--sw/source/core/inc/SwXMLTextBlocks.hxx114
-rw-r--r--sw/source/core/inc/SwXTextDefaults.hxx85
-rw-r--r--sw/source/core/inc/acorrect.hxx125
-rw-r--r--sw/source/core/inc/anchoredobjectposition.hxx491
-rw-r--r--sw/source/core/inc/ascharanchoredobjectposition.hxx174
-rw-r--r--sw/source/core/inc/blink.hxx91
-rw-r--r--sw/source/core/inc/bodyfrm.hxx54
-rw-r--r--sw/source/core/inc/bookmrk.hxx267
-rw-r--r--sw/source/core/inc/cellfrm.hxx74
-rw-r--r--sw/source/core/inc/cntfrm.hxx150
-rw-r--r--sw/source/core/inc/colfrm.hxx45
-rw-r--r--sw/source/core/inc/crossrefbookmark.hxx102
-rw-r--r--sw/source/core/inc/dbg_lay.hxx123
-rw-r--r--sw/source/core/inc/dbgloop.hxx80
-rw-r--r--sw/source/core/inc/dflyobj.hxx143
-rw-r--r--sw/source/core/inc/docfld.hxx195
-rw-r--r--sw/source/core/inc/docsort.hxx180
-rw-r--r--sw/source/core/inc/doctxm.hxx150
-rw-r--r--sw/source/core/inc/drawdev.hxx141
-rw-r--r--sw/source/core/inc/drawfont.hxx629
-rw-r--r--sw/source/core/inc/dview.hxx136
-rw-r--r--sw/source/core/inc/environmentofanchoredobject.hxx120
-rw-r--r--sw/source/core/inc/finalthreadmanager.hxx108
-rw-r--r--sw/source/core/inc/flowfrm.hxx274
-rw-r--r--sw/source/core/inc/flyfrm.hxx290
-rw-r--r--sw/source/core/inc/flyfrms.hxx262
-rw-r--r--sw/source/core/inc/fntcache.hxx163
-rw-r--r--sw/source/core/inc/frame.hxx1275
-rw-r--r--sw/source/core/inc/frminf.hxx87
-rw-r--r--sw/source/core/inc/frmtool.hxx585
-rw-r--r--sw/source/core/inc/ftnboss.hxx140
-rw-r--r--sw/source/core/inc/ftnfrm.hxx153
-rw-r--r--sw/source/core/inc/hffrm.hxx69
-rw-r--r--sw/source/core/inc/ifinishedthreadlistener.hxx58
-rw-r--r--sw/source/core/inc/ithreadlistenerowner.hxx61
-rw-r--r--sw/source/core/inc/layact.hxx242
-rw-r--r--sw/source/core/inc/laycache.hxx80
-rw-r--r--sw/source/core/inc/layfrm.hxx212
-rw-r--r--sw/source/core/inc/layouter.hxx185
-rw-r--r--sw/source/core/inc/makefile.mk26
-rw-r--r--sw/source/core/inc/movedfwdfrmsbyobjpos.hxx73
-rw-r--r--sw/source/core/inc/mvsave.hxx231
-rw-r--r--sw/source/core/inc/node2lay.hxx84
-rw-r--r--sw/source/core/inc/noteurl.hxx78
-rw-r--r--sw/source/core/inc/notxtfrm.hxx80
-rw-r--r--sw/source/core/inc/objectformatter.hxx241
-rw-r--r--sw/source/core/inc/observablethread.hxx106
-rw-r--r--sw/source/core/inc/pagefrm.hxx545
-rw-r--r--sw/source/core/inc/pamtyp.hxx105
-rw-r--r--sw/source/core/inc/prevwpage.hxx39
-rw-r--r--sw/source/core/inc/ptqueue.hxx65
-rw-r--r--sw/source/core/inc/retrievedinputstreamdata.hxx110
-rw-r--r--sw/source/core/inc/retrieveinputstream.hxx66
-rw-r--r--sw/source/core/inc/retrieveinputstreamconsumer.hxx75
-rw-r--r--sw/source/core/inc/rootfrm.hxx371
-rw-r--r--sw/source/core/inc/rowfrm.hxx114
-rw-r--r--sw/source/core/inc/scriptinfo.hxx419
-rw-r--r--sw/source/core/inc/sectfrm.hxx151
-rw-r--r--sw/source/core/inc/setmapvirtdev.hxx73
-rw-r--r--sw/source/core/inc/sortedobjs.hxx111
-rw-r--r--sw/source/core/inc/sortedobjsimpl.hxx64
-rw-r--r--sw/source/core/inc/swblocks.hxx243
-rw-r--r--sw/source/core/inc/swcache.hxx303
-rw-r--r--sw/source/core/inc/swfntcch.hxx102
-rw-r--r--sw/source/core/inc/swfont.hxx899
-rw-r--r--sw/source/core/inc/swselectionlist.hxx100
-rw-r--r--sw/source/core/inc/swthreadjoiner.hxx54
-rw-r--r--sw/source/core/inc/swthreadmanager.hxx92
-rw-r--r--sw/source/core/inc/tabfrm.hxx236
-rw-r--r--sw/source/core/inc/tblrwcl.hxx231
-rw-r--r--sw/source/core/inc/textapi.hxx73
-rw-r--r--sw/source/core/inc/threadlistener.hxx65
-rw-r--r--sw/source/core/inc/threadmanager.hxx175
-rw-r--r--sw/source/core/inc/tocntntanchoredobjectposition.hxx106
-rw-r--r--sw/source/core/inc/tolayoutanchoredobjectposition.hxx69
-rw-r--r--sw/source/core/inc/toxhlp.hxx79
-rw-r--r--sw/source/core/inc/txmsrt.hxx297
-rw-r--r--sw/source/core/inc/txtfrm.hxx837
-rw-r--r--sw/source/core/inc/txttypes.hxx106
-rw-r--r--sw/source/core/inc/undoflystrattr.hxx60
-rw-r--r--sw/source/core/inc/unofldmid.h74
-rw-r--r--sw/source/core/inc/unometa.hxx370
-rw-r--r--sw/source/core/inc/viewimp.hxx366
-rw-r--r--sw/source/core/inc/visiturl.hxx48
-rw-r--r--sw/source/core/inc/wrong.hxx167
-rw-r--r--sw/source/core/layout/anchoreddrawobject.cxx909
-rw-r--r--sw/source/core/layout/anchoredobject.cxx1067
-rw-r--r--sw/source/core/layout/atrfrm.cxx3274
-rw-r--r--sw/source/core/layout/calcmove.cxx2149
-rw-r--r--sw/source/core/layout/colfrm.cxx485
-rw-r--r--sw/source/core/layout/dbg_lay.cxx868
-rw-r--r--sw/source/core/layout/findfrm.cxx1841
-rw-r--r--sw/source/core/layout/flowfrm.cxx2739
-rw-r--r--sw/source/core/layout/fly.cxx2856
-rw-r--r--sw/source/core/layout/flycnt.cxx1566
-rw-r--r--sw/source/core/layout/flyincnt.cxx363
-rw-r--r--sw/source/core/layout/flylay.cxx1395
-rw-r--r--sw/source/core/layout/flypos.cxx114
-rw-r--r--sw/source/core/layout/frmtool.cxx3747
-rw-r--r--sw/source/core/layout/ftnfrm.cxx3361
-rw-r--r--sw/source/core/layout/hffrm.cxx797
-rw-r--r--sw/source/core/layout/layact.cxx2610
-rw-r--r--sw/source/core/layout/laycache.cxx1394
-rw-r--r--sw/source/core/layout/layhelp.hxx235
-rw-r--r--sw/source/core/layout/layouter.cxx574
-rw-r--r--sw/source/core/layout/makefile.mk113
-rw-r--r--sw/source/core/layout/movedfwdfrmsbyobjpos.cxx111
-rw-r--r--sw/source/core/layout/newfrm.cxx591
-rw-r--r--sw/source/core/layout/objectformatter.cxx581
-rw-r--r--sw/source/core/layout/objectformatterlayfrm.cxx218
-rw-r--r--sw/source/core/layout/objectformatterlayfrm.hxx84
-rw-r--r--sw/source/core/layout/objectformattertxtfrm.cxx872
-rw-r--r--sw/source/core/layout/objectformattertxtfrm.hxx218
-rw-r--r--sw/source/core/layout/objstmpconsiderwrapinfl.cxx76
-rw-r--r--sw/source/core/layout/objstmpconsiderwrapinfl.hxx50
-rw-r--r--sw/source/core/layout/pagechg.cxx2515
-rw-r--r--sw/source/core/layout/pagedesc.cxx515
-rw-r--r--sw/source/core/layout/paintfrm.cxx6785
-rw-r--r--sw/source/core/layout/sectfrm.cxx2806
-rw-r--r--sw/source/core/layout/softpagebreak.cxx158
-rw-r--r--sw/source/core/layout/sortedobjs.cxx79
-rw-r--r--sw/source/core/layout/sortedobjsimpl.cxx315
-rw-r--r--sw/source/core/layout/ssfrm.cxx752
-rw-r--r--sw/source/core/layout/swselectionlist.cxx96
-rw-r--r--sw/source/core/layout/tabfrm.cxx5949
-rw-r--r--sw/source/core/layout/trvlfrm.cxx2663
-rw-r--r--sw/source/core/layout/unusedf.cxx95
-rw-r--r--sw/source/core/layout/virtoutp.cxx258
-rw-r--r--sw/source/core/layout/virtoutp.hxx77
-rw-r--r--sw/source/core/layout/wsfrm.cxx4002
-rw-r--r--sw/source/core/makefile.mk110
-rw-r--r--sw/source/core/objectpositioning/anchoredobjectposition.cxx1129
-rw-r--r--sw/source/core/objectpositioning/ascharanchoredobjectposition.cxx458
-rw-r--r--sw/source/core/objectpositioning/environmentofanchoredobject.cxx124
-rw-r--r--sw/source/core/objectpositioning/makefile.mk59
-rw-r--r--sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx1075
-rw-r--r--sw/source/core/objectpositioning/tolayoutanchoredobjectposition.cxx245
-rw-r--r--sw/source/core/ole/makefile.mk55
-rw-r--r--sw/source/core/ole/ndole.cxx1015
-rw-r--r--sw/source/core/para/makefile.mk54
-rw-r--r--sw/source/core/para/paratr.cxx297
-rw-r--r--sw/source/core/sw3io/makefile.mk49
-rw-r--r--sw/source/core/sw3io/sw3convert.cxx416
-rw-r--r--sw/source/core/sw3io/swacorr.cxx105
-rw-r--r--sw/source/core/swg/SwXMLBlockExport.cxx145
-rw-r--r--sw/source/core/swg/SwXMLBlockImport.cxx119
-rw-r--r--sw/source/core/swg/SwXMLBlockListContext.cxx253
-rw-r--r--sw/source/core/swg/SwXMLSectionList.cxx157
-rw-r--r--sw/source/core/swg/SwXMLTextBlocks.cxx644
-rw-r--r--sw/source/core/swg/SwXMLTextBlocks1.cxx738
-rw-r--r--sw/source/core/swg/makefile.mk62
-rw-r--r--sw/source/core/swg/swblocks.cxx814
-rw-r--r--sw/source/core/table/makefile.mk48
-rw-r--r--sw/source/core/table/swnewtable.cxx2321
-rw-r--r--sw/source/core/table/swtable.cxx2864
-rw-r--r--sw/source/core/text/EnhancedPDFExportHelper.cxx2219
-rw-r--r--sw/source/core/text/SwGrammarMarkUp.cxx168
-rw-r--r--sw/source/core/text/atrhndl.hxx182
-rw-r--r--sw/source/core/text/atrstck.cxx958
-rw-r--r--sw/source/core/text/blink.cxx200
-rw-r--r--sw/source/core/text/frmcrsr.cxx1751
-rw-r--r--sw/source/core/text/frmform.cxx2176
-rw-r--r--sw/source/core/text/frminf.cxx379
-rw-r--r--sw/source/core/text/frmpaint.cxx751
-rw-r--r--sw/source/core/text/guess.cxx556
-rw-r--r--sw/source/core/text/guess.hxx76
-rw-r--r--sw/source/core/text/inftxt.cxx1977
-rw-r--r--sw/source/core/text/inftxt.hxx905
-rw-r--r--sw/source/core/text/itradj.cxx919
-rw-r--r--sw/source/core/text/itratr.cxx1089
-rw-r--r--sw/source/core/text/itratr.hxx134
-rw-r--r--sw/source/core/text/itrcrsr.cxx1888
-rw-r--r--sw/source/core/text/itrform2.cxx2156
-rw-r--r--sw/source/core/text/itrform2.hxx217
-rw-r--r--sw/source/core/text/itrpaint.cxx721
-rw-r--r--sw/source/core/text/itrpaint.hxx72
-rw-r--r--sw/source/core/text/itrtxt.cxx526
-rw-r--r--sw/source/core/text/itrtxt.hxx343
-rw-r--r--sw/source/core/text/makefile.mk120
-rw-r--r--sw/source/core/text/noteurl.cxx89
-rw-r--r--sw/source/core/text/pordrop.hxx122
-rw-r--r--sw/source/core/text/porexp.cxx314
-rw-r--r--sw/source/core/text/porexp.hxx111
-rw-r--r--sw/source/core/text/porfld.cxx1388
-rw-r--r--sw/source/core/text/porfld.hxx277
-rw-r--r--sw/source/core/text/porfly.cxx456
-rw-r--r--sw/source/core/text/porfly.hxx111
-rw-r--r--sw/source/core/text/porftn.hxx133
-rw-r--r--sw/source/core/text/porglue.cxx320
-rw-r--r--sw/source/core/text/porglue.hxx134
-rw-r--r--sw/source/core/text/porhyph.hxx122
-rw-r--r--sw/source/core/text/porlay.cxx2461
-rw-r--r--sw/source/core/text/porlay.hxx436
-rw-r--r--sw/source/core/text/porlin.cxx426
-rw-r--r--sw/source/core/text/porlin.hxx261
-rw-r--r--sw/source/core/text/pormulti.cxx2417
-rw-r--r--sw/source/core/text/pormulti.hxx271
-rw-r--r--sw/source/core/text/porref.cxx117
-rw-r--r--sw/source/core/text/porref.hxx76
-rw-r--r--sw/source/core/text/porrst.cxx598
-rw-r--r--sw/source/core/text/porrst.hxx190
-rw-r--r--sw/source/core/text/portab.hxx160
-rw-r--r--sw/source/core/text/portox.cxx117
-rw-r--r--sw/source/core/text/portox.hxx77
-rw-r--r--sw/source/core/text/portxt.cxx881
-rw-r--r--sw/source/core/text/portxt.hxx124
-rw-r--r--sw/source/core/text/possiz.hxx86
-rw-r--r--sw/source/core/text/redlnitr.cxx504
-rw-r--r--sw/source/core/text/redlnitr.hxx123
-rw-r--r--sw/source/core/text/txtcache.cxx243
-rw-r--r--sw/source/core/text/txtcache.hxx79
-rw-r--r--sw/source/core/text/txtcfg.hxx57
-rw-r--r--sw/source/core/text/txtdrop.cxx1105
-rw-r--r--sw/source/core/text/txtfld.cxx551
-rw-r--r--sw/source/core/text/txtfly.cxx2433
-rw-r--r--sw/source/core/text/txtfly.hxx262
-rw-r--r--sw/source/core/text/txtfrm.cxx2756
-rw-r--r--sw/source/core/text/txtftn.cxx1699
-rw-r--r--sw/source/core/text/txthyph.cxx697
-rw-r--r--sw/source/core/text/txtinit.cxx103
-rw-r--r--sw/source/core/text/txtio.cxx956
-rw-r--r--sw/source/core/text/txtpaint.cxx139
-rw-r--r--sw/source/core/text/txtpaint.hxx194
-rw-r--r--sw/source/core/text/txttab.cxx667
-rw-r--r--sw/source/core/text/widorp.cxx568
-rw-r--r--sw/source/core/text/widorp.hxx98
-rw-r--r--sw/source/core/text/wrong.cxx646
-rw-r--r--sw/source/core/text/xmldump.cxx313
-rw-r--r--sw/source/core/tox/makefile.mk57
-rw-r--r--sw/source/core/tox/tox.cxx954
-rw-r--r--sw/source/core/tox/toxhlp.cxx194
-rw-r--r--sw/source/core/tox/txmsrt.cxx953
-rw-r--r--sw/source/core/txtnode/SwGrammarContact.cxx223
-rw-r--r--sw/source/core/txtnode/atrfld.cxx403
-rw-r--r--sw/source/core/txtnode/atrflyin.cxx292
-rw-r--r--sw/source/core/txtnode/atrftn.cxx545
-rw-r--r--sw/source/core/txtnode/atrref.cxx105
-rw-r--r--sw/source/core/txtnode/atrtox.cxx99
-rw-r--r--sw/source/core/txtnode/chrfmt.cxx40
-rw-r--r--sw/source/core/txtnode/fmtatr2.cxx910
-rw-r--r--sw/source/core/txtnode/fntcache.cxx2730
-rw-r--r--sw/source/core/txtnode/fntcap.cxx849
-rw-r--r--sw/source/core/txtnode/makefile.mk86
-rw-r--r--sw/source/core/txtnode/modeltoviewhelper.cxx123
-rw-r--r--sw/source/core/txtnode/ndhints.cxx499
-rw-r--r--sw/source/core/txtnode/ndtxt.cxx4905
-rw-r--r--sw/source/core/txtnode/swfntcch.cxx96
-rw-r--r--sw/source/core/txtnode/swfont.cxx1243
-rw-r--r--sw/source/core/txtnode/thints.cxx3067
-rw-r--r--sw/source/core/txtnode/txatbase.cxx86
-rw-r--r--sw/source/core/txtnode/txatritr.cxx246
-rw-r--r--sw/source/core/txtnode/txtatr2.cxx340
-rw-r--r--sw/source/core/txtnode/txtedt.cxx2182
-rw-r--r--sw/source/core/undo/SwRewriter.cxx80
-rw-r--r--sw/source/core/undo/SwUndoField.cxx160
-rw-r--r--sw/source/core/undo/SwUndoFmt.cxx513
-rw-r--r--sw/source/core/undo/SwUndoPageDesc.cxx477
-rw-r--r--sw/source/core/undo/SwUndoTOXChange.cxx74
-rw-r--r--sw/source/core/undo/docundo.cxx1027
-rw-r--r--sw/source/core/undo/makefile.mk86
-rw-r--r--sw/source/core/undo/rolbck.cxx1522
-rw-r--r--sw/source/core/undo/unattr.cxx1320
-rw-r--r--sw/source/core/undo/unbkmk.cxx111
-rw-r--r--sw/source/core/undo/undel.cxx1008
-rw-r--r--sw/source/core/undo/undo.hrc185
-rw-r--r--sw/source/core/undo/undo.src657
-rw-r--r--sw/source/core/undo/undobj.cxx1402
-rw-r--r--sw/source/core/undo/undobj1.cxx706
-rw-r--r--sw/source/core/undo/undoflystrattr.cxx107
-rw-r--r--sw/source/core/undo/undraw.cxx644
-rw-r--r--sw/source/core/undo/unfmco.cxx134
-rw-r--r--sw/source/core/undo/unins.cxx1102
-rw-r--r--sw/source/core/undo/unmove.cxx358
-rw-r--r--sw/source/core/undo/unnum.cxx468
-rw-r--r--sw/source/core/undo/unoutl.cxx72
-rw-r--r--sw/source/core/undo/unovwr.cxx514
-rw-r--r--sw/source/core/undo/unredln.cxx545
-rw-r--r--sw/source/core/undo/unsect.cxx501
-rw-r--r--sw/source/core/undo/unsort.cxx302
-rw-r--r--sw/source/core/undo/unspnd.cxx218
-rw-r--r--sw/source/core/undo/untbl.cxx3256
-rw-r--r--sw/source/core/undo/untblk.cxx369
-rw-r--r--sw/source/core/unocore/SwXTextDefaults.cxx294
-rw-r--r--sw/source/core/unocore/TextCursorHelper.cxx58
-rw-r--r--sw/source/core/unocore/XMLRangeHelper.cxx415
-rw-r--r--sw/source/core/unocore/XMLRangeHelper.hxx81
-rw-r--r--sw/source/core/unocore/makefile.mk124
-rw-r--r--sw/source/core/unocore/swunohelper.cxx292
-rw-r--r--sw/source/core/unocore/unobkm.cxx680
-rw-r--r--sw/source/core/unocore/unochart.cxx2989
-rw-r--r--sw/source/core/unocore/unocoll.cxx2002
-rw-r--r--sw/source/core/unocore/unocore.src64
-rw-r--r--sw/source/core/unocore/unocrsrhelper.cxx1125
-rw-r--r--sw/source/core/unocore/unodraw.cxx2964
-rw-r--r--sw/source/core/unocore/unoevent.cxx331
-rw-r--r--sw/source/core/unocore/unoevtlstnr.cxx105
-rw-r--r--sw/source/core/unocore/unofield.cxx2830
-rw-r--r--sw/source/core/unocore/unoflatpara.cxx534
-rw-r--r--sw/source/core/unocore/unoframe.cxx3171
-rw-r--r--sw/source/core/unocore/unoftn.cxx638
-rw-r--r--sw/source/core/unocore/unoidx.cxx3253
-rw-r--r--sw/source/core/unocore/unomap.cxx3127
-rw-r--r--sw/source/core/unocore/unoobj.cxx2990
-rw-r--r--sw/source/core/unocore/unoobj2.cxx1993
-rw-r--r--sw/source/core/unocore/unoparagraph.cxx1334
-rw-r--r--sw/source/core/unocore/unoport.cxx979
-rw-r--r--sw/source/core/unocore/unoportenum.cxx1175
-rw-r--r--sw/source/core/unocore/unoprnms.cxx799
-rw-r--r--sw/source/core/unocore/unoredline.cxx722
-rw-r--r--sw/source/core/unocore/unoredlines.cxx199
-rw-r--r--sw/source/core/unocore/unorefmk.cxx1629
-rw-r--r--sw/source/core/unocore/unosect.cxx1824
-rw-r--r--sw/source/core/unocore/unosett.cxx2647
-rw-r--r--sw/source/core/unocore/unosrch.cxx686
-rw-r--r--sw/source/core/unocore/unostyle.cxx4241
-rw-r--r--sw/source/core/unocore/unotbl.cxx5013
-rw-r--r--sw/source/core/unocore/unotext.cxx2822
-rw-r--r--sw/source/core/unocore/unotextmarkup.cxx488
-rw-r--r--sw/source/core/view/makefile.mk61
-rw-r--r--sw/source/core/view/pagepreviewlayout.cxx1403
-rw-r--r--sw/source/core/view/printdata.cxx548
-rw-r--r--sw/source/core/view/vdraw.cxx276
-rw-r--r--sw/source/core/view/viewimp.cxx488
-rw-r--r--sw/source/core/view/viewpg.cxx248
-rw-r--r--sw/source/core/view/viewsh.cxx2366
-rw-r--r--sw/source/core/view/vnew.cxx347
-rw-r--r--sw/source/core/view/vprint.cxx770
-rw-r--r--sw/source/filter/ascii/ascatr.cxx229
-rw-r--r--sw/source/filter/ascii/makefile.mk56
-rw-r--r--sw/source/filter/ascii/parasc.cxx532
-rw-r--r--sw/source/filter/ascii/wrtasc.cxx225
-rw-r--r--sw/source/filter/ascii/wrtasc.hxx55
-rw-r--r--sw/source/filter/basflt/docfact.cxx86
-rw-r--r--sw/source/filter/basflt/fltini.cxx1038
-rw-r--r--sw/source/filter/basflt/iodetect.cxx595
-rw-r--r--sw/source/filter/basflt/makefile.mk58
-rw-r--r--sw/source/filter/basflt/shellio.cxx1022
-rw-r--r--sw/source/filter/html/SwAppletImpl.cxx211
-rw-r--r--sw/source/filter/html/css1atr.cxx3877
-rw-r--r--sw/source/filter/html/css1kywd.cxx284
-rw-r--r--sw/source/filter/html/css1kywd.hxx293
-rw-r--r--sw/source/filter/html/htmlatr.cxx3497
-rw-r--r--sw/source/filter/html/htmlbas.cxx371
-rw-r--r--sw/source/filter/html/htmlcss1.cxx2480
-rw-r--r--sw/source/filter/html/htmlctxt.cxx755
-rw-r--r--sw/source/filter/html/htmldraw.cxx861
-rw-r--r--sw/source/filter/html/htmlfld.cxx672
-rw-r--r--sw/source/filter/html/htmlfld.hxx94
-rw-r--r--sw/source/filter/html/htmlfldw.cxx541
-rw-r--r--sw/source/filter/html/htmlfly.cxx1931
-rw-r--r--sw/source/filter/html/htmlfly.hxx138
-rw-r--r--sw/source/filter/html/htmlflyt.cxx518
-rw-r--r--sw/source/filter/html/htmlform.cxx2663
-rw-r--r--sw/source/filter/html/htmlform.hxx54
-rw-r--r--sw/source/filter/html/htmlforw.cxx1449
-rw-r--r--sw/source/filter/html/htmlftn.cxx623
-rw-r--r--sw/source/filter/html/htmlgrin.cxx1450
-rw-r--r--sw/source/filter/html/htmlnum.cxx990
-rw-r--r--sw/source/filter/html/htmlnum.hxx133
-rw-r--r--sw/source/filter/html/htmlplug.cxx1403
-rw-r--r--sw/source/filter/html/htmlsect.cxx864
-rw-r--r--sw/source/filter/html/htmltab.cxx5602
-rw-r--r--sw/source/filter/html/htmltabw.cxx1255
-rw-r--r--sw/source/filter/html/htmlvsh.hxx57
-rw-r--r--sw/source/filter/html/makefile.mk83
-rw-r--r--sw/source/filter/html/parcss1.cxx1428
-rw-r--r--sw/source/filter/html/parcss1.hxx309
-rw-r--r--sw/source/filter/html/svxcss1.cxx3316
-rw-r--r--sw/source/filter/html/svxcss1.hxx437
-rw-r--r--sw/source/filter/html/swcss1.hxx229
-rw-r--r--sw/source/filter/html/swhtml.cxx5537
-rw-r--r--sw/source/filter/html/swhtml.hxx1042
-rw-r--r--sw/source/filter/html/wrthtml.cxx1437
-rw-r--r--sw/source/filter/html/wrthtml.hxx606
-rw-r--r--sw/source/filter/inc/fltbase.hxx129
-rw-r--r--sw/source/filter/inc/fltglbls.hxx127
-rw-r--r--sw/source/filter/inc/fltini.hxx111
-rw-r--r--sw/source/filter/inc/fltshell.hxx630
-rw-r--r--sw/source/filter/inc/makefile.mk26
-rw-r--r--sw/source/filter/inc/msfilter.hxx528
-rw-r--r--sw/source/filter/inc/rtf.hxx134
-rw-r--r--sw/source/filter/inc/wrt_fn.hxx69
-rw-r--r--sw/source/filter/inc/wrtswtbl.hxx336
-rw-r--r--sw/source/filter/inc/wwstyles.hxx221
-rw-r--r--sw/source/filter/makefile.mk67
-rw-r--r--sw/source/filter/rtf/makefile.mk62
-rw-r--r--sw/source/filter/rtf/rtffld.cxx1226
-rw-r--r--sw/source/filter/rtf/rtffly.cxx1652
-rw-r--r--sw/source/filter/rtf/rtfnum.cxx1077
-rw-r--r--sw/source/filter/rtf/rtftbl.cxx1026
-rw-r--r--sw/source/filter/rtf/swparrtf.cxx4416
-rw-r--r--sw/source/filter/rtf/swparrtf.hxx483
-rw-r--r--sw/source/filter/writer/makefile.mk54
-rw-r--r--sw/source/filter/writer/writer.cxx629
-rw-r--r--sw/source/filter/writer/wrt_fn.cxx132
-rw-r--r--sw/source/filter/writer/wrtswtbl.cxx926
-rw-r--r--sw/source/filter/ww1/fltshell.cxx2091
-rw-r--r--sw/source/filter/ww1/makefile.mk94
-rw-r--r--sw/source/filter/ww1/w1class.cxx1257
-rw-r--r--sw/source/filter/ww1/w1class.hxx1599
-rw-r--r--sw/source/filter/ww1/w1filter.cxx2057
-rw-r--r--sw/source/filter/ww1/w1par.cxx139
-rw-r--r--sw/source/filter/ww1/w1par.hxx45
-rw-r--r--sw/source/filter/ww1/w1sprm.cxx700
-rw-r--r--sw/source/filter/ww1/w1struct.hxx853
-rw-r--r--sw/source/filter/ww8/CREDITS3
-rw-r--r--sw/source/filter/ww8/README-rtf.txt226
-rw-r--r--sw/source/filter/ww8/WW8FFData.cxx178
-rw-r--r--sw/source/filter/ww8/WW8FFData.hxx119
-rw-r--r--sw/source/filter/ww8/WW8FibData.cxx64
-rw-r--r--sw/source/filter/ww8/WW8FibData.hxx54
-rw-r--r--sw/source/filter/ww8/WW8Sttbf.cxx125
-rw-r--r--sw/source/filter/ww8/WW8Sttbf.hxx147
-rw-r--r--sw/source/filter/ww8/WW8TableInfo.cxx1520
-rw-r--r--sw/source/filter/ww8/WW8TableInfo.hxx358
-rw-r--r--sw/source/filter/ww8/attributeoutputbase.hxx585
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx3712
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.hxx619
-rw-r--r--sw/source/filter/ww8/docxexport.cxx720
-rw-r--r--sw/source/filter/ww8/docxexport.hxx218
-rw-r--r--sw/source/filter/ww8/docxexportfilter.cxx235
-rw-r--r--sw/source/filter/ww8/docxexportfilter.hxx64
-rw-r--r--sw/source/filter/ww8/docxfootnotes.hxx103
-rw-r--r--sw/source/filter/ww8/dump/dump8.cxx173
-rw-r--r--sw/source/filter/ww8/dump/dump8a.cxx2744
-rw-r--r--sw/source/filter/ww8/dump/makefile.mk122
-rw-r--r--sw/source/filter/ww8/dump/msvbasic.cxx538
-rw-r--r--sw/source/filter/ww8/dump/msvbasic.hxx105
-rw-r--r--sw/source/filter/ww8/dump/ww8darr.cxx548
-rw-r--r--sw/source/filter/ww8/dump/ww8darr.hxx46
-rw-r--r--sw/source/filter/ww8/dump/ww8dout.cxx419
-rw-r--r--sw/source/filter/ww8/dump/ww8dout.hxx89
-rw-r--r--sw/source/filter/ww8/dump/ww8scan.cxx6665
-rw-r--r--sw/source/filter/ww8/dump/ww8scan.hxx1484
-rw-r--r--sw/source/filter/ww8/dump/ww8struc.hxx818
-rw-r--r--sw/source/filter/ww8/escher.hxx186
-rw-r--r--sw/source/filter/ww8/fields.cxx153
-rw-r--r--sw/source/filter/ww8/fields.hxx158
-rw-r--r--sw/source/filter/ww8/hash_wrap.hxx123
-rw-r--r--sw/source/filter/ww8/makefile.mk123
-rw-r--r--sw/source/filter/ww8/needed_cast.hxx64
-rw-r--r--sw/source/filter/ww8/rtfattributeoutput.cxx3476
-rw-r--r--sw/source/filter/ww8/rtfattributeoutput.hxx592
-rw-r--r--sw/source/filter/ww8/rtfexport.cxx1297
-rw-r--r--sw/source/filter/ww8/rtfexport.hxx220
-rw-r--r--sw/source/filter/ww8/rtfexportfilter.cxx137
-rw-r--r--sw/source/filter/ww8/rtfexportfilter.hxx86
-rw-r--r--sw/source/filter/ww8/rtfimportfilter.cxx137
-rw-r--r--sw/source/filter/ww8/rtfimportfilter.hxx76
-rw-r--r--sw/source/filter/ww8/rtfsdrexport.cxx586
-rw-r--r--sw/source/filter/ww8/rtfsdrexport.hxx117
-rw-r--r--sw/source/filter/ww8/sortedarray.hxx120
-rw-r--r--sw/source/filter/ww8/staticassert.hxx72
-rw-r--r--sw/source/filter/ww8/styles.cxx218
-rw-r--r--sw/source/filter/ww8/tracer.cxx209
-rw-r--r--sw/source/filter/ww8/tracer.hxx91
-rw-r--r--sw/source/filter/ww8/types.hxx58
-rw-r--r--sw/source/filter/ww8/typessw.hxx46
-rw-r--r--sw/source/filter/ww8/writerhelper.cxx857
-rw-r--r--sw/source/filter/ww8/writerhelper.hxx964
-rw-r--r--sw/source/filter/ww8/writerwordglue.cxx1046
-rw-r--r--sw/source/filter/ww8/writerwordglue.hxx164
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx2845
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx2752
-rw-r--r--sw/source/filter/ww8/wrtw8num.cxx958
-rw-r--r--sw/source/filter/ww8/wrtw8sty.cxx2316
-rw-r--r--sw/source/filter/ww8/wrtww8.cxx3823
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx1562
-rw-r--r--sw/source/filter/ww8/wrtww8gr.cxx933
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx5292
-rw-r--r--sw/source/filter/ww8/ww8attributeoutput.hxx456
-rw-r--r--sw/source/filter/ww8/ww8glsy.cxx272
-rw-r--r--sw/source/filter/ww8/ww8glsy.hxx92
-rw-r--r--sw/source/filter/ww8/ww8graf.cxx3281
-rw-r--r--sw/source/filter/ww8/ww8graf.hxx107
-rw-r--r--sw/source/filter/ww8/ww8graf2.cxx823
-rw-r--r--sw/source/filter/ww8/ww8par.cxx5445
-rw-r--r--sw/source/filter/ww8/ww8par.hxx1633
-rw-r--r--sw/source/filter/ww8/ww8par2.cxx4731
-rw-r--r--sw/source/filter/ww8/ww8par2.hxx289
-rw-r--r--sw/source/filter/ww8/ww8par3.cxx2643
-rw-r--r--sw/source/filter/ww8/ww8par4.cxx581
-rw-r--r--sw/source/filter/ww8/ww8par5.cxx3746
-rw-r--r--sw/source/filter/ww8/ww8par6.cxx6263
-rw-r--r--sw/source/filter/ww8/ww8scan.cxx7395
-rw-r--r--sw/source/filter/ww8/ww8scan.hxx1787
-rw-r--r--sw/source/filter/ww8/ww8struc.hxx1010
-rw-r--r--sw/source/filter/ww8/ww8toolbar.cxx1304
-rw-r--r--sw/source/filter/ww8/ww8toolbar.hxx350
-rw-r--r--sw/source/filter/xml/DocSettingNames.hxx29
-rw-r--r--sw/source/filter/xml/ForbiddenCharactersEnum.hxx44
-rw-r--r--sw/source/filter/xml/XMLRedlineImportHelper.cxx757
-rw-r--r--sw/source/filter/xml/XMLRedlineImportHelper.hxx166
-rw-r--r--sw/source/filter/xml/makefile.mk94
-rw-r--r--sw/source/filter/xml/swxml.cxx1145
-rw-r--r--sw/source/filter/xml/wrtxml.cxx703
-rw-r--r--sw/source/filter/xml/wrtxml.hxx107
-rw-r--r--sw/source/filter/xml/xmlbrsh.cxx260
-rw-r--r--sw/source/filter/xml/xmlbrshe.hxx58
-rw-r--r--sw/source/filter/xml/xmlbrshi.hxx88
-rw-r--r--sw/source/filter/xml/xmlexp.cxx998
-rw-r--r--sw/source/filter/xml/xmlexp.hxx192
-rw-r--r--sw/source/filter/xml/xmlexpit.cxx1059
-rw-r--r--sw/source/filter/xml/xmlexpit.hxx139
-rw-r--r--sw/source/filter/xml/xmlfmt.cxx1137
-rw-r--r--sw/source/filter/xml/xmlfmte.cxx368
-rw-r--r--sw/source/filter/xml/xmlfonte.cxx105
-rw-r--r--sw/source/filter/xml/xmlimp.cxx1748
-rw-r--r--sw/source/filter/xml/xmlimp.hxx234
-rw-r--r--sw/source/filter/xml/xmlimpit.cxx976
-rw-r--r--sw/source/filter/xml/xmlimpit.hxx113
-rw-r--r--sw/source/filter/xml/xmlitem.cxx92
-rw-r--r--sw/source/filter/xml/xmlitem.hxx82
-rw-r--r--sw/source/filter/xml/xmliteme.cxx259
-rw-r--r--sw/source/filter/xml/xmlitemi.cxx268
-rw-r--r--sw/source/filter/xml/xmlitemm.cxx297
-rw-r--r--sw/source/filter/xml/xmlithlp.cxx441
-rw-r--r--sw/source/filter/xml/xmlithlp.hxx104
-rw-r--r--sw/source/filter/xml/xmlitmap.hxx99
-rw-r--r--sw/source/filter/xml/xmlitmpr.cxx93
-rw-r--r--sw/source/filter/xml/xmlmeta.cxx202
-rw-r--r--sw/source/filter/xml/xmlscript.cxx65
-rw-r--r--sw/source/filter/xml/xmltble.cxx1256
-rw-r--r--sw/source/filter/xml/xmltbli.cxx2955
-rw-r--r--sw/source/filter/xml/xmltbli.hxx228
-rw-r--r--sw/source/filter/xml/xmltext.cxx110
-rw-r--r--sw/source/filter/xml/xmltexte.cxx772
-rw-r--r--sw/source/filter/xml/xmltexte.hxx91
-rw-r--r--sw/source/filter/xml/xmltexti.cxx1064
-rw-r--r--sw/source/filter/xml/xmltexti.hxx132
-rw-r--r--sw/source/ui/app/app.src651
-rw-r--r--sw/source/ui/app/appenv.cxx528
-rw-r--r--sw/source/ui/app/apphdl.cxx955
-rw-r--r--sw/source/ui/app/applab.cxx450
-rw-r--r--sw/source/ui/app/appopt.cxx584
-rw-r--r--sw/source/ui/app/docsh.cxx1370
-rw-r--r--sw/source/ui/app/docsh2.cxx1850
-rw-r--r--sw/source/ui/app/docshdrw.cxx72
-rw-r--r--sw/source/ui/app/docshini.cxx782
-rw-r--r--sw/source/ui/app/docst.cxx1279
-rw-r--r--sw/source/ui/app/docstyle.cxx2854
-rw-r--r--sw/source/ui/app/error.src203
-rw-r--r--sw/source/ui/app/mainwn.cxx163
-rw-r--r--sw/source/ui/app/makefile.mk101
-rw-r--r--sw/source/ui/app/mn.src1070
-rw-r--r--sw/source/ui/app/swdll.cxx137
-rw-r--r--sw/source/ui/app/swmodul1.cxx648
-rw-r--r--sw/source/ui/app/swmodule.cxx454
-rw-r--r--sw/source/ui/app/swwait.cxx77
-rw-r--r--sw/source/ui/cctrl/actctrl.cxx129
-rw-r--r--sw/source/ui/cctrl/makefile.mk59
-rw-r--r--sw/source/ui/cctrl/popbox.cxx78
-rw-r--r--sw/source/ui/cctrl/swlbox.cxx173
-rw-r--r--sw/source/ui/chrdlg/break.cxx241
-rw-r--r--sw/source/ui/chrdlg/break.hrc41
-rw-r--r--sw/source/ui/chrdlg/ccoll.cxx205
-rw-r--r--sw/source/ui/chrdlg/ccoll.hrc50
-rw-r--r--sw/source/ui/chrdlg/ccoll.src159
-rw-r--r--sw/source/ui/chrdlg/chardlg.cxx346
-rw-r--r--sw/source/ui/chrdlg/chardlg.hrc86
-rw-r--r--sw/source/ui/chrdlg/chardlg.src264
-rw-r--r--sw/source/ui/chrdlg/chrdlg.src77
-rw-r--r--sw/source/ui/chrdlg/drpcps.cxx851
-rw-r--r--sw/source/ui/chrdlg/drpcps.hrc51
-rw-r--r--sw/source/ui/chrdlg/drpcps.src225
-rw-r--r--sw/source/ui/chrdlg/makefile.mk69
-rw-r--r--sw/source/ui/chrdlg/numpara.cxx325
-rw-r--r--sw/source/ui/chrdlg/numpara.hrc53
-rw-r--r--sw/source/ui/chrdlg/numpara.src228
-rw-r--r--sw/source/ui/chrdlg/paradlg.hrc71
-rw-r--r--sw/source/ui/chrdlg/paradlg.src165
-rw-r--r--sw/source/ui/chrdlg/pardlg.cxx268
-rw-r--r--sw/source/ui/chrdlg/swbreak.src172
-rw-r--r--sw/source/ui/chrdlg/swuiccoll.cxx328
-rw-r--r--sw/source/ui/chrdlg/tblnumfm.cxx71
-rw-r--r--sw/source/ui/config/barcfg.cxx141
-rw-r--r--sw/source/ui/config/caption.cxx94
-rw-r--r--sw/source/ui/config/cfgitems.cxx385
-rw-r--r--sw/source/ui/config/config.hrc67
-rw-r--r--sw/source/ui/config/dbconfig.cxx135
-rw-r--r--sw/source/ui/config/fontcfg.cxx338
-rw-r--r--sw/source/ui/config/mailconfigpage.cxx578
-rw-r--r--sw/source/ui/config/mailconfigpage.hrc83
-rw-r--r--sw/source/ui/config/mailconfigpage.src421
-rw-r--r--sw/source/ui/config/makefile.mk87
-rw-r--r--sw/source/ui/config/modcfg.cxx1337
-rw-r--r--sw/source/ui/config/optcomp.cxx604
-rw-r--r--sw/source/ui/config/optcomp.hrc56
-rw-r--r--sw/source/ui/config/optcomp.src140
-rw-r--r--sw/source/ui/config/optdlg.hrc205
-rw-r--r--sw/source/ui/config/optdlg.src997
-rw-r--r--sw/source/ui/config/optload.cxx915
-rw-r--r--sw/source/ui/config/optload.hrc83
-rw-r--r--sw/source/ui/config/optload.src410
-rw-r--r--sw/source/ui/config/optpage.cxx2444
-rw-r--r--sw/source/ui/config/prtopt.cxx194
-rw-r--r--sw/source/ui/config/redlopt.hrc54
-rw-r--r--sw/source/ui/config/redlopt.src279
-rw-r--r--sw/source/ui/config/uinums.cxx587
-rw-r--r--sw/source/ui/config/usrpref.cxx641
-rw-r--r--sw/source/ui/config/viewopt.cxx550
-rw-r--r--sw/source/ui/dbui/addresslistdialog.cxx730
-rw-r--r--sw/source/ui/dbui/addresslistdialog.hrc48
-rw-r--r--sw/source/ui/dbui/addresslistdialog.hxx118
-rw-r--r--sw/source/ui/dbui/addresslistdialog.src126
-rw-r--r--sw/source/ui/dbui/createaddresslistdialog.cxx776
-rw-r--r--sw/source/ui/dbui/createaddresslistdialog.hrc64
-rw-r--r--sw/source/ui/dbui/createaddresslistdialog.hxx125
-rw-r--r--sw/source/ui/dbui/createaddresslistdialog.src225
-rw-r--r--sw/source/ui/dbui/customizeaddresslistdialog.cxx250
-rw-r--r--sw/source/ui/dbui/customizeaddresslistdialog.hrc49
-rw-r--r--sw/source/ui/dbui/customizeaddresslistdialog.hxx99
-rw-r--r--sw/source/ui/dbui/customizeaddresslistdialog.src162
-rw-r--r--sw/source/ui/dbui/dbinsdlg.cxx1907
-rw-r--r--sw/source/ui/dbui/dbinsdlg.hrc73
-rw-r--r--sw/source/ui/dbui/dbinsdlg.src309
-rw-r--r--sw/source/ui/dbui/dbmgr.cxx2960
-rw-r--r--sw/source/ui/dbui/dbtablepreviewdialog.cxx126
-rw-r--r--sw/source/ui/dbui/dbtablepreviewdialog.hrc35
-rw-r--r--sw/source/ui/dbui/dbtablepreviewdialog.hxx56
-rw-r--r--sw/source/ui/dbui/dbtablepreviewdialog.src61
-rw-r--r--sw/source/ui/dbui/dbtree.cxx553
-rw-r--r--sw/source/ui/dbui/dbui.cxx143
-rw-r--r--sw/source/ui/dbui/dbui.src283
-rw-r--r--sw/source/ui/dbui/maildispatcher.cxx296
-rw-r--r--sw/source/ui/dbui/mailmergechildwindow.cxx712
-rw-r--r--sw/source/ui/dbui/mailmergechildwindow.hrc61
-rw-r--r--sw/source/ui/dbui/mailmergechildwindow.src278
-rw-r--r--sw/source/ui/dbui/mailmergehelper.cxx908
-rw-r--r--sw/source/ui/dbui/mailmergewizard.cxx320
-rw-r--r--sw/source/ui/dbui/mailmergewizard.hrc37
-rw-r--r--sw/source/ui/dbui/mailmergewizard.src79
-rw-r--r--sw/source/ui/dbui/makefile.mk122
-rw-r--r--sw/source/ui/dbui/mmaddressblockpage.cxx1682
-rw-r--r--sw/source/ui/dbui/mmaddressblockpage.hrc115
-rw-r--r--sw/source/ui/dbui/mmaddressblockpage.hxx318
-rw-r--r--sw/source/ui/dbui/mmaddressblockpage.src632
-rw-r--r--sw/source/ui/dbui/mmconfigitem.cxx1761
-rw-r--r--sw/source/ui/dbui/mmdocselectpage.cxx211
-rw-r--r--sw/source/ui/dbui/mmdocselectpage.hrc37
-rw-r--r--sw/source/ui/dbui/mmdocselectpage.hxx72
-rw-r--r--sw/source/ui/dbui/mmdocselectpage.src100
-rw-r--r--sw/source/ui/dbui/mmgreetingspage.cxx586
-rw-r--r--sw/source/ui/dbui/mmgreetingspage.hrc65
-rw-r--r--sw/source/ui/dbui/mmgreetingspage.hxx170
-rw-r--r--sw/source/ui/dbui/mmgreetingspage.src255
-rw-r--r--sw/source/ui/dbui/mmlayoutpage.cxx790
-rw-r--r--sw/source/ui/dbui/mmlayoutpage.hrc48
-rw-r--r--sw/source/ui/dbui/mmlayoutpage.hxx112
-rw-r--r--sw/source/ui/dbui/mmlayoutpage.src159
-rw-r--r--sw/source/ui/dbui/mmmergepage.cxx116
-rw-r--r--sw/source/ui/dbui/mmmergepage.hrc43
-rw-r--r--sw/source/ui/dbui/mmmergepage.hxx71
-rw-r--r--sw/source/ui/dbui/mmmergepage.src101
-rw-r--r--sw/source/ui/dbui/mmoutputpage.cxx1340
-rw-r--r--sw/source/ui/dbui/mmoutputpage.hrc103
-rw-r--r--sw/source/ui/dbui/mmoutputpage.hxx238
-rw-r--r--sw/source/ui/dbui/mmoutputpage.src463
-rw-r--r--sw/source/ui/dbui/mmoutputtypepage.cxx106
-rw-r--r--sw/source/ui/dbui/mmoutputtypepage.hrc44
-rw-r--r--sw/source/ui/dbui/mmoutputtypepage.hxx65
-rw-r--r--sw/source/ui/dbui/mmoutputtypepage.src99
-rw-r--r--sw/source/ui/dbui/mmpreparemergepage.cxx189
-rw-r--r--sw/source/ui/dbui/mmpreparemergepage.hrc46
-rw-r--r--sw/source/ui/dbui/mmpreparemergepage.hxx75
-rw-r--r--sw/source/ui/dbui/mmpreparemergepage.src125
-rw-r--r--sw/source/ui/dbui/selectdbtabledialog.cxx215
-rw-r--r--sw/source/ui/dbui/selectdbtabledialog.hrc43
-rw-r--r--sw/source/ui/dbui/selectdbtabledialog.hxx76
-rw-r--r--sw/source/ui/dbui/selectdbtabledialog.src98
-rw-r--r--sw/source/ui/dbui/swdbtoolsclient.cxx230
-rw-r--r--sw/source/ui/dialog/SwSpellDialogChildWindow.cxx900
-rw-r--r--sw/source/ui/dialog/abstract.cxx79
-rw-r--r--sw/source/ui/dialog/abstract.hrc36
-rw-r--r--sw/source/ui/dialog/abstract.src153
-rw-r--r--sw/source/ui/dialog/addrdlg.cxx60
-rw-r--r--sw/source/ui/dialog/ascfldlg.cxx448
-rw-r--r--sw/source/ui/dialog/ascfldlg.hrc44
-rw-r--r--sw/source/ui/dialog/ascfldlg.src177
-rw-r--r--sw/source/ui/dialog/dialog.src62
-rw-r--r--sw/source/ui/dialog/docstdlg.cxx172
-rw-r--r--sw/source/ui/dialog/docstdlg.hrc47
-rw-r--r--sw/source/ui/dialog/docstdlg.src183
-rw-r--r--sw/source/ui/dialog/macassgn.cxx166
-rw-r--r--sw/source/ui/dialog/makefile.mk99
-rw-r--r--sw/source/ui/dialog/regionsw.cxx256
-rw-r--r--sw/source/ui/dialog/regionsw.hrc115
-rw-r--r--sw/source/ui/dialog/regionsw.src857
-rw-r--r--sw/source/ui/dialog/swabstdlg.cxx54
-rw-r--r--sw/source/ui/dialog/swdialmgr.cxx57
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx1674
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx588
-rw-r--r--sw/source/ui/dialog/swuiexp.cxx58
-rw-r--r--sw/source/ui/dialog/swwrtshitem.cxx54
-rw-r--r--sw/source/ui/dialog/uiregionsw.cxx2336
-rw-r--r--sw/source/ui/dialog/wordcountdialog.cxx98
-rw-r--r--sw/source/ui/dialog/wordcountdialog.hrc47
-rw-r--r--sw/source/ui/dialog/wordcountdialog.src139
-rw-r--r--sw/source/ui/dochdl/dochdl.src76
-rw-r--r--sw/source/ui/dochdl/gloshdl.cxx831
-rw-r--r--sw/source/ui/dochdl/makefile.mk65
-rw-r--r--sw/source/ui/dochdl/selglos.cxx78
-rw-r--r--sw/source/ui/dochdl/selglos.hrc31
-rw-r--r--sw/source/ui/dochdl/selglos.src111
-rw-r--r--sw/source/ui/dochdl/swdtflvr.cxx3765
-rw-r--r--sw/source/ui/docvw/AnchorOverlayObject.cxx469
-rw-r--r--sw/source/ui/docvw/AnchorOverlayObject.hxx146
-rw-r--r--sw/source/ui/docvw/AnnotationMenuButton.cxx224
-rw-r--r--sw/source/ui/docvw/AnnotationMenuButton.hxx66
-rw-r--r--sw/source/ui/docvw/AnnotationWin.cxx296
-rw-r--r--sw/source/ui/docvw/PostItMgr.cxx2032
-rw-r--r--sw/source/ui/docvw/ShadowOverlayObject.cxx270
-rw-r--r--sw/source/ui/docvw/ShadowOverlayObject.hxx83
-rw-r--r--sw/source/ui/docvw/SidebarTxtControl.cxx430
-rw-r--r--sw/source/ui/docvw/SidebarTxtControl.hxx90
-rw-r--r--sw/source/ui/docvw/SidebarTxtControlAcc.cxx319
-rw-r--r--sw/source/ui/docvw/SidebarTxtControlAcc.hxx59
-rw-r--r--sw/source/ui/docvw/SidebarWin.cxx1396
-rw-r--r--sw/source/ui/docvw/SidebarWinAcc.cxx164
-rw-r--r--sw/source/ui/docvw/SidebarWinAcc.hxx70
-rw-r--r--sw/source/ui/docvw/access.src102
-rw-r--r--sw/source/ui/docvw/annotation.hrc54
-rw-r--r--sw/source/ui/docvw/annotation.src68
-rw-r--r--sw/source/ui/docvw/docvw.hrc93
-rw-r--r--sw/source/ui/docvw/docvw.src296
-rw-r--r--sw/source/ui/docvw/edtdd.cxx522
-rw-r--r--sw/source/ui/docvw/edtwin.cxx5820
-rw-r--r--sw/source/ui/docvw/edtwin2.cxx595
-rw-r--r--sw/source/ui/docvw/edtwin3.cxx218
-rw-r--r--sw/source/ui/docvw/frmsidebarwincontainer.cxx219
-rw-r--r--sw/source/ui/docvw/frmsidebarwincontainer.hxx75
-rw-r--r--sw/source/ui/docvw/makefile.mk69
-rw-r--r--sw/source/ui/docvw/romenu.cxx525
-rw-r--r--sw/source/ui/docvw/romenu.hxx73
-rw-r--r--sw/source/ui/docvw/srcedtw.cxx1093
-rw-r--r--sw/source/ui/envelp/envelp.src86
-rw-r--r--sw/source/ui/envelp/envfmt.cxx582
-rw-r--r--sw/source/ui/envelp/envfmt.hrc80
-rw-r--r--sw/source/ui/envelp/envfmt.hxx108
-rw-r--r--sw/source/ui/envelp/envfmt.src314
-rw-r--r--sw/source/ui/envelp/envimg.cxx369
-rw-r--r--sw/source/ui/envelp/envlop.hrc63
-rw-r--r--sw/source/ui/envelp/envlop.src205
-rw-r--r--sw/source/ui/envelp/envlop1.cxx369
-rw-r--r--sw/source/ui/envelp/envprt.cxx212
-rw-r--r--sw/source/ui/envelp/envprt.hrc94
-rw-r--r--sw/source/ui/envelp/envprt.hxx93
-rw-r--r--sw/source/ui/envelp/envprt.src291
-rw-r--r--sw/source/ui/envelp/label.hrc126
-rw-r--r--sw/source/ui/envelp/label.src713
-rw-r--r--sw/source/ui/envelp/label1.cxx991
-rw-r--r--sw/source/ui/envelp/labelcfg.cxx290
-rw-r--r--sw/source/ui/envelp/labelexp.cxx271
-rw-r--r--sw/source/ui/envelp/labfmt.cxx654
-rw-r--r--sw/source/ui/envelp/labfmt.hrc87
-rw-r--r--sw/source/ui/envelp/labfmt.hxx177
-rw-r--r--sw/source/ui/envelp/labfmt.src358
-rw-r--r--sw/source/ui/envelp/labimg.cxx467
-rw-r--r--sw/source/ui/envelp/labimp.hxx120
-rw-r--r--sw/source/ui/envelp/labprt.cxx201
-rw-r--r--sw/source/ui/envelp/labprt.hrc57
-rw-r--r--sw/source/ui/envelp/labprt.hxx86
-rw-r--r--sw/source/ui/envelp/labprt.src150
-rw-r--r--sw/source/ui/envelp/mailmrge.cxx881
-rw-r--r--sw/source/ui/envelp/mailmrge.hrc90
-rw-r--r--sw/source/ui/envelp/mailmrge.src427
-rw-r--r--sw/source/ui/envelp/makefile.mk80
-rw-r--r--sw/source/ui/envelp/swuilabimp.hxx256
-rw-r--r--sw/source/ui/envelp/syncbtn.cxx98
-rw-r--r--sw/source/ui/fldui/DropDownFieldDialog.cxx136
-rw-r--r--sw/source/ui/fldui/DropDownFieldDialog.hrc37
-rw-r--r--sw/source/ui/fldui/DropDownFieldDialog.src122
-rw-r--r--sw/source/ui/fldui/FldRefTreeListBox.cxx84
-rw-r--r--sw/source/ui/fldui/FldRefTreeListBox.hxx46
-rw-r--r--sw/source/ui/fldui/changedb.cxx329
-rw-r--r--sw/source/ui/fldui/changedb.hrc60
-rw-r--r--sw/source/ui/fldui/changedb.src128
-rw-r--r--sw/source/ui/fldui/flddb.cxx526
-rw-r--r--sw/source/ui/fldui/flddb.hxx106
-rw-r--r--sw/source/ui/fldui/flddb.src198
-rw-r--r--sw/source/ui/fldui/flddinf.cxx497
-rw-r--r--sw/source/ui/fldui/flddinf.hxx88
-rw-r--r--sw/source/ui/fldui/flddinf.src138
-rw-r--r--sw/source/ui/fldui/flddok.cxx675
-rw-r--r--sw/source/ui/fldui/flddok.hxx91
-rw-r--r--sw/source/ui/fldui/flddok.src195
-rw-r--r--sw/source/ui/fldui/fldedt.cxx368
-rw-r--r--sw/source/ui/fldui/fldfunc.cxx683
-rw-r--r--sw/source/ui/fldui/fldfunc.hxx113
-rw-r--r--sw/source/ui/fldui/fldfunc.src269
-rw-r--r--sw/source/ui/fldui/fldmgr.cxx1785
-rw-r--r--sw/source/ui/fldui/fldpage.cxx402
-rw-r--r--sw/source/ui/fldui/fldpage.hxx105
-rw-r--r--sw/source/ui/fldui/fldref.cxx1067
-rw-r--r--sw/source/ui/fldui/fldref.hxx110
-rw-r--r--sw/source/ui/fldui/fldref.src145
-rw-r--r--sw/source/ui/fldui/fldtdlg.cxx358
-rw-r--r--sw/source/ui/fldui/fldtdlg.hrc167
-rw-r--r--sw/source/ui/fldui/fldtdlg.src118
-rw-r--r--sw/source/ui/fldui/fldui.src684
-rw-r--r--sw/source/ui/fldui/fldvar.cxx1315
-rw-r--r--sw/source/ui/fldui/fldvar.hxx118
-rw-r--r--sw/source/ui/fldui/fldvar.src236
-rw-r--r--sw/source/ui/fldui/fldwrap.cxx176
-rw-r--r--sw/source/ui/fldui/inpdlg.cxx205
-rw-r--r--sw/source/ui/fldui/inpdlg.hrc34
-rw-r--r--sw/source/ui/fldui/inpdlg.src131
-rw-r--r--sw/source/ui/fldui/javaedit.cxx358
-rw-r--r--sw/source/ui/fldui/javaedit.hrc51
-rw-r--r--sw/source/ui/fldui/javaedit.src172
-rw-r--r--sw/source/ui/fldui/makefile.mk94
-rw-r--r--sw/source/ui/fldui/xfldui.cxx182
-rw-r--r--sw/source/ui/fmtui/fmtui.src88
-rw-r--r--sw/source/ui/fmtui/makefile.mk51
-rw-r--r--sw/source/ui/fmtui/tmpdlg.cxx635
-rw-r--r--sw/source/ui/fmtui/tmpdlg.src380
-rw-r--r--sw/source/ui/frmdlg/colex.cxx587
-rw-r--r--sw/source/ui/frmdlg/colmgr.cxx158
-rw-r--r--sw/source/ui/frmdlg/column.cxx1361
-rw-r--r--sw/source/ui/frmdlg/column.hrc87
-rw-r--r--sw/source/ui/frmdlg/column.src404
-rw-r--r--sw/source/ui/frmdlg/cption.cxx641
-rw-r--r--sw/source/ui/frmdlg/cption.hrc78
-rw-r--r--sw/source/ui/frmdlg/cption.src329
-rw-r--r--sw/source/ui/frmdlg/frmdlg.cxx208
-rw-r--r--sw/source/ui/frmdlg/frmmgr.cxx616
-rw-r--r--sw/source/ui/frmdlg/frmpage.cxx3096
-rw-r--r--sw/source/ui/frmdlg/frmpage.hrc146
-rw-r--r--sw/source/ui/frmdlg/frmpage.src840
-rw-r--r--sw/source/ui/frmdlg/frmui.src133
-rw-r--r--sw/source/ui/frmdlg/makefile.mk79
-rw-r--r--sw/source/ui/frmdlg/pattern.cxx77
-rw-r--r--sw/source/ui/frmdlg/pattern.hrc46
-rw-r--r--sw/source/ui/frmdlg/uiborder.cxx81
-rw-r--r--sw/source/ui/frmdlg/wrap.cxx729
-rw-r--r--sw/source/ui/frmdlg/wrap.hrc66
-rw-r--r--sw/source/ui/frmdlg/wrap.src257
-rw-r--r--sw/source/ui/globdoc/globdoc.cxx91
-rw-r--r--sw/source/ui/globdoc/globdoc.src45
-rw-r--r--sw/source/ui/globdoc/makefile.mk51
-rw-r--r--sw/source/ui/inc/DropDownFieldDialog.hxx71
-rw-r--r--sw/source/ui/inc/SidebarWindowsConsts.hxx44
-rw-r--r--sw/source/ui/inc/SwSpellDialogChildWindow.hxx76
-rw-r--r--sw/source/ui/inc/SwXFilterOptions.hxx115
-rw-r--r--sw/source/ui/inc/abstract.hxx69
-rw-r--r--sw/source/ui/inc/actctrl.hxx99
-rw-r--r--sw/source/ui/inc/addrdlg.hxx46
-rw-r--r--sw/source/ui/inc/annotsh.hxx80
-rw-r--r--sw/source/ui/inc/app.hrc183
-rw-r--r--sw/source/ui/inc/ascfldlg.hxx78
-rw-r--r--sw/source/ui/inc/autoedit.hxx50
-rw-r--r--sw/source/ui/inc/barcfg.hxx50
-rw-r--r--sw/source/ui/inc/basesh.hxx130
-rw-r--r--sw/source/ui/inc/beziersh.hxx47
-rw-r--r--sw/source/ui/inc/bmpwin.hxx67
-rw-r--r--sw/source/ui/inc/bookctrl.hxx59
-rw-r--r--sw/source/ui/inc/bookmark.hxx89
-rw-r--r--sw/source/ui/inc/break.hxx86
-rw-r--r--sw/source/ui/inc/caption.hxx113
-rw-r--r--sw/source/ui/inc/cfgdesc.hxx71
-rw-r--r--sw/source/ui/inc/cfgid.h43
-rw-r--r--sw/source/ui/inc/cfgitems.hxx242
-rw-r--r--sw/source/ui/inc/changedb.hxx88
-rw-r--r--sw/source/ui/inc/chartins.hxx37
-rw-r--r--sw/source/ui/inc/chldwrap.hxx57
-rw-r--r--sw/source/ui/inc/chrdlg.hxx109
-rw-r--r--sw/source/ui/inc/cnttab.hxx85
-rw-r--r--sw/source/ui/inc/colex.hxx111
-rw-r--r--sw/source/ui/inc/colmgr.hxx143
-rw-r--r--sw/source/ui/inc/column.hxx209
-rw-r--r--sw/source/ui/inc/conarc.hxx59
-rw-r--r--sw/source/ui/inc/concustomshape.hxx74
-rw-r--r--sw/source/ui/inc/condedit.hxx53
-rw-r--r--sw/source/ui/inc/conform.hxx49
-rw-r--r--sw/source/ui/inc/conpoly.hxx57
-rw-r--r--sw/source/ui/inc/conrect.hxx62
-rw-r--r--sw/source/ui/inc/content.hxx225
-rw-r--r--sw/source/ui/inc/conttree.hxx341
-rw-r--r--sw/source/ui/inc/convert.hxx92
-rw-r--r--sw/source/ui/inc/cption.hxx129
-rw-r--r--sw/source/ui/inc/dbconfig.hxx56
-rw-r--r--sw/source/ui/inc/dbinsdlg.hxx183
-rw-r--r--sw/source/ui/inc/dbtree.hxx88
-rw-r--r--sw/source/ui/inc/dbui.hxx86
-rw-r--r--sw/source/ui/inc/dialmgr.hxx51
-rw-r--r--sw/source/ui/inc/docfnote.hxx53
-rw-r--r--sw/source/ui/inc/docstdlg.hxx85
-rw-r--r--sw/source/ui/inc/drawbase.hxx92
-rw-r--r--sw/source/ui/inc/drawsh.hxx55
-rw-r--r--sw/source/ui/inc/drformsh.hxx50
-rw-r--r--sw/source/ui/inc/drpcps.hxx117
-rw-r--r--sw/source/ui/inc/drwbassh.hxx67
-rw-r--r--sw/source/ui/inc/drwtxtsh.hxx88
-rw-r--r--sw/source/ui/inc/dselect.hxx54
-rw-r--r--sw/source/ui/inc/edtwin.hxx309
-rw-r--r--sw/source/ui/inc/envimg.hxx100
-rw-r--r--sw/source/ui/inc/envlop.hxx137
-rw-r--r--sw/source/ui/inc/fldedt.hxx64
-rw-r--r--sw/source/ui/inc/fldmgr.hxx235
-rw-r--r--sw/source/ui/inc/fldtdlg.hxx67
-rw-r--r--sw/source/ui/inc/fldwrap.hxx65
-rw-r--r--sw/source/ui/inc/fontcfg.hxx123
-rw-r--r--sw/source/ui/inc/formatclipboard.hxx72
-rw-r--r--sw/source/ui/inc/formedt.hxx102
-rw-r--r--sw/source/ui/inc/frmdlg.hxx67
-rw-r--r--sw/source/ui/inc/frmmgr.hxx196
-rw-r--r--sw/source/ui/inc/frmpage.hxx330
-rw-r--r--sw/source/ui/inc/frmsh.hxx53
-rw-r--r--sw/source/ui/inc/frmui.hrc144
-rw-r--r--sw/source/ui/inc/globals.h40
-rw-r--r--sw/source/ui/inc/globdoc.hrc64
-rw-r--r--sw/source/ui/inc/glosbib.hxx115
-rw-r--r--sw/source/ui/inc/glosdoc.hxx151
-rw-r--r--sw/source/ui/inc/gloshdl.hxx113
-rw-r--r--sw/source/ui/inc/gloslst.hxx91
-rw-r--r--sw/source/ui/inc/glossary.hxx187
-rw-r--r--sw/source/ui/inc/glshell.hxx116
-rw-r--r--sw/source/ui/inc/grfsh.hxx47
-rw-r--r--sw/source/ui/inc/hidfunc.h353
-rw-r--r--sw/source/ui/inc/hyp.hxx70
-rw-r--r--sw/source/ui/inc/idxmrk.hxx69
-rw-r--r--sw/source/ui/inc/imaildsplistener.hxx80
-rw-r--r--sw/source/ui/inc/initui.hxx82
-rw-r--r--sw/source/ui/inc/inpdlg.hxx77
-rw-r--r--sw/source/ui/inc/inputwin.hxx134
-rw-r--r--sw/source/ui/inc/insfnote.hxx96
-rw-r--r--sw/source/ui/inc/insrule.hxx68
-rw-r--r--sw/source/ui/inc/instable.hxx95
-rw-r--r--sw/source/ui/inc/javaedit.hxx112
-rw-r--r--sw/source/ui/inc/label.hxx101
-rw-r--r--sw/source/ui/inc/labelcfg.hxx61
-rw-r--r--sw/source/ui/inc/labimg.hxx132
-rw-r--r--sw/source/ui/inc/langhelper.hxx71
-rw-r--r--sw/source/ui/inc/linenum.hxx107
-rw-r--r--sw/source/ui/inc/listsh.hxx47
-rw-r--r--sw/source/ui/inc/macassgn.hxx56
-rw-r--r--sw/source/ui/inc/mailconfigpage.hxx99
-rw-r--r--sw/source/ui/inc/maildispatcher.hxx168
-rw-r--r--sw/source/ui/inc/mailmergechildwindow.hxx63
-rw-r--r--sw/source/ui/inc/mailmergehelper.hxx331
-rw-r--r--sw/source/ui/inc/mailmergewizard.hxx105
-rw-r--r--sw/source/ui/inc/mailmrge.hxx192
-rw-r--r--sw/source/ui/inc/makefile.mk42
-rw-r--r--sw/source/ui/inc/mediash.hxx46
-rw-r--r--sw/source/ui/inc/mergetbl.hxx57
-rw-r--r--sw/source/ui/inc/misc.hrc107
-rw-r--r--sw/source/ui/inc/mmconfigitem.hxx281
-rw-r--r--sw/source/ui/inc/multmrk.hxx73
-rw-r--r--sw/source/ui/inc/navicfg.hxx120
-rw-r--r--sw/source/ui/inc/navicont.hxx64
-rw-r--r--sw/source/ui/inc/navipi.hxx197
-rw-r--r--sw/source/ui/inc/num.hxx195
-rw-r--r--sw/source/ui/inc/numberingtypelistbox.hxx60
-rw-r--r--sw/source/ui/inc/numfmtlb.hxx89
-rw-r--r--sw/source/ui/inc/numpara.hxx98
-rw-r--r--sw/source/ui/inc/numprevw.hxx73
-rw-r--r--sw/source/ui/inc/olesh.hxx50
-rw-r--r--sw/source/ui/inc/olmenu.hxx93
-rw-r--r--sw/source/ui/inc/optcomp.hxx88
-rw-r--r--sw/source/ui/inc/optload.hxx199
-rw-r--r--sw/source/ui/inc/optpage.hxx479
-rw-r--r--sw/source/ui/inc/outline.hxx155
-rw-r--r--sw/source/ui/inc/pardlg.hxx42
-rw-r--r--sw/source/ui/inc/pattern.hxx46
-rw-r--r--sw/source/ui/inc/pgfnote.hxx89
-rw-r--r--sw/source/ui/inc/pggrid.hxx117
-rw-r--r--sw/source/ui/inc/popbox.hxx68
-rw-r--r--sw/source/ui/inc/popup.hrc58
-rw-r--r--sw/source/ui/inc/prcntfld.hxx99
-rw-r--r--sw/source/ui/inc/prtopt.hxx57
-rw-r--r--sw/source/ui/inc/pview.hxx336
-rw-r--r--sw/source/ui/inc/redlndlg.hxx189
-rw-r--r--sw/source/ui/inc/regionsw.hxx324
-rw-r--r--sw/source/ui/inc/ribbar.hrc135
-rw-r--r--sw/source/ui/inc/rowht.hxx62
-rw-r--r--sw/source/ui/inc/scroll.hxx72
-rw-r--r--sw/source/ui/inc/selglos.hxx71
-rw-r--r--sw/source/ui/inc/sharedconnection.hxx39
-rw-r--r--sw/source/ui/inc/shdwcrsr.hxx69
-rw-r--r--sw/source/ui/inc/shells.hrc112
-rw-r--r--sw/source/ui/inc/split.hxx71
-rw-r--r--sw/source/ui/inc/splittbl.hxx63
-rw-r--r--sw/source/ui/inc/srcedtw.hxx165
-rw-r--r--sw/source/ui/inc/srcview.hxx103
-rw-r--r--sw/source/ui/inc/srtdlg.hxx112
-rw-r--r--sw/source/ui/inc/stmenu.hxx83
-rw-r--r--sw/source/ui/inc/swcont.hxx116
-rw-r--r--sw/source/ui/inc/swdtflvr.hxx225
-rw-r--r--sw/source/ui/inc/swlbox.hxx126
-rw-r--r--sw/source/ui/inc/swmn_tmpl.hrc386
-rw-r--r--sw/source/ui/inc/swmodalredlineacceptdlg.hxx51
-rw-r--r--sw/source/ui/inc/swrenamexnameddlg.hxx83
-rw-r--r--sw/source/ui/inc/swtablerep.hxx96
-rw-r--r--sw/source/ui/inc/swuiccoll.hxx91
-rw-r--r--sw/source/ui/inc/swuicnttab.hxx519
-rw-r--r--sw/source/ui/inc/swuiidxmrk.hxx275
-rw-r--r--sw/source/ui/inc/swuipardlg.hxx54
-rw-r--r--sw/source/ui/inc/swvset.hxx43
-rw-r--r--sw/source/ui/inc/swwrtshitem.hxx55
-rw-r--r--sw/source/ui/inc/syncbtn.hxx71
-rw-r--r--sw/source/ui/inc/table.hrc50
-rw-r--r--sw/source/ui/inc/tabledlg.hxx58
-rw-r--r--sw/source/ui/inc/tablemgr.hxx98
-rw-r--r--sw/source/ui/inc/tabsh.hxx61
-rw-r--r--sw/source/ui/inc/tautofmt.hxx110
-rw-r--r--sw/source/ui/inc/tblctrl.hxx59
-rw-r--r--sw/source/ui/inc/tblnumfm.hxx46
-rw-r--r--sw/source/ui/inc/tbxanchr.hxx51
-rw-r--r--sw/source/ui/inc/textcontrolcombo.hxx67
-rw-r--r--sw/source/ui/inc/textsh.hxx89
-rw-r--r--sw/source/ui/inc/titlepage.hxx102
-rw-r--r--sw/source/ui/inc/tmpdlg.hxx66
-rw-r--r--sw/source/ui/inc/tmplctrl.hxx56
-rw-r--r--sw/source/ui/inc/toolbox_tmpl.hrc563
-rw-r--r--sw/source/ui/inc/toxmgr.hxx323
-rw-r--r--sw/source/ui/inc/uiborder.hxx51
-rw-r--r--sw/source/ui/inc/uiitems.hxx112
-rw-r--r--sw/source/ui/inc/uinums.hxx133
-rw-r--r--sw/source/ui/inc/uitool.hxx98
-rw-r--r--sw/source/ui/inc/uivwimp.hxx186
-rw-r--r--sw/source/ui/inc/unodispatch.hxx134
-rw-r--r--sw/source/ui/inc/unotools.hxx130
-rw-r--r--sw/source/ui/inc/unotxvw.hxx269
-rw-r--r--sw/source/ui/inc/usrpref.hxx279
-rw-r--r--sw/source/ui/inc/utlui.hrc194
-rw-r--r--sw/source/ui/inc/view.hxx695
-rw-r--r--sw/source/ui/inc/viewlayoutctrl.hxx56
-rw-r--r--sw/source/ui/inc/web.hrc74
-rw-r--r--sw/source/ui/inc/wformsh.hxx47
-rw-r--r--sw/source/ui/inc/wfrmsh.hxx50
-rw-r--r--sw/source/ui/inc/wgrfsh.hxx47
-rw-r--r--sw/source/ui/inc/wlistsh.hxx45
-rw-r--r--sw/source/ui/inc/wolesh.hxx50
-rw-r--r--sw/source/ui/inc/wordcountdialog.hxx70
-rw-r--r--sw/source/ui/inc/workctrl.hxx225
-rw-r--r--sw/source/ui/inc/wrap.hxx145
-rw-r--r--sw/source/ui/inc/wrtsh.hxx653
-rw-r--r--sw/source/ui/inc/wtabsh.hxx45
-rw-r--r--sw/source/ui/inc/wtextsh.hxx50
-rw-r--r--sw/source/ui/inc/wview.hxx50
-rw-r--r--sw/source/ui/inc/zoomctrl.hxx54
-rw-r--r--sw/source/ui/index/cntex.cxx480
-rw-r--r--sw/source/ui/index/cnttab.cxx4233
-rw-r--r--sw/source/ui/index/cnttab.hrc284
-rw-r--r--sw/source/ui/index/cnttab.src1278
-rw-r--r--sw/source/ui/index/idxmrk.cxx129
-rw-r--r--sw/source/ui/index/idxmrk.hrc108
-rw-r--r--sw/source/ui/index/idxmrk.src635
-rw-r--r--sw/source/ui/index/makefile.mk68
-rw-r--r--sw/source/ui/index/multmrk.cxx100
-rw-r--r--sw/source/ui/index/multmrk.hrc34
-rw-r--r--sw/source/ui/index/multmrk.src118
-rw-r--r--sw/source/ui/index/swuiidxmrk.cxx1857
-rw-r--r--sw/source/ui/index/toxmgr.cxx514
-rw-r--r--sw/source/ui/lingu/cvdata.mac19
-rw-r--r--sw/source/ui/lingu/hhcwrp.cxx812
-rw-r--r--sw/source/ui/lingu/hyp.cxx176
-rw-r--r--sw/source/ui/lingu/makefile.mk56
-rw-r--r--sw/source/ui/lingu/olmenu.cxx925
-rw-r--r--sw/source/ui/lingu/olmenu.hrc97
-rw-r--r--sw/source/ui/lingu/olmenu.src137
-rw-r--r--sw/source/ui/lingu/sdrhhcwrap.cxx233
-rw-r--r--sw/source/ui/lingu/sdrhhcwrap.hxx71
-rw-r--r--sw/source/ui/makefile.mk101
-rw-r--r--sw/source/ui/misc/autocorr.src29
-rw-r--r--sw/source/ui/misc/bookmark.cxx270
-rw-r--r--sw/source/ui/misc/bookmark.hrc34
-rw-r--r--sw/source/ui/misc/bookmark.src116
-rw-r--r--sw/source/ui/misc/docfnote.cxx490
-rw-r--r--sw/source/ui/misc/docfnote.hrc60
-rw-r--r--sw/source/ui/misc/docfnote.src537
-rw-r--r--sw/source/ui/misc/glosbib.cxx544
-rw-r--r--sw/source/ui/misc/glosbib.hrc41
-rw-r--r--sw/source/ui/misc/glosbib.src178
-rw-r--r--sw/source/ui/misc/glosdoc.cxx763
-rw-r--r--sw/source/ui/misc/glossary.cxx1223
-rw-r--r--sw/source/ui/misc/glossary.hrc91
-rw-r--r--sw/source/ui/misc/glossary.src378
-rw-r--r--sw/source/ui/misc/glshell.cxx288
-rw-r--r--sw/source/ui/misc/impfnote.hxx115
-rw-r--r--sw/source/ui/misc/insfnote.cxx355
-rw-r--r--sw/source/ui/misc/insfnote.hrc41
-rw-r--r--sw/source/ui/misc/insfnote.src167
-rw-r--r--sw/source/ui/misc/insrule.cxx226
-rw-r--r--sw/source/ui/misc/insrule.hrc35
-rw-r--r--sw/source/ui/misc/insrule.src114
-rw-r--r--sw/source/ui/misc/linenum.cxx297
-rw-r--r--sw/source/ui/misc/linenum.hrc50
-rw-r--r--sw/source/ui/misc/linenum.src268
-rw-r--r--sw/source/ui/misc/makefile.mk98
-rw-r--r--sw/source/ui/misc/num.cxx1101
-rw-r--r--sw/source/ui/misc/num.hrc55
-rw-r--r--sw/source/ui/misc/num.src362
-rw-r--r--sw/source/ui/misc/numberingtypelistbox.cxx164
-rw-r--r--sw/source/ui/misc/numberingtypelistbox.src98
-rw-r--r--sw/source/ui/misc/outline.cxx1237
-rw-r--r--sw/source/ui/misc/outline.hrc98
-rw-r--r--sw/source/ui/misc/outline.src373
-rw-r--r--sw/source/ui/misc/pgfnote.cxx348
-rw-r--r--sw/source/ui/misc/pgfnote.hrc44
-rw-r--r--sw/source/ui/misc/pgfnote.src192
-rw-r--r--sw/source/ui/misc/pggrid.cxx539
-rw-r--r--sw/source/ui/misc/pggrid.hrc54
-rw-r--r--sw/source/ui/misc/pggrid.src243
-rw-r--r--sw/source/ui/misc/redlndlg.cxx1273
-rw-r--r--sw/source/ui/misc/redlndlg.hrc38
-rw-r--r--sw/source/ui/misc/redlndlg.src148
-rw-r--r--sw/source/ui/misc/srtdlg.cxx479
-rw-r--r--sw/source/ui/misc/srtdlg.hrc65
-rw-r--r--sw/source/ui/misc/srtdlg.src384
-rw-r--r--sw/source/ui/misc/swmodalredlineacceptdlg.cxx119
-rw-r--r--sw/source/ui/misc/titlepage.cxx363
-rw-r--r--sw/source/ui/misc/titlepage.hrc50
-rw-r--r--sw/source/ui/misc/titlepage.src248
-rw-r--r--sw/source/ui/ribbar/conarc.cxx163
-rw-r--r--sw/source/ui/ribbar/concustomshape.cxx247
-rw-r--r--sw/source/ui/ribbar/conform.cxx146
-rw-r--r--sw/source/ui/ribbar/conpoly.cxx165
-rw-r--r--sw/source/ui/ribbar/conrect.cxx231
-rw-r--r--sw/source/ui/ribbar/drawbase.cxx740
-rw-r--r--sw/source/ui/ribbar/dselect.cxx104
-rw-r--r--sw/source/ui/ribbar/inputwin.cxx687
-rw-r--r--sw/source/ui/ribbar/inputwin.hrc84
-rw-r--r--sw/source/ui/ribbar/inputwin.src345
-rw-r--r--sw/source/ui/ribbar/makefile.mk71
-rw-r--r--sw/source/ui/ribbar/tblctrl.cxx96
-rw-r--r--sw/source/ui/ribbar/tblctrl.hrc35
-rw-r--r--sw/source/ui/ribbar/tblctrl.src94
-rw-r--r--sw/source/ui/ribbar/tbxanchr.cxx167
-rw-r--r--sw/source/ui/ribbar/tbxanchr.src107
-rw-r--r--sw/source/ui/ribbar/workctrl.cxx934
-rw-r--r--sw/source/ui/ribbar/workctrl.hrc88
-rw-r--r--sw/source/ui/ribbar/workctrl.src568
-rw-r--r--sw/source/ui/shells/annotsh.cxx1687
-rw-r--r--sw/source/ui/shells/basesh.cxx2871
-rw-r--r--sw/source/ui/shells/beziersh.cxx340
-rw-r--r--sw/source/ui/shells/drawdlg.cxx237
-rw-r--r--sw/source/ui/shells/drawsh.cxx473
-rw-r--r--sw/source/ui/shells/drformsh.cxx278
-rw-r--r--sw/source/ui/shells/drwbassh.cxx973
-rw-r--r--sw/source/ui/shells/drwtxtex.cxx999
-rw-r--r--sw/source/ui/shells/drwtxtsh.cxx839
-rw-r--r--sw/source/ui/shells/frmsh.cxx1132
-rw-r--r--sw/source/ui/shells/grfsh.cxx707
-rw-r--r--sw/source/ui/shells/grfshex.cxx154
-rw-r--r--sw/source/ui/shells/langhelper.cxx614
-rw-r--r--sw/source/ui/shells/listsh.cxx294
-rw-r--r--sw/source/ui/shells/makefile.mk94
-rw-r--r--sw/source/ui/shells/mediash.cxx211
-rw-r--r--sw/source/ui/shells/olesh.cxx70
-rw-r--r--sw/source/ui/shells/shells.src1139
-rw-r--r--sw/source/ui/shells/slotadd.cxx148
-rw-r--r--sw/source/ui/shells/tabsh.cxx1558
-rw-r--r--sw/source/ui/shells/textdrw.cxx138
-rw-r--r--sw/source/ui/shells/textfld.cxx888
-rw-r--r--sw/source/ui/shells/textglos.cxx145
-rw-r--r--sw/source/ui/shells/textidx.cxx258
-rw-r--r--sw/source/ui/shells/textsh.cxx1233
-rw-r--r--sw/source/ui/shells/textsh1.cxx1782
-rw-r--r--sw/source/ui/shells/textsh2.cxx307
-rw-r--r--sw/source/ui/shells/txtattr.cxx837
-rw-r--r--sw/source/ui/shells/txtcrsr.cxx362
-rw-r--r--sw/source/ui/shells/txtnum.cxx251
-rw-r--r--sw/source/ui/smartmenu/makefile.mk53
-rw-r--r--sw/source/ui/smartmenu/stmenu.cxx185
-rw-r--r--sw/source/ui/smartmenu/stmenu.hrc41
-rw-r--r--sw/source/ui/smartmenu/stmenu.src44
-rw-r--r--sw/source/ui/table/chartins.cxx287
-rw-r--r--sw/source/ui/table/chartins.hrc47
-rw-r--r--sw/source/ui/table/chartins.src124
-rw-r--r--sw/source/ui/table/colwd.cxx113
-rw-r--r--sw/source/ui/table/colwd.hrc36
-rw-r--r--sw/source/ui/table/colwd.src144
-rw-r--r--sw/source/ui/table/convert.cxx282
-rw-r--r--sw/source/ui/table/convert.hrc47
-rw-r--r--sw/source/ui/table/convert.src185
-rw-r--r--sw/source/ui/table/instable.cxx255
-rw-r--r--sw/source/ui/table/instable.hrc49
-rw-r--r--sw/source/ui/table/instable.src190
-rw-r--r--sw/source/ui/table/makefile.mk81
-rw-r--r--sw/source/ui/table/mergetbl.cxx64
-rw-r--r--sw/source/ui/table/mergetbl.hrc32
-rw-r--r--sw/source/ui/table/mergetbl.src116
-rw-r--r--sw/source/ui/table/rowht.cxx112
-rw-r--r--sw/source/ui/table/rowht.hrc34
-rw-r--r--sw/source/ui/table/rowht.src121
-rw-r--r--sw/source/ui/table/splittbl.cxx81
-rw-r--r--sw/source/ui/table/splittbl.hrc34
-rw-r--r--sw/source/ui/table/splittbl.src125
-rw-r--r--sw/source/ui/table/swtablerep.cxx232
-rw-r--r--sw/source/ui/table/table.src59
-rw-r--r--sw/source/ui/table/tabledlg.cxx1970
-rw-r--r--sw/source/ui/table/tabledlg.hrc110
-rw-r--r--sw/source/ui/table/tabledlg.src749
-rw-r--r--sw/source/ui/table/tablemgr.cxx384
-rw-r--r--sw/source/ui/table/tablepg.hxx236
-rw-r--r--sw/source/ui/table/tautofmt.cxx1050
-rw-r--r--sw/source/ui/table/tautofmt.hrc78
-rw-r--r--sw/source/ui/table/tautofmt.src296
-rw-r--r--sw/source/ui/uiview/formatclipboard.cxx616
-rw-r--r--sw/source/ui/uiview/makefile.mk90
-rw-r--r--sw/source/ui/uiview/pview.cxx2008
-rw-r--r--sw/source/ui/uiview/pview.hrc72
-rw-r--r--sw/source/ui/uiview/pview.src197
-rw-r--r--sw/source/ui/uiview/scroll.cxx163
-rw-r--r--sw/source/ui/uiview/srcview.cxx877
-rw-r--r--sw/source/ui/uiview/swcli.cxx172
-rw-r--r--sw/source/ui/uiview/uivwimp.cxx320
-rw-r--r--sw/source/ui/uiview/view.cxx1917
-rw-r--r--sw/source/ui/uiview/view.hrc90
-rw-r--r--sw/source/ui/uiview/view.src376
-rw-r--r--sw/source/ui/uiview/view0.cxx545
-rw-r--r--sw/source/ui/uiview/view1.cxx194
-rw-r--r--sw/source/ui/uiview/view2.cxx2451
-rw-r--r--sw/source/ui/uiview/viewcoll.cxx100
-rw-r--r--sw/source/ui/uiview/viewdlg.cxx100
-rw-r--r--sw/source/ui/uiview/viewdlg2.cxx243
-rw-r--r--sw/source/ui/uiview/viewdraw.cxx785
-rw-r--r--sw/source/ui/uiview/viewfunc.hxx71
-rw-r--r--sw/source/ui/uiview/viewling.cxx983
-rw-r--r--sw/source/ui/uiview/viewmdi.cxx693
-rw-r--r--sw/source/ui/uiview/viewport.cxx1343
-rw-r--r--sw/source/ui/uiview/viewprt.cxx369
-rw-r--r--sw/source/ui/uiview/viewsrch.cxx812
-rw-r--r--sw/source/ui/uiview/viewstat.cxx511
-rw-r--r--sw/source/ui/uiview/viewtab.cxx1835
-rw-r--r--sw/source/ui/uno/RefreshListenerContainer.cxx61
-rw-r--r--sw/source/ui/uno/SwXDocumentSettings.cxx1096
-rw-r--r--sw/source/ui/uno/SwXDocumentSettings.hxx108
-rw-r--r--sw/source/ui/uno/SwXFilterOptions.cxx192
-rw-r--r--sw/source/ui/uno/SwXPrintPreviewSettings.cxx371
-rw-r--r--sw/source/ui/uno/SwXPrintPreviewSettings.hxx90
-rw-r--r--sw/source/ui/uno/detreg.cxx111
-rw-r--r--sw/source/ui/uno/dlelstnr.cxx189
-rw-r--r--sw/source/ui/uno/makefile.mk82
-rw-r--r--sw/source/ui/uno/swdet2.cxx124
-rw-r--r--sw/source/ui/uno/swdetect.cxx487
-rw-r--r--sw/source/ui/uno/swdetect.hxx98
-rw-r--r--sw/source/ui/uno/unoatxt.cxx1148
-rw-r--r--sw/source/ui/uno/unodefaults.cxx65
-rw-r--r--sw/source/ui/uno/unodefaults.hxx50
-rw-r--r--sw/source/ui/uno/unodispatch.cxx405
-rw-r--r--sw/source/ui/uno/unodoc.cxx130
-rw-r--r--sw/source/ui/uno/unofreg.cxx479
-rw-r--r--sw/source/ui/uno/unomailmerge.cxx1253
-rw-r--r--sw/source/ui/uno/unomod.cxx1026
-rw-r--r--sw/source/ui/uno/unomodule.cxx174
-rw-r--r--sw/source/ui/uno/unomodule.hxx101
-rw-r--r--sw/source/ui/uno/unotxdoc.cxx3893
-rw-r--r--sw/source/ui/uno/unotxvw.cxx2023
-rw-r--r--sw/source/ui/utlui/attrdesc.cxx1350
-rw-r--r--sw/source/ui/utlui/attrdesc.hrc123
-rw-r--r--sw/source/ui/utlui/attrdesc.src384
-rw-r--r--sw/source/ui/utlui/bookctrl.cxx149
-rw-r--r--sw/source/ui/utlui/condedit.cxx100
-rw-r--r--sw/source/ui/utlui/content.cxx3261
-rw-r--r--sw/source/ui/utlui/glbltree.cxx1416
-rw-r--r--sw/source/ui/utlui/gloslst.cxx506
-rw-r--r--sw/source/ui/utlui/gloslst.hrc38
-rw-r--r--sw/source/ui/utlui/gloslst.src108
-rw-r--r--sw/source/ui/utlui/initui.cxx297
-rw-r--r--sw/source/ui/utlui/initui.hrc66
-rw-r--r--sw/source/ui/utlui/initui.src519
-rw-r--r--sw/source/ui/utlui/makefile.mk79
-rw-r--r--sw/source/ui/utlui/navicfg.cxx134
-rw-r--r--sw/source/ui/utlui/navipi.cxx1537
-rw-r--r--sw/source/ui/utlui/navipi.hrc91
-rw-r--r--sw/source/ui/utlui/navipi.src536
-rw-r--r--sw/source/ui/utlui/numfmtlb.cxx512
-rw-r--r--sw/source/ui/utlui/poolfmt.src745
-rw-r--r--sw/source/ui/utlui/prcntfld.cxx308
-rw-r--r--sw/source/ui/utlui/shdwcrsr.cxx137
-rw-r--r--sw/source/ui/utlui/swrenamexnameddlg.cxx142
-rw-r--r--sw/source/ui/utlui/textcontrolcombo.cxx115
-rw-r--r--sw/source/ui/utlui/tmplctrl.cxx156
-rw-r--r--sw/source/ui/utlui/uiitems.cxx311
-rw-r--r--sw/source/ui/utlui/uitool.cxx760
-rw-r--r--sw/source/ui/utlui/unotools.cxx492
-rw-r--r--sw/source/ui/utlui/unotools.hrc41
-rw-r--r--sw/source/ui/utlui/unotools.src130
-rw-r--r--sw/source/ui/utlui/utlui.src478
-rw-r--r--sw/source/ui/utlui/viewlayoutctrl.cxx198
-rw-r--r--sw/source/ui/utlui/zoomctrl.cxx87
-rw-r--r--sw/source/ui/vba/makefile.mk132
-rw-r--r--sw/source/ui/vba/service.cxx97
-rw-r--r--sw/source/ui/vba/vbaaddin.cxx106
-rw-r--r--sw/source/ui/vba/vbaaddin.hxx62
-rw-r--r--sw/source/ui/vba/vbaaddins.cxx110
-rw-r--r--sw/source/ui/vba/vbaaddins.hxx55
-rw-r--r--sw/source/ui/vba/vbaapplication.cxx217
-rw-r--r--sw/source/ui/vba/vbaapplication.hxx78
-rw-r--r--sw/source/ui/vba/vbaautotextentry.cxx152
-rw-r--r--sw/source/ui/vba/vbaautotextentry.hxx83
-rw-r--r--sw/source/ui/vba/vbabookmark.cxx114
-rw-r--r--sw/source/ui/vba/vbabookmark.hxx68
-rw-r--r--sw/source/ui/vba/vbabookmarks.cxx238
-rw-r--r--sw/source/ui/vba/vbabookmarks.hxx78
-rw-r--r--sw/source/ui/vba/vbaborders.cxx387
-rw-r--r--sw/source/ui/vba/vbaborders.hxx65
-rw-r--r--sw/source/ui/vba/vbacell.cxx122
-rw-r--r--sw/source/ui/vba/vbacell.hxx70
-rw-r--r--sw/source/ui/vba/vbacells.cxx226
-rw-r--r--sw/source/ui/vba/vbacells.hxx78
-rw-r--r--sw/source/ui/vba/vbacheckbox.cxx100
-rw-r--r--sw/source/ui/vba/vbacheckbox.hxx61
-rw-r--r--sw/source/ui/vba/vbacolumn.cxx203
-rw-r--r--sw/source/ui/vba/vbacolumn.hxx71
-rw-r--r--sw/source/ui/vba/vbacolumns.cxx163
-rw-r--r--sw/source/ui/vba/vbacolumns.hxx78
-rw-r--r--sw/source/ui/vba/vbadialog.cxx81
-rw-r--r--sw/source/ui/vba/vbadialog.hxx53
-rw-r--r--sw/source/ui/vba/vbadialogs.cxx63
-rw-r--r--sw/source/ui/vba/vbadialogs.hxx56
-rw-r--r--sw/source/ui/vba/vbadocument.cxx545
-rw-r--r--sw/source/ui/vba/vbadocument.hxx102
-rw-r--r--sw/source/ui/vba/vbadocumentproperties.cxx767
-rw-r--r--sw/source/ui/vba/vbadocumentproperties.hxx70
-rw-r--r--sw/source/ui/vba/vbadocuments.cxx200
-rw-r--r--sw/source/ui/vba/vbadocuments.hxx69
-rw-r--r--sw/source/ui/vba/vbaeventshelper.cxx111
-rw-r--r--sw/source/ui/vba/vbaeventshelper.hxx56
-rw-r--r--sw/source/ui/vba/vbafield.cxx595
-rw-r--r--sw/source/ui/vba/vbafield.hxx82
-rw-r--r--sw/source/ui/vba/vbafind.cxx430
-rw-r--r--sw/source/ui/vba/vbafind.hxx106
-rw-r--r--sw/source/ui/vba/vbafont.cxx219
-rw-r--r--sw/source/ui/vba/vbafont.hxx34
-rw-r--r--sw/source/ui/vba/vbaformfield.cxx141
-rw-r--r--sw/source/ui/vba/vbaformfield.hxx64
-rw-r--r--sw/source/ui/vba/vbaformfields.cxx208
-rw-r--r--sw/source/ui/vba/vbaformfields.hxx63
-rw-r--r--sw/source/ui/vba/vbaframe.cxx77
-rw-r--r--sw/source/ui/vba/vbaframe.hxx60
-rw-r--r--sw/source/ui/vba/vbaframes.cxx112
-rw-r--r--sw/source/ui/vba/vbaframes.hxx64
-rw-r--r--sw/source/ui/vba/vbaglobals.cxx201
-rw-r--r--sw/source/ui/vba/vbaglobals.hxx84
-rw-r--r--sw/source/ui/vba/vbaheaderfooter.cxx114
-rw-r--r--sw/source/ui/vba/vbaheaderfooter.hxx63
-rw-r--r--sw/source/ui/vba/vbaheaderfooterhelper.cxx210
-rw-r--r--sw/source/ui/vba/vbaheaderfooterhelper.hxx58
-rw-r--r--sw/source/ui/vba/vbaheadersfooters.cxx153
-rw-r--r--sw/source/ui/vba/vbaheadersfooters.hxx65
-rw-r--r--sw/source/ui/vba/vbainformationhelper.cxx71
-rw-r--r--sw/source/ui/vba/vbainformationhelper.hxx46
-rw-r--r--sw/source/ui/vba/vbalistformat.cxx123
-rw-r--r--sw/source/ui/vba/vbalistformat.hxx63
-rw-r--r--sw/source/ui/vba/vbalistgalleries.cxx118
-rw-r--r--sw/source/ui/vba/vbalistgalleries.hxx64
-rw-r--r--sw/source/ui/vba/vbalistgallery.cxx75
-rw-r--r--sw/source/ui/vba/vbalistgallery.hxx61
-rw-r--r--sw/source/ui/vba/vbalisthelper.cxx709
-rw-r--r--sw/source/ui/vba/vbalisthelper.hxx77
-rw-r--r--sw/source/ui/vba/vbalistlevel.cxx403
-rw-r--r--sw/source/ui/vba/vbalistlevel.hxx84
-rw-r--r--sw/source/ui/vba/vbalistlevels.cxx121
-rw-r--r--sw/source/ui/vba/vbalistlevels.hxx65
-rw-r--r--sw/source/ui/vba/vbalisttemplate.cxx82
-rw-r--r--sw/source/ui/vba/vbalisttemplate.hxx63
-rw-r--r--sw/source/ui/vba/vbalisttemplates.cxx115
-rw-r--r--sw/source/ui/vba/vbalisttemplates.hxx65
-rw-r--r--sw/source/ui/vba/vbaoptions.cxx287
-rw-r--r--sw/source/ui/vba/vbaoptions.hxx90
-rw-r--r--sw/source/ui/vba/vbapagesetup.cxx275
-rw-r--r--sw/source/ui/vba/vbapagesetup.hxx70
-rw-r--r--sw/source/ui/vba/vbapalette.cxx78
-rw-r--r--sw/source/ui/vba/vbapalette.hxx18
-rw-r--r--sw/source/ui/vba/vbapane.cxx78
-rw-r--r--sw/source/ui/vba/vbapane.hxx57
-rw-r--r--sw/source/ui/vba/vbapanes.cxx127
-rw-r--r--sw/source/ui/vba/vbapanes.hxx60
-rw-r--r--sw/source/ui/vba/vbaparagraph.cxx191
-rw-r--r--sw/source/ui/vba/vbaparagraph.hxx86
-rw-r--r--sw/source/ui/vba/vbaparagraphformat.cxx579
-rw-r--r--sw/source/ui/vba/vbaparagraphformat.hxx98
-rw-r--r--sw/source/ui/vba/vbarange.cxx504
-rw-r--r--sw/source/ui/vba/vbarange.hxx104
-rw-r--r--sw/source/ui/vba/vbarangehelper.cxx200
-rw-r--r--sw/source/ui/vba/vbarangehelper.hxx49
-rw-r--r--sw/source/ui/vba/vbareplacement.cxx79
-rw-r--r--sw/source/ui/vba/vbareplacement.hxx60
-rw-r--r--sw/source/ui/vba/vbarevision.cxx107
-rw-r--r--sw/source/ui/vba/vbarevision.hxx63
-rw-r--r--sw/source/ui/vba/vbarevisions.cxx191
-rw-r--r--sw/source/ui/vba/vbarevisions.hxx69
-rw-r--r--sw/source/ui/vba/vbarow.cxx138
-rw-r--r--sw/source/ui/vba/vbarow.hxx72
-rw-r--r--sw/source/ui/vba/vbarows.cxx371
-rw-r--r--sw/source/ui/vba/vbarows.hxx90
-rw-r--r--sw/source/ui/vba/vbasection.cxx96
-rw-r--r--sw/source/ui/vba/vbasection.hxx62
-rw-r--r--sw/source/ui/vba/vbasections.cxx202
-rw-r--r--sw/source/ui/vba/vbasections.hxx64
-rw-r--r--sw/source/ui/vba/vbaselection.cxx1203
-rw-r--r--sw/source/ui/vba/vbaselection.hxx121
-rw-r--r--sw/source/ui/vba/vbastyle.cxx285
-rw-r--r--sw/source/ui/vba/vbastyle.hxx86
-rw-r--r--sw/source/ui/vba/vbastyles.cxx393
-rw-r--r--sw/source/ui/vba/vbastyles.hxx54
-rw-r--r--sw/source/ui/vba/vbasystem.cxx295
-rw-r--r--sw/source/ui/vba/vbasystem.hxx74
-rw-r--r--sw/source/ui/vba/vbatable.cxx121
-rw-r--r--sw/source/ui/vba/vbatable.hxx34
-rw-r--r--sw/source/ui/vba/vbatablehelper.cxx309
-rw-r--r--sw/source/ui/vba/vbatablehelper.hxx73
-rw-r--r--sw/source/ui/vba/vbatableofcontents.cxx127
-rw-r--r--sw/source/ui/vba/vbatableofcontents.hxx73
-rw-r--r--sw/source/ui/vba/vbatables.cxx224
-rw-r--r--sw/source/ui/vba/vbatables.hxx31
-rw-r--r--sw/source/ui/vba/vbatablesofcontents.cxx200
-rw-r--r--sw/source/ui/vba/vbatablesofcontents.hxx67
-rw-r--r--sw/source/ui/vba/vbatabstop.cxx65
-rw-r--r--sw/source/ui/vba/vbatabstop.hxx57
-rw-r--r--sw/source/ui/vba/vbatabstops.cxx283
-rw-r--r--sw/source/ui/vba/vbatabstops.hxx68
-rw-r--r--sw/source/ui/vba/vbatemplate.cxx149
-rw-r--r--sw/source/ui/vba/vbatemplate.hxx56
-rw-r--r--sw/source/ui/vba/vbavariable.cxx107
-rw-r--r--sw/source/ui/vba/vbavariable.hxx62
-rw-r--r--sw/source/ui/vba/vbavariables.cxx105
-rw-r--r--sw/source/ui/vba/vbavariables.hxx64
-rw-r--r--sw/source/ui/vba/vbaview.cxx404
-rw-r--r--sw/source/ui/vba/vbaview.hxx71
-rw-r--r--sw/source/ui/vba/vbawindow.cxx154
-rw-r--r--sw/source/ui/vba/vbawindow.hxx62
-rw-r--r--sw/source/ui/vba/vbawrapformat.cxx254
-rw-r--r--sw/source/ui/vba/vbawrapformat.hxx72
-rw-r--r--sw/source/ui/vba/wordvbahelper.cxx191
-rw-r--r--sw/source/ui/vba/wordvbahelper.hxx72
-rw-r--r--sw/source/ui/web/makefile.mk59
-rw-r--r--sw/source/ui/web/wdocsh.cxx114
-rw-r--r--sw/source/ui/web/web.src345
-rw-r--r--sw/source/ui/web/wformsh.cxx71
-rw-r--r--sw/source/ui/web/wfrmsh.cxx97
-rw-r--r--sw/source/ui/web/wgrfsh.cxx76
-rw-r--r--sw/source/ui/web/wlistsh.cxx69
-rw-r--r--sw/source/ui/web/wolesh.cxx70
-rw-r--r--sw/source/ui/web/wtabsh.cxx78
-rw-r--r--sw/source/ui/web/wtextsh.cxx99
-rw-r--r--sw/source/ui/web/wview.cxx339
-rw-r--r--sw/source/ui/wrtsh/delete.cxx568
-rw-r--r--sw/source/ui/wrtsh/makefile.mk62
-rw-r--r--sw/source/ui/wrtsh/move.cxx691
-rw-r--r--sw/source/ui/wrtsh/select.cxx1074
-rw-r--r--sw/source/ui/wrtsh/wrtsh.hrc48
-rw-r--r--sw/source/ui/wrtsh/wrtsh.src52
-rw-r--r--sw/source/ui/wrtsh/wrtsh1.cxx1867
-rw-r--r--sw/source/ui/wrtsh/wrtsh2.cxx493
-rw-r--r--sw/source/ui/wrtsh/wrtsh3.cxx248
-rw-r--r--sw/source/ui/wrtsh/wrtsh4.cxx302
-rw-r--r--sw/source/ui/wrtsh/wrtundo.cxx182
-rw-r--r--sw/uiconfig/layout/delzip1
-rw-r--r--sw/uiconfig/layout/layout.mk33
-rw-r--r--sw/uiconfig/layout/makefile.mk46
-rw-r--r--sw/uiconfig/layout/wordcount.xml50
-rw-r--r--sw/uiconfig/sglobal/menubar/menubar.xml461
-rw-r--r--sw/uiconfig/sglobal/statusbar/statusbar.xml15
-rw-r--r--sw/uiconfig/sglobal/toolbar/alignmentbar.xml11
-rw-r--r--sw/uiconfig/sglobal/toolbar/arrowshapes.xml34
-rw-r--r--sw/uiconfig/sglobal/toolbar/basicshapes.xml29
-rw-r--r--sw/uiconfig/sglobal/toolbar/bezierobjectbar.xml20
-rw-r--r--sw/uiconfig/sglobal/toolbar/calloutshapes.xml11
-rw-r--r--sw/uiconfig/sglobal/toolbar/colorbar.xml15
-rw-r--r--sw/uiconfig/sglobal/toolbar/drawbar.xml34
-rw-r--r--sw/uiconfig/sglobal/toolbar/drawingobjectbar.xml40
-rw-r--r--sw/uiconfig/sglobal/toolbar/drawtextobjectbar.xml34
-rw-r--r--sw/uiconfig/sglobal/toolbar/extrusionobjectbar.xml16
-rw-r--r--sw/uiconfig/sglobal/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/sglobal/toolbar/flowchartshapes.xml36
-rw-r--r--sw/uiconfig/sglobal/toolbar/fontworkobjectbar.xml11
-rw-r--r--sw/uiconfig/sglobal/toolbar/fontworkshapetype.xml38
-rw-r--r--sw/uiconfig/sglobal/toolbar/formcontrols.xml26
-rw-r--r--sw/uiconfig/sglobal/toolbar/formdesign.xml31
-rw-r--r--sw/uiconfig/sglobal/toolbar/formsfilterbar.xml8
-rw-r--r--sw/uiconfig/sglobal/toolbar/formsnavigationbar.xml32
-rw-r--r--sw/uiconfig/sglobal/toolbar/formtextobjectbar.xml28
-rw-r--r--sw/uiconfig/sglobal/toolbar/frameobjectbar.xml34
-rw-r--r--sw/uiconfig/sglobal/toolbar/fullscreenbar.xml5
-rw-r--r--sw/uiconfig/sglobal/toolbar/graffilterbar.xml17
-rw-r--r--sw/uiconfig/sglobal/toolbar/graphicobjectbar.xml18
-rw-r--r--sw/uiconfig/sglobal/toolbar/insertbar.xml30
-rw-r--r--sw/uiconfig/sglobal/toolbar/insertobjectbar.xml7
-rw-r--r--sw/uiconfig/sglobal/toolbar/mediaobjectbar.xml7
-rw-r--r--sw/uiconfig/sglobal/toolbar/moreformcontrols.xml23
-rw-r--r--sw/uiconfig/sglobal/toolbar/numobjectbar.xml23
-rw-r--r--sw/uiconfig/sglobal/toolbar/oleobjectbar.xml30
-rw-r--r--sw/uiconfig/sglobal/toolbar/optimizetablebar.xml8
-rw-r--r--sw/uiconfig/sglobal/toolbar/previewobjectbar.xml24
-rw-r--r--sw/uiconfig/sglobal/toolbar/standardbar.xml42
-rw-r--r--sw/uiconfig/sglobal/toolbar/starshapes.xml17
-rw-r--r--sw/uiconfig/sglobal/toolbar/symbolshapes.xml24
-rw-r--r--sw/uiconfig/sglobal/toolbar/tableobjectbar.xml35
-rw-r--r--sw/uiconfig/sglobal/toolbar/textobjectbar.xml44
-rw-r--r--sw/uiconfig/sglobal/toolbar/toolbar.xml13
-rw-r--r--sw/uiconfig/sglobal/toolbar/viewerbar.xml18
-rw-r--r--sw/uiconfig/sweb/menubar/menubar.xml390
-rw-r--r--sw/uiconfig/sweb/statusbar/statusbar.xml14
-rw-r--r--sw/uiconfig/sweb/toolbar/arrowshapes.xml34
-rw-r--r--sw/uiconfig/sweb/toolbar/basicshapes.xml29
-rw-r--r--sw/uiconfig/sweb/toolbar/bezierobjectbar.xml20
-rw-r--r--sw/uiconfig/sweb/toolbar/calloutshapes.xml11
-rw-r--r--sw/uiconfig/sweb/toolbar/colorbar.xml17
-rw-r--r--sw/uiconfig/sweb/toolbar/drawingobjectbar.xml39
-rw-r--r--sw/uiconfig/sweb/toolbar/drawtextobjectbar.xml34
-rw-r--r--sw/uiconfig/sweb/toolbar/extrusionobjectbar.xml16
-rw-r--r--sw/uiconfig/sweb/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/sweb/toolbar/flowchartshapes.xml36
-rw-r--r--sw/uiconfig/sweb/toolbar/fontworkobjectbar.xml11
-rw-r--r--sw/uiconfig/sweb/toolbar/fontworkshapetype.xml38
-rw-r--r--sw/uiconfig/sweb/toolbar/formcontrols.xml25
-rw-r--r--sw/uiconfig/sweb/toolbar/formdesign.xml31
-rw-r--r--sw/uiconfig/sweb/toolbar/formsfilterbar.xml8
-rw-r--r--sw/uiconfig/sweb/toolbar/formsnavigationbar.xml32
-rw-r--r--sw/uiconfig/sweb/toolbar/formtextobjectbar.xml28
-rw-r--r--sw/uiconfig/sweb/toolbar/frameobjectbar.xml34
-rw-r--r--sw/uiconfig/sweb/toolbar/fullscreenbar.xml5
-rw-r--r--sw/uiconfig/sweb/toolbar/graffilterbar.xml17
-rw-r--r--sw/uiconfig/sweb/toolbar/graphicobjectbar.xml26
-rw-r--r--sw/uiconfig/sweb/toolbar/insertbar.xml25
-rw-r--r--sw/uiconfig/sweb/toolbar/mediaobjectbar.xml7
-rw-r--r--sw/uiconfig/sweb/toolbar/numobjectbar.xml23
-rw-r--r--sw/uiconfig/sweb/toolbar/oleobjectbar.xml30
-rw-r--r--sw/uiconfig/sweb/toolbar/optimizetablebar.xml8
-rw-r--r--sw/uiconfig/sweb/toolbar/previewobjectbar.xml24
-rw-r--r--sw/uiconfig/sweb/toolbar/standardbar.xml45
-rw-r--r--sw/uiconfig/sweb/toolbar/starshapes.xml17
-rw-r--r--sw/uiconfig/sweb/toolbar/symbolshapes.xml24
-rw-r--r--sw/uiconfig/sweb/toolbar/tableobjectbar.xml35
-rw-r--r--sw/uiconfig/sweb/toolbar/textobjectbar.xml44
-rw-r--r--sw/uiconfig/sweb/toolbar/toolbar.xml11
-rw-r--r--sw/uiconfig/sweb/toolbar/viewerbar.xml18
-rw-r--r--sw/uiconfig/swform/menubar/menubar.xml456
-rw-r--r--sw/uiconfig/swform/statusbar/statusbar.xml14
-rw-r--r--sw/uiconfig/swform/toolbar/alignmentbar.xml11
-rw-r--r--sw/uiconfig/swform/toolbar/arrowshapes.xml34
-rw-r--r--sw/uiconfig/swform/toolbar/basicshapes.xml29
-rw-r--r--sw/uiconfig/swform/toolbar/bezierobjectbar.xml20
-rw-r--r--sw/uiconfig/swform/toolbar/calloutshapes.xml11
-rw-r--r--sw/uiconfig/swform/toolbar/colorbar.xml15
-rw-r--r--sw/uiconfig/swform/toolbar/drawbar.xml34
-rw-r--r--sw/uiconfig/swform/toolbar/drawingobjectbar.xml40
-rw-r--r--sw/uiconfig/swform/toolbar/drawtextobjectbar.xml34
-rw-r--r--sw/uiconfig/swform/toolbar/extrusionobjectbar.xml16
-rw-r--r--sw/uiconfig/swform/toolbar/flowchartshapes.xml36
-rw-r--r--sw/uiconfig/swform/toolbar/fontworkobjectbar.xml11
-rw-r--r--sw/uiconfig/swform/toolbar/fontworkshapetype.xml38
-rw-r--r--sw/uiconfig/swform/toolbar/formcontrols.xml26
-rw-r--r--sw/uiconfig/swform/toolbar/formdesign.xml33
-rw-r--r--sw/uiconfig/swform/toolbar/formsfilterbar.xml8
-rw-r--r--sw/uiconfig/swform/toolbar/formsnavigationbar.xml33
-rw-r--r--sw/uiconfig/swform/toolbar/formtextobjectbar.xml28
-rw-r--r--sw/uiconfig/swform/toolbar/frameobjectbar.xml34
-rw-r--r--sw/uiconfig/swform/toolbar/fullscreenbar.xml5
-rw-r--r--sw/uiconfig/swform/toolbar/graffilterbar.xml17
-rw-r--r--sw/uiconfig/swform/toolbar/graphicobjectbar.xml18
-rw-r--r--sw/uiconfig/swform/toolbar/insertbar.xml29
-rw-r--r--sw/uiconfig/swform/toolbar/insertobjectbar.xml7
-rw-r--r--sw/uiconfig/swform/toolbar/mediaobjectbar.xml7
-rw-r--r--sw/uiconfig/swform/toolbar/moreformcontrols.xml23
-rw-r--r--sw/uiconfig/swform/toolbar/numobjectbar.xml23
-rw-r--r--sw/uiconfig/swform/toolbar/oleobjectbar.xml30
-rw-r--r--sw/uiconfig/swform/toolbar/optimizetablebar.xml8
-rw-r--r--sw/uiconfig/swform/toolbar/previewobjectbar.xml24
-rw-r--r--sw/uiconfig/swform/toolbar/standardbar.xml42
-rw-r--r--sw/uiconfig/swform/toolbar/starshapes.xml17
-rw-r--r--sw/uiconfig/swform/toolbar/symbolshapes.xml24
-rw-r--r--sw/uiconfig/swform/toolbar/tableobjectbar.xml35
-rw-r--r--sw/uiconfig/swform/toolbar/textobjectbar.xml44
-rw-r--r--sw/uiconfig/swform/toolbar/toolbar.xml13
-rw-r--r--sw/uiconfig/swform/toolbar/viewerbar.xml18
-rw-r--r--sw/uiconfig/swreport/menubar/menubar.xml456
-rw-r--r--sw/uiconfig/swreport/statusbar/statusbar.xml14
-rw-r--r--sw/uiconfig/swreport/toolbar/alignmentbar.xml11
-rw-r--r--sw/uiconfig/swreport/toolbar/arrowshapes.xml34
-rw-r--r--sw/uiconfig/swreport/toolbar/basicshapes.xml29
-rw-r--r--sw/uiconfig/swreport/toolbar/bezierobjectbar.xml20
-rw-r--r--sw/uiconfig/swreport/toolbar/calloutshapes.xml11
-rw-r--r--sw/uiconfig/swreport/toolbar/colorbar.xml15
-rw-r--r--sw/uiconfig/swreport/toolbar/drawbar.xml34
-rw-r--r--sw/uiconfig/swreport/toolbar/drawingobjectbar.xml40
-rw-r--r--sw/uiconfig/swreport/toolbar/drawtextobjectbar.xml34
-rw-r--r--sw/uiconfig/swreport/toolbar/extrusionobjectbar.xml16
-rw-r--r--sw/uiconfig/swreport/toolbar/flowchartshapes.xml36
-rw-r--r--sw/uiconfig/swreport/toolbar/fontworkobjectbar.xml11
-rw-r--r--sw/uiconfig/swreport/toolbar/fontworkshapetype.xml38
-rw-r--r--sw/uiconfig/swreport/toolbar/formcontrols.xml26
-rw-r--r--sw/uiconfig/swreport/toolbar/formdesign.xml34
-rw-r--r--sw/uiconfig/swreport/toolbar/formsfilterbar.xml8
-rw-r--r--sw/uiconfig/swreport/toolbar/formsnavigationbar.xml32
-rw-r--r--sw/uiconfig/swreport/toolbar/formtextobjectbar.xml28
-rw-r--r--sw/uiconfig/swreport/toolbar/frameobjectbar.xml34
-rw-r--r--sw/uiconfig/swreport/toolbar/fullscreenbar.xml5
-rw-r--r--sw/uiconfig/swreport/toolbar/graffilterbar.xml17
-rw-r--r--sw/uiconfig/swreport/toolbar/graphicobjectbar.xml18
-rw-r--r--sw/uiconfig/swreport/toolbar/insertbar.xml29
-rw-r--r--sw/uiconfig/swreport/toolbar/insertobjectbar.xml7
-rw-r--r--sw/uiconfig/swreport/toolbar/mediaobjectbar.xml7
-rw-r--r--sw/uiconfig/swreport/toolbar/moreformcontrols.xml23
-rw-r--r--sw/uiconfig/swreport/toolbar/numobjectbar.xml23
-rw-r--r--sw/uiconfig/swreport/toolbar/oleobjectbar.xml30
-rw-r--r--sw/uiconfig/swreport/toolbar/optimizetablebar.xml8
-rw-r--r--sw/uiconfig/swreport/toolbar/previewobjectbar.xml24
-rw-r--r--sw/uiconfig/swreport/toolbar/standardbar.xml42
-rw-r--r--sw/uiconfig/swreport/toolbar/starshapes.xml17
-rw-r--r--sw/uiconfig/swreport/toolbar/symbolshapes.xml24
-rw-r--r--sw/uiconfig/swreport/toolbar/tableobjectbar.xml35
-rw-r--r--sw/uiconfig/swreport/toolbar/textobjectbar.xml44
-rw-r--r--sw/uiconfig/swreport/toolbar/toolbar.xml13
-rw-r--r--sw/uiconfig/swreport/toolbar/viewerbar.xml18
-rw-r--r--sw/uiconfig/swriter/menubar/menubar.xml465
-rw-r--r--sw/uiconfig/swriter/statusbar/statusbar.xml15
-rw-r--r--sw/uiconfig/swriter/toolbar/alignmentbar.xml11
-rw-r--r--sw/uiconfig/swriter/toolbar/arrowshapes.xml34
-rw-r--r--sw/uiconfig/swriter/toolbar/basicshapes.xml29
-rw-r--r--sw/uiconfig/swriter/toolbar/bezierobjectbar.xml20
-rw-r--r--sw/uiconfig/swriter/toolbar/calloutshapes.xml11
-rw-r--r--sw/uiconfig/swriter/toolbar/colorbar.xml15
-rw-r--r--sw/uiconfig/swriter/toolbar/drawbar.xml34
-rw-r--r--sw/uiconfig/swriter/toolbar/drawingobjectbar.xml40
-rw-r--r--sw/uiconfig/swriter/toolbar/drawtextobjectbar.xml34
-rw-r--r--sw/uiconfig/swriter/toolbar/extrusionobjectbar.xml16
-rw-r--r--sw/uiconfig/swriter/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/swriter/toolbar/flowchartshapes.xml36
-rw-r--r--sw/uiconfig/swriter/toolbar/fontworkobjectbar.xml11
-rw-r--r--sw/uiconfig/swriter/toolbar/fontworkshapetype.xml38
-rw-r--r--sw/uiconfig/swriter/toolbar/formcontrols.xml26
-rw-r--r--sw/uiconfig/swriter/toolbar/formdesign.xml33
-rw-r--r--sw/uiconfig/swriter/toolbar/formsfilterbar.xml8
-rw-r--r--sw/uiconfig/swriter/toolbar/formsnavigationbar.xml33
-rw-r--r--sw/uiconfig/swriter/toolbar/formtextobjectbar.xml28
-rw-r--r--sw/uiconfig/swriter/toolbar/frameobjectbar.xml34
-rw-r--r--sw/uiconfig/swriter/toolbar/fullscreenbar.xml5
-rw-r--r--sw/uiconfig/swriter/toolbar/graffilterbar.xml17
-rw-r--r--sw/uiconfig/swriter/toolbar/graphicobjectbar.xml18
-rw-r--r--sw/uiconfig/swriter/toolbar/insertbar.xml31
-rw-r--r--sw/uiconfig/swriter/toolbar/mediaobjectbar.xml7
-rw-r--r--sw/uiconfig/swriter/toolbar/moreformcontrols.xml23
-rw-r--r--sw/uiconfig/swriter/toolbar/numobjectbar.xml23
-rw-r--r--sw/uiconfig/swriter/toolbar/oleobjectbar.xml30
-rw-r--r--sw/uiconfig/swriter/toolbar/optimizetablebar.xml8
-rw-r--r--sw/uiconfig/swriter/toolbar/previewobjectbar.xml24
-rw-r--r--sw/uiconfig/swriter/toolbar/standardbar.xml42
-rw-r--r--sw/uiconfig/swriter/toolbar/starshapes.xml17
-rw-r--r--sw/uiconfig/swriter/toolbar/symbolshapes.xml24
-rw-r--r--sw/uiconfig/swriter/toolbar/tableobjectbar.xml35
-rw-r--r--sw/uiconfig/swriter/toolbar/textobjectbar.xml44
-rw-r--r--sw/uiconfig/swriter/toolbar/toolbar.xml13
-rw-r--r--sw/uiconfig/swriter/toolbar/viewerbar.xml18
-rw-r--r--sw/uiconfig/swxform/menubar/menubar.xml457
-rw-r--r--sw/uiconfig/swxform/statusbar/statusbar.xml15
-rw-r--r--sw/uiconfig/swxform/toolbar/alignmentbar.xml11
-rw-r--r--sw/uiconfig/swxform/toolbar/arrowshapes.xml34
-rw-r--r--sw/uiconfig/swxform/toolbar/basicshapes.xml29
-rw-r--r--sw/uiconfig/swxform/toolbar/bezierobjectbar.xml20
-rw-r--r--sw/uiconfig/swxform/toolbar/calloutshapes.xml11
-rw-r--r--sw/uiconfig/swxform/toolbar/colorbar.xml15
-rw-r--r--sw/uiconfig/swxform/toolbar/drawbar.xml34
-rw-r--r--sw/uiconfig/swxform/toolbar/drawingobjectbar.xml40
-rw-r--r--sw/uiconfig/swxform/toolbar/drawtextobjectbar.xml34
-rw-r--r--sw/uiconfig/swxform/toolbar/extrusionobjectbar.xml16
-rw-r--r--sw/uiconfig/swxform/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/swxform/toolbar/flowchartshapes.xml36
-rw-r--r--sw/uiconfig/swxform/toolbar/fontworkobjectbar.xml11
-rw-r--r--sw/uiconfig/swxform/toolbar/fontworkshapetype.xml38
-rw-r--r--sw/uiconfig/swxform/toolbar/formcontrols.xml23
-rw-r--r--sw/uiconfig/swxform/toolbar/formdesign.xml33
-rw-r--r--sw/uiconfig/swxform/toolbar/formsfilterbar.xml8
-rw-r--r--sw/uiconfig/swxform/toolbar/formsnavigationbar.xml33
-rw-r--r--sw/uiconfig/swxform/toolbar/formtextobjectbar.xml28
-rw-r--r--sw/uiconfig/swxform/toolbar/frameobjectbar.xml34
-rw-r--r--sw/uiconfig/swxform/toolbar/fullscreenbar.xml5
-rw-r--r--sw/uiconfig/swxform/toolbar/graffilterbar.xml17
-rw-r--r--sw/uiconfig/swxform/toolbar/graphicobjectbar.xml18
-rw-r--r--sw/uiconfig/swxform/toolbar/insertbar.xml29
-rw-r--r--sw/uiconfig/swxform/toolbar/insertobjectbar.xml7
-rw-r--r--sw/uiconfig/swxform/toolbar/mediaobjectbar.xml7
-rw-r--r--sw/uiconfig/swxform/toolbar/moreformcontrols.xml12
-rw-r--r--sw/uiconfig/swxform/toolbar/numobjectbar.xml23
-rw-r--r--sw/uiconfig/swxform/toolbar/oleobjectbar.xml30
-rw-r--r--sw/uiconfig/swxform/toolbar/optimizetablebar.xml8
-rw-r--r--sw/uiconfig/swxform/toolbar/previewobjectbar.xml24
-rw-r--r--sw/uiconfig/swxform/toolbar/standardbar.xml42
-rw-r--r--sw/uiconfig/swxform/toolbar/starshapes.xml17
-rw-r--r--sw/uiconfig/swxform/toolbar/symbolshapes.xml24
-rw-r--r--sw/uiconfig/swxform/toolbar/tableobjectbar.xml35
-rw-r--r--sw/uiconfig/swxform/toolbar/textobjectbar.xml44
-rw-r--r--sw/uiconfig/swxform/toolbar/toolbar.xml13
-rw-r--r--sw/uiconfig/swxform/toolbar/viewerbar.xml18
-rw-r--r--sw/util/hidother.hrc31
-rw-r--r--sw/util/hidother.src392
-rw-r--r--sw/util/makefile.mk391
-rw-r--r--sw/util/msword.map14
-rw-r--r--sw/util/sw.flt136
-rw-r--r--sw/util/swui.map6
-rw-r--r--sw/xml/writer.xml1244
-rw-r--r--swext/makefile.pmk37
-rw-r--r--swext/mediawiki/build.xml227
-rw-r--r--swext/mediawiki/dialogs/EditSetting.xdl47
-rw-r--r--swext/mediawiki/dialogs/Module1.xba33
-rw-r--r--swext/mediawiki/dialogs/SendToMediaWiki.xdl54
-rw-r--r--swext/mediawiki/dialogs/Settings.xdl46
-rw-r--r--swext/mediawiki/dialogs/dialog.xlb33
-rw-r--r--swext/mediawiki/dialogs/script.xlb31
-rwxr-xr-xswext/mediawiki/help/component.txt1
-rw-r--r--swext/mediawiki/help/makefile.mk87
-rw-r--r--swext/mediawiki/help/wiki.xhp156
-rw-r--r--swext/mediawiki/help/wikiaccount.xhp56
-rw-r--r--swext/mediawiki/help/wikiformats.xhp72
-rw-r--r--swext/mediawiki/help/wikisend.xhp60
-rw-r--r--swext/mediawiki/help/wikisettings.xhp54
-rw-r--r--swext/mediawiki/makefile.mk69
-rw-r--r--swext/mediawiki/src/THIRDPARTYLICENSEREADME.html148
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java193
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/Helper.java1153
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java176
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/Settings.java347
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java295
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java33
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java325
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java429
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java476
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java303
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java388
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java168
-rw-r--r--swext/mediawiki/src/description.xml14
-rw-r--r--swext/mediawiki/src/filter/mediawiki.ottbin0 -> 6304 bytes
-rwxr-xr-xswext/mediawiki/src/filter/odt2mediawiki.xsl1567
-rw-r--r--swext/mediawiki/src/makefile.mk54
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Addons.xcu67
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/WikiExtension.xcu153
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/makefile.mk48
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu50
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Paths.xcu36
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/ProtocolHandler.xcu36
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/makefile.mk46
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu56
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu44
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/makefile.mk46
-rw-r--r--swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/WikiExtension.xcs197
-rw-r--r--swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/makefile.mk46
-rw-r--r--swext/mediawiki/src/uno-extension-manifest.xml53
-rw-r--r--swext/prj/build.lst10
-rw-r--r--swext/prj/d.lst5
-rw-r--r--test/inc/makefile.mk38
-rw-r--r--test/inc/pch/precompiled_test.cxx29
-rw-r--r--test/inc/pch/precompiled_test.hxx33
-rw-r--r--test/inc/test/detail/testdllapi.hxx42
-rw-r--r--test/inc/test/getargument.hxx47
-rw-r--r--test/inc/test/officeconnection.hxx68
-rw-r--r--test/inc/test/oustringostreaminserter.hxx51
-rw-r--r--test/inc/test/toabsolutefileurl.hxx47
-rw-r--r--test/prj/build.lst4
-rw-r--r--test/prj/d.lst12
-rw-r--r--test/source/cpp/getargument.cxx45
-rw-r--r--test/source/cpp/makefile.mk62
-rw-r--r--test/source/cpp/officeconnection.cxx181
-rw-r--r--test/source/cpp/toabsolutefileurl.cxx86
-rw-r--r--test/source/java/OfficeConnection.java221
-rw-r--r--test/source/java/makefile.mk49
-rw-r--r--testautomation/chart2/optional/ch2_chart_data_dlg_impress.bas56
-rw-r--r--testautomation/chart2/optional/ch2_flexible_source_range_selection.bas69
-rwxr-xr-xtestautomation/chart2/optional/ch2_losa_ods_to_ods.bas68
-rwxr-xr-xtestautomation/chart2/optional/ch2_losa_ods_to_ots.bas68
-rwxr-xr-xtestautomation/chart2/optional/ch2_losa_ods_to_sdc.bas67
-rwxr-xr-xtestautomation/chart2/optional/ch2_losa_ods_to_sxc.bas68
-rwxr-xr-xtestautomation/chart2/optional/ch2_losa_ods_to_xls.bas68
-rwxr-xr-xtestautomation/chart2/optional/ch2_losa_sxc_to_ods.bas68
-rwxr-xr-xtestautomation/chart2/optional/ch2_losa_sxc_to_sdc.bas68
-rwxr-xr-xtestautomation/chart2/optional/ch2_lvl1.bas57
-rwxr-xr-xtestautomation/chart2/optional/ch2_lvl1_wizard.bas66
-rw-r--r--testautomation/chart2/optional/ch2_xml_format.bas55
-rw-r--r--testautomation/chart2/optional/includes/ch2_datadialogue.inc328
-rw-r--r--testautomation/chart2/optional/includes/ch2_flexible_source_range_selection.inc797
-rw-r--r--testautomation/chart2/optional/includes/ch2_flexible_source_range_selection01.inc794
-rwxr-xr-xtestautomation/chart2/optional/includes/ch2_lvl1a.inc266
-rwxr-xr-xtestautomation/chart2/optional/includes/loadsave/ch2_losa.inc219
-rw-r--r--testautomation/chart2/optional/includes/loadsave/ch2_xml_format.inc243
-rwxr-xr-xtestautomation/chart2/optional/includes/wizard/ch2_lvl1_wizard.inc1092
-rw-r--r--testautomation/chart2/optional/includes/wizard/ch2_lvl1_wizard2.inc124
-rw-r--r--testautomation/chart2/optional/input/BubbleChartData.odsbin0 -> 8000 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_areas_normal.odsbin0 -> 19980 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_areas_percent.odsbin0 -> 22854 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_areas_stacked.odsbin0 -> 20547 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_bars_normal.odsbin0 -> 22851 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_bars_percent.odsbin0 -> 23088 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_bars_stacked.odsbin0 -> 23782 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_columns_lines_and_columns.odsbin0 -> 24097 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_columns_lines_and_stacked_columns.odsbin0 -> 25212 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_columns_normal.odsbin0 -> 23151 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_columns_percent.odsbin0 -> 23058 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/2d_columns_stacked.odsbin0 -> 24970 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/3d_lines_deep.odsbin0 -> 35335 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/3d_pies_normal.odsbin0 -> 39008 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/areas_deep.odsbin0 -> 52064 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/areas_percent.odsbin0 -> 38468 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/areas_stacked.odsbin0 -> 42860 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_deep.odsbin0 -> 61483 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_cones.odsbin0 -> 66269 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_cones_deep.odsbin0 -> 110686 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_cones_percent.odsbin0 -> 110617 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_pyramids.odsbin0 -> 67118 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_pyramids_deep.odsbin0 -> 98383 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_pyramids_percent.odsbin0 -> 110239 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_pyramids_stacked.odsbin0 -> 85911 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_horizontal_stacked_cones.odsbin0 -> 88184 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_normal.odsbin0 -> 71033 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_percent.odsbin0 -> 66755 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_stacked.odsbin0 -> 60722 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_tube.odsbin0 -> 41905 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_tubes_deep.odsbin0 -> 59620 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_tubes_percent.odsbin0 -> 62875 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/bars_tubes_stacked.odsbin0 -> 50291 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cones.odsbin0 -> 50195 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cones_deep.odsbin0 -> 84795 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cones_percent.odsbin0 -> 90080 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cones_stacked.odsbin0 -> 88072 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cylinder.odsbin0 -> 53406 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cylinder_deep.odsbin0 -> 67403 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cylinder_percent.odsbin0 -> 86518 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_cylinder_stacked.odsbin0 -> 79786 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_deep.odsbin0 -> 50144 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_normal.odsbin0 -> 59819 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_percent.odsbin0 -> 60109 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_pyramids.odsbin0 -> 71749 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_pyramids_deep.odsbin0 -> 96324 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_pyramids_percent.odsbin0 -> 103938 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_pyramids_stacked.odsbin0 -> 104487 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/columns_stacked.odsbin0 -> 65360 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_b-spline.odsbin0 -> 25651 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_b-spline_with_symbols.odsbin0 -> 30305 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_cubic_spline.odsbin0 -> 25841 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_cubic_spline_with_symbols.odsbin0 -> 33585 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_normal.odsbin0 -> 19673 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_percent.odsbin0 -> 19326 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_percent_with_symbols.odsbin0 -> 23242 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_stacked.odsbin0 -> 20462 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_stacked_with_symbols.odsbin0 -> 24066 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/lines_symbols.odsbin0 -> 23002 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/net_normal.odsbin0 -> 19926 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/net_percent.odsbin0 -> 20031 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/net_percent_with_symbols.odsbin0 -> 24009 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/net_stacked.odsbin0 -> 20018 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/net_stacked_with_symbols.odsbin0 -> 24083 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/net_symbols.odsbin0 -> 23820 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/pies_normal.odsbin0 -> 20506 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/pies_offset1.odsbin0 -> 20195 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/pies_offset2.odsbin0 -> 20524 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/pies_rings.odsbin0 -> 27925 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/stockchart_type1.odsbin0 -> 19889 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/stockchart_type2.odsbin0 -> 21315 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/stockchart_type3.odsbin0 -> 22123 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/stockchart_type4.odsbin0 -> 23348 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/xy_chart_b-spline.odsbin0 -> 24219 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/xy_chart_b-spline_with_symbols.odsbin0 -> 27576 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/xy_chart_cubic_spline.odsbin0 -> 24489 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/xy_chart_cubic_spline_with_symbols.odsbin0 -> 27677 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/xy_chart_lines_only.odsbin0 -> 19266 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/xy_chart_lines_with_symbols.odsbin0 -> 22498 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/ods/xy_chart_symbols_only.odsbin0 -> 21517 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/randomData.odsbin0 -> 7713 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_areas_normal.sxcbin0 -> 11879 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_areas_percent.sxcbin0 -> 12137 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_areas_stacked.sxcbin0 -> 12547 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_bars_normal.sxcbin0 -> 13620 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_bars_percent.sxcbin0 -> 13373 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_bars_stacked.sxcbin0 -> 12325 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_columns_lines_and_columns.sxcbin0 -> 14033 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_columns_lines_and_stacked_columns.sxcbin0 -> 14458 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_columns_normal.sxcbin0 -> 13793 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_columns_percent.sxcbin0 -> 13675 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/2d_columns_stacked.sxcbin0 -> 14365 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/3d_lines_deep.sxcbin0 -> 18632 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/3d_pies_normal.sxcbin0 -> 20396 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/areas_deep.sxcbin0 -> 32742 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/areas_percent.sxcbin0 -> 21962 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/areas_stacked.sxcbin0 -> 23672 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_deep.sxcbin0 -> 39140 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_cones.sxcbin0 -> 34799 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_cones_deep.sxcbin0 -> 51450 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_cones_percent.sxcbin0 -> 48313 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_pyramids.sxcbin0 -> 32902 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_pyramids_deep.sxcbin0 -> 48143 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_pyramids_percent.sxcbin0 -> 47134 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_pyramids_stacked.sxcbin0 -> 40866 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_horizontal_stacked_cones.sxcbin0 -> 41810 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_normal.sxcbin0 -> 34087 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_percent.sxcbin0 -> 35015 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_stacked.sxcbin0 -> 30564 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_tube.sxcbin0 -> 28453 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_tubes_deep.sxcbin0 -> 36522 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_tubes_percent.sxcbin0 -> 39245 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/bars_tubes_stacked.sxcbin0 -> 32849 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cones.sxcbin0 -> 27681 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cones_deep.sxcbin0 -> 41842 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cones_percent.sxcbin0 -> 44938 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cones_stacked.sxcbin0 -> 40843 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cylinder.sxcbin0 -> 28562 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cylinder_deep.sxcbin0 -> 34619 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cylinder_percent.sxcbin0 -> 42982 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_cylinder_stacked.sxcbin0 -> 44840 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_deep.sxcbin0 -> 32156 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_normal.sxcbin0 -> 37062 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_percent.sxcbin0 -> 37149 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_pyramids.sxcbin0 -> 38666 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_pyramids_deep.sxcbin0 -> 53341 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_pyramids_percent.sxcbin0 -> 55649 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_pyramids_stacked.sxcbin0 -> 53051 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/columns_stacked.sxcbin0 -> 32245 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_b-spline.sxcbin0 -> 19509 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_b-spline_with_symbols.sxcbin0 -> 22013 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_cubic_spline.sxcbin0 -> 19650 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_cubic_spline_with_symbols.sxcbin0 -> 22066 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_normal.sxcbin0 -> 17027 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_percent.sxcbin0 -> 16447 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_percent_with_symbols.sxcbin0 -> 18472 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_stacked.sxcbin0 -> 17579 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_stacked_with_symbols.sxcbin0 -> 19077 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/lines_symbols.sxcbin0 -> 18275 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/net_normal.sxcbin0 -> 16864 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/net_percent.sxcbin0 -> 16992 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/net_percent_with_symbols.sxcbin0 -> 19009 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/net_stacked.sxcbin0 -> 16947 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/net_stacked_with_symbols.sxcbin0 -> 19043 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/net_symbols.sxcbin0 -> 18861 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/pies_normal.sxcbin0 -> 25337 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/pies_offset1.sxcbin0 -> 16978 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/pies_offset2.sxcbin0 -> 17217 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/pies_rings.sxcbin0 -> 20869 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/stockchart_type1.sxcbin0 -> 16651 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/stockchart_type2.sxcbin0 -> 17371 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/stockchart_type3.sxcbin0 -> 17883 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/stockchart_type4.sxcbin0 -> 18534 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/xy_chart_b-spline.sxcbin0 -> 19090 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/xy_chart_b-spline_with_symbols.sxcbin0 -> 20759 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/xy_chart_cubic_spline.sxcbin0 -> 19391 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/xy_chart_cubic_spline_with_symbols.sxcbin0 -> 20911 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/xy_chart_lines_only.sxcbin0 -> 16609 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/xy_chart_lines_with_symbols.sxcbin0 -> 18325 bytes
-rwxr-xr-xtestautomation/chart2/optional/input/sxc/xy_chart_symbols_only.sxcbin0 -> 17630 bytes
-rwxr-xr-xtestautomation/chart2/required/ch2_updt_calc.bas152
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_file.inc404
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_format.inc1407
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_format1.inc829
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_insert.inc326
-rw-r--r--testautomation/chart2/required/includes/ch2_insert_ctl.inc488
-rw-r--r--testautomation/chart2/required/includes/ch2_menu.inc214
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_ole.inc137
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_toolbars.inc168
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_view.inc182
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_window.inc63
-rwxr-xr-xtestautomation/chart2/required/includes/ch2_wizard.inc86
-rwxr-xr-xtestautomation/chart2/required/input/basetable.sdcbin0 -> 28672 bytes
-rwxr-xr-xtestautomation/chart2/required/input/basetable.sxcbin0 -> 5500 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange01.odsbin0 -> 98073 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange02.odsbin0 -> 6849 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange03.odsbin0 -> 32530 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange04.odsbin0 -> 20799 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange05.odtbin0 -> 7305 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange06.odtbin0 -> 7303 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange07.odtbin0 -> 13104 bytes
-rwxr-xr-xtestautomation/chart2/required/input/ch_flexrange08.odtbin0 -> 13280 bytes
-rwxr-xr-xtestautomation/chart2/required/input/spreadsheetFile.odsbin0 -> 6337 bytes
-rwxr-xr-xtestautomation/chart2/required/input/verySimpleChart.odsbin0 -> 10429 bytes
-rw-r--r--testautomation/chart2/tools/ch_tools_axes.inc193
-rw-r--r--testautomation/chart2/tools/ch_tools_chart_type.inc641
-rw-r--r--testautomation/chart2/tools/ch_tools_common.inc212
-rw-r--r--testautomation/chart2/tools/ch_tools_data_labels.inc369
-rw-r--r--testautomation/chart2/tools/ch_tools_grids.inc202
-rw-r--r--testautomation/chart2/tools/ch_tools_legend.inc241
-rw-r--r--testautomation/chart2/tools/ch_tools_select.inc136
-rw-r--r--testautomation/chart2/tools/ch_tools_statistics.inc429
-rw-r--r--testautomation/chart2/tools/ch_tools_tab_borders_lines.inc144
-rw-r--r--testautomation/chart2/tools/ch_tools_tab_pages.inc147
-rw-r--r--testautomation/chart2/tools/ch_tools_titles.inc189
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_Clipboard.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_General.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_Grid.bas55
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_PropertyBrowser.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_Several.bas56
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_Spreadsheet.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_TextControl.bas55
-rwxr-xr-xtestautomation/dbaccess/optional/dba_ctrl_Wizards.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_ADOAccess.bas56
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_AdabasD.bas56
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_Addressbook.bas67
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_Dbase.bas55
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_JDBCMySQL.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_Spreadsheet.bas55
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_Text.bas80
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_dBase_functions.bas66
-rwxr-xr-xtestautomation/dbaccess/optional/dba_db_hsqldb.bas56
-rwxr-xr-xtestautomation/dbaccess/optional/dba_frm_FormFilter.bas59
-rwxr-xr-xtestautomation/dbaccess/optional/dba_frm_Forms.bas58
-rw-r--r--testautomation/dbaccess/optional/dba_misc_Macros.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_misc_RegisterDatabase.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_rpt_DateTime.bas59
-rwxr-xr-xtestautomation/dbaccess/optional/dba_rpt_ExecuteReport.bas59
-rwxr-xr-xtestautomation/dbaccess/optional/dba_rpt_Formating.bas59
-rwxr-xr-xtestautomation/dbaccess/optional/dba_rpt_FunctionWizard.bas59
-rwxr-xr-xtestautomation/dbaccess/optional/dba_rpt_Grouping.bas59
-rwxr-xr-xtestautomation/dbaccess/optional/dba_rpt_PageNumber.bas61
-rwxr-xr-xtestautomation/dbaccess/optional/dba_rpt_PropertyBrowser.bas59
-rwxr-xr-xtestautomation/dbaccess/optional/dba_wiz_CopyTableWizard.bas54
-rwxr-xr-xtestautomation/dbaccess/optional/dba_wiz_DatabaseWizards.bas53
-rwxr-xr-xtestautomation/dbaccess/optional/dba_wiz_FormWizard.bas53
-rwxr-xr-xtestautomation/dbaccess/optional/dba_wiz_QueryWizard.bas53
-rwxr-xr-xtestautomation/dbaccess/optional/dba_wiz_ReportWizard.bas56
-rwxr-xr-xtestautomation/dbaccess/optional/dba_wiz_TableWizard.bas53
-rwxr-xr-xtestautomation/dbaccess/optional/dba_xf_Submission.bas53
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_Clipboard.inc492
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_General.inc1063
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_Grid.inc521
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_PropertyBrowser.inc510
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_Several1.inc648
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_Several2.inc924
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_Spreadsheet.inc387
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_TextControl.inc290
-rwxr-xr-xtestautomation/dbaccess/optional/includes/ctrl_Wizards.inc860
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_ADOAccess.inc175
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_AdabasD.inc156
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_Dbase.inc118
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_DbaseFunction.inc886
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_IndexDesign.inc92
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_JDBCMySQL.inc210
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_Mozilla.inc154
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_ODBCMySQL.inc192
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_Query.inc975
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_Relations.inc435
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_Spreadsheet.inc61
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_Text.inc148
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_Windows.inc81
-rwxr-xr-xtestautomation/dbaccess/optional/includes/db_hsqldb.inc288
-rwxr-xr-xtestautomation/dbaccess/optional/includes/frm_FormFilter.inc240
-rwxr-xr-xtestautomation/dbaccess/optional/includes/frm_Forms.inc1065
-rwxr-xr-xtestautomation/dbaccess/optional/includes/misc_Macros.inc115
-rwxr-xr-xtestautomation/dbaccess/optional/includes/misc_RegisterDatabase.inc63
-rwxr-xr-xtestautomation/dbaccess/optional/includes/rpt_DateTime.inc298
-rwxr-xr-xtestautomation/dbaccess/optional/includes/rpt_ExecuteReport.inc234
-rwxr-xr-xtestautomation/dbaccess/optional/includes/rpt_Formating.inc201
-rwxr-xr-xtestautomation/dbaccess/optional/includes/rpt_FunctionWizard.inc117
-rwxr-xr-xtestautomation/dbaccess/optional/includes/rpt_Grouping.inc156
-rwxr-xr-xtestautomation/dbaccess/optional/includes/rpt_PageNumber.inc257
-rwxr-xr-xtestautomation/dbaccess/optional/includes/rpt_PropertyBrowser.inc76
-rwxr-xr-xtestautomation/dbaccess/optional/includes/wiz_CopyTableWizard.inc833
-rwxr-xr-xtestautomation/dbaccess/optional/includes/wiz_DatabaseWizard.inc352
-rwxr-xr-xtestautomation/dbaccess/optional/includes/wiz_FormWizard.inc254
-rwxr-xr-xtestautomation/dbaccess/optional/includes/wiz_QueryWizard.inc233
-rwxr-xr-xtestautomation/dbaccess/optional/includes/wiz_ReportWizard.inc123
-rwxr-xr-xtestautomation/dbaccess/optional/includes/wiz_TableWizard.inc499
-rwxr-xr-xtestautomation/dbaccess/optional/includes/xf_Submission.inc185
-rwxr-xr-xtestautomation/dbaccess/optional/input/TT_All_Controls.odtbin0 -> 12522 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/TT_Form_Filter.odtbin0 -> 8174 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/ado_datasource/testdb.mdbbin0 -> 286720 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/dbase_datasource/TT_Forms.dbfbin0 -> 903 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/dbase_datasource/TT_Func1.dbfbin0 -> 116 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/dbase_datasource/TT_Query1.dbfbin0 -> 1180 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/dbase_datasource/TT_Query1.dbtbin0 -> 5046204 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/hsql_datasource/TT_hsqldb.odbbin0 -> 16127 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/hsql_datasource/TT_hsqldb_2.0.0.odbbin0 -> 2501 bytes
-rw-r--r--testautomation/dbaccess/optional/input/hsql_datasource/hsql_macros_in_subdocument.odbbin0 -> 11948 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/spreadsheet_datasource/TT_Query1.odsbin0 -> 6738 bytes
-rwxr-xr-xtestautomation/dbaccess/optional/input/text_datasource/TT_Query1.txt12
-rwxr-xr-xtestautomation/dbaccess/optional/input/text_datasource/text_database.txt3
-rwxr-xr-xtestautomation/dbaccess/required/dba_Main.bas77
-rwxr-xr-xtestautomation/dbaccess/required/dba_ReportBuilder.bas55
-rwxr-xr-xtestautomation/dbaccess/required/dba_xforms_Main.bas53
-rwxr-xr-xtestautomation/dbaccess/required/includes/DatabaseTypes.inc754
-rwxr-xr-xtestautomation/dbaccess/required/includes/Forms.inc91
-rwxr-xr-xtestautomation/dbaccess/required/includes/MainApp.inc620
-rwxr-xr-xtestautomation/dbaccess/required/includes/Query.inc966
-rwxr-xr-xtestautomation/dbaccess/required/includes/ReportBuilder01.inc876
-rwxr-xr-xtestautomation/dbaccess/required/includes/Table.inc632
-rwxr-xr-xtestautomation/dbaccess/required/includes/TableDesign.inc509
-rwxr-xr-xtestautomation/dbaccess/required/includes/Wizards.inc235
-rwxr-xr-xtestautomation/dbaccess/required/includes/Xforms01.inc485
-rw-r--r--testautomation/dbaccess/required/input/oracle-report-builder.oxtbin0 -> 3449930 bytes
-rwxr-xr-xtestautomation/dbaccess/tools/controltools.inc831
-rwxr-xr-xtestautomation/dbaccess/tools/dbcreatetools.inc1631
-rwxr-xr-xtestautomation/dbaccess/tools/dbinit.inc56
-rwxr-xr-xtestautomation/dbaccess/tools/dbtools.inc373
-rwxr-xr-xtestautomation/dbaccess/tools/formtools.inc193
-rwxr-xr-xtestautomation/dbaccess/tools/querytools.inc434
-rwxr-xr-xtestautomation/dbaccess/tools/reporttools.inc387
-rwxr-xr-xtestautomation/dbaccess/tools/tabletools.inc771
-rwxr-xr-xtestautomation/extensions/optional/e_display_name.bas57
-rwxr-xr-xtestautomation/extensions/optional/e_extensions.bas54
-rwxr-xr-xtestautomation/extensions/optional/e_fileopen.bas55
-rwxr-xr-xtestautomation/extensions/optional/e_help.bas57
-rwxr-xr-xtestautomation/extensions/optional/e_identifiers.bas59
-rwxr-xr-xtestautomation/extensions/optional/e_issues.bas55
-rwxr-xr-xtestautomation/extensions/optional/e_location.bas68
-rwxr-xr-xtestautomation/extensions/optional/e_meta-inf.bas59
-rwxr-xr-xtestautomation/extensions/optional/e_online_update.bas57
-rwxr-xr-xtestautomation/extensions/optional/e_options.bas59
-rwxr-xr-xtestautomation/extensions/optional/e_platforms.bas58
-rwxr-xr-xtestautomation/extensions/optional/e_publisher.bas55
-rw-r--r--testautomation/extensions/optional/e_taskpane.bas49
-rwxr-xr-xtestautomation/extensions/optional/includes/display_name.inc113
-rw-r--r--testautomation/extensions/optional/includes/e_taskpane.inc74
-rwxr-xr-xtestautomation/extensions/optional/includes/extensions.inc684
-rwxr-xr-xtestautomation/extensions/optional/includes/fileopen.inc103
-rwxr-xr-xtestautomation/extensions/optional/includes/help.inc213
-rwxr-xr-xtestautomation/extensions/optional/includes/identifiers.inc120
-rwxr-xr-xtestautomation/extensions/optional/includes/issue110083.inc79
-rwxr-xr-xtestautomation/extensions/optional/includes/location.inc133
-rwxr-xr-xtestautomation/extensions/optional/includes/meta-inf.inc83
-rwxr-xr-xtestautomation/extensions/optional/includes/online_update.inc114
-rwxr-xr-xtestautomation/extensions/optional/includes/options.inc172
-rwxr-xr-xtestautomation/extensions/optional/includes/platforms.inc126
-rwxr-xr-xtestautomation/extensions/optional/includes/publisher.inc286
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/broken-dependency.oxtbin0 -> 1655 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/double-dependencies.oxtbin0 -> 1651 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/empty-dependencies.oxtbin0 -> 1624 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/funny-dependency.oxtbin0 -> 1730 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/license-dependency.oxtbin0 -> 1891 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/many-dependencies.oxtbin0 -> 1702 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/no-dependencies.oxtbin0 -> 1611 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/no-description.oxtbin0 -> 1360 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/unknown-dependency.oxtbin0 -> 1633 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version10000.oxtbin0 -> 1668 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version21.oxtbin0 -> 1666 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version21ns.oxtbin0 -> 1661 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version21other.oxtbin0 -> 1679 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version25.oxtbin0 -> 1794 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version30.oxtbin0 -> 1493 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version300.oxtbin0 -> 1408 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version301.oxtbin0 -> 1409 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version31.oxtbin0 -> 1495 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version310.oxtbin0 -> 1493 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version33.oxtbin0 -> 1494 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version330.oxtbin0 -> 1494 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version34.oxtbin0 -> 1494 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version937.oxtbin0 -> 1409 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/versionempty.oxtbin0 -> 1675 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/versionnone.oxtbin0 -> 1674 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name1.oxtbin0 -> 704 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name2.oxtbin0 -> 699 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name3.oxtbin0 -> 681 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name4.oxtbin0 -> 675 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name5.oxtbin0 -> 654 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/readme.txt26
-rwxr-xr-xtestautomation/extensions/optional/input/errors/i77436-README.txt21
-rwxr-xr-xtestautomation/extensions/optional/input/errors/i77436-extension.oxtbin0 -> 57727 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/errors/lowercasemetainf.oxtbin0 -> 9381 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/eventbinding/DialogComponent.odtbin0 -> 12541 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/eventbinding/DialogComponent.oxtbin0 -> 7588 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/extensible_help/extensible_help_en.oxtbin0 -> 8284 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/extensible_help/extensible_help_en_de.oxtbin0 -> 13522 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/extensible_help/extension.info59
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/build.xml72
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-impl.xml794
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-uno-impl.xml462
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/genfiles.properties9
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/config.properties0
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/private.properties7
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project-uno.properties19
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.properties68
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.xml14
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/CalcWindowState.xcu23
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/Factories.xcu35
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/CentralRegistrationClass.java140
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/TaskPaneComponent.java116
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanel.java56
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanelUIElement.java153
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/description.xml5
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/toolpanels/TaskPaneComponentUI.xdl8
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/uno-extension-manifest.xml9
-rwxr-xr-xtestautomation/extensions/optional/input/extensions/TaskPaneComponent/TaskPaneComponent.oxtbin0 -> 9884 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/files.txt50
-rwxr-xr-xtestautomation/extensions/optional/input/identifier/explicit/identifier.oxtbin0 -> 1660 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/identifier/legacy/identifier.oxtbin0 -> 1634 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/identifier/readme.txt16
-rw-r--r--testautomation/extensions/optional/input/issues/111434.oxtbin0 -> 1166 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/issues/Logging.xcu24
-rw-r--r--testautomation/extensions/optional/input/issues/LoggingOptions.xcs19
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaf1.oxtbin0 -> 8308 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaf2.oxtbin0 -> 8338 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaves1.oxtbin0 -> 21158 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaves2.oxtbin0 -> 21153 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaves3.oxtbin0 -> 21080 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/modules1.oxtbin0 -> 24317 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/modules2.oxtbin0 -> 24196 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes1.oxtbin0 -> 1882 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes2.oxtbin0 -> 24287 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes3.oxtbin0 -> 24315 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes4.oxtbin0 -> 24318 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes5.oxtbin0 -> 12616 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/readme.txt195
-rwxr-xr-xtestautomation/extensions/optional/input/path_to_extension/LocationTest.odtbin0 -> 7666 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/path_to_extension/locationtest.oxtbin0 -> 5055 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/all1.oxtbin0 -> 692 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/all2.oxtbin0 -> 702 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/all3.oxtbin0 -> 297 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/extensions.info146
-rwxr-xr-xtestautomation/extensions/optional/input/platform/freebsd_x86.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/freebsd_x86_64.oxtbin0 -> 711 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/invalid1.oxtbin0 -> 653 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/invalid2.oxtbin0 -> 653 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/invalid3.oxtbin0 -> 655 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_arm_eabi.oxtbin0 -> 709 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_arm_oabi.oxtbin0 -> 710 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_ia64.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_mips_eb.oxtbin0 -> 709 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_mips_el.oxtbin0 -> 708 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_powerpc.oxtbin0 -> 708 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_powerpc64.oxtbin0 -> 710 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_s390.oxtbin0 -> 705 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_s390x.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_sparc.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_x86.oxtbin0 -> 705 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_x86_64.oxtbin0 -> 708 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/macosx_powerpc.oxtbin0 -> 710 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/macosx_x86.oxtbin0 -> 707 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/mul1.oxtbin0 -> 952 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/os2_x86.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/readme.txt49
-rwxr-xr-xtestautomation/extensions/optional/input/platform/solaris_sparc.oxtbin0 -> 709 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/solaris_x86.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/windows_x86.oxtbin0 -> 707 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/extension.info58
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub1.oxtbin0 -> 1882 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub2.oxtbin0 -> 1866 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub3.oxtbin0 -> 1829 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub4.oxtbin0 -> 1812 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub5.oxtbin0 -> 1769 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub6.oxtbin0 -> 1814 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub7.oxtbin0 -> 1769 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/BadDesc.oxtbin0 -> 9663 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/BadNamespace.oxtbin0 -> 10027 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/BadRoot.oxtbin0 -> 9248 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/CancelLicense.oxtbin0 -> 9406 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/IncompAttr1.oxtbin0 -> 9389 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/IncompAttr2.oxtbin0 -> 9365 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/LongLic.oxtbin0 -> 9540 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/MissingLic.oxtbin0 -> 9232 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/MissingLicRef.oxtbin0 -> 9343 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/NoDesc.oxtbin0 -> 8722 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/NoLangNoDefault.oxtbin0 -> 9234 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/OnlyDefault.oxtbin0 -> 9394 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/ShortLicense.oxtbin0 -> 9406 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/ShortLicenseShared.oxtbin0 -> 9407 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/plain1.oxtbin0 -> 2187 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/plain2.oxtbin0 -> 2186 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/plain3.oxtbin0 -> 2186 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/readme.txt26
-rwxr-xr-xtestautomation/extensions/optional/input/versions/plain.oxtbin0 -> 1522 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_0.0/plain.oxtbin0 -> 1618 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.02.4.7.0/plain.oxtbin0 -> 1624 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.2.15.3/plain.oxtbin0 -> 1624 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.2.3/plain.oxtbin0 -> 1620 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.2.4.7/plain.oxtbin0 -> 1623 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_none/plain.oxtbin0 -> 1598 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/readme.txt133
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web1.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web2.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web3.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web4.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web5.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web6.oxtbin0 -> 1638 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web7.oxtbin0 -> 1894 bytes
-rw-r--r--testautomation/extensions/required/e_update.bas58
-rw-r--r--testautomation/extensions/required/includes/e_update.inc156
-rwxr-xr-xtestautomation/framework/optional/f_CJK_CollationDialogue.bas78
-rwxr-xr-xtestautomation/framework/optional/f_CJK_FeatureSwitch.bas97
-rwxr-xr-xtestautomation/framework/optional/f_CJK_GridLayout.bas80
-rwxr-xr-xtestautomation/framework/optional/f_CJK_RubyDialogueProposal.bas71
-rwxr-xr-xtestautomation/framework/optional/f_NewSortingAlgorithmForJapanese.bas79
-rwxr-xr-xtestautomation/framework/optional/f_basic_dialog_i18n.bas68
-rwxr-xr-xtestautomation/framework/optional/f_basic_documents.bas66
-rwxr-xr-xtestautomation/framework/optional/f_basic_eventbinding.bas58
-rwxr-xr-xtestautomation/framework/optional/f_basic_first.bas77
-rwxr-xr-xtestautomation/framework/optional/f_basic_formcontrols.bas73
-rw-r--r--testautomation/framework/optional/f_basic_gridcontrol.bas49
-rwxr-xr-xtestautomation/framework/optional/f_basic_issues.bas61
-rwxr-xr-xtestautomation/framework/optional/f_basic_library_export_import.bas76
-rwxr-xr-xtestautomation/framework/optional/f_basic_modules.bas79
-rwxr-xr-xtestautomation/framework/optional/f_basic_package_export_import.bas72
-rwxr-xr-xtestautomation/framework/optional/f_basic_protected_libraries.bas64
-rwxr-xr-xtestautomation/framework/optional/f_basic_shared_modules.bas59
-rwxr-xr-xtestautomation/framework/optional/f_basic_templatedocuments.bas75
-rwxr-xr-xtestautomation/framework/optional/f_basic_vba-compat.bas75
-rwxr-xr-xtestautomation/framework/optional/f_configuration.bas52
-rwxr-xr-xtestautomation/framework/optional/f_extras_labels.bas52
-rwxr-xr-xtestautomation/framework/optional/f_extras_samplefileopen.bas66
-rwxr-xr-xtestautomation/framework/optional/f_extras_sampleopen.bas68
-rwxr-xr-xtestautomation/framework/optional/f_extras_samplepreview.bas60
-rwxr-xr-xtestautomation/framework/optional/f_extras_tableautoformat.bas66
-rwxr-xr-xtestautomation/framework/optional/f_extras_templatefileopen.bas66
-rwxr-xr-xtestautomation/framework/optional/f_extras_templateopen.bas69
-rwxr-xr-xtestautomation/framework/optional/f_extras_templatepreview.bas58
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_allowed_names.bas59
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_autocompletion.bas57
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_cjk_files.bas69
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_dialogtest.bas65
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_folder_navigation.bas76
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_forbidden_names_windows.bas60
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_multiselection.bas59
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_passwords.bas58
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_reserved_names_unix.bas60
-rwxr-xr-xtestautomation/framework/optional/f_filedlg_reserved_names_windows.bas60
-rwxr-xr-xtestautomation/framework/optional/f_fontworkgallery.bas54
-rwxr-xr-xtestautomation/framework/optional/f_help_bookmarks.bas56
-rwxr-xr-xtestautomation/framework/optional/f_help_compare_applications.bas59
-rwxr-xr-xtestautomation/framework/optional/f_help_compare_content.bas60
-rwxr-xr-xtestautomation/framework/optional/f_help_compare_topics.bas58
-rwxr-xr-xtestautomation/framework/optional/f_help_search.bas62
-rwxr-xr-xtestautomation/framework/optional/f_help_view_topics.bas68
-rwxr-xr-xtestautomation/framework/optional/f_loadsave_general.bas55
-rwxr-xr-xtestautomation/framework/optional/f_menuentries.bas51
-rwxr-xr-xtestautomation/framework/optional/f_ole.bas106
-rwxr-xr-xtestautomation/framework/optional/f_options_loadsave.bas63
-rwxr-xr-xtestautomation/framework/optional/f_options_ooo.bas88
-rwxr-xr-xtestautomation/framework/optional/f_scripting_organizers.bas83
-rwxr-xr-xtestautomation/framework/optional/f_security_broken_signature.bas66
-rwxr-xr-xtestautomation/framework/optional/f_security_certification_dialogs.bas73
-rwxr-xr-xtestautomation/framework/optional/f_security_certified_docs.bas78
-rwxr-xr-xtestautomation/framework/optional/f_security_evilmacro.bas80
-rwxr-xr-xtestautomation/framework/optional/f_security_incorrect_password.bas70
-rwxr-xr-xtestautomation/framework/optional/f_security_macrosecurity.bas60
-rwxr-xr-xtestautomation/framework/optional/f_security_recommend_password.bas77
-rwxr-xr-xtestautomation/framework/optional/f_security_trusted_path.bas100
-rwxr-xr-xtestautomation/framework/optional/f_toolbar_behavior.bas53
-rwxr-xr-xtestautomation/framework/optional/f_toolbar_items.bas62
-rwxr-xr-xtestautomation/framework/optional/f_usage_tracking.bas61
-rwxr-xr-xtestautomation/framework/optional/includes/CJK_CollationDialogue_1.inc722
-rwxr-xr-xtestautomation/framework/optional/includes/CJK_FeatureSwitchTest_1.inc743
-rwxr-xr-xtestautomation/framework/optional/includes/CJK_RubyDialogueProposal_1.inc391
-rwxr-xr-xtestautomation/framework/optional/includes/NewSortingAlgorithmForJapanese_1.inc227
-rwxr-xr-xtestautomation/framework/optional/includes/basic_delete_modules.inc101
-rwxr-xr-xtestautomation/framework/optional/includes/basic_dialog_i18n_copy_control.inc202
-rwxr-xr-xtestautomation/framework/optional/includes/basic_dialog_i18n_defaults.inc406
-rwxr-xr-xtestautomation/framework/optional/includes/basic_documents.inc185
-rwxr-xr-xtestautomation/framework/optional/includes/basic_eventbinding.inc283
-rwxr-xr-xtestautomation/framework/optional/includes/basic_formcontrols.inc232
-rw-r--r--testautomation/framework/optional/includes/basic_gridcontrol.inc112
-rwxr-xr-xtestautomation/framework/optional/includes/basic_ide.inc311
-rwxr-xr-xtestautomation/framework/optional/includes/basic_issues.inc259
-rwxr-xr-xtestautomation/framework/optional/includes/basic_library_export.inc202
-rwxr-xr-xtestautomation/framework/optional/includes/basic_library_import.inc129
-rwxr-xr-xtestautomation/framework/optional/includes/basic_macros.inc380
-rwxr-xr-xtestautomation/framework/optional/includes/basic_modulehide.inc98
-rwxr-xr-xtestautomation/framework/optional/includes/basic_modulenames.inc249
-rwxr-xr-xtestautomation/framework/optional/includes/basic_modules.inc140
-rwxr-xr-xtestautomation/framework/optional/includes/basic_package_export.inc221
-rwxr-xr-xtestautomation/framework/optional/includes/basic_package_import.inc140
-rwxr-xr-xtestautomation/framework/optional/includes/basic_protected_libraries.inc160
-rwxr-xr-xtestautomation/framework/optional/includes/basic_shared_modules.inc97
-rwxr-xr-xtestautomation/framework/optional/includes/basic_spectemplate.inc103
-rwxr-xr-xtestautomation/framework/optional/includes/basic_usertemplate.inc220
-rwxr-xr-xtestautomation/framework/optional/includes/basic_vba-compat_application-union.inc145
-rwxr-xr-xtestautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc145
-rwxr-xr-xtestautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc153
-rwxr-xr-xtestautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc110
-rw-r--r--testautomation/framework/optional/includes/basic_vba-compat_security_check.inc105
-rwxr-xr-xtestautomation/framework/optional/includes/basic_vba-compat_thisworkbook.inc143
-rwxr-xr-xtestautomation/framework/optional/includes/basic_vba-compat_xlsm-xlsb.inc187
-rwxr-xr-xtestautomation/framework/optional/includes/basic_vba_compat_tools.inc72
-rwxr-xr-xtestautomation/framework/optional/includes/configuration.inc372
-rwxr-xr-xtestautomation/framework/optional/includes/extras_file_open.inc215
-rwxr-xr-xtestautomation/framework/optional/includes/extras_labels.inc97
-rwxr-xr-xtestautomation/framework/optional/includes/extras_modify_objects.inc173
-rwxr-xr-xtestautomation/framework/optional/includes/extras_preview.inc112
-rwxr-xr-xtestautomation/framework/optional/includes/extras_table_autoformat.inc121
-rwxr-xr-xtestautomation/framework/optional/includes/f_usage_tracking.inc288
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_allowed_names.inc115
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_autocomplete.inc207
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_cjk_files.inc83
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_cjk_folders.inc86
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_document_properties.inc172
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_filternames.inc121
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_folders1.inc106
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_folders2.inc72
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_folders3.inc65
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_folders4.inc128
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_folders5.inc117
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_folders6.inc166
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_folders7.inc127
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_forbidden_names_windows.inc85
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_multiselection.inc197
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_passwords.inc184
-rw-r--r--testautomation/framework/optional/includes/filedlg_rename.inc97
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_reserved_names_unix.inc76
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_reserved_names_windows.inc133
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_tools.inc478
-rwxr-xr-xtestautomation/framework/optional/includes/filedlg_triggers.inc274
-rwxr-xr-xtestautomation/framework/optional/includes/fontworkgallery.inc146
-rwxr-xr-xtestautomation/framework/optional/includes/help_bookmarks.inc201
-rwxr-xr-xtestautomation/framework/optional/includes/help_compare_applications.inc99
-rwxr-xr-xtestautomation/framework/optional/includes/help_compare_content.inc94
-rwxr-xr-xtestautomation/framework/optional/includes/help_compare_topics.inc127
-rwxr-xr-xtestautomation/framework/optional/includes/help_search.inc154
-rwxr-xr-xtestautomation/framework/optional/includes/help_view_topics.inc105
-rwxr-xr-xtestautomation/framework/optional/includes/loadsave_files.inc181
-rwxr-xr-xtestautomation/framework/optional/includes/loadsave_new.inc116
-rwxr-xr-xtestautomation/framework/optional/includes/menuentries.inc172
-rwxr-xr-xtestautomation/framework/optional/includes/ole_1.inc467
-rwxr-xr-xtestautomation/framework/optional/includes/ole_2.inc129
-rwxr-xr-xtestautomation/framework/optional/includes/ole_3.inc349
-rwxr-xr-xtestautomation/framework/optional/includes/ole_tools.inc461
-rwxr-xr-xtestautomation/framework/optional/includes/options_asia.inc641
-rwxr-xr-xtestautomation/framework/optional/includes/options_data.inc192
-rwxr-xr-xtestautomation/framework/optional/includes/options_int1.inc286
-rwxr-xr-xtestautomation/framework/optional/includes/options_lan1.inc894
-rwxr-xr-xtestautomation/framework/optional/includes/options_loadsave_general.inc284
-rwxr-xr-xtestautomation/framework/optional/includes/options_loadsave_html.inc220
-rwxr-xr-xtestautomation/framework/optional/includes/options_loadsave_msoffice.inc127
-rwxr-xr-xtestautomation/framework/optional/includes/options_loadsave_vba.inc129
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_accessibility.inc185
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_appearance.inc169
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_colors.inc206
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_fontreplacement.inc118
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_general.inc131
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_java.inc131
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_memory.inc219
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_paths.inc349
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_print.inc438
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_security.inc130
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_userdata.inc212
-rwxr-xr-xtestautomation/framework/optional/includes/options_ooo_view.inc243
-rwxr-xr-xtestautomation/framework/optional/includes/scripting_organizers.inc281
-rwxr-xr-xtestautomation/framework/optional/includes/security_broken_signature.inc71
-rwxr-xr-xtestautomation/framework/optional/includes/security_certification_dialogs.inc100
-rwxr-xr-xtestautomation/framework/optional/includes/security_certified_docs.inc143
-rwxr-xr-xtestautomation/framework/optional/includes/security_evilmacro1.inc100
-rwxr-xr-xtestautomation/framework/optional/includes/security_evilmacro2.inc89
-rwxr-xr-xtestautomation/framework/optional/includes/security_evilmacro3.inc95
-rwxr-xr-xtestautomation/framework/optional/includes/security_incorrect_password.inc130
-rwxr-xr-xtestautomation/framework/optional/includes/security_macrosecurity.inc184
-rwxr-xr-xtestautomation/framework/optional/includes/security_recommend_password.inc118
-rwxr-xr-xtestautomation/framework/optional/includes/security_trusted_path.inc86
-rwxr-xr-xtestautomation/framework/optional/includes/standardbar2.inc161
-rwxr-xr-xtestautomation/framework/optional/includes/toolbar_behavior.inc152
-rwxr-xr-xtestautomation/framework/optional/includes/w_grid_layout1.inc592
-rwxr-xr-xtestautomation/framework/optional/input/AppLibrary1/Dialog1.xdl8
-rwxr-xr-xtestautomation/framework/optional/input/AppLibrary1/Module1.xba8
-rwxr-xr-xtestautomation/framework/optional/input/AppLibrary1/Module2.xba8
-rwxr-xr-xtestautomation/framework/optional/input/AppLibrary1/dialog.xlb5
-rwxr-xr-xtestautomation/framework/optional/input/AppLibrary1/script.xlb6
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.odfbin0 -> 5631 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.odgbin0 -> 8864 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.odmbin0 -> 7274 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.odpbin0 -> 10802 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.odsbin0 -> 7328 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.odtbin0 -> 7262 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.sxcbin0 -> 7695 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.sxdbin0 -> 8165 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.sxgbin0 -> 7652 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.sxibin0 -> 9729 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.sxmbin0 -> 5111 bytes
-rw-r--r--testautomation/framework/optional/input/BasicDocs/basic.sxwbin0 -> 7632 bytes
-rwxr-xr-xtestautomation/framework/optional/input/CJK/FontSizeChanges_1.sxwbin0 -> 5231 bytes
-rwxr-xr-xtestautomation/framework/optional/input/CJK/IndentsTest.sxwbin0 -> 5515 bytes
-rwxr-xr-xtestautomation/framework/optional/input/CJK/graphicInPage.sxwbin0 -> 75327 bytes
-rwxr-xr-xtestautomation/framework/optional/input/CJK/gridtest.sxwbin0 -> 5341 bytes
-rwxr-xr-xtestautomation/framework/optional/input/CJK/objectsTest.sxwbin0 -> 7814 bytes
-rwxr-xr-xtestautomation/framework/optional/input/CJK/rubytest.sxwbin0 -> 5263 bytes
-rwxr-xr-xtestautomation/framework/optional/input/CJK/sortTest.sxwbin0 -> 5051 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/aendern.sdabin0 -> 39424 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/bereich.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/body.htm146
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/borabora.jpgbin0 -> 28566 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/columbia.dxf12638
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/erwin.sdwbin0 -> 8192 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/fdlg.sxcbin0 -> 4923 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/fdlg.sxdbin0 -> 6016 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/fdlg.sxgbin0 -> 4777 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/fdlg.sxibin0 -> 7338 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/fdlg.sxmbin0 -> 2954 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/fdlg.sxwbin0 -> 4776 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/ffortpf.smfbin0 -> 6656 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/ls3_3_15.sdsbin0 -> 59904 bytes
-rwxr-xr-xtestautomation/framework/optional/input/alldocs/schach.sddbin0 -> 65536 bytes
-rwxr-xr-xtestautomation/framework/optional/input/eventbinding/DialogComponent.odtbin0 -> 12541 bytes
-rwxr-xr-xtestautomation/framework/optional/input/eventbinding/DialogComponent.oxtbin0 -> 7588 bytes
-rwxr-xr-xtestautomation/framework/optional/input/extras_formats/Labels_en-US.txt1537
-rwxr-xr-xtestautomation/framework/optional/input/extras_formats/Tables_calc_en-US.txt17
-rwxr-xr-xtestautomation/framework/optional/input/extras_formats/Tables_writer_en-US.txt17
-rwxr-xr-xtestautomation/framework/optional/input/filetest/level1/level2/level3/filetest.txt6
-rwxr-xr-xtestautomation/framework/optional/input/filetest/level1/level2/level3/testdoc.sdwbin0 -> 15872 bytes
-rwxr-xr-xtestautomation/framework/optional/input/filetst2/spaces/filetest.txt6
-rwxr-xr-xtestautomation/framework/optional/input/filetst2/spaces/testdoc.sdwbin0 -> 15872 bytes
-rwxr-xr-xtestautomation/framework/optional/input/filternames/OpenOffice.org_Filternames_en-US.txt133
-rw-r--r--testautomation/framework/optional/input/filternames/Oracle_Open_Office_Filternames_add_en-US.txt87
-rw-r--r--testautomation/framework/optional/input/filternames/Oracle_Open_Office_Filternames_en-US.txt85
-rwxr-xr-xtestautomation/framework/optional/input/gridcontrol.odtbin0 -> 14075 bytes
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/OpenOffice.org_help_applications_en-US.txt8
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/OpenOffice.org_help_content_en-US.txt869
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/OpenOffice.org_help_topics_en-US.txt21949
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/OpenOffice.org_search_headings_and_whole_words_en-US.txt6
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/OpenOffice.org_search_headings_only_en-US.txt7
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/OpenOffice.org_search_whole_words_only_en-US.txt16
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/OpenOffice.org_search_without_filter_en-US.txt22
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/Oracle_Open_Office_help_applications_en-US.txt8
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/Oracle_Open_Office_help_content_en-US.txt868
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/Oracle_Open_Office_help_topics_en-US.txt21965
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/Oracle_Open_Office_search_headings_and_whole_words_en-US.txt6
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/Oracle_Open_Office_search_headings_only_en-US.txt7
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/Oracle_Open_Office_search_whole_words_only_en-US.txt16
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/Oracle_Open_Office_search_without_filter_en-US.txt22
-rwxr-xr-xtestautomation/framework/optional/input/menu/areadme.txt18
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_basic.txt57
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_calc.txt177
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_draw.txt157
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_htmldokument.txt172
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_impress.txt158
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_insight.txt82
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_masterdoc.txt194
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_math.txt85
-rwxr-xr-xtestautomation/framework/optional/input/menu/en-us_writer.txt195
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/01Cmulti.odsbin0 -> 6271 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/01Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/01Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/01Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/01Wmulti.odtbin0 -> 6475 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/01Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/02Cmulti.odsbin0 -> 6278 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/02Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/02Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/02Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/02Wmulti.odtbin0 -> 6477 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/02Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/03Cmulti.odsbin0 -> 6281 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/03Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/03Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/03Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/03Wmulti.odtbin0 -> 6475 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/03Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/04Cmulti.odsbin0 -> 6279 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/04Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/04Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/04Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/04Wmulti.odtbin0 -> 6478 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/04Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/05Cmulti.odsbin0 -> 6269 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/05Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/05Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/05Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/05Wmulti.odtbin0 -> 6479 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/05Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/06Cmulti.odsbin0 -> 6273 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/06Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/06Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/06Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/06Wmulti.odtbin0 -> 6477 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/06Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/07Cmulti.odsbin0 -> 6270 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/07Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/07Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/07Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/07Wmulti.odtbin0 -> 6482 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/07Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/08Cmulti.odsbin0 -> 6274 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/08Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/08Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/08Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/08Wmulti.odtbin0 -> 6479 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/08Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/09Cmulti.odsbin0 -> 6279 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/09Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/09Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/09Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/09Wmulti.odtbin0 -> 6477 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/09Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/10Cmulti.odsbin0 -> 6269 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/10Cmulti.sdcbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/10Cmulti.xlsbin0 -> 98304 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/10Wmulti.docbin0 -> 96256 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/10Wmulti.odtbin0 -> 6475 bytes
-rwxr-xr-xtestautomation/framework/optional/input/multiselect/10Wmulti.sdwbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/framework/optional/input/options/ooo_security_changed.ref13
-rwxr-xr-xtestautomation/framework/optional/input/options/ooo_security_defaults.ref13
-rwxr-xr-xtestautomation/framework/optional/input/options/ooo_view_changed.ref20
-rwxr-xr-xtestautomation/framework/optional/input/options/ooo_view_defaults.ref19
-rwxr-xr-xtestautomation/framework/optional/input/options/paths_1.txt15
-rwxr-xr-xtestautomation/framework/optional/input/resetregistration.txt63
-rwxr-xr-xtestautomation/framework/optional/input/security/DigitalSignature.odfbin0 -> 5563 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/DigitalSignature.odgbin0 -> 9301 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/DigitalSignature.odpbin0 -> 11002 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/DigitalSignature.odsbin0 -> 7944 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/DigitalSignature.odtbin0 -> 7851 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/autotest.p12bin0 -> 1821 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/readme.txt33
-rwxr-xr-xtestautomation/framework/optional/input/security/test_macro (signed).odtbin0 -> 8550 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/test_macro.html34
-rwxr-xr-xtestautomation/framework/optional/input/security/test_macro.odtbin0 -> 7407 bytes
-rwxr-xr-xtestautomation/framework/optional/input/security/test_macro.sxwbin0 -> 5049 bytes
-rw-r--r--testautomation/framework/optional/input/vba-compat/Book1.xlsbin0 -> 18432 bytes
-rwxr-xr-xtestautomation/framework/optional/input/vba-compat/vba-application-union.xlsbin0 -> 31744 bytes
-rw-r--r--testautomation/framework/optional/input/vba-compat/vba-compat-macros.txt30
-rwxr-xr-xtestautomation/framework/optional/input/vba-compat/vba-project.xlsbbin0 -> 19603 bytes
-rwxr-xr-xtestautomation/framework/optional/input/vba-compat/vba-project.xlsmbin0 -> 20276 bytes
-rwxr-xr-xtestautomation/framework/optional/input/vba-compat/vba-sample.xlsbin0 -> 31232 bytes
-rwxr-xr-xtestautomation/framework/optional/input/vba-compat/vba-test.xlsbin0 -> 48640 bytes
-rw-r--r--testautomation/framework/optional/input/vba-compat/vba-thisworkbook.xlsbin0 -> 39424 bytes
-rwxr-xr-xtestautomation/framework/required/f_help_browser.bas62
-rwxr-xr-xtestautomation/framework/required/f_printer_administration.bas58
-rw-r--r--testautomation/framework/required/f_programmability_dialogs.bas76
-rwxr-xr-xtestautomation/framework/required/f_security_dialogs.bas55
-rwxr-xr-xtestautomation/framework/required/f_standard_toolbar.bas71
-rwxr-xr-xtestautomation/framework/required/f_tools_customize.bas75
-rwxr-xr-xtestautomation/framework/required/f_tools_options.bas60
-rwxr-xr-xtestautomation/framework/required/f_topten.bas71
-rwxr-xr-xtestautomation/framework/required/f_window_functions.bas61
-rwxr-xr-xtestautomation/framework/required/f_wizards.bas84
-rwxr-xr-xtestautomation/framework/required/includes/basic_dialog_export.inc110
-rwxr-xr-xtestautomation/framework/required/includes/basic_dialog_i18n.inc133
-rw-r--r--testautomation/framework/required/includes/basic_dialog_i18n_import.inc154
-rwxr-xr-xtestautomation/framework/required/includes/basic_macroassignment.inc126
-rwxr-xr-xtestautomation/framework/required/includes/basic_organizer.inc228
-rwxr-xr-xtestautomation/framework/required/includes/first.inc399
-rwxr-xr-xtestautomation/framework/required/includes/help_browser.inc195
-rwxr-xr-xtestautomation/framework/required/includes/printer_administration.inc271
-rwxr-xr-xtestautomation/framework/required/includes/script_organizers.inc203
-rw-r--r--testautomation/framework/required/includes/scripting_basics.inc74
-rwxr-xr-xtestautomation/framework/required/includes/security_dialogs.inc186
-rwxr-xr-xtestautomation/framework/required/includes/smoketest.inc210
-rwxr-xr-xtestautomation/framework/required/includes/standard_toolbar_1.inc77
-rwxr-xr-xtestautomation/framework/required/includes/standard_toolbar_3.inc256
-rwxr-xr-xtestautomation/framework/required/includes/standard_toolbar_4.inc65
-rwxr-xr-xtestautomation/framework/required/includes/standard_toolbar_5.inc78
-rwxr-xr-xtestautomation/framework/required/includes/standard_toolbar_6.inc141
-rwxr-xr-xtestautomation/framework/required/includes/tools_customize.inc731
-rwxr-xr-xtestautomation/framework/required/includes/tools_options.inc90
-rwxr-xr-xtestautomation/framework/required/includes/topten.inc326
-rwxr-xr-xtestautomation/framework/required/includes/window_functions.inc299
-rwxr-xr-xtestautomation/framework/required/includes/wizard_agenda.inc102
-rwxr-xr-xtestautomation/framework/required/includes/wizard_documentconverter.inc146
-rwxr-xr-xtestautomation/framework/required/includes/wizard_euroconverter.inc127
-rwxr-xr-xtestautomation/framework/required/includes/wizard_fax.inc93
-rwxr-xr-xtestautomation/framework/required/includes/wizard_firsttime.inc225
-rwxr-xr-xtestautomation/framework/required/includes/wizard_letter.inc191
-rwxr-xr-xtestautomation/framework/required/includes/wizard_mailmerge.inc1211
-rwxr-xr-xtestautomation/framework/required/includes/wizard_presentation.inc72
-rwxr-xr-xtestautomation/framework/required/includes/wizard_webpage.inc212
-rwxr-xr-xtestautomation/framework/required/input/10erTest_680.sxwbin0 -> 32670 bytes
-rw-r--r--testautomation/framework/required/input/basic_ide/Dialog5.xdl7
-rw-r--r--testautomation/framework/required/input/basic_ide/Dialog5_ar_DZ.default0
-rw-r--r--testautomation/framework/required/input/basic_ide/Dialog5_ar_DZ.properties6
-rw-r--r--testautomation/framework/required/input/basic_ide/Dialog5_ca_ES.properties6
-rw-r--r--testautomation/framework/required/input/basic_ide/Dialog5_de_DE.properties6
-rw-r--r--testautomation/framework/required/input/basic_ide/Dialog5_en_US.properties6
-rw-r--r--testautomation/framework/required/input/basic_ide/Dialog5_fr_FR.properties6
-rwxr-xr-xtestautomation/framework/required/input/document_converter/docconv1.sdwbin0 -> 15360 bytes
-rwxr-xr-xtestautomation/framework/required/input/mailmerge_data.odbbin0 -> 3524 bytes
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_BasicOrganizer.txt657
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_BeanShell.txt14
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_JavaScript.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_Python.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_RunMacro.txt681
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_osx_BasicOrganizer.txt657
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_osx_BeanShell.txt14
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_osx_JavaScript.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_osx_Python.txt8
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_osx_RunMacro.txt679
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_win_BasicOrganizer.txt657
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_win_BeanShell.txt14
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_win_JavaScript.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_win_Python.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/OpenOffice.org_en-US_win_RunMacro.txt681
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_BasicOrganizer.txt663
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_BeanShell.txt14
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_JavaScript.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_Python.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_RunMacro.txt687
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_osx_BasicOrganizer.txt660
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_osx_BeanShell.txt14
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_osx_JavaScript.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_osx_Python.txt8
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_osx_RunMacro.txt682
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_win_BasicOrganizer.txt657
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_win_BeanShell.txt14
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_win_JavaScript.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_win_Python.txt10
-rwxr-xr-xtestautomation/framework/required/input/scripts/Oracle-Open-Office_en-US_win_RunMacro.txt681
-rwxr-xr-xtestautomation/framework/tools/includes/CJK_tools.inc325
-rwxr-xr-xtestautomation/framework/tools/includes/customize_tools.inc186
-rwxr-xr-xtestautomation/framework/tools/includes/fileoperations.inc723
-rwxr-xr-xtestautomation/framework/tools/includes/formcontrols.inc800
-rwxr-xr-xtestautomation/framework/tools/includes/help_tools.inc239
-rwxr-xr-xtestautomation/framework/tools/includes/i18n_tools.inc105
-rwxr-xr-xtestautomation/framework/tools/includes/options_tools.inc326
-rwxr-xr-xtestautomation/framework/tools/includes/pbrowser_tools.inc329
-rwxr-xr-xtestautomation/framework/tools/includes/private_environment.inc335
-rwxr-xr-xtestautomation/framework/tools/includes/scriptorganizer_tools.inc291
-rwxr-xr-xtestautomation/framework/tools/includes/spadmin_tools.inc257
-rwxr-xr-xtestautomation/framework/tools/includes/template_tools.inc472
-rwxr-xr-xtestautomation/framework/tools/includes/toolbar_tools.inc516
-rwxr-xr-xtestautomation/framework/tools/includes/webtools.inc153
-rwxr-xr-xtestautomation/framework/tools/includes/window_tools.inc86
-rwxr-xr-xtestautomation/framework/tools/includes/wizards.inc274
-rwxr-xr-xtestautomation/framework/tools/input/i18ndata.txt45
-rw-r--r--testautomation/global/hid/readme.txt130
-rwxr-xr-xtestautomation/global/input/accelerators.txt161
-rwxr-xr-xtestautomation/global/input/applications.txt40
-rw-r--r--testautomation/global/input/empty/please_do_not_delete_this_file3
-rw-r--r--testautomation/global/input/filters/api_filternames.txt331
-rw-r--r--testautomation/global/input/filters/build_to_filter.txt68
-rw-r--r--testautomation/global/input/filters/build_to_suffix.txt68
-rw-r--r--testautomation/global/input/filters/graphic_filters.txt26
-rwxr-xr-xtestautomation/global/input/filters/native_suffixes.dat53
-rwxr-xr-xtestautomation/global/input/graf_inp/airshw.metbin0 -> 142702 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/baer.tifbin0 -> 67790 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/ball.epsbin0 -> 582053 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/borabora.jpgbin0 -> 28566 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/circle.pcxbin0 -> 76917 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/columbia.dxf12638
-rwxr-xr-xtestautomation/global/input/graf_inp/desp.bmpbin0 -> 236746 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/eface.gifbin0 -> 163067 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/enter.bmpbin0 -> 42278 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/extrud.emfbin0 -> 59320 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/faxpfeil.sgvbin0 -> 1291 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/grafix1.pbmbin0 -> 24106 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/grafix2.pgmbin0 -> 191590 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/grafix3.rasbin0 -> 237488 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/grafix4.xbm2011
-rwxr-xr-xtestautomation/global/input/graf_inp/graph_ex.metbin0 -> 237285 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/graph_ex.pngbin0 -> 406588 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/graph_ex.ppm63414
-rwxr-xr-xtestautomation/global/input/graf_inp/krokodil.wmfbin0 -> 225136 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/london.ppmbin0 -> 1179663 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/mickym.sgfbin0 -> 26501 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/newtonme.pctbin0 -> 217008 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/obst.pngbin0 -> 114792 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/papagei1.pcdbin0 -> 3944448 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/papagei2.xpm629
-rwxr-xr-xtestautomation/global/input/graf_inp/picture.svmbin0 -> 17929 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/pilz.tgabin0 -> 318936 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/purzel.gifbin0 -> 18909 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/stabler.tifbin0 -> 492359 bytes
-rwxr-xr-xtestautomation/global/input/graf_inp/tiger.psdbin0 -> 523335 bytes
-rwxr-xr-xtestautomation/global/input/java/Clock.classbin0 -> 4775 bytes
-rwxr-xr-xtestautomation/global/input/java/Clock.java227
-rw-r--r--testautomation/global/input/java/java.htm47
-rwxr-xr-xtestautomation/global/input/macros.txt326
-rw-r--r--testautomation/global/input/officeinfo.txt4
-rw-r--r--testautomation/global/input/proxies.txt25
-rw-r--r--testautomation/global/input/servers.txt50
-rw-r--r--testautomation/global/input/xml_filter/docbook.xml210
-rwxr-xr-xtestautomation/global/input/xml_filter/excel.xml74
-rwxr-xr-xtestautomation/global/input/xml_filter/word.xml4
-rwxr-xr-xtestautomation/global/input/xslt_stylesheets/docbook.jarbin0 -> 17693 bytes
-rwxr-xr-xtestautomation/global/input/xslt_stylesheets/excel.jarbin0 -> 47729 bytes
-rwxr-xr-xtestautomation/global/input/xslt_stylesheets/word.jarbin0 -> 9063 bytes
-rwxr-xr-xtestautomation/global/input/xslt_stylesheets/xhtml.jarbin0 -> 16829 bytes
-rwxr-xr-xtestautomation/global/required/includes/g_001.inc149
-rwxr-xr-xtestautomation/global/required/includes/g_009.inc178
-rw-r--r--testautomation/global/required/includes/g_customize.inc331
-rw-r--r--testautomation/global/required/includes/g_findbar.inc159
-rwxr-xr-xtestautomation/global/required/includes/g_numberformatter1.inc787
-rwxr-xr-xtestautomation/global/required/includes/g_option.inc863
-rwxr-xr-xtestautomation/global/required/includes/g_option_application.inc664
-rw-r--r--testautomation/global/required/includes/g_printing.inc518
-rw-r--r--testautomation/global/sid/all.sid648
-rwxr-xr-xtestautomation/global/sid/bars.sid747
-rw-r--r--testautomation/global/sid/basic.sid12
-rw-r--r--testautomation/global/sid/context.sid40
-rw-r--r--testautomation/global/sid/e_all.sid966
-rw-r--r--testautomation/global/sid/others.sid40
-rw-r--r--testautomation/global/sid/sop.sid18
-rwxr-xr-xtestautomation/global/system/includes/declare.inc361
-rwxr-xr-xtestautomation/global/system/includes/gvariabl.inc266
-rwxr-xr-xtestautomation/global/system/includes/iniinfo.inc1157
-rwxr-xr-xtestautomation/global/system/includes/inivalue.inc236
-rwxr-xr-xtestautomation/global/system/includes/master.inc1246
-rwxr-xr-xtestautomation/global/system/includes/status.inc715
-rwxr-xr-xtestautomation/global/system/includes/sysinfo.inc412
-rw-r--r--testautomation/global/tools/closeoffice.bas48
-rwxr-xr-xtestautomation/global/tools/compressstatus.bas188
-rwxr-xr-xtestautomation/global/tools/declare.bas84
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_accels.inc124
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_basic_ide_tools.inc816
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_basic_organizer_tools.inc356
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_control_objects.inc611
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_docfuncs.inc475
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_extension_manager_tools.inc780
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_filetools.inc412
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_key_tools.inc563
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_listfuncs.inc464
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_locale_strings1.inc569
-rw-r--r--testautomation/global/tools/includes/optional/t_locale_tools.inc92
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_macro_tools.inc175
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_ole.inc143
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_security_tools.inc668
-rw-r--r--testautomation/global/tools/includes/optional/t_set_standard_controls.inc646
-rw-r--r--testautomation/global/tools/includes/optional/t_spreadsheet_tools1.inc84
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_stringtools.inc355
-rw-r--r--testautomation/global/tools/includes/optional/t_toolbar_tools1.inc418
-rw-r--r--testautomation/global/tools/includes/optional/t_toolbar_writer.inc766
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_treelist_tools.inc485
-rw-r--r--testautomation/global/tools/includes/optional/t_ui_filters.inc131
-rw-r--r--testautomation/global/tools/includes/optional/t_user_info.inc56
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_xml1.inc652
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_xml2.inc492
-rw-r--r--testautomation/global/tools/includes/optional/t_xml_filter1.inc822
-rwxr-xr-xtestautomation/global/tools/includes/required/t_dir.inc291
-rwxr-xr-xtestautomation/global/tools/includes/required/t_doc1.inc453
-rwxr-xr-xtestautomation/global/tools/includes/required/t_doc2.inc387
-rwxr-xr-xtestautomation/global/tools/includes/required/t_files.inc770
-rwxr-xr-xtestautomation/global/tools/includes/required/t_filters.inc549
-rwxr-xr-xtestautomation/global/tools/includes/required/t_lists.inc599
-rwxr-xr-xtestautomation/global/tools/includes/required/t_menu.inc918
-rwxr-xr-xtestautomation/global/tools/includes/required/t_option.inc556
-rw-r--r--testautomation/global/tools/includes/required/t_option2.inc554
-rwxr-xr-xtestautomation/global/tools/includes/required/t_tools1.inc1148
-rwxr-xr-xtestautomation/global/tools/includes/required/t_tools2.inc762
-rwxr-xr-xtestautomation/global/tools/includes/required/t_tools3.inc1256
-rwxr-xr-xtestautomation/global/tools/resetoffice.bas75
-rwxr-xr-xtestautomation/global/tools/wintree.bas39
-rwxr-xr-xtestautomation/global/win/bars.win1402
-rwxr-xr-xtestautomation/global/win/dial_a_c.win294
-rwxr-xr-xtestautomation/global/win/dial_d_h.win587
-rwxr-xr-xtestautomation/global/win/dial_i_o.win455
-rwxr-xr-xtestautomation/global/win/dial_p_s.win396
-rwxr-xr-xtestautomation/global/win/dial_t_z.win332
-rwxr-xr-xtestautomation/global/win/dokument.win75
-rwxr-xr-xtestautomation/global/win/e_mathop.win202
-rwxr-xr-xtestautomation/global/win/edia_a_c.win478
-rwxr-xr-xtestautomation/global/win/edia_d_h.win508
-rwxr-xr-xtestautomation/global/win/edia_i_o.win303
-rw-r--r--testautomation/global/win/edia_p_s.win627
-rwxr-xr-xtestautomation/global/win/edia_t_z.win308
-rwxr-xr-xtestautomation/global/win/etab_a_d.win474
-rwxr-xr-xtestautomation/global/win/etab_e_g.win374
-rwxr-xr-xtestautomation/global/win/etab_h_o.win239
-rwxr-xr-xtestautomation/global/win/etab_p_s.win121
-rwxr-xr-xtestautomation/global/win/etab_t_z.win149
-rwxr-xr-xtestautomation/global/win/etoolbox.win61
-rwxr-xr-xtestautomation/global/win/mathop.win204
-rwxr-xr-xtestautomation/global/win/piloten.win74
-rwxr-xr-xtestautomation/global/win/reportdesigner.win86
-rwxr-xr-xtestautomation/global/win/spadmin.win107
-rwxr-xr-xtestautomation/global/win/sys_dial.win133
-rwxr-xr-xtestautomation/global/win/tab_a_d.win374
-rwxr-xr-xtestautomation/global/win/tab_e_g.win302
-rwxr-xr-xtestautomation/global/win/tab_h_o.win489
-rwxr-xr-xtestautomation/global/win/tab_p_s.win287
-rwxr-xr-xtestautomation/global/win/tab_t_z.win401
-rwxr-xr-xtestautomation/global/win/w_autop.win29
-rw-r--r--testautomation/graphics/optional/d_export_graphic_a.bas74
-rw-r--r--testautomation/graphics/optional/d_export_graphic_b.bas73
-rw-r--r--testautomation/graphics/optional/export_graphic_a.bas73
-rw-r--r--testautomation/graphics/optional/export_graphic_b.bas73
-rw-r--r--testautomation/graphics/optional/g_accessability.bas60
-rw-r--r--testautomation/graphics/optional/g_area.bas57
-rw-r--r--testautomation/graphics/optional/g_arrangealign.bas79
-rw-r--r--testautomation/graphics/optional/g_autocorrection.bas71
-rw-r--r--testautomation/graphics/optional/g_character.bas66
-rw-r--r--testautomation/graphics/optional/g_clipboard.bas76
-rw-r--r--testautomation/graphics/optional/g_clipexport.bas68
-rw-r--r--testautomation/graphics/optional/g_convertto.bas73
-rw-r--r--testautomation/graphics/optional/g_crossfading.bas57
-rw-r--r--testautomation/graphics/optional/g_customshapes.bas59
-rw-r--r--testautomation/graphics/optional/g_demoguide.bas56
-rw-r--r--testautomation/graphics/optional/g_dimensions.bas55
-rw-r--r--testautomation/graphics/optional/g_edit.bas69
-rw-r--r--testautomation/graphics/optional/g_export_html.bas62
-rw-r--r--testautomation/graphics/optional/g_findreplace.bas60
-rw-r--r--testautomation/graphics/optional/g_format.bas70
-rw-r--r--testautomation/graphics/optional/g_group.bas57
-rw-r--r--testautomation/graphics/optional/g_imagemap.bas58
-rw-r--r--testautomation/graphics/optional/g_insert.bas90
-rw-r--r--testautomation/graphics/optional/g_line.bas58
-rw-r--r--testautomation/graphics/optional/g_load_save.bas89
-rw-r--r--testautomation/graphics/optional/g_mediaplayer.bas56
-rw-r--r--testautomation/graphics/optional/g_navigator.bas64
-rw-r--r--testautomation/graphics/optional/g_ole.bas61
-rw-r--r--testautomation/graphics/optional/g_paneview.bas62
-rw-r--r--testautomation/graphics/optional/g_paragraph.bas56
-rw-r--r--testautomation/graphics/optional/g_savepictureas.bas65
-rw-r--r--testautomation/graphics/optional/g_shaddow.bas60
-rw-r--r--testautomation/graphics/optional/g_slidelayer.bas69
-rw-r--r--testautomation/graphics/optional/g_spellcheck.bas68
-rw-r--r--testautomation/graphics/optional/g_stylist.bas99
-rw-r--r--testautomation/graphics/optional/g_tables.bas65
-rw-r--r--testautomation/graphics/optional/g_toolbars.bas69
-rw-r--r--testautomation/graphics/optional/g_tools.bas69
-rw-r--r--testautomation/graphics/optional/g_zoom.bas57
-rw-r--r--testautomation/graphics/optional/gallery.bas65
-rw-r--r--testautomation/graphics/optional/gallery2.bas63
-rw-r--r--testautomation/graphics/optional/i_animation.bas52
-rw-r--r--testautomation/graphics/optional/i_headerfooter.bas54
-rw-r--r--testautomation/graphics/optional/i_only_updt_1.bas77
-rw-r--r--testautomation/graphics/optional/i_only_updt_2.bas76
-rw-r--r--testautomation/graphics/optional/i_pengine.bas78
-rw-r--r--testautomation/graphics/optional/i_saveloadlayout.bas56
-rw-r--r--testautomation/graphics/optional/i_shape.bas56
-rw-r--r--testautomation/graphics/optional/i_slidecopy.bas62
-rw-r--r--testautomation/graphics/optional/i_slideshow.bas92
-rw-r--r--testautomation/graphics/optional/i_us_presentation.bas64
-rw-r--r--testautomation/graphics/optional/i_view.bas60
-rw-r--r--testautomation/graphics/optional/includes/draw/d_002_.inc109
-rw-r--r--testautomation/graphics/optional/includes/draw/d_003_.inc82
-rw-r--r--testautomation/graphics/optional/includes/draw/d_005_.inc51
-rw-r--r--testautomation/graphics/optional/includes/draw/d_007.inc47
-rw-r--r--testautomation/graphics/optional/includes/global/export_graphic.inc553
-rw-r--r--testautomation/graphics/optional/includes/global/export_graphic_2.inc1488
-rw-r--r--testautomation/graphics/optional/includes/global/g_accessability.inc297
-rw-r--r--testautomation/graphics/optional/includes/global/g_area.inc407
-rw-r--r--testautomation/graphics/optional/includes/global/g_arrangealign.inc309
-rw-r--r--testautomation/graphics/optional/includes/global/g_autocorrection.inc460
-rw-r--r--testautomation/graphics/optional/includes/global/g_character.inc714
-rw-r--r--testautomation/graphics/optional/includes/global/g_clipboard.inc469
-rw-r--r--testautomation/graphics/optional/includes/global/g_clipexport.inc490
-rw-r--r--testautomation/graphics/optional/includes/global/g_clipexport2.inc429
-rw-r--r--testautomation/graphics/optional/includes/global/g_clipexport3.inc729
-rw-r--r--testautomation/graphics/optional/includes/global/g_convertto.inc369
-rw-r--r--testautomation/graphics/optional/includes/global/g_crossfading.inc267
-rw-r--r--testautomation/graphics/optional/includes/global/g_customshapes.inc848
-rw-r--r--testautomation/graphics/optional/includes/global/g_demoguide.inc501
-rw-r--r--testautomation/graphics/optional/includes/global/g_dimensions.inc116
-rw-r--r--testautomation/graphics/optional/includes/global/g_edit.inc294
-rw-r--r--testautomation/graphics/optional/includes/global/g_export_html.inc757
-rw-r--r--testautomation/graphics/optional/includes/global/g_find_replace.inc363
-rw-r--r--testautomation/graphics/optional/includes/global/g_format.inc1253
-rw-r--r--testautomation/graphics/optional/includes/global/g_group.inc107
-rw-r--r--testautomation/graphics/optional/includes/global/g_imagemap.inc159
-rw-r--r--testautomation/graphics/optional/includes/global/g_insert.inc1227
-rw-r--r--testautomation/graphics/optional/includes/global/g_line.inc533
-rw-r--r--testautomation/graphics/optional/includes/global/g_load_save.inc783
-rw-r--r--testautomation/graphics/optional/includes/global/g_mediaplayer.inc256
-rw-r--r--testautomation/graphics/optional/includes/global/g_navigator.inc309
-rw-r--r--testautomation/graphics/optional/includes/global/g_ole.inc458
-rw-r--r--testautomation/graphics/optional/includes/global/g_paneview.inc535
-rw-r--r--testautomation/graphics/optional/includes/global/g_paragraph.inc211
-rw-r--r--testautomation/graphics/optional/includes/global/g_savepictureas.inc773
-rw-r--r--testautomation/graphics/optional/includes/global/g_shaddow.inc513
-rw-r--r--testautomation/graphics/optional/includes/global/g_slidelayer.inc92
-rw-r--r--testautomation/graphics/optional/includes/global/g_spellcheck.inc917
-rw-r--r--testautomation/graphics/optional/includes/global/g_stylist.inc1020
-rw-r--r--testautomation/graphics/optional/includes/global/g_tables.inc583
-rw-r--r--testautomation/graphics/optional/includes/global/g_toolbars.inc358
-rw-r--r--testautomation/graphics/optional/includes/global/g_tools.inc582
-rw-r--r--testautomation/graphics/optional/includes/global/g_zoom.inc133
-rw-r--r--testautomation/graphics/optional/includes/global/gallery.inc954
-rw-r--r--testautomation/graphics/optional/includes/global/gallery2.inc258
-rw-r--r--testautomation/graphics/optional/includes/global/id_001.inc725
-rw-r--r--testautomation/graphics/optional/includes/global/id_002.inc440
-rw-r--r--testautomation/graphics/optional/includes/global/id_003.inc264
-rw-r--r--testautomation/graphics/optional/includes/global/id_004.inc370
-rw-r--r--testautomation/graphics/optional/includes/global/id_005.inc808
-rw-r--r--testautomation/graphics/optional/includes/global/id_006.inc362
-rw-r--r--testautomation/graphics/optional/includes/global/id_007.inc426
-rw-r--r--testautomation/graphics/optional/includes/global/id_008.inc71
-rw-r--r--testautomation/graphics/optional/includes/global/id_009.inc243
-rw-r--r--testautomation/graphics/optional/includes/global/id_011.inc995
-rw-r--r--testautomation/graphics/optional/includes/impress/i_animation.inc187
-rw-r--r--testautomation/graphics/optional/includes/impress/i_headerfooter.inc685
-rw-r--r--testautomation/graphics/optional/includes/impress/i_pengine.inc762
-rw-r--r--testautomation/graphics/optional/includes/impress/i_pengine1.inc1356
-rw-r--r--testautomation/graphics/optional/includes/impress/i_pengine2.inc609
-rw-r--r--testautomation/graphics/optional/includes/impress/i_saveloadlayout.inc175
-rw-r--r--testautomation/graphics/optional/includes/impress/i_shape.inc89
-rw-r--r--testautomation/graphics/optional/includes/impress/i_slidecopy.inc979
-rw-r--r--testautomation/graphics/optional/includes/impress/i_slidelayer.inc522
-rw-r--r--testautomation/graphics/optional/includes/impress/i_slideshow.inc1236
-rw-r--r--testautomation/graphics/optional/includes/impress/i_slideshow2.inc1011
-rw-r--r--testautomation/graphics/optional/includes/impress/i_slideshow3.inc1103
-rw-r--r--testautomation/graphics/optional/includes/impress/i_stylist.inc157
-rw-r--r--testautomation/graphics/optional/includes/impress/i_us2_present.inc332
-rw-r--r--testautomation/graphics/optional/includes/impress/i_us_present.inc694
-rw-r--r--testautomation/graphics/optional/includes/impress/i_view.inc318
-rw-r--r--testautomation/graphics/optional/includes/impress/im_002_.inc52
-rw-r--r--testautomation/graphics/optional/includes/impress/im_003_.inc254
-rw-r--r--testautomation/graphics/optional/includes/impress/im_004_.inc58
-rw-r--r--testautomation/graphics/optional/includes/impress/im_005_.inc50
-rw-r--r--testautomation/graphics/optional/includes/impress/im_007_.inc693
-rw-r--r--testautomation/graphics/optional/includes/impress/im_011_.inc173
-rw-r--r--testautomation/graphics/optional/includes/impress/options.inc270
-rw-r--r--testautomation/graphics/required/d_opt.bas72
-rw-r--r--testautomation/graphics/required/d_updt.bas92
-rw-r--r--testautomation/graphics/required/i_opt.bas74
-rw-r--r--testautomation/graphics/required/i_updt_1.bas75
-rw-r--r--testautomation/graphics/required/i_updt_2.bas79
-rw-r--r--testautomation/graphics/required/includes/draw/d_002_.inc117
-rw-r--r--testautomation/graphics/required/includes/draw/d_003_.inc91
-rw-r--r--testautomation/graphics/required/includes/draw/d_005_.inc59
-rw-r--r--testautomation/graphics/required/includes/draw/d_007.inc55
-rw-r--r--testautomation/graphics/required/includes/global/gallery.inc987
-rw-r--r--testautomation/graphics/required/includes/global/gallery2.inc290
-rw-r--r--testautomation/graphics/required/includes/global/id_001.inc809
-rw-r--r--testautomation/graphics/required/includes/global/id_002.inc572
-rw-r--r--testautomation/graphics/required/includes/global/id_003.inc343
-rw-r--r--testautomation/graphics/required/includes/global/id_004.inc502
-rw-r--r--testautomation/graphics/required/includes/global/id_005.inc1013
-rw-r--r--testautomation/graphics/required/includes/global/id_006.inc475
-rw-r--r--testautomation/graphics/required/includes/global/id_007.inc563
-rw-r--r--testautomation/graphics/required/includes/global/id_008.inc75
-rw-r--r--testautomation/graphics/required/includes/global/id_009.inc282
-rw-r--r--testautomation/graphics/required/includes/global/id_011.inc1157
-rw-r--r--testautomation/graphics/required/includes/global/id_opt_1.inc1054
-rw-r--r--testautomation/graphics/required/includes/global/id_opt_2.inc133
-rw-r--r--testautomation/graphics/required/includes/impress/i_opt_1_.inc197
-rw-r--r--testautomation/graphics/required/includes/impress/im_002_.inc57
-rw-r--r--testautomation/graphics/required/includes/impress/im_003_.inc263
-rw-r--r--testautomation/graphics/required/includes/impress/im_004_.inc65
-rw-r--r--testautomation/graphics/required/includes/impress/im_005_.inc63
-rw-r--r--testautomation/graphics/required/includes/impress/im_007_.inc735
-rw-r--r--testautomation/graphics/required/includes/impress/im_011_.inc180
-rwxr-xr-xtestautomation/graphics/required/input/255chars.dxf40724
-rwxr-xr-xtestautomation/graphics/required/input/29secsound.wavbin0 -> 5204330 bytes
-rwxr-xr-xtestautomation/graphics/required/input/Blueprint.odgbin0 -> 34747 bytes
-rwxr-xr-xtestautomation/graphics/required/input/FormatConnector.odgbin0 -> 7205 bytes
-rwxr-xr-xtestautomation/graphics/required/input/FormatConnector.odpbin0 -> 8965 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.PSDbin0 -> 122042 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.bmpbin0 -> 1456904 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.cgmbin0 -> 10850 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.dxf1234
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.emfbin0 -> 1457144 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.epsbin0 -> 36862 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.gifbin0 -> 61548 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.giffbin0 -> 109193 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.jpegbin0 -> 10520 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.jpgbin0 -> 31861 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.metbin0 -> 1458043 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.pbmbin0 -> 61015 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.pcdbin0 -> 3944448 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.pctbin0 -> 152900 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.pcxbin0 -> 76917 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.pgm3
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.pngbin0 -> 57476 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.ppm218
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.rasbin0 -> 773076 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.sgfbin0 -> 23794 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.sgvbin0 -> 1212 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.svmbin0 -> 1456971 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.tgabin0 -> 318936 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.tifbin0 -> 222342 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.tiffbin0 -> 154374 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.wmfbin0 -> 486926 bytes
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.xbm29
-rwxr-xr-xtestautomation/graphics/required/input/SaveAsPicture/SaveAsPicture.xpm866
-rwxr-xr-xtestautomation/graphics/required/input/allshapes.odpbin0 -> 38069 bytes
-rwxr-xr-xtestautomation/graphics/required/input/allshapes2.odpbin0 -> 33965 bytes
-rwxr-xr-xtestautomation/graphics/required/input/blip.wavbin0 -> 176444 bytes
-rwxr-xr-xtestautomation/graphics/required/input/diashow.odpbin0 -> 233833 bytes
-rwxr-xr-xtestautomation/graphics/required/input/dotNetOverview.pptbin0 -> 6485504 bytes
-rwxr-xr-xtestautomation/graphics/required/input/effects.odpbin0 -> 6174 bytes
-rwxr-xr-xtestautomation/graphics/required/input/einfg.ini14
-rwxr-xr-xtestautomation/graphics/required/input/engtext.odgbin0 -> 7980 bytes
-rwxr-xr-xtestautomation/graphics/required/input/engtext.odpbin0 -> 9878 bytes
-rwxr-xr-xtestautomation/graphics/required/input/export_graphic2.odpbin0 -> 1526400 bytes
-rwxr-xr-xtestautomation/graphics/required/input/export_graphic3.odgbin0 -> 186696 bytes
-rwxr-xr-xtestautomation/graphics/required/input/export_graphic3.odpbin0 -> 188029 bytes
-rwxr-xr-xtestautomation/graphics/required/input/frame1.htm16
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_1.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_31.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_33.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_34.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_36.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_39.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_46.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_48.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_49.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_55.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_7.txt30
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_81.txt29
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_82.txt29
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_86.txt29
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_88.txt29
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_oo_1.txt6
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_oo_49.txt6
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_oo_50.txt6
-rwxr-xr-xtestautomation/graphics/required/input/gallery/gal_oo_84.txt6
-rwxr-xr-xtestautomation/graphics/required/input/generic_de.pptbin0 -> 741376 bytes
-rwxr-xr-xtestautomation/graphics/required/input/graphicexport.odgbin0 -> 115305 bytes
-rwxr-xr-xtestautomation/graphics/required/input/graphicexport.odpbin0 -> 852873 bytes
-rwxr-xr-xtestautomation/graphics/required/input/graphicexport_pdf.odgbin0 -> 120020 bytes
-rwxr-xr-xtestautomation/graphics/required/input/graphicexport_pdf.odpbin0 -> 1676079 bytes
-rwxr-xr-xtestautomation/graphics/required/input/gridtst.odgbin0 -> 7223 bytes
-rwxr-xr-xtestautomation/graphics/required/input/gridtst.odpbin0 -> 8449 bytes
-rwxr-xr-xtestautomation/graphics/required/input/gridtst.sxdbin0 -> 5347 bytes
-rwxr-xr-xtestautomation/graphics/required/input/gridtst.sxibin0 -> 6519 bytes
-rwxr-xr-xtestautomation/graphics/required/input/i_us_large.jpgbin0 -> 6483577 bytes
-rwxr-xr-xtestautomation/graphics/required/input/imsusmap.cgmbin0 -> 15536 bytes
-rwxr-xr-xtestautomation/graphics/required/input/leer.odgbin0 -> 7108 bytes
-rwxr-xr-xtestautomation/graphics/required/input/leer.odpbin0 -> 9050 bytes
-rwxr-xr-xtestautomation/graphics/required/input/ole.bmpbin0 -> 2672794 bytes
-rwxr-xr-xtestautomation/graphics/required/input/oletest.odgbin0 -> 32898 bytes
-rwxr-xr-xtestautomation/graphics/required/input/outlinefromwriter.odtbin0 -> 7818 bytes
-rwxr-xr-xtestautomation/graphics/required/input/passwo52.sdabin0 -> 30720 bytes
-rwxr-xr-xtestautomation/graphics/required/input/passwo52.sddbin0 -> 32256 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_1.odgbin0 -> 10261 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_1.odpbin0 -> 13772 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_3.odgbin0 -> 10506 bytes
-rw-r--r--testautomation/graphics/required/input/recht_3.odpbin0 -> 12737 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_31.odgbin0 -> 9606 bytes
-rw-r--r--testautomation/graphics/required/input/recht_31.odpbin0 -> 14160 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_33.odgbin0 -> 9773 bytes
-rw-r--r--testautomation/graphics/required/input/recht_33.odpbin0 -> 13251 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_34.odgbin0 -> 9659 bytes
-rw-r--r--testautomation/graphics/required/input/recht_34.odpbin0 -> 19479 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_36.odgbin0 -> 9896 bytes
-rw-r--r--testautomation/graphics/required/input/recht_36.odpbin0 -> 14155 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_39.odgbin0 -> 9123 bytes
-rw-r--r--testautomation/graphics/required/input/recht_39.odpbin0 -> 12338 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_46.odgbin0 -> 11019 bytes
-rw-r--r--testautomation/graphics/required/input/recht_46.odpbin0 -> 19434 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_48.odgbin0 -> 10064 bytes
-rw-r--r--testautomation/graphics/required/input/recht_48.odpbin0 -> 13346 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_48.sxdbin0 -> 6627 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_48.sxibin0 -> 7578 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_49.odgbin0 -> 11187 bytes
-rw-r--r--testautomation/graphics/required/input/recht_49.odpbin0 -> 12783 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_50.odgbin0 -> 8882 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_50.odpbin0 -> 10544 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_55.odgbin0 -> 10281 bytes
-rw-r--r--testautomation/graphics/required/input/recht_55.odpbin0 -> 18380 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_81.odgbin0 -> 18373 bytes
-rwxr-xr-xtestautomation/graphics/required/input/recht_81.odpbin0 -> 10934 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont.odgbin0 -> 7647 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont.odpbin0 -> 9412 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont1.odgbin0 -> 7679 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont1.odpbin0 -> 9444 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont33.odgbin0 -> 7682 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont33.odpbin0 -> 9448 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont34.odgbin0 -> 7681 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont34.odpbin0 -> 9445 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont36.odgbin0 -> 7682 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont36.odpbin0 -> 9446 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont39.odgbin0 -> 7680 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont39.odpbin0 -> 9445 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont46.odgbin0 -> 7682 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont46.odpbin0 -> 9446 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont48.odgbin0 -> 7717 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont48.odpbin0 -> 9476 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont49.odgbin0 -> 7681 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont49.odpbin0 -> 9447 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont50.odpbin0 -> 8746 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont55.odgbin0 -> 7681 bytes
-rwxr-xr-xtestautomation/graphics/required/input/rightfont55.odpbin0 -> 9446 bytes
-rwxr-xr-xtestautomation/graphics/required/input/sample.movbin0 -> 72490 bytes
-rwxr-xr-xtestautomation/graphics/required/input/screen_white.wmfbin0 -> 37252 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/1Lines.pptbin0 -> 13312 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/2Connectors.pptbin0 -> 24064 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/3BasicShapes.pptbin0 -> 42496 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/4BlockArrows.pptbin0 -> 36352 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/5Flowchart.pptbin0 -> 36352 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/6StarsBanners.pptbin0 -> 28160 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/7Callouts.pptbin0 -> 33792 bytes
-rwxr-xr-xtestautomation/graphics/required/input/shapes/8ActionButtons.pptbin0 -> 26624 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_1.odgbin0 -> 7262 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_1.odpbin0 -> 9741 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_31.odgbin0 -> 7494 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_31.odpbin0 -> 9194 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_31.sxdbin0 -> 8237 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_31.sxibin0 -> 9899 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_33.odgbin0 -> 7313 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_33.odpbin0 -> 9123 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_34.odgbin0 -> 7911 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_34.odpbin0 -> 8428 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_36.odgbin0 -> 7241 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_36.odpbin0 -> 9732 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_39.odgbin0 -> 7269 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_39.odpbin0 -> 9087 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_46.odgbin0 -> 7197 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_46.odpbin0 -> 8445 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_48.odgbin0 -> 7268 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_48.odpbin0 -> 8454 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_49.odgbin0 -> 7303 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_49.odpbin0 -> 9143 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_50.odgbin0 -> 8222 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_50.odpbin0 -> 9927 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_55.odgbin0 -> 7158 bytes
-rwxr-xr-xtestautomation/graphics/required/input/silben_55.odpbin0 -> 8992 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_1.odgbin0 -> 13092 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_1.odpbin0 -> 16509 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_1.txt152
-rwxr-xr-xtestautomation/graphics/required/input/spellb_31.odgbin0 -> 10548 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_31.odpbin0 -> 15188 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_31.txt188
-rwxr-xr-xtestautomation/graphics/required/input/spellb_33.odgbin0 -> 10054 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_33.odpbin0 -> 13618 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_33.txt152
-rwxr-xr-xtestautomation/graphics/required/input/spellb_34.odgbin0 -> 10624 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_34.odpbin0 -> 15499 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_34.txt200
-rwxr-xr-xtestautomation/graphics/required/input/spellb_36.odgbin0 -> 11043 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_36.odpbin0 -> 15528 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_36.txt184
-rwxr-xr-xtestautomation/graphics/required/input/spellb_39.odgbin0 -> 14115 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_39.odpbin0 -> 18441 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_39.txt221
-rwxr-xr-xtestautomation/graphics/required/input/spellb_49.odgbin0 -> 13466 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_49.odpbin0 -> 16938 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_49.txt152
-rwxr-xr-xtestautomation/graphics/required/input/spellb_50.odgbin0 -> 10752 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_50.odpbin0 -> 14148 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_50.txt202
-rwxr-xr-xtestautomation/graphics/required/input/spellb_55.odgbin0 -> 10541 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_55.odpbin0 -> 15187 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_55.txt199
-rwxr-xr-xtestautomation/graphics/required/input/spellb_7.odgbin0 -> 8841 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_7.odpbin0 -> 13868 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_7.txt56
-rwxr-xr-xtestautomation/graphics/required/input/spellb_82.odgbin0 -> 14978 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_82.odpbin0 -> 19689 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_82.txt196
-rwxr-xr-xtestautomation/graphics/required/input/spellb_86.odgbin0 -> 14680 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_86.odpbin0 -> 16580 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_86.txt214
-rwxr-xr-xtestautomation/graphics/required/input/spellb_88.odgbin0 -> 15497 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_88.odpbin0 -> 20549 bytes
-rwxr-xr-xtestautomation/graphics/required/input/spellb_88.txt214
-rwxr-xr-xtestautomation/graphics/required/input/tbo_alf_.odgbin0 -> 243716 bytes
-rwxr-xr-xtestautomation/graphics/required/input/tbo_alf_.odpbin0 -> 173471 bytes
-rwxr-xr-xtestautomation/graphics/required/input/tchinese.odgbin0 -> 9813 bytes
-rwxr-xr-xtestautomation/graphics/required/input/tchinese.odpbin0 -> 10574 bytes
-rw-r--r--testautomation/graphics/tools/id_tools.inc1504
-rw-r--r--testautomation/graphics/tools/id_tools_2.inc995
-rwxr-xr-xtestautomation/graphics/tools/locale_1.txt134
-rw-r--r--testautomation/graphics/tools/makeLokaleTxt.bas292
-rwxr-xr-xtestautomation/math/optional/includes/m_101_.inc710
-rw-r--r--testautomation/math/optional/includes/m_105.inc690
-rwxr-xr-xtestautomation/math/optional/includes/m_106_.inc65
-rwxr-xr-xtestautomation/math/optional/input/101_1.sxmbin0 -> 3284 bytes
-rwxr-xr-xtestautomation/math/optional/input/101_2.sxwbin0 -> 20478 bytes
-rwxr-xr-xtestautomation/math/optional/input/filter/math.sxwbin0 -> 5399 bytes
-rwxr-xr-xtestautomation/math/optional/input/filter/precal_test.docbin0 -> 143360 bytes
-rwxr-xr-xtestautomation/math/optional/input/filter/quantum_field.docbin0 -> 219648 bytes
-rwxr-xr-xtestautomation/math/optional/input/filter/seventh_grade.docbin0 -> 244224 bytes
-rwxr-xr-xtestautomation/math/optional/m_lvl1.bas60
-rwxr-xr-xtestautomation/math/required/includes/m_001_.inc687
-rwxr-xr-xtestautomation/math/required/includes/m_002_.inc132
-rwxr-xr-xtestautomation/math/required/includes/m_003_.inc177
-rwxr-xr-xtestautomation/math/required/includes/m_004_.inc286
-rwxr-xr-xtestautomation/math/required/includes/m_005_.inc313
-rwxr-xr-xtestautomation/math/required/includes/m_006_.inc53
-rwxr-xr-xtestautomation/math/required/includes/m_007_.inc274
-rwxr-xr-xtestautomation/math/required/includes/m_010_.inc670
-rwxr-xr-xtestautomation/math/required/includes/m_020_.inc72
-rwxr-xr-xtestautomation/math/required/input/ShortLicense.oxtbin0 -> 9406 bytes
-rw-r--r--testautomation/math/required/input/test.odtbin0 -> 6725 bytes
-rwxr-xr-xtestautomation/math/required/input/unknown-dependency.oxtbin0 -> 1633 bytes
-rwxr-xr-xtestautomation/math/required/m_updt.bas81
-rw-r--r--testautomation/prj/build.lst1
-rw-r--r--testautomation/prj/d.lst4
-rwxr-xr-xtestautomation/spreadsheet/optional/c_arrayconstants.bas61
-rwxr-xr-xtestautomation/spreadsheet/optional/c_getpivotdata.bas62
-rwxr-xr-xtestautomation/spreadsheet/optional/c_import_general.bas87
-rwxr-xr-xtestautomation/spreadsheet/optional/c_namedrange.bas66
-rwxr-xr-xtestautomation/spreadsheet/optional/c_print_scale.bas53
-rwxr-xr-xtestautomation/spreadsheet/optional/c_printrange.bas67
-rwxr-xr-xtestautomation/spreadsheet/optional/c_so7_pp1.bas69
-rw-r--r--testautomation/spreadsheet/optional/c_solver.bas62
-rw-r--r--testautomation/spreadsheet/optional/c_validity.bas87
-rwxr-xr-xtestautomation/spreadsheet/optional/includes/arrayconstants/c_arrayconstants.inc316
-rwxr-xr-xtestautomation/spreadsheet/optional/includes/getpivotdata/c_getpivotdata.inc326
-rwxr-xr-xtestautomation/spreadsheet/optional/includes/import_general/c_import_general.inc196
-rwxr-xr-xtestautomation/spreadsheet/optional/includes/namedrange/c_namedrange.inc188
-rwxr-xr-xtestautomation/spreadsheet/optional/includes/printrange/c_printrange.inc923
-rwxr-xr-xtestautomation/spreadsheet/optional/includes/printscale/c_print_scale.inc299
-rw-r--r--testautomation/spreadsheet/optional/includes/so7pp1/c_so7_pp1_ibis.inc221
-rw-r--r--testautomation/spreadsheet/optional/includes/so7pp1/c_so7_pp1_iz.inc211
-rw-r--r--testautomation/spreadsheet/optional/includes/solver/c_solver.inc225
-rw-r--r--testautomation/spreadsheet/optional/includes/validity/c_validity.inc378
-rwxr-xr-xtestautomation/spreadsheet/optional/input/111099.xlsbin0 -> 24064 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/111158.xlsbin0 -> 67584 bytes
-rw-r--r--testautomation/spreadsheet/optional/input/Solver_testdoc01.odsbin0 -> 10326 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/arrayconstants.xlsbin0 -> 74752 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/datapilot.odsbin0 -> 13211 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/getpivotdata2.xlsbin0 -> 13824 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/bugdocs/1024.odsbin0 -> 12880 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/common/csv.csv7
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/common/dbase.dbfbin0 -> 1166 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/common/dbase.dbt0
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/corel/qpro6.wb2bin0 -> 7290 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/lotus/123toexcel.xlsbin0 -> 7168 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/lotus/lotus123.123bin0 -> 13540 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/lotus/lotuswk1.wk1bin0 -> 3999 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/lotus/lotuswks.wksbin0 -> 6902 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/dif.DIF110
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excel2.xlsbin0 -> 31481 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excel3.xlsbin0 -> 23510 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excel4.xlsbin0 -> 12517 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excel95.xlsbin0 -> 60416 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excel95tmpl.xltbin0 -> 34816 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excel97.xlsbin0 -> 51712 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excel97tmpl.xltbin0 -> 51712 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/excelxml.xml254
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/ms_excel_2007_binary.xlsbbin0 -> 8797 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/ms_excel_2007_xml.xlsxbin0 -> 8210 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/ms_excel_2007_xml_macroenabled.xlsmbin0 -> 8243 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/ms_excel_2007_xml_template.xltxbin0 -> 8218 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/ms_excel_2007_xml_template_macroenabled.xltmbin0 -> 8246 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/microsoft/sylk.slk1
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/preselected_filter/rtf.rtf218
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/preselected_filter/txt.txt7
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so1.sdcbin0 -> 80228 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so3.sdcbin0 -> 29696 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so3tmpl.vorbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so4.sdcbin0 -> 131584 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so4tmpl.vorbin0 -> 24576 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so5.sdcbin0 -> 24064 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so5tmpl.vorbin0 -> 404480 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so7.sxcbin0 -> 14926 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so7tmpl.stcbin0 -> 11367 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so8.odsbin0 -> 38161 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/sun/so8tmpl.otsbin0 -> 37500 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/tableimport/HTML_Doc_Numberformats_in_table.html107
-rwxr-xr-xtestautomation/spreadsheet/optional/input/loadsave/tableimport/HTML_Doc_Numberformats_in_table.rtf62
-rwxr-xr-xtestautomation/spreadsheet/optional/input/namedrange.sxcbin0 -> 6538 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/printrange.sxcbin0 -> 9648 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/printrange.xlsbin0 -> 41984 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/printranges_3defined.odsbin0 -> 13408 bytes
-rw-r--r--testautomation/spreadsheet/optional/input/stest_large.odsbin0 -> 23467 bytes
-rwxr-xr-xtestautomation/spreadsheet/optional/input/validity.odsbin0 -> 22633 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/c_updt1.bas72
-rwxr-xr-xtestautomation/spreadsheet/required/c_updt2.bas75
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_datamenu.inc1047
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_editmenu.inc1024
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_editmenu2.inc669
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_filemenu.inc678
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_formatmenu.inc947
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_formatmenu2.inc825
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_formatmenu3.inc1068
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_helpmenu.inc119
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_insertmenu.inc1313
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_toolsmenu.inc979
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_toolsmenu2.inc517
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_viewmenu.inc395
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_windowmenu.inc141
-rwxr-xr-xtestautomation/spreadsheet/required/input/Database_Refresh.odsbin0 -> 10588 bytes
-rw-r--r--testautomation/spreadsheet/required/input/DocwithMacro.odsbin0 -> 7765 bytes
-rw-r--r--testautomation/spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html107
-rwxr-xr-xtestautomation/spreadsheet/required/input/datapilot.odsbin0 -> 12613 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/english.odsbin0 -> 6384 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/korean.odsbin0 -> 12224 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/linkclient.odsbin0 -> 6185 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/linkserver.odsbin0 -> 5995 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/merge.odsbin0 -> 6349 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/recentdocument.odsbin0 -> 6141 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/tEditObject.odsbin0 -> 11589 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/tFileOpen_CSV.csv3
-rwxr-xr-xtestautomation/spreadsheet/required/input/tFileOpen_DBF.dbfbin0 -> 1166 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/tFileOpen_DBF.dbt0
-rwxr-xr-xtestautomation/spreadsheet/required/input/twoobjects.odsbin0 -> 7269 bytes
-rwxr-xr-xtestautomation/spreadsheet/required/input/twosheets.odsbin0 -> 6411 bytes
-rwxr-xr-xtestautomation/spreadsheet/tools/includes/c_cell_tools.inc102
-rwxr-xr-xtestautomation/spreadsheet/tools/includes/c_l10n_tools.inc217
-rwxr-xr-xtestautomation/spreadsheet/tools/includes/c_select_tools.inc232
-rwxr-xr-xtestautomation/spreadsheet/tools/includes/c_tool_l10n_mnomics.inc160
-rwxr-xr-xtestautomation/spreadsheet/tools/includes/c_tool_options.inc95
-rw-r--r--testautomation/spreadsheet/tools/includes/c_validity_tools.inc139
-rwxr-xr-xtestautomation/spreadsheet/tools/input/Errorcodes.odsbin0 -> 13154 bytes
-rwxr-xr-xtestautomation/spreadsheet/tools/input/Functionnames.odsbin0 -> 19172 bytes
-rwxr-xr-xtestautomation/tools/analyze/app.srs2807
-rwxr-xr-xtestautomation/tools/analyze/make_summary.pl127
-rwxr-xr-xtestautomation/tools/analyze/translate_res_file.pl241
-rwxr-xr-xtestautomation/tools/hid/cons.txt83
-rwxr-xr-xtestautomation/tools/hid/hid.bat2
-rwxr-xr-xtestautomation/tools/hid/hid.pl92
-rwxr-xr-xtestautomation/tools/hid/hid.sh2
-rwxr-xr-xtestautomation/tools/run_tests/run_tests.sh196
-rwxr-xr-xtestautomation/tools/run_tests/run_tests.vbs182
-rwxr-xr-xtestautomation/writer/optional/includes/CJKCTLDependency/CJKCTLDependency1.inc980
-rw-r--r--testautomation/writer/optional/includes/alternative_text/w_alternative_text.inc299
-rwxr-xr-xtestautomation/writer/optional/includes/autocorrection/w_autocorrect1.inc1446
-rwxr-xr-xtestautomation/writer/optional/includes/autocorrection/w_autocorrect2.inc474
-rwxr-xr-xtestautomation/writer/optional/includes/autotext/w_autotext.inc658
-rwxr-xr-xtestautomation/writer/optional/includes/calculate/w_calculate.inc463
-rwxr-xr-xtestautomation/writer/optional/includes/chinesetranslate/w_chinesetranslate1.inc409
-rwxr-xr-xtestautomation/writer/optional/includes/chinesetranslate/w_chinesetranslate2.inc454
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/clipbrd_func.inc447
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_210_.inc455
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_211_.inc540
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_212_.inc532
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_213_.inc533
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_214_.inc524
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_215_.inc448
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_216_.inc440
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_217_.inc393
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_218_.inc402
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_219_.inc397
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_220_.inc392
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_221_.inc430
-rwxr-xr-xtestautomation/writer/optional/includes/clipboard/w_222_.inc432
-rwxr-xr-xtestautomation/writer/optional/includes/contextmenu/w_contextmenu1.inc433
-rwxr-xr-xtestautomation/writer/optional/includes/drawing/w_drawing_tools1.inc1027
-rwxr-xr-xtestautomation/writer/optional/includes/drawing/w_drawing_tools2.inc698
-rwxr-xr-xtestautomation/writer/optional/includes/dropdownLB/w_dropdownLB1.inc1093
-rwxr-xr-xtestautomation/writer/optional/includes/fields/w_fields1.inc384
-rwxr-xr-xtestautomation/writer/optional/includes/fields/w_fields2.inc1064
-rwxr-xr-xtestautomation/writer/optional/includes/fields/w_fields3.inc993
-rwxr-xr-xtestautomation/writer/optional/includes/fields/w_fields4.inc1033
-rwxr-xr-xtestautomation/writer/optional/includes/fields/w_fields5.inc841
-rwxr-xr-xtestautomation/writer/optional/includes/fields/w_fields6.inc830
-rwxr-xr-xtestautomation/writer/optional/includes/fields/w_fields7.inc421
-rwxr-xr-xtestautomation/writer/optional/includes/filter/w_filter.inc608
-rwxr-xr-xtestautomation/writer/optional/includes/fontwork/w_fontwork1.inc400
-rwxr-xr-xtestautomation/writer/optional/includes/formatcharacter/w_format_character1.inc743
-rw-r--r--testautomation/writer/optional/includes/formatpage/w_formatpage1.inc878
-rwxr-xr-xtestautomation/writer/optional/includes/formatpage/w_formatpage2.inc986
-rw-r--r--testautomation/writer/optional/includes/formatpage/w_formatpage3.inc1372
-rw-r--r--testautomation/writer/optional/includes/formatpage/w_formatpage4.inc788
-rwxr-xr-xtestautomation/writer/optional/includes/formatparagraph/w_formatparagraph1.inc1263
-rwxr-xr-xtestautomation/writer/optional/includes/formatparagraph/w_formatparagraph2.inc1463
-rwxr-xr-xtestautomation/writer/optional/includes/formatparagraph/w_formatparagraph3.inc1199
-rwxr-xr-xtestautomation/writer/optional/includes/hangulhanjaonversion/hhConversion1.inc700
-rwxr-xr-xtestautomation/writer/optional/includes/hangulhanjaonversion/hhConversion2.inc1618
-rwxr-xr-xtestautomation/writer/optional/includes/hangulhanjaonversion/hhConversion3.inc1037
-rwxr-xr-xtestautomation/writer/optional/includes/hyphenation/w_hyphenation.inc380
-rwxr-xr-xtestautomation/writer/optional/includes/insertgraphic/w_insertgraphic1.inc952
-rwxr-xr-xtestautomation/writer/optional/includes/insertgraphic/w_insertgraphic2.inc985
-rwxr-xr-xtestautomation/writer/optional/includes/insertgraphic/w_insertgraphic3.inc1041
-rwxr-xr-xtestautomation/writer/optional/includes/insertgraphic/w_insertgraphic4.inc831
-rwxr-xr-xtestautomation/writer/optional/includes/insertgraphic/w_insertgraphic5.inc755
-rw-r--r--testautomation/writer/optional/includes/loadsave/w_loadsave.inc493
-rwxr-xr-xtestautomation/writer/optional/includes/navigator/w_navigator.inc807
-rwxr-xr-xtestautomation/writer/optional/includes/number/w_205_.inc731
-rwxr-xr-xtestautomation/writer/optional/includes/number/w_205a_.inc875
-rwxr-xr-xtestautomation/writer/optional/includes/number/w_206_.inc726
-rwxr-xr-xtestautomation/writer/optional/includes/number/w_207_.inc175
-rwxr-xr-xtestautomation/writer/optional/includes/option/wh_o_1.inc642
-rwxr-xr-xtestautomation/writer/optional/includes/option/wh_o_2.inc473
-rwxr-xr-xtestautomation/writer/optional/includes/option/wh_o_3.inc389
-rwxr-xr-xtestautomation/writer/optional/includes/option/wr_o_1.inc937
-rwxr-xr-xtestautomation/writer/optional/includes/option/wr_o_2.inc972
-rwxr-xr-xtestautomation/writer/optional/includes/option/wr_o_3.inc1403
-rwxr-xr-xtestautomation/writer/optional/includes/option/wr_o_4.inc991
-rwxr-xr-xtestautomation/writer/optional/includes/option/wr_o_5.inc200
-rwxr-xr-xtestautomation/writer/optional/includes/option/wr_o_a.inc663
-rwxr-xr-xtestautomation/writer/optional/includes/redlining/w_redlining1.inc1233
-rwxr-xr-xtestautomation/writer/optional/includes/redlining/w_redlining2.inc1267
-rwxr-xr-xtestautomation/writer/optional/includes/regexp/regular.inc974
-rwxr-xr-xtestautomation/writer/optional/includes/regexp/search.inc1699
-rwxr-xr-xtestautomation/writer/optional/includes/regression/issuezilla/w_issuezilla_regression.inc515
-rwxr-xr-xtestautomation/writer/optional/includes/section/w_section_1.inc620
-rwxr-xr-xtestautomation/writer/optional/includes/section/w_section_2.inc1055
-rwxr-xr-xtestautomation/writer/optional/includes/section/w_section_3.inc1761
-rwxr-xr-xtestautomation/writer/optional/includes/section/w_section_4.inc1509
-rwxr-xr-xtestautomation/writer/optional/includes/section/w_section_tools.inc186
-rwxr-xr-xtestautomation/writer/optional/includes/shortcut/w_shortcuts.inc856
-rwxr-xr-xtestautomation/writer/optional/includes/sorting/w_sorting1.inc663
-rwxr-xr-xtestautomation/writer/optional/includes/sorting/w_sorting2.inc345
-rw-r--r--testautomation/writer/optional/includes/spellcheck/w_spellcheck.inc1477
-rwxr-xr-xtestautomation/writer/optional/includes/spellcheck/w_spellcheck1.inc160
-rwxr-xr-xtestautomation/writer/optional/includes/stylist/w_stylist.inc1024
-rwxr-xr-xtestautomation/writer/optional/includes/table/w_204_.inc1157
-rwxr-xr-xtestautomation/writer/optional/includes/table/w_204a_.inc1163
-rwxr-xr-xtestautomation/writer/optional/includes/table/w_204b_.inc100
-rwxr-xr-xtestautomation/writer/optional/includes/textframes/w_textframes1.inc1458
-rwxr-xr-xtestautomation/writer/optional/includes/textframes/w_textframes2.inc1159
-rwxr-xr-xtestautomation/writer/optional/includes/textframes/w_textframes3.inc1070
-rwxr-xr-xtestautomation/writer/optional/includes/textframes/w_textframes4.inc1525
-rwxr-xr-xtestautomation/writer/optional/includes/textframes/w_textframes5.inc753
-rwxr-xr-xtestautomation/writer/optional/includes/tools/tools1.inc345
-rwxr-xr-xtestautomation/writer/optional/includes/tools/tools2.inc412
-rwxr-xr-xtestautomation/writer/optional/includes/undo/w_undo1.inc352
-rwxr-xr-xtestautomation/writer/optional/includes/undo/w_undo_history_1.inc204
-rwxr-xr-xtestautomation/writer/optional/includes/undo/w_undo_history_2.inc528
-rwxr-xr-xtestautomation/writer/optional/includes/undo/w_undo_history_3.inc687
-rwxr-xr-xtestautomation/writer/optional/includes/undo/w_undo_history_4.inc495
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling1.stwbin0 -> 6602 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling10.stwbin0 -> 6763 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling11.stwbin0 -> 6801 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling12.stwbin0 -> 6577 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling13.stwbin0 -> 6644 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling14.stwbin0 -> 6770 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling15.stwbin0 -> 6726 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling16.stwbin0 -> 6739 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling17.stwbin0 -> 6834 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling18.stwbin0 -> 6672 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling19.stwbin0 -> 6702 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling2.stwbin0 -> 6564 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling20.stwbin0 -> 6641 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling21.stwbin0 -> 6542 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling22.stwbin0 -> 6684 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling23.stwbin0 -> 6580 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling24.stwbin0 -> 6755 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling25.stwbin0 -> 6719 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling26.stwbin0 -> 6827 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling27.stwbin0 -> 6799 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling28.stwbin0 -> 6825 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling29.stwbin0 -> 6867 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling3.stwbin0 -> 6686 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling30.stwbin0 -> 6071 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling4.stwbin0 -> 6980 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling5.stwbin0 -> 6741 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling6.stwbin0 -> 6715 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling7.stwbin0 -> 6610 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling8.stwbin0 -> 6711 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/new_german_spelling9.stwbin0 -> 6773 bytes
-rwxr-xr-xtestautomation/writer/optional/input/advanced/tToolsAutocorrectWordCompletion_4.sxwbin0 -> 5891 bytes
-rwxr-xr-xtestautomation/writer/optional/input/alternative_text/jolink.jpgbin0 -> 11686 bytes
-rw-r--r--testautomation/writer/optional/input/autocorrection/01-01.odtbin0 -> 7798 bytes
-rw-r--r--testautomation/writer/optional/input/autocorrection/01.odtbin0 -> 7798 bytes
-rwxr-xr-xtestautomation/writer/optional/input/clipboard/calc.sxcbin0 -> 9722 bytes
-rwxr-xr-xtestautomation/writer/optional/input/clipboard/draw.sxdbin0 -> 10003 bytes
-rwxr-xr-xtestautomation/writer/optional/input/clipboard/dummy.sxwbin0 -> 5998 bytes
-rwxr-xr-xtestautomation/writer/optional/input/clipboard/dummy.txt2
-rwxr-xr-xtestautomation/writer/optional/input/clipboard/flower.gifbin0 -> 6073 bytes
-rwxr-xr-xtestautomation/writer/optional/input/clipboard/html.html93
-rwxr-xr-xtestautomation/writer/optional/input/clipboard/writer.sxwbin0 -> 18839 bytes
-rwxr-xr-xtestautomation/writer/optional/input/dropdownLB/DropDownListBox.docbin0 -> 23552 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/act_1.all16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_1.txt19
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_1.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_1.w9519
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_3.unx17
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_3.w9515
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_31.unx17
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_31.w9516
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_33.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_33.w9515
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_34.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_34.w9515
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_39.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_39.w9515
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_46.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_46.w9516
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_49.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_49.w9519
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_50.w9518
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_55.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_55.w9516
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_7.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_7.w9516
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_81.unx16
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_81.w9518
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_82.w9518
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_86.w9521
-rwxr-xr-xtestautomation/writer/optional/input/export/filter/exlst_88.w9518
-rwxr-xr-xtestautomation/writer/optional/input/export/odt/export1.odtbin0 -> 17537 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/odt/export2.odtbin0 -> 12082 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/odt/export3.odtbin0 -> 54196 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/odt/export4.odtbin0 -> 10133 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/sdw/sw50.sdwbin0 -> 46080 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/sdw/test1.sdwbin0 -> 21504 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/sdw/test2.sdwbin0 -> 144896 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/sxw/i50228.sxwbin0 -> 471146 bytes
-rwxr-xr-xtestautomation/writer/optional/input/export/sxw/test3.sxwbin0 -> 49456 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/AboveBelow.sxwbin0 -> 5981 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/CombineTest.sxwbin0 -> 6134 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/Date.sxwbin0 -> 6011 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/Time.sxwbin0 -> 5890 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/chapterTest.sxwbin0 -> 5945 bytes
-rw-r--r--testautomation/writer/optional/input/fields/diploma.ottbin0 -> 18090 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/fields_docinfos.sxwbin0 -> 10496 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/numberRange.sxwbin0 -> 29143 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/pageTest.sxwbin0 -> 5717 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/staticsTest.sxwbin0 -> 8897 bytes
-rwxr-xr-xtestautomation/writer/optional/input/fields/statisticsTest.sxwbin0 -> 9094 bytes
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_cod_lin.txt0
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_cod_w95.txt111
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_1_all.txt72
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_33_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_34_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_39_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_46_all.txt63
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_46_exe.txt5
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_49_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_55_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_81_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_82_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_86_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_88_all.txt58
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_st_all.txt53
-rwxr-xr-xtestautomation/writer/optional/input/filter/if_w4w_lin.txt6
-rwxr-xr-xtestautomation/writer/optional/input/filter/readme.txt16
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_actua_1.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_actua_36.txt82
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_actua_49.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_actua_81.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_actua_82.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_actua_86.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_actua_88.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_sorte_1.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_sorte_36.txt82
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_sorte_49.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_sorte_81.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_sorte_82.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_sorte_86.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/sa_sorte_88.txt74
-rwxr-xr-xtestautomation/writer/optional/input/filter/wf____1_all.txt56
-rwxr-xr-xtestautomation/writer/optional/input/filter/wf____49.all0
-rwxr-xr-xtestautomation/writer/optional/input/filter/wf____49_all.txt57
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/pageLayout.sxwbin0 -> 5628 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testColumnInPage.sxwbin0 -> 5419 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testColumnInPage2.sxwbin0 -> 5409 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testColumnVertical.sxwbin0 -> 5267 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testFooterContent31.sxwbin0 -> 5488 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testFooterContent32.sxwbin0 -> 5469 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testForAutoFit.sxwbin0 -> 5542 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testHeaderContent29.sxwbin0 -> 5506 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testHeaderContent30.sxwbin0 -> 5499 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatpage/testSeparatorLine.sxwbin0 -> 5279 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/AddSpacingShouldCheck.docbin0 -> 28160 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/AddSpacingShouldNotCheck.docbin0 -> 28160 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/DropCapsTest.sxwbin0 -> 5523 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/TabsDecimal.sxwbin0 -> 5433 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/TabsTest.sxwbin0 -> 5467 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/alignmentTest.sxwbin0 -> 5114 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/alignmentTestJustified.sxwbin0 -> 5203 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/alignmentTestJustifiedCentered.sxwbin0 -> 5188 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/alignmentTestRight.sxwbin0 -> 5102 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/columnBreakParagraph.sxwbin0 -> 5242 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/columnBreakParagraphAfter.sxwbin0 -> 5090 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/columnBreakParagraphBefore.sxwbin0 -> 5245 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/eightLineAdd1Pic.sxwbin0 -> 6750 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/eightline.sxwbin0 -> 5225 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/hyphenation.sxwbin0 -> 4895 bytes
-rw-r--r--testautomation/writer/optional/input/formatparagraph/hyphenationNew.odtbin0 -> 8387 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/hyphenationNew.sxwbin0 -> 5266 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/indent.sxwbin0 -> 6259 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/pageBreakAfter.sxwbin0 -> 5044 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/pageBreakBefore.sxwbin0 -> 5056 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/paragraphNumbering.sxwbin0 -> 5477 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/registerTrue.sxwbin0 -> 6345 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/spacing.sxwbin0 -> 5746 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/spacing1.sxwbin0 -> 5741 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/specialHyphenation.sxwbin0 -> 5120 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/testExpand.sxwbin0 -> 6264 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/textFlowOptions.sxwbin0 -> 5619 bytes
-rwxr-xr-xtestautomation/writer/optional/input/formatparagraph/textFlowOptions1.sxwbin0 -> 7632 bytes
-rwxr-xr-xtestautomation/writer/optional/input/graphics/bild.jpgbin0 -> 13711 bytes
-rwxr-xr-xtestautomation/writer/optional/input/graphics/bullet.gifbin0 -> 111 bytes
-rwxr-xr-xtestautomation/writer/optional/input/graphics/jolink.jpgbin0 -> 11686 bytes
-rw-r--r--testautomation/writer/optional/input/hangul/hangul.html32
-rw-r--r--testautomation/writer/optional/input/hangul/hangul.sxwbin0 -> 5861 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/ChineseToKorean.sxwbin0 -> 5545 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/KoreanToChinese.sxwbin0 -> 5530 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/Replace.sxwbin0 -> 5952 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/alwayIgnore.sxwbin0 -> 5517 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/alwaysReplace.sxwbin0 -> 5411 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/drawBox.sxwbin0 -> 5727 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/hangul.sxwbin0 -> 6809 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/multiLanguage_C.sxwbin0 -> 6235 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/multiLanguage_K.sxwbin0 -> 6244 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/multiSelection.sxwbin0 -> 5542 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/noKoreanAndChinese.sxwbin0 -> 15424 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/notConvertHangulHanja.sxwbin0 -> 5594 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/replaceAll.sxwbin0 -> 5411 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hangulhanjaonversion/textBox.sxwbin0 -> 5722 bytes
-rwxr-xr-xtestautomation/writer/optional/input/hyphenation/tHyphenation.odtbin0 -> 9034 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/amipro3.sam3107
-rw-r--r--testautomation/writer/optional/input/import/dostext.txt79
-rwxr-xr-xtestautomation/writer/optional/input/import/dummy.sxwbin0 -> 5998 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/hangul.hwpbin0 -> 211128 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/html.html93
-rwxr-xr-xtestautomation/writer/optional/input/import/html/html.html93
-rwxr-xr-xtestautomation/writer/optional/input/import/mactext.txt1
-rwxr-xr-xtestautomation/writer/optional/input/import/pocketword.pswbin0 -> 37220 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/rtf.rtf408
-rwxr-xr-xtestautomation/writer/optional/input/import/sw1.sdwbin0 -> 103329 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw2.sdwbin0 -> 145047 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw30.sdwbin0 -> 16896 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw31.sdwbin0 -> 74240 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw31.vorbin0 -> 101888 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw40.sdwbin0 -> 219648 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw40_sp2.vorbin0 -> 15360 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw50.sdwbin0 -> 92672 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw50.vorbin0 -> 33280 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/sw60.sxwbin0 -> 9396 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/swdos.txt3314
-rwxr-xr-xtestautomation/writer/optional/input/import/unixtext.txt64
-rwxr-xr-xtestautomation/writer/optional/input/import/wintext.txt47
-rwxr-xr-xtestautomation/writer/optional/input/import/winw97.docbin0 -> 60416 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/winword6.docbin0 -> 108544 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/wpsfile.wpsbin0 -> 15631 bytes
-rwxr-xr-xtestautomation/writer/optional/input/import/xml2.odtbin0 -> 51176 bytes
-rwxr-xr-xtestautomation/writer/optional/input/insertgraphic/Bughunter.jpgbin0 -> 33124 bytes
-rwxr-xr-xtestautomation/writer/optional/input/insertgraphic/boy.gifbin0 -> 48286 bytes
-rwxr-xr-xtestautomation/writer/optional/input/insertgraphic/flowers.gifbin0 -> 9333 bytes
-rwxr-xr-xtestautomation/writer/optional/input/insertgraphic/game.bmpbin0 -> 75032 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/001.odtbin0 -> 8932 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/003.odtbin0 -> 9361 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/007.odtbin0 -> 9814 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/031.odtbin0 -> 8303 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/033.odtbin0 -> 8607 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/034.odtbin0 -> 8044 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/036.odtbin0 -> 8345 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/039.odtbin0 -> 8739 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/045.odtbin0 -> 8717 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/046.odtbin0 -> 8952 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/048.odtbin0 -> 8249 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/049.odtbin0 -> 7970 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/050.odtbin0 -> 11063 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/055.odtbin0 -> 9422 bytes
-rwxr-xr-xtestautomation/writer/optional/input/linguistik/sprache.odtbin0 -> 71268 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/dok1.sxwbin0 -> 5911 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/dok2.sxwbin0 -> 5908 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/dok3.sxwbin0 -> 5908 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/frame.sxgbin0 -> 5431 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/htmltest.sxgbin0 -> 5451 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/link_of_section_test.sxwbin0 -> 6195 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/update1.sxgbin0 -> 5283 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/update2.sxgbin0 -> 5283 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/update3.sxgbin0 -> 5278 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_12.sxgbin0 -> 120199 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_121.sxwbin0 -> 7410 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_122.sxwbin0 -> 5455 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_123.sxwbin0 -> 7315 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_124.sxwbin0 -> 7649 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_125.sxwbin0 -> 5174 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_126.sxwbin0 -> 7103 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_127.sxwbin0 -> 7103 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_128.sxwbin0 -> 7133 bytes
-rwxr-xr-xtestautomation/writer/optional/input/masterdoc/w_102a/st1_129.sxwbin0 -> 7103 bytes
-rwxr-xr-xtestautomation/writer/optional/input/menu/drums.jpgbin0 -> 43931 bytes
-rwxr-xr-xtestautomation/writer/optional/input/navigator/navigator.odtbin0 -> 123768 bytes
-rw-r--r--testautomation/writer/optional/input/navigator/st1_1.sxwbin0 -> 132211 bytes
-rwxr-xr-xtestautomation/writer/optional/input/number/format1.txt40
-rwxr-xr-xtestautomation/writer/optional/input/number/format31.txt40
-rwxr-xr-xtestautomation/writer/optional/input/number/format33.txt36
-rwxr-xr-xtestautomation/writer/optional/input/number/format36.txt40
-rwxr-xr-xtestautomation/writer/optional/input/number/format39.txt40
-rwxr-xr-xtestautomation/writer/optional/input/number/format44.txt40
-rwxr-xr-xtestautomation/writer/optional/input/number/format46.txt40
-rwxr-xr-xtestautomation/writer/optional/input/number/format49.txt36
-rwxr-xr-xtestautomation/writer/optional/input/number/format86.txt40
-rwxr-xr-xtestautomation/writer/optional/input/number/numbering1.sxwbin0 -> 5504 bytes
-rwxr-xr-xtestautomation/writer/optional/input/number/regression/46588.docbin0 -> 19968 bytes
-rwxr-xr-xtestautomation/writer/optional/input/number/regression/73790.docbin0 -> 19968 bytes
-rwxr-xr-xtestautomation/writer/optional/input/number/regression/Unnumbered_outline.docbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/compatibility1.docbin0 -> 19968 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/ga000907.gifbin0 -> 21777 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/gridtst.sxwbin0 -> 27812 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/gridtst2.sxwbin0 -> 27150 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/htmltag.html19
-rwxr-xr-xtestautomation/writer/optional/input/options/options1.sxwbin0 -> 110364 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/options2.sxwbin0 -> 5204 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/options3.sxwbin0 -> 17454 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/test.html93
-rwxr-xr-xtestautomation/writer/optional/input/options/test1.html72
-rwxr-xr-xtestautomation/writer/optional/input/options/test1_html_m5a52a8ec.jpgbin0 -> 3177 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/test_html_616818a1.gifbin0 -> 2112 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/test_html_8166445.jpgbin0 -> 5992 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/test_html_m2e0be98f.gifbin0 -> 1597 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/test_html_m3914db47.gifbin0 -> 1202 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/test_html_m3ad7a8be.gifbin0 -> 1243 bytes
-rwxr-xr-xtestautomation/writer/optional/input/options/wtitertest.sxwbin0 -> 68992 bytes
-rwxr-xr-xtestautomation/writer/optional/input/redlining/tRedlining_15.sxwbin0 -> 5945 bytes
-rwxr-xr-xtestautomation/writer/optional/input/redlining/tRedlining_4.sxwbin0 -> 5142 bytes
-rw-r--r--testautomation/writer/optional/input/regression/issuezilla/i103265.odtbin0 -> 8768 bytes
-rwxr-xr-xtestautomation/writer/optional/input/regression/issuezilla/i64991.odtbin0 -> 9344 bytes
-rwxr-xr-xtestautomation/writer/optional/input/regression/issuezilla/i65094a.odtbin0 -> 283217 bytes
-rwxr-xr-xtestautomation/writer/optional/input/regression/issuezilla/i65094b.odtbin0 -> 325787 bytes
-rwxr-xr-xtestautomation/writer/optional/input/regression/issuezilla/i69521.odtbin0 -> 21558 bytes
-rwxr-xr-xtestautomation/writer/optional/input/search/attrib.sxwbin0 -> 6328 bytes
-rwxr-xr-xtestautomation/writer/optional/input/search/regu_aus.sxwbin0 -> 6738 bytes
-rwxr-xr-xtestautomation/writer/optional/input/search/style_characters_raw.sxwbin0 -> 7592 bytes
-rwxr-xr-xtestautomation/writer/optional/input/search/style_characters_styles_allone.sxwbin0 -> 8025 bytes
-rwxr-xr-xtestautomation/writer/optional/input/search/such_u_e.sxwbin0 -> 8627 bytes
-rwxr-xr-xtestautomation/writer/optional/input/section/Footnote.sdwbin0 -> 504320 bytes
-rw-r--r--testautomation/writer/optional/input/section/bt.sxwbin0 -> 75639 bytes
-rwxr-xr-xtestautomation/writer/optional/input/section/section_test.sxdbin0 -> 11573 bytes
-rwxr-xr-xtestautomation/writer/optional/input/section/tParagraphSection_1.sxwbin0 -> 5942 bytes
-rwxr-xr-xtestautomation/writer/optional/input/section/tScenarioSection_1.sxwbin0 -> 5121 bytes
-rwxr-xr-xtestautomation/writer/optional/input/section/tScenarioSection_2.sxwbin0 -> 5473 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/phonelist.odtbin0 -> 7519 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/phonelist_sc.odtbin0 -> 7411 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/sort1.odmbin0 -> 7405 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/sort1.odtbin0 -> 7281 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/sort2.odmbin0 -> 6313 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/sort2.odtbin0 -> 6278 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/sort3.odmbin0 -> 7136 bytes
-rwxr-xr-xtestautomation/writer/optional/input/sorting/sort3.odtbin0 -> 7073 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/Language_Guessing_Sample_Texts.odtbin0 -> 10781 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/spellcheck_1.odtbin0 -> 7196 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/spellcheck_33.odtbin0 -> 7196 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/spellcheck_34.odtbin0 -> 7196 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/spellcheck_49.odtbin0 -> 7196 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/spellcheck_50.odtbin0 -> 7985 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_01.odtbin0 -> 6651 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_03.odtbin0 -> 6276 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_07.odtbin0 -> 7424 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_31.odtbin0 -> 6541 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_33.odtbin0 -> 6756 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_34.odtbin0 -> 6496 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_36.odtbin0 -> 8016 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_39.odtbin0 -> 7896 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_45.odtbin0 -> 6788 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_46.odtbin0 -> 7573 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_48.odtbin0 -> 6585 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_49.odtbin0 -> 6491 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_50.odtbin0 -> 8715 bytes
-rwxr-xr-xtestautomation/writer/optional/input/spellcheck/st1_2_55.odtbin0 -> 6661 bytes
-rwxr-xr-xtestautomation/writer/optional/input/st1_1.sxwbin0 -> 132211 bytes
-rwxr-xr-xtestautomation/writer/optional/input/st1_13a.sxwbin0 -> 4936 bytes
-rwxr-xr-xtestautomation/writer/optional/input/st1_13b.sxwbin0 -> 5543 bytes
-rwxr-xr-xtestautomation/writer/optional/input/st1_14.sxwbin0 -> 5511 bytes
-rwxr-xr-xtestautomation/writer/optional/input/st1_5.sxwbin0 -> 5025 bytes
-rwxr-xr-xtestautomation/writer/optional/input/st1_7.sxwbin0 -> 5792 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/AnchorAsCharacter.sxwbin0 -> 5758 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/AnchorToCharacter.sxwbin0 -> 5872 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/AnchorToPage.sxwbin0 -> 5706 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/AnchorToParagraph.sxwbin0 -> 6613 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/Footer.sxwbin0 -> 6047 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/Header.sxwbin0 -> 6069 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/after.sxwbin0 -> 5702 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/before.sxwbin0 -> 5708 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/behindText.docbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/frame.sxwbin0 -> 5958 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/frameInEndnote.sxwbin0 -> 6210 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/frameInFooter.sxwbin0 -> 5642 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/frameInFootnote.sxwbin0 -> 6137 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/frameInFrame.sxwbin0 -> 6253 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/frameInHeader.sxwbin0 -> 5671 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/frameInTable.sxwbin0 -> 8720 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/inFrontText.docbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/inLineWithText.docbin0 -> 28160 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/lineInText.docbin0 -> 28160 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/lineOfText.docbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/lineOfText.sxwbin0 -> 5753 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/pageColumn1.sxwbin0 -> 5577 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/pageColumn2.sxwbin0 -> 5719 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/pageParagraph.sxwbin0 -> 5810 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/square.docbin0 -> 22016 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/through.sxwbin0 -> 5711 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/tight.docbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/twopages.sxwbin0 -> 5793 bytes
-rwxr-xr-xtestautomation/writer/optional/input/textframe/wrap.sxwbin0 -> 5541 bytes
-rw-r--r--testautomation/writer/optional/input/undo/htmltest.sxgbin0 -> 5451 bytes
-rw-r--r--testautomation/writer/optional/input/undo/htmltest.sxwbin0 -> 5557 bytes
-rw-r--r--testautomation/writer/optional/input/undo/spellcheck_undo.odtbin0 -> 7159 bytes
-rwxr-xr-xtestautomation/writer/optional/input/verzeichnis/verzeichnis.sxwbin0 -> 2664060 bytes
-rwxr-xr-xtestautomation/writer/optional/input/verzeichnis/verzeichnisse.sxwbin0 -> 9501 bytes
-rw-r--r--testautomation/writer/optional/w_CJKCTLDependency.bas89
-rw-r--r--testautomation/writer/optional/w_alternative_text.bas59
-rw-r--r--testautomation/writer/optional/w_autocorrection.bas78
-rw-r--r--testautomation/writer/optional/w_autotext.bas61
-rw-r--r--testautomation/writer/optional/w_calculate.bas72
-rw-r--r--testautomation/writer/optional/w_chinesetranslate.bas106
-rw-r--r--testautomation/writer/optional/w_clipbrd.bas86
-rwxr-xr-xtestautomation/writer/optional/w_contextmenu.bas62
-rw-r--r--testautomation/writer/optional/w_drawing_tools.bas72
-rw-r--r--testautomation/writer/optional/w_dropdownLB.bas84
-rw-r--r--testautomation/writer/optional/w_fields.bas94
-rwxr-xr-xtestautomation/writer/optional/w_filter.bas59
-rw-r--r--testautomation/writer/optional/w_fontwork.bas69
-rwxr-xr-xtestautomation/writer/optional/w_formatcharacter.bas69
-rw-r--r--testautomation/writer/optional/w_formatpage.bas140
-rw-r--r--testautomation/writer/optional/w_formatparagraph.bas141
-rw-r--r--testautomation/writer/optional/w_hhConversion.bas139
-rw-r--r--testautomation/writer/optional/w_hyphenation.bas60
-rw-r--r--testautomation/writer/optional/w_insertgraphic.bas131
-rwxr-xr-xtestautomation/writer/optional/w_issuezilla_regression.bas62
-rw-r--r--testautomation/writer/optional/w_loadsave.bas63
-rw-r--r--testautomation/writer/optional/w_navigator.bas50
-rwxr-xr-xtestautomation/writer/optional/w_numbering.bas77
-rwxr-xr-xtestautomation/writer/optional/w_opt.bas85
-rw-r--r--testautomation/writer/optional/w_redlining.bas98
-rwxr-xr-xtestautomation/writer/optional/w_search.bas59
-rw-r--r--testautomation/writer/optional/w_section.bas97
-rwxr-xr-xtestautomation/writer/optional/w_shortcuts.bas75
-rw-r--r--testautomation/writer/optional/w_sorting.bas64
-rw-r--r--testautomation/writer/optional/w_spellcheck.bas63
-rw-r--r--testautomation/writer/optional/w_stylist.bas51
-rwxr-xr-xtestautomation/writer/optional/w_table.bas160
-rw-r--r--testautomation/writer/optional/w_textframes.bas85
-rw-r--r--testautomation/writer/optional/w_undo.bas73
-rwxr-xr-xtestautomation/writer/optional/ww_opt.bas70
-rwxr-xr-xtestautomation/writer/required/includes/w_001_.inc1110
-rw-r--r--testautomation/writer/required/includes/w_001a_.inc468
-rw-r--r--testautomation/writer/required/includes/w_001b_.inc844
-rwxr-xr-xtestautomation/writer/required/includes/w_002_.inc1399
-rwxr-xr-xtestautomation/writer/required/includes/w_003_.inc641
-rwxr-xr-xtestautomation/writer/required/includes/w_004_.inc1013
-rw-r--r--testautomation/writer/required/includes/w_004b_.inc965
-rwxr-xr-xtestautomation/writer/required/includes/w_005_.inc1230
-rwxr-xr-xtestautomation/writer/required/includes/w_005b_.inc1514
-rwxr-xr-xtestautomation/writer/required/includes/w_006_.inc292
-rwxr-xr-xtestautomation/writer/required/includes/w_007_.inc1310
-rwxr-xr-xtestautomation/writer/required/includes/w_008_.inc61
-rwxr-xr-xtestautomation/writer/required/includes/w_009_.inc95
-rwxr-xr-xtestautomation/writer/required/includes/w_010_.inc1242
-rw-r--r--testautomation/writer/required/includes/w_010_1.inc878
-rwxr-xr-xtestautomation/writer/required/includes/w_011_.inc787
-rwxr-xr-xtestautomation/writer/required/includes/w_020_.inc971
-rwxr-xr-xtestautomation/writer/required/input/bt.sxwbin0 -> 75639 bytes
-rwxr-xr-xtestautomation/writer/required/input/graphics/jolink.jpgbin0 -> 11686 bytes
-rwxr-xr-xtestautomation/writer/required/input/hangul.html32
-rwxr-xr-xtestautomation/writer/required/input/hangul.sxwbin0 -> 5861 bytes
-rwxr-xr-xtestautomation/writer/required/input/htmltest.sxgbin0 -> 5451 bytes
-rwxr-xr-xtestautomation/writer/required/input/htmltest.sxwbin0 -> 5557 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/001.odtbin0 -> 8932 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/003.odtbin0 -> 9361 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/007.odtbin0 -> 9814 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/031.odtbin0 -> 8303 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/033.odtbin0 -> 8607 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/034.odtbin0 -> 8044 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/036.odtbin0 -> 8345 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/039.odtbin0 -> 8739 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/045.odtbin0 -> 8717 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/046.odtbin0 -> 8952 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/048.odtbin0 -> 8249 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/049.odtbin0 -> 7970 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/055.odtbin0 -> 9422 bytes
-rwxr-xr-xtestautomation/writer/required/input/linguistik/sprache.odtbin0 -> 71268 bytes
-rwxr-xr-xtestautomation/writer/required/input/st1_1.sxwbin0 -> 132211 bytes
-rwxr-xr-xtestautomation/writer/required/w_updt.bas96
-rw-r--r--testautomation/writer/tools/includes/w_get_locale_strings.inc180
-rwxr-xr-xtestautomation/writer/tools/includes/w_locale_strings2.inc394
-rwxr-xr-xtestautomation/writer/tools/includes/w_tool1.inc1041
-rwxr-xr-xtestautomation/writer/tools/includes/w_tool2.inc416
-rwxr-xr-xtestautomation/writer/tools/includes/w_tool3.inc643
-rwxr-xr-xtestautomation/writer/tools/includes/w_tool4.inc210
-rw-r--r--testautomation/writer/tools/includes/w_tool5.inc235
-rwxr-xr-xtestautomation/writer/tools/includes/w_tool6.inc721
-rw-r--r--testautomation/writer/tools/includes/w_tool7.inc460
-rwxr-xr-xtestautomation/writer/tools/includes/w_tools.inc1343
-rw-r--r--testautomation/writer/tools/includes/w_tools_autocorrection.inc157
-rw-r--r--testautomation/writer/tools/includes/w_tools_drawing.inc68
-rw-r--r--testautomation/writer/tools/includes/w_tools_hyphenation.inc79
-rw-r--r--testautomation/writer/tools/includes/w_tools_undo.inc867
-rwxr-xr-xtestautomation/writer/tools/w_get_locale_strings.bas50
-rwxr-xr-xtestautomation/xml/optional/c_datapilot_pagefields.bas57
-rwxr-xr-xtestautomation/xml/optional/c_xml_print_scale.bas55
-rwxr-xr-xtestautomation/xml/optional/c_xml_scenario.bas54
-rwxr-xr-xtestautomation/xml/optional/calc_xml_7_export.bas67
-rwxr-xr-xtestautomation/xml/optional/ch_xml_japanese_candlestick.bas54
-rw-r--r--testautomation/xml/optional/docbook_losa.bas63
-rwxr-xr-xtestautomation/xml/optional/draw_xml_7_export.bas69
-rwxr-xr-xtestautomation/xml/optional/f_xml_save_ms_ole.bas83
-rwxr-xr-xtestautomation/xml/optional/impress_xml_7_export.bas60
-rw-r--r--testautomation/xml/optional/includes/c_datapilot_pagefields.inc175
-rw-r--r--testautomation/xml/optional/includes/c_xml_print_scale.inc403
-rw-r--r--testautomation/xml/optional/includes/c_xml_scenario.inc433
-rw-r--r--testautomation/xml/optional/includes/ch_xml_japanese_candlestick.inc143
-rw-r--r--testautomation/xml/optional/includes/docbook_001.inc121
-rwxr-xr-xtestautomation/xml/optional/includes/f_xml_save_ms_ole.inc251
-rwxr-xr-xtestautomation/xml/optional/includes/sxc7_01.inc696
-rwxr-xr-xtestautomation/xml/optional/includes/sxc7_02.inc254
-rwxr-xr-xtestautomation/xml/optional/includes/sxc7_03.inc332
-rwxr-xr-xtestautomation/xml/optional/includes/sxd7_01.inc634
-rwxr-xr-xtestautomation/xml/optional/includes/sxd7_02.inc313
-rwxr-xr-xtestautomation/xml/optional/includes/sxd7_03.inc313
-rwxr-xr-xtestautomation/xml/optional/includes/sxd7_04.inc315
-rwxr-xr-xtestautomation/xml/optional/includes/sxd7_05.inc259
-rwxr-xr-xtestautomation/xml/optional/includes/sxi7_01.inc563
-rwxr-xr-xtestautomation/xml/optional/includes/sxm7_01.inc818
-rwxr-xr-xtestautomation/xml/optional/includes/sxw7_01.inc867
-rwxr-xr-xtestautomation/xml/optional/includes/sxw7_01a.inc451
-rwxr-xr-xtestautomation/xml/optional/includes/sxw7_02.inc688
-rwxr-xr-xtestautomation/xml/optional/includes/sxw7_03.inc458
-rwxr-xr-xtestautomation/xml/optional/includes/w_xml_vertical_alignment.inc141
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/cell_pattern.xml215
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/cellstyle.xml254
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/conditionalformat.xml583
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/dataformat.xml307
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/dataformat2.xml504
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/datarange.xml1314
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/font.xml559
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/formula.xml213
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/headerfooter.xml97
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/merge.xml126
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/pagebreak.xml154
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/pagesheet.xml140
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/rowcolumn.xml88
-rwxr-xr-xtestautomation/xml/optional/input/calc/ExcelXML/solvsamp.xml9881
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/NatNumtest.sxcbin0 -> 9548 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/alien_attributes.sxcbin0 -> 5782 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/feat906.sxcbin0 -> 7568 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/japan.sxcbin0 -> 9864 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/korean.sxcbin0 -> 7728 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/pagefields_datapilot1.sxcbin0 -> 9742 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/pagefields_datapilot2.sxcbin0 -> 9748 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/pagefields_datapilot3.sxcbin0 -> 9744 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/pagefields_datapilot4.sxcbin0 -> 9740 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/simple_c.sxcbin0 -> 10931 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/ooo10/trad_c.sxcbin0 -> 8791 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/cellformats1.sdcbin0 -> 59392 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/cellformats2.sdcbin0 -> 79872 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/cellformats2b.sdcbin0 -> 75264 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/cellformats3.sdcbin0 -> 57344 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/cellformats5.sdcbin0 -> 62976 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/cellformats6.sdcbin0 -> 64000 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/chart_export.sdcbin0 -> 294912 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/conditional_formatting.sdcbin0 -> 20480 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/controls01.sdcbin0 -> 42496 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/database_ranges.sdcbin0 -> 25088 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/filter_and_subtotals1.sdcbin0 -> 23552 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/filter_and_subtotals4.sdcbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/matrixformula_and_notes.sdcbin0 -> 24064 bytes
-rwxr-xr-xtestautomation/xml/optional/input/calc/so_binary/password3.sdcbin0 -> 76800 bytes
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.001.xml38
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.002.xml50
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.003.xml52
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.004.xml49
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.005.xml38
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.006.xml48
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.007.xml61
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.008.xml52
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.009.xml46
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.010.xml45
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.011.xml44
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.012.xml36
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.013.xml29
-rwxr-xr-xtestautomation/xml/optional/input/docbook/informaltable.014.xml54
-rwxr-xr-xtestautomation/xml/optional/input/docbook/inline.001.xml27
-rwxr-xr-xtestautomation/xml/optional/input/docbook/itemizedlist.001.xml27
-rwxr-xr-xtestautomation/xml/optional/input/docbook/itemizedlist.002.xml38
-rwxr-xr-xtestautomation/xml/optional/input/docbook/itemizedlist.003.xml53
-rwxr-xr-xtestautomation/xml/optional/input/docbook/link.001.xml36
-rwxr-xr-xtestautomation/xml/optional/input/docbook/literallayout.001.xml19
-rwxr-xr-xtestautomation/xml/optional/input/docbook/literallayout.002.xml21
-rwxr-xr-xtestautomation/xml/optional/input/docbook/literallayout.003.xml19
-rwxr-xr-xtestautomation/xml/optional/input/docbook/lot.001.xml56
-rwxr-xr-xtestautomation/xml/optional/input/docbook/mathml.001.xml19
-rwxr-xr-xtestautomation/xml/optional/input/docbook/methodsynopsis.001.xml55
-rwxr-xr-xtestautomation/xml/optional/input/docbook/note.001.xml18
-rwxr-xr-xtestautomation/xml/optional/input/docbook/olink.001.xml22
-rwxr-xr-xtestautomation/xml/optional/input/docbook/orderedlist.001.xml38
-rwxr-xr-xtestautomation/xml/optional/input/docbook/orderedlist.002.xml38
-rwxr-xr-xtestautomation/xml/optional/input/docbook/procedure.001.xml44
-rwxr-xr-xtestautomation/xml/optional/input/docbook/procedure.003.xml19
-rwxr-xr-xtestautomation/xml/optional/input/docbook/productionset.001.xml66
-rwxr-xr-xtestautomation/xml/optional/input/docbook/productionset.002.xml27
-rwxr-xr-xtestautomation/xml/optional/input/docbook/productionset.003.xml30
-rwxr-xr-xtestautomation/xml/optional/input/docbook/productionset.004.xml53
-rwxr-xr-xtestautomation/xml/optional/input/docbook/productionset.005.xml89
-rwxr-xr-xtestautomation/xml/optional/input/docbook/programlisting.001.xml19
-rwxr-xr-xtestautomation/xml/optional/input/docbook/programlisting.002.xml19
-rwxr-xr-xtestautomation/xml/optional/input/docbook/programlisting.003.xml45
-rwxr-xr-xtestautomation/xml/optional/input/docbook/programlistingco.001.xml78
-rwxr-xr-xtestautomation/xml/optional/input/docbook/programlistingco.002.xml34
-rwxr-xr-xtestautomation/xml/optional/input/docbook/qandaset.001.xml45
-rwxr-xr-xtestautomation/xml/optional/input/docbook/qandaset.002.xml35
-rwxr-xr-xtestautomation/xml/optional/input/docbook/qandaset.003.xml92
-rwxr-xr-xtestautomation/xml/optional/input/docbook/refentry.001.xml25
-rwxr-xr-xtestautomation/xml/optional/input/docbook/refentry.002.xml29
-rwxr-xr-xtestautomation/xml/optional/input/docbook/refentry.003.xml65
-rwxr-xr-xtestautomation/xml/optional/input/docbook/refentry.004.xml68
-rwxr-xr-xtestautomation/xml/optional/input/docbook/reference.001.xml59
-rwxr-xr-xtestautomation/xml/optional/input/docbook/revhistory.001.xml41
-rwxr-xr-xtestautomation/xml/optional/input/docbook/screen.001.xml19
-rwxr-xr-xtestautomation/xml/optional/input/docbook/sect1.001.xml53
-rwxr-xr-xtestautomation/xml/optional/input/docbook/sect1.002.xml56
-rwxr-xr-xtestautomation/xml/optional/input/docbook/section.001.xml53
-rwxr-xr-xtestautomation/xml/optional/input/docbook/section.002.xml56
-rwxr-xr-xtestautomation/xml/optional/input/docbook/section.003.xml20
-rwxr-xr-xtestautomation/xml/optional/input/docbook/segmentedlist.001.xml21
-rwxr-xr-xtestautomation/xml/optional/input/docbook/segmentedlist.002.xml23
-rwxr-xr-xtestautomation/xml/optional/input/docbook/set.001.xml31
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.001.xml26
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.002.xml31
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.003.xml30
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.004.xml30
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.005.xml28
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.006.xml29
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.007.xml29
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.008.xml27
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.009.xml28
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.010.xml28
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.011.xml31
-rwxr-xr-xtestautomation/xml/optional/input/docbook/stamp.012.xml41
-rwxr-xr-xtestautomation/xml/optional/input/docbook/svg.001.xml38
-rwxr-xr-xtestautomation/xml/optional/input/docbook/svg.002.xml31
-rwxr-xr-xtestautomation/xml/optional/input/docbook/table.001.xml31
-rwxr-xr-xtestautomation/xml/optional/input/docbook/table.002.xml37
-rwxr-xr-xtestautomation/xml/optional/input/docbook/table.003.xml38
-rwxr-xr-xtestautomation/xml/optional/input/docbook/table.004.xml30
-rwxr-xr-xtestautomation/xml/optional/input/docbook/table.005.xml35
-rwxr-xr-xtestautomation/xml/optional/input/docbook/table.006.xml207
-rwxr-xr-xtestautomation/xml/optional/input/docbook/template.xml17
-rwxr-xr-xtestautomation/xml/optional/input/docbook/toc.001.xml63
-rwxr-xr-xtestautomation/xml/optional/input/docbook/ulink.001.xml23
-rwxr-xr-xtestautomation/xml/optional/input/docbook/variablelist.001.xml64
-rwxr-xr-xtestautomation/xml/optional/input/docbook/variablelist.002.xml35
-rwxr-xr-xtestautomation/xml/optional/input/docbook/variablelist.003.xml26
-rwxr-xr-xtestautomation/xml/optional/input/docbook/variablelist.004.xml26
-rwxr-xr-xtestautomation/xml/optional/input/docbook/xref.001.xml98
-rwxr-xr-xtestautomation/xml/optional/input/docbook/xrefstyle.001.xml19
-rwxr-xr-xtestautomation/xml/optional/input/for_xhtml_export/Table-XHTML.odtbin0 -> 6572 bytes
-rwxr-xr-xtestautomation/xml/optional/input/for_xhtml_export/border.odsbin0 -> 6700 bytes
-rwxr-xr-xtestautomation/xml/optional/input/for_xhtml_export/bullets.sxwbin0 -> 16074 bytes
-rwxr-xr-xtestautomation/xml/optional/input/for_xhtml_export/bullets_14364.sdwbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/xml/optional/input/for_xhtml_export/p_in_h.odtbin0 -> 9860 bytes
-rwxr-xr-xtestautomation/xml/optional/input/for_xhtml_export/presentation_xhtml.odpbin0 -> 83785 bytes
-rwxr-xr-xtestautomation/xml/optional/input/for_xhtml_export/span_split.odtbin0 -> 6651 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/excelOLE.docbin0 -> 26112 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/excelOLE.pptbin0 -> 35840 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/mathOLE.docbin0 -> 10752 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/mathOLE.pptbin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/mathOLE.xlsbin0 -> 9728 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/pptOLE.docbin0 -> 22016 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/pptOLE.xlsbin0 -> 14848 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/wordOLE.pptbin0 -> 33792 bytes
-rwxr-xr-xtestautomation/xml/optional/input/framework/ms_ole/wordOLE.xlsbin0 -> 27136 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/alien.sxdbin0 -> 6016 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/alien.sxibin0 -> 6182 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/chin.sxdbin0 -> 6931 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/chin.sxibin0 -> 8119 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/japan.sxdbin0 -> 6961 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/japan.sxibin0 -> 8119 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/korean.sxdbin0 -> 6916 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/korean.sxibin0 -> 8207 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/trad_chin.sxdbin0 -> 6887 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/ooo10/trad_chin.sxibin0 -> 8063 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18092.sdabin0 -> 38912 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18093.sdabin0 -> 30208 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18094.sdabin0 -> 32256 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18098.sdabin0 -> 32256 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18099.sdabin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18100.sdabin0 -> 31744 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18101.sdabin0 -> 28672 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18102.sdabin0 -> 30720 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18106.sdabin0 -> 30720 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18107.sdabin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18108-18115.sdabin0 -> 33280 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18116.sdabin0 -> 48640 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18117.sdabin0 -> 30720 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18118.sdabin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18119.sdabin0 -> 32256 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18120.sdabin0 -> 30720 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18121-18122.sdabin0 -> 32256 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18123.sdabin0 -> 33280 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18124.sdabin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18125.sdabin0 -> 32256 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18126.sdabin0 -> 31744 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18127-18128.sdabin0 -> 29184 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18129.sdabin0 -> 31744 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18130-18131.sdabin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18132.sdabin0 -> 36352 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18133-18134.sdabin0 -> 30208 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18135.sdabin0 -> 29184 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18136.sdabin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18137.sdabin0 -> 36352 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18138.sdabin0 -> 30208 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18139-18145.sdabin0 -> 74752 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18244.sdabin0 -> 30208 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18245.sdabin0 -> 30720 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18246-18250.sdabin0 -> 32768 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18464-18467.sdabin0 -> 30208 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18520-18524.sdabin0 -> 31744 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18526-18531.sdabin0 -> 32256 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18537-18544.sdabin0 -> 32768 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18629-18632.sdabin0 -> 28160 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18633.sdabin0 -> 28672 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18634.sdabin0 -> 29184 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18635.sdabin0 -> 27648 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/18636.sdabin0 -> 29184 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/19542-19544.sdabin0 -> 34304 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/19545-19547.sdabin0 -> 33792 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/19548-19553.sdabin0 -> 33792 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/19554-19557.sdabin0 -> 36352 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/19558-19560.sdabin0 -> 31232 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/Autolayout.sddbin0 -> 130048 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/Effects_slides.sddbin0 -> 53760 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/Effects_text_objects.sddbin0 -> 72192 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/Objects.sddbin0 -> 89088 bytes
-rwxr-xr-xtestautomation/xml/optional/input/graphics/so_bin/Text.sddbin0 -> 59392 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/asian/jp_math.sxmbin0 -> 3105 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/asian/ko_math.sxmbin0 -> 3062 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/asian/zh_cn_math.sxmbin0 -> 2952 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/asian/zh_tw_math.sxmbin0 -> 3143 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/1_unary-binary.smfbin0 -> 5120 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/2_relations.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/3_set_operations.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/4_functions.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/5_operators.smfbin0 -> 5120 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/6_attributes.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/7_others.smfbin0 -> 5120 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/8_brackets.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/9_formats.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/all_commands.smfbin0 -> 8192 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/all_commands_star_math_3.0.smfbin0 -> 8192 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/all_selections.smfbin0 -> 8192 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/annuities.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/cauchy.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/chemicalelement.smfbin0 -> 5120 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/definitionstraightline.smfbin0 -> 20992 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/effectiveannualinterestrate.smfbin0 -> 5120 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/hamiltonoperator.smfbin0 -> 6144 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/investmentreturns.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/lawoferrorpropagation.smfbin0 -> 36864 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/limes.smfbin0 -> 21504 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/linearregression.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/maxwell.smfbin0 -> 6144 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/scalarproduct.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/sinus.smfbin0 -> 5120 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/squareroot.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/standarddeviation.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/math/so_binary/vectorproduct.smfbin0 -> 5632 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/bookmark_script_note.sdwbin0 -> 18944 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/characters.sdwbin0 -> 16896 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/events_to_objects.sdwbin0 -> 65024 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/feat1318.sxwbin0 -> 6096 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/feat476.sxwbin0 -> 5891 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/fields.sdwbin0 -> 37376 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/fiscus.sxwbin0 -> 5666 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/fiscus2.sxwbin0 -> 5840 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/footnotes.sdwbin0 -> 30208 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/frames.sdwbin0 -> 24064 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/hyperlinks.sdwbin0 -> 10240 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/index_biblio.sdwbin0 -> 24576 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/index_most.sdwbin0 -> 24576 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/indexes_alpha.sdwbin0 -> 37376 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/jp_text.sxwbin0 -> 6133 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/ko_text.sxwbin0 -> 6292 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/pages.sdwbin0 -> 32768 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/paragraph01.sdwbin0 -> 25088 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/paragraph02.sdwbin0 -> 19456 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/section_main.sdwbin0 -> 32256 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/verttoline1.docbin0 -> 25600 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/zh_cn_text.sxwbin0 -> 5599 bytes
-rwxr-xr-xtestautomation/xml/optional/input/writer/zh_tw_text.sxwbin0 -> 5545 bytes
-rwxr-xr-xtestautomation/xml/optional/math_xml_7_export.bas91
-rwxr-xr-xtestautomation/xml/optional/w_xml_vertical_alignment.bas56
-rwxr-xr-xtestautomation/xml/optional/writer_xml_7_export.bas67
-rwxr-xr-xtestautomation/xml/required/includes/oasis_graphics_01.inc597
-rwxr-xr-xtestautomation/xml/required/input/graphics/alien_attributes/alien_attributes_presentation.odpbin0 -> 7351 bytes
-rwxr-xr-xtestautomation/xml/required/input/graphics/header_footer/allheaderfooter_fixed.odpbin0 -> 9161 bytes
-rwxr-xr-xtestautomation/xml/required/input/graphics/header_footer/noheaderfooter.odpbin0 -> 10143 bytes
-rwxr-xr-xtestautomation/xml/required/input/graphics/header_footer/nomasterelements.odpbin0 -> 9485 bytes
-rwxr-xr-xtestautomation/xml/required/input/graphics/header_footer/someheaderfooter_varible.odpbin0 -> 10190 bytes
-rwxr-xr-xtestautomation/xml/required/oasis_graphics_update.bas58
-rwxr-xr-xtestautomation/xml/tools/includes/itools1.inc60
-rwxr-xr-xtestautomation/xml/tools/includes/xmltool1.inc103
-rw-r--r--testgraphical/document-pool/demo/CurrentTime.odsbin0 -> 8299 bytes
-rw-r--r--testgraphical/document-pool/demo/knownissues.xcl8
-rw-r--r--testgraphical/document-pool/singletest/eis-test.odtbin0 -> 9623 bytes
-rw-r--r--testgraphical/prechecks/makefile.mk56
-rw-r--r--testgraphical/prechecks/softwaretests.pl564
-rwxr-xr-xtestgraphical/prj/build.lst7
-rwxr-xr-xtestgraphical/prj/d.lst0
-rw-r--r--testgraphical/qa/graphical/Test.java113
-rw-r--r--testgraphical/qa/graphical/makefile.mk57
-rw-r--r--testgraphical/references/unxlngi/demo/CurrentTime.ods.pdfbin0 -> 13916 bytes
-rw-r--r--testgraphical/references/unxlngi/demo/CurrentTime.ods.ps576
-rw-r--r--testgraphical/references/unxlngi/singletest/eis-test.odt.pdfbin0 -> 14356 bytes
-rw-r--r--testgraphical/references/unxlngi/singletest/eis-test.odt.ps565
-rw-r--r--testgraphical/references/unxlngi/singletest/tolerance.ini_4
-rw-r--r--testgraphical/references/unxsoli/singletest/eis-test.odt.pdfbin0 -> 9162 bytes
-rw-r--r--testgraphical/references/wntmsci/demo/CurrentTime.ods.pdfbin0 -> 13916 bytes
-rw-r--r--testgraphical/references/wntmsci/demo/CurrentTime.ods.ps499
-rw-r--r--testgraphical/references/wntmsci/singletest/eis-test.odt.pdfbin0 -> 9142 bytes
-rw-r--r--testgraphical/references/wntmsci/singletest/eis-test.odt.ps1984
-rw-r--r--testgraphical/source/CallExternals.pm539
-rw-r--r--testgraphical/source/ConvwatchHelper.pm574
-rw-r--r--testgraphical/source/compare.pl408
-rw-r--r--testgraphical/source/cwstestresult.pl208
-rw-r--r--testgraphical/source/cwstestresulthelper.pm268
-rw-r--r--testgraphical/source/dbhelper.pm209
-rw-r--r--testgraphical/source/filehelper.pm358
-rw-r--r--testgraphical/source/fill_documents_loop.pl423
-rw-r--r--testgraphical/source/graphical_compare.pm586
-rw-r--r--testgraphical/source/loghelper.pm94
-rw-r--r--testgraphical/source/makefile.mk112
-rw-r--r--testgraphical/source/oshelper.pm110
-rw-r--r--testgraphical/source/solarenvhelper.pm63
-rw-r--r--testgraphical/source/stringhelper.pm69
-rw-r--r--testgraphical/source/timehelper.pm99
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/build.xml74
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/dist/ConvwatchGUIProject.jarbin0 -> 28271 bytes
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/makefile.mk71
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/manifest.mf3
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/nbproject/build-impl.xml805
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/nbproject/genfiles.properties9
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/nbproject/private/config.properties0
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/nbproject/private/private.properties8
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/nbproject/private/private.xml4
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/nbproject/project.properties72
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/nbproject/project.xml15
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/src/ConvwatchGUI.form286
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/src/ConvwatchGUI.java535
-rw-r--r--testgraphical/ui/java/ConvwatchGUIProject/src/IniFile.java718
-rw-r--r--testgraphical/ui/java/makefile.mk53
-rw-r--r--testgraphical/util/makefile.pmk34
-rw-r--r--testtools/com/sun/star/comp/bridge/CurrentContextChecker.java81
-rw-r--r--testtools/com/sun/star/comp/bridge/TestComponent.java1332
-rw-r--r--testtools/com/sun/star/comp/bridge/TestComponentMain.java158
-rw-r--r--testtools/com/sun/star/comp/bridge/makefile.mk61
-rw-r--r--testtools/com/sun/star/comp/bridge/manifest2
-rw-r--r--testtools/inc/makefile.mk47
-rw-r--r--testtools/inc/pch/precompiled_testtools.cxx31
-rw-r--r--testtools/inc/pch/precompiled_testtools.hxx34
-rw-r--r--testtools/prj/build.lst8
-rw-r--r--testtools/prj/d.lst0
-rw-r--r--testtools/qa/cli/CLITest.java111
-rw-r--r--testtools/qa/cli/makefile.mk82
-rw-r--r--testtools/qa/cli/readme.txt26
-rw-r--r--testtools/qa/cliversioning/VersionTestCase.java106
-rw-r--r--testtools/qa/cliversioning/makefile.mk93
-rw-r--r--testtools/readme.txt34
-rw-r--r--testtools/source/bridgetest/bridgetest.cxx1372
-rw-r--r--testtools/source/bridgetest/cli/cli_bridgetest_inprocess.cs260
-rw-r--r--testtools/source/bridgetest/cli/cli_bridgetest_inprocess.ini3
-rw-r--r--testtools/source/bridgetest/cli/cli_cpp_bridgetest.cxx985
-rw-r--r--testtools/source/bridgetest/cli/cli_cs_bridgetest.cs1033
-rw-r--r--testtools/source/bridgetest/cli/cli_cs_multi.cs119
-rw-r--r--testtools/source/bridgetest/cli/cli_cs_testobj.cs909
-rw-r--r--testtools/source/bridgetest/cli/cli_vb_bridgetest.vb862
-rw-r--r--testtools/source/bridgetest/cli/cli_vb_testobj.vb624
-rw-r--r--testtools/source/bridgetest/cli/makefile.mk203
-rw-r--r--testtools/source/bridgetest/constructors.cxx520
-rw-r--r--testtools/source/bridgetest/cppobj.cxx1231
-rw-r--r--testtools/source/bridgetest/currentcontextchecker.cxx132
-rw-r--r--testtools/source/bridgetest/currentcontextchecker.hxx74
-rw-r--r--testtools/source/bridgetest/idl/bridgetest.idl552
-rw-r--r--testtools/source/bridgetest/idl/makefile.mk70
-rw-r--r--testtools/source/bridgetest/makefile.mk218
-rw-r--r--testtools/source/bridgetest/multi.cxx243
-rw-r--r--testtools/source/bridgetest/multi.hxx129
-rw-r--r--testtools/source/bridgetest/pyuno/core.py367
-rw-r--r--testtools/source/bridgetest/pyuno/impl.py196
-rw-r--r--testtools/source/bridgetest/pyuno/importer.py78
-rw-r--r--testtools/source/bridgetest/pyuno/main.py49
-rw-r--r--testtools/source/bridgetest/pyuno/makefile.mk108
-rw-r--r--testtools/source/bridgetest/pyuno/pyuno2
-rw-r--r--testtools/source/bridgetest/pyuno/samplecomponent.py154
-rw-r--r--testtools/source/bridgetest/pyuno/testcomp.py40
-rw-r--r--testtools/source/cliversioning/makefile.mk142
-rw-r--r--testtools/source/cliversioning/readme.txt106
-rw-r--r--testtools/source/cliversioning/runtests.cs127
-rw-r--r--testtools/source/cliversioning/version.cs608
-rw-r--r--testtools/source/cliversioning/version_libs/readme.txt3
-rw-r--r--testtools/source/cliversioning/version_libs/version_3_0_0.dllbin0 -> 11776 bytes
-rw-r--r--testtools/source/cliversioning/version_libs/version_3_0_1.dllbin0 -> 11776 bytes
-rwxr-xr-xtesttools/source/cliversioning/version_libs/version_3_1.dllbin0 -> 11776 bytes
-rw-r--r--testtools/source/cliversioning/version_libs/version_3_1_1.dllbin0 -> 11776 bytes
-rwxr-xr-xtesttools/source/cliversioning/version_libs/version_3_2.dllbin0 -> 11776 bytes
-rwxr-xr-xtesttools/source/cliversioning/version_libs/version_3_2_1.dllbin0 -> 11776 bytes
-rw-r--r--testtools/source/performance/cli_testobj_performance.cs118
-rw-r--r--testtools/source/performance/exports.dxp3
-rw-r--r--testtools/source/performance/makefile.mk98
-rw-r--r--testtools/source/performance/pseudo.cxx277
-rw-r--r--testtools/source/performance/pseudo_uno_uno.map7
-rw-r--r--testtools/source/performance/ubobject.cxx311
-rw-r--r--testtools/source/performance/ubtest.cxx1340
-rw-r--r--testtools/source/servicetests/LocalServiceTest.java53
-rw-r--r--testtools/source/servicetests/RemoteServiceTest.java121
-rw-r--r--testtools/source/servicetests/TestBase.java145
-rw-r--r--testtools/source/servicetests/TestService.java197
-rw-r--r--testtools/source/servicetests/TestService1.idl55
-rw-r--r--testtools/source/servicetests/TestService2.idl47
-rw-r--r--testtools/source/servicetests/XTestService1.idl41
-rw-r--r--testtools/source/servicetests/XTestService2.idl41
-rw-r--r--testtools/source/servicetests/XTestService3.idl41
-rw-r--r--testtools/source/servicetests/XTestService4.idl41
-rw-r--r--testtools/source/servicetests/makefile.mk44
-rw-r--r--testtools/util/makefile.pmk35
-rwxr-xr-xtomcat/makefile.mk69
-rwxr-xr-xtomcat/prj/build.lst2
-rwxr-xr-xtomcat/prj/d.lst1
-rw-r--r--tomcat/tomcat.patch35
-rw-r--r--toolkit/doc/layout/ChangeLog1286
-rw-r--r--toolkit/doc/layout/ChangeLog.0546
-rw-r--r--toolkit/doc/layout/README24
-rw-r--r--toolkit/doc/layout/TODO227
-rw-r--r--toolkit/doc/layout/apinotes.txt76
-rw-r--r--toolkit/doc/layout/metricfield.txt57
-rw-r--r--toolkit/doc/layout/notes.txt117
-rw-r--r--toolkit/doc/layout/oldnotes.txt224
-rw-r--r--toolkit/doc/layout/vcl.txt20
-rw-r--r--toolkit/inc/layout/layout-post.hxx107
-rw-r--r--toolkit/inc/layout/layout-pre.hxx108
-rw-r--r--toolkit/inc/layout/layout.hxx832
-rw-r--r--toolkit/inc/makefile.mk48
-rw-r--r--toolkit/inc/pch/precompiled_toolkit.cxx31
-rw-r--r--toolkit/inc/pch/precompiled_toolkit.hxx347
-rw-r--r--toolkit/inc/toolkit/awt/vclxaccessiblecomponent.hxx168
-rw-r--r--toolkit/inc/toolkit/awt/vclxbitmap.hxx89
-rw-r--r--toolkit/inc/toolkit/awt/vclxcontainer.hxx82
-rw-r--r--toolkit/inc/toolkit/awt/vclxdevice.hxx138
-rw-r--r--toolkit/inc/toolkit/awt/vclxfont.hxx98
-rw-r--r--toolkit/inc/toolkit/awt/vclxgraphics.hxx142
-rw-r--r--toolkit/inc/toolkit/awt/vclxmenu.hxx191
-rw-r--r--toolkit/inc/toolkit/awt/vclxpointer.hxx87
-rw-r--r--toolkit/inc/toolkit/awt/vclxprinter.hxx227
-rw-r--r--toolkit/inc/toolkit/awt/vclxregion.hxx98
-rw-r--r--toolkit/inc/toolkit/awt/vclxspinbutton.hxx102
-rw-r--r--toolkit/inc/toolkit/awt/vclxsystemdependentwindow.hxx69
-rw-r--r--toolkit/inc/toolkit/awt/vclxtoolkit.hxx220
-rw-r--r--toolkit/inc/toolkit/awt/vclxtopwindow.hxx125
-rw-r--r--toolkit/inc/toolkit/awt/vclxwindow.hxx245
-rw-r--r--toolkit/inc/toolkit/awt/vclxwindows.hxx1168
-rw-r--r--toolkit/inc/toolkit/awt/xsimpleanimation.hxx94
-rw-r--r--toolkit/inc/toolkit/awt/xthrobber.hxx90
-rw-r--r--toolkit/inc/toolkit/controls/accessiblecontrolcontext.hxx138
-rw-r--r--toolkit/inc/toolkit/controls/dialogcontrol.hxx329
-rw-r--r--toolkit/inc/toolkit/controls/eventcontainer.hxx140
-rw-r--r--toolkit/inc/toolkit/controls/formattedcontrol.hxx130
-rw-r--r--toolkit/inc/toolkit/controls/geometrycontrolmodel.hxx265
-rw-r--r--toolkit/inc/toolkit/controls/geometrycontrolmodel_impl.hxx92
-rw-r--r--toolkit/inc/toolkit/controls/roadmapcontrol.hxx209
-rw-r--r--toolkit/inc/toolkit/controls/roadmapentry.hxx93
-rw-r--r--toolkit/inc/toolkit/controls/stdtabcontroller.hxx96
-rw-r--r--toolkit/inc/toolkit/controls/stdtabcontrollermodel.hxx144
-rw-r--r--toolkit/inc/toolkit/controls/tkscrollbar.hxx127
-rw-r--r--toolkit/inc/toolkit/controls/tksimpleanimation.hxx114
-rw-r--r--toolkit/inc/toolkit/controls/tkspinbutton.hxx130
-rw-r--r--toolkit/inc/toolkit/controls/tkthrobber.hxx112
-rw-r--r--toolkit/inc/toolkit/controls/unocontrol.hxx245
-rw-r--r--toolkit/inc/toolkit/controls/unocontrolbase.hxx71
-rw-r--r--toolkit/inc/toolkit/controls/unocontrolcontainer.hxx168
-rw-r--r--toolkit/inc/toolkit/controls/unocontrolcontainermodel.hxx68
-rw-r--r--toolkit/inc/toolkit/controls/unocontrolmodel.hxx178
-rw-r--r--toolkit/inc/toolkit/controls/unocontrols.hxx1544
-rw-r--r--toolkit/inc/toolkit/dllapi.h43
-rw-r--r--toolkit/inc/toolkit/helper/accessibilityclient.hxx75
-rw-r--r--toolkit/inc/toolkit/helper/accessiblefactory.hxx140
-rw-r--r--toolkit/inc/toolkit/helper/convert.hxx70
-rw-r--r--toolkit/inc/toolkit/helper/emptyfontdescriptor.hxx58
-rw-r--r--toolkit/inc/toolkit/helper/externallock.hxx47
-rw-r--r--toolkit/inc/toolkit/helper/fixedhyperbase.hxx59
-rw-r--r--toolkit/inc/toolkit/helper/formpdfexport.hxx60
-rw-r--r--toolkit/inc/toolkit/helper/imagealign.hxx66
-rw-r--r--toolkit/inc/toolkit/helper/listenermultiplexer.hxx257
-rw-r--r--toolkit/inc/toolkit/helper/macros.hxx272
-rw-r--r--toolkit/inc/toolkit/helper/mutexandbroadcasthelper.hxx59
-rw-r--r--toolkit/inc/toolkit/helper/mutexhelper.hxx53
-rw-r--r--toolkit/inc/toolkit/helper/property.hxx252
-rw-r--r--toolkit/inc/toolkit/helper/servicenames.hxx112
-rw-r--r--toolkit/inc/toolkit/helper/throbberimpl.hxx86
-rw-r--r--toolkit/inc/toolkit/helper/tkresmgr.hxx79
-rw-r--r--toolkit/inc/toolkit/helper/unomemorystream.hxx75
-rw-r--r--toolkit/inc/toolkit/helper/unopropertyarrayhelper.hxx68
-rw-r--r--toolkit/inc/toolkit/helper/unowrapper.hxx95
-rw-r--r--toolkit/inc/toolkit/helper/vclunohelper.hxx166
-rw-r--r--toolkit/prj/build.lst14
-rw-r--r--toolkit/prj/d.lst65
-rw-r--r--toolkit/qa/complex/toolkit/CallbackClass.java67
-rwxr-xr-xtoolkit/qa/complex/toolkit/CheckAccessibleStatusBar.java331
-rwxr-xr-xtoolkit/qa/complex/toolkit/CheckAccessibleStatusBarItem.java385
-rw-r--r--toolkit/qa/complex/toolkit/CheckAsyncCallback.java127
-rwxr-xr-xtoolkit/qa/complex/toolkit/interface_tests/_XAccessibleComponent.java489
-rwxr-xr-xtoolkit/qa/complex/toolkit/interface_tests/_XAccessibleContext.java261
-rwxr-xr-xtoolkit/qa/complex/toolkit/interface_tests/_XAccessibleEventBroadcaster.java211
-rwxr-xr-xtoolkit/qa/complex/toolkit/interface_tests/_XAccessibleExtendedComponent.java99
-rwxr-xr-xtoolkit/qa/complex/toolkit/interface_tests/_XAccessibleText.java1017
-rw-r--r--toolkit/qa/complex/toolkit/interface_tests/_XRequestCallback.java88
-rwxr-xr-xtoolkit/qa/complex/toolkit/interface_tests/makefile.mk57
-rwxr-xr-xtoolkit/qa/complex/toolkit/makefile.mk82
-rw-r--r--toolkit/qa/complex/xunitconversion/XUnitConversionTest.java222
-rw-r--r--toolkit/qa/complex/xunitconversion/makefile.mk77
-rw-r--r--toolkit/qa/unoapi/Test.java51
-rw-r--r--toolkit/qa/unoapi/knownissues.xcl252
-rw-r--r--toolkit/qa/unoapi/makefile.mk48
-rw-r--r--toolkit/qa/unoapi/testdocuments/poliball.gifbin0 -> 945 bytes
-rw-r--r--toolkit/qa/unoapi/toolkit.sce77
-rw-r--r--toolkit/source/awt/asynccallback.cxx203
-rw-r--r--toolkit/source/awt/forward.hxx76
-rw-r--r--toolkit/source/awt/makefile.mk84
-rw-r--r--toolkit/source/awt/non-interactable-containers.xml15
-rw-r--r--toolkit/source/awt/stylesettings.cxx989
-rw-r--r--toolkit/source/awt/stylesettings.hxx187
-rw-r--r--toolkit/source/awt/vclxaccessiblecomponent.cxx926
-rw-r--r--toolkit/source/awt/vclxbitmap.cxx95
-rw-r--r--toolkit/source/awt/vclxbutton.cxx129
-rw-r--r--toolkit/source/awt/vclxbutton.hxx117
-rw-r--r--toolkit/source/awt/vclxcontainer.cxx237
-rw-r--r--toolkit/source/awt/vclxdevice.cxx363
-rw-r--r--toolkit/source/awt/vclxdialog.cxx282
-rw-r--r--toolkit/source/awt/vclxdialog.hxx110
-rw-r--r--toolkit/source/awt/vclxfixedline.cxx135
-rw-r--r--toolkit/source/awt/vclxfixedline.hxx78
-rw-r--r--toolkit/source/awt/vclxfont.cxx255
-rw-r--r--toolkit/source/awt/vclxgraphics.cxx480
-rw-r--r--toolkit/source/awt/vclxmenu.cxx1119
-rw-r--r--toolkit/source/awt/vclxplugin.cxx83
-rw-r--r--toolkit/source/awt/vclxplugin.hxx70
-rw-r--r--toolkit/source/awt/vclxpointer.cxx82
-rw-r--r--toolkit/source/awt/vclxprinter.cxx465
-rw-r--r--toolkit/source/awt/vclxregion.cxx173
-rw-r--r--toolkit/source/awt/vclxscroller.cxx203
-rw-r--r--toolkit/source/awt/vclxscroller.hxx90
-rw-r--r--toolkit/source/awt/vclxspinbutton.cxx358
-rw-r--r--toolkit/source/awt/vclxsplitter.cxx248
-rw-r--r--toolkit/source/awt/vclxsplitter.hxx124
-rw-r--r--toolkit/source/awt/vclxsystemdependentwindow.cxx126
-rw-r--r--toolkit/source/awt/vclxtabcontrol.cxx521
-rw-r--r--toolkit/source/awt/vclxtabcontrol.hxx147
-rw-r--r--toolkit/source/awt/vclxtabpage.cxx145
-rw-r--r--toolkit/source/awt/vclxtabpage.hxx76
-rw-r--r--toolkit/source/awt/vclxtoolkit.cxx1703
-rw-r--r--toolkit/source/awt/vclxtopwindow.cxx338
-rw-r--r--toolkit/source/awt/vclxwindow.cxx2673
-rw-r--r--toolkit/source/awt/vclxwindow1.cxx110
-rw-r--r--toolkit/source/awt/vclxwindows.cxx6271
-rw-r--r--toolkit/source/awt/xsimpleanimation.cxx167
-rw-r--r--toolkit/source/awt/xthrobber.cxx158
-rw-r--r--toolkit/source/awt/xthrobber.hrc39
-rw-r--r--toolkit/source/awt/xthrobber.src177
-rw-r--r--toolkit/source/controls/accessiblecontrolcontext.cxx382
-rw-r--r--toolkit/source/controls/dialogcontrol.cxx2177
-rw-r--r--toolkit/source/controls/eventcontainer.cxx214
-rw-r--r--toolkit/source/controls/formattedcontrol.cxx471
-rw-r--r--toolkit/source/controls/geometrycontrolmodel.cxx654
-rw-r--r--toolkit/source/controls/grid/defaultgridcolumnmodel.cxx202
-rw-r--r--toolkit/source/controls/grid/defaultgridcolumnmodel.hxx102
-rw-r--r--toolkit/source/controls/grid/defaultgriddatamodel.cxx349
-rw-r--r--toolkit/source/controls/grid/defaultgriddatamodel.hxx104
-rw-r--r--toolkit/source/controls/grid/gridcolumn.cxx307
-rw-r--r--toolkit/source/controls/grid/gridcolumn.hxx110
-rw-r--r--toolkit/source/controls/grid/gridcontrol.cxx287
-rw-r--r--toolkit/source/controls/grid/gridcontrol.hxx124
-rw-r--r--toolkit/source/controls/grid/makefile.mk50
-rw-r--r--toolkit/source/controls/makefile.mk66
-rw-r--r--toolkit/source/controls/roadmapcontrol.cxx499
-rw-r--r--toolkit/source/controls/roadmapentry.cxx126
-rw-r--r--toolkit/source/controls/stdtabcontroller.cxx431
-rw-r--r--toolkit/source/controls/stdtabcontrollermodel.cxx410
-rw-r--r--toolkit/source/controls/tkscrollbar.cxx296
-rw-r--r--toolkit/source/controls/tksimpleanimation.cxx214
-rw-r--r--toolkit/source/controls/tkspinbutton.cxx352
-rw-r--r--toolkit/source/controls/tkthrobber.cxx201
-rw-r--r--toolkit/source/controls/tree/makefile.mk48
-rw-r--r--toolkit/source/controls/tree/treecontrol.cxx512
-rw-r--r--toolkit/source/controls/tree/treecontrol.hxx140
-rw-r--r--toolkit/source/controls/tree/treedatamodel.cxx676
-rw-r--r--toolkit/source/controls/unocontrol.cxx1602
-rw-r--r--toolkit/source/controls/unocontrolbase.cxx287
-rw-r--r--toolkit/source/controls/unocontrolcontainer.cxx836
-rw-r--r--toolkit/source/controls/unocontrolcontainermodel.cxx91
-rw-r--r--toolkit/source/controls/unocontrolmodel.cxx1488
-rw-r--r--toolkit/source/controls/unocontrols.cxx4428
-rw-r--r--toolkit/source/helper/accessibilityclient.cxx280
-rw-r--r--toolkit/source/helper/externallock.cxx48
-rw-r--r--toolkit/source/helper/fixedhyperbase.cxx74
-rw-r--r--toolkit/source/helper/formpdfexport.cxx610
-rw-r--r--toolkit/source/helper/imagealign.cxx138
-rw-r--r--toolkit/source/helper/listenermultiplexer.cxx215
-rw-r--r--toolkit/source/helper/makefile.mk64
-rw-r--r--toolkit/source/helper/property.cxx408
-rw-r--r--toolkit/source/helper/registerservices.cxx407
-rw-r--r--toolkit/source/helper/servicenames.cxx111
-rw-r--r--toolkit/source/helper/throbberimpl.cxx140
-rw-r--r--toolkit/source/helper/tkresmgr.cxx101
-rw-r--r--toolkit/source/helper/unomemorystream.cxx110
-rw-r--r--toolkit/source/helper/unopropertyarrayhelper.cxx162
-rw-r--r--toolkit/source/helper/unowrapper.cxx343
-rw-r--r--toolkit/source/helper/vclunohelper.cxx803
-rw-r--r--toolkit/source/layout/core/bin.cxx201
-rw-r--r--toolkit/source/layout/core/bin.hxx116
-rw-r--r--toolkit/source/layout/core/box-base.cxx176
-rw-r--r--toolkit/source/layout/core/box-base.hxx90
-rw-r--r--toolkit/source/layout/core/box.cxx284
-rw-r--r--toolkit/source/layout/core/box.hxx105
-rw-r--r--toolkit/source/layout/core/byteseq.cxx79
-rw-r--r--toolkit/source/layout/core/container.cxx131
-rw-r--r--toolkit/source/layout/core/container.hxx139
-rw-r--r--toolkit/source/layout/core/dialogbuttonhbox.cxx292
-rw-r--r--toolkit/source/layout/core/dialogbuttonhbox.hxx76
-rw-r--r--toolkit/source/layout/core/factory.cxx153
-rw-r--r--toolkit/source/layout/core/factory.hxx77
-rw-r--r--toolkit/source/layout/core/flow.cxx212
-rw-r--r--toolkit/source/layout/core/flow.hxx98
-rw-r--r--toolkit/source/layout/core/helper.cxx606
-rw-r--r--toolkit/source/layout/core/helper.hxx152
-rw-r--r--toolkit/source/layout/core/import.cxx328
-rw-r--r--toolkit/source/layout/core/import.hxx214
-rw-r--r--toolkit/source/layout/core/localized-string.cxx82
-rw-r--r--toolkit/source/layout/core/localized-string.hxx79
-rw-r--r--toolkit/source/layout/core/makefile.mk65
-rw-r--r--toolkit/source/layout/core/precompiled_xmlscript.hxx38
-rw-r--r--toolkit/source/layout/core/proplist.cxx431
-rw-r--r--toolkit/source/layout/core/proplist.hxx94
-rw-r--r--toolkit/source/layout/core/root.cxx393
-rw-r--r--toolkit/source/layout/core/root.hxx159
-rw-r--r--toolkit/source/layout/core/table.cxx314
-rw-r--r--toolkit/source/layout/core/table.hxx105
-rw-r--r--toolkit/source/layout/core/timer.cxx151
-rw-r--r--toolkit/source/layout/core/timer.hxx52
-rw-r--r--toolkit/source/layout/core/translate.cxx133
-rw-r--r--toolkit/source/layout/core/translate.hxx43
-rw-r--r--toolkit/source/layout/core/vcl.cxx69
-rw-r--r--toolkit/source/layout/core/vcl.hxx51
-rw-r--r--toolkit/source/layout/vcl/makefile.mk52
-rw-r--r--toolkit/source/layout/vcl/wbutton.cxx684
-rw-r--r--toolkit/source/layout/vcl/wcontainer.cxx269
-rw-r--r--toolkit/source/layout/vcl/wfield.cxx795
-rw-r--r--toolkit/source/layout/vcl/wrapper.cxx1566
-rw-r--r--toolkit/source/layout/vcl/wrapper.hxx152
-rw-r--r--toolkit/src2xml/README16
-rw-r--r--toolkit/src2xml/dryrunall.sh2
-rw-r--r--toolkit/src2xml/include-sc.lst8
-rw-r--r--toolkit/src2xml/include-sd.lst6
-rw-r--r--toolkit/src2xml/include-sw.lst5
-rw-r--r--toolkit/src2xml/include.lst298
-rw-r--r--toolkit/src2xml/sc.sh3
-rw-r--r--toolkit/src2xml/sd.sh3
-rw-r--r--toolkit/src2xml/source/boxer.py73
-rw-r--r--toolkit/src2xml/source/expression.py111
-rw-r--r--toolkit/src2xml/source/expression_test.py23
-rw-r--r--toolkit/src2xml/source/globals.py115
-rw-r--r--toolkit/src2xml/source/macroexpander_test.py71
-rw-r--r--toolkit/src2xml/source/macroparser.py130
-rw-r--r--toolkit/src2xml/source/macroparser_test.py20
-rw-r--r--toolkit/src2xml/source/src2xml.py227
-rw-r--r--toolkit/src2xml/source/srclexer.py488
-rw-r--r--toolkit/src2xml/source/srcparser.py416
-rw-r--r--toolkit/src2xml/src-sc.lst57
-rw-r--r--toolkit/src2xml/src-sd.lst124
-rw-r--r--toolkit/src2xml/src-sw.lst121
-rw-r--r--toolkit/src2xml/src.lst680
-rw-r--r--toolkit/src2xml/sw.sh3
-rwxr-xr-xtoolkit/test/accessibility/AWB.sxwbin0 -> 9257 bytes
-rw-r--r--toolkit/test/accessibility/AccTreeNode.java350
-rwxr-xr-xtoolkit/test/accessibility/AccessibilityTree.java377
-rw-r--r--toolkit/test/accessibility/AccessibilityTreeModel.java513
-rw-r--r--toolkit/test/accessibility/AccessibilityTreeModelBase.java122
-rwxr-xr-xtoolkit/test/accessibility/AccessibilityWorkBench.java620
-rw-r--r--toolkit/test/accessibility/AccessibleActionHandler.java72
-rw-r--r--toolkit/test/accessibility/AccessibleActionNode.java48
-rw-r--r--toolkit/test/accessibility/AccessibleCellHandler.java156
-rw-r--r--toolkit/test/accessibility/AccessibleComponentHandler.java102
-rw-r--r--toolkit/test/accessibility/AccessibleContextHandler.java91
-rw-r--r--toolkit/test/accessibility/AccessibleEditableTextHandler.java40
-rw-r--r--toolkit/test/accessibility/AccessibleExtendedComponentHandler.java73
-rw-r--r--toolkit/test/accessibility/AccessibleHyperlinkHandler.java42
-rw-r--r--toolkit/test/accessibility/AccessibleHypertextHandler.java42
-rw-r--r--toolkit/test/accessibility/AccessibleImageHandler.java51
-rw-r--r--toolkit/test/accessibility/AccessibleRelationHandler.java96
-rw-r--r--toolkit/test/accessibility/AccessibleSelectionHandler.java130
-rw-r--r--toolkit/test/accessibility/AccessibleTableHandler.java90
-rw-r--r--toolkit/test/accessibility/AccessibleTextHandler.java792
-rw-r--r--toolkit/test/accessibility/AccessibleTreeCellRenderer.java86
-rw-r--r--toolkit/test/accessibility/AccessibleTreeHandler.java110
-rw-r--r--toolkit/test/accessibility/AccessibleTreeNode.java101
-rw-r--r--toolkit/test/accessibility/AccessibleUNOHandler.java115
-rwxr-xr-xtoolkit/test/accessibility/Canvas.java448
-rw-r--r--toolkit/test/accessibility/CanvasShape.java330
-rw-r--r--toolkit/test/accessibility/ChildEventHandler.java46
-rw-r--r--toolkit/test/accessibility/ContextEventHandler.java52
-rw-r--r--toolkit/test/accessibility/EventHandler.java57
-rw-r--r--toolkit/test/accessibility/EventListener.java124
-rw-r--r--toolkit/test/accessibility/EventLogger.java31
-rw-r--r--toolkit/test/accessibility/EventQueue.java126
-rw-r--r--toolkit/test/accessibility/FrameActionListener.java21
-rw-r--r--toolkit/test/accessibility/GeometryEventHandler.java54
-rw-r--r--toolkit/test/accessibility/HelpWindow.java185
-rwxr-xr-xtoolkit/test/accessibility/InformationWriter.java415
-rw-r--r--toolkit/test/accessibility/MessageArea.java123
-rwxr-xr-xtoolkit/test/accessibility/MessageInterface.java5
-rw-r--r--toolkit/test/accessibility/NodeFactory.java147
-rw-r--r--toolkit/test/accessibility/NodeHandler.java140
-rw-r--r--toolkit/test/accessibility/NodeMap.java112
-rwxr-xr-xtoolkit/test/accessibility/OfficeConnection.java102
-rw-r--r--toolkit/test/accessibility/Options.java88
-rwxr-xr-xtoolkit/test/accessibility/Print.java5
-rw-r--r--toolkit/test/accessibility/QueuedListener.java55
-rw-r--r--toolkit/test/accessibility/QueuedTopWindowListener.java88
-rw-r--r--toolkit/test/accessibility/SelectionDialog.java179
-rwxr-xr-xtoolkit/test/accessibility/SimpleOffice.java389
-rw-r--r--toolkit/test/accessibility/StringNode.java13
-rw-r--r--toolkit/test/accessibility/TableEventHandler.java43
-rw-r--r--toolkit/test/accessibility/TextLogger.java52
-rw-r--r--toolkit/test/accessibility/TextUpdateListener.java170
-rw-r--r--toolkit/test/accessibility/TopWindowListener.java205
-rw-r--r--toolkit/test/accessibility/VectorNode.java50
-rw-r--r--toolkit/test/accessibility/about.html8
-rw-r--r--toolkit/test/accessibility/help.html91
-rw-r--r--toolkit/test/accessibility/jawb.mf3
-rw-r--r--toolkit/test/accessibility/makefile.mk127
-rw-r--r--toolkit/test/accessibility/news.html36
-rw-r--r--toolkit/test/accessibility/ov/ContextView.java125
-rw-r--r--toolkit/test/accessibility/ov/FocusView.java119
-rw-r--r--toolkit/test/accessibility/ov/ListeningObjectView.java60
-rw-r--r--toolkit/test/accessibility/ov/ObjectView.java77
-rw-r--r--toolkit/test/accessibility/ov/ObjectViewContainer.java166
-rw-r--r--toolkit/test/accessibility/ov/SelectionView.java230
-rw-r--r--toolkit/test/accessibility/ov/StateSetView.java249
-rw-r--r--toolkit/test/accessibility/ov/TextView.java123
-rw-r--r--toolkit/test/accessibility/ov/makefile.mk51
-rw-r--r--toolkit/test/accessibility/tools/NameProvider.java259
-rw-r--r--toolkit/test/accessibility/tools/makefile.mk42
-rw-r--r--toolkit/uiconfig/layout/delzip1
-rw-r--r--toolkit/uiconfig/layout/makefile.mk54
-rw-r--r--toolkit/uiconfig/layout/message-box.xml41
-rw-r--r--toolkit/uiconfig/layout/tab-dialog.xml20
-rw-r--r--toolkit/util/makefile.mk85
-rw-r--r--toolkit/util/makefile.pmk36
-rw-r--r--toolkit/util/toolkit.xml750
-rw-r--r--toolkit/workben/controls.cxx450
-rw-r--r--toolkit/workben/layout/.gitignore4
-rw-r--r--toolkit/workben/layout/README43
-rwxr-xr-xtoolkit/workben/layout/TEST11
-rw-r--r--toolkit/workben/layout/adjust.xml44
-rw-r--r--toolkit/workben/layout/align-test.xml30
-rw-r--r--toolkit/workben/layout/align.xml44
-rw-r--r--toolkit/workben/layout/boxtest.xml36
-rw-r--r--toolkit/workben/layout/dialogbuttons-ok.xml49
-rw-r--r--toolkit/workben/layout/dialogbuttons-reset.xml54
-rw-r--r--toolkit/workben/layout/dialogbuttons-save.xml49
-rw-r--r--toolkit/workben/layout/dialogbuttons-yes.xml49
-rw-r--r--toolkit/workben/layout/editor-normal.xml53
-rw-r--r--toolkit/workben/layout/editor.cxx1853
-rw-r--r--toolkit/workben/layout/editor.hxx51
-rw-r--r--toolkit/workben/layout/editor.xml52
-rw-r--r--toolkit/workben/layout/empty.xml26
-rw-r--r--toolkit/workben/layout/flow-container.xml48
-rw-r--r--toolkit/workben/layout/flow.xml17
-rw-r--r--toolkit/workben/layout/insert-sheet.xml57
-rw-r--r--toolkit/workben/layout/interactable-containers.xml49
-rw-r--r--toolkit/workben/layout/layout-flat.xml14
-rw-r--r--toolkit/workben/layout/layout.xml15
-rw-r--r--toolkit/workben/layout/makefile.mk151
-rw-r--r--toolkit/workben/layout/message-box.xml41
-rw-r--r--toolkit/workben/layout/more.xml19
-rw-r--r--toolkit/workben/layout/move-copy-sheet.xml21
-rw-r--r--toolkit/workben/layout/non-interactable-containers.xml41
-rw-r--r--toolkit/workben/layout/number-format.xml70
-rw-r--r--toolkit/workben/layout/numeric.xml10
-rw-r--r--toolkit/workben/layout/ooo-patch7
-rw-r--r--toolkit/workben/layout/paragraph.xml77
-rw-r--r--toolkit/workben/layout/plugin.cxx68
-rw-r--r--toolkit/workben/layout/plugin.hxx59
-rw-r--r--toolkit/workben/layout/plugin.xml29
-rw-r--r--toolkit/workben/layout/radio-groups.xml21
-rw-r--r--toolkit/workben/layout/recover.cxx113
-rw-r--r--toolkit/workben/layout/recover.hxx81
-rw-r--r--toolkit/workben/layout/recover.xml67
-rw-r--r--toolkit/workben/layout/refresh7
-rw-r--r--toolkit/workben/layout/run-s2x6
-rw-r--r--toolkit/workben/layout/scroller.xml32
-rw-r--r--toolkit/workben/layout/sequence.xml13
-rw-r--r--toolkit/workben/layout/shutdown.xml54
-rw-r--r--toolkit/workben/layout/simple-paragraph.cxx182
-rw-r--r--toolkit/workben/layout/simple-paragraph.hxx55
-rw-r--r--toolkit/workben/layout/simple-paragraph.xml11
-rw-r--r--toolkit/workben/layout/sort-options.xml40
-rw-r--r--toolkit/workben/layout/sortdlg.cxx72
-rw-r--r--toolkit/workben/layout/sortdlg.hrc83
-rw-r--r--toolkit/workben/layout/sortdlg.hxx76
-rw-r--r--toolkit/workben/layout/sortdlg.src317
-rw-r--r--toolkit/workben/layout/sortdlg.xml65
-rw-r--r--toolkit/workben/layout/splitter.xml13
-rw-r--r--toolkit/workben/layout/string-input.xml16
-rw-r--r--toolkit/workben/layout/tab-dialog.xml20
-rw-r--r--toolkit/workben/layout/tabcontrol.xml18
-rw-r--r--toolkit/workben/layout/table.xml15
-rw-r--r--toolkit/workben/layout/test.cxx369
-rw-r--r--toolkit/workben/layout/test.xml12
-rw-r--r--toolkit/workben/layout/testrc.in12
-rw-r--r--toolkit/workben/layout/tpsort.cxx1107
-rw-r--r--toolkit/workben/layout/tpsort.hxx219
-rw-r--r--toolkit/workben/layout/un-test.sh14
-rw-r--r--toolkit/workben/layout/uno.hxx109
-rw-r--r--toolkit/workben/layout/wordcount-plain.xml37
-rw-r--r--toolkit/workben/layout/wordcount-tight.xml42
-rw-r--r--toolkit/workben/layout/wordcount.xml59
-rw-r--r--toolkit/workben/layout/wordcountdialog.cxx111
-rw-r--r--toolkit/workben/layout/wordcountdialog.hxx70
-rw-r--r--toolkit/workben/layout/zoom-1.xml38
-rw-r--r--toolkit/workben/layout/zoom-2.xml39
-rw-r--r--toolkit/workben/layout/zoom-indent.xml41
-rw-r--r--toolkit/workben/layout/zoom-plain.xml20
-rw-r--r--toolkit/workben/layout/zoom.cxx614
-rw-r--r--toolkit/workben/layout/zoom.hrc53
-rw-r--r--toolkit/workben/layout/zoom.hxx121
-rw-r--r--toolkit/workben/layout/zoom.xml60
-rw-r--r--toolkit/workben/layout/zoom_def.hxx38
-rw-r--r--toolkit/workben/makefile.mk84
-rw-r--r--toolkit/workben/no_localization1
-rw-r--r--toolkit/workben/unodialog.cxx271
-rw-r--r--tools/bootstrp/addexes/makefile.mk49
-rw-r--r--tools/bootstrp/addexes/replace.cxx79
-rw-r--r--tools/bootstrp/addexes2/makefile.mk56
-rw-r--r--tools/bootstrp/addexes2/mkfilt.cxx240
-rw-r--r--tools/bootstrp/appdef.cxx171
-rw-r--r--tools/bootstrp/command.cxx693
-rw-r--r--tools/bootstrp/cppdep.cxx249
-rw-r--r--tools/bootstrp/cppdep.hxx60
-rw-r--r--tools/bootstrp/inimgr.cxx213
-rw-r--r--tools/bootstrp/iserver.cxx154
-rw-r--r--tools/bootstrp/makefile.mk108
-rw-r--r--tools/bootstrp/md5.cxx152
-rw-r--r--tools/bootstrp/md5.hxx34
-rw-r--r--tools/bootstrp/mkcreate.cxx947
-rw-r--r--tools/bootstrp/prj.cxx1602
-rw-r--r--tools/bootstrp/rscdep.cxx301
-rw-r--r--tools/bootstrp/so_checksum.cxx58
-rw-r--r--tools/bootstrp/sspretty.cxx62
-rw-r--r--tools/bootstrp/sstring.cxx320
-rw-r--r--tools/inc/bootstrp/appdef.hxx71
-rw-r--r--tools/inc/bootstrp/command.hxx166
-rw-r--r--tools/inc/bootstrp/inimgr.hxx63
-rw-r--r--tools/inc/bootstrp/listmacr.hxx62
-rw-r--r--tools/inc/bootstrp/mkcreate.hxx298
-rw-r--r--tools/inc/bootstrp/prj.hxx334
-rw-r--r--tools/inc/bootstrp/sstring.hxx108
-rw-r--r--tools/inc/impcont.hxx150
-rw-r--r--tools/inc/impstrg.hxx57
-rw-r--r--tools/inc/makefile.mk48
-rw-r--r--tools/inc/pch/precompiled_tools.cxx31
-rw-r--r--tools/inc/pch/precompiled_tools.hxx93
-rw-r--r--tools/inc/poly.h102
-rw-r--r--tools/inc/tools/StringListResource.hxx59
-rw-r--r--tools/inc/tools/agapi.hxx69
-rw-r--r--tools/inc/tools/agitem.hxx53
-rw-r--r--tools/inc/tools/appendunixshellword.hxx62
-rw-r--r--tools/inc/tools/b3dtrans.hxx355
-rw-r--r--tools/inc/tools/bigint.hxx331
-rw-r--r--tools/inc/tools/cachestr.hxx86
-rw-r--r--tools/inc/tools/chapi.hxx71
-rw-r--r--tools/inc/tools/color.hxx240
-rw-r--r--tools/inc/tools/config.hxx104
-rw-r--r--tools/inc/tools/contnr.hxx126
-rw-r--r--tools/inc/tools/date.hxx123
-rw-r--r--tools/inc/tools/datetime.hxx114
-rw-r--r--tools/inc/tools/debug.hxx778
-rw-r--r--tools/inc/tools/diagnose_ex.h178
-rw-r--r--tools/inc/tools/download.hxx59
-rw-r--r--tools/inc/tools/dynary.hxx113
-rw-r--r--tools/inc/tools/eacopier.hxx49
-rw-r--r--tools/inc/tools/errcode.hxx324
-rw-r--r--tools/inc/tools/errinf.hxx246
-rw-r--r--tools/inc/tools/extendapplicationenvironment.hxx45
-rw-r--r--tools/inc/tools/fldunit.hxx44
-rw-r--r--tools/inc/tools/fontenum.hxx175
-rw-r--r--tools/inc/tools/fract.hxx168
-rw-r--r--tools/inc/tools/fsys.hxx571
-rw-r--r--tools/inc/tools/gen.hxx715
-rw-r--r--tools/inc/tools/geninfo.hxx232
-rw-r--r--tools/inc/tools/getprocessworkingdir.hxx51
-rw-r--r--tools/inc/tools/globname.hxx140
-rw-r--r--tools/inc/tools/inetdef.hxx119
-rw-r--r--tools/inc/tools/inetmime.hxx1447
-rw-r--r--tools/inc/tools/inetmsg.hxx621
-rw-r--r--tools/inc/tools/inetstrm.hxx277
-rw-r--r--tools/inc/tools/iparser.hxx149
-rw-r--r--tools/inc/tools/isofallback.hxx40
-rw-r--r--tools/inc/tools/line.hxx78
-rw-r--r--tools/inc/tools/link.hxx161
-rw-r--r--tools/inc/tools/list.hxx146
-rw-r--r--tools/inc/tools/mapunit.hxx44
-rw-r--r--tools/inc/tools/mempool.hxx123
-rw-r--r--tools/inc/tools/multisel.hxx219
-rw-r--r--tools/inc/tools/ownlist.hxx95
-rw-r--r--tools/inc/tools/pathutils.hxx104
-rw-r--r--tools/inc/tools/poly.hxx344
-rw-r--r--tools/inc/tools/postsys.h246
-rw-r--r--tools/inc/tools/postwin.h260
-rw-r--r--tools/inc/tools/postx.h75
-rw-r--r--tools/inc/tools/presys.h46
-rw-r--r--tools/inc/tools/prewin.h83
-rw-r--r--tools/inc/tools/prex.h80
-rw-r--r--tools/inc/tools/pstm.hxx265
-rw-r--r--tools/inc/tools/queue.hxx107
-rw-r--r--tools/inc/tools/rc.h223
-rw-r--r--tools/inc/tools/rc.hxx111
-rw-r--r--tools/inc/tools/rcid.h137
-rw-r--r--tools/inc/tools/ref.hxx457
-rw-r--r--tools/inc/tools/resary.hxx94
-rw-r--r--tools/inc/tools/resid.hxx165
-rw-r--r--tools/inc/tools/resmgr.hxx241
-rw-r--r--tools/inc/tools/rtti.hxx177
-rw-r--r--tools/inc/tools/shl.hxx117
-rw-r--r--tools/inc/tools/simplerm.hxx120
-rw-r--r--tools/inc/tools/solar.h449
-rw-r--r--tools/inc/tools/solarmutex.hxx48
-rw-r--r--tools/inc/tools/stack.hxx108
-rw-r--r--tools/inc/tools/stream.hxx857
-rw-r--r--tools/inc/tools/string.hxx698
-rw-r--r--tools/inc/tools/svborder.hxx99
-rw-r--r--tools/inc/tools/svlibrary.hxx44
-rw-r--r--tools/inc/tools/svwin.h39
-rw-r--r--tools/inc/tools/table.hxx153
-rw-r--r--tools/inc/tools/tempfile.hxx80
-rw-r--r--tools/inc/tools/tenccvt.hxx59
-rw-r--r--tools/inc/tools/testtoolloader.hxx42
-rw-r--r--tools/inc/tools/time.hxx115
-rw-r--r--tools/inc/tools/tools.h41
-rw-r--r--tools/inc/tools/toolsdllapi.h43
-rw-r--r--tools/inc/tools/unqid.hxx112
-rw-r--r--tools/inc/tools/unqidx.hxx154
-rw-r--r--tools/inc/tools/urlkeys.hxx79
-rw-r--r--tools/inc/tools/urlobj.hxx1923
-rw-r--r--tools/inc/tools/vcompat.hxx73
-rw-r--r--tools/inc/tools/vector2d.hxx122
-rw-r--r--tools/inc/tools/weakbase.h162
-rw-r--r--tools/inc/tools/weakbase.hxx185
-rw-r--r--tools/inc/tools/wintypes.hxx346
-rw-r--r--tools/inc/tools/wldcrd.hxx94
-rw-r--r--tools/inc/tools/zcodec.hxx131
-rw-r--r--tools/inc/toolsin.hxx55
-rw-r--r--tools/os2/inc/dll.hxx42
-rw-r--r--tools/os2/source/dll/makefile.mk46
-rw-r--r--tools/os2/source/dll/toolsdll.cxx46
-rw-r--r--tools/prj/build.lst30
-rw-r--r--tools/prj/d.lst125
-rw-r--r--tools/qa/makefile.mk55
-rw-r--r--tools/qa/test_pathutils.cxx84
-rw-r--r--tools/qa/version.map34
-rw-r--r--tools/source/communi/geninfo.cxx410
-rw-r--r--tools/source/communi/makefile.mk50
-rw-r--r--tools/source/communi/parser.cxx471
-rw-r--r--tools/source/datetime/datetime.cxx445
-rw-r--r--tools/source/datetime/makefile.mk50
-rw-r--r--tools/source/datetime/tdate.cxx497
-rw-r--r--tools/source/datetime/ttime.cxx448
-rw-r--r--tools/source/debug/debug.cxx1816
-rw-r--r--tools/source/debug/makefile.mk53
-rw-r--r--tools/source/debug/stcktree.cxx323
-rw-r--r--tools/source/fsys/comdep.cxx47
-rw-r--r--tools/source/fsys/comdep.hxx159
-rw-r--r--tools/source/fsys/dirent.cxx3197
-rw-r--r--tools/source/fsys/filecopy.cxx489
-rw-r--r--tools/source/fsys/fstat.cxx422
-rw-r--r--tools/source/fsys/makefile.mk67
-rw-r--r--tools/source/fsys/os2.cxx885
-rw-r--r--tools/source/fsys/os2.hxx94
-rw-r--r--tools/source/fsys/tdir.cxx769
-rw-r--r--tools/source/fsys/tempfile.cxx303
-rw-r--r--tools/source/fsys/unx.cxx663
-rw-r--r--tools/source/fsys/unx.hxx98
-rw-r--r--tools/source/fsys/urlobj.cxx5575
-rw-r--r--tools/source/fsys/wldcrd.cxx146
-rw-r--r--tools/source/fsys/wntmsc.cxx1083
-rw-r--r--tools/source/fsys/wntmsc.hxx105
-rw-r--r--tools/source/generic/b3dtrans.cxx1017
-rw-r--r--tools/source/generic/bigint.cxx1144
-rw-r--r--tools/source/generic/color.cxx510
-rw-r--r--tools/source/generic/config.cxx1306
-rw-r--r--tools/source/generic/fract.cxx737
-rw-r--r--tools/source/generic/gen.cxx664
-rw-r--r--tools/source/generic/line.cxx366
-rw-r--r--tools/source/generic/link.cxx61
-rw-r--r--tools/source/generic/makefile.mk71
-rw-r--r--tools/source/generic/poly.cxx2379
-rw-r--r--tools/source/generic/poly2.cxx894
-rw-r--r--tools/source/generic/svborder.cxx79
-rw-r--r--tools/source/generic/svlibrary.cxx132
-rw-r--r--tools/source/generic/toolsin.cxx98
-rw-r--r--tools/source/inet/inetmime.cxx4565
-rw-r--r--tools/source/inet/inetmsg.cxx1646
-rw-r--r--tools/source/inet/inetstrm.cxx1823
-rw-r--r--tools/source/inet/makefile.mk45
-rw-r--r--tools/source/makefile.mk58
-rw-r--r--tools/source/memtools/contnr.cxx1705
-rw-r--r--tools/source/memtools/makefile.mk56
-rw-r--r--tools/source/memtools/mempool.cxx84
-rw-r--r--tools/source/memtools/multisel.cxx1164
-rw-r--r--tools/source/memtools/table.cxx416
-rw-r--r--tools/source/memtools/unqidx.cxx604
-rw-r--r--tools/source/misc/appendunixshellword.cxx79
-rw-r--r--tools/source/misc/extendapplicationenvironment.cxx95
-rw-r--r--tools/source/misc/getprocessworkingdir.cxx67
-rw-r--r--tools/source/misc/makefile.mk47
-rw-r--r--tools/source/misc/pathutils.cxx222
-rw-r--r--tools/source/misc/solarmutex.cxx63
-rw-r--r--tools/source/rc/isofallback.cxx69
-rw-r--r--tools/source/rc/makefile.mk53
-rw-r--r--tools/source/rc/rc.cxx100
-rw-r--r--tools/source/rc/resary.cxx81
-rw-r--r--tools/source/rc/resmgr.cxx2076
-rw-r--r--tools/source/ref/errinf.cxx464
-rw-r--r--tools/source/ref/globname.cxx511
-rw-r--r--tools/source/ref/makefile.mk53
-rw-r--r--tools/source/ref/pstm.cxx917
-rw-r--r--tools/source/ref/ref.cxx53
-rw-r--r--tools/source/solar/makefile.mk63
-rw-r--r--tools/source/solar/solar.c565
-rw-r--r--tools/source/stream/cachestr.cxx293
-rw-r--r--tools/source/stream/makefile.mk58
-rw-r--r--tools/source/stream/stream.cxx2859
-rw-r--r--tools/source/stream/strmos2.cxx687
-rw-r--r--tools/source/stream/strmsys.cxx40
-rw-r--r--tools/source/stream/strmunx.cxx924
-rw-r--r--tools/source/stream/strmwnt.cxx691
-rw-r--r--tools/source/stream/vcompat.cxx83
-rw-r--r--tools/source/string/debugprint.cxx49
-rw-r--r--tools/source/string/makefile.mk81
-rw-r--r--tools/source/string/strascii.cxx640
-rw-r--r--tools/source/string/strcvt.cxx616
-rw-r--r--tools/source/string/strimp.cxx2118
-rw-r--r--tools/source/string/strucvt.cxx215
-rw-r--r--tools/source/string/tenccvt.cxx100
-rw-r--r--tools/source/string/tstring.cxx290
-rw-r--r--tools/source/string/tustring.cxx158
-rw-r--r--tools/source/testtoolloader/makefile.mk45
-rw-r--r--tools/source/testtoolloader/testtoolloader.cxx186
-rw-r--r--tools/source/zcodec/makefile.mk47
-rw-r--r--tools/source/zcodec/zcodec.cxx490
-rw-r--r--tools/test/export.map34
-rw-r--r--tools/test/makefile.mk64
-rw-r--r--tools/test/tests.cxx124
-rw-r--r--tools/unx/source/dll/makefile.mk48
-rw-r--r--tools/unx/source/dll/toolsdll.cxx50
-rw-r--r--tools/util/makefile.mk173
-rw-r--r--tools/util/makefile.pmk31
-rw-r--r--tools/util/tools.r17
-rw-r--r--tools/win/inc/dll.hxx62
-rw-r--r--tools/win/inc/parser.hxx51
-rw-r--r--tools/win/inc/shellex.h117
-rw-r--r--tools/win/inc/shutil.h217
-rw-r--r--tools/win/inc/toolsdll.hxx89
-rw-r--r--tools/win/inc/winshell.hxx389
-rw-r--r--tools/win/source/dll/makefile.mk56
-rw-r--r--tools/win/source/dll/toolsdll.cxx51
-rw-r--r--tools/win/source/fastfsys/makefile.mk71
-rw-r--r--tools/workben/fstest.cxx97
-rw-r--r--tools/workben/hashtbl.cxx518
-rw-r--r--tools/workben/hashtbl.hxx205
-rw-r--r--tools/workben/helloworld.c36
-rw-r--r--tools/workben/inetmimetest.cxx70
-rw-r--r--tools/workben/makefile.mk89
-rw-r--r--tools/workben/solar.c430
-rw-r--r--tools/workben/tldem.cxx85
-rw-r--r--tools/workben/urltest.cxx1910
-rw-r--r--twain/inc/twain.h1973
-rw-r--r--twain/prj/build.lst3
-rw-r--r--twain/prj/d.lst3
-rw-r--r--twain/util/makefile.mk39
-rw-r--r--ucbhelper/inc/makefile.mk48
-rw-r--r--ucbhelper/inc/pch/precompiled_ucbhelper.cxx31
-rw-r--r--ucbhelper/inc/pch/precompiled_ucbhelper.hxx34
-rw-r--r--ucbhelper/inc/ucbhelper/activedatasink.hxx78
-rw-r--r--ucbhelper/inc/ucbhelper/activedatastreamer.hxx73
-rw-r--r--ucbhelper/inc/ucbhelper/cancelcommandexecution.hxx113
-rw-r--r--ucbhelper/inc/ucbhelper/commandenvironment.hxx103
-rw-r--r--ucbhelper/inc/ucbhelper/commandenvironmentproxy.hxx100
-rw-r--r--ucbhelper/inc/ucbhelper/configurationkeys.hxx46
-rw-r--r--ucbhelper/inc/ucbhelper/content.hxx1043
-rw-r--r--ucbhelper/inc/ucbhelper/contentbroker.hxx208
-rw-r--r--ucbhelper/inc/ucbhelper/contenthelper.hxx527
-rw-r--r--ucbhelper/inc/ucbhelper/contentidentifier.hxx103
-rw-r--r--ucbhelper/inc/ucbhelper/contentinfo.hxx180
-rw-r--r--ucbhelper/inc/ucbhelper/fileidentifierconverter.hxx130
-rw-r--r--ucbhelper/inc/ucbhelper/handleinteractionrequest.hxx217
-rw-r--r--ucbhelper/inc/ucbhelper/interactionrequest.hxx730
-rw-r--r--ucbhelper/inc/ucbhelper/interceptedinteraction.hxx350
-rw-r--r--ucbhelper/inc/ucbhelper/macros.hxx750
-rw-r--r--ucbhelper/inc/ucbhelper/propertyvalueset.hxx437
-rw-r--r--ucbhelper/inc/ucbhelper/providerhelper.hxx288
-rw-r--r--ucbhelper/inc/ucbhelper/proxydecider.hxx146
-rw-r--r--ucbhelper/inc/ucbhelper/registerucb.hxx132
-rw-r--r--ucbhelper/inc/ucbhelper/resultset.hxx582
-rw-r--r--ucbhelper/inc/ucbhelper/resultsethelper.hxx223
-rw-r--r--ucbhelper/inc/ucbhelper/resultsetmetadata.hxx479
-rw-r--r--ucbhelper/inc/ucbhelper/simpleauthenticationrequest.hxx215
-rw-r--r--ucbhelper/inc/ucbhelper/simplecertificatevalidationrequest.hxx81
-rw-r--r--ucbhelper/inc/ucbhelper/simpleinteractionrequest.hxx99
-rw-r--r--ucbhelper/inc/ucbhelper/simpleioerrorrequest.hxx78
-rw-r--r--ucbhelper/inc/ucbhelper/simplenameclashresolverequest.hxx86
-rw-r--r--ucbhelper/inc/ucbhelper/ucbhelperdllapi.h43
-rw-r--r--ucbhelper/prj/build.lst7
-rw-r--r--ucbhelper/prj/d.lst40
-rw-r--r--ucbhelper/source/client/activedatasink.cxx96
-rw-r--r--ucbhelper/source/client/activedatastreamer.cxx95
-rw-r--r--ucbhelper/source/client/commandenvironment.cxx141
-rw-r--r--ucbhelper/source/client/content.cxx1974
-rw-r--r--ucbhelper/source/client/contentbroker.cxx382
-rw-r--r--ucbhelper/source/client/fileidentifierconverter.cxx110
-rw-r--r--ucbhelper/source/client/interceptedinteraction.cxx204
-rw-r--r--ucbhelper/source/client/makefile.mk60
-rw-r--r--ucbhelper/source/client/proxydecider.cxx864
-rw-r--r--ucbhelper/source/provider/cancelcommandexecution.cxx131
-rw-r--r--ucbhelper/source/provider/commandenvironmentproxy.cxx169
-rw-r--r--ucbhelper/source/provider/configureucb.cxx243
-rw-r--r--ucbhelper/source/provider/contenthelper.cxx1130
-rw-r--r--ucbhelper/source/provider/contentidentifier.cxx223
-rw-r--r--ucbhelper/source/provider/contentinfo.cxx426
-rw-r--r--ucbhelper/source/provider/handleinteractionrequest.cxx164
-rw-r--r--ucbhelper/source/provider/interactionrequest.cxx1153
-rw-r--r--ucbhelper/source/provider/makefile.mk70
-rw-r--r--ucbhelper/source/provider/propertyvalueset.cxx927
-rw-r--r--ucbhelper/source/provider/provconf.cxx267
-rw-r--r--ucbhelper/source/provider/provconf.hxx55
-rw-r--r--ucbhelper/source/provider/providerhelper.cxx675
-rw-r--r--ucbhelper/source/provider/registerucb.cxx167
-rw-r--r--ucbhelper/source/provider/resultset.cxx1698
-rw-r--r--ucbhelper/source/provider/resultsethelper.cxx332
-rw-r--r--ucbhelper/source/provider/resultsetmetadata.cxx584
-rw-r--r--ucbhelper/source/provider/simpleauthenticationrequest.cxx246
-rw-r--r--ucbhelper/source/provider/simplecertificatevalidationrequest.cxx91
-rw-r--r--ucbhelper/source/provider/simpleinteractionrequest.cxx134
-rw-r--r--ucbhelper/source/provider/simpleioerrorrequest.cxx62
-rw-r--r--ucbhelper/source/provider/simplenameclashresolverequest.cxx69
-rw-r--r--ucbhelper/util/makefile.mk75
-rw-r--r--ucbhelper/util/makefile.pmk31
-rw-r--r--ucbhelper/util/ucbhelper.flt181
-rw-r--r--ucbhelper/util/ucbhelper.xml114
-rw-r--r--ucbhelper/version.mk42
-rw-r--r--ucbhelper/workben/myucp/makefile.mk90
-rw-r--r--ucbhelper/workben/myucp/myucp_content.cxx946
-rw-r--r--ucbhelper/workben/myucp/myucp_content.hxx194
-rw-r--r--ucbhelper/workben/myucp/myucp_contentcaps.cxx225
-rw-r--r--ucbhelper/workben/myucp/myucp_datasupplier.cxx401
-rw-r--r--ucbhelper/workben/myucp/myucp_datasupplier.hxx80
-rw-r--r--ucbhelper/workben/myucp/myucp_provider.cxx160
-rw-r--r--ucbhelper/workben/myucp/myucp_provider.hxx98
-rw-r--r--ucbhelper/workben/myucp/myucp_resultset.cxx100
-rw-r--r--ucbhelper/workben/myucp/myucp_resultset.hxx65
-rw-r--r--ucbhelper/workben/myucp/myucp_services.cxx138
-rw-r--r--ucbhelper/workben/ucbexplorer/bmp/document.bmpbin0 -> 1318 bytes
-rw-r--r--ucbhelper/workben/ucbexplorer/bmp/fldclose.bmpbin0 -> 298 bytes
-rw-r--r--ucbhelper/workben/ucbexplorer/bmp/fldopen.bmpbin0 -> 322 bytes
-rw-r--r--ucbhelper/workben/ucbexplorer/bmp/link.bmpbin0 -> 1318 bytes
-rw-r--r--ucbhelper/workben/ucbexplorer/makefile.mk71
-rw-r--r--ucbhelper/workben/ucbexplorer/ucbexplorer.cxx1194
-rw-r--r--ucbhelper/workben/ucbexplorer/ucbexplorer.hrc65
-rw-r--r--ucbhelper/workben/ucbexplorer/ucbexplorer.src149
-rw-r--r--udkapi/com/sun/star/beans/Ambiguous.idl59
-rw-r--r--udkapi/com/sun/star/beans/Defaulted.idl59
-rw-r--r--udkapi/com/sun/star/beans/GetDirectPropertyTolerantResult.idl65
-rw-r--r--udkapi/com/sun/star/beans/GetPropertyTolerantResult.idl82
-rw-r--r--udkapi/com/sun/star/beans/IllegalTypeException.idl55
-rw-r--r--udkapi/com/sun/star/beans/Introspection.idl60
-rw-r--r--udkapi/com/sun/star/beans/IntrospectionException.idl54
-rw-r--r--udkapi/com/sun/star/beans/MethodConcept.idl127
-rw-r--r--udkapi/com/sun/star/beans/NamedValue.idl54
-rw-r--r--udkapi/com/sun/star/beans/NotRemoveableException.idl51
-rw-r--r--udkapi/com/sun/star/beans/Optional.idl60
-rw-r--r--udkapi/com/sun/star/beans/Pair.idl56
-rw-r--r--udkapi/com/sun/star/beans/Property.idl92
-rw-r--r--udkapi/com/sun/star/beans/PropertyAttribute.idl121
-rw-r--r--udkapi/com/sun/star/beans/PropertyBag.idl70
-rw-r--r--udkapi/com/sun/star/beans/PropertyChangeEvent.idl94
-rw-r--r--udkapi/com/sun/star/beans/PropertyConcept.idl93
-rw-r--r--udkapi/com/sun/star/beans/PropertyExistException.idl54
-rw-r--r--udkapi/com/sun/star/beans/PropertySet.idl76
-rw-r--r--udkapi/com/sun/star/beans/PropertySetInfoChange.idl61
-rw-r--r--udkapi/com/sun/star/beans/PropertySetInfoChangeEvent.idl76
-rw-r--r--udkapi/com/sun/star/beans/PropertyState.idl97
-rw-r--r--udkapi/com/sun/star/beans/PropertyStateChangeEvent.idl95
-rw-r--r--udkapi/com/sun/star/beans/PropertyValue.idl85
-rw-r--r--udkapi/com/sun/star/beans/PropertyValues.idl49
-rw-r--r--udkapi/com/sun/star/beans/PropertyVetoException.idl54
-rw-r--r--udkapi/com/sun/star/beans/SetPropertyTolerantFailed.idl66
-rw-r--r--udkapi/com/sun/star/beans/StringPair.idl55
-rw-r--r--udkapi/com/sun/star/beans/TolerantPropertySetResultType.idl90
-rw-r--r--udkapi/com/sun/star/beans/UnknownPropertyException.idl54
-rw-r--r--udkapi/com/sun/star/beans/XExactName.idl73
-rw-r--r--udkapi/com/sun/star/beans/XFastPropertySet.idl126
-rw-r--r--udkapi/com/sun/star/beans/XHierarchicalPropertySet.idl175
-rw-r--r--udkapi/com/sun/star/beans/XHierarchicalPropertySetInfo.idl104
-rw-r--r--udkapi/com/sun/star/beans/XIntroTest.idl208
-rw-r--r--udkapi/com/sun/star/beans/XIntrospection.idl121
-rw-r--r--udkapi/com/sun/star/beans/XIntrospectionAccess.idl321
-rw-r--r--udkapi/com/sun/star/beans/XMaterialHolder.idl67
-rw-r--r--udkapi/com/sun/star/beans/XMultiHierarchicalPropertySet.idl161
-rw-r--r--udkapi/com/sun/star/beans/XMultiPropertySet.idl180
-rw-r--r--udkapi/com/sun/star/beans/XMultiPropertyStates.idl140
-rw-r--r--udkapi/com/sun/star/beans/XPropertiesChangeListener.idl66
-rw-r--r--udkapi/com/sun/star/beans/XPropertiesChangeNotifier.idl71
-rw-r--r--udkapi/com/sun/star/beans/XProperty.idl69
-rw-r--r--udkapi/com/sun/star/beans/XPropertyAccess.idl100
-rw-r--r--udkapi/com/sun/star/beans/XPropertyChangeListener.idl62
-rw-r--r--udkapi/com/sun/star/beans/XPropertyContainer.idl118
-rw-r--r--udkapi/com/sun/star/beans/XPropertySet.idl217
-rw-r--r--udkapi/com/sun/star/beans/XPropertySetInfo.idl102
-rw-r--r--udkapi/com/sun/star/beans/XPropertySetInfoChangeListener.idl63
-rw-r--r--udkapi/com/sun/star/beans/XPropertySetInfoChangeNotifier.idl75
-rw-r--r--udkapi/com/sun/star/beans/XPropertyState.idl150
-rw-r--r--udkapi/com/sun/star/beans/XPropertyStateChangeListener.idl65
-rw-r--r--udkapi/com/sun/star/beans/XPropertyWithState.idl117
-rw-r--r--udkapi/com/sun/star/beans/XTolerantMultiPropertySet.idl164
-rw-r--r--udkapi/com/sun/star/beans/XVetoableChangeListener.idl70
-rw-r--r--udkapi/com/sun/star/beans/makefile.mk101
-rw-r--r--udkapi/com/sun/star/bridge/Bridge.idl94
-rw-r--r--udkapi/com/sun/star/bridge/BridgeExistsException.idl44
-rw-r--r--udkapi/com/sun/star/bridge/BridgeFactory.idl66
-rw-r--r--udkapi/com/sun/star/bridge/IiopBridge.idl80
-rw-r--r--udkapi/com/sun/star/bridge/InvalidProtocolChangeException.idl54
-rw-r--r--udkapi/com/sun/star/bridge/ModelDependent.idl79
-rw-r--r--udkapi/com/sun/star/bridge/OleApplicationRegistration.idl75
-rw-r--r--udkapi/com/sun/star/bridge/OleBridgeSupplier.idl63
-rw-r--r--udkapi/com/sun/star/bridge/OleBridgeSupplier2.idl75
-rw-r--r--udkapi/com/sun/star/bridge/OleBridgeSupplierVar1.idl58
-rw-r--r--udkapi/com/sun/star/bridge/OleObjectFactory.idl67
-rw-r--r--udkapi/com/sun/star/bridge/ProtocolProperty.idl46
-rw-r--r--udkapi/com/sun/star/bridge/UnoUrlResolver.idl51
-rw-r--r--udkapi/com/sun/star/bridge/UrpBridge.idl80
-rw-r--r--udkapi/com/sun/star/bridge/XBridge.idl64
-rw-r--r--udkapi/com/sun/star/bridge/XBridgeFactory.idl95
-rw-r--r--udkapi/com/sun/star/bridge/XBridgeSupplier.idl107
-rw-r--r--udkapi/com/sun/star/bridge/XBridgeSupplier2.idl121
-rw-r--r--udkapi/com/sun/star/bridge/XInstanceProvider.idl64
-rw-r--r--udkapi/com/sun/star/bridge/XProtocolProperties.idl100
-rw-r--r--udkapi/com/sun/star/bridge/XUnoUrlResolver.idl66
-rw-r--r--udkapi/com/sun/star/bridge/makefile.mk66
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/ApplicationRegistration.idl81
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/BridgeSupplier.idl80
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/Currency.idl61
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/Date.idl60
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/Decimal.idl64
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/Factory.idl69
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/NamedArgument.idl63
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/PropertyPutArgument.idl70
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/SCode.idl62
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/XAutomationObject.idl58
-rw-r--r--udkapi/com/sun/star/bridge/oleautomation/makefile.mk54
-rw-r--r--udkapi/com/sun/star/connection/Acceptor.idl50
-rw-r--r--udkapi/com/sun/star/connection/AlreadyAcceptingException.idl42
-rw-r--r--udkapi/com/sun/star/connection/ConnectionSetupException.idl42
-rw-r--r--udkapi/com/sun/star/connection/Connector.idl49
-rw-r--r--udkapi/com/sun/star/connection/NoConnectException.idl42
-rw-r--r--udkapi/com/sun/star/connection/SocketPermission.idl104
-rw-r--r--udkapi/com/sun/star/connection/XAcceptor.idl83
-rw-r--r--udkapi/com/sun/star/connection/XConnection.idl98
-rw-r--r--udkapi/com/sun/star/connection/XConnection2.idl64
-rw-r--r--udkapi/com/sun/star/connection/XConnectionBroadcaster.idl65
-rw-r--r--udkapi/com/sun/star/connection/XConnector.idl72
-rw-r--r--udkapi/com/sun/star/connection/makefile.mk56
-rw-r--r--udkapi/com/sun/star/container/ContainerEvent.idl73
-rw-r--r--udkapi/com/sun/star/container/ElementExistException.idl58
-rw-r--r--udkapi/com/sun/star/container/EnumerableMap.idl141
-rw-r--r--udkapi/com/sun/star/container/NoSuchElementException.idl54
-rw-r--r--udkapi/com/sun/star/container/XChild.idl74
-rw-r--r--udkapi/com/sun/star/container/XComponentEnumeration.idl70
-rw-r--r--udkapi/com/sun/star/container/XComponentEnumerationAccess.idl62
-rw-r--r--udkapi/com/sun/star/container/XContainer.idl93
-rw-r--r--udkapi/com/sun/star/container/XContainerApproveBroadcaster.idl66
-rw-r--r--udkapi/com/sun/star/container/XContainerApproveListener.idl89
-rw-r--r--udkapi/com/sun/star/container/XContainerListener.idl73
-rw-r--r--udkapi/com/sun/star/container/XContainerQuery.idl114
-rw-r--r--udkapi/com/sun/star/container/XContentEnumerationAccess.idl84
-rw-r--r--udkapi/com/sun/star/container/XElementAccess.idl72
-rw-r--r--udkapi/com/sun/star/container/XEnumerableMap.idl110
-rw-r--r--udkapi/com/sun/star/container/XEnumeration.idl102
-rw-r--r--udkapi/com/sun/star/container/XEnumerationAccess.idl63
-rw-r--r--udkapi/com/sun/star/container/XHierarchicalName.idl82
-rw-r--r--udkapi/com/sun/star/container/XHierarchicalNameAccess.idl90
-rw-r--r--udkapi/com/sun/star/container/XHierarchicalNameContainer.idl92
-rw-r--r--udkapi/com/sun/star/container/XHierarchicalNameReplace.idl81
-rw-r--r--udkapi/com/sun/star/container/XIdentifierAccess.idl84
-rw-r--r--udkapi/com/sun/star/container/XIdentifierContainer.idl111
-rw-r--r--udkapi/com/sun/star/container/XIdentifierReplace.idl89
-rw-r--r--udkapi/com/sun/star/container/XImplicitIDAccess.idl68
-rw-r--r--udkapi/com/sun/star/container/XImplicitIDContainer.idl74
-rw-r--r--udkapi/com/sun/star/container/XImplicitIDReplace.idl66
-rw-r--r--udkapi/com/sun/star/container/XIndexAccess.idl91
-rw-r--r--udkapi/com/sun/star/container/XIndexContainer.idl83
-rw-r--r--udkapi/com/sun/star/container/XIndexReplace.idl74
-rw-r--r--udkapi/com/sun/star/container/XMap.idl203
-rw-r--r--udkapi/com/sun/star/container/XNameAccess.idl106
-rw-r--r--udkapi/com/sun/star/container/XNameContainer.idl86
-rw-r--r--udkapi/com/sun/star/container/XNameReplace.idl74
-rw-r--r--udkapi/com/sun/star/container/XNamed.idl65
-rw-r--r--udkapi/com/sun/star/container/XSet.idl87
-rw-r--r--udkapi/com/sun/star/container/XStringKeyMap.idl154
-rw-r--r--udkapi/com/sun/star/container/XUniqueIDAccess.idl65
-rw-r--r--udkapi/com/sun/star/container/makefile.mk83
-rw-r--r--udkapi/com/sun/star/corba/corba.idl103
-rw-r--r--udkapi/com/sun/star/corba/giop/giop.idl251
-rw-r--r--udkapi/com/sun/star/corba/giop/makefile.mk43
-rw-r--r--udkapi/com/sun/star/corba/iiop/iiop.idl87
-rw-r--r--udkapi/com/sun/star/corba/iiop/makefile.mk43
-rw-r--r--udkapi/com/sun/star/corba/iop/iop.idl123
-rw-r--r--udkapi/com/sun/star/corba/iop/makefile.mk43
-rw-r--r--udkapi/com/sun/star/corba/makefile.mk43
-rw-r--r--udkapi/com/sun/star/io/AlreadyConnectedException.idl56
-rw-r--r--udkapi/com/sun/star/io/BufferSizeExceededException.idl60
-rw-r--r--udkapi/com/sun/star/io/ConnectException.idl57
-rw-r--r--udkapi/com/sun/star/io/DataInputStream.idl81
-rw-r--r--udkapi/com/sun/star/io/DataOutputStream.idl71
-rw-r--r--udkapi/com/sun/star/io/DataTransferEvent.idl63
-rw-r--r--udkapi/com/sun/star/io/FilePermission.idl84
-rw-r--r--udkapi/com/sun/star/io/IOException.idl55
-rw-r--r--udkapi/com/sun/star/io/MarkableInputStream.idl78
-rw-r--r--udkapi/com/sun/star/io/MarkableOutputStream.idl83
-rw-r--r--udkapi/com/sun/star/io/NoRouteToHostException.idl56
-rw-r--r--udkapi/com/sun/star/io/NotConnectedException.idl56
-rw-r--r--udkapi/com/sun/star/io/ObjectInputStream.idl109
-rw-r--r--udkapi/com/sun/star/io/ObjectOutputStream.idl96
-rw-r--r--udkapi/com/sun/star/io/Pipe.idl72
-rw-r--r--udkapi/com/sun/star/io/Pump.idl78
-rw-r--r--udkapi/com/sun/star/io/SequenceInputStream.idl62
-rw-r--r--udkapi/com/sun/star/io/SequenceOutputStream.idl48
-rw-r--r--udkapi/com/sun/star/io/SocketException.idl55
-rw-r--r--udkapi/com/sun/star/io/TempFile.idl47
-rw-r--r--udkapi/com/sun/star/io/TextInputStream.idl70
-rw-r--r--udkapi/com/sun/star/io/TextOutputStream.idl66
-rw-r--r--udkapi/com/sun/star/io/UnexpectedEOFException.idl56
-rw-r--r--udkapi/com/sun/star/io/UnknownHostException.idl54
-rw-r--r--udkapi/com/sun/star/io/WrongFormatException.idl56
-rw-r--r--udkapi/com/sun/star/io/XActiveDataControl.idl107
-rw-r--r--udkapi/com/sun/star/io/XActiveDataSink.idl81
-rw-r--r--udkapi/com/sun/star/io/XActiveDataSource.idl81
-rw-r--r--udkapi/com/sun/star/io/XActiveDataStreamer.idl82
-rw-r--r--udkapi/com/sun/star/io/XAsyncOutputMonitor.idl95
-rw-r--r--udkapi/com/sun/star/io/XConnectable.idl94
-rw-r--r--udkapi/com/sun/star/io/XDataExporter.idl86
-rw-r--r--udkapi/com/sun/star/io/XDataImporter.idl85
-rw-r--r--udkapi/com/sun/star/io/XDataInputStream.idl134
-rw-r--r--udkapi/com/sun/star/io/XDataOutputStream.idl134
-rw-r--r--udkapi/com/sun/star/io/XDataTransferEventListener.idl73
-rw-r--r--udkapi/com/sun/star/io/XInputStream.idl177
-rw-r--r--udkapi/com/sun/star/io/XInputStreamProvider.idl60
-rw-r--r--udkapi/com/sun/star/io/XMarkableStream.idl127
-rw-r--r--udkapi/com/sun/star/io/XObjectInputStream.idl72
-rw-r--r--udkapi/com/sun/star/io/XObjectOutputStream.idl71
-rw-r--r--udkapi/com/sun/star/io/XOutputStream.idl105
-rw-r--r--udkapi/com/sun/star/io/XPersist.idl72
-rw-r--r--udkapi/com/sun/star/io/XPersistObject.idl117
-rw-r--r--udkapi/com/sun/star/io/XSeekable.idl93
-rw-r--r--udkapi/com/sun/star/io/XSeekableInputStream.idl56
-rw-r--r--udkapi/com/sun/star/io/XSequenceOutputStream.idl65
-rw-r--r--udkapi/com/sun/star/io/XStream.idl80
-rw-r--r--udkapi/com/sun/star/io/XStreamListener.idl90
-rw-r--r--udkapi/com/sun/star/io/XTempFile.idl89
-rw-r--r--udkapi/com/sun/star/io/XTextInputStream.idl121
-rw-r--r--udkapi/com/sun/star/io/XTextOutputStream.idl86
-rw-r--r--udkapi/com/sun/star/io/XTruncate.idl67
-rw-r--r--udkapi/com/sun/star/io/XXMLExtractor.idl64
-rw-r--r--udkapi/com/sun/star/io/makefile.mk99
-rwxr-xr-xudkapi/com/sun/star/java/InvalidJavaSettingsException.idl52
-rw-r--r--udkapi/com/sun/star/java/JavaDisabledException.idl51
-rw-r--r--udkapi/com/sun/star/java/JavaInitializationException.idl59
-rw-r--r--udkapi/com/sun/star/java/JavaNotConfiguredException.idl50
-rw-r--r--udkapi/com/sun/star/java/JavaNotFoundException.idl48
-rw-r--r--udkapi/com/sun/star/java/JavaVMCreationFailureException.idl61
-rw-r--r--udkapi/com/sun/star/java/JavaVirtualMachine.idl64
-rw-r--r--udkapi/com/sun/star/java/MissingJavaRuntimeException.idl53
-rwxr-xr-xudkapi/com/sun/star/java/RestartRequiredException.idl48
-rw-r--r--udkapi/com/sun/star/java/WrongJavaVersionException.idl64
-rw-r--r--udkapi/com/sun/star/java/XJavaThreadRegister_11.idl83
-rw-r--r--udkapi/com/sun/star/java/XJavaVM.idl141
-rw-r--r--udkapi/com/sun/star/java/makefile.mk57
-rw-r--r--udkapi/com/sun/star/lang/ArrayIndexOutOfBoundsException.idl59
-rw-r--r--udkapi/com/sun/star/lang/ClassNotFoundException.idl56
-rw-r--r--udkapi/com/sun/star/lang/DisposedException.idl60
-rw-r--r--udkapi/com/sun/star/lang/EventObject.idl61
-rw-r--r--udkapi/com/sun/star/lang/IllegalAccessException.idl56
-rw-r--r--udkapi/com/sun/star/lang/IllegalArgumentException.idl65
-rw-r--r--udkapi/com/sun/star/lang/IndexOutOfBoundsException.idl59
-rw-r--r--udkapi/com/sun/star/lang/InvalidListenerException.idl59
-rw-r--r--udkapi/com/sun/star/lang/ListenerExistException.idl58
-rw-r--r--udkapi/com/sun/star/lang/Locale.idl122
-rw-r--r--udkapi/com/sun/star/lang/MultiServiceFactory.idl86
-rw-r--r--udkapi/com/sun/star/lang/NoSuchFieldException.idl55
-rw-r--r--udkapi/com/sun/star/lang/NoSuchMethodException.idl55
-rw-r--r--udkapi/com/sun/star/lang/NoSupportException.idl61
-rw-r--r--udkapi/com/sun/star/lang/NotInitializedException.idl56
-rw-r--r--udkapi/com/sun/star/lang/NullPointerException.idl61
-rw-r--r--udkapi/com/sun/star/lang/RegistryServiceManager.idl100
-rw-r--r--udkapi/com/sun/star/lang/ServiceManager.idl141
-rw-r--r--udkapi/com/sun/star/lang/ServiceNotRegisteredException.idl58
-rw-r--r--udkapi/com/sun/star/lang/SystemDependent.idl125
-rw-r--r--udkapi/com/sun/star/lang/WrappedTargetException.idl69
-rw-r--r--udkapi/com/sun/star/lang/WrappedTargetRuntimeException.idl61
-rw-r--r--udkapi/com/sun/star/lang/XComponent.idl143
-rw-r--r--udkapi/com/sun/star/lang/XConnectionPoint.idl204
-rw-r--r--udkapi/com/sun/star/lang/XConnectionPointContainer.idl118
-rw-r--r--udkapi/com/sun/star/lang/XEventListener.idl76
-rw-r--r--udkapi/com/sun/star/lang/XInitialization.idl83
-rw-r--r--udkapi/com/sun/star/lang/XLocalizable.idl70
-rw-r--r--udkapi/com/sun/star/lang/XMain.idl69
-rw-r--r--udkapi/com/sun/star/lang/XMultiComponentFactory.idl90
-rw-r--r--udkapi/com/sun/star/lang/XMultiServiceFactory.idl97
-rw-r--r--udkapi/com/sun/star/lang/XServiceDisplayName.idl76
-rw-r--r--udkapi/com/sun/star/lang/XServiceInfo.idl79
-rw-r--r--udkapi/com/sun/star/lang/XServiceName.idl64
-rw-r--r--udkapi/com/sun/star/lang/XSingleComponentFactory.idl75
-rw-r--r--udkapi/com/sun/star/lang/XSingleServiceFactory.idl82
-rw-r--r--udkapi/com/sun/star/lang/XTypeProvider.idl79
-rw-r--r--udkapi/com/sun/star/lang/XUnoTunnel.idl80
-rw-r--r--udkapi/com/sun/star/lang/makefile.mk83
-rw-r--r--udkapi/com/sun/star/loader/CannotActivateFactoryException.idl62
-rw-r--r--udkapi/com/sun/star/loader/Dynamic.idl67
-rw-r--r--udkapi/com/sun/star/loader/Java.idl66
-rw-r--r--udkapi/com/sun/star/loader/Java2.idl51
-rw-r--r--udkapi/com/sun/star/loader/SharedLibrary.idl64
-rw-r--r--udkapi/com/sun/star/loader/XImplementationLoader.idl123
-rw-r--r--udkapi/com/sun/star/loader/makefile.mk51
-rw-r--r--udkapi/com/sun/star/makefile.mk46
-rw-r--r--udkapi/com/sun/star/reflection/CoreReflection.idl74
-rw-r--r--udkapi/com/sun/star/reflection/FieldAccessMode.idl64
-rw-r--r--udkapi/com/sun/star/reflection/InvalidTypeNameException.idl55
-rw-r--r--udkapi/com/sun/star/reflection/InvocationTargetException.idl57
-rw-r--r--udkapi/com/sun/star/reflection/MethodMode.idl59
-rw-r--r--udkapi/com/sun/star/reflection/NoSuchTypeNameException.idl54
-rw-r--r--udkapi/com/sun/star/reflection/ParamInfo.idl66
-rw-r--r--udkapi/com/sun/star/reflection/ParamMode.idl63
-rw-r--r--udkapi/com/sun/star/reflection/ProxyFactory.idl73
-rw-r--r--udkapi/com/sun/star/reflection/TypeDescriptionManager.idl125
-rw-r--r--udkapi/com/sun/star/reflection/TypeDescriptionProvider.idl90
-rw-r--r--udkapi/com/sun/star/reflection/TypeDescriptionSearchDepth.idl59
-rw-r--r--udkapi/com/sun/star/reflection/XArrayTypeDescription.idl78
-rw-r--r--udkapi/com/sun/star/reflection/XCompoundTypeDescription.idl85
-rw-r--r--udkapi/com/sun/star/reflection/XConstantTypeDescription.idl80
-rw-r--r--udkapi/com/sun/star/reflection/XConstantsTypeDescription.idl65
-rw-r--r--udkapi/com/sun/star/reflection/XEnumTypeDescription.idl74
-rw-r--r--udkapi/com/sun/star/reflection/XIdlArray.idl134
-rw-r--r--udkapi/com/sun/star/reflection/XIdlClass.idl215
-rw-r--r--udkapi/com/sun/star/reflection/XIdlClassProvider.idl61
-rw-r--r--udkapi/com/sun/star/reflection/XIdlField.idl83
-rw-r--r--udkapi/com/sun/star/reflection/XIdlField2.idl133
-rw-r--r--udkapi/com/sun/star/reflection/XIdlMember.idl67
-rw-r--r--udkapi/com/sun/star/reflection/XIdlMethod.idl141
-rw-r--r--udkapi/com/sun/star/reflection/XIdlReflection.idl83
-rw-r--r--udkapi/com/sun/star/reflection/XIndirectTypeDescription.idl63
-rw-r--r--udkapi/com/sun/star/reflection/XInterfaceAttributeTypeDescription.idl77
-rw-r--r--udkapi/com/sun/star/reflection/XInterfaceAttributeTypeDescription2.idl79
-rw-r--r--udkapi/com/sun/star/reflection/XInterfaceMemberTypeDescription.idl71
-rw-r--r--udkapi/com/sun/star/reflection/XInterfaceMethodTypeDescription.idl90
-rw-r--r--udkapi/com/sun/star/reflection/XInterfaceTypeDescription.idl96
-rw-r--r--udkapi/com/sun/star/reflection/XInterfaceTypeDescription2.idl76
-rw-r--r--udkapi/com/sun/star/reflection/XMethodParameter.idl98
-rw-r--r--udkapi/com/sun/star/reflection/XModuleTypeDescription.idl61
-rw-r--r--udkapi/com/sun/star/reflection/XParameter.idl59
-rw-r--r--udkapi/com/sun/star/reflection/XPropertyTypeDescription.idl67
-rw-r--r--udkapi/com/sun/star/reflection/XProxyFactory.idl81
-rw-r--r--udkapi/com/sun/star/reflection/XPublished.idl113
-rw-r--r--udkapi/com/sun/star/reflection/XServiceConstructorDescription.idl83
-rw-r--r--udkapi/com/sun/star/reflection/XServiceTypeDescription.idl109
-rw-r--r--udkapi/com/sun/star/reflection/XServiceTypeDescription2.idl81
-rw-r--r--udkapi/com/sun/star/reflection/XSingletonTypeDescription.idl72
-rw-r--r--udkapi/com/sun/star/reflection/XSingletonTypeDescription2.idl70
-rw-r--r--udkapi/com/sun/star/reflection/XStructTypeDescription.idl93
-rw-r--r--udkapi/com/sun/star/reflection/XTypeDescription.idl85
-rw-r--r--udkapi/com/sun/star/reflection/XTypeDescriptionEnumeration.idl69
-rw-r--r--udkapi/com/sun/star/reflection/XTypeDescriptionEnumerationAccess.idl187
-rw-r--r--udkapi/com/sun/star/reflection/XUnionTypeDescription.idl100
-rw-r--r--udkapi/com/sun/star/reflection/makefile.mk93
-rw-r--r--udkapi/com/sun/star/registry/CannotRegisterImplementationException.idl64
-rw-r--r--udkapi/com/sun/star/registry/DefaultRegistry.idl163
-rw-r--r--udkapi/com/sun/star/registry/ImplementationRegistration.idl66
-rw-r--r--udkapi/com/sun/star/registry/InvalidRegistryException.idl56
-rw-r--r--udkapi/com/sun/star/registry/InvalidValueException.idl56
-rw-r--r--udkapi/com/sun/star/registry/MergeConflictException.idl56
-rw-r--r--udkapi/com/sun/star/registry/NestedRegistry.idl161
-rw-r--r--udkapi/com/sun/star/registry/RegistryKeyType.idl66
-rw-r--r--udkapi/com/sun/star/registry/RegistryValueType.idl119
-rw-r--r--udkapi/com/sun/star/registry/SimpleRegistry.idl64
-rw-r--r--udkapi/com/sun/star/registry/XImplementationRegistration.idl128
-rw-r--r--udkapi/com/sun/star/registry/XImplementationRegistration2.idl74
-rw-r--r--udkapi/com/sun/star/registry/XRegistryKey.idl466
-rw-r--r--udkapi/com/sun/star/registry/XSimpleRegistry.idl159
-rw-r--r--udkapi/com/sun/star/registry/makefile.mk59
-rw-r--r--udkapi/com/sun/star/script/AllEventObject.idl80
-rw-r--r--udkapi/com/sun/star/script/AllListenerAdapter.idl53
-rw-r--r--udkapi/com/sun/star/script/ArrayWrapper.idl68
-rw-r--r--udkapi/com/sun/star/script/BasicErrorException.idl69
-rw-r--r--udkapi/com/sun/star/script/CannotConvertException.idl72
-rw-r--r--udkapi/com/sun/star/script/CannotCreateAdapterException.idl55
-rw-r--r--udkapi/com/sun/star/script/ContextInformation.idl99
-rw-r--r--udkapi/com/sun/star/script/Converter.idl104
-rw-r--r--udkapi/com/sun/star/script/Engine.idl60
-rw-r--r--udkapi/com/sun/star/script/FailReason.idl91
-rw-r--r--udkapi/com/sun/star/script/FinishEngineEvent.idl76
-rw-r--r--udkapi/com/sun/star/script/FinishReason.idl62
-rw-r--r--udkapi/com/sun/star/script/InterruptEngineEvent.idl118
-rw-r--r--udkapi/com/sun/star/script/InterruptReason.idl88
-rw-r--r--udkapi/com/sun/star/script/Invocation.idl61
-rw-r--r--udkapi/com/sun/star/script/InvocationAdapterFactory.idl77
-rw-r--r--udkapi/com/sun/star/script/InvocationInfo.idl93
-rw-r--r--udkapi/com/sun/star/script/JavaScript.idl56
-rw-r--r--udkapi/com/sun/star/script/MemberType.idl51
-rw-r--r--udkapi/com/sun/star/script/ScriptEvent.idl65
-rw-r--r--udkapi/com/sun/star/script/ScriptEventDescriptor.idl76
-rw-r--r--udkapi/com/sun/star/script/XAllListener.idl75
-rw-r--r--udkapi/com/sun/star/script/XAllListenerAdapterService.idl72
-rw-r--r--udkapi/com/sun/star/script/XAutomationInvocation.idl51
-rw-r--r--udkapi/com/sun/star/script/XDebugging.idl153
-rw-r--r--udkapi/com/sun/star/script/XDefaultMethod.idl62
-rw-r--r--udkapi/com/sun/star/script/XDefaultProperty.idl66
-rw-r--r--udkapi/com/sun/star/script/XEngine.idl132
-rw-r--r--udkapi/com/sun/star/script/XEngineListener.idl83
-rw-r--r--udkapi/com/sun/star/script/XErrorQuery.idl25
-rw-r--r--udkapi/com/sun/star/script/XEventAttacher.idl123
-rw-r--r--udkapi/com/sun/star/script/XEventAttacherManager.idl232
-rw-r--r--udkapi/com/sun/star/script/XInvocation.idl157
-rw-r--r--udkapi/com/sun/star/script/XInvocation2.idl84
-rw-r--r--udkapi/com/sun/star/script/XInvocationAdapterFactory.idl72
-rw-r--r--udkapi/com/sun/star/script/XInvocationAdapterFactory2.idl68
-rw-r--r--udkapi/com/sun/star/script/XLibraryAccess.idl108
-rw-r--r--udkapi/com/sun/star/script/XScriptEventsAttacher.idl101
-rw-r--r--udkapi/com/sun/star/script/XScriptEventsSupplier.idl62
-rw-r--r--udkapi/com/sun/star/script/XScriptListener.idl71
-rw-r--r--udkapi/com/sun/star/script/XStarBasicAccess.idl98
-rw-r--r--udkapi/com/sun/star/script/XStarBasicDialogInfo.idl63
-rw-r--r--udkapi/com/sun/star/script/XStarBasicLibraryInfo.idl106
-rw-r--r--udkapi/com/sun/star/script/XStarBasicModuleInfo.idl70
-rw-r--r--udkapi/com/sun/star/script/XTypeConverter.idl109
-rw-r--r--udkapi/com/sun/star/script/makefile.mk90
-rw-r--r--udkapi/com/sun/star/security/AccessControlException.idl62
-rw-r--r--udkapi/com/sun/star/security/AccessController.idl62
-rw-r--r--udkapi/com/sun/star/security/AllPermission.idl56
-rw-r--r--udkapi/com/sun/star/security/Policy.idl48
-rw-r--r--udkapi/com/sun/star/security/RuntimePermission.idl52
-rw-r--r--udkapi/com/sun/star/security/XAccessControlContext.idl91
-rw-r--r--udkapi/com/sun/star/security/XAccessController.idl155
-rw-r--r--udkapi/com/sun/star/security/XAction.idl65
-rw-r--r--udkapi/com/sun/star/security/XPolicy.idl70
-rw-r--r--udkapi/com/sun/star/security/makefile.mk60
-rw-r--r--udkapi/com/sun/star/task/XInteractionAbort.idl56
-rw-r--r--udkapi/com/sun/star/task/XInteractionContinuation.idl66
-rw-r--r--udkapi/com/sun/star/task/XInteractionHandler.idl66
-rw-r--r--udkapi/com/sun/star/task/XInteractionHandler2.idl68
-rw-r--r--udkapi/com/sun/star/task/XInteractionRequest.idl77
-rw-r--r--udkapi/com/sun/star/task/XInteractionRetry.idl56
-rw-r--r--udkapi/com/sun/star/task/makefile.mk50
-rw-r--r--udkapi/com/sun/star/test/TestEvent.idl62
-rw-r--r--udkapi/com/sun/star/test/TestFactory.idl70
-rw-r--r--udkapi/com/sun/star/test/XSimpleTest.idl121
-rw-r--r--udkapi/com/sun/star/test/XTest.idl155
-rw-r--r--udkapi/com/sun/star/test/XTestListener.idl85
-rw-r--r--udkapi/com/sun/star/test/bridge/XBridgeTest.idl306
-rw-r--r--udkapi/com/sun/star/test/bridge/makefile.mk45
-rw-r--r--udkapi/com/sun/star/test/makefile.mk50
-rw-r--r--udkapi/com/sun/star/test/performance/XPerformanceTest.idl139
-rw-r--r--udkapi/com/sun/star/test/performance/makefile.mk45
-rw-r--r--udkapi/com/sun/star/udk-modules.idl82
-rw-r--r--udkapi/com/sun/star/uno/DeploymentException.idl53
-rw-r--r--udkapi/com/sun/star/uno/Exception.idl71
-rw-r--r--udkapi/com/sun/star/uno/NamingService.idl57
-rw-r--r--udkapi/com/sun/star/uno/RuntimeException.idl60
-rw-r--r--udkapi/com/sun/star/uno/SecurityException.idl51
-rw-r--r--udkapi/com/sun/star/uno/TypeClass.idl153
-rw-r--r--udkapi/com/sun/star/uno/Uik.idl70
-rw-r--r--udkapi/com/sun/star/uno/XAdapter.idl92
-rw-r--r--udkapi/com/sun/star/uno/XAggregation.idl124
-rw-r--r--udkapi/com/sun/star/uno/XComponentContext.idl69
-rw-r--r--udkapi/com/sun/star/uno/XCurrentContext.idl61
-rw-r--r--udkapi/com/sun/star/uno/XInterface.idl134
-rw-r--r--udkapi/com/sun/star/uno/XNamingService.idl82
-rw-r--r--udkapi/com/sun/star/uno/XReference.idl71
-rw-r--r--udkapi/com/sun/star/uno/XUnloadingPreference.idl71
-rw-r--r--udkapi/com/sun/star/uno/XWeak.idl123
-rw-r--r--udkapi/com/sun/star/uno/makefile.mk61
-rw-r--r--udkapi/com/sun/star/uri/ExternalUriReferenceTranslator.idl45
-rw-r--r--udkapi/com/sun/star/uri/RelativeUriExcessParentSegments.idl62
-rw-r--r--udkapi/com/sun/star/uri/UriReferenceFactory.idl77
-rw-r--r--udkapi/com/sun/star/uri/UriSchemeParser_vndDOTsunDOTstarDOTexpand.idl58
-rw-r--r--udkapi/com/sun/star/uri/UriSchemeParser_vndDOTsunDOTstarDOTscript.idl58
-rw-r--r--udkapi/com/sun/star/uri/VndSunStarPkgUrlReferenceFactory.idl45
-rw-r--r--udkapi/com/sun/star/uri/XExternalUriReferenceTranslator.idl91
-rw-r--r--udkapi/com/sun/star/uri/XUriReference.idl231
-rw-r--r--udkapi/com/sun/star/uri/XUriReferenceFactory.idl163
-rw-r--r--udkapi/com/sun/star/uri/XUriSchemeParser.idl75
-rw-r--r--udkapi/com/sun/star/uri/XVndSunStarExpandUrl.idl77
-rw-r--r--udkapi/com/sun/star/uri/XVndSunStarExpandUrlReference.idl59
-rw-r--r--udkapi/com/sun/star/uri/XVndSunStarPkgUrlReferenceFactory.idl61
-rw-r--r--udkapi/com/sun/star/uri/XVndSunStarScriptUrl.idl137
-rw-r--r--udkapi/com/sun/star/uri/XVndSunStarScriptUrlReference.idl57
-rw-r--r--udkapi/com/sun/star/uri/makefile.mk54
-rw-r--r--udkapi/com/sun/star/util/BootstrapMacroExpander.idl66
-rw-r--r--udkapi/com/sun/star/util/MacroExpander.idl63
-rw-r--r--udkapi/com/sun/star/util/XMacroExpander.idl68
-rw-r--r--udkapi/com/sun/star/util/XVeto.idl64
-rw-r--r--udkapi/com/sun/star/util/logging/LogLevel.idl59
-rw-r--r--udkapi/com/sun/star/util/logging/Logger.idl64
-rw-r--r--udkapi/com/sun/star/util/logging/LoggerRemote.idl64
-rw-r--r--udkapi/com/sun/star/util/logging/XLogger.idl71
-rw-r--r--udkapi/com/sun/star/util/logging/XLoggerRemote.idl77
-rw-r--r--udkapi/com/sun/star/util/logging/makefile.mk50
-rw-r--r--udkapi/com/sun/star/util/makefile.mk50
-rw-r--r--udkapi/com/sun/star/util/theMacroExpander.idl53
-rw-r--r--udkapi/prj/build.lst30
-rw-r--r--udkapi/prj/d.lst55
-rw-r--r--udkapi/prj/makefile.mk61
-rw-r--r--udkapi/util/makefile.mk75
-rw-r--r--udkapi/util/makefile.pmk35
-rw-r--r--udkapi/util/target.pmk34
-rw-r--r--udm/inc/udm/html/htmlitem.hxx410
-rw-r--r--udm/inc/udm/xml/xmlitem.hxx390
-rw-r--r--udm/prj/build.lst12
-rw-r--r--udm/prj/d.lst9
-rw-r--r--udm/source/html/htmlitem.cxx246
-rw-r--r--udm/source/html/makefile.mk56
-rw-r--r--udm/source/inc/precomp.h69
-rw-r--r--udm/source/mkinc/fullcpp.mk60
-rw-r--r--udm/source/unittest/makefile.mk77
-rw-r--r--udm/source/unittest/test.cxx114
-rw-r--r--udm/source/xml/makefile.mk56
-rw-r--r--udm/source/xml/xmlitem.cxx617
-rw-r--r--udm/util/makefile.mk54
-rw-r--r--unixODBC/inc/sql.h824
-rw-r--r--unixODBC/inc/sqlext.h2122
-rw-r--r--unixODBC/inc/sqltypes.h478
-rw-r--r--unixODBC/inc/sqlucode.h789
-rw-r--r--unixODBC/prj/build.lst3
-rw-r--r--unixODBC/prj/d.lst3
-rw-r--r--unodevtools/inc/unodevtools/options.hxx53
-rw-r--r--unodevtools/inc/unodevtools/typemanager.hxx103
-rw-r--r--unodevtools/prj/build.lst8
-rw-r--r--unodevtools/prj/d.lst5
-rw-r--r--unodevtools/source/skeletonmaker/cppcompskeleton.cxx1279
-rw-r--r--unodevtools/source/skeletonmaker/cpptypemaker.cxx973
-rw-r--r--unodevtools/source/skeletonmaker/javacompskeleton.cxx999
-rw-r--r--unodevtools/source/skeletonmaker/javatypemaker.cxx873
-rw-r--r--unodevtools/source/skeletonmaker/makefile.mk57
-rw-r--r--unodevtools/source/skeletonmaker/skeletoncommon.cxx724
-rw-r--r--unodevtools/source/skeletonmaker/skeletoncommon.hxx170
-rw-r--r--unodevtools/source/skeletonmaker/skeletoncpp.hxx144
-rw-r--r--unodevtools/source/skeletonmaker/skeletonjava.hxx118
-rw-r--r--unodevtools/source/skeletonmaker/skeletonmaker.cxx355
-rw-r--r--unodevtools/source/unodevtools/makefile.mk52
-rw-r--r--unodevtools/source/unodevtools/options.cxx128
-rw-r--r--unodevtools/source/unodevtools/typeblob.cxx806
-rw-r--r--unodevtools/source/unodevtools/typemanager.cxx284
-rwxr-xr-xunodevtools/unodevtools.pmk65
-rw-r--r--unoil/climaker/cli_oootypes_config11
-rw-r--r--unoil/climaker/makefile.mk94
-rw-r--r--unoil/climaker/version.txt32
-rw-r--r--unoil/com/sun/star/deployment/ui/makefile.mk33
-rw-r--r--unoil/com/sun/star/frame/status/makefile.mk35
-rwxr-xr-xunoil/com/sun/star/graphic/makefile.mk35
-rw-r--r--unoil/com/sun/star/mail/makefile.mk35
-rw-r--r--unoil/com/sun/star/media/makefile.mk35
-rw-r--r--unoil/drafts/com/sun/star/frame/status/makefile.mk35
-rw-r--r--unoil/javamaker/makefile.mk47
-rw-r--r--unoil/prj/build.lst4
-rw-r--r--unoil/prj/d.lst5
-rw-r--r--unoil/util/makefile.mk44
-rw-r--r--unoil/util/makefile.pmk35
-rw-r--r--unotools/inc/makefile.mk48
-rw-r--r--unotools/inc/pch/precompiled_unotools.cxx31
-rw-r--r--unotools/inc/pch/precompiled_unotools.hxx34
-rw-r--r--unotools/inc/unotools/accelcfg.hxx88
-rw-r--r--unotools/inc/unotools/accessiblerelationsethelper.hxx162
-rw-r--r--unotools/inc/unotools/accessiblestatesethelper.hxx184
-rw-r--r--unotools/inc/unotools/atom.hxx135
-rw-r--r--unotools/inc/unotools/bootstrap.hxx141
-rw-r--r--unotools/inc/unotools/cacheoptions.hxx176
-rw-r--r--unotools/inc/unotools/calendarwrapper.hxx136
-rw-r--r--unotools/inc/unotools/charclass.hxx239
-rw-r--r--unotools/inc/unotools/cmdoptions.hxx258
-rw-r--r--unotools/inc/unotools/collatorwrapper.hxx98
-rw-r--r--unotools/inc/unotools/compatibility.hxx257
-rw-r--r--unotools/inc/unotools/componentresmodule.hxx205
-rw-r--r--unotools/inc/unotools/configitem.hxx215
-rw-r--r--unotools/inc/unotools/configmgr.hxx117
-rw-r--r--unotools/inc/unotools/confignode.hxx363
-rw-r--r--unotools/inc/unotools/configpathes.hxx183
-rw-r--r--unotools/inc/unotools/configvaluecontainer.hxx238
-rw-r--r--unotools/inc/unotools/datetime.hxx65
-rw-r--r--unotools/inc/unotools/defaultoptions.hxx56
-rw-r--r--unotools/inc/unotools/desktopterminationobserver.hxx81
-rw-r--r--unotools/inc/unotools/digitgroupingiterator.hxx207
-rw-r--r--unotools/inc/unotools/docinfohelper.hxx49
-rw-r--r--unotools/inc/unotools/dynamicmenuoptions.hxx222
-rw-r--r--unotools/inc/unotools/eventcfg.hxx125
-rw-r--r--unotools/inc/unotools/eventlisteneradapter.hxx73
-rw-r--r--unotools/inc/unotools/extendedsecurityoptions.hxx163
-rw-r--r--unotools/inc/unotools/fltrcfg.hxx104
-rw-r--r--unotools/inc/unotools/fontcfg.hxx230
-rw-r--r--unotools/inc/unotools/fontcvt.hxx82
-rw-r--r--unotools/inc/unotools/fontdefs.hxx113
-rw-r--r--unotools/inc/unotools/fontoptions.hxx176
-rw-r--r--unotools/inc/unotools/historyoptions.hxx251
-rw-r--r--unotools/inc/unotools/historyoptions_const.hxx58
-rw-r--r--unotools/inc/unotools/idhelper.hxx212
-rw-r--r--unotools/inc/unotools/inetoptions.hxx146
-rw-r--r--unotools/inc/unotools/internaloptions.hxx183
-rw-r--r--unotools/inc/unotools/intlwrapper.hxx126
-rw-r--r--unotools/inc/unotools/itemholderbase.hxx131
-rw-r--r--unotools/inc/unotools/javaoptions.hxx75
-rw-r--r--unotools/inc/unotools/lingucfg.hxx245
-rw-r--r--unotools/inc/unotools/linguprops.hxx123
-rw-r--r--unotools/inc/unotools/localedatawrapper.hxx364
-rw-r--r--unotools/inc/unotools/localfilehelper.hxx71
-rw-r--r--unotools/inc/unotools/localisationoptions.hxx181
-rw-r--r--unotools/inc/unotools/loghelper.hxx53
-rw-r--r--unotools/inc/unotools/misccfg.hxx69
-rw-r--r--unotools/inc/unotools/moduleoptions.hxx260
-rw-r--r--unotools/inc/unotools/nativenumberwrapper.hxx78
-rw-r--r--unotools/inc/unotools/numberformatcodewrapper.hxx79
-rw-r--r--unotools/inc/unotools/options.hxx100
-rw-r--r--unotools/inc/unotools/optionsdlg.hxx56
-rw-r--r--unotools/inc/unotools/pathoptions.hxx142
-rw-r--r--unotools/inc/unotools/printwarningoptions.hxx164
-rw-r--r--unotools/inc/unotools/processfactory.hxx61
-rw-r--r--unotools/inc/unotools/progresshandlerwrap.hxx59
-rw-r--r--unotools/inc/unotools/propertysethelper.hxx98
-rw-r--r--unotools/inc/unotools/propertysetinfo.hxx95
-rw-r--r--unotools/inc/unotools/querydeep.hxx488
-rw-r--r--unotools/inc/unotools/readwritemutexguard.hxx115
-rw-r--r--unotools/inc/unotools/regoptions.hxx128
-rw-r--r--unotools/inc/unotools/regpathhelper.hxx73
-rw-r--r--unotools/inc/unotools/saveopt.hxx128
-rw-r--r--unotools/inc/unotools/searchopt.hxx121
-rw-r--r--unotools/inc/unotools/securityoptions.hxx299
-rw-r--r--unotools/inc/unotools/sharedunocomponent.hxx373
-rw-r--r--unotools/inc/unotools/sourceviewconfig.hxx65
-rw-r--r--unotools/inc/unotools/startoptions.hxx173
-rw-r--r--unotools/inc/unotools/streamhelper.hxx118
-rw-r--r--unotools/inc/unotools/streamsection.hxx87
-rw-r--r--unotools/inc/unotools/streamwrap.hxx185
-rw-r--r--unotools/inc/unotools/syslocale.hxx91
-rw-r--r--unotools/inc/unotools/syslocaleoptions.hxx171
-rw-r--r--unotools/inc/unotools/tempfile.hxx164
-rw-r--r--unotools/inc/unotools/textsearch.hxx189
-rw-r--r--unotools/inc/unotools/transliterationwrapper.hxx148
-rw-r--r--unotools/inc/unotools/ucbhelper.hxx91
-rw-r--r--unotools/inc/unotools/ucblockbytes.hxx225
-rw-r--r--unotools/inc/unotools/ucbstreamhelper.hxx86
-rw-r--r--unotools/inc/unotools/undoopt.hxx51
-rw-r--r--unotools/inc/unotools/unotoolsdllapi.h43
-rw-r--r--unotools/inc/unotools/unotunnelhelper.hxx196
-rw-r--r--unotools/inc/unotools/useroptions.hxx121
-rw-r--r--unotools/inc/unotools/useroptions_const.hxx59
-rw-r--r--unotools/inc/unotools/viewoptions.hxx356
-rw-r--r--unotools/inc/unotools/workingsetoptions.hxx159
-rw-r--r--unotools/inc/unotools/xmlaccelcfg.hxx110
-rw-r--r--unotools/prj/build.lst12
-rw-r--r--unotools/prj/d.lst11
-rw-r--r--unotools/qa/complex/tempfile/TempFileTest.java31
-rw-r--r--unotools/qa/complex/tempfile/TempFileUnitTest.java85
-rw-r--r--unotools/qa/complex/tempfile/Test01.java120
-rw-r--r--unotools/qa/complex/tempfile/Test02.java100
-rw-r--r--unotools/qa/complex/tempfile/TestHelper.java225
-rw-r--r--unotools/qa/complex/tempfile/makefile.mk85
-rw-r--r--unotools/source/accessibility/accessiblerelationsethelper.cxx275
-rw-r--r--unotools/source/accessibility/accessiblestatesethelper.cxx327
-rw-r--r--unotools/source/accessibility/makefile.mk48
-rw-r--r--unotools/source/config/accelcfg.cxx291
-rw-r--r--unotools/source/config/bootstrap.cxx914
-rw-r--r--unotools/source/config/cacheoptions.cxx509
-rw-r--r--unotools/source/config/cmdoptions.cxx631
-rw-r--r--unotools/source/config/compatibility.cxx846
-rw-r--r--unotools/source/config/configitem.cxx1424
-rw-r--r--unotools/source/config/configmgr.cxx743
-rw-r--r--unotools/source/config/confignode.cxx667
-rw-r--r--unotools/source/config/configpathes.cxx311
-rw-r--r--unotools/source/config/configvaluecontainer.cxx458
-rw-r--r--unotools/source/config/defaultoptions.cxx364
-rw-r--r--unotools/source/config/docinfohelper.cxx115
-rw-r--r--unotools/source/config/dynamicmenuoptions.cxx917
-rw-r--r--unotools/source/config/eventcfg.cxx455
-rw-r--r--unotools/source/config/extendedsecurityoptions.cxx541
-rw-r--r--unotools/source/config/fltrcfg.cxx677
-rw-r--r--unotools/source/config/fontcfg.cxx1227
-rw-r--r--unotools/source/config/fontoptions.cxx508
-rw-r--r--unotools/source/config/historyoptions.cxx732
-rw-r--r--unotools/source/config/inetoptions.cxx555
-rw-r--r--unotools/source/config/internaloptions.cxx588
-rw-r--r--unotools/source/config/itemholder1.cxx331
-rw-r--r--unotools/source/config/itemholder1.hxx92
-rw-r--r--unotools/source/config/javaoptions.cxx368
-rw-r--r--unotools/source/config/lingucfg.cxx1504
-rw-r--r--unotools/source/config/localisationoptions.cxx455
-rw-r--r--unotools/source/config/makefile.mk94
-rw-r--r--unotools/source/config/misccfg.cxx312
-rw-r--r--unotools/source/config/moduleoptions.cxx1593
-rw-r--r--unotools/source/config/options.cxx108
-rw-r--r--unotools/source/config/optionsdlg.cxx292
-rw-r--r--unotools/source/config/optionsdrawinglayer.cxx1707
-rw-r--r--unotools/source/config/pathoptions.cxx1083
-rw-r--r--unotools/source/config/printwarningoptions.cxx418
-rw-r--r--unotools/source/config/regoptions.cxx552
-rw-r--r--unotools/source/config/saveopt.cxx1001
-rw-r--r--unotools/source/config/searchopt.cxx639
-rw-r--r--unotools/source/config/securityoptions.cxx1305
-rw-r--r--unotools/source/config/sourceviewconfig.cxx271
-rw-r--r--unotools/source/config/startoptions.cxx455
-rw-r--r--unotools/source/config/syslocaleoptions.cxx704
-rw-r--r--unotools/source/config/undoopt.cxx204
-rw-r--r--unotools/source/config/useroptions.cxx1300
-rw-r--r--unotools/source/config/viewoptions.cxx1304
-rw-r--r--unotools/source/config/workingsetoptions.cxx390
-rw-r--r--unotools/source/config/xmlaccelcfg.cxx418
-rw-r--r--unotools/source/i18n/calendarwrapper.cxx680
-rw-r--r--unotools/source/i18n/charclass.cxx582
-rw-r--r--unotools/source/i18n/collatorwrapper.cxx215
-rw-r--r--unotools/source/i18n/intlwrapper.cxx113
-rw-r--r--unotools/source/i18n/localedatawrapper.cxx2002
-rw-r--r--unotools/source/i18n/makefile.mk57
-rw-r--r--unotools/source/i18n/nativenumberwrapper.cxx170
-rw-r--r--unotools/source/i18n/numberformatcodewrapper.cxx171
-rw-r--r--unotools/source/i18n/readwritemutexguard.cxx123
-rw-r--r--unotools/source/i18n/textsearch.cxx404
-rw-r--r--unotools/source/i18n/transliterationwrapper.cxx348
-rw-r--r--unotools/source/misc/atom.cxx386
-rw-r--r--unotools/source/misc/componentresmodule.cxx149
-rw-r--r--unotools/source/misc/datetime.cxx123
-rw-r--r--unotools/source/misc/desktopterminationobserver.cxx233
-rw-r--r--unotools/source/misc/eventlisteneradapter.cxx185
-rw-r--r--unotools/source/misc/fontcvt.cxx1523
-rw-r--r--unotools/source/misc/fontdefs.cxx608
-rw-r--r--unotools/source/misc/makefile.mk55
-rw-r--r--unotools/source/misc/sharedunocomponent.cxx249
-rw-r--r--unotools/source/misc/syslocale.cxx214
-rw-r--r--unotools/source/processfactory/componentfactory.cxx187
-rw-r--r--unotools/source/processfactory/makefile.mk50
-rw-r--r--unotools/source/processfactory/processfactory.cxx56
-rw-r--r--unotools/source/property/makefile.mk48
-rw-r--r--unotools/source/property/propertysethelper.cxx304
-rw-r--r--unotools/source/property/propertysetinfo.cxx202
-rw-r--r--unotools/source/streaming/makefile.mk48
-rw-r--r--unotools/source/streaming/streamhelper.cxx206
-rw-r--r--unotools/source/streaming/streamwrap.cxx381
-rw-r--r--unotools/source/ucbhelper/XTempFile.hxx154
-rw-r--r--unotools/source/ucbhelper/localfilehelper.cxx245
-rw-r--r--unotools/source/ucbhelper/makefile.mk54
-rw-r--r--unotools/source/ucbhelper/progresshandlerwrap.cxx100
-rw-r--r--unotools/source/ucbhelper/tempfile.cxx496
-rw-r--r--unotools/source/ucbhelper/ucbhelper.cxx927
-rw-r--r--unotools/source/ucbhelper/ucblockbytes.cxx1745
-rw-r--r--unotools/source/ucbhelper/ucbstreamhelper.cxx249
-rw-r--r--unotools/source/ucbhelper/xtempfile.cxx575
-rw-r--r--unotools/util/makefile.mk95
-rw-r--r--unotools/util/makefile.pmk31
-rw-r--r--unoxml/prj/build.lst6
-rw-r--r--unoxml/prj/d.lst3
-rw-r--r--unoxml/qa/complex/RDFRepositoryTest.java847
-rw-r--r--unoxml/qa/complex/makefile.mk59
-rw-r--r--unoxml/qa/complex/testdocuments/example.rdf27
-rw-r--r--unoxml/qa/complex/tests.sce1
-rw-r--r--unoxml/source/dom/attr.cxx156
-rw-r--r--unoxml/source/dom/attr.hxx213
-rw-r--r--unoxml/source/dom/attributesmap.cxx214
-rw-r--r--unoxml/source/dom/attributesmap.hxx100
-rw-r--r--unoxml/source/dom/cdatasection.cxx63
-rw-r--r--unoxml/source/dom/cdatasection.hxx233
-rw-r--r--unoxml/source/dom/characterdata.cxx235
-rw-r--r--unoxml/source/dom/characterdata.hxx242
-rw-r--r--unoxml/source/dom/childlist.cxx75
-rw-r--r--unoxml/source/dom/childlist.hxx67
-rw-r--r--unoxml/source/dom/comment.cxx61
-rw-r--r--unoxml/source/dom/comment.hxx225
-rw-r--r--unoxml/source/dom/document.cxx716
-rw-r--r--unoxml/source/dom/document.hxx364
-rw-r--r--unoxml/source/dom/documentbuilder.cxx432
-rw-r--r--unoxml/source/dom/documentbuilder.hxx160
-rw-r--r--unoxml/source/dom/documentfragment.cxx48
-rw-r--r--unoxml/source/dom/documentfragment.hxx181
-rw-r--r--unoxml/source/dom/documenttype.cxx130
-rw-r--r--unoxml/source/dom/documenttype.hxx220
-rw-r--r--unoxml/source/dom/domimplementation.cxx78
-rw-r--r--unoxml/source/dom/domimplementation.hxx76
-rw-r--r--unoxml/source/dom/element.cxx652
-rw-r--r--unoxml/source/dom/element.hxx299
-rw-r--r--unoxml/source/dom/elementlist.cxx136
-rw-r--r--unoxml/source/dom/elementlist.hxx89
-rw-r--r--unoxml/source/dom/entitiesmap.cxx103
-rw-r--r--unoxml/source/dom/entitiesmap.hxx100
-rw-r--r--unoxml/source/dom/entity.cxx93
-rw-r--r--unoxml/source/dom/entity.hxx203
-rw-r--r--unoxml/source/dom/entityreference.cxx55
-rw-r--r--unoxml/source/dom/entityreference.hxx179
-rw-r--r--unoxml/source/dom/makefile.mk74
-rw-r--r--unoxml/source/dom/node.cxx1021
-rw-r--r--unoxml/source/dom/node.hxx357
-rw-r--r--unoxml/source/dom/notation.cxx73
-rw-r--r--unoxml/source/dom/notation.hxx194
-rw-r--r--unoxml/source/dom/notationsmap.cxx104
-rw-r--r--unoxml/source/dom/notationsmap.hxx100
-rw-r--r--unoxml/source/dom/processinginstruction.cxx95
-rw-r--r--unoxml/source/dom/processinginstruction.hxx201
-rw-r--r--unoxml/source/dom/saxbuilder.cxx356
-rw-r--r--unoxml/source/dom/saxbuilder.hxx153
-rw-r--r--unoxml/source/dom/text.cxx75
-rw-r--r--unoxml/source/dom/text.hxx244
-rw-r--r--unoxml/source/events/event.cxx65
-rw-r--r--unoxml/source/events/event.hxx73
-rw-r--r--unoxml/source/events/eventdispatcher.cxx201
-rw-r--r--unoxml/source/events/eventdispatcher.hxx53
-rw-r--r--unoxml/source/events/makefile.mk56
-rw-r--r--unoxml/source/events/mouseevent.cxx151
-rw-r--r--unoxml/source/events/mouseevent.hxx95
-rw-r--r--unoxml/source/events/mutationevent.cxx102
-rw-r--r--unoxml/source/events/mutationevent.hxx69
-rw-r--r--unoxml/source/events/testlistener.cxx140
-rw-r--r--unoxml/source/events/testlistener.hxx109
-rw-r--r--unoxml/source/events/uievent.cxx84
-rw-r--r--unoxml/source/events/uievent.hxx58
-rw-r--r--unoxml/source/rdf/CBlankNode.cxx160
-rw-r--r--unoxml/source/rdf/CLiteral.cxx223
-rw-r--r--unoxml/source/rdf/CNodes.hxx76
-rw-r--r--unoxml/source/rdf/CURI.cxx869
-rw-r--r--unoxml/source/rdf/librdf_repository.cxx2239
-rw-r--r--unoxml/source/rdf/librdf_repository.hxx50
-rw-r--r--unoxml/source/rdf/librdf_services.cxx85
-rw-r--r--unoxml/source/rdf/makefile.mk84
-rw-r--r--unoxml/source/service/makefile.mk78
-rw-r--r--unoxml/source/service/services.cxx156
-rw-r--r--unoxml/source/xpath/makefile.mk52
-rw-r--r--unoxml/source/xpath/nodelist.cxx68
-rw-r--r--unoxml/source/xpath/nodelist.hxx75
-rw-r--r--unoxml/source/xpath/xpathapi.cxx403
-rw-r--r--unoxml/source/xpath/xpathapi.hxx145
-rw-r--r--unoxml/source/xpath/xpathobject.cxx159
-rw-r--r--unoxml/source/xpath/xpathobject.hxx117
-rw-r--r--unoxml/test/domtest.cxx401
-rw-r--r--unoxml/test/export.map34
-rw-r--r--unoxml/test/makefile.mk105
-rw-r--r--ure/prj/build.lst2
-rw-r--r--ure/prj/d.lst9
-rw-r--r--ure/source/README410
-rw-r--r--ure/source/THIRDPARTYLICENSEREADME.html556
-rw-r--r--ure/source/delzip0
-rw-r--r--ure/source/jvmfwk3.ini5
-rw-r--r--ure/source/jvmfwk3rc5
-rw-r--r--ure/source/makefile.mk76
-rw-r--r--ure/source/startup.sh56
-rw-r--r--ure/source/uno.ini6
-rw-r--r--ure/source/unorc6
-rw-r--r--ure/source/uretest/JavaClient.java72
-rw-r--r--ure/source/uretest/JavaMain.java70
-rw-r--r--ure/source/uretest/JavaNative.java41
-rw-r--r--ure/source/uretest/JavaTest.java64
-rw-r--r--ure/source/uretest/Makefile310
-rw-r--r--ure/source/uretest/Makefile.pln315
-rw-r--r--ure/source/uretest/README115
-rw-r--r--ure/source/uretest/Runner.java41
-rw-r--r--ure/source/uretest/Tester.java55
-rw-r--r--ure/source/uretest/cppmain.cc293
-rw-r--r--ure/source/uretest/cppserver.cc125
-rw-r--r--ure/source/uretest/cpptest.cc125
-rw-r--r--ure/source/uretest/javaclient.mf.template5
-rw-r--r--ure/source/uretest/javamain.mf.template5
-rw-r--r--ure/source/uretest/javanative.mf.template5
-rw-r--r--ure/source/uretest/javatest.mf.template5
-rw-r--r--ure/source/uretest/runner.mf.template5
-rw-r--r--ure/source/uretest/tester.mf.template5
-rw-r--r--ure/source/uretest/types.idl52
-rw-r--r--ure/source/uretest/types.mf.template4
-rw-r--r--ure/source/uretest/version.map41
-rw-r--r--vcl/aqua/inc/aqua11yfactory.h50
-rw-r--r--vcl/aqua/inc/aqua11yfocustracker.hxx109
-rw-r--r--vcl/aqua/inc/aqua11ylistener.hxx67
-rw-r--r--vcl/aqua/inc/aqua11ywrapper.h122
-rw-r--r--vcl/aqua/inc/aquaprintview.h70
-rw-r--r--vcl/aqua/inc/aquavclevents.hxx99
-rw-r--r--vcl/aqua/inc/aquavcltypes.h39
-rw-r--r--vcl/aqua/inc/keyboardfocuslistener.hxx47
-rw-r--r--vcl/aqua/inc/salatsuifontutils.hxx65
-rw-r--r--vcl/aqua/inc/salbmp.h113
-rw-r--r--vcl/aqua/inc/salcolorutils.hxx55
-rw-r--r--vcl/aqua/inc/salconst.h71
-rw-r--r--vcl/aqua/inc/saldata.hxx141
-rw-r--r--vcl/aqua/inc/salfontutils.hxx68
-rw-r--r--vcl/aqua/inc/salframe.h226
-rw-r--r--vcl/aqua/inc/salframeview.h215
-rw-r--r--vcl/aqua/inc/salgdi.h420
-rw-r--r--vcl/aqua/inc/salinst.h206
-rw-r--r--vcl/aqua/inc/salmathutils.hxx90
-rw-r--r--vcl/aqua/inc/salmenu.h124
-rw-r--r--vcl/aqua/inc/salnativewidgets.h74
-rw-r--r--vcl/aqua/inc/salnsmenu.h71
-rw-r--r--vcl/aqua/inc/salnstimer.h43
-rw-r--r--vcl/aqua/inc/salobj.h89
-rw-r--r--vcl/aqua/inc/salprn.h174
-rw-r--r--vcl/aqua/inc/salsys.h73
-rw-r--r--vcl/aqua/inc/saltimer.h57
-rw-r--r--vcl/aqua/inc/salvd.h97
-rw-r--r--vcl/aqua/inc/svsys.h38
-rw-r--r--vcl/aqua/inc/vclnsapp.h73
-rw-r--r--vcl/aqua/source/a11y/aqua11yactionwrapper.h44
-rw-r--r--vcl/aqua/source/a11y/aqua11yactionwrapper.mm83
-rw-r--r--vcl/aqua/source/a11y/aqua11ycomponentwrapper.h48
-rw-r--r--vcl/aqua/source/a11y/aqua11ycomponentwrapper.mm110
-rw-r--r--vcl/aqua/source/a11y/aqua11yfactory.mm198
-rw-r--r--vcl/aqua/source/a11y/aqua11yfocuslistener.cxx120
-rw-r--r--vcl/aqua/source/a11y/aqua11yfocuslistener.hxx63
-rw-r--r--vcl/aqua/source/a11y/aqua11yfocustracker.cxx281
-rw-r--r--vcl/aqua/source/a11y/aqua11ylistener.cxx161
-rw-r--r--vcl/aqua/source/a11y/aqua11yrolehelper.h45
-rw-r--r--vcl/aqua/source/a11y/aqua11yrolehelper.mm272
-rw-r--r--vcl/aqua/source/a11y/aqua11yselectionwrapper.h46
-rw-r--r--vcl/aqua/source/a11y/aqua11yselectionwrapper.mm94
-rw-r--r--vcl/aqua/source/a11y/aqua11ytablewrapper.h47
-rw-r--r--vcl/aqua/source/a11y/aqua11ytablewrapper.mm211
-rw-r--r--vcl/aqua/source/a11y/aqua11ytextattributeswrapper.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm254
-rw-r--r--vcl/aqua/source/a11y/aqua11ytextwrapper.h67
-rw-r--r--vcl/aqua/source/a11y/aqua11ytextwrapper.mm289
-rw-r--r--vcl/aqua/source/a11y/aqua11yutil.h41
-rw-r--r--vcl/aqua/source/a11y/aqua11yutil.mm53
-rw-r--r--vcl/aqua/source/a11y/aqua11yvaluewrapper.h49
-rw-r--r--vcl/aqua/source/a11y/aqua11yvaluewrapper.mm95
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapper.mm1142
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperbutton.h44
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperbutton.mm61
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappercheckbox.h44
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappercheckbox.mm65
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappercombobox.h53
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappercombobox.mm161
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappergroup.h43
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappergroup.mm57
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperlist.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperlist.mm48
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperradiobutton.h44
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperradiobutton.mm65
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperradiogroup.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperradiogroup.mm48
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperrow.h43
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperrow.mm56
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperscrollarea.h44
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperscrollarea.mm84
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperscrollbar.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperscrollbar.mm49
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappersplitter.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappersplitter.mm48
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperstatictext.h43
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapperstatictext.mm56
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappertabgroup.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappertabgroup.mm50
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappertextarea.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappertextarea.mm48
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappertoolbar.h42
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrappertoolbar.mm50
-rw-r--r--vcl/aqua/source/a11y/documentfocuslistener.cxx250
-rw-r--r--vcl/aqua/source/a11y/documentfocuslistener.hxx99
-rw-r--r--vcl/aqua/source/a11y/makefile.mk88
-rw-r--r--vcl/aqua/source/a11y/readme.txt8
-rw-r--r--vcl/aqua/source/app/makefile.mk63
-rw-r--r--vcl/aqua/source/app/saldata.cxx296
-rw-r--r--vcl/aqua/source/app/salinst.cxx1317
-rwxr-xr-xvcl/aqua/source/app/salnstimer.mm56
-rw-r--r--vcl/aqua/source/app/salsys.cxx134
-rw-r--r--vcl/aqua/source/app/saltimer.cxx137
-rwxr-xr-xvcl/aqua/source/app/vclnsapp.mm521
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.cxx735
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.hxx146
-rw-r--r--vcl/aqua/source/dtrans/DragActionConversion.cxx95
-rw-r--r--vcl/aqua/source/dtrans/DragActionConversion.hxx49
-rw-r--r--vcl/aqua/source/dtrans/DragSource.cxx365
-rw-r--r--vcl/aqua/source/dtrans/DragSource.hxx143
-rw-r--r--vcl/aqua/source/dtrans/DragSourceContext.cxx76
-rw-r--r--vcl/aqua/source/dtrans/DragSourceContext.hxx75
-rw-r--r--vcl/aqua/source/dtrans/DropTarget.cxx599
-rw-r--r--vcl/aqua/source/dtrans/DropTarget.hxx170
-rw-r--r--vcl/aqua/source/dtrans/HtmlFmtFlt.cxx150
-rw-r--r--vcl/aqua/source/dtrans/HtmlFmtFlt.hxx23
-rw-r--r--vcl/aqua/source/dtrans/OSXTransferable.cxx216
-rw-r--r--vcl/aqua/source/dtrans/OSXTransferable.hxx103
-rw-r--r--vcl/aqua/source/dtrans/PictToBmpFlt.cxx204
-rw-r--r--vcl/aqua/source/dtrans/PictToBmpFlt.hxx40
-rw-r--r--vcl/aqua/source/dtrans/aqua_clipboard.cxx393
-rw-r--r--vcl/aqua/source/dtrans/aqua_clipboard.hxx184
-rw-r--r--vcl/aqua/source/dtrans/aqua_service.cxx111
-rw-r--r--vcl/aqua/source/dtrans/makefile.mk68
-rw-r--r--vcl/aqua/source/dtrans/service_entry.cxx66
-rw-r--r--vcl/aqua/source/dtrans/test_aquacb.cxx209
-rw-r--r--vcl/aqua/source/gdi/aquaprintaccessoryview.mm1241
-rwxr-xr-xvcl/aqua/source/gdi/aquaprintview.mm82
-rw-r--r--vcl/aqua/source/gdi/makefile.mk74
-rw-r--r--vcl/aqua/source/gdi/salatslayout.cxx1156
-rw-r--r--vcl/aqua/source/gdi/salatsuifontutils.cxx485
-rw-r--r--vcl/aqua/source/gdi/salbmp.cxx914
-rw-r--r--vcl/aqua/source/gdi/salcolorutils.cxx52
-rw-r--r--vcl/aqua/source/gdi/salgdi.cxx2654
-rw-r--r--vcl/aqua/source/gdi/salgdiutils.cxx302
-rw-r--r--vcl/aqua/source/gdi/salmathutils.cxx165
-rw-r--r--vcl/aqua/source/gdi/salnativewidgets.cxx1528
-rw-r--r--vcl/aqua/source/gdi/salprn.cxx874
-rw-r--r--vcl/aqua/source/gdi/salvd.cxx239
-rw-r--r--vcl/aqua/source/res/MainMenu.nib/classes.nib4
-rw-r--r--vcl/aqua/source/res/MainMenu.nib/info.nib21
-rw-r--r--vcl/aqua/source/res/MainMenu.nib/keyedobjects.nibbin0 -> 3615 bytes
-rw-r--r--vcl/aqua/source/res/cursors/airbrush.pngbin0 -> 253 bytes
-rw-r--r--vcl/aqua/source/res/cursors/ase.pngbin0 -> 214 bytes
-rw-r--r--vcl/aqua/source/res/cursors/asn.pngbin0 -> 212 bytes
-rw-r--r--vcl/aqua/source/res/cursors/asne.pngbin0 -> 240 bytes
-rw-r--r--vcl/aqua/source/res/cursors/asns.pngbin0 -> 234 bytes
-rw-r--r--vcl/aqua/source/res/cursors/asnswe.pngbin0 -> 285 bytes
-rw-r--r--vcl/aqua/source/res/cursors/asnw.pngbin0 -> 246 bytes
-rw-r--r--vcl/aqua/source/res/cursors/ass.pngbin0 -> 222 bytes
-rw-r--r--vcl/aqua/source/res/cursors/asse.pngbin0 -> 243 bytes
-rw-r--r--vcl/aqua/source/res/cursors/assw.pngbin0 -> 236 bytes
-rw-r--r--vcl/aqua/source/res/cursors/asw.pngbin0 -> 212 bytes
-rw-r--r--vcl/aqua/source/res/cursors/aswe.pngbin0 -> 228 bytes
-rw-r--r--vcl/aqua/source/res/cursors/chain.pngbin0 -> 344 bytes
-rw-r--r--vcl/aqua/source/res/cursors/chainnot.pngbin0 -> 390 bytes
-rw-r--r--vcl/aqua/source/res/cursors/chart.pngbin0 -> 270 bytes
-rw-r--r--vcl/aqua/source/res/cursors/copydata.pngbin0 -> 336 bytes
-rw-r--r--vcl/aqua/source/res/cursors/copydlnk.pngbin0 -> 340 bytes
-rw-r--r--vcl/aqua/source/res/cursors/copyf.pngbin0 -> 329 bytes
-rw-r--r--vcl/aqua/source/res/cursors/copyf2.pngbin0 -> 344 bytes
-rw-r--r--vcl/aqua/source/res/cursors/copyflnk.pngbin0 -> 339 bytes
-rw-r--r--vcl/aqua/source/res/cursors/crook.pngbin0 -> 291 bytes
-rw-r--r--vcl/aqua/source/res/cursors/crop.pngbin0 -> 239 bytes
-rw-r--r--vcl/aqua/source/res/cursors/darc.pngbin0 -> 172 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dbezier.pngbin0 -> 185 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dcapt.pngbin0 -> 183 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dcirccut.pngbin0 -> 185 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dconnect.pngbin0 -> 183 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dellipse.pngbin0 -> 176 bytes
-rw-r--r--vcl/aqua/source/res/cursors/detectiv.pngbin0 -> 268 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dfree.pngbin0 -> 188 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dline.pngbin0 -> 177 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dpie.pngbin0 -> 183 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dpolygon.pngbin0 -> 191 bytes
-rw-r--r--vcl/aqua/source/res/cursors/drect.pngbin0 -> 172 bytes
-rw-r--r--vcl/aqua/source/res/cursors/dtext.pngbin0 -> 174 bytes
-rw-r--r--vcl/aqua/source/res/cursors/fill.pngbin0 -> 255 bytes
-rw-r--r--vcl/aqua/source/res/cursors/help.pngbin0 -> 303 bytes
-rw-r--r--vcl/aqua/source/res/cursors/hourglass.pngbin0 -> 246 bytes
-rw-r--r--vcl/aqua/source/res/cursors/hshear.pngbin0 -> 223 bytes
-rw-r--r--vcl/aqua/source/res/cursors/linkdata.pngbin0 -> 348 bytes
-rw-r--r--vcl/aqua/source/res/cursors/linkf.pngbin0 -> 336 bytes
-rw-r--r--vcl/aqua/source/res/cursors/magnify.pngbin0 -> 282 bytes
-rw-r--r--vcl/aqua/source/res/cursors/mirror.pngbin0 -> 304 bytes
-rw-r--r--vcl/aqua/source/res/cursors/movebw.pngbin0 -> 320 bytes
-rw-r--r--vcl/aqua/source/res/cursors/movedata.pngbin0 -> 290 bytes
-rw-r--r--vcl/aqua/source/res/cursors/movedlnk.pngbin0 -> 318 bytes
-rw-r--r--vcl/aqua/source/res/cursors/movef.pngbin0 -> 294 bytes
-rw-r--r--vcl/aqua/source/res/cursors/movef2.pngbin0 -> 314 bytes
-rw-r--r--vcl/aqua/source/res/cursors/moveflnk.pngbin0 -> 307 bytes
-rw-r--r--vcl/aqua/source/res/cursors/movept.pngbin0 -> 275 bytes
-rw-r--r--vcl/aqua/source/res/cursors/neswsize.pngbin0 -> 312 bytes
-rw-r--r--vcl/aqua/source/res/cursors/notallow.pngbin0 -> 297 bytes
-rw-r--r--vcl/aqua/source/res/cursors/nullptr.pngbin0 -> 150 bytes
-rw-r--r--vcl/aqua/source/res/cursors/nwsesize.pngbin0 -> 313 bytes
-rw-r--r--vcl/aqua/source/res/cursors/pen.pngbin0 -> 351 bytes
-rw-r--r--vcl/aqua/source/res/cursors/pivotcol.pngbin0 -> 293 bytes
-rw-r--r--vcl/aqua/source/res/cursors/pivotdel.pngbin0 -> 264 bytes
-rw-r--r--vcl/aqua/source/res/cursors/pivotfld.pngbin0 -> 272 bytes
-rw-r--r--vcl/aqua/source/res/cursors/pivotrow.pngbin0 -> 295 bytes
-rw-r--r--vcl/aqua/source/res/cursors/pntbrsh.pngbin0 -> 268 bytes
-rw-r--r--vcl/aqua/source/res/cursors/rotate.pngbin0 -> 274 bytes
-rw-r--r--vcl/aqua/source/res/cursors/tblsele.pngbin0 -> 174 bytes
-rw-r--r--vcl/aqua/source/res/cursors/tblsels.pngbin0 -> 171 bytes
-rw-r--r--vcl/aqua/source/res/cursors/tblselse.pngbin0 -> 183 bytes
-rw-r--r--vcl/aqua/source/res/cursors/tblselsw.pngbin0 -> 183 bytes
-rw-r--r--vcl/aqua/source/res/cursors/tblselw.pngbin0 -> 174 bytes
-rw-r--r--vcl/aqua/source/res/cursors/timemove.pngbin0 -> 249 bytes
-rw-r--r--vcl/aqua/source/res/cursors/timesize.pngbin0 -> 241 bytes
-rw-r--r--vcl/aqua/source/res/cursors/vshear.pngbin0 -> 228 bytes
-rw-r--r--vcl/aqua/source/res/cursors/vtext.pngbin0 -> 162 bytes
-rw-r--r--vcl/aqua/source/res/delzip0
-rw-r--r--vcl/aqua/source/res/makefile.mk54
-rw-r--r--vcl/aqua/source/window/makefile.mk63
-rw-r--r--vcl/aqua/source/window/salframe.cxx1649
-rwxr-xr-xvcl/aqua/source/window/salframeview.mm1627
-rw-r--r--vcl/aqua/source/window/salmenu.cxx960
-rwxr-xr-xvcl/aqua/source/window/salnsmenu.mm213
-rw-r--r--vcl/aqua/source/window/salobj.cxx241
-rw-r--r--vcl/inc/cupsmgr.hxx111
-rw-r--r--vcl/inc/list.h102
-rw-r--r--vcl/inc/makefile.mk49
-rw-r--r--vcl/inc/pch/precompiled_vcl.cxx31
-rw-r--r--vcl/inc/pch/precompiled_vcl.hxx35
-rw-r--r--vcl/inc/sft.hxx633
-rw-r--r--vcl/inc/vcl/ImageListProvider.hxx57
-rw-r--r--vcl/inc/vcl/abstdlg.hxx95
-rw-r--r--vcl/inc/vcl/accel.h62
-rw-r--r--vcl/inc/vcl/accel.hxx129
-rw-r--r--vcl/inc/vcl/accmgr.hxx67
-rw-r--r--vcl/inc/vcl/alpha.hxx114
-rw-r--r--vcl/inc/vcl/animate.hxx255
-rw-r--r--vcl/inc/vcl/apptypes.hxx82
-rw-r--r--vcl/inc/vcl/arrange.hxx424
-rw-r--r--vcl/inc/vcl/bitmap.hxx854
-rw-r--r--vcl/inc/vcl/bitmapex.hxx401
-rw-r--r--vcl/inc/vcl/bmpacc.hxx543
-rw-r--r--vcl/inc/vcl/bmpfast.hxx54
-rw-r--r--vcl/inc/vcl/brdwin.hxx356
-rw-r--r--vcl/inc/vcl/btndlg.hxx120
-rw-r--r--vcl/inc/vcl/button.hxx569
-rw-r--r--vcl/inc/vcl/canvasbitmap.hxx132
-rw-r--r--vcl/inc/vcl/canvastools.hxx256
-rw-r--r--vcl/inc/vcl/cmdevt.h65
-rw-r--r--vcl/inc/vcl/cmdevt.hxx529
-rw-r--r--vcl/inc/vcl/combobox.h40
-rw-r--r--vcl/inc/vcl/combobox.hxx231
-rw-r--r--vcl/inc/vcl/configsettings.hxx75
-rw-r--r--vcl/inc/vcl/controldata.hxx65
-rw-r--r--vcl/inc/vcl/controllayout.hxx88
-rw-r--r--vcl/inc/vcl/ctrl.hxx202
-rw-r--r--vcl/inc/vcl/cursor.hxx120
-rw-r--r--vcl/inc/vcl/cvtgrf.hxx70
-rw-r--r--vcl/inc/vcl/cvtsvm.hxx118
-rw-r--r--vcl/inc/vcl/dbggui.hxx77
-rw-r--r--vcl/inc/vcl/decoview.hxx113
-rw-r--r--vcl/inc/vcl/dialog.hxx163
-rw-r--r--vcl/inc/vcl/dllapi.h43
-rw-r--r--vcl/inc/vcl/dndevdis.hxx116
-rw-r--r--vcl/inc/vcl/dndhelp.hxx128
-rw-r--r--vcl/inc/vcl/dndlcon.hxx127
-rw-r--r--vcl/inc/vcl/dockingarea.hxx68
-rw-r--r--vcl/inc/vcl/dockwin.hxx453
-rw-r--r--vcl/inc/vcl/edit.hxx263
-rw-r--r--vcl/inc/vcl/event.hxx481
-rw-r--r--vcl/inc/vcl/evntpost.hxx60
-rw-r--r--vcl/inc/vcl/extoutdevdata.hxx50
-rw-r--r--vcl/inc/vcl/field.hxx889
-rw-r--r--vcl/inc/vcl/fixbrd.hxx85
-rw-r--r--vcl/inc/vcl/fixed.hxx200
-rw-r--r--vcl/inc/vcl/fldunit.hxx36
-rw-r--r--vcl/inc/vcl/floatwin.hxx163
-rw-r--r--vcl/inc/vcl/fntstyle.hxx56
-rw-r--r--vcl/inc/vcl/font.hxx143
-rw-r--r--vcl/inc/vcl/fontcache.hxx102
-rw-r--r--vcl/inc/vcl/fontmanager.hxx748
-rw-r--r--vcl/inc/vcl/fontsubset.hxx99
-rw-r--r--vcl/inc/vcl/gdimtf.hxx279
-rw-r--r--vcl/inc/vcl/gfxlink.hxx188
-rw-r--r--vcl/inc/vcl/glyphcache.hxx384
-rw-r--r--vcl/inc/vcl/gradient.hxx135
-rw-r--r--vcl/inc/vcl/graph.h84
-rw-r--r--vcl/inc/vcl/graph.hxx220
-rw-r--r--vcl/inc/vcl/graphictools.hxx465
-rw-r--r--vcl/inc/vcl/graphite_adaptors.hxx147
-rw-r--r--vcl/inc/vcl/graphite_cache.hxx290
-rw-r--r--vcl/inc/vcl/graphite_features.hxx77
-rw-r--r--vcl/inc/vcl/graphite_layout.hxx191
-rw-r--r--vcl/inc/vcl/graphite_serverfont.hxx103
-rw-r--r--vcl/inc/vcl/group.hxx70
-rw-r--r--vcl/inc/vcl/hatch.hxx99
-rw-r--r--vcl/inc/vcl/help.hxx126
-rw-r--r--vcl/inc/vcl/helper.hxx68
-rw-r--r--vcl/inc/vcl/helpwin.hxx95
-rw-r--r--vcl/inc/vcl/i18nhelp.hxx99
-rw-r--r--vcl/inc/vcl/idlemgr.hxx63
-rw-r--r--vcl/inc/vcl/ilstbox.hxx646
-rw-r--r--vcl/inc/vcl/image.h185
-rw-r--r--vcl/inc/vcl/image.hxx181
-rw-r--r--vcl/inc/vcl/imagerepository.hxx72
-rw-r--r--vcl/inc/vcl/imgctrl.hxx70
-rw-r--r--vcl/inc/vcl/impbmp.hxx111
-rw-r--r--vcl/inc/vcl/impbmpconv.hxx42
-rw-r--r--vcl/inc/vcl/impdel.hxx90
-rw-r--r--vcl/inc/vcl/impfont.hxx245
-rw-r--r--vcl/inc/vcl/impgraph.hxx179
-rw-r--r--vcl/inc/vcl/impimagetree.hxx99
-rw-r--r--vcl/inc/vcl/impoct.hxx179
-rw-r--r--vcl/inc/vcl/inputctx.hxx91
-rw-r--r--vcl/inc/vcl/introwin.hxx56
-rw-r--r--vcl/inc/vcl/javachild.hxx60
-rw-r--r--vcl/inc/vcl/jobdata.hxx88
-rw-r--r--vcl/inc/vcl/jobset.h82
-rw-r--r--vcl/inc/vcl/jobset.hxx84
-rw-r--r--vcl/inc/vcl/keycod.hxx160
-rw-r--r--vcl/inc/vcl/keycodes.hxx209
-rw-r--r--vcl/inc/vcl/lazydelete.hxx264
-rw-r--r--vcl/inc/vcl/lineinfo.hxx135
-rw-r--r--vcl/inc/vcl/longcurr.hxx161
-rw-r--r--vcl/inc/vcl/lstbox.h68
-rw-r--r--vcl/inc/vcl/lstbox.hxx267
-rw-r--r--vcl/inc/vcl/mapmod.hxx119
-rw-r--r--vcl/inc/vcl/mapunit.hxx36
-rw-r--r--vcl/inc/vcl/menu.hxx534
-rw-r--r--vcl/inc/vcl/menubtn.hxx101
-rw-r--r--vcl/inc/vcl/metaact.hxx1549
-rw-r--r--vcl/inc/vcl/metric.hxx166
-rw-r--r--vcl/inc/vcl/mnemonic.hxx91
-rw-r--r--vcl/inc/vcl/mnemonicengine.hxx160
-rw-r--r--vcl/inc/vcl/morebtn.hxx98
-rw-r--r--vcl/inc/vcl/msgbox.hxx193
-rw-r--r--vcl/inc/vcl/octree.hxx161
-rw-r--r--vcl/inc/vcl/oldprintadaptor.hxx55
-rw-r--r--vcl/inc/vcl/outdata.hxx52
-rw-r--r--vcl/inc/vcl/outdev.h267
-rw-r--r--vcl/inc/vcl/outdev.hxx1229
-rw-r--r--vcl/inc/vcl/outfont.hxx408
-rw-r--r--vcl/inc/vcl/pdfextoutdevdata.hxx521
-rw-r--r--vcl/inc/vcl/pdfwriter.hxx1301
-rw-r--r--vcl/inc/vcl/pngread.hxx73
-rw-r--r--vcl/inc/vcl/pngwrite.hxx70
-rw-r--r--vcl/inc/vcl/pointr.hxx62
-rw-r--r--vcl/inc/vcl/polyscan.hxx158
-rw-r--r--vcl/inc/vcl/popupmenuwindow.hxx50
-rw-r--r--vcl/inc/vcl/ppdparser.hxx346
-rw-r--r--vcl/inc/vcl/print.h84
-rw-r--r--vcl/inc/vcl/print.hxx683
-rw-r--r--vcl/inc/vcl/printergfx.hxx444
-rw-r--r--vcl/inc/vcl/printerinfomanager.hxx244
-rw-r--r--vcl/inc/vcl/printerjob.hxx151
-rw-r--r--vcl/inc/vcl/prndlg.hxx338
-rw-r--r--vcl/inc/vcl/prntypes.hxx98
-rw-r--r--vcl/inc/vcl/ptrstyle.hxx145
-rw-r--r--vcl/inc/vcl/regband.hxx153
-rw-r--r--vcl/inc/vcl/region.h137
-rw-r--r--vcl/inc/vcl/region.hxx158
-rw-r--r--vcl/inc/vcl/salatype.hxx50
-rw-r--r--vcl/inc/vcl/salbmp.hxx71
-rw-r--r--vcl/inc/vcl/salbtype.hxx899
-rw-r--r--vcl/inc/vcl/salctrlhandle.hxx51
-rw-r--r--vcl/inc/vcl/salctype.hxx83
-rw-r--r--vcl/inc/vcl/saldatabasic.hxx56
-rw-r--r--vcl/inc/vcl/salframe.hxx303
-rw-r--r--vcl/inc/vcl/salgdi.hxx497
-rw-r--r--vcl/inc/vcl/salgeom.hxx54
-rw-r--r--vcl/inc/vcl/salgtype.hxx93
-rw-r--r--vcl/inc/vcl/salimestatus.hxx48
-rw-r--r--vcl/inc/vcl/salinst.hxx217
-rw-r--r--vcl/inc/vcl/sallayout.hxx393
-rw-r--r--vcl/inc/vcl/salmenu.hxx103
-rw-r--r--vcl/inc/vcl/salnativewidgets.hxx455
-rw-r--r--vcl/inc/vcl/salobj.hxx95
-rw-r--r--vcl/inc/vcl/salprn.hxx140
-rw-r--r--vcl/inc/vcl/salptype.hxx63
-rw-r--r--vcl/inc/vcl/salsession.hxx120
-rw-r--r--vcl/inc/vcl/salsys.hxx149
-rw-r--r--vcl/inc/vcl/saltimer.hxx72
-rw-r--r--vcl/inc/vcl/salvd.hxx61
-rw-r--r--vcl/inc/vcl/salwtype.hxx349
-rw-r--r--vcl/inc/vcl/scrbar.hxx173
-rw-r--r--vcl/inc/vcl/seleng.hxx253
-rw-r--r--vcl/inc/vcl/settings.hxx1310
-rw-r--r--vcl/inc/vcl/slider.hxx135
-rw-r--r--vcl/inc/vcl/smartid.hxx90
-rw-r--r--vcl/inc/vcl/sndstyle.hxx49
-rw-r--r--vcl/inc/vcl/solarmutex.hxx79
-rw-r--r--vcl/inc/vcl/sound.hxx53
-rw-r--r--vcl/inc/vcl/spin.h54
-rw-r--r--vcl/inc/vcl/spin.hxx120
-rw-r--r--vcl/inc/vcl/spinfld.hxx118
-rw-r--r--vcl/inc/vcl/split.hxx129
-rw-r--r--vcl/inc/vcl/splitwin.hxx271
-rw-r--r--vcl/inc/vcl/status.hxx227
-rw-r--r--vcl/inc/vcl/stdtext.hxx56
-rw-r--r--vcl/inc/vcl/strhelper.hxx86
-rw-r--r--vcl/inc/vcl/subedit.hxx51
-rw-r--r--vcl/inc/vcl/sv.h36
-rw-r--r--vcl/inc/vcl/svapp.hxx618
-rw-r--r--vcl/inc/vcl/svcompat.hxx73
-rw-r--r--vcl/inc/vcl/svdata.hxx456
-rw-r--r--vcl/inc/vcl/svids.hrc261
-rw-r--r--vcl/inc/vcl/symbol.hxx84
-rw-r--r--vcl/inc/vcl/syschild.hxx71
-rw-r--r--vcl/inc/vcl/sysdata.hxx193
-rw-r--r--vcl/inc/vcl/syswin.hxx286
-rw-r--r--vcl/inc/vcl/tabctrl.hxx222
-rw-r--r--vcl/inc/vcl/tabdlg.hxx73
-rw-r--r--vcl/inc/vcl/tabpage.hxx65
-rw-r--r--vcl/inc/vcl/taskpanelist.hxx58
-rw-r--r--vcl/inc/vcl/textlayout.hxx139
-rw-r--r--vcl/inc/vcl/threadex.hxx290
-rw-r--r--vcl/inc/vcl/timer.hxx92
-rw-r--r--vcl/inc/vcl/toolbox.h185
-rw-r--r--vcl/inc/vcl/toolbox.hxx681
-rw-r--r--vcl/inc/vcl/unobrok.hxx42
-rw-r--r--vcl/inc/vcl/unohelp.hxx72
-rw-r--r--vcl/inc/vcl/unohelp2.hxx86
-rw-r--r--vcl/inc/vcl/unowrap.hxx94
-rw-r--r--vcl/inc/vcl/vclenum.hxx331
-rw-r--r--vcl/inc/vcl/vclevent.hxx304
-rw-r--r--vcl/inc/vcl/virdev.hxx132
-rw-r--r--vcl/inc/vcl/waitobj.hxx56
-rw-r--r--vcl/inc/vcl/wall.hxx145
-rw-r--r--vcl/inc/vcl/wall2.hxx63
-rw-r--r--vcl/inc/vcl/windata.hxx52
-rw-r--r--vcl/inc/vcl/window.h375
-rw-r--r--vcl/inc/vcl/window.hxx1118
-rw-r--r--vcl/inc/vcl/wintypes.hxx35
-rw-r--r--vcl/inc/vcl/wrkwin.hxx111
-rw-r--r--vcl/inc/vcl/xconnection.hxx73
-rw-r--r--vcl/os2/howto.txt13
-rw-r--r--vcl/os2/inc/salbmp.h112
-rw-r--r--vcl/os2/inc/saldata.hxx310
-rw-r--r--vcl/os2/inc/salframe.h172
-rw-r--r--vcl/os2/inc/salgdi.h361
-rw-r--r--vcl/os2/inc/salids.hrc109
-rw-r--r--vcl/os2/inc/salinst.h105
-rw-r--r--vcl/os2/inc/sallang.hxx70
-rw-r--r--vcl/os2/inc/sallayout.h34
-rw-r--r--vcl/os2/inc/salmenu.h67
-rw-r--r--vcl/os2/inc/salobj.h72
-rw-r--r--vcl/os2/inc/salprn.h149
-rw-r--r--vcl/os2/inc/salsound.h97
-rw-r--r--vcl/os2/inc/salsound.hxx85
-rw-r--r--vcl/os2/inc/salsys.h47
-rw-r--r--vcl/os2/inc/saltimer.h47
-rw-r--r--vcl/os2/inc/salvd.h68
-rw-r--r--vcl/os2/inc/svsys.h38
-rw-r--r--vcl/os2/inc/wingdi.h73
-rw-r--r--vcl/os2/inc/xwphook.h622
-rw-r--r--vcl/os2/source/app/makefile.mk59
-rw-r--r--vcl/os2/source/app/printf.c287
-rw-r--r--vcl/os2/source/app/salinfo.cxx164
-rw-r--r--vcl/os2/source/app/salinst.cxx861
-rw-r--r--vcl/os2/source/app/sallang.cxx74
-rw-r--r--vcl/os2/source/app/salshl.cxx125
-rw-r--r--vcl/os2/source/app/saltimer.cxx142
-rw-r--r--vcl/os2/source/gdi/makefile.mk56
-rw-r--r--vcl/os2/source/gdi/os2layout.cxx1049
-rw-r--r--vcl/os2/source/gdi/salbmp.cxx740
-rw-r--r--vcl/os2/source/gdi/salgdi.cxx944
-rw-r--r--vcl/os2/source/gdi/salgdi2.cxx786
-rw-r--r--vcl/os2/source/gdi/salgdi3.cxx1704
-rw-r--r--vcl/os2/source/gdi/salprn.cxx1818
-rw-r--r--vcl/os2/source/gdi/salvd.cxx203
-rw-r--r--vcl/os2/source/src/airbrush.ptrbin0 -> 2106 bytes
-rwxr-xr-xvcl/os2/source/src/ase.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/asn.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/asne.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/asns.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/asnswe.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/asnw.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/ass.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/asse.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/assw.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/asw.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/aswe.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/chain.ptrbin0 -> 16 bytes
-rw-r--r--vcl/os2/source/src/chainnot.ptrbin0 -> 16 bytes
-rw-r--r--vcl/os2/source/src/chart.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/copydata.ptrbin0 -> 1191 bytes
-rw-r--r--vcl/os2/source/src/copydlnk.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/copyf.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/copyf2.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/copyflnk.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/crook.ptrbin0 -> 1191 bytes
-rw-r--r--vcl/os2/source/src/crop.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/cross.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/darc.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/data.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dbezier.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dcapt.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dcirccut.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dconnect.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dellipse.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/detectiv.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dfree.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dline.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dpie.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dpolygon.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/drect.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/dtext.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/fill.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/hand.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/help.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/hshear.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/hsizebar.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/hsplit.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/linkdata.ptrbin0 -> 1191 bytes
-rw-r--r--vcl/os2/source/src/linkf.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/magnify.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/makefile.mk111
-rw-r--r--vcl/os2/source/src/mirror.ptrbin0 -> 1191 bytes
-rw-r--r--vcl/os2/source/src/move.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/movebw.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/movedata.ptrbin0 -> 1191 bytes
-rw-r--r--vcl/os2/source/src/movedlnk.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/movef.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/movef2.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/moveflnk.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/movept.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/nullptr.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/pen.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/pivotcol.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/pivotfld.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/pivotrow.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/pntbrsh.ptrbin0 -> 2106 bytes
-rw-r--r--vcl/os2/source/src/refhand.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/rotate.ptrbin0 -> 1191 bytes
-rw-r--r--vcl/os2/source/src/salsrc.rc108
-rw-r--r--vcl/os2/source/src/sd.icobin0 -> 3344 bytes
-rw-r--r--vcl/os2/source/src/sd2.icobin0 -> 5604 bytes
-rw-r--r--vcl/os2/source/src/tblsele.ptrbin0 -> 2106 bytes
-rw-r--r--vcl/os2/source/src/tblsels.ptrbin0 -> 2106 bytes
-rw-r--r--vcl/os2/source/src/tblselse.ptrbin0 -> 2106 bytes
-rw-r--r--vcl/os2/source/src/tblselsw.ptrbin0 -> 2106 bytes
-rw-r--r--vcl/os2/source/src/tblselw.ptrbin0 -> 2106 bytes
-rwxr-xr-xvcl/os2/source/src/timemove.ptrbin0 -> 1190 bytes
-rwxr-xr-xvcl/os2/source/src/timesize.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/vshear.ptrbin0 -> 1201 bytes
-rw-r--r--vcl/os2/source/src/vsizebar.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/vsplit.ptrbin0 -> 1190 bytes
-rw-r--r--vcl/os2/source/src/vtext.ptrbin0 -> 2106 bytes
-rw-r--r--vcl/os2/source/window/makefile53
-rw-r--r--vcl/os2/source/window/makefile.mk47
-rw-r--r--vcl/os2/source/window/salframe.cxx3675
-rw-r--r--vcl/os2/source/window/salmenu.cxx134
-rw-r--r--vcl/os2/source/window/salobj.cxx558
-rw-r--r--vcl/prj/build.lst50
-rw-r--r--vcl/prj/d.lst156
-rw-r--r--vcl/qa/complex/memCheck/CheckMemoryUsage.java340
-rw-r--r--vcl/qa/complex/memCheck/CheckMemoryUsage.props14
-rwxr-xr-xvcl/qa/complex/memCheck/makefile.mk89
-rw-r--r--vcl/qa/complex/persistent_window_states/DocumentHandle.java169
-rw-r--r--vcl/qa/complex/persistent_window_states/PersistentWindowTest.java393
-rw-r--r--vcl/qa/complex/persistent_window_states/PersistentWindowTest.props10
-rw-r--r--vcl/qa/complex/persistent_window_states/makefile.mk81
-rwxr-xr-xvcl/qa/testdocuments/CalcDoc.sxcbin0 -> 9547 bytes
-rwxr-xr-xvcl/qa/testdocuments/ImpressDoc.sxibin0 -> 35135 bytes
-rwxr-xr-xvcl/qa/testdocuments/WriterDoc.sxwbin0 -> 5754 bytes
-rw-r--r--vcl/source/app/brand.cxx81
-rw-r--r--vcl/source/app/dbggui.cxx2032
-rw-r--r--vcl/source/app/dndhelp.cxx184
-rw-r--r--vcl/source/app/help.cxx790
-rw-r--r--vcl/source/app/i18nhelp.cxx190
-rw-r--r--vcl/source/app/idlemgr.cxx153
-rw-r--r--vcl/source/app/makefile.mk71
-rw-r--r--vcl/source/app/salvtables.cxx146
-rw-r--r--vcl/source/app/session.cxx372
-rw-r--r--vcl/source/app/settings.cxx2106
-rw-r--r--vcl/source/app/solarmutex.cxx57
-rw-r--r--vcl/source/app/sound.cxx54
-rw-r--r--vcl/source/app/stdtext.cxx69
-rw-r--r--vcl/source/app/svapp.cxx2087
-rw-r--r--vcl/source/app/svdata.cxx534
-rw-r--r--vcl/source/app/svmain.cxx631
-rw-r--r--vcl/source/app/svmainhook.cxx119
-rw-r--r--vcl/source/app/timer.cxx381
-rw-r--r--vcl/source/app/unohelp.cxx241
-rw-r--r--vcl/source/app/unohelp2.cxx115
-rw-r--r--vcl/source/app/vclevent.cxx153
-rw-r--r--vcl/source/components/display.cxx348
-rw-r--r--vcl/source/components/dtranscomp.cxx554
-rw-r--r--vcl/source/components/factory.cxx199
-rw-r--r--vcl/source/components/fontident.cxx214
-rw-r--r--vcl/source/components/makefile.mk51
-rw-r--r--vcl/source/control/button.cxx4516
-rw-r--r--vcl/source/control/combobox.cxx1595
-rw-r--r--vcl/source/control/ctrl.cxx588
-rw-r--r--vcl/source/control/edit.cxx3136
-rw-r--r--vcl/source/control/field.cxx2506
-rw-r--r--vcl/source/control/field2.cxx3468
-rw-r--r--vcl/source/control/fixbrd.cxx237
-rw-r--r--vcl/source/control/fixed.cxx1177
-rw-r--r--vcl/source/control/group.cxx324
-rw-r--r--vcl/source/control/ilstbox.cxx3242
-rw-r--r--vcl/source/control/imgctrl.cxx271
-rw-r--r--vcl/source/control/longcurr.cxx860
-rw-r--r--vcl/source/control/lstbox.cxx1647
-rw-r--r--vcl/source/control/makefile.mk93
-rw-r--r--vcl/source/control/menubtn.cxx250
-rw-r--r--vcl/source/control/morebtn.cxx280
-rw-r--r--vcl/source/control/scrbar.cxx1651
-rw-r--r--vcl/source/control/slider.cxx1090
-rw-r--r--vcl/source/control/spinbtn.cxx553
-rw-r--r--vcl/source/control/spinfld.cxx1095
-rw-r--r--vcl/source/control/tabctrl.cxx2342
-rw-r--r--vcl/source/fontsubset/cff.cxx2391
-rw-r--r--vcl/source/fontsubset/fontsubset.cxx183
-rw-r--r--vcl/source/fontsubset/gsub.cxx363
-rw-r--r--vcl/source/fontsubset/gsub.h47
-rw-r--r--vcl/source/fontsubset/list.c543
-rw-r--r--vcl/source/fontsubset/makefile.mk51
-rw-r--r--vcl/source/fontsubset/sft.cxx3313
-rw-r--r--vcl/source/fontsubset/ttcr.cxx1656
-rw-r--r--vcl/source/fontsubset/ttcr.hxx264
-rw-r--r--vcl/source/fontsubset/xlat.cxx223
-rw-r--r--vcl/source/fontsubset/xlat.hxx56
-rw-r--r--vcl/source/gdi/alpha.cxx437
-rw-r--r--vcl/source/gdi/animate.cxx942
-rw-r--r--vcl/source/gdi/base14.cxx689
-rw-r--r--vcl/source/gdi/bitmap.cxx1969
-rw-r--r--vcl/source/gdi/bitmap2.cxx1302
-rw-r--r--vcl/source/gdi/bitmap3.cxx2206
-rw-r--r--vcl/source/gdi/bitmap4.cxx1011
-rw-r--r--vcl/source/gdi/bitmapex.cxx969
-rw-r--r--vcl/source/gdi/bmpacc.cxx450
-rw-r--r--vcl/source/gdi/bmpacc2.cxx334
-rw-r--r--vcl/source/gdi/bmpacc3.cxx413
-rw-r--r--vcl/source/gdi/bmpconv.cxx216
-rw-r--r--vcl/source/gdi/bmpfast.cxx986
-rw-r--r--vcl/source/gdi/configsettings.cxx207
-rw-r--r--vcl/source/gdi/cvtgrf.cxx176
-rw-r--r--vcl/source/gdi/cvtsvm.cxx2514
-rw-r--r--vcl/source/gdi/extoutdevdata.cxx44
-rw-r--r--vcl/source/gdi/font.cxx1120
-rw-r--r--vcl/source/gdi/gdimtf.cxx3265
-rw-r--r--vcl/source/gdi/gfxlink.cxx472
-rw-r--r--vcl/source/gdi/gradient.cxx347
-rw-r--r--vcl/source/gdi/graph.cxx817
-rw-r--r--vcl/source/gdi/graphictools.cxx762
-rw-r--r--vcl/source/gdi/hatch.cxx223
-rw-r--r--vcl/source/gdi/image.cxx1026
-rw-r--r--vcl/source/gdi/imagerepository.cxx57
-rw-r--r--vcl/source/gdi/impanmvw.cxx358
-rw-r--r--vcl/source/gdi/impanmvw.hxx99
-rw-r--r--vcl/source/gdi/impbmp.cxx135
-rw-r--r--vcl/source/gdi/impgraph.cxx1678
-rw-r--r--vcl/source/gdi/impimage.cxx637
-rw-r--r--vcl/source/gdi/impimagetree.cxx355
-rw-r--r--vcl/source/gdi/impvect.cxx1205
-rw-r--r--vcl/source/gdi/impvect.hxx66
-rw-r--r--vcl/source/gdi/jobset.cxx459
-rw-r--r--vcl/source/gdi/lineinfo.cxx364
-rw-r--r--vcl/source/gdi/makefile.mk121
-rw-r--r--vcl/source/gdi/mapmod.cxx314
-rw-r--r--vcl/source/gdi/metaact.cxx4326
-rw-r--r--vcl/source/gdi/metric.cxx911
-rw-r--r--vcl/source/gdi/octree.cxx372
-rw-r--r--vcl/source/gdi/oldprintadaptor.cxx119
-rw-r--r--vcl/source/gdi/outdev.cxx3473
-rw-r--r--vcl/source/gdi/outdev2.cxx2271
-rw-r--r--vcl/source/gdi/outdev3.cxx8035
-rw-r--r--vcl/source/gdi/outdev4.cxx1424
-rw-r--r--vcl/source/gdi/outdev5.cxx314
-rw-r--r--vcl/source/gdi/outdev6.cxx1239
-rw-r--r--vcl/source/gdi/outdevnative.cxx341
-rw-r--r--vcl/source/gdi/outmap.cxx2508
-rw-r--r--vcl/source/gdi/pdfextoutdevdata.cxx801
-rw-r--r--vcl/source/gdi/pdffontcache.cxx87
-rw-r--r--vcl/source/gdi/pdffontcache.hxx84
-rw-r--r--vcl/source/gdi/pdfwriter.cxx574
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx12290
-rw-r--r--vcl/source/gdi/pdfwriter_impl.hxx1378
-rw-r--r--vcl/source/gdi/pngread.cxx1587
-rw-r--r--vcl/source/gdi/pngwrite.cxx739
-rw-r--r--vcl/source/gdi/polyscan.cxx361
-rw-r--r--vcl/source/gdi/print.cxx1482
-rw-r--r--vcl/source/gdi/print2.cxx1573
-rw-r--r--vcl/source/gdi/print3.cxx1913
-rw-r--r--vcl/source/gdi/regband.cxx972
-rw-r--r--vcl/source/gdi/region.cxx2929
-rw-r--r--vcl/source/gdi/salgdilayout.cxx820
-rw-r--r--vcl/source/gdi/sallayout.cxx2257
-rw-r--r--vcl/source/gdi/salmisc.cxx519
-rw-r--r--vcl/source/gdi/salnativewidgets-none.cxx136
-rw-r--r--vcl/source/gdi/svcompat.cxx81
-rw-r--r--vcl/source/gdi/textlayout.cxx389
-rw-r--r--vcl/source/gdi/virdev.cxx449
-rw-r--r--vcl/source/gdi/wall.cxx642
-rw-r--r--vcl/source/glyphs/gcach_ftyp.cxx2546
-rw-r--r--vcl/source/glyphs/gcach_ftyp.hxx258
-rw-r--r--vcl/source/glyphs/gcach_layout.cxx635
-rw-r--r--vcl/source/glyphs/gcach_rbmp.cxx277
-rw-r--r--vcl/source/glyphs/gcach_vdev.cxx290
-rw-r--r--vcl/source/glyphs/gcach_vdev.hxx60
-rw-r--r--vcl/source/glyphs/glyphcache.cxx592
-rw-r--r--vcl/source/glyphs/graphite_adaptors.cxx339
-rw-r--r--vcl/source/glyphs/graphite_cache.cxx203
-rw-r--r--vcl/source/glyphs/graphite_features.cxx288
-rw-r--r--vcl/source/glyphs/graphite_layout.cxx1565
-rw-r--r--vcl/source/glyphs/graphite_serverfont.cxx88
-rw-r--r--vcl/source/glyphs/graphite_textsrc.cxx172
-rw-r--r--vcl/source/glyphs/graphite_textsrc.hxx126
-rw-r--r--vcl/source/glyphs/makefile.mk80
-rw-r--r--vcl/source/helper/canvasbitmap.cxx1470
-rw-r--r--vcl/source/helper/canvastools.cxx840
-rw-r--r--vcl/source/helper/evntpost.cxx68
-rw-r--r--vcl/source/helper/lazydelete.cxx127
-rw-r--r--vcl/source/helper/makefile.mk56
-rw-r--r--vcl/source/helper/smartid.cxx267
-rw-r--r--vcl/source/helper/strhelper.cxx445
-rw-r--r--vcl/source/helper/threadex.cxx130
-rw-r--r--vcl/source/helper/xconnection.cxx162
-rw-r--r--vcl/source/salmain/makefile.mk38
-rw-r--r--vcl/source/salmain/salmain.cxx43
-rw-r--r--vcl/source/src/btntext.src147
-rw-r--r--vcl/source/src/helptext.src163
-rw-r--r--vcl/source/src/images.src852
-rw-r--r--vcl/source/src/makefile.mk56
-rw-r--r--vcl/source/src/menu.src107
-rw-r--r--vcl/source/src/print.src492
-rw-r--r--vcl/source/src/stdtext.src127
-rw-r--r--vcl/source/src/units.src60
-rw-r--r--vcl/source/window/abstdlg.cxx67
-rw-r--r--vcl/source/window/accel.cxx730
-rw-r--r--vcl/source/window/accmgr.cxx293
-rw-r--r--vcl/source/window/arrange.cxx905
-rw-r--r--vcl/source/window/brdwin.cxx2384
-rw-r--r--vcl/source/window/btndlg.cxx552
-rw-r--r--vcl/source/window/cmdevt.cxx100
-rw-r--r--vcl/source/window/cursor.cxx465
-rw-r--r--vcl/source/window/decoview.cxx1390
-rw-r--r--vcl/source/window/dialog.cxx1040
-rw-r--r--vcl/source/window/dlgctrl.cxx1270
-rw-r--r--vcl/source/window/dndevdis.cxx503
-rw-r--r--vcl/source/window/dndlcon.cxx570
-rw-r--r--vcl/source/window/dockingarea.cxx248
-rw-r--r--vcl/source/window/dockmgr.cxx1688
-rw-r--r--vcl/source/window/dockwin.cxx1119
-rw-r--r--vcl/source/window/floatwin.cxx880
-rw-r--r--vcl/source/window/introwin.cxx89
-rw-r--r--vcl/source/window/javachild.cxx208
-rw-r--r--vcl/source/window/keycod.cxx157
-rw-r--r--vcl/source/window/keyevent.cxx118
-rw-r--r--vcl/source/window/makefile.mk104
-rw-r--r--vcl/source/window/menu.cxx6106
-rw-r--r--vcl/source/window/mnemonic.cxx422
-rw-r--r--vcl/source/window/mnemonicengine.cxx133
-rw-r--r--vcl/source/window/mouseevent.cxx95
-rw-r--r--vcl/source/window/msgbox.cxx693
-rw-r--r--vcl/source/window/popupmenuwindow.cxx81
-rw-r--r--vcl/source/window/printdlg.cxx2584
-rw-r--r--vcl/source/window/scrwnd.cxx414
-rw-r--r--vcl/source/window/scrwnd.hxx95
-rw-r--r--vcl/source/window/seleng.cxx505
-rw-r--r--vcl/source/window/split.cxx807
-rw-r--r--vcl/source/window/splitwin.cxx3878
-rw-r--r--vcl/source/window/status.cxx1795
-rw-r--r--vcl/source/window/syschild.cxx195
-rw-r--r--vcl/source/window/syswin.cxx1092
-rw-r--r--vcl/source/window/tabdlg.cxx276
-rw-r--r--vcl/source/window/tabpage.cxx217
-rw-r--r--vcl/source/window/taskpanelist.cxx400
-rw-r--r--vcl/source/window/toolbox.cxx6332
-rw-r--r--vcl/source/window/toolbox2.cxx2431
-rw-r--r--vcl/source/window/window.cxx9988
-rw-r--r--vcl/source/window/window2.cxx2063
-rw-r--r--vcl/source/window/window3.cxx85
-rw-r--r--vcl/source/window/winproc.cxx2616
-rw-r--r--vcl/source/window/wrkwin.cxx336
-rw-r--r--vcl/test/canvasbitmaptest.cxx1048
-rw-r--r--vcl/test/dndtest.cxx447
-rw-r--r--vcl/test/makefile.mk77
-rw-r--r--vcl/unx/gtk/a11y/TODO49
-rw-r--r--vcl/unx/gtk/a11y/atkaction.cxx281
-rw-r--r--vcl/unx/gtk/a11y/atkbridge.cxx80
-rw-r--r--vcl/unx/gtk/a11y/atkcomponent.cxx385
-rw-r--r--vcl/unx/gtk/a11y/atkeditabletext.cxx202
-rw-r--r--vcl/unx/gtk/a11y/atkfactory.cxx185
-rw-r--r--vcl/unx/gtk/a11y/atkfactory.hxx44
-rw-r--r--vcl/unx/gtk/a11y/atkhypertext.cxx294
-rw-r--r--vcl/unx/gtk/a11y/atkimage.cxx141
-rw-r--r--vcl/unx/gtk/a11y/atklistener.cxx546
-rw-r--r--vcl/unx/gtk/a11y/atklistener.hxx81
-rw-r--r--vcl/unx/gtk/a11y/atkregistry.cxx73
-rw-r--r--vcl/unx/gtk/a11y/atkregistry.hxx43
-rw-r--r--vcl/unx/gtk/a11y/atkselection.cxx198
-rw-r--r--vcl/unx/gtk/a11y/atktable.cxx724
-rw-r--r--vcl/unx/gtk/a11y/atktext.cxx879
-rw-r--r--vcl/unx/gtk/a11y/atktextattributes.cxx1458
-rw-r--r--vcl/unx/gtk/a11y/atktextattributes.hxx57
-rw-r--r--vcl/unx/gtk/a11y/atkutil.cxx809
-rw-r--r--vcl/unx/gtk/a11y/atkutil.hxx40
-rw-r--r--vcl/unx/gtk/a11y/atkvalue.cxx150
-rw-r--r--vcl/unx/gtk/a11y/atkwindow.cxx333
-rw-r--r--vcl/unx/gtk/a11y/atkwindow.hxx41
-rw-r--r--vcl/unx/gtk/a11y/atkwrapper.cxx953
-rw-r--r--vcl/unx/gtk/a11y/atkwrapper.hxx128
-rw-r--r--vcl/unx/gtk/a11y/makefile.mk93
-rw-r--r--vcl/unx/gtk/app/gtkdata.cxx1032
-rw-r--r--vcl/unx/gtk/app/gtkinst.cxx355
-rw-r--r--vcl/unx/gtk/app/gtksys.cxx105
-rw-r--r--vcl/unx/gtk/app/makefile.mk77
-rw-r--r--vcl/unx/gtk/gdi/makefile.mk67
-rw-r--r--vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx4086
-rw-r--r--vcl/unx/gtk/window/gtkframe.cxx3816
-rw-r--r--vcl/unx/gtk/window/gtkobject.cxx229
-rw-r--r--vcl/unx/gtk/window/makefile.mk79
-rw-r--r--vcl/unx/headless/makefile.mk66
-rw-r--r--vcl/unx/headless/svpbmp.cxx330
-rw-r--r--vcl/unx/headless/svpbmp.hxx72
-rw-r--r--vcl/unx/headless/svpdummies.cxx118
-rw-r--r--vcl/unx/headless/svpdummies.hxx97
-rw-r--r--vcl/unx/headless/svpelement.cxx293
-rw-r--r--vcl/unx/headless/svpelement.hxx49
-rw-r--r--vcl/unx/headless/svpframe.cxx462
-rw-r--r--vcl/unx/headless/svpframe.hxx132
-rw-r--r--vcl/unx/headless/svpgdi.cxx589
-rw-r--r--vcl/unx/headless/svpgdi.hxx175
-rw-r--r--vcl/unx/headless/svpinst.cxx540
-rw-r--r--vcl/unx/headless/svpinst.hxx205
-rw-r--r--vcl/unx/headless/svpprn.cxx1078
-rw-r--r--vcl/unx/headless/svpprn.hxx122
-rw-r--r--vcl/unx/headless/svppspgraphics.cxx1370
-rw-r--r--vcl/unx/headless/svppspgraphics.hxx195
-rw-r--r--vcl/unx/headless/svptext.cxx507
-rw-r--r--vcl/unx/headless/svpvd.cxx112
-rw-r--r--vcl/unx/headless/svpvd.hxx62
-rw-r--r--vcl/unx/inc/XIM.h140
-rw-r--r--vcl/unx/inc/Xproto.h52
-rw-r--r--vcl/unx/inc/cdeint.hxx47
-rw-r--r--vcl/unx/inc/dtint.hxx81
-rw-r--r--vcl/unx/inc/i18n_cb.hxx98
-rw-r--r--vcl/unx/inc/i18n_ic.hxx102
-rw-r--r--vcl/unx/inc/i18n_im.hxx71
-rw-r--r--vcl/unx/inc/i18n_keysym.hxx73
-rw-r--r--vcl/unx/inc/i18n_status.hxx126
-rw-r--r--vcl/unx/inc/i18n_xkb.hxx117
-rw-r--r--vcl/unx/inc/plugins/gtk/atkbridge.hxx39
-rw-r--r--vcl/unx/inc/plugins/gtk/gtkdata.hxx94
-rw-r--r--vcl/unx/inc/plugins/gtk/gtkframe.hxx418
-rw-r--r--vcl/unx/inc/plugins/gtk/gtkgdi.hxx190
-rw-r--r--vcl/unx/inc/plugins/gtk/gtkinst.hxx108
-rw-r--r--vcl/unx/inc/plugins/gtk/gtkobject.hxx74
-rw-r--r--vcl/unx/inc/plugins/kde/kdedata.hxx113
-rw-r--r--vcl/unx/inc/pspgraphics.h196
-rw-r--r--vcl/unx/inc/salbmp.h244
-rw-r--r--vcl/unx/inc/saldata.hxx132
-rw-r--r--vcl/unx/inc/saldisp.hxx570
-rw-r--r--vcl/unx/inc/salfont.h182
-rw-r--r--vcl/unx/inc/salframe.h297
-rw-r--r--vcl/unx/inc/salgdi.h407
-rw-r--r--vcl/unx/inc/salinst.h129
-rw-r--r--vcl/unx/inc/salmenu.h67
-rw-r--r--vcl/unx/inc/salobj.h106
-rw-r--r--vcl/unx/inc/salprn.h122
-rw-r--r--vcl/unx/inc/salstd.hxx79
-rw-r--r--vcl/unx/inc/salsys.h66
-rw-r--r--vcl/unx/inc/saltimer.h47
-rw-r--r--vcl/unx/inc/salunx.h131
-rw-r--r--vcl/unx/inc/salvd.h103
-rw-r--r--vcl/unx/inc/sm.hxx94
-rw-r--r--vcl/unx/inc/soicon.hxx40
-rw-r--r--vcl/unx/inc/strhelper.hxx44
-rw-r--r--vcl/unx/inc/svsys.h35
-rw-r--r--vcl/unx/inc/svunx.h37
-rw-r--r--vcl/unx/inc/wmadaptor.hxx351
-rw-r--r--vcl/unx/inc/xfont.hxx165
-rw-r--r--vcl/unx/kde/kdedata.cxx273
-rw-r--r--vcl/unx/kde/makefile.mk81
-rw-r--r--vcl/unx/kde/salnativewidgets-kde.cxx2118
-rw-r--r--vcl/unx/kde4/KDEData.cxx57
-rw-r--r--vcl/unx/kde4/KDEData.hxx45
-rw-r--r--vcl/unx/kde4/KDESalDisplay.cxx97
-rw-r--r--vcl/unx/kde4/KDESalDisplay.hxx55
-rw-r--r--vcl/unx/kde4/KDESalFrame.cxx411
-rw-r--r--vcl/unx/kde4/KDESalFrame.hxx61
-rw-r--r--vcl/unx/kde4/KDESalGraphics.cxx839
-rw-r--r--vcl/unx/kde4/KDESalGraphics.hxx116
-rw-r--r--vcl/unx/kde4/KDESalInstance.cxx38
-rw-r--r--vcl/unx/kde4/KDESalInstance.hxx44
-rw-r--r--vcl/unx/kde4/KDEXLib.cxx392
-rw-r--r--vcl/unx/kde4/KDEXLib.hxx94
-rw-r--r--vcl/unx/kde4/VCLKDEApplication.cxx54
-rw-r--r--vcl/unx/kde4/VCLKDEApplication.hxx52
-rw-r--r--vcl/unx/kde4/main.cxx96
-rw-r--r--vcl/unx/kde4/makefile.mk96
-rw-r--r--vcl/unx/source/app/i18n_cb.cxx665
-rw-r--r--vcl/unx/source/app/i18n_ic.cxx784
-rw-r--r--vcl/unx/source/app/i18n_im.cxx620
-rw-r--r--vcl/unx/source/app/i18n_keysym.cxx368
-rw-r--r--vcl/unx/source/app/i18n_status.cxx736
-rw-r--r--vcl/unx/source/app/i18n_wrp.cxx261
-rw-r--r--vcl/unx/source/app/i18n_xkb.cxx165
-rw-r--r--vcl/unx/source/app/keysymnames.cxx692
-rw-r--r--vcl/unx/source/app/makefile.mk111
-rw-r--r--vcl/unx/source/app/randrwrapper.cxx363
-rw-r--r--vcl/unx/source/app/saldata.cxx873
-rw-r--r--vcl/unx/source/app/saldisp.cxx3543
-rw-r--r--vcl/unx/source/app/salinst.cxx437
-rw-r--r--vcl/unx/source/app/salsys.cxx228
-rw-r--r--vcl/unx/source/app/saltimer.cxx98
-rw-r--r--vcl/unx/source/app/sm.cxx803
-rw-r--r--vcl/unx/source/app/soicon.cxx115
-rw-r--r--vcl/unx/source/app/wmadaptor.cxx2517
-rw-r--r--vcl/unx/source/desktopdetect/desktopdetector.cxx346
-rw-r--r--vcl/unx/source/desktopdetect/makefile.mk57
-rw-r--r--vcl/unx/source/dtrans/X11_clipboard.cxx295
-rw-r--r--vcl/unx/source/dtrans/X11_clipboard.hxx150
-rw-r--r--vcl/unx/source/dtrans/X11_dndcontext.cxx141
-rw-r--r--vcl/unx/source/dtrans/X11_dndcontext.hxx107
-rw-r--r--vcl/unx/source/dtrans/X11_droptarget.cxx230
-rw-r--r--vcl/unx/source/dtrans/X11_selection.cxx4193
-rw-r--r--vcl/unx/source/dtrans/X11_selection.hxx532
-rw-r--r--vcl/unx/source/dtrans/X11_service.cxx137
-rw-r--r--vcl/unx/source/dtrans/X11_transferable.cxx136
-rw-r--r--vcl/unx/source/dtrans/X11_transferable.hxx73
-rw-r--r--vcl/unx/source/dtrans/bmp.cxx743
-rw-r--r--vcl/unx/source/dtrans/bmp.hxx108
-rw-r--r--vcl/unx/source/dtrans/config.cxx150
-rw-r--r--vcl/unx/source/dtrans/copydata_curs.h45
-rw-r--r--vcl/unx/source/dtrans/copydata_mask.h45
-rw-r--r--vcl/unx/source/dtrans/linkdata_curs.h45
-rw-r--r--vcl/unx/source/dtrans/linkdata_mask.h45
-rw-r--r--vcl/unx/source/dtrans/makefile.mk68
-rw-r--r--vcl/unx/source/dtrans/movedata_curs.h45
-rw-r--r--vcl/unx/source/dtrans/movedata_mask.h45
-rw-r--r--vcl/unx/source/dtrans/nodrop_curs.h45
-rw-r--r--vcl/unx/source/dtrans/nodrop_mask.h45
-rw-r--r--vcl/unx/source/fontmanager/adobeenc.tab1087
-rwxr-xr-xvcl/unx/source/fontmanager/afm_keyword_list62
-rw-r--r--vcl/unx/source/fontmanager/fontcache.cxx814
-rw-r--r--vcl/unx/source/fontmanager/fontconfig.cxx1251
-rw-r--r--vcl/unx/source/fontmanager/fontmanager.cxx4095
-rw-r--r--vcl/unx/source/fontmanager/helper.cxx406
-rw-r--r--vcl/unx/source/fontmanager/makefile.mk77
-rw-r--r--vcl/unx/source/fontmanager/parseAFM.cxx1491
-rw-r--r--vcl/unx/source/fontmanager/parseAFM.hxx337
-rw-r--r--vcl/unx/source/gdi/cdeint.cxx244
-rw-r--r--vcl/unx/source/gdi/dtint.cxx142
-rw-r--r--vcl/unx/source/gdi/dtsetenum.hxx149
-rw-r--r--vcl/unx/source/gdi/gcach_xpeer.cxx684
-rw-r--r--vcl/unx/source/gdi/gcach_xpeer.hxx97
-rw-r--r--vcl/unx/source/gdi/makefile.mk117
-rw-r--r--vcl/unx/source/gdi/pspgraphics.cxx1500
-rw-r--r--vcl/unx/source/gdi/salbmp.cxx1157
-rw-r--r--vcl/unx/source/gdi/salcvt.cxx343
-rw-r--r--vcl/unx/source/gdi/salcvt.hxx94
-rw-r--r--vcl/unx/source/gdi/salgdi.cxx1270
-rw-r--r--vcl/unx/source/gdi/salgdi2.cxx1136
-rw-r--r--vcl/unx/source/gdi/salgdi3.cxx2270
-rw-r--r--vcl/unx/source/gdi/salprnpsp.cxx1171
-rw-r--r--vcl/unx/source/gdi/salvd.cxx274
-rw-r--r--vcl/unx/source/gdi/xfont.cxx767
-rw-r--r--vcl/unx/source/gdi/xlfd_attr.cxx688
-rw-r--r--vcl/unx/source/gdi/xlfd_attr.hxx230
-rw-r--r--vcl/unx/source/gdi/xlfd_extd.cxx1002
-rw-r--r--vcl/unx/source/gdi/xlfd_extd.hxx271
-rw-r--r--vcl/unx/source/gdi/xlfd_smpl.cxx270
-rw-r--r--vcl/unx/source/gdi/xlfd_smpl.hxx94
-rw-r--r--vcl/unx/source/gdi/xrender_peer.cxx243
-rw-r--r--vcl/unx/source/gdi/xrender_peer.hxx380
-rw-r--r--vcl/unx/source/inc/airbrush_curs.h43
-rw-r--r--vcl/unx/source/inc/airbrush_mask.h43
-rw-r--r--vcl/unx/source/inc/ase_curs.h43
-rw-r--r--vcl/unx/source/inc/ase_mask.h43
-rw-r--r--vcl/unx/source/inc/asn_curs.h43
-rw-r--r--vcl/unx/source/inc/asn_mask.h43
-rw-r--r--vcl/unx/source/inc/asne_curs.h43
-rw-r--r--vcl/unx/source/inc/asne_mask.h43
-rw-r--r--vcl/unx/source/inc/asns_curs.h43
-rw-r--r--vcl/unx/source/inc/asns_mask.h43
-rw-r--r--vcl/unx/source/inc/asnswe_curs.h43
-rw-r--r--vcl/unx/source/inc/asnswe_mask.h43
-rw-r--r--vcl/unx/source/inc/asnw_curs.h43
-rw-r--r--vcl/unx/source/inc/asnw_mask.h43
-rw-r--r--vcl/unx/source/inc/ass_curs.h43
-rw-r--r--vcl/unx/source/inc/ass_mask.h43
-rw-r--r--vcl/unx/source/inc/asse_curs.h43
-rw-r--r--vcl/unx/source/inc/asse_mask.h43
-rw-r--r--vcl/unx/source/inc/assw_curs.h43
-rw-r--r--vcl/unx/source/inc/assw_mask.h43
-rw-r--r--vcl/unx/source/inc/asw_curs.h43
-rw-r--r--vcl/unx/source/inc/asw_mask.h43
-rw-r--r--vcl/unx/source/inc/aswe_curs.h43
-rw-r--r--vcl/unx/source/inc/aswe_mask.h43
-rw-r--r--vcl/unx/source/inc/chain_curs.h43
-rw-r--r--vcl/unx/source/inc/chain_mask.h41
-rw-r--r--vcl/unx/source/inc/chainnot_curs.h43
-rw-r--r--vcl/unx/source/inc/chainnot_mask.h41
-rw-r--r--vcl/unx/source/inc/chart_curs.h43
-rw-r--r--vcl/unx/source/inc/chart_mask.h43
-rw-r--r--vcl/unx/source/inc/copydata_curs.h45
-rw-r--r--vcl/unx/source/inc/copydata_mask.h45
-rw-r--r--vcl/unx/source/inc/copydlnk_curs.h45
-rw-r--r--vcl/unx/source/inc/copydlnk_mask.h45
-rw-r--r--vcl/unx/source/inc/copyfile_curs.h45
-rw-r--r--vcl/unx/source/inc/copyfile_mask.h45
-rw-r--r--vcl/unx/source/inc/copyfiles_curs.h45
-rw-r--r--vcl/unx/source/inc/copyfiles_mask.h45
-rw-r--r--vcl/unx/source/inc/copyflnk_curs.h45
-rw-r--r--vcl/unx/source/inc/copyflnk_mask.h45
-rw-r--r--vcl/unx/source/inc/crook_curs.h45
-rw-r--r--vcl/unx/source/inc/crook_mask.h43
-rw-r--r--vcl/unx/source/inc/crop_curs.h45
-rw-r--r--vcl/unx/source/inc/crop_mask.h43
-rw-r--r--vcl/unx/source/inc/detective_curs.h43
-rw-r--r--vcl/unx/source/inc/detective_mask.h43
-rw-r--r--vcl/unx/source/inc/drawarc_curs.h45
-rw-r--r--vcl/unx/source/inc/drawarc_mask.h43
-rw-r--r--vcl/unx/source/inc/drawbezier_curs.h45
-rw-r--r--vcl/unx/source/inc/drawbezier_mask.h43
-rw-r--r--vcl/unx/source/inc/drawcaption_curs.h45
-rw-r--r--vcl/unx/source/inc/drawcaption_mask.h43
-rw-r--r--vcl/unx/source/inc/drawcirclecut_curs.h45
-rw-r--r--vcl/unx/source/inc/drawcirclecut_mask.h43
-rw-r--r--vcl/unx/source/inc/drawconnect_curs.h45
-rw-r--r--vcl/unx/source/inc/drawconnect_mask.h43
-rw-r--r--vcl/unx/source/inc/drawcrook_curs.h45
-rw-r--r--vcl/unx/source/inc/drawcrook_mask.h43
-rw-r--r--vcl/unx/source/inc/drawcrop_curs.h45
-rw-r--r--vcl/unx/source/inc/drawcrop_mask.h43
-rw-r--r--vcl/unx/source/inc/drawellipse_curs.h45
-rw-r--r--vcl/unx/source/inc/drawellipse_mask.h43
-rw-r--r--vcl/unx/source/inc/drawfreehand_curs.h45
-rw-r--r--vcl/unx/source/inc/drawfreehand_mask.h43
-rw-r--r--vcl/unx/source/inc/drawline_curs.h45
-rw-r--r--vcl/unx/source/inc/drawline_mask.h43
-rw-r--r--vcl/unx/source/inc/drawmirror_curs.h45
-rw-r--r--vcl/unx/source/inc/drawmirror_mask.h43
-rw-r--r--vcl/unx/source/inc/drawpie_curs.h45
-rw-r--r--vcl/unx/source/inc/drawpie_mask.h43
-rw-r--r--vcl/unx/source/inc/drawpolygon_curs.h45
-rw-r--r--vcl/unx/source/inc/drawpolygon_mask.h43
-rw-r--r--vcl/unx/source/inc/drawrect_curs.h45
-rw-r--r--vcl/unx/source/inc/drawrect_mask.h43
-rw-r--r--vcl/unx/source/inc/drawtext_curs.h45
-rw-r--r--vcl/unx/source/inc/drawtext_mask.h43
-rw-r--r--vcl/unx/source/inc/fill_curs.h43
-rw-r--r--vcl/unx/source/inc/fill_mask.h43
-rw-r--r--vcl/unx/source/inc/hshear_curs.h45
-rw-r--r--vcl/unx/source/inc/hshear_mask.h43
-rw-r--r--vcl/unx/source/inc/invert50.h68
-rw-r--r--vcl/unx/source/inc/linkdata_curs.h45
-rw-r--r--vcl/unx/source/inc/linkdata_mask.h45
-rw-r--r--vcl/unx/source/inc/linkfile_curs.h45
-rw-r--r--vcl/unx/source/inc/linkfile_mask.h45
-rw-r--r--vcl/unx/source/inc/magnify_curs.h43
-rw-r--r--vcl/unx/source/inc/magnify_mask.h43
-rw-r--r--vcl/unx/source/inc/mirror_curs.h45
-rw-r--r--vcl/unx/source/inc/mirror_mask.h43
-rw-r--r--vcl/unx/source/inc/movebezierweight_curs.h45
-rw-r--r--vcl/unx/source/inc/movebezierweight_mask.h43
-rw-r--r--vcl/unx/source/inc/movedata_curs.h45
-rw-r--r--vcl/unx/source/inc/movedata_mask.h45
-rw-r--r--vcl/unx/source/inc/movedlnk_curs.h45
-rw-r--r--vcl/unx/source/inc/movedlnk_mask.h45
-rw-r--r--vcl/unx/source/inc/movefile_curs.h45
-rw-r--r--vcl/unx/source/inc/movefile_mask.h45
-rw-r--r--vcl/unx/source/inc/movefiles_curs.h45
-rw-r--r--vcl/unx/source/inc/movefiles_mask.h45
-rw-r--r--vcl/unx/source/inc/moveflnk_curs.h45
-rw-r--r--vcl/unx/source/inc/moveflnk_mask.h45
-rw-r--r--vcl/unx/source/inc/movepoint_curs.h45
-rw-r--r--vcl/unx/source/inc/movepoint_mask.h43
-rw-r--r--vcl/unx/source/inc/nodrop_curs.h45
-rw-r--r--vcl/unx/source/inc/nodrop_mask.h45
-rw-r--r--vcl/unx/source/inc/null_curs.h34
-rw-r--r--vcl/unx/source/inc/null_mask.h32
-rw-r--r--vcl/unx/source/inc/paintbrush_curs.h11
-rw-r--r--vcl/unx/source/inc/paintbrush_mask.h9
-rw-r--r--vcl/unx/source/inc/pivotcol_curs.h45
-rw-r--r--vcl/unx/source/inc/pivotcol_mask.h45
-rw-r--r--vcl/unx/source/inc/pivotdel_curs.h45
-rw-r--r--vcl/unx/source/inc/pivotdel_mask.h45
-rw-r--r--vcl/unx/source/inc/pivotfld_curs.h45
-rw-r--r--vcl/unx/source/inc/pivotfld_mask.h45
-rw-r--r--vcl/unx/source/inc/pivotrow_curs.h45
-rw-r--r--vcl/unx/source/inc/pivotrow_mask.h45
-rw-r--r--vcl/unx/source/inc/rotate_curs.h45
-rw-r--r--vcl/unx/source/inc/rotate_mask.h43
-rw-r--r--vcl/unx/source/inc/salcursors.h165
-rw-r--r--vcl/unx/source/inc/tblsele_curs.h11
-rw-r--r--vcl/unx/source/inc/tblsele_mask.h9
-rw-r--r--vcl/unx/source/inc/tblsels_curs.h11
-rw-r--r--vcl/unx/source/inc/tblsels_mask.h9
-rw-r--r--vcl/unx/source/inc/tblselse_curs.h11
-rw-r--r--vcl/unx/source/inc/tblselse_mask.h9
-rw-r--r--vcl/unx/source/inc/tblselsw_curs.h11
-rw-r--r--vcl/unx/source/inc/tblselsw_mask.h9
-rw-r--r--vcl/unx/source/inc/tblselw_curs.h11
-rw-r--r--vcl/unx/source/inc/tblselw_mask.h9
-rw-r--r--vcl/unx/source/inc/timemove_curs.h43
-rw-r--r--vcl/unx/source/inc/timemove_mask.h43
-rw-r--r--vcl/unx/source/inc/timesize_curs.h43
-rw-r--r--vcl/unx/source/inc/timesize_mask.h43
-rw-r--r--vcl/unx/source/inc/vertcurs_curs.h11
-rw-r--r--vcl/unx/source/inc/vertcurs_mask.h11
-rw-r--r--vcl/unx/source/inc/vshear_curs.h45
-rw-r--r--vcl/unx/source/inc/vshear_mask.h43
-rw-r--r--vcl/unx/source/plugadapt/makefile.mk59
-rw-r--r--vcl/unx/source/plugadapt/salplug.cxx305
-rw-r--r--vcl/unx/source/printer/cupsmgr.cxx1144
-rw-r--r--vcl/unx/source/printer/jobdata.cxx229
-rw-r--r--vcl/unx/source/printer/makefile.mk70
-rw-r--r--vcl/unx/source/printer/ppdparser.cxx2168
-rw-r--r--vcl/unx/source/printer/printerinfomanager.cxx1407
-rw-r--r--vcl/unx/source/printergfx/bitmap_gfx.cxx735
-rw-r--r--vcl/unx/source/printergfx/common_gfx.cxx1287
-rw-r--r--vcl/unx/source/printergfx/glyphset.cxx945
-rw-r--r--vcl/unx/source/printergfx/glyphset.hxx137
-rw-r--r--vcl/unx/source/printergfx/makefile.mk65
-rw-r--r--vcl/unx/source/printergfx/printerjob.cxx1203
-rw-r--r--vcl/unx/source/printergfx/psheader.ps368
-rw-r--r--vcl/unx/source/printergfx/psputil.cxx271
-rw-r--r--vcl/unx/source/printergfx/psputil.hxx80
-rw-r--r--vcl/unx/source/printergfx/text_gfx.cxx865
-rw-r--r--vcl/unx/source/window/FWS.cxx282
-rw-r--r--vcl/unx/source/window/FWS.hxx66
-rw-r--r--vcl/unx/source/window/makefile.mk59
-rw-r--r--vcl/unx/source/window/salframe.cxx4434
-rw-r--r--vcl/unx/source/window/salmenu.cxx134
-rw-r--r--vcl/unx/source/window/salobj.cxx560
-rw-r--r--vcl/util/hidother.src31
-rw-r--r--vcl/util/linksvp/makefile.mk64
-rw-r--r--vcl/util/makefile.mk458
-rw-r--r--vcl/util/makefile.pmk34
-rw-r--r--vcl/util/makefile2.pmk41
-rw-r--r--vcl/util/target.pmk44
-rw-r--r--vcl/win/inc/salbmp.h94
-rw-r--r--vcl/win/inc/saldata.hxx375
-rw-r--r--vcl/win/inc/salframe.h156
-rw-r--r--vcl/win/inc/salgdi.h406
-rw-r--r--vcl/win/inc/salids.hrc120
-rw-r--r--vcl/win/inc/salinst.h104
-rw-r--r--vcl/win/inc/salmenu.h80
-rw-r--r--vcl/win/inc/salnativewidgets.h57
-rw-r--r--vcl/win/inc/salobj.h72
-rw-r--r--vcl/win/inc/salprn.h133
-rw-r--r--vcl/win/inc/salsys.h94
-rw-r--r--vcl/win/inc/saltimer.h47
-rw-r--r--vcl/win/inc/salvd.h64
-rw-r--r--vcl/win/inc/svsys.h36
-rw-r--r--vcl/win/inc/wincomp.hxx265
-rw-r--r--vcl/win/source/app/MAKEFILE.MK53
-rw-r--r--vcl/win/source/app/saldata.cxx192
-rw-r--r--vcl/win/source/app/salinfo.cxx304
-rw-r--r--vcl/win/source/app/salinst.cxx1180
-rw-r--r--vcl/win/source/app/salshl.cxx167
-rw-r--r--vcl/win/source/app/saltimer.cxx157
-rw-r--r--vcl/win/source/gdi/MAKEFILE.MK69
-rw-r--r--vcl/win/source/gdi/salbmp.cxx642
-rw-r--r--vcl/win/source/gdi/salgdi.cxx1799
-rw-r--r--vcl/win/source/gdi/salgdi2.cxx822
-rw-r--r--vcl/win/source/gdi/salgdi3.cxx3221
-rw-r--r--vcl/win/source/gdi/salgdi_gdiplus.cxx268
-rw-r--r--vcl/win/source/gdi/salnativewidgets-luna.cxx1292
-rw-r--r--vcl/win/source/gdi/salprn.cxx2367
-rw-r--r--vcl/win/source/gdi/salvd.cxx259
-rw-r--r--vcl/win/source/gdi/winlayout.cxx3208
-rw-r--r--vcl/win/source/gdi/wntgdi.cxx70
-rw-r--r--vcl/win/source/src/50.bmpbin0 -> 94 bytes
-rw-r--r--vcl/win/source/src/50.pngbin0 -> 125 bytes
-rw-r--r--vcl/win/source/src/MAKEFILE.MK130
-rw-r--r--vcl/win/source/src/airbrush.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/ase.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/asn.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/asne.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/asns.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/asnswe.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/asnw.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/ass.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/asse.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/assw.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/asw.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/aswe.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/chain.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/chainnot.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/chart.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/copydata.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/copydlnk.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/copyf.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/copyf2.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/copyflnk.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/crook.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/crop.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/cross.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/darc.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dbezier.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dcapt.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dcirccut.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dconnect.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dellipse.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/detectiv.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dfree.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dline.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dpie.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dpolygon.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/drect.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/dtext.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/fill.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/hand.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/help.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/hshear.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/hsize.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/hsizebar.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/hsplit.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/linkdata.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/linkf.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/magnify.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/mirror.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/move.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/movebw.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/movedata.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/movedlnk.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/movef.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/movef2.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/moveflnk.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/movept.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/neswsize.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/notallow.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/nullptr.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/nwsesize.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/pen.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/pivotcol.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/pivotdel.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/pivotfld.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/pivotrow.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/pntbrsh.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/refhand.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/rotate.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/salsrc.rc121
-rw-r--r--vcl/win/source/src/sd.icobin0 -> 3310 bytes
-rw-r--r--vcl/win/source/src/tblsele.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/tblsels.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/tblselse.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/tblselsw.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/tblselw.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/timemove.curbin0 -> 326 bytes
-rwxr-xr-xvcl/win/source/src/timesize.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/vshear.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/vsize.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/vsizebar.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/vsplit.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/src/vtext.curbin0 -> 326 bytes
-rw-r--r--vcl/win/source/window/MAKEFILE.MK60
-rw-r--r--vcl/win/source/window/salframe.cxx6503
-rw-r--r--vcl/win/source/window/salmenu.cxx412
-rw-r--r--vcl/win/source/window/salobj.cxx839
-rw-r--r--vcl/workben/makefile.mk147
-rw-r--r--vcl/workben/outdevgrind.cxx977
-rw-r--r--vcl/workben/svdem.cxx151
-rw-r--r--vcl/workben/svpclient.cxx349
-rw-r--r--vcl/workben/svptest.cxx376
-rw-r--r--vcl/workben/vcldemo.cxx190
-rw-r--r--vigra/makefile.mk66
-rw-r--r--vigra/prj/build.lst3
-rw-r--r--vigra/prj/d.lst3
-rw-r--r--vigra/vigra1.4.0.patch1713
-rw-r--r--wizards/com/sun/star/wizards/agenda/AgendaTemplate.java1961
-rw-r--r--wizards/com/sun/star/wizards/agenda/AgendaWizardDialog.java384
-rw-r--r--wizards/com/sun/star/wizards/agenda/AgendaWizardDialogConst.java107
-rw-r--r--wizards/com/sun/star/wizards/agenda/AgendaWizardDialogImpl.java597
-rw-r--r--wizards/com/sun/star/wizards/agenda/AgendaWizardDialogResources.java221
-rw-r--r--wizards/com/sun/star/wizards/agenda/CGAgenda.java83
-rw-r--r--wizards/com/sun/star/wizards/agenda/CGTopic.java87
-rw-r--r--wizards/com/sun/star/wizards/agenda/CallWizard.java240
-rw-r--r--wizards/com/sun/star/wizards/agenda/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/agenda/TemplateConsts.java146
-rw-r--r--wizards/com/sun/star/wizards/agenda/TopicsControl.java1320
-rw-r--r--wizards/com/sun/star/wizards/agenda/makefile.mk71
-rw-r--r--wizards/com/sun/star/wizards/common/ConfigGroup.java183
-rw-r--r--wizards/com/sun/star/wizards/common/ConfigNode.java53
-rw-r--r--wizards/com/sun/star/wizards/common/ConfigSet.java452
-rw-r--r--wizards/com/sun/star/wizards/common/Configuration.java457
-rw-r--r--wizards/com/sun/star/wizards/common/DebugHelper.java58
-rw-r--r--wizards/com/sun/star/wizards/common/Desktop.java509
-rw-r--r--wizards/com/sun/star/wizards/common/FileAccess.java1200
-rw-r--r--wizards/com/sun/star/wizards/common/Helper.java444
-rw-r--r--wizards/com/sun/star/wizards/common/IRenderer.java40
-rw-r--r--wizards/com/sun/star/wizards/common/Indexable.java44
-rw-r--r--wizards/com/sun/star/wizards/common/InvalidQueryException.java40
-rw-r--r--wizards/com/sun/star/wizards/common/JavaTools.java785
-rw-r--r--wizards/com/sun/star/wizards/common/MANIFEST.MF1
-rw-r--r--wizards/com/sun/star/wizards/common/NamedValueCollection.java90
-rw-r--r--wizards/com/sun/star/wizards/common/NoValidPathException.java44
-rw-r--r--wizards/com/sun/star/wizards/common/NumberFormatter.java333
-rw-r--r--wizards/com/sun/star/wizards/common/NumericalHelper.java1625
-rw-r--r--wizards/com/sun/star/wizards/common/Properties.java126
-rw-r--r--wizards/com/sun/star/wizards/common/PropertySetHelper.java396
-rw-r--r--wizards/com/sun/star/wizards/common/Resource.java143
-rw-r--r--wizards/com/sun/star/wizards/common/SystemDialog.java428
-rw-r--r--wizards/com/sun/star/wizards/common/TerminateWizardException.java43
-rw-r--r--wizards/com/sun/star/wizards/common/UCB.java269
-rw-r--r--wizards/com/sun/star/wizards/common/XMLHelper.java74
-rw-r--r--wizards/com/sun/star/wizards/common/XMLProvider.java46
-rw-r--r--wizards/com/sun/star/wizards/common/delzip0
-rw-r--r--wizards/com/sun/star/wizards/db/BlindtextCreator.java113
-rw-r--r--wizards/com/sun/star/wizards/db/ColumnPropertySet.java213
-rw-r--r--wizards/com/sun/star/wizards/db/CommandMetaData.java772
-rw-r--r--wizards/com/sun/star/wizards/db/CommandName.java267
-rw-r--r--wizards/com/sun/star/wizards/db/DBMetaData.java1103
-rw-r--r--wizards/com/sun/star/wizards/db/DatabaseObjectWizard.java76
-rw-r--r--wizards/com/sun/star/wizards/db/FieldColumn.java471
-rw-r--r--wizards/com/sun/star/wizards/db/MANIFEST.MF0
-rw-r--r--wizards/com/sun/star/wizards/db/QueryMetaData.java300
-rw-r--r--wizards/com/sun/star/wizards/db/RecordParser.java306
-rw-r--r--wizards/com/sun/star/wizards/db/RelationController.java161
-rw-r--r--wizards/com/sun/star/wizards/db/SQLQueryComposer.java489
-rw-r--r--wizards/com/sun/star/wizards/db/TableDescriptor.java861
-rw-r--r--wizards/com/sun/star/wizards/db/TypeInspector.java465
-rw-r--r--wizards/com/sun/star/wizards/document/Control.java359
-rw-r--r--wizards/com/sun/star/wizards/document/DatabaseControl.java269
-rw-r--r--wizards/com/sun/star/wizards/document/FormHandler.java594
-rw-r--r--wizards/com/sun/star/wizards/document/GridControl.java93
-rw-r--r--wizards/com/sun/star/wizards/document/OfficeDocument.java457
-rw-r--r--wizards/com/sun/star/wizards/document/Shape.java142
-rw-r--r--wizards/com/sun/star/wizards/document/TimeStampControl.java172
-rw-r--r--wizards/com/sun/star/wizards/fax/CGFax.java60
-rw-r--r--wizards/com/sun/star/wizards/fax/CGFaxWizard.java38
-rw-r--r--wizards/com/sun/star/wizards/fax/CallWizard.java257
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxDocument.java212
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialog.java628
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialogConst.java115
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.java873
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialogResources.java182
-rw-r--r--wizards/com/sun/star/wizards/fax/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/fax/makefile.mk62
-rw-r--r--wizards/com/sun/star/wizards/form/CallFormWizard.java221
-rw-r--r--wizards/com/sun/star/wizards/form/DataEntrySetter.java147
-rw-r--r--wizards/com/sun/star/wizards/form/FieldLinker.java312
-rw-r--r--wizards/com/sun/star/wizards/form/Finalizer.java139
-rw-r--r--wizards/com/sun/star/wizards/form/FormConfiguration.java241
-rw-r--r--wizards/com/sun/star/wizards/form/FormControlArranger.java731
-rw-r--r--wizards/com/sun/star/wizards/form/FormDocument.java594
-rw-r--r--wizards/com/sun/star/wizards/form/FormWizard.java481
-rw-r--r--wizards/com/sun/star/wizards/form/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/form/StyleApplier.java494
-rw-r--r--wizards/com/sun/star/wizards/form/UIControlArranger.java504
-rw-r--r--wizards/com/sun/star/wizards/form/makefile.mk67
-rw-r--r--wizards/com/sun/star/wizards/letter/CGLetter.java66
-rw-r--r--wizards/com/sun/star/wizards/letter/CGLetterWizard.java39
-rw-r--r--wizards/com/sun/star/wizards/letter/CGPaperElementLocation.java40
-rw-r--r--wizards/com/sun/star/wizards/letter/CallWizard.java257
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterDocument.java330
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterWizardDialog.java913
-rwxr-xr-xwizards/com/sun/star/wizards/letter/LetterWizardDialogConst.java93
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterWizardDialogEvents.java89
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.java1543
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterWizardDialogResources.java207
-rw-r--r--wizards/com/sun/star/wizards/letter/LocaleCodes.java202
-rw-r--r--wizards/com/sun/star/wizards/letter/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/letter/makefile.mk65
-rw-r--r--wizards/com/sun/star/wizards/makefile.mk149
-rw-r--r--wizards/com/sun/star/wizards/query/CallQueryWizard.java230
-rw-r--r--wizards/com/sun/star/wizards/query/Finalizer.java195
-rw-r--r--wizards/com/sun/star/wizards/query/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/query/QuerySummary.java254
-rw-r--r--wizards/com/sun/star/wizards/query/QueryWizard.java557
-rw-r--r--wizards/com/sun/star/wizards/query/makefile.mk61
-rw-r--r--wizards/com/sun/star/wizards/report/CallReportWizard.java281
-rw-r--r--wizards/com/sun/star/wizards/report/DBColumn.java482
-rw-r--r--wizards/com/sun/star/wizards/report/Dataimport.java222
-rw-r--r--wizards/com/sun/star/wizards/report/GroupFieldHandler.java196
-rwxr-xr-xwizards/com/sun/star/wizards/report/IReportBuilderLayouter.java119
-rwxr-xr-xwizards/com/sun/star/wizards/report/IReportDefinitionReadAccess.java61
-rw-r--r--wizards/com/sun/star/wizards/report/IReportDocument.java268
-rw-r--r--wizards/com/sun/star/wizards/report/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/report/RecordTable.java99
-rw-r--r--wizards/com/sun/star/wizards/report/ReportFinalizer.java293
-rw-r--r--wizards/com/sun/star/wizards/report/ReportImplementationHelper.java68
-rw-r--r--wizards/com/sun/star/wizards/report/ReportLayouter.java341
-rw-r--r--wizards/com/sun/star/wizards/report/ReportTextDocument.java786
-rw-r--r--wizards/com/sun/star/wizards/report/ReportTextImplementation.java734
-rw-r--r--wizards/com/sun/star/wizards/report/ReportWizard.java761
-rw-r--r--wizards/com/sun/star/wizards/report/delzip0
-rw-r--r--wizards/com/sun/star/wizards/report/makefile.mk68
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/Manifest.mf2
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/ReportBuilderImplementation.java748
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/ColumnarSingleColumn.java105
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/ColumnarThreeColumns.java62
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/ColumnarTwoColumns.java137
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/DesignTemplate.java333
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/InBlocksLabelsAbove.java166
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/InBlocksLabelsLeft.java133
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/LayoutConstants.java52
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/ReportBuilderLayouter.java1693
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/SectionEmptyObject.java55
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/SectionLabel.java74
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/SectionObject.java86
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/SectionTextField.java67
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/Tabular.java154
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/layout/makefile.mk71
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/makefile.mk55
-rw-r--r--wizards/com/sun/star/wizards/table/CGCategory.java88
-rw-r--r--wizards/com/sun/star/wizards/table/CGTable.java95
-rw-r--r--wizards/com/sun/star/wizards/table/CallTableWizard.java228
-rw-r--r--wizards/com/sun/star/wizards/table/FieldDescription.java176
-rw-r--r--wizards/com/sun/star/wizards/table/FieldFormatter.java433
-rw-r--r--wizards/com/sun/star/wizards/table/Finalizer.java364
-rw-r--r--wizards/com/sun/star/wizards/table/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/table/PrimaryKeyHandler.java460
-rw-r--r--wizards/com/sun/star/wizards/table/ScenarioSelector.java385
-rw-r--r--wizards/com/sun/star/wizards/table/TableWizard.java438
-rw-r--r--wizards/com/sun/star/wizards/table/makefile.mk65
-rw-r--r--wizards/com/sun/star/wizards/text/TextDocument.java483
-rw-r--r--wizards/com/sun/star/wizards/text/TextFieldHandler.java348
-rw-r--r--wizards/com/sun/star/wizards/text/TextFrameHandler.java51
-rw-r--r--wizards/com/sun/star/wizards/text/TextSectionHandler.java271
-rw-r--r--wizards/com/sun/star/wizards/text/TextStyleHandler.java114
-rw-r--r--wizards/com/sun/star/wizards/text/TextTableHandler.java253
-rw-r--r--wizards/com/sun/star/wizards/text/ViewHandler.java115
-rw-r--r--wizards/com/sun/star/wizards/ui/AggregateComponent.java611
-rw-r--r--wizards/com/sun/star/wizards/ui/ButtonList.java908
-rw-r--r--wizards/com/sun/star/wizards/ui/CommandFieldSelection.java474
-rw-r--r--wizards/com/sun/star/wizards/ui/ControlScroller.java509
-rw-r--r--wizards/com/sun/star/wizards/ui/DBLimitedFieldSelection.java158
-rw-r--r--wizards/com/sun/star/wizards/ui/DocumentPreview.java186
-rw-r--r--wizards/com/sun/star/wizards/ui/FieldSelection.java697
-rw-r--r--wizards/com/sun/star/wizards/ui/FilterComponent.java953
-rw-r--r--wizards/com/sun/star/wizards/ui/ImageList.java1133
-rwxr-xr-xwizards/com/sun/star/wizards/ui/PathSelection.java188
-rw-r--r--wizards/com/sun/star/wizards/ui/PeerConfig.java261
-rw-r--r--wizards/com/sun/star/wizards/ui/SortingComponent.java384
-rw-r--r--wizards/com/sun/star/wizards/ui/TitlesComponent.java249
-rw-r--r--wizards/com/sun/star/wizards/ui/UIConsts.java83
-rw-r--r--wizards/com/sun/star/wizards/ui/UnoDialog.java1148
-rw-r--r--wizards/com/sun/star/wizards/ui/UnoDialog2.java384
-rw-r--r--wizards/com/sun/star/wizards/ui/WizardDialog.java811
-rw-r--r--wizards/com/sun/star/wizards/ui/XCommandSelectionListener.java43
-rw-r--r--wizards/com/sun/star/wizards/ui/XCompletion.java39
-rw-r--r--wizards/com/sun/star/wizards/ui/XFieldSelectionListener.java53
-rwxr-xr-xwizards/com/sun/star/wizards/ui/XPathSelectionListener.java34
-rw-r--r--wizards/com/sun/star/wizards/ui/event/AbstractListener.java133
-rw-r--r--wizards/com/sun/star/wizards/ui/event/CommonListener.java167
-rw-r--r--wizards/com/sun/star/wizards/ui/event/DataAware.java365
-rw-r--r--wizards/com/sun/star/wizards/ui/event/DataAwareFields.java507
-rw-r--r--wizards/com/sun/star/wizards/ui/event/EventNames.java52
-rw-r--r--wizards/com/sun/star/wizards/ui/event/ListModelBinder.java209
-rw-r--r--wizards/com/sun/star/wizards/ui/event/MethodInvocation.java108
-rw-r--r--wizards/com/sun/star/wizards/ui/event/RadioDataAware.java101
-rw-r--r--wizards/com/sun/star/wizards/ui/event/SimpleDataAware.java84
-rw-r--r--wizards/com/sun/star/wizards/ui/event/Task.java204
-rw-r--r--wizards/com/sun/star/wizards/ui/event/TaskEvent.java65
-rw-r--r--wizards/com/sun/star/wizards/ui/event/TaskListener.java51
-rw-r--r--wizards/com/sun/star/wizards/ui/event/UnoDataAware.java265
-rw-r--r--wizards/com/sun/star/wizards/web/AbstractErrorHandler.java238
-rw-r--r--wizards/com/sun/star/wizards/web/BackgroundsDialog.java290
-rw-r--r--wizards/com/sun/star/wizards/web/CallWizard.java312
-rw-r--r--wizards/com/sun/star/wizards/web/ErrorHandler.java117
-rw-r--r--wizards/com/sun/star/wizards/web/ExtensionVerifier.java63
-rw-r--r--wizards/com/sun/star/wizards/web/FTPDialog.java751
-rw-r--r--wizards/com/sun/star/wizards/web/FTPDialogResources.java98
-rw-r--r--wizards/com/sun/star/wizards/web/IconsDialog.java208
-rw-r--r--wizards/com/sun/star/wizards/web/ImageListDialog.java282
-rw-r--r--wizards/com/sun/star/wizards/web/LogTaskListener.java103
-rw-r--r--wizards/com/sun/star/wizards/web/MANIFEST.MF2
-rw-r--r--wizards/com/sun/star/wizards/web/Process.java844
-rw-r--r--wizards/com/sun/star/wizards/web/ProcessErrorHandler.java92
-rw-r--r--wizards/com/sun/star/wizards/web/ProcessErrors.java48
-rw-r--r--wizards/com/sun/star/wizards/web/ProcessStatusRenderer.java68
-rw-r--r--wizards/com/sun/star/wizards/web/StatusDialog.java305
-rw-r--r--wizards/com/sun/star/wizards/web/StylePreview.java154
-rw-r--r--wizards/com/sun/star/wizards/web/TOCPreview.java120
-rw-r--r--wizards/com/sun/star/wizards/web/WWD_Events.java1305
-rw-r--r--wizards/com/sun/star/wizards/web/WWD_General.java392
-rw-r--r--wizards/com/sun/star/wizards/web/WWD_Startup.java984
-rw-r--r--wizards/com/sun/star/wizards/web/WWHID.java186
-rw-r--r--wizards/com/sun/star/wizards/web/WebWizard.java72
-rw-r--r--wizards/com/sun/star/wizards/web/WebWizardConst.java73
-rw-r--r--wizards/com/sun/star/wizards/web/WebWizardDialog.java930
-rw-r--r--wizards/com/sun/star/wizards/web/WebWizardDialogResources.java349
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGArgument.java35
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGContent.java68
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGDesign.java91
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGDocument.java453
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGExporter.java57
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGFilter.java35
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGGeneralInfo.java92
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGIconSet.java35
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGImage.java45
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGLayout.java87
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGPublish.java94
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGSession.java110
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGSessionName.java38
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGSettings.java212
-rw-r--r--wizards/com/sun/star/wizards/web/data/CGStyle.java54
-rw-r--r--wizards/com/sun/star/wizards/web/data/ConfigSetItem.java55
-rw-r--r--wizards/com/sun/star/wizards/web/data/TypeDetection.java79
-rw-r--r--wizards/com/sun/star/wizards/web/data/makefile.mk74
-rw-r--r--wizards/com/sun/star/wizards/web/export/AbstractExporter.java192
-rw-r--r--wizards/com/sun/star/wizards/web/export/ConfiguredExporter.java98
-rw-r--r--wizards/com/sun/star/wizards/web/export/CopyExporter.java88
-rw-r--r--wizards/com/sun/star/wizards/web/export/Exporter.java61
-rw-r--r--wizards/com/sun/star/wizards/web/export/FilterExporter.java89
-rw-r--r--wizards/com/sun/star/wizards/web/export/ImpressHTMLExporter.java105
-rw-r--r--wizards/com/sun/star/wizards/web/export/makefile.mk63
-rw-r--r--wizards/com/sun/star/wizards/web/makefile.mk85
-rw-r--r--wizards/com/sun/star/wizards/web/status/ErrorLog.java69
-rw-r--r--wizards/com/sun/star/wizards/web/status/ErrorReporter.java46
-rw-r--r--wizards/com/sun/star/wizards/web/status/LogTaskListener.java87
-rw-r--r--wizards/com/sun/star/wizards/web/status/Task.java196
-rw-r--r--wizards/com/sun/star/wizards/web/status/TaskEvent.java71
-rw-r--r--wizards/com/sun/star/wizards/web/status/TaskListener.java58
-rw-r--r--wizards/prj/build.lst28
-rw-r--r--wizards/prj/d.lst15
-rw-r--r--wizards/source/config/delzip0
-rw-r--r--wizards/source/config/dialog.xlc5
-rw-r--r--wizards/source/config/makefile.mk52
-rw-r--r--wizards/source/config/script.xlc5
-rw-r--r--wizards/source/configshare/delzip0
-rw-r--r--wizards/source/configshare/dialog.xlc13
-rw-r--r--wizards/source/configshare/makefile.mk52
-rw-r--r--wizards/source/configshare/script.xlc13
-rw-r--r--wizards/source/depot/CommonLang.xba351
-rw-r--r--wizards/source/depot/Currency.xba178
-rw-r--r--wizards/source/depot/Depot.xba500
-rw-r--r--wizards/source/depot/Dialog2.xdl36
-rw-r--r--wizards/source/depot/Dialog3.xdl45
-rw-r--r--wizards/source/depot/Dialog4.xdl17
-rw-r--r--wizards/source/depot/Internet.xba339
-rw-r--r--wizards/source/depot/Lang_de.xba158
-rw-r--r--wizards/source/depot/Lang_en.xba158
-rw-r--r--wizards/source/depot/Lang_es.xba158
-rw-r--r--wizards/source/depot/Lang_fr.xba158
-rw-r--r--wizards/source/depot/Lang_it.xba158
-rw-r--r--wizards/source/depot/Lang_ja.xba158
-rw-r--r--wizards/source/depot/Lang_ko.xba158
-rw-r--r--wizards/source/depot/Lang_sv.xba157
-rw-r--r--wizards/source/depot/Lang_tw.xba158
-rw-r--r--wizards/source/depot/Lang_zh.xba158
-rw-r--r--wizards/source/depot/delzip1
-rw-r--r--wizards/source/depot/dialog.xlb7
-rw-r--r--wizards/source/depot/makefile.mk53
-rw-r--r--wizards/source/depot/script.xlb19
-rw-r--r--wizards/source/depot/tools.xba200
-rw-r--r--wizards/source/euro/AutoPilotRun.xba414
-rw-r--r--wizards/source/euro/Common.xba272
-rw-r--r--wizards/source/euro/ConvertRun.xba317
-rw-r--r--wizards/source/euro/DlgConvert.xdl77
-rw-r--r--wizards/source/euro/DlgPassword.xdl15
-rw-r--r--wizards/source/euro/Hard.xba229
-rw-r--r--wizards/source/euro/Init.xba604
-rw-r--r--wizards/source/euro/Protect.xba175
-rw-r--r--wizards/source/euro/Soft.xba239
-rw-r--r--wizards/source/euro/Writer.xba72
-rw-r--r--wizards/source/euro/delzip0
-rw-r--r--wizards/source/euro/dialog.xlb6
-rw-r--r--wizards/source/euro/euro.src476
-rw-r--r--wizards/source/euro/makefile.mk53
-rw-r--r--wizards/source/euro/script.xlb12
-rw-r--r--wizards/source/formwizard/DBMeta.xba330
-rw-r--r--wizards/source/formwizard/DlgFormDB.xdl102
-rw-r--r--wizards/source/formwizard/FormWizard.xba427
-rw-r--r--wizards/source/formwizard/Language.xba285
-rw-r--r--wizards/source/formwizard/Layouter.xba380
-rw-r--r--wizards/source/formwizard/dbwizres.src3518
-rw-r--r--wizards/source/formwizard/delzip0
-rw-r--r--wizards/source/formwizard/develop.xba533
-rw-r--r--wizards/source/formwizard/dialog.xlb5
-rw-r--r--wizards/source/formwizard/makefile.mk53
-rw-r--r--wizards/source/formwizard/script.xlb10
-rw-r--r--wizards/source/formwizard/tools.xba349
-rw-r--r--wizards/source/gimmicks/AutoText.xba97
-rw-r--r--wizards/source/gimmicks/ChangeAllChars.xba75
-rw-r--r--wizards/source/gimmicks/GetTexts.xba522
-rw-r--r--wizards/source/gimmicks/ReadDir.xba305
-rw-r--r--wizards/source/gimmicks/ReadFolderDlg.xdl22
-rw-r--r--wizards/source/gimmicks/UserfieldDlg.xdl49
-rw-r--r--wizards/source/gimmicks/Userfields.xba219
-rw-r--r--wizards/source/gimmicks/delzip0
-rw-r--r--wizards/source/gimmicks/dialog.xlb6
-rw-r--r--wizards/source/gimmicks/makefile.mk46
-rw-r--r--wizards/source/gimmicks/readdirs.dlgbin0 -> 3180 bytes
-rw-r--r--wizards/source/gimmicks/script.xlb9
-rw-r--r--wizards/source/imagelists/imagelists.src215
-rw-r--r--wizards/source/imagelists/makefile.mk50
-rw-r--r--wizards/source/importwizard/API.xba208
-rw-r--r--wizards/source/importwizard/DialogModul.xba657
-rw-r--r--wizards/source/importwizard/FilesModul.xba824
-rw-r--r--wizards/source/importwizard/ImportDialog.xdl96
-rw-r--r--wizards/source/importwizard/Language.xba157
-rw-r--r--wizards/source/importwizard/Main.xba290
-rw-r--r--wizards/source/importwizard/delzip0
-rw-r--r--wizards/source/importwizard/dialog.xlb5
-rw-r--r--wizards/source/importwizard/importwi.src674
-rw-r--r--wizards/source/importwizard/makefile.mk53
-rw-r--r--wizards/source/importwizard/script.xlb9
-rw-r--r--wizards/source/launcher/DicOOo.xba59
-rw-r--r--wizards/source/launcher/delzip0
-rw-r--r--wizards/source/launcher/dialog.xlb3
-rw-r--r--wizards/source/launcher/makefile.mk46
-rw-r--r--wizards/source/launcher/script.xlb5
-rw-r--r--wizards/source/schedule/BankHoliday.xba177
-rw-r--r--wizards/source/schedule/CalendarMain.xba302
-rw-r--r--wizards/source/schedule/CreateTable.xba133
-rw-r--r--wizards/source/schedule/DlgCalendar.xdl64
-rw-r--r--wizards/source/schedule/DlgControl.xba148
-rw-r--r--wizards/source/schedule/GermanHolidays.xba132
-rw-r--r--wizards/source/schedule/Language.xba95
-rw-r--r--wizards/source/schedule/LocalHolidays.xba642
-rw-r--r--wizards/source/schedule/OwnEvents.xba217
-rw-r--r--wizards/source/schedule/delzip0
-rw-r--r--wizards/source/schedule/dialog.xlb5
-rw-r--r--wizards/source/schedule/makefile.mk53
-rw-r--r--wizards/source/schedule/schedule.src357
-rw-r--r--wizards/source/schedule/script.xlb12
-rw-r--r--wizards/source/standard/Module1.xba7
-rw-r--r--wizards/source/standard/delzip0
-rw-r--r--wizards/source/standard/dialog.xlb3
-rw-r--r--wizards/source/standard/makefile.mk45
-rw-r--r--wizards/source/standard/script.xlb5
-rw-r--r--wizards/source/template/Autotext.xba173
-rw-r--r--wizards/source/template/Correspondence.xba286
-rw-r--r--wizards/source/template/DialogStyles.xdl15
-rw-r--r--wizards/source/template/ModuleAgenda.xba203
-rw-r--r--wizards/source/template/Samples.xba185
-rw-r--r--wizards/source/template/TemplateDialog.xdl29
-rw-r--r--wizards/source/template/delzip0
-rw-r--r--wizards/source/template/dialog.xlb7
-rw-r--r--wizards/source/template/makefile.mk54
-rw-r--r--wizards/source/template/script.xlb8
-rw-r--r--wizards/source/template/template.src358
-rw-r--r--wizards/source/tools/Debug.xba236
-rw-r--r--wizards/source/tools/DlgOverwriteAll.xdl17
-rw-r--r--wizards/source/tools/Listbox.xba353
-rw-r--r--wizards/source/tools/Misc.xba817
-rw-r--r--wizards/source/tools/ModuleControls.xba370
-rw-r--r--wizards/source/tools/Strings.xba452
-rw-r--r--wizards/source/tools/UCB.xba294
-rw-r--r--wizards/source/tools/delzip0
-rw-r--r--wizards/source/tools/dialog.xlb5
-rw-r--r--wizards/source/tools/makefile.mk45
-rw-r--r--wizards/source/tools/script.xlb10
-rw-r--r--wizards/source/tutorials/Functions.xba368
-rw-r--r--wizards/source/tutorials/RoadMap.xba117
-rw-r--r--wizards/source/tutorials/ShowInfoDialog.xba305
-rw-r--r--wizards/source/tutorials/TutorialClose.xba15
-rw-r--r--wizards/source/tutorials/TutorialCloseDialog.xdl14
-rw-r--r--wizards/source/tutorials/TutorialCreator.xba10
-rw-r--r--wizards/source/tutorials/TutorialOpen.xba96
-rw-r--r--wizards/source/tutorials/TutorialOpenDialog.xdl21
-rw-r--r--wizards/source/tutorials/TutorialsDialog.xdl26
-rw-r--r--wizards/source/tutorials/delzip0
-rw-r--r--wizards/source/tutorials/dialog.xlb7
-rw-r--r--wizards/source/tutorials/makefile.mk45
-rw-r--r--wizards/source/tutorials/script.xlb10
-rw-r--r--wizards/source/webwizard/Bullets.xba117
-rw-r--r--wizards/source/webwizard/Common.xba145
-rw-r--r--wizards/source/webwizard/HtmlAutoPilotBasic.xba436
-rw-r--r--wizards/source/webwizard/Language.xba84
-rw-r--r--wizards/source/webwizard/WebWzrd.xdl28
-rw-r--r--wizards/source/webwizard/delzip0
-rw-r--r--wizards/source/webwizard/dialog.xlb5
-rw-r--r--wizards/source/webwizard/makefile.mk53
-rw-r--r--wizards/source/webwizard/script.xlb8
-rw-r--r--wizards/source/webwizard/webwizar.src167
-rw-r--r--wizards/util/hidother.src1498
-rw-r--r--wizards/util/makefile.mk42
-rw-r--r--wizards/util/soffice.lnk248
-rw-r--r--wizards/util/target.pmk41
-rw-r--r--writerfilter/documentation/AddingTable.cxx59
-rw-r--r--writerfilter/documentation/KnownIssues.txt9
-rw-r--r--writerfilter/documentation/TODO13
-rw-r--r--writerfilter/documentation/doxygen/Doxyfile1237
-rw-r--r--writerfilter/documentation/doxygen/images/doctok.pngbin0 -> 7291 bytes
-rw-r--r--writerfilter/documentation/doxygen/images/ooxmlimportchain.pngbin0 -> 22605 bytes
-rw-r--r--writerfilter/documentation/sprms.txt10
-rw-r--r--writerfilter/documentation/tablesInDoc.txt135
-rw-r--r--writerfilter/inc/WriterFilterDllApi.hxx43
-rw-r--r--writerfilter/inc/dmapper/DomainMapper.hxx157
-rw-r--r--writerfilter/inc/doctok/WW8Document.hxx447
-rw-r--r--writerfilter/inc/ooxml/OOXMLDocument.hxx279
-rw-r--r--writerfilter/inc/resourcemodel/OutputWithDepth.hxx133
-rw-r--r--writerfilter/inc/resourcemodel/Protocol.hxx105
-rw-r--r--writerfilter/inc/resourcemodel/QNameToString.hxx91
-rw-r--r--writerfilter/inc/resourcemodel/ResourceModelHelper.hxx43
-rw-r--r--writerfilter/inc/resourcemodel/SubSequence.hxx354
-rw-r--r--writerfilter/inc/resourcemodel/TableData.hxx427
-rw-r--r--writerfilter/inc/resourcemodel/TableManager.hxx1096
-rw-r--r--writerfilter/inc/resourcemodel/TagLogger.hxx162
-rw-r--r--writerfilter/inc/resourcemodel/WW8ResourceModel.hxx404
-rw-r--r--writerfilter/inc/resourcemodel/exceptions.hxx63
-rw-r--r--writerfilter/inc/resourcemodel/util.hxx53
-rw-r--r--writerfilter/inc/rtftok/RTFInputSource.hxx45
-rw-r--r--writerfilter/inc/rtftok/RTFParseException.hxx45
-rw-r--r--writerfilter/inc/rtftok/RTFScanner.hxx68
-rw-r--r--writerfilter/inc/rtftok/RTFScannerHandler.hxx53
-rw-r--r--writerfilter/inc/writerfilter.mk29
-rw-r--r--writerfilter/prj/build.lst11
-rw-r--r--writerfilter/prj/d.lst7
-rw-r--r--writerfilter/qa/complex/ooxml/LoadDocuments.java51
-rw-r--r--writerfilter/qa/complex/ooxml/makefile.mk90
-rw-r--r--writerfilter/qa/cppunittests/doctok/doctok.job1
-rw-r--r--writerfilter/qa/cppunittests/doctok/export.map7
-rw-r--r--writerfilter/qa/cppunittests/doctok/makefile.mk73
-rw-r--r--writerfilter/qa/cppunittests/doctok/testdoctok.cxx230
-rw-r--r--writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.cxx205
-rw-r--r--writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.hxx91
-rw-r--r--writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx82
-rw-r--r--writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.hxx60
-rw-r--r--writerfilter/qa/cppunittests/odiapi/export.exp1
-rw-r--r--writerfilter/qa/cppunittests/odiapi/export.map34
-rw-r--r--writerfilter/qa/cppunittests/odiapi/makefile.mk76
-rw-r--r--writerfilter/qa/cppunittests/odiapi/testCore.cxx175
-rw-r--r--writerfilter/qa/cppunittests/odiapi/testProperty.cxx685
-rw-r--r--writerfilter/qa/cppunittests/qname/export.map34
-rw-r--r--writerfilter/qa/cppunittests/qname/makefile.mk78
-rw-r--r--writerfilter/qa/cppunittests/qname/testQName.cxx7537
-rw-r--r--writerfilter/qa/cppunittests/sl/export.map34
-rw-r--r--writerfilter/qa/cppunittests/sl/helloworld.odt.flat.xml12
-rw-r--r--writerfilter/qa/cppunittests/sl/makefile.mk75
-rw-r--r--writerfilter/qa/cppunittests/sl/testOD_SL.cxx121
-rw-r--r--writerfilter/qa/cppunittests/xxml/export.map34
-rw-r--r--writerfilter/qa/cppunittests/xxml/makefile.mk77
-rw-r--r--writerfilter/qa/cppunittests/xxml/test.xml2
-rw-r--r--writerfilter/qa/cppunittests/xxml/testXXML.cxx187
-rw-r--r--writerfilter/qa/documents/Bookmark1.docbin0 -> 24576 bytes
-rw-r--r--writerfilter/qa/documents/Bookmark1.docxbin0 -> 10729 bytes
-rw-r--r--writerfilter/qa/documents/CellAlignment.docbin0 -> 26624 bytes
-rw-r--r--writerfilter/qa/documents/Footnote.docbin0 -> 24064 bytes
-rw-r--r--writerfilter/qa/documents/Footnote.docxbin0 -> 11742 bytes
-rw-r--r--writerfilter/qa/documents/HeaderFooter.docbin0 -> 23040 bytes
-rw-r--r--writerfilter/qa/documents/HeaderFooter.docxbin0 -> 12913 bytes
-rw-r--r--writerfilter/qa/documents/IndentedTable.docbin0 -> 27136 bytes
-rw-r--r--writerfilter/qa/documents/IndentedTable1.docxbin0 -> 10667 bytes
-rw-r--r--writerfilter/qa/documents/MergedTable.docbin0 -> 24576 bytes
-rw-r--r--writerfilter/qa/documents/MergedTable.docxbin0 -> 10530 bytes
-rw-r--r--writerfilter/qa/documents/MergedTable_3_3.docbin0 -> 24576 bytes
-rw-r--r--writerfilter/qa/documents/MergedTable_3_3.docxbin0 -> 10431 bytes
-rw-r--r--writerfilter/qa/documents/MultiMergedTable.docxbin0 -> 10641 bytes
-rw-r--r--writerfilter/qa/documents/MultiWrapping1.docxbin0 -> 21123 bytes
-rw-r--r--writerfilter/qa/documents/Paragraph with footnote.docbin0 -> 24064 bytes
-rw-r--r--writerfilter/qa/documents/Paragraph with footnote.docxbin0 -> 13217 bytes
-rw-r--r--writerfilter/qa/documents/Picture1.docxbin0 -> 82050 bytes
-rw-r--r--writerfilter/qa/documents/RedlineTest.docxbin0 -> 10322 bytes
-rw-r--r--writerfilter/qa/documents/RowHeight.docbin0 -> 27648 bytes
-rw-r--r--writerfilter/qa/documents/RowHeight.docxbin0 -> 10504 bytes
-rw-r--r--writerfilter/qa/documents/StandardFontAlbertus.docbin0 -> 24064 bytes
-rw-r--r--writerfilter/qa/documents/Table5CellBorders.docbin0 -> 24064 bytes
-rw-r--r--writerfilter/qa/documents/Table5CellBorders.docxbin0 -> 10420 bytes
-rw-r--r--writerfilter/qa/documents/TableDifferentColumns.docbin0 -> 24064 bytes
-rw-r--r--writerfilter/qa/documents/TableDifferentColumns.docxbin0 -> 10440 bytes
-rw-r--r--writerfilter/qa/documents/TablePreferredWidth.docbin0 -> 24576 bytes
-rw-r--r--writerfilter/qa/documents/TablePreferredWidth.docxbin0 -> 10393 bytes
-rw-r--r--writerfilter/qa/documents/TableRowProperties.docbin0 -> 25600 bytes
-rw-r--r--writerfilter/qa/documents/TableRowProperties.docxbin0 -> 10622 bytes
-rw-r--r--writerfilter/qa/documents/VertAlign1.docbin0 -> 24576 bytes
-rw-r--r--writerfilter/qa/documents/WordOLE.docxbin0 -> 17324 bytes
-rw-r--r--writerfilter/qa/documents/align1.docbin0 -> 24576 bytes
-rw-r--r--writerfilter/qa/documents/bookmark2.docbin0 -> 24576 bytes
-rw-r--r--writerfilter/qa/documents/docx/numbering/num-1.docxbin0 -> 11288 bytes
-rw-r--r--writerfilter/qa/documents/docx/pictures/Word DocumentOffice 2007 Format Sample6.docxbin0 -> 302738 bytes
-rw-r--r--writerfilter/qa/documents/docx/pictures/i97645 New example.docxbin0 -> 102969 bytes
-rw-r--r--writerfilter/qa/documents/docx/pictures/test-image.docxbin0 -> 24026 bytes
-rw-r--r--writerfilter/qa/documents/docx/pictures/test-image1.docxbin0 -> 61174 bytes
-rw-r--r--writerfilter/qa/documents/docx/pictures/test.docxbin0 -> 22007 bytes
-rw-r--r--writerfilter/qa/documents/docx/redlines/test-review-brk.docxbin0 -> 10621 bytes
-rw-r--r--writerfilter/qa/documents/docx/redlines/test-review-para.docxbin0 -> 10682 bytes
-rw-r--r--writerfilter/qa/documents/docx/redlines/test-review-stack.docxbin0 -> 10598 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/Table in B2.docxbin0 -> 10353 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/nested-tables.docxbin0 -> 11079 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/nested-tables2.docxbin0 -> 10521 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/nested-tables3.docxbin0 -> 11482 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/nested-tables4.docxbin0 -> 13956 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/nested-tables5.docxbin0 -> 10761 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/parentinvguid.docxbin0 -> 139481 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/table in A1.docxbin0 -> 10340 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/table-styles.docxbin0 -> 13859 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/test-grid.docxbin0 -> 10978 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/test-paras.docxbin0 -> 13586 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/test-simple.docxbin0 -> 10527 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/two-tables.docxbin0 -> 10619 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/updatejpegprocessing.docxbin0 -> 24439 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/~$sted-tables3.docxbin0 -> 162 bytes
-rw-r--r--writerfilter/qa/documents/docx/test-page-format.docxbin0 -> 20846 bytes
-rwxr-xr-xwriterfilter/qa/documents/fields.docbin0 -> 34816 bytes
-rwxr-xr-xwriterfilter/qa/documents/fields.docx1
-rw-r--r--writerfilter/qa/documents/multimerge2.docx2
-rw-r--r--writerfilter/qa/documents/runProperties.docbin0 -> 25600 bytes
-rwxr-xr-xwriterfilter/qa/documents/runProperties.docxbin0 -> 11239 bytes
-rw-r--r--writerfilter/qa/documents/table_4_4.docbin0 -> 25600 bytes
-rw-r--r--writerfilter/qa/documents/table_4_4.docxbin0 -> 11131 bytes
-rw-r--r--writerfilter/qa/documents/table_style.docxbin0 -> 12649 bytes
-rw-r--r--writerfilter/source/dmapper/BorderHandler.cxx207
-rw-r--r--writerfilter/source/dmapper/BorderHandler.hxx84
-rw-r--r--writerfilter/source/dmapper/CellColorHandler.cxx239
-rw-r--r--writerfilter/source/dmapper/CellColorHandler.hxx65
-rw-r--r--writerfilter/source/dmapper/CellMarginHandler.cxx123
-rw-r--r--writerfilter/source/dmapper/CellMarginHandler.hxx70
-rw-r--r--writerfilter/source/dmapper/ConversionHelper.cxx707
-rw-r--r--writerfilter/source/dmapper/ConversionHelper.hxx68
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx4983
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.cxx850
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.hxx106
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.cxx530
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.hxx126
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx3817
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx606
-rw-r--r--writerfilter/source/dmapper/FFData.xml58
-rw-r--r--writerfilter/source/dmapper/FFDataHandler.cxx486
-rw-r--r--writerfilter/source/dmapper/FFDataHandler.hxx164
-rw-r--r--writerfilter/source/dmapper/FieldTypes.hxx302
-rw-r--r--writerfilter/source/dmapper/FontTable.cxx679
-rw-r--r--writerfilter/source/dmapper/FontTable.hxx112
-rw-r--r--writerfilter/source/dmapper/FormControlHelper.cxx314
-rw-r--r--writerfilter/source/dmapper/FormControlHelper.hxx67
-rw-r--r--writerfilter/source/dmapper/GraphicHelpers.cxx226
-rw-r--r--writerfilter/source/dmapper/GraphicHelpers.hxx51
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx1840
-rw-r--r--writerfilter/source/dmapper/GraphicImport.hxx128
-rw-r--r--writerfilter/source/dmapper/MeasureHandler.cxx135
-rw-r--r--writerfilter/source/dmapper/MeasureHandler.hxx69
-rw-r--r--writerfilter/source/dmapper/ModelEventListener.cxx99
-rw-r--r--writerfilter/source/dmapper/ModelEventListener.hxx54
-rw-r--r--writerfilter/source/dmapper/NumberingManager.cxx1020
-rw-r--r--writerfilter/source/dmapper/NumberingManager.hxx228
-rw-r--r--writerfilter/source/dmapper/OLEHandler.cxx249
-rw-r--r--writerfilter/source/dmapper/OLEHandler.hxx108
-rw-r--r--writerfilter/source/dmapper/PageBordersHandler.cxx124
-rw-r--r--writerfilter/source/dmapper/PageBordersHandler.hxx60
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx352
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx306
-rw-r--r--writerfilter/source/dmapper/PropertyMap.cxx1244
-rw-r--r--writerfilter/source/dmapper/PropertyMap.hxx562
-rw-r--r--writerfilter/source/dmapper/PropertyMapHelper.cxx134
-rw-r--r--writerfilter/source/dmapper/PropertyMapHelper.hxx53
-rw-r--r--writerfilter/source/dmapper/SectionColumnHandler.cxx121
-rw-r--r--writerfilter/source/dmapper/SectionColumnHandler.hxx79
-rw-r--r--writerfilter/source/dmapper/SettingsTable.cxx277
-rw-r--r--writerfilter/source/dmapper/SettingsTable.hxx85
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx1451
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.hxx168
-rw-r--r--writerfilter/source/dmapper/TDefTableHandler.cxx326
-rw-r--r--writerfilter/source/dmapper/TDefTableHandler.hxx88
-rw-r--r--writerfilter/source/dmapper/TablePropertiesHandler.cxx248
-rw-r--r--writerfilter/source/dmapper/TablePropertiesHandler.hxx86
-rw-r--r--writerfilter/source/dmapper/TblStylePrHandler.cxx90
-rw-r--r--writerfilter/source/dmapper/TblStylePrHandler.hxx67
-rw-r--r--writerfilter/source/dmapper/ThemeTable.cxx230
-rw-r--r--writerfilter/source/dmapper/ThemeTable.hxx65
-rw-r--r--writerfilter/source/dmapper/dmapperLoggers.cxx41
-rw-r--r--writerfilter/source/dmapper/dmapperLoggers.hxx46
-rw-r--r--writerfilter/source/dmapper/genclass.xsl707
-rw-r--r--writerfilter/source/dmapper/makefile.mk76
-rw-r--r--writerfilter/source/doctok/Dff.cxx521
-rw-r--r--writerfilter/source/doctok/Dff.hxx156
-rw-r--r--writerfilter/source/doctok/DffImpl.cxx521
-rw-r--r--writerfilter/source/doctok/PLCF.hxx198
-rw-r--r--writerfilter/source/doctok/WW8Annotation.cxx40
-rw-r--r--writerfilter/source/doctok/WW8BinTable.hxx91
-rw-r--r--writerfilter/source/doctok/WW8BinTableImpl.cxx109
-rw-r--r--writerfilter/source/doctok/WW8BinTableImpl.hxx101
-rw-r--r--writerfilter/source/doctok/WW8Clx.cxx87
-rw-r--r--writerfilter/source/doctok/WW8Clx.hxx94
-rw-r--r--writerfilter/source/doctok/WW8CpAndFc.cxx133
-rw-r--r--writerfilter/source/doctok/WW8CpAndFc.hxx361
-rw-r--r--writerfilter/source/doctok/WW8DocumentImpl.cxx2369
-rw-r--r--writerfilter/source/doctok/WW8DocumentImpl.hxx849
-rw-r--r--writerfilter/source/doctok/WW8FKP.hxx132
-rw-r--r--writerfilter/source/doctok/WW8FKPImpl.cxx243
-rw-r--r--writerfilter/source/doctok/WW8FKPImpl.hxx215
-rw-r--r--writerfilter/source/doctok/WW8FontTable.cxx116
-rw-r--r--writerfilter/source/doctok/WW8LFOTable.cxx131
-rw-r--r--writerfilter/source/doctok/WW8ListTable.cxx153
-rw-r--r--writerfilter/source/doctok/WW8OutputWithDepth.cxx52
-rw-r--r--writerfilter/source/doctok/WW8OutputWithDepth.hxx56
-rw-r--r--writerfilter/source/doctok/WW8Picture.cxx211
-rw-r--r--writerfilter/source/doctok/WW8PieceTable.hxx178
-rw-r--r--writerfilter/source/doctok/WW8PieceTableImpl.cxx302
-rw-r--r--writerfilter/source/doctok/WW8PieceTableImpl.hxx76
-rw-r--r--writerfilter/source/doctok/WW8PropertySetImpl.cxx435
-rw-r--r--writerfilter/source/doctok/WW8PropertySetImpl.hxx148
-rw-r--r--writerfilter/source/doctok/WW8ResourceModelImpl.cxx502
-rw-r--r--writerfilter/source/doctok/WW8ResourceModelImpl.hxx317
-rw-r--r--writerfilter/source/doctok/WW8StreamImpl.cxx210
-rw-r--r--writerfilter/source/doctok/WW8StreamImpl.hxx66
-rw-r--r--writerfilter/source/doctok/WW8StructBase.cxx202
-rw-r--r--writerfilter/source/doctok/WW8StructBase.hxx319
-rw-r--r--writerfilter/source/doctok/WW8Sttbf.cxx171
-rw-r--r--writerfilter/source/doctok/WW8Sttbf.hxx135
-rw-r--r--writerfilter/source/doctok/WW8StyleSheet.cxx209
-rw-r--r--writerfilter/source/doctok/WW8Table.cxx207
-rw-r--r--writerfilter/source/doctok/WW8Text.cxx79
-rw-r--r--writerfilter/source/doctok/WW8inc.xsl106
-rw-r--r--writerfilter/source/doctok/WW8sprms.xsl66
-rw-r--r--writerfilter/source/doctok/WW8xmi.xsl184
-rw-r--r--writerfilter/source/doctok/XNoteHelper.hxx144
-rw-r--r--writerfilter/source/doctok/XNoteHelperImpl.hxx171
-rw-r--r--writerfilter/source/doctok/analyzer.xsl39
-rwxr-xr-xwriterfilter/source/doctok/cleanupresources5
-rw-r--r--writerfilter/source/doctok/compactxmi.xsl262
-rw-r--r--writerfilter/source/doctok/doctokLoggers.hxx45
-rw-r--r--writerfilter/source/doctok/dopbase.xml91
-rw-r--r--writerfilter/source/doctok/escher.html207
-rw-r--r--writerfilter/source/doctok/escherdoc.xsl145
-rw-r--r--writerfilter/source/doctok/genqnametostr33
-rw-r--r--writerfilter/source/doctok/makefile.mk155
-rw-r--r--writerfilter/source/doctok/qnametostr.xsl41
-rw-r--r--writerfilter/source/doctok/qnametostrfooter2
-rw-r--r--writerfilter/source/doctok/qnametostrheader36
-rwxr-xr-xwriterfilter/source/doctok/replacesprmids517
-rw-r--r--writerfilter/source/doctok/resourceidmapper.xsl125
-rw-r--r--writerfilter/source/doctok/resourceidmapperback.xsl125
-rw-r--r--writerfilter/source/doctok/resourceids.xsl205
-rw-r--r--writerfilter/source/doctok/resources.xmi63712
-rw-r--r--writerfilter/source/doctok/resources.xsl917
-rw-r--r--writerfilter/source/doctok/resourcesimpl.xsl855
-rw-r--r--writerfilter/source/doctok/resourcetools.xsl566
-rw-r--r--writerfilter/source/doctok/sprmcodetostr.xsl39
-rw-r--r--writerfilter/source/doctok/sprmids.xsl82
-rw-r--r--writerfilter/source/doctok/tidyxmi.xsl120
-rw-r--r--writerfilter/source/doctok/xmigen.el126
-rw-r--r--writerfilter/source/doctok/xmigen.xsl577
-rw-r--r--writerfilter/source/doctok/xmistat.xsl37
-rwxr-xr-xwriterfilter/source/doctok/xmitocpp34
-rw-r--r--writerfilter/source/filter/ImportFilter.cxx274
-rw-r--r--writerfilter/source/filter/RtfFilter.cxx146
-rw-r--r--writerfilter/source/filter/RtfFilter.hxx104
-rw-r--r--writerfilter/source/filter/WriterFilter.cxx83
-rw-r--r--writerfilter/source/filter/WriterFilter.hxx107
-rw-r--r--writerfilter/source/filter/WriterFilterDetection.cxx199
-rw-r--r--writerfilter/source/filter/WriterFilterDetection.hxx79
-rw-r--r--writerfilter/source/filter/makefile.mk52
-rw-r--r--writerfilter/source/odiapi/qname/resource/office2003/WordprocessingML Schemas/wordnetaux.xsdbin0 -> 48598 bytes
-rw-r--r--writerfilter/source/odiapi/qname/resource/office2003/WordprocessingML Schemas/xsdlib.xsdbin0 -> 7918 bytes
-rw-r--r--writerfilter/source/odiapi/qname/resource/rdfxml.rng453
-rw-r--r--writerfilter/source/odiapi/qname/resource/rng.rng331
-rw-r--r--writerfilter/source/odiapi/qname/resource/rtf.rtfs1385
-rw-r--r--writerfilter/source/ooxml/Handler.cxx351
-rw-r--r--writerfilter/source/ooxml/Handler.hxx148
-rw-r--r--writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx89
-rw-r--r--writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx58
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.cxx423
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.hxx120
-rw-r--r--writerfilter/source/ooxml/OOXMLFactory.cxx343
-rw-r--r--writerfilter/source/ooxml/OOXMLFactory.hxx173
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx2389
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.hxx647
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx233
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx120
-rw-r--r--writerfilter/source/ooxml/OOXMLFastHelper.hxx256
-rw-r--r--writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx122
-rw-r--r--writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx68
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.cxx328
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.hxx121
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySet.hxx85
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx795
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx292
-rw-r--r--writerfilter/source/ooxml/OOXMLStreamImpl.cxx322
-rw-r--r--writerfilter/source/ooxml/OOXMLStreamImpl.hxx94
-rw-r--r--writerfilter/source/ooxml/README.efforts131
-rw-r--r--writerfilter/source/ooxml/RefAndPointer.hxx122
-rw-r--r--writerfilter/source/ooxml/analyzemodel.xsl103
-rw-r--r--writerfilter/source/ooxml/analyzestage2.xsl32
-rw-r--r--writerfilter/source/ooxml/analyzestage3.xsl40
-rw-r--r--writerfilter/source/ooxml/attrsprm.xsl142
-rw-r--r--writerfilter/source/ooxml/checkmodel.xsl167
-rw-r--r--writerfilter/source/ooxml/dummyannotate.xsl845
-rw-r--r--writerfilter/source/ooxml/effort.xsl39
-rwxr-xr-xwriterfilter/source/ooxml/efforts.sh3
-rw-r--r--writerfilter/source/ooxml/factory.xsl89
-rw-r--r--writerfilter/source/ooxml/factory_ns.xsl161
-rw-r--r--writerfilter/source/ooxml/factory_values.xsl100
-rw-r--r--writerfilter/source/ooxml/factoryimpl.xsl386
-rw-r--r--writerfilter/source/ooxml/factoryimpl_ns.xsl842
-rw-r--r--writerfilter/source/ooxml/factoryimpl_values.xsl98
-rw-r--r--writerfilter/source/ooxml/factoryinc.xsl112
-rw-r--r--writerfilter/source/ooxml/factorytools.xsl345
-rw-r--r--writerfilter/source/ooxml/fasttokens.xsl113
-rw-r--r--writerfilter/source/ooxml/gperffasttokenhandler.xsl96
-rw-r--r--writerfilter/source/ooxml/makefile.mk256
-rw-r--r--writerfilter/source/ooxml/model.xml23466
-rwxr-xr-xwriterfilter/source/ooxml/modelcleanup3
-rw-r--r--writerfilter/source/ooxml/modelcleanup.xsl304
-rw-r--r--writerfilter/source/ooxml/modelpreprocess.xsl225
-rw-r--r--writerfilter/source/ooxml/namespaceids.xsl100
-rw-r--r--writerfilter/source/ooxml/nostatus.xsl20
-rw-r--r--writerfilter/source/ooxml/ooxmlLoggers.hxx44
-rw-r--r--writerfilter/source/ooxml/qnametostr.xsl132
-rw-r--r--writerfilter/source/ooxml/resourceids.xsl105
-rwxr-xr-xwriterfilter/source/ooxml/rngtocxx32
-rw-r--r--writerfilter/source/ooxml/status.sh24
-rw-r--r--writerfilter/source/ooxml/todo.xsl29
-rw-r--r--writerfilter/source/ooxml/tokenxmlfooter1
-rw-r--r--writerfilter/source/ooxml/tokenxmlheader1
-rw-r--r--writerfilter/source/resourcemodel/Protocol.cxx221
-rw-r--r--writerfilter/source/resourcemodel/ResourceModelHelper.cxx51
-rw-r--r--writerfilter/source/resourcemodel/TagLogger.cxx470
-rw-r--r--writerfilter/source/resourcemodel/WW8Analyzer.cxx219
-rw-r--r--writerfilter/source/resourcemodel/WW8Analyzer.hxx102
-rw-r--r--writerfilter/source/resourcemodel/analyzerfooter4
-rw-r--r--writerfilter/source/resourcemodel/analyzerheader36
-rwxr-xr-xwriterfilter/source/resourcemodel/genqnametostr35
-rw-r--r--writerfilter/source/resourcemodel/makefile.mk198
-rw-r--r--writerfilter/source/resourcemodel/namespace_preprocess.pl65
-rw-r--r--writerfilter/source/resourcemodel/qnametostrfooter24
-rw-r--r--writerfilter/source/resourcemodel/qnametostrheader57
-rw-r--r--writerfilter/source/resourcemodel/resourcemodel.cxx566
-rw-r--r--writerfilter/source/resourcemodel/resourcemodel.hxx113
-rwxr-xr-xwriterfilter/source/resourcemodel/setdebugflags3
-rw-r--r--writerfilter/source/resourcemodel/sprmcodetostrfooter1
-rw-r--r--writerfilter/source/resourcemodel/sprmcodetostrheader50
-rw-r--r--writerfilter/source/resourcemodel/util.cxx430
-rw-r--r--writerfilter/source/rtftok/FlexLexer.h151
-rw-r--r--writerfilter/source/rtftok/RTFParseException.cxx35
-rw-r--r--writerfilter/source/rtftok/RTFScanner.lex333
-rw-r--r--writerfilter/source/rtftok/RTFScanner.skl1536
-rw-r--r--writerfilter/source/rtftok/makefile.mk82
-rw-r--r--writerfilter/unocomponent/component.cxx84
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.cxx296
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.hxx73
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokTestService.cxx152
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokTestService.hxx73
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/makefile.mk44
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.cxx294
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.hxx73
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.cxx185
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.hxx73
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/makefile.mk58
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.cxx458
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.hxx73
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/XMLScanner.cxx336
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/XMLScanner.hxx73
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/makefile.mk45
-rw-r--r--writerfilter/unocomponent/exports.dxp3
-rw-r--r--writerfilter/unocomponent/makefile.mk90
-rw-r--r--writerfilter/util/makefile.mk78
-rw-r--r--writerperfect/prj/build.lst8
-rw-r--r--writerperfect/prj/d.lst4
-rw-r--r--writerperfect/source/filter/DocumentCollector.cxx1312
-rw-r--r--writerperfect/source/filter/DocumentCollector.hxx251
-rw-r--r--writerperfect/source/filter/DocumentElement.cxx108
-rw-r--r--writerperfect/source/filter/DocumentElement.hxx100
-rw-r--r--writerperfect/source/filter/DocumentHandler.cxx99
-rw-r--r--writerperfect/source/filter/DocumentHandler.hxx36
-rw-r--r--writerperfect/source/filter/DocumentHandlerInterface.hxx45
-rw-r--r--writerperfect/source/filter/FilterInternal.hxx40
-rw-r--r--writerperfect/source/filter/FontStyle.cxx53
-rw-r--r--writerperfect/source/filter/FontStyle.hxx50
-rw-r--r--writerperfect/source/filter/GraphicsStyle.cxx40
-rw-r--r--writerperfect/source/filter/GraphicsStyle.hxx40
-rw-r--r--writerperfect/source/filter/InternalHandler.cxx54
-rw-r--r--writerperfect/source/filter/InternalHandler.hxx46
-rw-r--r--writerperfect/source/filter/ListStyle.cxx185
-rw-r--r--writerperfect/source/filter/ListStyle.hxx99
-rw-r--r--writerperfect/source/filter/OdgExporter.cxx648
-rw-r--r--writerperfect/source/filter/OdgExporter.hxx90
-rw-r--r--writerperfect/source/filter/PageSpan.cxx276
-rw-r--r--writerperfect/source/filter/PageSpan.hxx63
-rw-r--r--writerperfect/source/filter/SectionStyle.cxx89
-rw-r--r--writerperfect/source/filter/SectionStyle.hxx49
-rw-r--r--writerperfect/source/filter/Style.hxx60
-rw-r--r--writerperfect/source/filter/TableStyle.cxx167
-rw-r--r--writerperfect/source/filter/TableStyle.hxx85
-rw-r--r--writerperfect/source/filter/TextRunStyle.cxx179
-rw-r--r--writerperfect/source/filter/TextRunStyle.hxx65
-rw-r--r--writerperfect/source/filter/WriterProperties.hxx38
-rw-r--r--writerperfect/source/filter/makefile.mk38
-rw-r--r--writerperfect/source/stream/WPXSvStream.cxx172
-rw-r--r--writerperfect/source/stream/WPXSvStream.h49
-rw-r--r--writerperfect/source/stream/makefile.mk24
-rw-r--r--writerperfect/source/wpdimp/WordPerfectCollector.cxx62
-rw-r--r--writerperfect/source/wpdimp/WordPerfectCollector.hxx48
-rw-r--r--writerperfect/source/wpdimp/WordPerfectImportFilter.cxx434
-rw-r--r--writerperfect/source/wpdimp/WordPerfectImportFilter.hxx178
-rw-r--r--writerperfect/source/wpdimp/makefile.mk29
-rw-r--r--writerperfect/source/wpdimp/wpft_genericfilter.cxx124
-rw-r--r--writerperfect/source/wpgimp/WPGImportFilter.cxx285
-rw-r--r--writerperfect/source/wpgimp/WPGImportFilter.hxx117
-rw-r--r--writerperfect/source/wpgimp/makefile.mk24
-rw-r--r--writerperfect/source/wpgimp/wpgimport_genericfilter.cxx102
-rw-r--r--writerperfect/source/wpsimp/MSWorksCollector.cxx51
-rw-r--r--writerperfect/source/wpsimp/MSWorksCollector.hxx45
-rw-r--r--writerperfect/source/wpsimp/MSWorksImportFilter.cxx280
-rw-r--r--writerperfect/source/wpsimp/MSWorksImportFilter.hxx118
-rw-r--r--writerperfect/source/wpsimp/makefile.mk29
-rw-r--r--writerperfect/source/wpsimp/msworks_genericfilter.cxx102
-rw-r--r--writerperfect/util/makefile.mk121
-rw-r--r--x11_extensions/inc/Xrandr.h151
-rw-r--r--x11_extensions/inc/Xrender.h528
-rw-r--r--x11_extensions/inc/randr.h74
-rw-r--r--x11_extensions/inc/randrproto.h209
-rw-r--r--x11_extensions/inc/render.h189
-rw-r--r--x11_extensions/inc/renderproto.h663
-rw-r--r--x11_extensions/inc/shape.h155
-rw-r--r--x11_extensions/inc/shapeconst.h55
-rw-r--r--x11_extensions/prj/build.lst3
-rw-r--r--x11_extensions/prj/d.lst5
-rw-r--r--xmerge/build.xml88
-rw-r--r--xmerge/inc/makefile.mk47
-rw-r--r--xmerge/inc/pch/precompiled_xmerge.cxx31
-rw-r--r--xmerge/inc/pch/precompiled_xmerge.hxx34
-rw-r--r--xmerge/prj/build.lst11
-rw-r--r--xmerge/prj/d.lst11
-rw-r--r--xmerge/source/activesync/BIN/xmergesync.dllbin0 -> 86016 bytes
-rw-r--r--xmerge/source/activesync/XMergeFactory.cpp92
-rw-r--r--xmerge/source/activesync/XMergeFactory.h37
-rw-r--r--xmerge/source/activesync/XMergeFilter.cpp498
-rw-r--r--xmerge/source/activesync/XMergeFilter.h76
-rw-r--r--xmerge/source/activesync/XMergeSync.cpp839
-rw-r--r--xmerge/source/activesync/XMergeSync.def9
-rw-r--r--xmerge/source/activesync/XMergeSync.dsp143
-rw-r--r--xmerge/source/activesync/XMergeSync.dsw33
-rw-r--r--xmerge/source/activesync/XMergeSync.h32
-rw-r--r--xmerge/source/activesync/XMergeSync.rc80
-rw-r--r--xmerge/source/activesync/exports.map12
-rw-r--r--xmerge/source/activesync/guids.txt60
-rw-r--r--xmerge/source/activesync/makefile.mk72
-rw-r--r--xmerge/source/activesync/resource.h20
-rw-r--r--xmerge/source/activesync/stdafx.cpp9
-rw-r--r--xmerge/source/activesync/stdafx.h30
-rw-r--r--xmerge/source/aportisdoc/build.xml76
-rw-r--r--xmerge/source/aportisdoc/converter.xml45
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java93
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java69
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java301
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java213
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java312
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java97
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java531
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java141
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html239
-rw-r--r--xmerge/source/aportisdoc/makefile.mk35
-rw-r--r--xmerge/source/bridge/antcall.txt19
-rw-r--r--xmerge/source/bridge/build.xml81
-rw-r--r--xmerge/source/bridge/java/XMergeBridge.java715
-rw-r--r--xmerge/source/bridge/makefile.mk35
-rw-r--r--xmerge/source/bridge/manifest.mf3
-rw-r--r--xmerge/source/htmlsoff/build.xml67
-rw-r--r--xmerge/source/htmlsoff/converter.xml52
-rw-r--r--xmerge/source/htmlsoff/htmltosoff.xsl176
-rw-r--r--xmerge/source/htmlsoff/makefile.mk35
-rw-r--r--xmerge/source/htmlsoff/package.html67
-rw-r--r--xmerge/source/htmlsoff/sofftohtml.xsl118
-rw-r--r--xmerge/source/inc/antbuild.properties12
-rw-r--r--xmerge/source/inc/antbuild.xml2
-rw-r--r--xmerge/source/minicalc/build.xml76
-rw-r--r--xmerge/source/minicalc/converter.xml45
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java113
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java45
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java545
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java744
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java582
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java129
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java138
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java141
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html53
-rw-r--r--xmerge/source/minicalc/makefile.mk33
-rw-r--r--xmerge/source/palmtests/README50
-rw-r--r--xmerge/source/palmtests/bin/README6
-rwxr-xr-xxmerge/source/palmtests/bin/rd24
-rwxr-xr-xxmerge/source/palmtests/bin/spose108
-rwxr-xr-xxmerge/source/palmtests/bin/verify_sane.pl110
-rwxr-xr-xxmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl257
-rwxr-xr-xxmerge/source/palmtests/qa-wrapper/bin/qa_test_driver.pl846
-rwxr-xr-xxmerge/source/palmtests/qa-wrapper/bin/run-convtest538
-rw-r--r--xmerge/source/palmtests/qa-wrapper/env/master.env85
-rw-r--r--xmerge/source/palmtests/qa-wrapper/lists/master.list55
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_animatedgif.pdb6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_bolddoc.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_bookmarks.pdb10
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_bulletorderedlist.pdb8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_emptydoc.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_firstlineindent.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_fontsize.pdb6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_hyperlink.pdb6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_justified.pdb4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_linebreaks.pdb4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_linespacing.pdb12
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_numberorderedlist.pdb9
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_pagebreak.pdb4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_paragraph.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple01.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple02.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple03.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple04.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple05.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_standard.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_subscript.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_superscript.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_symbols.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_tab.pdb8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_table.pdb2
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_textspan.pdb3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_unorderedlist.pdb20
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/a_wordwrap.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet1.pdb2
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet2.pdb2
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet3.pdb2
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet1.pdb2
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet2.pdb2
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet3.pdb2
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet1.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet2.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet3.pdb1
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd34
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_animatedgif.sxwbin0 -> 52952 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_bolddoc.sxwbin0 -> 5500 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_bookmarks.sxwbin0 -> 6047 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_bulletorderedlist.sxwbin0 -> 6347 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_emptydoc.sxwbin0 -> 5701 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_firstlineindent.sxwbin0 -> 5519 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_fontsize.sxwbin0 -> 6130 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_heading.sxwbin0 -> 5518 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_heading1.sxwbin0 -> 5640 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_heading2.sxwbin0 -> 5964 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_hyperlink.sxwbin0 -> 5514 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_justified.sxwbin0 -> 6088 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_linebreaks.sxwbin0 -> 6269 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_linespacing.sxwbin0 -> 5618 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_numberorderedlist.sxwbin0 -> 6188 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_pagebreak.sxwbin0 -> 5534 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_paragraph.sxwbin0 -> 5914 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_simple01.sxwbin0 -> 5823 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_simple02.sxwbin0 -> 5821 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_simple03.sxwbin0 -> 5817 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_simple04.sxwbin0 -> 5792 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_simple05.sxwbin0 -> 5791 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_standard.sxwbin0 -> 5797 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_subscript.sxwbin0 -> 5798 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_superscript.sxwbin0 -> 5799 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_symbols.sxwbin0 -> 4916 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_tab.sxwbin0 -> 5731 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_table.sxwbin0 -> 6011 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_textspan.sxwbin0 -> 5958 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_unorderedlist.sxwbin0 -> 6817 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/a_wordwrap.sxwbin0 -> 5363 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_addition.sxcbin0 -> 5829 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_alignment.sxcbin0 -> 6383 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_backwardrange.sxcbin0 -> 5995 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_basic.sxcbin0 -> 5830 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_boolean.sxcbin0 -> 6066 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_cellcurrencyalue.sxcbin0 -> 6776 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_cellpercentvalue.sxcbin0 -> 6318 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_cellstringvalue.sxcbin0 -> 6009 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_columnswidth.sxcbin0 -> 6127 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_cyclic.sxcbin0 -> 6005 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_dividefloating.sxcbin0 -> 6315 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_forwardrange.sxcbin0 -> 6058 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_insertimage.sxcbin0 -> 40476 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_invalidcellref.sxcbin0 -> 5838 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_largerange.sxcbin0 -> 6306 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_listrange.sxcbin0 -> 6162 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_mathematical.sxcbin0 -> 6026 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_protection.sxcbin0 -> 6839 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_sheetreference.sxcbin0 -> 6173 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_simple01.sxcbin0 -> 5080 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_simple02.sxcbin0 -> 4962 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_simple03.sxcbin0 -> 4995 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_simple04.sxcbin0 -> 5007 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_smallrange.sxcbin0 -> 5924 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_styles.sxcbin0 -> 6531 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/c_textimage.sxcbin0 -> 40702 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod228
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod168
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod837
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod143
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/form.mod308
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod90
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod50
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd54
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.mod234
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/script.mod51
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod49
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/style.mod391
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/table.mod493
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/text.mod1099
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_animatedgif.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_bolddoc.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_bookmarks.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_bulletorderedlist.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_emptydoc-mod.infile9
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_emptydoc.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_firstlineindent.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_fontsize.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_heading.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_heading1.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_heading2.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_hyperlink.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_justified.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_linebreaks.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_linespacing.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_numberorderedlist.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_pagebreak.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_paragraph.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_simple01.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_simple02.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_simple03.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_simple04.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_simple05.infile5
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_standard.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_subscript.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_superscript.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_symbols.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_tab.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_table.infile5
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_textspan.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_unorderedlist.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/a_wordwrap.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_addition01-mod.infile5
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_alignment.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_backwardrange-mod.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_basic-mod.infile5
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_bob-mod.infile5
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_boolean-mod.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_cellcurrencyvalue.infile5
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_cellpercentvalue-mod.infile8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_cellstringvalue-mod.infile10
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_columnswidth-mod.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_cyclic-mod.infile12
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_dividefloating-mod.infile8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_forwardrange-mod.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_insertimage.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_insertrow-mod.infile13
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_invalidcellref-mod.infile10
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_largerange-mod.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_listrange-mod.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_mathematical-mod.infile10
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_multi_boolean.infile5
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_protection-mod01.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_sheetreference-mod.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_simple01-mod.infile13
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_simple02-mod.infile13
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_simple03-mod.infile22
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_simple04-mod.infile14
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_smallrange-mod.infile6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_styles.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/c_textimage.infile12
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/empty01.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/hyperlink01.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/image01.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/simple01.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/simple02.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/simple03.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/simple04.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/simple05.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/table01.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/table02.infile3
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/table03.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/table04.infile4
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_animatedgif.sxwbin0 -> 53136 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_bolddoc.sxwbin0 -> 5664 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_bookmarks.sxwbin0 -> 6227 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_bulletorderedlist.sxwbin0 -> 6347 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc-mod.sxwbin0 -> 5880 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc.sxwbin0 -> 5880 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_firstlineindent.sxwbin0 -> 5683 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_fontsize.sxwbin0 -> 6315 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_heading.sxwbin0 -> 5700 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_heading1.sxwbin0 -> 5819 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_heading2.sxwbin0 -> 6142 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_hyperlink.sxwbin0 -> 5673 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_justified.sxwbin0 -> 6269 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_linebreaks.sxwbin0 -> 6444 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_linespacing.sxwbin0 -> 5783 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_numberorderedlist.sxwbin0 -> 6366 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_pagebreak.sxwbin0 -> 5698 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_paragraph.sxwbin0 -> 6093 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_simple01.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_simple02.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_simple03.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_simple04.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_simple05.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_standard.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_subscript.sxwbin0 -> 5980 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_superscript.sxwbin0 -> 5981 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_symbols.sxwbin0 -> 5106 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_tab.sxwbin0 -> 5912 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_table.sxwbin0 -> 6181 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_textspan.sxwbin0 -> 6142 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_unorderedlist.sxwbin0 -> 6817 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/a_wordwrap.sxwbin0 -> 5524 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_addition.sxcbin0 -> 6020 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_alignment.sxcbin0 -> 6535 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_backwardrange.sxcbin0 -> 6204 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_basic.sxcbin0 -> 6020 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_boolean.sxcbin0 -> 6239 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_cellcurrencyalue.sxcbin0 -> 6776 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_cellpercentvalue.sxcbin0 -> 6495 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_cellstringvalue.sxcbin0 -> 6172 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_columnswidth.sxcbin0 -> 6287 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_cyclic.sxcbin0 -> 6005 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_dividefloating.sxcbin0 -> 6315 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_forwardrange.sxcbin0 -> 6259 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_insertimage.sxcbin0 -> 40702 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_insertrow.sxcbin0 -> 5157 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_invalidcellref.sxcbin0 -> 6035 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_largerange.sxcbin0 -> 6487 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_listrange.sxcbin0 -> 6370 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_mathematical.sxcbin0 -> 6351 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_multi_boolean.sxcbin0 -> 5338 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_protection.sxcbin0 -> 6839 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_sheetreference.sxcbin0 -> 6358 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_simple01.sxcbin0 -> 5176 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_simple02.sxcbin0 -> 4999 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_simple03.sxcbin0 -> 5044 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_simple04.sxcbin0 -> 5083 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_smallrange.sxcbin0 -> 6129 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_styles.sxcbin0 -> 6531 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/c_textimage.sxcbin0 -> 40702 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/empty01.sxwbin0 -> 5880 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/hyperlink01.sxwbin0 -> 6088 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/image01.sxwbin0 -> 53136 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/simple01.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/simple02.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/simple03.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/simple04.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/simple05.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/table01.sxwbin0 -> 6443 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/table02.sxwbin0 -> 6443 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/table03.sxwbin0 -> 6443 bytes
-rw-r--r--xmerge/source/palmtests/qa-wrapper/testcases/xml-orig/table04.sxwbin0 -> 6443 bytes
-rwxr-xr-xxmerge/source/palmtests/qa/bin/mysplit.pl58
-rwxr-xr-xxmerge/source/palmtests/qa/bin/tappen.pl61
-rwxr-xr-xxmerge/source/palmtests/qa/bin/template.pl55
-rwxr-xr-xxmerge/source/palmtests/qa/bin/test_driver.pl785
-rw-r--r--xmerge/source/palmtests/qa/comparator/OfficeZip.java241
-rw-r--r--xmerge/source/palmtests/qa/comparator/PDBDecoder.java135
-rw-r--r--xmerge/source/palmtests/qa/comparator/PDBHeader.java153
-rw-r--r--xmerge/source/palmtests/qa/comparator/PDBUtil.java100
-rw-r--r--xmerge/source/palmtests/qa/comparator/PalmDB.java348
-rw-r--r--xmerge/source/palmtests/qa/comparator/README10
-rw-r--r--xmerge/source/palmtests/qa/comparator/Record.java165
-rw-r--r--xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java94
-rw-r--r--xmerge/source/palmtests/qa/comparator/XmlDiff.java464
-rw-r--r--xmerge/source/palmtests/qa/comparator/XmlDiff.properties14
-rw-r--r--xmerge/source/palmtests/qa/comparator/XmlWrapper.java153
-rw-r--r--xmerge/source/palmtests/qa/comparator/XmlZipExtract.java144
-rw-r--r--xmerge/source/palmtests/qa/comparator/comparator.pl248
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd34
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/chart.mod228
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod168
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/drawing.mod837
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod143
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/form.mod308
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/meta.mod90
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod50
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/office.dtd54
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/office.mod234
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/script.mod51
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/settings.mod49
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/style.mod391
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/table.mod493
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/text.mod1099
-rw-r--r--xmerge/source/palmtests/qa/comparator/pdbcomparison.java542
-rw-r--r--xmerge/source/palmtests/qa/docs/Doc_descriptions.sxcbin0 -> 8347 bytes
-rw-r--r--xmerge/source/palmtests/qa/docs/Spreadsheet_descriptions.csv39
-rw-r--r--xmerge/source/palmtests/qa/docs/Spreadsheet_descriptions.sxcbin0 -> 5752 bytes
-rw-r--r--xmerge/source/palmtests/qa/lib/converterlib.pm1174
-rw-r--r--xmerge/source/palmtests/qa/palm-session/session8
-rw-r--r--xmerge/source/palmtests/qa/test_spec/convertor_test_spec.html2274
-rw-r--r--xmerge/source/pexcel/build.xml76
-rw-r--r--xmerge/source/pexcel/converter.xml45
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java113
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java130
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java67
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java438
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java289
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java129
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java130
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html43
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java61
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java116
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java115
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java125
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java136
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java136
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java107
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java157
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java94
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java96
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java226
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java70
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java384
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java120
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java286
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java257
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java139
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java93
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java218
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java138
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java142
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java124
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java41
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java115
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java154
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java539
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java319
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java271
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java152
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java561
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java41
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java204
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java62
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java73
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java42
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java85
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java81
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java151
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java203
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java497
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java559
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java118
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java40
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html42
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html47
-rw-r--r--xmerge/source/pexcel/makefile.mk35
-rw-r--r--xmerge/source/pocketword/build.xml76
-rw-r--r--xmerge/source/pocketword/converter.xml50
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java93
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java235
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java294
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java97
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java433
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java858
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java202
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java164
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java94
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java404
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html58
-rw-r--r--xmerge/source/pocketword/makefile.mk35
-rw-r--r--xmerge/source/regutil/makefile.mk48
-rw-r--r--xmerge/source/regutil/regutil.cpp104
-rw-r--r--xmerge/source/regutil/regutil.dsp96
-rw-r--r--xmerge/source/regutil/regutil.dsw17
-rw-r--r--xmerge/source/wordsmith/build.xml76
-rw-r--r--xmerge/source/wordsmith/converter.xml17
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java93
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java61
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java565
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java99
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java536
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java149
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java352
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java212
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java100
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java247
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java218
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java145
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java299
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java324
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java115
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java68
-rw-r--r--xmerge/source/wordsmith/makefile.mk33
-rw-r--r--xmerge/source/xmerge/build.xml92
-rw-r--r--xmerge/source/xmerge/converter.dtd96
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java327
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertData.java117
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertException.java45
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java67
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterFactory.java124
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/Document.java99
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java65
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java71
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java65
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMerger.java93
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java63
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java67
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java73
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java63
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/MergeException.java45
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/PluginFactory.java193
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/Version.java88
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java412
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/package.html55
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java469
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java177
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java233
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java196
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java162
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java105
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java216
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/package.html142
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java127
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java116
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java295
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java439
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java1265
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java130
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java458
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java601
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java227
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java390
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java679
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/package.html41
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java231
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java510
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java199
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java291
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java198
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java465
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java220
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java291
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java369
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java180
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java127
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java49
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java92
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java792
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java993
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java82
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html40
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java94
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java76
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html40
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java93
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java250
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java97
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java297
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java93
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java202
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties37
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html67
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java51
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Difference.java242
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Iterator.java123
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java61
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java52
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java114
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java234
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java142
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java236
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java243
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java384
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java210
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java90
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java81
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java88
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java84
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/package.html43
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java310
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java247
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java260
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java89
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java107
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/package.html43
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/package.html75
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/package.html113
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java105
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties37
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/test/Driver.java318
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java144
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java446
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java339
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.properties39
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java178
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java147
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java135
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/Resources.java99
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java99
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java189
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/package.html39
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java436
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java536
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java279
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java47
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/build.xml135
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/package.html82
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/resources.properties69
-rw-r--r--xmerge/source/xmerge/makefile.mk34
-rw-r--r--xmerge/util/build.xml94
-rw-r--r--xmerge/util/makefile.mk34
-rw-r--r--xmerge/util/minicalc.mf3
-rw-r--r--xmerge/util/xmerge.mf8
-rw-r--r--xmerge/workben/XmlDiff.java458
-rw-r--r--xmerge/workben/XmlDiff.properties40
-rw-r--r--xmerge/workben/build.xml128
-rw-r--r--xmerge/workben/jstyle.pl541
-rw-r--r--xmerge/workben/makefile.mk32
-rw-r--r--xml2cmp/prj/build.lst7
-rw-r--r--xml2cmp/prj/d.lst4
-rw-r--r--xml2cmp/source/finder/dep_main.cxx97
-rw-r--r--xml2cmp/source/finder/dependy.cxx225
-rw-r--r--xml2cmp/source/finder/dependy.hxx118
-rw-r--r--xml2cmp/source/finder/makefile.mk69
-rw-r--r--xml2cmp/source/inc/lst_str.h101
-rw-r--r--xml2cmp/source/inc/new_del.h57
-rw-r--r--xml2cmp/source/inc/precomp.h57
-rw-r--r--xml2cmp/source/inc/str.h73
-rw-r--r--xml2cmp/source/inc/textbuff.h87
-rw-r--r--xml2cmp/source/inc/textfile.h78
-rw-r--r--xml2cmp/source/support/badcast.cxx47
-rw-r--r--xml2cmp/source/support/cmdline.cxx225
-rw-r--r--xml2cmp/source/support/cmdline.hxx88
-rw-r--r--xml2cmp/source/support/heap.cxx209
-rw-r--r--xml2cmp/source/support/heap.hxx93
-rw-r--r--xml2cmp/source/support/list.hxx250
-rw-r--r--xml2cmp/source/support/makefile.mk61
-rw-r--r--xml2cmp/source/support/sistr.cxx402
-rw-r--r--xml2cmp/source/support/sistr.hxx150
-rw-r--r--xml2cmp/source/support/syshelp.cxx316
-rw-r--r--xml2cmp/source/support/syshelp.hxx87
-rw-r--r--xml2cmp/source/x2cclass/xml_cd.hxx87
-rw-r--r--xml2cmp/source/x2cclass/xml_cdff.cxx233
-rw-r--r--xml2cmp/source/x2cclass/xml_cdff.hxx106
-rw-r--r--xml2cmp/source/x2cclass/xml_cdim.cxx185
-rw-r--r--xml2cmp/source/x2cclass/xml_cdim.hxx115
-rw-r--r--xml2cmp/source/xcd/cr_html.cxx270
-rw-r--r--xml2cmp/source/xcd/cr_html.hxx101
-rw-r--r--xml2cmp/source/xcd/cr_index.cxx277
-rw-r--r--xml2cmp/source/xcd/cr_index.hxx94
-rw-r--r--xml2cmp/source/xcd/cr_metho.cxx108
-rw-r--r--xml2cmp/source/xcd/cr_metho.hxx40
-rw-r--r--xml2cmp/source/xcd/filebuff.cxx69
-rw-r--r--xml2cmp/source/xcd/filebuff.hxx57
-rw-r--r--xml2cmp/source/xcd/main.cxx261
-rw-r--r--xml2cmp/source/xcd/makefile.mk79
-rw-r--r--xml2cmp/source/xcd/parse.cxx450
-rw-r--r--xml2cmp/source/xcd/parse.hxx145
-rw-r--r--xml2cmp/source/xcd/xmlelem.cxx266
-rw-r--r--xml2cmp/source/xcd/xmlelem.hxx243
-rw-r--r--xml2cmp/source/xcd/xmltree.cxx252
-rw-r--r--xml2cmp/source/xcd/xmltree.hxx148
-rw-r--r--xml2cmp/util/makefile.mk58
-rw-r--r--xmlsecurity/doc/OpenDocumentSignatures-TestIntegration.sxwbin0 -> 14189 bytes
-rw-r--r--xmlsecurity/doc/OpenDocumentSignatures-Workflow.sxdbin0 -> 10310 bytes
-rw-r--r--xmlsecurity/doc/OpenDocumentSignatures.sxwbin0 -> 16195 bytes
-rw-r--r--xmlsecurity/doc/XMLSecurityFramework.sxwbin0 -> 187975 bytes
-rw-r--r--xmlsecurity/inc/makefile.mk47
-rw-r--r--xmlsecurity/inc/pch/precompiled_xmlsecurity.cxx31
-rw-r--r--xmlsecurity/inc/pch/precompiled_xmlsecurity.hxx34
-rw-r--r--xmlsecurity/inc/xmlsecurity/biginteger.hxx43
-rw-r--r--xmlsecurity/inc/xmlsecurity/certificatechooser.hxx96
-rw-r--r--xmlsecurity/inc/xmlsecurity/certificateviewer.hxx167
-rw-r--r--xmlsecurity/inc/xmlsecurity/certvalidity.hxx39
-rw-r--r--xmlsecurity/inc/xmlsecurity/digitalsignaturesdialog.hxx152
-rw-r--r--xmlsecurity/inc/xmlsecurity/documentsignaturehelper.hxx106
-rw-r--r--xmlsecurity/inc/xmlsecurity/global.hrc49
-rw-r--r--xmlsecurity/inc/xmlsecurity/macrosecurity.hxx177
-rw-r--r--xmlsecurity/inc/xmlsecurity/sigstruct.hxx114
-rw-r--r--xmlsecurity/inc/xmlsecurity/stbcontrl.hxx59
-rw-r--r--xmlsecurity/inc/xmlsecurity/warnings.hxx91
-rw-r--r--xmlsecurity/inc/xmlsecurity/xmlsignaturehelper.hxx210
-rw-r--r--xmlsecurity/prj/build.lst11
-rw-r--r--xmlsecurity/prj/d.lst10
-rw-r--r--xmlsecurity/source/component/certificatecontainer.cxx173
-rw-r--r--xmlsecurity/source/component/certificatecontainer.hxx97
-rw-r--r--xmlsecurity/source/component/documentdigitalsignatures.cxx518
-rw-r--r--xmlsecurity/source/component/documentdigitalsignatures.hxx104
-rw-r--r--xmlsecurity/source/component/makefile.mk54
-rw-r--r--xmlsecurity/source/component/registerservices.cxx132
-rw-r--r--xmlsecurity/source/component/warnbox.src36
-rw-r--r--xmlsecurity/source/dialogs/certificatechooser.cxx240
-rw-r--r--xmlsecurity/source/dialogs/certificatechooser.src87
-rw-r--r--xmlsecurity/source/dialogs/certificateviewer.cxx552
-rw-r--r--xmlsecurity/source/dialogs/certificateviewer.src347
-rw-r--r--xmlsecurity/source/dialogs/dialogs.hrc360
-rw-r--r--xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx848
-rw-r--r--xmlsecurity/source/dialogs/digitalsignaturesdialog.hrc36
-rw-r--r--xmlsecurity/source/dialogs/digitalsignaturesdialog.src219
-rw-r--r--xmlsecurity/source/dialogs/helpids.hrc67
-rw-r--r--xmlsecurity/source/dialogs/macrosecurity.cxx471
-rw-r--r--xmlsecurity/source/dialogs/macrosecurity.src240
-rw-r--r--xmlsecurity/source/dialogs/makefile.mk64
-rw-r--r--xmlsecurity/source/dialogs/resourcemanager.cxx433
-rw-r--r--xmlsecurity/source/dialogs/resourcemanager.hxx72
-rw-r--r--xmlsecurity/source/dialogs/stbcontrl.cxx166
-rw-r--r--xmlsecurity/source/dialogs/warnings.cxx147
-rw-r--r--xmlsecurity/source/dialogs/warnings.src112
-rw-r--r--xmlsecurity/source/framework/buffernode.cxx1282
-rw-r--r--xmlsecurity/source/framework/buffernode.hxx139
-rw-r--r--xmlsecurity/source/framework/decryptorimpl.cxx247
-rw-r--r--xmlsecurity/source/framework/decryptorimpl.hxx138
-rw-r--r--xmlsecurity/source/framework/elementcollector.cxx298
-rw-r--r--xmlsecurity/source/framework/elementcollector.hxx110
-rw-r--r--xmlsecurity/source/framework/elementmark.cxx107
-rw-r--r--xmlsecurity/source/framework/elementmark.hxx87
-rw-r--r--xmlsecurity/source/framework/encryptionengine.cxx218
-rw-r--r--xmlsecurity/source/framework/encryptionengine.hxx105
-rw-r--r--xmlsecurity/source/framework/encryptorimpl.cxx283
-rw-r--r--xmlsecurity/source/framework/encryptorimpl.hxx150
-rw-r--r--xmlsecurity/source/framework/makefile.mk61
-rw-r--r--xmlsecurity/source/framework/saxeventkeeperimpl.cxx1465
-rw-r--r--xmlsecurity/source/framework/saxeventkeeperimpl.hxx371
-rw-r--r--xmlsecurity/source/framework/securityengine.cxx90
-rw-r--r--xmlsecurity/source/framework/securityengine.hxx174
-rw-r--r--xmlsecurity/source/framework/signaturecreatorimpl.cxx299
-rw-r--r--xmlsecurity/source/framework/signaturecreatorimpl.hxx149
-rw-r--r--xmlsecurity/source/framework/signatureengine.cxx271
-rw-r--r--xmlsecurity/source/framework/signatureengine.hxx144
-rw-r--r--xmlsecurity/source/framework/signatureverifierimpl.cxx244
-rw-r--r--xmlsecurity/source/framework/signatureverifierimpl.hxx137
-rw-r--r--xmlsecurity/source/framework/xmlencryptiontemplateimpl.cxx144
-rw-r--r--xmlsecurity/source/framework/xmlencryptiontemplateimpl.hxx112
-rw-r--r--xmlsecurity/source/framework/xmlsignaturetemplateimpl.cxx169
-rw-r--r--xmlsecurity/source/framework/xmlsignaturetemplateimpl.hxx124
-rw-r--r--xmlsecurity/source/framework/xsec_framework.cxx252
-rw-r--r--xmlsecurity/source/helper/documentsignaturehelper.cxx465
-rw-r--r--xmlsecurity/source/helper/makefile.mk54
-rw-r--r--xmlsecurity/source/helper/xmlsignaturehelper.cxx466
-rw-r--r--xmlsecurity/source/helper/xmlsignaturehelper2.cxx234
-rw-r--r--xmlsecurity/source/helper/xmlsignaturehelper2.hxx136
-rw-r--r--xmlsecurity/source/helper/xsecctl.cxx1501
-rw-r--r--xmlsecurity/source/helper/xsecctl.hxx580
-rw-r--r--xmlsecurity/source/helper/xsecparser.cxx380
-rw-r--r--xmlsecurity/source/helper/xsecparser.hxx168
-rw-r--r--xmlsecurity/source/helper/xsecsign.cxx376
-rw-r--r--xmlsecurity/source/helper/xsecverify.cxx333
-rw-r--r--xmlsecurity/source/xmlsec/biginteger.cxx128
-rw-r--r--xmlsecurity/source/xmlsec/certificateextension_xmlsecimpl.cxx99
-rw-r--r--xmlsecurity/source/xmlsec/certificateextension_xmlsecimpl.hxx67
-rw-r--r--xmlsecurity/source/xmlsec/certvalidity.cxx100
-rw-r--r--xmlsecurity/source/xmlsec/diagnose.cxx80
-rw-r--r--xmlsecurity/source/xmlsec/diagnose.hxx46
-rw-r--r--xmlsecurity/source/xmlsec/errorcallback.cxx213
-rw-r--r--xmlsecurity/source/xmlsec/errorcallback.hxx44
-rw-r--r--xmlsecurity/source/xmlsec/makefile.mk72
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/makefile.mk73
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/oid.hxx161
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx1313
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.hxx193
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/seinitializer_mscryptimpl.cxx240
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/seinitializer_mscryptimpl.hxx108
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx661
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.hxx116
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/xmlencryption_mscryptimpl.cxx386
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/xmlencryption_mscryptimpl.hxx100
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/xmlsecuritycontext_mscryptimpl.cxx345
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/xmlsecuritycontext_mscryptimpl.hxx134
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx330
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.hxx100
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/xsec_mscrypt.cxx167
-rw-r--r--xmlsecurity/source/xmlsec/nss/certerrors.h397
-rw-r--r--xmlsecurity/source/xmlsec/nss/makefile.mk142
-rw-r--r--xmlsecurity/source/xmlsec/nss/nssrenam.h52
-rw-r--r--xmlsecurity/source/xmlsec/nss/secerror.cxx168
-rw-r--r--xmlsecurity/source/xmlsec/nss/secerror.hxx42
-rw-r--r--xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx1158
-rw-r--r--xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx181
-rw-r--r--xmlsecurity/source/xmlsec/nss/seinitializer_nssimpl.cxx518
-rw-r--r--xmlsecurity/source/xmlsec/nss/seinitializer_nssimpl.hxx108
-rw-r--r--xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.cxx471
-rw-r--r--xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.hxx110
-rw-r--r--xmlsecurity/source/xmlsec/nss/xmlencryption_nssimpl.cxx422
-rw-r--r--xmlsecurity/source/xmlsec/nss/xmlencryption_nssimpl.hxx100
-rw-r--r--xmlsecurity/source/xmlsec/nss/xmlsecuritycontext_nssimpl.cxx326
-rw-r--r--xmlsecurity/source/xmlsec/nss/xmlsecuritycontext_nssimpl.hxx137
-rw-r--r--xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx348
-rw-r--r--xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.hxx100
-rw-r--r--xmlsecurity/source/xmlsec/nss/xsec_nss.cxx167
-rw-r--r--xmlsecurity/source/xmlsec/saxhelper.cxx452
-rw-r--r--xmlsecurity/source/xmlsec/saxhelper.hxx90
-rw-r--r--xmlsecurity/source/xmlsec/xmldocumentwrapper_xmlsecimpl.cxx1149
-rw-r--r--xmlsecurity/source/xmlsec/xmldocumentwrapper_xmlsecimpl.hxx284
-rw-r--r--xmlsecurity/source/xmlsec/xmlelementwrapper_xmlsecimpl.cxx189
-rw-r--r--xmlsecurity/source/xmlsec/xmlelementwrapper_xmlsecimpl.hxx110
-rw-r--r--xmlsecurity/source/xmlsec/xmlstreamio.cxx246
-rw-r--r--xmlsecurity/source/xmlsec/xmlstreamio.hxx46
-rw-r--r--xmlsecurity/source/xmlsec/xsec_xmlsec.cxx233
-rwxr-xr-xxmlsecurity/test_docs/CAs/README.txt383
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/crl/DO_NOT_CREATE_A_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_1/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_10/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/index.txt34
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1000.pem57
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1002.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1003.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1004.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1005.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1006.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1007.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1008.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1009.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/100A.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/100B.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/100C.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/100D.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/100E.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/100F.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1010.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1011.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1012.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1013.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1014.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1015.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1016.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1017.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1018.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1019.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/101A.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/101B.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/101C.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/101D.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/101E.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/101F.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1020.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/newcerts/1021.pem61
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_11/openssl.cfg295
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/crl/DO_NOT_CREATE_A_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_2/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_3/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/README.txt4
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/newcerts/1001.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_4/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/crl/DO_NOT_CREATE_A_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/newcerts/1001.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_5/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/README.txt5
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/crl/Root_6.crlbin0 -> 316 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/newcerts/1001.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_6/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/README.txt10
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/crl/Root_7.crlbin0 -> 353 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/newcerts/1000.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/newcerts/1001.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_7/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/README.txt9
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/crl/Root_8.crlbin0 -> 353 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/newcerts/1000.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/newcerts/1001.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_8/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/DO_NOT_INSTALL_THIS_ROOT_CERT.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/DO_NO_INSTALL_THIS_ROOT_CERTIFICATE0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/Root_9.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/cacert.pem19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Root_9/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/cacert.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/crl/DO_NOT_CREATE_A_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/newcerts/1000.pem58
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_1/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/DO_NOT_INSTALL_THIS_CERTIFICATE0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/README.txt19
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/DO_NOT_INSTALL_THIS_CERTIFICATE0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/Sub_CA_1_Root_10.crtbin0 -> 781 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/cacert.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/crl/Sub_CA_1_Root_10.crlbin0 -> 326 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/newcerts/1000.pem67
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_10/openssl.cfg293
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/cacert.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/newcerts/1000.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/req.pem11
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_2/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/cacert.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/crl/DO_NOT_CREATE_A_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/newcerts/1000.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/req.pem11
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_3/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/README.txt4
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/cacert.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/newcerts/1000.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/newcerts/1001.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_4/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/README.txt5
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/cacert.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/crl/Sub_CA_1_Root_5.crlbin0 -> 325 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/newcerts/1002.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_5/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/cacert.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/crl/DO_NOT_CREATE_A_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_6/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/README.txt3
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/cacert.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/crl/Sub_CA_1_Root_7.crlbin0 -> 362 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/newcerts/1001.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_7/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/README.txt13
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/cacert.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/crl/Sub_CA_1_Root_8.crlbin0 -> 362 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/newcerts/1001.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_8/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/demoCA/cacert.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/demoCA/index.txt1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/demoCA/newcerts/1000.pem58
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_1_Root_9/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/README.txt4
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/cacert.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/newcerts/1001.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/newcerts/1002.pem60
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_4/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/README.txt12
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/cacert.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/crl/Sub_CA_2_Root_7.crlbin0 -> 362 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/newcerts/1000.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/newcerts/1001.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_7/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/README.txt13
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/cacert.pem66
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/crl/DO_NOT_INSTALL_THIS_CRL0
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/crl/Sub_CA_2_Root_8.crlbin0 -> 362 bytes
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/crlnumber1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/index.txt2
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/index.txt.attr1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/newcerts/1002.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/newcerts/1003.pem62
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/private/cakey.pem18
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/demoCA/serial1
-rwxr-xr-xxmlsecurity/test_docs/CAs/Sub_CA_2_Root_8/openssl.cfg292
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_1.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_10.crtbin0 -> 779 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_11.crtbin0 -> 779 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_2.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_3.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_4.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_5.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_6.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_7.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Root_8.crtbin0 -> 776 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_1.crtbin0 -> 778 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_2.crtbin0 -> 778 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_3.crtbin0 -> 778 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_4.crtbin0 -> 778 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_5.crtbin0 -> 842 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_6.crtbin0 -> 842 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_7.crtbin0 -> 842 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_8.crtbin0 -> 829 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_1_Root_9.crtbin0 -> 778 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_2_Root_4.crtbin0 -> 778 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_2_Root_7.crtbin0 -> 842 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/ca_certs/Sub_CA_2_Root_8.crtbin0 -> 829 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Root_10.crlbin0 -> 317 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Root_11.crlbin0 -> 317 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Root_3.crlbin0 -> 316 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Root_4.crlbin0 -> 353 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Root_9.crlbin0 -> 316 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Sub_CA_1_Root_2.crlbin0 -> 325 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Sub_CA_1_Root_4.crlbin0 -> 362 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Sub_CA_1_Root_9.crlbin0 -> 325 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/crl/Sub_CA_2_Root_4.crlbin0 -> 362 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_10_Root_11.crtbin0 -> 739 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_11_Root_11.crtbin0 -> 733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_12_Root_11.crtbin0 -> 729 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_13_Root_11.crtbin0 -> 739 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_14_Root_11.crtbin0 -> 729 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_15_Root_11.crtbin0 -> 720 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_16_Root_11.crtbin0 -> 739 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_17_Root_11.crtbin0 -> 749 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_18_Root_11.crtbin0 -> 714 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_19_Root_11.crtbin0 -> 710 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Root_11.crtbin0 -> 699 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_1.crtbin0 -> 706 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_10.crtbin0 -> 828 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_2.crtbin0 -> 719 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_3.crtbin0 -> 719 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_4.crtbin0 -> 719 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_5.crtbin0 -> 746 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_6.crtbin0 -> 746 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_7.crtbin0 -> 746 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_8.crtbin0 -> 726 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_1_Root_9.crtbin0 -> 673 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_2_Root_4.crtbin0 -> 719 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_2_Root_7.crtbin0 -> 746 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_1_Sub_CA_2_Root_8.crtbin0 -> 726 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_20_Root_11.crtbin0 -> 710 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_21_Root_11.crtbin0 -> 727 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_22_Root_11.crtbin0 -> 739 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_23_Root_11.crtbin0 -> 733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_24_Root_11.crtbin0 -> 729 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_25_Root_11.crtbin0 -> 737 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_26_Root_11.crtbin0 -> 729 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_27_Root_11.crtbin0 -> 705 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_28_Root_11.crtbin0 -> 700 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_29_Root_11.crtbin0 -> 698 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_2_Root_11.crtbin0 -> 695 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_2_Sub_CA_1_Root_4.crtbin0 -> 719 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_2_Sub_CA_1_Root_7.crtbin0 -> 746 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_2_Sub_CA_1_Root_8.crtbin0 -> 726 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_2_Sub_CA_2_Root_4.crtbin0 -> 719 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_2_Sub_CA_2_Root_7.crtbin0 -> 746 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_2_Sub_CA_2_Root_8.crtbin0 -> 726 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_30_Root_11.crtbin0 -> 716 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_31_Root_11.crtbin0 -> 745 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_32_Root_11.crtbin0 -> 591 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_33_Root_11.crtbin0 -> 620 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_34_Root_11.crtbin0 -> 637 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_3_Root_11.crtbin0 -> 719 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_4_Root_11.crtbin0 -> 738 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_5_Root_11.crtbin0 -> 748 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_6_Root_11.crtbin0 -> 713 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_7_Root_11.crtbin0 -> 709 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_8_Root_11.crtbin0 -> 709 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/end_certs/User_9_Root_11.crtbin0 -> 726 bytes
-rw-r--r--xmlsecurity/test_docs/certs/p12/Root_11.p12bin0 -> 1797 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_10_Root_11.p12bin0 -> 1757 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_11_Root_11.p12bin0 -> 1749 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_12_Root_11.p12bin0 -> 1749 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_13_Root_11.p12bin0 -> 1757 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_14_Root_11.p12bin0 -> 1749 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_15_Root_11.p12bin0 -> 1741 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_16_Root_11.p12bin0 -> 1757 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_17_Root_11.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_18_Root_11.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_19_Root_11.p12bin0 -> 1725 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Root_11.p12bin0 -> 1717 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_1.p12bin0 -> 1725 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_10.p12bin0 -> 1845 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_2.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_3.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_4.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_5.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_6.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_7.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_8.p12bin0 -> 1741 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_1_Root_9.p12bin0 -> 1693 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_2_Root_4.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_2_Root_7.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_1_Sub_CA_2_Root_8.p12bin0 -> 1741 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_20_Root_11.p12bin0 -> 1725 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_21_Root_11.p12bin0 -> 1741 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_22_Root_11.p12bin0 -> 1757 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_23_Root_11.p12bin0 -> 1749 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_24_Root_11.p12bin0 -> 1749 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_25_Root_11.p12bin0 -> 1757 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_26_Root_11.p12bin0 -> 1749 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_27_Root_11.p12bin0 -> 1725 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_28_Root_11.p12bin0 -> 1717 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_29_Root_11.p12bin0 -> 1717 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_2_Root_11.p12bin0 -> 1709 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_2_Sub_CA_1_Root_4.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_2_Sub_CA_1_Root_7.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_2_Sub_CA_1_Root_8.p12bin0 -> 1741 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_2_Sub_CA_2_Root_4.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_2_Sub_CA_2_Root_7.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_2_Sub_CA_2_Root_8.p12bin0 -> 1741 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_30_Root_11.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_31_Root_11.p12bin0 -> 1765 bytes
-rw-r--r--xmlsecurity/test_docs/certs/p12/User_32_Root_11.p12bin0 -> 1605 bytes
-rw-r--r--xmlsecurity/test_docs/certs/p12/User_33_Root_11.p12bin0 -> 1732 bytes
-rw-r--r--xmlsecurity/test_docs/certs/p12/User_34_Root_11.p12bin0 -> 1714 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_3_Root_11.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_4_Root_11.p12bin0 -> 1757 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_5_Root_11.p12bin0 -> 1765 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_6_Root_11.p12bin0 -> 1733 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_7_Root_11.p12bin0 -> 1725 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_8_Root_11.p12bin0 -> 1725 bytes
-rwxr-xr-xxmlsecurity/test_docs/certs/p12/User_9_Root_11.p12bin0 -> 1741 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/aia_ca_issuers.odtbin0 -> 9511 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/aia_ocsp.odtbin0 -> 9376 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/aia_ocsp_revoked_chain.odtbin0 -> 9370 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/aia_ocsp_revoked_leaf.odtbin0 -> 9379 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/aia_ocsp_revoked_leaf_chain.odtbin0 -> 9378 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crl.odtbin0 -> 9354 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crl_revoked_chain.odtbin0 -> 9352 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crl_revoked_leaf.odtbin0 -> 9363 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crl_revoked_leaf_chain.odtbin0 -> 9351 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crldp.odtbin0 -> 9379 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crldp_no_intermediate_ca_revocation_info.odtbin0 -> 9382 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crldp_no_root_revocation_info.odtbin0 -> 9379 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crldp_revoked_chain.odtbin0 -> 9381 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crldp_revoked_leaf.odtbin0 -> 9380 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/crldp_revoked_leaf_chain.odtbin0 -> 9383 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/dn_cyrillic_bmpstring.odtbin0 -> 9392 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/dn_latin_ext_greak_bmpstring.odtbin0 -> 9388 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/dn_multivalue_rdn.odtbin0 -> 9272 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/dn_quoting.odtbin0 -> 28429 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/dn_single_multivalue_rdn.odtbin0 -> 9299 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/dn_single_multivalue_rdn_with_quoting.odtbin0 -> 9313 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/incomplete_path.odtbin0 -> 9308 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo2_x_doc1.odtbin0 -> 9550 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo2_x_doc2.odtbin0 -> 6989 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo2_x_macro1.odtbin0 -> 12911 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo2_x_macro2.odtbin0 -> 12929 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo2_x_macro3.odtbin0 -> 13043 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo2_x_macro4.odtbin0 -> 13079 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo2_x_macro5.odtbin0 -> 20336 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo3_2_doc1.odtbin0 -> 9200 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo3_2_doc3.odtbin0 -> 8908 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo3_2_doc4.odtbin0 -> 8997 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/invalid_ooo_3_2_doc2.odtbin0 -> 9199 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/ocsp_crl.odtbin0 -> 9444 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/ocsp_crl_revoked_leaf.odtbin0 -> 9447 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/stateOrProvinceName.odtbin0 -> 10534 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_no_revocation.odtbin0 -> 9341 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_no_root_revocation_info.odtbin0 -> 9349 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_no_sub_ca_revocation_info.odtbin0 -> 9352 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo2_x_doc1.odtbin0 -> 9880 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo2_x_doc_macro.odtbin0 -> 12425 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo2_x_doc_unsigned_macro.odtbin0 -> 10821 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo3_0_doc1.odtbin0 -> 12565 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo3_0_doc_macro.odtbin0 -> 15656 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo3_0_doc_unsigned_macro.odtbin0 -> 13975 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo3_2_doc1.odtbin0 -> 12514 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo3_2_doc_macro.odtbin0 -> 15579 bytes
-rwxr-xr-xxmlsecurity/test_docs/documents/valid_ooo3_2_doc_unsigned_macro.odtbin0 -> 13929 bytes
-rw-r--r--xmlsecurity/test_docs/test_description.odtbin0 -> 25782 bytes
-rwxr-xr-xxmlsecurity/test_docs/tools/README.txt23
-rwxr-xr-xxmlsecurity/test_docs/tools/httpserv/build.xml74
-rwxr-xr-xxmlsecurity/test_docs/tools/httpserv/dist/README.TXT33
-rwxr-xr-xxmlsecurity/test_docs/tools/httpserv/dist/httpserv.jarbin0 -> 6994 bytes
-rwxr-xr-xxmlsecurity/test_docs/tools/httpserv/manifest.mf3
-rwxr-xr-xxmlsecurity/test_docs/tools/httpserv/nbproject/build-impl.xml700
-rw-r--r--xmlsecurity/test_docs/tools/httpserv/nbproject/genfiles.properties9
-rw-r--r--xmlsecurity/test_docs/tools/httpserv/nbproject/project.properties65
-rwxr-xr-xxmlsecurity/test_docs/tools/httpserv/nbproject/project.xml15
-rwxr-xr-xxmlsecurity/test_docs/tools/httpserv/src/httpserv/Main.java213
-rw-r--r--xmlsecurity/tools/demo/JavaFlatFilter.java225
-rw-r--r--xmlsecurity/tools/demo/makefile.mk157
-rw-r--r--xmlsecurity/tools/demo/manifest1
-rw-r--r--xmlsecurity/tools/demo/mozprofile.cxx110
-rw-r--r--xmlsecurity/tools/demo/multisigdemo.cxx239
-rw-r--r--xmlsecurity/tools/demo/performance.cxx1875
-rw-r--r--xmlsecurity/tools/demo/readme.txt22
-rw-r--r--xmlsecurity/tools/demo/signdemo.cxx159
-rw-r--r--xmlsecurity/tools/demo/util.cxx114
-rw-r--r--xmlsecurity/tools/demo/util.hxx53
-rw-r--r--xmlsecurity/tools/demo/util2.cxx429
-rw-r--r--xmlsecurity/tools/demo/verifydemo.cxx111
-rw-r--r--xmlsecurity/tools/examples/demo-sample.gifbin0 -> 94 bytes
-rw-r--r--xmlsecurity/tools/examples/demo-sample.sxwbin0 -> 19891 bytes
-rw-r--r--xmlsecurity/tools/examples/demo-sample.xml3
-rw-r--r--xmlsecurity/tools/examples/enc-1.xml31
-rw-r--r--xmlsecurity/tools/examples/enc-2.xml58
-rw-r--r--xmlsecurity/tools/examples/eval_export.txt7
-rw-r--r--xmlsecurity/tools/examples/eval_import.txt14
-rw-r--r--xmlsecurity/tools/examples/evaluate_win.bat138
-rw-r--r--xmlsecurity/tools/examples/readme.txt7
-rw-r--r--xmlsecurity/tools/examples/s-in-e-1.xml53
-rw-r--r--xmlsecurity/tools/examples/s-in-e-2.xml53
-rw-r--r--xmlsecurity/tools/examples/sign-0.xml27
-rw-r--r--xmlsecurity/tools/examples/sign-1.xml29
-rw-r--r--xmlsecurity/tools/examples/sign-2.xml33
-rw-r--r--xmlsecurity/tools/examples/sign-3.xml41
-rw-r--r--xmlsecurity/tools/examples/sign-4.xml57
-rw-r--r--xmlsecurity/tools/examples/sign-5.xml89
-rw-r--r--xmlsecurity/tools/examples/uno_win.bat23
-rw-r--r--xmlsecurity/tools/examples/warmup.xml27
-rw-r--r--xmlsecurity/tools/standalone/csfit/certmngr.cxx191
-rw-r--r--xmlsecurity/tools/standalone/csfit/decrypter.cxx274
-rw-r--r--xmlsecurity/tools/standalone/csfit/encrypter.cxx311
-rw-r--r--xmlsecurity/tools/standalone/csfit/helper.cxx268
-rw-r--r--xmlsecurity/tools/standalone/csfit/helper.hxx243
-rw-r--r--xmlsecurity/tools/standalone/csfit/makefile.mk155
-rw-r--r--xmlsecurity/tools/standalone/csfit/signer.cxx372
-rw-r--r--xmlsecurity/tools/standalone/csfit/util/makefile.mk174
-rw-r--r--xmlsecurity/tools/standalone/csfit/verifier.cxx342
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/certmngr.cxx154
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/decrypter.cxx248
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/encrypter.cxx310
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/helper.cxx222
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/helper.hxx206
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/makefile.mk147
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/signer.cxx344
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/util/makefile.mk174
-rw-r--r--xmlsecurity/tools/standalone/mscsfit/verifier.cxx330
-rw-r--r--xmlsecurity/tools/standalone/readme.txt19
-rw-r--r--xmlsecurity/tools/uno/AdapterNode.java165
-rw-r--r--xmlsecurity/tools/uno/AttributeListHelper.java148
-rw-r--r--xmlsecurity/tools/uno/DomToTreeModelAdapter.java166
-rw-r--r--xmlsecurity/tools/uno/EncryptionEntity.java218
-rw-r--r--xmlsecurity/tools/uno/ParsingThread.java248
-rw-r--r--xmlsecurity/tools/uno/SAXEventCollector.java195
-rw-r--r--xmlsecurity/tools/uno/SAXEventPrinter.java320
-rw-r--r--xmlsecurity/tools/uno/SecurityEntity.java202
-rw-r--r--xmlsecurity/tools/uno/SignatureEntity.java288
-rw-r--r--xmlsecurity/tools/uno/TestTool.java1392
-rw-r--r--xmlsecurity/tools/uno/UnsolvedReferenceTableModel.java89
-rw-r--r--xmlsecurity/tools/uno/XMLFileFilter.java79
-rw-r--r--xmlsecurity/tools/uno/XMLSecurityFrameworkController.java1085
-rw-r--r--xmlsecurity/tools/uno/XMLTreeCellRanderer.java85
-rw-r--r--xmlsecurity/tools/uno/current.gifbin0 -> 94 bytes
-rw-r--r--xmlsecurity/tools/uno/makefile.mk48
-rw-r--r--xmlsecurity/util/exports_xsmscrypt.dxp3
-rw-r--r--xmlsecurity/util/exports_xsnss.dxp3
-rw-r--r--xmlsecurity/util/makefile.mk174
-rw-r--r--xmlsecurity/util/target.pmk32
-rw-r--r--xmlsecurity/util/xsec_fw.dxp3
-rw-r--r--xmlsecurity/util/xsecctl.flt19
-rw-r--r--xmlsecurity/workben/makefile.mk70
-rw-r--r--xmlsecurity/workben/signaturetest.cxx554
-rw-r--r--xpdf/makefile.mk134
-rw-r--r--xpdf/prj/build.lst2
-rw-r--r--xpdf/prj/d.lst5
-rw-r--r--xpdf/xpdf-3.02.patch1901
-rwxr-xr-xxsltml/README14
-rwxr-xr-xxsltml/makefile.mk66
-rwxr-xr-xxsltml/prj/build.lst3
-rwxr-xr-xxsltml/prj/d.lst6
-rw-r--r--xsltml/xsltml_2.1.2.patch1747
-rwxr-xr-xzlib/make_patched_header.pl66
-rw-r--r--zlib/makefile.mk75
-rw-r--r--zlib/prj/build.lst2
-rw-r--r--zlib/prj/d.lst13
-rw-r--r--zlib/zlib-1.2.3.patch92
52973 files changed, 9485516 insertions, 2 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 000000000000..416fa8c63b14
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+*.doc binary
+*.sdw binary
diff --git a/.gitignore b/.gitignore
index 50784a43df04..ddc5d8042ab4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,8 +2,86 @@
*~
.*.sw[op]
+# where the 'subrepos' and downloads are located
+/clone
+/src
+
# the build directories
/*/unxlng??
/*/unxlng??.pro
-/*/wntmsci??
-/*/wntmsci??.pro
+/*/unxlng???
+/*/unxlng???.pro
+/*/wntmsc???
+/*/wntmsc???.pro
+/*/wntgcc?
+/*/wntgcc?.pro
+/*/unxmac??
+/*/unxmac??.pro
+/*/unx?bsd??
+/*/unx?bsd??.pro
+/*/unxdfly??
+/*/unxdfly??.pro
+/*/unxso???
+/*/unxso???.pro
+/*/unxaig??
+/*/unxaig??.pro
+/*/unxios?
+/*/unxios?.pro
+/*/unxand?
+/*/unxand?.pro
+/workdir
+/solver
+/instsetoo_native/util/LibreOffice
+/instsetoo_native/util/LibreOffice_SDK
+
+# autoconf generated stuff
+/aclocal.m4
+/autom4te.cache
+/autogen.lastrun
+/bootstrap
+/ChangeLog
+/config.guess
+/config.log
+/config.parms
+/config.status
+/configure
+/Makefile
+/makefile.mk
+/set_soenv
+/visibility.cxx
+/post_download
+/bin/repo-list
+/src.downloaded
+/ooo.lst
+
+# misc
+/cross-build-toolset.built
+/set_soenv.last
+/set_soenv.stamp
+/warn
+/build.log
+/post_download.log
+/install
+/downloaded
+/Env.Build.sh
+/Env.Host.sh
+/ID
+/tags
+/docs
+/autogen.save
+
+/*/*.exe
+
+# external dlls etc
+/external/*/*.dll
+/external/*/*.exe
+/external/*/*.manifest
+/external/*/*.txt
+/moz/zipped/*.zip
+
+# links to the other repositories
+/binfilter
+/dictionaries
+/helpcontent2
+/translations
+
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 000000000000..aaec3ca00de9
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,24 @@
+# just dumb wrapper; make install comes later
+
+SHELL=/bin/sh
+
+all:
+ @. ./*[Ee]nv.[Ss]et.sh && \
+ ./fetch_tarballs.sh ooo.lst && \
+ ./bootstrap && \
+ cd instsetoo_native && ../solenv/bin/build.pl -P@BUILD_NCPUS@ --all -P@BUILD_MAX_JOBS@
+
+distclean:
+ @. ./*[Ee]nv.[Ss]et.sh && \
+ dmake distclean
+
+clean:
+ @. ./*[Ee]nv.[Ss]et.sh && \
+ dmake clean
+
+dev-install:
+ @. ./*[Ee]nv.[Ss]et.sh && \
+ ooinstall -l $$SRC_ROOT/install && \
+ echo && \
+ echo "Developer installation finished, you can find it here:" && \
+ echo "$$SRC_ROOT/install"
diff --git a/MathMLDTD/math.dtd b/MathMLDTD/math.dtd
new file mode 100644
index 000000000000..0349e3031acf
--- /dev/null
+++ b/MathMLDTD/math.dtd
@@ -0,0 +1,957 @@
+<!-- Copyright 1997-1999 World Wide Web Consortium, -->
+<!-- (Massachusetts Institute of Technology, -->
+<!-- Institut National de Recherche en Informatique et en Automatique, -->
+<!-- Keio University). All Rights Reserved. -->
+<!-- http://www.w3.org/Consortium/Legal/ -->
+
+<!-- Modified DTD for MathML 1.01 -->
+<!-- -->
+<!-- Original DTD: -->
+<!-- http://www.w3.org/1999/07/REC-MathML-19990707/mmlents.zip -->
+<!-- -->
+<!-- modified 20. June 2001: -->
+<!-- 1) added "math:" namespace prefix -->
+<!-- 2) removed entity include files -->
+<!-- 3) added copyright notice above to comply with -->
+<!-- W3C IPR Software Notice -->
+<!-- 4) added this comment block -->
+<!-- Modifications are intended to ease validation -->
+<!-- of MathML files written by StarMath 6.0 -->
+
+
+<!-- Content model for content and presentation -->
+<!-- and browser interface tags in MathML -->
+<!-- initial draft 9.May.1997 syntax = XML -->
+<!-- author = s.buswell sb@stilo.demon.co.uk -->
+<!-- -->
+<!-- revised 14.May.1997 by Robert Miner -->
+<!-- revised 29.June.1997 and 2.July.1997 by s.buswell -->
+<!-- -->
+<!-- revised 15.December.1997 by s.buswell -->
+<!-- revised 8.February.1998 by s.buswell -->
+<!-- revised 4.april.1998 by s.buswell -->
+<!-- 21.February.1999 entities and small revisions by d.carlisle -->
+<!-- -->
+<!-- W3C Recommendation 7 April 1998 -->
+<!-- ************************************************* -->
+
+<!-- general attribute definitions for class & style & id & other -->
+<!-- : attributes shared by all mathml elements -->
+
+<!ENTITY % att-globalatts 'math:class CDATA #IMPLIED
+ math:style CDATA #IMPLIED
+ math:id ID #IMPLIED
+ math:other CDATA #IMPLIED' >
+
+<!-- ************************************************* -->
+<!-- Presentation element set -->
+
+<!-- presentation attribute definitions -->
+
+<!ENTITY % att-fontsize 'math:fontsize CDATA #IMPLIED' >
+<!ENTITY % att-fontweight 'math:fontweight (normal | bold) #IMPLIED' >
+<!ENTITY % att-fontstyle 'math:fontstyle (normal | italic) #IMPLIED' >
+<!ENTITY % att-fontfamily 'math:fontfamily CDATA #IMPLIED' >
+<!ENTITY % att-color 'math:color CDATA #IMPLIED' >
+
+<!ENTITY % att-fontinfo '%att-fontsize;
+ %att-fontweight;
+ %att-fontstyle;
+ %att-fontfamily;
+ %att-color;' >
+
+<!ENTITY % att-form 'math:form (prefix | infix | postfix) #IMPLIED' >
+<!ENTITY % att-fence 'math:fence (true | false ) #IMPLIED' >
+<!ENTITY % att-separator 'math:separator (true | false ) #IMPLIED' >
+<!ENTITY % att-lspace 'math:lspace CDATA #IMPLIED' >
+<!ENTITY % att-rspace 'math:rspace CDATA #IMPLIED' >
+<!ENTITY % att-stretchy 'math:stretchy (true | false ) #IMPLIED' >
+<!ENTITY % att-symmetric 'math:symmetric (true | false ) #IMPLIED' >
+<!ENTITY % att-maxsize 'math:maxsize CDATA #IMPLIED' >
+<!ENTITY % att-minsize 'math:minsize CDATA #IMPLIED' >
+<!ENTITY % att-largeop 'math:largeop (true | false ) #IMPLIED' >
+<!ENTITY % att-movablelimits 'math:movablelimits (true | false )
+#IMPLIED' >
+<!ENTITY % att-accent 'math:accent (true | false) #IMPLIED'>
+
+<!ENTITY % att-opinfo '%att-form;
+ %att-fence;
+ %att-separator;
+ %att-lspace;
+ %att-rspace;
+ %att-stretchy;
+ %att-symmetric;
+ %att-maxsize;
+ %att-minsize;
+ %att-largeop;
+ %att-movablelimits;
+ %att-accent;' >
+
+<!ENTITY % att-width 'math:width CDATA #IMPLIED' >
+<!ENTITY % att-height 'math:height CDATA #IMPLIED' >
+<!ENTITY % att-depth 'math:depth CDATA #IMPLIED' >
+
+<!ENTITY % att-sizeinfo '%att-width;
+ %att-height;
+ %att-depth;' >
+
+<!ENTITY % att-lquote 'math:lquote CDATA #IMPLIED' >
+<!ENTITY % att-rquote 'math:rquote CDATA #IMPLIED' >
+
+<!ENTITY % att-linethickness 'math:linethickness CDATA #IMPLIED' >
+
+<!ENTITY % att-scriptlevel 'math:scriptlevel CDATA #IMPLIED'>
+<!ENTITY % att-displaystyle 'math:displaystyle (true | false)
+#IMPLIED'>
+<!ENTITY % att-scriptsizemultiplier 'math:scriptsizemultiplier CDATA
+#IMPLIED' >
+<!ENTITY % att-scriptminsize 'math:scriptminsize CDATA #IMPLIED'>
+<!ENTITY % att-background 'math:background CDATA #IMPLIED' >
+
+<!ENTITY % att-open 'math:open CDATA #IMPLIED' >
+<!ENTITY % att-close 'math:close CDATA #IMPLIED' >
+<!ENTITY % att-separators 'math:separators CDATA #IMPLIED' >
+
+<!ENTITY % att-subscriptshift 'math:subscriptshift CDATA #IMPLIED'>
+<!ENTITY % att-superscriptshift 'math:superscriptshift CDATA #IMPLIED' >
+
+<!ENTITY % att-accentunder 'math:accentunder (true | false)
+#IMPLIED'>
+
+<!ENTITY % att-align 'math:align CDATA #IMPLIED' >
+<!ENTITY % att-rowalign 'math:rowalign CDATA #IMPLIED' >
+<!ENTITY % att-columnalign 'math:columnalign CDATA #IMPLIED' >
+<!ENTITY % att-groupalign 'math:groupalign CDATA #IMPLIED' >
+<!ENTITY % att-alignmentscope 'math:alignmentscope CDATA #IMPLIED' >
+
+<!ENTITY % att-rowspacing 'math:rowspacing CDATA #IMPLIED' >
+<!ENTITY % att-columnspacing 'math:columnspacing CDATA #IMPLIED' >
+<!ENTITY % att-rowlines 'math:rowlines CDATA #IMPLIED' >
+<!ENTITY % att-columnlines 'math:columnlines CDATA #IMPLIED' >
+<!ENTITY % att-frame 'math:frame (none | solid | dashed)
+#IMPLIED' >
+<!ENTITY % att-framespacing 'math:framespacing CDATA #IMPLIED' >
+<!ENTITY % att-equalrows 'math:equalrows CDATA #IMPLIED' >
+<!ENTITY % att-equalcolumns 'math:equalcolumns CDATA #IMPLIED' >
+
+<!ENTITY % att-tableinfo '%att-align;
+ %att-rowalign;
+ %att-columnalign;
+ %att-groupalign;
+ %att-alignmentscope;
+ %att-rowspacing;
+ %att-columnspacing;
+ %att-rowlines;
+ %att-columnlines;
+ %att-frame;
+ %att-framespacing;
+ %att-equalrows;
+ %att-equalcolumns;
+ %att-displaystyle;' >
+
+<!ENTITY % att-rowspan 'math:rowspan CDATA #IMPLIED' >
+<!ENTITY % att-columnspan 'math:columnspan CDATA #IMPLIED' >
+
+<!ENTITY % att-edge 'math:edge (left | right) #IMPLIED ' >
+
+<!ENTITY % att-actiontype 'math:actiontype CDATA #IMPLIED' >
+<!ENTITY % att-selection 'math:selection CDATA #IMPLIED ' >
+
+<!-- presentation token schemata with content-->
+
+<!ENTITY % ptoken "math:mi | math:mn | math:mo | math:mtext | math:ms" >
+
+<!ATTLIST math:mi %att-fontinfo;
+ %att-globalatts; >
+
+<!ATTLIST math:mn %att-fontinfo;
+ %att-globalatts; >
+
+<!ATTLIST math:mo %att-fontinfo;
+ %att-opinfo;
+ %att-globalatts; >
+
+<!ATTLIST math:mtext %att-fontinfo;
+ %att-globalatts; >
+
+<!ATTLIST math:ms %att-fontinfo;
+ %att-lquote;
+ %att-rquote;
+ %att-globalatts; >
+
+<!-- empty presentation token schemata -->
+
+<!ENTITY % petoken "math:mspace" >
+<!ELEMENT math:mspace EMPTY >
+
+<!ATTLIST math:mspace %att-sizeinfo;
+ %att-globalatts; >
+
+<!-- presentation general layout schemata -->
+
+<!ENTITY % pgenschema "math:mrow|math:mfrac|math:msqrt|math:mroot|
+ math:mstyle|math:merror|math:mpadded| math:mphantom|math:mfenced" >
+
+<!ATTLIST math:mrow %att-globalatts; >
+
+<!ATTLIST math:mfrac %att-linethickness;
+ %att-globalatts; >
+
+<!ATTLIST math:msqrt %att-globalatts; >
+
+<!ATTLIST math:mroot %att-globalatts; >
+
+<!ATTLIST math:mstyle %att-fontinfo;
+ %att-opinfo;
+ %att-lquote;
+ %att-rquote;
+ %att-linethickness;
+ %att-scriptlevel;
+ %att-scriptsizemultiplier;
+ %att-scriptminsize;
+ %att-background;
+ %att-open;
+ %att-close;
+ %att-separators;
+ %att-subscriptshift;
+ %att-superscriptshift;
+ %att-accentunder;
+ %att-tableinfo;
+ %att-rowspan;
+ %att-columnspan;
+ %att-edge;
+ %att-actiontype;
+ %att-selection;
+ %att-globalatts; >
+
+<!ATTLIST math:merror %att-globalatts; >
+
+<!ATTLIST math:mpadded %att-sizeinfo;
+ %att-lspace;
+ %att-globalatts; >
+
+<!ATTLIST math:mphantom %att-globalatts; >
+
+<!ATTLIST math:mfenced %att-open;
+ %att-close;
+ %att-separators;
+ %att-globalatts; >
+
+<!-- presentation layout schemata : scripts and limits -->
+
+<!ENTITY % pscrschema "math:msub|math:msup|math:msubsup|
+ math:munder|math:mover|math:munderover|math:mmultiscripts" >
+
+<!ATTLIST math:msub %att-subscriptshift;
+ %att-globalatts; >
+
+<!ATTLIST math:msup %att-superscriptshift;
+ %att-globalatts; >
+
+<!ATTLIST math:msubsup %att-subscriptshift;
+ %att-superscriptshift;
+ %att-globalatts; >
+
+<!ATTLIST math:munder %att-accentunder;
+ %att-globalatts; >
+
+<!ATTLIST math:mover %att-accent;
+ %att-globalatts; >
+
+<!ATTLIST math:munderover %att-accent;
+ %att-accentunder;
+ %att-globalatts; >
+
+<!ATTLIST math:mmultiscripts
+ %att-subscriptshift;
+ %att-superscriptshift;
+ %att-globalatts; >
+
+<!-- presentation layout schemata: script empty elements -->
+
+<!ENTITY % pscreschema "math:mprescripts|math:none" >
+
+<!ELEMENT math:mprescripts EMPTY >
+<!ATTLIST math:mprescripts %att-globalatts; >
+
+<!ELEMENT math:none EMPTY >
+<!ATTLIST math:none %att-globalatts; >
+
+<!-- presentation layout schemata: tables -->
+
+<!ENTITY % ptabschema "math:mtable|math:mtr|math:mtd" >
+
+<!ATTLIST math:mtable %att-tableinfo;
+ %att-globalatts; >
+
+<!ATTLIST math:mtr %att-rowalign;
+ %att-columnalign;
+ %att-groupalign;
+ %att-globalatts; >
+
+<!ATTLIST math:mtd %att-rowalign;
+ %att-columnalign;
+ %att-groupalign;
+ %att-rowspan;
+ %att-columnspan;
+ %att-globalatts; >
+
+<!ENTITY % plschema "%pgenschema;|%pscrschema;|%ptabschema;" >
+
+<!-- empty presentation layout schemata -->
+
+<!ENTITY % peschema "math:maligngroup | math:malignmark" >
+
+<!ELEMENT math:malignmark EMPTY >
+
+<!ATTLIST math:malignmark %att-edge;
+ %att-globalatts; >
+
+<!ELEMENT math:maligngroup EMPTY >
+<!ATTLIST math:maligngroup %att-groupalign;
+ %att-globalatts; >
+
+<!-- presentation action schemata -->
+
+<!ENTITY % pactions "math:maction" >
+<!ATTLIST math:maction %att-actiontype;
+ %att-selection;
+ %att-globalatts; >
+
+<!-- Presentation entity for substitution into content tag constructs -->
+<!-- excludes elements which are not valid as expressions -->
+
+<!ENTITY % PresInCont "%ptoken; | %petoken; |
+ %plschema; | %peschema; | %pactions;">
+
+<!-- Presentation entity - all presentation constructs -->
+
+<!ENTITY % Presentation "%ptoken; | %petoken; | %pscreschema; |
+ %plschema; | %peschema; | %pactions;">
+
+<!-- ************************************************* -->
+<!-- Content element set -->
+<!-- attribute definitions -->
+
+<!ENTITY % att-base 'math:base CDATA "10"' >
+<!ENTITY % att-closure 'math:closure CDATA "closed"' >
+<!ENTITY % att-definition 'math:definitionURL CDATA ""' >
+<!ENTITY % att-encoding 'math:encoding CDATA ""' >
+<!ENTITY % att-nargs 'math:nargs CDATA "1"' >
+<!ENTITY % att-occurence 'math:occurence CDATA "function-model"' >
+<!ENTITY % att-order 'math:order CDATA "numeric"' >
+<!ENTITY % att-scope 'math:scope CDATA "local"' >
+<!ENTITY % att-type 'math:type CDATA #IMPLIED' >
+
+<!-- content leaf token elements -->
+
+<!ENTITY % ctoken "math:ci | math:cn" >
+
+<!ATTLIST math:ci %att-type;
+ %att-globalatts; >
+
+<!ATTLIST math:cn %att-type;
+ %att-base;
+ %att-globalatts; >
+
+<!-- content elements - specials -->
+
+<!ENTITY % cspecial "math:apply | math:reln | math:lambda" >
+
+<!ATTLIST math:apply %att-globalatts; >
+
+<!ATTLIST math:reln %att-globalatts; >
+
+<!ATTLIST math:lambda %att-globalatts; >
+
+<!-- content elements - others -->
+
+<!ENTITY % cother "math:condition | math:declare | math:sep" >
+
+<!ATTLIST math:condition %att-globalatts; >
+
+<!ATTLIST math:declare %att-type;
+ %att-scope;
+ %att-nargs;
+ %att-occurence;
+ %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:sep EMPTY >
+<!ATTLIST math:sep %att-globalatts; >
+
+<!-- content elements - semantic mapping -->
+
+<!ENTITY % csemantics "math:semantics | math:annotation | math:annotation-xml" >
+
+<!ATTLIST math:semantics %att-definition;
+ %att-globalatts; >
+
+<!ATTLIST math:annotation %att-encoding;
+ %att-globalatts; >
+
+<!ATTLIST math:annotation-xml %att-encoding;
+ %att-globalatts; >
+
+<!-- content elements - constructors -->
+
+<!ENTITY % cconstructor "math:interval | math:list | math:matrix | math:matrixrow | math:set |
+math:vector" >
+
+<!ATTLIST math:interval %att-closure;
+ %att-globalatts; >
+
+<!ATTLIST math:set %att-globalatts; >
+
+<!ATTLIST math:list %att-order;
+ %att-globalatts; >
+
+<!ATTLIST math:vector %att-globalatts; >
+
+<!ATTLIST math:matrix %att-globalatts; >
+
+<!ATTLIST math:matrixrow %att-globalatts; >
+
+<!-- content elements - operators -->
+
+<!ENTITY % cfuncop1ary "math:inverse | math:ident " >
+
+<!ELEMENT math:inverse EMPTY >
+<!ATTLIST math:inverse %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cfuncopnary "math:fn | math:compose" >
+
+<!ATTLIST math:fn %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:ident EMPTY >
+<!ATTLIST math:ident %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:compose EMPTY >
+<!ATTLIST math:compose %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithop1ary "math:abs | math:conjugate | math:exp | math:factorial" >
+
+<!ELEMENT math:exp EMPTY >
+<!ATTLIST math:exp %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:abs EMPTY >
+<!ATTLIST math:abs %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:conjugate EMPTY >
+<!ATTLIST math:conjugate %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:factorial EMPTY >
+<!ATTLIST math:factorial %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithop1or2ary "math:minus" >
+
+<!ELEMENT math:minus EMPTY >
+<!ATTLIST math:minus %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithop2ary "math:quotient | math:divide | math:power | math:rem" >
+
+<!ELEMENT math:quotient EMPTY >
+<!ATTLIST math:quotient %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:divide EMPTY >
+<!ATTLIST math:divide %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:power EMPTY >
+<!ATTLIST math:power %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:rem EMPTY >
+<!ATTLIST math:rem %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithopnary "math:plus | math:times | math:max | math:min | math:gcd" >
+
+<!ELEMENT math:plus EMPTY >
+<!ATTLIST math:plus %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:max EMPTY >
+<!ATTLIST math:max %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:min EMPTY >
+<!ATTLIST math:min %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:times EMPTY >
+<!ATTLIST math:times %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:gcd EMPTY >
+<!ATTLIST math:gcd %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithoproot "math:root" >
+
+<!ELEMENT math:root EMPTY >
+<!ATTLIST math:root %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicopquant "math:exists | math:forall" >
+
+<!ELEMENT math:exists EMPTY >
+<!ATTLIST math:exists %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:forall EMPTY >
+<!ATTLIST math:forall %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicopnary "math:and | math:or | math:xor" >
+
+<!ELEMENT math:and EMPTY >
+<!ATTLIST math:and %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:or EMPTY >
+<!ATTLIST math:or %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:xor EMPTY >
+<!ATTLIST math:xor %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicop1ary "math:not" >
+
+<!ELEMENT math:not EMPTY >
+<!ATTLIST math:not %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicop2ary "math:implies" >
+
+<!ELEMENT math:implies EMPTY >
+<!ATTLIST math:implies %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % ccalcop "math:log | math:int | math:diff | math:partialdiff" >
+
+<!ELEMENT math:log EMPTY >
+<!ATTLIST math:log %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:int EMPTY >
+<!ATTLIST math:int %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:diff EMPTY >
+<!ATTLIST math:diff %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:partialdiff EMPTY >
+<!ATTLIST math:partialdiff %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % ccalcop1ary "math:ln" >
+
+<!ELEMENT math:ln EMPTY >
+<!ATTLIST math:ln %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetop2ary "math:setdiff" >
+
+<!ELEMENT math:setdiff EMPTY >
+<!ATTLIST math:setdiff %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetopnary "math:union | math:intersect" >
+
+<!ELEMENT math:union EMPTY >
+<!ATTLIST math:union %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:intersect EMPTY >
+<!ATTLIST math:intersect %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cseqop "math:sum | math:product | math:limit" >
+
+<!ELEMENT math:sum EMPTY >
+<!ATTLIST math:sum %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:product EMPTY >
+<!ATTLIST math:product %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:limit EMPTY >
+<!ATTLIST math:limit %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % ctrigop "math:sin | math:cos | math:tan | math:sec | math:csc | math:cot | math:sinh
+ | math:cosh | math:tanh | math:sech | math:csch | math:coth
+ | math:arcsin | math:arccos | math:arctan" >
+
+<!ELEMENT math:sin EMPTY >
+<!ATTLIST math:sin %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:cos EMPTY >
+<!ATTLIST math:cos %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:tan EMPTY >
+<!ATTLIST math:tan %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:sec EMPTY >
+<!ATTLIST math:sec %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:csc EMPTY >
+<!ATTLIST math:csc %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:cot EMPTY >
+<!ATTLIST math:cot %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:sinh EMPTY >
+<!ATTLIST math:sinh %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:cosh EMPTY >
+<!ATTLIST math:cosh %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:tanh EMPTY >
+<!ATTLIST math:tanh %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:sech EMPTY >
+<!ATTLIST math:sech %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:csch EMPTY >
+<!ATTLIST math:csch %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:coth EMPTY >
+<!ATTLIST math:coth %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:arcsin EMPTY >
+<!ATTLIST math:arcsin %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:arccos EMPTY >
+<!ATTLIST math:arccos %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:arctan EMPTY >
+<!ATTLIST math:arctan %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cstatopnary "math:mean | math:sdev | math:variance | math:median | math:mode" >
+
+<!ELEMENT math:mean EMPTY >
+<!ATTLIST math:mean %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:sdev EMPTY >
+<!ATTLIST math:sdev %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:variance EMPTY >
+<!ATTLIST math:variance %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:median EMPTY >
+<!ATTLIST math:median %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:mode EMPTY >
+<!ATTLIST math:mode %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cstatopmoment "math:moment" >
+
+<!ELEMENT math:moment EMPTY >
+<!ATTLIST math:moment %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clalgop1ary "math:determinant | math:transpose" >
+
+<!ELEMENT math:determinant EMPTY >
+<!ATTLIST math:determinant %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:transpose EMPTY >
+<!ATTLIST math:transpose %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clalgopnary "math:selector" >
+
+<!ELEMENT math:selector EMPTY >
+<!ATTLIST math:selector %att-definition;
+ %att-globalatts; >
+
+<!-- content elements - relations -->
+
+<!ENTITY % cgenrel2ary "math:neq" >
+
+<!ELEMENT math:neq EMPTY >
+<!ATTLIST math:neq %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cgenrelnary "math:eq | math:leq | math:lt | math:geq | math:gt" >
+
+<!ELEMENT math:eq EMPTY >
+<!ATTLIST math:eq %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:gt EMPTY >
+<!ATTLIST math:gt %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:lt EMPTY >
+<!ATTLIST math:lt %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:geq EMPTY >
+<!ATTLIST math:geq %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:leq EMPTY >
+<!ATTLIST math:leq %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetrel2ary "math:in | math:notin | math:notsubset | math:notprsubset" >
+
+<!ELEMENT math:in EMPTY >
+<!ATTLIST math:in %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:notin EMPTY >
+<!ATTLIST math:notin %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:notsubset EMPTY >
+<!ATTLIST math:notsubset %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:notprsubset EMPTY >
+<!ATTLIST math:notprsubset %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetrelnary "math:subset | math:prsubset" >
+
+<!ELEMENT math:subset EMPTY >
+<!ATTLIST math:subset %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT math:prsubset EMPTY >
+<!ATTLIST math:prsubset %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cseqrel2ary "math:tendsto" >
+
+<!ELEMENT math:tendsto EMPTY >
+<!ATTLIST math:tendsto %att-definition;
+ %att-type;
+ %att-globalatts; >
+
+<!-- content elements - quantifiers -->
+
+<!ENTITY % cquantifier "math:lowlimit | math:uplimit | math:bvar | math:degree | math:logbase" >
+
+<!ATTLIST math:lowlimit %att-globalatts; >
+
+<!ATTLIST math:uplimit %att-globalatts; >
+
+<!ATTLIST math:bvar %att-globalatts; >
+
+<!ATTLIST math:degree %att-globalatts; >
+
+<!ATTLIST math:logbase %att-globalatts; >
+
+<!-- operator groups -->
+
+<!ENTITY % cop1ary "%cfuncop1ary; | %carithop1ary; | %clogicop1ary;
+ | %ccalcop1ary; | %ctrigop; | %clalgop1ary; " >
+
+<!ENTITY % cop2ary "%carithop2ary; | %clogicop2ary;| %csetop2ary; " >
+
+<!ENTITY % copnary "%cfuncopnary; | %carithopnary; | %clogicopnary;
+ | %csetopnary; | %cstatopnary; | %clalgopnary; " >
+
+<!ENTITY % copmisc "%carithoproot; | %carithop1or2ary; | %ccalcop;
+ | %cseqop; | %cstatopmoment; | %clogicopquant;" >
+
+<!-- relation groups -->
+
+<!ENTITY % crel2ary "%cgenrel2ary; | %csetrel2ary; | %cseqrel2ary; " >
+
+<!ENTITY % crelnary "%cgenrelnary; | %csetrelnary;" >
+
+<!-- content constructs - all -->
+
+<!ENTITY % Content "%ctoken; | %cspecial; | %cother; | %csemantics;
+ |%cconstructor; | %cquantifier;
+ |%cop1ary; |%cop2ary; |%copnary; |%copmisc;
+ |%crel2ary; |%crelnary;" >
+
+<!-- content constructs for substitution in presentation structures -->
+
+<!ENTITY % ContInPres "math:ci | math:cn | math:apply | math:fn | math:lambda | math:reln
+ | math:interval | math:list | math:matrix |math:matrixrow
+ | math:set | math:vector | math:semantics" > <!--dpc-->
+
+<!-- ************************************************* -->
+
+<!-- recursive definition for content of expressions -->
+<!-- include presentation tag constructs at lowest level -->
+<!-- so presentation layout schemata hold presentation or Content -->
+<!-- include Content tag constructs at lowest level -->
+<!-- so Content tokens hold PCDATA or Presentation at leaf level -->
+<!-- (for permitted substitutable elements in context) -->
+
+<!ENTITY % ContentExpression "(%Content; | %PresInCont;)* " >
+<!ENTITY % PresExpression "(%Presentation; | %ContInPres;)* " >
+<!ENTITY % MathExpression "(%PresInCont; | %ContInPres;)* " >
+
+<!-- content token elements (may hold embedded presentation constructs)
+-->
+
+<!ELEMENT math:ci (#PCDATA | %PresInCont;)* >
+<!ELEMENT math:cn (#PCDATA | math:sep | %PresInCont;)* >
+
+<!-- content special elements -->
+
+<!ELEMENT math:apply (%ContentExpression;) >
+<!ELEMENT math:reln (%ContentExpression;) >
+<!ELEMENT math:lambda (%ContentExpression;) >
+
+<!-- content other elements -->
+
+<!ELEMENT math:condition (%ContentExpression;) >
+<!ELEMENT math:declare (%ContentExpression;) >
+
+<!-- content semantics elements -->
+
+<!ELEMENT math:semantics (%ContentExpression;) >
+<!ELEMENT math:annotation (#PCDATA) >
+<!ELEMENT math:annotation-xml (%ContentExpression;) >
+
+<!-- content constructor elements -->
+
+<!ELEMENT math:interval (%ContentExpression;) >
+<!ELEMENT math:set (%ContentExpression;) >
+<!ELEMENT math:list (%ContentExpression;) >
+<!ELEMENT math:vector (%ContentExpression;) >
+<!ELEMENT math:matrix (%ContentExpression;) >
+<!ELEMENT math:matrixrow (%ContentExpression;) >
+
+<!-- content operator element (user-defined) -->
+
+<!ELEMENT math:fn (%ContentExpression;) >
+
+<!-- content quantifier elements -->
+
+<!ELEMENT math:lowlimit (%ContentExpression;) >
+<!ELEMENT math:uplimit (%ContentExpression;) >
+<!ELEMENT math:bvar (%ContentExpression;) >
+<!ELEMENT math:degree (%ContentExpression;) >
+<!ELEMENT math:logbase (%ContentExpression;) >
+
+<!-- ************************************************* -->
+<!-- presentation layout schema contain tokens, layout and content
+schema -->
+
+<!ELEMENT math:mstyle (%PresExpression;) >
+<!ELEMENT math:merror (%PresExpression;) >
+<!ELEMENT math:mphantom (%PresExpression;) >
+<!ELEMENT math:mrow (%PresExpression;) >
+<!ELEMENT math:mfrac (%PresExpression;) >
+<!ELEMENT math:msqrt (%PresExpression;) >
+<!ELEMENT math:mroot (%PresExpression;) >
+<!ELEMENT math:msub (%PresExpression;) >
+<!ELEMENT math:msup (%PresExpression;) >
+<!ELEMENT math:msubsup (%PresExpression;) >
+<!ELEMENT math:mmultiscripts (%PresExpression;) >
+<!ELEMENT math:munder (%PresExpression;) >
+<!ELEMENT math:mover (%PresExpression;) >
+<!ELEMENT math:munderover (%PresExpression;) >
+<!ELEMENT math:mtable (%PresExpression;) >
+<!ELEMENT math:mtr (%PresExpression;) >
+<!ELEMENT math:mtd (%PresExpression;) >
+<!ELEMENT math:maction (%PresExpression;) >
+<!ELEMENT math:mfenced (%PresExpression;) >
+<!ELEMENT math:mpadded (%PresExpression;) >
+
+<!-- presentation tokens contain PCDATA or malignmark constructs -->
+
+<!ELEMENT math:mi (#PCDATA | math:malignmark )* >
+<!ELEMENT math:mn (#PCDATA | math:malignmark )* >
+<!ELEMENT math:mo (#PCDATA | math:malignmark )* >
+<!ELEMENT math:mtext (#PCDATA | math:malignmark )* >
+<!ELEMENT math:ms (#PCDATA | math:malignmark )* >
+
+<!-- ************************************************* -->
+<!-- browser interface definition -->
+
+<!-- attributes for top level math element -->
+
+<!ENTITY % att-macros 'math:macros CDATA #IMPLIED' >
+<!ENTITY % att-mode 'math:mode CDATA #IMPLIED' >
+
+<!ENTITY % att-topinfo '%att-globalatts;
+ %att-macros;
+ %att-mode;' >
+
+<!-- attributes for browser interface element element -->
+
+<!ENTITY % att-name 'math:name CDATA #IMPLIED' >
+<!ENTITY % att-baseline 'math:baseline CDATA #IMPLIED' >
+<!ENTITY % att-overflow 'math:overflow
+(scroll|elide|truncate|scale) "scroll"' >
+<!ENTITY % att-altimg 'math:altimg CDATA #IMPLIED' >
+<!ENTITY % att-alttext 'math:alttext CDATA #IMPLIED' >
+
+<!ENTITY % att-browif '%att-type;
+ %att-name;
+ %att-height;
+ %att-width;
+ %att-baseline;
+ %att-overflow;
+ %att-altimg;
+ %att-alttext; ' >
+
+<!-- the top level math element -->
+<!-- math contains MathML encoded mathematics -->
+<!-- math has the browser info attributes iff it is the
+ browser interface element also -->
+
+<!ELEMENT math:math (%MathExpression;) >
+
+<!ATTLIST math:math %att-topinfo;
+ %att-browif; >
+
+
+<!-- ENTITY sets -->
+
+<!-- ... removed ... -->
+
+
+<!-- MathML new characters -->
+
+<!-- ... removed ... -->
+
+<!-- end of ENTITY sets -->
+<!-- end of DTD fragment -->
+<!-- ************************************************* -->
diff --git a/MathMLDTD/prj/build.lst b/MathMLDTD/prj/build.lst
new file mode 100644
index 000000000000..98f9bc77da80
--- /dev/null
+++ b/MathMLDTD/prj/build.lst
@@ -0,0 +1,3 @@
+md MathMLDTD : solenv NULL
+md MathMLDTD usr1 - all md_mkout NULL
+md MathMLDTD\prj get - all md_prj NULL
diff --git a/MathMLDTD/prj/d.lst b/MathMLDTD/prj/d.lst
new file mode 100644
index 000000000000..40d4a6a44f05
--- /dev/null
+++ b/MathMLDTD/prj/d.lst
@@ -0,0 +1,2 @@
+..\math.dtd %_DEST%\bin%_EXT%\math.dtd
+..\w3c_ipr_software_notice.html %_DEST%\bin%_EXT%\w3c_ipr_software_notice.html
diff --git a/MathMLDTD/w3c_ipr_software_notice.html b/MathMLDTD/w3c_ipr_software_notice.html
new file mode 100644
index 000000000000..3a4ed535c1a7
--- /dev/null
+++ b/MathMLDTD/w3c_ipr_software_notice.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- W3C IPR SOFTWARE NOTICE -->
+<!-- downloaded from: -->
+<!-- http://www.w3.org/Consortium/Legal/copyright-software-19980720 -->
+<!-- -->
+<!-- Changed: 24. July 2001 -->
+<!-- 1) removed link to stylesheet -->
+<!-- 2) removed "webmaster" link -->
+<!-- 3) changed site-relative URLs to absolute URLs -->
+<!-- 4) added this comment block -->
+<!-- Changes are intended to allow proper -->
+<!-- off-line viewing of the license. -->
+
+<html>
+<head>
+<meta name="generator" content="HTML Tidy, see www.w3.org">
+<meta http-equiv="Content-Type" content=
+"text/html; charset=iso-8859-1">
+<title>W3C IPR SOFTWARE NOTICE</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF">
+<h1>W3C<sup>&reg;</sup> SOFTWARE NOTICE AND LICENSE</h1>
+
+<h3>Copyright &copy; 1994-2001 <a href="http://www.w3.org/">World
+Wide Web Consortium</a>, (<a href=
+"http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de
+Recherche en Informatique et en Automatique</a>, <a href=
+"http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/</h3>
+
+<p>This W3C work (including software, documents, or other related
+items) is being provided by the copyright holders under the
+following license. By obtaining, using and/or copying this work,
+you (the licensee) agree that you have read, understood, and will
+comply with the following terms and conditions:</p>
+
+<p>Permission to use, copy, modify, and distribute this software
+and its documentation, with or without modification,&nbsp; for any
+purpose and without fee or royalty is hereby granted, provided that
+you include the following on ALL copies of the software and
+documentation or portions thereof, including modifications, that
+you make:</p>
+
+<ol>
+<li>The full text of this NOTICE in a location viewable to users of
+the redistributed or derivative work.</li>
+
+<li>Any pre-existing intellectual property disclaimers, notices, or
+terms and conditions. If none exist, a short notice of the
+following form (hypertext is preferred, text is permitted) should
+be used within the body of any redistributed or derivative code:
+"Copyright &copy; [$date-of-software] <a href="http://www.w3.org/">
+World Wide Web Consortium</a>, (<a href=
+"http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de
+Recherche en Informatique et en Automatique</a>, <a href=
+"http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/"</li>
+
+<li>Notice of any changes or modifications to the W3C files,
+including the date changes were made. (We recommend you provide
+URIs to the location from which the code is derived.)</li>
+</ol>
+
+<p>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND
+COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
+USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
+SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+SOFTWARE OR DOCUMENTATION.</p>
+
+<p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without
+specific, written prior permission. Title to copyright in this
+software and any associated documentation will at all times remain
+with copyright holders.</p>
+
+<p>____________________________________</p>
+
+<p>This formulation of W3C's notice and license became active on
+August 14 1998 so as to improve compatibility with GPL. This
+version ensures that W3C software licensing terms are no more
+restrictive than GPL and consequently W3C software may be
+distributed in GPL packages. See the <a href=
+"http://www.w3.org/Consortium/Legal/copyright-software-19980519.html">older formulation</a> for the
+policy prior to this date. Please see our <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">
+Copyright FAQ</a> for common questions about using materials from
+our site, including specific terms and conditions for packages like
+libwww, Amaya, and Jigsaw. Other questions about this notice can be
+directed to <a href="mailto:site-policy@w3.org">
+site-policy@w3.org</a>.<br>
+&nbsp;</p>
+
+<p>&nbsp;</p>
+
+</body>
+</html>
+
diff --git a/Mesa/inc/gl.h b/Mesa/inc/gl.h
new file mode 100644
index 000000000000..b427637e6ece
--- /dev/null
+++ b/Mesa/inc/gl.h
@@ -0,0 +1,2252 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef __gl_h_
+#define __gl_h_
+
+#if defined(USE_MGL_NAMESPACE)
+#include "gl_mangle.h"
+#endif
+
+
+/**********************************************************************
+ * Begin system-specific stuff. Do not do any of this when building
+ * for SciTech SNAP, as this is all done before this header file is
+ * included.
+ */
+#if !defined(__SCITECH_SNAP__)
+
+#if defined(__BEOS__)
+#include <stdlib.h> /* to get some BeOS-isms */
+#endif
+
+#if !defined(OPENSTEP) && (defined(NeXT) || defined(NeXT_PDO))
+#define OPENSTEP
+#endif
+
+#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
+#define __WIN32__
+#endif
+
+#if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__))
+# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
+# define GLAPI __declspec(dllexport)
+# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
+# define GLAPI __declspec(dllimport)
+# else /* for use with static link lib build of Win32 edition only */
+# define GLAPI extern
+# endif /* _STATIC_MESA support */
+# define GLAPIENTRY __stdcall
+#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
+# define GLAPI extern
+# define GLAPIENTRY __stdcall
+#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
+# define GLAPI __attribute__((visibility("default")))
+# define GLAPIENTRY
+#endif /* WIN32 && !CYGWIN */
+
+#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
+# define PRAGMA_EXPORT_SUPPORTED 1
+#endif
+
+/*
+ * WINDOWS: Include windows.h here to define APIENTRY.
+ * It is also useful when applications include this file by
+ * including only glut.h, since glut.h depends on windows.h.
+ * Applications needing to include windows.h with parms other
+ * than "WIN32_LEAN_AND_MEAN" may include windows.h before
+ * glut.h or gl.h.
+ */
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) \
+ && !defined(OPENSTEP) && !defined(__CYGWIN__) || defined(__MINGW32__)
+#include <GL/mesa_wgl.h>
+#endif
+
+#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED
+#pragma import on
+#endif
+
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY GLAPIENTRY
+#endif
+
+/* "P" suffix to be used for a pointer to a function */
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+
+#ifndef GLAPIENTRYP
+#define GLAPIENTRYP GLAPIENTRY *
+#endif
+
+#ifdef CENTERLINE_CLPP
+#define signed
+#endif
+
+#if defined(PRAGMA_EXPORT_SUPPORTED)
+#pragma export on
+#endif
+
+#endif /* !__SCITECH_SNAP__ */
+/*
+ * End system-specific stuff.
+ **********************************************************************/
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#define GL_VERSION_1_1 1
+#define GL_VERSION_1_2 1
+#define GL_VERSION_1_3 1
+#define GL_ARB_imaging 1
+
+
+/*
+ * Datatypes
+ */
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef unsigned int GLbitfield;
+typedef void GLvoid;
+typedef signed char GLbyte; /* 1-byte signed */
+typedef short GLshort; /* 2-byte signed */
+typedef int GLint; /* 4-byte signed */
+typedef unsigned char GLubyte; /* 1-byte unsigned */
+typedef unsigned short GLushort; /* 2-byte unsigned */
+typedef unsigned int GLuint; /* 4-byte unsigned */
+typedef int GLsizei; /* 4-byte signed */
+typedef float GLfloat; /* single precision float */
+typedef float GLclampf; /* single precision float in [0,1] */
+typedef double GLdouble; /* double precision float */
+typedef double GLclampd; /* double precision float in [0,1] */
+
+
+
+/*
+ * Constants
+ */
+
+/* Boolean values */
+#define GL_FALSE 0x0
+#define GL_TRUE 0x1
+
+/* Data types */
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_2_BYTES 0x1407
+#define GL_3_BYTES 0x1408
+#define GL_4_BYTES 0x1409
+#define GL_DOUBLE 0x140A
+
+/* Primitives */
+#define GL_POINTS 0x0000
+#define GL_LINES 0x0001
+#define GL_LINE_LOOP 0x0002
+#define GL_LINE_STRIP 0x0003
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_QUADS 0x0007
+#define GL_QUAD_STRIP 0x0008
+#define GL_POLYGON 0x0009
+
+/* Vertex Arrays */
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_NORMAL_ARRAY 0x8075
+#define GL_COLOR_ARRAY 0x8076
+#define GL_INDEX_ARRAY 0x8077
+#define GL_TEXTURE_COORD_ARRAY 0x8078
+#define GL_EDGE_FLAG_ARRAY 0x8079
+#define GL_VERTEX_ARRAY_SIZE 0x807A
+#define GL_VERTEX_ARRAY_TYPE 0x807B
+#define GL_VERTEX_ARRAY_STRIDE 0x807C
+#define GL_NORMAL_ARRAY_TYPE 0x807E
+#define GL_NORMAL_ARRAY_STRIDE 0x807F
+#define GL_COLOR_ARRAY_SIZE 0x8081
+#define GL_COLOR_ARRAY_TYPE 0x8082
+#define GL_COLOR_ARRAY_STRIDE 0x8083
+#define GL_INDEX_ARRAY_TYPE 0x8085
+#define GL_INDEX_ARRAY_STRIDE 0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
+#define GL_VERTEX_ARRAY_POINTER 0x808E
+#define GL_NORMAL_ARRAY_POINTER 0x808F
+#define GL_COLOR_ARRAY_POINTER 0x8090
+#define GL_INDEX_ARRAY_POINTER 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
+#define GL_V2F 0x2A20
+#define GL_V3F 0x2A21
+#define GL_C4UB_V2F 0x2A22
+#define GL_C4UB_V3F 0x2A23
+#define GL_C3F_V3F 0x2A24
+#define GL_N3F_V3F 0x2A25
+#define GL_C4F_N3F_V3F 0x2A26
+#define GL_T2F_V3F 0x2A27
+#define GL_T4F_V4F 0x2A28
+#define GL_T2F_C4UB_V3F 0x2A29
+#define GL_T2F_C3F_V3F 0x2A2A
+#define GL_T2F_N3F_V3F 0x2A2B
+#define GL_T2F_C4F_N3F_V3F 0x2A2C
+#define GL_T4F_C4F_N3F_V4F 0x2A2D
+
+/* Matrix Mode */
+#define GL_MATRIX_MODE 0x0BA0
+#define GL_MODELVIEW 0x1700
+#define GL_PROJECTION 0x1701
+#define GL_TEXTURE 0x1702
+
+/* Points */
+#define GL_POINT_SMOOTH 0x0B10
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_POINT_SIZE_RANGE 0x0B12
+
+/* Lines */
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_STIPPLE 0x0B24
+#define GL_LINE_STIPPLE_PATTERN 0x0B25
+#define GL_LINE_STIPPLE_REPEAT 0x0B26
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_LINE_WIDTH_RANGE 0x0B22
+
+/* Polygons */
+#define GL_POINT 0x1B00
+#define GL_LINE 0x1B01
+#define GL_FILL 0x1B02
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_POLYGON_STIPPLE 0x0B42
+#define GL_EDGE_FLAG 0x0B43
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_POLYGON_OFFSET_FILL 0x8037
+
+/* Display Lists */
+#define GL_COMPILE 0x1300
+#define GL_COMPILE_AND_EXECUTE 0x1301
+#define GL_LIST_BASE 0x0B32
+#define GL_LIST_INDEX 0x0B33
+#define GL_LIST_MODE 0x0B30
+
+/* Depth buffer */
+#define GL_NEVER 0x0200
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_BITS 0x0D56
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_COMPONENT 0x1902
+
+/* Lighting */
+#define GL_LIGHTING 0x0B50
+#define GL_LIGHT0 0x4000
+#define GL_LIGHT1 0x4001
+#define GL_LIGHT2 0x4002
+#define GL_LIGHT3 0x4003
+#define GL_LIGHT4 0x4004
+#define GL_LIGHT5 0x4005
+#define GL_LIGHT6 0x4006
+#define GL_LIGHT7 0x4007
+#define GL_SPOT_EXPONENT 0x1205
+#define GL_SPOT_CUTOFF 0x1206
+#define GL_CONSTANT_ATTENUATION 0x1207
+#define GL_LINEAR_ATTENUATION 0x1208
+#define GL_QUADRATIC_ATTENUATION 0x1209
+#define GL_AMBIENT 0x1200
+#define GL_DIFFUSE 0x1201
+#define GL_SPECULAR 0x1202
+#define GL_SHININESS 0x1601
+#define GL_EMISSION 0x1600
+#define GL_POSITION 0x1203
+#define GL_SPOT_DIRECTION 0x1204
+#define GL_AMBIENT_AND_DIFFUSE 0x1602
+#define GL_COLOR_INDEXES 0x1603
+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_SHADE_MODEL 0x0B54
+#define GL_FLAT 0x1D00
+#define GL_SMOOTH 0x1D01
+#define GL_COLOR_MATERIAL 0x0B57
+#define GL_COLOR_MATERIAL_FACE 0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
+#define GL_NORMALIZE 0x0BA1
+
+/* User clipping planes */
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE5 0x3005
+
+/* Accumulation buffer */
+#define GL_ACCUM_RED_BITS 0x0D58
+#define GL_ACCUM_GREEN_BITS 0x0D59
+#define GL_ACCUM_BLUE_BITS 0x0D5A
+#define GL_ACCUM_ALPHA_BITS 0x0D5B
+#define GL_ACCUM_CLEAR_VALUE 0x0B80
+#define GL_ACCUM 0x0100
+#define GL_ADD 0x0104
+#define GL_LOAD 0x0101
+#define GL_MULT 0x0103
+#define GL_RETURN 0x0102
+
+/* Alpha testing */
+#define GL_ALPHA_TEST 0x0BC0
+#define GL_ALPHA_TEST_REF 0x0BC2
+#define GL_ALPHA_TEST_FUNC 0x0BC1
+
+/* Blending */
+#define GL_BLEND 0x0BE2
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND_DST 0x0BE0
+#define GL_ZERO 0x0
+#define GL_ONE 0x1
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+
+/* Render Mode */
+#define GL_FEEDBACK 0x1C01
+#define GL_RENDER 0x1C00
+#define GL_SELECT 0x1C02
+
+/* Feedback */
+#define GL_2D 0x0600
+#define GL_3D 0x0601
+#define GL_3D_COLOR 0x0602
+#define GL_3D_COLOR_TEXTURE 0x0603
+#define GL_4D_COLOR_TEXTURE 0x0604
+#define GL_POINT_TOKEN 0x0701
+#define GL_LINE_TOKEN 0x0702
+#define GL_LINE_RESET_TOKEN 0x0707
+#define GL_POLYGON_TOKEN 0x0703
+#define GL_BITMAP_TOKEN 0x0704
+#define GL_DRAW_PIXEL_TOKEN 0x0705
+#define GL_COPY_PIXEL_TOKEN 0x0706
+#define GL_PASS_THROUGH_TOKEN 0x0700
+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+
+/* Selection */
+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
+
+/* Fog */
+#define GL_FOG 0x0B60
+#define GL_FOG_MODE 0x0B65
+#define GL_FOG_DENSITY 0x0B62
+#define GL_FOG_COLOR 0x0B66
+#define GL_FOG_INDEX 0x0B61
+#define GL_FOG_START 0x0B63
+#define GL_FOG_END 0x0B64
+#define GL_LINEAR 0x2601
+#define GL_EXP 0x0800
+#define GL_EXP2 0x0801
+
+/* Logic Ops */
+#define GL_LOGIC_OP 0x0BF1
+#define GL_INDEX_LOGIC_OP 0x0BF1
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_CLEAR 0x1500
+#define GL_SET 0x150F
+#define GL_COPY 0x1503
+#define GL_COPY_INVERTED 0x150C
+#define GL_NOOP 0x1505
+#define GL_INVERT 0x150A
+#define GL_AND 0x1501
+#define GL_NAND 0x150E
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_XOR 0x1506
+#define GL_EQUIV 0x1509
+#define GL_AND_REVERSE 0x1502
+#define GL_AND_INVERTED 0x1504
+#define GL_OR_REVERSE 0x150B
+#define GL_OR_INVERTED 0x150D
+
+/* Stencil */
+#define GL_STENCIL_BITS 0x0D57
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_STENCIL_INDEX 0x1901
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+
+/* Buffers, Pixel Drawing/Reading */
+#define GL_NONE 0x0
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+/*GL_FRONT 0x0404 */
+/*GL_BACK 0x0405 */
+/*GL_FRONT_AND_BACK 0x0408 */
+#define GL_FRONT_LEFT 0x0400
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_AUX0 0x0409
+#define GL_AUX1 0x040A
+#define GL_AUX2 0x040B
+#define GL_AUX3 0x040C
+#define GL_COLOR_INDEX 0x1900
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_LUMINANCE 0x1909
+#define GL_LUMINANCE_ALPHA 0x190A
+#define GL_ALPHA_BITS 0x0D55
+#define GL_RED_BITS 0x0D52
+#define GL_GREEN_BITS 0x0D53
+#define GL_BLUE_BITS 0x0D54
+#define GL_INDEX_BITS 0x0D51
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_AUX_BUFFERS 0x0C00
+#define GL_READ_BUFFER 0x0C02
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_BITMAP 0x1A00
+#define GL_COLOR 0x1800
+#define GL_DEPTH 0x1801
+#define GL_STENCIL 0x1802
+#define GL_DITHER 0x0BD0
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+
+/* Implementation limits */
+#define GL_MAX_LIST_NESTING 0x0B31
+#define GL_MAX_EVAL_ORDER 0x0D30
+#define GL_MAX_LIGHTS 0x0D31
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+
+/* Gets */
+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_CURRENT_INDEX 0x0B01
+#define GL_CURRENT_COLOR 0x0B00
+#define GL_CURRENT_NORMAL 0x0B02
+#define GL_CURRENT_RASTER_COLOR 0x0B04
+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
+#define GL_CURRENT_RASTER_INDEX 0x0B05
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
+#define GL_INDEX_CLEAR_VALUE 0x0C20
+#define GL_INDEX_MODE 0x0C30
+#define GL_INDEX_WRITEMASK 0x0C21
+#define GL_MODELVIEW_MATRIX 0x0BA6
+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
+#define GL_NAME_STACK_DEPTH 0x0D70
+#define GL_PROJECTION_MATRIX 0x0BA7
+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
+#define GL_RENDER_MODE 0x0C40
+#define GL_RGBA_MODE 0x0C31
+#define GL_TEXTURE_MATRIX 0x0BA8
+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
+#define GL_VIEWPORT 0x0BA2
+
+/* Evaluators */
+#define GL_AUTO_NORMAL 0x0D80
+#define GL_MAP1_COLOR_4 0x0D90
+#define GL_MAP1_INDEX 0x0D91
+#define GL_MAP1_NORMAL 0x0D92
+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
+#define GL_MAP1_VERTEX_3 0x0D97
+#define GL_MAP1_VERTEX_4 0x0D98
+#define GL_MAP2_COLOR_4 0x0DB0
+#define GL_MAP2_INDEX 0x0DB1
+#define GL_MAP2_NORMAL 0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
+#define GL_MAP2_VERTEX_3 0x0DB7
+#define GL_MAP2_VERTEX_4 0x0DB8
+#define GL_MAP1_GRID_DOMAIN 0x0DD0
+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
+#define GL_MAP2_GRID_DOMAIN 0x0DD2
+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
+#define GL_COEFF 0x0A00
+#define GL_ORDER 0x0A01
+#define GL_DOMAIN 0x0A02
+
+/* Hints */
+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+#define GL_POINT_SMOOTH_HINT 0x0C51
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_FOG_HINT 0x0C54
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+
+/* Scissor box */
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+
+/* Pixel Mode / Transfer */
+#define GL_MAP_COLOR 0x0D10
+#define GL_MAP_STENCIL 0x0D11
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_RED_SCALE 0x0D14
+#define GL_RED_BIAS 0x0D15
+#define GL_GREEN_SCALE 0x0D18
+#define GL_GREEN_BIAS 0x0D19
+#define GL_BLUE_SCALE 0x0D1A
+#define GL_BLUE_BIAS 0x0D1B
+#define GL_ALPHA_SCALE 0x0D1C
+#define GL_ALPHA_BIAS 0x0D1D
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+#define GL_PIXEL_MAP_S_TO_S 0x0C71
+#define GL_PIXEL_MAP_I_TO_I 0x0C70
+#define GL_PIXEL_MAP_I_TO_R 0x0C72
+#define GL_PIXEL_MAP_I_TO_G 0x0C73
+#define GL_PIXEL_MAP_I_TO_B 0x0C74
+#define GL_PIXEL_MAP_I_TO_A 0x0C75
+#define GL_PIXEL_MAP_R_TO_R 0x0C76
+#define GL_PIXEL_MAP_G_TO_G 0x0C77
+#define GL_PIXEL_MAP_B_TO_B 0x0C78
+#define GL_PIXEL_MAP_A_TO_A 0x0C79
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+
+/* Texture mapping */
+#define GL_TEXTURE_ENV 0x2300
+#define GL_TEXTURE_ENV_MODE 0x2200
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_ENV_COLOR 0x2201
+#define GL_TEXTURE_GEN_S 0x0C60
+#define GL_TEXTURE_GEN_T 0x0C61
+#define GL_TEXTURE_GEN_MODE 0x2500
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_BORDER 0x1005
+#define GL_TEXTURE_COMPONENTS 0x1003
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+#define GL_OBJECT_LINEAR 0x2401
+#define GL_OBJECT_PLANE 0x2501
+#define GL_EYE_LINEAR 0x2400
+#define GL_EYE_PLANE 0x2502
+#define GL_SPHERE_MAP 0x2402
+#define GL_DECAL 0x2101
+#define GL_MODULATE 0x2100
+#define GL_NEAREST 0x2600
+#define GL_REPEAT 0x2901
+#define GL_CLAMP 0x2900
+#define GL_S 0x2000
+#define GL_T 0x2001
+#define GL_R 0x2002
+#define GL_Q 0x2003
+#define GL_TEXTURE_GEN_R 0x0C62
+#define GL_TEXTURE_GEN_Q 0x0C63
+
+/* Utility */
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+
+/* Errors */
+#define GL_NO_ERROR 0x0
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_OUT_OF_MEMORY 0x0505
+
+/* glPush/PopAttrib bits */
+#define GL_CURRENT_BIT 0x00000001
+#define GL_POINT_BIT 0x00000002
+#define GL_LINE_BIT 0x00000004
+#define GL_POLYGON_BIT 0x00000008
+#define GL_POLYGON_STIPPLE_BIT 0x00000010
+#define GL_PIXEL_MODE_BIT 0x00000020
+#define GL_LIGHTING_BIT 0x00000040
+#define GL_FOG_BIT 0x00000080
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_ACCUM_BUFFER_BIT 0x00000200
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_VIEWPORT_BIT 0x00000800
+#define GL_TRANSFORM_BIT 0x00001000
+#define GL_ENABLE_BIT 0x00002000
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_HINT_BIT 0x00008000
+#define GL_EVAL_BIT 0x00010000
+#define GL_LIST_BIT 0x00020000
+#define GL_TEXTURE_BIT 0x00040000
+#define GL_SCISSOR_BIT 0x00080000
+#define GL_ALL_ATTRIB_BITS 0x000FFFFF
+
+
+/* OpenGL 1.1 */
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_TEXTURE_PRIORITY 0x8066
+#define GL_TEXTURE_RESIDENT 0x8067
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_ALPHA4 0x803B
+#define GL_ALPHA8 0x803C
+#define GL_ALPHA12 0x803D
+#define GL_ALPHA16 0x803E
+#define GL_LUMINANCE4 0x803F
+#define GL_LUMINANCE8 0x8040
+#define GL_LUMINANCE12 0x8041
+#define GL_LUMINANCE16 0x8042
+#define GL_LUMINANCE4_ALPHA4 0x8043
+#define GL_LUMINANCE6_ALPHA2 0x8044
+#define GL_LUMINANCE8_ALPHA8 0x8045
+#define GL_LUMINANCE12_ALPHA4 0x8046
+#define GL_LUMINANCE12_ALPHA12 0x8047
+#define GL_LUMINANCE16_ALPHA16 0x8048
+#define GL_INTENSITY 0x8049
+#define GL_INTENSITY4 0x804A
+#define GL_INTENSITY8 0x804B
+#define GL_INTENSITY12 0x804C
+#define GL_INTENSITY16 0x804D
+#define GL_R3_G3_B2 0x2A10
+#define GL_RGB4 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA16 0x805B
+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF
+#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
+
+
+
+/*
+ * Miscellaneous
+ */
+
+GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
+
+GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
+
+GLAPI void GLAPIENTRY glClear( GLbitfield mask );
+
+GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
+
+GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
+
+GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
+
+GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
+
+GLAPI void GLAPIENTRY glLogicOp( GLenum opcode );
+
+GLAPI void GLAPIENTRY glCullFace( GLenum mode );
+
+GLAPI void GLAPIENTRY glFrontFace( GLenum mode );
+
+GLAPI void GLAPIENTRY glPointSize( GLfloat size );
+
+GLAPI void GLAPIENTRY glLineWidth( GLfloat width );
+
+GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );
+
+GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );
+
+GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
+
+GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );
+
+GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );
+
+GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
+
+GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
+
+GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
+
+GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
+
+GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
+
+GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );
+
+GLAPI void GLAPIENTRY glReadBuffer( GLenum mode );
+
+GLAPI void GLAPIENTRY glEnable( GLenum cap );
+
+GLAPI void GLAPIENTRY glDisable( GLenum cap );
+
+GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );
+
+
+GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */
+
+GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */
+
+
+GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
+
+GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );
+
+GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );
+
+GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );
+
+
+GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );
+
+GLAPI void GLAPIENTRY glPopAttrib( void );
+
+
+GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */
+
+GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */
+
+
+GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );
+
+GLAPI GLenum GLAPIENTRY glGetError( void );
+
+GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );
+
+GLAPI void GLAPIENTRY glFinish( void );
+
+GLAPI void GLAPIENTRY glFlush( void );
+
+GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );
+
+
+/*
+ * Depth Buffer
+ */
+
+GLAPI void GLAPIENTRY glClearDepth( GLclampd depth );
+
+GLAPI void GLAPIENTRY glDepthFunc( GLenum func );
+
+GLAPI void GLAPIENTRY glDepthMask( GLboolean flag );
+
+GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
+
+
+/*
+ * Accumulation Buffer
+ */
+
+GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
+
+GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
+
+
+/*
+ * Transformation
+ */
+
+GLAPI void GLAPIENTRY glMatrixMode( GLenum mode );
+
+GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,
+ GLdouble bottom, GLdouble top,
+ GLdouble near_val, GLdouble far_val );
+
+GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,
+ GLdouble bottom, GLdouble top,
+ GLdouble near_val, GLdouble far_val );
+
+GLAPI void GLAPIENTRY glViewport( GLint x, GLint y,
+ GLsizei width, GLsizei height );
+
+GLAPI void GLAPIENTRY glPushMatrix( void );
+
+GLAPI void GLAPIENTRY glPopMatrix( void );
+
+GLAPI void GLAPIENTRY glLoadIdentity( void );
+
+GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );
+GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );
+
+GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );
+GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );
+
+GLAPI void GLAPIENTRY glRotated( GLdouble angle,
+ GLdouble x, GLdouble y, GLdouble z );
+GLAPI void GLAPIENTRY glRotatef( GLfloat angle,
+ GLfloat x, GLfloat y, GLfloat z );
+
+GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
+
+GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
+
+
+/*
+ * Display Lists
+ */
+
+GLAPI GLboolean GLAPIENTRY glIsList( GLuint list );
+
+GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );
+
+GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );
+
+GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );
+
+GLAPI void GLAPIENTRY glEndList( void );
+
+GLAPI void GLAPIENTRY glCallList( GLuint list );
+
+GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,
+ const GLvoid *lists );
+
+GLAPI void GLAPIENTRY glListBase( GLuint base );
+
+
+/*
+ * Drawing Functions
+ */
+
+GLAPI void GLAPIENTRY glBegin( GLenum mode );
+
+GLAPI void GLAPIENTRY glEnd( void );
+
+
+GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );
+GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );
+GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );
+GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );
+
+GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
+GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );
+GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
+
+GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
+GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
+GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
+GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
+
+GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glVertex2iv( const GLint *v );
+GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );
+
+GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glVertex3iv( const GLint *v );
+GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );
+
+GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glVertex4iv( const GLint *v );
+GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );
+
+
+GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
+GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
+GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
+GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
+GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
+
+GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );
+GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glNormal3iv( const GLint *v );
+GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );
+
+
+GLAPI void GLAPIENTRY glIndexd( GLdouble c );
+GLAPI void GLAPIENTRY glIndexf( GLfloat c );
+GLAPI void GLAPIENTRY glIndexi( GLint c );
+GLAPI void GLAPIENTRY glIndexs( GLshort c );
+GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */
+
+GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );
+GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );
+GLAPI void GLAPIENTRY glIndexiv( const GLint *c );
+GLAPI void GLAPIENTRY glIndexsv( const GLshort *c );
+GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */
+
+GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
+GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
+GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
+GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );
+GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
+GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
+GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
+GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
+
+GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,
+ GLbyte blue, GLbyte alpha );
+GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,
+ GLdouble blue, GLdouble alpha );
+GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,
+ GLfloat blue, GLfloat alpha );
+GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,
+ GLint blue, GLint alpha );
+GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,
+ GLshort blue, GLshort alpha );
+GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,
+ GLubyte blue, GLubyte alpha );
+GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,
+ GLuint blue, GLuint alpha );
+GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,
+ GLushort blue, GLushort alpha );
+
+
+GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );
+GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glColor3iv( const GLint *v );
+GLAPI void GLAPIENTRY glColor3sv( const GLshort *v );
+GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );
+GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );
+GLAPI void GLAPIENTRY glColor3usv( const GLushort *v );
+
+GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );
+GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glColor4iv( const GLint *v );
+GLAPI void GLAPIENTRY glColor4sv( const GLshort *v );
+GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );
+GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );
+GLAPI void GLAPIENTRY glColor4usv( const GLushort *v );
+
+
+GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );
+GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );
+GLAPI void GLAPIENTRY glTexCoord1i( GLint s );
+GLAPI void GLAPIENTRY glTexCoord1s( GLshort s );
+
+GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );
+GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );
+GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );
+GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );
+
+GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
+GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
+GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
+GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
+
+GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
+GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
+GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
+GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
+
+GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );
+GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );
+
+GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );
+GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );
+
+GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );
+GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );
+
+GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );
+GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );
+
+
+GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );
+GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );
+GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );
+GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );
+
+GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
+GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
+GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
+
+GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
+GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
+GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
+GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
+
+GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );
+GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );
+
+GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );
+GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );
+
+GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );
+GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );
+GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );
+GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );
+
+
+GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
+GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
+GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
+GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
+
+
+GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
+GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
+GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );
+GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
+
+
+/*
+ * Vertex Arrays (1.1)
+ */
+
+GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,
+ GLsizei stride, const GLvoid *ptr );
+
+GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,
+ const GLvoid *ptr );
+
+GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,
+ GLsizei stride, const GLvoid *ptr );
+
+GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,
+ const GLvoid *ptr );
+
+GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
+ GLsizei stride, const GLvoid *ptr );
+
+GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
+
+GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
+
+GLAPI void GLAPIENTRY glArrayElement( GLint i );
+
+GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
+
+GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,
+ GLenum type, const GLvoid *indices );
+
+GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,
+ const GLvoid *pointer );
+
+/*
+ * Lighting
+ */
+
+GLAPI void GLAPIENTRY glShadeModel( GLenum mode );
+
+GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );
+GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,
+ const GLfloat *params );
+GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,
+ const GLint *params );
+
+GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,
+ GLfloat *params );
+GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,
+ GLint *params );
+
+GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );
+GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
+GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );
+
+GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
+GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
+GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
+
+GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
+GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
+
+GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );
+
+
+/*
+ * Raster functions
+ */
+
+GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
+
+GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );
+
+GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );
+
+GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,
+ const GLfloat *values );
+GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,
+ const GLuint *values );
+GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,
+ const GLushort *values );
+
+GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
+GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
+GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
+
+GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,
+ GLfloat xorig, GLfloat yorig,
+ GLfloat xmove, GLfloat ymove,
+ const GLubyte *bitmap );
+
+GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,
+ GLsizei width, GLsizei height,
+ GLenum format, GLenum type,
+ GLvoid *pixels );
+
+GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,
+ GLenum format, GLenum type,
+ const GLvoid *pixels );
+
+GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,
+ GLsizei width, GLsizei height,
+ GLenum type );
+
+/*
+ * Stenciling
+ */
+
+GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
+
+GLAPI void GLAPIENTRY glStencilMask( GLuint mask );
+
+GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
+
+GLAPI void GLAPIENTRY glClearStencil( GLint s );
+
+
+
+/*
+ * Texture mapping
+ */
+
+GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
+GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
+
+GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
+GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
+GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
+
+GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
+GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
+GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
+
+
+GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
+
+GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
+GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
+
+GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
+GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
+
+
+GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
+GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
+
+GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,
+ const GLfloat *params );
+GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,
+ const GLint *params );
+
+GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,
+ GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,
+ GLenum pname, GLint *params );
+
+GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,
+ GLenum pname, GLfloat *params );
+GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,
+ GLenum pname, GLint *params );
+
+
+GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,
+ GLint internalFormat,
+ GLsizei width, GLint border,
+ GLenum format, GLenum type,
+ const GLvoid *pixels );
+
+GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,
+ GLint internalFormat,
+ GLsizei width, GLsizei height,
+ GLint border, GLenum format, GLenum type,
+ const GLvoid *pixels );
+
+GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,
+ GLenum format, GLenum type,
+ GLvoid *pixels );
+
+
+/* 1.1 functions */
+
+GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );
+
+GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
+
+GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );
+
+GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,
+ const GLuint *textures,
+ const GLclampf *priorities );
+
+GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,
+ const GLuint *textures,
+ GLboolean *residences );
+
+GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );
+
+
+GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,
+ GLint xoffset,
+ GLsizei width, GLenum format,
+ GLenum type, const GLvoid *pixels );
+
+
+GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height,
+ GLenum format, GLenum type,
+ const GLvoid *pixels );
+
+
+GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,
+ GLenum internalformat,
+ GLint x, GLint y,
+ GLsizei width, GLint border );
+
+
+GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,
+ GLenum internalformat,
+ GLint x, GLint y,
+ GLsizei width, GLsizei height,
+ GLint border );
+
+
+GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,
+ GLint xoffset, GLint x, GLint y,
+ GLsizei width );
+
+
+GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLint x, GLint y,
+ GLsizei width, GLsizei height );
+
+
+/*
+ * Evaluators
+ */
+
+GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,
+ GLint stride,
+ GLint order, const GLdouble *points );
+GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,
+ GLint stride,
+ GLint order, const GLfloat *points );
+
+GLAPI void GLAPIENTRY glMap2d( GLenum target,
+ GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
+ GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
+ const GLdouble *points );
+GLAPI void GLAPIENTRY glMap2f( GLenum target,
+ GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
+ GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
+ const GLfloat *points );
+
+GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
+GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
+GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
+
+GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );
+GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );
+
+GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );
+GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );
+
+GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
+GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
+
+GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );
+GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );
+
+GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
+GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
+
+GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,
+ GLint vn, GLdouble v1, GLdouble v2 );
+GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,
+ GLint vn, GLfloat v1, GLfloat v2 );
+
+GLAPI void GLAPIENTRY glEvalPoint1( GLint i );
+
+GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );
+
+GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
+
+GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
+
+
+/*
+ * Fog
+ */
+
+GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );
+
+GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );
+
+GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );
+
+GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );
+
+
+/*
+ * Selection and Feedback
+ */
+
+GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
+
+GLAPI void GLAPIENTRY glPassThrough( GLfloat token );
+
+GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
+
+GLAPI void GLAPIENTRY glInitNames( void );
+
+GLAPI void GLAPIENTRY glLoadName( GLuint name );
+
+GLAPI void GLAPIENTRY glPushName( GLuint name );
+
+GLAPI void GLAPIENTRY glPopName( void );
+
+
+
+/*
+ * OpenGL 1.2
+ */
+
+#define GL_RESCALE_NORMAL 0x803A
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
+#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_BGR 0x80E0
+#define GL_BGRA 0x80E1
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
+#define GL_SINGLE_COLOR 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
+#define GL_TEXTURE_MIN_LOD 0x813A
+#define GL_TEXTURE_MAX_LOD 0x813B
+#define GL_TEXTURE_BASE_LEVEL 0x813C
+#define GL_TEXTURE_MAX_LEVEL 0x813D
+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
+#define GL_PACK_SKIP_IMAGES 0x806B
+#define GL_PACK_IMAGE_HEIGHT 0x806C
+#define GL_UNPACK_SKIP_IMAGES 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
+#define GL_TEXTURE_3D 0x806F
+#define GL_PROXY_TEXTURE_3D 0x8070
+#define GL_TEXTURE_DEPTH 0x8071
+#define GL_TEXTURE_WRAP_R 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
+#define GL_TEXTURE_BINDING_3D 0x806A
+
+GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
+ GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
+
+GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
+ GLint internalFormat,
+ GLsizei width, GLsizei height,
+ GLsizei depth, GLint border,
+ GLenum format, GLenum type,
+ const GLvoid *pixels );
+
+GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLint zoffset, GLsizei width,
+ GLsizei height, GLsizei depth,
+ GLenum format,
+ GLenum type, const GLvoid *pixels);
+
+GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLint zoffset, GLint x,
+ GLint y, GLsizei width,
+ GLsizei height );
+
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+
+/*
+ * GL_ARB_imaging
+ */
+
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_COLOR_TABLE 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+#define GL_PROXY_COLOR_TABLE 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE 0x80D6
+#define GL_COLOR_TABLE_BIAS 0x80D7
+#define GL_COLOR_TABLE_FORMAT 0x80D8
+#define GL_COLOR_TABLE_WIDTH 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+#define GL_CONVOLUTION_1D 0x8010
+#define GL_CONVOLUTION_2D 0x8011
+#define GL_SEPARABLE_2D 0x8012
+#define GL_CONVOLUTION_BORDER_MODE 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
+#define GL_REDUCE 0x8016
+#define GL_CONVOLUTION_FORMAT 0x8017
+#define GL_CONVOLUTION_WIDTH 0x8018
+#define GL_CONVOLUTION_HEIGHT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+#define GL_CONSTANT_BORDER 0x8151
+#define GL_REPLICATE_BORDER 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
+#define GL_COLOR_MATRIX 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+#define GL_HISTOGRAM 0x8024
+#define GL_PROXY_HISTOGRAM 0x8025
+#define GL_HISTOGRAM_WIDTH 0x8026
+#define GL_HISTOGRAM_FORMAT 0x8027
+#define GL_HISTOGRAM_RED_SIZE 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+#define GL_HISTOGRAM_SINK 0x802D
+#define GL_MINMAX 0x802E
+#define GL_MINMAX_FORMAT 0x802F
+#define GL_MINMAX_SINK 0x8030
+#define GL_TABLE_TOO_LARGE 0x8031
+#define GL_BLEND_EQUATION 0x8009
+#define GL_MIN 0x8007
+#define GL_MAX 0x8008
+#define GL_FUNC_ADD 0x8006
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_BLEND_COLOR 0x8005
+
+
+GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
+ GLsizei width, GLenum format,
+ GLenum type, const GLvoid *table );
+
+GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
+ GLsizei start, GLsizei count,
+ GLenum format, GLenum type,
+ const GLvoid *data );
+
+GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
+ const GLint *params);
+
+GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
+ const GLfloat *params);
+
+GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
+ GLint x, GLint y, GLsizei width );
+
+GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
+ GLint x, GLint y, GLsizei width );
+
+GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
+ GLenum type, GLvoid *table );
+
+GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
+ GLfloat *params );
+
+GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
+ GLint *params );
+
+GLAPI void GLAPIENTRY glBlendEquation( GLenum mode );
+
+GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
+ GLclampf blue, GLclampf alpha );
+
+GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
+ GLenum internalformat, GLboolean sink );
+
+GLAPI void GLAPIENTRY glResetHistogram( GLenum target );
+
+GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
+ GLenum format, GLenum type,
+ GLvoid *values );
+
+GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
+ GLfloat *params );
+
+GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
+ GLint *params );
+
+GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
+ GLboolean sink );
+
+GLAPI void GLAPIENTRY glResetMinmax( GLenum target );
+
+GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
+ GLenum format, GLenum types,
+ GLvoid *values );
+
+GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
+ GLfloat *params );
+
+GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
+ GLint *params );
+
+GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
+ GLenum internalformat, GLsizei width, GLenum format, GLenum type,
+ const GLvoid *image );
+
+GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
+ GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
+ GLenum type, const GLvoid *image );
+
+GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
+ GLfloat params );
+
+GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
+ const GLfloat *params );
+
+GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
+ GLint params );
+
+GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
+ const GLint *params );
+
+GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
+ GLenum internalformat, GLint x, GLint y, GLsizei width );
+
+GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
+ GLenum internalformat, GLint x, GLint y, GLsizei width,
+ GLsizei height);
+
+GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
+ GLenum type, GLvoid *image );
+
+GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
+ GLfloat *params );
+
+GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
+ GLint *params );
+
+GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
+ GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
+ GLenum type, const GLvoid *row, const GLvoid *column );
+
+GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
+ GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
+
+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
+
+
+
+/*
+ * OpenGL 1.3
+ */
+
+/* multitexture */
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE3 0x84C3
+#define GL_TEXTURE4 0x84C4
+#define GL_TEXTURE5 0x84C5
+#define GL_TEXTURE6 0x84C6
+#define GL_TEXTURE7 0x84C7
+#define GL_TEXTURE8 0x84C8
+#define GL_TEXTURE9 0x84C9
+#define GL_TEXTURE10 0x84CA
+#define GL_TEXTURE11 0x84CB
+#define GL_TEXTURE12 0x84CC
+#define GL_TEXTURE13 0x84CD
+#define GL_TEXTURE14 0x84CE
+#define GL_TEXTURE15 0x84CF
+#define GL_TEXTURE16 0x84D0
+#define GL_TEXTURE17 0x84D1
+#define GL_TEXTURE18 0x84D2
+#define GL_TEXTURE19 0x84D3
+#define GL_TEXTURE20 0x84D4
+#define GL_TEXTURE21 0x84D5
+#define GL_TEXTURE22 0x84D6
+#define GL_TEXTURE23 0x84D7
+#define GL_TEXTURE24 0x84D8
+#define GL_TEXTURE25 0x84D9
+#define GL_TEXTURE26 0x84DA
+#define GL_TEXTURE27 0x84DB
+#define GL_TEXTURE28 0x84DC
+#define GL_TEXTURE29 0x84DD
+#define GL_TEXTURE30 0x84DE
+#define GL_TEXTURE31 0x84DF
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
+#define GL_MAX_TEXTURE_UNITS 0x84E2
+/* texture_cube_map */
+#define GL_NORMAL_MAP 0x8511
+#define GL_REFLECTION_MAP 0x8512
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
+/* texture_compression */
+#define GL_COMPRESSED_ALPHA 0x84E9
+#define GL_COMPRESSED_LUMINANCE 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
+#define GL_COMPRESSED_INTENSITY 0x84EC
+#define GL_COMPRESSED_RGB 0x84ED
+#define GL_COMPRESSED_RGBA 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
+#define GL_TEXTURE_COMPRESSED 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
+/* multisample */
+#define GL_MULTISAMPLE 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
+#define GL_SAMPLE_COVERAGE 0x80A0
+#define GL_SAMPLE_BUFFERS 0x80A8
+#define GL_SAMPLES 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
+#define GL_MULTISAMPLE_BIT 0x20000000
+/* transpose_matrix */
+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
+/* texture_env_combine */
+#define GL_COMBINE 0x8570
+#define GL_COMBINE_RGB 0x8571
+#define GL_COMBINE_ALPHA 0x8572
+#define GL_SOURCE0_RGB 0x8580
+#define GL_SOURCE1_RGB 0x8581
+#define GL_SOURCE2_RGB 0x8582
+#define GL_SOURCE0_ALPHA 0x8588
+#define GL_SOURCE1_ALPHA 0x8589
+#define GL_SOURCE2_ALPHA 0x858A
+#define GL_OPERAND0_RGB 0x8590
+#define GL_OPERAND1_RGB 0x8591
+#define GL_OPERAND2_RGB 0x8592
+#define GL_OPERAND0_ALPHA 0x8598
+#define GL_OPERAND1_ALPHA 0x8599
+#define GL_OPERAND2_ALPHA 0x859A
+#define GL_RGB_SCALE 0x8573
+#define GL_ADD_SIGNED 0x8574
+#define GL_INTERPOLATE 0x8575
+#define GL_SUBTRACT 0x84E7
+#define GL_CONSTANT 0x8576
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PREVIOUS 0x8578
+/* texture_env_dot3 */
+#define GL_DOT3_RGB 0x86AE
+#define GL_DOT3_RGBA 0x86AF
+/* texture_border_clamp */
+#define GL_CLAMP_TO_BORDER 0x812D
+
+GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
+
+GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
+
+GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
+
+GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
+
+GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
+
+GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
+
+GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
+
+GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
+
+GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
+
+GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
+
+GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
+
+GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
+
+GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
+
+
+GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
+
+GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
+
+GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
+
+GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
+
+GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
+
+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
+
+
+/*
+ * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
+ */
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+
+#define GL_TEXTURE0_ARB 0x84C0
+#define GL_TEXTURE1_ARB 0x84C1
+#define GL_TEXTURE2_ARB 0x84C2
+#define GL_TEXTURE3_ARB 0x84C3
+#define GL_TEXTURE4_ARB 0x84C4
+#define GL_TEXTURE5_ARB 0x84C5
+#define GL_TEXTURE6_ARB 0x84C6
+#define GL_TEXTURE7_ARB 0x84C7
+#define GL_TEXTURE8_ARB 0x84C8
+#define GL_TEXTURE9_ARB 0x84C9
+#define GL_TEXTURE10_ARB 0x84CA
+#define GL_TEXTURE11_ARB 0x84CB
+#define GL_TEXTURE12_ARB 0x84CC
+#define GL_TEXTURE13_ARB 0x84CD
+#define GL_TEXTURE14_ARB 0x84CE
+#define GL_TEXTURE15_ARB 0x84CF
+#define GL_TEXTURE16_ARB 0x84D0
+#define GL_TEXTURE17_ARB 0x84D1
+#define GL_TEXTURE18_ARB 0x84D2
+#define GL_TEXTURE19_ARB 0x84D3
+#define GL_TEXTURE20_ARB 0x84D4
+#define GL_TEXTURE21_ARB 0x84D5
+#define GL_TEXTURE22_ARB 0x84D6
+#define GL_TEXTURE23_ARB 0x84D7
+#define GL_TEXTURE24_ARB 0x84D8
+#define GL_TEXTURE25_ARB 0x84D9
+#define GL_TEXTURE26_ARB 0x84DA
+#define GL_TEXTURE27_ARB 0x84DB
+#define GL_TEXTURE28_ARB 0x84DC
+#define GL_TEXTURE29_ARB 0x84DD
+#define GL_TEXTURE30_ARB 0x84DE
+#define GL_TEXTURE31_ARB 0x84DF
+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+
+GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
+GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);
+GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);
+GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);
+GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);
+GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);
+GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);
+GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);
+GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);
+GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);
+GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
+GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);
+GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
+GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);
+GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
+GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);
+GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
+GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);
+GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
+GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);
+GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
+GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);
+GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
+GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);
+GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
+GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);
+GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);
+GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
+GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
+GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);
+GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);
+
+typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
+
+#endif /* GL_ARB_multitexture */
+
+
+
+/*
+ * Define this token if you want "old-style" header file behaviour (extensions
+ * defined in gl.h). Otherwise, extensions will be included from glext.h.
+ */
+#if defined(GL_GLEXT_LEGACY)
+
+/* All extensions that used to be here are now found in glext.h */
+
+#else /* GL_GLEXT_LEGACY */
+
+#include <GL/glext.h>
+
+#endif /* GL_GLEXT_LEGACY */
+
+
+
+#if GL_ARB_shader_objects
+
+#ifndef GL_MESA_shader_debug
+#define GL_MESA_shader_debug 1
+
+#define GL_DEBUG_OBJECT_MESA 0x8759
+#define GL_DEBUG_PRINT_MESA 0x875A
+#define GL_DEBUG_ASSERT_MESA 0x875B
+
+GLAPI GLhandleARB GLAPIENTRY glCreateDebugObjectMESA (void);
+GLAPI void GLAPIENTRY glClearDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType);
+GLAPI void GLAPIENTRY glGetDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength,
+ GLsizei *length, GLcharARB *debugLog);
+GLAPI GLsizei GLAPIENTRY glGetDebugLogLengthMESA (GLhandleARB obj, GLenum logType, GLenum shaderType);
+
+#endif /* GL_MESA_shader_debug */
+
+#endif /* GL_ARB_shader_objects */
+
+
+/*
+ * ???. GL_MESA_packed_depth_stencil
+ * XXX obsolete
+ */
+#ifndef GL_MESA_packed_depth_stencil
+#define GL_MESA_packed_depth_stencil 1
+
+#define GL_DEPTH_STENCIL_MESA 0x8750
+#define GL_UNSIGNED_INT_24_8_MESA 0x8751
+#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
+#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753
+#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
+
+#endif /* GL_MESA_packed_depth_stencil */
+
+
+#ifndef GL_MESA_program_debug
+#define GL_MESA_program_debug 1
+
+#define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0
+#define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1
+#define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2
+#define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3
+#define GL_VERTEX_PROGRAM_POSITION_MESA 0x8bb4
+#define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8bb5
+#define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6
+#define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7
+
+typedef void (*GLprogramcallbackMESA)(GLenum target, GLvoid *data);
+
+GLAPI void GLAPIENTRY glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data);
+
+GLAPI void GLAPIENTRY glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v);
+
+#endif /* GL_MESA_program_debug */
+
+
+#ifndef GL_ATI_blend_equation_separate
+#define GL_ATI_blend_equation_separate 1
+
+#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D
+
+GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA );
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA);
+
+#endif /* GL_ATI_blend_equation_separate */
+
+
+
+/**
+ ** NOTE!!!!! If you add new functions to this file, or update
+ ** glext.h be sure to regenerate the gl_mangle.h file. See comments
+ ** in that file for details.
+ **/
+
+
+
+/**********************************************************************
+ * Begin system-specific stuff
+ */
+#if defined(PRAGMA_EXPORT_SUPPORTED)
+#pragma export off
+#endif
+
+#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED
+#pragma import off
+#endif
+/*
+ * End system-specific stuff
+ **********************************************************************/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gl_h_ */
diff --git a/Mesa/inc/gl_mangle.h b/Mesa/inc/gl_mangle.h
new file mode 100644
index 000000000000..369b8a0fc6d5
--- /dev/null
+++ b/Mesa/inc/gl_mangle.h
@@ -0,0 +1,1568 @@
+#if 0
+#define GL_MANGLE_C1 "DO NOT EDIT!!! - TO REGENERATE from gl.h, EXECUTE THIS FILE IN SHELL (/bin/sh) and save the output"
+#define GL_MANGLE_C2 "This file is used to create GL function protypes and aliases for the function names"
+ files="gl.h glext.h"
+#define GL_MANGLE_C3 "get regeneration header - copy everything in this file above the 'REGENERATE_TO_END' line"
+ awk '!done; /^\/\*REGENERATE_TO_END/ {done=1}' $0
+ echo ""
+#define GL_MANGLE_C4 get aliases
+ grep '^GLAPI' $files | sed -e 's/.*ENTRY gl\([^( ]*\).*$/#define gl\1 MANGLE(\1)/' | sort | uniq
+ echo ""
+ echo "#endif /* GL_MANGLE_H */"
+ exit
+#endif /* REGENERATION */
+
+/*
+ * If you compile Mesa with USE_MGL_NAMESPACE defined then you can link
+ * your application both with OpenGL and Mesa. The Mesa functions will
+ * be redefined so they are prefixed with "mgl" instead of "gl".
+ * Mgl contributed by Randy Frank (rfrank@rsinc.com)
+ * Regneration code contributed by Ray Tice (rayt@ma.ultra.net)
+ */
+
+#ifndef GL_MANGLE_H
+#define GL_MANGLE_H
+
+#ifndef MANGLE
+#define MANGLE(x) mgl##x
+#endif /*MANGLE*/
+
+/*REGENERATE_TO_END-----------ALL LINES BELOW HERE GET REPLACED ON REGENERATION */
+
+#define glAccum MANGLE(Accum)
+#define glActiveStencilFaceEXT MANGLE(ActiveStencilFaceEXT)
+#define glActiveTextureARB MANGLE(ActiveTextureARB)
+#define glActiveTexture MANGLE(ActiveTexture)
+#define glActiveVaryingNV MANGLE(ActiveVaryingNV)
+#define glAlphaFragmentOp1ATI MANGLE(AlphaFragmentOp1ATI)
+#define glAlphaFragmentOp2ATI MANGLE(AlphaFragmentOp2ATI)
+#define glAlphaFragmentOp3ATI MANGLE(AlphaFragmentOp3ATI)
+#define glAlphaFunc MANGLE(AlphaFunc)
+#define glApplyTextureEXT MANGLE(ApplyTextureEXT)
+#define glAreProgramsResidentNV MANGLE(AreProgramsResidentNV)
+#define glAreTexturesResidentEXT MANGLE(AreTexturesResidentEXT)
+#define glAreTexturesResident MANGLE(AreTexturesResident)
+#define glArrayElementEXT MANGLE(ArrayElementEXT)
+#define glArrayElement MANGLE(ArrayElement)
+#define glArrayObjectATI MANGLE(ArrayObjectATI)
+#define glAsyncMarkerSGIX MANGLE(AsyncMarkerSGIX)
+#define glAttachObjectARB MANGLE(AttachObjectARB)
+#define glAttachShader MANGLE(AttachShader)
+#define glBeginFragmentShaderATI MANGLE(BeginFragmentShaderATI)
+#define glBegin MANGLE(Begin)
+#define glBeginOcclusionQueryNV MANGLE(BeginOcclusionQueryNV)
+#define glBeginQueryARB MANGLE(BeginQueryARB)
+#define glBeginQuery MANGLE(BeginQuery)
+#define glBeginTransformFeedbackNV MANGLE(BeginTransformFeedbackNV)
+#define glBeginVertexShaderEXT MANGLE(BeginVertexShaderEXT)
+#define glBindAttribLocationARB MANGLE(BindAttribLocationARB)
+#define glBindAttribLocation MANGLE(BindAttribLocation)
+#define glBindBufferARB MANGLE(BindBufferARB)
+#define glBindBufferBaseNV MANGLE(BindBufferBaseNV)
+#define glBindBuffer MANGLE(BindBuffer)
+#define glBindBufferOffsetNV MANGLE(BindBufferOffsetNV)
+#define glBindBufferRangeNV MANGLE(BindBufferRangeNV)
+#define glBindFragDataLocationEXT MANGLE(BindFragDataLocationEXT)
+#define glBindFragmentShaderATI MANGLE(BindFragmentShaderATI)
+#define glBindFramebufferEXT MANGLE(BindFramebufferEXT)
+#define glBindLightParameterEXT MANGLE(BindLightParameterEXT)
+#define glBindMaterialParameterEXT MANGLE(BindMaterialParameterEXT)
+#define glBindParameterEXT MANGLE(BindParameterEXT)
+#define glBindProgramARB MANGLE(BindProgramARB)
+#define glBindProgramNV MANGLE(BindProgramNV)
+#define glBindRenderbufferEXT MANGLE(BindRenderbufferEXT)
+#define glBindTexGenParameterEXT MANGLE(BindTexGenParameterEXT)
+#define glBindTextureEXT MANGLE(BindTextureEXT)
+#define glBindTexture MANGLE(BindTexture)
+#define glBindTextureUnitParameterEXT MANGLE(BindTextureUnitParameterEXT)
+#define glBindVertexArrayAPPLE MANGLE(BindVertexArrayAPPLE)
+#define glBindVertexShaderEXT MANGLE(BindVertexShaderEXT)
+#define glBinormal3bEXT MANGLE(Binormal3bEXT)
+#define glBinormal3bvEXT MANGLE(Binormal3bvEXT)
+#define glBinormal3dEXT MANGLE(Binormal3dEXT)
+#define glBinormal3dvEXT MANGLE(Binormal3dvEXT)
+#define glBinormal3fEXT MANGLE(Binormal3fEXT)
+#define glBinormal3fvEXT MANGLE(Binormal3fvEXT)
+#define glBinormal3iEXT MANGLE(Binormal3iEXT)
+#define glBinormal3ivEXT MANGLE(Binormal3ivEXT)
+#define glBinormal3sEXT MANGLE(Binormal3sEXT)
+#define glBinormal3svEXT MANGLE(Binormal3svEXT)
+#define glBinormalPointerEXT MANGLE(BinormalPointerEXT)
+#define glBitmap MANGLE(Bitmap)
+#define glBlendColorEXT MANGLE(BlendColorEXT)
+#define glBlendColor MANGLE(BlendColor)
+#define glBlendEquationEXT MANGLE(BlendEquationEXT)
+#define glBlendEquation MANGLE(BlendEquation)
+#define glBlendEquationSeparateATI MANGLE(BlendEquationSeparateATI)
+#define glBlendEquationSeparateEXT MANGLE(BlendEquationSeparateEXT)
+#define glBlendEquationSeparate MANGLE(BlendEquationSeparate)
+#define glBlendFunc MANGLE(BlendFunc)
+#define glBlendFuncSeparateEXT MANGLE(BlendFuncSeparateEXT)
+#define glBlendFuncSeparateINGR MANGLE(BlendFuncSeparateINGR)
+#define glBlendFuncSeparate MANGLE(BlendFuncSeparate)
+#define glBlitFramebufferEXT MANGLE(BlitFramebufferEXT)
+#define glBufferDataARB MANGLE(BufferDataARB)
+#define glBufferData MANGLE(BufferData)
+#define glBufferParameteriAPPLE MANGLE(BufferParameteriAPPLE)
+#define glBufferSubDataARB MANGLE(BufferSubDataARB)
+#define glBufferSubData MANGLE(BufferSubData)
+#define glCallList MANGLE(CallList)
+#define glCallLists MANGLE(CallLists)
+#define glCheckFramebufferStatusEXT MANGLE(CheckFramebufferStatusEXT)
+#define glClampColorARB MANGLE(ClampColorARB)
+#define glClearAccum MANGLE(ClearAccum)
+#define glClearColorIiEXT MANGLE(ClearColorIiEXT)
+#define glClearColorIuiEXT MANGLE(ClearColorIuiEXT)
+#define glClearColor MANGLE(ClearColor)
+#define glClearDebugLogMESA MANGLE(ClearDebugLogMESA)
+#define glClearDepthdNV MANGLE(ClearDepthdNV)
+#define glClearDepth MANGLE(ClearDepth)
+#define glClearIndex MANGLE(ClearIndex)
+#define glClear MANGLE(Clear)
+#define glClearStencil MANGLE(ClearStencil)
+#define glClientActiveTextureARB MANGLE(ClientActiveTextureARB)
+#define glClientActiveTexture MANGLE(ClientActiveTexture)
+#define glClientActiveVertexStreamATI MANGLE(ClientActiveVertexStreamATI)
+#define glClipPlane MANGLE(ClipPlane)
+#define glColor3b MANGLE(Color3b)
+#define glColor3bv MANGLE(Color3bv)
+#define glColor3d MANGLE(Color3d)
+#define glColor3dv MANGLE(Color3dv)
+#define glColor3f MANGLE(Color3f)
+#define glColor3fVertex3fSUN MANGLE(Color3fVertex3fSUN)
+#define glColor3fVertex3fvSUN MANGLE(Color3fVertex3fvSUN)
+#define glColor3fv MANGLE(Color3fv)
+#define glColor3hNV MANGLE(Color3hNV)
+#define glColor3hvNV MANGLE(Color3hvNV)
+#define glColor3i MANGLE(Color3i)
+#define glColor3iv MANGLE(Color3iv)
+#define glColor3s MANGLE(Color3s)
+#define glColor3sv MANGLE(Color3sv)
+#define glColor3ub MANGLE(Color3ub)
+#define glColor3ubv MANGLE(Color3ubv)
+#define glColor3ui MANGLE(Color3ui)
+#define glColor3uiv MANGLE(Color3uiv)
+#define glColor3us MANGLE(Color3us)
+#define glColor3usv MANGLE(Color3usv)
+#define glColor4b MANGLE(Color4b)
+#define glColor4bv MANGLE(Color4bv)
+#define glColor4d MANGLE(Color4d)
+#define glColor4dv MANGLE(Color4dv)
+#define glColor4f MANGLE(Color4f)
+#define glColor4fNormal3fVertex3fSUN MANGLE(Color4fNormal3fVertex3fSUN)
+#define glColor4fNormal3fVertex3fvSUN MANGLE(Color4fNormal3fVertex3fvSUN)
+#define glColor4fv MANGLE(Color4fv)
+#define glColor4hNV MANGLE(Color4hNV)
+#define glColor4hvNV MANGLE(Color4hvNV)
+#define glColor4i MANGLE(Color4i)
+#define glColor4iv MANGLE(Color4iv)
+#define glColor4s MANGLE(Color4s)
+#define glColor4sv MANGLE(Color4sv)
+#define glColor4ub MANGLE(Color4ub)
+#define glColor4ubVertex2fSUN MANGLE(Color4ubVertex2fSUN)
+#define glColor4ubVertex2fvSUN MANGLE(Color4ubVertex2fvSUN)
+#define glColor4ubVertex3fSUN MANGLE(Color4ubVertex3fSUN)
+#define glColor4ubVertex3fvSUN MANGLE(Color4ubVertex3fvSUN)
+#define glColor4ubv MANGLE(Color4ubv)
+#define glColor4ui MANGLE(Color4ui)
+#define glColor4uiv MANGLE(Color4uiv)
+#define glColor4us MANGLE(Color4us)
+#define glColor4usv MANGLE(Color4usv)
+#define glColorFragmentOp1ATI MANGLE(ColorFragmentOp1ATI)
+#define glColorFragmentOp2ATI MANGLE(ColorFragmentOp2ATI)
+#define glColorFragmentOp3ATI MANGLE(ColorFragmentOp3ATI)
+#define glColorMaskIndexedEXT MANGLE(ColorMaskIndexedEXT)
+#define glColorMask MANGLE(ColorMask)
+#define glColorMaterial MANGLE(ColorMaterial)
+#define glColorPointerEXT MANGLE(ColorPointerEXT)
+#define glColorPointerListIBM MANGLE(ColorPointerListIBM)
+#define glColorPointer MANGLE(ColorPointer)
+#define glColorPointervINTEL MANGLE(ColorPointervINTEL)
+#define glColorSubTableEXT MANGLE(ColorSubTableEXT)
+#define glColorSubTable MANGLE(ColorSubTable)
+#define glColorTableEXT MANGLE(ColorTableEXT)
+#define glColorTable MANGLE(ColorTable)
+#define glColorTableParameterfv MANGLE(ColorTableParameterfv)
+#define glColorTableParameterfvSGI MANGLE(ColorTableParameterfvSGI)
+#define glColorTableParameteriv MANGLE(ColorTableParameteriv)
+#define glColorTableParameterivSGI MANGLE(ColorTableParameterivSGI)
+#define glColorTableSGI MANGLE(ColorTableSGI)
+#define glCombinerInputNV MANGLE(CombinerInputNV)
+#define glCombinerOutputNV MANGLE(CombinerOutputNV)
+#define glCombinerParameterfNV MANGLE(CombinerParameterfNV)
+#define glCombinerParameterfvNV MANGLE(CombinerParameterfvNV)
+#define glCombinerParameteriNV MANGLE(CombinerParameteriNV)
+#define glCombinerParameterivNV MANGLE(CombinerParameterivNV)
+#define glCombinerStageParameterfvNV MANGLE(CombinerStageParameterfvNV)
+#define glCompileShaderARB MANGLE(CompileShaderARB)
+#define glCompileShader MANGLE(CompileShader)
+#define glCompressedTexImage1DARB MANGLE(CompressedTexImage1DARB)
+#define glCompressedTexImage1D MANGLE(CompressedTexImage1D)
+#define glCompressedTexImage2DARB MANGLE(CompressedTexImage2DARB)
+#define glCompressedTexImage2D MANGLE(CompressedTexImage2D)
+#define glCompressedTexImage3DARB MANGLE(CompressedTexImage3DARB)
+#define glCompressedTexImage3D MANGLE(CompressedTexImage3D)
+#define glCompressedTexSubImage1DARB MANGLE(CompressedTexSubImage1DARB)
+#define glCompressedTexSubImage1D MANGLE(CompressedTexSubImage1D)
+#define glCompressedTexSubImage2DARB MANGLE(CompressedTexSubImage2DARB)
+#define glCompressedTexSubImage2D MANGLE(CompressedTexSubImage2D)
+#define glCompressedTexSubImage3DARB MANGLE(CompressedTexSubImage3DARB)
+#define glCompressedTexSubImage3D MANGLE(CompressedTexSubImage3D)
+#define glConvolutionFilter1DEXT MANGLE(ConvolutionFilter1DEXT)
+#define glConvolutionFilter1D MANGLE(ConvolutionFilter1D)
+#define glConvolutionFilter2DEXT MANGLE(ConvolutionFilter2DEXT)
+#define glConvolutionFilter2D MANGLE(ConvolutionFilter2D)
+#define glConvolutionParameterfEXT MANGLE(ConvolutionParameterfEXT)
+#define glConvolutionParameterf MANGLE(ConvolutionParameterf)
+#define glConvolutionParameterfvEXT MANGLE(ConvolutionParameterfvEXT)
+#define glConvolutionParameterfv MANGLE(ConvolutionParameterfv)
+#define glConvolutionParameteriEXT MANGLE(ConvolutionParameteriEXT)
+#define glConvolutionParameteri MANGLE(ConvolutionParameteri)
+#define glConvolutionParameterivEXT MANGLE(ConvolutionParameterivEXT)
+#define glConvolutionParameteriv MANGLE(ConvolutionParameteriv)
+#define glCopyColorSubTableEXT MANGLE(CopyColorSubTableEXT)
+#define glCopyColorSubTable MANGLE(CopyColorSubTable)
+#define glCopyColorTable MANGLE(CopyColorTable)
+#define glCopyColorTableSGI MANGLE(CopyColorTableSGI)
+#define glCopyConvolutionFilter1DEXT MANGLE(CopyConvolutionFilter1DEXT)
+#define glCopyConvolutionFilter1D MANGLE(CopyConvolutionFilter1D)
+#define glCopyConvolutionFilter2DEXT MANGLE(CopyConvolutionFilter2DEXT)
+#define glCopyConvolutionFilter2D MANGLE(CopyConvolutionFilter2D)
+#define glCopyPixels MANGLE(CopyPixels)
+#define glCopyTexImage1DEXT MANGLE(CopyTexImage1DEXT)
+#define glCopyTexImage1D MANGLE(CopyTexImage1D)
+#define glCopyTexImage2DEXT MANGLE(CopyTexImage2DEXT)
+#define glCopyTexImage2D MANGLE(CopyTexImage2D)
+#define glCopyTexSubImage1DEXT MANGLE(CopyTexSubImage1DEXT)
+#define glCopyTexSubImage1D MANGLE(CopyTexSubImage1D)
+#define glCopyTexSubImage2DEXT MANGLE(CopyTexSubImage2DEXT)
+#define glCopyTexSubImage2D MANGLE(CopyTexSubImage2D)
+#define glCopyTexSubImage3DEXT MANGLE(CopyTexSubImage3DEXT)
+#define glCopyTexSubImage3D MANGLE(CopyTexSubImage3D)
+#define glCreateDebugObjectMESA MANGLE(CreateDebugObjectMESA)
+#define glCreateProgram MANGLE(CreateProgram)
+#define glCreateProgramObjectARB MANGLE(CreateProgramObjectARB)
+#define glCreateShader MANGLE(CreateShader)
+#define glCreateShaderObjectARB MANGLE(CreateShaderObjectARB)
+#define glCullFace MANGLE(CullFace)
+#define glCullParameterdvEXT MANGLE(CullParameterdvEXT)
+#define glCullParameterfvEXT MANGLE(CullParameterfvEXT)
+#define glCurrentPaletteMatrixARB MANGLE(CurrentPaletteMatrixARB)
+#define glDeformationMap3dSGIX MANGLE(DeformationMap3dSGIX)
+#define glDeformationMap3fSGIX MANGLE(DeformationMap3fSGIX)
+#define glDeformSGIX MANGLE(DeformSGIX)
+#define glDeleteAsyncMarkersSGIX MANGLE(DeleteAsyncMarkersSGIX)
+#define glDeleteBuffersARB MANGLE(DeleteBuffersARB)
+#define glDeleteBuffers MANGLE(DeleteBuffers)
+#define glDeleteFencesAPPLE MANGLE(DeleteFencesAPPLE)
+#define glDeleteFencesNV MANGLE(DeleteFencesNV)
+#define glDeleteFragmentShaderATI MANGLE(DeleteFragmentShaderATI)
+#define glDeleteFramebuffersEXT MANGLE(DeleteFramebuffersEXT)
+#define glDeleteLists MANGLE(DeleteLists)
+#define glDeleteObjectARB MANGLE(DeleteObjectARB)
+#define glDeleteOcclusionQueriesNV MANGLE(DeleteOcclusionQueriesNV)
+#define glDeleteProgram MANGLE(DeleteProgram)
+#define glDeleteProgramsARB MANGLE(DeleteProgramsARB)
+#define glDeleteProgramsNV MANGLE(DeleteProgramsNV)
+#define glDeleteQueriesARB MANGLE(DeleteQueriesARB)
+#define glDeleteQueries MANGLE(DeleteQueries)
+#define glDeleteRenderbuffersEXT MANGLE(DeleteRenderbuffersEXT)
+#define glDeleteShader MANGLE(DeleteShader)
+#define glDeleteTexturesEXT MANGLE(DeleteTexturesEXT)
+#define glDeleteTextures MANGLE(DeleteTextures)
+#define glDeleteVertexArraysAPPLE MANGLE(DeleteVertexArraysAPPLE)
+#define glDeleteVertexShaderEXT MANGLE(DeleteVertexShaderEXT)
+#define glDepthBoundsdNV MANGLE(DepthBoundsdNV)
+#define glDepthBoundsEXT MANGLE(DepthBoundsEXT)
+#define glDepthFunc MANGLE(DepthFunc)
+#define glDepthMask MANGLE(DepthMask)
+#define glDepthRangedNV MANGLE(DepthRangedNV)
+#define glDepthRange MANGLE(DepthRange)
+#define glDetachObjectARB MANGLE(DetachObjectARB)
+#define glDetachShader MANGLE(DetachShader)
+#define glDetailTexFuncSGIS MANGLE(DetailTexFuncSGIS)
+#define glDisableClientState MANGLE(DisableClientState)
+#define glDisableIndexedEXT MANGLE(DisableIndexedEXT)
+#define glDisable MANGLE(Disable)
+#define glDisableVariantClientStateEXT MANGLE(DisableVariantClientStateEXT)
+#define glDisableVertexAttribArrayARB MANGLE(DisableVertexAttribArrayARB)
+#define glDisableVertexAttribArray MANGLE(DisableVertexAttribArray)
+#define glDrawArraysEXT MANGLE(DrawArraysEXT)
+#define glDrawArraysInstancedEXT MANGLE(DrawArraysInstancedEXT)
+#define glDrawArrays MANGLE(DrawArrays)
+#define glDrawBuffer MANGLE(DrawBuffer)
+#define glDrawBuffersARB MANGLE(DrawBuffersARB)
+#define glDrawBuffersATI MANGLE(DrawBuffersATI)
+#define glDrawBuffers MANGLE(DrawBuffers)
+#define glDrawElementArrayAPPLE MANGLE(DrawElementArrayAPPLE)
+#define glDrawElementArrayATI MANGLE(DrawElementArrayATI)
+#define glDrawElementsInstancedEXT MANGLE(DrawElementsInstancedEXT)
+#define glDrawElements MANGLE(DrawElements)
+#define glDrawMeshArraysSUN MANGLE(DrawMeshArraysSUN)
+#define glDrawPixels MANGLE(DrawPixels)
+#define glDrawRangeElementArrayAPPLE MANGLE(DrawRangeElementArrayAPPLE)
+#define glDrawRangeElementArrayATI MANGLE(DrawRangeElementArrayATI)
+#define glDrawRangeElementsEXT MANGLE(DrawRangeElementsEXT)
+#define glDrawRangeElements MANGLE(DrawRangeElements)
+#define glEdgeFlag MANGLE(EdgeFlag)
+#define glEdgeFlagPointerEXT MANGLE(EdgeFlagPointerEXT)
+#define glEdgeFlagPointerListIBM MANGLE(EdgeFlagPointerListIBM)
+#define glEdgeFlagPointer MANGLE(EdgeFlagPointer)
+#define glEdgeFlagv MANGLE(EdgeFlagv)
+#define glElementPointerAPPLE MANGLE(ElementPointerAPPLE)
+#define glElementPointerATI MANGLE(ElementPointerATI)
+#define glEnableClientState MANGLE(EnableClientState)
+#define glEnableIndexedEXT MANGLE(EnableIndexedEXT)
+#define glEnable MANGLE(Enable)
+#define glEnableVariantClientStateEXT MANGLE(EnableVariantClientStateEXT)
+#define glEnableVertexAttribArrayARB MANGLE(EnableVertexAttribArrayARB)
+#define glEnableVertexAttribArray MANGLE(EnableVertexAttribArray)
+#define glEndFragmentShaderATI MANGLE(EndFragmentShaderATI)
+#define glEndList MANGLE(EndList)
+#define glEnd MANGLE(End)
+#define glEndOcclusionQueryNV MANGLE(EndOcclusionQueryNV)
+#define glEndQueryARB MANGLE(EndQueryARB)
+#define glEndQuery MANGLE(EndQuery)
+#define glEndTransformFeedbackNV MANGLE(EndTransformFeedbackNV)
+#define glEndVertexShaderEXT MANGLE(EndVertexShaderEXT)
+#define glEvalCoord1d MANGLE(EvalCoord1d)
+#define glEvalCoord1dv MANGLE(EvalCoord1dv)
+#define glEvalCoord1f MANGLE(EvalCoord1f)
+#define glEvalCoord1fv MANGLE(EvalCoord1fv)
+#define glEvalCoord2d MANGLE(EvalCoord2d)
+#define glEvalCoord2dv MANGLE(EvalCoord2dv)
+#define glEvalCoord2f MANGLE(EvalCoord2f)
+#define glEvalCoord2fv MANGLE(EvalCoord2fv)
+#define glEvalMapsNV MANGLE(EvalMapsNV)
+#define glEvalMesh1 MANGLE(EvalMesh1)
+#define glEvalMesh2 MANGLE(EvalMesh2)
+#define glEvalPoint1 MANGLE(EvalPoint1)
+#define glEvalPoint2 MANGLE(EvalPoint2)
+#define glExecuteProgramNV MANGLE(ExecuteProgramNV)
+#define glExtractComponentEXT MANGLE(ExtractComponentEXT)
+#define glFeedbackBuffer MANGLE(FeedbackBuffer)
+#define glFinalCombinerInputNV MANGLE(FinalCombinerInputNV)
+#define glFinishAsyncSGIX MANGLE(FinishAsyncSGIX)
+#define glFinishFenceAPPLE MANGLE(FinishFenceAPPLE)
+#define glFinishFenceNV MANGLE(FinishFenceNV)
+#define glFinish MANGLE(Finish)
+#define glFinishObjectAPPLE MANGLE(FinishObjectAPPLE)
+#define glFinishTextureSUNX MANGLE(FinishTextureSUNX)
+#define glFlush MANGLE(Flush)
+#define glFlushMappedBufferRangeAPPLE MANGLE(FlushMappedBufferRangeAPPLE)
+#define glFlushPixelDataRangeNV MANGLE(FlushPixelDataRangeNV)
+#define glFlushRasterSGIX MANGLE(FlushRasterSGIX)
+#define glFlushVertexArrayRangeAPPLE MANGLE(FlushVertexArrayRangeAPPLE)
+#define glFlushVertexArrayRangeNV MANGLE(FlushVertexArrayRangeNV)
+#define glFogCoorddEXT MANGLE(FogCoorddEXT)
+#define glFogCoordd MANGLE(FogCoordd)
+#define glFogCoorddvEXT MANGLE(FogCoorddvEXT)
+#define glFogCoorddv MANGLE(FogCoorddv)
+#define glFogCoordfEXT MANGLE(FogCoordfEXT)
+#define glFogCoordf MANGLE(FogCoordf)
+#define glFogCoordfvEXT MANGLE(FogCoordfvEXT)
+#define glFogCoordfv MANGLE(FogCoordfv)
+#define glFogCoordhNV MANGLE(FogCoordhNV)
+#define glFogCoordhvNV MANGLE(FogCoordhvNV)
+#define glFogCoordPointerEXT MANGLE(FogCoordPointerEXT)
+#define glFogCoordPointerListIBM MANGLE(FogCoordPointerListIBM)
+#define glFogCoordPointer MANGLE(FogCoordPointer)
+#define glFogf MANGLE(Fogf)
+#define glFogFuncSGIS MANGLE(FogFuncSGIS)
+#define glFogfv MANGLE(Fogfv)
+#define glFogi MANGLE(Fogi)
+#define glFogiv MANGLE(Fogiv)
+#define glFragmentColorMaterialSGIX MANGLE(FragmentColorMaterialSGIX)
+#define glFragmentLightfSGIX MANGLE(FragmentLightfSGIX)
+#define glFragmentLightfvSGIX MANGLE(FragmentLightfvSGIX)
+#define glFragmentLightiSGIX MANGLE(FragmentLightiSGIX)
+#define glFragmentLightivSGIX MANGLE(FragmentLightivSGIX)
+#define glFragmentLightModelfSGIX MANGLE(FragmentLightModelfSGIX)
+#define glFragmentLightModelfvSGIX MANGLE(FragmentLightModelfvSGIX)
+#define glFragmentLightModeliSGIX MANGLE(FragmentLightModeliSGIX)
+#define glFragmentLightModelivSGIX MANGLE(FragmentLightModelivSGIX)
+#define glFragmentMaterialfSGIX MANGLE(FragmentMaterialfSGIX)
+#define glFragmentMaterialfvSGIX MANGLE(FragmentMaterialfvSGIX)
+#define glFragmentMaterialiSGIX MANGLE(FragmentMaterialiSGIX)
+#define glFragmentMaterialivSGIX MANGLE(FragmentMaterialivSGIX)
+#define glFramebufferRenderbufferEXT MANGLE(FramebufferRenderbufferEXT)
+#define glFramebufferTexture1DEXT MANGLE(FramebufferTexture1DEXT)
+#define glFramebufferTexture2DEXT MANGLE(FramebufferTexture2DEXT)
+#define glFramebufferTexture3DEXT MANGLE(FramebufferTexture3DEXT)
+#define glFramebufferTextureEXT MANGLE(FramebufferTextureEXT)
+#define glFramebufferTextureFaceEXT MANGLE(FramebufferTextureFaceEXT)
+#define glFramebufferTextureLayerEXT MANGLE(FramebufferTextureLayerEXT)
+#define glFrameZoomSGIX MANGLE(FrameZoomSGIX)
+#define glFreeObjectBufferATI MANGLE(FreeObjectBufferATI)
+#define glFrontFace MANGLE(FrontFace)
+#define glFrustum MANGLE(Frustum)
+#define glGenAsyncMarkersSGIX MANGLE(GenAsyncMarkersSGIX)
+#define glGenBuffersARB MANGLE(GenBuffersARB)
+#define glGenBuffers MANGLE(GenBuffers)
+#define glGenerateMipmapEXT MANGLE(GenerateMipmapEXT)
+#define glGenFencesAPPLE MANGLE(GenFencesAPPLE)
+#define glGenFencesNV MANGLE(GenFencesNV)
+#define glGenFragmentShadersATI MANGLE(GenFragmentShadersATI)
+#define glGenFramebuffersEXT MANGLE(GenFramebuffersEXT)
+#define glGenLists MANGLE(GenLists)
+#define glGenOcclusionQueriesNV MANGLE(GenOcclusionQueriesNV)
+#define glGenProgramsARB MANGLE(GenProgramsARB)
+#define glGenProgramsNV MANGLE(GenProgramsNV)
+#define glGenQueriesARB MANGLE(GenQueriesARB)
+#define glGenQueries MANGLE(GenQueries)
+#define glGenRenderbuffersEXT MANGLE(GenRenderbuffersEXT)
+#define glGenSymbolsEXT MANGLE(GenSymbolsEXT)
+#define glGenTexturesEXT MANGLE(GenTexturesEXT)
+#define glGenTextures MANGLE(GenTextures)
+#define glGenVertexArraysAPPLE MANGLE(GenVertexArraysAPPLE)
+#define glGenVertexShadersEXT MANGLE(GenVertexShadersEXT)
+#define glGetActiveAttribARB MANGLE(GetActiveAttribARB)
+#define glGetActiveAttrib MANGLE(GetActiveAttrib)
+#define glGetActiveUniformARB MANGLE(GetActiveUniformARB)
+#define glGetActiveUniform MANGLE(GetActiveUniform)
+#define glGetActiveVaryingNV MANGLE(GetActiveVaryingNV)
+#define glGetArrayObjectfvATI MANGLE(GetArrayObjectfvATI)
+#define glGetArrayObjectivATI MANGLE(GetArrayObjectivATI)
+#define glGetAttachedObjectsARB MANGLE(GetAttachedObjectsARB)
+#define glGetAttachedShaders MANGLE(GetAttachedShaders)
+#define glGetAttribLocationARB MANGLE(GetAttribLocationARB)
+#define glGetAttribLocation MANGLE(GetAttribLocation)
+#define glGetBooleanIndexedvEXT MANGLE(GetBooleanIndexedvEXT)
+#define glGetBooleanv MANGLE(GetBooleanv)
+#define glGetBufferParameterivARB MANGLE(GetBufferParameterivARB)
+#define glGetBufferParameteriv MANGLE(GetBufferParameteriv)
+#define glGetBufferPointervARB MANGLE(GetBufferPointervARB)
+#define glGetBufferPointerv MANGLE(GetBufferPointerv)
+#define glGetBufferSubDataARB MANGLE(GetBufferSubDataARB)
+#define glGetBufferSubData MANGLE(GetBufferSubData)
+#define glGetClipPlane MANGLE(GetClipPlane)
+#define glGetColorTableEXT MANGLE(GetColorTableEXT)
+#define glGetColorTable MANGLE(GetColorTable)
+#define glGetColorTableParameterfvEXT MANGLE(GetColorTableParameterfvEXT)
+#define glGetColorTableParameterfv MANGLE(GetColorTableParameterfv)
+#define glGetColorTableParameterfvSGI MANGLE(GetColorTableParameterfvSGI)
+#define glGetColorTableParameterivEXT MANGLE(GetColorTableParameterivEXT)
+#define glGetColorTableParameteriv MANGLE(GetColorTableParameteriv)
+#define glGetColorTableParameterivSGI MANGLE(GetColorTableParameterivSGI)
+#define glGetColorTableSGI MANGLE(GetColorTableSGI)
+#define glGetCombinerInputParameterfvNV MANGLE(GetCombinerInputParameterfvNV)
+#define glGetCombinerInputParameterivNV MANGLE(GetCombinerInputParameterivNV)
+#define glGetCombinerOutputParameterfvNV MANGLE(GetCombinerOutputParameterfvNV)
+#define glGetCombinerOutputParameterivNV MANGLE(GetCombinerOutputParameterivNV)
+#define glGetCombinerStageParameterfvNV MANGLE(GetCombinerStageParameterfvNV)
+#define glGetCompressedTexImageARB MANGLE(GetCompressedTexImageARB)
+#define glGetCompressedTexImage MANGLE(GetCompressedTexImage)
+#define glGetConvolutionFilterEXT MANGLE(GetConvolutionFilterEXT)
+#define glGetConvolutionFilter MANGLE(GetConvolutionFilter)
+#define glGetConvolutionParameterfvEXT MANGLE(GetConvolutionParameterfvEXT)
+#define glGetConvolutionParameterfv MANGLE(GetConvolutionParameterfv)
+#define glGetConvolutionParameterivEXT MANGLE(GetConvolutionParameterivEXT)
+#define glGetConvolutionParameteriv MANGLE(GetConvolutionParameteriv)
+#define glGetDebugLogLengthMESA MANGLE(GetDebugLogLengthMESA)
+#define glGetDebugLogMESA MANGLE(GetDebugLogMESA)
+#define glGetDetailTexFuncSGIS MANGLE(GetDetailTexFuncSGIS)
+#define glGetDoublev MANGLE(GetDoublev)
+#define glGetError MANGLE(GetError)
+#define glGetFenceivNV MANGLE(GetFenceivNV)
+#define glGetFinalCombinerInputParameterfvNV MANGLE(GetFinalCombinerInputParameterfvNV)
+#define glGetFinalCombinerInputParameterivNV MANGLE(GetFinalCombinerInputParameterivNV)
+#define glGetFloatv MANGLE(GetFloatv)
+#define glGetFogFuncSGIS MANGLE(GetFogFuncSGIS)
+#define glGetFragDataLocationEXT MANGLE(GetFragDataLocationEXT)
+#define glGetFragmentLightfvSGIX MANGLE(GetFragmentLightfvSGIX)
+#define glGetFragmentLightivSGIX MANGLE(GetFragmentLightivSGIX)
+#define glGetFragmentMaterialfvSGIX MANGLE(GetFragmentMaterialfvSGIX)
+#define glGetFragmentMaterialivSGIX MANGLE(GetFragmentMaterialivSGIX)
+#define glGetFramebufferAttachmentParameterivEXT MANGLE(GetFramebufferAttachmentParameterivEXT)
+#define glGetHandleARB MANGLE(GetHandleARB)
+#define glGetHistogramEXT MANGLE(GetHistogramEXT)
+#define glGetHistogram MANGLE(GetHistogram)
+#define glGetHistogramParameterfvEXT MANGLE(GetHistogramParameterfvEXT)
+#define glGetHistogramParameterfv MANGLE(GetHistogramParameterfv)
+#define glGetHistogramParameterivEXT MANGLE(GetHistogramParameterivEXT)
+#define glGetHistogramParameteriv MANGLE(GetHistogramParameteriv)
+#define glGetImageTransformParameterfvHP MANGLE(GetImageTransformParameterfvHP)
+#define glGetImageTransformParameterivHP MANGLE(GetImageTransformParameterivHP)
+#define glGetInfoLogARB MANGLE(GetInfoLogARB)
+#define glGetInstrumentsSGIX MANGLE(GetInstrumentsSGIX)
+#define glGetIntegerIndexedvEXT MANGLE(GetIntegerIndexedvEXT)
+#define glGetIntegerv MANGLE(GetIntegerv)
+#define glGetInvariantBooleanvEXT MANGLE(GetInvariantBooleanvEXT)
+#define glGetInvariantFloatvEXT MANGLE(GetInvariantFloatvEXT)
+#define glGetInvariantIntegervEXT MANGLE(GetInvariantIntegervEXT)
+#define glGetLightfv MANGLE(GetLightfv)
+#define glGetLightiv MANGLE(GetLightiv)
+#define glGetListParameterfvSGIX MANGLE(GetListParameterfvSGIX)
+#define glGetListParameterivSGIX MANGLE(GetListParameterivSGIX)
+#define glGetLocalConstantBooleanvEXT MANGLE(GetLocalConstantBooleanvEXT)
+#define glGetLocalConstantFloatvEXT MANGLE(GetLocalConstantFloatvEXT)
+#define glGetLocalConstantIntegervEXT MANGLE(GetLocalConstantIntegervEXT)
+#define glGetMapAttribParameterfvNV MANGLE(GetMapAttribParameterfvNV)
+#define glGetMapAttribParameterivNV MANGLE(GetMapAttribParameterivNV)
+#define glGetMapControlPointsNV MANGLE(GetMapControlPointsNV)
+#define glGetMapdv MANGLE(GetMapdv)
+#define glGetMapfv MANGLE(GetMapfv)
+#define glGetMapiv MANGLE(GetMapiv)
+#define glGetMapParameterfvNV MANGLE(GetMapParameterfvNV)
+#define glGetMapParameterivNV MANGLE(GetMapParameterivNV)
+#define glGetMaterialfv MANGLE(GetMaterialfv)
+#define glGetMaterialiv MANGLE(GetMaterialiv)
+#define glGetMinmaxEXT MANGLE(GetMinmaxEXT)
+#define glGetMinmax MANGLE(GetMinmax)
+#define glGetMinmaxParameterfvEXT MANGLE(GetMinmaxParameterfvEXT)
+#define glGetMinmaxParameterfv MANGLE(GetMinmaxParameterfv)
+#define glGetMinmaxParameterivEXT MANGLE(GetMinmaxParameterivEXT)
+#define glGetMinmaxParameteriv MANGLE(GetMinmaxParameteriv)
+#define glGetObjectBufferfvATI MANGLE(GetObjectBufferfvATI)
+#define glGetObjectBufferivATI MANGLE(GetObjectBufferivATI)
+#define glGetObjectParameterfvARB MANGLE(GetObjectParameterfvARB)
+#define glGetObjectParameterivARB MANGLE(GetObjectParameterivARB)
+#define glGetOcclusionQueryivNV MANGLE(GetOcclusionQueryivNV)
+#define glGetOcclusionQueryuivNV MANGLE(GetOcclusionQueryuivNV)
+#define glGetPixelMapfv MANGLE(GetPixelMapfv)
+#define glGetPixelMapuiv MANGLE(GetPixelMapuiv)
+#define glGetPixelMapusv MANGLE(GetPixelMapusv)
+#define glGetPixelTexGenParameterfvSGIS MANGLE(GetPixelTexGenParameterfvSGIS)
+#define glGetPixelTexGenParameterivSGIS MANGLE(GetPixelTexGenParameterivSGIS)
+#define glGetPointervEXT MANGLE(GetPointervEXT)
+#define glGetPointerv MANGLE(GetPointerv)
+#define glGetPolygonStipple MANGLE(GetPolygonStipple)
+#define glGetProgramEnvParameterdvARB MANGLE(GetProgramEnvParameterdvARB)
+#define glGetProgramEnvParameterfvARB MANGLE(GetProgramEnvParameterfvARB)
+#define glGetProgramEnvParameterIivNV MANGLE(GetProgramEnvParameterIivNV)
+#define glGetProgramEnvParameterIuivNV MANGLE(GetProgramEnvParameterIuivNV)
+#define glGetProgramInfoLog MANGLE(GetProgramInfoLog)
+#define glGetProgramivARB MANGLE(GetProgramivARB)
+#define glGetProgramiv MANGLE(GetProgramiv)
+#define glGetProgramivNV MANGLE(GetProgramivNV)
+#define glGetProgramLocalParameterdvARB MANGLE(GetProgramLocalParameterdvARB)
+#define glGetProgramLocalParameterfvARB MANGLE(GetProgramLocalParameterfvARB)
+#define glGetProgramLocalParameterIivNV MANGLE(GetProgramLocalParameterIivNV)
+#define glGetProgramLocalParameterIuivNV MANGLE(GetProgramLocalParameterIuivNV)
+#define glGetProgramNamedParameterdvNV MANGLE(GetProgramNamedParameterdvNV)
+#define glGetProgramNamedParameterfvNV MANGLE(GetProgramNamedParameterfvNV)
+#define glGetProgramParameterdvNV MANGLE(GetProgramParameterdvNV)
+#define glGetProgramParameterfvNV MANGLE(GetProgramParameterfvNV)
+#define glGetProgramRegisterfvMESA MANGLE(GetProgramRegisterfvMESA)
+#define glGetProgramStringARB MANGLE(GetProgramStringARB)
+#define glGetProgramStringNV MANGLE(GetProgramStringNV)
+#define glGetQueryivARB MANGLE(GetQueryivARB)
+#define glGetQueryiv MANGLE(GetQueryiv)
+#define glGetQueryObjecti64vEXT MANGLE(GetQueryObjecti64vEXT)
+#define glGetQueryObjectivARB MANGLE(GetQueryObjectivARB)
+#define glGetQueryObjectiv MANGLE(GetQueryObjectiv)
+#define glGetQueryObjectui64vEXT MANGLE(GetQueryObjectui64vEXT)
+#define glGetQueryObjectuivARB MANGLE(GetQueryObjectuivARB)
+#define glGetQueryObjectuiv MANGLE(GetQueryObjectuiv)
+#define glGetRenderbufferParameterivEXT MANGLE(GetRenderbufferParameterivEXT)
+#define glGetSeparableFilterEXT MANGLE(GetSeparableFilterEXT)
+#define glGetSeparableFilter MANGLE(GetSeparableFilter)
+#define glGetShaderInfoLog MANGLE(GetShaderInfoLog)
+#define glGetShaderiv MANGLE(GetShaderiv)
+#define glGetShaderSourceARB MANGLE(GetShaderSourceARB)
+#define glGetShaderSource MANGLE(GetShaderSource)
+#define glGetSharpenTexFuncSGIS MANGLE(GetSharpenTexFuncSGIS)
+#define glGetString MANGLE(GetString)
+#define glGetTexBumpParameterfvATI MANGLE(GetTexBumpParameterfvATI)
+#define glGetTexBumpParameterivATI MANGLE(GetTexBumpParameterivATI)
+#define glGetTexEnvfv MANGLE(GetTexEnvfv)
+#define glGetTexEnviv MANGLE(GetTexEnviv)
+#define glGetTexFilterFuncSGIS MANGLE(GetTexFilterFuncSGIS)
+#define glGetTexGendv MANGLE(GetTexGendv)
+#define glGetTexGenfv MANGLE(GetTexGenfv)
+#define glGetTexGeniv MANGLE(GetTexGeniv)
+#define glGetTexImage MANGLE(GetTexImage)
+#define glGetTexLevelParameterfv MANGLE(GetTexLevelParameterfv)
+#define glGetTexLevelParameteriv MANGLE(GetTexLevelParameteriv)
+#define glGetTexParameterfv MANGLE(GetTexParameterfv)
+#define glGetTexParameterIivEXT MANGLE(GetTexParameterIivEXT)
+#define glGetTexParameterIuivEXT MANGLE(GetTexParameterIuivEXT)
+#define glGetTexParameteriv MANGLE(GetTexParameteriv)
+#define glGetTrackMatrixivNV MANGLE(GetTrackMatrixivNV)
+#define glGetTransformFeedbackVaryingNV MANGLE(GetTransformFeedbackVaryingNV)
+#define glGetUniformBufferSizeEXT MANGLE(GetUniformBufferSizeEXT)
+#define glGetUniformfvARB MANGLE(GetUniformfvARB)
+#define glGetUniformfv MANGLE(GetUniformfv)
+#define glGetUniformivARB MANGLE(GetUniformivARB)
+#define glGetUniformiv MANGLE(GetUniformiv)
+#define glGetUniformLocationARB MANGLE(GetUniformLocationARB)
+#define glGetUniformLocation MANGLE(GetUniformLocation)
+#define glGetUniformOffsetEXT MANGLE(GetUniformOffsetEXT)
+#define glGetUniformuivEXT MANGLE(GetUniformuivEXT)
+#define glGetVariantArrayObjectfvATI MANGLE(GetVariantArrayObjectfvATI)
+#define glGetVariantArrayObjectivATI MANGLE(GetVariantArrayObjectivATI)
+#define glGetVariantBooleanvEXT MANGLE(GetVariantBooleanvEXT)
+#define glGetVariantFloatvEXT MANGLE(GetVariantFloatvEXT)
+#define glGetVariantIntegervEXT MANGLE(GetVariantIntegervEXT)
+#define glGetVariantPointervEXT MANGLE(GetVariantPointervEXT)
+#define glGetVaryingLocationNV MANGLE(GetVaryingLocationNV)
+#define glGetVertexAttribArrayObjectfvATI MANGLE(GetVertexAttribArrayObjectfvATI)
+#define glGetVertexAttribArrayObjectivATI MANGLE(GetVertexAttribArrayObjectivATI)
+#define glGetVertexAttribdvARB MANGLE(GetVertexAttribdvARB)
+#define glGetVertexAttribdv MANGLE(GetVertexAttribdv)
+#define glGetVertexAttribdvNV MANGLE(GetVertexAttribdvNV)
+#define glGetVertexAttribfvARB MANGLE(GetVertexAttribfvARB)
+#define glGetVertexAttribfv MANGLE(GetVertexAttribfv)
+#define glGetVertexAttribfvNV MANGLE(GetVertexAttribfvNV)
+#define glGetVertexAttribIivEXT MANGLE(GetVertexAttribIivEXT)
+#define glGetVertexAttribIuivEXT MANGLE(GetVertexAttribIuivEXT)
+#define glGetVertexAttribivARB MANGLE(GetVertexAttribivARB)
+#define glGetVertexAttribiv MANGLE(GetVertexAttribiv)
+#define glGetVertexAttribivNV MANGLE(GetVertexAttribivNV)
+#define glGetVertexAttribPointervARB MANGLE(GetVertexAttribPointervARB)
+#define glGetVertexAttribPointerv MANGLE(GetVertexAttribPointerv)
+#define glGetVertexAttribPointervNV MANGLE(GetVertexAttribPointervNV)
+#define glGlobalAlphaFactorbSUN MANGLE(GlobalAlphaFactorbSUN)
+#define glGlobalAlphaFactordSUN MANGLE(GlobalAlphaFactordSUN)
+#define glGlobalAlphaFactorfSUN MANGLE(GlobalAlphaFactorfSUN)
+#define glGlobalAlphaFactoriSUN MANGLE(GlobalAlphaFactoriSUN)
+#define glGlobalAlphaFactorsSUN MANGLE(GlobalAlphaFactorsSUN)
+#define glGlobalAlphaFactorubSUN MANGLE(GlobalAlphaFactorubSUN)
+#define glGlobalAlphaFactoruiSUN MANGLE(GlobalAlphaFactoruiSUN)
+#define glGlobalAlphaFactorusSUN MANGLE(GlobalAlphaFactorusSUN)
+#define glHint MANGLE(Hint)
+#define glHintPGI MANGLE(HintPGI)
+#define glHistogramEXT MANGLE(HistogramEXT)
+#define glHistogram MANGLE(Histogram)
+#define glIglooInterfaceSGIX MANGLE(IglooInterfaceSGIX)
+#define glImageTransformParameterfHP MANGLE(ImageTransformParameterfHP)
+#define glImageTransformParameterfvHP MANGLE(ImageTransformParameterfvHP)
+#define glImageTransformParameteriHP MANGLE(ImageTransformParameteriHP)
+#define glImageTransformParameterivHP MANGLE(ImageTransformParameterivHP)
+#define glIndexd MANGLE(Indexd)
+#define glIndexdv MANGLE(Indexdv)
+#define glIndexf MANGLE(Indexf)
+#define glIndexFuncEXT MANGLE(IndexFuncEXT)
+#define glIndexfv MANGLE(Indexfv)
+#define glIndexi MANGLE(Indexi)
+#define glIndexiv MANGLE(Indexiv)
+#define glIndexMask MANGLE(IndexMask)
+#define glIndexMaterialEXT MANGLE(IndexMaterialEXT)
+#define glIndexPointerEXT MANGLE(IndexPointerEXT)
+#define glIndexPointerListIBM MANGLE(IndexPointerListIBM)
+#define glIndexPointer MANGLE(IndexPointer)
+#define glIndexs MANGLE(Indexs)
+#define glIndexsv MANGLE(Indexsv)
+#define glIndexub MANGLE(Indexub)
+#define glIndexubv MANGLE(Indexubv)
+#define glInitNames MANGLE(InitNames)
+#define glInsertComponentEXT MANGLE(InsertComponentEXT)
+#define glInstrumentsBufferSGIX MANGLE(InstrumentsBufferSGIX)
+#define glInterleavedArrays MANGLE(InterleavedArrays)
+#define glIsAsyncMarkerSGIX MANGLE(IsAsyncMarkerSGIX)
+#define glIsBufferARB MANGLE(IsBufferARB)
+#define glIsBuffer MANGLE(IsBuffer)
+#define glIsEnabledIndexedEXT MANGLE(IsEnabledIndexedEXT)
+#define glIsEnabled MANGLE(IsEnabled)
+#define glIsFenceAPPLE MANGLE(IsFenceAPPLE)
+#define glIsFenceNV MANGLE(IsFenceNV)
+#define glIsFramebufferEXT MANGLE(IsFramebufferEXT)
+#define glIsList MANGLE(IsList)
+#define glIsObjectBufferATI MANGLE(IsObjectBufferATI)
+#define glIsOcclusionQueryNV MANGLE(IsOcclusionQueryNV)
+#define glIsProgramARB MANGLE(IsProgramARB)
+#define glIsProgram MANGLE(IsProgram)
+#define glIsProgramNV MANGLE(IsProgramNV)
+#define glIsQueryARB MANGLE(IsQueryARB)
+#define glIsQuery MANGLE(IsQuery)
+#define glIsRenderbufferEXT MANGLE(IsRenderbufferEXT)
+#define glIsShader MANGLE(IsShader)
+#define glIsTextureEXT MANGLE(IsTextureEXT)
+#define glIsTexture MANGLE(IsTexture)
+#define glIsVariantEnabledEXT MANGLE(IsVariantEnabledEXT)
+#define glIsVertexArrayAPPLE MANGLE(IsVertexArrayAPPLE)
+#define glLightEnviSGIX MANGLE(LightEnviSGIX)
+#define glLightf MANGLE(Lightf)
+#define glLightfv MANGLE(Lightfv)
+#define glLighti MANGLE(Lighti)
+#define glLightiv MANGLE(Lightiv)
+#define glLightModelf MANGLE(LightModelf)
+#define glLightModelfv MANGLE(LightModelfv)
+#define glLightModeli MANGLE(LightModeli)
+#define glLightModeliv MANGLE(LightModeliv)
+#define glLineStipple MANGLE(LineStipple)
+#define glLineWidth MANGLE(LineWidth)
+#define glLinkProgramARB MANGLE(LinkProgramARB)
+#define glLinkProgram MANGLE(LinkProgram)
+#define glListBase MANGLE(ListBase)
+#define glListParameterfSGIX MANGLE(ListParameterfSGIX)
+#define glListParameterfvSGIX MANGLE(ListParameterfvSGIX)
+#define glListParameteriSGIX MANGLE(ListParameteriSGIX)
+#define glListParameterivSGIX MANGLE(ListParameterivSGIX)
+#define glLoadIdentityDeformationMapSGIX MANGLE(LoadIdentityDeformationMapSGIX)
+#define glLoadIdentity MANGLE(LoadIdentity)
+#define glLoadMatrixd MANGLE(LoadMatrixd)
+#define glLoadMatrixf MANGLE(LoadMatrixf)
+#define glLoadName MANGLE(LoadName)
+#define glLoadProgramNV MANGLE(LoadProgramNV)
+#define glLoadTransposeMatrixdARB MANGLE(LoadTransposeMatrixdARB)
+#define glLoadTransposeMatrixd MANGLE(LoadTransposeMatrixd)
+#define glLoadTransposeMatrixfARB MANGLE(LoadTransposeMatrixfARB)
+#define glLoadTransposeMatrixf MANGLE(LoadTransposeMatrixf)
+#define glLockArraysEXT MANGLE(LockArraysEXT)
+#define glLogicOp MANGLE(LogicOp)
+#define glMap1d MANGLE(Map1d)
+#define glMap1f MANGLE(Map1f)
+#define glMap2d MANGLE(Map2d)
+#define glMap2f MANGLE(Map2f)
+#define glMapBufferARB MANGLE(MapBufferARB)
+#define glMapBuffer MANGLE(MapBuffer)
+#define glMapControlPointsNV MANGLE(MapControlPointsNV)
+#define glMapGrid1d MANGLE(MapGrid1d)
+#define glMapGrid1f MANGLE(MapGrid1f)
+#define glMapGrid2d MANGLE(MapGrid2d)
+#define glMapGrid2f MANGLE(MapGrid2f)
+#define glMapObjectBufferATI MANGLE(MapObjectBufferATI)
+#define glMapParameterfvNV MANGLE(MapParameterfvNV)
+#define glMapParameterivNV MANGLE(MapParameterivNV)
+#define glMaterialf MANGLE(Materialf)
+#define glMaterialfv MANGLE(Materialfv)
+#define glMateriali MANGLE(Materiali)
+#define glMaterialiv MANGLE(Materialiv)
+#define glMatrixIndexPointerARB MANGLE(MatrixIndexPointerARB)
+#define glMatrixIndexubvARB MANGLE(MatrixIndexubvARB)
+#define glMatrixIndexuivARB MANGLE(MatrixIndexuivARB)
+#define glMatrixIndexusvARB MANGLE(MatrixIndexusvARB)
+#define glMatrixMode MANGLE(MatrixMode)
+#define glMinmaxEXT MANGLE(MinmaxEXT)
+#define glMinmax MANGLE(Minmax)
+#define glMultiDrawArraysEXT MANGLE(MultiDrawArraysEXT)
+#define glMultiDrawArrays MANGLE(MultiDrawArrays)
+#define glMultiDrawElementArrayAPPLE MANGLE(MultiDrawElementArrayAPPLE)
+#define glMultiDrawElementsEXT MANGLE(MultiDrawElementsEXT)
+#define glMultiDrawElements MANGLE(MultiDrawElements)
+#define glMultiDrawRangeElementArrayAPPLE MANGLE(MultiDrawRangeElementArrayAPPLE)
+#define glMultiModeDrawArraysIBM MANGLE(MultiModeDrawArraysIBM)
+#define glMultiModeDrawElementsIBM MANGLE(MultiModeDrawElementsIBM)
+#define glMultiTexCoord1dARB MANGLE(MultiTexCoord1dARB)
+#define glMultiTexCoord1d MANGLE(MultiTexCoord1d)
+#define glMultiTexCoord1dvARB MANGLE(MultiTexCoord1dvARB)
+#define glMultiTexCoord1dv MANGLE(MultiTexCoord1dv)
+#define glMultiTexCoord1fARB MANGLE(MultiTexCoord1fARB)
+#define glMultiTexCoord1f MANGLE(MultiTexCoord1f)
+#define glMultiTexCoord1fvARB MANGLE(MultiTexCoord1fvARB)
+#define glMultiTexCoord1fv MANGLE(MultiTexCoord1fv)
+#define glMultiTexCoord1hNV MANGLE(MultiTexCoord1hNV)
+#define glMultiTexCoord1hvNV MANGLE(MultiTexCoord1hvNV)
+#define glMultiTexCoord1iARB MANGLE(MultiTexCoord1iARB)
+#define glMultiTexCoord1i MANGLE(MultiTexCoord1i)
+#define glMultiTexCoord1ivARB MANGLE(MultiTexCoord1ivARB)
+#define glMultiTexCoord1iv MANGLE(MultiTexCoord1iv)
+#define glMultiTexCoord1sARB MANGLE(MultiTexCoord1sARB)
+#define glMultiTexCoord1s MANGLE(MultiTexCoord1s)
+#define glMultiTexCoord1svARB MANGLE(MultiTexCoord1svARB)
+#define glMultiTexCoord1sv MANGLE(MultiTexCoord1sv)
+#define glMultiTexCoord2dARB MANGLE(MultiTexCoord2dARB)
+#define glMultiTexCoord2d MANGLE(MultiTexCoord2d)
+#define glMultiTexCoord2dvARB MANGLE(MultiTexCoord2dvARB)
+#define glMultiTexCoord2dv MANGLE(MultiTexCoord2dv)
+#define glMultiTexCoord2fARB MANGLE(MultiTexCoord2fARB)
+#define glMultiTexCoord2f MANGLE(MultiTexCoord2f)
+#define glMultiTexCoord2fvARB MANGLE(MultiTexCoord2fvARB)
+#define glMultiTexCoord2fv MANGLE(MultiTexCoord2fv)
+#define glMultiTexCoord2hNV MANGLE(MultiTexCoord2hNV)
+#define glMultiTexCoord2hvNV MANGLE(MultiTexCoord2hvNV)
+#define glMultiTexCoord2iARB MANGLE(MultiTexCoord2iARB)
+#define glMultiTexCoord2i MANGLE(MultiTexCoord2i)
+#define glMultiTexCoord2ivARB MANGLE(MultiTexCoord2ivARB)
+#define glMultiTexCoord2iv MANGLE(MultiTexCoord2iv)
+#define glMultiTexCoord2sARB MANGLE(MultiTexCoord2sARB)
+#define glMultiTexCoord2s MANGLE(MultiTexCoord2s)
+#define glMultiTexCoord2svARB MANGLE(MultiTexCoord2svARB)
+#define glMultiTexCoord2sv MANGLE(MultiTexCoord2sv)
+#define glMultiTexCoord3dARB MANGLE(MultiTexCoord3dARB)
+#define glMultiTexCoord3d MANGLE(MultiTexCoord3d)
+#define glMultiTexCoord3dvARB MANGLE(MultiTexCoord3dvARB)
+#define glMultiTexCoord3dv MANGLE(MultiTexCoord3dv)
+#define glMultiTexCoord3fARB MANGLE(MultiTexCoord3fARB)
+#define glMultiTexCoord3f MANGLE(MultiTexCoord3f)
+#define glMultiTexCoord3fvARB MANGLE(MultiTexCoord3fvARB)
+#define glMultiTexCoord3fv MANGLE(MultiTexCoord3fv)
+#define glMultiTexCoord3hNV MANGLE(MultiTexCoord3hNV)
+#define glMultiTexCoord3hvNV MANGLE(MultiTexCoord3hvNV)
+#define glMultiTexCoord3iARB MANGLE(MultiTexCoord3iARB)
+#define glMultiTexCoord3i MANGLE(MultiTexCoord3i)
+#define glMultiTexCoord3ivARB MANGLE(MultiTexCoord3ivARB)
+#define glMultiTexCoord3iv MANGLE(MultiTexCoord3iv)
+#define glMultiTexCoord3sARB MANGLE(MultiTexCoord3sARB)
+#define glMultiTexCoord3s MANGLE(MultiTexCoord3s)
+#define glMultiTexCoord3svARB MANGLE(MultiTexCoord3svARB)
+#define glMultiTexCoord3sv MANGLE(MultiTexCoord3sv)
+#define glMultiTexCoord4dARB MANGLE(MultiTexCoord4dARB)
+#define glMultiTexCoord4d MANGLE(MultiTexCoord4d)
+#define glMultiTexCoord4dvARB MANGLE(MultiTexCoord4dvARB)
+#define glMultiTexCoord4dv MANGLE(MultiTexCoord4dv)
+#define glMultiTexCoord4fARB MANGLE(MultiTexCoord4fARB)
+#define glMultiTexCoord4f MANGLE(MultiTexCoord4f)
+#define glMultiTexCoord4fvARB MANGLE(MultiTexCoord4fvARB)
+#define glMultiTexCoord4fv MANGLE(MultiTexCoord4fv)
+#define glMultiTexCoord4hNV MANGLE(MultiTexCoord4hNV)
+#define glMultiTexCoord4hvNV MANGLE(MultiTexCoord4hvNV)
+#define glMultiTexCoord4iARB MANGLE(MultiTexCoord4iARB)
+#define glMultiTexCoord4i MANGLE(MultiTexCoord4i)
+#define glMultiTexCoord4ivARB MANGLE(MultiTexCoord4ivARB)
+#define glMultiTexCoord4iv MANGLE(MultiTexCoord4iv)
+#define glMultiTexCoord4sARB MANGLE(MultiTexCoord4sARB)
+#define glMultiTexCoord4s MANGLE(MultiTexCoord4s)
+#define glMultiTexCoord4svARB MANGLE(MultiTexCoord4svARB)
+#define glMultiTexCoord4sv MANGLE(MultiTexCoord4sv)
+#define glMultMatrixd MANGLE(MultMatrixd)
+#define glMultMatrixf MANGLE(MultMatrixf)
+#define glMultTransposeMatrixdARB MANGLE(MultTransposeMatrixdARB)
+#define glMultTransposeMatrixd MANGLE(MultTransposeMatrixd)
+#define glMultTransposeMatrixfARB MANGLE(MultTransposeMatrixfARB)
+#define glMultTransposeMatrixf MANGLE(MultTransposeMatrixf)
+#define glNewList MANGLE(NewList)
+#define glNewObjectBufferATI MANGLE(NewObjectBufferATI)
+#define glNormal3b MANGLE(Normal3b)
+#define glNormal3bv MANGLE(Normal3bv)
+#define glNormal3d MANGLE(Normal3d)
+#define glNormal3dv MANGLE(Normal3dv)
+#define glNormal3f MANGLE(Normal3f)
+#define glNormal3fVertex3fSUN MANGLE(Normal3fVertex3fSUN)
+#define glNormal3fVertex3fvSUN MANGLE(Normal3fVertex3fvSUN)
+#define glNormal3fv MANGLE(Normal3fv)
+#define glNormal3hNV MANGLE(Normal3hNV)
+#define glNormal3hvNV MANGLE(Normal3hvNV)
+#define glNormal3i MANGLE(Normal3i)
+#define glNormal3iv MANGLE(Normal3iv)
+#define glNormal3s MANGLE(Normal3s)
+#define glNormal3sv MANGLE(Normal3sv)
+#define glNormalPointerEXT MANGLE(NormalPointerEXT)
+#define glNormalPointerListIBM MANGLE(NormalPointerListIBM)
+#define glNormalPointer MANGLE(NormalPointer)
+#define glNormalPointervINTEL MANGLE(NormalPointervINTEL)
+#define glNormalStream3bATI MANGLE(NormalStream3bATI)
+#define glNormalStream3bvATI MANGLE(NormalStream3bvATI)
+#define glNormalStream3dATI MANGLE(NormalStream3dATI)
+#define glNormalStream3dvATI MANGLE(NormalStream3dvATI)
+#define glNormalStream3fATI MANGLE(NormalStream3fATI)
+#define glNormalStream3fvATI MANGLE(NormalStream3fvATI)
+#define glNormalStream3iATI MANGLE(NormalStream3iATI)
+#define glNormalStream3ivATI MANGLE(NormalStream3ivATI)
+#define glNormalStream3sATI MANGLE(NormalStream3sATI)
+#define glNormalStream3svATI MANGLE(NormalStream3svATI)
+#define glOrtho MANGLE(Ortho)
+#define glPassTexCoordATI MANGLE(PassTexCoordATI)
+#define glPassThrough MANGLE(PassThrough)
+#define glPixelDataRangeNV MANGLE(PixelDataRangeNV)
+#define glPixelMapfv MANGLE(PixelMapfv)
+#define glPixelMapuiv MANGLE(PixelMapuiv)
+#define glPixelMapusv MANGLE(PixelMapusv)
+#define glPixelStoref MANGLE(PixelStoref)
+#define glPixelStorei MANGLE(PixelStorei)
+#define glPixelTexGenParameterfSGIS MANGLE(PixelTexGenParameterfSGIS)
+#define glPixelTexGenParameterfvSGIS MANGLE(PixelTexGenParameterfvSGIS)
+#define glPixelTexGenParameteriSGIS MANGLE(PixelTexGenParameteriSGIS)
+#define glPixelTexGenParameterivSGIS MANGLE(PixelTexGenParameterivSGIS)
+#define glPixelTexGenSGIX MANGLE(PixelTexGenSGIX)
+#define glPixelTransferf MANGLE(PixelTransferf)
+#define glPixelTransferi MANGLE(PixelTransferi)
+#define glPixelTransformParameterfEXT MANGLE(PixelTransformParameterfEXT)
+#define glPixelTransformParameterfvEXT MANGLE(PixelTransformParameterfvEXT)
+#define glPixelTransformParameteriEXT MANGLE(PixelTransformParameteriEXT)
+#define glPixelTransformParameterivEXT MANGLE(PixelTransformParameterivEXT)
+#define glPixelZoom MANGLE(PixelZoom)
+#define glPNTrianglesfATI MANGLE(PNTrianglesfATI)
+#define glPNTrianglesiATI MANGLE(PNTrianglesiATI)
+#define glPointParameterfARB MANGLE(PointParameterfARB)
+#define glPointParameterfEXT MANGLE(PointParameterfEXT)
+#define glPointParameterf MANGLE(PointParameterf)
+#define glPointParameterfSGIS MANGLE(PointParameterfSGIS)
+#define glPointParameterfvARB MANGLE(PointParameterfvARB)
+#define glPointParameterfvEXT MANGLE(PointParameterfvEXT)
+#define glPointParameterfv MANGLE(PointParameterfv)
+#define glPointParameterfvSGIS MANGLE(PointParameterfvSGIS)
+#define glPointParameteri MANGLE(PointParameteri)
+#define glPointParameteriNV MANGLE(PointParameteriNV)
+#define glPointParameteriv MANGLE(PointParameteriv)
+#define glPointParameterivNV MANGLE(PointParameterivNV)
+#define glPointSize MANGLE(PointSize)
+#define glPollAsyncSGIX MANGLE(PollAsyncSGIX)
+#define glPollInstrumentsSGIX MANGLE(PollInstrumentsSGIX)
+#define glPolygonMode MANGLE(PolygonMode)
+#define glPolygonOffsetEXT MANGLE(PolygonOffsetEXT)
+#define glPolygonOffset MANGLE(PolygonOffset)
+#define glPolygonStipple MANGLE(PolygonStipple)
+#define glPopAttrib MANGLE(PopAttrib)
+#define glPopClientAttrib MANGLE(PopClientAttrib)
+#define glPopMatrix MANGLE(PopMatrix)
+#define glPopName MANGLE(PopName)
+#define glPrimitiveRestartIndexNV MANGLE(PrimitiveRestartIndexNV)
+#define glPrimitiveRestartNV MANGLE(PrimitiveRestartNV)
+#define glPrioritizeTexturesEXT MANGLE(PrioritizeTexturesEXT)
+#define glPrioritizeTextures MANGLE(PrioritizeTextures)
+#define glProgramBufferParametersfvNV MANGLE(ProgramBufferParametersfvNV)
+#define glProgramBufferParametersIivNV MANGLE(ProgramBufferParametersIivNV)
+#define glProgramBufferParametersIuivNV MANGLE(ProgramBufferParametersIuivNV)
+#define glProgramCallbackMESA MANGLE(ProgramCallbackMESA)
+#define glProgramEnvParameter4dARB MANGLE(ProgramEnvParameter4dARB)
+#define glProgramEnvParameter4dvARB MANGLE(ProgramEnvParameter4dvARB)
+#define glProgramEnvParameter4fARB MANGLE(ProgramEnvParameter4fARB)
+#define glProgramEnvParameter4fvARB MANGLE(ProgramEnvParameter4fvARB)
+#define glProgramEnvParameterI4iNV MANGLE(ProgramEnvParameterI4iNV)
+#define glProgramEnvParameterI4ivNV MANGLE(ProgramEnvParameterI4ivNV)
+#define glProgramEnvParameterI4uiNV MANGLE(ProgramEnvParameterI4uiNV)
+#define glProgramEnvParameterI4uivNV MANGLE(ProgramEnvParameterI4uivNV)
+#define glProgramEnvParameters4fvEXT MANGLE(ProgramEnvParameters4fvEXT)
+#define glProgramEnvParametersI4ivNV MANGLE(ProgramEnvParametersI4ivNV)
+#define glProgramEnvParametersI4uivNV MANGLE(ProgramEnvParametersI4uivNV)
+#define glProgramLocalParameter4dARB MANGLE(ProgramLocalParameter4dARB)
+#define glProgramLocalParameter4dvARB MANGLE(ProgramLocalParameter4dvARB)
+#define glProgramLocalParameter4fARB MANGLE(ProgramLocalParameter4fARB)
+#define glProgramLocalParameter4fvARB MANGLE(ProgramLocalParameter4fvARB)
+#define glProgramLocalParameterI4iNV MANGLE(ProgramLocalParameterI4iNV)
+#define glProgramLocalParameterI4ivNV MANGLE(ProgramLocalParameterI4ivNV)
+#define glProgramLocalParameterI4uiNV MANGLE(ProgramLocalParameterI4uiNV)
+#define glProgramLocalParameterI4uivNV MANGLE(ProgramLocalParameterI4uivNV)
+#define glProgramLocalParameters4fvEXT MANGLE(ProgramLocalParameters4fvEXT)
+#define glProgramLocalParametersI4ivNV MANGLE(ProgramLocalParametersI4ivNV)
+#define glProgramLocalParametersI4uivNV MANGLE(ProgramLocalParametersI4uivNV)
+#define glProgramNamedParameter4dNV MANGLE(ProgramNamedParameter4dNV)
+#define glProgramNamedParameter4dvNV MANGLE(ProgramNamedParameter4dvNV)
+#define glProgramNamedParameter4fNV MANGLE(ProgramNamedParameter4fNV)
+#define glProgramNamedParameter4fvNV MANGLE(ProgramNamedParameter4fvNV)
+#define glProgramParameter4dNV MANGLE(ProgramParameter4dNV)
+#define glProgramParameter4dvNV MANGLE(ProgramParameter4dvNV)
+#define glProgramParameter4fNV MANGLE(ProgramParameter4fNV)
+#define glProgramParameter4fvNV MANGLE(ProgramParameter4fvNV)
+#define glProgramParameteriEXT MANGLE(ProgramParameteriEXT)
+#define glProgramParameters4dvNV MANGLE(ProgramParameters4dvNV)
+#define glProgramParameters4fvNV MANGLE(ProgramParameters4fvNV)
+#define glProgramStringARB MANGLE(ProgramStringARB)
+#define glProgramVertexLimitNV MANGLE(ProgramVertexLimitNV)
+#define glPushAttrib MANGLE(PushAttrib)
+#define glPushClientAttrib MANGLE(PushClientAttrib)
+#define glPushMatrix MANGLE(PushMatrix)
+#define glPushName MANGLE(PushName)
+#define glRasterPos2d MANGLE(RasterPos2d)
+#define glRasterPos2dv MANGLE(RasterPos2dv)
+#define glRasterPos2f MANGLE(RasterPos2f)
+#define glRasterPos2fv MANGLE(RasterPos2fv)
+#define glRasterPos2i MANGLE(RasterPos2i)
+#define glRasterPos2iv MANGLE(RasterPos2iv)
+#define glRasterPos2s MANGLE(RasterPos2s)
+#define glRasterPos2sv MANGLE(RasterPos2sv)
+#define glRasterPos3d MANGLE(RasterPos3d)
+#define glRasterPos3dv MANGLE(RasterPos3dv)
+#define glRasterPos3f MANGLE(RasterPos3f)
+#define glRasterPos3fv MANGLE(RasterPos3fv)
+#define glRasterPos3i MANGLE(RasterPos3i)
+#define glRasterPos3iv MANGLE(RasterPos3iv)
+#define glRasterPos3s MANGLE(RasterPos3s)
+#define glRasterPos3sv MANGLE(RasterPos3sv)
+#define glRasterPos4d MANGLE(RasterPos4d)
+#define glRasterPos4dv MANGLE(RasterPos4dv)
+#define glRasterPos4f MANGLE(RasterPos4f)
+#define glRasterPos4fv MANGLE(RasterPos4fv)
+#define glRasterPos4i MANGLE(RasterPos4i)
+#define glRasterPos4iv MANGLE(RasterPos4iv)
+#define glRasterPos4s MANGLE(RasterPos4s)
+#define glRasterPos4sv MANGLE(RasterPos4sv)
+#define glReadBuffer MANGLE(ReadBuffer)
+#define glReadInstrumentsSGIX MANGLE(ReadInstrumentsSGIX)
+#define glReadPixels MANGLE(ReadPixels)
+#define glRectd MANGLE(Rectd)
+#define glRectdv MANGLE(Rectdv)
+#define glRectf MANGLE(Rectf)
+#define glRectfv MANGLE(Rectfv)
+#define glRecti MANGLE(Recti)
+#define glRectiv MANGLE(Rectiv)
+#define glRects MANGLE(Rects)
+#define glRectsv MANGLE(Rectsv)
+#define glReferencePlaneSGIX MANGLE(ReferencePlaneSGIX)
+#define glRenderbufferStorageEXT MANGLE(RenderbufferStorageEXT)
+#define glRenderbufferStorageMultisampleCoverageNV MANGLE(RenderbufferStorageMultisampleCoverageNV)
+#define glRenderbufferStorageMultisampleEXT MANGLE(RenderbufferStorageMultisampleEXT)
+#define glRenderMode MANGLE(RenderMode)
+#define glReplacementCodePointerSUN MANGLE(ReplacementCodePointerSUN)
+#define glReplacementCodeubSUN MANGLE(ReplacementCodeubSUN)
+#define glReplacementCodeubvSUN MANGLE(ReplacementCodeubvSUN)
+#define glReplacementCodeuiColor3fVertex3fSUN MANGLE(ReplacementCodeuiColor3fVertex3fSUN)
+#define glReplacementCodeuiColor3fVertex3fvSUN MANGLE(ReplacementCodeuiColor3fVertex3fvSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiColor4ubVertex3fSUN MANGLE(ReplacementCodeuiColor4ubVertex3fSUN)
+#define glReplacementCodeuiColor4ubVertex3fvSUN MANGLE(ReplacementCodeuiColor4ubVertex3fvSUN)
+#define glReplacementCodeuiNormal3fVertex3fSUN MANGLE(ReplacementCodeuiNormal3fVertex3fSUN)
+#define glReplacementCodeuiNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiNormal3fVertex3fvSUN)
+#define glReplacementCodeuiSUN MANGLE(ReplacementCodeuiSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fvSUN)
+#define glReplacementCodeuiVertex3fSUN MANGLE(ReplacementCodeuiVertex3fSUN)
+#define glReplacementCodeuiVertex3fvSUN MANGLE(ReplacementCodeuiVertex3fvSUN)
+#define glReplacementCodeuivSUN MANGLE(ReplacementCodeuivSUN)
+#define glReplacementCodeusSUN MANGLE(ReplacementCodeusSUN)
+#define glReplacementCodeusvSUN MANGLE(ReplacementCodeusvSUN)
+#define glRequestResidentProgramsNV MANGLE(RequestResidentProgramsNV)
+#define glResetHistogramEXT MANGLE(ResetHistogramEXT)
+#define glResetHistogram MANGLE(ResetHistogram)
+#define glResetMinmaxEXT MANGLE(ResetMinmaxEXT)
+#define glResetMinmax MANGLE(ResetMinmax)
+#define glResizeBuffersMESA MANGLE(ResizeBuffersMESA)
+#define glRotated MANGLE(Rotated)
+#define glRotatef MANGLE(Rotatef)
+#define glSampleCoverageARB MANGLE(SampleCoverageARB)
+#define glSampleCoverage MANGLE(SampleCoverage)
+#define glSampleMapATI MANGLE(SampleMapATI)
+#define glSampleMaskEXT MANGLE(SampleMaskEXT)
+#define glSampleMaskSGIS MANGLE(SampleMaskSGIS)
+#define glSamplePatternEXT MANGLE(SamplePatternEXT)
+#define glSamplePatternSGIS MANGLE(SamplePatternSGIS)
+#define glScaled MANGLE(Scaled)
+#define glScalef MANGLE(Scalef)
+#define glScissor MANGLE(Scissor)
+#define glSecondaryColor3bEXT MANGLE(SecondaryColor3bEXT)
+#define glSecondaryColor3b MANGLE(SecondaryColor3b)
+#define glSecondaryColor3bvEXT MANGLE(SecondaryColor3bvEXT)
+#define glSecondaryColor3bv MANGLE(SecondaryColor3bv)
+#define glSecondaryColor3dEXT MANGLE(SecondaryColor3dEXT)
+#define glSecondaryColor3d MANGLE(SecondaryColor3d)
+#define glSecondaryColor3dvEXT MANGLE(SecondaryColor3dvEXT)
+#define glSecondaryColor3dv MANGLE(SecondaryColor3dv)
+#define glSecondaryColor3fEXT MANGLE(SecondaryColor3fEXT)
+#define glSecondaryColor3f MANGLE(SecondaryColor3f)
+#define glSecondaryColor3fvEXT MANGLE(SecondaryColor3fvEXT)
+#define glSecondaryColor3fv MANGLE(SecondaryColor3fv)
+#define glSecondaryColor3hNV MANGLE(SecondaryColor3hNV)
+#define glSecondaryColor3hvNV MANGLE(SecondaryColor3hvNV)
+#define glSecondaryColor3iEXT MANGLE(SecondaryColor3iEXT)
+#define glSecondaryColor3i MANGLE(SecondaryColor3i)
+#define glSecondaryColor3ivEXT MANGLE(SecondaryColor3ivEXT)
+#define glSecondaryColor3iv MANGLE(SecondaryColor3iv)
+#define glSecondaryColor3sEXT MANGLE(SecondaryColor3sEXT)
+#define glSecondaryColor3s MANGLE(SecondaryColor3s)
+#define glSecondaryColor3svEXT MANGLE(SecondaryColor3svEXT)
+#define glSecondaryColor3sv MANGLE(SecondaryColor3sv)
+#define glSecondaryColor3ubEXT MANGLE(SecondaryColor3ubEXT)
+#define glSecondaryColor3ub MANGLE(SecondaryColor3ub)
+#define glSecondaryColor3ubvEXT MANGLE(SecondaryColor3ubvEXT)
+#define glSecondaryColor3ubv MANGLE(SecondaryColor3ubv)
+#define glSecondaryColor3uiEXT MANGLE(SecondaryColor3uiEXT)
+#define glSecondaryColor3ui MANGLE(SecondaryColor3ui)
+#define glSecondaryColor3uivEXT MANGLE(SecondaryColor3uivEXT)
+#define glSecondaryColor3uiv MANGLE(SecondaryColor3uiv)
+#define glSecondaryColor3usEXT MANGLE(SecondaryColor3usEXT)
+#define glSecondaryColor3us MANGLE(SecondaryColor3us)
+#define glSecondaryColor3usvEXT MANGLE(SecondaryColor3usvEXT)
+#define glSecondaryColor3usv MANGLE(SecondaryColor3usv)
+#define glSecondaryColorPointerEXT MANGLE(SecondaryColorPointerEXT)
+#define glSecondaryColorPointerListIBM MANGLE(SecondaryColorPointerListIBM)
+#define glSecondaryColorPointer MANGLE(SecondaryColorPointer)
+#define glSelectBuffer MANGLE(SelectBuffer)
+#define glSeparableFilter2DEXT MANGLE(SeparableFilter2DEXT)
+#define glSeparableFilter2D MANGLE(SeparableFilter2D)
+#define glSetFenceAPPLE MANGLE(SetFenceAPPLE)
+#define glSetFenceNV MANGLE(SetFenceNV)
+#define glSetFragmentShaderConstantATI MANGLE(SetFragmentShaderConstantATI)
+#define glSetInvariantEXT MANGLE(SetInvariantEXT)
+#define glSetLocalConstantEXT MANGLE(SetLocalConstantEXT)
+#define glShadeModel MANGLE(ShadeModel)
+#define glShaderOp1EXT MANGLE(ShaderOp1EXT)
+#define glShaderOp2EXT MANGLE(ShaderOp2EXT)
+#define glShaderOp3EXT MANGLE(ShaderOp3EXT)
+#define glShaderSourceARB MANGLE(ShaderSourceARB)
+#define glShaderSource MANGLE(ShaderSource)
+#define glSharpenTexFuncSGIS MANGLE(SharpenTexFuncSGIS)
+#define glSpriteParameterfSGIX MANGLE(SpriteParameterfSGIX)
+#define glSpriteParameterfvSGIX MANGLE(SpriteParameterfvSGIX)
+#define glSpriteParameteriSGIX MANGLE(SpriteParameteriSGIX)
+#define glSpriteParameterivSGIX MANGLE(SpriteParameterivSGIX)
+#define glStartInstrumentsSGIX MANGLE(StartInstrumentsSGIX)
+#define glStencilClearTagEXT MANGLE(StencilClearTagEXT)
+#define glStencilFunc MANGLE(StencilFunc)
+#define glStencilFuncSeparateATI MANGLE(StencilFuncSeparateATI)
+#define glStencilFuncSeparate MANGLE(StencilFuncSeparate)
+#define glStencilMask MANGLE(StencilMask)
+#define glStencilMaskSeparate MANGLE(StencilMaskSeparate)
+#define glStencilOp MANGLE(StencilOp)
+#define glStencilOpSeparateATI MANGLE(StencilOpSeparateATI)
+#define glStencilOpSeparate MANGLE(StencilOpSeparate)
+#define glStopInstrumentsSGIX MANGLE(StopInstrumentsSGIX)
+#define glStringMarkerGREMEDY MANGLE(StringMarkerGREMEDY)
+#define glSwizzleEXT MANGLE(SwizzleEXT)
+#define glTagSampleBufferSGIX MANGLE(TagSampleBufferSGIX)
+#define glTangent3bEXT MANGLE(Tangent3bEXT)
+#define glTangent3bvEXT MANGLE(Tangent3bvEXT)
+#define glTangent3dEXT MANGLE(Tangent3dEXT)
+#define glTangent3dvEXT MANGLE(Tangent3dvEXT)
+#define glTangent3fEXT MANGLE(Tangent3fEXT)
+#define glTangent3fvEXT MANGLE(Tangent3fvEXT)
+#define glTangent3iEXT MANGLE(Tangent3iEXT)
+#define glTangent3ivEXT MANGLE(Tangent3ivEXT)
+#define glTangent3sEXT MANGLE(Tangent3sEXT)
+#define glTangent3svEXT MANGLE(Tangent3svEXT)
+#define glTangentPointerEXT MANGLE(TangentPointerEXT)
+#define glTbufferMask3DFX MANGLE(TbufferMask3DFX)
+#define glTestFenceAPPLE MANGLE(TestFenceAPPLE)
+#define glTestFenceNV MANGLE(TestFenceNV)
+#define glTestObjectAPPLE MANGLE(TestObjectAPPLE)
+#define glTexBufferEXT MANGLE(TexBufferEXT)
+#define glTexBumpParameterfvATI MANGLE(TexBumpParameterfvATI)
+#define glTexBumpParameterivATI MANGLE(TexBumpParameterivATI)
+#define glTexCoord1d MANGLE(TexCoord1d)
+#define glTexCoord1dv MANGLE(TexCoord1dv)
+#define glTexCoord1f MANGLE(TexCoord1f)
+#define glTexCoord1fv MANGLE(TexCoord1fv)
+#define glTexCoord1hNV MANGLE(TexCoord1hNV)
+#define glTexCoord1hvNV MANGLE(TexCoord1hvNV)
+#define glTexCoord1i MANGLE(TexCoord1i)
+#define glTexCoord1iv MANGLE(TexCoord1iv)
+#define glTexCoord1s MANGLE(TexCoord1s)
+#define glTexCoord1sv MANGLE(TexCoord1sv)
+#define glTexCoord2d MANGLE(TexCoord2d)
+#define glTexCoord2dv MANGLE(TexCoord2dv)
+#define glTexCoord2fColor3fVertex3fSUN MANGLE(TexCoord2fColor3fVertex3fSUN)
+#define glTexCoord2fColor3fVertex3fvSUN MANGLE(TexCoord2fColor3fVertex3fvSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glTexCoord2fColor4ubVertex3fSUN MANGLE(TexCoord2fColor4ubVertex3fSUN)
+#define glTexCoord2fColor4ubVertex3fvSUN MANGLE(TexCoord2fColor4ubVertex3fvSUN)
+#define glTexCoord2f MANGLE(TexCoord2f)
+#define glTexCoord2fNormal3fVertex3fSUN MANGLE(TexCoord2fNormal3fVertex3fSUN)
+#define glTexCoord2fNormal3fVertex3fvSUN MANGLE(TexCoord2fNormal3fVertex3fvSUN)
+#define glTexCoord2fVertex3fSUN MANGLE(TexCoord2fVertex3fSUN)
+#define glTexCoord2fVertex3fvSUN MANGLE(TexCoord2fVertex3fvSUN)
+#define glTexCoord2fv MANGLE(TexCoord2fv)
+#define glTexCoord2hNV MANGLE(TexCoord2hNV)
+#define glTexCoord2hvNV MANGLE(TexCoord2hvNV)
+#define glTexCoord2i MANGLE(TexCoord2i)
+#define glTexCoord2iv MANGLE(TexCoord2iv)
+#define glTexCoord2s MANGLE(TexCoord2s)
+#define glTexCoord2sv MANGLE(TexCoord2sv)
+#define glTexCoord3d MANGLE(TexCoord3d)
+#define glTexCoord3dv MANGLE(TexCoord3dv)
+#define glTexCoord3f MANGLE(TexCoord3f)
+#define glTexCoord3fv MANGLE(TexCoord3fv)
+#define glTexCoord3hNV MANGLE(TexCoord3hNV)
+#define glTexCoord3hvNV MANGLE(TexCoord3hvNV)
+#define glTexCoord3i MANGLE(TexCoord3i)
+#define glTexCoord3iv MANGLE(TexCoord3iv)
+#define glTexCoord3s MANGLE(TexCoord3s)
+#define glTexCoord3sv MANGLE(TexCoord3sv)
+#define glTexCoord4d MANGLE(TexCoord4d)
+#define glTexCoord4dv MANGLE(TexCoord4dv)
+#define glTexCoord4fColor4fNormal3fVertex4fSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fSUN)
+#define glTexCoord4fColor4fNormal3fVertex4fvSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fvSUN)
+#define glTexCoord4f MANGLE(TexCoord4f)
+#define glTexCoord4fVertex4fSUN MANGLE(TexCoord4fVertex4fSUN)
+#define glTexCoord4fVertex4fvSUN MANGLE(TexCoord4fVertex4fvSUN)
+#define glTexCoord4fv MANGLE(TexCoord4fv)
+#define glTexCoord4hNV MANGLE(TexCoord4hNV)
+#define glTexCoord4hvNV MANGLE(TexCoord4hvNV)
+#define glTexCoord4i MANGLE(TexCoord4i)
+#define glTexCoord4iv MANGLE(TexCoord4iv)
+#define glTexCoord4s MANGLE(TexCoord4s)
+#define glTexCoord4sv MANGLE(TexCoord4sv)
+#define glTexCoordPointerEXT MANGLE(TexCoordPointerEXT)
+#define glTexCoordPointerListIBM MANGLE(TexCoordPointerListIBM)
+#define glTexCoordPointer MANGLE(TexCoordPointer)
+#define glTexCoordPointervINTEL MANGLE(TexCoordPointervINTEL)
+#define glTexEnvf MANGLE(TexEnvf)
+#define glTexEnvfv MANGLE(TexEnvfv)
+#define glTexEnvi MANGLE(TexEnvi)
+#define glTexEnviv MANGLE(TexEnviv)
+#define glTexFilterFuncSGIS MANGLE(TexFilterFuncSGIS)
+#define glTexGend MANGLE(TexGend)
+#define glTexGendv MANGLE(TexGendv)
+#define glTexGenf MANGLE(TexGenf)
+#define glTexGenfv MANGLE(TexGenfv)
+#define glTexGeni MANGLE(TexGeni)
+#define glTexGeniv MANGLE(TexGeniv)
+#define glTexImage1D MANGLE(TexImage1D)
+#define glTexImage2D MANGLE(TexImage2D)
+#define glTexImage3DEXT MANGLE(TexImage3DEXT)
+#define glTexImage3D MANGLE(TexImage3D)
+#define glTexImage4DSGIS MANGLE(TexImage4DSGIS)
+#define glTexParameterf MANGLE(TexParameterf)
+#define glTexParameterfv MANGLE(TexParameterfv)
+#define glTexParameterIivEXT MANGLE(TexParameterIivEXT)
+#define glTexParameteri MANGLE(TexParameteri)
+#define glTexParameterIuivEXT MANGLE(TexParameterIuivEXT)
+#define glTexParameteriv MANGLE(TexParameteriv)
+#define glTexSubImage1DEXT MANGLE(TexSubImage1DEXT)
+#define glTexSubImage1D MANGLE(TexSubImage1D)
+#define glTexSubImage2DEXT MANGLE(TexSubImage2DEXT)
+#define glTexSubImage2D MANGLE(TexSubImage2D)
+#define glTexSubImage3DEXT MANGLE(TexSubImage3DEXT)
+#define glTexSubImage3D MANGLE(TexSubImage3D)
+#define glTexSubImage4DSGIS MANGLE(TexSubImage4DSGIS)
+#define glTextureColorMaskSGIS MANGLE(TextureColorMaskSGIS)
+#define glTextureLightEXT MANGLE(TextureLightEXT)
+#define glTextureMaterialEXT MANGLE(TextureMaterialEXT)
+#define glTextureNormalEXT MANGLE(TextureNormalEXT)
+#define glTrackMatrixNV MANGLE(TrackMatrixNV)
+#define glTransformFeedbackAttribsNV MANGLE(TransformFeedbackAttribsNV)
+#define glTransformFeedbackVaryingsNV MANGLE(TransformFeedbackVaryingsNV)
+#define glTranslated MANGLE(Translated)
+#define glTranslatef MANGLE(Translatef)
+#define glUniform1fARB MANGLE(Uniform1fARB)
+#define glUniform1f MANGLE(Uniform1f)
+#define glUniform1fvARB MANGLE(Uniform1fvARB)
+#define glUniform1fv MANGLE(Uniform1fv)
+#define glUniform1iARB MANGLE(Uniform1iARB)
+#define glUniform1i MANGLE(Uniform1i)
+#define glUniform1ivARB MANGLE(Uniform1ivARB)
+#define glUniform1iv MANGLE(Uniform1iv)
+#define glUniform1uiEXT MANGLE(Uniform1uiEXT)
+#define glUniform1uivEXT MANGLE(Uniform1uivEXT)
+#define glUniform2fARB MANGLE(Uniform2fARB)
+#define glUniform2f MANGLE(Uniform2f)
+#define glUniform2fvARB MANGLE(Uniform2fvARB)
+#define glUniform2fv MANGLE(Uniform2fv)
+#define glUniform2iARB MANGLE(Uniform2iARB)
+#define glUniform2i MANGLE(Uniform2i)
+#define glUniform2ivARB MANGLE(Uniform2ivARB)
+#define glUniform2iv MANGLE(Uniform2iv)
+#define glUniform2uiEXT MANGLE(Uniform2uiEXT)
+#define glUniform2uivEXT MANGLE(Uniform2uivEXT)
+#define glUniform3fARB MANGLE(Uniform3fARB)
+#define glUniform3f MANGLE(Uniform3f)
+#define glUniform3fvARB MANGLE(Uniform3fvARB)
+#define glUniform3fv MANGLE(Uniform3fv)
+#define glUniform3iARB MANGLE(Uniform3iARB)
+#define glUniform3i MANGLE(Uniform3i)
+#define glUniform3ivARB MANGLE(Uniform3ivARB)
+#define glUniform3iv MANGLE(Uniform3iv)
+#define glUniform3uiEXT MANGLE(Uniform3uiEXT)
+#define glUniform3uivEXT MANGLE(Uniform3uivEXT)
+#define glUniform4fARB MANGLE(Uniform4fARB)
+#define glUniform4f MANGLE(Uniform4f)
+#define glUniform4fvARB MANGLE(Uniform4fvARB)
+#define glUniform4fv MANGLE(Uniform4fv)
+#define glUniform4iARB MANGLE(Uniform4iARB)
+#define glUniform4i MANGLE(Uniform4i)
+#define glUniform4ivARB MANGLE(Uniform4ivARB)
+#define glUniform4iv MANGLE(Uniform4iv)
+#define glUniform4uiEXT MANGLE(Uniform4uiEXT)
+#define glUniform4uivEXT MANGLE(Uniform4uivEXT)
+#define glUniformBufferEXT MANGLE(UniformBufferEXT)
+#define glUniformMatrix2fvARB MANGLE(UniformMatrix2fvARB)
+#define glUniformMatrix2fv MANGLE(UniformMatrix2fv)
+#define glUniformMatrix2x3fv MANGLE(UniformMatrix2x3fv)
+#define glUniformMatrix2x4fv MANGLE(UniformMatrix2x4fv)
+#define glUniformMatrix3fvARB MANGLE(UniformMatrix3fvARB)
+#define glUniformMatrix3fv MANGLE(UniformMatrix3fv)
+#define glUniformMatrix3x2fv MANGLE(UniformMatrix3x2fv)
+#define glUniformMatrix3x4fv MANGLE(UniformMatrix3x4fv)
+#define glUniformMatrix4fvARB MANGLE(UniformMatrix4fvARB)
+#define glUniformMatrix4fv MANGLE(UniformMatrix4fv)
+#define glUniformMatrix4x2fv MANGLE(UniformMatrix4x2fv)
+#define glUniformMatrix4x3fv MANGLE(UniformMatrix4x3fv)
+#define glUnlockArraysEXT MANGLE(UnlockArraysEXT)
+#define glUnmapBufferARB MANGLE(UnmapBufferARB)
+#define glUnmapBuffer MANGLE(UnmapBuffer)
+#define glUnmapObjectBufferATI MANGLE(UnmapObjectBufferATI)
+#define glUpdateObjectBufferATI MANGLE(UpdateObjectBufferATI)
+#define glUseProgram MANGLE(UseProgram)
+#define glUseProgramObjectARB MANGLE(UseProgramObjectARB)
+#define glValidateProgramARB MANGLE(ValidateProgramARB)
+#define glValidateProgram MANGLE(ValidateProgram)
+#define glVariantArrayObjectATI MANGLE(VariantArrayObjectATI)
+#define glVariantbvEXT MANGLE(VariantbvEXT)
+#define glVariantdvEXT MANGLE(VariantdvEXT)
+#define glVariantfvEXT MANGLE(VariantfvEXT)
+#define glVariantivEXT MANGLE(VariantivEXT)
+#define glVariantPointerEXT MANGLE(VariantPointerEXT)
+#define glVariantsvEXT MANGLE(VariantsvEXT)
+#define glVariantubvEXT MANGLE(VariantubvEXT)
+#define glVariantuivEXT MANGLE(VariantuivEXT)
+#define glVariantusvEXT MANGLE(VariantusvEXT)
+#define glVertex2d MANGLE(Vertex2d)
+#define glVertex2dv MANGLE(Vertex2dv)
+#define glVertex2f MANGLE(Vertex2f)
+#define glVertex2fv MANGLE(Vertex2fv)
+#define glVertex2hNV MANGLE(Vertex2hNV)
+#define glVertex2hvNV MANGLE(Vertex2hvNV)
+#define glVertex2i MANGLE(Vertex2i)
+#define glVertex2iv MANGLE(Vertex2iv)
+#define glVertex2s MANGLE(Vertex2s)
+#define glVertex2sv MANGLE(Vertex2sv)
+#define glVertex3d MANGLE(Vertex3d)
+#define glVertex3dv MANGLE(Vertex3dv)
+#define glVertex3f MANGLE(Vertex3f)
+#define glVertex3fv MANGLE(Vertex3fv)
+#define glVertex3hNV MANGLE(Vertex3hNV)
+#define glVertex3hvNV MANGLE(Vertex3hvNV)
+#define glVertex3i MANGLE(Vertex3i)
+#define glVertex3iv MANGLE(Vertex3iv)
+#define glVertex3s MANGLE(Vertex3s)
+#define glVertex3sv MANGLE(Vertex3sv)
+#define glVertex4d MANGLE(Vertex4d)
+#define glVertex4dv MANGLE(Vertex4dv)
+#define glVertex4f MANGLE(Vertex4f)
+#define glVertex4fv MANGLE(Vertex4fv)
+#define glVertex4hNV MANGLE(Vertex4hNV)
+#define glVertex4hvNV MANGLE(Vertex4hvNV)
+#define glVertex4i MANGLE(Vertex4i)
+#define glVertex4iv MANGLE(Vertex4iv)
+#define glVertex4s MANGLE(Vertex4s)
+#define glVertex4sv MANGLE(Vertex4sv)
+#define glVertexArrayParameteriAPPLE MANGLE(VertexArrayParameteriAPPLE)
+#define glVertexArrayRangeAPPLE MANGLE(VertexArrayRangeAPPLE)
+#define glVertexArrayRangeNV MANGLE(VertexArrayRangeNV)
+#define glVertexAttrib1dARB MANGLE(VertexAttrib1dARB)
+#define glVertexAttrib1d MANGLE(VertexAttrib1d)
+#define glVertexAttrib1dNV MANGLE(VertexAttrib1dNV)
+#define glVertexAttrib1dvARB MANGLE(VertexAttrib1dvARB)
+#define glVertexAttrib1dv MANGLE(VertexAttrib1dv)
+#define glVertexAttrib1dvNV MANGLE(VertexAttrib1dvNV)
+#define glVertexAttrib1fARB MANGLE(VertexAttrib1fARB)
+#define glVertexAttrib1f MANGLE(VertexAttrib1f)
+#define glVertexAttrib1fNV MANGLE(VertexAttrib1fNV)
+#define glVertexAttrib1fvARB MANGLE(VertexAttrib1fvARB)
+#define glVertexAttrib1fv MANGLE(VertexAttrib1fv)
+#define glVertexAttrib1fvNV MANGLE(VertexAttrib1fvNV)
+#define glVertexAttrib1hNV MANGLE(VertexAttrib1hNV)
+#define glVertexAttrib1hvNV MANGLE(VertexAttrib1hvNV)
+#define glVertexAttrib1sARB MANGLE(VertexAttrib1sARB)
+#define glVertexAttrib1s MANGLE(VertexAttrib1s)
+#define glVertexAttrib1sNV MANGLE(VertexAttrib1sNV)
+#define glVertexAttrib1svARB MANGLE(VertexAttrib1svARB)
+#define glVertexAttrib1sv MANGLE(VertexAttrib1sv)
+#define glVertexAttrib1svNV MANGLE(VertexAttrib1svNV)
+#define glVertexAttrib2dARB MANGLE(VertexAttrib2dARB)
+#define glVertexAttrib2d MANGLE(VertexAttrib2d)
+#define glVertexAttrib2dNV MANGLE(VertexAttrib2dNV)
+#define glVertexAttrib2dvARB MANGLE(VertexAttrib2dvARB)
+#define glVertexAttrib2dv MANGLE(VertexAttrib2dv)
+#define glVertexAttrib2dvNV MANGLE(VertexAttrib2dvNV)
+#define glVertexAttrib2fARB MANGLE(VertexAttrib2fARB)
+#define glVertexAttrib2f MANGLE(VertexAttrib2f)
+#define glVertexAttrib2fNV MANGLE(VertexAttrib2fNV)
+#define glVertexAttrib2fvARB MANGLE(VertexAttrib2fvARB)
+#define glVertexAttrib2fv MANGLE(VertexAttrib2fv)
+#define glVertexAttrib2fvNV MANGLE(VertexAttrib2fvNV)
+#define glVertexAttrib2hNV MANGLE(VertexAttrib2hNV)
+#define glVertexAttrib2hvNV MANGLE(VertexAttrib2hvNV)
+#define glVertexAttrib2sARB MANGLE(VertexAttrib2sARB)
+#define glVertexAttrib2s MANGLE(VertexAttrib2s)
+#define glVertexAttrib2sNV MANGLE(VertexAttrib2sNV)
+#define glVertexAttrib2svARB MANGLE(VertexAttrib2svARB)
+#define glVertexAttrib2sv MANGLE(VertexAttrib2sv)
+#define glVertexAttrib2svNV MANGLE(VertexAttrib2svNV)
+#define glVertexAttrib3dARB MANGLE(VertexAttrib3dARB)
+#define glVertexAttrib3d MANGLE(VertexAttrib3d)
+#define glVertexAttrib3dNV MANGLE(VertexAttrib3dNV)
+#define glVertexAttrib3dvARB MANGLE(VertexAttrib3dvARB)
+#define glVertexAttrib3dv MANGLE(VertexAttrib3dv)
+#define glVertexAttrib3dvNV MANGLE(VertexAttrib3dvNV)
+#define glVertexAttrib3fARB MANGLE(VertexAttrib3fARB)
+#define glVertexAttrib3f MANGLE(VertexAttrib3f)
+#define glVertexAttrib3fNV MANGLE(VertexAttrib3fNV)
+#define glVertexAttrib3fvARB MANGLE(VertexAttrib3fvARB)
+#define glVertexAttrib3fv MANGLE(VertexAttrib3fv)
+#define glVertexAttrib3fvNV MANGLE(VertexAttrib3fvNV)
+#define glVertexAttrib3hNV MANGLE(VertexAttrib3hNV)
+#define glVertexAttrib3hvNV MANGLE(VertexAttrib3hvNV)
+#define glVertexAttrib3sARB MANGLE(VertexAttrib3sARB)
+#define glVertexAttrib3s MANGLE(VertexAttrib3s)
+#define glVertexAttrib3sNV MANGLE(VertexAttrib3sNV)
+#define glVertexAttrib3svARB MANGLE(VertexAttrib3svARB)
+#define glVertexAttrib3sv MANGLE(VertexAttrib3sv)
+#define glVertexAttrib3svNV MANGLE(VertexAttrib3svNV)
+#define glVertexAttrib4bvARB MANGLE(VertexAttrib4bvARB)
+#define glVertexAttrib4bv MANGLE(VertexAttrib4bv)
+#define glVertexAttrib4dARB MANGLE(VertexAttrib4dARB)
+#define glVertexAttrib4d MANGLE(VertexAttrib4d)
+#define glVertexAttrib4dNV MANGLE(VertexAttrib4dNV)
+#define glVertexAttrib4dvARB MANGLE(VertexAttrib4dvARB)
+#define glVertexAttrib4dv MANGLE(VertexAttrib4dv)
+#define glVertexAttrib4dvNV MANGLE(VertexAttrib4dvNV)
+#define glVertexAttrib4fARB MANGLE(VertexAttrib4fARB)
+#define glVertexAttrib4f MANGLE(VertexAttrib4f)
+#define glVertexAttrib4fNV MANGLE(VertexAttrib4fNV)
+#define glVertexAttrib4fvARB MANGLE(VertexAttrib4fvARB)
+#define glVertexAttrib4fv MANGLE(VertexAttrib4fv)
+#define glVertexAttrib4fvNV MANGLE(VertexAttrib4fvNV)
+#define glVertexAttrib4hNV MANGLE(VertexAttrib4hNV)
+#define glVertexAttrib4hvNV MANGLE(VertexAttrib4hvNV)
+#define glVertexAttrib4ivARB MANGLE(VertexAttrib4ivARB)
+#define glVertexAttrib4iv MANGLE(VertexAttrib4iv)
+#define glVertexAttrib4NbvARB MANGLE(VertexAttrib4NbvARB)
+#define glVertexAttrib4Nbv MANGLE(VertexAttrib4Nbv)
+#define glVertexAttrib4NivARB MANGLE(VertexAttrib4NivARB)
+#define glVertexAttrib4Niv MANGLE(VertexAttrib4Niv)
+#define glVertexAttrib4NsvARB MANGLE(VertexAttrib4NsvARB)
+#define glVertexAttrib4Nsv MANGLE(VertexAttrib4Nsv)
+#define glVertexAttrib4NubARB MANGLE(VertexAttrib4NubARB)
+#define glVertexAttrib4Nub MANGLE(VertexAttrib4Nub)
+#define glVertexAttrib4NubvARB MANGLE(VertexAttrib4NubvARB)
+#define glVertexAttrib4Nubv MANGLE(VertexAttrib4Nubv)
+#define glVertexAttrib4NuivARB MANGLE(VertexAttrib4NuivARB)
+#define glVertexAttrib4Nuiv MANGLE(VertexAttrib4Nuiv)
+#define glVertexAttrib4NusvARB MANGLE(VertexAttrib4NusvARB)
+#define glVertexAttrib4Nusv MANGLE(VertexAttrib4Nusv)
+#define glVertexAttrib4sARB MANGLE(VertexAttrib4sARB)
+#define glVertexAttrib4s MANGLE(VertexAttrib4s)
+#define glVertexAttrib4sNV MANGLE(VertexAttrib4sNV)
+#define glVertexAttrib4svARB MANGLE(VertexAttrib4svARB)
+#define glVertexAttrib4sv MANGLE(VertexAttrib4sv)
+#define glVertexAttrib4svNV MANGLE(VertexAttrib4svNV)
+#define glVertexAttrib4ubNV MANGLE(VertexAttrib4ubNV)
+#define glVertexAttrib4ubvARB MANGLE(VertexAttrib4ubvARB)
+#define glVertexAttrib4ubv MANGLE(VertexAttrib4ubv)
+#define glVertexAttrib4ubvNV MANGLE(VertexAttrib4ubvNV)
+#define glVertexAttrib4uivARB MANGLE(VertexAttrib4uivARB)
+#define glVertexAttrib4uiv MANGLE(VertexAttrib4uiv)
+#define glVertexAttrib4usvARB MANGLE(VertexAttrib4usvARB)
+#define glVertexAttrib4usv MANGLE(VertexAttrib4usv)
+#define glVertexAttribArrayObjectATI MANGLE(VertexAttribArrayObjectATI)
+#define glVertexAttribI1iEXT MANGLE(VertexAttribI1iEXT)
+#define glVertexAttribI1ivEXT MANGLE(VertexAttribI1ivEXT)
+#define glVertexAttribI1uiEXT MANGLE(VertexAttribI1uiEXT)
+#define glVertexAttribI1uivEXT MANGLE(VertexAttribI1uivEXT)
+#define glVertexAttribI2iEXT MANGLE(VertexAttribI2iEXT)
+#define glVertexAttribI2ivEXT MANGLE(VertexAttribI2ivEXT)
+#define glVertexAttribI2uiEXT MANGLE(VertexAttribI2uiEXT)
+#define glVertexAttribI2uivEXT MANGLE(VertexAttribI2uivEXT)
+#define glVertexAttribI3iEXT MANGLE(VertexAttribI3iEXT)
+#define glVertexAttribI3ivEXT MANGLE(VertexAttribI3ivEXT)
+#define glVertexAttribI3uiEXT MANGLE(VertexAttribI3uiEXT)
+#define glVertexAttribI3uivEXT MANGLE(VertexAttribI3uivEXT)
+#define glVertexAttribI4bvEXT MANGLE(VertexAttribI4bvEXT)
+#define glVertexAttribI4iEXT MANGLE(VertexAttribI4iEXT)
+#define glVertexAttribI4ivEXT MANGLE(VertexAttribI4ivEXT)
+#define glVertexAttribI4svEXT MANGLE(VertexAttribI4svEXT)
+#define glVertexAttribI4ubvEXT MANGLE(VertexAttribI4ubvEXT)
+#define glVertexAttribI4uiEXT MANGLE(VertexAttribI4uiEXT)
+#define glVertexAttribI4uivEXT MANGLE(VertexAttribI4uivEXT)
+#define glVertexAttribI4usvEXT MANGLE(VertexAttribI4usvEXT)
+#define glVertexAttribIPointerEXT MANGLE(VertexAttribIPointerEXT)
+#define glVertexAttribPointerARB MANGLE(VertexAttribPointerARB)
+#define glVertexAttribPointer MANGLE(VertexAttribPointer)
+#define glVertexAttribPointerNV MANGLE(VertexAttribPointerNV)
+#define glVertexAttribs1dvNV MANGLE(VertexAttribs1dvNV)
+#define glVertexAttribs1fvNV MANGLE(VertexAttribs1fvNV)
+#define glVertexAttribs1hvNV MANGLE(VertexAttribs1hvNV)
+#define glVertexAttribs1svNV MANGLE(VertexAttribs1svNV)
+#define glVertexAttribs2dvNV MANGLE(VertexAttribs2dvNV)
+#define glVertexAttribs2fvNV MANGLE(VertexAttribs2fvNV)
+#define glVertexAttribs2hvNV MANGLE(VertexAttribs2hvNV)
+#define glVertexAttribs2svNV MANGLE(VertexAttribs2svNV)
+#define glVertexAttribs3dvNV MANGLE(VertexAttribs3dvNV)
+#define glVertexAttribs3fvNV MANGLE(VertexAttribs3fvNV)
+#define glVertexAttribs3hvNV MANGLE(VertexAttribs3hvNV)
+#define glVertexAttribs3svNV MANGLE(VertexAttribs3svNV)
+#define glVertexAttribs4dvNV MANGLE(VertexAttribs4dvNV)
+#define glVertexAttribs4fvNV MANGLE(VertexAttribs4fvNV)
+#define glVertexAttribs4hvNV MANGLE(VertexAttribs4hvNV)
+#define glVertexAttribs4svNV MANGLE(VertexAttribs4svNV)
+#define glVertexAttribs4ubvNV MANGLE(VertexAttribs4ubvNV)
+#define glVertexBlendARB MANGLE(VertexBlendARB)
+#define glVertexBlendEnvfATI MANGLE(VertexBlendEnvfATI)
+#define glVertexBlendEnviATI MANGLE(VertexBlendEnviATI)
+#define glVertexPointerEXT MANGLE(VertexPointerEXT)
+#define glVertexPointerListIBM MANGLE(VertexPointerListIBM)
+#define glVertexPointer MANGLE(VertexPointer)
+#define glVertexPointervINTEL MANGLE(VertexPointervINTEL)
+#define glVertexStream1dATI MANGLE(VertexStream1dATI)
+#define glVertexStream1dvATI MANGLE(VertexStream1dvATI)
+#define glVertexStream1fATI MANGLE(VertexStream1fATI)
+#define glVertexStream1fvATI MANGLE(VertexStream1fvATI)
+#define glVertexStream1iATI MANGLE(VertexStream1iATI)
+#define glVertexStream1ivATI MANGLE(VertexStream1ivATI)
+#define glVertexStream1sATI MANGLE(VertexStream1sATI)
+#define glVertexStream1svATI MANGLE(VertexStream1svATI)
+#define glVertexStream2dATI MANGLE(VertexStream2dATI)
+#define glVertexStream2dvATI MANGLE(VertexStream2dvATI)
+#define glVertexStream2fATI MANGLE(VertexStream2fATI)
+#define glVertexStream2fvATI MANGLE(VertexStream2fvATI)
+#define glVertexStream2iATI MANGLE(VertexStream2iATI)
+#define glVertexStream2ivATI MANGLE(VertexStream2ivATI)
+#define glVertexStream2sATI MANGLE(VertexStream2sATI)
+#define glVertexStream2svATI MANGLE(VertexStream2svATI)
+#define glVertexStream3dATI MANGLE(VertexStream3dATI)
+#define glVertexStream3dvATI MANGLE(VertexStream3dvATI)
+#define glVertexStream3fATI MANGLE(VertexStream3fATI)
+#define glVertexStream3fvATI MANGLE(VertexStream3fvATI)
+#define glVertexStream3iATI MANGLE(VertexStream3iATI)
+#define glVertexStream3ivATI MANGLE(VertexStream3ivATI)
+#define glVertexStream3sATI MANGLE(VertexStream3sATI)
+#define glVertexStream3svATI MANGLE(VertexStream3svATI)
+#define glVertexStream4dATI MANGLE(VertexStream4dATI)
+#define glVertexStream4dvATI MANGLE(VertexStream4dvATI)
+#define glVertexStream4fATI MANGLE(VertexStream4fATI)
+#define glVertexStream4fvATI MANGLE(VertexStream4fvATI)
+#define glVertexStream4iATI MANGLE(VertexStream4iATI)
+#define glVertexStream4ivATI MANGLE(VertexStream4ivATI)
+#define glVertexStream4sATI MANGLE(VertexStream4sATI)
+#define glVertexStream4svATI MANGLE(VertexStream4svATI)
+#define glVertexWeightfEXT MANGLE(VertexWeightfEXT)
+#define glVertexWeightfvEXT MANGLE(VertexWeightfvEXT)
+#define glVertexWeighthNV MANGLE(VertexWeighthNV)
+#define glVertexWeighthvNV MANGLE(VertexWeighthvNV)
+#define glVertexWeightPointerEXT MANGLE(VertexWeightPointerEXT)
+#define glViewport MANGLE(Viewport)
+#define glWeightbvARB MANGLE(WeightbvARB)
+#define glWeightdvARB MANGLE(WeightdvARB)
+#define glWeightfvARB MANGLE(WeightfvARB)
+#define glWeightivARB MANGLE(WeightivARB)
+#define glWeightPointerARB MANGLE(WeightPointerARB)
+#define glWeightsvARB MANGLE(WeightsvARB)
+#define glWeightubvARB MANGLE(WeightubvARB)
+#define glWeightuivARB MANGLE(WeightuivARB)
+#define glWeightusvARB MANGLE(WeightusvARB)
+#define glWindowPos2dARB MANGLE(WindowPos2dARB)
+#define glWindowPos2d MANGLE(WindowPos2d)
+#define glWindowPos2dMESA MANGLE(WindowPos2dMESA)
+#define glWindowPos2dvARB MANGLE(WindowPos2dvARB)
+#define glWindowPos2dv MANGLE(WindowPos2dv)
+#define glWindowPos2dvMESA MANGLE(WindowPos2dvMESA)
+#define glWindowPos2fARB MANGLE(WindowPos2fARB)
+#define glWindowPos2f MANGLE(WindowPos2f)
+#define glWindowPos2fMESA MANGLE(WindowPos2fMESA)
+#define glWindowPos2fvARB MANGLE(WindowPos2fvARB)
+#define glWindowPos2fv MANGLE(WindowPos2fv)
+#define glWindowPos2fvMESA MANGLE(WindowPos2fvMESA)
+#define glWindowPos2iARB MANGLE(WindowPos2iARB)
+#define glWindowPos2i MANGLE(WindowPos2i)
+#define glWindowPos2iMESA MANGLE(WindowPos2iMESA)
+#define glWindowPos2ivARB MANGLE(WindowPos2ivARB)
+#define glWindowPos2iv MANGLE(WindowPos2iv)
+#define glWindowPos2ivMESA MANGLE(WindowPos2ivMESA)
+#define glWindowPos2sARB MANGLE(WindowPos2sARB)
+#define glWindowPos2s MANGLE(WindowPos2s)
+#define glWindowPos2sMESA MANGLE(WindowPos2sMESA)
+#define glWindowPos2svARB MANGLE(WindowPos2svARB)
+#define glWindowPos2sv MANGLE(WindowPos2sv)
+#define glWindowPos2svMESA MANGLE(WindowPos2svMESA)
+#define glWindowPos3dARB MANGLE(WindowPos3dARB)
+#define glWindowPos3d MANGLE(WindowPos3d)
+#define glWindowPos3dMESA MANGLE(WindowPos3dMESA)
+#define glWindowPos3dvARB MANGLE(WindowPos3dvARB)
+#define glWindowPos3dv MANGLE(WindowPos3dv)
+#define glWindowPos3dvMESA MANGLE(WindowPos3dvMESA)
+#define glWindowPos3fARB MANGLE(WindowPos3fARB)
+#define glWindowPos3f MANGLE(WindowPos3f)
+#define glWindowPos3fMESA MANGLE(WindowPos3fMESA)
+#define glWindowPos3fvARB MANGLE(WindowPos3fvARB)
+#define glWindowPos3fv MANGLE(WindowPos3fv)
+#define glWindowPos3fvMESA MANGLE(WindowPos3fvMESA)
+#define glWindowPos3iARB MANGLE(WindowPos3iARB)
+#define glWindowPos3i MANGLE(WindowPos3i)
+#define glWindowPos3iMESA MANGLE(WindowPos3iMESA)
+#define glWindowPos3ivARB MANGLE(WindowPos3ivARB)
+#define glWindowPos3iv MANGLE(WindowPos3iv)
+#define glWindowPos3ivMESA MANGLE(WindowPos3ivMESA)
+#define glWindowPos3sARB MANGLE(WindowPos3sARB)
+#define glWindowPos3s MANGLE(WindowPos3s)
+#define glWindowPos3sMESA MANGLE(WindowPos3sMESA)
+#define glWindowPos3svARB MANGLE(WindowPos3svARB)
+#define glWindowPos3sv MANGLE(WindowPos3sv)
+#define glWindowPos3svMESA MANGLE(WindowPos3svMESA)
+#define glWindowPos4dMESA MANGLE(WindowPos4dMESA)
+#define glWindowPos4dvMESA MANGLE(WindowPos4dvMESA)
+#define glWindowPos4fMESA MANGLE(WindowPos4fMESA)
+#define glWindowPos4fvMESA MANGLE(WindowPos4fvMESA)
+#define glWindowPos4iMESA MANGLE(WindowPos4iMESA)
+#define glWindowPos4ivMESA MANGLE(WindowPos4ivMESA)
+#define glWindowPos4sMESA MANGLE(WindowPos4sMESA)
+#define glWindowPos4svMESA MANGLE(WindowPos4svMESA)
+#define glWriteMaskEXT MANGLE(WriteMaskEXT)
+
+#endif /* GL_MANGLE_H */
diff --git a/Mesa/inc/glext.h b/Mesa/inc/glext.h
new file mode 100644
index 000000000000..449b70d0b459
--- /dev/null
+++ b/Mesa/inc/glext.h
@@ -0,0 +1,7271 @@
+#ifndef __glext_h_
+#define __glext_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+/*************************************************************/
+
+/* Header file version number, required by OpenGL ABI for Linux */
+/* glext.h last updated 2008/03/24 */
+/* Current version at http://www.opengl.org/registry/ */
+#define GL_GLEXT_VERSION 40
+
+#ifndef GL_VERSION_1_2
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
+#define GL_RESCALE_NORMAL 0x803A
+#define GL_TEXTURE_BINDING_3D 0x806A
+#define GL_PACK_SKIP_IMAGES 0x806B
+#define GL_PACK_IMAGE_HEIGHT 0x806C
+#define GL_UNPACK_SKIP_IMAGES 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
+#define GL_TEXTURE_3D 0x806F
+#define GL_PROXY_TEXTURE_3D 0x8070
+#define GL_TEXTURE_DEPTH 0x8071
+#define GL_TEXTURE_WRAP_R 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_BGR 0x80E0
+#define GL_BGRA 0x80E1
+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
+#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_TEXTURE_MIN_LOD 0x813A
+#define GL_TEXTURE_MAX_LOD 0x813B
+#define GL_TEXTURE_BASE_LEVEL 0x813C
+#define GL_TEXTURE_MAX_LEVEL 0x813D
+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
+#define GL_SINGLE_COLOR 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
+#endif
+
+#ifndef GL_ARB_imaging
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_BLEND_COLOR 0x8005
+#define GL_FUNC_ADD 0x8006
+#define GL_MIN 0x8007
+#define GL_MAX 0x8008
+#define GL_BLEND_EQUATION 0x8009
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_CONVOLUTION_1D 0x8010
+#define GL_CONVOLUTION_2D 0x8011
+#define GL_SEPARABLE_2D 0x8012
+#define GL_CONVOLUTION_BORDER_MODE 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
+#define GL_REDUCE 0x8016
+#define GL_CONVOLUTION_FORMAT 0x8017
+#define GL_CONVOLUTION_WIDTH 0x8018
+#define GL_CONVOLUTION_HEIGHT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+#define GL_HISTOGRAM 0x8024
+#define GL_PROXY_HISTOGRAM 0x8025
+#define GL_HISTOGRAM_WIDTH 0x8026
+#define GL_HISTOGRAM_FORMAT 0x8027
+#define GL_HISTOGRAM_RED_SIZE 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+#define GL_HISTOGRAM_SINK 0x802D
+#define GL_MINMAX 0x802E
+#define GL_MINMAX_FORMAT 0x802F
+#define GL_MINMAX_SINK 0x8030
+#define GL_TABLE_TOO_LARGE 0x8031
+#define GL_COLOR_MATRIX 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+#define GL_COLOR_TABLE 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+#define GL_PROXY_COLOR_TABLE 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE 0x80D6
+#define GL_COLOR_TABLE_BIAS 0x80D7
+#define GL_COLOR_TABLE_FORMAT 0x80D8
+#define GL_COLOR_TABLE_WIDTH 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+#define GL_CONSTANT_BORDER 0x8151
+#define GL_REPLICATE_BORDER 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
+#endif
+
+#ifndef GL_VERSION_1_3
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE3 0x84C3
+#define GL_TEXTURE4 0x84C4
+#define GL_TEXTURE5 0x84C5
+#define GL_TEXTURE6 0x84C6
+#define GL_TEXTURE7 0x84C7
+#define GL_TEXTURE8 0x84C8
+#define GL_TEXTURE9 0x84C9
+#define GL_TEXTURE10 0x84CA
+#define GL_TEXTURE11 0x84CB
+#define GL_TEXTURE12 0x84CC
+#define GL_TEXTURE13 0x84CD
+#define GL_TEXTURE14 0x84CE
+#define GL_TEXTURE15 0x84CF
+#define GL_TEXTURE16 0x84D0
+#define GL_TEXTURE17 0x84D1
+#define GL_TEXTURE18 0x84D2
+#define GL_TEXTURE19 0x84D3
+#define GL_TEXTURE20 0x84D4
+#define GL_TEXTURE21 0x84D5
+#define GL_TEXTURE22 0x84D6
+#define GL_TEXTURE23 0x84D7
+#define GL_TEXTURE24 0x84D8
+#define GL_TEXTURE25 0x84D9
+#define GL_TEXTURE26 0x84DA
+#define GL_TEXTURE27 0x84DB
+#define GL_TEXTURE28 0x84DC
+#define GL_TEXTURE29 0x84DD
+#define GL_TEXTURE30 0x84DE
+#define GL_TEXTURE31 0x84DF
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
+#define GL_MAX_TEXTURE_UNITS 0x84E2
+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
+#define GL_MULTISAMPLE 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
+#define GL_SAMPLE_COVERAGE 0x80A0
+#define GL_SAMPLE_BUFFERS 0x80A8
+#define GL_SAMPLES 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
+#define GL_MULTISAMPLE_BIT 0x20000000
+#define GL_NORMAL_MAP 0x8511
+#define GL_REFLECTION_MAP 0x8512
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
+#define GL_COMPRESSED_ALPHA 0x84E9
+#define GL_COMPRESSED_LUMINANCE 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
+#define GL_COMPRESSED_INTENSITY 0x84EC
+#define GL_COMPRESSED_RGB 0x84ED
+#define GL_COMPRESSED_RGBA 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
+#define GL_TEXTURE_COMPRESSED 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
+#define GL_CLAMP_TO_BORDER 0x812D
+#define GL_COMBINE 0x8570
+#define GL_COMBINE_RGB 0x8571
+#define GL_COMBINE_ALPHA 0x8572
+#define GL_SOURCE0_RGB 0x8580
+#define GL_SOURCE1_RGB 0x8581
+#define GL_SOURCE2_RGB 0x8582
+#define GL_SOURCE0_ALPHA 0x8588
+#define GL_SOURCE1_ALPHA 0x8589
+#define GL_SOURCE2_ALPHA 0x858A
+#define GL_OPERAND0_RGB 0x8590
+#define GL_OPERAND1_RGB 0x8591
+#define GL_OPERAND2_RGB 0x8592
+#define GL_OPERAND0_ALPHA 0x8598
+#define GL_OPERAND1_ALPHA 0x8599
+#define GL_OPERAND2_ALPHA 0x859A
+#define GL_RGB_SCALE 0x8573
+#define GL_ADD_SIGNED 0x8574
+#define GL_INTERPOLATE 0x8575
+#define GL_SUBTRACT 0x84E7
+#define GL_CONSTANT 0x8576
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PREVIOUS 0x8578
+#define GL_DOT3_RGB 0x86AE
+#define GL_DOT3_RGBA 0x86AF
+#endif
+
+#ifndef GL_VERSION_1_4
+#define GL_BLEND_DST_RGB 0x80C8
+#define GL_BLEND_SRC_RGB 0x80C9
+#define GL_BLEND_DST_ALPHA 0x80CA
+#define GL_BLEND_SRC_ALPHA 0x80CB
+#define GL_POINT_SIZE_MIN 0x8126
+#define GL_POINT_SIZE_MAX 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION 0x8129
+#define GL_GENERATE_MIPMAP 0x8191
+#define GL_GENERATE_MIPMAP_HINT 0x8192
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_DEPTH_COMPONENT24 0x81A6
+#define GL_DEPTH_COMPONENT32 0x81A7
+#define GL_MIRRORED_REPEAT 0x8370
+#define GL_FOG_COORDINATE_SOURCE 0x8450
+#define GL_FOG_COORDINATE 0x8451
+#define GL_FRAGMENT_DEPTH 0x8452
+#define GL_CURRENT_FOG_COORDINATE 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
+#define GL_FOG_COORDINATE_ARRAY 0x8457
+#define GL_COLOR_SUM 0x8458
+#define GL_CURRENT_SECONDARY_COLOR 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
+#define GL_SECONDARY_COLOR_ARRAY 0x845E
+#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_TEXTURE_FILTER_CONTROL 0x8500
+#define GL_TEXTURE_LOD_BIAS 0x8501
+#define GL_INCR_WRAP 0x8507
+#define GL_DECR_WRAP 0x8508
+#define GL_TEXTURE_DEPTH_SIZE 0x884A
+#define GL_DEPTH_TEXTURE_MODE 0x884B
+#define GL_TEXTURE_COMPARE_MODE 0x884C
+#define GL_TEXTURE_COMPARE_FUNC 0x884D
+#define GL_COMPARE_R_TO_TEXTURE 0x884E
+#endif
+
+#ifndef GL_VERSION_1_5
+#define GL_BUFFER_SIZE 0x8764
+#define GL_BUFFER_USAGE 0x8765
+#define GL_QUERY_COUNTER_BITS 0x8864
+#define GL_CURRENT_QUERY 0x8865
+#define GL_QUERY_RESULT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE 0x8867
+#define GL_ARRAY_BUFFER 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ARRAY_BUFFER_BINDING 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
+#define GL_READ_ONLY 0x88B8
+#define GL_WRITE_ONLY 0x88B9
+#define GL_READ_WRITE 0x88BA
+#define GL_BUFFER_ACCESS 0x88BB
+#define GL_BUFFER_MAPPED 0x88BC
+#define GL_BUFFER_MAP_POINTER 0x88BD
+#define GL_STREAM_DRAW 0x88E0
+#define GL_STREAM_READ 0x88E1
+#define GL_STREAM_COPY 0x88E2
+#define GL_STATIC_DRAW 0x88E4
+#define GL_STATIC_READ 0x88E5
+#define GL_STATIC_COPY 0x88E6
+#define GL_DYNAMIC_DRAW 0x88E8
+#define GL_DYNAMIC_READ 0x88E9
+#define GL_DYNAMIC_COPY 0x88EA
+#define GL_SAMPLES_PASSED 0x8914
+#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
+#define GL_FOG_COORD GL_FOG_COORDINATE
+#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
+#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
+#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
+#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
+#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+#define GL_SRC0_RGB GL_SOURCE0_RGB
+#define GL_SRC1_RGB GL_SOURCE1_RGB
+#define GL_SRC2_RGB GL_SOURCE2_RGB
+#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
+#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
+#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
+#endif
+
+#ifndef GL_VERSION_2_0
+#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB 0x8626
+#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
+#define GL_STENCIL_BACK_FUNC 0x8800
+#define GL_STENCIL_BACK_FAIL 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
+#define GL_MAX_DRAW_BUFFERS 0x8824
+#define GL_DRAW_BUFFER0 0x8825
+#define GL_DRAW_BUFFER1 0x8826
+#define GL_DRAW_BUFFER2 0x8827
+#define GL_DRAW_BUFFER3 0x8828
+#define GL_DRAW_BUFFER4 0x8829
+#define GL_DRAW_BUFFER5 0x882A
+#define GL_DRAW_BUFFER6 0x882B
+#define GL_DRAW_BUFFER7 0x882C
+#define GL_DRAW_BUFFER8 0x882D
+#define GL_DRAW_BUFFER9 0x882E
+#define GL_DRAW_BUFFER10 0x882F
+#define GL_DRAW_BUFFER11 0x8830
+#define GL_DRAW_BUFFER12 0x8831
+#define GL_DRAW_BUFFER13 0x8832
+#define GL_DRAW_BUFFER14 0x8833
+#define GL_DRAW_BUFFER15 0x8834
+#define GL_BLEND_EQUATION_ALPHA 0x883D
+#define GL_POINT_SPRITE 0x8861
+#define GL_COORD_REPLACE 0x8862
+#define GL_MAX_VERTEX_ATTRIBS 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
+#define GL_MAX_TEXTURE_COORDS 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
+#define GL_FRAGMENT_SHADER 0x8B30
+#define GL_VERTEX_SHADER 0x8B31
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
+#define GL_MAX_VARYING_FLOATS 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
+#define GL_SHADER_TYPE 0x8B4F
+#define GL_FLOAT_VEC2 0x8B50
+#define GL_FLOAT_VEC3 0x8B51
+#define GL_FLOAT_VEC4 0x8B52
+#define GL_INT_VEC2 0x8B53
+#define GL_INT_VEC3 0x8B54
+#define GL_INT_VEC4 0x8B55
+#define GL_BOOL 0x8B56
+#define GL_BOOL_VEC2 0x8B57
+#define GL_BOOL_VEC3 0x8B58
+#define GL_BOOL_VEC4 0x8B59
+#define GL_FLOAT_MAT2 0x8B5A
+#define GL_FLOAT_MAT3 0x8B5B
+#define GL_FLOAT_MAT4 0x8B5C
+#define GL_SAMPLER_1D 0x8B5D
+#define GL_SAMPLER_2D 0x8B5E
+#define GL_SAMPLER_3D 0x8B5F
+#define GL_SAMPLER_CUBE 0x8B60
+#define GL_SAMPLER_1D_SHADOW 0x8B61
+#define GL_SAMPLER_2D_SHADOW 0x8B62
+#define GL_DELETE_STATUS 0x8B80
+#define GL_COMPILE_STATUS 0x8B81
+#define GL_LINK_STATUS 0x8B82
+#define GL_VALIDATE_STATUS 0x8B83
+#define GL_INFO_LOG_LENGTH 0x8B84
+#define GL_ATTACHED_SHADERS 0x8B85
+#define GL_ACTIVE_UNIFORMS 0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
+#define GL_SHADER_SOURCE_LENGTH 0x8B88
+#define GL_ACTIVE_ATTRIBUTES 0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
+#define GL_CURRENT_PROGRAM 0x8B8D
+#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
+#define GL_LOWER_LEFT 0x8CA1
+#define GL_UPPER_LEFT 0x8CA2
+#define GL_STENCIL_BACK_REF 0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
+#endif
+
+#ifndef GL_VERSION_2_1
+#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
+#define GL_PIXEL_PACK_BUFFER 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
+#define GL_FLOAT_MAT2x3 0x8B65
+#define GL_FLOAT_MAT2x4 0x8B66
+#define GL_FLOAT_MAT3x2 0x8B67
+#define GL_FLOAT_MAT3x4 0x8B68
+#define GL_FLOAT_MAT4x2 0x8B69
+#define GL_FLOAT_MAT4x3 0x8B6A
+#define GL_SRGB 0x8C40
+#define GL_SRGB8 0x8C41
+#define GL_SRGB_ALPHA 0x8C42
+#define GL_SRGB8_ALPHA8 0x8C43
+#define GL_SLUMINANCE_ALPHA 0x8C44
+#define GL_SLUMINANCE8_ALPHA8 0x8C45
+#define GL_SLUMINANCE 0x8C46
+#define GL_SLUMINANCE8 0x8C47
+#define GL_COMPRESSED_SRGB 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
+#define GL_COMPRESSED_SLUMINANCE 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
+#endif
+
+#ifndef GL_ARB_multitexture
+#define GL_TEXTURE0_ARB 0x84C0
+#define GL_TEXTURE1_ARB 0x84C1
+#define GL_TEXTURE2_ARB 0x84C2
+#define GL_TEXTURE3_ARB 0x84C3
+#define GL_TEXTURE4_ARB 0x84C4
+#define GL_TEXTURE5_ARB 0x84C5
+#define GL_TEXTURE6_ARB 0x84C6
+#define GL_TEXTURE7_ARB 0x84C7
+#define GL_TEXTURE8_ARB 0x84C8
+#define GL_TEXTURE9_ARB 0x84C9
+#define GL_TEXTURE10_ARB 0x84CA
+#define GL_TEXTURE11_ARB 0x84CB
+#define GL_TEXTURE12_ARB 0x84CC
+#define GL_TEXTURE13_ARB 0x84CD
+#define GL_TEXTURE14_ARB 0x84CE
+#define GL_TEXTURE15_ARB 0x84CF
+#define GL_TEXTURE16_ARB 0x84D0
+#define GL_TEXTURE17_ARB 0x84D1
+#define GL_TEXTURE18_ARB 0x84D2
+#define GL_TEXTURE19_ARB 0x84D3
+#define GL_TEXTURE20_ARB 0x84D4
+#define GL_TEXTURE21_ARB 0x84D5
+#define GL_TEXTURE22_ARB 0x84D6
+#define GL_TEXTURE23_ARB 0x84D7
+#define GL_TEXTURE24_ARB 0x84D8
+#define GL_TEXTURE25_ARB 0x84D9
+#define GL_TEXTURE26_ARB 0x84DA
+#define GL_TEXTURE27_ARB 0x84DB
+#define GL_TEXTURE28_ARB 0x84DC
+#define GL_TEXTURE29_ARB 0x84DD
+#define GL_TEXTURE30_ARB 0x84DE
+#define GL_TEXTURE31_ARB 0x84DF
+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+#endif
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
+#endif
+
+#ifndef GL_ARB_multisample
+#define GL_MULTISAMPLE_ARB 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
+#define GL_SAMPLE_COVERAGE_ARB 0x80A0
+#define GL_SAMPLE_BUFFERS_ARB 0x80A8
+#define GL_SAMPLES_ARB 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
+#define GL_MULTISAMPLE_BIT_ARB 0x20000000
+#endif
+
+#ifndef GL_ARB_texture_env_add
+#endif
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_NORMAL_MAP_ARB 0x8511
+#define GL_REFLECTION_MAP_ARB 0x8512
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
+#endif
+
+#ifndef GL_ARB_texture_compression
+#define GL_COMPRESSED_ALPHA_ARB 0x84E9
+#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
+#define GL_COMPRESSED_RGB_ARB 0x84ED
+#define GL_COMPRESSED_RGBA_ARB 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+#endif
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_CLAMP_TO_BORDER_ARB 0x812D
+#endif
+
+#ifndef GL_ARB_point_parameters
+#define GL_POINT_SIZE_MIN_ARB 0x8126
+#define GL_POINT_SIZE_MAX_ARB 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+#endif
+
+#ifndef GL_ARB_vertex_blend
+#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
+#define GL_VERTEX_BLEND_ARB 0x86A7
+#define GL_CURRENT_WEIGHT_ARB 0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
+#define GL_WEIGHT_ARRAY_ARB 0x86AD
+#define GL_MODELVIEW0_ARB 0x1700
+#define GL_MODELVIEW1_ARB 0x850A
+#define GL_MODELVIEW2_ARB 0x8722
+#define GL_MODELVIEW3_ARB 0x8723
+#define GL_MODELVIEW4_ARB 0x8724
+#define GL_MODELVIEW5_ARB 0x8725
+#define GL_MODELVIEW6_ARB 0x8726
+#define GL_MODELVIEW7_ARB 0x8727
+#define GL_MODELVIEW8_ARB 0x8728
+#define GL_MODELVIEW9_ARB 0x8729
+#define GL_MODELVIEW10_ARB 0x872A
+#define GL_MODELVIEW11_ARB 0x872B
+#define GL_MODELVIEW12_ARB 0x872C
+#define GL_MODELVIEW13_ARB 0x872D
+#define GL_MODELVIEW14_ARB 0x872E
+#define GL_MODELVIEW15_ARB 0x872F
+#define GL_MODELVIEW16_ARB 0x8730
+#define GL_MODELVIEW17_ARB 0x8731
+#define GL_MODELVIEW18_ARB 0x8732
+#define GL_MODELVIEW19_ARB 0x8733
+#define GL_MODELVIEW20_ARB 0x8734
+#define GL_MODELVIEW21_ARB 0x8735
+#define GL_MODELVIEW22_ARB 0x8736
+#define GL_MODELVIEW23_ARB 0x8737
+#define GL_MODELVIEW24_ARB 0x8738
+#define GL_MODELVIEW25_ARB 0x8739
+#define GL_MODELVIEW26_ARB 0x873A
+#define GL_MODELVIEW27_ARB 0x873B
+#define GL_MODELVIEW28_ARB 0x873C
+#define GL_MODELVIEW29_ARB 0x873D
+#define GL_MODELVIEW30_ARB 0x873E
+#define GL_MODELVIEW31_ARB 0x873F
+#endif
+
+#ifndef GL_ARB_matrix_palette
+#define GL_MATRIX_PALETTE_ARB 0x8840
+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
+#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
+#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
+#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+#endif
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_COMBINE_ARB 0x8570
+#define GL_COMBINE_RGB_ARB 0x8571
+#define GL_COMBINE_ALPHA_ARB 0x8572
+#define GL_SOURCE0_RGB_ARB 0x8580
+#define GL_SOURCE1_RGB_ARB 0x8581
+#define GL_SOURCE2_RGB_ARB 0x8582
+#define GL_SOURCE0_ALPHA_ARB 0x8588
+#define GL_SOURCE1_ALPHA_ARB 0x8589
+#define GL_SOURCE2_ALPHA_ARB 0x858A
+#define GL_OPERAND0_RGB_ARB 0x8590
+#define GL_OPERAND1_RGB_ARB 0x8591
+#define GL_OPERAND2_RGB_ARB 0x8592
+#define GL_OPERAND0_ALPHA_ARB 0x8598
+#define GL_OPERAND1_ALPHA_ARB 0x8599
+#define GL_OPERAND2_ALPHA_ARB 0x859A
+#define GL_RGB_SCALE_ARB 0x8573
+#define GL_ADD_SIGNED_ARB 0x8574
+#define GL_INTERPOLATE_ARB 0x8575
+#define GL_SUBTRACT_ARB 0x84E7
+#define GL_CONSTANT_ARB 0x8576
+#define GL_PRIMARY_COLOR_ARB 0x8577
+#define GL_PREVIOUS_ARB 0x8578
+#endif
+
+#ifndef GL_ARB_texture_env_crossbar
+#endif
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_DOT3_RGB_ARB 0x86AE
+#define GL_DOT3_RGBA_ARB 0x86AF
+#endif
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_MIRRORED_REPEAT_ARB 0x8370
+#endif
+
+#ifndef GL_ARB_depth_texture
+#define GL_DEPTH_COMPONENT16_ARB 0x81A5
+#define GL_DEPTH_COMPONENT24_ARB 0x81A6
+#define GL_DEPTH_COMPONENT32_ARB 0x81A7
+#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
+#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
+#endif
+
+#ifndef GL_ARB_shadow
+#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
+#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
+#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
+#endif
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
+#endif
+
+#ifndef GL_ARB_window_pos
+#endif
+
+#ifndef GL_ARB_vertex_program
+#define GL_COLOR_SUM_ARB 0x8458
+#define GL_VERTEX_PROGRAM_ARB 0x8620
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
+#define GL_PROGRAM_LENGTH_ARB 0x8627
+#define GL_PROGRAM_STRING_ARB 0x8628
+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+#define GL_CURRENT_MATRIX_ARB 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
+#define GL_PROGRAM_BINDING_ARB 0x8677
+#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
+#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
+#define GL_PROGRAM_FORMAT_ARB 0x8876
+#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
+#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
+#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
+#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
+#define GL_MATRIX0_ARB 0x88C0
+#define GL_MATRIX1_ARB 0x88C1
+#define GL_MATRIX2_ARB 0x88C2
+#define GL_MATRIX3_ARB 0x88C3
+#define GL_MATRIX4_ARB 0x88C4
+#define GL_MATRIX5_ARB 0x88C5
+#define GL_MATRIX6_ARB 0x88C6
+#define GL_MATRIX7_ARB 0x88C7
+#define GL_MATRIX8_ARB 0x88C8
+#define GL_MATRIX9_ARB 0x88C9
+#define GL_MATRIX10_ARB 0x88CA
+#define GL_MATRIX11_ARB 0x88CB
+#define GL_MATRIX12_ARB 0x88CC
+#define GL_MATRIX13_ARB 0x88CD
+#define GL_MATRIX14_ARB 0x88CE
+#define GL_MATRIX15_ARB 0x88CF
+#define GL_MATRIX16_ARB 0x88D0
+#define GL_MATRIX17_ARB 0x88D1
+#define GL_MATRIX18_ARB 0x88D2
+#define GL_MATRIX19_ARB 0x88D3
+#define GL_MATRIX20_ARB 0x88D4
+#define GL_MATRIX21_ARB 0x88D5
+#define GL_MATRIX22_ARB 0x88D6
+#define GL_MATRIX23_ARB 0x88D7
+#define GL_MATRIX24_ARB 0x88D8
+#define GL_MATRIX25_ARB 0x88D9
+#define GL_MATRIX26_ARB 0x88DA
+#define GL_MATRIX27_ARB 0x88DB
+#define GL_MATRIX28_ARB 0x88DC
+#define GL_MATRIX29_ARB 0x88DD
+#define GL_MATRIX30_ARB 0x88DE
+#define GL_MATRIX31_ARB 0x88DF
+#endif
+
+#ifndef GL_ARB_fragment_program
+#define GL_FRAGMENT_PROGRAM_ARB 0x8804
+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_BUFFER_SIZE_ARB 0x8764
+#define GL_BUFFER_USAGE_ARB 0x8765
+#define GL_ARRAY_BUFFER_ARB 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+#define GL_READ_ONLY_ARB 0x88B8
+#define GL_WRITE_ONLY_ARB 0x88B9
+#define GL_READ_WRITE_ARB 0x88BA
+#define GL_BUFFER_ACCESS_ARB 0x88BB
+#define GL_BUFFER_MAPPED_ARB 0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
+#define GL_STREAM_DRAW_ARB 0x88E0
+#define GL_STREAM_READ_ARB 0x88E1
+#define GL_STREAM_COPY_ARB 0x88E2
+#define GL_STATIC_DRAW_ARB 0x88E4
+#define GL_STATIC_READ_ARB 0x88E5
+#define GL_STATIC_COPY_ARB 0x88E6
+#define GL_DYNAMIC_DRAW_ARB 0x88E8
+#define GL_DYNAMIC_READ_ARB 0x88E9
+#define GL_DYNAMIC_COPY_ARB 0x88EA
+#endif
+
+#ifndef GL_ARB_occlusion_query
+#define GL_QUERY_COUNTER_BITS_ARB 0x8864
+#define GL_CURRENT_QUERY_ARB 0x8865
+#define GL_QUERY_RESULT_ARB 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
+#define GL_SAMPLES_PASSED_ARB 0x8914
+#endif
+
+#ifndef GL_ARB_shader_objects
+#define GL_PROGRAM_OBJECT_ARB 0x8B40
+#define GL_SHADER_OBJECT_ARB 0x8B48
+#define GL_OBJECT_TYPE_ARB 0x8B4E
+#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
+#define GL_FLOAT_VEC2_ARB 0x8B50
+#define GL_FLOAT_VEC3_ARB 0x8B51
+#define GL_FLOAT_VEC4_ARB 0x8B52
+#define GL_INT_VEC2_ARB 0x8B53
+#define GL_INT_VEC3_ARB 0x8B54
+#define GL_INT_VEC4_ARB 0x8B55
+#define GL_BOOL_ARB 0x8B56
+#define GL_BOOL_VEC2_ARB 0x8B57
+#define GL_BOOL_VEC3_ARB 0x8B58
+#define GL_BOOL_VEC4_ARB 0x8B59
+#define GL_FLOAT_MAT2_ARB 0x8B5A
+#define GL_FLOAT_MAT3_ARB 0x8B5B
+#define GL_FLOAT_MAT4_ARB 0x8B5C
+#define GL_SAMPLER_1D_ARB 0x8B5D
+#define GL_SAMPLER_2D_ARB 0x8B5E
+#define GL_SAMPLER_3D_ARB 0x8B5F
+#define GL_SAMPLER_CUBE_ARB 0x8B60
+#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
+#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
+#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
+#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
+#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
+#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
+#endif
+
+#ifndef GL_ARB_vertex_shader
+#define GL_VERTEX_SHADER_ARB 0x8B31
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
+#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
+#endif
+
+#ifndef GL_ARB_fragment_shader
+#define GL_FRAGMENT_SHADER_ARB 0x8B30
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
+#endif
+
+#ifndef GL_ARB_shading_language_100
+#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
+#endif
+
+#ifndef GL_ARB_texture_non_power_of_two
+#endif
+
+#ifndef GL_ARB_point_sprite
+#define GL_POINT_SPRITE_ARB 0x8861
+#define GL_COORD_REPLACE_ARB 0x8862
+#endif
+
+#ifndef GL_ARB_fragment_program_shadow
+#endif
+
+#ifndef GL_ARB_draw_buffers
+#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
+#define GL_DRAW_BUFFER0_ARB 0x8825
+#define GL_DRAW_BUFFER1_ARB 0x8826
+#define GL_DRAW_BUFFER2_ARB 0x8827
+#define GL_DRAW_BUFFER3_ARB 0x8828
+#define GL_DRAW_BUFFER4_ARB 0x8829
+#define GL_DRAW_BUFFER5_ARB 0x882A
+#define GL_DRAW_BUFFER6_ARB 0x882B
+#define GL_DRAW_BUFFER7_ARB 0x882C
+#define GL_DRAW_BUFFER8_ARB 0x882D
+#define GL_DRAW_BUFFER9_ARB 0x882E
+#define GL_DRAW_BUFFER10_ARB 0x882F
+#define GL_DRAW_BUFFER11_ARB 0x8830
+#define GL_DRAW_BUFFER12_ARB 0x8831
+#define GL_DRAW_BUFFER13_ARB 0x8832
+#define GL_DRAW_BUFFER14_ARB 0x8833
+#define GL_DRAW_BUFFER15_ARB 0x8834
+#endif
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+#endif
+
+#ifndef GL_ARB_color_buffer_float
+#define GL_RGBA_FLOAT_MODE_ARB 0x8820
+#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
+#define GL_CLAMP_READ_COLOR_ARB 0x891C
+#define GL_FIXED_ONLY_ARB 0x891D
+#endif
+
+#ifndef GL_ARB_half_float_pixel
+#define GL_HALF_FLOAT_ARB 0x140B
+#endif
+
+#ifndef GL_ARB_texture_float
+#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
+#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
+#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
+#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
+#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
+#define GL_RGBA32F_ARB 0x8814
+#define GL_RGB32F_ARB 0x8815
+#define GL_ALPHA32F_ARB 0x8816
+#define GL_INTENSITY32F_ARB 0x8817
+#define GL_LUMINANCE32F_ARB 0x8818
+#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
+#define GL_RGBA16F_ARB 0x881A
+#define GL_RGB16F_ARB 0x881B
+#define GL_ALPHA16F_ARB 0x881C
+#define GL_INTENSITY16F_ARB 0x881D
+#define GL_LUMINANCE16F_ARB 0x881E
+#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
+#endif
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+#endif
+
+#ifndef GL_EXT_abgr
+#define GL_ABGR_EXT 0x8000
+#endif
+
+#ifndef GL_EXT_blend_color
+#define GL_CONSTANT_COLOR_EXT 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
+#define GL_CONSTANT_ALPHA_EXT 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
+#define GL_BLEND_COLOR_EXT 0x8005
+#endif
+
+#ifndef GL_EXT_polygon_offset
+#define GL_POLYGON_OFFSET_EXT 0x8037
+#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
+#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
+#endif
+
+#ifndef GL_EXT_texture
+#define GL_ALPHA4_EXT 0x803B
+#define GL_ALPHA8_EXT 0x803C
+#define GL_ALPHA12_EXT 0x803D
+#define GL_ALPHA16_EXT 0x803E
+#define GL_LUMINANCE4_EXT 0x803F
+#define GL_LUMINANCE8_EXT 0x8040
+#define GL_LUMINANCE12_EXT 0x8041
+#define GL_LUMINANCE16_EXT 0x8042
+#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
+#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
+#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
+#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
+#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
+#define GL_INTENSITY_EXT 0x8049
+#define GL_INTENSITY4_EXT 0x804A
+#define GL_INTENSITY8_EXT 0x804B
+#define GL_INTENSITY12_EXT 0x804C
+#define GL_INTENSITY16_EXT 0x804D
+#define GL_RGB2_EXT 0x804E
+#define GL_RGB4_EXT 0x804F
+#define GL_RGB5_EXT 0x8050
+#define GL_RGB8_EXT 0x8051
+#define GL_RGB10_EXT 0x8052
+#define GL_RGB12_EXT 0x8053
+#define GL_RGB16_EXT 0x8054
+#define GL_RGBA2_EXT 0x8055
+#define GL_RGBA4_EXT 0x8056
+#define GL_RGB5_A1_EXT 0x8057
+#define GL_RGBA8_EXT 0x8058
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_RGBA12_EXT 0x805A
+#define GL_RGBA16_EXT 0x805B
+#define GL_TEXTURE_RED_SIZE_EXT 0x805C
+#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
+#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
+#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
+#define GL_REPLACE_EXT 0x8062
+#define GL_PROXY_TEXTURE_1D_EXT 0x8063
+#define GL_PROXY_TEXTURE_2D_EXT 0x8064
+#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
+#endif
+
+#ifndef GL_EXT_texture3D
+#define GL_PACK_SKIP_IMAGES_EXT 0x806B
+#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
+#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
+#define GL_TEXTURE_3D_EXT 0x806F
+#define GL_PROXY_TEXTURE_3D_EXT 0x8070
+#define GL_TEXTURE_DEPTH_EXT 0x8071
+#define GL_TEXTURE_WRAP_R_EXT 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
+#endif
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_FILTER4_SGIS 0x8146
+#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
+#endif
+
+#ifndef GL_EXT_subtexture
+#endif
+
+#ifndef GL_EXT_copy_texture
+#endif
+
+#ifndef GL_EXT_histogram
+#define GL_HISTOGRAM_EXT 0x8024
+#define GL_PROXY_HISTOGRAM_EXT 0x8025
+#define GL_HISTOGRAM_WIDTH_EXT 0x8026
+#define GL_HISTOGRAM_FORMAT_EXT 0x8027
+#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
+#define GL_HISTOGRAM_SINK_EXT 0x802D
+#define GL_MINMAX_EXT 0x802E
+#define GL_MINMAX_FORMAT_EXT 0x802F
+#define GL_MINMAX_SINK_EXT 0x8030
+#define GL_TABLE_TOO_LARGE_EXT 0x8031
+#endif
+
+#ifndef GL_EXT_convolution
+#define GL_CONVOLUTION_1D_EXT 0x8010
+#define GL_CONVOLUTION_2D_EXT 0x8011
+#define GL_SEPARABLE_2D_EXT 0x8012
+#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
+#define GL_REDUCE_EXT 0x8016
+#define GL_CONVOLUTION_FORMAT_EXT 0x8017
+#define GL_CONVOLUTION_WIDTH_EXT 0x8018
+#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+#endif
+
+#ifndef GL_SGI_color_matrix
+#define GL_COLOR_MATRIX_SGI 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
+#endif
+
+#ifndef GL_SGI_color_table
+#define GL_COLOR_TABLE_SGI 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
+#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
+#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
+#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+#endif
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_PIXEL_TEXTURE_SGIS 0x8353
+#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
+#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
+#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
+#endif
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_PIXEL_TEX_GEN_SGIX 0x8139
+#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
+#endif
+
+#ifndef GL_SGIS_texture4D
+#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
+#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
+#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
+#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
+#define GL_TEXTURE_4D_SGIS 0x8134
+#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
+#define GL_TEXTURE_4DSIZE_SGIS 0x8136
+#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
+#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
+#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
+#endif
+
+#ifndef GL_SGI_texture_color_table
+#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
+#endif
+
+#ifndef GL_EXT_cmyka
+#define GL_CMYK_EXT 0x800C
+#define GL_CMYKA_EXT 0x800D
+#define GL_PACK_CMYK_HINT_EXT 0x800E
+#define GL_UNPACK_CMYK_HINT_EXT 0x800F
+#endif
+
+#ifndef GL_EXT_texture_object
+#define GL_TEXTURE_PRIORITY_EXT 0x8066
+#define GL_TEXTURE_RESIDENT_EXT 0x8067
+#define GL_TEXTURE_1D_BINDING_EXT 0x8068
+#define GL_TEXTURE_2D_BINDING_EXT 0x8069
+#define GL_TEXTURE_3D_BINDING_EXT 0x806A
+#endif
+
+#ifndef GL_SGIS_detail_texture
+#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
+#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
+#define GL_LINEAR_DETAIL_SGIS 0x8097
+#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
+#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
+#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
+#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
+#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
+#endif
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_LINEAR_SHARPEN_SGIS 0x80AD
+#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
+#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
+#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
+#endif
+
+#ifndef GL_EXT_packed_pixels
+#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
+#endif
+
+#ifndef GL_SGIS_texture_lod
+#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
+#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
+#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
+#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
+#endif
+
+#ifndef GL_SGIS_multisample
+#define GL_MULTISAMPLE_SGIS 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
+#define GL_SAMPLE_MASK_SGIS 0x80A0
+#define GL_1PASS_SGIS 0x80A1
+#define GL_2PASS_0_SGIS 0x80A2
+#define GL_2PASS_1_SGIS 0x80A3
+#define GL_4PASS_0_SGIS 0x80A4
+#define GL_4PASS_1_SGIS 0x80A5
+#define GL_4PASS_2_SGIS 0x80A6
+#define GL_4PASS_3_SGIS 0x80A7
+#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
+#define GL_SAMPLES_SGIS 0x80A9
+#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
+#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
+#define GL_SAMPLE_PATTERN_SGIS 0x80AC
+#endif
+
+#ifndef GL_EXT_rescale_normal
+#define GL_RESCALE_NORMAL_EXT 0x803A
+#endif
+
+#ifndef GL_EXT_vertex_array
+#define GL_VERTEX_ARRAY_EXT 0x8074
+#define GL_NORMAL_ARRAY_EXT 0x8075
+#define GL_COLOR_ARRAY_EXT 0x8076
+#define GL_INDEX_ARRAY_EXT 0x8077
+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+#endif
+
+#ifndef GL_EXT_misc_attribute
+#endif
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_GENERATE_MIPMAP_SGIS 0x8191
+#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
+#endif
+
+#ifndef GL_SGIX_clipmap
+#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
+#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
+#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
+#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
+#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
+#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
+#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
+#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
+#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
+#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
+#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
+#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
+#endif
+
+#ifndef GL_SGIX_shadow
+#define GL_TEXTURE_COMPARE_SGIX 0x819A
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
+#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
+#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
+#endif
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_CLAMP_TO_EDGE_SGIS 0x812F
+#endif
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_CLAMP_TO_BORDER_SGIS 0x812D
+#endif
+
+#ifndef GL_EXT_blend_minmax
+#define GL_FUNC_ADD_EXT 0x8006
+#define GL_MIN_EXT 0x8007
+#define GL_MAX_EXT 0x8008
+#define GL_BLEND_EQUATION_EXT 0x8009
+#endif
+
+#ifndef GL_EXT_blend_subtract
+#define GL_FUNC_SUBTRACT_EXT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
+#endif
+
+#ifndef GL_EXT_blend_logic_op
+#endif
+
+#ifndef GL_SGIX_interlace
+#define GL_INTERLACE_SGIX 0x8094
+#endif
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
+#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
+#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
+#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
+#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
+#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
+#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
+#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
+#endif
+
+#ifndef GL_SGIS_texture_select
+#define GL_DUAL_ALPHA4_SGIS 0x8110
+#define GL_DUAL_ALPHA8_SGIS 0x8111
+#define GL_DUAL_ALPHA12_SGIS 0x8112
+#define GL_DUAL_ALPHA16_SGIS 0x8113
+#define GL_DUAL_LUMINANCE4_SGIS 0x8114
+#define GL_DUAL_LUMINANCE8_SGIS 0x8115
+#define GL_DUAL_LUMINANCE12_SGIS 0x8116
+#define GL_DUAL_LUMINANCE16_SGIS 0x8117
+#define GL_DUAL_INTENSITY4_SGIS 0x8118
+#define GL_DUAL_INTENSITY8_SGIS 0x8119
+#define GL_DUAL_INTENSITY12_SGIS 0x811A
+#define GL_DUAL_INTENSITY16_SGIS 0x811B
+#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
+#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
+#define GL_QUAD_ALPHA4_SGIS 0x811E
+#define GL_QUAD_ALPHA8_SGIS 0x811F
+#define GL_QUAD_LUMINANCE4_SGIS 0x8120
+#define GL_QUAD_LUMINANCE8_SGIS 0x8121
+#define GL_QUAD_INTENSITY4_SGIS 0x8122
+#define GL_QUAD_INTENSITY8_SGIS 0x8123
+#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
+#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
+#endif
+
+#ifndef GL_SGIX_sprite
+#define GL_SPRITE_SGIX 0x8148
+#define GL_SPRITE_MODE_SGIX 0x8149
+#define GL_SPRITE_AXIS_SGIX 0x814A
+#define GL_SPRITE_TRANSLATION_SGIX 0x814B
+#define GL_SPRITE_AXIAL_SGIX 0x814C
+#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
+#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
+#endif
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
+#endif
+
+#ifndef GL_EXT_point_parameters
+#define GL_POINT_SIZE_MIN_EXT 0x8126
+#define GL_POINT_SIZE_MAX_EXT 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
+#define GL_DISTANCE_ATTENUATION_EXT 0x8129
+#endif
+
+#ifndef GL_SGIS_point_parameters
+#define GL_POINT_SIZE_MIN_SGIS 0x8126
+#define GL_POINT_SIZE_MAX_SGIS 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
+#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
+#endif
+
+#ifndef GL_SGIX_instruments
+#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
+#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
+#endif
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
+#endif
+
+#ifndef GL_SGIX_framezoom
+#define GL_FRAMEZOOM_SGIX 0x818B
+#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
+#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
+#endif
+
+#ifndef GL_SGIX_tag_sample_buffer
+#endif
+
+#ifndef GL_FfdMaskSGIX
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
+#endif
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
+#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
+#define GL_DEFORMATIONS_MASK_SGIX 0x8196
+#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
+#endif
+
+#ifndef GL_SGIX_reference_plane
+#define GL_REFERENCE_PLANE_SGIX 0x817D
+#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
+#endif
+
+#ifndef GL_SGIX_flush_raster
+#endif
+
+#ifndef GL_SGIX_depth_texture
+#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
+#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
+#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
+#endif
+
+#ifndef GL_SGIS_fog_function
+#define GL_FOG_FUNC_SGIS 0x812A
+#define GL_FOG_FUNC_POINTS_SGIS 0x812B
+#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
+#endif
+
+#ifndef GL_SGIX_fog_offset
+#define GL_FOG_OFFSET_SGIX 0x8198
+#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
+#endif
+
+#ifndef GL_HP_image_transform
+#define GL_IMAGE_SCALE_X_HP 0x8155
+#define GL_IMAGE_SCALE_Y_HP 0x8156
+#define GL_IMAGE_TRANSLATE_X_HP 0x8157
+#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
+#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
+#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
+#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
+#define GL_IMAGE_MAG_FILTER_HP 0x815C
+#define GL_IMAGE_MIN_FILTER_HP 0x815D
+#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
+#define GL_CUBIC_HP 0x815F
+#define GL_AVERAGE_HP 0x8160
+#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
+#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
+#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
+#endif
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_IGNORE_BORDER_HP 0x8150
+#define GL_CONSTANT_BORDER_HP 0x8151
+#define GL_REPLICATE_BORDER_HP 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
+#endif
+
+#ifndef GL_INGR_palette_buffer
+#endif
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
+#endif
+
+#ifndef GL_EXT_color_subtable
+#endif
+
+#ifndef GL_PGI_vertex_hints
+#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
+#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
+#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
+#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
+#define GL_COLOR3_BIT_PGI 0x00010000
+#define GL_COLOR4_BIT_PGI 0x00020000
+#define GL_EDGEFLAG_BIT_PGI 0x00040000
+#define GL_INDEX_BIT_PGI 0x00080000
+#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
+#define GL_MAT_EMISSION_BIT_PGI 0x00800000
+#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
+#define GL_MAT_SHININESS_BIT_PGI 0x02000000
+#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
+#define GL_NORMAL_BIT_PGI 0x08000000
+#define GL_TEXCOORD1_BIT_PGI 0x10000000
+#define GL_TEXCOORD2_BIT_PGI 0x20000000
+#define GL_TEXCOORD3_BIT_PGI 0x40000000
+#define GL_TEXCOORD4_BIT_PGI 0x80000000
+#define GL_VERTEX23_BIT_PGI 0x00000004
+#define GL_VERTEX4_BIT_PGI 0x00000008
+#endif
+
+#ifndef GL_PGI_misc_hints
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
+#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
+#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
+#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
+#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
+#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
+#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
+#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
+#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
+#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
+#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
+#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
+#define GL_CLIP_NEAR_HINT_PGI 0x1A220
+#define GL_CLIP_FAR_HINT_PGI 0x1A221
+#define GL_WIDE_LINE_HINT_PGI 0x1A222
+#define GL_BACK_NORMALS_HINT_PGI 0x1A223
+#endif
+
+#ifndef GL_EXT_paletted_texture
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
+#endif
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
+#endif
+
+#ifndef GL_SGIX_list_priority
+#define GL_LIST_PRIORITY_SGIX 0x8182
+#endif
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_IR_INSTRUMENT1_SGIX 0x817F
+#endif
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
+#endif
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
+#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
+#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
+#endif
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SHADOW_AMBIENT_SGIX 0x80BF
+#endif
+
+#ifndef GL_EXT_index_texture
+#endif
+
+#ifndef GL_EXT_index_material
+#define GL_INDEX_MATERIAL_EXT 0x81B8
+#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
+#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
+#endif
+
+#ifndef GL_EXT_index_func
+#define GL_INDEX_TEST_EXT 0x81B5
+#define GL_INDEX_TEST_FUNC_EXT 0x81B6
+#define GL_INDEX_TEST_REF_EXT 0x81B7
+#endif
+
+#ifndef GL_EXT_index_array_formats
+#define GL_IUI_V2F_EXT 0x81AD
+#define GL_IUI_V3F_EXT 0x81AE
+#define GL_IUI_N3F_V2F_EXT 0x81AF
+#define GL_IUI_N3F_V3F_EXT 0x81B0
+#define GL_T2F_IUI_V2F_EXT 0x81B1
+#define GL_T2F_IUI_V3F_EXT 0x81B2
+#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
+#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
+#endif
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
+#endif
+
+#ifndef GL_EXT_cull_vertex
+#define GL_CULL_VERTEX_EXT 0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+#endif
+
+#ifndef GL_SGIX_ycrcb
+#define GL_YCRCB_422_SGIX 0x81BB
+#define GL_YCRCB_444_SGIX 0x81BC
+#endif
+
+#ifndef GL_SGIX_fragment_lighting
+#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
+#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
+#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
+#define GL_LIGHT_ENV_MODE_SGIX 0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
+#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
+#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
+#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
+#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
+#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
+#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
+#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
+#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
+#endif
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
+#endif
+
+#ifndef GL_HP_texture_lighting
+#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
+#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
+#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
+#endif
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
+#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
+#endif
+
+#ifndef GL_WIN_phong_shading
+#define GL_PHONG_WIN 0x80EA
+#define GL_PHONG_HINT_WIN 0x80EB
+#endif
+
+#ifndef GL_WIN_specular_fog
+#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
+#endif
+
+#ifndef GL_EXT_light_texture
+#define GL_FRAGMENT_MATERIAL_EXT 0x8349
+#define GL_FRAGMENT_NORMAL_EXT 0x834A
+#define GL_FRAGMENT_COLOR_EXT 0x834C
+#define GL_ATTENUATION_EXT 0x834D
+#define GL_SHADOW_ATTENUATION_EXT 0x834E
+#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
+#define GL_TEXTURE_LIGHT_EXT 0x8350
+#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+/* reuse GL_FRAGMENT_DEPTH_EXT */
+#endif
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_ALPHA_MIN_SGIX 0x8320
+#define GL_ALPHA_MAX_SGIX 0x8321
+#endif
+
+#ifndef GL_SGIX_impact_pixel_texture
+#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184
+#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185
+#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186
+#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187
+#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188
+#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189
+#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A
+#endif
+
+#ifndef GL_EXT_bgra
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA_EXT 0x80E1
+#endif
+
+#ifndef GL_SGIX_async
+#define GL_ASYNC_MARKER_SGIX 0x8329
+#endif
+
+#ifndef GL_SGIX_async_pixel
+#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
+#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
+#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
+#endif
+
+#ifndef GL_SGIX_async_histogram
+#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
+#endif
+
+#ifndef GL_INTEL_texture_scissor
+#endif
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+#endif
+
+#ifndef GL_HP_occlusion_test
+#define GL_OCCLUSION_TEST_HP 0x8165
+#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
+#endif
+
+#ifndef GL_EXT_pixel_transform
+#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
+#define GL_PIXEL_MAG_FILTER_EXT 0x8331
+#define GL_PIXEL_MIN_FILTER_EXT 0x8332
+#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
+#define GL_CUBIC_EXT 0x8334
+#define GL_AVERAGE_EXT 0x8335
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
+#endif
+
+#ifndef GL_EXT_pixel_transform_color_table
+#endif
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
+#endif
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
+#define GL_SINGLE_COLOR_EXT 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
+#endif
+
+#ifndef GL_EXT_secondary_color
+#define GL_COLOR_SUM_EXT 0x8458
+#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
+#endif
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_PERTURB_EXT 0x85AE
+#define GL_TEXTURE_NORMAL_EXT 0x85AF
+#endif
+
+#ifndef GL_EXT_multi_draw_arrays
+#endif
+
+#ifndef GL_EXT_fog_coord
+#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
+#define GL_FOG_COORDINATE_EXT 0x8451
+#define GL_FRAGMENT_DEPTH_EXT 0x8452
+#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
+#endif
+
+#ifndef GL_REND_screen_coordinates
+#define GL_SCREEN_COORDINATES_REND 0x8490
+#define GL_INVERTED_SCREEN_W_REND 0x8491
+#endif
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_TANGENT_ARRAY_EXT 0x8439
+#define GL_BINORMAL_ARRAY_EXT 0x843A
+#define GL_CURRENT_TANGENT_EXT 0x843B
+#define GL_CURRENT_BINORMAL_EXT 0x843C
+#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
+#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
+#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
+#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
+#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
+#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
+#define GL_MAP1_TANGENT_EXT 0x8444
+#define GL_MAP2_TANGENT_EXT 0x8445
+#define GL_MAP1_BINORMAL_EXT 0x8446
+#define GL_MAP2_BINORMAL_EXT 0x8447
+#endif
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_COMBINE_EXT 0x8570
+#define GL_COMBINE_RGB_EXT 0x8571
+#define GL_COMBINE_ALPHA_EXT 0x8572
+#define GL_RGB_SCALE_EXT 0x8573
+#define GL_ADD_SIGNED_EXT 0x8574
+#define GL_INTERPOLATE_EXT 0x8575
+#define GL_CONSTANT_EXT 0x8576
+#define GL_PRIMARY_COLOR_EXT 0x8577
+#define GL_PREVIOUS_EXT 0x8578
+#define GL_SOURCE0_RGB_EXT 0x8580
+#define GL_SOURCE1_RGB_EXT 0x8581
+#define GL_SOURCE2_RGB_EXT 0x8582
+#define GL_SOURCE0_ALPHA_EXT 0x8588
+#define GL_SOURCE1_ALPHA_EXT 0x8589
+#define GL_SOURCE2_ALPHA_EXT 0x858A
+#define GL_OPERAND0_RGB_EXT 0x8590
+#define GL_OPERAND1_RGB_EXT 0x8591
+#define GL_OPERAND2_RGB_EXT 0x8592
+#define GL_OPERAND0_ALPHA_EXT 0x8598
+#define GL_OPERAND1_ALPHA_EXT 0x8599
+#define GL_OPERAND2_ALPHA_EXT 0x859A
+#endif
+
+#ifndef GL_APPLE_specular_vector
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
+#endif
+
+#ifndef GL_APPLE_transform_hint
+#define GL_TRANSFORM_HINT_APPLE 0x85B1
+#endif
+
+#ifndef GL_SGIX_fog_scale
+#define GL_FOG_SCALE_SGIX 0x81FC
+#define GL_FOG_SCALE_VALUE_SGIX 0x81FD
+#endif
+
+#ifndef GL_SUNX_constant_data
+#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
+#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
+#endif
+
+#ifndef GL_SUN_global_alpha
+#define GL_GLOBAL_ALPHA_SUN 0x81D9
+#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
+#endif
+
+#ifndef GL_SUN_triangle_list
+#define GL_RESTART_SUN 0x0001
+#define GL_REPLACE_MIDDLE_SUN 0x0002
+#define GL_REPLACE_OLDEST_SUN 0x0003
+#define GL_TRIANGLE_LIST_SUN 0x81D7
+#define GL_REPLACEMENT_CODE_SUN 0x81D8
+#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+#define GL_R1UI_V3F_SUN 0x85C4
+#define GL_R1UI_C4UB_V3F_SUN 0x85C5
+#define GL_R1UI_C3F_V3F_SUN 0x85C6
+#define GL_R1UI_N3F_V3F_SUN 0x85C7
+#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
+#define GL_R1UI_T2F_V3F_SUN 0x85C9
+#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
+#endif
+
+#ifndef GL_SUN_vertex
+#endif
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_BLEND_DST_RGB_EXT 0x80C8
+#define GL_BLEND_SRC_RGB_EXT 0x80C9
+#define GL_BLEND_DST_ALPHA_EXT 0x80CA
+#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
+#endif
+
+#ifndef GL_INGR_color_clamp
+#define GL_RED_MIN_CLAMP_INGR 0x8560
+#define GL_GREEN_MIN_CLAMP_INGR 0x8561
+#define GL_BLUE_MIN_CLAMP_INGR 0x8562
+#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
+#define GL_RED_MAX_CLAMP_INGR 0x8564
+#define GL_GREEN_MAX_CLAMP_INGR 0x8565
+#define GL_BLUE_MAX_CLAMP_INGR 0x8566
+#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
+#endif
+
+#ifndef GL_INGR_interlace_read
+#define GL_INTERLACE_READ_INGR 0x8568
+#endif
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_INCR_WRAP_EXT 0x8507
+#define GL_DECR_WRAP_EXT 0x8508
+#endif
+
+#ifndef GL_EXT_422_pixels
+#define GL_422_EXT 0x80CC
+#define GL_422_REV_EXT 0x80CD
+#define GL_422_AVERAGE_EXT 0x80CE
+#define GL_422_REV_AVERAGE_EXT 0x80CF
+#endif
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NORMAL_MAP_NV 0x8511
+#define GL_REFLECTION_MAP_NV 0x8512
+#endif
+
+#ifndef GL_EXT_texture_cube_map
+#define GL_NORMAL_MAP_EXT 0x8511
+#define GL_REFLECTION_MAP_EXT 0x8512
+#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
+#endif
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_WRAP_BORDER_SUN 0x81D4
+#endif
+
+#ifndef GL_EXT_texture_env_add
+#endif
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
+#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
+#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
+#endif
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+#endif
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH
+#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
+#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX
+#define GL_MODELVIEW1_MATRIX_EXT 0x8506
+#define GL_VERTEX_WEIGHTING_EXT 0x8509
+#define GL_MODELVIEW0_EXT GL_MODELVIEW
+#define GL_MODELVIEW1_EXT 0x850A
+#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
+#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+#endif
+
+#ifndef GL_NV_light_max_exponent
+#define GL_MAX_SHININESS_NV 0x8504
+#define GL_MAX_SPOT_EXPONENT_NV 0x8505
+#endif
+
+#ifndef GL_NV_vertex_array_range
+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+#endif
+
+#ifndef GL_NV_register_combiners
+#define GL_REGISTER_COMBINERS_NV 0x8522
+#define GL_VARIABLE_A_NV 0x8523
+#define GL_VARIABLE_B_NV 0x8524
+#define GL_VARIABLE_C_NV 0x8525
+#define GL_VARIABLE_D_NV 0x8526
+#define GL_VARIABLE_E_NV 0x8527
+#define GL_VARIABLE_F_NV 0x8528
+#define GL_VARIABLE_G_NV 0x8529
+#define GL_CONSTANT_COLOR0_NV 0x852A
+#define GL_CONSTANT_COLOR1_NV 0x852B
+#define GL_PRIMARY_COLOR_NV 0x852C
+#define GL_SECONDARY_COLOR_NV 0x852D
+#define GL_SPARE0_NV 0x852E
+#define GL_SPARE1_NV 0x852F
+#define GL_DISCARD_NV 0x8530
+#define GL_E_TIMES_F_NV 0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+#define GL_UNSIGNED_IDENTITY_NV 0x8536
+#define GL_UNSIGNED_INVERT_NV 0x8537
+#define GL_EXPAND_NORMAL_NV 0x8538
+#define GL_EXPAND_NEGATE_NV 0x8539
+#define GL_HALF_BIAS_NORMAL_NV 0x853A
+#define GL_HALF_BIAS_NEGATE_NV 0x853B
+#define GL_SIGNED_IDENTITY_NV 0x853C
+#define GL_SIGNED_NEGATE_NV 0x853D
+#define GL_SCALE_BY_TWO_NV 0x853E
+#define GL_SCALE_BY_FOUR_NV 0x853F
+#define GL_SCALE_BY_ONE_HALF_NV 0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
+#define GL_COMBINER_INPUT_NV 0x8542
+#define GL_COMBINER_MAPPING_NV 0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
+#define GL_COMBINER_MUX_SUM_NV 0x8547
+#define GL_COMBINER_SCALE_NV 0x8548
+#define GL_COMBINER_BIAS_NV 0x8549
+#define GL_COMBINER_AB_OUTPUT_NV 0x854A
+#define GL_COMBINER_CD_OUTPUT_NV 0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
+#define GL_COLOR_SUM_CLAMP_NV 0x854F
+#define GL_COMBINER0_NV 0x8550
+#define GL_COMBINER1_NV 0x8551
+#define GL_COMBINER2_NV 0x8552
+#define GL_COMBINER3_NV 0x8553
+#define GL_COMBINER4_NV 0x8554
+#define GL_COMBINER5_NV 0x8555
+#define GL_COMBINER6_NV 0x8556
+#define GL_COMBINER7_NV 0x8557
+/* reuse GL_TEXTURE0_ARB */
+/* reuse GL_TEXTURE1_ARB */
+/* reuse GL_ZERO */
+/* reuse GL_NONE */
+/* reuse GL_FOG */
+#endif
+
+#ifndef GL_NV_fog_distance
+#define GL_FOG_DISTANCE_MODE_NV 0x855A
+#define GL_EYE_RADIAL_NV 0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
+/* reuse GL_EYE_PLANE */
+#endif
+
+#ifndef GL_NV_texgen_emboss
+#define GL_EMBOSS_LIGHT_NV 0x855D
+#define GL_EMBOSS_CONSTANT_NV 0x855E
+#define GL_EMBOSS_MAP_NV 0x855F
+#endif
+
+#ifndef GL_NV_blend_square
+#endif
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_COMBINE4_NV 0x8503
+#define GL_SOURCE3_RGB_NV 0x8583
+#define GL_SOURCE3_ALPHA_NV 0x858B
+#define GL_OPERAND3_RGB_NV 0x8593
+#define GL_OPERAND3_ALPHA_NV 0x859B
+#endif
+
+#ifndef GL_MESA_resize_buffers
+#endif
+
+#ifndef GL_MESA_window_pos
+#endif
+
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
+#endif
+
+#ifndef GL_IBM_cull_vertex
+#define GL_CULL_VERTEX_IBM 103050
+#endif
+
+#ifndef GL_IBM_multimode_draw_arrays
+#endif
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_VERTEX_ARRAY_LIST_IBM 103070
+#define GL_NORMAL_ARRAY_LIST_IBM 103071
+#define GL_COLOR_ARRAY_LIST_IBM 103072
+#define GL_INDEX_ARRAY_LIST_IBM 103073
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+#endif
+
+#ifndef GL_SGIX_subsample
+#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
+#endif
+
+#ifndef GL_SGIX_ycrcb_subsample
+#endif
+
+#ifndef GL_SGIX_ycrcba
+#define GL_YCRCB_SGIX 0x8318
+#define GL_YCRCBA_SGIX 0x8319
+#endif
+
+#ifndef GL_SGI_depth_pass_instrument
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
+#endif
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
+#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
+#endif
+
+#ifndef GL_3DFX_multisample
+#define GL_MULTISAMPLE_3DFX 0x86B2
+#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
+#define GL_SAMPLES_3DFX 0x86B4
+#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
+#endif
+
+#ifndef GL_3DFX_tbuffer
+#endif
+
+#ifndef GL_EXT_multisample
+#define GL_MULTISAMPLE_EXT 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+#define GL_SAMPLE_MASK_EXT 0x80A0
+#define GL_1PASS_EXT 0x80A1
+#define GL_2PASS_0_EXT 0x80A2
+#define GL_2PASS_1_EXT 0x80A3
+#define GL_4PASS_0_EXT 0x80A4
+#define GL_4PASS_1_EXT 0x80A5
+#define GL_4PASS_2_EXT 0x80A6
+#define GL_4PASS_3_EXT 0x80A7
+#define GL_SAMPLE_BUFFERS_EXT 0x80A8
+#define GL_SAMPLES_EXT 0x80A9
+#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
+#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
+#define GL_SAMPLE_PATTERN_EXT 0x80AC
+#define GL_MULTISAMPLE_BIT_EXT 0x20000000
+#endif
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
+#endif
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_CONVOLUTION_HINT_SGIX 0x8316
+#endif
+
+#ifndef GL_SGIX_resample
+#define GL_PACK_RESAMPLE_SGIX 0x842C
+#define GL_UNPACK_RESAMPLE_SGIX 0x842D
+#define GL_RESAMPLE_REPLICATE_SGIX 0x842E
+#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F
+#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
+#endif
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
+#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
+#define GL_EYE_POINT_SGIS 0x81F4
+#define GL_OBJECT_POINT_SGIS 0x81F5
+#define GL_EYE_LINE_SGIS 0x81F6
+#define GL_OBJECT_LINE_SGIS 0x81F7
+#endif
+
+#ifndef GL_SGIS_texture_color_mask
+#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
+#endif
+
+#ifndef GL_EXT_texture_env_dot3
+#define GL_DOT3_RGB_EXT 0x8740
+#define GL_DOT3_RGBA_EXT 0x8741
+#endif
+
+#ifndef GL_ATI_texture_mirror_once
+#define GL_MIRROR_CLAMP_ATI 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
+#endif
+
+#ifndef GL_NV_fence
+#define GL_ALL_COMPLETED_NV 0x84F2
+#define GL_FENCE_STATUS_NV 0x84F3
+#define GL_FENCE_CONDITION_NV 0x84F4
+#endif
+
+#ifndef GL_IBM_texture_mirrored_repeat
+#define GL_MIRRORED_REPEAT_IBM 0x8370
+#endif
+
+#ifndef GL_NV_evaluators
+#define GL_EVAL_2D_NV 0x86C0
+#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
+#define GL_MAP_TESSELLATION_NV 0x86C2
+#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
+#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
+#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
+#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
+#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
+#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
+#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
+#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
+#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
+#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
+#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
+#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
+#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
+#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
+#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
+#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
+#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
+#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
+#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
+#endif
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_DEPTH_STENCIL_NV 0x84F9
+#define GL_UNSIGNED_INT_24_8_NV 0x84FA
+#endif
+
+#ifndef GL_NV_register_combiners2
+#define GL_PER_STAGE_CONSTANTS_NV 0x8535
+#endif
+
+#ifndef GL_NV_texture_compression_vtc
+#endif
+
+#ifndef GL_NV_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_NV 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
+#endif
+
+#ifndef GL_NV_texture_shader
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
+#define GL_SHADER_CONSISTENT_NV 0x86DD
+#define GL_TEXTURE_SHADER_NV 0x86DE
+#define GL_SHADER_OPERATION_NV 0x86DF
+#define GL_CULL_MODES_NV 0x86E0
+#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV
+#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
+#define GL_CONST_EYE_NV 0x86E5
+#define GL_PASS_THROUGH_NV 0x86E6
+#define GL_CULL_FRAGMENT_NV 0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
+#define GL_DOT_PRODUCT_NV 0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+#define GL_HILO_NV 0x86F4
+#define GL_DSDT_NV 0x86F5
+#define GL_DSDT_MAG_NV 0x86F6
+#define GL_DSDT_MAG_VIB_NV 0x86F7
+#define GL_HILO16_NV 0x86F8
+#define GL_SIGNED_HILO_NV 0x86F9
+#define GL_SIGNED_HILO16_NV 0x86FA
+#define GL_SIGNED_RGBA_NV 0x86FB
+#define GL_SIGNED_RGBA8_NV 0x86FC
+#define GL_SIGNED_RGB_NV 0x86FE
+#define GL_SIGNED_RGB8_NV 0x86FF
+#define GL_SIGNED_LUMINANCE_NV 0x8701
+#define GL_SIGNED_LUMINANCE8_NV 0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+#define GL_SIGNED_ALPHA_NV 0x8705
+#define GL_SIGNED_ALPHA8_NV 0x8706
+#define GL_SIGNED_INTENSITY_NV 0x8707
+#define GL_SIGNED_INTENSITY8_NV 0x8708
+#define GL_DSDT8_NV 0x8709
+#define GL_DSDT8_MAG8_NV 0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+#define GL_HI_SCALE_NV 0x870E
+#define GL_LO_SCALE_NV 0x870F
+#define GL_DS_SCALE_NV 0x8710
+#define GL_DT_SCALE_NV 0x8711
+#define GL_MAGNITUDE_SCALE_NV 0x8712
+#define GL_VIBRANCE_SCALE_NV 0x8713
+#define GL_HI_BIAS_NV 0x8714
+#define GL_LO_BIAS_NV 0x8715
+#define GL_DS_BIAS_NV 0x8716
+#define GL_DT_BIAS_NV 0x8717
+#define GL_MAGNITUDE_BIAS_NV 0x8718
+#define GL_VIBRANCE_BIAS_NV 0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
+#define GL_TEXTURE_HI_SIZE_NV 0x871B
+#define GL_TEXTURE_LO_SIZE_NV 0x871C
+#define GL_TEXTURE_DS_SIZE_NV 0x871D
+#define GL_TEXTURE_DT_SIZE_NV 0x871E
+#define GL_TEXTURE_MAG_SIZE_NV 0x871F
+#endif
+
+#ifndef GL_NV_texture_shader2
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
+#endif
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
+#endif
+
+#ifndef GL_NV_vertex_program
+#define GL_VERTEX_PROGRAM_NV 0x8620
+#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
+#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
+#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
+#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
+#define GL_CURRENT_ATTRIB_NV 0x8626
+#define GL_PROGRAM_LENGTH_NV 0x8627
+#define GL_PROGRAM_STRING_NV 0x8628
+#define GL_MODELVIEW_PROJECTION_NV 0x8629
+#define GL_IDENTITY_NV 0x862A
+#define GL_INVERSE_NV 0x862B
+#define GL_TRANSPOSE_NV 0x862C
+#define GL_INVERSE_TRANSPOSE_NV 0x862D
+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+#define GL_MAX_TRACK_MATRICES_NV 0x862F
+#define GL_MATRIX0_NV 0x8630
+#define GL_MATRIX1_NV 0x8631
+#define GL_MATRIX2_NV 0x8632
+#define GL_MATRIX3_NV 0x8633
+#define GL_MATRIX4_NV 0x8634
+#define GL_MATRIX5_NV 0x8635
+#define GL_MATRIX6_NV 0x8636
+#define GL_MATRIX7_NV 0x8637
+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
+#define GL_CURRENT_MATRIX_NV 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
+#define GL_PROGRAM_PARAMETER_NV 0x8644
+#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
+#define GL_PROGRAM_TARGET_NV 0x8646
+#define GL_PROGRAM_RESIDENT_NV 0x8647
+#define GL_TRACK_MATRIX_NV 0x8648
+#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
+#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
+#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
+#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
+#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
+#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
+#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
+#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
+#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
+#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
+#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
+#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
+#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
+#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
+#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
+#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
+#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
+#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
+#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
+#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
+#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
+#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
+#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
+#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
+#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
+#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
+#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
+#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
+#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
+#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
+#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
+#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
+#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
+#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
+#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
+#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
+#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
+#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
+#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
+#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
+#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
+#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
+#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
+#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
+#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
+#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
+#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
+#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
+#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
+#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
+#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
+#endif
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
+#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
+#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
+#endif
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SCALEBIAS_HINT_SGIX 0x8322
+#endif
+
+#ifndef GL_OML_interlace
+#define GL_INTERLACE_OML 0x8980
+#define GL_INTERLACE_READ_OML 0x8981
+#endif
+
+#ifndef GL_OML_subsample
+#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
+#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
+#endif
+
+#ifndef GL_OML_resample
+#define GL_PACK_RESAMPLE_OML 0x8984
+#define GL_UNPACK_RESAMPLE_OML 0x8985
+#define GL_RESAMPLE_REPLICATE_OML 0x8986
+#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
+#define GL_RESAMPLE_AVERAGE_OML 0x8988
+#define GL_RESAMPLE_DECIMATE_OML 0x8989
+#endif
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
+#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
+#endif
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_BUMP_ROT_MATRIX_ATI 0x8775
+#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
+#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
+#define GL_BUMP_TEX_UNITS_ATI 0x8778
+#define GL_DUDV_ATI 0x8779
+#define GL_DU8DV8_ATI 0x877A
+#define GL_BUMP_ENVMAP_ATI 0x877B
+#define GL_BUMP_TARGET_ATI 0x877C
+#endif
+
+#ifndef GL_ATI_fragment_shader
+#define GL_FRAGMENT_SHADER_ATI 0x8920
+#define GL_REG_0_ATI 0x8921
+#define GL_REG_1_ATI 0x8922
+#define GL_REG_2_ATI 0x8923
+#define GL_REG_3_ATI 0x8924
+#define GL_REG_4_ATI 0x8925
+#define GL_REG_5_ATI 0x8926
+#define GL_REG_6_ATI 0x8927
+#define GL_REG_7_ATI 0x8928
+#define GL_REG_8_ATI 0x8929
+#define GL_REG_9_ATI 0x892A
+#define GL_REG_10_ATI 0x892B
+#define GL_REG_11_ATI 0x892C
+#define GL_REG_12_ATI 0x892D
+#define GL_REG_13_ATI 0x892E
+#define GL_REG_14_ATI 0x892F
+#define GL_REG_15_ATI 0x8930
+#define GL_REG_16_ATI 0x8931
+#define GL_REG_17_ATI 0x8932
+#define GL_REG_18_ATI 0x8933
+#define GL_REG_19_ATI 0x8934
+#define GL_REG_20_ATI 0x8935
+#define GL_REG_21_ATI 0x8936
+#define GL_REG_22_ATI 0x8937
+#define GL_REG_23_ATI 0x8938
+#define GL_REG_24_ATI 0x8939
+#define GL_REG_25_ATI 0x893A
+#define GL_REG_26_ATI 0x893B
+#define GL_REG_27_ATI 0x893C
+#define GL_REG_28_ATI 0x893D
+#define GL_REG_29_ATI 0x893E
+#define GL_REG_30_ATI 0x893F
+#define GL_REG_31_ATI 0x8940
+#define GL_CON_0_ATI 0x8941
+#define GL_CON_1_ATI 0x8942
+#define GL_CON_2_ATI 0x8943
+#define GL_CON_3_ATI 0x8944
+#define GL_CON_4_ATI 0x8945
+#define GL_CON_5_ATI 0x8946
+#define GL_CON_6_ATI 0x8947
+#define GL_CON_7_ATI 0x8948
+#define GL_CON_8_ATI 0x8949
+#define GL_CON_9_ATI 0x894A
+#define GL_CON_10_ATI 0x894B
+#define GL_CON_11_ATI 0x894C
+#define GL_CON_12_ATI 0x894D
+#define GL_CON_13_ATI 0x894E
+#define GL_CON_14_ATI 0x894F
+#define GL_CON_15_ATI 0x8950
+#define GL_CON_16_ATI 0x8951
+#define GL_CON_17_ATI 0x8952
+#define GL_CON_18_ATI 0x8953
+#define GL_CON_19_ATI 0x8954
+#define GL_CON_20_ATI 0x8955
+#define GL_CON_21_ATI 0x8956
+#define GL_CON_22_ATI 0x8957
+#define GL_CON_23_ATI 0x8958
+#define GL_CON_24_ATI 0x8959
+#define GL_CON_25_ATI 0x895A
+#define GL_CON_26_ATI 0x895B
+#define GL_CON_27_ATI 0x895C
+#define GL_CON_28_ATI 0x895D
+#define GL_CON_29_ATI 0x895E
+#define GL_CON_30_ATI 0x895F
+#define GL_CON_31_ATI 0x8960
+#define GL_MOV_ATI 0x8961
+#define GL_ADD_ATI 0x8963
+#define GL_MUL_ATI 0x8964
+#define GL_SUB_ATI 0x8965
+#define GL_DOT3_ATI 0x8966
+#define GL_DOT4_ATI 0x8967
+#define GL_MAD_ATI 0x8968
+#define GL_LERP_ATI 0x8969
+#define GL_CND_ATI 0x896A
+#define GL_CND0_ATI 0x896B
+#define GL_DOT2_ADD_ATI 0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
+#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+#define GL_NUM_PASSES_ATI 0x8970
+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+#define GL_SWIZZLE_STR_ATI 0x8976
+#define GL_SWIZZLE_STQ_ATI 0x8977
+#define GL_SWIZZLE_STR_DR_ATI 0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
+#define GL_SWIZZLE_STRQ_ATI 0x897A
+#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
+#define GL_RED_BIT_ATI 0x00000001
+#define GL_GREEN_BIT_ATI 0x00000002
+#define GL_BLUE_BIT_ATI 0x00000004
+#define GL_2X_BIT_ATI 0x00000001
+#define GL_4X_BIT_ATI 0x00000002
+#define GL_8X_BIT_ATI 0x00000004
+#define GL_HALF_BIT_ATI 0x00000008
+#define GL_QUARTER_BIT_ATI 0x00000010
+#define GL_EIGHTH_BIT_ATI 0x00000020
+#define GL_SATURATE_BIT_ATI 0x00000040
+#define GL_COMP_BIT_ATI 0x00000002
+#define GL_NEGATE_BIT_ATI 0x00000004
+#define GL_BIAS_BIT_ATI 0x00000008
+#endif
+
+#ifndef GL_ATI_pn_triangles
+#define GL_PN_TRIANGLES_ATI 0x87F0
+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+#endif
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_STATIC_ATI 0x8760
+#define GL_DYNAMIC_ATI 0x8761
+#define GL_PRESERVE_ATI 0x8762
+#define GL_DISCARD_ATI 0x8763
+#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
+#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
+#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
+#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
+#endif
+
+#ifndef GL_EXT_vertex_shader
+#define GL_VERTEX_SHADER_EXT 0x8780
+#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
+#define GL_OP_INDEX_EXT 0x8782
+#define GL_OP_NEGATE_EXT 0x8783
+#define GL_OP_DOT3_EXT 0x8784
+#define GL_OP_DOT4_EXT 0x8785
+#define GL_OP_MUL_EXT 0x8786
+#define GL_OP_ADD_EXT 0x8787
+#define GL_OP_MADD_EXT 0x8788
+#define GL_OP_FRAC_EXT 0x8789
+#define GL_OP_MAX_EXT 0x878A
+#define GL_OP_MIN_EXT 0x878B
+#define GL_OP_SET_GE_EXT 0x878C
+#define GL_OP_SET_LT_EXT 0x878D
+#define GL_OP_CLAMP_EXT 0x878E
+#define GL_OP_FLOOR_EXT 0x878F
+#define GL_OP_ROUND_EXT 0x8790
+#define GL_OP_EXP_BASE_2_EXT 0x8791
+#define GL_OP_LOG_BASE_2_EXT 0x8792
+#define GL_OP_POWER_EXT 0x8793
+#define GL_OP_RECIP_EXT 0x8794
+#define GL_OP_RECIP_SQRT_EXT 0x8795
+#define GL_OP_SUB_EXT 0x8796
+#define GL_OP_CROSS_PRODUCT_EXT 0x8797
+#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
+#define GL_OP_MOV_EXT 0x8799
+#define GL_OUTPUT_VERTEX_EXT 0x879A
+#define GL_OUTPUT_COLOR0_EXT 0x879B
+#define GL_OUTPUT_COLOR1_EXT 0x879C
+#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
+#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
+#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
+#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
+#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
+#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
+#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
+#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
+#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
+#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
+#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
+#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
+#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
+#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
+#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
+#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
+#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
+#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
+#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
+#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
+#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
+#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
+#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
+#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
+#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
+#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
+#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
+#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
+#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
+#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
+#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
+#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
+#define GL_OUTPUT_FOG_EXT 0x87BD
+#define GL_SCALAR_EXT 0x87BE
+#define GL_VECTOR_EXT 0x87BF
+#define GL_MATRIX_EXT 0x87C0
+#define GL_VARIANT_EXT 0x87C1
+#define GL_INVARIANT_EXT 0x87C2
+#define GL_LOCAL_CONSTANT_EXT 0x87C3
+#define GL_LOCAL_EXT 0x87C4
+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
+#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
+#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
+#define GL_X_EXT 0x87D5
+#define GL_Y_EXT 0x87D6
+#define GL_Z_EXT 0x87D7
+#define GL_W_EXT 0x87D8
+#define GL_NEGATIVE_X_EXT 0x87D9
+#define GL_NEGATIVE_Y_EXT 0x87DA
+#define GL_NEGATIVE_Z_EXT 0x87DB
+#define GL_NEGATIVE_W_EXT 0x87DC
+#define GL_ZERO_EXT 0x87DD
+#define GL_ONE_EXT 0x87DE
+#define GL_NEGATIVE_ONE_EXT 0x87DF
+#define GL_NORMALIZED_RANGE_EXT 0x87E0
+#define GL_FULL_RANGE_EXT 0x87E1
+#define GL_CURRENT_VERTEX_EXT 0x87E2
+#define GL_MVP_MATRIX_EXT 0x87E3
+#define GL_VARIANT_VALUE_EXT 0x87E4
+#define GL_VARIANT_DATATYPE_EXT 0x87E5
+#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
+#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
+#define GL_VARIANT_ARRAY_EXT 0x87E8
+#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
+#define GL_INVARIANT_VALUE_EXT 0x87EA
+#define GL_INVARIANT_DATATYPE_EXT 0x87EB
+#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
+#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
+#endif
+
+#ifndef GL_ATI_vertex_streams
+#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
+#define GL_VERTEX_STREAM0_ATI 0x876C
+#define GL_VERTEX_STREAM1_ATI 0x876D
+#define GL_VERTEX_STREAM2_ATI 0x876E
+#define GL_VERTEX_STREAM3_ATI 0x876F
+#define GL_VERTEX_STREAM4_ATI 0x8770
+#define GL_VERTEX_STREAM5_ATI 0x8771
+#define GL_VERTEX_STREAM6_ATI 0x8772
+#define GL_VERTEX_STREAM7_ATI 0x8773
+#define GL_VERTEX_SOURCE_ATI 0x8774
+#endif
+
+#ifndef GL_ATI_element_array
+#define GL_ELEMENT_ARRAY_ATI 0x8768
+#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
+#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
+#endif
+
+#ifndef GL_SUN_mesh_array
+#define GL_QUAD_MESH_SUN 0x8614
+#define GL_TRIANGLE_MESH_SUN 0x8615
+#endif
+
+#ifndef GL_SUN_slice_accum
+#define GL_SLICE_ACCUM_SUN 0x85CC
+#endif
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
+#endif
+
+#ifndef GL_NV_depth_clamp
+#define GL_DEPTH_CLAMP_NV 0x864F
+#endif
+
+#ifndef GL_NV_occlusion_query
+#define GL_PIXEL_COUNTER_BITS_NV 0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
+#define GL_PIXEL_COUNT_NV 0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
+#endif
+
+#ifndef GL_NV_point_sprite
+#define GL_POINT_SPRITE_NV 0x8861
+#define GL_COORD_REPLACE_NV 0x8862
+#define GL_POINT_SPRITE_R_MODE_NV 0x8863
+#endif
+
+#ifndef GL_NV_texture_shader3
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+#define GL_HILO8_NV 0x885E
+#define GL_SIGNED_HILO8_NV 0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
+#endif
+
+#ifndef GL_NV_vertex_program1_1
+#endif
+
+#ifndef GL_EXT_shadow_funcs
+#endif
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
+#endif
+
+#ifndef GL_ATI_text_fragment_shader
+#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
+#endif
+
+#ifndef GL_APPLE_client_storage
+#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
+#endif
+
+#ifndef GL_APPLE_element_array
+#define GL_ELEMENT_ARRAY_APPLE 0x8768
+#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769
+#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A
+#endif
+
+#ifndef GL_APPLE_fence
+#define GL_DRAW_PIXELS_APPLE 0x8A0A
+#define GL_FENCE_APPLE 0x8A0B
+#endif
+
+#ifndef GL_APPLE_vertex_array_object
+#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
+#endif
+
+#ifndef GL_APPLE_vertex_array_range
+#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
+#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
+#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+#define GL_STORAGE_CACHED_APPLE 0x85BE
+#define GL_STORAGE_SHARED_APPLE 0x85BF
+#endif
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_YCBCR_422_APPLE 0x85B9
+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+#endif
+
+#ifndef GL_S3_s3tc
+#define GL_RGB_S3TC 0x83A0
+#define GL_RGB4_S3TC 0x83A1
+#define GL_RGBA_S3TC 0x83A2
+#define GL_RGBA4_S3TC 0x83A3
+#endif
+
+#ifndef GL_ATI_draw_buffers
+#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
+#define GL_DRAW_BUFFER0_ATI 0x8825
+#define GL_DRAW_BUFFER1_ATI 0x8826
+#define GL_DRAW_BUFFER2_ATI 0x8827
+#define GL_DRAW_BUFFER3_ATI 0x8828
+#define GL_DRAW_BUFFER4_ATI 0x8829
+#define GL_DRAW_BUFFER5_ATI 0x882A
+#define GL_DRAW_BUFFER6_ATI 0x882B
+#define GL_DRAW_BUFFER7_ATI 0x882C
+#define GL_DRAW_BUFFER8_ATI 0x882D
+#define GL_DRAW_BUFFER9_ATI 0x882E
+#define GL_DRAW_BUFFER10_ATI 0x882F
+#define GL_DRAW_BUFFER11_ATI 0x8830
+#define GL_DRAW_BUFFER12_ATI 0x8831
+#define GL_DRAW_BUFFER13_ATI 0x8832
+#define GL_DRAW_BUFFER14_ATI 0x8833
+#define GL_DRAW_BUFFER15_ATI 0x8834
+#endif
+
+#ifndef GL_ATI_pixel_format_float
+#define GL_TYPE_RGBA_FLOAT_ATI 0x8820
+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
+#endif
+
+#ifndef GL_ATI_texture_env_combine3
+#define GL_MODULATE_ADD_ATI 0x8744
+#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
+#define GL_MODULATE_SUBTRACT_ATI 0x8746
+#endif
+
+#ifndef GL_ATI_texture_float
+#define GL_RGBA_FLOAT32_ATI 0x8814
+#define GL_RGB_FLOAT32_ATI 0x8815
+#define GL_ALPHA_FLOAT32_ATI 0x8816
+#define GL_INTENSITY_FLOAT32_ATI 0x8817
+#define GL_LUMINANCE_FLOAT32_ATI 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+#define GL_RGBA_FLOAT16_ATI 0x881A
+#define GL_RGB_FLOAT16_ATI 0x881B
+#define GL_ALPHA_FLOAT16_ATI 0x881C
+#define GL_INTENSITY_FLOAT16_ATI 0x881D
+#define GL_LUMINANCE_FLOAT16_ATI 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
+#endif
+
+#ifndef GL_NV_float_buffer
+#define GL_FLOAT_R_NV 0x8880
+#define GL_FLOAT_RG_NV 0x8881
+#define GL_FLOAT_RGB_NV 0x8882
+#define GL_FLOAT_RGBA_NV 0x8883
+#define GL_FLOAT_R16_NV 0x8884
+#define GL_FLOAT_R32_NV 0x8885
+#define GL_FLOAT_RG16_NV 0x8886
+#define GL_FLOAT_RG32_NV 0x8887
+#define GL_FLOAT_RGB16_NV 0x8888
+#define GL_FLOAT_RGB32_NV 0x8889
+#define GL_FLOAT_RGBA16_NV 0x888A
+#define GL_FLOAT_RGBA32_NV 0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+#define GL_FLOAT_RGBA_MODE_NV 0x888E
+#endif
+
+#ifndef GL_NV_fragment_program
+#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
+#define GL_FRAGMENT_PROGRAM_NV 0x8870
+#define GL_MAX_TEXTURE_COORDS_NV 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
+#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
+#define GL_PROGRAM_ERROR_STRING_NV 0x8874
+#endif
+
+#ifndef GL_NV_half_float
+#define GL_HALF_FLOAT_NV 0x140B
+#endif
+
+#ifndef GL_NV_pixel_data_range
+#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
+#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
+#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
+#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
+#endif
+
+#ifndef GL_NV_primitive_restart
+#define GL_PRIMITIVE_RESTART_NV 0x8558
+#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
+#endif
+
+#ifndef GL_NV_texture_expand_normal
+#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
+#endif
+
+#ifndef GL_NV_vertex_program2
+#endif
+
+#ifndef GL_ATI_map_object_buffer
+#endif
+
+#ifndef GL_ATI_separate_stencil
+#define GL_STENCIL_BACK_FUNC_ATI 0x8800
+#define GL_STENCIL_BACK_FAIL_ATI 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+#endif
+
+#ifndef GL_ATI_vertex_attrib_array_object
+#endif
+
+#ifndef GL_OES_read_format
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
+#endif
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
+#define GL_DEPTH_BOUNDS_EXT 0x8891
+#endif
+
+#ifndef GL_EXT_texture_mirror_clamp
+#define GL_MIRROR_CLAMP_EXT 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
+#endif
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_BLEND_EQUATION_RGB_EXT GL_BLEND_EQUATION
+#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
+#endif
+
+#ifndef GL_MESA_pack_invert
+#define GL_PACK_INVERT_MESA 0x8758
+#endif
+
+#ifndef GL_MESA_ycbcr_texture
+#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
+#define GL_YCBCR_MESA 0x8757
+#endif
+
+#ifndef GL_EXT_pixel_buffer_object
+#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
+#endif
+
+#ifndef GL_NV_fragment_program_option
+#endif
+
+#ifndef GL_NV_fragment_program2
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
+#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
+#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
+#endif
+
+#ifndef GL_NV_vertex_program2_option
+/* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
+/* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */
+#endif
+
+#ifndef GL_NV_vertex_program3
+/* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
+#endif
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
+#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
+#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
+#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
+#define GL_FRAMEBUFFER_EXT 0x8D40
+#define GL_RENDERBUFFER_EXT 0x8D41
+#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
+#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
+#define GL_STENCIL_INDEX1_EXT 0x8D46
+#define GL_STENCIL_INDEX4_EXT 0x8D47
+#define GL_STENCIL_INDEX8_EXT 0x8D48
+#define GL_STENCIL_INDEX16_EXT 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
+#endif
+
+#ifndef GL_GREMEDY_string_marker
+#endif
+
+#ifndef GL_EXT_packed_depth_stencil
+#define GL_DEPTH_STENCIL_EXT 0x84F9
+#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
+#define GL_DEPTH24_STENCIL8_EXT 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
+#endif
+
+#ifndef GL_EXT_stencil_clear_tag
+#define GL_STENCIL_TAG_BITS_EXT 0x88F2
+#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
+#endif
+
+#ifndef GL_EXT_texture_sRGB
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB8_EXT 0x8C41
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
+#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+#define GL_SLUMINANCE_EXT 0x8C46
+#define GL_SLUMINANCE8_EXT 0x8C47
+#define GL_COMPRESSED_SRGB_EXT 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+#endif
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
+#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
+#endif
+
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+#define GL_MAX_SAMPLES_EXT 0x8D57
+#endif
+
+#ifndef GL_MESAX_texture_stack
+#define GL_TEXTURE_1D_STACK_MESAX 0x8759
+#define GL_TEXTURE_2D_STACK_MESAX 0x875A
+#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+#endif
+
+#ifndef GL_EXT_timer_query
+#define GL_TIME_ELAPSED_EXT 0x88BF
+#endif
+
+#ifndef GL_EXT_gpu_program_parameters
+#endif
+
+#ifndef GL_APPLE_flush_buffer_range
+#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
+#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
+#endif
+
+#ifndef GL_NV_gpu_program4
+#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
+#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
+#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
+#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
+#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
+#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
+#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
+#endif
+
+#ifndef GL_NV_geometry_program4
+#define GL_LINES_ADJACENCY_EXT 0x000A
+#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
+#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
+#define GL_GEOMETRY_PROGRAM_NV 0x8C26
+#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
+#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
+#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
+#endif
+
+#ifndef GL_EXT_geometry_shader4
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+/* reuse GL_GEOMETRY_VERTICES_OUT_EXT */
+/* reuse GL_GEOMETRY_INPUT_TYPE_EXT */
+/* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */
+/* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
+#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+/* reuse GL_LINES_ADJACENCY_EXT */
+/* reuse GL_LINE_STRIP_ADJACENCY_EXT */
+/* reuse GL_TRIANGLES_ADJACENCY_EXT */
+/* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+/* reuse GL_PROGRAM_POINT_SIZE_EXT */
+#endif
+
+#ifndef GL_NV_vertex_program4
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
+#endif
+
+#ifndef GL_EXT_gpu_shader4
+#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
+#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
+#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
+#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
+#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
+#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
+#define GL_INT_SAMPLER_1D_EXT 0x8DC9
+#define GL_INT_SAMPLER_2D_EXT 0x8DCA
+#define GL_INT_SAMPLER_3D_EXT 0x8DCB
+#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
+#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
+#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+#endif
+
+#ifndef GL_EXT_draw_instanced
+#endif
+
+#ifndef GL_EXT_packed_float
+#define GL_R11F_G11F_B10F_EXT 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
+#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
+#endif
+
+#ifndef GL_EXT_texture_array
+#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+#endif
+
+#ifndef GL_EXT_texture_buffer_object
+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
+#endif
+
+#ifndef GL_EXT_texture_compression_latc
+#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
+#endif
+
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
+#endif
+
+#ifndef GL_EXT_texture_shared_exponent
+#define GL_RGB9_E5_EXT 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
+#endif
+
+#ifndef GL_NV_depth_buffer_float
+#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
+#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
+#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
+#endif
+
+#ifndef GL_NV_fragment_program4
+#endif
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+#endif
+
+#ifndef GL_EXT_framebuffer_sRGB
+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
+#endif
+
+#ifndef GL_NV_geometry_shader4
+#endif
+
+#ifndef GL_NV_parameter_buffer_object
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
+#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
+#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
+#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
+#endif
+
+#ifndef GL_EXT_draw_buffers2
+#endif
+
+#ifndef GL_NV_transform_feedback
+#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
+#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
+#define GL_TEXTURE_COORD_NV 0x8C79
+#define GL_CLIP_DISTANCE_NV 0x8C7A
+#define GL_VERTEX_ID_NV 0x8C7B
+#define GL_PRIMITIVE_ID_NV 0x8C7C
+#define GL_GENERIC_ATTRIB_NV 0x8C7D
+#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
+#define GL_ACTIVE_VARYINGS_NV 0x8C81
+#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
+#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
+#define GL_PRIMITIVES_GENERATED_NV 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
+#define GL_RASTERIZER_DISCARD_NV 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
+#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
+#endif
+
+#ifndef GL_EXT_bindable_uniform
+#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
+#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
+#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
+#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
+#define GL_UNIFORM_BUFFER_EXT 0x8DEE
+#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
+#endif
+
+#ifndef GL_EXT_texture_integer
+#define GL_RGBA32UI_EXT 0x8D70
+#define GL_RGB32UI_EXT 0x8D71
+#define GL_ALPHA32UI_EXT 0x8D72
+#define GL_INTENSITY32UI_EXT 0x8D73
+#define GL_LUMINANCE32UI_EXT 0x8D74
+#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
+#define GL_RGBA16UI_EXT 0x8D76
+#define GL_RGB16UI_EXT 0x8D77
+#define GL_ALPHA16UI_EXT 0x8D78
+#define GL_INTENSITY16UI_EXT 0x8D79
+#define GL_LUMINANCE16UI_EXT 0x8D7A
+#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
+#define GL_RGBA8UI_EXT 0x8D7C
+#define GL_RGB8UI_EXT 0x8D7D
+#define GL_ALPHA8UI_EXT 0x8D7E
+#define GL_INTENSITY8UI_EXT 0x8D7F
+#define GL_LUMINANCE8UI_EXT 0x8D80
+#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
+#define GL_RGBA32I_EXT 0x8D82
+#define GL_RGB32I_EXT 0x8D83
+#define GL_ALPHA32I_EXT 0x8D84
+#define GL_INTENSITY32I_EXT 0x8D85
+#define GL_LUMINANCE32I_EXT 0x8D86
+#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
+#define GL_RGBA16I_EXT 0x8D88
+#define GL_RGB16I_EXT 0x8D89
+#define GL_ALPHA16I_EXT 0x8D8A
+#define GL_INTENSITY16I_EXT 0x8D8B
+#define GL_LUMINANCE16I_EXT 0x8D8C
+#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
+#define GL_RGBA8I_EXT 0x8D8E
+#define GL_RGB8I_EXT 0x8D8F
+#define GL_ALPHA8I_EXT 0x8D90
+#define GL_INTENSITY8I_EXT 0x8D91
+#define GL_LUMINANCE8I_EXT 0x8D92
+#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
+#define GL_RED_INTEGER_EXT 0x8D94
+#define GL_GREEN_INTEGER_EXT 0x8D95
+#define GL_BLUE_INTEGER_EXT 0x8D96
+#define GL_ALPHA_INTEGER_EXT 0x8D97
+#define GL_RGB_INTEGER_EXT 0x8D98
+#define GL_RGBA_INTEGER_EXT 0x8D99
+#define GL_BGR_INTEGER_EXT 0x8D9A
+#define GL_BGRA_INTEGER_EXT 0x8D9B
+#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
+#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
+#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
+#endif
+
+#ifndef GL_GREMEDY_frame_terminator
+#endif
+
+
+/*************************************************************/
+
+#include <stddef.h>
+#ifndef GL_VERSION_2_0
+/* GL type for program/shader text */
+typedef char GLchar; /* native character */
+#endif
+
+#ifndef GL_VERSION_1_5
+/* GL types for handling large vertex buffer objects */
+typedef ptrdiff_t GLintptr;
+typedef ptrdiff_t GLsizeiptr;
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+/* GL types for handling large vertex buffer objects */
+typedef ptrdiff_t GLintptrARB;
+typedef ptrdiff_t GLsizeiptrARB;
+#endif
+
+#ifndef GL_ARB_shader_objects
+/* GL types for handling shader object handles and program/shader text */
+typedef char GLcharARB; /* native character */
+typedef unsigned int GLhandleARB; /* shader object handle */
+#endif
+
+/* GL types for "half" precision (s10e5) float data in host memory */
+#ifndef GL_ARB_half_float_pixel
+typedef unsigned short GLhalfARB;
+#endif
+
+#ifndef GL_NV_half_float
+typedef unsigned short GLhalfNV;
+#endif
+
+#ifndef GLEXT_64_TYPES_DEFINED
+/* This code block is duplicated in glext.h, so must be protected */
+#define GLEXT_64_TYPES_DEFINED
+/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+/* (as used in the GL_EXT_timer_query extension). */
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#include <inttypes.h>
+#elif defined(__sun__)
+#include <inttypes.h>
+#if defined(__STDC__)
+#if defined(__arch64__)
+typedef long int int64_t;
+typedef unsigned long int uint64_t;
+#else
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#endif /* __arch64__ */
+#endif /* __STDC__ */
+#elif defined( __VMS )
+#include <inttypes.h>
+#elif defined(__SCO__) || defined(__USLC__)
+#include <stdint.h>
+#elif defined(__UNIXOS2__) || defined(__SOL64__)
+typedef long int int32_t;
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#elif defined(_WIN32) && defined(__GNUC__)
+#include <stdint.h>
+#elif defined(_WIN32)
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <inttypes.h> /* Fallback option */
+#endif
+#endif
+
+#ifndef GL_EXT_timer_query
+typedef int64_t GLint64EXT;
+typedef uint64_t GLuint64EXT;
+#endif
+
+#ifndef GL_VERSION_1_2
+#define GL_VERSION_1_2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
+GLAPI void APIENTRY glBlendEquation (GLenum);
+GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
+GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
+GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
+GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
+GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
+GLAPI void APIENTRY glResetHistogram (GLenum);
+GLAPI void APIENTRY glResetMinmax (GLenum);
+GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_VERSION_1_3
+#define GL_VERSION_1_3 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveTexture (GLenum);
+GLAPI void APIENTRY glClientActiveTexture (GLenum);
+GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint);
+GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort);
+GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *);
+GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *);
+GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *);
+GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *);
+GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
+GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
+#endif
+
+#ifndef GL_VERSION_1_4
+#define GL_VERSION_1_4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glFogCoordf (GLfloat);
+GLAPI void APIENTRY glFogCoordfv (const GLfloat *);
+GLAPI void APIENTRY glFogCoordd (GLdouble);
+GLAPI void APIENTRY glFogCoorddv (const GLdouble *);
+GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
+GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
+GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameteri (GLenum, GLint);
+GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *);
+GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *);
+GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *);
+GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *);
+GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint);
+GLAPI void APIENTRY glSecondaryColor3iv (const GLint *);
+GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *);
+GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *);
+GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *);
+GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort);
+GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *);
+GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos2dv (const GLdouble *);
+GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos2fv (const GLfloat *);
+GLAPI void APIENTRY glWindowPos2i (GLint, GLint);
+GLAPI void APIENTRY glWindowPos2iv (const GLint *);
+GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos2sv (const GLshort *);
+GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos3dv (const GLdouble *);
+GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos3fv (const GLfloat *);
+GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint);
+GLAPI void APIENTRY glWindowPos3iv (const GLint *);
+GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos3sv (const GLshort *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
+typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_VERSION_1_5
+#define GL_VERSION_1_5 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *);
+GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *);
+GLAPI GLboolean APIENTRY glIsQuery (GLuint);
+GLAPI void APIENTRY glBeginQuery (GLenum, GLuint);
+GLAPI void APIENTRY glEndQuery (GLenum);
+GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glBindBuffer (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsBuffer (GLuint);
+GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum);
+GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *);
+GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *);
+GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum);
+GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum);
+GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params);
+#endif
+
+#ifndef GL_VERSION_2_0
+#define GL_VERSION_2_0 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum);
+GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *);
+GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint);
+GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint);
+GLAPI void APIENTRY glAttachShader (GLuint, GLuint);
+GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *);
+GLAPI void APIENTRY glCompileShader (GLuint);
+GLAPI GLuint APIENTRY glCreateProgram (void);
+GLAPI GLuint APIENTRY glCreateShader (GLenum);
+GLAPI void APIENTRY glDeleteProgram (GLuint);
+GLAPI void APIENTRY glDeleteShader (GLuint);
+GLAPI void APIENTRY glDetachShader (GLuint, GLuint);
+GLAPI void APIENTRY glDisableVertexAttribArray (GLuint);
+GLAPI void APIENTRY glEnableVertexAttribArray (GLuint);
+GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
+GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
+GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *);
+GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *);
+GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *);
+GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *);
+GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *);
+GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *);
+GLAPI GLboolean APIENTRY glIsProgram (GLuint);
+GLAPI GLboolean APIENTRY glIsShader (GLuint);
+GLAPI void APIENTRY glLinkProgram (GLuint);
+GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *);
+GLAPI void APIENTRY glUseProgram (GLuint);
+GLAPI void APIENTRY glUniform1f (GLint, GLfloat);
+GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform1i (GLint, GLint);
+GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glValidateProgram (GLuint);
+GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble);
+GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat);
+GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort);
+GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *);
+GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *);
+GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
+typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_VERSION_2_1
+#define GL_VERSION_2_1 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+#endif
+
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveTextureARB (GLenum);
+GLAPI void APIENTRY glClientActiveTextureARB (GLenum);
+GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
+GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
+GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
+#endif
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_ARB_transpose_matrix 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
+GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
+GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
+GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
+#endif
+
+#ifndef GL_ARB_multisample
+#define GL_ARB_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
+#endif
+
+#ifndef GL_ARB_texture_env_add
+#define GL_ARB_texture_env_add 1
+#endif
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_ARB_texture_cube_map 1
+#endif
+
+#ifndef GL_ARB_texture_compression
+#define GL_ARB_texture_compression 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img);
+#endif
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+#endif
+
+#ifndef GL_ARB_point_parameters
+#define GL_ARB_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_ARB_vertex_blend
+#define GL_ARB_vertex_blend 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *);
+GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *);
+GLAPI void APIENTRY glWeightivARB (GLint, const GLint *);
+GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *);
+GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *);
+GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *);
+GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *);
+GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *);
+GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexBlendARB (GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
+typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
+typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
+typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
+typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
+typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
+typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
+typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
+typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
+#endif
+
+#ifndef GL_ARB_matrix_palette
+#define GL_ARB_matrix_palette 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint);
+GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *);
+GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *);
+GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *);
+GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_ARB_texture_env_combine 1
+#endif
+
+#ifndef GL_ARB_texture_env_crossbar
+#define GL_ARB_texture_env_crossbar 1
+#endif
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_ARB_texture_env_dot3 1
+#endif
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_ARB_texture_mirrored_repeat 1
+#endif
+
+#ifndef GL_ARB_depth_texture
+#define GL_ARB_depth_texture 1
+#endif
+
+#ifndef GL_ARB_shadow
+#define GL_ARB_shadow 1
+#endif
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_ARB_shadow_ambient 1
+#endif
+
+#ifndef GL_ARB_window_pos
+#define GL_ARB_window_pos 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *);
+GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *);
+GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint);
+GLAPI void APIENTRY glWindowPos2ivARB (const GLint *);
+GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos2svARB (const GLshort *);
+GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *);
+GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *);
+GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint);
+GLAPI void APIENTRY glWindowPos3ivARB (const GLint *);
+GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos3svARB (const GLshort *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_ARB_vertex_program
+#define GL_ARB_vertex_program 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble);
+GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat);
+GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort);
+GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *);
+GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *);
+GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint);
+GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint);
+GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *);
+GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *);
+GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *);
+GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *);
+GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *);
+GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *);
+GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *);
+GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *);
+GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *);
+GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *);
+GLAPI GLboolean APIENTRY glIsProgramARB (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
+#endif
+
+#ifndef GL_ARB_fragment_program
+#define GL_ARB_fragment_program 1
+/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_ARB_vertex_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsBufferARB (GLuint);
+GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum);
+GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *);
+GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *);
+GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum);
+GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum);
+GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params);
+#endif
+
+#ifndef GL_ARB_occlusion_query
+#define GL_ARB_occlusion_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *);
+GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *);
+GLAPI GLboolean APIENTRY glIsQueryARB (GLuint);
+GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint);
+GLAPI void APIENTRY glEndQueryARB (GLenum);
+GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_ARB_shader_objects
+#define GL_ARB_shader_objects 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB);
+GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum);
+GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB);
+GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum);
+GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *);
+GLAPI void APIENTRY glCompileShaderARB (GLhandleARB);
+GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
+GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB);
+GLAPI void APIENTRY glLinkProgramARB (GLhandleARB);
+GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB);
+GLAPI void APIENTRY glValidateProgramARB (GLhandleARB);
+GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat);
+GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform1iARB (GLint, GLint);
+GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *);
+GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
+GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
+GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *);
+GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
+GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *);
+GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *);
+GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
+typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
+typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
+typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
+typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
+typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
+typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
+typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
+typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
+#endif
+
+#ifndef GL_ARB_vertex_shader
+#define GL_ARB_vertex_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *);
+GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
+GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
+#endif
+
+#ifndef GL_ARB_fragment_shader
+#define GL_ARB_fragment_shader 1
+#endif
+
+#ifndef GL_ARB_shading_language_100
+#define GL_ARB_shading_language_100 1
+#endif
+
+#ifndef GL_ARB_texture_non_power_of_two
+#define GL_ARB_texture_non_power_of_two 1
+#endif
+
+#ifndef GL_ARB_point_sprite
+#define GL_ARB_point_sprite 1
+#endif
+
+#ifndef GL_ARB_fragment_program_shadow
+#define GL_ARB_fragment_program_shadow 1
+#endif
+
+#ifndef GL_ARB_draw_buffers
+#define GL_ARB_draw_buffers 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
+#endif
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle 1
+#endif
+
+#ifndef GL_ARB_color_buffer_float
+#define GL_ARB_color_buffer_float 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glClampColorARB (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
+#endif
+
+#ifndef GL_ARB_half_float_pixel
+#define GL_ARB_half_float_pixel 1
+#endif
+
+#ifndef GL_ARB_texture_float
+#define GL_ARB_texture_float 1
+#endif
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+#endif
+
+#ifndef GL_EXT_abgr
+#define GL_EXT_abgr 1
+#endif
+
+#ifndef GL_EXT_blend_color
+#define GL_EXT_blend_color 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+#endif
+
+#ifndef GL_EXT_polygon_offset
+#define GL_EXT_polygon_offset 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
+#endif
+
+#ifndef GL_EXT_texture
+#define GL_EXT_texture 1
+#endif
+
+#ifndef GL_EXT_texture3D
+#define GL_EXT_texture3D 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_SGIS_texture_filter4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
+typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
+#endif
+
+#ifndef GL_EXT_subtexture
+#define GL_EXT_subtexture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_EXT_copy_texture
+#define GL_EXT_copy_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_EXT_histogram
+#define GL_EXT_histogram 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
+GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
+GLAPI void APIENTRY glResetHistogramEXT (GLenum);
+GLAPI void APIENTRY glResetMinmaxEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
+#endif
+
+#ifndef GL_EXT_convolution
+#define GL_EXT_convolution 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
+GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+#endif
+
+#ifndef GL_SGI_color_matrix
+#define GL_SGI_color_matrix 1
+#endif
+
+#ifndef GL_SGI_color_table
+#define GL_SGI_color_table 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_SGIX_pixel_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
+#endif
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_SGIS_pixel_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
+GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
+GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
+GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
+GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_SGIS_texture4D
+#define GL_SGIS_texture4D 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_SGI_texture_color_table
+#define GL_SGI_texture_color_table 1
+#endif
+
+#ifndef GL_EXT_cmyka
+#define GL_EXT_cmyka 1
+#endif
+
+#ifndef GL_EXT_texture_object
+#define GL_EXT_texture_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
+GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);
+GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
+typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
+typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
+typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
+typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+#endif
+
+#ifndef GL_SGIS_detail_texture
+#define GL_SGIS_detail_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
+typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
+#endif
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_SGIS_sharpen_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
+typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
+#endif
+
+#ifndef GL_EXT_packed_pixels
+#define GL_EXT_packed_pixels 1
+#endif
+
+#ifndef GL_SGIS_texture_lod
+#define GL_SGIS_texture_lod 1
+#endif
+
+#ifndef GL_SGIS_multisample
+#define GL_SGIS_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
+GLAPI void APIENTRY glSamplePatternSGIS (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
+#endif
+
+#ifndef GL_EXT_rescale_normal
+#define GL_EXT_rescale_normal 1
+#endif
+
+#ifndef GL_EXT_vertex_array
+#define GL_EXT_vertex_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glArrayElementEXT (GLint);
+GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
+GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
+GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
+GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
+typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
+typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
+typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_misc_attribute
+#define GL_EXT_misc_attribute 1
+#endif
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_SGIS_generate_mipmap 1
+#endif
+
+#ifndef GL_SGIX_clipmap
+#define GL_SGIX_clipmap 1
+#endif
+
+#ifndef GL_SGIX_shadow
+#define GL_SGIX_shadow 1
+#endif
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_SGIS_texture_edge_clamp 1
+#endif
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_SGIS_texture_border_clamp 1
+#endif
+
+#ifndef GL_EXT_blend_minmax
+#define GL_EXT_blend_minmax 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_blend_subtract
+#define GL_EXT_blend_subtract 1
+#endif
+
+#ifndef GL_EXT_blend_logic_op
+#define GL_EXT_blend_logic_op 1
+#endif
+
+#ifndef GL_SGIX_interlace
+#define GL_SGIX_interlace 1
+#endif
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_SGIX_pixel_tiles 1
+#endif
+
+#ifndef GL_SGIX_texture_select
+#define GL_SGIX_texture_select 1
+#endif
+
+#ifndef GL_SGIX_sprite
+#define GL_SGIX_sprite 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
+GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
+GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
+GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_SGIX_texture_multi_buffer 1
+#endif
+
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_SGIS_point_parameters
+#define GL_SGIS_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_SGIX_instruments
+#define GL_SGIX_instruments 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
+GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
+GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);
+GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);
+GLAPI void APIENTRY glStartInstrumentsSGIX (void);
+GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
+typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
+typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
+typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
+typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
+typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
+#endif
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_SGIX_texture_scale_bias 1
+#endif
+
+#ifndef GL_SGIX_framezoom
+#define GL_SGIX_framezoom 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFrameZoomSGIX (GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
+#endif
+
+#ifndef GL_SGIX_tag_sample_buffer
+#define GL_SGIX_tag_sample_buffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTagSampleBufferSGIX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
+#endif
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_SGIX_polynomial_ffd 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
+GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
+GLAPI void APIENTRY glDeformSGIX (GLbitfield);
+GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
+typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
+#endif
+
+#ifndef GL_SGIX_reference_plane
+#define GL_SGIX_reference_plane 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
+#endif
+
+#ifndef GL_SGIX_flush_raster
+#define GL_SGIX_flush_raster 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFlushRasterSGIX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
+#endif
+
+#ifndef GL_SGIX_depth_texture
+#define GL_SGIX_depth_texture 1
+#endif
+
+#ifndef GL_SGIS_fog_function
+#define GL_SGIS_fog_function 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
+typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
+#endif
+
+#ifndef GL_SGIX_fog_offset
+#define GL_SGIX_fog_offset 1
+#endif
+
+#ifndef GL_HP_image_transform
+#define GL_HP_image_transform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_HP_convolution_border_modes 1
+#endif
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_SGIX_texture_add_env 1
+#endif
+
+#ifndef GL_EXT_color_subtable
+#define GL_EXT_color_subtable 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+#endif
+
+#ifndef GL_PGI_vertex_hints
+#define GL_PGI_vertex_hints 1
+#endif
+
+#ifndef GL_PGI_misc_hints
+#define GL_PGI_misc_hints 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glHintPGI (GLenum, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
+#endif
+
+#ifndef GL_EXT_paletted_texture
+#define GL_EXT_paletted_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_EXT_clip_volume_hint 1
+#endif
+
+#ifndef GL_SGIX_list_priority
+#define GL_SGIX_list_priority 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
+GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
+GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
+GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_SGIX_ir_instrument1 1
+#endif
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_SGIX_calligraphic_fragment 1
+#endif
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_SGIX_texture_lod_bias 1
+#endif
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SGIX_shadow_ambient 1
+#endif
+
+#ifndef GL_EXT_index_texture
+#define GL_EXT_index_texture 1
+#endif
+
+#ifndef GL_EXT_index_material
+#define GL_EXT_index_material 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
+#endif
+
+#ifndef GL_EXT_index_func
+#define GL_EXT_index_func 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
+#endif
+
+#ifndef GL_EXT_index_array_formats
+#define GL_EXT_index_array_formats 1
+#endif
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_EXT_compiled_vertex_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);
+GLAPI void APIENTRY glUnlockArraysEXT (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
+#endif
+
+#ifndef GL_EXT_cull_vertex
+#define GL_EXT_cull_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
+GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_SGIX_ycrcb
+#define GL_SGIX_ycrcb 1
+#endif
+
+#ifndef GL_SGIX_fragment_lighting
+#define GL_SGIX_fragment_lighting 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
+GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
+GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
+GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
+GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
+GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
+#endif
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_IBM_rasterpos_clip 1
+#endif
+
+#ifndef GL_HP_texture_lighting
+#define GL_HP_texture_lighting 1
+#endif
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_EXT_draw_range_elements 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+#endif
+
+#ifndef GL_WIN_phong_shading
+#define GL_WIN_phong_shading 1
+#endif
+
+#ifndef GL_WIN_specular_fog
+#define GL_WIN_specular_fog 1
+#endif
+
+#ifndef GL_EXT_light_texture
+#define GL_EXT_light_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glApplyTextureEXT (GLenum);
+GLAPI void APIENTRY glTextureLightEXT (GLenum);
+GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
+typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
+#endif
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_SGIX_blend_alpha_minmax 1
+#endif
+
+#ifndef GL_EXT_bgra
+#define GL_EXT_bgra 1
+#endif
+
+#ifndef GL_SGIX_async
+#define GL_SGIX_async 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);
+GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);
+GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);
+GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
+GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
+GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
+typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
+typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
+typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
+typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
+typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
+#endif
+
+#ifndef GL_SGIX_async_pixel
+#define GL_SGIX_async_pixel 1
+#endif
+
+#ifndef GL_SGIX_async_histogram
+#define GL_SGIX_async_histogram 1
+#endif
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_INTEL_parallel_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
+GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
+GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
+GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+#endif
+
+#ifndef GL_HP_occlusion_test
+#define GL_HP_occlusion_test 1
+#endif
+
+#ifndef GL_EXT_pixel_transform
+#define GL_EXT_pixel_transform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_EXT_pixel_transform_color_table
+#define GL_EXT_pixel_transform_color_table 1
+#endif
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_EXT_shared_texture_palette 1
+#endif
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_EXT_separate_specular_color 1
+#endif
+
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
+GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
+GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
+GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
+GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);
+GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);
+GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
+GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
+GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
+GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
+GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_EXT_texture_perturb_normal 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureNormalEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
+GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+#endif
+
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFogCoordfEXT (GLfloat);
+GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);
+GLAPI void APIENTRY glFogCoorddEXT (GLdouble);
+GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);
+GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
+typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_REND_screen_coordinates
+#define GL_REND_screen_coordinates 1
+#endif
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_EXT_coordinate_frame 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);
+GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);
+GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);
+GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
+GLAPI void APIENTRY glTangent3ivEXT (const GLint *);
+GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glTangent3svEXT (const GLshort *);
+GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);
+GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);
+GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);
+GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
+GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);
+GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);
+GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
+typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
+typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
+typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
+typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
+typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
+typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
+typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
+typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
+typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
+typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_EXT_texture_env_combine 1
+#endif
+
+#ifndef GL_APPLE_specular_vector
+#define GL_APPLE_specular_vector 1
+#endif
+
+#ifndef GL_APPLE_transform_hint
+#define GL_APPLE_transform_hint 1
+#endif
+
+#ifndef GL_SGIX_fog_scale
+#define GL_SGIX_fog_scale 1
+#endif
+
+#ifndef GL_SUNX_constant_data
+#define GL_SUNX_constant_data 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFinishTextureSUNX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
+#endif
+
+#ifndef GL_SUN_global_alpha
+#define GL_SUN_global_alpha 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
+GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
+GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);
+GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
+GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
+GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
+GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
+GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
+#endif
+
+#ifndef GL_SUN_triangle_list
+#define GL_SUN_triangle_list 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);
+GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);
+GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);
+GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);
+GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);
+GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
+GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);
+#endif
+
+#ifndef GL_SUN_vertex
+#define GL_SUN_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+#endif
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_EXT_blend_func_separate 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+#endif
+
+#ifndef GL_INGR_blend_func_separate
+#define GL_INGR_blend_func_separate 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+#endif
+
+#ifndef GL_INGR_color_clamp
+#define GL_INGR_color_clamp 1
+#endif
+
+#ifndef GL_INGR_interlace_read
+#define GL_INGR_interlace_read 1
+#endif
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_EXT_stencil_wrap 1
+#endif
+
+#ifndef GL_EXT_422_pixels
+#define GL_EXT_422_pixels 1
+#endif
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NV_texgen_reflection 1
+#endif
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_SUN_convolution_border_modes 1
+#endif
+
+#ifndef GL_EXT_texture_env_add
+#define GL_EXT_texture_env_add 1
+#endif
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_EXT_texture_lod_bias 1
+#endif
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_EXT_texture_filter_anisotropic 1
+#endif
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_EXT_vertex_weighting 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);
+GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);
+GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_NV_light_max_exponent
+#define GL_NV_light_max_exponent 1
+#endif
+
+#ifndef GL_NV_vertex_array_range
+#define GL_NV_vertex_array_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
+GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
+#endif
+
+#ifndef GL_NV_register_combiners
+#define GL_NV_register_combiners 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
+GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
+GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
+GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);
+GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
+GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_NV_fog_distance
+#define GL_NV_fog_distance 1
+#endif
+
+#ifndef GL_NV_texgen_emboss
+#define GL_NV_texgen_emboss 1
+#endif
+
+#ifndef GL_NV_blend_square
+#define GL_NV_blend_square 1
+#endif
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_NV_texture_env_combine4 1
+#endif
+
+#ifndef GL_MESA_resize_buffers
+#define GL_MESA_resize_buffers 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glResizeBuffersMESA (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
+#endif
+
+#ifndef GL_MESA_window_pos
+#define GL_MESA_window_pos 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);
+GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);
+GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);
+GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);
+GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);
+GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);
+GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);
+GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
+GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);
+GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);
+GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);
+GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);
+GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);
+GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_IBM_cull_vertex
+#define GL_IBM_cull_vertex 1
+#endif
+
+#ifndef GL_IBM_multimode_draw_arrays
+#define GL_IBM_multimode_draw_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint);
+GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
+#endif
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_IBM_vertex_array_lists 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
+GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+#endif
+
+#ifndef GL_SGIX_subsample
+#define GL_SGIX_subsample 1
+#endif
+
+#ifndef GL_SGIX_ycrcba
+#define GL_SGIX_ycrcba 1
+#endif
+
+#ifndef GL_SGIX_ycrcb_subsample
+#define GL_SGIX_ycrcb_subsample 1
+#endif
+
+#ifndef GL_SGIX_depth_pass_instrument
+#define GL_SGIX_depth_pass_instrument 1
+#endif
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_3DFX_texture_compression_FXT1 1
+#endif
+
+#ifndef GL_3DFX_multisample
+#define GL_3DFX_multisample 1
+#endif
+
+#ifndef GL_3DFX_tbuffer
+#define GL_3DFX_tbuffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTbufferMask3DFX (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
+#endif
+
+#ifndef GL_EXT_multisample
+#define GL_EXT_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
+GLAPI void APIENTRY glSamplePatternEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
+#endif
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_SGIX_vertex_preclip 1
+#endif
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_SGIX_convolution_accuracy 1
+#endif
+
+#ifndef GL_SGIX_resample
+#define GL_SGIX_resample 1
+#endif
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_SGIS_point_line_texgen 1
+#endif
+
+#ifndef GL_SGIS_texture_color_mask
+#define GL_SGIS_texture_color_mask 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+#endif
+
+#ifndef GL_SGIX_igloo_interface
+#define GL_SGIX_igloo_interface 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
+#endif
+
+#ifndef GL_EXT_texture_env_dot3
+#define GL_EXT_texture_env_dot3 1
+#endif
+
+#ifndef GL_ATI_texture_mirror_once
+#define GL_ATI_texture_mirror_once 1
+#endif
+
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsFenceNV (GLuint);
+GLAPI GLboolean APIENTRY glTestFenceNV (GLuint);
+GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glFinishFenceNV (GLuint);
+GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
+typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
+typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
+#endif
+
+#ifndef GL_NV_evaluators
+#define GL_NV_evaluators 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *);
+GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *);
+GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
+typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
+typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
+#endif
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_NV_packed_depth_stencil 1
+#endif
+
+#ifndef GL_NV_register_combiners2
+#define GL_NV_register_combiners2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_NV_texture_compression_vtc
+#define GL_NV_texture_compression_vtc 1
+#endif
+
+#ifndef GL_NV_texture_rectangle
+#define GL_NV_texture_rectangle 1
+#endif
+
+#ifndef GL_NV_texture_shader
+#define GL_NV_texture_shader 1
+#endif
+
+#ifndef GL_NV_texture_shader2
+#define GL_NV_texture_shader2 1
+#endif
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_NV_vertex_array_range2 1
+#endif
+
+#ifndef GL_NV_vertex_program
+#define GL_NV_vertex_program 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *);
+GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *);
+GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *);
+GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *);
+GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *);
+GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *);
+GLAPI GLboolean APIENTRY glIsProgramNV (GLuint);
+GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *);
+GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *);
+GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *);
+GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *);
+GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *);
+GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *);
+GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum);
+GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble);
+GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat);
+GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort);
+GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
+typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
+typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
+#endif
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_SGIX_texture_coordinate_clamp 1
+#endif
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SGIX_scalebias_hint 1
+#endif
+
+#ifndef GL_OML_interlace
+#define GL_OML_interlace 1
+#endif
+
+#ifndef GL_OML_subsample
+#define GL_OML_subsample 1
+#endif
+
+#ifndef GL_OML_resample
+#define GL_OML_resample 1
+#endif
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_NV_copy_depth_to_color 1
+#endif
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_ATI_envmap_bumpmap 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *);
+GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
+#endif
+
+#ifndef GL_ATI_fragment_shader
+#define GL_ATI_fragment_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint);
+GLAPI void APIENTRY glBindFragmentShaderATI (GLuint);
+GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint);
+GLAPI void APIENTRY glBeginFragmentShaderATI (void);
+GLAPI void APIENTRY glEndFragmentShaderATI (void);
+GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum);
+GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum);
+GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
+typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
+typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
+typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
+#endif
+
+#ifndef GL_ATI_pn_triangles
+#define GL_ATI_pn_triangles 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint);
+GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
+#endif
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_ATI_vertex_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum);
+GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint);
+GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum);
+GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glFreeObjectBufferATI (GLuint);
+GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint);
+GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint);
+GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
+typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_EXT_vertex_shader
+#define GL_EXT_vertex_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginVertexShaderEXT (void);
+GLAPI void APIENTRY glEndVertexShaderEXT (void);
+GLAPI void APIENTRY glBindVertexShaderEXT (GLuint);
+GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint);
+GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint);
+GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint);
+GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint);
+GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *);
+GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *);
+GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *);
+GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *);
+GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *);
+GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *);
+GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *);
+GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint);
+GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint);
+GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindParameterEXT (GLenum);
+GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum);
+GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *);
+GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *);
+GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *);
+GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *);
+GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
+typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
+typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
+typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
+typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
+typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
+typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
+typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
+typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
+typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
+typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
+typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
+typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
+typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
+typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
+typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr);
+typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
+typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
+typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data);
+typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+#endif
+
+#ifndef GL_ATI_vertex_streams
+#define GL_ATI_vertex_streams 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort);
+GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint);
+GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat);
+GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble);
+GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort);
+GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint);
+GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *);
+GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum);
+GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint);
+GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
+typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
+#endif
+
+#ifndef GL_ATI_element_array
+#define GL_ATI_element_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *);
+GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei);
+GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
+#endif
+
+#ifndef GL_SUN_mesh_array
+#define GL_SUN_mesh_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
+#endif
+
+#ifndef GL_SUN_slice_accum
+#define GL_SUN_slice_accum 1
+#endif
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_NV_multisample_filter_hint 1
+#endif
+
+#ifndef GL_NV_depth_clamp
+#define GL_NV_depth_clamp 1
+#endif
+
+#ifndef GL_NV_occlusion_query
+#define GL_NV_occlusion_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *);
+GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *);
+GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint);
+GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint);
+GLAPI void APIENTRY glEndOcclusionQueryNV (void);
+GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_NV_point_sprite
+#define GL_NV_point_sprite 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint);
+GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_NV_texture_shader3
+#define GL_NV_texture_shader3 1
+#endif
+
+#ifndef GL_NV_vertex_program1_1
+#define GL_NV_vertex_program1_1 1
+#endif
+
+#ifndef GL_EXT_shadow_funcs
+#define GL_EXT_shadow_funcs 1
+#endif
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_EXT_stencil_two_side 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
+#endif
+
+#ifndef GL_ATI_text_fragment_shader
+#define GL_ATI_text_fragment_shader 1
+#endif
+
+#ifndef GL_APPLE_client_storage
+#define GL_APPLE_client_storage 1
+#endif
+
+#ifndef GL_APPLE_element_array
+#define GL_APPLE_element_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *);
+GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei);
+GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei);
+GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei);
+GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
+#endif
+
+#ifndef GL_APPLE_fence
+#define GL_APPLE_fence 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *);
+GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *);
+GLAPI void APIENTRY glSetFenceAPPLE (GLuint);
+GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint);
+GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint);
+GLAPI void APIENTRY glFinishFenceAPPLE (GLuint);
+GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint);
+GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
+typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
+typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
+typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
+#endif
+
+#ifndef GL_APPLE_vertex_array_object
+#define GL_APPLE_vertex_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint);
+GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
+typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
+typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
+#endif
+
+#ifndef GL_APPLE_vertex_array_range
+#define GL_APPLE_vertex_array_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *);
+GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *);
+GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
+#endif
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_APPLE_ycbcr_422 1
+#endif
+
+#ifndef GL_S3_s3tc
+#define GL_S3_s3tc 1
+#endif
+
+#ifndef GL_ATI_draw_buffers
+#define GL_ATI_draw_buffers 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
+#endif
+
+#ifndef GL_ATI_pixel_format_float
+#define GL_ATI_pixel_format_float 1
+/* This is really a WGL extension, but defines some associated GL enums.
+ * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string.
+ */
+#endif
+
+#ifndef GL_ATI_texture_env_combine3
+#define GL_ATI_texture_env_combine3 1
+#endif
+
+#ifndef GL_ATI_texture_float
+#define GL_ATI_texture_float 1
+#endif
+
+#ifndef GL_NV_float_buffer
+#define GL_NV_float_buffer 1
+#endif
+
+#ifndef GL_NV_fragment_program
+#define GL_NV_fragment_program 1
+/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *);
+GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *);
+GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
+#endif
+
+#ifndef GL_NV_half_float
+#define GL_NV_half_float 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV);
+GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV);
+GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *);
+GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *);
+GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *);
+GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *);
+GLAPI void APIENTRY glFogCoordhNV (GLhalfNV);
+GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *);
+GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *);
+GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV);
+GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV);
+GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
+GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *);
+GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
+typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
+typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
+typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
+typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+#endif
+
+#ifndef GL_NV_pixel_data_range
+#define GL_NV_pixel_data_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *);
+GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer);
+typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
+#endif
+
+#ifndef GL_NV_primitive_restart
+#define GL_NV_primitive_restart 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPrimitiveRestartNV (void);
+GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
+#endif
+
+#ifndef GL_NV_texture_expand_normal
+#define GL_NV_texture_expand_normal 1
+#endif
+
+#ifndef GL_NV_vertex_program2
+#define GL_NV_vertex_program2 1
+#endif
+
+#ifndef GL_ATI_map_object_buffer
+#define GL_ATI_map_object_buffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint);
+GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+#endif
+
+#ifndef GL_ATI_separate_stencil
+#define GL_ATI_separate_stencil 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+#endif
+
+#ifndef GL_ATI_vertex_attrib_array_object
+#define GL_ATI_vertex_attrib_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_OES_read_format
+#define GL_OES_read_format 1
+#endif
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_EXT_depth_bounds_test 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
+#endif
+
+#ifndef GL_EXT_texture_mirror_clamp
+#define GL_EXT_texture_mirror_clamp 1
+#endif
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_EXT_blend_equation_separate 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
+#endif
+
+#ifndef GL_MESA_pack_invert
+#define GL_MESA_pack_invert 1
+#endif
+
+#ifndef GL_MESA_ycbcr_texture
+#define GL_MESA_ycbcr_texture 1
+#endif
+
+#ifndef GL_EXT_pixel_buffer_object
+#define GL_EXT_pixel_buffer_object 1
+#endif
+
+#ifndef GL_NV_fragment_program_option
+#define GL_NV_fragment_program_option 1
+#endif
+
+#ifndef GL_NV_fragment_program2
+#define GL_NV_fragment_program2 1
+#endif
+
+#ifndef GL_NV_vertex_program2_option
+#define GL_NV_vertex_program2_option 1
+#endif
+
+#ifndef GL_NV_vertex_program3
+#define GL_NV_vertex_program3 1
+#endif
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint);
+GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *);
+GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint);
+GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *);
+GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum);
+GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGenerateMipmapEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
+typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
+typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
+typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
+typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
+#endif
+
+#ifndef GL_GREMEDY_string_marker
+#define GL_GREMEDY_string_marker 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string);
+#endif
+
+#ifndef GL_EXT_packed_depth_stencil
+#define GL_EXT_packed_depth_stencil 1
+#endif
+
+#ifndef GL_EXT_stencil_clear_tag
+#define GL_EXT_stencil_clear_tag 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
+#endif
+
+#ifndef GL_EXT_texture_sRGB
+#define GL_EXT_texture_sRGB 1
+#endif
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_EXT_framebuffer_blit 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+#endif
+
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_EXT_framebuffer_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_MESAX_texture_stack
+#define GL_MESAX_texture_stack 1
+#endif
+
+#ifndef GL_EXT_timer_query
+#define GL_EXT_timer_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *);
+GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
+#endif
+
+#ifndef GL_EXT_gpu_program_parameters
+#define GL_EXT_gpu_program_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+#endif
+
+#ifndef GL_APPLE_flush_buffer_range
+#define GL_APPLE_flush_buffer_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
+#endif
+
+#ifndef GL_NV_gpu_program4
+#define GL_NV_gpu_program4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *);
+GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
+GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *);
+GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *);
+GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
+GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *);
+GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *);
+GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *);
+GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *);
+GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
+#endif
+
+#ifndef GL_NV_geometry_program4
+#define GL_NV_geometry_program4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint);
+GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif
+
+#ifndef GL_EXT_geometry_shader4
+#define GL_EXT_geometry_shader4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
+#endif
+
+#ifndef GL_NV_vertex_program4
+#define GL_NV_vertex_program4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint);
+GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint);
+GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint);
+GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint);
+GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *);
+GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_EXT_gpu_shader4
+#define GL_EXT_gpu_shader4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *);
+GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *);
+GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *);
+GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint);
+GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint);
+GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+#endif
+
+#ifndef GL_EXT_draw_instanced
+#define GL_EXT_draw_instanced 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+#endif
+
+#ifndef GL_EXT_packed_float
+#define GL_EXT_packed_float 1
+#endif
+
+#ifndef GL_EXT_texture_array
+#define GL_EXT_texture_array 1
+#endif
+
+#ifndef GL_EXT_texture_buffer_object
+#define GL_EXT_texture_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+#endif
+
+#ifndef GL_EXT_texture_compression_latc
+#define GL_EXT_texture_compression_latc 1
+#endif
+
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_EXT_texture_compression_rgtc 1
+#endif
+
+#ifndef GL_EXT_texture_shared_exponent
+#define GL_EXT_texture_shared_exponent 1
+#endif
+
+#ifndef GL_NV_depth_buffer_float
+#define GL_NV_depth_buffer_float 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble);
+GLAPI void APIENTRY glClearDepthdNV (GLdouble);
+GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
+typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
+#endif
+
+#ifndef GL_NV_fragment_program4
+#define GL_NV_fragment_program4 1
+#endif
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_NV_framebuffer_multisample_coverage 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_EXT_framebuffer_sRGB
+#define GL_EXT_framebuffer_sRGB 1
+#endif
+
+#ifndef GL_NV_geometry_shader4
+#define GL_NV_geometry_shader4 1
+#endif
+
+#ifndef GL_NV_parameter_buffer_object
+#define GL_NV_parameter_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *);
+GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
+#endif
+
+#ifndef GL_EXT_draw_buffers2
+#define GL_EXT_draw_buffers2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
+GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *);
+GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *);
+GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint);
+GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint);
+GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
+typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
+#endif
+
+#ifndef GL_NV_transform_feedback
+#define GL_NV_transform_feedback 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum);
+GLAPI void APIENTRY glEndTransformFeedbackNV (void);
+GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum);
+GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr);
+GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint);
+GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLint *, GLenum);
+GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *);
+GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *);
+GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
+#endif
+
+#ifndef GL_EXT_bindable_uniform
+#define GL_EXT_bindable_uniform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint);
+GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint);
+GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
+typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
+#endif
+
+#ifndef GL_EXT_texture_integer
+#define GL_EXT_texture_integer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *);
+GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *);
+GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
+typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+#endif
+
+#ifndef GL_GREMEDY_frame_terminator
+#define GL_GREMEDY_frame_terminator 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Mesa/inc/glu.h b/Mesa/inc/glu.h
new file mode 100644
index 000000000000..d7f5de9d1c76
--- /dev/null
+++ b/Mesa/inc/glu.h
@@ -0,0 +1,348 @@
+/*
+** License Applicability. Except to the extent portions of this file are
+** made subject to an alternative license as permitted in the SGI Free
+** Software License B, Version 1.1 (the "License"), the contents of this
+** file are subject only to the provisions of the License. You may not use
+** this file except in compliance with the License. You may obtain a copy
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+**
+** http://oss.sgi.com/projects/FreeB
+**
+** Note that, as provided in the License, the Software is distributed on an
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+**
+** Original Code. The Original Code is: OpenGL Sample Implementation,
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+** Copyright in any portions created by third parties is as indicated
+** elsewhere herein. All Rights Reserved.
+**
+** Additional Notice Provisions: This software was created using the
+** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
+** not been independently verified as being compliant with the OpenGL(R)
+** version 1.2.1 Specification.
+*/
+
+#ifndef __glu_h__
+#define __glu_h__
+
+#if defined(USE_MGL_NAMESPACE)
+#include "glu_mangle.h"
+#endif
+
+#include <GL/gl.h>
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifndef GLAPIENTRYP
+#define GLAPIENTRYP GLAPIENTRY *
+#endif
+
+#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GLU32)
+# undef GLAPI
+# define GLAPI __declspec(dllexport)
+#elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL)
+/* tag specifying we're building for DLL runtime support */
+# undef GLAPI
+# define GLAPI __declspec(dllimport)
+#elif !defined(GLAPI)
+/* for use with static link lib build of Win32 edition only */
+# define GLAPI extern
+#endif /* _STATIC_MESA support */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*************************************************************/
+
+/* Extensions */
+#define GLU_EXT_object_space_tess 1
+#define GLU_EXT_nurbs_tessellator 1
+
+/* Boolean */
+#define GLU_FALSE 0
+#define GLU_TRUE 1
+
+/* Version */
+#define GLU_VERSION_1_1 1
+#define GLU_VERSION_1_2 1
+#define GLU_VERSION_1_3 1
+
+/* StringName */
+#define GLU_VERSION 100800
+#define GLU_EXTENSIONS 100801
+
+/* ErrorCode */
+#define GLU_INVALID_ENUM 100900
+#define GLU_INVALID_VALUE 100901
+#define GLU_OUT_OF_MEMORY 100902
+#define GLU_INCOMPATIBLE_GL_VERSION 100903
+#define GLU_INVALID_OPERATION 100904
+
+/* NurbsDisplay */
+/* GLU_FILL */
+#define GLU_OUTLINE_POLYGON 100240
+#define GLU_OUTLINE_PATCH 100241
+
+/* NurbsCallback */
+#define GLU_NURBS_ERROR 100103
+#define GLU_ERROR 100103
+#define GLU_NURBS_BEGIN 100164
+#define GLU_NURBS_BEGIN_EXT 100164
+#define GLU_NURBS_VERTEX 100165
+#define GLU_NURBS_VERTEX_EXT 100165
+#define GLU_NURBS_NORMAL 100166
+#define GLU_NURBS_NORMAL_EXT 100166
+#define GLU_NURBS_COLOR 100167
+#define GLU_NURBS_COLOR_EXT 100167
+#define GLU_NURBS_TEXTURE_COORD 100168
+#define GLU_NURBS_TEX_COORD_EXT 100168
+#define GLU_NURBS_END 100169
+#define GLU_NURBS_END_EXT 100169
+#define GLU_NURBS_BEGIN_DATA 100170
+#define GLU_NURBS_BEGIN_DATA_EXT 100170
+#define GLU_NURBS_VERTEX_DATA 100171
+#define GLU_NURBS_VERTEX_DATA_EXT 100171
+#define GLU_NURBS_NORMAL_DATA 100172
+#define GLU_NURBS_NORMAL_DATA_EXT 100172
+#define GLU_NURBS_COLOR_DATA 100173
+#define GLU_NURBS_COLOR_DATA_EXT 100173
+#define GLU_NURBS_TEXTURE_COORD_DATA 100174
+#define GLU_NURBS_TEX_COORD_DATA_EXT 100174
+#define GLU_NURBS_END_DATA 100175
+#define GLU_NURBS_END_DATA_EXT 100175
+
+/* NurbsError */
+#define GLU_NURBS_ERROR1 100251
+#define GLU_NURBS_ERROR2 100252
+#define GLU_NURBS_ERROR3 100253
+#define GLU_NURBS_ERROR4 100254
+#define GLU_NURBS_ERROR5 100255
+#define GLU_NURBS_ERROR6 100256
+#define GLU_NURBS_ERROR7 100257
+#define GLU_NURBS_ERROR8 100258
+#define GLU_NURBS_ERROR9 100259
+#define GLU_NURBS_ERROR10 100260
+#define GLU_NURBS_ERROR11 100261
+#define GLU_NURBS_ERROR12 100262
+#define GLU_NURBS_ERROR13 100263
+#define GLU_NURBS_ERROR14 100264
+#define GLU_NURBS_ERROR15 100265
+#define GLU_NURBS_ERROR16 100266
+#define GLU_NURBS_ERROR17 100267
+#define GLU_NURBS_ERROR18 100268
+#define GLU_NURBS_ERROR19 100269
+#define GLU_NURBS_ERROR20 100270
+#define GLU_NURBS_ERROR21 100271
+#define GLU_NURBS_ERROR22 100272
+#define GLU_NURBS_ERROR23 100273
+#define GLU_NURBS_ERROR24 100274
+#define GLU_NURBS_ERROR25 100275
+#define GLU_NURBS_ERROR26 100276
+#define GLU_NURBS_ERROR27 100277
+#define GLU_NURBS_ERROR28 100278
+#define GLU_NURBS_ERROR29 100279
+#define GLU_NURBS_ERROR30 100280
+#define GLU_NURBS_ERROR31 100281
+#define GLU_NURBS_ERROR32 100282
+#define GLU_NURBS_ERROR33 100283
+#define GLU_NURBS_ERROR34 100284
+#define GLU_NURBS_ERROR35 100285
+#define GLU_NURBS_ERROR36 100286
+#define GLU_NURBS_ERROR37 100287
+
+/* NurbsProperty */
+#define GLU_AUTO_LOAD_MATRIX 100200
+#define GLU_CULLING 100201
+#define GLU_SAMPLING_TOLERANCE 100203
+#define GLU_DISPLAY_MODE 100204
+#define GLU_PARAMETRIC_TOLERANCE 100202
+#define GLU_SAMPLING_METHOD 100205
+#define GLU_U_STEP 100206
+#define GLU_V_STEP 100207
+#define GLU_NURBS_MODE 100160
+#define GLU_NURBS_MODE_EXT 100160
+#define GLU_NURBS_TESSELLATOR 100161
+#define GLU_NURBS_TESSELLATOR_EXT 100161
+#define GLU_NURBS_RENDERER 100162
+#define GLU_NURBS_RENDERER_EXT 100162
+
+/* NurbsSampling */
+#define GLU_OBJECT_PARAMETRIC_ERROR 100208
+#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208
+#define GLU_OBJECT_PATH_LENGTH 100209
+#define GLU_OBJECT_PATH_LENGTH_EXT 100209
+#define GLU_PATH_LENGTH 100215
+#define GLU_PARAMETRIC_ERROR 100216
+#define GLU_DOMAIN_DISTANCE 100217
+
+/* NurbsTrim */
+#define GLU_MAP1_TRIM_2 100210
+#define GLU_MAP1_TRIM_3 100211
+
+/* QuadricDrawStyle */
+#define GLU_POINT 100010
+#define GLU_LINE 100011
+#define GLU_FILL 100012
+#define GLU_SILHOUETTE 100013
+
+/* QuadricCallback */
+/* GLU_ERROR */
+
+/* QuadricNormal */
+#define GLU_SMOOTH 100000
+#define GLU_FLAT 100001
+#define GLU_NONE 100002
+
+/* QuadricOrientation */
+#define GLU_OUTSIDE 100020
+#define GLU_INSIDE 100021
+
+/* TessCallback */
+#define GLU_TESS_BEGIN 100100
+#define GLU_BEGIN 100100
+#define GLU_TESS_VERTEX 100101
+#define GLU_VERTEX 100101
+#define GLU_TESS_END 100102
+#define GLU_END 100102
+#define GLU_TESS_ERROR 100103
+#define GLU_TESS_EDGE_FLAG 100104
+#define GLU_EDGE_FLAG 100104
+#define GLU_TESS_COMBINE 100105
+#define GLU_TESS_BEGIN_DATA 100106
+#define GLU_TESS_VERTEX_DATA 100107
+#define GLU_TESS_END_DATA 100108
+#define GLU_TESS_ERROR_DATA 100109
+#define GLU_TESS_EDGE_FLAG_DATA 100110
+#define GLU_TESS_COMBINE_DATA 100111
+
+/* TessContour */
+#define GLU_CW 100120
+#define GLU_CCW 100121
+#define GLU_INTERIOR 100122
+#define GLU_EXTERIOR 100123
+#define GLU_UNKNOWN 100124
+
+/* TessProperty */
+#define GLU_TESS_WINDING_RULE 100140
+#define GLU_TESS_BOUNDARY_ONLY 100141
+#define GLU_TESS_TOLERANCE 100142
+
+/* TessError */
+#define GLU_TESS_ERROR1 100151
+#define GLU_TESS_ERROR2 100152
+#define GLU_TESS_ERROR3 100153
+#define GLU_TESS_ERROR4 100154
+#define GLU_TESS_ERROR5 100155
+#define GLU_TESS_ERROR6 100156
+#define GLU_TESS_ERROR7 100157
+#define GLU_TESS_ERROR8 100158
+#define GLU_TESS_MISSING_BEGIN_POLYGON 100151
+#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152
+#define GLU_TESS_MISSING_END_POLYGON 100153
+#define GLU_TESS_MISSING_END_CONTOUR 100154
+#define GLU_TESS_COORD_TOO_LARGE 100155
+#define GLU_TESS_NEED_COMBINE_CALLBACK 100156
+
+/* TessWinding */
+#define GLU_TESS_WINDING_ODD 100130
+#define GLU_TESS_WINDING_NONZERO 100131
+#define GLU_TESS_WINDING_POSITIVE 100132
+#define GLU_TESS_WINDING_NEGATIVE 100133
+#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
+
+/*************************************************************/
+
+
+#ifdef __cplusplus
+class GLUnurbs;
+class GLUquadric;
+class GLUtesselator;
+#else
+typedef struct GLUnurbs GLUnurbs;
+typedef struct GLUquadric GLUquadric;
+typedef struct GLUtesselator GLUtesselator;
+#endif
+
+typedef GLUnurbs GLUnurbsObj;
+typedef GLUquadric GLUquadricObj;
+typedef GLUtesselator GLUtesselatorObj;
+typedef GLUtesselator GLUtriangulatorObj;
+
+#define GLU_TESS_MAX_COORD 1.0e150
+
+/* Internal convenience typedefs */
+typedef void (GLAPIENTRYP _GLUfuncptr)();
+
+GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb);
+GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
+GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
+GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad);
+GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
+GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb);
+GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error);
+GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
+GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name);
+GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
+GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
+GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
+GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void);
+GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void);
+GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void);
+GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
+GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
+GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
+GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
+GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
+GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
+GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
+GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
+GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
+GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
+GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
+GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
+GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
+GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
+GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
+GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
+GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
+GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
+GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
+GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
+GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
+GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
+GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
+GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __glu_h__ */
diff --git a/Mesa/inc/glu_mangle.h b/Mesa/inc/glu_mangle.h
new file mode 100644
index 000000000000..9c25aa864c13
--- /dev/null
+++ b/Mesa/inc/glu_mangle.h
@@ -0,0 +1,86 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.0
+ * Copyright (C) 1995-1998 Brian Paul
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#ifndef GLU_MANGLE_H
+#define GLU_MANGLE_H
+
+
+#define gluLookAt mgluLookAt
+#define gluOrtho2D mgluOrtho2D
+#define gluPerspective mgluPerspective
+#define gluPickMatrix mgluPickMatrix
+#define gluProject mgluProject
+#define gluUnProject mgluUnProject
+#define gluErrorString mgluErrorString
+#define gluScaleImage mgluScaleImage
+#define gluBuild1DMipmaps mgluBuild1DMipmaps
+#define gluBuild2DMipmaps mgluBuild2DMipmaps
+#define gluNewQuadric mgluNewQuadric
+#define gluDeleteQuadric mgluDeleteQuadric
+#define gluQuadricDrawStyle mgluQuadricDrawStyle
+#define gluQuadricOrientation mgluQuadricOrientation
+#define gluQuadricNormals mgluQuadricNormals
+#define gluQuadricTexture mgluQuadricTexture
+#define gluQuadricCallback mgluQuadricCallback
+#define gluCylinder mgluCylinder
+#define gluSphere mgluSphere
+#define gluDisk mgluDisk
+#define gluPartialDisk mgluPartialDisk
+#define gluNewNurbsRenderer mgluNewNurbsRenderer
+#define gluDeleteNurbsRenderer mgluDeleteNurbsRenderer
+#define gluLoadSamplingMatrices mgluLoadSamplingMatrices
+#define gluNurbsProperty mgluNurbsProperty
+#define gluGetNurbsProperty mgluGetNurbsProperty
+#define gluBeginCurve mgluBeginCurve
+#define gluEndCurve mgluEndCurve
+#define gluNurbsCurve mgluNurbsCurve
+#define gluBeginSurface mgluBeginSurface
+#define gluEndSurface mgluEndSurface
+#define gluNurbsSurface mgluNurbsSurface
+#define gluBeginTrim mgluBeginTrim
+#define gluEndTrim mgluEndTrim
+#define gluPwlCurve mgluPwlCurve
+#define gluNurbsCallback mgluNurbsCallback
+#define gluNewTess mgluNewTess
+#define gluDeleteTess mgluDeleteTess
+#define gluTessBeginPolygon mgluTessBeginPolygon
+#define gluTessBeginContour mgluTessBeginContour
+#define gluTessVertex mgluTessVertex
+#define gluTessEndPolygon mgluTessEndPolygon
+#define gluTessEndContour mgluTessEndContour
+#define gluTessProperty mgluTessProperty
+#define gluTessNormal mgluTessNormal
+#define gluTessCallback mgluTessCallback
+#define gluGetTessProperty mgluGetTessProperty
+#define gluBeginPolygon mgluBeginPolygon
+#define gluNextContour mgluNextContour
+#define gluEndPolygon mgluEndPolygon
+#define gluGetString mgluGetString
+#define gluBuild1DMipmapLevels mgluBuild1DMipmapLevels
+#define gluBuild2DMipmapLevels mgluBuild2DMipmapLevels
+#define gluBuild3DMipmapLevels mgluBuild3DMipmapLevels
+#define gluBuild3DMipmaps mgluBuild3DMipmaps
+#define gluCheckExtension mgluCheckExtension
+#define gluUnProject4 mgluUnProject4
+#define gluNurbsCallbackData mgluNurbsCallbackData
+#define gluNurbsCallbackDataEXT mgluNurbsCallbackDataEXT
+
+#endif
diff --git a/Mesa/inc/glx.h b/Mesa/inc/glx.h
new file mode 100644
index 000000000000..c91a91823048
--- /dev/null
+++ b/Mesa/inc/glx.h
@@ -0,0 +1,500 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef GLX_H
+#define GLX_H
+
+
+#ifdef __VMS
+#include <GL/vms_x_fix.h>
+# ifdef __cplusplus
+/* VMS Xlib.h gives problems with C++.
+ * this avoids a bunch of trivial warnings */
+#pragma message disable nosimpint
+#endif
+#endif
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#ifdef __VMS
+# ifdef __cplusplus
+#pragma message enable nosimpint
+#endif
+#endif
+#include <GL/gl.h>
+
+
+#if defined(USE_MGL_NAMESPACE)
+#include "glx_mangle.h"
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define GLX_VERSION_1_1 1
+#define GLX_VERSION_1_2 1
+#define GLX_VERSION_1_3 1
+#define GLX_VERSION_1_4 1
+
+#define GLX_EXTENSION_NAME "GLX"
+
+
+
+/*
+ * Tokens for glXChooseVisual and glXGetConfig:
+ */
+#define GLX_USE_GL 1
+#define GLX_BUFFER_SIZE 2
+#define GLX_LEVEL 3
+#define GLX_RGBA 4
+#define GLX_DOUBLEBUFFER 5
+#define GLX_STEREO 6
+#define GLX_AUX_BUFFERS 7
+#define GLX_RED_SIZE 8
+#define GLX_GREEN_SIZE 9
+#define GLX_BLUE_SIZE 10
+#define GLX_ALPHA_SIZE 11
+#define GLX_DEPTH_SIZE 12
+#define GLX_STENCIL_SIZE 13
+#define GLX_ACCUM_RED_SIZE 14
+#define GLX_ACCUM_GREEN_SIZE 15
+#define GLX_ACCUM_BLUE_SIZE 16
+#define GLX_ACCUM_ALPHA_SIZE 17
+
+
+/*
+ * Error codes returned by glXGetConfig:
+ */
+#define GLX_BAD_SCREEN 1
+#define GLX_BAD_ATTRIBUTE 2
+#define GLX_NO_EXTENSION 3
+#define GLX_BAD_VISUAL 4
+#define GLX_BAD_CONTEXT 5
+#define GLX_BAD_VALUE 6
+#define GLX_BAD_ENUM 7
+
+
+/*
+ * GLX 1.1 and later:
+ */
+#define GLX_VENDOR 1
+#define GLX_VERSION 2
+#define GLX_EXTENSIONS 3
+
+
+/*
+ * GLX 1.3 and later:
+ */
+#define GLX_CONFIG_CAVEAT 0x20
+#define GLX_DONT_CARE 0xFFFFFFFF
+#define GLX_X_VISUAL_TYPE 0x22
+#define GLX_TRANSPARENT_TYPE 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
+#define GLX_TRANSPARENT_RED_VALUE 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
+#define GLX_WINDOW_BIT 0x00000001
+#define GLX_PIXMAP_BIT 0x00000002
+#define GLX_PBUFFER_BIT 0x00000004
+#define GLX_AUX_BUFFERS_BIT 0x00000010
+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
+#define GLX_DEPTH_BUFFER_BIT 0x00000020
+#define GLX_STENCIL_BUFFER_BIT 0x00000040
+#define GLX_ACCUM_BUFFER_BIT 0x00000080
+#define GLX_NONE 0x8000
+#define GLX_SLOW_CONFIG 0x8001
+#define GLX_TRUE_COLOR 0x8002
+#define GLX_DIRECT_COLOR 0x8003
+#define GLX_PSEUDO_COLOR 0x8004
+#define GLX_STATIC_COLOR 0x8005
+#define GLX_GRAY_SCALE 0x8006
+#define GLX_STATIC_GRAY 0x8007
+#define GLX_TRANSPARENT_RGB 0x8008
+#define GLX_TRANSPARENT_INDEX 0x8009
+#define GLX_VISUAL_ID 0x800B
+#define GLX_SCREEN 0x800C
+#define GLX_NON_CONFORMANT_CONFIG 0x800D
+#define GLX_DRAWABLE_TYPE 0x8010
+#define GLX_RENDER_TYPE 0x8011
+#define GLX_X_RENDERABLE 0x8012
+#define GLX_FBCONFIG_ID 0x8013
+#define GLX_RGBA_TYPE 0x8014
+#define GLX_COLOR_INDEX_TYPE 0x8015
+#define GLX_MAX_PBUFFER_WIDTH 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
+#define GLX_MAX_PBUFFER_PIXELS 0x8018
+#define GLX_PRESERVED_CONTENTS 0x801B
+#define GLX_LARGEST_PBUFFER 0x801C
+#define GLX_WIDTH 0x801D
+#define GLX_HEIGHT 0x801E
+#define GLX_EVENT_MASK 0x801F
+#define GLX_DAMAGED 0x8020
+#define GLX_SAVED 0x8021
+#define GLX_WINDOW 0x8022
+#define GLX_PBUFFER 0x8023
+#define GLX_PBUFFER_HEIGHT 0x8040
+#define GLX_PBUFFER_WIDTH 0x8041
+#define GLX_RGBA_BIT 0x00000001
+#define GLX_COLOR_INDEX_BIT 0x00000002
+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
+
+
+/*
+ * GLX 1.4 and later:
+ */
+#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/
+#define GLX_SAMPLES 0x186a1 /*100001*/
+
+
+
+typedef struct __GLXcontextRec *GLXContext;
+typedef XID GLXPixmap;
+typedef XID GLXDrawable;
+/* GLX 1.3 and later */
+typedef struct __GLXFBConfigRec *GLXFBConfig;
+typedef XID GLXFBConfigID;
+typedef XID GLXContextID;
+typedef XID GLXWindow;
+typedef XID GLXPbuffer;
+
+
+
+extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
+ int *attribList );
+
+extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
+ GLXContext shareList, Bool direct );
+
+extern void glXDestroyContext( Display *dpy, GLXContext ctx );
+
+extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
+ GLXContext ctx);
+
+extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
+ unsigned long mask );
+
+extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
+
+extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
+ Pixmap pixmap );
+
+extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
+
+extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
+
+extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
+
+extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
+
+extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
+ int attrib, int *value );
+
+extern GLXContext glXGetCurrentContext( void );
+
+extern GLXDrawable glXGetCurrentDrawable( void );
+
+extern void glXWaitGL( void );
+
+extern void glXWaitX( void );
+
+extern void glXUseXFont( Font font, int first, int count, int list );
+
+
+
+/* GLX 1.1 and later */
+extern const char *glXQueryExtensionsString( Display *dpy, int screen );
+
+extern const char *glXQueryServerString( Display *dpy, int screen, int name );
+
+extern const char *glXGetClientString( Display *dpy, int name );
+
+
+/* GLX 1.2 and later */
+extern Display *glXGetCurrentDisplay( void );
+
+
+/* GLX 1.3 and later */
+extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
+ const int *attribList, int *nitems );
+
+extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
+ int attribute, int *value );
+
+extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
+ int *nelements );
+
+extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
+ GLXFBConfig config );
+
+extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
+ Window win, const int *attribList );
+
+extern void glXDestroyWindow( Display *dpy, GLXWindow window );
+
+extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
+ Pixmap pixmap, const int *attribList );
+
+extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
+
+extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
+ const int *attribList );
+
+extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
+
+extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
+ unsigned int *value );
+
+extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
+ int renderType, GLXContext shareList,
+ Bool direct );
+
+extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
+ GLXDrawable read, GLXContext ctx );
+
+extern GLXDrawable glXGetCurrentReadDrawable( void );
+
+extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
+ int *value );
+
+extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
+ unsigned long mask );
+
+extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
+ unsigned long *mask );
+
+
+/* GLX 1.4 and later */
+extern void (*glXGetProcAddress(const GLubyte *procname))( void );
+
+
+#ifndef GLX_GLXEXT_LEGACY
+
+#include <GL/glxext.h>
+
+#else
+
+
+
+/*
+ * ARB 2. GLX_ARB_get_proc_address
+ */
+#ifndef GLX_ARB_get_proc_address
+#define GLX_ARB_get_proc_address 1
+
+typedef void (*__GLXextFuncPtr)(void);
+extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
+
+#endif /* GLX_ARB_get_proc_address */
+
+
+
+#endif /* GLX_GLXEXT_LEGACY */
+
+
+/**
+ ** The following aren't in glxext.h yet.
+ **/
+
+
+/*
+ * ???. GLX_NV_vertex_array_range
+ */
+#ifndef GLX_NV_vertex_array_range
+#define GLX_NV_vertex_array_range
+
+extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+extern void glXFreeMemoryNV(GLvoid *pointer);
+typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
+
+#endif /* GLX_NV_vertex_array_range */
+
+
+/*
+ * ???. GLX_MESA_allocate_memory
+ */
+#ifndef GLX_MESA_allocate_memory
+#define GLX_MESA_allocate_memory 1
+
+extern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
+extern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer);
+extern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer);
+typedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
+typedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer);
+typedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer);
+
+#endif /* GLX_MESA_allocate_memory */
+
+
+/*
+ * ARB ?. GLX_ARB_render_texture
+ * XXX This was never finalized!
+ */
+#ifndef GLX_ARB_render_texture
+#define GLX_ARB_render_texture 1
+
+extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
+extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
+extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
+
+#endif /* GLX_ARB_render_texture */
+
+
+/*
+ * Remove this when glxext.h is updated.
+ */
+#ifndef GLX_NV_float_buffer
+#define GLX_NV_float_buffer 1
+
+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
+
+#endif /* GLX_NV_float_buffer */
+
+
+
+/*
+ * #?. GLX_MESA_swap_frame_usage
+ */
+#ifndef GLX_MESA_swap_frame_usage
+#define GLX_MESA_swap_frame_usage 1
+
+extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
+extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
+extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
+extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
+
+typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
+typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
+typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
+typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
+
+#endif /* GLX_MESA_swap_frame_usage */
+
+
+
+/*
+ * #?. GLX_MESA_swap_control
+ */
+#ifndef GLX_MESA_swap_control
+#define GLX_MESA_swap_control 1
+
+extern int glXSwapIntervalMESA(unsigned int interval);
+extern int glXGetSwapIntervalMESA(void);
+
+typedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
+typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
+
+#endif /* GLX_MESA_swap_control */
+
+
+
+/*
+ * #?. GLX_EXT_texture_from_pixmap
+ * XXX not finished?
+ */
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_EXT_texture_from_pixmap 1
+
+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+#define GLX_Y_INVERTED_EXT 0x20D4
+
+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
+#define GLX_TEXTURE_TARGET_EXT 0x20D6
+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
+
+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+
+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+
+#define GLX_TEXTURE_1D_EXT 0x20DB
+#define GLX_TEXTURE_2D_EXT 0x20DC
+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+
+#define GLX_FRONT_LEFT_EXT 0x20DE
+#define GLX_FRONT_RIGHT_EXT 0x20DF
+#define GLX_BACK_LEFT_EXT 0x20E0
+#define GLX_BACK_RIGHT_EXT 0x20E1
+#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
+#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
+#define GLX_AUX0_EXT 0x20E2
+#define GLX_AUX1_EXT 0x20E3
+#define GLX_AUX2_EXT 0x20E4
+#define GLX_AUX3_EXT 0x20E5
+#define GLX_AUX4_EXT 0x20E6
+#define GLX_AUX5_EXT 0x20E7
+#define GLX_AUX6_EXT 0x20E8
+#define GLX_AUX7_EXT 0x20E9
+#define GLX_AUX8_EXT 0x20EA
+#define GLX_AUX9_EXT 0x20EB
+
+extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
+extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
+
+#endif /* GLX_EXT_texture_from_pixmap */
+
+
+
+
+/*** Should these go here, or in another header? */
+/*
+** GLX Events
+*/
+typedef struct {
+ int event_type; /* GLX_DAMAGED or GLX_SAVED */
+ int draw_type; /* GLX_WINDOW or GLX_PBUFFER */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came for SendEvent request */
+ Display *display; /* display the event was read from */
+ GLXDrawable drawable; /* XID of Drawable */
+ unsigned int buffer_mask; /* mask indicating which buffers are affected */
+ unsigned int aux_buffer; /* which aux buffer was affected */
+ int x, y;
+ int width, height;
+ int count; /* if nonzero, at least this many more */
+} GLXPbufferClobberEvent;
+
+typedef union __GLXEvent {
+ GLXPbufferClobberEvent glxpbufferclobber;
+ long pad[24];
+} GLXEvent;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Mesa/inc/glx_mangle.h b/Mesa/inc/glx_mangle.h
new file mode 100644
index 000000000000..b0d3d39ac8c1
--- /dev/null
+++ b/Mesa/inc/glx_mangle.h
@@ -0,0 +1,81 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef GLX_MANGLE_H
+#define GLX_MANGLE_H
+
+#define glXChooseVisual mglXChooseVisual
+#define glXCreateContext mglXCreateContext
+#define glXDestroyContext mglXDestroyContext
+#define glXMakeCurrent mglXMakeCurrent
+#define glXCopyContext mglXCopyContext
+#define glXSwapBuffers mglXSwapBuffers
+#define glXCreateGLXPixmap mglXCreateGLXPixmap
+#define glXDestroyGLXPixmap mglXDestroyGLXPixmap
+#define glXQueryExtension mglXQueryExtension
+#define glXQueryVersion mglXQueryVersion
+#define glXIsDirect mglXIsDirect
+#define glXGetConfig mglXGetConfig
+#define glXGetCurrentContext mglXGetCurrentContext
+#define glXGetCurrentDrawable mglXGetCurrentDrawable
+#define glXWaitGL mglXWaitGL
+#define glXWaitX mglXWaitX
+#define glXUseXFont mglXUseXFont
+#define glXQueryExtensionsString mglXQueryExtensionsString
+#define glXQueryServerString mglXQueryServerString
+#define glXGetClientString mglXGetClientString
+#define glXCreateGLXPixmapMESA mglXCreateGLXPixmapMESA
+#define glXReleaseBuffersMESA mglXReleaseBuffersMESA
+#define glXCopySubBufferMESA mglXCopySubBufferMESA
+#define glXGetVideoSyncSGI mglXGetVideoSyncSGI
+#define glXWaitVideoSyncSGI mglXWaitVideoSyncSGI
+
+/* GLX 1.2 */
+#define glXGetCurrentDisplay mglXGetCurrentDisplay
+
+/* GLX 1.3 */
+#define glXChooseFBConfig mglXChooseFBConfig
+#define glXGetFBConfigAttrib mglXGetFBConfigAttrib
+#define glXGetFBConfigs mglXGetFBConfigs
+#define glXGetVisualFromFBConfig mglXGetVisualFromFBConfig
+#define glXCreateWindow mglXCreateWindow
+#define glXDestroyWindow mglXDestroyWindow
+#define glXCreatePixmap mglXCreatePixmap
+#define glXDestroyPixmap mglXDestroyPixmap
+#define glXCreatePbuffer mglXCreatePbuffer
+#define glXDestroyPbuffer mglXDestroyPbuffer
+#define glXQueryDrawable mglXQueryDrawable
+#define glXCreateNewContext mglXCreateNewContext
+#define glXMakeContextCurrent mglXMakeContextCurrent
+#define glXGetCurrentReadDrawable mglXGetCurrentReadDrawable
+#define glXQueryContext mglXQueryContext
+#define glXSelectEvent mglXSelectEvent
+#define glXGetSelectedEvent mglXGetSelectedEvent
+
+/* GLX 1.4 */
+#define glXGetProcAddress mglXGetProcAddress
+
+
+#endif
diff --git a/Mesa/inc/glxext.h b/Mesa/inc/glxext.h
new file mode 100644
index 000000000000..930289c05073
--- /dev/null
+++ b/Mesa/inc/glxext.h
@@ -0,0 +1,785 @@
+#ifndef __glxext_h_
+#define __glxext_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+/*************************************************************/
+
+/* Header file version number, required by OpenGL ABI for Linux */
+/* glxext.h last updated 2007/04/21 */
+/* Current version at http://www.opengl.org/registry/ */
+#define GLX_GLXEXT_VERSION 19
+
+#ifndef GLX_VERSION_1_3
+#define GLX_WINDOW_BIT 0x00000001
+#define GLX_PIXMAP_BIT 0x00000002
+#define GLX_PBUFFER_BIT 0x00000004
+#define GLX_RGBA_BIT 0x00000001
+#define GLX_COLOR_INDEX_BIT 0x00000002
+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
+#define GLX_AUX_BUFFERS_BIT 0x00000010
+#define GLX_DEPTH_BUFFER_BIT 0x00000020
+#define GLX_STENCIL_BUFFER_BIT 0x00000040
+#define GLX_ACCUM_BUFFER_BIT 0x00000080
+#define GLX_CONFIG_CAVEAT 0x20
+#define GLX_X_VISUAL_TYPE 0x22
+#define GLX_TRANSPARENT_TYPE 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
+#define GLX_TRANSPARENT_RED_VALUE 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
+#define GLX_DONT_CARE 0xFFFFFFFF
+#define GLX_NONE 0x8000
+#define GLX_SLOW_CONFIG 0x8001
+#define GLX_TRUE_COLOR 0x8002
+#define GLX_DIRECT_COLOR 0x8003
+#define GLX_PSEUDO_COLOR 0x8004
+#define GLX_STATIC_COLOR 0x8005
+#define GLX_GRAY_SCALE 0x8006
+#define GLX_STATIC_GRAY 0x8007
+#define GLX_TRANSPARENT_RGB 0x8008
+#define GLX_TRANSPARENT_INDEX 0x8009
+#define GLX_VISUAL_ID 0x800B
+#define GLX_SCREEN 0x800C
+#define GLX_NON_CONFORMANT_CONFIG 0x800D
+#define GLX_DRAWABLE_TYPE 0x8010
+#define GLX_RENDER_TYPE 0x8011
+#define GLX_X_RENDERABLE 0x8012
+#define GLX_FBCONFIG_ID 0x8013
+#define GLX_RGBA_TYPE 0x8014
+#define GLX_COLOR_INDEX_TYPE 0x8015
+#define GLX_MAX_PBUFFER_WIDTH 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
+#define GLX_MAX_PBUFFER_PIXELS 0x8018
+#define GLX_PRESERVED_CONTENTS 0x801B
+#define GLX_LARGEST_PBUFFER 0x801C
+#define GLX_WIDTH 0x801D
+#define GLX_HEIGHT 0x801E
+#define GLX_EVENT_MASK 0x801F
+#define GLX_DAMAGED 0x8020
+#define GLX_SAVED 0x8021
+#define GLX_WINDOW 0x8022
+#define GLX_PBUFFER 0x8023
+#define GLX_PBUFFER_HEIGHT 0x8040
+#define GLX_PBUFFER_WIDTH 0x8041
+#endif
+
+#ifndef GLX_VERSION_1_4
+#define GLX_SAMPLE_BUFFERS 100000
+#define GLX_SAMPLES 100001
+#endif
+
+#ifndef GLX_ARB_get_proc_address
+#endif
+
+#ifndef GLX_ARB_multisample
+#define GLX_SAMPLE_BUFFERS_ARB 100000
+#define GLX_SAMPLES_ARB 100001
+#endif
+
+#ifndef GLX_ARB_fbconfig_float
+#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
+#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
+#endif
+
+#ifndef GLX_SGIS_multisample
+#define GLX_SAMPLE_BUFFERS_SGIS 100000
+#define GLX_SAMPLES_SGIS 100001
+#endif
+
+#ifndef GLX_EXT_visual_info
+#define GLX_X_VISUAL_TYPE_EXT 0x22
+#define GLX_TRANSPARENT_TYPE_EXT 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
+#define GLX_NONE_EXT 0x8000
+#define GLX_TRUE_COLOR_EXT 0x8002
+#define GLX_DIRECT_COLOR_EXT 0x8003
+#define GLX_PSEUDO_COLOR_EXT 0x8004
+#define GLX_STATIC_COLOR_EXT 0x8005
+#define GLX_GRAY_SCALE_EXT 0x8006
+#define GLX_STATIC_GRAY_EXT 0x8007
+#define GLX_TRANSPARENT_RGB_EXT 0x8008
+#define GLX_TRANSPARENT_INDEX_EXT 0x8009
+#endif
+
+#ifndef GLX_SGI_swap_control
+#endif
+
+#ifndef GLX_SGI_video_sync
+#endif
+
+#ifndef GLX_SGI_make_current_read
+#endif
+
+#ifndef GLX_SGIX_video_source
+#endif
+
+#ifndef GLX_EXT_visual_rating
+#define GLX_VISUAL_CAVEAT_EXT 0x20
+#define GLX_SLOW_VISUAL_EXT 0x8001
+#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
+/* reuse GLX_NONE_EXT */
+#endif
+
+#ifndef GLX_EXT_import_context
+#define GLX_SHARE_CONTEXT_EXT 0x800A
+#define GLX_VISUAL_ID_EXT 0x800B
+#define GLX_SCREEN_EXT 0x800C
+#endif
+
+#ifndef GLX_SGIX_fbconfig
+#define GLX_WINDOW_BIT_SGIX 0x00000001
+#define GLX_PIXMAP_BIT_SGIX 0x00000002
+#define GLX_RGBA_BIT_SGIX 0x00000001
+#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
+#define GLX_DRAWABLE_TYPE_SGIX 0x8010
+#define GLX_RENDER_TYPE_SGIX 0x8011
+#define GLX_X_RENDERABLE_SGIX 0x8012
+#define GLX_FBCONFIG_ID_SGIX 0x8013
+#define GLX_RGBA_TYPE_SGIX 0x8014
+#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
+/* reuse GLX_SCREEN_EXT */
+#endif
+
+#ifndef GLX_SGIX_pbuffer
+#define GLX_PBUFFER_BIT_SGIX 0x00000004
+#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
+#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
+#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
+#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
+#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
+#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
+#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
+#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
+#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
+#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
+#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
+#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
+#define GLX_LARGEST_PBUFFER_SGIX 0x801C
+#define GLX_WIDTH_SGIX 0x801D
+#define GLX_HEIGHT_SGIX 0x801E
+#define GLX_EVENT_MASK_SGIX 0x801F
+#define GLX_DAMAGED_SGIX 0x8020
+#define GLX_SAVED_SGIX 0x8021
+#define GLX_WINDOW_SGIX 0x8022
+#define GLX_PBUFFER_SGIX 0x8023
+#endif
+
+#ifndef GLX_SGI_cushion
+#endif
+
+#ifndef GLX_SGIX_video_resize
+#define GLX_SYNC_FRAME_SGIX 0x00000000
+#define GLX_SYNC_SWAP_SGIX 0x00000001
+#endif
+
+#ifndef GLX_SGIX_dmbuffer
+#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024
+#endif
+
+#ifndef GLX_SGIX_swap_group
+#endif
+
+#ifndef GLX_SGIX_swap_barrier
+#endif
+
+#ifndef GLX_SGIS_blended_overlay
+#define GLX_BLENDED_RGBA_SGIS 0x8025
+#endif
+
+#ifndef GLX_SGIS_shared_multisample
+#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
+#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
+#endif
+
+#ifndef GLX_SUN_get_transparent_index
+#endif
+
+#ifndef GLX_3DFX_multisample
+#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
+#define GLX_SAMPLES_3DFX 0x8051
+#endif
+
+#ifndef GLX_MESA_copy_sub_buffer
+#endif
+
+#ifndef GLX_MESA_pixmap_colormap
+#endif
+
+#ifndef GLX_MESA_release_buffers
+#endif
+
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_3DFX_WINDOW_MODE_MESA 0x1
+#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
+#endif
+
+#ifndef GLX_SGIX_visual_select_group
+#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
+#endif
+
+#ifndef GLX_OML_swap_method
+#define GLX_SWAP_METHOD_OML 0x8060
+#define GLX_SWAP_EXCHANGE_OML 0x8061
+#define GLX_SWAP_COPY_OML 0x8062
+#define GLX_SWAP_UNDEFINED_OML 0x8063
+#endif
+
+#ifndef GLX_OML_sync_control
+#endif
+
+#ifndef GLX_NV_float_buffer
+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
+#endif
+
+#ifndef GLX_SGIX_hyperpipe
+#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
+#define GLX_BAD_HYPERPIPE_SGIX 92
+#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
+#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
+#define GLX_PIPE_RECT_SGIX 0x00000001
+#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
+#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
+#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
+#define GLX_HYPERPIPE_ID_SGIX 0x8030
+#endif
+
+#ifndef GLX_MESA_agp_offset
+#endif
+
+#ifndef GLX_EXT_fbconfig_packed_float
+#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
+#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
+#endif
+
+#ifndef GLX_EXT_framebuffer_sRGB
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
+#endif
+
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+#define GLX_Y_INVERTED_EXT 0x20D4
+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
+#define GLX_TEXTURE_TARGET_EXT 0x20D6
+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+#define GLX_TEXTURE_1D_EXT 0x20DB
+#define GLX_TEXTURE_2D_EXT 0x20DC
+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+#define GLX_FRONT_LEFT_EXT 0x20DE
+#define GLX_FRONT_RIGHT_EXT 0x20DF
+#define GLX_BACK_LEFT_EXT 0x20E0
+#define GLX_BACK_RIGHT_EXT 0x20E1
+#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
+#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
+#define GLX_AUX0_EXT 0x20E2
+#define GLX_AUX1_EXT 0x20E3
+#define GLX_AUX2_EXT 0x20E4
+#define GLX_AUX3_EXT 0x20E5
+#define GLX_AUX4_EXT 0x20E6
+#define GLX_AUX5_EXT 0x20E7
+#define GLX_AUX6_EXT 0x20E8
+#define GLX_AUX7_EXT 0x20E9
+#define GLX_AUX8_EXT 0x20EA
+#define GLX_AUX9_EXT 0x20EB
+#endif
+
+
+/*************************************************************/
+
+#ifndef GLX_ARB_get_proc_address
+typedef void (*__GLXextFuncPtr)(void);
+#endif
+
+#ifndef GLX_SGIX_video_source
+typedef XID GLXVideoSourceSGIX;
+#endif
+
+#ifndef GLX_SGIX_fbconfig
+typedef XID GLXFBConfigIDSGIX;
+typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+#endif
+
+#ifndef GLX_SGIX_pbuffer
+typedef XID GLXPbufferSGIX;
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came for SendEvent request */
+ Display *display; /* display the event was read from */
+ GLXDrawable drawable; /* i.d. of Drawable */
+ int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
+ int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
+ unsigned int mask; /* mask indicating which buffers are affected*/
+ int x, y;
+ int width, height;
+ int count; /* if nonzero, at least this many more */
+} GLXBufferClobberEventSGIX;
+#endif
+
+#ifndef GLEXT_64_TYPES_DEFINED
+/* This code block is duplicated in glxext.h, so must be protected */
+#define GLEXT_64_TYPES_DEFINED
+/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+/* (as used in the GLX_OML_sync_control extension). */
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#include <inttypes.h>
+#elif defined(__sun__) || defined(__digital__)
+#include <inttypes.h>
+#if defined(__STDC__)
+#if defined(__arch64__)
+typedef long int int64_t;
+typedef unsigned long int uint64_t;
+#else
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#endif /* __arch64__ */
+#endif /* __STDC__ */
+#elif defined( __VMS )
+#include <inttypes.h>
+#elif defined(__SCO__) || defined(__USLC__)
+#include <stdint.h>
+#elif defined(__UNIXOS2__) || defined(__SOL64__)
+typedef long int int32_t;
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#elif defined(_WIN32) && defined(__GNUC__)
+#include <stdint.h>
+#elif defined(_WIN32)
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <inttypes.h> /* Fallback option */
+#endif
+#endif
+
+#ifndef GLX_VERSION_1_3
+#define GLX_VERSION_1_3 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *);
+extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *);
+extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *);
+extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig);
+extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *);
+extern void glXDestroyWindow (Display *, GLXWindow);
+extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *);
+extern void glXDestroyPixmap (Display *, GLXPixmap);
+extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *);
+extern void glXDestroyPbuffer (Display *, GLXPbuffer);
+extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *);
+extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool);
+extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext);
+extern GLXDrawable glXGetCurrentReadDrawable (void);
+extern Display * glXGetCurrentDisplay (void);
+extern int glXQueryContext (Display *, GLXContext, int, int *);
+extern void glXSelectEvent (Display *, GLXDrawable, unsigned long);
+extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
+typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
+typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
+typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
+typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
+typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
+typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
+typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
+typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
+typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
+typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
+typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
+typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
+#endif
+
+#ifndef GLX_VERSION_1_4
+#define GLX_VERSION_1_4 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
+#endif
+
+#ifndef GLX_ARB_get_proc_address
+#define GLX_ARB_get_proc_address 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
+#endif
+
+#ifndef GLX_ARB_multisample
+#define GLX_ARB_multisample 1
+#endif
+
+#ifndef GLX_ARB_fbconfig_float
+#define GLX_ARB_fbconfig_float 1
+#endif
+
+#ifndef GLX_SGIS_multisample
+#define GLX_SGIS_multisample 1
+#endif
+
+#ifndef GLX_EXT_visual_info
+#define GLX_EXT_visual_info 1
+#endif
+
+#ifndef GLX_SGI_swap_control
+#define GLX_SGI_swap_control 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXSwapIntervalSGI (int);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
+#endif
+
+#ifndef GLX_SGI_video_sync
+#define GLX_SGI_video_sync 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXGetVideoSyncSGI (unsigned int *);
+extern int glXWaitVideoSyncSGI (int, int, unsigned int *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count);
+typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count);
+#endif
+
+#ifndef GLX_SGI_make_current_read
+#define GLX_SGI_make_current_read 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext);
+extern GLXDrawable glXGetCurrentReadDrawableSGI (void);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
+#endif
+
+#ifndef GLX_SGIX_video_source
+#define GLX_SGIX_video_source 1
+#ifdef _VL_H
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode);
+extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
+typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource);
+#endif /* _VL_H */
+#endif
+
+#ifndef GLX_EXT_visual_rating
+#define GLX_EXT_visual_rating 1
+#endif
+
+#ifndef GLX_EXT_import_context
+#define GLX_EXT_import_context 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Display * glXGetCurrentDisplayEXT (void);
+extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *);
+extern GLXContextID glXGetContextIDEXT (const GLXContext);
+extern GLXContext glXImportContextEXT (Display *, GLXContextID);
+extern void glXFreeContextEXT (Display *, GLXContext);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
+typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value);
+typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
+typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID);
+typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context);
+#endif
+
+#ifndef GLX_SGIX_fbconfig
+#define GLX_SGIX_fbconfig 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *);
+extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *);
+extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap);
+extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool);
+extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX);
+extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
+typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements);
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config);
+typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis);
+#endif
+
+#ifndef GLX_SGIX_pbuffer
+#define GLX_SGIX_pbuffer 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *);
+extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX);
+extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *);
+extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long);
+extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
+typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf);
+typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
+typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask);
+typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask);
+#endif
+
+#ifndef GLX_SGI_cushion
+#define GLX_SGI_cushion 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXCushionSGI (Display *, Window, float);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion);
+#endif
+
+#ifndef GLX_SGIX_video_resize
+#define GLX_SGIX_video_resize 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXBindChannelToWindowSGIX (Display *, int, int, Window);
+extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int);
+extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *);
+extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *);
+extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window);
+typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h);
+typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
+typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
+typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype);
+#endif
+
+#ifndef GLX_SGIX_dmbuffer
+#define GLX_SGIX_dmbuffer 1
+#ifdef _DM_BUFFER_H_
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
+#endif /* _DM_BUFFER_H_ */
+#endif
+
+#ifndef GLX_SGIX_swap_group
+#define GLX_SGIX_swap_group 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member);
+#endif
+
+#ifndef GLX_SGIX_swap_barrier
+#define GLX_SGIX_swap_barrier 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int);
+extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier);
+typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max);
+#endif
+
+#ifndef GLX_SUN_get_transparent_index
+#define GLX_SUN_get_transparent_index 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
+#endif
+
+#ifndef GLX_MESA_copy_sub_buffer
+#define GLX_MESA_copy_sub_buffer 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
+#endif
+
+#ifndef GLX_MESA_pixmap_colormap
+#define GLX_MESA_pixmap_colormap 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
+#endif
+
+#ifndef GLX_MESA_release_buffers
+#define GLX_MESA_release_buffers 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
+#endif
+
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_MESA_set_3dfx_mode 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXSet3DfxModeMESA (int);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode);
+#endif
+
+#ifndef GLX_SGIX_visual_select_group
+#define GLX_SGIX_visual_select_group 1
+#endif
+
+#ifndef GLX_OML_swap_method
+#define GLX_OML_swap_method 1
+#endif
+
+#ifndef GLX_OML_sync_control
+#define GLX_OML_sync_control 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *);
+extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *);
+extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t);
+extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *);
+extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
+typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
+typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
+typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
+#endif
+
+#ifndef GLX_NV_float_buffer
+#define GLX_NV_float_buffer 1
+#endif
+
+#ifndef GLX_SGIX_hyperpipe
+#define GLX_SGIX_hyperpipe 1
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int networkId;
+} GLXHyperpipeNetworkSGIX;
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int channel;
+ unsigned int
+ participationType;
+ int timeSlice;
+} GLXHyperpipeConfigSGIX;
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
+ int destXOrigin, destYOrigin, destWidth, destHeight;
+} GLXPipeRect;
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int XOrigin, YOrigin, maxHeight, maxWidth;
+} GLXPipeRectLimits;
+
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *, int *);
+extern int glXHyperpipeConfigSGIX (Display *, int, int, GLXHyperpipeConfigSGIX *, int *);
+extern GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *, int, int *);
+extern int glXDestroyHyperpipeConfigSGIX (Display *, int);
+extern int glXBindHyperpipeSGIX (Display *, int);
+extern int glXQueryHyperpipeBestAttribSGIX (Display *, int, int, int, void *, void *);
+extern int glXHyperpipeAttribSGIX (Display *, int, int, int, void *);
+extern int glXQueryHyperpipeAttribSGIX (Display *, int, int, int, void *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes);
+typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
+typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes);
+typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
+typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
+typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
+#endif
+
+#ifndef GLX_MESA_agp_offset
+#define GLX_MESA_agp_offset 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern unsigned int glXGetAGPOffsetMESA (const void *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer);
+#endif
+
+#ifndef GLX_EXT_fbconfig_packed_float
+#define GLX_EXT_fbconfig_packed_float 1
+#endif
+
+#ifndef GLX_EXT_framebuffer_sRGB
+#define GLX_EXT_framebuffer_sRGB 1
+#endif
+
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_EXT_texture_from_pixmap 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXBindTexImageEXT (Display *, GLXDrawable, int, const int *);
+extern void glXReleaseTexImageEXT (Display *, GLXDrawable, int);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
+typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Mesa/inc/vms_x_fix.h b/Mesa/inc/vms_x_fix.h
new file mode 100644
index 000000000000..70454e3d9f53
--- /dev/null
+++ b/Mesa/inc/vms_x_fix.h
@@ -0,0 +1,1224 @@
+/***************************************************************************
+ * *
+ * Author : Jouk Jansen (joukj@hrem.nano.tudelft.nl) *
+ * *
+ * Last revision : 31 August 2006 *
+ * *
+ * Repair definitions of Runtime library functions when compiling with *
+ * /name=(as_is) on OpenVMS *
+ * *
+ ***************************************************************************/
+
+#ifndef VMS_X_FIX
+#define VMS_X_FIX
+
+#define decw$_select DECW$_SELECT
+#define DtSaverGetWindows DTSAVERGETWINDOWS
+#define MrmFetchWidget MRMFETCHWIDGET
+#define MrmInitialize MRMINITIALIZE
+#define MrmOpenHierarchy MRMOPENHIERARCHY
+#define MrmRegisterNames MRMREGISTERNAMES
+#define XAddExtension XADDEXTENSION
+#define XAddHosts XADDHOSTS
+#define XAllocClassHint XALLOCCLASSHINT
+#define XAllocColor XALLOCCOLOR
+#define XAllocColorCells XALLOCCOLORCELLS
+#define XAllocIconSize XALLOCICONSIZE
+#define XAllocNamedColor XALLOCNAMEDCOLOR
+#define XAllocSizeHints XALLOCSIZEHINTS
+#define XAllocStandardColormap XALLOCSTANDARDCOLORMAP
+#define XAllocWMHints XALLOCWMHINTS
+#define XAllowEvents XALLOWEVENTS
+#define XAutoRepeatOff XAUTOREPEATOFF
+#define XAutoRepeatOn XAUTOREPEATON
+#define XBaseFontNameListOfFontSet XBASEFONTNAMELISTOFFONTSET
+#define XBell XBELL
+#define XBitmapPad XBITMAPPAD
+#define XBlackPixel XBLACKPIXEL
+#define XBlackPixelOfScreen XBLACKPIXELOFSCREEN
+#define XCellsOfScreen XCELLSOFSCREEN
+#define XChangeActivePointerGrab XCHANGEACTIVEPOINTERGRAB
+#define XChangeGC XCHANGEGC
+#define XChangeKeyboardControl XCHANGEKEYBOARDCONTROL
+#define XChangePointerControl XCHANGEPOINTERCONTROL
+#define XChangeProperty XCHANGEPROPERTY
+#define XChangeWindowAttributes XCHANGEWINDOWATTRIBUTES
+#define XCheckIfEvent XCHECKIFEVENT
+#define XCheckMaskEvent XCHECKMASKEVENT
+#define XCheckTypedEvent XCHECKTYPEDEVENT
+#define XCheckTypedWindowEvent XCHECKTYPEDWINDOWEVENT
+#define XCheckWindowEvent XCHECKWINDOWEVENT
+#define XClearArea XCLEARAREA
+#define XClearWindow XCLEARWINDOW
+#define XClipBox XCLIPBOX
+#define XCloseDisplay XCLOSEDISPLAY
+#define XCloseIM XCLOSEIM
+#define XConfigureWindow XCONFIGUREWINDOW
+#define XConvertSelection XCONVERTSELECTION
+#define XCopyArea XCOPYAREA
+#define XCopyColormapAndFree XCOPYCOLORMAPANDFREE
+#define XCopyGC XCOPYGC
+#define XCopyPlane XCOPYPLANE
+#define XCreateBitmapFromData XCREATEBITMAPFROMDATA
+#define XCreateColormap XCREATECOLORMAP
+#define XCreateFontCursor XCREATEFONTCURSOR
+#define XCreateFontSet XCREATEFONTSET
+#define XCreateGC XCREATEGC
+#define XCreateGlyphCursor XCREATEGLYPHCURSOR
+#define XCreateIC XCREATEIC
+#define XCreateImage XCREATEIMAGE
+#define XCreatePixmap XCREATEPIXMAP
+#define XCreatePixmapCursor XCREATEPIXMAPCURSOR
+#define XCreatePixmapFromBitmapData XCREATEPIXMAPFROMBITMAPDATA
+#define XCreateRegion XCREATEREGION
+#define XCreateSimpleWindow XCREATESIMPLEWINDOW
+#define XCreateWindow XCREATEWINDOW
+#define XDefaultColormap XDEFAULTCOLORMAP
+#define XDefaultColormapOfScreen XDEFAULTCOLORMAPOFSCREEN
+#define XDefaultDepth XDEFAULTDEPTH
+#define XDefaultDepthOfScreen XDEFAULTDEPTHOFSCREEN
+#define XDefaultGC XDEFAULTGC
+#define XDefaultRootWindow XDEFAULTROOTWINDOW
+#define XDefaultScreen XDEFAULTSCREEN
+#define XDefaultScreenOfDisplay XDEFAULTSCREENOFDISPLAY
+#define XDefaultVisual XDEFAULTVISUAL
+#define XDefaultVisualOfScreen XDEFAULTVISUALOFSCREEN
+#define XDefineCursor XDEFINECURSOR
+#define XDeleteContext XDELETECONTEXT
+#define XDeleteProperty XDELETEPROPERTY
+#define XDestroyIC XDESTROYIC
+#define XDestroyRegion XDESTROYREGION
+#define XDestroySubwindows XDESTROYSUBWINDOWS
+#define XDestroyWindow XDESTROYWINDOW
+#define XDisableAccessControl XDISABLEACCESSCONTROL
+#define XDisplayCells XDISPLAYCELLS
+#define XDisplayHeight XDISPLAYHEIGHT
+#define XDisplayKeycodes XDISPLAYKEYCODES
+#define XDisplayName XDISPLAYNAME
+#define XDisplayOfIM XDISPLAYOFIM
+#define XDisplayOfScreen XDISPLAYOFSCREEN
+#define XDisplayString XDISPLAYSTRING
+#define XDisplayWidth XDISPLAYWIDTH
+#define XDoesBackingStore XDOESBACKINGSTORE
+#define XDrawArc XDRAWARC
+#define XDrawArcs XDRAWARCS
+#define XDrawImageString XDRAWIMAGESTRING
+#define XDrawImageString16 XDRAWIMAGESTRING16
+#define XDrawLine XDRAWLINE
+#define XDrawLines XDRAWLINES
+#define XDrawPoint XDRAWPOINT
+#define XDrawPoints XDRAWPOINTS
+#define XDrawRectangle XDRAWRECTANGLE
+#define XDrawRectangles XDRAWRECTANGLES
+#define XDrawSegments XDRAWSEGMENTS
+#define XDrawString XDRAWSTRING
+#define XDrawString16 XDRAWSTRING16
+#define XDrawText XDRAWTEXT
+#define XDrawText16 XDRAWTEXT16
+#define XESetCloseDisplay XESETCLOSEDISPLAY
+#define XEmptyRegion XEMPTYREGION
+#define XEnableAccessControl XENABLEACCESSCONTROL
+#define XEqualRegion XEQUALREGION
+#define XEventsQueued XEVENTSQUEUED
+#define XExtendedMaxRequestSize XEXTENDEDMAXREQUESTSIZE
+#define XExtentsOfFontSet XEXTENTSOFFONTSET
+#define XFetchBuffer XFETCHBUFFER
+#define XFetchBytes XFETCHBYTES
+#define XFetchName XFETCHNAME
+#define XFillArc XFILLARC
+#define XFillArcs XFILLARCS
+#define XFillPolygon XFILLPOLYGON
+#define XFillRectangle XFILLRECTANGLE
+#define XFillRectangles XFILLRECTANGLES
+#define XFilterEvent XFILTEREVENT
+#define XFindContext XFINDCONTEXT
+#define XFlush XFLUSH
+#define XFontsOfFontSet XFONTSOFFONTSET
+#define XForceScreenSaver XFORCESCREENSAVER
+#define XFree XFREE
+#define XFreeColormap XFREECOLORMAP
+#define XFreeColors XFREECOLORS
+#define XFreeCursor XFREECURSOR
+#define XFreeDeviceList XFREEDEVICELIST
+#define XFreeDeviceState XFREEDEVICESTATE
+#define XFreeFont XFREEFONT
+#define XFreeFontInfo XFREEFONTINFO
+#define XFreeFontNames XFREEFONTNAMES
+#define XFreeFontSet XFREEFONTSET
+#define XFreeGC XFREEGC
+#define XFreeModifiermap XFREEMODIFIERMAP
+#define XFreePixmap XFREEPIXMAP
+#define XFreeStringList XFREESTRINGLIST
+#define XGContextFromGC XGCONTEXTFROMGC
+#define XGeometry XGEOMETRY
+#define XGetAtomName XGETATOMNAME
+#define XGetClassHint XGETCLASSHINT
+#define XGetCommand XGETCOMMAND
+#define XGetDefault XGETDEFAULT
+#define XGetErrorDatabaseText XGETERRORDATABASETEXT
+#define XGetErrorText XGETERRORTEXT
+#define XGetExtensionVersion XGETEXTENSIONVERSION
+#define XGetFontProperty XGETFONTPROPERTY
+#define XGetGCValues XGETGCVALUES
+#define XGetGeometry XGETGEOMETRY
+#define XGetICValues XGETICVALUES
+#define XGetIMValues XGETIMVALUES
+#define XGetIconName XGETICONNAME
+#define XGetIconSizes XGETICONSIZES
+#define XGetImage XGETIMAGE
+#define XGetInputFocus XGETINPUTFOCUS
+#define XGetKeyboardControl XGETKEYBOARDCONTROL
+#define XGetKeyboardMapping XGETKEYBOARDMAPPING
+#define XGetModifierMapping XGETMODIFIERMAPPING
+#define XGetMotionEvents XGETMOTIONEVENTS
+#define XGetNormalHints XGETNORMALHINTS
+#define XGetPointerControl XGETPOINTERCONTROL
+#define XGetPointerMapping XGETPOINTERMAPPING
+#define XGetRGBColormaps XGETRGBCOLORMAPS
+#define XGetScreenSaver XGETSCREENSAVER
+#define XGetSelectionOwner XGETSELECTIONOWNER
+#define XGetStandardColormap XGETSTANDARDCOLORMAP
+#define XGetSubImage XGETSUBIMAGE
+#define XGetTextProperty XGETTEXTPROPERTY
+#define XGetVisualInfo XGETVISUALINFO
+#define XGetWMColormapWindows XGETWMCOLORMAPWINDOWS
+#define XGetWMHints XGETWMHINTS
+#define XGetWMIconName XGETWMICONNAME
+#define XGetWMName XGETWMNAME
+#define XGetWMNormalHints XGETWMNORMALHINTS
+#define XGetWindowAttributes XGETWINDOWATTRIBUTES
+#define XGetWindowProperty XGETWINDOWPROPERTY
+#define XGrabButton XGRABBUTTON
+#define XGrabKeyboard XGRABKEYBOARD
+#define XGrabPointer XGRABPOINTER
+#define XGrabServer XGRABSERVER
+#define XHeightMMOfScreen XHEIGHTMMOFSCREEN
+#define XHeightOfScreen XHEIGHTOFSCREEN
+#define XIconifyWindow XICONIFYWINDOW
+#define XIfEvent XIFEVENT
+#define XInitExtension XINITEXTENSION
+#define XInitImage XINITIMAGE
+#define XInstallColormap XINSTALLCOLORMAP
+#define XInternAtom XINTERNATOM
+#define XInternAtoms XINTERNATOMS
+#define XIntersectRegion XINTERSECTREGION
+#define XKeycodeToKeysym XKEYCODETOKEYSYM
+#define XKeysymToKeycode XKEYSYMTOKEYCODE
+#define XKeysymToString XKEYSYMTOSTRING
+#define XKillClient XKILLCLIENT
+#define XListDepths XLISTDEPTHS
+#define XListFonts XLISTFONTS
+#define XListFontsWithInfo XLISTFONTSWITHINFO
+#define XListHosts XLISTHOSTS
+#define XListInputDevices XLISTINPUTDEVICES
+#define XListInstalledColormaps XLISTINSTALLEDCOLORMAPS
+#define XListPixmapFormats XLISTPIXMAPFORMATS
+#define XListProperties XLISTPROPERTIES
+#define XLoadFont XLOADFONT
+#define XLoadQueryFont XLOADQUERYFONT
+#define XLookupColor XLOOKUPCOLOR
+#define XLookupKeysym XLOOKUPKEYSYM
+#define XLookupString XLOOKUPSTRING
+#define XLowerWindow XLOWERWINDOW
+#define XMapRaised XMAPRAISED
+#define XMapSubwindows XMAPSUBWINDOWS
+#define XMapWindow XMAPWINDOW
+#define XMaskEvent XMASKEVENT
+#define XMatchVisualInfo XMATCHVISUALINFO
+#define XMaxRequestSize XMAXREQUESTSIZE
+#define XMissingExtension XMISSINGEXTENSION
+#define XMoveResizeWindow XMOVERESIZEWINDOW
+#define XMoveWindow XMOVEWINDOW
+#define XNextEvent XNEXTEVENT
+#define XNextRequest XNEXTREQUEST
+#define XNoOp XNOOP
+#define XOffsetRegion XOFFSETREGION
+#define XOpenDevice XOPENDEVICE
+#define XOpenDisplay XOPENDISPLAY
+#define XOpenIM XOPENIM
+#define XParseColor XPARSECOLOR
+#define XParseGeometry XPARSEGEOMETRY
+#define XPeekEvent XPEEKEVENT
+#define XPeekIfEvent XPEEKIFEVENT
+#define XPending XPENDING
+#define XPointInRegion XPOINTINREGION
+#define XPolygonRegion XPOLYGONREGION
+#define XPutBackEvent XPUTBACKEVENT
+#define XPutImage XPUTIMAGE
+#define XQLength XQLENGTH
+#define XQueryBestCursor XQUERYBESTCURSOR
+#define XQueryBestStipple XQUERYBESTSTIPPLE
+#define XQueryColor XQUERYCOLOR
+#define XQueryColors XQUERYCOLORS
+#define XQueryDeviceState XQUERYDEVICESTATE
+#define XQueryExtension XQUERYEXTENSION
+#define XQueryFont XQUERYFONT
+#define XQueryKeymap XQUERYKEYMAP
+#define XQueryPointer XQUERYPOINTER
+#define XQueryTree XQUERYTREE
+#define XRaiseWindow XRAISEWINDOW
+#define XReadBitmapFile XREADBITMAPFILE
+#define XRecolorCursor XRECOLORCURSOR
+#define XReconfigureWMWindow XRECONFIGUREWMWINDOW
+#define XRectInRegion XRECTINREGION
+#define XRefreshKeyboardMapping XREFRESHKEYBOARDMAPPING
+#define XRemoveHosts XREMOVEHOSTS
+#define XReparentWindow XREPARENTWINDOW
+#define XResetScreenSaver XRESETSCREENSAVER
+#define XResizeWindow XRESIZEWINDOW
+#define XResourceManagerString XRESOURCEMANAGERSTRING
+#define XRestackWindows XRESTACKWINDOWS
+#define XRotateBuffers XROTATEBUFFERS
+#define XRootWindow XROOTWINDOW
+#define XRootWindowOfScreen XROOTWINDOWOFSCREEN
+#define XSaveContext XSAVECONTEXT
+#define XScreenNumberOfScreen XSCREENNUMBEROFSCREEN
+#define XScreenOfDisplay XSCREENOFDISPLAY
+#define XSelectAsyncEvent XSELECTASYNCEVENT
+#define XSelectAsyncInput XSELECTASYNCINPUT
+#define XSelectExtensionEvent XSELECTEXTENSIONEVENT
+#define XSelectInput XSELECTINPUT
+#define XSendEvent XSENDEVENT
+#define XServerVendor XSERVERVENDOR
+#define XSetArcMode XSETARCMODE
+#define XSetBackground XSETBACKGROUND
+#define XSetClassHint XSETCLASSHINT
+#define XSetClipMask XSETCLIPMASK
+#define XSetClipOrigin XSETCLIPORIGIN
+#define XSetClipRectangles XSETCLIPRECTANGLES
+#define XSetCloseDownMode XSETCLOSEDOWNMODE
+#define XSetCommand XSETCOMMAND
+#define XSetDashes XSETDASHES
+#define XSetErrorHandler XSETERRORHANDLER
+#define XSetExtensionErrorHandler XSETEXTENSIONERRORHANDLER
+#define XSetFillRule XSETFILLRULE
+#define XSetFillStyle XSETFILLSTYLE
+#define XSetFont XSETFONT
+#define XSetForeground XSETFOREGROUND
+#define XSetFunction XSETFUNCTION
+#define XSetGraphicsExposures XSETGRAPHICSEXPOSURES
+#define XSetICFocus XSETICFOCUS
+#define XSetICValues XSETICVALUES
+#define XSetIOErrorHandler XSETIOERRORHANDLER
+#define XSetIconName XSETICONNAME
+#define XSetInputFocus XSETINPUTFOCUS
+#define XSetLineAttributes XSETLINEATTRIBUTES
+#define XSetLocaleModifiers XSETLOCALEMODIFIERS
+#define XSetNormalHints XSETNORMALHINTS
+#define XSetPlaneMask XSETPLANEMASK
+#define XSetRegion XSETREGION
+#define XSetRGBColormaps XSETRGBCOLORMAPS
+#define XSetScreenSaver XSETSCREENSAVER
+#define XSetSelectionOwner XSETSELECTIONOWNER
+#define XSetStandardProperties XSETSTANDARDPROPERTIES
+#define XSetState XSETSTATE
+#define XSetStipple XSETSTIPPLE
+#define XSetSubwindowMode XSETSUBWINDOWMODE
+#define XSetTSOrigin XSETTSORIGIN
+#define XSetTextProperty XSETTEXTPROPERTY
+#define XSetTile XSETTILE
+#define XSetTransientForHint XSETTRANSIENTFORHINT
+#define XSetWMClientMachine XSETWMCLIENTMACHINE
+#define XSetWMColormapWindows XSETWMCOLORMAPWINDOWS
+#define XSetWMHints XSETWMHINTS
+#define XSetWMIconName XSETWMICONNAME
+#define XSetWMName XSETWMNAME
+#define XSetWMNormalHints XSETWMNORMALHINTS
+#define XSetWMProperties XSETWMPROPERTIES
+#define XSetWMProtocols XSETWMPROTOCOLS
+#define XSetWMSizeHints XSETWMSIZEHINTS
+#define XSetWindowBackground XSETWINDOWBACKGROUND
+#define XSetWindowBackgroundPixmap XSETWINDOWBACKGROUNDPIXMAP
+#define XSetWindowBorder XSETWINDOWBORDER
+#define XSetWindowBorderPixmap XSETWINDOWBORDERPIXMAP
+#define XSetWindowBorderWidth XSETWINDOWBORDERWIDTH
+#define XSetWindowColormap XSETWINDOWCOLORMAP
+#define XShapeCombineMask XSHAPECOMBINEMASK
+#define XShapeCombineRectangles XSHAPECOMBINERECTANGLES
+#define XShapeGetRectangles XSHAPEGETRECTANGLES
+#define XShapeQueryExtension XSHAPEQUERYEXTENSION
+#define XShmAttach XSHMATTACH
+#define XShmCreateImage XSHMCREATEIMAGE
+#define XShmCreatePixmap XSHMCREATEPIXMAP
+#define XShmDetach XSHMDETACH
+#define XShmGetEventBase XSHMGETEVENTBASE
+#define XShmPutImage XSHMPUTIMAGE
+#define XShmQueryExtension XSHMQUERYEXTENSION
+#define XShmQueryVersion XSHMQUERYVERSION
+#define XShrinkRegion XSHRINKREGION
+#define XStoreBuffer XSTOREBUFFER
+#define XStoreBytes XSTOREBYTES
+#define XStoreColor XSTORECOLOR
+#define XStoreColors XSTORECOLORS
+#define XStoreName XSTORENAME
+#define XStringListToTextProperty XSTRINGLISTTOTEXTPROPERTY
+#define XStringToKeysym XSTRINGTOKEYSYM
+#define XSubtractRegion XSUBTRACTREGION
+#define XSupportsLocale XSUPPORTSLOCALE
+#define XSync XSYNC
+#define XSynchronize XSYNCHRONIZE
+#define XTextExtents XTEXTEXTENTS
+#define XTextExtents16 XTEXTEXTENTS16
+#define XTextPropertyToStringList XTEXTPROPERTYTOSTRINGLIST
+#define XTextWidth XTEXTWIDTH
+#define XTextWidth16 XTEXTWIDTH16
+#define XTranslateCoordinates XTRANSLATECOORDINATES
+#define XUndefineCursor XUNDEFINECURSOR
+#define XUngrabButton XUNGRABBUTTON
+#define XUngrabKeyboard XUNGRABKEYBOARD
+#define XUngrabPointer XUNGRABPOINTER
+#define XUngrabServer XUNGRABSERVER
+#define XUninstallColormap XUNINSTALLCOLORMAP
+#define XUnionRectWithRegion XUNIONRECTWITHREGION
+#define XUnionRegion XUNIONREGION
+#define XUniqueContext XUNIQUECONTEXT
+#define XUnloadFont XUNLOADFONT
+#define XUnmapWindow XUNMAPWINDOW
+#define XUnsetICFocus XUNSETICFOCUS
+#define XVaCreateNestedList XVACREATENESTEDLIST
+#define XVisualIDFromVisual XVISUALIDFROMVISUAL
+#define XWMGeometry XWMGEOMETRY
+#define XWarpPointer XWARPPOINTER
+#define XWhitePixel XWHITEPIXEL
+#define XWhitePixelOfScreen XWHITEPIXELOFSCREEN
+#define XWidthMMOfScreen XWIDTHMMOFSCREEN
+#define XWidthOfScreen XWIDTHOFSCREEN
+#define XWindowEvent XWINDOWEVENT
+#define XWithdrawWindow XWITHDRAWWINDOW
+#define XXorRegion XXORREGION
+#define XcmsQueryColor XCMSQUERYCOLOR
+#define XdbeAllocateBackBufferName XDBEALLOCATEBACKBUFFERNAME
+#define XdbeFreeVisualInfo XDBEFREEVISUALINFO
+#define XdbeGetVisualInfo XDBEGETVISUALINFO
+#define XdbeQueryExtension XDBEQUERYEXTENSION
+#define XdbeSwapBuffers XDBESWAPBUFFERS
+#define XextAddDisplay XEXTADDDISPLAY
+#define XextFindDisplay XEXTFINDDISPLAY
+#define XextRemoveDisplay XEXTREMOVEDISPLAY
+#define XkbSetDetectableAutoRepeat XKBSETDETECTABLEAUTOREPEAT
+#define XmActivateProtocol XMACTIVATEPROTOCOL
+#define XmAddProtocolCallback XMADDPROTOCOLCALLBACK
+#define XmAddProtocols XMADDPROTOCOLS
+#define XmChangeColor XMCHANGECOLOR
+#define XmClipboardCopy XMCLIPBOARDCOPY
+#define XmClipboardCopyByName XMCLIPBOARDCOPYBYNAME
+#define XmClipboardEndCopy XMCLIPBOARDENDCOPY
+#define XmClipboardEndRetrieve XMCLIPBOARDENDRETRIEVE
+#define XmClipboardInquireCount XMCLIPBOARDINQUIRECOUNT
+#define XmClipboardInquireFormat XMCLIPBOARDINQUIREFORMAT
+#define XmClipboardInquireLength XMCLIPBOARDINQUIRELENGTH
+#define XmClipboardLock XMCLIPBOARDLOCK
+#define XmClipboardRetrieve XMCLIPBOARDRETRIEVE
+#define XmClipboardStartCopy XMCLIPBOARDSTARTCOPY
+#define XmClipboardStartRetrieve XMCLIPBOARDSTARTRETRIEVE
+#define XmClipboardUnlock XMCLIPBOARDUNLOCK
+#define XmCommandError XMCOMMANDERROR
+#define XmCommandGetChild XMCOMMANDGETCHILD
+#define XmCommandSetValue XMCOMMANDSETVALUE
+#define XmCreateArrowButton XMCREATEARROWBUTTON
+#define XmCreateArrowButtonGadget XMCREATEARROWBUTTONGADGET
+#define XmCreateBulletinBoardDialog XMCREATEBULLETINBOARDDIALOG
+#define XmCreateCascadeButton XMCREATECASCADEBUTTON
+#define XmCreateCascadeButtonGadget XMCREATECASCADEBUTTONGADGET
+#define XmCreateDialogShell XMCREATEDIALOGSHELL
+#define XmCreateDragIcon XMCREATEDRAGICON
+#define XmCreateDrawingArea XMCREATEDRAWINGAREA
+#define XmCreateDrawnButton XMCREATEDRAWNBUTTON
+#define XmCreateErrorDialog XMCREATEERRORDIALOG
+#define XmCreateFileSelectionBox XMCREATEFILESELECTIONBOX
+#define XmCreateFileSelectionDialog XMCREATEFILESELECTIONDIALOG
+#define XmCreateForm XMCREATEFORM
+#define XmCreateFormDialog XMCREATEFORMDIALOG
+#define XmCreateFrame XMCREATEFRAME
+#define XmCreateInformationDialog XMCREATEINFORMATIONDIALOG
+#define XmCreateLabel XMCREATELABEL
+#define XmCreateLabelGadget XMCREATELABELGADGET
+#define XmCreateList XMCREATELIST
+#define XmCreateMainWindow XMCREATEMAINWINDOW
+#define XmCreateMenuBar XMCREATEMENUBAR
+#define XmCreateMessageBox XMCREATEMESSAGEBOX
+#define XmCreateMessageDialog XMCREATEMESSAGEDIALOG
+#define XmCreateOptionMenu XMCREATEOPTIONMENU
+#define XmCreatePanedWindow XMCREATEPANEDWINDOW
+#define XmCreatePopupMenu XMCREATEPOPUPMENU
+#define XmCreatePromptDialog XMCREATEPROMPTDIALOG
+#define XmCreatePulldownMenu XMCREATEPULLDOWNMENU
+#define XmCreatePushButton XMCREATEPUSHBUTTON
+#define XmCreatePushButtonGadget XMCREATEPUSHBUTTONGADGET
+#define XmCreateQuestionDialog XMCREATEQUESTIONDIALOG
+#define XmCreateRadioBox XMCREATERADIOBOX
+#define XmCreateRowColumn XMCREATEROWCOLUMN
+#define XmCreateScale XMCREATESCALE
+#define XmCreateScrollBar XMCREATESCROLLBAR
+#define XmCreateScrolledList XMCREATESCROLLEDLIST
+#define XmCreateScrolledText XMCREATESCROLLEDTEXT
+#define XmCreateScrolledWindow XMCREATESCROLLEDWINDOW
+#define XmCreateSelectionDialog XMCREATESELECTIONDIALOG
+#define XmCreateSeparator XMCREATESEPARATOR
+#define XmCreateSeparatorGadget XMCREATESEPARATORGADGET
+#define XmCreateSimpleMenuBar XMCREATESIMPLEMENUBAR
+#define XmCreateTemplateDialog XMCREATETEMPLATEDIALOG
+#define XmCreateText XMCREATETEXT
+#define XmCreateTextField XMCREATETEXTFIELD
+#define XmCreateToggleButton XMCREATETOGGLEBUTTON
+#define XmCreateToggleButtonGadget XMCREATETOGGLEBUTTONGADGET
+#define XmCreateWarningDialog XMCREATEWARNINGDIALOG
+#define XmCvtCTToXmString XMCVTCTTOXMSTRING
+#define XmDestroyPixmap XMDESTROYPIXMAP
+#define XmDragStart XMDRAGSTART
+#define XmDropSiteRegister XMDROPSITEREGISTER
+#define XmDropSiteUnregister XMDROPSITEUNREGISTER
+#define XmDropSiteUpdate XMDROPSITEUPDATE
+#define XmDropTransferStart XMDROPTRANSFERSTART
+#define XmFileSelectionBoxGetChild XMFILESELECTIONBOXGETCHILD
+#define XmFileSelectionDoSearch XMFILESELECTIONDOSEARCH
+#define XmFontListAppendEntry XMFONTLISTAPPENDENTRY
+#define XmFontListCopy XMFONTLISTCOPY
+#define XmFontListCreate XMFONTLISTCREATE
+#define XmFontListEntryCreate XMFONTLISTENTRYCREATE
+#define XmFontListEntryFree XMFONTLISTENTRYFREE
+#define XmFontListEntryGetFont XMFONTLISTENTRYGETFONT
+#define XmFontListEntryGetTag XMFONTLISTENTRYGETTAG
+#define XmFontListEntryLoad XMFONTLISTENTRYLOAD
+#define XmFontListFree XMFONTLISTFREE
+#define XmFontListFreeFontContext XMFONTLISTFREEFONTCONTEXT
+#define XmFontListGetNextFont XMFONTLISTGETNEXTFONT
+#define XmFontListInitFontContext XMFONTLISTINITFONTCONTEXT
+#define XmFontListNextEntry XMFONTLISTNEXTENTRY
+#define XmGetColors XMGETCOLORS
+#define XmGetColorCalculation XMGETCOLORCALCULATION
+#define XmGetFocusWidget XMGETFOCUSWIDGET
+#define XmGetMenuCursor XMGETMENUCURSOR
+#define XmGetPixmap XMGETPIXMAP
+#define XmGetPixmapByDepth XMGETPIXMAPBYDEPTH
+#define XmGetTearOffControl XMGETTEAROFFCONTROL
+#define XmGetXmDisplay XMGETXMDISPLAY
+#define XmImMbLookupString XMIMMBLOOKUPSTRING
+#define XmImRegister XMIMREGISTER
+#define XmImSetFocusValues XMIMSETFOCUSVALUES
+#define XmImSetValues XMIMSETVALUES
+#define XmImUnregister XMIMUNREGISTER
+#define XmImUnsetFocus XMIMUNSETFOCUS
+#define XmInstallImage XMINSTALLIMAGE
+#define XmInternAtom XMINTERNATOM
+#define XmIsMotifWMRunning XMISMOTIFWMRUNNING
+#define XmListAddItem XMLISTADDITEM
+#define XmListAddItemUnselected XMLISTADDITEMUNSELECTED
+#define XmListAddItems XMLISTADDITEMS
+#define XmListAddItemsUnselected XMLISTADDITEMSUNSELECTED
+#define XmListDeleteAllItems XMLISTDELETEALLITEMS
+#define XmListDeleteItem XMLISTDELETEITEM
+#define XmListDeleteItemsPos XMLISTDELETEITEMSPOS
+#define XmListDeletePos XMLISTDELETEPOS
+#define XmListDeselectAllItems XMLISTDESELECTALLITEMS
+#define XmListDeselectPos XMLISTDESELECTPOS
+#define XmListGetKbdItemPos XMLISTGETKBDITEMPOS
+#define XmListGetMatchPos XMLISTGETMATCHPOS
+#define XmListGetSelectedPos XMLISTGETSELECTEDPOS
+#define XmListItemExists XMLISTITEMEXISTS
+#define XmListItemPos XMLISTITEMPOS
+#define XmListPosSelected XMLISTPOSSELECTED
+#define XmListReplaceItems XMLISTREPLACEITEMS
+#define XmListReplaceItemsPos XMLISTREPLACEITEMSPOS
+#define XmListSelectItem XMLISTSELECTITEM
+#define XmListSelectPos XMLISTSELECTPOS
+#define XmListSetBottomPos XMLISTSETBOTTOMPOS
+#define XmListSetItem XMLISTSETITEM
+#define XmListSetKbdItemPos XMLISTSETKBDITEMPOS
+#define XmListSetPos XMLISTSETPOS
+#define XmMainWindowSetAreas XMMAINWINDOWSETAREAS
+#define XmMenuPosition XMMENUPOSITION
+#define XmMessageBoxGetChild XMMESSAGEBOXGETCHILD
+#define XmOptionButtonGadget XMOPTIONBUTTONGADGET
+#define XmOptionLabelGadget XMOPTIONLABELGADGET
+#define XmProcessTraversal XMPROCESSTRAVERSAL
+#define XmQmotif XMQMOTIF
+#define XmRemoveProtocolCallback XMREMOVEPROTOCOLCALLBACK
+#define XmRemoveProtocols XMREMOVEPROTOCOLS
+#define XmRemoveTabGroup XMREMOVETABGROUP
+#define XmRepTypeGetId XMREPTYPEGETID
+#define XmRepTypeGetRecord XMREPTYPEGETRECORD
+#define XmRepTypeInstallTearOffModelCon XMREPTYPEINSTALLTEAROFFMODELCON
+#define XmRepTypeRegister XMREPTYPEREGISTER
+#define XmRepTypeValidValue XMREPTYPEVALIDVALUE
+#define XmScrollBarGetValues XMSCROLLBARGETVALUES
+#define XmScrollBarSetValues XMSCROLLBARSETVALUES
+#define XmScrolledWindowSetAreas XMSCROLLEDWINDOWSETAREAS
+#define XmSelectionBoxGetChild XMSELECTIONBOXGETCHILD
+#define XmSetColorCalculation XMSETCOLORCALCULATION
+#define XmStringByteCompare XMSTRINGBYTECOMPARE
+#define XmStringCompare XMSTRINGCOMPARE
+#define XmStringConcat XMSTRINGCONCAT
+#define XmStringCopy XMSTRINGCOPY
+#define XmStringCreate XMSTRINGCREATE
+#define XmStringCreateLocalized XMSTRINGCREATELOCALIZED
+#define XmStringCreateLtoR XMSTRINGCREATELTOR
+#define XmStringCreateSimple XMSTRINGCREATESIMPLE
+#define XmStringDraw XMSTRINGDRAW
+#define XmStringDrawUnderline XMSTRINGDRAWUNDERLINE
+#define XmStringExtent XMSTRINGEXTENT
+#define XmStringFree XMSTRINGFREE
+#define XmStringFreeContext XMSTRINGFREECONTEXT
+#define XmStringGetLtoR XMSTRINGGETLTOR
+#define XmStringGetNextComponent XMSTRINGGETNEXTCOMPONENT
+#define XmStringGetNextSegment XMSTRINGGETNEXTSEGMENT
+#define XmStringInitContext XMSTRINGINITCONTEXT
+#define XmStringLength XMSTRINGLENGTH
+#define XmStringLtoRCreate XMSTRINGLTORCREATE
+#define XmStringNConcat XMSTRINGNCONCAT
+#define XmStringSegmentCreate XMSTRINGSEGMENTCREATE
+#define XmStringSeparatorCreate XMSTRINGSEPARATORCREATE
+#define XmStringWidth XMSTRINGWIDTH
+#define XmTextClearSelection XMTEXTCLEARSELECTION
+#define XmTextCopy XMTEXTCOPY
+#define XmTextCut XMTEXTCUT
+#define XmTextFieldClearSelection XMTEXTFIELDCLEARSELECTION
+#define XmTextFieldCopy XMTEXTFIELDCOPY
+#define XmTextFieldCut XMTEXTFIELDCUT
+#define XmTextFieldGetEditable XMTEXTFIELDGETEDITABLE
+#define XmTextFieldGetInsertionPosition XMTEXTFIELDGETINSERTIONPOSITION
+#define XmTextFieldGetLastPosition XMTEXTFIELDGETLASTPOSITION
+#define XmTextFieldGetMaxLength XMTEXTFIELDGETMAXLENGTH
+#define XmTextFieldGetSelection XMTEXTFIELDGETSELECTION
+#define XmTextFieldGetSelectionPosition XMTEXTFIELDGETSELECTIONPOSITION
+#define XmTextFieldGetString XMTEXTFIELDGETSTRING
+#define XmTextFieldInsert XMTEXTFIELDINSERT
+#define XmTextFieldPaste XMTEXTFIELDPASTE
+#define XmTextFieldRemove XMTEXTFIELDREMOVE
+#define XmTextFieldReplace XMTEXTFIELDREPLACE
+#define XmTextFieldSetAddMode XMTEXTFIELDSETADDMODE
+#define XmTextFieldSetHighlight XMTEXTFIELDSETHIGHLIGHT
+#define XmTextFieldSetInsertionPosition XMTEXTFIELDSETINSERTIONPOSITION
+#define XmTextFieldSetMaxLength XMTEXTFIELDSETMAXLENGTH
+#define XmTextFieldSetSelection XMTEXTFIELDSETSELECTION
+#define XmTextFieldSetString XMTEXTFIELDSETSTRING
+#define XmTextFieldShowPosition XMTEXTFIELDSHOWPOSITION
+#define XmTextGetCursorPosition XMTEXTGETCURSORPOSITION
+#define XmTextGetEditable XMTEXTGETEDITABLE
+#define XmTextGetInsertionPosition XMTEXTGETINSERTIONPOSITION
+#define XmTextGetLastPosition XMTEXTGETLASTPOSITION
+#define XmTextGetMaxLength XMTEXTGETMAXLENGTH
+#define XmTextGetSelection XMTEXTGETSELECTION
+#define XmTextGetSelectionPosition XMTEXTGETSELECTIONPOSITION
+#define XmTextGetString XMTEXTGETSTRING
+#define XmTextInsert XMTEXTINSERT
+#define XmTextPaste XMTEXTPASTE
+#define XmTextPosToXY XMTEXTPOSTOXY
+#define XmTextRemove XMTEXTREMOVE
+#define XmTextReplace XMTEXTREPLACE
+#define XmTextSetCursorPosition XMTEXTSETCURSORPOSITION
+#define XmTextSetEditable XMTEXTSETEDITABLE
+#define XmTextSetHighlight XMTEXTSETHIGHLIGHT
+#define XmTextSetInsertionPosition XMTEXTSETINSERTIONPOSITION
+#define XmTextSetSelection XMTEXTSETSELECTION
+#define XmTextSetString XMTEXTSETSTRING
+#define XmTextSetTopCharacter XMTEXTSETTOPCHARACTER
+#define XmTextShowPosition XMTEXTSHOWPOSITION
+#define XmToggleButtonGadgetGetState XMTOGGLEBUTTONGADGETGETSTATE
+#define XmToggleButtonGadgetSetState XMTOGGLEBUTTONGADGETSETSTATE
+#define XmToggleButtonGetState XMTOGGLEBUTTONGETSTATE
+#define XmToggleButtonSetState XMTOGGLEBUTTONSETSTATE
+#define XmUninstallImage XMUNINSTALLIMAGE
+#define XmUpdateDisplay XMUPDATEDISPLAY
+#define XmVaCreateSimpleRadioBox XMVACREATESIMPLERADIOBOX
+#define XmbDrawString XMBDRAWSTRING
+#define XmbLookupString XMBLOOKUPSTRING
+#define XmbResetIC XMBRESETIC
+#define XmbSetWMProperties XMBSETWMPROPERTIES
+#define XmbTextEscapement XMBTEXTESCAPEMENT
+#define XmbTextExtents XMBTEXTEXTENTS
+#define XmbTextListToTextProperty XMBTEXTLISTTOTEXTPROPERTY
+#define XmbTextPropertyToTextList XMBTEXTPROPERTYTOTEXTLIST
+#define XmbufCreateBuffers XMBUFCREATEBUFFERS
+#define XmbufDestroyBuffers XMBUFDESTROYBUFFERS
+#define XmbufDisplayBuffers XMBUFDISPLAYBUFFERS
+#define XmbufQueryExtension XMBUFQUERYEXTENSION
+#define Xmemory_free XMEMORY_FREE
+#define Xmemory_malloc XMEMORY_MALLOC
+#define XmuClientWindow XMUCLIENTWINDOW
+#define XmuConvertStandardSelection XMUCONVERTSTANDARDSELECTION
+#define XmuCvtStringToBitmap XMUCVTSTRINGTOBITMAP
+#define XmuInternAtom XMUINTERNATOM
+#define XmuInternStrings XMUINTERNSTRINGS
+#define XmuLookupStandardColormap XMULOOKUPSTANDARDCOLORMAP
+#define XmuPrintDefaultErrorMessage XMUPRINTDEFAULTERRORMESSAGE
+#define XrmCombineDatabase XRMCOMBINEDATABASE
+#define XrmCombineFileDatabase XRMCOMBINEFILEDATABASE
+#define XrmDestroyDatabase XRMDESTROYDATABASE
+#define XrmGetDatabase XRMGETDATABASE
+#define XrmGetFileDatabase XRMGETFILEDATABASE
+#define XrmGetResource XRMGETRESOURCE
+#define XrmGetStringDatabase XRMGETSTRINGDATABASE
+#define XrmInitialize XRMINITIALIZE
+#define XrmMergeDatabases XRMMERGEDATABASES
+#define XrmParseCommand XRMPARSECOMMAND
+#define XrmPermStringToQuark XRMPERMSTRINGTOQUARK
+#define XrmPutFileDatabase XRMPUTFILEDATABASE
+#define XrmPutLineResource XRMPUTLINERESOURCE
+#define XrmPutStringResource XRMPUTSTRINGRESOURCE
+#define XrmQGetResource XRMQGETRESOURCE
+#define XrmQPutStringResource XRMQPUTSTRINGRESOURCE
+#define XrmQuarkToString XRMQUARKTOSTRING
+#define XrmSetDatabase XRMSETDATABASE
+#define XrmStringToBindingQuarkList XRMSTRINGTOBINDINGQUARKLIST
+#define XrmStringToQuark XRMSTRINGTOQUARK
+#define XtAddCallback XTADDCALLBACK
+#define XtAddCallbacks XTADDCALLBACKS
+#define XtAddConverter XTADDCONVERTER
+#define XtAddEventHandler XTADDEVENTHANDLER
+#define XtAddExposureToRegion XTADDEXPOSURETOREGION
+#define XtAddGrab XTADDGRAB
+#define XtAddRawEventHandler XTADDRAWEVENTHANDLER
+#define XtAllocateGC XTALLOCATEGC
+#define XtAppAddActions XTAPPADDACTIONS
+#define XtAppAddInput XTAPPADDINPUT
+#define XtAppAddTimeOut XTAPPADDTIMEOUT
+#define XtAppAddWorkProc XTAPPADDWORKPROC
+#define XtAppCreateShell XTAPPCREATESHELL
+#define XtAppError XTAPPERROR
+#define XtAppErrorMsg XTAPPERRORMSG
+#define XtAppGetErrorDatabase XTAPPGETERRORDATABASE
+#define XtAppGetErrorDatabaseText XTAPPGETERRORDATABASETEXT
+#define XtAppSetErrorMsgHandler XTAPPSETERRORMSGHANDLER
+#define XtAppInitialize XTAPPINITIALIZE
+#define XtAppMainLoop XTAPPMAINLOOP
+#define XtAppNextEvent XTAPPNEXTEVENT
+#define XtAppPeekEvent XTAPPPEEKEVENT
+#define XtAppPending XTAPPPENDING
+#define XtAppProcessEvent XTAPPPROCESSEVENT
+#define XtAppSetErrorHandler XTAPPSETERRORHANDLER
+#define XtAppSetFallbackResources XTAPPSETFALLBACKRESOURCES
+#define XtAppSetTypeConverter XTAPPSETTYPECONVERTER
+#define XtAppSetWarningHandler XTAPPSETWARNINGHANDLER
+#define XtAppWarningMsg XTAPPWARNINGMSG
+#define XtAppSetWarningMsgHandler XTAPPSETWARNINGMSGHANDLER
+#define XtAppWarning XTAPPWARNING
+#define XtAugmentTranslations XTAUGMENTTRANSLATIONS
+#define XtCallActionProc XTCALLACTIONPROC
+#define XtCallCallbackList XTCALLCALLBACKLIST
+#define XtCallCallbacks XTCALLCALLBACKS
+#define XtCallConverter XTCALLCONVERTER
+#define XtCalloc XTCALLOC
+#ifndef NOXTDISPLAY
+#define XtClass XTCLASS
+#endif
+#define XtCloseDisplay XTCLOSEDISPLAY
+#define XtConfigureWidget XTCONFIGUREWIDGET
+#define XtConvert XTCONVERT
+#define XtConvertAndStore XTCONVERTANDSTORE
+#define XtCreateApplicationContext XTCREATEAPPLICATIONCONTEXT
+#define XtCreateManagedWidget XTCREATEMANAGEDWIDGET
+#define XtCreatePopupShell XTCREATEPOPUPSHELL
+#define XtCreateWidget XTCREATEWIDGET
+#define XtCreateWindow XTCREATEWINDOW
+#define XtCvtStringToFont XTCVTSTRINGTOFONT
+#define XtDatabase XTDATABASE
+#define XtDestroyApplicationContext XTDESTROYAPPLICATIONCONTEXT
+#define XtDestroyWidget XTDESTROYWIDGET
+#define XtDisownSelection XTDISOWNSELECTION
+#define XtDispatchEvent XTDISPATCHEVENT
+#ifndef NOXTDISPLAY
+#define XtDisplay XTDISPLAY
+#endif
+#define XtDisplayInitialize XTDISPLAYINITIALIZE
+#define XtDisplayOfObject XTDISPLAYOFOBJECT
+#define XtDisplayStringConvWarning XTDISPLAYSTRINGCONVWARNING
+#define XtDisplayToApplicationContext XTDISPLAYTOAPPLICATIONCONTEXT
+#define XtError XTERROR
+#define XtErrorMsg XTERRORMSG
+#define XtFree XTFREE
+#define XtGetActionKeysym XTGETACTIONKEYSYM
+#define XtGetActionList XTGETACTIONLIST
+#define XtGetApplicationNameAndClass XTGETAPPLICATIONNAMEANDCLASS
+#define XtGetApplicationResources XTGETAPPLICATIONRESOURCES
+#define XtGetClassExtension XTGETCLASSEXTENSION
+#define XtGetConstraintResourceList XTGETCONSTRAINTRESOURCELIST
+#define XtGetGC XTGETGC
+#define XtGetMultiClickTime XTGETMULTICLICKTIME
+#define XtGetResourceList XTGETRESOURCELIST
+#define XtGetSelectionValue XTGETSELECTIONVALUE
+#define XtGetSelectionValues XTGETSELECTIONVALUES
+#define XtGetSubresources XTGETSUBRESOURCES
+#define XtGetValues XTGETVALUES
+#define XtGrabButton XTGRABBUTTON
+#define XtGrabKeyboard XTGRABKEYBOARD
+#define XtGrabPointer XTGRABPOINTER
+#define XtHasCallbacks XTHASCALLBACKS
+#define XtInitialize XTINITIALIZE
+#define XtInitializeWidgetClass XTINITIALIZEWIDGETCLASS
+#define XtInsertEventHandler XTINSERTEVENTHANDLER
+#define XtInsertRawEventHandler XTINSERTRAWEVENTHANDLER
+#define XtInstallAccelerators XTINSTALLACCELERATORS
+#define XtIsManaged XTISMANAGED
+#define XtIsObject XTISOBJECT
+#ifndef NOXTDISPLAY
+#define XtIsRealized XTISREALIZED
+#endif
+#define XtIsSensitive XTISSENSITIVE
+#define XtIsSubclass XTISSUBCLASS
+#define XtLastTimestampProcessed XTLASTTIMESTAMPPROCESSED
+#define XtMainLoop XTMAINLOOP
+#define XtMakeGeometryRequest XTMAKEGEOMETRYREQUEST
+#define XtMakeResizeRequest XTMAKERESIZEREQUEST
+#define XtMalloc XTMALLOC
+#define XtManageChild XTMANAGECHILD
+#define XtManageChildren XTMANAGECHILDREN
+#define XtMergeArgLists XTMERGEARGLISTS
+#define XtMoveWidget XTMOVEWIDGET
+#define XtName XTNAME
+#define XtNameToWidget XTNAMETOWIDGET
+#define XtOpenApplication XTOPENAPPLICATION
+#define XtOpenDisplay XTOPENDISPLAY
+#define XtOverrideTranslations XTOVERRIDETRANSLATIONS
+#define XtOwnSelection XTOWNSELECTION
+#ifndef NOXTDISPLAY
+#define XtParent XTPARENT
+#endif
+#define XtParseAcceleratorTable XTPARSEACCELERATORTABLE
+#define XtParseTranslationTable XTPARSETRANSLATIONTABLE
+#define XtPopdown XTPOPDOWN
+#define XtPopup XTPOPUP
+#define XtPopupSpringLoaded XTPOPUPSPRINGLOADED
+#define XtQueryGeometry XTQUERYGEOMETRY
+#define XtRealizeWidget XTREALIZEWIDGET
+#define XtRealloc XTREALLOC
+#define XtRegisterDrawable _XTREGISTERWINDOW
+#define XtRegisterGrabAction XTREGISTERGRABACTION
+#define XtReleaseGC XTRELEASEGC
+#define XtRemoveAllCallbacks XTREMOVEALLCALLBACKS
+#define XtRemoveCallback XTREMOVECALLBACK
+#define XtRemoveEventHandler XTREMOVEEVENTHANDLER
+#define XtRemoveGrab XTREMOVEGRAB
+#define XtRemoveInput XTREMOVEINPUT
+#define XtRemoveTimeOut XTREMOVETIMEOUT
+#define XtRemoveWorkProc XTREMOVEWORKPROC
+#define XtResizeWidget XTRESIZEWIDGET
+#define XtResolvePathname XTRESOLVEPATHNAME
+#ifndef NOXTDISPLAY
+#define XtScreen XTSCREEN
+#endif
+#define XtScreenDatabase XTSCREENDATABASE
+#define XtScreenOfObject XTSCREENOFOBJECT
+#define XtSessionReturnToken XTSESSIONRETURNTOKEN
+#define XtSetErrorHandler XTSETERRORHANDLER
+#define XtSetKeyboardFocus XTSETKEYBOARDFOCUS
+#define XtSetLanguageProc XTSETLANGUAGEPROC
+#define XtSetMappedWhenManaged XTSETMAPPEDWHENMANAGED
+#define XtSetSensitive XTSETSENSITIVE
+#define XtSetTypeConverter XTSETTYPECONVERTER
+#define XtSetValues XTSETVALUES
+#define XtShellStrings XTSHELLSTRINGS
+#define XtStringConversionWarning XTSTRINGCONVERSIONWARNING
+#define XtStrings XTSTRINGS
+#define XtToolkitInitialize XTTOOLKITINITIALIZE
+#define XtTranslateCoords XTTRANSLATECOORDS
+#define XtTranslateKeycode XTTRANSLATEKEYCODE
+#define XtUngrabButton XTUNGRABBUTTON
+#define XtUngrabKeyboard XTUNGRABKEYBOARD
+#define XtUngrabPointer XTUNGRABPOINTER
+#define XtUnmanageChild XTUNMANAGECHILD
+#define XtUnmanageChildren XTUNMANAGECHILDREN
+#define XtUnrealizeWidget XTUNREALIZEWIDGET
+#define XtUnregisterDrawable _XTUNREGISTERWINDOW
+#define XtVaAppCreateShell XTVAAPPCREATESHELL
+#define XtVaCreateManagedWidget XTVACREATEMANAGEDWIDGET
+#define XtVaCreatePopupShell XTVACREATEPOPUPSHELL
+#define XtVaCreateWidget XTVACREATEWIDGET
+#define XtVaGetApplicationResources XTVAGETAPPLICATIONRESOURCES
+#define XtVaGetValues XTVAGETVALUES
+#define XtVaSetValues XTVASETVALUES
+#define XtWarning XTWARNING
+#define XtWarningMsg XTWARNINGMSG
+#define XtWidgetToApplicationContext XTWIDGETTOAPPLICATIONCONTEXT
+#ifndef NOXTDISPLAY
+#define XtWindow XTWINDOW
+#endif
+#define XtWindowOfObject XTWINDOWOFOBJECT
+#define XtWindowToWidget XTWINDOWTOWIDGET
+#define XwcDrawImageString XWCDRAWIMAGESTRING
+#define XwcDrawString XWCDRAWSTRING
+#define XwcFreeStringList XWCFREESTRINGLIST
+#define XwcTextEscapement XWCTEXTESCAPEMENT
+#define XwcTextExtents XWCTEXTEXTENTS
+#define XwcTextListToTextProperty XWCTEXTLISTTOTEXTPROPERTY
+#define XwcLookupString XWCLOOKUPSTRING
+#define XwcTextPropertyToTextList XWCTEXTPROPERTYTOTEXTLIST
+#define _XAllocTemp _XALLOCTEMP
+#define _XDeqAsyncHandler _XDEQASYNCHANDLER
+#define _XEatData _XEATDATA
+#define _XFlush _XFLUSH
+#define _XFreeTemp _XFREETEMP
+#define _XGetAsyncReply _XGETASYNCREPLY
+#define _XInitImageFuncPtrs _XINITIMAGEFUNCPTRS
+#define _XRead _XREAD
+#define _XReadPad _XREADPAD
+#define _XRegisterFilterByType _XREGISTERFILTERBYTYPE
+#define _XReply _XREPLY
+#define _XSend _XSEND
+#define _XUnregisterFilter _XUNREGISTERFILTER
+#define _XVIDtoVisual _XVIDTOVISUAL
+#define _XmBottomShadowColorDefault _XMBOTTOMSHADOWCOLORDEFAULT
+#define _XmClearBorder _XMCLEARBORDER
+#define _XmConfigureObject _XMCONFIGUREOBJECT
+#define _XmDestroyParentCallback _XMDESTROYPARENTCALLBACK
+#define _XmDrawArrow _XMDRAWARROW
+#define _XmDrawShadows _XMDRAWSHADOWS
+#define _XmFontListGetDefaultFont _XMFONTLISTGETDEFAULTFONT
+#define _XmFromHorizontalPixels _XMFROMHORIZONTALPIXELS
+#define _XmFromVerticalPixels _XMFROMVERTICALPIXELS
+#define _XmGetClassExtensionPtr _XMGETCLASSEXTENSIONPTR
+#define _XmGetDefaultFontList _XMGETDEFAULTFONTLIST
+#define _XmGetTextualDragIcon _XMGETTEXTUALDRAGICON
+#define _XmGetWidgetExtData _XMGETWIDGETEXTDATA
+#define _XmGrabKeyboard _XMGRABKEYBOARD
+#define _XmGrabPointer _XMGRABPOINTER
+#define _XmInheritClass _XMINHERITCLASS
+#define _XmInputForGadget _XMINPUTFORGADGET
+#define _XmInputInGadget _XMINPUTINGADGET
+#define _XmMakeGeometryRequest _XMMAKEGEOMETRYREQUEST
+#define _XmMenuPopDown _XMMENUPOPDOWN
+#define _XmMoveObject _XMMOVEOBJECT
+#define _XmNavigChangeManaged _XMNAVIGCHANGEMANAGED
+#define _XmOSBuildFileList _XMOSBUILDFILELIST
+#define _XmOSFileCompare _XMOSFILECOMPARE
+#define _XmOSFindPatternPart _XMOSFINDPATTERNPART
+#define _XmOSQualifyFileSpec _XMOSQUALIFYFILESPEC
+#define _XmPostPopupMenu _XMPOSTPOPUPMENU
+#define _XmPrimitiveEnter _XMPRIMITIVEENTER
+#define _XmPrimitiveLeave _XMPRIMITIVELEAVE
+#define _XmRedisplayGadgets _XMREDISPLAYGADGETS
+#define _XmShellIsExclusive _XMSHELLISEXCLUSIVE
+#define _XmStringDraw _XMSTRINGDRAW
+#define _XmStringGetTextConcat _XMSTRINGGETTEXTCONCAT
+#define _XmStrings _XMSTRINGS
+#define _XmToHorizontalPixels _XMTOHORIZONTALPIXELS
+#define _XmToVerticalPixels _XMTOVERTICALPIXELS
+#define _XmTopShadowColorDefault _XMTOPSHADOWCOLORDEFAULT
+#define _Xm_fastPtr _XM_FASTPTR
+#define _XtCheckSubclassFlag _XTCHECKSUBCLASSFLAG
+#define _XtCopyFromArg _XTCOPYFROMARG
+#define _XtCountVaList _XTCOUNTVALIST
+#define _XtInherit _XTINHERIT
+#define _XtInheritTranslations _XTINHERITTRANSLATIONS
+#define _XtIsSubclassOf _XTISSUBCLASSOF
+#define _XtVaToArgList _XTVATOARGLIST
+#define applicationShellWidgetClass APPLICATIONSHELLWIDGETCLASS
+#define cli$dcl_parse CLI$DCL_PARSE
+#define cli$get_value CLI$GET_VALUE
+#define cli$present CLI$PRESENT
+#define compositeClassRec COMPOSITECLASSREC
+#define compositeWidgetClass COMPOSITEWIDGETCLASS
+#define constraintClassRec CONSTRAINTCLASSREC
+#define constraintWidgetClass CONSTRAINTWIDGETCLASS
+#define coreWidgetClass COREWIDGETCLASS
+#define exe$getspi EXE$GETSPI
+#define lbr$close LBR$CLOSE
+#define lbr$get_header LBR$GET_HEADER
+#define lbr$get_index LBR$GET_INDEX
+#define lbr$get_record LBR$GET_RECORD
+#define lbr$ini_control LBR$INI_CONTROL
+#define lbr$lookup_key LBR$LOOKUP_KEY
+#define lbr$open LBR$OPEN
+#define lbr$output_help LBR$OUTPUT_HELP
+#define lib$add_times LIB$ADD_TIMES
+#define lib$addx LIB$ADDX
+#define lib$create_dir LIB$CREATE_DIR
+#define lib$create_vm_zone LIB$CREATE_VM_ZONE
+#define lib$cvt_from_internal_time LIB$CVT_FROM_INTERNAL_TIME
+#define lib$cvt_htb LIB$CVT_HTB
+#define lib$cvt_vectim LIB$CVT_VECTIM
+#define lib$day LIB$DAY
+#define lib$day_of_week LIB$DAY_OF_WEEK
+#define lib$delete_symbol LIB$DELETE_SYMBOL
+#define lib$delete_vm_zone LIB$DELETE_VM_ZONE
+#define lib$disable_ctrl LIB$DISABLE_CTRL
+#define lib$ediv LIB$EDIV
+#define lib$emul LIB$EMUL
+#define lib$enable_ctrl LIB$ENABLE_CTRL
+#define lib$find_vm_zone LIB$FIND_VM_ZONE
+#define lib$format_date_time LIB$FORMAT_DATE_TIME
+#define lib$free_timer LIB$FREE_TIMER
+#define lib$free_vm LIB$FREE_VM
+#define lib$get_ef LIB$GET_EF
+#define lib$get_foreign LIB$GET_FOREIGN
+#define lib$get_input LIB$GET_INPUT
+#define lib$get_users_language LIB$GET_USERS_LANGUAGE
+#define lib$get_vm LIB$GET_VM
+#define lib$get_symbol LIB$GET_SYMBOL
+#define lib$getdvi LIB$GETDVI
+#define lib$init_date_time_context LIB$INIT_DATE_TIME_CONTEXT
+#define lib$init_timer LIB$INIT_TIMER
+#define lib$find_file LIB$FIND_FILE
+#define lib$find_file_end LIB$FIND_FILE_END
+#define lib$find_image_symbol LIB$FIND_IMAGE_SYMBOL
+#define lib$mult_delta_time LIB$MULT_DELTA_TIME
+#define lib$put_output LIB$PUT_OUTPUT
+#define lib$rename_file LIB$RENAME_FILE
+#define lib$reset_vm_zone LIB$RESET_VM_ZONE
+#define lib$set_symbol LIB$SET_SYMBOL
+#define lib$sfree1_dd LIB$SFREE1_DD
+#define lib$show_vm LIB$SHOW_VM
+#define lib$show_vm_zone LIB$SHOW_VM_ZONE
+#define lib$spawn LIB$SPAWN
+#define lib$stat_timer LIB$STAT_TIMER
+#define lib$subx LIB$SUBX
+#define lib$sub_times LIB$SUB_TIMES
+#define lib$wait LIB$WAIT
+#define mail$send_add_address MAIL$SEND_ADD_ADDRESS
+#define mail$send_add_attribute MAIL$SEND_ADD_ATTRIBUTE
+#define mail$send_add_bodypart MAIL$SEND_ADD_BODYPART
+#define mail$send_begin MAIL$SEND_BEGIN
+#define mail$send_end MAIL$SEND_END
+#define mail$send_message MAIL$SEND_MESSAGE
+#define ncs$convert NCS$CONVERT
+#define ncs$get_cf NCS$GET_CF
+#define objectClass OBJECTCLASS
+#define objectClassRec OBJECTCLASSREC
+#define overrideShellClassRec OVERRIDESHELLCLASSREC
+#define overrideShellWidgetClass OVERRIDESHELLWIDGETCLASS
+#define pthread_attr_create PTHREAD_ATTR_CREATE
+#define pthread_attr_delete PTHREAD_ATTR_DELETE
+#define pthread_attr_destroy PTHREAD_ATTR_DESTROY
+#define pthread_attr_getdetach_np PTHREAD_ATTR_GETDETACH_NP
+#define pthread_attr_getguardsize_np PTHREAD_ATTR_GETGUARDSIZE_NP
+#define pthread_attr_getinheritsched PTHREAD_ATTR_GETINHERITSCHED
+#define pthread_attr_getprio PTHREAD_ATTR_GETPRIO
+#define pthread_attr_getsched PTHREAD_ATTR_GETSCHED
+#define pthread_attr_getschedparam PTHREAD_ATTR_GETSCHEDPARAM
+#define pthread_attr_getschedpolicy PTHREAD_ATTR_GETSCHEDPOLICY
+#define pthread_attr_getstacksize PTHREAD_ATTR_GETSTACKSIZE
+#define pthread_attr_init PTHREAD_ATTR_INIT
+#define pthread_attr_setdetach_np PTHREAD_ATTR_SETDETACH_NP
+#define pthread_attr_setdetachstate PTHREAD_ATTR_SETDETACHSTATE
+#define pthread_attr_setguardsize_np PTHREAD_ATTR_SETGUARDSIZE_NP
+#define pthread_attr_setinheritsched PTHREAD_ATTR_SETINHERITSCHED
+#define pthread_attr_setprio PTHREAD_ATTR_SETPRIO
+#define pthread_attr_setsched PTHREAD_ATTR_SETSCHED
+#define pthread_attr_setschedparam PTHREAD_ATTR_SETSCHEDPARAM
+#define pthread_attr_setschedpolicy PTHREAD_ATTR_SETSCHEDPOLICY
+#ifndef pthread_attr_setscope
+# define pthread_attr_setscope PTHREAD_ATTR_SETSCOPE
+#endif
+#define pthread_attr_setstacksize PTHREAD_ATTR_SETSTACKSIZE
+#define pthread_cancel PTHREAD_CANCEL
+#define pthread_cancel_e PTHREAD_CANCEL_E
+#define pthread_cond_broadcast PTHREAD_COND_BROADCAST
+#define pthread_cond_destroy PTHREAD_COND_DESTROY
+#define pthread_cond_init PTHREAD_COND_INIT
+#define pthread_cond_sig_preempt_int_np PTHREAD_COND_SIG_PREEMPT_INT_NP
+#define pthread_cond_signal PTHREAD_COND_SIGNAL
+#define pthread_cond_signal_int_np PTHREAD_COND_SIGNAL_INT_NP
+#define pthread_cond_timedwait PTHREAD_COND_TIMEDWAIT
+#define pthread_cond_wait PTHREAD_COND_WAIT
+#define pthread_condattr_create PTHREAD_CONDATTR_CREATE
+#define pthread_condattr_delete PTHREAD_CONDATTR_DELETE
+#define pthread_condattr_init PTHREAD_CONDATTR_INIT
+#define pthread_create PTHREAD_CREATE
+#define pthread_delay_np PTHREAD_DELAY_NP
+#define pthread_detach PTHREAD_DETACH
+#define pthread_equal PTHREAD_EQUAL
+#define pthread_exc_fetch_fp_np PTHREAD_EXC_FETCH_FP_NP
+#define pthread_exc_handler_np PTHREAD_EXC_HANDLER_NP
+#define pthread_exc_matches_np PTHREAD_EXC_MATCHES_NP
+#define pthread_exc_pop_ctx_np PTHREAD_EXC_POP_CTX_NP
+#define pthread_exc_push_ctx_np PTHREAD_EXC_PUSH_CTX_NP
+#define pthread_exc_raise_np PTHREAD_EXC_RAISE_NP
+#define pthread_exc_savecontext_np PTHREAD_EXC_SAVECONTEXT_NP
+#define pthread_exit PTHREAD_EXIT
+#define pthread_get_expiration_np PTHREAD_GET_EXPIRATION_NP
+#define pthread_getprio PTHREAD_GETPRIO
+#define pthread_getschedparam PTHREAD_GETSCHEDPARAM
+#define pthread_getscheduler PTHREAD_GETSCHEDULER
+#define pthread_getspecific PTHREAD_GETSPECIFIC
+#define pthread_getunique_np PTHREAD_GETUNIQUE_NP
+#define pthread_join PTHREAD_JOIN
+#define pthread_join32 PTHREAD_JOIN32
+#define pthread_key_create PTHREAD_KEY_CREATE
+#define pthread_key_delete PTHREAD_KEY_DELETE
+#define pthread_keycreate PTHREAD_KEYCREATE
+#define pthread_kill PTHREAD_KILL
+#define pthread_lock_global_np PTHREAD_LOCK_GLOBAL_NP
+#define pthread_mutex_destroy PTHREAD_MUTEX_DESTROY
+#define pthread_mutex_init PTHREAD_MUTEX_INIT
+#define pthread_mutex_lock PTHREAD_MUTEX_LOCK
+#define pthread_mutex_trylock PTHREAD_MUTEX_TRYLOCK
+#define pthread_mutex_unlock PTHREAD_MUTEX_UNLOCK
+#define pthread_mutexattr_create PTHREAD_MUTEXATTR_CREATE
+#define pthread_mutexattr_delete PTHREAD_MUTEXATTR_DELETE
+#define pthread_mutexattr_destroy PTHREAD_MUTEXATTR_DESTROY
+#define pthread_mutexattr_getkind_np PTHREAD_MUTEXATTR_GETKIND_NP
+#define pthread_mutexattr_init PTHREAD_MUTEXATTR_INIT
+#define pthread_mutexattr_setkind_np PTHREAD_MUTEXATTR_SETKIND_NP
+#define pthread_mutexattr_settype_np PTHREAD_MUTEXATTR_SETTYPE_NP
+#define pthread_once PTHREAD_ONCE
+#define pthread_resume_np PTHREAD_RESUME_NP
+#define pthread_self PTHREAD_SELF
+#define pthread_setasynccancel PTHREAD_SETASYNCCANCEL
+#define pthread_setcancel PTHREAD_SETCANCEL
+#define pthread_setcancelstate PTHREAD_SETCANCELSTATE
+#define pthread_setcanceltype PTHREAD_SETCANCELTYPE
+#define pthread_setprio PTHREAD_SETPRIO
+#define pthread_setschedparam PTHREAD_SETSCHEDPARAM
+#define pthread_setscheduler PTHREAD_SETSCHEDULER
+#define pthread_setspecific PTHREAD_SETSPECIFIC
+#define pthread_suspend_np PTHREAD_SUSPEND_NP
+#define pthread_testcancel PTHREAD_TESTCANCEL
+#define pthread_unlock_global_np PTHREAD_UNLOCK_GLOBAL_NP
+#define pthread_yield PTHREAD_YIELD
+#define pthread_yield_np PTHREAD_YIELD_NP
+#define rectObjClass RECTOBJCLASS
+#define rectObjClassRec RECTOBJCLASSREC
+#define sessionShellWidgetClass SESSIONSHELLWIDGETCLASS
+#define shellWidgetClass SHELLWIDGETCLASS
+#define shmat SHMAT
+#define shmctl SHMCTL
+#define shmdt SHMDT
+#define shmget SHMGET
+#define smg$create_key_table SMG$CREATE_KEY_TABLE
+#define smg$create_virtual_keyboard SMG$CREATE_VIRTUAL_KEYBOARD
+#define smg$read_composed_line SMG$READ_COMPOSED_LINE
+#define sys$add_ident SYS$ADD_IDENT
+#define sys$asctoid SYS$ASCTOID
+#define sys$assign SYS$ASSIGN
+#define sys$bintim SYS$BINTIM
+#define sys$cancel SYS$CANCEL
+#define sys$cantim SYS$CANTIM
+#define sys$check_access SYS$CHECK_ACCESS
+#define sys$close SYS$CLOSE
+#define sys$connect SYS$CONNECT
+#define sys$create SYS$CREATE
+#define sys$create_user_profile SYS$CREATE_USER_PROFILE
+#define sys$crembx SYS$CREMBX
+#define sys$creprc SYS$CREPRC
+#define sys$crmpsc SYS$CRMPSC
+#define sys$dassgn SYS$DASSGN
+#define sys$dclast SYS$DCLAST
+#define sys$dclexh SYS$DCLEXH
+#define sys$delprc SYS$DELPRC
+#define sys$deq SYS$DEQ
+#define sys$dgblsc SYS$DGBLSC
+#define sys$display SYS$DISPLAY
+#define sys$enq SYS$ENQ
+#define sys$enqw SYS$ENQW
+#define sys$erase SYS$ERASE
+#define sys$fao SYS$FAO
+#define sys$faol SYS$FAOL
+#define sys$find_held SYS$FIND_HELD
+#define sys$finish_rdb SYS$FINISH_RDB
+#define sys$flush SYS$FLUSH
+#define sys$forcex SYS$FORCEX
+#define sys$get SYS$GET
+#define sys$get_security SYS$GET_SECURITY
+#define sys$getdviw SYS$GETDVIW
+#define sys$getjpi SYS$GETJPI
+#define sys$getjpiw SYS$GETJPIW
+#define sys$getlkiw SYS$GETLKIW
+#define sys$getmsg SYS$GETMSG
+#define sys$getsyi SYS$GETSYI
+#define sys$getsyiw SYS$GETSYIW
+#define sys$gettim SYS$GETTIM
+#define sys$getuai SYS$GETUAI
+#define sys$grantid SYS$GRANTID
+#define sys$hash_password SYS$HASH_PASSWORD
+#define sys$hiber SYS$HIBER
+#define sys$mgblsc SYS$MGBLSC
+#define sys$numtim SYS$NUMTIM
+#define sys$open SYS$OPEN
+#define sys$parse SYS$PARSE
+#define sys$parse_acl SYS$PARSE_ACL
+#define sys$parse_acl SYS$PARSE_ACL
+#define sys$persona_assume SYS$PERSONA_ASSUME
+#define sys$persona_create SYS$PERSONA_CREATE
+#define sys$persona_delete SYS$PERSONA_DELETE
+#define sys$process_scan SYS$PROCESS_SCAN
+#define sys$put SYS$PUT
+#define sys$qio SYS$QIO
+#define sys$qiow SYS$QIOW
+#define sys$read SYS$READ
+#define sys$resched SYS$RESCHED
+#define sys$rewind SYS$REWIND
+#define sys$search SYS$SEARCH
+#define sys$set_security SYS$SET_SECURITY
+#define sys$setast SYS$SETAST
+#define sys$setef SYS$SETEF
+#define sys$setimr SYS$SETIMR
+#define sys$setpri SYS$SETPRI
+#define sys$setprn SYS$SETPRN
+#define sys$setprv SYS$SETPRV
+#define sys$setswm SYS$SETSWM
+#define sys$setuai SYS$SETUAI
+#define sys$sndopr SYS$SNDOPR
+#define sys$synch SYS$SYNCH
+#define sys$trnlnm SYS$TRNLNM
+#define sys$update SYS$UPDATE
+#define sys$wake SYS$WAKE
+#define sys$write SYS$WRITE
+#define topLevelShellClassRec TOPLEVELSHELLCLASSREC
+#define topLevelShellWidgetClass TOPLEVELSHELLWIDGETCLASS
+#define transientShellWidgetClass TRANSIENTSHELLWIDGETCLASS
+#define vendorShellClassRec VENDORSHELLCLASSREC
+#define vendorShellWidgetClass VENDORSHELLWIDGETCLASS
+#define widgetClass WIDGETCLASS
+#define widgetClassRec WIDGETCLASSREC
+#define wmShellClassRec WMSHELLCLASSREC
+#define wmShellWidgetClass WMSHELLWIDGETCLASS
+#define x$soft_ast_lib_lock X$SOFT_AST_LIB_LOCK
+#define x$soft_ast_lock_depth X$SOFT_AST_LOCK_DEPTH
+#define x$soft_reenable_asts X$SOFT_REENABLE_ASTS
+#define xmArrowButtonWidgetClass XMARROWBUTTONWIDGETCLASS
+#define xmBulletinBoardWidgetClass XMBULLETINBOARDWIDGETCLASS
+#define xmCascadeButtonClassRec XMCASCADEBUTTONCLASSREC
+#define xmCascadeButtonGadgetClass XMCASCADEBUTTONGADGETCLASS
+#define xmCascadeButtonWidgetClass XMCASCADEBUTTONWIDGETCLASS
+#define xmCommandWidgetClass XMCOMMANDWIDGETCLASS
+#define xmDialogShellWidgetClass XMDIALOGSHELLWIDGETCLASS
+#define xmDrawingAreaWidgetClass XMDRAWINGAREAWIDGETCLASS
+#define xmDrawnButtonWidgetClass XMDRAWNBUTTONWIDGETCLASS
+#define xmFileSelectionBoxWidgetClass XMFILESELECTIONBOXWIDGETCLASS
+#define xmFormWidgetClass XMFORMWIDGETCLASS
+#define xmFrameWidgetClass XMFRAMEWIDGETCLASS
+#define xmGadgetClass XMGADGETCLASS
+#define xmLabelGadgetClass XMLABELGADGETCLASS
+#define xmLabelWidgetClass XMLABELWIDGETCLASS
+#define xmListWidgetClass XMLISTWIDGETCLASS
+#define xmMainWindowWidgetClass XMMAINWINDOWWIDGETCLASS
+#define xmManagerClassRec XMMANAGERCLASSREC
+#define xmManagerWidgetClass XMMANAGERWIDGETCLASS
+#define xmMenuShellWidgetClass XMMENUSHELLWIDGETCLASS
+#define xmMessageBoxWidgetClass XMMESSAGEBOXWIDGETCLASS
+#define xmPrimitiveClassRec XMPRIMITIVECLASSREC
+#define xmPrimitiveWidgetClass XMPRIMITIVEWIDGETCLASS
+#define xmPushButtonClassRec XMPUSHBUTTONCLASSREC
+#define xmPushButtonGadgetClass XMPUSHBUTTONGADGETCLASS
+#define xmPushButtonWidgetClass XMPUSHBUTTONWIDGETCLASS
+#define xmRowColumnWidgetClass XMROWCOLUMNWIDGETCLASS
+#define xmSashWidgetClass XMSASHWIDGETCLASS
+#define xmScaleWidgetClass XMSCALEWIDGETCLASS
+#define xmScrollBarWidgetClass XMSCROLLBARWIDGETCLASS
+#define xmScrolledWindowClassRec XMSCROLLEDWINDOWCLASSREC
+#define xmScrolledWindowWidgetClass XMSCROLLEDWINDOWWIDGETCLASS
+#define xmSeparatorGadgetClass XMSEPARATORGADGETCLASS
+#define xmSeparatorWidgetClass XMSEPARATORWIDGETCLASS
+#define xmTextFieldWidgetClass XMTEXTFIELDWIDGETCLASS
+#define xmTextWidgetClass XMTEXTWIDGETCLASS
+#define xmToggleButtonGadgetClass XMTOGGLEBUTTONGADGETCLASS
+#define xmToggleButtonWidgetClass XMTOGGLEBUTTONWIDGETCLASS
+
+#if (__VMS_VER < 80200000)
+# define SetReqLen(req,n,badlen) \
+ if ((req->length + n) > (unsigned)65535) { \
+ n = badlen; \
+ req->length += n; \
+ } else \
+ req->length += n
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern void XtFree(char*);
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Mesa/prj/build.lst b/Mesa/prj/build.lst
new file mode 100644
index 000000000000..8910be4da8ea
--- /dev/null
+++ b/Mesa/prj/build.lst
@@ -0,0 +1,3 @@
+me Mesa : solenv NULL
+me Mesa usr1 - u me_mkout NULL
+me Mesa\prj get - all me_prj NULL
diff --git a/Mesa/prj/d.lst b/Mesa/prj/d.lst
new file mode 100644
index 000000000000..5991e2066540
--- /dev/null
+++ b/Mesa/prj/d.lst
@@ -0,0 +1,3 @@
+mkdir: %_DEST%\inc%_EXT%\GL
+
+..\inc\*.h %_DEST%\inc%_EXT%\GL\*.h
diff --git a/UnoControls/inc/basecontainercontrol.hxx b/UnoControls/inc/basecontainercontrol.hxx
new file mode 100644
index 000000000000..cc052ca67f5f
--- /dev/null
+++ b/UnoControls/inc/basecontainercontrol.hxx
@@ -0,0 +1,598 @@
+/* -*- 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 _UNOCONTROLS_BASECONTAINERCONTROL_CTRL_HXX
+#define _UNOCONTROLS_BASECONTAINERCONTROL_CTRL_HXX
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/container/XContainer.hpp>
+#include <com/sun/star/container/XIndexContainer.hpp>
+#include <com/sun/star/container/XNameReplace.hpp>
+#include <com/sun/star/container/XContainerListener.hpp>
+#include <com/sun/star/container/XSet.hpp>
+#include <com/sun/star/container/ContainerEvent.hpp>
+#include <com/sun/star/container/XIndexReplace.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <tools/list.hxx>
+
+//____________________________________________________________________________________________________________
+// includes of my own project
+//____________________________________________________________________________________________________________
+#include "basecontrol.hxx"
+
+//____________________________________________________________________________________________________________
+// "namespaces"
+//____________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_AWT ::com::sun::star::awt
+#define CSS_LANG ::com::sun::star::lang
+#define CSS_CONTAINER ::com::sun::star::container
+
+//____________________________________________________________________________________________________________
+// structs, types, forwards
+//____________________________________________________________________________________________________________
+
+struct IMPL_ControlInfo
+{
+ CSS_UNO::Reference< CSS_AWT::XControl > xControl ;
+ ::rtl::OUString sName ;
+};
+
+// makro define a list-class for struct IMPL_ControlInfo!
+class IMPL_ControlInfoList ;
+DECLARE_LIST( IMPL_ControlInfoList, IMPL_ControlInfo* )
+
+//____________________________________________________________________________________________________________
+// classes
+//____________________________________________________________________________________________________________
+
+class BaseContainerControl : public CSS_AWT::XControlModel
+ , public CSS_AWT::XControlContainer
+ , public BaseControl
+{
+
+//____________________________________________________________________________________________________________
+// public methods
+//____________________________________________________________________________________________________________
+
+public:
+
+ //________________________________________________________________________________________________________
+ // construct/destruct
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ BaseContainerControl( const CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory >& xFactory );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual ~BaseContainerControl();
+
+ //________________________________________________________________________________________________________
+ // XInterface
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short give answer, if interface is supported
+ @descr The interfaces are searched by type.
+
+ @seealso XInterface
+
+ @param "rType" is the type of searched interface.
+
+ @return Any information about found interface
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface(
+ const CSS_UNO::Type& aType
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XTypeProvider
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short get information about supported interfaces
+ @descr -
+
+ @seealso XTypeProvider
+
+ @param -
+
+ @return Sequence of types of all supported interfaces
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getTypes()
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XAggregation
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryAggregation(
+ const CSS_UNO::Type& aType
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XControl
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL createPeer(
+ const CSS_UNO::Reference< CSS_AWT::XToolkit >& xToolkit ,
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParent
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL setModel(
+ const CSS_UNO::Reference< CSS_AWT::XControlModel >& xModel
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XControlModel > SAL_CALL getModel()
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XComponent
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL dispose() throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XEventListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL disposing( const CSS_LANG::EventObject& rEvent ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XControlContainer
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addControl(
+ const ::rtl::OUString& sName ,
+ const CSS_UNO::Reference< CSS_AWT::XControl >& xControl
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addContainerListener(
+ const CSS_UNO::Reference< CSS_CONTAINER::XContainerListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeControl(
+ const CSS_UNO::Reference< CSS_AWT::XControl >& xControl
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeContainerListener(
+ const CSS_UNO::Reference< CSS_CONTAINER::XContainerListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setStatusText(
+ const ::rtl::OUString& sStatusText
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XControl > SAL_CALL getControl(
+ const ::rtl::OUString& sName
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Reference< CSS_AWT::XControl > > SAL_CALL getControls()
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XUnoControlContainer
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addTabController(
+ const CSS_UNO::Reference< CSS_AWT::XTabController >& xTabController
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeTabController(
+ const CSS_UNO::Reference< CSS_AWT::XTabController >& xTabController
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setTabControllers(
+ const CSS_UNO::Sequence< CSS_UNO::Reference< CSS_AWT::XTabController > >& xTabControllers
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Reference< CSS_AWT::XTabController > > SAL_CALL getTabControllers()
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XWindow
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setVisible( sal_Bool bVisible ) throw( CSS_UNO::RuntimeException );
+
+//____________________________________________________________________________________________________________
+// protected methods
+//____________________________________________________________________________________________________________
+
+protected:
+ using OComponentHelper::disposing;
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_AWT::WindowDescriptor* impl_getWindowDescriptor(
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParentPeer
+ );
+
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void impl_paint(
+ sal_Int32 nX ,
+ sal_Int32 nY ,
+ const CSS_UNO::Reference< CSS_AWT::XGraphics >& xGraphics
+ );
+
+//____________________________________________________________________________________________________________
+// private methods
+//____________________________________________________________________________________________________________
+
+private:
+
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ void impl_activateTabControllers();
+
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ void impl_cleanMemory();
+
+//____________________________________________________________________________________________________________
+// private variables
+//____________________________________________________________________________________________________________
+
+private:
+ // list of pointer of "struct IMPL_ControlInfo" to hold child-controls
+ IMPL_ControlInfoList* m_pControlInfoList ;
+
+ // list of references of XTabController to hold tab-order in this container
+ CSS_UNO::Sequence< CSS_UNO::Reference< CSS_AWT::XTabController > > m_xTabControllerList ;
+
+ ::cppu::OMultiTypeInterfaceContainerHelper m_aListeners ;
+
+}; // class BaseContainerControl
+
+// The namespace aliases are only used in this header
+#undef CSS_UNO
+#undef CSS_AWT
+#undef CSS_LANG
+#undef CSS_CONTAINER
+
+} // namespace unocontrols
+
+#endif // ifndef _UNOCONTROLS_BASECONTAINERCONTROL_CTRL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/inc/basecontrol.hxx b/UnoControls/inc/basecontrol.hxx
new file mode 100644
index 000000000000..e8eb59bce4ac
--- /dev/null
+++ b/UnoControls/inc/basecontrol.hxx
@@ -0,0 +1,1272 @@
+/* -*- 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 _UNOCONTROLS_BASECONTROL_CTRL_HXX
+#define _UNOCONTROLS_BASECONTROL_CTRL_HXX
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+
+#include <com/sun/star/awt/XKeyListener.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/KeyEvent.hpp>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/FocusEvent.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/awt/XActivateListener.hpp>
+#include <com/sun/star/awt/MouseEvent.hpp>
+#include <com/sun/star/awt/XTopWindowListener.hpp>
+#include <com/sun/star/awt/PaintEvent.hpp>
+#include <com/sun/star/awt/InputEvent.hpp>
+#include <com/sun/star/awt/KeyGroup.hpp>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/awt/WindowEvent.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/KeyFunction.hpp>
+#include <com/sun/star/awt/FocusChangeReason.hpp>
+#include <com/sun/star/awt/MouseButton.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <com/sun/star/awt/XFileDialog.hpp>
+#include <com/sun/star/awt/XTextComponent.hpp>
+#include <com/sun/star/awt/XListBox.hpp>
+#include <com/sun/star/awt/XProgressMonitor.hpp>
+#include <com/sun/star/awt/TextAlign.hpp>
+#include <com/sun/star/awt/XScrollBar.hpp>
+#include <com/sun/star/awt/XVclContainerPeer.hpp>
+#include <com/sun/star/awt/XTabControllerModel.hpp>
+#include <com/sun/star/awt/XMessageBox.hpp>
+#include <com/sun/star/awt/XTextEditField.hpp>
+#include <com/sun/star/awt/Style.hpp>
+#include <com/sun/star/awt/XTimeField.hpp>
+#include <com/sun/star/awt/XVclWindowPeer.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/awt/XSpinField.hpp>
+#include <com/sun/star/awt/XUnoControlContainer.hpp>
+#include <com/sun/star/awt/XTextLayoutConstrains.hpp>
+#include <com/sun/star/awt/XNumericField.hpp>
+#include <com/sun/star/awt/XButton.hpp>
+#include <com/sun/star/awt/XTextArea.hpp>
+#include <com/sun/star/awt/XImageButton.hpp>
+#include <com/sun/star/awt/XFixedText.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/awt/XDialog.hpp>
+#include <com/sun/star/awt/ScrollBarOrientation.hpp>
+#include <com/sun/star/awt/XRadioButton.hpp>
+#include <com/sun/star/awt/XCurrencyField.hpp>
+#include <com/sun/star/awt/XPatternField.hpp>
+#include <com/sun/star/awt/VclWindowPeerAttribute.hpp>
+#include <com/sun/star/awt/XTabController.hpp>
+#include <com/sun/star/awt/XVclContainer.hpp>
+#include <com/sun/star/awt/XDateField.hpp>
+#include <com/sun/star/awt/XComboBox.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XCheckBox.hpp>
+#include <com/sun/star/awt/MessageBoxCommand.hpp>
+#include <com/sun/star/awt/XLayoutConstrains.hpp>
+#include <com/sun/star/awt/XProgressBar.hpp>
+#include <com/sun/star/awt/XTopWindow.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/XView.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <osl/mutex.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/component.hxx>
+
+//____________________________________________________________________________________________________________
+// includes of my project
+//____________________________________________________________________________________________________________
+#include "multiplexer.hxx"
+
+//____________________________________________________________________________________________________________
+// "namespaces"
+//____________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_AWT ::com::sun::star::awt
+#define CSS_LANG ::com::sun::star::lang
+
+//____________________________________________________________________________________________________________
+// macros
+//____________________________________________________________________________________________________________
+
+#define TRGB_COLORDATA(TRANSPARENCE,RED,GREEN,BLUE) \
+ ((sal_Int32)(((sal_uInt32)((sal_uInt8)(BLUE))))|(((sal_uInt32)((sal_uInt8)(GREEN)))<<8)|(((sal_uInt32)((sal_uInt8)(RED)))<<16)|(((sal_uInt32)((sal_uInt8)(TRANSPARENCE)))<<24))
+
+//____________________________________________________________________________________________________________
+// structs
+//____________________________________________________________________________________________________________
+
+struct IMPL_MutexContainer
+{
+ // Is necassery to initialize "BaseControl" and make this class thread-safe.
+ ::osl::Mutex m_aMutex ;
+};
+
+//____________________________________________________________________________________________________________
+// classes
+//____________________________________________________________________________________________________________
+
+class BaseControl : public CSS_LANG::XServiceInfo
+ , public CSS_AWT::XPaintListener
+ , public CSS_AWT::XWindowListener
+ , public CSS_AWT::XView
+ , public CSS_AWT::XWindow
+ , public CSS_AWT::XControl
+ , public IMPL_MutexContainer
+ , public ::cppu::OComponentHelper
+{
+//____________________________________________________________________________________________________________
+// public methods
+//____________________________________________________________________________________________________________
+
+public:
+
+ //________________________________________________________________________________________________________
+ // construct/destruct
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ BaseControl( const CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory >& xFactory );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual ~BaseControl();
+
+ //________________________________________________________________________________________________________
+ // XInterface
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short give answer, if interface is supported
+ @descr The interfaces are searched by type.
+
+ @seealso XInterface
+
+ @param "rType" is the type of searched interface.
+
+ @return Any information about found interface
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface(
+ const CSS_UNO::Type& aType
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //________________________________________________________________________________________________________
+ // XTypeProvider
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short get information about supported interfaces
+ @descr -
+
+ @seealso XTypeProvider
+
+ @param -
+
+ @return Sequence of types of all supported interfaces
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getTypes()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short get implementation id
+ @descr This ID is neccessary for UNO-caching. If there no ID, cache is disabled.
+ Another way, cache is enabled.
+
+ @seealso XTypeProvider
+
+ @param -
+
+ @return ID as Sequence of byte
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XAggregation
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setDelegator(
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xDelegator
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryAggregation(
+ const CSS_UNO::Type& aType
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XServiceInfo
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL supportsService(
+ const ::rtl::OUString& sServiceName
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XComponent
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL dispose() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addEventListener(
+ const CSS_UNO::Reference< CSS_LANG::XEventListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeEventListener(
+ const CSS_UNO::Reference< CSS_LANG::XEventListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XControl
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL createPeer(
+ const CSS_UNO::Reference< CSS_AWT::XToolkit >& xToolkit,
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParent
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setContext(
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xContext
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL setModel(
+ const CSS_UNO::Reference< CSS_AWT::XControlModel >& xModel
+ ) throw( CSS_UNO::RuntimeException ) = 0 ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setDesignMode( sal_Bool bOn ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_UNO::XInterface > SAL_CALL getContext()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XControlModel > SAL_CALL getModel()
+ throw( CSS_UNO::RuntimeException ) = 0;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XWindowPeer > SAL_CALL getPeer()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XView > SAL_CALL getView()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL isDesignMode() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL isTransparent() throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XWindow
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setPosSize( sal_Int32 nX ,
+ sal_Int32 nY ,
+ sal_Int32 nWidth ,
+ sal_Int32 nHeight ,
+ sal_Int16 nFlags ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setVisible( sal_Bool bVisible ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setEnable( sal_Bool bEnable ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setFocus() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Rectangle SAL_CALL getPosSize() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addWindowListener(
+ const CSS_UNO::Reference< CSS_AWT::XWindowListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addFocusListener(
+ const CSS_UNO::Reference< CSS_AWT::XFocusListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addKeyListener(
+ const CSS_UNO::Reference< CSS_AWT::XKeyListener >& xListener )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addMouseListener(
+ const CSS_UNO::Reference< CSS_AWT::XMouseListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addMouseMotionListener(
+ const CSS_UNO::Reference< CSS_AWT::XMouseMotionListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addPaintListener(
+ const CSS_UNO::Reference< CSS_AWT::XPaintListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeWindowListener(
+ const CSS_UNO::Reference< CSS_AWT::XWindowListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeFocusListener(
+ const CSS_UNO::Reference< CSS_AWT::XFocusListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeKeyListener(
+ const CSS_UNO::Reference< CSS_AWT::XKeyListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeMouseListener(
+ const CSS_UNO::Reference< CSS_AWT::XMouseListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeMouseMotionListener(
+ const CSS_UNO::Reference< CSS_AWT::XMouseMotionListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removePaintListener(
+ const CSS_UNO::Reference< CSS_AWT::XPaintListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XView
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL draw( sal_Int32 nX ,
+ sal_Int32 nY ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL setGraphics(
+ const CSS_UNO::Reference< CSS_AWT::XGraphics >& xDevice
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setZoom( float fZoomX ,
+ float fZoomY ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XGraphics > SAL_CALL getGraphics()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Size SAL_CALL getSize() throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // CSS_LANG::XEventListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL disposing(
+ const CSS_LANG::EventObject& rSource
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XPaintListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowPaint(
+ const CSS_AWT::PaintEvent& rEvent
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XWindowListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowResized( const CSS_AWT::WindowEvent& aEvent ) throw( CSS_UNO::RuntimeException );
+ virtual void SAL_CALL windowMoved( const CSS_AWT::WindowEvent& aEvent ) throw( CSS_UNO::RuntimeException );
+ virtual void SAL_CALL windowShown( const CSS_LANG::EventObject& aEvent ) throw( CSS_UNO::RuntimeException );
+ virtual void SAL_CALL windowHidden( const CSS_LANG::EventObject& aEvent ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // impl but public method to register service
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ static const CSS_UNO::Sequence< ::rtl::OUString > impl_getStaticSupportedServiceNames();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ static const ::rtl::OUString impl_getStaticImplementationName();
+
+//____________________________________________________________________________________________________________
+// protected methods
+//____________________________________________________________________________________________________________
+
+protected:
+ using OComponentHelper::disposing;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ const CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory > impl_getMultiServiceFactory();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ const CSS_UNO::Reference< CSS_AWT::XWindow > impl_getPeerWindow();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ const CSS_UNO::Reference< CSS_AWT::XGraphics > impl_getGraphicsPeer();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ const sal_Int32& impl_getWidth();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ const sal_Int32& impl_getHeight();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::WindowDescriptor* impl_getWindowDescriptor(
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParentPeer
+ );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void impl_paint( sal_Int32 nX ,
+ sal_Int32 nY ,
+ const CSS_UNO::Reference< CSS_AWT::XGraphics >& xGraphics );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void impl_recalcLayout( const CSS_AWT::WindowEvent& aEvent );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ CSS_UNO::Reference< CSS_UNO::XInterface > impl_getDelegator();
+
+//____________________________________________________________________________________________________________
+// private methods
+//____________________________________________________________________________________________________________
+
+private:
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ void impl_releasePeer();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ OMRCListenerMultiplexerHelper* impl_getMultiplexer();
+
+//____________________________________________________________________________________________________________
+// private variables
+//____________________________________________________________________________________________________________
+
+private:
+
+ CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory > m_xFactory ;
+ CSS_UNO::Reference< CSS_UNO::XInterface > m_xDelegator ;
+ OMRCListenerMultiplexerHelper* m_pMultiplexer ; // multiplex events
+ CSS_UNO::Reference< CSS_UNO::XInterface > m_xMultiplexer ;
+ CSS_UNO::Reference< CSS_UNO::XInterface > m_xContext ;
+ CSS_UNO::Reference< CSS_AWT::XWindowPeer > m_xPeer ;
+ CSS_UNO::Reference< CSS_AWT::XWindow > m_xPeerWindow ;
+ CSS_UNO::Reference< CSS_AWT::XGraphics > m_xGraphicsView ; // graphics for CSS_AWT::XView-operations
+ CSS_UNO::Reference< CSS_AWT::XGraphics > m_xGraphicsPeer ; // graphics for painting on a peer
+ sal_Int32 m_nX ; // Position ...
+ sal_Int32 m_nY ;
+ sal_Int32 m_nWidth ; // ... and size of window
+ sal_Int32 m_nHeight ;
+ sal_Bool m_bVisible ; // Some state flags
+ sal_Bool m_bInDesignMode ;
+ sal_Bool m_bEnable ;
+
+}; // class BaseControl
+
+// The namespace aliaes are only used in this header
+#undef CSS_UNO
+#undef CSS_AWT
+#undef CSS_LANG
+
+} // namespace unocontrols
+
+#endif // ifndef _UNOCONTROLS_BASECONTROL_CTRL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/inc/multiplexer.hxx b/UnoControls/inc/multiplexer.hxx
new file mode 100644
index 000000000000..b9a90c5a33f1
--- /dev/null
+++ b/UnoControls/inc/multiplexer.hxx
@@ -0,0 +1,784 @@
+/* -*- 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 _UNOCONTROLS_MULTIPLEXER_HXX
+#define _UNOCONTROLS_MULTIPLEXER_HXX
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+
+#include <com/sun/star/awt/XKeyListener.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/KeyEvent.hpp>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/FocusEvent.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/awt/XActivateListener.hpp>
+#include <com/sun/star/awt/MouseEvent.hpp>
+#include <com/sun/star/awt/XTopWindowListener.hpp>
+#include <com/sun/star/awt/PaintEvent.hpp>
+#include <com/sun/star/awt/InputEvent.hpp>
+#include <com/sun/star/awt/KeyGroup.hpp>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/awt/WindowEvent.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/KeyFunction.hpp>
+#include <com/sun/star/awt/FocusChangeReason.hpp>
+#include <com/sun/star/awt/MouseButton.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <com/sun/star/awt/XTopWindow.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/interfacecontainer.hxx>
+//____________________________________________________________________________________________________________
+// includes of my own project
+//____________________________________________________________________________________________________________
+
+//____________________________________________________________________________________________________________
+// "namespaces"
+//____________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_AWT ::com::sun::star::awt
+#define CSS_LANG ::com::sun::star::lang
+
+//____________________________________________________________________________________________________________
+// class
+//____________________________________________________________________________________________________________
+
+class OMRCListenerMultiplexerHelper : public CSS_AWT::XFocusListener
+ , public CSS_AWT::XWindowListener
+ , public CSS_AWT::XKeyListener
+ , public CSS_AWT::XMouseListener
+ , public CSS_AWT::XMouseMotionListener
+ , public CSS_AWT::XPaintListener
+ , public CSS_AWT::XTopWindowListener
+ , public ::cppu::OWeakObject
+{
+
+//____________________________________________________________________________________________________________
+// public methods
+//____________________________________________________________________________________________________________
+
+public:
+
+ //________________________________________________________________________________________________________
+ // construct/destruct
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short constructor
+ @descr Create a Multiplexer of XWindowEvents.
+
+ @seealso -
+
+ @param rControl The control. All listeners think that this is the original broadcaster.
+ @param rPeer The peer from which the original events are dispatched. Null is allowed.
+
+ @return -
+
+ @onerror -
+ */
+
+ OMRCListenerMultiplexerHelper( const CSS_UNO::Reference< CSS_AWT::XWindow >& xControl ,
+ const CSS_UNO::Reference< CSS_AWT::XWindow >& xPeer );
+
+ /**_______________________________________________________________________________________________________
+ @short copy-constructor
+ @descr
+
+ @seealso -
+
+ @param rCopyInstance C++-Reference to instance to make copy from.
+
+ @return -
+
+ @onerror -
+ */
+
+ OMRCListenerMultiplexerHelper( const OMRCListenerMultiplexerHelper& aCopyInstance );
+
+ /**_______________________________________________________________________________________________________
+ @short destructor
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ ~OMRCListenerMultiplexerHelper();
+
+ //________________________________________________________________________________________________________
+ // XInterface
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short give answer, if interface is supported
+ @descr The interfaces are searched by type.
+
+ @seealso XInterface
+
+ @param "rType" is the type of searched interface.
+
+ @return Any information about found interface
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //________________________________________________________________________________________________________
+ // operator
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ operator CSS_UNO::Reference< CSS_UNO::XInterface >() const;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ OMRCListenerMultiplexerHelper& operator= ( const OMRCListenerMultiplexerHelper& aCopyInstance );
+
+ //________________________________________________________________________________________________________
+ // container methods
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short Remove all listeners from the previous set peer and add the needed listeners to rPeer.
+ @descr -
+
+ @seealso -
+
+ @param rPeer The peer from which the original events are dispatched. Null is allowed.
+
+ @return -
+
+ @onerror -
+ */
+
+ void setPeer( const CSS_UNO::Reference< CSS_AWT::XWindow >& xPeer );
+
+ /**_______________________________________________________________________________________________________
+ @short Remove all listeners and send a disposing message.
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ void disposeAndClear();
+
+ /**_______________________________________________________________________________________________________
+ @short Add the specified listener to the source.
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ void advise( const CSS_UNO::Type& aType ,
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener );
+
+ /**_______________________________________________________________________________________________________
+ @short Remove the specified listener from the source.
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ void unadvise( const CSS_UNO::Type& aType ,
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener );
+
+ //________________________________________________________________________________________________________
+ // XEventListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL disposing(const CSS_LANG::EventObject& aSource)
+ throw( CSS_UNO::RuntimeException ) ;
+
+ //________________________________________________________________________________________________________
+ // XFocusListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL focusGained(const CSS_AWT::FocusEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL focusLost(const CSS_AWT::FocusEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ //________________________________________________________________________________________________________
+ // XWindowListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowResized(const CSS_AWT::WindowEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowMoved(const CSS_AWT::WindowEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowShown(const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowHidden(const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ //________________________________________________________________________________________________________
+ // XKeyListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL keyPressed( const CSS_AWT::KeyEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL keyReleased( const CSS_AWT::KeyEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ //________________________________________________________________________________________________________
+ // XMouseListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL mousePressed(const CSS_AWT::MouseEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL mouseReleased(const CSS_AWT::MouseEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL mouseEntered(const CSS_AWT::MouseEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL mouseExited(const CSS_AWT::MouseEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ //________________________________________________________________________________________________________
+ // XMouseMotionListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL mouseDragged(const CSS_AWT::MouseEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL mouseMoved(const CSS_AWT::MouseEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ //________________________________________________________________________________________________________
+ // XPaintListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowPaint(const CSS_AWT::PaintEvent& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ //________________________________________________________________________________________________________
+ // XTopWindowListener
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowOpened( const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowClosing( const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowClosed( const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowMinimized( const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowNormalized( const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowActivated( const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL windowDeactivated( const CSS_LANG::EventObject& aEvent )
+ throw( CSS_UNO::RuntimeException ) ;
+
+//____________________________________________________________________________________________________________
+// protected methods
+//____________________________________________________________________________________________________________
+
+protected:
+
+ /**_______________________________________________________________________________________________________
+ @short Remove the listener from the peer.
+ @descr -
+
+ @seealso -
+
+ @param xPeer The peer from which the listener is removed.
+ @param rType The listener type, which specify the type of the listener.
+
+ @return -
+
+ @onerror -
+ */
+
+ void impl_adviseToPeer( const CSS_UNO::Reference< CSS_AWT::XWindow >& xPeer ,
+ const CSS_UNO::Type& aType );
+
+ /**_______________________________________________________________________________________________________
+ @short Add the listener to the peer.
+ @descr -
+
+ @seealso -
+
+ @param xPeer The peer to which the listener is added.
+ @param rType The listener type, which specify the type of the listener.
+
+ @return -
+
+ @onerror -
+ */
+
+ void impl_unadviseFromPeer( const CSS_UNO::Reference< CSS_AWT::XWindow >& xPeer ,
+ const CSS_UNO::Type& aType );
+
+//____________________________________________________________________________________________________________
+// private variables
+//____________________________________________________________________________________________________________
+
+private:
+
+ ::osl::Mutex m_aMutex ;
+ CSS_UNO::Reference< CSS_AWT::XWindow > m_xPeer ; /// The source of the events. Normally this is the peer object.
+ CSS_UNO::WeakReference< CSS_AWT::XWindow > m_xControl ;
+ ::cppu::OMultiTypeInterfaceContainerHelper m_aListenerHolder ;
+
+}; // class OMRCListenerMultiplexerHelper
+
+// The namespace aliases are only used in this header
+#undef CSS_UNO
+#undef CSS_AWT
+#undef CSS_LANG
+
+
+} // namespace unocontrols
+
+#endif // ifndef _UNOCONTROLS_MULTIPLEXER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/prj/build.lst b/UnoControls/prj/build.lst
new file mode 100644
index 000000000000..de5d7fd81d33
--- /dev/null
+++ b/UnoControls/prj/build.lst
@@ -0,0 +1,5 @@
+us UnoControls : cppuhelper offuh tools NULL
+us UnoControls usr1 - all us_mkout NULL
+us UnoControls\source\base nmake - all us_base NULL
+us UnoControls\source\controls nmake - all us_ctrls NULL
+us UnoControls\util nmake - all us_util us_base us_ctrls NULL
diff --git a/UnoControls/prj/d.lst b/UnoControls/prj/d.lst
new file mode 100644
index 000000000000..5f65d3c80717
--- /dev/null
+++ b/UnoControls/prj/d.lst
@@ -0,0 +1,5 @@
+..\%__SRC%\bin\*.dll %_DEST%\bin%_EXT%\*.dll
+..\%__SRC%\lib\lib*.so %_DEST%\lib%_EXT%
+..\%__SRC%\lib\*.sl %_DEST%\lib%_EXT%\*.sl
+..\%__SRC%\bin\*.res %_DEST%\bin%_EXT%\*.res
+..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
diff --git a/UnoControls/source/base/basecontainercontrol.cxx b/UnoControls/source/base/basecontainercontrol.cxx
new file mode 100644
index 000000000000..8709f3c3f331
--- /dev/null
+++ b/UnoControls/source/base/basecontainercontrol.cxx
@@ -0,0 +1,645 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+//____________________________________________________________________________________________________________
+// my own includes
+//____________________________________________________________________________________________________________
+
+#include "basecontainercontrol.hxx"
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+#include <cppuhelper/typeprovider.hxx>
+
+//____________________________________________________________________________________________________________
+// includes of my own project
+//____________________________________________________________________________________________________________
+
+//____________________________________________________________________________________________________________
+// namespaces
+//____________________________________________________________________________________________________________
+
+using namespace ::cppu ;
+using namespace ::osl ;
+using namespace ::rtl ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+using namespace ::com::sun::star::awt ;
+using namespace ::com::sun::star::container ;
+
+namespace unocontrols{
+
+//____________________________________________________________________________________________________________
+// construct/destruct
+//____________________________________________________________________________________________________________
+
+BaseContainerControl::BaseContainerControl( const Reference< XMultiServiceFactory >& xFactory )
+ : BaseControl ( xFactory )
+ , m_aListeners ( m_aMutex )
+{
+ // initialize info list for controls
+ m_pControlInfoList = new IMPL_ControlInfoList ;
+}
+
+BaseContainerControl::~BaseContainerControl()
+{
+ impl_cleanMemory();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL BaseContainerControl::queryInterface( const Type& rType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+ Any aReturn ;
+ Reference< XInterface > xDel = BaseControl::impl_getDelegator();
+ if ( xDel.is() == sal_True )
+ {
+ // If an delegator exist, forward question to his queryInterface.
+ // Delegator will ask his own queryAggregation!
+ aReturn = xDel->queryInterface( rType );
+ }
+ else
+ {
+ // If an delegator unknown, forward question to own queryAggregation.
+ aReturn = queryAggregation( rType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XTypeProvider
+//____________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL BaseContainerControl::getTypes() throw( RuntimeException )
+{
+ // Optimize this method !
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
+ static OTypeCollection* pTypeCollection = NULL ;
+
+ if ( pTypeCollection == NULL )
+ {
+ // Ready for multithreading; get global mutex for first call of this method only! see before
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+
+ // Control these pointer again ... it can be, that another instance will be faster then these!
+ if ( pTypeCollection == NULL )
+ {
+ // Create a static typecollection ...
+ static OTypeCollection aTypeCollection ( ::getCppuType(( const Reference< XControlModel >*)NULL ) ,
+ ::getCppuType(( const Reference< XControlContainer >*)NULL ) ,
+ BaseControl::getTypes()
+ );
+ // ... and set his address to static pointer!
+ pTypeCollection = &aTypeCollection ;
+ }
+ }
+
+ return pTypeCollection->getTypes();
+}
+
+//____________________________________________________________________________________________________________
+// XAggregation
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL BaseContainerControl::queryAggregation( const Type& aType ) throw( RuntimeException )
+{
+ // Ask for my own supported interfaces ...
+ // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XControlModel* > ( this ) ,
+ static_cast< XControlContainer* > ( this )
+ )
+ );
+
+ // If searched interface supported by this class ...
+ if ( aReturn.hasValue() == sal_True )
+ {
+ // ... return this information.
+ return aReturn ;
+ }
+ else
+ {
+ // Else; ... ask baseclass for interfaces!
+ return BaseControl::queryAggregation( aType );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::createPeer( const Reference< XToolkit >& xToolkit ,
+ const Reference< XWindowPeer >& xParent ) throw( RuntimeException )
+{
+ if ( getPeer().is() == sal_False )
+ {
+ // create own peer
+ BaseControl::createPeer( xToolkit, xParent );
+
+ // create peers at all childs
+ Sequence< Reference< XControl > > seqControlList = getControls();
+ sal_uInt32 nControls = seqControlList.getLength();
+
+ for ( sal_uInt32 n=0; n<nControls; n++ )
+ {
+ seqControlList.getArray()[n]->createPeer( xToolkit, getPeer() );
+ }
+
+ // activate new tab order
+ impl_activateTabControllers();
+
+/*
+ Reference< XVclContainerPeer > xC;
+ mxPeer->queryInterface( ::getCppuType((const Reference< XVclContainerPeer >*)0), xC );
+ xC->enableDialogControl( sal_True );
+*/
+
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL BaseContainerControl::setModel( const Reference< XControlModel >& ) throw( RuntimeException )
+{
+ // This object has NO model.
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XControlModel > SAL_CALL BaseContainerControl::getModel() throw( RuntimeException )
+{
+ // This object has NO model.
+ // return (XControlModel*)this ;
+ return Reference< XControlModel >();
+}
+
+//____________________________________________________________________________________________________________
+// XComponent
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::dispose() throw( RuntimeException )
+{
+ // Zuerst der Welt mitteilen, da� der Container wegfliegt. Dieses ist um einiges
+ // schneller wenn die Welt sowohl an den Controls als auch am Container horcht
+
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // remove listeners
+ EventObject aObject ;
+
+ aObject.Source = Reference< XComponent > ( (XControlContainer*)this, UNO_QUERY );
+ m_aListeners.disposeAndClear( aObject );
+
+ // remove controls
+ Sequence< Reference< XControl > > seqCtrls = getControls();
+ Reference< XControl > * pCtrls = seqCtrls.getArray();
+ sal_uInt32 nCtrls = seqCtrls.getLength();
+ sal_uInt32 nMaxCount = m_pControlInfoList->Count();
+ sal_uInt32 nCount = 0;
+
+ for ( nCount = 0; nCount < nMaxCount; ++nCount )
+ {
+ delete m_pControlInfoList->GetObject( 0 );
+ }
+ m_pControlInfoList->Clear();
+
+
+ for ( nCount = 0; nCount < nCtrls; ++nCount )
+ {
+ pCtrls [ nCount ] -> removeEventListener ( static_cast< XEventListener* >( static_cast< XWindowListener* >( this ) ) ) ;
+ pCtrls [ nCount ] -> dispose ( ) ;
+ }
+
+ // call baseclass
+ BaseControl::dispose();
+}
+
+//____________________________________________________________________________________________________________
+// XEventListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::disposing( const EventObject& rEvent ) throw( RuntimeException )
+{
+ Reference< XControl > xControl( rEvent.Source, UNO_QUERY );
+
+ // "removeControl" remove only, when control is an active control
+ removeControl( xControl );
+}
+
+//____________________________________________________________________________________________________________
+// XControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::addControl ( const OUString& rName, const Reference< XControl > & rControl ) throw( RuntimeException )
+{
+ if ( !rControl.is () )
+ return;
+
+ // take memory for new item
+ IMPL_ControlInfo* pNewControl = new IMPL_ControlInfo ;
+
+ if (pNewControl!=(IMPL_ControlInfo*)0)
+ {
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ // set control
+ pNewControl->sName = rName ;
+ pNewControl->xControl = rControl ;
+
+ // and insert in list
+ m_pControlInfoList->Insert ( pNewControl, LIST_APPEND ) ;
+
+ // initialize new control
+ pNewControl->xControl->setContext ( (OWeakObject*)this ) ;
+ pNewControl->xControl->addEventListener ( static_cast< XEventListener* >( static_cast< XWindowListener* >( this ) ) ) ;
+
+ // when container has a peer ...
+ if (getPeer().is())
+ {
+ // .. then create a peer on child
+ pNewControl->xControl->createPeer ( getPeer()->getToolkit(), getPeer() ) ;
+ impl_activateTabControllers () ;
+ }
+
+ // Send message to all listener
+ OInterfaceContainerHelper* pInterfaceContainer = m_aListeners.getContainer( ::getCppuType((const Reference< XContainerListener >*)0) ) ;
+
+ if (pInterfaceContainer)
+ {
+ // Build event
+ ContainerEvent aEvent ;
+
+ aEvent.Source = *this ;
+ aEvent.Element <<= rControl ;
+
+ // Get all listener
+ OInterfaceIteratorHelper aIterator (*pInterfaceContainer) ;
+
+ // Send event
+ while ( aIterator.hasMoreElements() )
+ {
+ ((XContainerListener*)aIterator.next())->elementInserted (aEvent) ;
+ }
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::addContainerListener ( const Reference< XContainerListener > & rListener ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ m_aListeners.addInterface ( ::getCppuType((const Reference< XContainerListener >*)0), rListener ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::removeControl ( const Reference< XControl > & rControl ) throw( RuntimeException )
+{
+ if ( rControl.is() )
+ {
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ sal_uInt32 nControls = m_pControlInfoList->Count () ;
+
+ for ( sal_uInt32 n=0; n<nControls; n++ )
+ {
+ // Search for right control
+ IMPL_ControlInfo* pControl = m_pControlInfoList->GetObject (n) ;
+ if ( rControl == pControl->xControl )
+ {
+ //.is it found ... remove listener from control
+ pControl->xControl->removeEventListener (static_cast< XEventListener* >( static_cast< XWindowListener* >( this ) )) ;
+ pControl->xControl->setContext ( Reference< XInterface > () ) ;
+
+ // ... free memory
+ delete pControl ;
+ m_pControlInfoList->Remove (n) ;
+
+ // Send message to all other listener
+ OInterfaceContainerHelper * pInterfaceContainer = m_aListeners.getContainer( ::getCppuType((const Reference< XContainerListener >*)0) ) ;
+
+ if (pInterfaceContainer)
+ {
+ ContainerEvent aEvent ;
+
+ aEvent.Source = *this ;
+ aEvent.Element <<= rControl ;
+
+ OInterfaceIteratorHelper aIterator (*pInterfaceContainer) ;
+
+ while ( aIterator.hasMoreElements() )
+ {
+ ((XContainerListener*)aIterator.next())->elementRemoved (aEvent) ;
+ }
+ }
+ // Break "for" !
+ break ;
+ }
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::removeContainerListener ( const Reference< XContainerListener > & rListener ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ m_aListeners.removeInterface ( ::getCppuType((const Reference< XContainerListener >*)0), rListener ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::setStatusText ( const OUString& rStatusText ) throw( RuntimeException )
+{
+ // go down to each parent
+ Reference< XControlContainer > xContainer ( getContext(), UNO_QUERY ) ;
+
+ if ( xContainer.is () )
+ {
+ xContainer->setStatusText ( rStatusText ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControlContainer
+//____________________________________________________________________________________________________________
+
+Reference< XControl > SAL_CALL BaseContainerControl::getControl ( const OUString& rName ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( Mutex::getGlobalMutex() ) ;
+
+ Reference< XControl > xRetControl = Reference< XControl > () ;
+ sal_uInt32 nControls = m_pControlInfoList->Count () ;
+
+ // Search for right control
+ for( sal_uInt32 nCount = 0; nCount < nControls; ++nCount )
+ {
+ IMPL_ControlInfo* pSearchControl = m_pControlInfoList->GetObject ( nCount ) ;
+
+ if ( pSearchControl->sName == rName )
+ {
+ // We have found it ...
+ // Break operation and return.
+ return pSearchControl->xControl ;
+ }
+ }
+
+ // We have not found it ... return NULL.
+ return Reference< XControl > () ;
+}
+
+//____________________________________________________________________________________________________________
+// XControlContainer
+//____________________________________________________________________________________________________________
+
+Sequence< Reference< XControl > > SAL_CALL BaseContainerControl::getControls () throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( Mutex::getGlobalMutex() ) ;
+
+ sal_uInt32 nControls = m_pControlInfoList->Count () ;
+ Sequence< Reference< XControl > > aDescriptor ( nControls ) ;
+ Reference< XControl > * pDestination = aDescriptor.getArray () ;
+ sal_uInt32 nCount = 0 ;
+
+ // Copy controls to sequence
+ for( nCount = 0; nCount < nControls; ++nCount )
+ {
+ IMPL_ControlInfo* pCopyControl = m_pControlInfoList->GetObject ( nCount ) ;
+ pDestination [ nCount ] = pCopyControl->xControl ;
+ }
+
+ // Return sequence
+ return aDescriptor ;
+}
+
+//____________________________________________________________________________________________________________
+// XUnoControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::addTabController ( const Reference< XTabController > & rTabController ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ sal_uInt32 nOldCount = m_xTabControllerList.getLength () ;
+ Sequence< Reference< XTabController > > aNewList ( nOldCount + 1 ) ;
+ sal_uInt32 nCount = 0 ;
+
+ // Copy old elements of sequence to new list.
+ for ( nCount = 0; nCount < nOldCount; ++nCount )
+ {
+ aNewList.getArray () [nCount] = m_xTabControllerList.getConstArray () [nCount] ;
+ }
+
+ // Add new controller
+ aNewList.getArray () [nOldCount] = rTabController ;
+
+ // change old and new list
+ m_xTabControllerList = aNewList ;
+}
+
+//____________________________________________________________________________________________________________
+// XUnoControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::removeTabController ( const Reference< XTabController > & rTabController ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ sal_uInt32 nMaxCount = m_xTabControllerList.getLength () ;
+ sal_uInt32 nCount = 0 ;
+
+ // Search right tabcontroller ...
+ for ( nCount = 0; nCount < nMaxCount; ++nCount )
+ {
+ if ( m_xTabControllerList.getConstArray () [nCount] == rTabController )
+ {
+ // ... if is it found ... remove it from list.
+ m_xTabControllerList.getArray()[ nCount ] = Reference< XTabController >() ;
+ break ;
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XUnoControlContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::setTabControllers ( const Sequence< Reference< XTabController > >& rTabControllers ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ m_xTabControllerList = rTabControllers ;
+}
+
+Sequence<Reference< XTabController > > SAL_CALL BaseContainerControl::getTabControllers () throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ return m_xTabControllerList ;
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseContainerControl::setVisible ( sal_Bool bVisible ) throw( RuntimeException )
+{
+ // override baseclass definition
+ BaseControl::setVisible ( bVisible ) ;
+
+ // is it a top window ?
+ if ( !getContext().is() && bVisible )
+ {
+ // then show it automaticly
+ createPeer ( Reference< XToolkit > (), Reference< XWindowPeer > () ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+WindowDescriptor* BaseContainerControl::impl_getWindowDescriptor ( const Reference< XWindowPeer > & rParentPeer )
+{
+ // - used from "createPeer()" to set the values of an WindowDescriptor !!!
+ // - if you will change the descriptor-values, you must override thid virtuell function
+ // - the caller must release the memory for this dynamical descriptor !!!
+
+ WindowDescriptor * aDescriptor = new WindowDescriptor ;
+
+ aDescriptor->Type = WindowClass_CONTAINER ;
+ aDescriptor->WindowServiceName = OUString(RTL_CONSTASCII_USTRINGPARAM("window")) ;
+ aDescriptor->ParentIndex = -1 ;
+ aDescriptor->Parent = rParentPeer ;
+ aDescriptor->Bounds = getPosSize () ;
+ aDescriptor->WindowAttributes = 0 ;
+
+ return aDescriptor ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void BaseContainerControl::impl_paint ( sal_Int32 /*nX*/, sal_Int32 /*nY*/, const Reference< XGraphics > & /*rGraphics*/ )
+{
+/*
+ if (rGraphics.is())
+ {
+ for ( sal_uInt32 n=m_pControlInfoList->Count(); n; )
+ {
+ ControlInfo* pSearchControl = m_pControlInfoList->GetObject (--n) ;
+
+ pSearchControl->xControl->paint ( nX, nY, rGraphics ) ;
+ }
+ }
+*/
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void BaseContainerControl::impl_activateTabControllers ()
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ sal_uInt32 nMaxCount = m_xTabControllerList.getLength () ;
+ sal_uInt32 nCount = 0 ;
+
+ for ( nCount = 0; nCount < nMaxCount; ++nCount )
+ {
+ m_xTabControllerList.getArray () [nCount]->setContainer ( this ) ;
+ m_xTabControllerList.getArray () [nCount]->activateTabOrder ( ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void BaseContainerControl::impl_cleanMemory ()
+{
+ // Get count of listitems.
+ sal_uInt32 nMaxCount = m_pControlInfoList->Count () ;
+ sal_uInt32 nCount = 0 ;
+
+ // Delete all items.
+ for ( nCount = 0; nCount < nMaxCount; ++nCount )
+ {
+ // Delete everytime first element of list!
+ // We count from 0 to MAX, where "MAX=count of items" BEFORE we delete some elements!
+ // If we use "GetObject ( nCount )" ... it can be, that we have an index greater then count of current elements!
+
+ IMPL_ControlInfo* pSearchControl = m_pControlInfoList->GetObject ( 0 ) ;
+ delete pSearchControl ;
+ }
+
+ // Delete list himself.
+ m_pControlInfoList->Clear () ;
+ delete m_pControlInfoList ;
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/base/basecontrol.cxx b/UnoControls/source/base/basecontrol.cxx
new file mode 100644
index 000000000000..f26250bed987
--- /dev/null
+++ b/UnoControls/source/base/basecontrol.cxx
@@ -0,0 +1,1022 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+//____________________________________________________________________________________________________________
+// my own include
+//____________________________________________________________________________________________________________
+
+#include "basecontrol.hxx"
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+#include <com/sun/star/awt/XDevice.hpp>
+#include <com/sun/star/awt/XDisplayBitmap.hpp>
+#include <com/sun/star/awt/DeviceInfo.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <cppuhelper/typeprovider.hxx>
+
+//____________________________________________________________________________________________________________
+// includes of my own project
+//____________________________________________________________________________________________________________
+
+//____________________________________________________________________________________________________________
+// namespaces
+//____________________________________________________________________________________________________________
+
+using namespace ::cppu ;
+using namespace ::osl ;
+using namespace ::rtl ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+using namespace ::com::sun::star::awt ;
+
+namespace unocontrols{
+
+//____________________________________________________________________________________________________________
+// defines
+//____________________________________________________________________________________________________________
+
+#define DEFAULT_PMULTIPLEXER NULL
+#define DEFAULT_X 0
+#define DEFAULT_Y 0
+#define DEFAULT_WIDTH 100
+#define DEFAULT_HEIGHT 100
+#define DEFAULT_VISIBLE sal_False
+#define DEFAULT_INDESIGNMODE sal_False
+#define DEFAULT_ENABLE sal_True
+#define SERVICE_VCLTOOLKIT "com.sun.star.awt.Toolkit"
+
+//____________________________________________________________________________________________________________
+// construct/destruct
+//____________________________________________________________________________________________________________
+
+BaseControl::BaseControl( const Reference< XMultiServiceFactory >& xFactory )
+ : IMPL_MutexContainer ( )
+ , OComponentHelper ( m_aMutex )
+ , m_xFactory ( xFactory )
+ , m_pMultiplexer ( DEFAULT_PMULTIPLEXER )
+ , m_nX ( DEFAULT_X )
+ , m_nY ( DEFAULT_Y )
+ , m_nWidth ( DEFAULT_WIDTH )
+ , m_nHeight ( DEFAULT_HEIGHT )
+ , m_bVisible ( DEFAULT_VISIBLE )
+ , m_bInDesignMode ( DEFAULT_INDESIGNMODE )
+ , m_bEnable ( DEFAULT_ENABLE )
+{
+}
+
+BaseControl::~BaseControl()
+{
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL BaseControl::queryInterface( const Type& rType ) throw( RuntimeException )
+{
+ Any aReturn ;
+ if ( m_xDelegator.is() == sal_True )
+ {
+ // If an delegator exist, forward question to his queryInterface.
+ // Delegator will ask his own queryAggregation!
+ aReturn = m_xDelegator->queryInterface( rType );
+ }
+ else
+ {
+ // If an delegator unknown, forward question to own queryAggregation.
+ aReturn = queryAggregation( rType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OComponentHelper::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OComponentHelper::release();
+}
+
+//____________________________________________________________________________________________________________
+// XTypeProvider
+//____________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL BaseControl::getTypes() throw( RuntimeException )
+{
+ // Optimize this method !
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
+ static OTypeCollection* pTypeCollection = NULL ;
+
+ if ( pTypeCollection == NULL )
+ {
+ // Ready for multithreading; get global mutex for first call of this method only! see before
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+
+ // Control these pointer again ... it can be, that another instance will be faster then these!
+ if ( pTypeCollection == NULL )
+ {
+ // Create a static typecollection ...
+ static OTypeCollection aTypeCollection( ::getCppuType(( const Reference< XPaintListener >*)NULL ) ,
+ ::getCppuType(( const Reference< XWindowListener>*)NULL ) ,
+ ::getCppuType(( const Reference< XView >*)NULL ) ,
+ ::getCppuType(( const Reference< XWindow >*)NULL ) ,
+ ::getCppuType(( const Reference< XServiceInfo >*)NULL ) ,
+ ::getCppuType(( const Reference< XControl >*)NULL ) ,
+ OComponentHelper::getTypes()
+ );
+
+ // ... and set his address to static pointer!
+ pTypeCollection = &aTypeCollection ;
+ }
+ }
+
+ return pTypeCollection->getTypes();
+}
+
+//____________________________________________________________________________________________________________
+// XTypeProvider
+//____________________________________________________________________________________________________________
+
+Sequence< sal_Int8 > SAL_CALL BaseControl::getImplementationId() throw( RuntimeException )
+{
+ // Create one Id for all instances of this class.
+ // Use ethernet address to do this! (sal_True)
+
+ // Optimize this method
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pID is NULL - for the second call pID is different from NULL!
+ static OImplementationId* pID = NULL ;
+
+ if ( pID == NULL )
+ {
+ // Ready for multithreading; get global mutex for first call of this method only! see before
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+
+ // Control these pointer again ... it can be, that another instance will be faster then these!
+ if ( pID == NULL )
+ {
+ // Create a new static ID ...
+ static OImplementationId aID( sal_False );
+ // ... and set his address to static pointer!
+ pID = &aID ;
+ }
+ }
+
+ return pID->getImplementationId();
+}
+
+//____________________________________________________________________________________________________________
+// XAggregation
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setDelegator( const Reference< XInterface >& xDel ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ m_xDelegator = xDel;
+}
+
+//____________________________________________________________________________________________________________
+// XAggregation
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL BaseControl::queryAggregation( const Type& aType ) throw( RuntimeException )
+{
+ // Ask for my own supported interfaces ...
+ // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XPaintListener*> ( this ) ,
+ static_cast< XWindowListener*> ( this ) ,
+ static_cast< XView* > ( this ) ,
+ static_cast< XWindow* > ( this ) ,
+ static_cast< XServiceInfo* > ( this ) ,
+ static_cast< XControl* > ( this )
+ )
+ );
+
+ // If searched interface supported by this class ...
+ if ( aReturn.hasValue() == sal_True )
+ {
+ // ... return this information.
+ return aReturn ;
+ }
+ else
+ {
+ // Else; ... ask baseclass for interfaces!
+ return OComponentHelper::queryAggregation( aType );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XServiceInfo
+//____________________________________________________________________________________________________________
+
+OUString SAL_CALL BaseControl::getImplementationName() throw( RuntimeException )
+{
+ return impl_getStaticImplementationName();
+}
+
+//____________________________________________________________________________________________________________
+// XServiceInfo
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL BaseControl::supportsService( const OUString& sServiceName ) throw( RuntimeException )
+{
+ Sequence< OUString > seqServiceNames = getSupportedServiceNames();
+ const OUString* pArray = seqServiceNames.getConstArray();
+ for ( sal_Int32 nCounter=0; nCounter<seqServiceNames.getLength(); nCounter++ )
+ {
+ if ( pArray[nCounter] == sServiceName )
+ {
+ return sal_True ;
+ }
+ }
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XServiceInfo
+//____________________________________________________________________________________________________________
+
+Sequence< OUString > SAL_CALL BaseControl::getSupportedServiceNames() throw( RuntimeException )
+{
+ return impl_getStaticSupportedServiceNames();
+}
+
+//____________________________________________________________________________________________________________
+// XComponent
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::dispose() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ if ( m_pMultiplexer != NULL )
+ {
+ // to all other paint, focus, etc.
+ m_pMultiplexer->disposeAndClear();
+ }
+
+ // set the service manager to disposed
+ OComponentHelper::dispose();
+
+ // release context and peer
+ m_xContext = Reference< XInterface >();
+ impl_releasePeer();
+
+ // release view
+ if ( m_xGraphicsView.is() == sal_True )
+ {
+ m_xGraphicsView = Reference< XGraphics >();
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XComponent
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::addEventListener( const Reference< XEventListener >& xListener ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ OComponentHelper::addEventListener( xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XComponent
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::removeEventListener( const Reference< XEventListener >& xListener ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ OComponentHelper::removeEventListener( xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::createPeer( const Reference< XToolkit >& xToolkit ,
+ const Reference< XWindowPeer >& xParentPeer ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ if ( m_xPeer.is() == sal_False )
+ {
+ // use method "BaseControl::getWindowDescriptor()" fot change window attributes !!!
+ WindowDescriptor* pDescriptor = impl_getWindowDescriptor( xParentPeer );
+
+ if ( m_bVisible == sal_True )
+ {
+ pDescriptor->WindowAttributes |= WindowAttribute::SHOW ;
+ }
+
+ // very slow under remote conditions!
+ // create the window on the server
+ Reference< XToolkit > xLocalToolkit = xToolkit ;
+ if ( xLocalToolkit.is() == sal_False )
+ {
+ // but first create wellknown toolkit, if it not exist
+ xLocalToolkit = Reference< XToolkit > ( m_xFactory->createInstance( OUString::createFromAscii( SERVICE_VCLTOOLKIT ) ), UNO_QUERY );
+ }
+ m_xPeer = xLocalToolkit->createWindow( *pDescriptor );
+ m_xPeerWindow = Reference< XWindow >( m_xPeer, UNO_QUERY );
+
+ // don't forget to release the memory!
+ delete pDescriptor ;
+
+ if ( m_xPeerWindow.is() == sal_True )
+ {
+ if ( m_pMultiplexer != NULL )
+ {
+ m_pMultiplexer->setPeer( m_xPeerWindow );
+ }
+
+ // create new referenz to xgraphics for painting on a peer
+ // and add a paint listener
+ Reference< XDevice > xDevice( m_xPeerWindow, UNO_QUERY );
+
+ if ( xDevice.is() == sal_True )
+ {
+ m_xGraphicsPeer = xDevice->createGraphics();
+ }
+
+ if ( m_xGraphicsPeer.is() == sal_True )
+ {
+ addPaintListener( this );
+ addWindowListener( this );
+ }
+
+ // PosSize_POSSIZE defined in <stardiv/uno/awt/window.hxx>
+ m_xPeerWindow->setPosSize( m_nX, m_nY, m_nWidth, m_nHeight, PosSize::POSSIZE );
+ m_xPeerWindow->setEnable( m_bEnable );
+ m_xPeerWindow->setVisible( m_bVisible && !m_bInDesignMode );
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setContext( const Reference< XInterface >& xContext ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ m_xContext = xContext ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setDesignMode( sal_Bool bOn ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ m_bInDesignMode = bOn ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XInterface > SAL_CALL BaseControl::getContext() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ return m_xContext ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XWindowPeer > SAL_CALL BaseControl::getPeer() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ return m_xPeer ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XView > SAL_CALL BaseControl::getView() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ return Reference< XView >( (OWeakObject*)this, UNO_QUERY );
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL BaseControl::isDesignMode() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ return m_bInDesignMode ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL BaseControl::isTransparent() throw( RuntimeException )
+{
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setPosSize( sal_Int32 nX ,
+ sal_Int32 nY ,
+ sal_Int32 nWidth ,
+ sal_Int32 nHeight ,
+ sal_Int16 nFlags ) throw( RuntimeException )
+{
+ // - change size and position of window and save the values
+ // - "nFlags" declared in <stardiv/uno/awt/window.hxx> ("#define PosSize_X .....")
+
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ sal_Bool bChanged = sal_False ;
+
+ if ( nFlags & PosSize::X )
+ {
+ bChanged |= m_nX != nX, m_nX = nX ;
+ }
+
+ if ( nFlags & PosSize::Y )
+ {
+ bChanged |= m_nY != nY, m_nY = nY ;
+ }
+
+ if ( nFlags & PosSize::WIDTH )
+ {
+ bChanged |= m_nWidth != nWidth, m_nWidth = nWidth ;
+ }
+
+ if ( nFlags & PosSize::HEIGHT )
+ {
+ bChanged |= m_nHeight != nHeight, m_nHeight = nHeight ;
+ }
+
+ if ( bChanged && m_xPeerWindow.is() )
+ {
+ m_xPeerWindow->setPosSize( m_nX, m_nY, m_nWidth, m_nHeight, nFlags );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setVisible( sal_Bool bVisible ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // Set new state of flag
+ m_bVisible = bVisible ;
+
+ if ( m_xPeerWindow.is() == sal_True )
+ {
+ // Set it also on peerwindow
+ m_xPeerWindow->setVisible( m_bVisible );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setEnable( sal_Bool bEnable ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // Set new state of flag
+ m_bEnable = bEnable ;
+
+ if ( m_xPeerWindow.is() == sal_True )
+ {
+ // Set it also on peerwindow
+ m_xPeerWindow->setEnable( m_bEnable );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setFocus() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ if ( m_xPeerWindow.is() == sal_True )
+ {
+ m_xPeerWindow->setFocus();
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+Rectangle SAL_CALL BaseControl::getPosSize() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ return Rectangle( m_nX, m_nY , m_nWidth, m_nHeight );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::addWindowListener( const Reference< XWindowListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->advise( ::getCppuType(( const Reference< XWindowListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::addFocusListener( const Reference< XFocusListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->advise( ::getCppuType(( const Reference< XFocusListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::addKeyListener( const Reference< XKeyListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->advise( ::getCppuType(( const Reference< XKeyListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::addMouseListener( const Reference< XMouseListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->advise( ::getCppuType(( const Reference< XMouseListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::addMouseMotionListener( const Reference< XMouseMotionListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->advise( ::getCppuType(( const Reference< XMouseMotionListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::addPaintListener( const Reference< XPaintListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->advise( ::getCppuType(( const Reference< XPaintListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::removeWindowListener( const Reference< XWindowListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->unadvise( ::getCppuType(( const Reference< XWindowListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::removeFocusListener( const Reference< XFocusListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->unadvise( ::getCppuType(( const Reference< XFocusListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::removeKeyListener( const Reference< XKeyListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->unadvise( ::getCppuType(( const Reference< XKeyListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::removeMouseListener( const Reference< XMouseListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->unadvise( ::getCppuType(( const Reference< XMouseListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::removeMouseMotionListener( const Reference< XMouseMotionListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->unadvise( ::getCppuType(( const Reference< XMouseMotionListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::removePaintListener( const Reference< XPaintListener >& xListener ) throw( RuntimeException )
+{
+ impl_getMultiplexer()->unadvise( ::getCppuType(( const Reference< XPaintListener >*)0), xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XView
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::draw( sal_Int32 nX ,
+ sal_Int32 nY ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // - paint to an view
+ // - use the method "paint()"
+ // - see also "windowPaint()"
+ impl_paint( nX, nY, m_xGraphicsView );
+}
+
+//____________________________________________________________________________________________________________
+// XView
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL BaseControl::setGraphics( const Reference< XGraphics >& xDevice ) throw( RuntimeException )
+{
+ // - set the graphics for an view
+ // - in this class exist 2 graphics-member ... one for peer[_xGraphicsPeer] and one for view[_xGraphicsView]
+ // - they are used by "windowPaint() and draw()", forwarded to "paint ()"
+ sal_Bool bReturn = sal_False ;
+ if ( xDevice.is() == sal_True )
+ {
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ m_xGraphicsView = xDevice ;
+ bReturn = sal_True ;
+ }
+
+ return bReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XView
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::setZoom( float /*fZoomX*/ ,
+ float /*fZoomY*/ ) throw( RuntimeException )
+{
+ // Not implemented yet
+}
+
+//____________________________________________________________________________________________________________
+// XView
+//____________________________________________________________________________________________________________
+
+Reference< XGraphics > SAL_CALL BaseControl::getGraphics() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ return m_xGraphicsView ;
+}
+
+//____________________________________________________________________________________________________________
+// XView
+//____________________________________________________________________________________________________________
+
+Size SAL_CALL BaseControl::getSize() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+ return Size( m_nWidth, m_nHeight );
+}
+
+//____________________________________________________________________________________________________________
+// XEventListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::disposing( const EventObject& /*aSource*/ ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // - release ALL references
+ // - it must be !!!
+ if ( m_xGraphicsPeer.is() == sal_True )
+ {
+ removePaintListener( this );
+ removeWindowListener( this );
+ m_xGraphicsPeer = Reference< XGraphics >();
+ }
+
+ if ( m_xGraphicsView.is() == sal_True )
+ {
+ m_xGraphicsView = Reference< XGraphics >();
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XPaintListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::windowPaint( const PaintEvent& /*aEvent*/ ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // - repaint the peer
+ // - use the method "paint ()" for painting on a peer and a print device !!!
+ // - see also "draw ()"
+ impl_paint( 0, 0, m_xGraphicsPeer );
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::windowResized( const WindowEvent& aEvent ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ m_nWidth = aEvent.Width ;
+ m_nHeight = aEvent.Height ;
+ WindowEvent aMappedEvent = aEvent;
+ aMappedEvent.X = 0;
+ aMappedEvent.Y = 0;
+ impl_recalcLayout( aMappedEvent );
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::windowMoved( const WindowEvent& aEvent ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ m_nWidth = aEvent.Width ;
+ m_nHeight = aEvent.Height ;
+ WindowEvent aMappedEvent = aEvent;
+ aMappedEvent.X = 0;
+ aMappedEvent.Y = 0;
+ impl_recalcLayout( aMappedEvent );
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::windowShown( const EventObject& /*aEvent*/ ) throw( RuntimeException )
+{
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL BaseControl::windowHidden( const EventObject& /*aEvent*/ ) throw( RuntimeException )
+{
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service in DLL
+// (In this BASE-implementation not implemented! Overwrite it in derived classes.)
+//____________________________________________________________________________________________________________
+
+const Sequence< OUString > BaseControl::impl_getStaticSupportedServiceNames()
+{
+ return Sequence< OUString >();
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service in DLL
+// (In this BASE-implementation not implemented! Overwrite it in derived classes.)
+//____________________________________________________________________________________________________________
+
+const OUString BaseControl::impl_getStaticImplementationName()
+{
+ return OUString();
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+const Reference< XMultiServiceFactory > BaseControl::impl_getMultiServiceFactory()
+{
+ return m_xFactory ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+const Reference< XWindow > BaseControl::impl_getPeerWindow()
+{
+ return m_xPeerWindow ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+const Reference< XGraphics > BaseControl::impl_getGraphicsPeer()
+{
+ return m_xGraphicsPeer ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+const sal_Int32& BaseControl::impl_getWidth()
+{
+ return m_nWidth ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+const sal_Int32& BaseControl::impl_getHeight()
+{
+ return m_nHeight ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+WindowDescriptor* BaseControl::impl_getWindowDescriptor( const Reference< XWindowPeer >& xParentPeer )
+{
+ // - used from "createPeer()" to set the values of an ::com::sun::star::awt::WindowDescriptor !!!
+ // - if you will change the descriptor-values, you must override this virtuell function
+ // - the caller must release the memory for this dynamical descriptor !!!
+
+ WindowDescriptor* pDescriptor = new WindowDescriptor ;
+
+ pDescriptor->Type = WindowClass_SIMPLE ;
+ pDescriptor->WindowServiceName = OUString::createFromAscii( "window" ) ;
+ pDescriptor->ParentIndex = -1 ;
+ pDescriptor->Parent = xParentPeer ;
+ pDescriptor->Bounds = getPosSize () ;
+ pDescriptor->WindowAttributes = 0 ;
+
+ return pDescriptor ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void BaseControl::impl_paint( sal_Int32 /*nX*/ ,
+ sal_Int32 /*nY*/ ,
+ const Reference< XGraphics >& /*xGraphics*/ )
+{
+ // - one paint method for peer AND view !!!
+ // (see also => "windowPaint()" and "draw()")
+ // - not used in this implementation, but its not necessary to make it pure virtual !!!
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void BaseControl::impl_recalcLayout( const WindowEvent& /*aEvent*/ )
+{
+ // We need as virtual function to support automaticly resizing of derived controls!
+ // But we make it not pure virtual because it's not neccessary for all derived classes!
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+Reference< XInterface > BaseControl::impl_getDelegator()
+{
+ return m_xDelegator ;
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void BaseControl::impl_releasePeer()
+{
+ if ( m_xPeer.is() == sal_True )
+ {
+ if ( m_xGraphicsPeer.is() == sal_True )
+ {
+ removePaintListener( this );
+ removeWindowListener( this );
+ m_xGraphicsPeer = Reference< XGraphics >();
+ }
+
+ m_xPeer->dispose();
+ m_xPeerWindow = Reference< XWindow >();
+ m_xPeer = Reference< XWindowPeer >();
+
+ if ( m_pMultiplexer != NULL )
+ {
+ // take changes on multiplexer
+ m_pMultiplexer->setPeer( Reference< XWindow >() );
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+OMRCListenerMultiplexerHelper* BaseControl::impl_getMultiplexer()
+{
+ if ( m_pMultiplexer == NULL )
+ {
+ m_pMultiplexer = new OMRCListenerMultiplexerHelper( (XWindow*)this, m_xPeerWindow );
+ m_xMultiplexer = Reference< XInterface >( (OWeakObject*)m_pMultiplexer, UNO_QUERY );
+ }
+
+ return m_pMultiplexer ;
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/base/makefile.mk b/UnoControls/source/base/makefile.mk
new file mode 100644
index 000000000000..be1fcbf5c8c2
--- /dev/null
+++ b/UnoControls/source/base/makefile.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..$/..
+
+PRJNAME=UnoControls
+TARGET=base
+ENABLE_EXCEPTIONS=TRUE
+#LIBTARGET=NO
+#USE_LDUMP2=TRUE
+#USE_DEFFILE=TRUE
+
+# --- Settings -----------------------------------------------------
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+
+# --- Files --------------------------------------------------------
+SLOFILES= $(SLO)$/multiplexer.obj \
+ $(SLO)$/basecontrol.obj \
+ $(SLO)$/basecontainercontrol.obj \
+ $(SLO)$/registercontrols.obj
+
+#LIB1TARGET= $(SLB)$/$(TARGET).lib
+#LIB1OBJFILES= $(SLOFILES)
+
+#SHL1TARGET= $(TARGET)$(DLLPOSTFIX)
+
+#SHL1STDLIBS=\
+# $(ONELIB) \
+# $(USRLIB) \
+# $(UNOLIB) \
+# $(OSLLIB) \
+# $(TOOLSLIB) \
+# $(RTLLIB)
+
+#SHL1DEPN= makefile.mk
+#SHL1LIBS= $(LIB1TARGET)
+#SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+#DEF1NAME= $(SHL1TARGET)
+#DEF1EXPORTFILE= exports.dxp
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
+#.INCLUDE : $(PRJ)$/util$/target.pmk
diff --git a/UnoControls/source/base/multiplexer.cxx b/UnoControls/source/base/multiplexer.cxx
new file mode 100644
index 000000000000..4ac7156eb2ae
--- /dev/null
+++ b/UnoControls/source/base/multiplexer.cxx
@@ -0,0 +1,539 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "multiplexer.hxx"
+
+#include <osl/diagnose.h>
+
+using namespace ::cppu ;
+using namespace ::osl ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::awt ;
+using namespace ::com::sun::star::lang ;
+
+namespace unocontrols{
+
+//____________________________________________________________________________________________________________
+// macros
+//____________________________________________________________________________________________________________
+
+#define MULTIPLEX( INTERFACE, METHOD, EVENTTYP, EVENT ) \
+ \
+ /* First get all interfaces from container with right type.*/ \
+ OInterfaceContainerHelper* pContainer = m_aListenerHolder.getContainer( ::getCppuType((const Reference< INTERFACE >*)0) ); \
+ /* Do the follow only, if elements in container exist.*/ \
+ if( pContainer != NULL ) \
+ { \
+ OInterfaceIteratorHelper aIterator( *pContainer ); \
+ EVENTTYP aLocalEvent = EVENT; \
+ /* Remark: The control is the event source not the peer.*/ \
+ /* We must change the source of the event. */ \
+ aLocalEvent.Source = m_xControl ; \
+ /* Is the control not destroyed? */ \
+ if( aLocalEvent.Source.is() == sal_True ) \
+ { \
+ if( aIterator.hasMoreElements() ) \
+ { \
+ INTERFACE * pListener = (INTERFACE *)aIterator.next(); \
+ try \
+ { \
+ pListener->METHOD( aLocalEvent ); \
+ } \
+ catch( RuntimeException& ) \
+ { \
+ /* Ignore all system exceptions from the listener! */ \
+ } \
+ } \
+ } \
+ }
+
+//____________________________________________________________________________________________________________
+// construct/destruct
+//____________________________________________________________________________________________________________
+
+OMRCListenerMultiplexerHelper::OMRCListenerMultiplexerHelper( const Reference< XWindow >& xControl ,
+ const Reference< XWindow >& xPeer )
+ : m_xPeer ( xPeer )
+ , m_xControl ( xControl )
+ , m_aListenerHolder ( m_aMutex )
+{
+}
+
+OMRCListenerMultiplexerHelper::OMRCListenerMultiplexerHelper( const OMRCListenerMultiplexerHelper& /*aCopyInstance*/ )
+ : XFocusListener()
+ , XWindowListener()
+ , XKeyListener()
+ , XMouseListener()
+ , XMouseMotionListener()
+ , XPaintListener()
+ , XTopWindowListener()
+ , OWeakObject()
+ , m_aListenerHolder ( m_aMutex )
+{
+}
+
+OMRCListenerMultiplexerHelper::~OMRCListenerMultiplexerHelper()
+{
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL OMRCListenerMultiplexerHelper::queryInterface( const Type& rType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Ask for my own supported interfaces ...
+ // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
+ Any aReturn ( ::cppu::queryInterface( rType ,
+ static_cast< XWindowListener* > ( this ) ,
+ static_cast< XKeyListener* > ( this ) ,
+ static_cast< XFocusListener* > ( this ) ,
+ static_cast< XMouseListener* > ( this ) ,
+ static_cast< XMouseMotionListener* > ( this ) ,
+ static_cast< XPaintListener* > ( this ) ,
+ static_cast< XTopWindowListener* > ( this ) ,
+ static_cast< XTopWindowListener* > ( this )
+ )
+ );
+
+ // If searched interface supported by this class ...
+ if ( aReturn.hasValue() == sal_True )
+ {
+ // ... return this information.
+ return aReturn ;
+ }
+ else
+ {
+ // Else; ... ask baseclass for interfaces!
+ return OWeakObject::queryInterface( rType );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL OMRCListenerMultiplexerHelper::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OWeakObject::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL OMRCListenerMultiplexerHelper::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OWeakObject::release();
+}
+
+//____________________________________________________________________________________________________________
+// operator
+//____________________________________________________________________________________________________________
+
+OMRCListenerMultiplexerHelper::operator Reference< XInterface >() const
+{
+ return ((OWeakObject*)this) ;
+}
+
+//____________________________________________________________________________________________________________
+// operator
+//____________________________________________________________________________________________________________
+
+//OMRCListenerMultiplexerHelper& OMRCListenerMultiplexerHelper::operator= ( const OMRCListenerMultiplexerHelper& aCopyInstance )
+//{
+// return this ;
+//}
+
+//____________________________________________________________________________________________________________
+// container method
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::setPeer( const Reference< XWindow >& xPeer )
+{
+ MutexGuard aGuard( m_aMutex );
+ if( m_xPeer != xPeer )
+ {
+ if( m_xPeer.is() )
+ {
+ // get all types from the listener added to the peer
+ Sequence< Type > aContainedTypes = m_aListenerHolder.getContainedTypes();
+ const Type* pArray = aContainedTypes.getConstArray();
+ sal_Int32 nCount = aContainedTypes.getLength();
+ // loop over all listener types and remove the listeners from the peer
+ for( sal_Int32 i=0; i<nCount; i++ )
+ impl_unadviseFromPeer( m_xPeer, pArray[i] );
+ }
+ m_xPeer = xPeer;
+ if( m_xPeer.is() )
+ {
+ // get all types from the listener added to the peer
+ Sequence< Type > aContainedTypes = m_aListenerHolder.getContainedTypes();
+ const Type* pArray = aContainedTypes.getConstArray();
+ sal_Int32 nCount = aContainedTypes.getLength();
+ // loop over all listener types and add the listeners to the peer
+ for( sal_Int32 i = 0; i < nCount; i++ )
+ impl_adviseToPeer( m_xPeer, pArray[i] );
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// container method
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::disposeAndClear()
+{
+ EventObject aEvent ;
+ aEvent.Source = m_xControl ;
+ m_aListenerHolder.disposeAndClear( aEvent );
+}
+
+//____________________________________________________________________________________________________________
+// container method
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::advise( const Type& aType ,
+ const Reference< XInterface >& xListener )
+{
+ MutexGuard aGuard( m_aMutex );
+ if( m_aListenerHolder.addInterface( aType, xListener ) == 1 )
+ {
+ // the first listener is added
+ if( m_xPeer.is() )
+ {
+ impl_adviseToPeer( m_xPeer, aType );
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// container method
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::unadvise( const Type& aType ,
+ const Reference< XInterface >& xListener )
+{
+ MutexGuard aGuard( m_aMutex );
+ if( m_aListenerHolder.removeInterface( aType, xListener ) == 0 )
+ {
+ // the last listener is removed
+ if ( m_xPeer.is() )
+ {
+ impl_unadviseFromPeer( m_xPeer, aType );
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XEventListener
+//____________________________________________________________________________________________________________
+
+void SAL_CALL OMRCListenerMultiplexerHelper::disposing( const EventObject& /*aSource*/ ) throw( RuntimeException )
+{
+ MutexGuard aGuard( m_aMutex );
+ // peer is disposed, clear the reference
+ m_xPeer = Reference< XWindow >();
+}
+
+//____________________________________________________________________________________________________________
+// XFcousListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::focusGained(const FocusEvent& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XFocusListener, focusGained, FocusEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XFcousListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::focusLost(const FocusEvent& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XFocusListener, focusLost, FocusEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowResized(const WindowEvent& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XWindowListener, windowResized, WindowEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowMoved(const WindowEvent& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XWindowListener, windowMoved, WindowEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowShown(const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XWindowListener, windowShown, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowHidden(const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XWindowListener, windowHidden, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XKeyListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::keyPressed(const KeyEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XKeyListener, keyPressed, KeyEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XKeyListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::keyReleased(const KeyEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XKeyListener, keyReleased, KeyEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XMouseListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::mousePressed(const MouseEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XMouseListener, mousePressed, MouseEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XMouseListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::mouseReleased(const MouseEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XMouseListener, mouseReleased, MouseEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XMouseListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::mouseEntered(const MouseEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XMouseListener, mouseEntered, MouseEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XMouseListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::mouseExited(const MouseEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XMouseListener, mouseExited, MouseEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XMouseMotionListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::mouseDragged(const MouseEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XMouseMotionListener, mouseDragged, MouseEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XMouseMotionListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::mouseMoved(const MouseEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XMouseMotionListener, mouseMoved, MouseEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XPaintListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowPaint(const PaintEvent& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XPaintListener, windowPaint, PaintEvent, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XTopWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowOpened(const EventObject& aEvent) throw( RuntimeException )
+{
+ MULTIPLEX( XTopWindowListener, windowOpened, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XTopWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowClosing( const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XTopWindowListener, windowClosing, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XTopWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowClosed( const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XTopWindowListener, windowClosed, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XTopWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowMinimized( const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XTopWindowListener, windowMinimized, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XTopWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowNormalized( const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XTopWindowListener, windowNormalized, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XTopWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowActivated( const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XTopWindowListener, windowActivated, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// XTopWindowListener
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::windowDeactivated( const EventObject& aEvent ) throw( RuntimeException )
+{
+ MULTIPLEX( XTopWindowListener, windowDeactivated, EventObject, aEvent )
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::impl_adviseToPeer( const Reference< XWindow >& xPeer ,
+ const Type& aType )
+{
+ // add a listener to the source (peer)
+ if( aType == ::getCppuType((const Reference< XWindowListener >*)0) )
+ xPeer->addWindowListener( this );
+ else if( aType == ::getCppuType((const Reference< XKeyListener >*)0) )
+ xPeer->addKeyListener( this );
+ else if( aType == ::getCppuType((const Reference< XFocusListener >*)0) )
+ xPeer->addFocusListener( this );
+ else if( aType == ::getCppuType((const Reference< XMouseListener >*)0) )
+ xPeer->addMouseListener( this );
+ else if( aType == ::getCppuType((const Reference< XMouseMotionListener >*)0) )
+ xPeer->addMouseMotionListener( this );
+ else if( aType == ::getCppuType((const Reference< XPaintListener >*)0) )
+ xPeer->addPaintListener( this );
+ else if( aType == ::getCppuType((const Reference< XTopWindowListener >*)0) )
+ {
+ Reference< XTopWindow > xTop( xPeer, UNO_QUERY );
+ if( xTop.is() )
+ xTop->addTopWindowListener( this );
+ }
+ else
+ {
+ OSL_ENSURE( sal_False, "unknown listener" );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void OMRCListenerMultiplexerHelper::impl_unadviseFromPeer( const Reference< XWindow >& xPeer ,
+ const Type& aType )
+{
+ // the last listener is removed, remove the listener from the source (peer)
+ if( aType == ::getCppuType((const Reference< XWindowListener >*)0) )
+ xPeer->removeWindowListener( this );
+ else if( aType == ::getCppuType((const Reference< XKeyListener >*)0) )
+ xPeer->removeKeyListener( this );
+ else if( aType == ::getCppuType((const Reference< XFocusListener >*)0) )
+ xPeer->removeFocusListener( this );
+ else if( aType == ::getCppuType((const Reference< XMouseListener >*)0) )
+ xPeer->removeMouseListener( this );
+ else if( aType == ::getCppuType((const Reference< XMouseMotionListener >*)0) )
+ xPeer->removeMouseMotionListener( this );
+ else if( aType == ::getCppuType((const Reference< XPaintListener >*)0) )
+ xPeer->removePaintListener( this );
+ else if( aType == ::getCppuType((const Reference< XTopWindowListener >*)0) )
+ {
+ Reference< XTopWindow > xTop( xPeer, UNO_QUERY );
+ if( xTop.is() )
+ xTop->removeTopWindowListener( this );
+ }
+ else
+ {
+ OSL_ENSURE( sal_False, "unknown listener" );
+ }
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/base/registercontrols.cxx b/UnoControls/source/base/registercontrols.cxx
new file mode 100644
index 000000000000..e8f58b8fa7f2
--- /dev/null
+++ b/UnoControls/source/base/registercontrols.cxx
@@ -0,0 +1,325 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+//______________________________________________________________________________________________________________
+// includes of other projects
+//______________________________________________________________________________________________________________
+
+#include <cppuhelper/factory.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/registry/XRegistryKey.hpp>
+#include <com/sun/star/container/XSet.hpp>
+
+#include <stdio.h>
+
+//______________________________________________________________________________________________________________
+// includes of my own project
+//______________________________________________________________________________________________________________
+
+//=============================================================================
+// Add new include line to use new services.
+//=============================================================================
+#include "framecontrol.hxx"
+#include "progressbar.hxx"
+#include "progressmonitor.hxx"
+#include "statusindicator.hxx"
+//=============================================================================
+
+//______________________________________________________________________________________________________________
+// defines
+//______________________________________________________________________________________________________________
+
+// If you will debug macros of this file ... you must define follow constant!
+// Ths switch on another macro AS_DBG_OUT(...), which will print text to "stdout".
+
+//#define AS_DBG_SWITCH
+
+//______________________________________________________________________________________________________________
+// namespaces
+//______________________________________________________________________________________________________________
+
+using namespace ::rtl ;
+using namespace ::cppu ;
+using namespace ::unocontrols ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::container ;
+using namespace ::com::sun::star::lang ;
+using namespace ::com::sun::star::registry ;
+
+//______________________________________________________________________________________________________________
+// macros
+//______________________________________________________________________________________________________________
+
+//******************************************************************************************************************************
+// See AS_DBG_SWITCH below !!!
+#ifdef AS_DBG_SWITCH
+ #define AS_DBG_OUT(OUTPUT) printf( OUTPUT );
+#else
+ #define AS_DBG_OUT(OUTPUT)
+#endif
+
+//******************************************************************************************************************************
+#define CREATEINSTANCE(CLASS) \
+ \
+ static Reference< XInterface > SAL_CALL CLASS##_createInstance ( const Reference< XMultiServiceFactory >& rServiceManager ) throw ( Exception ) \
+ { \
+ AS_DBG_OUT ( "\tCREATEINSTANCE():\tOK\n" ) \
+ return Reference< XInterface >( *(OWeakObject*)(new CLASS( rServiceManager )) ); \
+ }
+
+//******************************************************************************************************************************
+#define COMPONENT_INFO(CLASS) \
+ \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t[start]\n" ) \
+ try \
+ { \
+ /* Set default result of follow operations !!! */ \
+ bReturn = sal_False ; \
+ \
+ /* Do the follow only, if given key is valid ! */ \
+ if ( xKey.is () ) \
+ { \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t\txkey is valid ...\n" ) \
+ /* Build new keyname */ \
+ sKeyName = OUString::createFromAscii( "/" ) ; \
+ sKeyName += CLASS::impl_getStaticImplementationName() ; \
+ sKeyName += OUString::createFromAscii( "/UNO/SERVICES" ); \
+ \
+ /* Create new key with new name. */ \
+ xNewKey = xKey->createKey( sKeyName ); \
+ \
+ /* If this new key valid ... */ \
+ if ( xNewKey.is () ) \
+ { \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t\txNewkey is valid ...\n" ) \
+ /* Get information about supported services. */ \
+ seqServiceNames = CLASS::impl_getStaticSupportedServiceNames() ; \
+ pArray = seqServiceNames.getArray() ; \
+ nLength = seqServiceNames.getLength() ; \
+ nCounter = 0 ; \
+ \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t\tloop ..." ) \
+ /* Then set this information on this key. */ \
+ for ( nCounter = 0; nCounter < nLength; ++nCounter ) \
+ { \
+ xNewKey->createKey( pArray [nCounter] ); \
+ } \
+ AS_DBG_OUT ( " OK\n" ) \
+ \
+ /* Result of this operations = OK. */ \
+ bReturn = sal_True ; \
+ } \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t\t... leave xNewKey\n" ) \
+ } \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t\t... leave xKey\n" ) \
+ } \
+ catch( InvalidRegistryException& ) \
+ { \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t\tInvalidRegistryException detected!!!\n" ) \
+ bReturn = sal_False ; \
+ } \
+ AS_DBG_OUT ( "\tCOMPONENT_INFO():\t[end]\n" )
+
+//******************************************************************************************************************************
+#define CREATEFACTORY_ONEINSTANCE(CLASS) \
+ \
+ AS_DBG_OUT ( "\tCREATEFACTORY_ONEINSTANCE():\t[start]\n" ) \
+ /* Create right factory ... */ \
+ xFactory = Reference< XSingleServiceFactory > \
+ ( \
+ cppu::createOneInstanceFactory ( xServiceManager , \
+ CLASS::impl_getStaticImplementationName () , \
+ CLASS##_createInstance , \
+ CLASS::impl_getStaticSupportedServiceNames () ) \
+ ) ; \
+ AS_DBG_OUT ( "\tCREATEFACTORY_ONEINSTANCE():\t[end]\n" )
+
+//******************************************************************************************************************************
+#define CREATEFACTORY_SINGLE(CLASS) \
+ \
+ AS_DBG_OUT ( "\tCREATEFACTORY_SINGLE():\t[start]\n" ) \
+ /* Create right factory ... */ \
+ xFactory = Reference< XSingleServiceFactory > \
+ ( \
+ cppu::createSingleFactory ( xServiceManager , \
+ CLASS::impl_getStaticImplementationName () , \
+ CLASS##_createInstance , \
+ CLASS::impl_getStaticSupportedServiceNames () ) \
+ ) ; \
+ AS_DBG_OUT ( "\tCREATEFACTORY_SINGLE():\t[end]\n" )
+
+//******************************************************************************************************************************
+#define IF_NAME_CREATECOMPONENTFACTORY_ONEINSTANCE(CLASS) \
+ \
+ if ( CLASS::impl_getStaticImplementationName().equals( OUString::createFromAscii( pImplementationName ) ) ) \
+ { \
+ AS_DBG_OUT ( "\tIF_NAME_CREATECOMPONENTFACTORY_ONEINSTANCE():\timplementationname found\n" ) \
+ CREATEFACTORY_ONEINSTANCE ( CLASS ) \
+ }
+
+//******************************************************************************************************************************
+#define IF_NAME_CREATECOMPONENTFACTORY_SINGLE(CLASS) \
+ \
+ if ( CLASS::impl_getStaticImplementationName().equals( OUString::createFromAscii( pImplementationName ) ) ) \
+ { \
+ AS_DBG_OUT ( "\tIF_NAME_CREATECOMPONENTFACTORY_SINGLE():\timplementationname found\n" ) \
+ CREATEFACTORY_SINGLE ( CLASS ) \
+ }
+
+//______________________________________________________________________________________________________________
+// declare functions to create a new instance of service
+//______________________________________________________________________________________________________________
+
+//=============================================================================
+// Add new macro line to use new services.
+//
+// !!! ATTENTION !!!
+// Write no ";" at end of line! (see macro)
+//=============================================================================
+CREATEINSTANCE ( FrameControl )
+CREATEINSTANCE ( ProgressBar )
+CREATEINSTANCE ( ProgressMonitor )
+CREATEINSTANCE ( StatusIndicator )
+//=============================================================================
+
+//______________________________________________________________________________________________________________
+// return environment
+//______________________________________________________________________________________________________________
+
+extern "C" void SAL_CALL component_getImplementationEnvironment( const sal_Char** ppEnvironmentTypeName ,
+ uno_Environment** /*ppEnvironment*/ )
+{
+ *ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
+}
+
+//______________________________________________________________________________________________________________
+// write component info to registry
+//______________________________________________________________________________________________________________
+
+extern "C" sal_Bool SAL_CALL component_writeInfo( void* /*pServiceManager*/ ,
+ void* pRegistryKey )
+{
+ AS_DBG_OUT ( "component_writeInfo():\t[start]\n" )
+
+ // Set default return value for this operation - if it failed.
+ sal_Bool bReturn = sal_False ;
+
+ if ( pRegistryKey != NULL )
+ {
+ AS_DBG_OUT ( "component_writeInfo():\t\tpRegistryKey is valid ... enter scope\n" )
+
+ // Define variables for following macros!
+ // bReturn is set automaticly.
+ Reference< XRegistryKey > xKey( reinterpret_cast< XRegistryKey* >( pRegistryKey ) ) ;
+ Reference< XRegistryKey > xNewKey ;
+ Sequence< OUString > seqServiceNames ;
+ const OUString* pArray ;
+ sal_Int32 nLength ;
+ sal_Int32 nCounter ;
+ OUString sKeyName ;
+
+ //=============================================================================
+ // Add new macro line to register new services.
+ //
+ // !!! ATTENTION !!!
+ // Write no ";" at end of line! (see macro)
+ //=============================================================================
+ COMPONENT_INFO ( FrameControl )
+ COMPONENT_INFO ( ProgressBar )
+ COMPONENT_INFO ( ProgressMonitor )
+ COMPONENT_INFO ( StatusIndicator )
+ //=============================================================================
+
+ AS_DBG_OUT ( "component_writeInfo():\t\t... leave pRegistryKey scope\n" )
+ }
+
+ AS_DBG_OUT ( "component_writeInfo():\t[end]\n" )
+
+ // Return with result of this operation.
+ return bReturn ;
+}
+
+//______________________________________________________________________________________________________________
+// create right component factory
+//______________________________________________________________________________________________________________
+
+extern "C" void* SAL_CALL component_getFactory( const sal_Char* pImplementationName ,
+ void* pServiceManager ,
+ void* /*pRegistryKey*/ )
+{
+ AS_DBG_OUT( "component_getFactory():\t[start]\n" )
+
+ // Set default return value for this operation - if it failed.
+ void* pReturn = NULL ;
+
+ if (
+ ( pImplementationName != NULL ) &&
+ ( pServiceManager != NULL )
+ )
+ {
+ AS_DBG_OUT( "component_getFactory():\t\t... enter scope - pointer are valid\n" )
+
+ // Define variables which are used in following macros.
+ Reference< XSingleServiceFactory > xFactory ;
+ Reference< XMultiServiceFactory > xServiceManager( reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
+
+ //=============================================================================
+ // Add new macro line to handle new service.
+ //
+ // !!! ATTENTION !!!
+ // Write no ";" at end of line and dont forget "else" ! (see macro)
+ //=============================================================================
+ IF_NAME_CREATECOMPONENTFACTORY_SINGLE( FrameControl )
+ else
+ IF_NAME_CREATECOMPONENTFACTORY_SINGLE( ProgressBar )
+ else
+ IF_NAME_CREATECOMPONENTFACTORY_SINGLE( ProgressMonitor )
+ else
+ IF_NAME_CREATECOMPONENTFACTORY_SINGLE( StatusIndicator )
+ //=============================================================================
+
+ // Factory is valid - service was found.
+ if ( xFactory.is() )
+ {
+ AS_DBG_OUT( "component_getFactory():\t\t\t... xFactory valid - service was found\n" )
+
+ xFactory->acquire();
+ pReturn = xFactory.get();
+ }
+
+ AS_DBG_OUT( "component_getFactory():\t\t... leave scope\n" )
+ }
+
+ AS_DBG_OUT ( "component_getFactory():\t[end]\n" )
+
+ // Return with result of this operation.
+ return pReturn ;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/controls/OConnectionPointContainerHelper.cxx b/UnoControls/source/controls/OConnectionPointContainerHelper.cxx
new file mode 100644
index 000000000000..c5bd8cfce1e9
--- /dev/null
+++ b/UnoControls/source/controls/OConnectionPointContainerHelper.cxx
@@ -0,0 +1,190 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+//______________________________________________________________________________________________________________
+// my own include
+//______________________________________________________________________________________________________________
+
+#include "OConnectionPointContainerHelper.hxx"
+
+//______________________________________________________________________________________________________________
+// includes of other projects
+//______________________________________________________________________________________________________________
+
+//______________________________________________________________________________________________________________
+// include of my own project
+//______________________________________________________________________________________________________________
+#include "OConnectionPointHelper.hxx"
+
+//______________________________________________________________________________________________________________
+// namespaces
+//______________________________________________________________________________________________________________
+
+using namespace ::rtl ;
+using namespace ::osl ;
+using namespace ::cppu ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+
+namespace unocontrols{
+
+//______________________________________________________________________________________________________________
+// construct/destruct
+//______________________________________________________________________________________________________________
+
+OConnectionPointContainerHelper::OConnectionPointContainerHelper( Mutex& aMutex )
+ : m_aSharedMutex ( aMutex )
+ , m_aMultiTypeContainer ( aMutex )
+{
+}
+
+OConnectionPointContainerHelper::~OConnectionPointContainerHelper()
+{
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL OConnectionPointContainerHelper::queryInterface( const Type& aType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Ask for my own supported interfaces ...
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XConnectionPointContainer* > ( this )
+ )
+ );
+
+ // If searched interface not supported by this class ...
+ if ( aReturn.hasValue() == sal_False )
+ {
+ // ... ask baseclasses.
+ aReturn = OWeakObject::queryInterface( aType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointContainerHelper::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OWeakObject::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointContainerHelper::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OWeakObject::release();
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPointContainer
+//______________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL OConnectionPointContainerHelper::getConnectionPointTypes() throw( RuntimeException )
+{
+ // Container is threadsafe himself !
+ return m_aMultiTypeContainer.getContainedTypes();
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPointContainer
+//______________________________________________________________________________________________________________
+
+Reference< XConnectionPoint > SAL_CALL OConnectionPointContainerHelper::queryConnectionPoint( const Type& aType ) throw( RuntimeException )
+{
+ // Set default return value, if method failed.
+ Reference< XConnectionPoint > xConnectionPoint = Reference< XConnectionPoint >();
+
+ // Get all elements of the container, which have the searched type.
+ OInterfaceContainerHelper* pSpecialContainer = m_aMultiTypeContainer.getContainer( aType );
+ if ( pSpecialContainer && pSpecialContainer->getLength() > 0 )
+ {
+ // Ready for multithreading
+ MutexGuard aGuard( m_aSharedMutex );
+ // If this container contains elements, build a connectionpoint-instance.
+ OConnectionPointHelper* pNewConnectionPoint = new OConnectionPointHelper( m_aSharedMutex, this, aType );
+ xConnectionPoint = Reference< XConnectionPoint >( (OWeakObject*)pNewConnectionPoint, UNO_QUERY );
+ }
+
+ return xConnectionPoint ;
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPointContainer
+//______________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointContainerHelper::advise( const Type& aType ,
+ const Reference< XInterface >& xListener ) throw( RuntimeException )
+{
+ // Container is threadsafe himself !
+ m_aMultiTypeContainer.addInterface( aType, xListener );
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPointContainer
+//______________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointContainerHelper::unadvise( const Type& aType ,
+ const Reference< XInterface >& xListener ) throw( RuntimeException )
+{
+ // Container is threadsafe himself !
+ m_aMultiTypeContainer.removeInterface( aType, xListener );
+}
+
+//______________________________________________________________________________________________________________
+// public but impl method!
+// Is neccessary to get container member at OConnectionPoint-instance.
+//______________________________________________________________________________________________________________
+
+OMultiTypeInterfaceContainerHelper& OConnectionPointContainerHelper::impl_getMultiTypeContainer()
+{
+ // Impl methods are not threadsafe!
+ // "Parent" function must do this.
+ return m_aMultiTypeContainer;
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/controls/OConnectionPointHelper.cxx b/UnoControls/source/controls/OConnectionPointHelper.cxx
new file mode 100644
index 000000000000..a8b174b01a3a
--- /dev/null
+++ b/UnoControls/source/controls/OConnectionPointHelper.cxx
@@ -0,0 +1,275 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+//______________________________________________________________________________________________________________
+// my own include
+//______________________________________________________________________________________________________________
+
+#include "OConnectionPointHelper.hxx"
+
+//______________________________________________________________________________________________________________
+// includes of other projects
+//______________________________________________________________________________________________________________
+
+//______________________________________________________________________________________________________________
+// include of my own project
+//______________________________________________________________________________________________________________
+#include "OConnectionPointContainerHelper.hxx"
+
+//______________________________________________________________________________________________________________
+// namespaces
+//______________________________________________________________________________________________________________
+
+using namespace ::rtl ;
+using namespace ::osl ;
+using namespace ::cppu ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+
+namespace unocontrols{
+
+//______________________________________________________________________________________________________________
+// construct/destruct
+//______________________________________________________________________________________________________________
+
+OConnectionPointHelper::OConnectionPointHelper(
+ Mutex& aMutex ,
+ OConnectionPointContainerHelper* pContainerImplementation ,
+ Type aType
+) : m_aSharedMutex ( aMutex )
+ , m_oContainerWeakReference ( pContainerImplementation )
+ , m_pContainerImplementation ( pContainerImplementation )
+ , m_aInterfaceType ( aType )
+{
+}
+
+OConnectionPointHelper::~OConnectionPointHelper()
+{
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL OConnectionPointHelper::queryInterface( const Type& aType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Ask for my own supported interfaces ...
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XConnectionPoint* > ( this )
+ )
+ );
+
+ // If searched interface not supported by this class ...
+ if ( aReturn.hasValue() == sal_False )
+ {
+ // ... ask baseclasses.
+ aReturn = OWeakObject::queryInterface( aType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointHelper::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OWeakObject::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointHelper::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ OWeakObject::release();
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPoint
+//______________________________________________________________________________________________________________
+
+Type SAL_CALL OConnectionPointHelper::getConnectionType() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aSharedMutex );
+
+ // Set default return value, if method failed.
+ if ( impl_LockContainer() == sal_False )
+ {
+ // Container not exist! Its an runtime error.
+ throw RuntimeException();
+ }
+
+ // If container reference valid, return right type of supported interfaces of THIS connectionpoint.
+ Type aReturnType = m_aInterfaceType ;
+ // Don't forget this!
+ impl_UnlockContainer();
+
+ return aReturnType;
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPoint
+//______________________________________________________________________________________________________________
+
+Reference< XConnectionPointContainer > SAL_CALL OConnectionPointHelper::getConnectionPointContainer() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aSharedMutex );
+ // Convert weakreference to correct uno3-reference and return value. It can be NULL, if container destroyed!
+ return Reference< XConnectionPointContainer >( m_oContainerWeakReference.get(), UNO_QUERY );
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPoint
+//______________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointHelper::advise( const Reference< XInterface >& xListener ) throw( ListenerExistException ,
+ InvalidListenerException ,
+ RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aSharedMutex );
+
+ // If type of listener not the same for this special container ...
+ Any aCheckType = xListener->queryInterface( m_aInterfaceType );
+ if ( aCheckType.hasValue() )
+ {
+ // ... throw an exception.
+ throw InvalidListenerException();
+ }
+
+ // ListenerExistException is obsolete!?
+ // Its the same container for XConnectionPointContainer and XConnectionPoint. But only here we must control, if a listener already exist!?
+ // You can add a listener more then one time at XConnectionPointContainer, but here only one ...
+
+ // Operation is permitted only, if reference to container is valid!
+ if ( impl_LockContainer() == sal_False )
+ {
+ // Container not exist! Its an runtime error.
+ throw RuntimeException();
+ }
+ // Forward it to OConnectionPointHelperContainer!
+ m_pContainerImplementation->advise( m_aInterfaceType, xListener );
+ // Don't forget this!
+ impl_UnlockContainer();
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPoint
+//______________________________________________________________________________________________________________
+
+void SAL_CALL OConnectionPointHelper::unadvise( const Reference< XInterface >& xListener ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aSharedMutex );
+ // Operation is permitted only, if reference to container is valid!
+ if ( impl_LockContainer() == sal_False )
+ {
+ // Container not exist! Its an runtime error.
+ throw RuntimeException();
+
+ }
+ // Forward it to OConnectionPointHelperContainer!
+ m_pContainerImplementation->unadvise( m_aInterfaceType, xListener );
+ // Don't forget this!
+ impl_UnlockContainer();
+}
+
+//______________________________________________________________________________________________________________
+// XConnectionPoint
+//______________________________________________________________________________________________________________
+
+Sequence< Reference< XInterface > > SAL_CALL OConnectionPointHelper::getConnections() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aSharedMutex );
+ // Operation is permitted only, if reference to container is valid!
+ if ( impl_LockContainer() == sal_False )
+ {
+ // Container not exist! Its an runtime error.
+ throw RuntimeException();
+ }
+ // Set default return value, if method failed.
+ Sequence< Reference< XInterface > > seqReturnConnections = Sequence< Reference< XInterface > >();
+ // Get reference to private member of OConnectionPointHelperContainer!
+ OMultiTypeInterfaceContainerHelper& aSharedContainer = m_pContainerImplementation->impl_getMultiTypeContainer();
+ // Get pointer to specialized container which hold all interfaces of searched type.
+ OInterfaceContainerHelper* pSpecialContainer = aSharedContainer.getContainer( m_aInterfaceType );
+ // Get elements of searched type, if somelse exist.
+ if ( pSpecialContainer != NULL )
+ {
+ seqReturnConnections = pSpecialContainer->getElements();
+ }
+ // Don't forget this!
+ impl_UnlockContainer();
+
+ return seqReturnConnections;
+}
+
+//______________________________________________________________________________________________________________
+// private method
+//______________________________________________________________________________________________________________
+
+sal_Bool OConnectionPointHelper::impl_LockContainer()
+{
+ // Convert weakreference to hard uno3-reference and return state.
+ // If this reference different from NULL, there exist a hard reference to container. Container-instance can't be destroyed.
+ // Don't forget to "unlock" this reference!
+ m_xLock = m_oContainerWeakReference.get();
+ return m_xLock.is();
+}
+
+//______________________________________________________________________________________________________________
+// private method
+//______________________________________________________________________________________________________________
+
+void OConnectionPointHelper::impl_UnlockContainer()
+{
+ // Free hard uno3-reference to container.
+ // see also "impl_LockContainer()"
+ m_xLock = Reference< XInterface >();
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/controls/framecontrol.cxx b/UnoControls/source/controls/framecontrol.cxx
new file mode 100644
index 000000000000..9987478b7b56
--- /dev/null
+++ b/UnoControls/source/controls/framecontrol.cxx
@@ -0,0 +1,607 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+
+//______________________________________________________________________________________________________________
+// my own include
+//______________________________________________________________________________________________________________
+
+#include "framecontrol.hxx"
+
+//______________________________________________________________________________________________________________
+// includes of other projects
+//______________________________________________________________________________________________________________
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <osl/diagnose.h>
+
+//______________________________________________________________________________________________________________
+// include of my own project
+//______________________________________________________________________________________________________________
+
+//______________________________________________________________________________________________________________
+// namespaces
+//______________________________________________________________________________________________________________
+
+using namespace ::rtl ;
+using namespace ::osl ;
+using namespace ::cppu ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+using namespace ::com::sun::star::beans ;
+using namespace ::com::sun::star::awt ;
+using namespace ::com::sun::star::frame ;
+using namespace ::com::sun::star::util ;
+
+namespace unocontrols{
+
+//______________________________________________________________________________________________________________
+// construct/destruct
+//______________________________________________________________________________________________________________
+
+FrameControl::FrameControl( const Reference< XMultiServiceFactory >& xFactory )
+ : BaseControl ( xFactory )
+ , OBroadcastHelper ( m_aMutex )
+ , OPropertySetHelper ( *SAL_STATIC_CAST( OBroadcastHelper *, this ) )
+ , m_aInterfaceContainer ( m_aMutex )
+ , m_aConnectionPointContainer ( m_aMutex )
+{
+}
+
+FrameControl::~FrameControl()
+{
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL FrameControl::queryInterface( const Type& rType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+ Any aReturn ;
+ Reference< XInterface > xDel = BaseControl::impl_getDelegator();
+ if ( xDel.is() )
+ {
+ // If an delegator exist, forward question to his queryInterface.
+ // Delegator will ask his own queryAggregation!
+ aReturn = xDel->queryInterface( rType );
+ }
+ else
+ {
+ // If an delegator unknown, forward question to own queryAggregation.
+ aReturn = queryAggregation( rType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL FrameControl::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL FrameControl::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::release();
+}
+
+//____________________________________________________________________________________________________________
+// XTypeProvider
+//____________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL FrameControl::getTypes() throw( RuntimeException )
+{
+ // Optimize this method !
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
+ static OTypeCollection* pTypeCollection = NULL ;
+
+ if ( pTypeCollection == NULL )
+ {
+ // Ready for multithreading; get global mutex for first call of this method only! see before
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+
+ // Control these pointer again ... it can be, that another instance will be faster then these!
+ if ( pTypeCollection == NULL )
+ {
+ // Create a static typecollection ...
+ static OTypeCollection aTypeCollection ( ::getCppuType(( const Reference< XControlModel >*)NULL ) ,
+ ::getCppuType(( const Reference< XControlContainer >*)NULL ) ,
+ ::getCppuType(( const Reference< XConnectionPointContainer >*)NULL ) ,
+ BaseControl::getTypes()
+ );
+ // ... and set his address to static pointer!
+ pTypeCollection = &aTypeCollection ;
+ }
+ }
+
+ return pTypeCollection->getTypes();
+}
+
+//____________________________________________________________________________________________________________
+// XAggregation
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL FrameControl::queryAggregation( const Type& aType ) throw( RuntimeException )
+{
+ // Ask for my own supported interfaces ...
+ // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XControlModel* > ( this ) ,
+ static_cast< XConnectionPointContainer* > ( this )
+ )
+ );
+
+ // If searched interface not supported by this class ...
+ if ( aReturn.hasValue() == sal_False )
+ {
+ // ... ask baseclasses.
+ aReturn = OPropertySetHelper::queryInterface( aType );
+ if ( aReturn.hasValue() == sal_False )
+ {
+ aReturn = BaseControl::queryAggregation( aType );
+ }
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL FrameControl::createPeer( const Reference< XToolkit >& xToolkit ,
+ const Reference< XWindowPeer >& xParentPeer ) throw( RuntimeException )
+{
+ BaseControl::createPeer( xToolkit, xParentPeer );
+ if ( impl_getPeerWindow().is() )
+ {
+ if( m_sComponentURL.getLength() > 0 )
+ {
+ impl_createFrame( getPeer(), m_sComponentURL, m_seqLoaderArguments );
+ }
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL FrameControl::setModel( const Reference< XControlModel >& /*xModel*/ ) throw( RuntimeException )
+{
+ // We have no model.
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XControlModel > SAL_CALL FrameControl::getModel() throw( RuntimeException )
+{
+ // We have no model.
+ return Reference< XControlModel >();
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL FrameControl::dispose() throw( RuntimeException )
+{
+ impl_deleteFrame();
+ BaseControl::dispose();
+}
+
+//____________________________________________________________________________________________________________
+// XView
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL FrameControl::setGraphics( const Reference< XGraphics >& /*xDevice*/ ) throw( RuntimeException )
+{
+ // it is not possible to print this control
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XView
+//____________________________________________________________________________________________________________
+
+Reference< XGraphics > SAL_CALL FrameControl::getGraphics() throw( RuntimeException )
+{
+ // when its not posible to set graphics ! then its possible to return null
+ return Reference< XGraphics >();
+}
+
+//____________________________________________________________________________________________________________
+// XConnectionPointContainer
+//____________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL FrameControl::getConnectionPointTypes() throw( RuntimeException )
+{
+ // Forwarded to helper class
+ return m_aConnectionPointContainer.getConnectionPointTypes();
+}
+
+//____________________________________________________________________________________________________________
+// XConnectionPointContainer
+//____________________________________________________________________________________________________________
+
+Reference< XConnectionPoint > SAL_CALL FrameControl::queryConnectionPoint( const Type& aType ) throw( RuntimeException )
+{
+ // Forwarded to helper class
+ return m_aConnectionPointContainer.queryConnectionPoint( aType );
+}
+
+//____________________________________________________________________________________________________________
+// XConnectionPointContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL FrameControl::advise( const Type& aType ,
+ const Reference< XInterface >& xListener ) throw( RuntimeException )
+{
+ // Forwarded to helper class
+ m_aConnectionPointContainer.advise( aType, xListener );
+}
+
+//____________________________________________________________________________________________________________
+// XConnectionPointContainer
+//____________________________________________________________________________________________________________
+
+void SAL_CALL FrameControl::unadvise( const Type& aType ,
+ const Reference< XInterface >& xListener ) throw( RuntimeException )
+{
+ // Forwarded to helper class
+ m_aConnectionPointContainer.unadvise( aType, xListener );
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const Sequence< OUString > FrameControl::impl_getStaticSupportedServiceNames()
+{
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+ Sequence< OUString > seqServiceNames( 1 );
+ seqServiceNames.getArray() [0] = OUString::createFromAscii( SERVICENAME_FRAMECONTROL );
+ return seqServiceNames ;
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const OUString FrameControl::impl_getStaticImplementationName()
+{
+ return OUString::createFromAscii( IMPLEMENTATIONNAME_FRAMECONTROL );
+}
+
+//____________________________________________________________________________________________________________
+// OPropertySetHelper
+//____________________________________________________________________________________________________________
+
+sal_Bool FrameControl::convertFastPropertyValue( Any& rConvertedValue ,
+ Any& rOldValue ,
+ sal_Int32 nHandle ,
+ const Any& rValue ) throw( IllegalArgumentException )
+{
+ sal_Bool bReturn = sal_False ;
+ switch (nHandle)
+ {
+ case PROPERTYHANDLE_COMPONENTURL : rConvertedValue = rValue ;
+ rOldValue <<= m_sComponentURL ;
+ bReturn = sal_True ;
+ break ;
+
+ case PROPERTYHANDLE_LOADERARGUMENTS : rConvertedValue = rValue ;
+ rOldValue <<= m_seqLoaderArguments ;
+ bReturn = sal_True ;
+ break ;
+ }
+
+ if ( bReturn == sal_False )
+ {
+ throw IllegalArgumentException();
+ }
+
+ return bReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// OPropertySetHelper
+//____________________________________________________________________________________________________________
+
+void FrameControl::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle ,
+ const Any& rValue )
+ throw ( ::com::sun::star::uno::Exception )
+{
+ // this method only set the value
+ MutexGuard aGuard (m_aMutex) ;
+ switch (nHandle)
+ {
+ case PROPERTYHANDLE_COMPONENTURL : rValue >>= m_sComponentURL ;
+ if (getPeer().is())
+ {
+ impl_createFrame ( getPeer(), m_sComponentURL, m_seqLoaderArguments ) ;
+ }
+ break ;
+
+ case PROPERTYHANDLE_LOADERARGUMENTS : rValue >>= m_seqLoaderArguments ;
+ break ;
+
+ default : OSL_ENSURE ( nHandle == -1, ERRORTEXT_VOSENSHURE ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// OPropertySetHelper
+//____________________________________________________________________________________________________________
+
+void FrameControl::getFastPropertyValue( Any& rRet ,
+ sal_Int32 nHandle ) const
+{
+ MutexGuard aGuard ( Mutex::getGlobalMutex() ) ;
+
+ switch (nHandle)
+ {
+ case PROPERTYHANDLE_COMPONENTURL : rRet <<= m_sComponentURL ;
+ break ;
+
+ case PROPERTYHANDLE_LOADERARGUMENTS : rRet <<= m_seqLoaderArguments ;
+ break ;
+
+ case PROPERTYHANDLE_FRAME : rRet <<= m_xFrame ;
+ break ;
+
+ default : OSL_ENSURE ( nHandle == -1, ERRORTEXT_VOSENSHURE ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// OPropertySetHelper
+//____________________________________________________________________________________________________________
+
+IPropertyArrayHelper& FrameControl::getInfoHelper()
+{
+ // Create a table that map names to index values.
+ static OPropertyArrayHelper* pInfo ;
+
+ if (!pInfo)
+ {
+ // global method must be guarded
+ MutexGuard aGuard ( Mutex::getGlobalMutex() ) ;
+
+ if (!pInfo)
+ {
+ pInfo = new OPropertyArrayHelper( impl_getStaticPropertyDescriptor(), sal_True );
+ }
+ }
+
+ return *pInfo ;
+}
+/*
+//--------------------------------------------------------------------------------------------------
+// start OConnectionPointContainerHelper
+//--------------------------------------------------------------------------------------------------
+Uik* FrameControl::getConnectionPointUiks ( sal_Int32* pCount ) const
+{
+ static Uik szUiks[] =
+ {
+ ((XEventListener*)NULL)->getSmartUik (),
+ ::getCppuType((const Reference< XPropertyChangeListener >*)0),
+ ::getCppuType((const Reference< XVetoableChangeListener >*)0),
+ ::getCppuType((const Reference< XPropertiesChangeListener >*)0)
+ } ;
+
+ *pCount = 4 ;
+
+ return szUiks ;
+}
+//--------------------------------------------------------------------------------------------------
+// end OConnectionPointContainerHelper
+//--------------------------------------------------------------------------------------------------
+*/
+
+//____________________________________________________________________________________________________________
+// OPropertySetHelper
+//____________________________________________________________________________________________________________
+
+Reference< XPropertySetInfo > SAL_CALL FrameControl::getPropertySetInfo() throw( RuntimeException )
+{
+ // Optimize this method !
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pInfo is NULL - for the second call pInfo is different from NULL!
+ static Reference< XPropertySetInfo >* pInfo = (Reference< XPropertySetInfo >*)0 ;
+ if ( pInfo == (Reference< XPropertySetInfo >*)0 )
+ {
+ // Ready for multithreading
+ MutexGuard aGuard ( Mutex::getGlobalMutex () ) ;
+ // Control this pointer again, another instance can be faster then these!
+ if ( pInfo == (Reference< XPropertySetInfo >*)0 )
+ {
+ // Create structure of propertysetinfo for baseclass "OPropertySetHelper".
+ // (Use method "getInfoHelper()".)
+ static Reference< XPropertySetInfo > xInfo ( createPropertySetInfo ( getInfoHelper () ) ) ;
+ pInfo = &xInfo ;
+ }
+ }
+ return ( *pInfo ) ;
+}
+
+//____________________________________________________________________________________________________________
+// BaseControl
+//____________________________________________________________________________________________________________
+
+WindowDescriptor* FrameControl::impl_getWindowDescriptor( const Reference< XWindowPeer >& xParentPeer )
+{
+ WindowDescriptor* pDescriptor = new WindowDescriptor ;
+
+ pDescriptor->Type = WindowClass_CONTAINER ;
+ pDescriptor->ParentIndex = -1 ;
+ pDescriptor->Parent = xParentPeer ;
+ pDescriptor->Bounds = getPosSize () ;
+ pDescriptor->WindowAttributes = 0 ;
+
+ return pDescriptor ;
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void FrameControl::impl_createFrame( const Reference< XWindowPeer >& xPeer ,
+ const OUString& rURL ,
+ const Sequence< PropertyValue >& rArguments )
+{
+ Reference< XFrame > xOldFrame ;
+ Reference< XFrame > xNewFrame ;
+
+ {
+ MutexGuard aGuard ( m_aMutex ) ;
+ xOldFrame = m_xFrame ;
+ }
+
+ xNewFrame = Reference< XFrame > ( impl_getMultiServiceFactory()->createInstance ( OUString::createFromAscii( "com.sun.star.frame.Frame" ) ), UNO_QUERY ) ;
+ Reference< XDispatchProvider > xDSP ( xNewFrame, UNO_QUERY ) ;
+
+ if (xDSP.is())
+ {
+ Reference< XWindow > xWP ( xPeer, UNO_QUERY ) ;
+ xNewFrame->initialize ( xWP ) ;
+
+ // option
+ //xFrame->setName( "WhatYouWant" );
+
+ Reference< XURLTransformer > xTrans ( impl_getMultiServiceFactory()->createInstance ( OUString::createFromAscii( "com.sun.star.util.URLTransformer" ) ), UNO_QUERY ) ;
+ if(xTrans.is())
+ {
+ // load file
+ URL aURL ;
+
+ aURL.Complete = rURL ;
+ xTrans->parseStrict( aURL ) ;
+
+ Reference< XDispatch > xDisp = xDSP->queryDispatch ( aURL, OUString (), FrameSearchFlag::SELF ) ;
+ if (xDisp.is())
+ {
+ xDisp->dispatch ( aURL, rArguments ) ;
+ }
+ }
+ }
+
+ // set the frame
+ {
+ MutexGuard aGuard ( m_aMutex ) ;
+ m_xFrame = xNewFrame ;
+ }
+
+ // notify the listeners
+ sal_Int32 nFrameId = PROPERTYHANDLE_FRAME ;
+ Any aNewFrame ( &xNewFrame, ::getCppuType((const Reference< XFrame >*)0) ) ;
+ Any aOldFrame ( &xOldFrame, ::getCppuType((const Reference< XFrame >*)0) ) ;
+
+ fire ( &nFrameId, &aNewFrame, &aOldFrame, 1, sal_False ) ;
+
+ if (xOldFrame.is())
+ {
+ xOldFrame->dispose () ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void FrameControl::impl_deleteFrame()
+{
+ Reference< XFrame > xOldFrame;
+ Reference< XFrame > xNullFrame;
+
+ {
+ // do not dispose the frame in this guarded section (deadlock?)
+ MutexGuard aGuard( m_aMutex );
+ xOldFrame = m_xFrame;
+ m_xFrame = Reference< XFrame > ();
+ }
+
+ // notify the listeners
+ sal_Int32 nFrameId = PROPERTYHANDLE_FRAME;
+ Any aNewFrame( &xNullFrame, ::getCppuType((const Reference< XFrame >*)0) );
+ Any aOldFrame( &xOldFrame, ::getCppuType((const Reference< XFrame >*)0) );
+ fire( &nFrameId, &aNewFrame, &aOldFrame, 1, sal_False );
+
+ // dispose the frame
+ if( xOldFrame.is() )
+ xOldFrame->dispose();
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+const Sequence< Property > FrameControl::impl_getStaticPropertyDescriptor()
+{
+ // All Properties of this implementation. The array must be sorted!
+ static const Property pPropertys[PROPERTY_COUNT] =
+ {
+ Property( OUString::createFromAscii( PROPERTYNAME_COMPONENTURL ), PROPERTYHANDLE_COMPONENTURL , ::getCppuType((const OUString*)0) , PropertyAttribute::BOUND | PropertyAttribute::CONSTRAINED ),
+ Property( OUString::createFromAscii( PROPERTYNAME_FRAME ), PROPERTYHANDLE_FRAME , ::getCppuType((const Reference< XFrame >*)0) , PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT ),
+ Property( OUString::createFromAscii( PROPERTYNAME_LOADERARGUMENTS ), PROPERTYHANDLE_LOADERARGUMENTS , ::getCppuType((const Sequence< PropertyValue >*)0), PropertyAttribute::BOUND | PropertyAttribute::CONSTRAINED )
+ };
+
+ static const Sequence< Property > seqPropertys( pPropertys, PROPERTY_COUNT );
+
+ return seqPropertys ;
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/controls/makefile.mk b/UnoControls/source/controls/makefile.mk
new file mode 100644
index 000000000000..20314ea8e321
--- /dev/null
+++ b/UnoControls/source/controls/makefile.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..$/..
+
+PRJNAME=UnoControls
+TARGET=controls
+ENABLE_EXCEPTIONS=TRUE
+.IF "$(L10N_framework)"==""
+
+# --- Settings -----------------------------------------------------
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+SLOFILES=\
+ $(SLO)$/progressbar.obj \
+ $(SLO)$/framecontrol.obj \
+ $(SLO)$/progressmonitor.obj \
+ $(SLO)$/OConnectionPointHelper.obj \
+ $(SLO)$/OConnectionPointContainerHelper.obj \
+ $(SLO)$/statusindicator.obj
+
+# --- Targets ------------------------------------------------------
+.ENDIF # L10N_framework
+
+.INCLUDE : target.mk
diff --git a/UnoControls/source/controls/progressbar.cxx b/UnoControls/source/controls/progressbar.cxx
new file mode 100644
index 000000000000..7d05435e48b2
--- /dev/null
+++ b/UnoControls/source/controls/progressbar.cxx
@@ -0,0 +1,494 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+//____________________________________________________________________________________________________________
+// my own includes
+//____________________________________________________________________________________________________________
+
+#include "progressbar.hxx"
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+#include <com/sun/star/awt/GradientStyle.hpp>
+#include <com/sun/star/awt/RasterOperation.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <tools/debug.hxx>
+#include <cppuhelper/typeprovider.hxx>
+
+#include <math.h>
+#include <limits.h>
+
+//____________________________________________________________________________________________________________
+// includes of my project
+//____________________________________________________________________________________________________________
+
+//____________________________________________________________________________________________________________
+// namespace
+//____________________________________________________________________________________________________________
+
+using namespace ::cppu ;
+using namespace ::osl ;
+using namespace ::rtl ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+using namespace ::com::sun::star::awt ;
+
+namespace unocontrols{
+
+//____________________________________________________________________________________________________________
+// construct/destruct
+//____________________________________________________________________________________________________________
+
+ProgressBar::ProgressBar( const Reference< XMultiServiceFactory >& xFactory )
+ : BaseControl ( xFactory )
+ , m_bHorizontal ( PROGRESSBAR_DEFAULT_HORIZONTAL )
+ , m_aBlockSize ( PROGRESSBAR_DEFAULT_BLOCKDIMENSION )
+ , m_nForegroundColor ( PROGRESSBAR_DEFAULT_FOREGROUNDCOLOR )
+ , m_nBackgroundColor ( PROGRESSBAR_DEFAULT_BACKGROUNDCOLOR )
+ , m_nMinRange ( PROGRESSBAR_DEFAULT_MINRANGE )
+ , m_nMaxRange ( PROGRESSBAR_DEFAULT_MAXRANGE )
+ , m_nBlockValue ( PROGRESSBAR_DEFAULT_BLOCKVALUE )
+ , m_nValue ( PROGRESSBAR_DEFAULT_VALUE )
+{
+}
+
+ProgressBar::~ProgressBar()
+{
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL ProgressBar::queryInterface( const Type& rType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+ Any aReturn ;
+ Reference< XInterface > xDel = BaseControl::impl_getDelegator();
+ if ( xDel.is() )
+ {
+ // If an delegator exist, forward question to his queryInterface.
+ // Delegator will ask his own queryAggregation!
+ aReturn = xDel->queryInterface( rType );
+ }
+ else
+ {
+ // If an delegator unknown, forward question to own queryAggregation.
+ aReturn = queryAggregation( rType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressBar::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressBar::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::release();
+}
+
+//____________________________________________________________________________________________________________
+// XTypeProvider
+//____________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL ProgressBar::getTypes() throw( RuntimeException )
+{
+ // Optimize this method !
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
+ static OTypeCollection* pTypeCollection = NULL ;
+
+ if ( pTypeCollection == NULL )
+ {
+ // Ready for multithreading; get global mutex for first call of this method only! see before
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+
+ // Control these pointer again ... it can be, that another instance will be faster then these!
+ if ( pTypeCollection == NULL )
+ {
+ // Create a static typecollection ...
+ static OTypeCollection aTypeCollection ( ::getCppuType(( const Reference< XControlModel >*) NULL ) ,
+ ::getCppuType(( const Reference< XProgressBar >*) NULL ) ,
+ BaseControl::getTypes()
+ );
+ // ... and set his address to static pointer!
+ pTypeCollection = &aTypeCollection ;
+ }
+ }
+
+ return pTypeCollection->getTypes();
+}
+
+//____________________________________________________________________________________________________________
+// XAggregation
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL ProgressBar::queryAggregation( const Type& aType ) throw( RuntimeException )
+{
+ // Ask for my own supported interfaces ...
+ // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XControlModel* > ( this ) ,
+ static_cast< XProgressBar* > ( this )
+ )
+ );
+
+ // If searched interface not supported by this class ...
+ if ( aReturn.hasValue() == sal_False )
+ {
+ // ... ask baseclasses.
+ aReturn = BaseControl::queryAggregation( aType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressBar::setForegroundColor( sal_Int32 nColor ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ // Safe color for later use.
+ m_nForegroundColor = nColor ;
+
+ // Repaint control
+ impl_paint ( 0, 0, impl_getGraphicsPeer() ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressBar::setBackgroundColor ( sal_Int32 nColor ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ // Safe color for later use.
+ m_nBackgroundColor = nColor ;
+
+ // Repaint control
+ impl_paint ( 0, 0, impl_getGraphicsPeer() ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressBar::setValue ( sal_Int32 nValue ) throw( RuntimeException )
+{
+ // This method is defined for follow things:
+ // 1) Values >= _nMinRange
+ // 2) Values <= _nMaxRange
+
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ // save impossible cases
+ // This method is only defined for valid values
+ DBG_ASSERT ( (( nValue >= m_nMinRange ) && ( nValue <= m_nMaxRange )), "ProgressBar::setValue()\nNot valid value.\n" ) ;
+
+ // If new value not valid ... do nothing in release version!
+ if (
+ ( nValue >= m_nMinRange ) &&
+ ( nValue <= m_nMaxRange )
+ )
+ {
+ // New value is ok => save this
+ m_nValue = nValue ;
+
+ // Repaint to display changes
+ impl_paint ( 0, 0, impl_getGraphicsPeer() ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressBar::setRange ( sal_Int32 nMin, sal_Int32 nMax ) throw( RuntimeException )
+{
+ // This method is defined for follow things:
+ // 1) All values of sal_Int32
+ // 2) Min < Max
+ // 3) Min > Max
+
+ // save impossible cases
+ // This method is only defined for valid values
+ // If you ignore this, the release version wil produce an error "division by zero" in "ProgressBar::setValue()"!
+ DBG_ASSERT ( ( nMin != nMax ) , "ProgressBar::setRange()\nValues for MIN and MAX are the same. This is not allowed!\n" ) ;
+
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ // control the values for min and max
+ if ( nMin < nMax )
+ {
+ // Take correct Min and Max
+ m_nMinRange = nMin ;
+ m_nMaxRange = nMax ;
+ }
+ else
+ {
+ // Change Min and Max automaticly
+ m_nMinRange = nMax ;
+ m_nMaxRange = nMin ;
+ }
+
+ // assure that m_nValue is within the range
+ if (!(m_nMinRange < m_nValue && m_nValue < m_nMaxRange))
+ m_nValue = m_nMinRange;
+
+ impl_recalcRange () ;
+
+ // Do not repaint the control at this place!!!
+ // An old "m_nValue" is set and can not be correct for this new range.
+ // Next call of "ProgressBar::setValue()" do this.
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+sal_Int32 SAL_CALL ProgressBar::getValue () throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard (m_aMutex) ;
+
+ return ( m_nValue ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressBar::setPosSize (
+ sal_Int32 nX,
+ sal_Int32 nY,
+ sal_Int32 nWidth,
+ sal_Int32 nHeight,
+ sal_Int16 nFlags
+) throw( RuntimeException )
+{
+ // Take old size BEFORE you set the new values at baseclass!
+ // You will control changes. At the other way, the values are the same!
+ Rectangle aBasePosSize = getPosSize () ;
+ BaseControl::setPosSize (nX, nY, nWidth, nHeight, nFlags) ;
+
+ // Do only, if size has changed.
+ if (
+ ( nWidth != aBasePosSize.Width ) ||
+ ( nHeight != aBasePosSize.Height )
+ )
+ {
+ impl_recalcRange ( ) ;
+ impl_paint ( 0, 0, impl_getGraphicsPeer () ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL ProgressBar::setModel( const Reference< XControlModel >& /*xModel*/ ) throw( RuntimeException )
+{
+ // A model is not possible for this control.
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XControlModel > SAL_CALL ProgressBar::getModel() throw( RuntimeException )
+{
+ // A model is not possible for this control.
+ return Reference< XControlModel >();
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const Sequence< OUString > ProgressBar::impl_getStaticSupportedServiceNames()
+{
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+ Sequence< OUString > seqServiceNames( 1 );
+ seqServiceNames.getArray() [0] = OUString::createFromAscii( SERVICENAME_PROGRESSBAR );
+ return seqServiceNames ;
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const OUString ProgressBar::impl_getStaticImplementationName()
+{
+ return OUString::createFromAscii( IMPLEMENTATIONNAME_PROGRESSBAR );
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void ProgressBar::impl_paint ( sal_Int32 nX, sal_Int32 nY, const Reference< XGraphics > & rGraphics )
+{
+ // save impossible cases
+ DBG_ASSERT ( rGraphics.is(), "ProgressBar::paint()\nCalled with invalid Reference< XGraphics > ." ) ;
+
+ // This paint method ist not buffered !!
+ // Every request paint the completely control. ( but only, if peer exist )
+ if ( rGraphics.is () )
+ {
+ MutexGuard aGuard (m_aMutex) ;
+
+ // Clear background
+ // (same color for line and fill)
+ rGraphics->setFillColor ( m_nBackgroundColor ) ;
+ rGraphics->setLineColor ( m_nBackgroundColor ) ;
+ rGraphics->drawRect ( nX, nY, impl_getWidth(), impl_getHeight() ) ;
+
+ // same color for line and fill for blocks
+ rGraphics->setFillColor ( m_nForegroundColor ) ;
+ rGraphics->setLineColor ( m_nForegroundColor ) ;
+
+ sal_Int32 nBlockStart = 0 ; // = left site of new block
+ sal_Int32 nBlockCount = m_nBlockValue!=0.00 ? (sal_Int32)((m_nValue-m_nMinRange)/m_nBlockValue) : 0 ; // = number of next block
+
+ // Draw horizontal progressbar
+ // decision in "recalcRange()"
+ if (m_bHorizontal)
+ {
+ // Step to left side of window
+ nBlockStart = nX ;
+
+ for ( sal_Int16 i=1; i<=nBlockCount; ++i )
+ {
+ // step free field
+ nBlockStart += PROGRESSBAR_FREESPACE ;
+ // paint block
+ rGraphics->drawRect (nBlockStart, nY+PROGRESSBAR_FREESPACE, m_aBlockSize.Width, m_aBlockSize.Height) ;
+ // step next free field
+ nBlockStart += m_aBlockSize.Width ;
+ }
+ }
+ // draw vertikal progressbar
+ // decision in "recalcRange()"
+ else
+ {
+ // step to bottom side of window
+ nBlockStart = nY+impl_getHeight() ;
+ nBlockStart -= m_aBlockSize.Height ;
+
+ for ( sal_Int16 i=1; i<=nBlockCount; ++i )
+ {
+ // step free field
+ nBlockStart -= PROGRESSBAR_FREESPACE ;
+ // paint block
+ rGraphics->drawRect (nX+PROGRESSBAR_FREESPACE, nBlockStart, m_aBlockSize.Width, m_aBlockSize.Height) ;
+ // step next free field
+ nBlockStart -= m_aBlockSize.Height;
+ }
+ }
+
+ // Paint shadow border around the progressbar
+ rGraphics->setLineColor ( PROGRESSBAR_LINECOLOR_SHADOW ) ;
+ rGraphics->drawLine ( nX, nY, impl_getWidth(), nY ) ;
+ rGraphics->drawLine ( nX, nY, nX , impl_getHeight() ) ;
+
+ rGraphics->setLineColor ( PROGRESSBAR_LINECOLOR_BRIGHT ) ;
+ rGraphics->drawLine ( impl_getWidth()-1, impl_getHeight()-1, impl_getWidth()-1, nY ) ;
+ rGraphics->drawLine ( impl_getWidth()-1, impl_getHeight()-1, nX , impl_getHeight()-1 ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void ProgressBar::impl_recalcRange ()
+{
+ MutexGuard aGuard (m_aMutex) ;
+
+ sal_Int32 nWindowWidth = impl_getWidth() ;
+ sal_Int32 nWindowHeight = impl_getHeight() ;
+ double fBlockHeight ;
+ double fBlockWidth ;
+ double fMaxBlocks ;
+
+ if( nWindowWidth > nWindowHeight )
+ {
+ m_bHorizontal = sal_True ;
+ fBlockHeight = (nWindowHeight-(2*PROGRESSBAR_FREESPACE)) ;
+ fBlockWidth = fBlockHeight ;
+ fMaxBlocks = nWindowWidth/(fBlockWidth+PROGRESSBAR_FREESPACE);
+ }
+ else
+ {
+ m_bHorizontal = sal_False ;
+ fBlockWidth = (nWindowWidth-(2*PROGRESSBAR_FREESPACE)) ;
+ fBlockHeight = fBlockWidth ;
+ fMaxBlocks = nWindowHeight/(fBlockHeight+PROGRESSBAR_FREESPACE);
+ }
+
+ double fRange = m_nMaxRange-m_nMinRange ;
+ double fBlockValue = fRange/fMaxBlocks ;
+
+ m_nBlockValue = fBlockValue ;
+ m_aBlockSize.Height = (sal_Int32)fBlockHeight;
+ m_aBlockSize.Width = (sal_Int32)fBlockWidth ;
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/controls/progressmonitor.cxx b/UnoControls/source/controls/progressmonitor.cxx
new file mode 100644
index 000000000000..bf6dc153a933
--- /dev/null
+++ b/UnoControls/source/controls/progressmonitor.cxx
@@ -0,0 +1,1080 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+//____________________________________________________________________________________________________________
+// my own includes
+//____________________________________________________________________________________________________________
+
+#include "progressmonitor.hxx"
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+#include <com/sun/star/awt/GradientStyle.hpp>
+#include <com/sun/star/awt/RasterOperation.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <tools/debug.hxx>
+#include <tools/solar.h>
+
+//____________________________________________________________________________________________________________
+// includes of my project
+//____________________________________________________________________________________________________________
+#include "progressbar.hxx"
+
+//____________________________________________________________________________________________________________
+// namespace
+//____________________________________________________________________________________________________________
+
+using namespace ::cppu ;
+using namespace ::osl ;
+using namespace ::rtl ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+using namespace ::com::sun::star::awt ;
+
+namespace unocontrols{
+
+//____________________________________________________________________________________________________________
+// construct/destruct
+//____________________________________________________________________________________________________________
+
+ProgressMonitor::ProgressMonitor( const Reference< XMultiServiceFactory >& xFactory )
+ : BaseContainerControl ( xFactory )
+{
+ // Its not allowed to work with member in this method (refcounter !!!)
+ // But with a HACK (++refcount) its "OK" :-(
+ ++m_refCount ;
+
+ // Create instances for fixedtext, button and progress ...
+ m_xTopic_Top = Reference< XFixedText > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_SERVICENAME ) ), UNO_QUERY ) ;
+ m_xText_Top = Reference< XFixedText > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_SERVICENAME ) ), UNO_QUERY ) ;
+ m_xTopic_Bottom = Reference< XFixedText > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_SERVICENAME ) ), UNO_QUERY ) ;
+ m_xText_Bottom = Reference< XFixedText > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_SERVICENAME ) ), UNO_QUERY ) ;
+ m_xButton = Reference< XButton > ( xFactory->createInstance ( OUString::createFromAscii( BUTTON_SERVICENAME ) ), UNO_QUERY ) ;
+ m_xProgressBar = Reference< XProgressBar > ( xFactory->createInstance ( OUString::createFromAscii( SERVICENAME_PROGRESSBAR ) ), UNO_QUERY ) ;
+
+ // ... cast controls to Reference< XControl > (for "setModel"!) ...
+ Reference< XControl > xRef_Topic_Top ( m_xTopic_Top , UNO_QUERY ) ;
+ Reference< XControl > xRef_Text_Top ( m_xText_Top , UNO_QUERY ) ;
+ Reference< XControl > xRef_Topic_Bottom ( m_xTopic_Bottom , UNO_QUERY ) ;
+ Reference< XControl > xRef_Text_Bottom ( m_xText_Bottom , UNO_QUERY ) ;
+ Reference< XControl > xRef_Button ( m_xButton , UNO_QUERY ) ;
+ Reference< XControl > xRef_ProgressBar ( m_xProgressBar , UNO_QUERY ) ;
+
+ // ... set models ...
+ xRef_Topic_Top->setModel ( Reference< XControlModel > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_MODELNAME ) ), UNO_QUERY ) ) ;
+ xRef_Text_Top->setModel ( Reference< XControlModel > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_MODELNAME ) ), UNO_QUERY ) ) ;
+ xRef_Topic_Bottom->setModel ( Reference< XControlModel > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_MODELNAME ) ), UNO_QUERY ) ) ;
+ xRef_Text_Bottom->setModel ( Reference< XControlModel > ( xFactory->createInstance ( OUString::createFromAscii( FIXEDTEXT_MODELNAME ) ), UNO_QUERY ) ) ;
+ xRef_Button->setModel ( Reference< XControlModel > ( xFactory->createInstance ( OUString::createFromAscii( BUTTON_MODELNAME ) ), UNO_QUERY ) ) ;
+ // ProgressBar has no model !!!
+
+ // ... and add controls to basecontainercontrol!
+ addControl ( OUString::createFromAscii( CONTROLNAME_TEXT ) , xRef_Topic_Top ) ;
+ addControl ( OUString::createFromAscii( CONTROLNAME_TEXT ) , xRef_Text_Top ) ;
+ addControl ( OUString::createFromAscii( CONTROLNAME_TEXT ) , xRef_Topic_Bottom ) ;
+ addControl ( OUString::createFromAscii( CONTROLNAME_TEXT ) , xRef_Text_Bottom ) ;
+ addControl ( OUString::createFromAscii( CONTROLNAME_BUTTON ) , xRef_Button ) ;
+ addControl ( OUString::createFromAscii( CONTROLNAME_PROGRESSBAR ) , xRef_ProgressBar ) ;
+
+ // FixedText make it automaticly visible by himself ... but not the progressbar !!!
+ // it must be set explicitly
+ Reference< XWindow > xWindowRef_ProgressBar( m_xProgressBar, UNO_QUERY );
+ xWindowRef_ProgressBar->setVisible( sal_True );
+
+ // Reset to defaults !!!
+ // (progressbar take automaticly its own defaults)
+ m_xButton->setLabel ( OUString::createFromAscii( DEFAULT_BUTTONLABEL ) ) ;
+ m_xTopic_Top->setText ( OUString::createFromAscii( PROGRESSMONITOR_DEFAULT_TOPIC ) ) ;
+ m_xText_Top->setText ( OUString::createFromAscii( PROGRESSMONITOR_DEFAULT_TEXT ) ) ;
+ m_xTopic_Bottom->setText ( OUString::createFromAscii( PROGRESSMONITOR_DEFAULT_TOPIC ) ) ;
+ m_xText_Bottom->setText ( OUString::createFromAscii( PROGRESSMONITOR_DEFAULT_TEXT ) ) ;
+
+ --m_refCount ;
+
+ // Initialize info lists for fixedtext's
+ m_pTextlist_Top = new IMPL_Textlist ;
+ m_pTextlist_Bottom = new IMPL_Textlist ;
+}
+
+ProgressMonitor::~ProgressMonitor()
+{
+ impl_cleanMemory () ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL ProgressMonitor::queryInterface( const Type& rType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+ Any aReturn ;
+ Reference< XInterface > xDel = BaseContainerControl::impl_getDelegator();
+ if ( xDel.is() )
+ {
+ // If an delegator exist, forward question to his queryInterface.
+ // Delegator will ask his own queryAggregation!
+ aReturn = xDel->queryInterface( rType );
+ }
+ else
+ {
+ // If an delegator unknown, forward question to own queryAggregation.
+ aReturn = queryAggregation( rType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::release();
+}
+
+//____________________________________________________________________________________________________________
+// XTypeProvider
+//____________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL ProgressMonitor::getTypes() throw( RuntimeException )
+{
+ // Optimize this method !
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
+ static OTypeCollection* pTypeCollection = NULL ;
+
+ if ( pTypeCollection == NULL )
+ {
+ // Ready for multithreading; get global mutex for first call of this method only! see before
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+
+ // Control these pointer again ... it can be, that another instance will be faster then these!
+ if ( pTypeCollection == NULL )
+ {
+ // Create a static typecollection ...
+ static OTypeCollection aTypeCollection ( ::getCppuType(( const Reference< XLayoutConstrains >*)NULL ) ,
+ ::getCppuType(( const Reference< XButton >*)NULL ) ,
+ ::getCppuType(( const Reference< XProgressMonitor >*)NULL ) ,
+ BaseContainerControl::getTypes()
+ );
+ // ... and set his address to static pointer!
+ pTypeCollection = &aTypeCollection ;
+ }
+ }
+
+ return pTypeCollection->getTypes();
+}
+
+//____________________________________________________________________________________________________________
+// XAggregation
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL ProgressMonitor::queryAggregation( const Type& aType ) throw( RuntimeException )
+{
+ // Ask for my own supported interfaces ...
+ // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XLayoutConstrains* > ( this ) ,
+ static_cast< XButton* > ( this ) ,
+ static_cast< XProgressMonitor* > ( this )
+ )
+ );
+
+ // If searched interface not supported by this class ...
+ if ( aReturn.hasValue() == sal_False )
+ {
+ // ... ask baseclasses.
+ aReturn = BaseControl::queryAggregation( aType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XProgressMonitor
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::addText(
+ const OUString& rTopic,
+ const OUString& rText,
+ sal_Bool bbeforeProgress
+) throw( RuntimeException )
+{
+ // Safe impossible cases
+ // Check valid call of this method.
+ DBG_ASSERT ( impl_debug_checkParameter ( rTopic, rText, bbeforeProgress ) , "ProgressMonitor::addText()\nCall without valid parameters!\n") ;
+ DBG_ASSERT ( !(impl_searchTopic ( rTopic, bbeforeProgress ) != NULL ) , "ProgresMonitor::addText()\nThe text already exist.\n" ) ;
+
+ // Do nothing (in Release), if topic already exist.
+ if ( impl_searchTopic ( rTopic, bbeforeProgress ) != NULL )
+ {
+ return ;
+ }
+
+ // Else ... take memory for new item ...
+ IMPL_TextlistItem* pTextItem = new IMPL_TextlistItem ;
+
+ if ( pTextItem != NULL )
+ {
+ // Set values ...
+ pTextItem->sTopic = rTopic ;
+ pTextItem->sText = rText ;
+
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // ... and insert it in right list.
+ if ( bbeforeProgress == sal_True )
+ {
+ m_pTextlist_Top->Insert ( pTextItem, LIST_APPEND ) ;
+ }
+ else
+ {
+ m_pTextlist_Bottom->Insert ( pTextItem, LIST_APPEND ) ;
+ }
+ }
+
+ // ... update window
+ impl_rebuildFixedText () ;
+ impl_recalcLayout () ;
+}
+
+//____________________________________________________________________________________________________________
+// XProgressMonitor
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::removeText ( const OUString& rTopic, sal_Bool bbeforeProgress ) throw( RuntimeException )
+{
+ // Safe impossible cases
+ // Check valid call of this method.
+ DBG_ASSERT ( impl_debug_checkParameter ( rTopic, bbeforeProgress ), "ProgressMonitor::removeText()\nCall without valid parameters!\n" ) ;
+
+ // Search the topic ...
+ IMPL_TextlistItem* pSearchItem = impl_searchTopic ( rTopic, bbeforeProgress ) ;
+
+ if ( pSearchItem != NULL )
+ {
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // ... delete item from right list ...
+ if ( bbeforeProgress == sal_True )
+ {
+ m_pTextlist_Top->Remove ( pSearchItem ) ;
+ }
+ else
+ {
+ m_pTextlist_Bottom->Remove ( pSearchItem ) ;
+ }
+
+ delete pSearchItem ;
+
+ // ... and update window.
+ impl_rebuildFixedText () ;
+ impl_recalcLayout () ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XProgressMonitor
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::updateText (
+ const OUString& rTopic,
+ const OUString& rText,
+ sal_Bool bbeforeProgress
+) throw( RuntimeException )
+{
+ // Safe impossible cases
+ // Check valid call of this method.
+ DBG_ASSERT ( impl_debug_checkParameter ( rTopic, rText, bbeforeProgress ), "ProgressMonitor::updateText()\nCall without valid parameters!\n" ) ;
+
+ // Search topic ...
+ IMPL_TextlistItem* pSearchItem = impl_searchTopic ( rTopic, bbeforeProgress ) ;
+
+ if ( pSearchItem != NULL )
+ {
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // ... update text ...
+ pSearchItem->sText = rText ;
+
+ // ... and update window.
+ impl_rebuildFixedText () ;
+ impl_recalcLayout () ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::setForegroundColor ( sal_Int32 nColor ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xProgressBar.is () )
+ {
+ m_xProgressBar->setForegroundColor ( nColor ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::setBackgroundColor ( sal_Int32 nColor ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xProgressBar.is () )
+ {
+ m_xProgressBar->setBackgroundColor ( nColor ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::setValue ( sal_Int32 nValue ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xProgressBar.is () )
+ {
+ m_xProgressBar->setValue ( nValue ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::setRange ( sal_Int32 nMin, sal_Int32 nMax ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xProgressBar.is () )
+ {
+ m_xProgressBar->setRange ( nMin, nMax ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XProgressBar
+//____________________________________________________________________________________________________________
+
+sal_Int32 SAL_CALL ProgressMonitor::getValue () throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if (m_xProgressBar.is())
+ {
+ return m_xProgressBar->getValue () ;
+ }
+
+ return 0 ;
+}
+
+//____________________________________________________________________________________________________________
+// XButton
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::addActionListener ( const Reference< XActionListener > & rListener ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xButton.is () )
+ {
+ m_xButton->addActionListener ( rListener ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XButton
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::removeActionListener ( const Reference< XActionListener > & rListener ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xButton.is () )
+ {
+ m_xButton->removeActionListener ( rListener ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XButton
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::setLabel ( const OUString& rLabel ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xButton.is () )
+ {
+ m_xButton->setLabel ( rLabel ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XButton
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::setActionCommand ( const OUString& rCommand ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ if ( m_xButton.is () )
+ {
+ m_xButton->setActionCommand ( rCommand ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XLayoutConstrains
+//____________________________________________________________________________________________________________
+
+Size SAL_CALL ProgressMonitor::getMinimumSize () throw( RuntimeException )
+{
+ return Size (PROGRESSMONITOR_DEFAULT_WIDTH, PROGRESSMONITOR_DEFAULT_HEIGHT) ;
+}
+
+//____________________________________________________________________________________________________________
+// XLayoutConstrains
+//____________________________________________________________________________________________________________
+
+Size SAL_CALL ProgressMonitor::getPreferredSize () throw( RuntimeException )
+{
+ // Ready for multithreading
+ ClearableMutexGuard aGuard ( m_aMutex ) ;
+
+ // get information about required place of child controls
+ Reference< XLayoutConstrains > xTopicLayout_Top ( m_xTopic_Top , UNO_QUERY ) ;
+ Reference< XLayoutConstrains > xTopicLayout_Bottom ( m_xTopic_Bottom , UNO_QUERY ) ;
+ Reference< XLayoutConstrains > xButtonLayout ( m_xButton , UNO_QUERY ) ;
+ Reference< XWindow > xProgressBarWindow ( m_xProgressBar , UNO_QUERY ) ;
+
+ Size aTopicSize_Top = xTopicLayout_Top->getPreferredSize ();
+ Size aTopicSize_Bottom = xTopicLayout_Bottom->getPreferredSize ();
+ Size aButtonSize = xButtonLayout->getPreferredSize ();
+ Rectangle aTempRectangle = xProgressBarWindow->getPosSize ();
+ Size aProgressBarSize = Size( aTempRectangle.Width, aTempRectangle.Height );
+
+ aGuard.clear () ;
+
+ // calc preferred size of progressmonitor
+ sal_Int32 nWidth = 0 ;
+ sal_Int32 nHeight = 0 ;
+
+ nWidth = 3 * PROGRESSMONITOR_FREEBORDER ;
+ nWidth += aProgressBarSize.Width ;
+
+ nHeight = 6 * PROGRESSMONITOR_FREEBORDER ;
+ nHeight += aTopicSize_Top.Height ;
+ nHeight += aProgressBarSize.Height ;
+ nHeight += aTopicSize_Bottom.Height;
+ nHeight += 2 ; // 1 for black line, 1 for white line = 3D-Line!
+ nHeight += aButtonSize.Height ;
+
+ // norm to minimum
+ if ( nWidth < PROGRESSMONITOR_DEFAULT_WIDTH )
+ {
+ nWidth = PROGRESSMONITOR_DEFAULT_WIDTH ;
+ }
+ if ( nHeight < PROGRESSMONITOR_DEFAULT_HEIGHT )
+ {
+ nHeight = PROGRESSMONITOR_DEFAULT_HEIGHT ;
+ }
+
+ // return to caller
+ return Size ( nWidth, nHeight ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XLayoutConstrains
+//____________________________________________________________________________________________________________
+
+Size SAL_CALL ProgressMonitor::calcAdjustedSize ( const Size& /*rNewSize*/ ) throw( RuntimeException )
+{
+ return getPreferredSize () ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::createPeer ( const Reference< XToolkit > & rToolkit, const Reference< XWindowPeer > & rParent ) throw( RuntimeException )
+{
+ if (!getPeer().is())
+ {
+ BaseContainerControl::createPeer ( rToolkit, rParent ) ;
+
+ // If user forget to call "setPosSize()", we have still a correct size.
+ // And a "MinimumSize" IS A "MinimumSize"!
+ // We change not the position of control at this point.
+ Size aDefaultSize = getMinimumSize () ;
+ setPosSize ( 0, 0, aDefaultSize.Width, aDefaultSize.Height, PosSize::SIZE ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL ProgressMonitor::setModel ( const Reference< XControlModel > & /*rModel*/ ) throw( RuntimeException )
+{
+ // We have no model.
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XControlModel > SAL_CALL ProgressMonitor::getModel () throw( RuntimeException )
+{
+ // We have no model.
+ // return (XControlModel*)this ;
+ return Reference< XControlModel > () ;
+}
+
+//____________________________________________________________________________________________________________
+// XComponent
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::dispose () throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // "removeControl()" control the state of a reference
+ Reference< XControl > xRef_Topic_Top ( m_xTopic_Top , UNO_QUERY ) ;
+ Reference< XControl > xRef_Text_Top ( m_xText_Top , UNO_QUERY ) ;
+ Reference< XControl > xRef_Topic_Bottom ( m_xTopic_Bottom , UNO_QUERY ) ;
+ Reference< XControl > xRef_Text_Bottom ( m_xText_Bottom , UNO_QUERY ) ;
+ Reference< XControl > xRef_Button ( m_xButton , UNO_QUERY ) ;
+ Reference< XControl > xRef_ProgressBar ( m_xProgressBar , UNO_QUERY ) ;
+
+ removeControl ( xRef_Topic_Top ) ;
+ removeControl ( xRef_Text_Top ) ;
+ removeControl ( xRef_Topic_Bottom ) ;
+ removeControl ( xRef_Text_Bottom ) ;
+ removeControl ( xRef_Button ) ;
+ removeControl ( xRef_ProgressBar ) ;
+
+ // do'nt use "...->clear ()" or "... = XFixedText ()"
+ // when other hold a reference at this object !!!
+ xRef_Topic_Top->dispose () ;
+ xRef_Text_Top->dispose () ;
+ xRef_Topic_Bottom->dispose () ;
+ xRef_Text_Bottom->dispose () ;
+ xRef_Button->dispose () ;
+ xRef_ProgressBar->dispose () ;
+
+ BaseContainerControl::dispose () ;
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL ProgressMonitor::setPosSize ( sal_Int32 nX, sal_Int32 nY, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nFlags ) throw( RuntimeException )
+{
+ Rectangle aBasePosSize = getPosSize () ;
+ BaseContainerControl::setPosSize (nX, nY, nWidth, nHeight, nFlags) ;
+
+ // if position or size changed
+ if (
+ ( nWidth != aBasePosSize.Width ) ||
+ ( nHeight != aBasePosSize.Height)
+ )
+ {
+ // calc new layout for controls
+ impl_recalcLayout () ;
+ // clear background (!)
+ // [Childs was repainted in "recalcLayout" by setPosSize() automaticly!]
+ getPeer()->invalidate(2);
+ // and repaint the control
+ impl_paint ( 0, 0, impl_getGraphicsPeer() ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const Sequence< OUString > ProgressMonitor::impl_getStaticSupportedServiceNames()
+{
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+ Sequence< OUString > seqServiceNames( 1 );
+ seqServiceNames.getArray() [0] = OUString::createFromAscii( SERVICENAME_PROGRESSMONITOR );
+ return seqServiceNames ;
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const OUString ProgressMonitor::impl_getStaticImplementationName()
+{
+ return OUString::createFromAscii( IMPLEMENTATIONNAME_PROGRESSMONITOR );
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void ProgressMonitor::impl_paint ( sal_Int32 nX, sal_Int32 nY, const Reference< XGraphics > & rGraphics )
+{
+ if (rGraphics.is())
+ {
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // paint shadowed border around the progressmonitor
+ rGraphics->setLineColor ( PROGRESSMONITOR_LINECOLOR_SHADOW ) ;
+ rGraphics->drawLine ( impl_getWidth()-1, impl_getHeight()-1, impl_getWidth()-1, nY ) ;
+ rGraphics->drawLine ( impl_getWidth()-1, impl_getHeight()-1, nX , impl_getHeight()-1 ) ;
+
+ rGraphics->setLineColor ( PROGRESSMONITOR_LINECOLOR_BRIGHT ) ;
+ rGraphics->drawLine ( nX, nY, impl_getWidth(), nY ) ;
+ rGraphics->drawLine ( nX, nY, nX , impl_getHeight() ) ;
+
+ // Paint 3D-line
+ rGraphics->setLineColor ( PROGRESSMONITOR_LINECOLOR_SHADOW ) ;
+ rGraphics->drawLine ( m_a3DLine.X, m_a3DLine.Y, m_a3DLine.X+m_a3DLine.Width, m_a3DLine.Y ) ;
+
+ rGraphics->setLineColor ( PROGRESSMONITOR_LINECOLOR_BRIGHT ) ;
+ rGraphics->drawLine ( m_a3DLine.X, m_a3DLine.Y+1, m_a3DLine.X+m_a3DLine.Width, m_a3DLine.Y+1 ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void ProgressMonitor::impl_recalcLayout ()
+{
+ sal_Int32 nX_Button ;
+ sal_Int32 nY_Button ;
+ sal_Int32 nWidth_Button ;
+ sal_Int32 nHeight_Button ;
+
+ sal_Int32 nX_ProgressBar ;
+ sal_Int32 nY_ProgressBar ;
+ sal_Int32 nWidth_ProgressBar ;
+ sal_Int32 nHeight_ProgressBar ;
+
+ sal_Int32 nX_3DLine ;
+ sal_Int32 nY_3DLine ;
+ sal_Int32 nWidth_3DLine ;
+ sal_Int32 nHeight_3DLine ;
+
+ sal_Int32 nX_Text_Top ;
+ sal_Int32 nY_Text_Top ;
+ sal_Int32 nWidth_Text_Top ;
+ sal_Int32 nHeight_Text_Top ;
+
+ sal_Int32 nX_Topic_Top ;
+ sal_Int32 nY_Topic_Top ;
+ sal_Int32 nWidth_Topic_Top ;
+ sal_Int32 nHeight_Topic_Top ;
+
+ sal_Int32 nX_Text_Bottom ;
+ sal_Int32 nY_Text_Bottom ;
+ sal_Int32 nWidth_Text_Bottom ;
+ sal_Int32 nHeight_Text_Bottom ;
+
+ sal_Int32 nX_Topic_Bottom ;
+ sal_Int32 nY_Topic_Bottom ;
+ sal_Int32 nWidth_Topic_Bottom ;
+ sal_Int32 nHeight_Topic_Bottom ;
+
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // get information about required place of child controls
+ Reference< XLayoutConstrains > xTopicLayout_Top ( m_xTopic_Top , UNO_QUERY ) ;
+ Reference< XLayoutConstrains > xTextLayout_Top ( m_xText_Top , UNO_QUERY ) ;
+ Reference< XLayoutConstrains > xTopicLayout_Bottom ( m_xTopic_Bottom , UNO_QUERY ) ;
+ Reference< XLayoutConstrains > xTextLayout_Bottom ( m_xText_Bottom , UNO_QUERY ) ;
+ Reference< XLayoutConstrains > xButtonLayout ( m_xButton , UNO_QUERY ) ;
+
+ Size aTopicSize_Top = xTopicLayout_Top->getPreferredSize () ;
+ Size aTextSize_Top = xTextLayout_Top->getPreferredSize () ;
+ Size aTopicSize_Bottom = xTopicLayout_Bottom->getPreferredSize () ;
+ Size aTextSize_Bottom = xTextLayout_Bottom->getPreferredSize () ;
+ Size aButtonSize = xButtonLayout->getPreferredSize () ;
+
+ // calc position and size of child controls
+ // Button has preferred size!
+ nWidth_Button = aButtonSize.Width ;
+ nHeight_Button = aButtonSize.Height ;
+
+ // Left column before progressbar has preferred size and fixed position.
+ // But "Width" is oriented on left column below progressbar to!!! "max(...)"
+ nX_Topic_Top = PROGRESSMONITOR_FREEBORDER ;
+ nY_Topic_Top = PROGRESSMONITOR_FREEBORDER ;
+ nWidth_Topic_Top = Max ( aTopicSize_Top.Width, aTopicSize_Bottom.Width ) ;
+ nHeight_Topic_Top = aTopicSize_Top.Height ;
+
+ // Right column before progressbar has relativ position to left column ...
+ // ... and a size as rest of dialog size!
+ nX_Text_Top = nX_Topic_Top+nWidth_Topic_Top+PROGRESSMONITOR_FREEBORDER;
+ nY_Text_Top = nY_Topic_Top ;
+ nWidth_Text_Top = Max ( aTextSize_Top.Width, aTextSize_Bottom.Width ) ;
+ // Fix size of this column to minimum!
+ sal_Int32 nSummaryWidth = nWidth_Text_Top+nWidth_Topic_Top+(3*PROGRESSMONITOR_FREEBORDER) ;
+ if ( nSummaryWidth < PROGRESSMONITOR_DEFAULT_WIDTH )
+ nWidth_Text_Top = PROGRESSMONITOR_DEFAULT_WIDTH-nWidth_Topic_Top-(3*PROGRESSMONITOR_FREEBORDER);
+ // Fix size of column to maximum!
+ if ( nSummaryWidth > impl_getWidth() )
+ nWidth_Text_Top = impl_getWidth()-nWidth_Topic_Top-(3*PROGRESSMONITOR_FREEBORDER) ;
+ nHeight_Text_Top = nHeight_Topic_Top ;
+
+ // Position of progressbar is relativ to columns before.
+ // Progressbar.Width = Dialog.Width !!!
+ // Progressbar.Height = Button.Height
+ nX_ProgressBar = nX_Topic_Top ;
+ nY_ProgressBar = nY_Topic_Top+nHeight_Topic_Top+PROGRESSMONITOR_FREEBORDER ;
+ nWidth_ProgressBar = PROGRESSMONITOR_FREEBORDER+nWidth_Topic_Top+nWidth_Text_Top ;
+ nHeight_ProgressBar = nHeight_Button ;
+
+ // Oriented by left column before progressbar.
+ nX_Topic_Bottom = nX_Topic_Top ;
+ nY_Topic_Bottom = nY_ProgressBar+nHeight_ProgressBar+PROGRESSMONITOR_FREEBORDER ;
+ nWidth_Topic_Bottom = nWidth_Topic_Top ;
+ nHeight_Topic_Bottom = aTopicSize_Bottom.Height ;
+
+ // Oriented by right column before progressbar.
+ nX_Text_Bottom = nX_Topic_Bottom+nWidth_Topic_Bottom+PROGRESSMONITOR_FREEBORDER ;
+ nY_Text_Bottom = nY_Topic_Bottom ;
+ nWidth_Text_Bottom = nWidth_Text_Top ;
+ nHeight_Text_Bottom = nHeight_Topic_Bottom ;
+
+ // Oriented by progressbar.
+ nX_3DLine = nX_Topic_Top ;
+ nY_3DLine = nY_Topic_Bottom+nHeight_Topic_Bottom+(PROGRESSMONITOR_FREEBORDER/2) ;
+ nWidth_3DLine = nWidth_ProgressBar ;
+ nHeight_3DLine = 1 ; // Height for ONE line ! (But we paint two lines!)
+
+ // Oriented by progressbar.
+ nX_Button = nX_ProgressBar+nWidth_ProgressBar-nWidth_Button ;
+ nY_Button = nY_Topic_Bottom+nHeight_Topic_Bottom+PROGRESSMONITOR_FREEBORDER ;
+
+ // Calc offsets to center controls
+ sal_Int32 nDx ;
+ sal_Int32 nDy ;
+
+ nDx = ( (2*PROGRESSMONITOR_FREEBORDER)+nWidth_ProgressBar ) ;
+ nDy = ( (6*PROGRESSMONITOR_FREEBORDER)+nHeight_Topic_Top+nHeight_ProgressBar+nHeight_Topic_Bottom+2+nHeight_Button ) ;
+
+ // At this point use original dialog size to center controls!
+ nDx = (impl_getWidth ()/2)-(nDx/2) ;
+ nDy = (impl_getHeight()/2)-(nDy/2) ;
+
+ if ( nDx<0 )
+ {
+ nDx=0 ;
+ }
+ if ( nDy<0 )
+ {
+ nDy=0 ;
+ }
+
+ // Set new position and size on all controls
+ Reference< XWindow > xRef_Topic_Top ( m_xTopic_Top , UNO_QUERY ) ;
+ Reference< XWindow > xRef_Text_Top ( m_xText_Top , UNO_QUERY ) ;
+ Reference< XWindow > xRef_Topic_Bottom ( m_xTopic_Bottom , UNO_QUERY ) ;
+ Reference< XWindow > xRef_Text_Bottom ( m_xText_Bottom , UNO_QUERY ) ;
+ Reference< XWindow > xRef_Button ( m_xButton , UNO_QUERY ) ;
+ Reference< XWindow > xRef_ProgressBar ( m_xProgressBar , UNO_QUERY ) ;
+
+ xRef_Topic_Top->setPosSize ( nDx+nX_Topic_Top , nDy+nY_Topic_Top , nWidth_Topic_Top , nHeight_Topic_Top , 15 ) ;
+ xRef_Text_Top->setPosSize ( nDx+nX_Text_Top , nDy+nY_Text_Top , nWidth_Text_Top , nHeight_Text_Top , 15 ) ;
+ xRef_Topic_Bottom->setPosSize ( nDx+nX_Topic_Bottom , nDy+nY_Topic_Bottom , nWidth_Topic_Bottom , nHeight_Topic_Bottom , 15 ) ;
+ xRef_Text_Bottom->setPosSize ( nDx+nX_Text_Bottom , nDy+nY_Text_Bottom , nWidth_Text_Bottom , nHeight_Text_Bottom , 15 ) ;
+ xRef_Button->setPosSize ( nDx+nX_Button , nDy+nY_Button , nWidth_Button , nHeight_Button , 15 ) ;
+ xRef_ProgressBar->setPosSize ( nDx+nX_ProgressBar , nDy+nY_ProgressBar , nWidth_ProgressBar , nHeight_ProgressBar , 15 ) ;
+
+ m_a3DLine.X = nDx+nX_Topic_Top ;
+ m_a3DLine.Y = nDy+nY_Topic_Bottom+nHeight_Topic_Bottom+(PROGRESSMONITOR_FREEBORDER/2) ;
+ m_a3DLine.Width = nWidth_ProgressBar ;
+ m_a3DLine.Height = nHeight_ProgressBar ;
+
+ // All childcontrols make an implicit repaint in setPosSize()!
+ // Make it also for this 3D-line ...
+ Reference< XGraphics > xGraphics = impl_getGraphicsPeer () ;
+
+ xGraphics->setLineColor ( PROGRESSMONITOR_LINECOLOR_SHADOW ) ;
+ xGraphics->drawLine ( m_a3DLine.X, m_a3DLine.Y, m_a3DLine.X+m_a3DLine.Width, m_a3DLine.Y ) ;
+
+ xGraphics->setLineColor ( PROGRESSMONITOR_LINECOLOR_BRIGHT ) ;
+ xGraphics->drawLine ( m_a3DLine.X, m_a3DLine.Y+1, m_a3DLine.X+m_a3DLine.Width, m_a3DLine.Y+1 ) ;
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void ProgressMonitor::impl_rebuildFixedText ()
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // Rebuild fixedtext before progress
+
+ // Rebuild left site of text
+ if (m_xTopic_Top.is())
+ {
+ OUString aCollectString ;
+
+ // Collect all topics from list and format text.
+ // "\n" MUST BE at the end of line!!! => Else ... topic and his text are not in the same line!!!
+ for ( sal_uInt32 n=0; n<m_pTextlist_Top->Count(); ++n )
+ {
+ IMPL_TextlistItem* pSearchItem = m_pTextlist_Top->GetObject (n) ;
+ aCollectString += pSearchItem->sTopic ;
+ aCollectString += OUString::createFromAscii("\n") ;
+ }
+ aCollectString += OUString::createFromAscii("\0") ; // It's better :-)
+
+ m_xTopic_Top->setText ( aCollectString ) ;
+ }
+
+ // Rebuild right site of text
+ if (m_xText_Top.is())
+ {
+ OUString aCollectString ;
+
+ // Collect all topics from list and format text.
+ // "\n" MUST BE at the end of line!!! => Else ... topic and his text are not in the same line!!!
+ for ( sal_uInt32 n=0; n<m_pTextlist_Top->Count(); ++n )
+ {
+ IMPL_TextlistItem* pSearchItem = m_pTextlist_Top->GetObject (n) ;
+ aCollectString += pSearchItem->sText ;
+ aCollectString += OUString::createFromAscii("\n") ;
+ }
+ aCollectString += OUString::createFromAscii("\0") ; // It's better :-)
+
+ m_xText_Top->setText ( aCollectString ) ;
+ }
+
+ // Rebuild fixedtext below progress
+
+ // Rebuild left site of text
+ if (m_xTopic_Bottom.is())
+ {
+ OUString aCollectString ;
+
+ // Collect all topics from list and format text.
+ // "\n" MUST BE at the end of line!!! => Else ... topic and his text are not in the same line!!!
+ for ( sal_uInt32 n=0; n<m_pTextlist_Bottom->Count(); ++n )
+ {
+ IMPL_TextlistItem* pSearchItem = m_pTextlist_Bottom->GetObject (n) ;
+ aCollectString += pSearchItem->sTopic ;
+ aCollectString += OUString::createFromAscii("\n") ;
+ }
+ aCollectString += OUString::createFromAscii("\0") ; // It's better :-)
+
+ m_xTopic_Bottom->setText ( aCollectString ) ;
+ }
+
+ // Rebuild right site of text
+ if (m_xText_Bottom.is())
+ {
+ OUString aCollectString ;
+
+ // Collect all topics from list and format text.
+ // "\n" MUST BE at the end of line!!! => Else ... topic and his text are not in the same line!!!
+ for ( sal_uInt32 n=0; n<m_pTextlist_Bottom->Count(); ++n )
+ {
+ IMPL_TextlistItem* pSearchItem = m_pTextlist_Bottom->GetObject (n) ;
+ aCollectString += pSearchItem->sText ;
+ aCollectString += OUString::createFromAscii("\n") ;
+ }
+ aCollectString += OUString::createFromAscii("\0") ; // It's better :-)
+
+ m_xText_Bottom->setText ( aCollectString ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+void ProgressMonitor::impl_cleanMemory ()
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // Delete all of lists.
+
+ sal_uInt32 nPosition ;
+
+ for ( nPosition = 0; nPosition < m_pTextlist_Top->Count () ; ++nPosition )
+ {
+ IMPL_TextlistItem* pSearchItem = m_pTextlist_Top->GetObject ( nPosition ) ;
+ delete pSearchItem ;
+ }
+ m_pTextlist_Top->Clear () ;
+ delete m_pTextlist_Top ;
+
+ for ( nPosition = 0; nPosition < m_pTextlist_Bottom->Count () ; ++nPosition )
+ {
+ IMPL_TextlistItem* pSearchItem = m_pTextlist_Bottom->GetObject ( nPosition ) ;
+ delete pSearchItem ;
+ }
+ m_pTextlist_Bottom->Clear () ;
+ delete m_pTextlist_Bottom ;
+}
+
+//____________________________________________________________________________________________________________
+// private method
+//____________________________________________________________________________________________________________
+
+IMPL_TextlistItem* ProgressMonitor::impl_searchTopic ( const OUString& rTopic, sal_Bool bbeforeProgress )
+{
+ // Get right textlist for following operations.
+ IMPL_Textlist* pTextList ;
+
+ // Ready for multithreading
+ ClearableMutexGuard aGuard ( m_aMutex ) ;
+
+ if ( bbeforeProgress == sal_True )
+ {
+ pTextList = m_pTextlist_Top ;
+ }
+ else
+ {
+ pTextList = m_pTextlist_Bottom ;
+ }
+
+ // Switch off guard.
+ aGuard.clear () ;
+
+ // Search the topic in textlist.
+ sal_uInt32 nPosition = 0 ;
+ sal_uInt32 nCount = pTextList->Count () ;
+
+ for ( nPosition = 0; nPosition < nCount ; ++nPosition )
+ {
+ IMPL_TextlistItem* pSearchItem = pTextList->GetObject ( nPosition ) ;
+
+ if ( pSearchItem->sTopic == rTopic )
+ {
+ // We have found this topic ... return a valid pointer.
+ return pSearchItem ;
+ }
+ }
+
+ // We have'nt found this topic ... return a nonvalid pointer.
+ return NULL ;
+}
+
+//____________________________________________________________________________________________________________
+// debug methods
+//____________________________________________________________________________________________________________
+
+#ifdef DBG_UTIL
+
+// addText, updateText
+sal_Bool ProgressMonitor::impl_debug_checkParameter (
+ const OUString& rTopic,
+ const OUString& rText,
+ sal_Bool /*bbeforeProgress*/
+) {
+ // Check "rTopic"
+ if ( &rTopic == NULL ) return sal_False ; // NULL-pointer for reference ???!!!
+ if ( rTopic.getLength () < 1 ) return sal_False ; // ""
+
+ // Check "rText"
+ if ( &rText == NULL ) return sal_False ; // NULL-pointer for reference ???!!!
+ if ( rText.getLength () < 1 ) return sal_False ; // ""
+
+ // "bbeforeProgress" is valid in everyway!
+
+ // Parameter OK ... return sal_True.
+ return sal_True ;
+}
+
+// removeText
+sal_Bool ProgressMonitor::impl_debug_checkParameter ( const OUString& rTopic, sal_Bool /*bbeforeProgress*/ )
+{
+ // Check "rTopic"
+ if ( &rTopic == NULL ) return sal_False ; // NULL-pointer for reference ???!!!
+ if ( rTopic.getLength () < 1 ) return sal_False ; // ""
+
+ // "bbeforeProgress" is valid in everyway!
+
+ // Parameter OK ... return sal_True.
+ return sal_True ;
+}
+
+#endif // #ifdef DBG_UTIL
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/controls/statusindicator.cxx b/UnoControls/source/controls/statusindicator.cxx
new file mode 100644
index 000000000000..70b195931c18
--- /dev/null
+++ b/UnoControls/source/controls/statusindicator.cxx
@@ -0,0 +1,562 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+//____________________________________________________________________________________________________________
+// my own includes
+//____________________________________________________________________________________________________________
+
+#include "statusindicator.hxx"
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+#include <com/sun/star/awt/InvalidateStyle.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <tools/debug.hxx>
+
+//____________________________________________________________________________________________________________
+// includes of my project
+//____________________________________________________________________________________________________________
+#include "progressbar.hxx"
+
+//____________________________________________________________________________________________________________
+// namespace
+//____________________________________________________________________________________________________________
+
+using namespace ::cppu ;
+using namespace ::osl ;
+using namespace ::rtl ;
+using namespace ::com::sun::star::uno ;
+using namespace ::com::sun::star::lang ;
+using namespace ::com::sun::star::awt ;
+using namespace ::com::sun::star::task ;
+
+namespace unocontrols{
+
+//____________________________________________________________________________________________________________
+// construct/destruct
+//____________________________________________________________________________________________________________
+
+StatusIndicator::StatusIndicator( const Reference< XMultiServiceFactory >& xFactory )
+ : BaseContainerControl ( xFactory )
+{
+ // Its not allowed to work with member in this method (refcounter !!!)
+ // But with a HACK (++refcount) its "OK" :-(
+ ++m_refCount ;
+
+ // Create instances for fixedtext and progress ...
+ m_xText = Reference< XFixedText > ( xFactory->createInstance( OUString::createFromAscii( FIXEDTEXT_SERVICENAME ) ), UNO_QUERY );
+ m_xProgressBar = Reference< XProgressBar > ( xFactory->createInstance( OUString::createFromAscii( SERVICENAME_PROGRESSBAR ) ), UNO_QUERY );
+ // ... cast controls to Reference< XControl > and set model ...
+ // ( ProgressBar has no model !!! )
+ Reference< XControl > xTextControl ( m_xText , UNO_QUERY );
+ Reference< XControl > xProgressControl ( m_xProgressBar, UNO_QUERY );
+ xTextControl->setModel( Reference< XControlModel >( xFactory->createInstance( OUString::createFromAscii( FIXEDTEXT_MODELNAME ) ), UNO_QUERY ) );
+ // ... and add controls to basecontainercontrol!
+ addControl( OUString::createFromAscii( CONTROLNAME_TEXT ), xTextControl );
+ addControl( OUString::createFromAscii( CONTROLNAME_PROGRESSBAR ), xProgressControl );
+ // FixedText make it automaticly visible by himself ... but not the progressbar !!!
+ // it must be set explicitly
+ Reference< XWindow > xProgressWindow( m_xProgressBar, UNO_QUERY );
+ xProgressWindow->setVisible( sal_True );
+ // Reset to defaults !!!
+ // (progressbar take automaticly its own defaults)
+ m_xText->setText( OUString::createFromAscii( STATUSINDICATOR_DEFAULT_TEXT ) );
+
+ --m_refCount ;
+}
+
+StatusIndicator::~StatusIndicator()
+{
+ // Release all references
+ m_xText = Reference< XFixedText >();
+ m_xProgressBar = Reference< XProgressBar >();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL StatusIndicator::queryInterface( const Type& rType ) throw( RuntimeException )
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+ Any aReturn ;
+ Reference< XInterface > xDel = BaseContainerControl::impl_getDelegator();
+ if ( xDel.is() )
+ {
+ // If an delegator exist, forward question to his queryInterface.
+ // Delegator will ask his own queryAggregation!
+ aReturn = xDel->queryInterface( rType );
+ }
+ else
+ {
+ // If an delegator unknown, forward question to own queryAggregation.
+ aReturn = queryAggregation( rType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::acquire() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::acquire();
+}
+
+//____________________________________________________________________________________________________________
+// XInterface
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::release() throw()
+{
+ // Attention:
+ // Don't use mutex or guard in this method!!! Is a method of XInterface.
+
+ // Forward to baseclass
+ BaseControl::release();
+}
+
+//____________________________________________________________________________________________________________
+// XTypeProvider
+//____________________________________________________________________________________________________________
+
+Sequence< Type > SAL_CALL StatusIndicator::getTypes() throw( RuntimeException )
+{
+ // Optimize this method !
+ // We initialize a static variable only one time. And we don't must use a mutex at every call!
+ // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
+ static OTypeCollection* pTypeCollection = NULL ;
+
+ if ( pTypeCollection == NULL )
+ {
+ // Ready for multithreading; get global mutex for first call of this method only! see before
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+
+ // Control these pointer again ... it can be, that another instance will be faster then these!
+ if ( pTypeCollection == NULL )
+ {
+ // Create a static typecollection ...
+ static OTypeCollection aTypeCollection ( ::getCppuType(( const Reference< XLayoutConstrains >*)NULL ) ,
+ ::getCppuType(( const Reference< XStatusIndicator >*)NULL ) ,
+ BaseContainerControl::getTypes()
+ );
+ // ... and set his address to static pointer!
+ pTypeCollection = &aTypeCollection ;
+ }
+ }
+
+ return pTypeCollection->getTypes();
+}
+
+//____________________________________________________________________________________________________________
+// XAggregation
+//____________________________________________________________________________________________________________
+
+Any SAL_CALL StatusIndicator::queryAggregation( const Type& aType ) throw( RuntimeException )
+{
+ // Ask for my own supported interfaces ...
+ // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
+ Any aReturn ( ::cppu::queryInterface( aType ,
+ static_cast< XLayoutConstrains* > ( this ) ,
+ static_cast< XStatusIndicator* > ( this )
+ )
+ );
+
+ // If searched interface not supported by this class ...
+ if ( aReturn.hasValue() == sal_False )
+ {
+ // ... ask baseclasses.
+ aReturn = BaseControl::queryAggregation( aType );
+ }
+
+ return aReturn ;
+}
+
+//____________________________________________________________________________________________________________
+// XStatusIndicator
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::start( const OUString& sText, sal_Int32 nRange ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // Initialize status controls with given values.
+ m_xText->setText( sText );
+ m_xProgressBar->setRange( 0, nRange );
+ // force repaint ... fixedtext has changed !
+ impl_recalcLayout ( WindowEvent(static_cast< OWeakObject* >(this),0,0,impl_getWidth(),impl_getHeight(),0,0,0,0) ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XStatusIndicator
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::end() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // Clear values of status controls.
+ m_xText->setText( OUString() );
+ m_xProgressBar->setValue( 0 );
+ setVisible( sal_False );
+}
+
+//____________________________________________________________________________________________________________
+// XStatusIndicator
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::setText( const OUString& sText ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // Take text on right control
+ m_xText->setText( sText );
+}
+
+//____________________________________________________________________________________________________________
+// XStatusIndicator
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::setValue( sal_Int32 nValue ) throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // Take value on right control
+ m_xProgressBar->setValue( nValue );
+}
+
+//____________________________________________________________________________________________________________
+// XStatusIndicator
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::reset() throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard( m_aMutex );
+
+ // Clear values of status controls.
+ // (Don't hide the window! User will reset current values ... but he will not finish using of indicator!)
+ m_xText->setText( OUString() );
+ m_xProgressBar->setValue( 0 );
+}
+
+//____________________________________________________________________________________________________________
+// XLayoutConstrains
+//____________________________________________________________________________________________________________
+
+Size SAL_CALL StatusIndicator::getMinimumSize () throw( RuntimeException )
+{
+ return Size (STATUSINDICATOR_DEFAULT_WIDTH, STATUSINDICATOR_DEFAULT_HEIGHT) ;
+}
+
+//____________________________________________________________________________________________________________
+// XLayoutConstrains
+//____________________________________________________________________________________________________________
+
+Size SAL_CALL StatusIndicator::getPreferredSize () throw( RuntimeException )
+{
+ // Ready for multithreading
+ ClearableMutexGuard aGuard ( m_aMutex ) ;
+
+ // get information about required place of child controls
+ Reference< XLayoutConstrains > xTextLayout ( m_xText, UNO_QUERY );
+ Size aTextSize = xTextLayout->getPreferredSize();
+
+ aGuard.clear () ;
+
+ // calc preferred size of status indicator
+ sal_Int32 nWidth = impl_getWidth() ;
+ sal_Int32 nHeight = (2*STATUSINDICATOR_FREEBORDER)+aTextSize.Height ;
+
+ // norm to minimum
+ if ( nWidth<STATUSINDICATOR_DEFAULT_WIDTH )
+ {
+ nWidth = STATUSINDICATOR_DEFAULT_WIDTH ;
+ }
+ if ( nHeight<STATUSINDICATOR_DEFAULT_HEIGHT )
+ {
+ nHeight = STATUSINDICATOR_DEFAULT_HEIGHT ;
+ }
+
+ // return to caller
+ return Size ( nWidth, nHeight ) ;
+}
+
+//____________________________________________________________________________________________________________
+// XLayoutConstrains
+//____________________________________________________________________________________________________________
+
+Size SAL_CALL StatusIndicator::calcAdjustedSize ( const Size& /*rNewSize*/ ) throw( RuntimeException )
+{
+ return getPreferredSize () ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::createPeer (
+ const Reference< XToolkit > & rToolkit,
+ const Reference< XWindowPeer > & rParent
+) throw( RuntimeException )
+{
+ if( getPeer().is() == sal_False )
+ {
+ BaseContainerControl::createPeer( rToolkit, rParent );
+
+ // If user forget to call "setPosSize()", we have still a correct size.
+ // And a "MinimumSize" IS A "MinimumSize"!
+ // We change not the position of control at this point.
+ Size aDefaultSize = getMinimumSize () ;
+ setPosSize ( 0, 0, aDefaultSize.Width, aDefaultSize.Height, PosSize::SIZE ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+sal_Bool SAL_CALL StatusIndicator::setModel ( const Reference< XControlModel > & /*rModel*/ ) throw( RuntimeException )
+{
+ // We have no model.
+ return sal_False ;
+}
+
+//____________________________________________________________________________________________________________
+// XControl
+//____________________________________________________________________________________________________________
+
+Reference< XControlModel > SAL_CALL StatusIndicator::getModel () throw( RuntimeException )
+{
+ // We have no model.
+ // return (XControlModel*)this ;
+ return Reference< XControlModel > () ;
+}
+
+//____________________________________________________________________________________________________________
+// XComponent
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::dispose () throw( RuntimeException )
+{
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // "removeControl()" control the state of a reference
+ Reference< XControl > xTextControl ( m_xText , UNO_QUERY );
+ Reference< XControl > xProgressControl ( m_xProgressBar, UNO_QUERY );
+
+ removeControl( xTextControl );
+ removeControl( xProgressControl );
+
+ // do'nt use "...->clear ()" or "... = XFixedText ()"
+ // when other hold a reference at this object !!!
+ xTextControl->dispose();
+ xProgressControl->dispose();
+ BaseContainerControl::dispose();
+}
+
+//____________________________________________________________________________________________________________
+// XWindow
+//____________________________________________________________________________________________________________
+
+void SAL_CALL StatusIndicator::setPosSize (
+ sal_Int32 nX,
+ sal_Int32 nY,
+ sal_Int32 nWidth,
+ sal_Int32 nHeight,
+ sal_Int16 nFlags
+) throw( RuntimeException )
+{
+ Rectangle aBasePosSize = getPosSize () ;
+ BaseContainerControl::setPosSize (nX, nY, nWidth, nHeight, nFlags) ;
+
+ // if position or size changed
+ if (
+ ( nWidth != aBasePosSize.Width ) ||
+ ( nHeight != aBasePosSize.Height)
+ )
+ {
+ // calc new layout for controls
+ impl_recalcLayout ( WindowEvent(static_cast< OWeakObject* >(this),0,0,nWidth,nHeight,0,0,0,0) ) ;
+ // clear background (!)
+ // [Childs was repainted in "recalcLayout" by setPosSize() automaticly!]
+ getPeer()->invalidate(2);
+ // and repaint the control
+ impl_paint ( 0, 0, impl_getGraphicsPeer() ) ;
+ }
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const Sequence< OUString > StatusIndicator::impl_getStaticSupportedServiceNames()
+{
+ MutexGuard aGuard( Mutex::getGlobalMutex() );
+ Sequence< OUString > seqServiceNames( 1 );
+ seqServiceNames.getArray() [0] = OUString::createFromAscii( SERVICENAME_STATUSINDICATOR );
+ return seqServiceNames ;
+}
+
+//____________________________________________________________________________________________________________
+// impl but public method to register service
+//____________________________________________________________________________________________________________
+
+const OUString StatusIndicator::impl_getStaticImplementationName()
+{
+ return OUString::createFromAscii( IMPLEMENTATIONNAME_STATUSINDICATOR );
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+WindowDescriptor* StatusIndicator::impl_getWindowDescriptor( const Reference< XWindowPeer >& xParentPeer )
+{
+ // - used from "createPeer()" to set the values of an ::com::sun::star::awt::WindowDescriptor !!!
+ // - if you will change the descriptor-values, you must override this virtuell function
+ // - the caller must release the memory for this dynamical descriptor !!!
+
+ WindowDescriptor* pDescriptor = new WindowDescriptor ;
+
+ pDescriptor->Type = WindowClass_SIMPLE ;
+ pDescriptor->WindowServiceName = OUString::createFromAscii( "floatingwindow" ) ;
+ pDescriptor->ParentIndex = -1 ;
+ pDescriptor->Parent = xParentPeer ;
+ pDescriptor->Bounds = getPosSize () ;
+
+ return pDescriptor ;
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void StatusIndicator::impl_paint ( sal_Int32 nX, sal_Int32 nY, const Reference< XGraphics > & rGraphics )
+{
+ // This paint method ist not buffered !!
+ // Every request paint the completely control. ( but only, if peer exist )
+ if ( rGraphics.is () )
+ {
+ MutexGuard aGuard (m_aMutex) ;
+
+ // background = gray
+ Reference< XWindowPeer > xPeer( impl_getPeerWindow(), UNO_QUERY );
+ if( xPeer.is() == sal_True )
+ xPeer->setBackground( STATUSINDICATOR_BACKGROUNDCOLOR );
+
+ // FixedText background = gray
+ Reference< XControl > xTextControl( m_xText, UNO_QUERY );
+ xPeer = xTextControl->getPeer();
+ if( xPeer.is() == sal_True )
+ xPeer->setBackground( STATUSINDICATOR_BACKGROUNDCOLOR );
+
+ // Progress background = gray
+ xPeer = Reference< XWindowPeer >( m_xProgressBar, UNO_QUERY );
+ if( xPeer.is() == sal_True )
+ xPeer->setBackground( STATUSINDICATOR_BACKGROUNDCOLOR );
+
+ // paint shadow border
+ rGraphics->setLineColor ( STATUSINDICATOR_LINECOLOR_BRIGHT );
+ rGraphics->drawLine ( nX, nY, impl_getWidth(), nY );
+ rGraphics->drawLine ( nX, nY, nX , impl_getHeight() );
+
+ rGraphics->setLineColor ( STATUSINDICATOR_LINECOLOR_SHADOW );
+ rGraphics->drawLine ( impl_getWidth()-1, impl_getHeight()-1, impl_getWidth()-1, nY );
+ rGraphics->drawLine ( impl_getWidth()-1, impl_getHeight()-1, nX , impl_getHeight()-1 );
+ }
+}
+
+//____________________________________________________________________________________________________________
+// protected method
+//____________________________________________________________________________________________________________
+
+void StatusIndicator::impl_recalcLayout ( const WindowEvent& aEvent )
+{
+ sal_Int32 nX_ProgressBar ;
+ sal_Int32 nY_ProgressBar ;
+ sal_Int32 nWidth_ProgressBar ;
+ sal_Int32 nHeight_ProgressBar ;
+ sal_Int32 nX_Text ;
+ sal_Int32 nY_Text ;
+ sal_Int32 nWidth_Text ;
+ sal_Int32 nHeight_Text ;
+
+ // Ready for multithreading
+ MutexGuard aGuard ( m_aMutex ) ;
+
+ // get information about required place of child controls
+ Size aWindowSize ( aEvent.Width, aEvent.Height );
+ Reference< XLayoutConstrains > xTextLayout ( m_xText, UNO_QUERY );
+ Size aTextSize = xTextLayout->getPreferredSize();
+
+ if( aWindowSize.Width < STATUSINDICATOR_DEFAULT_WIDTH )
+ {
+ aWindowSize.Width = STATUSINDICATOR_DEFAULT_WIDTH;
+ }
+ if( aWindowSize.Height < STATUSINDICATOR_DEFAULT_HEIGHT )
+ {
+ aWindowSize.Height = STATUSINDICATOR_DEFAULT_HEIGHT;
+ }
+
+ // calc position and size of child controls
+ nX_Text = STATUSINDICATOR_FREEBORDER ;
+ nY_Text = STATUSINDICATOR_FREEBORDER ;
+ nWidth_Text = aTextSize.Width ;
+ nHeight_Text = aTextSize.Height ;
+
+ nX_ProgressBar = nX_Text+nWidth_Text+STATUSINDICATOR_FREEBORDER ;
+ nY_ProgressBar = nY_Text ;
+ nWidth_ProgressBar = aWindowSize.Width-nWidth_Text-(3*STATUSINDICATOR_FREEBORDER) ;
+ nHeight_ProgressBar = nHeight_Text ;
+
+ // Set new position and size on all controls
+ Reference< XWindow > xTextWindow ( m_xText , UNO_QUERY );
+ Reference< XWindow > xProgressWindow ( m_xProgressBar, UNO_QUERY );
+
+ xTextWindow->setPosSize ( nX_Text , nY_Text , nWidth_Text , nHeight_Text , 15 ) ;
+ xProgressWindow->setPosSize ( nX_ProgressBar, nY_ProgressBar, nWidth_ProgressBar, nHeight_ProgressBar , 15 ) ;
+}
+
+} // namespace unocontrols
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/inc/OConnectionPointContainerHelper.hxx b/UnoControls/source/inc/OConnectionPointContainerHelper.hxx
new file mode 100644
index 000000000000..e0cc5a9b70b9
--- /dev/null
+++ b/UnoControls/source/inc/OConnectionPointContainerHelper.hxx
@@ -0,0 +1,265 @@
+/* -*- 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 _OCONNECTIONPOINTCONTAINERHELPER_HXX
+#define _OCONNECTIONPOINTCONTAINERHELPER_HXX
+
+//______________________________________________________________________________________________________________
+// includes of other projects
+//______________________________________________________________________________________________________________
+
+#include <com/sun/star/lang/XConnectionPointContainer.hpp>
+#include <com/sun/star/lang/XConnectionPoint.hpp>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/propshlp.hxx>
+
+//______________________________________________________________________________________________________________
+// includes of my own project
+//______________________________________________________________________________________________________________
+
+//______________________________________________________________________________________________________________
+// namespaces
+//______________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_LANG ::com::sun::star::lang
+
+//______________________________________________________________________________________________________________
+// defines
+//______________________________________________________________________________________________________________
+
+//______________________________________________________________________________________________________________
+// class declaration OConnectionPointContainerHelper
+//______________________________________________________________________________________________________________
+
+class OConnectionPointContainerHelper : public CSS_LANG::XConnectionPointContainer
+ , public ::cppu::OWeakObject
+{
+
+//______________________________________________________________________________________________________________
+// public methods
+//______________________________________________________________________________________________________________
+
+public:
+
+ //__________________________________________________________________________________________________________
+ // construct/destruct
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ OConnectionPointContainerHelper( ::osl::Mutex& aMutex );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual ~OConnectionPointContainerHelper();
+
+ //________________________________________________________________________________________________________
+ // XInterface
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short give answer, if interface is supported
+ @descr The interfaces are searched by type.
+
+ @seealso XInterface
+
+ @param "rType" is the type of searched interface.
+
+ @return Any information about found interface
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //__________________________________________________________________________________________________________
+ // XConnectionPointContainer
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getConnectionPointTypes()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Reference< CSS_LANG::XConnectionPoint > SAL_CALL queryConnectionPoint(
+ const CSS_UNO::Type& aType
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL advise(
+ const CSS_UNO::Type& aType ,
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL unadvise(
+ const CSS_UNO::Type& aType ,
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ ::cppu::OMultiTypeInterfaceContainerHelper& impl_getMultiTypeContainer();
+
+//______________________________________________________________________________________________________________
+// private variables
+//______________________________________________________________________________________________________________
+
+private:
+
+ ::osl::Mutex& m_aSharedMutex ;
+ ::cppu::OMultiTypeInterfaceContainerHelper m_aMultiTypeContainer ; // Container to hold listener
+
+}; // class OConnectionPointContainerHelper
+
+// The namespace aliases are only used in this header
+#undef CSS_UNO
+#undef CSS_LANG
+
+} // namespace unocontrols
+
+#endif // #ifndef _OCONNECTIONPOINTCONTAINERHELPER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/inc/OConnectionPointHelper.hxx b/UnoControls/source/inc/OConnectionPointHelper.hxx
new file mode 100644
index 000000000000..b36147e727cb
--- /dev/null
+++ b/UnoControls/source/inc/OConnectionPointHelper.hxx
@@ -0,0 +1,309 @@
+/* -*- 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 _OCONNECTIONPOINTHELPER_HXX
+#define _OCONNECTIONPOINTHELPER_HXX
+
+//______________________________________________________________________________________________________________
+// includes of other projects
+//______________________________________________________________________________________________________________
+
+#include <com/sun/star/lang/XConnectionPointContainer.hpp>
+#include <com/sun/star/lang/XConnectionPoint.hpp>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/propshlp.hxx>
+
+//______________________________________________________________________________________________________________
+// includes of my own project
+//______________________________________________________________________________________________________________
+#include "OConnectionPointContainerHelper.hxx"
+
+//______________________________________________________________________________________________________________
+// namespaces
+//______________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_LANG ::com::sun::star::lang
+
+//______________________________________________________________________________________________________________
+// defines
+//______________________________________________________________________________________________________________
+
+//______________________________________________________________________________________________________________
+// class declaration OConnectionPointHelper
+//______________________________________________________________________________________________________________
+
+class OConnectionPointHelper : public CSS_LANG::XConnectionPoint
+ , public ::cppu::OWeakObject
+{
+
+//______________________________________________________________________________________________________________
+// public methods
+//______________________________________________________________________________________________________________
+
+public:
+
+ //__________________________________________________________________________________________________________
+ // construct/destruct
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ OConnectionPointHelper( ::osl::Mutex& aMutex ,
+ OConnectionPointContainerHelper* pContainerImplementation ,
+ CSS_UNO::Type aType );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual ~OConnectionPointHelper();
+
+ //________________________________________________________________________________________________________
+ // XInterface
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short give answer, if interface is supported
+ @descr The interfaces are searched by type.
+
+ @seealso XInterface
+
+ @param "rType" is the type of searched interface.
+
+ @return Any information about found interface
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //__________________________________________________________________________________________________________
+ // XConnectionPoint
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Type SAL_CALL getConnectionType()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Reference< CSS_LANG::XConnectionPointContainer > SAL_CALL getConnectionPointContainer()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL advise(
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener
+ ) throw (
+ CSS_LANG::ListenerExistException,
+ CSS_LANG::InvalidListenerException ,
+ CSS_UNO::RuntimeException
+ );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL unadvise( const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Reference< CSS_UNO::XInterface > > SAL_CALL getConnections()
+ throw( CSS_UNO::RuntimeException );
+
+//______________________________________________________________________________________________________________
+// private methods
+//______________________________________________________________________________________________________________
+
+private:
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ sal_Bool impl_LockContainer();
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ void impl_UnlockContainer();
+
+//______________________________________________________________________________________________________________
+// private variables
+//______________________________________________________________________________________________________________
+
+private:
+
+ ::osl::Mutex& m_aSharedMutex ;
+ CSS_UNO::WeakReference< CSS_LANG::XConnectionPointContainer > m_oContainerWeakReference ; // Reference to container-class!. Don't use Reference<...>
+ // It is a ring-reference => and must be a wekreference!
+ OConnectionPointContainerHelper* m_pContainerImplementation ;
+ CSS_UNO::Type m_aInterfaceType ;
+ CSS_UNO::Reference< CSS_UNO::XInterface > m_xLock ;
+
+}; // class OConnectionPointHelper
+
+// The namespace aliases are only used in this header
+#undef CSS_UNO
+#undef CSS_LANG
+
+} // namespace unocontrols
+
+#endif // #ifndef _OCONNECTIONPOINTHELPER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/inc/framecontrol.hxx b/UnoControls/source/inc/framecontrol.hxx
new file mode 100644
index 000000000000..5d068ad0cfa1
--- /dev/null
+++ b/UnoControls/source/inc/framecontrol.hxx
@@ -0,0 +1,641 @@
+/* -*- 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 _UNOCONTROLS_FRAMECONTROL_CTRL_HXX
+#define _UNOCONTROLS_FRAMECONTROL_CTRL_HXX
+
+//______________________________________________________________________________________________________________
+// includes of other projects
+//______________________________________________________________________________________________________________
+
+#include <com/sun/star/frame/XFrameActionListener.hpp>
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/FrameActionEvent.hpp>
+#include <com/sun/star/frame/FrameAction.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XConnectionPointContainer.hpp>
+#include <cppuhelper/propshlp.hxx>
+
+//______________________________________________________________________________________________________________
+// includes of my own project
+//______________________________________________________________________________________________________________
+#include "basecontrol.hxx"
+#include "OConnectionPointContainerHelper.hxx"
+
+//______________________________________________________________________________________________________________
+// namespaces
+//______________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_LANG ::com::sun::star::lang
+#define CSS_BEANS ::com::sun::star::beans
+#define CSS_AWT ::com::sun::star::awt
+#define CSS_FRAME ::com::sun::star::frame
+
+//______________________________________________________________________________________________________________
+// defines
+//______________________________________________________________________________________________________________
+
+#define SERVICENAME_FRAMECONTROL "com.sun.star.frame.FrameControl"
+#define IMPLEMENTATIONNAME_FRAMECONTROL "stardiv.UnoControls.FrameControl"
+#define PROPERTYNAME_LOADERARGUMENTS "LoaderArguments"
+#define PROPERTYNAME_COMPONENTURL "ComponentURL"
+#define PROPERTYNAME_FRAME "Frame"
+#define ERRORTEXT_VOSENSHURE "This is an invalid property handle."
+#define PROPERTY_COUNT 3 // you must count the propertys
+#define PROPERTYHANDLE_COMPONENTURL 0 // Id must be the index into the array
+#define PROPERTYHANDLE_FRAME 1
+#define PROPERTYHANDLE_LOADERARGUMENTS 2
+
+//______________________________________________________________________________________________________________
+// class
+//______________________________________________________________________________________________________________
+
+class FrameControl : public CSS_AWT::XControlModel
+ , public CSS_LANG::XConnectionPointContainer
+ , public BaseControl // This order is neccessary for right initialization of m_aMutex!
+ , public ::cppu::OBroadcastHelper
+ , public ::cppu::OPropertySetHelper
+{
+
+//______________________________________________________________________________________________________________
+// public methods
+//______________________________________________________________________________________________________________
+
+public:
+
+ //__________________________________________________________________________________________________________
+ // construct/destruct
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ FrameControl( const CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory >& xFactory );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual ~FrameControl();
+
+ //__________________________________________________________________________________________________________
+ // XInterface
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface(
+ const CSS_UNO::Type& aType
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //__________________________________________________________________________________________________________
+ // XTypeProvider
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getTypes()
+ throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XAggregation
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ CSS_UNO::Any SAL_CALL queryAggregation(
+ const CSS_UNO::Type& aType
+ ) throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XControl
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL createPeer(
+ const CSS_UNO::Reference< CSS_AWT::XToolkit >& xToolkit ,
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParent
+ ) throw ( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual sal_Bool SAL_CALL setModel(
+ const CSS_UNO::Reference< CSS_AWT::XControlModel >& xModel
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XControlModel > SAL_CALL getModel()
+ throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XComponent
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL dispose() throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XView
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual sal_Bool SAL_CALL setGraphics(
+ const CSS_UNO::Reference< CSS_AWT::XGraphics >& xDevice
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XGraphics > SAL_CALL getGraphics()
+ throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XConnectionPointContainer
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getConnectionPointTypes()
+ throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Reference< CSS_LANG::XConnectionPoint > SAL_CALL queryConnectionPoint(
+ const CSS_UNO::Type& aType
+ ) throw ( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL advise(
+ const CSS_UNO::Type& aType ,
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL unadvise(
+ const CSS_UNO::Type& aType ,
+ const CSS_UNO::Reference< CSS_UNO::XInterface >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // impl but public methods to register service!
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ static const CSS_UNO::Sequence< ::rtl::OUString > impl_getStaticSupportedServiceNames();
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ static const ::rtl::OUString impl_getStaticImplementationName();
+
+//______________________________________________________________________________________________________________
+// protected methods
+//______________________________________________________________________________________________________________
+
+protected:
+ using OPropertySetHelper::getFastPropertyValue;
+ //__________________________________________________________________________________________________________
+ // OPropertySetHelper
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual sal_Bool SAL_CALL convertFastPropertyValue(
+ CSS_UNO::Any& rConvertedValue ,
+ CSS_UNO::Any& rOldValue ,
+ sal_Int32 nHandle ,
+ const CSS_UNO::Any& rValue
+ ) throw( CSS_LANG::IllegalArgumentException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
+ sal_Int32 nHandle ,
+ const CSS_UNO::Any& rValue
+ ) throw ( ::com::sun::star::uno::Exception );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL getFastPropertyValue( CSS_UNO::Any& rValue ,
+ sal_Int32 nHandle ) const ;
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
+
+ //__________________________________________________________________________________________________________
+ // XPropertySet
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ CSS_UNO::Reference< CSS_BEANS::XPropertySetInfo > SAL_CALL getPropertySetInfo()
+ throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // BaseControl
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_AWT::WindowDescriptor* impl_getWindowDescriptor(
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParentPeer
+ );
+
+//______________________________________________________________________________________________________________
+// private methods
+//______________________________________________________________________________________________________________
+
+private:
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ void impl_createFrame( const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xPeer ,
+ const ::rtl::OUString& sURL ,
+ const CSS_UNO::Sequence< CSS_BEANS::PropertyValue >& seqArguments );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ void impl_deleteFrame();
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ static const CSS_UNO::Sequence< CSS_BEANS::Property > impl_getStaticPropertyDescriptor();
+
+
+//______________________________________________________________________________________________________________
+// private variables
+//______________________________________________________________________________________________________________
+
+private:
+
+ CSS_UNO::Reference< CSS_FRAME::XFrame > m_xFrame ;
+ ::rtl::OUString m_sComponentURL ;
+ CSS_UNO::Sequence< CSS_BEANS::PropertyValue > m_seqLoaderArguments ;
+ ::cppu::OMultiTypeInterfaceContainerHelper m_aInterfaceContainer ;
+ OConnectionPointContainerHelper m_aConnectionPointContainer ;
+
+}; // class FrameControl
+
+// The namespace alaises are only used in the header
+#undef CSS_UNO
+#undef CSS_LANG
+#undef CSS_BEANS
+#undef CSS_AWT
+#undef CSS_FRAME
+
+} // namespace unocontrols
+
+#endif // #ifndef _UNOCONTROLS_FRAMECONTROL_CTRL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/inc/progressbar.hxx b/UnoControls/source/inc/progressbar.hxx
new file mode 100644
index 000000000000..97cad21816dd
--- /dev/null
+++ b/UnoControls/source/inc/progressbar.hxx
@@ -0,0 +1,459 @@
+/* -*- 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 _UNOCONTROLS_PROGRESSBAR_CTRL_HXX
+#define _UNOCONTROLS_PROGRESSBAR_CTRL_HXX
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+//____________________________________________________________________________________________________________
+// includes of my own project
+//____________________________________________________________________________________________________________
+#include "basecontrol.hxx"
+
+//____________________________________________________________________________________________________________
+// namespaces
+//____________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_LANG ::com::sun::star::lang
+#define CSS_AWT ::com::sun::star::awt
+
+//____________________________________________________________________________________________________________
+// defines
+//____________________________________________________________________________________________________________
+
+#define SERVICENAME_PROGRESSBAR "com.sun.star.awt.XProgressBar"
+#define IMPLEMENTATIONNAME_PROGRESSBAR "stardiv.UnoControls.ProgressBar"
+#define PROGRESSBAR_FREESPACE 4
+#define PROGRESSBAR_DEFAULT_HORIZONTAL sal_True
+#define PROGRESSBAR_DEFAULT_BLOCKDIMENSION Size(1,1)
+#define PROGRESSBAR_DEFAULT_BACKGROUNDCOLOR TRGB_COLORDATA( 0x00, 0xC0, 0xC0, 0xC0 ) // lightgray
+#define PROGRESSBAR_DEFAULT_FOREGROUNDCOLOR TRGB_COLORDATA( 0x00, 0x00, 0x00, 0x80 ) // blue
+#define PROGRESSBAR_DEFAULT_MINRANGE INT_MIN
+#define PROGRESSBAR_DEFAULT_MAXRANGE INT_MAX
+#define PROGRESSBAR_DEFAULT_BLOCKVALUE 1
+#define PROGRESSBAR_DEFAULT_VALUE PROGRESSBAR_DEFAULT_MINRANGE
+#define PROGRESSBAR_LINECOLOR_BRIGHT TRGB_COLORDATA( 0x00, 0xFF, 0xFF, 0xFF ) // white
+#define PROGRESSBAR_LINECOLOR_SHADOW TRGB_COLORDATA( 0x00, 0x00, 0x00, 0x00 ) // black
+
+//____________________________________________________________________________________________________________
+// classes
+//____________________________________________________________________________________________________________
+
+class ProgressBar : public CSS_AWT::XControlModel
+ , public CSS_AWT::XProgressBar
+ , public BaseControl
+{
+
+//____________________________________________________________________________________________________________
+// public methods
+//____________________________________________________________________________________________________________
+
+public:
+
+ //________________________________________________________________________________________________________
+ // construct/destruct
+ //________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ ProgressBar( const CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory >& xFactory );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual ~ProgressBar();
+
+ //__________________________________________________________________________________________________________
+ // XInterface
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //__________________________________________________________________________________________________________
+ // XTypeProvider
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getTypes()
+ throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XAggregation
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ CSS_UNO::Any SAL_CALL queryAggregation( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XProgressBar
+ //________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL setForegroundColor( sal_Int32 nColor )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL setBackgroundColor( sal_Int32 nColor )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL setValue( sal_Int32 nValue ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL setRange(
+ sal_Int32 nMin ,
+ sal_Int32 nMax
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual sal_Int32 SAL_CALL getValue() throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XWindow
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void SAL_CALL setPosSize(
+ sal_Int32 nX ,
+ sal_Int32 nY ,
+ sal_Int32 nWidth ,
+ sal_Int32 nHeight ,
+ sal_Int16 nFlags
+ ) throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // XControl
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual sal_Bool SAL_CALL setModel(
+ const CSS_UNO::Reference< CSS_AWT::XControlModel >& xModel
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XControlModel > SAL_CALL getModel()
+ throw( CSS_UNO::RuntimeException );
+
+ //__________________________________________________________________________________________________________
+ // BaseControl
+ //__________________________________________________________________________________________________________
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ static const CSS_UNO::Sequence< ::rtl::OUString > impl_getStaticSupportedServiceNames();
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ static const ::rtl::OUString impl_getStaticImplementationName();
+
+//____________________________________________________________________________________________________________
+// protected methods
+//____________________________________________________________________________________________________________
+
+protected:
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual void impl_paint(
+ sal_Int32 nX ,
+ sal_Int32 nY ,
+ const CSS_UNO::Reference< CSS_AWT::XGraphics >& xGraphics
+ );
+
+ /**_________________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ void impl_recalcRange();
+
+//____________________________________________________________________________________________________________
+// private variables
+//____________________________________________________________________________________________________________
+
+private:
+
+ sal_Bool m_bHorizontal ; // orientation for steps [true=horizontal/false=vertikal]
+ CSS_AWT::Size m_aBlockSize ; // width and height of a block [>=0,0]
+ sal_Int32 m_nForegroundColor ; // (alpha,r,g,b)
+ sal_Int32 m_nBackgroundColor ; // (alpha,r,g,b)
+ sal_Int32 m_nMinRange ; // lowest value = 0% [long, <_nMaxRange]
+ sal_Int32 m_nMaxRange ; // highest value = 100% [long, >_nMinRange]
+ double m_nBlockValue ; // value for one block [long, >0]
+ sal_Int32 m_nValue ; // value for progress [long]
+
+}; // class ProgressBar
+
+// The namespace aliases are only used in the header
+#undef CSS_UNO
+#undef CSS_LANG
+#undef CSS_AWT
+
+} // namespace unocontrols
+
+#endif // #ifndef _UNOCONTROLS_PROGRESSBAR_CTRL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/inc/progressmonitor.hxx b/UnoControls/source/inc/progressmonitor.hxx
new file mode 100644
index 000000000000..08353d11f4a0
--- /dev/null
+++ b/UnoControls/source/inc/progressmonitor.hxx
@@ -0,0 +1,808 @@
+/* -*- 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 _UNOCONTROLS_PROGRESSMONITOR_CTRL_HXX
+#define _UNOCONTROLS_PROGRESSMONITOR_CTRL_HXX
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+
+#include <com/sun/star/awt/XFileDialog.hpp>
+#include <com/sun/star/awt/XTextComponent.hpp>
+#include <com/sun/star/awt/XListBox.hpp>
+#include <com/sun/star/awt/XProgressMonitor.hpp>
+#include <com/sun/star/awt/TextAlign.hpp>
+#include <com/sun/star/awt/XScrollBar.hpp>
+#include <com/sun/star/awt/XVclContainerPeer.hpp>
+#include <com/sun/star/awt/XTabControllerModel.hpp>
+#include <com/sun/star/awt/XMessageBox.hpp>
+#include <com/sun/star/awt/XTextEditField.hpp>
+#include <com/sun/star/awt/Style.hpp>
+#include <com/sun/star/awt/XTimeField.hpp>
+#include <com/sun/star/awt/XVclWindowPeer.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/awt/XSpinField.hpp>
+#include <com/sun/star/awt/XUnoControlContainer.hpp>
+#include <com/sun/star/awt/XTextLayoutConstrains.hpp>
+#include <com/sun/star/awt/XNumericField.hpp>
+#include <com/sun/star/awt/XButton.hpp>
+#include <com/sun/star/awt/XTextArea.hpp>
+#include <com/sun/star/awt/XImageButton.hpp>
+#include <com/sun/star/awt/XFixedText.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/awt/XDialog.hpp>
+#include <com/sun/star/awt/ScrollBarOrientation.hpp>
+#include <com/sun/star/awt/XRadioButton.hpp>
+#include <com/sun/star/awt/XCurrencyField.hpp>
+#include <com/sun/star/awt/XPatternField.hpp>
+#include <com/sun/star/awt/VclWindowPeerAttribute.hpp>
+#include <com/sun/star/awt/XTabController.hpp>
+#include <com/sun/star/awt/XVclContainer.hpp>
+#include <com/sun/star/awt/XDateField.hpp>
+#include <com/sun/star/awt/XComboBox.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XCheckBox.hpp>
+#include <com/sun/star/awt/MessageBoxCommand.hpp>
+#include <com/sun/star/awt/XLayoutConstrains.hpp>
+#include <com/sun/star/awt/XProgressBar.hpp>
+
+//____________________________________________________________________________________________________________
+// includes of my own project
+//____________________________________________________________________________________________________________
+#include "basecontainercontrol.hxx"
+
+//____________________________________________________________________________________________________________
+// namespace
+//____________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_AWT ::com::sun::star::awt
+#define CSS_LANG ::com::sun::star::lang
+
+//____________________________________________________________________________________________________________
+// defines
+//____________________________________________________________________________________________________________
+
+#define SERVICENAME_PROGRESSMONITOR "com.sun.star.awt.XProgressMonitor"
+#define IMPLEMENTATIONNAME_PROGRESSMONITOR "stardiv.UnoControls.ProgressMonitor"
+#define PROGRESSMONITOR_FREEBORDER 10 // border around and between the controls
+#define FIXEDTEXT_SERVICENAME "com.sun.star.awt.UnoControlFixedText"
+#define BUTTON_SERVICENAME "com.sun.star.awt.UnoControlButton"
+#define FIXEDTEXT_MODELNAME "com.sun.star.awt.UnoControlFixedTextModel"
+#define BUTTON_MODELNAME "com.sun.star.awt.UnoControlButtonModel"
+#define CONTROLNAME_TEXT "Text" // identifier the control in container
+#define CONTROLNAME_BUTTON "Button" // -||-
+#define CONTROLNAME_PROGRESSBAR "ProgressBar" // -||-
+#define DEFAULT_BUTTONLABEL "Abbrechen"
+#define PROGRESSMONITOR_DEFAULT_TOPIC "\0"
+#define PROGRESSMONITOR_DEFAULT_TEXT "\0"
+#define PROGRESSMONITOR_BACKGROUNDCOLOR TRGB_COLORDATA( 0x00, 0xC0, 0xC0, 0xC0 ) // lighgray
+#define PROGRESSMONITOR_LINECOLOR_BRIGHT TRGB_COLORDATA( 0x00, 0xFF, 0xFF, 0xFF ) // white
+#define PROGRESSMONITOR_LINECOLOR_SHADOW TRGB_COLORDATA( 0x00, 0x00, 0x00, 0x00 ) // black
+#define PROGRESSMONITOR_DEFAULT_WIDTH 350
+#define PROGRESSMONITOR_DEFAULT_HEIGHT 100
+
+//____________________________________________________________________________________________________________
+// structs, types
+//____________________________________________________________________________________________________________
+
+/// Item of TextList
+struct IMPL_TextlistItem
+{
+ ::rtl::OUString sTopic ; /// Left site of textline in dialog
+ ::rtl::OUString sText ; /// Right site of textline in dialog
+};
+
+/// Define a list-class for struct IMPL_TextlistItem
+class IMPL_Textlist ;
+DECLARE_LIST( IMPL_Textlist, IMPL_TextlistItem* )
+
+//____________________________________________________________________________________________________________
+// class declaration
+//____________________________________________________________________________________________________________
+
+class ProgressMonitor : public CSS_AWT::XLayoutConstrains
+ , public CSS_AWT::XButton
+ , public CSS_AWT::XProgressMonitor
+ , public BaseContainerControl
+{
+
+//____________________________________________________________________________________________________________
+// public methods
+//____________________________________________________________________________________________________________
+
+public:
+
+ //________________________________________________________________________________________________________
+ // construct/destruct
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ ProgressMonitor( const CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory >& xFactory );
+
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual ~ProgressMonitor();
+
+ //________________________________________________________________________________________________________
+ // XInterface
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short give answer, if interface is supported
+ @descr The interfaces are searched by type.
+
+ @seealso XInterface
+
+ @param "rType" is the type of searched interface.
+
+ @return Any information about found interface
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //________________________________________________________________________________________________________
+ // XTypeProvider
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short get information about supported interfaces
+ @descr -
+
+ @seealso XTypeProvider
+
+ @param -
+
+ @return Sequence of types of all supported interfaces
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getTypes() throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XAggregation
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryAggregation( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XProgressMonitor
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short add topic to dialog
+ @descr Add a topic with a text in right textlist (used for FixedText-member).<BR>
+ ( "beforeProgress" fix the right list ). The dialog metric is recalculated.
+
+ @seealso removeText(), updateText()
+
+ @param sTopic Name of topic<BR>
+ [sTopic != "" && sTopic != NULL]
+ @param sText Value of topic<BR>
+ [sText != "" && sText != NULL]
+ @param bbeforeProgress Position of topic<BR>
+ [True => before progressbar / False => below progressbar]
+
+ @return -
+
+ @onerror DEBUG = Assertion<BR>
+ RELEASE = nothing
+ */
+
+ virtual void SAL_CALL addText(
+ const ::rtl::OUString& sTopic ,
+ const ::rtl::OUString& sText ,
+ sal_Bool bbeforeProgress
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeText(
+ const ::rtl::OUString& sTopic ,
+ sal_Bool bbeforeProgress
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL updateText(
+ const ::rtl::OUString& sTopic ,
+ const ::rtl::OUString& sText ,
+ sal_Bool bbeforeProgress
+ ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XProgressBar
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setForegroundColor( sal_Int32 nColor ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setBackgroundColor( sal_Int32 nColor ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setValue( sal_Int32 nValue ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setRange( sal_Int32 nMin ,
+ sal_Int32 nMax ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Int32 SAL_CALL getValue() throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XButton
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL addActionListener(
+ const CSS_UNO::Reference< CSS_AWT::XActionListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL removeActionListener(
+ const CSS_UNO::Reference< CSS_AWT::XActionListener >& xListener
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setLabel( const ::rtl::OUString& sLabel ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setActionCommand( const ::rtl::OUString& sCommand )
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XLayoutConstrains
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Size SAL_CALL getMinimumSize() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Size SAL_CALL getPreferredSize() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Size SAL_CALL calcAdjustedSize( const CSS_AWT::Size& aNewSize )
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XControl
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL createPeer(
+ const CSS_UNO::Reference< CSS_AWT::XToolkit >& xToolkit ,
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParent
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL setModel( const CSS_UNO::Reference< CSS_AWT::XControlModel >& xModel )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XControlModel > SAL_CALL getModel()
+ throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XComponent
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL dispose() throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // XWindow
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setPosSize( sal_Int32 nX ,
+ sal_Int32 nY ,
+ sal_Int32 nWidth ,
+ sal_Int32 nHeight ,
+ sal_Int16 nFlags ) throw( CSS_UNO::RuntimeException );
+
+ //________________________________________________________________________________________________________
+ // BaseControl
+ //________________________________________________________________________________________________________
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ static const CSS_UNO::Sequence< ::rtl::OUString > impl_getStaticSupportedServiceNames();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ static const ::rtl::OUString impl_getStaticImplementationName();
+
+//____________________________________________________________________________________________________________
+// protected methods
+//____________________________________________________________________________________________________________
+
+protected:
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void impl_paint( sal_Int32 nX ,
+ sal_Int32 nY ,
+ const CSS_UNO::Reference< CSS_AWT::XGraphics >& xGraphics );
+
+//____________________________________________________________________________________________________________
+// private methods
+//____________________________________________________________________________________________________________
+
+private:
+ using BaseControl::impl_recalcLayout;
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ void impl_recalcLayout();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ void impl_rebuildFixedText();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ void impl_cleanMemory();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ IMPL_TextlistItem* impl_searchTopic( const ::rtl::OUString& sTopic , sal_Bool bbeforeProgress );
+
+//____________________________________________________________________________________________________________
+// debug methods
+//____________________________________________________________________________________________________________
+
+private:
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ #ifdef DBG_UTIL
+
+ sal_Bool impl_debug_checkParameter( const ::rtl::OUString& sTopic, const ::rtl::OUString& sText, sal_Bool bbeforeProgress ); // addText, updateText
+ sal_Bool impl_debug_checkParameter( const ::rtl::OUString& rTopic, sal_Bool bbeforeProgress ); // removeText
+
+ #endif
+//____________________________________________________________________________________________________________
+// private variables
+//____________________________________________________________________________________________________________
+
+private:
+
+ IMPL_Textlist* m_pTextlist_Top ; // Elements before progress
+ CSS_UNO::Reference< CSS_AWT::XFixedText > m_xTopic_Top ; // (used, if parameter "beforeProgress"=sal_True in "addText, updateText, removeText")
+ CSS_UNO::Reference< CSS_AWT::XFixedText > m_xText_Top ;
+
+ IMPL_Textlist* m_pTextlist_Bottom ; // Elements below of progress
+ CSS_UNO::Reference< CSS_AWT::XFixedText > m_xTopic_Bottom ; // (used, if parameter "beforeProgress"=sal_False in "addText, updateText, removeText")
+ CSS_UNO::Reference< CSS_AWT::XFixedText > m_xText_Bottom ;
+
+ CSS_UNO::Reference< CSS_AWT::XProgressBar > m_xProgressBar ;
+ CSS_UNO::Reference< CSS_AWT::XButton > m_xButton ;
+ CSS_AWT::Rectangle m_a3DLine ;
+
+}; // class ProgressMonitor
+
+// The namespaces aliases are only used the this header
+#undef CSS_UNO
+#undef CSS_AWT
+#undef CSS_LANG
+
+} // namespace unocontrols
+
+#endif // #ifndef _UNOCONTROLS_PROGRESSMONITOR_CTRL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/source/inc/statusindicator.hxx b/UnoControls/source/inc/statusindicator.hxx
new file mode 100644
index 000000000000..d8e888f9dc42
--- /dev/null
+++ b/UnoControls/source/inc/statusindicator.hxx
@@ -0,0 +1,584 @@
+/* -*- 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 _UNOCONTROLS_STATUSINDICATOR_CTRL_HXX
+#define _UNOCONTROLS_STATUSINDICATOR_CTRL_HXX
+
+//____________________________________________________________________________________________________________
+// includes of other projects
+//____________________________________________________________________________________________________________
+
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/awt/XFixedText.hpp>
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <com/sun/star/awt/XLayoutConstrains.hpp>
+#include <com/sun/star/awt/XProgressBar.hpp>
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <com/sun/star/awt/XToolkit.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
+//____________________________________________________________________________________________________________
+// includes of my own project
+//____________________________________________________________________________________________________________
+#include "basecontainercontrol.hxx"
+
+//____________________________________________________________________________________________________________
+// namespace
+//____________________________________________________________________________________________________________
+
+namespace unocontrols{
+
+#define CSS_UNO ::com::sun::star::uno
+#define CSS_AWT ::com::sun::star::awt
+#define CSS_LANG ::com::sun::star::lang
+#define CSS_TASK ::com::sun::star::task
+
+//____________________________________________________________________________________________________________
+// defines
+//____________________________________________________________________________________________________________
+
+#define SERVICENAME_STATUSINDICATOR "com.sun.star.task.XStatusIndicator"
+#define IMPLEMENTATIONNAME_STATUSINDICATOR "stardiv.UnoControls.StatusIndicator"
+#define STATUSINDICATOR_FREEBORDER 5 // border around and between the controls
+#define FIXEDTEXT_SERVICENAME "com.sun.star.awt.UnoControlFixedText"
+#define FIXEDTEXT_MODELNAME "com.sun.star.awt.UnoControlFixedTextModel"
+#define CONTROLNAME_TEXT "Text" // identifier the control in container
+#define CONTROLNAME_PROGRESSBAR "ProgressBar" // -||-
+#define STATUSINDICATOR_DEFAULT_TEXT "\0"
+#define STATUSINDICATOR_BACKGROUNDCOLOR TRGB_COLORDATA( 0x00, 0xC0, 0xC0, 0xC0 ) // lighgray
+#define STATUSINDICATOR_LINECOLOR_BRIGHT TRGB_COLORDATA( 0x00, 0xFF, 0xFF, 0xFF ) // white
+#define STATUSINDICATOR_LINECOLOR_SHADOW TRGB_COLORDATA( 0x00, 0x00, 0x00, 0x00 ) // black
+#define STATUSINDICATOR_DEFAULT_WIDTH 300
+#define STATUSINDICATOR_DEFAULT_HEIGHT 25
+
+//____________________________________________________________________________________________________________
+// structs, types
+//____________________________________________________________________________________________________________
+
+//____________________________________________________________________________________________________________
+// class declaration
+//____________________________________________________________________________________________________________
+
+class StatusIndicator : public CSS_AWT::XLayoutConstrains
+ , public CSS_TASK::XStatusIndicator
+ , public BaseContainerControl
+{
+
+ //-------------------------------------------------------------------------------------------------------------
+ // public methods
+ //-------------------------------------------------------------------------------------------------------------
+
+ public:
+
+ //---------------------------------------------------------------------------------------------------------
+ // construct/destruct
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ StatusIndicator( const CSS_UNO::Reference< CSS_LANG::XMultiServiceFactory >& xFactory );
+
+ /**_______________________________________________________________________________________________________
+ @short
+ @descr
+
+ @seealso
+
+ @param
+
+ @return
+
+ @onerror
+ */
+
+ virtual ~StatusIndicator();
+
+ //---------------------------------------------------------------------------------------------------------
+ // XInterface
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short give answer, if interface is supported
+ @descr The interfaces are searched by type.
+
+ @seealso XInterface
+
+ @param "rType" is the type of searched interface.
+
+ @return Any information about found interface
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryInterface( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short increment refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso release()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL acquire() throw();
+
+ /**_______________________________________________________________________________________________________
+ @short decrement refcount
+ @descr -
+
+ @seealso XInterface
+ @seealso acquire()
+
+ @param -
+
+ @return -
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual void SAL_CALL release() throw();
+
+ //---------------------------------------------------------------------------------------------------------
+ // XTypeProvider
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short get information about supported interfaces
+ @descr -
+
+ @seealso XTypeProvider
+
+ @param -
+
+ @return Sequence of types of all supported interfaces
+
+ @onerror A RuntimeException is thrown.
+ */
+
+ virtual CSS_UNO::Sequence< CSS_UNO::Type > SAL_CALL getTypes()
+ throw( CSS_UNO::RuntimeException );
+
+ //---------------------------------------------------------------------------------------------------------
+ // XAggregation
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Any SAL_CALL queryAggregation( const CSS_UNO::Type& aType )
+ throw( CSS_UNO::RuntimeException );
+
+ //---------------------------------------------------------------------------------------------------------
+ // XStatusIndicator
+ //---------------------------------------------------------------------------------------------------------
+
+ /*-****************************************************************************************************//**
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ *//*-*****************************************************************************************************/
+
+ virtual void SAL_CALL start(
+ const ::rtl::OUString& sText ,
+ sal_Int32 nRange
+ ) throw( CSS_UNO::RuntimeException );
+
+ /*-****************************************************************************************************//**
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ *//*-*****************************************************************************************************/
+
+ virtual void SAL_CALL end() throw( CSS_UNO::RuntimeException );
+
+ /*-****************************************************************************************************//**
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ *//*-*****************************************************************************************************/
+
+ virtual void SAL_CALL reset() throw( CSS_UNO::RuntimeException );
+
+ /*-****************************************************************************************************//**
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ *//*-*****************************************************************************************************/
+
+ virtual void SAL_CALL setText( const ::rtl::OUString& sText ) throw( CSS_UNO::RuntimeException );
+
+ /*-****************************************************************************************************//**
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ *//*-*****************************************************************************************************/
+
+ virtual void SAL_CALL setValue( sal_Int32 nValue ) throw( CSS_UNO::RuntimeException );
+
+ //---------------------------------------------------------------------------------------------------------
+ // XLayoutConstrains
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Size SAL_CALL getMinimumSize() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Size SAL_CALL getPreferredSize() throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::Size SAL_CALL calcAdjustedSize( const CSS_AWT::Size& aNewSize )
+ throw( CSS_UNO::RuntimeException );
+
+ //---------------------------------------------------------------------------------------------------------
+ // XControl
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL createPeer(
+ const CSS_UNO::Reference< CSS_AWT::XToolkit >& xToolkit ,
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParent
+ ) throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual sal_Bool SAL_CALL setModel( const CSS_UNO::Reference< CSS_AWT::XControlModel >& xModel )
+ throw( CSS_UNO::RuntimeException );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_UNO::Reference< CSS_AWT::XControlModel > SAL_CALL getModel()
+ throw( CSS_UNO::RuntimeException );
+
+ //---------------------------------------------------------------------------------------------------------
+ // XComponent
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL dispose() throw( CSS_UNO::RuntimeException );
+
+ //---------------------------------------------------------------------------------------------------------
+ // XWindow
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void SAL_CALL setPosSize( sal_Int32 nX ,
+ sal_Int32 nY ,
+ sal_Int32 nWidth ,
+ sal_Int32 nHeight ,
+ sal_Int16 nFlags ) throw( CSS_UNO::RuntimeException );
+
+ //---------------------------------------------------------------------------------------------------------
+ // BaseControl
+ //---------------------------------------------------------------------------------------------------------
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ static const CSS_UNO::Sequence< ::rtl::OUString > impl_getStaticSupportedServiceNames();
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ static const ::rtl::OUString impl_getStaticImplementationName();
+
+//____________________________________________________________________________________________________________
+// protected methods
+//____________________________________________________________________________________________________________
+
+protected:
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual CSS_AWT::WindowDescriptor* impl_getWindowDescriptor(
+ const CSS_UNO::Reference< CSS_AWT::XWindowPeer >& xParentPeer
+ );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void impl_paint (
+ sal_Int32 nX,
+ sal_Int32 nY,
+ const CSS_UNO::Reference< CSS_AWT::XGraphics > & rGraphics
+ );
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+ virtual void impl_recalcLayout( const CSS_AWT::WindowEvent& aEvent );
+
+//____________________________________________________________________________________________________________
+// debug methods
+//____________________________________________________________________________________________________________
+
+private:
+
+ /**_______________________________________________________________________________________________________
+ @short -
+ @descr -
+
+ @seealso -
+
+ @param -
+
+ @return -
+
+ @onerror -
+ */
+
+//____________________________________________________________________________________________________________
+// private variables
+//____________________________________________________________________________________________________________
+
+private:
+
+ CSS_UNO::Reference< CSS_AWT::XFixedText > m_xText ;
+ CSS_UNO::Reference< CSS_AWT::XProgressBar > m_xProgressBar ;
+
+}; // class StatusIndicator
+
+// The name space aliases are only used in the header
+#undef CSS_UNO
+#undef CSS_AWT
+#undef CSS_LANG
+#undef CSS_TASK
+
+} // namespace unocontrols
+
+#endif // #ifndef _UNOCONTROLS_STATUSINDICATOR_CTRL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/UnoControls/util/makefile.mk b/UnoControls/util/makefile.mk
new file mode 100644
index 000000000000..aacddb23c0ad
--- /dev/null
+++ b/UnoControls/util/makefile.mk
@@ -0,0 +1,61 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=UnoControls
+TARGET=ctl
+LIBTARGET=NO
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+LIB1TARGET= $(SLB)$/$(TARGET).lib
+LIB1FILES= $(SLB)$/base.lib \
+ $(SLB)$/controls.lib
+
+SHL1TARGET= $(TARGET)$(DLLPOSTFIX)
+SHL1IMPLIB= i$(TARGET)
+
+SHL1VERSIONMAP=$(SOLARENV)/src/component.map
+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+
+SHL1STDLIBS= \
+ $(TOOLSLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+SHL1DEPN= makefile.mk
+SHL1LIBS= $(LIB1TARGET)
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
diff --git a/UnoControls/util/makefile.pmk b/UnoControls/util/makefile.pmk
new file mode 100644
index 000000000000..02a34a2434a1
--- /dev/null
+++ b/UnoControls/util/makefile.pmk
@@ -0,0 +1,27 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+.INCLUDE : settings.mk
diff --git a/UnoControls/util/target.pmk b/UnoControls/util/target.pmk
new file mode 100644
index 000000000000..c7c1de9c2563
--- /dev/null
+++ b/UnoControls/util/target.pmk
@@ -0,0 +1,35 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+ALLSLO: $(SLOFILES)
+
+SOSHL: $(SHL1TARGETN)
+
+WHOLEPRJ:
+ cd $(PRJ)$/prj
+ make debug linkinc prjpch compinc
+ @echo "READY"
+
diff --git a/accessibility/bridge/org/openoffice/accessibility/AccessBridge.java b/accessibility/bridge/org/openoffice/accessibility/AccessBridge.java
new file mode 100755
index 000000000000..454cd15154d4
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/accessibility/AccessBridge.java
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.accessibility;
+
+import com.sun.star.accessibility.AccessibleRole;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.awt.XExtendedToolkit;
+import com.sun.star.awt.XTopWindow;
+import com.sun.star.awt.XTopWindowListener;
+import com.sun.star.awt.XWindow;
+import com.sun.star.comp.loader.FactoryHelper;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XInitialization;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XSingleServiceFactory;
+import com.sun.star.registry.*;
+import com.sun.star.uno.*;
+
+import org.openoffice.java.accessibility.*;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import javax.accessibility.Accessible;
+
+
+public class AccessBridge {
+ //
+ protected static java.util.Hashtable topWindowMap = new java.util.Hashtable();
+
+ private static java.awt.Window getTopWindowImpl(XAccessible xAccessible) {
+ // Because it can not be garantied that
+ // WindowsAccessBridgeAdapter.registerTopWindow() is called
+ // before windowOpened(), we have to make this operation
+ // atomic.
+ synchronized (topWindowMap) {
+ String oid = UnoRuntime.generateOid(xAccessible);
+ java.awt.Window w = (java.awt.Window) topWindowMap.get(oid);
+
+ if (w == null) {
+ w = AccessibleObjectFactory.getTopWindow(xAccessible);
+
+ if (w != null) {
+ topWindowMap.put(oid, w);
+ }
+ }
+
+ return w;
+ }
+ }
+
+ protected static java.awt.Window getTopWindow(XAccessible xAccessible) {
+ if (xAccessible != null) {
+ XAccessibleContext xAccessibleContext = xAccessible.getAccessibleContext();
+ if (xAccessibleContext != null) {
+
+ // Toolkit reports the VCL peer windows as toplevels. These have an
+ // accessible parent which represents the native frame window
+ switch(xAccessibleContext.getAccessibleRole()) {
+ case AccessibleRole.ROOT_PANE:
+ case AccessibleRole.POPUP_MENU:
+ return getTopWindow(xAccessibleContext.getAccessibleParent());
+
+ case AccessibleRole.WINDOW:
+ case AccessibleRole.FRAME:
+ case AccessibleRole.DIALOG:
+ case AccessibleRole.ALERT:
+ return getTopWindowImpl(xAccessible);
+
+ default:
+ break;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ protected static java.awt.Window removeTopWindow(XAccessible xAccessible) {
+ if (xAccessible != null) {
+ XAccessibleContext xAccessibleContext = xAccessible.getAccessibleContext();
+ if (xAccessibleContext != null) {
+
+ // Toolkit reports the VCL peer windows as toplevels. These have an
+ // accessible parent which represents the native frame window
+ switch(xAccessibleContext.getAccessibleRole()) {
+ case AccessibleRole.ROOT_PANE:
+ case AccessibleRole.POPUP_MENU:
+ return removeTopWindow(xAccessibleContext.getAccessibleParent());
+
+ case AccessibleRole.WINDOW:
+ case AccessibleRole.FRAME:
+ case AccessibleRole.DIALOG:
+ return (java.awt.Window) topWindowMap.remove(UnoRuntime.generateOid(xAccessible));
+
+ default:
+ break;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static XSingleServiceFactory __getServiceFactory(String implName,
+ XMultiServiceFactory multiFactory, XRegistryKey regKey) {
+ XSingleServiceFactory xSingleServiceFactory = null;
+
+ if (implName.equals(AccessBridge.class.getName())) {
+ // Initialize toolkit to register at Java <-> Windows access bridge
+ java.awt.Toolkit tk = java.awt.Toolkit.getDefaultToolkit();
+
+ xSingleServiceFactory = FactoryHelper.getServiceFactory(_AccessBridge.class,
+ _AccessBridge._serviceName, multiFactory, regKey);
+ }
+
+ return xSingleServiceFactory;
+ }
+
+ public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) {
+ return FactoryHelper.writeRegistryServiceInfo(AccessBridge.class.getName(),
+ _AccessBridge._serviceName, regKey);
+ }
+
+ static public class _AccessBridge implements XTopWindowListener,
+ XInitialization, XComponent {
+ static final String _serviceName = "com.sun.star.accessibility.AccessBridge";
+ XComponentContext xComponentContext;
+
+ public _AccessBridge(XComponentContext xComponentContext) {
+ this.xComponentContext = xComponentContext;
+ }
+
+ /*
+ * XInitialization
+ */
+ public void initialize(java.lang.Object[] arguments) {
+ try {
+ // FIXME: Currently there is no way to determine if key event forwarding is needed or not,
+ // so we have to do it always ..
+ XExtendedToolkit unoToolkit = (XExtendedToolkit) AnyConverter.toObject(new Type(
+ XExtendedToolkit.class), arguments[0]);
+
+ if (unoToolkit != null) {
+ // FIXME this should be done in VCL
+ unoToolkit.addTopWindowListener(this);
+
+ String os = (String) System.getProperty("os.name");
+
+ // Try to initialize the WindowsAccessBridgeAdapter
+ if (os.startsWith("Windows")) {
+ WindowsAccessBridgeAdapter.attach(xComponentContext);
+ } else {
+ unoToolkit.addKeyHandler(new KeyHandler());
+ }
+ } else if (Build.DEBUG) {
+ System.err.println(
+ "argument 0 is not of type XExtendedToolkit.");
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ // FIXME: output
+ }
+ }
+
+ /*
+ * XTopWindowListener
+ */
+ public void windowOpened(com.sun.star.lang.EventObject event) {
+ XAccessible xAccessible = (XAccessible) UnoRuntime.queryInterface(XAccessible.class,
+ event.Source);
+ java.awt.Window w = getTopWindow(xAccessible);
+ }
+
+ public void windowActivated(com.sun.star.lang.EventObject event) {
+ }
+
+ public void windowDeactivated(com.sun.star.lang.EventObject event) {
+ }
+
+ public void windowMinimized(com.sun.star.lang.EventObject event) {
+ }
+
+ public void windowNormalized(com.sun.star.lang.EventObject event) {
+ }
+
+ public void windowClosing(com.sun.star.lang.EventObject event) {
+ }
+
+ public void windowClosed(com.sun.star.lang.EventObject event) {
+ XAccessible xAccessible = (XAccessible) UnoRuntime.queryInterface(XAccessible.class,
+ event.Source);
+
+ java.awt.Window w = removeTopWindow(xAccessible);
+
+ if (w != null) {
+ w.dispose();
+ }
+ }
+
+ public void disposing(com.sun.star.lang.EventObject event) {
+ }
+
+ /*
+ * XComponent
+ */
+
+ public void addEventListener(com.sun.star.lang.XEventListener listener) {
+ }
+
+ public void removeEventListener(com.sun.star.lang.XEventListener listener) {
+ }
+
+ public void dispose() {
+ try {
+ java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().invokeAndWait(
+ new Runnable() {
+ public void run() {
+ }
+ } );
+ } catch (java.lang.InterruptedException e) {
+ } catch (java.lang.reflect.InvocationTargetException e) {
+ }
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/accessibility/KeyHandler.java b/accessibility/bridge/org/openoffice/accessibility/KeyHandler.java
new file mode 100755
index 000000000000..1e9f2f6520ae
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/accessibility/KeyHandler.java
@@ -0,0 +1,138 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+package org.openoffice.accessibility;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.awt.XKeyHandler;
+import org.openoffice.java.accessibility.AccessibleKeyBinding;
+import org.openoffice.java.accessibility.Build;
+
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import javax.accessibility.*;
+
+public class KeyHandler extends Component implements XKeyHandler, java.awt.KeyEventDispatcher {
+ EventQueue eventQueue;
+
+ public class VCLKeyEvent extends KeyEvent implements Runnable {
+ boolean consumed = true;
+
+ public VCLKeyEvent(Component c, int id, int modifiers, int keyCode, char keyChar) {
+ super(c, id, System.currentTimeMillis(), modifiers, keyCode, keyChar);
+ }
+
+ public void run() {
+ // This is a no-op ..
+ }
+
+ public void setConsumed(boolean b) {
+ consumed = b;
+ }
+
+ public boolean isConsumed() {
+ return consumed;
+ }
+ }
+
+ public KeyHandler() {
+ eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+ java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(this);
+ }
+
+ /** This method is called by the current KeyboardFocusManager requesting that this KeyEventDispatcher
+ * dispatch the specified event on its behalf
+ */
+ public boolean dispatchKeyEvent(java.awt.event.KeyEvent e) {
+ if (e instanceof VCLKeyEvent) {
+ VCLKeyEvent event = (VCLKeyEvent) e;
+ event.setConsumed(false);
+ return true;
+ }
+ return false;
+ }
+
+ /** Handler for KeyPressed events */
+ public boolean keyPressed(com.sun.star.awt.KeyEvent event) {
+// try {
+ VCLKeyEvent vke = new VCLKeyEvent(this, KeyEvent.KEY_PRESSED,
+ AccessibleKeyBinding.convertModifiers(event.Modifiers),
+ AccessibleKeyBinding.convertKeyCode(event.KeyCode),
+ event.KeyChar != 0 ? event.KeyChar : KeyEvent.CHAR_UNDEFINED);
+
+ eventQueue.postEvent(vke);
+
+ // VCL events for TABs have empty KeyChar
+ if (event.KeyCode == com.sun.star.awt.Key.TAB ) {
+ event.KeyChar = '\t';
+ }
+
+ // Synthesize KEY_TYPED event to emulate Java behavior
+ if (event.KeyChar != 0) {
+ eventQueue.postEvent(new VCLKeyEvent(this,
+ KeyEvent.KEY_TYPED,
+ AccessibleKeyBinding.convertModifiers(event.Modifiers),
+ KeyEvent.VK_UNDEFINED,
+ event.KeyChar));
+ }
+
+ // Wait until the key event is processed
+ return false;
+// eventQueue.invokeAndWait(vke);
+// return vke.isConsumed();
+// } catch(java.lang.InterruptedException e) {
+// return false;
+// } catch(java.lang.reflect.InvocationTargetException e) {
+// return false;
+// }
+ }
+
+ /** Handler for KeyReleased events */
+ public boolean keyReleased(com.sun.star.awt.KeyEvent event) {
+// try {
+ VCLKeyEvent vke = new VCLKeyEvent(this, KeyEvent.KEY_RELEASED,
+ AccessibleKeyBinding.convertModifiers(event.Modifiers),
+ AccessibleKeyBinding.convertKeyCode(event.KeyCode),
+ event.KeyChar != 0 ? event.KeyChar : KeyEvent.CHAR_UNDEFINED);
+ eventQueue.postEvent(vke);
+
+ // Wait until the key event is processed
+ return false;
+// eventQueue.invokeAndWait(vke);
+// return vke.isConsumed();
+// } catch(java.lang.InterruptedException e) {
+// return false;
+// } catch(java.lang.reflect.InvocationTargetException e) {
+// return false;
+// }
+ }
+
+ public void disposing(com.sun.star.lang.EventObject event) {
+ java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager().removeKeyEventDispatcher(this);
+ }
+};
diff --git a/accessibility/bridge/org/openoffice/accessibility/PopupWindow.java b/accessibility/bridge/org/openoffice/accessibility/PopupWindow.java
new file mode 100644
index 000000000000..a63b0589b4fa
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/accessibility/PopupWindow.java
@@ -0,0 +1,210 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.accessibility;
+
+import org.openoffice.java.accessibility.*;
+
+
+/**
+ *
+ */
+public class PopupWindow extends java.awt.Window {
+ javax.accessibility.AccessibleContext accessibleContext = null;
+ ContainerProxy layeredPane = new ContainerProxy(javax.accessibility.AccessibleRole.LAYERED_PANE);
+ ContainerProxy rootPane = new ContainerProxy(javax.accessibility.AccessibleRole.ROOT_PANE);
+ ContainerProxy popupLayer = new ContainerProxy(javax.accessibility.AccessibleRole.PANEL);
+ boolean opened = false;
+ boolean visible = false;
+
+ /** Creates a new instance of PopupWindow */
+ public PopupWindow(java.awt.Window owner) {
+ super(owner);
+ super.add(rootPane);
+ rootPane.add(layeredPane);
+
+ javax.accessibility.AccessibleContext ac = rootPane.getAccessibleContext();
+
+ if (ac != null) {
+ ac.setAccessibleParent(this);
+ }
+ }
+
+ static PopupWindow create(
+ com.sun.star.accessibility.XAccessible xAccessible) {
+ java.awt.Window parent = java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager()
+ .getActiveWindow();
+
+ if (parent != null) {
+ PopupWindow w = new PopupWindow(parent);
+ w.setVisible(true);
+ AccessibleObjectFactory.invokeAndWait();
+ AccessibleObjectFactory.addChild(w, xAccessible);
+
+ return w;
+ }
+
+ return null;
+ }
+
+ public boolean isShowing() {
+ if (isVisible()) {
+ java.awt.Container parent = getParent();
+
+ return (parent == null) || parent.isShowing();
+ }
+
+ return false;
+ }
+
+ public void addNotify() {
+ }
+
+ public void removeNotify() {
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public void setVisible(boolean b) {
+ if (visible != b) {
+ visible = b;
+
+ if (b) {
+ // If it is the first show, fire WINDOW_OPENED event
+ if (!opened) {
+ AccessibleObjectFactory.postWindowOpened(this);
+ opened = true;
+ }
+ }
+ }
+ }
+
+ public java.awt.Component add(java.awt.Component c) {
+ popupLayer.add(c);
+ layeredPane.add(popupLayer);
+
+ if (c instanceof javax.accessibility.Accessible) {
+ javax.accessibility.AccessibleContext ac = layeredPane.getAccessibleContext();
+
+ if (ac != null) {
+ ac.firePropertyChange(ac.ACCESSIBLE_CHILD_PROPERTY, null,
+ popupLayer.getAccessibleContext());
+ }
+ }
+
+ return c;
+ }
+
+ public void remove(java.awt.Component c) {
+ layeredPane.remove(popupLayer);
+
+ if (c instanceof javax.accessibility.Accessible) {
+ javax.accessibility.AccessibleContext ac = layeredPane.getAccessibleContext();
+
+ if (ac != null) {
+ ac.firePropertyChange(ac.ACCESSIBLE_CHILD_PROPERTY,
+ popupLayer.getAccessibleContext(), null);
+ }
+ }
+
+ popupLayer.remove(c);
+ }
+
+ public void dispose() {
+ setVisible(false);
+ AccessibleObjectFactory.postWindowClosed(this);
+ }
+
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ accessibleContext = new AccessiblePopupWindow();
+ }
+
+ return accessibleContext;
+ }
+
+ protected class AccessiblePopupWindow
+ extends java.awt.Window.AccessibleAWTWindow {
+ AccessiblePopupWindow() {
+ }
+ }
+
+ protected class ContainerProxy extends java.awt.Container
+ implements javax.accessibility.Accessible {
+ javax.accessibility.AccessibleContext accessibleContext = null;
+ javax.accessibility.AccessibleRole role;
+
+ protected ContainerProxy(javax.accessibility.AccessibleRole role) {
+ this.role = role;
+ }
+
+ public java.awt.Component add(java.awt.Component c) {
+ if (c instanceof javax.accessibility.Accessible) {
+ javax.accessibility.Accessible a = (javax.accessibility.Accessible) c;
+ javax.accessibility.AccessibleContext ac = a.getAccessibleContext();
+
+ if (ac != null) {
+ ac.setAccessibleParent(this);
+ }
+ }
+
+ return super.add(c);
+ }
+
+ public void remove(java.awt.Component c) {
+ if (c instanceof javax.accessibility.Accessible) {
+ javax.accessibility.Accessible a = (javax.accessibility.Accessible) c;
+ javax.accessibility.AccessibleContext ac = a.getAccessibleContext();
+
+ if (ac != null) {
+ ac.setAccessibleParent(null);
+ }
+ }
+
+ super.remove(c);
+ }
+
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ accessibleContext = new AccessibleContainerProxy();
+ }
+
+ return accessibleContext;
+ }
+
+ private class AccessibleContainerProxy
+ extends java.awt.Container.AccessibleAWTContainer {
+ AccessibleContainerProxy() {
+ }
+
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return ContainerProxy.this.role;
+ }
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/accessibility/WindowsAccessBridgeAdapter.java b/accessibility/bridge/org/openoffice/accessibility/WindowsAccessBridgeAdapter.java
new file mode 100644
index 000000000000..28e58940867d
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/accessibility/WindowsAccessBridgeAdapter.java
@@ -0,0 +1,654 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.accessibility;
+
+import com.sun.star.accessibility.AccessibleRole;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.java.XJavaVM;
+import com.sun.star.uno.*;
+
+import org.openoffice.java.accessibility.*;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import javax.accessibility.*;
+
+
+public class WindowsAccessBridgeAdapter {
+ private static Method registerVirtualFrame;
+ private static Method revokeVirtualFrame;
+ private static java.util.Hashtable frameMap;
+
+ protected static native byte[] getProcessID();
+
+ protected static native boolean createMapping(long jvmaccess);
+
+ // On Windows all native frames must be registered to the access bridge.
+ // Therefor the bridge exports two methods that we try to find here.
+ protected static void attach(XComponentContext xComponentContext) {
+ try {
+ Class bridge = Class.forName(
+ "com.sun.java.accessibility.AccessBridge");
+ Class[] parameterTypes = {
+ javax.accessibility.Accessible.class, Integer.class
+ };
+
+ if (bridge != null) {
+ registerVirtualFrame = bridge.getMethod("registerVirtualFrame",
+ parameterTypes);
+ revokeVirtualFrame = bridge.getMethod("revokeVirtualFrame",
+ parameterTypes);
+
+ // load the native dll
+ System.loadLibrary("java_uno_accessbridge");
+
+ Object any = xComponentContext.getValueByName(
+ "/singletons/com.sun.star.java.theJavaVirtualMachine");
+
+ if (AnyConverter.isObject(any)) {
+ XJavaVM xJavaVM = (XJavaVM) UnoRuntime.queryInterface(XJavaVM.class,
+ AnyConverter.toObject(new Type(XJavaVM.class), any));
+
+ if (xJavaVM != null) {
+ any = xJavaVM.getJavaVM(getProcessID());
+
+ if (AnyConverter.isLong(any)) {
+ createMapping(AnyConverter.toLong(any));
+ frameMap = new java.util.Hashtable();
+ }
+ }
+ }
+ }
+ } catch (NoSuchMethodException e) {
+ System.err.println("ERROR: incompatible AccessBridge found: " +
+ e.getMessage());
+
+ // Forward this exception to UNO to indicate that the service will
+ // not work correctly.
+ throw new com.sun.star.uno.RuntimeException(
+ "incompatible AccessBridge class: " + e.getMessage());
+ } catch (java.lang.SecurityException e) {
+ System.err.println("ERROR: no access to AccessBridge: " +
+ e.getMessage());
+
+ // Forward this exception to UNO to indicate that the service will not work correctly.
+ throw new com.sun.star.uno.RuntimeException(
+ "Security exception caught: " + e.getMessage());
+ } catch (ClassNotFoundException e) {
+ // Forward this exception to UNO to indicate that the service will not work correctly.
+ throw new com.sun.star.uno.RuntimeException(
+ "ClassNotFound exception caught: " + e.getMessage());
+ } catch (IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught: " +
+ e.getMessage());
+
+ // Forward this exception to UNO to indicate that the service will not work correctly.
+ throw new com.sun.star.uno.RuntimeException(
+ "IllegalArgumentException caught: " + e.getMessage());
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println("UNO IllegalArgumentException caught: " +
+ e.getMessage());
+
+ // Forward this exception to UNO to indicate that the service will not work correctly.
+ throw new com.sun.star.uno.RuntimeException(
+ "UNO IllegalArgumentException caught: " + e.getMessage());
+ }
+ }
+
+ protected static boolean isAttached() {
+ return frameMap != null;
+ }
+
+ protected static Accessible getAccessibleWrapper(XAccessible xAccessible) {
+ Accessible a = null;
+
+ try {
+ XAccessibleContext xAccessibleContext = xAccessible.getAccessibleContext();
+
+ if (xAccessibleContext != null) {
+ switch (xAccessibleContext.getAccessibleRole()) {
+ case AccessibleRole.LIST:
+ a = (Accessible) AccessibleObjectFactory.getAccessibleComponent(xAccessible);
+ if (a != null) {
+ a = new ListProxy(a.getAccessibleContext());
+ }
+ break;
+
+ case AccessibleRole.MENU:
+
+ Accessible tmp = (Accessible) AccessibleObjectFactory.getAccessibleComponent(xAccessible);
+ if (tmp != null) {
+ AccessibleContext ac = tmp.getAccessibleContext();
+
+ if (ac != null) {
+ a = new PopupMenuProxy(ac);
+ }
+ }
+
+ break;
+
+ case AccessibleRole.TOOL_TIP:
+ a = PopupWindow.create(xAccessible);
+ break;
+
+ default:
+ a = (Accessible) AccessBridge.getTopWindow(xAccessible);
+ break;
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+
+ return a;
+ }
+
+ /** Registers a native frame at the Java AccessBridge for Windows */
+ public static void registerTopWindow(int handle, XAccessible xAccessible) {
+ Integer hwnd = new Integer(handle);
+
+ if (!frameMap.contains(hwnd)) {
+ if (Build.DEBUG) {
+ System.err.println("Native frame " + hwnd + " of role " +
+ AccessibleRoleAdapter.getAccessibleRole(xAccessible) +
+ " has been opened");
+ }
+
+ Accessible a = getAccessibleWrapper(xAccessible);
+
+ if (a != null) {
+ Object[] args = { a, hwnd };
+
+ frameMap.put(hwnd, a);
+
+ if (Build.DEBUG) {
+ System.err.println("registering native frame " + hwnd);
+ }
+
+ try {
+ registerVirtualFrame.invoke(null, args);
+ } catch (IllegalAccessException e) {
+ System.err.println("IllegalAccessException caught: " +
+ e.getMessage());
+ } catch (IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught: " +
+ e.getMessage());
+ } catch (InvocationTargetException e) {
+ System.err.println("InvokationTargetException caught: " +
+ e.getMessage());
+ }
+ }
+ }
+ }
+
+ /** Revokes a native frame at the Java AccessBridge for Windows */
+ public static void revokeTopWindow(int handle, XAccessible xAccessible) {
+ Integer hwnd = new Integer(handle);
+
+ Accessible a = (Accessible) frameMap.remove(hwnd);
+
+ if (a != null) {
+ Object[] args = { a, hwnd };
+
+ if (Build.DEBUG) {
+ System.err.println("revoking native frame " + hwnd);
+ }
+
+ try {
+ revokeVirtualFrame.invoke(null, args);
+ } catch (IllegalAccessException e) {
+ System.err.println("IllegalAccessException caught: " +
+ e.getMessage());
+ } catch (IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught: " +
+ e.getMessage());
+ } catch (InvocationTargetException e) {
+ System.err.println("InvokationTargetException caught: " +
+ e.getMessage());
+ }
+ }
+
+ if (a instanceof PopupWindow) {
+ PopupWindow toolTipWindow = (PopupWindow) a;
+ toolTipWindow.removeAll();
+ toolTipWindow.dispose();
+ }
+ }
+
+ protected static class PopupMenuProxy extends AccessibleContext
+ implements Accessible, AccessibleComponent {
+ AccessibleContext menu;
+ AccessibleComponent menuComponent;
+ int x = 0; int y = 0; int width = 0; int height = 0;
+
+ PopupMenuProxy(AccessibleContext ac) {
+ menu = ac;
+ menuComponent = menu.getAccessibleComponent();
+
+ /** calculate the bounding rectangle by iterating over the
+ * the children.
+ */
+ int x2 = 0; int y2 = 0;
+ int count = ac.getAccessibleChildrenCount();
+ for (int i = 0; i < count; i++) {
+ Accessible a = menu.getAccessibleChild(i);
+
+ if (a != null) {
+ AccessibleContext childAC = a.getAccessibleContext();
+
+ if (childAC != null) {
+ AccessibleComponent comp = ac.getAccessibleComponent();
+
+ if (comp != null) {
+ java.awt.Point p = comp.getLocationOnScreen();
+ java.awt.Dimension d = comp.getSize();
+
+ if (p != null && d != null) {
+ if (p.x < x) {
+ x = p.x;
+ }
+ if (p.y < y) {
+ y = p.y;
+ }
+ if (p.x + d.width > x2) {
+ x2 = p.x + d.width;
+ }
+ if (p.y + d.height > y2) {
+ y2 = p.y + d.height;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ width = x2 - x;
+ height = y2 - y;
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ return this;
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleComponent getAccessibleComponent() {
+ return this;
+ }
+
+ /** Returns the AccessibleText associated with this object */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+ return menu.getAccessibleText();
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ return menu.getAccessibleStateSet();
+ }
+
+ public java.util.Locale getLocale() {
+ return menu.getLocale();
+ }
+
+ public int getAccessibleIndexInParent() {
+ return -1;
+ }
+
+ public int getAccessibleChildrenCount() {
+ return menu.getAccessibleChildrenCount();
+ }
+
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ return menu.getAccessibleChild(i);
+ }
+
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.POPUP_MENU;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+ public void addFocusListener(java.awt.event.FocusListener fl) {
+ menuComponent.addFocusListener(fl);
+ }
+
+ public void removeFocusListener(java.awt.event.FocusListener fl) {
+ menuComponent.removeFocusListener(fl);
+ }
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ return menuComponent.getBackground();
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ return menuComponent.getForeground();
+ }
+
+ public void setForeground(java.awt.Color c) {
+ menuComponent.setForeground(c);
+ }
+
+ public java.awt.Cursor getCursor() {
+ return menuComponent.getCursor();
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ menuComponent.setCursor(cursor);
+ }
+
+ public java.awt.Font getFont() {
+ return menuComponent.getFont();
+ }
+
+ public void setFont(java.awt.Font f) {
+ menuComponent.setFont(f);
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ return menuComponent.getFontMetrics(f);
+ }
+
+ public boolean isEnabled() {
+ return menuComponent.isEnabled();
+ }
+
+ public void setEnabled(boolean b) {
+ menuComponent.setEnabled(b);
+ }
+
+ public boolean isVisible() {
+ return menuComponent.isVisible();
+ }
+
+ public void setVisible(boolean b) {
+ menuComponent.setVisible(b);
+ }
+
+ public boolean isShowing() {
+ return menuComponent.isShowing();
+ }
+
+ public boolean contains(java.awt.Point p) {
+ java.awt.Dimension d = getSize();
+
+ if (Build.DEBUG) {
+ System.err.println("PopupMenuProxy.containsPoint(" + p.x + "," +
+ p.y + ") returns " +
+ (((d.width >= 0) && (p.x < d.width) && (d.height >= 0) &&
+ (p.y < d.height)) ? "true" : "false"));
+ }
+
+ if ((d.width >= 0) && (p.x < d.width) && (d.height >= 0) &&
+ (p.y < d.height)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ return new java.awt.Point(x,y);
+ }
+
+ /** Gets the location of this component in the form of a point specifying the component's top-left corner */
+ public java.awt.Point getLocation() {
+ // This object represents a toplevel, so this is the same as getLocationOnScreen()
+ return getLocationOnScreen();
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ return new java.awt.Rectangle(x, y, width, height);
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ return new java.awt.Dimension(width, height);
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the Accessible child, if one exists, contained at the local
+ * coordinate Point
+ */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ java.awt.Point p2 = menuComponent.getLocationOnScreen();
+ return menuComponent.getAccessibleAt(
+ new java.awt.Point(p.x + x - p2.x, p.y + y - p2.y));
+ }
+
+ public boolean isFocusTraversable() {
+ return menuComponent.isFocusTraversable();
+ }
+
+ public void requestFocus() {
+ menuComponent.requestFocus();
+ }
+ }
+
+ protected static class ListProxy extends AccessibleContext
+ implements Accessible, AccessibleComponent {
+ AccessibleContext list;
+ AccessibleComponent listComponent;
+
+ ListProxy(AccessibleContext ac) {
+ list = ac;
+ listComponent = list.getAccessibleComponent();
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ return this;
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleComponent getAccessibleComponent() {
+ return this;
+ }
+
+ /** Returns the AccessibleSelection associated with this object */
+ public javax.accessibility.AccessibleSelection getAccessibleSelection() {
+ return list.getAccessibleSelection();
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ return list.getAccessibleStateSet();
+ }
+
+ public java.util.Locale getLocale() {
+ return list.getLocale();
+ }
+
+ public int getAccessibleIndexInParent() {
+ return -1;
+ }
+
+ public int getAccessibleChildrenCount() {
+ return list.getAccessibleChildrenCount();
+ }
+
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ return list.getAccessibleChild(i);
+ }
+
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.LIST;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+ public void addFocusListener(java.awt.event.FocusListener fl) {
+ listComponent.addFocusListener(fl);
+ }
+
+ public void removeFocusListener(java.awt.event.FocusListener fl) {
+ listComponent.removeFocusListener(fl);
+ }
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ return listComponent.getBackground();
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ return listComponent.getForeground();
+ }
+
+ public void setForeground(java.awt.Color c) {
+ listComponent.setForeground(c);
+ }
+
+ public java.awt.Cursor getCursor() {
+ return listComponent.getCursor();
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ listComponent.setCursor(cursor);
+ }
+
+ public java.awt.Font getFont() {
+ return listComponent.getFont();
+ }
+
+ public void setFont(java.awt.Font f) {
+ listComponent.setFont(f);
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ return listComponent.getFontMetrics(f);
+ }
+
+ public boolean isEnabled() {
+ return listComponent.isEnabled();
+ }
+
+ public void setEnabled(boolean b) {
+ listComponent.setEnabled(b);
+ }
+
+ public boolean isVisible() {
+ return listComponent.isVisible();
+ }
+
+ public void setVisible(boolean b) {
+ listComponent.setVisible(b);
+ }
+
+ public boolean isShowing() {
+ return listComponent.isShowing();
+ }
+
+ public boolean contains(java.awt.Point p) {
+ return listComponent.contains(p);
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ return listComponent.getLocationOnScreen();
+ }
+
+ /** Gets the location of this component in the form of a point specifying
+ * the component's top-left corner
+ */
+ public java.awt.Point getLocation() {
+ // This object represents a toplevel object, so getLocation() should
+ // return the same as getLocationOnScreen().
+ return getLocationOnScreen();
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ java.awt.Point p = getLocationOnScreen();
+ java.awt.Dimension d = getSize();
+ return new java.awt.Rectangle(p.x, p.y, d.width, d.height);
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ return listComponent.getSize();
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the Accessible child, if one exists, contained at the local
+ * coordinate Point
+ */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ return listComponent.getAccessibleAt(p);
+ }
+
+ public boolean isFocusTraversable() {
+ return listComponent.isFocusTraversable();
+ }
+
+ public void requestFocus() {
+ listComponent.requestFocus();
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/accessibility/makefile.mk b/accessibility/bridge/org/openoffice/accessibility/makefile.mk
new file mode 100755
index 000000000000..9510a3156a59
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/accessibility/makefile.mk
@@ -0,0 +1,55 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = accessibility
+PRJ = ..$/..$/..$/..
+TARGET = java_uno_accessbridge
+PACKAGE = org$/openoffice$/accessibility
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+JARFILES = jurt.jar unoil.jar ridl.jar
+JAVAFILES = \
+ AccessBridge.java \
+ KeyHandler.java \
+ PopupWindow.java \
+ WindowsAccessBridgeAdapter.java
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+JARTARGET = $(TARGET).jar
+JARCOMPRESS = TRUE
+JARCLASSDIRS = $(PACKAGE) org/openoffice/java/accessibility
+CUSTOMMANIFESTFILE = manifest
+
+# --- Targets ------------------------------------------------------
+
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/bridge/org/openoffice/accessibility/manifest b/accessibility/bridge/org/openoffice/accessibility/manifest
new file mode 100755
index 000000000000..4b5ffd54d34b
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/accessibility/manifest
@@ -0,0 +1,2 @@
+RegistrationClassName: org.openoffice.accessibility.AccessBridge
+UNO-Type-Path:
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AbstractButton.java b/accessibility/bridge/org/openoffice/java/accessibility/AbstractButton.java
new file mode 100644
index 000000000000..be7b72df8732
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AbstractButton.java
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleState;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+/**
+ */
+public abstract class AbstractButton extends Component {
+
+ protected AbstractButton(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ protected abstract class AccessibleAbstractButton extends AccessibleUNOComponent
+ implements javax.accessibility.AccessibleAction {
+
+ /**
+ * Though the class is abstract, this should be called by all sub-classes
+ */
+ protected AccessibleAbstractButton() {
+ super();
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the AccessibleAction associated with this object that supports one or more actions */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ return this;
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText)
+ UnoRuntime.queryInterface(XAccessibleText.class,unoAccessibleComponent);
+ if (unoAccessibleText != null) {
+ return new AccessibleTextImpl(unoAccessibleText);
+ } else {
+ return null;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the relation set of this object */
+ public javax.accessibility.AccessibleRelationSet getAccessibleRelationSet() {
+ try {
+ XAccessibleRelationSet unoAccessibleRelationSet = unoAccessibleContext.getAccessibleRelationSet();
+
+ if (unoAccessibleRelationSet == null) {
+ return null;
+ }
+
+ javax.accessibility.AccessibleRelationSet relationSet = new javax.accessibility.AccessibleRelationSet();
+ int count = unoAccessibleRelationSet.getRelationCount();
+
+ for (int i = 0; i < count; i++) {
+ AccessibleRelation unoAccessibleRelation = unoAccessibleRelationSet.getRelation(i);
+
+ switch (unoAccessibleRelation.RelationType) {
+ case AccessibleRelationType.MEMBER_OF:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.MEMBER_OF,
+ getAccessibleComponents(
+ unoAccessibleRelation.TargetSet)));
+ break;
+
+ case AccessibleRelationType.LABELED_BY:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.LABELED_BY,
+ getAccessibleComponents(
+ unoAccessibleRelation.TargetSet)));
+ break;
+ default:
+ break;
+ }
+ }
+
+ return relationSet;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /*
+ * AccessibleAction
+ */
+
+ /** Performs the specified Action on the object */
+ public boolean doAccessibleAction(int param) {
+ if (param == 0) {
+ // HACK: this action might open a modal dialog and therefor block
+ // until the dialog is closed. In case of this thread being the
+ // AWT EventDispatcherThread this means, the opened dialog will
+ // not be accessible, so deligate this request to another thread.
+ if (java.awt.EventQueue.isDispatchThread()) {
+ Thread t = new Thread () {
+ public void run() {
+ AbstractButton.AccessibleAbstractButton.this.doAccessibleAction(0);
+ }
+ };
+ t.start();
+ return true;
+ } else {
+ // Actions of MenuItems may also be performed if the item is not
+ // visible, so just try ..
+ try {
+ XAccessibleContext xAccessibleContext = unoAccessibleContext;
+ if (xAccessibleContext != null) {
+ // Query for XAccessibleAction interface
+ XAccessibleAction xAccessibleAction = (XAccessibleAction)
+ UnoRuntime.queryInterface(XAccessibleAction.class, xAccessibleContext);
+
+ if (xAccessibleAction != null) {
+ return xAccessibleAction.doAccessibleAction(0);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /** Returns a description of the specified action of the object */
+ public java.lang.String getAccessibleActionDescription(int param) {
+ return javax.swing.UIManager.getString("AbstractButton.clickText");
+ }
+
+ /** Returns the number of accessible actions available in this object */
+ public int getAccessibleActionCount() {
+ return 1;
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleActionImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleActionImpl.java
new file mode 100644
index 000000000000..e4905752d833
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleActionImpl.java
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.XAccessibleAction;
+
+/** The AccessibleActionWrapper maps the calls to the java AccessibleAction interface
+ * to the corresponding methods of the UNO XAccessibleAction interface.
+ */
+public class AccessibleActionImpl implements javax.accessibility.AccessibleAction {
+
+ protected XAccessibleAction unoObject;
+
+ /** Creates new AccessibleActionWrapper */
+ public AccessibleActionImpl(XAccessibleAction xAccessibleAction) {
+ unoObject = xAccessibleAction;
+ }
+
+ public boolean doAccessibleAction(int param) {
+ try {
+ return unoObject.doAccessibleAction(param);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ public java.lang.String getAccessibleActionDescription(int param) {
+ try {
+ return unoObject.getAccessibleActionDescription(param);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public int getAccessibleActionCount() {
+ try {
+ return unoObject.getAccessibleActionCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleComponentImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleComponentImpl.java
new file mode 100644
index 000000000000..5bac982756a2
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleComponentImpl.java
@@ -0,0 +1,233 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.AccessibleStateType;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleComponent;
+// import com.sun.star.accessibility.XAccessibleExtendedComponent;
+import com.sun.star.uno.UnoRuntime;
+
+public class AccessibleComponentImpl implements javax.accessibility.AccessibleComponent {
+
+ protected XAccessibleComponent unoObject;
+// protected XAccessibleExtendedComponent unoAccessibleExtendedComponent = null;
+
+ /** Creates new AccessibleComponentImpl */
+ public AccessibleComponentImpl(XAccessibleComponent xAccessibleComponent) {
+ unoObject = xAccessibleComponent;
+ }
+
+ protected boolean hasState(short state) {
+ try {
+ XAccessibleContext unoAccessibleContext = (XAccessibleContext)
+ UnoRuntime.queryInterface(XAccessibleContext.class, unoObject);
+ // All UNO accessibility implementations must support XAccessibleContext
+ // and return a valid XAccessibleStateSet ..
+ return unoAccessibleContext.getAccessibleStateSet().contains(state);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ } catch (java.lang.NullPointerException e) {
+ System.err.println("XAccessibleContext unsupported or no XAccessibleStateSet returned.");
+ return false;
+ }
+ }
+
+ /*
+ * XAccessibleComponent
+ */
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ try {
+ return new java.awt.Color(unoObject.getBackground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ try {
+ return new java.awt.Color(unoObject.getForeground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setForeground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Cursor getCursor() {
+ // Not supported by UNO accessibility API
+ return null;
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Font getFont() {
+ // FIXME
+ return null;
+ }
+
+ public void setFont(java.awt.Font f) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ // FIXME
+ return null;
+ }
+
+ public boolean isEnabled() {
+ return hasState(AccessibleStateType.ENABLED);
+ }
+
+ public void setEnabled(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isVisible() {
+ return hasState(AccessibleStateType.VISIBLE);
+ }
+
+ public void setVisible(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isShowing() {
+ return hasState(AccessibleStateType.SHOWING);
+ }
+
+ public boolean contains(java.awt.Point p) {
+ try {
+ return unoObject.containsPoint(new com.sun.star.awt.Point(p.x, p.y));
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoObject.getLocationOnScreen();
+ return new java.awt.Point(unoPoint.X, unoPoint.Y);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the location of this component in the form of a point specifying the component's top-left corner */
+ public java.awt.Point getLocation() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoObject.getLocation();
+ return new java.awt.Point( unoPoint.X, unoPoint.Y );
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ try {
+ com.sun.star.awt.Rectangle unoRect = unoObject.getBounds();
+ return new java.awt.Rectangle(unoRect.X, unoRect.Y, unoRect.Width, unoRect.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ try {
+ com.sun.star.awt.Size unoSize = unoObject.getSize();
+ return new java.awt.Dimension(unoSize.Width, unoSize.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ // Not supported by this implementation
+ return null;
+ }
+
+ public boolean isFocusTraversable() {
+ return hasState(AccessibleStateType.FOCUSABLE);
+ }
+
+ public void requestFocus() {
+ unoObject.grabFocus();
+ }
+
+ /**
+ * Adds the specified focus listener to receive focus events from
+ * this component when this component gains input focus.
+ * If listener <code>l</code> is <code>null</code>,
+ * no exception is thrown and no action is performed.
+ */
+
+ public void addFocusListener(java.awt.event.FocusListener l) {
+ // Not supported by this implementation
+ }
+
+ /**
+ * Removes the specified focus listener so that it no longer
+ * receives focus events from this component. This method performs
+ * no function, nor does it throw an exception, if the listener
+ * specified by the argument was not previously added to this component.
+ * If listener <code>l</code> is <code>null</code>,
+ * no exception is thrown and no action is performed.
+ */
+
+ public void removeFocusListener(java.awt.event.FocusListener l) {
+ // Not supported by this implementation
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleEditableTextImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleEditableTextImpl.java
new file mode 100644
index 000000000000..4863b560ef71
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleEditableTextImpl.java
@@ -0,0 +1,367 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.awt.*;
+import com.sun.star.style.*;
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.AccessibleTextType;
+import com.sun.star.accessibility.XAccessibleEditableText;
+
+import javax.accessibility.AccessibleText;
+import javax.swing.text.StyleConstants;
+
+/** The GenericAccessibleEditableText mapps the calls to the java AccessibleEditableText
+ * interface to the corresponding methods of the UNO XAccessibleEditableText interface.
+ */
+public class AccessibleEditableTextImpl extends AccessibleTextImpl implements javax.accessibility.AccessibleEditableText {
+ final static double toPointFactor = 1 / (7/10 + 34.5);
+
+ /** Creates new GenericAccessibleEditableText object */
+ public AccessibleEditableTextImpl(XAccessibleEditableText xAccessibleEditableText) {
+ super(xAccessibleEditableText);
+ }
+
+ /** Cuts the text between two indices into the system clipboard */
+ public void cut(int startIndex, int endIndex) {
+ try {
+ ((XAccessibleEditableText) unoObject).cutText(startIndex, endIndex);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Deletes the text between two indices */
+ public void delete(int startIndex, int endIndex) {
+ try {
+ ((XAccessibleEditableText) unoObject).deleteText(startIndex, endIndex);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Returns the text range between two indices */
+ public String getTextRange(int startIndex, int endIndex) {
+ try {
+ return unoObject.getTextRange(startIndex, endIndex);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return null;
+ }
+
+ /** Inserts the specified string at the given index */
+ public void insertTextAtIndex(int index, String s){
+ try {
+ ((XAccessibleEditableText) unoObject).insertText(s, index);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Pastes the text form the system clipboard into the text starting at the specified index */
+ public void paste(int startIndex) {
+ try {
+ ((XAccessibleEditableText) unoObject).pasteText(startIndex);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Replaces the text between two indices with the specified string */
+ public void replaceText(int startIndex, int endIndex, String s) {
+ try {
+ ((XAccessibleEditableText) unoObject).replaceText(startIndex, endIndex, s);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Selects the text between two indices */
+ public void selectText(int startIndex, int endIndex) {
+ try {
+ unoObject.setSelection(startIndex, endIndex);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Sets the attributes for the text between two indices */
+ public void setAttributes(int startIndex, int endIndex, javax.swing.text.AttributeSet as) {
+ java.util.Vector propertyValues = new java.util.Vector();
+
+ // Convert Alignment attribute
+ Object attribute = as.getAttribute(StyleConstants.Alignment);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaAdjust";
+
+ switch (StyleConstants.getAlignment(as)) {
+ case StyleConstants.ALIGN_RIGHT:
+ propertyValue.Value = ParagraphAdjust.RIGHT;
+ break;
+ case StyleConstants.ALIGN_CENTER:
+ propertyValue.Value = ParagraphAdjust.CENTER;
+ break;
+ case StyleConstants.ALIGN_JUSTIFIED:
+ propertyValue.Value = ParagraphAdjust.BLOCK;
+ break;
+ default:
+ propertyValue.Value = ParagraphAdjust.LEFT;
+ break;
+ }
+ propertyValues.add(propertyValue);
+ }
+
+ // Convert Background attribute
+ attribute = as.getAttribute(StyleConstants.Background);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharBackColor";
+ propertyValue.Value = new Integer(StyleConstants.getBackground(as).getRGB());
+ propertyValues.add(propertyValue);
+ }
+
+ // FIXME: BidiLevel
+
+ // Set Bold attribute
+ attribute = as.getAttribute(StyleConstants.Bold);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharWeight";
+ if (StyleConstants.isBold(as)) {
+ propertyValue.Value = new Float(150);
+ } else {
+ propertyValue.Value = new Float(100);
+ }
+ propertyValues.add(propertyValue);
+ }
+
+ // FIXME: Java 1.4 ComponentAttribute, ComponentElementName, ComposedTextAttribute
+
+ // Set FirstLineIndent attribute
+ attribute = as.getAttribute(StyleConstants.FirstLineIndent);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaFirstLineIndent";
+ propertyValue.Value = new Double(StyleConstants.getFirstLineIndent(as) / toPointFactor);
+ propertyValues.add(propertyValue);
+ }
+
+ // Set font family attribute
+ attribute = as.getAttribute(StyleConstants.FontFamily);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharFontPitch";
+
+ if (StyleConstants.getFontFamily(as).equals( "Proportional" )) {
+ propertyValue.Value = new Short("2");
+ } else {
+ propertyValue.Value = new Short("1");
+ }
+ propertyValues.add(propertyValue);
+ }
+
+ // Set font size attribute
+ attribute = as.getAttribute(StyleConstants.FontSize);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharHeight";
+ propertyValue.Value = new Integer(StyleConstants.getFontSize(as));
+ propertyValues.add(propertyValue);
+ }
+
+ // Map foreground color
+ attribute = as.getAttribute(StyleConstants.Foreground);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharColor";
+ propertyValue.Value = new Integer (StyleConstants.getForeground(as).getRGB());
+ propertyValues.add(propertyValue);
+ }
+
+ // FIXME: IconAttribute, IconElementName
+
+ // Set italic attribute
+ attribute = as.getAttribute(StyleConstants.Italic);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharPosture";
+
+ if (StyleConstants.isItalic(as)) {
+ propertyValue.Value = FontSlant.ITALIC;
+ } else {
+ propertyValue.Value = FontSlant.DONTKNOW;
+ }
+ propertyValues.add(propertyValue);
+ }
+
+ // Set left indent attribute
+ attribute = as.getAttribute(StyleConstants.LeftIndent);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaFirstLeftMargin";
+ propertyValue.Value = new Integer(new Double(StyleConstants.getLeftIndent(as) / toPointFactor).intValue());
+ propertyValues.add(propertyValue);
+ }
+
+ // Set right indent attribute
+ attribute = as.getAttribute(StyleConstants.RightIndent);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaFirstRightMargin";
+ propertyValue.Value = new Integer(new Double(StyleConstants.getRightIndent(as) / toPointFactor).intValue());
+ propertyValues.add(propertyValue);
+ }
+
+ // Set line spacing attribute
+ attribute = as.getAttribute(StyleConstants.LineSpacing);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaLineSpacing";
+ propertyValue.Value = new Integer(new Double(StyleConstants.getLineSpacing(as) / toPointFactor).intValue());
+ propertyValues.add(propertyValue);
+ }
+
+ // FIXME: Java 1.4 NameAttribute, Orientation, ResolveAttribute
+
+ // Set space above attribute
+ attribute = as.getAttribute(StyleConstants.SpaceAbove);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaTopMargin";
+ propertyValue.Value = new Integer(new Double( StyleConstants.getSpaceAbove(as) / toPointFactor).intValue());
+ propertyValues.add(propertyValue);
+ }
+
+ // Set space below attribute
+ attribute = as.getAttribute(StyleConstants.SpaceBelow);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaBottomMargin";
+ propertyValue.Value = new Integer(new Double(StyleConstants.getSpaceBelow(as) / toPointFactor).intValue());
+ propertyValues.add(propertyValue);
+ }
+
+ // Set strike through attribute
+ attribute = as.getAttribute(StyleConstants.StrikeThrough);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharPosture";
+ if (StyleConstants.isStrikeThrough(as)) {
+ propertyValue.Value = new Short(FontStrikeout.SINGLE);
+ } else {
+ propertyValue.Value = new Short(FontStrikeout.NONE);
+ }
+ propertyValues.add(propertyValue);
+ }
+
+ // Set sub-/superscript attribute
+ attribute = as.getAttribute(StyleConstants.Superscript);
+ if (null == attribute) {
+ attribute = as.getAttribute(StyleConstants.Subscript);
+ }
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharEscapement";
+
+ if (StyleConstants.isSuperscript(as)) {
+ propertyValue.Value = new Short( "1" );
+ } else if (StyleConstants.isSubscript(as)) {
+ propertyValue.Value = new Short( "-1" );
+ } else {
+ propertyValue.Value = new Short( "0" );
+ }
+ propertyValues.add(propertyValue);
+ }
+
+ // Set tabset attribute
+ attribute = as.getAttribute(StyleConstants.TabSet);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "ParaTabStops";
+
+ javax.swing.text.TabSet tabSet = StyleConstants.getTabSet(as);
+ java.util.ArrayList tabStops = new java.util.ArrayList(tabSet.getTabCount());
+
+ for (int i = 0, max = tabSet.getTabCount(); i < max; i++) {
+ javax.swing.text.TabStop tab = tabSet.getTab(i);
+ com.sun.star.style.TabStop unoTab = new com.sun.star.style.TabStop();
+
+ unoTab.Position = new Double(tab.getPosition() / toPointFactor).intValue();
+
+ switch (tab.getAlignment()) {
+ case javax.swing.text.TabStop.ALIGN_CENTER:
+ unoTab.Alignment = TabAlign.CENTER;
+ break;
+ case javax.swing.text.TabStop.ALIGN_RIGHT:
+ unoTab.Alignment = TabAlign.RIGHT;
+ break;
+ case javax.swing.text.TabStop.ALIGN_DECIMAL:
+ unoTab.Alignment = TabAlign.DECIMAL;
+ break;
+ default:
+ unoTab.Alignment = TabAlign.LEFT;
+ break;
+ }
+
+ tabStops.add(unoTab);
+ }
+ propertyValue.Value = (com.sun.star.style.TabStop[]) tabStops.toArray();
+ propertyValues.add(propertyValue);
+ }
+
+ // Set underline attribute
+ attribute = as.getAttribute(StyleConstants.Underline);
+ if (null != attribute) {
+ com.sun.star.beans.PropertyValue propertyValue = new com.sun.star.beans.PropertyValue();
+ propertyValue.Name = "CharUnderline";
+
+ if (StyleConstants.isUnderline(as)) {
+ propertyValue.Value = new Short(FontUnderline.SINGLE);
+ } else {
+ propertyValue.Value = new Short(FontUnderline.NONE);
+ }
+ propertyValues.add(propertyValue);
+ }
+
+ try {
+ ((XAccessibleEditableText) unoObject).setAttributes(startIndex, endIndex, (com.sun.star.beans.PropertyValue[]) propertyValues.toArray());
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Sets the text contents to the specified string */
+ public void setTextContents(String s) {
+ try {
+ ((XAccessibleEditableText) unoObject).setText(s);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleExtendedState.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleExtendedState.java
new file mode 100644
index 000000000000..3d4500d322df
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleExtendedState.java
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleState;
+
+public class AccessibleExtendedState extends AccessibleState {
+ public static final AccessibleState DEFUNCT;
+ public static final AccessibleState INDETERMINATE;
+ public static final AccessibleState MANAGES_DESCENDANTS;
+ public static final AccessibleState SENSITIVE;
+ public static final AccessibleState STALE;
+
+ static {
+ DEFUNCT = new AccessibleExtendedState("defunct");
+
+ // JAVA 1.5: will come with manages_descendants and indeterminate
+ INDETERMINATE = new AccessibleExtendedState("indeterminate");
+ MANAGES_DESCENDANTS = new AccessibleExtendedState("managesDescendants");
+
+ SENSITIVE = new AccessibleExtendedState("sensitive");
+ STALE = new AccessibleExtendedState("stale");
+ }
+
+ protected AccessibleExtendedState(String key) {
+ super(key);
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleHypertextImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleHypertextImpl.java
new file mode 100644
index 000000000000..1bb3bc5961ad
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleHypertextImpl.java
@@ -0,0 +1,191 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import org.openoffice.java.accessibility.logging.*;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+/** The AccessibleHypertextImpl mapps all calls to the java AccessibleHypertext
+ * interface to the corresponding methods of the UNO XAccessibleHypertext
+ * interface.
+ */
+public class AccessibleHypertextImpl extends AccessibleTextImpl
+ implements javax.accessibility.AccessibleHypertext {
+
+ protected class Hyperlink extends javax.accessibility.AccessibleHyperlink {
+ protected XAccessibleHyperlink unoObject;
+
+ public Hyperlink(XAccessibleHyperlink xHyperlink) {
+ unoObject = xHyperlink;
+ }
+
+ public int getStartIndex() {
+ try {
+ System.err.println("StartIndex: " + unoObject.getStartIndex());
+ return unoObject.getStartIndex();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ public Object getAccessibleActionObject(int param) {
+ System.err.println("getActionObject");
+ try {
+ Object any = unoObject.getAccessibleActionObject(param);
+ if (AnyConverter.isString(any)) {
+ String url = AnyConverter.toString(any);
+ if (null != url) {
+ return new java.net.URL(url);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ } catch (java.net.MalformedURLException exception) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+
+ return null;
+ }
+
+ public int getEndIndex() {
+ try {
+ System.err.println("StartIndex: " + unoObject.getEndIndex());
+ return unoObject.getEndIndex();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ public Object getAccessibleActionAnchor(int param) {
+ System.err.println("getActionAnchor");
+ try {
+ Object any = unoObject.getAccessibleActionObject(param);
+ if (AnyConverter.isString(any)) {
+ System.err.println("Anchor: " + AnyConverter.toString(any));
+ return AnyConverter.toString(any);
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return null;
+ }
+
+ public boolean isValid() {
+ return unoObject.isValid();
+ }
+
+ public boolean doAccessibleAction(int param) {
+ try {
+ return unoObject.doAccessibleAction(param);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ public String getAccessibleActionDescription(int param) {
+ try {
+ return unoObject.getAccessibleActionDescription(param);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ }
+ }
+
+ public int getAccessibleActionCount() {
+ try {
+ return unoObject.getAccessibleActionCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+ }
+
+ /** Creates new AccessibleHypertextImpl */
+ public AccessibleHypertextImpl(XAccessibleHypertext xAccessibleHypertext) {
+ if (Build.PRODUCT) {
+ unoObject = xAccessibleHypertext;
+ } else {
+ String property = System.getProperty("AccessBridgeLogging");
+ if ((property != null) && (property.indexOf("text") != -1)) {
+ unoObject = new XAccessibleHypertextLog(xAccessibleHypertext);
+ } else {
+ unoObject = xAccessibleHypertext;
+ }
+ }
+ }
+
+ public static javax.accessibility.AccessibleText get(com.sun.star.uno.XInterface unoObject) {
+ try {
+ XAccessibleHypertext unoAccessibleHypertext = (XAccessibleHypertext)
+ UnoRuntime.queryInterface(XAccessibleHypertext.class, unoObject);
+ if (unoAccessibleHypertext != null) {
+ return new AccessibleHypertextImpl(unoAccessibleHypertext);
+ }
+
+ XAccessibleText unoAccessibleText = (XAccessibleText)
+ UnoRuntime.queryInterface(XAccessibleText.class, unoObject);
+ if (unoAccessibleText != null) {
+ return new AccessibleTextImpl(unoAccessibleText);
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return null;
+ }
+
+ public javax.accessibility.AccessibleHyperlink getLink(int param) {
+ try {
+ return new Hyperlink(((XAccessibleHypertext) unoObject).getHyperLink(param));
+ }
+
+ catch(com.sun.star.lang.IndexOutOfBoundsException exception) {
+ throw new IndexOutOfBoundsException(exception.getMessage());
+ }
+ }
+
+ public int getLinkCount() {
+ try {
+ return ((XAccessibleHypertext) unoObject).getHyperLinkCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ public int getLinkIndex(int param) {
+ try {
+ return ((XAccessibleHypertext) unoObject).getHyperLinkIndex(param);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return -1;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleIconImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleIconImpl.java
new file mode 100644
index 000000000000..ba41534f245b
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleIconImpl.java
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.XAccessibleImage;
+
+/**
+ */
+public class AccessibleIconImpl implements javax.accessibility.AccessibleIcon {
+
+ XAccessibleImage unoAccessibleImage;
+
+ public AccessibleIconImpl(XAccessibleImage xImage) {
+ unoAccessibleImage = xImage;
+ }
+
+ /** Gets the description of the icon */
+ public String getAccessibleIconDescription() {
+ try {
+ return unoAccessibleImage.getAccessibleImageDescription();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the height of the icon */
+ public int getAccessibleIconHeight() {
+ try {
+ return unoAccessibleImage.getAccessibleImageHeight();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Gets the width of the icon */
+ public int getAccessibleIconWidth() {
+ try {
+ return unoAccessibleImage.getAccessibleImageWidth();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Sets the description of the icon */
+ public void setAccessibleIconDescription(String s) {
+ // Not supported
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleKeyBinding.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleKeyBinding.java
new file mode 100644
index 000000000000..1eb3201c5d68
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleKeyBinding.java
@@ -0,0 +1,386 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.awt.KeyStroke;
+
+/**
+ *
+ */
+public class AccessibleKeyBinding extends Object implements javax.accessibility.AccessibleKeyBinding {
+
+ XAccessibleKeyBinding unoAccessibleKeybinding;
+
+ public AccessibleKeyBinding(XAccessibleKeyBinding unoKB) {
+ unoAccessibleKeybinding = unoKB;
+ }
+
+ public static int convertModifiers(short s) {
+ int modifiers = 0;
+ if ((s & com.sun.star.awt.KeyModifier.SHIFT) != 0) {
+ modifiers = modifiers | java.awt.event.KeyEvent.SHIFT_DOWN_MASK;
+ }
+
+ if ((s & com.sun.star.awt.KeyModifier.MOD1) != 0) {
+ modifiers = modifiers | java.awt.event.KeyEvent.CTRL_DOWN_MASK;
+ }
+
+ if ((s & com.sun.star.awt.KeyModifier.MOD2) != 0) {
+ modifiers = modifiers | java.awt.event.KeyEvent.ALT_DOWN_MASK;
+ }
+
+ if ((s & com.sun.star.awt.KeyModifier.MOD3) != 0) {
+ modifiers = modifiers | java.awt.event.KeyEvent.META_DOWN_MASK;
+ }
+
+ return modifiers;
+ }
+
+ public static int convertKeyCode(short s) {
+ int keycode = java.awt.event.KeyEvent.VK_UNDEFINED;
+
+ switch(s) {
+ case com.sun.star.awt.Key.NUM0:
+ keycode = java.awt.event.KeyEvent.VK_0;
+ break;
+ case com.sun.star.awt.Key.NUM1:
+ keycode = java.awt.event.KeyEvent.VK_1;
+ break;
+ case com.sun.star.awt.Key.NUM2:
+ keycode = java.awt.event.KeyEvent.VK_2;
+ break;
+ case com.sun.star.awt.Key.NUM3:
+ keycode = java.awt.event.KeyEvent.VK_3;
+ break;
+ case com.sun.star.awt.Key.NUM4:
+ keycode = java.awt.event.KeyEvent.VK_4;
+ break;
+ case com.sun.star.awt.Key.NUM5:
+ keycode = java.awt.event.KeyEvent.VK_5;
+ break;
+ case com.sun.star.awt.Key.NUM6:
+ keycode = java.awt.event.KeyEvent.VK_6;
+ break;
+ case com.sun.star.awt.Key.NUM7:
+ keycode = java.awt.event.KeyEvent.VK_7;
+ break;
+ case com.sun.star.awt.Key.NUM8:
+ keycode = java.awt.event.KeyEvent.VK_8;
+ break;
+ case com.sun.star.awt.Key.NUM9:
+ keycode = java.awt.event.KeyEvent.VK_9;
+ break;
+ case com.sun.star.awt.Key.A:
+ keycode = java.awt.event.KeyEvent.VK_A;
+ break;
+ case com.sun.star.awt.Key.B:
+ keycode = java.awt.event.KeyEvent.VK_B;
+ break;
+ case com.sun.star.awt.Key.C:
+ keycode = java.awt.event.KeyEvent.VK_C;
+ break;
+ case com.sun.star.awt.Key.D:
+ keycode = java.awt.event.KeyEvent.VK_D;
+ break;
+ case com.sun.star.awt.Key.E:
+ keycode = java.awt.event.KeyEvent.VK_E;
+ break;
+ case com.sun.star.awt.Key.F:
+ keycode = java.awt.event.KeyEvent.VK_F;
+ break;
+ case com.sun.star.awt.Key.G:
+ keycode = java.awt.event.KeyEvent.VK_G;
+ break;
+ case com.sun.star.awt.Key.H:
+ keycode = java.awt.event.KeyEvent.VK_H;
+ break;
+ case com.sun.star.awt.Key.I:
+ keycode = java.awt.event.KeyEvent.VK_I;
+ break;
+ case com.sun.star.awt.Key.J:
+ keycode = java.awt.event.KeyEvent.VK_J;
+ break;
+ case com.sun.star.awt.Key.K:
+ keycode = java.awt.event.KeyEvent.VK_K;
+ break;
+ case com.sun.star.awt.Key.L:
+ keycode = java.awt.event.KeyEvent.VK_L;
+ break;
+ case com.sun.star.awt.Key.M:
+ keycode = java.awt.event.KeyEvent.VK_M;
+ break;
+ case com.sun.star.awt.Key.N:
+ keycode = java.awt.event.KeyEvent.VK_N;
+ break;
+ case com.sun.star.awt.Key.O:
+ keycode = java.awt.event.KeyEvent.VK_O;
+ break;
+ case com.sun.star.awt.Key.P:
+ keycode = java.awt.event.KeyEvent.VK_P;
+ break;
+ case com.sun.star.awt.Key.Q:
+ keycode = java.awt.event.KeyEvent.VK_Q;
+ break;
+ case com.sun.star.awt.Key.R:
+ keycode = java.awt.event.KeyEvent.VK_R;
+ break;
+ case com.sun.star.awt.Key.S:
+ keycode = java.awt.event.KeyEvent.VK_S;
+ break;
+ case com.sun.star.awt.Key.T:
+ keycode = java.awt.event.KeyEvent.VK_T;
+ break;
+ case com.sun.star.awt.Key.U:
+ keycode = java.awt.event.KeyEvent.VK_U;
+ break;
+ case com.sun.star.awt.Key.V:
+ keycode = java.awt.event.KeyEvent.VK_V;
+ break;
+ case com.sun.star.awt.Key.W:
+ keycode = java.awt.event.KeyEvent.VK_W;
+ break;
+ case com.sun.star.awt.Key.X:
+ keycode = java.awt.event.KeyEvent.VK_X;
+ break;
+ case com.sun.star.awt.Key.Y:
+ keycode = java.awt.event.KeyEvent.VK_Y;
+ break;
+ case com.sun.star.awt.Key.Z:
+ keycode = java.awt.event.KeyEvent.VK_Z;
+ break;
+ case com.sun.star.awt.Key.F1:
+ keycode = java.awt.event.KeyEvent.VK_F1;
+ break;
+ case com.sun.star.awt.Key.F2:
+ keycode = java.awt.event.KeyEvent.VK_F2;
+ break;
+ case com.sun.star.awt.Key.F3:
+ keycode = java.awt.event.KeyEvent.VK_F3;
+ break;
+ case com.sun.star.awt.Key.F4:
+ keycode = java.awt.event.KeyEvent.VK_F4;
+ break;
+ case com.sun.star.awt.Key.F5:
+ keycode = java.awt.event.KeyEvent.VK_F5;
+ break;
+ case com.sun.star.awt.Key.F6:
+ keycode = java.awt.event.KeyEvent.VK_F6;
+ break;
+ case com.sun.star.awt.Key.F7:
+ keycode = java.awt.event.KeyEvent.VK_F7;
+ break;
+ case com.sun.star.awt.Key.F8:
+ keycode = java.awt.event.KeyEvent.VK_F8;
+ break;
+ case com.sun.star.awt.Key.F9:
+ keycode = java.awt.event.KeyEvent.VK_F9;
+ break;
+ case com.sun.star.awt.Key.F10:
+ keycode = java.awt.event.KeyEvent.VK_F10;
+ break;
+ case com.sun.star.awt.Key.F11:
+ keycode = java.awt.event.KeyEvent.VK_F11;
+ break;
+ case com.sun.star.awt.Key.F12:
+ keycode = java.awt.event.KeyEvent.VK_F12;
+ break;
+ case com.sun.star.awt.Key.F13:
+ keycode = java.awt.event.KeyEvent.VK_F13;
+ break;
+ case com.sun.star.awt.Key.F14:
+ keycode = java.awt.event.KeyEvent.VK_F14;
+ break;
+ case com.sun.star.awt.Key.F15:
+ keycode = java.awt.event.KeyEvent.VK_F15;
+ break;
+ case com.sun.star.awt.Key.F16:
+ keycode = java.awt.event.KeyEvent.VK_F16;
+ break;
+ case com.sun.star.awt.Key.F17:
+ keycode = java.awt.event.KeyEvent.VK_F17;
+ break;
+ case com.sun.star.awt.Key.F18:
+ keycode = java.awt.event.KeyEvent.VK_F18;
+ break;
+ case com.sun.star.awt.Key.F19:
+ keycode = java.awt.event.KeyEvent.VK_F19;
+ break;
+ case com.sun.star.awt.Key.F20:
+ keycode = java.awt.event.KeyEvent.VK_F20;
+ break;
+ case com.sun.star.awt.Key.F21:
+ keycode = java.awt.event.KeyEvent.VK_F21;
+ break;
+ case com.sun.star.awt.Key.F22:
+ keycode = java.awt.event.KeyEvent.VK_F22;
+ break;
+ case com.sun.star.awt.Key.F23:
+ keycode = java.awt.event.KeyEvent.VK_F23;
+ break;
+ case com.sun.star.awt.Key.F24:
+ keycode = java.awt.event.KeyEvent.VK_F24;
+ break;
+ case com.sun.star.awt.Key.DOWN:
+ keycode = java.awt.event.KeyEvent.VK_DOWN;
+ break;
+ case com.sun.star.awt.Key.UP:
+ keycode = java.awt.event.KeyEvent.VK_UP;
+ break;
+ case com.sun.star.awt.Key.LEFT:
+ keycode = java.awt.event.KeyEvent.VK_LEFT;
+ break;
+ case com.sun.star.awt.Key.RIGHT:
+ keycode = java.awt.event.KeyEvent.VK_RIGHT;
+ break;
+ case com.sun.star.awt.Key.HOME:
+ keycode = java.awt.event.KeyEvent.VK_HOME;
+ break;
+ case com.sun.star.awt.Key.END:
+ keycode = java.awt.event.KeyEvent.VK_END;
+ break;
+ case com.sun.star.awt.Key.PAGEUP:
+ keycode = java.awt.event.KeyEvent.VK_PAGE_UP;
+ break;
+ case com.sun.star.awt.Key.PAGEDOWN:
+ keycode = java.awt.event.KeyEvent.VK_PAGE_DOWN;
+ break;
+ case com.sun.star.awt.Key.RETURN:
+ keycode = java.awt.event.KeyEvent.VK_ENTER;
+ break;
+ case com.sun.star.awt.Key.ESCAPE:
+ keycode = java.awt.event.KeyEvent.VK_ESCAPE;
+ break;
+ case com.sun.star.awt.Key.TAB:
+ keycode = java.awt.event.KeyEvent.VK_TAB;
+ break;
+ case com.sun.star.awt.Key.BACKSPACE:
+ keycode = java.awt.event.KeyEvent.VK_BACK_SPACE;
+ break;
+ case com.sun.star.awt.Key.SPACE:
+ keycode = java.awt.event.KeyEvent.VK_SPACE;
+ break;
+ case com.sun.star.awt.Key.INSERT:
+ keycode = java.awt.event.KeyEvent.VK_INSERT;
+ break;
+ case com.sun.star.awt.Key.DELETE:
+ keycode = java.awt.event.KeyEvent.VK_DELETE;
+ break;
+ case com.sun.star.awt.Key.ADD:
+ keycode = java.awt.event.KeyEvent.VK_ADD;
+ break;
+ case com.sun.star.awt.Key.SUBTRACT:
+ keycode = java.awt.event.KeyEvent.VK_SUBTRACT;
+ break;
+ case com.sun.star.awt.Key.MULTIPLY:
+ keycode = java.awt.event.KeyEvent.VK_MULTIPLY;
+ break;
+ case com.sun.star.awt.Key.DIVIDE:
+ keycode = java.awt.event.KeyEvent.VK_DIVIDE;
+ break;
+ case com.sun.star.awt.Key.POINT:
+ keycode = java.awt.event.KeyEvent.VK_PERIOD;
+ break;
+ case com.sun.star.awt.Key.COMMA:
+ keycode = java.awt.event.KeyEvent.VK_COMMA;
+ break;
+ case com.sun.star.awt.Key.LESS:
+ keycode = java.awt.event.KeyEvent.VK_LESS;
+ break;
+ case com.sun.star.awt.Key.GREATER:
+ keycode = java.awt.event.KeyEvent.VK_GREATER;
+ break;
+ case com.sun.star.awt.Key.EQUAL:
+ keycode = java.awt.event.KeyEvent.VK_EQUALS;
+ break;
+ case com.sun.star.awt.Key.CUT:
+ keycode = java.awt.event.KeyEvent.VK_CUT;
+ break;
+ case com.sun.star.awt.Key.COPY:
+ keycode = java.awt.event.KeyEvent.VK_COPY;
+ break;
+ case com.sun.star.awt.Key.PASTE:
+ keycode = java.awt.event.KeyEvent.VK_PASTE;
+ break;
+ case com.sun.star.awt.Key.UNDO:
+ keycode = java.awt.event.KeyEvent.VK_UNDO;
+ break;
+ case com.sun.star.awt.Key.FIND:
+ keycode = java.awt.event.KeyEvent.VK_FIND;
+ break;
+ case com.sun.star.awt.Key.PROPERTIES:
+ keycode = java.awt.event.KeyEvent.VK_PROPS;
+ break;
+ case com.sun.star.awt.Key.HELP:
+ keycode = java.awt.event.KeyEvent.VK_HELP;
+ break;
+ default:
+ ;
+ }
+ return keycode;
+ }
+
+ /*
+ * AccessibleKeyBinding
+ */
+
+ /** Returns a key binding for this object */
+ public Object getAccessibleKeyBinding(int i) {
+ try {
+ KeyStroke[] keys = unoAccessibleKeybinding.getAccessibleKeyBinding(i);
+ javax.swing.KeyStroke[] data = new javax.swing.KeyStroke[keys.length];
+ for (int j=0; j < keys.length; j++) {
+ int keyCode = convertKeyCode(keys[j].KeyCode);
+ if (keyCode != java.awt.event.KeyEvent.VK_UNDEFINED) {
+ data[j] = javax.swing.KeyStroke.getKeyStroke(keyCode, convertModifiers(keys[j].Modifiers));
+ } else {
+ data[j] = null;
+ }
+ }
+
+ if (keys.length == 1) {
+ return data[0];
+ } else {
+ return data;
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the number of key bindings for this object */
+ public int getAccessibleKeyBindingCount() {
+ try {
+ return unoAccessibleKeybinding.getAccessibleKeyBindingCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleObjectFactory.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleObjectFactory.java
new file mode 100644
index 000000000000..129a3b820993
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleObjectFactory.java
@@ -0,0 +1,545 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import java.lang.ref.WeakReference;
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleStateSet;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+import org.openoffice.java.accessibility.logging.XAccessibleEventLog;
+
+/**
+*/
+public class AccessibleObjectFactory {
+ // This type is needed for conversions from/to uno Any
+ public static final Type XAccessibleType = new Type(XAccessible.class);
+
+ private static java.util.Hashtable objectList = new java.util.Hashtable();
+ private static java.awt.FocusTraversalPolicy focusTraversalPolicy = new FocusTraversalPolicy();
+
+ private static java.awt.EventQueue theEventQueue = java.awt.Toolkit.getDefaultToolkit().
+ getSystemEventQueue();
+
+ public static java.awt.EventQueue getEventQueue() {
+ return theEventQueue;
+ }
+
+ public static void postFocusGained(java.awt.Component c) {
+ getEventQueue().postEvent(new java.awt.event.FocusEvent(c, java.awt.event.FocusEvent.FOCUS_GAINED));
+ }
+
+ public static void postWindowGainedFocus(java.awt.Window w) {
+ postWindowEvent(w, java.awt.event.WindowEvent.WINDOW_GAINED_FOCUS);
+ }
+
+ public static void postWindowLostFocus(java.awt.Window w) {
+ postWindowEvent(w, java.awt.event.WindowEvent.WINDOW_LOST_FOCUS);
+ }
+
+ public static void postWindowActivated(java.awt.Window w) {
+ postWindowEvent(w, java.awt.event.WindowEvent.WINDOW_ACTIVATED);
+ }
+
+ public static void postWindowDeactivated(java.awt.Window w) {
+ postWindowEvent(w, java.awt.event.WindowEvent.WINDOW_DEACTIVATED);
+ }
+
+ public static void postWindowOpened(java.awt.Window w) {
+ postWindowEvent(w, java.awt.event.WindowEvent.WINDOW_OPENED);
+ }
+
+ public static void postWindowClosed(java.awt.Window w) {
+ postWindowEvent(w, java.awt.event.WindowEvent.WINDOW_CLOSED);
+ }
+
+ public static void invokeAndWait() {
+ try {
+ theEventQueue.invokeAndWait( new java.lang.Runnable () {
+ public void run() {
+ }
+ });
+ } catch (java.lang.reflect.InvocationTargetException e) {
+ } catch (java.lang.InterruptedException e) {
+ }
+ }
+
+ private static void postWindowEvent(java.awt.Window w, int i) {
+ theEventQueue.postEvent(new java.awt.event.WindowEvent(w, i));
+ }
+
+ public static java.awt.Component getAccessibleComponent(XAccessible xAccessible) {
+ java.awt.Component c = null;
+ if (xAccessible != null) {
+ // Retrieve unique id for the original UNO object to be used as a hash key
+ String oid = UnoRuntime.generateOid(xAccessible);
+
+ // Check if we already have a wrapper object for this context
+ synchronized (objectList) {
+ WeakReference r = (WeakReference) objectList.get(oid);
+ if(r != null) {
+ c = (java.awt.Component) r.get();
+ }
+ }
+ }
+ return c;
+ }
+
+ public static void addChild(java.awt.Container parent, Object any) {
+ try {
+ addChild(parent, (XAccessible) AnyConverter.toObject(XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println(e.getClass().getName() + " caught: " + e.getMessage());
+ }
+ }
+
+ public static void addChild(java.awt.Container parent, XAccessible child) {
+ try {
+ if (child != null) {
+ XAccessibleContext childAC = child.getAccessibleContext();
+ if (childAC != null) {
+ XAccessibleStateSet stateSet = childAC.getAccessibleStateSet();
+ if (stateSet != null) {
+ java.awt.Component c = getAccessibleComponent(child);
+
+ // Re-use existing wrapper if possible, create a new one otherwise
+ if (c != null) {
+ // Seems to be already in child list
+ if (parent.equals(c.getParent()))
+ return;
+ // Update general component states
+ c.setEnabled(stateSet.contains(AccessibleStateType.ENABLED));
+ c.setVisible(stateSet.contains(AccessibleStateType.VISIBLE));
+ } else {
+ c = createAccessibleComponentImpl(child, childAC, stateSet);
+ }
+
+ if (c != null) {
+ if (c instanceof java.awt.Container) {
+ populateContainer((java.awt.Container) c, childAC);
+ }
+ parent.add(c);
+ // Simulate focus gained event for new child
+ if (stateSet.contains(AccessibleStateType.FOCUSED)) {
+ postFocusGained(c);
+ }
+ }
+ }
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ System.err.println(e.getClass().getName() + " caught: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ protected static void removeChild(java.awt.Container parent, Object any) {
+ try {
+ XAccessible xAccessible = (XAccessible) AnyConverter.toObject(XAccessibleType, any);
+ java.awt.Component c = getAccessibleComponent(xAccessible);
+
+ if (c != null) {
+ parent.remove(c);
+
+ if (c instanceof java.awt.Container) {
+ clearContainer((java.awt.Container) c);
+ }
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println(e.getClass().getName() + " caught: " + e.getMessage());
+ }
+ }
+
+
+ /**
+ * Removes all children from the container parent
+ */
+
+ protected static void clearContainer(java.awt.Container parent) {
+ // Purge all children from this container
+ int count = parent.getComponentCount();
+ for (int i = 0; i < count; i++) {
+ java.awt.Component c = parent.getComponent(i);
+ if (c instanceof java.awt.Container) {
+ clearContainer((java.awt.Container) c);
+ }
+ }
+ parent.removeAll();
+ }
+
+
+ /**
+ * Populates the given Container parent with wrapper objects for all children of parentAC. This method is
+ * intended to be called when a container is added using a CHILDREN_CHANGED event.
+ */
+
+ protected static void populateContainer(java.awt.Container parent, XAccessibleContext parentAC) {
+ if (parentAC != null) {
+ try {
+ int childCount = parentAC.getAccessibleChildCount();
+ for (int i=0; i<childCount; i++) {
+ addChild(parent, parentAC.getAccessibleChild(i));
+ }
+ } catch (java.lang.Exception e) {
+ System.err.println(e.getClass().getName() + " caught: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * Populates the given Container parent with wrapper objects for all children of parentAC. This method is
+ * intended to be called when a new window has been opened.
+ */
+ protected static void populateContainer(java.awt.Container parent, XAccessibleContext parentAC, java.awt.Window frame) {
+ if (parentAC != null) {
+ try {
+ int childCount = parentAC.getAccessibleChildCount();
+ for (int i=0; i<childCount; i++) {
+ XAccessible child = parentAC.getAccessibleChild(i);
+ if (child != null) {
+ XAccessibleContext childAC = child.getAccessibleContext();
+ java.awt.Component c = createAccessibleComponent(child, childAC, frame);
+ if (c != null) {
+ if (c instanceof java.awt.Container) {
+ populateContainer((java.awt.Container) c, childAC, frame);
+ }
+ parent.add(c);
+ }
+ } else if (Build.DEBUG) {
+ System.err.println("ignoring not accessible child " + i);
+ }
+ }
+ }
+
+ catch (java.lang.Exception e) {
+ System.err.println(e.getClass().getName() + " caught: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+
+ protected static java.awt.Component createAccessibleComponent(XAccessible xAccessible) {
+ try {
+ XAccessibleContext xAccessibleContext = xAccessible.getAccessibleContext();
+ if (xAccessibleContext != null) {
+ return createAccessibleComponentImpl(xAccessible, xAccessibleContext, xAccessibleContext.getAccessibleStateSet());
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ System.err.println(e.getClass().getName() + " caught: " + e.getMessage());
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ protected static java.awt.Component createAccessibleComponent(XAccessible xAccessible, XAccessibleContext xAccessibleContext,
+ java.awt.Window frame) {
+ if (xAccessibleContext != null) {
+ try {
+ XAccessibleStateSet xAccessibleStateSet = xAccessibleContext.getAccessibleStateSet();
+ java.awt.Component c = createAccessibleComponentImpl(xAccessible, xAccessibleContext, xAccessibleStateSet);
+ if (c != null) {
+ // Set this component as initial component
+ if (xAccessibleStateSet.contains(AccessibleStateType.FOCUSED)) {
+ if (frame instanceof NativeFrame) {
+ ((NativeFrame) frame).setInitialComponent(c);
+ }
+ }
+ return c;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ System.err.println(e.getClass().getName() + " caught: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ protected static java.awt.Component createAccessibleComponentImpl(XAccessible xAccessible, XAccessibleContext xAccessibleContext,
+ XAccessibleStateSet xAccessibleStateSet) {
+ java.awt.Component c = null;
+ short role = xAccessibleContext.getAccessibleRole();
+ switch (role) {
+ case AccessibleRole.CANVAS:
+ c = new Container(javax.accessibility.AccessibleRole.CANVAS,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.CHECK_BOX:
+ c = new CheckBox(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.COMBO_BOX:
+ c = new ComboBox(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.DOCUMENT:
+ c = new Container(javax.accessibility.AccessibleRole.CANVAS,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.EMBEDDED_OBJECT:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.END_NOTE:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.FILLER:
+ c = new Container(javax.accessibility.AccessibleRole.FILLER,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.FOOTNOTE:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.FOOTER:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.GRAPHIC:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.HEADER:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.ICON:
+ c = new Icon(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.LABEL:
+ c = new Label(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.LAYERED_PANE:
+ c = new Container(javax.accessibility.AccessibleRole.LAYERED_PANE,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.LIST:
+ if (xAccessibleStateSet.contains(AccessibleStateType.MANAGES_DESCENDANTS)) {
+ c = new List(xAccessible, xAccessibleContext);
+ } else {
+ c = new Container(javax.accessibility.AccessibleRole.LIST,
+ xAccessible, xAccessibleContext);
+ }
+ break;
+ case AccessibleRole.MENU:
+ c = new Menu(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.MENU_BAR:
+ c = new MenuContainer(javax.accessibility.AccessibleRole.MENU_BAR, xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.MENU_ITEM:
+ c = new MenuItem(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.POPUP_MENU:
+ c = new MenuContainer(javax.accessibility.AccessibleRole.POPUP_MENU, xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.OPTION_PANE:
+ c = new Container(javax.accessibility.AccessibleRole.OPTION_PANE,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.PAGE_TAB:
+ c = new Container(javax.accessibility.AccessibleRole.PAGE_TAB, xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.PAGE_TAB_LIST:
+ c = new Container(javax.accessibility.AccessibleRole.PAGE_TAB_LIST, xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.PARAGRAPH:
+ case AccessibleRole.HEADING:
+ c = new Paragraph(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.PANEL:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.PUSH_BUTTON:
+ c = new Button(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.RADIO_BUTTON:
+ c = new RadioButton(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.ROOT_PANE:
+ c = new Container(javax.accessibility.AccessibleRole.ROOT_PANE,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.SCROLL_BAR:
+ c = new ScrollBar(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.SCROLL_PANE:
+ c = new Container(javax.accessibility.AccessibleRole.SCROLL_PANE,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.SEPARATOR:
+ c = new Separator(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.SHAPE:
+ c = new Container(javax.accessibility.AccessibleRole.CANVAS,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.SPLIT_PANE:
+ c = new Container(javax.accessibility.AccessibleRole.SPLIT_PANE,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.STATUS_BAR:
+ c = new Container(javax.accessibility.AccessibleRole.STATUS_BAR,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.COLUMN_HEADER:
+ case AccessibleRole.TABLE:
+ if (xAccessibleStateSet.contains(AccessibleStateType.MANAGES_DESCENDANTS)) {
+ c = new Table(xAccessible, xAccessibleContext,
+ xAccessibleStateSet.contains(AccessibleStateType.MULTI_SELECTABLE));
+ } else {
+ c = new Container(javax.accessibility.AccessibleRole.TABLE,
+ xAccessible, xAccessibleContext);
+ }
+ break;
+ case AccessibleRole.TABLE_CELL:
+ if( xAccessibleContext.getAccessibleChildCount() > 0 )
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ else
+ c = new Label(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.TEXT:
+ c = new TextComponent(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.TEXT_FRAME:
+ c = new Container(javax.accessibility.AccessibleRole.PANEL,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.TOGGLE_BUTTON:
+ c = new ToggleButton(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.TOOL_BAR:
+ c = new Container(javax.accessibility.AccessibleRole.TOOL_BAR,
+ xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.TOOL_TIP:
+ c = new ToolTip(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.TREE:
+ c = new Tree(xAccessible, xAccessibleContext);
+ break;
+ case AccessibleRole.VIEW_PORT:
+ c = new Container(javax.accessibility.AccessibleRole.VIEWPORT,
+ xAccessible, xAccessibleContext);
+ break;
+ default:
+ System.err.println("Unmapped accessible object " + role);
+ System.err.println("usually mapped to " + AccessibleRoleAdapter.getAccessibleRole(role));
+ c = new Container(AccessibleRoleAdapter.getAccessibleRole(role),
+ xAccessible, xAccessibleContext);
+ break;
+ }
+ if (c != null) {
+ // Add the newly created object to the cache list
+ synchronized (objectList) {
+ objectList.put(c.toString(), new WeakReference(c));
+ if (Build.DEBUG) {
+// System.out.println("Object cache now contains " + objectList.size() + " objects.");
+ }
+ }
+
+ AccessibleStateAdapter.setComponentState(c, xAccessibleStateSet);
+
+ if (! Build.PRODUCT) {
+ String property = System.getProperty("AccessBridgeLogging");
+ if ((property != null) && (property.indexOf("event") != -1)) {
+ XAccessibleEventLog.addEventListener(xAccessibleContext, c);
+ }
+ }
+ }
+
+ return c;
+ }
+
+ protected static void disposing(java.awt.Component c) {
+ if (c != null) {
+ synchronized (objectList) {
+ objectList.remove(c.toString());
+ }
+ }
+ }
+
+ public static java.awt.Window getTopWindow(XAccessible xAccessible) {
+ XAccessibleContext xAccessibleContext = xAccessible.getAccessibleContext();
+
+ if (xAccessibleContext != null) {
+ short role = xAccessibleContext.getAccessibleRole();
+ XAccessibleStateSet xAccessibleStateSet = xAccessibleContext.getAccessibleStateSet();
+ XAccessibleComponent xAccessibleComponent = (XAccessibleComponent)
+ UnoRuntime.queryInterface(XAccessibleComponent.class, xAccessibleContext);
+
+ java.awt.Window w;
+ if (role == AccessibleRole.DIALOG) {
+ w = new Dialog(new Application(),
+ xAccessibleContext.getAccessibleName(),
+ xAccessibleStateSet.contains(AccessibleStateType.MODAL),
+ xAccessibleComponent);
+ } else if (role == AccessibleRole.ALERT) {
+ w = new Alert(new Application(),
+ xAccessibleContext.getAccessibleName(),
+ xAccessibleStateSet.contains(AccessibleStateType.MODAL),
+ xAccessibleComponent);
+ } else if (role == AccessibleRole.FRAME) {
+ w = new Frame(xAccessibleContext.getAccessibleName(),
+ xAccessibleComponent);
+ } else if (role == AccessibleRole.WINDOW) {
+ java.awt.Window activeWindow =
+ java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
+ if (activeWindow != null) {
+ w = new Window(activeWindow, xAccessibleComponent);
+ } else {
+ if (Build.DEBUG) {
+ System.err.println("no active frame found for Window: " + role);
+ }
+ return null;
+ }
+ } else {
+ if (Build.DEBUG) {
+ System.err.println("invalid role for toplevel window: " + role);
+ }
+ return null;
+ }
+ populateContainer(w, xAccessibleContext, w);
+ w.setFocusTraversalPolicy(focusTraversalPolicy);
+ w.setVisible(true);
+
+ // Make the new window the focused one if it has an initialy focused object set.
+ java.awt.Component c = ((NativeFrame) w).getInitialComponent();
+ if (c != null) {
+ postWindowGainedFocus(w);
+ }
+ return w;
+ }
+
+ return null;
+ }
+}
+
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleRelationAdapter.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleRelationAdapter.java
new file mode 100644
index 000000000000..2f1709acac45
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleRelationAdapter.java
@@ -0,0 +1,64 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.Accessible;
+import com.sun.star.accessibility.AccessibleRelation;
+import com.sun.star.accessibility.XAccessible;
+
+/**
+ */
+public abstract class AccessibleRelationTypeMap {
+
+ final static String[] data = {
+ null,
+ javax.accessibility.AccessibleRelation.CONTROLLED_BY,
+ javax.accessibility.AccessibleRelation.CONTROLLED_BY,
+ javax.accessibility.AccessibleRelation.CONTROLLER_FOR,
+ javax.accessibility.AccessibleRelation.CONTROLLER_FOR,
+ javax.accessibility.AccessibleRelation.LABEL_FOR,
+ javax.accessibility.AccessibleRelation.LABEL_FOR,
+ javax.accessibility.AccessibleRelation.LABELED_BY,
+ javax.accessibility.AccessibleRelation.LABELED_BY,
+ javax.accessibility.AccessibleRelation.MEMBER_OF,
+ javax.accessibility.AccessibleRelation.MEMBER_OF
+ };
+
+ public static void fillAccessibleRelationSet(javax.accessibility.AccessibleRelationSet s, AccessibleRelation[] relations) {
+ AccessibleObjectFactory factory = AccessibleObjectFactory.getDefault();
+ for(int i=0; i<relations.length; i++) {
+ if( relations[i].RelationType < data.length && data[relations[i].RelationType] != null ) {
+ javax.accessibility.AccessibleRelation r =
+ new javax.accessibility.AccessibleRelation(data[relations[i].RelationType]);
+
+ r.setTarget(factory.getAccessibleObjectSet(relations[i].TargetSet));
+ s.add(r);
+ }
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleRoleAdapter.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleRoleAdapter.java
new file mode 100644
index 000000000000..c7f630fdd3ab
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleRoleAdapter.java
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+
+/** This class maps the AccessibleRole(s) of the UNO accessibility API
+ * to the corresponding javax.accessibility objects.
+ */
+public abstract class AccessibleRoleAdapter {
+
+ /* This array is used as a mapping between the UNO AccessibleRole
+ * and the AccessibleRole objects of the Java accessibility API.
+ */
+ public static final javax.accessibility.AccessibleRole[] data = {
+ javax.accessibility.AccessibleRole.UNKNOWN,
+ javax.accessibility.AccessibleRole.ALERT,
+ javax.accessibility.AccessibleRole.COLUMN_HEADER,
+ javax.accessibility.AccessibleRole.CANVAS,
+ javax.accessibility.AccessibleRole.CHECK_BOX,
+ javax.accessibility.AccessibleRole.CHECK_BOX, // CHECK_MENU_ITEM
+ javax.accessibility.AccessibleRole.COLOR_CHOOSER,
+ javax.accessibility.AccessibleRole.COMBO_BOX,
+ javax.accessibility.AccessibleRole.DATE_EDITOR,
+ javax.accessibility.AccessibleRole.DESKTOP_ICON,
+ javax.accessibility.AccessibleRole.DESKTOP_PANE,
+ javax.accessibility.AccessibleRole.DIRECTORY_PANE,
+ javax.accessibility.AccessibleRole.DIALOG,
+ javax.accessibility.AccessibleRole.CANVAS, // DOCUMENT
+ javax.accessibility.AccessibleRole.PANEL, // EMBEDDED_OBJECT
+ javax.accessibility.AccessibleRole.PANEL, // ENDNOTE
+ javax.accessibility.AccessibleRole.FILE_CHOOSER,
+ javax.accessibility.AccessibleRole.FILLER,
+ javax.accessibility.AccessibleRole.FONT_CHOOSER,
+ javax.accessibility.AccessibleRole.FOOTER,
+ javax.accessibility.AccessibleRole.PANEL, // FOOTNOTE
+ javax.accessibility.AccessibleRole.FRAME,
+ javax.accessibility.AccessibleRole.GLASS_PANE,
+ javax.accessibility.AccessibleRole.PANEL, // GRAPHIC
+ javax.accessibility.AccessibleRole.GROUP_BOX,
+ javax.accessibility.AccessibleRole.HEADER,
+ javax.accessibility.AccessibleRole.TEXT, // HEADING
+ javax.accessibility.AccessibleRole.HYPERLINK,
+ javax.accessibility.AccessibleRole.ICON,
+ javax.accessibility.AccessibleRole.INTERNAL_FRAME,
+ javax.accessibility.AccessibleRole.LABEL,
+ javax.accessibility.AccessibleRole.LAYERED_PANE,
+ javax.accessibility.AccessibleRole.LIST,
+ javax.accessibility.AccessibleRole.LABEL, // LIST_ITEM - required by Zoomtext
+ javax.accessibility.AccessibleRole.MENU,
+ javax.accessibility.AccessibleRole.MENU_BAR,
+ javax.accessibility.AccessibleRole.MENU_ITEM,
+ javax.accessibility.AccessibleRole.OPTION_PANE,
+ javax.accessibility.AccessibleRole.PAGE_TAB,
+ javax.accessibility.AccessibleRole.PAGE_TAB_LIST,
+ javax.accessibility.AccessibleRole.PANEL,
+ javax.accessibility.AccessibleRole.PARAGRAPH,
+ javax.accessibility.AccessibleRole.PASSWORD_TEXT,
+ javax.accessibility.AccessibleRole.POPUP_MENU,
+ javax.accessibility.AccessibleRole.PUSH_BUTTON,
+ javax.accessibility.AccessibleRole.PROGRESS_BAR,
+ javax.accessibility.AccessibleRole.RADIO_BUTTON,
+ javax.accessibility.AccessibleRole.RADIO_BUTTON, // RADIO_MENU_ITEM
+ javax.accessibility.AccessibleRole.ROW_HEADER,
+ javax.accessibility.AccessibleRole.ROOT_PANE,
+ javax.accessibility.AccessibleRole.SCROLL_BAR,
+ javax.accessibility.AccessibleRole.SCROLL_PANE,
+ javax.accessibility.AccessibleRole.CANVAS, // SHAPE
+ javax.accessibility.AccessibleRole.SEPARATOR,
+ javax.accessibility.AccessibleRole.SLIDER,
+ javax.accessibility.AccessibleRole.SPIN_BOX,
+ javax.accessibility.AccessibleRole.SPLIT_PANE,
+ javax.accessibility.AccessibleRole.STATUS_BAR,
+ javax.accessibility.AccessibleRole.TABLE,
+ javax.accessibility.AccessibleRole.LABEL, // TABLE_CELL - required by ZoomText
+ javax.accessibility.AccessibleRole.TEXT,
+ javax.accessibility.AccessibleRole.PANEL, // TEXT_FRAME
+ javax.accessibility.AccessibleRole.TOGGLE_BUTTON,
+ javax.accessibility.AccessibleRole.TOOL_BAR,
+ javax.accessibility.AccessibleRole.TOOL_TIP,
+ javax.accessibility.AccessibleRole.TREE,
+ javax.accessibility.AccessibleRole.VIEWPORT,
+ javax.accessibility.AccessibleRole.WINDOW,
+ javax.accessibility.AccessibleRole.RADIO_BUTTON, // BUTTON_DROPDOWN
+ javax.accessibility.AccessibleRole.RADIO_BUTTON, // BUTTON_MENU
+ javax.accessibility.AccessibleRole.PANEL, // CAPTION
+ javax.accessibility.AccessibleRole.PANEL, // CHART
+ javax.accessibility.AccessibleRole.EDITBAR,
+ javax.accessibility.AccessibleRole.PANEL, // FORM
+ javax.accessibility.AccessibleRole.PANEL, // IMAGE_MAP
+ javax.accessibility.AccessibleRole.PANEL, // NOTE
+ javax.accessibility.AccessibleRole.PANEL, // PAGE
+ javax.accessibility.AccessibleRole.RULER,
+ javax.accessibility.AccessibleRole.PANEL, // SECTION
+ javax.accessibility.AccessibleRole.LABEL, // TREE_ITEM
+ javax.accessibility.AccessibleRole.TABLE // TREE_TABLE
+ };
+
+ public static javax.accessibility.AccessibleRole getAccessibleRole(short role) {
+ if(role < data.length) {
+ if(data[role] == null) {
+ System.err.println("Unmapped role: " + role);
+ }
+ return data[role];
+ }
+ // FIXME: remove debug out
+ System.err.println("Unmappable role: " + role);
+ return null;
+ }
+
+ public static javax.accessibility.AccessibleRole getAccessibleRole(XAccessible unoAccessible) {
+ try {
+ XAccessibleContext unoAccessibleContext = unoAccessible.getAccessibleContext();
+ if (unoAccessibleContext != null) {
+ return getAccessibleRole(unoAccessibleContext.getAccessibleRole());
+ }
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return javax.accessibility.AccessibleRole.UNKNOWN;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleSelectionImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleSelectionImpl.java
new file mode 100644
index 000000000000..6e40c1e7a78d
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleSelectionImpl.java
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+
+class AccessibleSelectionImpl implements javax.accessibility.AccessibleSelection {
+ XAccessibleSelection unoAccessibleSelection;
+
+ AccessibleSelectionImpl(XAccessibleSelection xAccessibleSelection) {
+ unoAccessibleSelection = xAccessibleSelection;
+ }
+
+ /** Returns an Accessible representing the specified selected child of the object */
+ public javax.accessibility.Accessible getAccessibleSelection(int i) {
+ try {
+ return (javax.accessibility.Accessible) AccessibleObjectFactory.getAccessibleComponent(
+ unoAccessibleSelection.getSelectedAccessibleChild(i));
+ } catch (com.sun.star.uno.Exception e) {
+ return null;
+ }
+ }
+
+ /** Adds the specified Accessible child of the object to the object's selection */
+ public void addAccessibleSelection(int i) {
+ try {
+ unoAccessibleSelection.selectAccessibleChild(i);
+ } catch (com.sun.star.uno.Exception e) {
+ }
+ }
+
+ /** Clears the selection in the object, so that no children in the object are selected */
+ public void clearAccessibleSelection() {
+ try {
+ unoAccessibleSelection.clearAccessibleSelection();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Returns the number of Accessible children currently selected */
+ public int getAccessibleSelectionCount() {
+ try {
+ return unoAccessibleSelection.getSelectedAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Determines if the current child of this object is selected */
+ public boolean isAccessibleChildSelected(int i) {
+ try {
+ return unoAccessibleSelection.isAccessibleChildSelected(i);
+ } catch (com.sun.star.uno.Exception e) {
+ return false;
+ }
+ }
+
+ /** Removes the specified child of the object from the object's selection */
+ public void removeAccessibleSelection(int i) {
+ try {
+ unoAccessibleSelection.deselectAccessibleChild(i);
+ } catch (com.sun.star.uno.Exception e) {
+ }
+ }
+
+ /** Causes every child of the object to be selected if the object supports multiple selection */
+ public void selectAllAccessibleSelection() {
+ try {
+ unoAccessibleSelection.selectAllAccessibleChildren();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleStateAdapter.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleStateAdapter.java
new file mode 100644
index 000000000000..ea1979a545ed
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleStateAdapter.java
@@ -0,0 +1,214 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.accessibility.AccessibleStateType;
+import com.sun.star.accessibility.XAccessibleStateSet;
+
+public class AccessibleStateAdapter {
+
+ private static final AccessibleState[] stateTypeMap = {
+ null,
+ AccessibleState.ACTIVE,
+ AccessibleState.ARMED,
+ AccessibleState.BUSY,
+ AccessibleState.CHECKED,
+ AccessibleExtendedState.DEFUNCT,
+ AccessibleState.EDITABLE,
+ AccessibleState.ENABLED,
+ AccessibleState.EXPANDABLE,
+ AccessibleState.EXPANDED,
+ AccessibleState.FOCUSABLE,
+ AccessibleState.FOCUSED,
+ AccessibleState.HORIZONTAL,
+ AccessibleState.ICONIFIED,
+ AccessibleExtendedState.INDETERMINATE,
+ AccessibleExtendedState.MANAGES_DESCENDANTS,
+ AccessibleState.MODAL,
+ AccessibleState.MULTI_LINE,
+ AccessibleState.MULTISELECTABLE,
+ AccessibleState.OPAQUE,
+ AccessibleState.PRESSED,
+ AccessibleState.RESIZABLE,
+ AccessibleState.SELECTABLE,
+ AccessibleState.SELECTED,
+ AccessibleExtendedState.SENSITIVE,
+ AccessibleState.SHOWING,
+ AccessibleState.SINGLE_LINE,
+ AccessibleExtendedState.STALE,
+ AccessibleState.TRANSIENT,
+ AccessibleState.VERTICAL,
+ AccessibleState.VISIBLE
+ };
+
+ private static void printToplevelStateMessage(AccessibleState s, java.awt.Component c) {
+ System.err.println("*** ERROR *** " + s + " state is a toplevel window state " + c);
+ }
+
+ private static String getDisplayName(java.awt.Component c) {
+ javax.accessibility.Accessible a = (javax.accessibility.Accessible) c;
+ if( a != null) {
+ javax.accessibility.AccessibleContext ac = a.getAccessibleContext();
+ return "[" + ac.getAccessibleRole() + "] " + ac.getAccessibleName();
+ } else {
+ return c.toString();
+ }
+ }
+
+ private static void printOutOfSyncMessage(AccessibleState s, java.awt.Component c, boolean enabled) {
+ System.err.println("*** ERROR *** " + s + " state out of sync (UNO state set: " + !enabled + ", Java component state: " + enabled + ") for " + getDisplayName(c));
+ }
+
+ public static AccessibleState getAccessibleState(Object any) {
+ try {
+ if (AnyConverter.isShort(any)) {
+ return getAccessibleState(AnyConverter.toShort(any));
+ }
+ return null;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return null;
+ }
+ }
+
+ public static AccessibleState getAccessibleState(short unoStateType) {
+ if (unoStateType > 0 && unoStateType < stateTypeMap.length) {
+ return stateTypeMap[unoStateType];
+ }
+ return null;
+ }
+
+ public static AccessibleStateSet getDefunctStateSet() {
+ AccessibleStateSet ass = new AccessibleStateSet();
+ ass.add(AccessibleExtendedState.DEFUNCT);
+ return ass;
+ }
+
+ public static void setComponentState(java.awt.Component c,
+ XAccessibleStateSet xAccessibleStateSet) {
+
+ try {
+ if (xAccessibleStateSet != null) {
+ // Set the boundings of the component if it is visible ..
+ if (!xAccessibleStateSet.contains(AccessibleStateType.VISIBLE)) {
+ c.setVisible(false);
+ }
+ // Set the components' enabled state ..
+ if (!xAccessibleStateSet.contains(AccessibleStateType.ENABLED)) {
+ c.setEnabled(false);
+ }
+ // Set the components' focusable state ..
+ if (!xAccessibleStateSet.contains(AccessibleStateType.FOCUSABLE)) {
+ c.setFocusable(false);
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ public static AccessibleStateSet getAccessibleStateSet(java.awt.Component c,
+ XAccessibleStateSet xAccessibleStateSet) {
+
+ try {
+ if (xAccessibleStateSet != null) {
+ AccessibleStateSet as = new AccessibleStateSet();
+ short[] unoStateTypes = xAccessibleStateSet.getStates();
+ for (int i=0; i<unoStateTypes.length; i++) {
+ if (unoStateTypes[i] > 0 &&
+ unoStateTypes[i] < stateTypeMap.length) {
+ as.add(stateTypeMap[unoStateTypes[i]]);
+ }
+ }
+
+ // Note: COLLAPSED does not exists in the UAA.
+ if (as.contains(AccessibleState.EXPANDABLE) &&
+ ! as.contains(AccessibleState.EXPANDED)) {
+ as.add(AccessibleState.COLLAPSED);
+ }
+
+ // Sync office and Java FOCUSED state
+ boolean isFocusInSync;
+ if (c.isFocusOwner()) {
+ isFocusInSync = !as.add(AccessibleState.FOCUSED);
+ } else {
+ isFocusInSync = !as.remove(AccessibleState.FOCUSED);
+ }
+
+ // Sync office and Java ACTIVE state
+ boolean isActiveInSync;
+ if (c instanceof java.awt.Window && ((java.awt.Window) c).isActive()) {
+ isActiveInSync = !as.add(AccessibleState.ACTIVE);
+ } else {
+ isActiveInSync = !as.remove(AccessibleState.ACTIVE);
+ }
+
+ // Report out-of-sync messages
+ if (!Build.PRODUCT) {
+ if (!isFocusInSync) {
+ printOutOfSyncMessage(AccessibleState.FOCUSED, c, c.isFocusOwner());
+ }
+ if (!isActiveInSync) {
+ printOutOfSyncMessage(AccessibleState.ACTIVE, c, ((java.awt.Window) c).isActive());
+ }
+ if (as.contains(AccessibleState.ENABLED) != c.isEnabled()) {
+ printOutOfSyncMessage(AccessibleState.ENABLED, c, c.isEnabled());
+ }
+ if (as.contains(AccessibleState.FOCUSABLE) != c.isFocusable()) {
+ printOutOfSyncMessage(AccessibleState.FOCUSABLE, c, c.isFocusable());
+ }
+ if (as.contains(AccessibleState.SHOWING) != c.isShowing()) {
+ printOutOfSyncMessage(AccessibleState.SHOWING, c, c.isShowing());
+ }
+ if (as.contains(AccessibleState.VISIBLE) != c.isVisible()) {
+ printOutOfSyncMessage(AccessibleState.VISIBLE, c, c.isVisible());
+ }
+
+ // The following states are for toplevel windows only
+ if (! (c instanceof java.awt.Window)) {
+ if (as.contains(AccessibleState.ACTIVE)) {
+ printToplevelStateMessage(AccessibleState.ACTIVE, c);
+ }
+ if (as.contains(AccessibleState.ICONIFIED)) {
+ printToplevelStateMessage(AccessibleState.ICONIFIED, c);
+ }
+ if (as.contains(AccessibleState.MODAL)) {
+ printToplevelStateMessage(AccessibleState.MODAL, c);
+ }
+ }
+ }
+ return as;
+ }
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return getDefunctStateSet();
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleTextImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleTextImpl.java
new file mode 100644
index 000000000000..c3bcbde2a71a
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleTextImpl.java
@@ -0,0 +1,678 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.awt.*;
+import com.sun.star.style.*;
+import com.sun.star.uno.*;
+
+import org.openoffice.java.accessibility.logging.*;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleText;
+
+import javax.swing.text.StyleConstants;
+
+/** The GenericAccessibleEditableText mapps the calls to the java AccessibleEditableText
+ * interface to the corresponding methods of the UNO XAccessibleEditableText interface.
+ */
+public class AccessibleTextImpl implements javax.accessibility.AccessibleText {
+ final static double toPointFactor = 1 / ((7 / 10) + 34.5);
+ final static String[] attributeList = {
+ "ParaAdjust", "CharBackColor", "CharWeight", "ParaFirstLineIndent",
+ "CharFontPitch", "CharHeight", "CharColor", "CharPosture",
+ "ParaLeftMargin", "ParaLineSpacing", "ParaTopMargin", "ParaBottomMargin",
+ "CharStrikeout", "CharEscapement", "ParaTabStops", "CharUnderline"
+ };
+
+ final static String[] localeAttributeList = {
+ "CharLocale", "CharLocaleAsian", "CharLocaleComplex"
+ };
+
+ XAccessibleText unoObject;
+ private javax.swing.text.TabSet tabSet = null;
+ private javax.swing.text.TabStop[] tabStops = null;
+ private static Type TextSegmentType = new Type(TextSegment.class);
+ private static Type UnoLocaleType = new Type(com.sun.star.lang.Locale.class);
+
+ /** Creates new GenericAccessibleEditableText object */
+ public AccessibleTextImpl(XAccessibleText xAccessibleText) {
+
+ if (Build.PRODUCT) {
+ unoObject = xAccessibleText;
+ } else {
+ String property = System.getProperty("AccessBridgeLogging");
+ if ((property != null) && (property.indexOf("text") != -1)) {
+ unoObject = new XAccessibleTextLog(xAccessibleText);
+ } else {
+ unoObject = xAccessibleText;
+ }
+ }
+ }
+
+ public AccessibleTextImpl() {
+ }
+
+ public static javax.accessibility.AccessibleText get(com.sun.star.uno.XInterface unoObject) {
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText)
+ UnoRuntime.queryInterface(XAccessibleText.class, unoObject);
+ if (unoAccessibleText != null) {
+ return new AccessibleTextImpl(unoAccessibleText);
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return null;
+ }
+
+ protected static Object convertTextSegment(Object any) {
+ try {
+ if (AnyConverter.isObject(any)) {
+ TextSegment ts = (TextSegment)
+ AnyConverter.toObject(TextSegmentType, any);
+ if (ts != null) {
+ // Since there is nothing like a "range" object in the JAA yet,
+ // the Object[3] is a private negotiation with the JABG
+ Object[] array = { new Integer(ts.SegmentStart),
+ new Integer(ts.SegmentEnd), ts.SegmentText };
+ return array;
+ }
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+
+ return null;
+ }
+
+ /** Returns the locale object.
+ *
+ * Since switching the UI language only takes effect on the next
+ * office start, UI elements can return a cached value here - given
+ * that Java UNO initializes the default locale correctly, this is
+ * the perfect place to grab this cached values.
+ *
+ * However, since there are more sophisticated components with
+ * potentially more than one locale, we first check for the
+ * CharLocale[Asian|Complex] property.
+ */
+
+ protected java.util.Locale getLocale(int index) {
+ try {
+ com.sun.star.beans.PropertyValue[] propertyValues =
+ unoObject.getCharacterAttributes(index, localeAttributeList);
+
+ if (null != propertyValues) {
+ for (int i = 0; i < propertyValues.length; i++) {
+ com.sun.star.lang.Locale unoLocale = (com.sun.star.lang.Locale)
+ AnyConverter.toObject(UnoLocaleType, propertyValues[i]);
+ if (unoLocale != null) {
+ return new java.util.Locale(unoLocale.Language, unoLocale.Country);
+ }
+ }
+ }
+
+ return java.util.Locale.getDefault();
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return java.util.Locale.getDefault();
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return java.util.Locale.getDefault();
+ }
+ }
+
+
+ /** Returns the string after a given index
+ *
+ * The Java word iterator has a different understanding of what
+ * a word is than the word iterator used by OOo, so we use the
+ * Java iterators to ensure maximal compatibility with Java.
+ */
+ public String getAfterIndex(int part, int index) {
+ switch (part) {
+ case AccessibleText.CHARACTER:
+ try {
+ String s = unoObject.getText();
+ return s.substring(index+1, index+2);
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case AccessibleText.WORD:
+ try {
+ String s = unoObject.getText();
+ BreakIterator words = BreakIterator.getWordInstance(getLocale(index));
+ words.setText(s);
+ int start = words.following(index);
+ if (start == BreakIterator.DONE || start >= s.length()) {
+ return null;
+ }
+ int end = words.following(start);
+ if (end == BreakIterator.DONE || end >= s.length()) {
+ return null;
+ }
+ return s.substring(start, end);
+ } catch (IllegalArgumentException e) {
+ return null;
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case AccessibleText.SENTENCE:
+ try {
+ String s = unoObject.getText();
+ BreakIterator sentence =
+ BreakIterator.getSentenceInstance(getLocale(index));
+ sentence.setText(s);
+ int start = sentence.following(index);
+ if (start == BreakIterator.DONE || start >= s.length()) {
+ return null;
+ }
+ int end = sentence.following(start);
+ if (end == BreakIterator.DONE || end >= s.length()) {
+ return null;
+ }
+ return s.substring(start, end);
+ } catch (IllegalArgumentException e) {
+ return null;
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case 4:
+ try {
+ TextSegment ts = unoObject.getTextBehindIndex(index, AccessibleTextType.LINE);
+ return ts.SegmentText;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ // Workaround for #104847#
+ if (index > 0 && getCharCount() == index) {
+ return getAfterIndex(part, index - 1);
+ }
+ return null;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return null;
+ }
+ case 5:
+ try {
+ TextSegment ts = unoObject.getTextBehindIndex(index, AccessibleTextType.ATTRIBUTE_RUN);
+ return ts.SegmentText;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return null;
+ }
+ default:
+ return null;
+ }
+ }
+
+ /** Returns the zero-based offset of the caret */
+ public int getCaretPosition() {
+ try {
+ return unoObject.getCaretPosition();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the start offset within the selected text */
+ public int getSelectionStart() {
+ try {
+ int index = unoObject.getSelectionStart();
+
+ if (index == -1) {
+ index = getCaretPosition();
+ }
+
+ return index;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ protected void setAttribute(javax.swing.text.MutableAttributeSet as,
+ com.sun.star.beans.PropertyValue property) {
+ try {
+ // Map alignment attribute
+ if (property.Name.equals("ParaAdjust")) {
+ ParagraphAdjust adjust = null;
+
+ if (property.Value instanceof ParagraphAdjust) {
+ adjust = (ParagraphAdjust) property.Value;
+ } else if (property.Value instanceof Any) {
+ adjust = (ParagraphAdjust) AnyConverter.toObject(new Type(
+ ParagraphAdjust.class), property.Value);
+ } else {
+ adjust = ParagraphAdjust.fromInt(AnyConverter.toInt(
+ property.Value));
+ }
+
+ if (adjust != null) {
+ if (adjust.equals(ParagraphAdjust.LEFT)) {
+ StyleConstants.setAlignment(as,
+ StyleConstants.ALIGN_LEFT);
+ } else if (adjust.equals(ParagraphAdjust.RIGHT)) {
+ StyleConstants.setAlignment(as,
+ StyleConstants.ALIGN_RIGHT);
+ } else if (adjust.equals(ParagraphAdjust.CENTER)) {
+ StyleConstants.setAlignment(as,
+ StyleConstants.ALIGN_CENTER);
+ } else if (adjust.equals(ParagraphAdjust.BLOCK) ||
+ adjust.equals(ParagraphAdjust.STRETCH)) {
+ StyleConstants.setAlignment(as,
+ StyleConstants.ALIGN_JUSTIFIED);
+ }
+ } else if (Build.DEBUG) {
+ System.err.println(
+ "Invalid property value for key ParaAdjust: " +
+ property.Value.getClass().getName());
+ }
+
+ // Map background color
+ } else if (property.Name.equals("CharBackColor")) {
+ StyleConstants.setBackground(as,
+ new java.awt.Color(AnyConverter.toInt(property.Value)));
+
+ // FIXME: BidiLevel
+ // Set bold attribute
+ } else if (property.Name.equals("CharWeight")) {
+ boolean isBold = AnyConverter.toFloat(property.Value) > 125;
+ StyleConstants.setBold(as, isBold);
+
+ // FIXME: Java 1.4 ComponentAttribute, ComponentElementName, ComposedTextAttribute
+ // Set FirstLineIndent attribute
+ } else if (property.Name.equals("ParaFirstLineIndent")) {
+ StyleConstants.setFirstLineIndent(as,
+ (float) (toPointFactor * AnyConverter.toInt(property.Value)));
+
+ // Set font family attribute
+ } else if (property.Name.equals("CharFontPitch")) {
+ if (AnyConverter.toShort(property.Value) == 2) {
+ StyleConstants.setFontFamily(as, "Proportional");
+ }
+
+ // Set font size attribute
+ } else if (property.Name.equals("CharHeight")) {
+ StyleConstants.setFontSize(as,
+ (int) AnyConverter.toFloat(property.Value));
+
+ // Map foreground color
+ } else if (property.Name.equals("CharColor")) {
+ StyleConstants.setForeground(as,
+ new java.awt.Color(AnyConverter.toInt(property.Value)));
+
+ // FIXME: IconAttribute, IconElementName
+ // Set italic attribute
+ } else if (property.Name.equals("CharPosture")) {
+ FontSlant fs = null;
+
+ if (property.Value instanceof FontSlant) {
+ fs = (FontSlant) property.Value;
+ } else if (property.Value instanceof Any) {
+ fs = (FontSlant) AnyConverter.toObject(new Type(
+ FontSlant.class), property.Value);
+ }
+
+ if (fs != null) {
+ StyleConstants.setItalic(as, FontSlant.ITALIC.equals(fs));
+ }
+
+ // Set left indent attribute
+ } else if (property.Name.equals("ParaLeftMargin")) {
+ StyleConstants.setLeftIndent(as,
+ (float) (toPointFactor * AnyConverter.toInt(property.Value)));
+
+ // Set right indent attribute
+ } else if (property.Name.equals("ParaRightMargin")) {
+ StyleConstants.setRightIndent(as,
+ (float) (toPointFactor * AnyConverter.toInt(property.Value)));
+ }
+ // Set line spacing attribute
+ else if (property.Name.equals("ParaLineSpacing")) {
+ LineSpacing ls = null;
+
+ if (property.Value instanceof LineSpacing) {
+ ls = (LineSpacing) property.Value;
+ } else if (property.Value instanceof Any) {
+ ls = (LineSpacing) AnyConverter.toObject(new Type(
+ LineSpacing.class), property.Value);
+ }
+
+ if (ls != null) {
+ StyleConstants.setLineSpacing(as,
+ (float) (toPointFactor * ls.Height));
+ }
+ }
+ // FIXME: Java 1.4 NameAttribute, Orientation, ResolveAttribute
+ // Set space above attribute
+ else if (property.Name.equals("ParaTopMargin")) {
+ StyleConstants.setSpaceAbove(as,
+ (float) (toPointFactor * AnyConverter.toInt(property.Value)));
+ }
+ // Set space below attribute
+ else if (property.Name.equals("ParaBottomMargin")) {
+ StyleConstants.setSpaceBelow(as,
+ (float) (toPointFactor * AnyConverter.toInt(property.Value)));
+
+ // Set strike through attribute
+ } else if (property.Name.equals("CharStrikeout")) {
+ boolean isStrikeThrough = (FontStrikeout.NONE != AnyConverter.toShort(property.Value));
+ StyleConstants.setStrikeThrough(as, isStrikeThrough);
+
+ // Set sub-/superscript attribute
+ } else if (property.Name.equals("CharEscapement")) {
+ short value = AnyConverter.toShort(property.Value);
+
+ if (value > 0) {
+ StyleConstants.setSuperscript(as, true);
+ } else if (value < 0) {
+ StyleConstants.setSubscript(as, true);
+ }
+
+ // Set tabset attribute
+ } else if (property.Name.equals("ParaTabStops")) {
+ TabStop[] unoTabStops = (TabStop[]) AnyConverter.toArray(property.Value);
+ javax.swing.text.TabStop[] tabStops = new javax.swing.text.TabStop[unoTabStops.length];
+
+ for (int index2 = 0; index2 < unoTabStops.length; index2++) {
+ float pos = (float) (toPointFactor * unoTabStops[index2].Position);
+
+ if (unoTabStops[index2].Alignment.equals(TabAlign.LEFT)) {
+ tabStops[index2] = new javax.swing.text.TabStop(pos,
+ javax.swing.text.TabStop.ALIGN_LEFT,
+ javax.swing.text.TabStop.LEAD_NONE);
+ } else if (unoTabStops[index2].Alignment.equals(
+ TabAlign.CENTER)) {
+ tabStops[index2] = new javax.swing.text.TabStop(pos,
+ javax.swing.text.TabStop.ALIGN_CENTER,
+ javax.swing.text.TabStop.LEAD_NONE);
+ } else if (unoTabStops[index2].Alignment.equals(
+ TabAlign.RIGHT)) {
+ tabStops[index2] = new javax.swing.text.TabStop(pos,
+ javax.swing.text.TabStop.ALIGN_RIGHT,
+ javax.swing.text.TabStop.LEAD_NONE);
+ } else if (unoTabStops[index2].Alignment.equals(
+ TabAlign.DECIMAL)) {
+ tabStops[index2] = new javax.swing.text.TabStop(pos,
+ javax.swing.text.TabStop.ALIGN_DECIMAL,
+ javax.swing.text.TabStop.LEAD_NONE);
+ } else {
+ tabStops[index2] = new javax.swing.text.TabStop(pos);
+ }
+ }
+
+ // Re-use tabSet object if possible to make AttributeSet.equals work
+ if ((this.tabSet == null) ||
+ !java.util.Arrays.equals(tabStops, this.tabStops)) {
+ this.tabStops = tabStops;
+ this.tabSet = new javax.swing.text.TabSet(tabStops);
+ }
+
+ StyleConstants.setTabSet(as, this.tabSet);
+
+ // Set underline attribute
+ } else if (property.Name.equals("CharUnderline")) {
+ boolean isUnderline = (FontUnderline.NONE != AnyConverter.toShort(property.Value));
+ StyleConstants.setUnderline(as, isUnderline);
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ if (Build.DEBUG) {
+ System.err.println("*** ERROR *** " + e.getClass().getName() +
+ " caught for property " + property.Name + ": " +
+ e.getMessage());
+ System.err.println(" value is of type " +
+ property.Value.getClass().getName());
+ }
+ }
+ }
+
+ /** Returns the AttributSet for a given character at a given index */
+ public javax.swing.text.AttributeSet getCharacterAttribute(int index) {
+ try {
+ com.sun.star.beans.PropertyValue[] propertyValues = unoObject.getCharacterAttributes(index,
+ attributeList);
+ javax.swing.text.SimpleAttributeSet attributeSet = new javax.swing.text.SimpleAttributeSet();
+
+ if (null != propertyValues) {
+ for (int i = 0; i < propertyValues.length; i++) {
+ setAttribute(attributeSet, propertyValues[i]);
+ }
+ }
+
+ return attributeSet;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ if ((index > 0) && (getCharCount() == index)) {
+ return getCharacterAttribute(index - 1);
+ }
+ return null;
+ }
+ }
+
+ /** Given a point in local coordinates, return the zero-based index of the character under that point */
+ public int getIndexAtPoint(java.awt.Point point) {
+ try {
+ return unoObject.getIndexAtPoint(new Point(point.x, point.y));
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the end offset within the selected text */
+ public int getSelectionEnd() {
+ try {
+ int index = unoObject.getSelectionEnd();
+
+ if (index == -1) {
+ index = getCaretPosition();
+ }
+
+ return index;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the string before a given index
+ *
+ * The Java word iterator has a different understanding of what
+ * a word is than the word iterator used by OOo, so we use the
+ * Java iterators to ensure maximal compatibility with Java.
+ */
+ public java.lang.String getBeforeIndex(int part, int index) {
+ switch (part) {
+ case AccessibleText.CHARACTER:
+ try {
+ String s = unoObject.getText();
+ return s.substring(index-1, index);
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case AccessibleText.WORD:
+ try {
+ String s = unoObject.getText();
+ BreakIterator words = BreakIterator.getWordInstance(getLocale(index));
+ words.setText(s);
+ int end = words.following(index);
+ end = words.previous();
+ int start = words.previous();
+ if (start == BreakIterator.DONE) {
+ return null;
+ }
+ return s.substring(start, end);
+ } catch (IllegalArgumentException e) {
+ return null;
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case AccessibleText.SENTENCE:
+ try {
+ String s = unoObject.getText();
+ BreakIterator sentence =
+ BreakIterator.getSentenceInstance(getLocale(index));
+ sentence.setText(s);
+ int end = sentence.following(index);
+ end = sentence.previous();
+ int start = sentence.previous();
+ if (start == BreakIterator.DONE) {
+ return null;
+ }
+ return s.substring(start, end);
+ } catch (IllegalArgumentException e) {
+ return null;
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case 4:
+ try {
+ TextSegment ts = unoObject.getTextBeforeIndex(index, AccessibleTextType.LINE);
+ return ts.SegmentText;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ // Workaround for #104847#
+ if (index > 0 && getCharCount() == index) {
+ return getBeforeIndex(part, index - 1);
+ }
+ return null;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return null;
+ }
+ case 5:
+ try {
+ TextSegment ts = unoObject.getTextBeforeIndex(index, AccessibleTextType.ATTRIBUTE_RUN);
+ return ts.SegmentText;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return null;
+ }
+ default:
+ return null;
+ }
+ }
+
+
+ /** Returns the string at a given index
+ *
+ * The Java word iterator has a different understanding of what
+ * a word is than the word iterator used by OOo, so we use the
+ * Java iterators to ensure maximal compatibility with Java.
+ */
+ public java.lang.String getAtIndex(int part, int index) {
+ switch (part) {
+ case AccessibleText.CHARACTER:
+ try {
+ String s = unoObject.getText();
+ return s.substring(index, index + 1);
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case AccessibleText.WORD:
+ try {
+ String s = unoObject.getText();
+ BreakIterator words = BreakIterator.getWordInstance(getLocale(index));
+ words.setText(s);
+ int end = words.following(index);
+ return s.substring(words.previous(), end);
+ } catch (IllegalArgumentException e) {
+ return null;
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case AccessibleText.SENTENCE:
+ try {
+ String s = unoObject.getText();
+ BreakIterator sentence =
+ BreakIterator.getSentenceInstance(getLocale(index));
+ sentence.setText(s);
+ int end = sentence.following(index);
+ return s.substring(sentence.previous(), end);
+ } catch (IllegalArgumentException e) {
+ return null;
+ } catch (IndexOutOfBoundsException e) {
+ return null;
+ }
+ case 4:
+ try {
+ TextSegment ts = unoObject.getTextAtIndex(index, AccessibleTextType.LINE);
+ return ts.SegmentText;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ // Workaround for #104847#
+ if (index > 0 && getCharCount() == index) {
+ return getAtIndex(part, index - 1);
+ }
+ return null;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return null;
+ }
+ case 5:
+ try {
+ TextSegment ts = unoObject.getTextAtIndex(index, AccessibleTextType.ATTRIBUTE_RUN);
+ return ts.SegmentText;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ return null;
+ }
+
+ default:
+ return null;
+ }
+ }
+
+ /** Returns the number of characters (valid indicies) */
+ public int getCharCount() {
+ try {
+ return unoObject.getCharacterCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+
+ return 0;
+ }
+
+ /** Returns the portion of the text that is selected */
+ public java.lang.String getSelectedText() {
+ try {
+ return unoObject.getSelectedText();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+
+ return null;
+ }
+
+ /** Determines the bounding box of the character at the given index into the string */
+ public java.awt.Rectangle getCharacterBounds(int index) {
+ try {
+ Rectangle unoRect = unoObject.getCharacterBounds(index);
+ return new java.awt.Rectangle(unoRect.X, unoRect.Y, unoRect.Width, unoRect.Height);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ if ((index > 0) && (getCharCount() == index)) {
+ return getCharacterBounds(index - 1);
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+
+ return new java.awt.Rectangle();
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/AccessibleValueImpl.java b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleValueImpl.java
new file mode 100644
index 000000000000..cabbf3f5d323
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/AccessibleValueImpl.java
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.XAccessibleValue;
+import com.sun.star.uno.AnyConverter;
+
+/** The AccessibleValueImpl mappes the calls to the java AccessibleValue
+ * interface to the corresponding methods of the UNO XAccessibleValue interface
+ */
+public class AccessibleValueImpl implements javax.accessibility.AccessibleValue {
+ protected XAccessibleValue unoObject;
+
+ /** Creates new AccessibleValueImpl */
+ public AccessibleValueImpl(XAccessibleValue xAccessibleValue) {
+ unoObject = xAccessibleValue;
+ }
+
+ public static java.lang.Number toNumber(java.lang.Object any) {
+ try {
+ if(AnyConverter.isByte(any)) {
+ return new Byte(AnyConverter.toByte(any));
+ } else if (AnyConverter.isShort(any)) {
+ return new Short(AnyConverter.toShort(any));
+ } else if (AnyConverter.isInt(any)) {
+ return new Integer(AnyConverter.toInt(any));
+ } else if (AnyConverter.isLong(any)) {
+ return new Long(AnyConverter.toLong(any));
+ } else if (AnyConverter.isFloat(any)) {
+ return new Float(AnyConverter.toFloat(any));
+ } else if (AnyConverter.isDouble(any)) {
+ return new Double(AnyConverter.toDouble(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+
+ return null;
+ }
+
+ public java.lang.Number getMinimumAccessibleValue() {
+ try {
+ return toNumber(unoObject.getMinimumValue());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public java.lang.Number getCurrentAccessibleValue() {
+ try {
+ return toNumber(unoObject.getCurrentValue());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public java.lang.Number getMaximumAccessibleValue() {
+ try {
+ return toNumber(unoObject.getMaximumValue());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public boolean setCurrentAccessibleValue(java.lang.Number number) {
+ try {
+ return unoObject.setCurrentValue(number);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Alert.java b/accessibility/bridge/org/openoffice/java/accessibility/Alert.java
new file mode 100644
index 000000000000..e853fabecba0
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Alert.java
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleRole;
+import com.sun.star.accessibility.*;
+
+public class Alert extends Dialog {
+
+ protected Alert(java.awt.Frame owner, XAccessibleComponent xAccessibleComponent) {
+ super(owner, xAccessibleComponent);
+ }
+
+ protected Alert(java.awt.Frame owner, String name, XAccessibleComponent xAccessibleComponent) {
+ super(owner, name, xAccessibleComponent);
+ }
+
+ protected Alert(java.awt.Frame owner, String name, boolean modal, XAccessibleComponent xAccessibleComponent) {
+ super(owner, name, modal, xAccessibleComponent);
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ accessibleContext = new AccessibleAlert();
+ accessibleContext.setAccessibleName(getTitle());
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleAlert extends AccessibleDialog {
+
+ protected AccessibleAlert() {
+ super();
+ }
+
+ public AccessibleRole getAccessibleRole() {
+ return AccessibleRole.ALERT;
+ }
+ };
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Application.java b/accessibility/bridge/org/openoffice/java/accessibility/Application.java
new file mode 100644
index 000000000000..c67da714f4df
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Application.java
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+
+public class Application extends java.awt.Frame implements Accessible {
+
+ protected AccessibleContext accessibleContext = null;
+
+ protected Application() {
+ super();
+ }
+
+ public boolean isShowing() {
+ return true;
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Button.java b/accessibility/bridge/org/openoffice/java/accessibility/Button.java
new file mode 100644
index 000000000000..44bccc30ffc1
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Button.java
@@ -0,0 +1,157 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+class Button extends AbstractButton implements javax.accessibility.Accessible {
+
+ public Button(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleButtonListener();
+ }
+
+ protected class AccessibleButtonListener
+ extends AccessibleUNOComponentListener {
+ protected AccessibleButtonListener() {
+ super();
+ }
+
+ protected javax.accessibility.AccessibleContext getContext( Object any ) {
+ try {
+ XAccessible xAccessible = (XAccessible)
+ AnyConverter.toObject( AccessibleObjectFactory.XAccessibleType, any );
+
+ javax.accessibility.Accessible accessible =
+ (javax.accessibility.Accessible) Button.this.getComponent( xAccessible );
+
+ return accessible.getAccessibleContext();
+ } catch( com.sun.star.uno.Exception e ) {
+ return null;
+ }
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.CHILD:
+ java.awt.Component c = getComponent(unoAccessible);
+
+ Object values[] = { null, null };
+
+ if (AnyConverter.isObject(event.OldValue)) {
+ values[0] = getContext( event.OldValue );
+ }
+
+ if (AnyConverter.isObject(event.NewValue)) {
+ values[1] = getContext( event.NewValue);
+ }
+
+ firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ values[0], values[1]);
+ break;
+
+ default:
+ super.notifyEvent(event);
+ }
+ }
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleButton();
+ }
+
+ protected java.awt.Component getComponent(XAccessible unoAccessible) {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(unoAccessible);
+
+ if (c == null) {
+ c = AccessibleObjectFactory.createAccessibleComponent(unoAccessible);
+
+ if (c instanceof javax.accessibility.Accessible) {
+ ((javax.accessibility.Accessible) c).getAccessibleContext()
+ .setAccessibleParent(this);
+ }
+
+ if( c instanceof java.awt.Container ) {
+ AccessibleObjectFactory.populateContainer((java.awt.Container) c, unoAccessible.getAccessibleContext() );
+ }
+ }
+
+ return c;
+ }
+
+ protected class AccessibleButton extends AccessibleAbstractButton {
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.PUSH_BUTTON;
+ }
+
+ /** Returns the number of accessible children of the object */
+ public int getAccessibleChildrenCount() {
+ try {
+ return unoAccessibleContext.getAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the specified Accessible child of the object */
+ public synchronized javax.accessibility.Accessible getAccessibleChild( int i) {
+ try {
+ return (javax.accessibility.Accessible) getComponent( unoAccessibleContext.getAccessibleChild(i) );
+ } catch (com.sun.star.uno.RuntimeException e) {
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ }
+ return null;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ try {
+ java.awt.Component c = getComponent(unoAccessibleComponent.getAccessibleAtPoint(
+ new com.sun.star.awt.Point(p.x, p.y)));
+
+ return (javax.accessibility.Accessible) c;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/CheckBox.java b/accessibility/bridge/org/openoffice/java/accessibility/CheckBox.java
new file mode 100644
index 000000000000..624dfd048c89
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/CheckBox.java
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+class CheckBox extends ToggleButton {
+
+ public CheckBox(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleCheckBox();
+ }
+
+ protected class AccessibleCheckBox extends AccessibleToggleButton {
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.CHECK_BOX;
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/ComboBox.java b/accessibility/bridge/org/openoffice/java/accessibility/ComboBox.java
new file mode 100644
index 000000000000..5f5cf4a34374
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/ComboBox.java
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+import javax.swing.SwingConstants;
+
+
+/**
+ */
+public class ComboBox extends Container {
+ private XAccessibleAction unoAccessibleAction = null;
+
+ public ComboBox(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(javax.accessibility.AccessibleRole.COMBO_BOX, xAccessible,
+ xAccessibleContext);
+ }
+
+ /** Appends the specified component to the end of this container */
+ public java.awt.Component add(java.awt.Component c) {
+ // List should be always the first child
+ if (c instanceof List) {
+ return super.add(c, 0);
+ } else {
+ return super.add(c);
+ }
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleComboBox();
+ }
+
+ protected class AccessibleComboBox extends AccessibleContainer
+ implements javax.accessibility.AccessibleAction {
+ /**
+ * Though the class is abstract, this should be called by all sub-classes
+ */
+ protected AccessibleComboBox() {
+ super();
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the AccessibleAction associated with this object that supports one or more actions */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ if (unoAccessibleAction == null) {
+ unoAccessibleAction = (XAccessibleAction) UnoRuntime.queryInterface(XAccessibleAction.class,
+ unoAccessibleContext);
+
+ if (unoAccessibleAction == null) {
+ return null;
+ }
+ }
+
+ return this;
+ }
+
+ /*
+ * AccessibleAction
+ */
+
+ /** Performs the specified Action on the object */
+ public boolean doAccessibleAction(int param) {
+ if (param == 0) {
+ try {
+ return unoAccessibleAction.doAccessibleAction(0);
+ } catch (com.sun.star.uno.Exception e) {
+ }
+ }
+
+ return false;
+ }
+
+ /** Returns a description of the specified action of the object */
+ public java.lang.String getAccessibleActionDescription(int param) {
+ return javax.swing.UIManager.getString("ComboBox.togglePopupText");
+ }
+
+ /** Returns the number of accessible actions available in this object */
+ public int getAccessibleActionCount() {
+ return 1;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Component.java b/accessibility/bridge/org/openoffice/java/accessibility/Component.java
new file mode 100644
index 000000000000..21043e1f5098
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Component.java
@@ -0,0 +1,740 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+public abstract class Component extends java.awt.Component {
+ public static final Type RectangleType = new Type(com.sun.star.awt.Rectangle.class);
+ public static final Type SelectionType = new Type(com.sun.star.awt.Selection.class);
+
+ protected XAccessible unoAccessible;
+ protected XAccessibleContext unoAccessibleContext;
+ protected XAccessibleComponent unoAccessibleComponent;
+
+ protected boolean disposed = false;
+
+ protected Component(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super();
+ unoAccessible = xAccessible;
+ unoAccessibleContext = xAccessibleContext;
+ unoAccessibleComponent = (XAccessibleComponent)
+ UnoRuntime.queryInterface(XAccessibleComponent.class, xAccessibleContext);
+ // Add the event listener right away, because the global focus notification doesn't
+ // work yet ..
+ XAccessibleEventBroadcaster broadcaster = (XAccessibleEventBroadcaster)
+ UnoRuntime.queryInterface(XAccessibleEventBroadcaster.class,
+ unoAccessibleComponent);
+ if (broadcaster != null) {
+ broadcaster.addEventListener(createEventListener());
+ }
+ }
+
+ /**
+ * Determines whether this <code>Component</code> is showing on screen.
+ * This means that the component must be visible, and it must be in a
+ * <code>container</code> that is visible and showing.
+ * @see #addNotify
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public boolean isShowing() {
+ if (isVisible()) {
+ java.awt.Container parent = getParent();
+ return (parent == null) || parent.isShowing();
+ }
+ return false;
+ }
+
+ /**
+ * Makes this <code>Component</code> displayable by connecting it to a
+ * native screen resource.
+ * This method is called internally by the toolkit and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public void addNotify() {
+ }
+
+ /**
+ * Makes this <code>Component</code> undisplayable by destroying it native
+ * screen resource.
+ * This method is called by the toolkit internally and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #addNotify
+ * @since JDK1.0
+ */
+ public void removeNotify() {
+ }
+
+ /*
+ * Fake the java focus handling. This is necessary to keep OOo focus
+ * in sync with the java focus. See java.awt.DefaultKeyboardFocusManager
+ * for implementation details.
+ **/
+
+ /** Requests focus for this object */
+ public void requestFocus() {
+ }
+
+ /** Requests focus for this object */
+ public boolean requestFocus(boolean temporary) {
+ // Must be a no-op to make focus handling work
+ return true;
+ }
+
+ /** Requests the focus for this object in the containing window */
+ public boolean requestFocusInWindow() {
+ return requestFocusInWindow(false);
+ }
+
+ /** Requests the focus for this object in the containing window */
+ protected boolean requestFocusInWindow(boolean temporary) {
+ if (isFocusable() && isVisible()) {
+ getEventQueue().postEvent(new java.awt.event.FocusEvent(this, java.awt.event.FocusEvent.FOCUS_GAINED, temporary));
+ return true;
+ }
+ return false;
+ }
+
+ public Object[] getAccessibleComponents(Object[] targetSet) {
+ try {
+ java.util.ArrayList list = new java.util.ArrayList(targetSet.length);
+ for (int i=0; i < targetSet.length; i++) {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(
+ (XAccessible) UnoRuntime.queryInterface(XAccessible.class, targetSet[i]));
+ if (c != null) {
+ list.add(c);
+ }
+ }
+ list.trimToSize();
+ return list.toArray();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ protected java.awt.EventQueue getEventQueue() {
+ return java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue();
+ }
+
+ protected class PropertyChangeBroadcaster implements Runnable {
+ String propertyName;
+ Object oldValue;
+ Object newValue;
+
+ public PropertyChangeBroadcaster(String name, Object param1, Object param2) {
+ propertyName = name;
+ oldValue = param1;
+ newValue = param2;
+ }
+
+ public void run() {
+ // Because this code is executed in the DispatchThread, it is better to catch every
+ // exception that might occur
+ try {
+ AccessibleContext ac = accessibleContext;
+ if (ac != null) {
+ ac.firePropertyChange(propertyName, oldValue, newValue);
+ }
+ } catch (java.lang.Exception e) {
+ if (Build.DEBUG) {
+ System.err.println(e.getClass().getName() + " caught propagating " + propertyName + " event: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ protected void firePropertyChange(String property, Object oldValue, Object newValue) {
+ getEventQueue().invokeLater(new PropertyChangeBroadcaster(property, oldValue, newValue));
+ }
+
+ protected void fireStatePropertyChange(AccessibleState state, boolean set) {
+ PropertyChangeBroadcaster broadcaster;
+
+// if (Build.DEBUG) {
+// System.err.println("[" + AccessibleRoleAdapter.getAccessibleRole(unoAccessibleContext.getAccessibleRole()) + "] " +
+// unoAccessibleContext.getAccessibleName() + " is " + (set ? "now " : "no longer ") + state);
+// }
+
+ if (set) {
+ broadcaster = new PropertyChangeBroadcaster(
+ accessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, state);
+ } else {
+ broadcaster = new PropertyChangeBroadcaster(
+ accessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ state, null);
+ }
+ getEventQueue().invokeLater(broadcaster);
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleUNOComponentListener implements XAccessibleEventListener {
+
+ protected AccessibleUNOComponentListener() {
+ }
+
+ protected void setComponentState(short state, boolean enable) {
+ switch (state) {
+ case AccessibleStateType.ACTIVE:
+ // Only frames should be active
+ break;
+ case AccessibleStateType.ARMED:
+ fireStatePropertyChange(AccessibleState.ARMED, enable);
+ break;
+ case AccessibleStateType.CHECKED:
+ fireStatePropertyChange(AccessibleState.CHECKED, enable);
+ break;
+ case AccessibleStateType.ENABLED:
+ setEnabled(enable);
+ // Since we can't access awt.Componet.accessibleContext, we need to fire
+ // this event manually ..
+ fireStatePropertyChange(AccessibleState.ENABLED, enable);
+ break;
+ case AccessibleStateType.FOCUSED:
+ getEventQueue().postEvent(new java.awt.event.FocusEvent(
+ Component.this, enable ?
+ java.awt.event.FocusEvent.FOCUS_GAINED :
+ java.awt.event.FocusEvent.FOCUS_LOST));
+ break;
+ case AccessibleStateType.PRESSED:
+ fireStatePropertyChange(AccessibleState.PRESSED, enable);
+ break;
+ case AccessibleStateType.SELECTED:
+ fireStatePropertyChange(AccessibleState.SELECTED, enable);
+ break;
+ case AccessibleStateType.SENSITIVE:
+ // This state equals ENABLED in OOo (but not in Gtk+) and does not exist in Java 1.5
+ break;
+ case AccessibleStateType.SHOWING:
+// fireStatePropertyChange(AccessibleState.SHOWING, enable);
+ break;
+ case AccessibleStateType.VISIBLE:
+ Component.this.setVisible(enable);
+ break;
+ default:
+ if (Build.DEBUG) {
+ System.err.println("[component]: " + getName() + "unexpected state change " + state);
+ }
+ break;
+ }
+ }
+
+ /** Updates the accessible name and fires the appropriate PropertyChangedEvent */
+ protected void handleNameChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ if (accessibleContext != null) {
+ accessibleContext.setAccessibleName(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the accessible description and fires the appropriate PropertyChangedEvent */
+ protected void handleDescriptionChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ if (accessibleContext != null) {
+ accessibleContext.setAccessibleDescription(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the internal states and fires the appropriate PropertyChangedEvent */
+ protected void handleStateChangedEvent(Object any1, Object any2) {
+ try {
+ if (AnyConverter.isShort(any1)) {
+ setComponentState(AnyConverter.toShort(any1), false);
+ }
+
+ if (AnyConverter.isShort(any2)) {
+ setComponentState(AnyConverter.toShort(any2), true);
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+
+ if ( !disposed ) {
+
+ switch (event.EventId) {
+ case AccessibleEventId.ACTION_CHANGED:
+ firePropertyChange(accessibleContext.ACCESSIBLE_ACTION_PROPERTY,
+ toNumber(event.OldValue), toNumber(event.NewValue));
+ break;
+ case AccessibleEventId.NAME_CHANGED:
+ // Set the accessible name for the corresponding context, which will fire a property
+ // change event itself
+ handleNameChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.DESCRIPTION_CHANGED:
+ // Set the accessible description for the corresponding context, which will fire a property
+ // change event itself - so do not set propertyName !
+ handleDescriptionChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ if (Build.DEBUG) {
+ System.out.println("Unexpected child event for object of role " + getAccessibleContext().getAccessibleRole());
+ }
+ break;
+ case AccessibleEventId.STATE_CHANGED:
+ // Update the internal state set and fire the appropriate PropertyChangedEvent
+ handleStateChangedEvent(event.OldValue, event.NewValue);
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY, null, null);
+ break;
+ case AccessibleEventId.TEXT_CHANGED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_TEXT_PROPERTY,
+ AccessibleTextImpl.convertTextSegment(event.OldValue),
+ AccessibleTextImpl.convertTextSegment(event.NewValue));
+ break;
+ /*
+ * the Java AccessBridge for GNOME maps SELECTION_PROPERTY change events
+ * for objects of role TEXT to object:text-selection-changed
+ */
+ case AccessibleEventId.TEXT_SELECTION_CHANGED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY, null, null);
+ break;
+ case AccessibleEventId.CARET_CHANGED:
+ firePropertyChange(accessibleContext.ACCESSIBLE_CARET_PROPERTY, toNumber(event.OldValue), toNumber(event.NewValue));
+ break;
+ case AccessibleEventId.VALUE_CHANGED:
+ firePropertyChange(accessibleContext.ACCESSIBLE_VALUE_PROPERTY, toNumber(event.OldValue), toNumber(event.NewValue));
+ default:
+ // Warn about unhandled events
+ if(Build.DEBUG) {
+ System.out.println(this + ": unhandled accessibility event id=" + event.EventId);
+ }
+ }
+ }
+ }
+
+ /** Called by OpenOffice process to notify that the UNO component is disposing */
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ disposed = true;
+ AccessibleObjectFactory.disposing(Component.this);
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleUNOComponentListener();
+ }
+
+ protected javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** This method actually creates the AccessibleContext object returned by
+ * getAccessibleContext().
+ */
+ protected javax.accessibility.AccessibleContext createAccessibleContext() {
+ return null;
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public final javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ try {
+ AccessibleContext ac = createAccessibleContext();
+ if (ac != null) {
+ // Set accessible name and description here to avoid
+ // unnecessary property change events later ..
+ ac.setAccessibleName(unoAccessibleContext.getAccessibleName());
+ ac.setAccessibleDescription(unoAccessibleContext.getAccessibleDescription());
+ accessibleContext = ac;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ return accessibleContext;
+ }
+
+ protected abstract class AccessibleUNOComponent extends java.awt.Component.AccessibleAWTComponent
+ implements javax.accessibility.AccessibleExtendedComponent {
+
+ protected java.awt.event.ComponentListener accessibleComponentHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when shown/hidden..
+ */
+ protected class AccessibleComponentHandler implements java.awt.event.ComponentListener {
+ public void componentHidden(java.awt.event.ComponentEvent e) {
+ AccessibleUNOComponent.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ AccessibleState.VISIBLE, null);
+ }
+
+ public void componentShown(java.awt.event.ComponentEvent e) {
+ AccessibleUNOComponent.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, AccessibleState.VISIBLE);
+ }
+
+ public void componentMoved(java.awt.event.ComponentEvent e) {
+ }
+
+ public void componentResized(java.awt.event.ComponentEvent e) {
+ }
+ } // inner class AccessibleComponentHandler
+
+ protected java.awt.event.FocusListener accessibleFocusHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when focus events happen
+ */
+ protected class AccessibleFocusHandler implements java.awt.event.FocusListener {
+ public void focusGained(java.awt.event.FocusEvent event) {
+ AccessibleUNOComponent.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, AccessibleState.FOCUSED);
+ if (Build.DEBUG) {
+ System.err.println("[" + getAccessibleRole() + "] " + getAccessibleName() + " is now focused");
+ }
+ }
+ public void focusLost(java.awt.event.FocusEvent event) {
+ AccessibleUNOComponent.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ AccessibleState.FOCUSED, null);
+ if (Build.DEBUG) {
+ System.err.println("[" + getAccessibleRole() + "] " + getAccessibleName() + " is no longer focused");
+ }
+ }
+ } // inner class AccessibleFocusHandler
+
+ protected int propertyChangeListenerCount = 0;
+
+ /**
+ * Add a PropertyChangeListener to the listener list.
+ *
+ * @param listener The PropertyChangeListener to be added
+ */
+ public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (propertyChangeListenerCount++ == 0) {
+ accessibleComponentHandler = new AccessibleComponentHandler();
+ Component.this.addComponentListener(accessibleComponentHandler);
+
+ accessibleFocusHandler = new AccessibleFocusHandler();
+ Component.this.addFocusListener(accessibleFocusHandler);
+ }
+ super.addPropertyChangeListener(listener);
+ }
+
+ /**
+ * Remove a PropertyChangeListener from the listener list.
+ * This removes a PropertyChangeListener that was registered
+ * for all properties.
+ *
+ * @param listener The PropertyChangeListener to be removed
+ */
+ public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (--propertyChangeListenerCount == 0) {
+ Component.this.removeComponentListener(accessibleComponentHandler);
+ accessibleComponentHandler = null;
+
+ Component.this.removeFocusListener(accessibleFocusHandler);
+ accessibleFocusHandler = null;
+ }
+ super.removePropertyChangeListener(listener);
+ }
+
+ /**
+ * Gets the current state set of this object.
+ *
+ * @return an instance of <code>AccessibleStateSet</code>
+ * containing the current state set of the object
+ * @see AccessibleState
+ */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ if (disposed)
+ return AccessibleStateAdapter.getDefunctStateSet();
+
+ try {
+ return AccessibleStateAdapter.getAccessibleStateSet(Component.this,
+ unoAccessibleContext.getAccessibleStateSet());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return AccessibleStateAdapter.getDefunctStateSet();
+ }
+ }
+
+ /** Gets the locale of the component */
+ public java.util.Locale getLocale() throws java.awt.IllegalComponentStateException {
+ try {
+ com.sun.star.lang.Locale unoLocale = unoAccessible.getAccessibleContext().getLocale();
+ return new java.util.Locale(unoLocale.Language, unoLocale.Country);
+ } catch (IllegalAccessibleComponentStateException e) {
+ throw new java.awt.IllegalComponentStateException(e.getMessage());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return java.util.Locale.getDefault();
+ }
+ }
+
+ /*
+ * AccessibleExtendedComponent
+ */
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getBackground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getForeground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setForeground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Cursor getCursor() {
+ // Not supported by UNO accessibility API
+ return null;
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Font getFont() {
+ // FIXME
+ return null;
+ }
+
+ public void setFont(java.awt.Font f) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ // FIXME
+ return null;
+ }
+
+ public boolean isEnabled() {
+ return Component.this.isEnabled();
+ }
+
+ public void setEnabled(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isVisible() {
+ return Component.this.isVisible();
+ }
+
+ public void setVisible(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isShowing() {
+ return Component.this.isShowing();
+ }
+
+ public boolean contains(java.awt.Point p) {
+ try {
+ return unoAccessibleComponent.containsPoint(new com.sun.star.awt.Point(p.x, p.y));
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocationOnScreen();
+// if (Build.DEBUG) {
+// System.err.println("Returning location on screen( " + unoPoint.X + ", " + unoPoint.Y + " )" );
+// }
+ return new java.awt.Point(unoPoint.X, unoPoint.Y);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the location of this component in the form of a point specifying the component's top-left corner */
+ public java.awt.Point getLocation() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocation();
+ return new java.awt.Point( unoPoint.X, unoPoint.Y );
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ try {
+ com.sun.star.awt.Rectangle unoRect = unoAccessibleComponent.getBounds();
+ return new java.awt.Rectangle(unoRect.X, unoRect.Y, unoRect.Width, unoRect.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ try {
+ com.sun.star.awt.Size unoSize = unoAccessibleComponent.getSize();
+ return new java.awt.Dimension(unoSize.Width, unoSize.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ // Not supported by this implementation
+ return null;
+ }
+
+ public boolean isFocusTraversable() {
+ return Component.this.isFocusable();
+ }
+
+ public void requestFocus() {
+ unoAccessibleComponent.grabFocus();
+ }
+
+ public String getToolTipText() {
+ try {
+ XAccessibleExtendedComponent unoAccessibleExtendedComponent = (XAccessibleExtendedComponent)
+ UnoRuntime.queryInterface(XAccessibleExtendedComponent.class, unoAccessibleComponent);
+ if (unoAccessibleExtendedComponent != null) {
+ return unoAccessibleExtendedComponent.getToolTipText();
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ return null;
+ }
+
+ public String getTitledBorderText() {
+ try {
+ XAccessibleExtendedComponent unoAccessibleExtendedComponent = (XAccessibleExtendedComponent)
+ UnoRuntime.queryInterface(XAccessibleExtendedComponent.class, unoAccessibleComponent);
+ if (unoAccessibleExtendedComponent != null) {
+ return unoAccessibleExtendedComponent.getTitledBorderText();
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ return null;
+ }
+
+ public javax.accessibility.AccessibleKeyBinding getAccessibleKeyBinding() {
+ try {
+ XAccessibleAction unoAccessibleAction = (XAccessibleAction)
+ UnoRuntime.queryInterface(XAccessibleAction.class, unoAccessibleComponent);
+ if (unoAccessibleAction != null) {
+ XAccessibleKeyBinding unoAccessibleKeyBinding = unoAccessibleAction.getAccessibleActionKeyBinding(0);
+ if (unoAccessibleKeyBinding != null) {
+ return new AccessibleKeyBinding(unoAccessibleKeyBinding);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ return null;
+ }
+ }
+
+ // Extract a number from a UNO any
+ public static java.lang.Number toNumber(java.lang.Object any) {
+ try {
+ if (AnyConverter.isByte(any)) {
+ return new Byte(AnyConverter.toByte(any));
+ } else if (AnyConverter.isShort(any)) {
+ return new Short(AnyConverter.toShort(any));
+ } else if (AnyConverter.isInt(any)) {
+ return new Integer(AnyConverter.toInt(any));
+ } else if (AnyConverter.isLong(any)) {
+ return new Long(AnyConverter.toLong(any));
+ } else if (AnyConverter.isFloat(any)) {
+ return new Float(AnyConverter.toFloat(any));
+ } else if (AnyConverter.isDouble(any)) {
+ return new Double(AnyConverter.toDouble(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ throw new IllegalArgumentException(e.getMessage());
+ }
+ return null;
+ }
+
+ public String toString() {
+ return UnoRuntime.generateOid(unoAccessible);
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Container.java b/accessibility/bridge/org/openoffice/java/accessibility/Container.java
new file mode 100644
index 000000000000..257cdab8b757
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Container.java
@@ -0,0 +1,763 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+public class Container extends java.awt.Container implements javax.accessibility.Accessible {
+
+ protected XAccessible unoAccessible;
+ protected XAccessibleContext unoAccessibleContext;
+ protected XAccessibleComponent unoAccessibleComponent = null;
+
+ protected javax.accessibility.AccessibleRole accessibleRole;
+ protected javax.accessibility.AccessibleText accessibleText;
+ protected boolean disposed = false;
+
+ protected Container(javax.accessibility.AccessibleRole role,
+ XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ accessibleRole = role;
+ unoAccessible = xAccessible;
+ unoAccessibleContext = xAccessibleContext;
+ unoAccessibleComponent = (XAccessibleComponent)
+ UnoRuntime.queryInterface(XAccessibleComponent.class,
+ xAccessibleContext);
+
+ // Add the event listener right away, because the global focus notification doesn't
+ // work yet ..
+ XAccessibleEventBroadcaster broadcaster = (XAccessibleEventBroadcaster)
+ UnoRuntime.queryInterface(XAccessibleEventBroadcaster.class,
+ unoAccessibleContext);
+ if (broadcaster != null) {
+ broadcaster.addEventListener(createEventListener());
+ }
+ }
+
+ /**
+ * Determines whether this <code>Container</code> is showing on screen.
+ * This means that the component must be visible, and it must be in a
+ * <code>container</code> that is visible and showing.
+ * @see #addNotify
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public boolean isShowing() {
+ if (isVisible()) {
+ java.awt.Container parent = getParent();
+ return (parent == null) || parent.isShowing();
+ }
+ return false;
+ }
+
+ /**
+ * Makes this <code>Container</code> displayable by connecting it to a
+ * native screen resource.
+ * This method is called internally by the toolkit and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public void addNotify() {
+ }
+
+ /**
+ * Makes this <code>Container</code> undisplayable by destroying it native
+ * screen resource.
+ * This method is called by the toolkit internally and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #addNotify
+ * @since JDK1.0
+ */
+ public void removeNotify() {
+ }
+
+ /*
+ * Fake the java focus handling. This is necessary to keep OOo focus
+ * in sync with the java focus. See java.awt.DefaultKeyboardFocusManager
+ * for implementation details.
+ **/
+
+ /** Requests focus for this object */
+ public void requestFocus() {
+ }
+
+ /** Requests focus for this object */
+ public boolean requestFocus(boolean temporary) {
+ // Must be a no-op to make focus handling work
+ return true;
+ }
+
+ /** Requests the focus for this object in the containing window */
+ public boolean requestFocusInWindow() {
+ return requestFocusInWindow(false);
+ }
+
+ /** Requests the focus for this object in the containing window */
+ protected boolean requestFocusInWindow(boolean temporary) {
+ if (isFocusable() && isVisible()) {
+ getEventQueue().postEvent(new java.awt.event.FocusEvent(this, java.awt.event.FocusEvent.FOCUS_GAINED, temporary));
+ return true;
+ }
+ return false;
+ }
+
+ public Object[] getAccessibleComponents(Object[] targetSet) {
+ try {
+ java.util.ArrayList list = new java.util.ArrayList(targetSet.length);
+ for (int i=0; i < targetSet.length; i++) {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(
+ (XAccessible) UnoRuntime.queryInterface(XAccessible.class, targetSet[i]));
+ if (c != null) {
+ list.add(c);
+ }
+ }
+ list.trimToSize();
+ return list.toArray();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ protected java.awt.EventQueue getEventQueue() {
+ return java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue();
+ }
+
+ protected class PropertyChangeBroadcaster implements Runnable {
+ String propertyName;
+ Object oldValue;
+ Object newValue;
+
+ public PropertyChangeBroadcaster(String name, Object param1, Object param2) {
+ propertyName = name;
+ oldValue = param1;
+ newValue = param2;
+ }
+
+ public void run() {
+ // Because this code is executed in the DispatchThread, it is better tocatch every
+ // exception that might occur
+ try {
+ AccessibleContext ac = Container.this.accessibleContext;
+ if (ac != null) {
+ ac.firePropertyChange(propertyName, oldValue, newValue);
+ }
+ } catch (java.lang.Exception e) {
+ if (Build.DEBUG) {
+ System.err.println(e.getClass().getName() + " caught propagating " + propertyName + " event: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ protected void firePropertyChange(String property, Object oldValue, Object newValue) {
+ getEventQueue().invokeLater(new PropertyChangeBroadcaster(property, oldValue, newValue));
+ }
+
+ protected void fireStatePropertyChange(AccessibleState state, boolean set) {
+ PropertyChangeBroadcaster broadcaster;
+ if (set) {
+ broadcaster = new PropertyChangeBroadcaster(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, state);
+ } else {
+ broadcaster = new PropertyChangeBroadcaster(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ state, null);
+ }
+ getEventQueue().invokeLater(broadcaster);
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleContainerListener implements XAccessibleEventListener {
+
+ protected AccessibleContainerListener() {
+ }
+
+ protected java.awt.EventQueue getEventQueue() {
+ return java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue();
+ }
+
+ protected void setComponentState(short state, boolean enable) {
+ switch (state) {
+ case AccessibleStateType.ACTIVE:
+ // Only frames should be active
+ break;
+ case AccessibleStateType.ENABLED:
+ setEnabled(enable);
+ // Since we can't access awt.Componet.accessibleContext, we need to fire
+ // this event manually ..
+ fireStatePropertyChange(AccessibleState.ENABLED, enable);
+ break;
+ case AccessibleStateType.FOCUSED:
+ getEventQueue().postEvent(new java.awt.event.FocusEvent(
+ Container.this, enable ?
+ java.awt.event.FocusEvent.FOCUS_GAINED :
+ java.awt.event.FocusEvent.FOCUS_LOST));
+ break;
+ case AccessibleStateType.SELECTED:
+ fireStatePropertyChange(AccessibleState.SELECTED, enable);
+ break;
+ case AccessibleStateType.SENSITIVE:
+ // This state equals ENABLED in OOo (but not in Gtk+) and does not exist in Java 1.5
+ break;
+ case AccessibleStateType.SHOWING:
+ case AccessibleStateType.VISIBLE:
+ setVisible(enable);
+ break;
+ default:
+ if (Build.DEBUG) {
+ System.err.println(Container.this + "unexpected state change " + state);
+ }
+ break;
+ }
+ }
+ /** Updates the accessible name and fires the appropriate PropertyChangedEvent */
+ protected void handleNameChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ if (accessibleContext != null) {
+ accessibleContext.setAccessibleName(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the accessible description and fires the appropriate PropertyChangedEvent */
+ protected void handleDescriptionChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ if (accessibleContext != null) {
+ accessibleContext.setAccessibleDescription(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the internal states and fires the appropriate PropertyChangedEvent */
+ protected void handleStateChangedEvent(Object any1, Object any2) {
+ try {
+ if (AnyConverter.isShort(any1)) {
+ setComponentState(AnyConverter.toShort(any1), false);
+ }
+
+ if (AnyConverter.isShort(any2)) {
+ setComponentState(AnyConverter.toShort(any2), true);
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /* This event is only necessary because some objects in the office don't know their parent
+ * and are therefor unable to revoke and re-insert themselves.
+ */
+ protected void handleAllChildrenChangedEvent() {
+ javax.accessibility.Accessible parent = (javax.accessibility.Accessible) getParent();
+ if (parent != null) {
+ javax.accessibility.AccessibleContext parentAC = parent.getAccessibleContext();
+ if (parentAC != null) {
+
+ parentAC.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ Container.this,
+ null);
+
+ AccessibleObjectFactory.clearContainer(Container.this);
+ AccessibleObjectFactory.populateContainer(Container.this, unoAccessibleContext);
+
+ parentAC.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null,
+ Container.this);
+ }
+ }
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+
+ if ( !disposed ) {
+
+ switch (event.EventId) {
+ case AccessibleEventId.NAME_CHANGED:
+ // Set the accessible name for the corresponding context, which will fire a property
+ // change event itself
+ handleNameChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.DESCRIPTION_CHANGED:
+ // Set the accessible description for the corresponding context, which will fire a property
+ // change event itself - so do not set propertyName !
+ handleDescriptionChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.STATE_CHANGED:
+ // Update the internal state set and fire the appropriate PropertyChangedEvent
+ handleStateChangedEvent(event.OldValue, event.NewValue);
+ break;
+ case AccessibleEventId.TEXT_CHANGED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_TEXT_PROPERTY,
+ AccessibleTextImpl.convertTextSegment(event.OldValue),
+ AccessibleTextImpl.convertTextSegment(event.NewValue));
+ break;
+ case AccessibleEventId.CHILD:
+ if (AnyConverter.isObject(event.OldValue)) {
+ AccessibleObjectFactory.removeChild(Container.this, event.OldValue);
+ } else if (AnyConverter.isObject(event.NewValue)) {
+ AccessibleObjectFactory.addChild(Container.this, event.NewValue);
+ }
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY, null, null);
+ break;
+ /*
+ * the Java AccessBridge for GNOME maps SELECTION_PROPERTY change events
+ * for objects of role TEXT to object:text-selection-changed
+ */
+ case AccessibleEventId.TEXT_SELECTION_CHANGED:
+ case AccessibleEventId.SELECTION_CHANGED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY, null, null);
+ break;
+ case AccessibleEventId.INVALIDATE_ALL_CHILDREN:
+ handleAllChildrenChangedEvent();
+ break;
+ default:
+ // Warn about unhandled events
+ if(Build.DEBUG) {
+ System.out.println(this + ": unhandled accessibility event id=" + event.EventId);
+ }
+ }
+ }
+ }
+
+ /** Called by OpenOffice process to notify that the UNO component is disposing */
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ disposed = true;
+ AccessibleObjectFactory.disposing(Container.this);
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleContainerListener();
+ }
+
+ protected javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** This method actually creates the AccessibleContext object returned by
+ * getAccessibleContext().
+ */
+ protected javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleContainer();
+ }
+
+ /** Returns the AccessibleContext associated with this object */
+ public final javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ try {
+ AccessibleContext ac = createAccessibleContext();
+ if (ac != null) {
+ // Set accessible name and description here to avoid
+ // unnecessary property change events later ..
+ ac.setAccessibleName(unoAccessibleContext.getAccessibleName());
+ ac.setAccessibleDescription(unoAccessibleContext.getAccessibleDescription());
+ accessibleContext = ac;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleContainer extends java.awt.Container.AccessibleAWTContainer {
+
+ protected AccessibleContainer() {
+ /* Since getAccessibleText() is heavily used by the java access
+ * bridge for gnome and the gnome at-tools, we do a query interface
+ * here and remember the result.
+ */
+ accessibleText = AccessibleTextImpl.get(unoAccessibleContext);
+ }
+
+ protected AccessibleContainer(boolean query) {
+ /* This constructor is explicitly for subclasses that implement
+ * AccessibleHypertext and therefor the default constructor would
+ * bring unnecessary overhead.
+ */
+ }
+
+ protected java.awt.event.ComponentListener accessibleComponentHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when shown/hidden..
+ */
+ protected class AccessibleComponentHandler implements java.awt.event.ComponentListener {
+ public void componentHidden(java.awt.event.ComponentEvent e) {
+ AccessibleContainer.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ AccessibleState.VISIBLE, null);
+ }
+
+ public void componentShown(java.awt.event.ComponentEvent e) {
+ AccessibleContainer.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, AccessibleState.VISIBLE);
+ }
+
+ public void componentMoved(java.awt.event.ComponentEvent e) {
+ }
+
+ public void componentResized(java.awt.event.ComponentEvent e) {
+ }
+ } // inner class AccessibleContainerHandler
+
+ protected java.awt.event.FocusListener accessibleFocusHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when focus events happen
+ */
+ protected class AccessibleFocusHandler implements java.awt.event.FocusListener {
+ public void focusGained(java.awt.event.FocusEvent event) {
+ AccessibleContainer.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, AccessibleState.FOCUSED);
+ if (Build.DEBUG) {
+ System.err.println("[" + getAccessibleRole() + "] " + getAccessibleName() + " is now focused");
+ }
+ }
+ public void focusLost(java.awt.event.FocusEvent event) {
+ AccessibleContainer.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ AccessibleState.FOCUSED, null);
+ if (Build.DEBUG) {
+ System.err.println("[" + getAccessibleRole() + "] " + getAccessibleName() + " is no longer focused");
+ }
+ }
+ } // inner class AccessibleFocusHandler
+
+ protected java.awt.event.ContainerListener accessibleContainerHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when children added/removed.
+ */
+
+ protected class AccessibleContainerHandler implements java.awt.event.ContainerListener {
+ public void componentAdded(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleContainer.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null, ((javax.accessibility.Accessible) c).getAccessibleContext());
+ }
+ }
+ public void componentRemoved(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleContainer.this.firePropertyChange(
+ AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ ((javax.accessibility.Accessible) c).getAccessibleContext(), null);
+ }
+ }
+ }
+
+ protected int propertyChangeListenerCount = 0;
+
+ /**
+ * Add a PropertyChangeListener to the listener list.
+ *
+ * @param listener The PropertyChangeListener to be added
+ */
+ public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (propertyChangeListenerCount++ == 0) {
+ accessibleFocusHandler = new AccessibleFocusHandler();
+ Container.this.addFocusListener(accessibleFocusHandler);
+
+ accessibleContainerHandler = new AccessibleContainerHandler();
+ Container.this.addContainerListener(accessibleContainerHandler);
+
+ accessibleComponentHandler = new AccessibleComponentHandler();
+ Container.this.addComponentListener(accessibleComponentHandler);
+ }
+ super.addPropertyChangeListener(listener);
+ }
+
+ /**
+ * Remove a PropertyChangeListener from the listener list.
+ * This removes a PropertyChangeListener that was registered
+ * for all properties.
+ *
+ * @param listener The PropertyChangeListener to be removed
+ */
+ public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (--propertyChangeListenerCount == 0) {
+ Container.this.removeComponentListener(accessibleComponentHandler);
+ accessibleComponentHandler = null;
+
+ Container.this.removeContainerListener(accessibleContainerHandler);
+ accessibleContainerHandler = null;
+
+ Container.this.removeFocusListener(accessibleFocusHandler);
+ accessibleFocusHandler = null;
+ }
+ super.removePropertyChangeListener(listener);
+ }
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return accessibleRole;
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ return accessibleText;
+ }
+
+ /**
+ * Gets the current state set of this object.
+ *
+ * @return an instance of <code>AccessibleStateSet</code>
+ * containing the current state set of the object
+ * @see AccessibleState
+ */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ if (disposed)
+ return AccessibleStateAdapter.getDefunctStateSet();
+
+ try {
+ return AccessibleStateAdapter.getAccessibleStateSet(Container.this,
+ unoAccessibleContext.getAccessibleStateSet());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return AccessibleStateAdapter.getDefunctStateSet();
+ }
+ }
+
+ /** Returns the AccessibleSelection interface for this object */
+ public javax.accessibility.AccessibleSelection getAccessibleSelection() {
+ try {
+ XAccessibleSelection unoAccessibleSelection = (XAccessibleSelection)
+ UnoRuntime.queryInterface(XAccessibleSelection.class, unoAccessibleContext);
+ if (unoAccessibleSelection != null) {
+ return new AccessibleSelectionImpl(unoAccessibleSelection);
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+
+ return null;
+ }
+
+ /** Gets the locale of the component */
+ public java.util.Locale getLocale() throws java.awt.IllegalComponentStateException {
+ try {
+ com.sun.star.lang.Locale unoLocale = unoAccessible.getAccessibleContext().getLocale();
+ return new java.util.Locale(unoLocale.Language, unoLocale.Country);
+ } catch (IllegalAccessibleComponentStateException e) {
+ throw new java.awt.IllegalComponentStateException(e.getMessage());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return super.getLocale();
+ }
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getBackground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getForeground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setForeground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Cursor getCursor() {
+ // Not supported by UNO accessibility API
+ return null;
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Font getFont() {
+ // FIXME
+ return null;
+ }
+
+ public void setFont(java.awt.Font f) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ // FIXME
+ return null;
+ }
+
+ public boolean isEnabled() {
+ return Container.this.isEnabled();
+ }
+
+ public void setEnabled(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isVisible() {
+ return Container.this.isVisible();
+ }
+
+ public void setVisible(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isShowing() {
+ return Container.this.isShowing();
+ }
+
+ public boolean contains(java.awt.Point p) {
+ try {
+ return unoAccessibleComponent.containsPoint(new com.sun.star.awt.Point(p.x, p.y));
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocationOnScreen();
+ return new java.awt.Point(unoPoint.X, unoPoint.Y);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the location of this component in the form of a point specifying the component's top-left corner */
+ public java.awt.Point getLocation() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocation();
+ return new java.awt.Point( unoPoint.X, unoPoint.Y );
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ try {
+ com.sun.star.awt.Rectangle unoRect = unoAccessibleComponent.getBounds();
+ return new java.awt.Rectangle(unoRect.X, unoRect.Y, unoRect.Width, unoRect.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ try {
+ com.sun.star.awt.Size unoSize = unoAccessibleComponent.getSize();
+ return new java.awt.Dimension(unoSize.Width, unoSize.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ try {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(
+ unoAccessibleComponent.getAccessibleAtPoint(new com.sun.star.awt.Point(p.x, p.y)));
+
+ return (javax.accessibility.Accessible) c;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public boolean isFocusTraversable() {
+ return Container.this.isFocusable();
+ }
+
+ public void requestFocus() {
+ unoAccessibleComponent.grabFocus();
+ }
+ }
+
+ public String toString() {
+ return UnoRuntime.generateOid(unoAccessible);
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/DescendantManager.java b/accessibility/bridge/org/openoffice/java/accessibility/DescendantManager.java
new file mode 100644
index 000000000000..5b8c45b716b4
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/DescendantManager.java
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+
+import javax.accessibility.AccessibleState;
+
+
+public abstract class DescendantManager extends Component {
+ protected XAccessibleSelection unoAccessibleSelection = null;
+ protected javax.accessibility.Accessible activeDescendant = null;
+ protected boolean multiselectable = false;
+
+ protected DescendantManager(XAccessible xAccessible,
+ XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ protected DescendantManager(XAccessible xAccessible,
+ XAccessibleContext xAccessibleContext, boolean multiselectable) {
+ super(xAccessible, xAccessibleContext);
+ this.multiselectable = multiselectable;
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleDescendantManagerListener
+ extends AccessibleUNOComponentListener {
+ protected AccessibleDescendantManagerListener() {
+ unoAccessibleSelection = (XAccessibleSelection) UnoRuntime.queryInterface(XAccessibleSelection.class,
+ unoAccessibleContext);
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.SELECTION_CHANGED:
+ firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY,
+ null, null);
+
+ break;
+
+ default:
+ super.notifyEvent(event);
+ }
+ }
+ }
+
+ protected abstract class AccessibleDescendantManager
+ extends AccessibleUNOComponent
+ implements javax.accessibility.AccessibleSelection {
+ protected AccessibleDescendantManager() {
+ unoAccessibleSelection = (XAccessibleSelection) UnoRuntime.queryInterface(XAccessibleSelection.class,
+ unoAccessibleContext);
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Returns the number of accessible children of the object */
+ public int getAccessibleChildrenCount() {
+ try {
+ return unoAccessibleContext.getAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the AccessibleSelection interface for this object */
+ public javax.accessibility.AccessibleSelection getAccessibleSelection() {
+ return (unoAccessibleSelection != null) ? this : null;
+ }
+
+ /*
+ * AccessibleSelection
+ */
+
+ /** Adds the specified Accessible child of the object to the object's selection */
+ public void addAccessibleSelection(int i) {
+ try {
+ unoAccessibleSelection.selectAccessibleChild(i);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Clears the selection in the object, so that no children in the object are selected */
+ public void clearAccessibleSelection() {
+ try {
+ unoAccessibleSelection.clearAccessibleSelection();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Returns the number of Accessible children currently selected */
+ public int getAccessibleSelectionCount() {
+ try {
+ return unoAccessibleSelection.getSelectedAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Determines if the current child of this object is selected */
+ public boolean isAccessibleChildSelected(int i) {
+ try {
+ return unoAccessibleSelection.isAccessibleChildSelected(i);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Removes the specified child of the object from the object's selection */
+ public void removeAccessibleSelection(int i) {
+ try {
+ unoAccessibleSelection.deselectAccessibleChild(i);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Causes every child of the object to be selected if the object supports multiple selection */
+ public void selectAllAccessibleSelection() {
+ try {
+ unoAccessibleSelection.selectAllAccessibleChildren();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Dialog.java b/accessibility/bridge/org/openoffice/java/accessibility/Dialog.java
new file mode 100644
index 000000000000..dcb067368996
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Dialog.java
@@ -0,0 +1,633 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleState;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+public class Dialog extends java.awt.Dialog implements javax.accessibility.Accessible, NativeFrame {
+ protected XAccessibleComponent unoAccessibleComponent;
+
+ boolean opened = false;
+ boolean visible = false;
+ boolean active = false;
+
+ java.awt.EventQueue eventQueue = null;
+
+ protected Dialog(java.awt.Frame owner, XAccessibleComponent xAccessibleComponent) {
+ super(owner);
+ initialize(xAccessibleComponent);
+ }
+
+ protected Dialog(java.awt.Frame owner, String name, XAccessibleComponent xAccessibleComponent) {
+ super(owner, name);
+ initialize(xAccessibleComponent);
+ }
+
+ protected Dialog(java.awt.Frame owner, String name, boolean modal, XAccessibleComponent xAccessibleComponent) {
+ super(owner, name, modal);
+ initialize(xAccessibleComponent);
+ }
+
+ private void initialize(XAccessibleComponent xAccessibleComponent) {
+ unoAccessibleComponent = xAccessibleComponent;
+ eventQueue = java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue();
+ XAccessibleEventBroadcaster broadcaster = (XAccessibleEventBroadcaster)
+ UnoRuntime.queryInterface(XAccessibleEventBroadcaster.class,
+ xAccessibleComponent);
+ if (broadcaster != null) {
+ broadcaster.addEventListener(new AccessibleDialogListener());
+ }
+ }
+
+ java.awt.Component initialComponent = null;
+
+ public java.awt.Component getInitialComponent() {
+ return initialComponent;
+ }
+
+ public void setInitialComponent(java.awt.Component c) {
+ initialComponent = c;
+ }
+
+ public Integer getHWND() {
+ return null;
+ }
+
+ /**
+ * Determines whether this <code>Component</code> is showing on screen.
+ * This means that the component must be visible, and it must be in a
+ * <code>container</code> that is visible and showing.
+ * @see #addNotify
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public boolean isShowing() {
+ if (isVisible()) {
+ java.awt.Container parent = getParent();
+ return (parent == null) || parent.isShowing();
+ }
+ return false;
+ }
+
+ /**
+ * Makes this <code>Component</code> displayable by connecting it to a
+ * native screen resource.
+ * This method is called internally by the toolkit and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public void addNotify() {
+// createHierarchyEvents(0, null, null, 0, false);
+ }
+
+ /**
+ * Makes this <code>Component</code> undisplayable by destroying it native
+ * screen resource.
+ * This method is called by the toolkit internally and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #addNotify
+ * @since JDK1.0
+ */
+ public void removeNotify() {
+ }
+
+ /**
+ * Determines if the object is visible. Note: this means that the
+ * object intends to be visible; however, it may not in fact be
+ * showing on the screen because one of the objects that this object
+ * is contained by is not visible. To determine if an object is
+ * showing on the screen, use <code>isShowing</code>.
+ *
+ * @return true if object is visible; otherwise, false
+ */
+ public boolean isVisible(){
+ return visible;
+ }
+
+ /**
+ * Shows or hides this component depending on the value of parameter
+ * <code>b</code>.
+ * @param b if <code>true</code>, shows this component;
+ * otherwise, hides this component
+ * @see #isVisible
+ * @since JDK1.1
+ */
+ public void setVisible(boolean b) {
+ if (visible != b){
+ visible = b;
+ if (b) {
+ // If it is the first show, fire WINDOW_OPENED event
+ if (!opened) {
+ postWindowEvent(java.awt.event.WindowEvent.WINDOW_OPENED);
+ opened = true;
+ }
+ postComponentEvent(java.awt.event.ComponentEvent.COMPONENT_SHOWN);
+ } else {
+ postComponentEvent(java.awt.event.ComponentEvent.COMPONENT_HIDDEN);
+ }
+ }
+ }
+
+ public void dispose() {
+ setVisible(false);
+ postWindowEvent(java.awt.event.WindowEvent.WINDOW_CLOSED);
+ }
+
+ protected void postWindowEvent(int i) {
+ eventQueue.postEvent(new java.awt.event.WindowEvent(this, i));
+ }
+
+ protected void postComponentEvent(int i) {
+ eventQueue.postEvent(new java.awt.event.ComponentEvent(this, i));
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleDialogListener implements XAccessibleEventListener {
+
+ protected AccessibleDialogListener() {
+ }
+
+ protected void setComponentState(short state, boolean enable) {
+ switch (state) {
+ case AccessibleStateType.ACTIVE:
+ active = enable;
+ if (enable) {
+ AccessibleObjectFactory.postWindowActivated(Dialog.this);
+ } else {
+ AccessibleObjectFactory.postWindowLostFocus(Dialog.this);
+ }
+ break;
+ case AccessibleStateType.ICONIFIED:
+ postWindowEvent(enable ?
+ java.awt.event.WindowEvent.WINDOW_ICONIFIED :
+ java.awt.event.WindowEvent.WINDOW_DEICONIFIED);
+ break;
+ case AccessibleStateType.VISIBLE:
+ Dialog.this.setVisible(enable);
+ break;
+ default:
+ if (Build.DEBUG) {
+ System.err.println("[dialog]: " + getTitle() + "unexpected state change " + state);
+ }
+ break;
+ }
+ }
+
+ /** Updates the accessible name and fires the appropriate PropertyChangedEvent */
+ protected void handleNameChangedEvent(Object any) {
+ try {
+ String title = AnyConverter.toString(any);
+ setTitle(title);
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac!= null) {
+ ac.setAccessibleName(title);
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the accessible description and fires the appropriate PropertyChangedEvent */
+ protected void handleDescriptionChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac!= null) {
+ ac.setAccessibleDescription(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the internal states and fires the appropriate PropertyChangedEvent */
+ protected void handleStateChangedEvent(Object any1, Object any2) {
+ try {
+ if (AnyConverter.isShort(any1)) {
+ setComponentState(AnyConverter.toShort(any1), false);
+ }
+
+ if (AnyConverter.isShort(any2)) {
+ setComponentState(AnyConverter.toShort(any2), true);
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Fires a visible data property change event */
+ protected void handleVisibleDataEvent() {
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac != null) {
+ ac.firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY, null, null);
+ }
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.NAME_CHANGED:
+ // Set the accessible name for the corresponding context, which will fire a property
+ // change event itself
+ handleNameChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.DESCRIPTION_CHANGED:
+ // Set the accessible description for the corresponding context, which will fire a property
+ // change event itself - so do not set propertyName !
+ handleDescriptionChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.STATE_CHANGED:
+ // Update the internal state set and fire the appropriate PropertyChangedEvent
+ handleStateChangedEvent(event.OldValue, event.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ if (AnyConverter.isObject(event.OldValue)) {
+ AccessibleObjectFactory.removeChild(Dialog.this, event.OldValue);
+ } else if (AnyConverter.isObject(event.NewValue)) {
+ AccessibleObjectFactory.addChild(Dialog.this, event.NewValue);
+ }
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ handleVisibleDataEvent();
+ break;
+ default:
+ // Warn about unhandled events
+ if(Build.DEBUG) {
+ System.out.println(this + ": unhandled accessibility event id=" + event.EventId);
+ }
+ }
+ }
+
+ /** Called by OpenOffice process to notify that the UNO component is disposing */
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ }
+ }
+
+ javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ accessibleContext = new AccessibleDialog();
+ accessibleContext.setAccessibleName(getTitle());
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleDialog extends java.awt.Dialog.AccessibleAWTDialog {
+ protected AccessibleDialog() {
+ super();
+ }
+
+ protected java.awt.event.ComponentListener accessibleComponentHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when shown/hidden..
+ */
+ protected class AccessibleComponentHandler implements java.awt.event.ComponentListener {
+ public void componentHidden(java.awt.event.ComponentEvent e) {
+ AccessibleDialog.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ javax.accessibility.AccessibleState.VISIBLE, null);
+ }
+
+ public void componentShown(java.awt.event.ComponentEvent e) {
+ AccessibleDialog.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, javax.accessibility.AccessibleState.VISIBLE);
+ }
+
+ public void componentMoved(java.awt.event.ComponentEvent e) {
+ }
+
+ public void componentResized(java.awt.event.ComponentEvent e) {
+ }
+ } // inner class AccessibleComponentHandler
+
+ protected java.awt.event.WindowListener accessibleWindowHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when window events happen
+ */
+ protected class AccessibleWindowHandler implements java.awt.event.WindowListener {
+ /** Invoked when the Window is set to be the active Window. */
+ public void windowActivated(java.awt.event.WindowEvent e) {
+ AccessibleDialog.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, javax.accessibility.AccessibleState.ACTIVE);
+ if (Build.DEBUG) {
+ System.err.println("[Dialog] " + getTitle() + " is now active");
+ }
+ }
+
+ /** Invoked when a window has been closed as the result of calling dispose on the window. */
+ public void windowClosed(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[Dialog] " + getTitle() + " has been closed");
+ }
+ }
+
+ /** Invoked when the user attempts to close the window from the window's system menu. */
+ public void windowClosing(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[Dialog] " + getTitle() + " is closing");
+ }
+ }
+
+ /** Invoked when a Window is no longer the active Window. */
+ public void windowDeactivated(java.awt.event.WindowEvent e) {
+ AccessibleDialog.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ javax.accessibility.AccessibleState.ACTIVE, null);
+ if (Build.DEBUG) {
+ System.err.println("[Dialog] " + getTitle() + " is no longer active");
+ }
+ }
+
+ /** Invoked when a window is changed from a minimized to a normal state. */
+ public void windowDeiconified(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[Dialog] " + getTitle() + " has been deiconified");
+ }
+ }
+
+ /** Invoked when a window is changed from a normal to a minimized state. */
+ public void windowIconified(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[Dialog] " + getTitle() + " has been iconified");
+ }
+ }
+
+ /** Invoked the first time a window is made visible. */
+ public void windowOpened(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[Dialog] " + getTitle() + " has been opened");
+ }
+ }
+
+ } // inner class AccessibleWindowHandler
+
+ protected java.awt.event.ContainerListener accessibleContainerHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when children added/removed.
+ */
+
+ protected class AccessibleContainerHandler implements java.awt.event.ContainerListener {
+ public void componentAdded(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleDialog.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null, ((javax.accessibility.Accessible) c).getAccessibleContext());
+ }
+ }
+ public void componentRemoved(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleDialog.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ ((javax.accessibility.Accessible) c).getAccessibleContext(), null);
+ }
+ }
+ }
+
+ protected int propertyChangeListenerCount = 0;
+
+ /**
+ * Add a PropertyChangeListener to the listener list.
+ *
+ * @param listener The PropertyChangeListener to be added
+ */
+ public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (propertyChangeListenerCount++ == 0) {
+ accessibleWindowHandler = new AccessibleWindowHandler();
+ Dialog.this.addWindowListener(accessibleWindowHandler);
+
+ accessibleContainerHandler = new AccessibleContainerHandler();
+ Dialog.this.addContainerListener(accessibleContainerHandler);
+
+ accessibleComponentHandler = new AccessibleComponentHandler();
+ Dialog.this.addComponentListener(accessibleComponentHandler);
+ }
+ super.addPropertyChangeListener(listener);
+ }
+
+ /**
+ * Remove a PropertyChangeListener from the listener list.
+ * This removes a PropertyChangeListener that was registered
+ * for all properties.
+ *
+ * @param listener The PropertyChangeListener to be removed
+ */
+ public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (--propertyChangeListenerCount == 0) {
+ Dialog.this.removeComponentListener(accessibleComponentHandler);
+ accessibleComponentHandler = null;
+
+ Dialog.this.removeContainerListener(accessibleContainerHandler);
+ accessibleContainerHandler = null;
+
+ Dialog.this.removeWindowListener(accessibleWindowHandler);
+ accessibleWindowHandler = null;
+ }
+ super.removePropertyChangeListener(listener);
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getBackground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getForeground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setForeground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Cursor getCursor() {
+ // Not supported by UNO accessibility API
+ return null;
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Font getFont() {
+ // FIXME
+ return null;
+ }
+
+ public void setFont(java.awt.Font f) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ // FIXME
+ return null;
+ }
+
+ public boolean isEnabled() {
+ return Dialog.this.isEnabled();
+ }
+
+ public void setEnabled(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isVisible() {
+ return Dialog.this.isVisible();
+ }
+
+ public void setVisible(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isShowing() {
+ return Dialog.this.isShowing();
+ }
+
+ public boolean contains(java.awt.Point p) {
+ try {
+ return unoAccessibleComponent.containsPoint(new com.sun.star.awt.Point(p.x, p.y));
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocationOnScreen();
+ return new java.awt.Point(unoPoint.X, unoPoint.Y);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the location of this component in the form of a point specifying the component's top-left corner */
+ public java.awt.Point getLocation() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocation();
+ return new java.awt.Point( unoPoint.X, unoPoint.Y );
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ try {
+ com.sun.star.awt.Rectangle unoRect = unoAccessibleComponent.getBounds();
+ return new java.awt.Rectangle(unoRect.X, unoRect.Y, unoRect.Width, unoRect.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ try {
+ com.sun.star.awt.Size unoSize = unoAccessibleComponent.getSize();
+ return new java.awt.Dimension(unoSize.Width, unoSize.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ try {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(
+ unoAccessibleComponent.getAccessibleAtPoint(new com.sun.star.awt.Point(p.x, p.y)));
+
+ return (javax.accessibility.Accessible) c;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public boolean isFocusTraversable() {
+ return Dialog.this.isFocusable();
+ }
+
+ public void requestFocus() {
+ unoAccessibleComponent.grabFocus();
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/FocusTraversalPolicy.java b/accessibility/bridge/org/openoffice/java/accessibility/FocusTraversalPolicy.java
new file mode 100644
index 000000000000..75f6c91354f4
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/FocusTraversalPolicy.java
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+
+public class FocusTraversalPolicy extends java.awt.FocusTraversalPolicy {
+
+ protected javax.accessibility.Accessible getSelectedAccessibleChild(javax.accessibility.Accessible a) {
+ javax.accessibility.AccessibleContext ac = a.getAccessibleContext();
+ if (ac != null) {
+ javax.accessibility.AccessibleSelection as = ac.getAccessibleSelection();
+ if (as != null) {
+ return as.getAccessibleSelection(0);
+ }
+ }
+ return null;
+ }
+
+ /** Returns the Component that should receive the focus after aComponent */
+ public java.awt.Component getComponentAfter(java.awt.Container focusCycleRoot,
+ java.awt.Component aComponent) {
+ return null;
+ }
+
+ /** Returns the Component that should receive the focus before aComponent */
+ public java.awt.Component getComponentBefore(java.awt.Container focusCycleRoot,
+ java.awt.Component aComponent) {
+ return null;
+ }
+
+ /** Returns the default Component to focus */
+ public java.awt.Component getDefaultComponent(java.awt.Container focusCycleRoot) {
+ // getDefaultComponent must not return null for Windows to make them focusable.
+ if (focusCycleRoot instanceof NativeFrame) {
+ java.awt.Component c = ((NativeFrame) focusCycleRoot).getInitialComponent();
+ if (c != null) {
+ return c;
+ }
+ }
+
+ if (focusCycleRoot instanceof javax.accessibility.Accessible) {
+ return (java.awt.Component) getSelectedAccessibleChild((javax.accessibility.Accessible) focusCycleRoot);
+ }
+ return null;
+ }
+
+ /** Returns the first Component in the traversal cycle */
+ public java.awt.Component getFirstComponent(java.awt.Container focusCycleRoot) {
+ return null;
+ }
+
+ /** Returns the Component that should receive the focus when a Window is made visible for the first time */
+ public java.awt.Component getInitialComponent(java.awt.Window window) {
+ if (window instanceof NativeFrame) {
+ return ((NativeFrame) window).getInitialComponent();
+ }
+ return null;
+ }
+
+ /** Returns the last Component in the traversal cycle */
+ public java.awt.Component getLastComponent(java.awt.Container focusCycleRoot) {
+ return null;
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Frame.java b/accessibility/bridge/org/openoffice/java/accessibility/Frame.java
new file mode 100644
index 000000000000..b7f37b2d6b18
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Frame.java
@@ -0,0 +1,646 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+public class Frame extends java.awt.Frame implements javax.accessibility.Accessible, NativeFrame {
+ protected XAccessibleComponent unoAccessibleComponent;
+
+ boolean opened = false;
+ boolean visible = false;
+ boolean active = false;
+
+ java.awt.EventQueue eventQueue = null;
+
+ protected Frame(XAccessibleComponent xAccessibleComponent) {
+ initialize(xAccessibleComponent);
+ }
+
+ protected Frame(String name, XAccessibleComponent xAccessibleComponent) {
+ super(name);
+ initialize(xAccessibleComponent);
+ }
+
+ private void initialize(XAccessibleComponent xAccessibleComponent) {
+ unoAccessibleComponent = xAccessibleComponent;
+ eventQueue = java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue();
+ XAccessibleEventBroadcaster broadcaster = (XAccessibleEventBroadcaster)
+ UnoRuntime.queryInterface(XAccessibleEventBroadcaster.class,
+ unoAccessibleComponent);
+ if (broadcaster != null) {
+ broadcaster.addEventListener(new AccessibleFrameListener());
+ }
+ }
+
+ java.awt.Component initialComponent = null;
+
+ public java.awt.Component getInitialComponent() {
+ return initialComponent;
+ }
+
+ public void setInitialComponent(java.awt.Component c) {
+ initialComponent = c;
+ }
+
+ public Integer getHWND() {
+ return null;
+ }
+
+ /**
+ * Determines whether this <code>Component</code> is showing on screen.
+ * This means that the component must be visible, and it must be in a
+ * <code>container</code> that is visible and showing.
+ * @see #addNotify
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public boolean isShowing() {
+ if (isVisible()) {
+ java.awt.Container parent = getParent();
+ return (parent == null) || parent.isShowing();
+ }
+ return false;
+ }
+
+ /**
+ * Makes this <code>Component</code> displayable by connecting it to a
+ * native screen resource.
+ * This method is called internally by the toolkit and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public void addNotify() {
+// createHierarchyEvents(0, null, null, 0, false);
+ }
+
+ /**
+ * Makes this <code>Component</code> undisplayable by destroying it native
+ * screen resource.
+ * This method is called by the toolkit internally and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #addNotify
+ * @since JDK1.0
+ */
+ public void removeNotify() {
+ }
+
+ /**
+ * Determines if the object is visible. Note: this means that the
+ * object intends to be visible; however, it may not in fact be
+ * showing on the screen because one of the objects that this object
+ * is contained by is not visible. To determine if an object is
+ * showing on the screen, use <code>isShowing</code>.
+ *
+ * @return true if object is visible; otherwise, false
+ */
+ public boolean isVisible(){
+ return visible;
+ }
+
+ /**
+ * Shows or hides this component depending on the value of parameter
+ * <code>b</code>.
+ * @param b if <code>true</code>, shows this component;
+ * otherwise, hides this component
+ * @see #isVisible
+ * @since JDK1.1
+ */
+ public void setVisible(boolean b) {
+ if (visible != b){
+ visible = b;
+ if (b) {
+ // If it is the first show, fire WINDOW_OPENED event
+ if (!opened) {
+ postWindowEvent(java.awt.event.WindowEvent.WINDOW_OPENED);
+ opened = true;
+ }
+ postComponentEvent(java.awt.event.ComponentEvent.COMPONENT_SHOWN);
+ } else {
+ postComponentEvent(java.awt.event.ComponentEvent.COMPONENT_HIDDEN);
+ }
+ }
+ }
+
+ public void dispose() {
+ setVisible(false);
+ postWindowEvent(java.awt.event.WindowEvent.WINDOW_CLOSED);
+ }
+
+ protected void postWindowEvent(int i) {
+ eventQueue.postEvent(new java.awt.event.WindowEvent(this, i));
+ }
+
+ protected void postComponentEvent(int i) {
+ eventQueue.postEvent(new java.awt.event.ComponentEvent(this, i));
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleFrameListener implements XAccessibleEventListener {
+
+ protected AccessibleFrameListener() {
+ }
+
+ // The only expected state changes are ACTIVE and VISIBLE
+ protected void setComponentState(short state, boolean enable) {
+ switch (state) {
+ case AccessibleStateType.ACTIVE:
+ active = enable;
+ if (enable) {
+ AccessibleObjectFactory.postWindowActivated(Frame.this);
+ } else {
+ AccessibleObjectFactory.postWindowLostFocus(Frame.this);
+ }
+ break;
+ case AccessibleStateType.ICONIFIED:
+ if (Build.DEBUG) {
+ System.err.println("[frame]" + getTitle() + (enable ? " is now " : " is no longer ") + "iconified");
+ }
+ postWindowEvent(enable ?
+ java.awt.event.WindowEvent.WINDOW_ICONIFIED :
+ java.awt.event.WindowEvent.WINDOW_DEICONIFIED);
+ break;
+ case AccessibleStateType.VISIBLE:
+ Frame.this.setVisible(enable);
+ break;
+ default:
+ if (Build.DEBUG) {
+ System.err.println("[frame]: " + getTitle() + "unexpected state change " + state);
+ }
+ break;
+ }
+ }
+
+ /** Updates the accessible name and fires the appropriate PropertyChangedEvent */
+ protected void handleNameChangedEvent(Object any) {
+ try {
+ String title = AnyConverter.toString(any);
+ setTitle(title);
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac!= null) {
+ ac.setAccessibleName(title);
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the accessible description and fires the appropriate PropertyChangedEvent */
+ protected void handleDescriptionChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac!= null) {
+ ac.setAccessibleDescription(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the internal states and fires the appropriate PropertyChangedEvent */
+ protected void handleStateChangedEvent(Object any1, Object any2) {
+ try {
+ if (AnyConverter.isShort(any1)) {
+ setComponentState(AnyConverter.toShort(any1), false);
+ }
+
+ if (AnyConverter.isShort(any2)) {
+ setComponentState(AnyConverter.toShort(any2), true);
+ }
+ }
+
+ catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Fires a visible data property change event */
+ protected void handleVisibleDataEvent() {
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac != null) {
+ ac.firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY, null, null);
+ }
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.NAME_CHANGED:
+ // Set the accessible name for the corresponding context, which will fire a property
+ // change event itself
+ handleNameChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.DESCRIPTION_CHANGED:
+ // Set the accessible description for the corresponding context, which will fire a property
+ // change event itself - so do not set propertyName !
+ handleDescriptionChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.STATE_CHANGED:
+ // Update the internal state set and fire the appropriate PropertyChangedEvent
+ handleStateChangedEvent(event.OldValue, event.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ if (AnyConverter.isObject(event.OldValue)) {
+ AccessibleObjectFactory.removeChild(Frame.this, event.OldValue);
+ } else if (AnyConverter.isObject(event.NewValue)) {
+ AccessibleObjectFactory.addChild(Frame.this, event.NewValue);
+ }
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ handleVisibleDataEvent();
+ break;
+ default:
+ // Warn about unhandled events
+ if(Build.DEBUG) {
+ System.out.println(this + ": unhandled accessibility event id=" + event.EventId);
+ }
+ }
+ }
+
+ /** Called by OpenOffice process to notify that the UNO component is disposing */
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ }
+ }
+
+ protected javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ accessibleContext = new AccessibleFrame();
+ accessibleContext.setAccessibleName(getTitle());
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleFrame extends java.awt.Frame.AccessibleAWTFrame {
+ protected AccessibleFrame() {
+ super();
+ }
+
+ protected java.awt.event.ComponentListener accessibleComponentHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when shown/hidden..
+ */
+ protected class AccessibleComponentHandler implements java.awt.event.ComponentListener {
+ public void componentHidden(java.awt.event.ComponentEvent e) {
+ AccessibleFrame.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ javax.accessibility.AccessibleState.VISIBLE, null);
+ }
+
+ public void componentShown(java.awt.event.ComponentEvent e) {
+ AccessibleFrame.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, javax.accessibility.AccessibleState.VISIBLE);
+ }
+
+ public void componentMoved(java.awt.event.ComponentEvent e) {
+ }
+
+ public void componentResized(java.awt.event.ComponentEvent e) {
+ }
+ } // inner class AccessibleComponentHandler
+
+ protected java.awt.event.WindowListener accessibleWindowHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when window events happen
+ */
+ protected class AccessibleWindowHandler implements java.awt.event.WindowListener {
+ /** Invoked when the Window is set to be the active Window. */
+ public void windowActivated(java.awt.event.WindowEvent e) {
+ AccessibleFrame.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, javax.accessibility.AccessibleState.ACTIVE);
+ if (Build.DEBUG) {
+ System.err.println("[frame] " + getTitle() + " is now active");
+ }
+ }
+
+ /** Invoked when a window has been closed as the result of calling dispose on the window. */
+ public void windowClosed(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[frame] " + getTitle() + " has been closed");
+ }
+ }
+
+ /** Invoked when the user attempts to close the window from the window's system menu. */
+ public void windowClosing(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[frame] " + getTitle() + " is closing");
+ }
+ }
+
+ /** Invoked when a Window is no longer the active Window. */
+ public void windowDeactivated(java.awt.event.WindowEvent e) {
+ AccessibleFrame.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ javax.accessibility.AccessibleState.ACTIVE, null);
+ if (Build.DEBUG) {
+ System.err.println("[frame] " + getTitle() + " is no longer active");
+ }
+ }
+
+ /** Invoked when a window is changed from a minimized to a normal state. */
+ public void windowDeiconified(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[frame] " + getTitle() + " is no longer iconified");
+ }
+ }
+
+ /** Invoked when a window is changed from a normal to a minimized state. */
+ public void windowIconified(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[frame] " + getTitle() + " has been iconified");
+ }
+ }
+
+ /** Invoked the first time a window is made visible. */
+ public void windowOpened(java.awt.event.WindowEvent e) {
+ if (Build.DEBUG) {
+ System.err.println("[frame] " + getTitle() + " has been opened");
+ }
+ }
+
+ } // inner class AccessibleWindowHandler
+
+ protected java.awt.event.ContainerListener accessibleContainerHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when children added/removed.
+ */
+
+ protected class AccessibleContainerHandler implements java.awt.event.ContainerListener {
+ public void componentAdded(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleFrame.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null, ((javax.accessibility.Accessible) c).getAccessibleContext());
+ }
+ }
+ public void componentRemoved(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleFrame.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ ((javax.accessibility.Accessible) c).getAccessibleContext(), null);
+ }
+ }
+ }
+
+ protected int propertyChangeListenerCount = 0;
+
+ /**
+ * Add a PropertyChangeListener to the listener list.
+ *
+ * @param listener The PropertyChangeListener to be added
+ */
+ public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (propertyChangeListenerCount++ == 0) {
+ accessibleWindowHandler = new AccessibleWindowHandler();
+ Frame.this.addWindowListener(accessibleWindowHandler);
+
+ accessibleContainerHandler = new AccessibleContainerHandler();
+ Frame.this.addContainerListener(accessibleContainerHandler);
+
+ accessibleComponentHandler = new AccessibleComponentHandler();
+ Frame.this.addComponentListener(accessibleComponentHandler);
+ }
+ super.addPropertyChangeListener(listener);
+ }
+
+ /**
+ * Remove a PropertyChangeListener from the listener list.
+ * This removes a PropertyChangeListener that was registered
+ * for all properties.
+ *
+ * @param listener The PropertyChangeListener to be removed
+ */
+ public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (--propertyChangeListenerCount == 0) {
+ Frame.this.removeComponentListener(accessibleComponentHandler);
+ accessibleComponentHandler = null;
+
+ Frame.this.removeContainerListener(accessibleContainerHandler);
+ accessibleContainerHandler = null;
+
+ Frame.this.removeWindowListener(accessibleWindowHandler);
+ accessibleWindowHandler = null;
+ }
+ super.removePropertyChangeListener(listener);
+ }
+
+ /**
+ * Get the state set of this object.
+ *
+ * @return an instance of AccessibleState containing the current state
+ * of the object
+ * @see AccessibleState
+ */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ javax.accessibility.AccessibleStateSet states = super.getAccessibleStateSet();
+ if ((getExtendedState() & java.awt.Frame.ICONIFIED) > 0) {
+ states.add(javax.accessibility.AccessibleState.ICONIFIED);
+ }
+ return states;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getBackground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getForeground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setForeground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Cursor getCursor() {
+ // Not supported by UNO accessibility API
+ return null;
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Font getFont() {
+ // FIXME
+ return null;
+ }
+
+ public void setFont(java.awt.Font f) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ // FIXME
+ return null;
+ }
+
+ public boolean isEnabled() {
+ return Frame.this.isEnabled();
+ }
+
+ public void setEnabled(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isVisible() {
+ return Frame.this.isVisible();
+ }
+
+ public void setVisible(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isShowing() {
+ return Frame.this.isShowing();
+ }
+
+ public boolean contains(java.awt.Point p) {
+ try {
+ return unoAccessibleComponent.containsPoint(new com.sun.star.awt.Point(p.x, p.y));
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocationOnScreen();
+ return new java.awt.Point(unoPoint.X, unoPoint.Y);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the location of this component in the form of a point specifying the component's top-left corner */
+ public java.awt.Point getLocation() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocation();
+ return new java.awt.Point( unoPoint.X, unoPoint.Y );
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ try {
+ com.sun.star.awt.Rectangle unoRect = unoAccessibleComponent.getBounds();
+ return new java.awt.Rectangle(unoRect.X, unoRect.Y, unoRect.Width, unoRect.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ try {
+ com.sun.star.awt.Size unoSize = unoAccessibleComponent.getSize();
+ return new java.awt.Dimension(unoSize.Width, unoSize.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ try {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(
+ unoAccessibleComponent.getAccessibleAtPoint(new com.sun.star.awt.Point(p.x, p.y)));
+
+ return (javax.accessibility.Accessible) c;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public boolean isFocusTraversable() {
+ return Frame.this.isFocusable();
+ }
+
+ public void requestFocus() {
+ unoAccessibleComponent.grabFocus();
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Icon.java b/accessibility/bridge/org/openoffice/java/accessibility/Icon.java
new file mode 100644
index 000000000000..8ccc97def4d8
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Icon.java
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+
+/**
+ */
+public class Icon extends Component implements javax.accessibility.Accessible {
+ protected Icon(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleIcon();
+ }
+
+ protected class AccessibleIcon extends AccessibleUNOComponent {
+ /**
+ * Though the class is abstract, this should be called by all sub-classes
+ */
+ protected AccessibleIcon() {
+ super();
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleIcon[] getAccessibleIcon() {
+ try {
+ XAccessibleImage unoAccessibleImage = (XAccessibleImage) UnoRuntime.queryInterface(XAccessibleImage.class,
+ unoAccessibleComponent);
+
+ if (unoAccessibleImage != null) {
+ javax.accessibility.AccessibleIcon[] icons = {
+ new AccessibleIconImpl(unoAccessibleImage)
+ };
+
+ return icons;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+
+ return null;
+ }
+
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Label.java b/accessibility/bridge/org/openoffice/java/accessibility/Label.java
new file mode 100644
index 000000000000..9afaa0a1ae37
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Label.java
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+
+/**
+ */
+public class Label extends Component implements javax.accessibility.Accessible {
+ protected Label(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleLabel();
+ }
+
+ protected class AccessibleLabel extends AccessibleUNOComponent {
+ /**
+ * Though the class is abstract, this should be called by all sub-classes
+ */
+ protected AccessibleLabel() {
+ super();
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.LABEL;
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText) UnoRuntime.queryInterface(XAccessibleText.class,
+ unoAccessibleContext);
+
+ if (unoAccessibleText != null) {
+ return new AccessibleTextImpl(unoAccessibleText);
+ } else {
+ return null;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the relation set of this object */
+ public javax.accessibility.AccessibleRelationSet getAccessibleRelationSet() {
+ try {
+ XAccessibleRelationSet unoAccessibleRelationSet = unoAccessibleContext.getAccessibleRelationSet();
+
+ if (unoAccessibleRelationSet == null) {
+ return null;
+ }
+
+ javax.accessibility.AccessibleRelationSet relationSet = new javax.accessibility.AccessibleRelationSet();
+ int count = unoAccessibleRelationSet.getRelationCount();
+
+ for (int i = 0; i < count; i++) {
+ AccessibleRelation unoAccessibleRelation = unoAccessibleRelationSet.getRelation(i);
+
+ switch (unoAccessibleRelation.RelationType) {
+ case AccessibleRelationType.LABEL_FOR:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.LABEL_FOR,
+ getAccessibleComponents(
+ unoAccessibleRelation.TargetSet)));
+
+ break;
+
+ case AccessibleRelationType.MEMBER_OF:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.MEMBER_OF,
+ getAccessibleComponents(
+ unoAccessibleRelation.TargetSet)));
+
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return relationSet;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/List.java b/accessibility/bridge/org/openoffice/java/accessibility/List.java
new file mode 100644
index 000000000000..c0583bf9b692
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/List.java
@@ -0,0 +1,452 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.accessibility.*;
+
+public class List extends DescendantManager implements javax.accessibility.Accessible {
+
+ protected List(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ protected void setActiveDescendant(javax.accessibility.Accessible descendant) {
+ javax.accessibility.Accessible oldAD = activeDescendant;
+ activeDescendant = descendant;
+ firePropertyChange(AccessibleContext.ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
+ oldAD, descendant);
+ }
+
+ protected void setActiveDescendant(Object any) {
+ javax.accessibility.Accessible descendant = null;
+ try {
+ if (AnyConverter.isObject(any)) {
+ XAccessible unoAccessible = (XAccessible) AnyConverter.toObject(
+ AccessibleObjectFactory.XAccessibleType, any);
+ if (unoAccessible != null) {
+ // FIXME: have to handle non transient objects here ..
+ descendant = new ListItem(unoAccessible);
+ if (Build.DEBUG) {
+ try {
+ if (Build.DEBUG) {
+ System.err.println("[List] retrieved active descendant event: new descendant is " +
+ unoAccessible.getAccessibleContext().getAccessibleName());
+ }
+ } catch (java.lang.NullPointerException e) {
+ System.err.println("*** ERROR *** new active descendant not accessible");
+ }
+ }
+ }
+ }
+ setActiveDescendant(descendant);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected void add(XAccessible unoAccessible) {
+ if (unoAccessible != null) {
+ ListItem item = new ListItem(unoAccessible);
+ // The AccessBridge for Windows expects an instance of AccessibleContext
+ // as parameters
+ firePropertyChange(AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null, item.getAccessibleContext());
+ }
+ }
+
+ protected void remove(XAccessible unoAccessible) {
+ if (unoAccessible != null) {
+ ListItem item = new ListItem(unoAccessible);
+ // The AccessBridge for Windows expects an instance of AccessibleContext
+ // as parameters
+ firePropertyChange(AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ item.getAccessibleContext(), null);
+ }
+ }
+
+ protected void add(Object any) {
+ try {
+ add((XAccessible) AnyConverter.toObject(AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected void remove(Object any) {
+ try {
+ remove((XAccessible) AnyConverter.toObject(AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleListListener extends AccessibleDescendantManagerListener {
+
+ protected AccessibleListListener() {
+ super();
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.ACTIVE_DESCENDANT_CHANGED:
+ setActiveDescendant(event.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ if (AnyConverter.isObject(event.OldValue)) {
+ remove(event.OldValue);
+ }
+ if (AnyConverter.isObject(event.NewValue)) {
+ add(event.NewValue);
+ }
+ break;
+ case AccessibleEventId.INVALIDATE_ALL_CHILDREN:
+ // Since List items a transient a child events are mostly used
+ // to attach/detach listeners, it is save to ignore it here
+ break;
+ default:
+ super.notifyEvent(event);
+ }
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleListListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleList();
+ }
+
+ protected class AccessibleList extends AccessibleDescendantManager {
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.LIST;
+ }
+
+ /** Returns the specified Accessible child of the object */
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = List.this.activeDescendant;
+ if ((activeDescendant instanceof ListItem) && xAccessible.equals(((ListItem) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new ListItem(xAccessible);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleComponent.getAccessibleAtPoint(new com.sun.star.awt.Point(p.x, p.y));
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = List.this.activeDescendant;
+ if ((activeDescendant instanceof ListItem) && xAccessible.equals(((ListItem) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new ListItem(xAccessible);
+ }
+ }
+ return child;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /*
+ * AccessibleSelection
+ */
+
+ /** Returns an Accessible representing the specified selected child of the object */
+ public javax.accessibility.Accessible getAccessibleSelection(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleSelection.getSelectedAccessibleChild(i);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = List.this.activeDescendant;
+ if ((activeDescendant instanceof ListItem) && xAccessible.equals(((ListItem) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new ListItem(xAccessible);
+ }
+ } else if (Build.DEBUG) {
+ System.out.println(i + "th selected child is not accessible");
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ if (Build.DEBUG) {
+ System.err.println("IndexOutOfBoundsException caught for AccessibleList.getAccessibleSelection(" + i + ")");
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+ }
+
+ class ListItem extends java.awt.Component implements javax.accessibility.Accessible {
+
+ protected XAccessible unoAccessible;
+
+ public ListItem(XAccessible xAccessible) {
+ unoAccessible = xAccessible;
+ }
+
+ public Object[] create(Object[] targetSet) {
+ try {
+ java.util.ArrayList list = new java.util.ArrayList(targetSet.length);
+ for (int i=0; i < targetSet.length; i++) {
+ XAccessible xAccessible = (XAccessible) UnoRuntime.queryInterface(
+ XAccessible.class, targetSet[i]);
+ if (xAccessible != null) {
+ list.add(new ListItem(xAccessible));
+ }
+ }
+ list.trimToSize();
+ return list.toArray();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ try {
+ XAccessibleContext xAccessibleContext = unoAccessible.getAccessibleContext();
+ if (xAccessibleContext != null) {
+ javax.accessibility.AccessibleContext ac = new AccessibleListItem(xAccessibleContext);
+ if (ac != null) {
+ ac.setAccessibleParent(List.this);
+ accessibleContext = ac;
+ }
+ AccessibleStateAdapter.setComponentState(this, xAccessibleContext.getAccessibleStateSet());
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleListItem extends javax.accessibility.AccessibleContext {
+
+ XAccessibleContext unoAccessibleContext;
+
+ public AccessibleListItem(XAccessibleContext xAccessibleContext) {
+ unoAccessibleContext = xAccessibleContext;
+ }
+
+ /** Returns the accessible name of this object */
+ public String getAccessibleName() {
+ try {
+ return unoAccessibleContext.getAccessibleName();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Sets the accessible name of this object */
+ public void setAccessibleName(String name) {
+ // Not supported
+ }
+
+ /** Returns the accessible name of this object */
+ public String getAccessibleDescription() {
+ try {
+ return unoAccessibleContext.getAccessibleDescription();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Sets the accessible name of this object */
+ public void setAccessibleDescription(String name) {
+ // Not supported
+ }
+
+ /** Returns the accessible role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ try {
+ javax.accessibility.AccessibleRole role = AccessibleRoleAdapter.getAccessibleRole(
+ unoAccessibleContext.getAccessibleRole());
+ return (role != null) ? role : javax.accessibility.AccessibleRole.LABEL;
+ } catch(com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the locale of the component */
+ public java.util.Locale getLocale() throws java.awt.IllegalComponentStateException {
+ try {
+ com.sun.star.lang.Locale unoLocale = unoAccessibleContext.getLocale();
+ return new java.util.Locale(unoLocale.Language, unoLocale.Country);
+ } catch (IllegalAccessibleComponentStateException e) {
+ throw new java.awt.IllegalComponentStateException(e.getMessage());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return List.this.getLocale();
+ }
+ }
+
+ /** Gets the 0-based index of this object in its accessible parent */
+ public int getAccessibleIndexInParent() {
+ try {
+ return unoAccessibleContext.getAccessibleIndexInParent();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the number of accessible children of the object. */
+ public int getAccessibleChildrenCount() {
+ try {
+ return unoAccessibleContext.getAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the specified Accessible child of the object. */
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = List.this.activeDescendant;
+ if ((activeDescendant instanceof ListItem) && ((ListItem) activeDescendant).unoAccessible.equals(xAccessible)) {
+ child = activeDescendant;
+ } else if (xAccessible != null) {
+ child = new ListItem(xAccessible);
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /** Returns the state set of this object */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ try {
+ return AccessibleStateAdapter.getAccessibleStateSet(ListItem.this,
+ unoAccessibleContext.getAccessibleStateSet());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return AccessibleStateAdapter.getDefunctStateSet();
+ }
+ }
+
+ /** Gets the AccessibleComponent associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleComponent getAccessibleComponent() {
+ try {
+ XAccessibleComponent unoAccessibleComponent = (XAccessibleComponent)
+ UnoRuntime.queryInterface(XAccessibleComponent.class, unoAccessibleContext);
+ return (unoAccessibleComponent != null) ?
+ new AccessibleComponentImpl(unoAccessibleComponent) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleAction associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ try {
+ XAccessibleAction unoAccessibleAction = (XAccessibleAction)
+ UnoRuntime.queryInterface(XAccessibleAction.class, unoAccessibleContext);
+ return (unoAccessibleAction != null) ?
+ new AccessibleActionImpl(unoAccessibleAction) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleText associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText)
+ UnoRuntime.queryInterface(XAccessibleText.class, unoAccessibleContext);
+ return (unoAccessibleText != null) ?
+ new AccessibleTextImpl(unoAccessibleText) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleValue associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleValue getAccessibleValue() {
+ try {
+ XAccessibleValue unoAccessibleValue = (XAccessibleValue)
+ UnoRuntime.queryInterface(XAccessibleValue.class, unoAccessibleContext);
+ return (unoAccessibleValue != null) ?
+ new AccessibleValueImpl(unoAccessibleValue) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleIcon[] getAccessibleIcon() {
+ try {
+ XAccessibleImage unoAccessibleImage = (XAccessibleImage)
+ UnoRuntime.queryInterface(XAccessibleImage.class, unoAccessibleContext);
+ if (unoAccessibleImage != null) {
+ javax.accessibility.AccessibleIcon[] icons = { new AccessibleIconImpl(unoAccessibleImage) };
+ return icons;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return null;
+ }
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Menu.java b/accessibility/bridge/org/openoffice/java/accessibility/Menu.java
new file mode 100644
index 000000000000..346baca749b3
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Menu.java
@@ -0,0 +1,328 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+
+
+public class Menu extends AbstractButton
+ implements javax.accessibility.Accessible {
+ private java.util.Vector children;
+ protected XAccessibleSelection unoAccessibleSelection = null;
+
+ protected Menu(XAccessible xAccessible,
+ XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+
+ try {
+ // Create a vector with the correct initial capacity
+ int count = unoAccessibleContext.getAccessibleChildCount();
+ children = new java.util.Vector(count);
+
+ // Fill the vector with objects
+ for (int i = 0; i < count; i++) {
+ java.awt.Component c = getComponent(unoAccessibleContext.getAccessibleChild(i));
+
+ if (c != null) {
+ children.add(c);
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ if (Build.DEBUG) {
+ System.err.println(
+ "RuntimeException caught during menu initialization: " +
+ e.getMessage());
+ }
+
+ if (children == null) {
+ children = new java.util.Vector(0);
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ }
+ }
+
+ protected synchronized void add(XAccessible unoAccessible) {
+ // The AccessBridge for Windows expects an instance of AccessibleContext
+ // as parameters
+ java.awt.Component c = getComponent(unoAccessible);
+
+ if (c != null) {
+ try {
+ children.add(unoAccessible.getAccessibleContext()
+ .getAccessibleIndexInParent(), c);
+ firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null,
+ ((javax.accessibility.Accessible) c).getAccessibleContext());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ }
+
+ protected synchronized void remove(XAccessible unoAccessible) {
+ // The AccessBridge for Windows expects an instance of AccessibleContext
+ // as parameters
+ java.awt.Component c = getComponent(unoAccessible);
+
+ if (c != null) {
+ try {
+ children.remove(c);
+ firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ ((javax.accessibility.Accessible) c).getAccessibleContext(),
+ null);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ }
+
+ protected void add(Object any) {
+ try {
+ add((XAccessible) AnyConverter.toObject(
+ AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected void remove(Object any) {
+ try {
+ remove((XAccessible) AnyConverter.toObject(
+ AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected synchronized int indexOf(Object child) {
+ return children.indexOf(child);
+ }
+
+ protected java.awt.Component getComponent(XAccessible unoAccessible) {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(unoAccessible);
+
+ if (c == null) {
+ c = AccessibleObjectFactory.createAccessibleComponent(unoAccessible);
+
+ if (c instanceof javax.accessibility.Accessible) {
+ ((javax.accessibility.Accessible) c).getAccessibleContext()
+ .setAccessibleParent(this);
+ }
+ }
+
+ return c;
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleMenuListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleMenu();
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleMenuListener
+ extends AccessibleUNOComponentListener {
+ protected AccessibleMenuListener() {
+ super();
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.CHILD:
+
+ if (AnyConverter.isObject(event.OldValue)) {
+ remove(event.OldValue);
+ }
+
+ if (AnyConverter.isObject(event.NewValue)) {
+ add(event.NewValue);
+ }
+
+ break;
+
+ // #i56539# Java 1.5 does not fire ACCESSIBLE_SELECTION_PROPERTY for menus
+ case AccessibleEventId.SELECTION_CHANGED:
+ break;
+
+ default:
+ super.notifyEvent(event);
+ }
+ }
+ }
+
+ protected class AccessibleMenu extends AccessibleAbstractButton
+ implements javax.accessibility.AccessibleSelection {
+ protected AccessibleMenu() {
+ unoAccessibleSelection = (XAccessibleSelection) UnoRuntime.queryInterface(XAccessibleSelection.class,
+ unoAccessibleContext);
+ }
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.MENU;
+ }
+
+ /** Gets the 0-based index of this object in its accessible parent */
+ public int getAccessibleIndexInParent() {
+ if (getAccessibleParent() instanceof Menu) {
+ return ((Menu) getAccessibleParent()).indexOf(Menu.this);
+ } else {
+ return super.getAccessibleIndexInParent();
+ }
+ }
+
+ /** Returns the number of accessible children of the object */
+ public synchronized int getAccessibleChildrenCount() {
+ return children.size();
+ }
+
+ /** Returns the specified Accessible child of the object */
+ public synchronized javax.accessibility.Accessible getAccessibleChild(
+ int i) {
+ try {
+ if (i < children.size()) {
+ return (javax.accessibility.Accessible) children.get(i);
+ } else {
+ return null;
+ }
+ } catch (ArrayIndexOutOfBoundsException e) {
+ return null;
+ }
+ }
+
+ /** Returns the AccessibleSelection interface for this object */
+ public javax.accessibility.AccessibleSelection getAccessibleSelection() {
+ // This method is called to determine the SELECTABLE state of every
+ // child, so don't do the query interface here.
+ return this;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ try {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(unoAccessibleComponent.getAccessibleAtPoint(
+ new com.sun.star.awt.Point(p.x, p.y)));
+
+ return (javax.accessibility.Accessible) c;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /*
+ * AccessibleSelection
+ */
+
+ /** Returns an Accessible representing the specified selected child of the object */
+ public javax.accessibility.Accessible getAccessibleSelection(int i) {
+ try {
+ return (javax.accessibility.Accessible) getComponent(unoAccessibleSelection.getSelectedAccessibleChild(
+ i));
+ } catch (java.lang.Exception e) {
+ /*
+ * Possible exceptions are:
+ * java.lang.NullPointerException
+ * com.sun.star.uno.RuntimeException
+ * com.sun.star.lang.IndexOutOfBoundsException
+ */
+ return null;
+ }
+ }
+
+ /** Adds the specified Accessible child of the object to the object's selection */
+ public void addAccessibleSelection(int i) {
+ try {
+ javax.accessibility.Accessible a = getAccessibleChild(i);
+
+ // selecting menu items invokes the click action in Java 1.5
+ if( a instanceof MenuItem )
+ a.getAccessibleContext().getAccessibleAction().doAccessibleAction(0);
+ else
+ unoAccessibleSelection.selectAccessibleChild(i);
+ } catch (java.lang.Exception e) {
+ /*
+ * Possible exceptions are:
+ * java.lang.NullPointerException
+ * com.sun.star.uno.RuntimeException
+ * com.sun.star.lang.IndexOutOfBoundsException
+ */
+ }
+ }
+
+ /** Clears the selection in the object, so that no children in the object are selected */
+ public void clearAccessibleSelection() {
+ try {
+ unoAccessibleSelection.clearAccessibleSelection();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Returns the number of Accessible children currently selected */
+ public int getAccessibleSelectionCount() {
+ try {
+ return unoAccessibleSelection.getSelectedAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Determines if the current child of this object is selected */
+ public boolean isAccessibleChildSelected(int i) {
+ try {
+ return unoAccessibleSelection.isAccessibleChildSelected(i);
+ } catch (java.lang.Exception e) {
+ /*
+ * Possible exceptions are:
+ * java.lang.NullPointerException
+ * com.sun.star.uno.RuntimeException
+ * com.sun.star.lang.IndexOutOfBoundsException
+ */
+ return false;
+ }
+ }
+
+ /** Removes the specified child of the object from the object's selection */
+ public void removeAccessibleSelection(int i) {
+ if (isAccessibleChildSelected(i)) {
+ clearAccessibleSelection();
+ }
+ }
+
+ /** Causes every child of the object to be selected if the object supports multiple selection */
+ public void selectAllAccessibleSelection() {
+ // not supported
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/MenuContainer.java b/accessibility/bridge/org/openoffice/java/accessibility/MenuContainer.java
new file mode 100644
index 000000000000..ccae0ccadd04
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/MenuContainer.java
@@ -0,0 +1,167 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleContext;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+/**
+ * Specialized container for MenuBar and Popup-Menu(s)
+ * FIXME: join with Menu ?
+ */
+public class MenuContainer extends Container implements javax.accessibility.Accessible {
+
+ protected XAccessibleSelection unoAccessibleSelection = null;
+
+ protected MenuContainer(javax.accessibility.AccessibleRole role, XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(role, xAccessible, xAccessibleContext);
+ }
+
+ protected class AccessibleMenuContainerListener extends AccessibleContainerListener {
+
+ protected AccessibleMenuContainerListener() {
+ super();
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+
+ // #i56539# Java 1.5 does not fire ACCESSIBLE_SELECTION_PROPERTY for menus
+ case AccessibleEventId.SELECTION_CHANGED:
+ break;
+
+ default:
+ super.notifyEvent(event);
+ }
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleMenuContainerListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleMenuContainer();
+ }
+
+ protected class AccessibleMenuContainer extends AccessibleContainer implements javax.accessibility.AccessibleSelection {
+
+ protected AccessibleMenuContainer() {
+ unoAccessibleSelection = (XAccessibleSelection) UnoRuntime.queryInterface(XAccessibleSelection.class,
+ unoAccessibleContext);
+ }
+
+ /** Returns the AccessibleSelection interface for this object */
+ public javax.accessibility.AccessibleSelection getAccessibleSelection() {
+ return this;
+ }
+
+ /*
+ * AccessibleSelection
+ */
+
+ /** Returns an Accessible representing the specified selected child of the object */
+ public javax.accessibility.Accessible getAccessibleSelection(int i) {
+ try {
+ return (javax.accessibility.Accessible) AccessibleObjectFactory.getAccessibleComponent(
+ unoAccessibleSelection.getSelectedAccessibleChild(i));
+ } catch (com.sun.star.uno.Exception e) {
+ return null;
+ }
+ }
+
+ /** Adds the specified Accessible child of the object to the object's selection */
+ public void addAccessibleSelection(int i) {
+ try {
+ javax.accessibility.Accessible a = getAccessibleChild(i);
+
+ // selecting menu items invokes the click action in Java 1.5
+ if( a instanceof MenuItem )
+ a.getAccessibleContext().getAccessibleAction().doAccessibleAction(0);
+ else
+ unoAccessibleSelection.selectAccessibleChild(i);
+ } catch (java.lang.Exception e) {
+ /*
+ * Possible exceptions are:
+ * java.lang.NullPointerException
+ * com.sun.star.uno.RuntimeException
+ * com.sun.star.lang.IndexOutOfBoundsException
+ */
+ }
+ }
+
+ /** Clears the selection in the object, so that no children in the object are selected */
+ public void clearAccessibleSelection() {
+ try {
+ unoAccessibleSelection.clearAccessibleSelection();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Returns the number of Accessible children currently selected */
+ public int getAccessibleSelectionCount() {
+ try {
+ return unoAccessibleSelection.getSelectedAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Determines if the current child of this object is selected */
+ public boolean isAccessibleChildSelected(int i) {
+ try {
+ return unoAccessibleSelection.isAccessibleChildSelected(i);
+ } catch (java.lang.Exception e) {
+ /*
+ * Possible exceptions are:
+ * java.lang.NullPointerException
+ * com.sun.star.uno.RuntimeException
+ * com.sun.star.lang.IndexOutOfBoundsException
+ */
+ return false;
+ }
+ }
+
+ /** Removes the specified child of the object from the object's selection */
+ public void removeAccessibleSelection(int i) {
+ if (isAccessibleChildSelected(i)) {
+ clearAccessibleSelection();
+ }
+ }
+
+ /** Causes every child of the object to be selected if the object supports multiple selection */
+ public void selectAllAccessibleSelection() {
+ // not supported
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/MenuItem.java b/accessibility/bridge/org/openoffice/java/accessibility/MenuItem.java
new file mode 100644
index 000000000000..39aa1b73ce30
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/MenuItem.java
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleEventListener;
+
+
+class MenuItem extends ToggleButton {
+ public MenuItem(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ protected class AccessibleMenuItemListener extends AccessibleUNOComponentListener {
+
+ protected AccessibleMenuItemListener() {
+ }
+
+ protected void setComponentState(short state, boolean enable) {
+
+ // #i56538# menu items in Java 1.5 are ARMED, not SELECTED
+ if( state == com.sun.star.accessibility.AccessibleStateType.SELECTED )
+ fireStatePropertyChange(javax.accessibility.AccessibleState.ARMED, enable);
+ else
+ super.setComponentState(state, enable);
+ }
+ };
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleMenuItemListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleMenuItem();
+ }
+
+ protected class AccessibleMenuItem extends AccessibleToggleButton {
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.MENU_ITEM;
+ }
+
+ /** Gets the 0-based index of this object in its accessible parent */
+ public int getAccessibleIndexInParent() {
+ if (getAccessibleParent() instanceof Menu) {
+ return ((Menu) getAccessibleParent()).indexOf(MenuItem.this);
+ } else {
+ return super.getAccessibleIndexInParent();
+ }
+ }
+
+ /**
+ * Gets the current state set of this object.
+ *
+ * @return an instance of <code>AccessibleStateSet</code>
+ * containing the current state set of the object
+ * @see AccessibleState
+ */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ javax.accessibility.AccessibleStateSet stateSet = super.getAccessibleStateSet();
+
+ // #i56538# menu items in Java do not have SELECTABLE ..
+ stateSet.remove(javax.accessibility.AccessibleState.SELECTABLE);
+
+ // .. and also ARMED insted of SELECTED
+ if( stateSet.remove(javax.accessibility.AccessibleState.SELECTED) )
+ stateSet.add(javax.accessibility.AccessibleState.ARMED);
+
+ return stateSet;
+ }
+
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/NativeFrame.java b/accessibility/bridge/org/openoffice/java/accessibility/NativeFrame.java
new file mode 100644
index 000000000000..bcc4c0dddebc
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/NativeFrame.java
@@ -0,0 +1,35 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+public interface NativeFrame {
+ public java.awt.Component getInitialComponent();
+ public void setInitialComponent(java.awt.Component c);
+// public Integer getHWND();
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Paragraph.java b/accessibility/bridge/org/openoffice/java/accessibility/Paragraph.java
new file mode 100644
index 000000000000..6088bf48eabe
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Paragraph.java
@@ -0,0 +1,222 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleText;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+/**
+ */
+public class Paragraph extends Container implements javax.accessibility.Accessible {
+
+ protected Paragraph(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(javax.accessibility.AccessibleRole.TEXT, xAccessible, xAccessibleContext);
+ }
+
+ protected class AccessibleParagraphListener extends AccessibleContainerListener {
+
+ protected AccessibleParagraphListener() {
+ super();
+ }
+
+ protected void setComponentState(short state, boolean enable) {
+ switch (state) {
+ case AccessibleStateType.EDITABLE:
+ fireStatePropertyChange(javax.accessibility.AccessibleState.EDITABLE, enable);
+ break;
+ case AccessibleStateType.MULTI_LINE:
+ fireStatePropertyChange(javax.accessibility.AccessibleState.MULTI_LINE, enable);
+ break;
+ case AccessibleStateType.SINGLE_LINE:
+ break;
+ default:
+ super.setComponentState(state, enable);
+ break;
+ }
+ }
+
+
+ protected void handleVisibleDataChanged() {
+ if (Paragraph.this.isFocusOwner()) {
+ AccessibleContext ac = accessibleContext;
+ if (ac != null) {
+ AccessibleText at = ac.getAccessibleText();
+ if (at != null) {
+ int pos = at.getCaretPosition();
+ // Simulating a caret event here should help at tools
+ // that re not aware of the paragraph approach of OOo.
+ firePropertyChange(ac.ACCESSIBLE_CARET_PROPERTY,
+ new Integer(-1), new Integer(pos));
+ }
+ }
+ }
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.CARET_CHANGED:
+ firePropertyChange(accessibleContext.ACCESSIBLE_CARET_PROPERTY,
+ Component.toNumber(event.OldValue),
+ Component.toNumber(event.NewValue));
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ // Whenever a paragraph gets inserted above the currently
+ // focused one, this is the only event that will occur for.
+ handleVisibleDataChanged();
+ default:
+ super.notifyEvent(event);
+ break;
+ }
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleParagraphListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleParagraph();
+ }
+
+ protected class AccessibleParagraph extends AccessibleContainer {
+
+ protected AccessibleParagraph() {
+ // Don't do the queryInterface on XAccessibleText already ..
+ super(false);
+ /* Since getAccessibleText() is heavily used by the java access
+ * bridge for gnome and the gnome at-tools, we do a query interface
+ * here and remember the result.
+ */
+ accessibleText = AccessibleHypertextImpl.get(unoAccessibleContext);
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.TEXT;
+ }
+
+ /** Gets the AccessibleEditableText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleEditableText getAccessibleEditableText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleEditableText unoAccessibleText = (XAccessibleEditableText)
+ UnoRuntime.queryInterface(XAccessibleEditableText.class,
+ unoAccessibleComponent);
+ if (unoAccessibleText != null) {
+ return new AccessibleEditableTextImpl(unoAccessibleText);
+ } else {
+ return null;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleAction associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ try {
+ XAccessibleAction unoAccessibleAction = (XAccessibleAction)
+ UnoRuntime.queryInterface(XAccessibleAction.class, unoAccessibleComponent);
+ return (unoAccessibleAction != null) ?
+ new AccessibleActionImpl(unoAccessibleAction) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the relation set of this object */
+ public javax.accessibility.AccessibleRelationSet getAccessibleRelationSet() {
+ try {
+ XAccessibleRelationSet unoAccessibleRelationSet =
+ unoAccessible.getAccessibleContext().getAccessibleRelationSet();
+ if (unoAccessibleRelationSet == null) {
+ return super.getAccessibleRelationSet();
+ }
+
+ javax.accessibility.AccessibleRelationSet relationSet = new javax.accessibility.AccessibleRelationSet();
+ int count = unoAccessibleRelationSet.getRelationCount();
+ for (int i = 0; i < count; i++) {
+ AccessibleRelation unoAccessibleRelation = unoAccessibleRelationSet.getRelation(i);
+ switch (unoAccessibleRelation.RelationType) {
+ case AccessibleRelationType.CONTROLLED_BY:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.CONTROLLED_BY,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.CONTROLLER_FOR:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.CONTROLLER_FOR,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.LABELED_BY:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.LABELED_BY,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.MEMBER_OF:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.MEMBER_OF,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.CONTENT_FLOWS_TO:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ "flowsTo",
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.CONTENT_FLOWS_FROM:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ "flowsFrom",
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ default:
+ break;
+ }
+ }
+ return relationSet;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return super.getAccessibleRelationSet();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return super.getAccessibleRelationSet();
+ }
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/RadioButton.java b/accessibility/bridge/org/openoffice/java/accessibility/RadioButton.java
new file mode 100644
index 000000000000..3daeee6cd8de
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/RadioButton.java
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+
+class RadioButton extends ToggleButton {
+ public RadioButton(XAccessible xAccessible,
+ XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleRadioButton();
+ }
+
+ protected class AccessibleRadioButton extends AccessibleToggleButton {
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.RADIO_BUTTON;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/ScrollBar.java b/accessibility/bridge/org/openoffice/java/accessibility/ScrollBar.java
new file mode 100644
index 000000000000..83b17d698201
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/ScrollBar.java
@@ -0,0 +1,126 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+import javax.swing.SwingConstants;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+/**
+ */
+public class ScrollBar extends Component implements SwingConstants, javax.accessibility.Accessible {
+
+ public ScrollBar(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleScrollBar();
+ }
+
+ protected class AccessibleScrollBar extends AccessibleUNOComponent implements
+ javax.accessibility.AccessibleAction {
+
+ protected XAccessibleAction unoAccessibleAction;
+ protected int actionCount = 0;
+
+ /**
+ * Though the class is abstract, this should be called by all sub-classes
+ */
+ protected AccessibleScrollBar() {
+ super();
+ unoAccessibleAction = (XAccessibleAction) UnoRuntime.queryInterface(
+ XAccessibleAction.class, unoAccessibleContext);
+ if (unoAccessibleAction != null) {
+ actionCount = unoAccessibleAction.getAccessibleActionCount();
+ }
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.SCROLL_BAR;
+ }
+
+ /** Gets the AccessibleValue associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleValue getAccessibleValue() {
+ try {
+ XAccessibleValue unoAccessibleValue = (XAccessibleValue)
+ UnoRuntime.queryInterface(XAccessibleValue.class, unoAccessibleContext);
+ return (unoAccessibleValue != null) ?
+ new AccessibleValueImpl(unoAccessibleValue) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleAction associated with this object that supports one or more actions */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ return this;
+ }
+
+ /*
+ * AccessibleAction
+ */
+
+ /** Performs the specified Action on the object */
+ public boolean doAccessibleAction(int param) {
+ if (param < actionCount) {
+ try {
+ return unoAccessibleAction.doAccessibleAction(param);
+ } catch(com.sun.star.lang.IndexOutOfBoundsException e) {
+ }
+ }
+ return false;
+ }
+
+ /** Returns a description of the specified action of the object */
+ public java.lang.String getAccessibleActionDescription(int param) {
+ if(param < actionCount) {
+ try {
+ return unoAccessibleAction.getAccessibleActionDescription(param);
+ } catch(com.sun.star.lang.IndexOutOfBoundsException e) {
+ }
+ }
+ return null;
+ }
+
+ /** Returns the number of accessible actions available in this object */
+ public int getAccessibleActionCount() {
+ return actionCount;
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Separator.java b/accessibility/bridge/org/openoffice/java/accessibility/Separator.java
new file mode 100644
index 000000000000..892768e07cbb
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Separator.java
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+import javax.swing.SwingConstants;
+
+
+/**
+ */
+public class Separator extends Component implements SwingConstants,
+ javax.accessibility.Accessible {
+
+ public Separator(XAccessible xAccessible,
+ XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ setFocusable(false);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleSeparator();
+ }
+
+ protected class AccessibleSeparator extends AccessibleUNOComponent {
+ /**
+ * Though the class is abstract, this should be called by all sub-classes
+ */
+ protected AccessibleSeparator() {
+ super();
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.SEPARATOR;
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Table.java b/accessibility/bridge/org/openoffice/java/accessibility/Table.java
new file mode 100644
index 000000000000..24ea912d4217
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Table.java
@@ -0,0 +1,727 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleState;
+
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.accessibility.*;
+
+public class Table extends DescendantManager implements javax.accessibility.Accessible {
+
+ protected Table(XAccessible xAccessible, XAccessibleContext xAccessibleContext, boolean multiselectable) {
+ super(xAccessible, xAccessibleContext, multiselectable);
+ }
+
+ protected void setActiveDescendant(javax.accessibility.Accessible descendant) {
+ javax.accessibility.Accessible oldAD = activeDescendant;
+ activeDescendant = descendant;
+ firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
+ oldAD, descendant);
+ }
+
+ protected void setActiveDescendant(Object any) {
+ javax.accessibility.Accessible descendant = null;
+ try {
+ if (AnyConverter.isObject(any)) {
+ XAccessible unoAccessible = (XAccessible) AnyConverter.toObject(
+ AccessibleObjectFactory.XAccessibleType, any);
+ if (unoAccessible != null) {
+ // FIXME: have to handle non transient objects here ..
+ descendant = new TableCell(unoAccessible);
+ }
+ }
+ setActiveDescendant(descendant);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected void add(XAccessible unoAccessible) {
+ if (unoAccessible != null) {
+ TableCell cell = new TableCell(unoAccessible);
+ // The AccessBridge for Windows expects an instance of AccessibleContext
+ // as parameters
+ firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null, cell.getAccessibleContext());
+ }
+ }
+
+ protected void remove(XAccessible unoAccessible) {
+ if (unoAccessible != null) {
+ TableCell cell = new TableCell(unoAccessible);
+ // The AccessBridge for Windows expects an instance of AccessibleContext
+ // as parameters
+ firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ cell.getAccessibleContext(), null);
+ }
+ }
+
+ protected void add(Object any) {
+ try {
+ add((XAccessible) AnyConverter.toObject(AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected void remove(Object any) {
+ try {
+ remove((XAccessible) AnyConverter.toObject(AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleTableListener extends AccessibleDescendantManagerListener {
+
+ protected AccessibleTableListener() {
+ super();
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.ACTIVE_DESCENDANT_CHANGED:
+ setActiveDescendant(event.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ if (AnyConverter.isObject(event.OldValue)) {
+ remove(event.OldValue);
+ }
+ if (AnyConverter.isObject(event.NewValue)) {
+ add(event.NewValue);
+ }
+ break;
+ default:
+ super.notifyEvent(event);
+ }
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleTableListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleTable();
+ }
+
+ protected class AccessibleTable extends AccessibleDescendantManager implements javax.accessibility.AccessibleExtendedTable {
+
+ protected XAccessibleTable unoAccessibleTable;
+
+ public AccessibleTable() {
+ unoAccessibleTable = (XAccessibleTable) UnoRuntime.queryInterface(XAccessibleTable.class, unoAccessibleContext);
+ }
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.TABLE;
+ }
+
+ /** Returns the AccessibleTable interface of this object */
+ public javax.accessibility.AccessibleTable getAccessibleTable() {
+ return this;
+ }
+
+ /** Returns the specified Accessible child of the object */
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Table.this.activeDescendant;
+ if ((activeDescendant instanceof TableCell) && xAccessible.equals(((TableCell) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TableCell(xAccessible);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleComponent.getAccessibleAtPoint(
+ new com.sun.star.awt.Point(p.x, p.y));
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Table.this.activeDescendant;
+ if ((activeDescendant instanceof TableCell) && xAccessible.equals(((TableCell) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TableCell(xAccessible);
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /*
+ * AccessibleSelection
+ */
+
+ /** Returns an Accessible representing the specified selected child of the object */
+ public javax.accessibility.Accessible getAccessibleSelection(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleSelection.getSelectedAccessibleChild(i);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Table.this.activeDescendant;
+ if ((activeDescendant instanceof TableCell) && xAccessible.equals(((TableCell) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TableCell(xAccessible);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /*
+ * AccessibleTable
+ */
+
+ /** Returns the Accessible at a specified row and column in the table. */
+ public javax.accessibility.Accessible getAccessibleAt(int r, int c) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleTable.getAccessibleCellAt(r,c);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Table.this.activeDescendant;
+ if ((activeDescendant instanceof TableCell) && xAccessible.equals(((TableCell) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TableCell(xAccessible);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /** Returns the caption for the table. */
+ public javax.accessibility.Accessible getAccessibleCaption() {
+ // Not yet supported.
+ return null;
+ }
+
+ /** Returns the number of columns in the table. */
+ public int getAccessibleColumnCount() {
+ try {
+ return unoAccessibleTable.getAccessibleColumnCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the description text of the specified column in the table. */
+ public javax.accessibility.Accessible getAccessibleColumnDescription(int c) {
+ try {
+ return new javax.swing.JLabel(
+ unoAccessibleTable.getAccessibleColumnDescription(c));
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the number of columns occupied by the Accessible
+ * at a specified row and column in the table.
+ */
+ public int getAccessibleColumnExtentAt(int r, int c) {
+ try {
+ return unoAccessibleTable.getAccessibleColumnExtentAt(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return 0;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the column headers as an AccessibleTable. */
+ public javax.accessibility.AccessibleTable getAccessibleColumnHeader() {
+ // Not yet supported
+ return null;
+ }
+
+ /** Returns the number of rows in the table. */
+ public int getAccessibleRowCount() {
+ try {
+ return unoAccessibleTable.getAccessibleRowCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the description of the specified row in the table. */
+ public javax.accessibility.Accessible getAccessibleRowDescription(int r) {
+ try {
+ return new javax.swing.JLabel(
+ unoAccessibleTable.getAccessibleRowDescription(r));
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the number of rows occupied by the Accessible
+ * at a specified row and column in the table.
+ */
+ public int getAccessibleRowExtentAt(int r, int c) {
+ try {
+ return unoAccessibleTable.getAccessibleRowExtentAt(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return 0;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the row headers as an AccessibleTable. */
+ public javax.accessibility.AccessibleTable getAccessibleRowHeader() {
+ // Not yet supported
+ return null;
+ }
+
+ /** Returns the summary description of the table. */
+ public javax.accessibility.Accessible getAccessibleSummary() {
+ // Not yet supported.
+ return null;
+ }
+
+ /** Returns the selected columns in a table. */
+ public int[] getSelectedAccessibleColumns() {
+ try {
+ return unoAccessibleTable.getSelectedAccessibleColumns();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the selected rows in a table. */
+ public int[] getSelectedAccessibleRows() {
+ try {
+ return unoAccessibleTable.getSelectedAccessibleRows();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns a boolean value indicating whether the specified column is selected. */
+ public boolean isAccessibleColumnSelected(int c) {
+ try {
+ return unoAccessibleTable.isAccessibleColumnSelected(c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns a boolean value indicating whether the specified row is selected. */
+ public boolean isAccessibleRowSelected(int r) {
+ try {
+ return unoAccessibleTable.isAccessibleRowSelected(r);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns a boolean value indicating whether the accessible
+ * at a specified row and column is selected.
+ */
+ public boolean isAccessibleSelected(int r, int c) {
+ try {
+ return unoAccessibleTable.isAccessibleSelected(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Sets the caption for the table. */
+ public void setAccessibleCaption(javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the description text of the specified column in the table. */
+ public void setAccessibleColumnDescription(int param, javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the column headers. */
+ public void setAccessibleColumnHeader(javax.accessibility.AccessibleTable accessibleTable) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the description text of the specified row of the table. */
+ public void setAccessibleRowDescription(int param, javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the row headers. */
+ public void setAccessibleRowHeader(javax.accessibility.AccessibleTable accessibleTable) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the summary description of the table */
+ public void setAccessibleSummary(javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Returns the column number of an index in the table */
+ public int getAccessibleColumn(int index) {
+ try {
+ return unoAccessibleTable.getAccessibleColumn(index);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return -1;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the index of a specified row and column in the table. */
+ public int getAccessibleIndex(int r, int c) {
+ try {
+ return unoAccessibleTable.getAccessibleIndex(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return -1;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the row number of an index in the table */
+ public int getAccessibleRow(int index) {
+ try {
+ return unoAccessibleTable.getAccessibleRow(index);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return -1;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+ }
+
+ class TableCell extends java.awt.Component implements javax.accessibility.Accessible {
+
+ protected XAccessible unoAccessible;
+
+ public TableCell(XAccessible xAccessible) {
+ unoAccessible = xAccessible;
+ }
+
+ public Object[] create(Object[] targetSet) {
+ try {
+ java.util.ArrayList list = new java.util.ArrayList(targetSet.length);
+ for (int i=0; i < targetSet.length; i++) {
+ XAccessible xAccessible = (XAccessible) UnoRuntime.queryInterface(
+ XAccessible.class, targetSet[i]);
+ if (xAccessible != null) {
+ list.add(new TableCell(xAccessible));
+ }
+ }
+ list.trimToSize();
+ return list.toArray();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ try {
+ XAccessibleContext xAccessibleContext = unoAccessible.getAccessibleContext();
+ if (xAccessibleContext != null) {
+ javax.accessibility.AccessibleContext ac = new AccessibleTableCell(xAccessibleContext);
+ if (ac != null) {
+ ac.setAccessibleParent(Table.this);
+ accessibleContext = ac;
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleTableCell extends javax.accessibility.AccessibleContext {
+
+ XAccessibleContext unoAccessibleContext;
+
+ public AccessibleTableCell(XAccessibleContext xAccessibleContext) {
+ unoAccessibleContext = xAccessibleContext;
+ }
+
+ /** Returns the accessible name of this object */
+ public String getAccessibleName() {
+ try {
+ return unoAccessibleContext.getAccessibleName();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Sets the accessible name of this object */
+ public void setAccessibleName(String name) {
+ // Not supported
+ }
+
+ /** Returns the accessible name of this object */
+ public String getAccessibleDescription() {
+ try {
+ return unoAccessibleContext.getAccessibleDescription();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Sets the accessible name of this object */
+ public void setAccessibleDescription(String name) {
+ // Not supported
+ }
+
+ /** Returns the accessible role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ try {
+ javax.accessibility.AccessibleRole role = AccessibleRoleAdapter.getAccessibleRole(
+ unoAccessibleContext.getAccessibleRole());
+ return (role != null) ? role : javax.accessibility.AccessibleRole.LABEL;
+ } catch(com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the locale of the component */
+ public java.util.Locale getLocale() throws java.awt.IllegalComponentStateException {
+ try {
+ com.sun.star.lang.Locale unoLocale = unoAccessibleContext.getLocale();
+ return new java.util.Locale(unoLocale.Language, unoLocale.Country);
+ } catch (IllegalAccessibleComponentStateException e) {
+ throw new java.awt.IllegalComponentStateException(e.getMessage());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return Table.this.getLocale();
+ }
+ }
+
+ /** Gets the 0-based index of this object in its accessible parent */
+ public int getAccessibleIndexInParent() {
+ try {
+ return unoAccessibleContext.getAccessibleIndexInParent();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the number of accessible children of the object. */
+ public int getAccessibleChildrenCount() {
+ try {
+ return unoAccessibleContext.getAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the specified Accessible child of the object. */
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Table.this.activeDescendant;
+ if ((activeDescendant instanceof TableCell) && ((TableCell) activeDescendant).unoAccessible.equals(xAccessible)) {
+ child = activeDescendant;
+ } else if (xAccessible != null) {
+ child = new TableCell(xAccessible);
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /** Returns the state set of this object */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ try {
+ return AccessibleStateAdapter.getAccessibleStateSet(TableCell.this,
+ unoAccessibleContext.getAccessibleStateSet());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return AccessibleStateAdapter.getDefunctStateSet();
+ }
+ }
+
+ /** Returns the relation set of this object */
+ public javax.accessibility.AccessibleRelationSet getAccessibleRelationSet() {
+ try {
+ XAccessibleRelationSet unoAccessibleRelationSet = unoAccessibleContext.getAccessibleRelationSet();
+ if (unoAccessibleRelationSet == null) {
+ return null;
+ }
+
+ javax.accessibility.AccessibleRelationSet relationSet = new javax.accessibility.AccessibleRelationSet();
+ int count = unoAccessibleRelationSet.getRelationCount();
+ for (int i = 0; i < count; i++) {
+ AccessibleRelation unoAccessibleRelation = unoAccessibleRelationSet.getRelation(i);
+ switch (unoAccessibleRelation.RelationType) {
+ case AccessibleRelationType.CONTROLLED_BY:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.CONTROLLED_BY,
+ create(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.CONTROLLER_FOR:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.CONTROLLER_FOR,
+ create(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.LABELED_BY:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.LABELED_BY,
+ create(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.LABEL_FOR:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.LABEL_FOR,
+ create(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.MEMBER_OF:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.MEMBER_OF,
+ create(unoAccessibleRelation.TargetSet)));
+ break;
+ default:
+ break;
+ }
+ }
+ return relationSet;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleComponent associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleComponent getAccessibleComponent() {
+ try {
+ XAccessibleComponent unoAccessibleComponent = (XAccessibleComponent)
+ UnoRuntime.queryInterface(XAccessibleComponent.class, unoAccessibleContext);
+ return (unoAccessibleComponent != null) ?
+ new AccessibleComponentImpl(unoAccessibleComponent) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleAction associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ try {
+ XAccessibleAction unoAccessibleAction = (XAccessibleAction)
+ UnoRuntime.queryInterface(XAccessibleAction.class, unoAccessibleContext);
+ return (unoAccessibleAction != null) ?
+ new AccessibleActionImpl(unoAccessibleAction) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleText associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText)
+ UnoRuntime.queryInterface(XAccessibleText.class, unoAccessibleContext);
+ return (unoAccessibleText != null) ?
+ new AccessibleTextImpl(unoAccessibleText) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleValue associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleValue getAccessibleValue() {
+ try {
+ XAccessibleValue unoAccessibleValue = (XAccessibleValue)
+ UnoRuntime.queryInterface(XAccessibleValue.class, unoAccessibleContext);
+ return (unoAccessibleValue != null) ?
+ new AccessibleValueImpl(unoAccessibleValue) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleIcon[] getAccessibleIcon() {
+ try {
+ XAccessibleImage unoAccessibleImage = (XAccessibleImage)
+ UnoRuntime.queryInterface(XAccessibleImage.class, unoAccessibleContext);
+ if (unoAccessibleImage != null) {
+ javax.accessibility.AccessibleIcon[] icons = { new AccessibleIconImpl(unoAccessibleImage) };
+ return icons;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return null;
+ }
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/TextComponent.java b/accessibility/bridge/org/openoffice/java/accessibility/TextComponent.java
new file mode 100644
index 000000000000..a142297c4c12
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/TextComponent.java
@@ -0,0 +1,194 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.accessibility.*;
+
+/**
+ */
+public class TextComponent extends Component implements javax.accessibility.Accessible {
+
+ protected TextComponent(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ protected class AccessibleTextComponentListener extends AccessibleUNOComponentListener {
+
+ protected AccessibleTextComponentListener() {
+ super();
+ }
+
+ protected void setComponentState(short state, boolean enable) {
+ switch (state) {
+ case AccessibleStateType.EDITABLE:
+ fireStatePropertyChange(javax.accessibility.AccessibleState.EDITABLE, enable);
+ break;
+ case AccessibleStateType.MULTI_LINE:
+ fireStatePropertyChange(javax.accessibility.AccessibleState.MULTI_LINE, enable);
+ break;
+ case AccessibleStateType.SINGLE_LINE:
+ break;
+ default:
+ super.setComponentState(state, enable);
+ break;
+ }
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleTextComponentListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleTextComponent();
+ }
+
+ protected class AccessibleTextComponent extends AccessibleUNOComponent {
+
+ /**
+ * Though the class is abstract, this should be called by all sub-classes
+ */
+ protected AccessibleTextComponent() {
+ super();
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.TEXT;
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText)
+ UnoRuntime.queryInterface(XAccessibleText.class,unoAccessibleComponent);
+ if (unoAccessibleText != null) {
+ return new AccessibleTextImpl(unoAccessibleText);
+ } else {
+ return null;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleEditableText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleEditableText getAccessibleEditableText() {
+ try {
+ XAccessibleEditableText unoAccessibleText = (XAccessibleEditableText)
+ UnoRuntime.queryInterface(XAccessibleEditableText.class,unoAccessibleComponent);
+ if (unoAccessibleText != null) {
+ return new AccessibleEditableTextImpl(unoAccessibleText);
+ } else {
+ return null;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleAction associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ try {
+ XAccessibleAction unoAccessibleAction = (XAccessibleAction)
+ UnoRuntime.queryInterface(XAccessibleAction.class, unoAccessibleComponent);
+ return (unoAccessibleAction != null) ?
+ new AccessibleActionImpl(unoAccessibleAction) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the relation set of this object */
+ public javax.accessibility.AccessibleRelationSet getAccessibleRelationSet() {
+ try {
+ XAccessibleRelationSet unoAccessibleRelationSet =
+ unoAccessible.getAccessibleContext().getAccessibleRelationSet();
+ if (unoAccessibleRelationSet == null) {
+ return super.getAccessibleRelationSet();
+ }
+
+ javax.accessibility.AccessibleRelationSet relationSet = new javax.accessibility.AccessibleRelationSet();
+ int count = unoAccessibleRelationSet.getRelationCount();
+ for (int i = 0; i < count; i++) {
+ AccessibleRelation unoAccessibleRelation = unoAccessibleRelationSet.getRelation(i);
+ switch (unoAccessibleRelation.RelationType) {
+ case AccessibleRelationType.CONTROLLED_BY:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.CONTROLLED_BY,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.CONTROLLER_FOR:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.CONTROLLER_FOR,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.LABELED_BY:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.LABELED_BY,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.MEMBER_OF:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.MEMBER_OF,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.CONTENT_FLOWS_TO:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ "flowsTo",
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.CONTENT_FLOWS_FROM:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ "flowsFrom",
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ default:
+ break;
+ }
+ }
+ return relationSet;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return super.getAccessibleRelationSet();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return super.getAccessibleRelationSet();
+ }
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/ToggleButton.java b/accessibility/bridge/org/openoffice/java/accessibility/ToggleButton.java
new file mode 100644
index 000000000000..bac8035a2ece
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/ToggleButton.java
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+
+class ToggleButton extends AbstractButton implements javax.accessibility.Accessible {
+ public ToggleButton(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleToggleButton();
+ }
+
+ protected class AccessibleToggleButton extends AccessibleAbstractButton {
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.TOGGLE_BUTTON;
+ }
+
+ /** Gets the AccessibleValue associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleValue getAccessibleValue() {
+ try {
+ XAccessibleValue unoAccessibleValue = (XAccessibleValue) UnoRuntime.queryInterface(XAccessibleValue.class,
+ unoAccessibleContext);
+
+ return (unoAccessibleValue != null)
+ ? new AccessibleValueImpl(unoAccessibleValue) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/ToolTip.java b/accessibility/bridge/org/openoffice/java/accessibility/ToolTip.java
new file mode 100644
index 000000000000..071a6a37fd98
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/ToolTip.java
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+
+/**
+ */
+public class ToolTip extends Component implements javax.accessibility.Accessible {
+ protected ToolTip(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleToolTip();
+ }
+
+ protected class AccessibleToolTip extends AccessibleUNOComponent {
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.TOOL_TIP;
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText) UnoRuntime.queryInterface(XAccessibleText.class,
+ unoAccessibleComponent);
+
+ if (unoAccessibleText != null) {
+ return new AccessibleTextImpl(unoAccessibleText);
+ } else {
+ return null;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the relation set of this object */
+
+ /*
+ public javax.accessibility.AccessibleRelationSet getAccessibleRelationSet() {
+ try {
+ XAccessibleRelationSet unoAccessibleRelationSet = unoAccessibleContext.getAccessibleRelationSet();
+ if (unoAccessibleRelationSet == null) {
+ return null;
+ }
+
+ javax.accessibility.AccessibleRelationSet relationSet = new javax.accessibility.AccessibleRelationSet();
+ int count = unoAccessibleRelationSet.getRelationCount();
+ for (int i = 0; i < count; i++) {
+ AccessibleRelation unoAccessibleRelation = unoAccessibleRelationSet.getRelation(i);
+ switch (unoAccessibleRelation.RelationType) {
+ case AccessibleRelationType.LABEL_FOR:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.LABEL_FOR,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ case AccessibleRelationType.MEMBER_OF:
+ relationSet.add(new javax.accessibility.AccessibleRelation(
+ javax.accessibility.AccessibleRelation.MEMBER_OF,
+ getAccessibleComponents(unoAccessibleRelation.TargetSet)));
+ break;
+ default:
+ break;
+ }
+ }
+ return relationSet;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+ */
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Tree.java b/accessibility/bridge/org/openoffice/java/accessibility/Tree.java
new file mode 100644
index 000000000000..5fdd5a196397
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Tree.java
@@ -0,0 +1,768 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.accessibility.*;
+
+public class Tree extends DescendantManager implements javax.accessibility.Accessible {
+
+ protected Tree(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
+ super(xAccessible, xAccessibleContext);
+ }
+
+ protected void setActiveDescendant(javax.accessibility.Accessible descendant) {
+ javax.accessibility.Accessible oldAD = activeDescendant;
+ activeDescendant = descendant;
+ firePropertyChange(AccessibleContext.ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
+ oldAD, descendant);
+ }
+
+ protected void setActiveDescendant(Object any) {
+ javax.accessibility.Accessible descendant = null;
+ try {
+ if (AnyConverter.isObject(any)) {
+ XAccessible unoAccessible = (XAccessible) AnyConverter.toObject(
+ AccessibleObjectFactory.XAccessibleType, any);
+ if (unoAccessible != null) {
+ // FIXME: have to handle non transient objects here ..
+ descendant = new TreeItem(unoAccessible);
+ }
+ }
+ setActiveDescendant(descendant);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected void add(XAccessible unoAccessible) {
+ if (unoAccessible != null) {
+ firePropertyChange(AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null, new TreeItem(unoAccessible));
+ }
+ }
+
+ protected void remove(XAccessible unoAccessible) {
+ if (unoAccessible != null) {
+ firePropertyChange(AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ new TreeItem(unoAccessible), null);
+ }
+ }
+
+ protected void add(Object any) {
+ try {
+ add((XAccessible) AnyConverter.toObject(AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ protected void remove(Object any) {
+ try {
+ remove((XAccessible) AnyConverter.toObject(AccessibleObjectFactory.XAccessibleType, any));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleTreeListener extends AccessibleDescendantManagerListener {
+
+ protected AccessibleTreeListener() {
+ super();
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.ACTIVE_DESCENDANT_CHANGED:
+ setActiveDescendant(event.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ if (AnyConverter.isObject(event.OldValue)) {
+ remove(event.OldValue);
+ }
+ if (AnyConverter.isObject(event.NewValue)) {
+ add(event.NewValue);
+ }
+ break;
+
+ case AccessibleEventId.LISTBOX_ENTRY_EXPANDED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ AccessibleState.COLLAPSED, AccessibleState.EXPANDED);
+ break;
+
+ case AccessibleEventId.LISTBOX_ENTRY_COLLAPSED:
+ firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ AccessibleState.EXPANDED, AccessibleState.COLLAPSED);
+ break;
+
+ default:
+ super.notifyEvent(event);
+ }
+ }
+ }
+
+ protected XAccessibleEventListener createEventListener() {
+ return new AccessibleTreeListener();
+ }
+
+ /** Creates the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext createAccessibleContext() {
+ return new AccessibleTree();
+ }
+
+ protected class AccessibleTree extends AccessibleDescendantManager implements javax.accessibility.AccessibleExtendedTable {
+
+ protected XAccessibleTable unoAccessibleTable;
+
+ public AccessibleTree() {
+ unoAccessibleTable = (XAccessibleTable) UnoRuntime.queryInterface(XAccessibleTable.class, unoAccessibleContext);
+ }
+
+ /*
+ * AccessibleContext
+ */
+
+ /** Gets the role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ return javax.accessibility.AccessibleRole.TREE;
+ }
+
+ /** Returns the AccessibleTable interface of this object */
+ public javax.accessibility.AccessibleTable getAccessibleTable() {
+ return ( unoAccessibleTable != null ) ? this : null;
+ }
+
+ /** Returns the specified Accessible child of the object */
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Tree.this.activeDescendant;
+ if ((activeDescendant instanceof TreeItem) && xAccessible.equals(((TreeItem) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TreeItem(xAccessible);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleComponent.getAccessibleAtPoint(
+ new com.sun.star.awt.Point(p.x, p.y));
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Tree.this.activeDescendant;
+ if ((activeDescendant instanceof TreeItem) && xAccessible.equals(((TreeItem) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TreeItem(xAccessible);
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /*
+ * AccessibleSelection
+ */
+
+ /** Returns an Accessible representing the specified selected child of the object */
+ public javax.accessibility.Accessible getAccessibleSelection(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Tree.this.activeDescendant;
+ if ((activeDescendant instanceof TreeItem) && xAccessible.equals(((TreeItem) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TreeItem(xAccessible);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /*
+ * AccessibleTable
+ */
+
+ /** Returns the Accessible at a specified row and column in the table. */
+ public javax.accessibility.Accessible getAccessibleAt(int r, int c) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleTable.getAccessibleCellAt(r,c);
+ if (xAccessible != null) {
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Tree.this.activeDescendant;
+ if ((activeDescendant instanceof TreeItem) && xAccessible.equals(((TreeItem) activeDescendant).unoAccessible)) {
+ child = activeDescendant;
+ } else {
+ child = new TreeItem(xAccessible);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /** Returns the caption for the table. */
+ public javax.accessibility.Accessible getAccessibleCaption() {
+ // Not yet supported.
+ return null;
+ }
+
+ /** Returns the number of columns in the table. */
+ public int getAccessibleColumnCount() {
+ try {
+ return unoAccessibleTable.getAccessibleColumnCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the description text of the specified column in the table. */
+ public javax.accessibility.Accessible getAccessibleColumnDescription(int c) {
+ try {
+ return new javax.swing.JLabel(
+ unoAccessibleTable.getAccessibleColumnDescription(c));
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the number of columns occupied by the Accessible
+ * at a specified row and column in the table.
+ */
+ public int getAccessibleColumnExtentAt(int r, int c) {
+ try {
+ return unoAccessibleTable.getAccessibleColumnExtentAt(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return 0;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the column headers as an AccessibleTable. */
+ public javax.accessibility.AccessibleTable getAccessibleColumnHeader() {
+ // Not yet supported
+ return null;
+ }
+
+ /** Returns the number of rows in the table. */
+ public int getAccessibleRowCount() {
+ try {
+ return unoAccessibleTable.getAccessibleRowCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the description of the specified row in the table. */
+ public javax.accessibility.Accessible getAccessibleRowDescription(int r) {
+ try {
+ return new javax.swing.JLabel(
+ unoAccessibleTable.getAccessibleRowDescription(r));
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the number of rows occupied by the Accessible
+ * at a specified row and column in the table.
+ */
+ public int getAccessibleRowExtentAt(int r, int c) {
+ try {
+ return unoAccessibleTable.getAccessibleRowExtentAt(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return 0;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the row headers as an AccessibleTable. */
+ public javax.accessibility.AccessibleTable getAccessibleRowHeader() {
+ // Not yet supported
+ return null;
+ }
+
+ /** Returns the summary description of the table. */
+ public javax.accessibility.Accessible getAccessibleSummary() {
+ // Not yet supported.
+ return null;
+ }
+
+ /** Returns the selected columns in a table. */
+ public int[] getSelectedAccessibleColumns() {
+ try {
+ return unoAccessibleTable.getSelectedAccessibleColumns();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the selected rows in a table. */
+ public int[] getSelectedAccessibleRows() {
+ try {
+ return unoAccessibleTable.getSelectedAccessibleRows();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns a boolean value indicating whether the specified column is selected. */
+ public boolean isAccessibleColumnSelected(int c) {
+ try {
+ return unoAccessibleTable.isAccessibleColumnSelected(c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns a boolean value indicating whether the specified row is selected. */
+ public boolean isAccessibleRowSelected(int r) {
+ try {
+ return unoAccessibleTable.isAccessibleRowSelected(r);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns a boolean value indicating whether the accessible
+ * at a specified row and column is selected.
+ */
+ public boolean isAccessibleSelected(int r, int c) {
+ try {
+ return unoAccessibleTable.isAccessibleSelected(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Sets the caption for the table. */
+ public void setAccessibleCaption(javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the description text of the specified column in the table. */
+ public void setAccessibleColumnDescription(int param, javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the column headers. */
+ public void setAccessibleColumnHeader(javax.accessibility.AccessibleTable accessibleTable) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the description text of the specified row of the table. */
+ public void setAccessibleRowDescription(int param, javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the row headers. */
+ public void setAccessibleRowHeader(javax.accessibility.AccessibleTable accessibleTable) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Sets the summary description of the table */
+ public void setAccessibleSummary(javax.accessibility.Accessible accessible) {
+ // Not supported by the UNO Accessibility API
+ }
+
+ /** Returns the column number of an index in the table */
+ public int getAccessibleColumn(int index) {
+ try {
+ return unoAccessibleTable.getAccessibleColumn(index);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return -1;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the index of a specified row and column in the table. */
+ public int getAccessibleIndex(int r, int c) {
+ try {
+ return unoAccessibleTable.getAccessibleIndex(r,c);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return -1;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the row number of an index in the table */
+ public int getAccessibleRow(int index) {
+ try {
+ return unoAccessibleTable.getAccessibleRow(index);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return -1;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+ }
+
+ class TreeItem extends java.awt.Component implements javax.accessibility.Accessible {
+
+ protected XAccessible unoAccessible;
+
+ public TreeItem(XAccessible xAccessible) {
+ unoAccessible = xAccessible;
+ }
+
+ public Object[] create(Object[] targetSet) {
+ try {
+ java.util.ArrayList list = new java.util.ArrayList(targetSet.length);
+ for (int i=0; i < targetSet.length; i++) {
+ XAccessible xAccessible = (XAccessible) UnoRuntime.queryInterface(
+ XAccessible.class, targetSet[i]);
+ if (xAccessible != null) {
+ list.add(new TreeItem(xAccessible));
+ }
+ }
+ list.trimToSize();
+ return list.toArray();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ try {
+ XAccessibleContext xAccessibleContext = unoAccessible.getAccessibleContext();
+ if (xAccessibleContext != null) {
+ javax.accessibility.AccessibleContext ac = new AccessibleTreeItem(xAccessibleContext);
+ if (ac != null) {
+ ac.setAccessibleParent(Tree.this);
+ accessibleContext = ac;
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleTreeItem extends javax.accessibility.AccessibleContext
+ implements javax.accessibility.AccessibleSelection {
+
+ XAccessibleContext unoAccessibleContext;
+ XAccessibleSelection unoAccessibleSelection;
+
+ public AccessibleTreeItem(XAccessibleContext xAccessibleContext) {
+ unoAccessibleContext = xAccessibleContext;
+ unoAccessibleSelection = (XAccessibleSelection)
+ UnoRuntime.queryInterface(XAccessibleSelection.class, xAccessibleContext);
+ }
+
+ /** Returns the accessible name of this object */
+ public String getAccessibleName() {
+ try {
+ return unoAccessibleContext.getAccessibleName();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Sets the accessible name of this object */
+ public void setAccessibleName(String name) {
+ // Not supported
+ }
+
+ /** Returns the accessible name of this object */
+ public String getAccessibleDescription() {
+ try {
+ return unoAccessibleContext.getAccessibleDescription();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Sets the accessible name of this object */
+ public void setAccessibleDescription(String name) {
+ // Not supported
+ }
+
+ /** Returns the accessible role of this object */
+ public javax.accessibility.AccessibleRole getAccessibleRole() {
+ try {
+ javax.accessibility.AccessibleRole role = AccessibleRoleAdapter.getAccessibleRole(
+ unoAccessibleContext.getAccessibleRole());
+ return (role != null) ? role : javax.accessibility.AccessibleRole.LABEL;
+ } catch(com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the locale of the component */
+ public java.util.Locale getLocale() throws java.awt.IllegalComponentStateException {
+ try {
+ com.sun.star.lang.Locale unoLocale = unoAccessibleContext.getLocale();
+ return new java.util.Locale(unoLocale.Language, unoLocale.Country);
+ } catch (IllegalAccessibleComponentStateException e) {
+ throw new java.awt.IllegalComponentStateException(e.getMessage());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return Tree.this.getLocale();
+ }
+ }
+
+ /** Gets the 0-based index of this object in its accessible parent */
+ public int getAccessibleIndexInParent() {
+ try {
+ return unoAccessibleContext.getAccessibleIndexInParent();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return -1;
+ }
+ }
+
+ /** Returns the number of accessible children of the object. */
+ public int getAccessibleChildrenCount() {
+ try {
+ return unoAccessibleContext.getAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Returns the specified Accessible child of the object. */
+ public javax.accessibility.Accessible getAccessibleChild(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ // Re-use the active descandant wrapper if possible
+ javax.accessibility.Accessible activeDescendant = Tree.this.activeDescendant;
+ if ((activeDescendant instanceof TreeItem) && ((TreeItem) activeDescendant).unoAccessible.equals(xAccessible)) {
+ child = activeDescendant;
+ } else if (xAccessible != null) {
+ child = new TreeItem(xAccessible);
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /** Returns the state set of this object */
+ public javax.accessibility.AccessibleStateSet getAccessibleStateSet() {
+ try {
+ return AccessibleStateAdapter.getAccessibleStateSet(TreeItem.this,
+ unoAccessibleContext.getAccessibleStateSet());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return AccessibleStateAdapter.getDefunctStateSet();
+ }
+ }
+
+ /** Gets the AccessibleComponent associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleComponent getAccessibleComponent() {
+ try {
+ XAccessibleComponent unoAccessibleComponent = (XAccessibleComponent)
+ UnoRuntime.queryInterface(XAccessibleComponent.class, unoAccessibleContext);
+ return (unoAccessibleComponent != null) ?
+ new AccessibleComponentImpl(unoAccessibleComponent) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Returns the AccessibleSelection interface for this object */
+ public javax.accessibility.AccessibleSelection getAccessibleSelection() {
+ return (unoAccessibleSelection != null) ? this : null;
+ }
+
+ /** Gets the AccessibleAction associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleAction getAccessibleAction() {
+ try {
+ XAccessibleAction unoAccessibleAction = (XAccessibleAction)
+ UnoRuntime.queryInterface(XAccessibleAction.class, unoAccessibleContext);
+ return (unoAccessibleAction != null) ?
+ new AccessibleActionImpl(unoAccessibleAction) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleText associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleText getAccessibleText() {
+
+ if (disposed)
+ return null;
+
+ try {
+ XAccessibleText unoAccessibleText = (XAccessibleText)
+ UnoRuntime.queryInterface(XAccessibleText.class, unoAccessibleContext);
+ return (unoAccessibleText != null) ?
+ new AccessibleTextImpl(unoAccessibleText) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleValue associated with this object that has a graphical representation */
+ public javax.accessibility.AccessibleValue getAccessibleValue() {
+ try {
+ XAccessibleValue unoAccessibleValue = (XAccessibleValue)
+ UnoRuntime.queryInterface(XAccessibleValue.class, unoAccessibleContext);
+ return (unoAccessibleValue != null) ?
+ new AccessibleValueImpl(unoAccessibleValue) : null;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the AccessibleText associated with this object presenting text on the display */
+ public javax.accessibility.AccessibleIcon[] getAccessibleIcon() {
+ try {
+ XAccessibleImage unoAccessibleImage = (XAccessibleImage)
+ UnoRuntime.queryInterface(XAccessibleImage.class, unoAccessibleContext);
+ if (unoAccessibleImage != null) {
+ javax.accessibility.AccessibleIcon[] icons = { new AccessibleIconImpl(unoAccessibleImage) };
+ return icons;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return null;
+ }
+
+ /*
+ * AccessibleSelection
+ */
+
+ /** Returns an Accessible representing the specified selected child of the object */
+ public javax.accessibility.Accessible getAccessibleSelection(int i) {
+ javax.accessibility.Accessible child = null;
+ try {
+ XAccessible xAccessible = unoAccessibleContext.getAccessibleChild(i);
+ if (xAccessible != null) {
+ child = new TreeItem(xAccessible);
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ return child;
+ }
+
+ /** Adds the specified Accessible child of the object to the object's selection */
+ public void addAccessibleSelection(int i) {
+ try {
+ unoAccessibleSelection.selectAccessibleChild(i);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Clears the selection in the object, so that no children in the object are selected */
+ public void clearAccessibleSelection() {
+ try {
+ unoAccessibleSelection.clearAccessibleSelection();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Returns the number of Accessible children currently selected */
+ public int getAccessibleSelectionCount() {
+ try {
+ return unoAccessibleSelection.getSelectedAccessibleChildCount();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return 0;
+ }
+ }
+
+ /** Determines if the current child of this object is selected */
+ public boolean isAccessibleChildSelected(int i) {
+ try {
+ return unoAccessibleSelection.isAccessibleChildSelected(i);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ return false;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Removes the specified child of the object from the object's selection */
+ public void removeAccessibleSelection(int i) {
+ try {
+ unoAccessibleSelection.deselectAccessibleChild(i);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ /** Causes every child of the object to be selected if the object supports multiple selection */
+ public void selectAllAccessibleSelection() {
+ try {
+ unoAccessibleSelection.selectAllAccessibleChildren();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/Window.java b/accessibility/bridge/org/openoffice/java/accessibility/Window.java
new file mode 100644
index 000000000000..ef44c3380a48
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/Window.java
@@ -0,0 +1,551 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility;
+
+import com.sun.star.uno.*;
+import com.sun.star.accessibility.*;
+
+public class Window extends java.awt.Window implements javax.accessibility.Accessible, NativeFrame {
+ protected XAccessibleComponent unoAccessibleComponent;
+
+ boolean opened = false;
+ boolean visible = false;
+
+ java.awt.EventQueue eventQueue = null;
+
+ public Window(java.awt.Window owner, XAccessibleComponent xAccessibleComponent) {
+ super(owner);
+ initialize(xAccessibleComponent);
+ }
+
+ private void initialize(XAccessibleComponent xAccessibleComponent) {
+ unoAccessibleComponent = xAccessibleComponent;
+ eventQueue = java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue();
+ XAccessibleEventBroadcaster broadcaster = (XAccessibleEventBroadcaster)
+ UnoRuntime.queryInterface(XAccessibleEventBroadcaster.class,
+ unoAccessibleComponent);
+ if (broadcaster != null) {
+ broadcaster.addEventListener(new AccessibleWindowListener());
+ }
+ }
+
+ java.awt.Component initialComponent = null;
+
+ public java.awt.Component getInitialComponent() {
+ if (Build.DEBUG) {
+ System.err.println("returning initial component object of class: " + initialComponent.getClass().getName());
+ }
+ return initialComponent;
+ }
+
+ public void setInitialComponent(java.awt.Component c) {
+ initialComponent = c;
+ }
+
+ public Integer getHWND() {
+ return null;
+ }
+
+ /**
+ * Determines whether this <code>Component</code> is showing on screen.
+ * This means that the component must be visible, and it must be in a
+ * <code>container</code> that is visible and showing.
+ * @see #addNotify
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public boolean isShowing() {
+ if (isVisible()) {
+ java.awt.Container parent = getParent();
+ return (parent == null) || parent.isShowing();
+ }
+ return false;
+ }
+
+ /**
+ * Makes this <code>Component</code> displayable by connecting it to a
+ * native screen resource.
+ * This method is called internally by the toolkit and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #removeNotify
+ * @since JDK1.0
+ */
+ public void addNotify() {
+// createHierarchyEvents(0, null, null, 0, false);
+ }
+
+ /**
+ * Makes this <code>Component</code> undisplayable by destroying it native
+ * screen resource.
+ * This method is called by the toolkit internally and should
+ * not be called directly by programs.
+ * @see #isDisplayable
+ * @see #addNotify
+ * @since JDK1.0
+ */
+ public void removeNotify() {
+ }
+
+ /**
+ * Determines if the object is visible. Note: this means that the
+ * object intends to be visible; however, it may not in fact be
+ * showing on the screen because one of the objects that this object
+ * is contained by is not visible. To determine if an object is
+ * showing on the screen, use <code>isShowing</code>.
+ *
+ * @return true if object is visible; otherwise, false
+ */
+ public boolean isVisible(){
+ return visible;
+ }
+
+ /**
+ * Shows or hides this component depending on the value of parameter
+ * <code>b</code>.
+ * @param b if <code>true</code>, shows this component;
+ * otherwise, hides this component
+ * @see #isVisible
+ * @since JDK1.1
+ */
+ public void setVisible(boolean b) {
+ if (visible != b){
+ visible = b;
+ if (b) {
+ // If it is the first show, fire WINDOW_OPENED event
+ if (!opened) {
+ postWindowEvent(java.awt.event.WindowEvent.WINDOW_OPENED);
+ opened = true;
+ }
+ postComponentEvent(java.awt.event.ComponentEvent.COMPONENT_SHOWN);
+ } else {
+ postComponentEvent(java.awt.event.ComponentEvent.COMPONENT_HIDDEN);
+ }
+ }
+ }
+
+ public void dispose() {
+ setVisible(false);
+ postWindowEvent(java.awt.event.WindowEvent.WINDOW_CLOSED);
+
+ // Transfer window focus back to the owner window if it is still the active frame
+ if ((getOwner() instanceof Frame && ((Frame) getOwner()).active) ||
+ (getOwner() instanceof Dialog && ((Dialog) getOwner()).active)) {
+ eventQueue.postEvent(new java.awt.event.WindowEvent(getOwner(),
+ java.awt.event.WindowEvent.WINDOW_GAINED_FOCUS));
+ }
+ }
+
+ protected void postWindowEvent(int i) {
+ eventQueue.postEvent(new java.awt.event.WindowEvent(this, i));
+ }
+
+ protected void postComponentEvent(int i) {
+ eventQueue.postEvent(new java.awt.event.ComponentEvent(this, i));
+ }
+
+ /**
+ * Update the proxy objects appropriatly on property change events
+ */
+ protected class AccessibleWindowListener implements XAccessibleEventListener {
+
+ protected AccessibleWindowListener() {
+ }
+
+ // The only expected state changes are ACTIVE and VISIBLE
+ protected void setComponentState(short state, boolean enable) {
+ switch (state) {
+ case AccessibleStateType.ICONIFIED:
+ postWindowEvent(enable ?
+ java.awt.event.WindowEvent.WINDOW_ICONIFIED :
+ java.awt.event.WindowEvent.WINDOW_DEICONIFIED);
+ break;
+ case AccessibleStateType.SHOWING:
+ case AccessibleStateType.VISIBLE:
+ setVisible(enable);
+ break;
+ default:
+ if (Build.DEBUG) {
+// System.err.println("[frame]: " + getTitle() + "unexpected state change " + state);
+ }
+ break;
+ }
+ }
+
+ /** Updates the accessible name and fires the appropriate PropertyChangedEvent */
+ protected void handleNameChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac!= null) {
+ ac.setAccessibleName(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the accessible description and fires the appropriate PropertyChangedEvent */
+ protected void handleDescriptionChangedEvent(Object any) {
+ try {
+ // This causes the property change event to be fired in the VCL thread
+ // context. If this causes problems, it has to be deligated to the java
+ // dispatch thread ..
+ if (accessibleContext != null) {
+ accessibleContext.setAccessibleDescription(AnyConverter.toString(any));
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Updates the internal states and fires the appropriate PropertyChangedEvent */
+ protected void handleStateChangedEvent(Object any1, Object any2) {
+ try {
+ if (AnyConverter.isShort(any1)) {
+ setComponentState(AnyConverter.toShort(any1), false);
+ }
+
+ if (AnyConverter.isShort(any2)) {
+ setComponentState(AnyConverter.toShort(any2), true);
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ /** Fires a visible data property change event */
+ protected void handleVisibleDataEvent() {
+ javax.accessibility.AccessibleContext ac = accessibleContext;
+ if (ac != null) {
+ ac.firePropertyChange(javax.accessibility.AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY, null, null);
+ }
+ }
+
+ /** Called by OpenOffice process to notify property changes */
+ public void notifyEvent(AccessibleEventObject event) {
+ switch (event.EventId) {
+ case AccessibleEventId.NAME_CHANGED:
+ // Set the accessible name for the corresponding context, which will fire a property
+ // change event itself
+ handleNameChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.DESCRIPTION_CHANGED:
+ // Set the accessible description for the corresponding context, which will fire a property
+ // change event itself - so do not set propertyName !
+ handleDescriptionChangedEvent(event.NewValue);
+ break;
+ case AccessibleEventId.STATE_CHANGED:
+ // Update the internal state set and fire the appropriate PropertyChangedEvent
+ handleStateChangedEvent(event.OldValue, event.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ if (AnyConverter.isObject(event.OldValue)) {
+ AccessibleObjectFactory.removeChild(Window.this, event.OldValue);
+ } else if (AnyConverter.isObject(event.NewValue)) {
+ AccessibleObjectFactory.addChild(Window.this, event.NewValue);
+ }
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ handleVisibleDataEvent();
+ break;
+ default:
+ // Warn about unhandled events
+ if(Build.DEBUG) {
+ System.out.println(this + ": unhandled accessibility event id=" + event.EventId);
+ }
+ }
+ }
+
+ /** Called by OpenOffice process to notify that the UNO component is disposing */
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ }
+ }
+
+ protected javax.accessibility.AccessibleContext accessibleContext = null;
+
+ /** Returns the AccessibleContext associated with this object */
+ public javax.accessibility.AccessibleContext getAccessibleContext() {
+ if (accessibleContext == null) {
+ accessibleContext = new AccessibleWindow();
+// accessibleContext.setAccessibleName(getTitle());
+ }
+ return accessibleContext;
+ }
+
+ protected class AccessibleWindow extends java.awt.Window.AccessibleAWTWindow {
+ protected AccessibleWindow() {
+ super();
+ }
+
+ protected java.awt.event.ComponentListener accessibleComponentHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when shown/hidden..
+ */
+ protected class AccessibleComponentHandler implements java.awt.event.ComponentListener {
+ public void componentHidden(java.awt.event.ComponentEvent e) {
+ AccessibleWindow.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ javax.accessibility.AccessibleState.VISIBLE, null);
+ }
+
+ public void componentShown(java.awt.event.ComponentEvent e) {
+ AccessibleWindow.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+ null, javax.accessibility.AccessibleState.VISIBLE);
+ }
+
+ public void componentMoved(java.awt.event.ComponentEvent e) {
+ }
+
+ public void componentResized(java.awt.event.ComponentEvent e) {
+ }
+ } // inner class AccessibleComponentHandler
+
+ protected java.awt.event.ContainerListener accessibleContainerHandler = null;
+
+ /**
+ * Fire PropertyChange listener, if one is registered,
+ * when children added/removed.
+ */
+
+ protected class AccessibleContainerHandler implements java.awt.event.ContainerListener {
+ public void componentAdded(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleWindow.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ null, ((javax.accessibility.Accessible) c).getAccessibleContext());
+ }
+ }
+ public void componentRemoved(java.awt.event.ContainerEvent e) {
+ java.awt.Component c = e.getChild();
+ if (c != null && c instanceof javax.accessibility.Accessible) {
+ AccessibleWindow.this.firePropertyChange(
+ javax.accessibility.AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
+ ((javax.accessibility.Accessible) c).getAccessibleContext(), null);
+ }
+ }
+ }
+
+ protected int propertyChangeListenerCount = 0;
+
+ /**
+ * Add a PropertyChangeListener to the listener list.
+ *
+ * @param listener The PropertyChangeListener to be added
+ */
+ public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (propertyChangeListenerCount++ == 0) {
+ accessibleContainerHandler = new AccessibleContainerHandler();
+ Window.this.addContainerListener(accessibleContainerHandler);
+
+ accessibleComponentHandler = new AccessibleComponentHandler();
+ Window.this.addComponentListener(accessibleComponentHandler);
+ }
+ super.addPropertyChangeListener(listener);
+ }
+
+ /**
+ * Remove a PropertyChangeListener from the listener list.
+ * This removes a PropertyChangeListener that was registered
+ * for all properties.
+ *
+ * @param listener The PropertyChangeListener to be removed
+ */
+ public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
+ if (--propertyChangeListenerCount == 0) {
+ Window.this.removeComponentListener(accessibleComponentHandler);
+ accessibleComponentHandler = null;
+
+ Window.this.removeContainerListener(accessibleContainerHandler);
+ accessibleContainerHandler = null;
+ }
+ super.removePropertyChangeListener(listener);
+ }
+
+ /*
+ * AccessibleComponent
+ */
+
+ /** Returns the background color of the object */
+ public java.awt.Color getBackground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getBackground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setBackground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the foreground color of the object */
+ public java.awt.Color getForeground() {
+ try {
+ return new java.awt.Color(unoAccessibleComponent.getForeground());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public void setForeground(java.awt.Color c) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Cursor getCursor() {
+ // Not supported by UNO accessibility API
+ return null;
+ }
+
+ public void setCursor(java.awt.Cursor cursor) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.Font getFont() {
+ // FIXME
+ return null;
+ }
+
+ public void setFont(java.awt.Font f) {
+ // Not supported by UNO accessibility API
+ }
+
+ public java.awt.FontMetrics getFontMetrics(java.awt.Font f) {
+ // FIXME
+ return null;
+ }
+
+ public boolean isEnabled() {
+ return Window.this.isEnabled();
+ }
+
+ public void setEnabled(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isVisible() {
+ return Window.this.isVisible();
+ }
+
+ public void setVisible(boolean b) {
+ // Not supported by UNO accessibility API
+ }
+
+ public boolean isShowing() {
+ return Window.this.isShowing();
+ }
+
+ public boolean contains(java.awt.Point p) {
+ try {
+ return unoAccessibleComponent.containsPoint(new com.sun.star.awt.Point(p.x, p.y));
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return false;
+ }
+ }
+
+ /** Returns the location of the object on the screen. */
+ public java.awt.Point getLocationOnScreen() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocationOnScreen();
+ return new java.awt.Point(unoPoint.X, unoPoint.Y);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Gets the location of this component in the form of a point specifying the component's top-left corner */
+ public java.awt.Point getLocation() {
+ try {
+ com.sun.star.awt.Point unoPoint = unoAccessibleComponent.getLocationOnScreen();
+ return new java.awt.Point( unoPoint.X, unoPoint.Y );
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves this component to a new location */
+ public void setLocation(java.awt.Point p) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Gets the bounds of this component in the form of a Rectangle object */
+ public java.awt.Rectangle getBounds() {
+ try {
+ com.sun.star.awt.Rectangle unoRect = unoAccessibleComponent.getBounds();
+ return new java.awt.Rectangle(unoRect.X, unoRect.Y, unoRect.Width, unoRect.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Moves and resizes this component to conform to the new bounding rectangle r */
+ public void setBounds(java.awt.Rectangle r) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the size of this component in the form of a Dimension object */
+ public java.awt.Dimension getSize() {
+ try {
+ com.sun.star.awt.Size unoSize = unoAccessibleComponent.getSize();
+ return new java.awt.Dimension(unoSize.Width, unoSize.Height);
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ /** Resizes this component so that it has width d.width and height d.height */
+ public void setSize(java.awt.Dimension d) {
+ // Not supported by UNO accessibility API
+ }
+
+ /** Returns the Accessible child, if one exists, contained at the local coordinate Point */
+ public javax.accessibility.Accessible getAccessibleAt(java.awt.Point p) {
+ try {
+ java.awt.Component c = AccessibleObjectFactory.getAccessibleComponent(
+ unoAccessibleComponent.getAccessibleAtPoint(new com.sun.star.awt.Point(p.x, p.y)));
+
+ return (javax.accessibility.Accessible) c;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return null;
+ }
+ }
+
+ public boolean isFocusTraversable() {
+ return Window.this.isFocusable();
+ }
+
+ public void requestFocus() {
+ unoAccessibleComponent.grabFocus();
+ }
+ }
+}
+
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java
new file mode 100644
index 000000000000..36bec1cab8fb
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java
@@ -0,0 +1,186 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility.logging;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+/**
+ *
+ */
+public class XAccessibleEventLog implements XAccessibleEventListener {
+
+ private static XAccessibleEventLog theEventListener = null;
+
+ private static java.util.Hashtable proxyList = new java.util.Hashtable();
+
+ /** Creates a new instance of UNOAccessibleEventListener */
+ public XAccessibleEventLog() {
+ }
+
+ private static XAccessibleEventListener get() {
+ if (theEventListener == null) {
+ theEventListener = new XAccessibleEventLog();
+ }
+ return theEventListener;
+ }
+
+ public static void addEventListener(XAccessibleContext xac, java.awt.Component c) {
+ XAccessibleEventBroadcaster broadcaster = (XAccessibleEventBroadcaster)
+ UnoRuntime.queryInterface(XAccessibleEventBroadcaster.class, xac);
+ if (broadcaster != null) {
+ broadcaster.addEventListener(XAccessibleEventLog.get());
+
+ // remember the proxy objects
+ synchronized (proxyList) {
+// proxyList.put(UnoRuntime.generateOid(xac), new WeakReference(c));
+ proxyList.put(UnoRuntime.generateOid(xac), c);
+ }
+ }
+ }
+
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ }
+
+ public void notifyEvent(com.sun.star.accessibility.AccessibleEventObject accessibleEventObject) {
+ switch (accessibleEventObject.EventId) {
+ case AccessibleEventId.ACTIVE_DESCENDANT_CHANGED:
+ logMessage(accessibleEventObject.Source, "Retrieved active descendant event.");
+ break;
+ case AccessibleEventId.STATE_CHANGED:
+ logStateChange(accessibleEventObject.Source,
+ accessibleEventObject.OldValue,
+ accessibleEventObject.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ logMessage(accessibleEventObject.Source, "Retrieved children event.");
+ break;
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ logMessage(accessibleEventObject.Source, "Retrieved boundrect changed event.");
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ logMessage(accessibleEventObject.Source, "Retrieved visible data changed event.");
+ break;
+ case AccessibleEventId.INVALIDATE_ALL_CHILDREN:
+ logMessage(accessibleEventObject.Source, "Retrieved invalidate children event.");
+ break;
+ default:
+ break;
+ }
+ }
+
+ public void logStateChange(Object o, Object any1, Object any2) {
+ try {
+ if (AnyConverter.isShort(any1)) {
+ logStateChange(o, AnyConverter.toShort(any1), " is no longer ");
+ }
+
+ if (AnyConverter.isShort(any2)) {
+ logStateChange(o, AnyConverter.toShort(any2), " is now ");
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ public void logStateChange(Object o, short n, String s) {
+ switch(n) {
+ case AccessibleStateType.ACTIVE:
+ logMessage(o, s + javax.accessibility.AccessibleState.ACTIVE);
+ break;
+ case AccessibleStateType.ARMED:
+ logMessage(o, s + javax.accessibility.AccessibleState.ARMED);
+ break;
+ case AccessibleStateType.CHECKED:
+ logMessage(o, s + javax.accessibility.AccessibleState.CHECKED);
+ break;
+ case AccessibleStateType.ENABLED:
+ logMessage(o, s + javax.accessibility.AccessibleState.ENABLED);
+ break;
+ case AccessibleStateType.FOCUSED:
+ logMessage(o, s + javax.accessibility.AccessibleState.FOCUSED);
+ break;
+ case AccessibleStateType.PRESSED:
+ logMessage(o, s + javax.accessibility.AccessibleState.PRESSED);
+ break;
+ case AccessibleStateType.SELECTED:
+ logMessage(o, s + javax.accessibility.AccessibleState.SELECTED);
+ break;
+ case AccessibleStateType.SENSITIVE:
+ logMessage(o, s + "sensitive");
+ break;
+ case AccessibleStateType.SHOWING:
+ logMessage(o, s + javax.accessibility.AccessibleState.SHOWING);
+ break;
+ case AccessibleStateType.VISIBLE:
+ logMessage(o, s + javax.accessibility.AccessibleState.VISIBLE);
+ break;
+ default:
+ logMessage(o, s + "??? (FIXME)");
+ break;
+ }
+ }
+
+ protected static void logMessage(Object o, String s) {
+ XAccessibleContext xac = (XAccessibleContext) UnoRuntime.queryInterface(XAccessibleContext.class, o);
+ if( xac != null ) {
+ String oid = UnoRuntime.generateOid(xac);
+ synchronized (proxyList) {
+ logMessage( (javax.accessibility.Accessible) proxyList.get( oid ), s );
+// WeakReference r = (WeakReference) proxyList.get( oid );
+// if(r != null) {
+// System.err.println( "*** Warning *** event is " + r.get() );
+// logMessage( (javax.accessibility.Accessible) r.get(), s );
+// } else {
+// System.err.println( "*** Warning *** event source not found in broadcaster list" );
+// }
+ }
+ } else
+ System.err.println( "*** Warning *** event source does not implement XAccessibleContext" );
+ }
+
+ protected static void logMessage(javax.accessibility.Accessible a, String s) {
+ if (a != null) {
+ logMessage(a.getAccessibleContext(), s);
+ } else {
+ logMessage(s);
+ }
+ }
+
+ protected static void logMessage(javax.accessibility.AccessibleContext ac, String s) {
+ if (ac != null) {
+ logMessage("[" + ac.getAccessibleRole() + "] "
+ + ac.getAccessibleName() + ": " + s);
+ } else {
+ logMessage(s);
+ }
+ }
+
+ protected static void logMessage(String s) {
+ System.err.println(s);
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java
new file mode 100644
index 000000000000..f14da6d8280b
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility.logging;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+/** The AccessibleHypertextImpl mapps all calls to the java AccessibleHypertext
+ * interface to the corresponding methods of the UNO XAccessibleHypertext
+ * interface.
+ */
+public class XAccessibleHypertextLog extends XAccessibleTextLog
+ implements com.sun.star.accessibility.XAccessibleHypertext {
+
+ private com.sun.star.accessibility.XAccessibleHypertext unoObject;
+
+ /** Creates a new instance of XAccessibleTextLog */
+ public XAccessibleHypertextLog(XAccessibleHypertext xAccessibleHypertext) {
+ super(xAccessibleHypertext);
+ unoObject = xAccessibleHypertext;
+ }
+
+ public XAccessibleHyperlink getHyperLink(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getHyperLink(param);
+ }
+
+ public int getHyperLinkCount() {
+ return unoObject.getHyperLinkCount();
+ }
+
+ public int getHyperLinkIndex(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getHyperLinkIndex(param);
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java
new file mode 100644
index 000000000000..4b415ee60c74
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java
@@ -0,0 +1,270 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility.logging;
+
+import org.openoffice.java.accessibility.*;
+
+
+/**
+ *
+ */
+public class XAccessibleTextLog
+ implements com.sun.star.accessibility.XAccessibleText {
+ private com.sun.star.accessibility.XAccessibleText unoObject;
+ private String name = "[Unknown] NoName";
+
+ /** Creates a new instance of XAccessibleTextLog */
+ public XAccessibleTextLog(
+ com.sun.star.accessibility.XAccessibleText xAccessibleText) {
+ unoObject = xAccessibleText;
+ setName(xAccessibleText);
+ }
+
+ private void setName(
+ com.sun.star.accessibility.XAccessibleText xAccessibleText) {
+ try {
+ com.sun.star.accessibility.XAccessibleContext unoAccessibleContext = (com.sun.star.accessibility.XAccessibleContext) com.sun.star.uno.UnoRuntime.queryInterface(com.sun.star.accessibility.XAccessibleContext.class,
+ xAccessibleText);
+
+ if (unoAccessibleContext != null) {
+ name = "[" +
+ AccessibleRoleAdapter.getAccessibleRole(unoAccessibleContext.getAccessibleRole()) +
+ "] " + unoAccessibleContext.getAccessibleName() + ": ";
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ private String getPartString(short s) {
+ String part = "INVALID";
+
+ switch (s) {
+ case com.sun.star.accessibility.AccessibleTextType.CHARACTER:
+ part = "CHARACTER";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.WORD:
+ part = "WORD";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.SENTENCE:
+ part = "SENTENCE";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.LINE:
+ part = "LINE";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.ATTRIBUTE_RUN:
+ part = "ATTRIBUTE_RUN";
+
+ break;
+
+ default:
+ break;
+ }
+
+ return part;
+ }
+
+ private String dumpTextSegment(com.sun.star.accessibility.TextSegment ts) {
+ if (ts != null) {
+ return "(" + ts.SegmentStart + "," + ts.SegmentEnd + "," +
+ ts.SegmentText + ")";
+ }
+
+ return "NULL";
+ }
+
+ public boolean copyText(int param, int param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.copyText(param, param1);
+ }
+
+ public int getCaretPosition() {
+ int pos = unoObject.getCaretPosition();
+ System.err.println(name + "getCaretPosition() returns " + pos);
+
+ return pos;
+ }
+
+ public char getCharacter(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getCharacter(param);
+ }
+
+ public com.sun.star.beans.PropertyValue[] getCharacterAttributes(
+ int param, String[] str)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getCharacterAttributes(param, str);
+ }
+
+ public com.sun.star.awt.Rectangle getCharacterBounds(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ try {
+ com.sun.star.awt.Rectangle r = unoObject.getCharacterBounds(param);
+ System.err.println(name + "getCharacterBounds(" + param +
+ ") returns (" + r.X + "," + r.Y + "," + r.Width + "," +
+ r.Height + ")");
+
+ return r;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ "getCharacterBounds(" + param + ")");
+ throw e;
+ }
+ }
+
+ public int getCharacterCount() {
+ return unoObject.getCharacterCount();
+ }
+
+ public int getIndexAtPoint(com.sun.star.awt.Point point) {
+ try {
+ int index = unoObject.getIndexAtPoint(point);
+ System.err.println(name + "getIndexAtPoint(" + point.X + ", " +
+ point.Y + ") returns " + index);
+
+ return index;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ System.err.println(name +
+ "RuntimeException caught for getIndexAtPoint(" + point.X +
+ ", " + point.Y + ")");
+ System.err.println(e.getMessage());
+ throw e;
+ }
+ }
+
+ public String getSelectedText() {
+ return unoObject.getSelectedText();
+ }
+
+ public int getSelectionEnd() {
+ return unoObject.getSelectionEnd();
+ }
+
+ public int getSelectionStart() {
+ return unoObject.getSelectionStart();
+ }
+
+ public String getText() {
+ return unoObject.getText();
+ }
+
+ public com.sun.star.accessibility.TextSegment getTextAtIndex(int param,
+ short param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException,
+ com.sun.star.lang.IllegalArgumentException {
+ try {
+ com.sun.star.accessibility.TextSegment ts = unoObject.getTextAtIndex(param,
+ param1);
+ System.err.println(name + "getTextAtIndex(" +
+ getPartString(param1) + "," + param + ") returns " +
+ dumpTextSegment(ts));
+
+ return ts;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ " getTextAtIndex(" + getPartString(param1) + "," + param1 +
+ ")");
+ throw e;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught for " + name +
+ " getTextAtIndex(" + getPartString(param1) + "," + param + ")");
+ throw e;
+ }
+ }
+
+ public com.sun.star.accessibility.TextSegment getTextBeforeIndex(
+ int param, short param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException,
+ com.sun.star.lang.IllegalArgumentException {
+ try {
+ com.sun.star.accessibility.TextSegment ts = unoObject.getTextBeforeIndex(param,
+ param1);
+ System.err.println(name + " getTextBeforeIndex(" +
+ getPartString(param1) + "," + param + ") returns " +
+ dumpTextSegment(ts));
+
+ return ts;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ " getTextBeforeIndex(" + getPartString(param1) + "," + param1 +
+ ")");
+ throw e;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught for " + name +
+ " getTextBeforeIndex(" + getPartString(param1) + "," + param +
+ ")");
+ throw e;
+ }
+ }
+
+ public com.sun.star.accessibility.TextSegment getTextBehindIndex(
+ int param, short param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException,
+ com.sun.star.lang.IllegalArgumentException {
+ try {
+ com.sun.star.accessibility.TextSegment ts = unoObject.getTextBehindIndex(param,
+ param1);
+ System.err.println(name + " getTextBehindIndex(" +
+ getPartString(param1) + "," + param + ") returns " +
+ dumpTextSegment(ts));
+
+ return ts;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ " getTextBehindIndex(" + getPartString(param1) + "," + param1 +
+ ")");
+ throw e;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught for " + name +
+ " getTextBehindIndex(" + getPartString(param1) + "," + param +
+ ")");
+ throw e;
+ }
+ }
+
+ public String getTextRange(int param, int param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getTextRange(param, param1);
+ }
+
+ public boolean setCaretPosition(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.setCaretPosition(param);
+ }
+
+ public boolean setSelection(int param, int param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.setSelection(param, param1);
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/makefile.mk b/accessibility/bridge/org/openoffice/java/accessibility/makefile.mk
new file mode 100755
index 000000000000..0d98760a31df
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/makefile.mk
@@ -0,0 +1,115 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = accessibility
+PRJ = ..$/..$/..$/..$/..
+TARGET = java_accessibility
+PACKAGE = org$/openoffice$/java$/accessibility
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+JAVADIR = $(OUT)$/misc$/java
+JARFILES = jurt.jar unoil.jar ridl.jar
+JAVAFILES = \
+ logging$/XAccessibleEventLog.java \
+ logging$/XAccessibleHypertextLog.java \
+ logging$/XAccessibleTextLog.java \
+ AbstractButton.java \
+ AccessibleActionImpl.java \
+ AccessibleComponentImpl.java \
+ AccessibleEditableTextImpl.java \
+ AccessibleExtendedState.java \
+ AccessibleHypertextImpl.java \
+ AccessibleIconImpl.java \
+ AccessibleKeyBinding.java \
+ AccessibleObjectFactory.java \
+ AccessibleRoleAdapter.java \
+ AccessibleSelectionImpl.java \
+ AccessibleStateAdapter.java \
+ AccessibleTextImpl.java \
+ AccessibleValueImpl.java \
+ Alert.java \
+ Application.java \
+ Button.java \
+ CheckBox.java \
+ ComboBox.java \
+ Component.java \
+ Container.java \
+ DescendantManager.java \
+ Dialog.java \
+ FocusTraversalPolicy.java \
+ Frame.java \
+ Icon.java \
+ Label.java \
+ List.java \
+ Menu.java \
+ MenuItem.java \
+ MenuContainer.java \
+ NativeFrame.java \
+ Paragraph.java \
+ RadioButton.java \
+ ScrollBar.java \
+ Separator.java \
+ Table.java \
+ TextComponent.java \
+ ToggleButton.java \
+ ToolTip.java \
+ Tree.java \
+ Window.java
+
+JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:s/.java//).class) $(CLASSDIR)$/$(PACKAGE)$/Build.class
+
+JARTARGET = $(TARGET).jar
+JARCOMPRESS = TRUE
+JARCLASSDIRS = $(PACKAGE)
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+# Enable logging in non-product only
+.IF "$(PRODUCT)"!=""
+DEBUGSWITCH = false
+PRODUCTSWITCH = true
+.ELSE
+PRODUCTSWITCH = false
+DEBUGSWITCH = true
+.ENDIF
+
+$(JAVADIR)$/$(PACKAGE)$/%.java: makefile.mk
+ @@-$(MKDIRHIER) $(JAVADIR)$/$(PACKAGE)
+ @-echo package org.openoffice.java.accessibility\; > $@
+ @-echo public class Build { >> $@
+ @-echo public static final boolean DEBUG = $(DEBUGSWITCH)\; >> $@
+ @-echo public static final boolean PRODUCT = $(PRODUCTSWITCH)\; >> $@
+ @-echo } >> $@
+
+$(CLASSDIR)$/$(PACKAGE)$/Build.class : $(JAVADIR)$/$(PACKAGE)$/Build.java
+ -$(JAVAC) -d $(CLASSDIR) $(JAVADIR)$/$(PACKAGE)$/Build.java
+
diff --git a/accessibility/bridge/source/java/WindowsAccessBridgeAdapter.cxx b/accessibility/bridge/source/java/WindowsAccessBridgeAdapter.cxx
new file mode 100644
index 000000000000..581e5dc71790
--- /dev/null
+++ b/accessibility/bridge/source/java/WindowsAccessBridgeAdapter.cxx
@@ -0,0 +1,314 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+//------------------------------------------------------------------------
+// includes
+//------------------------------------------------------------------------
+
+#include <WindowsAccessBridgeAdapter.h>
+
+#include <tools/prewin.h>
+#include <wtypes.h>
+#include <tools/postwin.h>
+#include <rtl/process.h>
+#include <tools/link.hxx>
+
+#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <vcl/sysdata.hxx>
+#include <uno/current_context.hxx>
+#include <uno/environment.h>
+#include <uno/mapping.hxx>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+
+#include "jvmaccess/unovirtualmachine.hxx"
+
+#include "jvmaccess/virtualmachine.hxx"
+
+#include <osl/diagnose.h>
+
+using ::rtl::OUString;
+using ::com::sun::star::uno::Mapping;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::RuntimeException;
+using namespace ::com::sun::star::accessibility;
+
+long VCLEventListenerLinkFunc(void * pInst, void * pData);
+
+//------------------------------------------------------------------------
+// global vatiables
+//------------------------------------------------------------------------
+
+Link g_aEventListenerLink(NULL, VCLEventListenerLinkFunc);
+
+rtl::Reference< jvmaccess::UnoVirtualMachine > g_xUnoVirtualMachine;
+typelib_InterfaceTypeDescription * g_pTypeDescription = NULL;
+Mapping g_unoMapping;
+
+jclass g_jcWindowsAccessBridgeAdapter = NULL;
+jmethodID g_jmRegisterTopWindow = 0;
+jmethodID g_jmRevokeTopWindow = 0;
+
+//------------------------------------------------------------------------
+// functions
+//------------------------------------------------------------------------
+
+JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *, void *)
+{
+ return JNI_VERSION_1_2;
+}
+
+JNIEXPORT jbyteArray JNICALL
+Java_org_openoffice_accessibility_WindowsAccessBridgeAdapter_getProcessID(JNIEnv *pJNIEnv, jclass clazz)
+{
+ // Initialize global class and method references
+ g_jcWindowsAccessBridgeAdapter =
+ static_cast< jclass > (pJNIEnv->NewGlobalRef(clazz));
+ if (NULL == g_jcWindowsAccessBridgeAdapter) {
+ return 0; /* jni error occured */
+ }
+ g_jmRegisterTopWindow =
+ pJNIEnv->GetStaticMethodID(clazz, "registerTopWindow", "(ILcom/sun/star/accessibility/XAccessible;)V");
+ if (0 == g_jmRegisterTopWindow) {
+ return 0; /* jni error occured */
+ }
+ g_jmRevokeTopWindow =
+ pJNIEnv->GetStaticMethodID(clazz, "revokeTopWindow", "(ILcom/sun/star/accessibility/XAccessible;)V");
+ if (0 == g_jmRevokeTopWindow) {
+ return 0; /* jni error occured */
+ }
+
+ // Use the special protocol of XJavaVM.getJavaVM: If the passed in
+ // process ID has an extra 17th byte of value one, the returned any
+ // contains a pointer to a jvmaccess::UnoVirtualMachine, instead of
+ // the underlying JavaVM pointer:
+ jbyte processID[17];
+ rtl_getGlobalProcessId(reinterpret_cast<sal_uInt8 *> (processID));
+ // #i51265# we need a jvmaccess::UnoVirtualMachine pointer for the
+ // uno_getEnvironment() call later.
+ processID[16] = 1;
+
+ // Copy the result into a java byte[] and return.
+ jbyteArray jbaProcessID = pJNIEnv->NewByteArray(17);
+ pJNIEnv->SetByteArrayRegion(jbaProcessID, 0, 17, processID);
+ return jbaProcessID;
+}
+
+JNIEXPORT jboolean JNICALL
+Java_org_openoffice_accessibility_WindowsAccessBridgeAdapter_createMapping(JNIEnv *, jclass, jlong pointer)
+{
+ uno_Environment * pJava_environment = NULL;
+ uno_Environment * pUno_environment = NULL;
+
+ try {
+ // We get a non-refcounted pointer to a jvmaccess::VirtualMachine
+ // from the XJavaVM service (the pointer is guaranteed to be valid
+ // as long as our reference to the XJavaVM service lasts), and
+ // convert the non-refcounted pointer into a refcounted one
+ // immediately:
+ g_xUnoVirtualMachine = reinterpret_cast< jvmaccess::UnoVirtualMachine * >(pointer);
+
+ if ( g_xUnoVirtualMachine.is() )
+ {
+ OUString sJava(RTL_CONSTASCII_USTRINGPARAM("java"));
+ uno_getEnvironment(&pJava_environment, sJava.pData, g_xUnoVirtualMachine.get());
+
+ OUString sCppu_current_lb_name(RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME));
+ uno_getEnvironment(&pUno_environment, sCppu_current_lb_name.pData, NULL);
+
+ if ( pJava_environment && pUno_environment )
+ {
+ g_unoMapping = Mapping(pUno_environment, pJava_environment);
+ getCppuType((::com::sun::star::uno::Reference< XAccessible > *) 0).getDescription((typelib_TypeDescription **) & g_pTypeDescription);
+ }
+
+ if ( pJava_environment )
+ {
+ // release java environment
+ pJava_environment->release(pJava_environment);
+ pJava_environment = NULL;
+ }
+
+ if ( pUno_environment )
+ {
+ // release uno environment
+ pUno_environment->release(pUno_environment);
+ pUno_environment = NULL;
+ }
+ }
+ }
+
+ catch ( RuntimeException e)
+ {
+ OSL_TRACE("RuntimeException caught while initializing the mapping");
+ }
+
+ if ( (0 != g_jmRegisterTopWindow) && (0 != g_jmRevokeTopWindow) )
+ {
+ ::Application::AddEventListener(g_aEventListenerLink);
+ }
+ return JNI_TRUE;
+}
+
+JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *)
+{
+ ::Application::RemoveEventListener(g_aEventListenerLink);
+
+ if ( NULL != g_jcWindowsAccessBridgeAdapter )
+ {
+ JNIEnv * pJNIEnv;
+ if ( ! jvm->GetEnv((void **) &pJNIEnv, JNI_VERSION_1_2) )
+ {
+ pJNIEnv->DeleteGlobalRef(g_jcWindowsAccessBridgeAdapter);
+ g_jcWindowsAccessBridgeAdapter = NULL;
+ }
+ }
+
+ if ( NULL != g_pTypeDescription )
+ {
+ typelib_typedescription_release( reinterpret_cast< typelib_TypeDescription * > (g_pTypeDescription) );
+ g_pTypeDescription = NULL;
+ }
+
+ g_unoMapping.clear();
+ g_xUnoVirtualMachine.clear();
+}
+
+HWND GetHWND(Window * pWindow)
+{
+ const SystemEnvData * pEnvData = pWindow->GetSystemData();
+ if (pEnvData != NULL)
+ {
+ return pEnvData->hWnd;
+ }
+ return (HWND) -1;
+}
+
+void handleWindowEvent(Window * pWindow, bool bShow)
+{
+ if ( pWindow && pWindow->IsTopWindow() )
+ {
+ ::com::sun::star::uno::Reference< XAccessible > xAccessible;
+
+ // Test for combo box - drop down floating windows first
+ Window * pParentWindow = pWindow->GetParent();
+
+ if ( pParentWindow )
+ {
+ try
+ {
+ // The parent window of a combo box floating window should have the role COMBO_BOX
+ ::com::sun::star::uno::Reference< XAccessible > xParentAccessible(pParentWindow->GetAccessible());
+ if ( xParentAccessible.is() )
+ {
+ ::com::sun::star::uno::Reference< XAccessibleContext > xParentAC(xParentAccessible->getAccessibleContext());
+ if ( xParentAC.is() && (AccessibleRole::COMBO_BOX == xParentAC->getAccessibleRole()) )
+ {
+ // O.k. - this is a combo box floating window corresponding to the child of role LIST of the parent.
+ // Let's not rely on a specific child order, just search for the child with the role LIST
+ sal_Int32 nCount = xParentAC->getAccessibleChildCount();
+ for ( sal_Int32 n = 0; (n < nCount) && !xAccessible.is(); n++)
+ {
+ ::com::sun::star::uno::Reference< XAccessible > xChild = xParentAC->getAccessibleChild(n);
+ if ( xChild.is() )
+ {
+ ::com::sun::star::uno::Reference< XAccessibleContext > xChildAC = xChild->getAccessibleContext();
+ if ( xChildAC.is() && (AccessibleRole::LIST == xChildAC->getAccessibleRole()) )
+ {
+ xAccessible = xChild;
+ }
+ }
+ }
+ }
+ }
+ }
+ catch (::com::sun::star::uno::RuntimeException e)
+ {
+ // Ignore show events that throw DisposedExceptions in getAccessibleContext(),
+ // but keep revoking these windows in hide(s).
+ if (bShow)
+ return;
+ }
+ }
+
+ // We have to rely on the fact that Window::GetAccessible()->getAccessibleContext() returns a valid XAccessibleContext
+ // also for other menus than menubar or toplevel popup window. Otherwise we had to traverse the hierarchy to find the
+ // context object to this menu floater. This makes the call to Window->IsMenuFloatingWindow() obsolete.
+ if ( ! xAccessible.is() )
+ xAccessible = pWindow->GetAccessible();
+
+ if ( xAccessible.is() && g_unoMapping.is() )
+ {
+ jobject * joXAccessible = reinterpret_cast < jobject * > (g_unoMapping.mapInterface(
+ xAccessible.get(), g_pTypeDescription));
+
+ if ( NULL != joXAccessible )
+ {
+ jvmaccess::VirtualMachine::AttachGuard aGuard(g_xUnoVirtualMachine->getVirtualMachine());
+ JNIEnv * pJNIEnv = aGuard.getEnvironment();
+
+ if ( NULL != pJNIEnv )
+ {
+ // g_jmRegisterTopWindow and g_jmRevokeTopWindow are ensured to be != 0 - otherwise
+ // the event listener would not have been attached.
+ pJNIEnv->CallStaticVoidMethod(g_jcWindowsAccessBridgeAdapter,
+ (bShow) ? g_jmRegisterTopWindow : g_jmRevokeTopWindow,
+ (jint) GetHWND(pWindow), joXAccessible );
+
+ // Clear any exception that might have been occured.
+ if (pJNIEnv->ExceptionCheck()) {
+ pJNIEnv->ExceptionClear();
+ }
+ }
+ }
+ }
+ }
+}
+
+long VCLEventListenerLinkFunc(void *, void * pData)
+{
+ ::VclSimpleEvent const * pEvent = (::VclSimpleEvent const *) pData;
+
+ switch (pEvent->GetId())
+ {
+ case VCLEVENT_WINDOW_SHOW:
+ handleWindowEvent(((::VclWindowEvent const *) pEvent)->GetWindow(), true);
+ break;
+ case VCLEVENT_WINDOW_HIDE:
+ handleWindowEvent(((::VclWindowEvent const *) pEvent)->GetWindow(), false);
+ break;
+ }
+
+ return 0;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/bridge/source/java/exports.dxp b/accessibility/bridge/source/java/exports.dxp
new file mode 100644
index 000000000000..c97dba7d0047
--- /dev/null
+++ b/accessibility/bridge/source/java/exports.dxp
@@ -0,0 +1,4 @@
+JNI_OnLoad
+JNI_OnUnload
+Java_org_openoffice_accessibility_WindowsAccessBridgeAdapter_getProcessID
+Java_org_openoffice_accessibility_WindowsAccessBridgeAdapter_createMapping
diff --git a/accessibility/bridge/source/java/makefile.mk b/accessibility/bridge/source/java/makefile.mk
new file mode 100644
index 000000000000..6bb380725ac0
--- /dev/null
+++ b/accessibility/bridge/source/java/makefile.mk
@@ -0,0 +1,70 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+PRJNAME=accessibility
+TARGET=accessbridge
+LIBTARGET=NO
+USE_DEFFILE=TRUE
+ENABLE_EXCEPTIONS=TRUE
+VERSIONOBJ=
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+.IF "$(GUI)"=="WNT"
+
+SLOFILES= $(SLO)$/WindowsAccessBridgeAdapter.obj
+
+SHL1TARGET=java_uno_accessbridge
+SHL1IMPLIB=i$(SHL1TARGET)
+SHL1STDLIBS=$(VCLLIB) $(TOOLSLIB) $(JVMACCESSLIB) $(CPPULIB) $(SALLIB)
+SHL1OBJS=$(SLOFILES)
+SHL1VERSIONOBJ=
+
+DEF1NAME=$(SHL1TARGET)
+DEF1EXPORTFILE=exports.dxp
+
+SHL1HEADER=$(OUT)$/inc$/WindowsAccessBridgeAdapter.h
+
+.ENDIF # "$(GUI)"=="WNT"
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(GUI)"=="WNT"
+
+$(SLO)$/WindowsAccessBridgeAdapter.obj : $(SHL1HEADER)
+
+$(SHL1HEADER) :
+ javah -classpath $(OUT)$/class -o $(SHL1HEADER) org.openoffice.accessibility.WindowsAccessBridgeAdapter
+
+.ENDIF # "$(GUI)"=="WNT"
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBox.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBox.hxx
new file mode 100644
index 000000000000..82c09c8b13bc
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBox.hxx
@@ -0,0 +1,313 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOX_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOX_HXX
+
+#include <accessibility/extended/AccessibleBrowseBoxBase.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <svtools/accessibletableprovider.hxx>
+
+
+#include <memory>
+
+// ============================================================================
+
+namespace accessibility {
+
+ class AccessibleBrowseBoxImpl;
+ class AccessibleBrowseBoxTable;
+
+// ============================================================================
+
+/** This class represents the complete accessible BrowseBox object. */
+class AccessibleBrowseBox : public AccessibleBrowseBoxBase
+{
+ friend class AccessibleBrowseBoxAccess;
+
+protected:
+ AccessibleBrowseBox(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxCreator,
+ ::svt::IAccessibleTableProvider& _rBrowseBox
+ );
+
+ virtual ~AccessibleBrowseBox();
+
+ /** sets the XAccessible which created the context
+
+ <p>To be called only once, and only if in the ctor NULL was passed.</p>
+ */
+ void setCreator(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxCreator
+ );
+
+ /** Cleans up members. */
+ using AccessibleBrowseBoxBase::disposing;
+ virtual void SAL_CALL disposing();
+
+protected:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return The count of visible children. */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the specified child. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The role of this object (a table). */
+// virtual sal_Int16 SAL_CALL getAccessibleRole()
+// throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return
+ The accessible child rendered under the given point.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to the BrowseBox. */
+ virtual void SAL_CALL grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The key bindings associated with this object. */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return
+ The name of this class.
+ */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+public:
+ // helper functions
+ /** commitHeaderBarEvent commit the event at all listeners of the column/row header bar
+ @param nEventId
+ the event id
+ @param rNewValue
+ the new value
+ @param rOldValue
+ the old value
+ */
+ void commitHeaderBarEvent(sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue,
+ const ::com::sun::star::uno::Any& rOldValue,sal_Bool _bColumnHeaderBar = sal_True);
+
+ // helper functions
+ /** commitTableEvent commit the event at all listeners of the table
+ @param nEventId
+ the event id
+ @param rNewValue
+ the new value
+ @param rOldValue
+ the old value
+ */
+ void commitTableEvent(sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue,
+ const ::com::sun::star::uno::Any& rOldValue);
+
+ /** returns the accessible object for the row or the column header bar
+ */
+ inline ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ getHeaderBar( ::svt::AccessibleBrowseBoxObjType _eObjType )
+ {
+ return implGetHeaderBar(_eObjType);
+ }
+
+ /** returns the accessible object for the table representation
+ */
+ inline ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ getTable( )
+ {
+ return implGetTable();
+ }
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox();
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+ // internal helper methods ------------------------------------------------
+
+ /** This method creates (once) and returns the accessible data table child.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the data table. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > implGetTable();
+
+ /** This method creates (once) and returns the specified header bar.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the header bar. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ implGetHeaderBar( ::svt::AccessibleBrowseBoxObjType eObjType );
+
+ /** This method returns one of the children that are always present:
+ Data table, row and column header bar or corner control.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the specified child. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ implGetFixedChild( sal_Int32 nChildIndex );
+
+ /** This method creates and returns an accessible table.
+ @return An AccessibleBrowseBoxTable. */
+ virtual AccessibleBrowseBoxTable* createAccessibleTable();
+
+private:
+ // members ----------------------------------------------------------------
+ ::std::auto_ptr< AccessibleBrowseBoxImpl > m_pImpl;
+};
+
+// ============================================================================
+/** the XAccessible which creates/returns an AccessibleBrowseBox
+
+ <p>The instance holds it's XAccessibleContext with a hard reference, while
+ the contxt holds this instance weak.</p>
+*/
+typedef ::cppu::WeakImplHelper1 < ::com::sun::star::accessibility::XAccessible
+ > AccessibleBrowseBoxAccess_Base;
+
+class AccessibleBrowseBoxAccess :public AccessibleBrowseBoxAccess_Base
+ ,public ::svt::IAccessibleBrowseBox
+{
+private:
+ ::osl::Mutex m_aMutex;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ m_xParent;
+ ::svt::IAccessibleTableProvider& m_rBrowseBox;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ m_xContext;
+ AccessibleBrowseBox* m_pContext;
+ // note that this pointer is valid as long as m_xContext is valid!
+
+public:
+ AccessibleBrowseBoxAccess(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ ::svt::IAccessibleTableProvider& _rBrowseBox
+ );
+
+ /// checks whether the accessible context is still alive
+ bool isContextAlive() const;
+
+ /// returns the AccessibleContext belonging to this Accessible
+ inline AccessibleBrowseBox* getContext() { return m_pContext; }
+ inline const AccessibleBrowseBox* getContext() const { return m_pContext; }
+
+protected:
+ virtual ~AccessibleBrowseBoxAccess();
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ SAL_CALL getAccessibleContext() throw ( ::com::sun::star::uno::RuntimeException );
+
+ // IAccessibleBrowseBox
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getMyself()
+ {
+ return this;
+ }
+ void dispose();
+ virtual sal_Bool isAlive() const
+ {
+ return isContextAlive();
+ }
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getHeaderBar( ::svt::AccessibleBrowseBoxObjType _eObjType )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAccessible;
+ AccessibleBrowseBox* pContext( getContext() );
+ if ( pContext )
+ xAccessible = pContext->getHeaderBar( _eObjType );
+ return xAccessible;
+ }
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getTable()
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAccessible;
+ AccessibleBrowseBox* pContext( getContext() );
+ if ( pContext )
+ xAccessible = pContext->getTable();
+ return xAccessible;
+ }
+ virtual void commitHeaderBarEvent( sal_Int16 nEventId, const ::com::sun::star::uno::Any& rNewValue,
+ const ::com::sun::star::uno::Any& rOldValue, sal_Bool _bColumnHeaderBar )
+ {
+ AccessibleBrowseBox* pContext( getContext() );
+ if ( pContext )
+ pContext->commitHeaderBarEvent( nEventId, rNewValue, rOldValue, _bColumnHeaderBar );
+ }
+ virtual void commitTableEvent( sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue, const ::com::sun::star::uno::Any& rOldValue )
+ {
+ AccessibleBrowseBox* pContext( getContext() );
+ if ( pContext )
+ pContext->commitTableEvent( nEventId, rNewValue, rOldValue );
+ }
+ virtual void commitEvent( sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue, const ::com::sun::star::uno::Any& rOldValue )
+ {
+ AccessibleBrowseBox* pContext( getContext() );
+ if ( pContext )
+ pContext->commitEvent( nEventId, rNewValue, rOldValue );
+ }
+
+private:
+ AccessibleBrowseBoxAccess(); // never implemented
+ AccessibleBrowseBoxAccess( const AccessibleBrowseBoxAccess& ); // never implemented
+ AccessibleBrowseBoxAccess& operator=( const AccessibleBrowseBoxAccess& ); // never implemented
+};
+
+// ============================================================================
+} // namespace accessibility
+
+// ============================================================================
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBoxBase.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxBase.hxx
new file mode 100644
index 000000000000..67f0574ab436
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxBase.hxx
@@ -0,0 +1,520 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXBASE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXBASE_HXX
+
+#include <svtools/AccessibleBrowseBoxObjType.hxx>
+#include <tools/debug.hxx>
+#include <rtl/ustring.hxx>
+#include <tools/gen.hxx>
+#include <vcl/svapp.hxx>
+#include <cppuhelper/compbase5.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <comphelper/accessibleeventnotifier.hxx>
+#include <comphelper/uno3.hxx>
+
+// ============================================================================
+
+class Window;
+
+namespace utl {
+ class AccessibleStateSetHelper;
+}
+
+namespace svt {
+ class IAccessibleTableProvider;
+}
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+typedef ::cppu::WeakAggComponentImplHelper5<
+ ::com::sun::star::accessibility::XAccessibleContext,
+ ::com::sun::star::accessibility::XAccessibleComponent,
+ ::com::sun::star::accessibility::XAccessibleEventBroadcaster,
+ ::com::sun::star::awt::XFocusListener,
+ ::com::sun::star::lang::XServiceInfo >
+ AccessibleBrowseBoxImplHelper;
+
+/** The BrowseBox accessible objects inherit from this base class. It
+ implements basic functionality for various Accessibility interfaces and
+ the event broadcaster and contains the ::osl::Mutex. */
+class AccessibleBrowseBoxBase :
+ public ::comphelper::OBaseMutex,
+ public AccessibleBrowseBoxImplHelper
+{
+public:
+ /** Constructor sets specified name and description. If the constant of a
+ text is BBTEXT_NONE, the derived class has to set the text via
+ implSetName() and implSetDescription() (in Ctor) or later via
+ setAccessibleName() and setAccessibleDescription() (these methods
+ notify the listeners about the change).
+ @param rxParent XAccessible interface of the parent object.
+ @param rBrowseBox The BrowseBox control.
+ @param eNameText The constant for the name text.
+ @param eDescrText The constant for the description text. */
+ AccessibleBrowseBoxBase(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ ::svt::AccessibleBrowseBoxObjType eObjType );
+
+ /** Constructor sets specified name and description.
+ @param rxParent XAccessible interface of the parent object.
+ @param rBrowseBox The BrowseBox control.
+ @param rName The name of this object.
+ @param rDescription The description text of this object. */
+ AccessibleBrowseBoxBase(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ ::svt::AccessibleBrowseBoxObjType eObjType,
+ const ::rtl::OUString& rName,
+ const ::rtl::OUString& rDescription );
+
+protected:
+ virtual ~AccessibleBrowseBoxBase();
+
+ /** Commits DeFunc event to listeners and cleans up members. */
+ virtual void SAL_CALL disposing();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return A reference to the parent accessible object. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The description of this object.
+ */
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The name of this object.
+ */
+ virtual ::rtl::OUString SAL_CALL getAccessibleName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The relation set (the BrowseBox does not have one).
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL
+ getAccessibleRelationSet()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The set of current states. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL
+ getAccessibleStateSet()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The parent's locale. */
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale()
+ throw ( ::com::sun::star::accessibility::IllegalAccessibleComponentStateException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The role of this object. Panel, ROWHEADER, COLUMNHEADER, TABLE, TABLE_CELL are supported.
+ */
+ virtual sal_Int16 SAL_CALL getAccessibleRole()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getAccessibleChildCount,
+ - getAccessibleChild,
+ - getAccessibleRole.
+ Derived classes may overwrite getAccessibleIndexInParent to increase
+ performance. */
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return
+ <TRUE/>, if the point lies within the bounding box of this object. */
+ virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The bounding box of this object. */
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The upper left corner of the bounding box relative to the parent. */
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The upper left corner of the bounding box in screen coordinates. */
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The size of the bounding box. */
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the object is showing. */
+ virtual sal_Bool SAL_CALL isShowing()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the object is visible. */
+ virtual sal_Bool SAL_CALL isVisible()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the object can accept the focus. */
+ virtual sal_Bool SAL_CALL isFocusTraversable()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XFocusListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL focusGained( const ::com::sun::star::awt::FocusEvent& e ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL focusLost( const ::com::sun::star::awt::FocusEvent& e ) throw (::com::sun::star::uno::RuntimeException);
+
+ /* Derived classes have to implement:
+ - getAccessibleAt,
+ - grabFocus,
+ - getAccessibleKeyBinding. */
+
+ /** @return
+ No key bindings supported by default.
+ */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+ /** @return
+ The accessible child rendered under the given point.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleEventBroadcaster --------------------------------------------
+
+ /** Adds a new event listener */
+ using cppu::WeakAggComponentImplHelperBase::addEventListener;
+ virtual void SAL_CALL addEventListener(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener>& rxListener )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Removes an event listener. */
+ using cppu::WeakAggComponentImplHelperBase::removeEventListener;
+ virtual void SAL_CALL removeEventListener(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener>& rxListener )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XTypeProvider ----------------------------------------------------------
+
+ /** @return An unique implementation ID. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return Whether the specified service is supported by this class. */
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return A list of all supported services. */
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getImplementationName. */
+
+ // helper methods ---------------------------------------------------------
+
+ /** @return The BrowseBox object type. */
+ inline ::svt::AccessibleBrowseBoxObjType getType() const;
+
+ /** Changes the name of the object and notifies listeners. */
+ void setAccessibleName( const ::rtl::OUString& rName );
+ /** Changes the description of the object and notifies listeners. */
+ void setAccessibleDescription( const ::rtl::OUString& rDescription );
+
+ /** Commits an event to all listeners. */
+ void commitEvent(
+ sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue,
+
+ const ::com::sun::star::uno::Any& rOldValue );
+ /** @return <TRUE/>, if the object is not disposed or disposing. */
+ sal_Bool isAlive() const;
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** Determines whether the BrowseBox control is really showing inside of
+ its parent accessible window. Derived classes may implement different
+ behaviour.
+ @attention This method requires locked mutex's and a living object.
+ @return <TRUE/>, if the object is really showing. */
+ virtual sal_Bool implIsShowing();
+
+ /** Derived classes return the bounding box relative to the parent window.
+ @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox() = 0;
+ /** Derived classes return the bounding box in screen coordinates.
+ @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen() = 0;
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object. This method calls FillStateSet at the BrowseBox which
+ fills it with more states depending on the object type. Derived classes
+ may overwrite this method and add more states.
+ @attention This method requires locked mutex's.
+ @return A filled AccessibleStateSetHelper. */
+ virtual ::utl::AccessibleStateSetHelper* implCreateStateSetHelper();
+
+ // internal helper methods ------------------------------------------------
+
+ /** @throws <type>DisposedException</type> If the object is not alive. */
+ void ensureIsAlive() const
+ throw ( ::com::sun::star::lang::DisposedException );
+
+ /** @return The ::osl::Mutex member provided by the class OBaseMutex. */
+ inline ::osl::Mutex& getOslMutex();
+ /** @return Pointer to the global ::osl::Mutex. */
+ static inline ::osl::Mutex* getOslGlobalMutex();
+
+ /** Changes the name of the object (flat assignment, no notify).
+ @attention This method requires a locked mutex. */
+ inline void implSetName( const ::rtl::OUString& rName );
+ /** Changes the description of the object (flat assignment, no notify).
+ @attention This method requires a locked mutex. */
+ inline void implSetDescription( const ::rtl::OUString& rDescription );
+
+ /** Locks all mutex's and calculates the bounding box relative to the
+ parent window.
+ @return The bounding box (VCL rect.) relative to the parent object. */
+ Rectangle getBoundingBox()
+ throw ( ::com::sun::star::lang::DisposedException );
+ /** Locks all mutex's and calculates the bounding box in screen
+ coordinates.
+ @return The bounding box (VCL rect.) in screen coordinates. */
+ Rectangle getBoundingBoxOnScreen()
+ throw ( ::com::sun::star::lang::DisposedException );
+
+ /** Creates a new UUID, if rId is empty.
+ @attention This method requires locked global mutex to prevent double
+ creation of an UUID. */
+ static void implCreateUuid( ::com::sun::star::uno::Sequence< sal_Int8 >& rId );
+
+ ::comphelper::AccessibleEventNotifier::TClientId getClientId() const { return m_aClientId; }
+ void setClientId(::comphelper::AccessibleEventNotifier::TClientId _aNewClientId) { m_aClientId = _aNewClientId; }
+
+public:
+ // public versions of internal helper methods, with access control
+ struct AccessControl { friend class SolarMethodGuard; private: AccessControl() { } };
+
+ inline ::osl::Mutex& getMutex( const AccessControl& ) { return getOslMutex(); }
+ inline void ensureIsAlive( const AccessControl& ) { ensureIsAlive(); }
+
+protected:
+ // members ----------------------------------------------------------------
+
+ /** The parent accessible object. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > mxParent;
+ /** The VCL BrowseBox control. */
+ ::svt::IAccessibleTableProvider* mpBrowseBox;
+
+ /** This is the window which get all the nice focus events
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > m_xFocusWindow;
+
+private:
+ /** Localized name. */
+ ::rtl::OUString maName;
+ /** Localized description text. */
+ ::rtl::OUString maDescription;
+
+ /** The type of this object (for names, descriptions, state sets, ...). */
+ ::svt::AccessibleBrowseBoxObjType meObjType;
+
+ ::comphelper::AccessibleEventNotifier::TClientId m_aClientId;
+};
+
+// ============================================================================
+// a version of AccessibleBrowseBoxBase which implements not only the XAccessibleContext,
+// but also the XAccessible
+
+typedef ::cppu::ImplHelper1 < ::com::sun::star::accessibility::XAccessible
+ > BrowseBoxAccessibleElement_Base;
+
+class BrowseBoxAccessibleElement
+ :public AccessibleBrowseBoxBase
+ ,public BrowseBoxAccessibleElement_Base
+{
+protected:
+ /** Constructor sets specified name and description. If the constant of a
+ text is BBTEXT_NONE, the derived class has to set the text via
+ implSetName() and implSetDescription() (in Ctor) or later via
+ setAccessibleName() and setAccessibleDescription() (these methods
+ notify the listeners about the change).
+
+ @param rxParent XAccessible interface of the parent object.
+ @param rBrowseBox The BrowseBox control.
+ @param eNameText The constant for the name text.
+ @param eDescrText The constant for the description text.
+ */
+ BrowseBoxAccessibleElement(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ ::svt::AccessibleBrowseBoxObjType eObjType );
+
+ /** Constructor sets specified name and description.
+
+ @param rxParent XAccessible interface of the parent object.
+ @param rBrowseBox The BrowseBox control.
+ @param rName The name of this object.
+ @param rDescription The description text of this object.
+ */
+ BrowseBoxAccessibleElement(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ ::svt::AccessibleBrowseBoxObjType eObjType,
+ const ::rtl::OUString& rName,
+ const ::rtl::OUString& rDescription );
+
+public:
+ // XInterface
+ DECLARE_XINTERFACE( )
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+protected:
+ virtual ~BrowseBoxAccessibleElement();
+
+protected:
+ // XAccessible ------------------------------------------------------------
+
+ /** @return The XAccessibleContext interface of this object. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL
+ getAccessibleContext()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+private:
+ BrowseBoxAccessibleElement(); // never implemented
+ BrowseBoxAccessibleElement( const BrowseBoxAccessibleElement& ); // never implemented
+ BrowseBoxAccessibleElement& operator=( const BrowseBoxAccessibleElement& ); // never implemented
+};
+
+// ============================================================================
+// a helper class for protecting methods which need to lock the solar mutex in addition to the own mutex
+
+typedef ::osl::MutexGuard OslMutexGuard;
+
+class SolarMethodGuard : public SolarMutexGuard, public OslMutexGuard
+{
+public:
+ inline SolarMethodGuard( AccessibleBrowseBoxBase& _rOwner, bool _bEnsureAlive = true )
+ :SolarMutexGuard( )
+ ,OslMutexGuard( _rOwner.getMutex( AccessibleBrowseBoxBase::AccessControl() ) )
+ {
+ if ( _bEnsureAlive )
+ _rOwner.ensureIsAlive( AccessibleBrowseBoxBase::AccessControl() );
+ }
+};
+
+// inlines --------------------------------------------------------------------
+
+inline ::svt::AccessibleBrowseBoxObjType AccessibleBrowseBoxBase::getType() const
+{
+ return meObjType;
+}
+
+inline ::osl::Mutex& AccessibleBrowseBoxBase::getOslMutex()
+{
+ return m_aMutex;
+}
+
+inline ::osl::Mutex* AccessibleBrowseBoxBase::getOslGlobalMutex()
+{
+ return ::osl::Mutex::getGlobalMutex();
+}
+
+inline void AccessibleBrowseBoxBase::implSetName(
+ const ::rtl::OUString& rName )
+{
+ maName = rName;
+}
+
+inline void AccessibleBrowseBoxBase::implSetDescription(
+ const ::rtl::OUString& rDescription )
+{
+ maDescription = rDescription;
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx
new file mode 100644
index 000000000000..8346c1173fb3
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx
@@ -0,0 +1,95 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXCHECKBOXCELL_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXCHECKBOXCELL_HXX
+
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include "accessibility/extended/accessiblebrowseboxcell.hxx"
+#include <cppuhelper/implbase2.hxx>
+#include <vcl/wintypes.hxx>
+// ============================================================================
+namespace accessibility
+{
+// ============================================================================
+ typedef ::cppu::ImplHelper2 < ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleValue
+ > AccessibleCheckBoxCell_BASE;
+
+ class AccessibleCheckBoxCell : public AccessibleBrowseBoxCell
+ ,public AccessibleCheckBoxCell_BASE
+ {
+ private:
+ TriState m_eState;
+ BOOL m_bEnabled;
+ BOOL m_bIsTriState;
+
+ protected:
+ virtual ~AccessibleCheckBoxCell() {}
+
+ virtual ::utl::AccessibleStateSetHelper* implCreateStateSetHelper();
+
+ public:
+ AccessibleCheckBoxCell(const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ ::svt::IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos,
+ const TriState& _eState,
+ sal_Bool _bEnabled,
+ sal_Bool _bIsTriState = sal_True);
+
+ // XInterface
+ DECLARE_XINTERFACE( )
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw ( ::com::sun::star::uno::RuntimeException );
+ virtual ::sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+
+
+ // XAccessibleValue
+ virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // internal
+ void SetChecked( sal_Bool _bChecked );
+ };
+}
+#endif // ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXCHECKBOXCELL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx
new file mode 100644
index 000000000000..92cb1b5d2d71
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx
@@ -0,0 +1,283 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXHEADERBAR_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXHEADERBAR_HXX
+
+#include "accessibility/extended/AccessibleBrowseBoxTableBase.hxx"
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+typedef ::cppu::ImplHelper1<
+ ::com::sun::star::accessibility::XAccessibleSelection >
+ AccessibleBrowseBoxHeaderBarImplHelper;
+
+/** This class represents the accessible object of a header bar of a BrowseBox
+ control (row or column header bar). This object supports the
+ XAccessibleSelection interface. Selecting a child of this object selects
+ complete rows or columns of the data table. */
+class AccessibleBrowseBoxHeaderBar :
+ public AccessibleBrowseBoxTableBase,
+ public AccessibleBrowseBoxHeaderBarImplHelper
+{
+public:
+ /** @param eObjType One of the two allowed types BBTYPE_ROWHEADERBAR or
+ BBTYPE_COLUMNHEADERBAR. */
+ AccessibleBrowseBoxHeaderBar(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& rBrowseBox,
+ ::svt::AccessibleBrowseBoxObjType eObjType );
+
+protected:
+ virtual ~AccessibleBrowseBoxHeaderBar();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return
+ The XAccessible interface of the specified child.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return The accessible child rendered under the given point. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to (the current cell of) the data table. */
+ virtual void SAL_CALL grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The key bindings associated with this object. */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleTable -------------------------------------------------------
+
+ /** @return The description text of the specified row. */
+ virtual ::rtl::OUString SAL_CALL
+ getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The description text of the specified column. */
+ virtual ::rtl::OUString SAL_CALL
+ getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the row header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleRowHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the column header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleColumnHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected rows. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleRows()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected columns. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleColumns()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified row is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified column is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the cell object at the specified
+ cell position. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified cell is selected. */
+ virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleSelection ---------------------------------------------------
+
+ /** Selects the specified child (row or column of the table). */
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified child (row/column) is selected. */
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** Clears the complete selection. */
+ virtual void SAL_CALL clearAccessibleSelection()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Selects all children or first, if multiselection is not supported. */
+ virtual void SAL_CALL selectAllAccessibleChildren()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The number of selected rows/columns. */
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The specified selected row/column. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** Removes the specified row/column from the selection. */
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Aquires the object (calls acquire() on base class). */
+ virtual void SAL_CALL acquire() throw ();
+
+ /** Releases the object (calls release() on base class). */
+ virtual void SAL_CALL release() throw ();
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return The name of this class. */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An unique implementation ID. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox();
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of used rows. */
+ virtual sal_Int32 implGetRowCount() const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of used columns. */
+ virtual sal_Int32 implGetColumnCount() const;
+
+ // internal helper methods ------------------------------------------------
+
+ /** @return <TRUE/>, if the objects is a header bar for rows. */
+ inline sal_Bool isRowBar() const;
+ /** @return <TRUE/>, if the objects is a header bar for columns. */
+ inline sal_Bool isColumnBar() const;
+
+ /** Returns the specified row or column. Uses one of the parameters,
+ depending on object type.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the specified column/row. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ implGetChild( sal_Int32 nRow, sal_uInt16 nColumnPos );
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The absolute child index from the index of selected children.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified index is invalid. */
+ sal_Int32 implGetChildIndexFromSelectedIndex( sal_Int32 nSelectedChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified row/column index (depending on type) is invalid. */
+ void ensureIsValidHeaderIndex( sal_Int32 nIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+};
+
+// inlines --------------------------------------------------------------------
+
+inline sal_Bool AccessibleBrowseBoxHeaderBar::isRowBar() const
+{
+ return getType() == ::svt::BBTYPE_ROWHEADERBAR;
+}
+
+inline sal_Bool AccessibleBrowseBoxHeaderBar::isColumnBar() const
+{
+ return getType() == ::svt::BBTYPE_COLUMNHEADERBAR;
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderCell.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderCell.hxx
new file mode 100644
index 000000000000..2c55887462cb
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxHeaderCell.hxx
@@ -0,0 +1,83 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXHEADERCELL_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXHEADERCELL_HXX
+
+#include "accessibility/extended/AccessibleBrowseBoxBase.hxx"
+
+namespace accessibility
+{
+ class AccessibleBrowseBoxHeaderCell : public BrowseBoxAccessibleElement
+ {
+ sal_Int32 m_nColumnRowId;
+ public:
+ AccessibleBrowseBoxHeaderCell(sal_Int32 _nColumnRowId,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ ::svt::AccessibleBrowseBoxObjType _eObjType);
+ /** @return The count of visible children. */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount() throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the specified child. */
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to the BrowseBox. */
+ virtual void SAL_CALL grabFocus() throw ( ::com::sun::star::uno::RuntimeException );
+
+ inline sal_Bool isRowBarCell() const
+ {
+ return getType() == ::svt::BBTYPE_ROWHEADERCELL;
+ }
+
+ /** @return
+ The name of this class.
+ */
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+ */
+ ::utl::AccessibleStateSetHelper* implCreateStateSetHelper();
+
+ protected:
+ virtual Rectangle implGetBoundingBox();
+
+ virtual Rectangle implGetBoundingBoxOnScreen();
+ };
+}
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXHEADERCELL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTable.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTable.hxx
new file mode 100644
index 000000000000..021f1c614324
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTable.hxx
@@ -0,0 +1,177 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXTABLE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXTABLE_HXX
+
+#include "accessibility/extended/AccessibleBrowseBoxTableBase.hxx"
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+/** This class represents the accessible object of the data table of a
+ BrowseBox control. */
+class AccessibleBrowseBoxTable : public AccessibleBrowseBoxTableBase
+{
+ friend class AccessibleBrowseBox; // to create header bars
+
+public:
+ AccessibleBrowseBoxTable(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& rBrowseBox );
+
+protected:
+ virtual ~AccessibleBrowseBoxTable();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return The XAccessible interface of the specified child. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return The accessible child rendered under the given point. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to (the current cell of) the data table. */
+ virtual void SAL_CALL grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The key bindings associated with this object. */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleTable -------------------------------------------------------
+
+ /** @return The description text of the specified row. */
+ virtual ::rtl::OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The description text of the specified column. */
+ virtual ::rtl::OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the row header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleRowHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the column header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleColumnHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected rows. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleRows()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected columns. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleColumns()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified row is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified column is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the cell object at the specified
+ cell position. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified cell is selected. */
+ virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return The name of this class. */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox();
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+ // internal helper methods ------------------------------------------------
+
+ /** @attention This method requires a locked mutex.
+ @return The XAccessibleTable interface of the specified header bar. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable >
+ implGetHeaderBar( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::uno::RuntimeException );
+};
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableBase.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableBase.hxx
new file mode 100644
index 000000000000..d775104614c6
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableBase.hxx
@@ -0,0 +1,282 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXTABLEBASE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXTABLEBASE_HXX
+
+#include "accessibility/extended/AccessibleBrowseBoxBase.hxx"
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/accessibility/XAccessibleTable.hpp>
+
+// ============================================================================
+
+namespace accessibility {
+
+typedef ::cppu::ImplHelper1<
+ ::com::sun::star::accessibility::XAccessibleTable >
+ AccessibleBrowseBoxTableImplHelper;
+
+/** The BrowseBox accessible table objects inherit from this base class. It
+ implements basic functionality for the XAccessibleTable interface.
+ BrowseBox table objects are: the data table, the column header bar and the
+ row header bar. */
+class AccessibleBrowseBoxTableBase :
+ public BrowseBoxAccessibleElement,
+ public AccessibleBrowseBoxTableImplHelper
+{
+public:
+ /** Constructor sets specified name and description. If the constant of a
+ text is BBTEXT_NONE, the derived class has to set the text via
+ implSetName() and implSetDescription() (in Ctor) or later via
+ setAccessibleName() and setAccessibleDescription() (these methods
+ notify the listeners about the change).
+ @param rxParent XAccessible interface of the parent object.
+ @param rBrowseBox The BrowseBox control.
+ @param eNameText The constant for the name text.
+ @param eDescrText The constant for the description text. */
+ AccessibleBrowseBoxTableBase(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::IAccessibleTableProvider& rBrowseBox,
+ ::svt::AccessibleBrowseBoxObjType eObjType );
+
+protected:
+ virtual ~AccessibleBrowseBoxTableBase();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return The count of visible children. */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The role of this object (a table). */
+ virtual sal_Int16 SAL_CALL getAccessibleRole()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getAccessibleChild,
+ - getAccessibleIndexInParent. */
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /* Derived classes have to implement:
+ - getAccessibleAt,
+ - grabFocus,
+ - getAccessibleKeyBinding. */
+
+ // XAccessibleTable -------------------------------------------------------
+
+ /** @return The number of used rows in the table (0 = empty table). */
+ virtual sal_Int32 SAL_CALL getAccessibleRowCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The number of used columns in the table (0 = empty table). */
+ virtual sal_Int32 SAL_CALL getAccessibleColumnCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The row extent of the specified cell (always 1). */
+ virtual sal_Int32 SAL_CALL
+ getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The column extent of the specified cell (always 1). */
+ virtual sal_Int32 SAL_CALL
+ getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The caption cell of the table (not supported). */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleCaption()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The summary object of the table (not supported). */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleSummary()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The child index of the specified cell. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The row index of the specified child cell. */
+ virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The column index of the specified child cell. */
+ virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getAccessibleRowDescription,
+ - getAccessibleColumnDescription,
+ - getAccessibleRowHeaders,
+ - getAccessibleColumnHeaders,
+ - getSelectedAccessibleRows,
+ - getSelectedAccessibleColumns,
+ - isAccessibleRowSelected,
+ - isAccessibleColumnSelected,
+ - getAccessibleCellAt,
+ - isAccessibleSelected. */
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Aquires the object (calls acquire() on base class). */
+ virtual void SAL_CALL acquire() throw ();
+
+ /** Releases the object (calls release() on base class). */
+ virtual void SAL_CALL release() throw ();
+
+ // XTypeProvider ----------------------------------------------------------
+
+ /** @return A sequence of possible types (received from base classes). */
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An unique implementation ID. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /* Derived classes have to implement:
+ - getImplementationName */
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of data rows without header bar. */
+ virtual sal_Int32 implGetRowCount() const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of data columns without "handle column". */
+ virtual sal_Int32 implGetColumnCount() const;
+
+ // internal helper methods ------------------------------------------------
+
+ /** @return <TRUE/>, if first BrowseBox column is the "handle column". */
+ sal_Bool implHasHandleColumn() const;
+
+ /** @attention This method requires locked mutex's and a living object.
+ @param nColumn
+ the position of the column in the Accessible world
+ @return
+ the position of the column in VCL the Accessible world
+ */
+ sal_uInt16 implToVCLColumnPos( sal_Int32 nColumn ) const;
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The number of cells of the table. */
+ sal_Int32 implGetChildCount() const;
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The row index of the specified cell index. */
+ sal_Int32 implGetRow( sal_Int32 nChildIndex ) const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The column index of the specified cell index. */
+ sal_Int32 implGetColumn( sal_Int32 nChildIndex ) const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The child index of the specified cell address. */
+ sal_Int32 implGetChildIndex( sal_Int32 nRow, sal_Int32 nColumn ) const;
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return <TRUE/>, if the specified row is selected. */
+ sal_Bool implIsRowSelected( sal_Int32 nRow ) const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return <TRUE/>, if the specified column is selected. */
+ sal_Bool implIsColumnSelected( sal_Int32 nColumn ) const;
+
+ /** Selects/deselects a row (tries to expand selection).
+ @attention This method requires locked mutex's and a living object.
+ @param bSelect <TRUE/> = select, <FALSE/> = deselect */
+ void implSelectRow( sal_Int32 nRow, sal_Bool bSelect );
+ /** Selects/deselects a column (tries to expand selection).
+ @attention This method requires locked mutex's and a living object.
+ @param bSelect <TRUE/> = select, <FALSE/> = deselect */
+ void implSelectColumn( sal_Int32 nColumnPos, sal_Bool bSelect );
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of selected rows. */
+ sal_Int32 implGetSelectedRowCount() const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of selected columns. */
+ sal_Int32 implGetSelectedColumnCount() const;
+
+ /** Fills a sequence with sorted indexes of completely selected rows.
+ @attention This method requires locked mutex's and a living object.
+ @param rSeq Out-parameter that takes the sorted row index list. */
+ void implGetSelectedRows( ::com::sun::star::uno::Sequence< sal_Int32 >& rSeq );
+ /** Fills a sequence with sorted indexes of completely selected columns.
+ @attention This method requires locked mutex's and a living object.
+ @param rSeq Out-parameter that takes the sorted column index list. */
+ void implGetSelectedColumns( ::com::sun::star::uno::Sequence< sal_Int32 >& rSeq );
+
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified row index is invalid. */
+ void ensureIsValidRow( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified column index is invalid. */
+ void ensureIsValidColumn( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified cell address is invalid. */
+ void ensureIsValidAddress( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified child index is invalid. */
+ void ensureIsValidIndex( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+};
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableCell.hxx b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableCell.hxx
new file mode 100644
index 000000000000..b689235908c5
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleBrowseBoxTableCell.hxx
@@ -0,0 +1,145 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBILEBROWSEBOXTABLECELL_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBILEBROWSEBOXTABLECELL_HXX
+
+#include "accessibility/extended/accessiblebrowseboxcell.hxx"
+#include <comphelper/accessibletexthelper.hxx>
+#include <cppuhelper/implbase2.hxx>
+
+namespace accessibility
+{
+ typedef ::cppu::ImplHelper2 < ::com::sun::star::accessibility::XAccessibleText
+ , ::com::sun::star::accessibility::XAccessible
+ > AccessibleTextHelper_BASE;
+
+ // implementation of a table cell of BrowseBox
+ class AccessibleBrowseBoxTableCell :public AccessibleBrowseBoxCell
+ ,public AccessibleTextHelper_BASE
+ ,public ::comphelper::OCommonAccessibleText
+ {
+ private:
+ sal_Int32 m_nOffset;
+
+ protected:
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+ public:
+ AccessibleBrowseBoxTableCell( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ ::svt::IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowId,
+ sal_uInt16 _nColId,
+ sal_Int32 _nOffset );
+
+ void nameChanged( const ::rtl::OUString& rNewName, const ::rtl::OUString& rOldName );
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Aquires the object (calls acquire() on base class). */
+ virtual void SAL_CALL acquire() throw ();
+
+ /** Releases the object (calls release() on base class). */
+ virtual void SAL_CALL release() throw ();
+
+ // XEventListener
+ using AccessibleBrowseBoxBase::disposing;
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The name of this class.
+ */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The count of visible children.
+ */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The XAccessible interface of the specified child.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+ */
+ ::utl::AccessibleStateSetHelper* implCreateStateSetHelper();
+
+ // XAccessible ------------------------------------------------------------
+
+ /** @return The XAccessibleContext interface of this object. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL
+ getAccessibleContext()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ };
+}
+#endif // ACCESSIBILITY_EXT_ACCESSIBILEBROWSEBOXTABLECELL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx
new file mode 100644
index 000000000000..ff31cb78bfaa
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx
@@ -0,0 +1,267 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROL_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROL_HXX
+
+#include <accessibility/extended/AccessibleGridControlBase.hxx>
+#include <accessibility/extended/AccessibleGridControlTable.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <svtools/accessibletable.hxx>
+
+
+#include <memory>
+
+using namespace ::svt::table;
+
+// ============================================================================
+
+namespace accessibility {
+
+ class AccessibleGridControl_Impl;
+
+// ============================================================================
+
+/** This class represents the complete accessible Grid Control object. */
+class AccessibleGridControl : public AccessibleGridControlBase
+{
+ friend class AccessibleGridControlAccess;
+
+protected:
+ AccessibleGridControl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxCreator,
+ ::svt::table::IAccessibleTable& _rTable
+ );
+
+ virtual ~AccessibleGridControl();
+
+ /** Cleans up members. */
+ using AccessibleGridControlBase::disposing;
+ virtual void SAL_CALL disposing();
+
+protected:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return The count of visible children. */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the specified child. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The role of this object (a table). */
+ virtual sal_Int16 SAL_CALL getAccessibleRole()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return
+ The accessible child rendered under the given point.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to the Grid Control. */
+ virtual void SAL_CALL grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The key bindings associated with this object. */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return
+ The name of this class.
+ */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+public:
+ // helper functions
+ /** returns the accessible object for the row or the column header bar
+ */
+ inline ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ getHeaderBar( ::svt::table::AccessibleTableControlObjType _eObjType )
+ {
+ return implGetHeaderBar(_eObjType);
+ }
+
+ /** returns the accessible object for the table representation
+ */
+ inline ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ getTable( )
+ {
+ return implGetTable();
+ }
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox();
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+ // internal helper methods ------------------------------------------------
+
+ /** This method creates (once) and returns the accessible data table child.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the data table. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > implGetTable();
+
+ /** This method creates (once) and returns the specified header bar.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the header bar. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ implGetHeaderBar( ::svt::table::AccessibleTableControlObjType eObjType );
+
+ /** This method returns one of the children that are always present:
+ Data table, row and column header bar or corner control.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the specified child. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ implGetFixedChild( sal_Int32 nChildIndex );
+
+ /** This method creates and returns an accessible table.
+ @return An AccessibleGridControlTable. */
+ virtual AccessibleGridControlTable* createAccessibleTable();
+
+private:
+ // members ----------------------------------------------------------------
+ ::std::auto_ptr< AccessibleGridControl_Impl > m_pImpl;
+};
+
+// ============================================================================
+/** the XAccessible which creates/returns an AccessibleGridControl
+
+ <p>The instance holds it's XAccessibleContext with a hard reference, while
+ the contxt holds this instance weak.</p>
+*/
+typedef ::cppu::WeakImplHelper1 < ::com::sun::star::accessibility::XAccessible > AccessibleGridControlAccess_Base;
+
+class AccessibleGridControlAccess :public AccessibleGridControlAccess_Base
+ ,public ::svt::table::IAccessibleTableControl
+{
+private:
+ ::osl::Mutex m_aMutex;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ m_xParent;
+ ::svt::table::IAccessibleTable& m_rTable;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ m_xContext;
+ AccessibleGridControl* m_pContext;
+ // note that this pointer is valid as long as m_xContext is valid!
+
+public:
+ AccessibleGridControlAccess(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ ::svt::table::IAccessibleTable& _rTable
+ );
+
+ /// checks whether the accessible context is still alive
+ bool isContextAlive() const;
+
+ /// returns the AccessibleContext belonging to this Accessible
+ inline AccessibleGridControl* getContext() { return m_pContext; }
+ inline const AccessibleGridControl* getContext() const { return m_pContext; }
+
+protected:
+ virtual ~AccessibleGridControlAccess();
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ SAL_CALL getAccessibleContext() throw ( ::com::sun::star::uno::RuntimeException );
+
+ // IAccessibleTable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getMyself()
+ {
+ return this;
+ }
+ void dispose();
+ virtual sal_Bool isAlive() const
+ {
+ return isContextAlive();
+ }
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getTableHeader( ::svt::table::AccessibleTableControlObjType _eObjType )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAccessible;
+ AccessibleGridControl* pContext( getContext() );
+ if ( pContext )
+ xAccessible = pContext->getHeaderBar( _eObjType );
+ return xAccessible;
+ }
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getTable()
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAccessible;
+ AccessibleGridControl* pContext( getContext() );
+ if ( pContext )
+ xAccessible = pContext->getTable();
+ return xAccessible;
+ }
+ virtual void commitEvent( sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue, const ::com::sun::star::uno::Any& rOldValue )
+ {
+ AccessibleGridControl* pContext( getContext() );
+ if ( pContext )
+ pContext->commitEvent( nEventId, rNewValue, rOldValue );
+ }
+
+private:
+ AccessibleGridControlAccess(); // never implemented
+ AccessibleGridControlAccess( const AccessibleGridControlAccess& ); // never implemented
+ AccessibleGridControlAccess& operator=( const AccessibleGridControlAccess& ); // never implemented
+};
+
+// ============================================================================
+} // namespace accessibility
+
+// ============================================================================
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx
new file mode 100644
index 000000000000..383c6410eaeb
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx
@@ -0,0 +1,462 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLBASE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLBASE_HXX
+
+#include <svtools/accessibletable.hxx>
+#include <tools/debug.hxx>
+#include <rtl/ustring.hxx>
+#include <tools/gen.hxx>
+#include <vcl/svapp.hxx>
+#include <cppuhelper/compbase4.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <comphelper/accessibleeventnotifier.hxx>
+#include <comphelper/uno3.hxx>
+
+// ============================================================================
+
+class Window;
+
+namespace utl {
+ class AccessibleStateSetHelper;
+}
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+// ============================================================================
+
+typedef ::cppu::WeakAggComponentImplHelper4<
+ ::com::sun::star::accessibility::XAccessibleContext,
+ ::com::sun::star::accessibility::XAccessibleComponent,
+ ::com::sun::star::accessibility::XAccessibleEventBroadcaster,
+ ::com::sun::star::lang::XServiceInfo >
+ AccessibleGridControlImplHelper;
+
+/** The GridControl accessible objects inherit from this base class. It
+ implements basic functionality for various Accessibility interfaces and
+ the event broadcaster and contains the ::osl::Mutex. */
+class AccessibleGridControlBase :
+ public ::comphelper::OBaseMutex,
+ public AccessibleGridControlImplHelper
+{
+public:
+ /** Constructor sets specified name and description.
+ @param rxParent XAccessible interface of the parent object.
+ @param rTable The Table control.
+ @param eNameText The constant for the name text.
+ @param eDescrText The constant for the description text. */
+ AccessibleGridControlBase(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::table::IAccessibleTable& rTable,
+ ::svt::table::AccessibleTableControlObjType eObjType );
+
+protected:
+ virtual ~AccessibleGridControlBase();
+
+ /** Commits DeFunc event to listeners and cleans up members. */
+ virtual void SAL_CALL disposing();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return A reference to the parent accessible object. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The description of this object.
+ */
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The name of this object.
+ */
+ virtual ::rtl::OUString SAL_CALL getAccessibleName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The relation set (the GridControl does not have one).
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL
+ getAccessibleRelationSet()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The set of current states. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL
+ getAccessibleStateSet()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The parent's locale. */
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale()
+ throw ( ::com::sun::star::accessibility::IllegalAccessibleComponentStateException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The role of this object. Panel, ROWHEADER, COLUMNHEADER, TABLE, TABLE_CELL are supported.
+ */
+ virtual sal_Int16 SAL_CALL getAccessibleRole()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getAccessibleChildCount,
+ - getAccessibleChild,
+ - getAccessibleRole.
+ Derived classes may overwrite getAccessibleIndexInParent to increase
+ performance. */
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return
+ <TRUE/>, if the point lies within the bounding box of this object. */
+ virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The bounding box of this object. */
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The upper left corner of the bounding box relative to the parent. */
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The upper left corner of the bounding box in screen coordinates. */
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The size of the bounding box. */
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the object is showing. */
+ virtual sal_Bool SAL_CALL isShowing()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the object is visible. */
+ virtual sal_Bool SAL_CALL isVisible()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the object can accept the focus. */
+ virtual sal_Bool SAL_CALL isFocusTraversable()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+
+ /* Derived classes have to implement:
+ - getAccessibleAt,
+ - grabFocus,
+ - getAccessibleKeyBinding. */
+
+ /** @return
+ No key bindings supported by default.
+ */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+ /** @return
+ The accessible child rendered under the given point.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleEventBroadcaster --------------------------------------------
+
+ /** Adds a new event listener */
+ using cppu::WeakAggComponentImplHelperBase::addEventListener;
+ virtual void SAL_CALL addEventListener(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener>& rxListener )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Removes an event listener. */
+ using cppu::WeakAggComponentImplHelperBase::removeEventListener;
+ virtual void SAL_CALL removeEventListener(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener>& rxListener )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XTypeProvider ----------------------------------------------------------
+
+ /** @return An unique implementation ID. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return Whether the specified service is supported by this class. */
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return A list of all supported services. */
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getImplementationName. */
+
+ // helper methods ---------------------------------------------------------
+
+ /** @return The GridControl object type. */
+ inline ::svt::table::AccessibleTableControlObjType getType() const;
+
+ /** Commits an event to all listeners. */
+ void commitEvent(
+ sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue,
+
+ const ::com::sun::star::uno::Any& rOldValue );
+ /** @return <TRUE/>, if the object is not disposed or disposing. */
+ sal_Bool isAlive() const;
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** Determines whether the Grid control is really showing inside of
+ its parent accessible window. Derived classes may implement different
+ behaviour.
+ @attention This method requires locked mutex's and a living object.
+ @return <TRUE/>, if the object is really showing. */
+ virtual sal_Bool implIsShowing();
+
+ /** Derived classes return the bounding box relative to the parent window.
+ @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox() = 0;
+ ///** Derived classes return the bounding box in screen coordinates.
+ // @attention This method requires locked mutex's and a living object.
+ // @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen() = 0;
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object. This method calls FillStateSet at the GridControl which
+ fills it with more states depending on the object type. Derived classes
+ may overwrite this method and add more states.
+ @attention This method requires locked mutex's.
+ @return A filled AccessibleStateSetHelper. */
+ virtual ::utl::AccessibleStateSetHelper* implCreateStateSetHelper();
+
+ // internal helper methods ------------------------------------------------
+
+ /** @throws <type>DisposedException</type> If the object is not alive. */
+ void ensureIsAlive() const
+ throw ( ::com::sun::star::lang::DisposedException );
+
+ /** @return The ::osl::Mutex member provided by the class OBaseMutex. */
+ inline ::osl::Mutex& getOslMutex();
+ /** @return Pointer to the global ::osl::Mutex. */
+ static inline ::osl::Mutex* getOslGlobalMutex();
+
+ /** Changes the name of the object (flat assignment, no notify).
+ @attention This method requires a locked mutex. */
+ inline void implSetName( const ::rtl::OUString& rName );
+ /** Changes the description of the object (flat assignment, no notify).
+ @attention This method requires a locked mutex. */
+ inline void implSetDescription( const ::rtl::OUString& rDescription );
+
+ /** Locks all mutex's and calculates the bounding box relative to the
+ parent window.
+ @return The bounding box (VCL rect.) relative to the parent object. */
+ Rectangle getBoundingBox()
+ throw ( ::com::sun::star::lang::DisposedException );
+ ///** Locks all mutex's and calculates the bounding box in screen
+ // coordinates.
+ // @return The bounding box (VCL rect.) in screen coordinates. */
+ Rectangle getBoundingBoxOnScreen()
+ throw ( ::com::sun::star::lang::DisposedException );
+
+ /** Creates a new UUID, if rId is empty.
+ @attention This method requires locked global mutex to prevent double
+ creation of an UUID. */
+ static void implCreateUuid( ::com::sun::star::uno::Sequence< sal_Int8 >& rId );
+
+ ::comphelper::AccessibleEventNotifier::TClientId getClientId() const { return m_aClientId; }
+ void setClientId(::comphelper::AccessibleEventNotifier::TClientId _aNewClientId) { m_aClientId = _aNewClientId; }
+
+public:
+ // public versions of internal helper methods, with access control
+ struct TC_AccessControl { friend class TC_SolarMethodGuard; private: TC_AccessControl() { } };
+
+ inline ::osl::Mutex& getMutex( const TC_AccessControl& ) { return getOslMutex(); }
+ inline void ensureIsAlive( const TC_AccessControl& ) { ensureIsAlive(); }
+
+protected:
+ // members ----------------------------------------------------------------
+
+ /** The parent accessible object. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > m_xParent;
+ /** The SVT Table control. */
+ ::svt::table::IAccessibleTable& m_aTable;
+ /** The type of this object (for names, descriptions, state sets, ...). */
+ ::svt::table::AccessibleTableControlObjType m_eObjType;
+
+private:
+ /** Localized name. */
+ ::rtl::OUString m_aName;
+ /** Localized description text. */
+ ::rtl::OUString m_aDescription;
+ ::comphelper::AccessibleEventNotifier::TClientId m_aClientId;
+};
+
+// ============================================================================
+// a version of AccessibleGridControlBase which implements not only the XAccessibleContext,
+// but also the XAccessible
+
+typedef ::cppu::ImplHelper1 < ::com::sun::star::accessibility::XAccessible
+ > GridControlAccessibleElement_Base;
+
+class GridControlAccessibleElement
+ :public AccessibleGridControlBase
+ ,public GridControlAccessibleElement_Base
+{
+protected:
+ /** Constructor sets specified name and description.
+
+ @param rxParent XAccessible interface of the parent object.
+ @param rTable The Table control.
+ @param eNameText The constant for the name text.
+ @param eDescrText The constant for the description text.
+ */
+ GridControlAccessibleElement(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::table::IAccessibleTable& rTable,
+ ::svt::table::AccessibleTableControlObjType eObjType );
+
+public:
+ // XInterface
+ DECLARE_XINTERFACE( )
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+protected:
+ virtual ~GridControlAccessibleElement();
+
+protected:
+ // XAccessible ------------------------------------------------------------
+
+ /** @return The XAccessibleContext interface of this object. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL
+ getAccessibleContext()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+private:
+ GridControlAccessibleElement(); // never implemented
+ GridControlAccessibleElement( const GridControlAccessibleElement& ); // never implemented
+ GridControlAccessibleElement& operator=( const GridControlAccessibleElement& ); // never implemented
+};
+
+// ============================================================================
+// a helper class for protecting methods which need to lock the solar mutex in addition to the own mutex
+
+typedef ::osl::MutexGuard OslMutexGuard;
+
+class TC_SolarMethodGuard : public SolarMutexGuard, public OslMutexGuard
+{
+public:
+ inline TC_SolarMethodGuard( AccessibleGridControlBase& _rOwner, bool _bEnsureAlive = true )
+ : SolarMutexGuard(),
+ OslMutexGuard( _rOwner.getMutex( AccessibleGridControlBase::TC_AccessControl() ) )
+ {
+ if ( _bEnsureAlive )
+ _rOwner.ensureIsAlive( AccessibleGridControlBase::TC_AccessControl() );
+ }
+};
+
+// inlines --------------------------------------------------------------------
+
+inline ::svt::table::AccessibleTableControlObjType AccessibleGridControlBase::getType() const
+{
+ return m_eObjType;
+}
+
+inline ::osl::Mutex& AccessibleGridControlBase::getOslMutex()
+{
+ return m_aMutex;
+}
+
+inline ::osl::Mutex* AccessibleGridControlBase::getOslGlobalMutex()
+{
+ return ::osl::Mutex::getGlobalMutex();
+}
+
+inline void AccessibleGridControlBase::implSetName(
+ const ::rtl::OUString& rName )
+{
+ m_aName = rName;
+}
+
+inline void AccessibleGridControlBase::implSetDescription(
+ const ::rtl::OUString& rDescription )
+{
+ m_aDescription = rDescription;
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBILEGRIDCONTROLBASE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControlHeader.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControlHeader.hxx
new file mode 100644
index 000000000000..6732fa2b6576
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleGridControlHeader.hxx
@@ -0,0 +1,220 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLHEADER_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLHEADER_HXX
+
+
+#include "accessibility/extended/AccessibleGridControlHeaderCell.hxx"
+#include "accessibility/extended/AccessibleGridControlTableBase.hxx"
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+/** This class represents the accessible object of a header bar of a Grid Control
+ (row or column header bar). This object supports the
+ XAccessibleSelection interface. Selecting a child of this object selects
+ complete rows or columns of the data table. */
+class AccessibleGridControlHeader : public AccessibleGridControlTableBase
+{
+public:
+ /** @param eObjType One of the two allowed types TCTYPE_ROWHEADERBAR or
+ TCTYPE_COLUMNHEADERBAR. */
+ AccessibleGridControlHeader(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::table::IAccessibleTable& rTable,
+ ::svt::table::AccessibleTableControlObjType eObjType );
+
+protected:
+ virtual ~AccessibleGridControlHeader();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return
+ The XAccessible interface of the specified child.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return The accessible child rendered under the given point. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to (the current cell of) the data table. */
+ virtual void SAL_CALL grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The key bindings associated with this object. */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleTable -------------------------------------------------------
+
+ /** @return The description text of the specified row. */
+ virtual ::rtl::OUString SAL_CALL
+ getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The description text of the specified column. */
+ virtual ::rtl::OUString SAL_CALL
+ getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the row header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleRowHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the column header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleColumnHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected rows. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleRows()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected columns. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleColumns()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified row is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified column is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the cell object at the specified
+ cell position. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified cell is selected. */
+ virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return The name of this class. */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An unique implementation ID. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+protected:
+ // internal virtual methods -----------------------------------------------
+ /** @attention This method requires locked mutex's and a living object.
+ @return The absolute child index from the index of selected children.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified index is invalid. */
+ //sal_Int32 implGetChildIndexFromSelectedIndex( sal_Int32 nSelectedChildIndex )
+ // throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+
+ /** Returns the specified row or column. Uses one of the parameters,
+ depending on object type.
+ @attention This method requires locked mutex's and a living object.
+ @return The XAccessible interface of the specified column/row. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ implGetChild( sal_Int32 nRow, sal_uInt32 nColumnPos );
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox();
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of used rows. */
+ virtual sal_Int32 implGetRowCount() const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The count of used columns. */
+ virtual sal_Int32 implGetColumnCount() const;
+
+ // internal helper methods ------------------------------------------------
+
+ /** @return <TRUE/>, if the objects is a header bar for rows. */
+ inline sal_Bool isRowBar() const;
+ /** @return <TRUE/>, if the objects is a header bar for columns. */
+ inline sal_Bool isColumnBar() const;
+};
+
+// inlines --------------------------------------------------------------------
+
+inline sal_Bool AccessibleGridControlHeader::isRowBar() const
+{
+ return getType() == ::svt::table::TCTYPE_ROWHEADERBAR;
+}
+
+inline sal_Bool AccessibleGridControlHeader::isColumnBar() const
+{
+ return getType() == ::svt::table::TCTYPE_COLUMNHEADERBAR;
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBILEGRIDCONTROLHEADER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControlHeaderCell.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControlHeaderCell.hxx
new file mode 100644
index 000000000000..f7f02f5828b0
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleGridControlHeaderCell.hxx
@@ -0,0 +1,104 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLHEADERCELL_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLHEADERCELL_HXX
+
+#include "accessibility/extended/AccessibleGridControlTableCell.hxx"
+
+namespace accessibility
+{
+ class AccessibleGridControlHeaderCell : public AccessibleGridControlCell, public ::com::sun::star::accessibility::XAccessible
+ {
+ sal_Int32 m_nColumnRowId;
+ public:
+ AccessibleGridControlHeaderCell(sal_Int32 _nColumnRowId,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::table::IAccessibleTable& _rTable,
+ ::svt::table::AccessibleTableControlObjType _eObjType);
+ /** @return The count of visible children. */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount() throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the specified child. */
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to the GridControl. */
+ virtual void SAL_CALL grabFocus() throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Aquires the object (calls acquire() on base class). */
+ virtual void SAL_CALL acquire() throw ();
+
+ /** Releases the object (calls release() on base class). */
+ virtual void SAL_CALL release() throw ();
+ // XAccessible ------------------------------------------------------------
+
+ /** @return The XAccessibleContext interface of this object. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL
+ getAccessibleContext()
+ throw ( ::com::sun::star::uno::RuntimeException );
+ //-------------------------------------------------------------------------
+ inline sal_Bool isRowBarCell() const
+ {
+ return getType() == ::svt::table::TCTYPE_ROWHEADERCELL;
+ }
+
+ /** @return
+ The name of this class.
+ */
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+ */
+ ::utl::AccessibleStateSetHelper* implCreateStateSetHelper();
+
+ protected:
+ virtual Rectangle implGetBoundingBox();
+
+ virtual Rectangle implGetBoundingBoxOnScreen();
+ private:
+ ::rtl::OUString m_sHeaderName;
+ };
+}
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLHEADERCELL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControlTable.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControlTable.hxx
new file mode 100644
index 000000000000..1d79e1d2d199
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleGridControlTable.hxx
@@ -0,0 +1,228 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLTABLE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLTABLE_HXX
+
+#include "accessibility/extended/AccessibleGridControlTableBase.hxx"
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+typedef ::cppu::ImplHelper1<
+ ::com::sun::star::accessibility::XAccessibleSelection >
+ AccessibleGridControlTableImplHelper1;
+/** This class represents the accessible object of the data table of a
+ Grid control. */
+class AccessibleGridControlTable : public AccessibleGridControlTableBase,
+ public AccessibleGridControlTableImplHelper1
+{
+public:
+ AccessibleGridControlTable(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::table::IAccessibleTable& rTable,
+ ::svt::table::AccessibleTableControlObjType _eType);
+
+protected:
+ virtual ~AccessibleGridControlTable();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return The XAccessible interface of the specified child. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /** @return The accessible child rendered under the given point. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Grabs the focus to (the current cell of) the data table. */
+ virtual void SAL_CALL grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The key bindings associated with this object. */
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleTable -------------------------------------------------------
+
+ /** @return The description text of the specified row. */
+ virtual ::rtl::OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The description text of the specified column. */
+ virtual ::rtl::OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the row header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleRowHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessibleTable interface of the column header bar. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
+ getAccessibleColumnHeaders()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected rows. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleRows()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An index list of completely selected columns. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
+ getSelectedAccessibleColumns()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified row is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified column is completely selected. */
+ virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the cell object at the specified
+ cell position. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified cell is selected. */
+ virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleSelection ---------------------------------------------------
+
+ /** Selects the specified child (row or column of the table). */
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return <TRUE/>, if the specified child (row/column) is selected. */
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** Clears the complete selection. */
+ virtual void SAL_CALL clearAccessibleSelection()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Selects all children or first, if multiselection is not supported. */
+ virtual void SAL_CALL selectAllAccessibleChildren()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The number of selected rows/columns. */
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The specified selected row/column. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** Removes the specified row/column from the selection. */
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Aquires the object (calls acquire() on base class). */
+ virtual void SAL_CALL acquire() throw ();
+
+ /** Releases the object (calls release() on base class). */
+ virtual void SAL_CALL release() throw ();
+ // XServiceInfo -----------------------------------------------------------
+
+ /** @return The name of this class. */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+protected:
+ // internal virtual methods -----------------------------------------------
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The bounding box (VCL rect.) relative to the parent window. */
+ virtual Rectangle implGetBoundingBox();
+ ///** @attention This method requires locked mutex's and a living object.
+ // @return The bounding box (VCL rect.) in screen coordinates. */
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+
+ //// internal helper methods ------------------------------------------------
+ ///** @attention This method requires a locked mutex.
+ // @return The XAccessibleTable interface of the specified header bar. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleTable >
+ implGetHeaderBar( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::uno::RuntimeException );
+};
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBILEGRIDCONTROLTABLE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControlTableBase.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControlTableBase.hxx
new file mode 100644
index 000000000000..daa6fd179ef6
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleGridControlTableBase.hxx
@@ -0,0 +1,230 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLTABLEBASE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLEGRIDCONTROLTABLEBASE_HXX
+
+#include "accessibility/extended/AccessibleGridControlBase.hxx"
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/accessibility/XAccessibleTable.hpp>
+
+// ============================================================================
+
+namespace accessibility {
+
+typedef ::cppu::ImplHelper1<
+ ::com::sun::star::accessibility::XAccessibleTable >
+ AccessibleGridControlTableImplHelper;
+
+/** The Grid Control accessible table objects inherit from this base class. It
+ implements basic functionality for the XAccessibleTable interface.
+ Grid COntrol table objects are: the data table, the column header bar and the
+ row header bar. */
+class AccessibleGridControlTableBase :
+ public GridControlAccessibleElement,
+ public AccessibleGridControlTableImplHelper
+{
+public:
+ /** Constructor sets specified name and description.
+ @param rxParent XAccessible interface of the parent object.
+ @param rTable The Table control.
+ @param eNameText The constant for the name text.
+ @param eDescrText The constant for the description text. */
+ AccessibleGridControlTableBase(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& rxParent,
+ ::svt::table::IAccessibleTable& rTable,
+ ::svt::table::AccessibleTableControlObjType eObjType );
+
+protected:
+ virtual ~AccessibleGridControlTableBase();
+
+public:
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return The count of visible children. */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The role of this object (a table). */
+ virtual sal_Int16 SAL_CALL getAccessibleRole()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getAccessibleChild,
+ - getAccessibleIndexInParent. */
+
+ // XAccessibleComponent ---------------------------------------------------
+
+ /* Derived classes have to implement:
+ - getAccessibleAt,
+ - grabFocus,
+ - getAccessibleKeyBinding. */
+
+ // XAccessibleTable -------------------------------------------------------
+
+ /** @return The number of used rows in the table (0 = empty table). */
+ virtual sal_Int32 SAL_CALL getAccessibleRowCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The number of used columns in the table (0 = empty table). */
+ virtual sal_Int32 SAL_CALL getAccessibleColumnCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The row extent of the specified cell (always 1). */
+ virtual sal_Int32 SAL_CALL
+ getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The column extent of the specified cell (always 1). */
+ virtual sal_Int32 SAL_CALL
+ getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The caption cell of the table (not supported). */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleCaption()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The summary object of the table (not supported). */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleSummary()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The child index of the specified cell. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The row index of the specified child cell. */
+ virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** @return The column index of the specified child cell. */
+ virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /* Derived classes have to implement:
+ - getAccessibleRowDescription,
+ - getAccessibleColumnDescription,
+ - getAccessibleRowHeaders,
+ - getAccessibleColumnHeaders,
+ - getSelectedAccessibleRows,
+ - getSelectedAccessibleColumns,
+ - isAccessibleRowSelected,
+ - isAccessibleColumnSelected,
+ - getAccessibleCellAt,
+ - isAccessibleSelected. */
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Aquires the object (calls acquire() on base class). */
+ virtual void SAL_CALL acquire() throw ();
+
+ /** Releases the object (calls release() on base class). */
+ virtual void SAL_CALL release() throw ();
+
+ // XTypeProvider ----------------------------------------------------------
+
+ /** @return A sequence of possible types (received from base classes). */
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return An unique implementation ID. */
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+protected:
+ // internal helper methods ------------------------------------------------
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The number of cells of the table. */
+ sal_Int32 implGetChildCount() const;
+
+ /** @attention This method requires locked mutex's and a living object.
+ @return The row index of the specified cell index. */
+ sal_Int32 implGetRow( sal_Int32 nChildIndex ) const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The column index of the specified cell index. */
+ sal_Int32 implGetColumn( sal_Int32 nChildIndex ) const;
+ /** @attention This method requires locked mutex's and a living object.
+ @return The child index of the specified cell address. */
+ sal_Int32 implGetChildIndex( sal_Int32 nRow, sal_Int32 nColumn ) const;
+
+ /** Fills a sequence with sorted indexes of completely selected rows.
+ @attention This method requires locked mutex's and a living object.
+ @param rSeq Out-parameter that takes the sorted row index list. */
+ void implGetSelectedRows( ::com::sun::star::uno::Sequence< sal_Int32 >& rSeq );
+ /** Fills a sequence with sorted indexes of completely selected columns.
+ @attention This method requires locked mutex's and a living object.
+ @param rSeq Out-parameter that takes the sorted column index list. */
+ //void implGetSelectedColumns( ::com::sun::star::uno::Sequence< sal_Int32 >& rSeq );
+
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified row index is invalid. */
+ void ensureIsValidRow( sal_Int32 nRow )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified column index is invalid. */
+ void ensureIsValidColumn( sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified cell address is invalid. */
+ void ensureIsValidAddress( sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ /** @attention This method requires locked mutex's and a living object.
+ @throws <type>IndexOutOfBoundsException</type>
+ If the specified child index is invalid. */
+ void ensureIsValidIndex( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+};
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBILEGRIDCONTROLTABLEBASE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControlTableCell.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControlTableCell.hxx
new file mode 100644
index 000000000000..7dd2d982e186
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleGridControlTableCell.hxx
@@ -0,0 +1,170 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBILEGRIDCONTROLTABLECELL_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBILEGRIDCONTROLTABLECELL_HXX
+
+#include <comphelper/accessibletexthelper.hxx>
+#include <cppuhelper/implbase2.hxx>
+#include "accessibility/extended/AccessibleGridControlBase.hxx"
+#include <svtools/accessibletable.hxx>
+
+namespace accessibility
+{
+ class AccessibleGridControlCell : public AccessibleGridControlBase
+ {
+ private:
+ sal_Int32 m_nRowPos; // the row number of the table cell
+ sal_Int32 m_nColPos; // the column id of the table cell
+
+ protected:
+ // attribute access
+ inline sal_Int32 getRowPos( ) const { return m_nRowPos; }
+ inline sal_Int32 getColumnPos( ) const { return m_nColPos; }
+
+ // XAccessibleComponent
+ virtual void SAL_CALL grabFocus() throw ( ::com::sun::star::uno::RuntimeException );
+
+ protected:
+ AccessibleGridControlCell(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ ::svt::table::IAccessibleTable& _rTable,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos,
+ ::svt::table::AccessibleTableControlObjType _eType
+ );
+
+ virtual ~AccessibleGridControlCell();
+
+ private:
+ AccessibleGridControlCell(); // never implemented
+ AccessibleGridControlCell( const AccessibleGridControlCell& ); // never implemented
+ AccessibleGridControlCell& operator=( const AccessibleGridControlCell& ); // never implemented
+ };
+
+ typedef ::cppu::ImplHelper2 < ::com::sun::star::accessibility::XAccessibleText
+ , ::com::sun::star::accessibility::XAccessible
+ > AccessibleTextHelper_BASE;
+ // implementation of a table cell of GridControl
+ class AccessibleGridControlTableCell :public AccessibleGridControlCell
+ ,public AccessibleTextHelper_BASE
+ ,public ::comphelper::OCommonAccessibleText
+ {
+ private:
+ sal_Int32 m_nOffset;
+
+ protected:
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+ virtual Rectangle implGetBoundingBox();
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+ public:
+ AccessibleGridControlTableCell( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ ::svt::table::IAccessibleTable& _rTable,
+ sal_Int32 _nRowId,
+ sal_uInt16 _nColId,
+ svt::table::AccessibleTableControlObjType eObjType);
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** Aquires the object (calls acquire() on base class). */
+ virtual void SAL_CALL acquire() throw ();
+
+ /** Releases the object (calls release() on base class). */
+ virtual void SAL_CALL release() throw ();
+
+ /** @return The index of this object among the parent's children. */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The name of this class.
+ */
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The count of visible children.
+ */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return
+ The XAccessible interface of the specified child.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+ */
+ ::utl::AccessibleStateSetHelper* implCreateStateSetHelper();
+
+ // XAccessible ------------------------------------------------------------
+
+ /** @return The XAccessibleContext interface of this object. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL
+ getAccessibleContext()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ };
+}
+#endif // ACCESSIBILITY_EXT_ACCESSIBILEGRIDCONTROLTABLECELL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleToolPanelDeck.hxx b/accessibility/inc/accessibility/extended/AccessibleToolPanelDeck.hxx
new file mode 100644
index 000000000000..fb8664e521e4
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleToolPanelDeck.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ACC_ACCESSIBLETOOLPANELDECK_HXX
+#define ACC_ACCESSIBLETOOLPANELDECK_HXX
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <cppuhelper/implbase1.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+#include <boost/scoped_ptr.hpp>
+
+namespace svt
+{
+ class ToolPanelDeck;
+}
+
+//......................................................................................................................
+namespace accessibility
+{
+//......................................................................................................................
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeck
+ //==================================================================================================================
+ class AccessibleToolPanelDeck_Impl;
+ typedef VCLXAccessibleComponent AccessibleToolPanelDeck_Base;
+ class AccessibleToolPanelDeck : public AccessibleToolPanelDeck_Base
+ {
+ public:
+ AccessibleToolPanelDeck(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rAccessibleParent,
+ ::svt::ToolPanelDeck& i_rPanelDeck
+ );
+
+ using AccessibleToolPanelDeck_Base::NotifyAccessibleEvent;
+
+ protected:
+ virtual ~AccessibleToolPanelDeck();
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // OComponentHelper
+ virtual void SAL_CALL disposing();
+
+ // VCLXAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetChildAccessible( const VclWindowEvent& i_rVclWindowEvent );
+ virtual void FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& i_rStateSet );
+
+ private:
+ ::boost::scoped_ptr< AccessibleToolPanelDeck_Impl > m_pImpl;
+ };
+
+//......................................................................................................................
+} // namespace accessibility
+//......................................................................................................................
+
+#endif // ACC_ACCESSIBLETOOLPANELDECK_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBar.hxx b/accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBar.hxx
new file mode 100644
index 000000000000..295d6e6624bd
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBar.hxx
@@ -0,0 +1,95 @@
+/* -*- 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 ACC_ACCESSIBLETOOLPANELTABBAR_HXX
+#define ACC_ACCESSIBLETOOLPANELTABBAR_HXX
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <cppuhelper/implbase1.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+#include <boost/scoped_ptr.hpp>
+
+namespace svt
+{
+ class IToolPanelDeck;
+ class PanelTabBar;
+}
+
+//......................................................................................................................
+namespace accessibility
+{
+//......................................................................................................................
+
+ //==================================================================================================================
+ //= AccessibleToolPanelTabBar
+ //==================================================================================================================
+ class AccessibleToolPanelTabBar_Impl;
+ typedef VCLXAccessibleComponent AccessibleToolPanelTabBar_Base;
+ class AccessibleToolPanelTabBar : public AccessibleToolPanelTabBar_Base
+ {
+ public:
+ AccessibleToolPanelTabBar(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rAccessibleParent,
+ ::svt::IToolPanelDeck& i_rPanelDeck,
+ ::svt::PanelTabBar& i_rTabBar
+ );
+
+ using AccessibleToolPanelTabBar_Base::NotifyAccessibleEvent;
+
+ protected:
+ virtual ~AccessibleToolPanelTabBar();
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+
+ // OComponentHelper
+ virtual void SAL_CALL disposing();
+
+ // VCLXAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetChildAccessible( const VclWindowEvent& i_rVclWindowEvent );
+ virtual void FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& i_rStateSet );
+
+ private:
+ ::boost::scoped_ptr< AccessibleToolPanelTabBar_Impl > m_pImpl;
+ };
+
+//......................................................................................................................
+} // namespace accessibility
+//......................................................................................................................
+
+#endif // ACC_ACCESSIBLETOOLPANELTABBAR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx b/accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx
new file mode 100644
index 000000000000..83ca6d8101c7
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ACC_ACCESSIBLETOOLPANELDECKTABBARITEM_HXX
+#define ACC_ACCESSIBLETOOLPANELDECKTABBARITEM_HXX
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <comphelper/accessiblecomponenthelper.hxx>
+#include <cppuhelper/implbase1.hxx>
+
+#include <boost/scoped_ptr.hpp>
+
+namespace svt
+{
+ class IToolPanelDeck;
+ class PanelTabBar;
+}
+
+//......................................................................................................................
+namespace accessibility
+{
+//......................................................................................................................
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeckTabBarItem
+ //==================================================================================================================
+ class AccessibleToolPanelDeckTabBarItem_Impl;
+ typedef ::comphelper::OAccessibleExtendedComponentHelper AccessibleToolPanelDeckTabBarItem_Base;
+ class AccessibleToolPanelDeckTabBarItem : public AccessibleToolPanelDeckTabBarItem_Base
+ {
+ public:
+ AccessibleToolPanelDeckTabBarItem(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rAccessibleParent,
+ ::svt::IToolPanelDeck& i_rPanelDeck,
+ ::svt::PanelTabBar& i_rTabBar,
+ const size_t i_nItemPos
+ );
+
+ using AccessibleToolPanelDeckTabBarItem_Base::NotifyAccessibleEvent;
+ using AccessibleToolPanelDeckTabBarItem_Base::lateInit;
+
+ protected:
+ virtual ~AccessibleToolPanelDeckTabBarItem();
+
+ public:
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+
+ protected:
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // OComponentHelper
+ virtual void SAL_CALL disposing();
+
+ protected:
+ ::boost::scoped_ptr< AccessibleToolPanelDeckTabBarItem_Impl > m_pImpl;
+ };
+
+//......................................................................................................................
+} // namespace accessibility
+//......................................................................................................................
+
+#endif // ACC_ACCESSIBLETOOLPANELDECKTABBARITEM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessiblebrowseboxcell.hxx b/accessibility/inc/accessibility/extended/accessiblebrowseboxcell.hxx
new file mode 100644
index 000000000000..3314648ac6e7
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessiblebrowseboxcell.hxx
@@ -0,0 +1,89 @@
+/* -*- 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 ACCESSIBILITY_ACCESSIBLE_BROWSE_BOX_CELL_HXX
+#define ACCESSIBILITY_ACCESSIBLE_BROWSE_BOX_CELL_HXX
+
+#include "accessibility/extended/AccessibleBrowseBoxBase.hxx"
+#include <svtools/AccessibleBrowseBoxObjType.hxx>
+
+// .................................................................................
+namespace accessibility
+{
+// .................................................................................
+
+ // =============================================================================
+ // = AccessibleBrowseBoxCell
+ // =============================================================================
+ /** common accessibility-functionality for browse box elements which occupy a cell
+ */
+ class AccessibleBrowseBoxCell : public AccessibleBrowseBoxBase
+ {
+ private:
+ sal_Int32 m_nRowPos; // the row number of the table cell
+ sal_uInt16 m_nColPos; // the column id of the table cell
+
+ protected:
+ // attribute access
+ inline sal_Int32 getRowPos( ) const { return m_nRowPos; }
+ inline sal_Int32 getColumnPos( ) const { return m_nColPos; }
+
+ protected:
+ // AccessibleBrowseBoxBase overridables
+ virtual Rectangle implGetBoundingBox();
+ virtual Rectangle implGetBoundingBoxOnScreen();
+
+ // XAccessibleComponent
+ virtual void SAL_CALL grabFocus() throw ( ::com::sun::star::uno::RuntimeException );
+
+ protected:
+ AccessibleBrowseBoxCell(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ ::svt::IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos,
+ ::svt::AccessibleBrowseBoxObjType _eType = ::svt::BBTYPE_TABLECELL
+ );
+
+ virtual ~AccessibleBrowseBoxCell();
+
+ private:
+ AccessibleBrowseBoxCell(); // never implemented
+ AccessibleBrowseBoxCell( const AccessibleBrowseBoxCell& ); // never implemented
+ AccessibleBrowseBoxCell& operator=( const AccessibleBrowseBoxCell& ); // never implemented
+ };
+
+// .................................................................................
+} // namespace accessibility
+// .................................................................................
+
+
+#endif // ACCESSIBILITY_ACCESSIBLE_BROWSE_BOX_CELL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibleeditbrowseboxcell.hxx b/accessibility/inc/accessibility/extended/accessibleeditbrowseboxcell.hxx
new file mode 100644
index 000000000000..2abe7d871022
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibleeditbrowseboxcell.hxx
@@ -0,0 +1,156 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBILEEDITBROWSEBOXTABLECELL_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBILEEDITBROWSEBOXTABLECELL_HXX
+
+#include "accessiblebrowseboxcell.hxx"
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventListener.hpp>
+#include <com/sun/star/accessibility/XAccessibleRelationSet.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <comphelper/accessiblewrapper.hxx>
+
+namespace accessibility
+{
+ // =============================================================================
+ // = EditBrowseBoxTableCell
+ // =============================================================================
+ class EditBrowseBoxTableCell :public AccessibleBrowseBoxCell
+ ,public ::comphelper::OAccessibleContextWrapperHelper
+ {
+ public:
+ EditBrowseBoxTableCell(
+ const com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ const com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxOwningAccessible,
+ const com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >& _xControlChild,
+ ::svt::IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos
+ );
+
+ protected:
+ virtual ~EditBrowseBoxTableCell();
+
+ protected:
+ // XAccessibleComponent
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException) ;
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException) ;
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XInterface
+ DECLARE_XINTERFACE( )
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+ // XAccessibleContext
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+
+ sal_Int16 SAL_CALL getAccessibleRole() throw ( ::com::sun::star::uno::RuntimeException );
+
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
+ protected:
+ // OComponentHelper
+ virtual void SAL_CALL disposing();
+
+ // XComponent/OComponentProxyAggregationHelper (needs to be disambiguated)
+ virtual void SAL_CALL dispose() throw( ::com::sun::star::uno::RuntimeException );
+
+ // OAccessibleContextWrapperHelper();
+ void notifyTranslatedEvent( const ::com::sun::star::accessibility::AccessibleEventObject& _rEvent ) throw (::com::sun::star::uno::RuntimeException);
+
+ private:
+ EditBrowseBoxTableCell(); // never implemented
+ EditBrowseBoxTableCell( const EditBrowseBoxTableCell& ); // never implemented
+ EditBrowseBoxTableCell& operator=( const EditBrowseBoxTableCell& ); // never implemented
+ };
+
+ // =============================================================================
+ // = EditBrowseBoxTableCell
+ // =============================================================================
+ typedef ::cppu::WeakComponentImplHelper1 < ::com::sun::star::accessibility::XAccessible
+ > EditBrowseBoxTableCellAccess_Base;
+ // XAccessible providing an EditBrowseBoxTableCell
+ class EditBrowseBoxTableCellAccess
+ :public ::comphelper::OBaseMutex
+ ,public EditBrowseBoxTableCellAccess_Base
+ {
+ protected:
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessibleContext >
+ m_aContext;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ m_xParent;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ m_xControlAccessible;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >
+ m_xFocusWindow;
+ ::svt::IAccessibleTableProvider* m_pBrowseBox;
+ sal_Int32 m_nRowPos;
+ sal_uInt16 m_nColPos;
+
+ public:
+ EditBrowseBoxTableCellAccess(
+ const ::com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessible >& _rxParent,
+ const ::com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessible > _xControlAccessible,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ ::svt::IAccessibleTableProvider& _rBrowseBox,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos
+ );
+
+ protected:
+ virtual ~EditBrowseBoxTableCellAccess();
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent/OComponentHelper
+ virtual void SAL_CALL disposing();
+
+ private:
+ EditBrowseBoxTableCellAccess(); // never implemented
+ EditBrowseBoxTableCellAccess( const EditBrowseBoxTableCellAccess& ); // never implemented
+ EditBrowseBoxTableCellAccess& operator=( const EditBrowseBoxTableCellAccess& ); // never implemented
+ };
+}
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBILEEDITBROWSEBOXTABLECELL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibleiconchoicectrl.hxx b/accessibility/inc/accessibility/extended/accessibleiconchoicectrl.hxx
new file mode 100644
index 000000000000..2289dd45baec
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibleiconchoicectrl.hxx
@@ -0,0 +1,121 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEICONCHOICECTRL_HXX_
+#define ACCESSIBILITY_EXT_ACCESSIBLEICONCHOICECTRL_HXX_
+
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <cppuhelper/implbase2.hxx>
+#include <vcl/vclevent.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+// class AccessibleListBox -----------------------------------------------
+
+class SvtIconChoiceCtrl;
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ typedef ::cppu::ImplHelper2< ::com::sun::star::accessibility::XAccessible
+ , ::com::sun::star::accessibility::XAccessibleSelection> AccessibleIconChoiceCtrl_BASE;
+
+ /** the class OAccessibleListBoxEntry represents the base class for an accessible object of a listbox entry
+ */
+ class AccessibleIconChoiceCtrl :public AccessibleIconChoiceCtrl_BASE
+ ,public VCLXAccessibleComponent
+ {
+ protected:
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent;
+
+ protected:
+ virtual ~AccessibleIconChoiceCtrl();
+
+ /** this function is called upon disposing the component */
+ virtual void SAL_CALL disposing();
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ SvtIconChoiceCtrl* getCtrl();
+ public:
+ /** OAccessibleBase needs a valid view
+ @param _rIconCtrl
+ is the box for which we implement an accessible object
+ @param _xParent
+ is our parent accessible object
+ */
+ AccessibleIconChoiceCtrl( SvtIconChoiceCtrl& _rIconCtrl,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent );
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo - static methods
+ static com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw(com::sun::star::uno::RuntimeException);
+ static ::rtl::OUString getImplementationName_Static(void) throw(com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ };
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLEICONCHOICECTRL_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibleiconchoicectrlentry.hxx b/accessibility/inc/accessibility/extended/accessibleiconchoicectrlentry.hxx
new file mode 100644
index 000000000000..09af3e2466ca
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibleiconchoicectrlentry.hxx
@@ -0,0 +1,215 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLEICONCHOICECTRLENTRY_HXX_
+#define ACCESSIBILITY_EXT_ACCESSIBLEICONCHOICECTRLENTRY_HXX_
+
+#include <deque>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <cppuhelper/compbase8.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+#include <tools/gen.hxx>
+
+// forward ---------------------------------------------------------------
+
+class SvxIconChoiceCtrlEntry;
+class SvtIconChoiceCtrl;
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+// class AccessibleIconChoiceCtrlEntry ------------------------------------------
+
+ typedef ::cppu::WeakAggComponentImplHelper8< ::com::sun::star::accessibility::XAccessible
+ , ::com::sun::star::accessibility::XAccessibleContext
+ , ::com::sun::star::accessibility::XAccessibleComponent
+ , ::com::sun::star::accessibility::XAccessibleEventBroadcaster
+ , ::com::sun::star::accessibility::XAccessibleText
+ , ::com::sun::star::accessibility::XAccessibleAction
+ , ::com::sun::star::lang::XServiceInfo
+ , ::com::sun::star::lang::XEventListener > AccessibleIconChoiceCtrlEntry_BASE;
+
+ /** the class AccessibleListBoxEntry represents the class for an accessible object of a listbox entry */
+ class AccessibleIconChoiceCtrlEntry : public ::comphelper::OBaseMutex,
+ public AccessibleIconChoiceCtrlEntry_BASE,
+ public ::comphelper::OCommonAccessibleText
+ {
+ private:
+ /** The treelistbox control */
+ SvtIconChoiceCtrl* m_pIconCtrl;
+ sal_Int32 m_nIndex;
+
+ protected:
+ /// client id in the AccessibleEventNotifier queue
+ sal_uInt32 m_nClientId;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent;
+
+ private:
+ #ifdef ACCESSIBLE_EVENT_NOTIFICATION_ENABLED
+ // (the following method is unused currently. If you need it, simply remove the #ifdef thing here and
+ // in the cxx)
+ /** notifies all listeners that this object has changed
+ @param _nEventId
+ is the event id
+ @param _aOldValue
+ is the old value
+ @param _aNewValue
+ is the new value
+ */
+ void NotifyAccessibleEvent( sal_Int16 _nEventId,
+ const ::com::sun::star::uno::Any& _aOldValue,
+ const ::com::sun::star::uno::Any& _aNewValue );
+ #endif
+
+ Rectangle GetBoundingBox_Impl() const;
+ Rectangle GetBoundingBoxOnScreen_Impl() const;
+ sal_Bool IsAlive_Impl() const;
+ sal_Bool IsShowing_Impl() const;
+
+ Rectangle GetBoundingBox() throw ( ::com::sun::star::lang::DisposedException );
+ Rectangle GetBoundingBoxOnScreen() throw ( ::com::sun::star::lang::DisposedException );
+ void EnsureIsAlive() const throw ( ::com::sun::star::lang::DisposedException );
+
+ protected:
+ virtual ~AccessibleIconChoiceCtrlEntry();
+ /** this function is called upon disposing the component
+ */
+ virtual void SAL_CALL disposing();
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+ public:
+ /** Ctor()
+ @param _rListBox
+ the view control
+ @param _pEntry
+ the entry
+ @param _xParent
+ is our parent accessible object
+ */
+ AccessibleIconChoiceCtrlEntry( SvtIconChoiceCtrl& _rIconCtrl,
+ ULONG _nPos,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent );
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo - static methods
+ static com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw(com::sun::star::uno::RuntimeException);
+ static ::rtl::OUString getImplementationName_Static(void) throw(com::sun::star::uno::RuntimeException);
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleEventBroadcaster
+ using cppu::WeakAggComponentImplHelperBase::addEventListener;
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+ using cppu::WeakAggComponentImplHelperBase::removeEventListener;
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ };
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLELISTBOXENTRY_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessiblelistbox.hxx b/accessibility/inc/accessibility/extended/accessiblelistbox.hxx
new file mode 100644
index 000000000000..9e81e7eed7d4
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessiblelistbox.hxx
@@ -0,0 +1,127 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLELISTBOX_HXX_
+#define ACCESSIBILITY_EXT_ACCESSIBLELISTBOX_HXX_
+
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <cppuhelper/implbase2.hxx>
+#include <vcl/vclevent.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+
+// class AccessibleListBox -----------------------------------------------
+
+class SvTreeListBox;
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ typedef ::cppu::ImplHelper2< ::com::sun::star::accessibility::XAccessible
+ , ::com::sun::star::accessibility::XAccessibleSelection> AccessibleListBox_BASE;
+
+ /** the class OAccessibleListBoxEntry represents the base class for an accessible object of a listbox entry
+ */
+ class AccessibleListBox :public AccessibleListBox_BASE
+ ,public VCLXAccessibleComponent
+ {
+ protected:
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent;
+
+ protected:
+ virtual ~AccessibleListBox();
+
+ // OComponentHelper overridables
+ /** this function is called upon disposing the component */
+ virtual void SAL_CALL disposing();
+
+ // VCLXAccessibleComponent
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ SvTreeListBox* getListBox() const;
+
+ public:
+ /** OAccessibleBase needs a valid view
+ @param _rListBox
+ is the box for which we implement an accessible object
+ @param _xParent
+ is our parent accessible object
+ */
+ AccessibleListBox( SvTreeListBox& _rListBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent );
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo - static methods
+ static com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw(com::sun::star::uno::RuntimeException);
+ static ::rtl::OUString getImplementationName_Static(void) throw(com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ };
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLELISTBOX_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx b/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx
new file mode 100644
index 000000000000..4521c0e0d03e
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx
@@ -0,0 +1,225 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLELISTBOXENTRY_HXX_
+#define ACCESSIBILITY_EXT_ACCESSIBLELISTBOXENTRY_HXX_
+
+#include <deque>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <cppuhelper/compbase8.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+#include <tools/gen.hxx>
+#include "accessibility/extended/listboxaccessible.hxx"
+
+// forward ---------------------------------------------------------------
+
+namespace com { namespace sun { namespace star { namespace awt {
+ struct Point;
+ struct Rectangle;
+ struct Size;
+ class XFocusListener;
+} } } }
+
+class SvTreeListBox;
+class SvLBoxEntry;
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+// class AccessibleListBoxEntry ------------------------------------------
+
+ typedef ::cppu::WeakAggComponentImplHelper8< ::com::sun::star::accessibility::XAccessible
+ , ::com::sun::star::accessibility::XAccessibleContext
+ , ::com::sun::star::accessibility::XAccessibleComponent
+ , ::com::sun::star::accessibility::XAccessibleEventBroadcaster
+ , ::com::sun::star::accessibility::XAccessibleAction
+ , ::com::sun::star::accessibility::XAccessibleSelection
+ , ::com::sun::star::accessibility::XAccessibleText
+ , ::com::sun::star::lang::XServiceInfo > AccessibleListBoxEntry_BASE;
+
+ /** the class AccessibleListBoxEntry represents the class for an accessible object of a listbox entry */
+ class AccessibleListBoxEntry:public ::comphelper::OBaseMutex
+ ,public AccessibleListBoxEntry_BASE
+ ,public ::comphelper::OCommonAccessibleText
+ ,public ListBoxAccessibleBase
+ {
+ friend class AccessibleListBox;
+
+ private:
+ /** The treelistbox control */
+ SvTreeListBox* m_pListBox;
+ ::std::deque< sal_Int32 > m_aEntryPath;
+
+ protected:
+ /// client id in the AccessibleEventNotifier queue
+ sal_uInt32 m_nClientId;
+
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessible >
+ m_aParent;
+
+ private:
+ Rectangle GetBoundingBox_Impl() const;
+ Rectangle GetBoundingBoxOnScreen_Impl() const;
+ sal_Bool IsAlive_Impl() const;
+ sal_Bool IsShowing_Impl() const;
+
+ Rectangle GetBoundingBox() throw ( ::com::sun::star::lang::DisposedException );
+ Rectangle GetBoundingBoxOnScreen() throw ( ::com::sun::star::lang::DisposedException );
+ void EnsureIsAlive() const throw ( ::com::sun::star::lang::DisposedException );
+
+ protected:
+ virtual ~AccessibleListBoxEntry();
+
+ /** this function is called upon disposing the component
+ */
+ virtual void SAL_CALL disposing();
+
+ // ListBoxAccessible/XComponent
+ virtual void SAL_CALL dispose() throw ( ::com::sun::star::uno::RuntimeException );
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+ public:
+ /** Ctor()
+ @param _rListBox
+ the view control
+ @param _pEntry
+ the entry
+ @param _xParent
+ is our parent accessible object
+ */
+ AccessibleListBoxEntry( SvTreeListBox& _rListBox, SvLBoxEntry* _pEntry,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& _xParent );
+
+ protected:
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo - static methods
+ static com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw(com::sun::star::uno::RuntimeException);
+ static ::rtl::OUString getImplementationName_Static(void) throw(com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleEventBroadcaster
+ using cppu::WeakAggComponentImplHelperBase::addEventListener;
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+ using cppu::WeakAggComponentImplHelperBase::removeEventListener;
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > implGetParentAccessible( ) const;
+ };
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLELISTBOXENTRY_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibletabbar.hxx b/accessibility/inc/accessibility/extended/accessibletabbar.hxx
new file mode 100644
index 000000000000..d7b43bc5870c
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibletabbar.hxx
@@ -0,0 +1,122 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLETABBAR_HXX_
+#define ACCESSIBILITY_EXT_ACCESSIBLETABBAR_HXX_
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <cppuhelper/implbase2.hxx>
+#include "accessibility/extended/accessibletabbarbase.hxx"
+
+#include <vector>
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+ // ----------------------------------------------------
+ // class AccessibleTabBar
+ // ----------------------------------------------------
+
+ typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::lang::XServiceInfo > AccessibleTabBar_BASE;
+
+ class AccessibleTabBar : public AccessibleTabBarBase,
+ public AccessibleTabBar_BASE
+ {
+ private:
+ typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > AccessibleChildren;
+
+ AccessibleChildren m_aAccessibleChildren;
+
+ protected:
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+ public:
+ AccessibleTabBar( TabBar* pTabBar );
+ ~AccessibleTabBar();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+ };
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLETABBAR_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibletabbarbase.hxx b/accessibility/inc/accessibility/extended/accessibletabbarbase.hxx
new file mode 100644
index 000000000000..b4e62f517d3f
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibletabbarbase.hxx
@@ -0,0 +1,80 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLETABBARBASE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLETABBARBASE_HXX
+
+#include <comphelper/accessiblecomponenthelper.hxx>
+#include <tools/link.hxx>
+
+class TabBar;
+class VCLExternalSolarLock;
+class VclSimpleEvent;
+class VclWindowEvent;
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+// ============================================================================
+
+typedef ::comphelper::OAccessibleExtendedComponentHelper AccessibleExtendedComponentHelper_BASE;
+
+class AccessibleTabBarBase : public AccessibleExtendedComponentHelper_BASE
+{
+public:
+ explicit AccessibleTabBarBase( TabBar* pTabBar );
+ virtual ~AccessibleTabBarBase();
+
+protected:
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+private:
+ void SetTabBarPointer( TabBar* pTabBar );
+ void ClearTabBarPointer();
+
+protected:
+ VCLExternalSolarLock* m_pExternalLock;
+ TabBar* m_pTabBar;
+};
+
+// ============================================================================
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibletabbarpage.hxx b/accessibility/inc/accessibility/extended/accessibletabbarpage.hxx
new file mode 100644
index 000000000000..756d2fff4b35
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibletabbarpage.hxx
@@ -0,0 +1,139 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGE_HXX_
+#define ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGE_HXX_
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <cppuhelper/implbase2.hxx>
+#include "accessibility/extended/accessibletabbarbase.hxx"
+
+#include <vector>
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+ // ----------------------------------------------------
+ // class AccessibleTabBarPage
+ // ----------------------------------------------------
+
+ typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::lang::XServiceInfo > AccessibleTabBarPage_BASE;
+
+ class AccessibleTabBarPage : public AccessibleTabBarBase,
+ public AccessibleTabBarPage_BASE
+ {
+ friend class AccessibleTabBarPageList;
+
+ private:
+ sal_uInt16 m_nPageId;
+ sal_Bool m_bEnabled;
+ sal_Bool m_bShowing;
+ sal_Bool m_bSelected;
+ ::rtl::OUString m_sPageText;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent;
+
+ protected:
+ sal_Bool IsEnabled();
+ sal_Bool IsShowing();
+ sal_Bool IsSelected();
+
+ void SetEnabled( sal_Bool bEnabled );
+ void SetShowing( sal_Bool bShowing );
+ void SetSelected( sal_Bool bSelected );
+ void SetPageText( const ::rtl::OUString& sPageText );
+
+ sal_uInt16 GetPageId() const { return m_nPageId; }
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+ public:
+ AccessibleTabBarPage( TabBar* pTabBar, sal_uInt16 nPageId,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent );
+ virtual ~AccessibleTabBarPage();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+ };
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGE_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibletabbarpagelist.hxx b/accessibility/inc/accessibility/extended/accessibletabbarpagelist.hxx
new file mode 100644
index 000000000000..cc5dc276cd24
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibletabbarpagelist.hxx
@@ -0,0 +1,143 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGELIST_HXX_
+#define ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGELIST_HXX_
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <cppuhelper/implbase3.hxx>
+#include "accessibility/extended/accessibletabbarbase.hxx"
+
+#include <vector>
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+ // ----------------------------------------------------
+ // class AccessibleTabBarPageList
+ // ----------------------------------------------------
+
+ typedef ::cppu::ImplHelper3<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleSelection,
+ ::com::sun::star::lang::XServiceInfo > AccessibleTabBarPageList_BASE;
+
+ class AccessibleTabBarPageList : public AccessibleTabBarBase,
+ public AccessibleTabBarPageList_BASE
+ {
+ private:
+ typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > AccessibleChildren;
+
+ AccessibleChildren m_aAccessibleChildren;
+ sal_Int32 m_nIndexInParent;
+
+ protected:
+ void UpdateEnabled( sal_Int32 i, sal_Bool bEnabled );
+ void UpdateShowing( sal_Bool bShowing );
+ void UpdateSelected( sal_Int32 i, sal_Bool bSelected );
+ void UpdatePageText( sal_Int32 i );
+
+ void InsertChild( sal_Int32 i );
+ void RemoveChild( sal_Int32 i );
+ void MoveChild( sal_Int32 i, sal_Int32 j );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+ public:
+ AccessibleTabBarPageList( TabBar* pTabBar, sal_Int32 nIndexInParent );
+ virtual ~AccessibleTabBarPageList();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ };
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGELIST_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibletablistbox.hxx b/accessibility/inc/accessibility/extended/accessibletablistbox.hxx
new file mode 100644
index 000000000000..4e6f03af3c9b
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibletablistbox.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLETABLISTBOX_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLETABLISTBOX_HXX
+
+#include "AccessibleBrowseBox.hxx"
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <svtools/accessibletableprovider.hxx>
+
+class SvHeaderTabListBox;
+
+// ============================================================================
+
+namespace accessibility {
+
+class AccessibleBrowseBoxTable;
+
+typedef ::cppu::ImplHelper1 < ::com::sun::star::accessibility::XAccessible
+ > AccessibleTabListBox_Base;
+
+/** !!! */
+class AccessibleTabListBox
+ :public AccessibleBrowseBox
+ ,public AccessibleTabListBox_Base
+ ,public ::svt::IAccessibleTabListBox
+{
+private:
+ SvHeaderTabListBox* m_pTabListBox;
+
+public:
+ /** ctor()
+ @param rxParent XAccessible interface of the parent object.
+ @param rBox The HeaderTabListBox control. */
+ AccessibleTabListBox(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
+ SvHeaderTabListBox& rBox );
+
+public:
+ // XInterface
+ DECLARE_XINTERFACE( )
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+ // XAccessibleContext -----------------------------------------------------
+
+ /** @return The count of visible children. */
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ /** @return The XAccessible interface of the specified child. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // XAccessibleContext
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() throw ( ::com::sun::star::uno::RuntimeException );
+
+ // IAccessibleTabListBox
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getMyself()
+ {
+ return this;
+ }
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ getHeaderBar( ::svt::AccessibleBrowseBoxObjType _eObjType )
+ {
+ return AccessibleBrowseBox::getHeaderBar( _eObjType );
+ }
+
+protected:
+ /** dtor() */
+ virtual ~AccessibleTabListBox();
+
+ /** This method creates and returns an accessible table.
+ @return An AccessibleBrowseBoxTable. */
+ virtual AccessibleBrowseBoxTable* createAccessibleTable();
+};
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLETABLISTBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx b/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx
new file mode 100644
index 000000000000..153dc76f2a65
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx
@@ -0,0 +1,124 @@
+/* -*- 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 ACCESSIBILITY_EXT_ACCESSIBLETABLISTBOXTABLE_HXX
+#define ACCESSIBILITY_EXT_ACCESSIBLETABLISTBOXTABLE_HXX
+
+#include "AccessibleBrowseBoxTable.hxx"
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+class SvHeaderTabListBox;
+
+// ============================================================================
+
+namespace accessibility {
+
+typedef ::cppu::ImplHelper1< ::com::sun::star::accessibility::XAccessibleSelection >
+ AccessibleTabListBoxTableImplHelper;
+
+class AccessibleTabListBoxTable : public AccessibleBrowseBoxTable, public AccessibleTabListBoxTableImplHelper
+{
+private:
+ SvHeaderTabListBox* m_pTabListBox;
+
+ void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+
+ // helpers ----------------------------------------------------------------
+
+ /** Throws an exception, if nIndex is not a valid child index. */
+ void ensureValidIndex( sal_Int32 _nIndex ) const
+ SAL_THROW( ( ::com::sun::star::lang::IndexOutOfBoundsException ) );
+
+ /** Returns true, if the specified row is selected. */
+ sal_Bool implIsRowSelected( sal_Int32 _nRow ) const;
+ /** Selects the specified row. */
+ void implSelectRow( sal_Int32 _nRow, sal_Bool _bSelect );
+
+ /** Returns the count of rows in the table. */
+ sal_Int32 implGetRowCount() const;
+ /** Returns the total column count in the table. */
+ sal_Int32 implGetColumnCount() const;
+ /** Returns the count of selected rows in the table. */
+ sal_Int32 implGetSelRowCount() const;
+ /** Returns the total cell count in the table (including header). */
+ inline sal_Int32 implGetCellCount() const { return implGetRowCount() * implGetColumnCount(); }
+
+ /** Returns the row index from cell index. */
+ inline sal_Int32 implGetRow( sal_Int32 _nIndex ) const { return _nIndex / implGetColumnCount(); }
+ /** Returns the column index from cell index. */
+ inline sal_Int32 implGetColumn( sal_Int32 _nIndex ) const { return _nIndex % implGetColumnCount(); }
+ /** Returns the absolute row index of the nSelRow-th selected row. */
+ sal_Int32 implGetSelRow( sal_Int32 _nSelRow ) const;
+ /** Returns the child index from cell position. */
+ inline sal_Int32 implGetIndex( sal_Int32 _nRow, sal_Int32 _nColumn ) const { return _nRow * implGetColumnCount() + _nColumn; }
+
+public:
+ /** ctor()
+ @param rxParent XAccessible interface of the parent object.
+ @param rBox The HeaderTabListBox control. */
+ AccessibleTabListBoxTable(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
+ SvHeaderTabListBox& rBox );
+
+protected:
+ /** dtor() */
+ virtual ~AccessibleTabListBoxTable();
+
+public:
+ // XInterface
+ DECLARE_XINTERFACE( )
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+#endif // ACCESSIBILITY_EXT_ACCESSIBLETABLISTBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/listboxaccessible.hxx b/accessibility/inc/accessibility/extended/listboxaccessible.hxx
new file mode 100644
index 000000000000..b82291f91e79
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/listboxaccessible.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 ACCESSIBILITY_EXT_LISTBOX_ACCESSIBLE
+#define ACCESSIBILITY_EXT_LISTBOX_ACCESSIBLE
+
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <tools/link.hxx>
+
+class SvTreeListBox;
+class VclSimpleEvent;
+class VclWindowEvent;
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ //====================================================================
+ //= ListBoxAccessibleBase
+ //====================================================================
+ /** helper class which couples it's life time to the life time of an
+ SvTreeListBox
+ */
+ class ListBoxAccessibleBase
+ {
+ private:
+ SvTreeListBox* m_pWindow;
+
+ protected:
+ inline SvTreeListBox* getListBox() const
+ {
+ return const_cast< ListBoxAccessibleBase* >( this )->m_pWindow;
+ }
+
+ inline bool isAlive() const { return NULL != m_pWindow; }
+
+ public:
+ ListBoxAccessibleBase( SvTreeListBox& _rWindow );
+
+ protected:
+ virtual ~ListBoxAccessibleBase( );
+
+ // own overridables
+ /// will be called for any VclWindowEvent events broadcasted by our VCL window
+ virtual void ProcessWindowEvent( const VclWindowEvent& _rVclWindowEvent );
+
+ /** will be called when our window broadcasts the VCLEVENT_OBJECT_DYING event
+
+ <p>Usually, you derive your class from both ListBoxAccessibleBase and XComponent,
+ and call XComponent::dispose here.</p>
+ */
+ virtual void SAL_CALL dispose() throw ( ::com::sun::star::uno::RuntimeException ) = 0;
+
+ /// to be called in the dispose method of your derived class
+ void disposing();
+
+ private:
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+
+ private:
+ ListBoxAccessibleBase( ); // never implemented
+ ListBoxAccessibleBase( const ListBoxAccessibleBase& ); // never implemented
+ ListBoxAccessibleBase& operator=( const ListBoxAccessibleBase& ); // never implemented
+ };
+
+//........................................................................
+} // namespace accessibility
+//........................................................................
+
+#endif // ACCESSIBILITY_EXT_LISTBOX_ACCESSIBLE
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx b/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx
new file mode 100644
index 000000000000..091eebe46d18
--- /dev/null
+++ b/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx
@@ -0,0 +1,714 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#if !defined INCLUDED_ACCESSIBILITY_TEXTWINDOWACCESSIBILITY_HXX
+#define INCLUDED_ACCESSIBILITY_TEXTWINDOWACCESSIBILITY_HXX
+
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+#include <svl/lstner.hxx>
+#include <svtools/textdata.hxx>
+#include <svtools/texteng.hxx>
+#include <svtools/textview.hxx>
+#include <svtools/txtattr.hxx>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/lang/EventObject.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/util/Color.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleTextType.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
+#include <com/sun/star/accessibility/XAccessibleMultiLineText.hpp>
+#include <com/sun/star/accessibility/XAccessibleTextAttributes.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <cppuhelper/compbase7.hxx>
+#include <comphelper/accessiblecontexthelper.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+#include <rtl/ref.hxx>
+
+#include <memory>
+#include <queue>
+#include <hash_map>
+
+class TextEngine;
+class TextView;
+
+namespace css = ::com::sun::star;
+
+namespace accessibility
+{
+
+class Paragraph;
+class Document;
+
+class SfxListenerGuard
+{
+public:
+ inline SfxListenerGuard(::SfxListener & rListener):
+ m_rListener(rListener), m_pNotifier(0) {}
+
+ inline ~SfxListenerGuard() { endListening(); }
+
+ // Not thread safe:
+ void startListening(::SfxBroadcaster & rNotifier);
+
+ // Not thread safe:
+ void endListening();
+
+private:
+ ::SfxListener & m_rListener;
+ ::SfxBroadcaster * m_pNotifier;
+};
+
+class WindowListenerGuard
+{
+public:
+ inline WindowListenerGuard(::Link const & rListener):
+ m_aListener(rListener), m_pNotifier(0) {}
+
+ inline ~WindowListenerGuard() { endListening(); }
+
+ // Not thread safe:
+ void startListening(::Window & rNotifier);
+
+ // Not thread safe:
+ void endListening();
+
+private:
+ ::Link m_aListener;
+ ::Window * m_pNotifier;
+};
+
+class ParagraphInfo
+{
+public:
+ inline ParagraphInfo(::sal_Int32 nHeight): m_nHeight(nHeight) {}
+
+ inline
+ ::css::uno::WeakReference< ::css::accessibility::XAccessible > const &
+ getParagraph() const { return m_xParagraph; }
+
+ inline ::sal_Int32 getHeight() const { return m_nHeight; }
+
+ inline void setParagraph(
+ ::css::uno::Reference< ::css::accessibility::XAccessible > const &
+ rParagraph) { m_xParagraph = rParagraph; }
+
+ inline void changeHeight(::sal_Int32 nHeight) { m_nHeight = nHeight; }
+
+private:
+ ::css::uno::WeakReference< ::css::accessibility::XAccessible >
+ m_xParagraph;
+ ::sal_Int32 m_nHeight;
+};
+
+typedef ::std::vector< ParagraphInfo > Paragraphs;
+
+typedef ::cppu::WeakAggComponentImplHelper7<
+ ::css::accessibility::XAccessible,
+ ::css::accessibility::XAccessibleContext,
+ ::css::accessibility::XAccessibleComponent,
+ ::css::accessibility::XAccessibleEditableText,
+ ::css::accessibility::XAccessibleMultiLineText,
+ ::css::accessibility::XAccessibleTextAttributes,
+ ::css::accessibility::XAccessibleEventBroadcaster > ParagraphBase;
+
+// The Paragraph's number is the absolute position within the text engine (from
+// 0 to N - 1), whereas the Paragraph's index is the position within the text
+// view/accessible parent (from 0 to M - 1). Paragraphs outside the currently
+// visible range have an index of -1.
+class ParagraphImpl:
+ public ParagraphBase, private ::comphelper::OCommonAccessibleText
+{
+public:
+ ParagraphImpl(::rtl::Reference< Document > const & rDocument,
+ Paragraphs::size_type nNumber, ::osl::Mutex & rMutex);
+
+ // Not thread-safe.
+ inline Paragraphs::size_type getNumber() const { return m_nNumber; }
+
+ // Not thread-safe.
+ void numberChanged(bool bIncremented);
+
+ // Not thread-safe.
+ void textChanged();
+
+ // Thread-safe.
+ void notifyEvent(::sal_Int16 nEventId, ::css::uno::Any const & rOldValue,
+ ::css::uno::Any const & rNewValue);
+
+protected:
+ // OCommonAccessibleText
+ virtual void implGetParagraphBoundary( ::css::i18n::Boundary& rBoundary,
+ ::sal_Int32 nIndex );
+ virtual void implGetLineBoundary( ::css::i18n::Boundary& rBoundary,
+ ::sal_Int32 nIndex );
+
+private:
+ virtual ::css::uno::Reference< ::css::accessibility::XAccessibleContext >
+ SAL_CALL getAccessibleContext() throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild(::sal_Int32 i)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+ getAccessibleParent() throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getAccessibleIndexInParent()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Int16 SAL_CALL getAccessibleRole()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getAccessibleName()
+ throw (::css::uno::RuntimeException);
+
+ virtual
+ ::css::uno::Reference< ::css::accessibility::XAccessibleRelationSet >
+ SAL_CALL getAccessibleRelationSet() throw (::css::uno::RuntimeException);
+
+ virtual
+ ::css::uno::Reference< ::css::accessibility::XAccessibleStateSet > SAL_CALL
+ getAccessibleStateSet() throw (::css::uno::RuntimeException);
+
+ virtual ::css::lang::Locale SAL_CALL getLocale()
+ throw (::css::accessibility::IllegalAccessibleComponentStateException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL containsPoint(::css::awt::Point const & rPoint)
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint(::css::awt::Point const & rPoint)
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::awt::Rectangle SAL_CALL getBounds()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::awt::Point SAL_CALL getLocation()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::awt::Point SAL_CALL getLocationOnScreen()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::awt::Size SAL_CALL getSize()
+ throw (::css::uno::RuntimeException);
+
+ virtual void SAL_CALL grabFocus() throw (::css::uno::RuntimeException);
+
+ virtual ::css::uno::Any SAL_CALL getAccessibleKeyBinding()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::util::Color SAL_CALL getForeground()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::util::Color SAL_CALL getBackground()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getCaretPosition()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL setCaretPosition(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Unicode SAL_CALL getCharacter(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::css::uno::Sequence< ::css::beans::PropertyValue > SAL_CALL
+ getCharacterAttributes(::sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes )
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::css::awt::Rectangle SAL_CALL
+ getCharacterBounds(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getCharacterCount()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL
+ getIndexAtPoint(::css::awt::Point const & rPoint)
+ throw (::css::uno::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getSelectedText()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getSelectionStart()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getSelectionEnd()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL setSelection(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getText()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getTextRange(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL copyText(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL cutText(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL pasteText(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL deleteText(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL insertText(::rtl::OUString const & rText,
+ ::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL replaceText(
+ ::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex,
+ ::rtl::OUString const & rReplacement)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL setAttributes(
+ ::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex,
+ ::css::uno::Sequence< ::css::beans::PropertyValue > const &
+ rAttributeSet)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL setText(::rtl::OUString const & rText)
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::uno::Sequence< ::css::beans::PropertyValue > SAL_CALL
+ getDefaultAttributes(const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes)
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::uno::Sequence< ::css::beans::PropertyValue > SAL_CALL
+ getRunAttributes(::sal_Int32 Index, const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getLineNumberAtIndex( ::sal_Int32 nIndex )
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtLineNumber( ::sal_Int32 nLineNo )
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtLineWithCaret( )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::sal_Int32 SAL_CALL getNumberOfLineWithCaret( )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ using cppu::WeakAggComponentImplHelperBase::addEventListener;
+ virtual void SAL_CALL addEventListener(
+ ::css::uno::Reference<
+ ::css::accessibility::XAccessibleEventListener > const & rListener)
+ throw (::css::uno::RuntimeException);
+
+ using cppu::WeakAggComponentImplHelperBase::removeEventListener;
+ virtual void SAL_CALL removeEventListener(
+ ::css::uno::Reference<
+ ::css::accessibility::XAccessibleEventListener > const & rListener)
+ throw (::css::uno::RuntimeException);
+
+ virtual void SAL_CALL disposing();
+
+ virtual ::rtl::OUString implGetText();
+
+ virtual ::css::lang::Locale implGetLocale();
+
+ virtual void implGetSelection(::sal_Int32 & rStartIndex,
+ ::sal_Int32 & rEndIndex);
+
+ // Throws ::css::lang::DisposedException:
+ void checkDisposed();
+
+ ::rtl::Reference< Document > m_xDocument;
+ Paragraphs::size_type m_nNumber;
+
+// ::cppu::OInterfaceContainerHelper m_aListeners;
+ /// client id in the AccessibleEventNotifier queue
+ sal_uInt32 m_nClientId;
+
+ ::rtl::OUString m_aParagraphText;
+};
+
+
+typedef ::std::hash_map< ::rtl::OUString,
+ ::css::beans::PropertyValue,
+ ::rtl::OUStringHash,
+ ::std::equal_to< ::rtl::OUString > > tPropValMap;
+
+class Document: public ::VCLXAccessibleComponent, public ::SfxListener
+{
+public:
+ Document(::VCLXWindow * pVclXWindow, ::TextEngine & rEngine,
+ ::TextView & rView, bool bCompoundControlChild);
+
+ inline ::css::uno::Reference< ::css::accessibility::XAccessible >
+ getAccessible() { return m_xAccessible; }
+
+ // Must be called only after init has been called.
+ ::css::lang::Locale retrieveLocale();
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const *" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ ::sal_Int32 retrieveParagraphIndex(ParagraphImpl const * pParagraph);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const *" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ ::sal_Int64 retrieveParagraphState(ParagraphImpl const * pParagraph);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ ::css::awt::Rectangle
+ retrieveParagraphBounds(ParagraphImpl const * pParagraph, bool bAbsolute);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ ::rtl::OUString retrieveParagraphText(ParagraphImpl const * pParagraph);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ void retrieveParagraphSelection(ParagraphImpl const * pParagraph,
+ ::sal_Int32 * pBegin, ::sal_Int32 * pEnd);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const *" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ ::sal_Int32 retrieveParagraphCaretPosition(ParagraphImpl const * pParagraph);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ // Throws ::css::lang::IndexOutOfBoundsException.
+ ::css::awt::Rectangle
+ retrieveCharacterBounds(ParagraphImpl const * pParagraph,
+ ::sal_Int32 nIndex);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ ::sal_Int32 retrieveCharacterIndex(ParagraphImpl const * pParagraph,
+ ::css::awt::Point const & rPoint);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ // Throws ::css::lang::IndexOutOfBoundsException.
+ ::css::uno::Sequence< ::css::beans::PropertyValue > retrieveCharacterAttributes(
+ ParagraphImpl const * pParagraph, ::sal_Int32 nIndex,
+ const ::css::uno::Sequence< ::rtl::OUString >& aRequestedAttributes);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ ::css::uno::Sequence< ::css::beans::PropertyValue > retrieveDefaultAttributes(
+ ParagraphImpl const * pParagraph,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ // Throws ::css::lang::IndexOutOfBoundsException.
+ ::css::uno::Sequence< ::css::beans::PropertyValue > retrieveRunAttributes(
+ ParagraphImpl const * pParagraph, ::sal_Int32 Index,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ void changeParagraphText(ParagraphImpl * pParagraph,
+ ::rtl::OUString const & rText);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ // Throws ::css::lang::IndexOutOfBoundsException.
+ void changeParagraphText(ParagraphImpl * pParagraph, ::sal_Int32 nBegin,
+ ::sal_Int32 nEnd, bool bCut, bool bPaste,
+ ::rtl::OUString const & rText);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ // Throws ::css::lang::IndexOutOfBoundsException.
+ void copyParagraphText(ParagraphImpl const * pParagraph,
+ ::sal_Int32 nBegin, ::sal_Int32 nEnd);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ // Throws ::css::lang::IndexOutOfBoundsException.
+ void changeParagraphAttributes(
+ ParagraphImpl * pParagraph, ::sal_Int32 nBegin, ::sal_Int32 nEnd,
+ ::css::uno::Sequence< ::css::beans::PropertyValue > const &
+ rAttributeSet);
+
+ // Must be called only after init has been called.
+ // To make it possible for this method to be (indirectly) called from
+ // within Paragraph's constructor (i.e., when the Paragraph's ref count is
+ // still zero), pass a "ParagraphImpl const &" instead of a
+ // "::rtl::Reference< ParagraphImpl > const &".
+ // Throws ::css::lang::IndexOutOfBoundsException.
+ void changeParagraphSelection(ParagraphImpl * pParagraph,
+ ::sal_Int32 nBegin, ::sal_Int32 nEnd);
+
+ ::css::i18n::Boundary
+ retrieveParagraphLineBoundary( ParagraphImpl const * pParagraph,
+ ::sal_Int32 nIndex, ::sal_Int32 *pLineNo = NULL);
+
+ ::css::i18n::Boundary
+ retrieveParagraphBoundaryOfLine( ParagraphImpl const * pParagraph,
+ ::sal_Int32 nIndex );
+
+ sal_Int32 retrieveParagraphLineWithCursor( ParagraphImpl const * pParagraph );
+
+ ::css::uno::Reference< ::css::accessibility::XAccessibleRelationSet >
+ retrieveParagraphRelationSet( ParagraphImpl const * pParagraph );
+
+protected:
+ // window event listener from base class
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+
+private:
+ virtual ::sal_Int32 SAL_CALL getAccessibleChildCount()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::uno::Reference< ::css::accessibility::XAccessible >
+ SAL_CALL getAccessibleChild(::sal_Int32 i)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException);
+
+ virtual ::sal_Int16 SAL_CALL getAccessibleRole()
+ throw (::css::uno::RuntimeException);
+
+ virtual ::css::uno::Reference< ::css::accessibility::XAccessible >
+ SAL_CALL getAccessibleAtPoint(::css::awt::Point const & rPoint)
+ throw (::css::uno::RuntimeException);
+
+ // ??? Will be called with both the external (Solar) and internal mutex
+ // locked:
+ virtual void SAL_CALL disposing();
+
+ // ??? Will be called with the external (Solar) mutex locked.
+ // init will already have been called.
+ virtual void Notify(::SfxBroadcaster & rBC, ::SfxHint const & rHint);
+
+ // Assuming that this will only be called with the external (Solar) mutex
+ // locked.
+ // init will already have been called.
+ DECL_LINK(WindowEventHandler, VclSimpleEvent *);
+
+ // Must be called with both the external (Solar) and internal mutex
+ // locked.
+ void init();
+
+ // Must be called with both the external (Solar) and internal mutex
+ // locked, and after init has been called:
+ ::rtl::Reference< ParagraphImpl >
+ getParagraph(Paragraphs::iterator const & rIt);
+
+ // Must be called with both the external (Solar) and internal mutex
+ // locked, and after init has been called.
+ // Throws ::css::uno::RuntimeException.
+ ::css::uno::Reference< ::css::accessibility::XAccessible >
+ getAccessibleChild(Paragraphs::iterator const & rIt);
+
+ // Must be called with both the external (Solar) and internal mutex
+ // locked, and after init has been called:
+ void determineVisibleRange();
+
+ // Must be called with both the external (Solar) and internal mutex
+ // locked, and after init has been called:
+ void notifyVisibleRangeChanges(
+ Paragraphs::iterator const & rOldVisibleBegin,
+ Paragraphs::iterator const & rOldVisibleEnd,
+ Paragraphs::iterator const & rInserted);
+
+ // Must be called with both the external (Solar) and internal mutex
+ // locked, and after init has been called:
+ void changeParagraphText(::ULONG nNumber, ::USHORT nBegin, ::USHORT nEnd,
+ bool bCut, bool bPaste,
+ ::rtl::OUString const & rText);
+
+ void
+ handleParagraphNotifications();
+
+ void handleSelectionChangeNotification();
+
+ void notifySelectionChange( sal_Int32 nFirst, sal_Int32 nLast );
+
+ void justifySelection( TextPaM& rTextStart, TextPaM& rTextEnd );
+
+ void disposeParagraphs();
+
+ static ::css::uno::Any mapFontColor(::Color const & rColor);
+
+ static ::Color mapFontColor(::css::uno::Any const & rColor);
+
+ static ::css::uno::Any mapFontWeight(::FontWeight nWeight);
+
+ static ::FontWeight mapFontWeight(::css::uno::Any const & rWeight);
+
+ void retrieveDefaultAttributesImpl(
+ ParagraphImpl const * pParagraph,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes,
+ tPropValMap& rDefAttrSeq);
+
+ void retrieveRunAttributesImpl(
+ ParagraphImpl const * pParagraph, ::sal_Int32 Index,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes,
+ tPropValMap& rRunAttrSeq);
+
+ static ::css::uno::Sequence< ::css::beans::PropertyValue >
+ convertHashMapToSequence(tPropValMap& rAttrSeq);
+
+ ::css::uno::Reference< ::css::accessibility::XAccessible > m_xAccessible;
+ ::TextEngine & m_rEngine;
+ ::TextView & m_rView;
+
+ SfxListenerGuard m_aEngineListener;
+ WindowListenerGuard m_aViewListener;
+
+ // All the following members have valid values only after calling init:
+
+ ::std::auto_ptr< Paragraphs > m_xParagraphs;
+
+ // m_nViewOffset is from the start of the document (0) to the start of the
+ // current view, and m_nViewHeight is the height of the view:
+ ::sal_Int32 m_nViewOffset;
+ ::sal_Int32 m_nViewHeight;
+
+ // m_aVisibleBegin points to the first Paragraph that is (partially)
+ // contained in the view, and m_aVisibleEnd points past the last Paragraph
+ // that is (partially) contained. If no Paragraphs are (partially) in the
+ // view, both m_aVisibleBegin and m_aVisibleEnd are set to
+ // m_xParagraphs->end(). These values are only changed by
+ // determineVisibleRange.
+ Paragraphs::iterator m_aVisibleBegin;
+ Paragraphs::iterator m_aVisibleEnd;
+
+ // m_nVisibleBeginOffset is from m_nViewOffset back to the start of the
+ // Paragraph pointed to by m_aVisibleBegin (and always has a non-negative
+ // value). If m_aVisibleBegin == m_xParagraphs->end(),
+ // m_nVisibleBeginOffset is set to 0. These values are only changed by
+ // determineVisibleRange.
+ ::sal_Int32 m_nVisibleBeginOffset;
+
+ // If no selection has yet been set, all the following four variables are
+ // set to -1. m_nSelectionLastPara/Pos is also the cursor position.
+ ::sal_Int32 m_nSelectionFirstPara;
+ ::sal_Int32 m_nSelectionFirstPos;
+ ::sal_Int32 m_nSelectionLastPara;
+ ::sal_Int32 m_nSelectionLastPos;
+
+ Paragraphs::iterator m_aFocused;
+
+ ::std::queue< ::TextHint > m_aParagraphNotifications;
+ bool m_bSelectionChangedNotification;
+ bool m_bCompoundControlChild;
+};
+
+}
+
+#endif // INCLUDED_ACCESSIBILITY_TEXTWINDOWACCESSIBILITY_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx b/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx
new file mode 100644
index 000000000000..a4b09cd83b99
--- /dev/null
+++ b/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx
@@ -0,0 +1,73 @@
+/* -*- 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 ACCESSIBILITY_HELPER_COMBOLISTBOXHELPER_HXX
+#define ACCESSIBILITY_HELPER_COMBOLISTBOXHELPER_HXX
+
+#include <tools/gen.hxx>
+#include <tools/string.hxx>
+#include <vcl/wintypes.hxx>
+#include <tools/gen.hxx>
+
+namespace com { namespace sun { namespace star { namespace datatransfer { namespace clipboard {
+ class XClipboard;
+} } } } }
+
+class Window;
+namespace accessibility
+{
+ class SAL_NO_VTABLE IComboListBoxHelper
+ {
+ public:
+ virtual String GetEntry( USHORT nPos ) const = 0;
+ virtual Rectangle GetDropDownPosSizePixel( ) const = 0;
+ virtual Rectangle GetBoundingRectangle( USHORT nItem ) const = 0;
+ virtual Rectangle GetWindowExtentsRelative( Window* pRelativeWindow ) = 0;
+ virtual BOOL IsActive() const = 0;
+ virtual BOOL IsEntryVisible( USHORT nPos ) const = 0;
+ virtual USHORT GetDisplayLineCount() const = 0;
+ virtual void GetMaxVisColumnsAndLines( USHORT& rnCols, USHORT& rnLines ) const = 0;
+ virtual WinBits GetStyle() const = 0;
+ virtual BOOL IsMultiSelectionEnabled() const = 0;
+ virtual USHORT GetTopEntry() const = 0;
+ virtual BOOL IsEntryPosSelected( USHORT nPos ) const = 0;
+ virtual USHORT GetEntryCount() const = 0;
+ virtual void Select() = 0;
+ virtual void SelectEntryPos( USHORT nPos, BOOL bSelect = TRUE ) = 0;
+ virtual USHORT GetSelectEntryCount() const = 0;
+ virtual void SetNoSelection() = 0;
+ virtual USHORT GetSelectEntryPos( USHORT nSelIndex = 0 ) const = 0;
+ virtual BOOL IsInDropDown() const = 0;
+ virtual Rectangle GetEntryCharacterBounds( const sal_Int32 _nEntryPos, const sal_Int32 _nCharacterIndex ) const = 0;
+ virtual long GetIndexForPoint( const Point& rPoint, USHORT& nPos ) const = 0;
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard >
+ GetClipboard() = 0;
+ };
+}
+#endif // ACCESSIBILITY_HELPER_COMBOLISTBOXHELPER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/helper/acc_factory.hxx b/accessibility/inc/accessibility/helper/acc_factory.hxx
new file mode 100644
index 000000000000..b3dec4607517
--- /dev/null
+++ b/accessibility/inc/accessibility/helper/acc_factory.hxx
@@ -0,0 +1,53 @@
+/* -*- 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 ACCESSIBILITY_HELPER_FACTORY_HXX
+#define ACCESSIBILITY_HELPER_FACTORY_HXX
+
+#include <toolkit/helper/accessiblefactory.hxx>
+#include <svtools/accessiblefactory.hxx>
+
+/** this is the entry point to retrieve a factory for the toolkit-level Accessible/Contexts supplied
+ by this library
+
+ This function implements the factory function needed in toolkit
+ (of type GetStandardAccComponentFactory).
+*/
+extern "C" void* SAL_CALL getStandardAccessibleFactory();
+
+/** this is the entry point to retrieve a factory for the svtools-level Accessible/Contexts supplied
+ by this library
+
+ This function implements the factory function needed in svtools
+ (of type GetSvtAccessibilityComponentFactory).
+*/
+extern "C" void* SAL_CALL getSvtAccessibilityComponentFactory();
+
+#endif // ACCESSIBILITY_HELPER_FACTORY_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/helper/accessiblestrings.hrc b/accessibility/inc/accessibility/helper/accessiblestrings.hrc
new file mode 100644
index 000000000000..1f936e678b98
--- /dev/null
+++ b/accessibility/inc/accessibility/helper/accessiblestrings.hrc
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * 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 ACCESSIBILITY_HELPER_ACCESSIBLESTRINGS_HRC_
+#define ACCESSIBILITY_HELPER_ACCESSIBLESTRINGS_HRC_
+
+
+//------------------------------------------------------------------------------
+
+#define RID_TK_ACC_START 1000
+
+
+// Accessible Action Id's ------------------------------------------------------
+
+#define RID_STR_ACC_ACTION_CLICK ( RID_TK_ACC_START + 0 )
+#define RID_STR_ACC_ACTION_TOGGLEPOPUP ( RID_TK_ACC_START + 1 )
+#define RID_STR_ACC_ACTION_SELECT ( RID_TK_ACC_START + 2 )
+#define RID_STR_ACC_ACTION_INCLINE ( RID_TK_ACC_START + 3 )
+#define RID_STR_ACC_ACTION_DECLINE ( RID_TK_ACC_START + 4 )
+#define RID_STR_ACC_ACTION_INCBLOCK ( RID_TK_ACC_START + 5 )
+#define RID_STR_ACC_ACTION_DECBLOCK ( RID_TK_ACC_START + 6 )
+
+
+#define RID_STR_ACC_NAME_BROWSEBUTTON ( RID_TK_ACC_START + 100 )
+#define RID_STR_ACC_DESC_PANELDECL_TABBAR ( RID_TK_ACC_START + 101 )
+
+// -----------------------------------------------------------------------------
+
+#endif // ACCESSIBILITY_HELPER_ACCESSIBLESTRINGS_HRC_
diff --git a/accessibility/inc/accessibility/helper/accresmgr.hxx b/accessibility/inc/accessibility/helper/accresmgr.hxx
new file mode 100644
index 000000000000..4208d6d80f06
--- /dev/null
+++ b/accessibility/inc/accessibility/helper/accresmgr.hxx
@@ -0,0 +1,72 @@
+/* -*- 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 ACCESSIBILITY_HELPER_TKARESMGR_HXX
+#define ACCESSIBILITY_HELPER_TKARESMGR_HXX
+
+#include <rtl/ustring.hxx>
+
+class SimpleResMgr;
+
+#define TK_RES_STRING(id) TkResMgr::loadString(id)
+
+// -----------------------------------------------------------------------------
+// TkResMgr
+// -----------------------------------------------------------------------------
+
+class TkResMgr
+{
+ static SimpleResMgr* m_pImpl;
+
+private:
+ // no instantiation allowed
+ TkResMgr() { }
+ ~TkResMgr() { }
+
+ // we'll instantiate one static member of the following class,
+ // which in it's dtor ensures that m_pImpl will be deleted
+ class EnsureDelete
+ {
+ public:
+ EnsureDelete() { }
+ ~EnsureDelete();
+ };
+ friend class EnsureDelete;
+
+protected:
+ static void ensureImplExists();
+
+public:
+ // loads the string with the specified resource id
+ static ::rtl::OUString loadString( sal_uInt16 nResId );
+};
+
+
+#endif // ACCESSIBILITY_HELPER_TKARESMGR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/helper/characterattributeshelper.hxx b/accessibility/inc/accessibility/helper/characterattributeshelper.hxx
new file mode 100644
index 000000000000..16e37f4e103c
--- /dev/null
+++ b/accessibility/inc/accessibility/helper/characterattributeshelper.hxx
@@ -0,0 +1,61 @@
+/* -*- 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 ACCESSIBILITY_HELPER_CHARACTERATTRIBUTESHELPER_HXX
+#define ACCESSIBILITY_HELPER_CHARACTERATTRIBUTESHELPER_HXX
+
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <vcl/font.hxx>
+
+#include <map>
+
+// -----------------------------------------------------------------------------
+// class CharacterAttributesHelper
+// -----------------------------------------------------------------------------
+
+class CharacterAttributesHelper
+{
+private:
+
+ typedef ::std::map< ::rtl::OUString, ::com::sun::star::uno::Any, ::std::less< ::rtl::OUString > > AttributeMap;
+
+ AttributeMap m_aAttributeMap;
+
+public:
+
+ CharacterAttributesHelper( const Font& rFont, sal_Int32 nBackColor, sal_Int32 nColor );
+ ~CharacterAttributesHelper();
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > GetCharacterAttributes();
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > GetCharacterAttributes( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes );
+};
+
+#endif // ACCESSIBILITY_HELPER_CHARACTERATTRIBUTESHELPER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/helper/listboxhelper.hxx b/accessibility/inc/accessibility/helper/listboxhelper.hxx
new file mode 100644
index 000000000000..8343d95e9447
--- /dev/null
+++ b/accessibility/inc/accessibility/helper/listboxhelper.hxx
@@ -0,0 +1,198 @@
+/* -*- 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 ACCESSIBILITY_HELPER_LISTBOXHELPER_HXX
+#define ACCESSIBILITY_HELPER_LISTBOXHELPER_HXX
+
+#include <accessibility/helper/IComboListBoxHelper.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/combobox.hxx>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+
+// -----------------------------------------------------------------------------
+// globals
+// -----------------------------------------------------------------------------
+
+const sal_Int32 DEFAULT_INDEX_IN_PARENT = -1;
+
+// -----------------------------------------------------------------------------
+// class VCLListBoxHelper
+// -----------------------------------------------------------------------------
+
+template< class T > class VCLListBoxHelper : public ::accessibility::IComboListBoxHelper
+{
+private:
+ T& m_aComboListBox;
+
+public:
+ inline
+ VCLListBoxHelper( T& _pListBox ) :
+ m_aComboListBox( _pListBox ){}
+
+ // -----------------------------------------------------------------------------
+ virtual String GetEntry( USHORT nPos ) const
+ {
+ return m_aComboListBox.GetEntry( nPos );
+ }
+ // -----------------------------------------------------------------------------
+ virtual Rectangle GetDropDownPosSizePixel() const
+ {
+ Rectangle aTemp = m_aComboListBox.GetWindowExtentsRelative(NULL);
+ Rectangle aRet = m_aComboListBox.GetDropDownPosSizePixel();
+ aRet.Move(aTemp.TopLeft().X(),aTemp.TopLeft().Y());
+ return aRet;
+ }
+ // -----------------------------------------------------------------------------
+ virtual Rectangle GetBoundingRectangle( USHORT nItem ) const
+ {
+ Rectangle aRect;
+ if ( m_aComboListBox.IsInDropDown() && IsEntryVisible( nItem ) )
+ {
+ Rectangle aTemp = m_aComboListBox.GetDropDownPosSizePixel();
+ Size aSize = aTemp.GetSize();
+ aSize.Height() /= m_aComboListBox.GetDisplayLineCount();
+ Point aTopLeft = aTemp.TopLeft();
+ aTopLeft.Y() += aSize.Height() * ( nItem - m_aComboListBox.GetTopEntry() );
+ aRect = Rectangle( aTopLeft, aSize );
+ }
+ else
+ aRect = m_aComboListBox.GetBoundingRectangle( nItem );
+ return aRect;
+ }
+ // -----------------------------------------------------------------------------
+ virtual Rectangle GetWindowExtentsRelative( Window* pRelativeWindow )
+ {
+ return m_aComboListBox.GetWindowExtentsRelative( pRelativeWindow );
+ }
+ // -----------------------------------------------------------------------------
+ virtual BOOL IsActive() const
+ {
+ return m_aComboListBox.IsActive();
+ }
+ // -----------------------------------------------------------------------------
+ virtual BOOL IsEntryVisible( USHORT nPos ) const
+ {
+ USHORT nTopEntry = m_aComboListBox.GetTopEntry();
+ USHORT nLines = m_aComboListBox.GetDisplayLineCount();
+ return ( nPos >= nTopEntry && nPos < ( nTopEntry + nLines ) );
+ }
+ // -----------------------------------------------------------------------------
+ virtual USHORT GetDisplayLineCount() const
+ {
+ return m_aComboListBox.GetDisplayLineCount();
+ }
+ // -----------------------------------------------------------------------------
+ virtual void GetMaxVisColumnsAndLines( USHORT& rnCols, USHORT& rnLines ) const
+ {
+ m_aComboListBox.GetMaxVisColumnsAndLines(rnCols,rnLines);
+ }
+ // -----------------------------------------------------------------------------
+ virtual WinBits GetStyle() const
+ {
+ return m_aComboListBox.GetStyle();
+ }
+ // -----------------------------------------------------------------------------
+ virtual BOOL IsMultiSelectionEnabled() const
+ {
+ return m_aComboListBox.IsMultiSelectionEnabled();
+ }
+ // -----------------------------------------------------------------------------
+ virtual USHORT GetTopEntry() const
+ {
+ return m_aComboListBox.GetTopEntry();
+ }
+ // -----------------------------------------------------------------------------
+ virtual BOOL IsEntryPosSelected( USHORT nPos ) const
+ {
+ return m_aComboListBox.IsEntryPosSelected(nPos);
+ }
+ // -----------------------------------------------------------------------------
+ virtual USHORT GetEntryCount() const
+ {
+ return m_aComboListBox.GetEntryCount();
+ }
+ // -----------------------------------------------------------------------------
+ virtual void Select()
+ {
+ m_aComboListBox.Select();
+ }
+ // -----------------------------------------------------------------------------
+ virtual void SelectEntryPos( USHORT nPos, BOOL bSelect = TRUE )
+ {
+ m_aComboListBox.SelectEntryPos(nPos,bSelect);
+ }
+ // -----------------------------------------------------------------------------
+ virtual USHORT GetSelectEntryCount() const
+ {
+ return m_aComboListBox.GetSelectEntryCount();
+ }
+ // -----------------------------------------------------------------------------
+ virtual void SetNoSelection()
+ {
+ m_aComboListBox.SetNoSelection();
+ }
+ // -----------------------------------------------------------------------------
+ virtual USHORT GetSelectEntryPos( USHORT nSelIndex = 0 ) const
+ {
+ return m_aComboListBox.GetSelectEntryPos(nSelIndex);
+ }
+ // -----------------------------------------------------------------------------
+ virtual BOOL IsInDropDown() const
+ {
+ return m_aComboListBox.IsInDropDown();
+ }
+ // -----------------------------------------------------------------------------
+ virtual Rectangle GetEntryCharacterBounds( const sal_Int32 _nEntryPos, const sal_Int32 _nCharacterIndex ) const
+ {
+ Rectangle aRect;
+
+ Pair aEntryCharacterRange = m_aComboListBox.GetLineStartEnd( _nEntryPos );
+ if ( aEntryCharacterRange.A() + _nCharacterIndex <= aEntryCharacterRange.B() )
+ {
+ long nIndex = aEntryCharacterRange.A() + _nCharacterIndex;
+ aRect = m_aComboListBox.GetCharacterBounds( nIndex );
+ }
+ return aRect;
+ }
+ // -----------------------------------------------------------------------------
+ long GetIndexForPoint( const Point& rPoint, USHORT& nPos ) const
+ {
+ return m_aComboListBox.GetIndexForPoint( rPoint, nPos );
+ }
+ // -----------------------------------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard >
+ GetClipboard()
+ {
+ return m_aComboListBox.GetClipboard();
+ }
+ // -----------------------------------------------------------------------------
+};
+
+#endif // ACCESSIBILITY_HELPER_LISTBOXHELPER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx b/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx
new file mode 100644
index 000000000000..9dee945787ff
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx
@@ -0,0 +1,157 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_ACCESSIBLEMENUBASECOMPONENT_HXX
+#define ACCESSIBILITY_STANDARD_ACCESSIBLEMENUBASECOMPONENT_HXX
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <comphelper/accessiblecomponenthelper.hxx>
+#include <cppuhelper/implbase2.hxx>
+#include <tools/link.hxx>
+
+#include <vector>
+
+class Menu;
+class VclSimpleEvent;
+class VclMenuEvent;
+class VCLExternalSolarLock;
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+// ----------------------------------------------------
+// class OAccessibleMenuBaseComponent
+// ----------------------------------------------------
+
+typedef ::comphelper::OAccessibleExtendedComponentHelper AccessibleExtendedComponentHelper_BASE;
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::lang::XServiceInfo > OAccessibleMenuBaseComponent_BASE;
+
+class OAccessibleMenuBaseComponent : public AccessibleExtendedComponentHelper_BASE,
+ public OAccessibleMenuBaseComponent_BASE
+{
+ friend class OAccessibleMenuItemComponent;
+ friend class VCLXAccessibleMenuItem;
+ friend class VCLXAccessibleMenu;
+
+private:
+ VCLExternalSolarLock* m_pExternalLock;
+
+protected:
+ typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > AccessibleChildren;
+
+ AccessibleChildren m_aAccessibleChildren;
+ Menu* m_pMenu;
+
+ sal_Bool m_bEnabled;
+ sal_Bool m_bFocused;
+ sal_Bool m_bVisible;
+ sal_Bool m_bSelected;
+ sal_Bool m_bChecked;
+
+ Menu* GetMenu() { return m_pMenu; }
+
+ virtual sal_Bool IsEnabled();
+ virtual sal_Bool IsFocused();
+ virtual sal_Bool IsVisible();
+ virtual sal_Bool IsSelected();
+ virtual sal_Bool IsChecked();
+
+ void SetEnabled( sal_Bool bEnabled );
+ void SetFocused( sal_Bool bFocused );
+ void SetVisible( sal_Bool bVisible );
+ void SetSelected( sal_Bool bSelected );
+ void SetChecked( sal_Bool bChecked );
+
+ void UpdateEnabled( sal_Int32 i, sal_Bool bEnabled );
+ void UpdateFocused( sal_Int32 i, sal_Bool bFocused );
+ void UpdateVisible();
+ void UpdateSelected( sal_Int32 i, sal_Bool bSelected );
+ void UpdateChecked( sal_Int32 i, sal_Bool bChecked );
+ void UpdateAccessibleName( sal_Int32 i );
+ void UpdateItemText( sal_Int32 i );
+
+ sal_Int32 GetChildCount();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetChild( sal_Int32 i );
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetChildAt( const ::com::sun::star::awt::Point& rPoint );
+
+ void InsertChild( sal_Int32 i );
+ void RemoveChild( sal_Int32 i );
+
+ virtual sal_Bool IsHighlighted();
+ sal_Bool IsChildHighlighted();
+
+ void SelectChild( sal_Int32 i );
+ void DeSelectAll();
+ sal_Bool IsChildSelected( sal_Int32 i );
+
+ virtual void Select();
+ virtual void DeSelect();
+ virtual void Click();
+ virtual sal_Bool IsPopupMenuOpen();
+
+ DECL_LINK( MenuEventListener, VclSimpleEvent* );
+
+ virtual void ProcessMenuEvent( const VclMenuEvent& rVclMenuEvent );
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet ) = 0;
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ OAccessibleMenuBaseComponent( Menu* pMenu );
+ virtual ~OAccessibleMenuBaseComponent();
+
+ void SetStates();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_ACCESSIBLEMENUBASECOMPONENT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/accessiblemenucomponent.hxx b/accessibility/inc/accessibility/standard/accessiblemenucomponent.hxx
new file mode 100644
index 000000000000..d33d3e05e0dd
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/accessiblemenucomponent.hxx
@@ -0,0 +1,102 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_ACCESSIBLEMENUCOMPONENT_HXX
+#define ACCESSIBILITY_STANDARD_ACCESSIBLEMENUCOMPONENT_HXX
+
+#include <accessibility/standard/accessiblemenubasecomponent.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <cppuhelper/implbase1.hxx>
+
+
+// ----------------------------------------------------
+// class OAccessibleMenuComponent
+// ----------------------------------------------------
+
+typedef ::comphelper::OAccessibleExtendedComponentHelper AccessibleExtendedComponentHelper_BASE;
+
+typedef ::cppu::ImplHelper1<
+ ::com::sun::star::accessibility::XAccessibleSelection > OAccessibleMenuComponent_BASE;
+
+class OAccessibleMenuComponent : public OAccessibleMenuBaseComponent,
+ public OAccessibleMenuComponent_BASE
+{
+protected:
+ virtual sal_Bool IsEnabled();
+ virtual sal_Bool IsVisible();
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+public:
+ OAccessibleMenuComponent( Menu* pMenu );
+ virtual ~OAccessibleMenuComponent();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_ACCESSIBLEMENUCOMPONENT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx b/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx
new file mode 100644
index 000000000000..730175e685a2
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_ACCESSIBLEMENUITEMCOMPONENT_HXX
+#define ACCESSIBILITY_STANDARD_ACCESSIBLEMENUITEMCOMPONENT_HXX
+
+#include <accessibility/standard/accessiblemenubasecomponent.hxx>
+
+
+// ----------------------------------------------------
+// class OAccessibleMenuItemComponent
+// ----------------------------------------------------
+
+class OAccessibleMenuItemComponent : public OAccessibleMenuBaseComponent
+{
+ friend class OAccessibleMenuBaseComponent;
+
+protected:
+ Menu* m_pParent;
+ sal_uInt16 m_nItemPos;
+ ::rtl::OUString m_sAccessibleName;
+ ::rtl::OUString m_sItemText;
+
+ virtual sal_Bool IsEnabled();
+ virtual sal_Bool IsVisible();
+ virtual void Select();
+ virtual void DeSelect();
+ virtual void Click();
+
+ void SetItemPos( sal_uInt16 nItemPos );
+ void SetAccessibleName( const ::rtl::OUString& sAccessibleName );
+ ::rtl::OUString GetAccessibleName();
+ void SetItemText( const ::rtl::OUString& sItemText );
+ ::rtl::OUString GetItemText();
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ OAccessibleMenuItemComponent( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu );
+ virtual ~OAccessibleMenuItemComponent();
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_ACCESSIBLEMENUITEMCOMPONENT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx
new file mode 100644
index 000000000000..1aa73ab26a2b
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx
@@ -0,0 +1,182 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEBOX_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEBOX_HXX
+
+#include <map>
+#include <accessibility/standard/vclxaccessibleedit.hxx>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/XAccessibleKeyBinding.hpp>
+#include <cppuhelper/implbase2.hxx>
+
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleAction
+ > VCLXAccessibleBox_BASE;
+
+
+/** Base class for list- and combo boxes. This class manages the box'
+ children. The classed derived from this one have only to implement the
+ <member>IsValid</member> method and return the corrent implementation name.
+*/
+class VCLXAccessibleBox
+ : public VCLXAccessibleComponent,
+ public VCLXAccessibleBox_BASE
+{
+public:
+ enum BoxType {COMBOBOX, LISTBOX};
+
+ /** The constructor is initialized with the box type whitch may be
+ either <const>COMBOBOX</const> or <const>LISTBOX</const> and a flag
+ indicating whether the box is a drop down box.
+ */
+ VCLXAccessibleBox (VCLXWindow* pVCLXindow, BoxType aType, bool bIsDropDownBox);
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+
+
+ // XAccessible
+
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL
+ getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+
+ /** Each object has one or two children: an optional text field and the
+ actual list. The text field is not provided for non drop down list
+ boxes.
+ */
+ sal_Int32 SAL_CALL getAccessibleChildCount (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ /** For drop down list boxes the text field is a not editable
+ <type>VCLXAccessibleTextField</type>, for combo boxes it is an
+ editable <type>VLCAccessibleEdit</type>.
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
+ getAccessibleChild (sal_Int32 i)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ /** The role is always <const
+ scope="com::sun::star::accessibility">AccessibleRole::COMBO_BOX</const>.
+ */
+ sal_Int16 SAL_CALL getAccessibleRole (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ sal_Int32 SAL_CALL getAccessibleIndexInParent (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+
+ /** There is one action for drop down boxes and none for others.
+ */
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ /** The action for drop down boxes lets the user toggle the visibility of the
+ popup menu.
+ */
+ virtual sal_Bool SAL_CALL doAccessibleAction (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+ /** The returned string is assoicated with resource
+ <const>RID_STR_ACC_ACTION_TOGGLEPOPUP</const>.
+ */
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+ /** No keybinding returned so far.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL
+ getAccessibleActionKeyBinding( sal_Int32 nIndex )
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+
+ /** This method is called from the implementation helper during an
+ XComponent::dispose() call.
+ */
+ virtual void SAL_CALL disposing (void);
+
+
+protected:
+ /** Specifies whether the box is a combo box or a list box. List boxes
+ have multi selection.
+ */
+ BoxType m_aBoxType;
+
+ /// Specifies whether the box is a drop down box and thus has an action.
+ bool m_bIsDropDownBox;
+
+ /// The child that represents the text field if there is one.
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>
+ m_xText;
+
+ /// The child that contains the items of this box.
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>
+ m_xList;
+
+ /** This flag specifies whether an object has a text field as child
+ regardless of whether that child being currently instantiated or
+ not.
+ */
+ bool m_bHasTextChild;
+
+ /** This flag specifies whether an object has a list as child regardless
+ of whether that child being currently instantiated or not. This
+ flag is always true in the current implementation because the list
+ child is just another wrapper arround this object and thus has the
+ same life time.
+ */
+ bool m_bHasListChild;
+
+ virtual ~VCLXAccessibleBox (void);
+
+ /** Returns </true> when the object is valid.
+ */
+ virtual bool IsValid (void) const = 0;
+
+ virtual void ProcessWindowChildEvent (const VclWindowEvent& rVclWindowEvent);
+ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+
+
+private:
+ /// Index in parent. This is settable from the outside.
+ sal_Int32 m_nIndexInParent;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblebutton.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblebutton.hxx
new file mode 100644
index 000000000000..f1e74db2fb2e
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblebutton.hxx
@@ -0,0 +1,88 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEBUTTON_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEBUTTON_HXX
+
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+
+#include <cppuhelper/implbase2.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleButton
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessibleAction,
+ ::com::sun::star::accessibility::XAccessibleValue > VCLXAccessibleButton_BASE;
+
+class VCLXAccessibleButton : public VCLXAccessibleTextComponent,
+ public VCLXAccessibleButton_BASE
+{
+protected:
+ virtual ~VCLXAccessibleButton();
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+public:
+ VCLXAccessibleButton( VCLXWindow* pVCLXindow );
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleValue
+ virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEBUTTON_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblecheckbox.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblecheckbox.hxx
new file mode 100644
index 000000000000..7545a7c93756
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblecheckbox.hxx
@@ -0,0 +1,95 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLECHECKBOX_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLECHECKBOX_HXX
+
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+
+#include <cppuhelper/implbase2.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleCheckBox
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessibleAction,
+ ::com::sun::star::accessibility::XAccessibleValue > VCLXAccessibleCheckBox_BASE;
+
+class VCLXAccessibleCheckBox : public VCLXAccessibleTextComponent,
+ public VCLXAccessibleCheckBox_BASE
+{
+private:
+ bool m_bChecked;
+ bool m_bIndeterminate;
+
+protected:
+ virtual ~VCLXAccessibleCheckBox();
+
+ bool IsChecked();
+ bool IsIndeterminate();
+
+ void SetChecked( bool bChecked );
+ void SetIndeterminate( bool bIndeterminate );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+public:
+ VCLXAccessibleCheckBox( VCLXWindow* pVCLXindow );
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleValue
+ virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLECHECKBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblecombobox.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblecombobox.hxx
new file mode 100644
index 000000000000..3eba57f58bca
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblecombobox.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLECOMBOBOX_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLECOMBOBOX_HXX
+
+#include <map>
+#include <accessibility/standard/vclxaccessiblebox.hxx>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <cppuhelper/implbase1.hxx>
+
+
+/** The accessible combobox has two children. The first is the text field
+ represented by an object of the <type>VCLXAccessibleEdit</type> class.
+ The second is the list containing all items and is represented by an
+ object of the <type>VCLXAccessibleList</type> class which does not
+ support selection at the moment.
+*/
+class VCLXAccessibleComboBox
+ : public VCLXAccessibleBox
+{
+public:
+ VCLXAccessibleComboBox (VCLXWindow* pVCLXindow);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ // Return combo box specific services.
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ virtual ~VCLXAccessibleComboBox (void);
+
+ virtual bool IsValid (void) const;
+ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLECHECKBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibledropdowncombobox.hxx b/accessibility/inc/accessibility/standard/vclxaccessibledropdowncombobox.hxx
new file mode 100644
index 000000000000..c90e91b179d5
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibledropdowncombobox.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEDROPDOWNCOMBOBOX_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEDROPDOWNCOMBOBOX_HXX
+
+#include <accessibility/standard/vclxaccessiblebox.hxx>
+#include <accessibility/standard/vclxaccessibleedit.hxx>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+
+#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/weakref.hxx>
+
+
+/** The accessible drop down combobox has two children. The first is the
+ text field represented by an object of the
+ <type>VCLXAccessibleEdit</type> class. The second is the list
+ containing all items and is represented by an object of the
+ <type>VCLXAccessibleList</type> class which does not support selection
+ at the moment.
+*/
+class VCLXAccessibleDropDownComboBox : public VCLXAccessibleBox
+{
+public:
+ VCLXAccessibleDropDownComboBox (VCLXWindow* pVCLXindow);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ // Return drop down combo box specific services.
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ virtual ~VCLXAccessibleDropDownComboBox (void);
+
+ virtual bool IsValid (void) const;
+ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEDROPDOWNCOMBOBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibledropdownlistbox.hxx b/accessibility/inc/accessibility/standard/vclxaccessibledropdownlistbox.hxx
new file mode 100644
index 000000000000..67e942b7a917
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibledropdownlistbox.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEDROPDOWNLISTBOX_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEDROPDOWNLISTBOX_HXX
+
+#include <accessibility/standard/vclxaccessiblebox.hxx>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+
+#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/weakref.hxx>
+
+
+/** The accessible drop down combobox has two children. The first is the
+ text field represented by an object of the
+ <type>VCLXAccessibleTextField</type> class which can not be edited. The
+ second is the list containing all items and is represented by an object
+ of the <type>VCLXAccessibleListBoxList</type> class which does support
+ selection.
+*/
+class VCLXAccessibleDropDownListBox : public VCLXAccessibleBox
+{
+public:
+ VCLXAccessibleDropDownListBox (VCLXWindow* pVCLXindow);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ // Return drop down list box specific services.
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ virtual ~VCLXAccessibleDropDownListBox (void);
+
+ virtual bool IsValid (void) const;
+ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEDROPDOWNLISTBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx b/accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx
new file mode 100644
index 000000000000..9fc77a0c8e7c
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx
@@ -0,0 +1,121 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEEDIT_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEEDIT_HXX
+
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+
+#include <cppuhelper/implbase2.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleEdit
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessibleAction,
+ ::com::sun::star::accessibility::XAccessibleEditableText > VCLXAccessibleEdit_BASE;
+
+class VCLXAccessibleEdit : public VCLXAccessibleTextComponent,
+ public VCLXAccessibleEdit_BASE
+{
+ friend class VCLXAccessibleBox;
+
+private:
+ sal_Int32 m_nSelectionStart;
+ sal_Int32 m_nCaretPosition;
+
+protected:
+ virtual ~VCLXAccessibleEdit();
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+public:
+ VCLXAccessibleEdit( VCLXWindow* pVCLXindow );
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleEditableText
+ virtual sal_Bool SAL_CALL cutText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL pasteText( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL deleteText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL insertText( const ::rtl::OUString& sText, sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL replaceText( sal_Int32 nStartIndex, sal_Int32 nEndIndex, const ::rtl::OUString& sReplacement ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setAttributes( sal_Int32 nStartIndex, sal_Int32 nEndIndex, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aAttributeSet ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setText( const ::rtl::OUString& sText ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEEDIT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblefixedhyperlink.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblefixedhyperlink.hxx
new file mode 100644
index 000000000000..9777ed472104
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblefixedhyperlink.hxx
@@ -0,0 +1,56 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEFIXEDHYPERLINK_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEFIXEDHYPERLINK_HXX
+
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+
+// ----------------------------------------------------
+// class VCLXAccessibleFixedHyperlink
+// ----------------------------------------------------
+
+class VCLXAccessibleFixedHyperlink : public VCLXAccessibleTextComponent
+{
+protected:
+ virtual ~VCLXAccessibleFixedHyperlink();
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+ virtual void implGetLineBoundary( ::com::sun::star::i18n::Boundary& rBoundary, sal_Int32 nIndex );
+
+public:
+ VCLXAccessibleFixedHyperlink( VCLXWindow* pVCLXindow );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEFIXEDHYPERLINK_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblefixedtext.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblefixedtext.hxx
new file mode 100644
index 000000000000..2caaee09f7e6
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblefixedtext.hxx
@@ -0,0 +1,56 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEFIXEDTEXT_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEFIXEDTEXT_HXX
+
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+
+// ----------------------------------------------------
+// class VCLXAccessibleFixedText
+// ----------------------------------------------------
+
+class VCLXAccessibleFixedText : public VCLXAccessibleTextComponent
+{
+protected:
+ virtual ~VCLXAccessibleFixedText();
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+ virtual void implGetLineBoundary( ::com::sun::star::i18n::Boundary& rBoundary, sal_Int32 nIndex );
+
+public:
+ VCLXAccessibleFixedText( VCLXWindow* pVCLXindow );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEFIXEDTEXT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx
new file mode 100644
index 000000000000..ea08b1b33919
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx
@@ -0,0 +1,226 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLELIST_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLELIST_HXX
+
+#include <vector>
+#include <functional>
+#include "accessibility/standard/vclxaccessiblelistitem.hxx"
+#include <accessibility/standard/vclxaccessibleedit.hxx>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <cppuhelper/implbase2.hxx>
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleSelection
+ > VCLXAccessibleList_BASE;
+
+typedef std::vector< ::com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessible > >
+ ListItems;
+
+namespace accessibility
+{
+ class IComboListBoxHelper;
+}
+
+
+/** Base class for the list contained in list- and combo boxes. This class
+ does not support selection because lists of combo boxes give no direct
+ access to their underlying list implementation. Look into derived
+ classes for selection.
+*/
+class VCLXAccessibleList
+ : public VCLXAccessibleComponent,
+ public VCLXAccessibleList_BASE
+{
+public:
+ enum BoxType {COMBOBOX, LISTBOX};
+
+ VCLXAccessibleList (VCLXWindow* pVCLXindow, BoxType aBoxType,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& _xParent);
+
+ /** The index that is passed to this method is returned on following
+ calls to <member>getAccessibleIndexInParent</member>.
+ */
+ void SetIndexInParent (sal_Int32 nIndex);
+
+ /** Process some of the events and delegate the rest to the base classes.
+ */
+ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+
+ /** Called on reception of selection events this method checks all known
+ list items for a possible change in their selection state and
+ updates that accordingly. No accessibility events are send because
+ the XAccessibleSelection interface is not supported and the items
+ are transient.
+ @param sTextOfSelectedItem
+ This string contains the text of the the currently selected
+ item. It is used to retrieve the index of that item.
+ */
+ void UpdateSelection (::rtl::OUString sTextOfSelectedItem);
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL
+ getAccessibleContext (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
+ getAccessibleChild (sal_Int32 i)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleParent( )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /** The index returned as index in parent is always the one set with the
+ <member>SetIndexInParent()</member> method.
+ */
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual sal_Bool SAL_CALL contains (const ::com::sun::star::awt::Point& aPoint)
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
+ getAccessibleAt (const ::com::sun::star::awt::Point& aPoint)
+ throw (::com::sun::star::uno::RuntimeException);
+
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ // Return list specific services.
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ BoxType m_aBoxType;
+ ::accessibility::IComboListBoxHelper* m_pListBoxHelper;
+ ListItems m_aAccessibleChildren;
+ sal_Int32 m_nVisibleLineCount;
+ /// Index in parent. This is settable from the outside.
+ sal_Int32 m_nIndexInParent;
+ sal_Int32 m_nLastTopEntry;
+ USHORT m_nLastSelectedPos;
+ bool m_bDisableProcessEvent;
+ bool m_bVisible;
+
+
+
+ /// The currently selected item.
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessible>
+ m_xSelectedItem;
+
+ virtual ~VCLXAccessibleList (void);
+
+ /** This function is called from the implementation helper during a
+ XComponent::dispose call. Free the list of items and the items themselves.
+ */
+ virtual void SAL_CALL disposing (void);
+
+ /** This method adds the states
+ <const>AccessibleStateType::FOCUSABLE</const> and possibly
+ <const>AccessibleStateType::MULTI_SELECTABLE</const> to the state set
+ of the base classes.
+ */
+ virtual void FillAccessibleStateSet (utl::AccessibleStateSetHelper& rStateSet);
+
+ /** Create the specified child and insert it into the list of children.
+ Sets the child's states.
+ */
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ CreateChild (sal_Int32 i);
+
+ /** Call this method when the item list has been changed, i.e. items
+ have been deleted or inserted.
+ @param bItemInserted
+ Indicate whether items have been inserted (<TRUE/>) or removed
+ (<FALSE/>).
+ @param nIndex
+ Index of the new or removed item. A value of -1 indicates that
+ the whole list has been cleared.
+ */
+ virtual void HandleChangedItemList (bool bItemInserted, sal_Int32 nIndex);
+
+ // VCLXAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ /** We need to save the accessible parent to return it in <type>getAccessibleParent()</type>,
+ because this method of the base class returns the wrong parent.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > m_xParent;
+
+
+ /** dispose all items aand clears the container
+ */
+ void clearItems();
+
+ void adjustEntriesIndexInParent(ListItems::iterator& _aBegin,::std::mem_fun_t<bool,VCLXAccessibleListItem>& _rMemFun);
+ void UpdateEntryRange_Impl (void);
+protected:
+ void UpdateSelection_Impl (USHORT nPos = 0);
+ BOOL checkEntrySelected(USHORT _nPos,
+ ::com::sun::star::uno::Any& _rNewValue,
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxNewAcc);
+private:
+ void notifyVisibleStates(sal_Bool _bSetNew );
+ void UpdateVisibleLineCount();
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelistbox.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelistbox.hxx
new file mode 100644
index 000000000000..52c07318c720
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblelistbox.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTBOX_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTBOX_HXX
+
+#include <accessibility/standard/vclxaccessiblebox.hxx>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+
+/** The accessible drop down combobox has one children. It is the list
+ containing all items and is represented by an object of the
+ <type>VCLXAccessibleListBoxList</type> class which does support
+ selection.
+*/
+class VCLXAccessibleListBox : public VCLXAccessibleBox
+{
+public:
+ VCLXAccessibleListBox (VCLXWindow* pVCLXindow);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ // Return list box specific services.
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ virtual ~VCLXAccessibleListBox (void);
+
+ virtual bool IsValid (void) const;
+ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelistboxlist.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelistboxlist.hxx
new file mode 100644
index 000000000000..436a20f55f28
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblelistboxlist.hxx
@@ -0,0 +1,108 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTBOXLIST_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTBOXLIST_HXX
+
+#include <accessibility/standard/vclxaccessiblelist.hxx>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/implbase1.hxx>
+
+typedef ::cppu::ImplHelper1 < ::com::sun::star::accessibility::XAccessibleSelection
+ > VCLXAccessibleListBoxList_BASE;
+
+
+class ListBox;
+/** This class extends the list of the <type>VCLXAccessibleList</type> class
+ about selection.
+*/
+class VCLXAccessibleListBoxList :
+ public VCLXAccessibleList,
+ public VCLXAccessibleListBoxList_BASE
+{
+public:
+ VCLXAccessibleListBoxList (VCLXWindow* pVCLXindow, BoxType aBoxType,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& _xParent);
+
+ // XInterface
+ DECLARE_XINTERFACE( )
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ // Return list box list specific services.
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ /** Create the specified child and insert it into the list of children.
+ Sets the child's states.
+ */
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ CreateChild (sal_Int32 i);
+
+
+protected:
+ virtual ~VCLXAccessibleListBoxList (void);
+
+ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+
+private:
+ sal_Int32 m_nLastTopEntry;
+ USHORT m_nLastSelectedPos;
+ bool m_bDisableProcessEvent;
+
+ void UpdateEntryRange_Impl (void);
+ using VCLXAccessibleList::UpdateSelection_Impl;
+ void UpdateSelection_Impl (void);
+ using VCLXAccessibleList::checkEntrySelected;
+ BOOL checkEntrySelected(ListBox* _pListBox,
+ USHORT _nPos,
+ ::com::sun::star::uno::Any& _rNewValue,
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxNewAcc);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx
new file mode 100644
index 000000000000..9dc4936988a8
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx
@@ -0,0 +1,198 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTITEM_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLELISTITEM_HXX
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
+#include <com/sun/star/accessibility/XAccessibleText.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <cppuhelper/compbase6.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+
+// forward ---------------------------------------------------------------
+
+namespace com { namespace sun { namespace star { namespace awt {
+ struct Point;
+ struct Rectangle;
+ struct Size;
+ class XFocusListener;
+} } } }
+
+namespace accessibility
+{
+ class IComboListBoxHelper;
+}
+
+// class VCLXAccessibleListItem ------------------------------------------
+
+typedef ::cppu::WeakAggComponentImplHelper6< ::com::sun::star::accessibility::XAccessible
+ , ::com::sun::star::accessibility::XAccessibleContext
+ , ::com::sun::star::accessibility::XAccessibleComponent
+ , ::com::sun::star::accessibility::XAccessibleEventBroadcaster
+ , ::com::sun::star::accessibility::XAccessibleText
+ , ::com::sun::star::lang::XServiceInfo > VCLXAccessibleListItem_BASE;
+
+/** the class OAccessibleListBoxEntry represents the base class for an accessible object of a listbox entry
+*/
+class VCLXAccessibleListItem : public ::comphelper::OBaseMutex,
+ public ::comphelper::OCommonAccessibleText,
+ public VCLXAccessibleListItem_BASE
+{
+private:
+ ::rtl::OUString m_sEntryText;
+ sal_Int32 m_nIndexInParent;
+ sal_Bool m_bSelected;
+ sal_Bool m_bVisible;
+
+protected:
+ /// client id in the AccessibleEventNotifier queue
+ sal_uInt32 m_nClientId;
+ ::accessibility::IComboListBoxHelper* m_pListBoxHelper;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > m_xParentContext;
+
+private:
+ /** notifies all listeners that this object has changed
+ @param _nEventId
+ is the event id
+ @param _aOldValue
+ is the old value
+ @param _aNewValue
+ is the new value
+ */
+ void NotifyAccessibleEvent( sal_Int16 _nEventId,
+ const ::com::sun::star::uno::Any& _aOldValue,
+ const ::com::sun::star::uno::Any& _aNewValue );
+
+protected:
+ virtual ~VCLXAccessibleListItem();
+ /** this function is called upon disposing the component
+ */
+ virtual void SAL_CALL disposing();
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+public:
+ /** OAccessibleBase needs a valid view
+ @param _pListBoxHelper
+ is the list- or combobox for which we implement an accessible object
+ @param _nIndexInParent
+ is the position of the entry inside the listbox
+ @param _xParent
+ is our parent accessible object
+ */
+ VCLXAccessibleListItem( ::accessibility::IComboListBoxHelper* _pListBoxHelper,
+ sal_Int32 _nIndexInParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent );
+
+
+ inline sal_Bool IsSelected() const { return m_bSelected; }
+ void SetSelected( sal_Bool _bSelected );
+ void SetVisible( sal_Bool _bVisible );
+ inline bool DecrementIndexInParent() { OSL_ENSURE(m_nIndexInParent != 0,"Invalid call!");--m_nIndexInParent; return true;}
+ inline bool IncrementIndexInParent() { ++m_nIndexInParent; return true;}
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw();
+ virtual void SAL_CALL release( ) throw();
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground (void) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground (void) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleEventBroadcaster
+ using cppu::WeakAggComponentImplHelperBase::addEventListener;
+ using cppu::WeakAggComponentImplHelperBase::removeEventListener;
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_ACCESSIBLELISTBOXENTRY_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx
new file mode 100644
index 000000000000..6103dbeb6fe7
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENU_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENU_HXX
+
+#include <accessibility/standard/vclxaccessiblemenuitem.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+#include <cppuhelper/implbase1.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleMenu
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper1 <
+ ::com::sun::star::accessibility::XAccessibleSelection > VCLXAccessibleMenu_BASE;
+
+class VCLXAccessibleMenu : public VCLXAccessibleMenuItem,
+ public VCLXAccessibleMenu_BASE
+{
+protected:
+ virtual sal_Bool IsFocused();
+ virtual sal_Bool IsPopupMenuOpen();
+
+public:
+ VCLXAccessibleMenu( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu );
+ virtual ~VCLXAccessibleMenu();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENU_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblemenubar.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblemenubar.hxx
new file mode 100644
index 000000000000..ffe565fcd1db
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblemenubar.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUBAR_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUBAR_HXX
+
+#include <accessibility/standard/accessiblemenucomponent.hxx>
+
+class VclSimpleEvent;
+class VclWindowEvent;
+class Window;
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleMenuBar
+// ----------------------------------------------------
+
+class VCLXAccessibleMenuBar : public OAccessibleMenuComponent
+{
+protected:
+ Window* m_pWindow;
+
+ virtual sal_Bool IsFocused();
+
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleMenuBar( Menu* pMenu );
+ virtual ~VCLXAccessibleMenuBar();
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUBAR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblemenuitem.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblemenuitem.hxx
new file mode 100644
index 000000000000..78e08bc4d0af
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblemenuitem.hxx
@@ -0,0 +1,119 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUITEM_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUITEM_HXX
+
+#include <accessibility/standard/accessiblemenuitemcomponent.hxx>
+
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+
+#include <cppuhelper/implbase3.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleMenuItem
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper3<
+ ::com::sun::star::accessibility::XAccessibleText,
+ ::com::sun::star::accessibility::XAccessibleAction,
+ ::com::sun::star::accessibility::XAccessibleValue > VCLXAccessibleMenuItem_BASE;
+
+class VCLXAccessibleMenuItem : public OAccessibleMenuItemComponent,
+ public ::comphelper::OCommonAccessibleText,
+ public VCLXAccessibleMenuItem_BASE
+{
+protected:
+ virtual sal_Bool IsFocused();
+ virtual sal_Bool IsSelected();
+ virtual sal_Bool IsChecked();
+
+ virtual sal_Bool IsHighlighted();
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+public:
+ VCLXAccessibleMenuItem( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu = 0 );
+ virtual ~VCLXAccessibleMenuItem();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleValue
+ virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUITEM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblemenuseparator.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblemenuseparator.hxx
new file mode 100644
index 000000000000..0cfb3e50545b
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblemenuseparator.hxx
@@ -0,0 +1,56 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUSEPARATOR_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUSEPARATOR_HXX
+
+#include <accessibility/standard/accessiblemenuitemcomponent.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleMenuSeparator
+// ----------------------------------------------------
+
+class VCLXAccessibleMenuSeparator : public OAccessibleMenuItemComponent
+{
+public:
+ VCLXAccessibleMenuSeparator( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu = 0 );
+ virtual ~VCLXAccessibleMenuSeparator();
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENUSEPARATOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblepopupmenu.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblepopupmenu.hxx
new file mode 100644
index 000000000000..536241abab4e
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblepopupmenu.hxx
@@ -0,0 +1,62 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLEPOPUPMENU_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLEPOPUPMENU_HXX
+
+#include <accessibility/standard/accessiblemenucomponent.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessiblePopupMenu
+// ----------------------------------------------------
+
+class VCLXAccessiblePopupMenu : public OAccessibleMenuComponent
+{
+protected:
+ virtual sal_Bool IsFocused();
+
+public:
+ VCLXAccessiblePopupMenu( Menu* pMenu );
+ virtual ~VCLXAccessiblePopupMenu();
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEPOPUPMENU_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx b/accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx
new file mode 100644
index 000000000000..649b844a0159
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLERADIOBUTTON_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLERADIOBUTTON_HXX
+
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+
+#include <cppuhelper/implbase2.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleRadioButton
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessibleAction,
+ ::com::sun::star::accessibility::XAccessibleValue > VCLXAccessibleRadioButton_BASE;
+
+class VCLXAccessibleRadioButton : public VCLXAccessibleTextComponent,
+ public VCLXAccessibleRadioButton_BASE
+{
+protected:
+ virtual ~VCLXAccessibleRadioButton();
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+public:
+ VCLXAccessibleRadioButton( VCLXWindow* pVCLXindow );
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleValue
+ virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLERADIOBUTTON_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx
new file mode 100644
index 000000000000..b1d26c84f7cb
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLESCROLLBAR_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLESCROLLBAR_HXX
+
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+
+#include <cppuhelper/implbase2.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleScrollBar
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessibleAction,
+ ::com::sun::star::accessibility::XAccessibleValue > VCLXAccessibleScrollBar_BASE;
+
+class VCLXAccessibleScrollBar : public VCLXAccessibleComponent,
+ public VCLXAccessibleScrollBar_BASE
+{
+protected:
+ virtual ~VCLXAccessibleScrollBar();
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+public:
+ VCLXAccessibleScrollBar( VCLXWindow* pVCLXindow );
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleValue
+ virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLESCROLLBAR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblestatusbar.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblestatusbar.hxx
new file mode 100644
index 000000000000..60d88e1c9f14
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblestatusbar.hxx
@@ -0,0 +1,82 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLESTATUSBAR_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLESTATUSBAR_HXX
+
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+#include <vector>
+
+class StatusBar;
+
+// ----------------------------------------------------
+// class VCLXAccessibleStatusBar
+// ----------------------------------------------------
+
+class VCLXAccessibleStatusBar : public VCLXAccessibleComponent
+{
+private:
+ typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > AccessibleChildren;
+
+ AccessibleChildren m_aAccessibleChildren;
+ StatusBar* m_pStatusBar;
+
+protected:
+ void UpdateShowing( sal_Int32 i, sal_Bool bShowing );
+ void UpdateItemName( sal_Int32 i );
+ void UpdateItemText( sal_Int32 i );
+
+ void InsertChild( sal_Int32 i );
+ void RemoveChild( sal_Int32 i );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleStatusBar( VCLXWindow* pVCLXWindow );
+ ~VCLXAccessibleStatusBar();
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLESTATUSBAR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblestatusbaritem.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblestatusbaritem.hxx
new file mode 100644
index 000000000000..1c7525764c40
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblestatusbaritem.hxx
@@ -0,0 +1,144 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLESTATUSBARITEM_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLESTATUSBARITEM_HXX
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <comphelper/accessibletexthelper.hxx>
+#include <cppuhelper/implbase2.hxx>
+
+
+class StatusBar;
+class VCLExternalSolarLock;
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleStatusBarItem
+// ----------------------------------------------------
+
+typedef ::comphelper::OAccessibleTextHelper AccessibleTextHelper_BASE;
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::lang::XServiceInfo > VCLXAccessibleStatusBarItem_BASE;
+
+class VCLXAccessibleStatusBarItem : public AccessibleTextHelper_BASE,
+ public VCLXAccessibleStatusBarItem_BASE
+{
+ friend class VCLXAccessibleStatusBar;
+
+private:
+ VCLExternalSolarLock* m_pExternalLock;
+ StatusBar* m_pStatusBar;
+ sal_uInt16 m_nItemId;
+ ::rtl::OUString m_sItemName;
+ ::rtl::OUString m_sItemText;
+ sal_Bool m_bShowing;
+
+protected:
+ sal_Bool IsShowing();
+ void SetShowing( sal_Bool bShowing );
+ void SetItemName( const ::rtl::OUString& sItemName );
+ ::rtl::OUString GetItemName();
+ void SetItemText( const ::rtl::OUString& sItemText );
+ ::rtl::OUString GetItemText();
+ sal_uInt16 GetItemId() const { return m_nItemId; }
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleStatusBarItem( StatusBar* pStatusBar, sal_uInt16 nItemId );
+ virtual ~VCLXAccessibleStatusBarItem();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLESTATUSBARITEM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletabcontrol.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletabcontrol.hxx
new file mode 100644
index 000000000000..b46eadcd9a23
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletabcontrol.hxx
@@ -0,0 +1,105 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABCONTROL_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABCONTROL_HXX
+
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+#include <vector>
+
+class TabControl;
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleTabControl
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper1 <
+ ::com::sun::star::accessibility::XAccessibleSelection > VCLXAccessibleTabControl_BASE;
+
+class VCLXAccessibleTabControl : public VCLXAccessibleComponent,
+ public VCLXAccessibleTabControl_BASE
+{
+private:
+ typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > AccessibleChildren;
+
+ AccessibleChildren m_aAccessibleChildren;
+ TabControl* m_pTabControl;
+
+protected:
+ void UpdateFocused();
+ void UpdateSelected( sal_Int32 i, bool bSelected );
+ void UpdatePageText( sal_Int32 i );
+ void UpdateTabPage( sal_Int32 i, bool bNew );
+
+ void InsertChild( sal_Int32 i );
+ void RemoveChild( sal_Int32 i );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleTabControl( VCLXWindow* pVCLXWindow );
+ ~VCLXAccessibleTabControl();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABCONTROL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletabpage.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletabpage.hxx
new file mode 100644
index 000000000000..9380d517158c
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletabpage.hxx
@@ -0,0 +1,148 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABPAGE_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABPAGE_HXX
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <comphelper/accessibletexthelper.hxx>
+#include <cppuhelper/implbase2.hxx>
+
+
+class TabControl;
+class VCLExternalSolarLock;
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleTabPage
+// ----------------------------------------------------
+
+typedef ::comphelper::OAccessibleTextHelper AccessibleTextHelper_BASE;
+
+typedef ::cppu::ImplHelper2<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::lang::XServiceInfo > VCLXAccessibleTabPage_BASE;
+
+class VCLXAccessibleTabPage : public AccessibleTextHelper_BASE,
+ public VCLXAccessibleTabPage_BASE
+{
+ friend class VCLXAccessibleTabControl;
+
+private:
+ VCLExternalSolarLock* m_pExternalLock;
+ TabControl* m_pTabControl;
+ sal_uInt16 m_nPageId;
+ bool m_bFocused;
+ bool m_bSelected;
+ ::rtl::OUString m_sPageText;
+
+protected:
+ bool IsFocused();
+ bool IsSelected();
+
+ void SetFocused( bool bFocused );
+ void SetSelected( bool bSelected );
+ void SetPageText( const ::rtl::OUString& sPageText );
+ ::rtl::OUString GetPageText();
+
+ void Update( bool bNew );
+
+ sal_uInt16 GetPageId() const { return m_nPageId; }
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleTabPage( TabControl* pTabControl, sal_uInt16 nPageId );
+ virtual ~VCLXAccessibleTabPage();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABPAGE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletabpagewindow.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletabpagewindow.hxx
new file mode 100644
index 000000000000..cf7c2de10d3c
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletabpagewindow.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABPAGEWINDOW_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABPAGEWINDOW_HXX
+
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+
+class TabControl;
+class TabPage;
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleTabPageWindow
+// ----------------------------------------------------
+
+class VCLXAccessibleTabPageWindow : public VCLXAccessibleComponent
+{
+private:
+ TabControl* m_pTabControl;
+ TabPage* m_pTabPage;
+ sal_uInt16 m_nPageId;
+
+protected:
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleTabPageWindow( VCLXWindow* pVCLXWindow );
+ ~VCLXAccessibleTabPageWindow();
+
+ // XAccessibleContext
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLETABPAGEWINDOW_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletextcomponent.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletextcomponent.hxx
new file mode 100644
index 000000000000..187bfb107f8a
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletextcomponent.hxx
@@ -0,0 +1,95 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLETEXTCOMPONENT_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLETEXTCOMPONENT_HXX
+
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleTextComponent
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper1 <
+ ::com::sun::star::accessibility::XAccessibleText > VCLXAccessibleTextComponent_BASE;
+
+class VCLXAccessibleTextComponent : public VCLXAccessibleComponent,
+ public ::comphelper::OCommonAccessibleText,
+ public VCLXAccessibleTextComponent_BASE
+{
+protected:
+ ::rtl::OUString m_sText;
+
+ void SetText( const ::rtl::OUString& sText );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleTextComponent( VCLXWindow* pVCLXWindow );
+ ~VCLXAccessibleTextComponent();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getCharacterCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionStart() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectionEnd() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLETEXTCOMPONENT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletextfield.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletextfield.hxx
new file mode 100644
index 000000000000..b01c63fe8e4e
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletextfield.hxx
@@ -0,0 +1,105 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLETEXTFIELD_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLETEXTFIELD_HXX
+
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+
+#include <cppuhelper/implbase1.hxx>
+
+typedef ::cppu::ImplHelper1<
+ ::com::sun::star::accessibility::XAccessible
+ > VCLXAccessible_BASE;
+
+
+/** This class represents non editable text fields. The object passed to
+ the constructor is expected to be a list (a <type>ListBox</type> to be
+ more specific). From this allways the selected item is token to be made
+ accessible by this class. When the selected item changes then also the
+ exported text changes.
+*/
+class VCLXAccessibleTextField :
+ public VCLXAccessibleTextComponent,
+ public VCLXAccessible_BASE
+{
+public:
+ VCLXAccessibleTextField (VCLXWindow* pVCLXindow,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >& _xParent);
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XAccessible
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL
+ getAccessibleContext (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ sal_Int32 SAL_CALL getAccessibleChildCount (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
+ getAccessibleChild (sal_Int32 i)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ sal_Int16 SAL_CALL getAccessibleRole (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleParent( )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+ // Return text field specific services.
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ virtual ~VCLXAccessibleTextField (void);
+
+ /** With this method the text of the currently selected item is made
+ available to the <type>VCLXAccessibleTextComponent</type> base class.
+ */
+ ::rtl::OUString implGetText (void);
+
+private:
+ /** We need to save the accessible parent to return it in <type>getAccessibleParent()</type>,
+ because this method of the base class returns the wrong parent.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > m_xParent;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletoolbox.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletoolbox.hxx
new file mode 100644
index 000000000000..846dfea93967
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletoolbox.hxx
@@ -0,0 +1,115 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLETOOLBOX_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLETOOLBOX_HXX
+
+#include <map>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+// ----------------------------------------------------
+// class VCLXAccessibleToolBox
+// ----------------------------------------------------
+
+typedef ::cppu::ImplHelper1 < ::com::sun::star::accessibility::XAccessibleSelection > VCLXAccessibleToolBox_BASE;
+
+typedef std::map< sal_Int32, com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > ToolBoxItemsMap;
+
+class VCLXAccessibleToolBoxItem;
+class ToolBox;
+
+class VCLXAccessibleToolBox : public VCLXAccessibleComponent, public VCLXAccessibleToolBox_BASE
+{
+private:
+ ToolBoxItemsMap m_aAccessibleChildren;
+
+ VCLXAccessibleToolBoxItem* GetItem_Impl( sal_Int32 _nPos, bool _bMustHaveFocus );
+
+ void UpdateFocus_Impl();
+ void ReleaseFocus_Impl( sal_Int32 _nPos );
+ void UpdateChecked_Impl( sal_Int32 _nPos );
+ void UpdateIndeterminate_Impl( sal_Int32 _nPos );
+ void UpdateItem_Impl( sal_Int32 _nPos, sal_Bool _bItemAdded );
+ void UpdateAllItems_Impl();
+ void UpdateItemName_Impl( sal_Int32 _nPos );
+ void UpdateItemEnabled_Impl( sal_Int32 _nPos );
+ void UpdateCustomPopupItemp_Impl( Window* pWindow, bool bOpen );
+ void HandleSubToolBarEvent( const VclWindowEvent& rVclWindowEvent, bool _bShow );
+ void ReleaseSubToolBox( ToolBox* _pSubToolBox );
+
+protected:
+ virtual ~VCLXAccessibleToolBox();
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent );
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetChildAccessible( const VclWindowEvent& rVclWindowEvent );
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetItemWindowAccessible( const VclWindowEvent& rVclWindowEvent );
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ VCLXAccessibleToolBox( VCLXWindow* pVCLXWindow );
+
+ // XInterface
+ DECLARE_XINTERFACE( )
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER( )
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+private:
+ void implReleaseToolboxItem(
+ ToolBoxItemsMap::iterator& _rMapPos,
+ bool _bNotifyRemoval,
+ bool _bDispose
+ );
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLETOOLBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx
new file mode 100644
index 000000000000..26070a4e91bb
--- /dev/null
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx
@@ -0,0 +1,168 @@
+/* -*- 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 ACCESSIBILITY_STANDARD_VCLXACCESSIBLETOOLBOXITEM_HXX
+#define ACCESSIBILITY_STANDARD_VCLXACCESSIBLETOOLBOXITEM_HXX
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
+#include <com/sun/star/accessibility/XAccessibleText.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <cppuhelper/implbase4.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+#include <tools/solar.h>
+
+// class VCLXAccessibleToolBoxItem ---------------------------------------------
+
+class ToolBox;
+
+typedef ::comphelper::OAccessibleTextHelper AccessibleTextHelper_BASE;
+typedef ::cppu::ImplHelper4 < ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleAction,
+ ::com::sun::star::accessibility::XAccessibleValue,
+ ::com::sun::star::lang::XServiceInfo > VCLXAccessibleToolBoxItem_BASE;
+
+class VCLExternalSolarLock;
+
+class VCLXAccessibleToolBoxItem : public AccessibleTextHelper_BASE,
+ public VCLXAccessibleToolBoxItem_BASE
+{
+private:
+ ::rtl::OUString m_sOldName;
+ ToolBox* m_pToolBox;
+ VCLExternalSolarLock* m_pExternalLock;
+ sal_Int32 m_nIndexInParent;
+ sal_Int16 m_nRole;
+ USHORT m_nItemId;
+ sal_Bool m_bHasFocus;
+ sal_Bool m_bIsChecked;
+ bool m_bIndeterminate;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xChild;
+
+public:
+ inline sal_Int32 getIndexInParent() const { return m_nIndexInParent; }
+ inline void setIndexInParent( sal_Int32 _nNewIndex ) { m_nIndexInParent = _nNewIndex; }
+
+protected:
+ virtual ~VCLXAccessibleToolBoxItem();
+
+ virtual void SAL_CALL disposing();
+
+ /// implements the calculation of the bounding rectangle
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // OCommonAccessibleText
+ virtual ::rtl::OUString implGetText();
+ virtual ::com::sun::star::lang::Locale implGetLocale();
+ virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex );
+
+ ::rtl::OUString GetText( bool _bAsName );
+
+public:
+ VCLXAccessibleToolBoxItem( ToolBox* _pToolBox, sal_Int32 _nPos );
+
+ void SetFocus( sal_Bool _bFocus );
+ inline sal_Bool HasFocus() const { return m_bHasFocus; }
+ void SetChecked( sal_Bool _bCheck );
+ inline sal_Bool IsChecked() const { return m_bIsChecked; }
+ void SetIndeterminate( bool _bIndeterminate );
+ inline bool IsIndeterminate() const { return m_bIndeterminate; }
+ inline void ReleaseToolBox() { m_pToolBox = NULL; }
+ void NameChanged();
+ void SetChild( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xChild );
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ GetChild() const { return m_xChild; }
+ void NotifyChildEvent( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xChild, bool _bShow );
+
+ void ToggleEnableState();
+
+ // XInterface
+ DECLARE_XINTERFACE( )
+ DECLARE_XTYPEPROVIDER( )
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleText
+ virtual sal_Int32 SAL_CALL getCaretPosition() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::FontDescriptor SAL_CALL getFontMetrics( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont >& xFont ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleValue
+ virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+#endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLETOOLBOXITEM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/makefile.mk b/accessibility/inc/makefile.mk
new file mode 100644
index 000000000000..3afcad166928
--- /dev/null
+++ b/accessibility/inc/makefile.mk
@@ -0,0 +1,47 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=accessibility
+TARGET=inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(ENABLE_PCH)"!=""
+ALLTAR : \
+ $(SLO)$/precompiled.pch \
+ $(SLO)$/precompiled_ex.pch
+
+.ENDIF # "$(ENABLE_PCH)"!=""
+
diff --git a/accessibility/inc/pch/precompiled_accessibility.cxx b/accessibility/inc/pch/precompiled_accessibility.cxx
new file mode 100644
index 000000000000..291aae11e94a
--- /dev/null
+++ b/accessibility/inc/pch/precompiled_accessibility.cxx
@@ -0,0 +1,31 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_accessibility.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/inc/pch/precompiled_accessibility.hxx b/accessibility/inc/pch/precompiled_accessibility.hxx
new file mode 100644
index 000000000000..18f4375ba801
--- /dev/null
+++ b/accessibility/inc/pch/precompiled_accessibility.hxx
@@ -0,0 +1,40 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:28.952369
+
+#ifdef PRECOMPILED_HEADERS
+
+//---MARKER---
+
+#include "com/sun/star/accessibility/AccessibleRelationType.hpp"
+#include "unotools/accessiblerelationsethelper.hxx"
+#include "vcl/window.hxx"
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/prj/build.lst b/accessibility/prj/build.lst
new file mode 100755
index 000000000000..f410ece56d9b
--- /dev/null
+++ b/accessibility/prj/build.lst
@@ -0,0 +1,18 @@
+ac accessibility : l10n tools jurt offuh unoil vcl javaunohelper jvmaccess cppu sal toolkit svtools NULL
+ac accessibility usr1 - all ac_mkout NULL
+ac accessibility\inc nmake - all ac_inc NULL
+ac accessibility\bridge\org\openoffice\java\accessibility nmake - w ac_ooja ac_inc NULL
+ac accessibility\bridge\org\openoffice\accessibility nmake - w ac_ooa ac_ooja.w ac_inc NULL
+ac accessibility\bridge\source\java nmake - w ac_ooan ac_ooa.w ac_inc NULL
+ac accessibility\inc get - all ac_inc NULL
+ac accessibility\source\helper nmake - all ac_helper ac_inc NULL
+ac accessibility\source\standard nmake - all ac_standard ac_helper ac_inc NULL
+ac accessibility\source\extended nmake - all ac_extended ac_inc NULL
+ac accessibility\util nmake - all ac_util ac_helper ac_standard ac_extended NULL
+ac accessibility\workben\org\openoffice\accessibility\awb nmake - all ac_awb_main ac_awb_misc ac_awb_canvas ac_awb_view ac_awb_tree NULL
+ac accessibility\workben\org\openoffice\accessibility\misc nmake - all ac_awb_misc NULL
+ac accessibility\workben\org\openoffice\accessibility\awb\canvas nmake - all ac_awb_canvas ac_awb_tree NULL
+ac accessibility\workben\org\openoffice\accessibility\awb\tree nmake - all ac_awb_tree ac_awb_misc NULL
+ac accessibility\workben\org\openoffice\accessibility\awb\view nmake - all ac_awb_view ac_awb_view_text NULL
+# dependency on ac_awb_misc to avoid concurrent creation of java_ver.mk
+ac accessibility\workben\org\openoffice\accessibility\awb\view\text nmake - all ac_awb_view_text ac_awb_misc NULL
diff --git a/accessibility/prj/d.lst b/accessibility/prj/d.lst
new file mode 100644
index 000000000000..f61319551e41
--- /dev/null
+++ b/accessibility/prj/d.lst
@@ -0,0 +1,8 @@
+..\%__SRC%\class\java_uno_accessbridge.jar %_DEST%\bin%_EXT%\java_uno_accessbridge.jar
+..\%__SRC%\class\java_accessibility.jar %_DEST%\bin%_EXT%\java_accessibility.jar
+
+..\%__SRC%\bin\*.dll %_DEST%\bin%_EXT%\*.dll
+..\%__SRC%\bin\*.res %_DEST%\bin%_EXT%\*.res
+..\%__SRC%\lib\lib*.so %_DEST%\lib%_EXT%
+..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
+
diff --git a/accessibility/prj/l10n b/accessibility/prj/l10n
new file mode 100644
index 000000000000..69f0d9e5e24e
--- /dev/null
+++ b/accessibility/prj/l10n
@@ -0,0 +1 @@
+#i49922# In this module en-US and de are used as source language
diff --git a/accessibility/source/extended/AccessibleBrowseBox.cxx b/accessibility/source/extended/AccessibleBrowseBox.cxx
new file mode 100644
index 000000000000..f0a97b33bb24
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBox.cxx
@@ -0,0 +1,395 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/AccessibleBrowseBox.hxx"
+#include "accessibility/extended/AccessibleBrowseBoxTable.hxx"
+#include "accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx"
+#include <svtools/accessibletableprovider.hxx>
+#include <comphelper/types.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+
+// ============================================================================
+
+namespace accessibility
+{
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+
+// ============================================================================
+class AccessibleBrowseBoxImpl
+{
+public:
+ /// the XAccessible which created the AccessibleBrowseBox
+ WeakReference< XAccessible > m_aCreator;
+
+ /** The data table child. */
+ Reference<
+ ::com::sun::star::accessibility::XAccessible > mxTable;
+ AccessibleBrowseBoxTable* m_pTable;
+
+ /** The header bar for rows ("handle column"). */
+ Reference<
+ ::com::sun::star::accessibility::XAccessible > mxRowHeaderBar;
+ AccessibleBrowseBoxHeaderBar* m_pRowHeaderBar;
+
+ /** The header bar for columns (first row of the table). */
+ Reference<
+ ::com::sun::star::accessibility::XAccessible > mxColumnHeaderBar;
+ AccessibleBrowseBoxHeaderBar* m_pColumnHeaderBar;
+};
+
+// Ctor/Dtor/disposing --------------------------------------------------------
+
+DBG_NAME( AccessibleBrowseBox )
+
+AccessibleBrowseBox::AccessibleBrowseBox(
+ const Reference< XAccessible >& _rxParent, const Reference< XAccessible >& _rxCreator,
+ IAccessibleTableProvider& _rBrowseBox )
+ : AccessibleBrowseBoxBase( _rxParent, _rBrowseBox,NULL, BBTYPE_BROWSEBOX )
+{
+ DBG_CTOR( AccessibleBrowseBox, NULL );
+ m_pImpl.reset( new AccessibleBrowseBoxImpl() );
+ m_pImpl->m_aCreator = _rxCreator;
+
+ m_xFocusWindow = VCLUnoHelper::GetInterface(mpBrowseBox->GetWindowInstance());
+}
+// -----------------------------------------------------------------------------
+void AccessibleBrowseBox::setCreator( const Reference< XAccessible >& _rxCreator )
+{
+#if OSL_DEBUG_LEVEL > 0
+ Reference< XAccessible > xCreator = (Reference< XAccessible >)m_pImpl->m_aCreator;
+ DBG_ASSERT( !xCreator.is(), "accessibility/extended/AccessibleBrowseBox::setCreator: creator already set!" );
+#endif
+ m_pImpl->m_aCreator = _rxCreator;
+}
+
+// -----------------------------------------------------------------------------
+AccessibleBrowseBox::~AccessibleBrowseBox()
+{
+ DBG_DTOR( AccessibleBrowseBox, NULL );
+}
+// -----------------------------------------------------------------------------
+
+void SAL_CALL AccessibleBrowseBox::disposing()
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ m_pImpl->m_pTable = NULL;
+ m_pImpl->m_pColumnHeaderBar = NULL;
+ m_pImpl->m_pRowHeaderBar = NULL;
+ m_pImpl->m_aCreator = Reference< XAccessible >();
+
+ Reference< XAccessible > xTable = m_pImpl->mxTable;
+
+ Reference< XComponent > xComp( m_pImpl->mxTable, UNO_QUERY );
+ if ( xComp.is() )
+ {
+ xComp->dispose();
+
+ }
+//! ::comphelper::disposeComponent(m_pImpl->mxTable);
+ ::comphelper::disposeComponent(m_pImpl->mxRowHeaderBar);
+ ::comphelper::disposeComponent(m_pImpl->mxColumnHeaderBar);
+
+ AccessibleBrowseBoxBase::disposing();
+}
+// -----------------------------------------------------------------------------
+
+// XAccessibleContext ---------------------------------------------------------
+
+sal_Int32 SAL_CALL AccessibleBrowseBox::getAccessibleChildCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return BBINDEX_FIRSTCONTROL + mpBrowseBox->GetAccessibleControlCount();
+}
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleBrowseBox::getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Reference< XAccessible > xRet;
+ if( nChildIndex >= 0 )
+ {
+ if( nChildIndex < BBINDEX_FIRSTCONTROL )
+ xRet = implGetFixedChild( nChildIndex );
+ else
+ {
+ // additional controls
+ nChildIndex -= BBINDEX_FIRSTCONTROL;
+ if( nChildIndex < mpBrowseBox->GetAccessibleControlCount() )
+ xRet = mpBrowseBox->CreateAccessibleControl( nChildIndex );
+ }
+ }
+
+ if( !xRet.is() )
+ throw lang::IndexOutOfBoundsException();
+ return xRet;
+}
+
+// XAccessibleComponent -------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleBrowseBox::getAccessibleAtPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 nIndex = 0;
+ if( mpBrowseBox->ConvertPointToControlIndex( nIndex, VCLPoint( rPoint ) ) )
+ xChild = mpBrowseBox->CreateAccessibleControl( nIndex );
+ else
+ {
+ // try whether point is in one of the fixed children
+ // (table, header bars, corner control)
+ Point aPoint( VCLPoint( rPoint ) );
+ for( nIndex = 0; (nIndex < BBINDEX_FIRSTCONTROL) && !xChild.is(); ++nIndex )
+ {
+ Reference< XAccessible > xCurrChild( implGetFixedChild( nIndex ) );
+ Reference< XAccessibleComponent >
+ xCurrChildComp( xCurrChild, uno::UNO_QUERY );
+
+ if( xCurrChildComp.is() &&
+ VCLRectangle( xCurrChildComp->getBounds() ).IsInside( aPoint ) )
+ xChild = xCurrChild;
+ }
+ }
+ return xChild;
+}
+// -----------------------------------------------------------------------------
+
+void SAL_CALL AccessibleBrowseBox::grabFocus()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ mpBrowseBox->GrabFocus();
+}
+// -----------------------------------------------------------------------------
+
+Any SAL_CALL AccessibleBrowseBox::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return Any();
+}
+// -----------------------------------------------------------------------------
+
+// XServiceInfo ---------------------------------------------------------------
+
+OUString SAL_CALL AccessibleBrowseBox::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.AccessibleBrowseBox" ) );
+}
+// -----------------------------------------------------------------------------
+
+// internal virtual methods ---------------------------------------------------
+
+Rectangle AccessibleBrowseBox::implGetBoundingBox()
+{
+ Window* pParent = mpBrowseBox->GetAccessibleParentWindow();
+ DBG_ASSERT( pParent, "implGetBoundingBox - missing parent window" );
+ return mpBrowseBox->GetWindowExtentsRelative( pParent );
+}
+// -----------------------------------------------------------------------------
+
+Rectangle AccessibleBrowseBox::implGetBoundingBoxOnScreen()
+{
+ return mpBrowseBox->GetWindowExtentsRelative( NULL );
+}
+// -----------------------------------------------------------------------------
+
+// internal helper methods ----------------------------------------------------
+
+Reference< XAccessible > AccessibleBrowseBox::implGetTable()
+{
+ if( !m_pImpl->mxTable.is() )
+ {
+ m_pImpl->m_pTable = createAccessibleTable();
+ m_pImpl->mxTable = m_pImpl->m_pTable;
+
+ }
+ return m_pImpl->mxTable;
+}
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible >
+AccessibleBrowseBox::implGetHeaderBar( AccessibleBrowseBoxObjType eObjType )
+{
+ Reference< XAccessible > xRet;
+ Reference< XAccessible >* pxMember = NULL;
+
+ if( eObjType == BBTYPE_ROWHEADERBAR )
+ pxMember = &m_pImpl->mxRowHeaderBar;
+ else if( eObjType == BBTYPE_COLUMNHEADERBAR )
+ pxMember = &m_pImpl->mxColumnHeaderBar;
+
+ if( pxMember )
+ {
+ if( !pxMember->is() )
+ {
+ AccessibleBrowseBoxHeaderBar* pHeaderBar = new AccessibleBrowseBoxHeaderBar(
+ (Reference< XAccessible >)m_pImpl->m_aCreator, *mpBrowseBox, eObjType );
+
+ if ( BBTYPE_COLUMNHEADERBAR == eObjType)
+ m_pImpl->m_pColumnHeaderBar = pHeaderBar;
+ else
+ m_pImpl->m_pRowHeaderBar = pHeaderBar;
+
+ *pxMember = pHeaderBar;
+ }
+ xRet = *pxMember;
+ }
+ return xRet;
+}
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible >
+AccessibleBrowseBox::implGetFixedChild( sal_Int32 nChildIndex )
+{
+ Reference< XAccessible > xRet;
+ switch( nChildIndex )
+ {
+ case BBINDEX_COLUMNHEADERBAR:
+ xRet = implGetHeaderBar( BBTYPE_COLUMNHEADERBAR );
+ break;
+ case BBINDEX_ROWHEADERBAR:
+ xRet = implGetHeaderBar( BBTYPE_ROWHEADERBAR );
+ break;
+ case BBINDEX_TABLE:
+ xRet = implGetTable();
+ break;
+ }
+ return xRet;
+}
+// -----------------------------------------------------------------------------
+AccessibleBrowseBoxTable* AccessibleBrowseBox::createAccessibleTable()
+{
+ Reference< XAccessible > xCreator = (Reference< XAccessible >)m_pImpl->m_aCreator;
+ DBG_ASSERT( xCreator.is(), "accessibility/extended/AccessibleBrowseBox::createAccessibleTable: my creator died - how this?" );
+ return new AccessibleBrowseBoxTable( xCreator, *mpBrowseBox );
+}
+// -----------------------------------------------------------------------------
+void AccessibleBrowseBox::commitTableEvent(sal_Int16 _nEventId,const Any& _rNewValue,const Any& _rOldValue)
+{
+ if ( m_pImpl->mxTable.is() )
+ {
+ m_pImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
+ }
+}
+// -----------------------------------------------------------------------------
+void AccessibleBrowseBox::commitHeaderBarEvent( sal_Int16 _nEventId,
+ const Any& _rNewValue,
+ const Any& _rOldValue,sal_Bool _bColumnHeaderBar)
+{
+ Reference< XAccessible > xHeaderBar = _bColumnHeaderBar ? m_pImpl->mxColumnHeaderBar : m_pImpl->mxRowHeaderBar;
+ AccessibleBrowseBoxHeaderBar* pHeaderBar = _bColumnHeaderBar ? m_pImpl->m_pColumnHeaderBar : m_pImpl->m_pRowHeaderBar;
+ if ( xHeaderBar.is() )
+ pHeaderBar->commitEvent(_nEventId,_rNewValue,_rOldValue);
+}
+
+// ============================================================================
+// = AccessibleBrowseBoxAccess
+// ============================================================================
+DBG_NAME( AccessibleBrowseBoxAccess )
+// -----------------------------------------------------------------------------
+AccessibleBrowseBoxAccess::AccessibleBrowseBoxAccess( const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox )
+ :m_xParent( _rxParent )
+ ,m_rBrowseBox( _rBrowseBox )
+ ,m_pContext( NULL )
+{
+ DBG_CTOR( AccessibleBrowseBoxAccess, NULL );
+}
+
+// -----------------------------------------------------------------------------
+AccessibleBrowseBoxAccess::~AccessibleBrowseBoxAccess()
+{
+ DBG_DTOR( AccessibleBrowseBoxAccess, NULL );
+}
+
+// -----------------------------------------------------------------------------
+void AccessibleBrowseBoxAccess::dispose()
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ m_pContext = NULL;
+ ::comphelper::disposeComponent( m_xContext );
+}
+
+// -----------------------------------------------------------------------------
+Reference< XAccessibleContext > SAL_CALL AccessibleBrowseBoxAccess::getAccessibleContext() throw ( RuntimeException )
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ DBG_ASSERT( ( m_pContext && m_xContext.is() ) || ( !m_pContext && !m_xContext.is() ),
+ "accessibility/extended/AccessibleBrowseBoxAccess::getAccessibleContext: inconsistency!" );
+
+ // if the context died meanwhile (there is no listener, so it won't tell us explicitily when this happens),
+ // then reset and re-create.
+ if ( m_pContext && !m_pContext->isAlive() )
+ m_xContext = m_pContext = NULL;
+
+ if ( !m_xContext.is() )
+ m_xContext = m_pContext = new AccessibleBrowseBox( m_xParent, this, m_rBrowseBox );
+
+ return m_xContext;
+}
+
+// -----------------------------------------------------------------------------
+bool AccessibleBrowseBoxAccess::isContextAlive() const
+{
+ return ( NULL != m_pContext ) && m_pContext->isAlive();
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleBrowseBoxBase.cxx b/accessibility/source/extended/AccessibleBrowseBoxBase.cxx
new file mode 100644
index 000000000000..24cc3ce52f2a
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBoxBase.cxx
@@ -0,0 +1,660 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/AccessibleBrowseBoxBase.hxx"
+#include <svtools/accessibletableprovider.hxx>
+#include <rtl/uuid.h>
+//
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblerelationsethelper.hxx>
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+using namespace ::svt;
+
+
+// ============================================================================
+
+namespace accessibility {
+
+using namespace com::sun::star::accessibility::AccessibleStateType;
+// ============================================================================
+
+// Ctor/Dtor/disposing --------------------------------------------------------
+
+DBG_NAME( AccessibleBrowseBoxBase )
+
+AccessibleBrowseBoxBase::AccessibleBrowseBoxBase(
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTableProvider& rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ AccessibleBrowseBoxObjType eObjType ) :
+ AccessibleBrowseBoxImplHelper( m_aMutex ),
+ mxParent( rxParent ),
+ mpBrowseBox( &rBrowseBox ),
+ m_xFocusWindow(_xFocusWindow),
+ maName( rBrowseBox.GetAccessibleObjectName( eObjType ) ),
+ maDescription( rBrowseBox.GetAccessibleObjectDescription( eObjType ) ),
+ meObjType( eObjType ),
+ m_aClientId(0)
+{
+ DBG_CTOR( AccessibleBrowseBoxBase, NULL );
+ if ( m_xFocusWindow.is() )
+ m_xFocusWindow->addFocusListener( this );
+}
+
+AccessibleBrowseBoxBase::AccessibleBrowseBoxBase(
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTableProvider& rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ AccessibleBrowseBoxObjType eObjType,
+ const ::rtl::OUString& rName,
+ const ::rtl::OUString& rDescription ) :
+ AccessibleBrowseBoxImplHelper( m_aMutex ),
+ mxParent( rxParent ),
+ mpBrowseBox( &rBrowseBox ),
+ m_xFocusWindow(_xFocusWindow),
+ maName( rName ),
+ maDescription( rDescription ),
+ meObjType( eObjType ),
+ m_aClientId(0)
+{
+ DBG_CTOR( AccessibleBrowseBoxBase, NULL );
+ if ( m_xFocusWindow.is() )
+ m_xFocusWindow->addFocusListener( this );
+}
+
+AccessibleBrowseBoxBase::~AccessibleBrowseBoxBase()
+{
+ DBG_DTOR( AccessibleBrowseBoxBase, NULL );
+
+ if( isAlive() )
+ {
+ // increment ref count to prevent double call of Dtor
+ osl_incrementInterlockedCount( &m_refCount );
+ dispose();
+ }
+}
+
+void SAL_CALL AccessibleBrowseBoxBase::disposing()
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ if ( m_xFocusWindow.is() )
+ {
+ SolarMutexGuard aSolarGuard;
+ m_xFocusWindow->removeFocusListener( this );
+ }
+
+ if ( getClientId( ) )
+ {
+ AccessibleEventNotifier::TClientId nId( getClientId( ) );
+ setClientId( 0 );
+ AccessibleEventNotifier::revokeClientNotifyDisposing( nId, *this );
+ }
+
+ mxParent = NULL;
+ mpBrowseBox = NULL;
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL AccessibleBrowseBoxBase::getAccessibleParent()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return mxParent;
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxBase::getAccessibleIndexInParent()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ // -1 for child not found/no parent (according to specification)
+ sal_Int32 nRet = -1;
+
+ Reference< uno::XInterface > xMeMyselfAndI( static_cast< XAccessibleContext* >( this ), uno::UNO_QUERY );
+
+ // iterate over parent's children and search for this object
+ if( mxParent.is() )
+ {
+ Reference< XAccessibleContext >
+ xParentContext( mxParent->getAccessibleContext() );
+ if( xParentContext.is() )
+ {
+ Reference< uno::XInterface > xChild;
+
+ sal_Int32 nChildCount = xParentContext->getAccessibleChildCount();
+ for( sal_Int32 nChild = 0; nChild < nChildCount; ++nChild )
+ {
+ xChild = xChild.query( xParentContext->getAccessibleChild( nChild ) );
+
+ if ( xMeMyselfAndI.get() == xChild.get() )
+ {
+ nRet = nChild;
+ break;
+ }
+ }
+ }
+ }
+ return nRet;
+}
+
+OUString SAL_CALL AccessibleBrowseBoxBase::getAccessibleDescription()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return maDescription;
+}
+
+OUString SAL_CALL AccessibleBrowseBoxBase::getAccessibleName()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return maName;
+}
+
+Reference< XAccessibleRelationSet > SAL_CALL
+AccessibleBrowseBoxBase::getAccessibleRelationSet()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ // BrowseBox does not have relations.
+ return new utl::AccessibleRelationSetHelper;
+}
+
+Reference< XAccessibleStateSet > SAL_CALL
+AccessibleBrowseBoxBase::getAccessibleStateSet()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ // don't check whether alive -> StateSet may contain DEFUNC
+ return implCreateStateSetHelper();
+}
+
+lang::Locale SAL_CALL AccessibleBrowseBoxBase::getLocale()
+ throw ( IllegalAccessibleComponentStateException, uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ if( mxParent.is() )
+ {
+ Reference< XAccessibleContext >
+ xParentContext( mxParent->getAccessibleContext() );
+ if( xParentContext.is() )
+ return xParentContext->getLocale();
+ }
+ throw IllegalAccessibleComponentStateException();
+}
+
+// XAccessibleComponent -------------------------------------------------------
+
+sal_Bool SAL_CALL AccessibleBrowseBoxBase::containsPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ return Rectangle( Point(), getBoundingBox().GetSize() ).IsInside( VCLPoint( rPoint ) );
+}
+
+awt::Rectangle SAL_CALL AccessibleBrowseBoxBase::getBounds()
+ throw ( uno::RuntimeException )
+{
+ return AWTRectangle( getBoundingBox() );
+}
+
+awt::Point SAL_CALL AccessibleBrowseBoxBase::getLocation()
+ throw ( uno::RuntimeException )
+{
+ return AWTPoint( getBoundingBox().TopLeft() );
+}
+
+awt::Point SAL_CALL AccessibleBrowseBoxBase::getLocationOnScreen()
+ throw ( uno::RuntimeException )
+{
+ return AWTPoint( getBoundingBoxOnScreen().TopLeft() );
+}
+
+awt::Size SAL_CALL AccessibleBrowseBoxBase::getSize()
+ throw ( uno::RuntimeException )
+{
+ return AWTSize( getBoundingBox().GetSize() );
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxBase::isShowing()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implIsShowing();
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxBase::isVisible()
+ throw ( uno::RuntimeException )
+{
+ Reference< XAccessibleStateSet > xStateSet = getAccessibleStateSet();
+ return xStateSet.is() ?
+ xStateSet->contains( AccessibleStateType::VISIBLE ) : sal_False;
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxBase::isFocusTraversable()
+ throw ( uno::RuntimeException )
+{
+ Reference< XAccessibleStateSet > xStateSet = getAccessibleStateSet();
+ return xStateSet.is() ?
+ xStateSet->contains( AccessibleStateType::FOCUSABLE ) : sal_False;
+}
+
+void SAL_CALL AccessibleBrowseBoxBase::focusGained( const ::com::sun::star::awt::FocusEvent& ) throw (::com::sun::star::uno::RuntimeException)
+{
+ com::sun::star::uno::Any aFocused;
+ com::sun::star::uno::Any aEmpty;
+ aFocused <<= FOCUSED;
+
+ commitEvent(AccessibleEventId::STATE_CHANGED,aFocused,aEmpty);
+}
+// -----------------------------------------------------------------------------
+
+void SAL_CALL AccessibleBrowseBoxBase::focusLost( const ::com::sun::star::awt::FocusEvent& ) throw (::com::sun::star::uno::RuntimeException)
+{
+ com::sun::star::uno::Any aFocused;
+ com::sun::star::uno::Any aEmpty;
+ aFocused <<= FOCUSED;
+
+ commitEvent(AccessibleEventId::STATE_CHANGED,aEmpty,aFocused);
+}
+// XAccessibleEventBroadcaster ------------------------------------------------
+
+void SAL_CALL AccessibleBrowseBoxBase::addEventListener(
+ const Reference< XAccessibleEventListener>& _rxListener )
+ throw ( uno::RuntimeException )
+{
+ if ( _rxListener.is() )
+ {
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ if ( !getClientId( ) )
+ setClientId( AccessibleEventNotifier::registerClient( ) );
+
+ AccessibleEventNotifier::addEventListener( getClientId( ), _rxListener );
+ }
+}
+
+void SAL_CALL AccessibleBrowseBoxBase::removeEventListener(
+ const Reference< XAccessibleEventListener>& _rxListener )
+ throw ( uno::RuntimeException )
+{
+ if( _rxListener.is() && getClientId( ) )
+ {
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ sal_Int32 nListenerCount = AccessibleEventNotifier::removeEventListener( getClientId( ), _rxListener );
+ if ( !nListenerCount )
+ {
+ // no listeners anymore
+ // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+ // and at least to us not firing any events anymore, in case somebody calls
+ // NotifyAccessibleEvent, again
+
+ AccessibleEventNotifier::TClientId nId( getClientId( ) );
+ setClientId( 0 );
+ AccessibleEventNotifier::revokeClient( nId );
+ }
+ }
+}
+
+// XTypeProvider --------------------------------------------------------------
+
+Sequence< sal_Int8 > SAL_CALL AccessibleBrowseBoxBase::getImplementationId()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslGlobalMutex() );
+ static Sequence< sal_Int8 > aId;
+ implCreateUuid( aId );
+ return aId;
+}
+
+// XServiceInfo ---------------------------------------------------------------
+
+sal_Bool SAL_CALL AccessibleBrowseBoxBase::supportsService(
+ const OUString& rServiceName )
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ Sequence< OUString > aSupportedServices( getSupportedServiceNames() );
+ const OUString* pArrBegin = aSupportedServices.getConstArray();
+ const OUString* pArrEnd = pArrBegin + aSupportedServices.getLength();
+ const OUString* pString = pArrBegin;
+
+ for( ; ( pString != pArrEnd ) && ( rServiceName != *pString ); ++pString )
+ ;
+
+ return pString != pArrEnd;
+}
+
+Sequence< OUString > SAL_CALL AccessibleBrowseBoxBase::getSupportedServiceNames()
+ throw ( uno::RuntimeException )
+{
+ const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.accessibility.AccessibleContext" ) );
+ return Sequence< OUString >( &aServiceName, 1 );
+}
+
+// other public methods -------------------------------------------------------
+
+void AccessibleBrowseBoxBase::setAccessibleName( const OUString& rName )
+{
+ ::osl::ClearableMutexGuard aGuard( getOslMutex() );
+ Any aOld;
+ aOld <<= maName;
+ maName = rName;
+
+ aGuard.clear();
+
+ commitEvent(
+ AccessibleEventId::NAME_CHANGED,
+ uno::makeAny( maName ),
+ aOld );
+}
+
+void AccessibleBrowseBoxBase::setAccessibleDescription( const OUString& rDescription )
+{
+ ::osl::ClearableMutexGuard aGuard( getOslMutex() );
+ Any aOld;
+ aOld <<= maDescription;
+ maDescription = rDescription;
+
+ aGuard.clear();
+
+ commitEvent(
+ AccessibleEventId::DESCRIPTION_CHANGED,
+ uno::makeAny( maDescription ),
+ aOld );
+}
+
+// internal virtual methods ---------------------------------------------------
+
+sal_Bool AccessibleBrowseBoxBase::implIsShowing()
+{
+ sal_Bool bShowing = sal_False;
+ if( mxParent.is() )
+ {
+ Reference< XAccessibleComponent >
+ xParentComp( mxParent->getAccessibleContext(), uno::UNO_QUERY );
+ if( xParentComp.is() )
+ bShowing = implGetBoundingBox().IsOver(
+ VCLRectangle( xParentComp->getBounds() ) );
+ }
+ return bShowing;
+}
+
+::utl::AccessibleStateSetHelper* AccessibleBrowseBoxBase::implCreateStateSetHelper()
+{
+ ::utl::AccessibleStateSetHelper*
+ pStateSetHelper = new ::utl::AccessibleStateSetHelper;
+
+ if( isAlive() )
+ {
+ // SHOWING done with mxParent
+ if( implIsShowing() )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+ // BrowseBox fills StateSet with states depending on object type
+ mpBrowseBox->FillAccessibleStateSet( *pStateSetHelper, getType() );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return pStateSetHelper;
+}
+
+// internal helper methods ----------------------------------------------------
+
+sal_Bool AccessibleBrowseBoxBase::isAlive() const
+{
+ return !rBHelper.bDisposed && !rBHelper.bInDispose && mpBrowseBox;
+}
+
+void AccessibleBrowseBoxBase::ensureIsAlive() const
+ throw ( lang::DisposedException )
+{
+ if( !isAlive() )
+ throw lang::DisposedException();
+}
+
+Rectangle AccessibleBrowseBoxBase::getBoundingBox()
+ throw ( lang::DisposedException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ Rectangle aRect = implGetBoundingBox();
+ if ( 0 == aRect.Left() && 0 == aRect.Top() && 0 == aRect.Right() && 0 == aRect.Bottom() )
+ {
+ DBG_ERRORFILE( "shit" );
+ }
+ return aRect;
+}
+
+Rectangle AccessibleBrowseBoxBase::getBoundingBoxOnScreen()
+ throw ( lang::DisposedException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ Rectangle aRect = implGetBoundingBoxOnScreen();
+ if ( 0 == aRect.Left() && 0 == aRect.Top() && 0 == aRect.Right() && 0 == aRect.Bottom() )
+ {
+ DBG_ERRORFILE( "shit" );
+ }
+ return aRect;
+}
+
+void AccessibleBrowseBoxBase::commitEvent(
+ sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue )
+{
+ ::osl::ClearableMutexGuard aGuard( getOslMutex() );
+ if ( !getClientId( ) )
+ // if we don't have a client id for the notifier, then we don't have listeners, then
+ // we don't need to notify anything
+ return;
+
+ // build an event object
+ AccessibleEventObject aEvent;
+ aEvent.Source = *this;
+ aEvent.EventId = _nEventId;
+ aEvent.OldValue = _rOldValue;
+ aEvent.NewValue = _rNewValue;
+
+ // let the notifier handle this event
+
+ AccessibleEventNotifier::addEvent( getClientId( ), aEvent );
+}
+// -----------------------------------------------------------------------------
+
+void AccessibleBrowseBoxBase::implCreateUuid( Sequence< sal_Int8 >& rId )
+{
+ if( !rId.hasElements() )
+ {
+ rId.realloc( 16 );
+ rtl_createUuid( reinterpret_cast< sal_uInt8* >( rId.getArray() ), 0, sal_True );
+ }
+}
+// -----------------------------------------------------------------------------
+sal_Int16 SAL_CALL AccessibleBrowseBoxBase::getAccessibleRole()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ sal_Int16 nRole = AccessibleRole::UNKNOWN;
+ switch ( meObjType )
+ {
+ case BBTYPE_ROWHEADERCELL:
+ nRole = AccessibleRole::ROW_HEADER;
+ break;
+ case BBTYPE_COLUMNHEADERCELL:
+ nRole = AccessibleRole::COLUMN_HEADER;
+ break;
+ case BBTYPE_COLUMNHEADERBAR:
+ case BBTYPE_ROWHEADERBAR:
+ case BBTYPE_TABLE:
+ nRole = AccessibleRole::TABLE;
+ break;
+ case BBTYPE_TABLECELL:
+ nRole = AccessibleRole::TABLE_CELL;
+ break;
+ case BBTYPE_BROWSEBOX:
+ nRole = AccessibleRole::PANEL;
+ break;
+ case BBTYPE_CHECKBOXCELL:
+ nRole = AccessibleRole::CHECK_BOX;
+ break;
+ }
+ return nRole;
+}
+// -----------------------------------------------------------------------------
+Any SAL_CALL AccessibleBrowseBoxBase::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ return Any();
+}
+// -----------------------------------------------------------------------------
+Reference<XAccessible > SAL_CALL AccessibleBrowseBoxBase::getAccessibleAtPoint( const ::com::sun::star::awt::Point& )
+ throw ( uno::RuntimeException )
+{
+ return NULL;
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL AccessibleBrowseBoxBase::disposing( const ::com::sun::star::lang::EventObject& ) throw (::com::sun::star::uno::RuntimeException)
+{
+ m_xFocusWindow = NULL;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL AccessibleBrowseBoxBase::getForeground( ) throw (::com::sun::star::uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ sal_Int32 nColor = 0;
+ Window* pInst = mpBrowseBox->GetWindowInstance();
+ if ( pInst )
+ {
+ if ( pInst->IsControlForeground() )
+ nColor = pInst->GetControlForeground().GetColor();
+ else
+ {
+ Font aFont;
+ if ( pInst->IsControlFont() )
+ aFont = pInst->GetControlFont();
+ else
+ aFont = pInst->GetFont();
+ nColor = aFont.GetColor().GetColor();
+ }
+ }
+
+ return nColor;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL AccessibleBrowseBoxBase::getBackground( ) throw (::com::sun::star::uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ sal_Int32 nColor = 0;
+ Window* pInst = mpBrowseBox->GetWindowInstance();
+ if ( pInst )
+ {
+ if ( pInst->IsControlBackground() )
+ nColor = pInst->GetControlBackground().GetColor();
+ else
+ nColor = pInst->GetBackground().GetColor().GetColor();
+ }
+
+ return nColor;
+}
+
+// ============================================================================
+DBG_NAME( BrowseBoxAccessibleElement )
+
+// XInterface -----------------------------------------------------------------
+IMPLEMENT_FORWARD_XINTERFACE2( BrowseBoxAccessibleElement, AccessibleBrowseBoxBase, BrowseBoxAccessibleElement_Base )
+
+// XTypeProvider --------------------------------------------------------------
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( BrowseBoxAccessibleElement, AccessibleBrowseBoxBase, BrowseBoxAccessibleElement_Base )
+
+// XAccessible ----------------------------------------------------------------
+
+Reference< XAccessibleContext > SAL_CALL BrowseBoxAccessibleElement::getAccessibleContext() throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return this;
+}
+
+// ----------------------------------------------------------------------------
+BrowseBoxAccessibleElement::BrowseBoxAccessibleElement( const Reference< XAccessible >& rxParent, IAccessibleTableProvider& rBrowseBox,
+ const Reference< awt::XWindow >& _xFocusWindow, AccessibleBrowseBoxObjType eObjType )
+ :AccessibleBrowseBoxBase( rxParent, rBrowseBox, _xFocusWindow, eObjType )
+{
+ DBG_CTOR( BrowseBoxAccessibleElement, NULL );
+}
+
+// ----------------------------------------------------------------------------
+BrowseBoxAccessibleElement::BrowseBoxAccessibleElement( const Reference< XAccessible >& rxParent, IAccessibleTableProvider& rBrowseBox,
+ const Reference< awt::XWindow >& _xFocusWindow, AccessibleBrowseBoxObjType eObjType,
+ const ::rtl::OUString& rName, const ::rtl::OUString& rDescription )
+ :AccessibleBrowseBoxBase( rxParent, rBrowseBox, _xFocusWindow, eObjType, rName, rDescription )
+{
+ DBG_CTOR( BrowseBoxAccessibleElement, NULL );
+}
+
+// ----------------------------------------------------------------------------
+BrowseBoxAccessibleElement::~BrowseBoxAccessibleElement( )
+{
+ DBG_DTOR( BrowseBoxAccessibleElement, NULL );
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleBrowseBoxCheckBoxCell.cxx b/accessibility/source/extended/AccessibleBrowseBoxCheckBoxCell.cxx
new file mode 100644
index 000000000000..2353a25007aa
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBoxCheckBoxCell.cxx
@@ -0,0 +1,174 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <svtools/accessibletableprovider.hxx>
+
+namespace accessibility
+{
+ using namespace com::sun::star::accessibility;
+ using namespace com::sun::star::uno;
+ using namespace com::sun::star::accessibility::AccessibleEventId;
+ using namespace ::svt;
+
+ AccessibleCheckBoxCell::AccessibleCheckBoxCell(const Reference<XAccessible >& _rxParent,
+ IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos
+ ,const TriState& _eState,
+ sal_Bool _bEnabled,
+ sal_Bool _bIsTriState)
+ :AccessibleBrowseBoxCell(_rxParent, _rBrowseBox, _xFocusWindow, _nRowPos, _nColPos, BBTYPE_CHECKBOXCELL)
+ ,m_eState(_eState)
+ ,m_bEnabled(_bEnabled)
+ ,m_bIsTriState(_bIsTriState)
+ {
+ }
+ // -----------------------------------------------------------------------------
+ IMPLEMENT_FORWARD_XINTERFACE2( AccessibleCheckBoxCell, AccessibleBrowseBoxCell, AccessibleCheckBoxCell_BASE )
+ // -----------------------------------------------------------------------------
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleCheckBoxCell, AccessibleBrowseBoxCell, AccessibleCheckBoxCell_BASE )
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > SAL_CALL AccessibleCheckBoxCell::getAccessibleContext( ) throw (RuntimeException)
+ {
+ ensureIsAlive();
+ return this;
+ }
+ // -----------------------------------------------------------------------------
+ ::utl::AccessibleStateSetHelper* AccessibleCheckBoxCell::implCreateStateSetHelper()
+ {
+ ::utl::AccessibleStateSetHelper* pStateSetHelper =
+ AccessibleBrowseBoxCell::implCreateStateSetHelper();
+ if( isAlive() )
+ {
+ mpBrowseBox->FillAccessibleStateSetForCell(
+ *pStateSetHelper, getRowPos(), static_cast< sal_uInt16 >( getColumnPos() ) );
+ if ( m_eState == STATE_CHECK )
+ pStateSetHelper->AddState( AccessibleStateType::CHECKED );
+ }
+ return pStateSetHelper;
+ }
+ // -----------------------------------------------------------------------------
+ // -----------------------------------------------------------------------------
+ // XAccessibleValue
+ // -----------------------------------------------------------------------------
+
+ Any SAL_CALL AccessibleCheckBoxCell::getCurrentValue( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ sal_Int32 nValue = 0;
+ switch( m_eState )
+ {
+ case STATE_NOCHECK:
+ nValue = 0;
+ break;
+ case STATE_CHECK:
+ nValue = 1;
+ break;
+ case STATE_DONTKNOW:
+ nValue = 2;
+ break;
+ }
+ return makeAny(nValue);
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool SAL_CALL AccessibleCheckBoxCell::setCurrentValue( const Any& ) throw (RuntimeException)
+ {
+ return sal_False;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Any SAL_CALL AccessibleCheckBoxCell::getMaximumValue( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ Any aValue;
+
+ if ( m_bIsTriState )
+ aValue <<= (sal_Int32) 2;
+ else
+ aValue <<= (sal_Int32) 1;
+
+ return aValue;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Any SAL_CALL AccessibleCheckBoxCell::getMinimumValue( ) throw (RuntimeException)
+ {
+ Any aValue;
+ aValue <<= (sal_Int32) 0;
+
+ return aValue;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ sal_Int32 SAL_CALL AccessibleCheckBoxCell::getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ return 0;
+ }
+ // -----------------------------------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL AccessibleCheckBoxCell::getAccessibleChild( sal_Int32 ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleCheckBoxCell::getImplementationName() throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.TableCheckBoxCell" ) );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleCheckBoxCell::getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ return ( getRowPos() * mpBrowseBox->GetColumnCount() ) + getColumnPos();
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleCheckBoxCell::SetChecked( sal_Bool _bChecked )
+ {
+ m_eState = _bChecked ? STATE_CHECK : STATE_NOCHECK;
+ Any aOldValue, aNewValue;
+ if ( _bChecked )
+ aNewValue <<= AccessibleStateType::CHECKED;
+ else
+ aOldValue <<= AccessibleStateType::CHECKED;
+ commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleBrowseBoxHeaderBar.cxx b/accessibility/source/extended/AccessibleBrowseBoxHeaderBar.cxx
new file mode 100644
index 000000000000..77a59ef99fc1
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBoxHeaderBar.cxx
@@ -0,0 +1,421 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+
+#include "accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx"
+#include <svtools/accessibletableprovider.hxx>
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+// Ctor/Dtor/disposing --------------------------------------------------------
+
+DBG_NAME( AccessibleBrowseBoxHeaderBar )
+
+AccessibleBrowseBoxHeaderBar::AccessibleBrowseBoxHeaderBar(
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTableProvider& rBrowseBox,
+ AccessibleBrowseBoxObjType eObjType ) :
+ AccessibleBrowseBoxTableBase( rxParent, rBrowseBox,eObjType )
+{
+ DBG_CTOR( AccessibleBrowseBoxHeaderBar, NULL );
+
+ DBG_ASSERT( isRowBar() || isColumnBar(),
+ "accessibility/extended/AccessibleBrowseBoxHeaderBar - invalid object type" );
+}
+
+AccessibleBrowseBoxHeaderBar::~AccessibleBrowseBoxHeaderBar()
+{
+ DBG_DTOR( AccessibleBrowseBoxHeaderBar, NULL );
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleBrowseBoxHeaderBar::getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidHeaderIndex( nChildIndex );
+ return implGetChild( nChildIndex, implToVCLColumnPos( nChildIndex ) );
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxHeaderBar::getAccessibleIndexInParent()
+ throw ( uno::RuntimeException )
+{
+ return isRowBar() ? BBINDEX_ROWHEADERBAR : BBINDEX_COLUMNHEADERBAR;
+}
+
+// XAccessibleComponent -------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleBrowseBoxHeaderBar::getAccessibleAtPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ sal_Int32 nRow = 0;
+ sal_uInt16 nColumnPos = 0;
+ sal_Bool bConverted = isRowBar() ?
+ mpBrowseBox->ConvertPointToRowHeader( nRow, VCLPoint( rPoint ) ) :
+ mpBrowseBox->ConvertPointToColumnHeader( nColumnPos, VCLPoint( rPoint ) );
+
+ return bConverted ? implGetChild( nRow, nColumnPos ) : Reference< XAccessible >();
+}
+
+void SAL_CALL AccessibleBrowseBoxHeaderBar::grabFocus()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ // focus on header not supported
+}
+
+Any SAL_CALL AccessibleBrowseBoxHeaderBar::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return Any(); // no special key bindings for header
+}
+
+// XAccessibleTable -----------------------------------------------------------
+
+OUString SAL_CALL AccessibleBrowseBoxHeaderBar::getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidRow( nRow );
+ return OUString(); // no headers in headers
+}
+
+OUString SAL_CALL AccessibleBrowseBoxHeaderBar::getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidColumn( nColumn );
+ return OUString(); // no headers in headers
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleBrowseBoxHeaderBar::getAccessibleRowHeaders()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // no headers in headers
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleBrowseBoxHeaderBar::getAccessibleColumnHeaders()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // no headers in headers
+}
+
+Sequence< sal_Int32 > SAL_CALL AccessibleBrowseBoxHeaderBar::getSelectedAccessibleRows()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Sequence< sal_Int32 > aSelSeq;
+ // row of column header bar not selectable
+ if( isRowBar() )
+ implGetSelectedRows( aSelSeq );
+ return aSelSeq;
+}
+
+Sequence< sal_Int32 > SAL_CALL AccessibleBrowseBoxHeaderBar::getSelectedAccessibleColumns()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Sequence< sal_Int32 > aSelSeq;
+ // column of row header bar ("handle column") not selectable
+ if( isColumnBar() )
+ implGetSelectedColumns( aSelSeq );
+ return aSelSeq;
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxHeaderBar::isAccessibleRowSelected( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidRow( nRow );
+ return isRowBar() ? implIsRowSelected( nRow ) : sal_False;
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxHeaderBar::isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidColumn( nColumn );
+ return isColumnBar() ? implIsColumnSelected( nColumn ) : sal_False;
+}
+
+Reference< XAccessible > SAL_CALL AccessibleBrowseBoxHeaderBar::getAccessibleCellAt(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return implGetChild( nRow, implToVCLColumnPos( nColumn ) );
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxHeaderBar::isAccessibleSelected(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return isRowBar() ? implIsRowSelected( nRow ) : implIsColumnSelected( nColumn );
+}
+
+// XAccessibleSelection -------------------------------------------------------
+
+void SAL_CALL AccessibleBrowseBoxHeaderBar::selectAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidHeaderIndex( nChildIndex );
+ if( isRowBar() )
+ implSelectRow( nChildIndex, sal_True );
+ else
+ implSelectColumn( implToVCLColumnPos( nChildIndex ), sal_True );
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxHeaderBar::isAccessibleChildSelected( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ // using interface methods - no mutex
+ return isRowBar() ?
+ isAccessibleRowSelected( nChildIndex ) :
+ isAccessibleColumnSelected( nChildIndex );
+}
+
+void SAL_CALL AccessibleBrowseBoxHeaderBar::clearAccessibleSelection()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ mpBrowseBox->SetNoSelection();
+}
+
+void SAL_CALL AccessibleBrowseBoxHeaderBar::selectAllAccessibleChildren()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ // no multiselection of columns possible
+ if( isRowBar() )
+ mpBrowseBox->SelectAll();
+ else
+ implSelectColumn( implToVCLColumnPos( 0 ), sal_True );
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxHeaderBar::getSelectedAccessibleChildCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return isRowBar() ? implGetSelectedRowCount() : implGetSelectedColumnCount();
+}
+
+Reference< XAccessible > SAL_CALL
+AccessibleBrowseBoxHeaderBar::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ // method may throw lang::IndexOutOfBoundsException
+ sal_Int32 nIndex = implGetChildIndexFromSelectedIndex( nSelectedChildIndex );
+ return implGetChild( nIndex, implToVCLColumnPos( nIndex ) );
+}
+
+void SAL_CALL AccessibleBrowseBoxHeaderBar::deselectAccessibleChild(
+ sal_Int32 nSelectedChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ // method may throw lang::IndexOutOfBoundsException
+ if ( isAccessibleChildSelected(nSelectedChildIndex) )
+ {
+ if( isRowBar() )
+ implSelectRow( nSelectedChildIndex, sal_False );
+ else
+ implSelectColumn( implToVCLColumnPos( nSelectedChildIndex ), sal_False );
+ }
+}
+
+// XInterface -----------------------------------------------------------------
+
+Any SAL_CALL AccessibleBrowseBoxHeaderBar::queryInterface( const uno::Type& rType )
+ throw ( uno::RuntimeException )
+{
+ Any aAny( AccessibleBrowseBoxTableBase::queryInterface( rType ) );
+ return aAny.hasValue() ?
+ aAny : AccessibleBrowseBoxHeaderBarImplHelper::queryInterface( rType );
+}
+
+void SAL_CALL AccessibleBrowseBoxHeaderBar::acquire() throw ()
+{
+ AccessibleBrowseBoxTableBase::acquire();
+}
+
+void SAL_CALL AccessibleBrowseBoxHeaderBar::release() throw ()
+{
+ AccessibleBrowseBoxTableBase::release();
+}
+
+// XServiceInfo ---------------------------------------------------------------
+
+OUString SAL_CALL AccessibleBrowseBoxHeaderBar::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.AccessibleBrowseBoxHeaderBar" ) );
+}
+
+Sequence< sal_Int8 > SAL_CALL AccessibleBrowseBoxHeaderBar::getImplementationId()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslGlobalMutex() );
+ static Sequence< sal_Int8 > aId;
+ implCreateUuid( aId );
+ return aId;
+}
+
+// internal virtual methods ---------------------------------------------------
+
+Rectangle AccessibleBrowseBoxHeaderBar::implGetBoundingBox()
+{
+ return mpBrowseBox->calcHeaderRect(isColumnBar(),FALSE);
+}
+
+Rectangle AccessibleBrowseBoxHeaderBar::implGetBoundingBoxOnScreen()
+{
+ return mpBrowseBox->calcHeaderRect(isColumnBar(),TRUE);
+}
+
+sal_Int32 AccessibleBrowseBoxHeaderBar::implGetRowCount() const
+{
+ // column header bar: only 1 row
+ return isRowBar() ? AccessibleBrowseBoxTableBase::implGetRowCount() : 1;
+}
+
+sal_Int32 AccessibleBrowseBoxHeaderBar::implGetColumnCount() const
+{
+ // row header bar ("handle column"): only 1 column
+ return isColumnBar() ? AccessibleBrowseBoxTableBase::implGetColumnCount() : 1;
+}
+
+// internal helper methods ----------------------------------------------------
+
+Reference< XAccessible > AccessibleBrowseBoxHeaderBar::implGetChild(
+ sal_Int32 nRow, sal_uInt16 nColumnPos )
+{
+ return isRowBar() ?
+ mpBrowseBox->CreateAccessibleRowHeader( nRow ) :
+ mpBrowseBox->CreateAccessibleColumnHeader( nColumnPos );
+}
+
+sal_Int32 AccessibleBrowseBoxHeaderBar::implGetChildIndexFromSelectedIndex(
+ sal_Int32 nSelectedChildIndex )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ Sequence< sal_Int32 > aSelSeq;
+ if( isRowBar() )
+ implGetSelectedRows( aSelSeq );
+ else
+ implGetSelectedColumns( aSelSeq );
+
+ if( (nSelectedChildIndex < 0) || (nSelectedChildIndex >= aSelSeq.getLength()) )
+ throw lang::IndexOutOfBoundsException();
+
+ return aSelSeq[ nSelectedChildIndex ];
+}
+
+void AccessibleBrowseBoxHeaderBar::ensureIsValidHeaderIndex( sal_Int32 nIndex )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ if( isRowBar() )
+ ensureIsValidRow( nIndex );
+ else
+ ensureIsValidColumn( nIndex );
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx b/accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx
new file mode 100644
index 000000000000..4f778f5b8df8
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx
@@ -0,0 +1,175 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/AccessibleBrowseBoxHeaderCell.hxx"
+#include <svtools/accessibletableprovider.hxx>
+#include "accessibility/extended/AccessibleBrowseBox.hxx"
+
+namespace accessibility
+{
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star::uno;
+ using namespace ::svt;
+
+AccessibleBrowseBoxHeaderCell::AccessibleBrowseBoxHeaderCell(sal_Int32 _nColumnRowId,
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTableProvider& rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ AccessibleBrowseBoxObjType eObjType)
+: BrowseBoxAccessibleElement(rxParent,
+ rBrowseBox,
+ _xFocusWindow,
+ eObjType,
+ rBrowseBox.GetAccessibleObjectName( eObjType ,_nColumnRowId),
+ rBrowseBox.GetAccessibleObjectDescription( eObjType ,_nColumnRowId))
+, m_nColumnRowId(_nColumnRowId)
+{
+}
+/** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+*/
+::utl::AccessibleStateSetHelper* AccessibleBrowseBoxHeaderCell::implCreateStateSetHelper()
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ::utl::AccessibleStateSetHelper*
+ pStateSetHelper = new ::utl::AccessibleStateSetHelper;
+
+ if( isAlive() )
+ {
+ // SHOWING done with mxParent
+ if( implIsShowing() )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+
+ SolarMutexGuard aSolarGuard;
+ pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
+ pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE );
+ pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
+ pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
+
+ sal_Bool bSelected = isRowBarCell() ? mpBrowseBox->IsRowSelected(m_nColumnRowId) : mpBrowseBox->IsColumnSelected(m_nColumnRowId);
+ if ( bSelected )
+ pStateSetHelper->AddState( AccessibleStateType::SELECTED );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return pStateSetHelper;
+}
+// -----------------------------------------------------------------------------
+/** @return
+ The count of visible children.
+*/
+sal_Int32 SAL_CALL AccessibleBrowseBoxHeaderCell::getAccessibleChildCount()
+ throw ( RuntimeException )
+{
+ return 0;
+}
+// -----------------------------------------------------------------------------
+
+/** @return
+ The XAccessible interface of the specified child.
+*/
+Reference<XAccessible > SAL_CALL AccessibleBrowseBoxHeaderCell::getAccessibleChild( sal_Int32 )
+ throw ( IndexOutOfBoundsException,RuntimeException )
+{
+ throw IndexOutOfBoundsException();
+}
+// -----------------------------------------------------------------------------
+
+/** Grabs the focus to the column header. */
+void SAL_CALL AccessibleBrowseBoxHeaderCell::grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ if ( isRowBarCell() )
+ mpBrowseBox->SelectRow(m_nColumnRowId);
+ else
+ mpBrowseBox->SelectColumn(static_cast<sal_uInt16>(m_nColumnRowId)); //!!!
+}
+// -----------------------------------------------------------------------------
+/** @return
+ The name of this class.
+*/
+::rtl::OUString SAL_CALL AccessibleBrowseBoxHeaderCell::getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException )
+{
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.AccessibleBrowseBoxHeaderCell" ) );
+}
+// -----------------------------------------------------------------------------
+namespace
+{
+ Rectangle getRectangle(IAccessibleTableProvider* _pBrowseBox,sal_Int32 _nRowColIndex, BOOL _bOnScreen,BOOL _bRowBar)
+ {
+ sal_Int32 nRow = 0;
+ sal_uInt16 nCol = (sal_uInt16)_nRowColIndex;
+ if ( _bRowBar )
+ {
+ nRow = _nRowColIndex + 1;
+ nCol = 0;
+ }
+
+ Rectangle aRet(_pBrowseBox->GetFieldRectPixelAbs( nRow , nCol, TRUE, _bOnScreen));
+ return Rectangle(aRet.TopLeft() - Point(0,aRet.GetHeight()),aRet.GetSize());
+ }
+}
+
+Rectangle AccessibleBrowseBoxHeaderCell::implGetBoundingBox()
+{
+ return getRectangle(mpBrowseBox,m_nColumnRowId,FALSE,isRowBarCell());
+}
+// -----------------------------------------------------------------------------
+
+Rectangle AccessibleBrowseBoxHeaderCell::implGetBoundingBoxOnScreen()
+{
+ return getRectangle(mpBrowseBox,m_nColumnRowId,TRUE,isRowBarCell());
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL AccessibleBrowseBoxHeaderCell::getAccessibleIndexInParent()
+ throw ( RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ sal_Int32 nIndex = m_nColumnRowId;
+ if ( mpBrowseBox->HasRowHeader() )
+ --nIndex;
+ return nIndex;
+}
+// -----------------------------------------------------------------------------
+} // namespace accessibility
+// -----------------------------------------------------------------------------
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleBrowseBoxTable.cxx b/accessibility/source/extended/AccessibleBrowseBoxTable.cxx
new file mode 100644
index 000000000000..ad5594df6987
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBoxTable.cxx
@@ -0,0 +1,280 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+
+#include "accessibility/extended/AccessibleBrowseBoxTable.hxx"
+#include <svtools/accessibletableprovider.hxx>
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+// Ctor/Dtor/disposing --------------------------------------------------------
+
+DBG_NAME( AccessibleBrowseBoxTable )
+
+AccessibleBrowseBoxTable::AccessibleBrowseBoxTable(
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTableProvider& rBrowseBox ) :
+ AccessibleBrowseBoxTableBase( rxParent, rBrowseBox, BBTYPE_TABLE )
+{
+ DBG_CTOR( AccessibleBrowseBoxTable, NULL );
+}
+
+AccessibleBrowseBoxTable::~AccessibleBrowseBoxTable()
+{
+ DBG_DTOR( AccessibleBrowseBoxTable, NULL );
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleBrowseBoxTable::getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ return mpBrowseBox->CreateAccessibleCell(
+ implGetRow( nChildIndex ), (sal_Int16)implGetColumn( nChildIndex ) );
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTable::getAccessibleIndexInParent()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return BBINDEX_TABLE;
+}
+
+// XAccessibleComponent -------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleBrowseBoxTable::getAccessibleAtPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 nRow = 0;
+ sal_uInt16 nColumnPos = 0;
+ if( mpBrowseBox->ConvertPointToCellAddress( nRow, nColumnPos, VCLPoint( rPoint ) ) )
+ xChild = mpBrowseBox->CreateAccessibleCell( nRow, nColumnPos );
+
+ return xChild;
+}
+
+void SAL_CALL AccessibleBrowseBoxTable::grabFocus()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ mpBrowseBox->GrabTableFocus();
+}
+
+Any SAL_CALL AccessibleBrowseBoxTable::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return Any(); // no special key bindings for data table
+}
+
+// XAccessibleTable -----------------------------------------------------------
+
+OUString SAL_CALL AccessibleBrowseBoxTable::getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidRow( nRow );
+ return mpBrowseBox->GetRowDescription( nRow );
+}
+
+OUString SAL_CALL AccessibleBrowseBoxTable::getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidColumn( nColumn );
+ return mpBrowseBox->GetColumnDescription( (sal_uInt16)nColumn );
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleBrowseBoxTable::getAccessibleRowHeaders()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implGetHeaderBar( BBINDEX_ROWHEADERBAR );
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleBrowseBoxTable::getAccessibleColumnHeaders()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implGetHeaderBar( BBINDEX_COLUMNHEADERBAR );
+}
+
+Sequence< sal_Int32 > SAL_CALL AccessibleBrowseBoxTable::getSelectedAccessibleRows()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Sequence< sal_Int32 > aSelSeq;
+ implGetSelectedRows( aSelSeq );
+ return aSelSeq;
+}
+
+Sequence< sal_Int32 > SAL_CALL AccessibleBrowseBoxTable::getSelectedAccessibleColumns()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Sequence< sal_Int32 > aSelSeq;
+ implGetSelectedColumns( aSelSeq );
+ return aSelSeq;
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxTable::isAccessibleRowSelected( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidRow( nRow );
+ return implIsRowSelected( nRow );
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxTable::isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidColumn( nColumn );
+ return implIsColumnSelected( nColumn );
+}
+
+Reference< XAccessible > SAL_CALL AccessibleBrowseBoxTable::getAccessibleCellAt(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return mpBrowseBox->CreateAccessibleCell( nRow, (sal_Int16)nColumn );
+}
+
+sal_Bool SAL_CALL AccessibleBrowseBoxTable::isAccessibleSelected(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return implIsRowSelected( nRow ) || implIsColumnSelected( nColumn );
+}
+
+// XServiceInfo ---------------------------------------------------------------
+
+OUString SAL_CALL AccessibleBrowseBoxTable::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.AccessibleBrowseBoxTable" ) );
+}
+
+// internal virtual methods ---------------------------------------------------
+
+Rectangle AccessibleBrowseBoxTable::implGetBoundingBox()
+{
+ return mpBrowseBox->calcTableRect(FALSE);
+}
+
+Rectangle AccessibleBrowseBoxTable::implGetBoundingBoxOnScreen()
+{
+ return mpBrowseBox->calcTableRect();
+}
+
+// internal helper methods ----------------------------------------------------
+
+Reference< XAccessibleTable > AccessibleBrowseBoxTable::implGetHeaderBar(
+ sal_Int32 nChildIndex )
+ throw ( uno::RuntimeException )
+{
+ Reference< XAccessible > xRet;
+ Reference< XAccessibleContext > xContext( mxParent, uno::UNO_QUERY );
+ if( xContext.is() )
+ {
+ try
+ {
+ xRet = xContext->getAccessibleChild( nChildIndex );
+ }
+ catch( lang::IndexOutOfBoundsException& )
+ {
+ DBG_ERROR( "implGetHeaderBar - wrong child index" );
+ }
+ // RuntimeException goes to caller
+ }
+ return Reference< XAccessibleTable >( xRet, uno::UNO_QUERY );
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleBrowseBoxTableBase.cxx b/accessibility/source/extended/AccessibleBrowseBoxTableBase.cxx
new file mode 100644
index 000000000000..825689cf3185
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBoxTableBase.cxx
@@ -0,0 +1,357 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+
+#include "accessibility/extended/AccessibleBrowseBoxTableBase.hxx"
+#include <svtools/accessibletableprovider.hxx>
+#include <tools/multisel.hxx>
+#include <comphelper/sequence.hxx>
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+// Ctor/Dtor/disposing --------------------------------------------------------
+
+DBG_NAME( AccessibleBrowseBoxTableBase )
+
+AccessibleBrowseBoxTableBase::AccessibleBrowseBoxTableBase(
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTableProvider& rBrowseBox,
+ AccessibleBrowseBoxObjType eObjType ) :
+ BrowseBoxAccessibleElement( rxParent, rBrowseBox,NULL, eObjType )
+{
+ DBG_CTOR( AccessibleBrowseBoxTableBase, NULL );
+}
+
+AccessibleBrowseBoxTableBase::~AccessibleBrowseBoxTableBase()
+{
+ DBG_DTOR( AccessibleBrowseBoxTableBase, NULL );
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleChildCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implGetChildCount();
+}
+
+sal_Int16 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleRole()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return AccessibleRole::TABLE;
+}
+
+// XAccessibleTable -----------------------------------------------------------
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleRowCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implGetRowCount();
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleColumnCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implGetColumnCount();
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleRowExtentAt(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return 1; // merged cells not supported
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleColumnExtentAt(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return 1; // merged cells not supported
+}
+
+Reference< XAccessible > SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleCaption()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // not supported
+}
+
+Reference< XAccessible > SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleSummary()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // not supported
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleIndex(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return implGetChildIndex( nRow, nColumn );
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleRow( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ return implGetRow( nChildIndex );
+}
+
+sal_Int32 SAL_CALL AccessibleBrowseBoxTableBase::getAccessibleColumn( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ return implGetColumn( nChildIndex );
+}
+
+// XInterface -----------------------------------------------------------------
+
+Any SAL_CALL AccessibleBrowseBoxTableBase::queryInterface( const uno::Type& rType )
+ throw ( uno::RuntimeException )
+{
+ Any aAny( BrowseBoxAccessibleElement::queryInterface( rType ) );
+ return aAny.hasValue() ?
+ aAny : AccessibleBrowseBoxTableImplHelper::queryInterface( rType );
+}
+
+void SAL_CALL AccessibleBrowseBoxTableBase::acquire() throw ()
+{
+ BrowseBoxAccessibleElement::acquire();
+}
+
+void SAL_CALL AccessibleBrowseBoxTableBase::release() throw ()
+{
+ BrowseBoxAccessibleElement::release();
+}
+
+// XTypeProvider --------------------------------------------------------------
+
+Sequence< uno::Type > SAL_CALL AccessibleBrowseBoxTableBase::getTypes()
+ throw ( uno::RuntimeException )
+{
+ return ::comphelper::concatSequences(
+ BrowseBoxAccessibleElement::getTypes(),
+ AccessibleBrowseBoxTableImplHelper::getTypes() );
+}
+
+Sequence< sal_Int8 > SAL_CALL AccessibleBrowseBoxTableBase::getImplementationId()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslGlobalMutex() );
+ static Sequence< sal_Int8 > aId;
+ implCreateUuid( aId );
+ return aId;
+}
+
+// internal virtual methods ---------------------------------------------------
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetRowCount() const
+{
+ return mpBrowseBox->GetRowCount();
+}
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetColumnCount() const
+{
+ sal_uInt16 nColumns = mpBrowseBox->GetColumnCount();
+ // do not count the "handle column"
+ if( nColumns && implHasHandleColumn() )
+ --nColumns;
+ return nColumns;
+}
+
+// internal helper methods ----------------------------------------------------
+
+sal_Bool AccessibleBrowseBoxTableBase::implHasHandleColumn() const
+{
+ return mpBrowseBox->HasRowHeader();
+}
+
+sal_uInt16 AccessibleBrowseBoxTableBase::implToVCLColumnPos( sal_Int32 nColumn ) const
+{
+ sal_uInt16 nVCLPos = 0;
+ if( (0 <= nColumn) && (nColumn < implGetColumnCount()) )
+ {
+ // regard "handle column"
+ if( implHasHandleColumn() )
+ ++nColumn;
+ nVCLPos = static_cast< sal_uInt16 >( nColumn );
+ }
+ return nVCLPos;
+}
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetChildCount() const
+{
+ return implGetRowCount() * implGetColumnCount();
+}
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetRow( sal_Int32 nChildIndex ) const
+{
+ sal_Int32 nColumns = implGetColumnCount();
+ return nColumns ? (nChildIndex / nColumns) : 0;
+}
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetColumn( sal_Int32 nChildIndex ) const
+{
+ sal_Int32 nColumns = implGetColumnCount();
+ return nColumns ? (nChildIndex % nColumns) : 0;
+}
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetChildIndex(
+ sal_Int32 nRow, sal_Int32 nColumn ) const
+{
+ return nRow * implGetColumnCount() + nColumn;
+}
+
+sal_Bool AccessibleBrowseBoxTableBase::implIsRowSelected( sal_Int32 nRow ) const
+{
+ return mpBrowseBox->IsRowSelected( nRow );
+}
+
+sal_Bool AccessibleBrowseBoxTableBase::implIsColumnSelected( sal_Int32 nColumn ) const
+{
+ if( implHasHandleColumn() )
+ --nColumn;
+ return mpBrowseBox->IsColumnSelected( nColumn );
+}
+
+void AccessibleBrowseBoxTableBase::implSelectRow( sal_Int32 nRow, sal_Bool bSelect )
+{
+ mpBrowseBox->SelectRow( nRow, bSelect, sal_True );
+}
+
+void AccessibleBrowseBoxTableBase::implSelectColumn( sal_Int32 nColumnPos, sal_Bool bSelect )
+{
+ mpBrowseBox->SelectColumn( (sal_uInt16)nColumnPos, bSelect );
+}
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetSelectedRowCount() const
+{
+ return mpBrowseBox->GetSelectedRowCount();
+}
+
+sal_Int32 AccessibleBrowseBoxTableBase::implGetSelectedColumnCount() const
+{
+ return mpBrowseBox->GetSelectedColumnCount();
+}
+
+void AccessibleBrowseBoxTableBase::implGetSelectedRows( Sequence< sal_Int32 >& rSeq )
+{
+ mpBrowseBox->GetAllSelectedRows( rSeq );
+}
+
+void AccessibleBrowseBoxTableBase::implGetSelectedColumns( Sequence< sal_Int32 >& rSeq )
+{
+ mpBrowseBox->GetAllSelectedColumns( rSeq );
+}
+
+void AccessibleBrowseBoxTableBase::ensureIsValidRow( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ if( nRow >= implGetRowCount() )
+ throw lang::IndexOutOfBoundsException(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "row index is invalid" ) ), *this );
+}
+
+void AccessibleBrowseBoxTableBase::ensureIsValidColumn( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ if( nColumn >= implGetColumnCount() )
+ throw lang::IndexOutOfBoundsException(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("column index is invalid") ), *this );
+}
+
+void AccessibleBrowseBoxTableBase::ensureIsValidAddress(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ ensureIsValidRow( nRow );
+ ensureIsValidColumn( nColumn );
+}
+
+void AccessibleBrowseBoxTableBase::ensureIsValidIndex( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ if( nChildIndex >= implGetChildCount() )
+ throw lang::IndexOutOfBoundsException(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("child index is invalid") ), *this );
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleBrowseBoxTableCell.cxx b/accessibility/source/extended/AccessibleBrowseBoxTableCell.cxx
new file mode 100644
index 000000000000..6cdd7e22c4ab
--- /dev/null
+++ b/accessibility/source/extended/AccessibleBrowseBoxTableCell.cxx
@@ -0,0 +1,357 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/AccessibleBrowseBoxTableCell.hxx"
+#include <svtools/accessibletableprovider.hxx>
+#include "accessibility/extended/AccessibleBrowseBox.hxx"
+#include <tools/gen.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+
+namespace accessibility
+{
+ namespace
+ {
+ void checkIndex_Impl( sal_Int32 _nIndex, const ::rtl::OUString& _sText ) throw (::com::sun::star::lang::IndexOutOfBoundsException)
+ {
+ if ( _nIndex >= _sText.getLength() )
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+
+ sal_Int32 getIndex_Impl( sal_Int32 _nRow, sal_uInt16 _nColumn, sal_uInt16 _nColumnCount )
+ {
+ return _nRow * _nColumnCount + _nColumn;
+ }
+ }
+ using namespace ::com::sun::star::lang;
+ using namespace utl;
+ using namespace comphelper;
+ using ::rtl::OUString;
+ using ::accessibility::AccessibleBrowseBox;
+ using namespace ::com::sun::star::uno;
+ using ::com::sun::star::accessibility::XAccessible;
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::svt;
+
+
+ // implementation of a table cell
+ ::rtl::OUString AccessibleBrowseBoxTableCell::implGetText()
+ {
+ ensureIsAlive();
+ return mpBrowseBox->GetAccessibleCellText( getRowPos(), static_cast< USHORT >( getColumnPos() ) );
+ }
+
+ ::com::sun::star::lang::Locale AccessibleBrowseBoxTableCell::implGetLocale()
+ {
+ ensureIsAlive();
+ return mpBrowseBox->GetAccessible()->getAccessibleContext()->getLocale();
+ }
+
+ void AccessibleBrowseBoxTableCell::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+ {
+ nStartIndex = 0;
+ nEndIndex = 0;
+ }
+
+ AccessibleBrowseBoxTableCell::AccessibleBrowseBoxTableCell(const Reference<XAccessible >& _rxParent,
+ IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos,
+ sal_Int32 _nOffset )
+ :AccessibleBrowseBoxCell( _rxParent, _rBrowseBox, _xFocusWindow, _nRowPos, _nColPos )
+ {
+ m_nOffset = ( OFFSET_DEFAULT == _nOffset ) ? (sal_Int32)BBINDEX_FIRSTCONTROL : _nOffset;
+ sal_Int32 nIndex = getIndex_Impl( _nRowPos, _nColPos, _rBrowseBox.GetColumnCount() );
+ setAccessibleName( _rBrowseBox.GetAccessibleObjectName( BBTYPE_TABLECELL, nIndex ) );
+ setAccessibleDescription( _rBrowseBox.GetAccessibleObjectDescription( BBTYPE_TABLECELL, nIndex ) );
+ // Need to register as event listener
+ Reference< XComponent > xComponent(_rxParent, UNO_QUERY);
+ if( xComponent.is() )
+ xComponent->addEventListener(static_cast< XEventListener *> (this));
+ }
+
+ void AccessibleBrowseBoxTableCell::nameChanged( const ::rtl::OUString& rNewName, const ::rtl::OUString& rOldName )
+ {
+ implSetName( rNewName );
+ Any aOldValue, aNewValue;
+ aOldValue <<= rOldName;
+ aNewValue <<= rNewName;
+ commitEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue );
+ }
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL AccessibleBrowseBoxTableCell::queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ Any aRet = AccessibleBrowseBoxCell::queryInterface(rType);
+ if ( !aRet.hasValue() )
+ aRet = AccessibleTextHelper_BASE::queryInterface(rType);
+ return aRet;
+ }
+
+ /** Aquires the object (calls acquire() on base class). */
+ void SAL_CALL AccessibleBrowseBoxTableCell::acquire() throw ()
+ {
+ AccessibleBrowseBoxCell::acquire();
+ }
+
+ /** Releases the object (calls release() on base class). */
+ void SAL_CALL AccessibleBrowseBoxTableCell::release() throw ()
+ {
+ AccessibleBrowseBoxCell::release();
+ }
+
+ ::com::sun::star::awt::Rectangle SAL_CALL AccessibleBrowseBoxTableCell::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+ if ( !implIsValidIndex( nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ ::com::sun::star::awt::Rectangle aRect;
+
+ if ( mpBrowseBox )
+ {
+ aRect = AWTRectangle( mpBrowseBox->GetFieldCharacterBounds( getRowPos(), getColumnPos(), nIndex ) );
+ }
+
+ return aRect;
+ }
+
+ sal_Int32 SAL_CALL AccessibleBrowseBoxTableCell::getIndexAtPoint( const ::com::sun::star::awt::Point& _aPoint ) throw (RuntimeException)
+ {
+ //! TODO CTL bidi
+ // DBG_ASSERT(0,"Need to be done by base class!");
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ return mpBrowseBox->GetFieldIndexAtPoint( getRowPos(), getColumnPos(), VCLPoint( _aPoint ) );
+ }
+
+ /** @return
+ The name of this class.
+ */
+ ::rtl::OUString SAL_CALL AccessibleBrowseBoxTableCell::getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.AccessibleBrowseBoxTableCell" ) );
+ }
+
+ /** @return The count of visible children. */
+ sal_Int32 SAL_CALL AccessibleBrowseBoxTableCell::getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ return 0;
+ }
+
+ /** @return The XAccessible interface of the specified child. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ AccessibleBrowseBoxTableCell::getAccessibleChild( sal_Int32 )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException )
+ {
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+ */
+ ::utl::AccessibleStateSetHelper* AccessibleBrowseBoxTableCell::implCreateStateSetHelper()
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ::utl::AccessibleStateSetHelper* pStateSetHelper = new ::utl::AccessibleStateSetHelper;
+
+ if( isAlive() )
+ {
+ // SHOWING done with mxParent
+ if( implIsShowing() )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+
+ mpBrowseBox->FillAccessibleStateSetForCell( *pStateSetHelper, getRowPos(), static_cast< sal_uInt16 >( getColumnPos() ) );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return pStateSetHelper;
+ }
+
+
+ // XAccessible ------------------------------------------------------------
+
+ /** @return The XAccessibleContext interface of this object. */
+ Reference< XAccessibleContext > SAL_CALL AccessibleBrowseBoxTableCell::getAccessibleContext() throw ( RuntimeException )
+ {
+ ensureIsAlive();
+ return this;
+ }
+
+ // XAccessibleContext -----------------------------------------------------
+
+ sal_Int32 SAL_CALL AccessibleBrowseBoxTableCell::getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ return /*BBINDEX_FIRSTCONTROL*/ m_nOffset + ( getRowPos() * mpBrowseBox->GetColumnCount() ) + getColumnPos();
+ }
+
+ sal_Int32 SAL_CALL AccessibleBrowseBoxTableCell::getCaretPosition( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ return -1;
+ }
+ sal_Bool SAL_CALL AccessibleBrowseBoxTableCell::setCaretPosition ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ sal_Unicode SAL_CALL AccessibleBrowseBoxTableCell::getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getCharacter( nIndex );
+ }
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL AccessibleBrowseBoxTableCell::getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >();
+ }
+ sal_Int32 SAL_CALL AccessibleBrowseBoxTableCell::getCharacterCount( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getCharacterCount( );
+ }
+
+ ::rtl::OUString SAL_CALL AccessibleBrowseBoxTableCell::getSelectedText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getSelectedText( );
+ }
+ sal_Int32 SAL_CALL AccessibleBrowseBoxTableCell::getSelectionStart( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getSelectionStart( );
+ }
+ sal_Int32 SAL_CALL AccessibleBrowseBoxTableCell::getSelectionEnd( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getSelectionEnd( );
+ }
+ sal_Bool SAL_CALL AccessibleBrowseBoxTableCell::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ ::rtl::OUString SAL_CALL AccessibleBrowseBoxTableCell::getText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getText( );
+ }
+ ::rtl::OUString SAL_CALL AccessibleBrowseBoxTableCell::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex );
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleBrowseBoxTableCell::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextAtIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleBrowseBoxTableCell::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextBeforeIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleBrowseBoxTableCell::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextBehindIndex( nIndex ,aTextType);
+ }
+ sal_Bool SAL_CALL AccessibleBrowseBoxTableCell::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ::rtl::OUString sText = implGetText();
+ checkIndex_Impl( nStartIndex, sText );
+ checkIndex_Impl( nEndIndex, sText );
+
+ //!!! don't know how to put a string into the clipboard
+ return sal_False;
+ }
+ void AccessibleBrowseBoxTableCell::disposing( const EventObject& _rSource ) throw (RuntimeException)
+ {
+ if ( _rSource.Source == mxParent )
+ {
+ dispose();
+ }
+ }
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx
new file mode 100644
index 000000000000..f48415e518d4
--- /dev/null
+++ b/accessibility/source/extended/AccessibleGridControl.cxx
@@ -0,0 +1,375 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/AccessibleGridControl.hxx"
+#include "accessibility/extended/AccessibleGridControlTable.hxx"
+#include "accessibility/extended/AccessibleGridControlHeader.hxx"
+#include <svtools/accessibletable.hxx>
+#include <comphelper/types.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+
+// ============================================================================
+
+namespace accessibility
+{
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+using namespace ::svt::table;
+
+// ============================================================================
+class AccessibleGridControl_Impl
+{
+public:
+ /// the XAccessible which created the AccessibleGridControl
+ WeakReference< XAccessible > m_aCreator;
+
+ /** The data table child. */
+ Reference<
+ ::com::sun::star::accessibility::XAccessible > m_xTable;
+ AccessibleGridControlTable* m_pTable;
+
+ /** The header bar for rows. */
+ Reference<
+ ::com::sun::star::accessibility::XAccessible > m_xRowHeaderBar;
+ AccessibleGridControlHeader* m_pRowHeaderBar;
+
+ /** The header bar for columns (first row of the table). */
+ Reference<
+ ::com::sun::star::accessibility::XAccessible > m_xColumnHeaderBar;
+ AccessibleGridControlHeader* m_pColumnHeaderBar;
+};
+
+DBG_NAME( AccessibleGridControl )
+
+AccessibleGridControl::AccessibleGridControl(
+ const Reference< XAccessible >& _rxParent, const Reference< XAccessible >& _rxCreator,
+ IAccessibleTable& _rTable )
+ : AccessibleGridControlBase( _rxParent, _rTable, TCTYPE_GRIDCONTROL )
+{
+ m_pImpl.reset( new AccessibleGridControl_Impl() );
+ m_pImpl->m_aCreator = _rxCreator;
+}
+
+// -----------------------------------------------------------------------------
+AccessibleGridControl::~AccessibleGridControl()
+{
+}
+// -----------------------------------------------------------------------------
+
+void SAL_CALL AccessibleGridControl::disposing()
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ m_pImpl->m_pTable = NULL;
+ m_pImpl->m_pColumnHeaderBar = NULL;
+ m_pImpl->m_pRowHeaderBar = NULL;
+ m_pImpl->m_aCreator = Reference< XAccessible >();
+
+ Reference< XAccessible > xTable = m_pImpl->m_xTable;
+
+ Reference< XComponent > xComp( m_pImpl->m_xTable, UNO_QUERY );
+ if ( xComp.is() )
+ {
+ xComp->dispose();
+ }
+
+ AccessibleGridControlBase::disposing();
+}
+// -----------------------------------------------------------------------------
+
+// XAccessibleContext ---------------------------------------------------------
+
+sal_Int32 SAL_CALL AccessibleGridControl::getAccessibleChildCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return m_aTable.GetAccessibleControlCount();
+}
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ if (nChildIndex<0 || nChildIndex>=getAccessibleChildCount())
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ if (isAlive())
+ {
+ if(nChildIndex == 0 && m_aTable.HasColHeader())
+ {
+ if(!m_pImpl->m_xColumnHeaderBar.is())
+ {
+ AccessibleGridControlHeader* pColHeaderBar = new AccessibleGridControlHeader(m_pImpl->m_aCreator, m_aTable, svt::table::TCTYPE_COLUMNHEADERBAR);
+ m_pImpl->m_xColumnHeaderBar = pColHeaderBar;
+ }
+ xChild = m_pImpl->m_xColumnHeaderBar;
+ }
+ else if(m_aTable.HasRowHeader() && (nChildIndex == 1 || nChildIndex == 0))
+ {
+ if(!m_pImpl->m_xRowHeaderBar.is())
+ {
+ AccessibleGridControlHeader* pRowHeaderBar = new AccessibleGridControlHeader(m_pImpl->m_aCreator, m_aTable, svt::table::TCTYPE_ROWHEADERBAR);
+ m_pImpl->m_xRowHeaderBar = pRowHeaderBar;
+ }
+ xChild = m_pImpl->m_xRowHeaderBar;
+ }
+ else
+ {
+ AccessibleGridControlTable* pTable = new AccessibleGridControlTable(m_pImpl->m_aCreator, m_aTable, svt::table::TCTYPE_TABLE);
+ m_pImpl->m_xTable = pTable;
+ xChild = m_pImpl->m_xTable;
+ }
+ }
+ return xChild;
+}
+// -----------------------------------------------------------------------------
+
+sal_Int16 SAL_CALL AccessibleGridControl::getAccessibleRole()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return AccessibleRole::PANEL;
+}
+// -----------------------------------------------------------------------------
+
+// XAccessibleComponent -------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleGridControl::getAccessibleAtPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 nIndex = 0;
+ if( m_aTable.ConvertPointToControlIndex( nIndex, VCLPoint( rPoint ) ) )
+ xChild = m_aTable.CreateAccessibleControl( nIndex );
+ else
+ {
+ // try whether point is in one of the fixed children
+ // (table, header bars, corner control)
+ Point aPoint( VCLPoint( rPoint ) );
+ for( nIndex = 0; (nIndex < 3) && !xChild.is(); ++nIndex )
+ {
+ Reference< XAccessible > xCurrChild( implGetFixedChild( nIndex ) );
+ Reference< XAccessibleComponent >
+ xCurrChildComp( xCurrChild, uno::UNO_QUERY );
+
+ if( xCurrChildComp.is() &&
+ VCLRectangle( xCurrChildComp->getBounds() ).IsInside( aPoint ) )
+ xChild = xCurrChild;
+ }
+ }
+ return xChild;
+}
+// -----------------------------------------------------------------------------
+
+void SAL_CALL AccessibleGridControl::grabFocus()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ m_aTable.GrabFocus();
+}
+// -----------------------------------------------------------------------------
+
+Any SAL_CALL AccessibleGridControl::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return Any();
+}
+// -----------------------------------------------------------------------------
+
+// XServiceInfo ---------------------------------------------------------------
+
+OUString SAL_CALL AccessibleGridControl::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.accessibility.AccessibleGridControl" ) );
+}
+// -----------------------------------------------------------------------------
+
+// internal virtual methods ---------------------------------------------------
+
+Rectangle AccessibleGridControl::implGetBoundingBox()
+{
+ Window* pParent = m_aTable.GetAccessibleParentWindow();
+ DBG_ASSERT( pParent, "implGetBoundingBox - missing parent window" );
+ return m_aTable.GetWindowExtentsRelative( pParent );
+}
+// -----------------------------------------------------------------------------
+
+Rectangle AccessibleGridControl::implGetBoundingBoxOnScreen()
+{
+ return m_aTable.GetWindowExtentsRelative( NULL );
+}
+// internal helper methods ----------------------------------------------------
+
+Reference< XAccessible > AccessibleGridControl::implGetTable()
+{
+ if( !m_pImpl->m_xTable.is() )
+ {
+ m_pImpl->m_pTable = createAccessibleTable();
+ m_pImpl->m_xTable = m_pImpl->m_pTable;
+ }
+ return m_pImpl->m_xTable;
+}
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible >
+AccessibleGridControl::implGetHeaderBar( AccessibleTableControlObjType eObjType )
+{
+ Reference< XAccessible > xRet;
+ Reference< XAccessible >* pxMember = NULL;
+
+ if( eObjType == TCTYPE_ROWHEADERBAR )
+ pxMember = &m_pImpl->m_xRowHeaderBar;
+ else if( eObjType == TCTYPE_COLUMNHEADERBAR )
+ pxMember = &m_pImpl->m_xColumnHeaderBar;
+
+ if( pxMember )
+ {
+ if( !pxMember->is() )
+ {
+ AccessibleGridControlHeader* pHeaderBar = new AccessibleGridControlHeader(
+ (Reference< XAccessible >)m_pImpl->m_aCreator, m_aTable, eObjType );
+
+ if ( TCTYPE_COLUMNHEADERBAR == eObjType)
+ m_pImpl->m_pColumnHeaderBar = pHeaderBar;
+ else
+ m_pImpl->m_pRowHeaderBar = pHeaderBar;
+
+ *pxMember = pHeaderBar;
+ }
+ xRet = *pxMember;
+ }
+ return xRet;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible >
+AccessibleGridControl::implGetFixedChild( sal_Int32 nChildIndex )
+{
+ Reference< XAccessible > xRet;
+ switch( nChildIndex )
+ {
+ case TCINDEX_COLUMNHEADERBAR:
+ xRet = implGetHeaderBar( TCTYPE_COLUMNHEADERBAR );
+ break;
+ case TCINDEX_ROWHEADERBAR:
+ xRet = implGetHeaderBar( TCTYPE_ROWHEADERBAR );
+ break;
+ case TCINDEX_TABLE:
+ xRet = implGetTable();
+ break;
+ }
+ return xRet;
+}
+// -----------------------------------------------------------------------------
+AccessibleGridControlTable* AccessibleGridControl::createAccessibleTable()
+{
+ Reference< XAccessible > xCreator = (Reference< XAccessible >)m_pImpl->m_aCreator;
+ DBG_ASSERT( xCreator.is(), "accessibility/extended/AccessibleGirdControl::createAccessibleTable: my creator died - how this?" );
+ return new AccessibleGridControlTable( xCreator, m_aTable, TCTYPE_TABLE );
+}
+// ============================================================================
+// = AccessibleGridControlAccess
+// ============================================================================
+DBG_NAME( AccessibleGridControlAccess )
+// -----------------------------------------------------------------------------
+AccessibleGridControlAccess::AccessibleGridControlAccess( const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable )
+ :m_xParent( _rxParent )
+ ,m_rTable( _rTable )
+ ,m_pContext( NULL )
+{
+}
+
+// -----------------------------------------------------------------------------
+AccessibleGridControlAccess::~AccessibleGridControlAccess()
+{
+}
+
+// -----------------------------------------------------------------------------
+void AccessibleGridControlAccess::dispose()
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ m_pContext = NULL;
+ ::comphelper::disposeComponent( m_xContext );
+}
+
+// -----------------------------------------------------------------------------
+Reference< XAccessibleContext > SAL_CALL AccessibleGridControlAccess::getAccessibleContext() throw ( RuntimeException )
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ DBG_ASSERT( ( m_pContext && m_xContext.is() ) || ( !m_pContext && !m_xContext.is() ),
+ "accessibility/extended/AccessibleGridControlAccess::getAccessibleContext: inconsistency!" );
+
+ // if the context died meanwhile (we're no listener, so it won't tell us explicitily when this happens),
+ // then reset an re-create.
+ if ( m_pContext && !m_pContext->isAlive() )
+ m_xContext = m_pContext = NULL;
+
+ if ( !m_xContext.is() )
+ m_xContext = m_pContext = new AccessibleGridControl( m_xParent, this, m_rTable );
+
+ return m_xContext;
+}
+
+// -----------------------------------------------------------------------------
+bool AccessibleGridControlAccess::isContextAlive() const
+{
+ return ( NULL != m_pContext ) && m_pContext->isAlive();
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleGridControlBase.cxx b/accessibility/source/extended/AccessibleGridControlBase.cxx
new file mode 100644
index 000000000000..bf1fb2cca520
--- /dev/null
+++ b/accessibility/source/extended/AccessibleGridControlBase.cxx
@@ -0,0 +1,537 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/AccessibleGridControlBase.hxx"
+#include <svtools/accessibletable.hxx>
+#include <rtl/uuid.h>
+//
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblerelationsethelper.hxx>
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+using namespace ::svt;
+using namespace ::svt::table;
+
+
+// ============================================================================
+
+namespace accessibility {
+
+using namespace com::sun::star::accessibility::AccessibleStateType;
+// ============================================================================
+
+DBG_NAME( AccessibleGridControlBase )
+
+AccessibleGridControlBase::AccessibleGridControlBase(
+ const Reference< XAccessible >& rxParent,
+ svt::table::IAccessibleTable& rTable,
+ AccessibleTableControlObjType eObjType ) :
+ AccessibleGridControlImplHelper( m_aMutex ),
+ m_xParent( rxParent ),
+ m_aTable( rTable),
+ m_eObjType( eObjType ),
+ m_aName( rTable.GetAccessibleObjectName( eObjType, 0, 0 ) ),
+ m_aDescription( rTable.GetAccessibleObjectDescription( eObjType ) ),
+ m_aClientId(0)
+{
+}
+
+AccessibleGridControlBase::~AccessibleGridControlBase()
+{
+ if( isAlive() )
+ {
+ // increment ref count to prevent double call of Dtor
+ osl_incrementInterlockedCount( &m_refCount );
+ dispose();
+ }
+}
+
+void SAL_CALL AccessibleGridControlBase::disposing()
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ m_xParent = NULL;
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL AccessibleGridControlBase::getAccessibleParent()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return m_xParent;
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlBase::getAccessibleIndexInParent()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ // -1 for child not found/no parent (according to specification)
+ sal_Int32 nRet = -1;
+
+ Reference< uno::XInterface > xMeMyselfAndI( static_cast< XAccessibleContext* >( this ), uno::UNO_QUERY );
+
+ // iterate over parent's children and search for this object
+ if( m_xParent.is() )
+ {
+ Reference< XAccessibleContext >
+ xParentContext( m_xParent->getAccessibleContext() );
+ if( xParentContext.is() )
+ {
+ Reference< uno::XInterface > xChild;
+
+ sal_Int32 nChildCount = xParentContext->getAccessibleChildCount();
+ for( sal_Int32 nChild = 0; nChild < nChildCount; ++nChild )
+ {
+ xChild = xChild.query( xParentContext->getAccessibleChild( nChild ) );
+ if ( xMeMyselfAndI.get() == xChild.get() )
+ {
+ nRet = nChild;
+ break;
+ }
+ }
+ }
+ }
+ return nRet;
+}
+
+OUString SAL_CALL AccessibleGridControlBase::getAccessibleDescription()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return m_aDescription;
+}
+
+OUString SAL_CALL AccessibleGridControlBase::getAccessibleName()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return m_aName;
+}
+
+Reference< XAccessibleRelationSet > SAL_CALL
+AccessibleGridControlBase::getAccessibleRelationSet()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ // GridControl does not have relations.
+ return new utl::AccessibleRelationSetHelper;
+}
+
+Reference< XAccessibleStateSet > SAL_CALL
+AccessibleGridControlBase::getAccessibleStateSet()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ // don't check whether alive -> StateSet may contain DEFUNC
+ return implCreateStateSetHelper();
+}
+
+lang::Locale SAL_CALL AccessibleGridControlBase::getLocale()
+ throw ( IllegalAccessibleComponentStateException, uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ if( m_xParent.is() )
+ {
+ Reference< XAccessibleContext >
+ xParentContext( m_xParent->getAccessibleContext() );
+ if( xParentContext.is() )
+ return xParentContext->getLocale();
+ }
+ throw IllegalAccessibleComponentStateException();
+}
+
+// XAccessibleComponent -------------------------------------------------------
+
+sal_Bool SAL_CALL AccessibleGridControlBase::containsPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ return Rectangle( Point(), getBoundingBox().GetSize() ).IsInside( VCLPoint( rPoint ) );
+}
+
+awt::Rectangle SAL_CALL AccessibleGridControlBase::getBounds()
+ throw ( uno::RuntimeException )
+{
+ return AWTRectangle( getBoundingBox() );
+}
+
+awt::Point SAL_CALL AccessibleGridControlBase::getLocation()
+ throw ( uno::RuntimeException )
+{
+ return AWTPoint( getBoundingBox().TopLeft() );
+}
+
+awt::Point SAL_CALL AccessibleGridControlBase::getLocationOnScreen()
+ throw ( uno::RuntimeException )
+{
+ return AWTPoint( getBoundingBoxOnScreen().TopLeft() );
+}
+
+awt::Size SAL_CALL AccessibleGridControlBase::getSize()
+ throw ( uno::RuntimeException )
+{
+ return AWTSize( getBoundingBox().GetSize() );
+}
+
+sal_Bool SAL_CALL AccessibleGridControlBase::isShowing()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implIsShowing();
+}
+
+sal_Bool SAL_CALL AccessibleGridControlBase::isVisible()
+ throw ( uno::RuntimeException )
+{
+ Reference< XAccessibleStateSet > xStateSet = getAccessibleStateSet();
+ return xStateSet.is() ?
+ xStateSet->contains( AccessibleStateType::VISIBLE ) : sal_False;
+}
+
+sal_Bool SAL_CALL AccessibleGridControlBase::isFocusTraversable()
+ throw ( uno::RuntimeException )
+{
+ Reference< XAccessibleStateSet > xStateSet = getAccessibleStateSet();
+ return xStateSet.is() ?
+ xStateSet->contains( AccessibleStateType::FOCUSABLE ) : sal_False;
+}
+// XAccessibleEventBroadcaster ------------------------------------------------
+
+void SAL_CALL AccessibleGridControlBase::addEventListener(
+ const Reference< XAccessibleEventListener>& _rxListener )
+ throw ( uno::RuntimeException )
+{
+ if ( _rxListener.is() )
+ {
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ if ( !getClientId( ) )
+ setClientId( AccessibleEventNotifier::registerClient( ) );
+
+ AccessibleEventNotifier::addEventListener( getClientId( ), _rxListener );
+ }
+}
+
+void SAL_CALL AccessibleGridControlBase::removeEventListener(
+ const Reference< XAccessibleEventListener>& _rxListener )
+ throw ( uno::RuntimeException )
+{
+ if( _rxListener.is() && getClientId( ) )
+ {
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ sal_Int32 nListenerCount = AccessibleEventNotifier::removeEventListener( getClientId( ), _rxListener );
+ if ( !nListenerCount )
+ {
+ // no listeners anymore
+ // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+ // and at least to us not firing any events anymore, in case somebody calls
+ // NotifyAccessibleEvent, again
+ AccessibleEventNotifier::TClientId nId( getClientId( ) );
+ setClientId( 0 );
+ AccessibleEventNotifier::revokeClient( nId );
+ }
+ }
+}
+
+// XTypeProvider --------------------------------------------------------------
+
+Sequence< sal_Int8 > SAL_CALL AccessibleGridControlBase::getImplementationId()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslGlobalMutex() );
+ static Sequence< sal_Int8 > aId;
+ implCreateUuid( aId );
+ return aId;
+}
+
+// XServiceInfo ---------------------------------------------------------------
+
+sal_Bool SAL_CALL AccessibleGridControlBase::supportsService(
+ const OUString& rServiceName )
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ Sequence< OUString > aSupportedServices( getSupportedServiceNames() );
+ const OUString* pArrBegin = aSupportedServices.getConstArray();
+ const OUString* pArrEnd = pArrBegin + aSupportedServices.getLength();
+ const OUString* pString = pArrBegin;
+
+ for( ; ( pString != pArrEnd ) && ( rServiceName != *pString ); ++pString )
+ ;
+ return pString != pArrEnd;
+}
+
+Sequence< OUString > SAL_CALL AccessibleGridControlBase::getSupportedServiceNames()
+ throw ( uno::RuntimeException )
+{
+ const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.accessibility.AccessibleContext" ) );
+ return Sequence< OUString >( &aServiceName, 1 );
+}
+// internal virtual methods ---------------------------------------------------
+
+sal_Bool AccessibleGridControlBase::implIsShowing()
+{
+ sal_Bool bShowing = sal_False;
+ if( m_xParent.is() )
+ {
+ Reference< XAccessibleComponent >
+ xParentComp( m_xParent->getAccessibleContext(), uno::UNO_QUERY );
+ if( xParentComp.is() )
+ bShowing = implGetBoundingBox().IsOver(
+ VCLRectangle( xParentComp->getBounds() ) );
+ }
+ return bShowing;
+}
+
+::utl::AccessibleStateSetHelper* AccessibleGridControlBase::implCreateStateSetHelper()
+{
+ ::utl::AccessibleStateSetHelper*
+ pStateSetHelper = new ::utl::AccessibleStateSetHelper;
+
+ if( isAlive() )
+ {
+ // SHOWING done with m_xParent
+ if( implIsShowing() )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+ // GridControl fills StateSet with states depending on object type
+ m_aTable.FillAccessibleStateSet( *pStateSetHelper, getType() );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ return pStateSetHelper;
+}
+
+// internal helper methods ----------------------------------------------------
+
+sal_Bool AccessibleGridControlBase::isAlive() const
+{
+ return !rBHelper.bDisposed && !rBHelper.bInDispose && &m_aTable;
+}
+
+void AccessibleGridControlBase::ensureIsAlive() const
+ throw ( lang::DisposedException )
+{
+ if( !isAlive() )
+ throw lang::DisposedException();
+}
+
+Rectangle AccessibleGridControlBase::getBoundingBox()
+ throw ( lang::DisposedException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ Rectangle aRect = implGetBoundingBox();
+ if ( 0 == aRect.Left() && 0 == aRect.Top() && 0 == aRect.Right() && 0 == aRect.Bottom() )
+ {
+ DBG_ERRORFILE( "rectangle doesn't exist" );
+ }
+ return aRect;
+}
+
+Rectangle AccessibleGridControlBase::getBoundingBoxOnScreen()
+ throw ( lang::DisposedException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ Rectangle aRect = implGetBoundingBoxOnScreen();
+ if ( 0 == aRect.Left() && 0 == aRect.Top() && 0 == aRect.Right() && 0 == aRect.Bottom() )
+ {
+ DBG_ERRORFILE( "rectangle doesn't exist" );
+ }
+ return aRect;
+}
+
+void AccessibleGridControlBase::commitEvent(
+ sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue )
+{
+ ::osl::ClearableMutexGuard aGuard( getOslMutex() );
+ if ( !getClientId( ) )
+ // if we don't have a client id for the notifier, then we don't have listeners, then
+ // we don't need to notify anything
+ return;
+
+ // build an event object
+ AccessibleEventObject aEvent;
+ aEvent.Source = *this;
+ aEvent.EventId = _nEventId;
+ aEvent.OldValue = _rOldValue;
+ aEvent.NewValue = _rNewValue;
+
+ // let the notifier handle this event
+
+ AccessibleEventNotifier::addEvent( getClientId( ), aEvent );
+}
+// -----------------------------------------------------------------------------
+
+void AccessibleGridControlBase::implCreateUuid( Sequence< sal_Int8 >& rId )
+{
+ if( !rId.hasElements() )
+ {
+ rId.realloc( 16 );
+ rtl_createUuid( reinterpret_cast< sal_uInt8* >( rId.getArray() ), 0, sal_True );
+ }
+}
+// -----------------------------------------------------------------------------
+sal_Int16 SAL_CALL AccessibleGridControlBase::getAccessibleRole()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ sal_Int16 nRole = AccessibleRole::UNKNOWN;
+ switch ( m_eObjType )
+ {
+ case TCTYPE_ROWHEADERCELL:
+ nRole = AccessibleRole::ROW_HEADER;
+ break;
+ case TCTYPE_COLUMNHEADERCELL:
+ nRole = AccessibleRole::COLUMN_HEADER;
+ break;
+ case TCTYPE_COLUMNHEADERBAR:
+ case TCTYPE_ROWHEADERBAR:
+ case TCTYPE_TABLE:
+ nRole = AccessibleRole::TABLE;
+ break;
+ case TCTYPE_TABLECELL:
+ nRole = AccessibleRole::TABLE_CELL;
+ break;
+ case TCTYPE_GRIDCONTROL:
+ nRole = AccessibleRole::PANEL;
+ break;
+ }
+ return nRole;
+}
+// -----------------------------------------------------------------------------
+Any SAL_CALL AccessibleGridControlBase::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ return Any();
+}
+// -----------------------------------------------------------------------------
+Reference<XAccessible > SAL_CALL AccessibleGridControlBase::getAccessibleAtPoint( const ::com::sun::star::awt::Point& )
+ throw ( uno::RuntimeException )
+{
+ return NULL;
+}
+//// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL AccessibleGridControlBase::getForeground( ) throw (::com::sun::star::uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ sal_Int32 nColor = 0;
+ Window* pInst = m_aTable.GetWindowInstance();
+ if ( pInst )
+ {
+ if ( pInst->IsControlForeground() )
+ nColor = pInst->GetControlForeground().GetColor();
+ else
+ {
+ Font aFont;
+ if ( pInst->IsControlFont() )
+ aFont = pInst->GetControlFont();
+ else
+ aFont = pInst->GetFont();
+ nColor = aFont.GetColor().GetColor();
+ }
+ }
+ return nColor;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL AccessibleGridControlBase::getBackground( ) throw (::com::sun::star::uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ sal_Int32 nColor = 0;
+ Window* pInst = m_aTable.GetWindowInstance();
+ if ( pInst )
+ {
+ if ( pInst->IsControlBackground() )
+ nColor = pInst->GetControlBackground().GetColor();
+ else
+ nColor = pInst->GetBackground().GetColor().GetColor();
+ }
+ return nColor;
+}
+
+//// ============================================================================
+GridControlAccessibleElement::GridControlAccessibleElement( const Reference< XAccessible >& rxParent,
+ IAccessibleTable& rTable,
+ AccessibleTableControlObjType eObjType )
+ :AccessibleGridControlBase( rxParent, rTable, eObjType )
+{
+}
+
+// XInterface -----------------------------------------------------------------
+IMPLEMENT_FORWARD_XINTERFACE2( GridControlAccessibleElement, AccessibleGridControlBase, GridControlAccessibleElement_Base)
+
+// XTypeProvider --------------------------------------------------------------
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( GridControlAccessibleElement, AccessibleGridControlBase, GridControlAccessibleElement_Base )
+
+// XAccessible ----------------------------------------------------------------
+
+Reference< XAccessibleContext > SAL_CALL GridControlAccessibleElement::getAccessibleContext() throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return this;
+}
+// ----------------------------------------------------------------------------
+GridControlAccessibleElement::~GridControlAccessibleElement( )
+{
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleGridControlHeader.cxx b/accessibility/source/extended/AccessibleGridControlHeader.cxx
new file mode 100644
index 000000000000..464d5842163d
--- /dev/null
+++ b/accessibility/source/extended/AccessibleGridControlHeader.cxx
@@ -0,0 +1,286 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+
+#include "accessibility/extended/AccessibleGridControlHeader.hxx"
+#include "accessibility/extended/AccessibleGridControlHeaderCell.hxx"
+#include "accessibility/extended/AccessibleGridControlTableCell.hxx"
+#include <svtools/accessibletable.hxx>
+
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+using namespace ::svt::table;
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+DBG_NAME( AccessibleGridControlHeader )
+
+AccessibleGridControlHeader::AccessibleGridControlHeader(
+ const Reference< XAccessible >& rxParent,
+ ::svt::table::IAccessibleTable& rTable,
+ ::svt::table::AccessibleTableControlObjType eObjType):
+ AccessibleGridControlTableBase( rxParent, rTable, eObjType )
+{
+ DBG_ASSERT( isRowBar() || isColumnBar(),
+ "accessibility/extended/AccessibleGridControlHeaderBar - invalid object type" );
+}
+
+AccessibleGridControlHeader::~AccessibleGridControlHeader()
+{
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleGridControlHeader::getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ if (nChildIndex<0 || nChildIndex>=getAccessibleChildCount())
+ throw IndexOutOfBoundsException();
+ ensureIsAlive();
+ Reference< XAccessible > xChild;
+ if(m_eObjType == svt::table::TCTYPE_COLUMNHEADERBAR)
+ {
+ AccessibleGridControlHeaderCell* pColHeaderCell = new AccessibleGridControlHeaderCell(nChildIndex, this, m_aTable, svt::table::TCTYPE_COLUMNHEADERCELL);
+ xChild = pColHeaderCell;
+ }
+ else if(m_eObjType == svt::table::TCTYPE_ROWHEADERBAR)
+ {
+ AccessibleGridControlHeaderCell* pRowHeaderCell = new AccessibleGridControlHeaderCell(nChildIndex, this, m_aTable, svt::table::TCTYPE_ROWHEADERCELL);
+ xChild = pRowHeaderCell;
+ }
+ return xChild;
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlHeader::getAccessibleIndexInParent()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ if(m_eObjType == svt::table::TCTYPE_ROWHEADERBAR && m_aTable.HasColHeader())
+ return 1;
+ else
+ return 0;
+}
+
+// XAccessibleComponent -------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleGridControlHeader::getAccessibleAtPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ sal_Int32 nRow = 0;
+ sal_Int32 nColumnPos = 0;
+ sal_Bool bConverted = isRowBar() ?
+ m_aTable.ConvertPointToCellAddress( nRow, nColumnPos, VCLPoint( rPoint ) ) :
+ m_aTable.ConvertPointToCellAddress( nRow, nColumnPos, VCLPoint( rPoint ) );
+
+ return bConverted ? implGetChild( nRow, nColumnPos ) : Reference< XAccessible >();
+}
+
+void SAL_CALL AccessibleGridControlHeader::grabFocus()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ // focus on header not supported
+}
+
+Any SAL_CALL AccessibleGridControlHeader::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return Any(); // no special key bindings for header
+}
+
+// XAccessibleTable -----------------------------------------------------------
+
+OUString SAL_CALL AccessibleGridControlHeader::getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidRow( nRow );
+ return OUString(); // no headers in headers
+}
+
+OUString SAL_CALL AccessibleGridControlHeader::getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidColumn( nColumn );
+ return OUString(); // no headers in headers
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleGridControlHeader::getAccessibleRowHeaders()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // no headers in headers
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleGridControlHeader::getAccessibleColumnHeaders()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // no headers in headers
+}
+//not selectable
+Sequence< sal_Int32 > SAL_CALL AccessibleGridControlHeader::getSelectedAccessibleRows()
+ throw ( uno::RuntimeException )
+{
+ Sequence< sal_Int32 > aSelSeq(0);
+ return aSelSeq;
+}
+//columns aren't selectable
+Sequence< sal_Int32 > SAL_CALL AccessibleGridControlHeader::getSelectedAccessibleColumns()
+ throw ( uno::RuntimeException )
+{
+ Sequence< sal_Int32 > aSelSeq(0);
+ return aSelSeq;
+}
+//row headers not selectable
+sal_Bool SAL_CALL AccessibleGridControlHeader::isAccessibleRowSelected( sal_Int32 /*nRow*/ )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ return sal_False;
+}
+//columns aren't selectable
+sal_Bool SAL_CALL AccessibleGridControlHeader::isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ (void)nColumn;
+ return sal_False;
+}
+//not implemented
+Reference< XAccessible > SAL_CALL AccessibleGridControlHeader::getAccessibleCellAt(
+ sal_Int32 /*nRow*/, sal_Int32 /*nColumn*/ )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ return NULL;
+}
+// not selectable
+sal_Bool SAL_CALL AccessibleGridControlHeader::isAccessibleSelected(
+ sal_Int32 /*nRow*/, sal_Int32 /*nColumn */)
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ return sal_False;
+}
+
+// XServiceInfo ---------------------------------------------------------------
+
+OUString SAL_CALL AccessibleGridControlHeader::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.accessibility.AccessibleGridControlHeader" ) );
+}
+
+Sequence< sal_Int8 > SAL_CALL AccessibleGridControlHeader::getImplementationId()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslGlobalMutex() );
+ static Sequence< sal_Int8 > aId;
+ implCreateUuid( aId );
+ return aId;
+}
+
+// internal virtual methods ---------------------------------------------------
+
+Rectangle AccessibleGridControlHeader::implGetBoundingBox()
+{
+ return m_aTable.calcHeaderRect(isColumnBar());
+}
+
+Rectangle AccessibleGridControlHeader::implGetBoundingBoxOnScreen()
+{
+ return m_aTable.calcHeaderRect(isColumnBar());
+}
+
+sal_Int32 AccessibleGridControlHeader::implGetRowCount() const
+{
+ return 1;
+}
+
+sal_Int32 AccessibleGridControlHeader::implGetColumnCount() const
+{
+ return 1;
+}
+
+// internal helper methods ----------------------------------------------------
+
+Reference< XAccessible > AccessibleGridControlHeader::implGetChild(
+ sal_Int32 nRow, sal_uInt32 nColumnPos )
+{
+ Reference< XAccessible > xChild;
+ if(m_eObjType == svt::table::TCTYPE_COLUMNHEADERBAR)
+ {
+ AccessibleGridControlHeaderCell* pColHeaderCell = new AccessibleGridControlHeaderCell(nColumnPos, this, m_aTable, svt::table::TCTYPE_COLUMNHEADERCELL);
+ xChild = pColHeaderCell;
+ }
+ else if(m_eObjType == svt::table::TCTYPE_ROWHEADERBAR)
+ {
+ AccessibleGridControlHeaderCell* pRowHeaderCell = new AccessibleGridControlHeaderCell(nRow, this, m_aTable, svt::table::TCTYPE_ROWHEADERCELL);
+ xChild = pRowHeaderCell;
+ }
+ return xChild;
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleGridControlHeaderCell.cxx b/accessibility/source/extended/AccessibleGridControlHeaderCell.cxx
new file mode 100644
index 000000000000..830f1e876aa7
--- /dev/null
+++ b/accessibility/source/extended/AccessibleGridControlHeaderCell.cxx
@@ -0,0 +1,172 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/AccessibleGridControlHeaderCell.hxx"
+#include <svtools/accessibletable.hxx>
+#include "accessibility/extended/AccessibleGridControl.hxx"
+
+namespace accessibility
+{
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star::uno;
+ using namespace ::svt;
+ using namespace ::svt::table;
+
+AccessibleGridControlHeaderCell::AccessibleGridControlHeaderCell(sal_Int32 _nColumnRowId,
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTable& rTable,
+ AccessibleTableControlObjType eObjType)
+: AccessibleGridControlCell( rxParent, rTable, _nColumnRowId, 0, eObjType)
+, m_nColumnRowId(_nColumnRowId)
+{
+}
+/** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+*/
+::utl::AccessibleStateSetHelper* AccessibleGridControlHeaderCell::implCreateStateSetHelper()
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ::utl::AccessibleStateSetHelper*
+ pStateSetHelper = new ::utl::AccessibleStateSetHelper;
+
+ if( isAlive() )
+ {
+ // SHOWING done with mxParent
+ if( implIsShowing() )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+
+ SolarMutexGuard aSolarGuard;
+ pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
+ pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE );
+ pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
+ pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
+
+ if ( m_aTable.IsRowSelected(m_nColumnRowId) )
+ pStateSetHelper->AddState( AccessibleStateType::SELECTED );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return pStateSetHelper;
+}
+// -----------------------------------------------------------------------------
+/** @return
+ The count of visible children.
+*/
+sal_Int32 SAL_CALL AccessibleGridControlHeaderCell::getAccessibleChildCount()
+ throw ( RuntimeException )
+{
+ return 0;
+}
+// -----------------------------------------------------------------------------
+
+/** @return
+ The XAccessible interface of the specified child.
+*/
+Reference<XAccessible > SAL_CALL AccessibleGridControlHeaderCell::getAccessibleChild( sal_Int32 )
+ throw ( IndexOutOfBoundsException,RuntimeException )
+{
+ throw IndexOutOfBoundsException();
+}
+// XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL AccessibleGridControlHeaderCell::queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ Any aRet = AccessibleGridControlCell::queryInterface(rType);
+ return aRet;
+ }
+
+ /** Aquires the object (calls acquire() on base class). */
+ void SAL_CALL AccessibleGridControlHeaderCell::acquire() throw ()
+ {
+ AccessibleGridControlCell::acquire();
+ }
+
+ /** Releases the object (calls release() on base class). */
+ void SAL_CALL AccessibleGridControlHeaderCell::release() throw ()
+ {
+ AccessibleGridControlCell::release();
+ }
+ /** @return The XAccessibleContext interface of this object. */
+ Reference< com::sun::star::accessibility::XAccessibleContext > SAL_CALL AccessibleGridControlHeaderCell::getAccessibleContext() throw ( RuntimeException )
+ {
+ ensureIsAlive();
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+
+/** Grabs the focus to the column header. */
+void SAL_CALL AccessibleGridControlHeaderCell::grabFocus()
+ throw ( ::com::sun::star::uno::RuntimeException )
+{
+}
+// -----------------------------------------------------------------------------
+/** @return
+ The name of this class.
+*/
+::rtl::OUString SAL_CALL AccessibleGridControlHeaderCell::getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException )
+{
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.accessibility.AccessibleGridControlHeaderCell" ) );
+}
+// -----------------------------------------------------------------------------
+Rectangle AccessibleGridControlHeaderCell::implGetBoundingBox()
+{
+ return Rectangle(Point(0,0),Point(0,0));//To Do - return headercell rectangle
+}
+// -----------------------------------------------------------------------------
+
+Rectangle AccessibleGridControlHeaderCell::implGetBoundingBoxOnScreen()
+{
+ return Rectangle(Point(0,0),Point(0,0));//To Do - return headercell rectangle
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL AccessibleGridControlHeaderCell::getAccessibleIndexInParent()
+ throw ( RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ sal_Int32 nIndex = m_nColumnRowId;
+ return nIndex;
+}
+// -----------------------------------------------------------------------------
+} // namespace accessibility
+// -----------------------------------------------------------------------------
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleGridControlTable.cxx b/accessibility/source/extended/AccessibleGridControlTable.cxx
new file mode 100644
index 000000000000..18124682ae60
--- /dev/null
+++ b/accessibility/source/extended/AccessibleGridControlTable.cxx
@@ -0,0 +1,380 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+
+#include "accessibility/extended/AccessibleGridControlTable.hxx"
+#include "accessibility/extended/AccessibleGridControlTableCell.hxx"
+#include <svtools/accessibletable.hxx>
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+using namespace ::svt::table;
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+DBG_NAME( AccessibleGridControlTable )
+
+AccessibleGridControlTable::AccessibleGridControlTable(
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTable& rTable,
+ AccessibleTableControlObjType _eType) :
+ AccessibleGridControlTableBase( rxParent, rTable, _eType )
+{
+}
+
+AccessibleGridControlTable::~AccessibleGridControlTable()
+{
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleGridControlTable::getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ return new AccessibleGridControlTableCell(this, m_aTable, nChildIndex/m_aTable.GetColumnCount(), nChildIndex%m_aTable.GetColumnCount(), TCTYPE_TABLECELL);
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlTable::getAccessibleIndexInParent()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ if(m_aTable.HasRowHeader() && m_aTable.HasColHeader())
+ return 0;
+ else if((!m_aTable.HasRowHeader() && m_aTable.HasColHeader()) || (m_aTable.HasRowHeader() && !m_aTable.HasColHeader()) )
+ return 1;
+ else
+ return 2;
+}
+
+// XAccessibleComponent -------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL
+AccessibleGridControlTable::getAccessibleAtPoint( const awt::Point& rPoint )
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 nRow = 0;
+ sal_Int32 nColumnPos = 0;
+ if( m_aTable.ConvertPointToCellAddress( nRow, nColumnPos, VCLPoint( rPoint ) ) )
+ xChild = new AccessibleGridControlTableCell(this, m_aTable, nRow, nColumnPos, TCTYPE_TABLECELL);
+
+ return xChild;
+}
+
+void SAL_CALL AccessibleGridControlTable::grabFocus()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ m_aTable.GrabFocus();
+}
+
+Any SAL_CALL AccessibleGridControlTable::getAccessibleKeyBinding()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return Any(); // no special key bindings for data table
+}
+
+// XAccessibleTable -----------------------------------------------------------
+
+OUString SAL_CALL AccessibleGridControlTable::getAccessibleRowDescription( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidRow( nRow );
+ return m_aTable.GetRowDescription( nRow );
+}
+
+OUString SAL_CALL AccessibleGridControlTable::getAccessibleColumnDescription( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidColumn( nColumn );
+ return m_aTable.GetColumnDescription( (sal_uInt16)nColumn );
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleGridControlTable::getAccessibleRowHeaders()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ if(m_aTable.HasColHeader())
+ return implGetHeaderBar( 1 );
+ else
+ return implGetHeaderBar( 0 );
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleGridControlTable::getAccessibleColumnHeaders()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return implGetHeaderBar( 0 );
+}
+
+Sequence< sal_Int32 > SAL_CALL AccessibleGridControlTable::getSelectedAccessibleRows()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ Sequence< sal_Int32 > aSelSeq;
+ implGetSelectedRows( aSelSeq );
+ return aSelSeq;
+}
+
+//columns aren't selectable
+Sequence< sal_Int32 > SAL_CALL AccessibleGridControlTable::getSelectedAccessibleColumns()
+ throw ( uno::RuntimeException )
+{
+ Sequence< sal_Int32 > aSelSeq(0);
+ return aSelSeq;
+}
+
+sal_Bool SAL_CALL AccessibleGridControlTable::isAccessibleRowSelected( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidRow( nRow );
+ sal_Bool bSelected = sal_False;
+ Sequence< sal_Int32 > selectedRows = getSelectedAccessibleRows();
+ for(int i=0; i<selectedRows.getLength(); i++)
+ {
+ if(nRow == selectedRows[i])
+ {
+ bSelected = sal_True;
+ continue;
+ }
+ }
+ return bSelected;
+}
+
+//columns aren't selectable
+sal_Bool SAL_CALL AccessibleGridControlTable::isAccessibleColumnSelected( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ (void) nColumn;
+ return sal_False;
+}
+
+Reference< XAccessible > SAL_CALL AccessibleGridControlTable::getAccessibleCellAt(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return new AccessibleGridControlTableCell(this, m_aTable, nRow, nColumn, TCTYPE_TABLECELL);
+}
+
+sal_Bool SAL_CALL AccessibleGridControlTable::isAccessibleSelected(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ (void) nColumn;
+ //selection of single cells not possible, so if row is selected, the cell will be selected too
+ return isAccessibleRowSelected(nRow);
+}
+void SAL_CALL AccessibleGridControlTable::selectAccessibleChild( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ sal_Int32 nColumns = m_aTable.GetColumnCount();
+ sal_Int32 nRow = (nChildIndex / nColumns);
+ std::vector< sal_Int32 > selectedRows = m_aTable.GetSelectedRows();
+ selectedRows.push_back(nRow);
+}
+sal_Bool SAL_CALL AccessibleGridControlTable::isAccessibleChildSelected( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ sal_Int32 nColumns = m_aTable.GetColumnCount();
+ sal_Int32 nRow = (nChildIndex / nColumns);
+ return isAccessibleRowSelected(nRow);
+}
+void SAL_CALL AccessibleGridControlTable::clearAccessibleSelection()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ for(unsigned int i=0;i<m_aTable.GetSelectedRows().size();i++)
+ m_aTable.RemoveSelectedRow((sal_Int32)i);
+}
+void SAL_CALL AccessibleGridControlTable::selectAllAccessibleChildren()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ Sequence< sal_Int32 > selectedRows = getSelectedAccessibleRows();
+ for(int i=0;i<m_aTable.GetRowCount();i++)
+ selectedRows[i]=i;
+}
+sal_Int32 SAL_CALL AccessibleGridControlTable::getSelectedAccessibleChildCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ Sequence< sal_Int32 > selectedRows = getSelectedAccessibleRows();
+ sal_Int32 nColumns = m_aTable.GetColumnCount();
+ return selectedRows.getLength()*nColumns;
+}
+Reference< XAccessible > SAL_CALL
+AccessibleGridControlTable::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ if(isAccessibleChildSelected(nSelectedChildIndex))
+ return getAccessibleChild(nSelectedChildIndex);
+ else
+ return NULL;
+}
+//not implemented yet, because only row selection possible
+void SAL_CALL AccessibleGridControlTable::deselectAccessibleChild(
+ sal_Int32 nSelectedChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ (void)nSelectedChildIndex;
+}
+// XInterface -----------------------------------------------------------------
+
+Any SAL_CALL AccessibleGridControlTable::queryInterface( const uno::Type& rType )
+ throw ( uno::RuntimeException )
+{
+ Any aAny( AccessibleGridControlTableBase::queryInterface( rType ) );
+ return aAny.hasValue() ?
+ aAny : AccessibleGridControlTableImplHelper1::queryInterface( rType );
+}
+
+void SAL_CALL AccessibleGridControlTable::acquire() throw ()
+{
+ AccessibleGridControlTableBase::acquire();
+}
+
+void SAL_CALL AccessibleGridControlTable::release() throw ()
+{
+ AccessibleGridControlTableBase::release();
+}
+// XServiceInfo ---------------------------------------------------------------
+
+OUString SAL_CALL AccessibleGridControlTable::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.accessibility.AccessibleGridControlTable" ) );
+}
+
+// internal virtual methods ---------------------------------------------------
+
+Rectangle AccessibleGridControlTable::implGetBoundingBox()
+{
+ return m_aTable.calcTableRect();
+}
+
+Rectangle AccessibleGridControlTable::implGetBoundingBoxOnScreen()
+{
+ return m_aTable.calcTableRect();
+}
+// internal helper methods ----------------------------------------------------
+Reference< XAccessibleTable > AccessibleGridControlTable::implGetHeaderBar(
+ sal_Int32 nChildIndex )
+ throw ( uno::RuntimeException )
+{
+ Reference< XAccessible > xRet;
+ Reference< XAccessibleContext > xContext( m_xParent, uno::UNO_QUERY );
+ if( xContext.is() )
+ {
+ try
+ {
+ xRet = xContext->getAccessibleChild( nChildIndex );
+ }
+ catch( lang::IndexOutOfBoundsException& )
+ {
+ DBG_ERROR( "implGetHeaderBar - wrong child index" );
+ }
+ // RuntimeException goes to caller
+ }
+ return Reference< XAccessibleTable >( xRet, uno::UNO_QUERY );
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleGridControlTableBase.cxx b/accessibility/source/extended/AccessibleGridControlTableBase.cxx
new file mode 100644
index 000000000000..211f2a29d03f
--- /dev/null
+++ b/accessibility/source/extended/AccessibleGridControlTableBase.cxx
@@ -0,0 +1,290 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+
+#include "accessibility/extended/AccessibleGridControlTableBase.hxx"
+#include <svtools/accessibletable.hxx>
+#include <tools/multisel.hxx>
+#include <comphelper/sequence.hxx>
+
+// ============================================================================
+
+using ::rtl::OUString;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::svt;
+using namespace ::svt::table;
+
+// ============================================================================
+
+namespace accessibility {
+
+// ============================================================================
+
+DBG_NAME( AccessibleGridControlTableBase )
+
+AccessibleGridControlTableBase::AccessibleGridControlTableBase(
+ const Reference< XAccessible >& rxParent,
+ IAccessibleTable& rTable,
+ AccessibleTableControlObjType eObjType ) :
+ GridControlAccessibleElement( rxParent, rTable, eObjType )
+{
+}
+
+AccessibleGridControlTableBase::~AccessibleGridControlTableBase()
+{
+}
+
+// XAccessibleContext ---------------------------------------------------------
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleChildCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ sal_Int32 nChildren = 0;
+ if(m_eObjType == TCTYPE_ROWHEADERBAR)
+ nChildren = m_aTable.GetRowCount();
+ else if(m_eObjType == TCTYPE_TABLE)
+ nChildren = m_aTable.GetRowCount()*m_aTable.GetColumnCount();
+ else if(m_eObjType == TCTYPE_COLUMNHEADERBAR)
+ nChildren = m_aTable.GetColumnCount();
+ return nChildren;
+}
+
+sal_Int16 SAL_CALL AccessibleGridControlTableBase::getAccessibleRole()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return AccessibleRole::TABLE;
+}
+
+// XAccessibleTable -----------------------------------------------------------
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleRowCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return m_aTable.GetRowCount();
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleColumnCount()
+ throw ( uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ return m_aTable.GetColumnCount();
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleRowExtentAt(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return 1; // merged cells not supported
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleColumnExtentAt(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return 1; // merged cells not supported
+}
+
+Reference< XAccessible > SAL_CALL AccessibleGridControlTableBase::getAccessibleCaption()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // not supported
+}
+
+Reference< XAccessible > SAL_CALL AccessibleGridControlTableBase::getAccessibleSummary()
+ throw ( uno::RuntimeException )
+{
+ ensureIsAlive();
+ return NULL; // not supported
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleIndex(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidAddress( nRow, nColumn );
+ return implGetChildIndex( nRow, nColumn );
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleRow( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ return implGetRow( nChildIndex );
+}
+
+sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleColumn( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException )
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+ ensureIsValidIndex( nChildIndex );
+ return implGetColumn( nChildIndex );
+}
+
+// XInterface -----------------------------------------------------------------
+
+Any SAL_CALL AccessibleGridControlTableBase::queryInterface( const uno::Type& rType )
+ throw ( uno::RuntimeException )
+{
+ Any aAny( GridControlAccessibleElement::queryInterface( rType ) );
+ return aAny.hasValue() ?
+ aAny : AccessibleGridControlTableImplHelper::queryInterface( rType );
+}
+
+void SAL_CALL AccessibleGridControlTableBase::acquire() throw ()
+{
+ GridControlAccessibleElement::acquire();
+}
+
+void SAL_CALL AccessibleGridControlTableBase::release() throw ()
+{
+ GridControlAccessibleElement::release();
+}
+
+// XTypeProvider --------------------------------------------------------------
+
+Sequence< uno::Type > SAL_CALL AccessibleGridControlTableBase::getTypes()
+ throw ( uno::RuntimeException )
+{
+ return ::comphelper::concatSequences(
+ GridControlAccessibleElement::getTypes(),
+ AccessibleGridControlTableImplHelper::getTypes() );
+}
+
+Sequence< sal_Int8 > SAL_CALL AccessibleGridControlTableBase::getImplementationId()
+ throw ( uno::RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getOslGlobalMutex() );
+ static Sequence< sal_Int8 > aId;
+ implCreateUuid( aId );
+ return aId;
+}
+
+// internal helper methods ----------------------------------------------------
+
+sal_Int32 AccessibleGridControlTableBase::implGetChildCount() const
+{
+ return m_aTable.GetRowCount()*m_aTable.GetColumnCount();
+}
+
+sal_Int32 AccessibleGridControlTableBase::implGetRow( sal_Int32 nChildIndex ) const
+{
+ sal_Int32 nColumns = m_aTable.GetColumnCount();
+ return nColumns ? (nChildIndex / nColumns) : 0;
+}
+
+sal_Int32 AccessibleGridControlTableBase::implGetColumn( sal_Int32 nChildIndex ) const
+{
+ sal_Int32 nColumns = m_aTable.GetColumnCount();
+ return nColumns ? (nChildIndex % nColumns) : 0;
+}
+
+sal_Int32 AccessibleGridControlTableBase::implGetChildIndex(
+ sal_Int32 nRow, sal_Int32 nColumn ) const
+{
+ return nRow * m_aTable.GetColumnCount() + nColumn;
+}
+
+void AccessibleGridControlTableBase::implGetSelectedRows( Sequence< sal_Int32 >& rSeq )
+{
+ rSeq = comphelper::containerToSequence(m_aTable.GetSelectedRows());
+}
+
+void AccessibleGridControlTableBase::ensureIsValidRow( sal_Int32 nRow )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ if( nRow >= m_aTable.GetRowCount() )
+ throw lang::IndexOutOfBoundsException(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "row index is invalid" ) ), *this );
+}
+
+void AccessibleGridControlTableBase::ensureIsValidColumn( sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ if( nColumn >= m_aTable.GetColumnCount() )
+ throw lang::IndexOutOfBoundsException(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("column index is invalid") ), *this );
+}
+
+void AccessibleGridControlTableBase::ensureIsValidAddress(
+ sal_Int32 nRow, sal_Int32 nColumn )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ ensureIsValidRow( nRow );
+ ensureIsValidColumn( nColumn );
+}
+
+void AccessibleGridControlTableBase::ensureIsValidIndex( sal_Int32 nChildIndex )
+ throw ( lang::IndexOutOfBoundsException )
+{
+ if( nChildIndex >= implGetChildCount() )
+ throw lang::IndexOutOfBoundsException(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("child index is invalid") ), *this );
+}
+
+// ============================================================================
+
+} // namespace accessibility
+
+// ============================================================================
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleGridControlTableCell.cxx b/accessibility/source/extended/AccessibleGridControlTableCell.cxx
new file mode 100644
index 000000000000..68bba16d6a3b
--- /dev/null
+++ b/accessibility/source/extended/AccessibleGridControlTableCell.cxx
@@ -0,0 +1,373 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/AccessibleGridControlTableCell.hxx"
+#include <svtools/accessibletable.hxx>
+#include "accessibility/extended/AccessibleGridControl.hxx"
+#include <tools/gen.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+
+namespace accessibility
+{
+ namespace
+ {
+ void checkIndex_Impl( sal_Int32 _nIndex, const ::rtl::OUString& _sText ) throw (::com::sun::star::lang::IndexOutOfBoundsException)
+ {
+ if ( _nIndex >= _sText.getLength() )
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+
+ sal_Int32 getIndex_Impl( sal_Int32 _nRow, sal_uInt16 _nColumn, sal_uInt16 _nColumnCount )
+ {
+ return _nRow * _nColumnCount + _nColumn;
+ }
+ }
+ using namespace ::com::sun::star::lang;
+ using namespace utl;
+ using namespace comphelper;
+ using ::rtl::OUString;
+ using ::accessibility::AccessibleGridControl;
+ using namespace ::com::sun::star::uno;
+ using ::com::sun::star::accessibility::XAccessible;
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::svt;
+ using namespace ::svt::table;
+
+
+ // =============================================================================
+ // = AccessibleGridControlCell
+ // =============================================================================
+ // -----------------------------------------------------------------------------
+ AccessibleGridControlCell::AccessibleGridControlCell(
+ const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable,
+ sal_Int32 _nRowPos, sal_uInt16 _nColPos, AccessibleTableControlObjType _eType )
+ :AccessibleGridControlBase( _rxParent, _rTable, _eType )
+ ,m_nRowPos( _nRowPos )
+ ,m_nColPos( _nColPos )
+ {
+ // set accessible name here, because for that we need the position of the cell
+ // and so the base class isn't capable of doing this
+ ::rtl::OUString aAccName;
+ if(_eType == TCTYPE_TABLECELL)
+ aAccName = _rTable.GetAccessibleObjectName( TCTYPE_TABLECELL, _nRowPos, _nColPos );
+ else if(_eType == TCTYPE_ROWHEADERCELL)
+ aAccName = _rTable.GetAccessibleObjectName( TCTYPE_ROWHEADERCELL, _nRowPos, 0 );
+ else if(_eType == TCTYPE_COLUMNHEADERCELL)
+ aAccName = _rTable.GetAccessibleObjectName( TCTYPE_COLUMNHEADERCELL, 0, _nRowPos );
+ implSetName( aAccName );
+ }
+
+ // -----------------------------------------------------------------------------
+ AccessibleGridControlCell::~AccessibleGridControlCell()
+ {
+ }
+
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleGridControlCell::grabFocus() throw ( RuntimeException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ m_aTable.GoToCell( m_nColPos, m_nRowPos );
+ }
+ //// -----------------------------------------------------------------------------
+ // implementation of a table cell
+ ::rtl::OUString AccessibleGridControlTableCell::implGetText()
+ {
+ ensureIsAlive();
+ return m_aTable.GetAccessibleCellText( getRowPos(), getColumnPos() );
+ }
+
+ ::com::sun::star::lang::Locale AccessibleGridControlTableCell::implGetLocale()
+ {
+ ensureIsAlive();
+ return m_aTable.GetAccessible()->getAccessibleContext()->getLocale();
+ }
+
+ void AccessibleGridControlTableCell::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+ {
+ nStartIndex = 0;
+ nEndIndex = 0;
+ }
+
+ AccessibleGridControlTableCell::AccessibleGridControlTableCell(const Reference<XAccessible >& _rxParent,
+ IAccessibleTable& _rTable,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos,
+ AccessibleTableControlObjType eObjType)
+ :AccessibleGridControlCell( _rxParent, _rTable, _nRowPos, _nColPos, eObjType )
+ {
+ }
+
+ // XInterface -------------------------------------------------------------
+
+ /** Queries for a new interface. */
+ ::com::sun::star::uno::Any SAL_CALL AccessibleGridControlTableCell::queryInterface(
+ const ::com::sun::star::uno::Type& rType )
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ Any aRet = AccessibleGridControlCell::queryInterface(rType);
+ if ( !aRet.hasValue() )
+ aRet = AccessibleTextHelper_BASE::queryInterface(rType);
+ return aRet;
+ }
+
+ /** Aquires the object (calls acquire() on base class). */
+ void SAL_CALL AccessibleGridControlTableCell::acquire() throw ()
+ {
+ AccessibleGridControlCell::acquire();
+ }
+
+ /** Releases the object (calls release() on base class). */
+ void SAL_CALL AccessibleGridControlTableCell::release() throw ()
+ {
+ AccessibleGridControlCell::release();
+ }
+
+ ::com::sun::star::awt::Rectangle SAL_CALL AccessibleGridControlTableCell::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+ if ( !implIsValidIndex( nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ ::com::sun::star::awt::Rectangle aRect;
+
+ if ( &m_aTable )
+ aRect = AWTRectangle( m_aTable.GetFieldCharacterBounds( getRowPos(), getColumnPos(), nIndex ) );
+ return aRect;
+ }
+
+ sal_Int32 SAL_CALL AccessibleGridControlTableCell::getIndexAtPoint( const ::com::sun::star::awt::Point& _aPoint ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ return m_aTable.GetFieldIndexAtPoint( getRowPos(), getColumnPos(), VCLPoint( _aPoint ) );
+ }
+
+ /** @return
+ The name of this class.
+ */
+ ::rtl::OUString SAL_CALL AccessibleGridControlTableCell::getImplementationName()
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.accessibility.AccessibleGridControlTableCell" ) );
+ }
+
+ /** @return The count of visible children. */
+ sal_Int32 SAL_CALL AccessibleGridControlTableCell::getAccessibleChildCount()
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ return 0;
+ }
+
+ /** @return The XAccessible interface of the specified child. */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ AccessibleGridControlTableCell::getAccessibleChild( sal_Int32 )
+ throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException )
+ {
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+
+ /** Creates a new AccessibleStateSetHelper and fills it with states of the
+ current object.
+ @return
+ A filled AccessibleStateSetHelper.
+ */
+ ::utl::AccessibleStateSetHelper* AccessibleGridControlTableCell::implCreateStateSetHelper()
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ::utl::AccessibleStateSetHelper* pStateSetHelper = new ::utl::AccessibleStateSetHelper;
+
+ if( isAlive() )
+ {
+ // SHOWING done with mxParent
+ if( implIsShowing() )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+
+ m_aTable.FillAccessibleStateSetForCell( *pStateSetHelper, getRowPos(), static_cast< sal_uInt16 >( getColumnPos() ) );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return pStateSetHelper;
+ }
+
+
+ // XAccessible ------------------------------------------------------------
+
+ /** @return The XAccessibleContext interface of this object. */
+ Reference< XAccessibleContext > SAL_CALL AccessibleGridControlTableCell::getAccessibleContext() throw ( RuntimeException )
+ {
+ ensureIsAlive();
+ return this;
+ }
+
+ // XAccessibleContext -----------------------------------------------------
+
+ sal_Int32 SAL_CALL AccessibleGridControlTableCell::getAccessibleIndexInParent()
+ throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ return ( getRowPos() * m_aTable.GetColumnCount() ) + getColumnPos();
+ }
+
+ sal_Int32 SAL_CALL AccessibleGridControlTableCell::getCaretPosition( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ return -1;
+ }
+ sal_Bool SAL_CALL AccessibleGridControlTableCell::setCaretPosition ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ sal_Unicode SAL_CALL AccessibleGridControlTableCell::getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getCharacter( nIndex );
+ }
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL AccessibleGridControlTableCell::getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >();
+ }
+ sal_Int32 SAL_CALL AccessibleGridControlTableCell::getCharacterCount( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getCharacterCount( );
+ }
+
+ ::rtl::OUString SAL_CALL AccessibleGridControlTableCell::getSelectedText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getSelectedText( );
+ }
+ sal_Int32 SAL_CALL AccessibleGridControlTableCell::getSelectionStart( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getSelectionStart( );
+ }
+ sal_Int32 SAL_CALL AccessibleGridControlTableCell::getSelectionEnd( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getSelectionEnd( );
+ }
+ sal_Bool SAL_CALL AccessibleGridControlTableCell::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ ::rtl::OUString SAL_CALL AccessibleGridControlTableCell::getText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getText( );
+ }
+ ::rtl::OUString SAL_CALL AccessibleGridControlTableCell::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex );
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleGridControlTableCell::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextAtIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleGridControlTableCell::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextBeforeIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleGridControlTableCell::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ return OCommonAccessibleText::getTextBehindIndex( nIndex ,aTextType);
+ }
+ sal_Bool SAL_CALL AccessibleGridControlTableCell::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ::rtl::OUString sText = implGetText();
+ checkIndex_Impl( nStartIndex, sText );
+ checkIndex_Impl( nEndIndex, sText );
+
+ //!!! don't know how to put a string into the clipboard
+ return sal_False;
+ }
+
+ Rectangle AccessibleGridControlTableCell::implGetBoundingBox()
+ {
+ return Rectangle(Point(0,0),Point(0,0));//To Do - return headercell rectangle
+ }
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleGridControlTableCell::implGetBoundingBoxOnScreen()
+ {
+ return Rectangle(Point(0,0),Point(0,0));//To Do - return headercell rectangle
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleToolPanelDeck.cxx b/accessibility/source/extended/AccessibleToolPanelDeck.cxx
new file mode 100644
index 000000000000..be2245474174
--- /dev/null
+++ b/accessibility/source/extended/AccessibleToolPanelDeck.cxx
@@ -0,0 +1,410 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/AccessibleToolPanelDeck.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+/** === end UNO includes === **/
+
+#include <svtools/toolpanel/toolpaneldeck.hxx>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <vcl/svapp.hxx>
+#include <osl/mutex.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <tools/diagnose_ex.h>
+
+#include <boost/noncopyable.hpp>
+#include <vector>
+
+//......................................................................................................................
+namespace accessibility
+{
+//......................................................................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::accessibility::XAccessible;
+ using ::com::sun::star::accessibility::XAccessibleContext;
+ using ::com::sun::star::lang::DisposedException;
+ using ::com::sun::star::lang::IndexOutOfBoundsException;
+ using ::com::sun::star::lang::Locale;
+ using ::com::sun::star::accessibility::XAccessibleRelationSet;
+ using ::com::sun::star::accessibility::XAccessibleStateSet;
+ using ::com::sun::star::accessibility::IllegalAccessibleComponentStateException;
+ using ::com::sun::star::awt::XFont;
+ /** === end UNO using === **/
+ namespace AccessibleRole = ::com::sun::star::accessibility::AccessibleRole;
+ namespace AccessibleEventId = ::com::sun::star::accessibility::AccessibleEventId;
+ namespace AccessibleStateType = ::com::sun::star::accessibility::AccessibleStateType;
+
+ typedef ::com::sun::star::awt::Rectangle UnoRectangle;
+ typedef ::com::sun::star::awt::Point UnoPoint;
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeck_Impl - declaration
+ //==================================================================================================================
+ class AccessibleToolPanelDeck_Impl :public ::boost::noncopyable
+ ,public ::svt::IToolPanelDeckListener
+ {
+ public:
+ AccessibleToolPanelDeck_Impl(
+ AccessibleToolPanelDeck& i_rAntiImpl,
+ const Reference< XAccessible >& i_rAccessibleParent,
+ ::svt::ToolPanelDeck& i_rPanelDeck
+ );
+
+ void checkDisposed();
+ bool isDisposed() const { return m_pPanelDeck == NULL; }
+ void dispose();
+
+ ~AccessibleToolPanelDeck_Impl();
+
+ Reference< XAccessible > getOwnAccessible() const;
+ Reference< XAccessible > getActivePanelAccessible();
+
+ protected:
+ // IToolPanelDeckListener
+ virtual void PanelInserted( const ::svt::PToolPanel& i_pPanel, const size_t i_nPosition );
+ virtual void PanelRemoved( const size_t i_nPosition );
+ virtual void ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive );
+ virtual void LayouterChanged( const ::svt::PDeckLayouter& i_rNewLayouter );
+ virtual void Dying();
+
+ public:
+ AccessibleToolPanelDeck& m_rAntiImpl;
+ Reference< XAccessible > m_xAccessibleParent;
+ ::svt::ToolPanelDeck* m_pPanelDeck;
+
+ typedef ::std::vector< Reference< XAccessible > > AccessibleChildren;
+ Reference< XAccessible > m_xActivePanelAccessible;
+ };
+
+ //==================================================================================================================
+ //= MethodGuard
+ //==================================================================================================================
+ namespace
+ {
+ class MethodGuard
+ {
+ public:
+ MethodGuard( AccessibleToolPanelDeck_Impl& i_rImpl )
+ :m_aGuard()
+ {
+ i_rImpl.checkDisposed();
+ }
+ ~MethodGuard()
+ {
+ }
+
+ private:
+ SolarMutexGuard m_aGuard;
+ };
+ }
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeck_Impl - implementation
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeck_Impl::AccessibleToolPanelDeck_Impl( AccessibleToolPanelDeck& i_rAntiImpl, const Reference< XAccessible >& i_rAccessibleParent,
+ ::svt::ToolPanelDeck& i_rPanelDeck )
+ :m_rAntiImpl( i_rAntiImpl )
+ ,m_xAccessibleParent( i_rAccessibleParent )
+ ,m_pPanelDeck( &i_rPanelDeck )
+ ,m_xActivePanelAccessible()
+ {
+ m_pPanelDeck->AddListener( *this );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeck_Impl::~AccessibleToolPanelDeck_Impl()
+ {
+ if ( !isDisposed() )
+ dispose();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck_Impl::dispose()
+ {
+ ENSURE_OR_RETURN_VOID( !isDisposed(), "disposed twice" );
+ m_pPanelDeck->RemoveListener( *this );
+ m_pPanelDeck = NULL;
+ m_xAccessibleParent.clear();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck_Impl::checkDisposed()
+ {
+ if ( isDisposed() )
+ throw DisposedException( ::rtl::OUString(), *&m_rAntiImpl );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > AccessibleToolPanelDeck_Impl::getOwnAccessible() const
+ {
+ Reference< XAccessible > xOwnAccessible( static_cast< XAccessible* >( m_rAntiImpl.GetVCLXWindow() ) );
+ OSL_ENSURE( xOwnAccessible->getAccessibleContext() == Reference< XAccessibleContext >( &m_rAntiImpl ),
+ "AccessibleToolPanelDeck_Impl::getOwnAccessible: could not retrieve proper XAccessible for /myself!" );
+ return xOwnAccessible;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > AccessibleToolPanelDeck_Impl::getActivePanelAccessible()
+ {
+ ENSURE_OR_RETURN( !isDisposed(), "AccessibleToolPanelDeck_Impl::getActivePanelAccessible: already disposed!", NULL );
+
+ if ( !m_xActivePanelAccessible.is() )
+ {
+ ::boost::optional< size_t > aActivePanel( m_pPanelDeck->GetActivePanel() );
+ ENSURE_OR_RETURN( !!aActivePanel, "AccessibleToolPanelDeck_Impl::getActivePanelAccessible: this should not be called without an active panel!", NULL );
+ ::svt::PToolPanel pActivePanel( m_pPanelDeck->GetPanel( *aActivePanel ) );
+ ENSURE_OR_RETURN( pActivePanel.get() != NULL, "AccessibleToolPanelDeck_Impl::getActivePanelAccessible: no active panel!", NULL );
+ m_xActivePanelAccessible = pActivePanel->CreatePanelAccessible( getOwnAccessible() );
+ OSL_ENSURE( m_xActivePanelAccessible.is(), "AccessibleToolPanelDeck_Impl::getActivePanelAccessible: illegal accessible returned by the panel!" );
+ }
+
+ return m_xActivePanelAccessible;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck_Impl::PanelInserted( const ::svt::PToolPanel& i_pPanel, const size_t i_nPosition )
+ {
+ (void)i_pPanel;
+ (void)i_nPosition;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck_Impl::PanelRemoved( const size_t i_nPosition )
+ {
+ (void)i_nPosition;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck_Impl::ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive )
+ {
+ if ( !!i_rOldActive )
+ {
+ if ( !m_xActivePanelAccessible.is() )
+ {
+ // again, this might in theory happen if the XAccessible for the active panel has never before been requested.
+ // In this case, just say that all our children are invalid, so they all must be re-requested.
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::INVALIDATE_ALL_CHILDREN, Any(), Any() );
+ }
+ else
+ {
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::CHILD, makeAny( m_xActivePanelAccessible ), Any() );
+ }
+ }
+
+ m_xActivePanelAccessible.clear();
+
+ if ( !!i_rNewActive )
+ {
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::CHILD, Any(), makeAny( getActivePanelAccessible() ) );
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck_Impl::LayouterChanged( const ::svt::PDeckLayouter& i_rNewLayouter )
+ {
+ MethodGuard aGuard( *this );
+
+ (void)i_rNewLayouter;
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::INVALIDATE_ALL_CHILDREN, Any(), Any() );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck_Impl::Dying()
+ {
+ // the tool panel deck is dying, so dispose ourself
+ m_rAntiImpl.dispose();
+ }
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeck
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeck::AccessibleToolPanelDeck( const Reference< XAccessible >& i_rAccessibleParent,
+ ::svt::ToolPanelDeck& i_rPanelDeck )
+ :AccessibleToolPanelDeck_Base( i_rPanelDeck.GetWindowPeer() )
+ ,m_pImpl( new AccessibleToolPanelDeck_Impl( *this, i_rAccessibleParent, i_rPanelDeck ) )
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeck::~AccessibleToolPanelDeck()
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleToolPanelDeck::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+
+ sal_Int32 nChildCount( m_pImpl->m_pPanelDeck->GetLayouter()->GetAccessibleChildCount() );
+
+ ::boost::optional< size_t > aActivePanel( m_pImpl->m_pPanelDeck->GetActivePanel() );
+ if ( !!aActivePanel )
+ return ++nChildCount;
+
+ return nChildCount;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelDeck::getAccessibleChild( sal_Int32 i_nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+
+ const sal_Int32 nChildCount( getAccessibleChildCount() );
+ if ( ( i_nIndex < 0 ) || ( i_nIndex >= nChildCount ) )
+ throw IndexOutOfBoundsException( ::rtl::OUString(), *this );
+
+ // first "n" children are provided by the layouter
+ const size_t nLayouterCount( m_pImpl->m_pPanelDeck->GetLayouter()->GetAccessibleChildCount() );
+ if ( size_t( i_nIndex ) < nLayouterCount )
+ return m_pImpl->m_pPanelDeck->GetLayouter()->GetAccessibleChild(
+ size_t( i_nIndex ),
+ m_pImpl->getOwnAccessible()
+ );
+
+ // the last child is the XAccessible of the active panel
+ return m_pImpl->getActivePanelAccessible();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelDeck::getAccessibleParent( ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+ const Reference< XAccessible > xParent = implGetForeignControlledParent();
+ if ( xParent.is() )
+ return xParent;
+ return m_pImpl->m_xAccessibleParent;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ sal_Int16 SAL_CALL AccessibleToolPanelDeck::getAccessibleRole( ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+ return AccessibleRole::PANEL;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelDeck::getAccessibleAtPoint( const UnoPoint& i_rPoint ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+
+ const ::Point aRequestedPoint( VCLUnoHelper::ConvertToVCLPoint( i_rPoint ) );
+ // check the panel window itself
+ const ::Window& rActivePanelAnchor( m_pImpl->m_pPanelDeck->GetPanelWindowAnchor() );
+ const Rectangle aPanelAnchorArea( rActivePanelAnchor.GetPosPixel(), rActivePanelAnchor.GetOutputSizePixel() );
+ if ( aPanelAnchorArea.IsInside( aRequestedPoint ) )
+ // note that this assumes that the Window which actually implements the concrete panel covers
+ // the complete area of its "anchor" Window. But this is ensured by the ToolPanelDeck implementation.
+ return m_pImpl->getActivePanelAccessible();
+
+ // check the XAccessible instances provided by the layouter
+ try
+ {
+ const ::svt::PDeckLayouter pLayouter( m_pImpl->m_pPanelDeck->GetLayouter() );
+ ENSURE_OR_THROW( pLayouter.get() != NULL, "invalid layouter" );
+
+ const size_t nLayouterChildren = pLayouter->GetAccessibleChildCount();
+ for ( size_t i=0; i<nLayouterChildren; ++i )
+ {
+ const Reference< XAccessible > xLayoutItemAccessible( pLayouter->GetAccessibleChild( i, m_pImpl->getOwnAccessible() ), UNO_SET_THROW );
+ const Reference< XAccessibleComponent > xLayoutItemComponent( xLayoutItemAccessible->getAccessibleContext(), UNO_QUERY_THROW );
+ const ::Rectangle aLayoutItemBounds( VCLUnoHelper::ConvertToVCLRect( xLayoutItemComponent->getBounds() ) );
+ if ( aLayoutItemBounds.IsInside( aRequestedPoint ) )
+ return xLayoutItemAccessible;
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return NULL;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void SAL_CALL AccessibleToolPanelDeck::grabFocus( ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+ m_pImpl->m_pPanelDeck->GrabFocus();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void SAL_CALL AccessibleToolPanelDeck::disposing()
+ {
+ AccessibleToolPanelDeck_Base::disposing();
+ m_pImpl->dispose();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > AccessibleToolPanelDeck::GetChildAccessible( const VclWindowEvent& i_rVclWindowEvent )
+ {
+ // don't let the base class generate any A11Y events from VclWindowEvent, we completely manage those
+ // A11Y events ourself
+ (void)i_rVclWindowEvent;
+ return NULL;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeck::FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& i_rStateSet )
+ {
+ AccessibleToolPanelDeck_Base::FillAccessibleStateSet( i_rStateSet );
+ if ( m_pImpl->isDisposed() )
+ {
+ i_rStateSet.AddState( AccessibleStateType::DEFUNC );
+ }
+ else
+ {
+ i_rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ }
+ }
+
+//......................................................................................................................
+} // namespace accessibility
+//......................................................................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleToolPanelDeckTabBar.cxx b/accessibility/source/extended/AccessibleToolPanelDeckTabBar.cxx
new file mode 100644
index 000000000000..f4864c95a860
--- /dev/null
+++ b/accessibility/source/extended/AccessibleToolPanelDeckTabBar.cxx
@@ -0,0 +1,457 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/AccessibleToolPanelDeckTabBar.hxx"
+#include "accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx"
+#include "accessibility/helper/accresmgr.hxx"
+#include "accessibility/helper/accessiblestrings.hrc"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+/** === end UNO includes === **/
+
+#include <svtools/toolpanel/toolpaneldeck.hxx>
+#include <svtools/toolpanel/paneltabbar.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/button.hxx>
+#include <osl/mutex.hxx>
+#include <tools/diagnose_ex.h>
+
+#include <vector>
+
+//......................................................................................................................
+namespace accessibility
+{
+//......................................................................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::accessibility::XAccessible;
+ using ::com::sun::star::lang::DisposedException;
+ using ::com::sun::star::lang::IndexOutOfBoundsException;
+ using ::com::sun::star::accessibility::XAccessibleContext;
+ /** === end UNO using === **/
+
+ namespace AccessibleRole = ::com::sun::star::accessibility::AccessibleRole;
+ namespace AccessibleEventId = ::com::sun::star::accessibility::AccessibleEventId;
+ namespace AccessibleStateType = ::com::sun::star::accessibility::AccessibleStateType;
+
+ typedef ::com::sun::star::awt::Point UnoPoint;
+ typedef ::com::sun::star::awt::Size UnoSize;
+ typedef ::com::sun::star::awt::Rectangle UnoRectangle;
+
+ //==================================================================================================================
+ //= AccessibleWrapper
+ //==================================================================================================================
+ typedef ::cppu::WeakImplHelper1< XAccessible > AccessibleWrapper_Base;
+ class AccessibleWrapper : public AccessibleWrapper_Base
+ {
+ public:
+ AccessibleWrapper( const Reference< XAccessibleContext >& i_rContext )
+ :m_xContext( i_rContext )
+ {
+ }
+
+ // XAccessible
+ virtual Reference< XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (RuntimeException)
+ {
+ return m_xContext;
+ }
+
+ private:
+ const Reference< XAccessibleContext > m_xContext;
+ };
+
+ //==================================================================================================================
+ //= AccessibleToolPanelTabBar_Impl
+ //==================================================================================================================
+ class AccessibleToolPanelTabBar_Impl :public ::boost::noncopyable
+ ,public ::svt::IToolPanelDeckListener
+ {
+ public:
+ AccessibleToolPanelTabBar_Impl(
+ AccessibleToolPanelTabBar& i_rAntiImpl,
+ const Reference< XAccessible >& i_rAccessibleParent,
+ ::svt::IToolPanelDeck& i_rPanelDeck,
+ ::svt::PanelTabBar& i_rTabBar
+ );
+ ~AccessibleToolPanelTabBar_Impl();
+
+ void checkDisposed();
+ bool isDisposed() const { return m_pPanelDeck == NULL; }
+ void dispose();
+
+ ::svt::IToolPanelDeck* getPanelDeck() const { return m_pPanelDeck; }
+ ::svt::PanelTabBar* getTabBar() const { return m_pTabBar; }
+ const Reference< XAccessible >& getAccessibleParent() const { return m_xAccessibleParent; }
+ Reference< XAccessible > getAccessiblePanelItem( size_t i_nPosition );
+ Reference< XAccessible > getOwnAccessible() const;
+
+ protected:
+ // IToolPanelDeckListener
+ virtual void PanelInserted( const ::svt::PToolPanel& i_pPanel, const size_t i_nPosition );
+ virtual void PanelRemoved( const size_t i_nPosition );
+ virtual void ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive );
+ virtual void LayouterChanged( const ::svt::PDeckLayouter& i_rNewLayouter );
+ virtual void Dying();
+
+ DECL_LINK( OnWindowEvent, const VclSimpleEvent* );
+
+ private:
+ AccessibleToolPanelTabBar& m_rAntiImpl;
+ Reference< XAccessible > m_xAccessibleParent;
+ ::svt::IToolPanelDeck* m_pPanelDeck;
+ ::svt::PanelTabBar* m_pTabBar;
+ ::std::vector< Reference< XAccessible > > m_aChildren;
+ };
+
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelTabBar_Impl::AccessibleToolPanelTabBar_Impl( AccessibleToolPanelTabBar& i_rAntiImpl,
+ const Reference< XAccessible >& i_rAccessibleParent, ::svt::IToolPanelDeck& i_rPanelDeck, ::svt::PanelTabBar& i_rTabBar )
+ :m_rAntiImpl( i_rAntiImpl )
+ ,m_xAccessibleParent( i_rAccessibleParent )
+ ,m_pPanelDeck( &i_rPanelDeck )
+ ,m_pTabBar( &i_rTabBar )
+ ,m_aChildren()
+ {
+ m_pPanelDeck->AddListener( *this );
+ m_aChildren.resize( m_pPanelDeck->GetPanelCount() );
+
+ const String sAccessibleDescription( TK_RES_STRING( RID_STR_ACC_DESC_PANELDECL_TABBAR ) );
+ i_rTabBar.SetAccessibleName( sAccessibleDescription );
+ i_rTabBar.SetAccessibleDescription( sAccessibleDescription );
+
+ i_rTabBar.GetScrollButton( true ).AddEventListener( LINK( this, AccessibleToolPanelTabBar_Impl, OnWindowEvent ) );
+ i_rTabBar.GetScrollButton( false ).AddEventListener( LINK( this, AccessibleToolPanelTabBar_Impl, OnWindowEvent ) );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar_Impl::checkDisposed()
+ {
+ if ( isDisposed() )
+ throw DisposedException( ::rtl::OUString(), *&m_rAntiImpl );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelTabBar_Impl::~AccessibleToolPanelTabBar_Impl()
+ {
+ if ( !isDisposed() )
+ dispose();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar_Impl::dispose()
+ {
+ ENSURE_OR_RETURN_VOID( !isDisposed(), "disposed twice" );
+ m_pPanelDeck->RemoveListener( *this );
+ m_pPanelDeck = NULL;
+
+ m_pTabBar->GetScrollButton( true ).RemoveEventListener( LINK( this, AccessibleToolPanelTabBar_Impl, OnWindowEvent ) );
+ m_pTabBar->GetScrollButton( false ).RemoveEventListener( LINK( this, AccessibleToolPanelTabBar_Impl, OnWindowEvent ) );
+ m_pTabBar = NULL;
+
+ m_xAccessibleParent.clear();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > AccessibleToolPanelTabBar_Impl::getAccessiblePanelItem( size_t i_nPosition )
+ {
+ ENSURE_OR_RETURN( !isDisposed(), "AccessibleToolPanelTabBar_Impl::getAccessiblePanelItem: already disposed!", NULL );
+ ENSURE_OR_RETURN( i_nPosition < m_aChildren.size(), "AccessibleToolPanelTabBar_Impl::getAccessiblePanelItem: invalid index!", NULL );
+
+ Reference< XAccessible >& rAccessibleChild( m_aChildren[ i_nPosition ] );
+ if ( !rAccessibleChild.is() )
+ {
+ ::rtl::Reference< AccessibleToolPanelDeckTabBarItem > pAccesibleItemContext( new AccessibleToolPanelDeckTabBarItem(
+ getOwnAccessible(), *m_pPanelDeck, *m_pTabBar, i_nPosition ) );
+ rAccessibleChild.set( new AccessibleWrapper( pAccesibleItemContext.get() ) );
+ pAccesibleItemContext->lateInit( rAccessibleChild );
+ }
+ return rAccessibleChild;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > AccessibleToolPanelTabBar_Impl::getOwnAccessible() const
+ {
+ Reference< XAccessible > xOwnAccessible( static_cast< XAccessible* >( m_rAntiImpl.GetVCLXWindow() ) );
+ OSL_ENSURE( xOwnAccessible->getAccessibleContext() == Reference< XAccessibleContext >( &m_rAntiImpl ),
+ "AccessibleToolPanelTabBar_Impl::getOwnAccessible: could not retrieve proper XAccessible for /myself!" );
+ return xOwnAccessible;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar_Impl::PanelInserted( const ::svt::PToolPanel& i_pPanel, const size_t i_nPosition )
+ {
+ ENSURE_OR_RETURN_VOID( i_nPosition <= m_aChildren.size(), "AccessibleToolPanelTabBar_Impl::PanelInserted: illegal position (or invalid cache!)" );
+ (void)i_pPanel;
+ m_aChildren.insert( m_aChildren.begin() + i_nPosition, NULL );
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::CHILD, Any(), makeAny( getAccessiblePanelItem( i_nPosition ) ) );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar_Impl::PanelRemoved( const size_t i_nPosition )
+ {
+ ENSURE_OR_RETURN_VOID( i_nPosition < m_aChildren.size(), "AccessibleToolPanelTabBar_Impl::PanelInserted: illegal position (or invalid cache!)" );
+
+ const Reference< XAccessible > xOldChild( getAccessiblePanelItem( i_nPosition ) );
+ m_aChildren.erase( m_aChildren.begin() + i_nPosition );
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::CHILD, makeAny( xOldChild ), Any() );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar_Impl::ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive )
+ {
+ (void)i_rOldActive;
+ (void)i_rNewActive;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar_Impl::LayouterChanged( const ::svt::PDeckLayouter& i_rNewLayouter )
+ {
+ (void)i_rNewLayouter;
+ m_rAntiImpl.dispose();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar_Impl::Dying()
+ {
+ m_rAntiImpl.dispose();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ IMPL_LINK( AccessibleToolPanelTabBar_Impl, OnWindowEvent, const VclSimpleEvent*, i_pEvent )
+ {
+ ENSURE_OR_RETURN( !isDisposed(), "AccessibleToolPanelTabBar_Impl::OnWindowEvent: already disposed!", 0L );
+
+ const VclWindowEvent* pWindowEvent( dynamic_cast< const VclWindowEvent* >( i_pEvent ) );
+ if ( !pWindowEvent )
+ return 0L;
+
+ const bool bForwardButton = ( pWindowEvent->GetWindow() == &m_pTabBar->GetScrollButton( true ) );
+ const bool bBackwardButton = ( pWindowEvent->GetWindow() == &m_pTabBar->GetScrollButton( false ) );
+ ENSURE_OR_RETURN( bForwardButton || bBackwardButton, "AccessibleToolPanelTabBar_Impl::OnWindowEvent: where does this come from?", 0L );
+
+ const bool bShow = ( i_pEvent->GetId() == VCLEVENT_WINDOW_SHOW );
+ const bool bHide = ( i_pEvent->GetId() == VCLEVENT_WINDOW_HIDE );
+ if ( !bShow && !bHide )
+ // not interested in events other than visibility changes
+ return 0L;
+
+ const Reference< XAccessible > xButtonAccessible( m_pTabBar->GetScrollButton( bForwardButton ).GetAccessible() );
+ const Any aOldChild( bHide ? xButtonAccessible : Reference< XAccessible >() );
+ const Any aNewChild( bShow ? xButtonAccessible : Reference< XAccessible >() );
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldChild, aNewChild );
+
+ return 1L;
+ }
+
+ //==================================================================================================================
+ //= MethodGuard
+ //==================================================================================================================
+ namespace
+ {
+ class MethodGuard
+ {
+ public:
+ MethodGuard( AccessibleToolPanelTabBar_Impl& i_rImpl )
+ :m_aGuard()
+ {
+ i_rImpl.checkDisposed();
+ }
+ ~MethodGuard()
+ {
+ }
+
+ private:
+ SolarMutexGuard m_aGuard;
+ };
+ }
+
+ //==================================================================================================================
+ //= AccessibleToolPanelTabBar
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelTabBar::AccessibleToolPanelTabBar( const Reference< XAccessible >& i_rAccessibleParent,
+ ::svt::IToolPanelDeck& i_rPanelDeck, ::svt::PanelTabBar& i_rTabBar )
+ :AccessibleToolPanelTabBar_Base( i_rTabBar.GetWindowPeer() )
+ ,m_pImpl( new AccessibleToolPanelTabBar_Impl( *this, i_rAccessibleParent, i_rPanelDeck, i_rTabBar ) )
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelTabBar::~AccessibleToolPanelTabBar()
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleToolPanelTabBar::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+
+ const bool bHasScrollBack = m_pImpl->getTabBar()->GetScrollButton( false ).IsVisible();
+ const bool bHasScrollForward = m_pImpl->getTabBar()->GetScrollButton( true ).IsVisible();
+
+ return m_pImpl->getPanelDeck()->GetPanelCount()
+ + ( bHasScrollBack ? 1 : 0 )
+ + ( bHasScrollForward ? 1 : 0 );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelTabBar::getAccessibleChild( sal_Int32 i_nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+
+ const bool bHasScrollBack = m_pImpl->getTabBar()->GetScrollButton( false ).IsVisible();
+ const bool bHasScrollForward = m_pImpl->getTabBar()->GetScrollButton( true ).IsVisible();
+
+ const bool bScrollBackRequested = ( bHasScrollBack && ( i_nIndex == 0 ) );
+ const bool bScrollForwardRequested = ( bHasScrollForward && ( i_nIndex == getAccessibleChildCount() - 1 ) );
+ OSL_ENSURE( !( bScrollBackRequested && bScrollForwardRequested ), "AccessibleToolPanelTabBar::getAccessibleChild: ouch!" );
+
+ if ( bScrollBackRequested || bScrollForwardRequested )
+ {
+ Reference< XAccessible > xScrollButtonAccessible( m_pImpl->getTabBar()->GetScrollButton( bScrollForwardRequested ).GetAccessible() );
+ ENSURE_OR_RETURN( xScrollButtonAccessible.is(), "AccessibleToolPanelTabBar::getAccessibleChild: invalid button accessible!", NULL );
+ #if OSL_DEBUG_LEVEL > 0
+ Reference< XAccessibleContext > xScrollButtonContext( xScrollButtonAccessible->getAccessibleContext() );
+ ENSURE_OR_RETURN( xScrollButtonContext.is(), "AccessibleToolPanelTabBar::getAccessibleChild: invalid button accessible context!", xScrollButtonAccessible );
+ OSL_ENSURE( xScrollButtonContext->getAccessibleParent() == m_pImpl->getOwnAccessible(),
+ "AccessibleToolPanelTabBar::getAccessibleChild: wrong parent at the button's accesible!" );
+ #endif
+ return xScrollButtonAccessible;
+ }
+
+ return m_pImpl->getAccessiblePanelItem( i_nIndex - ( bHasScrollBack ? 1 : 0 ) );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelTabBar::getAccessibleParent( ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+ return m_pImpl->getAccessibleParent();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ sal_Int16 SAL_CALL AccessibleToolPanelTabBar::getAccessibleRole( ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+ return AccessibleRole::PAGE_TAB_LIST;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ namespace
+ {
+ bool lcl_covers( const ::Window& i_rWindow, const ::Point& i_rPoint )
+ {
+ const Rectangle aWindowBounds( i_rWindow.GetWindowExtentsRelative( i_rWindow.GetParent() ) );
+ return aWindowBounds.IsInside( i_rPoint );
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelTabBar::getAccessibleAtPoint( const UnoPoint& i_rPoint ) throw (RuntimeException)
+ {
+ MethodGuard aGuard( *m_pImpl );
+
+ // check the tab items
+ const UnoPoint aOwnScreenPos( getLocationOnScreen() );
+ const ::Point aRequestedScreenPoint( i_rPoint.X + aOwnScreenPos.X, i_rPoint.Y + aOwnScreenPos.Y );
+
+ for ( size_t i=0; i<m_pImpl->getPanelDeck()->GetPanelCount(); ++i )
+ {
+ const ::Rectangle aItemScreenRect( m_pImpl->getTabBar()->GetItemScreenRect(i) );
+ if ( aItemScreenRect.IsInside( aRequestedScreenPoint ) )
+ return m_pImpl->getAccessiblePanelItem(i);
+ }
+
+ // check the scroll buttons
+ const ::Point aRequestedClientPoint( VCLUnoHelper::ConvertToVCLPoint( i_rPoint ) );
+
+ const bool bHasScrollBack = m_pImpl->getTabBar()->GetScrollButton( false ).IsVisible();
+ if ( bHasScrollBack && lcl_covers( m_pImpl->getTabBar()->GetScrollButton( false ), aRequestedClientPoint ) )
+ return m_pImpl->getTabBar()->GetScrollButton( false ).GetAccessible();
+
+ const bool bHasScrollForward = m_pImpl->getTabBar()->GetScrollButton( true ).IsVisible();
+ if ( bHasScrollForward && lcl_covers( m_pImpl->getTabBar()->GetScrollButton( true ), aRequestedClientPoint ) )
+ return m_pImpl->getTabBar()->GetScrollButton( true ).GetAccessible();
+
+ // no hit
+ return NULL;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void SAL_CALL AccessibleToolPanelTabBar::disposing()
+ {
+ AccessibleToolPanelTabBar_Base::disposing();
+ m_pImpl->dispose();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessible > AccessibleToolPanelTabBar::GetChildAccessible( const VclWindowEvent& i_rVclWindowEvent )
+ {
+ // don't let the base class generate any A11Y events from VclWindowEvent, we completely manage those
+ // A11Y events ourself
+ (void)i_rVclWindowEvent;
+ return NULL;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelTabBar::FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& i_rStateSet )
+ {
+ AccessibleToolPanelTabBar_Base::FillAccessibleStateSet( i_rStateSet );
+ i_rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ ENSURE_OR_RETURN_VOID( !m_pImpl->isDisposed(), "AccessibleToolPanelTabBar::FillAccessibleStateSet: already disposed!" );
+ if ( m_pImpl->getTabBar()->IsVertical() )
+ i_rStateSet.AddState( AccessibleStateType::VERTICAL );
+ else
+ i_rStateSet.AddState( AccessibleStateType::HORIZONTAL );
+ }
+
+//......................................................................................................................
+} // namespace accessibility
+//......................................................................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx b/accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx
new file mode 100644
index 000000000000..b621124cbe5f
--- /dev/null
+++ b/accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx
@@ -0,0 +1,453 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+/** === end UNO includes === **/
+
+#include <svtools/toolpanel/toolpaneldeck.hxx>
+#include <svtools/toolpanel/paneltabbar.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <tools/diagnose_ex.h>
+#include <vcl/svapp.hxx>
+#include <osl/mutex.hxx>
+
+//......................................................................................................................
+namespace accessibility
+{
+//......................................................................................................................
+
+ typedef ::com::sun::star::awt::Rectangle UnoRectangle;
+ typedef ::com::sun::star::awt::Point UnoPoint;
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::accessibility::XAccessible;
+ using ::com::sun::star::lang::DisposedException;
+ using ::com::sun::star::lang::IndexOutOfBoundsException;
+ using ::com::sun::star::accessibility::XAccessibleRelationSet;
+ using ::com::sun::star::accessibility::XAccessibleStateSet;
+ using ::com::sun::star::accessibility::XAccessibleComponent;
+ using ::com::sun::star::accessibility::XAccessibleExtendedComponent;
+ using ::com::sun::star::awt::XFont;
+ /** === end UNO using === **/
+
+ namespace AccessibleRole = ::com::sun::star::accessibility::AccessibleRole;
+ namespace AccessibleStateType = ::com::sun::star::accessibility::AccessibleStateType;
+ namespace AccessibleEventId = ::com::sun::star::accessibility::AccessibleEventId;
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeckTabBarItem_Impl
+ //==================================================================================================================
+ class AccessibleToolPanelDeckTabBarItem_Impl : public ::svt::IToolPanelDeckListener
+ {
+ public:
+ AccessibleToolPanelDeckTabBarItem_Impl(
+ AccessibleToolPanelDeckTabBarItem& i_rAntiImpl,
+ const Reference< XAccessible >& i_rAccessibleParent,
+ ::svt::IToolPanelDeck& i_rPanelDeck,
+ ::svt::PanelTabBar& i_rTabBar,
+ const size_t i_nItemPos
+ );
+ ~AccessibleToolPanelDeckTabBarItem_Impl();
+
+ ::svt::PanelTabBar* getTabBar() const { return m_pTabBar; }
+
+ // IToolPanelDeckListener
+ virtual void PanelInserted( const ::svt::PToolPanel& i_pPanel, const size_t i_nPosition );
+ virtual void PanelRemoved( const size_t i_nPosition );
+ virtual void ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive );
+ virtual void LayouterChanged( const ::svt::PDeckLayouter& i_rNewLayouter );
+ virtual void Dying();
+
+ public:
+ bool isDisposed() const { return m_pPanelDeck == NULL; }
+ void checkDisposed() const;
+ void dispose();
+
+ const Reference< XAccessible >&
+ getAccessibleParent() const { return m_xAccessibleParent; }
+ size_t getItemPos() const { return m_nItemPos; }
+
+ Reference< XAccessibleComponent > getParentAccessibleComponent() const;
+ ::svt::IToolPanelDeck* getPanelDeck() const { return m_pPanelDeck; }
+ ::rtl::OUString getPanelDisplayName();
+
+ private:
+ void impl_notifyBoundRectChanges();
+ void impl_notifyStateChange( const sal_Int16 i_nLostState, const sal_Int16 i_nGainedState );
+
+ private:
+ AccessibleToolPanelDeckTabBarItem& m_rAntiImpl;
+ Reference< XAccessible > m_xAccessibleParent;
+ ::svt::IToolPanelDeck* m_pPanelDeck;
+ ::svt::PanelTabBar* m_pTabBar;
+ size_t m_nItemPos;
+ };
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeckTabBarItem_Impl
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeckTabBarItem_Impl::AccessibleToolPanelDeckTabBarItem_Impl( AccessibleToolPanelDeckTabBarItem& i_rAntiImpl,
+ const Reference< XAccessible >& i_rAccessibleParent, ::svt::IToolPanelDeck& i_rPanelDeck, ::svt::PanelTabBar& i_rTabBar,
+ const size_t i_nItemPos )
+ :m_rAntiImpl( i_rAntiImpl )
+ ,m_xAccessibleParent( i_rAccessibleParent )
+ ,m_pPanelDeck( &i_rPanelDeck )
+ ,m_pTabBar( &i_rTabBar )
+ ,m_nItemPos( i_nItemPos )
+ {
+ m_pPanelDeck->AddListener( *this );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeckTabBarItem_Impl::~AccessibleToolPanelDeckTabBarItem_Impl()
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::checkDisposed() const
+ {
+ if ( isDisposed() )
+ throw DisposedException( ::rtl::OUString(), *&m_rAntiImpl );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::dispose()
+ {
+ ENSURE_OR_RETURN_VOID( !isDisposed(), "AccessibleToolPanelDeckTabBarItem_Impl::dispose: disposed twice!" );
+
+ m_xAccessibleParent.clear();
+ m_pPanelDeck->RemoveListener( *this );
+ m_pPanelDeck = NULL;
+ m_pTabBar = NULL;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ Reference< XAccessibleComponent > AccessibleToolPanelDeckTabBarItem_Impl::getParentAccessibleComponent() const
+ {
+ Reference< XAccessible > xAccessibleParent( m_rAntiImpl.getAccessibleParent(), UNO_QUERY_THROW );
+ return Reference< XAccessibleComponent >( xAccessibleParent->getAccessibleContext(), UNO_QUERY );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ ::rtl::OUString AccessibleToolPanelDeckTabBarItem_Impl::getPanelDisplayName()
+ {
+ const ::svt::PToolPanel pPanel( m_pPanelDeck->GetPanel( getItemPos() ) );
+ if ( pPanel.get() == NULL )
+ throw DisposedException();
+ return pPanel->GetDisplayName();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::impl_notifyBoundRectChanges()
+ {
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::BOUNDRECT_CHANGED, Any(), Any() );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::impl_notifyStateChange( const sal_Int16 i_nLostState, const sal_Int16 i_nGainedState )
+ {
+ m_rAntiImpl.NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED,
+ i_nLostState > -1 ? makeAny( i_nLostState ) : Any(),
+ i_nGainedState > -1 ? makeAny( i_nGainedState ) : Any()
+ );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::PanelInserted( const ::svt::PToolPanel& i_pPanel, const size_t i_nPosition )
+ {
+ (void)i_pPanel;
+ if ( i_nPosition <= m_nItemPos )
+ ++m_nItemPos;
+ impl_notifyBoundRectChanges();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::PanelRemoved( const size_t i_nPosition )
+ {
+ if ( i_nPosition == m_nItemPos )
+ {
+ m_rAntiImpl.dispose();
+ }
+ else if ( i_nPosition < m_nItemPos )
+ {
+ --m_nItemPos;
+ impl_notifyBoundRectChanges();
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive )
+ {
+ if ( m_nItemPos == i_rOldActive )
+ {
+ impl_notifyStateChange( AccessibleStateType::ACTIVE, -1 );
+ impl_notifyStateChange( AccessibleStateType::SELECTED, -1 );
+ }
+ else if ( m_nItemPos == i_rNewActive )
+ {
+ impl_notifyStateChange( -1, AccessibleStateType::ACTIVE );
+ impl_notifyStateChange( -1, AccessibleStateType::SELECTED );
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::LayouterChanged( const ::svt::PDeckLayouter& i_rNewLayouter )
+ {
+ (void)i_rNewLayouter;
+ // if the tool panel deck has a new layouter, then the old layouter, and thus all items it was
+ // responsible for, died. So do we.
+ dispose();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void AccessibleToolPanelDeckTabBarItem_Impl::Dying()
+ {
+ // if the tool panel deck is dying, then its layouter dies, so should we.
+ dispose();
+ }
+
+ //==================================================================================================================
+ //= ItemMethodGuard
+ //==================================================================================================================
+ class ItemMethodGuard
+ {
+ public:
+ ItemMethodGuard( AccessibleToolPanelDeckTabBarItem_Impl& i_rImpl )
+ :m_aGuard()
+ {
+ i_rImpl.checkDisposed();
+ }
+ ~ItemMethodGuard()
+ {
+ }
+
+ private:
+ SolarMutexGuard m_aGuard;
+ };
+
+ //==================================================================================================================
+ //= AccessibleToolPanelDeckTabBarItem
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeckTabBarItem::AccessibleToolPanelDeckTabBarItem( const Reference< XAccessible >& i_rAccessibleParent,
+ ::svt::IToolPanelDeck& i_rPanelDeck, ::svt::PanelTabBar& i_rTabBar, const size_t i_nItemPos )
+ :m_pImpl( new AccessibleToolPanelDeckTabBarItem_Impl( *this, i_rAccessibleParent, i_rPanelDeck, i_rTabBar, i_nItemPos ) )
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ AccessibleToolPanelDeckTabBarItem::~AccessibleToolPanelDeckTabBarItem()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ return 0;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ (void)i;
+ throw IndexOutOfBoundsException( ::rtl::OUString(), *this );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleParent( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ return m_pImpl->getAccessibleParent();
+ }
+
+ //--------------------------------------------------------------------
+ sal_Int16 SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleRole( ) throw (RuntimeException)
+ {
+ return AccessibleRole::PAGE_TAB;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ return m_pImpl->getPanelDisplayName();
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleName( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ return m_pImpl->getPanelDisplayName();
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleRelationSet > SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleRelationSet( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ ::utl::AccessibleRelationSetHelper* pRelationSet = new utl::AccessibleRelationSetHelper;
+ return pRelationSet;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleStateSet > SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleStateSet( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+
+ ::utl::AccessibleStateSetHelper* pStateSet( new ::utl::AccessibleStateSetHelper );
+ pStateSet->AddState( AccessibleStateType::FOCUSABLE );
+ pStateSet->AddState( AccessibleStateType::SELECTABLE );
+ pStateSet->AddState( AccessibleStateType::ICONIFIED );
+
+ if ( m_pImpl->getItemPos() == m_pImpl->getPanelDeck()->GetActivePanel() )
+ {
+ pStateSet->AddState( AccessibleStateType::ACTIVE );
+ pStateSet->AddState( AccessibleStateType::SELECTED );
+ }
+
+ if ( m_pImpl->getItemPos() == m_pImpl->getTabBar()->GetFocusedPanelItem() )
+ pStateSet->AddState( AccessibleStateType::FOCUSED );
+
+ if ( m_pImpl->getTabBar()->IsEnabled() )
+ pStateSet->AddState( AccessibleStateType::ENABLED );
+
+ if ( m_pImpl->getTabBar()->IsVisible() )
+ {
+ pStateSet->AddState( AccessibleStateType::SHOWING );
+ pStateSet->AddState( AccessibleStateType::VISIBLE );
+ }
+
+ return pStateSet;
+ }
+
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleToolPanelDeckTabBarItem::getAccessibleAtPoint( const UnoPoint& i_rLocation ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ // we do not have children ...
+ (void)i_rLocation;
+ return NULL;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL AccessibleToolPanelDeckTabBarItem::grabFocus( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ m_pImpl->getTabBar()->FocusPanelItem( m_pImpl->getItemPos() );
+ }
+
+ //--------------------------------------------------------------------
+ ::sal_Int32 SAL_CALL AccessibleToolPanelDeckTabBarItem::getForeground( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ Reference< XAccessibleComponent > xParentComponent( m_pImpl->getParentAccessibleComponent(), UNO_SET_THROW );
+ return xParentComponent->getForeground();
+ }
+
+ //--------------------------------------------------------------------
+ ::sal_Int32 SAL_CALL AccessibleToolPanelDeckTabBarItem::getBackground( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ Reference< XAccessibleComponent > xParentComponent( m_pImpl->getParentAccessibleComponent(), UNO_SET_THROW );
+ return xParentComponent->getBackground();
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XFont > SAL_CALL AccessibleToolPanelDeckTabBarItem::getFont( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ Reference< XAccessibleExtendedComponent > xParentComponent( m_pImpl->getParentAccessibleComponent(), UNO_QUERY_THROW );
+ // TODO: strictly, this is not correct: The TabBar implementation of the TabLayouter might use
+ // a different font ...
+ return xParentComponent->getFont();
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleToolPanelDeckTabBarItem::getTitledBorderText( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ // no support
+ return ::rtl::OUString();
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleToolPanelDeckTabBarItem::getToolTipText( ) throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ return m_pImpl->getPanelDisplayName();
+ }
+
+ //--------------------------------------------------------------------
+ UnoRectangle SAL_CALL AccessibleToolPanelDeckTabBarItem::implGetBounds() throw (RuntimeException)
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+
+ const ::Rectangle aItemScreenRect( m_pImpl->getTabBar()->GetItemScreenRect( m_pImpl->getItemPos() ) );
+
+ Reference< XAccessibleComponent > xParentComponent( m_pImpl->getParentAccessibleComponent(), UNO_SET_THROW );
+ const UnoPoint aParentLocation( xParentComponent->getLocationOnScreen() );
+ return UnoRectangle(
+ aItemScreenRect.Left() - aParentLocation.X,
+ aItemScreenRect.Top() - aParentLocation.Y,
+ aItemScreenRect.GetWidth(),
+ aItemScreenRect.GetHeight()
+ );
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL AccessibleToolPanelDeckTabBarItem::disposing()
+ {
+ ItemMethodGuard aGuard( *m_pImpl );
+ m_pImpl->dispose();
+ }
+
+//......................................................................................................................
+} // namespace accessibility
+//......................................................................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessiblebrowseboxcell.cxx b/accessibility/source/extended/accessiblebrowseboxcell.cxx
new file mode 100644
index 000000000000..addbcaaa7cf8
--- /dev/null
+++ b/accessibility/source/extended/accessiblebrowseboxcell.cxx
@@ -0,0 +1,94 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/accessiblebrowseboxcell.hxx"
+#include <svtools/accessibletableprovider.hxx>
+
+// .................................................................................
+namespace accessibility
+{
+// .................................................................................
+
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::awt;
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::svt;
+
+ // =============================================================================
+ // = AccessibleBrowseBoxCell
+ // =============================================================================
+ DBG_NAME( svt_AccessibleBrowseBoxCell )
+ // -----------------------------------------------------------------------------
+ AccessibleBrowseBoxCell::AccessibleBrowseBoxCell(
+ const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox,
+ const Reference< XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos, sal_uInt16 _nColPos, AccessibleBrowseBoxObjType _eType )
+ :AccessibleBrowseBoxBase( _rxParent, _rBrowseBox, _xFocusWindow, _eType )
+ ,m_nRowPos( _nRowPos )
+ ,m_nColPos( _nColPos )
+ {
+ DBG_CTOR( svt_AccessibleBrowseBoxCell, NULL );
+ // set accessible name here, because for that we need the position of the cell
+ // and so the base class isn't capable of doing this
+ sal_Int32 nPos = _nRowPos * _rBrowseBox.GetColumnCount() + _nColPos;
+ ::rtl::OUString aAccName = _rBrowseBox.GetAccessibleObjectName( BBTYPE_TABLECELL, nPos );
+ implSetName( aAccName );
+ }
+
+ // -----------------------------------------------------------------------------
+ AccessibleBrowseBoxCell::~AccessibleBrowseBoxCell()
+ {
+ DBG_DTOR( svt_AccessibleBrowseBoxCell, NULL );
+ }
+
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleBrowseBoxCell::grabFocus() throw ( RuntimeException )
+ {
+ SolarMethodGuard aGuard( *this );
+ mpBrowseBox->GoToCell( m_nRowPos, m_nColPos );
+ }
+ // -----------------------------------------------------------------------------
+ ::Rectangle AccessibleBrowseBoxCell::implGetBoundingBox()
+ {
+ return mpBrowseBox->GetFieldRectPixelAbs( m_nRowPos, m_nColPos, FALSE, FALSE );
+ }
+
+ // -----------------------------------------------------------------------------
+ ::Rectangle AccessibleBrowseBoxCell::implGetBoundingBoxOnScreen()
+ {
+ return mpBrowseBox->GetFieldRectPixelAbs( m_nRowPos, m_nColPos, FALSE );
+ }
+
+// .................................................................................
+} // namespace accessibility
+// .................................................................................
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibleeditbrowseboxcell.cxx b/accessibility/source/extended/accessibleeditbrowseboxcell.cxx
new file mode 100644
index 000000000000..5312717034ee
--- /dev/null
+++ b/accessibility/source/extended/accessibleeditbrowseboxcell.cxx
@@ -0,0 +1,276 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/accessibleeditbrowseboxcell.hxx>
+#include <svtools/editbrowsebox.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/accessibility/XAccessibleText.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+
+
+// .................................................................................
+namespace accessibility
+{
+// .................................................................................
+
+ using namespace com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star::awt;
+ using namespace ::comphelper;
+ using namespace ::svt;
+
+ DBG_NAME( acc_EditBrowseBoxTableCell )
+ // -----------------------------------------------------------------------------
+ EditBrowseBoxTableCell::EditBrowseBoxTableCell(
+ const com::sun::star::uno::Reference< XAccessible >& _rxParent,
+ const com::sun::star::uno::Reference< XAccessible >& _rxOwningAccessible,
+ const com::sun::star::uno::Reference< XAccessibleContext >& _xControlChild,
+ IAccessibleTableProvider& _rBrowseBox,
+ const Reference< XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos)
+ :AccessibleBrowseBoxCell( _rxParent, _rBrowseBox, _xFocusWindow, _nRowPos, _nColPos )
+ ,OAccessibleContextWrapperHelper( ::comphelper::getProcessServiceFactory(), rBHelper, _xControlChild, _rxOwningAccessible, _rxParent )
+ {
+ DBG_CTOR( acc_EditBrowseBoxTableCell, NULL );
+
+ aggregateProxy( m_refCount, *this );
+ }
+
+ // -----------------------------------------------------------------------------
+ EditBrowseBoxTableCell::~EditBrowseBoxTableCell()
+ {
+ if ( !rBHelper.bDisposed )
+ {
+ acquire(); // to prevent duplicate dtor calls
+ dispose();
+ }
+
+ DBG_DTOR( acc_EditBrowseBoxTableCell, NULL );
+ }
+
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL EditBrowseBoxTableCell::getImplementationName() throw ( ::com::sun::star::uno::RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.TableCellProxy" ) );
+ }
+
+ // -----------------------------------------------------------------------------
+ IMPLEMENT_FORWARD_XINTERFACE2( EditBrowseBoxTableCell, AccessibleBrowseBoxCell, OAccessibleContextWrapperHelper )
+
+ // -----------------------------------------------------------------------------
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2( EditBrowseBoxTableCell, AccessibleBrowseBoxCell, OAccessibleContextWrapperHelper )
+
+ // -----------------------------------------------------------------------------
+ void EditBrowseBoxTableCell::notifyTranslatedEvent( const AccessibleEventObject& _rEvent ) throw (RuntimeException)
+ {
+ commitEvent( _rEvent.EventId, _rEvent.NewValue, _rEvent.OldValue );
+ }
+
+ // XAccessibleComponent
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL EditBrowseBoxTableCell::getForeground( ) throw (RuntimeException)
+ {
+ SolarMethodGuard aGuard( *this );
+ Reference< XAccessibleComponent > xAccComp( m_xInnerContext, UNO_QUERY );
+ if ( xAccComp.is() )
+ return xAccComp->getForeground();
+ return 0;
+ }
+
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL EditBrowseBoxTableCell::getBackground( ) throw (RuntimeException)
+ {
+ SolarMethodGuard aGuard( *this );
+ Reference< XAccessibleComponent > xAccComp( m_xInnerContext, UNO_QUERY );
+ if ( xAccComp.is() )
+ return xAccComp->getBackground();
+ return 0;
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL EditBrowseBoxTableCell::getAccessibleParent( ) throw (RuntimeException)
+ {
+ return m_xParentAccessible;
+ }
+
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL EditBrowseBoxTableCell::getAccessibleDescription() throw ( RuntimeException )
+ {
+ SolarMethodGuard aGuard( *this );
+ return m_xInnerContext->getAccessibleDescription();
+ }
+
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL EditBrowseBoxTableCell::getAccessibleName() throw ( RuntimeException )
+ {
+ SolarMethodGuard aGuard( *this );
+
+ // TODO: localize this!
+ String sName = mpBrowseBox->GetColumnDescription( ::sal::static_int_cast< sal_uInt16 >( getColumnPos() ) );
+ if ( 0 == sName.Len() )
+ {
+ sName = String::CreateFromAscii( "Column " );
+ sName += String::CreateFromInt32( getColumnPos( ) );
+ }
+
+ sName += String::CreateFromAscii( ", Row " );
+ sName += String::CreateFromInt32( getRowPos( ) );
+
+ return ::rtl::OUString( sName );
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleRelationSet > SAL_CALL EditBrowseBoxTableCell::getAccessibleRelationSet() throw ( RuntimeException )
+ {
+ SolarMethodGuard aGuard( *this );
+ return OAccessibleContextWrapperHelper::getAccessibleRelationSet( );
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference<XAccessibleStateSet > SAL_CALL EditBrowseBoxTableCell::getAccessibleStateSet() throw ( RuntimeException )
+ {
+ SolarMethodGuard aGuard( *this );
+ return m_xInnerContext->getAccessibleStateSet();
+ // TODO: shouldn't we add an ACTIVE here? Isn't the EditBrowseBoxTableCell always ACTIVE?
+ }
+
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL EditBrowseBoxTableCell::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ SolarMethodGuard aGuard( *this );
+ return OAccessibleContextWrapperHelper::getAccessibleChildCount();
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL EditBrowseBoxTableCell::getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMethodGuard aGuard( *this );
+ return OAccessibleContextWrapperHelper::getAccessibleChild( i );
+ }
+
+ // -----------------------------------------------------------------------------
+ sal_Int16 SAL_CALL EditBrowseBoxTableCell::getAccessibleRole() throw ( RuntimeException )
+ {
+ SolarMethodGuard aGuard( *this );
+ return m_xInnerContext->getAccessibleRole( );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL EditBrowseBoxTableCell::dispose() throw( RuntimeException )
+ {
+ // simply disambiguate. Note that the OComponentHelper base in AccessibleBrowseBoxCell
+ // will call our "disposing()", which will call "dispose()" on the OAccessibleContextWrapperHelper
+ // so there is no need to do this here.
+ AccessibleBrowseBoxCell::dispose();
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL EditBrowseBoxTableCell::disposing( const EventObject& _rSource ) throw (RuntimeException)
+ {
+ AccessibleBrowseBoxCell::disposing( _rSource );
+ OAccessibleContextWrapperHelper::disposing( _rSource );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL EditBrowseBoxTableCell::disposing()
+ {
+ SolarMethodGuard aGuard( *this, false );
+ OAccessibleContextWrapperHelper::dispose();
+ // TODO: do we need to dispose our inner object? The base class does this, but is it a good idea?
+ AccessibleBrowseBoxCell::disposing();
+ }
+ // =============================================================================
+ // = EditBrowseBoxTableCell
+ // =============================================================================
+ DBG_NAME( EditBrowseBoxTableCellAccess )
+ // -----------------------------------------------------------------------------
+ EditBrowseBoxTableCellAccess::EditBrowseBoxTableCellAccess(
+ const Reference< XAccessible >& _rxParent, const Reference< XAccessible > _rxControlAccessible,
+ const Reference< XWindow >& _rxFocusWindow,
+ IAccessibleTableProvider& _rBrowseBox, sal_Int32 _nRowPos, sal_uInt16 _nColPos )
+ :EditBrowseBoxTableCellAccess_Base( m_aMutex )
+ ,m_xParent( _rxParent )
+ ,m_xControlAccessible( _rxControlAccessible )
+ ,m_xFocusWindow( _rxFocusWindow )
+ ,m_pBrowseBox( &_rBrowseBox )
+ ,m_nRowPos( _nRowPos )
+ ,m_nColPos( _nColPos )
+ {
+ DBG_CTOR( EditBrowseBoxTableCellAccess, NULL );
+ }
+ // -----------------------------------------------------------------------------
+ EditBrowseBoxTableCellAccess::~EditBrowseBoxTableCellAccess( )
+ {
+ DBG_DTOR( EditBrowseBoxTableCellAccess, NULL );
+ }
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > SAL_CALL EditBrowseBoxTableCellAccess::getAccessibleContext( ) throw (RuntimeException)
+ {
+ if ( !m_pBrowseBox || !m_xControlAccessible.is() )
+ throw DisposedException();
+ Reference< XAccessibleContext > xMyContext( m_aContext );
+ if ( !xMyContext.is() )
+ {
+ Reference< XAccessibleContext > xInnerContext = m_xControlAccessible->getAccessibleContext();
+ Reference< XAccessible > xMe( this );
+
+ xMyContext = new EditBrowseBoxTableCell( m_xParent, xMe, xInnerContext, *m_pBrowseBox, m_xFocusWindow, m_nRowPos, m_nColPos );
+ m_aContext = xMyContext;
+ }
+ return xMyContext;
+ }
+ //--------------------------------------------------------------------
+ void SAL_CALL EditBrowseBoxTableCellAccess::disposing()
+ {
+ // dispose our context, if it still alive
+ Reference< XComponent > xMyContext( (Reference< XAccessibleContext >)m_aContext, UNO_QUERY );
+ if ( xMyContext.is() )
+ {
+ try
+ {
+ xMyContext->dispose();
+ }
+ catch( const Exception& e )
+ {
+ (void)e;
+ OSL_ENSURE( false, "EditBrowseBoxTableCellAccess::disposing: caught an exception while disposing the context!" );
+ }
+ }
+
+ m_pBrowseBox = NULL;
+ m_xControlAccessible.clear();
+ m_aContext = Reference< XAccessibleContext >( );
+ // NO dispose of the inner object there: it is the XAccessible of an window, and disposing
+ // it would delete the respective VCL window
+ }
+// .................................................................................
+} // namespace accessibility
+// .................................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibleiconchoicectrl.cxx b/accessibility/source/extended/accessibleiconchoicectrl.cxx
new file mode 100644
index 000000000000..dddb38fcbea1
--- /dev/null
+++ b/accessibility/source/extended/accessibleiconchoicectrl.cxx
@@ -0,0 +1,374 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/accessibleiconchoicectrl.hxx"
+#include "accessibility/extended/accessibleiconchoicectrlentry.hxx"
+#include <svtools/ivctrl.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <cppuhelper/typeprovider.hxx>
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ // class AccessibleIconChoiceCtrl ----------------------------------------------
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+
+ DBG_NAME(AccessibleIconChoiceCtrl)
+
+ // -----------------------------------------------------------------------------
+ // Ctor() and Dtor()
+ // -----------------------------------------------------------------------------
+ AccessibleIconChoiceCtrl::AccessibleIconChoiceCtrl( SvtIconChoiceCtrl& _rIconCtrl, const Reference< XAccessible >& _xParent ) :
+
+ VCLXAccessibleComponent( _rIconCtrl.GetWindowPeer() ),
+ m_xParent ( _xParent )
+ {
+ DBG_CTOR( AccessibleIconChoiceCtrl, NULL );
+ }
+ // -----------------------------------------------------------------------------
+ AccessibleIconChoiceCtrl::~AccessibleIconChoiceCtrl()
+ {
+ DBG_DTOR( AccessibleIconChoiceCtrl, NULL );
+ }
+ // -----------------------------------------------------------------------------
+ IMPLEMENT_FORWARD_XINTERFACE2(AccessibleIconChoiceCtrl, VCLXAccessibleComponent, AccessibleIconChoiceCtrl_BASE)
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2(AccessibleIconChoiceCtrl, VCLXAccessibleComponent, AccessibleIconChoiceCtrl_BASE)
+ // -----------------------------------------------------------------------------
+ void AccessibleIconChoiceCtrl::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+ {
+ if ( isAlive() )
+ {
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_LISTBOX_SELECT :
+ {
+ // First send an event that tells the listeners of a
+ // modified selection. The active descendant event is
+ // send after that so that the receiving AT has time to
+ // read the text or name of the active child.
+ NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ if ( pCtrl && pCtrl->HasFocus() )
+ {
+ SvxIconChoiceCtrlEntry* pEntry = static_cast< SvxIconChoiceCtrlEntry* >( rVclWindowEvent.GetData() );
+ if ( pEntry )
+ {
+ ULONG nPos = pCtrl->GetEntryListPos( pEntry );
+ Reference< XAccessible > xChild = new AccessibleIconChoiceCtrlEntry( *pCtrl, nPos, this );
+ uno::Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+ }
+ }
+ break;
+ }
+ default:
+ VCLXAccessibleComponent::ProcessWindowChildEvent (rVclWindowEvent);
+ }
+ }
+ }
+ // -----------------------------------------------------------------------------
+ // XComponent
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrl::disposing()
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ m_xParent = NULL;
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrl::getImplementationName() throw (RuntimeException)
+ {
+ return getImplementationName_Static();
+ }
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > SAL_CALL AccessibleIconChoiceCtrl::getSupportedServiceNames() throw (RuntimeException)
+ {
+ return getSupportedServiceNames_Static();
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrl::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aSupported( getSupportedServiceNames() );
+ const ::rtl::OUString* pSupported = aSupported.getConstArray();
+ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength();
+ for ( ; pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported )
+ ;
+
+ return pSupported != pEnd;
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo - static methods
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > AccessibleIconChoiceCtrl::getSupportedServiceNames_Static(void) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aSupported(3);
+ aSupported[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleContext") );
+ aSupported[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleComponent") );
+ aSupported[2] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.AccessibleIconChoiceControl") );
+ return aSupported;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString AccessibleIconChoiceCtrl::getImplementationName_Static(void) throw (RuntimeException)
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.svtools.AccessibleIconChoiceControl") );
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessible
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleContext > SAL_CALL AccessibleIconChoiceCtrl::getAccessibleContext( ) throw (RuntimeException)
+ {
+ ensureAlive();
+ return this;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrl::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+ return getCtrl()->GetEntryCount();
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleIconChoiceCtrl::getAccessibleChild( sal_Int32 i ) throw (RuntimeException, IndexOutOfBoundsException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ SvxIconChoiceCtrlEntry* pEntry = pCtrl->GetEntry(i);
+ if ( !pEntry )
+ throw RuntimeException();
+
+ return new AccessibleIconChoiceCtrlEntry( *pCtrl, i, this );
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleIconChoiceCtrl::getAccessibleParent( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ ensureAlive();
+ return m_xParent;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int16 SAL_CALL AccessibleIconChoiceCtrl::getAccessibleRole( ) throw (RuntimeException)
+ {
+ return AccessibleRole::TREE;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrl::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+ return getCtrl()->GetAccessibleDescription();
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrl::getAccessibleName( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ ::rtl::OUString sName = getCtrl()->GetAccessibleName();
+ if ( sName.getLength() == 0 )
+ sName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IconChoiceControl" ) );
+ return sName;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleSelection
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrl::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ SvxIconChoiceCtrlEntry* pEntry = pCtrl->GetEntry( nChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ pCtrl->SetCursor( pEntry );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrl::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ SvxIconChoiceCtrlEntry* pEntry = pCtrl->GetEntry( nChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ return ( pCtrl->GetCursor() == pEntry );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrl::clearAccessibleSelection( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+ getCtrl()->SetNoSelection();
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrl::selectAllAccessibleChildren( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ sal_Int32 i, nCount = 0;
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ nCount = pCtrl->GetEntryCount();
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvxIconChoiceCtrlEntry* pEntry = pCtrl->GetEntry( i );
+ if ( pCtrl->GetCursor() != pEntry )
+ pCtrl->SetCursor( pEntry );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrl::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ sal_Int32 i, nSelCount = 0, nCount = 0;
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ nCount = pCtrl->GetEntryCount();
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvxIconChoiceCtrlEntry* pEntry = pCtrl->GetEntry( i );
+ if ( pCtrl->GetCursor() == pEntry )
+ ++nSelCount;
+ }
+
+ return nSelCount;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleIconChoiceCtrl::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 i, nSelCount = 0, nCount = 0;
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ nCount = pCtrl->GetEntryCount();
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvxIconChoiceCtrlEntry* pEntry = pCtrl->GetEntry( i );
+ if ( pCtrl->GetCursor() == pEntry )
+ ++nSelCount;
+
+ if ( nSelCount == ( nSelectedChildIndex + 1 ) )
+ {
+ xChild = new AccessibleIconChoiceCtrlEntry( *pCtrl, i, this );
+ break;
+ }
+ }
+
+ return xChild;
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrl::deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 i, nSelCount = 0, nCount = 0;
+ SvtIconChoiceCtrl* pCtrl = getCtrl();
+ nCount = pCtrl->GetEntryCount();
+ bool bFound = false;
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvxIconChoiceCtrlEntry* pEntry = pCtrl->GetEntry( i );
+ if ( pEntry->IsSelected() )
+ {
+ ++nSelCount;
+ if ( i == nSelectedChildIndex )
+ bFound = true;
+ }
+ }
+
+ // if only one entry is selected and its index is choosen to deselect -> no selection anymore
+ if ( 1 == nSelCount && bFound )
+ pCtrl->SetNoSelection();
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleIconChoiceCtrl::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+ {
+ VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
+ if ( isAlive() )
+ {
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ rStateSet.AddState( AccessibleStateType::MANAGES_DESCENDANTS );
+ rStateSet.AddState( AccessibleStateType::SELECTABLE );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ SvtIconChoiceCtrl* AccessibleIconChoiceCtrl::getCtrl()
+ {
+ return static_cast<SvtIconChoiceCtrl*>(GetWindow());
+ }
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibleiconchoicectrlentry.cxx b/accessibility/source/extended/accessibleiconchoicectrlentry.cxx
new file mode 100644
index 000000000000..2a4b90affd54
--- /dev/null
+++ b/accessibility/source/extended/accessibleiconchoicectrlentry.cxx
@@ -0,0 +1,749 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/accessibleiconchoicectrlentry.hxx>
+#include <svtools/ivctrl.hxx>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/controllayout.hxx>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <svtools/stringtransfer.hxx>
+#include <comphelper/accessibleeventnotifier.hxx>
+
+#define ACCESSIBLE_ACTION_COUNT 1
+#define AID_EXPAND 0
+#define AID_COLLAPSE 1
+
+namespace
+{
+ void checkActionIndex_Impl( sal_Int32 _nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException)
+ {
+ if ( _nIndex < 0 || _nIndex >= ACCESSIBLE_ACTION_COUNT )
+ // only three actions
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+}
+
+//........................................................................
+namespace accessibility
+{
+
+ // class AccessibleIconChoiceCtrlEntry -----------------------------------------------------
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+
+ DBG_NAME(AccessibleIconChoiceCtrlEntry)
+
+ // -----------------------------------------------------------------------------
+ // Ctor() and Dtor()
+ // -----------------------------------------------------------------------------
+ AccessibleIconChoiceCtrlEntry::AccessibleIconChoiceCtrlEntry( SvtIconChoiceCtrl& _rIconCtrl,
+ ULONG _nPos,
+ const Reference< XAccessible >& _xParent ) :
+
+ AccessibleIconChoiceCtrlEntry_BASE ( m_aMutex ),
+
+ m_pIconCtrl ( &_rIconCtrl ),
+ m_nIndex ( _nPos ),
+ m_nClientId ( 0 ),
+ m_xParent ( _xParent )
+
+ {
+ osl_incrementInterlockedCount( &m_refCount );
+ {
+ Reference< XComponent > xComp( m_xParent, UNO_QUERY );
+ if ( xComp.is() )
+ xComp->addEventListener( this );
+ }
+ osl_decrementInterlockedCount( &m_refCount );
+
+ DBG_CTOR( AccessibleIconChoiceCtrlEntry, NULL );
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleIconChoiceCtrlEntry::disposing( const EventObject& _rSource )
+throw(RuntimeException)
+ {
+ if ( _rSource.Source == m_xParent )
+ {
+ dispose();
+ DBG_ASSERT( !m_xParent.is() && ( NULL == m_pIconCtrl ), "" );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ AccessibleIconChoiceCtrlEntry::~AccessibleIconChoiceCtrlEntry()
+ {
+ DBG_DTOR( AccessibleIconChoiceCtrlEntry, NULL );
+
+ if ( IsAlive_Impl() )
+ {
+ // increment ref count to prevent double call of Dtor
+ osl_incrementInterlockedCount( &m_refCount );
+ dispose();
+ }
+ }
+ #ifdef ACCESSIBLE_EVENT_NOTIFICATION_ENABLED
+ // (the following method is unused currently. If you need it, simply remove the #ifdef thing here and
+ // in the hxx)
+ // -----------------------------------------------------------------------------
+ void AccessibleIconChoiceCtrlEntry::NotifyAccessibleEvent( sal_Int16 _nEventId,
+ const ::com::sun::star::uno::Any& _aOldValue,
+ const ::com::sun::star::uno::Any& _aNewValue )
+ {
+ Reference< uno::XInterface > xSource( *this );
+ AccessibleEventObject aEventObj( xSource, _nEventId, _aNewValue, _aOldValue );
+
+ if (m_nClientId)
+ comphelper::AccessibleEventNotifier::addEvent( m_nClientId, aEventObj );
+ }
+ #endif
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleIconChoiceCtrlEntry::GetBoundingBox_Impl() const
+ {
+ Rectangle aRect;
+ SvxIconChoiceCtrlEntry* pEntry = m_pIconCtrl->GetEntry( m_nIndex );
+ if ( pEntry )
+ aRect = m_pIconCtrl->GetBoundingBox( pEntry );
+
+ return aRect;
+ }
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleIconChoiceCtrlEntry::GetBoundingBoxOnScreen_Impl() const
+ {
+ Rectangle aRect;
+ SvxIconChoiceCtrlEntry* pEntry = m_pIconCtrl->GetEntry( m_nIndex );
+ if ( pEntry )
+ {
+ aRect = m_pIconCtrl->GetBoundingBox( pEntry );
+ Point aTopLeft = aRect.TopLeft();
+ aTopLeft += m_pIconCtrl->GetWindowExtentsRelative( NULL ).TopLeft();
+ aRect = Rectangle( aTopLeft, aRect.GetSize() );
+ }
+
+ return aRect;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool AccessibleIconChoiceCtrlEntry::IsAlive_Impl() const
+ {
+ return ( !rBHelper.bDisposed && !rBHelper.bInDispose && m_pIconCtrl );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool AccessibleIconChoiceCtrlEntry::IsShowing_Impl() const
+ {
+ sal_Bool bShowing = sal_False;
+ Reference< XAccessibleContext > m_xParentContext =
+ m_xParent.is() ? m_xParent->getAccessibleContext() : Reference< XAccessibleContext >();
+ if( m_xParentContext.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( m_xParentContext, uno::UNO_QUERY );
+ if( xParentComp.is() )
+ bShowing = GetBoundingBox_Impl().IsOver( VCLRectangle( xParentComp->getBounds() ) );
+ }
+
+ return bShowing;
+ }
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleIconChoiceCtrlEntry::GetBoundingBox() throw ( lang::DisposedException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ return GetBoundingBox_Impl();
+ }
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleIconChoiceCtrlEntry::GetBoundingBoxOnScreen() throw ( lang::DisposedException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ return GetBoundingBoxOnScreen_Impl();
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleIconChoiceCtrlEntry::EnsureIsAlive() const throw ( lang::DisposedException )
+ {
+ if ( !IsAlive_Impl() )
+ throw lang::DisposedException();
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString AccessibleIconChoiceCtrlEntry::implGetText()
+ {
+ ::rtl::OUString sRet;
+ SvxIconChoiceCtrlEntry* pEntry = m_pIconCtrl->GetEntry( m_nIndex );
+ if ( pEntry )
+ sRet = pEntry->GetDisplayText();
+ return sRet;
+ }
+ // -----------------------------------------------------------------------------
+ Locale AccessibleIconChoiceCtrlEntry::implGetLocale()
+ {
+ Locale aLocale;
+ aLocale = Application::GetSettings().GetUILocale();
+
+ return aLocale;
+ }
+ void AccessibleIconChoiceCtrlEntry::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+ {
+ nStartIndex = 0;
+ nEndIndex = 0;
+ }
+ // -----------------------------------------------------------------------------
+ // XTypeProvider
+ // -----------------------------------------------------------------------------
+ // -----------------------------------------------------------------------------
+ Sequence< sal_Int8 > AccessibleIconChoiceCtrlEntry::getImplementationId() throw (RuntimeException)
+ {
+ static ::cppu::OImplementationId* pId = NULL;
+
+ if ( !pId )
+ {
+ ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex );
+
+ if ( !pId )
+ {
+ static ::cppu::OImplementationId aId;
+ pId = &aId;
+ }
+ }
+ return pId->getImplementationId();
+ }
+ // -----------------------------------------------------------------------------
+ // XComponent
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrlEntry::disposing()
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ // Send a disposing to all listeners.
+ if ( m_nClientId )
+ {
+ sal_uInt32 nId = m_nClientId;
+ m_nClientId = 0;
+ comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nId, *this );
+ }
+
+ Reference< XComponent > xComp( m_xParent, UNO_QUERY );
+ if ( xComp.is() )
+ xComp->removeEventListener( this );
+
+ m_pIconCtrl = NULL;
+ m_xParent = NULL;
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getImplementationName() throw(RuntimeException)
+ {
+ return getImplementationName_Static();
+ }
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > SAL_CALL AccessibleIconChoiceCtrlEntry::getSupportedServiceNames() throw(RuntimeException)
+ {
+ return getSupportedServiceNames_Static();
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrlEntry::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aSupported( getSupportedServiceNames() );
+ const ::rtl::OUString* pSupported = aSupported.getConstArray();
+ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength();
+ for ( ; pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported )
+ ;
+
+ return pSupported != pEnd;
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo - static methods
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > AccessibleIconChoiceCtrlEntry::getSupportedServiceNames_Static(void) throw( RuntimeException )
+ {
+ Sequence< ::rtl::OUString > aSupported(3);
+ aSupported[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleContext") );
+ aSupported[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleComponent") );
+ aSupported[2] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.AccessibleIconChoiceControlEntry") );
+ return aSupported;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString AccessibleIconChoiceCtrlEntry::getImplementationName_Static(void) throw( RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.svtools.AccessibleIconChoiceControlEntry") );
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessible
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleContext > SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleContext( ) throw (RuntimeException)
+ {
+ EnsureIsAlive();
+ return this;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ return 0; // no children
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleChild( sal_Int32 ) throw (IndexOutOfBoundsException,RuntimeException)
+ {
+ throw IndexOutOfBoundsException();
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleParent( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ return m_xParent;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleIndexInParent( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return m_nIndex;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int16 SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleRole( ) throw (RuntimeException)
+ {
+ return AccessibleRole::LABEL;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ // no description for every item
+ return ::rtl::OUString();
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleName( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ return implGetText();
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleRelationSet > SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleRelationSet( ) throw (RuntimeException)
+ {
+ return new utl::AccessibleRelationSetHelper;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleStateSet > SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleStateSet( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xStateSet = pStateSetHelper;
+
+ if ( IsAlive_Impl() )
+ {
+ pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
+ pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
+ pStateSetHelper->AddState( AccessibleStateType::ENABLED );
+ pStateSetHelper->AddState( AccessibleStateType::SENSITIVE );
+ if ( IsShowing_Impl() )
+ {
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+ pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
+ }
+
+ if ( m_pIconCtrl && m_pIconCtrl->GetCursor() == m_pIconCtrl->GetEntry( m_nIndex ) )
+ pStateSetHelper->AddState( AccessibleStateType::SELECTED );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return xStateSet;
+ }
+ // -----------------------------------------------------------------------------
+ Locale SAL_CALL AccessibleIconChoiceCtrlEntry::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return implGetLocale();
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleComponent
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrlEntry::containsPoint( const awt::Point& rPoint ) throw (RuntimeException)
+ {
+ return Rectangle( Point(), GetBoundingBox().GetSize() ).IsInside( VCLPoint( rPoint ) );
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
+ {
+ return Reference< XAccessible >();
+ }
+ // -----------------------------------------------------------------------------
+ awt::Rectangle SAL_CALL AccessibleIconChoiceCtrlEntry::getBounds( ) throw (RuntimeException)
+ {
+ return AWTRectangle( GetBoundingBox() );
+ }
+ // -----------------------------------------------------------------------------
+ awt::Point SAL_CALL AccessibleIconChoiceCtrlEntry::getLocation( ) throw (RuntimeException)
+ {
+ return AWTPoint( GetBoundingBox().TopLeft() );
+ }
+ // -----------------------------------------------------------------------------
+ awt::Point SAL_CALL AccessibleIconChoiceCtrlEntry::getLocationOnScreen( ) throw (RuntimeException)
+ {
+ return AWTPoint( GetBoundingBoxOnScreen().TopLeft() );
+ }
+ // -----------------------------------------------------------------------------
+ awt::Size SAL_CALL AccessibleIconChoiceCtrlEntry::getSize( ) throw (RuntimeException)
+ {
+ return AWTSize( GetBoundingBox().GetSize() );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrlEntry::grabFocus( ) throw (RuntimeException)
+ {
+ // do nothing, because no focus for each item
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 AccessibleIconChoiceCtrlEntry::getForeground( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getForeground();
+ }
+
+ return nColor;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 AccessibleIconChoiceCtrlEntry::getBackground( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getBackground();
+ }
+
+ return nColor;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleText
+ // -----------------------------------------------------------------------------
+ // -----------------------------------------------------------------------------
+ awt::Rectangle SAL_CALL AccessibleIconChoiceCtrlEntry::getCharacterBounds( sal_Int32 _nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ if ( ( 0 > _nIndex ) || ( getCharacterCount() <= _nIndex ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( m_pIconCtrl )
+ {
+ Rectangle aItemRect = GetBoundingBox_Impl();
+ Rectangle aCharRect = m_pIconCtrl->GetEntryCharacterBounds( m_nIndex, _nIndex );
+ aCharRect.Move( -aItemRect.Left(), -aItemRect.Top() );
+ aBounds = AWTRectangle( aCharRect );
+ }
+
+ return aBounds;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nIndex = -1;
+ if ( m_pIconCtrl )
+ {
+ ::vcl::ControlLayoutData aLayoutData;
+ Rectangle aItemRect = GetBoundingBox_Impl();
+ m_pIconCtrl->RecordLayoutData( &aLayoutData, aItemRect );
+ Point aPnt( VCLPoint( aPoint ) );
+ aPnt += aItemRect.TopLeft();
+ nIndex = aLayoutData.GetIndexForPoint( aPnt );
+
+ long nLen = aLayoutData.m_aUnicodeBoundRects.size();
+ for ( long i = 0; i < nLen; ++i )
+ {
+ Rectangle aRect = aLayoutData.GetCharacterBounds(i);
+ BOOL bInside = aRect.IsInside( aPnt );
+
+ if ( bInside )
+ break;
+ }
+ }
+
+ return nIndex;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrlEntry::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ String sText = getText();
+ if ( ( 0 > nStartIndex ) || ( sText.Len() <= nStartIndex )
+ || ( 0 > nEndIndex ) || ( sText.Len() <= nEndIndex ) )
+ throw IndexOutOfBoundsException();
+
+ sal_Int32 nLen = nEndIndex - nStartIndex + 1;
+ ::svt::OStringTransfer::CopyString( sText.Copy( (USHORT)nStartIndex, (USHORT)nLen ), m_pIconCtrl );
+
+ return sal_True;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleEventBroadcaster
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrlEntry::addEventListener( const Reference< XAccessibleEventListener >& xListener ) throw (RuntimeException)
+ {
+ if (xListener.is())
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+ if (!m_nClientId)
+ m_nClientId = comphelper::AccessibleEventNotifier::registerClient( );
+ comphelper::AccessibleEventNotifier::addEventListener( m_nClientId, xListener );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleIconChoiceCtrlEntry::removeEventListener( const Reference< XAccessibleEventListener >& xListener ) throw (RuntimeException)
+ {
+ if (xListener.is())
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, xListener );
+ if ( !nListenerCount )
+ {
+ // no listeners anymore
+ // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+ // and at least to us not firing any events anymore, in case somebody calls
+ // NotifyAccessibleEvent, again
+ sal_Int32 nId = m_nClientId;
+ m_nClientId = 0;
+ comphelper::AccessibleEventNotifier::revokeClient( nId );
+ }
+ }
+ }
+
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getCaretPosition( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ return -1;
+ }
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrlEntry::setCaretPosition ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ sal_Unicode SAL_CALL AccessibleIconChoiceCtrlEntry::getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getCharacter( nIndex );
+ }
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL AccessibleIconChoiceCtrlEntry::getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >();
+ }
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getCharacterCount( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getCharacterCount( );
+ }
+
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getSelectedText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getSelectedText( );
+ }
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getSelectionStart( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getSelectionStart( );
+ }
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getSelectionEnd( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getSelectionEnd( );
+ }
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrlEntry::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getText( );
+ }
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex );
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleIconChoiceCtrlEntry::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getTextAtIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleIconChoiceCtrlEntry::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getTextBeforeIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleIconChoiceCtrlEntry::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ return OCommonAccessibleText::getTextBehindIndex( nIndex ,aTextType);
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleAction
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleActionCount( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ // three actions supported
+ return ACCESSIBLE_ACTION_COUNT;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleIconChoiceCtrlEntry::doAccessibleAction( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Bool bRet = sal_False;
+ checkActionIndex_Impl( nIndex );
+ EnsureIsAlive();
+
+ SvxIconChoiceCtrlEntry* pEntry = m_pIconCtrl->GetEntry( m_nIndex );
+ if ( pEntry && !pEntry->IsSelected() )
+ {
+ m_pIconCtrl->SetNoSelection();
+ m_pIconCtrl->SetCursor( pEntry );
+ bRet = sal_True;
+ }
+
+ return bRet;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleActionDescription( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ checkActionIndex_Impl( nIndex );
+ EnsureIsAlive();
+
+ static const ::rtl::OUString sActionDesc( RTL_CONSTASCII_USTRINGPARAM( "Select" ) );
+ return sActionDesc;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleKeyBinding > AccessibleIconChoiceCtrlEntry::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ Reference< XAccessibleKeyBinding > xRet;
+ checkActionIndex_Impl( nIndex );
+ // ... which key?
+ return xRet;
+ }
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessiblelistbox.cxx b/accessibility/source/extended/accessiblelistbox.cxx
new file mode 100644
index 000000000000..95e52056e1da
--- /dev/null
+++ b/accessibility/source/extended/accessiblelistbox.cxx
@@ -0,0 +1,434 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/accessiblelistbox.hxx>
+#include <accessibility/extended/accessiblelistboxentry.hxx>
+#include <svtools/svtreebx.hxx>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ // class AccessibleListBox -----------------------------------------------------
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+
+ DBG_NAME(AccessibleListBox)
+
+ // -----------------------------------------------------------------------------
+ // Ctor() and Dtor()
+ // -----------------------------------------------------------------------------
+ AccessibleListBox::AccessibleListBox( SvTreeListBox& _rListBox, const Reference< XAccessible >& _xParent ) :
+
+ VCLXAccessibleComponent( _rListBox.GetWindowPeer() ),
+ m_xParent( _xParent )
+ {
+ DBG_CTOR( AccessibleListBox, NULL );
+ }
+ // -----------------------------------------------------------------------------
+ AccessibleListBox::~AccessibleListBox()
+ {
+ DBG_DTOR( AccessibleListBox, NULL );
+ if ( isAlive() )
+ {
+ // increment ref count to prevent double call of Dtor
+ osl_incrementInterlockedCount( &m_refCount );
+ dispose();
+ }
+ }
+ IMPLEMENT_FORWARD_XINTERFACE2(AccessibleListBox, VCLXAccessibleComponent, AccessibleListBox_BASE)
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2(AccessibleListBox, VCLXAccessibleComponent, AccessibleListBox_BASE)
+ // -----------------------------------------------------------------------------
+ SvTreeListBox* AccessibleListBox::getListBox() const
+ {
+ return static_cast< SvTreeListBox* >( const_cast<AccessibleListBox*>(this)->GetWindow() );
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleListBox::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+ {
+ if ( isAlive() )
+ {
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_CHECKBOX_TOGGLE :
+ {
+ if ( getListBox() && getListBox()->HasFocus() )
+ {
+ SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+ if ( !pEntry )
+ pEntry = getListBox()->GetCurEntry();
+
+ if ( pEntry )
+ {
+ Reference< XAccessible > xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ uno::Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+ }
+ }
+ break;
+ }
+
+ case VCLEVENT_LISTBOX_SELECT :
+ {
+ // First send an event that tells the listeners of a
+ // modified selection. The active descendant event is
+ // send after that so that the receiving AT has time to
+ // read the text or name of the active child.
+ NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+ if ( getListBox() && getListBox()->HasFocus() )
+ {
+ SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+ if ( pEntry )
+ {
+ Reference< XAccessible > xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ uno::Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+ }
+ }
+ break;
+
+ // #i92103#
+ case VCLEVENT_ITEM_EXPANDED :
+ case VCLEVENT_ITEM_COLLAPSED :
+ {
+ SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+ if ( pEntry )
+ {
+ AccessibleListBoxEntry* pAccListBoxEntry =
+ new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ Reference< XAccessible > xChild = pAccListBoxEntry;
+ const short nAccEvent =
+ ( rVclWindowEvent.GetId() == VCLEVENT_ITEM_EXPANDED )
+ ? AccessibleEventId::LISTBOX_ENTRY_EXPANDED
+ : AccessibleEventId::LISTBOX_ENTRY_COLLAPSED;
+ uno::Any aListBoxEntry;
+ aListBoxEntry <<= xChild;
+ NotifyAccessibleEvent( nAccEvent, Any(), aListBoxEntry );
+ if ( getListBox() && getListBox()->HasFocus() )
+ {
+ NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, Any(), aListBoxEntry );
+ }
+ }
+ break;
+ }
+ // <--
+ }
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent (rVclWindowEvent);
+ }
+ }
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleListBox::ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent )
+ {
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_SHOW:
+ case VCLEVENT_WINDOW_HIDE:
+ {
+ }
+ break;
+ default:
+ {
+ VCLXAccessibleComponent::ProcessWindowChildEvent( rVclWindowEvent );
+ }
+ break;
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+ // XComponent
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBox::disposing()
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ VCLXAccessibleComponent::disposing();
+ m_xParent = NULL;
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleListBox::getImplementationName() throw(RuntimeException)
+ {
+ return getImplementationName_Static();
+ }
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > SAL_CALL AccessibleListBox::getSupportedServiceNames() throw(RuntimeException)
+ {
+ return getSupportedServiceNames_Static();
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleListBox::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aSupported( getSupportedServiceNames() );
+ const ::rtl::OUString* pSupported = aSupported.getConstArray();
+ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength();
+ for ( ; pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported )
+ ;
+
+ return pSupported != pEnd;
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo - static methods
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > AccessibleListBox::getSupportedServiceNames_Static(void) throw( RuntimeException )
+ {
+ Sequence< ::rtl::OUString > aSupported(3);
+ aSupported[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleContext") );
+ aSupported[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleComponent") );
+ aSupported[2] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.AccessibleTreeListBox") );
+ return aSupported;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString AccessibleListBox::getImplementationName_Static(void) throw( RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.svtools.AccessibleTreeListBox") );
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessible
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleContext > SAL_CALL AccessibleListBox::getAccessibleContext( ) throw (RuntimeException)
+ {
+ ensureAlive();
+ return this;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleListBox::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ sal_Int32 nCount = 0;
+ SvTreeListBox* pSvTreeListBox = getListBox();
+ if ( pSvTreeListBox )
+ nCount = pSvTreeListBox->GetLevelChildCount( NULL );
+
+ return nCount;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleListBox::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException,RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+ SvLBoxEntry* pEntry = getListBox()->GetEntry(i);
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ return new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleListBox::getAccessibleParent( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ ensureAlive();
+ return m_xParent;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int16 SAL_CALL AccessibleListBox::getAccessibleRole( ) throw (RuntimeException)
+ {
+ return AccessibleRole::TREE;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleListBox::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+ return getListBox()->GetAccessibleDescription();
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleListBox::getAccessibleName( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+ return getListBox()->GetAccessibleName();
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleSelection
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBox::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( nChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ getListBox()->Select( pEntry, TRUE );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleListBox::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( nChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ return getListBox()->IsSelected( pEntry );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBox::clearAccessibleSelection( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ sal_Int32 i, nCount = 0;
+ nCount = getListBox()->GetLevelChildCount( NULL );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( i );
+ if ( getListBox()->IsSelected( pEntry ) )
+ getListBox()->Select( pEntry, FALSE );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBox::selectAllAccessibleChildren( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ sal_Int32 i, nCount = 0;
+ nCount = getListBox()->GetLevelChildCount( NULL );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( i );
+ if ( !getListBox()->IsSelected( pEntry ) )
+ getListBox()->Select( pEntry, TRUE );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleListBox::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ sal_Int32 i, nSelCount = 0, nCount = 0;
+ nCount = getListBox()->GetLevelChildCount( NULL );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( i );
+ if ( getListBox()->IsSelected( pEntry ) )
+ ++nSelCount;
+ }
+
+ return nSelCount;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleListBox::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 i, nSelCount = 0, nCount = 0;
+ nCount = getListBox()->GetLevelChildCount( NULL );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( i );
+ if ( getListBox()->IsSelected( pEntry ) )
+ ++nSelCount;
+
+ if ( nSelCount == ( nSelectedChildIndex + 1 ) )
+ {
+ xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ break;
+ }
+ }
+
+ return xChild;
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBox::deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::comphelper::OExternalLockGuard aGuard( this );
+
+ ensureAlive();
+
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( nSelectedChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ getListBox()->Select( pEntry, FALSE );
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleListBox::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+ {
+ VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
+ if ( getListBox() && isAlive() )
+ {
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ rStateSet.AddState( AccessibleStateType::MANAGES_DESCENDANTS );
+ if ( getListBox()->GetSelectionMode() == MULTIPLE_SELECTION )
+ rStateSet.AddState( AccessibleStateType::MULTI_SELECTABLE );
+ }
+ }
+
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessiblelistboxentry.cxx b/accessibility/source/extended/accessiblelistboxentry.cxx
new file mode 100644
index 000000000000..71c52a90b1db
--- /dev/null
+++ b/accessibility/source/extended/accessiblelistboxentry.cxx
@@ -0,0 +1,962 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/accessiblelistboxentry.hxx"
+#include <svtools/svtreebx.hxx>
+#include <svtools/stringtransfer.hxx>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/controllayout.hxx>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/accessibleeventnotifier.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+
+#define ACCESSIBLE_ACTION_COUNT 1
+
+namespace
+{
+ void checkActionIndex_Impl( sal_Int32 _nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException)
+ {
+ if ( _nIndex < 0 || _nIndex >= ACCESSIBLE_ACTION_COUNT )
+ // only three actions
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+}
+
+//........................................................................
+namespace accessibility
+{
+ // class AccessibleListBoxEntry -----------------------------------------------------
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+
+ DBG_NAME(AccessibleListBoxEntry)
+
+ // -----------------------------------------------------------------------------
+ // Ctor() and Dtor()
+ // -----------------------------------------------------------------------------
+ AccessibleListBoxEntry::AccessibleListBoxEntry( SvTreeListBox& _rListBox,
+ SvLBoxEntry* _pEntry,
+ const Reference< XAccessible >& _xParent ) :
+
+ AccessibleListBoxEntry_BASE ( m_aMutex ),
+ ListBoxAccessibleBase( _rListBox ),
+
+ m_nClientId ( 0 ),
+ m_aParent ( _xParent )
+
+ {
+ DBG_CTOR( AccessibleListBoxEntry, NULL );
+
+ _rListBox.FillEntryPath( _pEntry, m_aEntryPath );
+ }
+ // -----------------------------------------------------------------------------
+ AccessibleListBoxEntry::~AccessibleListBoxEntry()
+ {
+ DBG_DTOR( AccessibleListBoxEntry, NULL );
+
+ if ( IsAlive_Impl() )
+ {
+ // increment ref count to prevent double call of Dtor
+ osl_incrementInterlockedCount( &m_refCount );
+ dispose();
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleListBoxEntry::GetBoundingBox_Impl() const
+ {
+ Rectangle aRect;
+ SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( pEntry )
+ {
+ aRect = getListBox()->GetBoundingRect( pEntry );
+ SvLBoxEntry* pParent = getListBox()->GetParent( pEntry );
+ if ( pParent )
+ {
+ // position relative to parent entry
+ Point aTopLeft = aRect.TopLeft();
+ aTopLeft -= getListBox()->GetBoundingRect( pParent ).TopLeft();
+ aRect = Rectangle( aTopLeft, aRect.GetSize() );
+ }
+ }
+
+ return aRect;
+ }
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleListBoxEntry::GetBoundingBoxOnScreen_Impl() const
+ {
+ Rectangle aRect;
+ SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( pEntry )
+ {
+ aRect = getListBox()->GetBoundingRect( pEntry );
+ Point aTopLeft = aRect.TopLeft();
+ aTopLeft += getListBox()->GetWindowExtentsRelative( NULL ).TopLeft();
+ aRect = Rectangle( aTopLeft, aRect.GetSize() );
+ }
+
+ return aRect;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool AccessibleListBoxEntry::IsAlive_Impl() const
+ {
+ return ( !rBHelper.bDisposed && !rBHelper.bInDispose && isAlive() );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool AccessibleListBoxEntry::IsShowing_Impl() const
+ {
+ Reference< XAccessible > xParent = implGetParentAccessible( );
+
+ sal_Bool bShowing = sal_False;
+ Reference< XAccessibleContext > m_xParentContext =
+ xParent.is() ? xParent->getAccessibleContext() : Reference< XAccessibleContext >();
+ if( m_xParentContext.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( m_xParentContext, uno::UNO_QUERY );
+ if( xParentComp.is() )
+ bShowing = GetBoundingBox_Impl().IsOver( VCLRectangle( xParentComp->getBounds() ) );
+ }
+
+ return bShowing;
+ }
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleListBoxEntry::GetBoundingBox() throw ( lang::DisposedException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ return GetBoundingBox_Impl();
+ }
+ // -----------------------------------------------------------------------------
+ Rectangle AccessibleListBoxEntry::GetBoundingBoxOnScreen() throw ( lang::DisposedException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ return GetBoundingBoxOnScreen_Impl();
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleListBoxEntry::EnsureIsAlive() const throw ( lang::DisposedException )
+ {
+ if ( !IsAlive_Impl() )
+ throw lang::DisposedException();
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString AccessibleListBoxEntry::implGetText()
+ {
+ ::rtl::OUString sRet;
+ SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( pEntry )
+ sRet = getListBox()->SearchEntryText( pEntry );
+ return sRet;
+ }
+ // -----------------------------------------------------------------------------
+ Locale AccessibleListBoxEntry::implGetLocale()
+ {
+ Locale aLocale;
+ aLocale = Application::GetSettings().GetUILocale();
+
+ return aLocale;
+ }
+ void AccessibleListBoxEntry::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+ {
+ nStartIndex = 0;
+ nEndIndex = 0;
+ }
+ // -----------------------------------------------------------------------------
+ // XTypeProvider
+ // -----------------------------------------------------------------------------
+ // -----------------------------------------------------------------------------
+ Sequence< sal_Int8 > AccessibleListBoxEntry::getImplementationId() throw (RuntimeException)
+ {
+ static ::cppu::OImplementationId* pId = NULL;
+
+ if ( !pId )
+ {
+ ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex );
+
+ if ( !pId )
+ {
+ static ::cppu::OImplementationId aId;
+ pId = &aId;
+ }
+ }
+ return pId->getImplementationId();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XComponent/ListBoxAccessibleBase
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::dispose() throw ( uno::RuntimeException )
+ {
+ AccessibleListBoxEntry_BASE::dispose();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XComponent
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::disposing()
+ {
+ SolarMutexGuard();
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ Reference< XAccessible > xKeepAlive( this );
+
+ // Send a disposing to all listeners.
+ if ( m_nClientId )
+ {
+ ::comphelper::AccessibleEventNotifier::TClientId nId = m_nClientId;
+ m_nClientId = 0;
+ ::comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nId, *this );
+ }
+
+ // clean up
+ {
+
+ ListBoxAccessibleBase::disposing();
+ }
+ m_aParent = WeakReference< XAccessible >();
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getImplementationName() throw(RuntimeException)
+ {
+ return getImplementationName_Static();
+ }
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > SAL_CALL AccessibleListBoxEntry::getSupportedServiceNames() throw(RuntimeException)
+ {
+ return getSupportedServiceNames_Static();
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleListBoxEntry::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aSupported( getSupportedServiceNames() );
+ const ::rtl::OUString* pSupported = aSupported.getConstArray();
+ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength();
+ for ( ; pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported )
+ ;
+
+ return pSupported != pEnd;
+ }
+ // -----------------------------------------------------------------------------
+ // XServiceInfo - static methods
+ // -----------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > AccessibleListBoxEntry::getSupportedServiceNames_Static(void) throw( RuntimeException )
+ {
+ Sequence< ::rtl::OUString > aSupported(3);
+ aSupported[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleContext") );
+ aSupported[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleComponent") );
+ aSupported[2] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.AccessibleTreeListBoxEntry") );
+ return aSupported;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString AccessibleListBoxEntry::getImplementationName_Static(void) throw( RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.svtools.AccessibleTreeListBoxEntry") );
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessible
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleContext > SAL_CALL AccessibleListBoxEntry::getAccessibleContext( ) throw (RuntimeException)
+ {
+ EnsureIsAlive();
+ return this;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getAccessibleChildCount( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ sal_Int32 nCount = 0;
+ if ( pEntry )
+ nCount = getListBox()->GetLevelChildCount( pEntry );
+
+ return nCount;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleListBoxEntry::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException,RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ SvLBoxEntry* pEntry = pParent ? getListBox()->GetEntry( pParent, i ) : NULL;
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ return new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > AccessibleListBoxEntry::implGetParentAccessible( ) const
+ {
+ Reference< XAccessible > xParent = (Reference< XAccessible >)m_aParent;
+ if ( !xParent.is() )
+ {
+ DBG_ASSERT( m_aEntryPath.size(), "AccessibleListBoxEntry::getAccessibleParent: invalid path!" );
+ if ( 1 == m_aEntryPath.size() )
+ { // we're a top level entry
+ // -> our parent is the tree listbox itself
+ if ( getListBox() )
+ xParent = getListBox()->GetAccessible( );
+ }
+ else
+ { // we have a entry as parent -> get it's accessible
+
+ // shorten our access path by one
+ ::std::deque< sal_Int32 > aParentPath( m_aEntryPath );
+ aParentPath.pop_back();
+
+ // get the entry for this shortened access path
+ SvLBoxEntry* pParentEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ DBG_ASSERT( pParentEntry, "AccessibleListBoxEntry::implGetParentAccessible: could not obtain a parent entry!" );
+
+ if ( pParentEntry )
+ xParent = new AccessibleListBoxEntry( *getListBox(), pParentEntry, NULL );
+ // note that we pass NULL here as parent-accessible:
+ // this is allowed, as the AccessibleListBoxEntry class will create it's parent
+ // when needed
+ }
+ }
+
+ return xParent;
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleListBoxEntry::getAccessibleParent( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ return implGetParentAccessible( );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getAccessibleIndexInParent( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ DBG_ASSERT( !m_aEntryPath.empty(), "empty path" );
+ return m_aEntryPath.empty() ? -1 : m_aEntryPath.back();
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int16 SAL_CALL AccessibleListBoxEntry::getAccessibleRole( ) throw (RuntimeException)
+ {
+ return AccessibleRole::LABEL;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ // no description for every item
+ return ::rtl::OUString();
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getAccessibleName( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ return implGetText();
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleRelationSet > SAL_CALL AccessibleListBoxEntry::getAccessibleRelationSet( ) throw (RuntimeException)
+ {
+ Reference< XAccessibleRelationSet > xRelSet;
+ Reference< XAccessible > xParent;
+ if ( m_aEntryPath.size() > 1 ) // not a root entry
+ xParent = implGetParentAccessible();
+ if ( xParent.is() )
+ {
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Sequence< Reference< XInterface > > aSequence(1);
+ aSequence[0] = xParent;
+ pRelationSetHelper->AddRelation(
+ AccessibleRelation( AccessibleRelationType::NODE_CHILD_OF, aSequence ) );
+ xRelSet = pRelationSetHelper;
+ }
+ return xRelSet;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleStateSet > SAL_CALL AccessibleListBoxEntry::getAccessibleStateSet( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xStateSet = pStateSetHelper;
+
+ if ( IsAlive_Impl() )
+ {
+ pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
+ pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
+ pStateSetHelper->AddState( AccessibleStateType::ENABLED );
+ pStateSetHelper->AddState( AccessibleStateType::SENSITIVE );
+ if ( getListBox()->IsInplaceEditingEnabled() )
+ pStateSetHelper->AddState( AccessibleStateType::EDITABLE );
+ if ( IsShowing_Impl() )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+ getListBox()->FillAccessibleEntryStateSet(
+ getListBox()->GetEntryFromPath( m_aEntryPath ), *pStateSetHelper );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return xStateSet;
+ }
+ // -----------------------------------------------------------------------------
+ Locale SAL_CALL AccessibleListBoxEntry::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return implGetLocale();
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleComponent
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleListBoxEntry::containsPoint( const awt::Point& rPoint ) throw (RuntimeException)
+ {
+ return Rectangle( Point(), GetBoundingBox().GetSize() ).IsInside( VCLPoint( rPoint ) );
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleListBoxEntry::getAccessibleAtPoint( const awt::Point& _aPoint ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( VCLPoint( _aPoint ) );
+ if ( !pEntry )
+ throw RuntimeException();
+
+ Reference< XAccessible > xAcc;
+ AccessibleListBoxEntry* pAccEntry = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ Rectangle aRect = pAccEntry->GetBoundingBox_Impl();
+ if ( aRect.IsInside( VCLPoint( _aPoint ) ) )
+ xAcc = pAccEntry;
+ return xAcc;
+ }
+ // -----------------------------------------------------------------------------
+ awt::Rectangle SAL_CALL AccessibleListBoxEntry::getBounds( ) throw (RuntimeException)
+ {
+ return AWTRectangle( GetBoundingBox() );
+ }
+ // -----------------------------------------------------------------------------
+ awt::Point SAL_CALL AccessibleListBoxEntry::getLocation( ) throw (RuntimeException)
+ {
+ return AWTPoint( GetBoundingBox().TopLeft() );
+ }
+ // -----------------------------------------------------------------------------
+ awt::Point SAL_CALL AccessibleListBoxEntry::getLocationOnScreen( ) throw (RuntimeException)
+ {
+ return AWTPoint( GetBoundingBoxOnScreen().TopLeft() );
+ }
+ // -----------------------------------------------------------------------------
+ awt::Size SAL_CALL AccessibleListBoxEntry::getSize( ) throw (RuntimeException)
+ {
+ return AWTSize( GetBoundingBox().GetSize() );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::grabFocus( ) throw (RuntimeException)
+ {
+ // do nothing, because no focus for each item
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 AccessibleListBoxEntry::getForeground( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getForeground();
+ }
+
+ return nColor;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 AccessibleListBoxEntry::getBackground( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getBackground();
+ }
+
+ return nColor;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleText
+ // -----------------------------------------------------------------------------
+ // -----------------------------------------------------------------------------
+ awt::Rectangle SAL_CALL AccessibleListBoxEntry::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ if ( !implIsValidIndex( nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( pEntry )
+ {
+ ::vcl::ControlLayoutData aLayoutData;
+ Rectangle aItemRect = GetBoundingBox();
+ getListBox()->RecordLayoutData( &aLayoutData, aItemRect );
+ Rectangle aCharRect = aLayoutData.GetCharacterBounds( nIndex );
+ aCharRect.Move( -aItemRect.Left(), -aItemRect.Top() );
+ aBounds = AWTRectangle( aCharRect );
+ }
+
+ return aBounds;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ sal_Int32 nIndex = -1;
+ SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( pEntry )
+ {
+ ::vcl::ControlLayoutData aLayoutData;
+ Rectangle aItemRect = GetBoundingBox();
+ getListBox()->RecordLayoutData( &aLayoutData, aItemRect );
+ Point aPnt( VCLPoint( aPoint ) );
+ aPnt += aItemRect.TopLeft();
+ nIndex = aLayoutData.GetIndexForPoint( aPnt );
+ }
+
+ return nIndex;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleListBoxEntry::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ String sText = getText();
+ if ( ( 0 > nStartIndex ) || ( sText.Len() <= nStartIndex )
+ || ( 0 > nEndIndex ) || ( sText.Len() <= nEndIndex ) )
+ throw IndexOutOfBoundsException();
+
+ sal_Int32 nLen = nEndIndex - nStartIndex + 1;
+ ::svt::OStringTransfer::CopyString( sText.Copy( (USHORT)nStartIndex, (USHORT)nLen ), getListBox() );
+
+ return sal_True;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleEventBroadcaster
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::addEventListener( const Reference< XAccessibleEventListener >& xListener ) throw (RuntimeException)
+ {
+ if (xListener.is())
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+ if (!m_nClientId)
+ m_nClientId = comphelper::AccessibleEventNotifier::registerClient( );
+ comphelper::AccessibleEventNotifier::addEventListener( m_nClientId, xListener );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::removeEventListener( const Reference< XAccessibleEventListener >& xListener ) throw (RuntimeException)
+ {
+ if (xListener.is())
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, xListener );
+ if ( !nListenerCount )
+ {
+ // no listeners anymore
+ // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+ // and at least to us not firing any events anymore, in case somebody calls
+ // NotifyAccessibleEvent, again
+ sal_Int32 nId = m_nClientId;
+ m_nClientId = 0;
+ comphelper::AccessibleEventNotifier::revokeClient( nId );
+
+ }
+ }
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleAction
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getAccessibleActionCount( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ // three actions supported
+ return ACCESSIBLE_ACTION_COUNT;
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleListBoxEntry::doAccessibleAction( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Bool bRet = sal_False;
+ checkActionIndex_Impl( nIndex );
+ EnsureIsAlive();
+
+ SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( pEntry )
+ {
+ if ( getListBox()->IsExpanded( pEntry ) )
+ getListBox()->Collapse( pEntry );
+ else
+ getListBox()->Expand( pEntry );
+ bRet = sal_True;
+ }
+
+ return bRet;
+ }
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getAccessibleActionDescription( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ checkActionIndex_Impl( nIndex );
+ EnsureIsAlive();
+
+ static const ::rtl::OUString sActionDesc( RTL_CONSTASCII_USTRINGPARAM( "toggleExpand" ) );
+ return sActionDesc;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleKeyBinding > AccessibleListBoxEntry::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ Reference< XAccessibleKeyBinding > xRet;
+ checkActionIndex_Impl( nIndex );
+ // ... which key?
+ return xRet;
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleSelection
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, nChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ getListBox()->Select( pEntry, TRUE );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleListBoxEntry::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, nChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ return getListBox()->IsSelected( pEntry );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::clearAccessibleSelection( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( !pParent )
+ throw RuntimeException();
+ sal_Int32 i, nCount = 0;
+ nCount = getListBox()->GetLevelChildCount( pParent );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, i );
+ if ( getListBox()->IsSelected( pEntry ) )
+ getListBox()->Select( pEntry, FALSE );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::selectAllAccessibleChildren( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( !pParent )
+ throw RuntimeException();
+ sal_Int32 i, nCount = 0;
+ nCount = getListBox()->GetLevelChildCount( pParent );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, i );
+ if ( !getListBox()->IsSelected( pEntry ) )
+ getListBox()->Select( pEntry, TRUE );
+ }
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ sal_Int32 i, nSelCount = 0, nCount = 0;
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( !pParent )
+ throw RuntimeException();
+ nCount = getListBox()->GetLevelChildCount( pParent );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, i );
+ if ( getListBox()->IsSelected( pEntry ) )
+ ++nSelCount;
+ }
+
+ return nSelCount;
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleListBoxEntry::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ sal_Int32 i, nSelCount = 0, nCount = 0;
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ if ( !pParent )
+ throw RuntimeException();
+ nCount = getListBox()->GetLevelChildCount( pParent );
+ for ( i = 0; i < nCount; ++i )
+ {
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, i );
+ if ( getListBox()->IsSelected( pEntry ) )
+ ++nSelCount;
+
+ if ( nSelCount == ( nSelectedChildIndex + 1 ) )
+ {
+ xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+ break;
+ }
+ }
+
+ return xChild;
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleListBoxEntry::deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ EnsureIsAlive();
+
+ SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+ SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, nSelectedChildIndex );
+ if ( !pEntry )
+ throw IndexOutOfBoundsException();
+
+ getListBox()->Select( pEntry, FALSE );
+ }
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getCaretPosition( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ return -1;
+ }
+ sal_Bool SAL_CALL AccessibleListBoxEntry::setCaretPosition ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ sal_Unicode SAL_CALL AccessibleListBoxEntry::getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getCharacter( nIndex );
+ }
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL AccessibleListBoxEntry::getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >();
+ }
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getCharacterCount( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getCharacterCount( );
+ }
+
+ ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getSelectedText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getSelectedText( );
+ }
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getSelectionStart( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getSelectionStart( );
+ }
+ sal_Int32 SAL_CALL AccessibleListBoxEntry::getSelectionEnd( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getSelectionEnd( );
+ }
+ sal_Bool SAL_CALL AccessibleListBoxEntry::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+ }
+ ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getText( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getText( );
+ }
+ ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex );
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleListBoxEntry::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getTextAtIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleListBoxEntry::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+ return OCommonAccessibleText::getTextBeforeIndex( nIndex ,aTextType);
+ }
+ ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleListBoxEntry::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+ EnsureIsAlive();
+
+ return OCommonAccessibleText::getTextBehindIndex( nIndex ,aTextType);
+ }
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibletabbar.cxx b/accessibility/source/extended/accessibletabbar.cxx
new file mode 100644
index 000000000000..88a04c5584bc
--- /dev/null
+++ b/accessibility/source/extended/accessibletabbar.cxx
@@ -0,0 +1,557 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/accessibletabbar.hxx>
+#include <svtools/tabbar.hxx>
+#include <accessibility/extended/accessibletabbarpagelist.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <vcl/svapp.hxx>
+#include <toolkit/awt/vclxfont.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <vector>
+
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+ using namespace ::com::sun::star;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::comphelper;
+
+ DBG_NAME( AccessibleTabBar )
+
+ // ----------------------------------------------------
+ // class AccessibleTabBar
+ // ----------------------------------------------------
+
+ AccessibleTabBar::AccessibleTabBar( TabBar* pTabBar )
+ :AccessibleTabBarBase( pTabBar )
+ {
+ DBG_CTOR( AccessibleTabBar, NULL );
+
+ if ( m_pTabBar )
+ m_aAccessibleChildren.assign( m_pTabBar->GetAccessibleChildWindowCount() + 1, Reference< XAccessible >() );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ AccessibleTabBar::~AccessibleTabBar()
+ {
+ DBG_DTOR( AccessibleTabBar, NULL );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBar::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+ {
+ Any aOldValue, aNewValue;
+
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_ENABLED:
+ {
+ aNewValue <<= AccessibleStateType::SENSITIVE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ aNewValue <<= AccessibleStateType::ENABLED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_DISABLED:
+ {
+ aOldValue <<= AccessibleStateType::ENABLED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ aOldValue <<= AccessibleStateType::SENSITIVE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_GETFOCUS:
+ {
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ {
+ aOldValue <<= AccessibleStateType::FOCUSED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_SHOW:
+ {
+ aNewValue <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_HIDE:
+ {
+ aOldValue <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ default:
+ {
+ AccessibleTabBarBase::ProcessWindowEvent( rVclWindowEvent );
+ }
+ break;
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBar::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+ {
+ if ( m_pTabBar )
+ {
+ if ( m_pTabBar->IsEnabled() )
+ {
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+ rStateSet.AddState( AccessibleStateType::SENSITIVE );
+ }
+
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( m_pTabBar->HasFocus() )
+ rStateSet.AddState( AccessibleStateType::FOCUSED );
+
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+
+ if ( m_pTabBar->IsVisible() )
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+
+ if ( m_pTabBar->GetStyle() & WB_SIZEABLE )
+ rStateSet.AddState( AccessibleStateType::RESIZABLE );
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+ // OCommonAccessibleComponent
+ // -----------------------------------------------------------------------------
+
+ awt::Rectangle AccessibleTabBar::implGetBounds() throw (RuntimeException)
+ {
+ awt::Rectangle aBounds;
+ if ( m_pTabBar )
+ aBounds = AWTRectangle( Rectangle( m_pTabBar->GetPosPixel(), m_pTabBar->GetSizePixel() ) );
+
+ return aBounds;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XInterface
+ // -----------------------------------------------------------------------------
+
+ IMPLEMENT_FORWARD_XINTERFACE2( AccessibleTabBar, AccessibleExtendedComponentHelper_BASE, AccessibleTabBar_BASE )
+
+ // -----------------------------------------------------------------------------
+ // XTypeProvider
+ // -----------------------------------------------------------------------------
+
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleTabBar, AccessibleExtendedComponentHelper_BASE, AccessibleTabBar_BASE )
+
+ // -----------------------------------------------------------------------------
+ // XComponent
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBar::disposing()
+ {
+ AccessibleTabBarBase::disposing();
+
+ // dispose all children
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBar::getImplementationName() throw (RuntimeException)
+ {
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.svtools.AccessibleTabBar" );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool AccessibleTabBar::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Sequence< ::rtl::OUString > AccessibleTabBar::getSupportedServiceNames() throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleTabBar" );
+ return aNames;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessible
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleContext > AccessibleTabBar::getAccessibleContext( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return this;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBar::getAccessibleChildCount() throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return m_aAccessibleChildren.size();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBar::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild = m_aAccessibleChildren[i];
+ if ( !xChild.is() )
+ {
+ if ( m_pTabBar )
+ {
+ sal_Int32 nCount = m_pTabBar->GetAccessibleChildWindowCount();
+
+ if ( i < nCount )
+ {
+ Window* pChild = m_pTabBar->GetAccessibleChildWindow( (USHORT)i );
+ if ( pChild )
+ xChild = pChild->GetAccessible();
+ }
+ else if ( i == nCount )
+ {
+ xChild = new AccessibleTabBarPageList( m_pTabBar, i );
+ }
+
+ // insert into child list
+ m_aAccessibleChildren[i] = xChild;
+ }
+ }
+
+ return xChild;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBar::getAccessibleParent( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+ if ( m_pTabBar )
+ {
+ Window* pParent = m_pTabBar->GetAccessibleParentWindow();
+ if ( pParent )
+ xParent = pParent->GetAccessible();
+ }
+
+ return xParent;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBar::getAccessibleIndexInParent( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndexInParent = -1;
+ if ( m_pTabBar )
+ {
+ Window* pParent = m_pTabBar->GetAccessibleParentWindow();
+ if ( pParent )
+ {
+ for ( USHORT i = 0, nCount = pParent->GetAccessibleChildWindowCount(); i < nCount; ++i )
+ {
+ Window* pChild = pParent->GetAccessibleChildWindow( i );
+ if ( pChild == static_cast< Window* >( m_pTabBar ) )
+ {
+ nIndexInParent = i;
+ break;
+ }
+ }
+ }
+ }
+
+ return nIndexInParent;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int16 AccessibleTabBar::getAccessibleRole( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::PANEL;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBar::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pTabBar )
+ sDescription = m_pTabBar->GetAccessibleDescription();
+
+ return sDescription;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBar::getAccessibleName( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sName;
+ if ( m_pTabBar )
+ sName = m_pTabBar->GetAccessibleName();
+
+ return sName;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleRelationSet > AccessibleTabBar::getAccessibleRelationSet( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleStateSet > AccessibleTabBar::getAccessibleStateSet( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Locale AccessibleTabBar::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleComponent
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBar::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xChild;
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xAcc = getAccessibleChild( i );
+ if ( xAcc.is() )
+ {
+ Reference< XAccessibleComponent > xComp( xAcc->getAccessibleContext(), UNO_QUERY );
+ if ( xComp.is() )
+ {
+ Rectangle aRect = VCLRectangle( xComp->getBounds() );
+ Point aPos = VCLPoint( rPoint );
+ if ( aRect.IsInside( aPos ) )
+ {
+ xChild = xAcc;
+ break;
+ }
+ }
+ }
+ }
+
+ return xChild;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBar::grabFocus( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( m_pTabBar )
+ m_pTabBar->GrabFocus();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBar::getForeground( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ if ( m_pTabBar )
+ {
+ if ( m_pTabBar->IsControlForeground() )
+ nColor = m_pTabBar->GetControlForeground().GetColor();
+ else
+ {
+ Font aFont;
+ if ( m_pTabBar->IsControlFont() )
+ aFont = m_pTabBar->GetControlFont();
+ else
+ aFont = m_pTabBar->GetFont();
+ nColor = aFont.GetColor().GetColor();
+ }
+ }
+
+ return nColor;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBar::getBackground( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ if ( m_pTabBar )
+ {
+ if ( m_pTabBar->IsControlBackground() )
+ nColor = m_pTabBar->GetControlBackground().GetColor();
+ else
+ nColor = m_pTabBar->GetBackground().GetColor().GetColor();
+ }
+
+ return nColor;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleExtendedComponent
+ // -----------------------------------------------------------------------------
+
+ Reference< awt::XFont > AccessibleTabBar::getFont( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ if ( m_pTabBar )
+ {
+ Reference< awt::XDevice > xDev( m_pTabBar->GetComponentInterface(), UNO_QUERY );
+ if ( xDev.is() )
+ {
+ Font aFont;
+ if ( m_pTabBar->IsControlFont() )
+ aFont = m_pTabBar->GetControlFont();
+ else
+ aFont = m_pTabBar->GetFont();
+ VCLXFont* pVCLXFont = new VCLXFont;
+ pVCLXFont->Init( *xDev.get(), aFont );
+ xFont = pVCLXFont;
+ }
+ }
+
+ return xFont;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBar::getTitledBorderText( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sText;
+ if ( m_pTabBar )
+ sText = m_pTabBar->GetText();
+
+ return sText;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBar::getToolTipText( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sText;
+ if ( m_pTabBar )
+ sText = m_pTabBar->GetQuickHelpText();
+
+ return sText;
+ }
+
+ // -----------------------------------------------------------------------------
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibletabbarbase.cxx b/accessibility/source/extended/accessibletabbarbase.cxx
new file mode 100644
index 000000000000..4fa22f9bc602
--- /dev/null
+++ b/accessibility/source/extended/accessibletabbarbase.cxx
@@ -0,0 +1,116 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include "accessibility/extended/accessibletabbarbase.hxx"
+#ifndef ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGELIST
+#include "accessibility/extended/accessibletabbarpagelist.hxx"
+#endif
+#include <toolkit/helper/externallock.hxx>
+#include <svtools/tabbar.hxx>
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+AccessibleTabBarBase::AccessibleTabBarBase( TabBar* pTabBar ) :
+ AccessibleExtendedComponentHelper_BASE( new VCLExternalSolarLock() ),
+ m_pTabBar( 0 )
+{
+ m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
+ SetTabBarPointer( pTabBar );
+}
+
+AccessibleTabBarBase::~AccessibleTabBarBase()
+{
+ ClearTabBarPointer();
+ DELETEZ( m_pExternalLock );
+}
+
+IMPL_LINK( AccessibleTabBarBase, WindowEventListener, VclSimpleEvent*, pEvent )
+{
+ VclWindowEvent* pWinEvent = dynamic_cast< VclWindowEvent* >( pEvent );
+ DBG_ASSERT( pWinEvent, "AccessibleTabBarBase::WindowEventListener - unknown window event" );
+ if( pWinEvent )
+ {
+ Window* pEventWindow = pWinEvent->GetWindow();
+ DBG_ASSERT( pEventWindow, "AccessibleTabBarBase::WindowEventListener: no window!" );
+
+ if( ( pWinEvent->GetId() == VCLEVENT_TABBAR_PAGEREMOVED ) &&
+ ( (sal_uInt16)(sal_IntPtr) pWinEvent->GetData() == TabBar::PAGE_NOT_FOUND ) &&
+ ( dynamic_cast< AccessibleTabBarPageList *> (this) != NULL ) )
+ {
+ return 0;
+ }
+
+ if ( !pEventWindow->IsAccessibilityEventsSuppressed() || (pWinEvent->GetId() == VCLEVENT_OBJECT_DYING) )
+ ProcessWindowEvent( *pWinEvent );
+ }
+ return 0;
+}
+
+void AccessibleTabBarBase::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ if( rVclWindowEvent.GetId() == VCLEVENT_OBJECT_DYING )
+ ClearTabBarPointer();
+}
+
+// XComponent
+
+void AccessibleTabBarBase::disposing()
+{
+ AccessibleExtendedComponentHelper_BASE::disposing();
+ ClearTabBarPointer();
+}
+
+// private
+
+void AccessibleTabBarBase::SetTabBarPointer( TabBar* pTabBar )
+{
+ DBG_ASSERT( !m_pTabBar, "AccessibleTabBarBase::SetTabBarPointer - multiple call" );
+ m_pTabBar = pTabBar;
+ if( m_pTabBar )
+ m_pTabBar->AddEventListener( LINK( this, AccessibleTabBarBase, WindowEventListener ) );
+}
+
+void AccessibleTabBarBase::ClearTabBarPointer()
+{
+ if( m_pTabBar )
+ {
+ m_pTabBar->RemoveEventListener( LINK( this, AccessibleTabBarBase, WindowEventListener ) );
+ m_pTabBar = 0;
+ }
+}
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibletabbarpage.cxx b/accessibility/source/extended/accessibletabbarpage.cxx
new file mode 100644
index 000000000000..898d2435b10a
--- /dev/null
+++ b/accessibility/source/extended/accessibletabbarpage.cxx
@@ -0,0 +1,514 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/accessibletabbarpage.hxx>
+#include <svtools/tabbar.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <vcl/svapp.hxx>
+#include <toolkit/helper/convert.hxx>
+
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+ using namespace ::comphelper;
+
+ // -----------------------------------------------------------------------------
+ // class AccessibleTabBarPage
+ // -----------------------------------------------------------------------------
+
+ AccessibleTabBarPage::AccessibleTabBarPage( TabBar* pTabBar, sal_uInt16 nPageId, const Reference< XAccessible >& rxParent )
+ :AccessibleTabBarBase( pTabBar )
+ ,m_nPageId( nPageId )
+ ,m_xParent( rxParent )
+ {
+ m_bEnabled = IsEnabled();
+ m_bShowing = IsShowing();
+ m_bSelected = IsSelected();
+
+ if ( m_pTabBar )
+ m_sPageText = m_pTabBar->GetPageText( m_nPageId );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ AccessibleTabBarPage::~AccessibleTabBarPage()
+ {
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool AccessibleTabBarPage::IsEnabled()
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bEnabled = sal_False;
+ if ( m_pTabBar )
+ bEnabled = m_pTabBar->IsPageEnabled( m_nPageId );
+
+ return bEnabled;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool AccessibleTabBarPage::IsShowing()
+ {
+ sal_Bool bShowing = sal_False;
+
+ if ( m_pTabBar && m_pTabBar->IsVisible() )
+ bShowing = sal_True;
+
+ return bShowing;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool AccessibleTabBarPage::IsSelected()
+ {
+ sal_Bool bSelected = sal_False;
+
+ if ( m_pTabBar && m_pTabBar->GetCurPageId() == m_nPageId )
+ bSelected = sal_True;
+
+ return bSelected;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPage::SetEnabled( sal_Bool bEnabled )
+ {
+ if ( m_bEnabled != bEnabled )
+ {
+ Any aOldValue[2], aNewValue[2];
+ if ( m_bEnabled )
+ {
+ aOldValue[0] <<= AccessibleStateType::SENSITIVE;
+ aOldValue[1] <<= AccessibleStateType::ENABLED;
+ }
+ else
+ {
+
+ aNewValue[0] <<= AccessibleStateType::ENABLED;
+ aNewValue[1] <<= AccessibleStateType::SENSITIVE;
+ }
+ m_bEnabled = bEnabled;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[0], aNewValue[0] );
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[1], aNewValue[1] );
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPage::SetShowing( sal_Bool bShowing )
+ {
+ if ( m_bShowing != bShowing )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bShowing )
+ aOldValue <<= AccessibleStateType::SHOWING;
+ else
+ aNewValue <<= AccessibleStateType::SHOWING;
+ m_bShowing = bShowing;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPage::SetSelected( sal_Bool bSelected )
+ {
+ if ( m_bSelected != bSelected )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bSelected )
+ aOldValue <<= AccessibleStateType::SELECTED;
+ else
+ aNewValue <<= AccessibleStateType::SELECTED;
+ m_bSelected = bSelected;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPage::SetPageText( const ::rtl::OUString& sPageText )
+ {
+ if ( !m_sPageText.equals( sPageText ) )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= m_sPageText;
+ aNewValue <<= sPageText;
+ m_sPageText = sPageText;
+ NotifyAccessibleEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue );
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPage::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+ {
+ if ( IsEnabled() )
+ {
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+ rStateSet.AddState( AccessibleStateType::SENSITIVE );
+ }
+
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+
+ if ( IsShowing() )
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+
+ rStateSet.AddState( AccessibleStateType::SELECTABLE );
+
+ if ( IsSelected() )
+ rStateSet.AddState( AccessibleStateType::SELECTED );
+ }
+
+ // -----------------------------------------------------------------------------
+ // OCommonAccessibleComponent
+ // -----------------------------------------------------------------------------
+
+ awt::Rectangle AccessibleTabBarPage::implGetBounds() throw (RuntimeException)
+ {
+ awt::Rectangle aBounds;
+ if ( m_pTabBar )
+ {
+ // get bounding rectangle relative to the AccessibleTabBar
+ aBounds = AWTRectangle( m_pTabBar->GetPageRect( m_nPageId ) );
+
+ // get position of the AccessibleTabBarPageList relative to the AccessibleTabBar
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComponent( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComponent.is() )
+ {
+ awt::Point aParentLoc = xParentComponent->getLocation();
+
+ // calculate bounding rectangle relative to the AccessibleTabBarPageList
+ aBounds.X -= aParentLoc.X;
+ aBounds.Y -= aParentLoc.Y;
+ }
+ }
+ }
+
+ return aBounds;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XInterface
+ // -----------------------------------------------------------------------------
+
+ IMPLEMENT_FORWARD_XINTERFACE2( AccessibleTabBarPage, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPage_BASE )
+
+ // -----------------------------------------------------------------------------
+ // XTypeProvider
+ // -----------------------------------------------------------------------------
+
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleTabBarPage, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPage_BASE )
+
+ // -----------------------------------------------------------------------------
+ // XComponent
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPage::disposing()
+ {
+ AccessibleTabBarBase::disposing();
+ m_sPageText = ::rtl::OUString();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPage::getImplementationName() throw (RuntimeException)
+ {
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.svtools.AccessibleTabBarPage" );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool AccessibleTabBarPage::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Sequence< ::rtl::OUString > AccessibleTabBarPage::getSupportedServiceNames() throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleTabBarPage" );
+ return aNames;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessible
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleContext > AccessibleTabBarPage::getAccessibleContext( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return this;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPage::getAccessibleChildCount() throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBarPage::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessible >();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBarPage::getAccessibleParent( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return m_xParent;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPage::getAccessibleIndexInParent( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndexInParent = -1;
+ if ( m_pTabBar )
+ nIndexInParent = m_pTabBar->GetPagePos( m_nPageId );
+
+ return nIndexInParent;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int16 AccessibleTabBarPage::getAccessibleRole( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::PAGE_TAB;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPage::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pTabBar )
+ sDescription = m_pTabBar->GetHelpText( m_nPageId );
+
+ return sDescription;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPage::getAccessibleName( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return m_sPageText;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleRelationSet > AccessibleTabBarPage::getAccessibleRelationSet( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleStateSet > AccessibleTabBarPage::getAccessibleStateSet( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Locale AccessibleTabBarPage::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleComponent
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBarPage::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return Reference< XAccessible >();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPage::grabFocus( ) throw (RuntimeException)
+ {
+ // no focus
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPage::getForeground( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getForeground();
+ }
+
+ return nColor;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPage::getBackground( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getBackground();
+ }
+
+ return nColor;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleExtendedComponent
+ // -----------------------------------------------------------------------------
+
+ Reference< awt::XFont > AccessibleTabBarPage::getFont( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleExtendedComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ xFont = xParentComp->getFont();
+ }
+
+ return xFont;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPage::getTitledBorderText( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return m_sPageText;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPage::getToolTipText( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+ }
+
+ // -----------------------------------------------------------------------------
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibletabbarpagelist.cxx b/accessibility/source/extended/accessibletabbarpagelist.cxx
new file mode 100644
index 000000000000..60589218ae47
--- /dev/null
+++ b/accessibility/source/extended/accessibletabbarpagelist.cxx
@@ -0,0 +1,808 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/accessibletabbarpagelist.hxx>
+#include <svtools/tabbar.hxx>
+#include <accessibility/extended/accessibletabbarpage.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <toolkit/helper/convert.hxx>
+
+
+//.........................................................................
+namespace accessibility
+{
+//.........................................................................
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+ using namespace ::comphelper;
+
+ DBG_NAME( AccessibleTabBarPageList )
+
+ // -----------------------------------------------------------------------------
+ // class AccessibleTabBarPageList
+ // -----------------------------------------------------------------------------
+
+ AccessibleTabBarPageList::AccessibleTabBarPageList( TabBar* pTabBar, sal_Int32 nIndexInParent )
+ :AccessibleTabBarBase( pTabBar )
+ ,m_nIndexInParent( nIndexInParent )
+ {
+ DBG_CTOR( AccessibleTabBarPageList, NULL );
+ if ( m_pTabBar )
+ m_aAccessibleChildren.assign( m_pTabBar->GetPageCount(), Reference< XAccessible >() );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ AccessibleTabBarPageList::~AccessibleTabBarPageList()
+ {
+ DBG_DTOR( AccessibleTabBarPageList, NULL );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::UpdateEnabled( sal_Int32 i, sal_Bool bEnabled )
+ {
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() );
+ if ( pAccessibleTabBarPage )
+ pAccessibleTabBarPage->SetEnabled( bEnabled );
+ }
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::UpdateShowing( sal_Bool bShowing )
+ {
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() );
+ if ( pAccessibleTabBarPage )
+ pAccessibleTabBarPage->SetShowing( bShowing );
+ }
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::UpdateSelected( sal_Int32 i, sal_Bool bSelected )
+ {
+ NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() );
+ if ( pAccessibleTabBarPage )
+ pAccessibleTabBarPage->SetSelected( bSelected );
+ }
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::UpdatePageText( sal_Int32 i )
+ {
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() );
+ if ( pAccessibleTabBarPage )
+ {
+ if ( m_pTabBar )
+ {
+ ::rtl::OUString sPageText = m_pTabBar->GetPageText( m_pTabBar->GetPageId( (sal_uInt16)i ) );
+ pAccessibleTabBarPage->SetPageText( sPageText );
+ }
+ }
+ }
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::InsertChild( sal_Int32 i )
+ {
+ if ( i >= 0 && i <= (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ // insert entry in child list
+ m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + i, Reference< XAccessible >() );
+
+ // send accessible child event
+ Reference< XAccessible > xChild( getAccessibleChild( i ) );
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+ }
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::RemoveChild( sal_Int32 i )
+ {
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ // get the accessible of the removed page
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+
+ // remove entry in child list
+ m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i );
+
+ // send accessible child event
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+
+ Reference< XComponent > xComponent( xChild, UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::MoveChild( sal_Int32 i, sal_Int32 j )
+ {
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() &&
+ j >= 0 && j <= (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ if ( i < j )
+ --j;
+
+ // get the accessible of the moved page
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+
+ // remove entry in child list at old position
+ m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i );
+
+ // insert entry in child list at new position
+ m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + j, xChild );
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+ {
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_ENABLED:
+ {
+ Any aNewValue;
+ aNewValue <<= AccessibleStateType::SENSITIVE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, Any(), aNewValue );
+ aNewValue <<= AccessibleStateType::ENABLED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, Any(), aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_DISABLED:
+ {
+ Any aOldValue;
+ aOldValue <<= AccessibleStateType::ENABLED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, Any() );
+ aOldValue <<= AccessibleStateType::SENSITIVE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, Any() );
+ }
+ break;
+ case VCLEVENT_WINDOW_SHOW:
+ {
+ Any aOldValue, aNewValue;
+ aNewValue <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ UpdateShowing( sal_True );
+ }
+ break;
+ case VCLEVENT_WINDOW_HIDE:
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ UpdateShowing( sal_False );
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGEENABLED:
+ {
+ if ( m_pTabBar )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId );
+ UpdateEnabled( nPagePos, sal_True );
+ }
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGEDISABLED:
+ {
+ if ( m_pTabBar )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId );
+ UpdateEnabled( nPagePos, sal_False );
+ }
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGESELECTED:
+ {
+ // do nothing
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGEACTIVATED:
+ {
+ if ( m_pTabBar )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId );
+ UpdateSelected( nPagePos, sal_True );
+ }
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGEDEACTIVATED:
+ {
+ if ( m_pTabBar )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId );
+ UpdateSelected( nPagePos, sal_False );
+ }
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGEINSERTED:
+ {
+ if ( m_pTabBar )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId );
+ InsertChild( nPagePos );
+ }
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGEREMOVED:
+ {
+ if ( m_pTabBar )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+
+ if ( nPageId == TabBar::PAGE_NOT_FOUND )
+ {
+ for ( sal_Int32 i = m_aAccessibleChildren.size() - 1; i >= 0; --i )
+ RemoveChild( i );
+ }
+ else
+ {
+ for ( sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
+ {
+ Reference< XAccessible > xChild( getAccessibleChild( i ) );
+ if ( xChild.is() )
+ {
+ AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() );
+ if ( pAccessibleTabBarPage && pAccessibleTabBarPage->GetPageId() == nPageId )
+ {
+ RemoveChild( i );
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGEMOVED:
+ {
+ Pair* pPair = (Pair*) rVclWindowEvent.GetData();
+ if ( pPair )
+ MoveChild( pPair->A(), pPair->B() );
+ }
+ break;
+ case VCLEVENT_TABBAR_PAGETEXTCHANGED:
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId );
+ UpdatePageText( nPagePos );
+ }
+ break;
+ default:
+ {
+ AccessibleTabBarBase::ProcessWindowEvent( rVclWindowEvent );
+ }
+ break;
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+ {
+ if ( m_pTabBar )
+ {
+ if ( m_pTabBar->IsEnabled() )
+ {
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+ rStateSet.AddState( AccessibleStateType::SENSITIVE );
+ }
+
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+
+ if ( m_pTabBar->IsVisible() )
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+ // OCommonAccessibleComponent
+ // -----------------------------------------------------------------------------
+
+ awt::Rectangle AccessibleTabBarPageList::implGetBounds() throw (RuntimeException)
+ {
+ awt::Rectangle aBounds;
+ if ( m_pTabBar )
+ aBounds = AWTRectangle( m_pTabBar->GetPageArea() );
+
+ return aBounds;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XInterface
+ // -----------------------------------------------------------------------------
+
+ IMPLEMENT_FORWARD_XINTERFACE2( AccessibleTabBarPageList, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPageList_BASE )
+
+ // -----------------------------------------------------------------------------
+ // XTypeProvider
+ // -----------------------------------------------------------------------------
+
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleTabBarPageList, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPageList_BASE )
+
+ // -----------------------------------------------------------------------------
+ // XComponent
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::disposing()
+ {
+ AccessibleTabBarBase::disposing();
+
+ // dispose all children
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPageList::getImplementationName() throw (RuntimeException)
+ {
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.svtools.AccessibleTabBarPageList" );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool AccessibleTabBarPageList::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Sequence< ::rtl::OUString > AccessibleTabBarPageList::getSupportedServiceNames() throw (RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleTabBarPageList" );
+ return aNames;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessible
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleContext > AccessibleTabBarPageList::getAccessibleContext( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return this;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleContext
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPageList::getAccessibleChildCount() throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return m_aAccessibleChildren.size();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBarPageList::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild = m_aAccessibleChildren[i];
+ if ( !xChild.is() )
+ {
+ if ( m_pTabBar )
+ {
+ sal_uInt16 nPageId = m_pTabBar->GetPageId( (USHORT)i );
+
+ xChild = new AccessibleTabBarPage( m_pTabBar, nPageId, this );
+
+ // insert into child list
+ m_aAccessibleChildren[i] = xChild;
+ }
+ }
+
+ return xChild;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBarPageList::getAccessibleParent( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+ if ( m_pTabBar )
+ xParent = m_pTabBar->GetAccessible();
+
+ return xParent;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPageList::getAccessibleIndexInParent( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return m_nIndexInParent;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int16 AccessibleTabBarPageList::getAccessibleRole( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::PAGE_TAB_LIST;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPageList::getAccessibleDescription( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPageList::getAccessibleName( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleRelationSet > AccessibleTabBarPageList::getAccessibleRelationSet( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessibleStateSet > AccessibleTabBarPageList::getAccessibleStateSet( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Locale AccessibleTabBarPageList::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleComponent
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBarPageList::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xChild;
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xAcc = getAccessibleChild( i );
+ if ( xAcc.is() )
+ {
+ Reference< XAccessibleComponent > xComp( xAcc->getAccessibleContext(), UNO_QUERY );
+ if ( xComp.is() )
+ {
+ Rectangle aRect = VCLRectangle( xComp->getBounds() );
+ Point aPos = VCLPoint( rPoint );
+ if ( aRect.IsInside( aPos ) )
+ {
+ xChild = xAcc;
+ break;
+ }
+ }
+ }
+ }
+
+ return xChild;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::grabFocus( ) throw (RuntimeException)
+ {
+ // no focus
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPageList::getForeground( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getForeground();
+ }
+
+ return nColor;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPageList::getBackground( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getBackground();
+ }
+
+ return nColor;
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleExtendedComponent
+ // -----------------------------------------------------------------------------
+
+ Reference< awt::XFont > AccessibleTabBarPageList::getFont( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleExtendedComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ xFont = xParentComp->getFont();
+ }
+
+ return xFont;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPageList::getTitledBorderText( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ::rtl::OUString AccessibleTabBarPageList::getToolTipText( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+ }
+
+ // -----------------------------------------------------------------------------
+ // XAccessibleSelection
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ if ( m_pTabBar )
+ {
+ m_pTabBar->SetCurPageId( m_pTabBar->GetPageId( (USHORT)nChildIndex ) );
+ m_pTabBar->Update();
+ m_pTabBar->ActivatePage();
+ m_pTabBar->Select();
+ }
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Bool AccessibleTabBarPageList::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ sal_Bool bSelected = sal_False;
+ if ( m_pTabBar && m_pTabBar->GetCurPageId() == m_pTabBar->GetPageId( (USHORT)nChildIndex ) )
+ bSelected = sal_True;
+
+ return bSelected;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::clearAccessibleSelection( ) throw (RuntimeException)
+ {
+ // This method makes no sense in a TabBar, and so does nothing.
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::selectAllAccessibleChildren( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ selectAccessibleChild( 0 );
+ }
+
+ // -----------------------------------------------------------------------------
+
+ sal_Int32 AccessibleTabBarPageList::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ return 1;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ Reference< XAccessible > AccessibleTabBarPageList::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+
+ for ( sal_Int32 i = 0, j = 0, nCount = getAccessibleChildCount(); i < nCount; i++ )
+ {
+ if ( isAccessibleChildSelected( i ) && ( j++ == nSelectedChildIndex ) )
+ {
+ xChild = getAccessibleChild( i );
+ break;
+ }
+ }
+
+ return xChild;
+ }
+
+ // -----------------------------------------------------------------------------
+
+ void AccessibleTabBarPageList::deselectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ // This method makes no sense in a TabBar, and so does nothing.
+ }
+
+ // -----------------------------------------------------------------------------
+
+//.........................................................................
+} // namespace accessibility
+//.........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibletablistbox.cxx b/accessibility/source/extended/accessibletablistbox.cxx
new file mode 100644
index 000000000000..1b22c0b87565
--- /dev/null
+++ b/accessibility/source/extended/accessibletablistbox.cxx
@@ -0,0 +1,137 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/accessibletablistbox.hxx"
+#include "accessibility/extended/accessibletablistboxtable.hxx"
+#include <svtools/svtabbx.hxx>
+#include <comphelper/sequence.hxx>
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ // class AccessibleTabListBox -----------------------------------------------------
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+
+ DBG_NAME(AccessibleTabListBox)
+
+ // -----------------------------------------------------------------------------
+ // Ctor() and Dtor()
+ // -----------------------------------------------------------------------------
+ AccessibleTabListBox::AccessibleTabListBox( const Reference< XAccessible >& rxParent, SvHeaderTabListBox& rBox )
+ :AccessibleBrowseBox( rxParent, NULL, rBox )
+ ,m_pTabListBox( &rBox )
+
+ {
+ DBG_CTOR( AccessibleTabListBox, NULL );
+
+ osl_incrementInterlockedCount( &m_refCount );
+ {
+ setCreator( this );
+ }
+ osl_decrementInterlockedCount( &m_refCount );
+ }
+
+ // -----------------------------------------------------------------------------
+ AccessibleTabListBox::~AccessibleTabListBox()
+ {
+ DBG_DTOR( AccessibleTabListBox, NULL );
+
+ if ( isAlive() )
+ {
+ // increment ref count to prevent double call of Dtor
+ osl_incrementInterlockedCount( &m_refCount );
+ dispose();
+ }
+ }
+ // -----------------------------------------------------------------------------
+ AccessibleBrowseBoxTable* AccessibleTabListBox::createAccessibleTable()
+ {
+ return new AccessibleTabListBoxTable( this, *m_pTabListBox );
+ }
+
+ // XInterface -----------------------------------------------------------------
+ IMPLEMENT_FORWARD_XINTERFACE2( AccessibleTabListBox, AccessibleBrowseBox, AccessibleTabListBox_Base )
+
+ // XTypeProvider --------------------------------------------------------------
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleTabListBox, AccessibleBrowseBox, AccessibleTabListBox_Base )
+
+ // XAccessibleContext ---------------------------------------------------------
+
+ sal_Int32 SAL_CALL AccessibleTabListBox::getAccessibleChildCount()
+ throw ( uno::RuntimeException )
+ {
+ return 2; // header and table
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference< XAccessibleContext > SAL_CALL AccessibleTabListBox::getAccessibleContext() throw ( RuntimeException )
+ {
+ return this;
+ }
+
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL
+ AccessibleTabListBox::getAccessibleChild( sal_Int32 nChildIndex )
+ throw ( IndexOutOfBoundsException, RuntimeException )
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+ ensureIsAlive();
+
+ if ( nChildIndex < 0 || nChildIndex > 1 )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xRet;
+ if (nChildIndex == 0)
+ {
+ //! so far the actual implementation object only supports column headers
+ xRet = implGetFixedChild( ::svt::BBINDEX_COLUMNHEADERBAR );
+ }
+ else if (nChildIndex == 1)
+ xRet = implGetFixedChild( ::svt::BBINDEX_TABLE );
+
+ if ( !xRet.is() )
+ throw RuntimeException();
+
+ return xRet;
+ }
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/accessibletablistboxtable.cxx b/accessibility/source/extended/accessibletablistboxtable.cxx
new file mode 100644
index 000000000000..3cd3c333148a
--- /dev/null
+++ b/accessibility/source/extended/accessibletablistboxtable.cxx
@@ -0,0 +1,374 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include "accessibility/extended/accessibletablistboxtable.hxx"
+#include "accessibility/extended/AccessibleBrowseBoxTableCell.hxx"
+#include "accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx"
+#include <svtools/svtabbx.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ // class AccessibleTabListBoxTable ---------------------------------------------
+
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star;
+
+ DBG_NAME(AccessibleTabListBoxTable)
+
+ // -----------------------------------------------------------------------------
+ // Ctor() and Dtor()
+ // -----------------------------------------------------------------------------
+ AccessibleTabListBoxTable::AccessibleTabListBoxTable( const Reference< XAccessible >& rxParent, SvHeaderTabListBox& rBox ) :
+
+ AccessibleBrowseBoxTable( rxParent, rBox ),
+
+ m_pTabListBox ( &rBox )
+
+ {
+ DBG_CTOR( AccessibleTabListBoxTable, NULL );
+
+ m_pTabListBox->AddEventListener( LINK( this, AccessibleTabListBoxTable, WindowEventListener ) );
+ }
+ // -----------------------------------------------------------------------------
+ AccessibleTabListBoxTable::~AccessibleTabListBoxTable()
+ {
+ DBG_DTOR( AccessibleTabListBoxTable, NULL );
+
+ if ( isAlive() )
+ {
+ m_pTabListBox = NULL;
+
+ // increment ref count to prevent double call of Dtor
+ osl_incrementInterlockedCount( &m_refCount );
+ dispose();
+ }
+ }
+ // -----------------------------------------------------------------------------
+ void AccessibleTabListBoxTable::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+ {
+ if ( isAlive() )
+ {
+ ULONG nEventId = rVclWindowEvent.GetId();
+ switch ( nEventId )
+ {
+ case VCLEVENT_OBJECT_DYING :
+ {
+ m_pTabListBox->RemoveEventListener( LINK( this, AccessibleTabListBoxTable, WindowEventListener ) );
+ m_pTabListBox = NULL;
+ break;
+ }
+
+ case VCLEVENT_CONTROL_GETFOCUS :
+ case VCLEVENT_CONTROL_LOSEFOCUS :
+ {
+ uno::Any aOldValue, aNewValue;
+ if ( VCLEVENT_CONTROL_GETFOCUS == nEventId )
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ else
+ aOldValue <<= AccessibleStateType::FOCUSED;
+ commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+ break;
+ }
+
+ case VCLEVENT_LISTBOX_SELECT :
+ {
+ // First send an event that tells the listeners of a
+ // modified selection. The active descendant event is
+ // send after that so that the receiving AT has time to
+ // read the text or name of the active child.
+ commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+ if ( m_pTabListBox && m_pTabListBox->HasFocus() )
+ {
+ SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+ if ( pEntry )
+ {
+ sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry );
+ USHORT nCol = m_pTabListBox->GetCurrColumn();
+ Reference< XAccessible > xChild =
+ m_pTabListBox->CreateAccessibleCell( nRow, nCol );
+ uno::Any aOldValue, aNewValue;
+
+ if ( m_pTabListBox->IsTransientChildrenDisabled() )
+ {
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ TriState eState = STATE_DONTKNOW;
+ if ( m_pTabListBox->IsCellCheckBox( nRow, nCol, eState ) )
+ {
+ AccessibleCheckBoxCell* pCell =
+ static_cast< AccessibleCheckBoxCell* >( xChild.get() );
+ pCell->commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+ }
+ else
+ {
+ AccessibleBrowseBoxTableCell* pCell =
+ static_cast< AccessibleBrowseBoxTableCell* >( xChild.get() );
+ pCell->commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+ }
+ }
+ else
+ {
+ aNewValue <<= xChild;
+ commitEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aNewValue, aOldValue );
+ }
+ }
+ }
+ break;
+ }
+
+ case VCLEVENT_CHECKBOX_TOGGLE :
+ {
+ if ( m_pTabListBox && m_pTabListBox->HasFocus() )
+ {
+ SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+ if ( pEntry )
+ {
+ sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry );
+ USHORT nCol = m_pTabListBox->GetCurrColumn();
+ TriState eState = STATE_DONTKNOW;
+ if ( m_pTabListBox->IsCellCheckBox( nRow, nCol, eState ) )
+ {
+ Reference< XAccessible > xChild =
+ m_pTabListBox->CreateAccessibleCell( nRow, nCol );
+ AccessibleCheckBoxCell* pCell =
+ static_cast< AccessibleCheckBoxCell* >( xChild.get() );
+ pCell->SetChecked( m_pTabListBox->IsItemChecked( pEntry, nCol ) );
+ }
+ }
+ }
+ break;
+ }
+
+ case VCLEVENT_TABLECELL_NAMECHANGED :
+ {
+ if ( m_pTabListBox->IsTransientChildrenDisabled() )
+ {
+ commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+ TabListBoxEventData* pData = static_cast< TabListBoxEventData* >( rVclWindowEvent.GetData() );
+ SvLBoxEntry* pEntry = pData != NULL ? pData->m_pEntry : NULL;
+ if ( pEntry )
+ {
+ sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry );
+ USHORT nCol = pData->m_nColumn;
+ Reference< XAccessible > xChild =
+ m_pTabListBox->CreateAccessibleCell( nRow, nCol );
+ uno::Any aOldValue, aNewValue;
+ aOldValue <<= ::rtl::OUString( pData->m_sOldText );
+ ::rtl::OUString sNewText( m_pTabListBox->GetCellText( nRow, nCol ) );
+ aNewValue <<= sNewText;
+ TriState eState = STATE_DONTKNOW;
+
+ if ( m_pTabListBox->IsCellCheckBox( nRow, nCol, eState ) )
+ {
+ AccessibleCheckBoxCell* pCell =
+ static_cast< AccessibleCheckBoxCell* >( xChild.get() );
+ pCell->commitEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue );
+ }
+ else
+ {
+ AccessibleBrowseBoxTableCell* pCell =
+ static_cast< AccessibleBrowseBoxTableCell* >( xChild.get() );
+ pCell->nameChanged( sNewText, pData->m_sOldText );
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ // -----------------------------------------------------------------------------
+ IMPL_LINK( AccessibleTabListBoxTable, WindowEventListener, VclSimpleEvent*, pEvent )
+ {
+ DBG_ASSERT( pEvent && pEvent->ISA( VclWindowEvent ), "Unknown WindowEvent!" );
+ if ( pEvent && pEvent->ISA( VclWindowEvent ) )
+ {
+ DBG_ASSERT( ( (VclWindowEvent*)pEvent )->GetWindow() && m_pTabListBox, "no event window" );
+ ProcessWindowEvent( *(VclWindowEvent*)pEvent );
+ }
+ return 0;
+ }
+ // helpers --------------------------------------------------------------------
+
+ void AccessibleTabListBoxTable::ensureValidIndex( sal_Int32 _nIndex ) const
+ SAL_THROW( ( IndexOutOfBoundsException ) )
+ {
+ if ( ( _nIndex < 0 ) || ( _nIndex >= implGetCellCount() ) )
+ throw IndexOutOfBoundsException();
+ }
+
+ sal_Bool AccessibleTabListBoxTable::implIsRowSelected( sal_Int32 _nRow ) const
+ {
+ return m_pTabListBox ? m_pTabListBox->IsSelected( m_pTabListBox->GetEntry( _nRow ) ) : sal_False;
+ }
+
+ void AccessibleTabListBoxTable::implSelectRow( sal_Int32 _nRow, sal_Bool _bSelect )
+ {
+ if ( m_pTabListBox )
+ m_pTabListBox->Select( m_pTabListBox->GetEntry( _nRow ), _bSelect );
+ }
+
+ sal_Int32 AccessibleTabListBoxTable::implGetRowCount() const
+ {
+ return m_pTabListBox ? m_pTabListBox->GetEntryCount() : 0;
+ }
+
+ sal_Int32 AccessibleTabListBoxTable::implGetColumnCount() const
+ {
+ return m_pTabListBox ? m_pTabListBox->GetColumnCount() : 0;
+ }
+
+ sal_Int32 AccessibleTabListBoxTable::implGetSelRowCount() const
+ {
+ return m_pTabListBox ? m_pTabListBox->GetSelectionCount() : 0;
+ }
+
+ sal_Int32 AccessibleTabListBoxTable::implGetSelRow( sal_Int32 nSelRow ) const
+ {
+ if ( m_pTabListBox )
+ {
+ sal_Int32 nRow = 0;
+ SvLBoxEntry* pEntry = m_pTabListBox->FirstSelected();
+ while ( pEntry )
+ {
+ ++nRow;
+ if ( nRow == nSelRow )
+ return m_pTabListBox->GetEntryPos( pEntry );
+ pEntry = m_pTabListBox->NextSelected( pEntry );
+ }
+ }
+
+ return 0;
+ }
+ // -----------------------------------------------------------------------------
+ // XInterface & XTypeProvider
+ // -----------------------------------------------------------------------------
+ IMPLEMENT_FORWARD_XINTERFACE2(AccessibleTabListBoxTable, AccessibleBrowseBoxTable, AccessibleTabListBoxTableImplHelper)
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2(AccessibleTabListBoxTable, AccessibleBrowseBoxTable, AccessibleTabListBoxTableImplHelper)
+ // -----------------------------------------------------------------------------
+ // XServiceInfo
+ // -----------------------------------------------------------------------------
+ ::rtl::OUString AccessibleTabListBoxTable::getImplementationName (void) throw (RuntimeException)
+ {
+ return ::rtl::OUString::createFromAscii("com.sun.star.comp.svtools.AccessibleTabListBoxTable");
+ }
+ // -----------------------------------------------------------------------------
+ // XAccessibleSelection
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleTabListBoxTable::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+ ensureValidIndex( nChildIndex );
+
+ implSelectRow( implGetRow( nChildIndex ), sal_True );
+ }
+ // -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL AccessibleTabListBoxTable::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+ ensureValidIndex( nChildIndex );
+
+ return implIsRowSelected( implGetRow( nChildIndex ) );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleTabListBoxTable::clearAccessibleSelection( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+
+ m_pTabListBox->SetNoSelection();
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleTabListBoxTable::selectAllAccessibleChildren( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+
+ m_pTabListBox->SelectAll();
+ }
+ // -----------------------------------------------------------------------------
+ sal_Int32 SAL_CALL AccessibleTabListBoxTable::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+
+ return implGetColumnCount() * implGetSelRowCount();
+ }
+ // -----------------------------------------------------------------------------
+ Reference< XAccessible > SAL_CALL AccessibleTabListBoxTable::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+
+ sal_Int32 nRows = implGetSelRowCount();
+ if ( nRows == 0 )
+ throw IndexOutOfBoundsException();
+
+ sal_Int32 nRow = implGetSelRow( nSelectedChildIndex % nRows );
+ sal_Int32 nColumn = nSelectedChildIndex / nRows;
+ return getAccessibleCellAt( nRow, nColumn );
+ }
+ // -----------------------------------------------------------------------------
+ void SAL_CALL AccessibleTabListBoxTable::deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( getOslMutex() );
+
+ ensureIsAlive();
+ ensureValidIndex( nSelectedChildIndex );
+
+ implSelectRow( implGetRow( nSelectedChildIndex ), sal_False );
+ }
+
+//........................................................................
+}// namespace accessibility
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/listboxaccessible.cxx b/accessibility/source/extended/listboxaccessible.cxx
new file mode 100644
index 000000000000..ff7fc77d4069
--- /dev/null
+++ b/accessibility/source/extended/listboxaccessible.cxx
@@ -0,0 +1,106 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/extended/listboxaccessible.hxx>
+#include <svtools/svtreebx.hxx>
+
+//........................................................................
+namespace accessibility
+{
+//........................................................................
+
+ //====================================================================
+ //= ListBoxAccessibleBase
+ //====================================================================
+ //--------------------------------------------------------------------
+ ListBoxAccessibleBase::ListBoxAccessibleBase( SvTreeListBox& _rWindow )
+ :m_pWindow( &_rWindow )
+ {
+ m_pWindow->AddEventListener( LINK( this, ListBoxAccessibleBase, WindowEventListener ) );
+ }
+
+ //--------------------------------------------------------------------
+ ListBoxAccessibleBase::~ListBoxAccessibleBase( )
+ {
+ if ( m_pWindow )
+ {
+ // cannot call "dispose" here, as it is abstract, so the VTABLE of the derived class
+ // is not intact anymore
+ // so we call our "disposing" only
+ disposing();
+ }
+ }
+
+ //--------------------------------------------------------------------
+ IMPL_LINK( ListBoxAccessibleBase, WindowEventListener, VclSimpleEvent*, pEvent )
+ {
+ DBG_ASSERT( pEvent && pEvent->ISA( VclWindowEvent ), "ListBoxAccessibleBase::WindowEventListener: unexpected WindowEvent!" );
+ if ( pEvent && pEvent->ISA( VclWindowEvent ) )
+ {
+ DBG_ASSERT( static_cast< VclWindowEvent* >( pEvent )->GetWindow() , "ListBoxAccessibleBase::WindowEventListener: no event window!" );
+ DBG_ASSERT( static_cast< VclWindowEvent* >( pEvent )->GetWindow() == m_pWindow, "ListBoxAccessibleBase::WindowEventListener: where did this come from?" );
+
+ ProcessWindowEvent( *static_cast< VclWindowEvent* >( pEvent ) );
+ }
+ return 0;
+ }
+
+ // -----------------------------------------------------------------------------
+ void ListBoxAccessibleBase::disposing()
+ {
+ if ( m_pWindow )
+ m_pWindow->RemoveEventListener( LINK( this, ListBoxAccessibleBase, WindowEventListener ) );
+ m_pWindow = NULL;
+ }
+
+ // -----------------------------------------------------------------------------
+ void ListBoxAccessibleBase::ProcessWindowEvent( const VclWindowEvent& _rVclWindowEvent )
+ {
+ if ( isAlive() )
+ {
+ switch ( _rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_OBJECT_DYING :
+ {
+ if ( m_pWindow )
+ m_pWindow->RemoveEventListener( LINK( this, ListBoxAccessibleBase, WindowEventListener ) );
+ m_pWindow = NULL;
+ dispose();
+ break;
+ }
+ }
+ }
+ }
+
+//........................................................................
+} // namespace accessibility
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/extended/makefile.mk b/accessibility/source/extended/makefile.mk
new file mode 100755
index 000000000000..27f4403c8210
--- /dev/null
+++ b/accessibility/source/extended/makefile.mk
@@ -0,0 +1,81 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=accessibility
+TARGET=extended
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+.IF "$(OS)$(COM)"=="SOLARISI"
+NOOPTFILES=$(SLO)$/accessibletabbarpagelist.obj
+.ENDIF # "$(OS)$(COM)"=="SOLARISI"
+
+SLOFILES=\
+ $(SLO)$/AccessibleBrowseBoxCheckBoxCell.obj \
+ $(SLO)$/AccessibleBrowseBoxBase.obj \
+ $(SLO)$/AccessibleBrowseBox.obj \
+ $(SLO)$/AccessibleBrowseBoxTableCell.obj \
+ $(SLO)$/AccessibleBrowseBoxHeaderCell.obj \
+ $(SLO)$/AccessibleBrowseBoxTableBase.obj \
+ $(SLO)$/AccessibleBrowseBoxTable.obj \
+ $(SLO)$/AccessibleBrowseBoxHeaderBar.obj \
+ $(SLO)$/accessibleiconchoicectrl.obj \
+ $(SLO)$/accessibleiconchoicectrlentry.obj \
+ $(SLO)$/accessiblelistbox.obj \
+ $(SLO)$/accessiblelistboxentry.obj \
+ $(SLO)$/accessibletabbarbase.obj \
+ $(SLO)$/accessibletabbar.obj \
+ $(SLO)$/accessibletabbarpage.obj \
+ $(SLO)$/accessibletabbarpagelist.obj \
+ $(SLO)$/accessibletablistbox.obj \
+ $(SLO)$/accessibletablistboxtable.obj \
+ $(SLO)$/listboxaccessible.obj \
+ $(SLO)$/accessiblebrowseboxcell.obj \
+ $(SLO)$/accessibleeditbrowseboxcell.obj \
+ $(SLO)$/textwindowaccessibility.obj \
+ $(SLO)$/AccessibleGridControlBase.obj \
+ $(SLO)$/AccessibleGridControl.obj \
+ $(SLO)$/AccessibleGridControlTableBase.obj \
+ $(SLO)$/AccessibleGridControlHeader.obj \
+ $(SLO)$/AccessibleGridControlTableCell.obj \
+ $(SLO)$/AccessibleGridControlHeaderCell.obj \
+ $(SLO)$/AccessibleGridControlTable.obj \
+ $(SLO)$/AccessibleToolPanelDeck.obj \
+ $(SLO)$/AccessibleToolPanelDeckTabBar.obj \
+ $(SLO)$/AccessibleToolPanelDeckTabBarItem.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/source/extended/textwindowaccessibility.cxx b/accessibility/source/extended/textwindowaccessibility.cxx
new file mode 100644
index 000000000000..f8462e144633
--- /dev/null
+++ b/accessibility/source/extended/textwindowaccessibility.cxx
@@ -0,0 +1,2254 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include <accessibility/extended/textwindowaccessibility.hxx>
+#include "comphelper/accessibleeventnotifier.hxx"
+#include "unotools/accessiblerelationsethelper.hxx"
+#include <unotools/accessiblestatesethelper.hxx>
+#include <vcl/window.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <algorithm>
+#include <vector>
+#include <hash_map>
+
+namespace css = ::com::sun::star;
+
+namespace accessibility
+{
+
+// Both ::osl::Mutex and ParagraphBase implement acquire and release, and thus
+// ::rtl::Reference< Paragraph > does not work. So ParagraphImpl was factored
+// out and ::rtl::Reference< ParagraphImpl > is used instead.
+class Paragraph: private ::osl::Mutex, public ParagraphImpl
+{
+public:
+ inline Paragraph(::rtl::Reference< Document > const & rDocument,
+ Paragraphs::size_type nNumber):
+ ParagraphImpl(rDocument, nNumber, *this) {}
+};
+
+void SfxListenerGuard::startListening(::SfxBroadcaster & rNotifier)
+{
+ OSL_ENSURE(m_pNotifier == 0, "called more than once");
+ m_pNotifier = &rNotifier;
+ m_rListener.StartListening(*m_pNotifier, true);
+}
+
+void SfxListenerGuard::endListening()
+{
+ if (m_pNotifier != 0)
+ {
+ m_rListener.EndListening(*m_pNotifier);
+ m_pNotifier = 0;
+ }
+}
+
+void WindowListenerGuard::startListening(::Window & rNotifier)
+{
+ OSL_ENSURE(m_pNotifier == 0, "called more than once");
+ m_pNotifier = &rNotifier;
+ m_pNotifier->AddEventListener(m_aListener);
+}
+
+void WindowListenerGuard::endListening()
+{
+ if (m_pNotifier != 0)
+ {
+ m_pNotifier->RemoveEventListener(m_aListener);
+ m_pNotifier = 0;
+ }
+}
+
+ParagraphImpl::ParagraphImpl(::rtl::Reference< Document > const & rDocument,
+ Paragraphs::size_type nNumber,
+ ::osl::Mutex & rMutex):
+ ParagraphBase(rMutex),
+ m_xDocument(rDocument),
+ m_nNumber(nNumber),
+ m_nClientId(0)
+{
+ m_aParagraphText = m_xDocument->retrieveParagraphText(this);
+}
+
+void
+ParagraphImpl::numberChanged(bool bIncremented)
+{
+ if (bIncremented)
+ ++m_nNumber;
+ else
+ --m_nNumber;
+}
+
+void ParagraphImpl::textChanged()
+{
+ ::rtl::OUString aParagraphText = implGetText();
+ ::css::uno::Any aOldValue, aNewValue;
+ if ( implInitTextChangedEvent( m_aParagraphText, aParagraphText, aOldValue, aNewValue ) )
+ {
+ m_aParagraphText = aParagraphText;
+ notifyEvent(::css::accessibility::AccessibleEventId::
+ TEXT_CHANGED,
+ aOldValue, aNewValue);
+ }
+}
+
+void ParagraphImpl::notifyEvent(::sal_Int16 nEventId,
+ ::css::uno::Any const & rOldValue,
+ ::css::uno::Any const & rNewValue)
+{
+ if (m_nClientId)
+ comphelper::AccessibleEventNotifier::addEvent( m_nClientId, ::css::accessibility::AccessibleEventObject(
+ static_cast< ::cppu::OWeakObject * >(this),
+ nEventId, rNewValue, rOldValue) );
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessibleContext > SAL_CALL
+ParagraphImpl::getAccessibleContext() throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return this;
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getAccessibleChildCount()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return 0;
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+ParagraphImpl::getAccessibleChild(::sal_Int32)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " ParagraphImpl::getAccessibleChild")),
+ static_cast< ::css::uno::XWeak * >(this));
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+ParagraphImpl::getAccessibleParent()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->getAccessible();
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getAccessibleIndexInParent()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveParagraphIndex(this);
+}
+
+// virtual
+::sal_Int16 SAL_CALL ParagraphImpl::getAccessibleRole()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return ::css::accessibility::AccessibleRole::PARAGRAPH;
+}
+
+// virtual
+::rtl::OUString SAL_CALL ParagraphImpl::getAccessibleDescription()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return ::rtl::OUString();
+}
+
+// virtual
+::rtl::OUString SAL_CALL ParagraphImpl::getAccessibleName()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return ::rtl::OUString();
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessibleRelationSet >
+SAL_CALL ParagraphImpl::getAccessibleRelationSet()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveParagraphRelationSet( this );
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessibleStateSet >
+SAL_CALL ParagraphImpl::getAccessibleStateSet()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+
+ // FIXME Notification of changes (STATE_CHANGED) missing when
+ // m_rView.IsReadOnly() changes:
+ return new ::utl::AccessibleStateSetHelper(
+ m_xDocument->retrieveParagraphState(this));
+}
+
+// virtual
+::css::lang::Locale SAL_CALL ParagraphImpl::getLocale()
+ throw (::css::accessibility::IllegalAccessibleComponentStateException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveLocale();
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::containsPoint(::css::awt::Point const & rPoint)
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ ::css::awt::Rectangle aRect(m_xDocument->retrieveParagraphBounds(this,
+ false));
+ return rPoint.X >= 0 && rPoint.X < aRect.Width
+ && rPoint.Y >= 0 && rPoint.Y < aRect.Height;
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+ParagraphImpl::getAccessibleAtPoint(::css::awt::Point const &)
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return 0;
+}
+
+// virtual
+::css::awt::Rectangle SAL_CALL ParagraphImpl::getBounds()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveParagraphBounds(this, false);
+}
+
+// virtual
+::css::awt::Point SAL_CALL ParagraphImpl::getLocation()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ ::css::awt::Rectangle aRect(m_xDocument->retrieveParagraphBounds(this,
+ false));
+ return ::css::awt::Point(aRect.X, aRect.Y);
+}
+
+// virtual
+::css::awt::Point SAL_CALL ParagraphImpl::getLocationOnScreen()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ ::css::awt::Rectangle aRect(m_xDocument->retrieveParagraphBounds(this,
+ true));
+ return ::css::awt::Point(aRect.X, aRect.Y);
+}
+
+// virtual
+::css::awt::Size SAL_CALL ParagraphImpl::getSize()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ ::css::awt::Rectangle aRect(m_xDocument->retrieveParagraphBounds(this,
+ false));
+ return ::css::awt::Size(aRect.Width, aRect.Height);
+}
+
+// virtual
+void SAL_CALL ParagraphImpl::grabFocus() throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ Window* pWindow = m_xDocument->GetWindow();
+ if ( pWindow )
+ {
+ pWindow->GrabFocus();
+ }
+ try
+ {
+ m_xDocument->changeParagraphSelection(this, 0, 0);
+ }
+ catch (::css::lang::IndexOutOfBoundsException & rEx)
+ {
+ OSL_TRACE(
+ "textwindowaccessibility.cxx: ParagraphImpl::grabFocus:"
+ " caught unexpected %s\n",
+ ::rtl::OUStringToOString(rEx.Message, RTL_TEXTENCODING_UTF8).
+ getStr());
+ }
+}
+
+// virtual
+::css::uno::Any SAL_CALL ParagraphImpl::getAccessibleKeyBinding()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return ::css::uno::Any();
+}
+
+// virtual
+::css::util::Color SAL_CALL ParagraphImpl::getForeground()
+ throw (::css::uno::RuntimeException)
+{
+ return 0; // TODO
+}
+
+// virtual
+::css::util::Color SAL_CALL ParagraphImpl::getBackground()
+ throw (::css::uno::RuntimeException)
+{
+ return 0; // TODO
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getCaretPosition()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveParagraphCaretPosition(this);
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::setCaretPosition(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphSelection(this, nIndex, nIndex);
+ return true;
+}
+
+// virtual
+::sal_Unicode SAL_CALL ParagraphImpl::getCharacter(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getCharacter(nIndex);
+}
+
+// virtual
+::css::uno::Sequence< ::css::beans::PropertyValue > SAL_CALL
+ParagraphImpl::getCharacterAttributes(::sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveCharacterAttributes( this, nIndex, aRequestedAttributes );
+}
+
+// virtual
+::css::awt::Rectangle SAL_CALL
+ParagraphImpl::getCharacterBounds(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ ::css::awt::Rectangle aBounds(m_xDocument->retrieveCharacterBounds(this, nIndex));
+ ::css::awt::Rectangle aParaBounds(m_xDocument->retrieveParagraphBounds(this, false));
+ aBounds.X -= aParaBounds.X;
+ aBounds.Y -= aParaBounds.Y;
+ return aBounds;
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getCharacterCount()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getCharacterCount();
+}
+
+// virtual
+::sal_Int32 SAL_CALL
+ParagraphImpl::getIndexAtPoint(::css::awt::Point const & rPoint)
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ ::css::awt::Point aPoint(rPoint);
+ ::css::awt::Rectangle aParaBounds(m_xDocument->retrieveParagraphBounds(this, false));
+ aPoint.X += aParaBounds.X;
+ aPoint.Y += aParaBounds.Y;
+ return m_xDocument->retrieveCharacterIndex(this, aPoint);
+}
+
+// virtual
+::rtl::OUString SAL_CALL ParagraphImpl::getSelectedText()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+
+ return OCommonAccessibleText::getSelectedText();
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getSelectionStart()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getSelectionStart();
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getSelectionEnd()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getSelectionEnd();
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::setSelection(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphSelection(this, nStartIndex, nEndIndex);
+ return true;
+}
+
+// virtual
+::rtl::OUString SAL_CALL ParagraphImpl::getText()
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getText();
+}
+
+// virtual
+::rtl::OUString SAL_CALL ParagraphImpl::getTextRange(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getTextRange(nStartIndex, nEndIndex);
+}
+
+// virtual
+::com::sun::star::accessibility::TextSegment SAL_CALL ParagraphImpl::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getTextAtIndex(nIndex, aTextType);
+}
+
+// virtual
+::com::sun::star::accessibility::TextSegment SAL_CALL ParagraphImpl::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getTextBeforeIndex(nIndex, aTextType);
+}
+
+// virtual
+::com::sun::star::accessibility::TextSegment SAL_CALL ParagraphImpl::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ checkDisposed();
+ return OCommonAccessibleText::getTextBehindIndex(nIndex, aTextType);
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::copyText(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->copyParagraphText(this, nStartIndex, nEndIndex);
+ return true;
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::cutText(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphText(this, nStartIndex, nEndIndex, true, false,
+ ::rtl::OUString());
+ return true;
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::pasteText(::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphText(this, nIndex, nIndex, false, true,
+ ::rtl::OUString());
+ return true;
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::deleteText(::sal_Int32 nStartIndex,
+ ::sal_Int32 nEndIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphText(this, nStartIndex, nEndIndex, false, false,
+ ::rtl::OUString());
+ return true;
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::insertText(::rtl::OUString const & rText,
+ ::sal_Int32 nIndex)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphText(this, nIndex, nIndex, false, false, rText);
+ return true;
+}
+
+// virtual
+::sal_Bool SAL_CALL
+ParagraphImpl::replaceText(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex,
+ ::rtl::OUString const & rReplacement)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphText(this, nStartIndex, nEndIndex, false, false,
+ rReplacement);
+ return true;
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::setAttributes(
+ ::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex,
+ ::css::uno::Sequence< ::css::beans::PropertyValue > const & rAttributeSet)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphAttributes(this, nStartIndex, nEndIndex,
+ rAttributeSet);
+ return true;
+}
+
+// virtual
+::sal_Bool SAL_CALL ParagraphImpl::setText(::rtl::OUString const & rText)
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ m_xDocument->changeParagraphText(this, rText);
+ return true;
+}
+
+// virtual
+::css::uno::Sequence< ::css::beans::PropertyValue > SAL_CALL
+ParagraphImpl::getDefaultAttributes(const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes)
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveDefaultAttributes( this, RequestedAttributes );
+}
+
+// virtual
+::css::uno::Sequence< ::css::beans::PropertyValue > SAL_CALL
+ParagraphImpl::getRunAttributes(::sal_Int32 Index, const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveRunAttributes( this, Index, RequestedAttributes );
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getLineNumberAtIndex( ::sal_Int32 nIndex )
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+
+ ::sal_Int32 nLineNo = -1;
+ ::css::i18n::Boundary aBoundary =
+ m_xDocument->retrieveParagraphLineBoundary( this, nIndex, &nLineNo );
+
+ return nLineNo;
+}
+
+// virtual
+::css::accessibility::TextSegment SAL_CALL ParagraphImpl::getTextAtLineNumber( ::sal_Int32 nLineNo )
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ checkDisposed();
+
+ ::css::i18n::Boundary aBoundary =
+ m_xDocument->retrieveParagraphBoundaryOfLine( this, nLineNo );
+
+ return ::css::accessibility::TextSegment( getTextRange(aBoundary.startPos, aBoundary.endPos),
+ aBoundary.startPos, aBoundary.endPos);
+}
+
+// virtual
+::css::accessibility::TextSegment SAL_CALL ParagraphImpl::getTextAtLineWithCaret( )
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+
+ sal_Int32 nLineNo = getNumberOfLineWithCaret();
+
+ try {
+ return ( nLineNo >= 0 ) ?
+ getTextAtLineNumber( nLineNo ) :
+ ::css::accessibility::TextSegment();
+ } catch (const ::css::lang::IndexOutOfBoundsException&) {
+ throw ::css::uno::RuntimeException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " ParagraphImpl::getTextAtLineWithCaret") ),
+ static_cast< ::css::uno::XWeak * >( this ) );
+ }
+}
+
+// virtual
+::sal_Int32 SAL_CALL ParagraphImpl::getNumberOfLineWithCaret( )
+ throw (::css::uno::RuntimeException)
+{
+ checkDisposed();
+ return m_xDocument->retrieveParagraphLineWithCursor(this);
+}
+
+
+// virtual
+void SAL_CALL ParagraphImpl::addEventListener(
+ ::css::uno::Reference<
+ ::css::accessibility::XAccessibleEventListener > const & rListener)
+ throw (::css::uno::RuntimeException)
+{
+ if (rListener.is())
+ {
+ ::osl::ClearableMutexGuard aGuard(rBHelper.rMutex);
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ aGuard.clear();
+ rListener->disposing(::css::lang::EventObject(
+ static_cast< ::cppu::OWeakObject * >(this)));
+ }
+ else
+ {
+ if (!m_nClientId)
+ m_nClientId = comphelper::AccessibleEventNotifier::registerClient( );
+ comphelper::AccessibleEventNotifier::addEventListener( m_nClientId, rListener );
+ }
+ }
+}
+
+// virtual
+void SAL_CALL ParagraphImpl::removeEventListener(
+ ::css::uno::Reference<
+ ::css::accessibility::XAccessibleEventListener > const & rListener)
+ throw (::css::uno::RuntimeException)
+{
+ comphelper::AccessibleEventNotifier::TClientId nId = 0;
+ {
+ ::osl::ClearableMutexGuard aGuard(rBHelper.rMutex);
+ if (rListener.is() && m_nClientId != 0
+ && comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, rListener ) == 0)
+ {
+ nId = m_nClientId;
+ m_nClientId = 0;
+ }
+ }
+ if (nId != 0)
+ {
+ // no listeners anymore
+ // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+ // and at least to us not firing any events anymore, in case somebody calls
+ // NotifyAccessibleEvent, again
+ comphelper::AccessibleEventNotifier::revokeClient(nId);
+ }
+}
+
+// virtual
+void SAL_CALL ParagraphImpl::disposing()
+{
+ comphelper::AccessibleEventNotifier::TClientId nId = 0;
+ {
+ ::osl::ClearableMutexGuard aGuard(rBHelper.rMutex);
+ nId = m_nClientId;
+ m_nClientId = 0;
+ }
+ if (nId != 0)
+ comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing(nId, *this);
+}
+
+// virtual
+::rtl::OUString ParagraphImpl::implGetText()
+{
+ return m_xDocument->retrieveParagraphText(this);
+}
+
+// virtual
+::css::lang::Locale ParagraphImpl::implGetLocale()
+{
+ return m_xDocument->retrieveLocale();
+}
+
+// virtual
+void ParagraphImpl::implGetSelection(::sal_Int32 & rStartIndex,
+ ::sal_Int32 & rEndIndex)
+{
+ m_xDocument->retrieveParagraphSelection(this, &rStartIndex, &rEndIndex);
+}
+
+// virtual
+void ParagraphImpl::implGetParagraphBoundary( ::css::i18n::Boundary& rBoundary,
+ ::sal_Int32 nIndex )
+{
+ ::rtl::OUString sText( implGetText() );
+ ::sal_Int32 nLength = sText.getLength();
+
+ if ( implIsValidIndex( nIndex, nLength ) )
+ {
+ rBoundary.startPos = 0;
+ rBoundary.endPos = nLength;
+ }
+ else
+ {
+ rBoundary.startPos = nIndex;
+ rBoundary.endPos = nIndex;
+ }
+}
+
+// virtual
+void ParagraphImpl::implGetLineBoundary( ::css::i18n::Boundary& rBoundary,
+ ::sal_Int32 nIndex )
+{
+ ::rtl::OUString sText( implGetText() );
+ ::sal_Int32 nLength = sText.getLength();
+
+ if ( implIsValidIndex( nIndex, nLength ) || nIndex == nLength )
+ {
+ ::css::i18n::Boundary aBoundary =
+ m_xDocument->retrieveParagraphLineBoundary( this, nIndex );
+ rBoundary.startPos = aBoundary.startPos;
+ rBoundary.endPos = aBoundary.endPos;
+ }
+ else
+ {
+ rBoundary.startPos = nIndex;
+ rBoundary.endPos = nIndex;
+ }
+}
+
+
+void ParagraphImpl::checkDisposed()
+{
+ ::osl::MutexGuard aGuard(rBHelper.rMutex);
+ if (!(rBHelper.bDisposed || rBHelper.bInDispose))
+ return;
+ throw ::css::lang::DisposedException(
+ ::rtl::OUString(), static_cast< ::css::uno::XWeak * >(this));
+}
+
+Document::Document(::VCLXWindow * pVclXWindow, ::TextEngine & rEngine,
+ ::TextView & rView, bool bCompoundControlChild):
+ VCLXAccessibleComponent(pVclXWindow),
+ m_xAccessible(pVclXWindow),
+ m_rEngine(rEngine),
+ m_rView(rView),
+ m_aEngineListener(*this),
+ m_aViewListener(LINK(this, Document, WindowEventHandler)),
+ m_bCompoundControlChild(bCompoundControlChild)
+{}
+
+::css::lang::Locale Document::retrieveLocale()
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ return m_rEngine.GetLocale();
+}
+
+::sal_Int32 Document::retrieveParagraphIndex(ParagraphImpl const * pParagraph)
+{
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+
+ // If a client holds on to a Paragraph that is no longer visible, it can
+ // happen that this Paragraph lies outside the range from m_aVisibleBegin
+ // to m_aVisibleEnd. In that case, return -1 instead of a valid index:
+ Paragraphs::iterator aPara(m_xParagraphs->begin()
+ + pParagraph->getNumber());
+ return aPara < m_aVisibleBegin || aPara >= m_aVisibleEnd
+ ? -1 : static_cast< ::sal_Int32 >(aPara - m_aVisibleBegin);
+ // XXX numeric overflow
+}
+
+::sal_Int64 Document::retrieveParagraphState(ParagraphImpl const * pParagraph)
+{
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+
+ // If a client holds on to a Paragraph that is no longer visible, it can
+ // happen that this Paragraph lies outside the range from m_aVisibleBegin
+ // to m_aVisibleEnd. In that case, it is neither VISIBLE nor SHOWING:
+ ::sal_Int64 nState
+ = (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::ENABLED)
+ | (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::SENSITIVE)
+ | (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::FOCUSABLE)
+ | (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::MULTI_LINE);
+ if (!m_rView.IsReadOnly())
+ nState |= (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::EDITABLE);
+ Paragraphs::iterator aPara(m_xParagraphs->begin()
+ + pParagraph->getNumber());
+ if (aPara >= m_aVisibleBegin && aPara < m_aVisibleEnd)
+ {
+ nState
+ |= (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::VISIBLE)
+ | (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::SHOWING);
+ if (aPara == m_aFocused)
+ nState |= (static_cast< ::sal_Int64 >(1)
+ << ::css::accessibility::AccessibleStateType::FOCUSED);
+ }
+ return nState;
+};
+
+::css::awt::Rectangle
+Document::retrieveParagraphBounds(ParagraphImpl const * pParagraph,
+ bool bAbsolute)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+
+ // If a client holds on to a Paragraph that is no longer visible (as it
+ // scrolled out the top of the view), it can happen that this Paragraph
+ // lies before m_aVisibleBegin. In that case, calculate the vertical
+ // position of the Paragraph starting at paragraph 0, otherwise optimize
+ // and start at m_aVisibleBegin:
+ Paragraphs::iterator aPara(m_xParagraphs->begin()
+ + pParagraph->getNumber());
+ ::sal_Int32 nPos;
+ Paragraphs::iterator aIt;
+ if (aPara < m_aVisibleBegin)
+ {
+ nPos = 0;
+ aIt = m_xParagraphs->begin();
+ }
+ else
+ {
+ nPos = m_nViewOffset - m_nVisibleBeginOffset;
+ aIt = m_aVisibleBegin;
+ }
+ for (; aIt != aPara; ++aIt)
+ nPos += aIt->getHeight();
+
+ Point aOrig(0, 0);
+ if (bAbsolute)
+ aOrig = m_rView.GetWindow()->OutputToAbsoluteScreenPixel(aOrig);
+
+ return ::css::awt::Rectangle(
+ static_cast< ::sal_Int32 >(aOrig.X()),
+ static_cast< ::sal_Int32 >(aOrig.Y()) + nPos - m_nViewOffset,
+ m_rView.GetWindow()->GetOutputSizePixel().Width(), aPara->getHeight());
+ // XXX numeric overflow (3x)
+}
+
+::rtl::OUString
+Document::retrieveParagraphText(ParagraphImpl const * pParagraph)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ return m_rEngine.GetText(static_cast< ::ULONG >(pParagraph->getNumber()));
+ // numeric overflow cannot happen here
+}
+
+void Document::retrieveParagraphSelection(ParagraphImpl const * pParagraph,
+ ::sal_Int32 * pBegin,
+ ::sal_Int32 * pEnd)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::TextSelection const & rSelection = m_rView.GetSelection();
+ Paragraphs::size_type nNumber = pParagraph->getNumber();
+ TextPaM aStartPaM( rSelection.GetStart() );
+ TextPaM aEndPaM( rSelection.GetEnd() );
+ TextPaM aMinPaM( ::std::min( aStartPaM, aEndPaM ) );
+ TextPaM aMaxPaM( ::std::max( aStartPaM, aEndPaM ) );
+
+ if ( nNumber >= aMinPaM.GetPara() && nNumber <= aMaxPaM.GetPara() )
+ {
+ *pBegin = nNumber > aMinPaM.GetPara()
+ ? 0
+ : static_cast< ::sal_Int32 >( aMinPaM.GetIndex() );
+ // XXX numeric overflow
+ *pEnd = nNumber < aMaxPaM.GetPara()
+ ? static_cast< ::sal_Int32 >( m_rEngine.GetText(static_cast< ::ULONG >(nNumber)).Len() )
+ : static_cast< ::sal_Int32 >( aMaxPaM.GetIndex() );
+ // XXX numeric overflow (3x)
+
+ if ( aStartPaM > aEndPaM )
+ ::std::swap( *pBegin, *pEnd );
+ }
+ else
+ {
+ *pBegin = 0;
+ *pEnd = 0;
+ }
+}
+
+::sal_Int32 Document::retrieveParagraphCaretPosition(ParagraphImpl const * pParagraph)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::TextSelection const & rSelection = m_rView.GetSelection();
+ Paragraphs::size_type nNumber = pParagraph->getNumber();
+ TextPaM aEndPaM( rSelection.GetEnd() );
+
+ return aEndPaM.GetPara() == nNumber
+ ? static_cast< ::sal_Int32 >(aEndPaM.GetIndex()) : -1;
+}
+
+::css::awt::Rectangle
+Document::retrieveCharacterBounds(ParagraphImpl const * pParagraph,
+ ::sal_Int32 nIndex)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ sal_Int32 nLength = m_rEngine.GetText(nNumber).Len();
+ // XXX numeric overflow
+ if (nIndex < 0 || nIndex > nLength)
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::retrieveCharacterAttributes")),
+ static_cast< ::css::uno::XWeak * >(this));
+ ::css::awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( nIndex == nLength )
+ {
+ aBounds = AWTRectangle(
+ m_rEngine.PaMtoEditCursor(::TextPaM(nNumber,
+ static_cast< ::USHORT >(nIndex))));
+ }
+ else
+ {
+ ::Rectangle aLeft(
+ m_rEngine.PaMtoEditCursor(::TextPaM(nNumber,
+ static_cast< ::USHORT >(nIndex))));
+ // XXX numeric overflow
+ ::Rectangle aRight(
+ m_rEngine.PaMtoEditCursor(::TextPaM(nNumber,
+ static_cast< ::USHORT >(nIndex)
+ + 1)));
+ // XXX numeric overflow (2x)
+ // FIXME If the vertical extends of the two cursors do not match, assume
+ // nIndex is the last character on the line; the bounding box will then
+ // extend to m_rEnginge.GetMaxTextWidth():
+ ::sal_Int32 nWidth = (aLeft.Top() == aRight.Top()
+ && aLeft.Bottom() == aRight.Bottom())
+ ? static_cast< ::sal_Int32 >(aRight.Left() - aLeft.Left())
+ : static_cast< ::sal_Int32 >(m_rEngine.GetMaxTextWidth()
+ - aLeft.Left());
+ // XXX numeric overflow (4x)
+ aBounds = ::css::awt::Rectangle(static_cast< ::sal_Int32 >(aLeft.Left()),
+ static_cast< ::sal_Int32 >(aLeft.Top() - m_nViewOffset),
+ nWidth,
+ static_cast< ::sal_Int32 >(aLeft.Bottom()
+ - aLeft.Top()));
+ // XXX numeric overflow (4x)
+ }
+ return aBounds;
+}
+
+::sal_Int32 Document::retrieveCharacterIndex(ParagraphImpl const * pParagraph,
+ ::css::awt::Point const & rPoint)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ // XXX numeric overflow
+ ::TextPaM aPaM(m_rEngine.GetPaM(::Point(static_cast< long >(rPoint.X),
+ static_cast< long >(rPoint.Y))));
+ // XXX numeric overflow (2x)
+ return aPaM.GetPara() == nNumber
+ ? static_cast< ::sal_Int32 >(aPaM.GetIndex()) : -1;
+ // XXX numeric overflow
+}
+
+::css::uno::Sequence< ::css::beans::PropertyValue >
+Document::retrieveCharacterAttributes(
+ ParagraphImpl const * pParagraph, ::sal_Int32 nIndex,
+ const ::css::uno::Sequence< ::rtl::OUString >& aRequestedAttributes)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ // XXX numeric overflow
+ if (nIndex < 0 || nIndex >= m_rEngine.GetText(nNumber).Len())
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::retrieveCharacterAttributes")),
+ static_cast< ::css::uno::XWeak * >(this));
+
+ // retrieve default attributes
+ tPropValMap aCharAttrSeq;
+ retrieveDefaultAttributesImpl( pParagraph, aRequestedAttributes, aCharAttrSeq );
+
+ // retrieve run attributes
+ tPropValMap aRunAttrSeq;
+ retrieveRunAttributesImpl( pParagraph, nIndex, aRequestedAttributes, aRunAttrSeq );
+
+ // merge default and run attributes
+ for ( tPropValMap::const_iterator aRunIter = aRunAttrSeq.begin();
+ aRunIter != aRunAttrSeq.end();
+ ++aRunIter )
+ {
+ aCharAttrSeq[ aRunIter->first ] = aRunIter->second;
+ }
+
+ return convertHashMapToSequence( aCharAttrSeq );
+}
+
+void Document::retrieveDefaultAttributesImpl(
+ ParagraphImpl const * pParagraph,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes,
+ tPropValMap& rDefAttrSeq)
+{
+ // default attributes are not supported by text engine
+ (void) pParagraph;
+ (void) RequestedAttributes;
+ (void) rDefAttrSeq;
+}
+
+::css::uno::Sequence< ::css::beans::PropertyValue >
+Document::retrieveDefaultAttributes(
+ ParagraphImpl const * pParagraph,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard( getExternalLock() );
+ ::osl::MutexGuard aInternalGuard( GetMutex() );
+
+ tPropValMap aDefAttrSeq;
+ retrieveDefaultAttributesImpl( pParagraph, RequestedAttributes, aDefAttrSeq );
+ return convertHashMapToSequence( aDefAttrSeq );
+}
+
+// static
+::css::uno::Sequence< ::css::beans::PropertyValue >
+Document::convertHashMapToSequence(tPropValMap& rAttrSeq)
+{
+ ::css::uno::Sequence< ::css::beans::PropertyValue > aValues( rAttrSeq.size() );
+ ::css::beans::PropertyValue* pValues = aValues.getArray();
+ ::sal_Int32 i = 0;
+ for ( tPropValMap::const_iterator aIter = rAttrSeq.begin();
+ aIter != rAttrSeq.end();
+ ++aIter )
+ {
+ pValues[i] = aIter->second;
+ ++i;
+ }
+ return aValues;
+}
+
+void Document::retrieveRunAttributesImpl(
+ ParagraphImpl const * pParagraph, ::sal_Int32 Index,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes,
+ tPropValMap& rRunAttrSeq)
+{
+ ::ULONG nNumber = static_cast< ::ULONG >( pParagraph->getNumber() );
+ ::TextPaM aPaM( nNumber, static_cast< ::USHORT >( Index ) );
+ // XXX numeric overflow
+ // FIXME TEXTATTR_HYPERLINK ignored:
+ ::TextAttribFontColor const * pColor
+ = static_cast< ::TextAttribFontColor const * >(
+ m_rEngine.FindAttrib( aPaM, TEXTATTR_FONTCOLOR ) );
+ ::TextAttribFontWeight const * pWeight
+ = static_cast< ::TextAttribFontWeight const * >(
+ m_rEngine.FindAttrib( aPaM, TEXTATTR_FONTWEIGHT ) );
+ tPropValMap aRunAttrSeq;
+ if ( pColor )
+ {
+ ::css::beans::PropertyValue aPropVal;
+ aPropVal.Name =
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharColor" ) );
+ aPropVal.Handle = -1;
+ aPropVal.Value = mapFontColor( pColor->GetColor() );
+ aPropVal.State = ::css::beans::PropertyState_DIRECT_VALUE;
+ aRunAttrSeq[ aPropVal.Name ] = aPropVal;
+ }
+ if ( pWeight )
+ {
+ ::css::beans::PropertyValue aPropVal;
+ aPropVal.Name =
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharWeight" ) );
+ aPropVal.Handle = -1;
+ aPropVal.Value = mapFontWeight( pWeight->getFontWeight() );
+ aPropVal.State = ::css::beans::PropertyState_DIRECT_VALUE;
+ aRunAttrSeq[ aPropVal.Name ] = aPropVal;
+ }
+ if ( RequestedAttributes.getLength() == 0 )
+ {
+ rRunAttrSeq = aRunAttrSeq;
+ }
+ else
+ {
+ const ::rtl::OUString* pReqAttrs = RequestedAttributes.getConstArray();
+ const ::sal_Int32 nLength = RequestedAttributes.getLength();
+ for ( ::sal_Int32 i = 0; i < nLength; ++i )
+ {
+ tPropValMap::iterator aIter = aRunAttrSeq.find( pReqAttrs[i] );
+ if ( aIter != aRunAttrSeq.end() )
+ {
+ rRunAttrSeq[ (*aIter).first ] = (*aIter).second;
+ }
+ }
+ }
+}
+
+::css::uno::Sequence< ::css::beans::PropertyValue >
+Document::retrieveRunAttributes(
+ ParagraphImpl const * pParagraph, ::sal_Int32 Index,
+ const ::css::uno::Sequence< ::rtl::OUString >& RequestedAttributes)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard( getExternalLock() );
+ ::osl::MutexGuard aInternalGuard( GetMutex() );
+ ::ULONG nNumber = static_cast< ::ULONG >( pParagraph->getNumber() );
+ // XXX numeric overflow
+ if ( Index < 0 || Index >= m_rEngine.GetText(nNumber).Len() )
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::retrieveRunAttributes") ),
+ static_cast< ::css::uno::XWeak * >( this ) );
+
+ tPropValMap aRunAttrSeq;
+ retrieveRunAttributesImpl( pParagraph, Index, RequestedAttributes, aRunAttrSeq );
+ return convertHashMapToSequence( aRunAttrSeq );
+}
+
+void Document::changeParagraphText(ParagraphImpl * pParagraph,
+ ::rtl::OUString const & rText)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ // XXX numeric overflow
+ changeParagraphText(nNumber, 0, m_rEngine.GetTextLen(nNumber), false,
+ false, rText);
+ }
+}
+
+void Document::changeParagraphText(ParagraphImpl * pParagraph,
+ ::sal_Int32 nBegin, ::sal_Int32 nEnd,
+ bool bCut, bool bPaste,
+ ::rtl::OUString const & rText)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ // XXX numeric overflow
+ if (nBegin < 0 || nBegin > nEnd
+ || nEnd > m_rEngine.GetText(nNumber).Len())
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::changeParagraphText")),
+ static_cast< ::css::uno::XWeak * >(this));
+ changeParagraphText(nNumber, static_cast< ::USHORT >(nBegin),
+ static_cast< ::USHORT >(nEnd), bCut, bPaste, rText);
+ // XXX numeric overflow (2x)
+ }
+}
+
+void Document::copyParagraphText(ParagraphImpl const * pParagraph,
+ ::sal_Int32 nBegin, ::sal_Int32 nEnd)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ // XXX numeric overflow
+ if (nBegin < 0 || nBegin > nEnd
+ || nEnd > m_rEngine.GetText(nNumber).Len())
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::copyParagraphText")),
+ static_cast< ::css::uno::XWeak * >(this));
+ m_rView.SetSelection(
+ ::TextSelection(::TextPaM(nNumber, static_cast< ::USHORT >(nBegin)),
+ ::TextPaM(nNumber, static_cast< ::USHORT >(nEnd))));
+ // XXX numeric overflow (2x)
+ m_rView.Copy();
+ }
+}
+
+void Document::changeParagraphAttributes(
+ ParagraphImpl * pParagraph, ::sal_Int32 nBegin, ::sal_Int32 nEnd,
+ ::css::uno::Sequence< ::css::beans::PropertyValue > const & rAttributeSet)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ // XXX numeric overflow
+ if (nBegin < 0 || nBegin > nEnd
+ || nEnd > m_rEngine.GetText(nNumber).Len())
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::changeParagraphAttributes")),
+ static_cast< ::css::uno::XWeak * >(this));
+
+ // FIXME The new attributes are added to any attributes already set,
+ // they do not replace the old attributes as required by
+ // XAccessibleEditableText.setAttributes:
+ for (::sal_Int32 i = 0; i < rAttributeSet.getLength(); ++i)
+ if (rAttributeSet[i].Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM("CharColor")))
+ m_rEngine.SetAttrib(::TextAttribFontColor(
+ mapFontColor(rAttributeSet[i].Value)),
+ nNumber, static_cast< ::USHORT >(nBegin),
+ static_cast< ::USHORT >(nEnd));
+ // XXX numeric overflow (2x)
+ else if (rAttributeSet[i].Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM("CharWeight")))
+ m_rEngine.SetAttrib(::TextAttribFontWeight(
+ mapFontWeight(rAttributeSet[i].Value)),
+ nNumber, static_cast< ::USHORT >(nBegin),
+ static_cast< ::USHORT >(nEnd));
+ // XXX numeric overflow (2x)
+ }
+}
+
+void Document::changeParagraphSelection(ParagraphImpl * pParagraph,
+ ::sal_Int32 nBegin, ::sal_Int32 nEnd)
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::ULONG nNumber = static_cast< ::ULONG >(pParagraph->getNumber());
+ // XXX numeric overflow
+ if (nBegin < 0 || nBegin > nEnd
+ || nEnd > m_rEngine.GetText(nNumber).Len())
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::changeParagraphSelection")),
+ static_cast< ::css::uno::XWeak * >(this));
+ m_rView.SetSelection(
+ ::TextSelection(::TextPaM(nNumber, static_cast< ::USHORT >(nBegin)),
+ ::TextPaM(nNumber, static_cast< ::USHORT >(nEnd))));
+ // XXX numeric overflow (2x)
+ }
+}
+
+::css::i18n::Boundary
+Document::retrieveParagraphLineBoundary( ParagraphImpl const * pParagraph,
+ ::sal_Int32 nIndex, ::sal_Int32 *pLineNo )
+{
+ ::css::i18n::Boundary aBoundary;
+ aBoundary.startPos = nIndex;
+ aBoundary.endPos = nIndex;
+
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard( getExternalLock() );
+ {
+ ::osl::MutexGuard aInternalGuard( GetMutex() );
+ ::ULONG nNumber = static_cast< ::ULONG >( pParagraph->getNumber() );
+ if ( nIndex < 0 || nIndex > m_rEngine.GetText( nNumber ).Len() )
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::retrieveParagraphLineBoundary" ) ),
+ static_cast< ::css::uno::XWeak * >( this ) );
+ ::sal_Int32 nLineStart = 0;
+ ::sal_Int32 nLineEnd = 0;
+ ::USHORT nLineCount = m_rEngine.GetLineCount( nNumber );
+ for ( ::USHORT nLine = 0; nLine < nLineCount; ++nLine )
+ {
+ ::sal_Int32 nLineLength = static_cast< ::sal_Int32 >(
+ m_rEngine.GetLineLen( nNumber, nLine ) );
+ nLineStart = nLineEnd;
+ nLineEnd += nLineLength;
+ if ( nIndex >= nLineStart && ( ( nLine == nLineCount - 1 ) ? nIndex <= nLineEnd : nIndex < nLineEnd ) )
+ {
+ aBoundary.startPos = nLineStart;
+ aBoundary.endPos = nLineEnd;
+ if( pLineNo )
+ pLineNo[0] = nLine;
+ break;
+ }
+ }
+ }
+
+ return aBoundary;
+}
+
+::css::i18n::Boundary
+Document::retrieveParagraphBoundaryOfLine( ParagraphImpl const * pParagraph,
+ ::sal_Int32 nLineNo )
+{
+ ::css::i18n::Boundary aBoundary;
+ aBoundary.startPos = 0;
+ aBoundary.endPos = 0;
+
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard( getExternalLock() );
+ {
+ ::osl::MutexGuard aInternalGuard( GetMutex() );
+ ::ULONG nNumber = static_cast< ::ULONG >( pParagraph->getNumber() );
+ if ( nLineNo >= m_rEngine.GetLineCount( nNumber ) )
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::retrieveParagraphBoundaryOfLine" ) ),
+ static_cast< ::css::uno::XWeak * >( this ) );
+ ::sal_Int32 nLineStart = 0;
+ ::sal_Int32 nLineEnd = 0;
+ for ( ::USHORT nLine = 0; nLine <= nLineNo; ++nLine )
+ {
+ ::sal_Int32 nLineLength = static_cast< ::sal_Int32 >(
+ m_rEngine.GetLineLen( nNumber, nLine ) );
+ nLineStart = nLineEnd;
+ nLineEnd += nLineLength;
+ }
+
+ aBoundary.startPos = nLineStart;
+ aBoundary.endPos = nLineEnd;
+ }
+
+ return aBoundary;
+}
+
+sal_Int32 Document::retrieveParagraphLineWithCursor( ParagraphImpl const * pParagraph )
+{
+ ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ ::TextSelection const & rSelection = m_rView.GetSelection();
+ Paragraphs::size_type nNumber = pParagraph->getNumber();
+ TextPaM aEndPaM( rSelection.GetEnd() );
+
+ return aEndPaM.GetPara() == nNumber
+ ? m_rView.GetLineNumberOfCursorInSelection() : -1;
+}
+
+
+::css::uno::Reference< ::css::accessibility::XAccessibleRelationSet >
+Document::retrieveParagraphRelationSet( ParagraphImpl const * pParagraph )
+{
+ ::osl::MutexGuard aInternalGuard( GetMutex() );
+
+ ::utl::AccessibleRelationSetHelper* pRelationSetHelper = new ::utl::AccessibleRelationSetHelper();
+ ::css::uno::Reference< ::css::accessibility::XAccessibleRelationSet > xSet = pRelationSetHelper;
+
+ Paragraphs::iterator aPara( m_xParagraphs->begin() + pParagraph->getNumber() );
+
+ if ( aPara > m_aVisibleBegin && aPara < m_aVisibleEnd )
+ {
+ ::css::uno::Sequence< ::css::uno::Reference< ::css::uno::XInterface > > aSequence(1);
+ aSequence[0] = getAccessibleChild( aPara - 1 );
+ ::css::accessibility::AccessibleRelation aRelation( ::css::accessibility::AccessibleRelationType::CONTENT_FLOWS_FROM, aSequence );
+ pRelationSetHelper->AddRelation( aRelation );
+ }
+
+ if ( aPara >= m_aVisibleBegin && aPara < m_aVisibleEnd -1 )
+ {
+ ::css::uno::Sequence< ::css::uno::Reference< ::css::uno::XInterface > > aSequence(1);
+ aSequence[0] = getAccessibleChild( aPara + 1 );
+ ::css::accessibility::AccessibleRelation aRelation( ::css::accessibility::AccessibleRelationType::CONTENT_FLOWS_TO, aSequence );
+ pRelationSetHelper->AddRelation( aRelation );
+ }
+
+ return xSet;
+}
+
+void Document::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_GETFOCUS:
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ {
+ // #107179# if our parent is a compound control (e.g. MultiLineEdit),
+ // suppress the window focus events here
+ if ( !m_bCompoundControlChild )
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+ break;
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// virtual
+::sal_Int32 SAL_CALL Document::getAccessibleChildCount()
+ throw (::css::uno::RuntimeException)
+{
+ ::comphelper::OExternalLockGuard aGuard(this);
+ init();
+ return m_aVisibleEnd - m_aVisibleBegin;
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+Document::getAccessibleChild(::sal_Int32 i)
+ throw (::css::lang::IndexOutOfBoundsException,
+ ::css::uno::RuntimeException)
+{
+ ::comphelper::OExternalLockGuard aGuard(this);
+ init();
+ if (i < 0 || i >= m_aVisibleEnd - m_aVisibleBegin)
+ throw ::css::lang::IndexOutOfBoundsException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "textwindowaccessibility.cxx:"
+ " Document::getAccessibleChild")),
+ static_cast< ::css::uno::XWeak * >(this));
+ return getAccessibleChild(m_aVisibleBegin
+ + static_cast< Paragraphs::size_type >(i));
+}
+
+// virtual
+::sal_Int16 SAL_CALL Document::getAccessibleRole()
+ throw (::css::uno::RuntimeException)
+{
+ return ::css::accessibility::AccessibleRole::TEXT_FRAME;
+}
+
+// virtual
+::css::uno::Reference< ::css::accessibility::XAccessible > SAL_CALL
+Document::getAccessibleAtPoint(::css::awt::Point const & rPoint)
+ throw (::css::uno::RuntimeException)
+{
+ ::comphelper::OExternalLockGuard aGuard(this);
+ init();
+ if (rPoint.X >= 0
+ && rPoint.X < m_rView.GetWindow()->GetOutputSizePixel().Width()
+ && rPoint.Y >= 0 && rPoint.Y < m_nViewHeight)
+ {
+ ::sal_Int32 nOffset = m_nViewOffset + rPoint.Y; // XXX numeric overflow
+ ::sal_Int32 nPos = m_nViewOffset - m_nVisibleBeginOffset;
+ for (Paragraphs::iterator aIt(m_aVisibleBegin); aIt != m_aVisibleEnd;
+ ++aIt)
+ {
+ nPos += aIt->getHeight(); // XXX numeric overflow
+ if (nOffset < nPos)
+ return getAccessibleChild(aIt);
+ }
+ }
+ return 0;
+}
+
+// virtual
+void SAL_CALL Document::disposing()
+{
+ m_aEngineListener.endListening();
+ m_aViewListener.endListening();
+ if (m_xParagraphs.get() != 0)
+ disposeParagraphs();
+ VCLXAccessibleComponent::disposing();
+}
+
+// virtual
+void Document::Notify(::SfxBroadcaster &, ::SfxHint const & rHint)
+{
+ if (rHint.ISA(::TextHint))
+ {
+ ::TextHint const & rTextHint
+ = static_cast< ::TextHint const & >(rHint);
+ switch (rTextHint.GetId())
+ {
+ case TEXT_HINT_PARAINSERTED:
+ case TEXT_HINT_PARAREMOVED:
+ // TEXT_HINT_PARAINSERTED and TEXT_HINT_PARAREMOVED are sent at
+ // "unsafe" times (when the text engine has not yet re-formatted its
+ // content), so that for example calling ::TextEngine::GetTextHeight
+ // from within the code that handles TEXT_HINT_PARAINSERTED causes
+ // trouble within the text engine. Therefore, these hints are just
+ // buffered until a following ::TextEngine::FormatDoc causes a
+ // TEXT_HINT_TEXTFORMATTED to come in:
+ case TEXT_HINT_FORMATPARA:
+ // ::TextEngine::FormatDoc sends a sequence of
+ // TEXT_HINT_FORMATPARAs, followed by an optional
+ // TEXT_HINT_TEXTHEIGHTCHANGED, followed in all cases by one
+ // TEXT_HINT_TEXTFORMATTED. Only the TEXT_HINT_FORMATPARAs contain
+ // the the numbers of the affected paragraphs, but they are sent
+ // before the changes are applied. Therefore, TEXT_HINT_FORMATPARAs
+ // are just buffered until another hint comes in:
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ if (!isAlive())
+ break;
+
+ m_aParagraphNotifications.push(rTextHint);
+ break;
+ }
+ case TEXT_HINT_TEXTFORMATTED:
+ case TEXT_HINT_TEXTHEIGHTCHANGED:
+ case TEXT_HINT_MODIFIED:
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ if (!isAlive())
+ break;
+ handleParagraphNotifications();
+ break;
+ }
+ case TEXT_HINT_VIEWSCROLLED:
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ if (!isAlive())
+ break;
+ handleParagraphNotifications();
+
+ ::sal_Int32 nOffset = static_cast< ::sal_Int32 >(
+ m_rView.GetStartDocPos().Y());
+ // XXX numeric overflow
+ if (nOffset != m_nViewOffset)
+ {
+ m_nViewOffset = nOffset;
+
+ Paragraphs::iterator aOldVisibleBegin(
+ m_aVisibleBegin);
+ Paragraphs::iterator aOldVisibleEnd(m_aVisibleEnd);
+
+ determineVisibleRange();
+
+ notifyVisibleRangeChanges(aOldVisibleBegin,
+ aOldVisibleEnd,
+ m_xParagraphs->end());
+ }
+ break;
+ }
+ case TEXT_HINT_VIEWSELECTIONCHANGED:
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ if (!isAlive())
+ break;
+
+ if (m_aParagraphNotifications.empty())
+ {
+ handleSelectionChangeNotification();
+ }
+ else
+ {
+ // TEXT_HINT_VIEWSELECTIONCHANGED is sometimes sent at
+ // "unsafe" times (when the text engine has not yet re-
+ // formatted its content), so that for example calling
+ // ::TextEngine::GetTextHeight from within the code that
+ // handles a previous TEXT_HINT_PARAINSERTED causes
+ // trouble within the text engine. Therefore, these
+ // hints are just buffered (along with
+ // TEXT_HINT_PARAINSERTED/REMOVED/FORMATPARA) until a
+ // following ::TextEngine::FormatDoc causes a
+ // TEXT_HINT_TEXTFORMATTED to come in:
+ m_bSelectionChangedNotification = true;
+ }
+ break;
+ }
+ }
+ }
+}
+
+IMPL_LINK(Document, WindowEventHandler, ::VclSimpleEvent *, pEvent)
+{
+ switch (pEvent->GetId())
+ {
+ case VCLEVENT_WINDOW_RESIZE:
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ if (!isAlive())
+ break;
+
+ ::sal_Int32 nHeight = static_cast< ::sal_Int32 >(
+ m_rView.GetWindow()->GetOutputSizePixel().Height());
+ // XXX numeric overflow
+ if (nHeight != m_nViewHeight)
+ {
+ m_nViewHeight = nHeight;
+
+ Paragraphs::iterator aOldVisibleBegin(m_aVisibleBegin);
+ Paragraphs::iterator aOldVisibleEnd(m_aVisibleEnd);
+
+ determineVisibleRange();
+
+ notifyVisibleRangeChanges(aOldVisibleBegin, aOldVisibleEnd,
+ m_xParagraphs->end());
+ }
+ break;
+ }
+ case VCLEVENT_WINDOW_GETFOCUS:
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ if (!isAlive())
+ break;
+
+ if (m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd)
+ {
+ ::rtl::Reference< ParagraphImpl > xParagraph(
+ getParagraph(m_aFocused));
+ if (xParagraph.is())
+ xParagraph->notifyEvent(
+ ::css::accessibility::AccessibleEventId::
+ STATE_CHANGED,
+ ::css::uno::Any(),
+ ::css::uno::makeAny(
+ ::css::accessibility::AccessibleStateType::
+ FOCUSED));
+ }
+ break;
+ }
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ {
+ ::osl::MutexGuard aInternalGuard(GetMutex());
+ if (!isAlive())
+ break;
+
+ if (m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd)
+ {
+ ::rtl::Reference< ParagraphImpl > xParagraph(
+ getParagraph(m_aFocused));
+ if (xParagraph.is())
+ xParagraph->notifyEvent(
+ ::css::accessibility::AccessibleEventId::
+ STATE_CHANGED,
+ ::css::uno::makeAny(
+ ::css::accessibility::AccessibleStateType::
+ FOCUSED),
+ ::css::uno::Any());
+ }
+ break;
+ }
+ }
+ return 0;
+}
+
+void Document::init()
+{
+ if (m_xParagraphs.get() == 0)
+ {
+ ::ULONG nCount = m_rEngine.GetParagraphCount();
+ ::std::auto_ptr< Paragraphs > p(new Paragraphs);
+ p->reserve(static_cast< Paragraphs::size_type >(nCount));
+ // numeric overflow is harmless here
+ for (::ULONG i = 0; i < nCount; ++i)
+ p->push_back(ParagraphInfo(static_cast< ::sal_Int32 >(
+ m_rEngine.GetTextHeight(i))));
+ // XXX numeric overflow
+ m_nViewOffset = static_cast< ::sal_Int32 >(
+ m_rView.GetStartDocPos().Y()); // XXX numeric overflow
+ m_nViewHeight = static_cast< ::sal_Int32 >(
+ m_rView.GetWindow()->GetOutputSizePixel().Height());
+ // XXX numeric overflow
+ m_xParagraphs = p;
+ determineVisibleRange();
+ m_nSelectionFirstPara = -1;
+ m_nSelectionFirstPos = -1;
+ m_nSelectionLastPara = -1;
+ m_nSelectionLastPos = -1;
+ m_aFocused = m_xParagraphs->end();
+ m_bSelectionChangedNotification = false;
+ m_aEngineListener.startListening(m_rEngine);
+ m_aViewListener.startListening(*m_rView.GetWindow());
+ }
+}
+
+::rtl::Reference< ParagraphImpl >
+Document::getParagraph(Paragraphs::iterator const & rIt)
+{
+ return static_cast< ParagraphImpl * >(
+ ::css::uno::Reference< ::css::accessibility::XAccessible >(
+ rIt->getParagraph()).get());
+}
+
+::css::uno::Reference< ::css::accessibility::XAccessible >
+Document::getAccessibleChild(Paragraphs::iterator const & rIt)
+{
+ ::css::uno::Reference< ::css::accessibility::XAccessible > xParagraph(
+ rIt->getParagraph());
+ if (!xParagraph.is())
+ {
+ xParagraph = new Paragraph(this, rIt - m_xParagraphs->begin());
+ rIt->setParagraph(xParagraph);
+ }
+ return xParagraph;
+}
+
+void Document::determineVisibleRange()
+{
+ m_aVisibleBegin = m_xParagraphs->end();
+ m_aVisibleEnd = m_aVisibleBegin;
+ ::sal_Int32 nPos = 0;
+ for (Paragraphs::iterator aIt = m_xParagraphs->begin();;)
+ {
+ if (aIt == m_xParagraphs->end())
+ {
+ m_nVisibleBeginOffset = 0;
+ break;
+ }
+ ::sal_Int32 nOldPos = nPos;
+ nPos += aIt->getHeight(); // XXX numeric overflow
+ if (m_aVisibleBegin == m_xParagraphs->end() && nPos >= m_nViewOffset)
+ {
+ m_aVisibleBegin = aIt;
+ m_nVisibleBeginOffset = m_nViewOffset - nOldPos;
+ }
+ ++aIt;
+ if (m_aVisibleBegin != m_xParagraphs->end()
+ && (aIt == m_xParagraphs->end()
+ || nPos >= m_nViewOffset + m_nViewHeight))
+ // XXX numeric overflow
+ {
+ m_aVisibleEnd = aIt;
+ break;
+ }
+ }
+}
+
+void Document::notifyVisibleRangeChanges(
+ Paragraphs::iterator const & rOldVisibleBegin,
+ Paragraphs::iterator const & rOldVisibleEnd,
+ Paragraphs::iterator const & rInserted)
+{
+ // XXX Replace this code that determines which paragraphs have changed from
+ // invisible to visible or vice versa with a better algorithm.
+ {for (Paragraphs::iterator aIt(rOldVisibleBegin); aIt != rOldVisibleEnd;
+ ++aIt)
+ if (aIt != rInserted
+ && (aIt < m_aVisibleBegin || aIt >= m_aVisibleEnd))
+ NotifyAccessibleEvent(
+ ::css::accessibility::AccessibleEventId::
+ CHILD,
+ ::css::uno::makeAny(getAccessibleChild(aIt)),
+ ::css::uno::Any());
+ }
+ {for (Paragraphs::iterator aIt(m_aVisibleBegin); aIt != m_aVisibleEnd;
+ ++aIt)
+ if (aIt == rInserted
+ || aIt < rOldVisibleBegin || aIt >= rOldVisibleEnd)
+ NotifyAccessibleEvent(
+ ::css::accessibility::AccessibleEventId::
+ CHILD,
+ ::css::uno::Any(),
+ ::css::uno::makeAny(getAccessibleChild(aIt)));
+ }
+}
+
+void
+Document::changeParagraphText(::ULONG nNumber, ::USHORT nBegin, ::USHORT nEnd,
+ bool bCut, bool bPaste,
+ ::rtl::OUString const & rText)
+{
+ m_rView.SetSelection(::TextSelection(::TextPaM(nNumber, nBegin),
+ ::TextPaM(nNumber, nEnd)));
+ if (bCut)
+ m_rView.Cut();
+ else if (nBegin != nEnd)
+ m_rView.DeleteSelected();
+ if (bPaste)
+ m_rView.Paste();
+ else if (rText.getLength() != 0)
+ m_rView.InsertText(rText);
+}
+
+void Document::handleParagraphNotifications()
+{
+ while (!m_aParagraphNotifications.empty())
+ {
+ ::TextHint aHint(m_aParagraphNotifications.front());
+ m_aParagraphNotifications.pop();
+ switch (aHint.GetId())
+ {
+ case TEXT_HINT_PARAINSERTED:
+ {
+ ::ULONG n = aHint.GetValue();
+ OSL_ENSURE(n <= m_xParagraphs->size(),
+ "bad TEXT_HINT_PARAINSERTED event");
+
+ // Save the values of old iterators (the iterators themselves
+ // will get invalidated), and adjust the old values so that they
+ // reflect the insertion of the new paragraph:
+ Paragraphs::size_type nOldVisibleBegin
+ = m_aVisibleBegin - m_xParagraphs->begin();
+ Paragraphs::size_type nOldVisibleEnd
+ = m_aVisibleEnd - m_xParagraphs->begin();
+ Paragraphs::size_type nOldFocused
+ = m_aFocused - m_xParagraphs->begin();
+ if (n <= nOldVisibleBegin)
+ ++nOldVisibleBegin; // XXX numeric overflow
+ if (n <= nOldVisibleEnd)
+ ++nOldVisibleEnd; // XXX numeric overflow
+ if (n <= nOldFocused)
+ ++nOldFocused; // XXX numeric overflow
+ if (sal::static_int_cast<sal_Int32>(n) <= m_nSelectionFirstPara)
+ ++m_nSelectionFirstPara; // XXX numeric overflow
+ if (sal::static_int_cast<sal_Int32>(n) <= m_nSelectionLastPara)
+ ++m_nSelectionLastPara; // XXX numeric overflow
+
+ Paragraphs::iterator aIns(
+ m_xParagraphs->insert(
+ m_xParagraphs->begin() + n,
+ ParagraphInfo(static_cast< ::sal_Int32 >(
+ m_rEngine.GetTextHeight(n)))));
+ // XXX numeric overflow (2x)
+
+ determineVisibleRange();
+ m_aFocused = m_xParagraphs->begin() + nOldFocused;
+
+ for (Paragraphs::iterator aIt(aIns);;)
+ {
+ ++aIt;
+ if (aIt == m_xParagraphs->end())
+ break;
+ ::rtl::Reference< ParagraphImpl > xParagraph(
+ getParagraph(aIt));
+ if (xParagraph.is())
+ xParagraph->numberChanged(true);
+ }
+
+ notifyVisibleRangeChanges(
+ m_xParagraphs->begin() + nOldVisibleBegin,
+ m_xParagraphs->begin() + nOldVisibleEnd, aIns);
+ break;
+ }
+ case TEXT_HINT_PARAREMOVED:
+ {
+ ::ULONG n = aHint.GetValue();
+ if (n == TEXT_PARA_ALL)
+ {
+ {for (Paragraphs::iterator aIt(m_aVisibleBegin);
+ aIt != m_aVisibleEnd; ++aIt)
+ NotifyAccessibleEvent(
+ ::css::accessibility::AccessibleEventId::
+ CHILD,
+ ::css::uno::makeAny(getAccessibleChild(aIt)),
+ ::css::uno::Any());
+ }
+ disposeParagraphs();
+ m_xParagraphs->clear();
+ determineVisibleRange();
+ m_nSelectionFirstPara = -1;
+ m_nSelectionFirstPos = -1;
+ m_nSelectionLastPara = -1;
+ m_nSelectionLastPos = -1;
+ m_aFocused = m_xParagraphs->end();
+ }
+ else
+ {
+ OSL_ENSURE(n < m_xParagraphs->size(),
+ "Bad TEXT_HINT_PARAREMOVED event");
+
+ Paragraphs::iterator aIt(m_xParagraphs->begin() + n);
+ // numeric overflow cannot occur
+
+ // Save the values of old iterators (the iterators
+ // themselves will get invalidated), and adjust the old
+ // values so that they reflect the removal of the paragraph:
+ Paragraphs::size_type nOldVisibleBegin
+ = m_aVisibleBegin - m_xParagraphs->begin();
+ Paragraphs::size_type nOldVisibleEnd
+ = m_aVisibleEnd - m_xParagraphs->begin();
+ bool bWasVisible
+ = nOldVisibleBegin <= n && n < nOldVisibleEnd;
+ Paragraphs::size_type nOldFocused
+ = m_aFocused - m_xParagraphs->begin();
+ bool bWasFocused = aIt == m_aFocused;
+ if (n < nOldVisibleBegin)
+ --nOldVisibleBegin;
+ if (n < nOldVisibleEnd)
+ --nOldVisibleEnd;
+ if (n < nOldFocused)
+ --nOldFocused;
+ if (sal::static_int_cast<sal_Int32>(n) < m_nSelectionFirstPara)
+ --m_nSelectionFirstPara;
+ else if (sal::static_int_cast<sal_Int32>(n) == m_nSelectionFirstPara)
+ {
+ if (m_nSelectionFirstPara == m_nSelectionLastPara)
+ {
+ m_nSelectionFirstPara = -1;
+ m_nSelectionFirstPos = -1;
+ m_nSelectionLastPara = -1;
+ m_nSelectionLastPos = -1;
+ }
+ else
+ {
+ ++m_nSelectionFirstPara;
+ m_nSelectionFirstPos = 0;
+ }
+ }
+ if (sal::static_int_cast<sal_Int32>(n) < m_nSelectionLastPara)
+ --m_nSelectionLastPara;
+ else if (sal::static_int_cast<sal_Int32>(n) == m_nSelectionLastPara)
+ {
+ OSL_ENSURE(m_nSelectionFirstPara < m_nSelectionLastPara,
+ "logic error");
+ --m_nSelectionLastPara;
+ m_nSelectionLastPos = 0x7FFFFFFF;
+ }
+
+ ::css::uno::Reference< ::css::accessibility::XAccessible >
+ xStrong;
+ if (bWasVisible)
+ xStrong = getAccessibleChild(aIt);
+ ::css::uno::WeakReference<
+ ::css::accessibility::XAccessible > xWeak(
+ aIt->getParagraph());
+ aIt = m_xParagraphs->erase(aIt);
+
+ determineVisibleRange();
+ m_aFocused = bWasFocused ? m_xParagraphs->end()
+ : m_xParagraphs->begin() + nOldFocused;
+
+ for (; aIt != m_xParagraphs->end(); ++aIt)
+ {
+ ::rtl::Reference< ParagraphImpl > xParagraph(
+ getParagraph(aIt));
+ if (xParagraph.is())
+ xParagraph->numberChanged(false);
+ }
+
+ if (bWasVisible)
+ NotifyAccessibleEvent(
+ ::css::accessibility::AccessibleEventId::
+ CHILD,
+ ::css::uno::makeAny(getAccessibleChild(aIt)),
+ ::css::uno::Any());
+
+ ::css::uno::Reference< ::css::lang::XComponent > xComponent(
+ xWeak.get(), ::css::uno::UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+
+ notifyVisibleRangeChanges(
+ m_xParagraphs->begin() + nOldVisibleBegin,
+ m_xParagraphs->begin() + nOldVisibleEnd,
+ m_xParagraphs->end());
+ }
+ break;
+ }
+ case TEXT_HINT_FORMATPARA:
+ {
+ ::ULONG n = aHint.GetValue();
+ OSL_ENSURE(n < m_xParagraphs->size(),
+ "Bad TEXT_HINT_FORMATPARA event");
+
+ (*m_xParagraphs)[static_cast< Paragraphs::size_type >(n)].
+ changeHeight(static_cast< ::sal_Int32 >(
+ m_rEngine.GetTextHeight(n)));
+ // XXX numeric overflow
+ Paragraphs::iterator aOldVisibleBegin(m_aVisibleBegin);
+ Paragraphs::iterator aOldVisibleEnd(m_aVisibleEnd);
+ determineVisibleRange();
+ notifyVisibleRangeChanges(aOldVisibleBegin, aOldVisibleEnd,
+ m_xParagraphs->end());
+
+ if (n < m_xParagraphs->size())
+ {
+ Paragraphs::iterator aIt(m_xParagraphs->begin() + n);
+ ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(aIt));
+ if (xParagraph.is())
+ xParagraph->textChanged();
+ }
+ break;
+ }
+ default:
+ OSL_ENSURE(false, "bad buffered hint");
+ break;
+ }
+ }
+ if (m_bSelectionChangedNotification)
+ {
+ m_bSelectionChangedNotification = false;
+ handleSelectionChangeNotification();
+ }
+}
+
+void Document::handleSelectionChangeNotification()
+{
+ ::TextSelection const & rSelection = m_rView.GetSelection();
+ OSL_ENSURE(rSelection.GetStart().GetPara() < m_xParagraphs->size()
+ && rSelection.GetEnd().GetPara() < m_xParagraphs->size(),
+ "bad TEXT_HINT_VIEWSELECTIONCHANGED event");
+ ::sal_Int32 nNewFirstPara
+ = static_cast< ::sal_Int32 >(rSelection.GetStart().GetPara());
+ ::sal_Int32 nNewFirstPos
+ = static_cast< ::sal_Int32 >(rSelection.GetStart().GetIndex());
+ // XXX numeric overflow
+ ::sal_Int32 nNewLastPara
+ = static_cast< ::sal_Int32 >(rSelection.GetEnd().GetPara());
+ ::sal_Int32 nNewLastPos
+ = static_cast< ::sal_Int32 >(rSelection.GetEnd().GetIndex());
+ // XXX numeric overflow
+
+ // Lose focus:
+ Paragraphs::iterator aIt(m_xParagraphs->begin() + nNewLastPara);
+ if (m_aFocused != m_xParagraphs->end() && m_aFocused != aIt
+ && m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd)
+ {
+ ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(m_aFocused));
+ if (xParagraph.is())
+ xParagraph->notifyEvent(
+ ::css::accessibility::AccessibleEventId::
+ STATE_CHANGED,
+ ::css::uno::makeAny(
+ ::css::accessibility::AccessibleStateType::FOCUSED),
+ ::css::uno::Any());
+ }
+
+ // Gain focus and update cursor position:
+ if (aIt >= m_aVisibleBegin && aIt < m_aVisibleEnd
+ && (aIt != m_aFocused
+ || nNewLastPara != m_nSelectionLastPara
+ || nNewLastPos != m_nSelectionLastPos))
+ {
+ ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(aIt));
+ if (xParagraph.is())
+ {
+ if (aIt != m_aFocused)
+ xParagraph->notifyEvent(
+ ::css::accessibility::AccessibleEventId::
+ STATE_CHANGED,
+ ::css::uno::Any(),
+ ::css::uno::makeAny(
+ ::css::accessibility::AccessibleStateType::FOCUSED));
+ if (nNewLastPara != m_nSelectionLastPara
+ || nNewLastPos != m_nSelectionLastPos)
+ xParagraph->notifyEvent(
+ ::css::accessibility::AccessibleEventId::
+ CARET_CHANGED,
+ ::css::uno::makeAny< ::sal_Int32 >(
+ nNewLastPara == m_nSelectionLastPara
+ ? m_nSelectionLastPos : 0),
+ ::css::uno::makeAny(nNewLastPos));
+ }
+ }
+ m_aFocused = aIt;
+
+ // Update both old and new selection. (Regardless of how the two selections
+ // look like, there will always be two ranges to the left and right of the
+ // overlap---the overlap and/or the range to the right of it possibly being
+ // empty. Only for these two ranges notifications have to be sent.)
+
+ TextPaM aOldTextStart( static_cast< ULONG >( m_nSelectionFirstPara ), static_cast< USHORT >( m_nSelectionFirstPos ) );
+ TextPaM aOldTextEnd( static_cast< ULONG >( m_nSelectionLastPara ), static_cast< USHORT >( m_nSelectionLastPos ) );
+ TextPaM aNewTextStart( static_cast< ULONG >( nNewFirstPara ), static_cast< USHORT >( nNewFirstPos ) );
+ TextPaM aNewTextEnd( static_cast< ULONG >( nNewLastPara ), static_cast< USHORT >( nNewLastPos ) );
+
+ // justify selections
+ justifySelection( aOldTextStart, aOldTextEnd );
+ justifySelection( aNewTextStart, aNewTextEnd );
+
+ sal_Int32 nFirst1;
+ sal_Int32 nLast1;
+ sal_Int32 nFirst2;
+ sal_Int32 nLast2;
+
+ if ( m_nSelectionFirstPara == -1 )
+ {
+ // old selection not initialized yet => notify events only for new selection (if not empty)
+ nFirst1 = aNewTextStart.GetPara();
+ nLast1 = aNewTextEnd.GetPara() + ( aNewTextStart != aNewTextEnd ? 1 : 0 );
+ nFirst2 = 0;
+ nLast2 = 0;
+ }
+ else if ( aOldTextStart == aOldTextEnd && aNewTextStart == aNewTextEnd )
+ {
+ // old and new selection empty => no events
+ nFirst1 = 0;
+ nLast1 = 0;
+ nFirst2 = 0;
+ nLast2 = 0;
+ }
+ else if ( aOldTextStart != aOldTextEnd && aNewTextStart == aNewTextEnd )
+ {
+ // old selection not empty + new selection empty => notify events only for old selection
+ nFirst1 = aOldTextStart.GetPara();
+ nLast1 = aOldTextEnd.GetPara() + 1;
+ nFirst2 = 0;
+ nLast2 = 0;
+ }
+ else if ( aOldTextStart == aOldTextEnd && aNewTextStart != aNewTextEnd )
+ {
+ // old selection empty + new selection not empty => notify events only for new selection
+ nFirst1 = aNewTextStart.GetPara();
+ nLast1 = aNewTextEnd.GetPara() + 1;
+ nFirst2 = 0;
+ nLast2 = 0;
+ }
+ else
+ {
+ // old and new selection not empty => notify events for the two ranges left and right of the overlap
+ ::std::vector< TextPaM > aTextPaMs(4);
+ aTextPaMs[0] = aOldTextStart;
+ aTextPaMs[1] = aOldTextEnd;
+ aTextPaMs[2] = aNewTextStart;
+ aTextPaMs[3] = aNewTextEnd;
+ ::std::sort( aTextPaMs.begin(), aTextPaMs.end() );
+
+ nFirst1 = aTextPaMs[0].GetPara();
+ nLast1 = aTextPaMs[1].GetPara() + ( aTextPaMs[0] != aTextPaMs[1] ? 1 : 0 );
+
+ nFirst2 = aTextPaMs[2].GetPara();
+ nLast2 = aTextPaMs[3].GetPara() + ( aTextPaMs[2] != aTextPaMs[3] ? 1 : 0 );
+
+ // adjust overlapping ranges
+ if ( nLast1 > nFirst2 )
+ nLast1 = nFirst2;
+ }
+
+ // notify selection changes
+ notifySelectionChange( nFirst1, nLast1 );
+ notifySelectionChange( nFirst2, nLast2 );
+
+ m_nSelectionFirstPara = nNewFirstPara;
+ m_nSelectionFirstPos = nNewFirstPos;
+ m_nSelectionLastPara = nNewLastPara;
+ m_nSelectionLastPos = nNewLastPos;
+}
+
+void Document::notifySelectionChange( sal_Int32 nFirst, sal_Int32 nLast )
+{
+ if ( nFirst < nLast )
+ {
+ Paragraphs::iterator aEnd( ::std::min( m_xParagraphs->begin() + nLast, m_aVisibleEnd ) );
+ for ( Paragraphs::iterator aIt = ::std::max( m_xParagraphs->begin() + nFirst, m_aVisibleBegin ); aIt < aEnd; ++aIt )
+ {
+ ::rtl::Reference< ParagraphImpl > xParagraph( getParagraph( aIt ) );
+ if ( xParagraph.is() )
+ {
+ xParagraph->notifyEvent(
+ ::css::accessibility::AccessibleEventId::SELECTION_CHANGED,
+ ::css::uno::Any(), ::css::uno::Any() );
+ xParagraph->notifyEvent(
+ ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED,
+ ::css::uno::Any(), ::css::uno::Any() );
+ }
+ }
+ }
+}
+
+void Document::justifySelection( TextPaM& rTextStart, TextPaM& rTextEnd )
+{
+ if ( rTextStart > rTextEnd )
+ {
+ TextPaM aTextPaM( rTextStart );
+ rTextStart = rTextEnd;
+ rTextEnd = aTextPaM;
+ }
+}
+
+void Document::disposeParagraphs()
+{
+ for (Paragraphs::iterator aIt(m_xParagraphs->begin());
+ aIt != m_xParagraphs->end(); ++aIt)
+ {
+ ::css::uno::Reference< ::css::lang::XComponent > xComponent(
+ aIt->getParagraph().get(), ::css::uno::UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+}
+
+// static
+::css::uno::Any Document::mapFontColor(::Color const & rColor)
+{
+ return ::css::uno::makeAny(
+ static_cast< ::sal_Int32 >(COLORDATA_RGB(rColor.GetColor())));
+ // FIXME keep transparency?
+}
+
+// static
+::Color Document::mapFontColor(::css::uno::Any const & rColor)
+{
+ ::sal_Int32 nColor = 0;
+ rColor >>= nColor;
+ return ::Color(static_cast< ::ColorData >(nColor));
+}
+
+// static
+::css::uno::Any Document::mapFontWeight(::FontWeight nWeight)
+{
+ // Map from ::FontWeight to ::css:awt::FontWeight, depends on order of
+ // elements in ::FontWeight (vcl/vclenum.hxx):
+ static float const aWeight[]
+ = { ::css::awt::FontWeight::DONTKNOW, // WEIGHT_DONTKNOW
+ ::css::awt::FontWeight::THIN, // WEIGHT_THIN
+ ::css::awt::FontWeight::ULTRALIGHT, // WEIGHT_ULTRALIGHT
+ ::css::awt::FontWeight::LIGHT, // WEIGHT_LIGHT
+ ::css::awt::FontWeight::SEMILIGHT, // WEIGHT_SEMILIGHT
+ ::css::awt::FontWeight::NORMAL, // WEIGHT_NORMAL
+ ::css::awt::FontWeight::NORMAL, // WEIGHT_MEDIUM
+ ::css::awt::FontWeight::SEMIBOLD, // WEIGHT_SEMIBOLD
+ ::css::awt::FontWeight::BOLD, // WEIGHT_BOLD
+ ::css::awt::FontWeight::ULTRABOLD, // WEIGHT_ULTRABOLD
+ ::css::awt::FontWeight::BLACK }; // WEIGHT_BLACK
+ return ::css::uno::makeAny(aWeight[nWeight]);
+}
+
+// static
+::FontWeight Document::mapFontWeight(::css::uno::Any const & rWeight)
+{
+ float nWeight = ::css::awt::FontWeight::NORMAL;
+ rWeight >>= nWeight;
+ return nWeight <= ::css::awt::FontWeight::DONTKNOW ? WEIGHT_DONTKNOW
+ : nWeight <= ::css::awt::FontWeight::THIN ? WEIGHT_THIN
+ : nWeight <= ::css::awt::FontWeight::ULTRALIGHT ? WEIGHT_ULTRALIGHT
+ : nWeight <= ::css::awt::FontWeight::LIGHT ? WEIGHT_LIGHT
+ : nWeight <= ::css::awt::FontWeight::SEMILIGHT ? WEIGHT_SEMILIGHT
+ : nWeight <= ::css::awt::FontWeight::NORMAL ? WEIGHT_NORMAL
+ : nWeight <= ::css::awt::FontWeight::SEMIBOLD ? WEIGHT_SEMIBOLD
+ : nWeight <= ::css::awt::FontWeight::BOLD ? WEIGHT_BOLD
+ : nWeight <= ::css::awt::FontWeight::ULTRABOLD ? WEIGHT_ULTRABOLD
+ : WEIGHT_BLACK;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/helper/acc_factory.cxx b/accessibility/source/helper/acc_factory.cxx
new file mode 100644
index 000000000000..3707209228ed
--- /dev/null
+++ b/accessibility/source/helper/acc_factory.cxx
@@ -0,0 +1,555 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/helper/acc_factory.hxx>
+
+#include <toolkit/awt/vclxwindows.hxx>
+#include <accessibility/standard/vclxaccessiblebutton.hxx>
+#include <accessibility/standard/vclxaccessiblecheckbox.hxx>
+#include <accessibility/standard/vclxaccessibledropdowncombobox.hxx>
+#include <accessibility/standard/vclxaccessiblecombobox.hxx>
+#include <accessibility/standard/vclxaccessibledropdownlistbox.hxx>
+#include <accessibility/standard/vclxaccessibleedit.hxx>
+#include <accessibility/standard/vclxaccessiblefixedhyperlink.hxx>
+#include <accessibility/standard/vclxaccessiblefixedtext.hxx>
+#include <accessibility/standard/vclxaccessiblelistbox.hxx>
+#include <accessibility/standard/vclxaccessiblemenu.hxx>
+#include <accessibility/standard/vclxaccessibleradiobutton.hxx>
+#include <accessibility/standard/vclxaccessiblescrollbar.hxx>
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+#include <accessibility/standard/vclxaccessibletoolbox.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+#include <accessibility/standard/vclxaccessiblestatusbar.hxx>
+#include <accessibility/standard/vclxaccessibletabcontrol.hxx>
+#include <accessibility/standard/vclxaccessibletabpagewindow.hxx>
+#include <accessibility/standard/vclxaccessiblemenubar.hxx>
+#include <accessibility/standard/vclxaccessiblepopupmenu.hxx>
+#include <accessibility/extended/accessibletablistbox.hxx>
+#include <accessibility/extended/AccessibleBrowseBox.hxx>
+#include <accessibility/extended/accessibleiconchoicectrl.hxx>
+#include <accessibility/extended/accessibletabbar.hxx>
+#include <accessibility/extended/accessiblelistbox.hxx>
+#include <accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx>
+#include <accessibility/extended/textwindowaccessibility.hxx>
+#include <accessibility/extended/AccessibleBrowseBoxTableCell.hxx>
+#include <accessibility/extended/AccessibleBrowseBoxHeaderCell.hxx>
+#include <accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx>
+#include <accessibility/extended/accessibleeditbrowseboxcell.hxx>
+#include <accessibility/extended/AccessibleToolPanelDeck.hxx>
+#include <accessibility/extended/AccessibleToolPanelDeckTabBar.hxx>
+#include <accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/combobox.hxx>
+#include <accessibility/extended/AccessibleGridControl.hxx>
+#include <svtools/accessibletable.hxx>
+#include <vcl/popupmenuwindow.hxx>
+#include <cppuhelper/implbase1.hxx>
+
+#include "floatingwindowaccessible.hxx"
+
+//........................................................................
+namespace accessibility
+{
+
+inline bool hasFloatingChild(Window *pWindow)
+{
+ Window * pChild = pWindow->GetAccessibleChildWindow(0);
+ if( pChild && WINDOW_FLOATINGWINDOW == pChild->GetType() )
+ return true;
+
+ return false;
+}
+
+//........................................................................
+
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::awt;
+ using namespace ::com::sun::star::accessibility;
+ using namespace ::svt;
+ using namespace ::svt::table;
+
+ //================================================================
+ //= IAccessibleFactory
+ //================================================================
+ class AccessibleFactory :public ::toolkit::IAccessibleFactory
+ ,public ::svt::IAccessibleFactory
+ {
+ private:
+ oslInterlockedCount m_refCount;
+
+ public:
+ AccessibleFactory();
+
+ // IReference
+ virtual oslInterlockedCount SAL_CALL acquire();
+ virtual oslInterlockedCount SAL_CALL release();
+
+ // ::toolkit::IAccessibleFactory
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXButton* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXCheckBox* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXRadioButton* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXListBox* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXFixedText* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXFixedHyperlink* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXScrollBar* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXEdit* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXComboBox* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXToolBox* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleContext( VCLXWindow* _pXWindow );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessible( Menu* _pMenu, sal_Bool _bIsMenuBar );
+
+ // ::svt::IAccessibleFactory
+ virtual IAccessibleTabListBox*
+ createAccessibleTabListBox(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
+ SvHeaderTabListBox& rBox
+ ) const;
+
+ virtual IAccessibleBrowseBox*
+ createAccessibleBrowseBox(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ IAccessibleTableProvider& _rBrowseBox
+ ) const;
+
+ virtual IAccessibleTableControl*
+ createAccessibleTableControl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ IAccessibleTable& _rTable
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessibleIconChoiceCtrl(
+ SvtIconChoiceCtrl& _rIconCtrl,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessibleTabBar(
+ TabBar& _rTabBar
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleTextWindowContext(
+ VCLXWindow* pVclXWindow, TextEngine& rEngine, TextView& rView, bool bCompoundControlChild
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessibleTreeListBox(
+ SvTreeListBox& _rListBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessibleBrowseBoxHeaderBar(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
+ IAccessibleTableProvider& _rOwningTable,
+ AccessibleBrowseBoxObjType _eObjType
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessibleBrowseBoxTableCell(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowId,
+ sal_uInt16 _nColId,
+ sal_Int32 _nOffset
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessibleBrowseBoxHeaderCell(
+ sal_Int32 _nColumnRowId,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
+ IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ AccessibleBrowseBoxObjType _eObjType
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createAccessibleCheckBoxCell(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
+ IAccessibleTableProvider& _rBrowseBox,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos,
+ const TriState& _eState,
+ sal_Bool _bEnabled,
+ sal_Bool _bIsTriState
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ createEditBrowseBoxTableCellAccess(
+ const ::com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessible >& _rxParent,
+ const ::com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessible >& _rxControlAccessible,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _rxFocusWindow,
+ IAccessibleTableProvider& _rBrowseBox,
+ sal_Int32 _nRowPos,
+ sal_uInt16 _nColPos
+ ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleToolPanelDeck(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rAccessibleParent,
+ ::svt::ToolPanelDeck& i_rPanelDeck
+ );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
+ createAccessibleToolPanelTabBar(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rAccessibleParent,
+ ::svt::IToolPanelDeck& i_rPanelDeck,
+ ::svt::PanelTabBar& i_rTabBar
+ );
+
+ protected:
+ virtual ~AccessibleFactory();
+ };
+
+
+ //--------------------------------------------------------------------
+ AccessibleFactory::AccessibleFactory()
+ :m_refCount( 0 )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ AccessibleFactory::~AccessibleFactory()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ oslInterlockedCount SAL_CALL AccessibleFactory::acquire()
+ {
+ return osl_incrementInterlockedCount( &m_refCount );
+ }
+
+ //--------------------------------------------------------------------
+ oslInterlockedCount SAL_CALL AccessibleFactory::release()
+ {
+ if ( 0 == osl_decrementInterlockedCount( &m_refCount ) )
+ {
+ delete this;
+ return 0;
+ }
+ return m_refCount;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessible( Menu* _pMenu, sal_Bool _bIsMenuBar )
+ {
+ OAccessibleMenuBaseComponent* pAccessible;
+ if ( _bIsMenuBar )
+ pAccessible = new VCLXAccessibleMenuBar( _pMenu );
+ else
+ pAccessible = new VCLXAccessiblePopupMenu( _pMenu );
+ pAccessible->SetStates();
+ return pAccessible;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXButton* _pXWindow )
+ {
+ return new VCLXAccessibleButton( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXCheckBox* _pXWindow )
+ {
+ return new VCLXAccessibleCheckBox( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXRadioButton* _pXWindow )
+ {
+ return new VCLXAccessibleRadioButton( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXListBox* _pXWindow )
+ {
+ sal_Bool bIsDropDownBox = sal_False;
+ ListBox* pBox = static_cast< ListBox* >( _pXWindow->GetWindow() );
+ if ( pBox )
+ bIsDropDownBox = ( ( pBox->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN );
+
+ if ( bIsDropDownBox )
+ return new VCLXAccessibleDropDownListBox( _pXWindow );
+ else
+ return new VCLXAccessibleListBox( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXFixedText* _pXWindow )
+ {
+ return new VCLXAccessibleFixedText( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXFixedHyperlink* _pXWindow )
+ {
+ return new VCLXAccessibleFixedHyperlink( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXScrollBar* _pXWindow )
+ {
+ return new VCLXAccessibleScrollBar( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXEdit* _pXWindow )
+ {
+ return new VCLXAccessibleEdit( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXComboBox* _pXWindow )
+ {
+ sal_Bool bIsDropDownBox = sal_False;
+ ComboBox* pBox = static_cast< ComboBox* >( _pXWindow->GetWindow() );
+ if ( pBox )
+ bIsDropDownBox = ( ( pBox->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN );
+
+ if ( bIsDropDownBox )
+ return new VCLXAccessibleDropDownComboBox( _pXWindow );
+ else
+ return new VCLXAccessibleComboBox( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXWindow* _pXWindow )
+ {
+ Reference< XAccessibleContext > xContext;
+
+ Window* pWindow = _pXWindow->GetWindow();
+ if ( pWindow )
+ {
+ WindowType nType = pWindow->GetType();
+
+ if ( nType == WINDOW_MENUBARWINDOW || pWindow->IsMenuFloatingWindow() || pWindow->IsToolbarFloatingWindow() )
+ {
+ Reference< XAccessible > xAcc( pWindow->GetAccessible() );
+ if ( xAcc.is() )
+ {
+ Reference< XAccessibleContext > xCont( xAcc->getAccessibleContext() );
+ if ( pWindow->GetType() == WINDOW_MENUBARWINDOW ||
+ ( xCont.is() && xCont->getAccessibleRole() == AccessibleRole::POPUP_MENU ) )
+ {
+ xContext = xCont;
+ }
+ }
+ }
+ else if ( nType == WINDOW_STATUSBAR )
+ {
+ xContext = (XAccessibleContext*) new VCLXAccessibleStatusBar( _pXWindow );
+ }
+ else if ( nType == WINDOW_TABCONTROL )
+ {
+ xContext = (XAccessibleContext*) new VCLXAccessibleTabControl( _pXWindow );
+ }
+ else if ( nType == WINDOW_TABPAGE && pWindow->GetAccessibleParentWindow() && pWindow->GetAccessibleParentWindow()->GetType() == WINDOW_TABCONTROL )
+ {
+ xContext = new VCLXAccessibleTabPageWindow( _pXWindow );
+ }
+ else if ( nType == WINDOW_FLOATINGWINDOW )
+ {
+ xContext = new FloatingWindowAccessible( _pXWindow );
+ }
+ else if ( nType == WINDOW_BORDERWINDOW && hasFloatingChild( pWindow ) )
+ {
+ PopupMenuFloatingWindow* pChild = dynamic_cast<PopupMenuFloatingWindow*>(
+ pWindow->GetAccessibleChildWindow(0));
+ if ( pChild && pChild->IsPopupMenu() )
+ {
+ // Get the accessible context from the child window.
+ Reference<XAccessible> xAccessible = pChild->CreateAccessible();
+ if (xAccessible.is())
+ xContext = xAccessible->getAccessibleContext();
+ }
+ else
+ xContext = new FloatingWindowAccessible( _pXWindow );
+ }
+ else if ( ( nType == WINDOW_HELPTEXTWINDOW ) || ( nType == WINDOW_FIXEDLINE ) )
+ {
+ xContext = (accessibility::XAccessibleContext*) new VCLXAccessibleFixedText( _pXWindow );
+ }
+ else
+ {
+ xContext = (accessibility::XAccessibleContext*) new VCLXAccessibleComponent( _pXWindow );
+ }
+ }
+
+ return xContext;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXToolBox* _pXWindow )
+ {
+ return new VCLXAccessibleToolBox( _pXWindow );
+ }
+
+ //--------------------------------------------------------------------
+ IAccessibleTabListBox* AccessibleFactory::createAccessibleTabListBox(
+ const Reference< XAccessible >& rxParent, SvHeaderTabListBox& rBox ) const
+ {
+ return new AccessibleTabListBox( rxParent, rBox );
+ }
+
+ //--------------------------------------------------------------------
+ IAccessibleBrowseBox* AccessibleFactory::createAccessibleBrowseBox(
+ const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox ) const
+ {
+ return new AccessibleBrowseBoxAccess( _rxParent, _rBrowseBox );
+ }
+
+ //--------------------------------------------------------------------
+ IAccessibleTableControl* AccessibleFactory::createAccessibleTableControl(
+ const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable ) const
+ {
+ return new AccessibleGridControlAccess( _rxParent, _rTable );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessibleIconChoiceCtrl(
+ SvtIconChoiceCtrl& _rIconCtrl, const Reference< XAccessible >& _xParent ) const
+ {
+ return new AccessibleIconChoiceCtrl( _rIconCtrl, _xParent );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessibleTabBar( TabBar& _rTabBar ) const
+ {
+ return new AccessibleTabBar( &_rTabBar );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleTextWindowContext(
+ VCLXWindow* pVclXWindow, TextEngine& rEngine, TextView& rView, bool bCompoundControlChild ) const
+ {
+ return new Document( pVclXWindow, rEngine, rView, bCompoundControlChild );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessibleTreeListBox(
+ SvTreeListBox& _rListBox, const Reference< XAccessible >& _xParent ) const
+ {
+ return new AccessibleListBox( _rListBox, _xParent );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxHeaderBar(
+ const Reference< XAccessible >& rxParent, IAccessibleTableProvider& _rOwningTable,
+ AccessibleBrowseBoxObjType _eObjType ) const
+ {
+ return new AccessibleBrowseBoxHeaderBar( rxParent, _rOwningTable, _eObjType );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxTableCell(
+ const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox,
+ const Reference< XWindow >& _xFocusWindow, sal_Int32 _nRowId, sal_uInt16 _nColId, sal_Int32 _nOffset ) const
+ {
+ return new AccessibleBrowseBoxTableCell( _rxParent, _rBrowseBox, _xFocusWindow,
+ _nRowId, _nColId, _nOffset );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxHeaderCell(
+ sal_Int32 _nColumnRowId, const Reference< XAccessible >& rxParent, IAccessibleTableProvider& _rBrowseBox,
+ const Reference< XWindow >& _xFocusWindow, AccessibleBrowseBoxObjType _eObjType ) const
+ {
+ return new AccessibleBrowseBoxHeaderCell( _nColumnRowId, rxParent, _rBrowseBox,
+ _xFocusWindow, _eObjType );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createAccessibleCheckBoxCell(
+ const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox,
+ const Reference< XWindow >& _xFocusWindow, sal_Int32 _nRowPos, sal_uInt16 _nColPos,
+ const TriState& _eState, sal_Bool _bEnabled, sal_Bool _bIsTriState ) const
+ {
+ return new AccessibleCheckBoxCell( _rxParent, _rBrowseBox, _xFocusWindow,
+ _nRowPos, _nColPos, _eState, _bEnabled, _bIsTriState );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessible > AccessibleFactory::createEditBrowseBoxTableCellAccess(
+ const Reference< XAccessible >& _rxParent, const Reference< XAccessible >& _rxControlAccessible,
+ const Reference< XWindow >& _rxFocusWindow, IAccessibleTableProvider& _rBrowseBox,
+ sal_Int32 _nRowPos, sal_uInt16 _nColPos ) const
+ {
+ return new EditBrowseBoxTableCellAccess( _rxParent, _rxControlAccessible,
+ _rxFocusWindow, _rBrowseBox, _nRowPos, _nColPos );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleToolPanelDeck(
+ const Reference< XAccessible >& i_rAccessibleParent, ::svt::ToolPanelDeck& i_rPanelDeck )
+ {
+ return new AccessibleToolPanelDeck( i_rAccessibleParent, i_rPanelDeck );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XAccessibleContext > AccessibleFactory::createAccessibleToolPanelTabBar(
+ const Reference< XAccessible >& i_rAccessibleParent, ::svt::IToolPanelDeck& i_rPanelDeck, ::svt::PanelTabBar& i_rTabBar )
+ {
+ return new AccessibleToolPanelTabBar( i_rAccessibleParent, i_rPanelDeck, i_rTabBar );
+ }
+
+//........................................................................
+} // namespace accessibility
+//........................................................................
+
+//========================================================================
+extern "C" void* SAL_CALL getStandardAccessibleFactory()
+{
+ ::toolkit::IAccessibleFactory* pFactory = new ::accessibility::AccessibleFactory;
+ pFactory->acquire();
+ return pFactory;
+}
+
+extern "C" void* SAL_CALL getSvtAccessibilityComponentFactory()
+{
+ ::svt::IAccessibleFactory* pFactory = new ::accessibility::AccessibleFactory;
+ pFactory->acquire();
+ return pFactory;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/helper/accessiblestrings.src b/accessibility/source/helper/accessiblestrings.src
new file mode 100644
index 000000000000..ee7f77f9b502
--- /dev/null
+++ b/accessibility/source/helper/accessiblestrings.src
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * 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 ACCESSIBILITY_HELPER_ACCESSIBLESTRINGS_HRC_
+#include <accessibility/helper/accessiblestrings.hrc>
+#endif
+
+
+String RID_STR_ACC_ACTION_CLICK
+{
+ Text = "click";
+};
+
+String RID_STR_ACC_ACTION_TOGGLEPOPUP
+{
+ Text = "togglePopup";
+};
+
+String RID_STR_ACC_ACTION_SELECT
+{
+ Text = "select";
+};
+
+String RID_STR_ACC_ACTION_INCLINE
+{
+ Text = "incrementLine";
+};
+
+String RID_STR_ACC_ACTION_DECLINE
+{
+ Text = "decrementLine";
+};
+
+String RID_STR_ACC_ACTION_INCBLOCK
+{
+ Text = "incrementBlock";
+};
+
+String RID_STR_ACC_ACTION_DECBLOCK
+{
+ Text = "decrementBlock";
+};
+
+String RID_STR_ACC_NAME_BROWSEBUTTON
+{
+ Text [ en-US ] = "Browse";
+};
+
+String RID_STR_ACC_DESC_PANELDECL_TABBAR
+{
+ Text [ en-US ] = "Panel Deck Tab Bar";
+};
diff --git a/accessibility/source/helper/accresmgr.cxx b/accessibility/source/helper/accresmgr.cxx
new file mode 100644
index 000000000000..c2e5516d6a88
--- /dev/null
+++ b/accessibility/source/helper/accresmgr.cxx
@@ -0,0 +1,85 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/helper/accresmgr.hxx>
+
+#include <tools/simplerm.hxx>
+#include <vcl/svapp.hxx>
+
+
+// -----------------------------------------------------------------------------
+// TkResMgr
+// -----------------------------------------------------------------------------
+
+SimpleResMgr* TkResMgr::m_pImpl = NULL;
+
+// -----------------------------------------------------------------------------
+
+TkResMgr::EnsureDelete::~EnsureDelete()
+{
+ delete TkResMgr::m_pImpl;
+}
+
+// -----------------------------------------------------------------------------
+
+void TkResMgr::ensureImplExists()
+{
+ if (m_pImpl)
+ return;
+
+ ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILocale();
+
+ ByteString sResMgrName( "acc" );
+
+ m_pImpl = SimpleResMgr::Create( sResMgrName.GetBuffer(), aLocale );
+
+ if (m_pImpl)
+ {
+ // now that we have a impl class, make sure it's deleted on unloading the library
+ static TkResMgr::EnsureDelete s_aDeleteTheImplClass;
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString TkResMgr::loadString( sal_uInt16 nResId )
+{
+ ::rtl::OUString sReturn;
+
+ ensureImplExists();
+ if ( m_pImpl )
+ sReturn = m_pImpl->ReadString( nResId );
+
+ return sReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/helper/characterattributeshelper.cxx b/accessibility/source/helper/characterattributeshelper.cxx
new file mode 100644
index 000000000000..fe06e78dc7a3
--- /dev/null
+++ b/accessibility/source/helper/characterattributeshelper.cxx
@@ -0,0 +1,122 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/helper/characterattributeshelper.hxx>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+
+
+// -----------------------------------------------------------------------------
+// CharacterAttributesHelper
+// -----------------------------------------------------------------------------
+
+CharacterAttributesHelper::CharacterAttributesHelper( const Font& rFont, sal_Int32 nBackColor, sal_Int32 nColor )
+{
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharBackColor" ), makeAny( (sal_Int32) nBackColor ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharColor" ), makeAny( (sal_Int32) nColor ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharFontCharSet" ), makeAny( (sal_Int16) rFont.GetCharSet() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharFontFamily" ), makeAny( (sal_Int16) rFont.GetFamily() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharFontName" ), makeAny( (::rtl::OUString) rFont.GetName() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharFontPitch" ), makeAny( (sal_Int16) rFont.GetPitch() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharFontStyleName" ), makeAny( (::rtl::OUString) rFont.GetStyleName() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharHeight" ), makeAny( (sal_Int16) rFont.GetSize().Height() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharScaleWidth" ), makeAny( (sal_Int16) rFont.GetSize().Width() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharStrikeout" ), makeAny( (sal_Int16) rFont.GetStrikeout() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharUnderline" ), makeAny( (sal_Int16) rFont.GetUnderline() ) ) );
+ m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharWeight" ), makeAny( (float) rFont.GetWeight() ) ) );
+}
+
+// -----------------------------------------------------------------------------
+
+CharacterAttributesHelper::~CharacterAttributesHelper()
+{
+ m_aAttributeMap.clear();
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< PropertyValue > CharacterAttributesHelper::GetCharacterAttributes()
+{
+ Sequence< PropertyValue > aValues( m_aAttributeMap.size() );
+ PropertyValue* pValues = aValues.getArray();
+
+ for ( AttributeMap::iterator aIt = m_aAttributeMap.begin(); aIt != m_aAttributeMap.end(); ++aIt, ++pValues )
+ {
+ pValues->Name = aIt->first;
+ pValues->Handle = (sal_Int32) -1;
+ pValues->Value = aIt->second;
+ pValues->State = PropertyState_DIRECT_VALUE;
+ }
+
+ return aValues;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< PropertyValue > CharacterAttributesHelper::GetCharacterAttributes( const Sequence< ::rtl::OUString >& aRequestedAttributes )
+{
+ Sequence< PropertyValue > aValues;
+ sal_Int32 nLength = aRequestedAttributes.getLength();
+
+ if ( nLength != 0 )
+ {
+ const ::rtl::OUString* pNames = aRequestedAttributes.getConstArray();
+ AttributeMap aAttributeMap;
+
+ for ( sal_Int32 i = 0; i < nLength; ++i )
+ {
+ AttributeMap::iterator aFound = m_aAttributeMap.find( pNames[i] );
+ if ( aFound != m_aAttributeMap.end() )
+ aAttributeMap.insert( *aFound );
+ }
+
+ aValues.realloc( aAttributeMap.size() );
+ PropertyValue* pValues = aValues.getArray();
+
+ for ( AttributeMap::iterator aIt = aAttributeMap.begin(); aIt != aAttributeMap.end(); ++aIt, ++pValues )
+ {
+ pValues->Name = aIt->first;
+ pValues->Handle = (sal_Int32) -1;
+ pValues->Value = aIt->second;
+ pValues->State = PropertyState_DIRECT_VALUE;
+ }
+ }
+ else
+ {
+ aValues = GetCharacterAttributes();
+ }
+
+ return aValues;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/helper/makefile.mk b/accessibility/source/helper/makefile.mk
new file mode 100644
index 000000000000..72284e38f3bc
--- /dev/null
+++ b/accessibility/source/helper/makefile.mk
@@ -0,0 +1,53 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=accessibility
+TARGET=helper
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES= \
+ $(SLO)$/acc_factory.obj \
+ $(SLO)$/accresmgr.obj \
+ $(SLO)$/characterattributeshelper.obj \
+
+SRS1NAME=$(TARGET)
+SRC1FILES=\
+ accessiblestrings.src
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/source/inc/floatingwindowaccessible.hxx b/accessibility/source/inc/floatingwindowaccessible.hxx
new file mode 100644
index 000000000000..cc8a91f637d5
--- /dev/null
+++ b/accessibility/source/inc/floatingwindowaccessible.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 ACCESSIBILITY_FLOATINGWINDOWACCESSIBLE_HXX
+#define ACCESSIBILITY_FLOATINGWINDOWACCESSIBLE_HXX
+
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+class FloatingWindowAccessible : public VCLXAccessibleComponent
+{
+public:
+ FloatingWindowAccessible( VCLXWindow* pWindow );
+ virtual ~FloatingWindowAccessible();
+
+ virtual void FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet );
+};
+
+#endif // ACCESSIBILITY_FLOATINGWINDOWACCESSIBLE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/accessiblemenubasecomponent.cxx b/accessibility/source/standard/accessiblemenubasecomponent.cxx
new file mode 100644
index 000000000000..ab02caaa322c
--- /dev/null
+++ b/accessibility/source/standard/accessiblemenubasecomponent.cxx
@@ -0,0 +1,786 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/accessiblemenubasecomponent.hxx>
+#include <accessibility/standard/vclxaccessiblemenu.hxx>
+#include <accessibility/standard/vclxaccessiblemenuitem.hxx>
+#include <accessibility/standard/vclxaccessiblemenuseparator.hxx>
+#include <toolkit/helper/externallock.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <vcl/menu.hxx>
+#include <tools/debug.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// OAccessibleMenuBaseComponent
+// -----------------------------------------------------------------------------
+
+OAccessibleMenuBaseComponent::OAccessibleMenuBaseComponent( Menu* pMenu )
+ :AccessibleExtendedComponentHelper_BASE( new VCLExternalSolarLock() )
+ ,m_pMenu( pMenu )
+ ,m_bEnabled( sal_False )
+ ,m_bFocused( sal_False )
+ ,m_bVisible( sal_False )
+ ,m_bSelected( sal_False )
+ ,m_bChecked( sal_False )
+{
+ m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
+
+ if ( m_pMenu )
+ {
+ m_aAccessibleChildren.assign( m_pMenu->GetItemCount(), Reference< XAccessible >() );
+ m_pMenu->AddEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+OAccessibleMenuBaseComponent::~OAccessibleMenuBaseComponent()
+{
+ if ( m_pMenu )
+ m_pMenu->RemoveEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
+
+ delete m_pExternalLock;
+ m_pExternalLock = NULL;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsEnabled()
+{
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsFocused()
+{
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsVisible()
+{
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsSelected()
+{
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsChecked()
+{
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::SetStates()
+{
+ m_bEnabled = IsEnabled();
+ m_bFocused = IsFocused();
+ m_bVisible = IsVisible();
+ m_bSelected = IsSelected();
+ m_bChecked = IsChecked();
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::SetEnabled( sal_Bool bEnabled )
+{
+ if ( m_bEnabled != bEnabled )
+ {
+ Any aOldValue[2], aNewValue[2];
+ if ( m_bEnabled )
+ {
+ aOldValue[0] <<= AccessibleStateType::SENSITIVE;
+ aOldValue[1] <<= AccessibleStateType::ENABLED;
+ }
+ else
+ {
+ aNewValue[0] <<= AccessibleStateType::ENABLED;
+ aNewValue[1] <<= AccessibleStateType::SENSITIVE;
+ }
+ m_bEnabled = bEnabled;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[0], aNewValue[0] );
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[1], aNewValue[1] );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::SetFocused( sal_Bool bFocused )
+{
+ if ( m_bFocused != bFocused )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bFocused )
+ aOldValue <<= AccessibleStateType::FOCUSED;
+ else
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ m_bFocused = bFocused;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::SetVisible( sal_Bool bVisible )
+{
+ if ( m_bVisible != bVisible )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bVisible )
+ aOldValue <<= AccessibleStateType::VISIBLE;
+ else
+ aNewValue <<= AccessibleStateType::VISIBLE;
+ m_bVisible = bVisible;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::SetSelected( sal_Bool bSelected )
+{
+ if ( m_bSelected != bSelected )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bSelected )
+ aOldValue <<= AccessibleStateType::SELECTED;
+ else
+ aNewValue <<= AccessibleStateType::SELECTED;
+ m_bSelected = bSelected;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::SetChecked( sal_Bool bChecked )
+{
+ if ( m_bChecked != bChecked )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bChecked )
+ aOldValue <<= AccessibleStateType::CHECKED;
+ else
+ aNewValue <<= AccessibleStateType::CHECKED;
+ m_bChecked = bChecked;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::UpdateEnabled( sal_Int32 i, sal_Bool bEnabled )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
+ if ( pComp )
+ pComp->SetEnabled( bEnabled );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::UpdateFocused( sal_Int32 i, sal_Bool bFocused )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
+ if ( pComp )
+ pComp->SetFocused( bFocused );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::UpdateVisible()
+{
+ SetVisible( IsVisible() );
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
+ if ( pComp )
+ pComp->SetVisible( pComp->IsVisible() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::UpdateSelected( sal_Int32 i, sal_Bool bSelected )
+{
+ NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
+ if ( pComp )
+ pComp->SetSelected( bSelected );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::UpdateChecked( sal_Int32 i, sal_Bool bChecked )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
+ if ( pComp )
+ pComp->SetChecked( bChecked );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::UpdateAccessibleName( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xChild.get() );
+ if ( pComp )
+ pComp->SetAccessibleName( pComp->GetAccessibleName() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::UpdateItemText( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xChild.get() );
+ if ( pComp )
+ pComp->SetItemText( pComp->GetItemText() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuBaseComponent::GetChildCount()
+{
+ return m_aAccessibleChildren.size();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuBaseComponent::GetChild( sal_Int32 i )
+{
+ Reference< XAccessible > xChild = m_aAccessibleChildren[i];
+ if ( !xChild.is() )
+ {
+ if ( m_pMenu )
+ {
+ // create a new child
+ OAccessibleMenuBaseComponent* pChild;
+
+ if ( m_pMenu->GetItemType( (USHORT)i ) == MENUITEM_SEPARATOR )
+ {
+ pChild = new VCLXAccessibleMenuSeparator( m_pMenu, (sal_uInt16)i );
+ }
+ else
+ {
+ PopupMenu* pPopupMenu = m_pMenu->GetPopupMenu( m_pMenu->GetItemId( (USHORT)i ) );
+ if ( pPopupMenu )
+ {
+ pChild = new VCLXAccessibleMenu( m_pMenu, (sal_uInt16)i, pPopupMenu );
+ pPopupMenu->SetAccessible( pChild );
+ }
+ else
+ {
+ pChild = new VCLXAccessibleMenuItem( m_pMenu, (sal_uInt16)i );
+ }
+ }
+
+ // set states
+ pChild->SetStates();
+
+ xChild = pChild;
+
+ // insert into menu item list
+ m_aAccessibleChildren[i] = xChild;
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuBaseComponent::GetChildAt( const awt::Point& rPoint )
+{
+ Reference< XAccessible > xChild;
+ for ( sal_uInt32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
+ {
+ Reference< XAccessible > xAcc = getAccessibleChild( i );
+ if ( xAcc.is() )
+ {
+ Reference< XAccessibleComponent > xComp( xAcc->getAccessibleContext(), UNO_QUERY );
+ if ( xComp.is() )
+ {
+ Rectangle aRect = VCLRectangle( xComp->getBounds() );
+ Point aPos = VCLPoint( rPoint );
+ if ( aRect.IsInside( aPos ) )
+ {
+ xChild = xAcc;
+ break;
+ }
+ }
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::InsertChild( sal_Int32 i )
+{
+ if ( i > (sal_Int32)m_aAccessibleChildren.size() )
+ i = m_aAccessibleChildren.size();
+
+ if ( i >= 0 )
+ {
+ // insert entry in child list
+ m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + i, Reference< XAccessible >() );
+
+ // update item position of accessible children
+ for ( sal_uInt32 j = i, nCount = m_aAccessibleChildren.size(); j < nCount; ++j )
+ {
+ Reference< XAccessible > xAcc( m_aAccessibleChildren[j] );
+ if ( xAcc.is() )
+ {
+ OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xAcc.get() );
+ if ( pComp )
+ pComp->SetItemPos( (sal_uInt16)j );
+ }
+ }
+
+ // send accessible child event
+ Reference< XAccessible > xChild( GetChild( i ) );
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::RemoveChild( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ // keep the accessible of the removed item
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+
+ // remove entry in child list
+ m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i );
+
+ // update item position of accessible children
+ for ( sal_uInt32 j = i, nCount = m_aAccessibleChildren.size(); j < nCount; ++j )
+ {
+ Reference< XAccessible > xAcc( m_aAccessibleChildren[j] );
+ if ( xAcc.is() )
+ {
+ OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xAcc.get() );
+ if ( pComp )
+ pComp->SetItemPos( (sal_uInt16)j );
+ }
+ }
+
+ // send accessible child event
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+
+ Reference< XComponent > xComponent( xChild, UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsHighlighted()
+{
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsChildHighlighted()
+{
+ sal_Bool bChildHighlighted = sal_False;
+
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
+ if ( pComp && pComp->IsHighlighted() )
+ {
+ bChildHighlighted = sal_True;
+ break;
+ }
+ }
+ }
+
+ return bChildHighlighted;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::SelectChild( sal_Int32 i )
+{
+ // open the menu
+ if ( getAccessibleRole() == AccessibleRole::MENU && !IsPopupMenuOpen() )
+ Click();
+
+ // highlight the child
+ if ( m_pMenu )
+ m_pMenu->HighlightItem( (USHORT)i );
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::DeSelectAll()
+{
+ if ( m_pMenu )
+ m_pMenu->DeHighlight();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsChildSelected( sal_Int32 i )
+{
+ sal_Bool bSelected = sal_False;
+
+ if ( m_pMenu && m_pMenu->IsHighlighted( (USHORT)i ) )
+ bSelected = sal_True;
+
+ return bSelected;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::Select()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::DeSelect()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::Click()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsPopupMenuOpen()
+{
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+IMPL_LINK( OAccessibleMenuBaseComponent, MenuEventListener, VclSimpleEvent*, pEvent )
+{
+ DBG_ASSERT( pEvent && pEvent->ISA( VclMenuEvent ), "OAccessibleMenuBaseComponent - Unknown MenuEvent!" );
+ if ( pEvent && pEvent->ISA( VclMenuEvent ) )
+ {
+ DBG_ASSERT( ((VclMenuEvent*)pEvent)->GetMenu(), "OAccessibleMenuBaseComponent - Menu?" );
+ ProcessMenuEvent( *(VclMenuEvent*)pEvent );
+ }
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::ProcessMenuEvent( const VclMenuEvent& rVclMenuEvent )
+{
+ sal_uInt16 nItemPos = rVclMenuEvent.GetItemPos();
+
+ switch ( rVclMenuEvent.GetId() )
+ {
+ case VCLEVENT_MENU_SHOW:
+ case VCLEVENT_MENU_HIDE:
+ {
+ UpdateVisible();
+ }
+ break;
+ case VCLEVENT_MENU_HIGHLIGHT:
+ {
+ SetFocused( sal_False );
+ UpdateFocused( nItemPos, sal_True );
+ UpdateSelected( nItemPos, sal_True );
+ }
+ break;
+ case VCLEVENT_MENU_DEHIGHLIGHT:
+ {
+ UpdateFocused( nItemPos, sal_False );
+ UpdateSelected( nItemPos, sal_False );
+ }
+ break;
+ case VCLEVENT_MENU_SUBMENUACTIVATE:
+ {
+ }
+ break;
+ case VCLEVENT_MENU_SUBMENUDEACTIVATE:
+ {
+ UpdateFocused( nItemPos, sal_True );
+ }
+ break;
+ case VCLEVENT_MENU_ENABLE:
+ {
+ UpdateEnabled( nItemPos, sal_True );
+ }
+ break;
+ case VCLEVENT_MENU_DISABLE:
+ {
+ UpdateEnabled( nItemPos, sal_False );
+ }
+ break;
+ case VCLEVENT_MENU_SUBMENUCHANGED:
+ {
+ RemoveChild( nItemPos );
+ InsertChild( nItemPos );
+ }
+ break;
+ case VCLEVENT_MENU_INSERTITEM:
+ {
+ InsertChild( nItemPos );
+ }
+ break;
+ case VCLEVENT_MENU_REMOVEITEM:
+ {
+ RemoveChild( nItemPos );
+ }
+ break;
+ case VCLEVENT_MENU_ACCESSIBLENAMECHANGED:
+ {
+ UpdateAccessibleName( nItemPos );
+ }
+ break;
+ case VCLEVENT_MENU_ITEMTEXTCHANGED:
+ {
+ UpdateAccessibleName( nItemPos );
+ UpdateItemText( nItemPos );
+ }
+ break;
+ case VCLEVENT_MENU_ITEMCHECKED:
+ {
+ UpdateChecked( nItemPos, sal_True );
+ }
+ break;
+ case VCLEVENT_MENU_ITEMUNCHECKED:
+ {
+ UpdateChecked( nItemPos, sal_False );
+ }
+ break;
+ case VCLEVENT_OBJECT_DYING:
+ {
+ if ( m_pMenu )
+ {
+ m_pMenu->RemoveEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
+
+ m_pMenu = NULL;
+
+ // dispose all menu items
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+ }
+ break;
+ default:
+ {
+ }
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( OAccessibleMenuBaseComponent, AccessibleExtendedComponentHelper_BASE, OAccessibleMenuBaseComponent_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( OAccessibleMenuBaseComponent, AccessibleExtendedComponentHelper_BASE, OAccessibleMenuBaseComponent_BASE )
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuBaseComponent::disposing()
+{
+ AccessibleExtendedComponentHelper_BASE::disposing();
+
+ if ( m_pMenu )
+ {
+ m_pMenu->RemoveEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
+
+ m_pMenu = NULL;
+
+ // dispose all menu items
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessible
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleContext > OAccessibleMenuBaseComponent::getAccessibleContext( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return this;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleStateSet > OAccessibleMenuBaseComponent::getAccessibleStateSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/accessiblemenucomponent.cxx b/accessibility/source/standard/accessiblemenucomponent.cxx
new file mode 100644
index 000000000000..973fae780d3f
--- /dev/null
+++ b/accessibility/source/standard/accessiblemenucomponent.cxx
@@ -0,0 +1,474 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/accessiblemenucomponent.hxx>
+
+#include <toolkit/awt/vclxfont.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/unohelp2.hxx>
+
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class OAccessibleMenuComponent
+// -----------------------------------------------------------------------------
+
+OAccessibleMenuComponent::OAccessibleMenuComponent( Menu* pMenu )
+ :OAccessibleMenuBaseComponent( pMenu )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+OAccessibleMenuComponent::~OAccessibleMenuComponent()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuComponent::IsEnabled()
+{
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuComponent::IsVisible()
+{
+ sal_Bool bVisible = sal_False;
+
+ if ( m_pMenu )
+ bVisible = m_pMenu->IsMenuVisible();
+
+ return bVisible;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuComponent::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ if ( IsEnabled() )
+ {
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+ rStateSet.AddState( AccessibleStateType::SENSITIVE );
+ }
+
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( IsFocused() )
+ rStateSet.AddState( AccessibleStateType::FOCUSED );
+
+ if ( IsVisible() )
+ {
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+ }
+
+ rStateSet.AddState( AccessibleStateType::OPAQUE );
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleComponent
+// -----------------------------------------------------------------------------
+
+awt::Rectangle OAccessibleMenuComponent::implGetBounds() throw (RuntimeException)
+{
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+
+ if ( m_pMenu )
+ {
+ Window* pWindow = m_pMenu->GetWindow();
+ if ( pWindow )
+ {
+ // get bounding rectangle of the window in screen coordinates
+ Rectangle aRect = pWindow->GetWindowExtentsRelative( NULL );
+ aBounds = AWTRectangle( aRect );
+
+ // get position of the accessible parent in screen coordinates
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComponent( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComponent.is() )
+ {
+ awt::Point aParentScreenLoc = xParentComponent->getLocationOnScreen();
+
+ // calculate position of the window relative to the accessible parent
+ aBounds.X -= aParentScreenLoc.X;
+ aBounds.Y -= aParentScreenLoc.Y;
+ }
+ }
+ }
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( OAccessibleMenuComponent, OAccessibleMenuBaseComponent, OAccessibleMenuComponent_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( OAccessibleMenuComponent, OAccessibleMenuBaseComponent, OAccessibleMenuComponent_BASE )
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuComponent::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetChildCount();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuComponent::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return GetChild( i );
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuComponent::getAccessibleParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+
+ if ( m_pMenu )
+ {
+ Window* pWindow = m_pMenu->GetWindow();
+ if ( pWindow )
+ {
+ Window* pParent = pWindow->GetAccessibleParentWindow();
+ if ( pParent )
+ xParent = pParent->GetAccessible();
+ }
+ }
+
+ return xParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 OAccessibleMenuComponent::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::UNKNOWN;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuComponent::getAccessibleDescription( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pMenu )
+ {
+ Window* pWindow = m_pMenu->GetWindow();
+ if ( pWindow )
+ sDescription = pWindow->GetAccessibleDescription();
+ }
+
+ return sDescription;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuComponent::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleRelationSet > OAccessibleMenuComponent::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Locale OAccessibleMenuComponent::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuComponent::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetChildAt( rPoint );
+}
+
+// -----------------------------------------------------------------------------
+
+awt::Point OAccessibleMenuComponent::getLocationOnScreen( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ awt::Point aPos;
+
+ if ( m_pMenu )
+ {
+ Window* pWindow = m_pMenu->GetWindow();
+ if ( pWindow )
+ {
+ Rectangle aRect = pWindow->GetWindowExtentsRelative( NULL );
+ aPos = AWTPoint( aRect.TopLeft() );
+ }
+ }
+
+ return aPos;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuComponent::grabFocus( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( m_pMenu )
+ {
+ Window* pWindow = m_pMenu->GetWindow();
+ if ( pWindow )
+ pWindow->GrabFocus();
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuComponent::getForeground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ sal_Int32 nColor = rStyleSettings.GetMenuTextColor().GetColor();
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuComponent::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+Reference< awt::XFont > OAccessibleMenuComponent::getFont( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+
+ if ( m_pMenu )
+ {
+ Window* pWindow = m_pMenu->GetWindow();
+ if ( pWindow )
+ {
+ Reference< awt::XDevice > xDev( pWindow->GetComponentInterface(), UNO_QUERY );
+ if ( xDev.is() )
+ {
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ VCLXFont* pVCLXFont = new VCLXFont;
+ pVCLXFont->Init( *xDev.get(), rStyleSettings.GetMenuFont() );
+ xFont = pVCLXFont;
+ }
+ }
+ }
+
+ return xFont;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuComponent::getTitledBorderText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuComponent::getToolTipText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleSelection
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuComponent::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ SelectChild( nChildIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuComponent::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return IsChildSelected( nChildIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuComponent::clearAccessibleSelection( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ DeSelectAll();
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuComponent::selectAllAccessibleChildren( ) throw (RuntimeException)
+{
+ // This method makes no sense in a menu, and so does nothing.
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuComponent::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nRet = 0;
+
+ for ( sal_Int32 i = 0, nCount = GetChildCount(); i < nCount; i++ )
+ {
+ if ( IsChildSelected( i ) )
+ ++nRet;
+ }
+
+ return nRet;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuComponent::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+
+ for ( sal_Int32 i = 0, j = 0, nCount = GetChildCount(); i < nCount; i++ )
+ {
+ if ( IsChildSelected( i ) && ( j++ == nSelectedChildIndex ) )
+ {
+ xChild = GetChild( i );
+ break;
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuComponent::deselectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ DeSelectAll();
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/accessiblemenuitemcomponent.cxx b/accessibility/source/standard/accessiblemenuitemcomponent.cxx
new file mode 100644
index 000000000000..0b34e2efa800
--- /dev/null
+++ b/accessibility/source/standard/accessiblemenuitemcomponent.cxx
@@ -0,0 +1,506 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/accessiblemenuitemcomponent.hxx>
+
+
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+#include <toolkit/awt/vclxwindows.hxx>
+#include <toolkit/helper/externallock.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/accessibletexthelper.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/unohelp2.hxx>
+
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class OAccessibleMenuItemComponent
+// -----------------------------------------------------------------------------
+
+OAccessibleMenuItemComponent::OAccessibleMenuItemComponent( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu )
+ :OAccessibleMenuBaseComponent( pMenu )
+ ,m_pParent( pParent )
+ ,m_nItemPos( nItemPos )
+{
+ m_sAccessibleName = GetAccessibleName();
+ m_sItemText = GetItemText();
+}
+
+// -----------------------------------------------------------------------------
+
+OAccessibleMenuItemComponent::~OAccessibleMenuItemComponent()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuItemComponent::IsEnabled()
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bEnabled = sal_False;
+ if ( m_pParent )
+ bEnabled = m_pParent->IsItemEnabled( m_pParent->GetItemId( m_nItemPos ) );
+
+ return bEnabled;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuItemComponent::IsVisible()
+{
+ sal_Bool bVisible = sal_False;
+
+ if ( m_pParent )
+ bVisible = m_pParent->IsItemPosVisible( m_nItemPos );
+
+ return bVisible;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::Select()
+{
+ // open the parent menu
+ Reference< XAccessible > xParent( getAccessibleParent() );
+ if ( xParent.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xParent.get() );
+ if ( pComp && pComp->getAccessibleRole() == AccessibleRole::MENU && !pComp->IsPopupMenuOpen() )
+ pComp->Click();
+ }
+
+ // highlight the menu item
+ if ( m_pParent )
+ m_pParent->HighlightItem( m_nItemPos );
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::DeSelect()
+{
+ if ( m_pParent && IsSelected() )
+ m_pParent->DeHighlight();
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::Click()
+{
+ // open the parent menu
+ Reference< XAccessible > xParent( getAccessibleParent() );
+ if ( xParent.is() )
+ {
+ OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xParent.get() );
+ if ( pComp && pComp->getAccessibleRole() == AccessibleRole::MENU && !pComp->IsPopupMenuOpen() )
+ pComp->Click();
+ }
+
+ // click the menu item
+ if ( m_pParent )
+ {
+ Window* pWindow = m_pParent->GetWindow();
+ if ( pWindow )
+ {
+ // #102438# Menu items are not selectable
+ // Popup menus are executed asynchronously, triggered by a timer.
+ // As Menu::SelectItem only works, if the corresponding menu window is
+ // already created, we have to set the menu delay to 0, so
+ // that the popup menus are executed synchronously.
+ AllSettings aSettings = pWindow->GetSettings();
+ MouseSettings aMouseSettings = aSettings.GetMouseSettings();
+ ULONG nDelay = aMouseSettings.GetMenuDelay();
+ aMouseSettings.SetMenuDelay( 0 );
+ aSettings.SetMouseSettings( aMouseSettings );
+ pWindow->SetSettings( aSettings );
+
+ m_pParent->SelectItem( m_pParent->GetItemId( m_nItemPos ) );
+
+ // meanwhile the window pointer may be invalid
+ pWindow = m_pParent->GetWindow();
+ if ( pWindow )
+ {
+ // set the menu delay back to the old value
+ aSettings = pWindow->GetSettings();
+ aMouseSettings = aSettings.GetMouseSettings();
+ aMouseSettings.SetMenuDelay( nDelay );
+ aSettings.SetMouseSettings( aMouseSettings );
+ pWindow->SetSettings( aSettings );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::SetItemPos( sal_uInt16 nItemPos )
+{
+ m_nItemPos = nItemPos;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::SetAccessibleName( const ::rtl::OUString& sAccessibleName )
+{
+ if ( !m_sAccessibleName.equals( sAccessibleName ) )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= m_sAccessibleName;
+ aNewValue <<= sAccessibleName;
+ m_sAccessibleName = sAccessibleName;
+ NotifyAccessibleEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuItemComponent::GetAccessibleName()
+{
+ ::rtl::OUString sName;
+ if ( m_pParent )
+ {
+ sal_uInt16 nItemId = m_pParent->GetItemId( m_nItemPos );
+ sName = m_pParent->GetAccessibleName( nItemId );
+ if ( sName.getLength() == 0 )
+ sName = m_pParent->GetItemText( nItemId );
+ sName = OutputDevice::GetNonMnemonicString( sName );
+ }
+
+ return sName;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::SetItemText( const ::rtl::OUString& sItemText )
+{
+ Any aOldValue, aNewValue;
+ if ( OCommonAccessibleText::implInitTextChangedEvent( m_sItemText, sItemText, aOldValue, aNewValue ) )
+ {
+ m_sItemText = sItemText;
+ NotifyAccessibleEvent( AccessibleEventId::TEXT_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuItemComponent::GetItemText()
+{
+ ::rtl::OUString sText;
+ if ( m_pParent )
+ sText = OutputDevice::GetNonMnemonicString( m_pParent->GetItemText( m_pParent->GetItemId( m_nItemPos ) ) );
+
+ return sText;
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ if ( IsEnabled() )
+ {
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+ rStateSet.AddState( AccessibleStateType::SENSITIVE );
+ }
+
+ if ( IsVisible() )
+ {
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+ }
+
+ rStateSet.AddState( AccessibleStateType::OPAQUE );
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleComponent
+// -----------------------------------------------------------------------------
+
+awt::Rectangle OAccessibleMenuItemComponent::implGetBounds() throw (RuntimeException)
+{
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+
+ if ( m_pParent )
+ {
+ // get bounding rectangle of the item relative to the containing window
+ aBounds = AWTRectangle( m_pParent->GetBoundingRectangle( m_nItemPos ) );
+
+ // get position of containing window in screen coordinates
+ Window* pWindow = m_pParent->GetWindow();
+ if ( pWindow )
+ {
+ Rectangle aRect = pWindow->GetWindowExtentsRelative( NULL );
+ awt::Point aWindowScreenLoc = AWTPoint( aRect.TopLeft() );
+
+ // get position of accessible parent in screen coordinates
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComponent( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComponent.is() )
+ {
+ awt::Point aParentScreenLoc = xParentComponent->getLocationOnScreen();
+
+ // calculate bounding rectangle of the item relative to the accessible parent
+ aBounds.X += aWindowScreenLoc.X - aParentScreenLoc.X;
+ aBounds.Y += aWindowScreenLoc.Y - aParentScreenLoc.Y;
+ }
+ }
+ }
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void SAL_CALL OAccessibleMenuItemComponent::disposing()
+{
+ OAccessibleMenuBaseComponent::disposing();
+
+ m_pParent = NULL;
+ m_sAccessibleName = ::rtl::OUString();
+ m_sItemText = ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuItemComponent::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuItemComponent::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessible >();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuItemComponent::getAccessibleParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return m_pParent->GetAccessible();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuItemComponent::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return m_nItemPos;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 OAccessibleMenuItemComponent::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::UNKNOWN;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuItemComponent::getAccessibleDescription( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pParent )
+ sDescription = m_pParent->GetHelpText( m_pParent->GetItemId( m_nItemPos ) );
+
+ return sDescription;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuItemComponent::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return m_sAccessibleName;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleRelationSet > OAccessibleMenuItemComponent::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Locale OAccessibleMenuItemComponent::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > OAccessibleMenuItemComponent::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Reference< XAccessible >();
+}
+
+// -----------------------------------------------------------------------------
+
+void OAccessibleMenuItemComponent::grabFocus( ) throw (RuntimeException)
+{
+ // no focus for items
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuItemComponent::getForeground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getForeground();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 OAccessibleMenuItemComponent::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getBackground();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+Reference< awt::XFont > OAccessibleMenuItemComponent::getFont( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleExtendedComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ xFont = xParentComp->getFont();
+ }
+
+ return xFont;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuItemComponent::getTitledBorderText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OAccessibleMenuItemComponent::getToolTipText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sRet;
+ if ( m_pParent )
+ sRet = m_pParent->GetTipHelpText( m_pParent->GetItemId( m_nItemPos ) );
+
+ return sRet;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/floatingwindowaccessible.cxx b/accessibility/source/standard/floatingwindowaccessible.cxx
new file mode 100644
index 000000000000..af8a89122e32
--- /dev/null
+++ b/accessibility/source/standard/floatingwindowaccessible.cxx
@@ -0,0 +1,73 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include <floatingwindowaccessible.hxx>
+
+
+#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <vcl/window.hxx>
+
+namespace uno = ::com::sun::star::uno;
+
+using ::com::sun::star::accessibility::AccessibleRelation;
+namespace AccessibleRelationType = ::com::sun::star::accessibility::AccessibleRelationType;
+
+//-------------------------------------------------------------------
+
+FloatingWindowAccessible::FloatingWindowAccessible(VCLXWindow* pWindow) :
+ VCLXAccessibleComponent(pWindow)
+{
+}
+
+//-------------------------------------------------------------------
+
+FloatingWindowAccessible::~FloatingWindowAccessible()
+{
+}
+
+//-------------------------------------------------------------------
+
+void FloatingWindowAccessible::FillAccessibleRelationSet(utl::AccessibleRelationSetHelper& rRelationSet)
+{
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ Window* pParentWindow = pWindow->GetParent();
+ if( pParentWindow )
+ {
+ uno::Sequence< uno::Reference< uno::XInterface > > aSequence(1);
+ aSequence[0] = pParentWindow->GetAccessible();
+ rRelationSet.AddRelation( AccessibleRelation( AccessibleRelationType::SUB_WINDOW_OF, aSequence ) );
+ }
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/makefile.mk b/accessibility/source/standard/makefile.mk
new file mode 100644
index 000000000000..b79d98f659e5
--- /dev/null
+++ b/accessibility/source/standard/makefile.mk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=accessibility
+TARGET=standard
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES= \
+ $(SLO)$/accessiblemenubasecomponent.obj \
+ $(SLO)$/accessiblemenucomponent.obj \
+ $(SLO)$/accessiblemenuitemcomponent.obj \
+ $(SLO)$/floatingwindowaccessible.obj \
+ $(SLO)$/vclxaccessiblebox.obj \
+ $(SLO)$/vclxaccessiblebutton.obj \
+ $(SLO)$/vclxaccessiblecheckbox.obj \
+ $(SLO)$/vclxaccessiblecombobox.obj \
+ $(SLO)$/vclxaccessibledropdowncombobox.obj \
+ $(SLO)$/vclxaccessibledropdownlistbox.obj \
+ $(SLO)$/vclxaccessibleedit.obj \
+ $(SLO)$/vclxaccessiblefixedhyperlink.obj \
+ $(SLO)$/vclxaccessiblefixedtext.obj \
+ $(SLO)$/vclxaccessiblelist.obj \
+ $(SLO)$/vclxaccessiblelistbox.obj \
+ $(SLO)$/vclxaccessiblelistitem.obj \
+ $(SLO)$/vclxaccessiblemenu.obj \
+ $(SLO)$/vclxaccessiblemenubar.obj \
+ $(SLO)$/vclxaccessiblemenuitem.obj \
+ $(SLO)$/vclxaccessiblemenuseparator.obj \
+ $(SLO)$/vclxaccessiblepopupmenu.obj \
+ $(SLO)$/vclxaccessibleradiobutton.obj \
+ $(SLO)$/vclxaccessiblescrollbar.obj \
+ $(SLO)$/vclxaccessiblestatusbar.obj \
+ $(SLO)$/vclxaccessiblestatusbaritem.obj \
+ $(SLO)$/vclxaccessibletabcontrol.obj \
+ $(SLO)$/vclxaccessibletabpage.obj \
+ $(SLO)$/vclxaccessibletabpagewindow.obj \
+ $(SLO)$/vclxaccessibletextcomponent.obj \
+ $(SLO)$/vclxaccessibletextfield.obj \
+ $(SLO)$/vclxaccessibletoolbox.obj \
+ $(SLO)$/vclxaccessibletoolboxitem.obj
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/source/standard/vclxaccessiblebox.cxx b/accessibility/source/standard/vclxaccessiblebox.cxx
new file mode 100644
index 000000000000..c8177943a3f2
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblebox.cxx
@@ -0,0 +1,376 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblebox.hxx>
+#include <accessibility/standard/vclxaccessibletextfield.hxx>
+#include <accessibility/standard/vclxaccessibleedit.hxx>
+#include <accessibility/standard/vclxaccessiblelist.hxx>
+#include <accessibility/standard/vclxaccessiblelistboxlist.hxx>
+#include <accessibility/helper/listboxhelper.hxx>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <vcl/svapp.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/lstbox.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+
+VCLXAccessibleBox::VCLXAccessibleBox (VCLXWindow* pVCLWindow, BoxType aType, bool bIsDropDownBox)
+ : VCLXAccessibleComponent (pVCLWindow),
+ m_aBoxType (aType),
+ m_bIsDropDownBox (bIsDropDownBox),
+ m_nIndexInParent (DEFAULT_INDEX_IN_PARENT)
+{
+ // Set up the flags that indicate which children this object has.
+ m_bHasListChild = true;
+
+ // A text field is not present for non drop down list boxes.
+ if ((m_aBoxType==LISTBOX) && ! m_bIsDropDownBox)
+ m_bHasTextChild = false;
+ else
+ m_bHasTextChild = true;
+}
+
+VCLXAccessibleBox::~VCLXAccessibleBox (void)
+{
+}
+
+void VCLXAccessibleBox::ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ uno::Any aOldValue, aNewValue;
+ uno::Reference<XAccessible> xAcc;
+
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_SHOW:
+ case VCLEVENT_WINDOW_HIDE:
+ {
+ Window* pChildWindow = (Window *) rVclWindowEvent.GetData();
+ // Just compare to the combo box text field. All other children
+ // are identical to this object in which case this object will
+ // be removed in a short time.
+ if (m_aBoxType==COMBOBOX)
+ {
+ ComboBox* pComboBox = static_cast<ComboBox*>(GetWindow());
+ if ( ( pComboBox != NULL ) && ( pChildWindow != NULL ) )
+ if (pChildWindow == pComboBox->GetSubEdit())
+ {
+ if (rVclWindowEvent.GetId() == VCLEVENT_WINDOW_SHOW)
+ {
+ // Instantiate text field.
+ getAccessibleChild (0);
+ aNewValue <<= m_xText;
+ }
+ else
+ {
+ // Release text field.
+ aOldValue <<= m_xText;
+ m_xText = NULL;
+ }
+ // Tell the listeners about the new/removed child.
+ NotifyAccessibleEvent (
+ AccessibleEventId::CHILD,
+ aOldValue, aNewValue);
+ }
+
+ }
+ }
+ break;
+
+ default:
+ VCLXAccessibleComponent::ProcessWindowChildEvent (rVclWindowEvent);
+ }
+}
+
+void VCLXAccessibleBox::ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent)
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_DROPDOWN_OPEN:
+ case VCLEVENT_DROPDOWN_CLOSE:
+ case VCLEVENT_LISTBOX_DOUBLECLICK:
+ case VCLEVENT_LISTBOX_SCROLLED:
+ case VCLEVENT_LISTBOX_SELECT:
+ case VCLEVENT_LISTBOX_ITEMADDED:
+ case VCLEVENT_LISTBOX_ITEMREMOVED:
+ case VCLEVENT_COMBOBOX_ITEMADDED:
+ case VCLEVENT_COMBOBOX_ITEMREMOVED:
+ case VCLEVENT_COMBOBOX_SCROLLED:
+ {
+ // Forward the call to the list child.
+ VCLXAccessibleList* pList = static_cast<VCLXAccessibleList*>(m_xList.get());
+ if ( pList == NULL )
+ {
+ getAccessibleChild ( m_bHasTextChild ? 1 : 0 );
+ pList = static_cast<VCLXAccessibleList*>(m_xList.get());
+ }
+ if ( pList != NULL )
+ pList->ProcessWindowEvent (rVclWindowEvent);
+ break;
+ }
+
+ case VCLEVENT_COMBOBOX_SELECT:
+ case VCLEVENT_COMBOBOX_DESELECT:
+ {
+ // Selection is handled by VCLXAccessibleList which operates on
+ // the same VCL object as this box does. In case of the
+ // combobox, however, we have to help by providing the list with
+ // the text of the currently selected item.
+ VCLXAccessibleList* pList = static_cast<VCLXAccessibleList*>(m_xList.get());
+ if (pList != NULL && m_xText.is())
+ {
+ Reference<XAccessibleText> xText (m_xText->getAccessibleContext(), UNO_QUERY);
+ if ( xText.is() )
+ {
+ ::rtl::OUString sText = xText->getSelectedText();
+ if ( !sText.getLength() )
+ sText = xText->getText();
+ pList->UpdateSelection (sText);
+ }
+ }
+ break;
+ }
+
+ case VCLEVENT_EDIT_MODIFY:
+ case VCLEVENT_EDIT_SELECTIONCHANGED:
+ // Modify/Selection events are handled by the combo box instead of
+ // directly by the edit field (Why?). Therefore, delegate this
+ // call to the edit field.
+ if (m_aBoxType==COMBOBOX)
+ {
+ if (m_xText.is())
+ {
+ Reference<XAccessibleContext> xContext = m_xText->getAccessibleContext();
+ VCLXAccessibleEdit* pEdit = static_cast<VCLXAccessibleEdit*>(xContext.get());
+ if (pEdit != NULL)
+ pEdit->ProcessWindowEvent (rVclWindowEvent);
+ }
+ }
+ break;
+
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+IMPLEMENT_FORWARD_XINTERFACE2(VCLXAccessibleBox, VCLXAccessibleComponent, VCLXAccessibleBox_BASE)
+IMPLEMENT_FORWARD_XTYPEPROVIDER2(VCLXAccessibleBox, VCLXAccessibleComponent, VCLXAccessibleBox_BASE)
+
+//===== XAccessible =========================================================
+
+Reference< XAccessibleContext > SAL_CALL VCLXAccessibleBox::getAccessibleContext( )
+ throw (RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ return this;
+}
+
+//===== XAccessibleContext ==================================================
+
+sal_Int32 SAL_CALL VCLXAccessibleBox::getAccessibleChildCount (void)
+ throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ // Usually a box has a text field and a list of items as its children.
+ // Non drop down list boxes have no text field. Additionally check
+ // whether the object is valid.
+ sal_Int32 nCount = 0;
+ if (IsValid())
+ nCount += (m_bHasTextChild?1:0) + (m_bHasListChild?1:0);
+ else
+ {
+ // Object not valid anymore. Release references to children.
+ m_bHasTextChild = false;
+ m_xText = NULL;
+ m_bHasListChild = false;
+ m_xList = NULL;
+ }
+
+ return nCount;
+}
+
+Reference<XAccessible> SAL_CALL VCLXAccessibleBox::getAccessibleChild (sal_Int32 i)
+ throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if (i<0 || i>=getAccessibleChildCount())
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ if (IsValid())
+ {
+ if (i==1 || ! m_bHasTextChild)
+ {
+ // List.
+ if ( ! m_xList.is())
+ {
+ VCLXAccessibleList* pList = new VCLXAccessibleList ( GetVCLXWindow(),
+ (m_aBoxType == LISTBOX ? VCLXAccessibleList::LISTBOX : VCLXAccessibleList::COMBOBOX),
+ this);
+ pList->SetIndexInParent (i);
+ m_xList = pList;
+ }
+ xChild = m_xList;
+ }
+ else
+ {
+ // Text Field.
+ if ( ! m_xText.is())
+ {
+ if (m_aBoxType==COMBOBOX)
+ {
+ ComboBox* pComboBox = static_cast<ComboBox*>(GetWindow());
+ if (pComboBox!=NULL && pComboBox->GetSubEdit()!=NULL)
+ m_xText = pComboBox->GetSubEdit()->GetAccessible();
+ }
+ else if (m_bIsDropDownBox)
+ m_xText = new VCLXAccessibleTextField (GetVCLXWindow(),this);
+ }
+ xChild = m_xText;
+ }
+ }
+
+ return xChild;
+}
+
+sal_Int16 SAL_CALL VCLXAccessibleBox::getAccessibleRole (void) throw (RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ // Return the role <const>COMBO_BOX</const> for both VCL combo boxes and
+ // VCL list boxes in DropDown-Mode else <const>PANEL</const>.
+ // This way the Java bridge has not to handle both independently.
+ return m_bIsDropDownBox ? AccessibleRole::COMBO_BOX : AccessibleRole::PANEL;
+}
+
+sal_Int32 SAL_CALL VCLXAccessibleBox::getAccessibleIndexInParent (void)
+ throw (::com::sun::star::uno::RuntimeException)
+{
+ if (m_nIndexInParent != DEFAULT_INDEX_IN_PARENT)
+ return m_nIndexInParent;
+ else
+ return VCLXAccessibleComponent::getAccessibleIndexInParent();
+}
+
+//===== XAccessibleAction ===================================================
+
+sal_Int32 SAL_CALL VCLXAccessibleBox::getAccessibleActionCount (void)
+ throw (RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex> aGuard (GetMutex());
+
+ // There is one action for drop down boxes (toggle popup) and none for
+ // the other boxes.
+ return m_bIsDropDownBox ? 1 : 0;
+}
+
+sal_Bool SAL_CALL VCLXAccessibleBox::doAccessibleAction (sal_Int32 nIndex)
+ throw (IndexOutOfBoundsException, RuntimeException)
+{
+ sal_Bool bNotify = sal_False;
+
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if (nIndex<0 || nIndex>=getAccessibleActionCount())
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+
+ if (m_aBoxType == COMBOBOX)
+ {
+ ComboBox* pComboBox = static_cast< ComboBox* >( GetWindow() );
+ if (pComboBox != NULL)
+ {
+ pComboBox->ToggleDropDown();
+ bNotify = sal_True;
+ }
+ }
+ else if (m_aBoxType == LISTBOX)
+ {
+ ListBox* pListBox = static_cast< ListBox* >( GetWindow() );
+ if (pListBox != NULL)
+ {
+ pListBox->ToggleDropDown();
+ bNotify = sal_True;
+ }
+ }
+ }
+
+ if (bNotify)
+ NotifyAccessibleEvent (AccessibleEventId::ACTION_CHANGED, Any(), Any());
+
+ return bNotify;
+}
+
+::rtl::OUString SAL_CALL VCLXAccessibleBox::getAccessibleActionDescription (sal_Int32 nIndex)
+ throw (IndexOutOfBoundsException, RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+ if (nIndex<0 || nIndex>=getAccessibleActionCount())
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ return TK_RES_STRING( RID_STR_ACC_ACTION_TOGGLEPOPUP);
+}
+
+Reference< XAccessibleKeyBinding > VCLXAccessibleBox::getAccessibleActionKeyBinding( sal_Int32 nIndex )
+ throw (IndexOutOfBoundsException, RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ Reference< XAccessibleKeyBinding > xRet;
+
+ if (nIndex<0 || nIndex>=getAccessibleActionCount())
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+
+ // ... which key?
+ return xRet;
+}
+
+//===== XComponent ==========================================================
+
+void SAL_CALL VCLXAccessibleBox::disposing (void)
+{
+ VCLXAccessibleComponent::disposing();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblebutton.cxx b/accessibility/source/standard/vclxaccessiblebutton.cxx
new file mode 100644
index 000000000000..de220dea6f08
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblebutton.cxx
@@ -0,0 +1,329 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessiblebutton.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <comphelper/accessiblekeybindinghelper.hxx>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+
+#include <vcl/button.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleButton
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleButton::VCLXAccessibleButton( VCLXWindow* pVCLWindow )
+ :VCLXAccessibleTextComponent( pVCLWindow )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleButton::~VCLXAccessibleButton()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleButton::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_PUSHBUTTON_TOGGLE:
+ {
+ Any aOldValue;
+ Any aNewValue;
+
+ PushButton* pButton = (PushButton*) GetWindow();
+ if ( pButton && pButton->GetState() == STATE_CHECK )
+ aNewValue <<= AccessibleStateType::CHECKED;
+ else
+ aOldValue <<= AccessibleStateType::CHECKED;
+
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ default:
+ VCLXAccessibleTextComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleButton::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleTextComponent::FillAccessibleStateSet( rStateSet );
+
+ PushButton* pButton = (PushButton*) GetWindow();
+ if ( pButton )
+ {
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( pButton->GetState() == STATE_CHECK )
+ rStateSet.AddState( AccessibleStateType::CHECKED );
+
+ if ( pButton->IsPressed() )
+ rStateSet.AddState( AccessibleStateType::PRESSED );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleButton, VCLXAccessibleTextComponent, VCLXAccessibleButton_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleButton, VCLXAccessibleTextComponent, VCLXAccessibleButton_BASE )
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleButton::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleButton" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleButton::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleButton" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleButton::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString aName( VCLXAccessibleTextComponent::getAccessibleName() );
+ sal_Int32 nLength = aName.getLength();
+
+ if ( nLength >= 3 && aName.matchAsciiL( RTL_CONSTASCII_STRINGPARAM("..."), nLength - 3 ) )
+ {
+ if ( nLength == 3 )
+ {
+ // it's a browse button
+ aName = ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_NAME_BROWSEBUTTON ) );
+ }
+ else
+ {
+ // remove the three trailing dots
+ aName = aName.copy( 0, nLength - 3 );
+ }
+ }
+ else if ( nLength >= 3 && aName.matchAsciiL( RTL_CONSTASCII_STRINGPARAM("<< "), 0 ) )
+ {
+ // remove the leading symbols
+ aName = aName.copy( 3, nLength - 3 );
+ }
+ else if ( nLength >= 3 && aName.matchAsciiL( RTL_CONSTASCII_STRINGPARAM(" >>"), nLength - 3 ) )
+ {
+ // remove the trailing symbols
+ aName = aName.copy( 0, nLength - 3 );
+ }
+
+ return aName;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleAction
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleButton::getAccessibleActionCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleButton::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ PushButton* pButton = (PushButton*) GetWindow();
+ if ( pButton )
+ pButton->Click();
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleButton::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleKeyBinding > VCLXAccessibleButton::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ OAccessibleKeyBindingHelper* pKeyBindingHelper = new OAccessibleKeyBindingHelper();
+ Reference< XAccessibleKeyBinding > xKeyBinding = pKeyBindingHelper;
+
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ KeyEvent aKeyEvent = pWindow->GetActivationKey();
+ KeyCode aKeyCode = aKeyEvent.GetKeyCode();
+ if ( aKeyCode.GetCode() != 0 )
+ {
+ awt::KeyStroke aKeyStroke;
+ aKeyStroke.Modifiers = 0;
+ if ( aKeyCode.IsShift() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::SHIFT;
+ if ( aKeyCode.IsMod1() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD1;
+ if ( aKeyCode.IsMod2() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD2;
+ if ( aKeyCode.IsMod3() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD3;
+ aKeyStroke.KeyCode = aKeyCode.GetCode();
+ aKeyStroke.KeyChar = aKeyEvent.GetCharCode();
+ aKeyStroke.KeyFunc = static_cast< sal_Int16 >( aKeyCode.GetFunction() );
+ pKeyBindingHelper->AddKeyBinding( aKeyStroke );
+ }
+ }
+
+ return xKeyBinding;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleValue
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleButton::getCurrentValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+
+ PushButton* pButton = (PushButton*) GetWindow();
+ if ( pButton )
+ aValue <<= (sal_Int32) pButton->IsPressed();
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleButton::setCurrentValue( const Any& aNumber ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ PushButton* pButton = (PushButton*) GetWindow();
+ if ( pButton )
+ {
+ sal_Int32 nValue = 0;
+ OSL_VERIFY( aNumber >>= nValue );
+
+ if ( nValue < 0 )
+ nValue = 0;
+ else if ( nValue > 1 )
+ nValue = 1;
+
+ pButton->SetPressed( (BOOL) nValue );
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleButton::getMaximumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 1;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleButton::getMinimumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 0;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblecheckbox.cxx b/accessibility/source/standard/vclxaccessiblecheckbox.cxx
new file mode 100644
index 000000000000..98698adb7285
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblecheckbox.cxx
@@ -0,0 +1,364 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessiblecheckbox.hxx>
+
+#include <toolkit/awt/vclxwindows.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <comphelper/accessiblekeybindinghelper.hxx>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+
+#include <vcl/button.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleCheckBox
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleCheckBox::VCLXAccessibleCheckBox( VCLXWindow* pVCLWindow )
+ :VCLXAccessibleTextComponent( pVCLWindow )
+{
+ m_bChecked = IsChecked();
+ m_bIndeterminate = IsIndeterminate();
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleCheckBox::~VCLXAccessibleCheckBox()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+bool VCLXAccessibleCheckBox::IsChecked()
+{
+ bool bChecked = false;
+
+ VCLXCheckBox* pVCLXCheckBox = static_cast< VCLXCheckBox* >( GetVCLXWindow() );
+ if ( pVCLXCheckBox && pVCLXCheckBox->getState() == (sal_Int16) 1 )
+ bChecked = true;
+
+ return bChecked;
+}
+
+// -----------------------------------------------------------------------------
+
+bool VCLXAccessibleCheckBox::IsIndeterminate()
+{
+ bool bIndeterminate = false;
+
+ VCLXCheckBox* pVCLXCheckBox = static_cast< VCLXCheckBox* >( GetVCLXWindow() );
+ if ( pVCLXCheckBox && pVCLXCheckBox->getState() == (sal_Int16) 2 )
+ bIndeterminate = true;
+
+ return bIndeterminate;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleCheckBox::SetChecked( bool bChecked )
+{
+ if ( m_bChecked != bChecked )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bChecked )
+ aOldValue <<= AccessibleStateType::CHECKED;
+ else
+ aNewValue <<= AccessibleStateType::CHECKED;
+ m_bChecked = bChecked;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleCheckBox::SetIndeterminate( bool bIndeterminate )
+{
+ if ( m_bIndeterminate != bIndeterminate )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bIndeterminate )
+ aOldValue <<= AccessibleStateType::INDETERMINATE;
+ else
+ aNewValue <<= AccessibleStateType::INDETERMINATE;
+ m_bIndeterminate = bIndeterminate;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleCheckBox::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_CHECKBOX_TOGGLE:
+ {
+ SetChecked( IsChecked() );
+ SetIndeterminate( IsIndeterminate() );
+ }
+ break;
+ default:
+ VCLXAccessibleTextComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleCheckBox::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleTextComponent::FillAccessibleStateSet( rStateSet );
+
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( IsChecked() )
+ rStateSet.AddState( AccessibleStateType::CHECKED );
+
+ if ( IsIndeterminate() )
+ rStateSet.AddState( AccessibleStateType::INDETERMINATE );
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleCheckBox, VCLXAccessibleTextComponent, VCLXAccessibleCheckBox_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleCheckBox, VCLXAccessibleTextComponent, VCLXAccessibleCheckBox_BASE )
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleCheckBox::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleCheckBox" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleCheckBox::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleCheckBox" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleAction
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleCheckBox::getAccessibleActionCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleCheckBox::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ CheckBox* pCheckBox = (CheckBox*) GetWindow();
+ VCLXCheckBox* pVCLXCheckBox = static_cast< VCLXCheckBox* >( GetVCLXWindow() );
+ if ( pCheckBox && pVCLXCheckBox )
+ {
+ sal_Int32 nValueMin = (sal_Int32) 0;
+ sal_Int32 nValueMax = (sal_Int32) 1;
+
+ if ( pCheckBox->IsTriStateEnabled() )
+ nValueMax = (sal_Int32) 2;
+
+ sal_Int32 nValue = (sal_Int32) pVCLXCheckBox->getState();
+
+ ++nValue;
+
+ if ( nValue > nValueMax )
+ nValue = nValueMin;
+
+ pVCLXCheckBox->setState( (sal_Int16) nValue );
+ }
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleCheckBox::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleKeyBinding > VCLXAccessibleCheckBox::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ OAccessibleKeyBindingHelper* pKeyBindingHelper = new OAccessibleKeyBindingHelper();
+ Reference< XAccessibleKeyBinding > xKeyBinding = pKeyBindingHelper;
+
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ KeyEvent aKeyEvent = pWindow->GetActivationKey();
+ KeyCode aKeyCode = aKeyEvent.GetKeyCode();
+ if ( aKeyCode.GetCode() != 0 )
+ {
+ awt::KeyStroke aKeyStroke;
+ aKeyStroke.Modifiers = 0;
+ if ( aKeyCode.IsShift() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::SHIFT;
+ if ( aKeyCode.IsMod1() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD1;
+ if ( aKeyCode.IsMod2() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD2;
+ if ( aKeyCode.IsMod3() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD3;
+ aKeyStroke.KeyCode = aKeyCode.GetCode();
+ aKeyStroke.KeyChar = aKeyEvent.GetCharCode();
+ aKeyStroke.KeyFunc = static_cast< sal_Int16 >( aKeyCode.GetFunction() );
+ pKeyBindingHelper->AddKeyBinding( aKeyStroke );
+ }
+ }
+
+ return xKeyBinding;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleValue
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleCheckBox::getCurrentValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+
+ VCLXCheckBox* pVCLXCheckBox = static_cast< VCLXCheckBox* >( GetVCLXWindow() );
+ if ( pVCLXCheckBox )
+ aValue <<= (sal_Int32) pVCLXCheckBox->getState();
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleCheckBox::setCurrentValue( const Any& aNumber ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ VCLXCheckBox* pVCLXCheckBox = static_cast< VCLXCheckBox* >( GetVCLXWindow() );
+ if ( pVCLXCheckBox )
+ {
+ sal_Int32 nValue = 0, nValueMin = 0, nValueMax = 0;
+ OSL_VERIFY( aNumber >>= nValue );
+ OSL_VERIFY( getMinimumValue() >>= nValueMin );
+ OSL_VERIFY( getMaximumValue() >>= nValueMax );
+
+ if ( nValue < nValueMin )
+ nValue = nValueMin;
+ else if ( nValue > nValueMax )
+ nValue = nValueMax;
+
+ pVCLXCheckBox->setState( (sal_Int16) nValue );
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleCheckBox::getMaximumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+
+ CheckBox* pCheckBox = (CheckBox*) GetWindow();
+ if ( pCheckBox && pCheckBox->IsTriStateEnabled() )
+ aValue <<= (sal_Int32) 2;
+ else
+ aValue <<= (sal_Int32) 1;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleCheckBox::getMinimumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 0;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblecombobox.cxx b/accessibility/source/standard/vclxaccessiblecombobox.cxx
new file mode 100644
index 000000000000..3da67a703e22
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblecombobox.cxx
@@ -0,0 +1,99 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblecombobox.hxx>
+#include <accessibility/standard/vclxaccessiblelist.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <vcl/svapp.hxx>
+#include <vcl/combobox.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+
+
+VCLXAccessibleComboBox::VCLXAccessibleComboBox (VCLXWindow* pVCLWindow)
+ : VCLXAccessibleBox (pVCLWindow, VCLXAccessibleBox::COMBOBOX, false)
+{
+}
+
+
+
+
+VCLXAccessibleComboBox::~VCLXAccessibleComboBox (void)
+{
+}
+
+
+
+
+bool VCLXAccessibleComboBox::IsValid (void) const
+{
+ return static_cast<ComboBox*>(GetWindow()) != NULL;
+
+}
+
+
+
+
+void VCLXAccessibleComboBox::ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent)
+{
+ VCLXAccessibleBox::ProcessWindowEvent( rVclWindowEvent );
+}
+
+
+
+
+//===== XServiceInfo ========================================================
+
+::rtl::OUString VCLXAccessibleComboBox::getImplementationName (void)
+ throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii ("com.sun.star.comp.toolkit.AccessibleComboBox");
+}
+
+
+
+
+Sequence< ::rtl::OUString > VCLXAccessibleComboBox::getSupportedServiceNames (void)
+ throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames = VCLXAccessibleBox::getSupportedServiceNames();
+ sal_Int32 nLength = aNames.getLength();
+ aNames.realloc( nLength + 1 );
+ aNames[nLength] = ::rtl::OUString::createFromAscii(
+ "com.sun.star.accessibility.AccessibleComboBox" );
+ return aNames;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibledropdowncombobox.cxx b/accessibility/source/standard/vclxaccessibledropdowncombobox.cxx
new file mode 100644
index 000000000000..370bf2fe70ea
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibledropdowncombobox.cxx
@@ -0,0 +1,145 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessibledropdowncombobox.hxx>
+#include <accessibility/standard/vclxaccessiblecombobox.hxx>
+#include <accessibility/standard/vclxaccessibletextfield.hxx>
+#include <accessibility/standard/vclxaccessiblelist.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/unohelp.hxx>
+
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <comphelper/sequence.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::accessibility;
+
+
+VCLXAccessibleDropDownComboBox::VCLXAccessibleDropDownComboBox (VCLXWindow* pVCLWindow)
+ : VCLXAccessibleBox (pVCLWindow, VCLXAccessibleBox::COMBOBOX, true)
+{
+}
+
+
+
+
+VCLXAccessibleDropDownComboBox::~VCLXAccessibleDropDownComboBox (void)
+{
+}
+
+
+
+bool VCLXAccessibleDropDownComboBox::IsValid (void) const
+{
+ return static_cast<ComboBox*>(GetWindow()) != NULL;
+
+}
+
+
+
+
+void VCLXAccessibleDropDownComboBox::ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent)
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_DROPDOWN_OPEN:
+ case VCLEVENT_DROPDOWN_CLOSE:
+ {
+ /* // child count changed
+ Any aOldValue, aNewValue;
+ // get the listbox child
+ Reference< XAccessible > xChild;
+ if ( !xChild.is() )
+ {
+ try
+ {
+ // the listbox is the second child
+ xChild = getAccessibleChild(1);
+ }
+ catch ( IndexOutOfBoundsException& ) {}
+ catch ( RuntimeException& ) {}
+ }
+ if ( rVclWindowEvent.GetId() == VCLEVENT_DROPDOWN_OPEN )
+ aNewValue <<= xChild;
+ else
+ aOldValue <<= xChild;
+ NotifyAccessibleEvent(
+ AccessibleEventId::CHILD, aOldValue, aNewValue
+ );
+ */
+ break;
+ }
+
+ default:
+ VCLXAccessibleBox::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+
+
+
+//===== XServiceInfo ========================================================
+
+::rtl::OUString VCLXAccessibleDropDownComboBox::getImplementationName()
+ throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii("com.sun.star.comp.toolkit.AccessibleDropDownComboBox");
+}
+
+
+
+
+Sequence< ::rtl::OUString > VCLXAccessibleDropDownComboBox::getSupportedServiceNames (void)
+ throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames = VCLXAccessibleBox::getSupportedServiceNames();
+ sal_Int32 nLength = aNames.getLength();
+ aNames.realloc( nLength + 1 );
+ aNames[nLength] = ::rtl::OUString::createFromAscii(
+ "com.sun.star.accessibility.AccessibleDropDownComboBox" );
+ return aNames;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibledropdownlistbox.cxx b/accessibility/source/standard/vclxaccessibledropdownlistbox.cxx
new file mode 100644
index 000000000000..340567eb967a
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibledropdownlistbox.cxx
@@ -0,0 +1,113 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+#include <accessibility/standard/vclxaccessibledropdownlistbox.hxx>
+#include <accessibility/standard/vclxaccessiblelistbox.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/unohelp.hxx>
+
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <comphelper/sequence.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::accessibility;
+
+
+VCLXAccessibleDropDownListBox::VCLXAccessibleDropDownListBox (VCLXWindow* pVCLWindow)
+ : VCLXAccessibleBox (pVCLWindow, VCLXAccessibleBox::LISTBOX, true)
+{
+}
+
+
+
+
+VCLXAccessibleDropDownListBox::~VCLXAccessibleDropDownListBox()
+{
+}
+
+
+
+
+bool VCLXAccessibleDropDownListBox::IsValid (void) const
+{
+ return static_cast<ListBox*>(GetWindow()) != NULL;
+
+}
+
+
+
+
+void VCLXAccessibleDropDownListBox::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ VCLXAccessibleBox::ProcessWindowEvent (rVclWindowEvent);
+}
+
+
+
+
+//===== XServiceInfo ========================================================
+
+::rtl::OUString VCLXAccessibleDropDownListBox::getImplementationName()
+ throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii("com.sun.star.comp.toolkit.AccessibleDropDownListBox");
+}
+
+
+
+
+Sequence< ::rtl::OUString > VCLXAccessibleDropDownListBox::getSupportedServiceNames (void)
+ throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames = VCLXAccessibleBox::getSupportedServiceNames();
+ sal_Int32 nLength = aNames.getLength();
+ aNames.realloc( nLength + 1 );
+ aNames[nLength] = ::rtl::OUString::createFromAscii(
+ "com.sun.star.accessibility.AccessibleDropDownListBox" );
+ return aNames;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibleedit.cxx b/accessibility/source/standard/vclxaccessibleedit.cxx
new file mode 100644
index 000000000000..e522ce081435
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibleedit.cxx
@@ -0,0 +1,629 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessibleedit.hxx>
+
+#include <toolkit/awt/vclxwindows.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <vcl/edit.hxx>
+#include <sot/exchange.hxx>
+#include <sot/formats.hxx>
+
+#include <algorithm>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleEdit
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleEdit::VCLXAccessibleEdit( VCLXWindow* pVCLWindow )
+ :VCLXAccessibleTextComponent( pVCLWindow )
+{
+ m_nSelectionStart = getSelectionStart();
+ m_nCaretPosition = getCaretPosition();
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleEdit::~VCLXAccessibleEdit()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleEdit::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_EDIT_MODIFY:
+ {
+ SetText( implGetText() );
+ }
+ break;
+ case VCLEVENT_EDIT_SELECTIONCHANGED:
+ {
+ sal_Int32 nOldCaretPosition = m_nCaretPosition;
+ sal_Int32 nOldSelectionStart = m_nSelectionStart;
+
+ m_nCaretPosition = getCaretPosition();
+ m_nSelectionStart = getSelectionStart();
+
+ Window* pWindow = GetWindow();
+ if ( pWindow && pWindow->HasChildPathFocus() )
+ {
+ if ( m_nCaretPosition != nOldCaretPosition )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= (sal_Int32) nOldCaretPosition;
+ aNewValue <<= (sal_Int32) m_nCaretPosition;
+ NotifyAccessibleEvent( AccessibleEventId::CARET_CHANGED, aOldValue, aNewValue );
+ }
+
+ // #i104470# VCL only has SELECTION_CHANGED, but UAA distinguishes between SELECTION_CHANGED and CARET_CHANGED
+ sal_Bool bHasSelection = ( m_nSelectionStart != m_nCaretPosition );
+ sal_Bool bHadSelection = ( nOldSelectionStart != nOldCaretPosition );
+ if ( ( bHasSelection != bHadSelection ) || ( bHasSelection && ( ( m_nCaretPosition != nOldCaretPosition ) || ( m_nSelectionStart != nOldSelectionStart ) ) ) )
+ {
+ NotifyAccessibleEvent( AccessibleEventId::TEXT_SELECTION_CHANGED, Any(), Any() );
+ }
+
+ }
+ }
+ break;
+ default:
+ VCLXAccessibleTextComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleEdit::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleTextComponent::FillAccessibleStateSet( rStateSet );
+
+ VCLXEdit* pVCLXEdit = static_cast< VCLXEdit* >( GetVCLXWindow() );
+ if ( pVCLXEdit )
+ {
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ rStateSet.AddState( AccessibleStateType::SINGLE_LINE );
+ if ( pVCLXEdit->isEditable() )
+ rStateSet.AddState( AccessibleStateType::EDITABLE );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleText
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleEdit::implGetText()
+{
+ ::rtl::OUString aText;
+
+ Edit* pEdit = static_cast< Edit* >( GetWindow() );
+ if ( pEdit )
+ {
+ aText = OutputDevice::GetNonMnemonicString( pEdit->GetText() );
+
+ if ( getAccessibleRole() == AccessibleRole::PASSWORD_TEXT )
+ {
+ xub_Unicode cEchoChar = pEdit->GetEchoChar();
+ if ( !cEchoChar )
+ cEchoChar = '*';
+ XubString sTmp;
+ aText = sTmp.Fill( (USHORT)aText.getLength(), cEchoChar );
+ }
+ }
+
+ return aText;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleEdit::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+{
+ awt::Selection aSelection;
+ VCLXEdit* pVCLXEdit = static_cast< VCLXEdit* >( GetVCLXWindow() );
+ if ( pVCLXEdit )
+ aSelection = pVCLXEdit->getSelection();
+
+ nStartIndex = aSelection.Min;
+ nEndIndex = aSelection.Max;
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleEdit, VCLXAccessibleTextComponent, VCLXAccessibleEdit_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleEdit, VCLXAccessibleTextComponent, VCLXAccessibleEdit_BASE )
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleEdit::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleEdit" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleEdit::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleEdit" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleEdit::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleEdit::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessible >();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleEdit::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int16 nRole;
+ Edit* pEdit = static_cast< Edit* >( GetWindow() );
+ if ( pEdit && ( ( pEdit->GetStyle() & WB_PASSWORD ) || pEdit->GetEchoChar() ) )
+ nRole = AccessibleRole::PASSWORD_TEXT;
+ else
+ nRole = AccessibleRole::TEXT;
+
+ return nRole;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleAction
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleEdit::getAccessibleActionCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ // There is one action: activate
+ return 1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ sal_Bool bDoAction = sal_False;
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ pWindow->GrabFocus();
+ bDoAction = sal_True;
+ }
+
+ return bDoAction;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleEdit::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ static const ::rtl::OUString sAction( RTL_CONSTASCII_USTRINGPARAM( "activate" ) );
+ return sAction;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleKeyBinding > VCLXAccessibleEdit::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessibleKeyBinding >();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleText
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleEdit::getCaretPosition( ) throw (RuntimeException)
+{
+ return getSelectionEnd();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ return setSelection( nIndex, nIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Unicode VCLXAccessibleEdit::getCharacter( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getCharacter( nIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< PropertyValue > VCLXAccessibleEdit::getCharacterAttributes( sal_Int32 nIndex, const Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getCharacterAttributes( nIndex, aRequestedAttributes );
+}
+
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleEdit::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ sal_Int32 nLength = implGetText().getLength();
+
+ if ( !implIsValidRange( nIndex, nIndex, nLength ) )
+ throw IndexOutOfBoundsException();
+
+ Control* pControl = static_cast< Control* >( GetWindow() );
+ if ( pControl )
+ {
+ if ( nIndex == nLength )
+ {
+ // #108914# calculate virtual bounding rectangle
+ for ( sal_Int32 i = 0; i < nLength; ++i )
+ {
+ Rectangle aRect = pControl->GetCharacterBounds( i );
+ sal_Int32 nHeight = aRect.GetHeight();
+ if ( aBounds.Height < nHeight )
+ {
+ aBounds.Y = aRect.Top();
+ aBounds.Height = nHeight;
+ }
+ if ( i == nLength - 1 )
+ {
+ aBounds.X = aRect.Right() + 1;
+ aBounds.Width = 1;
+ }
+ }
+ }
+ else
+ {
+ aBounds = AWTRectangle( pControl->GetCharacterBounds( nIndex ) );
+ }
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleEdit::getCharacterCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getCharacterCount();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleEdit::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getIndexAtPoint( aPoint );
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleEdit::getSelectedText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getSelectedText();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleEdit::getSelectionStart( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getSelectionStart();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleEdit::getSelectionEnd( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getSelectionEnd();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ VCLXEdit* pVCLXEdit = static_cast< VCLXEdit* >( GetVCLXWindow() );
+ Edit* pEdit = static_cast< Edit* >( GetWindow() );
+ if ( pVCLXEdit && pEdit && pEdit->IsEnabled() )
+ {
+ pVCLXEdit->setSelection( awt::Selection( nStartIndex, nEndIndex ) );
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleEdit::getText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getText();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleEdit::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getTextRange( nStartIndex, nEndIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleEdit::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getTextAtIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleEdit::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getTextBeforeIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleEdit::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::getTextBehindIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return VCLXAccessibleTextComponent::copyText( nStartIndex, nEndIndex );
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleEditableText
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::cutText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return copyText( nStartIndex, nEndIndex ) && deleteText( nStartIndex, nEndIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::pasteText( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ if ( GetWindow() )
+ {
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ Reference< datatransfer::XTransferable > xDataObj = xClipboard->getContents();
+ Application::AcquireSolarMutex( nRef );
+ if ( xDataObj.is() )
+ {
+ datatransfer::DataFlavor aFlavor;
+ SotExchange::GetFormatDataFlavor( SOT_FORMAT_STRING, aFlavor );
+ if ( xDataObj->isDataFlavorSupported( aFlavor ) )
+ {
+ Any aData = xDataObj->getTransferData( aFlavor );
+ ::rtl::OUString sText;
+ aData >>= sText;
+ bReturn = replaceText( nIndex, nIndex, sText );
+ }
+ }
+ }
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::deleteText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return replaceText( nStartIndex, nEndIndex, ::rtl::OUString() );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::insertText( const ::rtl::OUString& sText, sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return replaceText( nIndex, nIndex, sText );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::replaceText( sal_Int32 nStartIndex, sal_Int32 nEndIndex, const ::rtl::OUString& sReplacement ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ sal_Int32 nMinIndex = ::std::min( nStartIndex, nEndIndex );
+ sal_Int32 nMaxIndex = ::std::max( nStartIndex, nEndIndex );
+
+ VCLXEdit* pVCLXEdit = static_cast< VCLXEdit* >( GetVCLXWindow() );
+ if ( pVCLXEdit && pVCLXEdit->isEditable() )
+ {
+ pVCLXEdit->setText( sText.replaceAt( nMinIndex, nMaxIndex - nMinIndex, sReplacement ) );
+ sal_Int32 nIndex = nMinIndex + sReplacement.getLength();
+ setSelection( nIndex, nIndex );
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::setAttributes( sal_Int32 nStartIndex, sal_Int32 nEndIndex, const Sequence<PropertyValue>& ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False; // attributes cannot be set for an edit
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleEdit::setText( const ::rtl::OUString& sText ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bSuccess = sal_False;
+ try
+ {
+ bSuccess = replaceText( 0, implGetText().getLength(), sText );
+ }
+ catch( const IndexOutOfBoundsException& )
+ {
+ OSL_ENSURE( sal_False, "VCLXAccessibleText::setText: caught an exception!" );
+ }
+ return bSuccess;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblefixedhyperlink.cxx b/accessibility/source/standard/vclxaccessiblefixedhyperlink.cxx
new file mode 100644
index 000000000000..d23d92065807
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblefixedhyperlink.cxx
@@ -0,0 +1,87 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessiblefixedhyperlink.hxx>
+
+using namespace ::com::sun::star;
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleFixedHyperlink
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleFixedHyperlink::VCLXAccessibleFixedHyperlink( VCLXWindow* pVCLWindow )
+ :VCLXAccessibleTextComponent( pVCLWindow )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleFixedHyperlink::~VCLXAccessibleFixedHyperlink()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleFixedHyperlink::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleTextComponent::FillAccessibleStateSet( rStateSet );
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleFixedHyperlink::implGetLineBoundary( i18n::Boundary& rBoundary, sal_Int32 nIndex )
+{
+ // TODO
+ OCommonAccessibleText::implGetLineBoundary( rBoundary, nIndex );
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleFixedHyperlink::getImplementationName() throw (uno::RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleFixedHyperlink" );
+}
+
+// -----------------------------------------------------------------------------
+
+uno::Sequence< ::rtl::OUString > VCLXAccessibleFixedHyperlink::getSupportedServiceNames() throw (uno::RuntimeException)
+{
+ uno::Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleFixedHyperlink" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblefixedtext.cxx b/accessibility/source/standard/vclxaccessiblefixedtext.cxx
new file mode 100644
index 000000000000..6077efa65e87
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblefixedtext.cxx
@@ -0,0 +1,99 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessiblefixedtext.hxx>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <vcl/fixed.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleFixedText
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleFixedText::VCLXAccessibleFixedText( VCLXWindow* pVCLWindow )
+ :VCLXAccessibleTextComponent( pVCLWindow )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleFixedText::~VCLXAccessibleFixedText()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleFixedText::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleTextComponent::FillAccessibleStateSet( rStateSet );
+
+ if ( GetWindow() && GetWindow()->GetStyle() & WB_WORDBREAK )
+ rStateSet.AddState( AccessibleStateType::MULTI_LINE );
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleFixedText::implGetLineBoundary( i18n::Boundary& rBoundary, sal_Int32 nIndex )
+{
+ // TODO
+ OCommonAccessibleText::implGetLineBoundary( rBoundary, nIndex );
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleFixedText::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleFixedText" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleFixedText::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleFixedText" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblelist.cxx b/accessibility/source/standard/vclxaccessiblelist.cxx
new file mode 100644
index 000000000000..accce8440c7e
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblelist.cxx
@@ -0,0 +1,851 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblelist.hxx>
+#include <accessibility/standard/vclxaccessiblelistitem.hxx>
+#include <accessibility/helper/listboxhelper.hxx>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <vcl/svapp.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/lstbox.hxx>
+#include <toolkit/helper/convert.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::accessibility;
+
+namespace
+{
+ void checkSelection_Impl( sal_Int32 _nIndex, const IComboListBoxHelper& _rListBox, sal_Bool bSelected )
+ throw (::com::sun::star::lang::IndexOutOfBoundsException)
+ {
+ sal_Int32 nCount = bSelected ? (sal_Int32)_rListBox.GetSelectEntryCount()
+ : (sal_Int32)_rListBox.GetEntryCount();
+ if ( _nIndex < 0 || _nIndex >= nCount )
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+}
+
+VCLXAccessibleList::VCLXAccessibleList (VCLXWindow* pVCLWindow, BoxType aBoxType,
+ const Reference< XAccessible >& _xParent)
+ : VCLXAccessibleComponent (pVCLWindow),
+ m_aBoxType (aBoxType),
+ m_nVisibleLineCount (0),
+ m_nIndexInParent (DEFAULT_INDEX_IN_PARENT),
+ m_nLastTopEntry ( 0 ),
+ m_nLastSelectedPos ( LISTBOX_ENTRY_NOTFOUND ),
+ m_bDisableProcessEvent ( false ),
+ m_bVisible ( true ),
+ m_xParent ( _xParent )
+{
+ // Because combo boxes and list boxes don't have a common interface for
+ // methods with identical signature we have to write down twice the
+ // same code.
+ switch (m_aBoxType)
+ {
+ case COMBOBOX:
+ {
+ ComboBox* pBox = static_cast<ComboBox*>(GetWindow());
+ if ( pBox != NULL )
+ m_pListBoxHelper = new VCLListBoxHelper<ComboBox> (*pBox);
+ break;
+ }
+
+ case LISTBOX:
+ {
+ ListBox* pBox = static_cast<ListBox*>(GetWindow());
+ if ( pBox != NULL )
+ m_pListBoxHelper = new VCLListBoxHelper<ListBox> (*pBox);
+ break;
+ }
+ }
+ UpdateVisibleLineCount();
+
+ USHORT nCount = static_cast<USHORT>(getAccessibleChildCount());
+ m_aAccessibleChildren.reserve(nCount);
+}
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleList::~VCLXAccessibleList (void)
+{
+ delete m_pListBoxHelper;
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleList::SetIndexInParent (sal_Int32 nIndex)
+{
+ m_nIndexInParent = nIndex;
+}
+// -----------------------------------------------------------------------------
+
+void SAL_CALL VCLXAccessibleList::disposing (void)
+{
+ VCLXAccessibleComponent::disposing();
+
+ // Dispose all items in the list.
+ clearItems();
+
+ delete m_pListBoxHelper;
+ m_pListBoxHelper = NULL;
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleList::clearItems()
+{
+ // Clear the list itself and delete all the rest.
+ ListItems().swap(m_aAccessibleChildren); // clear and minimize
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleList::FillAccessibleStateSet (utl::AccessibleStateSetHelper& rStateSet)
+{
+ SolarMutexGuard aSolarGuard;
+
+ VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
+ // check if our list should be visible
+ if ( m_pListBoxHelper
+ && (m_pListBoxHelper->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN
+ && !m_pListBoxHelper->IsInDropDown() )
+ {
+ rStateSet.RemoveState (AccessibleStateType::VISIBLE);
+ rStateSet.RemoveState (AccessibleStateType::SHOWING);
+ m_bVisible = false;
+ }
+
+ // Both the combo box and list box are handled identical in the
+ // following but for some reason they don't have a common interface for
+ // the methods used.
+ if ( m_pListBoxHelper )
+ {
+ if ( m_pListBoxHelper->IsMultiSelectionEnabled() )
+ rStateSet.AddState( AccessibleStateType::MULTI_SELECTABLE);
+ rStateSet.AddState (AccessibleStateType::FOCUSABLE);
+ // All children are transient.
+ rStateSet.AddState (AccessibleStateType::MANAGES_DESCENDANTS);
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleList::notifyVisibleStates(sal_Bool _bSetNew )
+{
+ m_bVisible = _bSetNew ? true : false;
+ Any aOldValue, aNewValue;
+ (_bSetNew ? aNewValue : aOldValue ) <<= AccessibleStateType::VISIBLE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ (_bSetNew ? aNewValue : aOldValue ) <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+
+ ListItems::iterator aIter = m_aAccessibleChildren.begin();
+ ListItems::iterator aEnd = m_aAccessibleChildren.end();
+ UpdateVisibleLineCount();
+ // adjust the index inside the VCLXAccessibleListItem
+ for (;aIter != aEnd ; ++aIter)
+ {
+ Reference< XAccessible > xHold = *aIter;
+ VCLXAccessibleListItem* pItem = static_cast<VCLXAccessibleListItem*>(xHold.get());
+ if ( pItem )
+ {
+ USHORT nTopEntry = 0;
+ if ( m_pListBoxHelper )
+ nTopEntry = m_pListBoxHelper->GetTopEntry();
+ USHORT nPos = (USHORT)(aIter - m_aAccessibleChildren.begin());
+ sal_Bool bVisible = ( nPos>=nTopEntry && nPos<( nTopEntry + m_nVisibleLineCount ) );
+ pItem->SetVisible( m_bVisible && bVisible );
+ }
+
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleList::ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent)
+{
+ // Create a reference to this object to prevent an early release of the
+ // listbox (VCLEVENT_OBJECT_DYING).
+ Reference< XAccessible > xTemp = this;
+
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_DROPDOWN_OPEN:
+ notifyVisibleStates(sal_True);
+ break;
+ case VCLEVENT_DROPDOWN_CLOSE:
+ notifyVisibleStates(sal_False);
+ break;
+ case VCLEVENT_LISTBOX_SCROLLED:
+ case VCLEVENT_COMBOBOX_SCROLLED:
+ UpdateEntryRange_Impl();
+ break;
+
+ case VCLEVENT_LISTBOX_SELECT:
+ if ( !m_bDisableProcessEvent )
+ UpdateSelection_Impl();
+ break;
+ // The selection events VCLEVENT_COMBOBOX_SELECT and
+ // VCLEVENT_COMBOBOX_DESELECT are not handled here because here we
+ // have no access to the edit field. Its text is necessary to
+ // identify the currently selected item.
+
+ case VCLEVENT_OBJECT_DYING:
+ {
+ dispose();
+
+ VCLXAccessibleComponent::ProcessWindowEvent (rVclWindowEvent);
+ break;
+ }
+
+ case VCLEVENT_LISTBOX_ITEMREMOVED:
+ case VCLEVENT_COMBOBOX_ITEMREMOVED:
+ HandleChangedItemList (false, reinterpret_cast<sal_IntPtr>(
+ rVclWindowEvent.GetData()));
+ break;
+
+ case VCLEVENT_LISTBOX_ITEMADDED:
+ case VCLEVENT_COMBOBOX_ITEMADDED:
+ HandleChangedItemList (true, reinterpret_cast<sal_IntPtr>(
+ rVclWindowEvent.GetData()));
+ break;
+ case VCLEVENT_CONTROL_GETFOCUS:
+ VCLXAccessibleComponent::ProcessWindowEvent (rVclWindowEvent);
+ if ( m_pListBoxHelper )
+ {
+ uno::Any aOldValue,
+ aNewValue;
+ USHORT nPos = m_pListBoxHelper->GetSelectEntryPos();
+ if ( nPos == LISTBOX_ENTRY_NOTFOUND )
+ nPos = m_pListBoxHelper->GetTopEntry();
+ if ( nPos != LISTBOX_ENTRY_NOTFOUND )
+ aNewValue <<= CreateChild(nPos);
+
+ NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED,
+ aOldValue,
+ aNewValue );
+ }
+ break;
+
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent (rVclWindowEvent);
+ }
+}
+// -----------------------------------------------------------------------------
+
+/** To find out which item is currently selected and to update the SELECTED
+ state of the associated accessibility objects accordingly we exploit the
+ fact that the
+*/
+void VCLXAccessibleList::UpdateSelection (::rtl::OUString sTextOfSelectedItem)
+{
+ if ( m_aBoxType == COMBOBOX )
+ {
+ ComboBox* pBox = static_cast<ComboBox*>(GetWindow());
+ if ( pBox != NULL )
+ {
+ // Find the index of the selected item inside the VCL control...
+ USHORT nIndex = pBox->GetEntryPos (XubString(sTextOfSelectedItem));
+ // ...and then find the associated accessibility object.
+ if ( nIndex == LISTBOX_ENTRY_NOTFOUND )
+ nIndex = 0;
+ UpdateSelection_Impl(nIndex);
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleList::adjustEntriesIndexInParent(ListItems::iterator& _aBegin,::std::mem_fun_t<bool,VCLXAccessibleListItem>& _rMemFun)
+{
+ ListItems::iterator aIter = _aBegin;
+ ListItems::iterator aEnd = m_aAccessibleChildren.end();
+ // adjust the index inside the VCLXAccessibleListItem
+ for (;aIter != aEnd ; ++aIter)
+ {
+ Reference< XAccessible > xHold = *aIter;
+ VCLXAccessibleListItem* pItem = static_cast<VCLXAccessibleListItem*>(xHold.get());
+ if ( pItem )
+ _rMemFun(pItem);
+ }
+}
+// -----------------------------------------------------------------------------
+
+Reference<XAccessible> VCLXAccessibleList::CreateChild (sal_Int32 i)
+{
+ Reference<XAccessible> xChild;
+
+ USHORT nPos = static_cast<USHORT>(i);
+ if ( nPos >= m_aAccessibleChildren.size() )
+ {
+ m_aAccessibleChildren.resize(nPos + 1);
+
+ // insert into the container
+ xChild = new VCLXAccessibleListItem(m_pListBoxHelper, i, this);
+ m_aAccessibleChildren[nPos] = xChild;
+ }
+ else
+ {
+ xChild = m_aAccessibleChildren[nPos];
+ // check if position is empty and can be used else we have to adjust all entries behind this
+ if ( xChild.is() )
+ {
+ ListItems::iterator aIter = m_aAccessibleChildren.begin() + nPos;
+ ::std::mem_fun_t<bool, VCLXAccessibleListItem> aTemp(&VCLXAccessibleListItem::IncrementIndexInParent);
+ adjustEntriesIndexInParent( aIter, aTemp);
+ }
+ else
+ {
+ xChild = new VCLXAccessibleListItem(m_pListBoxHelper, i, this);
+ m_aAccessibleChildren[nPos] = xChild;
+ }
+ }
+
+ if ( xChild.is() )
+ {
+ // Just add the SELECTED state.
+ BOOL bNowSelected = FALSE;
+ if ( m_pListBoxHelper )
+ bNowSelected = m_pListBoxHelper->IsEntryPosSelected ((USHORT)i);
+ VCLXAccessibleListItem* pItem = static_cast< VCLXAccessibleListItem* >(xChild.get());
+ pItem->SetSelected( bNowSelected );
+
+ // Set the child's VISIBLE state.
+ UpdateVisibleLineCount();
+ USHORT nTopEntry = 0;
+ if ( m_pListBoxHelper )
+ nTopEntry = m_pListBoxHelper->GetTopEntry();
+ sal_Bool bVisible = ( nPos>=nTopEntry && nPos<( nTopEntry + m_nVisibleLineCount ) );
+ pItem->SetVisible( m_bVisible && bVisible );
+ }
+
+ return xChild;
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleList::HandleChangedItemList (bool bItemInserted, sal_Int32 nIndex)
+{
+ if ( !bItemInserted )
+ {
+ if ( nIndex == -1 ) // special handling here
+ {
+ clearItems();
+ }
+ else
+ {
+ if ( nIndex >= 0 && static_cast<USHORT>(nIndex) < m_aAccessibleChildren.size() )
+ {
+ ListItems::iterator aIter = m_aAccessibleChildren.erase(m_aAccessibleChildren.begin()+nIndex);
+ ::std::mem_fun_t<bool, VCLXAccessibleListItem> aTemp(&VCLXAccessibleListItem::DecrementIndexInParent);
+ adjustEntriesIndexInParent( aIter, aTemp );
+ }
+ }
+ }
+ else
+ getAccessibleChild(nIndex);
+
+ NotifyAccessibleEvent (
+ AccessibleEventId::INVALIDATE_ALL_CHILDREN,
+ Any(), Any());
+}
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2(VCLXAccessibleList, VCLXAccessibleComponent, VCLXAccessibleList_BASE)
+IMPLEMENT_FORWARD_XTYPEPROVIDER2(VCLXAccessibleList, VCLXAccessibleComponent, VCLXAccessibleList_BASE)
+
+//===== XAccessible =========================================================
+
+Reference<XAccessibleContext> SAL_CALL
+ VCLXAccessibleList::getAccessibleContext (void)
+ throw (RuntimeException)
+{
+ return this;
+}
+// -----------------------------------------------------------------------------
+
+//===== XAccessibleContext ==================================================
+
+sal_Int32 SAL_CALL VCLXAccessibleList::getAccessibleChildCount (void)
+ throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ sal_Int32 nCount = 0;
+ if ( m_pListBoxHelper )
+ nCount = m_pListBoxHelper->GetEntryCount();
+
+ return nCount;
+}
+// -----------------------------------------------------------------------------
+
+Reference<XAccessible> SAL_CALL VCLXAccessibleList::getAccessibleChild (sal_Int32 i)
+ throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ // search for the child
+ if ( static_cast<USHORT>(i) >= m_aAccessibleChildren.size() )
+ xChild = CreateChild (i);
+ else
+ {
+ xChild = m_aAccessibleChildren[i];
+ if ( !xChild.is() )
+ xChild = CreateChild (i);
+ }
+ OSL_ENSURE( xChild.is(), "VCLXAccessibleList::getAccessibleChild: returning empty child!" );
+ return xChild;
+}
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL VCLXAccessibleList::getAccessibleParent( )
+ throw (RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ return m_xParent;
+}
+// -----------------------------------------------------------------------------
+
+sal_Int32 SAL_CALL VCLXAccessibleList::getAccessibleIndexInParent (void)
+ throw (::com::sun::star::uno::RuntimeException)
+{
+ if (m_nIndexInParent != DEFAULT_INDEX_IN_PARENT)
+ return m_nIndexInParent;
+ else
+ return VCLXAccessibleComponent::getAccessibleIndexInParent();
+}
+// -----------------------------------------------------------------------------
+
+sal_Int16 SAL_CALL VCLXAccessibleList::getAccessibleRole (void)
+ throw (RuntimeException)
+{
+ return AccessibleRole::LIST;
+}
+// -----------------------------------------------------------------------------
+
+//===== XAccessibleComponent ================================================
+
+sal_Bool SAL_CALL VCLXAccessibleList::contains( const awt::Point& rPoint ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ sal_Bool bInside = sal_False;
+
+ Window* pListBox = GetWindow();
+ if ( pListBox )
+ {
+ Rectangle aRect( Point(0,0), pListBox->GetSizePixel() );
+ bInside = aRect.IsInside( VCLPoint( rPoint ) );
+ }
+
+ return bInside;
+}
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > SAL_CALL VCLXAccessibleList::getAccessibleAt( const awt::Point& rPoint )
+ throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ Reference< XAccessible > xChild;
+ if ( m_pListBoxHelper )
+ {
+ UpdateVisibleLineCount();
+ if ( contains( rPoint ) && m_nVisibleLineCount > 0 )
+ {
+ Point aPos = VCLPoint( rPoint );
+ USHORT nEndPos = m_pListBoxHelper->GetTopEntry() + (USHORT)m_nVisibleLineCount;
+ for ( USHORT i = m_pListBoxHelper->GetTopEntry(); i < nEndPos; ++i )
+ {
+ if ( m_pListBoxHelper->GetBoundingRectangle(i).IsInside( aPos ) )
+ {
+ xChild = getAccessibleChild(i);
+ break;
+ }
+ }
+ }
+ }
+
+ return xChild;
+}
+// -----------------------------------------------------------------------------
+
+//===== XServiceInfo ==========================================================
+
+::rtl::OUString VCLXAccessibleList::getImplementationName (void)
+ throw (RuntimeException)
+{
+ return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.toolkit.AccessibleList"));
+}
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleList::getSupportedServiceNames (void)
+ throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames = VCLXAccessibleComponent::getSupportedServiceNames();
+ sal_Int32 nLength = aNames.getLength();
+ aNames.realloc( nLength + 1 );
+ aNames[nLength] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleList"));
+ return aNames;
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleList::UpdateVisibleLineCount()
+{
+ if ( m_pListBoxHelper )
+ {
+ if ( (m_pListBoxHelper->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN )
+ m_nVisibleLineCount = m_pListBoxHelper->GetDisplayLineCount();
+ else
+ {
+ USHORT nCols = 0,
+ nLines = 0;
+ m_pListBoxHelper->GetMaxVisColumnsAndLines (nCols, nLines);
+ m_nVisibleLineCount = nLines;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+void VCLXAccessibleList::UpdateEntryRange_Impl()
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ sal_Int32 nTop = m_nLastTopEntry;
+
+ if ( m_pListBoxHelper )
+ nTop = m_pListBoxHelper->GetTopEntry();
+ if ( nTop != m_nLastTopEntry )
+ {
+ UpdateVisibleLineCount();
+ sal_Int32 nBegin = Min( m_nLastTopEntry, nTop );
+ sal_Int32 nEnd = Max( m_nLastTopEntry + m_nVisibleLineCount, nTop + m_nVisibleLineCount );
+ for (USHORT i = static_cast<USHORT>(nBegin); (i <= static_cast<USHORT>(nEnd)); ++i)
+ {
+ sal_Bool bVisible = ( i >= nTop && i < ( nTop + m_nVisibleLineCount ) );
+ Reference< XAccessible > xHold;
+ if ( i < m_aAccessibleChildren.size() )
+ xHold = m_aAccessibleChildren[i];
+ else if ( bVisible )
+ xHold = CreateChild(i);
+
+ if ( xHold.is() )
+ static_cast< VCLXAccessibleListItem* >( xHold.get() )->SetVisible( m_bVisible && bVisible );
+ }
+ }
+
+ m_nLastTopEntry = nTop;
+}
+// -----------------------------------------------------------------------------
+BOOL VCLXAccessibleList::checkEntrySelected(USHORT _nPos,Any& _rNewValue,Reference< XAccessible >& _rxNewAcc)
+{
+ OSL_ENSURE(m_pListBoxHelper,"Helper is not valid!");
+ BOOL bNowSelected = FALSE;
+ if ( m_pListBoxHelper )
+ {
+ bNowSelected = m_pListBoxHelper->IsEntryPosSelected (_nPos);
+ if ( bNowSelected )
+ {
+ _rxNewAcc = CreateChild(_nPos);
+ _rNewValue <<= _rxNewAcc;
+ }
+ }
+ return bNowSelected;
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleList::UpdateSelection_Impl(USHORT)
+{
+ uno::Any aOldValue, aNewValue;
+
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+ Reference< XAccessible > xNewAcc;
+
+ if ( m_pListBoxHelper )
+ {
+ USHORT i=0;
+ for ( ListItems::iterator aIter = m_aAccessibleChildren.begin();
+ aIter != m_aAccessibleChildren.end(); ++aIter,++i)
+ {
+ Reference< XAccessible > xHold = *aIter;
+ if ( xHold.is() )
+ {
+ VCLXAccessibleListItem* pItem = static_cast< VCLXAccessibleListItem* >( xHold.get() );
+ // Retrieve the item's index from the list entry.
+ BOOL bNowSelected = m_pListBoxHelper->IsEntryPosSelected (i);
+
+ if ( bNowSelected && !pItem->IsSelected() )
+ {
+ xNewAcc = *aIter;
+ aNewValue <<= xNewAcc;
+ }
+ else if ( pItem->IsSelected() )
+ m_nLastSelectedPos = i;
+
+ pItem->SetSelected( bNowSelected );
+ }
+ else
+ { // it could happen that a child was not created before
+ checkEntrySelected(i,aNewValue,xNewAcc);
+ }
+ }
+ USHORT nCount = m_pListBoxHelper->GetEntryCount();
+ if ( i < nCount ) // here we have to check the if any other listbox entry is selected
+ {
+ for (; i < nCount && !checkEntrySelected(i,aNewValue,xNewAcc) ;++i )
+ ;
+ }
+ if ( xNewAcc.is() && GetWindow()->HasFocus() )
+ {
+ if ( m_nLastSelectedPos != LISTBOX_ENTRY_NOTFOUND )
+ aOldValue <<= getAccessibleChild( (sal_Int32)m_nLastSelectedPos );
+ aNewValue <<= xNewAcc;
+ }
+ }
+ }
+
+ if ( aNewValue.hasValue() || aOldValue.hasValue() )
+ NotifyAccessibleEvent(
+ AccessibleEventId::ACTIVE_DESCENDANT_CHANGED,
+ aOldValue,
+ aNewValue );
+
+ NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleSelection
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleList::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ sal_Bool bNotify = sal_False;
+
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if ( m_pListBoxHelper )
+ {
+ checkSelection_Impl(nChildIndex,*m_pListBoxHelper,sal_False);
+
+ m_pListBoxHelper->SelectEntryPos( (USHORT)nChildIndex, TRUE );
+ // call the select handler, don't handle events in this time
+ m_bDisableProcessEvent = true;
+ m_pListBoxHelper->Select();
+ m_bDisableProcessEvent = false;
+ bNotify = sal_True;
+ }
+ }
+
+ if ( bNotify )
+ UpdateSelection_Impl();
+}
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleList::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ sal_Bool bRet = sal_False;
+ if ( m_pListBoxHelper )
+ {
+ checkSelection_Impl(nChildIndex,*m_pListBoxHelper,sal_False);
+
+ bRet = m_pListBoxHelper->IsEntryPosSelected( (USHORT)nChildIndex );
+ }
+ return bRet;
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleList::clearAccessibleSelection( ) throw (RuntimeException)
+{
+ sal_Bool bNotify = sal_False;
+
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if ( m_pListBoxHelper )
+ {
+ m_pListBoxHelper->SetNoSelection();
+ bNotify = sal_True;
+ }
+ }
+
+ if ( bNotify )
+ UpdateSelection_Impl();
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleList::selectAllAccessibleChildren( ) throw (RuntimeException)
+{
+ sal_Bool bNotify = sal_False;
+
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if ( m_pListBoxHelper )
+ {
+ USHORT nCount = m_pListBoxHelper->GetEntryCount();
+ for ( USHORT i = 0; i < nCount; ++i )
+ m_pListBoxHelper->SelectEntryPos( i, TRUE );
+ // call the select handler, don't handle events in this time
+ m_bDisableProcessEvent = true;
+ m_pListBoxHelper->Select();
+ m_bDisableProcessEvent = false;
+ bNotify = sal_True;
+ }
+ }
+
+ if ( bNotify )
+ UpdateSelection_Impl();
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleList::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ sal_Int32 nCount = 0;
+ if ( m_pListBoxHelper )
+ nCount = m_pListBoxHelper->GetSelectEntryCount();
+ return nCount;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleList::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if ( m_pListBoxHelper )
+ {
+ checkSelection_Impl(nSelectedChildIndex,*m_pListBoxHelper,sal_True);
+ return getAccessibleChild( (sal_Int32)m_pListBoxHelper->GetSelectEntryPos( (USHORT)nSelectedChildIndex ) );
+ }
+
+ return NULL;
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleList::deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ sal_Bool bNotify = sal_False;
+
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ if ( m_pListBoxHelper )
+ {
+ checkSelection_Impl(nSelectedChildIndex,*m_pListBoxHelper,sal_False);
+
+ m_pListBoxHelper->SelectEntryPos( (USHORT)nSelectedChildIndex, FALSE );
+ // call the select handler, don't handle events in this time
+ m_bDisableProcessEvent = true;
+ m_pListBoxHelper->Select();
+ m_bDisableProcessEvent = false;
+ bNotify = sal_True;
+ }
+ }
+
+ if ( bNotify )
+ UpdateSelection_Impl();
+}
+// -----------------------------------------------------------------------------
+awt::Rectangle VCLXAccessibleList::implGetBounds() throw (uno::RuntimeException)
+{
+ awt::Rectangle aBounds ( 0, 0, 0, 0 );
+ if ( m_pListBoxHelper
+ && (m_pListBoxHelper->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN )
+ {
+ if ( m_pListBoxHelper->IsInDropDown() )
+ aBounds = AWTRectangle(m_pListBoxHelper->GetDropDownPosSizePixel());
+ }
+ else
+ {
+ // a list has the same bounds as his parent but starts at (0,0)
+ aBounds = VCLXAccessibleComponent::implGetBounds();
+ aBounds.X = 0;
+ aBounds.Y = 0;
+ if ( m_aBoxType == COMBOBOX )
+ {
+ ComboBox* pBox = static_cast<ComboBox*>(GetWindow());
+ if ( pBox )
+ {
+ Size aSize = pBox->GetSubEdit()->GetSizePixel();
+ aBounds.X += aSize.Height();
+ aBounds.Y += aSize.Width();
+ aBounds.Height -= aSize.Height();
+ aBounds.Width -= aSize.Width();
+ }
+ }
+ }
+ return aBounds;
+}
+// -----------------------------------------------------------------------------
+
+awt::Point VCLXAccessibleList::getLocationOnScreen( ) throw (uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ awt::Point aPos;
+ if ( m_pListBoxHelper
+ && (m_pListBoxHelper->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN )
+ {
+ if ( m_pListBoxHelper->IsInDropDown() )
+ aPos = AWTPoint(m_pListBoxHelper->GetDropDownPosSizePixel().TopLeft());
+ }
+ else
+ {
+ aPos = VCLXAccessibleComponent::getLocationOnScreen();
+ if ( m_aBoxType == COMBOBOX )
+ {
+ ComboBox* pBox = static_cast<ComboBox*>(GetWindow());
+ if ( pBox )
+ {
+ aPos.X += pBox->GetSubEdit()->GetSizePixel().Height();
+ aPos.Y += pBox->GetSubEdit()->GetSizePixel().Width();
+ }
+ }
+ }
+ return aPos;
+}
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblelistbox.cxx b/accessibility/source/standard/vclxaccessiblelistbox.cxx
new file mode 100644
index 000000000000..07aa685aac27
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblelistbox.cxx
@@ -0,0 +1,111 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblelistbox.hxx>
+#include <accessibility/standard/vclxaccessiblelistitem.hxx>
+#include <accessibility/helper/listboxhelper.hxx>
+
+#include <algorithm>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/unohelp.hxx>
+
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <comphelper/sequence.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::accessibility;
+
+VCLXAccessibleListBox::VCLXAccessibleListBox (VCLXWindow* pVCLWindow)
+ : VCLXAccessibleBox (pVCLWindow, VCLXAccessibleBox::LISTBOX, false)
+{
+}
+
+
+
+
+VCLXAccessibleListBox::~VCLXAccessibleListBox (void)
+{
+}
+
+
+
+
+bool VCLXAccessibleListBox::IsValid (void) const
+{
+ return static_cast<ListBox*>(GetWindow()) != NULL;
+
+}
+
+
+
+
+void VCLXAccessibleListBox::ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent)
+{
+ VCLXAccessibleBox::ProcessWindowEvent( rVclWindowEvent );
+}
+
+
+
+
+//===== XServiceInfo ========================================================
+
+::rtl::OUString VCLXAccessibleListBox::getImplementationName (void)
+ throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii("com.sun.star.comp.toolkit.AccessibleListBox");
+}
+
+
+
+
+Sequence< ::rtl::OUString > VCLXAccessibleListBox::getSupportedServiceNames (void)
+ throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames = VCLXAccessibleBox::getSupportedServiceNames();
+ sal_Int32 nLength = aNames.getLength();
+ aNames.realloc( nLength + 1 );
+ aNames[nLength] = ::rtl::OUString::createFromAscii(
+ "com.sun.star.accessibility.AccessibleListBox" );
+ return aNames;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblelistitem.cxx b/accessibility/source/standard/vclxaccessiblelistitem.cxx
new file mode 100644
index 000000000000..f84188ba8155
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblelistitem.cxx
@@ -0,0 +1,677 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblelistitem.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <accessibility/helper/listboxhelper.hxx>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/controllayout.hxx>
+#include <vcl/unohelp2.hxx>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/accessibleeventnotifier.hxx>
+
+namespace
+{
+ void checkIndex_Impl( sal_Int32 _nIndex, const ::rtl::OUString& _sText ) throw (::com::sun::star::lang::IndexOutOfBoundsException)
+ {
+ if ( _nIndex < 0 || _nIndex > _sText.getLength() )
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+}
+
+// class VCLXAccessibleListItem ------------------------------------------
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star;
+
+DBG_NAME(VCLXAccessibleListItem)
+
+// -----------------------------------------------------------------------------
+// Ctor() and Dtor()
+// -----------------------------------------------------------------------------
+VCLXAccessibleListItem::VCLXAccessibleListItem( ::accessibility::IComboListBoxHelper* _pListBoxHelper, sal_Int32 _nIndexInParent, const Reference< XAccessible >& _xParent ) :
+
+ VCLXAccessibleListItem_BASE ( m_aMutex ),
+
+ m_nIndexInParent( _nIndexInParent ),
+ m_bSelected ( sal_False ),
+ m_bVisible ( sal_False ),
+ m_nClientId ( 0 ),
+ m_pListBoxHelper( _pListBoxHelper ),
+ m_xParent ( _xParent )
+
+{
+ DBG_CTOR( VCLXAccessibleListItem, NULL );
+
+ if ( m_xParent.is() )
+ m_xParentContext = m_xParent->getAccessibleContext();
+
+ if ( m_pListBoxHelper )
+ m_sEntryText = m_pListBoxHelper->GetEntry( (USHORT)_nIndexInParent );
+}
+// -----------------------------------------------------------------------------
+VCLXAccessibleListItem::~VCLXAccessibleListItem()
+{
+ DBG_DTOR( VCLXAccessibleListItem, NULL );
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleListItem::SetSelected( sal_Bool _bSelected )
+{
+ if ( m_bSelected != _bSelected )
+ {
+ Any aOldValue;
+ Any aNewValue;
+ if ( m_bSelected )
+ aOldValue <<= AccessibleStateType::SELECTED;
+ else
+ aNewValue <<= AccessibleStateType::SELECTED;
+ m_bSelected = _bSelected;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleListItem::SetVisible( sal_Bool _bVisible )
+{
+ if ( m_bVisible != _bVisible )
+ {
+ Any aOldValue, aNewValue;
+ m_bVisible = _bVisible;
+ (_bVisible ? aNewValue : aOldValue ) <<= AccessibleStateType::VISIBLE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ (_bVisible ? aNewValue : aOldValue ) <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleListItem::NotifyAccessibleEvent( sal_Int16 _nEventId,
+ const ::com::sun::star::uno::Any& _aOldValue,
+ const ::com::sun::star::uno::Any& _aNewValue )
+{
+ AccessibleEventObject aEvt;
+ aEvt.Source = *this;
+ aEvt.EventId = _nEventId;
+ aEvt.OldValue = _aOldValue;
+ aEvt.NewValue = _aNewValue;
+
+ if (m_nClientId)
+ comphelper::AccessibleEventNotifier::addEvent( m_nClientId, aEvt );
+}
+// -----------------------------------------------------------------------------
+// OCommonAccessibleText
+// -----------------------------------------------------------------------------
+::rtl::OUString VCLXAccessibleListItem::implGetText()
+{
+ return m_sEntryText;
+}
+// -----------------------------------------------------------------------------
+Locale VCLXAccessibleListItem::implGetLocale()
+{
+ return Application::GetSettings().GetLocale();
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleListItem::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+{
+ nStartIndex = 0;
+ nEndIndex = 0;
+}
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+Any SAL_CALL VCLXAccessibleListItem::queryInterface( Type const & rType ) throw (RuntimeException)
+{
+ return VCLXAccessibleListItem_BASE::queryInterface( rType );
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleListItem::acquire() throw ()
+{
+ VCLXAccessibleListItem_BASE::acquire();
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleListItem::release() throw ()
+{
+ VCLXAccessibleListItem_BASE::release();
+}
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+Sequence< Type > SAL_CALL VCLXAccessibleListItem::getTypes( ) throw (RuntimeException)
+{
+ return VCLXAccessibleListItem_BASE::getTypes();
+}
+// -----------------------------------------------------------------------------
+Sequence< sal_Int8 > VCLXAccessibleListItem::getImplementationId() throw (RuntimeException)
+{
+ static ::cppu::OImplementationId* pId = NULL;
+
+ if ( !pId )
+ {
+ ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex );
+
+ if ( !pId )
+ {
+ static ::cppu::OImplementationId aId;
+ pId = &aId;
+ }
+ }
+ return pId->getImplementationId();
+}
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleListItem::disposing()
+{
+ comphelper::AccessibleEventNotifier::TClientId nId( 0 );
+ Reference< XInterface > xEventSource;
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ VCLXAccessibleListItem_BASE::disposing();
+ m_sEntryText = ::rtl::OUString();
+ m_pListBoxHelper = NULL;
+ m_xParent = NULL;
+ m_xParentContext = NULL;
+
+ nId = m_nClientId;
+ m_nClientId = 0;
+ if ( nId )
+ xEventSource = *this;
+ }
+
+ // Send a disposing to all listeners.
+ if ( nId )
+ comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nId, *this );
+}
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+::rtl::OUString VCLXAccessibleListItem::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleListItem" );
+}
+// -----------------------------------------------------------------------------
+sal_Bool VCLXAccessibleListItem::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+// -----------------------------------------------------------------------------
+Sequence< ::rtl::OUString > VCLXAccessibleListItem::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(3);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleContext" );
+ aNames[1] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleComponent" );
+ aNames[2] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleListItem" );
+ return aNames;
+}
+// -----------------------------------------------------------------------------
+// XAccessible
+// -----------------------------------------------------------------------------
+Reference< XAccessibleContext > SAL_CALL VCLXAccessibleListItem::getAccessibleContext( ) throw (RuntimeException)
+{
+ return this;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getAccessibleChildCount( ) throw (RuntimeException)
+{
+ return 0;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleChild( sal_Int32 ) throw (RuntimeException)
+{
+ return Reference< XAccessible >();
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleParent( ) throw (RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return m_xParent;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ return m_nIndexInParent;
+}
+// -----------------------------------------------------------------------------
+sal_Int16 SAL_CALL VCLXAccessibleListItem::getAccessibleRole( ) throw (RuntimeException)
+{
+ return AccessibleRole::LIST_ITEM;
+ // return AccessibleRole::LABEL;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleListItem::getAccessibleDescription( ) throw (RuntimeException)
+{
+ // no description for every item
+ return ::rtl::OUString();
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleListItem::getAccessibleName( ) throw (RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ // entry text == accessible name
+ return implGetText();
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessibleRelationSet > SAL_CALL VCLXAccessibleListItem::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessibleStateSet > SAL_CALL VCLXAccessibleListItem::getAccessibleStateSet( ) throw (RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xStateSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
+ pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
+ pStateSetHelper->AddState( AccessibleStateType::ENABLED );
+ pStateSetHelper->AddState( AccessibleStateType::SENSITIVE );
+ if ( m_bSelected )
+ pStateSetHelper->AddState( AccessibleStateType::SELECTED );
+ if ( m_bVisible )
+ {
+ pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+ }
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return xStateSet;
+}
+// -----------------------------------------------------------------------------
+Locale SAL_CALL VCLXAccessibleListItem::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return implGetLocale();
+}
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleListItem::containsPoint( const awt::Point& _aPoint ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Bool bInside = sal_False;
+ if ( m_pListBoxHelper )
+ {
+ Rectangle aRect( m_pListBoxHelper->GetBoundingRectangle( (USHORT)m_nIndexInParent ) );
+ aRect.Move(-aRect.TopLeft().X(),-aRect.TopLeft().Y());
+ bInside = aRect.IsInside( VCLPoint( _aPoint ) );
+ }
+ return bInside;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
+{
+ return Reference< XAccessible >();
+}
+// -----------------------------------------------------------------------------
+awt::Rectangle SAL_CALL VCLXAccessibleListItem::getBounds( ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ awt::Rectangle aRect;
+ if ( m_pListBoxHelper )
+ aRect = AWTRectangle( m_pListBoxHelper->GetBoundingRectangle( (USHORT)m_nIndexInParent ) );
+
+ return aRect;
+}
+// -----------------------------------------------------------------------------
+awt::Point SAL_CALL VCLXAccessibleListItem::getLocation( ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ Point aPoint(0,0);
+ if ( m_pListBoxHelper )
+ {
+ Rectangle aRect = m_pListBoxHelper->GetBoundingRectangle( (USHORT)m_nIndexInParent );
+ aPoint = aRect.TopLeft();
+ }
+ return AWTPoint( aPoint );
+}
+// -----------------------------------------------------------------------------
+awt::Point SAL_CALL VCLXAccessibleListItem::getLocationOnScreen( ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ Point aPoint(0,0);
+ if ( m_pListBoxHelper )
+ {
+ Rectangle aRect = m_pListBoxHelper->GetBoundingRectangle( (USHORT)m_nIndexInParent );
+ aPoint = aRect.TopLeft();
+ aPoint += m_pListBoxHelper->GetWindowExtentsRelative( NULL ).TopLeft();
+ }
+ return AWTPoint( aPoint );
+}
+// -----------------------------------------------------------------------------
+awt::Size SAL_CALL VCLXAccessibleListItem::getSize( ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ Size aSize;
+ if ( m_pListBoxHelper )
+ aSize = m_pListBoxHelper->GetBoundingRectangle( (USHORT)m_nIndexInParent ).GetSize();
+
+ return AWTSize( aSize );
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleListItem::grabFocus( ) throw (RuntimeException)
+{
+ // no focus for each item
+}
+// -----------------------------------------------------------------------------
+// XAccessibleText
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getCaretPosition() throw (RuntimeException)
+{
+ return -1;
+}
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleListItem::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+// -----------------------------------------------------------------------------
+sal_Unicode SAL_CALL VCLXAccessibleListItem::getCharacter( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getCharacter( nIndex );
+}
+// -----------------------------------------------------------------------------
+Sequence< PropertyValue > SAL_CALL VCLXAccessibleListItem::getCharacterAttributes( sal_Int32 nIndex, const Sequence< ::rtl::OUString >& ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ ::rtl::OUString sText( implGetText() );
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return Sequence< PropertyValue >();
+}
+// -----------------------------------------------------------------------------
+awt::Rectangle SAL_CALL VCLXAccessibleListItem::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ ::rtl::OUString sText( implGetText() );
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( m_pListBoxHelper )
+ {
+ Rectangle aCharRect = m_pListBoxHelper->GetEntryCharacterBounds( m_nIndexInParent, nIndex );
+ Rectangle aItemRect = m_pListBoxHelper->GetBoundingRectangle( (USHORT)m_nIndexInParent );
+ aCharRect.Move( -aItemRect.Left(), -aItemRect.Top() );
+ aBounds = AWTRectangle( aCharRect );
+ }
+
+ return aBounds;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getCharacterCount() throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getCharacterCount();
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nIndex = -1;
+ if ( m_pListBoxHelper )
+ {
+ USHORT nPos = LISTBOX_ENTRY_NOTFOUND;
+ Rectangle aItemRect = m_pListBoxHelper->GetBoundingRectangle( (USHORT)m_nIndexInParent );
+ Point aPnt( VCLPoint( aPoint ) );
+ aPnt += aItemRect.TopLeft();
+ sal_Int32 nI = m_pListBoxHelper->GetIndexForPoint( aPnt, nPos );
+ if ( nI != -1 && (USHORT)m_nIndexInParent == nPos )
+ nIndex = nI;
+ }
+ return nIndex;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleListItem::getSelectedText() throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getSelectedText();
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getSelectionStart() throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getSelectionStart();
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getSelectionEnd() throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getSelectionEnd();
+}
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleListItem::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleListItem::getText() throw (RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getText();
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleListItem::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex );
+}
+// -----------------------------------------------------------------------------
+::com::sun::star::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getTextAtIndex( nIndex, aTextType );
+}
+// -----------------------------------------------------------------------------
+::com::sun::star::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getTextBeforeIndex( nIndex, aTextType );
+}
+// -----------------------------------------------------------------------------
+::com::sun::star::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ return OCommonAccessibleText::getTextBehindIndex( nIndex, aTextType );
+}
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleListItem::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ checkIndex_Impl( nStartIndex, m_sEntryText );
+ checkIndex_Impl( nEndIndex, m_sEntryText );
+
+ sal_Bool bRet = sal_False;
+ if ( m_pListBoxHelper )
+ {
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = m_pListBoxHelper->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ ::rtl::OUString sText( getTextRange( nStartIndex, nEndIndex ) );
+ ::vcl::unohelper::TextDataObject* pDataObj = new ::vcl::unohelper::TextDataObject( sText );
+
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ xClipboard->setContents( pDataObj, NULL );
+ Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( xClipboard, uno::UNO_QUERY );
+ if( xFlushableClipboard.is() )
+ xFlushableClipboard->flushClipboard();
+ Application::AcquireSolarMutex( nRef );
+
+ bRet = sal_True;
+ }
+ }
+
+ return bRet;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleEventBroadcaster
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleListItem::addEventListener( const Reference< XAccessibleEventListener >& xListener ) throw (RuntimeException)
+{
+ if (xListener.is())
+ {
+ if (!m_nClientId)
+ m_nClientId = comphelper::AccessibleEventNotifier::registerClient( );
+ comphelper::AccessibleEventNotifier::addEventListener( m_nClientId, xListener );
+ }
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleListItem::removeEventListener( const Reference< XAccessibleEventListener >& xListener ) throw (RuntimeException)
+{
+ if ( xListener.is() && m_nClientId )
+ {
+ sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, xListener );
+ if ( !nListenerCount )
+ {
+ // no listeners anymore
+ // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+ // and at least to us not firing any events anymore, in case somebody calls
+ // NotifyAccessibleEvent, again
+ if ( m_nClientId )
+ {
+ comphelper::AccessibleEventNotifier::TClientId nId( m_nClientId );
+ m_nClientId = 0;
+ comphelper::AccessibleEventNotifier::revokeClient( nId );
+ }
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+
+
+
+// AF (Oct. 29 2002): Return black as constant foreground color. This is an
+// initial implementation and has to be substituted by code that determines
+// the color that is actually used.
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getForeground (void)
+ throw (::com::sun::star::uno::RuntimeException)
+{
+ return COL_BLACK;
+}
+
+// AF (Oct. 29 2002): Return white as constant background color. This is an
+// initial implementation and has to be substituted by code that determines
+// the color that is actually used.
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getBackground (void)
+ throw (::com::sun::star::uno::RuntimeException)
+{
+ return COL_WHITE;
+}
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblemenu.cxx b/accessibility/source/standard/vclxaccessiblemenu.cxx
new file mode 100644
index 000000000000..2d66d98c9563
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblemenu.cxx
@@ -0,0 +1,258 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessiblemenu.hxx>
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <vcl/menu.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleMenu
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenu::VCLXAccessibleMenu( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu )
+ :VCLXAccessibleMenuItem( pParent, nItemPos, pMenu )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenu::~VCLXAccessibleMenu()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenu::IsFocused()
+{
+ sal_Bool bFocused = sal_False;
+
+ if ( IsHighlighted() && !IsChildHighlighted() )
+ bFocused = sal_True;
+
+ return bFocused;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenu::IsPopupMenuOpen()
+{
+ sal_Bool bPopupMenuOpen = sal_False;
+
+ if ( m_pParent )
+ {
+ PopupMenu* pPopupMenu = m_pParent->GetPopupMenu( m_pParent->GetItemId( m_nItemPos ) );
+ if ( pPopupMenu && pPopupMenu->IsMenuVisible() )
+ bPopupMenuOpen = sal_True;
+ }
+
+ return bPopupMenuOpen;
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleMenu, VCLXAccessibleMenuItem, VCLXAccessibleMenu_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleMenu, VCLXAccessibleMenuItem, VCLXAccessibleMenu_BASE )
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenu::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleMenu" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleMenu::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleMenu" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenu::getAccessibleChildCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetChildCount();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleMenu::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return GetChild( i );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleMenu::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::MENU;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleMenu::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetChildAt( rPoint );
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleSelection
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenu::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ SelectChild( nChildIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenu::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return IsChildSelected( nChildIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenu::clearAccessibleSelection( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ DeSelectAll();
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenu::selectAllAccessibleChildren( ) throw (RuntimeException)
+{
+ // This method makes no sense in a menu, and so does nothing.
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenu::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nRet = 0;
+
+ for ( sal_Int32 i = 0, nCount = GetChildCount(); i < nCount; i++ )
+ {
+ if ( IsChildSelected( i ) )
+ ++nRet;
+ }
+
+ return nRet;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleMenu::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+
+ for ( sal_Int32 i = 0, j = 0, nCount = GetChildCount(); i < nCount; i++ )
+ {
+ if ( IsChildSelected( i ) && ( j++ == nSelectedChildIndex ) )
+ {
+ xChild = GetChild( i );
+ break;
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenu::deselectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= GetChildCount() )
+ throw IndexOutOfBoundsException();
+
+ DeSelectAll();
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblemenubar.cxx b/accessibility/source/standard/vclxaccessiblemenubar.cxx
new file mode 100644
index 000000000000..64eee8741f09
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblemenubar.cxx
@@ -0,0 +1,214 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblemenubar.hxx>
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <vcl/menu.hxx>
+
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class VCLXAccessibleMenuBar
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenuBar::VCLXAccessibleMenuBar( Menu* pMenu )
+ :OAccessibleMenuComponent( pMenu )
+{
+ if ( pMenu )
+ {
+ m_pWindow = pMenu->GetWindow();
+
+ if ( m_pWindow )
+ m_pWindow->AddEventListener( LINK( this, VCLXAccessibleMenuBar, WindowEventListener ) );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenuBar::~VCLXAccessibleMenuBar()
+{
+ if ( m_pWindow )
+ m_pWindow->RemoveEventListener( LINK( this, VCLXAccessibleMenuBar, WindowEventListener ) );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuBar::IsFocused()
+{
+ sal_Bool bFocused = sal_False;
+
+ if ( m_pWindow && m_pWindow->HasFocus() && !IsChildHighlighted() )
+ bFocused = sal_True;
+
+ return bFocused;
+}
+
+// -----------------------------------------------------------------------------
+
+IMPL_LINK( VCLXAccessibleMenuBar, WindowEventListener, VclSimpleEvent*, pEvent )
+{
+ DBG_ASSERT( pEvent && pEvent->ISA( VclWindowEvent ), "VCLXAccessibleMenuBar::WindowEventListener: unknown window event!" );
+ if ( pEvent && pEvent->ISA( VclWindowEvent ) )
+ {
+ DBG_ASSERT( ((VclWindowEvent*)pEvent)->GetWindow(), "VCLXAccessibleMenuBar::WindowEventListener: no window!" );
+ if ( !((VclWindowEvent*)pEvent)->GetWindow()->IsAccessibilityEventsSuppressed() || ( pEvent->GetId() == VCLEVENT_OBJECT_DYING ) )
+ {
+ ProcessWindowEvent( *(VclWindowEvent*)pEvent );
+ }
+ }
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenuBar::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_GETFOCUS:
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ {
+ SetFocused( rVclWindowEvent.GetId() == VCLEVENT_WINDOW_GETFOCUS );
+ }
+ break;
+ case VCLEVENT_OBJECT_DYING:
+ {
+ if ( m_pWindow )
+ {
+ m_pWindow->RemoveEventListener( LINK( this, VCLXAccessibleMenuBar, WindowEventListener ) );
+ m_pWindow = NULL;
+ }
+ }
+ break;
+ default:
+ {
+ }
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenuBar::disposing()
+{
+ OAccessibleMenuComponent::disposing();
+
+ if ( m_pWindow )
+ {
+ m_pWindow->RemoveEventListener( LINK( this, VCLXAccessibleMenuBar, WindowEventListener ) );
+ m_pWindow = NULL;
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuBar::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleMenuBar" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleMenuBar::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleMenuBar" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuBar::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndexInParent = -1;
+
+ if ( m_pMenu )
+ {
+ Window* pWindow = m_pMenu->GetWindow();
+ if ( pWindow )
+ {
+ Window* pParent = pWindow->GetAccessibleParentWindow();
+ if ( pParent )
+ {
+ for ( USHORT n = pParent->GetAccessibleChildWindowCount(); n; )
+ {
+ Window* pChild = pParent->GetAccessibleChildWindow( --n );
+ if ( pChild == pWindow )
+ {
+ nIndexInParent = n;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return nIndexInParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleMenuBar::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::MENU_BAR;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuBar::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetStyleSettings().GetMenuBarColor().GetColor();
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblemenuitem.cxx b/accessibility/source/standard/vclxaccessiblemenuitem.cxx
new file mode 100644
index 000000000000..a8b48a8baedc
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblemenuitem.cxx
@@ -0,0 +1,610 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblemenuitem.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+#include <toolkit/helper/convert.hxx>
+#include <accessibility/helper/characterattributeshelper.hxx>
+#include <comphelper/accessiblekeybindinghelper.hxx>
+#include <com/sun/star/awt/KeyModifier.hpp>
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <comphelper/sequence.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/unohelp2.hxx>
+
+#include <memory>
+
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class VCLXAccessibleMenuItem
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenuItem::VCLXAccessibleMenuItem( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu )
+ :OAccessibleMenuItemComponent( pParent, nItemPos, pMenu )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenuItem::~VCLXAccessibleMenuItem()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::IsFocused()
+{
+ return IsHighlighted();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::IsSelected()
+{
+ return IsHighlighted();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::IsChecked()
+{
+ sal_Bool bChecked = sal_False;
+
+ if ( m_pParent )
+ {
+ sal_uInt16 nItemId = m_pParent->GetItemId( m_nItemPos );
+ if ( m_pParent->IsItemChecked( nItemId ) )
+ bChecked = sal_True;
+ }
+
+ return bChecked;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::IsHighlighted()
+{
+ sal_Bool bHighlighted = sal_False;
+
+ if ( m_pParent && m_pParent->IsHighlighted( m_nItemPos ) )
+ bHighlighted = sal_True;
+
+ return bHighlighted;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenuItem::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ OAccessibleMenuItemComponent::FillAccessibleStateSet( rStateSet );
+
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( IsFocused() )
+ rStateSet.AddState( AccessibleStateType::FOCUSED );
+
+ rStateSet.AddState( AccessibleStateType::SELECTABLE );
+
+ if ( IsSelected() )
+ rStateSet.AddState( AccessibleStateType::SELECTED );
+
+ if ( IsChecked() )
+ rStateSet.AddState( AccessibleStateType::CHECKED );
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleText
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuItem::implGetText()
+{
+ return m_sItemText;
+}
+
+// -----------------------------------------------------------------------------
+
+Locale VCLXAccessibleMenuItem::implGetLocale()
+{
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleMenuItem::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+{
+ nStartIndex = 0;
+ nEndIndex = 0;
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleMenuItem, OAccessibleMenuItemComponent, VCLXAccessibleMenuItem_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleMenuItem, OAccessibleMenuItemComponent, VCLXAccessibleMenuItem_BASE )
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuItem::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleMenuItem" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleMenuItem::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleMenuItem" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleMenuItem::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::MENU_ITEM;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleText
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuItem::getCaretPosition() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return -1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Unicode VCLXAccessibleMenuItem::getCharacter( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getCharacter( nIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< PropertyValue > VCLXAccessibleMenuItem::getCharacterAttributes( sal_Int32 nIndex, const Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Sequence< PropertyValue > aValues;
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ Font aFont = Application::GetSettings().GetStyleSettings().GetMenuFont();
+ sal_Int32 nBackColor = getBackground();
+ sal_Int32 nColor = getForeground();
+ ::std::auto_ptr< CharacterAttributesHelper > pHelper( new CharacterAttributesHelper( aFont, nBackColor, nColor ) );
+ aValues = pHelper->GetCharacterAttributes( aRequestedAttributes );
+
+ return aValues;
+}
+
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleMenuItem::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidIndex( nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( m_pParent )
+ {
+ sal_uInt16 nItemId = m_pParent->GetItemId( m_nItemPos );
+ Rectangle aItemRect = m_pParent->GetBoundingRectangle( m_nItemPos );
+ Rectangle aCharRect = m_pParent->GetCharacterBounds( nItemId, nIndex );
+ aCharRect.Move( -aItemRect.Left(), -aItemRect.Top() );
+ aBounds = AWTRectangle( aCharRect );
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuItem::getCharacterCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getCharacterCount();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuItem::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndex = -1;
+ if ( m_pParent )
+ {
+ sal_uInt16 nItemId = 0;
+ Rectangle aItemRect = m_pParent->GetBoundingRectangle( m_nItemPos );
+ Point aPnt( VCLPoint( aPoint ) );
+ aPnt += aItemRect.TopLeft();
+ sal_Int32 nI = m_pParent->GetIndexForPoint( aPnt, nItemId );
+ if ( nI != -1 && m_pParent->GetItemId( m_nItemPos ) == nItemId )
+ nIndex = nI;
+ }
+
+ return nIndex;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuItem::getSelectedText() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getSelectedText();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuItem::getSelectionStart() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getSelectionStart();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuItem::getSelectionEnd() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getSelectionEnd();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuItem::getText() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getText();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuItem::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleMenuItem::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextAtIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleMenuItem::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextBeforeIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleMenuItem::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextBehindIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ if ( m_pParent )
+ {
+ Window* pWindow = m_pParent->GetWindow();
+ if ( pWindow )
+ {
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = pWindow->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ ::rtl::OUString sText( getTextRange( nStartIndex, nEndIndex ) );
+
+ ::vcl::unohelper::TextDataObject* pDataObj = new ::vcl::unohelper::TextDataObject( sText );
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ xClipboard->setContents( pDataObj, NULL );
+
+ Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( xClipboard, uno::UNO_QUERY );
+ if( xFlushableClipboard.is() )
+ xFlushableClipboard->flushClipboard();
+
+ Application::AcquireSolarMutex( nRef );
+
+ bReturn = sal_True;
+ }
+ }
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleAction
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleMenuItem::getAccessibleActionCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ Click();
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuItem::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleKeyBinding > VCLXAccessibleMenuItem::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ OAccessibleKeyBindingHelper* pKeyBindingHelper = new OAccessibleKeyBindingHelper();
+ Reference< XAccessibleKeyBinding > xKeyBinding = pKeyBindingHelper;
+
+ if ( m_pParent )
+ {
+ // create auto mnemonics
+ if ( Application::GetSettings().GetStyleSettings().GetAutoMnemonic() && !( m_pParent->GetMenuFlags() & MENU_FLAG_NOAUTOMNEMONICS ) )
+ m_pParent->CreateAutoMnemonics();
+
+ // activation key
+ KeyEvent aKeyEvent = m_pParent->GetActivationKey( m_pParent->GetItemId( m_nItemPos ) );
+ KeyCode aKeyCode = aKeyEvent.GetKeyCode();
+ Sequence< awt::KeyStroke > aSeq1(1);
+ aSeq1[0].Modifiers = 0;
+ Reference< XAccessible > xParent( getAccessibleParent() );
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
+ if ( xParentContext.is() && xParentContext->getAccessibleRole() == AccessibleRole::MENU_BAR )
+ aSeq1[0].Modifiers |= awt::KeyModifier::MOD2;
+ }
+ aSeq1[0].KeyCode = aKeyCode.GetCode();
+ aSeq1[0].KeyChar = aKeyEvent.GetCharCode();
+ aSeq1[0].KeyFunc = static_cast< sal_Int16 >( aKeyCode.GetFunction() );
+ pKeyBindingHelper->AddKeyBinding( aSeq1 );
+
+ // complete menu activation key sequence
+ Sequence< awt::KeyStroke > aSeq;
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
+ if ( xParentContext.is() && xParentContext->getAccessibleRole() == AccessibleRole::MENU )
+ {
+ Reference< XAccessibleAction > xAction( xParentContext, UNO_QUERY );
+ if ( xAction.is() && xAction->getAccessibleActionCount() > 0 )
+ {
+ Reference< XAccessibleKeyBinding > xKeyB( xAction->getAccessibleActionKeyBinding( 0 ) );
+ if ( xKeyB.is() && xKeyB->getAccessibleKeyBindingCount() > 1 )
+ aSeq = xKeyB->getAccessibleKeyBinding( 1 );
+ }
+ }
+ }
+ Sequence< awt::KeyStroke > aSeq2 = ::comphelper::concatSequences( aSeq, aSeq1 );
+ pKeyBindingHelper->AddKeyBinding( aSeq2 );
+
+ // accelerator key
+ KeyCode aAccelKeyCode = m_pParent->GetAccelKey( m_pParent->GetItemId( m_nItemPos ) );
+ if ( aAccelKeyCode.GetCode() != 0 )
+ {
+ Sequence< awt::KeyStroke > aSeq3(1);
+ aSeq3[0].Modifiers = 0;
+ if ( aAccelKeyCode.IsShift() )
+ aSeq3[0].Modifiers |= awt::KeyModifier::SHIFT;
+ if ( aAccelKeyCode.IsMod1() )
+ aSeq3[0].Modifiers |= awt::KeyModifier::MOD1;
+ if ( aAccelKeyCode.IsMod2() )
+ aSeq3[0].Modifiers |= awt::KeyModifier::MOD2;
+ if ( aAccelKeyCode.IsMod3() )
+ aSeq3[0].Modifiers |= awt::KeyModifier::MOD3;
+ aSeq3[0].KeyCode = aAccelKeyCode.GetCode();
+ aSeq3[0].KeyFunc = static_cast< sal_Int16 >( aAccelKeyCode.GetFunction() );
+ pKeyBindingHelper->AddKeyBinding( aSeq3 );
+ }
+ }
+
+ return xKeyBinding;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleValue
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleMenuItem::getCurrentValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ if ( IsSelected() )
+ aValue <<= (sal_Int32) 1;
+ else
+ aValue <<= (sal_Int32) 0;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleMenuItem::setCurrentValue( const Any& aNumber ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+ sal_Int32 nValue = 0;
+ OSL_VERIFY( aNumber >>= nValue );
+
+ if ( nValue <= 0 )
+ {
+ DeSelect();
+ bReturn = sal_True;
+ }
+ else if ( nValue >= 1 )
+ {
+ Select();
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleMenuItem::getMaximumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 1;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleMenuItem::getMinimumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 0;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblemenuseparator.cxx b/accessibility/source/standard/vclxaccessiblemenuseparator.cxx
new file mode 100644
index 000000000000..70130243e54e
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblemenuseparator.cxx
@@ -0,0 +1,88 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblemenuseparator.hxx>
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class VCLXAccessibleMenuSeparator
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenuSeparator::VCLXAccessibleMenuSeparator( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu )
+ :OAccessibleMenuItemComponent( pParent, nItemPos, pMenu )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleMenuSeparator::~VCLXAccessibleMenuSeparator()
+{
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenuSeparator::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleMenuSeparator" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleMenuSeparator::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleMenuSeparator" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleMenuSeparator::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::SEPARATOR;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblepopupmenu.cxx b/accessibility/source/standard/vclxaccessiblepopupmenu.cxx
new file mode 100644
index 000000000000..073ebd80f844
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblepopupmenu.cxx
@@ -0,0 +1,114 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblepopupmenu.hxx>
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <vcl/svapp.hxx>
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class VCLXAccessiblePopupMenu
+// -----------------------------------------------------------------------------
+
+VCLXAccessiblePopupMenu::VCLXAccessiblePopupMenu( Menu* pMenu )
+ :OAccessibleMenuComponent( pMenu )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessiblePopupMenu::~VCLXAccessiblePopupMenu()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessiblePopupMenu::IsFocused()
+{
+ return !IsChildHighlighted();
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessiblePopupMenu::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessiblePopupMenu" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessiblePopupMenu::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessiblePopupMenu" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessiblePopupMenu::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessiblePopupMenu::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::POPUP_MENU;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessiblePopupMenu::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetStyleSettings().GetMenuColor().GetColor();
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibleradiobutton.cxx b/accessibility/source/standard/vclxaccessibleradiobutton.cxx
new file mode 100644
index 000000000000..5ad9053e9ea5
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibleradiobutton.cxx
@@ -0,0 +1,317 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessibleradiobutton.hxx>
+
+#include <toolkit/awt/vclxwindows.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <comphelper/accessiblekeybindinghelper.hxx>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <vcl/window.hxx>
+#include <vcl/button.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleRadioButton
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleRadioButton::VCLXAccessibleRadioButton( VCLXWindow* pVCLWindow )
+ :VCLXAccessibleTextComponent( pVCLWindow )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleRadioButton::~VCLXAccessibleRadioButton()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleRadioButton::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_RADIOBUTTON_TOGGLE:
+ {
+ Any aOldValue;
+ Any aNewValue;
+
+ VCLXRadioButton* pVCLXRadioButton = static_cast< VCLXRadioButton* >( GetVCLXWindow() );
+ if ( pVCLXRadioButton && pVCLXRadioButton->getState() )
+ aNewValue <<= AccessibleStateType::CHECKED;
+ else
+ aOldValue <<= AccessibleStateType::CHECKED;
+
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ default:
+ VCLXAccessibleTextComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleRadioButton::FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet )
+{
+ VCLXAccessibleTextComponent::FillAccessibleRelationSet( rRelationSet );
+
+ RadioButton* pRadioButton = dynamic_cast< RadioButton* >( GetWindow() );
+ if ( pRadioButton )
+ {
+ ::std::vector< RadioButton* > aGroup;
+ pRadioButton->GetRadioButtonGroup( aGroup, true );
+ if ( !aGroup.empty() )
+ {
+ sal_Int32 i = 0;
+ Sequence< Reference< XInterface > > aSequence( static_cast< sal_Int32 >( aGroup.size() ) );
+ ::std::vector< RadioButton* >::const_iterator aEndItr = aGroup.end();
+ for ( ::std::vector< RadioButton* >::const_iterator aItr = aGroup.begin(); aItr < aEndItr; ++aItr )
+ {
+ aSequence[i++] = (*aItr)->GetAccessible();
+ }
+ rRelationSet.AddRelation( AccessibleRelation( AccessibleRelationType::MEMBER_OF, aSequence ) );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleRadioButton::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleTextComponent::FillAccessibleStateSet( rStateSet );
+
+ VCLXRadioButton* pVCLXRadioButton = static_cast< VCLXRadioButton* >( GetVCLXWindow() );
+ if ( pVCLXRadioButton )
+ {
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ if ( pVCLXRadioButton->getState() )
+ rStateSet.AddState( AccessibleStateType::CHECKED );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleRadioButton, VCLXAccessibleTextComponent, VCLXAccessibleRadioButton_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleRadioButton, VCLXAccessibleTextComponent, VCLXAccessibleRadioButton_BASE )
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleRadioButton::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleRadioButton" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleRadioButton::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleRadioButton" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleAction
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleRadioButton::getAccessibleActionCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleRadioButton::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ VCLXRadioButton* pVCLXRadioButton = static_cast< VCLXRadioButton* >( GetVCLXWindow() );
+ if ( pVCLXRadioButton && !pVCLXRadioButton->getState() )
+ pVCLXRadioButton->setState( sal_True );
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleRadioButton::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleKeyBinding > VCLXAccessibleRadioButton::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ OAccessibleKeyBindingHelper* pKeyBindingHelper = new OAccessibleKeyBindingHelper();
+ Reference< XAccessibleKeyBinding > xKeyBinding = pKeyBindingHelper;
+
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ KeyEvent aKeyEvent = pWindow->GetActivationKey();
+ KeyCode aKeyCode = aKeyEvent.GetKeyCode();
+ if ( aKeyCode.GetCode() != 0 )
+ {
+ awt::KeyStroke aKeyStroke;
+ aKeyStroke.Modifiers = 0;
+ if ( aKeyCode.IsShift() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::SHIFT;
+ if ( aKeyCode.IsMod1() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD1;
+ if ( aKeyCode.IsMod2() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD2;
+ if ( aKeyCode.IsMod3() )
+ aKeyStroke.Modifiers |= awt::KeyModifier::MOD3;
+ aKeyStroke.KeyCode = aKeyCode.GetCode();
+ aKeyStroke.KeyChar = aKeyEvent.GetCharCode();
+ aKeyStroke.KeyFunc = static_cast< sal_Int16 >( aKeyCode.GetFunction() );
+ pKeyBindingHelper->AddKeyBinding( aKeyStroke );
+ }
+ }
+
+ return xKeyBinding;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleValue
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleRadioButton::getCurrentValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+
+ VCLXRadioButton* pVCLXRadioButton = static_cast< VCLXRadioButton* >( GetVCLXWindow() );
+ if ( pVCLXRadioButton )
+ aValue <<= (sal_Int32) pVCLXRadioButton->getState();
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleRadioButton::setCurrentValue( const Any& aNumber ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ VCLXRadioButton* pVCLXRadioButton = static_cast< VCLXRadioButton* >( GetVCLXWindow() );
+ if ( pVCLXRadioButton )
+ {
+ sal_Int32 nValue = 0;
+ OSL_VERIFY( aNumber >>= nValue );
+
+ if ( nValue < 0 )
+ nValue = 0;
+ else if ( nValue > 1 )
+ nValue = 1;
+
+ pVCLXRadioButton->setState( (sal_Bool) nValue );
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleRadioButton::getMaximumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 1;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleRadioButton::getMinimumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 0;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblescrollbar.cxx b/accessibility/source/standard/vclxaccessiblescrollbar.cxx
new file mode 100644
index 000000000000..2d9a6dd6bebc
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblescrollbar.cxx
@@ -0,0 +1,283 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessiblescrollbar.hxx>
+
+#include <toolkit/awt/vclxwindows.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/awt/ScrollBarOrientation.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <vcl/scrbar.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleScrollBar
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleScrollBar::VCLXAccessibleScrollBar( VCLXWindow* pVCLWindow )
+ :VCLXAccessibleComponent( pVCLWindow )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleScrollBar::~VCLXAccessibleScrollBar()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleScrollBar::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_SCROLLBAR_SCROLL:
+ {
+ NotifyAccessibleEvent( AccessibleEventId::VALUE_CHANGED, Any(), Any() );
+ }
+ break;
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleScrollBar::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
+
+ VCLXScrollBar* pVCLXScrollBar = static_cast< VCLXScrollBar* >( GetVCLXWindow() );
+ if ( pVCLXScrollBar )
+ {
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ if ( pVCLXScrollBar->getOrientation() == ScrollBarOrientation::HORIZONTAL )
+ rStateSet.AddState( AccessibleStateType::HORIZONTAL );
+ else if ( pVCLXScrollBar->getOrientation() == ScrollBarOrientation::VERTICAL )
+ rStateSet.AddState( AccessibleStateType::VERTICAL );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleScrollBar, VCLXAccessibleComponent, VCLXAccessibleScrollBar_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleScrollBar, VCLXAccessibleComponent, VCLXAccessibleScrollBar_BASE )
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleScrollBar::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleScrollBar" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleScrollBar::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleScrollBar" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleAction
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleScrollBar::getAccessibleActionCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 4;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleScrollBar::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ sal_Bool bReturn = sal_False;
+ ScrollBar* pScrollBar = static_cast< ScrollBar* >( GetWindow() );
+ if ( pScrollBar )
+ {
+ ScrollType eScrollType;
+ switch ( nIndex )
+ {
+ case 0: eScrollType = SCROLL_LINEUP; break;
+ case 1: eScrollType = SCROLL_LINEDOWN; break;
+ case 2: eScrollType = SCROLL_PAGEUP; break;
+ case 3: eScrollType = SCROLL_PAGEDOWN; break;
+ default: eScrollType = SCROLL_DONTKNOW; break;
+ }
+ if ( pScrollBar->DoScrollAction( eScrollType ) )
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleScrollBar::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ ::rtl::OUString sDescription;
+
+ switch ( nIndex )
+ {
+ case 0: sDescription = ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_DECLINE ) ); break;
+ case 1: sDescription = ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_INCLINE ) ); break;
+ case 2: sDescription = ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_DECBLOCK ) ); break;
+ case 3: sDescription = ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_INCBLOCK ) ); break;
+ default: break;
+ }
+
+ return sDescription;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleKeyBinding > VCLXAccessibleScrollBar::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessibleKeyBinding >();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleValue
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleScrollBar::getCurrentValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+
+ VCLXScrollBar* pVCLXScrollBar = static_cast< VCLXScrollBar* >( GetVCLXWindow() );
+ if ( pVCLXScrollBar )
+ aValue <<= (sal_Int32) pVCLXScrollBar->getValue();
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleScrollBar::setCurrentValue( const Any& aNumber ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ VCLXScrollBar* pVCLXScrollBar = static_cast< VCLXScrollBar* >( GetVCLXWindow() );
+ if ( pVCLXScrollBar )
+ {
+ sal_Int32 nValue = 0, nValueMin = 0, nValueMax = 0;
+ OSL_VERIFY( aNumber >>= nValue );
+ OSL_VERIFY( getMinimumValue() >>= nValueMin );
+ OSL_VERIFY( getMaximumValue() >>= nValueMax );
+
+ if ( nValue < nValueMin )
+ nValue = nValueMin;
+ else if ( nValue > nValueMax )
+ nValue = nValueMax;
+
+ pVCLXScrollBar->setValue( nValue );
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleScrollBar::getMaximumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+
+ VCLXScrollBar* pVCLXScrollBar = static_cast< VCLXScrollBar* >( GetVCLXWindow() );
+ if ( pVCLXScrollBar )
+ aValue <<= (sal_Int32) pVCLXScrollBar->getMaximum();
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+Any VCLXAccessibleScrollBar::getMinimumValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ aValue <<= (sal_Int32) 0;
+
+ return aValue;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblestatusbar.cxx b/accessibility/source/standard/vclxaccessiblestatusbar.cxx
new file mode 100644
index 000000000000..9a3fb29b7b31
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblestatusbar.cxx
@@ -0,0 +1,369 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblestatusbar.hxx>
+#include <accessibility/standard/vclxaccessiblestatusbaritem.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <vcl/status.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleStatusBar
+// ----------------------------------------------------
+
+VCLXAccessibleStatusBar::VCLXAccessibleStatusBar( VCLXWindow* pVCLXWindow )
+ :VCLXAccessibleComponent( pVCLXWindow )
+{
+ m_pStatusBar = static_cast< StatusBar* >( GetWindow() );
+
+ if ( m_pStatusBar )
+ m_aAccessibleChildren.assign( m_pStatusBar->GetItemCount(), Reference< XAccessible >() );
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleStatusBar::~VCLXAccessibleStatusBar()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBar::UpdateShowing( sal_Int32 i, sal_Bool bShowing )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleStatusBarItem* pVCLXAccessibleStatusBarItem = static_cast< VCLXAccessibleStatusBarItem* >( xChild.get() );
+ if ( pVCLXAccessibleStatusBarItem )
+ pVCLXAccessibleStatusBarItem->SetShowing( bShowing );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBar::UpdateItemName( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleStatusBarItem* pVCLXAccessibleStatusBarItem = static_cast< VCLXAccessibleStatusBarItem* >( xChild.get() );
+ if ( pVCLXAccessibleStatusBarItem )
+ {
+ ::rtl::OUString sItemName = pVCLXAccessibleStatusBarItem->GetItemName();
+ pVCLXAccessibleStatusBarItem->SetItemName( sItemName );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBar::UpdateItemText( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleStatusBarItem* pVCLXAccessibleStatusBarItem = static_cast< VCLXAccessibleStatusBarItem* >( xChild.get() );
+ if ( pVCLXAccessibleStatusBarItem )
+ {
+ ::rtl::OUString sItemText = pVCLXAccessibleStatusBarItem->GetItemText();
+ pVCLXAccessibleStatusBarItem->SetItemText( sItemText );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBar::InsertChild( sal_Int32 i )
+{
+ if ( i >= 0 && i <= (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ // insert entry in child list
+ m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + i, Reference< XAccessible >() );
+
+ // send accessible child event
+ Reference< XAccessible > xChild( getAccessibleChild( i ) );
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBar::RemoveChild( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ // get the accessible of the removed page
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+
+ // remove entry in child list
+ m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i );
+
+ // send accessible child event
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+
+ Reference< XComponent > xComponent( xChild, UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBar::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_STATUSBAR_ITEMADDED:
+ {
+ if ( m_pStatusBar )
+ {
+ sal_uInt16 nItemId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nItemPos = m_pStatusBar->GetItemPos( nItemId );
+ InsertChild( nItemPos );
+ }
+ }
+ break;
+ case VCLEVENT_STATUSBAR_ITEMREMOVED:
+ {
+ if ( m_pStatusBar )
+ {
+ sal_uInt16 nItemId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ for ( sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
+ {
+ Reference< XAccessible > xChild( getAccessibleChild( i ) );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleStatusBarItem* pVCLXAccessibleStatusBarItem = static_cast< VCLXAccessibleStatusBarItem* >( xChild.get() );
+ if ( pVCLXAccessibleStatusBarItem && pVCLXAccessibleStatusBarItem->GetItemId() == nItemId )
+ {
+ RemoveChild( i );
+ break;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case VCLEVENT_STATUSBAR_ALLITEMSREMOVED:
+ {
+ for ( sal_Int32 i = m_aAccessibleChildren.size() - 1; i >= 0; --i )
+ RemoveChild( i );
+ }
+ break;
+ case VCLEVENT_STATUSBAR_SHOWITEM:
+ case VCLEVENT_STATUSBAR_HIDEITEM:
+ {
+ if ( m_pStatusBar )
+ {
+ sal_uInt16 nItemId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nItemPos = m_pStatusBar->GetItemPos( nItemId );
+ UpdateShowing( nItemPos, rVclWindowEvent.GetId() == VCLEVENT_STATUSBAR_SHOWITEM );
+ }
+ }
+ break;
+ case VCLEVENT_STATUSBAR_SHOWALLITEMS:
+ case VCLEVENT_STATUSBAR_HIDEALLITEMS:
+ {
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ UpdateShowing( i, rVclWindowEvent.GetId() == VCLEVENT_STATUSBAR_SHOWALLITEMS );
+ }
+ break;
+ case VCLEVENT_STATUSBAR_NAMECHANGED:
+ {
+ if ( m_pStatusBar )
+ {
+ sal_uInt16 nItemId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nItemPos = m_pStatusBar->GetItemPos( nItemId );
+ UpdateItemName( nItemPos );
+ }
+ }
+ break;
+ case VCLEVENT_STATUSBAR_DRAWITEM:
+ {
+ if ( m_pStatusBar )
+ {
+ sal_uInt16 nItemId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nItemPos = m_pStatusBar->GetItemPos( nItemId );
+ UpdateItemText( nItemPos );
+ }
+ }
+ break;
+ case VCLEVENT_OBJECT_DYING:
+ {
+ if ( m_pStatusBar )
+ {
+ m_pStatusBar = NULL;
+
+ // dispose all children
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+ break;
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBar::disposing()
+{
+ VCLXAccessibleComponent::disposing();
+
+ if ( m_pStatusBar )
+ {
+ m_pStatusBar = NULL;
+
+ // dispose all children
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBar::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleStatusBar" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleStatusBar::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleStatusBar" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleStatusBar::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return m_aAccessibleChildren.size();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleStatusBar::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild = m_aAccessibleChildren[i];
+ if ( !xChild.is() )
+ {
+ if ( m_pStatusBar )
+ {
+ sal_uInt16 nItemId = m_pStatusBar->GetItemId( (USHORT)i );
+
+ xChild = new VCLXAccessibleStatusBarItem( m_pStatusBar, nItemId );
+
+ // insert into status bar item list
+ m_aAccessibleChildren[i] = xChild;
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleStatusBar::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xChild;
+ if ( m_pStatusBar )
+ {
+ sal_uInt16 nItemId = m_pStatusBar->GetItemId( VCLPoint( rPoint ) );
+ sal_Int32 nItemPos = m_pStatusBar->GetItemPos( nItemId );
+ if ( nItemPos >= 0 && nItemPos < (sal_Int32)m_aAccessibleChildren.size() )
+ xChild = getAccessibleChild( nItemPos );
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessiblestatusbaritem.cxx b/accessibility/source/standard/vclxaccessiblestatusbaritem.cxx
new file mode 100644
index 000000000000..5f6cca43ca9a
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessiblestatusbaritem.cxx
@@ -0,0 +1,632 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessiblestatusbaritem.hxx>
+#include <toolkit/helper/externallock.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <accessibility/helper/characterattributeshelper.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/unohelp2.hxx>
+#include <vcl/status.hxx>
+#include <vcl/controllayout.hxx>
+
+#include <memory>
+
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class VCLXAccessibleStatusBarItem
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleStatusBarItem::VCLXAccessibleStatusBarItem( StatusBar* pStatusBar, sal_uInt16 nItemId )
+ :AccessibleTextHelper_BASE( new VCLExternalSolarLock() )
+ ,m_pStatusBar( pStatusBar )
+ ,m_nItemId( nItemId )
+{
+ m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
+
+ m_sItemName = GetItemName();
+ m_sItemText = GetItemText();
+ m_bShowing = IsShowing();
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleStatusBarItem::~VCLXAccessibleStatusBarItem()
+{
+ delete m_pExternalLock;
+ m_pExternalLock = NULL;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleStatusBarItem::IsShowing()
+{
+ sal_Bool bShowing = sal_False;
+
+ if ( m_pStatusBar )
+ bShowing = m_pStatusBar->IsItemVisible( m_nItemId );
+
+ return bShowing;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBarItem::SetShowing( sal_Bool bShowing )
+{
+ if ( m_bShowing != bShowing )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bShowing )
+ aOldValue <<= AccessibleStateType::SHOWING;
+ else
+ aNewValue <<= AccessibleStateType::SHOWING;
+ m_bShowing = bShowing;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBarItem::SetItemName( const ::rtl::OUString& sItemName )
+{
+ if ( !m_sItemName.equals( sItemName ) )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= m_sItemName;
+ aNewValue <<= sItemName;
+ m_sItemName = sItemName;
+ NotifyAccessibleEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::GetItemName()
+{
+ ::rtl::OUString sName;
+ if ( m_pStatusBar )
+ sName = m_pStatusBar->GetAccessibleName( m_nItemId );
+
+ return sName;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBarItem::SetItemText( const ::rtl::OUString& sItemText )
+{
+ Any aOldValue, aNewValue;
+ if ( implInitTextChangedEvent( m_sItemText, sItemText, aOldValue, aNewValue ) )
+ {
+ m_sItemText = sItemText;
+ NotifyAccessibleEvent( AccessibleEventId::TEXT_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::GetItemText()
+{
+ ::rtl::OUString sText;
+ ::vcl::ControlLayoutData aLayoutData;
+ if ( m_pStatusBar )
+ {
+ Rectangle aItemRect = m_pStatusBar->GetItemRect( m_nItemId );
+ m_pStatusBar->RecordLayoutData( &aLayoutData, aItemRect );
+ sText = aLayoutData.m_aDisplayText;
+ }
+
+ return sText;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBarItem::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+ rStateSet.AddState( AccessibleStateType::SENSITIVE );
+
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+
+ if ( IsShowing() )
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleComponent
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleStatusBarItem::implGetBounds() throw (RuntimeException)
+{
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+
+ if ( m_pStatusBar )
+ aBounds = AWTRectangle( m_pStatusBar->GetItemRect( m_nItemId ) );
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleText
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::implGetText()
+{
+ return GetItemText();
+}
+
+// -----------------------------------------------------------------------------
+
+lang::Locale VCLXAccessibleStatusBarItem::implGetLocale()
+{
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBarItem::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+{
+ nStartIndex = 0;
+ nEndIndex = 0;
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleStatusBarItem, AccessibleTextHelper_BASE, VCLXAccessibleStatusBarItem_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleStatusBarItem, AccessibleTextHelper_BASE, VCLXAccessibleStatusBarItem_BASE )
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBarItem::disposing()
+{
+ AccessibleTextHelper_BASE::disposing();
+
+ m_pStatusBar = NULL;
+ m_sItemName = ::rtl::OUString();
+ m_sItemText = ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleStatusBarItem" );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleStatusBarItem::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleStatusBarItem::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleStatusBarItem" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessible
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleContext > VCLXAccessibleStatusBarItem::getAccessibleContext( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return this;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleStatusBarItem::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleStatusBarItem::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessible >();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleStatusBarItem::getAccessibleParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+ if ( m_pStatusBar )
+ xParent = m_pStatusBar->GetAccessible();
+
+ return xParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleStatusBarItem::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndexInParent = -1;
+ if ( m_pStatusBar )
+ nIndexInParent = m_pStatusBar->GetItemPos( m_nItemId );
+
+ return nIndexInParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleStatusBarItem::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::LABEL;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::getAccessibleDescription( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pStatusBar )
+ sDescription = m_pStatusBar->GetHelpText( m_nItemId );
+
+ return sDescription;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetItemName();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleRelationSet > VCLXAccessibleStatusBarItem::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleStateSet > VCLXAccessibleStatusBarItem::getAccessibleStateSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Locale VCLXAccessibleStatusBarItem::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleStatusBarItem::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Reference< XAccessible >();
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleStatusBarItem::grabFocus( ) throw (RuntimeException)
+{
+ // no focus for status bar items
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleStatusBarItem::getForeground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getForeground();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleStatusBarItem::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getBackground();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+Reference< awt::XFont > VCLXAccessibleStatusBarItem::getFont( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleExtendedComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ xFont = xParentComp->getFont();
+ }
+
+ return xFont;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::getTitledBorderText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetItemText();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleStatusBarItem::getToolTipText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleText
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleStatusBarItem::getCaretPosition() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return -1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleStatusBarItem::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< PropertyValue > VCLXAccessibleStatusBarItem::getCharacterAttributes( sal_Int32 nIndex, const Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Sequence< PropertyValue > aValues;
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ if ( m_pStatusBar )
+ {
+ Font aFont = m_pStatusBar->GetFont();
+ sal_Int32 nBackColor = getBackground();
+ sal_Int32 nColor = getForeground();
+ ::std::auto_ptr< CharacterAttributesHelper > pHelper( new CharacterAttributesHelper( aFont, nBackColor, nColor ) );
+ aValues = pHelper->GetCharacterAttributes( aRequestedAttributes );
+ }
+
+ return aValues;
+}
+
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleStatusBarItem::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidIndex( nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( m_pStatusBar )
+ {
+ ::vcl::ControlLayoutData aLayoutData;
+ Rectangle aItemRect = m_pStatusBar->GetItemRect( m_nItemId );
+ m_pStatusBar->RecordLayoutData( &aLayoutData, aItemRect );
+ Rectangle aCharRect = aLayoutData.GetCharacterBounds( nIndex );
+ aCharRect.Move( -aItemRect.Left(), -aItemRect.Top() );
+ aBounds = AWTRectangle( aCharRect );
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleStatusBarItem::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndex = -1;
+ if ( m_pStatusBar )
+ {
+ ::vcl::ControlLayoutData aLayoutData;
+ Rectangle aItemRect = m_pStatusBar->GetItemRect( m_nItemId );
+ m_pStatusBar->RecordLayoutData( &aLayoutData, aItemRect );
+ Point aPnt( VCLPoint( aPoint ) );
+ aPnt += aItemRect.TopLeft();
+ nIndex = aLayoutData.GetIndexForPoint( aPnt );
+ }
+
+ return nIndex;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleStatusBarItem::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleStatusBarItem::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ if ( m_pStatusBar )
+ {
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = m_pStatusBar->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ ::rtl::OUString sText( getTextRange( nStartIndex, nEndIndex ) );
+
+ ::vcl::unohelper::TextDataObject* pDataObj = new ::vcl::unohelper::TextDataObject( sText );
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ xClipboard->setContents( pDataObj, NULL );
+
+ Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( xClipboard, uno::UNO_QUERY );
+ if( xFlushableClipboard.is() )
+ xFlushableClipboard->flushClipboard();
+
+ Application::AcquireSolarMutex( nRef );
+
+ bReturn = sal_True;
+ }
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibletabcontrol.cxx b/accessibility/source/standard/vclxaccessibletabcontrol.cxx
new file mode 100644
index 000000000000..417fcf03daf8
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibletabcontrol.cxx
@@ -0,0 +1,518 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessibletabcontrol.hxx>
+#include <accessibility/standard/vclxaccessibletabpage.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/tabpage.hxx>
+
+#include <vector>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleTabControl
+// ----------------------------------------------------
+
+VCLXAccessibleTabControl::VCLXAccessibleTabControl( VCLXWindow* pVCLXWindow )
+ :VCLXAccessibleComponent( pVCLXWindow )
+{
+ m_pTabControl = static_cast< TabControl* >( GetWindow() );
+
+ if ( m_pTabControl )
+ m_aAccessibleChildren.assign( m_pTabControl->GetPageCount(), Reference< XAccessible >() );
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleTabControl::~VCLXAccessibleTabControl()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::UpdateFocused()
+{
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleTabPage* pVCLXAccessibleTabPage = static_cast< VCLXAccessibleTabPage* >( xChild.get() );
+ if ( pVCLXAccessibleTabPage )
+ pVCLXAccessibleTabPage->SetFocused( pVCLXAccessibleTabPage->IsFocused() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::UpdateSelected( sal_Int32 i, bool bSelected )
+{
+ NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleTabPage* pVCLXAccessibleTabPage = static_cast< VCLXAccessibleTabPage* >( xChild.get() );
+ if ( pVCLXAccessibleTabPage )
+ pVCLXAccessibleTabPage->SetSelected( bSelected );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::UpdatePageText( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleTabPage* pVCLXAccessibleTabPage = static_cast< VCLXAccessibleTabPage* >( xChild.get() );
+ if ( pVCLXAccessibleTabPage )
+ pVCLXAccessibleTabPage->SetPageText( pVCLXAccessibleTabPage->GetPageText() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::UpdateTabPage( sal_Int32 i, bool bNew )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleTabPage* pVCLXAccessibleTabPage = static_cast< VCLXAccessibleTabPage* >( xChild.get() );
+ if ( pVCLXAccessibleTabPage )
+ pVCLXAccessibleTabPage->Update( bNew );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::InsertChild( sal_Int32 i )
+{
+ if ( i >= 0 && i <= (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ // insert entry in child list
+ m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + i, Reference< XAccessible >() );
+
+ // send accessible child event
+ Reference< XAccessible > xChild( getAccessibleChild( i ) );
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::RemoveChild( sal_Int32 i )
+{
+ if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
+ {
+ // get the accessible of the removed page
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
+
+ // remove entry in child list
+ m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i );
+
+ // send accessible child event
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+
+ Reference< XComponent > xComponent( xChild, UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_TABPAGE_ACTIVATE:
+ case VCLEVENT_TABPAGE_DEACTIVATE:
+ {
+ if ( m_pTabControl )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabControl->GetPagePos( nPageId );
+ UpdateFocused();
+ UpdateSelected( nPagePos, rVclWindowEvent.GetId() == VCLEVENT_TABPAGE_ACTIVATE );
+ }
+ }
+ break;
+ case VCLEVENT_TABPAGE_PAGETEXTCHANGED:
+ {
+ if ( m_pTabControl )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabControl->GetPagePos( nPageId );
+ UpdatePageText( nPagePos );
+ }
+ }
+ break;
+ case VCLEVENT_TABPAGE_INSERTED:
+ {
+ if ( m_pTabControl )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ sal_uInt16 nPagePos = m_pTabControl->GetPagePos( nPageId );
+ InsertChild( nPagePos );
+ }
+ }
+ break;
+ case VCLEVENT_TABPAGE_REMOVED:
+ {
+ if ( m_pTabControl )
+ {
+ sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData();
+ for ( sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
+ {
+ Reference< XAccessible > xChild( getAccessibleChild( i ) );
+ if ( xChild.is() )
+ {
+ VCLXAccessibleTabPage* pVCLXAccessibleTabPage = static_cast< VCLXAccessibleTabPage* >( xChild.get() );
+ if ( pVCLXAccessibleTabPage && pVCLXAccessibleTabPage->GetPageId() == nPageId )
+ {
+ RemoveChild( i );
+ break;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case VCLEVENT_TABPAGE_REMOVEDALL:
+ {
+ for ( sal_Int32 i = m_aAccessibleChildren.size() - 1; i >= 0; --i )
+ RemoveChild( i );
+ }
+ break;
+ case VCLEVENT_WINDOW_GETFOCUS:
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ {
+ UpdateFocused();
+ }
+ break;
+ case VCLEVENT_OBJECT_DYING:
+ {
+ if ( m_pTabControl )
+ {
+ m_pTabControl = NULL;
+
+ // dispose all tab pages
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+ break;
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_SHOW:
+ case VCLEVENT_WINDOW_HIDE:
+ {
+ if ( m_pTabControl )
+ {
+ Window* pChild = static_cast< Window* >( rVclWindowEvent.GetData() );
+ if ( pChild && pChild->GetType() == WINDOW_TABPAGE )
+ {
+ for ( sal_Int32 i = 0, nCount = m_pTabControl->GetPageCount(); i < nCount; ++i )
+ {
+ sal_uInt16 nPageId = m_pTabControl->GetPageId( (USHORT)i );
+ TabPage* pTabPage = m_pTabControl->GetTabPage( nPageId );
+ if ( pTabPage == (TabPage*) pChild )
+ UpdateTabPage( i, rVclWindowEvent.GetId() == VCLEVENT_WINDOW_SHOW );
+ }
+ }
+ }
+ }
+ break;
+ default:
+ VCLXAccessibleComponent::ProcessWindowChildEvent( rVclWindowEvent );
+ }
+}
+
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
+
+ if ( m_pTabControl )
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleTabControl, VCLXAccessibleComponent, VCLXAccessibleTabControl_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleTabControl, VCLXAccessibleComponent, VCLXAccessibleTabControl_BASE )
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::disposing()
+{
+ VCLXAccessibleComponent::disposing();
+
+ if ( m_pTabControl )
+ {
+ m_pTabControl = NULL;
+
+ // dispose all tab pages
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabControl::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleTabControl" );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleTabControl::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleTabControl" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabControl::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return m_aAccessibleChildren.size();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleTabControl::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild = m_aAccessibleChildren[i];
+ if ( !xChild.is() )
+ {
+ if ( m_pTabControl )
+ {
+ sal_uInt16 nPageId = m_pTabControl->GetPageId( (USHORT)i );
+
+ xChild = new VCLXAccessibleTabPage( m_pTabControl, nPageId );
+
+ // insert into tab page list
+ m_aAccessibleChildren[i] = xChild;
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleTabControl::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::PAGE_TAB_LIST;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabControl::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleSelection
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ if ( m_pTabControl )
+ m_pTabControl->SelectTabPage( m_pTabControl->GetPageId( (USHORT)nChildIndex ) );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTabControl::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ sal_Bool bSelected = sal_False;
+ if ( m_pTabControl && m_pTabControl->GetCurPageId() == m_pTabControl->GetPageId( (USHORT)nChildIndex ) )
+ bSelected = sal_True;
+
+ return bSelected;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::clearAccessibleSelection( ) throw (RuntimeException)
+{
+ // This method makes no sense in a tab control, and so does nothing.
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::selectAllAccessibleChildren( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ selectAccessibleChild( 0 );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabControl::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 1;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleTabControl::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+
+ for ( sal_Int32 i = 0, j = 0, nCount = getAccessibleChildCount(); i < nCount; i++ )
+ {
+ if ( isAccessibleChildSelected( i ) && ( j++ == nSelectedChildIndex ) )
+ {
+ xChild = getAccessibleChild( i );
+ break;
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabControl::deselectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ // This method makes no sense in a tab control, and so does nothing.
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibletabpage.cxx b/accessibility/source/standard/vclxaccessibletabpage.cxx
new file mode 100644
index 000000000000..5bb372884591
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibletabpage.cxx
@@ -0,0 +1,705 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessibletabpage.hxx>
+#include <toolkit/helper/externallock.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <accessibility/helper/characterattributeshelper.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/unohelp2.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/tabpage.hxx>
+
+#include <memory>
+
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class VCLXAccessibleTabPage
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleTabPage::VCLXAccessibleTabPage( TabControl* pTabControl, sal_uInt16 nPageId )
+ :AccessibleTextHelper_BASE( new VCLExternalSolarLock() )
+ ,m_pTabControl( pTabControl )
+ ,m_nPageId( nPageId )
+{
+ m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
+ m_bFocused = IsFocused();
+ m_bSelected = IsSelected();
+ m_sPageText = GetPageText();
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleTabPage::~VCLXAccessibleTabPage()
+{
+ delete m_pExternalLock;
+ m_pExternalLock = NULL;
+}
+
+// -----------------------------------------------------------------------------
+
+bool VCLXAccessibleTabPage::IsFocused()
+{
+ bool bFocused = false;
+
+ if ( m_pTabControl && m_pTabControl->HasFocus() && m_pTabControl->GetCurPageId() == m_nPageId )
+ bFocused = true;
+
+ return bFocused;
+}
+
+// -----------------------------------------------------------------------------
+
+bool VCLXAccessibleTabPage::IsSelected()
+{
+ bool bSelected = false;
+
+ if ( m_pTabControl && m_pTabControl->GetCurPageId() == m_nPageId )
+ bSelected = true;
+
+ return bSelected;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::SetFocused( bool bFocused )
+{
+ if ( m_bFocused != bFocused )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bFocused )
+ aOldValue <<= AccessibleStateType::FOCUSED;
+ else
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ m_bFocused = bFocused;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::SetSelected( bool bSelected )
+{
+ if ( m_bSelected != bSelected )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bSelected )
+ aOldValue <<= AccessibleStateType::SELECTED;
+ else
+ aNewValue <<= AccessibleStateType::SELECTED;
+ m_bSelected = bSelected;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::SetPageText( const ::rtl::OUString& sPageText )
+{
+ Any aOldValue, aNewValue;
+ if ( OCommonAccessibleText::implInitTextChangedEvent( m_sPageText, sPageText, aOldValue, aNewValue ) )
+ {
+ Any aOldName, aNewName;
+ aOldName <<= m_sPageText;
+ aNewName <<= sPageText;
+ m_sPageText = sPageText;
+ NotifyAccessibleEvent( AccessibleEventId::NAME_CHANGED, aOldName, aNewName );
+ NotifyAccessibleEvent( AccessibleEventId::TEXT_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabPage::GetPageText()
+{
+ ::rtl::OUString sText;
+ if ( m_pTabControl )
+ sText = OutputDevice::GetNonMnemonicString( m_pTabControl->GetPageText( m_nPageId ) );
+
+ return sText;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::Update( bool bNew )
+{
+ if ( m_pTabControl )
+ {
+ TabPage* pTabPage = m_pTabControl->GetTabPage( m_nPageId );
+ if ( pTabPage )
+ {
+ Reference< XAccessible > xChild( pTabPage->GetAccessible( bNew ) );
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ if ( bNew )
+ aNewValue <<= xChild;
+ else
+ aOldValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+ rStateSet.AddState( AccessibleStateType::SENSITIVE );
+
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( IsFocused() )
+ rStateSet.AddState( AccessibleStateType::FOCUSED );
+
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+
+ rStateSet.AddState( AccessibleStateType::SELECTABLE );
+
+ if ( IsSelected() )
+ rStateSet.AddState( AccessibleStateType::SELECTED );
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleComponent
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleTabPage::implGetBounds() throw (RuntimeException)
+{
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+
+ if ( m_pTabControl )
+ aBounds = AWTRectangle( m_pTabControl->GetTabBounds( m_nPageId ) );
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleText
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabPage::implGetText()
+{
+ return GetPageText();
+}
+
+// -----------------------------------------------------------------------------
+
+lang::Locale VCLXAccessibleTabPage::implGetLocale()
+{
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+{
+ nStartIndex = 0;
+ nEndIndex = 0;
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleTabPage, AccessibleTextHelper_BASE, VCLXAccessibleTabPage_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleTabPage, AccessibleTextHelper_BASE, VCLXAccessibleTabPage_BASE )
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::disposing()
+{
+ AccessibleTextHelper_BASE::disposing();
+
+ m_pTabControl = NULL;
+ m_sPageText = ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabPage::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleTabPage" );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTabPage::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > VCLXAccessibleTabPage::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleTabPage" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessible
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleContext > VCLXAccessibleTabPage::getAccessibleContext( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return this;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabPage::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nCount = 0;
+ if ( m_pTabControl )
+ {
+ TabPage* pTabPage = m_pTabControl->GetTabPage( m_nPageId );
+ if ( pTabPage && pTabPage->IsVisible() )
+ nCount = 1;
+ }
+
+ return nCount;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleTabPage::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+ if ( m_pTabControl )
+ {
+ TabPage* pTabPage = m_pTabControl->GetTabPage( m_nPageId );
+ if ( pTabPage && pTabPage->IsVisible() )
+ xChild = pTabPage->GetAccessible();
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleTabPage::getAccessibleParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+ if ( m_pTabControl )
+ xParent = m_pTabControl->GetAccessible();
+
+ return xParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabPage::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndexInParent = -1;
+ if ( m_pTabControl )
+ nIndexInParent = m_pTabControl->GetPagePos( m_nPageId );
+
+ return nIndexInParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 VCLXAccessibleTabPage::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::PAGE_TAB;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabPage::getAccessibleDescription( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pTabControl )
+ sDescription = m_pTabControl->GetHelpText( m_nPageId );
+
+ return sDescription;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabPage::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetPageText();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleRelationSet > VCLXAccessibleTabPage::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleStateSet > VCLXAccessibleTabPage::getAccessibleStateSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Locale VCLXAccessibleTabPage::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleTabPage::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xChild;
+ for ( sal_uInt32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
+ {
+ Reference< XAccessible > xAcc = getAccessibleChild( i );
+ if ( xAcc.is() )
+ {
+ Reference< XAccessibleComponent > xComp( xAcc->getAccessibleContext(), UNO_QUERY );
+ if ( xComp.is() )
+ {
+ Rectangle aRect = VCLRectangle( xComp->getBounds() );
+ Point aPos = VCLPoint( rPoint );
+ if ( aRect.IsInside( aPos ) )
+ {
+ xChild = xAcc;
+ break;
+ }
+ }
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPage::grabFocus( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( m_pTabControl )
+ {
+ m_pTabControl->SelectTabPage( m_nPageId );
+ m_pTabControl->GrabFocus();
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabPage::getForeground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getForeground();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabPage::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ nColor = xParentComp->getBackground();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+Reference< awt::XFont > VCLXAccessibleTabPage::getFont( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ Reference< XAccessible > xParent = getAccessibleParent();
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleExtendedComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
+ if ( xParentComp.is() )
+ xFont = xParentComp->getFont();
+ }
+
+ return xFont;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabPage::getTitledBorderText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTabPage::getToolTipText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleText
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabPage::getCaretPosition() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return -1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTabPage::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< PropertyValue > VCLXAccessibleTabPage::getCharacterAttributes( sal_Int32 nIndex, const Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Sequence< PropertyValue > aValues;
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ if ( m_pTabControl )
+ {
+ Font aFont = m_pTabControl->GetFont();
+ sal_Int32 nBackColor = getBackground();
+ sal_Int32 nColor = getForeground();
+ ::std::auto_ptr< CharacterAttributesHelper > pHelper( new CharacterAttributesHelper( aFont, nBackColor, nColor ) );
+ aValues = pHelper->GetCharacterAttributes( aRequestedAttributes );
+ }
+
+ return aValues;
+}
+
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleTabPage::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidIndex( nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( m_pTabControl )
+ {
+ Rectangle aPageRect = m_pTabControl->GetTabBounds( m_nPageId );
+ Rectangle aCharRect = m_pTabControl->GetCharacterBounds( m_nPageId, nIndex );
+ aCharRect.Move( -aPageRect.Left(), -aPageRect.Top() );
+ aBounds = AWTRectangle( aCharRect );
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabPage::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndex = -1;
+ if ( m_pTabControl )
+ {
+ sal_uInt16 nPageId = 0;
+ Rectangle aPageRect = m_pTabControl->GetTabBounds( m_nPageId );
+ Point aPnt( VCLPoint( aPoint ) );
+ aPnt += aPageRect.TopLeft();
+ sal_Int32 nI = m_pTabControl->GetIndexForPoint( aPnt, nPageId );
+ if ( nI != -1 && m_nPageId == nPageId )
+ nIndex = nI;
+ }
+
+ return nIndex;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTabPage::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTabPage::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ if ( m_pTabControl )
+ {
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = m_pTabControl->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ ::rtl::OUString sText( getTextRange( nStartIndex, nEndIndex ) );
+
+ ::vcl::unohelper::TextDataObject* pDataObj = new ::vcl::unohelper::TextDataObject( sText );
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ xClipboard->setContents( pDataObj, NULL );
+
+ Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( xClipboard, uno::UNO_QUERY );
+ if( xFlushableClipboard.is() )
+ xFlushableClipboard->flushClipboard();
+
+ Application::AcquireSolarMutex( nRef );
+
+ bReturn = sal_True;
+ }
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibletabpagewindow.cxx b/accessibility/source/standard/vclxaccessibletabpagewindow.cxx
new file mode 100644
index 000000000000..9353c9801991
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibletabpagewindow.cxx
@@ -0,0 +1,144 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessibletabpagewindow.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/tabpage.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleTabPageWindow
+// ----------------------------------------------------
+
+VCLXAccessibleTabPageWindow::VCLXAccessibleTabPageWindow( VCLXWindow* pVCLXWindow )
+ :VCLXAccessibleComponent( pVCLXWindow )
+{
+ m_pTabPage = static_cast< TabPage* >( GetWindow() );
+ if ( m_pTabPage )
+ {
+ Window* pParent = m_pTabPage->GetAccessibleParentWindow();
+ if ( pParent && pParent->GetType() == WINDOW_TABCONTROL )
+ {
+ m_pTabControl = static_cast< TabControl* >( pParent );
+ if ( m_pTabControl )
+ {
+ for ( sal_uInt16 i = 0, nCount = m_pTabControl->GetPageCount(); i < nCount; ++i )
+ {
+ sal_uInt16 nPageId = m_pTabControl->GetPageId( i );
+ if ( m_pTabControl->GetTabPage( nPageId ) == m_pTabPage )
+ m_nPageId = nPageId;
+ }
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleTabPageWindow::~VCLXAccessibleTabPageWindow()
+{
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleComponent
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleTabPageWindow::implGetBounds() throw (RuntimeException)
+{
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+
+ if ( m_pTabControl )
+ {
+ Rectangle aPageRect = m_pTabControl->GetTabBounds( m_nPageId );
+ if ( m_pTabPage )
+ {
+ Rectangle aRect = Rectangle( m_pTabPage->GetPosPixel(), m_pTabPage->GetSizePixel() );
+ aRect.Move( -aPageRect.Left(), -aPageRect.Top() );
+ aBounds = AWTRectangle( aRect );
+ }
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTabPageWindow::disposing()
+{
+ VCLXAccessibleComponent::disposing();
+
+ m_pTabControl = NULL;
+ m_pTabPage = NULL;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > VCLXAccessibleTabPageWindow::getAccessibleParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+ if ( m_pTabControl )
+ {
+ Reference< XAccessible > xAcc( m_pTabControl->GetAccessible() );
+ if ( xAcc.is() )
+ {
+ Reference< XAccessibleContext > xCont( xAcc->getAccessibleContext() );
+ if ( xCont.is() )
+ xParent = xCont->getAccessibleChild( m_pTabControl->GetPagePos( m_nPageId ) );
+ }
+ }
+
+ return xParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTabPageWindow::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibletextcomponent.cxx b/accessibility/source/standard/vclxaccessibletextcomponent.cxx
new file mode 100644
index 000000000000..9613234eb732
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibletextcomponent.cxx
@@ -0,0 +1,365 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessibletextcomponent.hxx>
+#include <toolkit/helper/macros.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <accessibility/helper/characterattributeshelper.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+#include <vcl/window.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/unohelp2.hxx>
+#include <vcl/ctrl.hxx>
+
+#include <memory>
+#include <vector>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// ----------------------------------------------------
+// class VCLXAccessibleTextComponent
+// ----------------------------------------------------
+
+VCLXAccessibleTextComponent::VCLXAccessibleTextComponent( VCLXWindow* pVCLXWindow )
+ :VCLXAccessibleComponent( pVCLXWindow )
+{
+ if ( GetWindow() )
+ m_sText = OutputDevice::GetNonMnemonicString( GetWindow()->GetText() );
+}
+
+// -----------------------------------------------------------------------------
+
+VCLXAccessibleTextComponent::~VCLXAccessibleTextComponent()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTextComponent::SetText( const ::rtl::OUString& sText )
+{
+ Any aOldValue, aNewValue;
+ if ( implInitTextChangedEvent( m_sText, sText, aOldValue, aNewValue ) )
+ {
+ m_sText = sText;
+ NotifyAccessibleEvent( AccessibleEventId::TEXT_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTextComponent::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_FRAMETITLECHANGED:
+ {
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ SetText( implGetText() );
+ }
+ break;
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleText
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTextComponent::implGetText()
+{
+ ::rtl::OUString aText;
+ if ( GetWindow() )
+ aText = OutputDevice::GetNonMnemonicString( GetWindow()->GetText() );
+
+ return aText;
+}
+
+// -----------------------------------------------------------------------------
+
+lang::Locale VCLXAccessibleTextComponent::implGetLocale()
+{
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTextComponent::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+{
+ nStartIndex = 0;
+ nEndIndex = 0;
+}
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleTextComponent::disposing()
+{
+ VCLXAccessibleComponent::disposing();
+
+ m_sText = ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleTextComponent, VCLXAccessibleComponent, VCLXAccessibleTextComponent_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleTextComponent, VCLXAccessibleComponent, VCLXAccessibleTextComponent_BASE )
+
+// -----------------------------------------------------------------------------
+// XAccessibleText
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTextComponent::getCaretPosition() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return -1;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTextComponent::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return setSelection( nIndex, nIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Unicode VCLXAccessibleTextComponent::getCharacter( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getCharacter( nIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< PropertyValue > VCLXAccessibleTextComponent::getCharacterAttributes( sal_Int32 nIndex, const Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Sequence< PropertyValue > aValues;
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ if ( GetWindow() )
+ {
+ Font aFont = GetWindow()->GetControlFont();
+ sal_Int32 nBackColor = GetWindow()->GetControlBackground().GetColor();
+ sal_Int32 nColor = GetWindow()->GetControlForeground().GetColor();
+ ::std::auto_ptr< CharacterAttributesHelper > pHelper( new CharacterAttributesHelper( aFont, nBackColor, nColor ) );
+ aValues = pHelper->GetCharacterAttributes( aRequestedAttributes );
+ }
+
+ return aValues;
+}
+
+// -----------------------------------------------------------------------------
+
+awt::Rectangle VCLXAccessibleTextComponent::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidIndex( nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aRect;
+ Control* pControl = static_cast< Control* >( GetWindow() );
+ if ( pControl )
+ aRect = AWTRectangle( pControl->GetCharacterBounds( nIndex ) );
+
+ return aRect;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTextComponent::getCharacterCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getCharacterCount();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTextComponent::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndex = -1;
+ Control* pControl = static_cast< Control* >( GetWindow() );
+ if ( pControl )
+ nIndex = pControl->GetIndexForPoint( VCLPoint( aPoint ) );
+
+ return nIndex;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTextComponent::getSelectedText() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getSelectedText();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTextComponent::getSelectionStart() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getSelectionStart();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 VCLXAccessibleTextComponent::getSelectionEnd() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getSelectionEnd();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTextComponent::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTextComponent::getText() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getText();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleTextComponent::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleTextComponent::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextAtIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleTextComponent::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextBeforeIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+::com::sun::star::accessibility::TextSegment VCLXAccessibleTextComponent::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return OCommonAccessibleText::getTextBehindIndex( nIndex, aTextType );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool VCLXAccessibleTextComponent::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ if ( GetWindow() )
+ {
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ ::rtl::OUString sText( getTextRange( nStartIndex, nEndIndex ) );
+
+ ::vcl::unohelper::TextDataObject* pDataObj = new ::vcl::unohelper::TextDataObject( sText );
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ xClipboard->setContents( pDataObj, NULL );
+
+ Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( xClipboard, uno::UNO_QUERY );
+ if( xFlushableClipboard.is() )
+ xFlushableClipboard->flushClipboard();
+
+ Application::AcquireSolarMutex( nRef );
+
+ bReturn = sal_True;
+ }
+ }
+
+ return bReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibletextfield.cxx b/accessibility/source/standard/vclxaccessibletextfield.cxx
new file mode 100644
index 000000000000..afc28d3e9e43
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibletextfield.cxx
@@ -0,0 +1,157 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessibletextfield.hxx>
+#include <vcl/lstbox.hxx>
+#include <accessibility/helper/listboxhelper.hxx>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <vcl/svapp.hxx>
+#include <vcl/combobox.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+
+
+
+
+VCLXAccessibleTextField::VCLXAccessibleTextField (VCLXWindow* pVCLWindow, const Reference< XAccessible >& _xParent) :
+
+ VCLXAccessibleTextComponent (pVCLWindow),
+
+ m_xParent( _xParent )
+
+{
+}
+
+
+
+
+VCLXAccessibleTextField::~VCLXAccessibleTextField (void)
+{
+}
+
+
+
+
+::rtl::OUString VCLXAccessibleTextField::implGetText (void)
+{
+ ::rtl::OUString aText;
+ ListBox* pListBox = static_cast<ListBox*>(GetWindow());
+ if (pListBox!=NULL && !pListBox->IsInDropDown())
+ aText = pListBox->GetSelectEntry();
+
+ return aText;
+}
+
+
+
+
+IMPLEMENT_FORWARD_XINTERFACE2(VCLXAccessibleTextField, VCLXAccessibleTextComponent, VCLXAccessible_BASE)
+IMPLEMENT_FORWARD_XTYPEPROVIDER2(VCLXAccessibleTextField, VCLXAccessibleTextComponent, VCLXAccessible_BASE)
+
+
+//===== XAccessible =========================================================
+
+Reference<XAccessibleContext> SAL_CALL
+ VCLXAccessibleTextField::getAccessibleContext (void)
+ throw (RuntimeException)
+{
+ return this;
+}
+
+
+//===== XAccessibleContext ==================================================
+
+sal_Int32 SAL_CALL VCLXAccessibleTextField::getAccessibleChildCount (void)
+ throw (RuntimeException)
+{
+ return 0;
+}
+
+
+
+
+Reference<XAccessible> SAL_CALL VCLXAccessibleTextField::getAccessibleChild (sal_Int32)
+ throw (IndexOutOfBoundsException, RuntimeException)
+{
+ throw IndexOutOfBoundsException();
+}
+
+
+
+
+sal_Int16 SAL_CALL VCLXAccessibleTextField::getAccessibleRole (void)
+ throw (RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ return AccessibleRole::TEXT;
+}
+
+Reference< XAccessible > SAL_CALL VCLXAccessibleTextField::getAccessibleParent( )
+ throw (RuntimeException)
+{
+ ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() );
+
+ return m_xParent;
+}
+
+
+
+//===== XServiceInfo ==========================================================
+
+::rtl::OUString VCLXAccessibleTextField::getImplementationName (void)
+ throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii ("com.sun.star.comp.toolkit.AccessibleTextField");
+}
+
+
+
+
+Sequence< ::rtl::OUString > VCLXAccessibleTextField::getSupportedServiceNames (void)
+ throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames = VCLXAccessibleTextComponent::getSupportedServiceNames();
+ sal_Int32 nLength = aNames.getLength();
+ aNames.realloc( nLength + 1 );
+ aNames[nLength] = ::rtl::OUString::createFromAscii(
+ "com.sun.star.accessibility.AccessibleTextField");
+ return aNames;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibletoolbox.cxx b/accessibility/source/standard/vclxaccessibletoolbox.cxx
new file mode 100644
index 000000000000..1b22fddc95fa
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibletoolbox.cxx
@@ -0,0 +1,885 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+
+// includes --------------------------------------------------------------
+#include <accessibility/standard/vclxaccessibletoolbox.hxx>
+#include <accessibility/standard/vclxaccessibletoolboxitem.hxx>
+#include <toolkit/helper/convert.hxx>
+
+#include <unotools/accessiblestatesethelper.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <tools/debug.hxx>
+#include <vcl/toolbox.hxx>
+#include <comphelper/accessiblewrapper.hxx>
+#include <comphelper/processfactory.hxx>
+
+using namespace ::comphelper;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::accessibility;
+
+namespace
+{
+ // =========================================================================
+ // = OToolBoxWindowItemContext
+ // =========================================================================
+ /** XAccessibleContext implementation for a toolbox item which is represented by a VCL Window
+ */
+ class OToolBoxWindowItemContext : public OAccessibleContextWrapper
+ {
+ sal_Int32 m_nIndexInParent;
+ public:
+ OToolBoxWindowItemContext(sal_Int32 _nIndexInParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >& _rxInnerAccessibleContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxOwningAccessible,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParentAccessible
+ ) : OAccessibleContextWrapper(
+ _rxORB,
+ _rxInnerAccessibleContext,
+ _rxOwningAccessible,
+ _rxParentAccessible )
+ ,m_nIndexInParent(_nIndexInParent)
+ {
+ }
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ };
+
+ // -------------------------------------------------------------------------
+ sal_Int32 SAL_CALL OToolBoxWindowItemContext::getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+ return m_nIndexInParent;
+ }
+
+ // =========================================================================
+ // = OToolBoxWindowItem
+ // =========================================================================
+ typedef ::cppu::ImplHelper1 < XUnoTunnel
+ > OToolBoxWindowItem_Base;
+
+ /** XAccessible implementation for a toolbox item which is represented by a VCL Window
+ */
+ class OToolBoxWindowItem
+ :public OAccessibleWrapper
+ ,public OToolBoxWindowItem_Base
+ {
+ private:
+ sal_Int32 m_nIndexInParent;
+
+ public:
+ inline sal_Int32 getIndexInParent() const { return m_nIndexInParent; }
+ inline void setIndexInParent( sal_Int32 _nNewIndex ) { m_nIndexInParent = _nNewIndex; }
+
+ static sal_Bool isWindowItem( const Reference< XAccessible >& _rxAcc, OToolBoxWindowItem** /* [out] */ _ppImplementation = NULL );
+
+ public:
+ OToolBoxWindowItem(sal_Int32 _nIndexInParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxInnerAccessible,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParentAccessible
+ ) : OAccessibleWrapper(
+ _rxORB,
+ _rxInnerAccessible,
+ _rxParentAccessible)
+ ,m_nIndexInParent(_nIndexInParent)
+ {
+ }
+
+ protected:
+ // XInterface
+ DECLARE_XINTERFACE( )
+ DECLARE_XTYPEPROVIDER( )
+
+ // OAccessibleWrapper
+ virtual OAccessibleContextWrapper* createAccessibleContext(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >& _rxInnerContext
+ );
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const Sequence< sal_Int8 >& aIdentifier ) throw (RuntimeException);
+ static Sequence< sal_Int8 > getUnoTunnelImplementationId();
+ };
+
+ // -------------------------------------------------------------------------
+ IMPLEMENT_FORWARD_XINTERFACE2( OToolBoxWindowItem, OAccessibleWrapper, OToolBoxWindowItem_Base )
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2( OToolBoxWindowItem, OAccessibleWrapper, OToolBoxWindowItem_Base )
+
+ // -------------------------------------------------------------------------
+ OAccessibleContextWrapper* OToolBoxWindowItem::createAccessibleContext(
+ const Reference< XAccessibleContext >& _rxInnerContext )
+ {
+ return new OToolBoxWindowItemContext( m_nIndexInParent,getORB(), _rxInnerContext, this, getParent() );
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool OToolBoxWindowItem::isWindowItem( const Reference< XAccessible >& _rxAcc, OToolBoxWindowItem** /* [out] */ _ppImplementation )
+ {
+ OToolBoxWindowItem* pImplementation = NULL;
+
+ Reference< XUnoTunnel > xTunnel( _rxAcc, UNO_QUERY );
+ if ( xTunnel.is() )
+ pImplementation = reinterpret_cast< OToolBoxWindowItem* >( xTunnel->getSomething( getUnoTunnelImplementationId() ) );
+
+ if ( _ppImplementation )
+ *_ppImplementation = pImplementation;
+
+ return NULL != pImplementation;
+ }
+
+ //--------------------------------------------------------------------
+ Sequence< sal_Int8 > OToolBoxWindowItem::getUnoTunnelImplementationId()
+ {
+ static ::cppu::OImplementationId * pId = 0;
+ if (! pId)
+ {
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if (! pId)
+ {
+ static ::cppu::OImplementationId aId;
+ pId = &aId;
+ }
+ }
+ return pId->getImplementationId();
+ }
+
+ //--------------------------------------------------------------------
+ sal_Int64 SAL_CALL OToolBoxWindowItem::getSomething( const Sequence< sal_Int8 >& _rId ) throw (RuntimeException)
+ {
+ if ( ( 16 == _rId.getLength() )
+ && ( 0 == rtl_compareMemory( getUnoTunnelImplementationId().getConstArray(), _rId.getConstArray(), 16 ) )
+ )
+ return reinterpret_cast< sal_Int64>( this );
+
+ return 0;
+ }
+}
+
+DBG_NAME(VCLXAccessibleToolBox)
+
+// -----------------------------------------------------------------------------
+// VCLXAccessibleToolBox
+// -----------------------------------------------------------------------------
+VCLXAccessibleToolBox::VCLXAccessibleToolBox( VCLXWindow* pVCLXWindow ) :
+
+ VCLXAccessibleComponent( pVCLXWindow )
+
+{
+ DBG_CTOR(VCLXAccessibleToolBox,NULL);
+}
+// -----------------------------------------------------------------------------
+VCLXAccessibleToolBox::~VCLXAccessibleToolBox()
+{
+ DBG_DTOR(VCLXAccessibleToolBox,NULL);
+}
+// -----------------------------------------------------------------------------
+VCLXAccessibleToolBoxItem* VCLXAccessibleToolBox::GetItem_Impl( sal_Int32 _nPos, bool _bMustHaveFocus )
+{
+ VCLXAccessibleToolBoxItem* pItem = NULL;
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox && ( !_bMustHaveFocus || pToolBox->HasFocus() ) )
+ {
+ ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.find( _nPos );
+ // returns only toolbox buttons, not windows
+ if ( aIter != m_aAccessibleChildren.end() && !aIter->second.is())
+ pItem = static_cast< VCLXAccessibleToolBoxItem* >( aIter->second.get() );
+ }
+
+ return pItem;
+}
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleToolBox::UpdateFocus_Impl()
+{
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if( !pToolBox )
+ return;
+
+ // submit events only if toolbox has the focus to avoid sending events due to mouse move
+ BOOL bHasFocus = FALSE;
+ if ( pToolBox->HasFocus() )
+ bHasFocus = TRUE;
+ else
+ {
+ // check for subtoolbar, i.e. check if our parent is a toolbar
+ ToolBox* pToolBoxParent = dynamic_cast< ToolBox* >( pToolBox->GetParent() );
+ // subtoolbars never get the focus as key input is just forwarded, so check if the parent toolbar has it
+ if ( pToolBoxParent && pToolBoxParent->HasFocus() )
+ bHasFocus = TRUE;
+ }
+
+ if ( bHasFocus )
+ {
+ USHORT nHighlightItemId = pToolBox->GetHighlightItemId();
+ USHORT nFocusCount = 0;
+ for ( ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.begin();
+ aIter != m_aAccessibleChildren.end(); ++aIter )
+ {
+ USHORT nItemId = pToolBox->GetItemId( (USHORT)aIter->first );
+
+ if ( aIter->second.is() )
+ {
+ VCLXAccessibleToolBoxItem* pItem =
+ static_cast< VCLXAccessibleToolBoxItem* >( aIter->second.get() );
+ if ( pItem->HasFocus() && nItemId != nHighlightItemId )
+ {
+ // reset the old focused item
+ pItem->SetFocus( sal_False );
+ nFocusCount++;
+ }
+ if ( nItemId == nHighlightItemId )
+ {
+ // set the new focused item
+ pItem->SetFocus( sal_True );
+ nFocusCount++;
+ }
+ }
+ // both items changed?
+ if ( nFocusCount > 1 )
+ break;
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::ReleaseFocus_Impl( sal_Int32 _nPos )
+{
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox ) // #107124#, do not check for focus because this message is also handled in losefocus
+ {
+ ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.find( _nPos );
+ if ( aIter != m_aAccessibleChildren.end() && aIter->second.is() )
+ {
+ VCLXAccessibleToolBoxItem* pItem =
+ static_cast< VCLXAccessibleToolBoxItem* >( aIter->second.get() );
+ if ( pItem->HasFocus() )
+ pItem->SetFocus( sal_False );
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::UpdateChecked_Impl( sal_Int32 )
+{
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ for ( ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.begin();
+ aIter != m_aAccessibleChildren.end(); ++aIter )
+ {
+ USHORT nItemId = pToolBox->GetItemId( (USHORT)aIter->first );
+
+ VCLXAccessibleToolBoxItem* pItem =
+ static_cast< VCLXAccessibleToolBoxItem* >( aIter->second.get() );
+ pItem->SetChecked( pToolBox->IsItemChecked( nItemId ) );
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::UpdateIndeterminate_Impl( sal_Int32 _nPos )
+{
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ USHORT nItemId = pToolBox->GetItemId( (USHORT)_nPos );
+
+ ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.find( _nPos );
+ if ( aIter != m_aAccessibleChildren.end() && aIter->second.is() )
+ {
+ VCLXAccessibleToolBoxItem* pItem =
+ static_cast< VCLXAccessibleToolBoxItem* >( aIter->second.get() );
+ if ( pItem )
+ pItem->SetIndeterminate( pToolBox->GetItemState( nItemId ) == STATE_DONTKNOW );
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::implReleaseToolboxItem( ToolBoxItemsMap::iterator& _rMapPos,
+ bool _bNotifyRemoval, bool _bDispose )
+{
+ Reference< XAccessible > xItemAcc( _rMapPos->second );
+ if ( !xItemAcc.is() )
+ return;
+
+ if ( _bNotifyRemoval )
+ {
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, makeAny( xItemAcc ), Any() );
+ }
+
+ OToolBoxWindowItem* pWindowItem = NULL;
+ if ( !OToolBoxWindowItem::isWindowItem( xItemAcc, &pWindowItem ) )
+ {
+ static_cast< VCLXAccessibleToolBoxItem* >( xItemAcc.get() )->ReleaseToolBox();
+ if ( _bDispose )
+ ::comphelper::disposeComponent( xItemAcc );
+ }
+ else
+ {
+ if ( _bDispose )
+ {
+ if ( pWindowItem )
+ {
+ Reference< XAccessibleContext > xContext( pWindowItem->getContextNoCreate() );
+ ::comphelper::disposeComponent( xContext );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::UpdateItem_Impl( sal_Int32 _nPos, sal_Bool _bItemAdded )
+{
+ if ( _nPos < sal_Int32( m_aAccessibleChildren.size() ) )
+ {
+ UpdateAllItems_Impl();
+ return;
+ }
+
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ if ( !_bItemAdded )
+ { // the item was removed
+ // -> destroy the old item
+ ToolBoxItemsMap::iterator aItemPos = m_aAccessibleChildren.find( _nPos );
+ if ( m_aAccessibleChildren.end() != aItemPos )
+ {
+ implReleaseToolboxItem( aItemPos, true, true );
+ m_aAccessibleChildren.erase( aItemPos );
+ }
+ }
+
+ // adjust the "index-in-parent"s
+ ToolBoxItemsMap::iterator aIndexAdjust = m_aAccessibleChildren.upper_bound( _nPos );
+ while ( m_aAccessibleChildren.end() != aIndexAdjust )
+ {
+ Reference< XAccessible > xItemAcc( aIndexAdjust->second );
+
+ OToolBoxWindowItem* pWindowItem = NULL;
+ if ( !OToolBoxWindowItem::isWindowItem( xItemAcc, &pWindowItem ) )
+ {
+ VCLXAccessibleToolBoxItem* pItem = static_cast< VCLXAccessibleToolBoxItem* >( xItemAcc.get() );
+ if ( pItem )
+ {
+ sal_Int32 nIndex = pItem->getIndexInParent( );
+ nIndex += _bItemAdded ? +1 : -1;
+ pItem->setIndexInParent( nIndex );
+ }
+ }
+ else
+ {
+ if ( pWindowItem )
+ {
+ sal_Int32 nIndex = pWindowItem->getIndexInParent( );
+ nIndex += _bItemAdded ? +1 : -1;
+ pWindowItem->setIndexInParent( nIndex );
+ }
+ }
+
+ ++aIndexAdjust;
+ }
+
+ if ( _bItemAdded )
+ {
+ // TODO: we should make this dependent on the existence of event listeners
+ // with the current implementation, we always create accessible object
+ Any aNewChild = makeAny( getAccessibleChild( (sal_Int32)_nPos ) );
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, Any(), aNewChild );
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::UpdateAllItems_Impl()
+{
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ // deregister the old items
+ for ( ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.begin();
+ aIter != m_aAccessibleChildren.end(); ++aIter )
+ {
+ implReleaseToolboxItem( aIter, true, true );
+ }
+ m_aAccessibleChildren.clear();
+
+ // register the new items
+ USHORT i, nCount = pToolBox->GetItemCount();
+ for ( i = 0; i < nCount; ++i )
+ {
+ Any aNewValue;
+ aNewValue <<= getAccessibleChild( (sal_Int32)i );;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, Any(), aNewValue );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void VCLXAccessibleToolBox::UpdateCustomPopupItemp_Impl( Window* pWindow, bool bOpen )
+{
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if( pWindow && pToolBox )
+ {
+ Reference< XAccessible > xChild( pWindow->GetAccessible() );
+ if( xChild.is() )
+ {
+ Reference< XAccessible > xChildItem( getAccessibleChild( static_cast< sal_Int32 >( pToolBox->GetItemPos( pToolBox->GetDownItemId() ) ) ) );
+ VCLXAccessibleToolBoxItem* pItem = static_cast< VCLXAccessibleToolBoxItem* >( xChildItem.get() );
+
+ pItem->SetChild( xChild );
+ pItem->NotifyChildEvent( xChild, bOpen );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::UpdateItemName_Impl( sal_Int32 _nPos )
+{
+ VCLXAccessibleToolBoxItem* pItem = GetItem_Impl( _nPos, false );
+ if ( pItem )
+ pItem->NameChanged();
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::UpdateItemEnabled_Impl( sal_Int32 _nPos )
+{
+ VCLXAccessibleToolBoxItem* pItem = GetItem_Impl( _nPos, false );
+ if ( pItem )
+ pItem->ToggleEnableState();
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::HandleSubToolBarEvent( const VclWindowEvent& rVclWindowEvent, bool _bShow )
+{
+ Window* pChildWindow = (Window *) rVclWindowEvent.GetData();
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pChildWindow
+ && pToolBox
+ && pToolBox == pChildWindow->GetParent()
+ && pChildWindow->GetType() == WINDOW_TOOLBOX )
+ {
+ sal_Int32 nIndex = pToolBox->GetItemPos( pToolBox->GetCurItemId() );
+ Reference< XAccessible > xItem = getAccessibleChild( nIndex );
+ if ( xItem.is() )
+ {
+ Reference< XAccessible > xChild = pChildWindow->GetAccessible();
+ VCLXAccessibleToolBoxItem* pItem =
+ static_cast< VCLXAccessibleToolBoxItem* >( xItem.get() );
+ pItem->SetChild( xChild );
+ pItem->NotifyChildEvent( xChild, _bShow );
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::ReleaseSubToolBox( ToolBox* _pSubToolBox )
+{
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ sal_Int32 nIndex = pToolBox->GetItemPos( pToolBox->GetCurItemId() );
+ Reference< XAccessible > xItem = getAccessibleChild( nIndex );
+ if ( xItem.is() )
+ {
+ Reference< XAccessible > xChild = _pSubToolBox->GetAccessible();
+ VCLXAccessibleToolBoxItem* pItem =
+ static_cast< VCLXAccessibleToolBoxItem* >( xItem.get() );
+ if ( pItem->GetChild() == xChild )
+ {
+ pItem->SetChild( Reference< XAccessible >() );
+ pItem->NotifyChildEvent( xChild, false );
+ }
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
+
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ if ( pToolBox->IsHorizontal() )
+ rStateSet.AddState( AccessibleStateType::HORIZONTAL );
+ else
+ rStateSet.AddState( AccessibleStateType::VERTICAL );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ // to prevent an early release of the toolbox (VCLEVENT_OBJECT_DYING)
+ Reference< XAccessibleContext > xTemp = this;
+
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_TOOLBOX_CLICK:
+ {
+ if ( rVclWindowEvent.GetData() )
+ {
+ UpdateChecked_Impl( (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData() );
+ UpdateIndeterminate_Impl( (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData() );
+ }
+ break;
+ }
+ case VCLEVENT_TOOLBOX_DOUBLECLICK:
+ case VCLEVENT_TOOLBOX_ACTIVATE:
+ case VCLEVENT_TOOLBOX_DEACTIVATE:
+ case VCLEVENT_TOOLBOX_SELECT:
+ break;
+
+ case VCLEVENT_TOOLBOX_HIGHLIGHT:
+ UpdateFocus_Impl();
+ break;
+
+ case VCLEVENT_TOOLBOX_HIGHLIGHTOFF:
+ ReleaseFocus_Impl( (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData() );
+ break;
+
+ case VCLEVENT_TOOLBOX_ITEMADDED :
+// UpdateItem_Impl( (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData(), VCLEVENT_TOOLBOX_ITEMADDED == rVclWindowEvent.GetId() );
+ UpdateItem_Impl( (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData(), sal_True );
+ break;
+
+ case VCLEVENT_TOOLBOX_ITEMREMOVED :
+ case VCLEVENT_TOOLBOX_ALLITEMSCHANGED :
+ {
+ UpdateAllItems_Impl();
+ break;
+ }
+
+ case VCLEVENT_TOOLBOX_ITEMWINDOWCHANGED:
+ {
+ sal_Int32 nPos = (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData();
+ ToolBoxItemsMap::iterator aAccessiblePos( m_aAccessibleChildren.find( nPos ) );
+ if ( m_aAccessibleChildren.end() != aAccessiblePos )
+ {
+ implReleaseToolboxItem( aAccessiblePos, false, true );
+ m_aAccessibleChildren.erase (aAccessiblePos);
+ }
+
+ Any aNewValue;
+ aNewValue <<= getAccessibleChild(nPos);
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, Any(), aNewValue );
+ break;
+ }
+ case VCLEVENT_TOOLBOX_ITEMTEXTCHANGED :
+ UpdateItemName_Impl( (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData() );
+ break;
+
+ case VCLEVENT_TOOLBOX_ITEMENABLED :
+ case VCLEVENT_TOOLBOX_ITEMDISABLED :
+ {
+ UpdateItemEnabled_Impl( (sal_Int32)(sal_IntPtr)rVclWindowEvent.GetData() );
+ break;
+ }
+
+ case VCLEVENT_DROPDOWN_OPEN:
+ case VCLEVENT_DROPDOWN_CLOSE:
+ {
+ UpdateCustomPopupItemp_Impl( static_cast< Window* >( rVclWindowEvent.GetData() ), rVclWindowEvent.GetId() == VCLEVENT_DROPDOWN_OPEN );
+ break;
+ }
+
+ case VCLEVENT_OBJECT_DYING :
+ {
+ // if this toolbox is a subtoolbox, we have to relese it from its parent
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox && pToolBox->GetParent() &&
+ pToolBox->GetParent()->GetType() == WINDOW_TOOLBOX )
+ {
+ VCLXAccessibleToolBox* pParent = static_cast< VCLXAccessibleToolBox* >(
+ pToolBox->GetParent()->GetAccessible()->getAccessibleContext().get() );
+ if ( pParent )
+ pParent->ReleaseSubToolBox( pToolBox );
+ }
+
+ // dispose all items
+ for ( ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.begin();
+ aIter != m_aAccessibleChildren.end(); ++aIter )
+ {
+ implReleaseToolboxItem( aIter, false, true );
+ }
+ m_aAccessibleChildren.clear();
+
+ //!!! no break to call base class
+ }
+
+ default:
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_SHOW: // send create on show for direct accessible children
+ {
+ Reference< XAccessible > xReturn = GetItemWindowAccessible(rVclWindowEvent);
+ if ( xReturn.is() )
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, Any(), makeAny(xReturn) );
+ else
+ HandleSubToolBarEvent( rVclWindowEvent, true );
+ }
+ break;
+
+ default:
+ VCLXAccessibleComponent::ProcessWindowChildEvent( rVclWindowEvent );
+
+ }
+}
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleToolBox, VCLXAccessibleComponent, VCLXAccessibleToolBox_BASE )
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleToolBox, VCLXAccessibleComponent, VCLXAccessibleToolBox_BASE )
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleToolBox::disposing()
+{
+ VCLXAccessibleComponent::disposing();
+
+ // release the items
+ for ( ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.begin();
+ aIter != m_aAccessibleChildren.end(); ++aIter )
+ {
+ implReleaseToolboxItem( aIter, false, true );
+ }
+ m_aAccessibleChildren.clear();
+}
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+::rtl::OUString VCLXAccessibleToolBox::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleToolBox" );
+}
+// -----------------------------------------------------------------------------
+Sequence< ::rtl::OUString > VCLXAccessibleToolBox::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames = VCLXAccessibleComponent::getSupportedServiceNames();
+ sal_Int32 nLength = aNames.getLength();
+ aNames.realloc( nLength + 1 );
+ aNames[nLength] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleToolBox" );
+ return aNames;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleToolBox::getAccessibleChildCount( ) throw (RuntimeException)
+{
+ comphelper::OExternalLockGuard aGuard( this );
+
+ sal_Int32 nCount = 0;
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ nCount = pToolBox->GetItemCount();
+
+ return nCount;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleToolBox::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ comphelper::OExternalLockGuard aGuard( this );
+
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ Reference< XAccessible > xChild;
+ // search for the child
+ ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.find(i);
+ if ( m_aAccessibleChildren.end() == aIter )
+ {
+ USHORT nItemId = pToolBox->GetItemId( (USHORT)i );
+ USHORT nHighlightItemId = pToolBox->GetHighlightItemId();
+ Window* pItemWindow = pToolBox->GetItemWindow( nItemId );
+ // not found -> create a new child
+ VCLXAccessibleToolBoxItem* pChild = new VCLXAccessibleToolBoxItem( pToolBox, i );
+ Reference< XAccessible> xParent = pChild;
+ if ( pItemWindow )
+ {
+ xChild = new OToolBoxWindowItem(0,::comphelper::getProcessServiceFactory(),pItemWindow->GetAccessible(),xParent);
+ pItemWindow->SetAccessible(xChild);
+ pChild->SetChild( xChild );
+ }
+ xChild = pChild;
+ if ( nHighlightItemId > 0 && nItemId == nHighlightItemId )
+ pChild->SetFocus( sal_True );
+ if ( pToolBox->IsItemChecked( nItemId ) )
+ pChild->SetChecked( sal_True );
+ if ( pToolBox->GetItemState( nItemId ) == STATE_DONTKNOW )
+ pChild->SetIndeterminate( true );
+ m_aAccessibleChildren.insert( ToolBoxItemsMap::value_type( i, xChild ) );
+ }
+ else
+ {
+ // found it
+ xChild = aIter->second;
+ }
+ return xChild;
+ }
+
+ return NULL;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleToolBox::getAccessibleAtPoint( const awt::Point& _rPoint ) throw (RuntimeException)
+{
+ comphelper::OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xAccessible;
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pToolBox )
+ {
+ USHORT nItemPos = pToolBox->GetItemPos( VCLPoint( _rPoint ) );
+ if ( nItemPos != TOOLBOX_ITEM_NOTFOUND )
+ xAccessible = getAccessibleChild( nItemPos );
+ }
+
+ return xAccessible;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > VCLXAccessibleToolBox::GetItemWindowAccessible( const VclWindowEvent& rVclWindowEvent )
+{
+ Reference< XAccessible > xReturn;
+ Window* pChildWindow = (Window *) rVclWindowEvent.GetData();
+ ToolBox* pToolBox = static_cast< ToolBox* >( GetWindow() );
+ if ( pChildWindow && pToolBox )
+ {
+ USHORT nCount = pToolBox->GetItemCount();
+ for (USHORT i = 0 ; i < nCount && !xReturn.is() ; ++i)
+ {
+ USHORT nItemId = pToolBox->GetItemId( i );
+ Window* pItemWindow = pToolBox->GetItemWindow( nItemId );
+ if ( pItemWindow == pChildWindow )
+ xReturn = getAccessibleChild(i);
+ }
+ }
+ return xReturn;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > VCLXAccessibleToolBox::GetChildAccessible( const VclWindowEvent& rVclWindowEvent )
+{
+ Reference< XAccessible > xReturn = GetItemWindowAccessible(rVclWindowEvent);
+
+ if ( !xReturn.is() )
+ xReturn = VCLXAccessibleComponent::GetChildAccessible(rVclWindowEvent);
+ return xReturn;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleSelection
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+ ToolBox * pToolBox = static_cast < ToolBox * > ( GetWindow() );
+ USHORT nPos = static_cast < USHORT > (nChildIndex);
+ pToolBox->ChangeHighlight( nPos );
+}
+// -----------------------------------------------------------------------------
+sal_Bool VCLXAccessibleToolBox::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+ ToolBox * pToolBox = static_cast < ToolBox * > ( GetWindow() );
+ USHORT nPos = static_cast < USHORT > (nChildIndex);
+ if ( pToolBox != NULL && pToolBox->GetHighlightItemId() == pToolBox->GetItemId( nPos ) )
+ return sal_True;
+ else
+ return sal_False;
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::clearAccessibleSelection( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+ ToolBox * pToolBox = static_cast < ToolBox * > ( GetWindow() );
+ pToolBox -> LoseFocus();
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::selectAllAccessibleChildren( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+ // intentionally empty. makes no sense for a toolbox
+}
+// -----------------------------------------------------------------------------
+sal_Int32 VCLXAccessibleToolBox::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+ sal_Int32 nRet = 0;
+ for ( sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; i++ )
+ {
+ if ( isAccessibleChildSelected( i ) )
+ {
+ nRet = 1;
+ break; // a toolbox can only have (n)one selected child
+ }
+ }
+ return nRet;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > VCLXAccessibleToolBox::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+ Reference< XAccessible > xChild;
+ for ( sal_Int32 i = 0, j = 0, nCount = getAccessibleChildCount(); i < nCount; i++ )
+ {
+ if ( isAccessibleChildSelected( i ) && ( j++ == nSelectedChildIndex ) )
+ {
+ xChild = getAccessibleChild( i );
+ break;
+ }
+ }
+ return xChild;
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBox::deselectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+ clearAccessibleSelection(); // a toolbox can only have (n)one selected child
+}
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/source/standard/vclxaccessibletoolboxitem.cxx b/accessibility/source/standard/vclxaccessibletoolboxitem.cxx
new file mode 100644
index 000000000000..05807cc4317d
--- /dev/null
+++ b/accessibility/source/standard/vclxaccessibletoolboxitem.cxx
@@ -0,0 +1,708 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_accessibility.hxx"
+#include <accessibility/standard/vclxaccessibletoolboxitem.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <accessibility/helper/accresmgr.hxx>
+#include <accessibility/helper/accessiblestrings.hrc>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/unohelp2.hxx>
+#include <vcl/help.hxx>
+#include <toolkit/awt/vclxwindow.hxx>
+#include <toolkit/helper/externallock.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <comphelper/sequence.hxx>
+
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+
+// class VCLXAccessibleToolBoxItem ------------------------------------------
+
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star;
+using namespace ::comphelper;
+
+DBG_NAME(VCLXAccessibleToolBoxItem)
+
+// -----------------------------------------------------------------------------
+// Ctor() and Dtor()
+// -----------------------------------------------------------------------------
+VCLXAccessibleToolBoxItem::VCLXAccessibleToolBoxItem( ToolBox* _pToolBox, sal_Int32 _nPos ) :
+
+ AccessibleTextHelper_BASE( new VCLExternalSolarLock() ),
+
+ m_pToolBox ( _pToolBox ),
+ m_nIndexInParent( _nPos ),
+ m_nRole ( AccessibleRole::PUSH_BUTTON ),
+ m_nItemId ( 0 ),
+ m_bHasFocus ( sal_False ),
+ m_bIsChecked ( sal_False ),
+ m_bIndeterminate( false )
+
+{
+ DBG_CTOR( VCLXAccessibleToolBoxItem, NULL );
+
+ m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock( ) );
+
+ DBG_ASSERT( m_pToolBox, "invalid toolbox" );
+ m_nItemId = m_pToolBox->GetItemId( (USHORT)m_nIndexInParent );
+ m_sOldName = GetText( true );
+ m_bIsChecked = m_pToolBox->IsItemChecked( m_nItemId );
+ m_bIndeterminate = ( m_pToolBox->GetItemState( m_nItemId ) == STATE_DONTKNOW );
+ ToolBoxItemType eType = m_pToolBox->GetItemType( (USHORT)m_nIndexInParent );
+ switch ( eType )
+ {
+ case TOOLBOXITEM_BUTTON :
+ {
+ ToolBoxItemBits nBits = m_pToolBox->GetItemBits( m_nItemId );
+ if (( nBits & TIB_DROPDOWN ) == TIB_DROPDOWN)
+ m_nRole = AccessibleRole::BUTTON_DROPDOWN;
+ else if (( ( nBits & TIB_CHECKABLE ) == TIB_CHECKABLE ) ||
+ ( ( nBits & TIB_AUTOCHECK ) == TIB_AUTOCHECK ) )
+ m_nRole = AccessibleRole::TOGGLE_BUTTON;
+ else if ( m_pToolBox->GetItemWindow( m_nItemId ) )
+ m_nRole = AccessibleRole::PANEL;
+ break;
+ }
+
+ case TOOLBOXITEM_SPACE :
+ m_nRole = AccessibleRole::FILLER;
+ break;
+
+ case TOOLBOXITEM_SEPARATOR :
+ case TOOLBOXITEM_BREAK :
+ m_nRole = AccessibleRole::SEPARATOR;
+ break;
+
+ default:
+ {
+ DBG_ERRORFILE( "unsupported toolbox itemtype" );
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+VCLXAccessibleToolBoxItem::~VCLXAccessibleToolBoxItem()
+{
+ DBG_DTOR( VCLXAccessibleToolBoxItem, NULL );
+
+ delete m_pExternalLock;
+ m_pExternalLock = NULL;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString VCLXAccessibleToolBoxItem::GetText( bool _bAsName )
+{
+ ::rtl::OUString sRet;
+ // no text for separators and spaces
+ if ( m_pToolBox && m_nItemId > 0 && ( _bAsName || m_pToolBox->GetButtonType() != BUTTON_SYMBOL ) )
+ {
+ sRet = m_pToolBox->GetItemText( m_nItemId );
+ }
+ return sRet;
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::SetFocus( sal_Bool _bFocus )
+{
+ if ( m_bHasFocus != _bFocus )
+ {
+ Any aOldValue;
+ Any aNewValue;
+ if ( m_bHasFocus )
+ aOldValue <<= AccessibleStateType::FOCUSED;
+ else
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ m_bHasFocus = _bFocus;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::SetChecked( sal_Bool _bCheck )
+{
+ if ( m_bIsChecked != _bCheck )
+ {
+ Any aOldValue;
+ Any aNewValue;
+ if ( m_bIsChecked )
+ aOldValue <<= AccessibleStateType::CHECKED;
+ else
+ aNewValue <<= AccessibleStateType::CHECKED;
+ m_bIsChecked = _bCheck;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::SetIndeterminate( bool _bIndeterminate )
+{
+ if ( m_bIndeterminate != _bIndeterminate )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bIndeterminate )
+ aOldValue <<= AccessibleStateType::INDETERMINATE;
+ else
+ aNewValue <<= AccessibleStateType::INDETERMINATE;
+ m_bIndeterminate = _bIndeterminate;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::NameChanged()
+{
+ ::rtl::OUString sNewName = implGetText();
+ if ( sNewName != m_sOldName )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= m_sOldName;
+ // save new name as old name for next change
+ m_sOldName = sNewName;
+ aNewValue <<= m_sOldName;
+ NotifyAccessibleEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue );
+ }
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::SetChild( const Reference< XAccessible >& _xChild )
+{
+ m_xChild = _xChild;
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::NotifyChildEvent( const Reference< XAccessible >& _xChild, bool _bShow )
+{
+ Any aOld = _bShow ? Any() : makeAny( _xChild );
+ Any aNew = _bShow ? makeAny( _xChild ) : Any();
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOld, aNew );
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::ToggleEnableState()
+{
+ Any aOldValue[2], aNewValue[2];
+ if ( m_pToolBox->IsItemEnabled( m_nItemId ) )
+ {
+ aNewValue[0] <<= AccessibleStateType::SENSITIVE;
+ aNewValue[1] <<= AccessibleStateType::ENABLED;
+ }
+ else
+ {
+ aOldValue[0] <<= AccessibleStateType::ENABLED;
+ aOldValue[1] <<= AccessibleStateType::SENSITIVE;
+ }
+
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[0], aNewValue[0] );
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[1], aNewValue[1] );
+}
+// -----------------------------------------------------------------------------
+awt::Rectangle SAL_CALL VCLXAccessibleToolBoxItem::implGetBounds( ) throw (RuntimeException)
+{
+ awt::Rectangle aRect;
+ if ( m_pToolBox )
+ aRect = AWTRectangle( m_pToolBox->GetItemPosRect( (USHORT)m_nIndexInParent ) );
+
+ return aRect;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString VCLXAccessibleToolBoxItem::implGetText()
+{
+ return GetText (true);
+}
+// -----------------------------------------------------------------------------
+Locale VCLXAccessibleToolBoxItem::implGetLocale()
+{
+ return Application::GetSettings().GetUILocale();
+}
+// -----------------------------------------------------------------------------
+void VCLXAccessibleToolBoxItem::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
+{
+ nStartIndex = 0;
+ nEndIndex = 0;
+}
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+IMPLEMENT_FORWARD_REFCOUNT( VCLXAccessibleToolBoxItem, AccessibleTextHelper_BASE )
+Any SAL_CALL VCLXAccessibleToolBoxItem::queryInterface( const Type& _rType ) throw (RuntimeException)
+{
+ // #i33611# - toolbox buttons without text don't support XAccessibleText
+ if ( _rType == ::getCppuType( ( const Reference< XAccessibleText >* ) 0 )
+ && ( !m_pToolBox || m_pToolBox->GetButtonType() == BUTTON_SYMBOL ) )
+ return Any();
+
+ ::com::sun::star::uno::Any aReturn = AccessibleTextHelper_BASE::queryInterface( _rType );
+ if ( !aReturn.hasValue() )
+ aReturn = VCLXAccessibleToolBoxItem_BASE::queryInterface( _rType );
+ return aReturn;
+}
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleToolBoxItem, AccessibleTextHelper_BASE, VCLXAccessibleToolBoxItem_BASE )
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleToolBoxItem::disposing()
+{
+ AccessibleTextHelper_BASE::disposing();
+ m_pToolBox = NULL;
+}
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+::rtl::OUString VCLXAccessibleToolBoxItem::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.toolkit.AccessibleToolBoxItem" );
+}
+// -----------------------------------------------------------------------------
+sal_Bool VCLXAccessibleToolBoxItem::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+// -----------------------------------------------------------------------------
+Sequence< ::rtl::OUString > VCLXAccessibleToolBoxItem::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(4);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleContext" );
+ aNames[1] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleComponent" );
+ aNames[2] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleExtendedComponent" );
+ aNames[3] = ::rtl::OUString::createFromAscii( "com.sun.star.accessibility.AccessibleToolBoxItem" );
+ return aNames;
+}
+// -----------------------------------------------------------------------------
+// XAccessible
+// -----------------------------------------------------------------------------
+Reference< XAccessibleContext > SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleContext( ) throw (RuntimeException)
+{
+ return this;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleChildCount( ) throw (RuntimeException)
+{
+ OContextEntryGuard aGuard( this );
+
+ return m_xChild.is() ? 1 : 0;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleChild( sal_Int32 i ) throw (RuntimeException, com::sun::star::lang::IndexOutOfBoundsException)
+{
+ OContextEntryGuard aGuard( this );
+
+ // no child -> so index is out of bounds
+ if ( !m_xChild.is() || i != 0 )
+ throw IndexOutOfBoundsException();
+
+ return m_xChild;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleParent( ) throw (RuntimeException)
+{
+ OContextEntryGuard aGuard( this );
+
+ return m_pToolBox->GetAccessible();
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OContextEntryGuard aGuard( this );
+
+ return m_nIndexInParent;
+}
+// -----------------------------------------------------------------------------
+sal_Int16 SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleRole( ) throw (RuntimeException)
+{
+ OContextEntryGuard aGuard( this );
+
+ return m_nRole;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleDescription( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pToolBox )
+ sDescription = m_pToolBox->GetHelpText( m_nItemId );
+
+ return sDescription;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ // entry text == accessible name
+ return GetText( true );
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessibleRelationSet > SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ OContextEntryGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessibleStateSet > SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleStateSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xStateSet = pStateSetHelper;
+
+ if ( m_pToolBox && !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE );
+ if ( m_bIsChecked )
+ pStateSetHelper->AddState( AccessibleStateType::CHECKED );
+ if ( m_bIndeterminate )
+ pStateSetHelper->AddState( AccessibleStateType::INDETERMINATE );
+ if ( m_pToolBox->IsItemEnabled( m_nItemId ) )
+ {
+ pStateSetHelper->AddState( AccessibleStateType::ENABLED );
+ pStateSetHelper->AddState( AccessibleStateType::SENSITIVE );
+ }
+ if ( m_pToolBox->IsItemVisible( m_nItemId ) )
+ pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
+ if ( m_pToolBox->IsItemReallyVisible( m_nItemId ) )
+ pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+ if ( m_bHasFocus )
+ pStateSetHelper->AddState( AccessibleStateType::FOCUSED );
+ }
+ else
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+
+ return xStateSet;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleText
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleToolBoxItem::getCaretPosition() throw (RuntimeException)
+{
+ return -1;
+}
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleToolBoxItem::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+// -----------------------------------------------------------------------------
+Sequence< PropertyValue > SAL_CALL VCLXAccessibleToolBoxItem::getCharacterAttributes( sal_Int32 nIndex, const Sequence< ::rtl::OUString >& ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return Sequence< PropertyValue >();
+}
+// -----------------------------------------------------------------------------
+awt::Rectangle SAL_CALL VCLXAccessibleToolBoxItem::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sText( implGetText() );
+
+ if ( !implIsValidIndex( nIndex, sText.getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( m_pToolBox && m_pToolBox->GetButtonType() != BUTTON_SYMBOL ) // symbol buttons have no character bounds
+ {
+ Rectangle aCharRect = m_pToolBox->GetCharacterBounds( m_nItemId, nIndex );
+ Rectangle aItemRect = m_pToolBox->GetItemRect( m_nItemId );
+ aCharRect.Move( -aItemRect.Left(), -aItemRect.Top() );
+ aBounds = AWTRectangle( aCharRect );
+ }
+
+ return aBounds;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleToolBoxItem::getIndexAtPoint( const awt::Point& aPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndex = -1;
+ if ( m_pToolBox && m_pToolBox->GetButtonType() != BUTTON_SYMBOL ) // symbol buttons have no character bounds
+ {
+ sal_uInt16 nItemId = 0;
+ Rectangle aItemRect = m_pToolBox->GetItemRect( m_nItemId );
+ Point aPnt( VCLPoint( aPoint ) );
+ aPnt += aItemRect.TopLeft();
+ sal_Int32 nIdx = m_pToolBox->GetIndexForPoint( aPnt, nItemId );
+ if ( nIdx != -1 && nItemId == m_nItemId )
+ nIndex = nIdx;
+ }
+
+ return nIndex;
+}
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleToolBoxItem::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ return sal_False;
+}
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL VCLXAccessibleToolBoxItem::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) )
+ throw IndexOutOfBoundsException();
+
+ sal_Bool bReturn = sal_False;
+
+ if ( m_pToolBox )
+ {
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = m_pToolBox->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ ::rtl::OUString sText( getTextRange( nStartIndex, nEndIndex ) );
+
+ ::vcl::unohelper::TextDataObject* pDataObj = new ::vcl::unohelper::TextDataObject( sText );
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ xClipboard->setContents( pDataObj, NULL );
+
+ Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( xClipboard, uno::UNO_QUERY );
+ if( xFlushableClipboard.is() )
+ xFlushableClipboard->flushClipboard();
+
+ Application::AcquireSolarMutex( nRef );
+
+ bReturn = sal_True;
+ }
+ }
+
+ return bReturn;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+Reference< XAccessible > SAL_CALL VCLXAccessibleToolBoxItem::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
+{
+ return Reference< XAccessible >();
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL VCLXAccessibleToolBoxItem::grabFocus( ) throw (RuntimeException)
+{
+ Reference< XAccessible > xParent(getAccessibleParent());
+
+ if( xParent.is() )
+ {
+ Reference< XAccessibleSelection > rxAccessibleSelection(xParent->getAccessibleContext(), UNO_QUERY);
+
+ if ( rxAccessibleSelection.is() )
+ {
+ rxAccessibleSelection -> selectAccessibleChild ( getAccessibleIndexInParent() );
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleToolBoxItem::getForeground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ if ( m_pToolBox )
+ nColor = m_pToolBox->GetControlForeground().GetColor();
+
+ return nColor;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 SAL_CALL VCLXAccessibleToolBoxItem::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ if ( m_pToolBox )
+ nColor = m_pToolBox->GetControlBackground().GetColor();
+
+ return nColor;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+Reference< awt::XFont > SAL_CALL VCLXAccessibleToolBoxItem::getFont( ) throw (RuntimeException)
+{
+ return uno::Reference< awt::XFont >();
+}
+// -----------------------------------------------------------------------------
+awt::FontDescriptor SAL_CALL VCLXAccessibleToolBoxItem::getFontMetrics( const Reference< awt::XFont >& xFont ) throw (RuntimeException)
+{
+ return xFont->getFontDescriptor();
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleToolBoxItem::getTitledBorderText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sRet;
+ if ( m_pToolBox )
+ sRet = m_pToolBox->GetItemText( m_nItemId );
+
+ return sRet;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL VCLXAccessibleToolBoxItem::getToolTipText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sRet;
+ if ( m_pToolBox )
+ {
+ if ( Help::IsExtHelpEnabled() )
+ sRet = m_pToolBox->GetHelpText( m_nItemId );
+ else
+ sRet = m_pToolBox->GetQuickHelpText( m_nItemId );
+ if ( !sRet.getLength() )
+ // no help text set, so use item text
+ sRet = m_pToolBox->GetItemText( m_nItemId );
+ }
+ return sRet;
+}
+// -----------------------------------------------------------------------------
+// XAccessibleAction
+// -----------------------------------------------------------------------------
+sal_Int32 VCLXAccessibleToolBoxItem::getAccessibleActionCount( ) throw (RuntimeException)
+{
+ // only one action -> "Click"
+ return 1;
+}
+// -----------------------------------------------------------------------------
+sal_Bool VCLXAccessibleToolBoxItem::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ if ( m_pToolBox )
+ m_pToolBox->TriggerItem( m_nItemId );
+
+ return sal_True;
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString VCLXAccessibleToolBoxItem::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+}
+// -----------------------------------------------------------------------------
+Reference< XAccessibleKeyBinding > VCLXAccessibleToolBoxItem::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OContextEntryGuard aGuard( this );
+
+ if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessibleKeyBinding >();
+}
+// -----------------------------------------------------------------------------
+// XAccessibleValue
+// -----------------------------------------------------------------------------
+Any VCLXAccessibleToolBoxItem::getCurrentValue( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Any aValue;
+ if ( m_pToolBox )
+ aValue <<= (sal_Int32)m_pToolBox->IsItemChecked( m_nItemId );
+
+ return aValue;
+}
+// -----------------------------------------------------------------------------
+sal_Bool VCLXAccessibleToolBoxItem::setCurrentValue( const Any& aNumber ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Bool bReturn = sal_False;
+
+ if ( m_pToolBox )
+ {
+ sal_Int32 nValue = 0;
+ OSL_VERIFY( aNumber >>= nValue );
+
+ if ( nValue < 0 )
+ nValue = 0;
+ else if ( nValue > 1 )
+ nValue = 1;
+
+ m_pToolBox->CheckItem( m_nItemId, (BOOL) nValue );
+ bReturn = sal_True;
+ }
+
+ return bReturn;
+}
+// -----------------------------------------------------------------------------
+Any VCLXAccessibleToolBoxItem::getMaximumValue( ) throw (RuntimeException)
+{
+ return makeAny((sal_Int32)1);
+}
+// -----------------------------------------------------------------------------
+Any VCLXAccessibleToolBoxItem::getMinimumValue( ) throw (RuntimeException)
+{
+ return makeAny((sal_Int32)0);
+}
+// -----------------------------------------------------------------------------
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/accessibility/util/acc.map b/accessibility/util/acc.map
new file mode 100644
index 000000000000..b9e53f414df5
--- /dev/null
+++ b/accessibility/util/acc.map
@@ -0,0 +1,7 @@
+UDK_3_0_0 {
+ global:
+ getStandardAccessibleFactory;
+ getSvtAccessibilityComponentFactory;
+ local:
+ *;
+};
diff --git a/accessibility/util/makefile.mk b/accessibility/util/makefile.mk
new file mode 100644
index 000000000000..42a6061fa2c9
--- /dev/null
+++ b/accessibility/util/makefile.mk
@@ -0,0 +1,86 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..
+PRJNAME=accessibility
+TARGET=acc
+USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+#.INCLUDE : svpre.mk
+#.INCLUDE : settings.mk
+#.INCLUDE : sv.mk
+
+LDUMP=ldump2.exe
+
+# --- Library -----------------------------------
+# --- acc ---------------------------------------
+LIB1TARGET=$(SLB)$/$(PRJNAME).lib
+LIB1FILES=\
+ $(SLB)$/standard.lib \
+ $(SLB)$/extended.lib \
+ $(SLB)$/helper.lib
+
+SHL1TARGET=$(TARGET)$(DLLPOSTFIX)
+
+SHL1STDLIBS= \
+ $(VCLLIB) \
+ $(COMPHELPERLIB) \
+ $(SOTLIB) \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(UNOTOOLSLIB) \
+ $(TKLIB) \
+ $(TOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(SALLIB)
+
+SHL1LIBS=$(LIB1TARGET)
+SHL1DEPN=$(LIB1TARGET) \
+ makefile.mk
+
+
+SHL1VERSIONMAP= $(TARGET).map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME= $(SHL1TARGET)
+
+# === .res file ==========================================================
+
+RES1FILELIST=\
+ $(SRS)$/helper.srs
+
+RESLIB1NAME=$(TARGET)
+RESLIB1SRSFILES=$(RES1FILELIST)
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/workben/TODO b/accessibility/workben/TODO
new file mode 100644
index 000000000000..6fdfd5cb81aa
--- /dev/null
+++ b/accessibility/workben/TODO
@@ -0,0 +1,13 @@
+This is a unsorted list of TODO's and idea regarding the Accessibility Workbench
+
+* increase repaint performance
+* fix paint problems in ObjectViewContainer for e.g. File menu
+* change package structure to be flat (apps don't need deep package names)
+* add ant build script(s)
+* evaluate TreeTable as enhanced overview
+* add error panel and a bunch of consistency checks
+* add focus tracking mode
+* evaluate drawing transparent frames at screen coordinates of an object
+* enhance text view (colors)
+* add table view
+* more generic view loading (Class.forName())
diff --git a/accessibility/workben/makefile b/accessibility/workben/makefile
new file mode 100644
index 000000000000..4bd7c05e44dd
--- /dev/null
+++ b/accessibility/workben/makefile
@@ -0,0 +1,9 @@
+all:
+ cd source/org/openoffice/accessibility ; $(MAKE) all
+
+ROOT=source
+SUBDIRS=source/org/openoffice/accessibility
+include source/makefile.in
+
+run: all
+ $(JAVA) -classpath $(CLASSPATH) org.openoffice.accessibility.awb.AccessibilityWorkBench
diff --git a/accessibility/workben/makefile.in b/accessibility/workben/makefile.in
new file mode 100644
index 000000000000..d81df5fb7363
--- /dev/null
+++ b/accessibility/workben/makefile.in
@@ -0,0 +1,31 @@
+PRJ=$(ROOT)/..
+SETTINGS=$(OO_SDK_HOME)/settings
+include $(SETTINGS)/settings.mk
+include $(SETTINGS)/std.mk
+include $(SETTINGS)/dk.mk
+
+OUT_COMP_JAVA = $(OUT_CLASS)/$(patsubst .,/,$(PACKAGE))
+JAVAC=$(JAVA_HOME)/bin/javac
+JAVA=$(JAVA_HOME)/bin/java
+CLASS_FILES = $(patsubst %.java, %.class, $(JAVAFILES))
+CLASSPATH = $(subst $(EMPTYSTRING) $(PATH_SEPARATOR),$(PATH_SEPARATOR),$(OFFICE_CLASSES_DIR)/jurt.jar\
+ $(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/unoil.jar\
+ $(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/ridl.jar\
+ $(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/juh.jar\
+ $(PATH_SEPARATOR)$(OUT_COMP_JAVA)\
+ $(PATH_SEPARATOR).\
+ $(PATH_SEPARATOR)$(ROOT)\
+ )
+
+subdirs:
+ $(foreach dir,$(SUBDIRS), cd $(dir);$(MAKE);cd ..;)
+
+clean:
+ -rm *.class *.jar
+ $(foreach dir,$(SUBDIRS), cd $(dir);$(MAKE) clean ; cd ..;)
+
+
+%.class : %.java
+ $(JAVAC) -classpath $(CLASSPATH) $<
+
+.PHONY: all package clean subdirs
diff --git a/accessibility/workben/makefile.mk b/accessibility/workben/makefile.mk
new file mode 100644
index 000000000000..7f19d8936757
--- /dev/null
+++ b/accessibility/workben/makefile.mk
@@ -0,0 +1,39 @@
+# copied from settings.mk
+SOLARBINDIR=$(SOLARVERSION)$/$(INPATH)$/bin$(UPDMINOREXT)
+
+# Please modify the following lines to match your environment:
+# If you use the run: target at the end of the file, then adapt pipe name
+PIPE_NAME = $(USER)
+
+# The following variables probably don't need to be changed.
+JAVA = java
+# The JAR_PATH points to the jar files of your local office installation.
+JAR_PATH = $(SOLARBINDIR)$/
+
+
+# The rest of this makefile should not need to be touched.
+
+JAR_FILES = \
+ unoil.jar \
+ ridl.jar \
+ jurt.jar \
+ juh.jar \
+ java_uno.jar
+
+
+JAVA_CLASSPATHS := \
+ ..$/$(INPATH)$/class \
+ $(foreach,i,$(JAR_FILES) $(JAR_PATH)$i) \
+ $(CLASSPATH)
+
+CLASSPATH !:=$(JAVA_CLASSPATHS:t$(PATH_SEPERATOR))
+
+all:
+ build
+
+# Example of how to run the work bench.
+run:
+ +$(JAVA) -classpath "$(CLASSPATH)" org/openoffice/accessibility/awb/AccessibilityWorkBench -p $(PIPE_NAME)
+
+runjar:
+ +$(JAVA) -classpath "$(CLASSPATH)" -jar AccessibilityWorkBench.jar -p $(PIPE_NAME)
diff --git a/accessibility/workben/org/openoffice/accessibility/Makefile b/accessibility/workben/org/openoffice/accessibility/Makefile
new file mode 100644
index 000000000000..a6db6a05ab4b
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/Makefile
@@ -0,0 +1,6 @@
+all : subdirs
+
+ROOT=../../../
+SUBDIRS=misc awb
+include $(ROOT)/makefile.in
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/AccessibilityWorkBench.java b/accessibility/workben/org/openoffice/accessibility/awb/AccessibilityWorkBench.java
new file mode 100644
index 000000000000..6e8e45bc4e82
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/AccessibilityWorkBench.java
@@ -0,0 +1,702 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb;
+
+import java.awt.Cursor;
+import java.awt.GridBagConstraints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeExpansionListener;
+import javax.swing.event.TreeWillExpandListener;
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.TreePath;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.awt.XExtendedToolkit;
+import com.sun.star.frame.XFrame;
+import com.sun.star.frame.XTerminateListener;
+import com.sun.star.lang.EventObject;
+import com.sun.star.uno.UnoRuntime;
+
+import org.openoffice.accessibility.misc.MessageArea;
+import org.openoffice.accessibility.misc.Options;
+import org.openoffice.accessibility.misc.OfficeConnection;
+import org.openoffice.accessibility.misc.SimpleOffice;
+import org.openoffice.accessibility.awb.canvas.Canvas;
+import org.openoffice.accessibility.awb.tree.AccessibilityTree;
+import org.openoffice.accessibility.awb.tree.AccessibilityModel;
+import org.openoffice.accessibility.awb.tree.DynamicAccessibilityModel;
+import org.openoffice.accessibility.awb.view.ObjectViewContainer;
+import org.openoffice.accessibility.awb.view.ObjectViewContainerWindow;
+
+
+
+/** This class manages the GUI of the work bench.
+ @see AccessibilityTreeModel
+ for the implementation of the tree view on the left side which also
+ manages the registration of accessibility listeners.
+ @see Canvas
+ for the graphical view of the accessible objects.
+*/
+public class AccessibilityWorkBench
+ extends JFrame
+ implements XTerminateListener,
+ ActionListener,
+ TreeSelectionListener
+{
+ public static final String msVersion = "v1.9";
+ public String msOptionsFileName = ".AWBrc";
+
+ public static void main (String args[])
+ {
+ String sPipeName = System.getenv( "USER" );
+
+ for (int i=0; i<args.length; i++)
+ {
+ if (args[i].equals ("-h") || args[i].equals ("--help") || args[i].equals ("-?"))
+ {
+ System.out.println ("usage: AccessibilityWorkBench <option>*");
+ System.out.println ("options:");
+ System.out.println (" -p <pipe-name> name of the pipe to use to connect to OpenOffice.org.");
+ System.out.println (" Defaults to $USER.");
+ System.exit (0);
+ }
+ else if (args[i].equals ("-p"))
+ {
+ sPipeName = args[++i];
+ }
+ }
+
+ saWorkBench = new AccessibilityWorkBench (sPipeName);
+ }
+
+
+
+
+ /** Return the one instance of the AccessibilityWorkBench
+ @return
+ Returns null when the AccessibilityWorkBench could not be
+ created successfully.
+ */
+ public static AccessibilityWorkBench Instance ()
+ {
+ return saWorkBench;
+ }
+
+
+
+ /** Create an accessibility work bench that listens at the specified
+ port to Office applications.
+ */
+ private AccessibilityWorkBench (String sPipeName)
+ {
+ mbInitialized = false;
+
+ OfficeConnection.SetPipeName (sPipeName);
+ Options.Instance().Load (msOptionsFileName);
+ Layout ();
+
+ MessageArea.println (System.getProperty ("os.name") + " / "
+ + System.getProperty ("os.arch") + " / "
+ + System.getProperty ("os.version"));
+ MessageArea.println ("Using pipe name " + sPipeName);
+
+ maTree.addTreeSelectionListener (this);
+
+ addWindowListener (new WindowAdapter ()
+ { public void windowClosing (WindowEvent e) {Quit();} }
+ );
+
+ OfficeConnection.Instance().AddConnectionListener (this);
+ Initialize ();
+ }
+
+
+
+
+ /** Create and arrange the widgets of the GUI.
+ */
+ public void Layout ()
+ {
+ setSize (new java.awt.Dimension (800,600));
+
+ JScrollPane aScrollPane;
+ GridBagConstraints constraints;
+
+ // Create new layout.
+ java.awt.GridBagLayout aLayout = new java.awt.GridBagLayout ();
+ getContentPane().setLayout (aLayout);
+
+ // Accessible Tree.
+ javax.swing.tree.TreeModel treeModel = new DynamicAccessibilityModel();
+ maTree = new AccessibilityTree(treeModel);
+ // Add the model as tree listeners to be able to populate/clear the
+ // child lists on demand.
+ maTree.addTreeExpansionListener((TreeExpansionListener) treeModel);
+ maTree.addTreeWillExpandListener((TreeWillExpandListener) treeModel);
+
+ JScrollPane aTreeScrollPane = new JScrollPane(
+ maTree,
+ JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+ JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+ aTreeScrollPane.setPreferredSize (new java.awt.Dimension (400,300));
+
+ // Object view shows details about the currently selected accessible
+ // object.
+ maObjectViewContainer = new ObjectViewContainer ();
+ JScrollPane aObjectViewContainerScrollPane = new JScrollPane(
+ maObjectViewContainer,
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ aObjectViewContainerScrollPane.setPreferredSize (
+ new java.awt.Dimension (400,300));
+ JButton aCornerButton = new JButton ("CreateNewViewWindow");
+ aCornerButton.addActionListener (this);
+ aObjectViewContainerScrollPane.setCorner (
+ JScrollPane.LOWER_RIGHT_CORNER,
+ aCornerButton);
+
+ // Split pane for tree view and object view.
+ JSplitPane aLeftViewSplitPane = new JSplitPane (
+ JSplitPane.VERTICAL_SPLIT,
+ aTreeScrollPane,
+ aObjectViewContainerScrollPane
+ );
+ aLeftViewSplitPane.setDividerLocation (300);
+ aLeftViewSplitPane.setContinuousLayout (true);
+
+ // Canvas.
+ maCanvas = new Canvas ();
+ maCanvas.SetTree (maTree);
+ JScrollPane aScrolledCanvas = new JScrollPane(maCanvas,
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ aScrolledCanvas.getViewport().setBackground (java.awt.Color.RED);
+ aScrolledCanvas.setPreferredSize (new java.awt.Dimension(600,400));
+
+ // Split pane for tree view and canvas.
+ JSplitPane aViewSplitPane = new JSplitPane (
+ JSplitPane.HORIZONTAL_SPLIT,
+ aLeftViewSplitPane,
+ aScrolledCanvas
+ );
+ aViewSplitPane.setOneTouchExpandable(true);
+ aViewSplitPane.setDividerLocation (400);
+ aViewSplitPane.setContinuousLayout (true);
+
+ // Split pane for the three views at the top and the message area.
+ MessageArea.Instance().setPreferredSize (new java.awt.Dimension(600,50));
+ JSplitPane aSplitPane = new JSplitPane (
+ JSplitPane.VERTICAL_SPLIT,
+ aViewSplitPane,
+ MessageArea.Instance());
+ aSplitPane.setOneTouchExpandable(true);
+ aSplitPane.setContinuousLayout (true);
+ addGridElement (aSplitPane, 0,0, 2,1, 3,3,
+ GridBagConstraints.CENTER, GridBagConstraints.BOTH);
+
+ // Button bar.
+ maButtonBar = new javax.swing.JPanel();
+ java.awt.GridBagLayout aButtonLayout = new java.awt.GridBagLayout ();
+ maButtonBar.setLayout (new java.awt.FlowLayout());
+ addGridElement (maButtonBar, 0,3, 2,1, 1,0,
+ GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL);
+
+ // Buttons.
+ // maConnectButton = createButton ("Connect", "connect");
+ // maUpdateButton = createButton ("Update", "update");
+ // maShapesButton = createButton ("Expand Shapes", "shapes");
+ maExpandButton = createButton ("Expand All", "expand");
+ maQuitButton = createButton ("Quit", "quit");
+ UpdateButtonStates ();
+
+ setJMenuBar (CreateMenuBar ());
+
+ setTitle("Accessibility Workbench " + msVersion);
+
+ setVisible (true);
+ pack ();
+ aSplitPane.setDividerLocation (1.0);
+ validate ();
+ repaint();
+ }
+
+
+
+
+ /** Shortcut method for adding an object to a GridBagLayout.
+ */
+ void addGridElement (JComponent object,
+ int x, int y,
+ int width, int height,
+ int weightx, int weighty,
+ int anchor, int fill)
+ {
+ GridBagConstraints constraints = new GridBagConstraints ();
+ constraints.gridx = x;
+ constraints.gridy = y;
+ constraints.gridwidth = width;
+ constraints.gridheight = height;
+ constraints.weightx = weightx;
+ constraints.weighty = weighty;
+ constraints.anchor = anchor;
+ constraints.fill = fill;
+ getContentPane().add (object, constraints);
+ }
+
+
+
+
+ /** Create a new button and place at the right most position into the
+ button bar.
+ */
+ public JButton createButton (String title, String command)
+ {
+ JButton aButton = new JButton (title);
+ aButton.setEnabled (false);
+ aButton.setActionCommand (command);
+ aButton.addActionListener (this);
+
+ maButtonBar.add (aButton);
+ return aButton;
+ }
+
+
+
+
+ /** Create a menu bar for the application.
+ @return
+ Returns the new menu bar. The returned reference is also
+ remembered in the data member <member>maMenuBar</member>.
+ */
+ javax.swing.JMenuBar CreateMenuBar()
+ {
+ // Menu bar.
+ maMenuBar = new JMenuBar ();
+
+ // File menu.
+ JMenu aFileMenu = new JMenu ("File");
+ maMenuBar.add (aFileMenu);
+ JMenuItem aItem;
+ aItem = new JMenuItem ("Quit");
+ aFileMenu.add (aItem);
+ aItem.addActionListener (this);
+
+ // View menu.
+ JMenu aViewMenu = new JMenu ("View");
+ maMenuBar.add (aViewMenu);
+ ButtonGroup aGroup = new ButtonGroup ();
+ int nZoomMode = Options.GetInteger ("ZoomMode", Canvas.WHOLE_SCREEN);
+ JRadioButtonMenuItem aRadioButton = new JRadioButtonMenuItem (
+ "Whole Screen", nZoomMode==Canvas.WHOLE_SCREEN);
+ aGroup.add (aRadioButton);
+ aViewMenu.add (aRadioButton);
+ aRadioButton.addActionListener (this);
+ aRadioButton = new JRadioButtonMenuItem ("200%", nZoomMode==200);
+ aGroup.add (aRadioButton);
+ aViewMenu.add (aRadioButton);
+ aRadioButton.addActionListener (this);
+ aRadioButton = new JRadioButtonMenuItem ("100%", nZoomMode==100);
+ aGroup.add (aRadioButton);
+ aViewMenu.add (aRadioButton);
+ aRadioButton.addActionListener (this);
+ aRadioButton = new JRadioButtonMenuItem ("50%", nZoomMode==50);
+ aGroup.add (aRadioButton);
+ aViewMenu.add (aRadioButton);
+ aRadioButton.addActionListener (this);
+ aRadioButton = new JRadioButtonMenuItem ("25%", nZoomMode==25);
+ aGroup.add (aRadioButton);
+ aViewMenu.add (aRadioButton);
+ aRadioButton.addActionListener (this);
+ aRadioButton = new JRadioButtonMenuItem ("10%", nZoomMode==10);
+ aGroup.add (aRadioButton);
+ aViewMenu.add (aRadioButton);
+ aRadioButton.addActionListener (this);
+
+ // Options menu.
+ JMenu aOptionsMenu = new JMenu ("Options");
+ maMenuBar.add (aOptionsMenu);
+ JCheckBoxMenuItem aCBItem;
+ aCBItem = new JCheckBoxMenuItem ("Show Descriptions",
+ Options.GetBoolean("ShowDescriptions"));
+ aOptionsMenu.add (aCBItem);
+ aCBItem.addActionListener (this);
+
+ aCBItem = new JCheckBoxMenuItem ("Show Names",
+ Options.GetBoolean ("ShowNames"));
+ aOptionsMenu.add (aCBItem);
+ aCBItem.addActionListener (this);
+
+ aCBItem = new JCheckBoxMenuItem ("Show Text",
+ Options.GetBoolean ("ShowText"));
+ aOptionsMenu.add (aCBItem);
+ aCBItem.addActionListener (this);
+
+ aCBItem = new JCheckBoxMenuItem ("Antialiased Rendering",
+ Options.GetBoolean ("Antialiasing"));
+ aOptionsMenu.add (aCBItem);
+ aCBItem.addActionListener (this);
+
+ // Help menu.
+ JMenu aHelpMenu = new JMenu ("Help");
+ maMenuBar.add (aHelpMenu);
+
+ aItem = new JMenuItem ("Help");
+ aHelpMenu.add (aItem);
+ aItem.addActionListener (this);
+
+ aItem = new JMenuItem ("News");
+ aHelpMenu.add (aItem);
+ aItem.addActionListener (this);
+
+ aItem = new JMenuItem ("About");
+ aHelpMenu.add (aItem);
+ aItem.addActionListener (this);
+
+ return maMenuBar;
+ }
+
+
+
+
+ /** Initialize the AWB. This includes clearing the canvas, add
+ listeners, creation of a new tree model for the tree list box and
+ the update of the button states.
+
+ This method may be called any number of times. Note that all
+ actions will be carried out every time. The main purpose of a
+ second call is that of a re-initialization after a reconnect.
+ */
+ protected void Initialize ()
+ {
+ maCanvas.SetTree (maTree);
+
+ SimpleOffice aOffice = SimpleOffice.Instance ();
+ if (aOffice != null)
+ {
+ // Add terminate listener.
+ if (aOffice.GetDesktop() != null)
+ aOffice.GetDesktop().addTerminateListener (this);
+
+ }
+
+ mbInitialized = true;
+ UpdateButtonStates ();
+ }
+
+
+
+
+ /** Update the states of the buttons according to the internal state of
+ the AWB.
+ */
+ protected void UpdateButtonStates ()
+ {
+ // maConnectButton.setEnabled (mbInitialized);
+ maQuitButton.setEnabled (true);
+ // maUpdateButton.setEnabled (mbInitialized);
+ maExpandButton.setEnabled (mbInitialized);
+ // maShapesButton.setEnabled (mbInitialized);
+ }
+
+
+
+ /** Callback for GUI actions from the buttons.
+ */
+ public void actionPerformed (ActionEvent aEvent)
+ {
+ String sCommand = aEvent.getActionCommand();
+ if (sCommand.equals("connect"))
+ {
+ SimpleOffice.Clear();
+ Initialize ();
+ }
+ else if (sCommand.equals("quit"))
+ {
+ Quit ();
+ }
+ else if (sCommand.equals("update"))
+ {
+// maTree.Dispose();
+ Initialize ();
+ }
+ else if (sCommand.equals("shapes"))
+ {
+ Cursor aCursor = getCursor();
+ setCursor (new Cursor (Cursor.WAIT_CURSOR));
+ // maTree.expandShapes();
+ setCursor (aCursor);
+ }
+ else if (sCommand.equals("expand"))
+ {
+ Cursor aCursor = getCursor();
+ setCursor (new Cursor (Cursor.WAIT_CURSOR));
+
+ for (int i=0; i<maTree.getRowCount(); i++)
+ maTree.expandRow (i);
+ // maAccessibilityTree.expandAll();
+ setCursor (aCursor);
+ }
+ else if (sCommand.equals ("Quit"))
+ {
+ System.out.println ("exiting");
+ System.exit (0);
+ }
+ else if (sCommand.equals ("Show Descriptions"))
+ {
+ Options.SetBoolean ("ShowDescriptions",
+ ((JCheckBoxMenuItem)aEvent.getSource()).getState());
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("Show Names"))
+ {
+ Options.SetBoolean ("ShowNames",
+ ((JCheckBoxMenuItem)aEvent.getSource()).getState());
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("Show Text"))
+ {
+ Options.SetBoolean ("ShowText",
+ ((JCheckBoxMenuItem)aEvent.getSource()).getState());
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("Antialiased Rendering"))
+ {
+ Options.SetBoolean ("Antialiasing",
+ ((JCheckBoxMenuItem)aEvent.getSource()).getState());
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("Help"))
+ {
+ HelpWindow.Instance().loadFile ("help.html");
+ }
+ else if (sCommand.equals ("News"))
+ {
+ try{
+ HelpWindow.Instance().loadFile ("news.html");
+ } catch (Exception ex) {}
+ }
+ else if (sCommand.equals ("About"))
+ {
+ HelpWindow.Instance().loadFile ("about.html");
+ }
+ else if (sCommand.equals ("Whole Screen"))
+ {
+ Options.SetInteger ("ZoomMode", Canvas.WHOLE_SCREEN);
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("200%"))
+ {
+ Options.SetInteger ("ZoomMode", 200);
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("100%"))
+ {
+ Options.SetInteger ("ZoomMode", 100);
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("50%"))
+ {
+ Options.SetInteger ("ZoomMode", 50);
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("25%"))
+ {
+ Options.SetInteger ("ZoomMode", 25);
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("10%"))
+ {
+ Options.SetInteger ("ZoomMode", 10);
+ maCanvas.repaint();
+ }
+ else if (sCommand.equals ("<connected>"))
+ {
+ Connected ();
+ }
+ else if (sCommand.equals ("CreateNewViewWindow"))
+ {
+ TreePath aSelectionPath = maTree.getSelectionPath();
+ if (aSelectionPath != null)
+ {
+ javax.swing.tree.TreeNode aSelectedNode =
+ (javax.swing.tree.TreeNode)aSelectionPath.getLastPathComponent();
+ if (aSelectedNode instanceof XAccessible) {
+ new ObjectViewContainerWindow (((XAccessible) aSelectedNode).getAccessibleContext());
+ }
+ }
+ }
+ else
+ {
+ System.err.println("unknown command " + sCommand);
+ }
+ }
+
+
+
+
+ /** TreeSelectionListener
+ Tell the object view and the canvas about the selected object.
+ */
+ public void valueChanged (TreeSelectionEvent aEvent) {
+
+ if (aEvent.isAddedPath()) {
+ Cursor aCursor = getCursor();
+ setCursor (new Cursor (Cursor.WAIT_CURSOR));
+
+ javax.swing.tree.TreePath aPath = aEvent.getPath();
+ maTree.scrollPathToVisible (aPath);
+ Object aObject = aPath.getLastPathComponent();
+ implSetCurrentObject( aObject );
+ if (aObject instanceof XAccessible)
+ {
+ if (maObjectViewContainer != null)
+ maObjectViewContainer.SetObject( ((XAccessible)aObject).getAccessibleContext() );
+ }
+ if (maCanvas != null)
+ maCanvas.SelectObject ((TreeNode) aObject);
+ setCursor (aCursor);
+ } else {
+ implSetCurrentObject( aEvent.getPath().getLastPathComponent() );
+ if (maObjectViewContainer != null)
+ maObjectViewContainer.SetObject (null);
+ if (maCanvas != null)
+ maCanvas.SelectObject (null);
+ }
+ }
+
+
+ private void implSetCurrentObject( Object i_object )
+ {
+ if ( maObjectViewContainer == null )
+ return;
+ if ( maCurrentObject != null )
+ {
+ AccessibilityModel.removeEventListener( (TreeNode)maCurrentObject, maObjectViewContainer );
+ }
+ maCurrentObject = i_object;
+ if ( maCurrentObject != null )
+ {
+ AccessibilityModel.addEventListener( (TreeNode)maCurrentObject, maObjectViewContainer );
+ }
+ }
+
+ // XEventListener
+ public void disposing (EventObject aSourceObj)
+ {
+ XFrame xFrame = (XFrame)UnoRuntime.queryInterface(
+ XFrame.class, aSourceObj.Source);
+
+ if( xFrame != null )
+ System.out.println("frame disposed");
+ else
+ System.out.println("controller disposed");
+ }
+
+
+
+
+ // XTerminateListener
+ public void queryTermination(final EventObject aEvent) throws com.sun.star.frame.TerminationVetoException
+ {
+ System.out.println ("Terminate Event : " + aEvent);
+ }
+
+
+
+
+ // XTerminateListener
+ public void notifyTermination(final EventObject aEvent)
+ {
+ System.out.println ("Notifiy Termination Event : " + aEvent);
+ }
+
+
+ /** Called after the AWB is connected to an Office application.
+ */
+ private void Connected ()
+ {
+ // Clear the tree and by expanding the root node initiate the
+ // scanning and insertion of nodes for the top-level windows.
+// maTree.Clear();
+// maTree.collapseRow (0);
+// maTree.expandRow (0);
+
+ // Register the top window listener.
+ XExtendedToolkit xToolkit =
+ SimpleOffice.Instance().GetExtendedToolkit();
+ if (xToolkit != null)
+ {
+ maTree.setToolkit(xToolkit);
+ }
+ }
+
+
+ /** Called when shutting down the AWB tool.
+ */
+ private void Quit ()
+ {
+// maTree.Dispose();
+ System.exit (0);
+ }
+
+ /// The Singleton Workbench object.
+ private static AccessibilityWorkBench
+ saWorkBench = null;
+
+ private JPanel maMainPanel;
+ private JPanel maButtonBar;
+ private Canvas maCanvas;
+ private AccessibilityTree maTree;
+ private ObjectViewContainer maObjectViewContainer;
+ private JButton
+ maConnectButton,
+ maQuitButton,
+ maUpdateButton,
+ maExpandButton,
+ maShapesButton;
+ private JMenuBar maMenuBar;
+ private boolean mbInitialized;
+ private Object maCurrentObject = null;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/HelpWindow.java b/accessibility/workben/org/openoffice/accessibility/awb/HelpWindow.java
new file mode 100644
index 000000000000..2f9671d191e5
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/HelpWindow.java
@@ -0,0 +1,187 @@
+package org.openoffice.accessibility.awb;
+
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JEditorPane;
+import javax.swing.JButton;
+import java.net.URL;
+import javax.swing.event.HyperlinkListener;
+import javax.swing.event.HyperlinkEvent;
+import java.net.MalformedURLException;
+import java.io.IOException;
+import java.io.File;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.event.ActionListener;
+import java.util.LinkedList;
+
+public class HelpWindow
+ implements ActionListener
+{
+ public static synchronized HelpWindow Instance ()
+ {
+ if (maInstance == null)
+ maInstance = new HelpWindow();
+ return maInstance;
+ }
+
+ public void loadFile (String sFilename)
+ {
+ File aFile = new File (sFilename);
+ try
+ {
+ loadURL (aFile.toURL());
+ }
+ catch (MalformedURLException e)
+ {
+ e.printStackTrace (System.err);
+ }
+ }
+ public void loadURL (String sURL)
+ {
+ try
+ {
+ loadURL (new URL (sURL));
+ }
+ catch (MalformedURLException e)
+ {
+ e.printStackTrace (System.err);
+ }
+ }
+
+
+
+
+ public void loadURL (URL aURL)
+ {
+ maHistory.addLast (aURL);
+ selectHistoryPage (maHistory.size()-1);
+ maFrame.toFront ();
+ }
+
+
+
+
+ private HelpWindow ()
+ {
+ try
+ {
+ maCurrentHistoryEntry = -1;
+ maHistory = new LinkedList();
+
+ maFrame = new JFrame ();
+ maFrame.addWindowListener (new WindowAdapter ()
+ {
+ public void windowClosing (WindowEvent e)
+ {
+ maInstance = null;
+ }
+ });
+ maContent = createContentWidget();
+
+ maFrame.getContentPane().setLayout (new GridBagLayout());
+ GridBagConstraints aConstraints = new GridBagConstraints ();
+ aConstraints.gridx = 0;
+ aConstraints.gridy = 0;
+ aConstraints.gridwidth = 3;
+ aConstraints.weightx = 1;
+ aConstraints.weighty = 1;
+ aConstraints.fill = GridBagConstraints.BOTH;
+ maFrame.getContentPane().add (new JScrollPane (maContent), aConstraints);
+
+ aConstraints = new GridBagConstraints();
+ aConstraints.gridx = 0;
+ aConstraints.gridy = 1;
+ maPrevButton = new JButton ("Prev");
+ maFrame.getContentPane().add (maPrevButton, aConstraints);
+ maPrevButton.addActionListener (this);
+
+ aConstraints = new GridBagConstraints();
+ aConstraints.gridx = 1;
+ aConstraints.gridy = 1;
+ maNextButton = new JButton ("Next");
+ maFrame.getContentPane().add (maNextButton, aConstraints);
+ maNextButton.addActionListener (this);
+
+ aConstraints = new GridBagConstraints();
+ aConstraints.gridx = 2;
+ aConstraints.gridy = 1;
+ aConstraints.anchor = GridBagConstraints.EAST;
+ JButton aButton = new JButton ("Close");
+ maFrame.getContentPane().add (aButton, aConstraints);
+ aButton.addActionListener (this);
+
+ maFrame.setSize (600,400);
+ maFrame.setVisible (true);
+ }
+ catch (Exception e)
+ {}
+ }
+
+ public void actionPerformed (java.awt.event.ActionEvent e)
+ {
+ if (e.getActionCommand().equals("Prev"))
+ {
+ selectHistoryPage (maCurrentHistoryEntry - 1);
+ }
+ else if (e.getActionCommand().equals("Next"))
+ {
+ selectHistoryPage (maCurrentHistoryEntry + 1);
+ }
+ else if (e.getActionCommand().equals("Close"))
+ {
+ maFrame.dispose ();
+ maInstance = null;
+ }
+ }
+
+ private JEditorPane createContentWidget ()
+ {
+ JEditorPane aContent = new JEditorPane ();
+ aContent.setEditable (false);
+ aContent.addHyperlinkListener (new HyperlinkListener()
+ {
+ public void hyperlinkUpdate (HyperlinkEvent e)
+ {
+ if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
+ HelpWindow.Instance().loadURL (e.getURL());
+ }
+ });
+ return aContent;
+ }
+
+ private void selectHistoryPage (int i)
+ {
+ if (i < 0)
+ i = 0;
+ else if (i >= maHistory.size()-1)
+ i = maHistory.size()-1;
+ if (i != maCurrentHistoryEntry)
+ {
+ URL aURL = (URL)maHistory.get (i);
+ try
+ {
+ maContent.setPage (aURL);
+ }
+ catch (java.io.IOException ex)
+ {
+ ex.printStackTrace(System.err);
+ }
+
+ maCurrentHistoryEntry = i;
+ }
+
+ maPrevButton.setEnabled (maCurrentHistoryEntry > 0);
+ maNextButton.setEnabled (maCurrentHistoryEntry < maHistory.size()-1);
+ }
+
+ private static HelpWindow maInstance = null;
+ private JFrame maFrame;
+ private JEditorPane maContent;
+ private LinkedList maHistory;
+ private int maCurrentHistoryEntry;
+ private JButton maPrevButton;
+ private JButton maNextButton;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/Makefile b/accessibility/workben/org/openoffice/accessibility/awb/Makefile
new file mode 100644
index 000000000000..d38799bed109
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/Makefile
@@ -0,0 +1,13 @@
+# $Id: Makefile,v 1.1 2003/06/13 16:30:18 af Exp $
+
+all : package
+
+ROOT=../../../..
+PACKAGE = org.openoffice.accessibility.awb
+SUBDIRS = canvas event tree view
+
+include makefile.common
+
+include $(ROOT)/makefile.in
+
+package: subdirs $(CLASS_FILES)
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/canvas/Canvas.java b/accessibility/workben/org/openoffice/accessibility/awb/canvas/Canvas.java
new file mode 100644
index 000000000000..86b642e8091c
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/canvas/Canvas.java
@@ -0,0 +1,322 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.canvas;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.Toolkit;
+import java.awt.geom.Rectangle2D;
+import java.util.Iterator;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JViewport;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.tree.TreePath;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleComponent;
+
+import org.openoffice.accessibility.misc.Options;
+
+/** This canvas displays accessible objects graphically. Each accessible
+ object with graphical representation is represented by an
+ CanvasShape object and has to be added by the
+ <member>addAccessible</member> member function.
+
+ <p>The canvas listens to selection events of the associated JTree and
+ highlights the first selected node of that tree.</p>
+*/
+public class Canvas
+ extends JPanel
+{
+ // This constant can be passed to SetZoomMode to always show the whole screen.
+ public static final int WHOLE_SCREEN = -1;
+
+ public Canvas ()
+ {
+ super (true);
+ maShapeList = new ShapeContainer (this);
+ maMouseObserver = new MouseObserver (this);
+ maTree = null;
+ mnHOffset = 0;
+ mnVOffset = 0;
+ mnScale = 1;
+ maLastWidgetSize = new Dimension (0,0);
+ }
+
+
+
+ /** Tell the canvas which tree to use to highlight accessible
+ objects and to observe for changes in the tree structure.
+ */
+ public void SetTree (javax.swing.JTree aTree)
+ {
+ if (aTree != maTree)
+ {
+ maTree = aTree;
+ maShapeList.SetTree (maTree);
+ maMouseObserver.SetTree (maTree);
+ }
+ }
+
+
+
+
+ private void Clear ()
+ {
+ maShapeList.Clear();
+ }
+
+
+
+
+ public Iterator GetShapeIterator ()
+ {
+ return maShapeList.GetIterator();
+ }
+
+
+
+
+ public void paintComponent (Graphics g)
+ {
+ synchronized (g)
+ {
+ super.paintComponent (g);
+
+ Graphics2D g2 = (Graphics2D)g;
+ if (Options.GetBoolean("Antialiasing"))
+ g2.setRenderingHint (RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+ else
+ g2.setRenderingHint (RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_OFF);
+
+ setupTransformation ();
+ g2.translate (mnHOffset, mnVOffset);
+ g2.scale (mnScale, mnScale);
+
+ // Draw the screen representation to give a hint of the location of the
+ // accessible object on the screen.
+ Dimension aScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ Rectangle2D.Double aScreen = new Rectangle2D.Double (
+ 0,
+ 0,
+ aScreenSize.getWidth(),
+ aScreenSize.getHeight());
+ // Fill the screen rectangle and draw a frame arround it to increase its visibility.
+ g2.setColor (new Color (250,240,230));
+ g2.fill (aScreen);
+ g2.setColor (Color.BLACK);
+ g2.draw (aScreen);
+
+ synchronized (maShapeList)
+ {
+ Iterator aShapeIterator = maShapeList.GetIterator();
+ boolean bShowDescriptions = Options.GetBoolean ("ShowDescriptions");
+ boolean bShowNames = Options.GetBoolean ("ShowNames");
+ boolean bShowText = Options.GetBoolean ("ShowText");
+ while (aShapeIterator.hasNext())
+ {
+ CanvasShape aCanvasShape =
+ (CanvasShape)aShapeIterator.next();
+ try
+ {
+ aCanvasShape.paint (
+ g2,
+ bShowDescriptions, bShowNames, bShowText);
+ }
+ catch (Exception aException)
+ {
+ System.err.println ("caught exception while painting a shape:"
+ + aException);
+ aException.printStackTrace (System.err);
+ }
+ }
+ }
+
+ // Paint highlighted frame around active object as the last thing.
+ if (maActiveObject != null)
+ maActiveObject.paint_highlight (g2);
+ }
+ }
+
+
+
+
+ /** Set up the transformation so that the graphical display can show a
+ centered representation of the whole screen.
+ */
+ private void setupTransformation ()
+ {
+ // Turn off scrollbars when showing the whole screen. Otherwise show them when needed.
+ JViewport aViewport = (JViewport)getParent();
+ JScrollPane aScrollPane = (JScrollPane)aViewport.getParent();
+ int nZoomMode = Options.GetInteger ("ZoomMode", WHOLE_SCREEN);
+ if (nZoomMode == WHOLE_SCREEN)
+ {
+ if (aScrollPane.getHorizontalScrollBarPolicy()
+ != JScrollPane.HORIZONTAL_SCROLLBAR_NEVER)
+ aScrollPane.setHorizontalScrollBarPolicy (
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ if (aScrollPane.getVerticalScrollBarPolicy()
+ != JScrollPane.VERTICAL_SCROLLBAR_NEVER)
+ aScrollPane.setVerticalScrollBarPolicy (
+ JScrollPane.VERTICAL_SCROLLBAR_NEVER);
+ }
+ else
+ {
+ if (aScrollPane.getHorizontalScrollBarPolicy()
+ != JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)
+ aScrollPane.setHorizontalScrollBarPolicy (
+ JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ if (aScrollPane.getVerticalScrollBarPolicy()
+ != JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED)
+ aScrollPane.setVerticalScrollBarPolicy (
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ }
+
+ Dimension aScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ Dimension aWidgetSize = aViewport.getSize();
+ {
+ if ((aScreenSize.getWidth() > 0) && (aScreenSize.getHeight() > 0))
+ {
+ if (nZoomMode == WHOLE_SCREEN)
+ {
+ // Calculate the scales that would map the screen onto the
+ // widget in both of the coordinate axes and select the
+ // smaller
+ // of the two: it maps the screen onto the widget in both
+ // axes at the same time.
+ double nHScale = (aWidgetSize.getWidth() - 10)
+ / aScreenSize.getWidth();
+ double nVScale = (aWidgetSize.getHeight() - 10)
+ / aScreenSize.getHeight();
+ if (nHScale < nVScale)
+ mnScale = nHScale;
+ else
+ mnScale = nVScale;
+ }
+ else
+ {
+ mnScale = nZoomMode / 100.0;
+ }
+
+ // Calculate offsets that center the scaled screen inside
+ // the widget.
+ mnHOffset = (aWidgetSize.getWidth()
+ - mnScale*aScreenSize.getWidth()) / 2.0;
+ mnVOffset = (aWidgetSize.getHeight()
+ - mnScale*aScreenSize.getHeight()) / 2.0;
+ if (mnHOffset < 0)
+ mnHOffset = 0;
+ if (mnVOffset < 0)
+ mnVOffset = 0;
+
+ setPreferredSize (new Dimension (
+ (int)(2*mnHOffset + mnScale * aScreenSize.getWidth()),
+ (int)(2*mnVOffset + mnScale * aScreenSize.getHeight())));
+ revalidate ();
+ }
+ else
+ {
+ // In case of a degenerate (not yet initialized?) screen size
+ // use some meaningless default values.
+ mnScale = 1;
+ mnHOffset = 0;
+ mnVOffset = 0;
+ }
+ }
+ maLastWidgetSize = aWidgetSize;
+ }
+
+
+
+ protected boolean HighlightObject (CanvasShape aNewActiveObject)
+ {
+ if (aNewActiveObject != maActiveObject)
+ {
+ if (maActiveObject != null)
+ maActiveObject.Highlight (false);
+
+ maActiveObject = aNewActiveObject;
+ if (maActiveObject != null)
+ {
+ /* if (maTree != null)
+ {
+ TreePath aPath = new TreePath (
+ maActiveObject.GetNode().GetPath());
+ maTree.scrollPathToVisible (aPath);
+ maTree.setSelectionPath (aPath);
+ maTree.repaint ();
+ }
+ */
+ maActiveObject.Highlight (true);
+ }
+ repaint ();
+ return true;
+ }
+ else
+ return false;
+ }
+
+
+
+
+ /** Called when the selection of the tree changes. Highlight the
+ corresponding graphical representation of the object.
+ */
+ public void SelectObject (javax.swing.tree.TreeNode aNode)
+ {
+ CanvasShape aCanvasShape = maShapeList.Get (aNode);
+ HighlightObject (aCanvasShape);
+ }
+
+
+
+
+ private int
+ mnXAnchor,
+ mnYAnchor,
+ maResizeFlag;
+ private double
+ mnHOffset,
+ mnVOffset,
+ mnScale;
+ private CanvasShape maActiveObject;
+ private javax.swing.JTree maTree;
+ // The size of the widget at the last call of setupTransformation()
+ private Dimension maLastWidgetSize;
+ private ShapeContainer maShapeList;
+ private MouseObserver maMouseObserver;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/canvas/CanvasShape.java b/accessibility/workben/org/openoffice/accessibility/awb/canvas/CanvasShape.java
new file mode 100644
index 000000000000..f2595351a4f5
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/canvas/CanvasShape.java
@@ -0,0 +1,412 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.canvas;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.NoninvertibleTransformException;
+
+
+import com.sun.star.accessibility.*;
+import com.sun.star.lang.EventObject;
+import com.sun.star.uno.UnoRuntime;
+
+
+class CanvasShape implements XAccessibleEventListener
+{
+ public final Color maHighlightColor = Color.red;
+ public final Color maSelectionColor = Color.green;
+ public final Color maFocusColor = Color.blue;
+
+ public CanvasShape (javax.swing.tree.TreeNode aNode, Canvas aCanvas)
+ {
+ maNode = aNode;
+ msName = "<no name>";
+ msDescription = "<no description>";
+ maShape = new Rectangle2D.Double (-10,-10,10,10);
+ maPosition = new Point (-10,-10);
+ maSize = new Dimension (10,10);
+ maFgColor = java.awt.Color.black;
+ maBgColor = Color.blue;
+ mnRole = -1;
+ mbHighlighted = false;
+ mbSelected = false;
+ mbFocused = false;
+ maCanvas = aCanvas;
+
+ Update ();
+ }
+
+
+
+
+ public javax.swing.tree.TreePath getNodePath (javax.swing.tree.TreeNode node)
+ {
+ javax.swing.tree.TreeNode parent = node.getParent();
+ return (parent != null) ?
+ getNodePath(parent).pathByAddingChild(node) :
+ new javax.swing.tree.TreePath(node);
+ }
+
+ public javax.swing.tree.TreePath getNodePath ()
+ {
+ return getNodePath(maNode);
+ }
+
+
+
+ /** Update the data obtained from the <type>AccessibilityNode</type>
+ object.
+ */
+ public void Update ()
+ {
+ if (maNode instanceof XAccessible) {
+ mxContext = ((XAccessible) maNode).getAccessibleContext();
+ mxComponent = (XAccessibleComponent)UnoRuntime.queryInterface(
+ XAccessibleComponent.class, mxContext);
+ }
+
+ if (mxContext != null)
+ {
+ msName = mxContext.getAccessibleName();
+ msDescription = mxContext.getAccessibleDescription();
+ mnRole = mxContext.getAccessibleRole();
+
+ // Extract the selected and focused flag.
+ XAccessibleStateSet xStateSet = mxContext.getAccessibleStateSet ();
+ if (xStateSet != null)
+ {
+ mbSelected = xStateSet.contains (AccessibleStateType.SELECTED);
+ mbFocused = xStateSet.contains (AccessibleStateType.FOCUSED);
+ }
+ }
+
+ UpdateGeometry ();
+
+ if (mxComponent != null)
+ {
+ // Note: alpha values in office 0..255 have to be mapped to
+ // 255..0 in Java
+ Color aCol = new Color (mxComponent.getForeground(), true);
+ maFgColor = new Color (aCol.getRed (),
+ aCol.getGreen (),
+ aCol.getBlue (),
+ 0xff - aCol.getAlpha ());
+ aCol = new Color (mxComponent.getBackground(), true);
+ maBgColor = new Color (aCol.getRed (),
+ aCol.getGreen (),
+ aCol.getBlue (),
+ 0xff - aCol.getAlpha ());
+ }
+ }
+
+
+
+ public void UpdateGeometry ()
+ {
+ if (mxComponent != null)
+ {
+ com.sun.star.awt.Point aLocationOnScreen =
+ mxComponent.getLocationOnScreen();
+ com.sun.star.awt.Size aSizeOnScreen = mxComponent.getSize();
+ maPosition = new Point (
+ aLocationOnScreen.X,
+ aLocationOnScreen.Y);
+ maSize = new Dimension (
+ aSizeOnScreen.Width,
+ aSizeOnScreen.Height);
+ }
+ }
+
+
+
+ /** Paint the object into the specified canvas. It is transformed
+ according to the specified offset and scale.
+ */
+ public void paint (
+ Graphics2D g,
+ boolean bShowDescription,
+ boolean bShowName,
+ boolean bShowText)
+ {
+ try{
+ // Transform the object's position and size according to the
+ // specified offset and scale.
+ Point aLocation = new Point();
+ maShape = new Rectangle2D.Double (
+ maPosition.x,
+ maPosition.y,
+ maSize.width,
+ maSize.height);
+ maTransformation = g.getTransform();
+
+ // Fill the object's bounding box with its background color if it
+ // has no children.
+ if (mxContext.getAccessibleChildCount() == 0)
+ {
+ g.setColor (maBgColor);
+ g.fill (maShape);
+ }
+
+ // Remove alpha channel from color before drawing the frame.
+ Color color = maFgColor;
+ if (maFgColor.getAlpha()<128)
+ color = new Color (maFgColor.getRed(), maFgColor.getGreen(), maFgColor.getBlue());
+ g.setColor (color);
+ g.draw (maShape);
+
+ if (mbFocused)
+ {
+ g.setColor (maFocusColor);
+ for (int x=0; x<=2; x++)
+ for (int y=0; y<=2; y++)
+ g.fill (
+ new Rectangle2D.Double (
+ maShape.x + x/2.0 * maShape.width-3,
+ maShape.y + y/2.0 * maShape.height-3,
+ 6,
+ 6));
+ }
+ if (mbSelected)
+ {
+ g.setColor (maSelectionColor);
+ for (int x=0; x<=2; x++)
+ for (int y=0; y<=2; y++)
+ g.draw (
+ new Rectangle2D.Double (
+ maShape.x + x/2.0 * maShape.width-2,
+ maShape.y + y/2.0 * maShape.height-2,
+ 4,
+ 4));
+ }
+
+ // Write the object's text OR name and description.
+ g.setColor (maFgColor);
+ if (bShowName)
+ paintName (g);
+ if (bShowDescription)
+ paintDescription (g);
+ if (bShowText)
+ paintText (g);
+ }
+ catch (Exception e)
+ { // don't care
+ }
+ }
+
+
+ public void paint_highlight (Graphics2D g)
+ {
+ if (mbHighlighted)
+ g.setColor (maHighlightColor);
+ else
+ g.setColor (maFgColor);
+ g.draw (maShape);
+ }
+
+
+
+
+ private void paintName (Graphics2D g)
+ {
+ g.drawString ("Name: " + msName,
+ (float)maShape.x+5,
+ (float)maShape.y+15);
+ }
+
+
+
+ private void paintDescription (Graphics2D g)
+ {
+ g.drawString ("Description: " + msDescription,
+ (float)maShape.x+5,
+ (float)maShape.y+35);
+ }
+
+
+
+
+ private void paintText (Graphics2D g)
+ {
+ XAccessibleText xText = null;
+ // get XAccessibleText
+ xText = (XAccessibleText)UnoRuntime.queryInterface(
+ XAccessibleText.class, mxContext);
+
+ // Draw every character in the text string.
+ if (xText != null)
+ {
+ String sText = xText.getText();
+ try
+ {
+ for(int i = 0; i < sText.length(); i++)
+ {
+ com.sun.star.awt.Rectangle aRect =
+ xText.getCharacterBounds(i);
+
+ double x = maShape.x + aRect.X;
+ double y = maShape.y + aRect.Y + aRect.Height;
+
+ g.drawString (sText.substring(i, i+1), (float)x, (float)y);
+ }
+ }
+ catch (com.sun.star.lang.IndexOutOfBoundsException e)
+ {}
+ }
+ }
+
+
+ /** Compute whether the specified point lies inside the object's
+ bounding box.
+ */
+ public boolean Contains (int x, int y)
+ {
+ Point2D aPosition = new Point2D.Double (x,y);
+ try
+ {
+ maTransformation.inverseTransform (aPosition, aPosition);
+ // System.out.println ("transformed "+x+","+y+" to "+aPosition);
+ }
+ catch (NoninvertibleTransformException aException)
+ {
+ return false;
+ }
+ return (maShape.contains (aPosition));
+ }
+
+ public void Highlight (boolean bFlag)
+ {
+ mbHighlighted = bFlag;
+ }
+
+ public boolean IsHighlighted ()
+ {
+ return mbHighlighted;
+ }
+
+ public Rectangle GetBBox ()
+ {
+ return new Rectangle (maPosition, maSize);
+ }
+
+ public Point getOrigin ()
+ {
+ return maPosition;
+ }
+
+ public Dimension GetSize ()
+ {
+ return maSize;
+ }
+
+ public int getRole ()
+ {
+ return mnRole;
+ }
+
+ public XAccessibleContext getContext ()
+ {
+ return mxContext;
+ }
+
+ public XAccessibleComponent getComponent ()
+ {
+ return mxComponent;
+ }
+
+ public String toString ()
+ {
+ return ">"+msName+", "+msDescription+" +"+maPosition.x+"+"+maPosition.y
+ +"x"+maSize.width+"x"+maSize.height+"<";
+ }
+
+ /** */
+ public void notifyEvent(com.sun.star.accessibility.AccessibleEventObject aEvent) {
+ try {
+ switch (aEvent.EventId) {
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ UpdateGeometry ();
+ maCanvas.repaint();
+ break;
+ default:
+ break;
+ }
+ } catch (Exception aException) {
+ System.err.println ("caught exception while updating a shape:"
+ + aException);
+ aException.printStackTrace (System.err);
+ }
+ }
+
+ /** Callback for disposing events.
+ */
+ public void disposing (com.sun.star.lang.EventObject e)
+ {
+ System.out.println ("Disposing");
+ }
+
+
+
+
+ private Canvas
+ maCanvas;
+ private javax.swing.tree.TreeNode
+ maNode;
+ private XAccessibleContext
+ mxContext;
+ private XAccessibleComponent
+ mxComponent;
+ private String
+ msDescription,
+ msName;
+ private Rectangle2D.Double maShape;
+ private AffineTransform maTransformation;
+ private Point maPosition;
+ private Dimension
+ maTransformedSize,
+ maSize;
+ private Color
+ maFgColor,
+ maBgColor;
+ private boolean
+ // Highlighting objects is an internal concept. Corresponds to selection in the tree view.
+ mbHighlighted,
+ // Set when the accessible object is selected.
+ mbSelected,
+ // Set when the accessible object is focused.
+ mbFocused;
+ private int
+ mnRole;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/canvas/Makefile b/accessibility/workben/org/openoffice/accessibility/awb/canvas/Makefile
new file mode 100644
index 000000000000..8d9688433ff9
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/canvas/Makefile
@@ -0,0 +1,15 @@
+# $Id: Makefile,v 1.1 2003/06/13 16:30:21 af Exp $
+
+all : package
+
+ROOT=../../../../..
+PACKAGE = org.openoffice.accessibility.awb.canvas
+SUBDIRS =
+include makefile.common
+
+include $(ROOT)/makefile.in
+
+
+package : $(CLASS_FILES)
+
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/canvas/MouseObserver.java b/accessibility/workben/org/openoffice/accessibility/awb/canvas/MouseObserver.java
new file mode 100644
index 000000000000..3e7e2807906d
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/canvas/MouseObserver.java
@@ -0,0 +1,104 @@
+package org.openoffice.accessibility.awb.canvas;
+
+import java.awt.Dimension;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.util.Iterator;
+import javax.swing.tree.TreePath;
+
+
+/** Observe the mouse and highlight shapes of the canvas when clicked.
+*/
+public class MouseObserver
+ implements MouseListener,
+ MouseMotionListener
+{
+ public MouseObserver (Canvas aCanvas)
+ {
+ maCanvas = aCanvas;
+ maCanvas.addMouseListener (this);
+ maCanvas.addMouseMotionListener (this);
+ }
+
+
+ public void SetTree (javax.swing.JTree aTree)
+ {
+ maTree = aTree;
+ }
+
+ public void mouseClicked (MouseEvent e)
+ {}
+
+ public void mousePressed (MouseEvent e)
+ {
+ CanvasShape aObjectUnderMouse = FindCanvasShapeUnderMouse (e);
+ maTree.clearSelection();
+ if (aObjectUnderMouse != null)
+ {
+ TreePath aPath = aObjectUnderMouse.getNodePath();
+ if ((e.getModifiers() & InputEvent.CTRL_MASK) != 0)
+ maTree.expandPath (aPath);
+ // Selecting the entry will eventually highlight the shape.
+ maTree.setSelectionPath (aPath);
+ maTree.makeVisible (aPath);
+ }
+ }
+
+ public void mouseReleased (MouseEvent e)
+ {}
+
+ public void mouseEntered (MouseEvent e)
+ {}
+
+ public void mouseExited (MouseEvent e)
+ {}
+
+ public void mouseDragged (MouseEvent e)
+ {
+ }
+
+ public void mouseMoved (MouseEvent e)
+ {
+ if ((e.getModifiers() & InputEvent.SHIFT_MASK) != 0)
+ maCanvas.HighlightObject (FindCanvasShapeUnderMouse (e));
+ }
+
+
+ /** Search for the smallest shape that contains the mouse position.
+ */
+ protected CanvasShape FindCanvasShapeUnderMouse (MouseEvent e)
+ {
+ Dimension aSmallestSize = null;
+ Iterator maShapeIterator = maCanvas.GetShapeIterator();
+ CanvasShape aShapeUnderMouse = null;
+ while (maShapeIterator.hasNext())
+ {
+ CanvasShape aShape = (CanvasShape)maShapeIterator.next();
+ if (aShape != null)
+ if (aShape.Contains (e.getX(),e.getY()))
+ {
+ if (aShapeUnderMouse == null)
+ {
+ aSmallestSize = aShape.GetSize();
+ aShapeUnderMouse = aShape;
+ }
+ else
+ {
+ Dimension aSize = aShape.GetSize();
+ if (aSize.getWidth()<aSmallestSize.getWidth()
+ || aSize.getHeight()<aSmallestSize.getHeight())
+ {
+ aSmallestSize = aSize;
+ aShapeUnderMouse = aShape;
+ }
+ }
+ }
+ }
+ return aShapeUnderMouse;
+ }
+
+ private Canvas maCanvas;
+ private javax.swing.JTree maTree;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/canvas/ShapeContainer.java b/accessibility/workben/org/openoffice/accessibility/awb/canvas/ShapeContainer.java
new file mode 100644
index 000000000000..03ad4bf38c46
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/canvas/ShapeContainer.java
@@ -0,0 +1,237 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.canvas;
+
+import java.awt.Rectangle;
+import java.util.Iterator;
+import javax.swing.event.TreeModelListener;
+import javax.swing.event.TreeExpansionListener;
+import javax.swing.event.TreeWillExpandListener;
+import javax.swing.event.TreeExpansionEvent;
+import javax.swing.event.TreeModelEvent;
+import javax.swing.tree.TreeNode;
+
+import com.sun.star.accessibility.XAccessibleEventBroadcaster;
+
+/** Each canvas has a shape container that is responsible for maintaining
+ a collection of shapes that are displayed by the canvas.
+*/
+public class ShapeContainer
+ implements TreeModelListener,
+ TreeExpansionListener,
+ TreeWillExpandListener
+{
+ public ShapeContainer (Canvas aCanvas)
+ {
+ maShapeList = new java.util.Hashtable();
+ maBoundingBox = new Rectangle (0,0,100,100);
+ maCanvas = aCanvas;
+ maTree = null;
+ }
+
+
+
+
+ public synchronized void SetTree (javax.swing.JTree aTree)
+ {
+ if (aTree != maTree)
+ {
+ if (maTree != null)
+ {
+ maTree.getModel().removeTreeModelListener (this);
+ maTree.removeTreeExpansionListener (this);
+ maTree.removeTreeWillExpandListener (this);
+ }
+
+ Clear();
+
+ maTree = aTree;
+
+ maTree.getModel().addTreeModelListener (this);
+ maTree.addTreeExpansionListener (this);
+ maTree.addTreeWillExpandListener (this);
+ }
+ }
+
+
+
+
+ public synchronized boolean AddNode (TreeNode aNode)
+ {
+ CanvasShape aShape = (CanvasShape)maShapeList.get (aNode);
+ if (aShape == null)
+ {
+ aShape = new CanvasShape (aNode, maCanvas);
+
+ if (aNode instanceof XAccessibleEventBroadcaster)
+ ((XAccessibleEventBroadcaster) aNode).addEventListener(aShape);
+
+ // Update bounding box that includes all objects.
+ if (maShapeList.size() == 0)
+ maBoundingBox = aShape.GetBBox();
+ else
+ maBoundingBox = maBoundingBox.union (aShape.GetBBox());
+
+ maShapeList.put (aNode, aShape);
+
+ maCanvas.repaint();
+
+ return true;
+ }
+ else
+ return false;
+ }
+
+
+ /**
+ */
+ public synchronized boolean RemoveNode (TreeNode aNode)
+ {
+ CanvasShape aShape = (CanvasShape)maShapeList.get (aNode);
+ if (aShape != null)
+ {
+ if (aNode instanceof XAccessibleEventBroadcaster)
+ ((XAccessibleEventBroadcaster) aNode).removeEventListener(aShape);
+
+ maShapeList.remove (aNode);
+ maCanvas.SelectObject (null);
+ maCanvas.repaint ();
+ return true;
+ }
+ else
+ return false;
+ }
+
+
+
+
+ public synchronized void Clear ()
+ {
+ maShapeList.clear ();
+ }
+
+
+
+
+ public Iterator GetIterator ()
+ {
+ return maShapeList.values().iterator ();
+ }
+
+
+
+
+ public CanvasShape Get (TreeNode aNode)
+ {
+ if (aNode != null) {
+ return (CanvasShape)maShapeList.get (aNode);
+ }
+ return null;
+ }
+
+
+ private void PrintMessage (String aMessage, java.util.EventObject aEvent)
+ {
+ // System.out.println ("ShapeContainer: " + aMessage + ": " + aEvent);
+ }
+
+ public void treeNodesChanged (TreeModelEvent aEvent)
+ {
+ PrintMessage ("treeNodesChanged", aEvent);
+ }
+ public void treeNodesInserted (TreeModelEvent aEvent)
+ {
+ PrintMessage ("treeNodesInserted", aEvent);
+ Object[] aNewNodes = aEvent.getChildren();
+ for (int i=0; i<aNewNodes.length; i++)
+ AddNode ((TreeNode)aNewNodes[i]);
+ }
+ public void treeNodesRemoved (TreeModelEvent aEvent)
+ {
+ PrintMessage ("treeNodesRemoved", aEvent);
+ Object[] aOldNodes = aEvent.getChildren();
+ for (int i=0; i<aOldNodes.length; i++)
+ RemoveNode ((TreeNode)aOldNodes[i]);
+ }
+ public void treeStructureChanged (TreeModelEvent aEvent)
+ {
+ PrintMessage ("treeStructureChanged", aEvent);
+ TreeNode aNode = (TreeNode)aEvent.getTreePath().getLastPathComponent();
+ RemoveAllChildren(aNode);
+ AddAllChildren(aNode);
+ }
+
+ public void treeWillExpand (TreeExpansionEvent aEvent)
+ {
+ PrintMessage ("treeWillExpand", aEvent);
+ }
+ public void treeWillCollapse (TreeExpansionEvent aEvent)
+ {
+ PrintMessage ("treeWillCollapse", aEvent);
+ TreeNode aNode = (TreeNode)aEvent.getPath().getLastPathComponent();
+ RemoveAllChildren (aNode);
+ }
+ public void treeExpanded (TreeExpansionEvent aEvent)
+ {
+ PrintMessage ("treeExpanded", aEvent);
+ TreeNode aNode = (TreeNode)aEvent.getPath().getLastPathComponent();
+ AddAllChildren (aNode);
+ }
+ public void treeCollapsed (TreeExpansionEvent aEvent)
+ {
+ PrintMessage ("treeCollapsed", aEvent);
+ }
+
+ private void AddAllChildren (TreeNode aNode) {
+ java.util.Enumeration aChildList = aNode.children();
+ while (aChildList.hasMoreElements()) {
+ TreeNode aChild = (TreeNode) aChildList.nextElement();
+ if (aChild != null) {
+ AddAllChildren (aChild);
+ AddNode (aChild);
+ }
+ }
+ }
+
+ private void RemoveAllChildren (TreeNode aNode) {
+ java.util.Enumeration aChildList = aNode.children();
+ while (aChildList.hasMoreElements()) {
+ TreeNode aChild = (TreeNode) aChildList.nextElement();
+ if (aChild != null) {
+ RemoveAllChildren (aChild);
+ RemoveNode (aChild);
+ }
+ }
+ }
+
+
+ private java.util.Hashtable maShapeList;
+ private Rectangle maBoundingBox;
+ private Canvas maCanvas;
+ private javax.swing.JTree maTree;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.common b/accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.common
new file mode 100644
index 000000000000..df47f1bc8028
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.common
@@ -0,0 +1,34 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+JARFILES = jurt.jar unoil.jar ridl.jar
+JAVAFILES = \
+ CanvasShape.java \
+ Canvas.java \
+ MouseObserver.java \
+ ShapeContainer.java
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.mk b/accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.mk
new file mode 100644
index 000000000000..1e56c10c98b4
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/canvas/makefile.mk
@@ -0,0 +1,55 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = awb
+PRJ = ..$/..$/..$/..$/..$/..
+TARGET = awb_canvas
+PACKAGE = org$/openoffice$/accessibility$/awb$/canvas
+
+USE_JAVAVER:=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(JAVAVER:s/.//)" >= "140"
+
+.INCLUDE : makefile.common
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+#JARTARGET = $(TARGET).jar
+#JARCOMPRESS = TRUE
+JARCLASSDIRS = $(PACKAGE) org/openoffice/java/accessibility/awb
+#CUSTOMMANIFESTFILE = manifest
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/makefile.common b/accessibility/workben/org/openoffice/accessibility/awb/makefile.common
new file mode 100644
index 000000000000..0bf38a0fada2
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/makefile.common
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+JAVAFILES = \
+ AccessibilityWorkBench.java \
+ HelpWindow.java
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/makefile.mk b/accessibility/workben/org/openoffice/accessibility/awb/makefile.mk
new file mode 100644
index 000000000000..a07d631d6f11
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/makefile.mk
@@ -0,0 +1,57 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = awb
+PRJ = ..$/..$/..$/..$/..
+TARGET = java_awb
+PACKAGE = org$/openoffice$/accessibility$/awb
+
+USE_JAVAVER:=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(JAVAVER:s/.//)" >= "140"
+JARFILES = jurt.jar unoil.jar ridl.jar
+
+.INCLUDE : makefile.common
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+JARTARGET = $(TARGET).jar
+JARCOMPRESS = TRUE
+JARCLASSDIRS = $(PACKAGE) \
+ org$/openoffice$/accessibility$/misc
+CUSTOMMANIFESTFILE = manifest
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/manifest b/accessibility/workben/org/openoffice/accessibility/awb/manifest
new file mode 100644
index 000000000000..36111c54081d
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/manifest
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: org.openoffice.accessibility.awb.AccessibilityWorkBench
+Class-Path: classes.jar ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar xt.jar jaxp.jar
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityModel.java b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityModel.java
new file mode 100644
index 000000000000..159467778554
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityModel.java
@@ -0,0 +1,154 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.tree;
+
+import javax.swing.SwingUtilities;
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.MutableTreeNode;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.awt.XExtendedToolkit;
+import com.sun.star.awt.XTopWindow;
+import com.sun.star.awt.XTopWindowListener;
+import com.sun.star.accessibility.AccessibleRole;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleEventBroadcaster;
+import com.sun.star.accessibility.XAccessibleEventListener;
+
+/**
+ *
+ */
+public abstract class AccessibilityModel extends javax.swing.tree.DefaultTreeModel {
+
+ protected java.util.Hashtable nodeList;
+ protected static DefaultMutableTreeNode disconnectedRootNode =
+ new DefaultMutableTreeNode("<not connected>");
+
+ /** Creates a new instance of AccessibilityModel */
+ public AccessibilityModel() {
+ super(disconnectedRootNode, false);
+ nodeList = new java.util.Hashtable();
+ }
+
+ /* Convenience method that creates a new Toolkit node from xToolkit
+ * and sets as the new root object of the tree.
+ */
+ public synchronized void setRoot(XExtendedToolkit xToolkit) {
+ if (xToolkit != null) {
+ try {
+ // remove old root node as topwindow listener
+ if (getRoot() instanceof ToolkitNode) {
+ ToolkitNode tn = (ToolkitNode) getRoot();
+ if (tn.xToolkit != null) {
+ tn.xToolkit.removeTopWindowListener(tn);
+ }
+ }
+ nodeList.clear();
+ setRoot(new ToolkitNode(xToolkit, this));
+ xToolkit.addTopWindowListener((ToolkitNode) getRoot());
+ } catch (com.sun.star.uno.RuntimeException e) {
+ // FIXME: error message !
+ }
+ }
+ }
+
+ /* Appends the new child to parent's child list */
+ public void addNodeInto(MutableTreeNode newChild, MutableTreeNode parent) {
+ int index = parent.getChildCount();
+ if (newChild != null && newChild.getParent() == parent) {
+ index -= 1;
+ }
+ insertNodeInto(newChild, parent, index);
+ }
+
+ /** Adds listener to the listener chain of node */
+ public static void addEventListener(TreeNode node, XAccessibleEventListener listener) {
+ if (node instanceof AccessibilityNode) {
+ ((AccessibilityNode) node).addEventListener(listener);
+ }
+ }
+
+ /** Removes listener from the listener chain of node */
+ public static void removeEventListener(TreeNode node, XAccessibleEventListener listener) {
+ if (node instanceof AccessibilityNode) {
+ ((AccessibilityNode) node).removeEventListener(listener);
+ }
+ }
+
+ protected abstract AccessibilityNode createWindowNode(XAccessible xAccessible,
+ XAccessibleContext xAccessibleContext);
+ protected abstract AccessibilityNode createNode(XAccessible xAccessible);
+
+ /** Adds xAccessible,node to the internal hashtable */
+ public AccessibilityNode putNode(XAccessible xAccessible, AccessibilityNode node) {
+ if (xAccessible != null) {
+ String oid = UnoRuntime.generateOid(xAccessible);
+ java.lang.ref.WeakReference ref = (java.lang.ref.WeakReference)
+ nodeList.put(oid, new java.lang.ref.WeakReference(node));
+ if (ref != null) {
+ return (AccessibilityNode) ref.get();
+ }
+ }
+ return null;
+ }
+
+ /** Returns the AccessibilityNode for xAccessible */
+ public AccessibilityNode findNode(XAccessible xAccessible) {
+ if (xAccessible != null) {
+ String oid = UnoRuntime.generateOid(xAccessible);
+ java.lang.ref.WeakReference ref =
+ (java.lang.ref.WeakReference) nodeList.get(oid);
+ if (ref != null) {
+ return (AccessibilityNode) ref.get();
+ }
+ }
+ return null;
+ }
+
+ /** Removes the AccessibilityNode for xAccessible from the internal hashtable */
+ public AccessibilityNode removeNode(XAccessible xAccessible) {
+ if (xAccessible != null) {
+ String oid = UnoRuntime.generateOid(xAccessible);
+ java.lang.ref.WeakReference ref =
+ (java.lang.ref.WeakReference) nodeList.remove(oid);
+ if (ref != null) {
+ return (AccessibilityNode) ref.get();
+ }
+ }
+ return null;
+ }
+
+ public AccessibilityNode removeNode(Object o) {
+ if (o instanceof XAccessible) {
+ return removeNode((XAccessible) o);
+ }
+ return null;
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityNode.java b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityNode.java
new file mode 100644
index 000000000000..81a499aabf0d
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityNode.java
@@ -0,0 +1,163 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.tree;
+
+import org.openoffice.accessibility.misc.AccessibleEventMulticaster;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.SwingUtilities;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleEventBroadcaster;
+import com.sun.star.accessibility.XAccessibleEventListener;
+
+import com.sun.star.uno.UnoRuntime;
+
+class AccessibilityNode extends DefaultMutableTreeNode implements XAccessible,
+ XAccessibleEventListener, XAccessibleEventBroadcaster {
+
+ protected AccessibilityModel treeModel;
+ protected XAccessibleContext unoAccessibleContext;
+
+ private XAccessibleEventListener listener;
+
+ public AccessibilityNode(AccessibilityModel treeModel) {
+ this.treeModel = treeModel;
+ }
+
+ protected void finalize() throws java.lang.Throwable {
+ if (userObject != null) {
+ treeModel.removeNode(userObject);
+ }
+ }
+
+ /** Sets the XAccessibleContext object of this node */
+ public void setAccessibleContext(XAccessibleContext xAccessibleContext) {
+ unoAccessibleContext = xAccessibleContext;
+ }
+
+ /** Returns the XAccessibleContext object of this node */
+ public XAccessibleContext getAccessibleContext() {
+ return unoAccessibleContext;
+ }
+
+ /** Attaches or Detaches the itself as listener to unoAccessibleContext */
+ protected void setAttached(boolean attach) {
+ XAccessibleContext xAccessibleContext = unoAccessibleContext;
+ if (xAccessibleContext != null) {
+ try {
+ XAccessibleEventBroadcaster xAccessibleEventBroadcaster =
+ UnoRuntime.queryInterface( XAccessibleEventBroadcaster.class, xAccessibleContext );
+ if (xAccessibleEventBroadcaster != null) {
+ if (attach) {
+ xAccessibleEventBroadcaster.addEventListener(this);
+ } else {
+ xAccessibleEventBroadcaster.removeEventListener(this);
+ }
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ // FIXME: error message !
+ }
+ }
+ }
+
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ XAccessibleEventListener localListener = this.listener;
+ if (localListener != null) {
+ localListener.disposing(eventObject);
+ }
+
+ treeModel.removeNode(userObject);
+ userObject = null;
+ unoAccessibleContext = null;
+ // FIXME: mark the object as being disposed in the tree view !
+ }
+
+ protected void handleChildRemoved(XAccessible xAccessible) {
+ final AccessibilityNode node = treeModel.findNode(xAccessible);
+ if (node != null) {
+ SwingUtilities.invokeLater(new java.lang.Runnable() {
+ public void run() {
+ treeModel.removeNodeFromParent(node);
+ }
+ });
+ }
+ }
+
+ protected void handleChildAdded(XAccessible xAccessible) {
+ final AccessibilityNode parent = this;
+ final AccessibilityNode node = treeModel.createNode(xAccessible);
+ if (node != null) {
+ SwingUtilities.invokeLater(new java.lang.Runnable() {
+ public void run() {
+ try {
+ XAccessibleContext xAC = node.getAccessibleContext();
+ if (xAC != null) {
+ treeModel.insertNodeInto(node, parent,
+ xAC.getAccessibleIndexInParent());
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ // FIXME: output
+ }
+ }
+ });
+ }
+ }
+
+ public void notifyEvent(AccessibleEventObject accessibleEventObject) {
+ if (accessibleEventObject.EventId == AccessibleEventId.CHILD) {
+ XAccessible xAccessible = UnoRuntime.queryInterface( XAccessible.class, accessibleEventObject.OldValue );
+ if (xAccessible != null) {
+ handleChildRemoved(xAccessible);
+ }
+
+ xAccessible = UnoRuntime.queryInterface( XAccessible.class, accessibleEventObject.NewValue );
+ if (xAccessible != null) {
+ handleChildAdded(xAccessible);
+ }
+ }
+
+ XAccessibleEventListener localListener = this.listener;
+ if (localListener != null) {
+ localListener.notifyEvent(accessibleEventObject);
+ }
+ }
+
+ public synchronized void addEventListener(com.sun.star.accessibility.XAccessibleEventListener xAccessibleEventListener) {
+ listener = AccessibleEventMulticaster.add(listener, xAccessibleEventListener);
+ }
+
+ public synchronized void removeEventListener(com.sun.star.accessibility.XAccessibleEventListener xAccessibleEventListener) {
+ listener = AccessibleEventMulticaster.remove(listener, xAccessibleEventListener);
+ }
+}
+
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTree.java b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTree.java
new file mode 100644
index 000000000000..e485c993706a
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTree.java
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.tree;
+
+import org.openoffice.accessibility.misc.NameProvider;
+
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import com.sun.star.awt.XExtendedToolkit;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+
+/**
+ *
+ */
+public class AccessibilityTree extends javax.swing.JTree {
+
+ /** Creates a new instance of AccessibilityTree */
+ public AccessibilityTree(javax.swing.tree.TreeModel model) {
+ super(model);
+ // always show handles to indicate expandable / collapsable
+ showsRootHandles = true;
+ }
+
+ public void setToolkit(XExtendedToolkit xToolkit) {
+ AccessibilityModel model = (AccessibilityModel) getModel();
+ if (model != null) {
+ // hide the root node when connected
+ setRootVisible(xToolkit == null);
+ // update the root node
+ model.setRoot(xToolkit);
+ model.reload();
+ }
+ }
+
+ public String convertValueToText(Object value, boolean selected,
+ boolean expanded, boolean leaf, int row, boolean hasFocus) {
+
+ if (value instanceof DefaultMutableTreeNode) {
+ DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
+
+ Object userObject = node.getUserObject();
+ if (userObject != null && userObject instanceof XAccessible) {
+ XAccessible xAccessible = (XAccessible) userObject;
+ try {
+ XAccessibleContext xAC = xAccessible.getAccessibleContext();
+ if (xAC != null) {
+ String name = xAC.getAccessibleName();
+ if (name.length() == 0) {
+ name = new String ("<no name>");
+ }
+ value = name + " / " + NameProvider.getRoleName(xAC.getAccessibleRole());
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ value = "???";
+ }
+ }
+ }
+
+ return super.convertValueToText(value, selected, expanded, leaf, row, hasFocus);
+ }
+
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTreeModel.java b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTreeModel.java
new file mode 100644
index 000000000000..6069c8f5f5ee
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/AccessibilityTreeModel.java
@@ -0,0 +1,217 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.tree;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.awt.XExtendedToolkit;
+import com.sun.star.lang.DisposedException;
+import com.sun.star.lang.IndexOutOfBoundsException;
+
+import org.openoffice.accessibility.misc.OfficeConnection;
+import org.openoffice.accessibility.awb.event.EventQueue;
+
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeNode;
+
+
+public class AccessibilityTreeModel
+ extends DefaultTreeModel
+{
+ public AccessibilityTreeModel ()
+ {
+ super (null);
+ setAsksAllowsChildren (false);
+
+ SetRootNode();
+ }
+
+
+
+ /** Release all resources.
+ */
+ synchronized public void Dispose ()
+ {
+ Clear ();
+ }
+
+
+
+ /** Calls to this method are dispatched to the given node but are
+ observed for exceptions.
+ */
+ synchronized public boolean isLeaf (Object aObject)
+ {
+ boolean bIsLeaf = true;
+
+ if (aObject != null)
+ {
+ AccessibilityNode aNode = (AccessibilityNode)aObject;
+ try
+ {
+ bIsLeaf = aNode.isLeaf();
+ }
+ catch (DisposedException aException)
+ {
+ System.out.println ("node is disposed. removing it");
+ /* TreeNode aParent = aNode.GetParent();
+ int nIndexInParent = aParent.getIndex (aNode);
+ aNode.removeFromParent ();
+ System.out.println ("" + aParent + " # " + aNode + " # "+ nIndexInParent);
+ nodesWereRemoved (
+ aParent, new int[]{nIndexInParent}, new
+ Object[]{aNode});
+ */
+ }
+ catch (Exception aException)
+ {
+ System.err.println ("caught exception in AccessibilityTreeModel.isLeaf():"
+ + aException);
+ aException.printStackTrace (System.err);
+ }
+ }
+
+ return bIsLeaf;
+ }
+
+
+
+
+ synchronized public int getChildCount (Object aObject)
+ {
+ AccessibilityNode aNode = (AccessibilityNode)aObject;
+ return aNode.getChildCount();
+ }
+
+
+
+
+ /** Return the requested child of aParent. If that child is not yet
+ known to the parent then try to create it.
+ */
+ synchronized public Object getChild (Object aParent, final int nIndex)
+ {
+ AccessibilityNode aChild = null;
+
+ final AccessibilityNode aParentNode = (AccessibilityNode)aParent;
+
+ // Try to get an existing child from the super class object.
+ aChild = aParentNode.GetChildNoCreate (nIndex);
+
+ // When the requested child does not yet exist and this node is not a
+ // special node then create a new node.
+ if (aChild == null)
+ {
+ aChild = aParentNode.CreateChild (nIndex);
+ aParentNode.SetChild ((AccessibilityNode)aChild, nIndex);
+ /* EventQueue.Instance().AddEvent (new Runnable() { public void run() {
+ AccessibilityTreeModel.this.nodeWasInserted (
+ aParentNode, nIndex);
+ }});
+ */ }
+
+ return aChild;
+ }
+
+
+ synchronized public void nodeWasInserted (AccessibilityNode aParent, int nIndex)
+ {
+ nodesWereInserted (aParent, new int[]{nIndex});
+ nodeStructureChanged (aParent);
+
+ }
+
+
+
+
+ /** Clear the tree so that afterwards it has only the root node.
+ */
+ public void Clear ()
+ {
+ AccessibilityNode aRoot = (AccessibilityNode)getRoot();
+ aRoot.RemoveAllChildren();
+ SetRootNode();
+ nodeStructureChanged (aRoot);
+ }
+
+
+
+
+ private void SetRootNode ()
+ {
+ OfficeConnection aConnection = OfficeConnection.Instance();
+ AccessibilityNode aRoot;
+ if (aConnection!=null && aConnection.IsValid())
+ aRoot = new AccessibilityNode ("<connected>");
+ else
+ aRoot = new AccessibilityNode ("<not connected>");
+ setRoot (aRoot);
+ }
+
+
+
+
+ /** Add a new child to the root node.
+ */
+ public synchronized void AddTopLevelNode (AccessibilityNode aNode)
+ {
+ if (aNode != null)
+ {
+ if ( ! OfficeConnection.Instance().IsValid())
+ {
+ setRoot (null);
+ }
+
+ AccessibilityNode aRoot = (AccessibilityNode)getRoot();
+ if (aRoot == null)
+ {
+ aRoot = new AccessibilityNode ("<connected>");
+ setRoot (aRoot);
+ }
+
+ aNode.SetParent (aRoot);
+ aRoot.Append (aNode);
+ nodesWereInserted (aRoot, new int[]{aRoot.getIndex (aNode)});
+ }
+ }
+
+
+
+
+ /** Remove a node that is a direct child of the root.
+ */
+ public synchronized void RemoveTopLevelNode (AccessibilityNode aNode)
+ {
+ AccessibilityNode aRoot = (AccessibilityNode)getRoot();
+ if (aRoot != null)
+ {
+ int nIndex = aRoot.getIndex (aNode);
+ aRoot.Remove (aNode);
+ nodesWereRemoved (aRoot, new int[]{nIndex}, new Object[]{aNode});
+ }
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityModel.java b/accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityModel.java
new file mode 100644
index 000000000000..f2b4c6f0e97f
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityModel.java
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.tree;
+
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.MutableTreeNode;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.event.TreeExpansionListener;
+import javax.swing.event.TreeWillExpandListener;
+
+import com.sun.star.accessibility.AccessibleRole;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+
+/**
+ *
+ */
+public class DynamicAccessibilityModel extends AccessibilityModel implements TreeExpansionListener, TreeWillExpandListener {
+
+ /* Creates a AccessibilityNode object for a window */
+ protected AccessibilityNode createWindowNode(XAccessible xAccessible,
+ XAccessibleContext xAccessibleContext) {
+ if (xAccessible != null) {
+ // Some objects inherit XAccessible, but should not appear in
+ // the hierarchy as toplevels (like sub-menus), so they don't
+ // return an accessible context.
+ if (xAccessibleContext != null) {
+ AccessibilityNode node = new AccessibilityNode(this);
+ node.setUserObject(xAccessible);
+ node.setAccessibleContext(xAccessibleContext);
+ putNode(xAccessible, node);
+ return node;
+ }
+ }
+ return null;
+ }
+
+ /* Creates a DynamicAccessibilityNode object */
+ protected AccessibilityNode createNode(XAccessible xAccessible) {
+ if (xAccessible != null) {
+ try {
+ // Some objects inherit XAccessible, but should not appear in
+ // the hierarchy as toplevels (like sub-menus), so they don't
+ // return an accessible context.
+ XAccessibleContext xAccessibleContext = xAccessible.getAccessibleContext();
+ if (xAccessibleContext != null) {
+ AccessibilityNode node = new DynamicAccessibilityNode(this);
+ node.setUserObject(xAccessible);
+ node.setAccessibleContext(xAccessibleContext);
+ putNode(xAccessible, node);
+ return node;
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+ return null;
+ }
+
+ public void treeCollapsed(javax.swing.event.TreeExpansionEvent treeExpansionEvent) {
+ TreeNode node = (TreeNode) treeExpansionEvent.getPath().getLastPathComponent();
+ if (node instanceof DynamicAccessibilityNode) {
+ DynamicAccessibilityNode dynode = (DynamicAccessibilityNode) node;
+ dynode.clear();
+ }
+ }
+
+ public void treeExpanded(javax.swing.event.TreeExpansionEvent treeExpansionEvent) {
+ TreeNode node = (TreeNode) treeExpansionEvent.getPath().getLastPathComponent();
+ if (node instanceof AccessibilityNode) {
+ // Calling oneway methods from an UNO thread may cause
+ // deadlocks, so adding the listeners here.
+ for (java.util.Enumeration e = node.children(); e.hasMoreElements(); ) {
+ ((AccessibilityNode) e.nextElement()).setAttached(true);
+ }
+ }
+ }
+
+ public void treeWillCollapse(javax.swing.event.TreeExpansionEvent treeExpansionEvent)
+ throws javax.swing.tree.ExpandVetoException {
+ TreeNode node = (TreeNode) treeExpansionEvent.getPath().getLastPathComponent();
+ if (node instanceof AccessibilityNode) {
+ // Calling oneway methods from an UNO thread may cause
+ // deadlocks, so adding the listeners here.
+ for (java.util.Enumeration e = node.children(); e.hasMoreElements(); ) {
+ ((AccessibilityNode) e.nextElement()).setAttached(false);
+ }
+ }
+ }
+
+ public void treeWillExpand(javax.swing.event.TreeExpansionEvent treeExpansionEvent)
+ throws javax.swing.tree.ExpandVetoException {
+ TreeNode node = (TreeNode) treeExpansionEvent.getPath().getLastPathComponent();
+ if (node instanceof DynamicAccessibilityNode) {
+ DynamicAccessibilityNode dynode = (DynamicAccessibilityNode) node;
+ dynode.populate();
+ }
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityNode.java b/accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityNode.java
new file mode 100644
index 000000000000..a982ad71c4d5
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/DynamicAccessibilityNode.java
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.tree;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+
+/*
+ * This class is dynamic in the way that it does not contain any children
+ * until the node is going to be expanded. It also releases all children
+ * as soon as the node is collapsed again.
+ */
+class DynamicAccessibilityNode extends AccessibilityNode {
+
+ public DynamicAccessibilityNode(AccessibilityModel treeModel) {
+ super(treeModel);
+ }
+
+ // Populates the child list. Called by AccessibilityMode.treeWillExpand().
+ protected void populate() {
+ try {
+ XAccessibleContext xAC = getAccessibleContext();
+ if (xAC != null) {
+ int n = xAC.getAccessibleChildCount();
+ for (int i=0; i<n; i++) {
+ XAccessible xAccessible = xAC.getAccessibleChild(i);
+ AccessibilityNode node = treeModel.findNode(xAccessible);
+ if (node == null) {
+ node = treeModel.createNode(xAccessible);
+ }
+ if (node != null) {
+ // NOTE: do not send any tree notifications here !
+ add(node);
+ }
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ // This should never happen since we previously checked the child
+ // count.
+ // FIXME: error message
+ } catch (com.sun.star.uno.RuntimeException e) {
+ // FIXME: error message
+ }
+ }
+
+ // Clears the child list. Called by AccessibilityModel.treeCollapsed().
+ protected void clear() {
+ removeAllChildren();
+ }
+
+ /* This is called whenever the node is painted, no matter if collapsed
+ * or expanded. Making this a "life" value seems to be appropriate.
+ */
+ public boolean isLeaf() {
+ try {
+ XAccessibleContext xAC = getAccessibleContext();
+ if (xAC != null) {
+ return xAC.getAccessibleChildCount() == 0;
+ }
+ return true;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ return true;
+ }
+ }
+
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/Makefile b/accessibility/workben/org/openoffice/accessibility/awb/tree/Makefile
new file mode 100644
index 000000000000..579b8822ce76
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/Makefile
@@ -0,0 +1,40 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+all : package
+
+ROOT=../../../../..
+PACKAGE = org.openoffice.accessibility.awb.tree
+SUBDIRS =
+include makefile.common
+
+include $(ROOT)/makefile.in
+
+
+package : $(CLASS_FILES)
+
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/ToolkitNode.java b/accessibility/workben/org/openoffice/accessibility/awb/tree/ToolkitNode.java
new file mode 100644
index 000000000000..8eaa9dab6c02
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/ToolkitNode.java
@@ -0,0 +1,215 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.tree;
+
+import com.sun.star.accessibility.AccessibleRole;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+
+import com.sun.star.awt.XExtendedToolkit;
+import com.sun.star.awt.XTopWindow;
+
+import com.sun.star.uno.UnoRuntime;
+
+import javax.swing.SwingUtilities;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+/**
+ *
+ */
+public class ToolkitNode extends DefaultMutableTreeNode
+ implements com.sun.star.awt.XTopWindowListener {
+
+ protected XExtendedToolkit xToolkit;
+
+ private AccessibilityModel treeModel;
+
+ /** Creates a new instance of TopWindowListener */
+ public ToolkitNode(XExtendedToolkit xToolkit, AccessibilityModel treeModel) {
+ super("<connected>");
+ this.xToolkit = xToolkit;
+ this.treeModel = treeModel;
+
+ // Initially fill the child list
+ try {
+ for (int i=0,j=xToolkit.getTopWindowCount(); i<j; i++) {
+ XTopWindow xTopWindow = xToolkit.getTopWindow(i);
+ if (xTopWindow != null) {
+ AccessibilityNode an = getTopWindowNode(xTopWindow);
+ if (an != null) {
+ add(an);
+ // Calling oneway methods from an UNO thread may cause
+ // deadlocks, so adding the listeners here.
+ an.setAttached(true);
+ }
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ // This should never happen since we properly check the count
+ // before - anyway returning what we got so far.
+ }
+ }
+
+ /** Returns an AccessibilityNode if xAccessible has a valid toplevel */
+ private AccessibilityNode getTopWindowNode(XAccessible xAccessible) {
+ XAccessibleContext xAC = xAccessible.getAccessibleContext();
+ if (xAC != null) {
+ short role = xAC.getAccessibleRole();
+ if ((role == AccessibleRole.FRAME) || (role == AccessibleRole.DIALOG) || (role == AccessibleRole.WINDOW)) {
+ return treeModel.createWindowNode(xAccessible, xAC);
+ }
+ }
+ return null;
+ }
+
+ /** Returns an AccessibilityNode if xAccessible has a valid toplevel */
+ private AccessibilityNode getTopWindowNode(XAccessible xAccessible, XAccessibleContext xAC) {
+ if (xAC != null) {
+ short role = xAC.getAccessibleRole();
+ if ((role == AccessibleRole.FRAME) || (role == AccessibleRole.DIALOG) || (role == AccessibleRole.WINDOW)) {
+ AccessibilityNode parent = treeModel.createWindowNode(xAccessible, xAC);
+ if (parent != null) {
+ try {
+ int n = xAC.getAccessibleChildCount();
+ for (int i=0; i<n; i++) {
+ AccessibilityNode child = treeModel.createNode(xAC.getAccessibleChild(i));
+ if (child != null) {
+ parent.add(child);
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+
+ }
+ }
+ return parent;
+ }
+ }
+ return null;
+ }
+
+ /** Returns the XAccessible interface corresponding to the toplevel window */
+ private AccessibilityNode getTopWindowNode(XTopWindow w) {
+ XAccessible xAccessible = (XAccessible)
+ UnoRuntime.queryInterface(XAccessible.class, w);
+ if (xAccessible != null) {
+ // XTopWindows usually have an accessible parent, which is the
+ // native container window ..
+ XAccessibleContext xAC = xAccessible.getAccessibleContext();
+ if (xAC != null) {
+ XAccessible xParent = xAC.getAccessibleParent();
+ if (xParent != null) {
+ AccessibilityNode parent = getTopWindowNode(xParent);
+ AccessibilityNode child = treeModel.createNode(xAccessible);
+ if (parent != null && child != null) {
+ parent.add(child);
+ }
+ return parent;
+ } else {
+ return getTopWindowNode(xAccessible, xAC);
+ }
+ }
+ }
+ return null;
+ }
+
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ // FIXME : message
+ // prevent setRoot from removing this as event listener
+ xToolkit = null;
+ treeModel.setRoot(treeModel.disconnectedRootNode);
+ }
+
+ public void windowActivated(com.sun.star.lang.EventObject eventObject) {
+ }
+
+ public void windowClosed(com.sun.star.lang.EventObject eventObject) {
+ XAccessible xAccessible = (XAccessible) UnoRuntime.queryInterface(
+ XAccessible.class, eventObject.Source);
+ if (xAccessible != null) {
+ AccessibilityNode node = treeModel.findNode(xAccessible);
+
+ // The object implementing XTopWindow is often not the toplevel
+ // accessible object.
+ if (node != null && node.getParent() != this) {
+ node = (AccessibilityNode) node.getParent();
+ }
+
+ if (node != null) {
+ final AccessibilityNode an = node;
+ Runnable removeRun = new Runnable() {
+ public void run() {
+ try {
+ treeModel.removeNodeFromParent(an);
+ // Calling oneway methods from an UNO thread may cause
+ // deadlocks, so removing the listeners here.
+ an.setAttached(false);
+ } catch (IllegalArgumentException e) {
+ // for some toplevel we get more than one event -
+ // ignoring
+ }
+ }
+ };
+ SwingUtilities.invokeLater(removeRun);
+ }
+ }
+ }
+
+ public void windowClosing(com.sun.star.lang.EventObject eventObject) {
+ }
+
+ public void windowDeactivated(com.sun.star.lang.EventObject eventObject) {
+ }
+
+ public void windowMinimized(com.sun.star.lang.EventObject eventObject) {
+ }
+
+ public void windowNormalized(com.sun.star.lang.EventObject eventObject) {
+ }
+
+ public void windowOpened(com.sun.star.lang.EventObject eventObject) {
+ final XTopWindow xTopWindow = (XTopWindow) UnoRuntime.queryInterface(
+ XTopWindow.class, eventObject.Source);
+ if (xTopWindow != null) {
+ final ToolkitNode tn = this;
+ Runnable addNodeRun = new Runnable() {
+ public void run() {
+ // Note: UNO does not allow to make synchronous callbacks
+ // to oneway calls, so we have to fetch the node here.
+ AccessibilityNode an = getTopWindowNode(xTopWindow);
+ if (an != null) {
+ treeModel.addNodeInto(an, tn);
+ // Calling oneway methods from an UNO thread may cause
+ // deadlocks, so adding the listeners here.
+ an.setAttached(true);
+ }
+ }
+ };
+ SwingUtilities.invokeLater(addNodeRun);
+ }
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.common b/accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.common
new file mode 100644
index 000000000000..e44be51360e7
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.common
@@ -0,0 +1,35 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+JARFILES = jurt.jar unoil.jar ridl.jar
+JAVAFILES = \
+ AccessibilityModel.java \
+ AccessibilityNode.java \
+ AccessibilityTree.java \
+ DynamicAccessibilityModel.java \
+ DynamicAccessibilityNode.java \
+ ToolkitNode.java
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.mk b/accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.mk
new file mode 100644
index 000000000000..0135ca9d6422
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/tree/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = awb
+PRJ = ..$/..$/..$/..$/..$/..
+TARGET = java_tree
+PACKAGE = org$/openoffice$/accessibility$/awb$/tree
+
+USE_JAVAVER:=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(JAVAVER:s/.//)" >= "140"
+
+.INCLUDE : makefile.common
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ComponentView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ComponentView.java
new file mode 100644
index 000000000000..d4c0e102b7a9
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ComponentView.java
@@ -0,0 +1,195 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Color;
+import java.awt.Dimension;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JLabel;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleComponent;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.uno.UnoRuntime;
+
+import org.openoffice.accessibility.misc.NameProvider;
+
+/** The <type>ContextView</type> class displays information accessible over
+ the <type>XAccessibleContext</type> interface. This includes name,
+ description, and role.
+*/
+public class ComponentView
+ extends ObjectView
+{
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ if (UnoRuntime.queryInterface(
+ XAccessibleComponent.class, xContext) != null)
+ return new ComponentView (aContainer);
+ else
+ return null;
+ }
+
+ public ComponentView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ ViewGridLayout aLayout = new ViewGridLayout (this);
+
+ maRelativeLocationLabel = aLayout.AddLabeledEntry ("Relative Location: ");
+ maAbsoluteLocationLabel = aLayout.AddLabeledEntry ("Location on Screen: ");
+ maSizeLabel = aLayout.AddLabeledEntry ("Size");
+ maBoundingBoxLabel = aLayout.AddLabeledEntry ("Bounding Box: ");
+ maConsistencyLabel = aLayout.AddLabeledEntry ("Consistent: ");
+ maForegroundColorLabel = aLayout.AddLabeledEntry ("Foreground Color: ");
+ maBackgroundColorLabel = aLayout.AddLabeledEntry ("Background Color: ");
+ }
+
+
+ public void SetObject (XAccessibleContext xContext)
+ {
+ mxComponent = (XAccessibleComponent)UnoRuntime.queryInterface(
+ XAccessibleComponent.class, xContext);
+ super.SetObject (xContext);
+ }
+
+ public void Update ()
+ {
+ if (mxContext == null)
+ {
+ maRelativeLocationLabel.setText ("<null object>");
+ maAbsoluteLocationLabel.setText ("<null object>");
+ maSizeLabel.setText ("<null object>");
+ maBoundingBoxLabel.setText ("<null object>");
+ maConsistencyLabel.setText ("<null object>");
+ maForegroundColorLabel.setText ("<null object>");
+ maBackgroundColorLabel.setText ("<null object>");
+ }
+ else
+ {
+ com.sun.star.awt.Point aLocation = mxComponent.getLocation();
+ maRelativeLocationLabel.setText (
+ aLocation.X + ", " + aLocation.Y);
+ com.sun.star.awt.Point aLocationOnScreen =
+ mxComponent.getLocationOnScreen();
+ maAbsoluteLocationLabel.setText (
+ aLocationOnScreen.X + ", " + aLocationOnScreen.Y);
+ com.sun.star.awt.Size aSize = mxComponent.getSize();
+ maSizeLabel.setText (
+ aSize.Width + ", " + aSize.Height);
+ com.sun.star.awt.Rectangle aBBox = mxComponent.getBounds();
+ maBoundingBoxLabel.setText (
+ aBBox.X + ", " + aBBox.Y + ","
+ + aBBox.Width + ", " + aBBox.Height);
+ int nColor = mxComponent.getForeground();
+ maForegroundColorLabel.setText (
+ "R"+ (nColor>>16&0xff)
+ + "G" + (nColor>>8&0xff)
+ + "B" + (nColor>>0&0xff)
+ + "A" + (nColor>>24&0xff));
+ nColor = mxComponent.getBackground();
+ maBackgroundColorLabel.setText (
+ "R"+ (nColor>>16&0xff)
+ + "G" + (nColor>>8&0xff)
+ + "B" + (nColor>>0&0xff)
+ + "A" + (nColor>>24&0xff));
+
+ // Check consistency of coordinates.
+ String sConsistency = new String ();
+ if (aBBox.X!=aLocation.X || aBBox.Y!=aLocation.Y)
+ sConsistency += (sConsistency.length()!=0?", ":"") +
+ "Bounding box conflicts with relative location";
+ if (aBBox.Width!=aSize.Width || aBBox.Height!=aSize.Height)
+ sConsistency += (sConsistency.length()!=0?", ":"") +
+ "Bounding box conflicts with size";
+ XAccessible xParent = mxContext.getAccessibleParent();
+ XAccessibleComponent xParentComponent =
+ (XAccessibleComponent)UnoRuntime.queryInterface(
+ XAccessibleComponent.class, xParent);
+ if (xParentComponent == null)
+ {
+ if (aLocation.X != aLocationOnScreen.X
+ || aLocation.Y != aLocationOnScreen.Y)
+ sConsistency += (sConsistency.length()!=0?", ":"") +
+ "location on screen does not equal "
+ + "relative location without parent";
+ }
+ else
+ {
+ com.sun.star.awt.Point aParentLocationOnScreen =
+ xParentComponent.getLocationOnScreen();
+ if (aLocation.X+aParentLocationOnScreen.X
+ != aLocationOnScreen.X
+ || aLocation.Y+aParentLocationOnScreen.Y
+ != aLocationOnScreen.Y)
+ sConsistency += (sConsistency.length()!=0?", ":"") +
+ "location on screen does not match "
+ + "relative location";
+ }
+ if (sConsistency.length() == 0)
+ sConsistency += "yes";
+ else
+ maConsistencyLabel.setBackground (GetContainer().GetErrorColor());
+ maConsistencyLabel.setText (sConsistency);
+ }
+ }
+
+ public String GetTitle ()
+ {
+ return ("Component");
+ }
+
+ /** Listen for changes regarding displayed values.
+ */
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ switch (aEvent.EventId)
+ {
+ case AccessibleEventId.BOUNDRECT_CHANGED :
+ case AccessibleEventId.VISIBLE_DATA_CHANGED :
+ Update ();
+ }
+ }
+
+ private XAccessibleComponent mxComponent;
+ private JLabel
+ maRelativeLocationLabel,
+ maAbsoluteLocationLabel,
+ maSizeLabel,
+ maBoundingBoxLabel,
+ maConsistencyLabel,
+ maForegroundColorLabel,
+ maBackgroundColorLabel;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ContextView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ContextView.java
new file mode 100644
index 000000000000..a8588cd18ca6
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ContextView.java
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Color;
+import java.awt.Dimension;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessibleContext;
+
+import org.openoffice.accessibility.misc.NameProvider;
+
+/** The <type>ContextView</type> class displays information accessible over
+ the <type>XAccessibleContext</type> interface. This includes name,
+ description, and role.
+*/
+public class ContextView
+ extends ObjectView
+ implements ActionListener
+{
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ if (xContext != null)
+ return new ContextView (aContainer);
+ else
+ return null;
+ }
+
+ public ContextView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ ViewGridLayout aLayout = new ViewGridLayout (this);
+ maNameLabel = aLayout.AddLabeledString ("Name:");
+ maDescriptionLabel = aLayout.AddLabeledString ("Description:");
+ maRoleLabel = aLayout.AddLabeledEntry ("Role:");
+ }
+
+ public void Update ()
+ {
+ if (mxContext == null)
+ {
+ maNameLabel.setText ("<null object>");
+ maDescriptionLabel.setText ("<null object>");
+ maRoleLabel.setText ("<null object>");
+ }
+ else
+ {
+ maNameLabel.setText (mxContext.getAccessibleName());
+ maDescriptionLabel.setText (mxContext.getAccessibleDescription());
+ maRoleLabel.setText (NameProvider.getRoleName (mxContext.getAccessibleRole()));
+ }
+ }
+
+ public String GetTitle ()
+ {
+ return ("Context");
+ }
+
+ /** Listen for changes regarding displayed values.
+ */
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ switch (aEvent.EventId)
+ {
+ case AccessibleEventId.NAME_CHANGED :
+ case AccessibleEventId.DESCRIPTION_CHANGED :
+ Update ();
+ }
+ }
+
+ public void actionPerformed (ActionEvent aEvent)
+ {
+ }
+
+
+ private JLabel
+ maNameLabel,
+ maDescriptionLabel,
+ maRoleLabel;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/EditableTextView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/EditableTextView.java
new file mode 100644
index 000000000000..2e39f117f62e
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/EditableTextView.java
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import javax.swing.JButton;
+
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleEditableText;
+import com.sun.star.uno.UnoRuntime;
+
+import org.openoffice.accessibility.awb.view.text.TextDialogFactory;
+
+
+public class EditableTextView
+ extends ObjectView
+ implements ActionListener
+{
+ /** Create a EditableTextView when the given object supports the
+ XAccessibleEditableText interface.
+ */
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ XAccessibleEditableText xEditableText =
+ (XAccessibleEditableText)UnoRuntime.queryInterface(
+ XAccessibleEditableText.class, xContext);
+ if (xEditableText != null)
+ return new EditableTextView (aContainer);
+ else
+ return null;
+ }
+
+ public EditableTextView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ JButton aButton = new JButton ("cut...");
+ aButton.setFont (ViewGridLayout.GetFont());
+ aButton.addActionListener (this);
+ add (aButton);
+ aButton = new JButton ("paste...");
+ aButton.setFont (ViewGridLayout.GetFont());
+ aButton.addActionListener (this);
+ add (aButton);
+ aButton = new JButton ("edit...");
+ aButton.setFont (ViewGridLayout.GetFont());
+ aButton.addActionListener (this);
+ add (aButton);
+ aButton = new JButton ("format...");
+ aButton.setFont (ViewGridLayout.GetFont());
+ aButton.addActionListener (this);
+ add (aButton);
+ }
+
+
+ /** Additionally to the context store a reference to the
+ XAccessibleEditableText interface.
+ */
+ public void SetObject (XAccessibleContext xObject)
+ {
+ mxEditableText = (XAccessibleEditableText)UnoRuntime.queryInterface(
+ XAccessibleEditableText.class, xObject);
+ super.SetObject (xObject);
+ }
+
+ public String GetTitle ()
+ {
+ return ("Editable Text");
+ }
+
+ synchronized public void Destroy ()
+ {
+ mxEditableText = null;
+ super.Destroy();
+ }
+
+ public void actionPerformed (ActionEvent aEvent)
+ {
+ String sCommand = aEvent.getActionCommand();
+ if (sCommand.equals ("cut..."))
+ TextDialogFactory.CreateCutDialog (mxContext);
+ else if (sCommand.equals ("past..."))
+ TextDialogFactory.CreatePasteDialog (mxContext);
+ else if (sCommand.equals ("edit..."))
+ TextDialogFactory.CreateEditDialog (mxContext);
+ else if (sCommand.equals ("format..."))
+ TextDialogFactory.CreateFormatDialog (mxContext);
+ }
+
+ private XAccessibleEditableText mxEditableText;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/EventMonitorView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/EventMonitorView.java
new file mode 100644
index 000000000000..67e8091e027f
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/EventMonitorView.java
@@ -0,0 +1,126 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.BorderLayout;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics;
+import javax.swing.JScrollBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessibleContext;
+
+import org.openoffice.accessibility.misc.NameProvider;
+
+
+/** A simple event monitor that shows all events sent to one accessible
+ object.
+*/
+class EventMonitorView
+ extends ObjectView
+{
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ if (xContext != null)
+ return new EventMonitorView (aContainer);
+ else
+ return null;
+ }
+
+ public EventMonitorView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+ mnLineNo = 0;
+ Layout();
+ }
+
+ public String GetTitle ()
+ {
+ return "Event Monitor";
+ }
+
+ /** Create and arrange the widgets for this view.
+ */
+ private void Layout ()
+ {
+ setLayout (new GridBagLayout ());
+
+ maText = new JTextArea();
+ maText.setBackground (new Color (255,250,240));
+ maText.setFont (new Font ("Helvetica", Font.PLAIN, 9));
+
+ maScrollPane = new JScrollPane (maText,
+ JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+ JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+ maScrollPane.setPreferredSize (new Dimension (300,200));
+
+ GridBagConstraints aConstraints = new GridBagConstraints ();
+ aConstraints.weightx = 1;
+ aConstraints.fill = GridBagConstraints.HORIZONTAL;
+ add (maScrollPane, aConstraints);
+ }
+
+
+ public void Update ()
+ {
+ }
+
+
+ private void UpdateVerticalScrollBar ()
+ {
+ JScrollBar sb = maScrollPane.getVerticalScrollBar();
+ if (sb != null)
+ {
+ int nScrollBarValue = sb.getMaximum() - sb.getVisibleAmount() - 1;
+ sb.setValue (nScrollBarValue);
+ }
+ }
+
+
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ maText.append ((mnLineNo++) + ". " + NameProvider.getEventName (aEvent.EventId) + " : "
+ + aEvent.OldValue.toString()
+ + " -> "
+ + aEvent.NewValue.toString() + "\n");
+ UpdateVerticalScrollBar();
+ }
+
+ private JTextArea maText;
+ private int mnLineNo;
+ private JScrollPane maScrollPane;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/FocusView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/FocusView.java
new file mode 100644
index 000000000000..4dec27958d71
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/FocusView.java
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.AccessibleStateType;
+import com.sun.star.accessibility.XAccessibleComponent;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleStateSet;
+import com.sun.star.uno.UnoRuntime;
+
+public class FocusView
+ extends ObjectView
+ implements ActionListener
+{
+ /** Create a FocusView when the given object supports the
+ XAccessibleComponent interface.
+ */
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ XAccessibleComponent xComponent = (XAccessibleComponent)UnoRuntime.queryInterface(
+ XAccessibleComponent.class, xContext);
+ if (xComponent != null)
+ return new FocusView (aContainer);
+ else
+ return null;
+ }
+
+ public FocusView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ setLayout (new GridBagLayout());
+ GridBagConstraints aConstraints = new GridBagConstraints ();
+
+ maFocused = new JLabel ();
+ maFocused.setFont (GetContainer().GetViewFont());
+ aConstraints.gridy = 0;
+ aConstraints.weightx = 1;
+ aConstraints.fill = GridBagConstraints.HORIZONTAL;
+ add (maFocused, aConstraints);
+
+ maGrabFocus = new JButton ("grabFocus");
+ maGrabFocus.setFont (GetContainer().GetViewFont());
+ aConstraints.gridy = 1;
+ aConstraints.fill = GridBagConstraints.NONE;
+ aConstraints.anchor = GridBagConstraints.WEST;
+ add (maGrabFocus, aConstraints);
+
+ maGrabFocus.addActionListener (this);
+ }
+
+ /** Additionally to the context store a reference to the
+ XAccessibleComponent interface.
+ */
+ public void SetObject (XAccessibleContext xObject)
+ {
+ mxComponent = (XAccessibleComponent)UnoRuntime.queryInterface(
+ XAccessibleComponent.class, xObject);
+ super.SetObject (xObject);
+ }
+
+ synchronized public void Destroy ()
+ {
+ super.Destroy();
+ maGrabFocus.removeActionListener (this);
+ }
+
+ synchronized public void Update ()
+ {
+ if (mxContext == null)
+ {
+ maFocused.setText ("<null object>");
+ maGrabFocus.setEnabled (false);
+ }
+ else
+ {
+ XAccessibleStateSet aStateSet = mxContext.getAccessibleStateSet();
+ if (aStateSet.contains(AccessibleStateType.FOCUSED))
+ maFocused.setText ("focused");
+ else
+ maFocused.setText ("not focused");
+ if (maGrabFocus != null)
+ maGrabFocus.setEnabled (true);
+ }
+ }
+
+ public String GetTitle ()
+ {
+ return ("Focus");
+ }
+
+ synchronized public void actionPerformed (ActionEvent aEvent)
+ {
+ if (aEvent.getActionCommand().equals("grabFocus"))
+ {
+ mxComponent.grabFocus();
+ }
+ }
+
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ System.out.println (aEvent);
+ if (aEvent.EventId == AccessibleEventId.STATE_CHANGED)
+ Update ();
+ }
+
+ private JLabel maFocused;
+ private JButton maGrabFocus;
+ private XAccessibleComponent mxComponent;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/LayoutManager.java b/accessibility/workben/org/openoffice/accessibility/awb/view/LayoutManager.java
new file mode 100644
index 000000000000..728b3dc426d7
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/LayoutManager.java
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.Point;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseEvent;
+import javax.swing.JComponent;
+
+class LayoutManager
+ implements MouseListener,
+ MouseMotionListener
+{
+ public LayoutManager (JComponent aLayoutedComponent)
+ {
+ maLayoutedComponent = aLayoutedComponent;
+ maDraggedView = null;
+ mbInsertionPending = false;
+ }
+
+ public void mouseClicked (MouseEvent aEvent)
+ {
+ System.out.println (aEvent);
+ }
+ public void mousePressed (MouseEvent aEvent)
+ {
+ mnOldY = aEvent.getPoint().y;
+ }
+ public void mouseReleased (MouseEvent aEvent)
+ {
+ if (mbInsertionPending)
+ {
+ InsertView (maDraggedView, aEvent.getPoint().y);
+ mbInsertionPending = false;
+ maDraggedView = null;
+ }
+ }
+ public void mouseEntered (MouseEvent aEvent)
+ {
+ }
+ public void mouseExited (MouseEvent aEvent)
+ {
+ if (mbInsertionPending)
+ {
+ InsertView (maDraggedView, mnOldY);
+ mbInsertionPending = false;
+ maDraggedView = null;
+ }
+ }
+ public void mouseDragged (MouseEvent aEvent)
+ {
+ int dy = mnOldY - aEvent.getPoint().y;
+ GridBagLayout aLayout = (GridBagLayout)maLayoutedComponent.getLayout();
+ if ( ! mbInsertionPending && dy != 0)
+ {
+ maDraggedView = RemoveView (mnOldY);
+ if (maDraggedView != null)
+ mbInsertionPending = true;
+ }
+ }
+ public void mouseMoved (MouseEvent aEvent)
+ {
+ }
+
+
+
+
+ private ObjectView RemoveView (int y)
+ {
+ ObjectView aView = null;
+ GridBagLayout aLayout = (GridBagLayout)maLayoutedComponent.getLayout();
+
+ Point aGridLocation = aLayout.location (10,y);
+ Component[] aComponentList = maLayoutedComponent.getComponents();
+ System.out.println ("removing view at " + aGridLocation);
+ for (int i=0; i<aComponentList.length && aView==null; i++)
+ {
+ GridBagConstraints aConstraints = aLayout.getConstraints (
+ aComponentList[i]);
+ if (aConstraints.gridy == aGridLocation.y)
+ aView = (ObjectView)aComponentList[i];
+ }
+ maNormalCursor = maLayoutedComponent.getCursor();
+ if (aView != null)
+ {
+ System.out.println ("removing view at " + aGridLocation.y);
+ maLayoutedComponent.setCursor (new Cursor (Cursor.MOVE_CURSOR));
+ maLayoutedComponent.remove (aView);
+ maLayoutedComponent.validate();
+ maLayoutedComponent.repaint();
+ }
+
+ return aView;
+ }
+
+ private void InsertView (ObjectView aView, int y)
+ {
+ if (aView != null)
+ {
+ GridBagLayout aLayout = (GridBagLayout)maLayoutedComponent.getLayout();
+ Point aGridLocation = aLayout.location (0,y);
+ Component[] aComponentList = maLayoutedComponent.getComponents();
+ System.out.println ("new position is " + aGridLocation.y);
+ for (int i=0; i<aComponentList.length; i++)
+ {
+ GridBagConstraints aConstraints = aLayout.getConstraints (
+ aComponentList[i]);
+ if (aConstraints.gridy >= aGridLocation.y)
+ {
+ if (aConstraints.gridy == aGridLocation.y)
+ maLayoutedComponent.add (maDraggedView, aConstraints);
+ aConstraints.gridy += 1;
+ aLayout.setConstraints (aComponentList[i], aConstraints);
+ }
+ }
+ maLayoutedComponent.validate();
+ maLayoutedComponent.repaint();
+ }
+ maLayoutedComponent.setCursor (maNormalCursor);
+ }
+
+
+
+
+ private JComponent maLayoutedComponent;
+ private ObjectView maDraggedView;
+ private int mnOldY;
+ private boolean mbInsertionPending;
+ private Cursor maNormalCursor;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/Makefile b/accessibility/workben/org/openoffice/accessibility/awb/view/Makefile
new file mode 100644
index 000000000000..2e4eb1566afd
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/Makefile
@@ -0,0 +1,13 @@
+# $Id: Makefile,v 1.1 2003/06/13 16:30:34 af Exp $
+
+all : package
+
+ROOT=../../../../..
+PACKAGE = org.openoffice.accessibility.awb.view
+SUBDIRS = text
+include makefile.common
+
+include $(ROOT)/makefile.in
+
+
+package : $(CLASS_FILES)
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectView.java
new file mode 100644
index 000000000000..3c1b8e90ff26
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectView.java
@@ -0,0 +1,90 @@
+package org.openoffice.accessibility.awb.view;
+
+import javax.swing.JPanel;
+
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessibleContext;
+
+/** This is the base class for all object views that can be placed inside an
+ object view container.
+
+ <p>When provided with a new accessible object the container will call
+ the Create method to create a new instance when certain conditions are
+ met. It then calls SetObject to pass the object to the instance.
+ Finally it calls Update.</p>
+
+ <p>The SetObject and Update methods may be called for a new object
+ without calling Create first. In this way an existing instance is
+ recycled.</p>
+*/
+abstract public class ObjectView
+ extends JPanel
+{
+ /** This factory method creates a new instance of the (derived) class
+ when the given accessible object supports all necessary features.
+ In the ususal case this will be the support of a specific
+ accessibility interface.
+ */
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ return null;
+ }
+
+ public ObjectView (ObjectViewContainer aContainer)
+ {
+ maContainer = aContainer;
+ mxContext = null;
+ }
+
+ /** Call this when you want the object to be destroyed. Release all
+ resources when called.
+ */
+ public void Destroy ()
+ {
+ }
+
+ /** Tell the view to display information for a new accessible object.
+ @param xObject
+ The given object may be null. A typical behaviour in this case
+ would be to display a blank area. But is also possible to show
+ information about the last object.
+ */
+ public void SetObject (XAccessibleContext xContext)
+ {
+ mxContext = xContext;
+ Update ();
+ }
+
+
+ /** This is a request of a repaint with the current state of the current
+ object. The current object may or may not be the same as the one
+ when Update() was called the last time.
+ */
+ public void Update ()
+ {
+ }
+
+
+ /** Return a string that is used as a title of an enclosing frame.
+ */
+ abstract public String GetTitle ();
+
+
+ public ObjectViewContainer GetContainer ()
+ {
+ return maContainer;
+ }
+
+
+ /** Implement this method if you are interested in accessible events.
+ */
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {}
+
+ /// Reference to the current object to display information about.
+ protected XAccessibleContext mxContext;
+
+ protected ObjectViewContainer maContainer;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainer.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainer.java
new file mode 100644
index 000000000000..54855cbaf885
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainer.java
@@ -0,0 +1,310 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.Insets;
+
+import java.util.Vector;
+
+import java.lang.reflect.Method;
+import java.lang.NoSuchMethodException;
+import java.lang.IllegalAccessException;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.swing.JPanel;
+import javax.swing.JTree;
+import javax.swing.BorderFactory;
+import javax.swing.border.Border;
+import javax.swing.border.BevelBorder;
+import javax.swing.SwingUtilities;
+
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleComponent;
+import com.sun.star.accessibility.XAccessibleEventBroadcaster;
+import com.sun.star.accessibility.XAccessibleEventListener;
+import com.sun.star.accessibility.XAccessibleSelection;
+import com.sun.star.lang.EventObject;
+import com.sun.star.uno.UnoRuntime;
+
+import org.openoffice.accessibility.awb.view.ObjectView;
+
+
+
+/** This container of specialized object views displays information about
+ one accessible object.
+ In this it plays several roles:
+ 1. Object container.
+ 2. Accessibility event dispatcher.
+ 3. Object view class registration manager.
+ 4. Swing widget.
+*/
+public class ObjectViewContainer
+ extends JPanel
+ implements XAccessibleEventListener
+{
+ public ObjectViewContainer ()
+ {
+ maFont = new Font ("Dialog", Font.PLAIN, 11);
+ maViewTemplates = new Vector ();
+ maViewBorder = BorderFactory.createBevelBorder (BevelBorder.RAISED);
+ GridBagLayout aLayout = new GridBagLayout ();
+ setLayout (aLayout);
+ // maLayoutManager = new LayoutManager (this);
+ maLayoutManager = null;
+
+ RegisterView (ContextView.class);
+ RegisterView (ComponentView.class);
+ RegisterView (ParentView.class);
+ RegisterView (StateSetView.class);
+ RegisterView (FocusView.class);
+ RegisterView (TextView.class);
+ RegisterView (EditableTextView.class);
+ RegisterView (TableView.class);
+ RegisterView (SelectionView.class);
+ RegisterView (ServiceInterfaceView.class);
+ RegisterView (EventMonitorView.class);
+
+ mxContext = null;
+
+ // addMouseListener (maLayoutManager);
+ // addMouseMotionListener (maLayoutManager);
+ }
+
+
+
+ /** Remove all existing views and create new ones according to the
+ interfaces supported by the given object.
+ */
+ public synchronized void SetObject (XAccessibleContext xContext)
+ {
+ // Call Destroy at all views to give them a chance to release their
+ // resources.
+ int n = getComponentCount();
+ for (int i=0; i<n; i++)
+ ((ObjectView)getComponent(i)).Destroy();
+ // Remove existing views.
+ removeAll ();
+
+ mxContext = xContext;
+
+ // Add new views.
+ for (int i=0; i<maViewTemplates.size(); i++)
+ {
+ try
+ {
+ Class aViewClass = (Class)maViewTemplates.elementAt (i);
+ Method aCreateMethod = aViewClass.getDeclaredMethod (
+ "Create", new Class[] {
+ ObjectViewContainer.class,
+ XAccessibleContext.class});
+ if (aCreateMethod != null)
+ {
+ ObjectView aView = (ObjectView)
+ aCreateMethod.invoke (
+ null, new Object[] {this, xContext});
+ Add (aView);
+ }
+ }
+ catch (NoSuchMethodException e)
+ {System.err.println ("Caught exception while creating view "
+ + i + " : " + e);}
+ catch (IllegalAccessException e)
+ {System.err.println ("Caught exception while creating view "
+ + i + " : " + e);}
+ catch (InvocationTargetException e)
+ {System.err.println ("Caught exception while creating view "
+ + i + " : " + e);}
+ }
+
+ UpdateLayoutManager ();
+
+ // Now set the object at all views.
+ n = getComponentCount();
+ for (int i=0; i<n; i++)
+ ((ObjectView)getComponent(i)).SetObject (xContext);
+
+ setPreferredSize (getLayout().preferredLayoutSize (this));
+ ((GridBagLayout) getLayout()).invalidateLayout(this);
+ validate();
+ }
+
+
+
+
+ /** Add the given class to the list of classes which will be
+ instantiated the next time an accessible object is set.
+ */
+ public void RegisterView (Class aObjectViewClass)
+ {
+ maViewTemplates.addElement (aObjectViewClass);
+ }
+
+
+
+
+ /** Replace one view class with another.
+ */
+ public void ReplaceView (Class aObjectViewClass, Class aSubstitution)
+ {
+ int nIndex = maViewTemplates.indexOf (aObjectViewClass);
+ if (nIndex >= 0)
+ maViewTemplates.setElementAt (aSubstitution, nIndex);
+ }
+
+
+ /** Return a font that should be used for widgets in the views.
+ */
+ public Font GetViewFont ()
+ {
+ return maFont;
+ }
+
+ public Color GetErrorColor ()
+ {
+ return new Color (255,80,50);
+ }
+
+ /** Add an object view and place it below all previously added views.
+ @param aView
+ This argument may be null. In this case nothing happens.
+ */
+ private void Add (ObjectView aView)
+ {
+ if (aView != null)
+ {
+ GridBagConstraints constraints = new GridBagConstraints ();
+ constraints.gridx = 0;
+ constraints.gridy = getComponentCount();
+ constraints.gridwidth = 1;
+ constraints.gridheight = 1;
+ constraints.weightx = 1;
+ constraints.weighty = 0;
+ constraints.ipadx = 2;
+ constraints.ipady = 5;
+ constraints.insets = new Insets (5,5,5,5);
+ constraints.anchor = GridBagConstraints.NORTH;
+ constraints.fill = GridBagConstraints.HORIZONTAL;
+
+ aView.setBorder (
+ BorderFactory.createTitledBorder (
+ maViewBorder, aView.GetTitle()));
+
+ add (aView, constraints);
+ }
+ }
+
+ /** Update the layout manager by setting the vertical weight of the
+ bottom entry to 1 and so make it strech to over the available
+ space.
+
+ */
+ private void UpdateLayoutManager ()
+ {
+ // Adapt the layout manager.
+ if (getComponentCount() > 1000)
+ {
+ Component aComponent = getComponent (getComponentCount()-1);
+ GridBagLayout aLayout = (GridBagLayout)getLayout();
+ GridBagConstraints aConstraints = aLayout.getConstraints (aComponent);
+ aConstraints.weighty = 1;
+ aLayout.setConstraints (aComponent, aConstraints);
+ }
+ }
+
+
+
+
+ /** Put the event just received into the event queue which will deliver
+ it soon asynchronuously to the DispatchEvent method.
+ */
+ public void notifyEvent (final AccessibleEventObject aEvent)
+ {
+ SwingUtilities.invokeLater(
+ new Runnable()
+ {
+ public void run()
+ {
+ DispatchEvent (aEvent);
+ }
+ }
+ );
+ }
+
+
+
+
+ /** Forward accessibility events to all views without them being
+ registered as event listeners each on their own.
+ */
+ private void DispatchEvent (AccessibleEventObject aEvent)
+ {
+ int n = getComponentCount();
+ for (int i=0; i<n; i++)
+ ((ObjectView)getComponent(i)).notifyEvent (aEvent);
+ }
+
+
+
+ /** When the object is disposed that is displayed by the views of this
+ container then tell all views about this.
+ */
+ public void disposing (EventObject aEvent)
+ {
+ mxContext = null;
+ SwingUtilities.invokeLater(
+ new Runnable()
+ {
+ public void run()
+ {
+ SetObject (null);
+ }
+ }
+ );
+ }
+
+
+
+
+ /// The current accessible context display by the views.
+ private XAccessibleContext mxContext;
+
+ /// Observe this tree for selection changes and notify them to all
+ /// children.
+ private JTree maTree;
+ private Border maViewBorder;
+ /// List of view templates which are instantiated when new object is set.
+ private Vector maViewTemplates;
+ private Font maFont;
+ private LayoutManager maLayoutManager;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainerWindow.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainerWindow.java
new file mode 100644
index 000000000000..8db9af4f46ca
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ObjectViewContainerWindow.java
@@ -0,0 +1,35 @@
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.BorderLayout;
+import javax.swing.JFrame;
+import com.sun.star.accessibility.XAccessibleContext;
+
+
+/** Top level window that creates a single object view container. This
+ container shows information about a specific accessible object and is
+ not affected by the selection of the accessbility tree widget.
+*/
+public class ObjectViewContainerWindow
+ extends JFrame
+{
+ public ObjectViewContainerWindow (XAccessibleContext xContext)
+ {
+ setSize (new java.awt.Dimension (300,600));
+
+ maContainer = new ObjectViewContainer ();
+ maContainer.SetObject (xContext);
+ getContentPane().add (maContainer, BorderLayout.CENTER);
+
+ pack ();
+ setVisible (true);
+ }
+
+ /** Set the object that is displayed in this window.
+ */
+ public void SetObject (XAccessibleContext xContext)
+ {
+ maContainer.SetObject (xContext);
+ }
+
+ private ObjectViewContainer maContainer;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ParentView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ParentView.java
new file mode 100644
index 000000000000..216bc3a82bfc
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ParentView.java
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.lang.Integer;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.lang.IndexOutOfBoundsException;
+
+import org.openoffice.accessibility.misc.NameProvider;
+
+
+/** Show informations related to the parent/child relationship.
+*/
+public class ParentView
+ extends ObjectView
+{
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ if (xContext != null)
+ return new ParentView (aContainer);
+ else
+ return null;
+ }
+
+ public ParentView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ ViewGridLayout aLayout = new ViewGridLayout (this);
+ maParentLabel = aLayout.AddLabeledEntry ("Has parent: ");
+ maIndexLabel = aLayout.AddLabeledEntry ("Index in parent: ");
+ maValidLabel = aLayout.AddLabeledEntry ("Parent/Child relationship valid: ");
+ maChildrenLabel = aLayout.AddLabeledEntry ("Child count: ");
+ }
+
+ public void Update ()
+ {
+ if (mxContext == null)
+ {
+ maParentLabel.setText ("<null object>");
+ maIndexLabel.setText ("<null object>");
+ maValidLabel.setText ("<null object>");
+ maChildrenLabel.setText ("<null object>");
+ }
+ else
+ {
+ XAccessible xParent = mxContext.getAccessibleParent();
+ int nIndex = mxContext.getAccessibleIndexInParent();
+ maIndexLabel.setText (Integer.toString(nIndex));
+ if (xParent != null)
+ {
+ maParentLabel.setText ("yes");
+ XAccessibleContext xParentContext =
+ xParent.getAccessibleContext();
+ if (xParentContext != null)
+ {
+ try
+ {
+ XAccessible xChild =
+ xParentContext.getAccessibleChild(nIndex);
+ if (xChild != mxContext)
+ maValidLabel.setText ("yes");
+ else
+ {
+ maValidLabel.setText ("no");
+ maValidLabel.setBackground (GetContainer().GetErrorColor());
+ }
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ maValidLabel.setText ("no: invalid index in parent");
+ maValidLabel.setBackground (GetContainer().GetErrorColor());
+ }
+ }
+ else
+ {
+ maValidLabel.setText ("no: parent has no context");
+ maValidLabel.setBackground (GetContainer().GetErrorColor());
+ }
+ }
+ else
+ maParentLabel.setText ("no");
+ maChildrenLabel.setText (Integer.toString(mxContext.getAccessibleChildCount()));
+ }
+ }
+
+ public String GetTitle ()
+ {
+ return ("Parent");
+ }
+
+
+ /** Listen for changes regarding displayed values.
+ */
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ switch (aEvent.EventId)
+ {
+ default:
+ Update ();
+ }
+ }
+
+
+ private JLabel
+ maParentLabel,
+ maIndexLabel,
+ maValidLabel,
+ maChildrenLabel;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/SelectionView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/SelectionView.java
new file mode 100644
index 000000000000..ad5a83467372
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/SelectionView.java
@@ -0,0 +1,267 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.util.Vector;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+
+import javax.swing.BoxLayout;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JOptionPane;
+import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
+import javax.swing.JToggleButton;
+import javax.swing.ListSelectionModel;
+
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.AccessibleRole;
+import com.sun.star.accessibility.AccessibleStateType;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleSelection;
+import com.sun.star.accessibility.XAccessibleStateSet;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.lang.IndexOutOfBoundsException;
+
+
+/** Display a list of children and select/deselect buttons
+*/
+class SelectionView
+ extends ObjectView
+ implements ActionListener
+{
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ XAccessibleSelection xSelection = (XAccessibleSelection)UnoRuntime.queryInterface(
+ XAccessibleSelection.class, xContext);
+ if (xSelection != null)
+ return new SelectionView(aContainer);
+ else
+ return null;
+ }
+
+ public SelectionView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+ Layout();
+ }
+
+ public String GetTitle ()
+ {
+ return "Selection";
+ }
+
+ /** Create and arrange the widgets for this view.
+ */
+ private void Layout ()
+ {
+ setLayout (new GridBagLayout());
+
+ GridBagConstraints aConstraints = new GridBagConstraints();
+
+ // Label that shows whether the selection is multi selectable.
+ aConstraints.gridx = 0;
+ aConstraints.gridy = 0;
+ aConstraints.anchor = GridBagConstraints.WEST;
+ maTypeLabel = new JLabel ();
+ maTypeLabel.setFont (maContainer.GetViewFont());
+ add (maTypeLabel, aConstraints);
+
+ // the JListBox
+ maChildrenSelector = new JPanel ();
+ maChildrenSelector.setPreferredSize (new Dimension (100,100));
+ maChildrenSelector.setLayout (
+ new BoxLayout (maChildrenSelector, BoxLayout.Y_AXIS));
+
+ aConstraints.gridx = 0;
+ aConstraints.gridwidth = 4;
+ aConstraints.gridy = 1;
+ aConstraints.fill = GridBagConstraints.HORIZONTAL;
+ add (new JScrollPane (maChildrenSelector,
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED),
+ aConstraints);
+
+ JButton aButton;
+ aButton = new JButton( "Select all" );
+ aButton.setFont (maContainer.GetViewFont());
+ aButton.setActionCommand( "Select all" );
+ aButton.addActionListener( this );
+ aConstraints.gridx = 0;
+ aConstraints.gridwidth = 1;
+ aConstraints.gridy = 2;
+ aConstraints.fill = GridBagConstraints.NONE;
+ aConstraints.anchor = GridBagConstraints.WEST;
+ add (aButton, aConstraints);
+
+ aButton = new JButton( "Clear Selection" );
+ aButton.setFont (maContainer.GetViewFont());
+ aButton.setActionCommand( "Clear Selection" );
+ aButton.addActionListener( this );
+ aConstraints.gridx = 1;
+ aConstraints.gridy = 2;
+ aConstraints.weightx = 1;
+ add (aButton, aConstraints);
+
+ setSize (getPreferredSize());
+ }
+
+
+ public void SetObject (XAccessibleContext xContext)
+ {
+ mxSelection = (XAccessibleSelection)UnoRuntime.queryInterface(
+ XAccessibleSelection.class, xContext);
+ super.SetObject (xContext);
+ }
+
+
+ public void Update ()
+ {
+ maChildrenSelector.removeAll ();
+
+ // Determine whether multi selection is possible.
+ XAccessibleStateSet aStateSet = mxContext.getAccessibleStateSet();
+ boolean bMultiSelectable = false;
+ if (aStateSet!=null && aStateSet.contains(
+ AccessibleStateType.MULTI_SELECTABLE))
+ {
+ bMultiSelectable = true;
+ maTypeLabel.setText ("multi selectable");
+ }
+ else
+ {
+ maTypeLabel.setText ("single selectable");
+ }
+
+ if (mxContext.getAccessibleRole() != AccessibleRole.TABLE)
+ {
+ int nCount = mxContext.getAccessibleChildCount();
+ for (int i=0; i<nCount; i++)
+ {
+ try
+ {
+ XAccessible xChild = mxContext.getAccessibleChild(i);
+ XAccessibleContext xChildContext = xChild.getAccessibleContext();
+
+ String sName = i + " " + xChildContext.getAccessibleName();
+ JToggleButton aChild;
+ aChild = new JCheckBox (sName);
+ aChild.setFont (maContainer.GetViewFont());
+
+ XAccessibleStateSet aChildStateSet =
+ mxContext.getAccessibleStateSet();
+ aChild.setSelected (aChildStateSet!=null
+ && aChildStateSet.contains(AccessibleStateType.SELECTED));
+
+ aChild.addActionListener (this);
+ maChildrenSelector.add (aChild);
+
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ }
+ }
+ }
+ }
+
+
+ void SelectAll()
+ {
+ mxSelection.selectAllAccessibleChildren();
+ }
+
+ void ClearSelection()
+ {
+ mxSelection.clearAccessibleSelection();
+ }
+
+
+
+ /** Call the function associated with the pressed button.
+ */
+ public void actionPerformed (ActionEvent aEvent)
+ {
+ String sCommand = aEvent.getActionCommand();
+
+ if (sCommand.equals ("Clear Selection"))
+ ClearSelection();
+ else if (sCommand.equals ("Select all"))
+ SelectAll();
+ else
+ {
+ // Extract the child index from the widget text.
+ String[] aWords = sCommand.split (" ");
+ int nIndex = Integer.parseInt(aWords[0]);
+ try
+ {
+ if (((JToggleButton)aEvent.getSource()).isSelected())
+ mxSelection.selectAccessibleChild (nIndex);
+ else
+ mxSelection.deselectAccessibleChild (nIndex);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ System.err.println (
+ "caught exception while changing selection: " + e);
+ }
+ }
+ }
+
+
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ switch (aEvent.EventId)
+ {
+ case AccessibleEventId.SELECTION_CHANGED:
+ case AccessibleEventId.STATE_CHANGED:
+ case AccessibleEventId.CHILD:
+ Update ();
+ }
+ }
+
+ private JPanel maChildrenSelector;
+ private XAccessibleSelection mxSelection;
+ private JLabel maTypeLabel;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ServiceInterfaceView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ServiceInterfaceView.java
new file mode 100644
index 000000000000..7c41ff01c97e
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ServiceInterfaceView.java
@@ -0,0 +1,150 @@
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.GridLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.lang.Integer;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lang.XTypeProvider;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.UnoRuntime;
+
+import org.openoffice.accessibility.misc.NameProvider;
+
+
+/** Show all supported services and interfaces.
+*/
+public class ServiceInterfaceView
+ extends ObjectView
+{
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ if (xContext != null)
+ return new ServiceInterfaceView (aContainer);
+ else
+ return null;
+ }
+
+
+
+
+ public ServiceInterfaceView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ maImplementationNameRoot = new DefaultMutableTreeNode ("Implementation Name");
+ maServiceRoot = new DefaultMutableTreeNode ("Supported Services");
+ maInterfaceRoot = new DefaultMutableTreeNode ("Supported Interfaces");
+ maTree = new JTree (new DefaultMutableTreeNode[]
+ {maServiceRoot,maInterfaceRoot});
+ JScrollPane aScrollPane = new JScrollPane (
+ maTree,
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+
+ setMinimumSize (new Dimension(300,200));
+ setLayout (new GridLayout (1,1));
+ add (aScrollPane);
+ }
+
+
+
+
+ public void Update ()
+ {
+ DefaultTreeModel aModel = (DefaultTreeModel)maTree.getModel();
+
+ // Clear old tree.
+ DefaultMutableTreeNode aRoot =(DefaultMutableTreeNode)aModel.getRoot();
+ aRoot.removeAllChildren();
+
+ // Create the new tree.
+ CreateImplementationNameTree ();
+ CreateServiceTree ();
+ CreateInterfaceTree ();
+ aRoot.add (maImplementationNameRoot);
+ aRoot.add (maServiceRoot);
+ aRoot.add (maInterfaceRoot);
+ aModel.setRoot (aRoot);
+
+ // Expand whole tree.
+ for (int i=0; i<maTree.getRowCount(); i++)
+ maTree.expandRow (i);
+ }
+
+ private void CreateImplementationNameTree ()
+ {
+ XServiceInfo xServiceInfo = (XServiceInfo)UnoRuntime.queryInterface(
+ XServiceInfo.class, mxContext);
+ maImplementationNameRoot.removeAllChildren();
+ if (xServiceInfo != null)
+ {
+ maImplementationNameRoot.add (
+ new DefaultMutableTreeNode (
+ (xServiceInfo!=null
+ ? xServiceInfo.getImplementationName()
+ : "<XServiceInfo not supported>")));
+ }
+ }
+
+ private void CreateServiceTree ()
+ {
+ XServiceInfo xServiceInfo = (XServiceInfo)UnoRuntime.queryInterface(
+ XServiceInfo.class, mxContext);
+ maServiceRoot.removeAllChildren();
+ if (xServiceInfo != null)
+ {
+ String[] aServiceNames = xServiceInfo.getSupportedServiceNames();
+ int nCount = aServiceNames.length;
+ for (int i=0; i<nCount; i++)
+ maServiceRoot.add (
+ new DefaultMutableTreeNode (aServiceNames[i]));
+ }
+ else
+ maServiceRoot.add (
+ new DefaultMutableTreeNode("XServiceInfo not supported"));
+ }
+
+ private void CreateInterfaceTree ()
+ {
+ XTypeProvider xTypeProvider = (XTypeProvider)UnoRuntime.queryInterface(
+ XTypeProvider.class, mxContext);
+ maInterfaceRoot.removeAllChildren();
+ if (xTypeProvider != null)
+ {
+ Type[] aTypes = xTypeProvider.getTypes();
+ int nCount = aTypes.length;
+ for (int i=0; i<nCount; i++)
+ maInterfaceRoot.add (
+ new DefaultMutableTreeNode (aTypes[i].getTypeName()));
+ }
+ else
+ maInterfaceRoot.add (
+ new DefaultMutableTreeNode("XTypeProvider not supported"));
+ }
+
+ public String GetTitle ()
+ {
+ return ("Supported Services and Interfaces");
+ }
+
+
+ private JTree maTree;
+ private DefaultMutableTreeNode maImplementationNameRoot;
+ private DefaultMutableTreeNode maServiceRoot;
+ private DefaultMutableTreeNode maInterfaceRoot;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/StateSetView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/StateSetView.java
new file mode 100644
index 000000000000..44638b099edc
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/StateSetView.java
@@ -0,0 +1,199 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.geom.AffineTransform;
+
+
+
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleStateType;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleStateSet;
+
+import org.openoffice.accessibility.misc.NameProvider;
+
+public class StateSetView
+ extends ObjectView
+{
+ /** Create a FocusView when the given object supports the
+ XAccessibleComponent interface.
+ */
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ ObjectView aView = null;
+ if (xContext != null)
+ aView = new StateSetView (aContainer);
+
+ return aView;
+ }
+
+ public StateSetView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+ setPreferredSize (new Dimension(300,110));
+ setMinimumSize (new Dimension(200,80));
+ }
+
+ public String GetTitle ()
+ {
+ return ("StateSet");
+ }
+
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ if (aEvent.EventId == AccessibleEventId.STATE_CHANGED)
+ Update();
+ }
+
+
+ public void Update ()
+ {
+ repaint ();
+ }
+
+ public void paintChildren (Graphics g)
+ {
+ if (g != null)
+ synchronized (g)
+ {
+ super.paintChildren (g);
+
+ // Calculcate the are inside the border.
+ Insets aInsets = getInsets ();
+ Dimension aSize = getSize();
+ Rectangle aWidgetArea = new Rectangle (
+ aInsets.left,
+ aInsets.top,
+ aSize.width-aInsets.left-aInsets.right,
+ aSize.height-aInsets.top-aInsets.bottom);
+
+ PaintAllStates ((Graphics2D)g, aWidgetArea);
+ }
+ }
+
+ private void PaintAllStates (Graphics2D g, Rectangle aWidgetArea)
+ {
+ Color aTextColor = g.getColor();
+
+ g.setRenderingHint (
+ RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+
+ XAccessibleStateSet xStateSet = ( mxContext != null ) ? mxContext.getAccessibleStateSet() : null;
+ if (xStateSet != null)
+ {
+ short aStates[] = xStateSet.getStates ();
+ final int nMaxStateIndex = AccessibleStateType.VISIBLE;//MANAGES_DESCENDANTS;
+ int nStateWidth = (aWidgetArea.width-12) / (nMaxStateIndex+1);
+ AffineTransform aTransform = g.getTransform ();
+ g.setColor (aTextColor);
+ int y = aWidgetArea.y+aWidgetArea.height - 25;
+ double nTextRotation = -0.9;//-java.lang.Math.PI/2;
+ double nScale = 0.6;
+
+ // Create a shape for the boxes.
+ int nBoxWidth = 8;
+ Rectangle aCheckBox = new Rectangle (-nBoxWidth/2,0,nBoxWidth,nBoxWidth);
+
+ // For each state draw a box, fill it appropriately, and draw
+ // thre states name.
+ for (short i=0; i<=nMaxStateIndex; i++)
+ {
+ int x = nStateWidth + i * nStateWidth;
+ String sStateName = NameProvider.getStateName (i);
+ if (sStateName == null)
+ sStateName = new String ("<unknown state " + i + ">");
+ boolean bStateSet = xStateSet.contains (i);
+ g.setTransform (aTransform);
+ g.translate (x,y);
+ if (bStateSet)
+ {
+ switch (i)
+ {
+ case AccessibleStateType.INVALID:
+ case AccessibleStateType.DEFUNC:
+ g.setColor (saInvalidColor);
+ break;
+ case AccessibleStateType.FOCUSED:
+ g.setColor (saFocusColor);
+ break;
+ case AccessibleStateType.SELECTED:
+ g.setColor (saSelectionColor);
+ break;
+ case AccessibleStateType.EDITABLE:
+ g.setColor (saEditColor);
+ break;
+ default:
+ g.setColor (saDefaultColor);
+ break;
+ }
+ g.fill (aCheckBox);
+ g.setColor (aTextColor);
+ }
+ g.draw (aCheckBox);
+ g.rotate (nTextRotation);
+ g.scale (nScale, nScale);
+ g.translate (2,-2);
+ g.drawString (sStateName, 0,0);
+ }
+
+ // Draw string of set states.
+ String sStates = new String ();
+ for (int i=0; i<aStates.length; i++)
+ {
+ if (i > 0)
+ sStates = sStates + ", ";
+ sStates = sStates + NameProvider.getStateName(aStates[i]);
+ }
+ g.setTransform (aTransform);
+ g.translate (10,aWidgetArea.y+aWidgetArea.height-3);
+ g.scale (0.9,0.9);
+ g.drawString (sStates,0,0);
+ }
+ }
+
+ static private Color
+ saInvalidColor = new Color (255,0,255),
+ saFocusColor = new Color (100,100,255),
+ saSelectionColor = Color.GREEN,
+ saDefaultColor = new Color (90,90,90),
+ saEditColor = new Color (240,240,0);
+}
+
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/TableView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/TableView.java
new file mode 100644
index 000000000000..07b5d2bb9b78
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/TableView.java
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.lang.Integer;
+import java.lang.StringBuffer;
+
+import javax.swing.JLabel;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleTable;
+import com.sun.star.uno.UnoRuntime;
+
+
+
+/** The <type>ContextView</type> class displays information accessible over
+ the <type>XAccessibleContext</type> interface. This includes name,
+ description, and role.
+*/
+public class TableView
+ extends ObjectView
+{
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ if (UnoRuntime.queryInterface(
+ XAccessibleTable.class, xContext) != null)
+ return new TableView (aContainer);
+ else
+ return null;
+ }
+
+ public TableView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ ViewGridLayout aLayout = new ViewGridLayout (this);
+
+ maRowCountLabel = aLayout.AddLabeledEntry ("Row Count: ");
+ maColumnCountLabel = aLayout.AddLabeledEntry ("Column Count: ");
+ maCellCountLabel = aLayout.AddLabeledEntry ("Cell Count: ");
+ maSelectedRowsLabel = aLayout.AddLabeledEntry ("Selected Rows: ");
+ maSelectedColumnsLabel = aLayout.AddLabeledEntry ("Selected Columns: ");
+ }
+
+
+ public void SetObject (XAccessibleContext xContext)
+ {
+ mxTable = (XAccessibleTable)UnoRuntime.queryInterface(
+ XAccessibleTable.class, xContext);
+ super.SetObject (xContext);
+ }
+
+
+ public void Update ()
+ {
+ if (mxTable == null)
+ {
+ maRowCountLabel.setText ("<null object>");
+ maColumnCountLabel.setText ("<null object>");
+ maCellCountLabel.setText ("<null object>");
+ maSelectedRowsLabel.setText ("<null object>");
+ maSelectedColumnsLabel.setText ("<null object>");
+ }
+ else
+ {
+ int nRowCount = mxTable.getAccessibleRowCount();
+ int nColumnCount = mxTable.getAccessibleColumnCount();
+ maRowCountLabel.setText (Integer.toString (nRowCount));
+ maColumnCountLabel.setText (Integer.toString (nColumnCount));
+ maCellCountLabel.setText (Integer.toString (nRowCount*nColumnCount));
+
+ StringBuffer sList = new StringBuffer();
+ int[] aSelected = mxTable.getSelectedAccessibleRows();
+ boolean bFirst = true;
+ for (int i=0; i<aSelected.length; i++)
+ {
+ if ( ! bFirst)
+ {
+ sList.append (", ");
+ bFirst = false;
+ }
+ sList.append (Integer.toString(aSelected[i]));
+ }
+ maSelectedRowsLabel.setText (sList.toString());
+ sList = new StringBuffer();
+ aSelected = mxTable.getSelectedAccessibleColumns();
+ bFirst = true;
+ for (int i=0; i<aSelected.length; i++)
+ {
+ if ( ! bFirst)
+ {
+ sList.append (", ");
+ bFirst = false;
+ }
+ sList.append (Integer.toString(aSelected[i]));
+ }
+ maSelectedColumnsLabel.setText (sList.toString());
+ }
+ }
+
+
+
+
+ public String GetTitle ()
+ {
+ return ("Table");
+ }
+
+
+
+
+ /** Listen for changes regarding displayed values.
+ */
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ switch (aEvent.EventId)
+ {
+ case AccessibleEventId.TABLE_MODEL_CHANGED :
+ case AccessibleEventId.SELECTION_CHANGED:
+ Update ();
+ }
+ }
+
+ private XAccessibleTable mxTable;
+ private JLabel
+ maRowCountLabel,
+ maColumnCountLabel,
+ maCellCountLabel,
+ maSelectedRowsLabel,
+ maSelectedColumnsLabel;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/TextView.java b/accessibility/workben/org/openoffice/accessibility/awb/view/TextView.java
new file mode 100644
index 000000000000..4a838aa85884
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/TextView.java
@@ -0,0 +1,467 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSpinner;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.MutableTreeNode;
+
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.AccessibleTextType;
+import com.sun.star.accessibility.AccessibleStateType;
+import com.sun.star.accessibility.TextSegment;
+import com.sun.star.accessibility.XAccessibleText;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleMultiLineText;
+import com.sun.star.accessibility.XAccessibleStateSet;
+import com.sun.star.awt.Point;
+import com.sun.star.awt.Rectangle;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.uno.UnoRuntime;
+
+import org.openoffice.accessibility.awb.view.text.CaretSpinnerModel;
+import org.openoffice.accessibility.awb.view.text.TextDialogFactory;
+
+
+public class TextView
+ extends ObjectView
+ implements ActionListener
+{
+
+ /** Create a TextView when the given object supports the
+ XAccessibleText interface.
+ */
+ static public ObjectView Create (
+ ObjectViewContainer aContainer,
+ XAccessibleContext xContext)
+ {
+ XAccessibleText xText = (XAccessibleText)UnoRuntime.queryInterface(
+ XAccessibleText.class, xContext);
+ if (xText != null)
+ return new TextView (aContainer);
+ else
+ return null;
+ }
+
+
+ public TextView (ObjectViewContainer aContainer)
+ {
+ super (aContainer);
+
+ ViewGridLayout aLayout = new ViewGridLayout (this);
+
+ maTextLabel = aLayout.AddLabeledString ("Text: ");
+ maCharacterArrayLabel = aLayout.AddLabeledEntry ("Characters: ");
+ maCharacterCountLabel = aLayout.AddLabeledEntry ("Character Count: ");
+ maSelectionLabel = aLayout.AddLabeledEntry ("Selection: ");
+ maBoundsLabel = aLayout.AddLabeledEntry ("Bounds Test: ");
+ maCaretPositionSpinner = (JSpinner)aLayout.AddLabeledComponent (
+ "Caret position:", new JSpinner());
+ Dimension aSize = maCaretPositionSpinner.getSize();
+ maCaretPositionSpinner.setPreferredSize (new Dimension (100,20));
+ maCaretLineNoLabel = aLayout.AddLabeledEntry ("Line number at caret: ");
+ maCaretLineTextLabel = aLayout.AddLabeledEntry ("Text of line at caret: ");
+ maLineNoFromCaretPosLabel = aLayout.AddLabeledEntry ("Line number at index of caret: ");
+ maLineTextFromCaretPosLabel = aLayout.AddLabeledEntry ("Text of line at index of caret: ");
+
+ JPanel aButtonPanel = new JPanel ();
+ aLayout.AddComponent (aButtonPanel);
+
+ JButton aButton = new JButton ("select...");
+ aButton.setFont (aLayout.GetFont());
+ aButton.addActionListener (this);
+ aButtonPanel.add (aButton);
+
+ aButton = new JButton ("copy...");
+ aButton.setFont (aLayout.GetFont());
+ aButton.addActionListener (this);
+ aButtonPanel.add (aButton);
+
+ // A tree that holds the text broken down into various segments.
+ maTree = new JTree ();
+ aLayout.AddComponent (new JScrollPane (
+ maTree,
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
+ }
+
+
+ /** Additionally to the context store a reference to the
+ XAccessibleText interface.
+ */
+ public void SetObject (XAccessibleContext xObject)
+ {
+ mxText = (XAccessibleText)UnoRuntime.queryInterface(
+ XAccessibleText.class, xObject);
+ maCaretSpinnerModel = new CaretSpinnerModel(mxText);
+ maCaretPositionSpinner.setModel (maCaretSpinnerModel);
+ super.SetObject (xObject);
+ }
+
+ synchronized public void Destroy ()
+ {
+ mxText = null;
+ super.Destroy();
+ }
+
+ synchronized public void Update ()
+ {
+ maCaretPositionSpinner.setEnabled (mxText != null);
+ DefaultMutableTreeNode aRoot = new DefaultMutableTreeNode ("Text Segments");
+ if (mxText == null)
+ {
+ maTextLabel.setText ("<null object>");
+ maCharacterArrayLabel.setText ("<null object>");
+ maCharacterCountLabel.setText ("<null object>");
+ maSelectionLabel.setText ("<null object>");
+ maBoundsLabel.setText ("<null object>");
+ maCaretLineNoLabel.setText ("<null object>");
+ maCaretLineTextLabel.setText ("<null object>");
+ maLineNoFromCaretPosLabel.setText ("<null object>");
+ maLineTextFromCaretPosLabel.setText ("<null object>");
+ }
+ else
+ {
+ maTextLabel.setText (mxText.getText());
+ maCharacterArrayLabel.setText (GetCharacterArray());
+ maCharacterCountLabel.setText (
+ Integer.toString(mxText.getCharacterCount()));
+ // Selection.
+ maSelectionLabel.setText (
+ "[" + mxText.getSelectionStart()
+ + "," + mxText.getSelectionEnd()
+ + "] \"" + mxText.getSelectedText() + "\"");
+
+ // Character bounds.
+ maBoundsLabel.setText (GetTextBoundsString());
+
+ // Caret position.
+ maCaretPositionSpinner.setValue (new Integer (mxText.getCaretPosition()));
+
+ // Multi line methods.
+ XAccessibleMultiLineText xMultiText = (XAccessibleMultiLineText)
+ UnoRuntime.queryInterface( XAccessibleMultiLineText.class, mxText );
+
+ if( null != xMultiText ) {
+ try {
+ maCaretLineNoLabel.setText ( Integer.toString( xMultiText.getNumberOfLineWithCaret() ) );
+ TextSegment ts = xMultiText.getTextAtLineWithCaret();
+ maCaretLineTextLabel.setText ( "[" + ts.SegmentStart
+ + "," + ts.SegmentEnd
+ + "] \"" + ts.SegmentText + "\"");
+ maLineNoFromCaretPosLabel.setText ( Integer.toString( xMultiText.getLineNumberAtIndex( mxText.getCaretPosition() ) ) );
+ ts = xMultiText.getTextAtLineNumber(xMultiText.getLineNumberAtIndex( mxText.getCaretPosition() ) );
+ maLineTextFromCaretPosLabel.setText ( "[" + ts.SegmentStart
+ + "," + ts.SegmentEnd
+ + "] \"" + ts.SegmentText + "\"");
+ } catch( IndexOutOfBoundsException e) {
+ }
+ }
+
+ // Text segments.
+ aRoot.add (CreateNode ("Character", AccessibleTextType.CHARACTER));
+ aRoot.add (CreateNode ("Word", AccessibleTextType.WORD));
+ aRoot.add (CreateNode ("Sentence", AccessibleTextType.SENTENCE));
+ aRoot.add (CreateNode ("Paragraph", AccessibleTextType.PARAGRAPH));
+ aRoot.add (CreateNode ("Line", AccessibleTextType.LINE));
+ aRoot.add (CreateNode ("Attribute", AccessibleTextType.ATTRIBUTE_RUN));
+ aRoot.add (CreateNode ("Glyph", AccessibleTextType.GLYPH));
+ }
+ ((DefaultTreeModel)maTree.getModel()).setRoot (aRoot);
+ }
+
+ public String GetTitle ()
+ {
+ return ("Text");
+ }
+
+ public void notifyEvent (AccessibleEventObject aEvent)
+ {
+ System.out.println (aEvent);
+ switch (aEvent.EventId)
+ {
+ case AccessibleEventId.CARET_CHANGED :
+ maCaretSpinnerModel.Update();
+ Update ();
+ break;
+
+ case AccessibleEventId.TEXT_CHANGED :
+ case AccessibleEventId.TEXT_SELECTION_CHANGED:
+ Update ();
+ break;
+ }
+ }
+
+ public void actionPerformed (ActionEvent aEvent)
+ {
+ String sCommand = aEvent.getActionCommand();
+ if (sCommand.equals ("select..."))
+ TextDialogFactory.CreateSelectionDialog (mxContext);
+ else if (sCommand.equals ("copy..."))
+ TextDialogFactory.CreateCopyDialog (mxContext);
+ }
+
+
+
+ /** Create a string that is a list of all characters returned by the
+ getCharacter() method.
+ */
+ private String GetCharacterArray ()
+ {
+ // Do not show more than 30 characters.
+ int nCharacterCount = mxText.getCharacterCount();
+ int nMaxDisplayCount = 30;
+
+ // build up string
+ StringBuffer aCharacterArray = new StringBuffer();
+ int nIndex = 0;
+ try
+ {
+ while (nIndex<nCharacterCount && nIndex<nMaxDisplayCount)
+ {
+ aCharacterArray.append (mxText.getCharacter (nIndex));
+ if (nIndex < nCharacterCount-1)
+ aCharacterArray.append (",");
+ nIndex ++;
+ }
+ if (nMaxDisplayCount < nCharacterCount)
+ aCharacterArray.append (", ...");
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ aCharacterArray.append ("; Index Out Of Bounds at index " + nIndex);
+ }
+
+ return aCharacterArray.toString();
+ }
+
+
+
+ /** Iterate over all characters and translate their positions
+ back and forth.
+ */
+ private String GetTextBoundsString ()
+ {
+ StringBuffer aBuffer = new StringBuffer ();
+ try
+ {
+ // Iterate over all characters in the text.
+ int nCount = mxText.getCharacterCount();
+ for (int i=0; i<nCount; i++)
+ {
+ // Get bounds for this character.
+ Rectangle aBBox = mxText.getCharacterBounds (i);
+
+ // get the character by 'clicking' into the middle of
+ // the bounds
+ Point aMiddle = new Point();
+ aMiddle.X = aBBox.X + (aBBox.Width / 2) - 1;
+ aMiddle.Y = aBBox.Y + (aBBox.Height / 2) - 1;
+ int nIndex = mxText.getIndexAtPoint (aMiddle);
+
+ // get the character, or a '#' for an illegal index
+ if ((nIndex >= 0) && (nIndex < mxText.getCharacter(i)))
+ aBuffer.append (mxText.getCharacter(nIndex));
+ else
+ aBuffer.append ('#');
+ }
+ }
+ catch (IndexOutOfBoundsException aEvent)
+ {
+ // Ignore errors.
+ }
+
+ return aBuffer.toString();
+ }
+
+
+
+
+ private final static int BEFORE = -1;
+ private final static int AT = 0;
+ private final static int BEHIND = +1;
+
+ private MutableTreeNode CreateNode (String sTitle, short nTextType)
+ {
+ DefaultMutableTreeNode aNode = new DefaultMutableTreeNode (sTitle);
+
+ aNode.add (CreateSegmentNode ("Before", nTextType, BEFORE));
+ aNode.add (CreateSegmentNode ("At", nTextType, AT));
+ aNode.add (CreateSegmentNode ("Behind", nTextType, BEHIND));
+
+ return aNode;
+ }
+
+ private MutableTreeNode CreateSegmentNode (String sTitle, short nTextType, int nWhere)
+ {
+ TextSegment aSegment;
+ int nTextLength = mxText.getCharacterCount();
+ DefaultMutableTreeNode aNode = new DefaultMutableTreeNode (sTitle);
+ for (int nIndex=0; nIndex<=nTextLength; /* empty */)
+ {
+ aSegment = GetTextSegment (nIndex, nTextType, nWhere);
+ DefaultMutableTreeNode aSegmentNode = new DefaultMutableTreeNode (
+ new StringBuffer (
+ Integer.toString (nIndex) + " -> "
+ + Integer.toString (aSegment.SegmentStart) + " - "
+ + Integer.toString (aSegment.SegmentEnd) + " : "
+ + aSegment.SegmentText.toString()));
+ aNode.add (aSegmentNode);
+ if (nTextType == AccessibleTextType.ATTRIBUTE_RUN)
+ AddAttributeNodes (aSegmentNode, aSegment);
+ if (aSegment.SegmentEnd > nIndex)
+ nIndex = aSegment.SegmentEnd;
+ else
+ nIndex ++;
+ }
+
+ return aNode;
+ }
+
+
+ private TextSegment GetTextSegment (int nIndex, short nTextType, int nWhere)
+ {
+ TextSegment aSegment;
+
+ try
+ {
+ switch (nWhere)
+ {
+ case BEFORE:
+ aSegment = mxText.getTextBeforeIndex (nIndex, nTextType);
+ break;
+
+ case AT:
+ aSegment = mxText.getTextAtIndex (nIndex, nTextType);
+ break;
+
+ case BEHIND:
+ aSegment = mxText.getTextBehindIndex (nIndex, nTextType);
+ break;
+
+ default:
+ aSegment = new TextSegment();
+ aSegment.SegmentText = new String ("unknown position " + nWhere);
+ aSegment.SegmentStart = nIndex;
+ aSegment.SegmentStart = nIndex+1;
+ break;
+ }
+ }
+ catch (IndexOutOfBoundsException aException)
+ {
+ aSegment = new TextSegment ();
+ aSegment.SegmentText = new String ("Invalid index at ") + nIndex + " : "
+ + aException.toString();
+ aSegment.SegmentStart = nIndex;
+ aSegment.SegmentEnd = nIndex+1;
+ }
+ catch (IllegalArgumentException aException)
+ {
+ aSegment = new TextSegment ();
+ aSegment.SegmentText = new String ("Illegal argument at ") + nIndex + " : "
+ + aException.toString();
+ aSegment.SegmentStart = nIndex;
+ aSegment.SegmentEnd = nIndex+1;
+ }
+
+ return aSegment;
+ }
+
+
+ /** Add to the given node one node for every attribute of the given segment.
+ */
+ private void AddAttributeNodes (
+ DefaultMutableTreeNode aNode,
+ TextSegment aSegment)
+ {
+ try
+ {
+ PropertyValue[] aValues = mxText.getCharacterAttributes (
+ aSegment.SegmentStart, aAttributeList);
+ for (int i=0; i<aValues.length; i++)
+ aNode.add (new DefaultMutableTreeNode (
+ aValues[i].Name + ": " + aValues[i].Value));
+ }
+ catch (IndexOutOfBoundsException aException)
+ {
+ aNode.add (new DefaultMutableTreeNode (
+ "caught IndexOutOfBoundsException while retrieveing attributes"));
+ }
+ }
+
+ private XAccessibleText mxText;
+ private JLabel
+ maTextLabel,
+ maCharacterArrayLabel,
+ maCharacterCountLabel,
+ maSelectionLabel,
+ maBoundsLabel,
+ maCaretLineNoLabel,
+ maCaretLineTextLabel,
+ maLineNoFromCaretPosLabel,
+ maLineTextFromCaretPosLabel;
+
+ private JSpinner maCaretPositionSpinner;
+ private JTree maTree;
+ private CaretSpinnerModel maCaretSpinnerModel;
+
+ private static String[] aAttributeList = new String[] {
+ "CharBackColor",
+ "CharColor",
+ "CharEscapement",
+ "CharHeight",
+ "CharPosture",
+ "CharStrikeout",
+ "CharUnderline",
+ "CharWeight",
+ "ParaAdjust",
+ "ParaBottomMargin",
+ "ParaFirstLineIndent",
+ "ParaLeftMargin",
+ "ParaLineSpacing",
+ "ParaRightMargin",
+ "ParaTabStops"};
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/ViewGridLayout.java b/accessibility/workben/org/openoffice/accessibility/awb/view/ViewGridLayout.java
new file mode 100644
index 000000000000..bc598dcaf2fa
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/ViewGridLayout.java
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+
+
+/** This class is a convenience class for views to use the GridBagLayout.
+*/
+class ViewGridLayout
+{
+ public ViewGridLayout (JComponent aComponent)
+ {
+ maComponent = aComponent;
+ maComponent.setLayout (new GridBagLayout());
+ maComponent.setMinimumSize (new Dimension (300,30));
+ maComponent.setMaximumSize (new Dimension (300,1000));
+ mnCurrentLine = 0;
+ }
+
+ public JLabel AddLabeledEntry (String sTitle)
+ {
+ return (JLabel)AddLabeledComponent (sTitle, new JLabel (""));
+ }
+
+ public JLabel AddLabeledString (String sTitle)
+ {
+ JLabel aLabel = AddLabeledEntry (sTitle);
+ aLabel.setBackground (new Color(220,220,220));
+ aLabel.setOpaque (true);
+ return aLabel;
+ }
+
+ public JComponent AddLabeledComponent (String sTitle, JComponent aComponent)
+ {
+ GridBagConstraints constraints = new GridBagConstraints ();
+ constraints.gridx = 0;
+ constraints.anchor = GridBagConstraints.WEST;
+ constraints.fill = GridBagConstraints.NONE;
+ constraints.gridy = mnCurrentLine;
+
+ JLabel aLabel = new JLabel(sTitle);
+ aLabel.setFont (saFont);
+ maComponent.add (aLabel, constraints);
+ constraints.gridx = 1;
+ constraints.weightx = 1;
+ constraints.fill = GridBagConstraints.NONE;
+ aComponent.setFont (saFont);
+ maComponent.add (aComponent, constraints);
+
+ mnCurrentLine += 1;
+
+ return aComponent;
+ }
+
+ public JComponent AddComponent (JComponent aComponent)
+ {
+ GridBagConstraints constraints = new GridBagConstraints ();
+ constraints.gridx = 0;
+ constraints.gridwidth = 2;
+ constraints.weightx = 1;
+ constraints.anchor = GridBagConstraints.WEST;
+ constraints.fill = GridBagConstraints.HORIZONTAL;
+ constraints.gridy = mnCurrentLine;
+
+ maComponent.add (aComponent, constraints);
+
+ mnCurrentLine += 1;
+
+ return aComponent;
+ }
+
+ static public Font GetFont ()
+ {
+ return saFont;
+ }
+
+ static private Font saFont;
+ private int mnCurrentLine;
+ private JComponent maComponent;
+
+ static
+ {
+ saFont = new Font ("Dialog", Font.PLAIN, 11);
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/makefile.common b/accessibility/workben/org/openoffice/accessibility/awb/view/makefile.common
new file mode 100644
index 000000000000..38033b3ab658
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/makefile.common
@@ -0,0 +1,45 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+JARFILES = jurt.jar unoil.jar ridl.jar
+JAVAFILES = \
+ ComponentView.java \
+ ContextView.java \
+ EditableTextView.java \
+ EventMonitorView.java \
+ FocusView.java \
+ LayoutManager.java \
+ ObjectView.java \
+ ObjectViewContainer.java \
+ ObjectViewContainerWindow.java \
+ ParentView.java \
+ SelectionView.java \
+ ServiceInterfaceView.java \
+ StateSetView.java \
+ TableView.java \
+ TextView.java \
+ ViewGridLayout.java
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/makefile.mk b/accessibility/workben/org/openoffice/accessibility/awb/view/makefile.mk
new file mode 100644
index 000000000000..0bfa48537ea2
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = awb
+PRJ = ..$/..$/..$/..$/..$/..
+TARGET = awb_view
+PACKAGE = org$/openoffice$/accessibility$/awb$/view
+
+USE_JAVAVER:=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(JAVAVER:s/.//)" >= "140"
+
+.INCLUDE : makefile.common
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/CaretSpinnerModel.java b/accessibility/workben/org/openoffice/accessibility/awb/view/text/CaretSpinnerModel.java
new file mode 100644
index 000000000000..c210b0eff086
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/CaretSpinnerModel.java
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view.text;
+
+import java.lang.Integer;
+import java.util.Vector;
+import javax.swing.SpinnerModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import com.sun.star.accessibility.XAccessibleText;
+import com.sun.star.lang.IndexOutOfBoundsException;
+
+
+/** A simple model for JSpinner objects that clips the spinner values to valid
+ text indices.
+*/
+public class CaretSpinnerModel
+ implements SpinnerModel
+{
+ public CaretSpinnerModel (XAccessibleText xText)
+ {
+ mxText = xText;
+ maListeners = new Vector ();
+ }
+
+ public void addChangeListener (ChangeListener aListener)
+ {
+ if (aListener != null)
+ maListeners.add (aListener);
+ }
+
+ public void removeChangeListener (ChangeListener aListener)
+ {
+ maListeners.removeElement (aListener);
+ }
+
+ public Object getNextValue ()
+ {
+ if (mxText != null)
+ {
+ int nPosition = mxText.getCaretPosition();
+ if (nPosition+1 <= mxText.getCharacterCount())
+ return new Integer (nPosition+1);
+ }
+ return null;
+ }
+
+ public Object getPreviousValue ()
+ {
+ if (mxText != null)
+ {
+ int nPosition = mxText.getCaretPosition();
+ if (nPosition > 0)
+ return new Integer (nPosition-1);
+ }
+ return null;
+ }
+
+ public Object getValue ()
+ {
+ if (mxText != null)
+ return new Integer (mxText.getCaretPosition());
+ else
+ return null;
+ }
+
+ public void setValue (Object aValue)
+ {
+ if (mxText != null)
+ if (aValue instanceof Integer)
+ {
+ try
+ {
+ if( ((Integer)aValue).intValue() != mxText.getCaretPosition() )
+ mxText.setCaretPosition (((Integer)aValue).intValue());
+ }
+ catch (IndexOutOfBoundsException aException)
+ {
+ }
+ }
+ }
+
+ /** Call this method when the caret position has changes so that the model
+ can inform its listeners about it.
+ */
+ public void Update ()
+ {
+ ChangeEvent aEvent = new ChangeEvent (this);
+ for (int i=0; i<maListeners.size(); i++)
+ ((ChangeListener)maListeners.elementAt(i)).stateChanged (aEvent);
+ }
+
+ private XAccessibleText mxText;
+ private Integer maValue;
+ private Vector maListeners;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/Makefile b/accessibility/workben/org/openoffice/accessibility/awb/view/text/Makefile
new file mode 100644
index 000000000000..c58899a09f6e
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/Makefile
@@ -0,0 +1,13 @@
+# $Id: Makefile,v 1.1 2003/06/13 16:30:41 af Exp $
+
+all : package
+
+ROOT=../../../../..
+PACKAGE = org.openoffice.accessibility.awb.view.text
+SUBDIRS =
+include makefile.common
+
+include $(ROOT)/makefile.in
+
+
+package : $(CLASS_FILES)
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextActionDialog.java b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextActionDialog.java
new file mode 100644
index 000000000000..f37969d5ee59
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextActionDialog.java
@@ -0,0 +1,208 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view.text;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import javax.swing.text.JTextComponent;
+
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleText;
+import com.sun.star.accessibility.XAccessibleEditableText;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.uno.UnoRuntime;
+
+
+/**
+ * Display a dialog with a text field and a pair of cancel/do-it buttons
+ */
+class TextActionDialog
+ extends JDialog
+ implements ActionListener
+{
+ public TextActionDialog (
+ XAccessibleContext xContext,
+ String sExplanation,
+ String sTitle)
+ {
+ super();// AccessibilityWorkBench.Instance() );
+
+ mxContext = xContext;
+ msTitle = sTitle;
+ msExplanation = sExplanation;
+ Layout ();
+ setSize (350, 225);
+
+ }
+
+
+ /** build dialog */
+ protected void Layout()
+ {
+ setTitle (msTitle);
+
+ // vertical stacking of the elements
+ Container aContent = getContentPane();
+ // aContent.setLayout( new BorderLayout() );
+
+ // Label with explanation.
+ if (msExplanation.length() > 0)
+ aContent.add (new JLabel (msExplanation), BorderLayout.NORTH);
+
+ // the text field
+ maText = new JTextArea();
+ maText.setLineWrap (true);
+ maText.setEditable (false);
+ aContent.add (maText, BorderLayout.CENTER);
+
+ XAccessibleText xText = (XAccessibleText)UnoRuntime.queryInterface(
+ XAccessibleText.class, mxContext);
+ String sText = xText.getText();
+ maText.setText (sText);
+ maText.setRows (sText.length() / 40 + 1);
+ maText.setColumns (Math.min (Math.max (40, sText.length()), 20));
+
+ JPanel aButtons = new JPanel();
+ aButtons.setLayout (new FlowLayout());
+ maIndexToggle = new JCheckBox ("reverse selection");
+ aButtons.add (maIndexToggle);
+
+ JButton aActionButton = new JButton (msTitle);
+ aActionButton.setActionCommand ("Action");
+ aActionButton.addActionListener (this);
+ aButtons.add (aActionButton);
+
+ JButton aCancelButton = new JButton ("cancel");
+ aCancelButton.setActionCommand ("Cancel");
+ aCancelButton.addActionListener (this);
+ aButtons.add (aCancelButton);
+
+ // add Panel with buttons
+ aContent.add (aButtons, BorderLayout.SOUTH);
+ }
+
+ protected void Cancel()
+ {
+ hide();
+ dispose();
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ String sCommand = e.getActionCommand();
+
+ if( "Cancel".equals( sCommand ) )
+ Cancel();
+ else if( "Action".equals( sCommand ) )
+ Action();
+ }
+
+
+ protected int GetSelectionStart()
+ {
+ return GetSelection(true);
+ }
+ protected int GetSelectionEnd()
+ {
+ return GetSelection(false);
+ }
+ private int GetSelection (boolean bStart)
+ {
+ if (bStart ^ maIndexToggle.isSelected())
+ return maText.getSelectionStart();
+ else
+ return maText.getSelectionEnd();
+ }
+
+
+
+ protected void Action ()
+ {
+ String sError = null;
+ boolean bSuccess = true;
+ try
+ {
+ XAccessibleText xText =
+ (XAccessibleText)UnoRuntime.queryInterface(
+ XAccessibleText.class, mxContext);
+ if (xText != null)
+ bSuccess = bSuccess && TextAction (xText);
+
+ XAccessibleEditableText xEditableText =
+ (XAccessibleEditableText)UnoRuntime.queryInterface(
+ XAccessibleEditableText.class, mxContext);
+ if (xEditableText != null)
+ bSuccess = bSuccess && EditableTextAction (xEditableText);
+
+ if ( ! bSuccess)
+ sError = "Can't execute";
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ sError = "Index out of bounds";
+ }
+
+ if (sError != null)
+ JOptionPane.showMessageDialog (
+ this,// AccessibilityWorkBench.Instance(),
+ sError,
+ msTitle,
+ JOptionPane.ERROR_MESSAGE);
+
+ Cancel();
+ }
+
+ /** override this for dialog-specific action */
+ boolean TextAction (XAccessibleText xText)
+ throws IndexOutOfBoundsException
+ {
+ return true;
+ }
+
+ boolean EditableTextAction (XAccessibleEditableText xText)
+ throws IndexOutOfBoundsException
+ {
+ return true;
+ }
+
+ private XAccessibleContext mxContext;
+ protected JTextArea maText;
+ private String msTitle;
+ private String msExplanation;
+ private JCheckBox maIndexToggle;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextAttributeDialog.java b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextAttributeDialog.java
new file mode 100644
index 000000000000..dad548ca730e
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextAttributeDialog.java
@@ -0,0 +1,179 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view.text;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import javax.swing.BoxLayout;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JPanel;
+import javax.swing.text.JTextComponent;
+
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleEditableText;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.uno.UnoRuntime;
+
+
+class TextAttributeDialog
+ extends TextActionDialog
+{
+ public TextAttributeDialog (XAccessibleContext xContext)
+ {
+ super (xContext,
+ "Choose attributes, select text, and press 'Set':",
+ "set");
+ }
+
+ protected void Layout ()
+ {
+ super.Layout ();
+
+ maForeground = Color.black;
+ maBackground = Color.white;
+
+ JPanel aPanel = new JPanel();
+ aPanel.setLayout (new BoxLayout (aPanel, BoxLayout.Y_AXIS));
+
+ maBoldCheckBox = new JCheckBox ("bold");
+ maUnderlineCheckBox = new JCheckBox ("underline");
+ maItalicsCheckBox = new JCheckBox ("italics");
+
+ JButton aForegroundButton = new JButton ("Foreground",
+ new TextAttributeDialog.ColorIcon(true));
+ aForegroundButton.addActionListener (new ActionListener()
+ {
+ public void actionPerformed (ActionEvent aEvent)
+ {
+ maForeground = JColorChooser.showDialog (
+ TextAttributeDialog.this,
+ "Select Foreground Color",
+ maForeground);
+ }
+ } );
+
+ JButton aBackgroundButton = new JButton("Background",
+ new TextAttributeDialog.ColorIcon(false));
+ aBackgroundButton.addActionListener (new ActionListener()
+ {
+ public void actionPerformed (ActionEvent eEvent)
+ {
+ maBackground = JColorChooser.showDialog(
+ TextAttributeDialog.this,
+ "Select Background Color",
+ maBackground);
+ }
+ } );
+
+ aPanel.add (maBoldCheckBox);
+ aPanel.add (maUnderlineCheckBox);
+ aPanel.add (maItalicsCheckBox);
+ aPanel.add (aForegroundButton);
+ aPanel.add (aBackgroundButton);
+
+ getContentPane().add (aPanel, BorderLayout.WEST);
+ }
+
+
+ /** edit the text */
+ boolean EditableTextAction (XAccessibleEditableText xText)
+ throws IndexOutOfBoundsException
+ {
+ PropertyValue[] aSequence = new PropertyValue[6];
+ aSequence[0] = new PropertyValue();
+ aSequence[0].Name = "CharWeight";
+ aSequence[0].Value = new Integer (maBoldCheckBox.isSelected() ? 150 : 100);
+ aSequence[1] = new PropertyValue();
+ aSequence[1].Name = "CharUnderline";
+ aSequence[1].Value = new Integer (maUnderlineCheckBox.isSelected() ? 1 : 0);
+ aSequence[2] = new PropertyValue();
+ aSequence[2].Name = "CharBackColor";
+ aSequence[2].Value = new Integer (maBackground.getRGB());
+ aSequence[3] = new PropertyValue();
+ aSequence[3].Name = "CharColor";
+ aSequence[3].Value = new Integer (maForeground.getRGB());
+ aSequence[4] = new PropertyValue();
+ aSequence[4].Name = "CharPosture";
+ aSequence[4].Value = new Integer (maItalicsCheckBox.isSelected() ? 1 : 0);
+ aSequence[5] = new PropertyValue();
+ aSequence[5].Name = "CharBackTransparent";
+ aSequence[5].Value = new Boolean (false);
+
+ return xText.setAttributes (
+ GetSelectionStart(),
+ GetSelectionEnd(),
+ aSequence);
+ }
+
+ class ColorIcon
+ implements Icon
+ {
+ public ColorIcon(boolean bWhich) { bForeground = bWhich; }
+ public int getIconHeight() { return nHeight; }
+ public int getIconWidth() { return nWidth; }
+ public void paintIcon (Component c, Graphics g, int x, int y)
+ {
+ g.setColor( getColor() );
+ g.fillRect( x, y, nHeight, nWidth );
+ g.setColor( c.getForeground() );
+ g.drawRect( x, y, nHeight, nWidth );
+ }
+ Color getColor()
+ {
+ if (bForeground)
+ return maForeground;
+ else
+ return maBackground;
+ }
+
+ private static final int nHeight = 16;
+ private static final int nWidth = 16;
+ private boolean bForeground;
+ }
+
+
+
+
+ private JCheckBox
+ maBoldCheckBox,
+ maUnderlineCheckBox,
+ maItalicsCheckBox;
+ private Color
+ maForeground,
+ maBackground;
+
+}
+
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextDialogFactory.java b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextDialogFactory.java
new file mode 100644
index 000000000000..cdb3f26b5e55
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextDialogFactory.java
@@ -0,0 +1,136 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view.text;
+
+import javax.swing.JDialog;
+import javax.swing.text.JTextComponent;
+
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleEditableText;
+import com.sun.star.accessibility.XAccessibleText;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.uno.UnoRuntime;
+
+
+/** Factory for dialogs of the text views.
+*/
+public class TextDialogFactory
+{
+ static public JDialog CreateSelectionDialog (XAccessibleContext xContext)
+ {
+ JDialog aDialog = new TextActionDialog(
+ xContext,
+ "Select range:",
+ "select")
+ {
+ boolean TextAction (XAccessibleText xText)
+ throws IndexOutOfBoundsException
+ {
+ return xText.setSelection(
+ GetSelectionStart(),
+ GetSelectionEnd() );
+ }
+ };
+ if (aDialog != null)
+ aDialog.show();
+ return aDialog;
+ }
+
+ static public JDialog CreateCopyDialog (XAccessibleContext xContext)
+ {
+ JDialog aDialog = new TextActionDialog(
+ xContext,
+ "Select range and copy:",
+ "copy")
+ {
+ boolean TextAction (XAccessibleText xText)
+ throws IndexOutOfBoundsException
+ {
+ return xText.copyText(
+ GetSelectionStart(),
+ GetSelectionEnd());
+ }
+ };
+ if (aDialog != null)
+ aDialog.show();
+ return aDialog;
+ }
+ static public JDialog CreateCutDialog (XAccessibleContext xContext)
+ {
+ JDialog aDialog = new TextActionDialog(
+ xContext,
+ "Select range and cut:",
+ "cut")
+ {
+ boolean EditableTextAction (XAccessibleEditableText xText)
+ throws IndexOutOfBoundsException
+ {
+ return xText.cutText(
+ GetSelectionStart(),
+ GetSelectionEnd() );
+ }
+ };
+ if (aDialog != null)
+ aDialog.show();
+ return aDialog;
+ }
+ static public JDialog CreatePasteDialog (XAccessibleContext xContext)
+ {
+ JDialog aDialog = new TextActionDialog (
+ xContext,
+ "Place Caret and paste:",
+ "paste")
+ {
+ boolean EditableTextAction (XAccessibleEditableText xText)
+ throws IndexOutOfBoundsException
+ {
+ return xText.pasteText(maText.getCaretPosition());
+ }
+ };
+ if (aDialog != null)
+ aDialog.show();
+ return aDialog;
+ }
+ static public JDialog CreateEditDialog (XAccessibleContext xContext)
+ {
+ JDialog aDialog = new TextEditDialog (
+ xContext,
+ "Edit text:",
+ "edit");
+ if (aDialog != null)
+ aDialog.show();
+ return aDialog;
+ }
+ static public JDialog CreateFormatDialog (XAccessibleContext xContext)
+ {
+ JDialog aDialog = new TextAttributeDialog (xContext);
+ if (aDialog != null)
+ aDialog.show();
+ return aDialog;
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextEditDialog.java b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextEditDialog.java
new file mode 100644
index 000000000000..a8710cbad7cc
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/TextEditDialog.java
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.awb.view.text;
+
+import javax.swing.text.JTextComponent;
+
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleEditableText;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.uno.UnoRuntime;
+
+
+class TextEditDialog
+ extends TextActionDialog
+{
+ public TextEditDialog (
+ XAccessibleContext xContext,
+ String sExplanation,
+ String sTitle )
+ {
+ super (xContext, sExplanation, sTitle);
+ }
+
+ protected void Layout()
+ {
+ super.Layout();
+ maText.setEditable (true);
+ }
+
+
+ /** edit the text */
+ boolean EditableTextAction (XAccessibleEditableText xText)
+ {
+ return UpdateText (xText, maText.getText());
+ }
+
+
+ /** update the text */
+ boolean UpdateText (XAccessibleEditableText xText, String sNew)
+ {
+ boolean bResult = false;
+
+ String sOld = xText.getText();
+
+ // false alarm? Early out if no change was done!
+ if ( ! sOld.equals (sNew))
+ {
+
+ // Get the minimum length of both strings.
+ int nMinLength = sOld.length();
+ if (sNew.length() < nMinLength)
+ nMinLength = sNew.length();
+
+ // Count equal characters from front and end.
+ int nFront = 0;
+ while ((nFront < nMinLength) &&
+ (sNew.charAt(nFront) == sOld.charAt(nFront)))
+ nFront++;
+ int nBack = 0;
+ while ((nBack < nMinLength) &&
+ (sNew.charAt(sNew.length()-nBack-1) ==
+ sOld.charAt(sOld.length()-nBack-1) ))
+ nBack++;
+ if (nFront + nBack > nMinLength)
+ nBack = nMinLength - nFront;
+
+ // so... the first nFront and the last nBack characters are the
+ // same. Change the others!
+ String sDel = sOld.substring (nFront, sOld.length() - nBack);
+ String sIns = sNew.substring (nFront, sNew.length() - nBack);
+
+ System.out.println ("edit text: " +
+ sOld.substring(0, nFront) +
+ " [ " + sDel + " -> " + sIns + " ] " +
+ sOld.substring(sOld.length() - nBack));
+
+ try
+ {
+ // edit the text, and use
+ // (set|insert|delete|replace)Text as needed
+ if( nFront+nBack == 0 )
+ bResult = xText.setText( sIns );
+ else if( sDel.length() == 0 )
+ bResult = xText.insertText( sIns, nFront );
+ else if( sIns.length() == 0 )
+ bResult = xText.deleteText( nFront, sOld.length()-nBack );
+ else
+ bResult = xText.replaceText(nFront, sOld.length()-nBack,sIns);
+ }
+ catch( IndexOutOfBoundsException aException)
+ {
+ }
+ }
+
+ return bResult;
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.common b/accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.common
new file mode 100644
index 000000000000..7d9a5e8febfa
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.common
@@ -0,0 +1,34 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+JARFILES = jurt.jar unoil.jar ridl.jar
+JAVAFILES = \
+ CaretSpinnerModel.java \
+ TextActionDialog.java \
+ TextEditDialog.java \
+ TextAttributeDialog.java \
+ TextDialogFactory.java
diff --git a/accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.mk b/accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.mk
new file mode 100644
index 000000000000..1ec7da26619b
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/awb/view/text/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = awb
+PRJ = ..$/..$/..$/..$/..$/..$/..
+TARGET = awb_view_text
+PACKAGE = org$/openoffice$/accessibility$/awb$/view$/text
+
+USE_JAVAVER:=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(JAVAVER:s/.//)" >= "140"
+
+.INCLUDE : makefile.common
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+
+.INCLUDE : target.mk
+
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/AccessibleEventMulticaster.java b/accessibility/workben/org/openoffice/accessibility/misc/AccessibleEventMulticaster.java
new file mode 100644
index 000000000000..0f56117e1fdf
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/AccessibleEventMulticaster.java
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package org.openoffice.accessibility.misc;
+
+import com.sun.star.lang.EventObject;
+
+import com.sun.star.accessibility.AccessibleEventObject;
+import com.sun.star.accessibility.XAccessibleEventBroadcaster;
+import com.sun.star.accessibility.XAccessibleEventListener;
+
+/**
+ *
+ */
+public class AccessibleEventMulticaster implements XAccessibleEventListener {
+
+ private final XAccessibleEventListener a;
+ private final XAccessibleEventListener b;
+
+ /** Creates a new instance of AccessibleEventMulticaster */
+ protected AccessibleEventMulticaster(XAccessibleEventListener a,
+ XAccessibleEventListener b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ protected XAccessibleEventListener remove(XAccessibleEventListener l) {
+ if (l == a)
+ return b;
+ if (l == b)
+ return a;
+ XAccessibleEventListener a2 = remove(a, l);
+ XAccessibleEventListener b2 = remove(b, l);
+ if (a2 == a && b2 == b) {
+ return this; // not found
+ }
+ return add(a2, b2);
+ }
+
+ public void notifyEvent(AccessibleEventObject accessibleEventObject) {
+ a.notifyEvent(accessibleEventObject);
+ b.notifyEvent(accessibleEventObject);
+ }
+
+ public void disposing(EventObject eventObject) {
+ a.disposing(eventObject);
+ b.disposing(eventObject);
+ }
+
+ public static XAccessibleEventListener add(XAccessibleEventListener a, XAccessibleEventListener b) {
+ if (a == null)
+ return b;
+ if (b == null)
+ return a;
+ return new AccessibleEventMulticaster(a,b);
+ }
+
+ public static XAccessibleEventListener remove(XAccessibleEventListener l, XAccessibleEventListener oldl) {
+ if (l == oldl || l == null) {
+ return null;
+ } else if (l instanceof AccessibleEventMulticaster) {
+ return ((AccessibleEventMulticaster) l).remove(oldl);
+ } else {
+ return l;
+ }
+ }
+
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/Connector.java b/accessibility/workben/org/openoffice/accessibility/misc/Connector.java
new file mode 100644
index 000000000000..de188676e224
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/Connector.java
@@ -0,0 +1,50 @@
+package org.openoffice.accessibility.misc;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+
+/** Wait for an Office application and connect to it.
+*/
+public class Connector
+ extends TimerTask
+{
+ final public static long snDelay = 3000;
+
+ public Connector ()
+ {
+ maTimer = new Timer (true);
+ maListeners = new Vector();
+ run ();
+ }
+
+ public void AddConnectionListener (ActionListener aListener)
+ {
+ SimpleOffice aOffice = SimpleOffice.Instance();
+ if (aOffice!=null && aOffice.IsConnected())
+ aListener.actionPerformed (
+ new ActionEvent (aOffice,0,"<connected>"));
+ maListeners.add (aListener);
+ }
+
+ public void run ()
+ {
+ SimpleOffice aOffice = SimpleOffice.Instance();
+ if (aOffice!=null && !aOffice.IsConnected())
+ if ( ! aOffice.Connect())
+ maTimer.schedule (this, snDelay);
+ else
+ {
+ ActionEvent aEvent = new ActionEvent (aOffice,0,"<connected>");
+ for (int i=0; i<maListeners.size(); i++)
+ ((ActionListener)maListeners.elementAt(i)).actionPerformed(
+ aEvent);
+ }
+ }
+
+ Timer maTimer;
+ Vector maListeners;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/InformationWriter.java b/accessibility/workben/org/openoffice/accessibility/misc/InformationWriter.java
new file mode 100644
index 000000000000..fbd1455cd295
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/InformationWriter.java
@@ -0,0 +1,421 @@
+package org.openoffice.accessibility.misc;
+
+import java.lang.Thread;
+import java.io.PrintStream;
+
+import com.sun.star.awt.Rectangle;
+import com.sun.star.awt.XWindow;
+
+import com.sun.star.beans.Property;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.beans.XPropertySetInfo;
+
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XChild;
+import com.sun.star.container.XEnumerationAccess;
+import com.sun.star.container.XEnumeration;
+
+import com.sun.star.frame.XComponentLoader;
+import com.sun.star.frame.XController;
+import com.sun.star.frame.XDesktop;
+import com.sun.star.frame.XFrame;
+import com.sun.star.frame.XTasksSupplier;
+import com.sun.star.frame.XTask;
+
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lang.XServiceName;
+import com.sun.star.lang.XTypeProvider;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XInterface;
+import com.sun.star.uno.Type;
+
+import com.sun.star.drawing.XDrawView;
+import com.sun.star.drawing.XDrawPage;
+import com.sun.star.drawing.XShapes;
+import com.sun.star.drawing.XShape;
+import com.sun.star.drawing.XShapeDescriptor;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleComponent;
+import com.sun.star.accessibility.XAccessibleRelationSet;
+import com.sun.star.accessibility.XAccessibleStateSet;
+
+public class InformationWriter
+{
+ public InformationWriter (PrintStream aOut)
+ {
+ maOut = aOut;
+ }
+
+ public void drawPageTest (XInterface xPage)
+ {
+ try
+ {
+ printProperty (xPage, "BorderBottom ", "BorderBottom");
+ printProperty (xPage, "BorderLeft ", "BorderLeft");
+ printProperty (xPage, "BorderRight ", "BorderRight");
+ printProperty (xPage, "BorderTop ", "BorderTop");
+ printProperty (xPage, "Height ", "Height");
+ printProperty (xPage, "Width ", "Width");
+ printProperty (xPage, "Number ", "Number");
+ }
+ catch (Exception e)
+ {
+ System.out.println ("caught exception while testing draw page:" + e);
+ }
+ }
+
+ public void printProperty (XInterface xObject, String prefix, String name)
+ {
+ try
+ {
+ XPropertySet xPropertySet = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, xObject);
+ maOut.println (prefix +
+ xPropertySet.getPropertyValue (name));
+ }
+ catch (Exception e)
+ {
+ maOut.println ("caught exception while getting property "
+ + name + " : " + e);
+ }
+ }
+
+
+
+ public void showShapes (XDrawPage xPage)
+ {
+ try
+ {
+ XIndexAccess xShapeList = (XIndexAccess) UnoRuntime.queryInterface(
+ XIndexAccess.class, xPage);
+
+ maOut.println ("There are " + xShapeList.getCount()
+ + " shapes");
+ for (int i=0; i<xShapeList.getCount(); i++)
+ {
+ XShape xShape = (XShape) UnoRuntime.queryInterface(
+ XShape.class, xShapeList.getByIndex (i));
+
+ XShapeDescriptor xShapeDescriptor =
+ (XShapeDescriptor) UnoRuntime.queryInterface(
+ XShapeDescriptor.class, xShape);
+ String sName = xShapeDescriptor.getShapeType ();
+ maOut.println (" shape " + i + " : " + sName);
+
+ XPropertySet xPropertySet =
+ (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, xShape);
+ Integer nZOrder =
+ (Integer) xPropertySet.getPropertyValue ("ZOrder");
+ maOut.println (" zorder = " + nZOrder);
+ }
+ }
+ catch (Exception e)
+ {
+ maOut.println ("caught exception in showShapes: " + e);
+ }
+ }
+
+
+
+
+ /** @descr Print all available services of the given object to the
+ standard output.
+ */
+ public void showServices (XInterface xObject)
+ {
+ try
+ {
+ maOut.println ("Services:");
+ XMultiServiceFactory xMSF = (XMultiServiceFactory) UnoRuntime.queryInterface (
+ XMultiServiceFactory.class,
+ xObject
+ );
+ if (xMSF == null)
+ maOut.println (" object does not support interface XMultiServiceFactory");
+ else
+ {
+ String[] sServiceNames = xMSF.getAvailableServiceNames ();
+ maOut.println (" object can create "
+ + sServiceNames.length + " services");
+ for (int i=0; i<sServiceNames.length; i++)
+ maOut.println (" service " + i + " : " + sServiceNames[i]);
+ }
+ }
+ catch (Exception e)
+ {
+ maOut.println ("caught exception in showServices : " + e);
+ }
+ }
+
+ /** @descr Print the service and implementation name of the given
+ object.
+ */
+ public void showInfo (XInterface xObject)
+ {
+ try
+ {
+ System.out.println ("Info:");
+ // Use interface XServiceName to retrieve name of (main) service.
+ XServiceName xSN = (XServiceName) UnoRuntime.queryInterface (
+ XServiceName.class, xObject);
+ if (xSN == null)
+ maOut.println (" interface XServiceName not supported");
+ else
+ {
+ maOut.println (" Service name : " + xSN.getServiceName ());
+ }
+
+ // Use interface XServiceInfo to retrieve information about
+ // supported services.
+ XServiceInfo xSI = (XServiceInfo) UnoRuntime.queryInterface (
+ XServiceInfo.class, xObject);
+ if (xSI == null)
+ maOut.println (" interface XServiceInfo not supported");
+ else
+ {
+ maOut.println (" Implementation name : "
+ + xSI.getImplementationName ());
+ }
+ }
+ catch (Exception e)
+ {
+ maOut.println ("caught exception in showInfo : " + e);
+ }
+ }
+
+
+
+
+ /** @descr Print information about supported interfaces.
+ */
+ public void showInterfaces (XInterface xObject)
+ {
+ try
+ {
+ maOut.println ("Interfaces:");
+ // Use interface XTypeProvider to retrieve a list of supported
+ // interfaces.
+ XTypeProvider xTP = (XTypeProvider) UnoRuntime.queryInterface (
+ XTypeProvider.class, xObject);
+ if (xTP == null)
+ maOut.println (" interface XTypeProvider not supported");
+ else
+ {
+ Type[] aTypeList = xTP.getTypes ();
+ maOut.println (" object supports " + aTypeList.length
+ + " interfaces");
+ for (int i=0; i<aTypeList.length; i++)
+ maOut.println (" " + i + " : "
+ + aTypeList[i].getTypeName());
+ }
+ }
+ catch (Exception e)
+ {
+ maOut.println ("caught exception in showInterfaces : " + e);
+ }
+ }
+
+
+ /** @descr Print information concerning the accessibility of the given
+ object.
+ */
+ public boolean showAccessibility (XInterface xObject, int depth)
+ {
+ try
+ {
+ // Create indentation string.
+ String sIndent = "";
+ while (depth-- > 0)
+ sIndent += " ";
+
+ // Get XAccessibleContext object if given object does not
+ // already support this interface.
+ XAccessibleContext xContext
+ = (XAccessibleContext) UnoRuntime.queryInterface (
+ XAccessibleContext.class, xObject);
+ if (xContext == null)
+ {
+ XAccessible xAccessible
+ = (XAccessible) UnoRuntime.queryInterface (
+ XAccessible.class, xObject);
+ if (xAccessible == null)
+ {
+ maOut.println (sIndent + "given object " + xObject
+ + " is not accessible");
+ return false;
+ }
+ else
+ xContext = xAccessible.getAccessibleContext();
+ }
+
+ // Print information about the accessible context.
+ if (xContext != null)
+ {
+ maOut.println (sIndent + "Name : "
+ + xContext.getAccessibleName());
+ maOut.println (sIndent + "Description : "
+ + xContext.getAccessibleDescription());
+ maOut.println (sIndent + "Role : "
+ + xContext.getAccessibleRole());
+ String sHasParent;
+ if (xContext.getAccessibleParent() != null)
+ {
+ maOut.println (sIndent + "Has parent : yes");
+ maOut.println (sIndent + "Parent index : "
+ + xContext.getAccessibleIndexInParent());
+ }
+ else
+ maOut.println (sIndent + "Has parent : no");
+ maOut.println (sIndent + "Child count : "
+ + xContext.getAccessibleChildCount());
+ maOut.print (sIndent + "Relation set : ");
+ XAccessibleRelationSet xRelationSet
+ = xContext.getAccessibleRelationSet();
+ if (xRelationSet != null)
+ {
+ maOut.print (xRelationSet.getRelationCount() + " (");
+ for (int i=0; i<xRelationSet.getRelationCount(); i++)
+ {
+ if (i > 0)
+ maOut.print (", ");
+ maOut.print (xRelationSet.getRelation(i).toString());
+ }
+ maOut.println (")");
+ }
+ else
+ maOut.println ("no relation set");
+
+ maOut.print (sIndent + "State set : ");
+ XAccessibleStateSet xStateSet =
+ xContext.getAccessibleStateSet();
+ if (xStateSet != null)
+ {
+ XIndexAccess xStates =
+ (XIndexAccess) UnoRuntime.queryInterface (
+ XIndexAccess.class, xStateSet);
+ maOut.print (xStates.getCount() + " (");
+ for (int i=0; i<xStates.getCount(); i++)
+ {
+ if (i > 0)
+ maOut.print (", ");
+ maOut.print (xStates.getByIndex(i).toString());
+ }
+ maOut.println (")");
+ }
+ else
+ maOut.println ("no state set");
+
+ showAccessibleComponent (xContext, sIndent);
+ }
+ else
+ maOut.println ("object has no accessible context.");
+
+ // showInfo (xContext);
+ // showServices (xContext);
+ // showInterfaces (xContext);
+ }
+ catch (Exception e)
+ {
+ System.out.println ("caught exception in showAccessibility :" + e);
+ }
+ return true;
+ }
+
+
+
+
+ /** @descr Print information about the given accessible component.
+ */
+ public void showAccessibleComponent (XInterface xObject, String sIndent)
+ {
+ try
+ {
+ XAccessibleComponent xComponent =
+ (XAccessibleComponent) UnoRuntime.queryInterface (
+ XAccessibleComponent.class, xObject);
+
+ // Print information about the accessible context.
+ if (xComponent != null)
+ {
+ maOut.println (sIndent + "Position : "
+ + xComponent.getLocation().X+", "
+ + xComponent.getLocation().Y);
+ maOut.println (sIndent + "Screen position : "
+ + xComponent.getLocationOnScreen().X+", "
+ + xComponent.getLocationOnScreen().Y);
+ maOut.println (sIndent + "Size : "
+ + xComponent.getSize().Width+", "
+ + xComponent.getSize().Height);
+ }
+ }
+ catch (Exception e)
+ {
+ System.out.println (
+ "caught exception in showAccessibleComponent : " + e);
+ }
+ }
+
+
+ /** Show a textual representation of the accessibility subtree rooted in
+ xRoot.
+ */
+ public boolean showAccessibilityTree (XAccessible xRoot, int depth)
+ {
+ try
+ {
+ if ( ! showAccessibility (xRoot, depth))
+ return false;
+
+ String sIndent = "";
+ for (int i=0; i<depth; i++)
+ sIndent += " ";
+
+ // Iterate over children and show them.
+ XAccessibleContext xContext = xRoot.getAccessibleContext();
+ if (xContext != null)
+ {
+ int n = xContext.getAccessibleChildCount();
+ for (int i=0; i<n; i++)
+ {
+ maOut.println (sIndent + "child " + i + " :");
+ showAccessibilityTree (xContext.getAccessibleChild(i),depth+1);
+ }
+ }
+ else
+ maOut.println ("Accessible object has no context");
+ }
+ catch (Exception e)
+ {
+ System.out.println (
+ "caught exception in showAccessibleTree : " + e);
+ return false;
+ }
+
+ return true;
+ }
+
+ public void showProperties (XInterface xObject)
+ {
+ XPropertySet xSet = (XPropertySet) UnoRuntime.queryInterface (
+ XPropertySet.class, xObject);
+ if (xSet == null)
+ maOut.println ("object does not support XPropertySet");
+ else
+ {
+ XPropertySetInfo xInfo = xSet.getPropertySetInfo ();
+ Property[] aProperties = xInfo.getProperties ();
+ int n = aProperties.length;
+ for (int i=0; i<n; i++)
+ maOut.println (i + " : " + aProperties[i].Name +", " + aProperties[i].Type);
+ }
+ }
+
+ private PrintStream maOut;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/Makefile b/accessibility/workben/org/openoffice/accessibility/misc/Makefile
new file mode 100644
index 000000000000..ce9091d5d735
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/Makefile
@@ -0,0 +1,38 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+all : package
+
+ROOT=../../../..
+PACKAGE = org.openoffice.accessibility.misc
+SUBDIRS =
+
+include makefile.common
+
+include $(ROOT)/makefile.in
+
+package: subdirs $(CLASS_FILES)
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/MessageArea.java b/accessibility/workben/org/openoffice/accessibility/misc/MessageArea.java
new file mode 100644
index 000000000000..d990a517dfc1
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/MessageArea.java
@@ -0,0 +1,125 @@
+package org.openoffice.accessibility.misc;
+
+import java.awt.Font;
+import java.awt.Rectangle;
+import java.awt.Color;
+import java.awt.Graphics;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JScrollBar;
+
+
+
+/** A message area displays text in a scrollable text widget. It is a
+ singleton. Other objects can access it directly to display messages.
+*/
+public class MessageArea
+ extends JScrollPane
+{
+ public static synchronized MessageArea Instance ()
+ {
+ if (saInstance == null)
+ saInstance = new MessageArea ();
+ return saInstance;
+ }
+
+
+
+
+ /** Create a new message area. This method is private because the class is
+ a singleton and may therefore not be instanciated from the outside.
+ */
+ private MessageArea ()
+ {
+ maText = new JTextArea();
+ maText.setBackground (new Color (255,250,240));
+ maText.setFont (new Font ("Helvetica", Font.PLAIN, 9));
+ setViewportView (maText);
+ setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ setHorizontalScrollBarPolicy (JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+
+ printMessage (
+ "class path is " + System.getProperty ("java.class.path") + "\n");
+ }
+
+
+
+
+ /** Show the given string at the end of the message area and scroll to make
+ it visible.
+ */
+ public static synchronized void print (String aMessage)
+ {
+ print (0, aMessage);
+ }
+
+
+
+
+ /** Show the given string at the end of the message area and scroll to make
+ it visible. Indent the string as requested.
+ */
+ public static synchronized void print (int nIndentation, String aMessage)
+ {
+ while (nIndentation-- > 0)
+ aMessage = " " + aMessage;
+ Instance().printMessage(aMessage);
+ }
+
+
+
+
+ /** Show the given string at the end of the message area and scroll to make
+ it visible.
+ */
+ public static void println (String aMessage)
+ {
+ println (0, aMessage);
+ }
+
+
+
+
+ /** Show the given string at the end of the message area and scroll to make
+ it visible.
+ */
+ public static void println (int nIndentation, String aMessage)
+ {
+ print (nIndentation, aMessage+"\n");
+ }
+
+
+
+
+ public void paintComponent (Graphics g)
+ {
+ synchronized (g)
+ {
+ JScrollBar sb = getVerticalScrollBar();
+ if (sb != null)
+ {
+ int nScrollBarValue = sb.getMaximum() - sb.getVisibleAmount() - 1;
+ sb.setValue (nScrollBarValue);
+ }
+ super.paintComponent (g);
+ }
+ }
+
+
+
+
+ /** Append the given string to the end of the text and scroll so that it
+ becomes visible. This is an internal method. Use one of the static
+ and public ones.
+ */
+ private synchronized void printMessage (String aMessage)
+ {
+ maText.append (aMessage);
+ }
+
+
+
+
+ private static MessageArea saInstance = null;
+ private JTextArea maText;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/NameProvider.java b/accessibility/workben/org/openoffice/accessibility/misc/NameProvider.java
new file mode 100644
index 000000000000..736bc2c7f17b
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/NameProvider.java
@@ -0,0 +1,263 @@
+package org.openoffice.accessibility.misc;
+
+import java.util.HashMap;
+import com.sun.star.accessibility.AccessibleStateType;
+import com.sun.star.accessibility.AccessibleEventId;
+import com.sun.star.accessibility.AccessibleRole;
+import com.sun.star.accessibility.AccessibleRelationType;
+
+
+/** Provide names for several accessibility constants groups.
+*/
+public class NameProvider
+{
+ /** Return the name of the specified state.
+ @param nStateId
+ Id of the state for which to return its name. This is one of
+ the ids listed in the <type>AccessibleStateType</const>
+ constants group.
+ @return
+ Returns the name of the specified state. When an invalid or
+ unknown state id is given then a special string is returned that
+ says that the state does not exist.
+ */
+ public static String getStateName (int nStateId)
+ {
+ String sStateName = (String)maStateMap.get (new Integer(nStateId));
+ if (sStateName == null)
+ sStateName = new String ("<unknown state " + nStateId + ">");
+ return sStateName;
+ }
+
+
+ /** Return the name of the specified event.
+ @param nEventId
+ Id of the event type for which to return its name. This is one
+ of the ids listed in the <type>AccessibleEventId</const>
+ constants group.
+ @return
+ Returns the name of the specified event type or an empty string
+ if an invalid / unknown event id was given.
+ */
+ public static String getEventName (int nEventId)
+ {
+ return (String)maEventMap.get (new Integer(nEventId));
+ }
+
+
+ /** Return the name of the specified role.
+ @param nRole
+ Id of the role for which to return its name. This is one of
+ the ids listed in the <type>AccessibleRole</const>
+ constants group.
+ @return
+ Returns the name of the specified role or an empty string if an
+ invalid / unknown role id was given.
+ */
+ public static String getRoleName (int nRole)
+ {
+ return (String)maRoleMap.get (new Integer(nRole));
+ }
+
+
+ /** Return the name of the specified relation.
+ @param nRelation
+ Id of the relation for which to return its name. This is one of
+ the ids listed in the <type>AccessibleRelationType</const>
+ constants group.
+ @return
+ Returns the name of the specified relation type or an empty
+ string if an invalid / unknown role id was given.
+ */
+ public static String getRelationName (int nRelation)
+ {
+ return (String)maRelationMap.get (new Integer(nRelation));
+ }
+
+
+ private static HashMap maStateMap = new HashMap();
+ private static HashMap maEventMap = new HashMap();
+ private static HashMap maRoleMap = new HashMap();
+ private static HashMap maRelationMap = new HashMap();
+
+ static {
+ maStateMap.put (new Integer (AccessibleStateType.INVALID), "INVALID");
+ maStateMap.put (new Integer (AccessibleStateType.ACTIVE), "ACTIVE");
+ maStateMap.put (new Integer (AccessibleStateType.ARMED), "ARMED");
+ maStateMap.put (new Integer (AccessibleStateType.BUSY), "BUSY");
+ maStateMap.put (new Integer (AccessibleStateType.CHECKED), "CHECKED");
+ // maStateMap.put (new Integer (AccessibleStateType.COLLAPSED), "COLLAPSED");
+ maStateMap.put (new Integer (AccessibleStateType.DEFUNC), "DEFUNC");
+ maStateMap.put (new Integer (AccessibleStateType.EDITABLE), "EDITABLE");
+ maStateMap.put (new Integer (AccessibleStateType.ENABLED), "ENABLED");
+ maStateMap.put (new Integer (AccessibleStateType.EXPANDABLE), "EXPANDABLE");
+ maStateMap.put (new Integer (AccessibleStateType.EXPANDED), "EXPANDED");
+ maStateMap.put (new Integer (AccessibleStateType.FOCUSABLE), "FOCUSABLE");
+ maStateMap.put (new Integer (AccessibleStateType.FOCUSED), "FOCUSED");
+ maStateMap.put (new Integer (AccessibleStateType.HORIZONTAL), "HORIZONTAL");
+ maStateMap.put (new Integer (AccessibleStateType.ICONIFIED), "ICONIFIED");
+ maStateMap.put (new Integer (AccessibleStateType.MODAL), "MODAL");
+ maStateMap.put (new Integer (AccessibleStateType.MULTI_LINE), "MULTI_LINE");
+ maStateMap.put (new Integer (AccessibleStateType.MULTI_SELECTABLE), "MULTI_SELECTABLE");
+ maStateMap.put (new Integer (AccessibleStateType.OPAQUE), "OPAQUE");
+ maStateMap.put (new Integer (AccessibleStateType.PRESSED), "PRESSED");
+ maStateMap.put (new Integer (AccessibleStateType.RESIZABLE), "RESIZABLE");
+ maStateMap.put (new Integer (AccessibleStateType.SELECTABLE), "SELECTABLE");
+ maStateMap.put (new Integer (AccessibleStateType.SELECTED), "SELECTED");
+ maStateMap.put (new Integer (AccessibleStateType.SENSITIVE), "SENSITIVE");
+ maStateMap.put (new Integer (AccessibleStateType.SHOWING), "SHOWING");
+ maStateMap.put (new Integer (AccessibleStateType.SINGLE_LINE), "SINGLE_LINE");
+ maStateMap.put (new Integer (AccessibleStateType.STALE), "STALE");
+ maStateMap.put (new Integer (AccessibleStateType.TRANSIENT), "TRANSIENT");
+ maStateMap.put (new Integer (AccessibleStateType.VERTICAL), "VERTICAL");
+ maStateMap.put (new Integer (AccessibleStateType.VISIBLE), "VISIBLE");
+ maStateMap.put (new Integer (AccessibleStateType.MANAGES_DESCENDANTS),
+ "MANAGES_DESCENDANTS");
+ //maStateMap.put (new Integer (AccessibleStateType.INCONSISTENT),"INCONSISTENT");
+
+
+ maEventMap.put (new Integer (0),
+ "[UNKNOWN]");
+ maEventMap.put (new Integer (AccessibleEventId.NAME_CHANGED),
+ "NAME_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.DESCRIPTION_CHANGED),
+ "DESCRIPTION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.ACTION_CHANGED),
+ "ACTION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.STATE_CHANGED),
+ "STATE_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.ACTIVE_DESCENDANT_CHANGED),
+ "ACTIVE_DESCENDANT_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.BOUNDRECT_CHANGED),
+ "BOUNDRECT_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.CHILD),
+ "CHILD");
+ maEventMap.put (new Integer (AccessibleEventId.INVALIDATE_ALL_CHILDREN),
+ "INVALIDATE_ALL_CHILDREN");
+ maEventMap.put (new Integer (AccessibleEventId.SELECTION_CHANGED),
+ "SELECTION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.VISIBLE_DATA_CHANGED),
+ "VISIBLE_DATA_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.VALUE_CHANGED),
+ "VALUE_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.CONTENT_FLOWS_FROM_RELATION_CHANGED),
+ "CONTENT_FLOWS_FROM_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.CONTENT_FLOWS_TO_RELATION_CHANGED),
+ "CONTENT_FLOWS_TO_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.CONTROLLED_BY_RELATION_CHANGED),
+ "CONTROLLED_BY_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.CONTROLLER_FOR_RELATION_CHANGED),
+ "CONTROLLER_FOR_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.LABEL_FOR_RELATION_CHANGED),
+ "LABEL_FOR_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.LABELED_BY_RELATION_CHANGED),
+ "LABELED_BY_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.MEMBER_OF_RELATION_CHANGED),
+ "MEMBER_OF_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.SUB_WINDOW_OF_RELATION_CHANGED),
+ "SUB_WINDOW_OF_RELATION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.CARET_CHANGED),
+ "CARET_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TEXT_SELECTION_CHANGED),
+ "TEXT_SELECTION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TEXT_CHANGED),
+ "TEXT_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TEXT_ATTRIBUTE_CHANGED),
+ "TEXT_ATTRIBUTE_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.HYPERTEXT_CHANGED),
+ "HYPERTEXT_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TABLE_CAPTION_CHANGED),
+ "TABLE_CAPTION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TABLE_COLUMN_DESCRIPTION_CHANGED),
+ "TABLE_COLUMN_DESCRIPTION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TABLE_COLUMN_HEADER_CHANGED),
+ "TABLE_COLUMN_HEADER_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TABLE_MODEL_CHANGED),
+ "TABLE_MODEL_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TABLE_ROW_DESCRIPTION_CHANGED),
+ "TABLE_ROW_DESCRIPTION_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TABLE_ROW_HEADER_CHANGED),
+ "TABLE_ROW_HEADER_CHANGED");
+ maEventMap.put (new Integer (AccessibleEventId.TABLE_SUMMARY_CHANGED),
+ "TABLE_SUMMARY_CHANGED");
+
+ maRoleMap.put (new Integer(AccessibleRole.UNKNOWN), "UNKNOWN");
+ maRoleMap.put (new Integer (AccessibleRole.UNKNOWN), "UNKNOWN");
+ maRoleMap.put (new Integer (AccessibleRole.ALERT), "ALERT");
+ maRoleMap.put (new Integer (AccessibleRole.COLUMN_HEADER), "COLUMN_HEADER");
+ maRoleMap.put (new Integer (AccessibleRole.CANVAS), "CANVAS");
+ maRoleMap.put (new Integer (AccessibleRole.CHECK_BOX), "CHECK_BOX");
+ maRoleMap.put (new Integer (AccessibleRole.CHECK_MENU_ITEM), "CHECK_MENU_ITEM");
+ maRoleMap.put (new Integer (AccessibleRole.COLOR_CHOOSER), "COLOR_CHOOSER");
+ maRoleMap.put (new Integer (AccessibleRole.COMBO_BOX), "COMBO_BOX");
+ maRoleMap.put (new Integer (AccessibleRole.DESKTOP_ICON), "DESKTOP_ICON");
+ maRoleMap.put (new Integer (AccessibleRole.DESKTOP_PANE), "DESKTOP_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.DIRECTORY_PANE), "DIRECTORY_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.DIALOG), "DIALOG");
+ maRoleMap.put (new Integer (AccessibleRole.DOCUMENT), "DOCUMENT");
+ maRoleMap.put (new Integer (AccessibleRole.EMBEDDED_OBJECT), "EMBEDDED_OBJECT");
+ maRoleMap.put (new Integer (AccessibleRole.END_NOTE), "END_NOTE");
+ maRoleMap.put (new Integer (AccessibleRole.FILE_CHOOSER), "FILE_CHOOSER");
+ maRoleMap.put (new Integer (AccessibleRole.FILLER), "FILLER");
+ maRoleMap.put (new Integer (AccessibleRole.FONT_CHOOSER), "FONT_CHOOSER");
+ maRoleMap.put (new Integer (AccessibleRole.FOOTER), "FOOTER");
+ maRoleMap.put (new Integer (AccessibleRole.FOOTNOTE), "FOOTNOTE");
+ maRoleMap.put (new Integer (AccessibleRole.FRAME), "FRAME");
+ maRoleMap.put (new Integer (AccessibleRole.GLASS_PANE), "GLASS_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.GRAPHIC), "GRAPHIC");
+ maRoleMap.put (new Integer (AccessibleRole.GROUP_BOX), "GROUP_BOX");
+ maRoleMap.put (new Integer (AccessibleRole.HEADER), "HEADER");
+ maRoleMap.put (new Integer (AccessibleRole.HEADING), "HEADING");
+ maRoleMap.put (new Integer (AccessibleRole.HYPER_LINK), "HYPER_LINK");
+ maRoleMap.put (new Integer (AccessibleRole.ICON), "ICON");
+ maRoleMap.put (new Integer (AccessibleRole.INTERNAL_FRAME), "INTERNAL_FRAME");
+ maRoleMap.put (new Integer (AccessibleRole.LABEL), "LABEL");
+ maRoleMap.put (new Integer (AccessibleRole.LAYERED_PANE), "LAYERED_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.LIST), "LIST");
+ maRoleMap.put (new Integer (AccessibleRole.LIST_ITEM), "LIST_ITEM");
+ maRoleMap.put (new Integer (AccessibleRole.MENU), "MENU");
+ maRoleMap.put (new Integer (AccessibleRole.MENU_BAR), "MENU_BAR");
+ maRoleMap.put (new Integer (AccessibleRole.MENU_ITEM), "MENU_ITEM");
+ maRoleMap.put (new Integer (AccessibleRole.OPTION_PANE), "OPTION_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.PAGE_TAB), "PAGE_TAB");
+ maRoleMap.put (new Integer (AccessibleRole.PAGE_TAB_LIST), "PAGE_TAB_LIST");
+ maRoleMap.put (new Integer (AccessibleRole.PANEL), "PANEL");
+ maRoleMap.put (new Integer (AccessibleRole.PARAGRAPH), "PARAGRAPH");
+ maRoleMap.put (new Integer (AccessibleRole.PASSWORD_TEXT), "PASSWORD_TEXT");
+ maRoleMap.put (new Integer (AccessibleRole.POPUP_MENU), "POPUP_MENU");
+ maRoleMap.put (new Integer (AccessibleRole.PUSH_BUTTON), "PUSH_BUTTON");
+ maRoleMap.put (new Integer (AccessibleRole.PROGRESS_BAR), "PROGRESS_BAR");
+ maRoleMap.put (new Integer (AccessibleRole.RADIO_BUTTON), "RADIO_BUTTON");
+ maRoleMap.put (new Integer (AccessibleRole.RADIO_MENU_ITEM), "RADIO_MENU_ITEM");
+ maRoleMap.put (new Integer (AccessibleRole.ROW_HEADER), "ROW_HEADER");
+ maRoleMap.put (new Integer (AccessibleRole.ROOT_PANE), "ROOT_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.SCROLL_BAR), "SCROLL_BAR");
+ maRoleMap.put (new Integer (AccessibleRole.SCROLL_PANE), "SCROLL_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.SHAPE), "SHAPE");
+ maRoleMap.put (new Integer (AccessibleRole.SEPARATOR), "SEPARATOR");
+ maRoleMap.put (new Integer (AccessibleRole.SLIDER), "SLIDER");
+ maRoleMap.put (new Integer (AccessibleRole.SPIN_BOX), "SPIN_BOX");
+ maRoleMap.put (new Integer (AccessibleRole.SPLIT_PANE), "SPLIT_PANE");
+ maRoleMap.put (new Integer (AccessibleRole.STATUS_BAR), "STATUS_BAR");
+ maRoleMap.put (new Integer (AccessibleRole.TABLE), "TABLE");
+ maRoleMap.put (new Integer (AccessibleRole.TABLE_CELL), "TABLE_CELL");
+ maRoleMap.put (new Integer (AccessibleRole.TEXT), "TEXT");
+ maRoleMap.put (new Integer (AccessibleRole.TEXT_FRAME), "TEXT_FRAME");
+ maRoleMap.put (new Integer (AccessibleRole.TOGGLE_BUTTON), "TOGGLE_BUTTON");
+ maRoleMap.put (new Integer (AccessibleRole.TOOL_BAR), "TOOL_BAR");
+ maRoleMap.put (new Integer (AccessibleRole.TOOL_TIP), "TOOL_TIP");
+ maRoleMap.put (new Integer (AccessibleRole.TREE), "TREE");
+ maRoleMap.put (new Integer (AccessibleRole.VIEW_PORT), "VIEW_PORT");
+ maRoleMap.put (new Integer (AccessibleRole.WINDOW), "WINDOW");
+
+ maRelationMap.put (new Integer (AccessibleRelationType.INVALID), "INVALID");
+ maRelationMap.put (new Integer (AccessibleRelationType.CONTENT_FLOWS_FROM), "CONTENT_FLOWS_FROM");
+ maRelationMap.put (new Integer (AccessibleRelationType.CONTENT_FLOWS_TO), "CONTENT_FLOWS_TO");
+ maRelationMap.put (new Integer (AccessibleRelationType.CONTROLLED_BY), "CONTROLLED_BY");
+ maRelationMap.put (new Integer (AccessibleRelationType.CONTROLLER_FOR), "CONTROLLER_FOR");
+ maRelationMap.put (new Integer (AccessibleRelationType.LABEL_FOR), "LABEL_FOR");
+ maRelationMap.put (new Integer (AccessibleRelationType.LABELED_BY), "LABELED_BY");
+ maRelationMap.put (new Integer (AccessibleRelationType.MEMBER_OF), "MEMBER_OF");
+ maRelationMap.put (new Integer (AccessibleRelationType.SUB_WINDOW_OF), "SUB_WINDOW_OF");
+ }
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/OfficeConnection.java b/accessibility/workben/org/openoffice/accessibility/misc/OfficeConnection.java
new file mode 100644
index 000000000000..d9f77d9e4e07
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/OfficeConnection.java
@@ -0,0 +1,169 @@
+package org.openoffice.accessibility.misc;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.PrintStream;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.bridge.XUnoUrlResolver;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.comp.helper.Bootstrap;
+
+/** This class establishes a connection to a StarOffice application.
+ */
+public class OfficeConnection
+ extends TimerTask
+{
+ final public static long snDelay = 3000;
+
+ public static synchronized OfficeConnection Instance ()
+ {
+ if (saInstance == null)
+ saInstance = new OfficeConnection ();
+ return saInstance;
+ }
+
+
+
+
+ static public void SetPipeName (String sPipeName)
+ {
+ ssDefaultPipeName = sPipeName;
+ }
+
+
+
+
+ public void AddConnectionListener (ActionListener aListener)
+ {
+ SimpleOffice aOffice = SimpleOffice.Instance();
+ if (IsValid())
+ aListener.actionPerformed (
+ new ActionEvent (aOffice,0,"<connected>"));
+ maListeners.add (aListener);
+ }
+
+
+
+ /** @descr Return the service manager that represents the connected
+ StarOffice application
+ */
+ public XMultiServiceFactory GetServiceManager ()
+ {
+ return maServiceManager;
+ }
+
+
+
+
+ /** Return a flag that indicates if the constructor has been able to
+ establish a valid connection.
+ */
+ public boolean IsValid ()
+ {
+ return (maServiceManager != null);
+ }
+
+
+
+
+ /** Connect to a already running StarOffice application that has
+ been started with a command line argument like
+ "-accept=pipe,name=<username>;urp;"
+ */
+ private boolean Connect ()
+ {
+ mbInitialized = true;
+ // Set up connection string.
+ String sConnectString = "uno:pipe,name=" + msPipeName
+ + ";urp;StarOffice.ServiceManager";
+
+ // connect to a running office and get the ServiceManager
+ try
+ {
+ // Create a URL Resolver.
+ XMultiServiceFactory aLocalServiceManager =
+ Bootstrap.createSimpleServiceManager();
+ XUnoUrlResolver aURLResolver =
+ (XUnoUrlResolver) UnoRuntime.queryInterface (
+ XUnoUrlResolver.class,
+ aLocalServiceManager.createInstance (
+ "com.sun.star.bridge.UnoUrlResolver")
+ );
+
+ maServiceManager =
+ (XMultiServiceFactory) UnoRuntime.queryInterface (
+ XMultiServiceFactory.class,
+ aURLResolver.resolve (sConnectString)
+ );
+ }
+
+ catch (Exception e)
+ {
+ if (maOut != null)
+ {
+ maOut.println ("Could not connect with "
+ + sConnectString + " : " + e);
+ maOut.println ("Please start OpenOffice/StarOffice with "
+ + "\"-accept=pipe,name=" + msPipeName + ";urp;\"");
+ }
+ }
+
+ return maServiceManager != null;
+ }
+
+
+ public void run ()
+ {
+ if ( ! IsValid())
+ {
+ MessageArea.println ("trying to connect");
+ if (Connect())
+ {
+ // Stop the timer.
+ cancel ();
+
+ ActionEvent aEvent = new ActionEvent (this,0,"<connected>");
+ for (int i=0; i<maListeners.size(); i++)
+ ((ActionListener)maListeners.elementAt(i)).actionPerformed(aEvent);
+ }
+ }
+ }
+
+ private OfficeConnection ()
+ {
+ this (null);
+ }
+
+
+ private OfficeConnection (PrintStream aOut)
+ {
+ msPipeName = ssDefaultPipeName;
+ maOut = aOut;
+ maListeners = new Vector();
+ maServiceManager = null;
+
+ maTimer = new Timer (true);
+ maTimer.schedule (this, 0, snDelay);
+ }
+
+
+ private static OfficeConnection saInstance = null;
+ private static String ssDefaultPipeName = System.getenv( "USER" );
+
+ private XMultiServiceFactory maServiceManager;
+ String msPipeName;
+
+ /** A value of true just indicates that it has been tried to establish a connection,
+ not that that has been successfull.
+ */
+ private boolean mbInitialized = false;
+
+ /// Stream used to print messages.
+ private PrintStream maOut;
+ private Timer maTimer;
+ private Vector maListeners;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/Options.java b/accessibility/workben/org/openoffice/accessibility/misc/Options.java
new file mode 100644
index 000000000000..e3c358264a1d
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/Options.java
@@ -0,0 +1,106 @@
+package org.openoffice.accessibility.misc;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.Properties;
+
+
+/** Load from and save options into a file.
+*/
+public class Options
+ extends Properties
+{
+ static public Options Instance ()
+ {
+ if (saOptions == null)
+ saOptions = new Options ();
+ return saOptions;
+ }
+
+ static public void SetString (String sName, String sValue)
+ {
+ Instance().setProperty (sName, sValue);
+ Instance().Save ();
+ }
+
+ static public String GetString (String sName)
+ {
+ return Instance().getProperty (sName);
+ }
+
+ static public void SetBoolean (String sName, boolean bValue)
+ {
+ Instance().setProperty (sName, Boolean.toString(bValue));
+ Instance().Save ();
+ }
+
+ static public boolean GetBoolean (String sName)
+ {
+ return Boolean.valueOf(Instance().getProperty (sName)).booleanValue();
+ }
+
+ static public void SetInteger (String sName, int nValue)
+ {
+ Instance().setProperty (sName, Integer.toString(nValue));
+ Instance().Save ();
+ }
+
+ static public int GetInteger (String sName, int nDefault)
+ {
+ String sValue = Instance().getProperty (sName);
+ if (sValue == null)
+ return nDefault;
+ else
+ return Integer.parseInt (sValue);
+ }
+
+ public void Load (String sBaseName)
+ {
+ try
+ {
+ load (new FileInputStream (ProvideFile(sBaseName)));
+ }
+ catch (java.io.IOException e)
+ {
+ // Ignore a non-existing options file.
+ }
+ }
+
+ public void Save (String sBaseName)
+ {
+ ProvideFile(sBaseName);
+ Save ();
+ }
+
+ public void Save ()
+ {
+ if (maFile != null)
+ {
+ try
+ {
+ store (new FileOutputStream (maFile), null);
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+ }
+
+ private Options ()
+ {
+ maFile = null;
+ }
+
+ private File ProvideFile (String sBaseName)
+ {
+ maFile = new File (
+ System.getProperty ("user.home"),
+ sBaseName);
+ return maFile;
+ }
+
+ static private Options saOptions = null;
+ private File maFile;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/SimpleOffice.java b/accessibility/workben/org/openoffice/accessibility/misc/SimpleOffice.java
new file mode 100644
index 000000000000..3a2dcdf21926
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/SimpleOffice.java
@@ -0,0 +1,413 @@
+package org.openoffice.accessibility.misc;
+
+import java.lang.Thread;
+
+import com.sun.star.awt.Rectangle;
+import com.sun.star.awt.XExtendedToolkit;
+import com.sun.star.awt.XWindow;
+
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.XPropertySet;
+
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XChild;
+import com.sun.star.container.XEnumerationAccess;
+import com.sun.star.container.XEnumeration;
+
+import com.sun.star.frame.XComponentLoader;
+import com.sun.star.frame.XController;
+import com.sun.star.frame.XDesktop;
+import com.sun.star.frame.XFrame;
+import com.sun.star.frame.XModel;
+import com.sun.star.frame.XTasksSupplier;
+import com.sun.star.frame.XTask;
+
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lang.XServiceName;
+import com.sun.star.lang.XTypeProvider;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XInterface;
+import com.sun.star.uno.Type;
+
+import com.sun.star.drawing.XDrawView;
+import com.sun.star.drawing.XDrawPage;
+import com.sun.star.drawing.XShapes;
+import com.sun.star.drawing.XShape;
+import com.sun.star.drawing.XShapeDescriptor;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.accessibility.XAccessibleContext;
+import com.sun.star.accessibility.XAccessibleComponent;
+import com.sun.star.accessibility.XAccessibleRelationSet;
+import com.sun.star.accessibility.XAccessibleStateSet;
+
+
+/** This singleton class tries to simplify some tasks like loading a document
+ or getting various objects.
+*/
+public class SimpleOffice
+{
+ synchronized static public SimpleOffice Instance ()
+ {
+ if (saInstance == null)
+ saInstance = new SimpleOffice ();
+
+ return saInstance;
+ }
+
+ synchronized static public void Clear ()
+ {
+ saInstance = null;
+ }
+
+
+ public XModel LoadDocument (String URL)
+ {
+ XModel xModel = null;
+ try
+ {
+ // Load the document from the specified URL.
+ XComponentLoader xLoader =
+ (XComponentLoader)UnoRuntime.queryInterface(
+ XComponentLoader.class, mxDesktop);
+
+ XComponent xComponent = xLoader.loadComponentFromURL (
+ URL,
+ "_blank",
+ 0,
+ new PropertyValue[0]
+ );
+
+ xModel = (XModel) UnoRuntime.queryInterface(
+ XModel.class, xComponent);
+ }
+ catch (java.lang.NullPointerException e)
+ {
+ MessageArea.println ("caught exception while loading "
+ + URL + " : " + e);
+ }
+ catch (Exception e)
+ {
+ MessageArea.println ("caught exception while loading "
+ + URL + " : " + e);
+ }
+ return xModel;
+ }
+
+
+
+
+ public XModel GetModel (String name)
+ {
+ XModel xModel = null;
+ try
+ {
+ XTasksSupplier xTasksSupplier =
+ (XTasksSupplier) UnoRuntime.queryInterface(
+ XTasksSupplier.class, mxDesktop);
+ XEnumerationAccess xEA = xTasksSupplier.getTasks();
+ XEnumeration xE = xEA.createEnumeration();
+ while (xE.hasMoreElements())
+ {
+ XTask xTask = (XTask) UnoRuntime.queryInterface(
+ XTask.class, xE.nextElement());
+ MessageArea.print (xTask.getName());
+ }
+ }
+ catch (Exception e)
+ {
+ MessageArea.println ("caught exception while getting Model " + name
+ + ": " + e);
+ }
+ return xModel;
+ }
+
+
+ public XModel GetModel (XDrawView xView)
+ {
+ XController xController = (XController) UnoRuntime.queryInterface(
+ XController.class, xView);
+ if (xController != null)
+ return xController.getModel();
+ else
+ {
+ MessageArea.println ("can't cast view to controller");
+ return null;
+ }
+ }
+
+
+
+
+ public XDesktop GetDesktop ()
+ {
+ if (mxDesktop != null)
+ return mxDesktop;
+ try
+ {
+ // Get the factory of the connected office.
+ XMultiServiceFactory xMSF =
+ OfficeConnection.Instance().GetServiceManager ();
+ if (xMSF == null)
+ {
+ MessageArea.println ("can't connect to office");
+ return null;
+ }
+ else
+ MessageArea.println ("Connected successfully.");
+
+ // Create a new desktop.
+ mxDesktop = (XDesktop) UnoRuntime.queryInterface(
+ XDesktop.class,
+ xMSF.createInstance ("com.sun.star.frame.Desktop")
+ );
+ }
+ catch (Exception e)
+ {
+ MessageArea.println ("caught exception while creating desktop: "
+ + e);
+ }
+
+ return mxDesktop;
+ }
+
+
+ /** Return a reference to the extended toolkit which is a broadcaster of
+ top window, key, and focus events.
+ */
+ public XExtendedToolkit GetExtendedToolkit ()
+ {
+ XExtendedToolkit xToolkit = null;
+ if (this != null)
+ try
+ {
+ // Get the factory of the connected office.
+ XMultiServiceFactory xMSF =
+ OfficeConnection.Instance().GetServiceManager ();
+ if (xMSF != null)
+ {
+ xToolkit = (XExtendedToolkit) UnoRuntime.queryInterface(
+ XExtendedToolkit.class,
+ xMSF.createInstance ("stardiv.Toolkit.VCLXToolkit")
+ );
+ }
+ }
+ catch (Exception e)
+ {
+ MessageArea.println (
+ "caught exception while creating extended toolkit: " + e);
+ }
+
+ return xToolkit;
+ }
+
+
+
+ static public XAccessible GetAccessibleObject (XInterface xObject)
+ {
+ XAccessible xAccessible = null;
+ try
+ {
+ xAccessible = (XAccessible) UnoRuntime.queryInterface(
+ XAccessible.class, xObject);
+ }
+ catch (Exception e)
+ {
+ System.err.println (
+ "caught exception while getting accessible object" + e);
+ e.printStackTrace (System.err);
+ }
+ return xAccessible;
+ }
+
+ static public XAccessibleContext GetAccessibleContext (XInterface xObject)
+ {
+ XAccessible xAccessible = GetAccessibleObject (xObject);
+ if (xAccessible != null)
+ return xAccessible.getAccessibleContext();
+ else
+ return null;
+ }
+
+ /** Return the root object of the accessibility hierarchy.
+ */
+ public XAccessible GetAccessibleRoot (XAccessible xAccessible)
+ {
+ try
+ {
+ XAccessible xParent = null;
+ do
+ {
+ XAccessibleContext xContext = xAccessible.getAccessibleContext();
+ if (xContext != null)
+ xParent = xContext.getAccessibleParent();
+ if (xParent != null)
+ xAccessible = xParent;
+ }
+ while (xParent != null);
+ }
+ catch (Exception e)
+ {
+ MessageArea.println (
+ "caught exception while getting accessible root" + e);
+ e.printStackTrace();
+ }
+ return xAccessible;
+ }
+
+
+
+
+ /** @descr Return the current window associated with the given
+ model.
+ */
+ public XWindow GetCurrentWindow ()
+ {
+ return GetCurrentWindow ((XModel) UnoRuntime.queryInterface(
+ XModel.class, GetDesktop()));
+ }
+
+
+
+
+
+ public XWindow GetCurrentWindow (XModel xModel)
+ {
+ XWindow xWindow = null;
+ try
+ {
+ if (xModel == null)
+ MessageArea.println ("invalid model (==null)");
+ XController xController = xModel.getCurrentController();
+ if (xController == null)
+ MessageArea.println ("can't get controller from model");
+ XFrame xFrame = xController.getFrame();
+ if (xFrame == null)
+ MessageArea.println ("can't get frame from controller");
+ xWindow = xFrame.getComponentWindow ();
+ if (xWindow == null)
+ MessageArea.println ("can't get window from frame");
+ }
+ catch (Exception e)
+ {
+ MessageArea.println ("caught exception while getting current window" + e);
+ }
+
+ return xWindow;
+ }
+
+
+ /** @descr Return the current draw page of the given desktop.
+ */
+ public XDrawPage GetCurrentDrawPage ()
+ {
+ return GetCurrentDrawPage (
+ (XDrawView) UnoRuntime.queryInterface(
+ XDrawView.class,
+ GetCurrentView()));
+ }
+
+
+
+
+ public XDrawPage GetCurrentDrawPage (XDrawView xView)
+ {
+ XDrawPage xPage = null;
+ try
+ {
+ if (xView == null)
+ MessageArea.println ("can't get current draw page from null view");
+ else
+ xPage = xView.getCurrentPage();
+ }
+ catch (Exception e)
+ {
+ MessageArea.println ("caught exception while getting current draw page : " + e);
+ }
+
+ return xPage;
+ }
+
+
+
+
+ /** @descr Return the current view of the given desktop.
+ */
+ public XDrawView GetCurrentView ()
+ {
+ return GetCurrentView (GetDesktop());
+ }
+
+ public XDrawView GetCurrentView (XDesktop xDesktop)
+ {
+ if (xDesktop == null)
+ MessageArea.println ("can't get desktop to retrieve current view");
+
+ XDrawView xView = null;
+ try
+ {
+ XComponent xComponent = xDesktop.getCurrentComponent();
+ if (xComponent == null)
+ MessageArea.println ("can't get component to retrieve current view");
+
+ XFrame xFrame = xDesktop.getCurrentFrame();
+ if (xFrame == null)
+ MessageArea.println ("can't get frame to retrieve current view");
+
+ XController xController = xFrame.getController();
+ if (xController == null)
+ MessageArea.println ("can't get controller to retrieve current view");
+
+ xView = (XDrawView) UnoRuntime.queryInterface(
+ XDrawView.class, xController);
+ if (xView == null)
+ MessageArea.println ("could not cast controller into view");
+ }
+ catch (Exception e)
+ {
+ MessageArea.println ("caught exception while getting current view : " + e);
+ }
+
+ return xView;
+ }
+
+
+
+
+ // Return the accessible object of the document window.
+ public static XAccessible GetAccessibleDocumentWindow (XDrawPage xPage)
+ {
+ XIndexAccess xShapeList = (XIndexAccess) UnoRuntime.queryInterface(
+ XIndexAccess.class, xPage);
+ if (xShapeList.getCount() > 0)
+ {
+ // All shapes return as accessible object the document window's
+ // accessible object. This is, of course, a hack and will be
+ // removed as soon as the missing infrastructure for obtaining
+ // the object directly is implemented.
+ XShape xShape = null;
+ try{
+ xShape = (XShape) UnoRuntime.queryInterface(
+ XShape.class, xShapeList.getByIndex (0));
+ } catch (Exception e)
+ {}
+ XAccessible xAccessible = (XAccessible) UnoRuntime.queryInterface (
+ XAccessible.class, xShape);
+ return xAccessible;
+ }
+ else
+ return null;
+ }
+
+ private SimpleOffice ()
+ {
+ }
+
+
+
+ private XDesktop mxDesktop;
+ private static SimpleOffice saInstance = null;
+}
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/makefile.common b/accessibility/workben/org/openoffice/accessibility/misc/makefile.common
new file mode 100644
index 000000000000..0d7b0a3f51df
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/makefile.common
@@ -0,0 +1,36 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+JARFILES = jurt.jar unoil.jar ridl.jar juh.jar java_uno.jar
+JAVAFILES = \
+ AccessibleEventMulticaster.java \
+ InformationWriter.java \
+ MessageArea.java \
+ NameProvider.java \
+ OfficeConnection.java \
+ Options.java \
+ SimpleOffice.java
diff --git a/accessibility/workben/org/openoffice/accessibility/misc/makefile.mk b/accessibility/workben/org/openoffice/accessibility/misc/makefile.mk
new file mode 100644
index 000000000000..312410c1de48
--- /dev/null
+++ b/accessibility/workben/org/openoffice/accessibility/misc/makefile.mk
@@ -0,0 +1,55 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJNAME = awb
+PRJ = ..$/..$/..$/..$/..
+TARGET = java_misc
+PACKAGE = org$/openoffice$/accessibility$/misc
+
+USE_JAVAVER:=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(JAVAVER:s/.//)" >= "140"
+
+.INCLUDE : makefile.common
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+#JARTARGET = $(TARGET).jar
+#JARCOMPRESS = TRUE
+#JARCLASSDIRS = $(PACKAGE) org/openoffice/java/accessibility/awb
+#CUSTOMMANIFESTFILE = manifest
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+
+.INCLUDE : target.mk
+
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 000000000000..71f01544d11b
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,138 @@
+dnl @synopsis AX_FUNC_WHICH_GETSPNAM_R
+dnl
+dnl Determines which historical variant of the getspnam_r() call
+dnl (taking four or five arguments) is available on the system
+dnl and sets NEW_SHADOW_API=YES if there are five arguments.
+dnl
+dnl Originally named "AX_FUNC_WHICH_GETHOSTBYNAME_R". Rewritten
+dnl for AX_FUNC_WHICH_GETSPNAM_R
+dnl
+dnl @author Caolan McNamara <caolan@skynet.ie>
+dnl @author Daniel Richard G. <skunk@iskunk.org>
+dnl @version 2006-05-01
+dnl @license LGPL
+
+AC_DEFUN([AX_FUNC_WHICH_GETSPNAM_R], [
+
+ AC_LANG_PUSH(C)
+ AC_MSG_CHECKING([how many arguments getspnam_r() takes])
+
+ AC_CACHE_VAL(ac_cv_func_which_getspnam_r, [
+
+################################################################
+
+ac_cv_func_which_getspnam_r=unknown
+
+#
+# ONE ARGUMENT (sanity check)
+#
+
+# This should fail, as there is no variant of getspnam_r() that takes
+# a single argument. If it actually compiles, then we can assume that
+# netdb.h is not declaring the function, and the compiler is thereby
+# assuming an implicit prototype. In which case, we're out of luck.
+#
+AC_COMPILE_IFELSE(
+ AC_LANG_PROGRAM(
+ [[
+ #include <sys/types.h>
+ #include <shadow.h>
+ ]],
+ [[
+ const char *name = "myname";
+ getspnam_r(name) /* ; */
+ ]]),
+ ac_cv_func_which_getspnam_r=no)
+
+#
+# FIVE ARGUMENTS
+#
+
+if test "$ac_cv_func_which_getspnam_r" = "unknown"; then
+
+AC_COMPILE_IFELSE(
+ AC_LANG_PROGRAM(
+ [[
+ #include <sys/types.h>
+ #include <shadow.h>
+ ]],
+ [[
+ char buffer[[]] = { '\0' };
+ struct spwd spwdStruct;
+ const char *name = "myname";
+ getspnam_r(name, &spwdStruct, buffer, sizeof buffer, 0) /* ; */
+ ]]),
+ ac_cv_func_which_getspnam_r=five)
+
+fi
+
+#
+# FOUR ARGUMENTS
+#
+
+if test "$ac_cv_func_which_getspnam_r" = "unknown"; then
+
+AC_COMPILE_IFELSE(
+ AC_LANG_PROGRAM(
+ [[
+ #include <sys/types.h>
+ #include <shadow.h>
+ ]],
+ [[
+ char buffer[[]] = { '\0' };
+ struct spwd spwdStruct;
+ const char *name = "myname";
+ getspnam_r(name, &spwdStruct, buffer, sizeof buffer) /* ; */
+ ]]),
+ ac_cv_func_which_getspnam_r=four)
+
+fi
+
+################################################################
+
+]) dnl end AC_CACHE_VAL
+
+case "$ac_cv_func_which_getspnam_r" in
+ five)
+ AC_MSG_RESULT([five])
+ NEW_SHADOW_API=YES
+ ;;
+
+ four)
+ AC_MSG_RESULT([four])
+ ;;
+
+ no)
+ AC_MSG_RESULT([cannot find function declaration in shadow.h])
+ ;;
+
+ unknown)
+ AC_MSG_RESULT([can't tell])
+ ;;
+
+ *)
+ AC_MSG_ERROR([internal error])
+ ;;
+esac
+
+AC_LANG_POP(C)
+
+]) dnl end AC_DEFUN
+
+dnl PKG_CHECK_MODULES_MACHACK is like PKG_CHECK_MODULES but sneaks in an extra
+dnl argument between the first and second, denoting a program to call instead of
+dnl pkg-config on Mac OS X (aka Darwin):
+AC_DEFUN([PKG_CHECK_MODULES_MACHACK],
+[if test "$_os" = "Darwin"; then
+ AC_MSG_CHECKING($1_CFLAGS)
+ $1_CFLAGS=`$2 --cflags`
+ AC_MSG_RESULT($$1_CFLAGS)
+ AC_MSG_CHECKING($1_LIBS)
+ $1_LIBS=`$2 --libs`
+ AC_MSG_RESULT($$1_LIBS)
+ AC_SUBST($1_CFLAGS)
+ AC_SUBST($1_LIBS)
+ else
+ PKG_CHECK_MODULES($1, $3, $4, $5, $6)
+ fi
+])
diff --git a/afms/delzip b/afms/delzip
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/afms/delzip
diff --git a/afms/makefile.mk b/afms/makefile.mk
new file mode 100644
index 000000000000..b1d2eafe7555
--- /dev/null
+++ b/afms/makefile.mk
@@ -0,0 +1,58 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=.
+
+PRJNAME=afms
+TARGET=afms
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.IF "$(L10N_framework)"==""
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=Adobe-Core35_AFMs-314
+TARFILE_MD5=1756c4fa6c616ae15973c104cd8cb256
+TARFILE_ROOTDIR=Adobe-Core35_AFMs-314
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+
+ZIP1DIR = $(MISC)$/build$/$(TARFILE_NAME)
+ZIP1TARGET = fontunxafm
+ZIP1LIST = *.afm -x "*Helvetica-Narrow*"
+
+.ENDIF # L10N_framework
+.INCLUDE : target.mk
+
+.INCLUDE : tg_ext.mk
+.IF "$(L10N_framework)"==""
+$(ZIP1TARGETN): $(PACKAGE_DIR)$/$(UNTAR_FLAG_FILE)
+
+.ENDIF # L10N_framework
diff --git a/afms/prj/build.lst b/afms/prj/build.lst
new file mode 100644
index 000000000000..ed3d01fd2909
--- /dev/null
+++ b/afms/prj/build.lst
@@ -0,0 +1,3 @@
+af afms : solenv NULL
+af afms usr1 - all af_mkout NULL
+af afms nmake - all af_fonts NULL
diff --git a/afms/prj/d.lst b/afms/prj/d.lst
new file mode 100644
index 000000000000..78396a65f9e4
--- /dev/null
+++ b/afms/prj/d.lst
@@ -0,0 +1,3 @@
+mkdir: %_DEST%\pck%_EXT%
+..\%__SRC%\bin\*.zip %_DEST%\pck%_EXT%\*.zip
+
diff --git a/animations/inc/animations/animationnodehelper.hxx b/animations/inc/animations/animationnodehelper.hxx
new file mode 100644
index 000000000000..969e3326105d
--- /dev/null
+++ b/animations/inc/animations/animationnodehelper.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 INCLUDED_ANIMATIONS_ANIMATIONNODEHELPER_HXX
+#define INCLUDED_ANIMATIONS_ANIMATIONNODEHELPER_HXX
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/animations/XAnimationNode.hpp>
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#include <com/sun/star/container/XEnumeration.hpp>
+
+#include <vector>
+
+/* Declaration and definition of AnimationNode helper */
+
+namespace anim
+{
+ // TODO(Q1): this could possibly be implemented with a somewhat
+ // more lightweight template, by having the actual worker receive
+ // only a function pointer, and a thin templated wrapper around
+ // that which converts member functions into that.
+
+ /** Apply given functor to every animation node child.
+
+ @param xNode
+ Parent node
+
+ @param rFunctor
+ Functor to apply. The functor must have an appropriate
+ operator()( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::animations::XAnimationNode >& ) member.
+
+ @return true, if the functor was successfully applied to
+ all children, false otherwise.
+ */
+ template< typename Functor > inline bool for_each_childNode( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xNode,
+ Functor& rFunctor )
+ {
+ try
+ {
+ // get an XEnumerationAccess to the children
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess >
+ xEnumerationAccess( xNode,
+ ::com::sun::star::uno::UNO_QUERY_THROW );
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration >
+ xEnumeration( xEnumerationAccess->createEnumeration(),
+ ::com::sun::star::uno::UNO_QUERY_THROW );
+
+ while( xEnumeration->hasMoreElements() )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >
+ xChildNode( xEnumeration->nextElement(),
+ ::com::sun::star::uno::UNO_QUERY_THROW );
+
+ rFunctor( xChildNode );
+ }
+
+ return true;
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ return false;
+ }
+ }
+
+
+ /** pushes the given node to the given vector and recursivly calls itself for each child node.
+ */
+ inline void create_deep_vector( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xNode,
+ std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode > >& rVector )
+ {
+ rVector.push_back( xNode );
+
+ try
+ {
+ // get an XEnumerationAccess to the children
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess >
+ xEnumerationAccess( xNode,
+ ::com::sun::star::uno::UNO_QUERY );
+
+ if( xEnumerationAccess.is() )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration >
+ xEnumeration( xEnumerationAccess->createEnumeration(),
+ ::com::sun::star::uno::UNO_QUERY );
+
+ if( xEnumeration.is() )
+ {
+ while( xEnumeration->hasMoreElements() )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >
+ xChildNode( xEnumeration->nextElement(),
+ ::com::sun::star::uno::UNO_QUERY_THROW );
+
+ create_deep_vector( xChildNode, rVector );
+ }
+ }
+ }
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ }
+ }
+}
+
+#endif /* INCLUDED_ANIMATIONS_ANIMATIONNODEHELPER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/animations/prj/build.lst b/animations/prj/build.lst
new file mode 100644
index 000000000000..00a1eb69c743
--- /dev/null
+++ b/animations/prj/build.lst
@@ -0,0 +1,3 @@
+animations animations : cppuhelper comphelper offuh NULL
+animations animations usr1 - all animations_mkout NULL
+animations animations\source\animcore nmake - all animations_animcore NULL
diff --git a/animations/prj/d.lst b/animations/prj/d.lst
new file mode 100644
index 000000000000..bdab238656c3
--- /dev/null
+++ b/animations/prj/d.lst
@@ -0,0 +1,9 @@
+..\%__SRC%\bin\animcore.dll %_DEST%\bin%_EXT%\animcore.dll
+..\%__SRC%\lib\libanimcore.so %_DEST%\lib%_EXT%\libanimcore.so
+..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*
+..\source\animcore\animcore.xml %_DEST%\xml%_EXT%\animcore.xml
+
+..\%__SRC%\lib\lib*static*.dylib %_DEST%\lib%_EXT%\lib*static*.dylib
+
+mkdir: %_DEST%\inc%_EXT%\animations
+..\inc\animations\animationnodehelper.hxx %_DEST%\inc%_EXT%\animations\animationnodehelper.hxx
diff --git a/animations/source/animcore/animcore.cxx b/animations/source/animcore/animcore.cxx
new file mode 100644
index 000000000000..655bc6289fa8
--- /dev/null
+++ b/animations/source/animcore/animcore.cxx
@@ -0,0 +1,2092 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <com/sun/star/util/XCloneable.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/animations/XAnimateColor.hpp>
+#include <com/sun/star/animations/XAnimateSet.hpp>
+#include <com/sun/star/animations/XAnimateMotion.hpp>
+#include <com/sun/star/animations/XAnimateTransform.hpp>
+#include <com/sun/star/animations/XTransitionFilter.hpp>
+#include <com/sun/star/animations/XTimeContainer.hpp>
+#include <com/sun/star/animations/XIterateContainer.hpp>
+#include <com/sun/star/animations/XAudio.hpp>
+#include <com/sun/star/animations/XCommand.hpp>
+#include <com/sun/star/animations/AnimationNodeType.hpp>
+#include <com/sun/star/animations/AnimationCalcMode.hpp>
+#include <com/sun/star/animations/AnimationFill.hpp>
+#include <com/sun/star/animations/AnimationRestart.hpp>
+#include <com/sun/star/animations/AnimationColorSpace.hpp>
+#include <com/sun/star/animations/AnimationAdditiveMode.hpp>
+#include <com/sun/star/animations/AnimationTransformType.hpp>
+#include <com/sun/star/animations/TransitionType.hpp>
+#include <com/sun/star/animations/TransitionSubType.hpp>
+#include <com/sun/star/presentation/ShapeAnimationSubType.hpp>
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/util/XChangesNotifier.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <cppuhelper/interfacecontainer.hxx>
+
+#include <cppuhelper/implbase1.hxx>
+#include <rtl/uuid.h>
+
+#include <osl/mutex.hxx>
+#include <list>
+#include <algorithm>
+
+using ::osl::Mutex;
+using ::osl::Guard;
+using ::rtl::OUString;
+using ::cppu::OInterfaceContainerHelper;
+using ::cppu::OInterfaceIteratorHelper;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::XInterface;
+using ::com::sun::star::uno::RuntimeException;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::XComponentContext;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::XWeak;
+using ::com::sun::star::uno::Type;
+using ::com::sun::star::uno::makeAny;
+using ::com::sun::star::lang::NoSupportException;
+using ::com::sun::star::lang::IllegalArgumentException;
+using ::com::sun::star::lang::WrappedTargetException;
+using ::com::sun::star::lang::NoSupportException;
+using ::com::sun::star::lang::XServiceInfo;
+using ::com::sun::star::lang::XTypeProvider;
+using ::com::sun::star::container::NoSuchElementException;
+using ::com::sun::star::container::ElementExistException;
+using ::com::sun::star::container::XEnumeration;
+using ::com::sun::star::container::XEnumerationAccess;
+using ::com::sun::star::beans::NamedValue;
+using ::com::sun::star::util::XCloneable;
+using ::com::sun::star::lang::XUnoTunnel;
+using ::com::sun::star::util::XChangesNotifier;
+using ::com::sun::star::util::XChangesListener;
+using ::com::sun::star::util::ElementChange;
+using ::com::sun::star::util::ChangesEvent;
+
+using ::cppu::OWeakObject;
+
+using namespace ::com::sun::star::animations;
+using namespace ::com::sun::star::animations::AnimationNodeType;
+
+namespace animcore
+{
+
+// ====================================================================
+
+typedef ::std::list< Reference< XAnimationNode > > ChildList_t;
+
+// ====================================================================
+
+class AnimationNodeBase : public XAnimateMotion,
+ public XAnimateColor,
+ public XTransitionFilter,
+ public XAnimateSet,
+ public XAnimateTransform,
+ public XIterateContainer,
+ public XEnumerationAccess,
+ public XServiceInfo,
+ public XTypeProvider,
+ public XAudio,
+ public XCommand,
+ public XCloneable,
+ public XChangesNotifier,
+ public XUnoTunnel,
+ public OWeakObject
+{
+public:
+ // our first, last and only protection from mutli-threads!
+ Mutex maMutex;
+};
+
+class AnimationNode : public AnimationNodeBase
+{
+public:
+ AnimationNode( sal_Int16 nNodeType );
+ AnimationNode( const AnimationNode& rNode );
+ virtual ~AnimationNode();
+
+ // XInterface
+ virtual Any SAL_CALL queryInterface( const Type& aType ) throw (RuntimeException);
+ virtual void SAL_CALL acquire() throw ();
+ virtual void SAL_CALL release() throw ();
+
+ // XTypeProvider
+ virtual Sequence< Type > SAL_CALL getTypes() throw (RuntimeException);
+ virtual Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (RuntimeException);
+
+ // XServiceInfo
+ OUString SAL_CALL getImplementationName() throw();
+ Sequence< OUString > SAL_CALL getSupportedServiceNames(void) throw();
+ sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw();
+
+ // XChild
+ virtual Reference< XInterface > SAL_CALL getParent() throw (RuntimeException);
+ virtual void SAL_CALL setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException);
+
+ // XCloneable
+ virtual Reference< XCloneable > SAL_CALL createClone() throw (RuntimeException);
+
+ // XAnimationNode
+ virtual sal_Int16 SAL_CALL getType() throw (RuntimeException);
+ virtual Any SAL_CALL getBegin() throw (RuntimeException);
+ virtual void SAL_CALL setBegin( const Any& _begin ) throw (RuntimeException);
+ virtual Any SAL_CALL getDuration() throw (RuntimeException);
+ virtual void SAL_CALL setDuration( const Any& _duration ) throw (RuntimeException);
+ virtual Any SAL_CALL getEnd() throw (RuntimeException);
+ virtual void SAL_CALL setEnd( const Any& _end ) throw (RuntimeException);
+ virtual Any SAL_CALL getEndSync() throw (RuntimeException);
+ virtual void SAL_CALL setEndSync( const Any& _endsync ) throw (RuntimeException);
+ virtual Any SAL_CALL getRepeatCount() throw (RuntimeException);
+ virtual void SAL_CALL setRepeatCount( const Any& _repeatcount ) throw (RuntimeException);
+ virtual Any SAL_CALL getRepeatDuration() throw (RuntimeException);
+ virtual void SAL_CALL setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getFill() throw (RuntimeException);
+ virtual void SAL_CALL setFill( sal_Int16 _fill ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getFillDefault() throw (RuntimeException);
+ virtual void SAL_CALL setFillDefault( sal_Int16 _filldefault ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getRestart() throw (RuntimeException);
+ virtual void SAL_CALL setRestart( sal_Int16 _restart ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getRestartDefault() throw (RuntimeException);
+ virtual void SAL_CALL setRestartDefault( sal_Int16 _restartdefault ) throw (RuntimeException);
+ virtual double SAL_CALL getAcceleration() throw (RuntimeException);
+ virtual void SAL_CALL setAcceleration( double _acceleration ) throw (RuntimeException);
+ virtual double SAL_CALL getDecelerate() throw (RuntimeException);
+ virtual void SAL_CALL setDecelerate( double _decelerate ) throw (RuntimeException);
+ virtual sal_Bool SAL_CALL getAutoReverse() throw (RuntimeException);
+ virtual void SAL_CALL setAutoReverse( sal_Bool _autoreverse ) throw (RuntimeException);
+ virtual Sequence< NamedValue > SAL_CALL getUserData() throw (RuntimeException);
+ virtual void SAL_CALL setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException);
+
+ // XAnimate
+ virtual Any SAL_CALL getTarget() throw (RuntimeException);
+ virtual void SAL_CALL setTarget( const Any& _target ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getSubItem() throw (RuntimeException);
+ virtual void SAL_CALL setSubItem( sal_Int16 _subitem ) throw (RuntimeException);
+ virtual OUString SAL_CALL getAttributeName() throw (RuntimeException);
+ virtual void SAL_CALL setAttributeName( const OUString& _attribute ) throw (RuntimeException);
+ virtual Sequence< Any > SAL_CALL getValues() throw (RuntimeException);
+ virtual void SAL_CALL setValues( const Sequence< Any >& _values ) throw (RuntimeException);
+ virtual Sequence< double > SAL_CALL getKeyTimes() throw (RuntimeException);
+ virtual void SAL_CALL setKeyTimes( const Sequence< double >& _keytimes ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getValueType() throw (RuntimeException);
+ virtual void SAL_CALL setValueType( sal_Int16 _valuetype ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getCalcMode() throw (RuntimeException);
+ virtual void SAL_CALL setCalcMode( sal_Int16 _calcmode ) throw (RuntimeException);
+ virtual sal_Bool SAL_CALL getAccumulate() throw (RuntimeException);
+ virtual void SAL_CALL setAccumulate( sal_Bool _accumulate ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getAdditive() throw (RuntimeException);
+ virtual void SAL_CALL setAdditive( sal_Int16 _additive ) throw (RuntimeException);
+ virtual Any SAL_CALL getFrom() throw (RuntimeException);
+ virtual void SAL_CALL setFrom( const Any& _from ) throw (RuntimeException);
+ virtual Any SAL_CALL getTo() throw (RuntimeException);
+ virtual void SAL_CALL setTo( const Any& _to ) throw (RuntimeException);
+ virtual Any SAL_CALL getBy() throw (RuntimeException);
+ virtual void SAL_CALL setBy( const Any& _by ) throw (RuntimeException);
+ virtual Sequence< TimeFilterPair > SAL_CALL getTimeFilter() throw (RuntimeException);
+ virtual void SAL_CALL setTimeFilter( const Sequence< TimeFilterPair >& _timefilter ) throw (RuntimeException);
+ virtual OUString SAL_CALL getFormula() throw (RuntimeException);
+ virtual void SAL_CALL setFormula( const OUString& _formula ) throw (RuntimeException);
+
+ // XAnimateColor
+ virtual sal_Int16 SAL_CALL getColorInterpolation() throw (RuntimeException);
+ virtual void SAL_CALL setColorInterpolation( sal_Int16 _colorspace ) throw (RuntimeException);
+ virtual sal_Bool SAL_CALL getDirection() throw (RuntimeException);
+ virtual void SAL_CALL setDirection( sal_Bool _direction ) throw (RuntimeException);
+
+ // XAnimateMotion
+ virtual Any SAL_CALL getPath() throw (RuntimeException);
+ virtual void SAL_CALL setPath( const Any& _path ) throw (RuntimeException);
+ virtual Any SAL_CALL getOrigin() throw (RuntimeException);
+ virtual void SAL_CALL setOrigin( const Any& _origin ) throw (RuntimeException);
+
+ // XAnimateTransform
+ virtual sal_Int16 SAL_CALL getTransformType() throw (RuntimeException);
+ virtual void SAL_CALL setTransformType( sal_Int16 _transformtype ) throw (RuntimeException);
+
+ // XTransitionFilter
+ virtual sal_Int16 SAL_CALL getTransition() throw (RuntimeException);
+ virtual void SAL_CALL setTransition( sal_Int16 _transition ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getSubtype() throw (RuntimeException);
+ virtual void SAL_CALL setSubtype( sal_Int16 _subtype ) throw (RuntimeException);
+ virtual sal_Bool SAL_CALL getMode() throw (RuntimeException);
+ virtual void SAL_CALL setMode( sal_Bool _mode ) throw (RuntimeException);
+// virtual sal_Bool SAL_CALL getDirection() throw (RuntimeException);
+// virtual void SAL_CALL setDirection( sal_Bool _direction ) throw (RuntimeException);
+ virtual sal_Int32 SAL_CALL getFadeColor() throw (RuntimeException);
+ virtual void SAL_CALL setFadeColor( sal_Int32 _fadecolor ) throw (RuntimeException);
+
+ // XAudio
+ virtual Any SAL_CALL getSource() throw (RuntimeException);
+ virtual void SAL_CALL setSource( const Any& _source ) throw (RuntimeException);
+ virtual double SAL_CALL getVolume() throw (RuntimeException);
+ virtual void SAL_CALL setVolume( double _volume ) throw (RuntimeException);
+
+
+ // XCommand
+// virtual Any SAL_CALL getTarget() throw (RuntimeException);
+// virtual void SAL_CALL setTarget( const Any& _target ) throw (RuntimeException);
+ virtual sal_Int16 SAL_CALL getCommand() throw (RuntimeException);
+ virtual void SAL_CALL setCommand( sal_Int16 _command ) throw (RuntimeException);
+ virtual Any SAL_CALL getParameter() throw (RuntimeException);
+ virtual void SAL_CALL setParameter( const Any& _parameter ) throw (RuntimeException);
+
+ // XElementAccess
+ virtual Type SAL_CALL getElementType() throw (RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw (RuntimeException);
+
+ // XEnumerationAccess
+ virtual Reference< XEnumeration > SAL_CALL createEnumeration() throw (RuntimeException);
+
+ // XTimeContainer
+ virtual Reference< XAnimationNode > SAL_CALL insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException);
+ virtual Reference< XAnimationNode > SAL_CALL insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException);
+ virtual Reference< XAnimationNode > SAL_CALL replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& oldChild ) throw( IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException);
+ virtual Reference< XAnimationNode > SAL_CALL removeChild( const Reference< XAnimationNode >& oldChild ) throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException);
+ virtual Reference< XAnimationNode > SAL_CALL appendChild( const Reference< XAnimationNode >& newChild ) throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException);
+
+ // XIterateContainer
+ virtual sal_Int16 SAL_CALL getIterateType() throw (RuntimeException);
+ virtual void SAL_CALL setIterateType( sal_Int16 _iteratetype ) throw (RuntimeException);
+ virtual double SAL_CALL getIterateInterval() throw (RuntimeException);
+ virtual void SAL_CALL setIterateInterval( double _iterateinterval ) throw (RuntimeException);
+
+ // XChangesNotifier
+ virtual void SAL_CALL addChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException);
+ virtual void SAL_CALL removeChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException);
+
+ // XUnoTunnel
+ virtual ::sal_Int64 SAL_CALL getSomething( const Sequence< ::sal_Int8 >& aIdentifier ) throw (RuntimeException);
+
+ static const Sequence< sal_Int8 > & getUnoTunnelId();
+ void fireChangeListener();
+
+private:
+ OInterfaceContainerHelper maChangeListener;
+
+ static void initTypeProvider( sal_Int16 nNodeType ) throw();
+
+ const sal_Int16 mnNodeType;
+
+ // for XTypeProvider
+ static Sequence< Type >* mpTypes[12];
+ static Sequence< sal_Int8 >* mpId[12];
+
+ // attributes for the XAnimationNode interface implementation
+ Any maBegin, maDuration, maEnd, maEndSync, maRepeatCount, maRepeatDuration;
+ sal_Int16 mnFill, mnFillDefault, mnRestart, mnRestartDefault;
+ double mfAcceleration, mfDecelerate;
+ sal_Bool mbAutoReverse;
+ Sequence< NamedValue > maUserData;
+
+ // parent interface for XChild interface implementation
+ Reference<XInterface> mxParent;
+ AnimationNode* mpParent;
+
+ // attributes for XAnimate
+ Any maTarget;
+ OUString maAttributeName, maFormula;
+ Sequence< Any > maValues;
+ Sequence< double > maKeyTimes;
+ sal_Int16 mnValueType, mnSubItem;
+ sal_Int16 mnCalcMode, mnAdditive;
+ sal_Bool mbAccumulate;
+ Any maFrom, maTo, maBy;
+ Sequence< TimeFilterPair > maTimeFilter;
+
+ // attributes for XAnimateColor
+ sal_Int16 mnColorSpace;
+ sal_Bool mbDirection;
+
+ // atributes for XAnimateMotion
+ Any maPath, maOrigin;
+
+ // attributes for XAnimateTransform
+ sal_Int16 mnTransformType;
+
+ // attributes for XTransitionFilter
+ sal_Int16 mnTransition;
+ sal_Int16 mnSubtype;
+ sal_Bool mbMode;
+ sal_Int32 mnFadeColor;
+
+ // XAudio
+ double mfVolume;
+
+ // XCommand
+ sal_Int16 mnCommand;
+ Any maParameter;
+
+ // XIterateContainer
+ sal_Int16 mnIterateType;
+ double mfIterateInterval;
+
+ /** sorted list of child nodes for XTimeContainer*/
+ ChildList_t maChilds;
+};
+
+// ====================================================================
+
+class TimeContainerEnumeration : public ::cppu::WeakImplHelper1< XEnumeration >
+{
+public:
+ TimeContainerEnumeration( const ChildList_t &rChilds );
+ virtual ~TimeContainerEnumeration();
+
+ // Methods
+ virtual sal_Bool SAL_CALL hasMoreElements() throw (RuntimeException);
+ virtual Any SAL_CALL nextElement( ) throw (NoSuchElementException, WrappedTargetException, RuntimeException);
+
+private:
+ /** sorted list of child nodes */
+ ChildList_t maChilds;
+
+ /** current iteration position */
+ ChildList_t::iterator maIter;
+
+ /** our first, last and only protection from mutli-threads! */
+ Mutex maMutex;
+};
+
+TimeContainerEnumeration::TimeContainerEnumeration( const ChildList_t &rChilds )
+: maChilds( rChilds )
+{
+ maIter = maChilds.begin();
+}
+
+TimeContainerEnumeration::~TimeContainerEnumeration()
+{
+}
+
+// Methods
+sal_Bool SAL_CALL TimeContainerEnumeration::hasMoreElements() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ return maIter != maChilds.end();
+}
+
+Any SAL_CALL TimeContainerEnumeration::nextElement()
+ throw (NoSuchElementException, WrappedTargetException, RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ if( maIter == maChilds.end() )
+ throw NoSuchElementException();
+
+ return makeAny( (*maIter++) );
+}
+
+// ====================================================================
+
+Sequence< Type >* AnimationNode::mpTypes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+Sequence< sal_Int8 >* AnimationNode::mpId[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+
+AnimationNode::AnimationNode( sal_Int16 nNodeType )
+: maChangeListener(maMutex),
+ mnNodeType( nNodeType ),
+ mnFill( AnimationFill::DEFAULT ),
+ mnFillDefault( AnimationFill::INHERIT ),
+ mnRestart( AnimationRestart:: DEFAULT ),
+ mnRestartDefault( AnimationRestart:: INHERIT ),
+ mfAcceleration( 0.0 ),
+ mfDecelerate( 0.0 ),
+ mbAutoReverse( sal_False ),
+ mpParent(0),
+ mnValueType( 0 ),
+ mnSubItem( 0 ),
+ mnCalcMode( (nNodeType == AnimationNodeType::ANIMATEMOTION) ? AnimationCalcMode::PACED : AnimationCalcMode::LINEAR),
+ mnAdditive(AnimationAdditiveMode::REPLACE),
+ mbAccumulate(sal_False),
+ mnColorSpace( AnimationColorSpace::RGB ),
+ mbDirection( sal_True ),
+ mnTransformType( AnimationTransformType::TRANSLATE ),
+ mnTransition(TransitionType::BARWIPE),
+ mnSubtype(TransitionSubType::DEFAULT),
+ mbMode(true),
+ mnFadeColor(0),
+ mfVolume(1.0),
+ mnCommand(0),
+ mnIterateType( ::com::sun::star::presentation::ShapeAnimationSubType::AS_WHOLE ),
+ mfIterateInterval(0.0)
+{
+ OSL_ENSURE((sal_uInt32)nNodeType < sizeof(mpTypes)/sizeof(Sequence<Type>*), "NodeType out of range");
+}
+
+AnimationNode::AnimationNode( const AnimationNode& rNode )
+: AnimationNodeBase(),
+ maChangeListener(maMutex),
+ mnNodeType( rNode.mnNodeType ),
+
+ // attributes for the XAnimationNode interface implementation
+ maBegin( rNode.maBegin ),
+ maDuration( rNode.maDuration ),
+ maEnd( rNode.maEnd ),
+ maEndSync( rNode.maEndSync ),
+ maRepeatCount( rNode.maRepeatCount ),
+ maRepeatDuration( rNode.maRepeatDuration ),
+ mnFill( rNode.mnFill ),
+ mnFillDefault( rNode.mnFillDefault ),
+ mnRestart( rNode.mnRestart ),
+ mnRestartDefault( rNode.mnRestartDefault ),
+ mfAcceleration( rNode.mfAcceleration ),
+ mfDecelerate( rNode.mfDecelerate ),
+ mbAutoReverse( rNode.mbAutoReverse ),
+ maUserData( rNode.maUserData ),
+ mpParent(0),
+
+ // attributes for XAnimate
+ maTarget( rNode.maTarget ),
+ maAttributeName( rNode.maAttributeName ),
+ maFormula( rNode.maFormula ),
+ maValues( rNode.maValues ),
+ maKeyTimes( rNode.maKeyTimes ),
+ mnValueType( rNode.mnValueType ),
+ mnSubItem( rNode.mnSubItem ),
+ mnCalcMode( rNode.mnCalcMode ),
+ mnAdditive( rNode.mnAdditive ),
+ mbAccumulate( rNode.mbAccumulate ),
+ maFrom( rNode.maFrom ),
+ maTo( rNode.maTo ),
+ maBy( rNode.maBy ),
+ maTimeFilter( rNode.maTimeFilter ),
+
+ // attributes for XAnimateColor
+ mnColorSpace( rNode.mnColorSpace ),
+ mbDirection( rNode.mbDirection ),
+
+ // atributes for XAnimateMotion
+ maPath( rNode.maPath ),
+ maOrigin( rNode.maOrigin ),
+
+ // attributes for XAnimateTransform
+ mnTransformType( rNode.mnTransformType ),
+
+ // attributes for XTransitionFilter
+ mnTransition( rNode.mnTransition ),
+ mnSubtype( rNode.mnSubtype ),
+ mbMode( rNode.mbMode ),
+ mnFadeColor( rNode.mnFadeColor ),
+
+ // XAudio
+ mfVolume( rNode.mfVolume ),
+
+ // XCommand
+ mnCommand( rNode.mnCommand ),
+ maParameter( rNode.maParameter ),
+
+ // XIterateContainer
+ mnIterateType( rNode.mnIterateType ),
+ mfIterateInterval( rNode.mfIterateInterval )
+{
+}
+
+AnimationNode::~AnimationNode()
+{
+}
+
+// --------------------------------------------------------------------
+
+#define IMPL_NODE_FACTORY(N,IN,SN)\
+Reference< XInterface > SAL_CALL createInstance_##N( const Reference< XComponentContext > & ) throw (Exception)\
+{\
+ return Reference < XInterface > ( SAL_STATIC_CAST( ::cppu::OWeakObject * , new AnimationNode( N ) ) );\
+}\
+OUString getImplementationName_##N()\
+{\
+ return OUString( RTL_CONSTASCII_USTRINGPARAM ( IN ) );\
+}\
+Sequence<OUString> getSupportedServiceNames_##N(void)\
+{\
+ Sequence<OUString> aRet(1);\
+ aRet.getArray()[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( SN ));\
+ return aRet;\
+}
+
+IMPL_NODE_FACTORY( PAR, "animcore::ParallelTimeContainer", "com.sun.star.animations.ParallelTimeContainer" )
+IMPL_NODE_FACTORY( SEQ, "animcore::SequenceTimeContainer", "com.sun.star.animations.SequenceTimeContainer" )
+IMPL_NODE_FACTORY( ITERATE, "animcore::IterateContainer", "com.sun.star.animations.IterateContainer" )
+IMPL_NODE_FACTORY( ANIMATE, "animcore::Animate", "com.sun.star.animations.Animate" )
+IMPL_NODE_FACTORY( SET, "animcore::AnimateSet", "com.sun.star.animations.AnimateSet" )
+IMPL_NODE_FACTORY( ANIMATECOLOR, "animcore::AnimateColor", "com.sun.star.animations.AnimateColor" )
+IMPL_NODE_FACTORY( ANIMATEMOTION, "animcore::AnimateMotion", "com.sun.star.animations.AnimateMotion" )
+IMPL_NODE_FACTORY( ANIMATETRANSFORM, "animcore::AnimateTransform", "com.sun.star.animations.AnimateTransform" )
+IMPL_NODE_FACTORY( TRANSITIONFILTER, "animcore::TransitionFilter", "com.sun.star.animations.TransitionFilter" )
+IMPL_NODE_FACTORY( AUDIO, "animcore::Audio", "com.sun.star.animations.Audio" );
+IMPL_NODE_FACTORY( COMMAND, "animcore::Command", "com.sun.star.animations.Command" );
+
+// --------------------------------------------------------------------
+
+// XInterface
+Any SAL_CALL AnimationNode::queryInterface( const Type& aType ) throw (RuntimeException)
+{
+ Any aRet( ::cppu::queryInterface(
+ aType,
+ static_cast< XServiceInfo * >( this ),
+ static_cast< XTypeProvider * >( this ),
+ static_cast< XChild * >( static_cast< XTimeContainer * >(this) ),
+ static_cast< XCloneable* >( this ),
+ static_cast< XAnimationNode* >( static_cast< XTimeContainer * >(this) ),
+ static_cast< XInterface* >(static_cast< OWeakObject * >(this)),
+ static_cast< XWeak* >(static_cast< OWeakObject * >(this)),
+ static_cast< XChangesNotifier* >( this ),
+ static_cast< XUnoTunnel* >( this ) ) );
+
+ if(!aRet.hasValue())
+ {
+ switch( mnNodeType )
+ {
+ case AnimationNodeType::PAR:
+ case AnimationNodeType::SEQ:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XTimeContainer * >( this ),
+ static_cast< XEnumerationAccess * >( this ),
+ static_cast< XElementAccess * >( this ) );
+ break;
+ case AnimationNodeType::ITERATE:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XTimeContainer * >( this ),
+ static_cast< XIterateContainer * >( this ),
+ static_cast< XEnumerationAccess * >( this ),
+ static_cast< XElementAccess * >( this ) );
+ break;
+ case AnimationNodeType::ANIMATE:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XAnimate * >( static_cast< XAnimateMotion * >(this) ) );
+ break;
+ case AnimationNodeType::ANIMATEMOTION:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XAnimate * >( static_cast< XAnimateMotion * >(this) ),
+ static_cast< XAnimateMotion * >( this ) );
+ break;
+ case AnimationNodeType::ANIMATECOLOR:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XAnimate * >( static_cast< XAnimateColor * >(this) ),
+ static_cast< XAnimateColor * >( this ) );
+ break;
+ case AnimationNodeType::SET:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XAnimate * >( static_cast< XAnimateSet * >(this) ),
+ static_cast< XAnimateSet * >( this ) );
+ break;
+ case AnimationNodeType::ANIMATETRANSFORM:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XAnimate * >( static_cast< XAnimateTransform * >(this) ),
+ static_cast< XAnimateTransform * >( this ) );
+ break;
+ case AnimationNodeType::AUDIO:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XAudio * >( static_cast< XAudio * >(this) ) );
+ break;
+ case AnimationNodeType::COMMAND:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XCommand * >( static_cast< XCommand * >(this) ) );
+ break;
+ case AnimationNodeType::TRANSITIONFILTER:
+ aRet = ::cppu::queryInterface(
+ aType,
+ static_cast< XAnimate * >( static_cast< XTransitionFilter * >(this) ),
+ static_cast< XTransitionFilter * >( this ) );
+ break;
+ }
+ }
+
+ return aRet.hasValue() ? aRet : OWeakObject::queryInterface( aType );
+}
+
+// --------------------------------------------------------------------
+
+void AnimationNode::initTypeProvider( sal_Int16 nNodeType ) throw()
+{
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+
+ if(! mpTypes[nNodeType] )
+ {
+ // create id
+ mpId[nNodeType] = new Sequence< sal_Int8 >( 16 );
+ rtl_createUuid( (sal_uInt8 *)mpId[nNodeType]->getArray(), 0, sal_True );
+
+ static sal_Int32 type_numbers[] =
+ {
+ 7, // CUSTOM
+ 9, // PAR
+ 9, // SEQ
+ 9, // ITERATE
+ 8, // ANIMATE
+ 8, // SET
+ 8, // ANIMATEMOTION
+ 8, // ANIMATECOLOR
+ 8, // ANIMATETRANSFORM
+ 8, // TRANSITIONFILTER
+ 8, // AUDIO
+ 8, // COMMAND
+ };
+
+ // collect types
+ Sequence< Type > * types = new Sequence< Type >( type_numbers[nNodeType] );
+ Type * pTypeAr = types->getArray();
+ sal_Int32 nPos = 0;
+
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XWeak > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XChild > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XCloneable > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XTypeProvider > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XServiceInfo > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XUnoTunnel > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XChangesNotifier> *)0 );
+
+ switch( nNodeType )
+ {
+ case AnimationNodeType::PAR:
+ case AnimationNodeType::SEQ:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XTimeContainer > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XEnumerationAccess > *)0 );
+ break;
+ case AnimationNodeType::ITERATE:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XIterateContainer > *)0 );
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XEnumerationAccess > *)0 );
+ break;
+ case AnimationNodeType::ANIMATE:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimate > *)0 );
+ break;
+ case AnimationNodeType::ANIMATEMOTION:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateMotion > *)0 );
+ break;
+ case AnimationNodeType::ANIMATECOLOR:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateColor > *)0 );
+ break;
+ case AnimationNodeType::ANIMATETRANSFORM:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateTransform > *)0 );
+ break;
+ case AnimationNodeType::SET:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateSet > *)0 );
+ break;
+ case AnimationNodeType::TRANSITIONFILTER:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XTransitionFilter > *)0 );
+ break;
+ case AnimationNodeType::AUDIO:
+ pTypeAr[nPos++] = ::getCppuType( (const Reference< XAudio > *)0 );
+ break;
+ case AnimationNodeType::COMMAND:
+ pTypeAr[nPos++] = ::getCppuType( ( const Reference< XCommand > *)0 );
+ break;
+ }
+ mpTypes[nNodeType] = types;
+ }
+}
+
+// --------------------------------------------------------------------
+
+Sequence< Type > AnimationNode::getTypes() throw (RuntimeException)
+{
+ if (! mpTypes[mnNodeType])
+ initTypeProvider(mnNodeType);
+ return *mpTypes[mnNodeType];
+}
+// --------------------------------------------------------------------
+
+Sequence< sal_Int8 > AnimationNode::getImplementationId() throw (RuntimeException)
+{
+ if (! mpId[mnNodeType])
+ initTypeProvider(mnNodeType);
+ return *mpId[mnNodeType];
+}
+
+// --------------------------------------------------------------------
+
+// XInterface
+void SAL_CALL AnimationNode::acquire( ) throw ()
+{
+ OWeakObject::acquire();
+}
+
+// --------------------------------------------------------------------
+
+// XInterface
+void SAL_CALL AnimationNode::release( ) throw ()
+{
+ OWeakObject::acquire();
+}
+
+// --------------------------------------------------------------------
+
+// XServiceInfo
+OUString AnimationNode::getImplementationName() throw()
+{
+ switch( mnNodeType )
+ {
+ case AnimationNodeType::PAR:
+ return getImplementationName_PAR();
+ case AnimationNodeType::SEQ:
+ return getImplementationName_SEQ();
+ case AnimationNodeType::ITERATE:
+ return getImplementationName_ITERATE();
+ case AnimationNodeType::SET:
+ return getImplementationName_SET();
+ case AnimationNodeType::ANIMATECOLOR:
+ return getImplementationName_ANIMATECOLOR();
+ case AnimationNodeType::ANIMATEMOTION:
+ return getImplementationName_ANIMATEMOTION();
+ case AnimationNodeType::TRANSITIONFILTER:
+ return getImplementationName_TRANSITIONFILTER();
+ case AnimationNodeType::ANIMATETRANSFORM:
+ return getImplementationName_ANIMATETRANSFORM();
+ case AnimationNodeType::AUDIO:
+ return getImplementationName_AUDIO();
+ case AnimationNodeType::COMMAND:
+ return getImplementationName_COMMAND();
+ case AnimationNodeType::ANIMATE:
+ default:
+ return getImplementationName_ANIMATE();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XServiceInfo
+sal_Bool AnimationNode::supportsService(const OUString& ServiceName) throw()
+{
+ Sequence< OUString > aSNL( getSupportedServiceNames() );
+ const OUString * pArray = aSNL.getConstArray();
+
+ for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
+ if( pArray[i] == ServiceName )
+ return sal_True;
+
+ return sal_False;
+}
+
+// --------------------------------------------------------------------
+
+// XServiceInfo
+Sequence< OUString > AnimationNode::getSupportedServiceNames(void) throw()
+{
+ switch( mnNodeType )
+ {
+ case AnimationNodeType::PAR:
+ return getSupportedServiceNames_PAR();
+ case AnimationNodeType::SEQ:
+ return getSupportedServiceNames_SEQ();
+ case AnimationNodeType::ITERATE:
+ return getSupportedServiceNames_ITERATE();
+ case AnimationNodeType::SET:
+ return getSupportedServiceNames_SET();
+ case AnimationNodeType::ANIMATECOLOR:
+ return getSupportedServiceNames_ANIMATECOLOR();
+ case AnimationNodeType::ANIMATEMOTION:
+ return getSupportedServiceNames_ANIMATEMOTION();
+ case AnimationNodeType::TRANSITIONFILTER:
+ return getSupportedServiceNames_TRANSITIONFILTER();
+ case AnimationNodeType::AUDIO:
+ return getSupportedServiceNames_AUDIO();
+ case AnimationNodeType::COMMAND:
+ return getSupportedServiceNames_COMMAND();
+ case AnimationNodeType::ANIMATE:
+ default:
+ return getSupportedServiceNames_ANIMATE();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+sal_Int16 SAL_CALL AnimationNode::getType() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnNodeType;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+Any SAL_CALL AnimationNode::getBegin() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maBegin;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setBegin( const Any& _begin ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _begin != maBegin )
+ {
+ maBegin = _begin;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+Any SAL_CALL AnimationNode::getDuration() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maDuration;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setDuration( const Any& _duration ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _duration != maDuration )
+ {
+ maDuration = _duration;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+Any SAL_CALL AnimationNode::getEnd() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maEnd;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setEnd( const Any& _end ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _end != maEnd )
+ {
+ maEnd = _end;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+Any SAL_CALL AnimationNode::getEndSync() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maEndSync;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setEndSync( const Any& _endsync ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _endsync != maEndSync )
+ {
+ maEndSync = _endsync;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+Any SAL_CALL AnimationNode::getRepeatCount() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maRepeatCount;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setRepeatCount( const Any& _repeatcount ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _repeatcount != maRepeatCount )
+ {
+ maRepeatCount = _repeatcount;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+Any SAL_CALL AnimationNode::getRepeatDuration() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maRepeatDuration;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _repeatduration != maRepeatDuration )
+ {
+ maRepeatDuration = _repeatduration;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+sal_Int16 SAL_CALL AnimationNode::getFill() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnFill;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setFill( sal_Int16 _fill ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _fill != mnFill )
+ {
+ mnFill = _fill;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+sal_Int16 SAL_CALL AnimationNode::getFillDefault() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnFillDefault;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setFillDefault( sal_Int16 _filldefault ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _filldefault != mnFillDefault )
+ {
+ mnFillDefault = _filldefault;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+sal_Int16 SAL_CALL AnimationNode::getRestart() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnRestart;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setRestart( sal_Int16 _restart ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _restart != mnRestart )
+ {
+ mnRestart = _restart;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+sal_Int16 SAL_CALL AnimationNode::getRestartDefault() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnRestartDefault;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setRestartDefault( sal_Int16 _restartdefault ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _restartdefault != mnRestartDefault )
+ {
+ mnRestartDefault = _restartdefault;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+double SAL_CALL AnimationNode::getAcceleration() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mfAcceleration;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setAcceleration( double _acceleration ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _acceleration != mfAcceleration )
+ {
+ mfAcceleration = _acceleration;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+double SAL_CALL AnimationNode::getDecelerate() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mfDecelerate;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setDecelerate( double _decelerate ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _decelerate != mfDecelerate )
+ {
+ mfDecelerate = _decelerate;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+sal_Bool SAL_CALL AnimationNode::getAutoReverse() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mbAutoReverse;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimationNode
+void SAL_CALL AnimationNode::setAutoReverse( sal_Bool _autoreverse ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _autoreverse != mbAutoReverse )
+ {
+ mbAutoReverse = _autoreverse;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+Sequence< NamedValue > SAL_CALL AnimationNode::getUserData() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maUserData;
+}
+
+// --------------------------------------------------------------------
+
+void SAL_CALL AnimationNode::setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maUserData = _userdata;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+// XChild
+Reference< XInterface > SAL_CALL AnimationNode::getParent() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mxParent;
+}
+
+// --------------------------------------------------------------------
+
+// XChild
+void SAL_CALL AnimationNode::setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( Parent != mxParent )
+ {
+ mxParent = Parent;
+
+ mpParent = 0;
+ Reference< XUnoTunnel > xTunnel( mxParent, UNO_QUERY );
+ if( xTunnel.is() )
+ mpParent = reinterpret_cast< AnimationNode* >( sal::static_int_cast< sal_IntPtr >(xTunnel->getSomething( getUnoTunnelId() )));
+
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XCloneable
+Reference< XCloneable > SAL_CALL AnimationNode::createClone() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ Reference< XCloneable > xNewNode;
+ try
+ {
+ xNewNode = new AnimationNode( *this );
+
+ if( maChilds.size() )
+ {
+ Reference< XTimeContainer > xContainer( xNewNode, UNO_QUERY );
+ if( xContainer.is() )
+ {
+ ChildList_t::iterator aIter( maChilds.begin() );
+ ChildList_t::iterator aEnd( maChilds.end() );
+ while( aIter != aEnd )
+ {
+ Reference< XCloneable > xCloneable((*aIter++), UNO_QUERY );
+ if( xCloneable.is() ) try
+ {
+ Reference< XAnimationNode > xNewChildNode( xCloneable->createClone(), UNO_QUERY );
+ if( xNewChildNode.is() )
+ xContainer->appendChild( xNewChildNode );
+ }
+ catch( Exception& e )
+ {
+ (void)e;
+ OSL_TRACE( "animations::AnimationNode::createClone(), exception caught!" );
+ }
+ }
+ }
+ }
+ }
+ catch( Exception& e )
+ {
+ (void)e;
+ OSL_TRACE( "animations::AnimationNode::createClone(), exception caught!" );
+ }
+
+ return xNewNode;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+Any SAL_CALL AnimationNode::getTarget()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maTarget;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setTarget( const Any& _target )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _target != maTarget )
+ {
+ maTarget= _target;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+OUString SAL_CALL AnimationNode::getAttributeName() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maAttributeName;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setAttributeName( const OUString& _attribute )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _attribute != maAttributeName )
+ {
+ maAttributeName = _attribute;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+Sequence< Any > SAL_CALL AnimationNode::getValues()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maValues;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setValues( const Sequence< Any >& _values )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maValues = _values;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+sal_Int16 SAL_CALL AnimationNode::getSubItem() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnSubItem;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setSubItem( sal_Int16 _subitem ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _subitem != mnSubItem )
+ {
+ mnSubItem = _subitem;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+Sequence< double > SAL_CALL AnimationNode::getKeyTimes() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maKeyTimes;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setKeyTimes( const Sequence< double >& _keytimes ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maKeyTimes = _keytimes;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+sal_Int16 SAL_CALL AnimationNode::getValueType() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnValueType;
+}
+
+// --------------------------------------------------------------------
+
+void SAL_CALL AnimationNode::setValueType( sal_Int16 _valuetype ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _valuetype != mnValueType )
+ {
+ mnValueType = _valuetype;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+sal_Int16 SAL_CALL AnimationNode::getCalcMode()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnCalcMode;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setCalcMode( sal_Int16 _calcmode )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _calcmode != mnCalcMode )
+ {
+ mnCalcMode = _calcmode;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+sal_Bool SAL_CALL AnimationNode::getAccumulate()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mbAccumulate;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setAccumulate( sal_Bool _accumulate )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _accumulate != mbAccumulate )
+ {
+ mbAccumulate = _accumulate;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+sal_Int16 SAL_CALL AnimationNode::getAdditive()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnAdditive;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setAdditive( sal_Int16 _additive )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _additive != mnAdditive )
+ {
+ mnAdditive = _additive;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+Any SAL_CALL AnimationNode::getFrom()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maFrom;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setFrom( const Any& _from )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _from != maFrom )
+ {
+ maFrom = _from;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+Any SAL_CALL AnimationNode::getTo()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maTo;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setTo( const Any& _to )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _to != maTo )
+ {
+ maTo = _to;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+Any SAL_CALL AnimationNode::getBy()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maBy;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setBy( const Any& _by )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _by != maBy )
+ {
+ maBy = _by;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+Sequence< TimeFilterPair > SAL_CALL AnimationNode::getTimeFilter()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maTimeFilter;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimate
+void SAL_CALL AnimationNode::setTimeFilter( const Sequence< TimeFilterPair >& _timefilter )
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maTimeFilter = _timefilter;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+OUString SAL_CALL AnimationNode::getFormula() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maFormula;
+}
+
+// --------------------------------------------------------------------
+
+void SAL_CALL AnimationNode::setFormula( const OUString& _formula ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _formula != maFormula )
+ {
+ maFormula = _formula;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateColor
+sal_Int16 SAL_CALL AnimationNode::getColorInterpolation() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnColorSpace;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateColor
+void SAL_CALL AnimationNode::setColorInterpolation( sal_Int16 _colorspace ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _colorspace != mnColorSpace )
+ {
+ mnColorSpace = _colorspace;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateColor
+sal_Bool SAL_CALL AnimationNode::getDirection() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mbDirection;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateColor
+void SAL_CALL AnimationNode::setDirection( sal_Bool _direction ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _direction != mbDirection )
+ {
+ mbDirection = _direction;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateMotion
+Any SAL_CALL AnimationNode::getPath() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maPath;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateMotion
+void SAL_CALL AnimationNode::setPath( const Any& _path ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maPath = _path;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateMotion
+Any SAL_CALL AnimationNode::getOrigin() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maOrigin;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateMotion
+void SAL_CALL AnimationNode::setOrigin( const Any& _origin ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maOrigin = _origin;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateTransform
+sal_Int16 SAL_CALL AnimationNode::getTransformType() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnTransformType;
+}
+
+// --------------------------------------------------------------------
+
+// XAnimateTransform
+void SAL_CALL AnimationNode::setTransformType( sal_Int16 _transformtype ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _transformtype != mnTransformType )
+ {
+ mnTransformType = _transformtype;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+sal_Int16 SAL_CALL AnimationNode::getTransition() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnTransition;
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+void SAL_CALL AnimationNode::setTransition( sal_Int16 _transition ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _transition != mnTransition )
+ {
+ mnTransition = _transition;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+sal_Int16 SAL_CALL AnimationNode::getSubtype() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnSubtype;
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+void SAL_CALL AnimationNode::setSubtype( sal_Int16 _subtype ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _subtype != mnSubtype )
+ {
+ mnSubtype = _subtype;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+sal_Bool SAL_CALL AnimationNode::getMode() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mbMode;
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+void SAL_CALL AnimationNode::setMode( sal_Bool _mode ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _mode != mbMode )
+ {
+ mbMode = _mode;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+sal_Int32 SAL_CALL AnimationNode::getFadeColor() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnFadeColor;
+}
+
+// --------------------------------------------------------------------
+
+// XTransitionFilter
+void SAL_CALL AnimationNode::setFadeColor( sal_Int32 _fadecolor ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _fadecolor != mnFadeColor )
+ {
+ mnFadeColor = _fadecolor;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XAudio
+Any SAL_CALL AnimationNode::getSource() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maTarget;
+}
+
+// --------------------------------------------------------------------
+
+// XAudio
+void SAL_CALL AnimationNode::setSource( const Any& _source ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maTarget = _source;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+// XAudio
+double SAL_CALL AnimationNode::getVolume() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mfVolume;
+}
+
+// --------------------------------------------------------------------
+
+// XAudio
+void SAL_CALL AnimationNode::setVolume( double _volume ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _volume != mfVolume )
+ {
+ mfVolume = _volume;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XCommand
+sal_Int16 SAL_CALL AnimationNode::getCommand() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnCommand;
+}
+
+// --------------------------------------------------------------------
+
+// XCommand
+void SAL_CALL AnimationNode::setCommand( sal_Int16 _command ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _command != mnCommand )
+ {
+ mnCommand = _command;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XCommand
+Any SAL_CALL AnimationNode::getParameter() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return maParameter;
+}
+
+// --------------------------------------------------------------------
+
+// XCommand
+void SAL_CALL AnimationNode::setParameter( const Any& _parameter ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ maParameter = _parameter;
+ fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+// XElementAccess
+Type SAL_CALL AnimationNode::getElementType() throw (RuntimeException)
+{
+ return ::getCppuType((const Reference< XAnimationNode >*)0);
+}
+
+// --------------------------------------------------------------------
+
+// XElementAccess
+sal_Bool SAL_CALL AnimationNode::hasElements() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return !maChilds.empty();
+}
+
+// --------------------------------------------------------------------
+
+// XEnumerationAccess
+Reference< XEnumeration > SAL_CALL AnimationNode::createEnumeration()
+ throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ return new TimeContainerEnumeration( maChilds);
+}
+
+// --------------------------------------------------------------------
+
+
+// XTimeContainer
+Reference< XAnimationNode > SAL_CALL AnimationNode::insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild )
+ throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ if( !newChild.is() || !refChild.is() )
+ throw IllegalArgumentException();
+
+ ChildList_t::iterator before = ::std::find(maChilds.begin(), maChilds.end(), refChild);
+ if( before == maChilds.end() )
+ throw NoSuchElementException();
+
+ if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() )
+ throw ElementExistException();
+
+ maChilds.insert( before, newChild );
+
+ Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
+ newChild->setParent( xThis );
+
+ return newChild;
+}
+
+// --------------------------------------------------------------------
+
+// XTimeContainer
+Reference< XAnimationNode > SAL_CALL AnimationNode::insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild )
+ throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ if( !newChild.is() || !refChild.is() )
+ throw IllegalArgumentException();
+
+ ChildList_t::iterator before = ::std::find(maChilds.begin(), maChilds.end(), refChild);
+ if( before == maChilds.end() )
+ throw NoSuchElementException();
+
+ if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() )
+ throw ElementExistException();
+
+ before++;
+ if( before != maChilds.end() )
+ maChilds.insert( before, newChild );
+ else
+ maChilds.push_back( newChild );
+
+ Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
+ newChild->setParent( xThis );
+
+ return newChild;
+}
+
+// --------------------------------------------------------------------
+
+// XTimeContainer
+Reference< XAnimationNode > SAL_CALL AnimationNode::replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& oldChild )
+ throw( IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ if( !newChild.is() || !oldChild.is() )
+ throw IllegalArgumentException();
+
+ ChildList_t::iterator replace = ::std::find(maChilds.begin(), maChilds.end(), oldChild);
+ if( replace == maChilds.end() )
+ throw NoSuchElementException();
+
+ if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() )
+ throw ElementExistException();
+
+ Reference< XInterface > xNull( 0 );
+ oldChild->setParent( xNull );
+
+ (*replace) = newChild;
+
+ Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
+ newChild->setParent( xThis );
+
+ return newChild;
+}
+
+// --------------------------------------------------------------------
+
+// XTimeContainer
+Reference< XAnimationNode > SAL_CALL AnimationNode::removeChild( const Reference< XAnimationNode >& oldChild )
+ throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ if( !oldChild.is() )
+ throw IllegalArgumentException();
+
+ ChildList_t::iterator old = ::std::find(maChilds.begin(), maChilds.end(), oldChild);
+ if( old == maChilds.end() )
+ throw NoSuchElementException();
+
+ Reference< XInterface > xNull( 0 );
+ oldChild->setParent( xNull );
+
+ maChilds.erase( old );
+
+ return oldChild;
+}
+
+// --------------------------------------------------------------------
+
+// XTimeContainer
+Reference< XAnimationNode > SAL_CALL AnimationNode::appendChild( const Reference< XAnimationNode >& newChild )
+ throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ if( !newChild.is() )
+ throw IllegalArgumentException();
+
+ if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() )
+ throw ElementExistException();
+
+ Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
+ Reference< XInterface > xChild( newChild );
+
+ if( xThis == xChild )
+ throw IllegalArgumentException();
+
+ maChilds.push_back( newChild );
+
+ newChild->setParent( xThis );
+
+ return newChild;
+}
+
+// --------------------------------------------------------------------
+
+// XIterateContainer
+sal_Int16 SAL_CALL AnimationNode::getIterateType() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mnIterateType;
+}
+
+// --------------------------------------------------------------------
+
+// XIterateContainer
+void SAL_CALL AnimationNode::setIterateType( sal_Int16 _iteratetype ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _iteratetype != mnIterateType )
+ {
+ mnIterateType = _iteratetype;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XIterateContainer
+double SAL_CALL AnimationNode::getIterateInterval() throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ return mfIterateInterval;
+}
+
+// --------------------------------------------------------------------
+
+// XIterateContainer
+void SAL_CALL AnimationNode::setIterateInterval( double _iterateinterval ) throw (RuntimeException)
+{
+ Guard< Mutex > aGuard( maMutex );
+ if( _iterateinterval != mfIterateInterval )
+ {
+ mfIterateInterval = _iterateinterval;
+ fireChangeListener();
+ }
+}
+
+// --------------------------------------------------------------------
+
+// XChangesNotifier
+void SAL_CALL AnimationNode::addChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException)
+{
+ maChangeListener.addInterface( aListener );
+}
+
+// --------------------------------------------------------------------
+
+// XChangesNotifier
+void SAL_CALL AnimationNode::removeChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException)
+{
+ maChangeListener.removeInterface(aListener);
+}
+
+// --------------------------------------------------------------------
+
+// XUnoTunnel
+::sal_Int64 SAL_CALL AnimationNode::getSomething( const Sequence< ::sal_Int8 >& rId ) throw (RuntimeException)
+{
+ if( rId.getLength() == 16 && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) )
+ {
+ return sal::static_int_cast< sal_Int64 >(reinterpret_cast< sal_IntPtr >(this));
+
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+// --------------------------------------------------------------------
+
+const ::com::sun::star::uno::Sequence< sal_Int8 > & AnimationNode::getUnoTunnelId()
+{
+ static ::com::sun::star::uno::Sequence< sal_Int8 > * pSeq = 0;
+ if( !pSeq )
+ {
+ ::osl::Guard< ::osl::Mutex > aGuard( ::osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static ::com::sun::star::uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// --------------------------------------------------------------------
+
+void AnimationNode::fireChangeListener()
+{
+ Guard< Mutex > aGuard( maMutex );
+
+ OInterfaceIteratorHelper aIterator( maChangeListener );
+ if( aIterator.hasMoreElements() )
+ {
+ Reference< XInterface > xSource( static_cast<OWeakObject*>(this), UNO_QUERY );
+ Sequence< ElementChange > aChanges;
+ const ChangesEvent aEvent( xSource, makeAny( mxParent ), aChanges );
+ while( aIterator.hasMoreElements() )
+ {
+ Reference< XChangesListener > xListener( aIterator.next(), UNO_QUERY );
+ if( xListener.is() )
+ xListener->changesOccurred( aEvent );
+ }
+ }
+
+ if( mpParent )
+ mpParent->fireChangeListener();
+}
+
+// --------------------------------------------------------------------
+
+} // namespace animcore
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/animations/source/animcore/animcore.xml b/animations/source/animcore/animcore.xml
new file mode 100644
index 000000000000..f6d105ea0794
--- /dev/null
+++ b/animations/source/animcore/animcore.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
+<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
+ <module-name> animations </module-name>
+
+ <component-description>
+ <author> Christian Lippka </author>
+ <name> todo </name>
+ <description>
+ This component provides ...
+ </description>
+ <loader-name> com.sun.star.loader.SharedLibrary </loader-name>
+ <language> c++ </language>
+ <status value="draft"/>
+ <supported-service> </supported-service>
+ <service-dependency> ... </service-dependency>
+ <type> ... </type>
+ </component-description>
+
+ <project-build-dependency> cppuhelper </project-build-dependency>
+ <project-build-dependency> cppu </project-build-dependency>
+ <project-build-dependency> sal </project-build-dependency>
+
+ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
+ <runtime-module-dependency> cppu2 </runtime-module-dependency>
+ <runtime-module-dependency> sal2 </runtime-module-dependency>
+</module-description>
+
diff --git a/animations/source/animcore/factreg.cxx b/animations/source/animcore/factreg.cxx
new file mode 100644
index 000000000000..63c2cacf516b
--- /dev/null
+++ b/animations/source/animcore/factreg.cxx
@@ -0,0 +1,103 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <osl/diagnose.h>
+#include <cppuhelper/factory.hxx>
+#include <cppuhelper/implementationentry.hxx>
+
+#include <com/sun/star/registry/XRegistryKey.hpp>
+
+using namespace ::rtl;
+using namespace ::cppu;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::registry;
+
+#include "factreg.hxx"
+
+namespace animcore
+{
+ rtl_StandardModuleCount g_moduleCount = MODULE_COUNT_INIT;
+}
+
+using namespace animcore;
+
+#define IMPLEMENTATION_ENTRY(N)\
+{\
+ createInstance_##N, getImplementationName_##N ,\
+ getSupportedServiceNames_##N, createSingleComponentFactory ,\
+ &g_moduleCount.modCnt , 0\
+}\
+
+static struct ImplementationEntry g_entries[] =
+{
+ IMPLEMENTATION_ENTRY( PAR ),
+ IMPLEMENTATION_ENTRY( SEQ ),
+ IMPLEMENTATION_ENTRY( ITERATE ),
+ IMPLEMENTATION_ENTRY( ANIMATE ),
+ IMPLEMENTATION_ENTRY( SET ),
+ IMPLEMENTATION_ENTRY( ANIMATECOLOR ),
+ IMPLEMENTATION_ENTRY( ANIMATEMOTION ),
+ IMPLEMENTATION_ENTRY( ANIMATETRANSFORM ),
+ IMPLEMENTATION_ENTRY( TRANSITIONFILTER ),
+ IMPLEMENTATION_ENTRY( AUDIO ),
+ IMPLEMENTATION_ENTRY( COMMAND ),
+ IMPLEMENTATION_ENTRY( TargetPropertiesCreator ),
+ { 0, 0, 0, 0, 0, 0 }
+};
+
+extern "C"
+{
+
+sal_Bool SAL_CALL component_canUnload( TimeValue *pTime )
+{
+ return g_moduleCount.canUnload( &g_moduleCount , pTime );
+}
+
+//==================================================================================================
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+//==================================================================================================
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, void * pRegistryKey )
+{
+ return component_writeInfoHelper( pServiceManager, pRegistryKey, g_entries );
+}
+//==================================================================================================
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ return component_getFactoryHelper( pImplName, pServiceManager, pRegistryKey , g_entries );
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/animations/source/animcore/factreg.hxx b/animations/source/animcore/factreg.hxx
new file mode 100644
index 000000000000..c877d1b53c95
--- /dev/null
+++ b/animations/source/animcore/factreg.hxx
@@ -0,0 +1,54 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+#include <rtl/unload.h>
+
+namespace animcore {
+
+extern rtl_StandardModuleCount g_moduleCount;
+
+#define DECL_NODE_FACTORY(N)\
+extern ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance_##N( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & rSMgr ) throw (::com::sun::star::uno::Exception);\
+extern ::rtl::OUString getImplementationName_##N();\
+extern ::com::sun::star::uno::Sequence< ::rtl::OUString> getSupportedServiceNames_##N(void)
+
+DECL_NODE_FACTORY( PAR );
+DECL_NODE_FACTORY( SEQ );
+DECL_NODE_FACTORY( ITERATE );
+DECL_NODE_FACTORY( ANIMATE );
+DECL_NODE_FACTORY( SET );
+DECL_NODE_FACTORY( ANIMATECOLOR );
+DECL_NODE_FACTORY( ANIMATEMOTION );
+DECL_NODE_FACTORY( ANIMATETRANSFORM );
+DECL_NODE_FACTORY( TRANSITIONFILTER );
+DECL_NODE_FACTORY( AUDIO );
+DECL_NODE_FACTORY( COMMAND );
+DECL_NODE_FACTORY( TargetPropertiesCreator );
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/animations/source/animcore/makefile.mk b/animations/source/animcore/makefile.mk
new file mode 100644
index 000000000000..b78460ada157
--- /dev/null
+++ b/animations/source/animcore/makefile.mk
@@ -0,0 +1,70 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..$/..
+
+PRJNAME=animations
+TARGET=animcore
+ENABLE_EXCEPTIONS=TRUE
+NO_BSYMBOLIC=TRUE
+#COMP1TYPELIST=$(TARGET)
+#COMPRDB=$(SOLARBINDIR)$/offapi.rdb
+
+# --- Settings -----------------------------------------------------
+.INCLUDE : settings.mk
+.IF "$(L10N_framework)"==""
+# --- Files --------------------------------------------------------
+#UNOUCRDEP=$(SOLARBINDIR)$/offapi.rdb
+#UNOUCRRDB=$(SOLARBINDIR)$/offapi.rdb
+#UNOUCROUT=$(OUT)$/inc$/animations
+#INCPRE+= $(UNOUCROUT)
+
+
+SLOFILES = $(SLO)$/animcore.obj\
+ $(SLO)$/factreg.obj\
+ $(SLO)$/targetpropertiescreator.obj
+
+SHL1TARGET= $(TARGET)
+SHL1VERSIONMAP=$(SOLARENV)/src/unloadablecomponent.map
+
+SHL1STDLIBS= \
+ $(SALLIB) \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB)
+
+
+SHL1DEPN=
+SHL1IMPLIB= i$(TARGET)
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME= $(SHL1TARGET)
+
+.ENDIF # L10N_framework
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
+
diff --git a/animations/source/animcore/targetpropertiescreator.cxx b/animations/source/animcore/targetpropertiescreator.cxx
new file mode 100644
index 000000000000..9386ce316e38
--- /dev/null
+++ b/animations/source/animcore/targetpropertiescreator.cxx
@@ -0,0 +1,507 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/animations/XTargetPropertiesCreator.hpp>
+#include <com/sun/star/animations/XIterateContainer.hpp>
+#include <com/sun/star/animations/TargetProperties.hpp>
+#include <com/sun/star/presentation/ParagraphTarget.hpp>
+#include <com/sun/star/registry/XRegistryKey.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/animations/AnimationNodeType.hpp>
+#include <com/sun/star/animations/XAnimate.hpp>
+#include <cppuhelper/compbase3.hxx>
+#include <cppuhelper/factory.hxx>
+#include <cppuhelper/implementationentry.hxx>
+#include <comphelper/optionalvalue.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/sequence.hxx>
+
+#include <animations/animationnodehelper.hxx>
+
+#include <vector>
+#include <hash_map>
+
+
+using namespace ::com::sun::star;
+
+#define IMPLEMENTATION_NAME "animcore::TargetPropertiesCreator"
+#define SERVICE_NAME "com.sun.star.animations.TargetPropertiesCreator"
+
+namespace animcore
+{
+ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::animations::XTargetPropertiesCreator,
+ lang::XServiceInfo,
+ lang::XServiceName > TargetPropertiesCreator_Base;
+
+ class TargetPropertiesCreator : public ::comphelper::OBaseMutex,
+ public TargetPropertiesCreator_Base
+ {
+ public:
+ static uno::Reference< uno::XInterface > SAL_CALL createInstance( const uno::Reference< uno::XComponentContext >& xContext ) throw ( uno::Exception )
+ {
+ return uno::Reference< uno::XInterface >( static_cast<cppu::OWeakObject*>(new TargetPropertiesCreator( xContext )) );
+ }
+
+ /// Dispose all internal references
+ virtual void SAL_CALL disposing();
+
+ // XTargetPropertiesCreator
+ virtual uno::Sequence< animations::TargetProperties > SAL_CALL createInitialTargetProperties( const uno::Reference< animations::XAnimationNode >& rootNode ) throw (uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw( uno::RuntimeException );
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw( uno::RuntimeException );
+ virtual uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( uno::RuntimeException );
+
+ // XServiceName
+ virtual ::rtl::OUString SAL_CALL getServiceName( ) throw (uno::RuntimeException);
+
+ protected:
+ ~TargetPropertiesCreator(); // we're a ref-counted UNO class. _We_ destroy ourselves.
+
+ private:
+ // default: disabled copy/assignment
+ TargetPropertiesCreator(const TargetPropertiesCreator&);
+ TargetPropertiesCreator& operator=( const TargetPropertiesCreator& );
+
+ TargetPropertiesCreator( const uno::Reference< uno::XComponentContext >& rxContext );
+ };
+
+ // --------------------------------------------------------------------
+
+ uno::Reference< uno::XInterface > SAL_CALL createInstance_TargetPropertiesCreator( const uno::Reference< uno::XComponentContext > & rSMgr ) throw (uno::Exception)
+ {
+ return TargetPropertiesCreator::createInstance( rSMgr );
+ }
+
+ ::rtl::OUString getImplementationName_TargetPropertiesCreator()
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( IMPLEMENTATION_NAME ) );
+ }
+
+ uno::Sequence< ::rtl::OUString > getSupportedServiceNames_TargetPropertiesCreator(void)
+ {
+ uno::Sequence< ::rtl::OUString > aRet(1);
+ aRet.getArray()[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) );
+ return aRet;
+ }
+
+ // --------------------------------------------------------------------
+
+ namespace
+ {
+ // Vector containing all properties for a given shape
+ typedef ::std::vector< beans::NamedValue > VectorOfNamedValues;
+
+ /** The hash map key
+
+ This key contains both XShape reference and a paragraph
+ index, as we somehow have to handle shape and paragraph
+ targets with the same data structure.
+ */
+ struct ShapeHashKey
+ {
+ /// Shape target
+ uno::Reference< drawing::XShape > mxRef;
+
+ /** Paragraph index.
+
+ If this is a pure shape target, mnParagraphIndex is
+ set to -1.
+ */
+ sal_Int16 mnParagraphIndex;
+
+ /// Comparison needed for hash_map
+ bool operator==( const ShapeHashKey& rRHS ) const
+ {
+ return mxRef == rRHS.mxRef && mnParagraphIndex == rRHS.mnParagraphIndex;
+ }
+ };
+
+ // A hash map which maps a XShape to the corresponding vector of initial properties
+ typedef ::std::hash_map< ShapeHashKey,
+ VectorOfNamedValues,
+ ::std::size_t (*)(const ShapeHashKey&) > XShapeHash;
+
+ ::std::size_t refhasher( const ShapeHashKey& rKey )
+ {
+ // TODO(P2): Maybe a better hash function would be to
+ // spread mnParagraphIndex to 32 bit: a0b0c0d0e0... Hakmem
+ // should have a formula.
+ //
+ // Yes it has:
+ // x = (x & 0x0000FF00) << 8) | (x >> 8) & 0x0000FF00 | x & 0xFF0000FF;
+ // x = (x & 0x00F000F0) << 4) | (x >> 4) & 0x00F000F0 | x & 0xF00FF00F;
+ // x = (x & 0x0C0C0C0C) << 2) | (x >> 2) & 0x0C0C0C0C | x & 0xC3C3C3C3;
+ // x = (x & 0x22222222) << 1) | (x >> 1) & 0x22222222 | x & 0x99999999;
+ //
+ // Costs about 17 cycles on a RISC machine with infinite
+ // instruction level parallelism (~42 basic
+ // instructions). Thus I truly doubt this pays off...
+ return reinterpret_cast< ::std::size_t >(rKey.mxRef.get()) ^ (rKey.mnParagraphIndex << 16L);
+ }
+
+
+ class NodeFunctor
+ {
+ public:
+ explicit NodeFunctor( XShapeHash& rShapeHash ) :
+ mrShapeHash( rShapeHash ),
+ mxTargetShape(),
+ mnParagraphIndex( -1 )
+ {
+ }
+
+ NodeFunctor( XShapeHash& rShapeHash,
+ const uno::Reference< drawing::XShape >& rTargetShape,
+ sal_Int16 nParagraphIndex ) :
+ mrShapeHash( rShapeHash ),
+ mxTargetShape( rTargetShape ),
+ mnParagraphIndex( nParagraphIndex )
+ {
+ }
+
+ void operator()( const uno::Reference< animations::XAnimationNode >& xNode ) const
+ {
+ if( !xNode.is() )
+ {
+ OSL_ENSURE( false,
+ "AnimCore: NodeFunctor::operator(): invalid XAnimationNode" );
+ return;
+ }
+
+ uno::Reference< drawing::XShape > xTargetShape( mxTargetShape );
+ sal_Int16 nParagraphIndex( mnParagraphIndex );
+
+ switch( xNode->getType() )
+ {
+ case animations::AnimationNodeType::ITERATE:
+ {
+ // extract target shape from iterate node
+ // (will override the target for all children)
+ // --------------------------------------------------
+
+ uno::Reference< animations::XIterateContainer > xIterNode( xNode,
+ uno::UNO_QUERY );
+
+ // TODO(E1): I'm not too sure what to expect here...
+ if( !xIterNode->getTarget().hasValue() )
+ {
+ OSL_ENSURE( false,
+ "animcore: NodeFunctor::operator(): no target on ITERATE node" );
+ return;
+ }
+
+ xTargetShape.set( xIterNode->getTarget(),
+ uno::UNO_QUERY );
+
+ if( !xTargetShape.is() )
+ {
+ ::com::sun::star::presentation::ParagraphTarget aTarget;
+
+ // no shape provided. Maybe a ParagraphTarget?
+ if( !(xIterNode->getTarget() >>= aTarget) )
+ {
+ OSL_ENSURE( false,
+ "animcore: NodeFunctor::operator(): could not extract any "
+ "target information" );
+ return;
+ }
+
+ xTargetShape = aTarget.Shape;
+ nParagraphIndex = aTarget.Paragraph;
+
+ if( !xTargetShape.is() )
+ {
+ OSL_ENSURE( false,
+ "animcore: NodeFunctor::operator(): invalid shape in ParagraphTarget" );
+ return;
+ }
+ }
+ }
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::PAR:
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::SEQ:
+ {
+ NodeFunctor aFunctor( mrShapeHash,
+ xTargetShape,
+ nParagraphIndex );
+ if( !::anim::for_each_childNode( xNode,
+ aFunctor ) )
+ {
+ OSL_ENSURE( false,
+ "AnimCore: NodeFunctor::operator(): child node iteration failed, "
+ "or extraneous container nodes encountered" );
+ }
+ }
+ break;
+
+ case animations::AnimationNodeType::CUSTOM:
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::ANIMATE:
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::ANIMATEMOTION:
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::ANIMATECOLOR:
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::ANIMATETRANSFORM:
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::TRANSITIONFILTER:
+ // FALLTHROUGH intended
+ case animations::AnimationNodeType::AUDIO:
+ // FALLTHROUGH intended
+ default:
+ // ignore this node, no valuable content for now.
+ break;
+
+ case animations::AnimationNodeType::SET:
+ {
+ // evaluate set node content
+ uno::Reference< animations::XAnimate > xAnimateNode( xNode,
+ uno::UNO_QUERY );
+
+ if( !xAnimateNode.is() )
+ break; // invalid node
+
+ // determine target shape (if any)
+ ShapeHashKey aTarget;
+ if( xTargetShape.is() )
+ {
+ // override target shape with parent-supplied
+ aTarget.mxRef = xTargetShape;
+ aTarget.mnParagraphIndex = nParagraphIndex;
+ }
+ else
+ {
+ // no parent-supplied target, retrieve
+ // node target
+ if( (xAnimateNode->getTarget() >>= aTarget.mxRef) )
+ {
+ // pure shape target - set paragraph
+ // index to magic
+ aTarget.mnParagraphIndex = -1;
+ }
+ else
+ {
+ // not a pure shape target - maybe a
+ // ParagraphTarget?
+ presentation::ParagraphTarget aUnoTarget;
+
+ if( !(xAnimateNode->getTarget() >>= aUnoTarget) )
+ {
+ OSL_ENSURE( false,
+ "AnimCore: NodeFunctor::operator(): unknown target type encountered" );
+ break;
+ }
+
+ aTarget.mxRef = aUnoTarget.Shape;
+ aTarget.mnParagraphIndex = aUnoTarget.Paragraph;
+ }
+ }
+
+ if( !aTarget.mxRef.is() )
+ {
+ OSL_ENSURE( false,
+ "AnimCore: NodeFunctor::operator(): Found target, but XShape is NULL" );
+ break; // invalid target XShape
+ }
+
+ // check whether we already have an entry for
+ // this target (we only take the first set
+ // effect for every shape)
+ XShapeHash::const_iterator aIter;
+ if( (aIter=mrShapeHash.find( aTarget )) != mrShapeHash.end() )
+ break; // already an entry in existence for given XShape
+
+ // if this is an appear effect, hide shape
+ // initially. This is currently the only place
+ // where a shape effect influences shape
+ // attributes outside it's effective duration.
+ if( xAnimateNode->getAttributeName().equalsIgnoreAsciiCaseAscii("visibility") )
+ {
+ sal_Bool bVisible( sal_False );
+
+ uno::Any aAny( xAnimateNode->getTo() );
+
+ // try to extract bool value
+ if( !(aAny >>= bVisible) )
+ {
+ // try to extract string
+ ::rtl::OUString aString;
+ if( (aAny >>= aString) )
+ {
+ // we also take the strings "true" and "false",
+ // as well as "on" and "off" here
+ if( aString.equalsIgnoreAsciiCaseAscii("true") ||
+ aString.equalsIgnoreAsciiCaseAscii("on") )
+ {
+ bVisible = sal_True;
+ }
+ if( aString.equalsIgnoreAsciiCaseAscii("false") ||
+ aString.equalsIgnoreAsciiCaseAscii("off") )
+ {
+ bVisible = sal_False;
+ }
+ }
+ }
+
+ if( bVisible )
+ {
+ // target is set to 'visible' at the
+ // first relevant effect. Thus, target
+ // must be initially _hidden_, for the
+ // effect to have visible impact.
+ mrShapeHash.insert(
+ XShapeHash::value_type(
+ aTarget,
+ VectorOfNamedValues(
+ 1,
+ beans::NamedValue(
+ xAnimateNode->getAttributeName(),
+ uno::makeAny( sal_False ) ) ) ) );
+ }
+ }
+ }
+ break;
+ }
+ }
+
+ private:
+ XShapeHash& mrShapeHash;
+ uno::Reference< drawing::XShape > mxTargetShape;
+ sal_Int16 mnParagraphIndex;
+ };
+ }
+
+ // --------------------------------------------------------------------
+
+ TargetPropertiesCreator::TargetPropertiesCreator( const uno::Reference< uno::XComponentContext >& ) :
+ TargetPropertiesCreator_Base( m_aMutex )
+ {
+ }
+
+ TargetPropertiesCreator::~TargetPropertiesCreator()
+ {
+ }
+
+ void SAL_CALL TargetPropertiesCreator::disposing()
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+ }
+
+ // XTargetPropertiesCreator
+ uno::Sequence< animations::TargetProperties > SAL_CALL TargetPropertiesCreator::createInitialTargetProperties
+ (
+ const uno::Reference< animations::XAnimationNode >& xRootNode
+ ) throw (uno::RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ // scan all nodes for visibility changes, and record first
+ // 'visibility=true' for each shape
+ XShapeHash aShapeHash( 101,
+ &refhasher );
+
+ NodeFunctor aFunctor( aShapeHash );
+
+ // TODO(F1): Maybe limit functor application to main sequence
+ // alone (CL said something that shape visibility is only
+ // affected by effects in the main sequence for PPT).
+ //
+ // OTOH, client code can pass us only the main sequence (which
+ // it actually does right now, for the slideshow implementation).
+ aFunctor( xRootNode );
+
+
+ // output to result sequence
+ // ----------------------------------------------------------------------
+
+ uno::Sequence< animations::TargetProperties > aRes( aShapeHash.size() );
+
+ ::std::size_t nCurrIndex(0);
+ XShapeHash::const_iterator aCurr( aShapeHash.begin() );
+ const XShapeHash::const_iterator aEnd ( aShapeHash.end() );
+ while( aCurr != aEnd )
+ {
+ animations::TargetProperties& rCurrProps( aRes[ nCurrIndex++ ] );
+
+ if( aCurr->first.mnParagraphIndex == -1 )
+ {
+ rCurrProps.Target = uno::makeAny( aCurr->first.mxRef );
+ }
+ else
+ {
+ rCurrProps.Target = uno::makeAny(
+ presentation::ParagraphTarget(
+ aCurr->first.mxRef,
+ aCurr->first.mnParagraphIndex ) );
+ }
+
+ rCurrProps.Properties = ::comphelper::containerToSequence( aCurr->second );
+
+ ++aCurr;
+ }
+
+ return aRes;
+ }
+
+ // XServiceInfo
+ ::rtl::OUString SAL_CALL TargetPropertiesCreator::getImplementationName() throw( uno::RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMPLEMENTATION_NAME ) );
+ }
+
+ sal_Bool SAL_CALL TargetPropertiesCreator::supportsService( const ::rtl::OUString& ServiceName ) throw( uno::RuntimeException )
+ {
+ return ServiceName.equalsIgnoreAsciiCaseAscii( SERVICE_NAME );
+ }
+
+ uno::Sequence< ::rtl::OUString > SAL_CALL TargetPropertiesCreator::getSupportedServiceNames() throw( uno::RuntimeException )
+ {
+ uno::Sequence< ::rtl::OUString > aRet(1);
+ aRet[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( SERVICE_NAME ) );
+
+ return aRet;
+ }
+
+ // XServiceName
+ ::rtl::OUString SAL_CALL TargetPropertiesCreator::getServiceName( ) throw (uno::RuntimeException)
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) );
+ }
+
+} // namespace animcore
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/apache-commons/java/codec/makefile.mk b/apache-commons/java/codec/makefile.mk
new file mode 100644
index 000000000000..13b6c9f7113b
--- /dev/null
+++ b/apache-commons/java/codec/makefile.mk
@@ -0,0 +1,77 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-codec
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-codec-1.3-src
+TARFILE_MD5=af3c3acf618de6108d65fcdc92b492e1
+
+TARFILE_ROOTDIR=commons-codec-1.3
+
+PATCH_FILES=$(PRJ)$/patches$/codec.patch
+
+#CONVERTFILES=build.xml
+
+OUT2CLASS=dist$/commons-codec-1.3.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/java/httpclient/makefile.mk b/apache-commons/java/httpclient/makefile.mk
new file mode 100644
index 000000000000..900fb0832cac
--- /dev/null
+++ b/apache-commons/java/httpclient/makefile.mk
@@ -0,0 +1,82 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-httpclient
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+TAR!:=$(GNUTAR)
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-httpclient-3.1-src
+TARFILE_MD5=2c9b0f83ed5890af02c0df1c1776f39b
+
+TARFILE_ROOTDIR=commons-httpclient-3.1
+
+#PATCH_FILES=$(PRJ)$/patches$/httpclient.patch
+
+#CONVERTFILES=build.xml
+
+OUT2CLASS=dist$/commons-httpclient.jar
+
+COMMONS_LOGGING_JAR=..$/..$/..$/..$/$(INPATH)$/class$/commons-logging-1.1.1-SNAPSHOT.jar
+COMMONS_CODEC_JAR=..$/..$/..$/..$/$/$(INPATH)$/class$/commons-codec-1.3.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) -Dcommons-codec.jar=$(COMMONS_CODEC_JAR) -f $(ANT_BUILDFILE) dist
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) -Dcommons-codec.jar=$(COMMONS_CODEC_JAR) -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) dist
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/java/lang/makefile.mk b/apache-commons/java/lang/makefile.mk
new file mode 100644
index 000000000000..6482b1a582f6
--- /dev/null
+++ b/apache-commons/java/lang/makefile.mk
@@ -0,0 +1,79 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-lang
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+TAR!:=$(GNUTAR)
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-lang-2.3-src
+TARFILE_MD5=2ae988b339daec234019a7066f96733e
+
+TARFILE_ROOTDIR=commons-lang-2.3-src
+
+#PATCH_FILES=$(PRJ)$/patches$/logging.patch
+
+#CONVERTFILES=build.xml
+
+OUT2CLASS=dist$/commons-lang-2.3.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/java/logging/makefile.mk b/apache-commons/java/logging/makefile.mk
new file mode 100644
index 000000000000..cc1f1a6e8aaa
--- /dev/null
+++ b/apache-commons/java/logging/makefile.mk
@@ -0,0 +1,81 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-logging
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+.IF "$(SOLAR_JAVA)" != "" && ( "$(ENABLE_MEDIAWIKI)" == "YES" || "$(ENABLE_REPORTBUILDER)" == "YES" )
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-logging-1.1.1-src
+TARFILE_MD5=3c219630e4302863a9a83d0efde889db
+
+TARFILE_ROOTDIR=commons-logging-1.1.1-src
+
+PATCH_FILES=$(PRJ)$/patches$/logging.patch
+
+CONVERTFILES=build.xml
+
+OUT2CLASS=target$/commons-logging-1.1.1-SNAPSHOT.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(SYSTEM_TOMCAT)" != "YES"
+SERVLETAPI_JAR := $(SOLARVER)$/$(INPATH)$/bin$(UPDMINOREXT)$/servlet-api.jar
+.ENDIF
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -Dservletapi.jar=$(SERVLETAPI_JAR) -f $(ANT_BUILDFILE) compile build-jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -f $(ANT_BUILDFILE) -Dservletapi.jar=$(SERVLETAPI_JAR) compile build-jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && ( "$(ENABLE_MEDIAWIKI)" == "YES" || "$(ENABLE_REPORTBUILDER)" == "YES" )
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/patches/codec.patch b/apache-commons/patches/codec.patch
new file mode 100644
index 000000000000..dea25ad263d2
--- /dev/null
+++ b/apache-commons/patches/codec.patch
@@ -0,0 +1,17 @@
+--- misc/build/commons-codec-1.3/build.xml-old 2008-01-31 15:28:58.000000000 +0100
++++ misc/build/commons-codec-1.3/build.xml 2008-01-31 15:29:21.000000000 +0100
+@@ -90,14 +90,12 @@
+ </target>
+ <target name="dist" depends="compile,javadoc" description="Create binary distribution">
+ <mkdir dir="${dist.home}"/>
+- <copy file="../LICENSE" todir="${dist.home}"/>
+ <copy file="${basedir}/RELEASE-NOTES.txt" todir="${dist.home}"/>
+ <antcall target="jar"/>
+ </target>
+ <target name="jar" depends="compile" description="Create jar">
+ <mkdir dir="${dist.home}"/>
+ <mkdir dir="${build.home}/classes/META-INF"/>
+- <copy file="../LICENSE" tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
+ <jar jarfile="${dist.home}/${final.name}.jar" basedir="${build.home}/classes" manifest="${build.home}/conf/MANIFEST.MF"/>
+ </target>
+ <target name="install-jar" depends="jar" description="--> Installs jar file in ${lib.repo}">
diff --git a/apache-commons/patches/logging.patch b/apache-commons/patches/logging.patch
new file mode 100644
index 000000000000..63b93dcbd6f2
--- /dev/null
+++ b/apache-commons/patches/logging.patch
@@ -0,0 +1,15 @@
+--- misc/commons-logging-1.1.1-src/build.xml 2007-11-22 00:27:52.000000000 +0100
++++ misc/build/commons-logging-1.1.1-src/build.xml 2008-06-24 14:23:56.316301736 +0200
+@@ -127,10 +127,10 @@
+ <!-- ========== Compiler Defaults ========================================= -->
+
+ <!-- Version of java class files to generate. -->
+- <property name="target.version" value="1.1"/>
++ <property name="target.version" value="1.3"/>
+
+ <!-- Version of java source to accept -->
+- <property name="source.version" value="1.2"/>
++ <property name="source.version" value="1.3"/>
+
+ <!-- Should Java compilations set the 'debug' compiler option? -->
+ <property name="compile.debug" value="true"/>
diff --git a/apache-commons/prj/build.lst b/apache-commons/prj/build.lst
new file mode 100644
index 000000000000..c509ce0336dd
--- /dev/null
+++ b/apache-commons/prj/build.lst
@@ -0,0 +1,6 @@
+ac apache-commons : solenv TOMCAT:tomcat NULL
+ac apache-commons usr1 - all ac_mkout NULL
+ac apache-commons\java\codec nmake - all ac_codec NULL
+ac apache-commons\java\lang nmake - all ac_lang NULL
+ac apache-commons\java\logging nmake - all ac_logging NULL
+ac apache-commons\java\httpclient nmake - all ac_httpclient ac_logging ac_codec NULL
diff --git a/apache-commons/prj/d.lst b/apache-commons/prj/d.lst
new file mode 100644
index 000000000000..21f6e01700ea
--- /dev/null
+++ b/apache-commons/prj/d.lst
@@ -0,0 +1,5 @@
+..\%__SRC%\class\commons-logging-1.1.1-SNAPSHOT.jar %_DEST%\bin%_EXT%\commons-logging-1.1.1.jar
+..\%__SRC%\class\commons-codec-1.3.jar %_DEST%\bin%_EXT%\commons-codec-1.3.jar
+..\%__SRC%\class\commons-httpclient.jar %_DEST%\bin%_EXT%\commons-httpclient-3.1.jar
+..\%__SRC%\class\commons-lang-2.3.jar %_DEST%\bin%_EXT%\commons-lang-2.3.jar
+
diff --git a/apple_remote/AppleRemote.m b/apple_remote/AppleRemote.m
new file mode 100644
index 000000000000..a65cc6440b41
--- /dev/null
+++ b/apple_remote/AppleRemote.m
@@ -0,0 +1,125 @@
+/*****************************************************************************
+ * RemoteControlWrapper.m
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same license
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import "AppleRemote.h"
+
+#import <mach/mach.h>
+#import <mach/mach_error.h>
+#import <IOKit/IOKitLib.h>
+#import <IOKit/IOCFPlugIn.h>
+#import <IOKit/hid/IOHIDKeys.h>
+
+const char* AppleRemoteDeviceName = "AppleIRController";
+
+// the WWDC 07 Leopard Build is missing the constant
+#ifndef NSAppKitVersionNumber10_4
+ #define NSAppKitVersionNumber10_4 824
+#endif
+#ifndef NSAppKitVersionNumber10_5
+ #define NSAppKitVersionNumber10_5 949
+#endif
+
+@implementation AppleRemote
+
++ (const char*) remoteControlDeviceName {
+ return AppleRemoteDeviceName;
+}
+
+- (void) setCookieMappingInDictionary: (NSMutableDictionary*) _cookieToButtonMapping {
+
+ // TODO : avoid such magics
+ if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_4) {
+ #ifdef DEBUG
+ NSLog( @"setting 10.4 cookies" );
+ #endif
+ // 10.4.x Tiger
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlus] forKey:@"14_12_11_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMinus] forKey:@"14_13_11_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu] forKey:@"14_7_6_14_7_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay] forKey:@"14_8_6_14_8_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight] forKey:@"14_9_6_14_9_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft] forKey:@"14_10_6_14_10_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight_Hold] forKey:@"14_6_4_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft_Hold] forKey:@"14_6_3_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu_Hold] forKey:@"14_6_14_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay_Hold] forKey:@"18_14_6_18_14_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteControl_Switched] forKey:@"19_"];
+ } else if( floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_5 ) {
+ #ifdef DEBUG
+ NSLog( @"setting 10.5 cookies" );
+ #endif
+ // 10.5.x Leopard
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlus] forKey:@"31_29_28_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMinus] forKey:@"31_30_28_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu] forKey:@"31_20_19_18_31_20_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay] forKey:@"31_21_19_18_31_21_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight] forKey:@"31_22_19_18_31_22_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft] forKey:@"31_23_19_18_31_23_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight_Hold] forKey:@"31_19_18_4_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft_Hold] forKey:@"31_19_18_3_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu_Hold] forKey:@"31_19_18_31_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay_Hold] forKey:@"35_31_19_18_35_31_19_18_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteControl_Switched] forKey:@"19_"];
+ }
+ else
+ {
+ #ifdef DEBUG
+ NSLog( @"setting 10.6 cookies" );
+ #endif
+ // 10.6.x Snow Leopard
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlus] forKey:@"33_31_30_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMinus] forKey:@"33_32_30_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu] forKey:@"33_22_21_20_2_33_22_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay] forKey:@"33_23_21_20_2_33_23_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight] forKey:@"33_24_21_20_2_33_24_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft] forKey:@"33_25_21_20_2_33_25_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight_Hold] forKey:@"33_21_20_14_12_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft_Hold] forKey:@"33_21_20_13_12_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu_Hold] forKey:@"33_21_20_2_33_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay_Hold] forKey:@"37_33_21_20_2_37_33_21_20_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteControl_Switched] forKey:@"19_"];
+ }
+}
+
+- (void) sendRemoteButtonEvent: (RemoteControlEventIdentifier) event pressedDown: (BOOL) pressedDown {
+ if (pressedDown == NO && event == kRemoteButtonMenu_Hold) {
+ // There is no seperate event for pressed down on menu hold. We are simulating that event here
+ [super sendRemoteButtonEvent:event pressedDown:YES];
+ }
+
+ [super sendRemoteButtonEvent:event pressedDown:pressedDown];
+
+ if (pressedDown && (event == kRemoteButtonRight || event == kRemoteButtonLeft || event == kRemoteButtonPlay || event == kRemoteButtonMenu || event == kRemoteButtonPlay_Hold)) {
+ // There is no seperate event when the button is being released. We are simulating that event here
+ [super sendRemoteButtonEvent:event pressedDown:NO];
+ }
+}
+
+@end
diff --git a/apple_remote/GlobalKeyboardDevice.m b/apple_remote/GlobalKeyboardDevice.m
new file mode 100644
index 000000000000..14bf558a0511
--- /dev/null
+++ b/apple_remote/GlobalKeyboardDevice.m
@@ -0,0 +1,249 @@
+/*****************************************************************************
+ * GlobalKeyboardDevice.m
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same license
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+
+#import "GlobalKeyboardDevice.h"
+
+#define F1 122
+#define F2 120
+#define F3 99
+#define F4 118
+#define F5 96
+#define F6 97
+#define F7 98
+
+/*
+ the following default keys are read and shall be used to change the keyboard mapping
+
+ mac.remotecontrols.GlobalKeyboardDevice.plus_modifiers
+ mac.remotecontrols.GlobalKeyboardDevice.plus_keycode
+ mac.remotecontrols.GlobalKeyboardDevice.minus_modifiers
+ mac.remotecontrols.GlobalKeyboardDevice.minus_keycode
+ mac.remotecontrols.GlobalKeyboardDevice.play_modifiers
+ mac.remotecontrols.GlobalKeyboardDevice.play_keycode
+ mac.remotecontrols.GlobalKeyboardDevice.left_modifiers
+ mac.remotecontrols.GlobalKeyboardDevice.left_keycode
+ mac.remotecontrols.GlobalKeyboardDevice.right_modifiers
+ mac.remotecontrols.GlobalKeyboardDevice.right_keycode
+ mac.remotecontrols.GlobalKeyboardDevice.menu_modifiers
+ mac.remotecontrols.GlobalKeyboardDevice.menu_keycode
+ mac.remotecontrols.GlobalKeyboardDevice.playhold_modifiers
+ mac.remotecontrols.GlobalKeyboardDevice.playhold_keycode
+ */
+
+static OSStatus hotKeyEventHandler(EventHandlerCallRef, EventRef, void*);
+
+@implementation GlobalKeyboardDevice
+
+- (id) initWithDelegate: (id) _remoteControlDelegate {
+ if ( (self = [super initWithDelegate: _remoteControlDelegate]) ) {
+ hotKeyRemoteEventMapping = [[NSMutableDictionary alloc] init];
+
+ unsigned int modifiers = cmdKey + shiftKey /*+ optionKey*/ + controlKey;
+
+ [self mapRemoteButton:kRemoteButtonPlus defaultKeycode:F1 defaultModifiers:modifiers];
+ [self mapRemoteButton:kRemoteButtonMinus defaultKeycode:F2 defaultModifiers:modifiers];
+ [self mapRemoteButton:kRemoteButtonPlay defaultKeycode:F3 defaultModifiers:modifiers];
+ [self mapRemoteButton:kRemoteButtonLeft defaultKeycode:F4 defaultModifiers:modifiers];
+ [self mapRemoteButton:kRemoteButtonRight defaultKeycode:F5 defaultModifiers:modifiers];
+ [self mapRemoteButton:kRemoteButtonMenu defaultKeycode:F6 defaultModifiers:modifiers];
+ [self mapRemoteButton:kRemoteButtonPlay_Hold defaultKeycode:F7 defaultModifiers:modifiers];
+ }
+ return self;
+}
+
+- (void) dealloc {
+ [hotKeyRemoteEventMapping release];
+ [super dealloc];
+}
+
+- (void) mapRemoteButton: (RemoteControlEventIdentifier) remoteButtonIdentifier defaultKeycode: (unsigned int) defaultKeycode defaultModifiers: (unsigned int) defaultModifiers {
+ NSString* defaultsKey = NULL;
+
+ switch(remoteButtonIdentifier) {
+ case kRemoteButtonPlus:
+ defaultsKey = @"plus";
+ break;
+ case kRemoteButtonMinus:
+ defaultsKey = @"minus";
+ break;
+ case kRemoteButtonMenu:
+ defaultsKey = @"menu";
+ break;
+ case kRemoteButtonPlay:
+ defaultsKey = @"play";
+ break;
+ case kRemoteButtonRight:
+ defaultsKey = @"right";
+ break;
+ case kRemoteButtonLeft:
+ defaultsKey = @"left";
+ break;
+ case kRemoteButtonPlay_Hold:
+ defaultsKey = @"playhold";
+ break;
+ default:
+#ifdef DEBUG
+ NSLog(@"Unknown global keyboard defaults key for remote button identifier %d", remoteButtonIdentifier);
+#endif
+ break;
+ }
+
+ NSNumber* modifiersCfg = [[NSUserDefaults standardUserDefaults] objectForKey: [NSString stringWithFormat: @"mac.remotecontrols.GlobalKeyboardDevice.%@_modifiers", defaultsKey]];
+ NSNumber* keycodeCfg = [[NSUserDefaults standardUserDefaults] objectForKey: [NSString stringWithFormat: @"mac.remotecontrols.GlobalKeyboardDevice.%@_keycode", defaultsKey]];
+
+ unsigned int modifiers = defaultModifiers;
+ if (modifiersCfg) modifiers = [modifiersCfg unsignedIntValue];
+
+ unsigned int keycode = defaultKeycode;
+ if (keycodeCfg) keycode = [keycodeCfg unsignedIntValue];
+
+ [self registerHotKeyCode: keycode modifiers: modifiers remoteEventIdentifier: remoteButtonIdentifier];
+}
+
+- (void) setListeningToRemote: (BOOL) value {
+ if (value == [self isListeningToRemote]) return;
+ if (value) {
+ [self startListening: self];
+ } else {
+ [self stopListening: self];
+ }
+}
+- (BOOL) isListeningToRemote {
+ return (eventHandlerRef!=NULL);
+}
+
+- (void) startListening: (id) sender {
+
+ if (eventHandlerRef) return;
+
+ EventTypeSpec eventSpec[2] = {
+ { kEventClassKeyboard, kEventHotKeyPressed },
+ { kEventClassKeyboard, kEventHotKeyReleased }
+ };
+
+ InstallEventHandler( GetEventDispatcherTarget(),
+ (EventHandlerProcPtr)hotKeyEventHandler,
+ 2, eventSpec, self, &eventHandlerRef);
+}
+- (void) stopListening: (id) sender {
+ RemoveEventHandler(eventHandlerRef);
+ eventHandlerRef = NULL;
+}
+
+- (BOOL) sendsEventForButtonIdentifier: (RemoteControlEventIdentifier) identifier {
+ NSEnumerator* values = [hotKeyRemoteEventMapping objectEnumerator];
+ NSNumber* remoteIdentifier;
+ while( (remoteIdentifier = [values nextObject]) ) {
+ if ([remoteIdentifier unsignedIntValue] == identifier) return YES;
+ }
+ return NO;
+}
+
++ (const char*) remoteControlDeviceName {
+ return "Keyboard";
+}
+
+- (BOOL)registerHotKeyCode: (unsigned int) keycode modifiers: (unsigned int) modifiers remoteEventIdentifier: (RemoteControlEventIdentifier) identifier {
+ OSStatus err;
+ EventHotKeyID hotKeyID;
+ EventHotKeyRef carbonHotKey;
+
+ hotKeyID.signature = 'PTHk';
+ hotKeyID.id = (long)keycode;
+
+ err = RegisterEventHotKey(keycode, modifiers, hotKeyID, GetEventDispatcherTarget(), 0, &carbonHotKey );
+
+ if( err )
+ return NO;
+
+ [hotKeyRemoteEventMapping setObject: [NSNumber numberWithInt:identifier] forKey: [NSNumber numberWithUnsignedInt: hotKeyID.id]];
+
+ return YES;
+}
+/*
+- (void)unregisterHotKey: (PTHotKey*)hotKey
+{
+ OSStatus err;
+ EventHotKeyRef carbonHotKey;
+ NSValue* key;
+
+ if( [[self allHotKeys] containsObject: hotKey] == NO )
+ return;
+
+ carbonHotKey = [self _carbonHotKeyForHotKey: hotKey];
+ NSAssert( carbonHotKey != nil, @"" );
+
+ err = UnregisterEventHotKey( carbonHotKey );
+ //Watch as we ignore 'err':
+
+ key = [NSValue valueWithPointer: carbonHotKey];
+ [mHotKeys removeObjectForKey: key];
+
+ [self _updateEventHandler];
+
+ //See that? Completely ignored
+}
+*/
+
+- (RemoteControlEventIdentifier) remoteControlEventIdentifierForID: (unsigned int) id {
+ NSNumber* remoteEventIdentifier = [hotKeyRemoteEventMapping objectForKey:[NSNumber numberWithUnsignedInt: id]];
+ return [remoteEventIdentifier unsignedIntValue];
+}
+
+- (void) sendRemoteButtonEvent: (RemoteControlEventIdentifier) event pressedDown: (BOOL) pressedDown {
+ [delegate sendRemoteButtonEvent: event pressedDown: pressedDown remoteControl:self];
+}
+
+static RemoteControlEventIdentifier lastEvent;
+
+
+static OSStatus hotKeyEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEvent, void* userData )
+{
+ GlobalKeyboardDevice* keyboardDevice = (GlobalKeyboardDevice*) userData;
+ EventHotKeyID hkCom;
+ GetEventParameter(inEvent,kEventParamDirectObject,typeEventHotKeyID,NULL,sizeof(hkCom),NULL,&hkCom);
+
+ RemoteControlEventIdentifier identifier = [keyboardDevice remoteControlEventIdentifierForID:hkCom.id];
+ if (identifier == 0) return noErr;
+
+ BOOL pressedDown = YES;
+ if (identifier != lastEvent) {
+ lastEvent = identifier;
+ } else {
+ lastEvent = 0;
+ pressedDown = NO;
+ }
+ [keyboardDevice sendRemoteButtonEvent: identifier pressedDown: pressedDown];
+
+ return noErr;
+}
+
+@end
diff --git a/apple_remote/HIDRemoteControlDevice.m b/apple_remote/HIDRemoteControlDevice.m
new file mode 100644
index 000000000000..94215900717b
--- /dev/null
+++ b/apple_remote/HIDRemoteControlDevice.m
@@ -0,0 +1,518 @@
+/*****************************************************************************
+ * HIDRemoteControlDevice.m
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same license
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import "HIDRemoteControlDevice.h"
+
+#import <mach/mach.h>
+#import <mach/mach_error.h>
+#import <IOKit/IOKitLib.h>
+#import <IOKit/IOCFPlugIn.h>
+#import <IOKit/hid/IOHIDKeys.h>
+#import <Carbon/Carbon.h>
+
+@interface HIDRemoteControlDevice (PrivateMethods)
+- (NSDictionary*) cookieToButtonMapping; // Creates the dictionary using the magics, depending on the remote
+- (IOHIDQueueInterface**) queue;
+- (IOHIDDeviceInterface**) hidDeviceInterface;
+- (void) handleEventWithCookieString: (NSString*) cookieString sumOfValues: (SInt32) sumOfValues;
+- (void) removeNotifcationObserver;
+- (void) remoteControlAvailable:(NSNotification *)notification;
+
+@end
+
+@interface HIDRemoteControlDevice (IOKitMethods)
++ (io_object_t) findRemoteDevice;
+- (IOHIDDeviceInterface**) createInterfaceForDevice: (io_object_t) hidDevice;
+- (BOOL) initializeCookies;
+- (BOOL) openDevice;
+@end
+
+@implementation HIDRemoteControlDevice
+
++ (const char*) remoteControlDeviceName {
+ return "";
+}
+
++ (BOOL) isRemoteAvailable {
+ io_object_t hidDevice = [self findRemoteDevice];
+ if (hidDevice != 0) {
+ IOObjectRelease(hidDevice);
+ return YES;
+ } else {
+ return NO;
+ }
+}
+
+- (id) initWithDelegate: (id) _remoteControlDelegate {
+ if ([[self class] isRemoteAvailable] == NO) return nil;
+
+ if ( (self = [super initWithDelegate: _remoteControlDelegate]) ) {
+ openInExclusiveMode = YES;
+ queue = NULL;
+ hidDeviceInterface = NULL;
+ cookieToButtonMapping = [[NSMutableDictionary alloc] init];
+
+ [self setCookieMappingInDictionary: cookieToButtonMapping];
+
+ NSEnumerator* enumerator = [cookieToButtonMapping objectEnumerator];
+ NSNumber* identifier;
+ supportedButtonEvents = 0;
+ while( (identifier = [enumerator nextObject]) ) {
+ supportedButtonEvents |= [identifier intValue];
+ }
+
+ fixSecureEventInputBug = [[NSUserDefaults standardUserDefaults] boolForKey: @"remoteControlWrapperFixSecureEventInputBug"];
+ }
+
+ return self;
+}
+
+- (void) dealloc {
+ [self removeNotifcationObserver];
+ [self stopListening:self];
+ [cookieToButtonMapping release];
+ [super dealloc];
+}
+
+- (void) sendRemoteButtonEvent: (RemoteControlEventIdentifier) event pressedDown: (BOOL) pressedDown {
+ [delegate sendRemoteButtonEvent: event pressedDown: pressedDown remoteControl:self];
+}
+
+- (void) setCookieMappingInDictionary: (NSMutableDictionary*) cookieToButtonMapping {
+}
+- (int) remoteIdSwitchCookie {
+ return 0;
+}
+
+- (BOOL) sendsEventForButtonIdentifier: (RemoteControlEventIdentifier) identifier {
+ return (supportedButtonEvents & identifier) == identifier;
+}
+
+- (BOOL) isListeningToRemote {
+ return (hidDeviceInterface != NULL && allCookies != NULL && queue != NULL);
+}
+
+- (void) setListeningToRemote: (BOOL) value {
+ if (value == NO) {
+ [self stopListening:self];
+ } else {
+ [self startListening:self];
+ }
+}
+
+- (BOOL) isOpenInExclusiveMode {
+ return openInExclusiveMode;
+}
+- (void) setOpenInExclusiveMode: (BOOL) value {
+ openInExclusiveMode = value;
+}
+
+- (BOOL) processesBacklog {
+ return processesBacklog;
+}
+- (void) setProcessesBacklog: (BOOL) value {
+ processesBacklog = value;
+}
+
+- (void) startListening: (id) sender {
+ if ([self isListeningToRemote]) return;
+
+ // 4th July 2007
+ //
+ // A security update in february of 2007 introduced an odd behavior.
+ // Whenever SecureEventInput is activated or deactivated the exclusive access
+ // to the remote control device is lost. This leads to very strange behavior where
+ // a press on the Menu button activates FrontRow while your app still gets the event.
+ // A great number of people have complained about this.
+ //
+ // Enabling the SecureEventInput and keeping it enabled does the trick.
+ //
+ // I'm pretty sure this is a kind of bug at Apple and I'm in contact with the responsible
+ // Apple Engineer. This solution is not a perfect one - I know.
+ // One of the side effects is that applications that listen for special global keyboard shortcuts (like Quicksilver)
+ // may get into problems as they no longer get the events.
+ // As there is no official Apple Remote API from Apple I also failed to open a technical incident on this.
+ //
+ // Note that there is a corresponding DisableSecureEventInput in the stopListening method below.
+ //
+ if ([self isOpenInExclusiveMode] && fixSecureEventInputBug) EnableSecureEventInput();
+
+ [self removeNotifcationObserver];
+
+ io_object_t hidDevice = [[self class] findRemoteDevice];
+ if (hidDevice == 0) return;
+
+ if ([self createInterfaceForDevice:hidDevice] == NULL) {
+ goto error;
+ }
+
+ if ([self initializeCookies]==NO) {
+ goto error;
+ }
+
+ if ([self openDevice]==NO) {
+ goto error;
+ }
+ // be KVO friendly
+ [self willChangeValueForKey:@"listeningToRemote"];
+ [self didChangeValueForKey:@"listeningToRemote"];
+ goto cleanup;
+
+error:
+ [self stopListening:self];
+ DisableSecureEventInput();
+
+cleanup:
+ IOObjectRelease(hidDevice);
+}
+
+- (void) stopListening: (id) sender {
+ if ([self isListeningToRemote]==NO) return;
+
+ BOOL sendNotification = NO;
+
+ if (eventSource != NULL) {
+ CFRunLoopRemoveSource(CFRunLoopGetCurrent(), eventSource, kCFRunLoopDefaultMode);
+ CFRelease(eventSource);
+ eventSource = NULL;
+ }
+ if (queue != NULL) {
+ (*queue)->stop(queue);
+
+ //dispose of queue
+ (*queue)->dispose(queue);
+
+ //release the queue we allocated
+ (*queue)->Release(queue);
+
+ queue = NULL;
+
+ sendNotification = YES;
+ }
+
+ if (allCookies != nil) {
+ [allCookies autorelease];
+ allCookies = nil;
+ }
+
+ if (hidDeviceInterface != NULL) {
+ //close the device
+ (*hidDeviceInterface)->close(hidDeviceInterface);
+
+ //release the interface
+ (*hidDeviceInterface)->Release(hidDeviceInterface);
+
+ hidDeviceInterface = NULL;
+ }
+
+ if ([self isOpenInExclusiveMode] && fixSecureEventInputBug) DisableSecureEventInput();
+
+ if ([self isOpenInExclusiveMode] && sendNotification) {
+ [[self class] sendFinishedNotifcationForAppIdentifier: nil];
+ }
+ // be KVO friendly
+ [self willChangeValueForKey:@"listeningToRemote"];
+ [self didChangeValueForKey:@"listeningToRemote"];
+}
+
+@end
+
+@implementation HIDRemoteControlDevice (PrivateMethods)
+
+- (IOHIDQueueInterface**) queue {
+ return queue;
+}
+
+- (IOHIDDeviceInterface**) hidDeviceInterface {
+ return hidDeviceInterface;
+}
+
+
+- (NSDictionary*) cookieToButtonMapping {
+ return cookieToButtonMapping;
+}
+
+- (NSString*) validCookieSubstring: (NSString*) cookieString {
+ if (cookieString == nil || [cookieString length] == 0) return nil;
+ NSEnumerator* keyEnum = [[self cookieToButtonMapping] keyEnumerator];
+ NSString* key;
+ while( (key = [keyEnum nextObject]) ) {
+ NSRange range = [cookieString rangeOfString:key];
+ if (range.location == 0) return key;
+ }
+ return nil;
+}
+
+- (void) handleEventWithCookieString: (NSString*) cookieString sumOfValues: (SInt32) sumOfValues {
+ /*
+ if (previousRemainingCookieString) {
+ cookieString = [previousRemainingCookieString stringByAppendingString: cookieString];
+ NSLog(@"New cookie string is %@", cookieString);
+ [previousRemainingCookieString release], previousRemainingCookieString=nil;
+ }*/
+ if (cookieString == nil || [cookieString length] == 0) return;
+
+ NSNumber* buttonId = [[self cookieToButtonMapping] objectForKey: cookieString];
+ if (buttonId != nil) {
+ [self sendRemoteButtonEvent: [buttonId intValue] pressedDown: (sumOfValues>0)];
+ } else {
+ // let's see if a number of events are stored in the cookie string. this does
+ // happen when the main thread is too busy to handle all incoming events in time.
+ NSString* subCookieString;
+ NSString* lastSubCookieString=nil;
+ while( (subCookieString = [self validCookieSubstring: cookieString]) ) {
+ cookieString = [cookieString substringFromIndex: [subCookieString length]];
+ lastSubCookieString = subCookieString;
+ if (processesBacklog) [self handleEventWithCookieString: subCookieString sumOfValues:sumOfValues];
+ }
+ if (processesBacklog == NO && lastSubCookieString != nil) {
+ // process the last event of the backlog and assume that the button is not pressed down any longer.
+ // The events in the backlog do not seem to be in order and therefore (in rare cases) the last event might be
+ // a button pressed down event while in reality the user has released it.
+ // NSLog(@"processing last event of backlog");
+ [self handleEventWithCookieString: lastSubCookieString sumOfValues:0];
+ }
+ if ([cookieString length] > 0) {
+ NSLog(@"Unknown button for cookiestring %@", cookieString);
+ }
+ }
+}
+
+- (void) removeNotifcationObserver {
+ [[NSDistributedNotificationCenter defaultCenter] removeObserver:self name:FINISHED_USING_REMOTE_CONTROL_NOTIFICATION object:nil];
+}
+
+- (void) remoteControlAvailable:(NSNotification *)notification {
+ [self removeNotifcationObserver];
+ [self startListening: self];
+}
+
+@end
+
+/* Callback method for the device queue
+Will be called for any event of any type (cookie) to which we subscribe
+*/
+static void QueueCallbackFunction(void* target, IOReturn result, void* refcon, void* sender) {
+ if (target < 0) {
+ NSLog(@"QueueCallbackFunction called with invalid target!");
+ return;
+ }
+ NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+
+ HIDRemoteControlDevice* remote = (HIDRemoteControlDevice*)target;
+ IOHIDEventStruct event;
+ AbsoluteTime zeroTime = {0,0};
+ NSMutableString* cookieString = [NSMutableString string];
+ SInt32 sumOfValues = 0;
+ while (result == kIOReturnSuccess)
+ {
+ result = (*[remote queue])->getNextEvent([remote queue], &event, zeroTime, 0);
+ if ( result != kIOReturnSuccess )
+ continue;
+
+ //printf("%d %d %d\n", event.elementCookie, event.value, event.longValue);
+
+ if (((int)event.elementCookie)!=5) {
+ sumOfValues+=event.value;
+ [cookieString appendString:[NSString stringWithFormat:@"%d_", event.elementCookie]];
+ }
+ }
+ [remote handleEventWithCookieString: cookieString sumOfValues: sumOfValues];
+
+ [pool release];
+}
+
+@implementation HIDRemoteControlDevice (IOKitMethods)
+
+- (IOHIDDeviceInterface**) createInterfaceForDevice: (io_object_t) hidDevice {
+ io_name_t className;
+ IOCFPlugInInterface** plugInInterface = NULL;
+ HRESULT plugInResult = S_OK;
+ SInt32 score = 0;
+ IOReturn ioReturnValue = kIOReturnSuccess;
+
+ hidDeviceInterface = NULL;
+
+ ioReturnValue = IOObjectGetClass(hidDevice, className);
+
+ if (ioReturnValue != kIOReturnSuccess) {
+ NSLog(@"Error: Failed to get class name.");
+ return NULL;
+ }
+
+ ioReturnValue = IOCreatePlugInInterfaceForService(hidDevice,
+ kIOHIDDeviceUserClientTypeID,
+ kIOCFPlugInInterfaceID,
+ &plugInInterface,
+ &score);
+ if (ioReturnValue == kIOReturnSuccess)
+ {
+ //Call a method of the intermediate plug-in to create the device interface
+ plugInResult = (*plugInInterface)->QueryInterface(plugInInterface, CFUUIDGetUUIDBytes(kIOHIDDeviceInterfaceID), (LPVOID) &hidDeviceInterface);
+
+ if (plugInResult != S_OK) {
+ NSLog(@"Error: Couldn't create HID class device interface");
+ }
+ // Release
+ if (plugInInterface) (*plugInInterface)->Release(plugInInterface);
+ }
+ return hidDeviceInterface;
+}
+
+- (BOOL) initializeCookies {
+ IOHIDDeviceInterface122** handle = (IOHIDDeviceInterface122**)hidDeviceInterface;
+ IOHIDElementCookie cookie;
+ long usage;
+ long usagePage;
+ id object;
+ NSArray* elements = nil;
+ NSDictionary* element;
+ IOReturn success;
+
+ if (!handle || !(*handle)) return NO;
+
+ // Copy all elements, since we're grabbing most of the elements
+ // for this device anyway, and thus, it's faster to iterate them
+ // ourselves. When grabbing only one or two elements, a matching
+ // dictionary should be passed in here instead of NULL.
+ success = (*handle)->copyMatchingElements(handle, NULL, (CFArrayRef*)&elements);
+
+ if (success == kIOReturnSuccess) {
+
+ [elements autorelease];
+ /*
+ cookies = calloc(NUMBER_OF_APPLE_REMOTE_ACTIONS, sizeof(IOHIDElementCookie));
+ memset(cookies, 0, sizeof(IOHIDElementCookie) * NUMBER_OF_APPLE_REMOTE_ACTIONS);
+ */
+ allCookies = [[NSMutableArray alloc] init];
+
+ NSEnumerator *elementsEnumerator = [elements objectEnumerator];
+
+ while ( (element = [elementsEnumerator nextObject]) ) {
+ //Get cookie
+ object = [element valueForKey: (NSString*)CFSTR(kIOHIDElementCookieKey) ];
+ if (object == nil || ![object isKindOfClass:[NSNumber class]]) continue;
+ if (object == 0 || CFGetTypeID(object) != CFNumberGetTypeID()) continue;
+ cookie = (IOHIDElementCookie) [object longValue];
+
+ //Get usage
+ object = [element valueForKey: (NSString*)CFSTR(kIOHIDElementUsageKey) ];
+ if (object == nil || ![object isKindOfClass:[NSNumber class]]) continue;
+ usage = [object longValue];
+
+ //Get usage page
+ object = [element valueForKey: (NSString*)CFSTR(kIOHIDElementUsagePageKey) ];
+ if (object == nil || ![object isKindOfClass:[NSNumber class]]) continue;
+ usagePage = [object longValue];
+
+ [allCookies addObject: [NSNumber numberWithInt:(int)cookie]];
+ }
+ } else {
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL) openDevice {
+ HRESULT result;
+
+ IOHIDOptionsType openMode = kIOHIDOptionsTypeNone;
+ if ([self isOpenInExclusiveMode]) openMode = kIOHIDOptionsTypeSeizeDevice;
+ IOReturn ioReturnValue = (*hidDeviceInterface)->open(hidDeviceInterface, openMode);
+
+ if (ioReturnValue == KERN_SUCCESS) {
+ queue = (*hidDeviceInterface)->allocQueue(hidDeviceInterface);
+ if (queue) {
+ result = (*queue)->create(queue, 0, 12); //depth: maximum number of elements in queue before oldest elements in queue begin to be lost.
+
+ IOHIDElementCookie cookie;
+ NSEnumerator *allCookiesEnumerator = [allCookies objectEnumerator];
+
+ while ( (cookie = (IOHIDElementCookie)[[allCookiesEnumerator nextObject] intValue]) ) {
+ (*queue)->addElement(queue, cookie, 0);
+ }
+
+ // add callback for async events
+ ioReturnValue = (*queue)->createAsyncEventSource(queue, &eventSource);
+ if (ioReturnValue == KERN_SUCCESS) {
+ ioReturnValue = (*queue)->setEventCallout(queue,QueueCallbackFunction, self, NULL);
+ if (ioReturnValue == KERN_SUCCESS) {
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), eventSource, kCFRunLoopDefaultMode);
+
+ //start data delivery to queue
+ (*queue)->start(queue);
+ return YES;
+ } else {
+ NSLog(@"Error when setting event callback");
+ }
+ } else {
+ NSLog(@"Error when creating async event source");
+ }
+ } else {
+ NSLog(@"Error when opening device");
+ }
+ } else if (ioReturnValue == kIOReturnExclusiveAccess) {
+ // the device is used exclusive by another application
+
+ // 1. we register for the FINISHED_USING_REMOTE_CONTROL_NOTIFICATION notification
+ [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(remoteControlAvailable:) name:FINISHED_USING_REMOTE_CONTROL_NOTIFICATION object:nil];
+
+ // 2. send a distributed notification that we wanted to use the remote control
+ [[self class] sendRequestForRemoteControlNotification];
+ }
+ return NO;
+}
+
++ (io_object_t) findRemoteDevice {
+ CFMutableDictionaryRef hidMatchDictionary = NULL;
+ IOReturn ioReturnValue = kIOReturnSuccess;
+ io_iterator_t hidObjectIterator = 0;
+ io_object_t hidDevice = 0;
+
+ // Set up a matching dictionary to search the I/O Registry by class
+ // name for all HID class devices
+ hidMatchDictionary = IOServiceMatching([self remoteControlDeviceName]);
+
+ // Now search I/O Registry for matching devices.
+ ioReturnValue = IOServiceGetMatchingServices(kIOMasterPortDefault, hidMatchDictionary, &hidObjectIterator);
+
+ if ((ioReturnValue == kIOReturnSuccess) && (hidObjectIterator != 0)) {
+ hidDevice = IOIteratorNext(hidObjectIterator);
+ }
+
+ // release the iterator
+ IOObjectRelease(hidObjectIterator);
+
+ return hidDevice;
+}
+
+@end
+
diff --git a/apple_remote/KeyspanFrontRowControl.m b/apple_remote/KeyspanFrontRowControl.m
new file mode 100644
index 000000000000..dd86475b12b1
--- /dev/null
+++ b/apple_remote/KeyspanFrontRowControl.m
@@ -0,0 +1,97 @@
+/*****************************************************************************
+ * KeyspanFrontRowControl.m
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import "KeyspanFrontRowControl.h"
+#import <mach/mach.h>
+#import <mach/mach_error.h>
+#import <IOKit/IOKitLib.h>
+#import <IOKit/IOCFPlugIn.h>
+#import <IOKit/hid/IOHIDKeys.h>
+
+@implementation KeyspanFrontRowControl
+
+- (void) setCookieMappingInDictionary: (NSMutableDictionary*) _cookieToButtonMapping {
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlus] forKey:@"11_18_99_10_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMinus] forKey:@"11_18_98_10_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu] forKey:@"11_18_58_10_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay] forKey:@"11_18_61_10_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight] forKey:@"11_18_96_10_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft] forKey:@"11_18_97_10_"];
+ /* hold events are not being send by this device
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight_Hold] forKey:@"14_6_4_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft_Hold] forKey:@"14_6_3_2_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu_Hold] forKey:@"14_6_14_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay_Sleep] forKey:@"18_14_6_18_14_6_"];
+ [_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteControl_Switched] forKey:@"19_"];
+ */
+}
+
++ (io_object_t) findRemoteDevice {
+ CFMutableDictionaryRef hidMatchDictionary = NULL;
+ IOReturn ioReturnValue = kIOReturnSuccess;
+ io_iterator_t hidObjectIterator = 0;
+ io_object_t hidDevice = 0;
+ SInt32 idVendor = 1741;
+ SInt32 idProduct = 0x420;
+
+ // Set up a matching dictionary to search the I/O Registry by class
+ // name for all HID class devices
+ hidMatchDictionary = IOServiceMatching(kIOHIDDeviceKey);
+
+ CFNumberRef numberRefVendor = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &idVendor);
+ if ( numberRefVendor )
+ {
+ CFDictionaryAddValue(hidMatchDictionary, CFSTR(kIOHIDVendorIDKey), numberRefVendor);
+ CFRelease(numberRefVendor);
+ }
+
+ CFNumberRef numberRefProduct = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &idProduct);
+ if ( numberRefProduct )
+ {
+ CFDictionaryAddValue(hidMatchDictionary, CFSTR(kIOHIDProductIDKey), numberRefProduct);
+ CFRelease(numberRefProduct);
+ }
+
+ // Now search I/O Registry for matching devices.
+ ioReturnValue = IOServiceGetMatchingServices(kIOMasterPortDefault, hidMatchDictionary, &hidObjectIterator);
+
+ if ((ioReturnValue == kIOReturnSuccess) && (hidObjectIterator != 0)) {
+ hidDevice = IOIteratorNext(hidObjectIterator);
+ }
+
+ // release the iterator
+ if ( hidObjectIterator )
+ IOObjectRelease(hidObjectIterator);
+
+ return hidDevice;
+
+}
+
+@end
diff --git a/apple_remote/MultiClickRemoteBehavior.m b/apple_remote/MultiClickRemoteBehavior.m
new file mode 100644
index 000000000000..03b24978d93b
--- /dev/null
+++ b/apple_remote/MultiClickRemoteBehavior.m
@@ -0,0 +1,213 @@
+/*****************************************************************************
+ * MultiClickRemoteBehavior.m
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import "MultiClickRemoteBehavior.h"
+
+const NSTimeInterval DEFAULT_MAXIMUM_CLICK_TIME_DIFFERENCE = 0.35;
+const NSTimeInterval HOLD_RECOGNITION_TIME_INTERVAL = 0.4;
+
+@implementation MultiClickRemoteBehavior
+
+- (id) init {
+ if ( (self = [super init]) ) {
+ maxClickTimeDifference = DEFAULT_MAXIMUM_CLICK_TIME_DIFFERENCE;
+ }
+ return self;
+}
+
+// Delegates are not retained!
+// http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/chapter_6_section_4.html
+// Delegating objects do not (and should not) retain their delegates.
+// However, clients of delegating objects (applications, usually) are responsible for ensuring that their delegates are around
+// to receive delegation messages. To do this, they may have to retain the delegate.
+- (void) setDelegate: (id) _delegate {
+ if ( _delegate && ( [_delegate respondsToSelector:@selector(remoteButton:pressedDown:clickCount:)] == NO )) return; // return what ?
+
+ delegate = _delegate;
+}
+- (id) delegate {
+ return delegate;
+}
+
+- (BOOL) simulateHoldEvent {
+ return simulateHoldEvents;
+}
+- (void) setSimulateHoldEvent: (BOOL) value {
+ simulateHoldEvents = value;
+}
+
+- (BOOL) simulatesHoldForButtonIdentifier: (RemoteControlEventIdentifier) identifier remoteControl: (RemoteControl*) remoteControl {
+ // we do that check only for the normal button identifiers as we would check for hold support for hold events instead
+ if (identifier > (1 << EVENT_TO_HOLD_EVENT_OFFSET)) return NO;
+
+ return [self simulateHoldEvent] && [remoteControl sendsEventForButtonIdentifier: (identifier << EVENT_TO_HOLD_EVENT_OFFSET)]==NO;
+}
+
+- (BOOL) clickCountingEnabled {
+ return clickCountEnabledButtons != 0;
+}
+- (void) setClickCountingEnabled: (BOOL) value {
+ if (value) {
+ [self setClickCountEnabledButtons: kRemoteButtonPlus | kRemoteButtonMinus | kRemoteButtonPlay | kRemoteButtonLeft | kRemoteButtonRight | kRemoteButtonMenu];
+ } else {
+ [self setClickCountEnabledButtons: 0];
+ }
+}
+
+- (unsigned int) clickCountEnabledButtons {
+ return clickCountEnabledButtons;
+}
+- (void) setClickCountEnabledButtons: (unsigned int)value {
+ clickCountEnabledButtons = value;
+}
+
+- (NSTimeInterval) maximumClickCountTimeDifference {
+ return maxClickTimeDifference;
+}
+- (void) setMaximumClickCountTimeDifference: (NSTimeInterval) timeDiff {
+ maxClickTimeDifference = timeDiff;
+}
+
+- (void) sendSimulatedHoldEvent: (id) time {
+ BOOL startSimulateHold = NO;
+ RemoteControlEventIdentifier event = lastHoldEvent;
+ @synchronized(self) {
+ startSimulateHold = (lastHoldEvent>0 && lastHoldEventTime == [time doubleValue]);
+ }
+ if (startSimulateHold) {
+ lastEventSimulatedHold = YES;
+ event = (event << EVENT_TO_HOLD_EVENT_OFFSET);
+ [delegate remoteButton:event pressedDown: YES clickCount: 1];
+ }
+}
+
+- (void) executeClickCountEvent: (NSArray*) values {
+ RemoteControlEventIdentifier event = [[values objectAtIndex: 0] unsignedIntValue];
+ NSTimeInterval eventTimePoint = [[values objectAtIndex: 1] doubleValue];
+
+ BOOL finishedClicking = NO;
+ int finalClickCount = eventClickCount;
+
+ @synchronized(self) {
+ finishedClicking = (event != lastClickCountEvent || eventTimePoint == lastClickCountEventTime);
+ if (finishedClicking) {
+ eventClickCount = 0;
+ lastClickCountEvent = 0;
+ lastClickCountEventTime = 0;
+ }
+ }
+
+ if (finishedClicking) {
+ [delegate remoteButton:event pressedDown: YES clickCount:finalClickCount];
+ // trigger a button release event, too
+ [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow:0.1]];
+ [delegate remoteButton:event pressedDown: NO clickCount:finalClickCount];
+ }
+}
+
+- (void) sendRemoteButtonEvent: (RemoteControlEventIdentifier) event pressedDown: (BOOL) pressedDown remoteControl: (RemoteControl*) remoteControl {
+ if (!delegate) return;
+
+ BOOL clickCountingForEvent = ([self clickCountEnabledButtons] & event) == event;
+
+ if ([self simulatesHoldForButtonIdentifier: event remoteControl: remoteControl] && lastClickCountEvent==0) {
+ if (pressedDown) {
+ // wait to see if it is a hold
+ lastHoldEvent = event;
+ lastHoldEventTime = [NSDate timeIntervalSinceReferenceDate];
+ [self performSelector:@selector(sendSimulatedHoldEvent:)
+ withObject:[NSNumber numberWithDouble:lastHoldEventTime]
+ afterDelay:HOLD_RECOGNITION_TIME_INTERVAL];
+ return;
+ } else {
+ if (lastEventSimulatedHold) {
+ // it was a hold
+ // send an event for "hold release"
+ event = (event << EVENT_TO_HOLD_EVENT_OFFSET);
+ lastHoldEvent = 0;
+ lastEventSimulatedHold = NO;
+
+ [delegate remoteButton:event pressedDown: pressedDown clickCount:1];
+ return;
+ } else {
+ RemoteControlEventIdentifier previousEvent = lastHoldEvent;
+ @synchronized(self) {
+ lastHoldEvent = 0;
+ }
+
+ // in case click counting is enabled we have to setup the state for that, too
+ if (clickCountingForEvent) {
+ lastClickCountEvent = previousEvent;
+ lastClickCountEventTime = lastHoldEventTime;
+ NSNumber* eventNumber;
+ NSNumber* timeNumber;
+ eventClickCount = 1;
+ timeNumber = [NSNumber numberWithDouble:lastClickCountEventTime];
+ eventNumber= [NSNumber numberWithUnsignedInt:previousEvent];
+ NSTimeInterval diffTime = maxClickTimeDifference-([NSDate timeIntervalSinceReferenceDate]-lastHoldEventTime);
+ [self performSelector: @selector(executeClickCountEvent:)
+ withObject: [NSArray arrayWithObjects:eventNumber, timeNumber, nil]
+ afterDelay: diffTime];
+ // we do not return here because we are still in the press-release event
+ // that will be consumed below
+ } else {
+ // trigger the pressed down event that we consumed first
+ [delegate remoteButton:event pressedDown: YES clickCount:1];
+ }
+ }
+ }
+ }
+
+ if (clickCountingForEvent) {
+ if (pressedDown == NO) return;
+
+ NSNumber* eventNumber;
+ NSNumber* timeNumber;
+ @synchronized(self) {
+ lastClickCountEventTime = [NSDate timeIntervalSinceReferenceDate];
+ if (lastClickCountEvent == event) {
+ eventClickCount = eventClickCount + 1;
+ } else {
+ eventClickCount = 1;
+ }
+ lastClickCountEvent = event;
+ timeNumber = [NSNumber numberWithDouble:lastClickCountEventTime];
+ eventNumber= [NSNumber numberWithUnsignedInt:event];
+ }
+ [self performSelector: @selector(executeClickCountEvent:)
+ withObject: [NSArray arrayWithObjects:eventNumber, timeNumber, nil]
+ afterDelay: maxClickTimeDifference];
+ } else {
+ [delegate remoteButton:event pressedDown: pressedDown clickCount:1];
+ }
+
+}
+
+@end
diff --git a/apple_remote/RemoteControl.m b/apple_remote/RemoteControl.m
new file mode 100644
index 000000000000..d0812d384b3e
--- /dev/null
+++ b/apple_remote/RemoteControl.m
@@ -0,0 +1,146 @@
+/*****************************************************************************
+ * RemoteControl.m
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import "RemoteControl.h"
+
+// notifaction names that are being used to signal that an application wants to
+// have access to the remote control device or if the application has finished
+// using the remote control device
+NSString* REQUEST_FOR_REMOTE_CONTROL_NOTIFCATION = @"mac.remotecontrols.RequestForRemoteControl";
+NSString* FINISHED_USING_REMOTE_CONTROL_NOTIFICATION = @"mac.remotecontrols.FinishedUsingRemoteControl";
+
+// keys used in user objects for distributed notifications
+NSString* kRemoteControlDeviceName = @"RemoteControlDeviceName";
+NSString* kApplicationIdentifier = @"CFBundleIdentifier";
+// bundle identifier of the application that should get access to the remote control
+// this key is being used in the FINISHED notification only
+NSString* kTargetApplicationIdentifier = @"TargetBundleIdentifier";
+
+
+@implementation RemoteControl
+
+// returns nil if the remote control device is not available
+- (id) initWithDelegate: (id) _remoteControlDelegate {
+ if ( (self = [super init]) ) {
+ delegate = [_remoteControlDelegate retain];
+#ifdef DEBUG
+ NSLog(@"RemoteControl initWithDelegate ok");
+#endif
+ }
+ return self;
+}
+
+- (void) dealloc {
+ [delegate release];
+ [super dealloc];
+}
+
+- (void) setListeningToRemote: (BOOL) value {
+#ifdef DEBUG
+ NSLog(@"setListeningToRemote ok");
+#endif
+}
+- (BOOL) isListeningToRemote {
+ return NO;
+}
+
+- (void) startListening: (id) sender {
+#ifdef DEBUG
+ NSLog(@"startListening ok");
+#endif
+}
+- (void) stopListening: (id) sender {
+#ifdef DEBUG
+ NSLog(@"stopListening ok");
+#endif
+}
+
+- (BOOL) isOpenInExclusiveMode {
+ return YES;
+}
+- (void) setOpenInExclusiveMode: (BOOL) value {
+}
+
+- (BOOL) sendsEventForButtonIdentifier: (RemoteControlEventIdentifier) identifier {
+#ifdef DEBUG
+ NSLog(@"sending event for button identifier \n");
+#endif
+ return YES;
+}
+
++ (void) sendDistributedNotification: (NSString*) notificationName targetBundleIdentifier: (NSString*) targetIdentifier
+{
+ if ( (self = [super init]) ) {
+ NSDictionary* userInfo = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithCString:[self remoteControlDeviceName] encoding:NSASCIIStringEncoding],
+ kRemoteControlDeviceName /* key = RemoteControlDeviceName -> OK */,
+ [[NSBundle mainBundle] bundleIdentifier] /* value = org.openoffice.script -> OK */,
+ kApplicationIdentifier/* key = CFBundleIdentifier -> OK */,
+ targetIdentifier /*value = AppleIRController -> OK */,
+ kTargetApplicationIdentifier /*targetBundleIdentifier -> does not appear, since the peer is nil*/,
+ nil];
+#ifdef DEBUG
+ // Debug purpose: returns all the existing dictionary keys.
+ NSString *s;
+ NSEnumerator *e = [userInfo keyEnumerator];
+ while ( (s = [e nextObject]) ) {
+ NSLog(@"key = %@ ",s);
+ }
+ NSEnumerator *f = [userInfo objectEnumerator ];
+ while ( (s = [f nextObject]) ) {
+ NSLog(@"value = %@ ",s);
+ }
+ NSLog(@"sendDistributedNotification ...");
+#endif
+
+ [[NSDistributedNotificationCenter defaultCenter] postNotificationName:notificationName
+ object:nil
+ userInfo:userInfo
+ deliverImmediately:YES];
+ }
+}
+
++ (void) sendFinishedNotifcationForAppIdentifier: (NSString*) identifier {
+ [self sendDistributedNotification:FINISHED_USING_REMOTE_CONTROL_NOTIFICATION targetBundleIdentifier:identifier];
+#ifdef DEBUG
+ NSLog(@"sendFinishedNotifcationForAppIdentifier ...");
+#endif
+}
++ (void) sendRequestForRemoteControlNotification {
+ [self sendDistributedNotification:REQUEST_FOR_REMOTE_CONTROL_NOTIFCATION targetBundleIdentifier:nil];
+#ifdef DEBUG
+ NSLog(@"sendRequestForRemoteControlNotification ...");
+#endif
+}
+
++ (const char*) remoteControlDeviceName {
+ return NULL;
+}
+
+@end
diff --git a/apple_remote/RemoteControlContainer.m b/apple_remote/RemoteControlContainer.m
new file mode 100644
index 000000000000..40a222f2d829
--- /dev/null
+++ b/apple_remote/RemoteControlContainer.m
@@ -0,0 +1,140 @@
+/*****************************************************************************
+ * RemoteControlContainer.m
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import "RemoteControlContainer.h"
+
+@implementation RemoteControlContainer
+
+- (id) initWithDelegate: (id) _remoteControlDelegate {
+ if ( (self = [super initWithDelegate:_remoteControlDelegate]) ) {
+ remoteControls = [[NSMutableArray alloc] init];
+#ifdef DEBUG
+ NSLog(@"RemoteControlContainer initWithDelegate ok");
+ }
+ else {
+ NSLog(@"RemoteControlContainer initWithDelegate failed");
+#endif
+ }
+
+ return self;
+}
+
+- (void) dealloc {
+ [self stopListening: self];
+ [remoteControls release];
+ [super dealloc];
+}
+
+- (BOOL) instantiateAndAddRemoteControlDeviceWithClass: (Class) clazz {
+ BOOL toReturn = NO;
+ RemoteControl* remoteControl = [[clazz alloc] initWithDelegate: delegate];
+ if (remoteControl) {
+ [remoteControls addObject: remoteControl];
+ [remoteControl addObserver: self forKeyPath:@"listeningToRemote" options:NSKeyValueObservingOptionNew context:nil];
+ toReturn = YES;
+ }
+#ifdef DEBUG
+ else {
+ NSLog(@"RemoteControlContainer instantiateAndAddRemoteControlDeviceWithClass failed");
+ toReturn = NO;
+ }
+#endif
+ return toReturn;
+}
+
+- (unsigned int) count {
+ return [remoteControls count];
+}
+
+- (void) reset {
+ [self willChangeValueForKey:@"listeningToRemote"];
+ [self didChangeValueForKey:@"listeningToRemote"];
+#ifdef DEBUG
+ // debug purpose
+ NSLog(@"reset... (after listening to remote)");
+#endif
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
+ [self reset];
+}
+
+- (void) setListeningToRemote: (BOOL) value {
+ int i;
+ for(i=0; i < [remoteControls count]; i++) {
+ [[remoteControls objectAtIndex: i] setListeningToRemote: value];
+ }
+ if (value && value != [self isListeningToRemote]) [self performSelector:@selector(reset) withObject:nil afterDelay:0.01];
+}
+- (BOOL) isListeningToRemote {
+ int i;
+ for(i=0; i < [remoteControls count]; i++) {
+ if ([[remoteControls objectAtIndex: i] isListeningToRemote]) {
+ return YES;
+ }
+ }
+ return NO;
+}
+
+- (void) startListening: (id) sender {
+#ifdef DEBUG
+ NSLog(@"startListening to events... ");
+#endif
+ int i;
+ for(i=0; i < [remoteControls count]; i++) {
+ [[remoteControls objectAtIndex: i] startListening: sender];
+ }
+}
+- (void) stopListening: (id) sender {
+#ifdef DEBUG
+ NSLog(@"stopListening to events... ");
+#endif
+ int i;
+ for(i=0; i < [remoteControls count]; i++) {
+ [[remoteControls objectAtIndex: i] stopListening: sender];
+ }
+}
+
+- (BOOL) isOpenInExclusiveMode {
+ BOOL mode = YES;
+ int i;
+ for(i=0; i < [remoteControls count]; i++) {
+ mode = mode && ([[remoteControls objectAtIndex: i] isOpenInExclusiveMode]);
+ }
+ return mode;
+}
+- (void) setOpenInExclusiveMode: (BOOL) value {
+ int i;
+ for(i=0; i < [remoteControls count]; i++) {
+ [[remoteControls objectAtIndex: i] setOpenInExclusiveMode:value];
+ }
+}
+
+@end
diff --git a/apple_remote/RemoteMainController.m b/apple_remote/RemoteMainController.m
new file mode 100644
index 000000000000..5b3b893adafc
--- /dev/null
+++ b/apple_remote/RemoteMainController.m
@@ -0,0 +1,177 @@
+/*****************************************************************************
+ * RemoteMainController.m
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import "RemoteMainController.h"
+#import "AppleRemote.h"
+#import "KeyspanFrontRowControl.h"
+#import "GlobalKeyboardDevice.h"
+#import "RemoteControlContainer.h"
+#import "MultiClickRemoteBehavior.h"
+
+// -------------------------------------------------------------------------------------------
+// Sample Code 3: Multi Click Behavior and Hold Event Simulation
+// -------------------------------------------------------------------------------------------
+
+@implementation MainController
+
+- (id) init {
+ self = [super init]; // because we redefined our own init instead of use the fu..nny awakeFromNib
+ if (self != nil) {
+
+ // 1. instantiate the desired behavior for the remote control device
+ remoteControlBehavior = [[MultiClickRemoteBehavior alloc] init];
+
+ // 2. configure the behavior
+ [remoteControlBehavior setDelegate: self];
+
+ // 3. a Remote Control Container manages a number of devices and conforms to the RemoteControl interface
+ // Therefore you can enable or disable all the devices of the container with a single "startListening:" call.
+ RemoteControlContainer* container = [[RemoteControlContainer alloc] initWithDelegate: remoteControlBehavior];
+
+ if ( [container instantiateAndAddRemoteControlDeviceWithClass: [AppleRemote class]] != 0 ) {
+#ifdef DEBUG
+ NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [AppleRemote class]] successfull");
+ }
+ else {
+ NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [AppleRemote class]] failed");
+#endif
+ }
+
+ if ( [container instantiateAndAddRemoteControlDeviceWithClass: [KeyspanFrontRowControl class]] != 0 ) {
+#ifdef DEBUG
+ NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [KeyspanFrontRowControl class]] successfull");
+ }
+ else {
+ NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [KeyspanFrontRowControl class]] failed");
+#endif
+ }
+
+ if ( [container instantiateAndAddRemoteControlDeviceWithClass: [GlobalKeyboardDevice class]] != 0 ) {
+#ifdef DEBUG
+ NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [GlobalKeyboardDevice class]] successfull");
+ }
+ else {
+ NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [GlobalKeyboardDevice class]] failed");
+#endif
+ }
+ // to give the binding mechanism a chance to see the change of the attribute
+ [self setValue: container forKey: @"remoteControl"];
+#ifdef DEBUG
+ NSLog(@"MainController init done");
+#endif
+ }
+ else
+ NSLog(@"MainController init failed");
+ return self;
+}
+
+- (void) postTheEvent: (short int)buttonIdentifier modifierFlags:(int)modifierFlags
+{
+ [NSApp postEvent:
+ [NSEvent otherEventWithType:NSApplicationDefined
+ location:NSZeroPoint
+ modifierFlags:modifierFlags
+ timestamp: 0
+ windowNumber:[[NSApp keyWindow] windowNumber]
+ context:nil
+ subtype:AppleRemoteControlEvent
+ data1: buttonIdentifier
+ data2: 0]
+ atStart: NO];
+}
+
+
+- (void) remoteButton: (RemoteControlEventIdentifier)buttonIdentifier pressedDown: (BOOL) pressedDown clickCount: (unsigned int)clickCount
+{
+ NSString* pressed = @"";
+#ifdef DEBUG
+ NSString* buttonName = nil;
+#endif
+ if (pressedDown)
+ {
+ pressed = @"(pressed)";
+
+#ifdef DEBUG
+ switch(buttonIdentifier)
+ {
+ case kRemoteButtonPlus: buttonName = @"Volume up"; break; // MEDIA_COMMAND_VOLUME_UP ( see vcl/inc/vcl/cmdevt.hxx )
+ case kRemoteButtonMinus: buttonName = @"Volume down"; break; // MEDIA_COMMAND_VOLUME_DOWN
+ case kRemoteButtonMenu: buttonName = @"Menu"; break; // MEDIA_COMMAND_MENU
+ case kRemoteButtonPlay: buttonName = @"Play"; break; // MEDIA_COMMAND_PLAY
+ case kRemoteButtonRight: buttonName = @"Next slide"; break; // MEDIA_COMMAND_NEXTTRACK
+ case kRemoteButtonLeft: buttonName = @"Left"; break; // MEDIA_COMMAND_PREVIOUSTRACK
+ case kRemoteButtonRight_Hold: buttonName = @"Last slide"; break; // MEDIA_COMMAND_NEXTTRACK_HOLD
+ case kRemoteButtonLeft_Hold: buttonName = @"First slide"; break; // MEDIA_COMMAND_PREVIOUSTRACK_HOLD
+ case kRemoteButtonPlus_Hold: buttonName = @"Volume up holding"; break;
+ case kRemoteButtonMinus_Hold: buttonName = @"Volume down holding"; break;
+ case kRemoteButtonPlay_Hold: buttonName = @"Play (sleep mode)"; break; // MEDIA_COMMAND_PLAY_HOLD
+ case kRemoteButtonMenu_Hold: buttonName = @"Menu (long)"; break; // MEDIA_COMMAND_MENU_HOLD
+ case kRemoteControl_Switched: buttonName = @"Remote Control Switched";break;
+
+ default: NSLog(@"Unmapped event for button %d", buttonIdentifier); break;
+ }
+#endif
+ [ self postTheEvent:buttonIdentifier modifierFlags: 0 ];
+ }
+ else // not pressed
+ {
+ pressed = @"(released)";
+ }
+
+#ifdef DEBUG
+ //NSLog(@"Button %@ pressed %@", buttonName, pressed);
+ NSString* clickCountString = @"";
+ if (clickCount > 1) clickCountString = [NSString stringWithFormat: @"%d clicks", clickCount];
+ NSString* feedbackString = [NSString stringWithFormat:@"(Value:%4d) %@ %@ %@",buttonIdentifier, buttonName, pressed, clickCountString];
+
+ // print out events
+ NSLog(@"%@", feedbackString);
+
+ if (pressedDown == NO) printf("\n");
+ // simulate slow processing of events
+ // [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.5]];
+#endif
+}
+
+- (void) dealloc {
+ [remoteControl autorelease];
+ [remoteControlBehavior autorelease];
+ [super dealloc];
+}
+
+// for bindings access
+- (RemoteControl*) remoteControl {
+ return remoteControl;
+}
+
+- (MultiClickRemoteBehavior*) remoteBehavior {
+ return remoteControlBehavior;
+}
+
+@end \ No newline at end of file
diff --git a/apple_remote/inc/AppleRemote.h b/apple_remote/inc/AppleRemote.h
new file mode 100644
index 000000000000..aeb32f9f3892
--- /dev/null
+++ b/apple_remote/inc/AppleRemote.h
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * RemoteControlWrapper.h
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same license
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+#import "HIDRemoteControlDevice.h"
+
+/* Interacts with the Apple Remote Control HID device
+ The class is not thread safe
+*/
+@interface AppleRemote : HIDRemoteControlDevice {
+}
+
+@end
diff --git a/apple_remote/inc/GlobalKeyboardDevice.h b/apple_remote/inc/GlobalKeyboardDevice.h
new file mode 100644
index 000000000000..8e2aede3f34c
--- /dev/null
+++ b/apple_remote/inc/GlobalKeyboardDevice.h
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * GlobalKeyboardDevice.h
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same license
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+#import <Carbon/Carbon.h>
+
+#import "RemoteControl.h"
+
+
+/*
+ This class registers for a number of global keyboard shortcuts to simulate a remote control
+ */
+
+@interface GlobalKeyboardDevice : RemoteControl {
+
+ NSMutableDictionary* hotKeyRemoteEventMapping;
+ EventHandlerRef eventHandlerRef;
+
+}
+
+- (void) mapRemoteButton: (RemoteControlEventIdentifier) remoteButtonIdentifier defaultKeycode: (unsigned int) defaultKeycode defaultModifiers: (unsigned int) defaultModifiers;
+
+- (BOOL)registerHotKeyCode: (unsigned int) keycode modifiers: (unsigned int) modifiers remoteEventIdentifier: (RemoteControlEventIdentifier) identifier;
+
+
+
+@end
diff --git a/apple_remote/inc/HIDRemoteControlDevice.h b/apple_remote/inc/HIDRemoteControlDevice.h
new file mode 100644
index 000000000000..622441fce83c
--- /dev/null
+++ b/apple_remote/inc/HIDRemoteControlDevice.h
@@ -0,0 +1,67 @@
+/*****************************************************************************
+ * HIDRemoteControlDevice.h
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same license
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+#import <IOKit/hid/IOHIDLib.h>
+
+#import "RemoteControl.h"
+
+/*
+ Base class for HID based remote control devices
+ */
+@interface HIDRemoteControlDevice : RemoteControl {
+ IOHIDDeviceInterface** hidDeviceInterface; // see IOKit/hid/IOHIDLib.h
+ IOHIDQueueInterface** queue; // IOKit/hid/IOHIDLib.h
+ NSMutableArray* allCookies;
+ NSMutableDictionary* cookieToButtonMapping;
+ CFRunLoopSourceRef eventSource;
+
+ BOOL fixSecureEventInputBug;
+ BOOL openInExclusiveMode;
+ BOOL processesBacklog;
+
+ int supportedButtonEvents;
+}
+
+// When your application needs to much time on the main thread when processing an event other events
+// may already be received which are put on a backlog. As soon as your main thread
+// has some spare time this backlog is processed and may flood your delegate with calls.
+// Backlog processing is turned off by default.
+- (BOOL) processesBacklog;
+- (void) setProcessesBacklog: (BOOL) value;
+
+// methods that should be overwritten by subclasses
+- (void) setCookieMappingInDictionary: (NSMutableDictionary*) cookieToButtonMapping;
+
+- (void) sendRemoteButtonEvent: (RemoteControlEventIdentifier) event pressedDown: (BOOL) pressedDown;
+
++ (BOOL) isRemoteAvailable;
+
+@end
diff --git a/apple_remote/inc/KeyspanFrontRowControl.h b/apple_remote/inc/KeyspanFrontRowControl.h
new file mode 100644
index 000000000000..a67ce4a96111
--- /dev/null
+++ b/apple_remote/inc/KeyspanFrontRowControl.h
@@ -0,0 +1,42 @@
+/*****************************************************************************
+ * KeyspanFrontRowControl.h
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+
+#import <Cocoa/Cocoa.h>
+#import "HIDRemoteControlDevice.h"
+
+/* Interacts with the Keyspan FrontRow Remote Control HID device
+ The class is not thread safe
+*/
+@interface KeyspanFrontRowControl : HIDRemoteControlDevice {
+
+}
+
+@end
diff --git a/apple_remote/inc/MultiClickRemoteBehavior.h b/apple_remote/inc/MultiClickRemoteBehavior.h
new file mode 100644
index 000000000000..9cffa35fae2f
--- /dev/null
+++ b/apple_remote/inc/MultiClickRemoteBehavior.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+ * MultiClickRemoteBehavior.h
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+
+#import <Cocoa/Cocoa.h>
+#import "RemoteControl.h"
+
+/**
+ A behavior that adds multiclick and hold events on top of a device.
+ Events are generated and send to a delegate
+ */
+@interface MultiClickRemoteBehavior : NSObject {
+ id delegate;
+
+ // state for simulating plus/minus hold
+ BOOL simulateHoldEvents;
+ BOOL lastEventSimulatedHold;
+ RemoteControlEventIdentifier lastHoldEvent;
+ NSTimeInterval lastHoldEventTime;
+
+ // state for multi click
+ unsigned int clickCountEnabledButtons;
+ NSTimeInterval maxClickTimeDifference;
+ NSTimeInterval lastClickCountEventTime;
+ RemoteControlEventIdentifier lastClickCountEvent;
+ unsigned int eventClickCount;
+}
+
+- (id) init;
+
+// Delegates are not retained
+- (void) setDelegate: (id) delegate;
+- (id) delegate;
+
+// Simulating hold events does deactivate sending of individual requests for pressed down/released.
+// Instead special hold events are being triggered when the user is pressing and holding a button for a small period.
+// Simulation is activated only for those buttons and remote control that do not have a seperate event already
+- (BOOL) simulateHoldEvent;
+- (void) setSimulateHoldEvent: (BOOL) value;
+
+// click counting makes it possible to recognize if the user has pressed a button repeatedly
+// click counting does delay each event as it has to wait if there is another event (second click)
+// therefore there is a slight time difference (maximumClickCountTimeDifference) between a single click
+// of the user and the call of your delegate method
+// click counting can be enabled individually for specific buttons. Use the property clickCountEnableButtons to
+// set the buttons for which click counting shall be enabled
+- (BOOL) clickCountingEnabled;
+- (void) setClickCountingEnabled: (BOOL) value;
+
+- (unsigned int) clickCountEnabledButtons;
+- (void) setClickCountEnabledButtons: (unsigned int)value;
+
+// the maximum time difference till which clicks are recognized as multi clicks
+- (NSTimeInterval) maximumClickCountTimeDifference;
+- (void) setMaximumClickCountTimeDifference: (NSTimeInterval) timeDiff;
+
+@end
+
+/*
+ * Method definitions for the delegate of the MultiClickRemoteBehavior class
+ */
+@interface NSObject(MultiClickRemoteBehaviorDelegate)
+
+- (void) remoteButton: (RemoteControlEventIdentifier)buttonIdentifier pressedDown: (BOOL) pressedDown clickCount: (unsigned int) count;
+
+@end
diff --git a/apple_remote/inc/RemoteControl.h b/apple_remote/inc/RemoteControl.h
new file mode 100644
index 000000000000..cbf8fd856235
--- /dev/null
+++ b/apple_remote/inc/RemoteControl.h
@@ -0,0 +1,105 @@
+/*****************************************************************************
+ * RemoteControl.h
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+// notifaction names that are being used to signal that an application wants to
+// have access to the remote control device or if the application has finished
+// using the remote control device
+extern NSString* REQUEST_FOR_REMOTE_CONTROL_NOTIFCATION;
+extern NSString* FINISHED_USING_REMOTE_CONTROL_NOTIFICATION;
+
+// keys used in user objects for distributed notifications
+extern NSString* kRemoteControlDeviceName;
+extern NSString* kApplicationIdentifier;
+extern NSString* kTargetApplicationIdentifier;
+
+// we have a 6 bit offset to make a hold event out of a normal event
+#define EVENT_TO_HOLD_EVENT_OFFSET 6
+
+@class RemoteControl;
+
+typedef enum _RemoteControlEventIdentifier {
+ // normal events
+ kRemoteButtonPlus =1<<1,
+ kRemoteButtonMinus =1<<2,
+ kRemoteButtonMenu =1<<3,
+ kRemoteButtonPlay =1<<4,
+ kRemoteButtonRight =1<<5,
+ kRemoteButtonLeft =1<<6,
+
+ // hold events
+ kRemoteButtonPlus_Hold =1<<7,
+ kRemoteButtonMinus_Hold =1<<8,
+ kRemoteButtonMenu_Hold =1<<9,
+ kRemoteButtonPlay_Hold =1<<10,
+ kRemoteButtonRight_Hold =1<<11,
+ kRemoteButtonLeft_Hold =1<<12,
+
+ // special events (not supported by all devices)
+ kRemoteControl_Switched =1<<13,
+} RemoteControlEventIdentifier;
+
+@interface NSObject(RemoteControlDelegate)
+
+- (void) sendRemoteButtonEvent: (RemoteControlEventIdentifier) event pressedDown: (BOOL) pressedDown remoteControl: (RemoteControl*) remoteControl;
+
+@end
+
+/*
+ Base Interface for Remote Control devices
+*/
+@interface RemoteControl : NSObject {
+ id delegate;
+}
+
+// returns nil if the remote control device is not available
+- (id) initWithDelegate: (id) remoteControlDelegate;
+
+- (void) setListeningToRemote: (BOOL) value;
+- (BOOL) isListeningToRemote;
+
+- (BOOL) isOpenInExclusiveMode;
+- (void) setOpenInExclusiveMode: (BOOL) value;
+
+- (void) startListening: (id) sender;
+- (void) stopListening: (id) sender;
+
+// is this remote control sending the given event?
+- (BOOL) sendsEventForButtonIdentifier: (RemoteControlEventIdentifier) identifier;
+
+// sending of notifications between applications
++ (void) sendFinishedNotifcationForAppIdentifier: (NSString*) identifier;
++ (void) sendRequestForRemoteControlNotification;
+
+// name of the device
++ (const char*) remoteControlDeviceName;
+
+@end
diff --git a/apple_remote/inc/RemoteControlContainer.h b/apple_remote/inc/RemoteControlContainer.h
new file mode 100644
index 000000000000..f6cd40ba1178
--- /dev/null
+++ b/apple_remote/inc/RemoteControlContainer.h
@@ -0,0 +1,41 @@
+/*****************************************************************************
+ * RemoteControlContainer.h
+ * RemoteControlWrapper
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+#import "RemoteControl.h"
+
+@interface RemoteControlContainer : RemoteControl {
+ NSMutableArray* remoteControls;
+}
+
+- (BOOL) instantiateAndAddRemoteControlDeviceWithClass: (Class) clazz;
+- (unsigned int) count;
+
+@end
diff --git a/apple_remote/inc/RemoteMainController.h b/apple_remote/inc/RemoteMainController.h
new file mode 100644
index 000000000000..7143f1f1eda9
--- /dev/null
+++ b/apple_remote/inc/RemoteMainController.h
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * RemoteMainController.h
+ *
+ *
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Copyright (c) 2006 martinkahr.com. All rights reserved.
+ *
+ * Code modified and adapted to OpenOffice.org
+ * by Eric Bachard on 11.08.2008 under the same License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+#define AppleRemoteControlEvent 15
+
+@class RemoteControl;
+@class MultiClickRemoteBehavior;
+
+//static void sendTheEvent( unichar, int );
+
+@interface MainController : NSObject {
+@public // else remoteControl is not reachable from GetSalData()->mpMainController
+ RemoteControl* remoteControl;
+@private
+ MultiClickRemoteBehavior* remoteControlBehavior;
+}
+- (RemoteControl*) remoteControl;
+- (MultiClickRemoteBehavior*) remoteBehavior;
+
+@end
diff --git a/apple_remote/makefile.mk b/apple_remote/makefile.mk
new file mode 100644
index 000000000000..d261d5192708
--- /dev/null
+++ b/apple_remote/makefile.mk
@@ -0,0 +1,82 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=.
+
+PRJNAME=external
+TARGET=AppleRemote
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+.IF "$(GUIBASE)"!="aqua"
+
+dummy:
+ @echo "Nothing to build for GUIBASE $(GUIBASE)"
+
+.ELSE # "$(GUIBASE)"!="aqua"
+
+SHL1STDLIBS+= \
+ -framework Cocoa -framework Carbon -framework IOKit
+
+LIB1FILES+= \
+ $(SLB)$/AppleRemote.lib
+
+SLOFILES= \
+ $(SLO)$/KeyspanFrontRowControl.obj \
+ $(SLO)$/AppleRemote.obj \
+ $(SLO)$/RemoteControl.obj \
+ $(SLO)$/RemoteControlContainer.obj \
+ $(SLO)$/GlobalKeyboardDevice.obj \
+ $(SLO)$/HIDRemoteControlDevice.obj \
+ $(SLO)$/MultiClickRemoteBehavior.obj \
+ $(SLO)$/RemoteMainController.obj
+
+SHL1TARGET= $(TARGET)$(DLLPOSTFIX)
+SHL1OBJS= $(SLOFILES)
+
+OUT2INC = \
+ $(BUILDDIR)$/KeyspaFrontRowControl.h \
+ $(BUILDDIR)$/AppleRemote.h \
+ $(BUILDDIR)$/RemoteControl.h \
+ $(BUILDDIR)$/RemoteControlContainer.h \
+ $(BUILDDIR)$/GlobalKeyboardDevice.h \
+ $(BUILDDIR)$/HIDRemoteControlDevice.h \
+ $(BUILDDIR)$/MultiClickRemoteBehavior.h \
+ $(BUILDDIR)$/RemoteMainController.h
+
+
+.ENDIF # "$(GUIBASE)"!="aqua"
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/apple_remote/prj/build.lst b/apple_remote/prj/build.lst
new file mode 100644
index 000000000000..ff4ee577408a
--- /dev/null
+++ b/apple_remote/prj/build.lst
@@ -0,0 +1,2 @@
+apr apple_remote : solenv soltools NULL
+apr apple_remote nmake - u apr_aprem NULL
diff --git a/apple_remote/prj/d.lst b/apple_remote/prj/d.lst
new file mode 100644
index 000000000000..ef6dd4613f43
--- /dev/null
+++ b/apple_remote/prj/d.lst
@@ -0,0 +1,5 @@
+mkdir: %_DEST%\inc%_EXT%\apple_remote
+..\inc\*.h %_DEST%\inc%_EXT%\apple_remote\*
+
+..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
+
diff --git a/autodoc/inc/ary/actions.hxx b/autodoc/inc/ary/actions.hxx
new file mode 100644
index 000000000000..5e2536ccd063
--- /dev/null
+++ b/autodoc/inc/ary/actions.hxx
@@ -0,0 +1,105 @@
+/* -*- 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 ARY_ACTIONS_HXX
+#define ARY_ACTIONS_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+ class RepositoryCenter;
+
+
+/*
+enum E_Action
+{
+ action_Parse,
+ action_SecondaryProductions,
+ action_Save,
+ action_Load,
+ action_ReadyForRead
+};
+*/
+
+
+/** @resp
+ Performs such commands on the repository, which refer to
+ large parts of it.
+
+ @collab ::ary::Repository
+ and its components and derivates.
+ @descr
+ This class works in kind of double dispatch way:
+
+ // Client code:
+ Command_Xy aMyCommand;
+ ary::Repository::The_().PerformCommand( aMyCommand );
+
+ // Repository_Implementation::PerformCommand() code:
+ aMyCommand.Run(*this);
+
+ // Command_Xy::Run(Repository_Implementation & rRepository) code:
+ rRepository.Run_Command_Xy(*this);
+*/
+class Command
+{
+ public:
+ virtual ~Command() {}
+
+ void Run(
+ n22::RepositoryCenter &
+ io_rReposy );
+ private:
+ virtual void do_Run(
+ n22::RepositoryCenter &
+ io_rReposy ) = 0;
+};
+
+
+// IMPLEMENTATION
+
+inline void
+Command::Run(n22::RepositoryCenter & io_rReposy)
+ { do_Run(io_rReposy); }
+
+
+} // namespace ary
+
+
+#endif
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/ary.hxx b/autodoc/inc/ary/ary.hxx
new file mode 100644
index 000000000000..d15ed4d83f66
--- /dev/null
+++ b/autodoc/inc/ary/ary.hxx
@@ -0,0 +1,93 @@
+/* -*- 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 ARY_ARY_HXX
+#define ARY_ARY_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+
+namespace ary
+{
+namespace idl
+{
+ class Gate;
+}
+
+namespace cpp
+{
+ class Gate;
+}
+}
+
+
+
+namespace ary
+{
+
+/** Starting point for all work with the
+ Autodoc Sourcecode Repository.
+
+ Create and destroy the repository and
+ give access to the "Gates" for different tasks.
+
+ @collab ::ary::cpp::Gate
+ @collab ::ary::idl::Gate
+*/
+
+class Repository
+{
+ public:
+ // LIFECYCLE
+ virtual ~Repository() {}
+ static DYN Repository &
+ Create_();
+ // INQUIRY
+ virtual const String &
+ Title() const = 0;
+ virtual const ::ary::cpp::Gate &
+ Gate_Cpp() const = 0;
+ virtual const ::ary::idl::Gate &
+ Gate_Idl() const = 0;
+ // ACCESS
+ virtual ::ary::cpp::Gate &
+ Gate_Cpp() = 0;
+ virtual ::ary::idl::Gate &
+ Gate_Idl() = 0;
+ virtual void Set_Title(
+ const String & i_sName ) = 0;
+};
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/ary_disp.hxx b/autodoc/inc/ary/ary_disp.hxx
new file mode 100644
index 000000000000..566f3209be20
--- /dev/null
+++ b/autodoc/inc/ary/ary_disp.hxx
@@ -0,0 +1,114 @@
+/* -*- 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 ARY_ARY_DISP_HXX
+#define ARY_ARY_DISP_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/types.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class Gate;
+}
+
+class Display : public csv::ProcessorIfc
+{
+ public:
+ virtual ~Display() {}
+
+ // OPERATIONS
+ void StartSlot();
+ void FinishSlot();
+
+ /** This method depends on the result of Get_ReFinder().
+ If Get_ReFinder() != 0, then DisplayGate::Find_Re() is called
+ and if valid, cpp::CppEntity::Accept( *this ) is called.
+ If Get_ReFinder() == 0, simply do_DisplaySlot_Rid() is called
+ with just the id as parameter.
+ */
+ void DisplaySlot_Rid(
+ ary::Rid i_nId );
+// void DisplaySlot_Lid(
+// ary::Lid i_nId );
+ /** This method depends on the result of Get_ReFinder().
+ If Get_ReFinder() != 0, then DisplayGate::Find_Re() is called
+ and if valid, cpp::CppEntity::Accept( *this ) is called.
+ If Get_ReFinder() == 0, simply do_DisplaySlot_LocalCe() is called
+ with just the id as parameter.
+ */
+ void DisplaySlot_LocalCe(
+ ary::cpp::Ce_id i_nId,
+ const String & i_sName );
+ // INQUIRY
+ const cpp::Gate * Get_ReFinder() const;
+
+ private:
+ virtual void do_StartSlot();
+ virtual void do_FinishSlot();
+
+
+ virtual void do_DisplaySlot_Rid(
+ ary::Rid i_nId );
+ virtual void do_DisplaySlot_LocalCe(
+ ary::cpp::Ce_id i_nId,
+ const String & i_sName );
+ virtual const cpp::Gate *
+ inq_Get_ReFinder() const = 0;
+};
+
+
+// IMPLEMENTATION
+
+
+inline void
+Display::StartSlot()
+ { do_StartSlot(); }
+inline void
+Display::FinishSlot()
+ { do_FinishSlot(); }
+inline const cpp::Gate *
+Display::Get_ReFinder() const
+ { return inq_Get_ReFinder(); }
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/arygroup.hxx b/autodoc/inc/ary/arygroup.hxx
new file mode 100644
index 000000000000..1acb07e076dc
--- /dev/null
+++ b/autodoc/inc/ary/arygroup.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ARY_ARYGROUP_HXX
+#define ARY_ARYGROUP_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/types.hxx>
+
+
+namespace ary
+{
+namespace cpp
+{
+ class CppEntity;
+}
+
+class Slot;
+
+namespace group
+{
+ typedef std::vector< SlotAccessId > SlotList;
+}
+}
+
+
+
+
+namespace ary
+{
+
+
+
+class AryGroup
+{
+ public:
+ // LIFECYCLE
+ virtual ~AryGroup() {}
+
+ // INQUIRY
+ Gid Id_Group() const;
+ const cpp::CppEntity &
+ RE_Group() const;
+ const group::SlotList &
+ Slots() const;
+ DYN Slot * Create_Slot(
+ SlotAccessId i_nSlot ) const;
+
+
+ private:
+ virtual Gid inq_Id_Group() const = 0;
+ virtual const cpp::CppEntity &
+ inq_RE_Group() const = 0;
+ virtual const group::SlotList &
+ inq_Slots() const = 0;
+ virtual DYN Slot * inq_Create_Slot(
+ SlotAccessId i_nSlot ) const = 0;
+};
+
+
+
+// IMPLEMENTATION
+inline Gid
+AryGroup::Id_Group() const
+ { return inq_Id_Group(); }
+inline const cpp::CppEntity &
+AryGroup::RE_Group() const
+ { return inq_RE_Group(); }
+inline const group::SlotList &
+AryGroup::Slots() const
+ { return inq_Slots(); }
+inline DYN Slot *
+AryGroup::Create_Slot( SlotAccessId i_nSlot ) const
+ { return inq_Create_Slot(i_nSlot); }
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/ceslot.hxx b/autodoc/inc/ary/ceslot.hxx
new file mode 100644
index 000000000000..ae0beb2d3f14
--- /dev/null
+++ b/autodoc/inc/ary/ceslot.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 ARY_CESLOT_HXX
+#define ARY_CESLOT_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+
+class Display;
+
+/** Unterscheidungen von Slots
+
+ Slots:
+ - ReadWrite or ReadOnly
+ - ContentType
+ - Groups
+ - MemberLink 'EnumValue from Enum' or 'Class from Namespace'
+ - MemberData 'Parameter from Operation'
+ - SimpleLink
+ - CommentedLink 'Baseclass from Class'
+ - DefaultCommentedLink 'Class from GlobaIndex'
+*/
+
+class Slot
+{
+ public:
+ virtual ~Slot() {}
+
+ virtual void StoreAt(
+ Display & o_rDestination ) const;
+ virtual uintt Size() const = 0;
+
+ private:
+ virtual void StoreEntries(
+ Display & o_rDestination ) const = 0;
+};
+
+class Slot_AutoPtr
+{
+ public:
+ Slot_AutoPtr(
+ Slot * i_pSlot = 0 )
+ : pSlot(i_pSlot) {}
+ ~Slot_AutoPtr() { if (pSlot != 0) delete pSlot; }
+
+ Slot_AutoPtr & operator=(
+ Slot * i_pSlot )
+ { if (pSlot != 0) delete pSlot;
+ pSlot = i_pSlot;
+ return *this; }
+ operator bool() const { return pSlot != 0; }
+
+ const Slot & operator*() { csv_assert(pSlot != 0);
+ return *pSlot; }
+ const Slot * operator->() { csv_assert(pSlot != 0);
+ return pSlot; }
+
+ private:
+ // Forbidden functions
+ Slot_AutoPtr(const Slot_AutoPtr &);
+ Slot_AutoPtr & operator=(const Slot_AutoPtr &);
+
+ // DATA
+ Slot * pSlot;
+};
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cessentl.hxx b/autodoc/inc/ary/cessentl.hxx
new file mode 100644
index 000000000000..cc402ae25eac
--- /dev/null
+++ b/autodoc/inc/ary/cessentl.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ARY_CESSENTL_HXX
+#define ARY_CESSENTL_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/loc/loc_types4loc.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+class CeEssentials
+{ // Non inline functions are implemented in ceworker.cxx .
+ public:
+ // LIFECYCLE
+ CeEssentials();
+ CeEssentials(
+ const String & i_sLocalName,
+ Ce_id i_nOwner,
+ loc::Le_id i_nLocation );
+ ~CeEssentials();
+ // INQUIRY
+ const String & LocalName() const;
+ Ce_id Owner() const;
+ loc::Le_id Location() const;
+
+ // ACCESS
+ private:
+ String sLocalName;
+ Ce_id nOwner;
+ loc::Le_id nLocation;
+};
+
+
+
+// IMPLEMENTATION
+inline const String &
+CeEssentials::LocalName() const
+ { return sLocalName; }
+inline Ce_id
+CeEssentials::Owner() const
+ { return nOwner; }
+inline loc::Le_id
+CeEssentials::Location() const
+ { return nLocation; }
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_builtintype.hxx b/autodoc/inc/ary/cpp/c_builtintype.hxx
new file mode 100644
index 000000000000..0fff94d1e5fc
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_builtintype.hxx
@@ -0,0 +1,100 @@
+/* -*- 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 ARY_CPP_C_BUILTINTYPE_HXX
+#define ARY_CPP_C_BUILTINTYPE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_type.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** Represents types like void, int, double.
+*/
+class BuiltInType : public Type
+{
+ public:
+ enum E_ClassId { class_id = 1200 };
+
+ BuiltInType(
+ const String & i_sName,
+ E_TypeSpecialisation
+ i_Specialisation );
+
+ String SpecializedName() const;
+
+ static String SpecializedName_(
+ const char * i_sName,
+ E_TypeSpecialisation
+ i_eTypeSpecialisation );
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface Type:
+ virtual bool inq_IsConst() const;
+ virtual void inq_Get_Text(
+ StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const Gate & i_rGate ) const;
+ // DATA
+ String sName;
+ E_TypeSpecialisation
+ eSpecialisation;
+};
+
+
+
+inline String
+BuiltInType::SpecializedName() const
+{
+ return SpecializedName_(sName, eSpecialisation);
+}
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_ce.hxx b/autodoc/inc/ary/cpp/c_ce.hxx
new file mode 100644
index 000000000000..5f7e6353e90a
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_ce.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 ARY_CPP_C_CE_HXX
+#define ARY_CPP_C_CE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_cppentity.hxx>
+ // COMPONENTS
+#include <ary/doc/d_docu.hxx>
+ // PARAMETERS
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_traits.hxx>
+#include <ary/loc/loc_types4loc.hxx>
+
+
+namespace ary
+{
+namespace cpp
+{
+
+typedef loc::Le_id Lid;
+
+
+
+/** Represents a C++ code entity.
+*/
+class CodeEntity : public ary::cpp::CppEntity
+{
+ public:
+ typedef Ce_Traits traits_t;
+
+ // LIFECYCLE
+ virtual ~CodeEntity() {}
+
+ // INQUIRY
+ Ce_id CeId() const { return Ce_id(Id()); }
+ const String & LocalName() const;
+ Cid Owner() const;
+ Lid Location() const;
+ bool IsVisible() const;
+
+ // ACCESS
+ void Set_InVisible() { bIsVisible = false; }
+
+ protected:
+ CodeEntity() : bIsVisible(true) {}
+
+ private:
+ // Locals
+ virtual const String &
+ inq_LocalName() const = 0;
+ virtual Cid inq_Owner() const = 0;
+ virtual Lid inq_Location() const = 0;
+
+ // DATA
+ mutable bool bIsVisible;
+};
+
+
+// IMPLEMENTATION
+inline const String &
+CodeEntity::LocalName() const
+ { return inq_LocalName(); }
+inline Cid
+CodeEntity::Owner() const
+ { return inq_Owner(); }
+inline Lid
+CodeEntity::Location() const
+ { return inq_Location(); }
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_class.hxx b/autodoc/inc/ary/cpp/c_class.hxx
new file mode 100644
index 000000000000..49b75b72902f
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_class.hxx
@@ -0,0 +1,248 @@
+/* -*- 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 ARY_CPP_C_CLASS_HXX
+#define ARY_CPP_C_CLASS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_ce.hxx>
+#include <ary/arygroup.hxx>
+ // OTHER
+#include <ary/symtreenode.hxx>
+#include <ary/cessentl.hxx>
+#include <ary/sequentialids.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_slntry.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class Enum;
+ class Typedef;
+ class Function;
+ class Variable;
+}
+}
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** A C++ class.
+*/
+class Class : public CodeEntity,
+ public AryGroup
+{
+ public:
+ enum E_ClassId { class_id = 1001 };
+
+ enum E_Slots
+ {
+ SLOT_Bases = 1,
+ SLOT_NestedClasses,
+ SLOT_Enums,
+ SLOT_Typedefs,
+ SLOT_Operations,
+ SLOT_StaticOperations,
+ SLOT_Data,
+ SLOT_StaticData,
+ SLOT_FriendClasses,
+ SLOT_FriendOperations
+ };
+
+ typedef ::ary::symtree::Node<CeNode_Traits> node_t;
+
+
+ // LIFECYCLE
+ Class(
+ const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ loc::Le_id i_nFile,
+ E_ClassKey i_eClassKey );
+ ~Class();
+
+ // OPERATIONS
+ void Add_BaseClass(
+ const S_Classes_Base &
+ i_rBaseClass );
+ void Add_TemplateParameterType(
+ const String & i_sLocalName,
+ Type_id i_nIdAsType );
+ void Add_KnownDerivative(
+ Ce_id i_nId )
+ { aKnownDerivatives.Add(i_nId); }
+
+ void Add_LocalClass(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalEnum(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalTypedef(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalOperation(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalStaticOperation(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalData(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalStaticData(
+ const String & i_sLocalName,
+ Cid i_nId );
+
+ void UpdateVirtuality(
+ E_Virtuality i_eVirtuality )
+ { if ( int(i_eVirtuality) > int(eVirtuality) )
+ eVirtuality = i_eVirtuality; }
+ const List_TplParam &
+ TemplateParameters() const
+ { return aTemplateParameterTypes; }
+ const List_Bases & BaseClasses() const { return aBaseClasses; }
+ const SequentialIds<Ce_id> &
+ KnownDerivatives() const
+ { return aKnownDerivatives; }
+
+ // INQUIRY
+ E_ClassKey ClassKey() const;
+ E_Protection Protection() const;
+ E_Virtuality Virtuality() const { return eVirtuality; }
+
+ Ce_id Search_Child(
+ const String & i_key ) const;
+ Rid Search_LocalClass(
+ const String & i_sName ) const;
+ const node_t & AsNode() const;
+
+ // ACCESS
+ node_t & AsNode();
+
+ private:
+ NON_COPYABLE(Class);
+
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::cpp::CodeEntity
+ virtual const String &
+ inq_LocalName() const;
+ virtual Cid inq_Owner() const;
+ virtual loc::Le_id inq_Location() const;
+
+ // Interface ary::cpp::CppEntity
+ virtual ClassId get_AryClass() const;
+
+ // Interface ary::AryGroup
+ virtual Gid inq_Id_Group() const;
+ virtual const cpp::CppEntity &
+ inq_RE_Group() const;
+ virtual const group::SlotList &
+ inq_Slots() const;
+ virtual DYN Slot * inq_Create_Slot(
+ SlotAccessId i_nSlot ) const;
+ // Local
+ typedef List_LocalCe::const_iterator CIterator_Locals;
+ typedef List_LocalCe::iterator Iterator_Locals;
+ typedef SequentialIds<Ce_id> IdSequence;
+
+ CIterator_Locals PosOfName(
+ const List_LocalCe& i_rList,
+ const String & i_sName ) const;
+ // DATA
+ CeEssentials aEssentials;
+ node_t aAssignedNode;
+
+ List_Bases aBaseClasses;
+ List_TplParam aTemplateParameterTypes;
+
+ List_LocalCe aClasses;
+ List_LocalCe aEnums;
+ List_LocalCe aTypedefs;
+ List_LocalCe aOperations;
+ List_LocalCe aStaticOperations;
+ List_LocalCe aData;
+ List_LocalCe aStaticData;
+
+ IdSequence aFriendClasses;
+ IdSequence aFriendOperations;
+ IdSequence aKnownDerivatives;
+
+ E_ClassKey eClassKey;
+ E_Protection eProtection;
+ E_Virtuality eVirtuality;
+};
+
+
+
+
+// IMPLEMENTATION
+inline E_ClassKey
+Class::ClassKey() const
+{
+ return eClassKey;
+}
+
+inline E_Protection
+Class::Protection() const
+{
+ return eProtection;
+}
+
+inline const Class::node_t &
+Class::AsNode() const
+{
+ return aAssignedNode;
+}
+
+inline Class::node_t &
+Class::AsNode()
+{
+ return aAssignedNode;
+}
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_cppentity.hxx b/autodoc/inc/ary/cpp/c_cppentity.hxx
new file mode 100644
index 000000000000..fab3d2f728fe
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_cppentity.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ARY_CPP_C_CPPENTITY_HXX
+#define ARY_CPP_C_CPPENTITY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/entity.hxx>
+ // OTHER
+#include <ary/doc/d_docu.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** A C++ code entity as parsed by Autodoc.
+*/
+class CppEntity : public Entity
+{
+ public:
+ // LIFECYCLE
+ virtual ~CppEntity() {}
+
+ // OPERATIONS
+
+ // INQUIRY
+ const ary::doc::Documentation &
+ Docu() const;
+ // ACCESS
+ void Set_Docu(
+ DYN ary::doc::Node &
+ pass_docudata );
+ private:
+ // DATA
+ ary::doc::Documentation
+ aDocu;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const doc::Documentation &
+CppEntity::Docu() const
+{
+ return aDocu;
+}
+
+inline void
+CppEntity::Set_Docu(ary::doc::Node & pass_docudata)
+{
+ aDocu.Set_Data(pass_docudata);
+}
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_de.hxx b/autodoc/inc/ary/cpp/c_de.hxx
new file mode 100644
index 000000000000..8426222ab3b4
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_de.hxx
@@ -0,0 +1,107 @@
+/* -*- 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 ARY_CPP_C_DE_HXX
+#define ARY_CPP_C_DE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_cppentity.hxx>
+ // OTHER
+#include <ary/loc/loc_types4loc.hxx>
+#include <ary/cpp/c_traits.hxx>
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** Describes a C/C++ #define statement. May be a define or a macro, for which
+ two cases the two different constructors are to be used.
+
+ This class is used by cpp::PreProcessor.
+*/
+class DefineEntity : public ary::cpp::CppEntity
+{
+ public:
+ typedef Def_Traits traits_t;
+
+ virtual ~DefineEntity() {}
+
+ // INQUIRY
+ De_id DefId() const { return De_id(Id()); }
+ const String & LocalName() const;
+ loc::Le_id Location() const;
+ const StringVector &
+ DefinitionText() const;
+ // ACCESS
+ protected:
+ DefineEntity(
+ const String & i_name,
+ loc::Le_id i_declaringFile );
+ private:
+ // Locals
+ virtual const StringVector &
+ inq_DefinitionText() const = 0;
+
+ // DATA
+ String sName;
+ loc::Le_id nLocation;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const String &
+DefineEntity::LocalName() const
+ { return sName; }
+
+inline loc::Le_id
+DefineEntity::Location() const
+ { return nLocation; }
+
+inline const StringVector &
+DefineEntity::DefinitionText() const
+ { return inq_DefinitionText(); }
+
+
+
+
+
+} // end namespace cpp
+} // end namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_define.hxx b/autodoc/inc/ary/cpp/c_define.hxx
new file mode 100644
index 000000000000..460ddb79ac1b
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_define.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 ARY_CPP_C_DEFINE_HXX
+#define ARY_CPP_C_DEFINE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_de.hxx>
+ // OTHER
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** A C/C++ #define ("#define DEF") statement, but no macro.
+
+ @see Macro
+*/
+class Define : public DefineEntity
+{
+ public:
+ enum E_ClassId { class_id = 1601 };
+
+ Define( /// Used for: #define DEFINE xyz
+ const String & i_name,
+ const StringVector &
+ i_definition,
+ loc::Le_id i_declaringFile );
+ virtual ~Define();
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface DefineEntity:
+ virtual const StringVector &
+ inq_DefinitionText() const;
+ // DATA
+ StringVector aDefinition;
+};
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_enum.hxx b/autodoc/inc/ary/cpp/c_enum.hxx
new file mode 100644
index 000000000000..4704c700773f
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_enum.hxx
@@ -0,0 +1,119 @@
+/* -*- 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 ARY_CPP_C_ENUM_HXX
+#define ARY_CPP_C_ENUM_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_ce.hxx>
+#include <ary/arygroup.hxx>
+ // OTHER
+#include <ary/cessentl.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/sequentialids.hxx>
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** A C++ enum declaration.
+*/
+class Enum : public CodeEntity,
+ public AryGroup
+{
+ public:
+ enum E_ClassId { class_id = 1002 };
+
+ enum E_Slots
+ {
+ SLOT_Values = 1
+ };
+
+ // LIFECYCLE
+ Enum(
+ const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ Lid i_nFile );
+ ~Enum();
+
+ // OPERATIONS
+ void Add_Value(
+ Ce_id i_nId );
+
+ // INQUIRY
+ E_Protection Protection() const { return eProtection; }
+
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::cpp::CodeEntity
+ virtual const String &
+ inq_LocalName() const;
+ virtual Cid inq_Owner() const;
+ virtual Lid inq_Location() const;
+
+ // Interface ary::cpp::CppEntity
+ virtual ClassId get_AryClass() const;
+
+ // Interface ary::AryGroup
+ virtual Gid inq_Id_Group() const;
+ virtual const cpp::CppEntity &
+ inq_RE_Group() const;
+ virtual const group::SlotList &
+ inq_Slots() const;
+ virtual DYN Slot * inq_Create_Slot(
+ SlotAccessId i_nSlot ) const;
+
+ // DATA
+ CeEssentials aEssentials;
+ SequentialIds<Ce_id>
+ aValues;
+ E_Protection eProtection;
+};
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_enuval.hxx b/autodoc/inc/ary/cpp/c_enuval.hxx
new file mode 100644
index 000000000000..3ed523baa3f3
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_enuval.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 ARY_CPP_C_ENUVAL_HXX
+#define ARY_CPP_C_ENUVAL_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_ce.hxx>
+ // OTHER
+#include <ary/cessentl.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** A C++ enum value declaration and definition.
+*/
+class EnumValue : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 1006 };
+
+ // LIFECYCLE
+ EnumValue(
+ const String & i_sLocalName,
+ Ce_id i_nOwner,
+ String i_sInitialisation );
+ ~EnumValue();
+ // INQUIRY
+ const String & Initialisation() const;
+
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::cpp::CodeEntity
+ virtual const String &
+ inq_LocalName() const;
+ virtual Cid inq_Owner() const;
+ virtual Lid inq_Location() const;
+
+ // Interface ary::cpp::CppEntity
+ virtual ClassId get_AryClass() const;
+
+ // DATA
+ CeEssentials aEssentials;
+ String sInitialisation;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const String &
+EnumValue::Initialisation() const
+ { return sInitialisation; }
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_funct.hxx b/autodoc/inc/ary/cpp/c_funct.hxx
new file mode 100644
index 000000000000..917ff823f151
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_funct.hxx
@@ -0,0 +1,152 @@
+/* -*- 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 ARY_CPP_C_FUNCT_HXX
+#define ARY_CPP_C_FUNCT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_ce.hxx>
+ // OTHER
+#include <ary/cessentl.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_slntry.hxx>
+#include <ary/cpp/c_vfflag.hxx>
+#include <ary/cpp/c_osigna.hxx>
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** A C++ function declaration.
+*/
+class Function : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 1004 };
+
+ Function(
+ const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ loc::Le_id i_nFile,
+ Type_id i_nReturnType,
+ const std::vector<S_Parameter> &
+ i_parameters,
+ E_ConVol i_conVol,
+ E_Virtuality i_eVirtuality,
+ FunctionFlags i_aFlags,
+ bool i_bThrowExists,
+ const std::vector<Type_id> &
+ i_rExceptions );
+ ~Function();
+
+
+ // OPERATIONS
+ void Add_TemplateParameterType(
+ const String & i_sLocalName,
+ Type_id i_nIdAsType );
+
+ // INQUIRY
+ const OperationSignature &
+ Signature() const;
+ Type_id ReturnType() const;
+ E_Protection Protection() const { return eProtection; }
+ E_Virtuality Virtuality() const { return eVirtuality; }
+ const FunctionFlags &
+ Flags() const { return aFlags; }
+ const StringVector &
+ ParamInfos() const { return aParameterInfos; }
+ const std::vector<Type_id> *
+ Exceptions() const { return pExceptions.Ptr(); }
+
+ const List_TplParam &
+ TemplateParameters() const
+ { return aTemplateParameterTypes; }
+ bool IsIdentical(
+ const Function & i_f ) const;
+
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::cpp::CodeEntity
+ virtual const String &
+ inq_LocalName() const;
+ virtual Cid inq_Owner() const;
+ virtual Lid inq_Location() const;
+
+ // Interface ary::cpp::CppEntity
+ virtual ClassId get_AryClass() const;
+
+ // Local Types
+ typedef StringVector ParameterInfoList;
+ typedef std::vector<Type_id> ExceptionTypeList;
+
+ // DATA
+ CeEssentials aEssentials;
+ List_TplParam aTemplateParameterTypes;
+ OperationSignature aSignature;
+ Type_id nReturnType;
+ E_Protection eProtection;
+ E_Virtuality eVirtuality;
+ FunctionFlags aFlags;
+ ParameterInfoList aParameterInfos;
+ Dyn<ExceptionTypeList>
+ pExceptions; // if (NOT pExceptions) there is no throw,
+ // else, there is one, but the list still may be empty.
+};
+
+
+
+
+// IMPLEMENTATION
+inline const OperationSignature &
+Function::Signature() const
+ { return aSignature; }
+inline Type_id
+Function::ReturnType() const
+ { return nReturnType; }
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_gate.hxx b/autodoc/inc/ary/cpp/c_gate.hxx
new file mode 100644
index 000000000000..df0af5afbd19
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_gate.hxx
@@ -0,0 +1,124 @@
+/* -*- 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 ARY_CPP_C_GATE_HXX
+#define ARY_CPP_C_GATE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+
+namespace autodoc
+{
+ class Options;
+}
+namespace ary
+{
+ class Entity;
+
+namespace cpp
+{
+ class CodeEntity;
+ class CppEntity;
+ class CePilot;
+ class DefPilot;
+ class TypePilot;
+}
+namespace loc
+{
+ class LocationPilot;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** Acess to all stored objcts in the repository, which are
+ relevant to C++.
+*/
+class Gate
+{
+ public:
+ // LIFECYCLE
+ virtual ~Gate() {}
+
+
+ // OPERATIONS
+ virtual void Calculate_AllSecondaryInformation() = 0;
+// const ::autodoc::Options &
+// i_options ) = 0;
+
+ // INQUIRY
+ virtual const String &
+ RepositoryTitle() const = 0;
+ virtual const CodeEntity *
+ Search_RelatedCe(
+ Type_id i_type ) const = 0;
+ virtual const ::ary::cpp::CppEntity *
+ Search_Entity(
+ GlobalId i_id ) const = 0;
+ virtual uintt Get_AlphabeticalList(
+ List_GlobalIds & o_result,
+ const char * i_begin,
+ const char * i_end ) const = 0;
+ virtual const CePilot &
+ Ces() const = 0;
+ virtual const DefPilot &
+ Defs() const = 0;
+ virtual const TypePilot &
+ Types() const = 0;
+ virtual const loc::LocationPilot &
+ Locations() const = 0;
+
+ // ACCESS
+ virtual CePilot & Ces() = 0;
+ virtual DefPilot & Defs() = 0;
+ virtual TypePilot & Types() = 0;
+ virtual loc::LocationPilot &
+ Locations() = 0;
+};
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_macro.hxx b/autodoc/inc/ary/cpp/c_macro.hxx
new file mode 100644
index 000000000000..8740c2e94015
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_macro.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 ARY_CPP_C_MACRO_HXX
+#define ARY_CPP_C_MACRO_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_de.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** A C/C++ macro ("#define ABC(a,b)") statement, but no simple define.
+
+ @see Define
+*/
+class Macro : public DefineEntity
+{
+ public:
+ enum E_ClassId { class_id = 1602 };
+
+ Macro();
+ Macro( /// Used for: #define DEFINE xyz
+ const String & i_name,
+ const StringVector &
+ i_params,
+ const StringVector &
+ i_definition,
+ loc::Le_id i_declaringFile );
+ ~Macro();
+ const StringVector & Params() const { return aParams; }
+
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object
+ virtual ClassId get_AryClass() const;
+
+ // Interface DefineEntity:
+ virtual const StringVector &
+ inq_DefinitionText() const;
+ // DATA
+ StringVector aParams;
+ StringVector aDefinition;
+};
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_namesp.hxx b/autodoc/inc/ary/cpp/c_namesp.hxx
new file mode 100644
index 000000000000..d15c526394f3
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_namesp.hxx
@@ -0,0 +1,197 @@
+/* -*- 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 ARY_CPP_C_NAMESP_HXX
+#define ARY_CPP_C_NAMESP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_ce.hxx>
+#include <ary/arygroup.hxx>
+ // OTHER
+#include <ary/symtreenode.hxx>
+#include <ary/cessentl.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_slntry.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class Gate;
+ class OperationSignature;
+}
+}
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** A C++ namespace.
+*/
+class Namespace : public CodeEntity,
+ public AryGroup
+{
+ public:
+ enum E_ClassId { class_id = 1000 };
+
+ enum E_Slots
+ {
+ SLOT_SubNamespaces = 1,
+ SLOT_Classes,
+ SLOT_Enums,
+ SLOT_Typedefs,
+ SLOT_Operations,
+ SLOT_Variables,
+ SLOT_Constants
+ };
+
+ typedef ::ary::symtree::Node<CeNode_Traits> node_t;
+
+ Namespace();
+ Namespace(
+ const String & i_sName,
+ Namespace & i_rParent );
+ ~Namespace();
+ // OPERATIONS
+ void Add_LocalNamespace(
+ Namespace & io_rLocalNamespace );
+ void Add_LocalClass(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalEnum(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalTypedef(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalOperation(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalVariable(
+ const String & i_sLocalName,
+ Cid i_nId );
+ void Add_LocalConstant(
+ const String & i_sLocalName,
+ Cid i_nId );
+
+ // INQUIRY
+ virtual uintt Depth() const;
+ Namespace * Parent() const;
+
+ Ce_id Search_Child(
+ const String & i_key ) const;
+ Namespace * Search_LocalNamespace(
+ const String & i_sLocalName ) const;
+ uintt Get_SubNamespaces(
+ std::vector< const Namespace* > &
+ o_rResultList ) const;
+ Ce_id Search_LocalClass(
+ const String & i_sName ) const;
+ void Search_LocalOperations(
+ std::vector<Ce_id> &
+ o_result,
+ const String & i_sName ) const;
+ const node_t & AsNode() const;
+
+ // ACCESS
+ node_t & AsNode();
+
+ private:
+ NON_COPYABLE(Namespace);
+
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface CodeEntity
+ virtual const String &
+ inq_LocalName() const;
+ virtual Cid inq_Owner() const;
+ virtual Lid inq_Location() const;
+
+ // Interface ary::cpp::CppEntity
+ virtual ClassId get_AryClass() const;
+
+ // Interface AryGroup
+ virtual Gid inq_Id_Group() const;
+ virtual const cpp::CppEntity &
+ inq_RE_Group() const;
+ virtual const ary::group::SlotList &
+ inq_Slots() const;
+ virtual DYN Slot * inq_Create_Slot(
+ SlotAccessId i_nSlot ) const;
+ // Local
+ typedef std::multimap<String, Ce_id> Map_Operations;
+
+ // DATA
+ CeEssentials aEssentials;
+ node_t aAssignedNode;
+
+ Map_NamespacePtr aLocalNamespaces;
+ Map_LocalCe aLocalClasses;
+ Map_LocalCe aLocalEnums;
+ Map_LocalCe aLocalTypedefs;
+ Map_Operations aLocalOperations;
+ Map_LocalCe aLocalVariables;
+ Map_LocalCe aLocalConstants;
+
+ Namespace * pParent;
+ uintt nDepth;
+};
+
+
+
+// IMPLEMENTATION
+inline const Namespace::node_t &
+Namespace::AsNode() const
+{
+ return aAssignedNode;
+}
+
+inline Namespace::node_t &
+Namespace::AsNode()
+{
+ return aAssignedNode;
+}
+
+
+
+
+} // namespace cpp
+} // ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_osigna.hxx b/autodoc/inc/ary/cpp/c_osigna.hxx
new file mode 100644
index 000000000000..4434f65b877e
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_osigna.hxx
@@ -0,0 +1,125 @@
+/* -*- 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 ARY_CPP_C_OSIGNA_HXX
+#define ARY_CPP_C_OSIGNA_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class Gate;
+}
+}
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** The signature of a C++ function. That is: parameter types and
+ const/volatile modifiers.
+*/
+class OperationSignature
+{
+ public:
+ typedef std::vector<Type_id> ParameterTypeList;
+
+ OperationSignature(
+ ParameterTypeList i_parameterTypes, // Non const, because it will be swapped with aParameterTypes.
+ E_ConVol i_conVol );
+
+ bool operator==(
+ const OperationSignature &
+ i_rSig ) const;
+ bool operator<(
+ const OperationSignature &
+ i_rSig ) const;
+
+ // INQUIRY
+ const ParameterTypeList &
+ Parameters() const;
+ E_ConVol ConVol() const;
+
+ /** Compares the signatures by length an then by ids of
+ parameter types. So the result is not always human
+ reconstructable.
+ @return like in strcmp().
+ */
+ int Compare(
+ const OperationSignature &
+ i_rSig ) const;
+ private:
+ // DATA
+ ParameterTypeList aParameterTypes;
+ E_ConVol eConVol;
+};
+
+
+
+
+// IMPLEMENTATION
+inline bool
+OperationSignature::operator==( const OperationSignature & i_rSign ) const
+{
+ return Compare(i_rSign) == 0;
+}
+
+inline bool
+OperationSignature::operator<( const OperationSignature & i_rSign ) const
+{
+ return Compare(i_rSign) < 0;
+}
+
+inline const OperationSignature::ParameterTypeList &
+OperationSignature::Parameters() const
+{
+ return aParameterTypes;
+}
+
+inline E_ConVol
+OperationSignature::ConVol() const
+{
+ return eConVol;
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_slntry.hxx b/autodoc/inc/ary/cpp/c_slntry.hxx
new file mode 100644
index 000000000000..3ce842494304
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_slntry.hxx
@@ -0,0 +1,113 @@
+/* -*- 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 ARY_CPP_C_SLNTRY_HXX
+#define ARY_CPP_C_SLNTRY_HXX
+// KORR_DEPRECATED_3.0
+
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/namesort.hxx>
+
+
+namespace ary
+{
+namespace cpp
+{
+ class Namespace;
+
+
+
+typedef Namespace * NamespacePtr;
+struct Less_NamespacePtr
+{
+ bool operator()( /// @return true if (i_p1->Name() < i_p2->Name()) .
+ const NamespacePtr& i_p1,
+ const NamespacePtr& i_p2 );
+};
+
+
+
+
+struct S_Classes_Base
+{
+ Type_id nId;
+ E_Protection eProtection;
+ E_Virtuality eVirtuality;
+ String sComment;
+
+ S_Classes_Base()
+ : nId(0),
+ eProtection(PROTECT_global),
+ eVirtuality(VIRTUAL_none)
+ // sComment
+ { }
+};
+
+struct S_TplParam
+{
+ String sName;
+ Type_id nId;
+
+ S_TplParam(
+ String i_sName,
+ Type_id i_nId )
+ : sName(i_sName), nId(i_nId) {}
+ const String & Name() const { return sName; }
+};
+
+
+struct S_LocalCe
+{
+ String sLocalName;
+ Ce_id nId;
+
+ S_LocalCe() : nId(0) {}
+ S_LocalCe(
+ const String & i_sLocalName,
+ Cid i_nId )
+ : sLocalName(i_sLocalName), nId(i_nId) {}
+ bool operator<(
+ const S_LocalCe & i_rCe ) const
+ { return LesserName()(sLocalName,i_rCe.sLocalName); }
+};
+
+typedef std::vector< S_LocalCe > List_LocalCe;
+
+
+typedef std::map<String, NamespacePtr> Map_NamespacePtr;
+typedef std::vector< S_Classes_Base > List_Bases;
+typedef std::vector< S_TplParam > List_TplParam;
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_traits.hxx b/autodoc/inc/ary/cpp/c_traits.hxx
new file mode 100644
index 000000000000..060b0d2ea0ce
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_traits.hxx
@@ -0,0 +1,219 @@
+/* -*- 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 ARY_CPP_C_TRAITS_HXX
+#define ARY_CPP_C_TRAITS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+
+namespace ary
+{
+namespace symtree
+{
+ template <class X> class Node;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** Basic traits for derived ones of ->CodeEntity.
+*/
+struct Ce_Traits
+{
+ typedef CodeEntity entity_base_type;
+ typedef Ce_id id_type;
+
+ static entity_base_type &
+ EntityOf_(
+ id_type i_id );
+};
+
+
+/** An instance of SYMBOL_TRAITS for ->::ary::SortedIds<>.
+
+ @see ::ary::SortedIds<>
+*/
+struct CeNode_Traits : public Ce_Traits
+{
+ static const symtree::Node<CeNode_Traits> *
+ NodeOf_(
+ const entity_base_type &
+ i_entity );
+ static symtree::Node<CeNode_Traits> *
+ NodeOf_(
+ entity_base_type & i_entity );
+ static entity_base_type *
+ ParentOf_(
+ const entity_base_type &
+ i_entity );
+ template <class KEY>
+ static id_type Search_(
+ const entity_base_type &
+ i_entity,
+ const KEY & i_localKey );
+};
+
+
+/** An instance of COMPARE for ->::ary::SortedIds<>.
+
+ @see ::ary::SortedIds<>
+*/
+struct Ce_Compare : public Ce_Traits
+{
+ typedef String key_type;
+
+ static const key_type &
+ KeyOf_(
+ const entity_base_type &
+ i_entity );
+ static bool Lesser_(
+ const key_type & i_1,
+ const key_type & i_2 );
+};
+
+/** An instance of COMPARE for ->::ary::SortedIds<>.
+
+ @see ::ary::SortedIds<>
+*/
+struct Ce_GlobalCompare : public Ce_Traits
+{
+ typedef entity_base_type key_type;
+
+ static const key_type &
+ KeyOf_(
+ const entity_base_type &
+ i_entity )
+ { return i_entity; }
+ static bool Lesser_(
+ const key_type & i_1,
+ const key_type & i_2 );
+};
+
+
+/** Basic traits for derivd ones of ->DefineEntity.
+*/
+struct Def_Traits
+{
+ typedef DefineEntity entity_base_type;
+ typedef De_id id_type;
+
+ static entity_base_type &
+ EntityOf_(
+ id_type i_id );
+};
+
+
+/** An instance of COMPARE for ->::ary::SortedIds<>.
+
+ @see ::ary::SortedIds<>
+*/
+struct Def_Compare : public Def_Traits
+{
+ typedef String key_type;
+
+ static const key_type &
+ KeyOf_(
+ const entity_base_type &
+ i_entity );
+ static bool Lesser_(
+ const key_type & i_1,
+ const key_type & i_2 );
+};
+
+/** Basic traits for derivd ones of ->Type.
+*/
+struct Type_Traits
+{
+ typedef Type entity_base_type;
+ typedef Type_id id_type;
+
+ static entity_base_type &
+ EntityOf_(
+ id_type i_id );
+};
+
+/** An instance of COMPARE for ->::ary::SortedIds<>.
+
+ @see ::ary::SortedIds<>
+*/
+struct UsedType_Compare : public Type_Traits
+{
+ typedef UsedType key_type;
+
+ static const key_type &
+ KeyOf_(
+ const entity_base_type &
+ i_entity );
+ static bool Lesser_(
+ const key_type & i_1,
+ const key_type & i_2 );
+};
+
+
+
+
+
+
+// IMPLEMENTATION
+
+/// Implementation helper for ->CeNode_Traits::Search_ .
+Ce_id CeNode_Search(
+ const CodeEntity & i_entity,
+ const String & i_localKey );
+
+
+template <class KEY>
+Ce_Traits::id_type
+CeNode_Traits::Search_( const entity_base_type & i_entity,
+ const KEY & i_localKey )
+{
+ return CeNode_Search(i_entity, i_localKey);
+}
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_tydef.hxx b/autodoc/inc/ary/cpp/c_tydef.hxx
new file mode 100644
index 000000000000..eefbda569484
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_tydef.hxx
@@ -0,0 +1,103 @@
+/* -*- 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 ARY_CPP_C_TYDEF_HXX
+#define ARY_CPP_C_TYDEF_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_ce.hxx>
+ // OTHER
+#include <ary/cessentl.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** A C++ typedef declaration.
+*/
+class Typedef : public CodeEntity
+{
+ public:
+ // LIFECYCLE
+ enum E_ClassId { class_id = 1003 };
+
+ Typedef(
+ const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ Lid i_nFile,
+ Type_id i_nDescribingType );
+ ~Typedef();
+ // INQUIRY
+ Type_id DescribingType() const;
+ E_Protection Protection() const { return eProtection; }
+
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::cpp::CodeEntity
+ virtual const String &
+ inq_LocalName() const;
+ virtual Cid inq_Owner() const;
+ virtual Lid inq_Location() const;
+
+ // Interface ary::cpp::CppEntity
+ virtual ClassId get_AryClass() const;
+
+ // DATA
+ CeEssentials aEssentials;
+ Type_id nDescribingType;
+ E_Protection eProtection;
+};
+
+
+
+// IMPLEMENTATION
+inline Type_id
+Typedef::DescribingType() const
+{
+ return nDescribingType;
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_type.hxx b/autodoc/inc/ary/cpp/c_type.hxx
new file mode 100644
index 000000000000..513ec0cefb5f
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_type.hxx
@@ -0,0 +1,136 @@
+/* -*- 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 ARY_CPP_C_TYPE_HXX
+#define ARY_CPP_C_TYPE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/entity.hxx>
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_traits.hxx>
+
+
+namespace ary
+{
+namespace cpp
+{
+ class Gate;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** Base of all C++ types
+*/
+class Type : public ::ary::Entity
+{
+ public:
+ typedef Type_Traits traits_t;
+
+ virtual ~Type() {}
+
+ Type_id TypeId() const { return Type_id(Id()); }
+ Ce_id RelatedCe() const;
+ bool IsConst() const;
+ void Get_Text(
+ StreamStr & o_rOut,
+ const Gate & i_rGate ) const;
+
+ /** It is guaranteed, that the output is correct, also,
+ if all three output-streams are the same instance.
+ */
+ void Get_Text(
+ StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const Gate & i_rGate ) const;
+
+ private:
+ virtual Rid inq_RelatedCe() const; // Defaulted to 0. Implemented in c_builtintype.cxx.
+ virtual bool inq_IsConst() const = 0;
+ virtual void inq_Get_Text(
+ StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const Gate & i_rGate ) const = 0;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Ce_id
+Type::RelatedCe() const
+{
+ return Ce_id(inq_RelatedCe());
+}
+
+inline bool
+Type::IsConst() const
+{
+ return inq_IsConst();
+}
+
+inline void
+Type::Get_Text( StreamStr & o_rOut,
+ const Gate & i_rGate ) const
+{
+ inq_Get_Text( o_rOut, o_rOut, o_rOut, i_rGate );
+}
+
+inline void
+Type::Get_Text( StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const Gate & i_rGate ) const
+{
+ inq_Get_Text( o_rPreName,o_rName,o_rPostName, i_rGate );
+}
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_types4cpp.hxx b/autodoc/inc/ary/cpp/c_types4cpp.hxx
new file mode 100644
index 000000000000..2d39819ae458
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_types4cpp.hxx
@@ -0,0 +1,137 @@
+/* -*- 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 ARY_CPP_C_TYPES4CPP_HXX
+#define ARY_CPP_C_TYPES4CPP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <cosv/tpl/range.hxx>
+#include <ary/types.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+class Namespace;
+class CodeEntity;
+class Type;
+class DefineEntity;
+class Gate;
+class CePilot;
+class TypePilot;
+class SecondariesPilot;
+class Ce_Storage;
+class Def_Storage;
+class Type_Storage;
+class UsedType;
+
+
+typedef TypedId< ::ary::cpp::CodeEntity > Ce_id;
+typedef TypedId< ::ary::cpp::Type > Type_id;
+typedef TypedId< ::ary::cpp::DefineEntity > De_id;
+
+
+typedef std::vector<Ce_id> CesList;
+typedef std::vector<De_id> DefsList;
+typedef std::vector<Type_id> TypesList;
+
+typedef std::vector<Ce_id>::const_iterator CesConstIterator;
+typedef std::vector<De_id>::const_iterator DefsConstIterator;
+typedef std::vector<Type_id>::const_iterator TypesConstIterator;
+
+typedef csv::range< CesConstIterator > CesResultList;
+typedef csv::range< DefsConstIterator > DefsResultList;
+typedef csv::range< TypesConstIterator > TypesResultList;
+
+
+typedef std::map<String, Ce_id> Map_LocalCe;
+
+
+
+enum E_Protection
+{
+ PROTECT_global = 0,
+ PROTECT_local, /// within Functions
+ PROTECT_public,
+ PROTECT_protected,
+ PROTECT_private
+};
+
+/** The sequence of E_Virtuality's values must not be changed,
+ because they are used in int-comparisons.
+*/
+enum E_Virtuality
+{
+ VIRTUAL_none = 0,
+ VIRTUAL_virtual,
+ VIRTUAL_abstract
+};
+
+enum E_ClassKey
+{
+ CK_class,
+ CK_struct,
+ CK_union
+};
+
+enum E_TypeSpecialisation
+{
+ TYSP_none = 0,
+ TYSP_unsigned,
+ TYSP_signed
+};
+
+enum E_ConVol
+{
+ CONVOL_none = 0,
+ CONVOL_const = 0x0001,
+ CONVOL_volatile = 0x0002,
+ CONVOL_both = 0x0003
+};
+
+
+
+// Backwards compatibility:
+typedef Ce_id Cid;
+typedef Type_id Tid;
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_vari.hxx b/autodoc/inc/ary/cpp/c_vari.hxx
new file mode 100644
index 000000000000..e8b2e442486e
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_vari.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 ARY_CPP_C_VARI_HXX
+#define ARY_CPP_C_VARI_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_ce.hxx>
+ // OTHER
+#include <ary/cessentl.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_vfflag.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** A C++ variable or constant declaration.
+*/
+class Variable : public CodeEntity
+{
+ public:
+ // LIFECYCLE
+ enum E_ClassId { class_id = 1005 };
+
+ Variable(
+ const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ loc::Le_id i_nFile,
+ Type_id i_nType,
+ VariableFlags i_aFlags,
+ const String & i_sArraySize,
+ const String & i_sInitValue );
+ ~Variable();
+
+
+ // INQUIRY
+ Type_id Type() const;
+ const String & ArraySize() const;
+ const String & Initialisation() const;
+ E_Protection Protection() const { return eProtection; }
+
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::cpp::CodeEntity
+ virtual const String &
+ inq_LocalName() const;
+ virtual Cid inq_Owner() const;
+ virtual Lid inq_Location() const;
+
+ // Interface ary::cpp::CppEntity
+ virtual ClassId get_AryClass() const;
+
+ // DATA
+ CeEssentials aEssentials;
+ Type_id nType;
+ E_Protection eProtection;
+ VariableFlags aFlags;
+ String sArraySize;
+ String sInitialisation;
+};
+
+
+
+// IMPLEMENTATION
+inline Type_id
+Variable::Type() const
+ { return nType; }
+inline const String &
+Variable::ArraySize() const
+ { return sArraySize; }
+inline const String &
+Variable::Initialisation() const
+ { return sInitialisation; }
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/c_vfflag.hxx b/autodoc/inc/ary/cpp/c_vfflag.hxx
new file mode 100644
index 000000000000..c198dac67267
--- /dev/null
+++ b/autodoc/inc/ary/cpp/c_vfflag.hxx
@@ -0,0 +1,154 @@
+/* -*- 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 ARY_CPP_C_VFFLAG_HXX
+#define ARY_CPP_C_VFFLAG_HXX
+
+// USED SERVICES
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** Properties of C++ variables.
+*/
+struct VariableFlags
+{
+ public:
+ enum E_Flags
+ {
+ f_static_local = 0x0001,
+ f_static_member = 0x0002,
+ f_extern = 0x0004,
+ f_mutable = 0x0008
+ };
+
+ VariableFlags(
+ UINT16 i_nFlags = 0 )
+ : nFlags(i_nFlags) {}
+
+ void Reset() { nFlags = 0; }
+
+ void SetStaticLocal() { nFlags |= f_static_local; }
+ void SetStaticMember() { nFlags |= f_static_member; }
+ void SetExtern() { nFlags |= f_extern; }
+ void SetMutable() { nFlags |= f_mutable; }
+
+ bool IsStaticLocal() const { return (nFlags & f_static_local) != 0; }
+ bool IsStaticMember() const { return (nFlags & f_static_member) != 0; }
+ bool IsExtern() const { return (nFlags & f_extern) != 0; }
+ bool IsMutable() const { return (nFlags & f_mutable) != 0; }
+
+ private:
+ UINT16 nFlags;
+};
+
+
+/** Properties of C++ functions.
+*/
+struct FunctionFlags
+{
+ public:
+ enum E_Flags
+ {
+ f_static_local = 0x0001,
+ f_static_member = 0x0002,
+ f_extern = 0x0004,
+ f_externC = 0x0008,
+ f_mutable = 0x0010,
+ f_inline = 0x0100,
+ f_register = 0x0200,
+ f_explicit = 0x0400
+ };
+
+ FunctionFlags(
+ UINT16 i_nFlags = 0 )
+ : nFlags(i_nFlags) {}
+
+ bool operator==(
+ const FunctionFlags &
+ i_ff ) const
+ { return nFlags == i_ff.nFlags; }
+ bool operator!=(
+ const FunctionFlags &
+ i_ff ) const
+ { return NOT operator==(i_ff); }
+
+ void Reset() { nFlags = 0; }
+
+ void SetStaticLocal() { nFlags |= f_static_local; }
+ void SetStaticMember() { nFlags |= f_static_member; }
+ void SetExtern() { nFlags |= f_extern; }
+ void SetExternC() { nFlags |= f_externC; }
+ void SetMutable() { nFlags |= f_mutable; }
+ void SetInline() { nFlags |= f_inline; }
+ void SetRegister() { nFlags |= f_register; }
+ void SetExplicit() { nFlags |= f_explicit; }
+
+ bool IsStaticLocal() const { return (nFlags & f_static_local) != 0; }
+ bool IsStaticMember() const { return (nFlags & f_static_member) != 0; }
+ bool IsExtern() const { return (nFlags & f_extern) != 0; }
+ bool IsExternC() const { return (nFlags & f_externC) != 0; }
+ bool IsMutable() const { return (nFlags & f_mutable) != 0; }
+ bool IsInline() const { return (nFlags & f_inline) != 0; }
+ bool IsRegister() const { return (nFlags & f_register) != 0; }
+ bool IsExplicit() const { return (nFlags & f_explicit) != 0; }
+
+ private:
+ UINT16 nFlags;
+};
+
+
+/** A C++ function parameter.
+*/
+struct S_Parameter
+{
+ String sName;
+ String sSizeExpression;
+ String sInitExpression;
+ Type_id nType;
+
+ S_Parameter() : nType(0) {}
+ ~S_Parameter() {}
+ void Empty() { nType = Type_id(0);
+ sName.clear();
+ sSizeExpression.clear();
+ sInitExpression.clear(); }
+};
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/cp_ce.hxx b/autodoc/inc/ary/cpp/cp_ce.hxx
new file mode 100644
index 000000000000..cb86e44b17d4
--- /dev/null
+++ b/autodoc/inc/ary/cpp/cp_ce.hxx
@@ -0,0 +1,176 @@
+/* -*- 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 ARY_CPP_CP_CE_HXX
+#define ARY_CPP_CP_CE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+ class QualifiedName;
+
+namespace cpp
+{
+ class Class;
+ class CodeEntity;
+ class Enum;
+ class EnumValue;
+ class Function;
+ class InputContext;
+ class Namespace;
+ class OperationSignature;
+ class Typedef;
+ class Variable;
+
+ struct FunctionFlags;
+ struct S_Parameter;
+ struct VariableFlags;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** Acess to all declared C++ code entites (types, variables, operations)
+ in the repository.
+*/
+class CePilot
+{
+ public:
+ // LIFECYCLE
+ virtual ~CePilot() {}
+
+ // OPERATIONS
+ virtual Namespace &
+ CheckIn_Namespace(
+ const InputContext &
+ i_context,
+ const String & i_localName ) = 0;
+ virtual Class & Store_Class(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ E_ClassKey i_classKey ) = 0;
+ virtual Enum & Store_Enum(
+ const InputContext &
+ i_context,
+ const String & i_localName ) = 0;
+ virtual Typedef & Store_Typedef(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ Type_id i_referredType ) = 0;
+
+ /// @return 0, if the function is duplicate.
+ virtual Function * Store_Operation(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ Type_id i_returnType,
+ const std::vector<S_Parameter> &
+ i_parameters,
+ E_Virtuality i_virtuality,
+ E_ConVol i_conVol,
+ FunctionFlags i_flags,
+ bool i_throwExists,
+ const std::vector<Tid> &
+ i_exceptions ) = 0;
+ virtual Variable & Store_Variable(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ Type_id i_type,
+ VariableFlags i_flags,
+ const String & i_arraySize,
+ const String & i_initValue ) = 0;
+ virtual EnumValue & Store_EnumValue(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ const String & i_initValue ) = 0;
+ // INQUIRY
+ virtual const Namespace &
+ GlobalNamespace() const = 0;
+ virtual const CodeEntity &
+ Find_Ce(
+ Ce_id i_id ) const = 0;
+ virtual const CodeEntity *
+ Search_Ce(
+ Ce_id i_id ) const = 0;
+
+ /// It's assumed that i_rSearchedName is an absolute name.
+ virtual const CodeEntity *
+ Search_CeAbsolute(
+ const CodeEntity & i_curScope,
+ const QualifiedName &
+ i_absoluteName ) const = 0;
+ virtual const CodeEntity *
+ Search_CeLocal(
+ const String & i_relativeName,
+ bool i_isFunction,
+ const Namespace & i_curNamespace,
+ const Class * i_curClass ) const = 0;
+ virtual void Get_QualifiedName(
+ StreamStr & o_result,
+ const String & i_localName,
+ Ce_id i_owner,
+ const char * i_delimiter = "::" ) const = 0;
+ virtual void Get_SignatureText(
+ StreamStr & o_rOut,
+ const OperationSignature &
+ i_signature,
+ const StringVector *
+ i_sParameterNames = 0 ) const = 0;
+ virtual CesResultList
+ Search_TypeName(
+ const String & i_sName ) const = 0;
+ // ACCESS
+ virtual Namespace & GlobalNamespace() = 0;
+};
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/cp_def.hxx b/autodoc/inc/ary/cpp/cp_def.hxx
new file mode 100644
index 000000000000..8fd44074523b
--- /dev/null
+++ b/autodoc/inc/ary/cpp/cp_def.hxx
@@ -0,0 +1,102 @@
+/* -*- 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 ARY_CPP_CP_DEF_HXX
+#define ARY_CPP_CP_DEF_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class Define;
+ class InputContext;
+ class Macro;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** Acess to C++ defines and macros in the repository.
+*/
+class DefPilot
+{
+ public:
+ typedef DefsList::const_iterator DefsIterator;
+
+
+
+ // LIFECYCLE
+ virtual ~DefPilot() {}
+
+
+ // OPERATIONS
+ virtual Define & Store_Define(
+ const InputContext& i_rContext,
+ const String & i_sName,
+ const StringVector &
+ i_rDefinition ) = 0;
+ virtual Macro & Store_Macro(
+ const InputContext& i_rContext,
+ const String & i_sName,
+ const StringVector &
+ i_rParams,
+ const StringVector &
+ i_rDefinition ) = 0;
+ // INQUIRY
+ virtual const DefineEntity &
+ Find_Def(
+ De_id i_id ) const = 0;
+ virtual DefsResultList
+ AllDefines() const = 0;
+ virtual DefsResultList
+ AllMacros() const = 0;
+};
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/cp_type.hxx b/autodoc/inc/ary/cpp/cp_type.hxx
new file mode 100644
index 000000000000..edc536fcea71
--- /dev/null
+++ b/autodoc/inc/ary/cpp/cp_type.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 ARY_CPP_CP_TYPE_HXX
+#define ARY_CPP_CP_TYPE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class InputContext;
+ class Type;
+ class UsedType;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+
+/** Acess to all found C++ types (as they are used in declarations)
+ in the repository.
+*/
+class TypePilot
+{
+ public:
+
+ // LIFECYCLE
+ virtual ~TypePilot() {}
+
+
+ // OPERATIONS
+ virtual const Type &
+ CheckIn_UsedType(
+ const InputContext &
+ i_context,
+ DYN UsedType & pass_type ) = 0;
+ // INQUIRY
+ virtual const Type &
+ Find_Type(
+ Type_id i_type ) const = 0;
+ virtual bool Get_TypeText(
+ StreamStr & o_result,
+ Type_id i_type ) const = 0;
+ virtual bool Get_TypeText(
+ StreamStr & o_preName, /// ::ary::cpp::
+ StreamStr & o_name, /// MyClass
+ StreamStr & o_postName, /// <TplArgument> * const &
+ Type_id i_type ) const = 0;
+ virtual Type_id Tid_Ellipse() const = 0;
+};
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/inpcontx.hxx b/autodoc/inc/ary/cpp/inpcontx.hxx
new file mode 100644
index 000000000000..9fea2e2053b7
--- /dev/null
+++ b/autodoc/inc/ary/cpp/inpcontx.hxx
@@ -0,0 +1,219 @@
+/* -*- 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 ARY_CPP_INPCONTX_HXX
+#define ARY_CPP_INPCONTX_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+
+namespace ary
+{
+namespace loc
+{
+ class File;
+}
+namespace cpp
+{
+ class Gate;
+ class Namespace;
+ class Class;
+ class Enum;
+
+ class OperationSignature;
+}
+}
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** The context of a CodeEntity, which is going to be stored in the
+ repository. The information is used mainly by ->ary::cpp::CeAdmin.
+*/
+class InputContext
+{
+ public:
+ class Owner
+ {
+ public:
+ // LIFECYCLE
+ virtual ~Owner() {}
+
+ // OPERATIONS
+ /// Adds Class data to current inner scope (Namespace or Class).
+ void Add_Class(
+ const String & i_sLocalName,
+ Cid i_nId );
+ /// Adds Enum data to current inner scope (Namespace or Class).
+ void Add_Enum(
+ const String & i_sLocalName,
+ Cid i_nId );
+ /// Adds Typedef data to current inner scope (Namespace or Class).
+ void Add_Typedef(
+ const String & i_sLocalName,
+ Cid i_nId );
+ /// Adds Operation data to current inner scope (Namespace or Class).
+ void Add_Operation(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsStaticMember ); /// True only for static class members.
+ /// Adds Variable data to current inner scope (Namespace or Class).
+ void Add_Variable(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsConst,
+ bool i_bIsStaticMember ); /// True only for static class members.
+ // INQUIRY
+ Ce_id CeId() const;
+
+ /** @attention Must only be used by ary::cpp::GatePilot!
+ Will work nowhere else!
+ */
+ virtual bool HasClass(
+ const String & i_sLocalName ) = 0;
+ private:
+ virtual void do_Add_Class(
+ const String & i_sLocalName,
+ Cid i_nId ) = 0;
+ virtual void do_Add_Enum(
+ const String & i_sLocalName,
+ Cid i_nId ) = 0;
+ virtual void do_Add_Typedef(
+ const String & i_sLocalName,
+ Cid i_nId ) = 0;
+ virtual void do_Add_Operation(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsStatic ) = 0;
+ virtual void do_Add_Variable(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsConst,
+ bool i_bIsStatic ) = 0;
+ virtual Ce_id inq_CeId() const = 0;
+ };
+
+ // LIFECYCLE
+ virtual ~InputContext() {}
+
+ // OPERATIONS
+
+ // INQUIRY
+ loc::File & CurFile() const;
+
+ Namespace & CurNamespace() const;
+ Class * CurClass() const;
+ Enum * CurEnum() const;
+
+ Owner & CurOwner() const;
+ E_Protection CurProtection() const;
+
+ private:
+ virtual loc::File & inq_CurFile() const = 0;
+
+ virtual Namespace & inq_CurNamespace() const = 0;
+ virtual Class * inq_CurClass() const = 0;
+ virtual Enum * inq_CurEnum() const = 0;
+
+ virtual Owner & inq_CurOwner() const = 0;
+ virtual E_Protection
+ inq_CurProtection() const = 0;
+};
+
+
+
+
+// IMPLEMENTATION
+inline loc::File &
+InputContext::CurFile() const
+ { return inq_CurFile(); }
+
+inline Namespace &
+InputContext::CurNamespace() const
+ { return inq_CurNamespace(); }
+inline Class *
+InputContext::CurClass() const
+ { return inq_CurClass(); }
+inline Enum *
+InputContext::CurEnum() const
+ { return inq_CurEnum(); }
+inline InputContext::Owner &
+InputContext::CurOwner() const
+ { return inq_CurOwner(); }
+inline E_Protection
+InputContext::CurProtection() const
+ { return inq_CurProtection(); }
+
+
+inline void
+InputContext::Owner::Add_Class( const String & i_sLocalName,
+ Cid i_nId )
+ { do_Add_Class(i_sLocalName, i_nId); }
+inline void
+InputContext::Owner::Add_Enum( const String & i_sLocalName,
+ Cid i_nId )
+ { do_Add_Enum(i_sLocalName, i_nId); }
+inline void
+InputContext::Owner::Add_Typedef( const String & i_sLocalName,
+ Cid i_nId )
+ { do_Add_Typedef(i_sLocalName, i_nId); }
+inline void
+InputContext::Owner::Add_Operation( const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsStatic )
+ { do_Add_Operation( i_sLocalName, i_nId, i_bIsStatic ); }
+inline void
+InputContext::Owner::Add_Variable( const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsConst,
+ bool i_bIsStatic )
+ { do_Add_Variable( i_sLocalName, i_nId, i_bIsConst, i_bIsStatic ); }
+inline Ce_id
+InputContext::Owner::CeId() const
+ { return inq_CeId(); }
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/namechain.hxx b/autodoc/inc/ary/cpp/namechain.hxx
new file mode 100644
index 000000000000..9e85b4ee4b0d
--- /dev/null
+++ b/autodoc/inc/ary/cpp/namechain.hxx
@@ -0,0 +1,143 @@
+/* -*- 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 ARY_CPP_NAMECHAI_HXX
+#define ARY_CPP_NAMECHAI_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+
+
+namespace ary
+{
+namespace cpp
+{
+ class Gate;
+
+namespace ut
+{
+ class List_TplParameter;
+
+class NameSegment
+{
+ public:
+ NameSegment(
+ const char * i_sName );
+ /** @precond MPT pTemplate.
+ This cannot be used, except of inserting a new element
+ in the segment list of ary::cpp::ut::NameChain. In that
+ case, the template parameter list doe snot yet exist.
+ */
+ NameSegment(
+ const NameSegment & i_rSeg );
+ ~NameSegment();
+
+ // OPERATIONS
+ List_TplParameter & AddTemplate();
+
+ // INQUIRY
+ const String & Name() const;
+
+ /// @return as strcmp().
+ intt Compare(
+ const NameSegment & i_rOther ) const;
+ void Get_Text_AsScope(
+ StreamStr & o_rOut,
+ const ary::cpp::Gate &
+ i_rGate ) const;
+ void Get_Text_AsMainType(
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const ary::cpp::Gate &
+ i_rGate ) const;
+
+ NameSegment& operator=(const NameSegment&);
+ private:
+ String sName;
+ Dyn<List_TplParameter>
+ pTemplate;
+};
+
+class NameChain
+{
+ public:
+ typedef std::vector<NameSegment>::const_iterator
+ const_iterator;
+
+ NameChain();
+ ~NameChain();
+
+ // OPERATIONS
+ void Add_Segment(
+ const char * i_sSeg );
+ /** @precond aSegments.size() > 0.
+ Which means: Add_Segment() has to be called at least once before.
+ */
+ List_TplParameter & Templatize_LastSegment();
+
+ // INQUIRY
+ const_iterator begin() const { return aSegments.begin(); }
+ const_iterator end() const { return aSegments.end(); }
+
+ /// @return like strcmp.
+ intt Compare(
+ const NameChain & i_rChain ) const;
+ /// @ATTENTION Return value is volatile. Not reentrance enabled.
+ const String & LastSegment() const;
+
+ void Get_Text(
+ StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const ary::cpp::Gate &
+ i_rGate ) const;
+ private:
+ std::vector< NameSegment >
+ aSegments;
+};
+
+
+
+// IMPLEMENTATION
+inline const String &
+NameSegment::Name() const
+ { return sName; }
+
+
+
+
+
+
+} // namespace ut
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/cpp/usedtype.hxx b/autodoc/inc/ary/cpp/usedtype.hxx
new file mode 100644
index 000000000000..b7f6d68ac4cc
--- /dev/null
+++ b/autodoc/inc/ary/cpp/usedtype.hxx
@@ -0,0 +1,215 @@
+/* -*- 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 ARY_CPP_USEDTYPE_HXX
+#define ARY_CPP_USEDTYPE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/c_type.hxx>
+ // OTHER
+#include <ary/cpp/namechain.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class CePilot;
+
+namespace ut
+{
+ class List_TplParameter;
+}
+}
+}
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** This class represents a type in textual form, like it is parsed out of
+ source code as a variable type or function return type.
+*/
+class UsedType : public Type
+{
+ public:
+ enum E_ClassId { class_id = 1203 };
+
+ explicit UsedType(
+ Ce_id i_scope );
+ ~UsedType();
+ // OPERATORS
+ bool operator<(
+ const UsedType & i_rType ) const;
+ // OPERATIONS
+
+ // Operations to build up the used type from parsing:
+ void Set_Absolute(); /// "::" is in front.
+ void Add_NameSegment(
+ const char * i_sSeg );
+ ut::List_TplParameter &
+ Enter_Template();
+ void Set_Unsigned();
+ void Set_Signed();
+ void Set_BuiltIn(
+ const char * i_sType );
+ void Set_Const(); /// Sets CV to the type or the present pointer level, whatever is highest.
+ void Set_Volatile(); /// Sets CV to the type or the present pointer level, whatever is highest.
+ void Add_PtrLevel(); /// For an '*'.
+ void Set_Reference(); /// For an '&'.
+
+ // Operations to find the relating CodeEntity:
+ /** This needs to be called only one time. After that
+ RelatedCe() will return the value.
+
+ When connectiing all parsed types, there are three steps:
+ 1. Find related types in the same scope and namespaces above.
+ 2. Then all classes can be connected to their base classes.
+ 3. Lastly types can be connected to Ces only known via their base
+ classes. This is not possible at step 1.
+
+ @see Connect2CeOnlyKnownViaBaseClass()
+ */
+ void Connect2Ce(
+ const CePilot & i_ces );
+
+ /** @see Connect2Ce()
+ */
+ void Connect2CeOnlyKnownViaBaseClass(
+ const Gate & i_gate );
+
+ // INQUIRY
+ /** @return True, if type consists of one built-in typename and
+ nothing else.
+ */
+ bool IsBuiltInType() const;
+ /** @return the full local name, including template instantiation, but without
+ '*','&' or modifiers.
+ */
+ const String & LocalName() const;
+ E_TypeSpecialisation
+ TypeSpecialisation() const;
+
+ private:
+ // Interface csv::ConstProcessorClient
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface ary::cpp::Type:
+ virtual Rid inq_RelatedCe() const;
+ virtual bool inq_IsConst() const;
+ virtual void inq_Get_Text(
+ StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const ary::cpp::Gate &
+ i_rGate ) const;
+ // Local
+ typedef std::vector< ary::cpp::E_ConVol > PtrLevelVector;
+
+ uintt PtrLevel() const { return uintt(aPtrLevels.size()); }
+ Ce_id RecursiveSearchCe_InBaseClassesOf(
+ const CodeEntity & i_mayBeClass,
+ const StringVector &
+ i_myQualification,
+ const String & i_myName,
+ const Gate & i_gate ) const;
+ void Get_NameParts(
+ StringVector & o_qualification,
+ String & o_name );
+
+ // Forbidden functions
+ UsedType(
+ const UsedType & i_rType );
+ bool operator=(
+ const UsedType & i_rType );
+
+ // DATA
+ ut::NameChain aPath;
+ PtrLevelVector aPtrLevels;
+ ary::cpp::E_ConVol eConVol_Type;
+ bool bIsReference;
+ bool bIsAbsolute;
+ bool bRefers2BuiltInType;
+ E_TypeSpecialisation
+ eTypeSpecialisation;
+ Ce_id nRelatedCe;
+
+ /// Namespace or class scope where the type occurred.
+ Ce_id nScope;
+};
+
+
+namespace ut
+{
+ class TemplateParameter;
+
+class List_TplParameter
+{
+ public:
+ typedef std::vector< DYN TemplateParameter * >::const_iterator const_iterator;
+
+ List_TplParameter();
+ ~List_TplParameter();
+
+ void AddParam_Type(
+ Type_id i_nType );
+ /// puts "< " TemplateArgumentList " >" to o_rOut.
+ void Get_Text(
+ StreamStr & o_rOut,
+ const ary::cpp::Gate &
+ i_rGate ) const;
+ /// @return as strcmp().
+ intt Compare(
+ const List_TplParameter &
+ i_rOther ) const;
+
+ private:
+ typedef std::vector< DYN TemplateParameter * > Vector_TplArgument;
+
+ Vector_TplArgument aTplParameters;
+};
+
+} // namespace ut
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/d_boolean.hxx b/autodoc/inc/ary/doc/d_boolean.hxx
new file mode 100644
index 000000000000..1bf7bc3e307e
--- /dev/null
+++ b/autodoc/inc/ary/doc/d_boolean.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 ARY_DOC_D_BOOLEAN_HXX
+#define ARY_DOC_D_BOOLEAN_HXX
+
+// BASE CLASSES
+#include <ary/doc/d_node.hxx>
+
+// USED SERVICES
+
+
+
+
+namespace ary
+{
+namespace doc
+{
+
+
+/** Repesents a boolean documentation item like "optional" or "not optional".
+*/
+class Boolean : public Node
+{
+ public:
+ // LIFECYCLE
+ explicit Boolean(
+ nodetype::id i_type );
+ virtual ~Boolean();
+
+ // OPERATIONS
+ void Set(
+ bool i_b );
+ // INQUIRY
+ bool IsTrue() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // DATA
+ bool b;
+};
+
+
+
+
+// IMPLEMENTATION
+inline
+Boolean::Boolean(nodetype::id i_type)
+ : Node(i_type),
+ b(false)
+{
+}
+
+inline bool
+Boolean::IsTrue() const
+{
+ return b;
+}
+
+inline void
+Boolean::Set( bool i_b )
+{
+ b = i_b;
+}
+
+
+
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/d_docu.hxx b/autodoc/inc/ary/doc/d_docu.hxx
new file mode 100644
index 000000000000..8469d9646220
--- /dev/null
+++ b/autodoc/inc/ary/doc/d_docu.hxx
@@ -0,0 +1,109 @@
+/* -*- 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 ARY_DOC_D_DOCU_HXX
+#define ARY_DOC_D_DOCU_HXX
+
+// BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+
+// USED SERVICES
+#include <ary/doc/d_node.hxx>
+
+
+
+
+namespace ary
+{
+namespace doc
+{
+
+
+/** Represents a documentation which is assigned to an Autodoc
+ repository entity.
+*/
+class Documentation : public csv::ConstProcessorClient
+{
+ public:
+ Documentation();
+ ~Documentation();
+ // OPERATIONS
+ void Clear();
+
+ // INQUIRY
+ const Node * Data() const;
+
+ // ACCESS
+ Node * Data();
+ void Set_Data(
+ ary::doc::Node & i_data );
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // DATA
+ Dyn<Node> pData;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Documentation::Clear()
+{
+ pData = 0;
+}
+
+inline const Node *
+Documentation::Data() const
+{
+ return pData.Ptr();
+}
+
+inline Node *
+Documentation::Data()
+{
+ return pData.Ptr();
+}
+
+inline void
+Documentation::Set_Data(ary::doc::Node & i_data)
+{
+ pData = &i_data;
+}
+
+
+
+
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/d_node.hxx b/autodoc/inc/ary/doc/d_node.hxx
new file mode 100644
index 000000000000..8dd96b8f657b
--- /dev/null
+++ b/autodoc/inc/ary/doc/d_node.hxx
@@ -0,0 +1,112 @@
+/* -*- 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 ARY_DOC_D_NODE_HXX
+#define ARY_DOC_D_NODE_HXX
+
+// BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+// USED SERVICES
+#include <cosv/tpl/vvector.hxx>
+#include <ary/doc/d_types4doc.hxx>
+
+
+
+
+namespace ary
+{
+namespace doc
+{
+
+
+/** The abstract base class for any type of documentation content.
+
+ A ->Documentation has as content a hierarchy of Nodes, each can be a
+ different kind of content, like descriptions of single items or structs
+ or lists of Nodes.
+*/
+class Node : public csv::ConstProcessorClient
+{
+ public:
+ // LIFECYCLE
+ virtual ~Node();
+
+ // OPERATIONS
+ void Add_toChain(
+ DYN Node & pass_nextNode );
+ // INQUIRY
+ nodetype::id Type() const;
+ const Node * Next() const;
+ bool IsSingle() const;
+ uintt ListSize() const;
+
+ protected:
+ explicit Node(
+ nodetype::id i_type);
+ private:
+ // Forbid copies:
+ Node(const Node&);
+ Node & operator=(const Node&);
+
+ // DATA
+ nodetype::id nType;
+ Dyn<Node> pNext; /// Next ->Node in same list.
+};
+
+typedef csv::VirtualVector<Node> NodeList;
+
+
+
+
+// IMPLEMENTATION
+inline nodetype::id
+Node::Type() const
+{
+ return nType;
+}
+
+inline const Node *
+Node::Next() const
+{
+ return pNext.Ptr();
+}
+
+inline bool
+Node::IsSingle() const
+{
+ return pNext.operator bool();
+}
+
+
+
+
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/d_oldcppdocu.hxx b/autodoc/inc/ary/doc/d_oldcppdocu.hxx
new file mode 100644
index 000000000000..0429ab312d66
--- /dev/null
+++ b/autodoc/inc/ary/doc/d_oldcppdocu.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 ARY_DOC_D_OLDCPPDOCU_HXX
+#define ARY_DOC_D_OLDCPPDOCU_HXX
+// KORR_DEPRECATED_3.0
+
+// BASE CLASSES
+#include <ary/doc/d_node.hxx>
+// USED SERVICES
+#include <ary/info/inftypes.hxx>
+#include <ary/ary_disp.hxx>
+
+namespace ary
+{
+namespace info
+{
+ class AtTag;
+ class DocuStore;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace doc
+{
+ using ::ary::info::AtTag;
+ using ::ary::info::E_AtTagId;
+
+
+/** Wrapper class for old C++ documentation format.
+
+ To be replaced by using the standard format.
+*/
+class OldCppDocu : public Node
+{
+ public:
+ typedef std::vector< DYN AtTag * > TagList;
+
+ // LIFECYCLE
+ OldCppDocu();
+ virtual ~OldCppDocu();
+
+ void Store2(
+ info::DocuStore & o_rDocuStore );
+
+ virtual AtTag * Create_StdTag(
+ E_AtTagId i_eId );
+ virtual AtTag * CheckIn_BaseTag();
+ virtual AtTag * CheckIn_ExceptionTag();
+ virtual AtTag * Create_ImplementsTag();
+ virtual AtTag * Create_KeywordTag();
+ virtual AtTag * CheckIn_ParameterTag();
+ virtual AtTag * CheckIn_SeeTag();
+ virtual AtTag * CheckIn_TemplateTag();
+ virtual AtTag * Create_LabelTag();
+ virtual AtTag * Create_DefaultTag();
+ virtual AtTag * Create_SinceTag(); /// @return always the first one created.
+
+ virtual void Replace_AtShort_By_AtDescr();
+
+ virtual void Set_Obsolete();
+ virtual void Set_Internal();
+ virtual void Set_Interface() { bIsInterface = true; }
+
+ // INQUIRY
+ const TagList & Tags() const { return aTags; }
+ const AtTag & Short() const;
+ bool IsObsolete() const { return bIsObsolete; }
+ virtual bool IsInternal() const;
+ virtual bool IsInterface() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // DATA
+ unsigned char nTags[ary::info::C_eAtTag_NrOfClasses];
+
+ /** Creates a new AtTag at the end of aTags.
+ The index of this new AtTag is inserted in nTags at position
+ i_nIndex.
+ */
+ AtTag * & NewTag(
+ UINT8 i_nIndex );
+ /** Returns the Tag with the position nTags[i_nIndex]
+ in aTags.
+ */
+ AtTag & GetTag(
+ UINT8 i_nIndex );
+
+ TagList aTags;
+ bool bIsObsolete;
+ bool bIsInternal;
+ bool bIsInterface;
+};
+
+
+
+
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/d_oldidldocu.hxx b/autodoc/inc/ary/doc/d_oldidldocu.hxx
new file mode 100644
index 000000000000..542711784973
--- /dev/null
+++ b/autodoc/inc/ary/doc/d_oldidldocu.hxx
@@ -0,0 +1,114 @@
+/* -*- 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 ARY_DOC_D_OLDIDLDOCU_HXX
+#define ARY_DOC_D_OLDIDLDOCU_HXX
+
+// BASE CLASSES
+#include <ary/doc/d_node.hxx>
+// USED SERVICES
+#include <ary_i/ci_text2.hxx>
+
+
+
+
+namespace ary
+{
+namespace inf
+{
+ class AtTag2;
+ class DocuToken;
+ class DocuTex2;
+}
+namespace doc
+{
+ using ::ary::inf::AtTag2;
+ using ::ary::inf::DocuToken;
+ using ::ary::inf::DocuTex2;
+
+
+
+/** Wrapper for the old idl documentation format.
+*/
+class OldIdlDocu : public Node
+{
+ public:
+ OldIdlDocu();
+ ~OldIdlDocu();
+
+ void AddToken2Short(
+ DYN DocuToken & let_drToken )
+ { aShort.AddToken(let_drToken); }
+ void AddToken2Description(
+ DYN DocuToken & let_drToken )
+ { aDescription.AddToken(let_drToken); }
+ void AddToken2DeprecatedText(
+ DYN DocuToken & let_drToken );
+ void AddAtTag(
+ DYN AtTag2 & let_drAtTag )
+ { aTags.push_back(&let_drAtTag); }
+ void SetPublished() { bIsPublished = true; }
+ void SetDeprecated() { bIsDeprecated = true; }
+ void SetOptional() { bIsOptional = true; }
+ void SetExternShort(
+ const DocuTex2 & i_pExternShort )
+ { pExternShort = &i_pExternShort; }
+
+ const DocuTex2 & Short() const { return pExternShort != 0 ? *pExternShort : aShort; }
+ const DocuTex2 & Description() const { return aDescription; }
+ const DocuTex2 & DeprecatedText() const { return aDeprecatedText; }
+ const std::vector< AtTag2* > &
+ Tags() const { return aTags; }
+ bool IsPublished() const { return bIsPublished; }
+ bool IsDeprecated() const { return bIsDeprecated; }
+ bool IsOptional() const { return bIsOptional; }
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // DATA
+ DocuTex2 aShort;
+ DocuTex2 aDescription;
+ DocuTex2 aDeprecatedText;
+ std::vector< AtTag2* >
+ aTags;
+ const DocuTex2 * pExternShort;
+ bool bIsPublished;
+ bool bIsDeprecated;
+ bool bIsOptional;
+};
+
+
+
+
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/d_parametrized.hxx b/autodoc/inc/ary/doc/d_parametrized.hxx
new file mode 100644
index 000000000000..78659e701441
--- /dev/null
+++ b/autodoc/inc/ary/doc/d_parametrized.hxx
@@ -0,0 +1,124 @@
+/* -*- 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 ARY_DOC_D_PARAMETER_HXX
+#define ARY_DOC_D_PARAMETER_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/doc/d_node.hxx>
+
+namespace ary
+{
+namespace doc
+{
+
+
+/** Documentation unit with Parameter.
+*/
+template <class T>
+class Parametrized : public Node
+{
+ public:
+ // LIFECYCLE
+ explicit Parametrized(
+ nodetype::id i_id,
+ T i_Parameter );
+ virtual ~Parametrized();
+
+ // INQUIRY
+ const HyperText & Doc() const;
+ const T & Parameter() const;
+
+ // ACESS
+ HyperText & Doc();
+ void Set_Parameter(
+ const T & i_param );
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // DATA
+ HyperText aDoc;
+ T aParameter;
+};
+
+
+
+
+// IMPLEMENTATION
+template <class T>
+Parametrized<T>::Parametrized( nodetype::id i_id,
+ T i_Parameter )
+ : Node(i_id),
+ aDoc(),
+ aParameter(i_Parameter)
+{
+}
+
+template <class T>
+Parametrized<T>::~Parametrized()
+{
+}
+
+template <class T>
+const HyperText &
+Parametrized<T>::Doc() const
+{
+ return aDoc;
+}
+
+template <class T>
+const T &
+Parametrized<T>::Parameter() const
+{
+ return aParameter;
+}
+
+template <class T>
+HyperText &
+Parametrized<T>::Doc()
+{
+ return aDoc;
+}
+
+template <class T>
+inline void
+Parametrized<T>::Set_Parameter(const T & i_param)
+{
+ aParameter = i_param;
+}
+
+
+
+
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/d_types4doc.hxx b/autodoc/inc/ary/doc/d_types4doc.hxx
new file mode 100644
index 000000000000..dbf614af6c56
--- /dev/null
+++ b/autodoc/inc/ary/doc/d_types4doc.hxx
@@ -0,0 +1,73 @@
+/* -*- 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 ARY_DOC_D_TYPES4DOC_HXX
+#define ARY_DOC_D_TYPES4DOC_HXX
+
+// USED SERVICES
+
+
+
+namespace ary
+{
+namespace doc
+{
+
+
+/** Type of a documentation: multiple lines or single line.
+*/
+enum E_BlockType
+{
+ dbt_none = 0,
+ dbt_multiline,
+ dbt_singleline
+};
+
+/** Type of documentation text: with html or without.
+*/
+enum E_TextType
+{
+ dtt_none = 0,
+ dtt_plain,
+ dtt_html
+};
+
+namespace nodetype
+{
+
+typedef int id;
+
+} // namespace nodetype
+
+
+
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/doc/ht/dht_interpreter.hxx b/autodoc/inc/ary/doc/ht/dht_interpreter.hxx
new file mode 100644
index 000000000000..874f3425bf48
--- /dev/null
+++ b/autodoc/inc/ary/doc/ht/dht_interpreter.hxx
@@ -0,0 +1,79 @@
+/* -*- 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 ARY_DHT_INTERPRETER_HXX
+#define ARY_DHT_INTERPRETER_HXX
+
+
+
+
+namespace ary
+{
+namespace doc
+{
+namespace ht
+{
+ class Processor;
+
+
+/** Interface for all interpreters of a ->Component.
+*/
+class Interpreter
+{
+ public:
+ virtual ~Interpreter() {}
+
+ void Accept(
+ Processor & io_processor,
+ const String & i_data ) const;
+ private:
+ virtual void do_Accept(
+ Processor & io_processor,
+ const String & i_data ) const = 0;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Interpreter::Accept( Processor & io_processor,
+ const String & i_data ) const
+{
+ do_Accept(io_processor, i_data);
+}
+
+
+
+
+} // namespace ht
+} // namespace doc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/entity.hxx b/autodoc/inc/ary/entity.hxx
new file mode 100644
index 000000000000..85ecc26a49a0
--- /dev/null
+++ b/autodoc/inc/ary/entity.hxx
@@ -0,0 +1,84 @@
+/* -*- 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 ARY_ENTITY_HXX
+#define ARY_ENTITY_HXX
+
+// BASE CLASSES
+#include <ary/object.hxx>
+
+
+
+
+namespace ary
+{
+
+
+/** Interface for every class, whose objects are searchable within the
+ Autodoc Repository by an id.
+
+ @todo
+ Possibly make ->Set_Id() less public accessible.
+*/
+class Entity : public Object
+{
+ public:
+ virtual ~Entity() {}
+
+ Rid Id() const;
+
+ /// @attention Must be used only by ->ary::stg::Storage<>
+ void Set_Id(
+ Rid i_nId );
+ protected:
+ Entity() : nId(0) {}
+ private:
+ // DATA
+ Rid nId;
+};
+
+
+inline Rid
+Entity::Id() const
+{
+ return nId;
+}
+
+inline void
+Entity::Set_Id(Rid i_nId)
+{
+ nId = i_nId;
+}
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/getncast.hxx b/autodoc/inc/ary/getncast.hxx
new file mode 100644
index 000000000000..cc5a0afbfd65
--- /dev/null
+++ b/autodoc/inc/ary/getncast.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ARY_GETNCAST_HXX
+#define ARY_GETNCAST_HXX
+
+
+// USED SERVICES
+#include <ary/object.hxx>
+
+
+
+
+namespace ary
+{
+
+
+template <class DEST>
+inline bool
+is_type(const ary::Object & i_obj)
+{
+ return i_obj.AryClass() == DEST::class_id;
+}
+
+
+template <class DEST>
+inline const DEST &
+ary_cast( const Object & ce)
+{
+ csv_assert( is_type<DEST>(ce) );
+ return static_cast< const DEST& >(ce);
+}
+
+template <class DEST>
+inline DEST &
+ary_cast( Object & ce)
+{
+ csv_assert( is_type<DEST>(ce) );
+ return static_cast< DEST& >(ce);
+}
+
+template <class DEST>
+inline const DEST *
+ary_cast( const Object * ce)
+{
+ if ( ce ? is_type<DEST>(*ce) : false )
+ return static_cast< const DEST* >(ce);
+ return 0;
+}
+
+template <class DEST>
+inline DEST *
+ary_cast( Object * ce)
+{
+ if ( ce ? is_type<DEST>(*ce) : false )
+ return static_cast< DEST* >(ce);
+ return 0;
+}
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_attribute.hxx b/autodoc/inc/ary/idl/i_attribute.hxx
new file mode 100644
index 000000000000..42686e22e330
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_attribute.hxx
@@ -0,0 +1,138 @@
+/* -*- 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 ARY_IDL_I_ATTRIBUTE_HXX
+#define ARY_IDL_I_ATTRIBUTE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_attribute
+{
+ struct attr;
+}
+
+
+
+
+/** @resp
+ Represents an IDL property.
+*/
+class Attribute : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2014 };
+
+ // LIFECYCLE
+ Attribute(
+ const String & i_sName,
+ Ce_id i_nInterface,
+ Ce_id i_nModule,
+ Type_id i_nType,
+ bool i_bReadonly,
+ bool i_bBound );
+ ~Attribute();
+ // OPERATIONS
+ void Add_GetException(
+ Type_id i_nException );
+ void Add_SetException(
+ Type_id i_nException );
+
+ // INQUIRY
+ Type_id Type() const;
+ bool IsReadonly() const;
+ bool IsBound() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Local
+ typedef std::vector< Type_id > ExceptionList;
+ friend struct ifc_attribute::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ Ce_id nNameRoom;
+
+ Type_id nType;
+ ExceptionList aGetExceptions;
+ ExceptionList aSetExceptions;
+ bool bReadonly;
+ bool bBound;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Attribute::Add_GetException( Type_id i_nException )
+ { aGetExceptions.push_back(i_nException); }
+
+inline void
+Attribute::Add_SetException( Type_id i_nException )
+ { aSetExceptions.push_back(i_nException); }
+
+inline Type_id
+Attribute::Type() const
+ { return nType; }
+
+inline bool
+Attribute::IsReadonly() const
+ { return bReadonly; }
+
+inline bool
+Attribute::IsBound() const
+ { return bBound; }
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_ce.hxx b/autodoc/inc/ary/idl/i_ce.hxx
new file mode 100644
index 000000000000..e2d0dce21007
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_ce.hxx
@@ -0,0 +1,138 @@
+/* -*- 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 ARY_IDL_I_CE_HXX
+#define ARY_IDL_I_CE_HXX
+
+// BASE CLASSES
+#include <ary/entity.hxx>
+// USED SERVICES
+#include <ary/doc/d_docu.hxx>
+#include <ary/idl/i_ce2s.hxx>
+#include <ary/idl/i_types4idl.hxx>
+
+
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** @resp Base class for all IDL code entities.
+
+ A @->CodeEntity is a namespace, type, data or function, which occures in
+ the parsed UNO IDL code and is described and/or commented within the
+ Autodoc repository.
+
+ This is a storage base class, where more special classes are
+ derived from.
+*/
+class CodeEntity : public ary::Entity
+{
+ public:
+ // LIFECYCLE
+ virtual ~CodeEntity();
+
+ // OPERATION
+
+ // INQUIRY
+ Ce_id CeId() const { return Ce_id(Id()); }
+ const String & LocalName() const;
+ Ce_id NameRoom() const;
+ Ce_id Owner() const;
+ E_SightLevel SightLevel() const;
+
+ const ary::doc::Documentation &
+ Docu() const;
+ const Ce_2s & Secondaries() const;
+
+ static const CodeEntity &
+ Null_();
+ // ACCESS
+ void Set_Docu(
+ DYN ary::doc::Node &
+ pass_data );
+ Ce_2s & Secondaries();
+
+ protected:
+ CodeEntity();
+ private:
+ // Locals
+ virtual const String & inq_LocalName() const = 0;
+ virtual Ce_id inq_NameRoom() const = 0;
+ virtual Ce_id inq_Owner() const = 0;
+ virtual E_SightLevel inq_SightLevel() const = 0;
+
+ // DATA
+ ary::doc::Documentation
+ aDocu;
+ Dyn<Ce_2s> p2s;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const String &
+CodeEntity::LocalName() const
+ { return inq_LocalName(); }
+
+inline Ce_id
+CodeEntity::NameRoom() const
+ { return inq_NameRoom(); }
+
+inline Ce_id
+CodeEntity::Owner() const
+ { return inq_Owner(); }
+
+inline E_SightLevel
+CodeEntity::SightLevel() const
+ { return inq_SightLevel(); }
+
+inline const ary::doc::Documentation &
+CodeEntity::Docu() const
+ { return aDocu; }
+
+inline void
+CodeEntity::Set_Docu(DYN ary::doc::Node & pass_data)
+{
+ aDocu.Set_Data(pass_data);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_ce2s.hxx b/autodoc/inc/ary/idl/i_ce2s.hxx
new file mode 100644
index 000000000000..fa662a48c223
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_ce2s.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 ARY_IDL_I_CE2S_HXX
+#define ARY_IDL_I_CE2S_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_types4idl.hxx>
+
+
+namespace ary
+{
+
+namespace idl
+{
+
+
+
+/** Abstract base for all secondary productions of code entities
+*/
+class Ce_2s
+{
+ public:
+ // LIFECYCLE
+ virtual ~Ce_2s();
+
+ static DYN Ce_2s * Create_(
+ ClassId i_nCeClass );
+ // OPERATIONS
+ void Add_Link2DescriptionInManual(
+ const String & i_link,
+ const String & i_linkUI )
+ { aDescriptionsInManual.push_back(i_link); aDescriptionsInManual.push_back(i_linkUI); }
+ void Add_Link2RefInManual(
+ const String & i_link,
+ const String & i_linkUI )
+ { aRefsInManual.push_back(i_link); aRefsInManual.push_back(i_linkUI); }
+ std::vector<Ce_id> &
+ Access_List(
+ int i_indexOfList );
+ // INQUIRY
+ const StringVector &
+ Links2DescriptionInManual() const
+ { return aDescriptionsInManual; }
+ const StringVector &
+ Links2RefsInManual() const
+ { return aRefsInManual; }
+ int CountXrefLists() const { return aXrefLists.size(); }
+ const std::vector<Ce_id> &
+ List(
+ int i_indexOfList ) const;
+ private:
+ typedef DYN std::vector<Ce_id> * ListPtr;
+
+ // DATA
+ StringVector aDescriptionsInManual;
+ StringVector aRefsInManual;
+ std::vector<ListPtr>
+ aXrefLists;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_comrela.hxx b/autodoc/inc/ary/idl/i_comrela.hxx
new file mode 100644
index 000000000000..424431fed783
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_comrela.hxx
@@ -0,0 +1,83 @@
+/* -*- 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 ARY_IDL_I_COMRELA_HXX
+#define ARY_IDL_I_COMRELA_HXX
+
+// USED SERVICES
+#include <ary/idl/i_types4idl.hxx>
+
+namespace ary
+{
+namespace doc
+{
+ class OldIdlDocu;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** Contains data for an IDL code entity related to another one like a base of
+ an interface or of a service or the supported interface of a service.
+*/
+class CommentedRelation
+{
+ public:
+ // LIFECYCLE
+
+ CommentedRelation(
+ Type_id i_nType,
+ doc::OldIdlDocu * i_pInfo )
+ : nType(i_nType),
+ pInfo(i_pInfo)
+ {}
+ // INQUIRY
+ Type_id Type() const { return nType; }
+ doc::OldIdlDocu * Info() const { return pInfo; }
+
+ private:
+ // DATA
+ Type_id nType;
+ doc::OldIdlDocu * pInfo;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_constant.hxx b/autodoc/inc/ary/idl/i_constant.hxx
new file mode 100644
index 000000000000..3e850680427a
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_constant.hxx
@@ -0,0 +1,115 @@
+/* -*- 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 ARY_IDL_I_CONSTANT_HXX
+#define ARY_IDL_I_CONSTANT_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_constant
+{
+ struct attr;
+}
+
+
+/** Represents an IDL constant.
+*/
+class Constant : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2012 };
+
+ // LIFECYCLE
+ Constant(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ Type_id i_nType,
+ const String & i_sInitValue );
+ ~Constant();
+ // INQUIRY
+ Type_id Type() const;
+ const String & Value() const;
+
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ friend struct ifc_constant::attr;
+
+ // DATA
+ String sName;
+ Ce_id nNameRoom;
+ Ce_id nOwner;
+
+ Type_id nType;
+ String sInitValue;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Type_id
+Constant::Type() const
+{
+ return nType;
+}
+
+inline const String &
+Constant::Value() const
+{
+ return sInitValue;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_constgroup.hxx b/autodoc/inc/ary/idl/i_constgroup.hxx
new file mode 100644
index 000000000000..7b9d90b35116
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_constgroup.hxx
@@ -0,0 +1,104 @@
+/* -*- 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 ARY_IDL_I_CONSTGROUP_HXX
+#define ARY_IDL_I_CONSTGROUP_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_constgroup
+{
+ struct attr;
+}
+
+
+/** Represents an IDL constants group.
+*/
+class ConstantsGroup : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2011 };
+
+ // LIFECYCLE
+ ConstantsGroup(
+ const String & i_sName,
+ Ce_id i_nModule );
+ ~ConstantsGroup();
+ // ACCESS
+ void Add_Constant(
+ Ce_id i_nConstant );
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Locals
+ typedef std::vector<Ce_id> ConstantList;
+ friend struct ifc_constgroup::attr;
+
+ // DATA
+ String sName;
+ Ce_id nModule;
+
+ ConstantList aConstants;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+ConstantsGroup::Add_Constant( Ce_id i_nConstant )
+{
+ aConstants.push_back(i_nConstant);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_enum.hxx b/autodoc/inc/ary/idl/i_enum.hxx
new file mode 100644
index 000000000000..b53147e459ae
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_enum.hxx
@@ -0,0 +1,103 @@
+/* -*- 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 ARY_IDL_I_ENUM_HXX
+#define ARY_IDL_I_ENUM_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_enum
+{
+ struct attr;
+}
+
+
+/** Represents an IDL enum.
+*/
+class Enum : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2005 };
+ // LIFECYCLE
+ Enum(
+ const String & i_sName,
+ Ce_id i_nOwner );
+ ~Enum();
+ // ACCESS
+ void Add_Value(
+ Ce_id i_nValue );
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Locals
+ typedef std::vector<Ce_id> ValueList;
+ friend struct ifc_enum::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+
+ ValueList aValues;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Enum::Add_Value( Ce_id i_nValue )
+{
+ aValues.push_back(i_nValue);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_enumvalue.hxx b/autodoc/inc/ary/idl/i_enumvalue.hxx
new file mode 100644
index 000000000000..56dc39b86ebd
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_enumvalue.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 ARY_IDL_I_ENUMVALUE_HXX
+#define ARY_IDL_I_ENUMVALUE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_enumvalue
+{
+ struct attr;
+}
+
+
+/** @resp
+ Represents an IDL enum value.
+*/
+class EnumValue : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2006 };
+
+ // LIFECYCLE
+ EnumValue(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ const String & i_sInitValue );
+ ~EnumValue();
+ // INQUIRY
+ const String & Value() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ friend struct ifc_enumvalue::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ Ce_id nNameRoom;
+
+ String sValue;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const String &
+EnumValue::Value() const
+{
+ return sValue;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_exception.hxx b/autodoc/inc/ary/idl/i_exception.hxx
new file mode 100644
index 000000000000..0c2658dbbc33
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_exception.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ARY_IDL_I_EXCEPTION_HXX
+#define ARY_IDL_I_EXCEPTION_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_exception
+{
+ struct attr;
+}
+
+
+/** Represents an IDL exception.
+*/
+class Exception : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2010 };
+
+ // LIFECYCLE
+ Exception(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBase );
+ ~Exception();
+ // INQUIRY
+ Type_id Base() const { return nBase; }
+
+ // ACCESS
+ void Add_Member(
+ Ce_id i_nMember );
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Locals
+ typedef std::vector<Ce_id> ElementList;
+ friend struct ifc_exception::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+
+ Type_id nBase;
+ ElementList aElements;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Exception::Add_Member( Ce_id i_nMember )
+{
+ aElements.push_back(i_nMember);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_function.hxx b/autodoc/inc/ary/idl/i_function.hxx
new file mode 100644
index 000000000000..43fd91dfa501
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_function.hxx
@@ -0,0 +1,163 @@
+/* -*- 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 ARY_IDL_I_FUNCTION_HXX
+#define ARY_IDL_I_FUNCTION_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+// USED SERVICES
+#include <ary/idl/i_param.hxx>
+#include <ary/idl/ik_function.hxx>
+#include <ary/stdconstiter.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** Represents an IDL function.
+
+ Special case constructor:
+ Constructors have return type "0".
+*/
+class Function : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2002 };
+
+ typedef std::vector< Parameter > ParamList;
+ typedef std::vector< Type_id > ExceptionList;
+
+ // LIFECYCLE
+ /// Normal function
+ Function(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ Type_id i_nReturnType,
+ bool i_bOneWay );
+ /// Constructor
+ Function(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom );
+ ~Function();
+
+ // OPERATIONS
+ void Add_Parameter(
+ const String & i_sName,
+ Type_id i_nType,
+ E_ParameterDirection
+ i_eDirection );
+ /// The function's parameter list ends with the ellipse "..." .
+ void Set_Ellipse();
+ void Add_Exception(
+ Type_id i_nException );
+
+ // INQUIRY
+ Type_id ReturnType() const;
+ const ParamList & Parameters() const { return aParameters; }
+ const ExceptionList &
+ Exceptions() const { return aExceptions; }
+ bool IsOneway() const;
+ bool HasEllipse() const { return bEllipse; }
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Locals
+ friend struct ifc_function::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ Ce_id nNameRoom;
+
+ Type_id nReturnType;
+ ParamList aParameters;
+ ExceptionList aExceptions;
+ bool bOneWay;
+ bool bEllipse;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Function::Add_Parameter( const String & i_sName,
+ Type_id i_nType,
+ E_ParameterDirection i_eDirection )
+{
+ aParameters.push_back( Parameter(i_sName,i_nType,i_eDirection) );
+}
+
+inline void
+Function::Set_Ellipse()
+{
+ bEllipse = true;
+}
+
+inline void
+Function::Add_Exception( Type_id i_nException )
+{
+ aExceptions.push_back(i_nException);
+}
+
+inline Type_id
+Function::ReturnType() const
+ { return nReturnType; }
+
+inline bool
+Function::IsOneway() const
+ { return bOneWay; }
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_gate.hxx b/autodoc/inc/ary/idl/i_gate.hxx
new file mode 100644
index 000000000000..59595743aa91
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_gate.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 ARY_IDL_I_GATE_HXX
+#define ARY_IDL_I_GATE_HXX
+
+// USED SERVICES
+
+namespace autodoc
+{
+ class Options;
+}
+namespace ary
+{
+namespace idl
+{
+ class CePilot;
+ class TypePilot;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** Main entry to access the IDL parts of the repository.
+*/
+class Gate
+{
+ public:
+ // LIFECYCLE
+ virtual ~Gate() {}
+
+ // OPERATIONS
+ virtual void Calculate_AllSecondaryInformation(
+ const String & i_devman_reffilepath ) = 0;
+// const ::autodoc::Options &
+// i_options ) = 0;
+ // INQUIRY
+ virtual const CePilot &
+ Ces() const = 0;
+ virtual const TypePilot &
+ Types() const = 0;
+ // ACCESS
+ virtual CePilot & Ces() = 0;
+ virtual TypePilot & Types() = 0;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_interface.hxx b/autodoc/inc/ary/idl/i_interface.hxx
new file mode 100644
index 000000000000..bcf92b287bb4
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_interface.hxx
@@ -0,0 +1,130 @@
+/* -*- 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 ARY_IDL_I_INTERFACE_HXX
+#define ARY_IDL_I_INTERFACE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+// USED SERVICES
+#include <ary/idl/i_comrela.hxx>
+#include <ary/stdconstiter.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_interface
+{
+ struct attr;
+}
+ class Interface_2s;
+
+
+/** Represents an IDL interface.
+*/
+class Interface : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2001 };
+
+ // LIFECYCLE
+ Interface(
+ const String & i_sName,
+ Ce_id i_nOwner );
+ ~Interface();
+ // INQUIRY
+ bool HasBase() const;
+
+ // ACCESS
+ void Add_Function(
+ Ce_id i_nId );
+ void Add_Attribute(
+ Ce_id i_nId );
+ void Add_Base(
+ Type_id i_nInterface,
+ DYN doc::OldIdlDocu *
+ pass_dpDocu );
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity:
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Local
+ typedef std::vector< CommentedRelation > RelationList;
+ typedef std::vector<Ce_id> MemberList;
+ friend struct ifc_interface::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ RelationList aBases;
+ MemberList aFunctions;
+ MemberList aAttributes;
+ Dyn<Interface_2s> p2s;
+};
+
+
+
+
+// IMPLEMENTATION
+inline bool
+Interface::HasBase() const
+ { return aBases.size() > 0; }
+inline void
+Interface::Add_Function( Ce_id i_nId )
+ { aFunctions.push_back(i_nId); }
+inline void
+Interface::Add_Attribute( Ce_id i_nId )
+ { aAttributes.push_back(i_nId); }
+inline void
+Interface::Add_Base( Type_id i_nInterface,
+ DYN doc::OldIdlDocu * pass_dpDocu )
+ { aBases.push_back( CommentedRelation(i_nInterface, pass_dpDocu) ); }
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_module.hxx b/autodoc/inc/ary/idl/i_module.hxx
new file mode 100644
index 000000000000..0e7c0300a872
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_module.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 ARY_IDL_I_MODULE_HXX
+#define ARY_IDL_I_MODULE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+// USED SERVICES
+#include <ary/stdconstiter.hxx>
+
+
+
+
+namespace ary
+{
+ template <class> class NameTreeNode;
+
+namespace idl
+{
+namespace ifc_module
+{
+ struct attr;
+}
+ class Gate;
+
+
+/** Represents an IDL module.
+
+ "Name" in methods means all code entities which belong into
+ this namespace (not in a subnamespace of this one), but not
+ to the subnamespaces.
+
+ "SubNamespace" in method names refers to all direct subnamespaces.
+*/
+class Module : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2000 };
+
+ // LIFECYCLE
+ Module();
+ Module(
+ const String & i_sName,
+ const Module & i_rParent );
+ ~Module();
+ // OPERATIONS
+ void Add_Name(
+ const String & i_sName,
+ Ce_id i_nId );
+ // INQUIRY
+ Ce_id Search_Name(
+ const String & i_sName ) const;
+ void Get_Names(
+ Dyn_StdConstIterator<Ce_id> &
+ o_rResult ) const;
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ friend struct ifc_module::attr;
+
+ // DATA
+ Dyn< NameTreeNode<Ce_id> >
+ pImpl;
+};
+
+
+inline bool
+is_Module( const CodeEntity & i_rCe )
+{
+ return i_rCe.AryClass() == Module::class_id;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_namelookup.hxx b/autodoc/inc/ary/idl/i_namelookup.hxx
new file mode 100644
index 000000000000..b4066a64ab4f
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_namelookup.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 ARY_IDL_I_NAMELOOKUP_HXX
+#define ARY_IDL_I_NAMELOOKUP_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_types4idl.hxx>
+
+// USED SERVICES
+#include <ary/stdconstiter.hxx>
+#include <ary/itrange.hxx>
+#include <vector>
+#include <map>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** This class finds all occurrences in the current language of a
+ name in the repository.
+*/
+class NameLookup
+{
+ public:
+ struct NameProperties
+ {
+ NameProperties()
+ : nId(0),
+ nClass(0),
+ nOwner(0) {}
+ NameProperties(
+ Ce_id i_id,
+ ClassId i_class,
+ Ce_id i_owner )
+ : nId(i_id),
+ nClass(i_class),
+ nOwner(i_owner) {}
+ Ce_id nId;
+ ClassId nClass;
+ Ce_id nOwner;
+ };
+
+ /// Map from Name to NameProperties.
+ typedef std::multimap<String, NameProperties> Map_Names;
+
+ // LIFECYCLE
+ NameLookup();
+ ~NameLookup();
+ // OPERATIONS
+ void Add_Name(
+ const String & i_name,
+ Ce_id i_id,
+ ClassId i_class,
+ Ce_id i_owner );
+ private:
+ // DATA
+ Map_Names aNames;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_param.hxx b/autodoc/inc/ary/idl/i_param.hxx
new file mode 100644
index 000000000000..f504713a6828
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_param.hxx
@@ -0,0 +1,78 @@
+/* -*- 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 ARY_IDL_I_PARAM_HXX
+#define ARY_IDL_I_PARAM_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_types4idl.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** Represents a parameter in an IDL function.
+*/
+class Parameter
+{
+ public:
+ // LIFECYCLE
+ Parameter(
+ const String & i_sName,
+ Type_id i_nType,
+ E_ParameterDirection
+ i_eDirection );
+ ~Parameter();
+
+ // INQUIRY
+ const String & Name() const { return sName; }
+ Type_id Type() const { return nType; }
+ E_ParameterDirection
+ Direction() const { return eDirection; }
+
+ private:
+ // DATA
+ String sName;
+ Type_id nType;
+ E_ParameterDirection
+ eDirection;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_property.hxx b/autodoc/inc/ary/idl/i_property.hxx
new file mode 100644
index 000000000000..7a8bf026034f
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_property.hxx
@@ -0,0 +1,146 @@
+/* -*- 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 ARY_IDL_I_PROPERTY_HXX
+#define ARY_IDL_I_PROPERTY_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_property
+{
+ struct attr;
+}
+
+
+/** Represents an IDL property.
+*/
+class Property : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2004 };
+
+ class Stereotypes
+ {
+ public:
+ enum E_Flags
+ {
+ readonly = 1,
+ bound = 2,
+ constrained = 4,
+ maybeambiguous = 8,
+ maybedefault = 16,
+ maybevoid = 32,
+ removable = 64,
+ transient = 128,
+ s_MAX
+ };
+ Stereotypes() : nFlags(0) {}
+
+ bool HasAny() const { return nFlags != 0; }
+ bool IsReadOnly() const { return (nFlags & UINT32(readonly)) != 0; }
+ bool IsBound() const { return (nFlags & UINT32(bound)) != 0; }
+ bool IsConstrained() const
+ { return (nFlags & UINT32(constrained)) != 0; }
+ bool IsMayBeAmbiguous() const
+ { return (nFlags & UINT32(maybeambiguous)) != 0; }
+ bool IsMayBeDefault() const
+ { return (nFlags & UINT32(maybedefault)) != 0; }
+ bool IsMayBeVoid() const { return (nFlags & UINT32(maybevoid)) != 0; }
+ bool IsRemovable() const { return (nFlags & UINT32(removable)) != 0; }
+ bool IsTransient() const { return (nFlags & UINT32(transient)) != 0; }
+
+ void Set_Flag(
+ E_Flags i_flag )
+ { nFlags |= UINT32(i_flag); }
+ private:
+ // DATA
+ UINT32 nFlags;
+ };
+
+
+ // LIFECYCLE
+ Property(
+ const String & i_sName,
+ Ce_id i_nService,
+ Ce_id i_nModule,
+ Type_id i_nType,
+ Stereotypes i_stereotypes );
+ ~Property();
+ // INQUIRY
+ Type_id Type() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ friend struct ifc_property::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ Ce_id nNameRoom;
+
+ Type_id nType;
+ Stereotypes aStereotypes;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Type_id
+Property::Type() const
+{
+ return nType;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_service.hxx b/autodoc/inc/ary/idl/i_service.hxx
new file mode 100644
index 000000000000..50d13583f380
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_service.hxx
@@ -0,0 +1,142 @@
+/* -*- 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 ARY_IDL_I_SERVICE_HXX
+#define ARY_IDL_I_SERVICE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+// USED SERVICES
+#include <ary/idl/i_comrela.hxx>
+#include <ary/stdconstiter.hxx>
+#include <ary/idl/ik_service.hxx>
+
+
+
+
+namespace ary
+{
+namespace info
+{
+ class CodeInformation;
+}
+namespace idl
+{
+namespace ifc_service
+{
+ struct attr;
+}
+
+
+/** Represents an IDL service.
+*/
+class Service : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2003 }; // See reposy.cxx
+
+ // LIFECYCLE
+ Service(
+ const String & i_sName,
+ Ce_id i_nOwner );
+ ~Service();
+
+ // INQUIRY
+ void Get_SupportedInterfaces(
+ Dyn_StdConstIterator<CommentedRelation> &
+ o_rResult ) const;
+ void Get_IncludedServices(
+ Dyn_StdConstIterator<CommentedRelation> &
+ o_rResult ) const;
+
+ // ACCESS
+ void Add_Property(
+ Ce_id i_nProperty );
+ void AddRef_IncludedService(
+ Type_id i_nService,
+ DYN doc::OldIdlDocu *
+ pass_dpDocu );
+ void AddRef_SupportedInterface(
+ Type_id i_nInterface,
+ DYN doc::OldIdlDocu *
+ pass_dpDocu );
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Locals
+ typedef std::vector< CommentedRelation > RelationList;
+ typedef std::vector<Ce_id> PropertyList;
+ friend struct ifc_service::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+
+ RelationList aIncludedServices;
+ RelationList aSupportedInterfaces;
+ PropertyList aProperties;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Service::Add_Property( Ce_id i_nProperty )
+ { aProperties.push_back(i_nProperty); }
+
+inline void
+Service::AddRef_IncludedService( Type_id i_nService,
+ DYN doc::OldIdlDocu * pass_dpDocu )
+ { aIncludedServices.push_back( CommentedRelation(i_nService, pass_dpDocu) ); }
+
+inline void
+Service::AddRef_SupportedInterface( Type_id i_nInterface,
+ DYN doc::OldIdlDocu * pass_dpDocu )
+ { aSupportedInterfaces.push_back( CommentedRelation(i_nInterface, pass_dpDocu) ); }
+
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_singleton.hxx b/autodoc/inc/ary/idl/i_singleton.hxx
new file mode 100644
index 000000000000..c264b3efa2f2
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_singleton.hxx
@@ -0,0 +1,108 @@
+/* -*- 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 ARY_IDL_I_SINGLETON_HXX
+#define ARY_IDL_I_SINGLETON_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_singleton
+{
+ struct attr;
+}
+
+
+/** Represents an IDL singleton.
+*/
+class Singleton : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2013 };
+
+ // LIFECYCLE
+ Singleton(
+ const String & i_sName,
+ Ce_id i_nOwner );
+ ~Singleton();
+ // INQUIRY
+ Type_id AssociatedService() const
+ { return nService; }
+
+ // ACCESS
+ void Set_Service(
+ Type_id i_nService );
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Locals
+ friend struct ifc_singleton::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+
+ Type_id nService;
+};
+
+
+
+
+
+// IMPLEMENTATION
+inline void
+Singleton::Set_Service( Type_id i_nService )
+{
+ nService = i_nService;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_siservice.hxx b/autodoc/inc/ary/idl/i_siservice.hxx
new file mode 100644
index 000000000000..bdfe987d6827
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_siservice.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ARY_IDL_I_SISERVICE_HXX
+#define ARY_IDL_I_SISERVICE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_sglifcservice
+{
+ struct attr;
+}
+
+
+/** Represents an IDL single interface service.
+*/
+class SglIfcService : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2015 }; // See reposy.cxx
+
+ // LIFECYCLE
+ SglIfcService(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBaseInterface );
+ ~SglIfcService();
+ // ACCESS
+ void Add_Constructor(
+ Ce_id i_nId );
+
+ // INFO
+ Type_id BaseInterface() const { return nBaseInterface; }
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity:
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Local
+ typedef std::vector<Ce_id> CtorList;
+ friend struct ifc_sglifcservice::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ Type_id nBaseInterface;
+
+ CtorList aConstructors;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+SglIfcService::Add_Constructor( Ce_id i_nId )
+{
+ aConstructors.push_back(i_nId);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_sisingleton.hxx b/autodoc/inc/ary/idl/i_sisingleton.hxx
new file mode 100644
index 000000000000..3ddcbede3332
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_sisingleton.hxx
@@ -0,0 +1,103 @@
+/* -*- 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 ARY_IDL_I_SISINGLETON_HXX
+#define ARY_IDL_I_SISINGLETON_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_sglifcsingleton
+{
+ struct attr;
+}
+
+
+/** Represents an IDL interface.
+*/
+class SglIfcSingleton : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2016 }; // See reposy.cxx
+
+ // LIFECYCLE
+ SglIfcSingleton(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBaseInterface );
+ ~SglIfcSingleton();
+ // INQUIRY
+ Type_id BaseInterface() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity:
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Local
+ friend struct ifc_sglifcsingleton::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ Type_id nBaseInterface;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Type_id
+SglIfcSingleton::BaseInterface() const
+{
+ return nBaseInterface;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_struct.hxx b/autodoc/inc/ary/idl/i_struct.hxx
new file mode 100644
index 000000000000..d118d18ba4f1
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_struct.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 ARY_IDL_I_STRUCT_HXX
+#define ARY_IDL_I_STRUCT_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_struct
+{
+ struct attr;
+}
+
+
+/** Represents an IDL struct.
+*/
+class Struct : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2008 };
+
+ // LIFECYCLE
+ Struct(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBase,
+ const String & i_sTemplateParameter,
+ Type_id i_nTemplateParameterType );
+ ~Struct();
+ // INQUIRY
+ Type_id Base() const;
+ String TemplateParameter() const;
+ Type_id TemplateParameterType() const;
+
+ // ACCESS
+ void Add_Member(
+ Ce_id i_nMember );
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ // Locals
+ typedef std::vector<Ce_id> ElementList;
+ friend struct ifc_struct::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+
+ Type_id nBase;
+ String sTemplateParameter;
+ Type_id nTemplateParameterType;
+ ElementList aElements;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Type_id
+Struct::Base() const
+{
+ return nBase;
+}
+
+inline String
+Struct::TemplateParameter() const
+{
+ return sTemplateParameter;
+}
+
+inline Type_id
+Struct::TemplateParameterType() const
+{
+ return nTemplateParameterType;
+}
+
+inline void
+Struct::Add_Member( Ce_id i_nMember )
+{
+ aElements.push_back(i_nMember);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_structelem.hxx b/autodoc/inc/ary/idl/i_structelem.hxx
new file mode 100644
index 000000000000..98e8a1018093
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_structelem.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 ARY_IDL_I_STRUCTELEM_HXX
+#define ARY_IDL_I_STRUCTELEM_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_structelement
+{
+ struct attr;
+}
+
+
+/** Represents an IDL struct element.
+*/
+class StructElement : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2009 };
+
+ // LIFECYCLE
+ StructElement(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ Type_id i_nType );
+ ~StructElement();
+
+ // INQUIRY
+ Type_id Type() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ friend struct ifc_structelement::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+ Ce_id nNameRoom;
+
+ Type_id nType;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Type_id
+StructElement::Type() const
+{
+ return nType;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_traits.hxx b/autodoc/inc/ary/idl/i_traits.hxx
new file mode 100644
index 000000000000..b8077ce5194e
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_traits.hxx
@@ -0,0 +1,81 @@
+/* -*- 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 ARY_IDL_I_TRAITS_HXX
+#define ARY_IDL_I_TRAITS_HXX
+
+// USED SERVICES
+#include <ary/idl/i_types4idl.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** Basic traits for derivd ones of ->CodeEntity.
+*/
+struct Ce_Traits
+{
+ typedef CodeEntity entity_base_type;
+ typedef Ce_id id_type;
+
+ static entity_base_type &
+ EntityOf_(
+ id_type i_id );
+};
+
+
+/** An instance of COMPARE for ->::ary::SortedIds<>.
+
+ @see ::ary::SortedIds<>
+*/
+struct Ce_Compare : public Ce_Traits
+{
+ typedef String key_type;
+
+ static const key_type &
+ KeyOf_(
+ const entity_base_type &
+ i_entity );
+ static bool Lesser_(
+ const key_type & i_1,
+ const key_type & i_2 );
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_type.hxx b/autodoc/inc/ary/idl/i_type.hxx
new file mode 100644
index 000000000000..436ee1fab330
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_type.hxx
@@ -0,0 +1,145 @@
+/* -*- 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 ARY_IDL_I_TYPE_HXX
+#define ARY_IDL_I_TYPE_HXX
+
+// USED SERVICES
+#include <ary/entity.hxx>
+#include <ary/idl/i_types4idl.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+ class Gate;
+
+
+/** Abstract base for all secondary productions of types
+*/
+class Type_2s
+{
+ public:
+ virtual ~Type_2s() {}
+
+ static DYN Type_2s *
+ Create_(
+ ClassId i_nCeId );
+};
+
+
+/** Base of all IDL types.
+
+ Type represents the occurence of a type as base,
+ parameter, return type or element type in UNO IDL code.
+ Some of them relate to a ->CodeEntity, but
+ the ->Type "MyInterface" is something different than
+ the ->CodeEntity "MyInterface".
+
+ This is a storage base class, where more special
+ classes are derived from.
+*/
+class Type : public ary::Entity
+{
+ public:
+ typedef Type_2s secondary_productions;
+
+ // LIFECYCLE
+ virtual ~Type() {}
+
+ // INQUIRY
+ Type_id TypeId() const { return Type_id(Id()); }
+
+ /** Does NOT clear the output-parameters.
+
+ @attention
+ If this is a sequence, the text of the first non-sequence, enclosed type
+ is returned.
+ */
+ void Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequenceCount,
+ const Gate & i_rGate ) const;
+ const std::vector<Type_id> *
+ TemplateParameters() const;
+ const Type & FirstEnclosedNonSequenceType( /// @return *this, if this is not a ->Sequence.
+ const Gate & i_rGate ) const;
+
+ private:
+ virtual void inq_Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequemceCount,
+ const Gate & i_rGate ) const = 0;
+ virtual const std::vector<Type_id> *
+ inq_TemplateParameters() const;
+ virtual const Type &
+ inq_FirstEnclosedNonSequenceType(
+ const Gate & i_rGate ) const;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Type::Get_Text( StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequenceCount,
+ const Gate & i_rGate ) const
+{
+ inq_Get_Text(o_module,o_name,o_nRelatedCe,o_nSequenceCount,i_rGate);
+}
+
+inline const std::vector<Type_id> *
+Type::TemplateParameters() const
+{
+ return inq_TemplateParameters();
+}
+
+inline const Type &
+Type::FirstEnclosedNonSequenceType(const Gate & i_rGate) const
+{
+ return inq_FirstEnclosedNonSequenceType(i_rGate);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_typedef.hxx b/autodoc/inc/ary/idl/i_typedef.hxx
new file mode 100644
index 000000000000..228e097ca136
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_typedef.hxx
@@ -0,0 +1,93 @@
+/* -*- 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 ARY_IDL_I_TYPEDEF_HXX
+#define ARY_IDL_I_TYPEDEF_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+namespace ifc_typedef
+{
+ struct attr;
+}
+
+
+/** Represents an IDL typedef.
+*/
+class Typedef : public CodeEntity
+{
+ public:
+ enum E_ClassId { class_id = 2007 };
+
+ // LIFECYCLE
+ Typedef(
+ const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nDefiningType );
+ ~Typedef();
+
+ Type_id DefiningType() const { return nDefiningType; }
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface CodeEntity
+ virtual const String & inq_LocalName() const;
+ virtual Ce_id inq_NameRoom() const;
+ virtual Ce_id inq_Owner() const;
+ virtual E_SightLevel inq_SightLevel() const;
+
+ friend struct ifc_typedef::attr;
+
+ // DATA
+ String sName;
+ Ce_id nOwner;
+
+ Type_id nDefiningType;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/i_types4idl.hxx b/autodoc/inc/ary/idl/i_types4idl.hxx
new file mode 100644
index 000000000000..f4b3d5224902
--- /dev/null
+++ b/autodoc/inc/ary/idl/i_types4idl.hxx
@@ -0,0 +1,145 @@
+/* -*- 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 ARY_IDL_I_TYPES4IDL_HXX
+#define ARY_IDL_I_TYPES4IDL_HXX
+
+// USED SERVICES
+#include <ary/types.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+ class CodeEntity;
+ class Type;
+ class Gate;
+ class CePilot;
+ class TypePilot;
+
+
+typedef TypedId<CodeEntity> Ce_id;
+typedef TypedId<Type> Type_id;
+
+
+/** This is used when an ->ary::idl::ExplicitType
+ represents a templated struct and is sorted into the
+ dictionary of an ->ary::idl::XNameRoom.
+ Then local type name and template type id are concatenated
+ to one string with this char as delimiter.
+*/
+const char C_cTemplateDelimiter = '<';
+
+typedef std::vector<Ce_id> Ce_idList;
+
+
+enum E_ParameterDirection
+{
+ param_in,
+ param_out,
+ param_inout
+};
+
+
+enum E_SightLevel
+{
+ sl_Module, // not file bound entities, like modules
+ sl_File, // entities on top level within one file, like interface or enum
+ sl_Member // member entities, like enumvalue or function
+};
+
+inline Ce_id
+Ce_id_Null()
+{
+ return Ce_id(0);
+}
+
+inline void
+NullPush_IdList(Ce_idList * o_pList)
+{
+ if (o_pList)
+ o_pList->push_back( Ce_id_Null() );
+}
+
+inline void
+NullPush_IdList_2(Ce_idList * o_pList)
+{
+ if (o_pList)
+ {
+ o_pList->push_back( Ce_id_Null() );
+ o_pList->push_back( Ce_id_Null() );
+ }
+}
+
+namespace alphabetical_index
+{
+ enum E_Letter
+ {
+ a = int('a'),
+ b,
+ c,
+ d,
+ e,
+ f,
+ g,
+ h,
+ i,
+ j,
+ k,
+ l,
+ m,
+ n,
+ o,
+ p,
+ q,
+ r,
+ s,
+ t,
+ u,
+ v,
+ w,
+ x,
+ y,
+ z,
+ non_alpha = int('_'),
+ MAX
+ };
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_attribute.hxx b/autodoc/inc/ary/idl/ik_attribute.hxx
new file mode 100644
index 000000000000..d0e96c9131d5
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_attribute.hxx
@@ -0,0 +1,88 @@
+/* -*- 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 ARY_IDL_IK_ATTRIBUTE_HXX
+#define ARY_IDL_IK_ATTRIBUTE_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_attribute
+{
+
+using ifc_ce::DocText;
+using ::ary::idl::ifc_ce::Dyn_TypeIterator;
+
+
+struct attr: public ifc_ce::attr
+{
+ static bool HasAnyStereotype(
+ const CodeEntity & i_ce );
+ static bool IsReadOnly(
+ const CodeEntity & i_ce );
+ static bool IsBound(
+ const CodeEntity & i_ce );
+ static Type_id Type(
+ const CodeEntity & i_ce );
+ static void Get_GetExceptions(
+ Dyn_TypeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_SetExceptions(
+ Dyn_TypeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_attribute
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_ce.hxx b/autodoc/inc/ary/idl/ik_ce.hxx
new file mode 100644
index 000000000000..7a82402fc9f0
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_ce.hxx
@@ -0,0 +1,148 @@
+/* -*- 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 ARY_IDL_IK_CE_HXX
+#define ARY_IDL_IK_CE_HXX
+// KORR_DEPRECATED_3.0
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_types4idl.hxx>
+#include <ary/stdconstiter.hxx>
+
+namespace ary
+{
+namespace info
+{
+ class Text;
+}
+namespace idl
+{
+
+
+namespace ifc_ce
+{
+
+
+typedef ::ary::Dyn_StdConstIterator<Ce_id> Dyn_CeIterator;
+typedef ::ary::Dyn_StdConstIterator<Type_id> Dyn_TypeIterator;
+typedef ::ary::info::Text DocText;
+
+
+
+struct attr
+{
+ static Ce_id CeId(
+ const CodeEntity & i_ce );
+ static const String &
+ LocalName(
+ const CodeEntity & i_ce );
+ static Ce_id NameRoom(
+ const CodeEntity & i_ce );
+ static Rid Owner(
+ const CodeEntity & i_ce );
+ static E_SightLevel SightLevel(
+ const CodeEntity & i_ce );
+ static bool Search_Member(
+ const CodeEntity & ,
+ const String & )
+ { return true; } // KORR_FUTURE
+};
+
+struct xref
+{
+};
+
+struct doc
+{
+ static const DocText &
+ ShortInfo( /// @return a short description of the CodeEntity
+ const CodeEntity & i_ce );
+
+ static const DocText &
+ TagAuthor(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagExample(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagDescr(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagGuarantees(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagKey(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagMissing(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagSee(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagShort(
+ const CodeEntity & i_ce );
+ static const DocText &
+ TagVersion(
+ const CodeEntity & i_ce );
+
+ void Get_UnkownTags(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+
+ bool IsDeprecated(
+ const CodeEntity & i_ce );
+ bool IsIncomplete(
+ const CodeEntity & i_ce );
+ bool IsInternal(
+ const CodeEntity & i_ce );
+ bool IsNodoc(
+ const CodeEntity & i_ce );
+ bool IsOptional(
+ const CodeEntity & i_ce );
+ bool IsSuspicious(
+ const CodeEntity & i_ce );
+
+};
+
+
+} // namespace ifc_ce
+
+
+} // namspace idl
+} // namspace ary
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_constant.hxx b/autodoc/inc/ary/idl/ik_constant.hxx
new file mode 100644
index 000000000000..a19bfc0af2d5
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_constant.hxx
@@ -0,0 +1,78 @@
+/* -*- 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 ARY_IDL_IK_CONSTANT_HXX
+#define ARY_IDL_IK_CONSTANT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_constant
+{
+
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id Type(
+ const CodeEntity & i_ce );
+ static const String &
+ Value(
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_constant
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_constgroup.hxx b/autodoc/inc/ary/idl/ik_constgroup.hxx
new file mode 100644
index 000000000000..460386d5734c
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_constgroup.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 ARY_IDL_IK_CONSTGROUP_HXX
+#define ARY_IDL_IK_CONSTGROUP_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_constgroup
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static void Get_Constants(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+} // namespace ifc_constgroup
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_enum.hxx b/autodoc/inc/ary/idl/ik_enum.hxx
new file mode 100644
index 000000000000..2523b9a8a805
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_enum.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 ARY_IDL_IK_ENUM_HXX
+#define ARY_IDL_IK_ENUM_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_enum
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static void Get_Values(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+ static void Get_SynonymTypedefs(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsReturns(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsParameters(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsDataTypes(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+} // namespace ifc_enum
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_enumvalue.hxx b/autodoc/inc/ary/idl/ik_enumvalue.hxx
new file mode 100644
index 000000000000..26f7557a92f8
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_enumvalue.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 ARY_IDL_IK_ENUMVALUE_HXX
+#define ARY_IDL_IK_ENUMVALUE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_enumvalue
+{
+
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static const String &
+ Value(
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_enumvalue
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_exception.hxx b/autodoc/inc/ary/idl/ik_exception.hxx
new file mode 100644
index 000000000000..ab1f19540898
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_exception.hxx
@@ -0,0 +1,84 @@
+/* -*- 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 ARY_IDL_IK_EXCEPTION_HXX
+#define ARY_IDL_IK_EXCEPTION_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_exception
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id Base(
+ const CodeEntity & i_ce );
+ static void Get_Elements(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+ static void Get_Derivations(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_RaisingFunctions(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+} // namespace ifc_exception
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_function.hxx b/autodoc/inc/ary/idl/ik_function.hxx
new file mode 100644
index 000000000000..fb57bd036ed0
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_function.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 ARY_IDL_IK_SERVICE_HXX
+#define ARY_IDL_IK_SERVICE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/i_param.hxx>
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+
+namespace ifc_function
+{
+
+using ::ary::idl::ifc_ce::Dyn_CeIterator;
+using ::ary::idl::ifc_ce::Dyn_TypeIterator;
+using ::ary::idl::ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id ReturnType(
+ const CodeEntity & i_ce );
+ static bool IsOneway(
+ const CodeEntity & i_ce );
+ static bool HasEllipse(
+ const CodeEntity & i_ce );
+ static void Get_Parameters(
+ Dyn_StdConstIterator<ary::idl::Parameter> &
+ o_result,
+ const CodeEntity & i_ce );
+ static void Get_Exceptions(
+ Dyn_TypeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+// aStateMachine.AddToken( "@param", nTok_at_param, A_nAtTagDefStatus, finAtTag );
+// aStateMachine.AddToken( "@throws", nTok_at_throws, A_nAtTagDefStatus, finAtTag );
+// aStateMachine.AddToken( "@exception",
+// aStateMachine.AddToken( "@return", nTok_at_return, A_nAtTagDefStatus, finAtTag );
+// aStateMachine.AddToken( "@returns", nTok_at_return, A_nAtTagDefStatus, finAtTag );
+};
+
+
+} // namespace ifc_function
+
+
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_interface.hxx b/autodoc/inc/ary/idl/ik_interface.hxx
new file mode 100644
index 000000000000..9ef89066dea6
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_interface.hxx
@@ -0,0 +1,103 @@
+/* -*- 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 ARY_IDL_IK_INTERFACE_HXX
+#define ARY_IDL_IK_INTERFACE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+class CommentedRelation;
+
+namespace ifc_interface
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static void Get_Bases(
+ Dyn_StdConstIterator<CommentedRelation> &
+ o_result,
+ const CodeEntity & i_ce );
+ static void Get_Functions(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_Attributes(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+ static void Get_Derivations(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_SynonymTypedefs( /// like: typedef i_ce.LocalName() newName;
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_ExportingServices(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_ExportingSingletons(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsReturns(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsParameters(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsDataTypes(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+} // namespace ifc_interface
+
+} // namespace idl
+} // namespace ary
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_module.hxx b/autodoc/inc/ary/idl/ik_module.hxx
new file mode 100644
index 000000000000..6b64582fbf01
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_module.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 ARY_IDL_IK_MODULE_HXX
+#define ARY_IDL_IK_MODULE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+class CePilot;
+
+namespace ifc_module
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr : public ifc_ce::attr
+{
+ // KORR_FUTURE
+ // This has to be changed that way, that the differencing takes place
+ // within hfi_module.cxx and not here.
+ // So the class CePilot is not needed here, etc.
+ // Too much scope pollution.
+ static void Get_AllChildrenSeparated(
+ std::vector< const CodeEntity* > & o_nestedModules,
+ std::vector< const CodeEntity* > & o_services,
+ std::vector< const CodeEntity* > & o_interfaces,
+ std::vector< const CodeEntity* > & o_structs,
+ std::vector< const CodeEntity* > & o_exceptions,
+ std::vector< const CodeEntity* > & o_enums,
+ std::vector< const CodeEntity* > & o_typedefs,
+ std::vector< const CodeEntity* > & o_constantGroups,
+ std::vector< const CodeEntity* > & o_singletons,
+ const CePilot & i_pilot,
+ const CodeEntity & i_ce );
+
+ static void Get_SubModules(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_Services(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_Interfaces(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_Structs(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_Exceptions(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_Enums(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_Typedefs(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_ConstantsGroups(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+} // namespace ifc_module
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_property.hxx b/autodoc/inc/ary/idl/ik_property.hxx
new file mode 100644
index 000000000000..ece8489454e1
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_property.hxx
@@ -0,0 +1,92 @@
+/* -*- 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 ARY_IDL_IK_PROPERTY_HXX
+#define ARY_IDL_IK_PROPERTY_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_property
+{
+
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static bool HasAnyStereotype(
+ const CodeEntity & i_ce );
+ static bool IsReadOnly(
+ const CodeEntity & i_ce );
+ static bool IsBound(
+ const CodeEntity & i_ce );
+ static bool IsConstrained(
+ const CodeEntity & i_ce );
+ static bool IsMayBeAmbiguous(
+ const CodeEntity & i_ce );
+ static bool IsMayBeDefault(
+ const CodeEntity & i_ce );
+ static bool IsMayBeVoid(
+ const CodeEntity & i_ce );
+ static bool IsRemovable(
+ const CodeEntity & i_ce );
+ static bool IsTransient(
+ const CodeEntity & i_ce );
+ static Type_id Type(
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_property
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_service.hxx b/autodoc/inc/ary/idl/ik_service.hxx
new file mode 100644
index 000000000000..552f32bd3bcf
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_service.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ARY_IDL_IK_SERVICE_HXX
+#define ARY_IDL_IK_SERVICE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_service
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static void Get_IncludedServices(
+ Dyn_StdConstIterator<CommentedRelation> &
+ o_result,
+ const CodeEntity & i_ce );
+ static void Get_ExportedInterfaces(
+ Dyn_StdConstIterator<CommentedRelation> &
+ o_result,
+ const CodeEntity & i_ce );
+ static void Get_Properties(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+ static void Get_IncludingServices(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_InstantiatingSingletons(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_service
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_singleton.hxx b/autodoc/inc/ary/idl/ik_singleton.hxx
new file mode 100644
index 000000000000..9c8186a97e70
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_singleton.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 ARY_IDL_IK_SINGLETON_HXX
+#define ARY_IDL_IK_SINGLETON_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_singleton
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id AssociatedService(
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_singleton
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_siservice.hxx b/autodoc/inc/ary/idl/ik_siservice.hxx
new file mode 100644
index 000000000000..3534fef5d9ea
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_siservice.hxx
@@ -0,0 +1,78 @@
+/* -*- 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 ARY_IDL_IK_SISERVICE_HXX
+#define ARY_IDL_IK_SISERVICE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_sglifcservice
+{
+
+using ifc_ce::Dyn_CeIterator;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id BaseInterface(
+ const CodeEntity & i_ce );
+ static void Get_Constructors(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_sglifcservice
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_sisingleton.hxx b/autodoc/inc/ary/idl/ik_sisingleton.hxx
new file mode 100644
index 000000000000..46f033351120
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_sisingleton.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 ARY_IDL_IK_SISINGLETON_HXX
+#define ARY_IDL_IK_SISINGLETON_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_sglifcsingleton
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id BaseInterface(
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_sglifcsingleton
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_struct.hxx b/autodoc/inc/ary/idl/ik_struct.hxx
new file mode 100644
index 000000000000..79d7c1f39dd2
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_struct.hxx
@@ -0,0 +1,93 @@
+/* -*- 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 ARY_IDL_IK_STRUCT_HXX
+#define ARY_IDL_IK_STRUCT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_struct
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id Base(
+ const CodeEntity & i_ce );
+ static void Get_Elements(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+ static void Get_Derivations(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_SynonymTypedefs(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsReturns(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsParameters(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsDataTypes(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+} // namespace ifc_struct
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_structelem.hxx b/autodoc/inc/ary/idl/ik_structelem.hxx
new file mode 100644
index 000000000000..235008fc7446
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_structelem.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 ARY_IDL_IK_STRUCTELEM_HXX
+#define ARY_IDL_IK_STRUCTELEM_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_structelement
+{
+
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id Type(
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+
+} // namespace ifc_structelement
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ik_typedef.hxx b/autodoc/inc/ary/idl/ik_typedef.hxx
new file mode 100644
index 000000000000..856928223034
--- /dev/null
+++ b/autodoc/inc/ary/idl/ik_typedef.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 ARY_IDL_IK_TYPEDEF_HXX
+#define ARY_IDL_IK_TYPEDEF_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ik_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+namespace idl
+{
+
+namespace ifc_typedef
+{
+
+using ifc_ce::Dyn_CeIterator;
+using ifc_ce::DocText;
+
+
+struct attr: public ifc_ce::attr
+{
+ static Type_id DefiningType(
+ const CodeEntity & i_ce );
+};
+
+struct xref : public ifc_ce::xref
+{
+ static void Get_SynonymTypedefs(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsReturns(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsParameters(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+ static void Get_AsDataTypes(
+ Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce );
+};
+
+struct doc : public ifc_ce::doc
+{
+};
+
+} // namespace ifc_typedef
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ip_ce.hxx b/autodoc/inc/ary/idl/ip_ce.hxx
new file mode 100644
index 000000000000..a1d4990c4cb5
--- /dev/null
+++ b/autodoc/inc/ary/idl/ip_ce.hxx
@@ -0,0 +1,213 @@
+/* -*- 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 ARY_IDL_IP_CE_HXX
+#define ARY_IDL_IP_CE_HXX
+
+// USED SERVICES
+#include <ary/idl/i_types4idl.hxx>
+#include <ary/idl/i_property.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+
+ class ConstantsGroup;
+ class Enum;
+ class Exception;
+ class Interface;
+ class Service;
+ class SglIfcService;
+ class Singleton;
+ class SglIfcSingleton;
+ class Struct;
+ class Typedef;
+
+ class Attribute;
+ class Constant;
+ class EnumValue;
+ class Function;
+ class Property;
+ class StructElement;
+ class Variable;
+
+ class NameLookup;
+
+
+/** Provides the access logic for all code entities.
+*/
+class CePilot
+{
+ public:
+ // LIFECYCLE
+ virtual ~CePilot() {}
+
+ // OPERATIONS
+ virtual Module & CheckIn_Module(
+ Ce_id i_nParentId,
+ const String & i_sName ) = 0;
+ virtual Service & Store_Service(
+ Ce_id i_nOwner,
+ const String & i_sName ) = 0;
+ virtual SglIfcService &
+ Store_SglIfcService(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBaseInterface ) = 0;
+ virtual Interface & Store_Interface(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase ) = 0;
+ virtual Struct & Store_Struct(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase,
+ const String & i_sTemplateParam = String::Null_() ) = 0;
+ virtual Exception & Store_Exception(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase ) = 0;
+ virtual Enum & Store_Enum(
+ Ce_id i_nOwner,
+ const String & i_sName ) = 0;
+ virtual Typedef & Store_Typedef(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nDefiningType ) = 0;
+ virtual ConstantsGroup &
+ Store_ConstantsGroup(
+ Ce_id i_nOwner,
+ const String & i_sName ) = 0;
+ virtual Singleton & Store_Singleton(
+ Ce_id i_nOwner,
+ const String & i_sName ) = 0;
+ virtual SglIfcSingleton &
+ Store_SglIfcSingleton(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBaseInterface ) = 0;
+
+ virtual Constant & Store_Constant(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ const String & i_sValue ) = 0;
+ virtual Property & Store_Property(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ Property::Stereotypes
+ i_stereotypes ) = 0;
+ virtual Function & Store_Function(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nReturnType,
+ bool i_bOneWay ) = 0;
+ virtual Function & Store_ServiceConstructor(
+ Ce_id i_nOwner,
+ const String & i_sName ) = 0;
+ virtual StructElement &
+ Store_StructMember(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType ) = 0;
+ virtual StructElement &
+ Store_ExceptionMember(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType ) = 0;
+ virtual EnumValue & Store_EnumValue(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ const String & i_sValue ) = 0;
+ virtual Attribute & Store_Attribute(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ bool i_bReadOnly,
+ bool i_bBound ) = 0;
+ // INQUIRY
+ virtual const Module &
+ GlobalNamespace() const = 0;
+ virtual const CodeEntity &
+ Find_Ce(
+ Ce_id i_nId ) const = 0;
+
+ virtual const Module &
+ Find_Module(
+ Ce_id i_nId ) const = 0;
+ virtual const Module *
+ Search_Module(
+ Ce_id i_nId ) const = 0;
+ virtual const Function &
+ Find_Function(
+ Ce_id i_nId ) const = 0;
+ virtual const Property &
+ Find_Property(
+ Ce_id i_nId ) const = 0;
+ virtual const EnumValue &
+ Find_EnumValue(
+ Ce_id i_nId ) const = 0;
+ virtual const Constant &
+ Find_Constant(
+ Ce_id i_nId ) const = 0;
+ virtual const StructElement &
+ Find_StructElement(
+ Ce_id i_nId ) const = 0;
+ virtual void Get_Text(
+ StringVector & o_module,
+ String & o_ce,
+ String & o_member,
+ const CodeEntity & i_ce ) const = 0;
+ virtual const NameLookup &
+ NameDictionary() const = 0;
+ virtual void Get_AlphabeticalIndex(
+ std::vector<Ce_id> &
+ o_rResult,
+ alphabetical_index::E_Letter
+ i_cLetter) const = 0;
+ // ACCESS
+ virtual Module & GlobalNamespace() = 0;
+ virtual CodeEntity &
+ Find_Ce(
+ Ce_id i_nId ) = 0;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/idl/ip_type.hxx b/autodoc/inc/ary/idl/ip_type.hxx
new file mode 100644
index 000000000000..a4f070b78c81
--- /dev/null
+++ b/autodoc/inc/ary/idl/ip_type.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 ARY_IDL_IP_TYPE_HXX
+#define ARY_IDL_IP_TYPE_HXX
+
+// USED SERVICES
+#include <ary/idl/i_types4idl.hxx>
+
+
+
+
+namespace ary
+{
+ class QualifiedName;
+
+namespace idl
+{
+ class Type;
+ class ExplicitNameRoom;
+
+
+/** Access point to all {->Type}s in IDL.
+*/
+class TypePilot
+{
+ public:
+ // LIFECYCLE
+ virtual ~TypePilot() {}
+
+ // OPERATIONS
+ virtual const Type &
+ CheckIn_Type(
+ QualifiedName & i_rFullName,
+ uintt i_nSequenceCount,
+ Ce_id i_nModuleOfOccurrence,
+ const std::vector<Type_id> *
+ i_templateParameters ) = 0;
+ // INQUIRY
+ virtual const Type &
+ Find_Type(
+ Type_id i_nType ) const = 0;
+ virtual String Search_LocalNameOf(
+ Type_id i_nType ) const = 0;
+ virtual Ce_id Search_CeRelatedTo(
+ Type_id i_nType ) const = 0;
+ virtual const ExplicitNameRoom &
+ Find_XNameRoom(
+ Type_id i_nType ) const = 0;
+ virtual bool IsBuiltInOrRelated(
+ const Type & i_rType ) const = 0;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/info/all_dts.hxx b/autodoc/inc/ary/info/all_dts.hxx
new file mode 100644
index 000000000000..2508248f860f
--- /dev/null
+++ b/autodoc/inc/ary/info/all_dts.hxx
@@ -0,0 +1,162 @@
+/* -*- 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 ARY_INFO_ALL_DTS_HXX
+#define ARY_INFO_ALL_DTS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace info
+{
+
+class DocuDisplay;
+
+class DocuToken
+{
+ public:
+ virtual ~DocuToken() {}
+
+ void StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ bool IsWhite() const;
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const = 0;
+ virtual bool inq_IsWhite() const = 0;
+};
+
+class DT_Text : public DocuToken
+{
+ public:
+ DT_Text(
+ const char * i_sText )
+ : sText( i_sText ) {}
+
+ const String & Text() const { return sText; }
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual bool inq_IsWhite() const;
+
+ String sText;
+};
+
+class DT_MaybeLink : public DocuToken
+{
+ public:
+ DT_MaybeLink(
+ const char * i_sText,
+ bool i_bIsGlobal,
+ bool i_bIsFunction )
+ : sText( i_sText ),
+ bIsGlobal(i_bIsGlobal),
+ bIsFunction(i_bIsFunction) { }
+
+ const String & Text() const { return sText; }
+ bool IsAbsolute() const { return bIsGlobal; }
+ bool IsFunction() const { return bIsFunction; }
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual bool inq_IsWhite() const;
+
+ String sText;
+ bool bIsGlobal;
+ bool bIsFunction;
+};
+
+class DT_Whitespace : public DocuToken
+{
+ public:
+ DT_Whitespace(
+ UINT8 i_nLength )
+ : nLength( i_nLength ) {}
+ UINT8 Length() const { return nLength; }
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual bool inq_IsWhite() const;
+
+ UINT8 nLength;
+};
+
+
+class DT_Eol : public DocuToken
+{
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual bool inq_IsWhite() const;
+};
+
+class DT_Xml : public DocuToken
+{
+ public:
+ DT_Xml(
+ const char * i_sText )
+ : sText( i_sText ) {}
+
+ const String & Text() const { return sText; }
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual bool inq_IsWhite() const;
+
+ String sText;
+};
+
+
+// IMPLEMENTATION
+
+inline void
+DocuToken::StoreAt( DocuDisplay & o_rDisplay ) const
+ { do_StoreAt(o_rDisplay); }
+inline bool
+DocuToken::IsWhite() const
+ { return inq_IsWhite(); }
+
+
+
+}
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/info/all_tags.hxx b/autodoc/inc/ary/info/all_tags.hxx
new file mode 100644
index 000000000000..79bb4de3bc1e
--- /dev/null
+++ b/autodoc/inc/ary/info/all_tags.hxx
@@ -0,0 +1,291 @@
+/* -*- 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 ARY_INFO_ALL_TAGS_HXX
+#define ARY_INFO_ALL_TAGS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/info/ci_attag.hxx>
+ // COMPONENTS
+#include <ary/info/inftypes.hxx>
+#include <ary/info/ci_text.hxx>
+#include <ary/qualiname.hxx>
+ // PARAMETERS
+
+
+
+namespace ary
+{
+namespace info
+{
+
+
+class StdTag : public AtTag
+{
+ public:
+ StdTag(
+ E_AtTagId i_eId );
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ void ChangeId2(
+ E_AtTagId i_eId )
+ { eId = i_eId; }
+
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ E_AtTagId Std_Id() const { return eId; }
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual DocuText * Text();
+
+ E_AtTagId eId;
+ DocuText aText;
+ StdTag * pNext;
+};
+
+class BaseTag : public AtTag
+{
+ public:
+ BaseTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ virtual const char *
+ Title() const;
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ private:
+ virtual DocuText * Text();
+
+ QualifiedName sBase;
+ DocuText aText;
+ AtTag * pNext;
+};
+
+class ExceptionTag : public AtTag
+{
+ public:
+ ExceptionTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ virtual const char *
+ Title() const;
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ private:
+ virtual DocuText * Text();
+
+ QualifiedName sException;
+ DocuText aText;
+ AtTag * pNext;
+};
+
+class ImplementsTag : public AtTag
+{
+ public:
+ ImplementsTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ virtual const char *
+ Title() const;
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ private:
+ virtual DocuText * Text();
+
+ QualifiedName sName;
+ AtTag * pNext;
+};
+
+class KeywordTag : public AtTag
+{
+ public:
+ KeywordTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ virtual const char *
+ Title() const;
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ private:
+ virtual DocuText * Text();
+
+ StringVector sKeys;
+};
+
+class ParameterTag : public AtTag
+{
+ public:
+ ParameterTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+
+ const String & ParamName() const { return sName; }
+ const DocuText & CText() const { return aText; }
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual const ParameterTag *
+ GetNext() const { return dynamic_cast< ParameterTag* >(pNext); }
+ virtual AtTag * GetFollower();
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual DocuText * Text();
+
+ String sName;
+ String sValidRange;
+ DocuText aText;
+ AtTag * pNext;
+};
+
+class SeeTag : public AtTag
+{
+ public:
+ SeeTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ virtual const char *
+ Title() const;
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ const std::vector< QualifiedName > &
+ References() const { return sReferences; }
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual DocuText * Text();
+
+ std::vector< QualifiedName >
+ sReferences;
+};
+
+class TemplateTag : public AtTag
+{
+ public:
+ TemplateTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ const DocuText & CText() const { return aText; }
+ virtual const char *
+ Title() const;
+ const String & TplParamName() const { return sName; }
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual const TemplateTag *
+ GetNext() const { return dynamic_cast< TemplateTag* >(pNext); }
+ virtual AtTag * GetFollower();
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual DocuText * Text();
+
+ String sName;
+ DocuText aText;
+ AtTag * pNext;
+};
+
+class LabelTag : public AtTag
+{
+ public:
+ LabelTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ virtual const char *
+ Title() const;
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ private:
+ virtual DocuText * Text();
+
+ String sLabel;
+};
+
+class SinceTag : public AtTag
+{
+ public:
+ SinceTag();
+
+ virtual bool Add_SpecialMeaningToken(
+ const char * i_sText,
+ intt i_nNr );
+ virtual const char *
+ Title() const;
+ virtual UINT8 NrOfSpecialMeaningTokens() const;
+ virtual AtTag * GetFollower();
+
+ const String & Version() const { return sVersion; }
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ virtual DocuText * Text();
+
+ // Data
+ String sVersion;
+};
+
+
+
+// IMPLEMENTATION
+
+
+}
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/info/ci_attag.hxx b/autodoc/inc/ary/info/ci_attag.hxx
new file mode 100644
index 000000000000..720e6014bce5
--- /dev/null
+++ b/autodoc/inc/ary/info/ci_attag.hxx
@@ -0,0 +1,103 @@
+/* -*- 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 ARY_INFO_CI_ATTAG_HXX
+#define ARY_INFO_CI_ATTAG_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+namespace ary
+{
+namespace info
+{
+
+class DocuText;
+class DocuDisplay;
+
+class AtTag
+{
+ public:
+ virtual ~AtTag() {}
+
+ void Set_HtmlUseInDocuText(
+ bool i_bUseIt );
+ virtual bool Add_SpecialMeaningToken( /// @return false, if token was not spüecial.
+ const char * i_sText,
+ intt i_nNr ) = 0;
+ virtual void Add_Token(
+ const char * i_sText );
+ virtual void Add_PotentialLink(
+ const char * i_sText,
+ bool i_bIsGlobal,
+ bool i_bIsFunction );
+ virtual void Add_Whitespace(
+ UINT8 i_nLength );
+ virtual void Add_Eol();
+
+ virtual UINT8 NrOfSpecialMeaningTokens() const = 0;
+ virtual AtTag * GetFollower() = 0;
+
+ void StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ const DocuText & CText() const;
+
+ private:
+ virtual void do_StoreAt(
+ DocuDisplay & o_rDisplay ) const; // later becoming abstract
+
+ virtual DocuText * Text() = 0;
+};
+
+
+
+// IMPLEMENTATION
+
+inline void
+AtTag::StoreAt( DocuDisplay & o_rDisplay ) const
+ { do_StoreAt(o_rDisplay); }
+inline const DocuText &
+AtTag::CText() const
+ { DocuText * ret = const_cast< AtTag* >(this)->Text();
+ csv_assert( ret != 0 );
+ return *ret;
+ }
+
+
+}
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/info/ci_text.hxx b/autodoc/inc/ary/info/ci_text.hxx
new file mode 100644
index 000000000000..9c4331c6b7bb
--- /dev/null
+++ b/autodoc/inc/ary/info/ci_text.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 ARY_INFO_CI_TEXT_HXX
+#define ARY_INFO_CI_TEXT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace info
+{
+
+class DocuToken;
+class DocuDisplay;
+
+
+class DocuText
+{
+ public:
+ typedef std::vector< DocuToken * > TokenList;
+
+ DocuText();
+ ~DocuText();
+
+ void Set_HtmlUse(
+ bool i_bUseIt )
+ { bUsesHtml = i_bUseIt; }
+ void Add_Token(
+ DYN DocuToken & let_drToken )
+ { aTokens.push_back(&let_drToken); }
+ const TokenList & Tokens() const { return aTokens; }
+ void StoreAt(
+ DocuDisplay & o_rDisplay ) const;
+ bool IsNoHtml() const { return NOT bUsesHtml; }
+ bool IsEmpty() const { return aTokens.size() == 0; }
+
+ private:
+ TokenList aTokens;
+ bool bUsesHtml;
+};
+
+
+
+
+
+
+// IMPLEMENTATION
+
+
+}
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/info/docstore.hxx b/autodoc/inc/ary/info/docstore.hxx
new file mode 100644
index 000000000000..4c95d2e32824
--- /dev/null
+++ b/autodoc/inc/ary/info/docstore.hxx
@@ -0,0 +1,119 @@
+/* -*- 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 ARY_INFO_DOCSTORE_HXX
+#define ARY_INFO_DOCSTORE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/info/inftypes.hxx>
+
+namespace ary
+{
+namespace doc
+{
+ class Node;
+}
+
+
+
+namespace info
+{
+
+class DocuStore
+{
+ public:
+ virtual ~DocuStore() {}
+
+ void Store2CurFile(
+ DYN doc::Node & let_drDocu );
+ void Store2CurNamespace(
+ DYN doc::Node & let_drDocu );
+
+ void Store2ConnectedDeclaration(
+ DYN doc::Node & let_drDocu );
+
+ void Store2Glossary(
+ DYN doc::Node & let_drDocu,
+ const String & i_sExplainedTerm );
+ void Store2GlobalTexts(
+ DYN doc::Node & let_drDocu,
+ ary::info::GlobalTextId
+ i_nId );
+ private:
+ virtual void do_Store2CurFile(
+ DYN doc::Node & let_drDocu ) = 0;
+ virtual void do_Store2CurNamespace(
+ DYN doc::Node & let_drDocu ) = 0;
+
+ virtual void do_Store2ConnectedDeclaration(
+ DYN doc::Node & let_drDocu ) = 0;
+
+ virtual void do_Store2Glossary(
+ DYN doc::Node & let_drDocu,
+ const String & i_sExplainedTerm ) = 0;
+ virtual void do_Store2GlobalTexts(
+ DYN doc::Node & let_drDocu,
+ ary::info::GlobalTextId
+ i_nId ) = 0;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+DocuStore::Store2CurFile( DYN doc::Node & let_drDocu )
+ { do_Store2CurFile(let_drDocu); }
+inline void
+DocuStore::Store2CurNamespace( DYN doc::Node & let_drDocu )
+ { do_Store2CurNamespace(let_drDocu); }
+inline void
+DocuStore::Store2ConnectedDeclaration( DYN doc::Node & let_drDocu )
+ { do_Store2ConnectedDeclaration(let_drDocu); }
+inline void
+DocuStore::Store2Glossary( DYN doc::Node & let_drDocu,
+ const String & i_sExplainedTerm )
+ { do_Store2Glossary(let_drDocu, i_sExplainedTerm); }
+inline void
+DocuStore::Store2GlobalTexts( DYN doc::Node & let_drDocu,
+ ary::info::GlobalTextId i_nId )
+ { do_Store2GlobalTexts(let_drDocu, i_nId); }
+
+
+
+
+} // namespace info
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/info/infodisp.hxx b/autodoc/inc/ary/info/infodisp.hxx
new file mode 100644
index 000000000000..38aae93b0feb
--- /dev/null
+++ b/autodoc/inc/ary/info/infodisp.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 ARY_INFO_INFODISP_HXX
+#define ARY_INFO_INFODISP_HXX
+// KORR_DEPRECATED_3.0
+
+// BASE CLASSES
+// USED SERVICES
+
+
+
+
+namespace ary
+{
+namespace info
+{
+ class StdTag;
+ class BaseTag;
+ class ExceptionTag;
+ class ImplementsTag;
+ class KeywordTag;
+ class ParameterTag;
+ class SeeTag;
+ class TemplateTag;
+ class LabelTag;
+ class SinceTag;
+ class DT_Text;
+ class DT_MaybeLink;
+ class DT_Whitespace;
+ class DT_Eol;
+ class DT_Xml;
+
+
+
+/** Displaying an ary::doc::OldCppDocu.
+
+ @descr
+ This class is an interface, but the functions are defaulted,
+ to do nothing. so a derived class needn't implement all of them.
+*/
+class DocuDisplay
+{
+ public:
+ virtual ~DocuDisplay() {}
+
+ virtual void Display_StdTag(
+ const StdTag & i_rData ) = 0;
+ virtual void Display_BaseTag(
+ const BaseTag & i_rData ) = 0;
+ virtual void Display_ExceptionTag(
+ const ExceptionTag &
+ i_rData ) = 0;
+ virtual void Display_ImplementsTag(
+ const ImplementsTag &
+ i_rData ) = 0;
+ virtual void Display_KeywordTag(
+ const KeywordTag & i_rData ) = 0;
+ virtual void Display_ParameterTag(
+ const ParameterTag &
+ i_rData ) = 0;
+ virtual void Display_SeeTag(
+ const SeeTag & i_rData ) = 0;
+ virtual void Display_TemplateTag(
+ const TemplateTag & i_rData ) = 0;
+ virtual void Display_LabelTag(
+ const LabelTag & i_rData ) = 0;
+ virtual void Display_SinceTag(
+ const ary::info::SinceTag &
+ i_rData ) = 0;
+ virtual void Display_DT_Text(
+ const DT_Text & i_rData ) = 0;
+ virtual void Display_DT_MaybeLink(
+ const DT_MaybeLink& i_rData ) = 0;
+ virtual void Display_DT_Whitespace(
+ const DT_Whitespace &
+ i_rData ) = 0;
+ virtual void Display_DT_Eol(
+ const DT_Eol & i_rData ) = 0;
+ virtual void Display_DT_Xml(
+ const ary::info::DT_Xml &
+ i_rData ) = 0;
+};
+
+
+
+
+}
+}
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/info/inftypes.hxx b/autodoc/inc/ary/info/inftypes.hxx
new file mode 100644
index 000000000000..1539346fb7d5
--- /dev/null
+++ b/autodoc/inc/ary/info/inftypes.hxx
@@ -0,0 +1,124 @@
+/* -*- 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 ARY_INFO_INFTYPES_HXX
+#define ARY_INFO_INFTYPES_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace info
+{
+
+
+
+
+typedef uintt GlobalTextId;
+
+
+
+/** Because this enum is used as index list for displayed
+ tag headlines, the items must neither be moved nor deleted.
+ Only adding to the end is allowed. atid_MAX always has to exist
+ and to be the last used value.
+ Also assigning numbers to the values is forbidden.
+*/
+enum E_AtTagId
+{
+ atid_ATT = 0,
+ atid_author,
+ atid_change,
+ atid_collab,
+ atid_contact,
+
+ atid_copyright,
+ atid_deprecated,
+ atid_descr,
+ atid_docdate,
+ atid_derive,
+
+ atid_dyn,
+ atid_instance,
+ atid_interface,
+ atid_invariant,
+ atid_life,
+
+ atid_multi,
+ atid_onerror,
+ atid_persist,
+ atid_postcond,
+ atid_precond,
+
+ atid_resp,
+ atid_return,
+ atid_short,
+ atid_todo,
+ atid_version,
+
+ atid_MAX
+};
+
+/** Because this enum is used as index list for displayed
+ tag headlines, the items must neither be moved nor deleted.
+ Only adding to the end is allowed. C_eAtTag_NrOfClasses always has to exist
+ and to be the last used value.
+ Also assigning other numbers to the values, than in this
+ existing scheme, is forbidden.
+*/
+enum E_AtTagClass
+{
+ atc_std = 0,
+
+ atc_base = atid_MAX,
+ atc_exception = atid_MAX + 1,
+ atc_implements = atid_MAX + 2,
+ atc_keyword = atid_MAX + 3,
+ atc_parameter = atid_MAX + 4,
+
+ atc_see = atid_MAX + 5,
+ atc_template = atid_MAX + 6,
+ atc_label = atid_MAX + 7,
+ atc_since = atid_MAX + 8,
+ C_eAtTag_NrOfClasses
+};
+
+
+
+} // namespace info
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/itrange.hxx b/autodoc/inc/ary/itrange.hxx
new file mode 100644
index 000000000000..fb2fb3cb0d7a
--- /dev/null
+++ b/autodoc/inc/ary/itrange.hxx
@@ -0,0 +1,83 @@
+/* -*- 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 ARY_ITRANGE_HXX
+#define ARY_ITRANGE_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <utility>
+
+
+
+
+namespace ary
+{
+
+template <typename ITER>
+class IteratorRange
+{
+ public:
+ IteratorRange(
+ ITER i_begin,
+ ITER i_end )
+ : itCurrent(i_begin),
+ itEnd(i_end)
+ {}
+ IteratorRange(
+ std::pair<ITER,ITER>
+ i_range )
+ : itCurrent(i_range.first),
+ itEnd(i_range.second)
+ {}
+
+ operator bool() const { return itCurrent != itEnd; }
+ IteratorRange & operator++() { ++itCurrent; return *this; }
+
+ ITER cur() const { return itCurrent; }
+ ITER end() const { return itEnd; }
+
+
+ private:
+ // DATA
+ ITER itCurrent;
+ ITER itEnd;
+};
+
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/loc_dir.hxx b/autodoc/inc/ary/loc/loc_dir.hxx
new file mode 100644
index 000000000000..f8abf70cf062
--- /dev/null
+++ b/autodoc/inc/ary/loc/loc_dir.hxx
@@ -0,0 +1,148 @@
+/* -*- 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 ARY_LOC_DIR_HXX
+#define ARY_LOC_DIR_HXX
+
+// BASE CLASSES
+#include <ary/loc/loc_le.hxx>
+
+// USED SERVICES
+#include <ary/loc/loc_traits.hxx>
+#include <ary/symtreenode.hxx>
+
+namespace ary
+{
+namespace loc
+{
+ class File;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+/** Represents a directory for source code files.
+*/
+class Directory : public LocationEntity
+{
+ public:
+ enum E_ClassId { class_id = 7030 };
+
+ typedef ::ary::symtree::Node<LeNode_Traits> node_t;
+
+ /// Used for root directories.
+ explicit Directory(
+ Le_id i_assignedRoot );
+
+ /// Used for subdirectories which have a parent directory.
+ Directory(
+ const String & i_localName,
+ Le_id i_parentDirectory );
+ virtual ~Directory();
+
+ void Add_Dir(
+ const Directory & i_dir );
+ void Add_File(
+ const File & i_file );
+
+ Le_id Parent() const;
+ Le_id AssignedRoot() const;
+
+ Le_id Search_Dir(
+ const String & i_name ) const;
+ Le_id Search_File(
+ const String & i_name ) const;
+
+ const node_t & AsNode() const;
+ node_t & AsNode();
+
+ private:
+ struct Container;
+
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface LocationEntity:
+ virtual const String &
+ inq_LocalName() const;
+ virtual Le_id inq_ParentDirectory() const;
+
+ // DATA
+ String sLocalName;
+ Le_id nParentDirectory;
+ Le_id nAssignedRoot;
+ node_t aAssignedNode;
+ Dyn<Container> pChildren;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Le_id
+Directory::Parent() const
+{
+ return nParentDirectory;
+}
+
+inline Le_id
+Directory::AssignedRoot() const
+{
+ return nAssignedRoot;
+}
+
+inline const Directory::node_t &
+Directory::AsNode() const
+{
+ return aAssignedNode;
+}
+
+inline Directory::node_t &
+Directory::AsNode()
+{
+ return aAssignedNode;
+}
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/loc_file.hxx b/autodoc/inc/ary/loc/loc_file.hxx
new file mode 100644
index 000000000000..1afdd650a7c1
--- /dev/null
+++ b/autodoc/inc/ary/loc/loc_file.hxx
@@ -0,0 +1,71 @@
+/* -*- 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 ARY_LOC_FILE_HXX
+#define ARY_LOC_FILE_HXX
+
+// BASE CLASSES
+#include <ary/loc/loc_filebase.hxx>
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+/** Represents an unspecified source code file.
+*/
+class File : public FileBase
+{
+ public:
+ enum E_ClassId { class_id = 7100 };
+
+ File(
+ const String & i_sLocalName,
+ Le_id i_nParentDirectory );
+ virtual ~File();
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+};
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/loc_filebase.hxx b/autodoc/inc/ary/loc/loc_filebase.hxx
new file mode 100644
index 000000000000..04550d4c8da4
--- /dev/null
+++ b/autodoc/inc/ary/loc/loc_filebase.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 ARY_LOC_FILEBASE_HXX
+#define ARY_LOC_FILEBASE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/loc/loc_le.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+
+/** Base class for classes representing source code files.
+*/
+class FileBase : public LocationEntity
+{
+ public:
+ virtual ~FileBase() {}
+
+ protected:
+ FileBase(
+ const String & i_localName ,
+ Le_id i_parentDirectory );
+ private:
+ // Interface LocationEntity:
+ virtual const String &
+ inq_LocalName() const;
+ virtual Le_id inq_ParentDirectory() const;
+
+ // DATA
+ String sLocalName;
+ Le_id nParentDirectory;
+};
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/loc_le.hxx b/autodoc/inc/ary/loc/loc_le.hxx
new file mode 100644
index 000000000000..b2c0e602083e
--- /dev/null
+++ b/autodoc/inc/ary/loc/loc_le.hxx
@@ -0,0 +1,97 @@
+/* -*- 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 ARY_LOC_LE_HXX
+#define ARY_LOC_LE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/entity.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/loc/loc_types4loc.hxx>
+#include <ary/loc/loc_traits.hxx>
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+/** Base class for all file locations in the Autodoc repository.
+*/
+class LocationEntity : public ::ary::Entity
+{
+ public:
+ typedef Le_Traits traits_t;
+
+ virtual ~LocationEntity() {}
+
+ Le_id LeId() const;
+ const String & LocalName() const;
+ Le_id ParentDirectory() const;
+
+ private:
+ virtual const String &
+ inq_LocalName() const = 0;
+ virtual Le_id inq_ParentDirectory() const = 0;
+};
+
+
+
+
+// IMPLEMENTATION
+inline Le_id
+LocationEntity::LeId() const
+{
+ return TypedId<LocationEntity>(Id());
+}
+
+inline const String &
+LocationEntity::LocalName() const
+{
+ return inq_LocalName();
+}
+
+inline Le_id
+LocationEntity::ParentDirectory() const
+{
+ return inq_ParentDirectory();
+}
+
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/loc_root.hxx b/autodoc/inc/ary/loc/loc_root.hxx
new file mode 100644
index 000000000000..e8b3a66b6209
--- /dev/null
+++ b/autodoc/inc/ary/loc/loc_root.hxx
@@ -0,0 +1,113 @@
+/* -*- 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 ARY_LOC_PROJECT_HXX
+#define ARY_LOC_PROJECT_HXX
+
+// BASE CLASSES
+#include <ary/loc/loc_le.hxx>
+// USED SERVICES
+#include <cosv/ploc.hxx>
+#include <ary/loc/loc_dir.hxx>
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+/** Represents a root directory for source files.
+*/
+class Root : public LocationEntity
+{
+ public:
+ enum E_ClassId { class_id = 7000 };
+
+ explicit Root(
+ const csv::ploc::Path &
+ i_rRootDirectoryPath );
+ void Assign_Directory(
+ Le_id i_assignedDirectory );
+ virtual ~Root();
+
+ // INQUIRY
+ const csv::ploc::Path &
+ Path() const;
+ Le_id MyDir() const;
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface ary::Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface LocationEntity:
+ virtual const String &
+ inq_LocalName() const;
+ virtual Le_id inq_ParentDirectory() const;
+
+ // DATA
+ csv::ploc::Path aPath;
+ String sPathAsString;
+ Le_id aMyDirectory;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+Root::Assign_Directory(Le_id i_assignedDirectory)
+{
+ aMyDirectory = i_assignedDirectory;
+}
+
+inline const csv::ploc::Path &
+Root::Path() const
+{
+ return aPath;
+}
+
+inline Le_id
+Root::MyDir() const
+{
+ return aMyDirectory;
+}
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/loc_traits.hxx b/autodoc/inc/ary/loc/loc_traits.hxx
new file mode 100644
index 000000000000..d07fdeebf334
--- /dev/null
+++ b/autodoc/inc/ary/loc/loc_traits.hxx
@@ -0,0 +1,118 @@
+/* -*- 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 ARY_LOC_TRAITS_HXX
+#define ARY_LOC_TRAITS_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/loc/loc_types4loc.hxx>
+
+
+namespace ary
+{
+namespace symtree
+{
+ template <class> class Node;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+
+/** Basic traits for derived ones of ->LocationEntity.
+*/
+struct Le_Traits
+{
+ typedef LocationEntity entity_base_type;
+ typedef Le_id id_type;
+
+ static entity_base_type &
+ EntityOf_(
+ id_type i_id );
+};
+
+
+/** An instance of SYMBOL_TRAITS for ->::ary::symtree::Node.
+
+ @see ::ary::symtree::Node
+*/
+struct LeNode_Traits : public Le_Traits
+{
+ static symtree::Node<LeNode_Traits> *
+ NodeOf_(
+ entity_base_type & i_entity );
+
+ static entity_base_type *
+ ParentOf_(
+ const entity_base_type &
+ i_entity );
+ template <class KEY>
+ static id_type Search_(
+ const entity_base_type &
+ i_entity,
+ const KEY & i_localKey );
+};
+
+
+
+/** An instance of COMPARE for ->::ary::SortedIds<>.
+
+ @see ::ary::SortedIds<>
+*/
+struct Le_Compare : public Le_Traits
+{
+ typedef String key_type;
+
+ static const key_type &
+ KeyOf_(
+ const entity_base_type &
+ i_entity );
+ static bool Lesser_(
+ const key_type & i_1,
+ const key_type & i_2 );
+};
+
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/loc_types4loc.hxx b/autodoc/inc/ary/loc/loc_types4loc.hxx
new file mode 100644
index 000000000000..64b2a0b76261
--- /dev/null
+++ b/autodoc/inc/ary/loc/loc_types4loc.hxx
@@ -0,0 +1,57 @@
+/* -*- 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 ARY_LOC_TYPES4LOC_HXX
+#define ARY_LOC_TYPES4LOC_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/types.hxx>
+
+
+namespace ary
+{
+namespace loc
+{
+
+class LocationEntity;
+
+
+
+typedef ::ary::TypedId<LocationEntity> Le_id;
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/loc/locp_le.hxx b/autodoc/inc/ary/loc/locp_le.hxx
new file mode 100644
index 000000000000..1d6f201cdf6b
--- /dev/null
+++ b/autodoc/inc/ary/loc/locp_le.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ARY_LOCP_LE_HXX
+#define ARY_LOCP_LE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <cosv/ploc.hxx>
+#include <ary/loc/loc_types4loc.hxx>
+
+
+namespace ary
+{
+namespace loc
+{
+ class Root;
+ class Directory;
+ class File;
+}
+}
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+
+/** Provides access to files and directories stored in the
+ repository.
+*/
+class LocationPilot
+{
+ public:
+ virtual ~LocationPilot() {}
+
+ virtual Root & CheckIn_Root(
+ const csv::ploc::Path &
+ i_rPath ) = 0;
+ virtual File & CheckIn_File(
+ const String & i_name,
+ const csv::ploc::DirectoryChain &
+ i_subPath,
+ Le_id i_root ) = 0;
+
+ virtual Root & Find_Root(
+ Le_id i_id ) const = 0;
+ virtual Directory & Find_Directory(
+ Le_id i_id ) const = 0;
+ virtual File & Find_File(
+ Le_id i_id ) const = 0;
+};
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/namesort.hxx b/autodoc/inc/ary/namesort.hxx
new file mode 100644
index 000000000000..a44eb256d439
--- /dev/null
+++ b/autodoc/inc/ary/namesort.hxx
@@ -0,0 +1,78 @@
+/* -*- 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 ARY_NAMESORT_HXX
+#define ARY_NAMESORT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+
+/** Provides sensible sorting of ASCII names in programming languages.
+
+ @descr
+ Names are compared case insensitive first. Only after they appear
+ equal that way, there is an additional case sensitive comparison.
+ The second comparison sorts upper case before lower case.
+
+*/
+struct LesserName
+{
+ bool operator()(
+ const String & i_s1,
+ const String & i_s2 ) const;
+ private:
+ // DATA
+
+ static const csv::CharOrder_Table
+ aOrdering1_;
+ static const csv::CharOrder_Table
+ aOrdering2_;
+};
+
+inline bool
+LesserName::operator()( const String & i_s1,
+ const String & i_s2 ) const
+{
+ int result = i_s1.compare(aOrdering1_,i_s2);
+ if (result == 0)
+ result = i_s1.compare(aOrdering2_,i_s2);
+ return result < 0;
+}
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/object.hxx b/autodoc/inc/ary/object.hxx
new file mode 100644
index 000000000000..272c4354dca8
--- /dev/null
+++ b/autodoc/inc/ary/object.hxx
@@ -0,0 +1,73 @@
+/* -*- 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 ARY_OBJECT_HXX
+#define ARY_OBJECT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/types.hxx>
+
+
+namespace ary
+{
+
+
+/** Interface for every class, that is stored within the
+ Autodoc Repository.
+*/
+class Object : public csv::ConstProcessorClient
+{
+ public:
+ virtual ~Object() {}
+
+ /// @return Type id of most derived class.
+ ClassId AryClass() const;
+
+ private:
+ virtual ClassId get_AryClass() const = 0;
+};
+
+
+
+inline ClassId
+Object::AryClass() const
+{
+ return get_AryClass();
+}
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/qualiname.hxx b/autodoc/inc/ary/qualiname.hxx
new file mode 100644
index 000000000000..eb669433a99f
--- /dev/null
+++ b/autodoc/inc/ary/qualiname.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 ARY_QUALINAME_HXX
+#define ARY_QUALINAME_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <cosv/tpl/tpltools.hxx>
+
+
+namespace ary
+{
+
+class QualifiedName
+{
+ public:
+ typedef StringVector::const_iterator namespace_iterator;
+
+ QualifiedName(
+ uintt i_nSize = 0);
+
+ /// @see AssignText()
+ QualifiedName(
+ const char * i_sText,
+ const char * i_sSeparator );
+ ~QualifiedName();
+
+ QualifiedName & operator+=(
+ const String & i_sNamespaceName )
+ { if (i_sNamespaceName.length() > 0)
+ aNamespace.push_back(i_sNamespaceName);
+ return *this; }
+ /// @precond i_nIndex < NamespaceDepth().
+ String & operator[](
+ uintt i_nIndex )
+ { csv_assert(i_nIndex < aNamespace.size());
+ return aNamespace[i_nIndex]; }
+ void Init(
+ bool i_bAbsolute )
+ { Empty(); bIsAbsolute = i_bAbsolute; }
+ /** Reads a qualified name from a string.
+ If the last two charcters are "()", the inquiry IsFunction() will return
+ true.
+ */
+ void AssignText(
+ const char * i_sText,
+ const char * i_sSeparator );
+ void SetLocalName(
+ const String & i_sLocalName )
+ { sLocalName = i_sLocalName; }
+ void Empty() { csv::erase_container(aNamespace); sLocalName.clear(); bIsAbsolute = false; }
+
+ const String & LocalName() const { return sLocalName; }
+ namespace_iterator first_namespace() const { return aNamespace.begin(); }
+ namespace_iterator end_namespace() const { return aNamespace.end(); }
+ uintt NamespaceDepth() const { return aNamespace.size(); }
+
+ bool IsAbsolute() const { return bIsAbsolute; }
+ bool IsQualified() const { return aNamespace.size() > 0; }
+ bool IsFunction() const { return bIsFunction; }
+
+ private:
+ // DATA
+ StringVector aNamespace;
+ String sLocalName;
+ bool bIsAbsolute; /// true := beginning with "::".
+ bool bIsFunction; /// true := ending with "()"
+};
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/sequentialids.hxx b/autodoc/inc/ary/sequentialids.hxx
new file mode 100644
index 000000000000..828ad1f310e1
--- /dev/null
+++ b/autodoc/inc/ary/sequentialids.hxx
@@ -0,0 +1,156 @@
+/* -*- 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 ARY_SEQUENTIALIDS_HXX
+#define ARY_SEQUENTIALIDS_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+#include <algorithm>
+
+
+
+namespace ary
+{
+
+
+/** Implementation of a set of children to an entity in the Autodoc
+ repository. The children are in the sequence of addition.
+*/
+template<class ID>
+class SequentialIds
+{
+ public:
+ typedef std::vector<ID> data_t;
+ typedef typename data_t::const_iterator const_iterator;
+
+ // LIFECYCLE
+ explicit SequentialIds(
+ std::size_t i_reserve = 0 );
+ ~SequentialIds();
+
+ // OPERATIONS
+ void Add(
+ const ID & i_child );
+ // INQUIRY
+ const_iterator Begin() const;
+ const_iterator End() const;
+ std::size_t Size() const;
+
+ template <class IDENTIFY>
+ ID Find(
+ IDENTIFY i_find ) const;
+ template <class IDENTIFY>
+ // Workaround for Solaris8 compiler: return type has to match alphabetically
+ typename std::vector<ID>::const_iterator
+ Search(
+ IDENTIFY i_find ) const;
+ private:
+ // DATA
+ data_t aData;
+};
+
+
+
+
+
+
+
+// IMPLEMENTATION
+
+template <class ID>
+SequentialIds<ID>::SequentialIds(std::size_t i_reserve)
+ : aData()
+{
+ if (i_reserve > 0)
+ aData.reserve(i_reserve);
+}
+
+template <class ID>
+SequentialIds<ID>::~SequentialIds()
+{
+}
+
+template <class ID>
+inline void
+SequentialIds<ID>::Add(const ID & i_child)
+{
+ aData.push_back(i_child);
+}
+
+template <class ID>
+inline typename SequentialIds<ID>::const_iterator
+SequentialIds<ID>::Begin() const
+{
+ return aData.begin();
+}
+
+template <class ID>
+inline typename SequentialIds<ID>::const_iterator
+SequentialIds<ID>::End() const
+{
+ return aData.end();
+}
+
+template <class ID>
+inline std::size_t
+SequentialIds<ID>::Size() const
+{
+ return aData.size();
+}
+
+template <class ID>
+template <class IDENTIFY>
+ID
+SequentialIds<ID>::Find(IDENTIFY i_find) const
+{
+ const_iterator
+ ret = std::find_if(aData.begin(), aData.end(), i_find);
+ csv_assert(ret != aData.end());
+ return *ret;
+}
+
+template <class ID>
+template <class IDENTIFY>
+// Workaround for Solaris8 compiler: return type has to match alphabetically
+// typename SequentialIds<ID>::const_iterator
+typename std::vector<ID>::const_iterator
+SequentialIds<ID>::Search(IDENTIFY i_find) const
+{
+ return std::find_if(aData.begin(), aData.end(), i_find);
+}
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/stdconstiter.hxx b/autodoc/inc/ary/stdconstiter.hxx
new file mode 100644
index 000000000000..40408bab8f42
--- /dev/null
+++ b/autodoc/inc/ary/stdconstiter.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ARY_STDCONSTITER_HXX
+#define ARY_STDCONSTITER_HXX
+// KORR_DEPRECATED_3.0
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+
+template <class ELEM>
+
+class StdConstIterator
+{
+ public:
+ virtual ~StdConstIterator() {}
+
+ void operator++() { do_Advance(); }
+ const ELEM & operator*() const { return *inq_CurElement(); }
+ operator bool() const { return inq_CurElement() != 0; }
+
+ /// Needed as replacement for operator bool() in gcc 2.95.
+ bool IsValid() const { return operator bool(); }
+ bool IsSorted() const { return inq_IsSorted(); }
+
+ protected:
+ StdConstIterator() {}
+
+ private:
+ //Locals
+ virtual void do_Advance() = 0;
+ virtual const ELEM *
+ inq_CurElement() const = 0;
+ virtual bool inq_IsSorted() const = 0;
+
+ // Forbidden:
+ StdConstIterator(const StdConstIterator<ELEM>&);
+ StdConstIterator<ELEM> & operator=(const StdConstIterator<ELEM>&);
+};
+
+
+template <class ELEM>
+class Dyn_StdConstIterator
+{
+ public:
+ typedef StdConstIterator<ELEM> client_type;
+
+ Dyn_StdConstIterator(
+ DYN client_type * pass_dpIterator = 0 )
+ : pClient(pass_dpIterator) {}
+ Dyn_StdConstIterator<ELEM> &
+ operator=(
+ DYN client_type * pass_dpIterator )
+ { pClient = pass_dpIterator;
+ return *this; }
+ client_type & operator*() const { return *pClient.MutablePtr(); }
+
+ private:
+ Dyn<client_type> pClient;
+};
+
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/symtreenode.hxx b/autodoc/inc/ary/symtreenode.hxx
new file mode 100644
index 000000000000..6eccef6c81ca
--- /dev/null
+++ b/autodoc/inc/ary/symtreenode.hxx
@@ -0,0 +1,347 @@
+/* -*- 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 ARY_SYMTREE_NODE_HXX
+#define ARY_SYMTREE_NODE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+
+
+
+namespace ary
+{
+namespace symtree
+{
+
+
+
+/** Represents a node in a tree of symbols like a namespace tree or a
+ directory tree.
+
+ @tpl NODE_TRAITS
+ Needs to define the types:
+ entity_base_type: The type of the entities in that storage,
+ e.g. ->ary::cpp::CodeEntity.
+ id_type: The type of the ids of those entities,
+ e.g. ->ary::cpp::Ce_id.
+
+ Needs to define the functions:
+ 1. static entity_base_type &
+ EntityOf_(
+ id_type i_id );
+ 2. static symtree::Node<LeNode_Traits> *
+ NodeOf_(
+ const entity_base_type &
+ i_entity );
+ 3. static const String &
+ LocalNameOf_(
+ const entity_base_type &
+ i_entity );
+ 4. static entity_base_type *
+ ParentOf_(
+ const entity_base_type &
+ i_entity );
+ 5. template <class KEY>
+ static id_t Search_(
+ const entity_base_type &
+ i_entity,
+ const KEY & i_localKey );
+*/
+template <class NODE_TRAITS>
+class Node
+{
+ public:
+ typedef Node<NODE_TRAITS> node_self;
+ typedef typename NODE_TRAITS::entity_base_type entity_t;
+ typedef typename NODE_TRAITS::id_type id_t;
+
+
+ // LIFECYCLE
+ /// @attention Always needs to be followed by ->Assign_Entity()!
+ Node();
+ explicit Node(
+ entity_t & i_entity );
+ void Assign_Entity(
+ entity_t & i_entity );
+ ~Node();
+ // INQUIRY
+ id_t Id();
+ const String Name() const;
+ int Depth() const;
+ const entity_t & Entity() const;
+ const node_self * Parent() const;
+
+ /** Gets a child with a specific name and of a specific type.
+
+ There may be more childs with the same name.
+
+ @return id_t(0), if no matching child is found.
+ */
+ template <class KEY>
+ typename NODE_TRAITS::id_type
+ Search(
+ const KEY & i_localKey ) const
+ {
+ // Inline here to workaround SUNW8 compiler bug, works in SUNW12.
+ return NODE_TRAITS::Search_(Entity(), i_localKey);
+ }
+
+
+ /** Gets a child with a specific qualified name below this node.
+
+ The child may not exists.
+ */
+ template <class KEY>
+ void SearchBelow(
+ id_t & o_return, // Workaround SUNW8 compiler bug
+ StringVector::const_iterator
+ i_qualifiedSearchedName_begin,
+ StringVector::const_iterator
+ i_qualifiedSearchedName_end,
+ const KEY & i_localKey ) const;
+
+ /** Gets a child with a specific qualified name, either below this node
+ or below any of the parent nodes.
+
+ The child may not exists.
+ */
+ template <class KEY>
+ void SearchUp(
+ id_t & o_return, // Workaround SUNW8 compiler bug
+ StringVector::const_iterator
+ i_qualifiedSearchedName_begin,
+ StringVector::const_iterator
+ i_qualifiedSearchedName_end,
+ const KEY & i_localKey ) const;
+ // ACCESS
+ entity_t & Entity();
+ node_self * Parent();
+
+ private:
+ // Forbid copying:
+ Node(const node_self&);
+ node_self& operator=(const node_self&);
+
+ // Locals
+ void InitDepth();
+ node_self * Get_Parent() const;
+ node_self * NodeOf(
+ id_t i_id ) const;
+
+ // DATA
+ entity_t * pEntity;
+ int nDepth;
+};
+
+
+
+
+// IMPLEMENTATION
+
+template <class NODE_TRAITS>
+inline const typename Node<NODE_TRAITS>::entity_t &
+Node<NODE_TRAITS>::Entity() const
+{
+ csv_assert(pEntity != 0);
+ return *pEntity;
+}
+
+template <class NODE_TRAITS>
+inline Node<NODE_TRAITS> *
+Node<NODE_TRAITS>::NodeOf(id_t i_id) const
+{
+ if (i_id.IsValid())
+ return NODE_TRAITS::NodeOf_(NODE_TRAITS::EntityOf_(i_id));
+ return 0;
+}
+
+template <class NODE_TRAITS>
+inline Node<NODE_TRAITS> *
+Node<NODE_TRAITS>::Get_Parent() const
+{
+ entity_t *
+ parent = NODE_TRAITS::ParentOf_(Entity());
+ if (parent != 0)
+ return NODE_TRAITS::NodeOf_(*parent);
+ return 0;
+}
+
+template <class NODE_TRAITS>
+Node<NODE_TRAITS>::Node()
+ : pEntity(0),
+ nDepth(0)
+{
+}
+
+template <class NODE_TRAITS>
+Node<NODE_TRAITS>::Node(entity_t & i_entity)
+ : pEntity(&i_entity),
+ nDepth(0)
+{
+ InitDepth();
+}
+
+template <class NODE_TRAITS>
+void
+Node<NODE_TRAITS>::Assign_Entity(entity_t & i_entity)
+{
+ pEntity = &i_entity;
+ InitDepth();
+}
+
+template <class NODE_TRAITS>
+Node<NODE_TRAITS>::~Node()
+{
+}
+
+template <class NODE_TRAITS>
+inline typename Node<NODE_TRAITS>::id_t
+Node<NODE_TRAITS>::Id()
+{
+ return NODE_TRAITS::IdOf(Entity());
+}
+
+template <class NODE_TRAITS>
+inline const String
+Node<NODE_TRAITS>::Name() const
+{
+ return NODE_TRAITS::LocalNameOf_(Entity());
+}
+
+template <class NODE_TRAITS>
+inline int
+Node<NODE_TRAITS>::Depth() const
+{
+ return nDepth;
+}
+
+template <class NODE_TRAITS>
+inline const Node<NODE_TRAITS> *
+Node<NODE_TRAITS>::Parent() const
+{
+ return Get_Parent();
+}
+
+template <class NODE_TRAITS>
+template <class KEY>
+void
+Node<NODE_TRAITS>::SearchBelow(
+ id_t & o_return, // Workaround SUNW8 compiler bug
+ StringVector::const_iterator i_qualifiedSearchedName_begin,
+ StringVector::const_iterator i_qualifiedSearchedName_end,
+ const KEY & i_localKey ) const
+{
+ if (i_qualifiedSearchedName_begin != i_qualifiedSearchedName_end)
+ {
+ id_t
+ next = Search(*i_qualifiedSearchedName_begin);
+ if (next.IsValid())
+ {
+ const node_self *
+ subnode = NodeOf(next);
+ if (subnode != 0)
+ {
+ subnode->SearchBelow( o_return,
+ i_qualifiedSearchedName_begin+1,
+ i_qualifiedSearchedName_end ,
+ i_localKey );
+ return;
+ }
+ }
+ o_return = id_t(0);
+ return;
+ }
+
+ o_return = Search(i_localKey);
+}
+
+template <class NODE_TRAITS>
+template <class KEY>
+void
+Node<NODE_TRAITS>::SearchUp(
+ id_t & o_return, // Workaround SUNW8 compiler bug
+ StringVector::const_iterator i_qualifiedSearchedName_begin,
+ StringVector::const_iterator i_qualifiedSearchedName_end,
+ const KEY & i_localKey ) const
+{
+ SearchBelow( o_return,
+ i_qualifiedSearchedName_begin,
+ i_qualifiedSearchedName_end,
+ i_localKey );
+ if (o_return.IsValid())
+ return;
+
+ node_self *
+ parent = Get_Parent();
+ if (parent != 0)
+ {
+ parent->SearchUp( o_return,
+ i_qualifiedSearchedName_begin,
+ i_qualifiedSearchedName_end,
+ i_localKey );
+ }
+}
+
+template <class NODE_TRAITS>
+typename Node<NODE_TRAITS>::entity_t &
+Node<NODE_TRAITS>::Entity()
+{
+ csv_assert(pEntity != 0);
+ return *pEntity;
+}
+
+template <class NODE_TRAITS>
+inline Node<NODE_TRAITS> *
+Node<NODE_TRAITS>::Parent()
+{
+ return Get_Parent();
+}
+
+template <class NODE_TRAITS>
+void
+Node<NODE_TRAITS>::InitDepth()
+{
+ Node<NODE_TRAITS> *
+ pp = Get_Parent();
+ if (pp != 0)
+ nDepth = pp->Depth() + 1;
+ else
+ nDepth = 0;
+}
+
+
+
+
+} // namespace symtree
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/types.hxx b/autodoc/inc/ary/types.hxx
new file mode 100644
index 000000000000..aec5198976cc
--- /dev/null
+++ b/autodoc/inc/ary/types.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 ARY_TYPES_HXX
+#define ARY_TYPES_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // OTHER
+
+
+namespace ary
+{
+
+
+typedef uintt Rid;
+typedef uintt ClassId;
+
+
+
+// Deprecated:
+typedef Rid Gid; /// Group Id. Id of a group.
+typedef UINT8 SlotAccessId; /// Access to a Slot
+typedef std::set< Rid, std::less< Rid > > Set_Rid;
+typedef std::vector<Rid> List_Rid;
+
+
+
+
+
+/** This is a global id, providing as well an entity's class as its
+ id.
+*/
+class GlobalId
+{
+ public:
+ GlobalId()
+ : nClass(0),
+ nId(0) {}
+ GlobalId(
+ ClassId i_class,
+ Rid i_id )
+ : nClass(i_class),
+ nId(i_id) {}
+ ~GlobalId() {}
+
+ bool IsValid() const { return nClass != 0
+ AND
+ nId != 0; }
+ ClassId Class() const { return nClass; }
+ Rid Id() const { return nId; }
+
+ private:
+ // DATA
+ ClassId nClass;
+ Rid nId;
+};
+
+
+typedef std::vector<GlobalId> List_GlobalIds;
+
+
+/** This is a typed repository id. It allows to get
+ an object of a specific type.
+*/
+template <class IFC>
+class TypedId
+{
+ public:
+ typedef TypedId<IFC> self;
+
+
+ explicit TypedId(
+ Rid i_nId = 0 )
+ : nId(i_nId) {}
+ TypedId<IFC> & operator=(
+ Rid i_nId )
+ { nId = i_nId; return *this; }
+ bool operator==(
+ const TypedId<IFC> &
+ i_nId ) const
+ { return nId == i_nId.nId; }
+ bool operator!=(
+ const TypedId<IFC> &
+ i_nId ) const
+ { return NOT operator==(i_nId); }
+ bool operator<(
+ const TypedId<IFC> &
+ i_nId ) const
+ { return nId < i_nId.nId; }
+
+ bool IsValid() const { return nId != 0; }
+ Rid Value() const { return nId; }
+
+ static self Null_() { return self(0); }
+
+ private:
+ // DATA
+ Rid nId;
+};
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary/udmhost.hxx b/autodoc/inc/ary/udmhost.hxx
new file mode 100644
index 000000000000..13d8c2377d82
--- /dev/null
+++ b/autodoc/inc/ary/udmhost.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 ARY_UDMHOST_HXX
+#define ARY_UDMHOST_HXX
+// KORR_DEPRECATED_3.0
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/host.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+
+
+
+class UdmHost : public Host
+{
+ public:
+ enum E_ClassId { class_id = 1000 };
+
+ UdmHost();
+ virtual ~UdmHost();
+
+ private:
+ virtual Host_ClassId
+ inq_ClassId() const;
+};
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary_i/ci_atag2.hxx b/autodoc/inc/ary_i/ci_atag2.hxx
new file mode 100644
index 000000000000..ec02190002c0
--- /dev/null
+++ b/autodoc/inc/ary_i/ci_atag2.hxx
@@ -0,0 +1,81 @@
+/* -*- 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 ARY_CI_ATAG2_HXX
+#define ARY_CI_ATAG2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <ary_i/ci_text2.hxx>
+ // PARAMETERS
+
+
+
+namespace ary
+{
+namespace inf
+{
+
+
+class DocumentationDisplay;
+
+class AtTag2
+{
+ public:
+ virtual ~AtTag2() {}
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const = 0;
+
+ const char * Title() const { return sTitle; }
+ const DocuTex2 & Text() const { return aText; }
+ DocuTex2 & Access_Text() { return aText; }
+
+ protected:
+ AtTag2(
+ const char * i_sTitle)
+ : sTitle(i_sTitle) {}
+ String sTitle;
+ DocuTex2 aText;
+};
+
+
+
+// IMPLEMENTATION
+
+} // namespace inf
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary_i/ci_text2.hxx b/autodoc/inc/ary_i/ci_text2.hxx
new file mode 100644
index 000000000000..8e1c202a5636
--- /dev/null
+++ b/autodoc/inc/ary_i/ci_text2.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ARY_CINFO_CI_TEXT2_HXX
+#define ARY_CINFO_CI_TEXT2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace inf
+{
+
+
+class DocumentationDisplay;
+
+
+class DocuToken
+{
+ public:
+ virtual ~DocuToken() {}
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const = 0;
+ virtual bool IsWhiteOnly() const = 0;
+};
+
+
+class DocuTex2
+{
+ public:
+ typedef std::vector< DocuToken * > TokenList;
+
+ DocuTex2();
+ virtual ~DocuTex2();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ void AddToken(
+ DYN DocuToken & let_drToken );
+
+ const TokenList & Tokens() const { return aTokens; }
+ bool IsEmpty() const;
+ const String & TextOfFirstToken() const;
+
+ String & Access_TextOfFirstToken();
+
+ private:
+ TokenList aTokens;
+};
+
+
+
+// IMPLEMENTATION
+
+} // namespace inf
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary_i/d_token.hxx b/autodoc/inc/ary_i/d_token.hxx
new file mode 100644
index 000000000000..7fed7d16104f
--- /dev/null
+++ b/autodoc/inc/ary_i/d_token.hxx
@@ -0,0 +1,284 @@
+/* -*- 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 CSI_DSAPI_D_TOKEN_HXX
+#define CSI_DSAPI_D_TOKEN_HXX
+
+// BASE CLASSES
+#include <ary_i/ci_text2.hxx>
+#include <ary_i/ci_atag2.hxx>
+
+
+namespace ary
+{
+namespace inf
+{
+ class DocumentationDisplay;
+}
+}
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+using ary::inf::DocumentationDisplay;
+
+
+class DT_Dsapi : public ary::inf::DocuToken
+{
+ public:
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const = 0;
+ virtual bool IsWhiteOnly() const;
+};
+
+
+
+class DT_TextToken : public DT_Dsapi
+{
+ public:
+ explicit DT_TextToken(
+ const char * i_sText )
+ : sText(i_sText) {}
+ explicit DT_TextToken(
+ const String & i_sText )
+ : sText(i_sText) {}
+ virtual ~DT_TextToken();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ const char * GetText() const { return sText; }
+ const String & GetTextStr() const { return sText; }
+
+ String & Access_Text() { return sText; }
+
+ virtual bool IsWhiteOnly() const;
+
+ private:
+ String sText;
+};
+
+class DT_White : public DT_Dsapi
+{
+ public:
+ DT_White() {}
+ virtual ~DT_White();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ virtual bool IsWhiteOnly() const;
+};
+
+
+class DT_MLTag : public DT_Dsapi
+{
+ public:
+ enum E_Kind
+ {
+ k_unknown = 0,
+ k_begin,
+ k_end,
+ k_single
+ };
+};
+
+class DT_MupType : public DT_MLTag
+{
+ public:
+ explicit DT_MupType( /// Constructor for End-Tag
+ bool ) /// Must be there, but is not evaluated.
+ : bIsBegin(false) {}
+ explicit DT_MupType( /// Constructor for Begin-Tag
+ const String & i_sScope )
+ : sScope(i_sScope), bIsBegin(true) {}
+ virtual ~DT_MupType();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ const String & Scope() const { return sScope; }
+ bool IsBegin() const { return bIsBegin; }
+
+ private:
+ String sScope;
+ bool bIsBegin;
+};
+
+class DT_MupMember : public DT_MLTag
+{
+ public:
+ explicit DT_MupMember( /// Constructor for End-Tag
+ bool ) /// Must be there, but is not evaluated.
+ : bIsBegin(false) {}
+ DT_MupMember( /// Constructor for Begin-Tag
+ const String & i_sScope )
+ : sScope(i_sScope), bIsBegin(true) {}
+ virtual ~DT_MupMember();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ const String & Scope() const { return sScope; }
+ bool IsBegin() const { return bIsBegin; }
+
+ private:
+ String sScope;
+ bool bIsBegin;
+};
+
+class DT_MupConst : public DT_Dsapi
+{
+ public:
+ DT_MupConst(
+ const char * i_sConstText )
+ : sConstText(i_sConstText) {}
+ virtual ~DT_MupConst();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ const char * GetText() const { return sConstText; }
+
+ private:
+ String sConstText; /// Without HTML.
+};
+
+
+class DT_Style : public DT_MLTag
+{
+ public:
+ DT_Style(
+ const char * i_sPlainHtmlTag,
+ bool i_bNewLine )
+ : sText(i_sPlainHtmlTag), bNewLine(i_bNewLine) {}
+ virtual ~DT_Style();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ const char * GetText() const { return sText; }
+ bool IsStartOfNewLine() const
+ { return bNewLine; }
+ private:
+ String sText; /// With HTML.
+ E_Kind eKind;
+ bool bNewLine;
+};
+
+class DT_EOL : public DT_Dsapi
+{
+ public:
+ DT_EOL() {}
+ virtual ~DT_EOL();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ virtual bool IsWhiteOnly() const;
+};
+
+
+class DT_AtTag : public ary::inf::AtTag2
+{
+ public:
+ void AddToken(
+ DYN ary::inf::DocuToken &
+ let_drToken )
+ { aText.AddToken(let_drToken); }
+ void SetName(
+ const char * i_sName )
+ { sTitle = i_sName; }
+
+ protected:
+ DT_AtTag(
+ const char * i_sTitle )
+ : ary::inf::AtTag2(i_sTitle) {}
+};
+
+class DT_StdAtTag : public DT_AtTag
+{
+ public:
+ explicit DT_StdAtTag(
+ const char * i_sTitle )
+ : DT_AtTag(i_sTitle) {}
+ virtual ~DT_StdAtTag();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+};
+
+class DT_SeeAlsoAtTag : public DT_AtTag
+{
+ public:
+ DT_SeeAlsoAtTag() : DT_AtTag("") {}
+ virtual ~DT_SeeAlsoAtTag();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+ const String & LinkText() const { return sTitle; } // Missbrauch von sTitle
+};
+
+class DT_ParameterAtTag : public DT_AtTag
+{
+ public:
+ DT_ParameterAtTag() : DT_AtTag("") {}
+ virtual ~DT_ParameterAtTag();
+
+ void SetTitle(
+ const char * i_sTitle );
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+};
+
+class DT_SinceAtTag : public DT_AtTag
+{
+ public:
+ DT_SinceAtTag() : DT_AtTag("Since version") {}
+ virtual ~DT_SinceAtTag();
+
+ virtual void DisplayAt(
+ DocumentationDisplay &
+ o_rDisplay ) const;
+};
+
+
+} // namespace dsapi
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/ary_i/disdocum.hxx b/autodoc/inc/ary_i/disdocum.hxx
new file mode 100644
index 000000000000..fac8d1aa8cb0
--- /dev/null
+++ b/autodoc/inc/ary_i/disdocum.hxx
@@ -0,0 +1,148 @@
+/* -*- 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 ARY_DISDOCUM_HXX
+#define ARY_DISDOCUM_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace dsapi
+{
+class DT_TextToken;
+class DT_MupType;
+class DT_MupMember;
+class DT_MupConst;
+class DT_Style;
+class DT_EOL;
+class DT_StdAtTag;
+class DT_SeeAlsoAtTag;
+class DT_ParameterAtTag;
+class DT_SinceAtTag;
+} // namespace dsapi
+} // namespace csi
+
+
+namespace ary
+{
+namespace inf
+{
+
+
+
+class DocumentationDisplay
+{
+ public:
+
+ virtual ~DocumentationDisplay() { }
+
+ virtual void Display_TextToken(
+ const csi::dsapi::DT_TextToken &
+ i_rToken ) = 0;
+ virtual void Display_White() = 0;
+ virtual void Display_MupType(
+ const csi::dsapi::DT_MupType & i_rToken ) = 0;
+ virtual void Display_MupMember(
+ const csi::dsapi::DT_MupMember &
+ i_rToken ) = 0;
+ virtual void Display_MupConst(
+ const csi::dsapi::DT_MupConst &
+ i_rToken ) = 0;
+ virtual void Display_Style(
+ const csi::dsapi::DT_Style & i_rToken ) = 0;
+ virtual void Display_EOL() = 0;
+ virtual void Display_StdAtTag(
+ const csi::dsapi::DT_StdAtTag &
+ i_rToken ) = 0;
+ virtual void Display_SeeAlsoAtTag(
+ const csi::dsapi::DT_SeeAlsoAtTag &
+ i_rToken ) = 0;
+ virtual void Display_ParameterAtTag(
+ const csi::dsapi::DT_ParameterAtTag &
+ i_rToken ) = 0;
+ virtual void Display_SinceAtTag(
+ const csi::dsapi::DT_SinceAtTag &
+ i_rToken ) = 0;
+};
+
+
+class DocuTag_Display : public DocumentationDisplay
+{
+ public:
+ // Dummies, implemented in source\ary_i\kernel\ci_atag2.cxx
+ virtual void Display_TextToken(
+ const csi::dsapi::DT_TextToken &
+ i_rToken );
+ virtual void Display_White();
+ virtual void Display_MupType(
+ const csi::dsapi::DT_MupType & i_rToken );
+ virtual void Display_MupMember(
+ const csi::dsapi::DT_MupMember &
+ i_rToken );
+ virtual void Display_MupConst(
+ const csi::dsapi::DT_MupConst &
+ i_rToken );
+ virtual void Display_Style(
+ const csi::dsapi::DT_Style & i_rToken );
+ virtual void Display_EOL();
+};
+
+class DocuText_Display : public DocumentationDisplay
+{
+ public:
+ // Dummies, implemented in source\ary_i\kernel\ci_text2.cxx
+ virtual void Display_StdAtTag(
+ const csi::dsapi::DT_StdAtTag &
+ i_rToken );
+ virtual void Display_SeeAlsoAtTag(
+ const csi::dsapi::DT_SeeAlsoAtTag &
+ i_rToken );
+ virtual void Display_ParameterAtTag(
+ const csi::dsapi::DT_ParameterAtTag &
+ i_rToken );
+ virtual void Display_SinceAtTag(
+ const csi::dsapi::DT_SinceAtTag &
+ i_rToken );
+};
+
+
+
+} // namespace inf
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/displaying.hxx b/autodoc/inc/autodoc/displaying.hxx
new file mode 100644
index 000000000000..96bd66c0ad71
--- /dev/null
+++ b/autodoc/inc/autodoc/displaying.hxx
@@ -0,0 +1,78 @@
+/* -*- 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 AUTODOC_DISPLAYING_HXX
+#define AUTODOC_DISPLAYING_HXX
+
+
+namespace display
+{
+ class CorporateFrame;
+}
+
+
+
+namespace autodoc
+{
+
+class HtmlDisplay_UdkStd;
+class HtmlDisplay_Idl_Ifc;
+
+// class TextDisplay_FunctionList_Ifc;
+
+
+/** Interface for parsing code of a programming language and
+ delivering the information into an Autodoc Repository.
+**/
+class DisplayToolsFactory_Ifc
+{
+ public:
+ virtual ~DisplayToolsFactory_Ifc() {}
+ static DisplayToolsFactory_Ifc &
+ GetIt_();
+
+// virtual DYN autodoc::TextDisplay_FunctionList_Ifc *
+// Create_TextDisplay_FunctionList() const = 0;
+
+ virtual DYN autodoc::HtmlDisplay_UdkStd *
+ Create_HtmlDisplay_UdkStd() const = 0;
+ virtual DYN autodoc::HtmlDisplay_Idl_Ifc *
+ Create_HtmlDisplay_Idl() const = 0;
+
+ virtual const display::CorporateFrame &
+ Create_StdFrame() const = 0;
+};
+
+
+} // namespace autodoc
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/dsp_html_std.hxx b/autodoc/inc/autodoc/dsp_html_std.hxx
new file mode 100644
index 000000000000..78d75efe7e23
--- /dev/null
+++ b/autodoc/inc/autodoc/dsp_html_std.hxx
@@ -0,0 +1,216 @@
+/* -*- 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 AUTODOC_DSP_HTML_STD_HXX
+#define AUTODOC_DSP_HTML_STD_HXX
+
+
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Gate;
+ }
+ namespace idl
+ {
+ class Gate;
+ }
+}
+
+namespace display
+{
+ class CorporateFrame;
+}
+
+
+namespace autodoc
+{
+
+
+class HtmlDisplay_UdkStd
+{
+ public:
+ virtual ~HtmlDisplay_UdkStd() {}
+
+ /** Displays the names of several C++ code entities within the
+ given namespace (or the global namespace as default). All
+ subnamespaces are included.
+
+ Output has following format:
+
+ =========================================================================
+ OutputDirectory
+ index.html
+ def-all.html
+ prj\
+ sal\
+ index.html // Overview about project
+
+ f-FileName[1,2,...] // Overview about file
+ f-OtherFileName[1,2,...]
+ ...
+ def-FileName[1,2,...] // #defines and macros in file
+ def-OtherFileName[1,2,...]
+ ...
+ rtl\
+ ...
+ cppu\
+ ...
+ cppuhelper\
+ ...
+ ...
+ ix\
+ ix-a.html
+ ix-b.html
+ ...
+ ix-z.html
+ ix-_.html
+ ix-other.html
+
+ cpp\
+ index.html // Overview about global namespace
+
+ Namespace_A\
+ Namespace_C\
+ index.html // Overview about namespace C
+ ...
+ ...
+
+ index.html // Overview about namespace A
+
+ c-ClassName_X.html // Description of class
+ ...
+ e-EnumName.html // Description of enum
+ ...
+ t-TypedefName.html // Description of typedef
+ ...
+ o-Filename.html // Descriptions of operations in this file in this namespace
+ ...
+ d-Filename.html // Descriptions of data in this file in this namespace
+ ...
+
+ ClassName_X\
+ c-ClassName_Y.html
+ e-EnumName.html
+ t-TypedefName.html
+ o.html // Descriptions of operations in class X
+ d.html // Descriptions of data in class X
+
+ ClassName_Y\
+ ...
+ ...
+
+ idl\
+ ...
+ java\
+ ...
+ =========================================================================
+
+
+ @param i_sOutputDirectory
+ Directory for output. Path must be given in correct
+ syntax for the actual operating system without final
+ path delimiter. If this is 0 or "", the current
+ working directory is chosen.
+ @param i_rAryGate
+ The access to the Autodoc Repository.
+ @param i_rLayout
+ Gives parameters for the appearance of the HTML output.
+ @param i_pProjectList
+ If this is != 0, then only code entities which are declared
+ in this projects are displayed.
+ */
+ void Run(
+ const char * i_sOutputDirectory,
+ const ary::cpp::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout );
+ private:
+ virtual void do_Run(
+ const char * i_sOutputDirectory,
+ const ary::cpp::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout ) = 0;
+};
+
+// IMPLEMENTATION
+
+inline void
+HtmlDisplay_UdkStd::Run( const char * i_sOutputDirectory,
+ const ary::cpp::Gate & i_rAryGate,
+ const display::CorporateFrame & i_rLayout )
+{
+ do_Run( i_sOutputDirectory, i_rAryGate, i_rLayout );
+}
+
+
+
+// class HtmlDisplay_Idl_Ifc
+
+class HtmlDisplay_Idl_Ifc
+{
+ public:
+ virtual ~HtmlDisplay_Idl_Ifc() {}
+
+ void Run(
+ const char * i_sOutputDirectory,
+ const ary::idl::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout );
+ private:
+ virtual void do_Run(
+ const char * i_sOutputDirectory,
+ const ary::idl::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout ) = 0;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+HtmlDisplay_Idl_Ifc::Run( const char * i_sOutputDirectory,
+ const ary::idl::Gate & i_rAryGate,
+ const display::CorporateFrame & i_rLayout )
+{
+ do_Run( i_sOutputDirectory, i_rAryGate, i_rLayout );
+}
+
+
+
+
+} // namespace autodoc
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/dsp_txt_flist.hxx b/autodoc/inc/autodoc/dsp_txt_flist.hxx
new file mode 100644
index 000000000000..1b655bd939aa
--- /dev/null
+++ b/autodoc/inc/autodoc/dsp_txt_flist.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 AUTODOC_DSP_TXT_FLIST_HXX
+#define AUTODOC_DSP_TXT_FLIST_HXX
+
+#include <iostream>
+
+
+namespace ary
+{
+ namespace cpp
+ {
+ class DisplayGate;
+ }
+}
+
+
+namespace autodoc
+{
+
+class TextDisplay_FunctionList_Ifc
+{
+ public:
+ virtual ~TextDisplay_FunctionList_Ifc() {}
+
+ /** Displays the names of all C++ functions and methods within the
+ given namespace (or the global namespace as default). All
+ subnamespaces are included.
+ */
+ virtual void Run(
+ ostream & o_rStream,
+ const ary::cpp::DisplayGate &
+ i_rAryGate ) = 0; /// If i_pNamespace == 0, the global namespace is displayed.
+};
+
+
+} // namespace autodoc
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/filecoli.hxx b/autodoc/inc/autodoc/filecoli.hxx
new file mode 100644
index 000000000000..f23d8fc060e2
--- /dev/null
+++ b/autodoc/inc/autodoc/filecoli.hxx
@@ -0,0 +1,74 @@
+/* -*- 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 ADC_PARSER_FILECOLI_HXX
+#define ADC_PARSER_FILECOLI_HXX
+
+
+namespace autodoc
+{
+
+class FileCollector_Ifc
+{
+ public:
+ // TYPES
+ typedef StringVector::const_iterator const_iterator;
+
+ enum E_SearchMode
+ {
+ flat,
+ recursive
+ };
+
+ // LIFECYCLE
+ virtual ~FileCollector_Ifc() {}
+
+ // OPERATIONS
+ virtual uintt AddFilesFrom(
+ const char * i_sRootDir,
+ const char * i_sFilter,
+ E_SearchMode i_eSearchMode ) = 0;
+ virtual uintt AddFile(
+ const char * i_sFilePath ) = 0;
+ virtual void EraseAll() = 0;
+
+ // INQUIRY
+ virtual const_iterator
+ Begin() const = 0;
+ virtual const_iterator
+ End() const = 0;
+ virtual uintt Size() const = 0;
+};
+
+
+} // namespace autodoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/parsing.hxx b/autodoc/inc/autodoc/parsing.hxx
new file mode 100644
index 000000000000..d0073af86731
--- /dev/null
+++ b/autodoc/inc/autodoc/parsing.hxx
@@ -0,0 +1,80 @@
+/* -*- 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 AUTODOC_PARSING_HXX
+#define AUTODOC_PARSING_HXX
+
+
+
+namespace autodoc
+{
+
+class CodeParser_Ifc;
+class DocumentationParser_Ifc;
+class FileCollector_Ifc;
+
+
+/** Interface for parsing code of a programming language and
+ delivering the information into an Autodoc Repository.
+**/
+class ParseToolsFactory_Ifc
+{
+ public:
+ virtual ~ParseToolsFactory_Ifc() {}
+ static ParseToolsFactory_Ifc &
+ GetIt_();
+
+ virtual DYN autodoc::CodeParser_Ifc *
+ Create_Parser_Cplusplus() const = 0;
+
+// virtual DYN autodoc::CodeParser_Ifc *
+// CreateParser_UnoIDL() const = 0;
+// virtual DYN autodoc::CodeParser_Ifc *
+// CreateParser_Java() const = 0;
+// virtual DYN autodoc::CodeParser_Ifc *
+// CreateParser_StoredProcedures() const = 0;
+
+ virtual DYN autodoc::DocumentationParser_Ifc *
+ Create_DocuParser_AutodocStyle() const = 0;
+
+// virtual DYN autodoc::DocumentationParser_Ifc *
+// CreateDocuParser_StarOfficeAPIStyle() const = 0;
+
+ virtual DYN autodoc::FileCollector_Ifc *
+ Create_FileCollector(
+ uintt i_nEstimatedNrOfFiles ) const = 0; /// Should be somewhat larger than the maximal estimated number of files.
+};
+
+
+} // namespace autodoc
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/prs_code.hxx b/autodoc/inc/autodoc/prs_code.hxx
new file mode 100644
index 000000000000..982fa91c6f79
--- /dev/null
+++ b/autodoc/inc/autodoc/prs_code.hxx
@@ -0,0 +1,79 @@
+/* -*- 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 AUTODOC_PRS_CODE_HXX
+#define AUTODOC_PRS_CODE_HXX
+
+
+
+namespace csv
+{
+ namespace ploc
+ {
+ class Path;
+ }
+}
+
+namespace ary
+{
+ class Repository;
+}
+
+namespace autodoc
+{
+ class FileCollector_Ifc;
+ class DocumentationParser_Ifc;
+
+
+
+
+/** Interface for parsing code of a programming language and
+ delivering the information into an Autodoc Repository.
+**/
+class CodeParser_Ifc
+{
+ public:
+ virtual ~CodeParser_Ifc() {}
+
+ virtual void Setup(
+ ary::Repository & o_rRepository,
+ const autodoc::DocumentationParser_Ifc &
+ i_rDocumentationInterpreter ) = 0;
+
+ virtual void Run(
+ const autodoc::FileCollector_Ifc &
+ i_rFiles ) = 0;
+};
+
+
+
+
+} // namespace autodoc
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/prs_docu.hxx b/autodoc/inc/autodoc/prs_docu.hxx
new file mode 100644
index 000000000000..93608b51b541
--- /dev/null
+++ b/autodoc/inc/autodoc/prs_docu.hxx
@@ -0,0 +1,61 @@
+/* -*- 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 ADC_PARSER_PRS_DOCU_HXX
+#define ADC_PARSER_PRS_DOCU_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+namespace autodoc
+{
+
+class TkpDocuContext;
+
+class DocumentationParser_Ifc
+{
+ public:
+ virtual ~DocumentationParser_Ifc() {}
+
+ virtual DYN TkpDocuContext *
+ Create_DocuContext() const = 0;
+};
+
+
+} // namespace autodoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/autodoc/x_parsing.hxx b/autodoc/inc/autodoc/x_parsing.hxx
new file mode 100644
index 000000000000..f33615576821
--- /dev/null
+++ b/autodoc/inc/autodoc/x_parsing.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 AUTODOC_X_PARSING_HXX
+#define AUTODOC_X_PARSING_HXX
+
+// USED SERVICES
+#include <iostream>
+
+
+
+
+namespace autodoc
+{
+
+class X_Parser_Ifc
+{
+ public:
+ // TYPES
+ enum E_Event
+ {
+ x_Any = 0,
+ x_InvalidChar,
+ x_UnexpectedToken,
+ x_UnexpectedEOF,
+ x_UnspecifiedSyntaxError
+ };
+
+ // LIFECYCLE
+ virtual ~X_Parser_Ifc() {}
+
+ // INQUIRY
+ virtual E_Event GetEvent() const = 0;
+ virtual void GetInfo(
+ std::ostream & o_rOutputMedium ) const = 0;
+};
+
+
+} // namespace autodoc
+
+std::ostream & operator<<(
+ std::ostream & o_rOut,
+ const autodoc::X_Parser_Ifc &
+ i_rException );
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/display/corframe.hxx b/autodoc/inc/display/corframe.hxx
new file mode 100644
index 000000000000..cacc41caa249
--- /dev/null
+++ b/autodoc/inc/display/corframe.hxx
@@ -0,0 +1,84 @@
+/* -*- 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 ADC_CORFRAME_HXX
+#define ADC_CORFRAME_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+class Html_Image;
+
+
+namespace display
+{
+
+
+class CorporateFrame
+{
+ public:
+ // LIFECYCLE
+ virtual ~CorporateFrame() {}
+
+ // INQUIRY
+ virtual DYN Html_Image *
+ LogoSrc() const = 0;
+ virtual const char *
+ LogoLink() const = 0;
+ virtual const char *
+ CopyrightText() const = 0;
+
+ virtual const char *
+ CssStyle() const = 0;
+ virtual const char *
+ CssStylesExplanation() const = 0;
+ virtual const char *
+ DevelopersGuideHtmlRoot() const = 0;
+ virtual bool SimpleLinks() const = 0;
+
+ // ACCESS
+ virtual void Set_DevelopersGuideHtmlRoot(
+ const String & i_directory ) = 0;
+ virtual void Set_SimpleLinks() = 0;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace display
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/parser/parser.hxx b/autodoc/inc/parser/parser.hxx
new file mode 100644
index 000000000000..e06898211b90
--- /dev/null
+++ b/autodoc/inc/parser/parser.hxx
@@ -0,0 +1,59 @@
+/* -*- 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 ADC_PARSER_HXX
+#define ADC_PARSER_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace autodoc
+{
+ class FileCollector_Ifc;
+}
+
+
+class CodeParser
+{
+ public:
+ virtual ~CodeParser() {}
+
+ virtual void Run(
+ const autodoc::FileCollector_Ifc &
+ i_rFiles ) = 0;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/parser/parserinfo.hxx b/autodoc/inc/parser/parserinfo.hxx
new file mode 100644
index 000000000000..db524145c8cd
--- /dev/null
+++ b/autodoc/inc/parser/parserinfo.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 ADC_PARSERINFO_HXX
+#define ADC_PARSERINFO_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+/** Interface about current state of parsing.
+*/
+class ParserInfo
+{
+ public:
+ // OPERATIONS
+ void Set_CurFile(
+ const String & i_file,
+ bool i_bUseLines = false)
+ { sCurFile = i_file;
+ nCurLine = i_bUseLines ? 1 : 0; }
+ void Increment_CurLine()
+ { ++nCurLine; }
+
+ // INQUIRY
+ const String & CurFile() const { return sCurFile; }
+ uintt CurLine() const { return nCurLine; }
+
+ protected:
+ // LIFECYCLE
+ ParserInfo() : sCurFile(), nCurLine(0) {}
+ ~ParserInfo() {}
+ private:
+ String sCurFile;
+ uintt nCurLine;
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/inc/parser/unoidl.hxx b/autodoc/inc/parser/unoidl.hxx
new file mode 100644
index 000000000000..f83809054f64
--- /dev/null
+++ b/autodoc/inc/parser/unoidl.hxx
@@ -0,0 +1,81 @@
+/* -*- 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 ADC_UNOIDL_HXX
+#define ADC_UNOIDL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <parser/parser.hxx>
+#include <parser/parserinfo.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+ class Repository;
+}
+namespace autodoc
+{
+ class FileCollector_Ifc;
+}
+
+namespace autodoc
+{
+
+
+class IdlParser : public ::CodeParser,
+ public ::ParserInfo
+{
+ public:
+ IdlParser(
+ ary::Repository & io_rRepository );
+
+ virtual void Run(
+ const autodoc::FileCollector_Ifc &
+ i_rFiles );
+
+ private:
+ // DATA
+ ary::Repository * pRepository;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace autodoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/prj/build.lst b/autodoc/prj/build.lst
new file mode 100644
index 000000000000..fd4d3f7c7963
--- /dev/null
+++ b/autodoc/prj/build.lst
@@ -0,0 +1,67 @@
+ar autodoc : cosv udm sal NULL
+ar autodoc usr1 - all ar_mkout NULL
+ar autodoc\inc get - all ar_i NULL
+ar autodoc\inc\ary get - all ar_ir NULL
+ar autodoc\inc\ary\cpp get - all ar_ir_cpp NULL
+ar autodoc\inc\ary\idl get - all ar_ir_idl NULL
+ar autodoc\inc\ary\info get - all ar_ir_info NULL
+ar autodoc\inc\ary\loc get - all ar_ir_loc NULL
+ar autodoc\inc\ary\task get - all ar_ir_task NULL
+ar autodoc\inc\ary_i get - all ar_ir_cinfo NULL
+ar autodoc\inc\autodoc get - all ar_iau NULL
+ar autodoc\inc\display get - all ar_idispl2 NULL
+ar autodoc\inc\parser get - all ar_iparse2 NULL
+ar autodoc\prj get - all ar_prj NULL
+ar autodoc\util get - all ar_util NULL
+ar autodoc\source get - all ar_s NULL
+ar autodoc\source\inc get - all ar_si NULL
+ar autodoc\source\inc\display get - all ar_si_display NULL
+ar autodoc\source\inc\oodb get - all ar_si_oodb2 NULL
+ar autodoc\source\inc\tools get - all ar_si_tools NULL
+ar autodoc\source\inc\utility get - all ar_si_util2 NULL
+ar autodoc\source\ary get - all ar_sr NULL
+ar autodoc\source\ary\inc get - all ar_sri NULL
+ar autodoc\source\ary\inc\cpp get - all ar_sri_cpp NULL
+ar autodoc\source\ary\inc\idl get - all ar_sri_idl NULL
+ar autodoc\source\ary\inc\loc get - all ar_sri_loc NULL
+ar autodoc\source\ary\inc\store get - all ar_sri_store NULL
+ar autodoc\source\ary\cpp nmake - all ar_sr_cpp NULL
+ar autodoc\source\ary\doc nmake - all ar_sr_doc NULL
+ar autodoc\source\ary\idl nmake - all ar_sr_idl NULL
+ar autodoc\source\ary\info nmake - all ar_sr_info NULL
+ar autodoc\source\ary\kernel nmake - all ar_sr_kernel NULL
+ar autodoc\source\ary\loc nmake - all ar_sr_loc NULL
+ar autodoc\source\ary_i get - all ar_sr_i NULL
+ar autodoc\source\ary_i\kernel nmake - all ar_sr_cinfo NULL
+ar autodoc\source\display get - all ar_sd NULL
+ar autodoc\source\display\inc get - all ar_sdi NULL
+ar autodoc\source\display\inc\funclist get - all ar_sdi_flist NULL
+ar autodoc\source\display\inc\html get - all ar_sdi_html NULL
+ar autodoc\source\display\html nmake - all ar_sd_html NULL
+ar autodoc\source\display\kernel nmake - all ar_sd_kernel NULL
+ar autodoc\source\display\idl nmake - all ar_sd_idl NULL
+ar autodoc\source\display\toolkit nmake - all ar_sd_tkit NULL
+ar autodoc\source\parser get - all ar_sp NULL
+ar autodoc\source\parser\inc get - all ar_spi NULL
+ar autodoc\source\parser\inc\adoc get - all ar_spi_adoc NULL
+ar autodoc\source\parser\inc\cpp get - all ar_spi_cpp NULL
+ar autodoc\source\parser\inc\semantic get - all ar_spi_sem NULL
+ar autodoc\source\parser\inc\tokens get - all ar_spi_tok NULL
+ar autodoc\source\parser\adoc nmake - all ar_sp_adoc NULL
+ar autodoc\source\parser\cpp nmake - all ar_sp_cpp NULL
+ar autodoc\source\parser\kernel nmake - all ar_sp_krnl NULL
+ar autodoc\source\parser\semantic nmake - all ar_sp_sem NULL
+ar autodoc\source\parser\tokens nmake - all ar_sp_tok NULL
+ar autodoc\source\parser_i get - all ar_sp2 NULL
+ar autodoc\source\parser_i\inc get - all ar_sp2i NULL
+ar autodoc\source\parser_i\inc\s2_dsapi get - all ar_sp2i_idoc NULL
+ar autodoc\source\parser_i\inc\s2_luidl get - all ar_sp2i_cpp NULL
+ar autodoc\source\parser_i\inc\semantic get - all ar_sp2i_sem NULL
+ar autodoc\source\parser_i\inc\tokens get - all ar_sp2i_tok NULL
+ar autodoc\source\parser_i\idl nmake - all ar_sp2_idl NULL
+ar autodoc\source\parser_i\idoc nmake - all ar_sp2_idoc NULL
+ar autodoc\source\parser_i\tokens nmake - all ar_sp2_tok NULL
+ar autodoc\source\tools nmake - all ar_st NULL
+ar autodoc\source\mkinc get - all ar_smk NULL
+ar autodoc\source\exes get - all ar_se NULL
+ar autodoc\source\exes\adc_uni nmake - all ar_se_uni ar_sr_cpp ar_sr_doc ar_sr_idl ar_sr_info ar_sr_kernel ar_sr_loc ar_sr_cinfo ar_sd_html ar_sd_kernel ar_sd_idl ar_sp_adoc ar_sp_cpp ar_sp_krnl ar_sp_sem ar_sp_tok ar_sp2_idl ar_sd_tkit ar_sp2_idoc ar_sp2_tok ar_st NULL
diff --git a/autodoc/prj/d.lst b/autodoc/prj/d.lst
new file mode 100644
index 000000000000..c73e559f0729
--- /dev/null
+++ b/autodoc/prj/d.lst
@@ -0,0 +1,3 @@
+..\%__SRC%\bin\autodoc.exe %_DEST%\bin%_EXT%\autodoc.exe
+..\%__SRC%\bin\autodoc %_DEST%\bin%_EXT%\autodoc
+
diff --git a/autodoc/source/ary/cpp/c_builtintype.cxx b/autodoc/source/ary/cpp/c_builtintype.cxx
new file mode 100644
index 000000000000..f6168f197856
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_builtintype.cxx
@@ -0,0 +1,130 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_builtintype.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_type.hxx>
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+
+//********************** Type **************************//
+Rid
+Type::inq_RelatedCe() const
+{
+ return 0;
+}
+
+
+//********************** BuiltInType **************************//
+
+BuiltInType::BuiltInType( const String & i_sName,
+ E_TypeSpecialisation i_eSpecialisation )
+ : sName( i_sName ),
+ eSpecialisation( i_eSpecialisation )
+{
+}
+
+String
+BuiltInType::SpecializedName_( const char * i_sName,
+ E_TypeSpecialisation i_eTypeSpecialisation )
+{
+ StreamLock
+ aStrLock(60);
+ StreamStr &
+ ret = aStrLock();
+
+ switch ( i_eTypeSpecialisation )
+ {
+ case TYSP_unsigned:
+ ret << "u_";
+ break;
+ case TYSP_signed:
+ if (strcmp(i_sName,"char") == 0)
+ ret << "s_";
+ break;
+ default:
+ ;
+
+ } // end switch
+
+ ret << i_sName;
+ return String(ret.c_str());
+}
+
+void
+BuiltInType::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ary::ClassId
+BuiltInType::get_AryClass() const
+{
+ return class_id;
+}
+
+bool
+BuiltInType::inq_IsConst() const
+{
+ return false;
+}
+
+void
+BuiltInType::inq_Get_Text( StreamStr & , // o_rPreName
+ StreamStr & o_rName,
+ StreamStr & , // o_rPostName
+ const Gate & ) const // i_rGate
+{
+ switch (eSpecialisation)
+ {
+ case TYSP_unsigned: o_rName << "unsigned "; break;
+ case TYSP_signed: o_rName << "signed "; break;
+
+ default: // Does nothing.
+ ;
+ }
+ o_rName << sName;
+}
+
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_class.cxx b/autodoc/source/ary/cpp/c_class.cxx
new file mode 100644
index 000000000000..33aa04a8c5ac
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_class.cxx
@@ -0,0 +1,287 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_class.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <slots.hxx>
+#include "c_slots.hxx"
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+Class::Class( const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ loc::Le_id i_nFile,
+ E_ClassKey i_eClassKey )
+ : aEssentials( i_sLocalName,
+ i_nOwner,
+ i_nFile ),
+ aAssignedNode(),
+ aBaseClasses(),
+ aTemplateParameterTypes(),
+ aClasses(),
+ aEnums(),
+ aTypedefs(),
+ aOperations(),
+ aStaticOperations(),
+ aData(),
+ aStaticData(),
+ aFriendClasses(),
+ aFriendOperations(),
+ aKnownDerivatives(),
+ eClassKey(i_eClassKey),
+ eProtection(i_eProtection),
+ eVirtuality(VIRTUAL_none)
+{
+ aAssignedNode.Assign_Entity(*this);
+}
+
+Class::~Class()
+{
+}
+
+void
+Class::Add_BaseClass( const S_Classes_Base & i_rBaseClass )
+{
+ aBaseClasses.push_back(i_rBaseClass);
+}
+
+void
+Class::Add_TemplateParameterType( const String & i_sLocalName,
+ Type_id i_nIdAsType )
+{
+ aTemplateParameterTypes.push_back(
+ List_TplParam::value_type(i_sLocalName,i_nIdAsType) );
+}
+
+void
+Class::Add_LocalClass( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aClasses.push_back( S_LocalCe(i_sLocalName, i_nId) );
+}
+
+void
+Class::Add_LocalEnum( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aEnums.push_back( S_LocalCe(i_sLocalName, i_nId) );
+}
+
+void
+Class::Add_LocalTypedef( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aTypedefs.push_back( S_LocalCe(i_sLocalName, i_nId) );
+}
+
+void
+Class::Add_LocalOperation( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aOperations.push_back( S_LocalCe(i_sLocalName, i_nId) );
+}
+
+void
+Class::Add_LocalStaticOperation( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aStaticOperations.push_back( S_LocalCe(i_sLocalName, i_nId) );
+}
+
+void
+Class::Add_LocalData( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aData.push_back( S_LocalCe(i_sLocalName, i_nId) );
+}
+
+void
+Class::Add_LocalStaticData( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aStaticData.push_back( S_LocalCe(i_sLocalName, i_nId) );
+}
+
+
+struct find_name
+{
+ find_name(
+ const String & i_name )
+ : sName(i_name) {}
+
+ bool operator()(
+ const S_LocalCe & i_lce ) const
+ { return i_lce.sLocalName == sName; }
+ private:
+ String sName;
+};
+
+Ce_id
+Class::Search_Child(const String & i_key) const
+{
+ Ce_id
+ ret = Ce_id(Search_LocalClass(i_key));
+ if (ret.IsValid())
+ return ret;
+
+ CIterator_Locals
+ itret = std::find_if(aEnums.begin(), aEnums.end(), find_name(i_key));
+ if (itret != aEnums.end())
+ return (*itret).nId;
+ itret = std::find_if(aTypedefs.begin(), aTypedefs.end(), find_name(i_key));
+ if (itret != aTypedefs.end())
+ return (*itret).nId;
+ itret = std::find_if(aData.begin(), aData.end(), find_name(i_key));
+ if (itret != aData.end())
+ return (*itret).nId;
+ itret = std::find_if(aStaticData.begin(), aStaticData.end(), find_name(i_key));
+ if (itret != aStaticData.end())
+ return (*itret).nId;
+ return Ce_id(0);
+}
+
+Rid
+Class::Search_LocalClass( const String & i_sName ) const
+{
+ CIterator_Locals itFound = PosOfName(aClasses, i_sName);
+ if (itFound != aClasses.end())
+ return (*itFound).nId.Value();
+ return 0;
+}
+
+const String &
+Class::inq_LocalName() const
+{
+ return aEssentials.LocalName();
+}
+
+Cid
+Class::inq_Owner() const
+{
+ return aEssentials.Owner();
+}
+
+loc::Le_id
+Class::inq_Location() const
+{
+ return aEssentials.Location();
+}
+
+void
+Class::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Class::get_AryClass() const
+{
+ return class_id;
+}
+
+Gid
+Class::inq_Id_Group() const
+{
+ return static_cast<Gid>(Id());
+}
+
+const ary::cpp::CppEntity &
+Class::inq_RE_Group() const
+{
+ return *this;
+}
+
+const group::SlotList &
+Class::inq_Slots() const
+{
+ static const SlotAccessId aProjectSlotData[]
+ = { SLOT_Bases,
+ SLOT_NestedClasses,
+ SLOT_Enums,
+ SLOT_Typedefs,
+ SLOT_Operations,
+ SLOT_StaticOperations,
+ SLOT_Data,
+ SLOT_StaticData,
+ SLOT_FriendClasses,
+ SLOT_FriendOperations };
+ static const std::vector< SlotAccessId >
+ aSlots( &aProjectSlotData[0],
+ &aProjectSlotData[0]
+ + sizeof aProjectSlotData / sizeof (SlotAccessId) );
+ return aSlots;
+}
+
+
+DYN Slot *
+Class::inq_Create_Slot( SlotAccessId i_nSlot ) const
+{
+ switch ( i_nSlot )
+ {
+ case SLOT_Bases: return new Slot_BaseClass(aBaseClasses);
+ case SLOT_NestedClasses: return new Slot_ListLocalCe(aClasses);
+ case SLOT_Enums: return new Slot_ListLocalCe(aEnums);
+ case SLOT_Typedefs: return new Slot_ListLocalCe(aTypedefs);
+ case SLOT_Operations: return new Slot_ListLocalCe(aOperations);
+ case SLOT_StaticOperations: return new Slot_ListLocalCe(aStaticOperations);
+ case SLOT_Data: return new Slot_ListLocalCe(aData);
+ case SLOT_StaticData: return new Slot_ListLocalCe(aStaticData);
+ case SLOT_FriendClasses: return new Slot_SequentialIds<Ce_id>(aFriendClasses);
+ case SLOT_FriendOperations: return new Slot_SequentialIds<Ce_id>(aFriendOperations);
+ default:
+ return new Slot_Null;
+ } // end switch
+}
+
+Class::CIterator_Locals
+Class::PosOfName( const List_LocalCe & i_rList,
+ const String & i_sName ) const
+{
+ for ( CIterator_Locals ret = i_rList.begin();
+ ret != i_rList.end();
+ ++ret )
+ {
+ if ( (*ret).sLocalName == i_sName )
+ return ret;
+ }
+ return i_rList.end();
+}
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_de.cxx b/autodoc/source/ary/cpp/c_de.cxx
new file mode 100644
index 000000000000..704bc697e239
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_de.cxx
@@ -0,0 +1,54 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_de.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+DefineEntity::DefineEntity( const String & i_name,
+ loc::Le_id i_declaringFile )
+ : sName(i_name),
+ nLocation(i_declaringFile)
+{
+}
+
+
+
+
+} // end namespace cpp
+} // end namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_define.cxx b/autodoc/source/ary/cpp/c_define.cxx
new file mode 100644
index 000000000000..6ea6b8f6a04f
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_define.cxx
@@ -0,0 +1,79 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_define.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <prprpr.hxx>
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+Define::Define( const String & i_name,
+ const StringVector & i_definition,
+ loc::Le_id i_declaringFile)
+ : DefineEntity(i_name, i_declaringFile),
+ aDefinition(i_definition)
+{
+}
+
+Define::~Define()
+{
+}
+
+void
+Define::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Define::get_AryClass() const
+{
+ return class_id;
+}
+
+const StringVector &
+Define::inq_DefinitionText() const
+{
+ return aDefinition;
+}
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_enum.cxx b/autodoc/source/ary/cpp/c_enum.cxx
new file mode 100644
index 000000000000..e4f8ad15983c
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_enum.cxx
@@ -0,0 +1,137 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_enum.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <slots.hxx>
+#include "c_slots.hxx"
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+Enum::Enum( const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ Lid i_nFile )
+ : aEssentials( i_sLocalName,
+ i_nOwner,
+ i_nFile ),
+ aValues(),
+ eProtection(i_eProtection)
+{
+}
+
+Enum::~Enum()
+{
+}
+
+void
+Enum::Add_Value( Ce_id i_nId )
+{
+ aValues.Add( i_nId );
+}
+
+const String &
+Enum::inq_LocalName() const
+{
+ return aEssentials.LocalName();
+}
+
+Cid
+Enum::inq_Owner() const
+{
+ return aEssentials.Owner();
+}
+
+Lid
+Enum::inq_Location() const
+{
+ return aEssentials.Location();
+}
+
+void
+Enum::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Enum::get_AryClass() const
+{
+ return class_id;
+}
+
+Gid
+Enum::inq_Id_Group() const
+{
+ return static_cast<Gid>(Id());
+}
+
+const ary::cpp::CppEntity &
+Enum::inq_RE_Group() const
+{
+ return *this;
+}
+
+const group::SlotList &
+Enum::inq_Slots() const
+{
+ static const SlotAccessId aProjectSlotData[]
+ = { SLOT_Values };
+ static const std::vector< SlotAccessId >
+ aSlots( &aProjectSlotData[0],
+ &aProjectSlotData[0]
+ + sizeof aProjectSlotData / sizeof (SlotAccessId) );
+ return aSlots;
+}
+
+DYN Slot *
+Enum::inq_Create_Slot( SlotAccessId i_nSlot ) const
+{
+ switch ( i_nSlot )
+ {
+ case SLOT_Values: return new Slot_SequentialIds<Ce_id>(aValues);
+ default:
+ return new Slot_Null;
+ } // end switch
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_enuval.cxx b/autodoc/source/ary/cpp/c_enuval.cxx
new file mode 100644
index 000000000000..1641689895d4
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_enuval.cxx
@@ -0,0 +1,90 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_enuval.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+EnumValue::EnumValue( const String & i_sLocalName,
+ Ce_id i_nOwner,
+ String i_sInitialisation )
+ : aEssentials( i_sLocalName,
+ i_nOwner,
+ Lid(0) ),
+ sInitialisation(i_sInitialisation)
+{
+}
+
+EnumValue::~EnumValue()
+{
+}
+
+const String &
+EnumValue::inq_LocalName() const
+{
+ return aEssentials.LocalName();
+}
+
+Cid
+EnumValue::inq_Owner() const
+{
+ return aEssentials.Owner();
+}
+
+Lid
+EnumValue::inq_Location() const
+{
+ return aEssentials.Location();
+}
+
+void
+EnumValue::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+EnumValue::get_AryClass() const
+{
+ return class_id;
+}
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_funct.cxx b/autodoc/source/ary/cpp/c_funct.cxx
new file mode 100644
index 000000000000..514e294f2bef
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_funct.cxx
@@ -0,0 +1,250 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_funct.hxx>
+
+
+
+// NOT FULLY DECLARED SERVICES
+#include <algorithm>
+#include <ary/cpp/c_funct.hxx>
+
+
+
+
+
+namespace
+{
+using namespace ::ary::cpp;
+
+
+class Parameter_2_NonTypeParamInfo
+{
+ public:
+ String operator()(
+ const S_Parameter & i_rParam ) const;
+};
+
+class Parameter_2_Type
+{
+ public:
+ Type_id operator()(
+ const S_Parameter & i_rParam ) const
+ { return i_rParam.nType; }
+};
+
+/** @return
+ A vector with Strings like this:
+ "ParamName" or "ParamName[ArraySize]" or "ParamName = InitValue".
+*/
+StringVector Create_NonTypeParameterInfos(
+ const std::vector<S_Parameter> &
+ i_rParameters );
+/** @return
+ A vector of the parameters' type ids.
+*/
+std::vector<Type_id>
+ Create_ParameterTypeList(
+ const std::vector<S_Parameter> &
+ i_rParameters );
+
+} // namspace anonymous
+
+
+namespace ary
+{
+namespace cpp
+{
+
+Function::Function( const String & i_sLocalName,
+ Ce_id i_nOwner,
+ E_Protection i_eProtection,
+ Lid i_nFile,
+ Type_id i_nReturnType,
+ const std::vector<S_Parameter> &
+ i_parameters,
+ E_ConVol i_conVol,
+ E_Virtuality i_eVirtuality,
+ FunctionFlags i_aFlags,
+ bool i_bThrowExists,
+ const std::vector<Type_id> &
+ i_rExceptions )
+ : aEssentials( i_sLocalName,
+ i_nOwner,
+ i_nFile ),
+ aTemplateParameterTypes(),
+ aSignature( Create_ParameterTypeList(i_parameters),
+ i_conVol ),
+ nReturnType(i_nReturnType),
+ eProtection(i_eProtection),
+ eVirtuality(i_eVirtuality),
+ aFlags(i_aFlags),
+ aParameterInfos( Create_NonTypeParameterInfos(i_parameters) ),
+ pExceptions( i_bThrowExists ? new ExceptionTypeList(i_rExceptions) : 0 )
+{
+}
+
+Function::~Function()
+{
+}
+
+bool
+Function::IsIdentical( const Function & i_f ) const
+{
+ return
+ LocalName() == i_f.LocalName()
+ AND
+ Owner() == i_f.Owner()
+ AND
+ aSignature == i_f.aSignature
+ AND
+ nReturnType == i_f.nReturnType
+ AND
+ eProtection == i_f.eProtection
+ AND
+ eVirtuality == i_f.eVirtuality
+ AND
+ aFlags == i_f.aFlags
+ AND
+ ( ( NOT pExceptions AND NOT i_f.pExceptions )
+ OR
+ ( pExceptions AND i_f.pExceptions
+ ? *pExceptions == *i_f.pExceptions
+ : false )
+ )
+ AND
+ aTemplateParameterTypes.size() == i_f.aTemplateParameterTypes.size();
+}
+
+void
+Function::Add_TemplateParameterType( const String & i_sLocalName,
+ Type_id i_nIdAsType )
+{
+ aTemplateParameterTypes.push_back(
+ List_TplParam::value_type(i_sLocalName, i_nIdAsType) );
+}
+
+
+const String &
+Function::inq_LocalName() const
+{
+ return aEssentials.LocalName();
+}
+
+Cid
+Function::inq_Owner() const
+{
+ return aEssentials.Owner();
+}
+
+Lid
+Function::inq_Location() const
+{
+ return aEssentials.Location();
+}
+
+void
+Function::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Function::get_AryClass() const
+{
+ return class_id;
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+
+
+namespace
+{
+
+String
+Parameter_2_NonTypeParamInfo::operator()( const ary::cpp::S_Parameter & i_rParam ) const
+{
+ static StreamStr aParamName_(1020);
+ aParamName_.seekp(0);
+
+ aParamName_ << i_rParam.sName;
+ if ( i_rParam.sSizeExpression.length() > 0 )
+ {
+ aParamName_ << '['
+ << i_rParam.sSizeExpression
+ << ']';
+ }
+ if ( i_rParam.sInitExpression.length() > 0 )
+ {
+ aParamName_ << " = "
+ << i_rParam.sInitExpression;
+ }
+
+ return aParamName_.c_str();
+}
+
+
+StringVector
+Create_NonTypeParameterInfos( const std::vector<S_Parameter> & i_rParameters )
+{
+ static Parameter_2_NonTypeParamInfo
+ aTransformFunction_;
+
+ StringVector
+ ret(i_rParameters.size(), String::Null_());
+ std::transform( i_rParameters.begin(), i_rParameters.end(),
+ ret.begin(),
+ aTransformFunction_ );
+ return ret;
+}
+
+std::vector<Type_id>
+Create_ParameterTypeList( const std::vector<S_Parameter> & i_rParameters )
+{
+ static Parameter_2_Type
+ aTransformFunction_;
+
+ std::vector<Type_id>
+ ret(i_rParameters.size(), Type_id(0));
+ std::transform( i_rParameters.begin(), i_rParameters.end(),
+ ret.begin(),
+ aTransformFunction_ );
+ return ret;
+}
+
+
+
+
+} // namespace anonymous
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_macro.cxx b/autodoc/source/ary/cpp/c_macro.cxx
new file mode 100644
index 000000000000..2fad2c0fe5aa
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_macro.cxx
@@ -0,0 +1,81 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_macro.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <prprpr.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+Macro::Macro( const String & i_name,
+ const StringVector & i_params,
+ const StringVector & i_definition,
+ loc::Le_id i_declaringFile )
+ : DefineEntity(i_name, i_declaringFile),
+ aParams(i_params),
+ aDefinition(i_definition)
+{
+}
+
+Macro::~Macro()
+{
+}
+
+void
+Macro::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Macro::get_AryClass() const
+{
+ return class_id;
+
+ // return RCID_MACRO;
+}
+
+const StringVector &
+Macro::inq_DefinitionText() const
+{
+ return aDefinition;
+}
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_namesp.cxx b/autodoc/source/ary/cpp/c_namesp.cxx
new file mode 100644
index 000000000000..c2574cdbf2a3
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_namesp.cxx
@@ -0,0 +1,297 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_namesp.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <algorithm>
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/getncast.hxx>
+#include <slots.hxx>
+#include "c_slots.hxx"
+
+
+namespace ary
+{
+namespace cpp
+{
+
+typedef std::multimap<String, Ce_id>::const_iterator operations_citer;
+
+Namespace::Namespace()
+ : aEssentials(),
+ aAssignedNode(),
+ // aLocalNamespaces,
+ // aLocalClasses,
+ // aLocalEnums,
+ // aLocalTypedefs,
+ // aLocalOperations,
+ // aLocalVariables,
+ // aLocalConstants,
+ pParent(0),
+ nDepth(0)
+{
+ aAssignedNode.Assign_Entity(*this);
+}
+
+Namespace::Namespace( const String & i_sLocalName,
+ Namespace & i_rParent )
+ : aEssentials( i_sLocalName,
+ i_rParent.CeId(),
+ Lid(0) ),
+ aAssignedNode(),
+ // aLocalNamespaces,
+ // aLocalClasses,
+ // aLocalEnums,
+ // aLocalTypedefs,
+ // aLocalOperations,
+ // aLocalVariables,
+ // aLocalConstants,
+ pParent(&i_rParent),
+ nDepth(i_rParent.Depth()+1)
+{
+ aAssignedNode.Assign_Entity(*this);
+}
+
+Namespace::~Namespace()
+{
+}
+
+void
+Namespace::Add_LocalNamespace( DYN Namespace & io_rLocalNamespace )
+{
+ aLocalNamespaces[io_rLocalNamespace.LocalName()] = &io_rLocalNamespace;
+}
+
+void
+Namespace::Add_LocalClass( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aLocalClasses[i_sLocalName] = i_nId;
+}
+
+void
+Namespace::Add_LocalEnum( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aLocalEnums[i_sLocalName] = i_nId;
+}
+
+void
+Namespace::Add_LocalTypedef( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aLocalTypedefs[i_sLocalName] = i_nId;
+}
+
+void
+Namespace::Add_LocalOperation( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aLocalOperations.insert( Map_Operations::value_type(i_sLocalName, i_nId) );
+}
+
+
+void
+Namespace::Add_LocalVariable( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aLocalVariables[i_sLocalName] = i_nId;
+}
+
+void
+Namespace::Add_LocalConstant( const String & i_sLocalName,
+ Cid i_nId )
+{
+ aLocalConstants[i_sLocalName] = i_nId;
+}
+
+uintt
+Namespace::Depth() const
+{
+ return nDepth;
+}
+
+Namespace *
+Namespace::Parent() const
+{
+ return pParent;
+}
+
+Ce_id
+Namespace::Search_Child(const String & i_key) const
+{
+ Namespace *
+ ret_nsp = Search_LocalNamespace(i_key);
+ if (ret_nsp != 0)
+ return ret_nsp->CeId();
+
+ Ce_id
+ ret = Search_LocalClass(i_key);
+ if (ret.IsValid())
+ return ret;
+
+ ret = csv::value_from_map(aLocalEnums, i_key, Ce_id(0));
+ if (ret.IsValid())
+ return ret;
+ ret = csv::value_from_map(aLocalTypedefs, i_key, Ce_id(0));
+ if (ret.IsValid())
+ return ret;
+ ret = csv::value_from_map(aLocalVariables, i_key, Ce_id(0));
+ if (ret.IsValid())
+ return ret;
+ return csv::value_from_map(aLocalConstants, i_key, Ce_id(0));
+}
+
+Namespace *
+Namespace::Search_LocalNamespace( const String & i_sLocalName ) const
+{
+ return csv::value_from_map(aLocalNamespaces, i_sLocalName, (Namespace*)(0));
+}
+
+uintt
+Namespace::Get_SubNamespaces( std::vector< const Namespace* > & o_rResultList ) const
+{
+ for ( Map_NamespacePtr::const_iterator it = aLocalNamespaces.begin();
+ it != aLocalNamespaces.end();
+ ++it )
+ {
+ o_rResultList.push_back( (*it).second );
+ }
+ return o_rResultList.size();
+}
+
+Ce_id
+Namespace::Search_LocalClass( const String & i_sName ) const
+{
+ return csv::value_from_map(aLocalClasses, i_sName, Ce_id(0));
+}
+
+void
+Namespace::Search_LocalOperations( std::vector<Ce_id> & o_result,
+ const String & i_sName ) const
+{
+ operations_citer
+ itLower = aLocalOperations.lower_bound(i_sName);
+ if (itLower == aLocalOperations.end())
+ return;
+ if ( (*itLower).first != i_sName )
+ return;
+
+ operations_citer
+ itEnd = aLocalOperations.end();
+ for ( operations_citer it = itLower;
+ it != aLocalOperations.end() ? (*itLower).first == i_sName : false;
+ ++it )
+ {
+ o_result.push_back((*it).second);
+ }
+}
+
+
+const String &
+Namespace::inq_LocalName() const
+{
+ return aEssentials.LocalName();
+}
+
+Cid
+Namespace::inq_Owner() const
+{
+ return aEssentials.Owner();
+}
+
+Lid
+Namespace::inq_Location() const
+{
+ return Lid(0);
+}
+
+void
+Namespace::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Namespace::get_AryClass() const
+{
+ return class_id;
+}
+
+Gid
+Namespace::inq_Id_Group() const
+{
+ return static_cast<Gid>(Id());
+}
+
+const ary::cpp::CppEntity &
+Namespace::inq_RE_Group() const
+{
+ return *this;
+}
+
+const ary::group::SlotList &
+Namespace::inq_Slots() const
+{
+ static const SlotAccessId aProjectSlotData[]
+ = { SLOT_SubNamespaces, SLOT_Classes, SLOT_Enums, SLOT_Typedefs, SLOT_Operations,
+ SLOT_Variables, SLOT_Constants };
+ static const std::vector< SlotAccessId >
+ aSlots( &aProjectSlotData[0],
+ &aProjectSlotData[0]
+ + sizeof aProjectSlotData / sizeof (SlotAccessId) );
+ return aSlots;
+}
+
+DYN Slot *
+Namespace::inq_Create_Slot( SlotAccessId i_nSlot ) const
+{
+ switch ( i_nSlot )
+ {
+ case SLOT_SubNamespaces: return new Slot_SubNamespaces(aLocalNamespaces);
+ case SLOT_Classes: return new Slot_MapLocalCe(aLocalClasses);
+ case SLOT_Enums: return new Slot_MapLocalCe(aLocalEnums);
+ case SLOT_Typedefs: return new Slot_MapLocalCe(aLocalTypedefs);
+ case SLOT_Operations: return new Slot_MapOperations(aLocalOperations);
+ case SLOT_Variables: return new Slot_MapLocalCe(aLocalVariables);
+ case SLOT_Constants: return new Slot_MapLocalCe(aLocalConstants);
+ default:
+ return new Slot_Null;
+ } // end switch
+}
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_osigna.cxx b/autodoc/source/ary/cpp/c_osigna.cxx
new file mode 100644
index 000000000000..463c84b1f5f7
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_osigna.cxx
@@ -0,0 +1,79 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_osigna.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+OperationSignature::OperationSignature( std::vector<Type_id> i_parameterTypes,
+ E_ConVol i_conVol )
+ : aParameterTypes(i_parameterTypes),
+ eConVol(i_conVol)
+{
+}
+
+int
+OperationSignature::Compare( const OperationSignature & i_rSig ) const
+{
+ if ( aParameterTypes.size() < i_rSig.aParameterTypes.size() )
+ return -1;
+ else if ( i_rSig.aParameterTypes.size() < aParameterTypes.size() )
+ return 1;
+
+ ParameterTypeList::const_iterator iMe = aParameterTypes.begin();
+ ParameterTypeList::const_iterator iOther = i_rSig.aParameterTypes.begin();
+ for ( ; iMe != aParameterTypes.end(); ++iMe, ++iOther )
+ {
+ if ( *iMe < *iOther )
+ return -1;
+ else if ( *iOther < *iMe )
+ return 1;
+ }
+
+ if ( eConVol < i_rSig.eConVol )
+ return -1;
+ else if ( eConVol != i_rSig.eConVol )
+ return 1;
+
+ return 0;
+}
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_reposypart.cxx b/autodoc/source/ary/cpp/c_reposypart.cxx
new file mode 100644
index 000000000000..05fb5947e259
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_reposypart.cxx
@@ -0,0 +1,526 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "c_reposypart.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/getncast.hxx>
+#include <ary/namesort.hxx>
+#include <ary/cpp/c_builtintype.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_cppentity.hxx>
+#include <ary/cpp/c_define.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_macro.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_type.hxx>
+#include <ary/cpp/usedtype.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/loc/locp_le.hxx>
+#include <ary/getncast.hxx>
+#include <loc_internalgate.hxx>
+#include <reposy.hxx>
+#include "ca_ce.hxx"
+#include "ca_def.hxx"
+#include "ca_type.hxx"
+#include "cs_ce.hxx"
+#include "cs_def.hxx"
+#include "cs_type.hxx"
+
+
+
+namespace
+{
+
+using ::ary::GlobalId;
+using ::ary::Rid;
+using namespace ::ary::cpp;
+
+
+inline bool
+IsDefine( const GlobalId & i_id )
+{
+ return i_id.Class() == Define::class_id
+ OR
+ i_id.Class() == Macro::class_id;
+}
+
+
+/// Find Ces
+class TypeConnector
+{
+ public:
+ TypeConnector(
+ Gate & i_gate )
+ : pGate(&i_gate) {}
+ ~TypeConnector() {}
+
+ void operator()(
+ Type & io_rType ) const;
+ private:
+ // DATA
+ Gate * pGate;
+};
+
+/// Find Ces only known from base class name scope.
+class TypeConnector2ndTry
+{
+ public:
+ TypeConnector2ndTry(
+ Gate & i_gate )
+ : pGate(&i_gate) {}
+ ~TypeConnector2ndTry() {}
+
+ void operator()(
+ Type & io_rType ) const;
+ private:
+ // DATA
+ Gate * pGate;
+};
+
+/// Reconnect (in both directions) base-derived relations of classes.
+class HierarchyLinker
+{
+ public:
+ HierarchyLinker(
+ Gate & i_gate )
+ : pGate(&i_gate) {}
+
+ ~HierarchyLinker() {}
+
+ void operator()(
+ Class & io_rCe ) const;
+ private:
+ // DATA
+ Gate * pGate;
+};
+
+
+
+/// Helper functor for ->RepositoryPartition::Get_AlphabeticalList().
+template <class TRAITS>
+struct MakeGlobalId
+{
+ GlobalId operator()(
+ typename TRAITS::id_type
+ i_id ) const
+ {
+ return GlobalId( TRAITS::EntityOf_(i_id).AryClass(),
+ i_id.Value() );
+ }
+};
+
+
+
+
+/** Compare two {->GlobalId}s.
+
+
+ @todo Move this up to the definition of GlobalId<>.
+*/
+struct LesserGlobal
+{
+ LesserGlobal(
+ const Ce_Storage & i_ces,
+ const Def_Storage & i_des )
+ : rCes(i_ces), rDes(i_des) {}
+
+ bool operator()(
+ GlobalId i_1,
+ GlobalId i_2 ) const;
+
+ private:
+ const String & NameOf(
+ GlobalId i_id ) const;
+ // DATA
+ const Ce_Storage & rCes;
+ const Def_Storage & rDes;
+ ::ary::LesserName aLess;
+};
+
+
+bool
+LesserGlobal::operator()( GlobalId i_1,
+ GlobalId i_2 ) const
+ {
+ String s1 = NameOf(i_1);
+ String s2 = NameOf(i_2);
+
+ if (s1 != s2)
+ return aLess(s1, s2);
+
+ if ( IsDefine(i_1) != IsDefine(i_2) )
+ {
+ return NOT IsDefine(i_2);
+ }
+ else if (IsDefine(i_1))
+ {
+ return i_1.Class() < i_2.Class();
+ }
+
+ return Ce_GlobalCompare::Lesser_(
+ rCes[i_1.Id()],
+ rCes[i_2.Id()] );
+ }
+
+
+} // namespace anonymous
+
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+DYN InternalGate &
+InternalGate::Create_Partition_(RepositoryCenter & i_center)
+{
+ return *new RepositoryPartition(i_center);
+}
+
+
+RepositoryPartition::RepositoryPartition(RepositoryCenter & i_center)
+ : pRepositoryCenter(&i_center),
+ pCes(0),
+ pTypes(0),
+ pDefs(0),
+ pLocations(& loc::InternalGate::Create_Locations_())
+{
+ pCes = new CeAdmin(*this);
+ pTypes = new TypeAdmin(*this);
+ pDefs = new DefAdmin(*this);
+ pCes->Set_Related(*pTypes);
+}
+
+RepositoryPartition::~RepositoryPartition()
+{
+}
+
+void
+RepositoryPartition::Calculate_AllSecondaryInformation()
+// const ::autodoc::Options & )
+{
+ // KORR_FUTURE
+ // Forward the options from here.
+
+ Connect_AllTypes_2_TheirRelated_CodeEntites();
+}
+
+const String &
+RepositoryPartition::RepositoryTitle() const
+{
+ return static_cast< ary::Repository* >(pRepositoryCenter)->Title();
+}
+
+const CodeEntity *
+RepositoryPartition::Search_RelatedCe(Type_id i_type) const
+{
+ if (NOT i_type.IsValid())
+ return 0;
+
+ Ce_id
+ ce_id = pTypes->Find_Type(i_type).RelatedCe();
+ return ce_id.IsValid()
+ ? & pCes->Find_Ce(ce_id)
+ : (CodeEntity*)(0);
+}
+
+const ::ary::cpp::CppEntity *
+RepositoryPartition::Search_Entity(GlobalId i_id) const
+{
+ if (i_id.Id() == 0)
+ return 0;
+
+ if ( NOT IsDefine(i_id) )
+ {
+ // Shall make sure this is a C++ CodeEntity:
+ csv_assert( i_id.Class() >= Namespace::class_id
+ AND
+ i_id.Class() < BuiltInType::class_id
+ && "Unexpected entity type in cpp::RepositoryPartition"
+ "::Search_Entity()." );
+ return & Ces().Find_Ce( Ce_id(i_id.Id()) );
+ }
+ else
+ {
+ return & Defs().Find_Def( De_id(i_id.Id()) );
+ }
+}
+
+
+const CePilot &
+RepositoryPartition::Ces() const
+{
+ csv_assert(pCes != 0);
+ return *pCes;
+}
+
+const DefPilot &
+RepositoryPartition::Defs() const
+{
+ csv_assert(pDefs != 0);
+ return *pDefs;
+}
+
+const TypePilot &
+RepositoryPartition::Types() const
+{
+ csv_assert(pTypes != 0);
+ return *pTypes;
+}
+
+const loc::LocationPilot &
+RepositoryPartition::Locations() const
+{
+ csv_assert(pLocations != 0);
+ return *pLocations;
+}
+
+CePilot &
+RepositoryPartition::Ces()
+{
+ csv_assert(pCes != 0);
+ return *pCes;
+}
+
+DefPilot &
+RepositoryPartition::Defs()
+{
+ csv_assert(pDefs != 0);
+ return *pDefs;
+}
+
+TypePilot &
+RepositoryPartition::Types()
+{
+ csv_assert(pTypes != 0);
+ return *pTypes;
+}
+
+loc::LocationPilot &
+RepositoryPartition::Locations()
+{
+ csv_assert(pLocations != 0);
+ return *pLocations;
+}
+
+
+void
+RepositoryPartition::Connect_AllTypes_2_TheirRelated_CodeEntites()
+{
+ TypeConnector
+ aConnector(*this);
+ std::for_each( pTypes->Storage().BeginUnreserved(),
+ pTypes->Storage().End(),
+ aConnector );
+
+ typedef ::ary::stg::filter_iterator<CodeEntity,Class>
+ filter_class_iter;
+
+ HierarchyLinker
+ aHierarchyLinker(*this);
+ filter_class_iter itEnd( pCes->Storage().End() );
+ for ( filter_class_iter it( pCes->Storage().BeginUnreserved() );
+ it != itEnd;
+ ++it )
+ {
+ if (NOT it.IsValid())
+ continue;
+
+ if (is_type<Class>(*it))
+ aHierarchyLinker(ary_cast<Class>(*it));
+ }
+
+ TypeConnector2ndTry
+ aConnector2ndTry(*this);
+ std::for_each( pTypes->Storage().BeginUnreserved(),
+ pTypes->Storage().End(),
+ aConnector2ndTry );
+}
+
+template <class COMPARE>
+void Add2Result(
+ List_GlobalIds & o_result,
+ const SortedIds<COMPARE> &
+ i_data,
+ const char * i_begin,
+ const char * i_end );
+template <class COMPARE>
+void
+Add2Result( List_GlobalIds & o_result,
+ const SortedIds<COMPARE> & i_data,
+ const char * i_begin,
+ const char * i_end )
+{
+ const size_t
+ previous_size = o_result.size();
+ typename std::vector<typename COMPARE::id_type>::const_iterator
+ it_beg = i_data.LowerBound(i_begin);
+ typename std::vector<typename COMPARE::id_type>::const_iterator
+ it_end = i_data.LowerBound(i_end);
+ size_t
+ count_added = static_cast<size_t>( std::distance(it_beg,it_end) );
+ o_result.insert( o_result.end(),
+ count_added,
+ GlobalId() );
+ List_GlobalIds::iterator
+ it_out = o_result.begin() + previous_size;
+ std::transform( it_beg, it_end,
+ it_out,
+ MakeGlobalId<COMPARE>() );
+}
+
+
+uintt
+RepositoryPartition::Get_AlphabeticalList( List_GlobalIds & o_result,
+ const char * i_begin,
+ const char * i_end ) const
+{
+ size_t
+ ret = o_result.size();
+
+ const Ce_Storage &
+ ce_storage = pCes->Storage();
+ const Def_Storage &
+ def_storage = pDefs->Storage();
+
+ Add2Result( o_result,
+ ce_storage.TypeIndex(),
+ i_begin, i_end );
+ Add2Result( o_result,
+ ce_storage.OperationIndex(),
+ i_begin, i_end );
+ Add2Result( o_result,
+ ce_storage.DataIndex(),
+ i_begin, i_end );
+ Add2Result( o_result,
+ def_storage.DefineIndex(),
+ i_begin, i_end );
+ Add2Result( o_result,
+ def_storage.MacroIndex(),
+ i_begin, i_end );
+
+ LesserGlobal
+ aLess(ce_storage, def_storage);
+
+ std::sort(o_result.begin(), o_result.end(), aLess);
+
+ return o_result.size() - ret;
+}
+
+
+
+
+} // namespace cpp
+} // namespace ary
+
+
+
+
+
+namespace
+{
+
+
+void
+TypeConnector::operator()( Type & io_rType ) const
+{
+ csv_assert(pGate != 0);
+ UsedType *
+ pt = ::ary::ary_cast<UsedType>(&io_rType);
+ if (pt != 0)
+ pt->Connect2Ce(pGate->Ces());
+}
+
+void
+TypeConnector2ndTry::operator()( Type & io_rType ) const
+{
+ csv_assert(pGate != 0);
+ UsedType *
+ pt = ::ary::ary_cast<UsedType>(&io_rType);
+ if (pt != 0)
+ pt->Connect2CeOnlyKnownViaBaseClass(*pGate);
+}
+
+void
+HierarchyLinker::operator()( Class & io_rCe ) const
+{
+ csv_assert( ::ary::is_type<Class>(io_rCe) );
+ Class &
+ rClass = io_rCe;
+
+ for ( List_Bases::const_iterator it = rClass.BaseClasses().begin();
+ it != rClass.BaseClasses().end();
+ ++it )
+ {
+ const CodeEntity *
+ pCe = 0;
+ Type_id
+ nTid = (*it).nId;
+ for ( pCe = pGate->Search_RelatedCe(nTid);
+ ary::ary_cast<Typedef>(pCe) != 0;
+ pCe = pGate->Search_RelatedCe(nTid) )
+ {
+ nTid = static_cast< const Typedef* >(pCe)->DescribingType();
+ }
+ const Class *
+ pClass = ary::ary_cast<Class>(pCe);
+ if (pClass == 0)
+ return;
+ // KORR_FUTURE: we need a non const Find_Class()
+ const_cast< Class* >(pClass)->Add_KnownDerivative( io_rCe.CeId() );
+ }
+}
+
+const String &
+LesserGlobal::NameOf(GlobalId i_id) const
+{
+ if ( NOT IsDefine(i_id) )
+ {
+ return rCes[i_id.Id()].LocalName();
+ }
+ else
+ {
+ return rDes[i_id.Id()].LocalName();
+ }
+}
+
+
+
+} // namespace anonymous
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_reposypart.hxx b/autodoc/source/ary/cpp/c_reposypart.hxx
new file mode 100644
index 000000000000..c3b200f1f71b
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_reposypart.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 ARY_CPP_C_REPOSYPART_HXX
+#define ARY_CPP_C_REPOSYPART_HXX
+
+
+
+// BASE CLASSES
+#include <cpp_internalgate.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class CeAdmin;
+ class DefAdmin;
+ class TypeAdmin;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** The C++ partition of the repository.
+*/
+class RepositoryPartition : public InternalGate
+{
+ public:
+ RepositoryPartition(
+ RepositoryCenter & i_reposyImpl );
+ virtual ~RepositoryPartition();
+
+ // INHERITED
+ // Interface Gate:
+ virtual void Calculate_AllSecondaryInformation();
+// const ::autodoc::Options &
+// i_options );
+ virtual const String &
+ RepositoryTitle() const;
+ virtual const CodeEntity *
+ Search_RelatedCe(
+ Type_id i_type ) const;
+ virtual const ::ary::cpp::CppEntity *
+ Search_Entity(
+ GlobalId i_id ) const;
+ virtual uintt Get_AlphabeticalList(
+ List_GlobalIds & o_result,
+ const char * i_begin,
+ const char * i_end ) const;
+ virtual const CePilot &
+ Ces() const;
+ virtual const DefPilot &
+ Defs() const;
+ virtual const TypePilot &
+ Types() const;
+ virtual const loc::LocationPilot &
+ Locations() const;
+ virtual CePilot & Ces();
+ virtual DefPilot & Defs();
+ virtual TypePilot & Types();
+ virtual loc::LocationPilot &
+ Locations();
+ private:
+ // Locals
+ void Connect_AllTypes_2_TheirRelated_CodeEntites();
+
+ // DATA
+ RepositoryCenter * pRepositoryCenter;
+
+ Dyn<CeAdmin> pCes;
+ Dyn<TypeAdmin> pTypes;
+ Dyn<DefAdmin> pDefs;
+ Dyn<loc::LocationPilot>
+ pLocations;
+};
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_slots.cxx b/autodoc/source/ary/cpp/c_slots.cxx
new file mode 100644
index 000000000000..e93b25c60d5c
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_slots.cxx
@@ -0,0 +1,109 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <c_slots.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ary_disp.hxx>
+#include <ary/cpp/c_namesp.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+//*********************** Slot_SubNamespaces ********************//
+
+
+Slot_SubNamespaces::Slot_SubNamespaces( const Map_NamespacePtr & i_rData )
+ : pData( &i_rData )
+{
+}
+
+Slot_SubNamespaces::~Slot_SubNamespaces()
+{
+}
+
+uintt
+Slot_SubNamespaces::Size() const
+{
+ return pData->size();
+}
+
+void
+Slot_SubNamespaces::StoreEntries( ary::Display & o_rDestination ) const
+{
+ for ( Map_NamespacePtr::const_iterator it = pData->begin();
+ it != pData->end();
+ ++it )
+ {
+ (*(*it).second).Accept(o_rDestination);
+ }
+}
+
+
+//*********************** Slot_BaseClass ********************//
+
+Slot_BaseClass::Slot_BaseClass( const List_Bases & i_rData )
+ : pData( &i_rData )
+{
+}
+
+Slot_BaseClass::~Slot_BaseClass()
+{
+}
+
+uintt
+Slot_BaseClass::Size() const
+{
+ return pData->size();
+}
+
+void
+Slot_BaseClass::StoreEntries( ary::Display & o_rDestination ) const
+{
+ for ( List_Bases::const_iterator it = pData->begin();
+ it != pData->end();
+ ++it )
+ {
+ csv::CheckedCall(o_rDestination, *it);
+ }
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_slots.hxx b/autodoc/source/ary/cpp/c_slots.hxx
new file mode 100644
index 000000000000..dab4f5d4552f
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_slots.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 ARY_CPP_C_SLOTS_HXX
+#define ARY_CPP_C_SLOTS_HXX
+
+// BASE CLASSES
+#include <ary/ceslot.hxx>
+// USED SERVICES
+#include <ary/cpp/c_slntry.hxx>
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+class Slot_SubNamespaces : public ary::Slot
+{
+ public:
+ Slot_SubNamespaces(
+ const Map_NamespacePtr &
+ i_rData );
+ virtual ~Slot_SubNamespaces();
+
+ virtual uintt Size() const;
+
+ private:
+ virtual void StoreEntries(
+ ary::Display & o_rDestination ) const;
+ // DATA
+ const Map_NamespacePtr *
+ pData;
+};
+
+class Slot_BaseClass : public ary::Slot
+{
+ public:
+ Slot_BaseClass(
+ const List_Bases & i_rData );
+ virtual ~Slot_BaseClass();
+
+ virtual uintt Size() const;
+
+ private:
+ virtual void StoreEntries(
+ ary::Display & o_rDestination ) const;
+ // DATA
+ const List_Bases * pData;
+};
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_traits.cxx b/autodoc/source/ary/cpp/c_traits.cxx
new file mode 100644
index 000000000000..e0bd26a06685
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_traits.cxx
@@ -0,0 +1,226 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_traits.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/namesort.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/usedtype.hxx>
+#include <ary/getncast.hxx>
+#include "cs_ce.hxx"
+#include "cs_def.hxx"
+#include "cs_type.hxx"
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+//******************** Ce_Traits ********************//
+Ce_Traits::entity_base_type &
+Ce_Traits::EntityOf_(id_type i_id)
+{
+ csv_assert(i_id.IsValid());
+ return Ce_Storage::Instance_()[i_id];
+}
+
+//******************** CeNode_Traits ********************//
+const symtree::Node<CeNode_Traits> *
+CeNode_Traits::NodeOf_(const entity_base_type & i_entity)
+{
+ if (is_type<Namespace>(i_entity))
+ return & ary_cast<Namespace>(i_entity).AsNode();
+ else if (is_type<Class>(i_entity))
+ return & ary_cast<Class>(i_entity).AsNode();
+ return 0;
+}
+
+symtree::Node<CeNode_Traits> *
+CeNode_Traits::NodeOf_(entity_base_type & io_entity)
+{
+ if (is_type<Namespace>(io_entity))
+ return & ary_cast<Namespace>(io_entity).AsNode();
+ else if (is_type<Class>(io_entity))
+ return & ary_cast<Class>(io_entity).AsNode();
+ return 0;
+}
+
+Ce_Traits::entity_base_type *
+CeNode_Traits::ParentOf_(const entity_base_type & i_entity)
+{
+ Ce_Traits::id_type
+ ret = i_entity.Owner();
+ if (ret.IsValid())
+ {
+ if (is_type<EnumValue>(i_entity))
+ { // Return not the Enum, but the owner of the Enum:
+ ret = EntityOf_(ret).Owner();
+ csv_assert(ret.IsValid());
+ }
+ return &EntityOf_(ret);
+ }
+ return 0;
+}
+
+Ce_id
+CeNode_Search( const CodeEntity & i_entity,
+ const String & i_localKey )
+{
+ if (is_type<Namespace>(i_entity))
+ return ary_cast<Namespace>(i_entity).Search_Child(i_localKey);
+ else if (is_type<Class>(i_entity))
+ return ary_cast<Class>(i_entity).Search_Child(i_localKey);
+ return Ce_id(0);
+}
+
+
+
+
+//******************** Ce_Compare ********************//
+const Ce_Compare::key_type &
+Ce_Compare::KeyOf_(const entity_base_type & i_entity)
+{
+ return i_entity.LocalName();
+}
+
+bool
+Ce_Compare::Lesser_( const key_type & i_1,
+ const key_type & i_2 )
+{
+ static ::ary::LesserName less_;
+ return less_(i_1,i_2);
+}
+
+
+//******************** Ce_GlobalCompare ********************//
+void
+Get_Qualified( StreamStr & o_out,
+ const CodeEntity & i_ce )
+{
+ if (i_ce.LocalName().empty())
+ return;
+ if (i_ce.Owner().IsValid())
+ Get_Qualified(o_out, Ce_Traits::EntityOf_(i_ce.Owner()));
+
+ o_out << i_ce.LocalName() << "::";
+}
+
+
+bool
+Ce_GlobalCompare::Lesser_( const key_type & i_1,
+ const key_type & i_2 )
+{
+ static ::ary::LesserName less_;
+
+ if (i_1.LocalName() != i_2.LocalName())
+ return less_(i_1.LocalName(), i_2.LocalName());
+
+ csv_assert(i_1.Owner().IsValid() AND i_2.Owner().IsValid());
+
+ static StreamStr
+ aBuffer1_(300);
+ static StreamStr
+ aBuffer2_(300);
+ aBuffer1_.reset();
+ aBuffer2_.reset();
+
+ Get_Qualified(aBuffer1_, Ce_Traits::EntityOf_(i_1.Owner()));
+ Get_Qualified(aBuffer2_, Ce_Traits::EntityOf_(i_2.Owner()));
+ if (aBuffer1_.size() >= 2)
+ aBuffer1_.pop_back(2);
+ if (aBuffer2_.size() >= 2)
+ aBuffer2_.pop_back(2);
+ return less_(aBuffer1_.c_str(), aBuffer2_.c_str());
+}
+
+
+
+//******************** Def_Traits ********************//
+Def_Traits::entity_base_type &
+Def_Traits::EntityOf_(id_type i_id)
+{
+ csv_assert(i_id.IsValid());
+ return Def_Storage::Instance_()[i_id];
+}
+
+//******************** Def_Compare ********************//
+const Def_Compare::key_type &
+Def_Compare::KeyOf_(const entity_base_type & i_entity)
+{
+ return i_entity.LocalName();
+}
+
+bool
+Def_Compare::Lesser_( const key_type & i_1,
+ const key_type & i_2 )
+{
+ static ::ary::LesserName less_;
+ return less_(i_1,i_2);
+}
+
+
+
+//******************** Type_Traits ********************//
+Type_Traits::entity_base_type &
+Type_Traits::EntityOf_(id_type i_id)
+{
+ csv_assert(i_id.IsValid());
+ return Type_Storage::Instance_()[i_id];
+}
+
+//******************** Type_Compare ********************//
+const UsedType_Compare::key_type &
+UsedType_Compare::KeyOf_(const entity_base_type & i_entity)
+{
+ csv_assert( is_type<UsedType>(i_entity) );
+ return ary_cast<UsedType>(i_entity);
+}
+
+bool
+UsedType_Compare::Lesser_( const key_type & i_1,
+ const key_type & i_2 )
+{
+ return i_1 < i_2;
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_tydef.cxx b/autodoc/source/ary/cpp/c_tydef.cxx
new file mode 100644
index 000000000000..60f67e7e6c30
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_tydef.cxx
@@ -0,0 +1,97 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_tydef.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <slots.hxx>
+#include "c_slots.hxx"
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+Typedef::Typedef( const String & i_sLocalName,
+ Cid i_nOwner,
+ E_Protection i_eProtection,
+ Lid i_nFile,
+ Tid i_nDescribingType )
+ : aEssentials( i_sLocalName,
+ i_nOwner,
+ i_nFile ),
+ nDescribingType(i_nDescribingType),
+ eProtection(i_eProtection)
+{
+}
+
+Typedef::~Typedef()
+{
+
+}
+
+const String &
+Typedef::inq_LocalName() const
+{
+ return aEssentials.LocalName();
+}
+
+Cid
+Typedef::inq_Owner() const
+{
+ return aEssentials.Owner();
+}
+
+Lid
+Typedef::inq_Location() const
+{
+ return aEssentials.Location();
+}
+
+void
+Typedef::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Typedef::get_AryClass() const
+{
+ return class_id;
+}
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/c_vari.cxx b/autodoc/source/ary/cpp/c_vari.cxx
new file mode 100644
index 000000000000..5006748f65c9
--- /dev/null
+++ b/autodoc/source/ary/cpp/c_vari.cxx
@@ -0,0 +1,99 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/c_vari.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+Variable::Variable( const String & i_sLocalName,
+ Cid i_nOwner,
+ E_Protection i_eProtection,
+ Lid i_nFile,
+ Tid i_nType,
+ VariableFlags i_aFlags,
+ const String & i_sArraySize,
+ const String & i_sInitValue )
+ : aEssentials( i_sLocalName,
+ i_nOwner,
+ i_nFile ),
+ nType(i_nType),
+ eProtection(i_eProtection),
+ aFlags(i_aFlags),
+ sArraySize(i_sArraySize),
+ sInitialisation(i_sInitValue)
+{
+}
+
+Variable::~Variable()
+{
+}
+
+const String &
+Variable::inq_LocalName() const
+{
+ return aEssentials.LocalName();
+}
+
+Cid
+Variable::inq_Owner() const
+{
+ return aEssentials.Owner();
+}
+
+Lid
+Variable::inq_Location() const
+{
+ return aEssentials.Location();
+}
+
+void
+Variable::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Variable::get_AryClass() const
+{
+ return class_id;
+}
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/ca_ce.cxx b/autodoc/source/ary/cpp/ca_ce.cxx
new file mode 100644
index 000000000000..ea49b1446c49
--- /dev/null
+++ b/autodoc/source/ary/cpp/ca_ce.cxx
@@ -0,0 +1,625 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+
+#include <precomp.h>
+#include "ca_ce.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/qualiname.hxx>
+#include <ary/cpp/inpcontx.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_type.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/cpp/cp_type.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/getncast.hxx>
+
+
+
+
+
+
+namespace
+{
+
+String Get_NewAnonymousNamespaceName();
+String Get_NewAnonymousName(
+ char i_start );
+
+
+} // anonymous namespace
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+// KORR_FUTURE
+// What about namespace visibility ?
+// Perhaps handle all/some visibility transfer only after parse is complete.
+void
+transfer_visibility( const Class * i_owner,
+ CodeEntity & o_child )
+{
+ if ( i_owner != 0 ? NOT i_owner->IsVisible() : false )
+ o_child.Set_InVisible();
+}
+
+inline const TypePilot &
+CeAdmin::Types() const
+{
+ csv_assert(pTypes != 0);
+ return *pTypes;
+}
+
+
+
+
+
+
+CeAdmin::CeAdmin(RepositoryPartition & io_myReposyPartition)
+ : aStorage(),
+ pTypes(0),
+ pCppRepositoryPartition(&io_myReposyPartition)
+{
+}
+
+void
+CeAdmin::Set_Related(const TypePilot & i_types)
+{
+ pTypes = &i_types;
+}
+
+CeAdmin::~CeAdmin()
+{
+}
+
+Namespace &
+CeAdmin::CheckIn_Namespace( const InputContext & i_context,
+ const String & i_localName )
+{
+ const String
+ local_name = NOT i_localName.empty()
+ ? i_localName
+ : Get_NewAnonymousNamespaceName();
+ Namespace &
+ rParent = i_context.CurNamespace();
+ Namespace *
+ ret = rParent.Search_LocalNamespace(local_name);
+ if ( ret == 0 )
+ {
+ ret = &Create_Namespace(rParent, local_name);
+ }
+ return *ret;
+}
+
+Class &
+CeAdmin::Store_Class( const InputContext & i_context,
+ const String & i_localName,
+ E_ClassKey i_eClassKey )
+{
+ const String
+ local_name = i_localName.empty()
+ ? Get_NewAnonymousName( i_eClassKey == CK_class
+ ? 'c'
+ : i_eClassKey == CK_struct
+ ? 's'
+ : 'u' )
+ : i_localName;
+
+ Class &
+ ret = * new Class( local_name,
+ i_context.CurOwner().CeId(),
+ i_context.CurProtection(),
+ i_context.CurFile().LeId(),
+ i_eClassKey );
+ aStorage.Store_Type(ret);
+ i_context.CurOwner().Add_Class(local_name, ret.CeId());
+ transfer_visibility(i_context.CurClass(), ret);
+
+ return ret;
+}
+
+Enum &
+CeAdmin::Store_Enum( const InputContext & i_context,
+ const String & i_localName )
+{
+ const String
+ local_name = i_localName.empty()
+ ? Get_NewAnonymousName('e')
+ : i_localName;
+ Enum &
+ ret = * new Enum( local_name,
+ i_context.CurOwner().CeId(),
+ i_context.CurProtection(),
+ i_context.CurFile().LeId() );
+ aStorage.Store_Type(ret);
+ i_context.CurOwner().Add_Enum(local_name, ret.CeId());
+ transfer_visibility(i_context.CurClass(), ret);
+
+ return ret;
+}
+
+Typedef &
+CeAdmin::Store_Typedef( const InputContext& i_context,
+ const String & i_localName,
+ Type_id i_referredType )
+{
+ Typedef &
+ ret = * new Typedef( i_localName,
+ i_context.CurOwner().CeId(),
+ i_context.CurProtection(),
+ i_context.CurFile().LeId(),
+ i_referredType );
+ aStorage.Store_Type(ret);
+ i_context.CurOwner().Add_Typedef(i_localName, ret.CeId());
+ transfer_visibility(i_context.CurClass(), ret);
+
+ return ret;
+}
+
+Function *
+CeAdmin::Store_Operation( const InputContext & i_context,
+ const String & i_localName,
+ Type_id i_returnType,
+ const std::vector<S_Parameter> & i_parameters,
+ E_Virtuality i_virtuality,
+ E_ConVol i_conVol,
+ FunctionFlags i_flags,
+ bool i_throwExists,
+ const std::vector<Type_id> & i_exceptions )
+{
+ Function &
+ ret = * new Function( i_localName,
+ i_context.CurOwner().CeId(),
+ i_context.CurProtection(),
+ i_context.CurFile().LeId(),
+ i_returnType,
+ i_parameters,
+ i_conVol,
+ i_virtuality,
+ i_flags,
+ i_throwExists,
+ i_exceptions );
+
+ // Check for double declaration:
+ Ce_id
+ nAlreadyExistingFunction(0);
+ switch ( lhf_CheckAndHandle_DuplicateOperation(
+ nAlreadyExistingFunction,
+ i_context,
+ ret) )
+ {
+ case df_discard_new:
+ delete &ret;
+ return 0;
+ case df_replace:
+ csv_assert(nAlreadyExistingFunction.IsValid());
+ aStorage.Replace_Entity(
+ nAlreadyExistingFunction,
+ ret );
+ break;
+ case df_no:
+ aStorage.Store_Operation(ret); // Now it has a valid id.
+ i_context.CurOwner().Add_Operation( i_localName, ret.CeId(), i_flags.IsStaticMember() );
+ break;
+ default:
+ csv_assert(false);
+ }
+
+ transfer_visibility(i_context.CurClass(), ret);
+ if ( i_context.CurProtection() != PROTECT_global )
+ {
+ Class *
+ pClass = i_context.CurClass();
+ if ( pClass != 0 AND i_virtuality != VIRTUAL_none)
+ {
+ pClass->UpdateVirtuality(i_virtuality);
+ }
+ }
+
+ return &ret;
+}
+
+Variable &
+CeAdmin::Store_Variable( const InputContext& i_context,
+ const String & i_localName,
+ Type_id i_type,
+ VariableFlags i_flags,
+ const String & i_arraySize,
+ const String & i_initValue )
+{
+ Variable &
+ ret = * new Variable( i_localName,
+ i_context.CurOwner().CeId(),
+ i_context.CurProtection(),
+ i_context.CurFile().LeId(),
+ i_type,
+ i_flags,
+ i_arraySize,
+ i_initValue );
+
+ bool
+ is_const = Types().Find_Type(i_type).IsConst();
+ aStorage.Store_Datum(ret);
+ i_context.CurOwner().Add_Variable(
+ i_localName,
+ ret.CeId(),
+ is_const,
+ i_flags.IsStaticMember() );
+ transfer_visibility(i_context.CurClass(), ret);
+
+ return ret;
+}
+
+EnumValue &
+CeAdmin::Store_EnumValue( const InputContext & i_context,
+ const String & i_localName,
+ const String & i_initValue )
+{
+ Enum *
+ parent = i_context.CurEnum();
+ csv_assert( parent != 0 );
+
+ EnumValue &
+ ret = * new EnumValue( i_localName,
+ parent->CeId(),
+ i_initValue );
+ aStorage.Store_Datum(ret);
+ parent->Add_Value(ret.CeId());
+
+ // KORR also for current enum:
+ transfer_visibility(i_context.CurClass(), ret);
+
+ return ret;
+}
+
+const Namespace &
+CeAdmin::GlobalNamespace() const
+{
+ return ary_cast<Namespace>( aStorage[predefined::ce_GlobalNamespace] );
+}
+
+const CodeEntity &
+CeAdmin::Find_Ce(Ce_id i_id) const
+{
+ return aStorage[i_id];
+}
+
+const CodeEntity *
+CeAdmin::Search_Ce(Ce_id i_id) const
+{
+ return aStorage.Exists(i_id)
+ ? & aStorage[i_id]
+ : (const CodeEntity*)(0);
+}
+
+const CodeEntity *
+CeAdmin::Search_CeAbsolute( const CodeEntity & i_curScope,
+ const QualifiedName & i_rSearchedName ) const
+{
+ const symtree::Node<CeNode_Traits> *
+ cur_node = CeNode_Traits::NodeOf_(i_curScope);
+ csv_assert(cur_node != 0);
+
+ Ce_id
+ ret(0);
+ cur_node->SearchUp( ret,
+ i_rSearchedName.first_namespace(),
+ i_rSearchedName.end_namespace(),
+ i_rSearchedName.LocalName() );
+ return Search_Ce(ret);
+}
+
+const CodeEntity *
+CeAdmin::Search_CeLocal( const String & i_localName,
+ bool i_bIsFunction,
+ const Namespace & i_rCurNamespace,
+ const Class * i_pCurClass ) const
+{
+ // KORR_FUTURE
+ // See if this is correct.
+
+ Ce_id
+ ret(0);
+
+ if ( NOT i_bIsFunction )
+ {
+ CesResultList
+ type_instances = aStorage.TypeIndex().SearchAll(i_localName);
+ CesResultList
+ data_instances = aStorage.DataIndex().SearchAll(i_localName);
+ Ce_id
+ ret1 = Search_MatchingInstance(
+ type_instances,
+ (i_pCurClass
+ ? i_pCurClass->CeId()
+ : i_rCurNamespace.CeId())
+ );
+ Ce_id
+ ret2 = Search_MatchingInstance(
+ data_instances,
+ (i_pCurClass
+ ? i_pCurClass->CeId()
+ : i_rCurNamespace.CeId())
+ );
+ if (NOT ret2.IsValid())
+ ret = ret1;
+ else if (NOT ret1.IsValid())
+ ret = ret2;
+ }
+ else
+ {
+ CesResultList
+ function_instances = aStorage.OperationIndex().SearchAll(i_localName);
+ if ( function_instances.size() == 1 )
+ ret = *function_instances.begin();
+ else
+ {
+ ret = Search_MatchingInstance(
+ function_instances,
+ (i_pCurClass
+ ? i_pCurClass->CeId()
+ : i_rCurNamespace.CeId())
+ );
+ }
+ }
+
+ if ( ret.IsValid() )
+ return & Find_Ce(ret);
+
+ return 0;
+}
+
+void
+CeAdmin::Get_QualifiedName( StreamStr & o_rOut,
+ const String & i_localName,
+ Ce_id i_nOwner,
+ const char * i_sDelimiter ) const
+{
+ if ( i_localName.empty() OR NOT i_nOwner.IsValid() )
+ return;
+
+ const CodeEntity *
+ pOwner = & Find_Ce( i_nOwner );
+ if ( is_type<Enum>(*pOwner) )
+ pOwner = &Find_Ce( Ce_id(pOwner->Owner()) );
+
+ Get_QualifiedName( o_rOut,
+ pOwner->LocalName(),
+ Ce_id(pOwner->Owner()),
+ i_sDelimiter );
+ o_rOut
+ << i_sDelimiter
+ << i_localName;
+}
+
+void
+CeAdmin::Get_SignatureText( StreamStr & o_rOut,
+ const OperationSignature & i_signature,
+ const StringVector * i_sParameterNames ) const
+{
+ OperationSignature::ParameterTypeList::const_iterator
+ it = i_signature.Parameters().begin();
+ OperationSignature::ParameterTypeList::const_iterator
+ it_end = i_signature.Parameters().end();
+
+ const StringVector aDummy;
+ StringVector::const_iterator
+ itName = i_sParameterNames != 0
+ ? i_sParameterNames->begin()
+ : aDummy.begin();
+ StringVector::const_iterator
+ itName_end = i_sParameterNames != 0
+ ? i_sParameterNames->end()
+ : aDummy.end();
+
+ bool
+ bEmpty = (it == it_end);
+ if (NOT bEmpty)
+ {
+ o_rOut << "( ";
+ Types().Get_TypeText(o_rOut, *it);
+ if (itName != itName_end)
+ o_rOut << " " << (*itName);
+
+ for ( ++it; it != it_end; ++it )
+ {
+ o_rOut << ", ";
+ Types().Get_TypeText(o_rOut, *it);
+ if (itName != itName_end)
+ {
+ ++itName;
+ if (itName != itName_end)
+ o_rOut << " " << (*itName);
+ }
+ }
+ o_rOut << " )";
+ }
+ else
+ {
+ o_rOut << "( )";
+ }
+
+ if ( intt(i_signature.ConVol()) & intt(ary::cpp::CONVOL_const) )
+ o_rOut << " const";
+ if ( intt(i_signature.ConVol()) & intt(ary::cpp::CONVOL_volatile) )
+ o_rOut << " volatile";
+}
+
+CesResultList
+CeAdmin::Search_TypeName(const String & i_sName) const
+{
+ return aStorage.TypeIndex().SearchAll(i_sName);
+}
+
+Namespace &
+CeAdmin::GlobalNamespace()
+{
+ return ary_cast<Namespace>( aStorage[predefined::ce_GlobalNamespace] );
+}
+
+CeAdmin::E_DuplicateFunction
+CeAdmin::lhf_CheckAndHandle_DuplicateOperation(
+ Ce_id & o_existentFunction,
+ const InputContext & i_context,
+ const Function & i_newFunction )
+{
+ if (i_context.CurProtection() != PROTECT_global)
+ {
+ // Assume, there will be no duplicates within the same class.
+
+ // KORR_FUTURE
+ // Assumption may be wrong in case of #defines providing different
+ // versions for different compilers.
+ return df_no;
+ }
+
+ std::vector<Ce_id>
+ aOperationsWithSameName;
+ i_context.CurNamespace().Search_LocalOperations(
+ aOperationsWithSameName,
+ i_newFunction.LocalName() );
+
+ for ( std::vector<Ce_id>::const_iterator
+ it = aOperationsWithSameName.begin();
+ it != aOperationsWithSameName.end();
+ ++it )
+ {
+ const Function &
+ rFunction = ary_cast<Function>(aStorage[*it]);
+ if ( rFunction.LocalName() == i_newFunction.LocalName()
+ AND rFunction.Signature() == i_newFunction.Signature() )
+ {
+ if (NOT rFunction.IsIdentical(i_newFunction))
+ {
+ // KORR_FUTURE Make this more detailed.
+ Cerr() << "Non identical function with same signature "
+ << "found: "
+ << i_context.CurNamespace().LocalName()
+ << "::"
+ << i_newFunction.LocalName()
+ << "(..)"
+ << Endl();
+ }
+ o_existentFunction = rFunction.CeId();
+ if (rFunction.Docu().Data() == 0)
+ return df_replace;
+ else
+ return df_discard_new;
+ }
+ } // end for
+
+ return df_no;
+}
+
+Namespace &
+CeAdmin::Create_Namespace( Namespace & o_parent,
+ const String & i_localName )
+{
+ DYN Namespace &
+ ret = *new Namespace(i_localName, o_parent);
+ aStorage.Store_Entity(ret);
+ o_parent.Add_LocalNamespace(ret);
+ return ret;
+}
+
+Ce_id
+CeAdmin::Search_MatchingInstance( CesResultList i_list,
+ Ce_id i_owner ) const
+{
+ // KORR
+ // Multiple results?
+
+ for ( CesList::const_iterator it = i_list.begin();
+ it != i_list.end();
+ ++it )
+ {
+ const CodeEntity &
+ ce = aStorage[*it];
+ if ( ce.Owner() == i_owner)
+ {
+ return *it;
+ }
+ }
+ return Ce_id(0);
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+
+
+namespace
+{
+
+uintt G_nLastFreeAnonymousNamespaceNr = 0;
+uintt G_nLastFreeAnonymousEntityNr = 0;
+
+String
+Get_NewAnonymousNamespaceName()
+{
+ StreamLock
+ sl(100);
+ return String( sl()
+ << "namespace_anonymous_"
+ << ++G_nLastFreeAnonymousNamespaceNr
+ << csv::c_str );
+
+}
+
+String
+Get_NewAnonymousName(char i_cStart)
+{
+ StreamLock
+ sl(100);
+ return String( sl()
+ << i_cStart
+ << "_Anonymous__"
+ << ++G_nLastFreeAnonymousEntityNr
+ << c_str );
+}
+
+
+
+} // namespace anonymous
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/ca_ce.hxx b/autodoc/source/ary/cpp/ca_ce.hxx
new file mode 100644
index 000000000000..00e722b170c4
--- /dev/null
+++ b/autodoc/source/ary/cpp/ca_ce.hxx
@@ -0,0 +1,216 @@
+/* -*- 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 ARY_CPP_CA_CE_HXX
+#define ARY_CPP_CA_CE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/cp_ce.hxx>
+ // OTHER
+#include "cs_ce.hxx"
+
+
+namespace ary
+{
+namespace cpp
+{
+ class Ce_Storage;
+ class RepositoryPartition;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** Administrates all C++ code entities (types, operations, variables).
+*/
+class CeAdmin : public CePilot
+{
+ public:
+ // LIFECYCLE
+ CeAdmin(
+ RepositoryPartition &
+ io_myReposyPartition );
+ void Set_Related(
+ const TypePilot & i_types );
+ virtual ~CeAdmin();
+
+ // INQUIRY
+ const Ce_Storage & Storage() const;
+
+ // ACCESS
+ Ce_Storage & Storage();
+
+ // INHERITED
+ // Interface CePilot:
+ virtual Namespace & CheckIn_Namespace(
+ const InputContext &
+ i_context,
+ const String & i_localName );
+ virtual Class & Store_Class(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ E_ClassKey i_classKey );
+ virtual Enum & Store_Enum(
+ const InputContext &
+ i_context,
+ const String & i_localName );
+ virtual Typedef & Store_Typedef(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ Type_id i_referredType );
+ virtual Function * Store_Operation(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ Type_id i_returnType,
+ const std::vector<S_Parameter> &
+ i_parameters,
+ E_Virtuality i_virtuality,
+ E_ConVol i_conVol,
+ FunctionFlags i_flags,
+ bool i_throwExists,
+ const std::vector<Type_id> &
+ i_exceptions );
+ virtual Variable & Store_Variable(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ Type_id i_type,
+ VariableFlags i_flags,
+ const String & i_arraySize,
+ const String & i_initValue );
+ virtual EnumValue & Store_EnumValue(
+ const InputContext &
+ i_context,
+ const String & i_localName,
+ const String & i_initValue );
+ virtual const Namespace &
+ GlobalNamespace() const;
+ virtual const CodeEntity &
+ Find_Ce(
+ Ce_id i_id ) const;
+ virtual const CodeEntity *
+ Search_Ce(
+ Ce_id i_id ) const;
+ virtual const CodeEntity *
+ Search_CeAbsolute(
+ const CodeEntity & i_curScope,
+ const QualifiedName &
+ i_absoluteName ) const;
+ virtual const CodeEntity *
+ Search_CeLocal(
+ const String & i_relativeName,
+ bool i_isFunction,
+ const Namespace & i_curNamespace,
+ const Class * i_curClass ) const;
+ virtual void Get_QualifiedName(
+ StreamStr & o_result,
+ const String & i_localName,
+ Ce_id i_owner,
+ const char * i_delimiter = "::" ) const;
+ virtual void Get_SignatureText(
+ StreamStr & o_rOut,
+ const OperationSignature &
+ i_signature,
+ const StringVector *
+ i_sParameterNames = 0 ) const;
+ virtual CesResultList
+ Search_TypeName(
+ const String & i_sName ) const;
+ virtual Namespace & GlobalNamespace();
+
+ private:
+ // Locals
+ /// @return true, if function is duplicate.
+ enum E_DuplicateFunction
+ {
+ df_no,
+ df_replace,
+ df_discard_new
+ };
+
+ /** @param o_existentFunction
+ The id of the already existing function, else unset.
+ */
+ E_DuplicateFunction lhf_CheckAndHandle_DuplicateOperation(
+ Ce_id & o_existentFunction,
+ const InputContext &
+ i_context,
+ const Function & i_newFunction );
+ Namespace & Create_Namespace(
+ Namespace & o_parent,
+ const String & i_localName );
+ Ce_id Search_MatchingInstance(
+ CesResultList i_list,
+ Ce_id i_owner ) const;
+ const TypePilot & Types() const;
+
+ // DATA
+ Ce_Storage aStorage;
+ const TypePilot * pTypes;
+ RepositoryPartition *
+ pCppRepositoryPartition;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const Ce_Storage &
+CeAdmin::Storage() const
+{
+ return aStorage;
+}
+
+inline Ce_Storage &
+CeAdmin::Storage()
+{
+ return aStorage;
+}
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/ca_def.cxx b/autodoc/source/ary/cpp/ca_def.cxx
new file mode 100644
index 000000000000..8a2daa8dd9ea
--- /dev/null
+++ b/autodoc/source/ary/cpp/ca_def.cxx
@@ -0,0 +1,114 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "ca_def.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_define.hxx>
+#include <ary/cpp/c_macro.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/cpp/inpcontx.hxx>
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+DefAdmin::DefAdmin(RepositoryPartition & io_myReposyPartition)
+ : aStorage(),
+ pCppRepositoryPartition(&io_myReposyPartition)
+{
+}
+
+DefAdmin::~DefAdmin()
+{
+}
+
+Define &
+DefAdmin::Store_Define( const InputContext& i_rContext,
+ const String & i_sName,
+ const StringVector & i_rDefinition )
+{
+ Define &
+ ret = *new Define( i_sName,
+ i_rDefinition,
+ i_rContext.CurFile().LeId() );
+ aStorage.Store_Define(ret);
+ return ret;
+
+}
+
+Macro &
+DefAdmin::Store_Macro( const InputContext& i_rContext,
+ const String & i_sName,
+ const StringVector & i_rParams,
+ const StringVector & i_rDefinition )
+{
+ Macro &
+ ret = *new Macro( i_sName,
+ i_rParams,
+ i_rDefinition,
+ i_rContext.CurFile().LeId() );
+ aStorage.Store_Macro(ret);
+ return ret;
+}
+
+const DefineEntity &
+DefAdmin::Find_Def(De_id i_id) const
+{
+ return aStorage[i_id];
+}
+
+DefsResultList
+DefAdmin::AllDefines() const
+{
+ return csv::make_range( aStorage.DefineIndex().Begin(),
+ aStorage.DefineIndex().End() );
+}
+
+DefsResultList
+DefAdmin::AllMacros() const
+{
+ return csv::make_range( aStorage.MacroIndex().Begin(),
+ aStorage.MacroIndex().End() );
+}
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/ca_def.hxx b/autodoc/source/ary/cpp/ca_def.hxx
new file mode 100644
index 000000000000..254ad1797b1b
--- /dev/null
+++ b/autodoc/source/ary/cpp/ca_def.hxx
@@ -0,0 +1,118 @@
+/* -*- 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 ARY_CPP_CA_DEF_HXX
+#define ARY_CPP_CA_DEF_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/cp_def.hxx>
+ // OTHER
+#include "cs_def.hxx"
+
+
+
+namespace ary
+{
+namespace cpp
+{
+ class Def_Storage;
+ class RepositoryPartition;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+
+class DefAdmin : public DefPilot
+{
+ public:
+ // LIFECYCLE
+ DefAdmin(
+ RepositoryPartition &
+ io_myReposyPartition );
+ ~DefAdmin();
+
+ // INQUIRY
+ const Def_Storage & Storage() const;
+
+ // INHERITED
+ // Interface DefPilot:
+ virtual Define & Store_Define(
+ const InputContext& i_rContext,
+ const String & i_sName,
+ const StringVector &
+ i_rDefinition );
+ virtual Macro & Store_Macro(
+ const InputContext& i_rContext,
+ const String & i_sName,
+ const StringVector &
+ i_rParams,
+ const StringVector &
+ i_rDefinition );
+ virtual const DefineEntity &
+ Find_Def(
+ De_id i_id ) const;
+ virtual DefsResultList
+ AllDefines() const;
+ virtual DefsResultList
+ AllMacros() const;
+
+ private:
+ // DATA
+ Def_Storage aStorage;
+ RepositoryPartition *
+ pCppRepositoryPartition;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const Def_Storage &
+DefAdmin::Storage() const
+{
+ return aStorage;
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/ca_type.cxx b/autodoc/source/ary/cpp/ca_type.cxx
new file mode 100644
index 000000000000..29117aea7cd0
--- /dev/null
+++ b/autodoc/source/ary/cpp/ca_type.cxx
@@ -0,0 +1,139 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "ca_type.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_builtintype.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/cpp/inpcontx.hxx>
+#include <ary/cpp/usedtype.hxx>
+#include <ary/getncast.hxx>
+#include "c_reposypart.hxx"
+#include "cs_type.hxx"
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+TypeAdmin::TypeAdmin(RepositoryPartition & io_myReposyPartition)
+ : aStorage(),
+ pCppRepositoryPartition(&io_myReposyPartition)
+{
+}
+
+TypeAdmin::~TypeAdmin()
+{
+}
+
+
+// KORR_FUTURE
+// Remove unused parameter.
+
+const Type &
+TypeAdmin::CheckIn_UsedType( const InputContext & ,
+ DYN UsedType & pass_type )
+{
+ Dyn<UsedType>
+ pNewType(&pass_type); // Ensure clean up of heap object.
+
+ Type_id
+ tid(0);
+ if (pass_type.IsBuiltInType())
+ {
+ tid = aStorage.Search_BuiltInType(
+ BuiltInType::SpecializedName_( pass_type.LocalName().c_str(),
+ pass_type.TypeSpecialisation() ));
+ csv_assert(tid.IsValid());
+ return aStorage[tid];
+ }
+
+ tid = aStorage.UsedTypeIndex().Search(pass_type);
+ if (tid.IsValid())
+ {
+ return aStorage[tid];
+ }
+
+ // Type does not yet exist:
+ // Transfer ownership from pNewTypeand assign id:
+ aStorage.Store_Entity(*pNewType.Release());
+
+ aStorage.UsedTypeIndex().Add(pass_type.TypeId());
+ return pass_type;
+}
+
+const Type &
+TypeAdmin::Find_Type(Type_id i_type) const
+{
+ return aStorage[i_type];
+}
+
+bool
+TypeAdmin::Get_TypeText( StreamStr & o_result,
+ Type_id i_type ) const
+{
+ if (NOT i_type.IsValid())
+ return false;
+ aStorage[i_type].Get_Text(o_result, *pCppRepositoryPartition);
+ return true;
+}
+
+bool
+TypeAdmin::Get_TypeText( StreamStr & o_preName,
+ StreamStr & o_name,
+ StreamStr & o_postName,
+ Type_id i_type ) const
+{
+ if (NOT i_type.IsValid())
+ return false;
+ aStorage[i_type].Get_Text(o_preName, o_name, o_postName, *pCppRepositoryPartition);
+ return true;
+}
+
+Type_id
+TypeAdmin::Tid_Ellipse() const
+{
+ return Type_id(predefined::t_ellipse);
+}
+
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/ca_type.hxx b/autodoc/source/ary/cpp/ca_type.hxx
new file mode 100644
index 000000000000..123912d7c389
--- /dev/null
+++ b/autodoc/source/ary/cpp/ca_type.hxx
@@ -0,0 +1,130 @@
+/* -*- 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 ARY_CPP_CA_TYPE_HXX
+#define ARY_CPP_CA_TYPE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/cp_type.hxx>
+ // OTHER
+#include "cs_type.hxx"
+
+
+
+namespace ary
+{
+namespace cpp
+{
+ class RepositoryPartition;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** Administrates all C++ types as uses in user declarations
+ as return-, parameter- or variable-types.
+*/
+class TypeAdmin : public TypePilot
+{
+ public:
+ // LIFECYCLE
+ TypeAdmin(
+ RepositoryPartition &
+ io_myReposyPartition );
+ virtual ~TypeAdmin();
+
+ // INQUIRY
+ /// @return A list of all stored types that are not C++ or STL builtin types.
+ const Type_Storage &
+ Storage() const;
+
+ // ACCESS
+ Type_Storage & Storage();
+
+ // INHERITED
+ // Interface TypePilot:
+ virtual const Type &
+ CheckIn_UsedType(
+ const InputContext &
+ i_context,
+ DYN UsedType & pass_type );
+ virtual const Type &
+ Find_Type(
+ Type_id i_type ) const;
+ virtual bool Get_TypeText(
+ StreamStr & o_result,
+ Type_id i_type ) const;
+ virtual bool Get_TypeText(
+ StreamStr & o_preName, /// ::ary::cpp::
+ StreamStr & o_name, /// MyClass
+ StreamStr & o_postName, /// <TplArgument> * const &
+ Type_id i_type ) const;
+ virtual Type_id Tid_Ellipse() const;
+
+ private:
+ // DATA
+ Type_Storage aStorage;
+ RepositoryPartition *
+ pCppRepositoryPartition;
+};
+
+
+
+
+// IMPLEMENTATION
+inline const Type_Storage &
+TypeAdmin::Storage() const
+{
+ return aStorage;
+}
+
+inline Type_Storage &
+TypeAdmin::Storage()
+{
+ return aStorage;
+}
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/cs_ce.cxx b/autodoc/source/ary/cpp/cs_ce.cxx
new file mode 100644
index 000000000000..3b4828b67230
--- /dev/null
+++ b/autodoc/source/ary/cpp/cs_ce.cxx
@@ -0,0 +1,107 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cs_ce.hxx"
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_namesp.hxx>
+
+
+
+namespace
+{
+const uintt
+ C_nReservedElements = ::ary::cpp::predefined::ce_MAX; // Skipping "0" and the GlobalNamespace
+}
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+Ce_Storage * Ce_Storage::pInstance_ = 0;
+
+
+
+Ce_Storage::Ce_Storage()
+ : stg::Storage<CodeEntity>(C_nReservedElements),
+ aTypes(),
+ aOperations(),
+ aData()
+
+{
+ Set_Reserved( predefined::ce_GlobalNamespace,
+ *new Namespace );
+
+ csv_assert(pInstance_ == 0);
+ pInstance_ = this;
+}
+
+Ce_Storage::~Ce_Storage()
+{
+ csv_assert(pInstance_ != 0);
+ pInstance_ = 0;
+}
+
+Ce_id
+Ce_Storage::Store_Type(DYN CodeEntity & pass_ce)
+{
+ Ce_id
+ ret = Store_Entity(pass_ce);
+ aTypes.Add(ret);
+ return ret;
+}
+
+Ce_id
+Ce_Storage::Store_Operation(DYN CodeEntity & pass_ce)
+{
+ Ce_id
+ ret = Store_Entity(pass_ce);
+ aOperations.Add(ret);
+ return ret;
+}
+
+Ce_id
+Ce_Storage::Store_Datum(DYN CodeEntity & pass_ce)
+{
+ Ce_id
+ ret = Store_Entity(pass_ce);
+ aData.Add(ret);
+ return ret;
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/cs_ce.hxx b/autodoc/source/ary/cpp/cs_ce.hxx
new file mode 100644
index 000000000000..a741f0d86c09
--- /dev/null
+++ b/autodoc/source/ary/cpp/cs_ce.hxx
@@ -0,0 +1,108 @@
+/* -*- 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 ARY_CPP_CS_CE_HXX
+#define ARY_CPP_CS_CE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <store/s_storage.hxx>
+ // OTHER
+#include <ary/cpp/c_ce.hxx>
+#include <ary/cpp/c_traits.hxx>
+#include <sortedids.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** The data base for all ->ary::cpp::CodeEntity objects.
+*/
+class Ce_Storage : public ::ary::stg::Storage<CodeEntity>
+{
+ public:
+ typedef SortedIds<Ce_Compare> Index;
+
+ Ce_Storage();
+ virtual ~Ce_Storage();
+
+ Ce_id Store_Type(
+ DYN CodeEntity & pass_ce );
+ Ce_id Store_Operation(
+ DYN CodeEntity & pass_ce );
+ Ce_id Store_Datum(
+ DYN CodeEntity & pass_ce );
+
+ const Index & TypeIndex() const { return aTypes; }
+ const Index & OperationIndex() const { return aOperations; }
+ const Index & DataIndex() const { return aData; }
+
+ Index & TypeIndex() { return aTypes; }
+ Index & OperationIndex() { return aOperations; }
+ Index & DataIndex() { return aData; }
+
+ static Ce_Storage & Instance_() { csv_assert(pInstance_ != 0);
+ return *pInstance_; }
+ private:
+ // DATA
+ Index aTypes;
+ Index aOperations;
+ Index aData;
+
+ static Ce_Storage * pInstance_;
+};
+
+
+
+
+namespace predefined
+{
+
+enum E_CodeEntity
+{
+ ce_GlobalNamespace = 1,
+ ce_MAX
+};
+
+} // namespace predefined
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/cs_def.cxx b/autodoc/source/ary/cpp/cs_def.cxx
new file mode 100644
index 000000000000..713c2aaa63d8
--- /dev/null
+++ b/autodoc/source/ary/cpp/cs_def.cxx
@@ -0,0 +1,89 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cs_def.hxx"
+
+// NOT FULLY DEFINED SERVICES
+
+
+namespace
+{
+const uintt
+ C_nReservedElements = ::ary::cpp::predefined::de_MAX; // Skipping "0"
+}
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+Def_Storage * Def_Storage::pInstance_ = 0;
+
+
+
+
+Def_Storage::Def_Storage()
+ : stg::Storage<DefineEntity>(C_nReservedElements)
+{
+ csv_assert(pInstance_ == 0);
+ pInstance_ = this;
+}
+
+Def_Storage::~Def_Storage()
+{
+ csv_assert(pInstance_ != 0);
+ pInstance_ = 0;
+}
+
+De_id
+Def_Storage::Store_Define(DYN DefineEntity & pass_de)
+{
+ De_id
+ ret = Store_Entity(pass_de);
+ aDefines.Add(ret);
+ return ret;
+}
+
+De_id
+Def_Storage::Store_Macro(DYN DefineEntity & pass_de)
+{
+ De_id
+ ret = Store_Entity(pass_de);
+ aMacros.Add(ret);
+ return ret;
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/cs_def.hxx b/autodoc/source/ary/cpp/cs_def.hxx
new file mode 100644
index 000000000000..cfd6b5c61b53
--- /dev/null
+++ b/autodoc/source/ary/cpp/cs_def.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ARY_CPP_CS_DE_HXX
+#define ARY_CPP_CS_DE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <store/s_storage.hxx>
+ // OTHER
+#include <ary/cpp/c_de.hxx>
+#include <ary/cpp/c_traits.hxx>
+#include <sortedids.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+
+/** The data base for all ->ary::cpp::Type objects.
+*/
+class Def_Storage : public ::ary::stg::Storage<DefineEntity>
+{
+ public:
+ typedef SortedIds<Def_Compare> Index;
+
+ // LIFECYCLE
+ Def_Storage();
+ virtual ~Def_Storage();
+
+ De_id Store_Define(
+ DYN DefineEntity & pass_de );
+ De_id Store_Macro(
+ DYN DefineEntity & pass_de );
+
+ const Index & DefineIndex() const { return aDefines; }
+ const Index & MacroIndex() const { return aMacros; }
+
+ Index & DefineIndex() { return aDefines; }
+ Index & MacroIndex() { return aMacros; }
+
+ static Def_Storage &
+ Instance_() { csv_assert(pInstance_ != 0);
+ return *pInstance_; }
+ private:
+ // DATA
+ Index aDefines;
+ Index aMacros;
+
+
+ static Def_Storage *
+ pInstance_;
+};
+
+
+
+
+namespace predefined
+{
+
+enum E_DefineEntity
+{
+ // 0 is always unused with repository storages.
+ de_MAX = 1
+};
+
+} // namespace predefined
+
+
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/cs_type.cxx b/autodoc/source/ary/cpp/cs_type.cxx
new file mode 100644
index 000000000000..a5c6791a7ec2
--- /dev/null
+++ b/autodoc/source/ary/cpp/cs_type.cxx
@@ -0,0 +1,115 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cs_type.hxx"
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_builtintype.hxx>
+
+
+namespace
+{
+ const uintt
+ C_nReservedElements = ary::cpp::predefined::t_MAX; // Skipping "0" and the builtin types
+}
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+Type_Storage * Type_Storage::pInstance_ = 0;
+
+
+
+
+Type_Storage::Type_Storage()
+ : stg::Storage<Type>(C_nReservedElements),
+ aBuiltInTypes()
+{
+ Setup_BuiltInTypes();
+
+ csv_assert(pInstance_ == 0);
+ pInstance_ = this;
+}
+
+Type_Storage::~Type_Storage()
+{
+ csv_assert(pInstance_ != 0);
+ pInstance_ = 0;
+}
+
+Type_id
+Type_Storage::Search_BuiltInType( const String & i_specializedName ) const
+{
+ return csv::value_from_map(aBuiltInTypes, i_specializedName, Tid(0));
+}
+
+void
+Type_Storage::Setup_BuiltInTypes()
+{
+ Set_BuiltInType( predefined::t_void, "void" );
+ Set_BuiltInType( predefined::t_bool, "bool" );
+ Set_BuiltInType( predefined::t_char, "char" );
+ Set_BuiltInType( predefined::t_signed_char, "char", TYSP_signed );
+ Set_BuiltInType( predefined::t_unsigned_char, "char", TYSP_unsigned );
+ Set_BuiltInType( predefined::t_short, "short" );
+ Set_BuiltInType( predefined::t_unsigned_short, "short", TYSP_unsigned );
+ Set_BuiltInType( predefined::t_int, "int" );
+ Set_BuiltInType( predefined::t_unsigned_int, "int", TYSP_unsigned );
+ Set_BuiltInType( predefined::t_long, "long" );
+ Set_BuiltInType( predefined::t_unsigned_long, "long", TYSP_unsigned );
+ Set_BuiltInType( predefined::t_float, "float" );
+ Set_BuiltInType( predefined::t_double, "double" );
+ Set_BuiltInType( predefined::t_size_t, "size_t" );
+ Set_BuiltInType( predefined::t_wchar_t, "wchar_t" );
+ Set_BuiltInType( predefined::t_ptrdiff_t, "ptrdiff_t" );
+ Set_BuiltInType( predefined::t_ellipse, "..." );
+}
+
+void
+Type_Storage::Set_BuiltInType( Rid i_id,
+ const char * i_sName,
+ ary::cpp::E_TypeSpecialisation i_eSpecialisation )
+{
+ DYN BuiltInType &
+ rNew = *new BuiltInType(i_sName, i_eSpecialisation);
+ Set_Reserved( i_id, rNew); // Here goes the ownership for rNew.
+ aBuiltInTypes[rNew.SpecializedName()] = rNew.TypeId();
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/cs_type.hxx b/autodoc/source/ary/cpp/cs_type.hxx
new file mode 100644
index 000000000000..c1f1568cb097
--- /dev/null
+++ b/autodoc/source/ary/cpp/cs_type.hxx
@@ -0,0 +1,141 @@
+/* -*- 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 ARY_CPP_CS_TYPE_HXX
+#define ARY_CPP_CS_TYPE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <store/s_storage.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/cpp/c_type.hxx>
+#include <ary/cpp/c_traits.hxx>
+#include <ary/cpp/usedtype.hxx>
+#include <sortedids.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+
+/** The data base for all ->ary::cpp::Type objects.
+*/
+class Type_Storage : public ::ary::stg::Storage<Type>
+{
+ public:
+ typedef SortedIds<UsedType_Compare> UT_Index;
+
+ Type_Storage();
+ virtual ~Type_Storage();
+
+ const UT_Index & UsedTypeIndex() const;
+
+ UT_Index & UsedTypeIndex();
+ Type_id Search_BuiltInType(
+ const String & i_specializedName ) const;
+
+ static Type_Storage &
+ Instance_() { csv_assert(pInstance_ != 0);
+ return *pInstance_; }
+ private:
+ // Locals
+ void Setup_BuiltInTypes();
+ void Set_BuiltInType(
+ Rid i_nId,
+ const char * i_sName,
+ ary::cpp::E_TypeSpecialisation
+ i_eSpecialisation = TYSP_none );
+ // DATA
+ UT_Index aUsedTypes;
+ std::map<String,Type_id>
+ aBuiltInTypes;
+
+
+ static Type_Storage *
+ pInstance_;
+};
+
+
+
+
+namespace predefined
+{
+
+enum E_Type
+{
+ // 0 is always unused with repository storages.
+ t_void = 1,
+ t_bool,
+ t_char,
+ t_signed_char,
+ t_unsigned_char,
+ t_short,
+ t_unsigned_short,
+ t_int,
+ t_unsigned_int,
+ t_long,
+ t_unsigned_long,
+ t_float,
+ t_double,
+ t_size_t,
+ t_wchar_t,
+ t_ptrdiff_t,
+ t_ellipse,
+ t_MAX
+};
+
+} // namespace predefined
+
+
+
+// IMPLEMENTATION
+inline const Type_Storage::UT_Index &
+Type_Storage::UsedTypeIndex() const
+{
+ return aUsedTypes;
+}
+
+inline Type_Storage::UT_Index &
+Type_Storage::UsedTypeIndex()
+{
+ return aUsedTypes;
+}
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/makefile.mk b/autodoc/source/ary/cpp/makefile.mk
new file mode 100644
index 000000000000..5c20a59bd82e
--- /dev/null
+++ b/autodoc/source/ary/cpp/makefile.mk
@@ -0,0 +1,80 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=ary_cpp
+
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/c_builtintype.obj \
+ $(OBJ)$/c_class.obj \
+ $(OBJ)$/c_de.obj \
+ $(OBJ)$/c_define.obj \
+ $(OBJ)$/c_enum.obj \
+ $(OBJ)$/c_enuval.obj \
+ $(OBJ)$/c_funct.obj \
+ $(OBJ)$/c_macro.obj \
+ $(OBJ)$/c_namesp.obj \
+ $(OBJ)$/c_osigna.obj \
+ $(OBJ)$/c_reposypart.obj \
+ $(OBJ)$/c_slots.obj \
+ $(OBJ)$/c_traits.obj \
+ $(OBJ)$/c_tydef.obj \
+ $(OBJ)$/c_vari.obj \
+ $(OBJ)$/ca_ce.obj \
+ $(OBJ)$/ca_def.obj \
+ $(OBJ)$/ca_type.obj \
+ $(OBJ)$/cs_ce.obj \
+ $(OBJ)$/cs_def.obj \
+ $(OBJ)$/cs_type.obj \
+ $(OBJ)$/namechain.obj \
+ $(OBJ)$/tplparam.obj \
+ $(OBJ)$/usedtype.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/ary/cpp/namechain.cxx b/autodoc/source/ary/cpp/namechain.cxx
new file mode 100644
index 000000000000..4df64afe3deb
--- /dev/null
+++ b/autodoc/source/ary/cpp/namechain.cxx
@@ -0,0 +1,199 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/namechain.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/usedtype.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include "tplparam.hxx"
+
+
+
+namespace ary
+{
+namespace cpp
+{
+namespace ut
+{
+
+
+//********************* NameSegment ******************//
+
+NameSegment::NameSegment( const char * i_sName )
+ : sName( i_sName )
+ // pTemplate
+{
+}
+
+NameSegment::NameSegment( const NameSegment & i_rSeg )
+ : sName(i_rSeg.sName)
+ // pTemplate
+{
+ // KORR_FUTURE : Handling of copying of templates.
+// csv_assert( NOT i_rSeg.pTemplate );
+}
+
+NameSegment& NameSegment::operator=(const NameSegment & i_rSeg)
+{
+ sName = i_rSeg.sName;
+ return *this;
+}
+
+NameSegment::~NameSegment()
+{
+}
+
+List_TplParameter &
+NameSegment::AddTemplate()
+{
+ return * (pTemplate = new List_TplParameter);
+}
+
+intt
+NameSegment::Compare( const NameSegment & i_rOther ) const
+{
+ intt nResult = strcmp( sName.c_str(), i_rOther.sName.c_str() );
+ if (nResult != 0)
+ return nResult;
+ if ( bool(pTemplate) != bool(i_rOther.pTemplate) )
+ {
+ if ( NOT pTemplate )
+ return -1;
+ else
+ return +1;
+ }
+ else if ( NOT pTemplate )
+ return 0;
+ else
+ return pTemplate->Compare( *i_rOther.pTemplate );
+}
+
+void
+NameSegment::Get_Text_AsScope( StreamStr & o_rOut,
+ const Gate & i_rGate ) const
+{
+ o_rOut << sName;
+ if ( pTemplate )
+ pTemplate->Get_Text( o_rOut, i_rGate );
+}
+
+void
+NameSegment::Get_Text_AsMainType( StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const Gate & i_rGate ) const
+{
+ o_rName << sName;
+ if ( pTemplate )
+ pTemplate->Get_Text( o_rPostName, i_rGate );
+}
+
+
+//********************* NameChain ******************//
+
+NameChain::NameChain()
+// : aSegments
+{
+}
+
+NameChain::~NameChain()
+{
+}
+
+void
+NameChain::Add_Segment( const char * i_sSeg )
+{
+ aSegments.push_back( NameSegment(i_sSeg) );
+}
+
+List_TplParameter &
+NameChain::Templatize_LastSegment()
+{
+ csv_assert( aSegments.size() > 0 );
+
+ return aSegments.back().AddTemplate();
+}
+
+intt
+NameChain::Compare( const NameChain & i_rChain ) const
+{
+ intt nResult = intt(aSegments.size()) - intt(i_rChain.aSegments.size());
+ if (nResult != 0)
+ return nResult;
+
+ std::vector< NameSegment >::const_iterator it1 = aSegments.begin();
+ std::vector< NameSegment >::const_iterator it1End = aSegments.end();
+ std::vector< NameSegment >::const_iterator it2 = i_rChain.aSegments.begin();
+
+ for ( ; it1 != it1End; ++it1, ++it2 )
+ {
+ nResult = (*it1).Compare(*it2);
+ if (nResult != 0)
+ return nResult;
+ }
+
+ return 0;
+}
+
+const String &
+NameChain::LastSegment() const
+{
+ if ( aSegments.size() > 0 )
+ return aSegments.back().Name();
+ return String::Null_();
+}
+
+void
+NameChain::Get_Text( StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const Gate & i_rGate ) const
+{
+ std::vector< NameSegment >::const_iterator it = aSegments.begin();
+ std::vector< NameSegment >::const_iterator itEnd = aSegments.end();
+
+ if ( it == itEnd )
+ return;
+
+ for ( --itEnd; it != itEnd; ++it )
+ {
+ (*it).Get_Text_AsScope( o_rPreName, i_rGate );
+ o_rPreName << "::";
+ }
+ (*it).Get_Text_AsMainType( o_rName, o_rPostName, i_rGate );
+}
+
+
+
+} // namespace ut
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/tplparam.cxx b/autodoc/source/ary/cpp/tplparam.cxx
new file mode 100644
index 000000000000..c22fb78e4787
--- /dev/null
+++ b/autodoc/source/ary/cpp/tplparam.cxx
@@ -0,0 +1,77 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "tplparam.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_type.hxx>
+
+
+namespace ary
+{
+namespace cpp
+{
+namespace ut
+{
+
+TplParameter_Type::TplParameter_Type( Tid i_nType )
+ : nType(i_nType)
+{
+}
+
+TplParameter_Type::~TplParameter_Type()
+{
+}
+
+intt
+TplParameter_Type::Compare( const TemplateParameter & i_rOther ) const
+{
+ const TplParameter_Type * pOther
+ = dynamic_cast< const TplParameter_Type* >( &i_rOther );
+ if (pOther == 0)
+ return -1;
+
+ return static_cast<long>(nType.Value())
+ - static_cast<long>(pOther->nType.Value());
+}
+
+void
+TplParameter_Type::Get_Text( StreamStr & o_rOut,
+ const ary::cpp::Gate & i_rGate ) const
+{
+ i_rGate.Types().Get_TypeText( o_rOut, nType );
+}
+
+} // namespace ut
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/tplparam.hxx b/autodoc/source/ary/cpp/tplparam.hxx
new file mode 100644
index 000000000000..a720eff22776
--- /dev/null
+++ b/autodoc/source/ary/cpp/tplparam.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 ARY_CPP_TPLPARAM_HXX
+#define ARY_CPP_TPLPARAM_HXX
+
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+ class UsedType;
+ class Gate;
+
+namespace ut
+{
+
+
+class TemplateParameter
+{
+ public:
+ virtual ~TemplateParameter() {}
+
+ virtual intt Compare(
+ const TemplateParameter &
+ i_rOther ) const = 0;
+ virtual void Get_Text(
+ StreamStr & o_rOut,
+ const ary::cpp::Gate &
+ i_rGate ) const = 0;
+};
+
+
+class TplParameter_Type : public TemplateParameter
+{
+ public:
+ TplParameter_Type(
+ Tid i_nType );
+ ~TplParameter_Type();
+
+ virtual intt Compare(
+ const TemplateParameter &
+ i_rOther ) const;
+ virtual void Get_Text(
+ StreamStr & o_rOut,
+ const ary::cpp::Gate &
+ i_rGate ) const;
+ private:
+ Tid nType;
+};
+
+} // namespace ut
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/cpp/usedtype.cxx b/autodoc/source/ary/cpp/usedtype.cxx
new file mode 100644
index 000000000000..bde91e5b644b
--- /dev/null
+++ b/autodoc/source/ary/cpp/usedtype.cxx
@@ -0,0 +1,578 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cpp/usedtype.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/symtreenode.hxx>
+#include <ary/cpp/c_ce.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_slntry.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_traits.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/cpp/cp_type.hxx>
+#include <ary/doc/d_oldcppdocu.hxx>
+#include <ary/getncast.hxx>
+#include "tplparam.hxx"
+
+
+
+namespace
+{
+
+using namespace ::ary::cpp;
+typedef std::vector< ary::cpp::E_ConVol > PtrLevelVector;
+
+
+inline bool
+result2bool( intt i_nResult )
+ { return i_nResult < 0; }
+
+
+intt compare_PtrLevelVector(
+ const PtrLevelVector &
+ i_r1,
+ const PtrLevelVector &
+ i_r2 );
+inline intt
+compare_ConVol( E_ConVol i_e1,
+ E_ConVol i_e2 )
+ { return intt(i_e1) - intt(i_e2); }
+
+inline intt
+compare_bool( bool i_b1,
+ bool i_b2 )
+ { return i_b1 == i_b2
+ ? 0
+ : i_b1
+ ? -1
+ : +1; }
+inline intt
+compare_Specialisation( E_TypeSpecialisation i_e1,
+ E_TypeSpecialisation i_e2 )
+ { return intt(i_e1) - intt(i_e2); }
+
+inline bool
+is_const( E_ConVol i_eCV )
+ { return ( intt(i_eCV) & intt(CONVOL_const) ) != 0; }
+
+inline bool
+is_volatile( E_ConVol i_eCV )
+ { return ( intt(i_eCV) & intt(CONVOL_volatile) ) != 0; }
+
+
+intt
+compare_PtrLevelVector( const PtrLevelVector & i_r1,
+ const PtrLevelVector & i_r2 )
+{
+ intt nResult = i_r1.size() - i_r2.size();
+ if ( nResult != 0 )
+ return nResult;
+
+ PtrLevelVector::const_iterator it1 = i_r1.begin();
+ PtrLevelVector::const_iterator it1End = i_r1.end();
+ PtrLevelVector::const_iterator it2 = i_r2.begin();
+
+ for ( ; it1 != it1End; ++it1, ++it2 )
+ {
+ nResult = compare_ConVol(*it1, *it2);
+ if ( nResult != 0 )
+ return nResult;
+ }
+
+ return 0;
+}
+
+
+} // anonymous namespace
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+typedef symtree::Node<CeNode_Traits> CeNode;
+typedef ut::NameChain::const_iterator nc_iter;
+
+Ce_id CheckForRelatedCe_inNode(
+ const CeNode & i_node,
+ const StringVector& i_qualification,
+ const String & i_name );
+
+
+UsedType::UsedType(Ce_id i_scope )
+ : aPath(),
+ aPtrLevels(),
+ eConVol_Type(CONVOL_none),
+ bIsReference(false),
+ bIsAbsolute(false),
+ bRefers2BuiltInType(false),
+ eTypeSpecialisation(TYSP_none),
+ nRelatedCe(0),
+ nScope(i_scope)
+{
+}
+
+UsedType::~UsedType()
+{
+}
+
+
+bool
+UsedType::operator<( const UsedType & i_rType ) const
+{
+ intt nResult = compare_bool( bIsAbsolute, i_rType.bIsAbsolute );
+ if ( nResult != 0 )
+ return result2bool(nResult);
+
+ nResult = static_cast<intt>(nScope.Value())
+ -
+ static_cast<intt>(i_rType.nScope.Value());
+ if ( nResult != 0 )
+ return result2bool(nResult);
+
+ nResult = aPath.Compare( i_rType.aPath );
+ if ( nResult != 0 )
+ return result2bool(nResult);
+
+ nResult = compare_ConVol( eConVol_Type, i_rType.eConVol_Type );
+ if ( nResult != 0 )
+ return result2bool(nResult);
+
+ nResult = compare_PtrLevelVector( aPtrLevels, i_rType.aPtrLevels );
+ if ( nResult != 0 )
+ return result2bool(nResult);
+
+ nResult = compare_bool( bIsReference, i_rType.bIsReference );
+ if ( nResult != 0 )
+ return result2bool(nResult);
+
+ nResult = compare_Specialisation( eTypeSpecialisation, i_rType.eTypeSpecialisation );
+ if ( nResult != 0 )
+ return result2bool(nResult);
+
+ return false;
+}
+
+void
+UsedType::Set_Absolute()
+{
+ bIsAbsolute = true;
+}
+
+void
+UsedType::Add_NameSegment( const char * i_sSeg )
+{
+ aPath.Add_Segment(i_sSeg);
+}
+
+ut::List_TplParameter &
+UsedType::Enter_Template()
+{
+ return aPath.Templatize_LastSegment();
+}
+
+void
+UsedType::Set_Unsigned()
+{
+ eTypeSpecialisation = TYSP_unsigned;
+}
+
+void
+UsedType::Set_Signed()
+{
+ eTypeSpecialisation = TYSP_signed;
+}
+
+void
+UsedType::Set_BuiltIn( const char * i_sType )
+{
+ aPath.Add_Segment(i_sType);
+ bRefers2BuiltInType = true;
+}
+
+void
+UsedType::Set_Const()
+{
+ if (PtrLevel() == 0)
+ eConVol_Type = E_ConVol(eConVol_Type | CONVOL_const);
+ else
+ aPtrLevels.back() = E_ConVol(aPtrLevels.back() | CONVOL_const);
+}
+
+void
+UsedType::Set_Volatile()
+{
+ if (PtrLevel() == 0)
+ eConVol_Type = E_ConVol(eConVol_Type | CONVOL_volatile);
+ else
+ aPtrLevels.back() = E_ConVol(aPtrLevels.back() | CONVOL_volatile);
+}
+
+void
+UsedType::Add_PtrLevel()
+{
+ aPtrLevels.push_back(CONVOL_none);
+}
+
+void
+UsedType::Set_Reference()
+{
+ bIsReference = true;
+}
+
+inline bool
+IsInternal(const ary::cpp::CodeEntity & i_ce)
+{
+ const ary::doc::OldCppDocu *
+ docu = dynamic_cast< const ary::doc::OldCppDocu* >(i_ce.Docu().Data());
+ if (docu != 0)
+ return docu->IsInternal();
+ return false;
+}
+
+
+void
+UsedType::Connect2Ce( const CePilot & i_ces)
+{
+ StringVector
+ qualification;
+ String
+ name;
+ Get_NameParts(qualification, name);
+
+ for ( const CeNode * scope_node = CeNode_Traits::NodeOf_(
+ i_ces.Find_Ce(nScope));
+ scope_node != 0;
+ scope_node = scope_node->Parent() )
+ {
+ nRelatedCe = CheckForRelatedCe_inNode(*scope_node, qualification, name);
+ if ( nRelatedCe.IsValid() )
+ {
+ if ( IsInternal(i_ces.Find_Ce(nRelatedCe)) )
+ nRelatedCe = Ce_id(0);
+ return;
+ }
+ } // end for
+}
+
+void
+UsedType::Connect2CeOnlyKnownViaBaseClass(const Gate & i_gate)
+{
+ csv_assert(nScope.IsValid());
+ CesResultList
+ instances = i_gate.Ces().Search_TypeName( LocalName() );
+
+ // If there are no matches, or only one match that was already
+ // accepted, all work is done.
+ if ( (nRelatedCe.IsValid() AND instances.size() == 1)
+ OR instances.size() == 0 )
+ return;
+
+ StringVector
+ qualification;
+ String
+ name;
+ Get_NameParts(qualification, name);
+
+ const CodeEntity &
+ scopece = i_gate.Ces().Find_Ce(nScope);
+
+ // Else search for declaration in own class and then in base classes.
+ // These would be of higher priority than those in parent namespaces.
+ Ce_id
+ foundce = RecursiveSearchCe_InBaseClassesOf(
+ scopece, qualification, name, i_gate);
+ if (foundce.IsValid())
+ nRelatedCe = foundce;
+
+ if ( nRelatedCe.IsValid() AND IsInternal(i_gate.Ces().Find_Ce(nRelatedCe)) )
+ {
+ nRelatedCe = Ce_id(0);
+ }
+}
+
+bool
+UsedType::IsBuiltInType() const
+{
+ return bRefers2BuiltInType
+ AND aPtrLevels.size() == 0
+ AND NOT bIsReference
+ AND eConVol_Type == ary::cpp::CONVOL_none;
+}
+
+const String &
+UsedType::LocalName() const
+{
+ return aPath.LastSegment();
+}
+
+E_TypeSpecialisation
+UsedType::TypeSpecialisation() const
+{
+ return eTypeSpecialisation;
+}
+
+void
+UsedType::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ary::ClassId
+UsedType::get_AryClass() const
+{
+ return class_id;
+}
+
+Rid
+UsedType::inq_RelatedCe() const
+{
+ return nRelatedCe.Value();
+}
+
+bool
+UsedType::inq_IsConst() const
+{
+ if ( is_const(eConVol_Type) )
+ return true;
+ for ( PtrLevelVector::const_iterator it = aPtrLevels.begin();
+ it != aPtrLevels.end();
+ ++it )
+ {
+ if ( is_const(*it) )
+ return true;
+ }
+
+ return false;
+}
+
+void
+UsedType::inq_Get_Text( StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const Gate & i_rGate ) const
+{
+ if ( is_const(eConVol_Type) )
+ o_rPreName << "const ";
+ if ( is_volatile(eConVol_Type) )
+ o_rPreName << "volatile ";
+ if ( bIsAbsolute )
+ o_rPreName << "::";
+
+ aPath.Get_Text( o_rPreName, o_rName, o_rPostName, i_rGate );
+
+ for ( PtrLevelVector::const_iterator it = aPtrLevels.begin();
+ it != aPtrLevels.end();
+ ++it )
+ {
+ o_rPostName << " *";
+ if ( is_const(*it) )
+ o_rPostName << " const";
+ if ( is_volatile(*it) )
+ o_rPostName << " volatile";
+ }
+ if ( bIsReference )
+ o_rPostName << " &";
+}
+
+Ce_id
+UsedType::RecursiveSearchCe_InBaseClassesOf( const CodeEntity & i_mayBeClass,
+ const StringVector & i_myQualification,
+ const String & i_myName,
+ const Gate & i_gate ) const
+{
+ // Find in this class?
+ const CeNode *
+ basenode = CeNode_Traits::NodeOf_(i_mayBeClass);
+ if (basenode == 0)
+ return Ce_id(0);
+ Ce_id
+ found = CheckForRelatedCe_inNode(*basenode, i_myQualification, i_myName);
+ if (found.IsValid())
+ return found;
+
+
+ const Class *
+ cl = ary_cast<Class>(&i_mayBeClass);
+ if (cl == 0)
+ return Ce_id(0);
+
+ for ( List_Bases::const_iterator it = cl->BaseClasses().begin();
+ it != cl->BaseClasses().end();
+ ++it )
+ {
+ csv_assert((*it).nId.IsValid());
+ Ce_id
+ base = i_gate.Types().Find_Type((*it).nId).RelatedCe();
+ while (base.IsValid() AND is_type<Typedef>(i_gate.Ces().Find_Ce(base)) )
+ {
+ base = i_gate.Types().Find_Type(
+ ary_cast<Typedef>(i_gate.Ces().Find_Ce(base))
+ .DescribingType() )
+ .RelatedCe();
+ }
+
+ if (base.IsValid())
+ {
+ const CodeEntity &
+ basece = i_gate.Ces().Find_Ce(base);
+ found = RecursiveSearchCe_InBaseClassesOf(
+ basece, i_myQualification, i_myName, i_gate);
+ if (found.IsValid())
+ return found;
+ }
+ } // end for
+
+ return Ce_id(0);
+}
+
+
+void
+UsedType::Get_NameParts( StringVector & o_qualification,
+ String & o_name )
+{
+ nc_iter nit = aPath.begin();
+ nc_iter nit_end = aPath.end();
+ csv_assert(nit != nit_end); // Each UsedType has to have a local name.
+
+ --nit_end;
+ o_name = (*nit_end).Name();
+ for ( ;
+ nit != nit_end;
+ ++nit )
+ {
+ o_qualification.push_back( (*nit).Name() );
+ }
+}
+
+Ce_id
+CheckForRelatedCe_inNode( const CeNode & i_node,
+ const StringVector & i_qualification,
+ const String & i_name )
+{
+ if (i_qualification.size() > 0)
+ {
+ Ce_id
+ ret(0);
+ i_node.SearchBelow( ret,
+ i_qualification.begin(),
+ i_qualification.end(),
+ i_name );
+ return ret;
+ }
+ else
+ {
+ return i_node.Search(i_name);
+ }
+}
+
+
+namespace ut
+{
+
+List_TplParameter::List_TplParameter()
+ : aTplParameters()
+{
+}
+
+List_TplParameter::~List_TplParameter()
+{
+ csv::erase_container_of_heap_ptrs(aTplParameters);
+}
+
+void
+List_TplParameter::AddParam_Type( Type_id i_nType )
+{
+ aTplParameters.push_back( new TplParameter_Type(i_nType) );
+}
+
+void
+List_TplParameter::Get_Text( StreamStr & o_rOut,
+ const ary::cpp::Gate & i_rGate ) const
+{
+ Vector_TplArgument::const_iterator it = aTplParameters.begin();
+ Vector_TplArgument::const_iterator itEnd = aTplParameters.end();
+
+ if ( it == itEnd )
+ {
+ o_rOut << "<>";
+ return;
+ }
+
+ o_rOut << "< ";
+
+ (*it)->Get_Text( o_rOut, i_rGate );
+
+ for ( ++it; it != itEnd; ++it )
+ {
+ o_rOut << ", ";
+ (*it)->Get_Text( o_rOut, i_rGate );
+ }
+
+ o_rOut << " >";
+}
+
+intt
+List_TplParameter::Compare( const List_TplParameter & i_rOther ) const
+{
+ intt nResult = intt(aTplParameters.size()) - intt(i_rOther.aTplParameters.size());
+
+ if (nResult != 0)
+ return nResult;
+
+ Vector_TplArgument::const_iterator it1 = aTplParameters.begin();
+ Vector_TplArgument::const_iterator it1End = aTplParameters.end();
+ Vector_TplArgument::const_iterator it2 = i_rOther.aTplParameters.begin();
+
+ for ( ; it1 != it1End; ++it1, ++it2 )
+ {
+ nResult = (*it1)->Compare( *(*it2) );
+ if (nResult != 0)
+ return nResult;
+ }
+
+ return 0;
+}
+
+
+} // namespace ut
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/doc/d_boolean.cxx b/autodoc/source/ary/doc/d_boolean.cxx
new file mode 100644
index 000000000000..163f5ef0c8e6
--- /dev/null
+++ b/autodoc/source/ary/doc/d_boolean.cxx
@@ -0,0 +1,58 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/doc/d_boolean.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+namespace ary
+{
+namespace doc
+{
+
+Boolean::~Boolean()
+{
+}
+
+void
+Boolean::do_Accept(csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+
+
+
+} // namespace doc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/doc/d_docu.cxx b/autodoc/source/ary/doc/d_docu.cxx
new file mode 100644
index 000000000000..bcb601e339eb
--- /dev/null
+++ b/autodoc/source/ary/doc/d_docu.cxx
@@ -0,0 +1,62 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/doc/d_docu.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/doc/d_node.hxx>
+
+namespace ary
+{
+namespace doc
+{
+
+Documentation::Documentation()
+ : pData(0)
+{
+}
+
+Documentation::~Documentation()
+{
+}
+
+void
+Documentation::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+
+
+
+} // namespace doc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/doc/d_node.cxx b/autodoc/source/ary/doc/d_node.cxx
new file mode 100644
index 000000000000..7c2cc3d84c8b
--- /dev/null
+++ b/autodoc/source/ary/doc/d_node.cxx
@@ -0,0 +1,72 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/doc/d_node.hxx>
+
+
+namespace ary
+{
+namespace doc
+{
+
+
+
+Node::~Node()
+{
+}
+
+Node::Node(nodetype::id i_type)
+ : nType(i_type),
+ pNext(0)
+{
+}
+
+void
+Node::Add_toChain( DYN Node & pass_nextNode )
+{
+ if (NOT pNext)
+ pNext = &pass_nextNode;
+ else
+ pNext->Add_toChain(pass_nextNode);
+}
+
+uintt
+Node::ListSize() const
+{
+ return pNext
+ ? pNext->ListSize() + 1
+ : 1;
+}
+
+
+
+} // namespace doc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/doc/d_oldcppdocu.cxx b/autodoc/source/ary/doc/d_oldcppdocu.cxx
new file mode 100644
index 000000000000..17d2edcb298a
--- /dev/null
+++ b/autodoc/source/ary/doc/d_oldcppdocu.cxx
@@ -0,0 +1,339 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/doc/d_oldcppdocu.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/info/all_tags.hxx>
+#include <ary/info/docstore.hxx>
+#include <ary/info/infodisp.hxx>
+#include <docu_node_ids.hxx>
+
+
+
+
+namespace ary
+{
+namespace doc
+{
+
+using namespace info;
+
+
+
+
+unsigned char C_ucNO_INDEX = 255;
+typedef DYN StdTag * (F_CREATE)();
+
+
+OldCppDocu::OldCppDocu()
+ : Node(docnt::nt_OldCppDocu),
+ bIsObsolete(false),
+ bIsInternal(false),
+ bIsInterface(false)
+{
+ memset( nTags, C_ucNO_INDEX, size_t(C_eAtTag_NrOfClasses) );
+}
+
+OldCppDocu::~OldCppDocu()
+{
+}
+
+void
+OldCppDocu::Store2( info::DocuStore & o_rDocuStore )
+{
+ o_rDocuStore.Store2ConnectedDeclaration(*this);
+}
+
+AtTag *
+OldCppDocu::Create_StdTag( E_AtTagId i_eId )
+{
+ UINT8 nIndex = static_cast<UINT8>(i_eId);
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new StdTag(i_eId);
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::CheckIn_BaseTag()
+{
+ UINT8 nIndex = atc_base;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new BaseTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::CheckIn_ExceptionTag()
+{
+ UINT8 nIndex = atc_exception;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new ExceptionTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::Create_ImplementsTag()
+{
+ UINT8 nIndex = atc_implements;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new ImplementsTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::Create_KeywordTag()
+{
+ UINT8 nIndex = atc_keyword;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new KeywordTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::CheckIn_ParameterTag()
+{
+ UINT8 nIndex = atc_parameter;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new ParameterTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::CheckIn_SeeTag()
+{
+ UINT8 nIndex = atc_see;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new SeeTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::CheckIn_TemplateTag()
+{
+ UINT8 nIndex = atc_template;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new TemplateTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::Create_LabelTag()
+{
+ UINT8 nIndex = atc_label;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new LabelTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::Create_DefaultTag()
+{
+ UINT8 nIndex = atid_descr;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new StdTag(atid_descr);
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+AtTag *
+OldCppDocu::Create_SinceTag()
+{
+ UINT8 nIndex = atc_since;
+ if ( nTags[nIndex] == C_ucNO_INDEX )
+ {
+ AtTag * ret = new SinceTag();
+ NewTag(nIndex) = ret;
+ return ret;
+ }
+ else
+ {
+ return GetTag(nIndex).GetFollower();
+ }
+}
+
+
+void
+OldCppDocu::Replace_AtShort_By_AtDescr()
+{
+ unsigned char nPosInTags = nTags[atid_short];
+ if ( nPosInTags == C_ucNO_INDEX )
+ return;
+
+ AtTag * pTag = aTags[ nPosInTags ];
+ if ( pTag == 0 ) // Should be csv_assert().
+ return;
+
+ csv_assert( dynamic_cast< StdTag* >(pTag) != 0 );
+ StdTag * pStdTag = static_cast< StdTag* >(pTag);
+
+ pStdTag->ChangeId2(atid_descr);
+ nTags[atid_short] = C_ucNO_INDEX;
+ nTags[atid_descr] = nPosInTags;
+}
+
+void
+OldCppDocu::Set_Obsolete()
+{
+ bIsObsolete = true;
+}
+
+void
+OldCppDocu::Set_Internal()
+{
+ bIsInternal = true;
+}
+
+const AtTag &
+OldCppDocu::Short() const
+{
+ static const StdTag aNull_(atid_short);
+
+ unsigned char nPosInTags = nTags[atid_short];
+ if ( nPosInTags != C_ucNO_INDEX )
+ {
+ AtTag * pTag = aTags[ nPosInTags ];
+ if ( pTag != 0 ) // Should be csv_assert().
+ {
+ return *pTag;
+ }
+ }
+
+ return aNull_;
+}
+
+AtTag * &
+OldCppDocu::NewTag(UINT8 i_nIndex)
+{
+ nTags[i_nIndex] = static_cast<UINT8>(aTags.size());
+ aTags.push_back(0);
+ return aTags.back();
+}
+
+AtTag &
+OldCppDocu::GetTag( UINT8 i_nIndex )
+{
+ csv_assert( i_nIndex < C_eAtTag_NrOfClasses );
+ csv_assert( nTags[i_nIndex] != C_ucNO_INDEX );
+ csv_assert( aTags[nTags[i_nIndex]] != 0 );
+ return * aTags[nTags[i_nIndex]];
+}
+
+bool
+OldCppDocu::IsInternal() const
+{
+ return bIsInternal;
+}
+
+bool
+OldCppDocu::IsInterface() const
+{
+ return bIsInterface;
+}
+
+void
+OldCppDocu::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+} // namespace doc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/doc/d_oldidldocu.cxx b/autodoc/source/ary/doc/d_oldidldocu.cxx
new file mode 100644
index 000000000000..e1190d9fd364
--- /dev/null
+++ b/autodoc/source/ary/doc/d_oldidldocu.cxx
@@ -0,0 +1,79 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/doc/d_oldidldocu.hxx>
+
+// NOT FULLY DEFINED SERVICES
+#include <docu_node_ids.hxx>
+
+
+
+namespace ary
+{
+namespace doc
+{
+
+using namespace ::ary::inf;
+
+
+OldIdlDocu::OldIdlDocu()
+ : Node(docnt::nt_OldIdlDocu),
+ aShort(),
+ aDescription(),
+ aDeprecatedText(),
+ aTags(),
+ pExternShort(0),
+ bIsPublished(false),
+ bIsDeprecated(false),
+ bIsOptional(false)
+{
+}
+
+OldIdlDocu::~OldIdlDocu()
+{
+}
+
+void
+OldIdlDocu::AddToken2DeprecatedText( DYN DocuToken & let_drToken )
+{
+ aDeprecatedText.AddToken(let_drToken);
+}
+
+void
+OldIdlDocu::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+
+
+} // namespace info
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/doc/makefile.mk b/autodoc/source/ary/doc/makefile.mk
new file mode 100644
index 000000000000..21989dcc5827
--- /dev/null
+++ b/autodoc/source/ary/doc/makefile.mk
@@ -0,0 +1,58 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=ary_doc
+
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/d_boolean.obj \
+ $(OBJ)$/d_docu.obj \
+ $(OBJ)$/d_node.obj \
+ $(OBJ)$/d_oldcppdocu.obj \
+ $(OBJ)$/d_oldidldocu.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/autodoc/source/ary/idl/i2s_calculator.cxx b/autodoc/source/ary/idl/i2s_calculator.cxx
new file mode 100644
index 000000000000..e469ec14fd90
--- /dev/null
+++ b/autodoc/source/ary/idl/i2s_calculator.cxx
@@ -0,0 +1,995 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "i2s_calculator.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <algorithm>
+#include <string.h>
+#include <cosv/file.hxx>
+//#include <adc_manager.hxx>
+//#include <adc_options.hxx>
+#include <ary/qualiname.hxx>
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/i_function.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_interface.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/i_property.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/i_singleton.hxx>
+#include <ary/idl/i_siservice.hxx>
+#include <ary/idl/i_sisingleton.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/i_structelem.hxx>
+#include <ary/idl/i_typedef.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+#include <ary/namesort.hxx>
+#include <nametreenode.hxx>
+#include "i_nnfinder.hxx"
+#include "ia_ce.hxx"
+#include "ia_type.hxx"
+#include "is_ce.hxx"
+#include "is_type.hxx"
+#include "it_ce.hxx"
+#include "it_explicit.hxx"
+#include "it_sequence.hxx"
+#include "it_xnameroom.hxx"
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+template <class DEST>
+DEST *
+SecondariesCalculator::SearchCe4Type(Type_id i_type)
+{
+ Ce_id
+ ce = lhf_Search_CeFromTypeId(i_type);
+ if (ce.IsValid())
+ return ary_cast<DEST>(& my_CeStorage()[ce]);
+ return 0;
+}
+
+
+typedef stg::const_iterator<CodeEntity> stg_citerator;
+typedef stg::iterator<CodeEntity> stg_iterator;
+
+typedef stg::filter_iterator<CodeEntity,Interface>
+ interface_iterator;
+
+typedef stg::filter_iterator<Type,ExplicitType>
+ explicittype_iterator;
+
+typedef ary::stg::const_filter_iterator<CodeEntity,Typedef>
+ typedef_citerator;
+
+
+inline Service *
+SecondariesCalculator::lhf_SearchService( Type_id i_nType )
+{
+ return SearchCe4Type<Service>(i_nType);
+}
+
+inline Interface *
+SecondariesCalculator::lhf_SearchInterface( Type_id i_nType )
+{
+ return SearchCe4Type<Interface>(i_nType);
+}
+
+inline Struct *
+SecondariesCalculator::lhf_SearchStruct( Type_id i_nType )
+{
+ return SearchCe4Type<Struct>(i_nType);
+}
+
+inline Exception *
+SecondariesCalculator::lhf_SearchException( Type_id i_nType )
+{
+ return SearchCe4Type<Exception>(i_nType);
+}
+
+inline const Ce_Storage &
+SecondariesCalculator::my_CeStorage() const
+{
+ csv_assert(pCes != 0);
+ return pCes->Storage();
+}
+
+inline const Type_Storage &
+SecondariesCalculator::my_TypeStorage() const
+{
+ csv_assert(pTypes != 0);
+ return pTypes->Storage();
+}
+
+inline Ce_Storage &
+SecondariesCalculator::my_CeStorage()
+{
+ csv_assert(pCes != 0);
+ return pCes->Storage();
+}
+
+inline Type_Storage &
+SecondariesCalculator::my_TypeStorage()
+{
+ csv_assert(pTypes != 0);
+ return pTypes->Storage();
+}
+
+inline void
+SecondariesCalculator::insert_into2sList( CodeEntity & o_out,
+ int i_listIndex,
+ Ce_id i_nCe )
+ { o_out.Secondaries().Access_List(i_listIndex).push_back(i_nCe); }
+
+
+SecondariesCalculator::SecondariesCalculator( CeAdmin & i_ces,
+ TypeAdmin & i_types )
+ : pCes(&i_ces),
+ pTypes(&i_types)
+{
+}
+
+SecondariesCalculator::~SecondariesCalculator()
+{
+}
+
+
+void
+SecondariesCalculator::CheckAllInterfaceBases()
+{
+ Module &
+ rGlobalNamespace = pCes->GlobalNamespace();
+ QualifiedName
+ aXInterface("::com::sun::star::uno::XInterface","::");
+
+ const Type &
+ rType = pTypes->CheckIn_Type( aXInterface,
+ 0,
+ rGlobalNamespace.CeId(),
+ 0 );
+ Type_id
+ nTypeXInterface = rType.TypeId();
+ const ExplicitType &
+ rExplType = ary_cast<ExplicitType>(rType);
+ Ce_id
+ nCeXInterface = lhf_Search_CeForType(rExplType);
+
+ interface_iterator itEnd( my_CeStorage().End() );
+ for ( interface_iterator it( my_CeStorage().BeginUnreserved() );
+ it != itEnd;
+ ++it )
+ {
+ if (NOT it.IsValid())
+ continue;
+
+ Interface &
+ rInterface = *it;
+ if ( NOT rInterface.HasBase() // According to UNO IDL syntax, an interface without base has com::sun::star::uno::XInterface as base.
+ AND rInterface.CeId() != nCeXInterface ) // XInterface must not be base of itself.
+ {
+ rInterface.Add_Base(nTypeXInterface, 0);
+ }
+ } // end for
+}
+
+void
+SecondariesCalculator::Connect_Types2Ces()
+{
+ explicittype_iterator itEnd( my_TypeStorage().End() );
+ for ( explicittype_iterator it( my_TypeStorage().BeginUnreserved() );
+ it != itEnd;
+ ++it )
+ {
+ if (NOT it.IsValid())
+ continue;
+
+ ExplicitType &
+ rType = ary_cast<ExplicitType>(*it);
+ Ce_id
+ nRelatedCe = lhf_Search_CeForType(rType);
+ if (nRelatedCe.IsValid())
+ {
+ Ce_Type *
+ pNew = new Ce_Type(nRelatedCe, rType.TemplateParameters());
+ my_TypeStorage().Replace_Entity( rType.TypeId(),
+ *pNew );
+ }
+ } // end for
+}
+
+void
+SecondariesCalculator::Gather_CrossReferences()
+{
+ gather_Synonyms();
+
+ for ( stg_iterator it = my_CeStorage().Begin();
+ it != my_CeStorage().End();
+ ++it )
+ {
+ (*it).Accept( static_cast< SPInst_asHost& >(*this) );
+
+ } // end for
+
+ sort_All2s();
+}
+
+void
+SecondariesCalculator::Make_Links2DeveloperManual(
+ const String & i_devman_reffilepath )
+{
+// const autodoc::Options &
+// rOptions = TheAutodocManager().TheOptions();
+//
+// const String &
+// rDeveloperManual_URL
+// = rOptions.Get_Extra(autodoc::OPT_developer_guide);
+// const String
+// rDeveloperManual_ReferenceFile
+// = rOptions.Get_Extra(autodoc::OPT_developer_guide_refs_file);
+
+// if ( rDeveloperManual_URL.length() == 0
+// OR
+// rDeveloperManual_ReferenceFile.length() == 0 )
+// {
+// return;
+// }
+
+ csv::File
+ aFile(i_devman_reffilepath, csv::CFM_READ);
+ csv::OpenCloseGuard
+ aFileOpener(aFile);
+ if (aFileOpener)
+ {
+ Read_Links2DevManual(aFile);
+ }
+}
+
+namespace
+{
+
+enum E_LinkMode
+{
+ link2descr,
+ link2ref
+};
+
+struct OrderCeIdsByName
+{
+ OrderCeIdsByName(
+ const Ce_Storage & i_storage )
+ : rStorage(i_storage),
+ aNameComparison() {}
+ bool operator()(
+ Ce_id i_ce1,
+ Ce_id i_ce2 ) const
+ {
+ return aNameComparison( rStorage[i_ce1].LocalName(),
+ rStorage[i_ce2].LocalName() );
+ }
+
+ private:
+ const Ce_Storage & rStorage;
+ LesserName aNameComparison;
+};
+
+
+}
+
+
+
+void
+SecondariesCalculator::do_Process( const Service & i_rData )
+{
+ const Service &
+ rService = ary_cast<Service>(i_rData);
+
+ // Interfaces:
+ assignImplementation_toAServicesInterfaces( rService.CeId(),
+ rService.CeId(),
+ interface_2s_ExportingServices );
+ // Services and their interfaces:
+ recursive_AssignIncludingService(rService.CeId(), rService);
+}
+
+void
+SecondariesCalculator::do_Process( const Interface & i_rData )
+{
+ assign_AsDerivedInterface( ary_cast<Interface>(i_rData) );
+}
+
+void
+SecondariesCalculator::do_Process( const Struct & i_rData )
+{
+ assign_AsDerivedStruct( ary_cast<Struct>(i_rData) );
+}
+
+void
+SecondariesCalculator::do_Process( const Exception & i_rData )
+{
+ assign_AsDerivedException( ary_cast<Exception>(i_rData) );
+}
+
+void
+SecondariesCalculator::do_Process( const Typedef & )
+{
+ // KORR_FUTURE
+ // Find out what was meant here ???
+
+// const Typedef &
+// rTypedef = ary_cast<Typedef>(i_rData);
+}
+
+void
+SecondariesCalculator::do_Process( const Singleton & i_rData )
+{
+ const Singleton &
+ rSingleton = ary_cast<Singleton>(i_rData);
+
+ Service *
+ pServ = lhf_SearchService(rSingleton.AssociatedService());
+ if (pServ != 0)
+ {
+ insert_into2sUnique( *pServ,
+ service_2s_InstantiatingSingletons,
+ rSingleton.CeId() );
+ }
+
+ // Interfaces:
+ assignImplementation_toAServicesInterfaces( rSingleton.CeId(),
+ lhf_Search_CeFromTypeId(rSingleton.AssociatedService()),
+ interface_2s_ExportingSingletons );
+}
+
+void
+SecondariesCalculator::do_Process( const SglIfcService & i_rData )
+{
+ const SglIfcService &
+ rSglIfcService = ary_cast<SglIfcService>(i_rData);
+
+ assignImplementation_toAServicesInterfaces( rSglIfcService.CeId(),
+ rSglIfcService.CeId(),
+ interface_2s_ExportingServices );
+}
+
+void
+SecondariesCalculator::do_Process( const SglIfcSingleton & i_rData )
+{
+ const SglIfcSingleton &
+ rSglIfcSingleton = ary_cast<SglIfcSingleton>(i_rData);
+
+ Type_id nBase = rSglIfcSingleton.BaseInterface();
+ recursive_AssignImplementation_toExportedInterface( rSglIfcSingleton.CeId(),
+ nBase,
+ interface_2s_ExportingSingletons );
+}
+
+void
+SecondariesCalculator::do_Process( const Function & i_rData )
+{
+ const Function &
+ rFunction = ary_cast<Function>(i_rData);
+
+ recursive_AssignFunction_toCeAsReturn(rFunction.CeId(), rFunction.ReturnType());
+
+ for ( Function::ParamList::const_iterator itp = rFunction.Parameters().begin();
+ itp != rFunction.Parameters().end();
+ ++itp )
+ {
+ recursive_AssignFunction_toCeAsParameter(rFunction.CeId(), (*itp).Type());
+ } // end for (itp)
+
+ for ( Function::ExceptionList::const_iterator itx = rFunction.Exceptions().begin();
+ itx != rFunction.Exceptions().end();
+ ++itx )
+ {
+ Exception *
+ pX = lhf_SearchException(*itx);
+ if (pX != 0)
+ {
+ insert_into2sUnique(*pX, exception_2s_RaisingFunctions, rFunction.CeId());
+ }
+ } // end for (itx)
+}
+
+void
+SecondariesCalculator::do_Process( const StructElement & i_rData )
+{
+ const StructElement &
+ rStructElement = ary_cast<StructElement>(i_rData);
+
+ recursive_AssignStructElement_toCeAsDataType(rStructElement.CeId(), rStructElement.Type());
+}
+
+void
+SecondariesCalculator::do_Process( const Property & i_rData )
+{
+ const Property &
+ rProperty = ary_cast<Property>(i_rData);
+
+ recursive_AssignStructElement_toCeAsDataType(rProperty.CeId(), rProperty.Type());
+}
+
+Ce_id
+SecondariesCalculator::lhf_Search_CeForType( const ExplicitType & i_rType ) const
+{
+ const ExplicitNameRoom &
+ rExplicitNameRoom = ary_cast<ExplicitNameRoom>(
+ my_TypeStorage()[i_rType.NameRoom()] );
+ Find_ModuleNode
+ rNodeFinder( my_CeStorage(),
+ rExplicitNameRoom.NameChain_Begin(),
+ rExplicitNameRoom.NameChain_End(),
+ i_rType.Name() );
+
+ if ( rExplicitNameRoom.IsAbsolute() )
+ {
+ const Module &
+ rGlobalNamespace = ary_cast<Module>(
+ my_CeStorage()[predefined::ce_GlobalNamespace]);
+ return Search_SubTree( rGlobalNamespace,
+ rNodeFinder );
+ }
+ else
+ {
+ const Module &
+ rStartModule = ary_cast<Module>(
+ my_CeStorage()[i_rType.ModuleOfOccurrence()]);
+ Ce_id ret = Search_SubTree_UpTillRoot( rStartModule,
+ rNodeFinder );
+ return ret;
+ } // endif (rExplicitNameRoom.IsAbsolute()) else
+}
+
+Ce_id
+SecondariesCalculator::lhf_Search_CeFromTypeId( Type_id i_nType ) const
+{
+ if (NOT i_nType.IsValid())
+ return Ce_id(0);
+ const Ce_Type *
+ pType = ary_cast<Ce_Type>( & my_TypeStorage()[i_nType] );
+ return pType != 0
+ ? pType->RelatedCe()
+ : Ce_id_Null();
+}
+
+void
+SecondariesCalculator::assign_CurLink( char * i_text,
+ const String & i_link,
+ const String & i_linkUI,
+ bool i_isDescr,
+ int i_lineCount )
+{
+ csv_assert(i_text != 0);
+
+ const ary::idl::Module *
+ pModule = & ary_cast<Module>(
+ my_CeStorage()[predefined::ce_GlobalNamespace]);
+
+ char * pPastNext = 0;
+ char * pNext = i_text;
+ for ( ;
+ (pPastNext = strstr(pNext,".")) != 0;
+ pNext = pPastNext + 1 )
+ {
+ String sNext(pNext, pPastNext-pNext);
+ Ce_id nModule = pModule->Search_Name(sNext);
+ if (nModule.IsValid())
+ {
+ pModule = ary_cast<Module>( & my_CeStorage()[nModule] );
+ }
+ else
+ {
+ pModule = 0;
+ }
+
+ if (pModule == 0)
+ {
+ Cerr() << "Warning: Invalid line nr. "
+ << i_lineCount
+ << " in DevelopersGuide reference file:\n"
+ << reinterpret_cast< const char* >(i_text)
+ << "\n"
+ << Endl();
+ return;
+ }
+ } // end for
+
+ pPastNext = strchr(pNext,':');
+ bool bMember = pPastNext != 0;
+ String sCe( pNext, (bMember ? csv::str::size(pPastNext-pNext) : csv::str::maxsize) );
+
+// KORR_FUTURE
+// String sMember(bMember ? pPastNext+1, "");
+
+ Ce_id nCe = pModule->Search_Name(sCe);
+ if (NOT nCe.IsValid())
+ {
+ Cerr() << "Warning: Invalid line nr. "
+ << i_lineCount
+ << " in DevelopersGuide reference file:\n"
+ << reinterpret_cast< const char* >(i_text)
+ << "\n"
+ << Endl();
+ return;
+ }
+
+ CodeEntity &
+ rCe = my_CeStorage()[nCe];
+ if (NOT bMember)
+ {
+ if (i_isDescr)
+ rCe.Secondaries().Add_Link2DescriptionInManual(i_link, i_linkUI);
+ else
+ rCe.Secondaries().Add_Link2RefInManual(i_link, i_linkUI);
+ return;
+ }
+ else
+ {
+ // KORR_FUTURE
+ // Provisorial just doing nothing (or may be
+ // adding a link at main Ces lists).
+// if (i_isDescr)
+// rCe.Secondaries().Add_Link2DescriptionInManual(i_link);
+// else
+// rCe.Secondaries().Add_Link2RefInManual(i_link);
+ }
+}
+
+void
+SecondariesCalculator::gather_Synonyms()
+{
+ const Ce_Storage &
+ cstrg = my_CeStorage();
+ typedef_citerator itEnd(cstrg.End());
+ for ( typedef_citerator it(cstrg.Begin());
+ it != itEnd;
+ ++it )
+ {
+ if (NOT it.IsValid())
+ continue;
+
+ const Typedef &
+ rTypedef = *it;
+ recursive_AssignAsSynonym(rTypedef.CeId(), rTypedef);
+ } // end for (itTd)
+}
+
+void
+SecondariesCalculator::recursive_AssignAsSynonym( Ce_id i_synonymousTypedefsId,
+ const Typedef & i_TypedefToCheck )
+{
+ Ce_id
+ nCe = lhf_Search_CeFromTypeId(i_TypedefToCheck.DefiningType());
+ if (NOT nCe.IsValid())
+ return;
+ CodeEntity &
+ rCe = my_CeStorage()[nCe];
+
+ switch (rCe.AryClass()) // KORR_FUTURE: make this faster, remove switch.
+ {
+ case Interface::class_id:
+ insert_into2sList( rCe,
+ interface_2s_SynonymTypedefs,
+ i_synonymousTypedefsId );
+ break;
+ case Struct::class_id:
+ insert_into2sList( rCe,
+ struct_2s_SynonymTypedefs,
+ i_synonymousTypedefsId );
+ break;
+ case Enum::class_id:
+ insert_into2sList( rCe,
+ enum_2s_SynonymTypedefs,
+ i_synonymousTypedefsId );
+ break;
+ case Typedef::class_id:
+ insert_into2sList( rCe,
+ typedef_2s_SynonymTypedefs,
+ i_synonymousTypedefsId );
+ recursive_AssignAsSynonym( i_synonymousTypedefsId,
+ static_cast< Typedef& >(rCe) );
+ break;
+ // default: do nothing.
+ }
+}
+
+void
+SecondariesCalculator::recursive_AssignIncludingService( Ce_id i_includingServicesId,
+ const Service & i_ServiceToCheckItsIncludes )
+{
+ Dyn_StdConstIterator<CommentedRelation>
+ pIncludedServices;
+ i_ServiceToCheckItsIncludes.Get_IncludedServices(pIncludedServices);
+
+ for ( StdConstIterator<CommentedRelation> &
+ itServ = *pIncludedServices;
+ itServ;
+ ++itServ )
+ {
+ Service *
+ pServ = lhf_SearchService((*itServ).Type());
+ if (pServ != 0)
+ {
+ insert_into2sUnique( *pServ,
+ service_2s_IncludingServices,
+ i_includingServicesId
+ );
+ recursive_AssignIncludingService(i_includingServicesId, *pServ);
+
+ } // end if
+
+ assignImplementation_toAServicesInterfaces( i_includingServicesId,
+ lhf_Search_CeFromTypeId( (*itServ).Type() ),
+ interface_2s_ExportingServices );
+ } // end for
+}
+
+void
+SecondariesCalculator::assign_AsDerivedInterface( const Interface & i_rDerived )
+{
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ pHelp;
+ ary::idl::ifc_interface::attr::Get_Bases(pHelp, i_rDerived);
+
+ for ( ary::StdConstIterator<ary::idl::CommentedRelation> & it = *pHelp;
+ it.operator bool();
+ ++it )
+ {
+ Interface *
+ pIfc = lhf_SearchInterface( (*it).Type() );
+ if (pIfc == 0)
+ continue;
+
+ insert_into2sList( *pIfc,
+ interface_2s_Derivations,
+ i_rDerived.CeId() );
+ } // end for
+}
+
+void
+SecondariesCalculator::assign_AsDerivedStruct( const Struct & i_rDerived )
+{
+ Type_id
+ nBase = i_rDerived.Base();
+ if (nBase.IsValid())
+ {
+ Struct *
+ pParent = lhf_SearchStruct(nBase);
+ if (pParent != 0)
+ {
+ insert_into2sList( *pParent,
+ struct_2s_Derivations,
+ i_rDerived.CeId() );
+ }
+ }
+}
+
+void
+SecondariesCalculator::assign_AsDerivedException( const Exception & i_rDerived )
+{
+ Type_id
+ nBase = i_rDerived.Base();
+ if (nBase.IsValid())
+ {
+ Exception *
+ pParent = lhf_SearchException(nBase);
+ if (pParent != 0)
+ {
+ insert_into2sList( *pParent,
+ exception_2s_Derivations,
+ i_rDerived.CeId() );
+ } // end if
+ } // end if
+}
+
+void
+SecondariesCalculator::assignImplementation_toAServicesInterfaces(
+ Ce_id i_nImpl,
+ Ce_id i_nService,
+ E_2s_of_Interface i_eList )
+{
+ if (NOT i_nService.IsValid())
+ return;
+ Service *
+ pService = ary_cast<Service>( & my_CeStorage()[i_nService] );
+ SglIfcService *
+ pSglIfcService = ary_cast<SglIfcService>( & my_CeStorage()[i_nService] );
+
+ if (pService != 0)
+ {
+ Dyn_StdConstIterator<CommentedRelation>
+ pSupportedInterfaces;
+ pService->Get_SupportedInterfaces(pSupportedInterfaces);
+
+ for ( StdConstIterator<CommentedRelation> &
+ itInfc = *pSupportedInterfaces;
+ itInfc.operator bool();
+ ++itInfc )
+ {
+ recursive_AssignImplementation_toExportedInterface( i_nImpl,
+ (*itInfc).Type(),
+ i_eList );
+ } // end for
+ }
+ else if (pSglIfcService != 0)
+ {
+ Type_id nBase = pSglIfcService->BaseInterface();
+ recursive_AssignImplementation_toExportedInterface( i_nImpl,
+ nBase,
+ i_eList );
+ } // end if
+}
+
+void
+SecondariesCalculator::recursive_AssignImplementation_toExportedInterface(
+ Ce_id i_nService,
+ Type_id i_nExportedInterface,
+ E_2s_of_Interface i_eList )
+{
+ Interface *
+ pIfc = lhf_SearchInterface(i_nExportedInterface);
+ if (pIfc == 0)
+ return;
+
+ insert_into2sUnique( *pIfc,
+ i_eList,
+ i_nService );
+ Dyn_StdConstIterator<CommentedRelation>
+ pBases;
+ ary::idl::ifc_interface::attr::Get_Bases(pBases, *pIfc);
+ for ( StdConstIterator<CommentedRelation> & it = *pBases;
+ it.operator bool();
+ ++it )
+ {
+ recursive_AssignImplementation_toExportedInterface(i_nService, (*it).Type(), i_eList);
+ }
+}
+
+void
+SecondariesCalculator::recursive_AssignFunction_toCeAsReturn( Ce_id i_nFunction,
+ Type_id i_nReturnType )
+{
+ Ce_id
+ nCe = lhf_Search_CeFromTypeId(i_nReturnType);
+ if (NOT nCe.IsValid())
+ return;
+
+ CodeEntity &
+ rCe = my_CeStorage()[nCe];
+ switch (rCe.AryClass()) // KORR_FUTURE: make this faster, remove switch.
+ {
+ case Interface::class_id:
+ insert_into2sList( rCe,
+ interface_2s_AsReturns,
+ i_nFunction );
+ break;
+ case Struct::class_id:
+ insert_into2sList( rCe,
+ struct_2s_AsReturns,
+ i_nFunction );
+ break;
+ case Enum::class_id:
+ insert_into2sList( rCe,
+ enum_2s_AsReturns,
+ i_nFunction );
+ break;
+ case Typedef::class_id:
+ insert_into2sList( rCe,
+ typedef_2s_AsReturns,
+ i_nFunction );
+ recursive_AssignFunction_toCeAsReturn( i_nFunction,
+ static_cast< Typedef& >(rCe).DefiningType() );
+ break;
+ // default: do nothing.
+ }
+}
+
+void
+SecondariesCalculator::recursive_AssignFunction_toCeAsParameter( Ce_id i_nFunction,
+ Type_id i_nParameterType )
+{
+ Ce_id
+ nCe = lhf_Search_CeFromTypeId(i_nParameterType);
+ if (NOT nCe.IsValid())
+ return;
+
+ CodeEntity &
+ rCe = my_CeStorage()[nCe];
+ switch (rCe.AryClass()) // KORR_FUTURE: make this faster, remove switch.
+ {
+ case Interface::class_id:
+ insert_into2sList( rCe,
+ interface_2s_AsParameters,
+ i_nFunction );
+ break;
+ case Struct::class_id:
+ insert_into2sList( rCe,
+ struct_2s_AsParameters,
+ i_nFunction );
+ break;
+ case Enum::class_id:
+ insert_into2sList( rCe,
+ enum_2s_AsParameters,
+ i_nFunction );
+ break;
+ case Typedef::class_id:
+ insert_into2sList( rCe,
+ typedef_2s_AsParameters,
+ i_nFunction );
+ recursive_AssignFunction_toCeAsParameter( i_nFunction,
+ static_cast< Typedef& >(rCe).DefiningType() );
+ break;
+ // default: do nothing.
+ }
+}
+
+void
+SecondariesCalculator::recursive_AssignStructElement_toCeAsDataType( Ce_id i_nDataElement,
+ Type_id i_nDataType )
+{
+ Ce_id
+ nCe = lhf_Search_CeFromTypeId(i_nDataType);
+ if (NOT nCe.IsValid())
+ return;
+
+ CodeEntity &
+ rCe = my_CeStorage()[nCe];
+ switch (rCe.AryClass()) // KORR_FUTURE: make this faster, remove switch.
+ {
+ case Interface::class_id:
+ insert_into2sList( rCe,
+ interface_2s_AsDataTypes,
+ i_nDataElement );
+ break;
+ case Struct::class_id:
+ insert_into2sList( rCe,
+ struct_2s_AsDataTypes,
+ i_nDataElement );
+ break;
+ case Enum::class_id:
+ insert_into2sList( rCe,
+ enum_2s_AsDataTypes,
+ i_nDataElement );
+ break;
+ case Typedef::class_id:
+ insert_into2sList( rCe,
+ typedef_2s_AsDataTypes,
+ i_nDataElement );
+ recursive_AssignFunction_toCeAsParameter( i_nDataElement,
+ static_cast< Typedef& >(rCe).DefiningType() );
+ break;
+ // default: do nothing.
+ } // end switch
+}
+
+void
+SecondariesCalculator::insert_into2sUnique( CodeEntity & o_out,
+ int i_listIndex,
+ Ce_id i_nCe )
+{
+ std::vector<Ce_id> &
+ rOut = o_out.Secondaries().Access_List(i_listIndex);
+ if (std::find(rOut.begin(),rOut.end(),i_nCe) != rOut.end())
+ return;
+ rOut.push_back(i_nCe);
+}
+
+void
+SecondariesCalculator::sort_All2s()
+{
+ OrderCeIdsByName
+ aIdOrdering(my_CeStorage());
+
+ for ( stg_iterator it = my_CeStorage().Begin();
+ it != my_CeStorage().End();
+ ++it )
+ {
+ Ce_2s &
+ r2s = (*it).Secondaries();
+ int iCount = r2s.CountXrefLists();
+ for (int i = 0; i < iCount; ++i)
+ {
+ std::sort( r2s.Access_List(i).begin(),
+ r2s.Access_List(i).end(),
+ aIdOrdering );
+ } // end for (i)
+ } // end for (it)
+}
+
+void
+SecondariesCalculator::Read_Links2DevManual( csv::bstream & i_file )
+{
+ StreamLock aLine(300);
+ StreamStr & rLine = aLine();
+
+
+ String sCurLink;
+ String sCurLinkUI;
+ E_LinkMode eCurMode = link2ref;
+
+ int lineCount = 0;
+ const char * sLink = "LINK:";
+ const char * sDescr = "DESCR:";
+ const char * sTopic = "TOPIC:";
+ const char * sRef = "REF:";
+ const UINT8 cMaxASCIINumWhiteSpace = 32;
+
+ while (NOT i_file.eod())
+ {
+ ++lineCount;
+
+ rLine.reset();
+ rLine.operator_read_line(i_file);
+
+ if ( *rLine.c_str() >= 'a' )
+ {
+ assign_CurLink(rLine.begin(), sCurLink, sCurLinkUI, eCurMode == link2descr, lineCount);
+ }
+ else if ( strncmp(rLine.c_str(), sLink, strlen(sLink)) == 0 )
+ {
+ sCurLink = rLine.c_str()+5;
+ sCurLinkUI.clear();
+ }
+ else if ( strncmp(rLine.c_str(), sDescr, strlen(sDescr)) == 0 )
+ {
+ sCurLinkUI = rLine.c_str()+6;
+ }
+ else if ( strncmp(rLine.c_str(), sTopic, strlen(sTopic)) == 0 )
+ {
+ eCurMode = link2descr;
+ }
+ else if ( strncmp(rLine.c_str(), sRef, strlen(sRef)) == 0 )
+ {
+ eCurMode = link2ref;
+ }
+ else if (static_cast<UINT8>(*rLine.c_str()) > cMaxASCIINumWhiteSpace)
+ {
+ assign_CurLink(rLine.begin(), sCurLink, sCurLinkUI, eCurMode == link2descr, lineCount);
+ }
+ // else
+ // Ignore empty line.
+
+ } // end while
+}
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i2s_calculator.hxx b/autodoc/source/ary/idl/i2s_calculator.hxx
new file mode 100644
index 000000000000..dd85d0a05e21
--- /dev/null
+++ b/autodoc/source/ary/idl/i2s_calculator.hxx
@@ -0,0 +1,298 @@
+/* -*- 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 ARY_IDL_I2S_CALCULATOR_HXX
+#define ARY_IDL_I2S_CALCULATOR_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+ // PARAMETERS
+#include <ary/idl/i_types4idl.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+ class CeAdmin;
+ class Ce_Storage;
+ class TypeAdmin;
+ class Type_Storage;
+ class Module;
+ class ExplicitType;
+ class Function;
+ class Interface;
+ class Property;
+ class Typedef;
+ class Service;
+ class Singleton;
+ class SglIfcService;
+ class SglIfcSingleton;
+ class Struct;
+ class StructElement;
+ class Exception;
+ class Ce_2s;
+}
+}
+
+
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+enum E_2s_of_Service
+{
+ service_2s_IncludingServices,
+ service_2s_InstantiatingSingletons
+};
+
+enum E_2s_of_Interface
+{
+ interface_2s_Derivations,
+ interface_2s_ExportingServices,
+ interface_2s_ExportingSingletons,
+ interface_2s_SynonymTypedefs,
+// interface_2s_UsingTypedefs,
+ interface_2s_AsReturns,
+// interface_2s_AsIndirectReturns,
+ interface_2s_AsParameters,
+// interface_2s_AsIndirectParameters,
+ interface_2s_AsDataTypes
+};
+
+enum E_2s_of_Struct
+{
+ struct_2s_Derivations,
+ struct_2s_SynonymTypedefs,
+// struct_2s_UsingTypedefs,
+ struct_2s_AsReturns,
+// struct_2s_AsIndirectReturns,
+ struct_2s_AsParameters,
+// struct_2s_AsIndirectParameters,
+ struct_2s_AsDataTypes
+};
+
+enum E_2s_of_Enum
+{
+ enum_2s_SynonymTypedefs,
+// enum_2s_UsingTypedefs,
+ enum_2s_AsReturns,
+// enum_2s_AsIndirectReturns,
+ enum_2s_AsParameters,
+// enum_2s_AsIndirectParameters,
+ enum_2s_AsDataTypes
+};
+
+enum E_2s_of_Typedef
+{
+ typedef_2s_SynonymTypedefs,
+// typedef_2s_UsingTypedefs,
+ typedef_2s_AsReturns,
+// typedef_2s_AsIndirectReturns,
+ typedef_2s_AsParameters,
+// typedef_2s_AsIndirectParameters,
+ typedef_2s_AsDataTypes
+};
+
+enum E_2s_of_Exceptions
+{
+ exception_2s_Derivations,
+ exception_2s_RaisingFunctions
+};
+
+
+
+class SPInst_asHost : public csv::ProcessorIfc,
+ public csv::ConstProcessor<Service>,
+ public csv::ConstProcessor<Interface>,
+ public csv::ConstProcessor<Struct>,
+ public csv::ConstProcessor<Exception>,
+ public csv::ConstProcessor<Typedef>,
+ public csv::ConstProcessor<Singleton>,
+ public csv::ConstProcessor<Function>,
+ public csv::ConstProcessor<StructElement>,
+ public csv::ConstProcessor<Property>,
+ public csv::ConstProcessor<SglIfcService>,
+ public csv::ConstProcessor<SglIfcSingleton>
+{
+};
+
+
+
+
+/** This class scans the parsed data and produces several
+ secondary data like cross references and alphabetical indices.
+
+ In this declaration "Secondaries" or "2s" mean those secondary data.
+
+ @see Ce_2s
+*/
+class SecondariesCalculator : public SPInst_asHost
+{
+ public:
+ // LIFECYCLE
+ SecondariesCalculator(
+ CeAdmin & i_ces,
+ TypeAdmin & i_types );
+ virtual ~SecondariesCalculator();
+
+ // OPERATIONS
+ void CheckAllInterfaceBases();
+ void Connect_Types2Ces();
+ void Gather_CrossReferences();
+ void Make_Links2DeveloperManual(
+ const String & i_devman_reffilepath );
+
+ private:
+ // Interface CeHost These are the points to gather cross
+ // references:
+ virtual void do_Process(
+ const Service & i_rData );
+ virtual void do_Process(
+ const Interface & i_rData );
+ virtual void do_Process(
+ const Struct & i_rData );
+ virtual void do_Process(
+ const Exception & i_rData );
+ virtual void do_Process(
+ const Typedef & i_rData );
+ virtual void do_Process(
+ const Singleton & i_rData );
+ virtual void do_Process(
+ const Function & i_rData );
+ virtual void do_Process(
+ const StructElement &
+ i_rData );
+ virtual void do_Process(
+ const Property & i_rData );
+ virtual void do_Process(
+ const SglIfcService &
+ i_rData );
+ virtual void do_Process(
+ const SglIfcSingleton &
+ i_rData );
+
+ // Locals
+ const Ce_Storage & my_CeStorage() const;
+ const Type_Storage &
+ my_TypeStorage() const;
+ Ce_Storage & my_CeStorage();
+ Type_Storage & my_TypeStorage();
+
+ template <class DEST>
+ DEST * SearchCe4Type(
+ Type_id i_type );
+ Ce_id lhf_Search_CeForType(
+ const ExplicitType &
+ i_rType ) const;
+ Ce_id lhf_Search_CeFromTypeId(
+ Type_id i_nType ) const;
+ Service * lhf_SearchService(
+ Type_id i_nServ );
+ Interface * lhf_SearchInterface(
+ Type_id i_nIfc );
+ Struct * lhf_SearchStruct(
+ Type_id i_nIfc );
+ Exception * lhf_SearchException(
+ Type_id i_nIfc );
+ void assign_CurLink(
+ char * i_text,
+ const String & i_link,
+ const String & i_linkUI,
+ bool i_isDescr, /// @descr true: description, false: reference.
+ int i_lineCount );
+ void gather_Synonyms();
+ void recursive_AssignAsSynonym(
+ Ce_id i_synonymousTypedefsId,
+ const Typedef & i_TypedefToCheck );
+ void recursive_AssignIncludingService(
+ Ce_id i_includingServicesId,
+ const Service & i_ServiceToCheckItsIncludes );
+ void assign_AsDerivedInterface(
+ const Interface & i_rDerived );
+ void assign_AsDerivedStruct(
+ const Struct & i_rDerived );
+ void assign_AsDerivedException(
+ const Exception & i_rDerived );
+ void assignImplementation_toAServicesInterfaces(
+ Ce_id i_nImpl,
+ Ce_id i_nService,
+ E_2s_of_Interface i_eList );
+ void recursive_AssignImplementation_toExportedInterface(
+ Ce_id i_nService,
+ Type_id i_nExportedInterface,
+ E_2s_of_Interface i_eList );
+ void recursive_AssignFunction_toCeAsReturn(
+ Ce_id i_nFunction,
+ Type_id i_nReturnType );
+ void recursive_AssignFunction_toCeAsParameter(
+ Ce_id i_nFunction,
+ Type_id i_nParameterType );
+
+ /** @param i_nDataElement
+ May be the ID of an struct element as well as an exception element
+ or a property.
+ */
+ void recursive_AssignStructElement_toCeAsDataType(
+ Ce_id i_nDataElement,
+ Type_id i_nDataType );
+ void insert_into2sList(
+ CodeEntity & o_out,
+ int i_listIndex,
+ Ce_id i_nCe );
+ void insert_into2sUnique(
+ CodeEntity & o_out,
+ int i_listIndex,
+ Ce_id i_nCe );
+ /// Sorts secondary production lists alphabetical.
+ void sort_All2s();
+
+ void Read_Links2DevManual(
+ csv::bstream & i_file );
+
+ // DATA
+ CeAdmin * pCes;
+ TypeAdmin * pTypes;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_attribute.cxx b/autodoc/source/ary/idl/i_attribute.cxx
new file mode 100644
index 000000000000..8dc1d62f8f9f
--- /dev/null
+++ b/autodoc/source/ary/idl/i_attribute.cxx
@@ -0,0 +1,162 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_attribute.hxx>
+#include <ary/idl/ik_attribute.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/getncast.hxx>
+#include <sci_impl.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+Attribute::Attribute( const String & i_sName,
+ Ce_id i_nService,
+ Ce_id i_nModule,
+ Type_id i_nType,
+ bool i_bReadonly,
+ bool i_bBound )
+ : sName(i_sName),
+ nOwner(i_nService),
+ nNameRoom(i_nModule),
+ nType(i_nType),
+ aGetExceptions(),
+ aSetExceptions(),
+ bReadonly(i_bReadonly),
+ bBound(i_bBound)
+{
+}
+
+Attribute::~Attribute()
+{
+}
+
+
+void
+Attribute::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Attribute::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Attribute::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Attribute::inq_NameRoom() const
+{
+ return nNameRoom;
+}
+
+Ce_id
+Attribute::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Attribute::inq_SightLevel() const
+{
+ return sl_Member;
+}
+
+namespace ifc_attribute
+{
+
+inline const Attribute &
+attribute_cast( const CodeEntity & i_ce )
+{
+ csv_assert( is_type<Attribute>(i_ce) );
+ return static_cast< const Attribute& >(i_ce);
+}
+
+bool
+attr::HasAnyStereotype( const CodeEntity & i_ce )
+{
+ const Attribute & rAttr = attribute_cast(i_ce);
+ return rAttr.bReadonly OR rAttr.bBound;
+}
+
+bool
+attr::IsReadOnly( const CodeEntity & i_ce )
+{
+ return attribute_cast(i_ce).bReadonly;
+}
+
+bool
+attr::IsBound( const CodeEntity & i_ce )
+{
+ return attribute_cast(i_ce).bBound;
+}
+
+Type_id
+attr::Type( const CodeEntity & i_ce )
+{
+ return attribute_cast(i_ce).nType;
+}
+
+void
+attr::Get_GetExceptions( Dyn_TypeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result
+ = new SCI_Vector<Type_id>( attribute_cast(i_ce).aGetExceptions );
+}
+
+void
+attr::Get_SetExceptions( Dyn_TypeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result
+ = new SCI_Vector<Type_id>( attribute_cast(i_ce).aSetExceptions );
+}
+
+
+} // namespace ifc_attribute
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_ce.cxx b/autodoc/source/ary/idl/i_ce.cxx
new file mode 100644
index 000000000000..3d4503887124
--- /dev/null
+++ b/autodoc/source/ary/idl/i_ce.cxx
@@ -0,0 +1,83 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_ce.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/doc/d_oldidldocu.hxx>
+#include <ary/getncast.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace
+{
+ const Ce_2s aConstCe2sDummy;
+}
+
+
+
+CodeEntity::CodeEntity()
+ : aDocu(),
+ p2s(0)
+{
+}
+
+CodeEntity::~CodeEntity()
+{
+}
+
+const Ce_2s &
+CodeEntity::Secondaries() const
+{
+ if (p2s)
+ return *p2s;
+ return aConstCe2sDummy;
+}
+
+Ce_2s &
+CodeEntity::Secondaries()
+{
+ if (p2s)
+ return *p2s;
+ p2s = Ce_2s::Create_(AryClass());
+ return *p2s;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_ce2s.cxx b/autodoc/source/ary/idl/i_ce2s.cxx
new file mode 100644
index 000000000000..9a126fd312e2
--- /dev/null
+++ b/autodoc/source/ary/idl/i_ce2s.cxx
@@ -0,0 +1,87 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_ce.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <ary/getncast.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+namespace
+{
+const std::vector<Ce_id> C_sNullVector_Ce_ids;
+}
+
+
+Ce_2s::~Ce_2s()
+{
+ csv::erase_container_of_heap_ptrs(aXrefLists);
+}
+
+DYN Ce_2s *
+Ce_2s::Create_( ClassId )
+{
+ return new Ce_2s;
+}
+
+
+std::vector<Ce_id> &
+Ce_2s::Access_List( int i_indexOfList )
+{
+ csv_assert(i_indexOfList >= 0 AND i_indexOfList < 1000);
+
+ while (i_indexOfList >= (int) aXrefLists.size())
+ {
+ aXrefLists.push_back(new std::vector<Ce_id>);
+ }
+ return *aXrefLists[i_indexOfList];
+}
+
+const std::vector<Ce_id> &
+Ce_2s::List( int i_indexOfList ) const
+{
+ if (uintt(i_indexOfList) < aXrefLists.size())
+ return *aXrefLists[i_indexOfList];
+ else
+ return C_sNullVector_Ce_ids;
+}
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_comrela.cxx b/autodoc/source/ary/idl/i_comrela.cxx
new file mode 100644
index 000000000000..f76076aa3847
--- /dev/null
+++ b/autodoc/source/ary/idl/i_comrela.cxx
@@ -0,0 +1,50 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_comrela.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ary.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+// KORR_FUTURE Currently unneeded file. May become useful later.
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_constant.cxx b/autodoc/source/ary/idl/i_constant.cxx
new file mode 100644
index 000000000000..3a6eb4fbf8cc
--- /dev/null
+++ b/autodoc/source/ary/idl/i_constant.cxx
@@ -0,0 +1,126 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_constant.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/ik_constant.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+Constant::Constant( const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ Type_id i_nType,
+ const String & i_sInitValue )
+ : sName(i_sName),
+ nNameRoom(i_nNameRoom),
+ nOwner(i_nOwner),
+ nType(i_nType),
+ sInitValue(i_sInitValue)
+{
+}
+
+Constant::~Constant()
+{
+}
+
+void
+Constant::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+
+ClassId
+Constant::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Constant::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Constant::inq_NameRoom() const
+{
+ return nNameRoom;
+}
+
+Ce_id
+Constant::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Constant::inq_SightLevel() const
+{
+ return sl_Member;
+}
+
+
+namespace ifc_constant
+{
+
+inline const Constant &
+constant_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Constant::class_id );
+ return static_cast< const Constant& >(i_ce);
+}
+
+Type_id
+attr::Type( const CodeEntity & i_ce )
+{
+ return constant_cast(i_ce).nType;
+}
+
+const String &
+attr::Value( const CodeEntity & i_ce )
+{
+ return constant_cast(i_ce).sInitValue;
+}
+
+} // namespace ifc_constant
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_constgroup.cxx b/autodoc/source/ary/idl/i_constgroup.cxx
new file mode 100644
index 000000000000..b1955d55e186
--- /dev/null
+++ b/autodoc/source/ary/idl/i_constgroup.cxx
@@ -0,0 +1,117 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_constgroup.hxx>
+#include <ary/idl/ik_constgroup.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+ConstantsGroup::ConstantsGroup( const String & i_sName,
+ Ce_id i_nModule )
+ : sName(i_sName),
+ nModule(i_nModule),
+ aConstants()
+{
+}
+
+ConstantsGroup::~ConstantsGroup()
+{
+}
+
+void
+ConstantsGroup::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+ConstantsGroup::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+ConstantsGroup::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+ConstantsGroup::inq_NameRoom() const
+{
+ return nModule;
+}
+
+Ce_id
+ConstantsGroup::inq_Owner() const
+{
+ return nModule;
+}
+
+E_SightLevel
+ConstantsGroup::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_constgroup
+{
+
+inline const ConstantsGroup &
+constgroup_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == ConstantsGroup::class_id );
+ return static_cast< const ConstantsGroup& >(i_ce);
+}
+
+void
+attr::Get_Constants( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(constgroup_cast(i_ce).aConstants);
+}
+
+} // namespace ifc_constgroup
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_enum.cxx b/autodoc/source/ary/idl/i_enum.cxx
new file mode 100644
index 000000000000..9d01c2b19ce5
--- /dev/null
+++ b/autodoc/source/ary/idl/i_enum.cxx
@@ -0,0 +1,146 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/ik_enum.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+#include "i2s_calculator.hxx"
+
+
+namespace ary
+{
+namespace idl
+{
+
+Enum::Enum( const String & i_sName,
+ Ce_id i_nOwner )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ aValues()
+{
+}
+
+Enum::~Enum()
+{
+}
+
+void
+Enum::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Enum::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Enum::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Enum::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+Enum::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Enum::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_enum
+{
+
+inline const Enum &
+enum_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Enum::class_id );
+ return static_cast< const Enum& >(i_ce);
+}
+
+void
+attr::Get_Values( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(enum_cast(i_ce).aValues);
+}
+
+
+void
+xref::Get_SynonymTypedefs( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(enum_2s_SynonymTypedefs));
+}
+
+void
+xref::Get_AsReturns( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(enum_2s_AsReturns));
+}
+
+void
+xref::Get_AsParameters( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(enum_2s_AsParameters));
+}
+
+void
+xref::Get_AsDataTypes( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(enum_2s_AsDataTypes));
+}
+
+} // namespace ifc_enum
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_enumvalue.cxx b/autodoc/source/ary/idl/i_enumvalue.cxx
new file mode 100644
index 000000000000..fadfe1ce6fdb
--- /dev/null
+++ b/autodoc/source/ary/idl/i_enumvalue.cxx
@@ -0,0 +1,119 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_enumvalue.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/ik_enumvalue.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+EnumValue::EnumValue( const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ const String & i_sInitValue )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nNameRoom(i_nNameRoom),
+ sValue(i_sInitValue)
+{
+}
+
+EnumValue::~EnumValue()
+{
+}
+
+void
+EnumValue::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+EnumValue::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+EnumValue::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+EnumValue::inq_NameRoom() const
+{
+ return nNameRoom;
+}
+
+Ce_id
+EnumValue::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+EnumValue::inq_SightLevel() const
+{
+ return sl_Member;
+}
+
+
+
+namespace ifc_enumvalue
+{
+
+inline const EnumValue &
+enumvalue_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == EnumValue::class_id );
+ return static_cast< const EnumValue& >(i_ce);
+}
+
+const String &
+attr::Value( const CodeEntity & i_ce )
+{
+ return enumvalue_cast(i_ce).sValue;
+}
+
+
+} // namespace ifc_enumvalue
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_exception.cxx b/autodoc/source/ary/idl/i_exception.cxx
new file mode 100644
index 000000000000..f25ae55ce66a
--- /dev/null
+++ b/autodoc/source/ary/idl/i_exception.cxx
@@ -0,0 +1,142 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/ik_exception.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+#include "i2s_calculator.hxx"
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+Exception::Exception( const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBase )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nBase(i_nBase),
+ aElements()
+{
+}
+
+Exception::~Exception()
+{
+}
+
+void
+Exception::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Exception::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Exception::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Exception::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+Exception::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Exception::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_exception
+{
+
+inline const Exception &
+exception_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Exception::class_id );
+ return static_cast< const Exception& >(i_ce);
+}
+
+Type_id
+attr::Base( const CodeEntity & i_ce )
+{
+ return exception_cast(i_ce).nBase;
+}
+
+void
+attr::Get_Elements( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>( exception_cast(i_ce).aElements );
+}
+
+
+void
+xref::Get_Derivations( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(exception_2s_Derivations));
+}
+
+void
+xref::Get_RaisingFunctions( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(exception_2s_RaisingFunctions));
+}
+
+
+} // namespace ifc_exception
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_function.cxx b/autodoc/source/ary/idl/i_function.cxx
new file mode 100644
index 000000000000..4d9375d3451e
--- /dev/null
+++ b/autodoc/source/ary/idl/i_function.cxx
@@ -0,0 +1,168 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_function.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+Function::Function( const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ Type_id i_nReturnType,
+ bool i_bOneWay )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nNameRoom(i_nNameRoom),
+ nReturnType(i_nReturnType),
+ aParameters(),
+ aExceptions(),
+ bOneWay(i_bOneWay),
+ bEllipse(false)
+{
+}
+
+Function::Function( const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nNameRoom(i_nNameRoom),
+ nReturnType(0),
+ aParameters(),
+ aExceptions(),
+ bOneWay(false),
+ bEllipse(false)
+{
+}
+
+Function::~Function()
+{
+}
+
+void
+Function::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Function::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Function::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Function::inq_NameRoom() const
+{
+ return nNameRoom;
+}
+
+Ce_id
+Function::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Function::inq_SightLevel() const
+{
+ return sl_Member;
+}
+
+
+namespace ifc_function
+{
+
+inline const Function &
+function_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Function::class_id );
+ return static_cast< const Function& >(i_ce);
+}
+
+Type_id
+attr::ReturnType( const CodeEntity & i_ce )
+{
+ return function_cast(i_ce).nReturnType;
+}
+
+bool
+attr::IsOneway( const CodeEntity & i_ce )
+{
+ return function_cast(i_ce).bOneWay;
+}
+
+bool
+attr::HasEllipse( const CodeEntity & i_ce )
+{
+ return function_cast(i_ce).bEllipse;
+}
+
+void
+attr::Get_Parameters( Dyn_StdConstIterator<ary::idl::Parameter> & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result
+ = new SCI_Vector<Parameter>( function_cast(i_ce).aParameters );
+}
+
+void
+attr::Get_Exceptions( Dyn_TypeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result
+ = new SCI_Vector<Type_id>( function_cast(i_ce).aExceptions );
+}
+
+
+
+
+
+} // namespace ifc_function
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_interface.cxx b/autodoc/source/ary/idl/i_interface.cxx
new file mode 100644
index 000000000000..455261e3e5ad
--- /dev/null
+++ b/autodoc/source/ary/idl/i_interface.cxx
@@ -0,0 +1,199 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_interface.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <sci_impl.hxx>
+#include "i2s_calculator.hxx"
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+class Interface_2s
+{
+};
+
+
+Interface::Interface( const String & i_sName,
+ Ce_id i_nOwner )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ aBases(),
+ aFunctions(),
+ aAttributes(),
+ p2s()
+{
+}
+
+Interface::~Interface()
+{
+ for ( RelationList::iterator it = aBases.begin();
+ it != aBases.end();
+ ++it )
+ {
+ delete (*it).Info();
+ }
+}
+
+void
+Interface::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Interface::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Interface::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Interface::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+Interface::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Interface::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_interface
+{
+
+inline const Interface &
+interface_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Interface::class_id );
+ return static_cast< const Interface& >(i_ce);
+}
+
+void
+attr::Get_Bases( Dyn_StdConstIterator<CommentedRelation> & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<CommentedRelation>(interface_cast(i_ce).aBases);
+}
+
+void
+attr::Get_Functions( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(interface_cast(i_ce).aFunctions);
+}
+
+void
+attr::Get_Attributes( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(interface_cast(i_ce).aAttributes);
+}
+
+void
+xref::Get_Derivations( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(interface_2s_Derivations));
+}
+
+void
+xref::Get_SynonymTypedefs( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(interface_2s_SynonymTypedefs));
+}
+
+void
+xref::Get_ExportingServices( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(interface_2s_ExportingServices));
+}
+
+void
+xref::Get_ExportingSingletons( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(interface_2s_ExportingSingletons));
+}
+
+void
+xref::Get_AsReturns( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(interface_2s_AsReturns));
+}
+
+void
+xref::Get_AsParameters( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(interface_2s_AsParameters));
+}
+
+void
+xref::Get_AsDataTypes( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(interface_2s_AsDataTypes));
+}
+
+
+
+
+} // namespace ifc_interface
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_module.cxx b/autodoc/source/ary/idl/i_module.cxx
new file mode 100644
index 000000000000..a8459b3ebfdd
--- /dev/null
+++ b/autodoc/source/ary/idl/i_module.cxx
@@ -0,0 +1,207 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/ik_module.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/i_interface.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/i_typedef.hxx>
+#include <ary/idl/i_constgroup.hxx>
+#include <ary/idl/i_singleton.hxx>
+#include <ary/idl/i_siservice.hxx>
+#include <ary/idl/i_sisingleton.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <nametreenode.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+Module::Module()
+ : pImpl( new NameTreeNode<Ce_id> )
+{
+}
+
+Module::Module( const String & i_sName,
+ const Module & i_rParent )
+ : pImpl( new NameTreeNode<Ce_id>( i_sName,
+ *i_rParent.pImpl,
+ i_rParent.CeId() ) )
+{
+}
+
+Module::~Module()
+{
+}
+
+void
+Module::Add_Name( const String & i_sName,
+ Ce_id i_nCodeEntity )
+{
+ pImpl->Add_Name(i_sName, i_nCodeEntity);
+}
+
+Ce_id
+Module::Search_Name( const String & i_sName ) const
+{
+ return pImpl->Search_Name(i_sName);
+}
+
+void
+Module::Get_Names( Dyn_StdConstIterator<Ce_id> & o_rResult ) const
+{
+ pImpl->Get_Names( o_rResult );
+}
+
+void
+Module::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Module::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Module::inq_LocalName() const
+{
+ return pImpl->Name();
+}
+
+Ce_id
+Module::inq_NameRoom() const
+{
+ return pImpl->Parent();
+}
+
+Ce_id
+Module::inq_Owner() const
+{
+ return pImpl->Parent();
+}
+
+E_SightLevel
+Module::inq_SightLevel() const
+{
+ return sl_Module;
+}
+
+
+namespace ifc_module
+{
+
+inline const Module &
+module_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Module::class_id );
+ return static_cast< const Module& >(i_ce);
+}
+
+typedef NameTreeNode<Ce_id>::Map_LocalNames NameMap;
+
+void
+attr::Get_AllChildrenSeparated( std::vector< const CodeEntity* > & o_nestedModules,
+ std::vector< const CodeEntity* > & o_services,
+ std::vector< const CodeEntity* > & o_interfaces,
+ std::vector< const CodeEntity* > & o_structs,
+ std::vector< const CodeEntity* > & o_exceptions,
+ std::vector< const CodeEntity* > & o_enums,
+ std::vector< const CodeEntity* > & o_typedefs,
+ std::vector< const CodeEntity* > & o_constantGroups,
+ std::vector< const CodeEntity* > & o_singletons,
+ const CePilot & i_pilot,
+ const CodeEntity & i_ce )
+{
+ const CodeEntity *
+ pCe = 0;
+ NameMap::const_iterator
+ itEnd = module_cast(i_ce).pImpl->LocalNames().end();
+ for ( NameMap::const_iterator
+ it = module_cast(i_ce).pImpl->LocalNames().begin();
+ it != itEnd;
+ ++it )
+ {
+ pCe = &i_pilot.Find_Ce( (*it).second );
+ switch (pCe->AryClass())
+ {
+ case Module::class_id:
+ o_nestedModules.push_back(pCe);
+ break;
+ case SglIfcService::class_id:
+ case Service::class_id:
+ o_services.push_back(pCe);
+ break;
+ case Interface::class_id:
+ o_interfaces.push_back(pCe);
+ break;
+ case Struct::class_id:
+ o_structs.push_back(pCe);
+ break;
+ case Exception::class_id:
+ o_exceptions.push_back(pCe);
+ break;
+ case Enum::class_id:
+ o_enums.push_back(pCe);
+ break;
+ case Typedef::class_id:
+ o_typedefs.push_back(pCe);
+ break;
+ case ConstantsGroup::class_id:
+ o_constantGroups.push_back(pCe);
+ break;
+ case SglIfcSingleton::class_id:
+ case Singleton::class_id:
+ o_singletons.push_back(pCe);
+ break;
+ }
+ } // end for
+}
+
+
+} // namespace ifc_module
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_namelookup.cxx b/autodoc/source/ary/idl/i_namelookup.cxx
new file mode 100644
index 000000000000..d9fe29b4e2f0
--- /dev/null
+++ b/autodoc/source/ary/idl/i_namelookup.cxx
@@ -0,0 +1,65 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_namelookup.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <sci_impl.hxx>
+
+namespace ary
+{
+namespace idl
+{
+
+NameLookup::NameLookup()
+ : aNames()
+{
+}
+
+NameLookup::~NameLookup()
+{
+}
+
+void
+NameLookup::Add_Name( const String & i_name,
+ Ce_id i_id,
+ ClassId i_class,
+ Ce_id i_owner )
+{
+ aNames.insert( std::pair< const String, NameProperties>(
+ i_name,
+ NameProperties( i_id,
+ i_class,
+ i_owner )));
+}
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_nnfinder.hxx b/autodoc/source/ary/idl/i_nnfinder.hxx
new file mode 100644
index 000000000000..242372a0bf70
--- /dev/null
+++ b/autodoc/source/ary/idl/i_nnfinder.hxx
@@ -0,0 +1,121 @@
+/* -*- 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 ARY_IDL_NNFINDER_HXX
+#define ARY_IDL_NNFINDER_HXX
+
+// USED SERVICES
+#include "is_ce.hxx"
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** Gives context info for tree search functions.
+
+ @collab ->ary::Search_SubTree<>()
+ @collab ->ary::Search_SubTree_UpTillRoot<>()
+*/
+class Find_ModuleNode
+{
+ public:
+ typedef Ce_id id_type;
+ typedef StringVector::const_iterator name_iterator;
+
+ // LIFECYCLE
+ Find_ModuleNode(
+ const Ce_Storage & i_rStorage,
+ name_iterator it_begin,
+ name_iterator it_end,
+ const String & i_sName )
+ : rStorage(i_rStorage),
+ itBegin(it_begin),
+ itEnd(it_end),
+ sName2Search(i_sName) { if (itBegin != itEnd ? (*itBegin).empty() : false) ++itBegin; }
+ // OPERATIONS
+ const Module * operator()(
+ id_type i_id ) const
+ { return i_id.IsValid()
+ ? & ary_cast<Module>(rStorage[i_id])
+ : 0; }
+
+ name_iterator Begin() const { return itBegin; }
+ name_iterator End() const { return itEnd; }
+ const String & Name2Search() const { return sName2Search; }
+
+ private:
+ // DATA
+ const Ce_Storage & rStorage;
+ name_iterator itBegin;
+ name_iterator itEnd;
+ String sName2Search;
+};
+
+
+
+
+class Types_forSetCe_Id
+{
+ public:
+ typedef Ce_id element_type;
+ typedef Ce_Storage find_type;
+
+ // KORR_FUTURE: Check, if this sorting is right or the ary standard
+ // sorting should be used.
+ struct sort_type
+ {
+ sort_type(
+ const find_type & i_rFinder )
+ : rFinder(i_rFinder) {}
+ bool operator()(
+ const element_type &
+ i_r1,
+ const element_type &
+ i_r2 ) const
+ {
+ return rFinder[i_r1].LocalName()
+ < rFinder[i_r2].LocalName();
+ }
+
+ private:
+ const find_type & rFinder;
+
+ };
+};
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_param.cxx b/autodoc/source/ary/idl/i_param.cxx
new file mode 100644
index 000000000000..106a5427db7b
--- /dev/null
+++ b/autodoc/source/ary/idl/i_param.cxx
@@ -0,0 +1,60 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_param.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+Parameter::Parameter( const String & i_sName,
+ Type_id i_nType,
+ E_ParameterDirection i_eDirection )
+ : sName(i_sName),
+ nType(i_nType),
+ eDirection(i_eDirection)
+{
+}
+
+Parameter::~Parameter()
+{
+}
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_property.cxx b/autodoc/source/ary/idl/i_property.cxx
new file mode 100644
index 000000000000..9b13870e98f3
--- /dev/null
+++ b/autodoc/source/ary/idl/i_property.cxx
@@ -0,0 +1,174 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_property.hxx>
+#include <ary/idl/ik_property.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+Property::Property( const String & i_sName,
+ Ce_id i_nService,
+ Ce_id i_nModule,
+ Type_id i_nType,
+ Stereotypes i_stereotypes )
+ : sName(i_sName),
+ nOwner(i_nService),
+ nNameRoom(i_nModule),
+ nType(i_nType),
+ aStereotypes(i_stereotypes)
+{
+}
+
+Property::~Property()
+{
+}
+
+
+void
+Property::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Property::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Property::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Property::inq_NameRoom() const
+{
+ return nNameRoom;
+}
+
+Ce_id
+Property::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Property::inq_SightLevel() const
+{
+ return sl_Member;
+}
+
+namespace ifc_property
+{
+
+inline const Property &
+property_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Property::class_id );
+ return static_cast< const Property& >(i_ce);
+}
+
+bool
+attr::HasAnyStereotype( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.HasAny();
+}
+
+bool
+attr::IsReadOnly( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsReadOnly();
+}
+
+bool
+attr::IsBound( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsBound();
+}
+
+bool
+attr::IsConstrained( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsConstrained();
+}
+
+bool
+attr::IsMayBeAmbiguous( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsMayBeAmbiguous();
+}
+
+bool
+attr::IsMayBeDefault( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsMayBeDefault();
+}
+
+bool
+attr::IsMayBeVoid( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsMayBeVoid();
+}
+
+bool
+attr::IsRemovable( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsRemovable();
+}
+
+bool
+attr::IsTransient( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).aStereotypes.IsTransient();
+}
+
+Type_id
+attr::Type( const CodeEntity & i_ce )
+{
+ return property_cast(i_ce).nType;
+}
+
+} // namespace ifc_property
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_reposypart.cxx b/autodoc/source/ary/idl/i_reposypart.cxx
new file mode 100644
index 000000000000..62bb4fee6cf7
--- /dev/null
+++ b/autodoc/source/ary/idl/i_reposypart.cxx
@@ -0,0 +1,122 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "i_reposypart.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_namelookup.hxx>
+#include <idl_internalgate.hxx>
+#include "ia_ce.hxx"
+#include "ia_type.hxx"
+#include "i2s_calculator.hxx"
+#include "is_ce.hxx"
+#include "is_type.hxx"
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+DYN InternalGate &
+InternalGate::Create_Partition_(RepositoryCenter & i_center)
+{
+ return *new RepositoryPartition(i_center);
+}
+
+
+
+RepositoryPartition::RepositoryPartition( RepositoryCenter & i_repository )
+ : pCenter(&i_repository),
+ pCes(0),
+ pTypes(0),
+ pNamesDictionary(new NameLookup)
+{
+ pTypes = new TypeAdmin;
+ pCes = new CeAdmin(*pNamesDictionary, *pTypes);
+}
+
+RepositoryPartition::~RepositoryPartition()
+{
+}
+
+void
+RepositoryPartition::Calculate_AllSecondaryInformation(
+ const String & i_devman_reffilepath )
+{
+ // KORR_FUTURE
+ // Forward the options from here.
+
+ SecondariesCalculator
+ secalc(*pCes,*pTypes);
+
+ secalc.CheckAllInterfaceBases();
+ secalc.Connect_Types2Ces();
+ secalc.Gather_CrossReferences();
+
+ if ( NOT i_devman_reffilepath.empty() )
+ {
+ secalc.Make_Links2DeveloperManual(i_devman_reffilepath);
+ }
+}
+
+const CePilot &
+RepositoryPartition::Ces() const
+{
+ return *pCes;
+}
+
+const TypePilot &
+RepositoryPartition::Types() const
+{
+ return *pTypes;
+}
+
+CePilot &
+RepositoryPartition::Ces()
+{
+ return *pCes;
+}
+
+TypePilot &
+RepositoryPartition::Types()
+{
+ return *pTypes;
+}
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_reposypart.hxx b/autodoc/source/ary/idl/i_reposypart.hxx
new file mode 100644
index 000000000000..417d970814bf
--- /dev/null
+++ b/autodoc/source/ary/idl/i_reposypart.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 ARY_IDL_I_REPOSYPART_HXX
+#define ARY_IDL_I_REPOSYPART_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <idl_internalgate.hxx>
+ // OTHER
+
+
+namespace ary
+{
+namespace idl
+{
+ class CeAdmin;
+ class TypeAdmin;
+ class NameLookup;
+}
+}
+
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+
+/** The idl part of the Autodoc repository.
+*/
+class RepositoryPartition : public InternalGate
+{
+ public:
+ // LIFECYCLE
+ RepositoryPartition(
+ RepositoryCenter & i_repository );
+ ~RepositoryPartition();
+ // INHERITED
+ // Interface Gate:
+ virtual void Calculate_AllSecondaryInformation(
+ const String & i_devman_reffilepath );
+// const ::autodoc::Options &
+// i_options );
+ virtual const CePilot &
+ Ces() const;
+ virtual const TypePilot &
+ Types() const;
+ virtual CePilot & Ces();
+ virtual TypePilot & Types();
+
+ private:
+ // DATA
+ RepositoryCenter * pCenter;
+
+ Dyn<CeAdmin> pCes;
+ Dyn<TypeAdmin> pTypes;
+ Dyn<NameLookup> pNamesDictionary;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_service.cxx b/autodoc/source/ary/idl/i_service.cxx
new file mode 100644
index 000000000000..0aa16b9e3280
--- /dev/null
+++ b/autodoc/source/ary/idl/i_service.cxx
@@ -0,0 +1,174 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_service.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/ik_service.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <sci_impl.hxx>
+#include "i2s_calculator.hxx"
+
+
+namespace ary
+{
+namespace idl
+{
+
+Service::Service( const String & i_sName,
+ Ce_id i_nOwner )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ aIncludedServices(),
+ aSupportedInterfaces(),
+ aProperties()
+{
+}
+
+Service::~Service()
+{
+ for ( RelationList::iterator it = aIncludedServices.begin();
+ it != aIncludedServices.end();
+ ++it )
+ {
+ delete (*it).Info();
+ }
+
+ for ( RelationList::iterator it = aSupportedInterfaces.begin();
+ it != aSupportedInterfaces.end();
+ ++it )
+ {
+ delete (*it).Info();
+ }
+}
+
+void
+Service::Get_SupportedInterfaces( Dyn_StdConstIterator<CommentedRelation> & o_rResult ) const
+{
+ o_rResult = new SCI_Vector<CommentedRelation>(aSupportedInterfaces);
+}
+
+void
+Service::Get_IncludedServices( Dyn_StdConstIterator<CommentedRelation> & o_rResult ) const
+{
+ o_rResult = new SCI_Vector<CommentedRelation>(aIncludedServices);
+}
+
+void
+Service::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Service::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Service::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Service::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+Service::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Service::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_service
+{
+
+inline const Service &
+service_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Service::class_id );
+ return static_cast< const Service& >(i_ce);
+}
+
+void
+attr::Get_IncludedServices( Dyn_StdConstIterator<CommentedRelation> & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<CommentedRelation>( service_cast(i_ce).aIncludedServices );
+}
+
+void
+attr::Get_ExportedInterfaces( Dyn_StdConstIterator<CommentedRelation> & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<CommentedRelation>( service_cast(i_ce).aSupportedInterfaces );
+}
+
+void
+attr::Get_Properties( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>( service_cast(i_ce).aProperties );
+}
+
+void
+xref::Get_IncludingServices( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(service_2s_IncludingServices));
+}
+
+void
+xref::Get_InstantiatingSingletons( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(service_2s_InstantiatingSingletons));
+}
+
+
+} // namespace ifc_service
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_singleton.cxx b/autodoc/source/ary/idl/i_singleton.cxx
new file mode 100644
index 000000000000..508572bb2713
--- /dev/null
+++ b/autodoc/source/ary/idl/i_singleton.cxx
@@ -0,0 +1,115 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_singleton.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/ik_singleton.hxx>
+#include <sci_impl.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+Singleton::Singleton( const String & i_sName,
+ Ce_id i_nOwner )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nService()
+{
+}
+
+Singleton::~Singleton()
+{
+}
+
+void
+Singleton::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Singleton::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Singleton::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Singleton::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+Singleton::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Singleton::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_singleton
+{
+
+inline const Singleton &
+singleton_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Singleton::class_id );
+ return static_cast< const Singleton& >(i_ce);
+}
+
+Type_id
+attr::AssociatedService( const CodeEntity & i_ce )
+{
+ return singleton_cast(i_ce).nService;
+}
+
+} // namespace ifc_singleton
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_siservice.cxx b/autodoc/source/ary/idl/i_siservice.cxx
new file mode 100644
index 000000000000..238e605ce680
--- /dev/null
+++ b/autodoc/source/ary/idl/i_siservice.cxx
@@ -0,0 +1,124 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_siservice.hxx>
+#include <ary/idl/ik_siservice.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+SglIfcService::SglIfcService( const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBaseInterface )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nBaseInterface(i_nBaseInterface),
+ aConstructors()
+{
+}
+
+SglIfcService::~SglIfcService()
+{
+}
+
+void
+SglIfcService::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+SglIfcService::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+SglIfcService::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+SglIfcService::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+SglIfcService::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+SglIfcService::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_sglifcservice
+{
+
+inline const SglIfcService &
+sglifcservice_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == SglIfcService::class_id );
+ return static_cast< const SglIfcService& >(i_ce);
+}
+
+Type_id
+attr::BaseInterface( const CodeEntity & i_ce )
+{
+ return sglifcservice_cast(i_ce).nBaseInterface;
+}
+
+void
+attr::Get_Constructors( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>( sglifcservice_cast(i_ce).aConstructors );
+}
+
+} // namespace ifc_sglifcservice
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_sisingleton.cxx b/autodoc/source/ary/idl/i_sisingleton.cxx
new file mode 100644
index 000000000000..1cc2b97cd75f
--- /dev/null
+++ b/autodoc/source/ary/idl/i_sisingleton.cxx
@@ -0,0 +1,116 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_sisingleton.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/ik_sisingleton.hxx>
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+SglIfcSingleton::SglIfcSingleton( const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBaseInterface )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nBaseInterface(i_nBaseInterface)
+{
+}
+
+SglIfcSingleton::~SglIfcSingleton()
+{
+}
+
+void
+SglIfcSingleton::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+SglIfcSingleton::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+SglIfcSingleton::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+SglIfcSingleton::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+SglIfcSingleton::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+SglIfcSingleton::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+namespace ifc_sglifcsingleton
+{
+
+inline const SglIfcSingleton &
+sglifcsingleton_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == SglIfcSingleton::class_id );
+ return static_cast< const SglIfcSingleton& >(i_ce);
+}
+
+Type_id
+attr::BaseInterface( const CodeEntity & i_ce )
+{
+ return sglifcsingleton_cast(i_ce).nBaseInterface;
+}
+
+
+} // namespace ifc_sglifcsingleton
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_struct.cxx b/autodoc/source/ary/idl/i_struct.cxx
new file mode 100644
index 000000000000..ff691c211a89
--- /dev/null
+++ b/autodoc/source/ary/idl/i_struct.cxx
@@ -0,0 +1,166 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/ik_struct.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+#include "i2s_calculator.hxx"
+
+
+namespace ary
+{
+namespace idl
+{
+
+Struct::Struct( const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nBase,
+ const String & i_sTemplateParameter,
+ Type_id i_nTemplateParameterType )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nBase(i_nBase),
+ sTemplateParameter(i_sTemplateParameter),
+ nTemplateParameterType(i_nTemplateParameterType),
+ aElements()
+{
+}
+
+Struct::~Struct()
+{
+}
+
+void
+Struct::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Struct::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Struct::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Struct::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+Struct::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Struct::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_struct
+{
+
+inline const Struct &
+struct_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Struct::class_id );
+ return static_cast< const Struct& >(i_ce);
+}
+
+Type_id
+attr::Base( const CodeEntity & i_ce )
+{
+ return struct_cast(i_ce).nBase;
+}
+
+void
+attr::Get_Elements( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>( struct_cast(i_ce).aElements );
+}
+
+
+void
+xref::Get_Derivations( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(struct_2s_Derivations));
+}
+
+void
+xref::Get_SynonymTypedefs( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(struct_2s_SynonymTypedefs));
+}
+
+void
+xref::Get_AsReturns( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(struct_2s_AsReturns));
+}
+
+void
+xref::Get_AsParameters( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(struct_2s_AsParameters));
+}
+
+void
+xref::Get_AsDataTypes( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(struct_2s_AsDataTypes));
+}
+
+} // namespace ifc_struct
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_structelem.cxx b/autodoc/source/ary/idl/i_structelem.cxx
new file mode 100644
index 000000000000..79ffe4189ac0
--- /dev/null
+++ b/autodoc/source/ary/idl/i_structelem.cxx
@@ -0,0 +1,120 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_structelem.hxx>
+#include <ary/idl/ik_structelem.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+StructElement::StructElement( const String & i_sName,
+ Ce_id i_nOwner,
+ Ce_id i_nNameRoom,
+ Type_id i_nType )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nNameRoom(i_nNameRoom),
+ nType(i_nType)
+{
+}
+
+StructElement::~StructElement()
+{
+}
+
+void
+StructElement::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+StructElement::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+StructElement::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+StructElement::inq_NameRoom() const
+{
+ return nNameRoom;
+}
+
+Ce_id
+StructElement::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+StructElement::inq_SightLevel() const
+{
+ return sl_Member;
+}
+
+
+namespace ifc_structelement
+{
+
+inline const StructElement &
+selem_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == StructElement::class_id );
+ return static_cast< const StructElement& >(i_ce);
+}
+
+Type_id
+attr::Type( const CodeEntity & i_ce )
+{
+ return selem_cast(i_ce).nType;
+}
+
+} // namespace ifc_structelement
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_traits.cxx b/autodoc/source/ary/idl/i_traits.cxx
new file mode 100644
index 000000000000..4dc9c2b2c750
--- /dev/null
+++ b/autodoc/source/ary/idl/i_traits.cxx
@@ -0,0 +1,75 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_traits.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/namesort.hxx>
+#include "is_ce.hxx"
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+
+//******************** Ce_Traits ********************//
+Ce_Traits::entity_base_type &
+Ce_Traits::EntityOf_(id_type i_id)
+{
+ csv_assert(i_id.IsValid());
+ return Ce_Storage::Instance_()[i_id];
+}
+
+//******************** Ce_Compare ********************//
+const Ce_Compare::key_type &
+Ce_Compare::KeyOf_(const entity_base_type & i_entity)
+{
+ return i_entity.LocalName();
+}
+
+bool
+Ce_Compare::Lesser_( const key_type & i_1,
+ const key_type & i_2 )
+{
+ static ::ary::LesserName less_;
+ return less_(i_1,i_2);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/i_typedef.cxx b/autodoc/source/ary/idl/i_typedef.cxx
new file mode 100644
index 000000000000..ded4ada0bede
--- /dev/null
+++ b/autodoc/source/ary/idl/i_typedef.cxx
@@ -0,0 +1,148 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/idl/i_typedef.hxx>
+#include <ary/idl/ik_typedef.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <sci_impl.hxx>
+#include "i2s_calculator.hxx"
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+Typedef::Typedef( const String & i_sName,
+ Ce_id i_nOwner,
+ Type_id i_nDefiningType )
+ : sName(i_sName),
+ nOwner(i_nOwner),
+ nDefiningType(i_nDefiningType)
+{
+}
+
+Typedef::~Typedef()
+{
+}
+
+void
+Typedef::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+Typedef::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Typedef::inq_LocalName() const
+{
+ return sName;
+}
+
+Ce_id
+Typedef::inq_NameRoom() const
+{
+ return nOwner;
+}
+
+Ce_id
+Typedef::inq_Owner() const
+{
+ return nOwner;
+}
+
+E_SightLevel
+Typedef::inq_SightLevel() const
+{
+ return sl_File;
+}
+
+
+namespace ifc_typedef
+{
+
+inline const Typedef &
+typedef_cast( const CodeEntity & i_ce )
+{
+ csv_assert( i_ce.AryClass() == Typedef::class_id );
+ return static_cast< const Typedef& >(i_ce);
+}
+
+Type_id
+attr::DefiningType( const CodeEntity & i_ce )
+{
+ return typedef_cast(i_ce).nDefiningType;
+}
+
+
+void
+xref::Get_SynonymTypedefs( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(typedef_2s_SynonymTypedefs));
+}
+
+void
+xref::Get_AsReturns( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(typedef_2s_AsReturns));
+}
+
+void
+xref::Get_AsParameters( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(typedef_2s_AsParameters));
+}
+
+void
+xref::Get_AsDataTypes( Dyn_CeIterator & o_result,
+ const CodeEntity & i_ce )
+{
+ o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(typedef_2s_AsDataTypes));
+}
+
+} // namespace ifc_typedef
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/ia_ce.cxx b/autodoc/source/ary/idl/ia_ce.cxx
new file mode 100644
index 000000000000..5e66838f1ba5
--- /dev/null
+++ b/autodoc/source/ary/idl/ia_ce.cxx
@@ -0,0 +1,584 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "ia_ce.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <algorithm>
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/idl/i_attribute.hxx>
+#include <ary/idl/i_constant.hxx>
+#include <ary/idl/i_constgroup.hxx>
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/i_enumvalue.hxx>
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/i_function.hxx>
+#include <ary/idl/i_interface.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/i_namelookup.hxx>
+#include <ary/idl/i_property.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/i_singleton.hxx>
+#include <ary/idl/i_siservice.hxx>
+#include <ary/idl/i_sisingleton.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/i_structelem.hxx>
+#include <ary/idl/i_traits.hxx>
+#include <ary/idl/i_typedef.hxx>
+#include <idsort.hxx>
+#include "ia_type.hxx"
+#include "is_ce.hxx"
+#include "it_tplparam.hxx"
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+inline Module &
+CeAdmin::lhf_Access_Module( Ce_id i_nId )
+ { return ary_cast<Module>(Storage()[i_nId]); }
+
+inline void
+CeAdmin::lhf_Put2Storage_and_AssignId( CodeEntity & pass_io_rCe )
+ { // This also assigns an ID to pass_io_rCe:
+ Storage().Store_Entity(pass_io_rCe);
+ my_NameDictionary().Add_Name( pass_io_rCe.LocalName(),
+ pass_io_rCe.CeId(),
+ pass_io_rCe.AryClass(),
+ pass_io_rCe.Owner() );
+ }
+
+inline void
+CeAdmin::lhf_Store_NewEntity( DYN CodeEntity & pass_io_rCe,
+ Module & i_rOwner )
+{
+ lhf_Put2Storage_and_AssignId(pass_io_rCe);
+ i_rOwner.Add_Name(pass_io_rCe.LocalName(), pass_io_rCe.CeId());
+}
+
+inline void
+CeAdmin::lhf_Store_NewEntity( DYN CodeEntity & pass_io_rCe,
+ Ce_id i_nOwnerModule )
+{
+ lhf_Store_NewEntity(pass_io_rCe, lhf_Access_Module(i_nOwnerModule));
+}
+
+
+
+CeAdmin::CeAdmin( NameLookup & io_rNameDictionary,
+ TypeAdmin & io_rTypePilot )
+ : pStorage(new Ce_Storage),
+ pGlobalNamespace(0),
+ pNameDictionary(&io_rNameDictionary),
+ pTypePilot(&io_rTypePilot)
+{
+ Storage().Set_Reserved(
+ predefined::ce_GlobalNamespace,
+ *new Module );
+ pGlobalNamespace = &lhf_Access_Module(Ce_id(predefined::ce_GlobalNamespace));
+}
+
+CeAdmin::~CeAdmin()
+{
+}
+
+
+
+Module &
+CeAdmin::CheckIn_Module( Ce_id i_nParentId,
+ const String & i_sName )
+{
+ Module & rOwner = lhf_Access_Module(i_nParentId);
+ Ce_id nId = rOwner.Search_Name(i_sName);
+ if (nId.IsValid())
+ {
+ return lhf_Access_Module(nId);
+ }
+
+ Module & ret = *new Module( i_sName,
+ rOwner );
+ lhf_Store_NewEntity(ret, rOwner);
+ return ret;
+}
+
+Service &
+CeAdmin::Store_Service( Ce_id i_nOwner,
+ const String & i_sName )
+{
+ Service & ret = *new Service( i_sName,
+ i_nOwner );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+SglIfcService &
+CeAdmin::Store_SglIfcService( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBaseInterface )
+{
+ SglIfcService &
+ ret = *new SglIfcService( i_sName,
+ i_nOwner,
+ i_nBaseInterface );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+Interface &
+CeAdmin::Store_Interface( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase )
+{
+ Interface & ret = *new Interface( i_sName,
+ i_nOwner );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ if (i_nBase.IsValid())
+ ret.Add_Base(i_nBase, 0);
+ return ret;
+}
+
+Struct &
+CeAdmin::Store_Struct( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase,
+ const String & i_sTemplateParam )
+{
+ if (NOT i_sTemplateParam.empty())
+ {
+ return lhf_Store_TplStruct( i_nOwner,
+ i_sName,
+ i_nBase,
+ i_sTemplateParam );
+ }
+
+ Struct & ret = *new Struct( i_sName,
+ i_nOwner,
+ i_nBase,
+ String::Null_(),
+ Type_id::Null_() );
+ lhf_Store_NewEntity(ret, i_nOwner);
+
+ return ret;
+}
+
+Exception &
+CeAdmin::Store_Exception( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase )
+{
+ Exception & ret = *new Exception( i_sName,
+ i_nOwner,
+ i_nBase );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+Enum &
+CeAdmin::Store_Enum( Ce_id i_nOwner,
+ const String & i_sName )
+{
+ Enum & ret = *new Enum( i_sName,
+ i_nOwner );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+Typedef &
+CeAdmin::Store_Typedef( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nDefiningType )
+{
+ Typedef & ret = *new Typedef( i_sName,
+ i_nOwner,
+ i_nDefiningType );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+
+ConstantsGroup &
+CeAdmin::Store_ConstantsGroup( Ce_id i_nOwner,
+ const String & i_sName )
+{
+ ConstantsGroup & ret = *new ConstantsGroup( i_sName,
+ i_nOwner );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+Singleton &
+CeAdmin::Store_Singleton( Ce_id i_nOwner,
+ const String & i_sName )
+{
+ Singleton & ret = *new Singleton( i_sName,
+ i_nOwner );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+SglIfcSingleton &
+CeAdmin::Store_SglIfcSingleton( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBaseInterface )
+{
+ SglIfcSingleton &
+ ret = *new SglIfcSingleton( i_sName,
+ i_nOwner,
+ i_nBaseInterface );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ return ret;
+}
+
+Constant &
+CeAdmin::Store_Constant( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ const String & i_sValue )
+{
+ ConstantsGroup &
+ rOwner = ary_cast<ConstantsGroup>(Storage()[i_nOwner]);
+ Constant & ret = *new Constant( i_sName,
+ i_nOwner,
+ rOwner.NameRoom(),
+ i_nType,
+ i_sValue );
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Constant(ret.CeId());
+ return ret;
+}
+
+Property &
+CeAdmin::Store_Property( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ Property::Stereotypes i_stereotypes )
+{
+ Service &
+ rOwner = ary_cast<Service>(Storage()[i_nOwner]);
+ Property & ret = *new Property( i_sName,
+ i_nOwner,
+ rOwner.NameRoom(),
+ i_nType,
+ i_stereotypes );
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Property(ret.CeId());
+ return ret;
+}
+
+Function &
+CeAdmin::Store_Function( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nReturnType,
+ bool i_bOneWay )
+{
+ Interface &
+ rOwner = ary_cast<Interface>(Storage()[i_nOwner]);
+ Function & ret = *new Function( i_sName,
+ i_nOwner,
+ rOwner.NameRoom(),
+ i_nReturnType,
+ i_bOneWay);
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Function(ret.CeId());
+ return ret;
+}
+
+Function &
+CeAdmin::Store_ServiceConstructor( Ce_id i_nOwner,
+ const String & i_sName )
+{
+ SglIfcService &
+ rOwner = ary_cast<SglIfcService>(Storage()[i_nOwner]);
+ Function & ret = *new Function( i_sName,
+ i_nOwner,
+ rOwner.NameRoom() );
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Constructor(ret.CeId());
+ return ret;
+}
+
+StructElement &
+CeAdmin::Store_StructMember( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType )
+{
+ Struct &
+ rOwner = ary_cast<Struct>(Storage()[i_nOwner]);
+ StructElement & ret = *new StructElement( i_sName,
+ i_nOwner,
+ rOwner.NameRoom(),
+ i_nType );
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Member(ret.CeId());
+ return ret;
+}
+
+StructElement &
+CeAdmin::Store_ExceptionMember( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType )
+{
+ Exception &
+ rOwner = ary_cast<Exception>(Storage()[i_nOwner]);
+ StructElement & ret = *new StructElement( i_sName,
+ i_nOwner,
+ rOwner.NameRoom(),
+ i_nType );
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Member(ret.CeId());
+ return ret;
+}
+
+EnumValue &
+CeAdmin::Store_EnumValue( Ce_id i_nOwner,
+ const String & i_sName,
+ const String & i_sValue )
+{
+ Enum &
+ rOwner = ary_cast<Enum>(Storage()[i_nOwner]);
+ EnumValue & ret = *new EnumValue( i_sName,
+ i_nOwner,
+ rOwner.NameRoom(),
+ i_sValue );
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Value(ret.CeId());
+ return ret;
+}
+
+Attribute &
+CeAdmin::Store_Attribute( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ bool i_bReadOnly,
+ bool i_bBound )
+{
+ Interface &
+ rOwner = ary_cast<Interface>(Storage()[i_nOwner]);
+
+ Attribute & ret = *new Attribute ( i_sName,
+ i_nOwner,
+ rOwner.NameRoom(),
+ i_nType,
+ i_bReadOnly,
+ i_bBound );
+ lhf_Put2Storage_and_AssignId(ret);
+ rOwner.Add_Attribute(ret.CeId());
+ return ret;
+}
+
+const Module &
+CeAdmin::GlobalNamespace() const
+{
+ csv_assert(pGlobalNamespace);
+ return *pGlobalNamespace;
+}
+
+const CodeEntity &
+CeAdmin::Find_Ce( Ce_id i_nId ) const
+{
+ return Storage()[i_nId];
+
+}
+
+const Module &
+CeAdmin::Find_Module( Ce_id i_nId ) const
+{
+ return ary_cast<Module>(Storage()[i_nId]);
+}
+
+const Module *
+CeAdmin::Search_Module( Ce_id i_nId ) const
+{
+ if (NOT i_nId.IsValid())
+ return 0;
+ return ary_cast<Module>( & Storage()[i_nId] );
+}
+
+const Function &
+CeAdmin::Find_Function( Ce_id i_nId ) const
+{
+ return ary_cast<Function>(Storage()[i_nId]);
+}
+
+const Property &
+CeAdmin::Find_Property( Ce_id i_nId ) const
+{
+ return ary_cast<Property>(Storage()[i_nId]);
+}
+
+const EnumValue &
+CeAdmin::Find_EnumValue( Ce_id i_nId ) const
+{
+ return ary_cast<EnumValue>(Storage()[i_nId]);
+}
+
+const Constant &
+CeAdmin::Find_Constant( Ce_id i_nId ) const
+{
+ return ary_cast<Constant>(Storage()[i_nId]);
+}
+
+const StructElement &
+CeAdmin::Find_StructElement( Ce_id i_nId ) const
+{
+ return ary_cast<StructElement>(Storage()[i_nId]);
+}
+
+void
+CeAdmin::Get_Text( StringVector & o_module,
+ String & o_ce,
+ String & o_member,
+ const CodeEntity & i_ce ) const
+{
+ const CodeEntity * pCe = &i_ce;
+ csv::erase_container(o_module);
+ o_ce.clear();
+ o_member.clear();
+
+ switch ( pCe->SightLevel() )
+ {
+ // Here are intentionally no breaks!
+ case sl_Member:
+ if ( is_type<Function>(*pCe) )
+ o_member = StreamLock(200)()
+ << pCe->LocalName()
+ << "()"
+ << c_str;
+ else
+ o_member = pCe->LocalName();
+ pCe = & Storage()[pCe->Owner()];
+ case sl_File:
+ o_ce = pCe->LocalName();
+ pCe = & Storage()[pCe->NameRoom()];
+ case sl_Module:
+ get_ModuleText(o_module,*pCe);
+ break;
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+const NameLookup &
+CeAdmin::NameDictionary() const
+{
+ return *pNameDictionary;
+}
+
+
+void
+CeAdmin::Get_AlphabeticalIndex( std::vector<Ce_id> & o_rResult,
+ alphabetical_index::E_Letter i_cLetter ) const
+{
+ const int C_nLowerUpperDiff = 'a'-'A';
+
+ // Establishing filter:
+ UINT8 filter[256];
+
+ UINT8 nLetter = static_cast<UINT8>(i_cLetter);
+ memset(filter, 0, 256);
+ filter[nLetter] = 1;
+ if ( i_cLetter != alphabetical_index::non_alpha )
+ filter[nLetter - C_nLowerUpperDiff] = 1;
+
+ // Gather entities which start with i_cLetter:
+ o_rResult.reserve(1000);
+ idl::Ce_Storage::c_iter
+ itEnd = Storage().End();
+ for ( idl::Ce_Storage::c_iter it = Storage().BeginUnreserved();
+ it != itEnd;
+ ++it )
+ {
+ if ( filter[ static_cast<UINT8>(*(*it).LocalName().c_str()) ] == 1 )
+ o_rResult.push_back( (*it).CeId() );
+ }
+
+ std::sort( o_rResult.begin(),
+ o_rResult.end(),
+ IdSorter<Ce_Compare>() );
+}
+
+
+Module &
+CeAdmin::GlobalNamespace()
+{
+ csv_assert(pGlobalNamespace);
+ return *pGlobalNamespace;
+}
+
+CodeEntity &
+CeAdmin::Find_Ce( Ce_id i_nId )
+{
+ return Storage()[i_nId];
+}
+
+void
+CeAdmin::get_ModuleText( StringVector & o_module,
+ const CodeEntity & i_ce ) const
+{
+ if (i_ce.NameRoom().IsValid())
+ {
+ const CodeEntity &
+ rParent = Storage()[i_ce.NameRoom()];
+ get_ModuleText(o_module, rParent);
+ o_module.push_back(i_ce.LocalName());
+ }
+}
+
+Struct &
+CeAdmin::lhf_Store_TplStruct( Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase,
+ const String & i_sTemplateParam )
+{
+ csv_assert(NOT i_sTemplateParam.empty());
+
+ TemplateParamType &
+ rTpt = pTypePilot->Store_TemplateParamType(i_sTemplateParam);
+
+ Struct & ret = *new Struct( i_sName,
+ i_nOwner,
+ i_nBase,
+ i_sTemplateParam,
+ rTpt.TypeId() );
+ lhf_Store_NewEntity(ret, i_nOwner);
+ rTpt.Set_StructId(ret.CeId());
+
+ return ret;
+}
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/ia_ce.hxx b/autodoc/source/ary/idl/ia_ce.hxx
new file mode 100644
index 000000000000..aad50cfe05f2
--- /dev/null
+++ b/autodoc/source/ary/idl/ia_ce.hxx
@@ -0,0 +1,256 @@
+/* -*- 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 ARY_IDL_IA_CE_HXX
+#define ARY_IDL_IA_CE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ip_ce.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+class Ce_Storage;
+class TypeAdmin;
+
+
+/** @resp
+ Implements ::ary::idl::CePilot. Provides the access logic for all
+ IDL code entities.
+
+ @collab Ce_Storage
+ @collab TypeAdmin
+
+ @see CodeEntity
+*/
+class CeAdmin : public CePilot
+{
+ public:
+ // LIFECYCLE
+ CeAdmin(
+ NameLookup & io_rNameDictionary,
+ TypeAdmin & io_rTypePilot );
+ virtual ~CeAdmin();
+
+ // OPERATIONS
+
+ // INQUIRY
+ const Ce_Storage & Storage() const;
+
+ // ACCESS
+ Ce_Storage & Storage();
+
+ // INHERITED
+ // Interface ::ary::idl::CePilot:
+ virtual Module & CheckIn_Module(
+ Ce_id i_nParentId,
+ const String & i_sName );
+ virtual Service & Store_Service(
+ Ce_id i_nOwner,
+ const String & i_sName );
+ virtual SglIfcService &
+ Store_SglIfcService(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBaseInterface );
+ virtual Interface & Store_Interface(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase );
+ virtual Struct & Store_Struct(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase,
+ const String & i_sTemplateParam );
+ virtual Exception & Store_Exception(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase );
+ virtual Enum & Store_Enum(
+ Ce_id i_nOwner,
+ const String & i_sName );
+ virtual Typedef & Store_Typedef(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nDefiningType );
+ virtual ConstantsGroup &
+ Store_ConstantsGroup(
+ Ce_id i_nOwner,
+ const String & i_sName );
+ virtual Singleton & Store_Singleton(
+ Ce_id i_nOwner,
+ const String & i_sName );
+ virtual SglIfcSingleton &
+ Store_SglIfcSingleton(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBaseInterface );
+
+ virtual Constant & Store_Constant(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ const String & i_sValue );
+ virtual Property & Store_Property(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ Property::Stereotypes
+ i_stereotypes );
+ virtual Function & Store_Function(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nReturnType,
+ bool i_bOneWay );
+ virtual Function & Store_ServiceConstructor(
+ Ce_id i_nOwner,
+ const String & i_sName );
+ virtual StructElement &
+ Store_StructMember(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType );
+ virtual StructElement &
+ Store_ExceptionMember(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType );
+ virtual EnumValue & Store_EnumValue(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ const String & i_sValue );
+ virtual Attribute & Store_Attribute(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nType,
+ bool i_bReadOnly,
+ bool i_bBound );
+
+ virtual const Module &
+ GlobalNamespace() const;
+ virtual const CodeEntity &
+ Find_Ce(
+ Ce_id i_nId ) const;
+ virtual const Module &
+ Find_Module(
+ Ce_id i_nId ) const;
+ virtual const Module *
+ Search_Module(
+ Ce_id i_nId ) const;
+ virtual const Function &
+ Find_Function(
+ Ce_id i_nId ) const;
+ virtual const Property &
+ Find_Property(
+ Ce_id i_nId ) const;
+ virtual const EnumValue &
+ Find_EnumValue(
+ Ce_id i_nId ) const;
+ virtual const Constant &
+ Find_Constant(
+ Ce_id i_nId ) const;
+ virtual const StructElement &
+ Find_StructElement(
+ Ce_id i_nId ) const;
+ virtual void Get_Text(
+ StringVector & o_module,
+ String & o_ce,
+ String & o_member,
+ const CodeEntity & i_ce ) const;
+ virtual const NameLookup &
+ NameDictionary() const;
+ virtual void Get_AlphabeticalIndex(
+ std::vector<Ce_id> &
+ o_rResult,
+ alphabetical_index::E_Letter
+ i_cLetter) const;
+ // ACCESS
+ virtual Module & GlobalNamespace();
+ virtual CodeEntity &
+ Find_Ce(
+ Ce_id i_nId );
+ private:
+ // Locals
+ Module & lhf_Access_Module(
+ Ce_id i_nId );
+ void lhf_Put2Storage_and_AssignId(
+ CodeEntity & pass_io_rCe );
+ void lhf_Store_NewEntity(
+ DYN CodeEntity & pass_io_rCe,
+ Module & i_rOwner );
+ void lhf_Store_NewEntity(
+ DYN CodeEntity & pass_io_rCe,
+ Ce_id i_nOwnerModule );
+ void get_ModuleText(
+ StringVector & o_module,
+ const CodeEntity & i_ce ) const;
+ Struct & lhf_Store_TplStruct(
+ Ce_id i_nOwner,
+ const String & i_sName,
+ Type_id i_nBase,
+ const String & i_sTemplateParam );
+
+ const Ce_Storage & my_Storage() const;
+ Ce_Storage & my_Storage();
+ NameLookup & my_NameDictionary() { return *pNameDictionary; }
+
+ // DATA
+ Dyn<Ce_Storage> pStorage; /// @inv pStorage != 0;
+ Module * pGlobalNamespace;
+ NameLookup * pNameDictionary;
+ TypeAdmin * pTypePilot;
+};
+
+
+// IMPLEMENTATION
+inline const Ce_Storage &
+CeAdmin::Storage() const
+{
+ return *pStorage;
+}
+
+inline Ce_Storage &
+CeAdmin::Storage()
+{
+ return *pStorage;
+}
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/ia_type.cxx b/autodoc/source/ary/idl/ia_type.cxx
new file mode 100644
index 000000000000..4f4b26062bc3
--- /dev/null
+++ b/autodoc/source/ary/idl/ia_type.cxx
@@ -0,0 +1,367 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "ia_type.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/qualiname.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/i_type.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include "ia_ce.hxx"
+#include "is_type.hxx"
+#include "it_builtin.hxx"
+#include "it_ce.hxx"
+#include "it_explicit.hxx"
+#include "it_sequence.hxx"
+#include "it_tplparam.hxx"
+#include "it_xnameroom.hxx"
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+String MakeTemplateName(
+ const String & i_localName,
+ const std::vector<Type_id> &
+ i_templateParameters );
+
+
+
+inline CeAdmin &
+TypeAdmin::my_Ces() const
+ { return *pCes; }
+
+inline void
+TypeAdmin::lhf_Put2Storage_and_AssignId( DYN Type & pass_io_rType )
+ { // This also assigns an ID to pass_io_rType:
+ Storage().Store_Entity(pass_io_rType); }
+
+inline Type_id
+TypeAdmin::lhf_findBuiltInType( const String & i_sName )
+ { return ary_cast<ExplicitNameRoom>(Storage()[nXNameRoom_Root])
+ .Search_Name(i_sName); }
+
+inline const ExplicitNameRoom &
+TypeAdmin::find_ExplicitNameRoom( Type_id i_nType ) const
+{
+ return ary_cast<ExplicitNameRoom>(Storage()[i_nType]);
+}
+
+inline ExplicitNameRoom &
+TypeAdmin::find_ExplicitNameRoom( Type_id i_nType )
+{
+ return ary_cast<ExplicitNameRoom>(Storage()[i_nType]);
+}
+
+ExplicitNameRoom &
+TypeAdmin::lhf_CheckIn_XNameRoom( const QualifiedName & i_rName,
+ Ce_id i_nModuleOfOccurrence )
+{
+ Type_id nRoot = i_rName.IsAbsolute()
+ ? Type_id( predefined::type_GlobalXNameRoom )
+ : lhf_Get_NameRoomRoot_forModuleofOccurrence( i_nModuleOfOccurrence ).TypeId();
+
+ if ( i_rName.NamespaceDepth() == 0 )
+ return find_ExplicitNameRoom(nRoot);
+
+ QualifiedName::namespace_iterator it = i_rName.first_namespace();
+ ExplicitNameRoom *
+ ret = & find_ExplicitNameRoom(nRoot);
+ for ( ; it != i_rName.end_namespace(); ++it )
+ {
+ Type_id
+ found = ret->Search_Name(*it);
+ if (found.IsValid())
+ {
+ ret = & find_ExplicitNameRoom(found);
+ }
+ else
+ {
+ ExplicitNameRoom &
+ rNew = *new ExplicitNameRoom(*it, *ret);
+ lhf_Put2Storage_and_AssignId(rNew);
+ ret->Add_Name( rNew.Name(), rNew.TypeId() );
+ ret = &rNew;
+ }
+
+ } // end for
+ return *ret;
+}
+
+Type_id
+TypeAdmin::lhf_CheckIn_TypeName( const String & i_sLocalName,
+ ExplicitNameRoom & io_rXNameRoom,
+ Ce_id i_nModuleOfOccurrence,
+ const std::vector<Type_id> * i_templateParameters )
+{
+ String sSearchLocalName( i_sLocalName );
+ if ( i_templateParameters != 0
+ ? i_templateParameters->size() > 0
+ : false )
+ {
+ sSearchLocalName = MakeTemplateName(
+ i_sLocalName,
+ *i_templateParameters);
+ }
+
+ Type_id
+ ret = io_rXNameRoom.Search_Name(sSearchLocalName);
+ if (NOT ret.IsValid())
+ {
+ DYN Type &
+ rNewType = *new ExplicitType( i_sLocalName,
+ io_rXNameRoom.TypeId(),
+ i_nModuleOfOccurrence,
+ i_templateParameters );
+ lhf_Put2Storage_and_AssignId(rNewType);
+ ret = rNewType.TypeId();
+ io_rXNameRoom.Add_Name( sSearchLocalName, ret );
+ }
+ return ret;
+}
+
+Type_id
+TypeAdmin::lhf_CheckIn_Sequence(Type_id i_nType)
+{
+ Type_id
+ ret = Storage().Search_SequenceOf(i_nType);
+
+ if (NOT ret.IsValid())
+ {
+ DYN Type &
+ rNewSeq = *new Sequence(i_nType);
+ lhf_Put2Storage_and_AssignId(rNewSeq);
+ ret = rNewSeq.Id();
+ Storage().Add_Sequence(i_nType, ret);
+ }
+ return ret;
+}
+
+void
+TypeAdmin::lhf_CheckIn_BuiltInType( const char * i_sName,
+ Rid i_nId )
+{
+ DYN BuiltInType &
+ rNewType = *new BuiltInType(i_sName);
+ Storage().Set_Reserved(i_nId, rNewType);
+
+ // Put them into both roots, to catch the syntactically correct
+ // (though unlikely) ::Any, ::long etc.
+ Type_id
+ nId(i_nId);
+ find_ExplicitNameRoom(nXNameRoom_Root).Add_Name(i_sName, nId);
+ find_ExplicitNameRoom(nXNameRoom_Global).Add_Name(i_sName, nId);
+}
+
+ExplicitNameRoom &
+TypeAdmin::lhf_Get_NameRoomRoot_forModuleofOccurrence( Ce_id i_nModuleOfOccurrence )
+{
+ const Type_id *
+ pFound = csv::find_in_map( aMap_ModuleOfOccurrence2NameRoomRoot,
+ i_nModuleOfOccurrence );
+ if (pFound != 0)
+ return find_ExplicitNameRoom(*pFound);
+
+ ExplicitNameRoom &
+ ret = *new ExplicitNameRoom;
+ lhf_Put2Storage_and_AssignId(ret);
+ aMap_ModuleOfOccurrence2NameRoomRoot.insert(std::pair< const Ce_id, Type_id>(i_nModuleOfOccurrence,ret.TypeId()));
+ return ret;
+}
+
+TypeAdmin::TypeAdmin()
+ : pStorage(new Type_Storage),
+ pCes(0), // Needs to be set directly after creation.
+ nXNameRoom_Root( static_cast<ary::Rid>(predefined::type_Root_ofXNameRooms) ),
+ nXNameRoom_Global( static_cast<ary::Rid>(predefined::type_GlobalXNameRoom) ),
+ aMap_ModuleOfOccurrence2NameRoomRoot()
+{
+ DYN ExplicitNameRoom &
+ drRoot = *new ExplicitNameRoom;
+ Storage().Set_Reserved( nXNameRoom_Root.Value(), drRoot );
+
+ DYN ExplicitNameRoom &
+ drGlobal = *new ExplicitNameRoom(String::Null_(), drRoot);
+ Storage().Set_Reserved( nXNameRoom_Global.Value(), drGlobal );
+ drRoot.Add_Name( drGlobal.Name(), nXNameRoom_Global );
+
+ lhf_Setup_BuildInTypes();
+}
+
+TypeAdmin::~TypeAdmin()
+{
+}
+
+void
+TypeAdmin::lhf_Setup_BuildInTypes()
+{
+ lhf_CheckIn_BuiltInType("any", predefined::type_any);
+ lhf_CheckIn_BuiltInType("boolean", predefined::type_boolean);
+ lhf_CheckIn_BuiltInType("byte", predefined::type_byte);
+ lhf_CheckIn_BuiltInType("char", predefined::type_char);
+ lhf_CheckIn_BuiltInType("double", predefined::type_double);
+ lhf_CheckIn_BuiltInType("float", predefined::type_float);
+ lhf_CheckIn_BuiltInType("hyper", predefined::type_hyper);
+ lhf_CheckIn_BuiltInType("long", predefined::type_long);
+ lhf_CheckIn_BuiltInType("short", predefined::type_short);
+ lhf_CheckIn_BuiltInType("string", predefined::type_string);
+ lhf_CheckIn_BuiltInType("type", predefined::type_type);
+ lhf_CheckIn_BuiltInType("void", predefined::type_void);
+ lhf_CheckIn_BuiltInType("unsigned hyper", predefined::type_u_hyper);
+ lhf_CheckIn_BuiltInType("unsigned long", predefined::type_u_long);
+ lhf_CheckIn_BuiltInType("unsigned short", predefined::type_u_short);
+}
+
+const Type &
+TypeAdmin::CheckIn_Type( QualifiedName & i_rFullName,
+ uintt i_nSequenceCount,
+ Ce_id i_nModuleOfOccurrence,
+ const std::vector<Type_id> * i_templateParameters )
+{
+ // Look in built-in types:
+ Type_id
+ nType = lhf_findBuiltInType(i_rFullName.LocalName());
+ if (NOT nType.IsValid())
+ { // No built-in type:
+ ExplicitNameRoom &
+ rNameRoom = lhf_CheckIn_XNameRoom(i_rFullName,i_nModuleOfOccurrence);
+ nType = lhf_CheckIn_TypeName( i_rFullName.LocalName(),
+ rNameRoom,
+ i_nModuleOfOccurrence,
+ i_templateParameters );
+ } // endif
+
+ for ( uintt s = 0; s < i_nSequenceCount; ++s )
+ {
+ nType = lhf_CheckIn_Sequence(nType);
+ }
+
+ return Storage()[nType];
+}
+
+TemplateParamType &
+TypeAdmin::Store_TemplateParamType( String i_sName )
+{
+ DYN TemplateParamType &
+ ret = *new TemplateParamType( i_sName );
+ lhf_Put2Storage_and_AssignId(ret);
+ return ret;
+}
+
+const Type &
+TypeAdmin::Find_Type( Type_id i_nType ) const
+{
+ return Storage()[i_nType];
+}
+
+String
+TypeAdmin::Search_LocalNameOf( Type_id i_nType ) const
+{
+ const Type *
+ pType = Storage().Exists(i_nType)
+ ? 0
+ : & Storage()[i_nType];
+ if (pType != 0)
+ {
+ switch (pType->AryClass())
+ {
+ case Ce_Type::class_id:
+ case ExplicitType::class_id:
+ case BuiltInType::class_id:
+ return static_cast< const Named_Type& >(*pType).Name();
+ }
+ }
+ return String::Null_();
+}
+
+Ce_id
+TypeAdmin::Search_CeRelatedTo( Type_id i_nType ) const
+{
+ const Ce_Type *
+ ret = ary_cast<Ce_Type>( & Storage()[i_nType] );
+ return ret != 0
+ ? ret->RelatedCe()
+ : Ce_id_Null();
+}
+
+const ExplicitNameRoom &
+TypeAdmin::Find_XNameRoom( Type_id i_nType ) const
+{
+ return find_ExplicitNameRoom(i_nType);
+}
+
+bool
+TypeAdmin::IsBuiltInOrRelated( const Type & i_rType ) const
+{
+ if ( is_type<BuiltInType>(i_rType) )
+ return true;
+ else
+ {
+ const Type *
+ pType = &i_rType;
+ while (is_type<Sequence>(*pType))
+ {
+ Type_id
+ nt = ary_cast<Sequence>(pType)->RelatedType();
+ if (NOT nt.IsValid())
+ return false;
+ pType = & Storage()[nt];
+ }
+ return is_type<BuiltInType>(*pType);
+ }
+}
+
+
+String
+MakeTemplateName( const String & i_localName,
+ const std::vector<Type_id> & )
+{
+ StreamLock
+ sl(200);
+
+ // This is the simple solution, assuming that there is only
+ // one version of templatisation allowed with a given name.
+ return
+ sl()
+ << i_localName
+ << C_cTemplateDelimiter
+ << c_str;
+}
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/ia_type.hxx b/autodoc/source/ary/idl/ia_type.hxx
new file mode 100644
index 000000000000..ace6a9903815
--- /dev/null
+++ b/autodoc/source/ary/idl/ia_type.hxx
@@ -0,0 +1,173 @@
+/* -*- 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 ARY_IDL_IA_TYPE_HXX
+#define ARY_IDL_IA_TYPE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/ip_type.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include "is_type.hxx"
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+class Type_Storage;
+class CeAdmin;
+class TemplateParamType;
+
+
+class TypeAdmin : public TypePilot
+{
+ public:
+ // LIFECYCLE
+ TypeAdmin();
+
+ void Assign_CePilot(
+ CeAdmin & io_rCes );
+ virtual ~TypeAdmin();
+
+ // OPERATIONS
+ TemplateParamType & Store_TemplateParamType(
+ String i_sName );
+ // INQUIRY
+ const Type_Storage &
+ Storage() const;
+ // ACCESS
+ Type_Storage & Storage();
+
+ // INHERITED
+ // Interface TypePilot:
+ virtual const Type &
+ CheckIn_Type(
+ QualifiedName & i_rFullName,
+ uintt i_nSequenceCount,
+ Ce_id i_nModuleOfOccurrence,
+ const std::vector<Type_id> *
+ i_templateParameters );
+ virtual const Type &
+ Find_Type(
+ Type_id i_nType ) const;
+ virtual String Search_LocalNameOf(
+ Type_id i_nType ) const;
+ virtual Ce_id Search_CeRelatedTo(
+ Type_id i_nType ) const;
+ virtual const ExplicitNameRoom &
+ Find_XNameRoom(
+ Type_id i_nType ) const;
+ virtual bool IsBuiltInOrRelated(
+ const Type & i_rType ) const;
+ private:
+ // Locals
+ CeAdmin & my_Ces() const;
+
+ void lhf_Put2Storage_and_AssignId(
+ DYN Type & pass_io_rType );
+
+ ExplicitNameRoom & lhf_CheckIn_XNameRoom(
+ const QualifiedName &
+ i_rName,
+ Ce_id i_nModuleOfOccurrence );
+ Type_id lhf_CheckIn_TypeName(
+ const String & i_sLocalName,
+ ExplicitNameRoom & io_rExplicitNameRoom,
+ Ce_id i_nModuleOfOccurrence,
+ const std::vector<Type_id> *
+ i_templateParameters );
+ Type_id lhf_CheckIn_Sequence(
+ Type_id i_nType );
+ void lhf_CheckIn_BuiltInType(
+ const char * i_sName,
+ Rid i_nId );
+ const ExplicitNameRoom &
+ find_ExplicitNameRoom(
+ Type_id i_nType ) const;
+ ExplicitNameRoom & find_ExplicitNameRoom(
+ Type_id i_nType );
+ ExplicitNameRoom & lhf_Get_NameRoomRoot_forModuleofOccurrence(
+ Ce_id i_nModuleOfOccurrence );
+
+ /// @return Type_id::Null_(), if not found.
+ Type_id lhf_findBuiltInType(
+ const String & i_sName );
+ /// @precond nGlobalNamespace must be valid.
+ void lhf_Setup_BuildInTypes();
+
+ // DATA
+ Type_Storage * pStorage; /// @inv pStorage != 0
+ CeAdmin * pCes; /// @inv pCes != 0
+
+ // Data for saving time:
+ Type_id nXNameRoom_Root; /** @descr This is different from nXNameRoom_Global, because
+ the root of explicit name rooms in code without leading "::" is unknown.
+ */
+ Type_id nXNameRoom_Global;
+
+ // HACK, because this needs to be saved somehow and is not in storage:
+ std::map<Ce_id, Type_id>
+ aMap_ModuleOfOccurrence2NameRoomRoot;
+};
+
+
+
+
+
+// IMPLEMENTATION
+inline const Type_Storage &
+TypeAdmin::Storage() const
+{
+ return *pStorage;
+}
+
+inline Type_Storage &
+TypeAdmin::Storage()
+{
+ return *pStorage;
+}
+
+inline void
+TypeAdmin::Assign_CePilot( CeAdmin & io_rCes )
+{
+ pCes = &io_rCes;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/is_ce.cxx b/autodoc/source/ary/idl/is_ce.cxx
new file mode 100644
index 000000000000..b50b0058fba4
--- /dev/null
+++ b/autodoc/source/ary/idl/is_ce.cxx
@@ -0,0 +1,68 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "is_ce.hxx"
+
+// NOT FULLY DEFINED SERVICES
+
+namespace
+{
+ const uintt
+ C_nReservedElements = ary::idl::predefined::ce_MAX; // Skipping "0" and the GlobalNamespace
+}
+
+
+namespace ary
+{
+namespace idl
+{
+
+Ce_Storage * Ce_Storage::pInstance_ = 0;
+
+
+
+
+Ce_Storage::Ce_Storage()
+ : stg::Storage<CodeEntity>(C_nReservedElements)
+{
+ csv_assert(pInstance_ == 0);
+ pInstance_ = this;
+}
+
+Ce_Storage::~Ce_Storage()
+{
+ csv_assert(pInstance_ != 0);
+ pInstance_ = 0;
+}
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/is_ce.hxx b/autodoc/source/ary/idl/is_ce.hxx
new file mode 100644
index 000000000000..43266086b197
--- /dev/null
+++ b/autodoc/source/ary/idl/is_ce.hxx
@@ -0,0 +1,82 @@
+/* -*- 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 ARY_IDL_IS_CE_HXX
+#define ARY_IDL_IS_CE_HXX
+
+// BASE CLASSES
+#include <store/s_storage.hxx>
+// USED SERVICES
+#include <ary/idl/i_ce.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** The data base for all ->ary::idl::CodeEntity objects.
+*/
+class Ce_Storage : public ::ary::stg::Storage< ::ary::idl::CodeEntity >
+{
+ public:
+ Ce_Storage();
+ virtual ~Ce_Storage();
+
+ static Ce_Storage & Instance_() { csv_assert(pInstance_ != 0);
+ return *pInstance_; }
+ private:
+ // DATA
+ static Ce_Storage * pInstance_;
+};
+
+
+
+
+namespace predefined
+{
+
+enum E_CodeEntity
+{
+ ce_GlobalNamespace = 1,
+ ce_MAX
+};
+
+} // namespace predefined
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/is_type.cxx b/autodoc/source/ary/idl/is_type.cxx
new file mode 100644
index 000000000000..6082397140de
--- /dev/null
+++ b/autodoc/source/ary/idl/is_type.cxx
@@ -0,0 +1,86 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "is_type.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+
+namespace
+{
+
+const uintt
+ C_nReservedElements = ary::idl::predefined::type_MAX; // Skipping "0" and the built in types.
+}
+
+
+namespace ary
+{
+namespace idl
+{
+
+Type_Storage * Type_Storage::pInstance_ = 0;
+
+
+
+Type_Storage::Type_Storage()
+ : stg::Storage<Type>(C_nReservedElements),
+ aSequenceIndex()
+{
+ csv_assert(pInstance_ == 0);
+ pInstance_ = this;
+}
+
+Type_Storage::~Type_Storage()
+{
+ csv_assert(pInstance_ != 0);
+ pInstance_ = 0;
+}
+
+void
+Type_Storage::Add_Sequence( Type_id i_nRelatedType,
+ Type_id i_nSequence )
+{
+ aSequenceIndex[i_nRelatedType] = i_nSequence;
+}
+
+Type_id
+Type_Storage::Search_SequenceOf( Type_id i_nRelatedType )
+{
+ return csv::value_from_map(aSequenceIndex, i_nRelatedType);
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/is_type.hxx b/autodoc/source/ary/idl/is_type.hxx
new file mode 100644
index 000000000000..14a4da1127c0
--- /dev/null
+++ b/autodoc/source/ary/idl/is_type.hxx
@@ -0,0 +1,125 @@
+/* -*- 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 ARY_IDL_IS_TYPE_HXX
+#define ARY_IDL_IS_TYPE_HXX
+
+// BASE CLASSES
+#include <store/s_storage.hxx>
+// USED SERVICES
+#include <ary/idl/i_type.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** The data base for all ->ary::idl::CodeEntity objects.
+*/
+class Type_Storage : public ::ary::stg::Storage< ::ary::idl::Type >
+{
+ public:
+ Type_Storage();
+ ~Type_Storage();
+
+
+ void Add_Sequence(
+ Type_id i_nRelatedType,
+ Type_id i_nSequence );
+
+ Type_id Search_SequenceOf(
+ Type_id i_nRelatedType );
+
+ static Type_Storage &
+ Instance_();
+ private:
+ /** value_type.first := id of the base type
+ value_type.second := id of the sequence<base type>
+ */
+ typedef std::map<Type_id,Type_id> Map_Sequences;
+
+ // DATA
+ Map_Sequences aSequenceIndex;
+
+ static Type_Storage *
+ pInstance_;
+};
+
+
+
+namespace predefined
+{
+
+enum E_Type
+{
+ type_Root_ofXNameRooms = 1,
+ type_GlobalXNameRoom,
+ type_any,
+ type_boolean,
+ type_byte,
+ type_char,
+ type_double,
+ type_float,
+ type_hyper,
+ type_long,
+ type_short,
+ type_string,
+ type_type,
+ type_void,
+ type_u_hyper,
+ type_u_long,
+ type_u_short,
+ type_ellipse, // ...
+ type_MAX
+};
+
+} // namespace predefined
+
+
+
+
+// IMPLEMENTATION
+inline Type_Storage &
+Type_Storage::Instance_()
+{
+ csv_assert(pInstance_ != 0);
+ return *pInstance_;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_builtin.cxx b/autodoc/source/ary/idl/it_builtin.cxx
new file mode 100644
index 000000000000..cc287b43b389
--- /dev/null
+++ b/autodoc/source/ary/idl/it_builtin.cxx
@@ -0,0 +1,82 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "it_builtin.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/processor.hxx>
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+
+BuiltInType::BuiltInType( const char * i_sName )
+ : Named_Type(i_sName)
+{
+}
+
+BuiltInType::~BuiltInType()
+{
+}
+
+ClassId
+BuiltInType::get_AryClass() const
+{
+ return class_id;
+}
+
+void
+BuiltInType::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+void
+BuiltInType::inq_Get_Text( StringVector & , // o_module
+ String & o_name,
+ Ce_id & , // o_nRelatedCe
+ int & , // o_nSequenceCount
+ const Gate & ) const // i_rGate
+{
+ o_name = Name();
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_builtin.hxx b/autodoc/source/ary/idl/it_builtin.hxx
new file mode 100644
index 000000000000..7a68f0a4f1f1
--- /dev/null
+++ b/autodoc/source/ary/idl/it_builtin.hxx
@@ -0,0 +1,79 @@
+/* -*- 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 ARY_IDL_IT_BUILTIN_HXX
+#define ARY_IDL_IT_BUILTIN_HXX
+
+// BASE CLASSES
+#include "it_named.hxx"
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** A type defined by the IDL language.
+*/
+class BuiltInType : public Named_Type
+{
+ public:
+ enum E_ClassId { class_id = 2200 };
+
+ // LIFECYCLE
+ BuiltInType(
+ const char * i_sName );
+ virtual ~BuiltInType();
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface Type:
+ virtual void inq_Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequenceCount,
+ const Gate & i_rGate ) const;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_ce.cxx b/autodoc/source/ary/idl/it_ce.cxx
new file mode 100644
index 000000000000..6aef98066b49
--- /dev/null
+++ b/autodoc/source/ary/idl/it_ce.cxx
@@ -0,0 +1,103 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "it_ce.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/ip_ce.hxx>
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+Ce_Type::Ce_Type( Ce_id i_relatedCe,
+ const std::vector<Type_id> * i_templateParameters )
+ : nRelatedCe(i_relatedCe),
+ pTemplateParameters(0)
+{
+ if (i_templateParameters != 0)
+ pTemplateParameters = new std::vector<Type_id>(*i_templateParameters);
+}
+
+Ce_Type::~Ce_Type()
+{
+}
+
+ClassId
+Ce_Type::get_AryClass() const
+{
+ return class_id;
+}
+
+void
+Ce_Type::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+void
+Ce_Type::inq_Get_Text( StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & , // o_nSequenceCount
+ const Gate & i_rGate ) const
+{
+ String sDummyMember;
+
+ const CodeEntity &
+ rCe = i_rGate.Ces().Find_Ce(nRelatedCe);
+ i_rGate.Ces().Get_Text( o_module,
+ o_name,
+ sDummyMember,
+ rCe );
+ o_nRelatedCe = nRelatedCe;
+}
+
+const std::vector<Type_id> *
+Ce_Type::inq_TemplateParameters() const
+{
+ return pTemplateParameters.Ptr();
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_ce.hxx b/autodoc/source/ary/idl/it_ce.hxx
new file mode 100644
index 000000000000..8693c9df9750
--- /dev/null
+++ b/autodoc/source/ary/idl/it_ce.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ARY_IDL_IT_CE_HXX
+#define ARY_IDL_IT_CE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_type.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** A named ->Type related to its corresponding
+ ->CodeEntity.
+*/
+class Ce_Type : public Type
+{
+ public:
+ enum E_ClassId { class_id = 2201 };
+
+ // LIFECYCLE
+ Ce_Type(
+ Ce_id i_relatedCe,
+ const std::vector<Type_id> *
+ i_templateParameters );
+ virtual ~Ce_Type();
+
+ // INQUIRY
+ Ce_id RelatedCe() const { return nRelatedCe; }
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface Type:
+ virtual void inq_Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequemceCount,
+ const Gate & i_rGate ) const;
+ virtual const std::vector<Type_id> *
+ inq_TemplateParameters() const;
+ // DATA
+ Ce_id nRelatedCe;
+ Dyn< std::vector<Type_id> >
+ pTemplateParameters;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_explicit.cxx b/autodoc/source/ary/idl/it_explicit.cxx
new file mode 100644
index 000000000000..900556106ae9
--- /dev/null
+++ b/autodoc/source/ary/idl/it_explicit.cxx
@@ -0,0 +1,103 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "it_explicit.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+#include "it_xnameroom.hxx"
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+ExplicitType::ExplicitType( const String & i_sName,
+ Type_id i_nXNameRoom,
+ Ce_id i_nModuleOfOccurrence,
+ const std::vector<Type_id> *
+ i_templateParameters )
+ : Named_Type(i_sName),
+ nXNameRoom(i_nXNameRoom),
+ nModuleOfOccurrence(i_nModuleOfOccurrence),
+ pTemplateParameters(0)
+{
+ if (i_templateParameters != 0)
+ pTemplateParameters = new std::vector<Type_id>(*i_templateParameters);
+}
+
+ExplicitType::~ExplicitType()
+{
+}
+
+ClassId
+ExplicitType::get_AryClass() const
+{
+ return class_id;
+}
+
+void
+ExplicitType::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+void
+ExplicitType::inq_Get_Text( StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequenceCount,
+ const Gate & i_rGate ) const
+{
+ const ExplicitNameRoom &
+ rNameRoom = i_rGate.Types().Find_XNameRoom(nXNameRoom);
+ rNameRoom.Get_Text(o_module,o_name,o_nRelatedCe,o_nSequenceCount,i_rGate);
+
+ o_name = Name();
+}
+
+const std::vector<Type_id> *
+ExplicitType::inq_TemplateParameters() const
+{
+ return pTemplateParameters.Ptr();
+}
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_explicit.hxx b/autodoc/source/ary/idl/it_explicit.hxx
new file mode 100644
index 000000000000..ddda35458173
--- /dev/null
+++ b/autodoc/source/ary/idl/it_explicit.hxx
@@ -0,0 +1,96 @@
+/* -*- 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 ARY_IDL_IT_EXPLICIT_HXX
+#define ARY_IDL_IT_EXPLICIT_HXX
+
+// BASE CLASSES
+#include "it_named.hxx"
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** A named @->Type, not yet related to its corresponding
+ @->CodeEntity.
+*/
+class ExplicitType : public Named_Type
+{
+ public:
+ enum E_ClassId { class_id = 2203 };
+
+ // LIFECYCLE
+ ExplicitType(
+ const String & i_sName,
+ Type_id i_nXNameRoom,
+ Ce_id i_nModuleOfOccurrence,
+ const std::vector<Type_id> *
+ i_templateParameters );
+ virtual ~ExplicitType();
+
+ // INQUIRY
+ Ce_id ModuleOfOccurrence() const
+ { return nModuleOfOccurrence; }
+ Type_id NameRoom() const { return nXNameRoom; }
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface CppEntity:
+ virtual ClassId get_AryClass() const;
+
+ // Interface Type:
+ virtual void inq_Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequemceCount,
+ const Gate & i_rGate ) const;
+ virtual const std::vector<Type_id> *
+ inq_TemplateParameters() const;
+ // DATA
+ Type_id nXNameRoom; // As written in code.
+ Ce_id nModuleOfOccurrence;
+ Dyn< const std::vector<Type_id> >
+ pTemplateParameters;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_named.hxx b/autodoc/source/ary/idl/it_named.hxx
new file mode 100644
index 000000000000..473d27d1139d
--- /dev/null
+++ b/autodoc/source/ary/idl/it_named.hxx
@@ -0,0 +1,78 @@
+/* -*- 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 ARY_IDL_IT_NAMED_HXX
+#define ARY_IDL_IT_NAMED_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/idl/i_type.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+
+
+/** Represents types with a name - in opposite to e.g. sequences,
+ which do not have one.
+*/
+class Named_Type : public Type
+{
+ public:
+ // LIFECYCLE
+ virtual ~Named_Type() {}
+
+ // INQUIRY
+ const String & Name() const { return sName; }
+
+ protected:
+ Named_Type(
+ const String & i_sName )
+ : sName(i_sName) { }
+ private:
+ // DATA
+ String sName;
+};
+
+
+
+} // namespace idl
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_sequence.cxx b/autodoc/source/ary/idl/it_sequence.cxx
new file mode 100644
index 000000000000..daa9c043cfd3
--- /dev/null
+++ b/autodoc/source/ary/idl/it_sequence.cxx
@@ -0,0 +1,94 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "it_sequence.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_type.hxx>
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+Sequence::Sequence( Type_id i_nRelatedType )
+ : nRelatedType(i_nRelatedType)
+{
+}
+
+Sequence::~Sequence()
+{
+}
+
+ClassId
+Sequence::get_AryClass() const
+{
+ return class_id;
+}
+
+void
+Sequence::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+void
+Sequence::inq_Get_Text( StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequenceCount,
+ const Gate & i_rGate ) const
+{
+ ++o_nSequenceCount;
+
+ i_rGate.Types().Find_Type(nRelatedType)
+ .Get_Text( o_module,
+ o_name,
+ o_nRelatedCe,
+ o_nSequenceCount,
+ i_rGate );
+}
+
+const Type &
+Sequence::inq_FirstEnclosedNonSequenceType(const Gate & i_rGate) const
+{
+ return i_rGate.Types().Find_Type(nRelatedType).FirstEnclosedNonSequenceType(i_rGate);
+}
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_sequence.hxx b/autodoc/source/ary/idl/it_sequence.hxx
new file mode 100644
index 000000000000..3971861356c1
--- /dev/null
+++ b/autodoc/source/ary/idl/it_sequence.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 ARY_IDL_IT_SEQUENCE_HXX
+#define ARY_IDL_IT_SEQUENCE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_type.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** A sequence (an array of a type).
+*/
+class Sequence : public Type
+{
+ public:
+ enum E_ClassId { class_id = 2202 };
+
+ // LIFECYCLE
+ Sequence(
+ Type_id i_nRelatedType );
+ virtual ~Sequence();
+
+ // INQUIRY
+ Type_id RelatedType() const { return nRelatedType; }
+
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface Type:
+ virtual void inq_Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequemceCount,
+ const Gate & i_rGate ) const;
+ virtual const Type &
+ inq_FirstEnclosedNonSequenceType(
+ const Gate & i_rGate ) const;
+ // DATA
+ Type_id nRelatedType;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_tplparam.cxx b/autodoc/source/ary/idl/it_tplparam.cxx
new file mode 100644
index 000000000000..f8a3097e44a0
--- /dev/null
+++ b/autodoc/source/ary/idl/it_tplparam.cxx
@@ -0,0 +1,95 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "it_tplparam.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/processor.hxx>
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+
+TemplateParamType::TemplateParamType( const char * i_sName )
+ : Named_Type(i_sName)
+{
+}
+
+TemplateParamType::~TemplateParamType()
+{
+}
+
+ClassId
+TemplateParamType::get_AryClass() const
+{
+ return class_id;
+}
+
+void
+TemplateParamType::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+void
+TemplateParamType::inq_Get_Text( StringVector & , // o_module
+ String & o_name,
+ Ce_id & , // o_nRelatedCe
+ int & , // o_nSequenceCount
+ const Gate & ) const // i_rGate
+{
+ o_name = Name();
+}
+
+
+//************* Implemented default function for idl::Type ********//
+
+const std::vector<Type_id> *
+Type::inq_TemplateParameters() const
+{
+ return 0;
+}
+
+const Type &
+Type::inq_FirstEnclosedNonSequenceType(const Gate & ) const
+{
+ return *this;
+}
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_tplparam.hxx b/autodoc/source/ary/idl/it_tplparam.hxx
new file mode 100644
index 000000000000..294712f32741
--- /dev/null
+++ b/autodoc/source/ary/idl/it_tplparam.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ARY_IDL_IT_TPLPARAM_HXX
+#define ARY_IDL_IT_TPLPARAM_HXX
+
+// BASE CLASSES
+#include "it_named.hxx"
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** @resp Represents a template type when it is used within the
+ declaring struct.
+*/
+class TemplateParamType : public Named_Type
+{
+ public:
+ enum E_ClassId { class_id = 2205 };
+
+ // LIFECYCLE
+ TemplateParamType(
+ const char * i_sName );
+ virtual ~TemplateParamType();
+
+ Ce_id StructId() const; /// The struct which declares this type.
+ void Set_StructId(
+ Ce_id i_nStruct );
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface Type:
+ virtual void inq_Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequenceCount,
+ const Gate & i_rGate ) const;
+ // DATA
+ Ce_id nStruct; /// The struct which declares this type.
+};
+
+
+
+
+// IMPLEMENTATION
+inline Ce_id
+TemplateParamType::StructId() const
+{
+ return nStruct;
+}
+
+inline void
+TemplateParamType::Set_StructId( Ce_id i_nStruct )
+{
+ nStruct = i_nStruct;
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_xnameroom.cxx b/autodoc/source/ary/idl/it_xnameroom.cxx
new file mode 100644
index 000000000000..23fbe617ba7f
--- /dev/null
+++ b/autodoc/source/ary/idl/it_xnameroom.cxx
@@ -0,0 +1,103 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "it_xnameroom.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/processor.hxx>
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_type.hxx>
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+ExplicitNameRoom::ExplicitNameRoom()
+ : aImpl()
+{
+}
+
+ExplicitNameRoom::ExplicitNameRoom( const String & i_sName,
+ const ExplicitNameRoom & i_rParent )
+ : aImpl( i_sName, i_rParent.aImpl, i_rParent.TypeId() )
+{
+}
+
+ExplicitNameRoom::~ExplicitNameRoom()
+{
+}
+
+ClassId
+ExplicitNameRoom::get_AryClass() const
+{
+ return class_id;
+}
+
+void
+ExplicitNameRoom::do_Accept( csv::ProcessorIfc & io_processor ) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+void
+ExplicitNameRoom::inq_Get_Text( StringVector & o_module,
+ String & , // o_name
+ Ce_id & , // o_nRelatedCe
+ int & , // o_nSequemceCount
+ const Gate & ) const // i_rGate
+{
+ StringVector::const_iterator it = NameChain_Begin();
+ if ( it != NameChain_End()
+ ? (*it).empty()
+ : false )
+ { // Don't put out the root global namespace
+ ++it;
+ }
+
+ for ( ;
+ it != NameChain_End();
+ ++it )
+ {
+ o_module.push_back(*it);
+ }
+}
+
+
+
+
+} // namespace idl
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/it_xnameroom.hxx b/autodoc/source/ary/idl/it_xnameroom.hxx
new file mode 100644
index 000000000000..cb70e17102ca
--- /dev/null
+++ b/autodoc/source/ary/idl/it_xnameroom.hxx
@@ -0,0 +1,126 @@
+/* -*- 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 ARY_IDL_IT_XNAMEROOM_HXX
+#define ARY_IDL_IT_XNAMEROOM_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_type.hxx>
+#include <nametreenode.hxx>
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** A namespace for ->Type s, as they are explicitely written in code.
+
+ The search/identification string is usually the local name of
+ the Type. But for templated structs, the search string has this
+ pattern:
+ <LocalName> '<' <StringOfTemplateTypeId>
+*/
+class ExplicitNameRoom : public Type
+{
+ public:
+ enum E_ClassId { class_id = 2204 };
+
+ // LIFECYCLE
+ ExplicitNameRoom();
+ ExplicitNameRoom(
+ const String & i_sName,
+ const ExplicitNameRoom &
+ i_rParent );
+ virtual ~ExplicitNameRoom();
+
+ // OPERATIONS
+ /** @param i_sSearchString
+ A local type name usually.
+ For templated types see class docu.
+ @see ExplicitNameRoom
+ */
+ void Add_Name(
+ const String & i_sSearchString,
+ Type_id i_nId )
+ { aImpl.Add_Name(i_sSearchString,i_nId); }
+ // INQUIRY
+ const String & Name() const { return aImpl.Name(); }
+ intt Depth() const { return aImpl.Depth(); }
+ void Get_FullName(
+ StringVector & o_rText,
+ Ce_idList * o_pRelatedCes,
+ const Gate & i_rGate ) const;
+ bool IsAbsolute() const { return Depth() > 0
+ ? (*NameChain_Begin()).empty()
+ : false; }
+ /** @param i_sSearchString
+ A local type name usually.
+ For templated types see class docu.
+ @see ExplicitNameRoom
+ */
+ Type_id Search_Name(
+ const String & i_sSearchString ) const
+ { return aImpl.Search_Name(i_sSearchString); }
+
+ StringVector::const_iterator
+ NameChain_Begin() const
+ { return aImpl.NameChain_Begin(); }
+ StringVector::const_iterator
+ NameChain_End() const
+ { return aImpl.NameChain_End(); }
+ private:
+ // Interface csv::ConstProcessorClient:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ // Interface Object:
+ virtual ClassId get_AryClass() const;
+
+ // Interface Type:
+ virtual void inq_Get_Text(
+ StringVector & o_module,
+ String & o_name,
+ Ce_id & o_nRelatedCe,
+ int & o_nSequemceCount,
+ const Gate & i_rGate ) const;
+ // DATA
+ NameTreeNode<Type_id>
+ aImpl;
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/idl/makefile.mk b/autodoc/source/ary/idl/makefile.mk
new file mode 100644
index 000000000000..bf260e2c521e
--- /dev/null
+++ b/autodoc/source/ary/idl/makefile.mk
@@ -0,0 +1,87 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=ary_idl
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/i_attribute.obj \
+ $(OBJ)$/i_ce.obj \
+ $(OBJ)$/i_ce2s.obj \
+ $(OBJ)$/i_comrela.obj \
+ $(OBJ)$/i_constant.obj \
+ $(OBJ)$/i_constgroup.obj \
+ $(OBJ)$/i_enum.obj \
+ $(OBJ)$/i_enumvalue.obj \
+ $(OBJ)$/i_exception.obj \
+ $(OBJ)$/i_function.obj \
+ $(OBJ)$/i_interface.obj \
+ $(OBJ)$/i_module.obj \
+ $(OBJ)$/i_namelookup.obj \
+ $(OBJ)$/i_param.obj \
+ $(OBJ)$/i_property.obj \
+ $(OBJ)$/i_reposypart.obj \
+ $(OBJ)$/i_service.obj \
+ $(OBJ)$/i_singleton.obj \
+ $(OBJ)$/i_siservice.obj \
+ $(OBJ)$/i_sisingleton.obj \
+ $(OBJ)$/i_struct.obj \
+ $(OBJ)$/i_structelem.obj \
+ $(OBJ)$/i_traits.obj \
+ $(OBJ)$/i_typedef.obj \
+ $(OBJ)$/i2s_calculator.obj \
+ $(OBJ)$/ia_ce.obj \
+ $(OBJ)$/ia_type.obj \
+ $(OBJ)$/is_ce.obj \
+ $(OBJ)$/is_type.obj \
+ $(OBJ)$/it_builtin.obj \
+ $(OBJ)$/it_ce.obj \
+ $(OBJ)$/it_explicit.obj \
+ $(OBJ)$/it_sequence.obj \
+ $(OBJ)$/it_tplparam.obj \
+ $(OBJ)$/it_xnameroom.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/autodoc/source/ary/inc/cpp_internalgate.hxx b/autodoc/source/ary/inc/cpp_internalgate.hxx
new file mode 100644
index 000000000000..a2d4532c71ed
--- /dev/null
+++ b/autodoc/source/ary/inc/cpp_internalgate.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 ARY_CPP_INTERNALGATE_HXX
+#define ARY_CPP_INTERNALGATE_HXX
+
+// BASE CLASSES
+#include <ary/cpp/c_gate.hxx>
+
+namespace ary
+{
+ class RepositoryCenter;
+}
+
+
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+/** Provides access to the ->cpp::RepositoryPartition as far as is needed
+ by the ->RepositoryCenter.
+*/
+class InternalGate : public ::ary::cpp::Gate
+{
+ public:
+ virtual ~InternalGate() {}
+
+ static DYN InternalGate &
+ Create_Partition_(
+ RepositoryCenter & i_center );
+};
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/cross_refs.hxx b/autodoc/source/ary/inc/cross_refs.hxx
new file mode 100644
index 000000000000..ca2e893078f7
--- /dev/null
+++ b/autodoc/source/ary/inc/cross_refs.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ARY_CROSS_REFS_HXX
+#define ARY_CROSS_REFS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include "sorted_idset.hxx"
+
+
+template <class VALUE_LIST, class TYPES>
+class CrossReferences
+{
+ public:
+ typedef TYPES::element_type element;
+
+ /// Checks for double occurences
+ void Add(
+ VALUE_LIST::index_type
+ i_nPosition
+ const element & i_rElem );
+ void Get_List(
+ Dyn_StdConstIterator<element> &
+ o_rResult ) const;
+ private:
+ SortedIdSet<TYPES> aData[VALUE_LIST::max];
+};
+
+
+
+namespace ary
+{
+
+template <class TYPES>
+class SortedIdSet
+{
+ public:
+ typedef typename TYPES::element_type element;
+ typedef typename TYPES::sort_type sorter;
+ typedef typename TYPES::find_type finder;
+
+ SortedIdSet(
+ const finder & i_rFinder )
+ : aSorter(i_rFinder),
+ aData(aSorter) {}
+ ~SortedIdSet() {}
+
+ void Get_Begin(
+ Dyn_StdConstIterator<element> &
+ o_rResult )
+ { o_rResult = new SCI_Set<FINDER>(aData); }
+ void Add(
+ const element & i_rElement )
+ { aData.insert(i_rElement); }
+
+ private:
+ typedef std::set<element, sorter> Set;
+
+ // DATA
+ sorter aSorter;
+ Set aData;
+};
+
+
+} // namespace ary
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/idl_internalgate.hxx b/autodoc/source/ary/inc/idl_internalgate.hxx
new file mode 100644
index 000000000000..3f6daff5fa21
--- /dev/null
+++ b/autodoc/source/ary/inc/idl_internalgate.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 ARY_IDL_INTERNALGATE_HXX
+#define ARY_IDL_INTERNALGATE_HXX
+
+// BASE CLASSES
+#include <ary/idl/i_gate.hxx>
+
+namespace ary
+{
+ class RepositoryCenter;
+}
+
+
+
+
+namespace ary
+{
+namespace idl
+{
+
+
+/** Provides access to the ->idl::RepositoryPartition as far as is needed
+ by the ->RepositoryCenter.
+*/
+class InternalGate : public ::ary::idl::Gate
+{
+ public:
+ virtual ~InternalGate() {}
+
+ static DYN InternalGate &
+ Create_Partition_(
+ RepositoryCenter & i_center );
+};
+
+
+
+
+} // namespace idl
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/idsort.hxx b/autodoc/source/ary/inc/idsort.hxx
new file mode 100644
index 000000000000..72dbbf0c6292
--- /dev/null
+++ b/autodoc/source/ary/inc/idsort.hxx
@@ -0,0 +1,55 @@
+/* -*- 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 ARY_IDSORT_HXX
+#define ARY_IDSORT_HXX
+
+
+/** A compare function that sorts ids of repository entities in the same
+ storage.
+
+ @see ::ary::SortedIds
+*/
+template<class COMPARE>
+struct IdSorter
+{
+ bool operator()(
+ typename COMPARE::id_type
+ i_1,
+ typename COMPARE::id_type
+ i_2 ) const
+ { return COMPARE::Lesser_(
+ COMPARE::KeyOf_(COMPARE::EntityOf_(i_1)),
+ COMPARE::KeyOf_(COMPARE::EntityOf_(i_2)) );
+ }
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/loc_internalgate.hxx b/autodoc/source/ary/inc/loc_internalgate.hxx
new file mode 100644
index 000000000000..8e31de688344
--- /dev/null
+++ b/autodoc/source/ary/inc/loc_internalgate.hxx
@@ -0,0 +1,66 @@
+/* -*- 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 ARY_LOC_INTERNALGATE_HXX
+#define ARY_LOC_INTERNALGATE_HXX
+
+// USED SERVICES
+
+namespace ary
+{
+namespace loc
+{
+ class LocationPilot;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+/** Additional access to locations for the repository implementation.
+*/
+class InternalGate
+{
+ public:
+
+ static DYN LocationPilot &
+ Create_Locations_();
+};
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/nametreenode.hxx b/autodoc/source/ary/inc/nametreenode.hxx
new file mode 100644
index 000000000000..1865e886e3f7
--- /dev/null
+++ b/autodoc/source/ary/inc/nametreenode.hxx
@@ -0,0 +1,213 @@
+/* -*- 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 ARY_NAMETREENODE_HXX
+#define ARY_NAMETREENODE_HXX
+// KORR_DEPRECATED_3.0
+// Replace by ::ary::symtree::Node.
+
+// USED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <sci_impl.hxx>
+// HACK because of SunPro 5.2 compiler bug with templates:
+#include <ary/idl/i_module.hxx>
+
+
+
+
+namespace ary
+{
+
+
+/** Implementation of a node in a namespace-tree.
+*/
+template<class ITEM_ID>
+class NameTreeNode
+{
+ public:
+ typedef NameTreeNode self;
+ typedef ITEM_ID item_id;
+ typedef StringVector::const_iterator name_iterator;
+ typedef std::map<String, item_id> Map_LocalNames;
+
+ // LIFECYCLE
+ NameTreeNode();
+ NameTreeNode(
+ const String & i_sName,
+ const self & i_rParent,
+ ITEM_ID i_nParentId );
+ virtual ~NameTreeNode();
+
+ // OPERATIONS
+ void Add_Name(
+ const String & i_sName,
+ item_id i_nId );
+ // INQUIRY
+ const String & Name() const { return Depth() > 0 ? aCompleteNameChain.back() : String::Null_(); }
+ item_id Parent() const { return nParent; }
+ intt Depth() const { return aCompleteNameChain.size(); }
+
+ bool IsEquivalent(
+ const NameTreeNode &
+ i_rNode ) const;
+ name_iterator NameChain_Begin() const { return aCompleteNameChain.begin(); }
+ name_iterator NameChain_End() const { return aCompleteNameChain.end(); }
+
+ item_id Search_Name(
+ const String & i_sName ) const;
+ void Get_Names(
+ Dyn_StdConstIterator<ITEM_ID> &
+ o_rResult ) const;
+ const Map_LocalNames &
+ LocalNames() const { return aLocalNames; }
+ private:
+ // Locals
+ Map_LocalNames & LocalNames() { return aLocalNames; }
+
+ // DATA
+ Map_LocalNames aLocalNames;
+ StringVector aCompleteNameChain;
+ item_id nParent;
+};
+
+
+
+
+// IMPLEMENTATION
+template<class ITEM_ID>
+NameTreeNode<ITEM_ID>::NameTreeNode()
+ : aLocalNames(),
+ aCompleteNameChain(),
+ nParent(0)
+{
+}
+
+template<class ITEM_ID>
+NameTreeNode<ITEM_ID>::NameTreeNode( const String & i_sName,
+ const self & i_rParent,
+ ITEM_ID i_nParentId )
+ : aLocalNames(),
+ aCompleteNameChain(),
+ nParent(i_nParentId)
+{
+ aCompleteNameChain.reserve(i_rParent.Depth()+1);
+ for ( name_iterator it = i_rParent.NameChain_Begin();
+ it != i_rParent.NameChain_End();
+ ++it )
+ {
+ aCompleteNameChain.push_back(*it);
+ }
+ aCompleteNameChain.push_back(i_sName);
+}
+
+template<class ITEM_ID>
+NameTreeNode<ITEM_ID>::~NameTreeNode()
+{
+}
+
+
+template<class ITEM_ID>
+inline void
+NameTreeNode<ITEM_ID>::Add_Name( const String & i_sName,
+ item_id i_nId )
+{
+ LocalNames().insert( typename Map_LocalNames::value_type(i_sName, i_nId) );
+}
+
+
+template<class ITEM_ID>
+inline bool
+NameTreeNode<ITEM_ID>::IsEquivalent( const NameTreeNode & i_rNode ) const
+{
+ return aCompleteNameChain == i_rNode.aCompleteNameChain;
+}
+
+template<class ITEM_ID>
+inline ITEM_ID
+NameTreeNode<ITEM_ID>::Search_Name( const String & i_sName ) const
+{
+ return csv::value_from_map(LocalNames(),i_sName, ITEM_ID(0));
+}
+
+template<class ITEM_ID>
+inline void
+NameTreeNode<ITEM_ID>::Get_Names( Dyn_StdConstIterator<ITEM_ID> & o_rResult ) const
+{
+ o_rResult = new SCI_DataInMap<String,item_id>(LocalNames());
+}
+
+
+// HACK because of SunPro 5.2 compiler bug with templates:
+// ary::idl::Module has to be "FIND_NODE::node_type"
+// must be solved later somehow.
+template <class FIND_NODE>
+typename FIND_NODE::id_type
+Search_SubTree( const ary::idl::Module & i_rStart,
+ const FIND_NODE & i_rNodeFinder )
+{
+ const ary::idl::Module *
+ ret = &i_rStart;
+
+ for ( StringVector::const_iterator it = i_rNodeFinder.Begin();
+ it != i_rNodeFinder.End() AND ret != 0;
+ ++it )
+ {
+ ret = i_rNodeFinder(ret->Search_Name(*it));
+ }
+
+ typename FIND_NODE::id_type nret(0);
+ return ret != 0
+ ? ret->Search_Name(i_rNodeFinder.Name2Search())
+ : nret;
+}
+
+template <class FIND_NODE>
+typename FIND_NODE::id_type
+Search_SubTree_UpTillRoot( const ary::idl::Module & i_rStart,
+ const FIND_NODE & i_rNodeFinder )
+{
+ typename FIND_NODE::id_type
+ ret(0);
+ for ( const ary::idl::Module * start = &i_rStart;
+ start != 0 AND NOT ret.IsValid();
+ start = i_rNodeFinder(start->Owner()) )
+ {
+ ret = Search_SubTree( *start,
+ i_rNodeFinder );
+ }
+ return ret;
+}
+// END Hack for SunPro 5.2 compiler bug.
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/reposy.hxx b/autodoc/source/ary/inc/reposy.hxx
new file mode 100644
index 000000000000..8668d2e47ef3
--- /dev/null
+++ b/autodoc/source/ary/inc/reposy.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ARY_REPOSY_HXX
+#define ARY_REPOSY_HXX
+
+// BASE CLASSES
+#include <ary/ary.hxx>
+// USED SERVICES
+#include <cosv/ploc_dir.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class InternalGate;
+}
+namespace idl
+{
+ class InternalGate;
+}
+} // namespace ary
+
+
+
+
+namespace ary
+{
+
+
+/** Implements ::ary::Repository.
+
+ @see Repository
+*/
+
+class RepositoryCenter : public ::ary::Repository
+{
+ public:
+ // LIFECYCLE
+ RepositoryCenter();
+ virtual ~RepositoryCenter();
+
+ // INHERITED
+ // Interface Repository:
+ virtual const cpp::Gate & Gate_Cpp() const;
+ virtual const idl::Gate & Gate_Idl() const;
+ virtual const String & Title() const;
+ virtual cpp::Gate & Gate_Cpp();
+ virtual idl::Gate & Gate_Idl();
+ virtual void Set_Title(const String & i_sName );
+
+ private:
+ // DATA
+ String sDisplayedName; /// Name to be displayed for human users.
+ csv::ploc::Directory
+ aLocation;
+ Dyn<cpp::InternalGate>
+ pCppPartition;
+ Dyn<idl::InternalGate>
+ pIdlPartition;
+};
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/sci_impl.hxx b/autodoc/source/ary/inc/sci_impl.hxx
new file mode 100644
index 000000000000..491e356c58f9
--- /dev/null
+++ b/autodoc/source/ary/inc/sci_impl.hxx
@@ -0,0 +1,416 @@
+/* -*- 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 ARY_SCI_IMPL_HXX
+#define ARY_SCI_IMPL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/stdconstiter.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+
+
+//************************* SCI_Vector **********************************//
+
+template <class ELEM>
+class SCI_Vector : public StdConstIterator<ELEM>
+{
+ public:
+ typedef std::vector<ELEM> source;
+ typedef typename source::const_iterator source_iterator;
+
+ SCI_Vector(
+ const source & i_rSource );
+ virtual ~SCI_Vector();
+
+ private:
+ // Interface StdConstIterator<>:
+ virtual void do_Advance();
+ virtual const ELEM *
+ inq_CurElement() const;
+ virtual bool inq_IsSorted() const;
+
+ // DATA
+ source_iterator itRun;
+ source_iterator itEnd;
+};
+
+
+
+//************************* SCI_Map **********************************//
+
+template <class KEY, class VALUE>
+class SCI_Map : public StdConstIterator< typename std::map<KEY,VALUE>::value_type >
+{
+ public:
+ typedef std::map<KEY,VALUE> source;
+ typedef typename source::const_iterator source_iterator;
+
+ SCI_Map(
+ const source & i_rSource );
+ virtual ~SCI_Map();
+
+ private:
+ // Interface StdConstIterator<>:
+ virtual void do_Advance();
+ virtual const typename std::map<KEY,VALUE>::value_type *
+ inq_CurElement() const;
+ virtual bool inq_IsSorted() const;
+
+ // DATA
+ source_iterator itRun;
+ source_iterator itEnd;
+};
+
+
+//************************* SCI_MultiMap **********************************//
+
+template <class KEY, class VALUE>
+class SCI_MultiMap : public StdConstIterator< typename std::multimap<KEY,VALUE>::value_type >
+{
+ public:
+ typedef std::multimap<KEY,VALUE> source;
+ typedef typename source::const_iterator source_iterator;
+
+ SCI_MultiMap(
+ const source & i_rSource );
+ SCI_MultiMap(
+ source_iterator i_begin,
+ source_iterator i_end );
+ virtual ~SCI_MultiMap();
+
+ private:
+ // Interface StdConstIterator<>:
+ virtual void do_Advance();
+ virtual const typename std::multimap<KEY,VALUE>::value_type *
+ inq_CurElement() const;
+ virtual bool inq_IsSorted() const;
+
+ // DATA
+ source_iterator itRun;
+ source_iterator itEnd;
+};
+
+
+
+//************************* SCI_Set **********************************//
+
+
+template <class TYPES>
+class SCI_Set : public StdConstIterator<typename TYPES::element_type>
+{
+ public:
+ typedef typename TYPES::element_type element;
+ typedef typename TYPES::sort_type sorter;
+ typedef std::set<element, sorter> source;
+ typedef typename source::const_iterator source_iterator;
+
+ SCI_Set(
+ const source & i_rSource );
+ virtual ~SCI_Set();
+
+ private:
+ // Interface StdConstIterator<>:
+ virtual void do_Advance();
+ virtual const element *
+ inq_CurElement() const;
+ virtual bool inq_IsSorted() const;
+
+ // DATA
+ source_iterator itRun;
+ source_iterator itEnd;
+};
+
+//************************* SCI_DataInMap **********************************//
+
+template <class KEY, class VALUE>
+class SCI_DataInMap : public StdConstIterator<VALUE>
+{
+ public:
+ typedef std::map<KEY,VALUE> source;
+ typedef typename source::const_iterator source_iterator;
+
+ SCI_DataInMap(
+ const source & i_rSource );
+ virtual ~SCI_DataInMap();
+
+ private:
+ // Interface StdConstIterator<>:
+ virtual void do_Advance();
+ virtual const VALUE *
+ inq_CurElement() const;
+ virtual bool inq_IsSorted() const;
+
+ // DATA
+ source_iterator itRun;
+ source_iterator itEnd;
+};
+
+
+
+
+
+//********************************************************************//
+
+
+// IMPLEMENTATION
+
+template <class ELEM>
+SCI_Vector<ELEM>::SCI_Vector( const source & i_rSource )
+ : itRun(i_rSource.begin()),
+ itEnd(i_rSource.end())
+{
+}
+
+template <class ELEM>
+SCI_Vector<ELEM>::~SCI_Vector()
+{
+}
+
+
+template <class ELEM>
+void
+SCI_Vector<ELEM>::do_Advance()
+{
+ if (itRun != itEnd)
+ ++itRun;
+}
+
+template <class ELEM>
+const ELEM *
+SCI_Vector<ELEM>::inq_CurElement() const
+{
+ if (itRun != itEnd)
+ return &(*itRun);
+ return 0;
+}
+
+template <class ELEM>
+bool
+SCI_Vector<ELEM>::inq_IsSorted() const
+{
+ return false;
+}
+
+
+
+
+template <class KEY, class VALUE>
+SCI_Map<KEY,VALUE>::SCI_Map( const source & i_rSource )
+ : itRun(i_rSource.begin()),
+ itEnd(i_rSource.end())
+{
+}
+
+template <class KEY, class VALUE>
+SCI_Map<KEY,VALUE>::~SCI_Map()
+{
+}
+
+template <class KEY, class VALUE>
+void
+SCI_Map<KEY,VALUE>::do_Advance()
+{
+ if (itRun != itEnd)
+ ++itRun;
+}
+
+template <class KEY, class VALUE>
+const typename std::map<KEY,VALUE>::value_type *
+SCI_Map<KEY,VALUE>::inq_CurElement() const
+{
+ if (itRun != itEnd)
+ return &(*itRun);
+ return 0;
+}
+
+
+template <class KEY, class VALUE>
+bool
+SCI_Map<KEY,VALUE>::inq_IsSorted() const
+{
+ return true;
+}
+
+
+
+
+
+
+
+template <class KEY, class VALUE>
+SCI_MultiMap<KEY,VALUE>::SCI_MultiMap( const source & i_rSource )
+ : itRun(i_rSource.begin()),
+ itEnd(i_rSource.end())
+{
+}
+
+template <class KEY, class VALUE>
+SCI_MultiMap<KEY,VALUE>::SCI_MultiMap( source_iterator i_begin,
+ source_iterator i_end )
+ : itRun(i_begin),
+ itEnd(i_end)
+{
+}
+
+template <class KEY, class VALUE>
+SCI_MultiMap<KEY,VALUE>::~SCI_MultiMap()
+{
+}
+
+template <class KEY, class VALUE>
+void
+SCI_MultiMap<KEY,VALUE>::do_Advance()
+{
+ if (itRun != itEnd)
+ ++itRun;
+}
+
+template <class KEY, class VALUE>
+const typename std::multimap<KEY,VALUE>::value_type *
+SCI_MultiMap<KEY,VALUE>::inq_CurElement() const
+{
+ if (itRun != itEnd)
+ return &(*itRun);
+ return 0;
+}
+
+
+template <class KEY, class VALUE>
+bool
+SCI_MultiMap<KEY,VALUE>::inq_IsSorted() const
+{
+ return true;
+}
+
+
+
+
+
+
+
+
+template <class ELEM>
+SCI_Set<ELEM>::SCI_Set( const source & i_rSource )
+ : itRun(i_rSource.begin()),
+ itEnd(i_rSource.end())
+{
+}
+
+template <class ELEM>
+SCI_Set<ELEM>::~SCI_Set()
+{
+}
+
+
+template <class ELEM>
+void
+SCI_Set<ELEM>::do_Advance()
+{
+ if (itRun != itEnd)
+ ++itRun;
+}
+
+template <class ELEM>
+const typename SCI_Set<ELEM>::element *
+SCI_Set<ELEM>::inq_CurElement() const
+{
+ if (itRun != itEnd)
+ return &(*itRun);
+ return 0;
+}
+
+template <class ELEM>
+bool
+SCI_Set<ELEM>::inq_IsSorted() const
+{
+ return true;
+}
+
+
+
+
+
+
+
+template <class KEY, class VALUE>
+SCI_DataInMap<KEY,VALUE>::SCI_DataInMap( const source & i_rSource )
+ : itRun(i_rSource.begin()),
+ itEnd(i_rSource.end())
+{
+}
+
+template <class KEY, class VALUE>
+SCI_DataInMap<KEY,VALUE>::~SCI_DataInMap()
+{
+}
+
+template <class KEY, class VALUE>
+void
+SCI_DataInMap<KEY,VALUE>::do_Advance()
+{
+ if (itRun != itEnd)
+ ++itRun;
+}
+
+template <class KEY, class VALUE>
+const VALUE *
+SCI_DataInMap<KEY,VALUE>::inq_CurElement() const
+{
+ if (itRun != itEnd)
+ return &(*itRun).second;
+ return 0;
+}
+
+
+template <class KEY, class VALUE>
+bool
+SCI_DataInMap<KEY,VALUE>::inq_IsSorted() const
+{
+ return true;
+}
+
+
+
+
+
+
+
+} // namespace ary
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/slots.hxx b/autodoc/source/ary/inc/slots.hxx
new file mode 100644
index 000000000000..bcba75defda9
--- /dev/null
+++ b/autodoc/source/ary/inc/slots.hxx
@@ -0,0 +1,166 @@
+/* -*- 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 ARY_SLOTS_HXX
+#define ARY_SLOTS_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/ceslot.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/ary_disp.hxx>
+#include <ary/types.hxx>
+#include <ary/sequentialids.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_slntry.hxx>
+
+
+
+namespace ary
+{
+
+
+class Slot_Null : public Slot
+{
+ public:
+ virtual ~Slot_Null();
+
+ virtual void StoreAt(
+ Display & o_rDestination ) const;
+ virtual uintt Size() const;
+
+ private:
+ virtual void StoreEntries(
+ Display & o_rDestination ) const;
+};
+
+class Slot_MapLocalCe : public Slot
+{
+ public:
+ Slot_MapLocalCe(
+ const cpp::Map_LocalCe & i_rData );
+ virtual ~Slot_MapLocalCe();
+ virtual uintt Size() const;
+
+ private:
+ virtual void StoreEntries(
+ Display & o_rDestination ) const;
+ // DATA
+ const cpp::Map_LocalCe *
+ pData;
+};
+
+class Slot_MapOperations : public Slot
+{
+ public:
+ Slot_MapOperations(
+ const std::multimap<String, cpp::Ce_id> &
+ i_rData );
+ virtual ~Slot_MapOperations();
+ virtual uintt Size() const;
+
+ private:
+ virtual void StoreEntries(
+ Display & o_rDestination ) const;
+ // DATA
+ const std::multimap<String, cpp::Ce_id> *
+ pData;
+};
+
+class Slot_ListLocalCe : public Slot
+{
+ public:
+ Slot_ListLocalCe(
+ const cpp::List_LocalCe &
+ i_rData );
+ virtual ~Slot_ListLocalCe();
+
+ virtual uintt Size() const;
+
+ private:
+ virtual void StoreEntries(
+ Display & o_rDestination ) const;
+ // DATA
+ const cpp::List_LocalCe *
+ pData;
+};
+
+template <class ID>
+class Slot_SequentialIds : public Slot
+{
+ public:
+ Slot_SequentialIds(
+ const SequentialIds<ID> &
+ i_rData )
+ : pData(&i_rData) {}
+ virtual ~Slot_SequentialIds();
+
+ virtual uintt Size() const;
+
+ private:
+ virtual void StoreEntries(
+ Display & o_rDestination ) const;
+ // DATA
+ const SequentialIds<ID> *
+ pData;
+};
+
+
+template <class ID>
+Slot_SequentialIds<ID>::~Slot_SequentialIds()
+{
+}
+
+template <class ID>
+uintt
+Slot_SequentialIds<ID>::Size() const
+{
+ return pData->Size();
+}
+
+template <class ID>
+void
+Slot_SequentialIds<ID>::StoreEntries( Display & o_rDestination ) const
+{
+ for ( typename SequentialIds<ID>::const_iterator it = pData->Begin();
+ it != pData->End();
+ ++it )
+ {
+ o_rDestination.DisplaySlot_Rid( (*it).Value() );
+ }
+}
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/sorted_idset.hxx b/autodoc/source/ary/inc/sorted_idset.hxx
new file mode 100644
index 000000000000..c5dff11bcaeb
--- /dev/null
+++ b/autodoc/source/ary/inc/sorted_idset.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 ARY_SORTED_IDSET_HXX
+#define ARY_SORTED_IDSET_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <set>
+ // PARAMETERS
+#include "csi_impl.hxx"
+
+
+template <class XY> class SortedIdSet;
+
+class Interface_2s
+{
+ public:
+ /// Checks for double occurences
+ void Add_ExportingService(
+ Ce_id i_nId );
+ void Get_ExportingServices(
+ Dyn_StdConstIterator<Ce_id> &
+ o_rResult ) const;
+ private:
+ Dyn<SortedIdSet> pExportingServices;
+};
+
+
+
+namespace ary
+{
+
+template <class TYPES>
+class SortedIdSet
+{
+ public:
+ typedef typename TYPES::element_type element;
+ typedef typename TYPES::sort_type sorter;
+ typedef typename TYPES::find_type finder;
+
+ SortedIdSet(
+ const finder & i_rFinder )
+ : aSorter(i_rFinder),
+ aData(aSorter) {}
+ ~SortedIdSet() {}
+
+ void Get_Begin(
+ Dyn_StdConstIterator<element> &
+ o_rResult )
+ { o_rResult = new SCI_Set<FINDER>(aData); }
+ void Add(
+ const element & i_rElement )
+ { aData.insert(i_rElement); }
+
+ private:
+ typedef std::set<element, sorter> Set;
+
+ // DATA
+ sorter aSorter;
+ Set aData;
+};
+
+
+} // namespace ary
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/sortedids.hxx b/autodoc/source/ary/inc/sortedids.hxx
new file mode 100644
index 000000000000..508f3bc2e0cc
--- /dev/null
+++ b/autodoc/source/ary/inc/sortedids.hxx
@@ -0,0 +1,240 @@
+/* -*- 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 ARY_SORTEDIDS_HXX
+#define ARY_SORTEDIDS_HXX
+
+
+// USED SERVICES
+#include <algorithm>
+#include <cosv/tpl/range.hxx>
+
+
+
+
+namespace ary
+{
+
+
+/** Implementation of a set of children to an entity in the Autodoc
+ repository. The children are sorted.
+
+ @tpl COMPARE
+ Needs to provide types:
+ entity_base_type
+ id_type
+ key_type
+
+ and functions:
+ static entity_base_type &
+ EntityOf_(
+ id_type i_id );
+ static const key_type &
+ KeyOf_(
+ const entity_type & i_entity );
+ static bool Lesser_(
+ const key_type & i_1,
+ const key_type & i_2 );
+*/
+template<class COMPARE>
+class SortedIds
+{
+ public:
+ typedef typename COMPARE::id_type element_t;
+ typedef typename COMPARE::key_type key_t;
+ typedef std::vector<element_t> data_t;
+ typedef typename data_t::const_iterator const_iterator;
+ typedef typename data_t::iterator iterator;
+ typedef csv::range<const_iterator> search_result_t;
+
+ // LIFECYCLE
+ explicit SortedIds(
+ std::size_t i_reserve = 0 );
+ ~SortedIds();
+
+ // OPERATIONS
+ void Add(
+ element_t i_elem );
+ // INQUIRY
+ const_iterator Begin() const;
+ const_iterator End() const;
+
+ element_t Search(
+ const key_t & i_key ) const;
+ search_result_t SearchAll(
+ const key_t & i_key ) const;
+ const_iterator LowerBound(
+ const key_t & i_key ) const;
+
+ private:
+ typedef typename COMPARE::entity_base_type entity_t;
+
+ // Locals
+ iterator LowerBound(
+ const key_t & i_key );
+
+ static const key_t &
+ KeyOf_(
+ element_t i_child );
+ template <class ITER>
+ static ITER impl_LowerBound_(
+ ITER i_begin,
+ ITER i_end,
+ const key_t & i_key );
+
+ // DATA
+ data_t aData;
+};
+
+
+
+
+// IMPLEMENTATION
+template<class COMPARE>
+inline const typename SortedIds<COMPARE>::key_t &
+SortedIds<COMPARE>::KeyOf_(element_t i_child)
+{
+ return COMPARE::KeyOf_(COMPARE::EntityOf_(i_child));
+}
+
+template<class COMPARE>
+SortedIds<COMPARE>::SortedIds(std::size_t i_reserve)
+ : aData()
+{
+ if (i_reserve > 0)
+ aData.reserve(i_reserve);
+}
+
+template<class COMPARE>
+SortedIds<COMPARE>::~SortedIds()
+{
+}
+
+template<class COMPARE>
+void
+SortedIds<COMPARE>::Add(element_t i_elem)
+{
+ aData.insert( LowerBound( KeyOf_(i_elem) ),
+ i_elem );
+}
+
+template<class COMPARE>
+inline typename SortedIds<COMPARE>::const_iterator
+SortedIds<COMPARE>::Begin() const
+{
+ return aData.begin();
+}
+
+template<class COMPARE>
+inline typename SortedIds<COMPARE>::const_iterator
+SortedIds<COMPARE>::End() const
+{
+ return aData.end();
+}
+
+template<class COMPARE>
+typename SortedIds<COMPARE>::element_t
+SortedIds<COMPARE>::Search(const key_t & i_key) const
+{
+ const_iterator
+ ret = LowerBound(i_key);
+ return ret != aData.end() AND NOT COMPARE::Lesser_(i_key, KeyOf_(*ret))
+ ? *ret
+ : element_t(0);
+}
+
+template<class COMPARE>
+typename SortedIds<COMPARE>::search_result_t
+SortedIds<COMPARE>::SearchAll(const key_t & i_key) const
+{
+ const_iterator
+ r1 = LowerBound(i_key);
+ const_iterator
+ r2 = r1;
+ while ( r2 != aData.end()
+ AND NOT COMPARE::Lesser_(i_key, KeyOf_(*r2)) )
+ {
+ ++r2;
+ }
+
+ return csv::make_range(r1,r2);
+}
+
+template<class COMPARE>
+inline typename SortedIds<COMPARE>::const_iterator
+SortedIds<COMPARE>::LowerBound(const key_t & i_key) const
+{
+ return impl_LowerBound_( aData.begin(),
+ aData.end(),
+ i_key );
+}
+
+template<class COMPARE>
+inline typename SortedIds<COMPARE>::iterator
+SortedIds<COMPARE>::LowerBound(const key_t & i_key)
+{
+ return impl_LowerBound_( aData.begin(),
+ aData.end(),
+ i_key );
+}
+
+template<class COMPARE>
+template <class ITER>
+ITER
+SortedIds<COMPARE>::impl_LowerBound_( ITER i_begin,
+ ITER i_end,
+ const key_t & i_key )
+{
+ ITER i1 = i_begin;
+ ITER i2 = i_end;
+
+ for ( ITER it = i1 + (i2-i1)/2;
+ i1 != i2;
+ it = i1 + (i2-i1)/2 )
+ {
+ if ( COMPARE::Lesser_(KeyOf_(*it), i_key) )
+ {
+ i1 = it;
+ ++i1;
+ }
+ else
+ {
+ i2 = it;
+ }
+ } // end for
+
+ return i1;
+}
+
+
+
+
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/store/s_base.hxx b/autodoc/source/ary/inc/store/s_base.hxx
new file mode 100644
index 000000000000..ebc2f8bafa5c
--- /dev/null
+++ b/autodoc/source/ary/inc/store/s_base.hxx
@@ -0,0 +1,183 @@
+/* -*- 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 ARY_STORE_S_BASE_HXX
+#define ARY_STORE_S_BASE_HXX
+
+// USED SERVICES
+#include <deque>
+#include <cosv/tpl/tpltools.hxx>
+
+
+
+
+namespace ary
+{
+namespace stg
+{
+
+
+/** The basic storage container of the repository.
+
+ @collab Storage
+ Implements Storage. Not used elsewhere.
+
+ @tpl ENTITY
+ The type of *it, where it is of type c_iter, has to be ENTITY * const.
+*/
+template <class ENTITY>
+class Base
+{
+ public:
+ // LIFECYCLE
+ typedef std::deque< ENTITY* > impl_type;
+ typedef typename impl_type::const_iterator c_iter;
+
+
+ /** @param i_nrOfReservedItems
+ The number of actual items to reserve, including the item
+ at index [0] that is always empty and unused.
+ */
+ Base(
+ uintt i_nrOfReservedItems );
+ ~Base();
+
+ // OPERATORS
+ ENTITY * operator[](
+ uintt i_index ) const;
+ // OPERATIONS
+ uintt Add_Entity( /// @return the index of the new element.
+ DYN ENTITY & pass_newEntity );
+ DYN ENTITY * Set_Entity( /// @return the previous value.
+ uintt i_index,
+ DYN ENTITY & pass_newEntity );
+ // INQUIRY
+ uintt Size() const; /// Incl. reserved size.
+ uintt ReservedSize() const; /// Incl. zero for element at [0].
+
+ c_iter Begin() const; /// @return location of index 1, because 0 is always empty.
+ c_iter BeginUnreserved() const;
+ c_iter End() const;
+
+ private:
+ // DATA
+ impl_type aData;
+ uintt nReservedSize;
+};
+
+
+
+// IMPLEMENTATION
+
+template <class ENTITY>
+Base<ENTITY>::Base(uintt i_nrOfReservedItems)
+ : aData(i_nrOfReservedItems, 0),
+ nReservedSize(i_nrOfReservedItems)
+{
+}
+
+template <class ENTITY>
+Base<ENTITY>::~Base()
+{
+ csv::erase_container_of_heap_ptrs(aData);
+}
+
+
+template <class ENTITY>
+ENTITY *
+Base<ENTITY>::operator[](uintt i_index) const
+{
+ if (i_index < aData.size())
+ return aData[i_index];
+ return 0;
+}
+
+template <class ENTITY>
+uintt
+Base<ENTITY>::Add_Entity(DYN ENTITY & pass_newEntity)
+{
+ aData.push_back(&pass_newEntity);
+ return aData.size() - 1;
+}
+
+template <class ENTITY>
+DYN ENTITY *
+Base<ENTITY>::Set_Entity( uintt i_index,
+ DYN ENTITY & pass_newEntity )
+{
+ csv_assert(i_index != 0 AND i_index < aData.size());
+
+ Dyn<ENTITY>
+ ret(aData[i_index]);
+ aData[i_index] = &pass_newEntity;
+ return ret.Release();
+}
+
+template <class ENTITY>
+uintt
+Base<ENTITY>::Size() const
+{
+ return aData.size();
+}
+
+template <class ENTITY>
+uintt
+Base<ENTITY>::ReservedSize() const
+{
+ return nReservedSize;
+}
+
+template <class ENTITY>
+typename Base<ENTITY>::c_iter
+Base<ENTITY>::Begin() const
+{
+ return aData.begin() + 1;
+}
+
+template <class ENTITY>
+typename Base<ENTITY>::c_iter
+Base<ENTITY>::BeginUnreserved() const
+{
+ return aData.begin() + nReservedSize;
+}
+
+template <class ENTITY>
+typename Base<ENTITY>::c_iter
+Base<ENTITY>::End() const
+{
+ return aData.end();
+}
+
+
+
+
+} // namespace stg
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/store/s_iterator.hxx b/autodoc/source/ary/inc/store/s_iterator.hxx
new file mode 100644
index 000000000000..fb5f0d9e0f76
--- /dev/null
+++ b/autodoc/source/ary/inc/store/s_iterator.hxx
@@ -0,0 +1,240 @@
+/* -*- 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 ARY_STORE_S_ITERATOR_HXX
+#define ARY_STORE_S_ITERATOR_HXX
+
+// USED SERVICES
+#include <ary/getncast.hxx>
+#include "s_base.hxx"
+
+
+
+
+namespace ary
+{
+namespace stg
+{
+
+
+template <class> class const_iterator;
+template <class, class> class const_filter_iterator;
+
+
+/** A non-const iterator that runs on a ->Storage<>.
+
+ @collab Storage<>
+*/
+template <class ENTITY>
+class iterator : public std::iterator<std::forward_iterator_tag, ENTITY>
+{
+ public:
+ typedef iterator<ENTITY> self;
+ typedef typename Base<ENTITY>::impl_type impl_container;
+ typedef typename impl_container::const_iterator impl_type;
+
+ // OPERATORS
+ iterator()
+ : itImpl() {}
+ explicit iterator(
+ impl_type i_impl)
+ : itImpl(i_impl) {}
+ ~iterator() {}
+
+ bool operator==(
+ self i_other ) const
+ { return itImpl == i_other.itImpl; }
+ bool operator!=(
+ self i_other ) const
+ { return itImpl != i_other.itImpl; }
+ ENTITY & operator*() const { csv_assert(*itImpl != 0);
+ return *(*itImpl); }
+ self & operator++() { ++itImpl; return *this; }
+ self operator++(int) { return self(itImpl++); }
+
+ private:
+ friend class const_iterator<ENTITY>; // For const_iterator(iterator);
+ impl_type ImplIterator() const { return itImpl; }
+
+ // DATA
+ impl_type itImpl;
+};
+
+
+/** A const iterator that runs on a ->Storage<>.
+
+ @collab Storage<>
+*/
+template <class ENTITY>
+class const_iterator :
+ public std::iterator<std::forward_iterator_tag, const ENTITY>
+{
+ public:
+ typedef const_iterator<ENTITY> self;
+ typedef typename Base<ENTITY>::impl_type impl_container;
+ typedef typename impl_container::const_iterator impl_type;
+
+ // OPERATORS
+ const_iterator()
+ : itImpl() {}
+ explicit const_iterator(
+ impl_type i_impl)
+ : itImpl(i_impl) {}
+ const_iterator( // implicit conversions allowed
+ ::ary::stg::iterator<ENTITY> i_it )
+ : itImpl(i_it.ImplIterator()) {}
+ ~const_iterator() {}
+
+ bool operator==(
+ self i_other ) const
+ { return itImpl == i_other.itImpl; }
+ bool operator!=(
+ self i_other ) const
+ { return itImpl != i_other.itImpl; }
+ const ENTITY & operator*() const { csv_assert(*itImpl != 0);
+ return *(*itImpl); }
+ self & operator++() { ++itImpl; return *this; }
+ self operator++(int) { return self(itImpl++); }
+
+ private:
+ // DATA
+ impl_type itImpl;
+};
+
+
+
+
+
+/** A non const iterator that runs on a ->Storage<> and returns only
+ the elements of a specific type.
+
+ @tpl ENTITY
+ The element type of the ->Storage<>
+
+ @tpl FILTER
+ The actual type of the returned items. FILTER needs to be derived from
+ ENTITY.
+
+ @collab Storage<>
+*/
+template <class ENTITY, class FILTER>
+class filter_iterator :
+ public std::iterator<std::forward_iterator_tag, FILTER>
+{
+ public:
+ typedef filter_iterator<ENTITY,FILTER> self;
+ typedef ::ary::stg::iterator<ENTITY> impl_type;
+
+ // OPERATORS
+ filter_iterator()
+ : itCur() {}
+ explicit filter_iterator(
+ impl_type i_cur )
+ : itCur(i_cur) {}
+ ~filter_iterator() {}
+
+ bool operator==(
+ self i_other ) const
+ { return itCur == i_other.itCur; }
+ bool operator!=(
+ self i_other ) const
+ { return itCur != i_other.itCur; }
+ FILTER & operator*() const { csv_assert(IsValid());
+ return static_cast< FILTER& >(*itCur); }
+ self & operator++() { ++itCur;
+ return *this; }
+ self operator++(int) { return self(itCur++); }
+ bool IsValid() const { return ary::is_type<FILTER>(*itCur); }
+
+ private:
+ friend class const_filter_iterator<ENTITY,FILTER>; // For const_filter_iterator(filter_iterator);
+ impl_type ImplCur() const { return itCur; }
+
+ // DATA
+ impl_type itCur;
+};
+
+
+/** A const iterator that runs on a ->Storage<> and returns only
+ the elements of a specific type.
+
+ @tpl ENTITY
+ The element type of the ->Storage<>
+
+ @tpl FILTER
+ The actual type of the returned items. FILTER needs to be derived from
+ ENTITY.
+
+ @collab Storage<>
+*/
+template <class ENTITY, class FILTER>
+class const_filter_iterator :
+ public std::iterator<std::forward_iterator_tag, const FILTER>
+{
+ public:
+ typedef const_filter_iterator<ENTITY,FILTER> self;
+ typedef ::ary::stg::const_iterator<ENTITY> impl_type;
+
+ // OPERATORS
+ const_filter_iterator()
+ : itCur() {}
+ explicit const_filter_iterator(
+ impl_type i_cur )
+ : itCur(i_cur) {}
+ explicit const_filter_iterator( // implicit conversions allowed
+ filter_iterator<ENTITY,FILTER>
+ i_it )
+ : itCur(i_it.ImplCur()) {}
+ ~const_filter_iterator()
+ {}
+ bool operator==(
+ self i_other ) const
+ { return itCur == i_other.itCur; }
+ bool operator!=(
+ self i_other ) const
+ { return itCur != i_other.itCur; }
+ const FILTER & operator*() const { csv_assert(IsValid());
+ return static_cast< const FILTER& >(*itCur); }
+ self & operator++() { ++itCur;
+ return *this; }
+ self operator++(int) { return self(itCur++); }
+ bool IsValid() const { return ary::is_type<FILTER>(*itCur); }
+
+ private:
+ // DATA
+ impl_type itCur;
+};
+
+
+
+
+} // namespace stg
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/store/s_storage.hxx b/autodoc/source/ary/inc/store/s_storage.hxx
new file mode 100644
index 000000000000..0b02e1a2cd53
--- /dev/null
+++ b/autodoc/source/ary/inc/store/s_storage.hxx
@@ -0,0 +1,297 @@
+/* -*- 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 ARY_STORE_S_STORAGE_HXX
+#define ARY_STORE_S_STORAGE_HXX
+
+// USED SERVICES
+#include <ary/types.hxx>
+#include "s_iterator.hxx"
+
+
+
+
+namespace ary
+{
+namespace stg
+{
+
+
+/** The storage unit of one class of commomly stored repository
+ entities.
+*/
+template <class ENTITY>
+class Storage
+{
+ public:
+ typedef Base<ENTITY> container_type;
+ typedef ary::TypedId<ENTITY> key_type;
+ typedef stg::const_iterator<ENTITY> c_iter;
+ typedef stg::iterator<ENTITY> iter;
+
+ // LIFECYCLE
+ virtual ~Storage() {}
+
+ // OPERATORS
+ const ENTITY & operator[](
+ key_type i_id ) const;
+ ENTITY & operator[](
+ key_type i_id );
+ const ENTITY & operator[](
+ Rid i_index ) const;
+ ENTITY & operator[](
+ Rid i_index );
+ // OPERATIONS
+ /// Sets the id of the new entity.
+ key_type Store_Entity(
+ DYN ENTITY & pass_newEntity );
+ /// Sets the id of the new entity.
+ void Set_Reserved(
+ uintt i_index,
+ DYN ENTITY & pass_newEntity );
+ /// Sets the id of the new entity.
+ void Replace_Entity(
+ key_type i_index,
+ DYN ENTITY & pass_newEntity );
+ // INQUIRY
+ bool Exists(
+ key_type i_id ) const;
+ bool Exists(
+ Rid i_index ) const;
+
+ c_iter Begin() const;
+ c_iter BeginUnreserved() const;
+ c_iter End() const;
+
+ // ACCESS
+ iter Begin();
+ iter BeginUnreserved();
+ iter End();
+
+ protected:
+ Storage(
+ uintt i_nrOfReservedItems );
+ private:
+ // DATA
+ container_type aData;
+};
+
+
+
+
+
+
+// IMPLEMENTATION
+
+// Used later, so implemented first.
+template <class ENTITY>
+inline bool
+Storage<ENTITY>::Exists(Rid i_index) const
+{
+ return 0 < i_index AND i_index < aData.Size();
+}
+
+template <class ENTITY>
+inline bool
+Storage<ENTITY>::Exists(key_type i_id) const
+{
+ return Exists(i_id.Value());
+}
+
+template <class ENTITY>
+inline const ENTITY &
+Storage<ENTITY>::operator[](Rid i_index) const
+{
+ csv_assert(Exists(i_index));
+ return * aData[i_index];
+}
+
+template <class ENTITY>
+inline ENTITY &
+Storage<ENTITY>::operator[](Rid i_index)
+{
+ csv_assert(Exists(i_index));
+ return * aData[i_index];
+}
+
+template <class ENTITY>
+inline const ENTITY &
+Storage<ENTITY>::operator[](key_type i_id) const
+{
+ return operator[](i_id.Value());
+}
+
+template <class ENTITY>
+inline ENTITY &
+Storage<ENTITY>::operator[](key_type i_id)
+{
+ return operator[](i_id.Value());
+}
+
+template <class ENTITY>
+typename Storage<ENTITY>::key_type
+Storage<ENTITY>::Store_Entity(DYN ENTITY & pass_newEntity)
+{
+ csv_assert( aData.Size() >= aData.ReservedSize() );
+ Rid
+ ret( aData.Add_Entity(pass_newEntity) );
+ pass_newEntity.Set_Id(ret);
+ return key_type(ret);
+}
+
+template <class ENTITY>
+void
+Storage<ENTITY>::Set_Reserved(uintt i_index,
+ DYN ENTITY & pass_newEntity)
+{
+ // 0 must not be used.
+ csv_assert( i_index != 0 );
+ // Make sure, i_index actually is the id of a reserved item.
+ csv_assert( i_index < aData.ReservedSize() );
+
+ // If there was a previous entity, it will be deleted by
+ // the destructor of pOldEntity.
+ Dyn<ENTITY>
+ pOldEntity(aData.Set_Entity(i_index, pass_newEntity));
+ pass_newEntity.Set_Id(i_index);
+}
+
+template <class ENTITY>
+void
+Storage<ENTITY>::Replace_Entity( key_type i_index,
+ DYN ENTITY & pass_newEntity )
+{
+ uintt
+ nIndex = i_index.Value();
+ // Make sure, i_index actually is the id of an existing,
+ // non reserved entity.
+ csv_assert( csv::in_range(aData.ReservedSize(), nIndex, aData.Size()) );
+
+ // If there was a previous entity, it will be deleted by
+ // the destructor of pOldEntity.
+ Dyn<ENTITY>
+ pOldEntity(aData.Set_Entity(nIndex, pass_newEntity));
+ pass_newEntity.Set_Id(nIndex);
+}
+
+template <class ENTITY>
+inline
+typename Storage<ENTITY>::c_iter
+Storage<ENTITY>::Begin() const
+{
+ return c_iter(aData.Begin());
+}
+
+template <class ENTITY>
+inline
+typename Storage<ENTITY>::c_iter
+Storage<ENTITY>::BeginUnreserved() const
+{
+ return c_iter(aData.BeginUnreserved());
+}
+
+template <class ENTITY>
+inline
+typename Storage<ENTITY>::c_iter
+Storage<ENTITY>::End() const
+{
+ return c_iter(aData.End());
+}
+
+template <class ENTITY>
+inline
+typename Storage<ENTITY>::iter
+Storage<ENTITY>::Begin()
+{
+ return iter(aData.Begin());
+}
+
+template <class ENTITY>
+inline
+typename Storage<ENTITY>::iter
+Storage<ENTITY>::BeginUnreserved()
+{
+ return iter(aData.BeginUnreserved());
+}
+
+template <class ENTITY>
+inline
+typename Storage<ENTITY>::iter
+Storage<ENTITY>::End()
+{
+ return iter(aData.End());
+}
+
+template <class ENTITY>
+inline
+Storage<ENTITY>::Storage(uintt i_nrOfReservedItems)
+ : aData(i_nrOfReservedItems)
+{
+ // Make sure Rid and uintt are the same type, because
+ // the interface of this uses Rid, but the interface of
+ // container_type uses uintt.
+ csv_assert( sizeof(uintt) == sizeof(Rid) );
+}
+
+
+
+
+// HELPER FUNCTIONS
+
+/** @return 0, if data are not there.
+*/
+template <class ENTITY>
+inline const ENTITY *
+Search( const Storage<ENTITY> & i_storage,
+ Rid i_id )
+{
+ if (NOT i_storage.Exists(i_id))
+ return 0;
+ return &i_storage[i_id];
+}
+
+/** @return 0, if data are not there.
+*/
+template <class ENTITY>
+inline ENTITY *
+SearchAccess( const Storage<ENTITY> & i_storage,
+ Rid i_id )
+{
+ if (NOT i_storage.Exists(i_id))
+ return 0;
+ return &i_storage[i_id];
+}
+
+
+
+
+} // namespace stg
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/inc/traits_impl.hxx b/autodoc/source/ary/inc/traits_impl.hxx
new file mode 100644
index 000000000000..b7ac789e486b
--- /dev/null
+++ b/autodoc/source/ary/inc/traits_impl.hxx
@@ -0,0 +1,122 @@
+/* -*- 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 ARY_TRAITS_IMPL_HXX
+#define ARY_TRAITS_IMPL_HXX
+
+
+// USED SERVICES
+#include <ary/getncast.hxx>
+
+
+namespace ary
+{
+namespace traits
+{
+
+
+/** Finds the node assigned to an entity, if that entity has a specific
+ actual type.
+
+ @tpl NODE
+ The assumed actual type of io_node.
+*/
+template<class NODE>
+const typename NODE::node_t *
+ NodeOf(
+ const typename NODE::traits_t::entity_base_type &
+ io_node );
+
+/** Finds the node assigned to an entity, if that entity has a specific
+ actual type.
+
+ @tpl NODE
+ The assumed actual type of io_node.
+*/
+template<class NODE>
+typename NODE::node_t *
+ NodeOf(
+ typename NODE::traits_t::entity_base_type &
+ io_node );
+
+/** Finds a child to a node.
+*/
+template<class NODE, class KEY>
+typename NODE::traits_t::id_type
+ Search_Child(
+ const typename NODE::traits_t::entity_base_type &
+ i_node,
+ const KEY & i_localKey );
+
+
+
+
+// IMPLEMENTATION
+
+template<class NODE>
+const typename NODE::node_t *
+NodeOf(const typename NODE::traits_t::entity_base_type & io_node)
+{
+ const NODE *
+ pn = ary_cast<NODE>(&io_node);
+ if (pn != 0)
+ return & pn->AsNode();
+ return 0;
+}
+
+template<class NODE>
+typename NODE::node_t *
+NodeOf(typename NODE::traits_t::entity_base_type & io_node)
+{
+ NODE *
+ pn = ary_cast<NODE>(&io_node);
+ if (pn != 0)
+ return & pn->AsNode();
+ return 0;
+}
+
+template<class NODE, class KEY>
+typename NODE::traits_t::id_type
+Search_Child( const typename NODE::traits_t::entity_base_type & i_node,
+ const KEY & i_localKey )
+{
+ const NODE *
+ pn = ary_cast<NODE>(&i_node);
+ if (pn != 0)
+ return pn->Search_Child(i_localKey);
+ return typename NODE::traits_t::id_type(0);
+}
+
+
+
+
+} // namespace traits
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/info/all_dts.cxx b/autodoc/source/ary/info/all_dts.cxx
new file mode 100644
index 000000000000..a21eddc53dff
--- /dev/null
+++ b/autodoc/source/ary/info/all_dts.cxx
@@ -0,0 +1,107 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/info/all_dts.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/info/infodisp.hxx>
+
+
+namespace ary
+{
+namespace info
+{
+
+
+void
+DT_Text::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_DT_Text(*this);
+}
+
+bool
+DT_Text::inq_IsWhite() const
+{
+ return false;
+}
+
+void
+DT_MaybeLink::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_DT_MaybeLink(*this);
+}
+
+bool
+DT_MaybeLink::inq_IsWhite() const
+{
+ return false;
+}
+
+void
+DT_Whitespace::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_DT_Whitespace(*this);
+}
+
+bool
+DT_Whitespace::inq_IsWhite() const
+{
+ return true;
+}
+
+void
+DT_Eol::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_DT_Eol(*this);
+}
+
+bool
+DT_Eol::inq_IsWhite() const
+{
+ return true;
+}
+
+void
+DT_Xml::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_DT_Xml(*this);
+}
+
+bool
+DT_Xml::inq_IsWhite() const
+{
+ return false;
+}
+
+
+} // namespace info
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/info/all_tags.cxx b/autodoc/source/ary/info/all_tags.cxx
new file mode 100644
index 000000000000..5699efc5bd0f
--- /dev/null
+++ b/autodoc/source/ary/info/all_tags.cxx
@@ -0,0 +1,571 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/info/all_tags.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <limits>
+#include <ary/info/infodisp.hxx>
+#include <adc_cl.hxx>
+
+
+namespace ary
+{
+namespace info
+{
+
+
+
+//***************************** StdTag ***********************//
+
+
+StdTag::StdTag( E_AtTagId i_eId )
+ : eId(i_eId),
+ // aText,
+ pNext(0)
+{
+}
+
+bool
+StdTag::Add_SpecialMeaningToken( const char * ,
+ intt )
+{
+ // Does nothing
+
+ // KORR_FUTURE
+ // Should be a logical exception:
+ // csv_assert(false);
+ return false;
+}
+
+UINT8
+StdTag::NrOfSpecialMeaningTokens() const
+{
+ return 0;
+}
+
+AtTag *
+StdTag::GetFollower()
+{
+ if (pNext != 0)
+ return pNext->GetFollower();
+ pNext = new StdTag(eId);
+ return pNext;
+}
+
+void
+StdTag::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_StdTag( *this );
+}
+
+DocuText *
+StdTag::Text()
+{
+ return &aText;
+}
+
+
+
+//***************************** BaseTag ***********************//
+
+BaseTag::BaseTag()
+ : // sBase
+ // aText
+ pNext(0)
+{
+}
+
+bool
+BaseTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt i_nNr )
+{
+ if ( i_nNr == 1 )
+ {
+ sBase.AssignText(i_sText,"::");
+ return true;
+ }
+ return false;
+}
+
+const char *
+BaseTag::Title() const
+{
+ return "Base Classes";
+}
+
+UINT8
+BaseTag::NrOfSpecialMeaningTokens() const
+{
+ return 1;
+}
+
+AtTag *
+BaseTag::GetFollower()
+{
+ if (pNext != 0)
+ return pNext->GetFollower();
+ pNext = new BaseTag;
+ return pNext;
+}
+
+DocuText *
+BaseTag::Text()
+{
+ return &aText;
+}
+
+
+
+//***************************** ExceptionTag ***********************//
+
+ExceptionTag::ExceptionTag()
+ : // sException,
+ // aText
+ pNext(0)
+{
+}
+
+bool
+ExceptionTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt i_nNr )
+{
+ if ( i_nNr == 1 )
+ {
+ sException.AssignText(i_sText,"::");
+ return true;
+ }
+ return false;
+}
+
+const char *
+ExceptionTag::Title() const
+{
+ return "Thrown Exceptions";
+}
+
+UINT8
+ExceptionTag::NrOfSpecialMeaningTokens() const
+{
+ return 1;
+}
+
+AtTag *
+ExceptionTag::GetFollower()
+{
+ if (pNext != 0)
+ return pNext->GetFollower();
+ pNext = new ExceptionTag;
+ return pNext;
+}
+
+DocuText *
+ExceptionTag::Text()
+{
+ return &aText;
+}
+
+
+//***************************** ImplementsTag ***********************//
+
+ImplementsTag::ImplementsTag()
+ : // sBase
+ // aText
+ pNext(0)
+{
+}
+
+bool
+ImplementsTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt i_nNr )
+{
+ if ( i_nNr == 1 )
+ {
+ sName.AssignText(i_sText,"::");
+ }
+ else
+ {
+ GetFollower()->Add_SpecialMeaningToken(i_sText,1);
+ }
+ return true;
+}
+
+const char *
+ImplementsTag::Title() const
+{
+ return "Implements";
+}
+
+UINT8
+ImplementsTag::NrOfSpecialMeaningTokens() const
+{
+ return std::numeric_limits<UINT8>::max();
+}
+
+AtTag *
+ImplementsTag::GetFollower()
+{
+ if (pNext != 0)
+ return pNext->GetFollower();
+ pNext = new ImplementsTag;
+ return pNext;
+}
+
+DocuText *
+ImplementsTag::Text()
+{
+ return 0;
+}
+
+
+//***************************** KeywordTag ***********************//
+
+
+KeywordTag::KeywordTag()
+// : sKeys
+{
+}
+
+bool
+KeywordTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt )
+{
+ sKeys.push_back(i_sText);
+ return true;
+}
+
+const char *
+KeywordTag::Title() const
+{
+ return "Keywords";
+}
+
+UINT8
+KeywordTag::NrOfSpecialMeaningTokens() const
+{
+ return std::numeric_limits<UINT8>::max();
+}
+
+AtTag *
+KeywordTag::GetFollower()
+{
+ return this;
+}
+
+DocuText *
+KeywordTag::Text()
+{
+ return 0;
+}
+
+
+
+//***************************** ParameterTag ***********************//
+
+
+ParameterTag::ParameterTag()
+ : // sName
+ // aText
+ pNext(0)
+{
+}
+
+bool
+ParameterTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt i_nNr )
+{
+ if ( i_nNr == 1 )
+ {
+ sName = i_sText;
+ return true;
+ }
+ else if (i_nNr == 2)
+ {
+ uintt nLen = strlen(i_sText);
+ if (*i_sText == '[' AND i_sText[nLen-1] == ']')
+ {
+ sValidRange = String(i_sText+1, nLen-2);
+ return true;
+ }
+ }
+ return false;
+}
+
+UINT8
+ParameterTag::NrOfSpecialMeaningTokens() const
+{
+ return 2;
+}
+
+AtTag *
+ParameterTag::GetFollower()
+{
+ if (pNext != 0)
+ return pNext->GetFollower();
+ return pNext = new ParameterTag;
+}
+
+DocuText *
+ParameterTag::Text()
+{
+ return &aText;
+}
+
+void
+ParameterTag::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_ParameterTag( *this );
+}
+
+
+
+//***************************** SeeTag ***********************//
+
+
+
+SeeTag::SeeTag()
+// : sReferences
+{
+}
+
+bool
+SeeTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt )
+{
+ static QualifiedName aNull_;
+ sReferences.push_back(aNull_);
+ sReferences.back().AssignText(i_sText,"::");
+
+ return true;
+}
+
+const char *
+SeeTag::Title() const
+{
+ return "See Also";
+}
+
+UINT8
+SeeTag::NrOfSpecialMeaningTokens() const
+{
+ return std::numeric_limits<UINT8>::max();
+}
+
+AtTag *
+SeeTag::GetFollower()
+{
+ return this;
+}
+
+void
+SeeTag::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_SeeTag( *this );
+}
+
+DocuText *
+SeeTag::Text()
+{
+ return 0;
+}
+
+
+
+//***************************** TemplateTag ***********************//
+
+
+TemplateTag::TemplateTag()
+ : // sName
+ // aText
+ pNext(0)
+{
+}
+
+bool
+TemplateTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt i_nNr )
+{
+ if ( i_nNr == 1 )
+ {
+ sName = i_sText;
+ return true;
+ }
+ return false;
+}
+
+const char *
+TemplateTag::Title() const
+{
+ return "Template Parameters";
+}
+
+UINT8
+TemplateTag::NrOfSpecialMeaningTokens() const
+{
+ return 1;
+}
+
+AtTag *
+TemplateTag::GetFollower()
+{
+ if (pNext != 0)
+ return pNext->GetFollower();
+ return pNext = new TemplateTag;
+}
+
+void
+TemplateTag::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_TemplateTag( *this );
+}
+
+
+DocuText *
+TemplateTag::Text()
+{
+ return &aText;
+}
+
+
+//***************************** LabelTag ***********************//
+
+
+
+LabelTag::LabelTag()
+ : sLabel()
+{
+}
+
+bool
+LabelTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt i_nNr )
+{
+ if ( i_nNr == 1 AND sLabel.length() == 0 )
+ {
+ sLabel = i_sText;
+ return true;
+ }
+ // KORR_FUTURE
+// else // Throw exception because of double label.
+ return false;
+}
+
+const char *
+LabelTag::Title() const
+{
+ return "Label";
+}
+
+UINT8
+LabelTag::NrOfSpecialMeaningTokens() const
+{
+ return 1;
+}
+
+AtTag *
+LabelTag::GetFollower()
+{
+ return this;
+}
+
+DocuText *
+LabelTag::Text()
+{
+ return 0;
+}
+
+
+//***************************** SinceTag ***********************//
+
+SinceTag::SinceTag()
+ : sVersion()
+{
+}
+
+bool
+SinceTag::Add_SpecialMeaningToken( const char * i_sText,
+ intt )
+{
+ const char cCiphersend = '9' + 1;
+ if ( sVersion.empty()
+ AND NOT csv::in_range('0', *i_sText, cCiphersend)
+ AND autodoc::CommandLine::Get_().DoesTransform_SinceTag() )
+ {
+ return true;
+ }
+
+ if (sVersion.empty())
+ {
+ sVersion = i_sText;
+ }
+ else
+ {
+ StreamLock sHelp(100);
+ sVersion = sHelp() << sVersion << " " << i_sText << c_str;
+ }
+
+ return true;
+}
+
+const char *
+SinceTag::Title() const
+{
+ return "Label";
+}
+
+UINT8
+SinceTag::NrOfSpecialMeaningTokens() const
+{
+ return UINT8(-1);
+}
+
+AtTag *
+SinceTag::GetFollower()
+{
+ return this;
+}
+
+void
+SinceTag::do_StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_SinceTag( *this );
+}
+
+DocuText *
+SinceTag::Text()
+{
+ return 0;
+}
+
+
+} // namespace info
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/info/ci_attag.cxx b/autodoc/source/ary/info/ci_attag.cxx
new file mode 100644
index 000000000000..73da1bebe9df
--- /dev/null
+++ b/autodoc/source/ary/info/ci_attag.cxx
@@ -0,0 +1,95 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/info/ci_attag.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/info/all_dts.hxx>
+#include <ary/info/ci_text.hxx>
+
+
+namespace ary
+{
+namespace info
+{
+
+void
+AtTag::Set_HtmlUseInDocuText( bool i_bUseIt )
+{
+ DocuText * pText = Text();
+ if ( pText != 0 )
+ pText->Set_HtmlUse(i_bUseIt);
+}
+
+void
+AtTag::Add_Token( const char * i_sText )
+{
+ DocuText * pText = Text();
+ if (pText != 0)
+ pText->Add_Token( *new DT_Text(i_sText) );
+}
+
+void
+AtTag::Add_PotentialLink( const char * i_sText,
+ bool i_bIsGlobal,
+ bool i_bIsFunction )
+{
+ DocuText * pText = Text();
+ if (pText != 0)
+ pText->Add_Token( *new DT_MaybeLink(i_sText, i_bIsGlobal, i_bIsFunction) );
+}
+
+void
+AtTag::Add_Whitespace( UINT8 i_nLength )
+{
+ DocuText * pText = Text();
+ if (pText != 0)
+ pText->Add_Token( *new DT_Whitespace(i_nLength) );
+}
+
+void
+AtTag::Add_Eol()
+{
+ DocuText * pText = Text();
+ if (pText != 0)
+ pText->Add_Token( *new DT_Eol );
+}
+
+void
+AtTag::do_StoreAt( DocuDisplay & ) const
+{
+ // Dummy
+}
+
+} // namespace info
+} // namespace ary
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/info/ci_text.cxx b/autodoc/source/ary/info/ci_text.cxx
new file mode 100644
index 000000000000..bf4aa5e7a362
--- /dev/null
+++ b/autodoc/source/ary/info/ci_text.cxx
@@ -0,0 +1,73 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/info/ci_text.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/info/all_dts.hxx>
+
+
+namespace ary
+{
+namespace info
+{
+
+DocuText::DocuText()
+ : bUsesHtml(false)
+{
+}
+
+DocuText::~DocuText()
+{
+ for ( TokenList::iterator iter = aTokens.begin();
+ iter != aTokens.end();
+ ++iter )
+ {
+ delete (*iter);
+ }
+}
+
+void
+DocuText::StoreAt( DocuDisplay & o_rDisplay ) const
+{
+ ary::info::DocuText::TokenList::const_iterator itEnd = aTokens.end();
+ for ( ary::info::DocuText::TokenList::const_iterator it = aTokens.begin();
+ it != itEnd;
+ ++it )
+ {
+ (*it)->StoreAt(o_rDisplay);
+ }
+}
+
+} // namespace info
+} // namespace ary
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/info/makefile.mk b/autodoc/source/ary/info/makefile.mk
new file mode 100644
index 000000000000..0c507ba3f4fe
--- /dev/null
+++ b/autodoc/source/ary/info/makefile.mk
@@ -0,0 +1,60 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=ary_info
+
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/all_dts.obj \
+ $(OBJ)$/all_tags.obj \
+ $(OBJ)$/ci_attag.obj \
+ $(OBJ)$/ci_text.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/ary/kernel/ary_disp.cxx b/autodoc/source/ary/kernel/ary_disp.cxx
new file mode 100644
index 000000000000..b9608f2f547a
--- /dev/null
+++ b/autodoc/source/ary/kernel/ary_disp.cxx
@@ -0,0 +1,111 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/ary_disp.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/cpp/c_ce.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_ce.hxx>
+
+
+
+namespace ary
+{
+
+void
+Display::DisplaySlot_Rid( ary::Rid i_nId )
+{
+ const cpp::Gate *
+ pGate = Get_ReFinder();
+ if (pGate != 0)
+ {
+ const ary::cpp::CodeEntity *
+ pRE = pGate->Ces().Search_Ce( cpp::Ce_id(i_nId) );
+ if (pRE != 0)
+ {
+ pRE->Accept( *this );
+ return;
+ }
+ }
+
+ do_DisplaySlot_Rid( i_nId );
+}
+
+
+void
+Display::DisplaySlot_LocalCe( ary::cpp::Ce_id i_nId,
+ const String & i_sName )
+{
+ const cpp::Gate *
+ pGate = Get_ReFinder();
+ if (pGate != 0)
+ {
+ const ary::cpp::CodeEntity *
+ pRE = pGate->Ces().Search_Ce(i_nId);
+ if (pRE != 0)
+ {
+ pRE->Accept( *this );
+ return;
+ }
+ }
+
+ do_DisplaySlot_LocalCe( i_nId, i_sName );
+}
+
+
+
+// Dummy implementations for class Display
+
+void
+Display::do_StartSlot()
+{
+}
+
+void
+Display::do_FinishSlot()
+{
+}
+
+void
+Display::do_DisplaySlot_Rid( ary::Rid )
+{
+}
+
+void
+Display::do_DisplaySlot_LocalCe( ary::cpp::Ce_id ,
+ const String & )
+{
+}
+
+
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/kernel/cessentl.cxx b/autodoc/source/ary/kernel/cessentl.cxx
new file mode 100644
index 000000000000..0fcf37542a6a
--- /dev/null
+++ b/autodoc/source/ary/kernel/cessentl.cxx
@@ -0,0 +1,89 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/cessentl.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_ce.hxx>
+#include <ary/doc/d_oldcppdocu.hxx>
+
+
+namespace ary
+{
+namespace cpp
+{
+
+
+CeEssentials::CeEssentials()
+ : sLocalName(),
+ nOwner(0),
+ nLocation(0)
+{
+}
+
+CeEssentials::CeEssentials( const String & i_sLocalName,
+ Cid i_nOwner,
+ loc::Le_id i_nLocation )
+ : sLocalName(i_sLocalName),
+ nOwner(i_nOwner),
+ nLocation(i_nLocation)
+{
+}
+
+CeEssentials::~CeEssentials()
+{
+}
+
+
+
+inline bool
+IsInternal(const doc::Documentation & i_doc)
+{
+ const ary::doc::OldCppDocu *
+ docu = dynamic_cast< const ary::doc::OldCppDocu* >(i_doc.Data());
+ if (docu != 0)
+ return docu->IsInternal();
+ return false;
+}
+
+
+bool
+CodeEntity::IsVisible() const
+{
+ // KORR_FUTURE: Improve the whole handling of internal and visibility.
+ return bIsVisible && NOT IsInternal(Docu());
+}
+
+
+
+} // namespace cpp
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/kernel/makefile.mk b/autodoc/source/ary/kernel/makefile.mk
new file mode 100644
index 000000000000..6c90252bc3b8
--- /dev/null
+++ b/autodoc/source/ary/kernel/makefile.mk
@@ -0,0 +1,63 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=ary_kernel
+
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/ary_disp.obj \
+ $(OBJ)$/cessentl.obj \
+ $(OBJ)$/namesort.obj \
+ $(OBJ)$/qualiname.obj \
+ $(OBJ)$/reposy.obj \
+ $(OBJ)$/slots.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/ary/kernel/namesort.cxx b/autodoc/source/ary/kernel/namesort.cxx
new file mode 100644
index 000000000000..3854ece73e7b
--- /dev/null
+++ b/autodoc/source/ary/kernel/namesort.cxx
@@ -0,0 +1,103 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/namesort.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+namespace
+{
+
+
+int C_cAutodocNameOrdering1[256] =
+ { 0,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, // 0 ..
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, // 32 ..
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,255,255, 255,255,255,255,
+
+ 255, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, // 64 ..
+ 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61,255, 255,255,255, 63,
+ 255, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, // 96 ..
+ 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61,255, 255,255,255,255,
+
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, //128 ..
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, //160 ..
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255
+ };
+
+int C_cAutodocNameOrdering2[256] =
+ { 0,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, // 0 ..
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, // 32 ..
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,255,255, 255,255,255,255,
+
+ 255, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, // 64 ..
+ 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61,255, 255,255,255, 63,
+ 255, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, // 96 ..
+ 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62,255, 255,255,255,255,
+
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, //128 ..
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255, //160 ..
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
+ 255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255
+ };
+
+
+} // namespace anonymous
+
+
+namespace ary
+{
+
+
+const csv::CharOrder_Table
+LesserName::aOrdering1_(C_cAutodocNameOrdering1);
+
+const csv::CharOrder_Table
+LesserName::aOrdering2_(C_cAutodocNameOrdering2);
+
+
+
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/kernel/qualiname.cxx b/autodoc/source/ary/kernel/qualiname.cxx
new file mode 100644
index 000000000000..8db4ea07919b
--- /dev/null
+++ b/autodoc/source/ary/kernel/qualiname.cxx
@@ -0,0 +1,108 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/qualiname.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+
+
+namespace ary
+{
+
+
+QualifiedName::QualifiedName( uintt i_nSize )
+ : aNamespace(),
+ sLocalName(),
+ bIsAbsolute(false),
+ bIsFunction()
+{
+ if (i_nSize > 0)
+ aNamespace.reserve(i_nSize);
+}
+
+QualifiedName::QualifiedName( const char * i_sText,
+ const char * i_sSeparator )
+ : aNamespace(),
+ sLocalName(),
+ bIsAbsolute(false),
+ bIsFunction()
+{
+ AssignText(i_sText,i_sSeparator);
+}
+
+QualifiedName::~QualifiedName()
+{
+}
+
+void
+QualifiedName::AssignText( const char * i_sText,
+ const char * i_sSeparator )
+{
+ csv_assert(NOT csv::no_str(i_sText) AND NOT csv::no_str(i_sSeparator));
+ bIsAbsolute = false;
+ bIsFunction = false;
+ csv::erase_container( aNamespace );
+
+ uintt nSepLen = strlen(i_sSeparator);
+ const char * sNext = i_sText;
+
+ const char * ps = strstr( i_sText, i_sSeparator );
+ if (ps == i_sText)
+ {
+ bIsAbsolute = true;
+ sNext = ps + nSepLen;
+ }
+
+ for ( ps = strstr(sNext, i_sSeparator);
+ ps != 0;
+ ps = strstr(sNext, i_sSeparator) )
+ {
+ String sPart(sNext, ps - sNext);
+ aNamespace.push_back(sPart);
+ sNext = ps + nSepLen;
+ }
+
+ uintt sNameLen = strlen(sNext);
+ if ( sNameLen > 2 )
+ {
+ ps = sNext + sNameLen - 2;
+ if (*ps == '(' AND *(ps+1) == ')')
+ {
+ sNameLen -= 2;
+ bIsFunction = true;
+ }
+ }
+ sLocalName = String(sNext,sNameLen);
+}
+
+
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/kernel/reposy.cxx b/autodoc/source/ary/kernel/reposy.cxx
new file mode 100644
index 000000000000..5d28d46bb1be
--- /dev/null
+++ b/autodoc/source/ary/kernel/reposy.cxx
@@ -0,0 +1,221 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <reposy.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cpp_internalgate.hxx>
+#include <idl_internalgate.hxx>
+
+
+namespace ary
+{
+
+
+//***************** Repository ************//
+
+DYN Repository &
+Repository::Create_()
+{
+ return *new RepositoryCenter;
+}
+
+
+
+
+RepositoryCenter::RepositoryCenter()
+ : sDisplayedName(),
+ aLocation(),
+ pCppPartition(0),
+ pIdlPartition(0)
+{
+ pCppPartition = & cpp::InternalGate::Create_Partition_(*this);
+ pIdlPartition = & idl::InternalGate::Create_Partition_(*this);
+}
+
+RepositoryCenter::~RepositoryCenter()
+{
+}
+
+const ::ary::cpp::Gate &
+RepositoryCenter::Gate_Cpp() const
+{
+ csv_assert(pCppPartition);
+ return *pCppPartition;
+}
+
+const ::ary::idl::Gate &
+RepositoryCenter::Gate_Idl() const
+{
+ csv_assert(pIdlPartition);
+ return *pIdlPartition;
+}
+
+const String &
+RepositoryCenter::Title() const
+{
+ return sDisplayedName;
+}
+
+
+::ary::cpp::Gate &
+RepositoryCenter::Gate_Cpp()
+{
+ csv_assert(pCppPartition);
+ return *pCppPartition;
+}
+
+::ary::idl::Gate &
+RepositoryCenter::Gate_Idl()
+{
+ csv_assert(pIdlPartition);
+ return *pIdlPartition;
+}
+
+void
+RepositoryCenter::Set_Title(const String & i_sName)
+{
+ sDisplayedName = i_sName;
+}
+
+
+
+
+//********************* Repository Type Info Data ****************//
+
+// !!! IMPORTANT - NEVER DELETE OR CHANGE - ADDING ALLOWED
+
+
+
+/* ClassType-Ids
+ -------------
+
+ cpp 1000
+ idl 2000
+ corba 3000
+ java 4000
+ information 5000
+ logic location 6000
+ phys location 7000
+ sec. prod. 8000
+
+
+ cpp
+ ---
+ Namespace 1000
+ Class 1001
+ Enum 1002
+ Typedef 1003
+ Function 1004
+ Variable 1005
+ EnumValue 1006
+ NamespaceAlias 1007
+
+ BuiltInType 1200
+ CeType_Final 1201
+ CeType_Extern 1202
+ UsedType 1203
+ PtrType 1211
+ RefType 1212
+ ConstType 1221
+ VolatileType 1222
+ ArrayType 1230
+ TemplateInstance 1235
+ FunctionPtr 1240
+ DataMemberPtr 1250
+ OperationMemberPtr 1260
+
+ TplParam_Type 1301
+ TplParam_Value 1302
+
+ OpSignature 1400
+
+ Define 1601
+ Macro 1602
+
+ ProjectGroup 1901
+ FileGroup 1902
+
+ TopProject 1921
+
+
+
+ idl
+ ---
+
+ Module 2000
+ Interface 2001
+ Function 2002
+ Service 2003
+ Property 2004
+ Enum 2005
+ EnumValue 2006
+ Typedef 2007
+ Struct 2008
+ StructElement 2009
+ Exception 2010
+ ConstantGroup 2011
+ Constant 2012
+ Singleton 2013
+ Attribute 2014
+ SglIfcService 2015
+ SglIfcSingleton 2016
+
+ BuiltInType 2200
+ CeType 2201
+ Sequence 2202
+ ExplicitType 2203
+ ExplicitNameRoom 2204
+ TemplateParamType 2205
+
+
+ java
+ ----
+ Package 4000
+ Interface 4001
+ Class 4002
+
+ physical location
+ -----------------
+ Root 7000
+ Directory 7030
+ File 7100
+
+
+ info
+ ----
+ CodeInformation
+ (IDL) 11002
+*/
+
+
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/kernel/slots.cxx b/autodoc/source/ary/kernel/slots.cxx
new file mode 100644
index 000000000000..5689432cd8e8
--- /dev/null
+++ b/autodoc/source/ary/kernel/slots.cxx
@@ -0,0 +1,167 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <slots.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ary_disp.hxx>
+
+
+
+namespace ary
+{
+
+
+//*********************** Slot ********************//
+
+
+void
+Slot::StoreAt( Display & o_rDestination ) const
+{
+ o_rDestination.StartSlot();
+ StoreEntries(o_rDestination);
+ o_rDestination.FinishSlot();
+}
+
+
+//*********************** Slot_Null ********************//
+
+Slot_Null::~Slot_Null()
+{
+}
+
+void
+Slot_Null::StoreAt( Display & ) const
+{
+ // Does nothing
+}
+
+uintt
+Slot_Null::Size() const
+{
+ return 0;
+}
+
+void
+Slot_Null::StoreEntries( Display & ) const
+{
+ // Does nothing
+}
+
+//*********************** Slot_MapLocalCe ********************//
+
+Slot_MapLocalCe::Slot_MapLocalCe( const cpp::Map_LocalCe & i_rData )
+ : pData(&i_rData)
+{
+}
+
+Slot_MapLocalCe::~Slot_MapLocalCe()
+{
+}
+
+uintt
+Slot_MapLocalCe::Size() const
+{
+ return pData->size();;
+}
+
+void
+Slot_MapLocalCe::StoreEntries( Display & o_rDestination ) const
+{
+ for ( cpp::Map_LocalCe::const_iterator it = pData->begin();
+ it != pData->end();
+ ++it )
+ {
+ o_rDestination.DisplaySlot_LocalCe( (*it).second, (*it).first );
+ }
+}
+
+
+
+//*********************** Slot_MapOperations ********************//
+
+Slot_MapOperations::Slot_MapOperations( const std::multimap<String, cpp::Ce_id> & i_rData )
+ : pData(&i_rData)
+{
+}
+
+Slot_MapOperations::~Slot_MapOperations()
+{
+}
+
+uintt
+Slot_MapOperations::Size() const
+{
+ return pData->size();;
+}
+
+void
+Slot_MapOperations::StoreEntries( Display & o_rDestination ) const
+{
+ for ( std::multimap<String, cpp::Ce_id>::const_iterator it = pData->begin();
+ it != pData->end();
+ ++it )
+ {
+ o_rDestination.DisplaySlot_LocalCe( (*it).second, (*it).first );
+ }
+}
+
+//*********************** Slot_ListLocalCe ********************//
+
+Slot_ListLocalCe::Slot_ListLocalCe( const cpp::List_LocalCe & i_rData )
+ : pData(&i_rData)
+{
+}
+
+Slot_ListLocalCe::~Slot_ListLocalCe()
+{
+}
+
+uintt
+Slot_ListLocalCe::Size() const
+{
+ return pData->size();;
+}
+
+void
+Slot_ListLocalCe::StoreEntries( Display & o_rDestination ) const
+{
+ for ( cpp::List_LocalCe::const_iterator it = pData->begin();
+ it != pData->end();
+ ++it )
+ {
+ o_rDestination.DisplaySlot_LocalCe( (*it).nId, (*it).sLocalName );
+ }
+}
+
+
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/loc_dir.cxx b/autodoc/source/ary/loc/loc_dir.cxx
new file mode 100644
index 000000000000..220f47486332
--- /dev/null
+++ b/autodoc/source/ary/loc/loc_dir.cxx
@@ -0,0 +1,137 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/loc/loc_dir.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/loc/loc_file.hxx>
+#include <sortedids.hxx>
+#include "locs_le.hxx"
+
+
+namespace ary
+{
+namespace loc
+{
+
+struct Directory::Container
+{
+ typedef SortedIds<Le_Compare> SortedChildList;
+
+ SortedChildList aSubDirectories;
+ SortedChildList aFiles;
+
+ Container()
+ : aSubDirectories(),
+ aFiles()
+ {}
+};
+
+
+
+
+Directory::Directory(Le_id i_assignedRoot)
+ : sLocalName(),
+ nParentDirectory(0),
+ nAssignedRoot(i_assignedRoot),
+ aAssignedNode(),
+ pChildren(new Container)
+{
+ aAssignedNode.Assign_Entity(*this);
+}
+
+Directory::Directory( const String & i_localName,
+ Le_id i_parentDirectory )
+ : sLocalName(i_localName),
+ nParentDirectory(i_parentDirectory),
+ nAssignedRoot(0),
+ aAssignedNode(),
+ pChildren(new Container)
+{
+ aAssignedNode.Assign_Entity(*this);
+}
+
+Directory::~Directory()
+{
+}
+
+void
+Directory::Add_Dir(const Directory & i_dir)
+{
+ pChildren->aSubDirectories.Add(i_dir.LeId());
+}
+
+void
+Directory::Add_File(const File & i_file)
+{
+ pChildren->aFiles.Add(i_file.LeId());
+}
+
+Le_id
+Directory::Search_Dir(const String & i_name) const
+{
+ return pChildren->aSubDirectories.Search(i_name);
+}
+
+Le_id
+Directory::Search_File(const String & i_name) const
+{
+ return pChildren->aFiles.Search(i_name);
+}
+
+void
+Directory::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Directory::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Directory::inq_LocalName() const
+{
+ return sLocalName;
+}
+
+Le_id
+Directory::inq_ParentDirectory() const
+{
+ return nParentDirectory;
+}
+
+
+} // namespace loc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/loc_file.cxx b/autodoc/source/ary/loc/loc_file.cxx
new file mode 100644
index 000000000000..5de548219842
--- /dev/null
+++ b/autodoc/source/ary/loc/loc_file.cxx
@@ -0,0 +1,69 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/loc/loc_file.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+File::File( const String & i_sLocalName,
+ Le_id i_nParentDirectory )
+ : FileBase(i_sLocalName, i_nParentDirectory)
+{
+}
+
+File::~File()
+{
+}
+
+void
+File::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor, *this);
+}
+
+ClassId
+File::get_AryClass() const
+{
+ return class_id;
+}
+
+
+
+} // namespace loc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/loc_filebase.cxx b/autodoc/source/ary/loc/loc_filebase.cxx
new file mode 100644
index 000000000000..f9297084c552
--- /dev/null
+++ b/autodoc/source/ary/loc/loc_filebase.cxx
@@ -0,0 +1,66 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/loc/loc_filebase.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+FileBase::FileBase( const String & i_localName,
+ Le_id i_parentDirectory )
+ : sLocalName(i_localName),
+ nParentDirectory(i_parentDirectory)
+{
+}
+
+const String &
+FileBase::inq_LocalName() const
+{
+ return sLocalName;
+}
+
+Le_id
+FileBase::inq_ParentDirectory() const
+{
+ return nParentDirectory;
+}
+
+
+
+} // namespace loc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/loc_root.cxx b/autodoc/source/ary/loc/loc_root.cxx
new file mode 100644
index 000000000000..198b6ee7f784
--- /dev/null
+++ b/autodoc/source/ary/loc/loc_root.cxx
@@ -0,0 +1,86 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/loc/loc_root.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+Root::Root(const csv::ploc::Path & i_path)
+ : aPath(i_path),
+ sPathAsString(),
+ aMyDirectory(0)
+{
+ StreamLock
+ path_string(700);
+ path_string() << i_path;
+ sPathAsString = path_string().c_str();
+}
+
+Root::~Root()
+{
+}
+
+void
+Root::do_Accept(csv::ProcessorIfc & io_processor) const
+{
+ csv::CheckedCall(io_processor,*this);
+}
+
+ClassId
+Root::get_AryClass() const
+{
+ return class_id;
+}
+
+const String &
+Root::inq_LocalName() const
+{
+ return sPathAsString;
+}
+
+Le_id
+Root::inq_ParentDirectory() const
+{
+ return Le_id::Null_();
+}
+
+
+
+} // namespace loc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/loc_traits.cxx b/autodoc/source/ary/loc/loc_traits.cxx
new file mode 100644
index 000000000000..8e010beef263
--- /dev/null
+++ b/autodoc/source/ary/loc/loc_traits.cxx
@@ -0,0 +1,94 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary/loc/loc_traits.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/namesort.hxx>
+#include <ary/getncast.hxx>
+#include "locs_le.hxx"
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+//******************** Le_Traits ************************//
+Le_Traits::entity_base_type &
+Le_Traits::EntityOf_(id_type i_id)
+{
+ csv_assert(i_id.IsValid());
+ return Le_Storage::Instance_()[i_id];
+}
+
+//******************** LeNode_Traits ************************//
+symtree::Node<LeNode_Traits> *
+LeNode_Traits::NodeOf_(entity_base_type & io_entity)
+{
+ if (is_type<Directory>(io_entity))
+ return & ary_cast<Directory>(io_entity).AsNode();
+ return 0;
+}
+
+Le_Traits::entity_base_type *
+LeNode_Traits::ParentOf_(const entity_base_type & i_entity)
+{
+ Le_Traits::id_type
+ ret = i_entity.ParentDirectory();
+ if (ret.IsValid())
+ return &EntityOf_(ret);
+ return 0;
+}
+
+//******************** Le_Compare ************************//
+const Le_Compare::key_type &
+Le_Compare::KeyOf_(const entity_base_type & i_entity)
+{
+ return i_entity.LocalName();
+}
+
+bool
+Le_Compare::Lesser_( const key_type & i_1,
+ const key_type & i_2 )
+{
+ static ::ary::LesserName less_;
+ return less_(i_1,i_2);
+}
+
+
+
+
+} // namespace loc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/loca_le.cxx b/autodoc/source/ary/loc/loca_le.cxx
new file mode 100644
index 000000000000..428ca5849ccb
--- /dev/null
+++ b/autodoc/source/ary/loc/loca_le.cxx
@@ -0,0 +1,184 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "loca_le.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/loc/loc_dir.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/loc/loc_root.hxx>
+#include <loc_internalgate.hxx>
+#include "locs_le.hxx"
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+DYN LocationPilot &
+InternalGate::Create_Locations_()
+{
+ return *new LocationAdmin;
+}
+
+
+
+
+inline Le_Storage &
+LocationAdmin::Storage() const
+{
+ csv_assert(pStorage);
+ return *pStorage.MutablePtr();
+}
+
+
+LocationAdmin::LocationAdmin()
+ : pStorage(new Le_Storage)
+{
+}
+
+LocationAdmin::~LocationAdmin()
+{
+}
+
+Root &
+LocationAdmin::CheckIn_Root(const csv::ploc::Path & i_path)
+{
+ Dyn<Root>
+ p_new( new Root(i_path) );
+
+ Le_id
+ id = Storage().RootIndex().Search(p_new->LocalName());
+ if ( id.IsValid() )
+ {
+ return ary_cast<Root>(Storage()[id]);
+ }
+
+ Root *
+ ret = p_new.Ptr();
+ Storage().Store_Entity(*p_new.Release());
+ Storage().RootIndex().Add(ret->LeId());
+
+ Directory *
+ p_rootdir = new Directory(ret->LeId());
+ Storage().Store_Entity(*p_rootdir);
+ ret->Assign_Directory(p_rootdir->LeId());
+
+ return *ret;
+}
+
+File &
+LocationAdmin::CheckIn_File( const String & i_name,
+ const csv::ploc::DirectoryChain & i_subPath,
+ Le_id i_root )
+{
+ Root &
+ root = Find_Root(i_root);
+ Directory &
+ parent_dir = CheckIn_Directories(
+ Find_Directory(root.MyDir()),
+ i_subPath.Begin(),
+ i_subPath.End() );
+ Le_id
+ fid = parent_dir.Search_File(i_name);
+ if (NOT fid.IsValid())
+ {
+ File *
+ ret = new File(i_name, parent_dir.LeId());
+ Storage().Store_Entity(*ret);
+ parent_dir.Add_File(*ret);
+ return *ret;
+ }
+ else
+ {
+ return Find_File(fid);
+ }
+}
+
+Root &
+LocationAdmin::Find_Root(Le_id i_id) const
+{
+ return ary_cast<Root>(Storage()[i_id]);
+}
+
+Directory &
+LocationAdmin::Find_Directory(Le_id i_id) const
+{
+ return ary_cast<Directory>(Storage()[i_id]);
+}
+
+File &
+LocationAdmin::Find_File(Le_id i_id) const
+{
+ return ary_cast<File>(Storage()[i_id]);
+}
+
+Directory &
+LocationAdmin::CheckIn_Directory( Directory & io_parent,
+ const String & i_name )
+{
+ Le_id
+ did = io_parent.Search_Dir(i_name);
+ if (NOT did.IsValid())
+ {
+ Directory *
+ ret = new Directory(i_name, io_parent.LeId());
+ Storage().Store_Entity(*ret);
+ io_parent.Add_Dir(*ret);
+ return *ret;
+ }
+ else
+ {
+ return Find_Directory(did);
+ }
+}
+
+Directory &
+LocationAdmin::CheckIn_Directories(
+ Directory & io_root,
+ StringVector::const_iterator i_beginSubPath,
+ StringVector::const_iterator i_endSubPath )
+{
+ if (i_beginSubPath == i_endSubPath)
+ return io_root;
+
+ Directory &
+ next = CheckIn_Directory(io_root, *i_beginSubPath);
+ return CheckIn_Directories(next, i_beginSubPath+1, i_endSubPath);
+}
+
+
+} // namespace loc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/loca_le.hxx b/autodoc/source/ary/loc/loca_le.hxx
new file mode 100644
index 000000000000..8f206f7c1c98
--- /dev/null
+++ b/autodoc/source/ary/loc/loca_le.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ARY_LOC_LOCA_LE_HXX
+#define ARY_LOC_LOCA_LE_HXX
+
+// BASE CLASSES
+#include <ary/loc/locp_le.hxx>
+
+namespace ary
+{
+namespace loc
+{
+ class Le_Storage;
+}
+}
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+/** Provides access to files and directories stored in the
+ repository.
+*/
+class LocationAdmin : public LocationPilot
+{
+ public:
+ LocationAdmin();
+ virtual ~LocationAdmin();
+
+ // INHERITED
+ // Interface LocationPilot:
+ virtual Root & CheckIn_Root(
+ const csv::ploc::Path &
+ i_rPath );
+ virtual File & CheckIn_File(
+ const String & i_name,
+ const csv::ploc::DirectoryChain &
+ i_subPath,
+ Le_id i_root );
+
+ virtual Root & Find_Root(
+ Le_id i_id ) const;
+ virtual Directory & Find_Directory(
+ Le_id i_id ) const;
+ virtual File & Find_File(
+ Le_id i_id ) const;
+ private:
+ // Locals
+ Le_Storage & Storage() const;
+ Directory & CheckIn_Directory(
+ Directory & io_parent,
+ const String & i_name );
+ Directory & CheckIn_Directories(
+ Directory & io_root,
+ StringVector::const_iterator
+ i_beginSubPath,
+ StringVector::const_iterator
+ i_endSubPath );
+ // DATA
+ Dyn<Le_Storage> pStorage;
+};
+
+
+
+
+} // namespace loc
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/locs_le.cxx b/autodoc/source/ary/loc/locs_le.cxx
new file mode 100644
index 000000000000..1f2df4430173
--- /dev/null
+++ b/autodoc/source/ary/loc/locs_le.cxx
@@ -0,0 +1,70 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "locs_le.hxx"
+
+// NOT FULLY DEFINED SERVICES
+
+
+namespace
+{
+ const uintt
+ C_nReservedElements = ary::loc::predefined::le_MAX; // Skipping "0"
+}
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+Le_Storage * Le_Storage::pInstance_ = 0;
+
+
+
+
+Le_Storage::Le_Storage()
+ : stg::Storage<LocationEntity>(C_nReservedElements)
+{
+ csv_assert(pInstance_ == 0);
+ pInstance_ = this;
+}
+
+Le_Storage::~Le_Storage()
+{
+ csv_assert(pInstance_ != 0);
+ pInstance_ = 0;
+}
+
+
+} // namespace loc
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/locs_le.hxx b/autodoc/source/ary/loc/locs_le.hxx
new file mode 100644
index 000000000000..1d1494ccbc5f
--- /dev/null
+++ b/autodoc/source/ary/loc/locs_le.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ARY_LOC_LOCS_LE_HXX
+#define ARY_LOC_LOCS_LE_HXX
+
+// BASE CLASSES
+#include <store/s_storage.hxx>
+// USED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/loc/loc_le.hxx>
+#include <ary/loc/loc_root.hxx>
+#include <sortedids.hxx>
+
+
+
+
+namespace ary
+{
+namespace loc
+{
+
+
+/** The data base for all ->ary::cpp::CodeEntity objects.
+*/
+class Le_Storage : public ::ary::stg::Storage<LocationEntity>
+{
+ public:
+ typedef SortedIds<Le_Compare> Index;
+
+ Le_Storage();
+ virtual ~Le_Storage();
+
+ const Index & RootIndex() const { return aRoots; }
+ Index & RootIndex() { return aRoots; }
+
+ static Le_Storage & Instance_() { csv_assert(pInstance_ != 0);
+ return *pInstance_; }
+ private:
+ // DATA
+ Index aRoots;
+
+ static Le_Storage * pInstance_;
+};
+
+
+
+
+namespace predefined
+{
+
+enum E_LocationEntity
+{
+ le_MAX = 1
+};
+
+} // namespace predefined
+
+
+
+
+} // namespace cpp
+} // namespace ary
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary/loc/makefile.mk b/autodoc/source/ary/loc/makefile.mk
new file mode 100644
index 000000000000..e4aa0e9b43f5
--- /dev/null
+++ b/autodoc/source/ary/loc/makefile.mk
@@ -0,0 +1,61 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=ary_loc
+
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/loc_dir.obj \
+ $(OBJ)$/loc_file.obj \
+ $(OBJ)$/loc_filebase.obj \
+ $(OBJ)$/loc_root.obj \
+ $(OBJ)$/loc_traits.obj \
+ $(OBJ)$/loca_le.obj \
+ $(OBJ)$/locs_le.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/autodoc/source/ary_i/kernel/ci_atag2.cxx b/autodoc/source/ary_i/kernel/ci_atag2.cxx
new file mode 100644
index 000000000000..6eabded958ed
--- /dev/null
+++ b/autodoc/source/ary_i/kernel/ci_atag2.cxx
@@ -0,0 +1,59 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary_i/ci_atag2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary_i/disdocum.hxx>
+
+
+namespace ary
+{
+namespace inf
+{
+
+void DocuTag_Display::Display_TextToken(
+ const csi::dsapi::DT_TextToken & ) {}
+void DocuTag_Display::Display_White() {}
+void DocuTag_Display::Display_MupType(
+ const csi::dsapi::DT_MupType & ) {}
+void DocuTag_Display::Display_MupMember(
+ const csi::dsapi::DT_MupMember & ) {}
+void DocuTag_Display::Display_MupConst(
+ const csi::dsapi::DT_MupConst & ) {}
+void DocuTag_Display::Display_Style(
+ const csi::dsapi::DT_Style & ) {}
+void DocuTag_Display::Display_EOL() {}
+
+
+} // namespace inf
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary_i/kernel/ci_text2.cxx b/autodoc/source/ary_i/kernel/ci_text2.cxx
new file mode 100644
index 000000000000..d5d60c7b2399
--- /dev/null
+++ b/autodoc/source/ary_i/kernel/ci_text2.cxx
@@ -0,0 +1,141 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary_i/ci_text2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary_i/disdocum.hxx>
+#include <ary_i/d_token.hxx>
+
+
+namespace ary
+{
+namespace inf
+{
+
+DocuTex2::DocuTex2()
+{
+}
+
+DocuTex2::~DocuTex2()
+{
+ for ( TokenList::iterator iter = aTokens.begin();
+ iter != aTokens.end();
+ ++iter )
+ {
+ delete (*iter);
+ }
+}
+
+void
+DocuTex2::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ for ( ary::inf::DocuTex2::TokenList::const_iterator
+ iter = aTokens.begin();
+ iter != aTokens.end();
+ ++iter )
+ {
+ (*iter)->DisplayAt(o_rDisplay);
+ }
+}
+
+void
+DocuTex2::AddToken( DYN DocuToken & let_drToken )
+{
+ if (aTokens.empty())
+ {
+ if (let_drToken.IsWhiteOnly())
+ return;
+ }
+ aTokens.push_back(&let_drToken);
+}
+
+bool
+DocuTex2::IsEmpty() const
+{
+ for ( ary::inf::DocuTex2::TokenList::const_iterator
+ iter = aTokens.begin();
+ iter != aTokens.end();
+ ++iter )
+ {
+ return false;
+ }
+ return true;
+}
+
+using csi::dsapi::DT_TextToken;
+
+const String &
+DocuTex2::TextOfFirstToken() const
+{
+ if (NOT aTokens.empty())
+ {
+ const DT_TextToken *
+ pTok = dynamic_cast< const DT_TextToken* >(*aTokens.begin());
+
+ if (pTok != 0)
+ return pTok->GetTextStr();
+ }
+ return String::Null_();
+}
+
+String &
+DocuTex2::Access_TextOfFirstToken()
+{
+ if (NOT aTokens.empty())
+ {
+ DT_TextToken *
+ pTok = dynamic_cast< DT_TextToken* >(*aTokens.begin());
+
+ if (pTok != 0)
+ return pTok->Access_Text();
+ }
+
+ static String sDummy_;
+ return sDummy_;
+}
+
+
+
+void DocuText_Display::Display_StdAtTag(
+ const csi::dsapi::DT_StdAtTag & ) {}
+void DocuText_Display::Display_SeeAlsoAtTag(
+ const csi::dsapi::DT_SeeAlsoAtTag & ) {}
+void DocuText_Display::Display_ParameterAtTag(
+ const csi::dsapi::DT_ParameterAtTag & ) {}
+void DocuText_Display::Display_SinceAtTag(
+ const csi::dsapi::DT_SinceAtTag & ) {}
+
+
+
+} // namespace inf
+} // namespace ary
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary_i/kernel/d_token.cxx b/autodoc/source/ary_i/kernel/d_token.cxx
new file mode 100644
index 000000000000..6157614ef30a
--- /dev/null
+++ b/autodoc/source/ary_i/kernel/d_token.cxx
@@ -0,0 +1,190 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <ary_i/d_token.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary_i/disdocum.hxx>
+
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+bool
+DT_Dsapi::IsWhiteOnly() const
+{
+ return false;
+}
+
+DT_TextToken::~DT_TextToken()
+{
+}
+
+void
+DT_TextToken::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_TextToken( *this );
+}
+
+bool
+DT_TextToken::IsWhiteOnly() const
+{
+ for ( const char * it = sText.c_str();
+ static_cast<UINT8>(*it) > 32;
+ ++it )
+ {
+ return false;
+ }
+ return true;
+}
+
+DT_White::~DT_White()
+{
+}
+
+void
+DT_White::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_White();
+}
+
+bool
+DT_White::IsWhiteOnly() const
+{
+ return true;
+}
+
+DT_MupType::~DT_MupType()
+{
+}
+
+void
+DT_MupType::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_MupType( *this );
+}
+
+DT_MupMember::~DT_MupMember()
+{
+}
+
+void
+DT_MupMember::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_MupMember( *this );
+}
+
+DT_MupConst::~DT_MupConst()
+{
+}
+
+void
+DT_MupConst::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_MupConst( *this );
+}
+
+DT_Style::~DT_Style()
+{
+}
+
+void
+DT_Style::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_Style( *this );
+}
+
+DT_EOL::~DT_EOL()
+{
+}
+
+void
+DT_EOL::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_EOL();
+}
+
+bool
+DT_EOL::IsWhiteOnly() const
+{
+ return true;
+}
+
+DT_StdAtTag::~DT_StdAtTag()
+{
+}
+
+void
+DT_StdAtTag::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_StdAtTag( *this );
+}
+
+DT_SeeAlsoAtTag::~DT_SeeAlsoAtTag()
+{
+}
+
+void
+DT_SeeAlsoAtTag::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_SeeAlsoAtTag( *this );
+}
+
+DT_ParameterAtTag::~DT_ParameterAtTag()
+{
+}
+
+void
+DT_ParameterAtTag::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_ParameterAtTag( *this );
+}
+
+DT_SinceAtTag::~DT_SinceAtTag()
+{
+}
+
+void
+DT_SinceAtTag::DisplayAt( DocumentationDisplay & o_rDisplay ) const
+{
+ o_rDisplay.Display_SinceAtTag( *this );
+}
+
+
+
+
+} // namespace dsapi
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/ary_i/kernel/makefile.mk b/autodoc/source/ary_i/kernel/makefile.mk
new file mode 100644
index 000000000000..79675bc03c81
--- /dev/null
+++ b/autodoc/source/ary_i/kernel/makefile.mk
@@ -0,0 +1,60 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=ary2_cinfo
+
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/ci_atag2.obj \
+ $(OBJ)$/ci_text2.obj \
+ $(OBJ)$/d_token.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/display/html/aryattrs.cxx b/autodoc/source/display/html/aryattrs.cxx
new file mode 100644
index 000000000000..2eef10ded2e9
--- /dev/null
+++ b/autodoc/source/display/html/aryattrs.cxx
@@ -0,0 +1,251 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "aryattrs.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/getncast.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/cpp/cp_type.hxx>
+#include "strconst.hxx"
+
+
+
+
+//******************** HtmlDisplay_Impl *********************//
+
+const char *
+Get_ClassTypeKey( const ary::cpp::Class & i_rClass )
+{
+ return i_rClass.ClassKey() == ary::cpp::CK_class
+ ? C_sHFTypeTitle_Class
+ : i_rClass.ClassKey() == ary::cpp::CK_struct
+ ? C_sHFTypeTitle_Struct
+ : C_sHFTypeTitle_Union;
+
+}
+
+const char *
+Get_TypeKey( const ary::cpp::CodeEntity & i_rCe )
+{
+ if ( ary::is_type<ary::cpp::Class>(i_rCe) )
+ {
+ return Get_ClassTypeKey(
+ ary::ary_cast<ary::cpp::Class>(i_rCe) );
+ }
+ if ( ary::is_type<ary::cpp::Enum>(i_rCe) )
+ {
+ return "enum";
+ }
+ return "";
+}
+
+bool
+Ce_IsInternal( const ary::cpp::CodeEntity & i_rCe )
+{
+ return NOT i_rCe.IsVisible();
+}
+
+const char *
+SyntaxText_PreName( const ary::cpp::Function & i_rFunction,
+ const ary::cpp::Gate & i_rAryGate )
+{
+ static StreamStr sResult( 150 );
+ sResult.seekp(0);
+
+ // write pre-name:
+ const ary::cpp::FunctionFlags & rFlags = i_rFunction.Flags();
+ if ( rFlags.IsStaticLocal() OR rFlags.IsStaticMember() )
+ sResult << "static ";
+ if ( rFlags.IsExplicit() )
+ sResult << "explicit ";
+ if ( rFlags.IsMutable() )
+ sResult << "mutable ";
+ if ( i_rFunction.Virtuality() != ary::cpp::VIRTUAL_none )
+ sResult << "virtual ";
+ i_rAryGate.Types().Get_TypeText( sResult, i_rFunction.ReturnType() );
+ sResult << " ";
+
+ return sResult.c_str();
+}
+
+const char *
+SyntaxText_PostName( const ary::cpp::Function & i_rFunction,
+ const ary::cpp::Gate & i_rAryGate )
+{
+ static StreamStr sResult( 850 );
+ sResult.seekp(0);
+
+ // parameters and con_vol
+ i_rAryGate.Ces().Get_SignatureText( sResult, i_rFunction.Signature(), &i_rFunction.ParamInfos() );
+
+ // write Exceptions:
+ const std::vector< ary::cpp::Type_id > *
+ pThrow = i_rFunction.Exceptions();
+ if ( pThrow)
+ {
+
+ std::vector< ary::cpp::Type_id >::const_iterator
+ it = pThrow->begin();
+ std::vector< ary::cpp::Type_id >::const_iterator
+ it_end = pThrow->end();
+
+ if (it != it_end)
+ {
+ sResult << " throw( ";
+ i_rAryGate.Types().Get_TypeText(sResult, *it);
+
+ for ( ++it; it != it_end; ++it )
+ {
+ sResult << ", ";
+ i_rAryGate.Types().Get_TypeText(sResult, *it);
+ }
+ sResult << " )";
+ }
+ else
+ {
+ sResult << " throw( )";
+ }
+ } // endif // pThrow
+
+ // abstractness:
+ if ( i_rFunction.Virtuality() == ary::cpp::VIRTUAL_abstract )
+ sResult << " = 0";
+
+ // finish:
+ sResult << ";";
+
+ return sResult.c_str();
+}
+
+bool
+Get_TypeText( const char * & o_rPreName,
+ const char * & o_rName,
+ const char * & o_rPostName,
+ ary::cpp::Type_id i_nTypeid,
+ const ary::cpp::Gate & i_rAryGate )
+{
+ static StreamStr sResult_PreName(250);
+ static StreamStr sResult_Name(250);
+ static StreamStr sResult_PostName(250);
+
+ sResult_PreName.seekp(0);
+ sResult_Name.seekp(0);
+ sResult_PostName.seekp(0);
+
+ bool ret = i_rAryGate.Types().Get_TypeText(
+ sResult_PreName,
+ sResult_Name,
+ sResult_PostName,
+ i_nTypeid );
+ if ( sResult_PreName.tellp() > 0 )
+ {
+ char cLast = *( sResult_PreName.c_str() + (sResult_PreName.tellp() - 1) );
+ if (cLast != ':' AND cLast != ' ')
+ sResult_PreName << " ";
+ }
+
+
+ if (ret)
+ {
+ o_rPreName = sResult_PreName.c_str();
+ o_rName = sResult_Name.c_str();
+ o_rPostName = sResult_PostName.c_str();
+ }
+ else
+ {
+ o_rPreName = o_rName = o_rPostName = "";
+ }
+ return ret;
+}
+
+
+
+
+//********************* FunctionParam_Iterator *****************//
+
+
+FunctionParam_Iterator::FunctionParam_Iterator()
+ : // itTypes
+ // itTypes_end
+ // itNames_andMore
+ // itNames_andMore_end
+ eConVol(ary::cpp::CONVOL_none)
+{
+ static std::vector<ary::cpp::Type_id> aTypesNull_;
+ static StringVector aNamesNull_;
+
+ itTypes = itTypes_end = aTypesNull_.end();
+ itNames_andMore = itNames_andMore_end = aNamesNull_.end();
+}
+
+FunctionParam_Iterator::~FunctionParam_Iterator()
+{
+}
+
+FunctionParam_Iterator &
+FunctionParam_Iterator::operator++()
+{
+ if ( IsValid() )
+ {
+ ++itTypes;
+ ++itNames_andMore;
+ }
+ return *this;
+}
+
+void
+FunctionParam_Iterator::Assign( const ary::cpp::Function & i_rFunction )
+{
+ const ary::cpp::OperationSignature &
+ rSigna = i_rFunction.Signature();
+
+ const std::vector<ary::cpp::Type_id> &
+ rTypes = rSigna.Parameters();
+ const StringVector &
+ rNames = i_rFunction.ParamInfos();
+
+ if ( rTypes.size() != rNames.size() OR rTypes.size() == 0 )
+ return;
+
+ itTypes = rTypes.begin();
+ itTypes_end = rTypes.end();
+ itNames_andMore = rNames.begin();
+ itNames_andMore_end = rNames.end();
+
+ eConVol = rSigna.ConVol();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/aryattrs.hxx b/autodoc/source/display/html/aryattrs.hxx
new file mode 100644
index 000000000000..16d762f750a2
--- /dev/null
+++ b/autodoc/source/display/html/aryattrs.hxx
@@ -0,0 +1,157 @@
+/* -*- 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 ADC_DISPLAY_ARYATTRS_HXX
+#define ADC_DISPLAY_ARYATTRS_HXX
+
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/doc/d_docu.hxx>
+#include <ary/doc/d_oldcppdocu.hxx>
+
+namespace ary
+{
+ namespace cpp
+ {
+ class CodeEntity;
+ class Class;
+ class DisplayGate;
+ class Function;
+ class Namespace;
+ }
+}
+
+
+
+
+const char * Get_ClassTypeKey(
+ const ary::cpp::Class & i_rClass );
+const char * Get_TypeKey(
+ const ary::cpp::CodeEntity &
+ i_rCe );
+bool Ce_IsInternal(
+ const ary::cpp::CodeEntity &
+ i_rCe );
+const char * SyntaxText_PreName(
+ const ary::cpp::Function &
+ i_rFunction,
+ const ary::cpp::Gate & i_rAryGate );
+const char * SyntaxText_PostName(
+ const ary::cpp::Function &
+ i_rFunction,
+ const ary::cpp::Gate & i_rAryGate );
+
+bool Get_TypeText(
+ const char * & o_rPreName,
+ const char * & o_rName,
+ const char * & o_rPostName,
+ ary::cpp::Type_id i_nTypeid,
+ const ary::cpp::Gate & i_rAryGate );
+
+
+inline const ary::doc::OldCppDocu *
+Get_CppDocu(const ary::doc::Documentation & i_doc)
+{
+ return dynamic_cast< const ary::doc::OldCppDocu* >(i_doc.Data());
+}
+
+
+class FunctionParam_Iterator
+{
+ public:
+ FunctionParam_Iterator();
+ ~FunctionParam_Iterator();
+
+ operator bool() const;
+ FunctionParam_Iterator &
+ operator++();
+
+ void Assign(
+ const ary::cpp::Function &
+ i_rFunction );
+
+ ary::cpp::Type_id
+ CurType() const;
+ const String & CurName() const;
+
+ bool IsFunctionConst() const;
+ bool IsFunctionVolatile() const;
+
+ private:
+ typedef std::vector<ary::cpp::Type_id>::const_iterator Type_Iterator;
+ typedef StringVector::const_iterator Name_Iterator;
+
+ bool IsValid() const;
+
+ // Forbidden
+ FunctionParam_Iterator &
+ operator++(int);
+ // DATA
+ Type_Iterator itTypes;
+ Type_Iterator itTypes_end;
+ Name_Iterator itNames_andMore; /// Name, init-value.
+ Name_Iterator itNames_andMore_end;
+
+ ary::cpp::E_ConVol eConVol;
+};
+
+
+
+
+// IMPLEMENTATION
+inline
+FunctionParam_Iterator::operator bool() const
+ { return IsValid(); }
+
+inline bool
+FunctionParam_Iterator::IsValid() const
+{
+ // By C'tor and Assign(), it is assured, that
+ // both iterators are valid, if one is valid.
+ return itTypes != itTypes_end;
+}
+
+inline ary::cpp::Type_id
+FunctionParam_Iterator::CurType() const
+ { return IsValid() ? *itTypes : ary::cpp::Type_id(0); }
+inline const String &
+FunctionParam_Iterator::CurName() const
+ { return IsValid() ? *itNames_andMore : String::Null_(); }
+inline bool
+FunctionParam_Iterator::IsFunctionConst() const
+ { return (eConVol & ary::cpp::CONVOL_const) != 0; }
+inline bool
+FunctionParam_Iterator::IsFunctionVolatile() const
+ { return (eConVol & ary::cpp::CONVOL_volatile) != 0; }
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/cfrstd.cxx b/autodoc/source/display/html/cfrstd.cxx
new file mode 100644
index 000000000000..8a4a9f6bc91f
--- /dev/null
+++ b/autodoc/source/display/html/cfrstd.cxx
@@ -0,0 +1,347 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <cfrstd.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <time.h>
+
+
+/* CSS Styles
+ ----------
+
+Colors:
+- light background color #eeeeff
+- dark background color #ccccff
+- self in navibar background color #2222ad
+
+
+Fonts:
+- page title 20, bold, Arial
+- navibar main 12, bold, Arial
+- navibar sub 8, Arial, kapitälchen
+- attrtable title line 8, bold, Arial, kapitälchen
+- attrtable value line 8, Arial kapitälchen
+
+- namespace chain 13, bold
+- table title 13, bold
+- template line 13
+
+- member paragraph title 12, bold
+
+- docu paragraph title 11, bold
+- standard text 11
+
+- hierarchy 11, monospace
+
+
+classes:
+
+ td.title page title
+ h3 table title
+ h4 member paragraph title
+
+ td.nmain navigation main bar
+ td.nsub navigation sub bar
+ a.nmain links in navigation main bar
+ a.nsub links in navigation sub bar
+
+ td.attr1 attribute table head line
+ td.attr2 attribute table value line
+
+ p.namechain namespace chain in head of pages
+ p.tpl template line in head of pages
+
+ pre.doc preformatted docu
+ pre.hierarchy class bases hierarchy graphic
+
+ dl.syntax function- or variable-declaration field
+ a.syntax link in function- or variable-declaration field
+
+ p.dt docu paragraph title
+ dl.dt docu paragraph title
+
+ p standard text
+ dl standard text
+ dd standard text
+*/
+
+
+#define CRLF "\n"
+
+namespace
+{
+
+bool bUse_OOoFrameDiv = true;
+
+
+//*************** These are used for IDL currently only! ********************
+
+const char * const C_sStdStyle =
+ "/*See bottom of file for explanations.*/"CRLF
+ CRLF
+ "body { background-color:#ffffff; }"CRLF
+ CRLF
+ "h3 { font-size:13pt; font-weight:bold;"CRLF
+ " margin-top:3pt; margin-bottom:1pt; }"CRLF
+ "p, dt, dd, pre { font-size:11pt;"CRLF
+ " margin-top:3pt; margin-bottom:1pt; }"CRLF
+ "pre { font-family:monospace; }"CRLF
+ CRLF
+ "table.navimain { background-color:#eeeeff; }"CRLF
+ "table.subtitle { margin-top:6pt; margin-bottom:6pt; }"CRLF
+ CRLF
+ "td { font-size:11pt; }"CRLF
+ "td.title { font-family: Arial; font-size:19pt; font-weight:bold;"CRLF
+ " line-height:30pt; background-color:#ccccff; text-align:center; }"CRLF
+ "td.subtitle { font-family: Arial; font-size:13pt;"CRLF
+ " line-height:20pt; background-color:#ccccff; }"CRLF
+ "td.crosstitle { font-size:12pt; font-weight:bold;"CRLF
+ " line-height:15pt; background-color:#eeeeff; }"CRLF
+ "td.imdetail { width:100%; background-color:#eeeeff; }"CRLF
+ CRLF
+ "td.imsum_left { width:30%; }"CRLF
+ "td.imsum_right { width:70%; }"CRLF
+ CRLF
+ "td.navimain, a.navimain"CRLF
+ " { text-align:center; font-family: Arial; font-size:12pt; font-weight:bold; }"CRLF
+ "td.navimainself { text-align:center; font-family: Arial; font-size:12pt; font-weight:bold;"CRLF
+ " color:#ffffff; background-color:#2222ad; }"CRLF
+ "td.navimainnone { text-align:center; font-family: Arial; font-size:12pt; }"CRLF
+ "td.navisub, a.navisub"CRLF
+ " { text-align:center; font-family: Arial; font-size:9pt; font-variant:small-caps; }"CRLF
+ "td.navimain, td.navisub"CRLF
+ " { padding-left:7pt; padding-right:7pt; }"CRLF
+ CRLF
+ "a.membertitle { font-size:12pt; font-weight:bold; line-height:18pt; }"CRLF
+ "a.navimain, a.navisub { color:#000000; }"CRLF
+ ".dt { font-weight:bold; }"CRLF
+ ".namechain { font-size:13pt; font-weight:bold;"CRLF
+ " margin-top:3pt; margin-bottom:6pt; }"CRLF
+ ".title2 { font-size:13pt; font-style:italic; font-weight:bold; text-align:left; }"CRLF
+ ;
+
+
+const char * const C_sCssExplanations =
+ "/* Explanation of CSS classes:"CRLF
+ CRLF
+ ".navimain Text in main navigation bar."CRLF
+ ".navisub Text in lower navigation bar."CRLF
+ "td.navimainself Cell in main navigation bar with \"selected\" shadow: You are here."CRLF
+ "td.navimainnone Cell in main navigation bar with no link."CRLF
+ CRLF
+ ".namechain Line with current module path."CRLF
+ CRLF
+ "td.crosstitle Comment box for bases (base interfaces etc.)"CRLF
+ "td.imsum_left Left part of such boxes."CRLF
+ "td.imsum_right Right part of such boxes."CRLF
+ CRLF
+ "td.title Main title of the page like \"interface XYz\""CRLF
+ ".subtitle Tables, and head cells of those, which list members"CRLF
+ " like \"method summary\" and \"method details\"."CRLF
+ CRLF
+ "td.imdetail Background table of method's detail description."CRLF
+ "a.membertitle Method name (as jump label) in method's detail"CRLF
+ " description."CRLF
+ ".title2 smaller font prefixes to page titles"CRLF
+ "*/"CRLF
+ ;
+
+const char * const C_sStdStyle_withDivFrame =
+ "/*See bottom of file for explanations.*/"CRLF
+ CRLF
+ "body { background-color:#ffffff; }"CRLF
+ CRLF
+ "#adc-idlref h3 { font-size:13pt; font-weight:bold;"CRLF
+ " margin-top:3pt; margin-bottom:1pt; }"CRLF
+ "#adc-idlref p, #adc-idlref dt, #adc-idlref dd, #adc-idlref pre"CRLF
+ " { font-size:11pt;"CRLF
+ " margin-top:3pt; margin-bottom:1pt; }"CRLF
+ "#adc-idlref pre { font-family:monospace; }"CRLF
+ CRLF
+ "#adc-idlref table.navimain { background-color:#eeeeff; }"CRLF
+ "#adc-idlref table.subtitle { margin-top:6pt; margin-bottom:6pt; }"CRLF
+ CRLF
+ "#adc-idlref td { font-size:11pt; }"CRLF
+ "#adc-idlref td.title { font-family: Arial; font-size:19pt; font-weight:bold;"CRLF
+ " line-height:30pt; background-color:#ccccff; text-align:center; }"CRLF
+ "#adc-idlref td.subtitle { font-family: Arial; font-size:13pt;"CRLF
+ " line-height:20pt; background-color:#ccccff; }"CRLF
+ "#adc-idlref td.crosstitle { font-size:12pt; font-weight:bold;"CRLF
+ " line-height:15pt; background-color:#eeeeff; }"CRLF
+ "#adc-idlref td.imdetail { width:100%; background-color:#eeeeff; }"CRLF
+ CRLF
+ "#adc-idlref td.imsum_left { width:30%; }"CRLF
+ "#adc-idlref td.imsum_right { width:70%; }"CRLF
+ CRLF
+ "#adc-idlref td.navimain, #adc-idlref a.navimain"CRLF
+ " { text-align:center; font-family: Arial; font-size:12pt; font-weight:bold; }"CRLF
+ "#adc-idlref td.navimainself { text-align:center; font-family: Arial; font-size:12pt; font-weight:bold;"CRLF
+ " color:#ffffff; background-color:#2222ad; }"CRLF
+ "#adc-idlref td.navimainnone { text-align:center; font-family: Arial; font-size:12pt; }"CRLF
+ "#adc-idlref td.navisub, #adc-idlref a.navisub"CRLF
+ " { text-align:center; font-family: Arial; font-size:9pt; font-variant:small-caps; }"CRLF
+ "#adc-idlref td.navimain, #adc-idlref td.navisub"CRLF
+ " { padding-left:7pt; padding-right:7pt; }"CRLF
+ CRLF
+ "#adc-idlref a.membertitle { font-size:12pt; font-weight:bold; line-height:18pt; }"CRLF
+ "#adc-idlref a.navimain, #adc-idlref a.navisub { color:#000000; }"CRLF
+ "#adc-idlref .dt { font-weight:bold; }"CRLF
+ "#adc-idlref .namechain { font-size:13pt; font-weight:bold;"CRLF
+ " margin-top:3pt; margin-bottom:6pt; }"CRLF
+ "#adc-idlref .title2 { font-size:13pt; font-style:italic; font-weight:bold; text-align:left; }"CRLF
+ ""CRLF
+ "#adc-idlref table { empty-cells:show; }"CRLF
+ ""CRLF
+ "#adc-idlref .childlist td, "CRLF
+ "#adc-idlref .commentedlinks td, "CRLF
+ "#adc-idlref .memberlist td, "CRLF
+ "#adc-idlref .subtitle td, "CRLF
+ "#adc-idlref .crosstitle td { border: .1pt solid #000000; }"CRLF
+ ""CRLF
+ "#adc-idlref .flag-table td { border: .1pt solid #cccccc; } "CRLF
+ ""CRLF
+ "#adc-idlref .title-table td, "CRLF
+ "#adc-idlref .table-in-method td, "CRLF
+ "#adc-idlref .table-in-data td, "CRLF
+ "#adc-idlref .navimain td, "CRLF
+ "#adc-idlref .navisub td, "CRLF
+ "#adc-idlref .expl-table td, "CRLF
+ "#adc-idlref .param-table td { border: none; }"CRLF
+ ;
+
+
+} // anonymous namespace
+
+
+StdFrame::StdFrame()
+ : sDevelopersGuideHtmlRoot(),
+ bSimpleLinks(false)
+{
+}
+
+DYN Html_Image *
+StdFrame::LogoSrc() const
+{
+ return 0;
+
+// return new Html_Image( "logodot-blu.gif",
+// "109",
+// "54",
+// "RIGHT",
+// "0",
+// "OpenOffice" );
+
+}
+
+const char *
+StdFrame::LogoLink() const
+{
+ return "";
+// return "http://www.sun.com";
+// return "http://www.openoffice.org";
+}
+
+
+String MakeCopyRight();
+
+const char *
+StdFrame::CopyrightText() const
+{
+ static String sCopyRight_( MakeCopyRight() );
+ return sCopyRight_.c_str();
+}
+
+const char *
+StdFrame::CssStyle() const
+{
+ if (bUse_OOoFrameDiv)
+ return C_sStdStyle_withDivFrame;
+ else
+ return C_sStdStyle;
+}
+
+const char *
+StdFrame::CssStylesExplanation() const
+{
+ return C_sCssExplanations;
+}
+
+const char *
+StdFrame::DevelopersGuideHtmlRoot() const
+{
+ return sDevelopersGuideHtmlRoot;
+}
+
+bool
+StdFrame::SimpleLinks() const
+{
+ return bSimpleLinks;
+}
+
+void
+StdFrame::Set_DevelopersGuideHtmlRoot( const String & i_directory )
+{
+ if (NOT i_directory.empty())
+ {
+ if (i_directory.char_at(i_directory.length()-1) == '/')
+ {
+ sDevelopersGuideHtmlRoot.assign(i_directory,i_directory.length()-1);
+ return;
+ }
+ }
+ sDevelopersGuideHtmlRoot = i_directory;
+}
+
+void
+StdFrame::Set_SimpleLinks()
+{
+ bSimpleLinks = true;
+}
+
+String
+MakeCopyRight()
+{
+ StreamStr cr(700);
+ time_t
+ gt;
+ time(&gt);
+ tm *
+ plt = localtime(&gt);
+ int year = 1900 + plt->tm_year;
+
+ cr << "Copyright &copy; 1995, "
+ << year
+ << ", Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.";
+ return String(cr.c_str());
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/chd_udk2.cxx b/autodoc/source/display/html/chd_udk2.cxx
new file mode 100644
index 000000000000..76380aecc6fa
--- /dev/null
+++ b/autodoc/source/display/html/chd_udk2.cxx
@@ -0,0 +1,204 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <html/chd_udk2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/ary_disp.hxx>
+#include <ary/ceslot.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/cp_ce.hxx>
+
+#include "dsply_cl.hxx"
+#include "dsply_da.hxx"
+#include "dsply_op.hxx"
+#include "opageenv.hxx"
+#include "outfile.hxx"
+#include "pagemake.hxx"
+
+
+
+//******************** CppHtmlDisplay_Udk2 ********************//
+
+
+CppHtmlDisplay_Udk2::CppHtmlDisplay_Udk2()
+ : pCurPageEnv(0)
+{
+}
+
+CppHtmlDisplay_Udk2::~CppHtmlDisplay_Udk2()
+{
+}
+
+void
+CppHtmlDisplay_Udk2::do_Run( const char * i_sOutputDirectory,
+ const ary::cpp::Gate & i_rAryGate,
+ const display::CorporateFrame & i_rLayout )
+{
+ SetRunData( i_sOutputDirectory, i_rAryGate, i_rLayout );
+
+ Create_Css_File();
+ Create_Overview_File();
+ Create_Help_File();
+ Create_AllDefs_File();
+
+ CreateFiles_InSubTree_Namespaces();
+ CreateFiles_InSubTree_Index();
+}
+
+void
+CppHtmlDisplay_Udk2::SetRunData( const char * i_sOutputDirectory,
+ const ary::cpp::Gate & i_rAryGate,
+ const display::CorporateFrame & i_rLayout )
+{
+ csv::ploc::Path aOutputDir( i_sOutputDirectory, true );
+ pCurPageEnv = new OuputPage_Environment( aOutputDir, i_rAryGate, i_rLayout );
+}
+
+void
+CppHtmlDisplay_Udk2::Create_Css_File()
+{
+ pCurPageEnv->MoveDir_2Root();
+ pCurPageEnv->SetFile_Css();
+ HtmlDocuFile::WriteCssFile(pCurPageEnv->CurPath());
+}
+
+void
+CppHtmlDisplay_Udk2::Create_Overview_File()
+{
+ pCurPageEnv->MoveDir_2Root();
+ PageDisplay aPageMaker( *pCurPageEnv );
+ aPageMaker.Create_OverviewFile();
+}
+
+void
+CppHtmlDisplay_Udk2::Create_Help_File()
+{
+ PageDisplay aPageMaker( *pCurPageEnv );
+ aPageMaker.Create_HelpFile();
+}
+
+void
+CppHtmlDisplay_Udk2::Create_AllDefs_File()
+{
+ PageDisplay aPageMaker( *pCurPageEnv );
+ aPageMaker.Create_AllDefsFile();
+}
+
+void
+CppHtmlDisplay_Udk2::CreateFiles_InSubTree_Namespaces()
+{
+ Cout() << "\nCreate files in subtree namespaces" << Endl();
+
+ const ary::cpp::Namespace &
+ rGlobalNsp = Gate().Ces().GlobalNamespace();
+
+ RecursiveDisplay_Namespace(rGlobalNsp);
+ Cout() << Endl();
+}
+
+void
+CppHtmlDisplay_Udk2::CreateFiles_InSubTree_Index()
+{
+ Cout() << "\nCreate files in subtree index" << Endl();
+ Cout() << Endl();
+
+ PageDisplay aPageMaker( *pCurPageEnv );
+ aPageMaker.Create_IndexFiles();
+}
+
+void
+CppHtmlDisplay_Udk2::RecursiveDisplay_Namespace( const ary::cpp::Namespace & i_rNsp )
+{
+ if (i_rNsp.Owner().IsValid())
+ pCurPageEnv->MoveDir_Down2( i_rNsp );
+ else
+ pCurPageEnv->MoveDir_2Names();
+ DisplayFiles_InNamespace( i_rNsp );
+
+ typedef std::vector< const ary::cpp::Namespace* > NspList;
+ NspList aSubNspList;
+ i_rNsp.Get_SubNamespaces( aSubNspList );
+ for ( NspList::const_iterator it = aSubNspList.begin();
+ it != aSubNspList.end();
+ ++it )
+ {
+ RecursiveDisplay_Namespace( *(*it) );
+ } // end for
+
+ pCurPageEnv->MoveDir_Up();
+}
+
+void
+CppHtmlDisplay_Udk2::DisplayFiles_InNamespace( const ary::cpp::Namespace & i_rNsp )
+{
+ PageDisplay aPageMaker( *pCurPageEnv );
+
+ ary::Slot_AutoPtr pSlot;
+
+ // Namespace
+ aPageMaker.Create_NamespaceFile();
+
+ // Classes
+ ClassDisplayer aClassDisplayer( *pCurPageEnv );
+ DisplaySlot( aClassDisplayer, i_rNsp, ary::cpp::Namespace::SLOT_Classes );
+
+ // Enums
+ DisplaySlot( aPageMaker, i_rNsp, ary::cpp::Namespace::SLOT_Enums );
+
+ // Typedefs
+ DisplaySlot( aPageMaker, i_rNsp, ary::cpp::Namespace::SLOT_Typedefs );
+
+ // Operations
+ OperationsDisplay aOperationsDisplayer( *pCurPageEnv );
+ DisplaySlot( aOperationsDisplayer, i_rNsp, ary::cpp::Namespace::SLOT_Operations );
+ aOperationsDisplayer.Create_Files();
+
+ // Data
+ DataDisplay aDataDisplayer( *pCurPageEnv );
+
+ aDataDisplayer.PrepareForConstants();
+ DisplaySlot( aDataDisplayer, i_rNsp, ary::cpp::Namespace::SLOT_Constants );
+
+ aDataDisplayer.PrepareForVariables();
+ DisplaySlot( aDataDisplayer, i_rNsp, ary::cpp::Namespace::SLOT_Variables );
+
+ aDataDisplayer.Create_Files();
+}
+
+const ary::cpp::Gate &
+CppHtmlDisplay_Udk2::Gate() const
+{
+ return pCurPageEnv->Gate();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/cre_link.cxx b/autodoc/source/display/html/cre_link.cxx
new file mode 100644
index 000000000000..74561b027e73
--- /dev/null
+++ b/autodoc/source/display/html/cre_link.cxx
@@ -0,0 +1,272 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cre_link.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_define.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_macro.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/loc/locp_le.hxx>
+#include "hdimpl.hxx"
+#include "opageenv.hxx"
+#include "strconst.hxx"
+
+
+
+
+
+LinkCreator::LinkCreator( char * o_rOutput,
+ uintt i_nOutputSize )
+ : pOut(o_rOutput),
+ nOutMaxSize(i_nOutputSize),
+ pEnv(0)
+{
+}
+
+LinkCreator::~LinkCreator()
+{
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Namespace & i_rData )
+{
+ Create_PrePath( i_rData );
+ strcat( pOut, "index.html" ); // KORR_FUTURE // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Class & i_rData )
+{
+ Create_PrePath( i_rData );
+ strcat( pOut, ClassFileName(i_rData.LocalName().c_str()) ); // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Enum & i_rData )
+{
+ Create_PrePath( i_rData );
+ strcat( pOut, EnumFileName(i_rData.LocalName().c_str()) ); // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Typedef & i_rData )
+{
+ Create_PrePath( i_rData );
+ strcat( pOut, TypedefFileName(i_rData.LocalName().c_str()) ); // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Function & i_rData )
+{
+ Create_PrePath( i_rData );
+
+ if ( i_rData.Protection() != ary::cpp::PROTECT_global )
+ {
+ strcat( pOut, "o.html" ); // SAFE STRCAT (#100211# - checked)
+ }
+ else
+ {
+ csv_assert(i_rData.Location().IsValid());
+ const ary::loc::File &
+ rFile = pEnv->Gate().Locations().Find_File(i_rData.Location());
+ strcat( pOut, HtmlFileName("o-", rFile.LocalName().c_str()) ); // SAFE STRCAT (#100211# - checked)
+ }
+
+ csv_assert(pEnv != 0);
+ strcat( pOut, OperationLink(pEnv->Gate(), i_rData.LocalName(), i_rData.CeId()) ); // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Variable & i_rData )
+{
+ Create_PrePath( i_rData );
+
+ if ( i_rData.Protection() != ary::cpp::PROTECT_global )
+ {
+ strcat( pOut, "d.html" ); // SAFE STRCAT (#100211# - checked)
+ }
+ else
+ {
+ csv_assert(i_rData.Location().IsValid());
+ const ary::loc::File &
+ rFile = pEnv->Gate().Locations().Find_File(i_rData.Location());
+ strcat( pOut, HtmlFileName("d-", rFile.LocalName().c_str()) ); // SAFE STRCAT (#100211# - checked)
+ }
+
+ strcat( pOut, DataLink(i_rData.LocalName()) ); // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::EnumValue & i_rData )
+{
+ const ary::cpp::CodeEntity *
+ pEnum = pEnv->Gate().Ces().Search_Ce(i_rData.Owner());
+ if (pEnum == 0)
+ return;
+
+ pEnum->Accept(*this);
+ strcat(pOut, "#"); // SAFE STRCAT (#100211# - checked)
+ strcat(pOut, i_rData.LocalName().c_str()); // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Define & i_rData )
+{
+ // KORR_FUTURE
+ // Only valid from Index:
+
+ *pOut = '\0';
+ strcat(pOut, "../def-all.html#"); // SAFE STRCAT (#100211# - checked)
+ strcat(pOut, i_rData.LocalName().c_str()); // SAFE STRCAT (#100211# - checked)
+}
+
+void
+LinkCreator::do_Process( const ary::cpp::Macro & i_rData )
+{
+ // KORR_FUTURE
+ // Only valid from Index:
+
+ *pOut = '\0';
+ strcat(pOut, "../def-all.html#"); // SAFE STRCAT (#100211# - checked)
+ strcat(pOut, i_rData.LocalName().c_str()); // SAFE STRCAT (#100211# - checked)
+}
+
+
+namespace
+{
+
+class NameScope_const_iterator
+{
+ public:
+ NameScope_const_iterator(
+ ary::cpp::Ce_id i_nId,
+ const ary::cpp::Gate &
+ i_rGate );
+
+ operator bool() const { return pCe != 0; }
+ const String & operator*() const;
+
+ void go_up();
+
+ private:
+ const ary::cpp::CodeEntity *
+ pCe;
+ const ary::cpp::Gate *
+ pGate;
+};
+
+
+NameScope_const_iterator::NameScope_const_iterator(
+ ary::cpp::Ce_id i_nId,
+ const ary::cpp::Gate & i_rGate )
+ : pCe(i_rGate.Ces().Search_Ce(i_nId)),
+ pGate(&i_rGate)
+{
+}
+
+const String &
+NameScope_const_iterator::operator*() const
+{
+ return pCe ? pCe->LocalName()
+ : String::Null_();
+}
+
+void
+NameScope_const_iterator::go_up()
+{
+ if (pCe == 0)
+ return;
+ pCe = pGate->Ces().Search_Ce(pCe->Owner());
+}
+
+
+void Recursive_CreatePath(
+ char * o_pOut,
+ const NameScope_const_iterator &
+ i_it );
+
+void
+Recursive_CreatePath( char * o_pOut,
+ const NameScope_const_iterator & i_it )
+{
+ if (NOT i_it)
+ return;
+
+ NameScope_const_iterator it( i_it );
+ it.go_up();
+ if (NOT it)
+ return; // Global Namespace
+ Recursive_CreatePath( o_pOut, it );
+
+ strcat( o_pOut, (*i_it).c_str() ); // SAFE STRCAT (#100211# - checked)
+ strcat( o_pOut, "/" ); // SAFE STRCAT (#100211# - checked)
+}
+
+
+} // anonymous namespace
+
+
+
+
+
+void
+LinkCreator::Create_PrePath( const ary::cpp::CodeEntity & i_rData )
+{
+ *pOut = NULCH;
+
+ if ( pEnv->CurNamespace() != 0 )
+ {
+ if ( pEnv->CurClass()
+ ? pEnv->CurClass()->CeId() == i_rData.Owner()
+ : pEnv->CurNamespace()->CeId() == i_rData.Owner() )
+ return;
+
+ strcat( pOut, PathUp(pEnv->Depth() - 1) ); // SAFE STRCAT (#100211# - checked)
+ }
+ else
+ { // Within Index
+ strcat( pOut, "../names/" ); // SAFE STRCAT (#100211# - checked)
+ }
+
+ NameScope_const_iterator it( i_rData.Owner(), pEnv->Gate() );
+ Recursive_CreatePath( pOut, it );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/cre_link.hxx b/autodoc/source/display/html/cre_link.hxx
new file mode 100644
index 000000000000..c79523ff655f
--- /dev/null
+++ b/autodoc/source/display/html/cre_link.hxx
@@ -0,0 +1,136 @@
+/* -*- 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 ADC_DISPLAY_CRE_LINK_HXX
+#define ADC_DISPLAY_CRE_LINK_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+namespace cpp
+{
+ class CodeEntity;
+ class Namespace;
+ class Class;
+ class Enum;
+ class Typedef;
+ class Function;
+ class Variable;
+ class EnumValue;
+ class Define;
+ class Macro;
+}
+}
+
+
+class OuputPage_Environment;
+
+
+
+/** Displays links to ->{ary::cpp::CodeEntity CodeEntites}.
+*/
+class LinkCreator : public csv::ProcessorIfc,
+ public csv::ConstProcessor<ary::cpp::Namespace>,
+ public csv::ConstProcessor<ary::cpp::Class>,
+ public csv::ConstProcessor<ary::cpp::Enum>,
+ public csv::ConstProcessor<ary::cpp::Typedef>,
+ public csv::ConstProcessor<ary::cpp::Function>,
+ public csv::ConstProcessor<ary::cpp::Variable>,
+ public csv::ConstProcessor<ary::cpp::EnumValue>,
+ public csv::ConstProcessor<ary::cpp::Define>,
+ public csv::ConstProcessor<ary::cpp::Macro>
+{
+ public:
+ LinkCreator(
+ char * o_rOutput,
+ uintt i_nOutputSize );
+ ~LinkCreator();
+
+
+ void SetEnv(
+ const OuputPage_Environment &
+ i_rEnv );
+ private:
+ void Create_PrePath(
+ const ary::cpp::CodeEntity &
+ i_rData );
+ // Interface csv::ConstProcessor<>
+ virtual void do_Process(
+ const ary::cpp::Namespace &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Class &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Enum &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Typedef &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Function &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Variable &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::EnumValue &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Define &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Macro &
+ i_rData );
+ // DATA
+ char * pOut;
+ uintt nOutMaxSize;
+ const OuputPage_Environment *
+ pEnv;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+LinkCreator::SetEnv( const OuputPage_Environment & i_rEnv )
+ { pEnv = &i_rEnv; }
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/dsply_cl.cxx b/autodoc/source/display/html/dsply_cl.cxx
new file mode 100644
index 000000000000..f590889683c4
--- /dev/null
+++ b/autodoc/source/display/html/dsply_cl.cxx
@@ -0,0 +1,111 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "dsply_cl.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include "dsply_da.hxx"
+#include "dsply_op.hxx"
+#include "hdimpl.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+
+
+
+
+ClassDisplayer::ClassDisplayer( OuputPage_Environment & io_rEnv )
+ : pEnv(&io_rEnv)
+{
+}
+
+ClassDisplayer::~ClassDisplayer()
+{
+}
+
+void
+ClassDisplayer::DisplayFiles_InClass( const ary::cpp::Class & i_rData,
+ PageDisplay & io_rPageMaker )
+{
+ // Classes
+ ClassDisplayer aClassDisplayer( Env() );
+ DisplaySlot( aClassDisplayer, i_rData, ary::cpp::Class::SLOT_NestedClasses );
+
+ // Enums
+ DisplaySlot( io_rPageMaker, i_rData, ary::cpp::Class::SLOT_Enums );
+
+ // Typedefs
+ DisplaySlot( io_rPageMaker, i_rData, ary::cpp::Class::SLOT_Typedefs );
+
+ // Operations
+ OperationsDisplay aOperationsDisplayer( Env() );
+
+ aOperationsDisplayer.PrepareForStdMembers();
+ DisplaySlot( aOperationsDisplayer, i_rData, ary::cpp::Class::SLOT_Operations );
+
+ aOperationsDisplayer.PrepareForStaticMembers();
+ DisplaySlot( aOperationsDisplayer, i_rData, ary::cpp::Class::SLOT_StaticOperations );
+
+ aOperationsDisplayer.Create_Files();
+
+ // Data
+ DataDisplay aDataDisplayer( Env() );
+
+ aDataDisplayer.PrepareForStdMembers();
+ DisplaySlot( aDataDisplayer, i_rData, ary::cpp::Class::SLOT_Data );
+
+ aDataDisplayer.PrepareForStaticMembers();
+ DisplaySlot( aDataDisplayer, i_rData, ary::cpp::Class::SLOT_StaticData );
+
+ aDataDisplayer.Create_Files();
+}
+
+void
+ClassDisplayer::do_Process( const ary::cpp::Class & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ PageDisplay aPageMaker( Env() );
+ aPageMaker.Process(i_rData);
+
+ Env().MoveDir_Down2( i_rData );
+ DisplayFiles_InClass( i_rData, aPageMaker );
+ Env().MoveDir_Up();
+}
+
+const ary::cpp::Gate *
+ClassDisplayer::inq_Get_ReFinder() const
+{
+ return & pEnv->Gate();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/dsply_cl.hxx b/autodoc/source/display/html/dsply_cl.hxx
new file mode 100644
index 000000000000..f2be896d2564
--- /dev/null
+++ b/autodoc/source/display/html/dsply_cl.hxx
@@ -0,0 +1,90 @@
+/* -*- 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 ADC_DISPLAY_HTML_HD_PAGE_HXX
+#define ADC_DISPLAY_HTML_HD_PAGE_HXX
+
+// BASE CLASSES
+#include <ary/ary_disp.hxx>
+#include <cosv/tpl/processor.hxx>
+// USED SERVICES
+#include <ary/types.hxx>
+
+class OuputPage_Environment;
+
+namespace ary
+{
+namespace cpp
+{
+ class Class;
+}
+}
+
+class PageDisplay;
+
+
+
+
+class ClassDisplayer : public ary::Display,
+ public csv::ConstProcessor<ary::cpp::Class>
+{
+ public:
+ ClassDisplayer( // TODO
+ OuputPage_Environment &
+ io_rEnv );
+ virtual ~ClassDisplayer();
+
+ private:
+ // Interface csv::ConstProcessor<>:
+ virtual void do_Process(
+ const ary::cpp::Class &
+ i_data );
+ // Interface ary::Display:
+ virtual const ary::cpp::Gate *
+ inq_Get_ReFinder() const;
+
+ // Locals
+ void DisplayFiles_InClass(
+ const ary::cpp::Class &
+ i_rData,
+ PageDisplay & io_rPageMaker );
+
+ OuputPage_Environment &
+ Env() { return *pEnv; }
+
+ // DATA
+ OuputPage_Environment *
+ pEnv;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/dsply_da.cxx b/autodoc/source/display/html/dsply_da.cxx
new file mode 100644
index 000000000000..4989e774f946
--- /dev/null
+++ b/autodoc/source/display/html/dsply_da.cxx
@@ -0,0 +1,202 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "dsply_da.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/doc/d_docu.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/loc/locp_le.hxx>
+#include <udm/html/htmlitem.hxx>
+#include "hd_docu.hxx"
+#include "hdimpl.hxx"
+#include "html_kit.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+
+
+using namespace csi;
+
+
+
+DataDisplay::DataDisplay( OuputPage_Environment & io_rEnv )
+ : aMap_GlobalDataDisplay(),
+ pClassMembersDisplay(0),
+ pEnv( &io_rEnv ),
+ pDocuShow( new Docu_Display(io_rEnv) )
+{
+}
+
+DataDisplay::~DataDisplay()
+{
+ csv::erase_map_of_heap_ptrs( aMap_GlobalDataDisplay );
+}
+
+void
+DataDisplay::PrepareForConstants()
+{
+ if (pClassMembersDisplay)
+ pClassMembersDisplay = 0;
+
+ csv::erase_map_of_heap_ptrs( aMap_GlobalDataDisplay );
+}
+
+void
+DataDisplay::PrepareForVariables()
+{
+ // Doesn't need to do anything yet.
+}
+
+void
+DataDisplay::PrepareForStdMembers()
+{
+ csv::erase_map_of_heap_ptrs( aMap_GlobalDataDisplay );
+
+ pClassMembersDisplay = new PageDisplay(*pEnv);
+ const ary::cpp::Class * pClass = pEnv->CurClass();
+ csv_assert( pClass != 0 );
+ pClassMembersDisplay->Setup_DataFile_for(*pClass);
+}
+
+void
+DataDisplay::PrepareForStaticMembers()
+{
+ // Doesn't need to do anything yet.
+}
+
+void
+DataDisplay::Create_Files()
+{
+ if (pClassMembersDisplay)
+ {
+ pClassMembersDisplay->Create_File();
+ pClassMembersDisplay = 0;
+ }
+ else
+ {
+ for ( Map_FileId2PagePtr::const_iterator it = aMap_GlobalDataDisplay.begin();
+ it != aMap_GlobalDataDisplay.end();
+ ++it )
+ {
+ (*it).second->Create_File();
+ }
+ csv::erase_map_of_heap_ptrs( aMap_GlobalDataDisplay );
+ }
+}
+
+void
+DataDisplay::do_Process( const ary::cpp::Variable & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ PageDisplay & rPage = FindPage_for( i_rData );
+
+ csi::xml::Element & rOut = rPage.CurOut();
+ Display_SglDatum( rOut, i_rData );
+}
+
+const ary::cpp::Gate *
+DataDisplay::inq_Get_ReFinder() const
+{
+ return & pEnv->Gate();
+}
+
+PageDisplay &
+DataDisplay::FindPage_for( const ary::cpp::Variable & i_rData )
+{
+ if ( pClassMembersDisplay )
+ return *pClassMembersDisplay;
+
+ SourceFileId
+ nSourceFile = i_rData.Location();
+ PageDisplay *
+ pFound = csv::value_from_map( aMap_GlobalDataDisplay, nSourceFile, (PageDisplay*)0 );
+ if ( pFound == 0 )
+ {
+ pFound = new PageDisplay( *pEnv );
+ const ary::loc::File &
+ rFile = pEnv->Gate().Locations().Find_File( nSourceFile );
+ pFound->Setup_DataFile_for(rFile);
+ aMap_GlobalDataDisplay[nSourceFile] = pFound;
+ }
+
+ return *pFound;
+}
+
+void
+DataDisplay::Display_SglDatum( csi::xml::Element & rOut,
+ const ary::cpp::Variable & i_rData )
+{
+ adcdisp::ExplanationList aDocu(rOut, true);
+ aDocu.AddEntry( 0 );
+
+ aDocu.Term()
+ >> *new html::Label( DataLabel(i_rData.LocalName()) )
+ << " ";
+ aDocu.Term()
+ << i_rData.LocalName();
+
+ dshelp::Get_LinkedTypeText( aDocu.Def(), *pEnv, i_rData.Type() );
+ aDocu.Def()
+ << " "
+ >> *new html::Strong
+ << i_rData.LocalName();
+ if ( i_rData.ArraySize().length() > 0 )
+ {
+ aDocu.Def()
+ << "["
+ << i_rData.ArraySize()
+ << "]";
+ }
+ if ( i_rData.Initialisation().length() > 0 )
+ {
+ aDocu.Def()
+ << " = "
+ << i_rData.Initialisation();
+ }
+ aDocu.Def()
+ << ";"
+ << new html::LineBreak
+ << new html::LineBreak;
+
+ aDocu.AddEntry_NoTerm();
+
+ pDocuShow->Assign_Out(aDocu.Def());
+ pDocuShow->Process(i_rData.Docu());
+ pDocuShow->Unassign_Out();
+
+ rOut << new html::HorizontalLine;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/dsply_da.hxx b/autodoc/source/display/html/dsply_da.hxx
new file mode 100644
index 000000000000..45f0b15f9503
--- /dev/null
+++ b/autodoc/source/display/html/dsply_da.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ADC_DISPLAY_HTML_DSPLY_DA_HXX
+#define ADC_DISPLAY_HTML_DSPLY_DA_HXX
+
+// BASE CLASSES
+#include <ary/ary_disp.hxx>
+#include <cosv/tpl/processor.hxx>
+// USED SERVICES
+#include <ary/cpp/c_ce.hxx>
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Variable;
+ }
+}
+namespace csi
+{
+ namespace xml
+ {
+ class Element;
+ }
+}
+
+
+
+
+class OuputPage_Environment;
+class PageDisplay;
+class Docu_Display;
+
+class DataDisplay : public ary::Display,
+ public csv::ConstProcessor<ary::cpp::Variable>
+{
+ public:
+ DataDisplay(
+ OuputPage_Environment &
+ io_rInfo );
+ virtual ~DataDisplay();
+
+ void PrepareForConstants();
+ void PrepareForVariables();
+ void PrepareForStdMembers();
+ void PrepareForStaticMembers();
+
+ void Create_Files();
+
+ private:
+ // Interface csv::ConstProcessor<>:
+ virtual void do_Process(
+ const ary::cpp::Variable &
+ i_rData );
+ // Interface ary::cpp::Display:
+ virtual const ary::cpp::Gate *
+ inq_Get_ReFinder() const;
+
+ // Locals
+ typedef ary::cpp::Lid SourceFileId;
+ typedef std::map< SourceFileId, DYN PageDisplay* > Map_FileId2PagePtr;
+
+ PageDisplay & FindPage_for(
+ const ary::cpp::Variable &
+ i_rData );
+ void Display_SglDatum(
+ csi::xml::Element & rOut,
+ const ary::cpp::Variable &
+ i_rData );
+ // DATA
+ Map_FileId2PagePtr aMap_GlobalDataDisplay;
+ Dyn<PageDisplay> pClassMembersDisplay;
+
+ OuputPage_Environment *
+ pEnv;
+ Dyn<Docu_Display> pDocuShow;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/dsply_op.cxx b/autodoc/source/display/html/dsply_op.cxx
new file mode 100644
index 000000000000..e34db602ff6a
--- /dev/null
+++ b/autodoc/source/display/html/dsply_op.cxx
@@ -0,0 +1,210 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "dsply_op.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/loc/locp_le.hxx>
+#include <udm/html/htmlitem.hxx>
+#include "hd_docu.hxx"
+#include "hdimpl.hxx"
+#include "html_kit.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+
+using namespace csi;
+using namespace adcdisp;
+
+
+
+
+OperationsDisplay::OperationsDisplay( OuputPage_Environment & io_rEnv )
+ : // aMap_GlobalFunctionsDisplay,
+ // pClassMembersDisplay,
+ pEnv( &io_rEnv ),
+ pDocuShow( new Docu_Display(io_rEnv) )
+{
+}
+
+OperationsDisplay::~OperationsDisplay()
+{
+ csv::erase_map_of_heap_ptrs( aMap_GlobalFunctionsDisplay );
+}
+
+void
+OperationsDisplay::PrepareForStdMembers()
+{
+ csv::erase_map_of_heap_ptrs( aMap_GlobalFunctionsDisplay );
+
+ pClassMembersDisplay = new PageDisplay(*pEnv);
+ const ary::cpp::Class * pClass = pEnv->CurClass();
+ csv_assert( pClass != 0 );
+ pClassMembersDisplay->Setup_OperationsFile_for(*pClass);
+}
+
+void
+OperationsDisplay::PrepareForStaticMembers()
+{
+ // Doesn't need to do anything yet.
+}
+
+void
+OperationsDisplay::Create_Files()
+{
+ if (pClassMembersDisplay)
+ pClassMembersDisplay->Create_File();
+ else
+ {
+ for ( Map_FileId2PagePtr::const_iterator it = aMap_GlobalFunctionsDisplay.begin();
+ it != aMap_GlobalFunctionsDisplay.end();
+ ++it )
+ {
+ (*it).second->Create_File();
+ }
+ }
+}
+
+void
+OperationsDisplay::do_Process( const ary::cpp::Function & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ PageDisplay & rPage = FindPage_for( i_rData );
+
+ csi::xml::Element & rOut = rPage.CurOut();
+ Display_SglOperation( rOut, i_rData );
+}
+
+const ary::cpp::Gate *
+OperationsDisplay::inq_Get_ReFinder() const
+{
+ return & pEnv->Gate();
+}
+
+PageDisplay &
+OperationsDisplay::FindPage_for( const ary::cpp::Function & i_rData )
+{
+ if ( pClassMembersDisplay )
+ return *pClassMembersDisplay;
+
+ SourceFileId
+ nSourceFile = i_rData.Location();
+ PageDisplay *
+ pFound = csv::value_from_map( aMap_GlobalFunctionsDisplay, nSourceFile, (PageDisplay*)0 );
+ if ( pFound == 0 )
+ {
+ pFound = new PageDisplay( *pEnv );
+ const ary::loc::File &
+ rFile = pEnv->Gate().Locations().Find_File( nSourceFile );
+ pFound->Setup_OperationsFile_for(rFile);
+ aMap_GlobalFunctionsDisplay[nSourceFile] = pFound;
+ }
+
+ return *pFound;
+}
+
+void
+OperationsDisplay::Display_SglOperation( csi::xml::Element & rOut,
+ const ary::cpp::Function & i_rData )
+{
+ adcdisp::ExplanationList aDocu(rOut, true);
+ aDocu.AddEntry( 0 );
+
+
+ adcdisp::OperationTitle fTitle;
+ fTitle( aDocu.Term(),
+ i_rData.LocalName(),
+ i_rData.CeId(),
+ pEnv->Gate() );
+
+ // Syntax
+ adcdisp::ExplanationList aSyntaxHeader(aDocu.Def());
+ aSyntaxHeader.AddEntry( 0, "simple" );
+ csi::xml::Element & rHeader = aSyntaxHeader.Term();
+
+ adcdisp::ParameterTable
+ aParams( aSyntaxHeader.Def() );
+
+ if (i_rData.TemplateParameters().size() > 0)
+ {
+ TemplateClause fTemplateClause;
+ fTemplateClause( rHeader, i_rData.TemplateParameters() );
+ rHeader << new html::LineBreak;
+ }
+ if ( i_rData.Flags().IsExternC() )
+ {
+ rHeader
+ << "extern \"C\""
+ << new html::LineBreak;
+ }
+
+ bool bConst = false;
+ bool bVolatile = false;
+ WriteOut_LinkedFunctionText( rHeader, aParams, i_rData, *pEnv,
+ &bConst, &bVolatile );
+ aDocu.Def() << new html::LineBreak;
+
+ // Flags
+ aDocu.AddEntry_NoTerm();
+ adcdisp::FlagTable
+ aFlags( aDocu.Def(), 8 );
+
+ const ary::cpp::FunctionFlags &
+ rFFlags = i_rData.Flags();
+ aFlags.SetColumn( 0, "virtual",
+ i_rData.Virtuality() != ary::cpp::VIRTUAL_none );
+ aFlags.SetColumn( 1, "abstract",
+ i_rData.Virtuality() == ary::cpp::VIRTUAL_abstract );
+ aFlags.SetColumn( 2, "const", bConst );
+ aFlags.SetColumn( 3, "volatile", bVolatile );
+ aFlags.SetColumn( 4, "template",
+ i_rData.TemplateParameters().size() > 0 );
+ aFlags.SetColumn( 5, "static",
+ rFFlags.IsStaticLocal() OR rFFlags.IsStaticMember() );
+ aFlags.SetColumn( 6, "inline",
+ rFFlags.IsInline() );
+ aFlags.SetColumn( 7, "C-linkage",
+ rFFlags.IsExternC() );
+ aDocu.Def() << new html::LineBreak;
+
+ // Docu
+ aDocu.AddEntry_NoTerm();
+ pDocuShow->Assign_Out(aDocu.Def());
+ pDocuShow->Process(i_rData.Docu());
+ pDocuShow->Unassign_Out();
+
+ rOut << new html::HorizontalLine;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/dsply_op.hxx b/autodoc/source/display/html/dsply_op.hxx
new file mode 100644
index 000000000000..27f2657a0f57
--- /dev/null
+++ b/autodoc/source/display/html/dsply_op.hxx
@@ -0,0 +1,107 @@
+/* -*- 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 ADC_DISPLAY_HTML_DSPLY_OP_HXX
+#define ADC_DISPLAY_HTML_DSPLY_OP_HXX
+
+// BASE CLASSES
+#include <ary/ary_disp.hxx>
+#include <cosv/tpl/processor.hxx>
+// USED SERVICES
+#include <ary/cpp/c_ce.hxx>
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Function;
+ }
+}
+namespace csi
+{
+ namespace xml
+ {
+ class Element;
+ }
+}
+
+class OuputPage_Environment;
+class PageDisplay;
+class Docu_Display;
+
+
+
+
+class OperationsDisplay : public ary::Display,
+ public csv::ConstProcessor<ary::cpp::Function>
+{
+ public:
+ OperationsDisplay(
+ OuputPage_Environment &
+ io_rInfo );
+ virtual ~OperationsDisplay();
+
+ void PrepareForStdMembers();
+ void PrepareForStaticMembers();
+ void Create_Files();
+
+ private:
+ // Interface csv::ConstProcessor<>:
+ virtual void do_Process(
+ const ary::cpp::Function &
+ i_rData );
+ // Interface ary::Display:
+ virtual const ary::cpp::Gate *
+ inq_Get_ReFinder() const;
+
+ // Locals
+ typedef ary::cpp::Lid SourceFileId;
+ typedef std::map< SourceFileId, DYN PageDisplay* > Map_FileId2PagePtr;
+
+ PageDisplay & FindPage_for(
+ const ary::cpp::Function &
+ i_rData );
+ void Display_SglOperation(
+ csi::xml::Element & rOut,
+ const ary::cpp::Function &
+ i_rData );
+ // DATA
+ Map_FileId2PagePtr aMap_GlobalFunctionsDisplay;
+ Dyn<PageDisplay> pClassMembersDisplay;
+
+ OuputPage_Environment *
+ pEnv;
+ Dyn<Docu_Display> pDocuShow;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/easywri.cxx b/autodoc/source/display/html/easywri.cxx
new file mode 100644
index 000000000000..b68b36d011d4
--- /dev/null
+++ b/autodoc/source/display/html/easywri.cxx
@@ -0,0 +1,67 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "easywri.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+using namespace csi::html;
+
+
+EasyWriter::EasyWriter()
+{
+}
+
+EasyWriter::~EasyWriter()
+{
+}
+
+void
+EasyWriter::Open_OutputNode( csi::xml::Element & io_rDestination )
+{
+ aCurDestination.push(&io_rDestination);
+}
+
+void
+EasyWriter::Finish_OutputNode()
+{
+ csv_assert( NOT aCurDestination.empty() );
+ aCurDestination.pop();
+}
+
+csi::xml::Element &
+EasyWriter::Out()
+{
+ csv_assert( aCurDestination.size() > 0);
+ return *aCurDestination.top();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/easywri.hxx b/autodoc/source/display/html/easywri.hxx
new file mode 100644
index 000000000000..9a70a3c5b91c
--- /dev/null
+++ b/autodoc/source/display/html/easywri.hxx
@@ -0,0 +1,82 @@
+/* -*- 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 ADC_DISPLAY_HTML_EASYWRI_HXX
+#define ADC_DISPLAY_HTML_EASYWRI_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <estack.hxx>
+ // PARAMETERS
+#include <udm/html/htmlitem.hxx>
+
+
+class EasyWriter
+{
+ public:
+ // LIFECYCLE
+ EasyWriter();
+ ~EasyWriter();
+
+ // OPERATIONS
+ /// Pushes csi::xml::Element on stack.
+ void Open_OutputNode(
+ csi::xml::Element & io_rDestination );
+ /// Pops front csi::xml::Element from stack.
+ void Finish_OutputNode();
+
+ void Enter(
+ csi::xml::Element & io_rDestination )
+ { Open_OutputNode(io_rDestination); }
+ void Leave() { Finish_OutputNode(); }
+
+ // ACCESS
+ csi::xml::Element & Out(); // CurOutputNode
+
+ private:
+ EStack< csi::xml::Element * >
+ aCurDestination; // The front element is the currently used.
+ // The later ones are the parents.
+};
+
+/*
+inline csi::xml::Element &
+EasyWriter::Out()
+ { csv_assert( aCurDestination.size() > 0 );
+ return *aCurDestination.top(); }
+*/
+
+// IMPLEMENTATION
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/hd_chlst.cxx b/autodoc/source/display/html/hd_chlst.cxx
new file mode 100644
index 000000000000..8e3c3c95ced1
--- /dev/null
+++ b/autodoc/source/display/html/hd_chlst.cxx
@@ -0,0 +1,592 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hd_chlst.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ceslot.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/loc/locp_le.hxx>
+#include <ary/doc/d_oldcppdocu.hxx>
+#include <ary/info/ci_attag.hxx>
+#include <ary/info/ci_text.hxx>
+#include <ary/info/all_dts.hxx>
+#include "hd_docu.hxx"
+#include "opageenv.hxx"
+#include "protarea.hxx"
+#include "strconst.hxx"
+
+
+using namespace csi;
+using html::Table;
+using html::TableRow;
+using html::TableCell;
+using html::Font;
+using html::SizeAttr;
+using html::BgColorAttr;
+using html::WidthAttr;
+
+
+const int ixPublic = 0;
+const int ixProtected = 1;
+const int ixPrivate = 2;
+
+struct ChildList_Display::S_AreaCo
+{
+ public:
+ ProtectionArea aArea;
+ Area_Result * pResult;
+
+ S_AreaCo(
+ Area_Result & o_rResult,
+ const char * i_sLabel,
+ const char * i_sTitle );
+ ~S_AreaCo();
+
+ void PerformResult();
+
+ private:
+ csi::xml::Element & Out() { return pResult->rOut; }
+};
+
+
+const ary::info::DocuText &
+ShortDocu( const ary::cpp::CodeEntity & i_rCe )
+{
+ static const ary::info::DocuText
+ aNull_;
+
+ const ary::doc::OldCppDocu *
+ pInfo = dynamic_cast< const ary::doc::OldCppDocu* >( i_rCe.Docu().Data() );
+ if (pInfo == 0)
+ return aNull_;
+
+ return pInfo->Short().CText();
+}
+
+
+ChildList_Display::ChildList_Display( OuputPage_Environment & io_rEnv )
+ : HtmlDisplay_Impl( io_rEnv ),
+ pShortDocu_Display( new Docu_Display(io_rEnv) ),
+ pActiveParentClass(0),
+ pActiveParentEnum(0),
+ // pSglArea,
+ // aMemberAreas,
+ peClassesFilter(0)
+{
+}
+
+ChildList_Display::ChildList_Display( OuputPage_Environment & io_rEnv,
+ const ary::cpp::Class & i_rClass )
+ : HtmlDisplay_Impl( io_rEnv ),
+ pShortDocu_Display( new Docu_Display(io_rEnv) ),
+ pActiveParentClass(&i_rClass),
+ pActiveParentEnum(0),
+ // pSglArea,
+ // aMemberAreas,
+ peClassesFilter(0)
+{
+}
+
+ChildList_Display::ChildList_Display( OuputPage_Environment & io_rEnv,
+ const ary::cpp::Enum & i_rEnum )
+ : HtmlDisplay_Impl( io_rEnv ),
+ pShortDocu_Display( new Docu_Display(io_rEnv) ),
+ pActiveParentClass(0),
+ pActiveParentEnum(&i_rEnum),
+ // pSglArea,
+ // aMemberAreas,
+ peClassesFilter(0)
+{
+}
+
+ChildList_Display::~ChildList_Display()
+{
+}
+
+void
+ChildList_Display::Run_Simple( Area_Result & o_rResult,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel,
+ const char * i_sListTitle )
+{
+ ary::Slot_AutoPtr
+ pSlot( ActiveParent().Create_Slot( i_nSlot ) );
+ if ( pSlot->Size() == 0 )
+ return;
+
+ pSglArea = new S_AreaCo( o_rResult,
+ i_sListLabel,
+ i_sListTitle );
+
+ pSlot->StoreAt(*this);
+
+ pSglArea->PerformResult();
+ pSglArea = 0;
+}
+
+void
+ChildList_Display::Run_GlobalClasses( Area_Result & o_rResult,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel,
+ const char * i_sListTitle,
+ ary::cpp::E_ClassKey i_eFilter )
+{
+ ary::Slot_AutoPtr
+ pSlot( ActiveParent().Create_Slot( i_nSlot ) );
+ if ( pSlot->Size() == 0 )
+ return;
+
+ pSglArea = new S_AreaCo( o_rResult,
+ i_sListLabel,
+ i_sListTitle );
+
+ SetClassesFilter(i_eFilter);
+ pSlot->StoreAt(*this);
+ UnsetClassesFilter();
+
+ pSglArea->PerformResult();
+ pSglArea = 0;
+}
+
+void
+ChildList_Display::Run_Members( Area_Result & o_rResult_public,
+ Area_Result & o_rResult_protected,
+ Area_Result & o_rResult_private,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel_public,
+ const char * i_sListLabel_protected,
+ const char * i_sListLabel_private,
+ const char * i_sListTitle )
+{
+ ary::Slot_AutoPtr
+ pSlot( ActiveParent().Create_Slot(i_nSlot) );
+ if ( pSlot->Size() == 0 )
+ return;
+
+ aMemberAreas[ixPublic] = new S_AreaCo( o_rResult_public,
+ i_sListLabel_public,
+ i_sListTitle );
+ aMemberAreas[ixProtected] = new S_AreaCo( o_rResult_protected,
+ i_sListLabel_protected,
+ i_sListTitle );
+ aMemberAreas[ixPrivate] = new S_AreaCo( o_rResult_private,
+ i_sListLabel_private,
+ i_sListTitle );
+
+ pSlot->StoreAt(*this);
+
+ aMemberAreas[ixPublic]->PerformResult();
+ aMemberAreas[ixProtected]->PerformResult();
+ aMemberAreas[ixPrivate]->PerformResult();
+
+ aMemberAreas[ixPublic] = 0;
+ aMemberAreas[ixProtected] = 0;
+ aMemberAreas[ixPrivate] = 0;
+}
+
+void
+ChildList_Display::Run_MemberClasses( Area_Result & o_rResult_public,
+ Area_Result & o_rResult_protected,
+ Area_Result & o_rResult_private,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel_public,
+ const char * i_sListLabel_protected,
+ const char * i_sListLabel_private,
+ const char * i_sListTitle,
+ ary::cpp::E_ClassKey i_eFilter )
+{
+ ary::Slot_AutoPtr
+ pSlot( ActiveParent().Create_Slot(i_nSlot) );
+ if ( pSlot->Size() == 0 )
+ return;
+
+ aMemberAreas[ixPublic] = new S_AreaCo( o_rResult_public,
+ i_sListLabel_public,
+ i_sListTitle );
+ aMemberAreas[ixProtected] = new S_AreaCo( o_rResult_protected,
+ i_sListLabel_protected,
+ i_sListTitle );
+ aMemberAreas[ixPrivate] = new S_AreaCo( o_rResult_private,
+ i_sListLabel_private,
+ i_sListTitle );
+
+ SetClassesFilter(i_eFilter);
+ pSlot->StoreAt(*this);
+ UnsetClassesFilter();
+
+ aMemberAreas[ixPublic]->PerformResult();
+ aMemberAreas[ixProtected]->PerformResult();
+ aMemberAreas[ixPrivate]->PerformResult();
+
+ aMemberAreas[ixPublic] = 0;
+ aMemberAreas[ixProtected] = 0;
+ aMemberAreas[ixPrivate] = 0;
+}
+
+void
+ChildList_Display::do_Process( const ary::cpp::Namespace & i_rData )
+{
+ Write_ListItem( i_rData.LocalName(),
+ Path2ChildNamespace(i_rData.LocalName()),
+ ShortDocu( i_rData ),
+ GetArea().GetTable() );
+}
+
+void
+ChildList_Display::do_Process( const ary::cpp::Class & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ if (peClassesFilter)
+ {
+ if (*peClassesFilter != i_rData.ClassKey() )
+ return;
+ }
+
+ String sLink;
+ if ( i_rData.Protection() == ary::cpp::PROTECT_global )
+ {
+ sLink = ClassFileName(i_rData.LocalName());
+
+ }
+ else
+ {
+ csv_assert( pActiveParentClass != 0 );
+ sLink = Path2Child( ClassFileName(i_rData.LocalName()), pActiveParentClass->LocalName() );
+ }
+
+ if (peClassesFilter)
+ {
+ Write_ListItem( i_rData.LocalName(),
+ sLink,
+ ShortDocu( i_rData ),
+ GetArea(i_rData.Protection())
+ .GetTable() );
+ }
+ else
+ {
+ Write_ListItem( i_rData.LocalName(),
+ sLink,
+ ShortDocu( i_rData ),
+ GetArea(i_rData.Protection())
+ .GetTable(i_rData.ClassKey()) );
+ }
+}
+
+void
+ChildList_Display::do_Process( const ary::cpp::Enum & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ String sLink;
+ if ( i_rData.Protection() == ary::cpp::PROTECT_global )
+ {
+ sLink = EnumFileName(i_rData.LocalName());
+ }
+ else
+ {
+ csv_assert( pActiveParentClass != 0 );
+ sLink = Path2Child( EnumFileName(i_rData.LocalName()),
+ pActiveParentClass->LocalName() );
+ }
+
+ Write_ListItem( i_rData.LocalName(),
+ sLink,
+ ShortDocu( i_rData ),
+ GetArea(i_rData.Protection()).GetTable() );
+}
+
+void
+ChildList_Display::do_Process( const ary::cpp::Typedef & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ String sLink;
+ if ( i_rData.Protection() == ary::cpp::PROTECT_global )
+ {
+ sLink = TypedefFileName(i_rData.LocalName());
+ }
+ else
+ {
+ csv_assert( pActiveParentClass != 0 );
+ sLink = Path2Child( TypedefFileName(i_rData.LocalName()),
+ pActiveParentClass->LocalName() );
+ }
+
+ Write_ListItem( i_rData.LocalName(),
+ sLink,
+ ShortDocu( i_rData ),
+ GetArea(i_rData.Protection()).GetTable() );
+}
+
+void
+ChildList_Display::do_Process( const ary::cpp::Function & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ String sLinkPrePath;
+ if ( i_rData.Protection() == ary::cpp::PROTECT_global )
+ {
+ const ary::loc::File &
+ rFile = Env().Gate().Locations().Find_File( i_rData.Location() );
+ sLinkPrePath = HtmlFileName( "o-", rFile.LocalName() );
+ }
+ else
+ {
+ csv_assert( pActiveParentClass != 0 );
+ sLinkPrePath = Path2Child( HtmlFileName( "o", "" ),
+ pActiveParentClass->LocalName() );
+ }
+
+ // Out
+ Table & rOut = GetArea(i_rData.Protection()).GetTable();
+ TableRow * dpRow = new TableRow;
+ rOut << dpRow;
+ TableCell & rCell1 = dpRow->AddCell();
+
+ rCell1
+ << SyntaxText_PreName( i_rData, Env().Gate() )
+ << new html::LineBreak;
+ rCell1
+ >> *new html::Link( OperationLink(
+ Env().Gate(),
+ i_rData.LocalName(),
+ i_rData.CeId(),
+ sLinkPrePath) )
+ << i_rData.LocalName();
+ rCell1
+ << SyntaxText_PostName( i_rData, Env().Gate() );
+ TableCell &
+ rCell2 = dpRow->AddCell();
+ rCell2
+ << new WidthAttr("50%")
+ << " ";
+
+ pShortDocu_Display->Assign_Out( rCell2 );
+ ShortDocu( i_rData ).StoreAt( *pShortDocu_Display );
+ pShortDocu_Display->Unassign_Out();
+}
+
+void
+ChildList_Display::do_Process( const ary::cpp::Variable & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ String sLinkPrePath;
+ if ( i_rData.Protection() == ary::cpp::PROTECT_global )
+ {
+ const ary::loc::File &
+ rFile = Env().Gate().Locations().Find_File( i_rData.Location() );
+ sLinkPrePath = HtmlFileName( "d-", rFile.LocalName() );
+ }
+ else
+ {
+ csv_assert( pActiveParentClass != 0 );
+ sLinkPrePath = Path2Child( HtmlFileName( "d", "" ),
+ pActiveParentClass->LocalName() );
+ }
+
+ TableRow * dpRow = new TableRow;
+ GetArea(i_rData.Protection()).GetTable() << dpRow;
+
+ *dpRow << new html::BgColorAttr("white");
+ csi::xml::Element &
+ rCell1 = dpRow->AddCell();
+
+ dshelp::Get_LinkedTypeText( rCell1, Env(), i_rData.Type() );
+ rCell1
+ << " "
+ >> *new html::Link( DataLink(i_rData.LocalName(), sLinkPrePath.c_str()) )
+ >> *new html::Strong
+ << i_rData.LocalName()
+ << ";";
+
+ TableCell & rShortDocu = dpRow->AddCell();
+ pShortDocu_Display->Assign_Out( rShortDocu );
+ ShortDocu( i_rData ).StoreAt( *pShortDocu_Display );
+ pShortDocu_Display->Unassign_Out();
+}
+
+void
+ChildList_Display::do_Process( const ary::cpp::EnumValue & i_rData )
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ Table & rOut = GetArea().GetTable();
+
+ TableRow * dpRow = new TableRow;
+ rOut << dpRow;
+
+ *dpRow << new html::BgColorAttr("white");
+ dpRow->AddCell()
+ << new WidthAttr("20%")
+ << new xml::AnAttribute("valign", "top")
+ >> *new html::Label(i_rData.LocalName())
+ >> *new html::Bold
+ << i_rData.LocalName();
+
+ TableCell & rValueDocu = dpRow->AddCell();
+ pShortDocu_Display->Assign_Out( rValueDocu );
+ i_rData.Docu().Accept( *pShortDocu_Display );
+ pShortDocu_Display->Unassign_Out();
+}
+
+void
+ChildList_Display::do_StartSlot()
+{
+}
+
+void
+ChildList_Display::do_FinishSlot()
+{
+}
+
+const ary::cpp::Gate *
+ChildList_Display::inq_Get_ReFinder() const
+{
+ return & Env().Gate();
+}
+
+void
+ChildList_Display::Write_ListItem( const String & i_sLeftText,
+ const char * i_sLink,
+ const ary::info::DocuText & i_rRightText,
+ csi::xml::Element & o_rOut )
+{
+ TableRow * dpRow = new TableRow;
+ o_rOut << dpRow;
+
+ *dpRow << new html::BgColorAttr("white");
+ dpRow->AddCell()
+ << new WidthAttr("20%")
+ >> *new html::Link( i_sLink )
+ >> *new html::Bold
+ << i_sLeftText;
+
+ TableCell & rShortDocu = dpRow->AddCell();
+ pShortDocu_Display->Assign_Out( rShortDocu );
+ i_rRightText.StoreAt( *pShortDocu_Display );
+ pShortDocu_Display->Unassign_Out();
+}
+
+const ary::AryGroup &
+ChildList_Display::ActiveParent()
+{
+ return pActiveParentClass != 0
+ ? static_cast< const ary::AryGroup& >(*pActiveParentClass)
+ : pActiveParentEnum != 0
+ ? static_cast< const ary::AryGroup& >(*pActiveParentEnum)
+ : static_cast< const ary::AryGroup& >(*Env().CurNamespace());
+}
+
+ProtectionArea &
+ChildList_Display::GetArea()
+{
+ return pSglArea->aArea;
+}
+
+ProtectionArea &
+ChildList_Display::GetArea( ary::cpp::E_Protection i_eProtection )
+{
+ switch ( i_eProtection )
+ {
+ case ary::cpp::PROTECT_public:
+ return aMemberAreas[ixPublic]->aArea;
+ case ary::cpp::PROTECT_protected:
+ return aMemberAreas[ixProtected]->aArea;
+ case ary::cpp::PROTECT_private:
+ return aMemberAreas[ixPrivate]->aArea;
+ default:
+ return pSglArea->aArea;
+ }
+}
+
+
+//******************* ********************//
+
+ChildList_Display::
+S_AreaCo::S_AreaCo( Area_Result & o_rResult,
+ const char * i_sLabel,
+ const char * i_sTitle )
+ : aArea(i_sLabel, i_sTitle),
+ pResult(&o_rResult)
+{
+}
+
+ChildList_Display::
+S_AreaCo::~S_AreaCo()
+{
+}
+
+void
+ChildList_Display::
+S_AreaCo::PerformResult()
+{
+ bool bUsed = aArea.WasUsed_Area();
+ pResult->rChildrenExist = bUsed;
+ if ( bUsed )
+ {
+ Create_ChildListLabel( Out(), aArea.Label() );
+
+ if ( aArea.Size() == 1 )
+ {
+ Out() << aArea.ReleaseTable();
+ }
+ else
+ {
+ Table * pTable = aArea.ReleaseTable( ary::cpp::CK_class );
+ if (pTable != 0)
+ Out() << pTable;
+ pTable = aArea.ReleaseTable( ary::cpp::CK_struct );
+ if (pTable != 0)
+ Out() << pTable;
+ pTable = aArea.ReleaseTable( ary::cpp::CK_union );
+ if (pTable != 0)
+ Out() << pTable;
+ }
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/hd_chlst.hxx b/autodoc/source/display/html/hd_chlst.hxx
new file mode 100644
index 000000000000..cbd784d4ed2c
--- /dev/null
+++ b/autodoc/source/display/html/hd_chlst.hxx
@@ -0,0 +1,209 @@
+/* -*- 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 ADC_DISPLAY_HTML_HD_CHLST_HXX
+#define ADC_DISPLAY_HTML_HD_CHLST_HXX
+
+// BASE CLASSES
+#include <ary/ary_disp.hxx>
+#include <cosv/tpl/processor.hxx>
+
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+#include "hdimpl.hxx"
+
+
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Namespace;
+ class Class;
+ class Enum;
+ class Typedef;
+ class Function;
+ class Variable;
+ class EnumValue;
+ }
+ namespace info
+ {
+ class DocuText;
+ }
+}
+
+class Docu_Display;
+class ProtectionArea;
+
+class ChildList_Display : public ary::Display,
+ public csv::ConstProcessor<ary::cpp::Namespace>,
+ public csv::ConstProcessor<ary::cpp::Class>,
+ public csv::ConstProcessor<ary::cpp::Enum>,
+ public csv::ConstProcessor<ary::cpp::Typedef>,
+ public csv::ConstProcessor<ary::cpp::Function>,
+ public csv::ConstProcessor<ary::cpp::Variable>,
+ public csv::ConstProcessor<ary::cpp::EnumValue>,
+ private HtmlDisplay_Impl
+{
+ public:
+ struct Area_Result
+ {
+ bool & rChildrenExist;
+ csi::xml::Element & rOut;
+
+ Area_Result(
+ bool & o_rChildrenExist,
+ csi::xml::Element & o_rOut )
+ : rChildrenExist(o_rChildrenExist),
+ rOut(o_rOut) {}
+ };
+
+
+ ChildList_Display(
+ OuputPage_Environment &
+ io_rEnv );
+ ChildList_Display(
+ OuputPage_Environment &
+ io_rEnv,
+ const ary::cpp::Class &
+ i_rClass );
+ ChildList_Display(
+ OuputPage_Environment &
+ io_rEnv,
+ const ary::cpp::Enum &
+ i_rEnum );
+
+ virtual ~ChildList_Display();
+
+ void Run_Simple(
+ Area_Result & o_rResult,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel,
+ const char * i_sListTitle );
+ void Run_GlobalClasses(
+ Area_Result & o_rResult,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel,
+ const char * i_sListTitle,
+ ary::cpp::E_ClassKey
+ i_eFilter );
+ void Run_Members(
+ Area_Result & o_rResult_public,
+ Area_Result & o_rResult_protected,
+ Area_Result & o_rResult_private,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel_public,
+ const char * i_sListLabel_protected,
+ const char * i_sListLabel_private,
+ const char * i_sListTitle );
+ void Run_MemberClasses(
+ Area_Result & o_rResult_public,
+ Area_Result & o_rResult_protected,
+ Area_Result & o_rResult_private,
+ ary::SlotAccessId i_nSlot,
+ const char * i_sListLabel_public,
+ const char * i_sListLabel_protected,
+ const char * i_sListLabel_private,
+ const char * i_sListTitle,
+ ary::cpp::E_ClassKey
+ i_eFilter );
+ private:
+ // Interface csv::ConstProcessor<>:
+ virtual void do_Process(
+ const ary::cpp::Namespace &
+ i_rData );
+ /** i_rData is shown only, if it passes two filters:
+ it must have the right protection, checked with pFilter,
+ and the right class key (class,struct,union), checked with
+ pClassFilter. A not exsting filter allows i_rData to be
+ displayed.
+ */
+ virtual void do_Process(
+ const ary::cpp::Class &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Enum &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Typedef &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Function &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Variable &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::EnumValue &
+ i_rData );
+ private:
+ // Interface ary::Display:
+ virtual void do_StartSlot();
+ virtual void do_FinishSlot();
+ virtual const ary::cpp::Gate *
+ inq_Get_ReFinder() const;
+ // Locals
+ struct S_AreaCo;
+ void Write_ListItem(
+ const String & i_sLeftText,
+ const char * i_sLink,
+ const ary::info::DocuText &
+ i_rRightText,
+ csi::xml::Element & rOut );
+ const ary::AryGroup &
+ ActiveParent();
+ ProtectionArea & GetArea();
+ ProtectionArea & GetArea(
+ ary::cpp::E_Protection
+ i_eProtection );
+ void SetClassesFilter(
+ ary::cpp::E_ClassKey
+ i_eFilter )
+ { peClassesFilter = new ary::cpp::E_ClassKey(i_eFilter); }
+ void UnsetClassesFilter() { peClassesFilter = 0; }
+
+ // DATA
+ Dyn<Docu_Display> pShortDocu_Display;
+ const ary::cpp::Class *
+ pActiveParentClass;
+ const ary::cpp::Enum *
+ pActiveParentEnum;
+
+ Dyn<S_AreaCo> pSglArea;
+ Dyn<S_AreaCo> aMemberAreas[3];
+
+ Dyn<ary::cpp::E_ClassKey>
+ peClassesFilter;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/hd_docu.cxx b/autodoc/source/display/html/hd_docu.cxx
new file mode 100644
index 000000000000..0e0cb97dd047
--- /dev/null
+++ b/autodoc/source/display/html/hd_docu.cxx
@@ -0,0 +1,488 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hd_docu.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/doc/d_oldcppdocu.hxx>
+#include <ary/info/all_tags.hxx>
+#include <ary/info/all_dts.hxx>
+#include <adc_cl.hxx>
+#include "html_kit.hxx"
+#include "opageenv.hxx"
+
+
+
+using namespace ary::info;
+using namespace csi;
+
+using html::DefList;
+using html::DefListTerm;
+using html::DefListDefinition;
+using html::Headline;
+using html::Link;
+
+
+const char *
+C_sTagHeadlines[ ary::info::C_eAtTag_NrOfClasses ] =
+ {
+ "ATTENTION!", "Author", "Changes", "Collaborators",
+ "Contact", // Contact may be unused
+ "Copyright", "Deprecated", "Description", "Date of Documentation",
+ "How to Derive from this Class",
+ "Heap object - owner is responsible for deletion.",
+ "Important Instances",
+ "Interface Only",
+ "Invariant", "Lifecycle",
+ "Multiplicity", "On Error", "Persistency", "Postcondition",
+ "Precondition",
+ "Responsibilities",
+ "Return", "Summary", "Todos", "Version",
+ "Base Classes", "Exceptions", "Implements", "Keywords", "Parameters",
+ "See Also", "Template Parameters",
+ "", "Since "
+ };
+
+
+
+Docu_Display::Docu_Display( OuputPage_Environment & io_rEnv )
+ : HtmlDisplay_Impl(io_rEnv),
+ bUseHtmlInDocuTokens(false),
+ pCurClassOverwrite(0)
+{
+}
+
+Docu_Display::~Docu_Display()
+{
+}
+
+void
+Docu_Display::Assign_Out( csi::xml::Element & o_rOut )
+{
+ Easy().Enter(o_rOut);
+}
+
+void
+Docu_Display::Unassign_Out()
+{
+ Easy().Leave();
+}
+
+void
+Docu_Display::do_Process( const ary::cpp::Namespace & i_rData )
+{
+ Process(i_rData.Docu());
+}
+
+void
+Docu_Display::do_Process( const ary::cpp::Class & i_rData )
+{
+ pCurClassOverwrite = &i_rData;
+ Process(i_rData.Docu());
+ pCurClassOverwrite = 0;
+}
+
+void
+Docu_Display::do_Process( const ary::cpp::Enum & i_rData )
+{
+ Process(i_rData.Docu());
+}
+
+void
+Docu_Display::do_Process( const ary::cpp::Typedef & i_rData )
+{
+ Process(i_rData.Docu());
+}
+
+void
+Docu_Display::do_Process( const ary::cpp::Function & i_rData )
+{
+ Process(i_rData.Docu());
+}
+
+void
+Docu_Display::do_Process( const ary::cpp::Variable & i_rData )
+{
+ Process(i_rData.Docu());
+}
+
+
+
+// -------------- Interface ary::info::DocuDisplay ------------------ //
+
+
+void
+Docu_Display::do_Process(const ary::doc::Documentation & i_rData)
+{
+ if (i_rData.Data() == 0)
+ return;
+
+ const ary::doc::OldCppDocu *
+ docdata = dynamic_cast< const ary::doc::OldCppDocu* >(i_rData.Data());
+ csv_assert(docdata != 0);
+
+ Start_DocuBlock();
+
+ if ( docdata->IsObsolete() )
+ {
+ CurOut()
+ >> *new html::DefListTerm
+ >> *new html::Strong
+ << "D E P R E C A T E D";
+
+ }
+
+ ary::doc::OldCppDocu::TagList::const_iterator
+ itEnd = docdata->Tags().end();
+ for ( ary::doc::OldCppDocu::TagList::const_iterator it = docdata->Tags().begin();
+ it != itEnd;
+ ++it )
+ {
+ (*it)->StoreAt( *this );
+ }
+
+ Finish_DocuBlock();
+}
+
+void
+Docu_Display::Display_StdTag( const StdTag & i_rData )
+{
+ csv_assert( uintt(i_rData.Std_Id()) < uintt(ary::info::C_eAtTag_NrOfClasses) );
+
+ const ary::info::DocuText::TokenList &
+ rText = i_rData.CText().Tokens();
+ typedef ary::info::DocuText::TokenList::const_iterator TokenIterator;
+
+ if ( rText.empty() )
+ return;
+ else if ( rText.size() < 3 )
+ {
+ bool bIsWhite = true;
+ for ( TokenIterator it = rText.begin();
+ it != rText.end();
+ ++it )
+ {
+ if (bIsWhite)
+ bIsWhite = (*it)->IsWhite();
+ }
+ if (bIsWhite)
+ return;
+ }
+
+ Write_TagTitle( C_sTagHeadlines[i_rData.Std_Id()] );
+ Write_TagContents( i_rData.CText() );
+}
+
+void
+Docu_Display::Display_BaseTag( const BaseTag & )
+{
+}
+
+void
+Docu_Display::Display_ExceptionTag( const ExceptionTag & )
+{
+}
+
+void
+Docu_Display::Display_ImplementsTag( const ImplementsTag & )
+{
+}
+
+void
+Docu_Display::Display_KeywordTag( const KeywordTag & )
+{
+}
+
+void
+Docu_Display::Display_ParameterTag( const ParameterTag & i_rData )
+{
+ Write_TagTitle( "Parameters" );
+
+ adcdisp::ExplanationTable
+ aParams( CurOut() >> *new DefListDefinition );
+
+ for ( const ParameterTag * pParam = &i_rData;
+ pParam != 0;
+ pParam = pParam->GetNext() ) // KORR_FUTURE
+ {
+ aParams.AddEntry( pParam->ParamName().c_str() );
+
+ Easy().Enter( aParams.Def() );
+ Write_Text( pParam->CText() );
+ Easy().Leave();
+ } // end for
+}
+
+void
+Docu_Display::Display_SeeTag( const SeeTag & i_rData )
+{
+ Write_TagTitle( "See Also" );
+
+ DefListDefinition * dpDef = new DefListDefinition;
+ CurOut() << dpDef;
+ Easy().Enter(*dpDef);
+
+ for ( std::vector< ary::QualifiedName >::const_iterator
+ it = i_rData.References().begin();
+ it != i_rData.References().end();
+ ++it )
+ {
+ Write_LinkableText( (*it) );
+ CurOut() << new html::LineBreak;
+ }
+
+ Easy().Leave();
+}
+
+void
+Docu_Display::Display_TemplateTag( const TemplateTag & i_rData )
+{
+ Write_TagTitle( "Template Parameters" );
+
+ adcdisp::ExplanationTable
+ aTplParams( CurOut() >> *new DefListDefinition );
+
+ for ( const TemplateTag * pTplParam = &i_rData;
+ pTplParam != 0;
+ pTplParam = pTplParam->GetNext() )
+ {
+ aTplParams.AddEntry( pTplParam->TplParamName().c_str() );
+
+ Easy().Enter( aTplParams.Def() );
+ Write_Text( pTplParam->CText() );
+ Easy().Leave();
+ } // end for
+}
+
+void
+Docu_Display::Display_LabelTag( const LabelTag & )
+{
+}
+
+void
+Docu_Display::Display_SinceTag( const ary::info::SinceTag & i_rData )
+{
+ if ( i_rData.Version().empty() )
+ {
+ return;
+ }
+
+ // Transform the value of the @since tag into the text to be displayed.
+ String sDisplay;
+ if ( autodoc::CommandLine::Get_().DoesTransform_SinceTag() )
+ {
+ sDisplay = autodoc::CommandLine::Get_()
+ .DisplayOf_SinceTagValue( i_rData.Version() );
+ }
+ else
+ {
+ sDisplay = i_rData.Version();
+ }
+
+ if (sDisplay.empty())
+ return;
+
+ Write_TagTitle( "Since " );
+
+ DefListDefinition * dpDef = new DefListDefinition;
+ CurOut() << dpDef;
+
+ Easy().Enter(*dpDef);
+ CurOut() << sDisplay;
+ Easy().Leave();
+}
+
+void
+Docu_Display::Display_DT_Text( const DT_Text & i_rData )
+{
+ Write_TextToken( i_rData.Text() );
+}
+
+void
+Docu_Display::Display_DT_MaybeLink( const DT_MaybeLink & i_rData )
+{
+ // KORR_FUTURE
+ Write_TextToken( i_rData.Text() );
+}
+
+void
+Docu_Display::Display_DT_Whitespace( const DT_Whitespace & i_rData )
+{
+ static char sSpace[300] =
+ " "
+ " "
+ " "
+ " "
+ " "
+ " ";
+ UINT8 nLength = i_rData.Length();
+ sSpace[nLength] = NULCH;
+ CurOut() << sSpace;
+ sSpace[nLength] = ' ';
+}
+
+void
+Docu_Display::Display_DT_Eol( const DT_Eol & )
+{
+ CurOut() << new html::Sbr;
+}
+
+void
+Docu_Display::Display_DT_Xml( const ary::info::DT_Xml & i_rData )
+{
+ CurOut() << new xml::XmlCode( i_rData.Text() );
+}
+
+const ary::cpp::Gate *
+Docu_Display::inq_Get_ReFinder() const
+{
+ return &Env().Gate();
+}
+
+void
+Docu_Display::Start_DocuBlock()
+{
+ DYN DefList * dpDefList = new DefList;
+ CurOut() << dpDefList;
+ Easy().Enter( *dpDefList );
+}
+
+void
+Docu_Display::Finish_DocuBlock()
+{
+ Easy().Leave();
+}
+
+void
+Docu_Display::Write_TagTitle( const char * i_sText,
+ const char * )
+{
+ if ( strcmp(i_sText,"ATTENTION!") == 0 )
+ {
+ CurOut()
+ >> *new html::DefListTerm
+ << new html::ClassAttr("attention")
+ << i_sText;
+ }
+ else
+ {
+ CurOut()
+ >> *new html::DefListTerm
+ << i_sText;
+ }
+}
+
+void
+Docu_Display::Write_TagContents( const DocuText & i_rDocuText )
+{
+ DefListDefinition * dpDef = new DefListDefinition;
+ CurOut() << dpDef;
+
+ Easy().Enter(*dpDef);
+ Write_Text(i_rDocuText);
+ Easy().Leave();
+}
+
+void
+Docu_Display::Write_Text( const ary::info::DocuText & i_rDocuText )
+{
+ if ( i_rDocuText.IsNoHtml() )
+ {
+ CurOut()
+ << new xml::XmlCode("<pre>");
+ bUseHtmlInDocuTokens = false;
+ }
+ else
+ {
+ bUseHtmlInDocuTokens = true;
+ }
+ i_rDocuText.StoreAt( *this );
+ if ( i_rDocuText.IsNoHtml() )
+ {
+ CurOut()
+ << new xml::XmlCode("</pre>");
+ }
+}
+
+void
+Docu_Display::Write_TextToken( const String & i_sText )
+{
+ if ( bUseHtmlInDocuTokens )
+ CurOut() << new xml::XmlCode(i_sText);
+ else
+ CurOut() << i_sText;
+}
+
+void
+Docu_Display::Write_LinkableText( const ary::QualifiedName & i_sQuName )
+{
+ const ary::cpp::CodeEntity *
+ pCe = FindUnambiguousCe( Env(), i_sQuName, pCurClassOverwrite );
+ if ( pCe != 0 )
+ {
+ csi::xml::Element *
+ pLink = new csi::html::Link( Link2Ce(Env(), *pCe) );
+ CurOut() << pLink;
+ Easy().Enter(*pLink);
+ Write_QualifiedName(i_sQuName);
+ Easy().Leave();
+ }
+ else
+ {
+ Write_QualifiedName(i_sQuName);
+ }
+ CurOut() << " ";
+}
+
+void
+Docu_Display::Write_QualifiedName( const ary::QualifiedName & i_sQuName )
+{
+ if ( i_sQuName.IsAbsolute() )
+ CurOut() << "::";
+ for ( ary::QualifiedName::namespace_iterator it = i_sQuName.first_namespace();
+ it != i_sQuName.end_namespace();
+ ++it )
+ {
+ CurOut() << (*it) << "::";
+ }
+ CurOut() << i_sQuName.LocalName();
+ if ( i_sQuName.IsFunction() )
+ CurOut() << "()";
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/hd_docu.hxx b/autodoc/source/display/html/hd_docu.hxx
new file mode 100644
index 000000000000..1eb00ae1c449
--- /dev/null
+++ b/autodoc/source/display/html/hd_docu.hxx
@@ -0,0 +1,199 @@
+/* -*- 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 ADC_DISPLAY_HTML_HD_DOCU_HXX
+#define ADC_DISPLAY_HTML_HD_DOCU_HXX
+
+// BASE CLASSES
+#include <ary/ary_disp.hxx>
+#include <ary/info/infodisp.hxx>
+#include <cosv/tpl/processor.hxx>
+#include "hdimpl.hxx"
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Namespace;
+ class Class;
+ class Enum;
+ class Typedef;
+ class Function;
+ class Variable;
+ }
+
+ namespace doc
+ {
+ class Documentation;
+ }
+ namespace info
+ {
+ class DocuText;
+ }
+
+ class QualifiedName;
+}
+
+class OuputPage_Environment;
+
+
+class Docu_Display : public ary::Display,
+ public csv::ConstProcessor<ary::cpp::Namespace>,
+ public csv::ConstProcessor<ary::cpp::Class>,
+ public csv::ConstProcessor<ary::cpp::Enum>,
+ public csv::ConstProcessor<ary::cpp::Typedef>,
+ public csv::ConstProcessor<ary::cpp::Function>,
+ public csv::ConstProcessor<ary::cpp::Variable>,
+ public csv::ConstProcessor<ary::doc::Documentation>,
+ public ary::info::DocuDisplay,
+ private HtmlDisplay_Impl
+{
+ public:
+ Docu_Display(
+ OuputPage_Environment &
+ io_rEnv );
+ virtual ~Docu_Display();
+
+ void Assign_Out(
+ csi::xml::Element & o_rOut );
+ void Unassign_Out();
+
+ virtual void Display_StdTag(
+ const ary::info::StdTag &
+ i_rData );
+ virtual void Display_BaseTag(
+ const ary::info::BaseTag &
+ i_rData );
+ virtual void Display_ExceptionTag(
+ const ary::info::ExceptionTag &
+ i_rData );
+ virtual void Display_ImplementsTag(
+ const ary::info::ImplementsTag &
+ i_rData );
+ virtual void Display_KeywordTag(
+ const ary::info::KeywordTag &
+ i_rData );
+ virtual void Display_ParameterTag(
+ const ary::info::ParameterTag &
+ i_rData );
+ virtual void Display_SeeTag(
+ const ary::info::SeeTag &
+ i_rData );
+ virtual void Display_TemplateTag(
+ const ary::info::TemplateTag &
+ i_rData );
+ virtual void Display_LabelTag(
+ const ary::info::LabelTag &
+ i_rData );
+ virtual void Display_SinceTag(
+ const ary::info::SinceTag &
+ i_rData );
+
+ virtual void Display_DT_Text(
+ const ary::info::DT_Text &
+ i_rData );
+ virtual void Display_DT_MaybeLink(
+ const ary::info::DT_MaybeLink &
+ i_rData );
+ virtual void Display_DT_Whitespace(
+ const ary::info::DT_Whitespace &
+ i_rData );
+ virtual void Display_DT_Eol(
+ const ary::info::DT_Eol &
+ i_rData );
+ virtual void Display_DT_Xml(
+ const ary::info::DT_Xml &
+ i_rData );
+
+ using csv::ConstProcessor<ary::doc::Documentation>::Process;
+
+ private:
+ // Interface csv::ConstProcessor<>:
+ virtual void do_Process(
+ const ary::cpp::Namespace &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Class &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Enum &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Typedef &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Function &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Variable &
+ i_rData );
+ virtual void do_Process(
+ const ary::doc::Documentation &
+ i_rData );
+ // Interface ary::Display:
+ virtual const ary::cpp::Gate *
+ inq_Get_ReFinder() const;
+ // Locals
+ void Start_DocuBlock();
+ void Finish_DocuBlock();
+
+ void Write_TagTitle(
+ const char * i_sText,
+ const char * i_nFontSize = "+0" );
+ void Write_TagContents(
+ const ary::info::DocuText &
+ i_rDocuText );
+ void Write_Text(
+ const ary::info::DocuText &
+ i_rDocuText );
+ void Write_TextToken(
+ const String & i_sText );
+ void Write_LinkableText(
+ const ary::QualifiedName &
+ i_sQuName );
+ void Write_QualifiedName(
+ const ary::QualifiedName &
+ i_sQuName );
+
+ // DATA
+ bool bUseHtmlInDocuTokens;
+
+ /** This is used, if a class documentation is displayed,
+ because for links to members then the "current class"
+ is not the parent, but this class itself.
+ */
+ const ary::cpp::Class *
+ pCurClassOverwrite;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/hdimpl.cxx b/autodoc/source/display/html/hdimpl.cxx
new file mode 100644
index 000000000000..f9d2b0f1636a
--- /dev/null
+++ b/autodoc/source/display/html/hdimpl.cxx
@@ -0,0 +1,549 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hdimpl.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <stdlib.h>
+#include <stdio.h>
+#include <ary/ceslot.hxx>
+#include <ary/qualiname.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_de.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <udm/html/htmlitem.hxx>
+#include "cre_link.hxx"
+#include "hd_docu.hxx"
+#include "html_kit.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+#include "strconst.hxx"
+
+
+using namespace csi;
+
+
+//******************** HtmlDisplay_Impl *********************//
+
+HtmlDisplay_Impl::~HtmlDisplay_Impl()
+{
+}
+
+HtmlDisplay_Impl::HtmlDisplay_Impl( OuputPage_Environment & io_rEnv )
+ : pEnv(&io_rEnv)
+ // aWriteHelper
+{
+}
+
+
+//******************** Free Functions *********************//
+
+
+
+namespace dshelp
+{
+
+void
+DisplaySlot( ary::Display & o_rDisplay,
+ const ary::AryGroup & i_rGroup,
+ ary::SlotAccessId i_nSlot )
+{
+ ary::Slot_AutoPtr pSlot( i_rGroup.Create_Slot(i_nSlot) );
+ pSlot->StoreAt( o_rDisplay );
+}
+
+
+const char *
+PathUp( uintt i_nLevels )
+{
+ static char sResult[300];
+
+ sResult[0] = NULCH;
+ for ( uintt lev = 0; lev < i_nLevels; ++lev )
+ {
+ strcat( sResult, "../"); // SAFE STRCAT (#100211# - checked)
+ }
+ return sResult;
+}
+
+const char *
+PathPerLevelsUp( uintt i_nLevels,
+ const char * i_nPathBelowDestinationLevel )
+{
+ static char sResult[500];
+ strcpy( sResult, PathUp(i_nLevels) ); // SAFE STRCPY (#100211# - checked)
+ // KORR_FUTURE: Make it still safer here:
+ strcat( sResult, i_nPathBelowDestinationLevel ); // SAFE STRCAT (#100211# - checked)
+ return sResult;
+}
+
+
+const char *
+PathPerRoot( const OuputPage_Environment & i_rEnv,
+ const char * i_sPathFromRootDir )
+{
+ return PathPerLevelsUp( i_rEnv.Depth(), i_sPathFromRootDir );
+}
+
+const char *
+PathPerNamespace( const OuputPage_Environment & i_rEnv,
+ const char * i_sPathFromNamespaceDir )
+{
+ const ary::cpp::Namespace * pNsp = i_rEnv.CurNamespace();
+ if ( pNsp == 0 )
+ return "";
+
+ uintt nCount = i_rEnv.Depth() - (pNsp->Depth() + 1) ;
+ csv_assert( nCount < 100 );
+ return PathPerLevelsUp( nCount, i_sPathFromNamespaceDir );
+}
+
+const char *
+HtmlFileName( const char * i_sPrefix,
+ const char * i_sEntityName )
+{
+ // KORR_FUTURE: Make it still safer here:
+ static char sResult[300];
+ strcpy( sResult, i_sPrefix ); // SAFE STRCPY (#100211# - checked)
+ strcat( sResult, i_sEntityName ); // SAFE STRCAT (#100211# - checked)
+ strcat( sResult, ".html" ); // SAFE STRCAT (#100211# - checked)
+ return sResult;
+}
+
+const char *
+Path2Class( uintt i_nLevelsUp,
+ const char * i_sClassLocalName )
+{
+ return PathPerLevelsUp( i_nLevelsUp, ClassFileName(i_sClassLocalName) );
+}
+
+const char *
+Path2Child( const char * i_sFileName,
+ const char * i_sSubDir )
+{
+ static char sResult[400];
+ if ( i_sSubDir != 0 )
+ {
+ // KORR_FUTURE: Make it still safer here:
+ strcpy( sResult, i_sSubDir ); // SAFE STRCPY (#100211# - checked)
+ strcat( sResult, "/" ); // SAFE STRCAT (#100211# - checked)
+ }
+ else
+ {
+ sResult[0] = NULCH;
+ }
+
+ strcat( sResult, i_sFileName ); // SAFE STRCAT (#100211# - checked)
+ return sResult;
+}
+
+const char *
+Path2ChildNamespace( const char * i_sLocalName )
+{
+ return Path2Child( C_sHFN_Namespace, i_sLocalName );
+}
+
+String
+OperationLink( const ary::cpp::Gate & ,
+ const String & i_sOpName,
+ ary::cpp::Ce_id i_nOpId,
+ const char * i_sPrePath )
+{
+ StreamLock
+ slResult(3000);
+ StreamStr &
+ sResult = slResult();
+
+ sResult
+ << i_sPrePath
+ << "#"
+ << i_sOpName
+ << "-"
+ << i_nOpId.Value();
+
+
+
+ return sResult.c_str();
+}
+
+const char *
+DataLink( const String & i_sLocalName,
+ const char * i_sPrePath )
+{
+ StreamLock
+ slResult(3000);
+ StreamStr &
+ sResult = slResult();
+
+ sResult
+ << i_sPrePath
+ << "#"
+ << i_sLocalName;
+
+ return sResult.c_str();
+}
+
+void
+Get_LinkedTypeText( csi::xml::Element & o_rOut,
+ const OuputPage_Environment & i_rEnv,
+ ary::cpp::Type_id i_nId,
+ bool i_bWithAbsolutifier )
+{
+ if (NOT i_nId.IsValid())
+ return;
+
+ const char * sPreName = "";
+ const char * sName = "";
+ const char * sPostName = "";
+
+ bool bTypeExists = Get_TypeText( sPreName,
+ sName,
+ sPostName,
+ i_nId,
+ i_rEnv.Gate() );
+ if ( NOT bTypeExists )
+ return;
+
+ if ( NOT i_bWithAbsolutifier AND strncmp(sPreName,"::",2) == 0 )
+ sPreName+=2;
+
+ const ary::cpp::CodeEntity *
+ pCe = i_rEnv.Gate().Search_RelatedCe(i_nId);
+
+ String sLink;
+ if ( pCe != 0 )
+ {
+ sLink = Link2Ce(i_rEnv,*pCe);
+ }
+ else
+ {
+ if ( strstr(sPreName,"com::sun::star") != 0 )
+ {
+ static StreamStr aLink(400);
+ aLink.seekp(0);
+ aLink << PathPerRoot(i_rEnv, "../../common/ref");
+ if ( *sPreName != ':' )
+ aLink << '/';
+ for ( const char * s = sPreName;
+ *s != 0;
+ ++s )
+ {
+ if ( *s == ':' )
+ {
+ aLink << '/';
+ ++s;
+ }
+ else
+ {
+ aLink << *s;
+ }
+ } // end for
+ aLink << sName
+ << ".html";
+ sLink = aLink.c_str();
+ }
+ } // endif( pCe != 0 )
+
+ o_rOut
+ << sPreName;
+ csi::xml::Element &
+ o_Goon = sLink.length() > 0
+ ? o_rOut >> * new html::Link( sLink.c_str() )
+ : o_rOut;
+ o_Goon
+ << sName;
+ o_rOut
+ << sPostName;
+}
+
+void
+Create_ChildListLabel( csi::xml::Element & o_rParentElement,
+ const char * i_sLabel )
+{
+ if ( NOT csv::no_str(i_sLabel) )
+ {
+ o_rParentElement
+ >> *new html::Label(i_sLabel)
+ << " ";
+ }
+}
+
+DYN csi::html::Table &
+Create_ChildListTable( const char * i_sTitle )
+{
+ html::Table *
+ dpTable = new html::Table;
+ *dpTable
+ << new html::ClassAttr( "childlist")
+ << new xml::AnAttribute( "border", "1" )
+ << new xml::AnAttribute( "cellpadding", "5" )
+ << new xml::AnAttribute( "cellspacing", "0" )
+ << new html::WidthAttr( "100%" );
+
+ html::TableRow &
+ rRow = dpTable->AddRow();
+ rRow
+ << new html::ClassAttr("subtitle")
+ >> *new html::TableCell
+ << new xml::AnAttribute( "colspan","2" )
+ >> *new html::Headline(4)
+ << i_sTitle;
+ return *dpTable;
+}
+
+const char *
+Link2Ce( const OuputPage_Environment & i_rEnv,
+ const ary::cpp::CodeEntity & i_rCe )
+{
+ const uintt nMaxSize
+ = 3000;
+ static char sLink[nMaxSize];
+ static LinkCreator aLinkCreator( &sLink[0], nMaxSize );
+ sLink[0] = NULCH;
+
+ aLinkCreator.SetEnv(i_rEnv);
+ i_rCe.Accept(aLinkCreator);
+
+ return sLink;
+}
+
+const char *
+Link2CppDefinition( const OuputPage_Environment & i_rEnv,
+ const ary::cpp::DefineEntity & i_rDef )
+{
+ const uintt nMaxSize
+ = 1000;
+ static char sLink[nMaxSize];
+ static LinkCreator aLinkCreator( &sLink[0], nMaxSize );
+ sLink[0] = NULCH;
+
+ aLinkCreator.SetEnv(i_rEnv);
+ i_rDef.Accept(aLinkCreator);
+
+ return sLink;
+}
+
+const ary::cpp::CodeEntity *
+FindUnambiguousCe( const OuputPage_Environment & i_rEnv,
+ const ary::QualifiedName & i_rQuName,
+ const ary::cpp::Class * i_pJustDocumentedClass )
+{
+ if ( i_rEnv.CurNamespace() == 0 )
+ return 0;
+
+ const ary::cpp::CodeEntity * ret = 0;
+
+ if ( NOT i_rQuName.IsQualified() )
+ {
+ if ( i_pJustDocumentedClass != 0 )
+ ret = i_rEnv.Gate().Ces().Search_CeLocal( i_rQuName.LocalName(),
+ i_rQuName.IsFunction(),
+ *i_rEnv.CurNamespace(),
+ i_pJustDocumentedClass );
+ if (ret != 0)
+ return ret;
+
+ ret = i_rEnv.Gate().Ces().Search_CeLocal( i_rQuName.LocalName(),
+ i_rQuName.IsFunction(),
+ *i_rEnv.CurNamespace(),
+ i_rEnv.CurClass() );
+ }
+ if (ret != 0)
+ return ret;
+
+ return i_rEnv.Gate().Ces().Search_CeAbsolute( *i_rEnv.CurNamespace(),
+ i_rQuName );
+}
+
+void
+ShowDocu_On( csi::xml::Element & o_rOut,
+ Docu_Display & io_rDisplay,
+ const ary::cpp::CppEntity & i_rRE )
+{
+ if (i_rRE.Docu().Data() != 0)
+ {
+ io_rDisplay.Assign_Out( o_rOut );
+ io_rDisplay.Process(i_rRE.Docu());
+ io_rDisplay.Unassign_Out();
+ }
+}
+
+void
+WriteOut_TokenList( csi::xml::Element & o_rOut,
+ const StringVector & i_rTokens,
+ const char * i_sSeparator )
+{
+ if ( i_rTokens.size() > 0 )
+ {
+ StringVector::const_iterator
+ it = i_rTokens.begin();
+ StringVector::const_iterator
+ itEnd = i_rTokens.end();
+
+ o_rOut << *it;
+ for ( ++it; it != itEnd; ++it )
+ {
+ o_rOut << i_sSeparator << *it;
+ }
+ };
+
+}
+
+void
+EraseLeadingSpace( String & io_rStr )
+{
+ if ( *io_rStr.c_str() < 33 AND io_rStr.length() > 0 )
+ {
+ const unsigned char * pNew;
+ for ( pNew = (const unsigned char * ) io_rStr.c_str();
+ *pNew < 33 AND *pNew != 0;
+ ++pNew ) {}
+ String sNew( (const char*)pNew );
+ io_rStr = sNew;
+ }
+}
+
+void
+WriteOut_LinkedFunctionText( csi::xml::Element & o_rTitleOut,
+ adcdisp::ParameterTable & o_rParameters,
+ const ary::cpp::Function & i_rFunction,
+ const OuputPage_Environment & i_rEnv,
+ bool * o_bIsConst,
+ bool * o_bIsVirtual )
+{
+ // write pre-name:
+ const ary::cpp::FunctionFlags & rFlags = i_rFunction.Flags();
+ if ( rFlags.IsStaticLocal() OR rFlags.IsStaticMember() )
+ o_rTitleOut << "static ";
+ if ( rFlags.IsExplicit() )
+ o_rTitleOut << "explicit ";
+ if ( rFlags.IsMutable() )
+ o_rTitleOut << "mutable ";
+ if ( i_rFunction.Virtuality() != ary::cpp::VIRTUAL_none )
+ o_rTitleOut << "virtual ";
+// o_rTitleOut << new html::LineBreak;
+
+ Get_LinkedTypeText( o_rTitleOut, i_rEnv, i_rFunction.ReturnType() );
+
+ // write name:
+ o_rTitleOut
+ << " "
+ >> *new html::Strong
+ << i_rFunction.LocalName();
+ o_rTitleOut
+ << "(";
+
+
+ csi::xml::Element * pOutLast = &o_rTitleOut;
+
+ // write post-name:
+ FunctionParam_Iterator fit;
+ fit.Assign(i_rFunction);
+
+ if (fit)
+ {
+ o_rParameters.AddEntry();
+ Get_LinkedTypeText( o_rParameters.Type(), i_rEnv, fit.CurType() );
+ o_rParameters.Type() << " ";
+ o_rParameters.Name() << " " << fit.CurName();
+
+ for ( ++fit; fit; ++fit )
+ {
+ o_rParameters.Name() << ",";
+ o_rParameters.AddEntry();
+ Get_LinkedTypeText( o_rParameters.Type(), i_rEnv, fit.CurType() );
+ o_rParameters.Name() << fit.CurName();
+ }
+
+ pOutLast = &o_rParameters.Name();
+ o_rParameters.Name() << " ";
+ }
+
+ *pOutLast << ")";
+ if ( fit.IsFunctionConst() )
+ {
+ *pOutLast << " const";
+ if ( o_bIsConst != 0 )
+ *o_bIsConst = true;
+ }
+ if ( fit.IsFunctionVolatile() )
+ {
+ *pOutLast << " volatile";
+ if ( o_bIsVirtual != 0 )
+ *o_bIsVirtual = true;
+ }
+
+ // write Exceptions:
+ const std::vector< ary::cpp::Type_id > *
+ pThrow = i_rFunction.Exceptions();
+ if ( pThrow)
+ {
+ std::vector< ary::cpp::Type_id >::const_iterator
+ it = pThrow->begin();
+ std::vector< ary::cpp::Type_id >::const_iterator
+ it_end = pThrow->end();
+
+ if (it != it_end)
+ {
+ o_rParameters.AddEntry();
+ pOutLast = &o_rParameters.Name();
+
+ o_rParameters.Name() << " throw( ";
+ Get_LinkedTypeText(o_rParameters.Name(), i_rEnv, *it);
+
+ for ( ++it; it != it_end; ++it )
+ {
+ o_rParameters.Name() << ", ";
+ Get_LinkedTypeText(o_rParameters.Name(), i_rEnv, *it);
+ }
+ o_rParameters.Name() << " )";
+ }
+ else
+ {
+ *pOutLast << " throw()";
+ }
+ } // endif // pThrow
+
+ // abstractness:
+ if ( i_rFunction.Virtuality() == ary::cpp::VIRTUAL_abstract )
+ *pOutLast << " = 0";
+
+ // finish:
+ *pOutLast << ";";
+}
+
+
+
+} // namespace dshelp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/hdimpl.hxx b/autodoc/source/display/html/hdimpl.hxx
new file mode 100644
index 000000000000..6caf652d499f
--- /dev/null
+++ b/autodoc/source/display/html/hdimpl.hxx
@@ -0,0 +1,250 @@
+/* -*- 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 ADC_DISPLAY_HDIMPL_HXX
+#define ADC_DISPLAY_HDIMPL_HXX
+
+// BASE CLASSES
+#include <udm/html/htmlitem.hxx>
+// USED SERVICES
+#include "easywri.hxx"
+#include <cosv/bstream.hxx>
+#include <ary/ary_disp.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_ce.hxx>
+#include "aryattrs.hxx" // For compatibility with earlier times, when those funtions were in this header.
+
+
+namespace ary
+{
+ namespace cpp
+ {
+ class CodeEntity;
+ class Class;
+ class DisplayGate;
+ class Function;
+ class DefineEntity;
+ class OperationSignature;
+ }
+
+ class QualifiedName;
+}
+namespace csi
+{
+ namespace xml
+ {
+ class Element;
+ }
+ namespace html
+ {
+ class Table;
+ }
+}
+
+namespace adcdisp
+{
+ class ParameterTable;
+}
+
+class OuputPage_Environment;
+class Docu_Display;
+
+class HtmlDisplay_Impl
+{
+ public:
+ ~HtmlDisplay_Impl();
+
+ const OuputPage_Environment &
+ Env() const { return *pEnv; }
+
+ // ACCESS
+ OuputPage_Environment &
+ Env() { return *pEnv; }
+ EasyWriter & Easy() { return aWriteHelper; }
+ csi::xml::Element & CurOut() { return aWriteHelper.Out(); }
+
+ protected:
+ HtmlDisplay_Impl(
+ OuputPage_Environment &
+ io_rEnv );
+ private:
+ // DATA
+ OuputPage_Environment *
+ pEnv;
+ EasyWriter aWriteHelper;
+};
+
+
+namespace dshelp
+{
+
+void DisplaySlot(
+ ary::Display & o_rDisplay,
+ const ary::AryGroup &
+ i_rGroup,
+ ary::SlotAccessId i_nSlot );
+
+
+const char * PathUp(
+ uintt i_nLevels );
+const char * PathPerLevelsUp(
+ uintt i_nLevels,
+ const char * i_nPathBelowDestinationLevel );
+
+const char * PathPerRoot(
+ const OuputPage_Environment &
+ i_rEnv,
+ const char * i_sPathFromRootDir );
+const char * PathPerNamespace(
+ const OuputPage_Environment &
+ i_rEnv,
+ const char * i_sPathFromNamespaceDir );
+
+void Create_ChildListLabel(
+ csi::xml::Element & o_rParentElement,
+ const char * i_sLabel );
+DYN csi::html::Table &
+ Create_ChildListTable(
+ const char * i_sTitle );
+
+const char * HtmlFileName(
+ const char * i_sPrefix,
+ const char * i_sEntityName );
+
+inline const char *
+ClassFileName( const char * i_sClassLocalName )
+ { return HtmlFileName( "c-", i_sClassLocalName); }
+inline const char *
+EnumFileName( const char * i_sEnumLocalName )
+ { return HtmlFileName( "e-", i_sEnumLocalName); }
+inline const char *
+TypedefFileName( const char * i_sTypedefLocalName )
+ { return HtmlFileName( "t-", i_sTypedefLocalName); }
+inline const char *
+FileFileName( const char * i_sFileLocalName )
+ { return HtmlFileName( "f-", i_sFileLocalName); }
+
+const char * Path2Class(
+ uintt i_nLevelsUp,
+ const char * i_sClassLocalName );
+
+const char * Path2Child(
+ const char * i_sFileName,
+ const char * i_sSubDir = 0 );
+
+const char * Path2ChildNamespace(
+ const char * i_sLocalName );
+
+String OperationLink(
+ const ary::cpp::Gate & i_gate,
+ const String & i_sOpName,
+ ary::cpp::Ce_id i_nOpId,
+ const char * i_sPrePath = "" );
+const char * DataLink(
+ const String & i_sLocalName,
+ const char * i_sPrePath = "" );
+
+inline String
+OperationLabel( const String & i_sOpName,
+ ary::cpp::Ce_id i_nOpId,
+ const ary::cpp::Gate & i_gate )
+ { return String(OperationLink(i_gate, i_sOpName, i_nOpId) + 1); } // Skip '#' in front.
+inline const char *
+DataLabel( const String & i_sLocalName )
+ { return DataLink(i_sLocalName) + 1; } // Skip '#' in front.
+
+
+void Get_LinkedTypeText(
+ csi::xml::Element & o_rOut,
+ const OuputPage_Environment &
+ i_rEnv,
+ ary::cpp::Type_id i_nId,
+ bool i_bWithAbsolutifier = true );
+
+
+const char * Link2Ce(
+ const OuputPage_Environment &
+ i_rEnv,
+ const ary::cpp::CodeEntity &
+ i_rCe );
+
+const char * Link2CppDefinition(
+ const OuputPage_Environment &
+ i_rEnv,
+ const ary::cpp::DefineEntity &
+ i_rDef );
+
+const ary::cpp::CodeEntity *
+ FindUnambiguousCe(
+ const OuputPage_Environment &
+ i_rEnv,
+ const ary::QualifiedName &
+ i_rQuName,
+ const ary::cpp::Class * i_pJustDocumentedClass );
+
+void ShowDocu_On(
+ csi::xml::Element & o_rOut,
+ Docu_Display & io_rDisplay,
+ const ary::cpp::CppEntity &
+ i_rRE );
+
+void WriteOut_TokenList(
+ csi::xml::Element & o_rOut,
+ const StringVector & i_rTokens,
+ const char * i_sSeparator );
+
+void EraseLeadingSpace(
+ String & io_rStr );
+
+/** @param o_bIsConst
+ *o_bIsConst will be set to true, if o_bIsConst != 0 and function is const.
+ If the function is not const, *o_bIsConst remains unchanged!
+
+ @param o_bIsVirtual
+ The same as o_bIsConst.
+*/
+void WriteOut_LinkedFunctionText(
+ csi::xml::Element & o_rTitleOut,
+ adcdisp::ParameterTable &
+ o_rParameters,
+ const ary::cpp::Function &
+ i_rFunction,
+ const OuputPage_Environment &
+ i_rEnv,
+ bool * o_bIsConst = 0,
+ bool * o_bIsVirtual = 0 );
+
+
+
+} // namespace dshelp
+
+using namespace dshelp;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/html_kit.cxx b/autodoc/source/display/html/html_kit.cxx
new file mode 100644
index 000000000000..32ab5252a00c
--- /dev/null
+++ b/autodoc/source/display/html/html_kit.cxx
@@ -0,0 +1,307 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "html_kit.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <stdio.h>
+#include <ary/cpp/c_slntry.hxx>
+#include "hdimpl.hxx"
+
+
+namespace adcdisp
+{
+
+
+using namespace csi::xml;
+using namespace csi::html;
+
+
+void
+PageTitle_Left::operator()( XmlElement & o_rOwner,
+ const char * i_sTypeTitle,
+ const String & i_sLocalName )
+{
+ o_rOwner
+ >> *new Headline(2)
+ << i_sTypeTitle
+ << " "
+ << i_sLocalName;
+}
+
+void
+PageTitle_Std::operator()( XmlElement & o_rOwner,
+ const char * i_sTypeTitle,
+ const String & i_sLocalName )
+{
+ o_rOwner
+ >> *new AnElement("div")
+ << new ClassAttr("title")
+ >> *new Headline(2)
+ << i_sTypeTitle
+ << " "
+ << i_sLocalName;
+}
+
+XmlElement &
+PageTitle_Std::operator()( XmlElement & o_rOwner )
+{
+ XmlElement & ret =
+ o_rOwner
+ >> *new AnElement("div")
+ << new ClassAttr("title")
+ >> *new Headline(2);
+ return ret;
+}
+
+void
+OperationTitle::operator()( XmlElement & o_owner,
+ const char * i_itemName,
+ ary::cpp::Ce_id i_id,
+ const ::ary::cpp::Gate & i_gate )
+{
+ o_owner
+ >> *new Label( OperationLabel(i_itemName, i_id, i_gate) )
+ << " ";
+ o_owner
+ << i_itemName;
+}
+
+
+void
+TemplateClause::operator()( XmlElement & o_rOwner,
+ const List_TplParams & i_rTplParams )
+{
+ if ( i_rTplParams.size() == 0 )
+ return;
+
+ Element & rOut =
+ o_rOwner
+ << new LineBreak
+ >> *new Paragraph
+ >> *new Strong
+ << "template< ";
+
+ List_TplParams::const_iterator
+ it = i_rTplParams.begin();
+ List_TplParams::const_iterator
+ itEnd = i_rTplParams.end();
+
+ rOut
+ << (*it).Name();
+ for ( ++it; it != itEnd; ++it )
+ {
+ rOut
+ << ", "
+ << (*it).Name();
+ } // end for
+ rOut << " >";
+}
+
+ExplanationList::ExplanationList( XmlElement & o_rOwner,
+ bool i_bMemberStyle )
+ : pList( new DefList),
+ pTerm(0),
+ pDefinition(0),
+ bMemberStyle(i_bMemberStyle)
+{
+ if (bMemberStyle)
+ *pList << new ClassAttr("member");
+
+ o_rOwner << pList;
+}
+
+void
+ExplanationList::AddEntry( const char * i_sTerm,
+ const char * i_sDifferentClass )
+{
+ DefListTerm & rNewTerm = pList->AddTerm();
+ if ( i_sDifferentClass != 0 )
+ {
+ rNewTerm << new ClassAttr(i_sDifferentClass);
+ }
+ else if (bMemberStyle)
+ {
+ rNewTerm << new ClassAttr("member");
+ }
+ if ( i_sTerm != 0 )
+ rNewTerm << i_sTerm;
+
+ pTerm = &rNewTerm;
+ pDefinition = &pList->AddDefinition();
+ if (bMemberStyle)
+ *pDefinition << new ClassAttr("member");
+}
+
+void
+ExplanationList::AddEntry_NoTerm()
+{
+ pTerm = 0;
+ pDefinition = &pList->AddDefinition();
+ if (bMemberStyle)
+ *pDefinition << new ClassAttr("member");
+}
+
+ExplanationTable::ExplanationTable( XmlElement & o_rOwner )
+ : pTable(0),
+ pTerm(0),
+ pDefinition(0)
+{
+ pTable = new Table("0", "100%", "3", "0");
+ *pTable << new AnAttribute("class", "expl-table");
+ o_rOwner << pTable;
+}
+
+void
+ExplanationTable::AddEntry( const char * i_sTerm,
+ const char * i_sDifferentStyle )
+{
+ TableRow &
+ rNewRow = pTable->AddRow();
+ TableCell &
+ rNewTerm = rNewRow.AddCell();
+ TableCell &
+ rNewDefinition = rNewRow.AddCell();
+
+ if ( i_sDifferentStyle == 0 )
+ {
+ rNewTerm << new WidthAttr("15%")
+ << new StyleAttr("vertical-align:top; font-weight:bold");
+ }
+ else
+ {
+ rNewTerm << new StyleAttr(i_sDifferentStyle);
+ }
+ if ( i_sTerm != 0 )
+ rNewTerm << i_sTerm;
+
+ pTerm = &rNewTerm;
+ pDefinition = & (rNewDefinition >> *new APureElement("pre"));
+}
+
+ParameterTable::ParameterTable( XmlElement & o_rOwner )
+ : pTable(0),
+ pTerm(0),
+ pDefinition(0)
+{
+ pTable = new Table;
+ *pTable << new AnAttribute("class", "param-table");
+ o_rOwner << pTable;
+}
+
+void
+ParameterTable::AddEntry()
+{
+ TableRow &
+ rNewRow = pTable->AddRow();
+ TableCell &
+ rNewTerm = rNewRow.AddCell();
+ TableCell &
+ rNewDefinition = rNewRow.AddCell();
+
+ pTerm = &rNewTerm;
+ pDefinition = &rNewDefinition;
+}
+
+FlagTable::FlagTable( XmlElement & o_rOwner,
+ uintt i_nNrOfColumns )
+{
+ pTable = new Table;
+ *pTable << new AnAttribute("class", "flag-table");
+ *pTable << new AnAttribute("border", "1");
+ *pTable << new AnAttribute("cellspacing", "0");
+ o_rOwner << pTable;
+
+ TableRow & rRow1 = pTable->AddRow();
+ TableRow & rRow2 = pTable->AddRow();
+
+ for ( uintt c = 0; c < i_nNrOfColumns; ++c )
+ {
+ TableCell & rCell1 = rRow1.AddCell();
+ int nWidth = 100 / i_nNrOfColumns;
+ static char sWidth[20];
+ sprintf( sWidth, "%d%%", nWidth ); // SAFE SPRINTF (#100211# - checked)
+
+ rCell1
+ << new WidthAttr( sWidth )
+ << new ClassAttr( "flagname" );
+ TableCell & rCell2 = rRow2.AddCell();
+ aCells.push_back( CellPair(&rCell1, &rCell2) );
+ } // end for
+}
+
+void
+FlagTable::SetColumn( uintt i_nColumnPosition,
+ const char * i_sColumnName,
+ bool i_bValue )
+{
+ csv_assert( i_nColumnPosition < aCells.size() );
+
+ TableCell &
+ rCell1 = *aCells[i_nColumnPosition].first;
+ TableCell &
+ rCell2 = *aCells[i_nColumnPosition].second;
+ rCell1
+ << i_sColumnName;
+ if (i_bValue)
+ {
+ rCell2
+ << new ClassAttr("flagyes")
+ << "YES";
+ }
+ else //
+ {
+ rCell2
+ << new ClassAttr("flagno")
+ << "NO";
+ } // endif
+}
+
+IndexList::IndexList( XmlElement & o_rOwner )
+ : pList( new DefList ),
+ pTerm(0),
+ pDefinition(0)
+{
+ o_rOwner << pList;
+}
+
+void
+IndexList::AddEntry()
+{
+ pTerm = &pList->AddTerm();
+ pDefinition = &pList->AddDefinition();
+}
+
+
+} // namespace adcdisp
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/html_kit.hxx b/autodoc/source/display/html/html_kit.hxx
new file mode 100644
index 000000000000..35aba2887cdb
--- /dev/null
+++ b/autodoc/source/display/html/html_kit.hxx
@@ -0,0 +1,201 @@
+/* -*- 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 ADC_DISPLAY_HTML_KIT_HXX
+#define ADC_DISPLAY_HTML_KIT_HXX
+
+// BASE CLASSES
+#include <udm/xml/xmlitem.hxx>
+#include <udm/html/htmlitem.hxx>
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+ namespace cpp
+ {
+ struct S_TplParam;
+ class OperationSignature;
+ class Gate;
+ }
+}
+
+
+
+
+namespace adcdisp
+{
+
+typedef csi::xml::Element XmlElement;
+
+class PageTitle_Left
+{
+ public:
+ void operator()(
+ XmlElement & o_rOwner,
+ const char * i_sTypeTitle,
+ const String & i_sLocalName );
+};
+
+class PageTitle_Std
+{
+ public:
+ void operator()(
+ XmlElement & o_rOwner,
+ const char * i_sTypeTitle,
+ const String & i_sLocalName );
+ XmlElement & operator()(
+ XmlElement & o_rOwner );
+};
+
+class OperationTitle
+{
+ public:
+ void operator()(
+ XmlElement & o_rOwner,
+ const char * i_sItemName,
+ ary::cpp::Ce_id i_nId,
+ const ::ary::cpp::Gate &
+ i_gate );
+};
+
+
+class TemplateClause
+{
+ public:
+ typedef std::vector< ary::cpp::S_TplParam> List_TplParams;
+
+ void operator()(
+ XmlElement & o_rOwner,
+ const List_TplParams &
+ i_rTplParams );
+};
+
+
+class ExplanationList
+{
+ public:
+ ExplanationList(
+ XmlElement & o_rOwner,
+ bool i_bMemberStyle = false );
+
+ void AddEntry(
+ const char * i_sTerm = 0,
+ const char * i_sDifferentClass = 0 );
+ void AddEntry_NoTerm();
+
+ XmlElement & Term() { return *pTerm; }
+ XmlElement & Def() { return *pDefinition; }
+
+ private:
+ csi::html::DefList* pList;
+ XmlElement * pTerm;
+ XmlElement * pDefinition;
+ bool bMemberStyle;
+};
+
+class ExplanationTable
+{
+ public:
+ ExplanationTable(
+ XmlElement & o_rOwner );
+
+ void AddEntry(
+ const char * i_sTerm = 0,
+ const char * i_sDifferentStyle = 0 );
+
+ XmlElement & Term() { return *pTerm; }
+ XmlElement & Def() { return *pDefinition; }
+
+ private:
+ csi::html::Table* pTable;
+ XmlElement * pTerm;
+ XmlElement * pDefinition;
+};
+
+class ParameterTable
+{
+ public:
+ ParameterTable(
+ XmlElement & o_rOwner );
+
+ void AddEntry();
+
+ XmlElement & Type() { return *pTerm; }
+ XmlElement & Name() { return *pDefinition; }
+
+ private:
+ csi::html::Table* pTable;
+ XmlElement * pTerm;
+ XmlElement * pDefinition;
+};
+
+class FlagTable
+{
+ public:
+ FlagTable(
+ XmlElement & o_rOwner,
+ uintt i_nNrOfColumns );
+
+ void SetColumn(
+ uintt i_nColumnPosition, /// Starting with 0.
+ const char * i_sColumnName,
+ bool i_bValue ); /// "YES" or "NO"
+ private:
+ typedef std::pair< csi::html::TableCell*, csi::html::TableCell* > CellPair;
+
+ // DATA
+ csi::html::Table* pTable;
+ std::vector<CellPair>
+ aCells;
+};
+
+class IndexList
+{
+ public:
+ IndexList(
+ XmlElement & o_rOwner );
+
+ void AddEntry();
+
+ XmlElement & Term() { return *pTerm; }
+ XmlElement & Def() { return *pDefinition; }
+
+ private:
+ csi::html::DefList* pList;
+ XmlElement * pTerm;
+ XmlElement * pDefinition;
+};
+
+
+
+
+} // namespace adcdisp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/makefile.mk b/autodoc/source/display/html/makefile.mk
new file mode 100644
index 000000000000..58046760ebd7
--- /dev/null
+++ b/autodoc/source/display/html/makefile.mk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=display_html
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/aryattrs.obj \
+ $(OBJ)$/cfrstd.obj \
+ $(OBJ)$/chd_udk2.obj \
+ $(OBJ)$/cre_link.obj \
+ $(OBJ)$/dsply_cl.obj \
+ $(OBJ)$/dsply_da.obj \
+ $(OBJ)$/dsply_op.obj \
+ $(OBJ)$/easywri.obj \
+ $(OBJ)$/hd_chlst.obj \
+ $(OBJ)$/hd_docu.obj \
+ $(OBJ)$/hdimpl.obj \
+ $(OBJ)$/html_kit.obj \
+ $(OBJ)$/nav_main.obj \
+ $(OBJ)$/navibar.obj \
+ $(OBJ)$/outfile.obj \
+ $(OBJ)$/opageenv.obj \
+ $(OBJ)$/pagemake.obj \
+ $(OBJ)$/pm_aldef.obj \
+ $(OBJ)$/pm_base.obj \
+ $(OBJ)$/pm_class.obj \
+ $(OBJ)$/pm_help.obj \
+ $(OBJ)$/pm_index.obj \
+ $(OBJ)$/pm_namsp.obj \
+ $(OBJ)$/pm_start.obj \
+ $(OBJ)$/protarea.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/display/html/nav_main.cxx b/autodoc/source/display/html/nav_main.cxx
new file mode 100644
index 000000000000..781636fc9844
--- /dev/null
+++ b/autodoc/source/display/html/nav_main.cxx
@@ -0,0 +1,379 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "nav_main.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_ce.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <udm/html/htmlitem.hxx>
+#include "hdimpl.hxx"
+#include "opageenv.hxx"
+#include "strconst.hxx"
+
+
+using namespace ::csi::html;
+using namespace ::csi::xml;
+
+
+const String sOverview("Overview");
+const String sNamespace("Namespace");
+const String sClass("Class");
+const String sTree("Tree");
+const String sProject("Project");
+const String sFile("File");
+const String sIndex("Index");
+const String sHelp("Help");
+
+
+
+//******************** MainItem and derived ones ***************//
+class MainItem
+{
+ public:
+ virtual ~MainItem() {}
+ void Write2(
+ TableRow & o_rOut );
+ private:
+ virtual void do_Write2(
+ TableRow & o_rOut ) = 0;
+};
+
+inline void
+MainItem::Write2( TableRow & o_rOut )
+ { do_Write2(o_rOut); }
+
+
+namespace
+{
+
+class MainRowItem : public MainItem
+{
+ public:
+ MainRowItem(
+ const String & i_sText,
+ const char * i_sLink,
+ const char * i_sTip );
+ ~MainRowItem();
+ private:
+ enum E_Style { eSelf, eNo, eStd };
+
+ virtual void do_Write2(
+ TableRow & o_rOut );
+ String sText;
+ String sLink;
+ String sTip;
+};
+
+MainRowItem::MainRowItem( const String & i_sText,
+ const char * i_sLink,
+ const char * i_sTip )
+ : sText(i_sText),
+ sLink(i_sLink),
+ sTip(i_sTip)
+{
+}
+
+MainRowItem::~MainRowItem()
+{
+}
+
+void
+MainRowItem::do_Write2( TableRow & o_rOut )
+{
+ TableCell & rCell = o_rOut.AddCell();
+
+ rCell
+ << new ClassAttr( "navimain" )
+ << new XmlCode("&nbsp;")
+ >> *new Link(sLink.c_str())
+ << sText.c_str();
+ rCell
+ << new XmlCode("&nbsp;");
+}
+
+
+class SelectedItem : public MainItem
+{
+ public:
+ SelectedItem(
+ const String & i_sText )
+ : sText(i_sText) {}
+ private:
+ virtual void do_Write2(
+ TableRow & o_rOut );
+ String sText;
+};
+
+void
+SelectedItem::do_Write2( TableRow & o_rOut )
+{
+ TableCell & rCell = o_rOut.AddCell();
+
+ rCell
+ << new ClassAttr( "navimainself" )
+ << new XmlCode("&nbsp;")
+ << sText.c_str()
+ << new XmlCode("&nbsp;");
+}
+
+class UnavailableItem : public MainItem
+{
+ public:
+ UnavailableItem(
+ const String & i_sText )
+ : sText(i_sText) {}
+ private:
+ virtual void do_Write2(
+ TableRow & o_rOut );
+ String sText;
+};
+
+void
+UnavailableItem::do_Write2( TableRow & o_rOut )
+{
+ TableCell & rCell = o_rOut.AddCell();
+
+ rCell
+ << new ClassAttr( "navimainnone" )
+ << new XmlCode("&nbsp;")
+ << sText.c_str()
+ << new XmlCode("&nbsp;");
+}
+
+} // anonymous namespace
+
+//************************ MainRow ***************************//
+
+MainRow::MainRow( const OuputPage_Environment & i_rEnv )
+ : // aItems,
+ pEnv(&i_rEnv)
+{
+}
+
+MainRow::~MainRow()
+{
+ csv::erase_container_of_heap_ptrs(aItems);
+}
+
+void
+MainRow::SetupItems_Overview()
+{
+ Create_ItemList_Global( eSelf, eStd, eStd );
+}
+
+void
+MainRow::SetupItems_AllDefs()
+{
+ Create_ItemList_Global( eStd, eStd, eStd );
+}
+
+void
+MainRow::SetupItems_Index()
+{
+ Create_ItemList_Global( eStd, eSelf, eStd );
+}
+
+void
+MainRow::SetupItems_Help()
+{
+ Create_ItemList_Global( eStd, eStd, eSelf );
+}
+
+void
+MainRow::SetupItems_Ce( const ary::cpp::CodeEntity & i_rCe )
+{
+ csv_assert( pEnv->CurNamespace() != 0 );
+ bool bIsNamespace = i_rCe.Id() == pEnv->CurNamespace()->Id();
+ bool bHasClass = pEnv->CurClass() != 0;
+ bool bIsClass = dynamic_cast< const ary::cpp::Class * >(&i_rCe) != 0;
+
+ Create_ItemList_InDirTree_Cpp(
+ ( bIsNamespace ? eSelf : eStd ),
+ ( bIsClass ? eSelf : bHasClass ? eStd : eNo ),
+ eNo, 0 );
+}
+
+void
+MainRow::SetupItems_FunctionGroup()
+{
+ Create_ItemList_InDirTree_Cpp(
+ eStd,
+ (pEnv->CurClass() != 0 ? eStd : eNo),
+ eNo, 0 );
+}
+
+void
+MainRow::SetupItems_DataGroup()
+{
+ SetupItems_FunctionGroup();
+}
+
+void
+MainRow::Write2( csi::xml::Element & o_rOut ) const
+{
+ Table * pTable = new Table;
+ o_rOut
+ >> *pTable
+ << new AnAttribute( "class", "navimain" )
+ << new AnAttribute( "border", "0" )
+ << new AnAttribute( "cellpadding", "1" )
+ << new AnAttribute( "cellspacing", "0" );
+ TableRow & rRow = pTable->AddRow();
+ rRow
+ << new AnAttribute( "align", "center" )
+ << new AnAttribute( "valign", "top" );
+ for ( ItemList::const_iterator it = aItems.begin();
+ it != aItems.end();
+ ++it )
+ {
+ (*it)->Write2( rRow );
+ }
+}
+
+void
+MainRow::Create_ItemList_Global( E_Style i_eOverview,
+ E_Style i_eIndex,
+ E_Style i_eHelp )
+{
+ if ( i_eOverview == eStd )
+ {
+ String sLinkOverview = ( i_eIndex == eSelf
+ ? dshelp::PathPerLevelsUp(
+ 1,
+ C_sHFN_Overview )
+ : C_sHFN_Overview );
+ Add_Item( i_eOverview, sOverview, sLinkOverview.c_str(), "" );
+ }
+ else
+ {
+ Add_Item( i_eOverview, sOverview, "", "" );
+ }
+
+ if ( i_eIndex == eSelf )
+ Add_Item( eStd, sNamespace, "../names/index.html", "" );
+ else
+ Add_Item( eStd, sNamespace, "names/index.html", "" );
+
+ Add_Item( eNo, sClass, "", "" );
+
+ if ( i_eIndex == eStd )
+ {
+ Add_Item( i_eIndex, sIndex, C_sPath_Index, "" );
+ }
+ else
+ {
+ Add_Item( i_eIndex, sIndex, "", "" );
+ }
+
+ if ( i_eHelp == eStd )
+ {
+ String sLinkHelp = ( i_eIndex == eSelf
+ ? PathPerLevelsUp(1,C_sHFN_Help)
+ : C_sHFN_Help );
+ Add_Item( i_eHelp, sHelp, sLinkHelp.c_str(), "" );
+ }
+ else
+ {
+ Add_Item( i_eHelp, sHelp, "", "" );
+ }
+}
+
+void
+MainRow::Create_ItemList_InDirTree_Cpp( E_Style i_eNsp,
+ E_Style i_eClass,
+ E_Style ,
+ const char * )
+{
+ String
+ sLinkOverview = PathPerRoot(*pEnv, C_sHFN_Overview);
+ Add_Item( eStd, sOverview, sLinkOverview.c_str(), "" );
+
+ if (i_eNsp == eStd)
+ {
+ String sLinkNamespace = PathPerNamespace(*pEnv, "index.html");
+ Add_Item( i_eNsp, sNamespace, sLinkNamespace.c_str(), "" );
+ }
+ else
+ {
+ Add_Item( i_eNsp, sNamespace, "", "" );
+ }
+
+ if (i_eClass == eStd)
+ {
+ csv_assert( pEnv->CurClass() != 0 );
+
+ StreamLock sLinkClass(300);
+ sLinkClass() << PathPerNamespace(*pEnv, "c-")
+ << pEnv->CurClass()->LocalName()
+ << ".html";
+ StreamLock sTipClass(300);
+ sTipClass() << "Class "
+ << pEnv->CurClass()->LocalName();
+ Add_Item( i_eClass, sClass, sLinkClass().c_str(), sTipClass().c_str() );
+ }
+ else
+ {
+ Add_Item( i_eClass, sClass, "", "" );
+ }
+
+
+ Add_Item( eStd, sIndex, PathPerRoot(*pEnv, C_sPath_Index), "" );
+ String
+ sLinkHelp = PathPerRoot(*pEnv, "help.html");
+ Add_Item( eStd, sHelp, sLinkHelp.c_str(), "" );
+}
+
+void
+MainRow::Add_Item( E_Style i_eStyle,
+ const String & i_sText,
+ const char * i_sLink,
+ const char * i_sTip )
+{
+ switch (i_eStyle)
+ {
+ case eStd: aItems.push_back( new MainRowItem(i_sText, i_sLink, i_sTip) );
+ break;
+ case eNo: aItems.push_back( new UnavailableItem(i_sText) );
+ break;
+ case eSelf: aItems.push_back( new SelectedItem(i_sText) );
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/nav_main.hxx b/autodoc/source/display/html/nav_main.hxx
new file mode 100644
index 000000000000..fe3e79c822e4
--- /dev/null
+++ b/autodoc/source/display/html/nav_main.hxx
@@ -0,0 +1,121 @@
+/* -*- 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 ADC_DISPLAY_HTML_NAV_MAIN_HXX
+#define ADC_DISPLAY_HTML_NAV_MAIN_HXX
+
+// USED SERVICES
+
+namespace ary
+{
+namespace cpp
+{
+ class CodeEntity;
+}
+namespace loc
+{
+ class File;
+}
+}
+namespace csi
+{
+namespace xml
+{
+ class Element;
+}
+}
+
+class OuputPage_Environment;
+class MainItem;
+
+
+
+
+class MainRow
+{
+ public:
+ MainRow(
+ const OuputPage_Environment &
+ i_rEnv );
+ ~MainRow();
+
+ void SetupItems_Overview();
+ void SetupItems_AllDefs();
+ void SetupItems_Index();
+ void SetupItems_Help();
+
+ void SetupItems_Ce(
+ const ary::cpp::CodeEntity &
+ i_rCe );
+ void SetupItems_FunctionGroup(); /// For class member methods.
+ void SetupItems_DataGroup(); /// For class member data.
+
+ void Write2(
+ csi::xml::Element & o_rOut ) const;
+ private:
+ // Local
+ enum E_Style
+ {
+ eSelf,
+ eNo,
+ eStd
+ };
+
+ /** @precond
+ Only combinations of 1 eSelf and 2 eStd are allowed
+ as arguments, here.
+ */
+ void Create_ItemList_Global(
+ E_Style i_eOverview,
+ E_Style i_eIndex,
+ E_Style i_eHelp );
+ void Create_ItemList_InDirTree_Cpp(
+ E_Style i_eNsp,
+ E_Style i_eClass,
+ E_Style i_eTree,
+ const char * i_sTreeLink );
+ void Add_Item(
+ E_Style i_eStyle,
+ const String & i_sText,
+ const char * i_sLink,
+ const char * i_sTip );
+ // DATA
+ typedef std::vector< DYN MainItem* > ItemList;
+
+
+ ItemList aItems;
+ const OuputPage_Environment *
+ pEnv;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/navibar.cxx b/autodoc/source/display/html/navibar.cxx
new file mode 100644
index 000000000000..8490e834b6d8
--- /dev/null
+++ b/autodoc/source/display/html/navibar.cxx
@@ -0,0 +1,318 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "navibar.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include "nav_main.hxx"
+#include "opageenv.hxx"
+
+
+using namespace csi::xml;
+using namespace csi::html;
+
+
+namespace
+{
+
+//************************ SubRowItem ***************************//
+
+class SubRowItem
+{
+ public:
+ SubRowItem(
+ const char * i_sText,
+ const char * i_sLink,
+ bool i_bActive,
+ bool i_bFirstOfRow = false );
+ ~SubRowItem();
+
+ void Write2(
+ Element & o_rOut ) const;
+ private:
+ String sText;
+ String sLink;
+ bool bIsActive;
+ bool bFirstOfRow;
+};
+
+SubRowItem::SubRowItem( const char * i_sText,
+ const char * i_sLink,
+ bool i_bActive,
+ bool i_bFirstOfRow )
+ : sText(i_sText),
+ sLink(i_sLink),
+ bIsActive(i_bActive),
+ bFirstOfRow(i_bFirstOfRow)
+{
+ csv_assert( NOT csv::no_str(i_sLink) );
+}
+
+SubRowItem::~SubRowItem()
+{
+}
+
+void
+SubRowItem::Write2( Element & o_rOut ) const
+{
+ o_rOut << new Sbr;
+ if ( NOT bFirstOfRow )
+ o_rOut << new XmlCode( "|&nbsp;" );
+ else
+ o_rOut << new XmlCode( "&nbsp;" );
+
+ if ( bIsActive )
+ {
+ o_rOut
+ >> *new Link( sLink.c_str() )
+ >> *new AnElement( "font" )
+ << new AnAttribute("size","-2")
+ >> *new Bold
+ << sText.c_str();
+ }
+ else
+ {
+ o_rOut
+ >> *new AnElement( "font" )
+ << new AnAttribute("size","-2")
+ << sText.c_str();
+ }
+}
+
+
+
+//************************ SubRow ***************************//
+
+class SubRow
+{
+ public:
+ SubRow(
+ const char * i_sTitle );
+ ~SubRow();
+
+ void AddItem(
+ const char * i_sText,
+ const char * i_sLink,
+ bool i_bActive );
+ void Write2(
+ Table & o_rOut ) const;
+ private:
+ typedef std::vector< DYN SubRowItem * > List_Items;
+
+ List_Items aItemList;
+ String sTitle;
+};
+
+SubRow::SubRow( const char * i_sTitle )
+// : // aItemList,
+ // sTitle
+{
+ StreamStr sUp(i_sTitle,0);
+ sUp.to_upper();
+ sTitle = sUp.c_str();
+}
+
+SubRow::~SubRow()
+{
+ for ( List_Items::iterator it = aItemList.begin();
+ it != aItemList.end();
+ ++it )
+ {
+ delete (*it);
+ }
+}
+
+inline void
+SubRow::AddItem( const char * i_sText,
+ const char * i_sLink,
+ bool i_bActive )
+{
+ aItemList.push_back( new SubRowItem(i_sText, i_sLink, i_bActive, aItemList.empty()) );
+}
+
+void
+SubRow::Write2( Table & o_rOut ) const
+{
+ TableRow * pRow = new TableRow;
+ o_rOut << pRow;
+
+ if (sTitle.length() > 0)
+ {
+ Element & rCell1 = pRow->AddCell();
+ rCell1
+ << new WidthAttr("20%")
+ >> *new AnElement( "font" )
+ << new AnAttribute("size","-2")
+ << sTitle
+ << ":";
+ }
+
+ Element & rCell2 = pRow->AddCell();
+ for ( List_Items::const_iterator it = aItemList.begin();
+ it != aItemList.end();
+ ++it )
+ {
+ (*it)->Write2( rCell2 );
+ }
+}
+
+
+} // anonymous namespace
+
+
+
+//************************* CheshireCat ***********************//
+
+
+typedef std::vector< DYN SubRow * > List_SubRows;
+
+struct NavigationBar::CheshireCat
+{
+ MainRow aMainRow;
+ List_SubRows aSubRows;
+ const OuputPage_Environment *
+ pEnv;
+
+
+ CheshireCat(
+ const OuputPage_Environment &
+ i_rEnv );
+ ~CheshireCat();
+};
+
+NavigationBar::
+CheshireCat::CheshireCat( const OuputPage_Environment & i_rEnv )
+ : aMainRow( i_rEnv ),
+ pEnv( & i_rEnv )
+{
+}
+
+NavigationBar::
+CheshireCat::~CheshireCat()
+{
+ csv::erase_container_of_heap_ptrs( aSubRows );
+}
+
+
+//************************ NavigationBar *******************//
+
+NavigationBar::NavigationBar( const OuputPage_Environment & i_rEnv,
+ E_GlobalLocation i_eLocation )
+ : pi( new CheshireCat(i_rEnv) )
+{
+ switch (i_eLocation)
+ {
+ case LOC_Overview: pi->aMainRow.SetupItems_Overview(); break;
+ case LOC_AllDefs: pi->aMainRow.SetupItems_AllDefs(); break;
+ case LOC_Index: pi->aMainRow.SetupItems_Index(); break;
+ case LOC_Help: pi->aMainRow.SetupItems_Help(); break;
+ default:
+ csv_assert(false);
+ }
+}
+
+NavigationBar::NavigationBar( const OuputPage_Environment & i_rEnv,
+ const ary::cpp::CodeEntity & i_rCe )
+ : pi( new CheshireCat(i_rEnv) )
+{
+ pi->aMainRow.SetupItems_Ce( i_rCe );
+}
+
+NavigationBar::NavigationBar( const OuputPage_Environment & i_rEnv,
+ E_CeGatheringType i_eCeGatheringType )
+ : pi( new CheshireCat(i_rEnv) )
+{
+ switch (i_eCeGatheringType)
+ {
+ case CEGT_operations: pi->aMainRow.SetupItems_FunctionGroup(); break;
+ case CEGT_data: pi->aMainRow.SetupItems_DataGroup(); break;
+ default:
+ csv_assert(false);
+ }
+}
+
+NavigationBar::~NavigationBar()
+{
+ csv::erase_container_of_heap_ptrs( pi->aSubRows );
+}
+
+void
+NavigationBar::MakeSubRow( const char * i_sTitle )
+{
+ pi->aSubRows.push_back( new SubRow(i_sTitle) );
+}
+
+void
+NavigationBar::AddItem( const char * i_sName,
+ const char * i_sLink,
+ bool i_bValid )
+{
+ csv_assert( pi->aSubRows.size() > 0 );
+ StreamStr sName(i_sName, 0);
+ sName.to_upper();
+
+ StreamLock aSum(100);
+ pi->aSubRows.back()->AddItem( sName.c_str(),
+ aSum() << "#" << i_sLink << c_str,
+ i_bValid );
+}
+
+void
+NavigationBar::Write( Element & o_rOut,
+ bool i_bWithSubRows ) const
+{
+ pi->aMainRow.Write2( o_rOut );
+
+ const_cast< NavigationBar* >(this)->pSubRowsTable = new Table;
+ o_rOut << pSubRowsTable;
+ *pSubRowsTable
+ << new AnAttribute( "class", "navisub" )
+ << new AnAttribute( "cellpadding", "0" )
+ << new AnAttribute( "cellspacing", "3" );
+
+ if (i_bWithSubRows)
+ {
+ Write_SubRows();
+ }
+}
+
+void
+NavigationBar::Write_SubRows() const
+{
+ for ( List_SubRows::const_iterator it = pi->aSubRows.begin();
+ it != pi->aSubRows.end();
+ ++it )
+ {
+ (*it)->Write2( *pSubRowsTable );
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/navibar.hxx b/autodoc/source/display/html/navibar.hxx
new file mode 100644
index 000000000000..ec81e6e94e5c
--- /dev/null
+++ b/autodoc/source/display/html/navibar.hxx
@@ -0,0 +1,121 @@
+/* -*- 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 ADC_DISPLAY_HTML_NAVIBAR_HXX
+#define ADC_DISPLAY_HTML_NAVIBAR_HXX
+
+// BASE CLASSES
+#include "hdimpl.hxx"
+
+namespace ary
+{
+namespace cpp
+{
+ class CodeEntity;
+}
+namespace loc
+{
+ class File;
+}
+}
+
+
+
+
+/** Creates a HTML navigation bar wth the following parts:
+
+ A main bar with fixed items.
+ Zero to several subbars with user defined items, depending of
+ the contents of the page.
+
+ The main bar contains those items:
+
+ Overview | Namespace | Class | Tree | Project | File | Index | Help
+*/
+class NavigationBar
+{
+ public:
+ enum E_GlobalLocation
+ {
+ LOC_Overview,
+ LOC_AllDefs,
+ LOC_Index,
+ LOC_Help
+ };
+ enum E_CeGatheringType
+ {
+ CEGT_operations,
+ CEGT_data
+ };
+
+ /// Used for Overview, Index and Help.
+ NavigationBar(
+ const OuputPage_Environment &
+ i_rEnv,
+ E_GlobalLocation i_eLocation );
+ /// Used for all Ces except operations and data.
+ NavigationBar(
+ const OuputPage_Environment &
+ i_rEnv,
+ const ary::cpp::CodeEntity &
+ i_rCe );
+ /** Used for operations and data.
+ */
+ NavigationBar(
+ const OuputPage_Environment &
+ i_rEnv,
+ E_CeGatheringType i_eCeGatheringType );
+ ~NavigationBar();
+
+ void MakeSubRow(
+ const char * i_sTitle );
+ void AddItem( /// Items are added to last made sub-row.
+ const char * i_sName,
+ const char * i_sLink,
+ bool i_bValid );
+ /** This writes the main bar and the pSubRowTable to o_rOut.
+ The pSubRowsTable stays in memory and can be filled later,
+ when all SubRow items are known.
+ */
+ void Write(
+ csi::xml::Element & o_rOut,
+ bool i_bWithSubRows = false ) const;
+ void Write_SubRows() const;
+
+ private:
+ struct CheshireCat;
+ Dyn<CheshireCat> pi;
+ csi::html::Table * pSubRowsTable;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/opageenv.cxx b/autodoc/source/display/html/opageenv.cxx
new file mode 100644
index 000000000000..87a170ff686b
--- /dev/null
+++ b/autodoc/source/display/html/opageenv.cxx
@@ -0,0 +1,492 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "opageenv.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/ploc_dir.hxx>
+#include <ary/cpp/c_ce.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <udm/html/htmlitem.hxx>
+#include <estack.hxx>
+#include "hdimpl.hxx"
+#include "strconst.hxx"
+
+
+const String C_sCppDir( "names" );
+const String C_sIndexDir( "ix" );
+
+
+//************************ Implementation ********************//
+
+namespace
+{
+
+void CreateDirectory( const csv::ploc::Path & i_rPath );
+
+void
+CreateDirectory( const csv::ploc::Path & i_rPath )
+{
+ csv::ploc::Directory aDirectory(i_rPath);
+ if (NOT aDirectory.Exists())
+ aDirectory.PhysicalCreate();
+}
+
+//************************ CheshireCat ********************//
+
+struct InNamespaceTree
+{
+ enum E_Type
+ {
+ t_unknown,
+ t_namespace,
+ t_type,
+ t_operations,
+ t_data
+ };
+
+ EStack< const ary::cpp::Namespace * >
+ aNamespaces; /// never empty.
+ EStack< const ary::cpp::Class * >
+ aClasses; /// maybe empty.
+ const ary::cpp::CodeEntity *
+ pCe; /// CurFileCe, maybe 0
+ E_Type eType;
+
+ InNamespaceTree(
+ const ary::cpp::Namespace &
+ i_rNsp );
+ ~InNamespaceTree();
+ void GoDown(
+ const ary::cpp::Namespace &
+ i_rNsp );
+ void GoDown(
+ const ary::cpp::Class &
+ i_rClass );
+ void GoUp();
+};
+
+InNamespaceTree::InNamespaceTree( const ary::cpp::Namespace & i_rNsp )
+ : // aNamespaces,
+ // aClasses,
+ pCe(0),
+ eType(t_unknown)
+{
+ aNamespaces.push( &i_rNsp );
+}
+
+InNamespaceTree::~InNamespaceTree()
+{
+}
+
+void
+InNamespaceTree::GoDown( const ary::cpp::Namespace & i_rNsp )
+{
+ aNamespaces.push(&i_rNsp);
+ aClasses.erase_all();
+ pCe = 0;
+ eType = t_unknown;
+}
+
+void
+InNamespaceTree::GoDown( const ary::cpp::Class & i_rClass )
+{
+ aClasses.push(&i_rClass);
+ pCe = 0;
+ eType = t_unknown;
+}
+
+void
+InNamespaceTree::GoUp()
+{
+ if ( NOT aClasses.empty() )
+ aClasses.pop();
+ else
+ aNamespaces.pop();
+ pCe = 0;
+ eType = t_unknown;
+}
+
+struct InIndex
+{
+ char cLetter;
+
+ InIndex() : cLetter('A') {}
+};
+
+
+} // anonymous namespace
+
+
+
+
+
+struct OuputPage_Environment::CheshireCat
+{
+ csv::ploc::Path aOutputRoot;
+ csv::ploc::Path aMyPath;
+ csv::StreamStr aFileName;
+
+ const ary::cpp::Gate *
+ pGate;
+ const display::CorporateFrame *
+ pLayout;
+ intt nDepth;
+
+ Dyn<InNamespaceTree>
+ pInNamespace;
+ Dyn<InIndex> pInIndex;
+
+ CheshireCat(
+ const csv::ploc::Path &
+ io_rOutputDir,
+ const ary::cpp::Gate &
+ i_rGate,
+ const display::CorporateFrame &
+ i_rLayout );
+ ~CheshireCat();
+ void AddQualifiedName2Path(
+ const ary::cpp::CodeEntity &
+ i_rCe,
+ bool i_bIncludeLocalName );
+
+ const Dyn<InNamespaceTree> &
+ NspEnv() const { return pInNamespace; }
+ Dyn<InNamespaceTree> &
+ NspEnv() { return pInNamespace; }
+ const ary::cpp::Namespace *
+ Namespace() const { return pInNamespace ? pInNamespace->aNamespaces.top() : 0; }
+ const ary::cpp::Class *
+ Class() const { return pInNamespace ? (pInNamespace->aClasses.empty() ? 0 : pInNamespace->aClasses.top()) : 0; }
+};
+
+OuputPage_Environment::
+CheshireCat::CheshireCat( const csv::ploc::Path & io_rOutputDir,
+ const ary::cpp::Gate & i_rGate,
+ const display::CorporateFrame & i_rLayout )
+ : aOutputRoot(io_rOutputDir),
+ aMyPath(io_rOutputDir),
+ aFileName(500),
+ pGate(&i_rGate),
+ pLayout(&i_rLayout),
+ nDepth(0),
+ pInNamespace(),
+ pInIndex()
+{
+}
+
+OuputPage_Environment::
+CheshireCat::~CheshireCat()
+{
+}
+
+void
+OuputPage_Environment::
+CheshireCat::AddQualifiedName2Path( const ary::cpp::CodeEntity & i_rCe,
+ bool i_bIncludeLocalName )
+{
+ if (NOT i_rCe.Owner().IsValid())
+ {
+ aMyPath.DirChain().PushBack( C_sCppDir );
+ return;
+ }
+
+ const ary::cpp::CodeEntity &
+ rParent = pGate->Ces().Find_Ce( i_rCe.Owner() );
+ AddQualifiedName2Path( rParent, true );
+
+ if ( i_bIncludeLocalName )
+ aMyPath.DirChain().PushBack( i_rCe.LocalName() );
+}
+
+
+
+//************************ OuputPage_Environment ********************//
+
+OuputPage_Environment::OuputPage_Environment( const csv::ploc::Path & io_rOutputDir,
+ const ary::cpp::Gate & i_rGate,
+ const display::CorporateFrame & i_rLayout )
+ : pi( new CheshireCat(io_rOutputDir, i_rGate, i_rLayout) )
+{
+}
+
+OuputPage_Environment::~OuputPage_Environment()
+{
+}
+
+void
+OuputPage_Environment::MoveDir_2Root()
+{
+ pi->NspEnv() = 0;
+ pi->pInIndex = 0;
+ pi->nDepth = 0;
+ while ( pi->aMyPath.DirChain().Size() > pi->aOutputRoot.DirChain().Size() )
+ pi->aMyPath.DirChain().PopBack();
+ pi->aMyPath.SetFile(String ::Null_());
+}
+
+void
+OuputPage_Environment::MoveDir_2Names()
+{
+ pi->NspEnv() = new InNamespaceTree( Gate().Ces().GlobalNamespace() );
+ pi->aMyPath.DirChain().PushBack( C_sCppDir );
+ pi->aMyPath.SetFile(String ::Null_());
+ ++pi->nDepth;
+
+ CreateDirectory( pi->aMyPath );
+}
+
+void
+OuputPage_Environment::MoveDir_Down2( const ary::cpp::Namespace & i_rNsp )
+{
+ csv_assert(i_rNsp.Depth() > 0);
+ csv_assert( pi->NspEnv() );
+ csv_assert( pi->Namespace()->CeId() == i_rNsp.Owner() );
+
+ pi->NspEnv()->GoDown( i_rNsp );
+ pi->aMyPath.DirChain().PushBack(i_rNsp.LocalName());
+ ++pi->nDepth;
+ pi->aMyPath.SetFile(String ::Null_());
+
+ CreateDirectory( pi->aMyPath );
+}
+
+void
+OuputPage_Environment::MoveDir_Down2( const ary::cpp::Class & i_rClass )
+{
+ csv_assert( pi->NspEnv() );
+ if ( i_rClass.Protection() == ary::cpp::PROTECT_global )
+ {
+ csv_assert( pi->Namespace()->CeId() == i_rClass.Owner() );
+ }
+ else
+ {
+ csv_assert( pi->Class() != 0 );
+ csv_assert( pi->Class()->CeId() == i_rClass.Owner() );
+ }
+
+ pi->NspEnv()->GoDown(i_rClass);
+ pi->aMyPath.DirChain().PushBack(i_rClass.LocalName());
+ pi->aMyPath.SetFile(String ::Null_());
+ ++pi->nDepth;
+
+ CreateDirectory( pi->aMyPath );
+}
+
+void
+OuputPage_Environment::MoveDir_2Index()
+{
+ MoveDir_2Root();
+ pi->pInIndex = new InIndex;
+ pi->aMyPath.DirChain().PushBack( String (C_sDIR_Index) );
+ pi->aMyPath.SetFile(String ::Null_());
+ pi->nDepth = 1;
+
+ CreateDirectory( pi->aMyPath );
+}
+
+void
+OuputPage_Environment::MoveDir_Up()
+{
+ if ( pi->nDepth == 1 )
+ {
+ MoveDir_2Root();
+ return;
+ }
+ else if ( pi->NspEnv() )
+ {
+ pi->NspEnv()->GoUp();
+ pi->aMyPath.DirChain().PopBack();
+ pi->aMyPath.SetFile(String ::Null_());
+ --pi->nDepth;
+ }
+}
+
+void
+OuputPage_Environment::SetFile_Css()
+{
+ pi->aMyPath.SetFile( C_sHFN_Css );
+}
+
+void
+OuputPage_Environment::SetFile_Overview()
+{
+ pi->aMyPath.SetFile( C_sHFN_Overview );
+}
+
+void
+OuputPage_Environment::SetFile_AllDefs()
+{
+ // Provisorium
+ pi->aMyPath.SetFile("def-all.html");
+}
+
+void
+OuputPage_Environment::SetFile_Index( char i_cLetter )
+{
+ csv_assert( 'A' <= i_cLetter AND i_cLetter <= 'Z' OR i_cLetter == '_' );
+
+ static StreamStr sIndexFileName(40);
+ sIndexFileName.seekp(0);
+ sIndexFileName << "index-";
+ if ( i_cLetter == '_' )
+ {
+ sIndexFileName << "27";
+ }
+ else
+ {
+ sIndexFileName << int(i_cLetter -'A' + 1);
+ }
+ sIndexFileName << ".html";
+
+ pi->aMyPath.SetFile( sIndexFileName.c_str() );
+}
+
+void
+OuputPage_Environment::SetFile_Help()
+{
+ pi->aMyPath.SetFile( C_sHFN_Help );
+}
+
+void
+OuputPage_Environment::SetFile_CurNamespace()
+{
+ csv_assert( pi->NspEnv() );
+ pi->aMyPath.SetFile("index.html");
+ pi->NspEnv()->pCe = pi->Namespace();
+ pi->NspEnv()->eType = InNamespaceTree::t_namespace;
+}
+
+void
+OuputPage_Environment::SetFile_Class( const ary::cpp::Class & i_rClass )
+{
+ csv_assert( pi->NspEnv() );
+ pi->aMyPath.SetFile( ClassFileName(i_rClass.LocalName()) );
+ pi->NspEnv()->pCe = &i_rClass;
+ pi->NspEnv()->eType = InNamespaceTree::t_type;
+}
+
+void
+OuputPage_Environment::SetFile_Enum( const ary::cpp::Enum & i_rEnum )
+{
+ csv_assert( pi->NspEnv() );
+ pi->aMyPath.SetFile( EnumFileName(i_rEnum.LocalName()) );
+ pi->NspEnv()->pCe = &i_rEnum;
+ pi->NspEnv()->eType = InNamespaceTree::t_type;
+}
+
+void
+OuputPage_Environment::SetFile_Typedef( const ary::cpp::Typedef & i_rTypedef )
+{
+ csv_assert( pi->NspEnv() );
+ pi->aMyPath.SetFile( TypedefFileName(i_rTypedef.LocalName()) );
+ pi->NspEnv()->pCe = &i_rTypedef;
+ pi->NspEnv()->eType = InNamespaceTree::t_type;
+}
+
+void
+OuputPage_Environment::SetFile_Operations( const ary::loc::File * i_pFile )
+{
+ csv_assert( pi->NspEnv() );
+ if ( CurClass() != 0 )
+ pi->aMyPath.SetFile( "o.html" );
+ else
+ {
+ csv_assert( i_pFile != 0 );
+ pi->aMyPath.SetFile( HtmlFileName("o-", i_pFile->LocalName()) );
+ }
+ pi->NspEnv()->pCe = 0;
+ pi->NspEnv()->eType = InNamespaceTree::t_operations;
+}
+
+void
+OuputPage_Environment::SetFile_Data( const ary::loc::File * i_pFile )
+{
+ csv_assert( pi->NspEnv() );
+ if ( CurClass() != 0 )
+ pi->aMyPath.SetFile( "d.html" );
+ else
+ {
+ csv_assert( i_pFile != 0 );
+ pi->aMyPath.SetFile( HtmlFileName("d-", i_pFile->LocalName()) );
+ }
+ pi->NspEnv()->pCe = 0;
+ pi->NspEnv()->eType = InNamespaceTree::t_data;
+}
+
+const ary::cpp::Namespace *
+OuputPage_Environment::CurNamespace() const
+{
+ return pi->Namespace();
+}
+
+const ary::cpp::Class *
+OuputPage_Environment::CurClass() const
+{
+ return pi->Class();
+}
+
+const csv::ploc::Path &
+OuputPage_Environment::CurPath() const
+{
+ return pi->aMyPath;
+}
+
+const ary::cpp::Gate &
+OuputPage_Environment::Gate() const
+{
+ return *pi->pGate;
+}
+
+const display::CorporateFrame &
+OuputPage_Environment::Layout() const
+{
+ return *pi->pLayout;
+}
+
+uintt
+OuputPage_Environment::Depth() const
+{
+ return static_cast<uintt>(pi->nDepth);
+}
+
+const String &
+OuputPage_Environment::RepositoryTitle() const
+{
+ return Gate().RepositoryTitle();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/opageenv.hxx b/autodoc/source/display/html/opageenv.hxx
new file mode 100644
index 000000000000..c0bb48ef5962
--- /dev/null
+++ b/autodoc/source/display/html/opageenv.hxx
@@ -0,0 +1,131 @@
+/* -*- 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 ADC_DISPLAY_HTML_OPAGEENV_HXX
+#define ADC_DISPLAY_HTML_OPAGEENV_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <cosv/ploc.hxx>
+ // PARAMETERS
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Gate;
+
+ class Namespace;
+ class Class;
+ class Enum;
+ class Typedef;
+ }
+ namespace loc
+ {
+ class File;
+ }
+}
+namespace display
+{
+ class CorporateFrame;
+}
+
+class OuputPage_Environment
+{
+ public:
+ // LIFECYCLE
+ OuputPage_Environment(
+ const csv::ploc::Path &
+ io_rOutputDir,
+ const ary::cpp::Gate &
+ i_rGate,
+ const display::CorporateFrame &
+ i_rLayout );
+ ~OuputPage_Environment();
+
+ // OPERATIONS
+ void MoveDir_2Root();
+ void MoveDir_2Names();
+ void MoveDir_Down2( /// Only one level.
+ const ary::cpp::Namespace &
+ i_rNsp );
+ void MoveDir_Down2( /// Only one level.
+ const ary::cpp::Class &
+ i_rClass );
+ void MoveDir_2Index();
+ void MoveDir_Up();
+
+ void SetFile_Css();
+ void SetFile_Overview();
+ void SetFile_AllDefs();
+ void SetFile_Index(
+ char i_cLetter );
+ void SetFile_Help();
+ void SetFile_CurNamespace();
+ void SetFile_Class(
+ const ary::cpp::Class &
+ i_rClass );
+ void SetFile_Enum(
+ const ary::cpp::Enum &
+ i_rEnum );
+ void SetFile_Typedef(
+ const ary::cpp::Typedef &
+ i_typedef );
+ void SetFile_Operations(
+ const ary::loc::File *
+ i_pFile = 0 ); /// Only needed for global functions.
+ void SetFile_Data(
+ const ary::loc::File *
+ i_pFile = 0 ); /// Only needed for global variables.
+ // INQUIRY
+ const ary::cpp::Namespace *
+ CurNamespace() const;
+ const ary::cpp::Class *
+ CurClass() const;
+ const csv::ploc::Path &
+ CurPath() const;
+ const ary::cpp::Gate &
+ Gate() const;
+ const display::CorporateFrame &
+ Layout() const;
+ uintt Depth() const;
+ const String & RepositoryTitle() const;
+
+ private:
+ struct CheshireCat;
+ Dyn<CheshireCat> pi;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/outfile.cxx b/autodoc/source/display/html/outfile.cxx
new file mode 100644
index 000000000000..82ab2eac7749
--- /dev/null
+++ b/autodoc/source/display/html/outfile.cxx
@@ -0,0 +1,395 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "outfile.hxx"
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/file.hxx>
+#include <udm/html/htmlitem.hxx>
+#include <toolkit/out_position.hxx>
+#include "strconst.hxx"
+
+
+namespace
+{
+bool bUse_OOoFrameDiv = true;
+const String C_sOOoFrameDiv_CppId("adc-cppref");
+}
+
+
+using namespace csi;
+using csi::xml::AnAttribute;
+
+
+
+#define CRLF "\n"
+
+const char * const
+ C_sStdStyle =
+ "body { background-color:#ffffff; }"CRLF
+ "h1 { font-size:20pt; margin-top:3pt; margin-bottom:7pt; }"CRLF
+ "h2 { font-family:Arial; font-size:16pt; margin-top:3pt; margin-bottom:5pt; }"CRLF
+ "h3 { font-size:13pt; margin-top:2pt; margin-bottom:3pt; }"CRLF
+ "h4 { font-size:10pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "dl { margin-top:1pt; margin-bottom:1pt; }"CRLF
+ "dl.member { margin-top:1pt; margin-bottom:1pt; background-color:#eeeeff; }"CRLF
+ "dt { font-size:10pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "dt.member { font-size:13pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "dt.simple { font-size:10pt; font-weight:normal; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "dd { font-size:10pt; margin-top:1pt; margin-bottom:1pt; }"CRLF
+ "dd.member { font-size:10pt; margin-top:1pt; margin-bottom:1pt; background-color:#ffffff; }"CRLF
+ "p { font-size:10pt; margin-top:3pt; margin-bottom:1pt; }"CRLF
+ "pre { font-family:monospace; font-size:10pt; margin-top:1pt; margin-bottom:1pt; }"CRLF
+ "tr { font-size:10pt; }"CRLF
+ "td { font-size:10pt; }"CRLF
+ CRLF
+ "dt.attention { color:#dd0000; }"CRLF
+ CRLF
+ "div.title { text-align:center; line-height:26pt; background-color:#ccccff; }"CRLF
+ ".subtitle { background-color:#ccccff; }"CRLF
+ CRLF
+ "td.flagname { background-color:#eeeeff; font-family:Arial; font-size:8pt; font-weight:bold; }"CRLF
+ "td.flagyes { font-family:Arial; font-size:8pt; font-weight:bold; }"CRLF
+ "td.flagno { font-family:Arial; font-size:8pt; }"CRLF
+ "td.flagtext { font-family:Arial; font-size:8pt; font-weight:bold; }"CRLF
+ CRLF
+ "td.navimain, td.navimain a"CRLF
+ " { background-color:#eeeeff; color:#000000;"CRLF
+ " font-family:Arial; font-size:12pt; font-weight:bold; }"CRLF
+ "td.navimainself"CRLF
+ " { background-color:#2222ad; color:#ffffff;"CRLF
+ " font-family:Arial; font-size:12pt; font-weight:bold; }"CRLF
+ "td.navimainnone"CRLF
+ " { background-color:#eeeeff; color:#000000;"CRLF
+ " font-family:Arial; font-size:12pt; }"CRLF
+ CRLF
+ "div.define { font-family:Arial; background-color:#ccccff; }"CRLF
+ CRLF
+ ".nqclass { color:#008800; }"CRLF
+ CRLF
+ "h3.help { background-color:#eeeeff; margin-top:12pt; }"CRLF
+ CRLF
+ ".btpubl { color:#33ff33; }"CRLF
+ ".btprot { color:#cc9933; }"CRLF
+ ".btpriv { color:#ff6666; }"CRLF
+ ".btvpubl { color:#33ff33; font-style:italic; }"CRLF
+ ".btvprot { color:#cc9933; font-style:italic; }"CRLF
+ ".btvpriv { color:#ff6666; font-style:italic; }"CRLF
+ ".btself { font-weight:bold; }"CRLF
+ ;
+
+
+const char * const
+ C_sCssExplanations =
+ "/* Explanation of CSS classes:"CRLF
+ CRLF
+ "dl.member provides coloured frame for function descriptions."CRLF
+ "dd.member makes the content of this frame white"CRLF
+ CRLF
+ "dt.attention special colour for @attention remarks"CRLF
+ CRLF
+ "div.title HTML page headline"CRLF
+ ".subtitle headline of lists of members and similar"CRLF
+ CRLF
+ " These are for the flagtables in classes:"CRLF
+ "td.flagname Flag name."CRLF
+ "td.flagyes flag value \"yes\""CRLF
+ "td.flagno flag value \"no\""CRLF
+ "td.flagtext other flag value"CRLF
+ CRLF
+ CRLF
+ " These are for the main navigationbar:"CRLF
+ "td.navimain, td.navimain a"CRLF
+ " Links in navibar."CRLF
+ "td.navimainself Text in navibar which refers to current page."CRLF
+ "td.navimainnone Text which links to nothing."CRLF
+ CRLF
+ CRLF
+ "div.define Subtitles on the #define/macro descriptions page"CRLF
+ CRLF
+ ".nqclass special color for classes in the qualification"CRLF
+ " on top of type pages like in:"CRLF
+ " ::nsp1::nsp2::_ClassXY_::"CRLF
+ CRLF
+ "h3.help Subtitles on the help page"CRLF
+ CRLF
+ " These are for the base class tree on class pages:"CRLF
+ ".btpubl public base class"CRLF
+ ".btprot protected"CRLF
+ ".btpriv private"CRLF
+ ".btvpubl virtual public"CRLF
+ ".btvprot virtual protected"CRLF
+ ".btvpriv virtual private"CRLF
+ ".btself placeholder for currently displayed class"CRLF
+ CRLF
+ "*/"CRLF
+ ;
+
+
+const char * const
+ C_sStdStyle_withDivFrame =
+ "body { background-color:#ffffff; }"CRLF
+ "#adc-cppref h1 { font-size:20pt; margin-top:3pt; margin-bottom:7pt; }"CRLF
+ "#adc-cppref h2 { font-family:Arial; font-size:16pt; margin-top:3pt; margin-bottom:5pt; }"CRLF
+ "#adc-cppref h3 { font-size:13pt; margin-top:2pt; margin-bottom:3pt; }"CRLF
+ "#adc-cppref h4 { font-size:10pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref dl { margin-top:1pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref dl.member { margin-top:1pt; margin-bottom:1pt; background-color:#eeeeff; }"CRLF
+ "#adc-cppref dt { font-size:10pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref dt.member { font-size:13pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref dt.simple { font-size:10pt; font-weight:normal; margin-top:2pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref dd { font-size:10pt; margin-top:1pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref dd.member { font-size:10pt; margin-top:1pt; margin-bottom:1pt; background-color:#ffffff; }"CRLF
+ "#adc-cppref p { font-size:10pt; margin-top:3pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref pre { font-family:monospace; font-size:10pt; margin-top:1pt; margin-bottom:1pt; }"CRLF
+ "#adc-cppref tr { font-size:10pt; }"CRLF
+ "#adc-cppref td { font-size:10pt; }"CRLF
+ CRLF
+ "#adc-cppref dt.attention { color:#dd0000; }"CRLF
+ CRLF
+ "#adc-cppref div.title { text-align:center; line-height:26pt; background-color:#ccccff; }"CRLF
+ "#adc-cppref .subtitle { background-color:#ccccff; }"CRLF
+ CRLF
+ "#adc-cppref td.flagname { background-color:#eeeeff; font-family:Arial; font-size:8pt; font-weight:bold; }"CRLF
+ "#adc-cppref td.flagyes { font-family:Arial; font-size:8pt; font-weight:bold; }"CRLF
+ "#adc-cppref td.flagno { font-family:Arial; font-size:8pt; }"CRLF
+ "#adc-cppref td.flagtext { font-family:Arial; font-size:8pt; font-weight:bold; }"CRLF
+ CRLF
+ "#adc-cppref td.navimain, #adc-cppref td.navimain a"CRLF
+ " { background-color:#eeeeff; color:#000000;"CRLF
+ " font-family:Arial; font-size:12pt; font-weight:bold; }"CRLF
+ "#adc-cppref td.navimainself"CRLF
+ " { background-color:#2222ad; color:#ffffff;"CRLF
+ " font-family:Arial; font-size:12pt; font-weight:bold; }"CRLF
+ "#adc-cppref td.navimainnone"CRLF
+ " { background-color:#eeeeff; color:#000000;"CRLF
+ " font-family:Arial; font-size:12pt; }"CRLF
+ CRLF
+ "#adc-cppref div.define { font-family:Arial; background-color:#ccccff; }"CRLF
+ CRLF
+ "#adc-cppref .nqclass { color:#008800; }"CRLF
+ CRLF
+ "#adc-cppref h3.help { background-color:#eeeeff; margin-top:12pt; }"CRLF
+ CRLF
+ "#adc-cppref .btpubl { color:#33ff33; }"CRLF
+ "#adc-cppref .btprot { color:#cc9933; }"CRLF
+ "#adc-cppref .btpriv { color:#ff6666; }"CRLF
+ "#adc-cppref .btvpubl { color:#33ff33; font-style:italic; }"CRLF
+ "#adc-cppref .btvprot { color:#cc9933; font-style:italic; }"CRLF
+ "#adc-cppref .btvpriv { color:#ff6666; font-style:italic; }"CRLF
+ "#adc-cppref .btself { font-weight:bold; }"CRLF
+ ""CRLF
+ "#adc-cppref table { empty-cells:show; }"CRLF
+ ""CRLF
+ "#adc-cppref .childlist td, "CRLF
+ "#adc-cppref .commentedlinks td, "CRLF
+ "#adc-cppref .memberlist td, "CRLF
+ "#adc-cppref .subtitle td, "CRLF
+ "#adc-cppref .crosstitle td { border: .1pt solid #000000; }"CRLF
+ ""CRLF
+ "#adc-cppref .flag-table td { border: .1pt solid #cccccc; } "CRLF
+ ""CRLF
+ "#adc-cppref .title-table td, "CRLF
+ "#adc-cppref .table-in-method td, "CRLF
+ "#adc-cppref .table-in-data td, "CRLF
+ "#adc-cppref .navimain td, "CRLF
+ "#adc-cppref .navisub td, "CRLF
+ "#adc-cppref .expl-table td, "CRLF
+ "#adc-cppref .param-table td { border: none; }"CRLF
+ ;
+
+
+
+HtmlDocuFile::HtmlDocuFile()
+ : sFilePath(),
+ sTitle(),
+ sLocation(),
+ sCopyright(),
+ nDepthInOutputTree(0),
+ aBodyData(),
+ aBuffer(60000) // Grows dynamically when necessary.
+{
+}
+
+void
+HtmlDocuFile::SetLocation( const csv::ploc::Path & i_rFilePath,
+ uintt i_depthInOutputTree )
+{
+ static StreamStr sPath_(1000);
+ sPath_.seekp(0);
+ i_rFilePath.Get( sPath_ );
+
+ sFilePath = sPath_.c_str();
+ nDepthInOutputTree = i_depthInOutputTree;
+}
+
+void
+HtmlDocuFile::SetTitle( const char * i_sTitle )
+{
+ sTitle = i_sTitle;
+}
+
+void
+HtmlDocuFile::SetCopyright( const char * i_sCopyright )
+{
+ sCopyright = i_sCopyright;
+}
+
+void
+HtmlDocuFile::EmptyBody()
+{
+ aBodyData.SetContent(0);
+
+ if (bUse_OOoFrameDiv)
+ {
+ // Insert <div> tag to allow better formatting for OOo.
+ aBodyData
+ << new xml::XmlCode("<div id=\"")
+ << new xml::XmlCode(C_sOOoFrameDiv_CppId)
+ << new xml::XmlCode("\">\n\n");
+ }
+
+ aBodyData
+ >> *new html::Label( "_top_" )
+ << " ";
+}
+
+bool
+HtmlDocuFile::CreateFile()
+{
+ csv::File aFile(sFilePath, csv::CFM_CREATE);
+ if (NOT aFile.open())
+ {
+ Cerr() << "Can't create file " << sFilePath << "." << Endl();
+ return false;
+ }
+
+ WriteHeader(aFile);
+ WriteBody(aFile);
+
+ // Write end
+ static const char sCompletion[] = "\n</html>\n";
+ aFile.write( sCompletion );
+
+ aFile.close();
+ Cout() << '.' << Flush();
+ return true;
+}
+
+void
+HtmlDocuFile::WriteCssFile( const csv::ploc::Path & i_rFilePath )
+{
+ Cout() << "\nCreate css file ..." << Endl();
+
+ csv::File
+ aCssFile(i_rFilePath, csv::CFM_CREATE);
+ csv::OpenCloseGuard
+ aOpenGuard(aCssFile);
+ if (NOT aOpenGuard)
+ {
+ Cerr() << "Can't create file " << "cpp.css" << "." << Endl();
+ return;
+ }
+
+ aCssFile.write("/* Autodoc css file for C++ documentation */\n\n\n");
+
+ if (bUse_OOoFrameDiv)
+ aCssFile.write(C_sStdStyle_withDivFrame);
+ else
+ aCssFile.write(C_sStdStyle);
+
+ aCssFile.write("\n\n\n");
+ aCssFile.write(C_sCssExplanations);
+}
+
+void
+HtmlDocuFile::WriteHeader( csv::File & io_aFile )
+{
+ aBuffer.reset();
+
+ static const char s1[] =
+ "<html>\n<head>\n"
+ "<title>";
+ static const char s2[] =
+ "</title>\n"
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
+ static const char s3[] =
+ "\">\n</head>\n";
+
+ aBuffer.write( s1 );
+ aBuffer.write( sTitle );
+ aBuffer.write( s2 );
+ aBuffer.write( output::get_UpLink(nDepthInOutputTree) );
+ aBuffer.write( C_sHFN_Css );
+ aBuffer.write( s3 );
+
+ io_aFile.write(aBuffer.c_str(), aBuffer.size());
+}
+
+void
+HtmlDocuFile::WriteBody( csv::File & io_aFile )
+{
+ aBuffer.reset();
+
+ aBodyData
+ >> *new html::Link( "#_top_" )
+ << new html::ClassAttr( "objchapter" )
+ << "Top of Page";
+
+ if ( sCopyright.length() > 0 )
+ {
+ aBodyData
+#ifndef COMPATIBLE_NETSCAPE_47
+ >> *new html::HorizontalLine
+ << new html::SizeAttr( "3" );
+#else
+ << new xml::XmlCode("<hr size=\"3\">");
+#endif
+
+ aBodyData
+ >> *new html::Paragraph
+ << new html::ClassAttr( "copyright" )
+ << new xml::AnAttribute( "align", "center" )
+ << new xml::XmlCode(sCopyright);
+ }
+
+ if (bUse_OOoFrameDiv)
+ {
+ // Insert <div> tag to allow better formatting for OOo.
+ aBodyData
+ << new xml::XmlCode("\n</div> <!-- id=\"")
+ << new xml::XmlCode(C_sOOoFrameDiv_CppId)
+ << new xml::XmlCode("\" -->\n");
+ }
+
+ aBodyData.WriteOut(aBuffer);
+ io_aFile.write(aBuffer.c_str(), aBuffer.size());
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/outfile.hxx b/autodoc/source/display/html/outfile.hxx
new file mode 100644
index 000000000000..033e92954a3d
--- /dev/null
+++ b/autodoc/source/display/html/outfile.hxx
@@ -0,0 +1,89 @@
+/* -*- 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 ADC_DISPLAY_HTML_OUTFILE_HXX
+#define ADC_DISPLAY_HTML_OUTFILE_HXX
+
+// USED SERVICES
+#include <udm/html/htmlitem.hxx>
+#include <cosv/ploc.hxx>
+
+
+namespace csv
+{
+ class File;
+}
+
+
+
+
+class HtmlDocuFile
+{
+ public:
+ // LIFECYCLE
+ HtmlDocuFile();
+
+ void SetLocation(
+ const csv::ploc::Path &
+ i_rFilePath,
+ uintt i_depthInOutputTree );
+ void SetTitle(
+ const char * i_sTitle );
+ void SetCopyright(
+ const char * i_sCopyright );
+ void EmptyBody();
+
+ Html::Body & Body() { return aBodyData; }
+ bool CreateFile();
+
+ static void WriteCssFile(
+ const csv::ploc::Path &
+ i_rFilePath );
+ private:
+ void WriteHeader(
+ csv::File & io_aFile );
+ void WriteBody(
+ csv::File & io_aFile );
+
+ // DATA
+ String sFilePath;
+ String sTitle;
+ String sLocation;
+ String sCopyright;
+ uintt nDepthInOutputTree;
+
+ Html::Body aBodyData;
+ StreamStr aBuffer; // Output buffer, should be transfered into csv::File.
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pagemake.cxx b/autodoc/source/display/html/pagemake.cxx
new file mode 100644
index 000000000000..52d05fb0b19c
--- /dev/null
+++ b/autodoc/source/display/html/pagemake.cxx
@@ -0,0 +1,578 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pagemake.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <display/corframe.hxx>
+#include "hd_chlst.hxx"
+#include "hd_docu.hxx"
+#include "hdimpl.hxx"
+#include "html_kit.hxx"
+#include "navibar.hxx"
+#include "opageenv.hxx"
+#include "outfile.hxx"
+#include "pm_aldef.hxx"
+#include "pm_class.hxx"
+#include "pm_help.hxx"
+#include "pm_index.hxx"
+#include "pm_namsp.hxx"
+#include "pm_start.hxx"
+#include "strconst.hxx"
+
+
+using namespace csi;
+using csi::html::Link;
+using csi::html::HorizontalLine;
+
+
+const int C_nNrOfIndexLetters = 27;
+
+
+template <class SPECIAL_MAKER>
+inline void
+Make_SpecialPage( DYN SPECIAL_MAKER * let_dpMaker )
+{
+ Dyn< SPECIAL_MAKER > pMaker( let_dpMaker );
+ pMaker->MakePage();
+ pMaker = 0;
+}
+
+
+PageDisplay::PageDisplay( OuputPage_Environment & io_rEnv )
+ : HtmlDisplay_Impl( io_rEnv ),
+ pMyFile( new HtmlDocuFile )
+{
+}
+
+PageDisplay::~PageDisplay()
+{
+
+}
+
+void
+PageDisplay::Create_OverviewFile()
+{
+ Env().SetFile_Overview();
+ File().SetLocation( Env().CurPath(), 0 );
+
+ SetupFileOnCurEnv( C_sHFTitle_Overview );
+ Make_SpecialPage( new PageMaker_Overview(*this) );
+ Create_File();
+}
+
+void
+PageDisplay::Create_AllDefsFile()
+{
+ // This method is a provisorium, because later this will
+ // be spreaded over the files.
+
+ Env().MoveDir_2Root();
+ Env().SetFile_AllDefs();
+ File().SetLocation( Env().CurPath(), 0 );
+
+ SetupFileOnCurEnv( "Defines and Macros" );
+ Make_SpecialPage( new PageMaker_AllDefs(*this) );
+ Create_File();
+}
+
+void
+PageDisplay::Create_IndexFiles()
+{
+ Env().MoveDir_2Index();
+
+ for ( int i = 0; i < C_nNrOfIndexLetters; ++i )
+ Create_IndexFile(i);
+}
+
+void
+PageDisplay::Create_HelpFile()
+{
+ Env().SetFile_Help();
+ File().SetLocation( Env().CurPath(), 0 );
+
+ SetupFileOnCurEnv( C_sHFTitle_Help );
+ Make_SpecialPage( new PageMaker_Help(*this) );
+ Create_File();
+}
+
+void
+PageDisplay::Create_NamespaceFile()
+{
+ csv_assert( Env().CurNamespace() != 0 );
+ Env().SetFile_CurNamespace();
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+ if (Env().CurNamespace()->Owner().IsValid())
+ {
+ StreamLock sNsp(100);
+ SetupFileOnCurEnv( sNsp() << C_sHFTypeTitle_Namespace
+ << " "
+ << Env().CurNamespace()->LocalName()
+ << c_str );
+ }
+ else
+ {
+ SetupFileOnCurEnv( C_sHFTitle_GlobalNamespaceCpp );
+ }
+
+ Make_SpecialPage( new PageMaker_Namespace(*this) );
+
+ Create_File();
+}
+
+void
+PageDisplay::Setup_OperationsFile_for( const ary::loc::File & i_rFile )
+{
+ csv_assert( Env().CurNamespace() != 0 );
+ Env().SetFile_Operations(&i_rFile);
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+
+ StreamLock sOpFile(100);
+ SetupFileOnCurEnv( sOpFile() << "Global Functions in Namespace "
+ << Env().CurNamespace()->LocalName()
+ << " in Sourcefile "
+ << i_rFile.LocalName()
+ << c_str );
+ NavigationBar
+ aNavi( Env(),
+ NavigationBar::CEGT_operations );
+ aNavi.Write( CurOut() );
+ CurOut() << new HorizontalLine;
+
+ adcdisp::PageTitle_Std fTitle;
+ csi::xml::Element & rTitle = fTitle( CurOut() );
+ if (Env().CurNamespace()->Owner().IsValid())
+ {
+ rTitle << "Global Functions in Namespace "
+ << Env().CurNamespace()->LocalName();
+ }
+ else
+ {
+ rTitle << "Global Functions in Global Namespace C++";
+ }
+
+ rTitle << new html::LineBreak
+ << "in Sourcefile "
+ << i_rFile.LocalName();
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Setup_OperationsFile_for( const ary::cpp::Class & i_rClass )
+{
+ csv_assert( Env().CurNamespace() != 0 );
+ Env().SetFile_Operations(0);
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+
+ StreamLock sOpFile(100);
+ SetupFileOnCurEnv( sOpFile() << "Methods of Class "
+ << i_rClass.LocalName()
+ << c_str );
+ NavigationBar
+ aNavi( Env(),
+ NavigationBar::CEGT_operations );
+ aNavi.Write( CurOut() );
+ CurOut() << new HorizontalLine;
+
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), "Methods of Class", i_rClass.LocalName() );
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Setup_DataFile_for( const ary::loc::File & i_rFile )
+{
+ csv_assert( Env().CurNamespace() != 0 );
+ Env().SetFile_Data(&i_rFile);
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+
+ StreamLock sDataFile(100);
+ SetupFileOnCurEnv( sDataFile() << "Global Data in Namespace "
+ << Env().CurNamespace()->LocalName()
+ << " in Sourcefile "
+ << i_rFile.LocalName()
+ << c_str );
+ NavigationBar
+ aNavi( Env(),
+ NavigationBar::CEGT_data );
+ aNavi.Write( CurOut() );
+ CurOut() << new HorizontalLine;
+
+ adcdisp::PageTitle_Std fTitle;
+ csi::xml::Element & rTitle = fTitle( CurOut() );
+ if ( Env().CurNamespace()->Owner().IsValid() )
+ {
+ rTitle << "Global Data in Namespace "
+ << Env().CurNamespace()->LocalName();
+ }
+ else
+ {
+ rTitle << "Global Data in Global Namespace C++";
+ }
+
+ rTitle
+ << new html::LineBreak
+ << "in Sourcefile "
+ << i_rFile.LocalName();
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Setup_DataFile_for( const ary::cpp::Class & i_rClass )
+{
+ csv_assert( Env().CurNamespace() != 0 );
+ Env().SetFile_Data(0);
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+
+ StreamLock sDataFile(100);
+ SetupFileOnCurEnv( sDataFile() << "Data of Class "
+ << i_rClass.LocalName()
+ << c_str );
+
+ NavigationBar
+ aNavi( Env(),
+ NavigationBar::CEGT_data );
+ aNavi.Write( CurOut() );
+ CurOut() << new HorizontalLine;
+
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), "Data of Class", i_rClass.LocalName() );
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Create_File()
+{
+ Easy().Leave();
+ File().CreateFile();
+}
+
+void
+PageDisplay::do_Process(const ary::cpp::Class & i_rData)
+{
+ Env().SetFile_Class(i_rData);
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+
+ const char *
+ sTypeTitle = i_rData.ClassKey() == ary::cpp::CK_class
+ ? C_sHFTypeTitle_Class
+ : i_rData.ClassKey() == ary::cpp::CK_struct
+ ? C_sHFTypeTitle_Struct
+ : C_sHFTypeTitle_Union;
+ StreamLock sClassFile(60);
+ SetupFileOnCurEnv( sClassFile() << sTypeTitle
+ << " "
+ << i_rData.LocalName()
+ << c_str );
+
+ Make_SpecialPage( new PageMaker_Class(*this, i_rData) );
+
+ Create_File();
+}
+
+void
+PageDisplay::do_Process(const ary::cpp::Enum & i_rData)
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ Env().SetFile_Enum(i_rData);
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+
+ StreamLock sEnumFile(100);
+ SetupFileOnCurEnv( sEnumFile() << C_sHFTypeTitle_Enum
+ << " "
+ << i_rData.LocalName()
+ << c_str );
+ Write_NavBar_Enum(i_rData);
+ Write_TopArea_Enum(i_rData);
+ Write_DocuArea_Enum(i_rData);
+ Write_ChildList_Enum(i_rData);
+
+ Create_File();
+}
+
+void
+PageDisplay::do_Process(const ary::cpp::Typedef & i_rData)
+{
+ if ( Ce_IsInternal(i_rData) )
+ return;
+
+ Env().SetFile_Typedef(i_rData);
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+
+ StreamLock sTypedefFile(100);
+ SetupFileOnCurEnv( sTypedefFile() << C_sHFTypeTitle_Typedef
+ << " "
+ << i_rData.LocalName()
+ << c_str );
+ Write_NavBar_Typedef(i_rData);
+ Write_TopArea_Typedef(i_rData);
+ Write_DocuArea_Typedef(i_rData);
+
+
+ Create_File();
+}
+
+void
+PageDisplay::Write_NameChainWithLinks( const ary::cpp::CodeEntity & i_rCe )
+{
+ if ( Env().CurNamespace()->Id() != i_rCe.Id() )
+ {
+ RecursiveWrite_NamespaceLink( Env().CurNamespace() );
+ if ( Env().CurClass() != 0 )
+ {
+ CurOut() << new html::Sbr;
+ RecursiveWrite_ClassLink( Env().CurClass(), 1 );
+ }
+ }
+ else
+ {
+ RecursiveWrite_NamespaceLink( Env().CurNamespace()->Parent() );
+ }
+}
+
+const ary::cpp::Gate *
+PageDisplay::inq_Get_ReFinder() const
+{
+ return &Env().Gate();
+}
+
+void
+PageDisplay::RecursiveWrite_NamespaceLink( const ary::cpp::Namespace * i_pNamespace )
+{
+ if ( i_pNamespace == 0 )
+ {
+ return;
+ }
+ else if (NOT i_pNamespace->Owner().IsValid())
+ { // Global namespace:
+ StreamLock sNspDir(50);
+ CurOut()
+ >> *new Link( PathPerRoot(Env(),
+ sNspDir() << C_sDIR_NamespacesCpp
+ << "/"
+ << C_sHFN_Namespace
+ << c_str) )
+ << new xml::AnAttribute( "alt", C_sHFTitle_GlobalNamespaceCpp )
+ >> *new html::Font
+ << new html::SizeAttr("+1")
+ >> *new html::Bold
+ << "::";
+ CurOut()
+ << " ";
+ return;
+ }
+ else
+ {
+ RecursiveWrite_NamespaceLink( i_pNamespace->Parent() );
+ }
+
+ uintt nLevelDistance = Env().Depth() - ( i_pNamespace->Depth() + 1 );
+ csv_assert( nLevelDistance < 100 );
+ CurOut()
+ >> *new Link( PathPerLevelsUp(nLevelDistance, C_sHFN_Namespace) )
+ << new xml::AnAttribute( "alt", C_sHFTypeTitle_Namespace)
+ >> *new html::Font
+ << new html::SizeAttr("+1")
+ >> *new html::Bold
+ << i_pNamespace->LocalName();
+ CurOut()
+ >> *new html::Font
+ << new html::SizeAttr("+1")
+ << " :: ";
+}
+
+void
+PageDisplay::RecursiveWrite_ClassLink( const ary::cpp::Class * i_pClass,
+ uintt i_nLevelDistance )
+{
+ if ( i_pClass == 0 )
+ return;
+
+ if ( i_pClass->Protection() != ary::cpp::PROTECT_global )
+ {
+ RecursiveWrite_ClassLink(
+ dynamic_cast< const ary::cpp::Class* >(
+ Env().Gate().Ces().Search_Ce(i_pClass->Owner())),
+ i_nLevelDistance + 1 );
+ }
+
+ CurOut()
+ >> *new Link( Path2Class(i_nLevelDistance, i_pClass->LocalName()) )
+ << new html::ClassAttr("nqclass")
+ << i_pClass->LocalName()
+ << " :: ";
+}
+
+void
+PageDisplay::SetupFileOnCurEnv( const char * i_sTitle )
+{
+ File().SetLocation( Env().CurPath(), Env().Depth() );
+ File().SetTitle( i_sTitle );
+ File().SetCopyright( Env().Layout().CopyrightText() );
+ File().EmptyBody();
+
+ // This sets CurOut() to the contents of <body></body>
+ // in File() :
+ Easy().Enter( File().Body() );
+}
+
+void
+PageDisplay::Write_NavBar_Enum( const ary::cpp::Enum & i_rData )
+{
+ NavigationBar aNavi( Env(), i_rData );
+ aNavi.MakeSubRow("List of");
+ aNavi.AddItem( C_sTitle_EnumValues, C_sLabel_EnumValues, true );
+ aNavi.Write( CurOut(), true );
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Write_TopArea_Enum( const ary::cpp::Enum & i_rData )
+{
+ Write_NameChainWithLinks( i_rData );
+
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), C_sHFTypeTitle_Enum, i_rData.LocalName() );
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Write_DocuArea_Enum( const ary::cpp::Enum & i_rData )
+{
+ Docu_Display aDocuShow( Env() );
+
+ aDocuShow.Assign_Out(CurOut());
+ aDocuShow.Process(i_rData.Docu());
+ aDocuShow.Unassign_Out();
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Write_ChildList_Enum( const ary::cpp::Enum & i_rData )
+{
+ bool bChildrenExist = false;
+ ChildList_Display::Area_Result
+ aResult( bChildrenExist, CurOut() );
+
+ ChildList_Display aDisplay(Env(), i_rData);
+ aDisplay.Run_Simple( aResult,
+ ary::cpp::Enum::SLOT_Values,
+ C_sLabel_EnumValues,
+ C_sTitle_EnumValues );
+
+ if (NOT bChildrenExist)
+ CurOut() >> *new html::Headline(4) << "This enum has no values.";
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Write_NavBar_Typedef( const ary::cpp::Typedef & i_rData )
+{
+ NavigationBar aNavi( Env(), i_rData );
+ aNavi.Write( CurOut(), true );
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Write_TopArea_Typedef( const ary::cpp::Typedef & i_rData )
+{
+ Write_NameChainWithLinks( i_rData );
+
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), C_sHFTypeTitle_Typedef, i_rData.LocalName() );
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Write_DocuArea_Typedef( const ary::cpp::Typedef & i_rData )
+{
+ adcdisp::ExplanationList aDef( CurOut() );
+ aDef.AddEntry("Definition:");
+ xml::Element & rDef = aDef.Def();
+
+ ary::cpp::Type_id
+ nDefiningType = i_rData.DescribingType();
+
+ const ary::cpp::CodeEntity *
+ pRelatedCe = Env().Gate().Search_RelatedCe(nDefiningType);
+ if ( pRelatedCe != 0 )
+ {
+ const char * sTypeKey = Get_TypeKey(*pRelatedCe);
+ if ( NOT csv::no_str(sTypeKey) )
+ rDef << sTypeKey << " ";
+ }
+
+ dshelp::Get_LinkedTypeText( rDef, Env(), nDefiningType );
+
+ Docu_Display aDocuShow( Env() );
+
+ aDocuShow.Assign_Out(CurOut());
+ aDocuShow.Process(i_rData.Docu());
+ aDocuShow.Unassign_Out();
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageDisplay::Create_IndexFile( int i_nLetter )
+{
+ static char aLetters[C_nNrOfIndexLetters+1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_";
+ csv_assert( 0 <= i_nLetter AND i_nLetter < C_nNrOfIndexLetters );
+
+ char cCurLetter = aLetters[i_nLetter];
+ Env().SetFile_Index( cCurLetter );
+
+ static char sIndexFileTitle[] = "Global Index X";
+ const int nPositionOfLetterInTitle = 13;
+ sIndexFileTitle[nPositionOfLetterInTitle] = cCurLetter;
+ SetupFileOnCurEnv( sIndexFileTitle );
+
+ Make_SpecialPage( new PageMaker_Index(*this, cCurLetter ) );
+
+ Create_File();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pagemake.hxx b/autodoc/source/display/html/pagemake.hxx
new file mode 100644
index 000000000000..72cdbe56e739
--- /dev/null
+++ b/autodoc/source/display/html/pagemake.hxx
@@ -0,0 +1,167 @@
+/* -*- 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 ADC_DISPLAY_HTML_PAGEMAKE_HXX
+#define ADC_DISPLAY_HTML_PAGEMAKE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/ary_disp.hxx>
+#include <cosv/tpl/processor.hxx>
+#include "hdimpl.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/cpp/c_namesp.hxx>
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Namespace;
+ class Class;
+ class Enum;
+ class Typedef;
+ }
+ namespace loc
+ {
+ class File;
+ }
+}
+
+
+class OuputPage_Environment;
+class HtmlDocuFile;
+
+
+
+class PageDisplay : public ary::Display,
+ public csv::ConstProcessor<ary::cpp::Class>,
+ public csv::ConstProcessor<ary::cpp::Enum>,
+ public csv::ConstProcessor<ary::cpp::Typedef>,
+ public HtmlDisplay_Impl
+{
+ public:
+ PageDisplay(
+ OuputPage_Environment &
+ io_rEnv );
+ virtual ~PageDisplay();
+
+ void Create_OverviewFile();
+ void Create_AllDefsFile();
+ void Create_IndexFiles();
+ void Create_HelpFile();
+
+ void Create_NamespaceFile();
+
+ void Setup_OperationsFile_for(
+ const ary::loc::File &
+ i_rFile );
+ void Setup_OperationsFile_for(
+ const ary::cpp::Class &
+ i_rClass );
+ void Setup_DataFile_for(
+ const ary::loc::File &
+ i_rFile );
+ void Setup_DataFile_for(
+ const ary::cpp::Class &
+ i_rClass );
+ /// Used with Setup_OperatonsFile_for().
+ void Create_File();
+
+
+ // Interface for Children of SpecializedPageMaker:
+ void Write_NameChainWithLinks(
+ const ary::cpp::CodeEntity &
+ i_rCe );
+
+ // Necessary, to call Process() on this class.
+ using csv::ConstProcessor<ary::cpp::Class>::Process;
+ using csv::ConstProcessor<ary::cpp::Enum>::Process;
+ using csv::ConstProcessor<ary::cpp::Typedef>::Process;
+
+ private:
+ // Interface csv::ConstProcessor<>:
+ virtual void do_Process(
+ const ary::cpp::Class &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Enum &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Typedef &
+ i_rData );
+ // Interface ary::cpp::Display:
+ virtual const ary::cpp::Gate *
+ inq_Get_ReFinder() const;
+ // Locals
+ HtmlDocuFile & File() { return *pMyFile; }
+ void RecursiveWrite_NamespaceLink(
+ const ary::cpp::Namespace *
+ i_pNamespace );
+ void RecursiveWrite_ClassLink(
+ const ary::cpp::Class *
+ i_pClass,
+ uintt i_nLevelDistance );
+ void SetupFileOnCurEnv(
+ const char * i_sTitle );
+ void Write_NavBar_Enum(
+ const ary::cpp::Enum &
+ i_rData );
+ void Write_TopArea_Enum(
+ const ary::cpp::Enum &
+ i_rData );
+ void Write_DocuArea_Enum(
+ const ary::cpp::Enum &
+ i_rData );
+ void Write_ChildList_Enum(
+ const ary::cpp::Enum &
+ i_rData );
+ void Write_NavBar_Typedef(
+ const ary::cpp::Typedef &
+ i_rData );
+ void Write_TopArea_Typedef(
+ const ary::cpp::Typedef &
+ i_rData );
+ void Write_DocuArea_Typedef(
+ const ary::cpp::Typedef &
+ i_rData );
+ void Create_IndexFile(
+ int i_nLetter );
+
+ // DATA
+ Dyn<HtmlDocuFile> pMyFile;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_aldef.cxx b/autodoc/source/display/html/pm_aldef.cxx
new file mode 100644
index 000000000000..7669ba4ef3a7
--- /dev/null
+++ b/autodoc/source/display/html/pm_aldef.cxx
@@ -0,0 +1,248 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pm_aldef.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_define.hxx>
+#include <ary/cpp/c_macro.hxx>
+#include <ary/cpp/cp_def.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/loc/locp_le.hxx>
+#include <ary/getncast.hxx>
+#include "hd_docu.hxx"
+#include "html_kit.hxx"
+#include "navibar.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+#include "strconst.hxx"
+
+
+using namespace csi;
+using csi::html::HorizontalLine;
+using csi::html::Link;
+using csi::html::Label;
+using csi::html::AlignAttr;
+
+
+
+PageMaker_AllDefs::PageMaker_AllDefs( PageDisplay & io_rPage )
+ : SpecializedPageMaker(io_rPage),
+ pDocuDisplay( new Docu_Display(io_rPage.Env()) ),
+ pNavi(0)
+{
+}
+
+PageMaker_AllDefs::~PageMaker_AllDefs()
+{
+}
+
+void
+PageMaker_AllDefs::MakePage()
+{
+ pNavi = new NavigationBar( Env(), NavigationBar::LOC_AllDefs );
+ Write_NavBar();
+
+ Write_TopArea();
+
+ Write_DefinesList();
+ Write_MacrosList();
+
+ pNavi->Write_SubRows();
+}
+
+void
+PageMaker_AllDefs::Write_NavBar()
+{
+ pNavi->MakeSubRow( "" );
+ pNavi->AddItem( "Defines", "defines", true );
+ pNavi->AddItem( "Macros", "macros", true );
+ pNavi->Write( CurOut() );
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_AllDefs::Write_TopArea()
+{
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), "Defines and ", "Macros" );
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_AllDefs::Write_DocuArea()
+{
+ // Not needed.
+}
+
+void
+PageMaker_AllDefs::Write_DefinesList()
+{
+ CurOut()
+ << new html::LineBreak
+ << new html::LineBreak
+ >> *new xml::AnElement("div")
+ << new html::ClassAttr("define")
+ >> *new html::Label("defines")
+ >> *new html::Headline(3)
+ << "Defines";
+
+ ary::cpp::DefsResultList
+ aAllDefines = Env().Gate().Defs().AllDefines();
+ ary::cpp::DefsConstIterator
+ itEnd = aAllDefines.end();
+
+ if (aAllDefines.begin() != itEnd)
+ {
+ for ( ary::cpp::DefsConstIterator it = aAllDefines.begin();
+ it != itEnd;
+ ++it )
+ {
+ Write_Define(*it);
+ }
+ }
+ else
+ {
+ CurOut() << "None.";
+ }
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_AllDefs::Write_MacrosList()
+
+{
+ CurOut()
+ << new html::LineBreak
+ << new html::LineBreak
+ >> *new xml::AnElement("div")
+ << new html::ClassAttr("define")
+ >> *new html::Label("macros")
+ >> *new html::Headline(3)
+ << "Macros";
+
+ ary::cpp::DefsResultList
+ aAllMacros = Env().Gate().Defs().AllMacros();
+ ary::cpp::DefsConstIterator
+ itEnd = aAllMacros.end();
+
+ if (aAllMacros.begin() != itEnd)
+ {
+ for ( ary::cpp::DefsConstIterator it = aAllMacros.begin();
+ it != itEnd;
+ ++it )
+ {
+ Write_Macro(*it);
+ }
+ }
+ else
+ {
+ CurOut() << "None.";
+ }
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_AllDefs::Write_Define(De_id i_nId)
+{
+ csv_assert( ary::is_type<ary::cpp::Define>( Env().Gate().Defs().Find_Def(i_nId)) );
+ const ary::cpp::Define &
+ rDef = static_cast< const ary::cpp::Define& >( Env().Gate().Defs().Find_Def(i_nId) );
+
+ CurOut() << new html::HorizontalLine;
+
+ adcdisp::ExplanationList aDocu( CurOut(), true );
+ aDocu.AddEntry();
+
+ aDocu.Term()
+ >> *new html::Label( rDef.LocalName() )
+ << " ";
+ aDocu.Term()
+ << rDef.LocalName();
+
+ Write_DefsDocu( aDocu.Def(), rDef );
+}
+
+void
+PageMaker_AllDefs::Write_Macro(De_id i_nId)
+{
+ csv_assert( Env().Gate().Defs().Find_Def(i_nId).AryClass() == ary::cpp::Macro::class_id );
+ const ary::cpp::Macro &
+ rDef = static_cast< const ary::cpp::Macro& >( Env().Gate().Defs().Find_Def(i_nId) );
+
+ CurOut() << new html::HorizontalLine;
+
+ adcdisp::ExplanationList aDocu( CurOut(), true );
+ aDocu.AddEntry();
+
+ aDocu.Term()
+ >> *new html::Label( rDef.LocalName() )
+ << " ";
+ aDocu.Term()
+ << rDef.LocalName()
+ << "(";
+ WriteOut_TokenList( aDocu.Term(), rDef.Params(), ", " );
+ aDocu.Term()
+ << ")";
+
+ Write_DefsDocu( aDocu.Def(), rDef );
+}
+
+
+void
+PageMaker_AllDefs::Write_DefsDocu( csi::xml::Element & o_rOut,
+ const ary::cpp::DefineEntity & i_rTextReplacement )
+{
+ if ( i_rTextReplacement.DefinitionText().size() > 0 )
+ {
+ EraseLeadingSpace( *const_cast< String * >(
+ &(*i_rTextReplacement.DefinitionText().begin())
+ ) );
+ }
+
+ adcdisp::ExplanationTable rList( o_rOut );
+
+ rList.AddEntry( "Defined As" );
+ WriteOut_TokenList( rList.Def(), i_rTextReplacement.DefinitionText(), " " );
+
+ const ary::loc::File &
+ rFile = Env().Gate().Locations().Find_File( i_rTextReplacement.Location() );
+ rList.AddEntry( "In File" );
+ rList.Def() << rFile.LocalName();
+
+ ShowDocu_On( o_rOut, *pDocuDisplay, i_rTextReplacement );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_aldef.hxx b/autodoc/source/display/html/pm_aldef.hxx
new file mode 100644
index 000000000000..8f01cbb7a28a
--- /dev/null
+++ b/autodoc/source/display/html/pm_aldef.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ADC_DISPLAY_HTML_PM_ALDEF_HXX
+#define ADC_DISPLAY_HTML_PM_ALDEF_HXX
+
+// BASE CLASSES
+#include "pm_base.hxx"
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+using ary::cpp::De_id;
+
+namespace ary
+{
+ namespace cpp
+ {
+ class DefineEntity;
+ }
+}
+
+class Docu_Display;
+class NavigationBar;
+
+
+
+
+
+class PageMaker_AllDefs : public SpecializedPageMaker
+{
+ public:
+ PageMaker_AllDefs(
+ PageDisplay & io_rPage );
+
+ virtual ~PageMaker_AllDefs();
+
+ virtual void MakePage();
+
+ private:
+ typedef std::vector<De_id> List_Ids;
+ typedef List_Ids::const_iterator ids_iterator;
+
+ virtual void Write_NavBar();
+ virtual void Write_TopArea();
+ virtual void Write_DocuArea();
+ virtual void Write_DefinesList();
+ virtual void Write_MacrosList();
+ void Write_Define(
+ De_id i_nId );
+ void Write_Macro(
+ De_id i_nId );
+ void Write_DefsDocu(
+ csi::xml::Element & o_rOut,
+ const ary::cpp::DefineEntity &
+ i_rTextReplacement );
+
+ // DATA
+ Dyn<Docu_Display> pDocuDisplay;
+ Dyn<NavigationBar> pNavi;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_base.cxx b/autodoc/source/display/html/pm_base.cxx
new file mode 100644
index 000000000000..ae045bd3b1de
--- /dev/null
+++ b/autodoc/source/display/html/pm_base.cxx
@@ -0,0 +1,79 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pm_base.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+
+
+//******************** SpecializedPageMaker *********************//
+
+SpecializedPageMaker::SpecializedPageMaker( PageDisplay & io_rPage )
+ : pEnv( &io_rPage.Env() ),
+ pCurOut( &io_rPage.CurOut() ),
+ pPage( &io_rPage )
+{
+}
+
+void
+SpecializedPageMaker::Write_NavBar()
+{
+ // Dummy
+}
+
+void
+SpecializedPageMaker::Write_TopArea()
+{
+ // Dummy
+}
+
+void
+SpecializedPageMaker::Write_DocuArea()
+{
+ // Dummy
+}
+
+//void
+//SpecializedPageMaker::Write_ChildList( ary::SlotAccessId ,
+// const char * ,
+// const char * )
+//{
+// // Dummy
+//}
+
+csi::xml::Element &
+SpecializedPageMaker::CurOut()
+{
+ return Page().CurOut();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_base.hxx b/autodoc/source/display/html/pm_base.hxx
new file mode 100644
index 000000000000..2afa8a77cdfc
--- /dev/null
+++ b/autodoc/source/display/html/pm_base.hxx
@@ -0,0 +1,90 @@
+/* -*- 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 ADC_DISPLAY_PM_BASE_HXX
+#define ADC_DISPLAY_PM_BASE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include "hdimpl.hxx"
+
+
+
+class OuputPage_Environment;
+namespace csi
+{
+ namespace xml
+ {
+ class Element;
+ }
+}
+class PageDisplay;
+
+
+/** Interface for making a special kind of HTML-Page
+*/
+class SpecializedPageMaker
+{
+ public:
+ virtual ~SpecializedPageMaker() {}
+
+ virtual void MakePage() = 0;
+
+ virtual void Write_NavBar();
+ virtual void Write_TopArea();
+ virtual void Write_DocuArea();
+// virtual void Write_ChildList(
+// ary::SlotAccessId i_nSlot,
+// const char * i_nListTitle,
+// const char * i_nLabel );
+
+ protected:
+ SpecializedPageMaker(
+ PageDisplay & io_rPage );
+
+ OuputPage_Environment &
+ Env() const { return *pEnv; }
+ csi::xml::Element & CurOut();
+ PageDisplay & Page() { return *pPage; }
+
+ private:
+ OuputPage_Environment *
+ pEnv;
+ csi::xml::Element * pCurOut;
+ PageDisplay * pPage;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_class.cxx b/autodoc/source/display/html/pm_class.cxx
new file mode 100644
index 000000000000..16c4fe9a9aea
--- /dev/null
+++ b/autodoc/source/display/html/pm_class.cxx
@@ -0,0 +1,813 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pm_class.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/loc/locp_le.hxx>
+#include <ary/getncast.hxx>
+#include "hd_chlst.hxx"
+#include "hd_docu.hxx"
+#include "hdimpl.hxx"
+#include "html_kit.hxx"
+#include "navibar.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+#include "strconst.hxx"
+
+using namespace adcdisp;
+
+using namespace csi;
+using csi::html::HorizontalLine;
+using csi::html::LineBreak;
+using csi::html::Link;
+using csi::html::Table;
+using csi::html::TableRow;
+using csi::html::TableCell;
+
+using ary::cpp::CesConstIterator;
+using ary::doc::OldCppDocu;
+
+const char * const C_sTitle_InnerClasses = "Classes";
+const char * const C_sTitle_InnerStructs = "Structs";
+const char * const C_sTitle_InnerUnions = "Unions";
+const char * const C_sTitle_Methods = "Methods";
+const char * const C_sTitle_StaticMethods = "Static Methods";
+const char * const C_sTitle_Data = "Data";
+const char * const C_sTitle_StaticData = "Static Data";
+
+const char * const C_sLabel_StaticOperations = "static_ops";
+const char * const C_sLabel_StaticVariables = "static_vars";
+
+const char * const C_sTitlePublic = "Public Members";
+const char * const C_sTitleProtected = "Protected Members";
+const char * const C_sTitlePrivate = "Private Members";
+const char * const C_sMprTitles[3] = { C_sTitlePublic,
+ C_sTitleProtected,
+ C_sTitlePrivate
+ };
+const char * const C_sSummaryTitlePublic = "Public Members";
+const char * const C_sSummaryTitleProtected = "Protected Members";
+const char * const C_sSummaryTitlePrivate = "Private Members";
+const char *
+ C_sMprSummaryTitles[3] =
+ { C_sSummaryTitlePublic, C_sSummaryTitleProtected, C_sSummaryTitlePrivate };
+const char *
+ C_sMprPrefixes[3] =
+ { "publ_", "prot_", "priv_" };
+const char *
+ C_sSummaryItems_Titles[PageMaker_Class::cl_MAX] =
+ { C_sTitle_InnerClasses, C_sTitle_InnerStructs, C_sTitle_InnerUnions,
+ C_sTitle_Enums, C_sTitle_Typedefs,
+ C_sTitle_Methods, C_sTitle_StaticMethods, C_sTitle_Data, C_sTitle_StaticData };
+const char *
+ C_sSummaryItems_Labels[PageMaker_Class::cl_MAX] =
+ { C_sLabel_Classes, C_sLabel_Structs, C_sLabel_Unions,
+ C_sLabel_Enums, C_sLabel_Typedefs,
+ C_sLabel_Operations, C_sLabel_StaticOperations,
+ C_sLabel_Variables, C_sLabel_StaticVariables };
+
+
+const ary::cpp::E_Protection
+ aProt[3] = { ary::cpp::PROTECT_public,
+ ary::cpp::PROTECT_protected,
+ ary::cpp::PROTECT_private };
+
+
+PageMaker_Class::PageMaker_Class( PageDisplay & io_rPage,
+ const ary::cpp::Class & i_rClass )
+ : SpecializedPageMaker(io_rPage),
+ pMe( &i_rClass ),
+ pChildDisplay( new ChildList_Display(io_rPage.Env(), i_rClass) ),
+ pNavi(0)
+ // pProtectionArea,
+ // bChildLists_Exist
+{
+ int i_max = 3 * cl_MAX;
+ for (int i = 0; i < i_max; i++)
+ {
+ bChildLists_Exist[i] = false;
+ } // end for
+}
+
+PageMaker_Class::~PageMaker_Class()
+{
+}
+
+void
+PageMaker_Class::MakePage()
+{
+ pNavi = new NavigationBar( Env(), Me() );
+
+ Write_NavBar();
+ Write_TopArea();
+ Write_DocuArea();
+ Write_ChildLists();
+
+ pNavi->Write_SubRows();
+ pNavi = 0;
+}
+
+void
+PageMaker_Class::Write_NavBar()
+{
+ NavigationBar aNavi( Env(), Me() );
+ pNavi->Write( CurOut() );
+ CurOut() << new HorizontalLine;
+}
+
+inline bool
+IsInterface(const ary::doc::Documentation & i_doc)
+{
+ const OldCppDocu *
+ doc = Get_CppDocu(i_doc);
+ return doc != 0
+ ? doc->IsInterface()
+ : false;
+}
+
+void
+PageMaker_Class::Write_TopArea()
+{
+ TemplateClause fTemplateClause;
+ PageTitle_Std fTitle;
+
+ Page().Write_NameChainWithLinks( Me() );
+
+ fTemplateClause( CurOut(), Me().TemplateParameters() );
+ fTitle( CurOut(), Get_ClassTypeKey(Me()), Me().LocalName() );
+
+ CurOut() << new HorizontalLine;
+
+ Write_BaseHierarchy();
+ Write_DerivedList();
+
+ CurOut() << new LineBreak;
+
+ adcdisp::FlagTable
+ aFlags( CurOut(), 4 );
+ aFlags.SetColumn( 0, "virtual",
+ Me().Virtuality() != ary::cpp::VIRTUAL_none );
+ aFlags.SetColumn( 1, "abstract",
+ Me().Virtuality() == ary::cpp::VIRTUAL_abstract );
+ aFlags.SetColumn( 2, "interface",
+ IsInterface(Me().Docu())
+ OR Me().Virtuality() == ary::cpp::VIRTUAL_abstract );
+ aFlags.SetColumn( 3, "template",
+ Me().TemplateParameters().size() > 0 );
+}
+
+void
+PageMaker_Class::Write_DocuArea()
+{
+ Docu_Display aDocuShow( Env() );
+
+ aDocuShow.Assign_Out(CurOut());
+ Me().Accept( aDocuShow );
+ aDocuShow.Unassign_Out();
+
+ ary::loc::File &
+ rFile = Env().Gate().Locations().Find_File( Me().Location() );
+
+ adcdisp::ExplanationList
+ aFileText( CurOut() );
+ aFileText.AddEntry("File");
+ aFileText.Def()
+ << rFile.LocalName();
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_Class::Write_ChildLists()
+{
+ int i_max = 3 * cl_MAX;
+ for (int i = 0; i < i_max; i++)
+ {
+ bChildLists_Exist[i] = false;
+ } // end for
+
+ csi::html::DefListDefinition &
+ rPublic = Setup_MemberSegment_Out( mp_public );
+ csi::html::DefListDefinition &
+ rProtected = Setup_MemberSegment_Out( mp_protected );
+ csi::html::DefListDefinition &
+ rPrivate = Setup_MemberSegment_Out( mp_private );
+
+ Write_ChildList_forClasses( rPublic,
+ rProtected,
+ rPrivate,
+ C_sLabel_Classes,
+ C_sTitle_InnerClasses,
+ ary::cpp::CK_class );
+ Write_ChildList_forClasses( rPublic,
+ rProtected,
+ rPrivate,
+ C_sLabel_Structs,
+ C_sTitle_InnerStructs,
+ ary::cpp::CK_struct );
+ Write_ChildList_forClasses( rPublic,
+ rProtected,
+ rPrivate,
+ C_sLabel_Unions,
+ C_sTitle_InnerUnions,
+ ary::cpp::CK_union );
+
+ Write_ChildList( ary::cpp::Class::SLOT_Enums,
+ cl_Enums,
+ C_sLabel_Enums,
+ C_sTitle_Enums,
+ rPublic,
+ rProtected,
+ rPrivate );
+ Write_ChildList( ary::cpp::Class::SLOT_Typedefs,
+ cl_Typedefs,
+ C_sLabel_Typedefs,
+ C_sTitle_Typedefs,
+ rPublic,
+ rProtected,
+ rPrivate );
+
+ Write_ChildList( ary::cpp::Class::SLOT_Operations,
+ cl_Operations,
+ C_sLabel_Operations,
+ C_sTitle_Methods,
+ rPublic,
+ rProtected,
+ rPrivate );
+ Write_ChildList( ary::cpp::Class::SLOT_StaticOperations,
+ cl_StaticOperations,
+ C_sLabel_StaticOperations,
+ C_sTitle_StaticMethods,
+ rPublic,
+ rProtected,
+ rPrivate );
+ Write_ChildList( ary::cpp::Class::SLOT_Data,
+ cl_Data,
+ C_sLabel_Variables,
+ C_sTitle_Data,
+ rPublic,
+ rProtected,
+ rPrivate );
+ Write_ChildList( ary::cpp::Class::SLOT_StaticData,
+ cl_StaticData,
+ C_sLabel_StaticVariables,
+ C_sTitle_StaticData,
+ rPublic,
+ rProtected,
+ rPrivate );
+
+ Create_NaviSubRow(mp_public); // Also puts out or deletes pPublic.
+ Create_NaviSubRow(mp_protected); // Also puts out or deletes pProtected.
+ Create_NaviSubRow(mp_private); // Also puts out or deletes pPrivate.
+}
+
+void
+PageMaker_Class::Write_ChildList( ary::SlotAccessId i_nSlot,
+ E_ChidList i_eChildListIndex,
+ const char * i_sLabel,
+ const char * i_sListTitle,
+ csi::xml::Element & o_rPublic,
+ csi::xml::Element & o_rProtected,
+ csi::xml::Element & o_rPrivate )
+
+{
+ bool bPublic_ChildrenExist = false;
+ bool bProtected_ChildrenExist = false;
+ bool bPrivate_ChildrenExist = false;
+
+ ChildList_Display::Area_Result
+ aPublic_Result( bPublic_ChildrenExist, o_rPublic );
+ ChildList_Display::Area_Result
+ aProtected_Result( bProtected_ChildrenExist, o_rProtected );
+ ChildList_Display::Area_Result
+ aPrivate_Result( bPrivate_ChildrenExist, o_rPrivate );
+
+ String sLabelPublic = ChildListLabel(i_sLabel, mp_public);
+ String sLabelProtected = ChildListLabel(i_sLabel, mp_protected);
+ String sLabelPrivate = ChildListLabel(i_sLabel, mp_private);
+
+ pChildDisplay->Run_Members( aPublic_Result,
+ aProtected_Result,
+ aPrivate_Result,
+ i_nSlot,
+ sLabelPublic,
+ sLabelProtected,
+ sLabelPrivate,
+ i_sListTitle );
+
+ bChildLists_Exist[i_eChildListIndex]
+ = bPublic_ChildrenExist;
+ bChildLists_Exist[i_eChildListIndex + cl_MAX]
+ = bProtected_ChildrenExist;
+ bChildLists_Exist[i_eChildListIndex + 2*cl_MAX]
+ = bPrivate_ChildrenExist;
+
+ if (bPublic_ChildrenExist)
+ o_rPublic << new HorizontalLine;
+ if (bProtected_ChildrenExist)
+ o_rProtected << new HorizontalLine;
+ if (bPrivate_ChildrenExist)
+ o_rPrivate << new HorizontalLine;
+}
+
+void
+PageMaker_Class::Write_ChildList_forClasses( csi::xml::Element & o_rPublic,
+ csi::xml::Element & o_rProtected,
+ csi::xml::Element & o_rPrivate,
+ const char * i_sLabel,
+ const char * i_sListTitle,
+ ary::cpp::E_ClassKey i_eFilter )
+{
+ bool bPublic_ChildrenExist = false;
+ bool bProtected_ChildrenExist = false;
+ bool bPrivate_ChildrenExist = false;
+
+ ChildList_Display::Area_Result
+ aPublic_Result( bPublic_ChildrenExist, o_rPublic );
+ ChildList_Display::Area_Result
+ aProtected_Result( bProtected_ChildrenExist, o_rProtected );
+ ChildList_Display::Area_Result
+ aPrivate_Result( bPrivate_ChildrenExist, o_rPrivate );
+
+ String sLabelPublic = ChildListLabel(i_sLabel, mp_public);
+ String sLabelProtected = ChildListLabel(i_sLabel, mp_protected);
+ String sLabelPrivate = ChildListLabel(i_sLabel, mp_private);
+
+ pChildDisplay->Run_MemberClasses( aPublic_Result,
+ aProtected_Result,
+ aPrivate_Result,
+ ary::cpp::Class::SLOT_NestedClasses,
+ sLabelPublic,
+ sLabelProtected,
+ sLabelPrivate,
+ i_sListTitle,
+ i_eFilter );
+
+ bChildLists_Exist[int(cl_NestedClasses)+int(i_eFilter)]
+ = bPublic_ChildrenExist;
+ bChildLists_Exist[int(cl_NestedClasses)+int(i_eFilter) + cl_MAX]
+ = bProtected_ChildrenExist;
+ bChildLists_Exist[int(cl_NestedClasses)+int(i_eFilter) + 2*cl_MAX]
+ = bPrivate_ChildrenExist;
+
+ if (bPublic_ChildrenExist)
+ o_rPublic << new HorizontalLine;
+ if (bProtected_ChildrenExist)
+ o_rProtected << new HorizontalLine;
+ if (bPrivate_ChildrenExist)
+ o_rPrivate << new HorizontalLine;
+}
+
+const char *
+PageMaker_Class::ChildListLabel( const char * i_sLabel, E_MemberProtection i_eMpr )
+{
+ static char sResult[100];
+ strcpy( sResult, C_sMprPrefixes[i_eMpr] ); // SAFE STRCPY (#100211# - checked)
+ strcat( sResult, i_sLabel ); // SAFE STRCAT (#100211# - checked)
+ return sResult;
+}
+
+csi::html::DefListDefinition &
+PageMaker_Class::Setup_MemberSegment_Out( E_MemberProtection i_eMpr )
+{
+ html::DefList * pDefList = new html::DefList;
+ pProtectionArea[i_eMpr] = pDefList;
+
+ pDefList->AddTerm()
+ << new html::ClassAttr("subtitle")
+ >> *new html::Label( C_sMprPrefixes[i_eMpr] )
+ >> *new html::Headline(3)
+ << C_sMprTitles[i_eMpr];
+ return pDefList->AddDefinition();
+}
+
+void
+PageMaker_Class::Create_NaviSubRow( E_MemberProtection i_eMpr )
+{
+ int nIndexAdd = int(cl_MAX) * int(i_eMpr);
+
+ bool bEmpty = true;
+ for (int e = 0; e < cl_MAX; e++)
+ {
+ if ( bChildLists_Exist[e + nIndexAdd] )
+ {
+ bEmpty = false;
+ break;
+ }
+ } // end for
+ if (bEmpty)
+ {
+ pProtectionArea[i_eMpr] = 0;
+ return;
+ }
+ else //
+ {
+ CurOut() << pProtectionArea[i_eMpr].Release();
+ } // endif
+
+ pNavi->MakeSubRow( C_sMprSummaryTitles[i_eMpr] );
+ for (int i = 0; i < cl_MAX; i++)
+ {
+ pNavi->AddItem( C_sSummaryItems_Titles[i],
+ ChildListLabel( C_sSummaryItems_Labels[i], i_eMpr ),
+ bChildLists_Exist[i+nIndexAdd] );
+ } // end for
+}
+
+void
+PageMaker_Class::Write_DerivedList()
+{
+ adcdisp::ExplanationList
+ aDeriveds( CurOut() );
+ aDeriveds.AddEntry( "Known Derived Classes" );
+
+ if ( Me().KnownDerivatives().Size() == 0 )
+ {
+ aDeriveds.Def() << "None.";
+ return;
+ }
+
+ typedef ary::List_Rid RidList;
+
+ CesConstIterator
+ itEnd = Me().KnownDerivatives().End();
+ for ( CesConstIterator it = Me().KnownDerivatives().Begin();
+ it != itEnd;
+ ++it )
+ {
+ const ary::cpp::CodeEntity &
+ rCe = Env().Gate().Ces().Find_Ce(*it);
+
+ aDeriveds.Def()
+ >> *new html::Link( Link2Ce(Env(),rCe) )
+ << rCe.LocalName();
+ aDeriveds.Def()
+ << new html::LineBreak;
+ } // end for
+}
+
+
+// ============== Creating a classes base hierarchy ====================== //
+
+
+namespace
+{
+
+class Node
+{
+ public:
+ Node(
+ const ary::cpp::Class &
+ i_rClass,
+ ary::cpp::Type_id i_nClassType,
+ const ary::cpp::Gate &
+ i_rGate,
+ intt i_nPositionOffset,
+ Node * io_pDerived = 0,
+ ary::cpp::E_Protection
+ i_eProtection = ary::cpp::PROTECT_global,
+ bool i_bVirtual = false );
+ ~Node();
+
+ void FillPositionList(
+ std::vector< const Node* > &
+ o_rPositionList ) const;
+ void Write2(
+ csi::xml::Element & o_rOut,
+ const OuputPage_Environment &
+ i_rEnv ) const;
+
+ intt BaseCount() const { return nCountBases; }
+ intt Position() const { return nPosition; }
+ int Xpos() const { return 3*Position(); }
+ int Ypos() const { return 2*Position(); }
+ const Node * Derived() const { return pDerived; }
+
+ private:
+ typedef std::vector< DYN Node* > BaseList;
+
+ void IncrBaseCount();
+
+ // DATA
+ BaseList aBases;
+ intt nCountBases;
+ Node * pDerived;
+
+ String sName;
+ const ary::cpp::Class *
+ pClass;
+ ary::cpp::Type_id nClassType;
+ ary::cpp::E_Protection
+ eProtection;
+ bool bVirtual;
+
+ intt nPosition;
+};
+
+void WriteNodeHierarchy(
+ csi::xml::Element & o_rOut,
+ const OuputPage_Environment &
+ i_rEnv,
+ const Node & i_rClass );
+
+const ary::cpp::Class *
+ HereFind_Class(
+ const ary::cpp::Gate &
+ i_rGate,
+ ary::cpp::Type_id i_nReferingTypeId );
+
+} // anonymous namespace
+
+void
+PageMaker_Class::Write_BaseHierarchy()
+{
+ adcdisp::ExplanationList aBases( CurOut() );
+ aBases.AddEntry( "Base Classes" );
+
+ if ( Me().BaseClasses().size() == 0 )
+ {
+ aBases.Def() << "None.";
+ }
+ else
+ {
+ Dyn< Node >
+ pBaseGraph( new Node(Me(), ary::cpp::Type_id(0), Env().Gate(), 0) );
+ WriteNodeHierarchy( aBases.Def(), Env(), *pBaseGraph );
+ }
+}
+
+
+
+namespace
+{
+
+void
+WriteNodeHierarchy( csi::xml::Element & o_rOut,
+ const OuputPage_Environment & i_rEnv,
+ const Node & i_rClass )
+{
+ typedef const Node * NodePtr;
+ typedef std::vector<NodePtr> NodeList;
+
+ NodeList aPositionList;
+ intt nSize = i_rClass.Position()+1;
+ aPositionList.reserve(nSize);
+ i_rClass.FillPositionList( aPositionList );
+
+ xml::Element &
+ rPre = o_rOut
+ >> *new xml::AnElement("pre")
+ << new html::StyleAttr("font-family:monospace;");
+
+ for ( int line = 0; line < nSize; ++line )
+ {
+ char * sLine1 = new char[2 + line*5];
+ char * sLine2 = new char[1 + line*5];
+ *sLine1 = '\0';
+ *sLine2 = '\0';
+
+ bool bBaseForThisLineReached = false;
+ for ( int col = 0; col < line; ++col )
+ {
+ intt nDerivPos = aPositionList[col]->Derived()->Position();
+
+ if ( nDerivPos >= line )
+ strcat(sLine1, " | ");
+ else
+ strcat(sLine1, " ");
+
+ if ( nDerivPos > line )
+ {
+ strcat(sLine2, " | ");
+ }
+ else if ( nDerivPos == line )
+ {
+ if (bBaseForThisLineReached)
+ strcat(sLine2, "--+--");
+ else
+ {
+ bBaseForThisLineReached = true;
+ strcat(sLine2, " +--");
+ }
+ }
+ else // nDerivPos < line
+ {
+ if (bBaseForThisLineReached)
+ strcat(sLine2, "-----");
+ else
+ strcat(sLine2, " ");
+ }
+ } // end for (col)
+ strcat(sLine1,"\n");
+ rPre
+ << sLine1
+ << sLine2;
+ delete [] sLine1;
+ delete [] sLine2;
+
+ aPositionList[line]->Write2( rPre, i_rEnv );
+ rPre << "\n";
+ } // end for (line)
+}
+
+const ary::cpp::Class *
+HereFind_Class( const ary::cpp::Gate & i_rGate,
+ ary::cpp::Type_id i_nReferingTypeId )
+{
+ const ary::cpp::CodeEntity *
+ pCe = i_rGate.Search_RelatedCe( i_nReferingTypeId );
+
+ if ( pCe != 0 )
+ {
+ if ( ary::is_type<ary::cpp::Class>(*pCe) )
+ {
+ return ary::ary_cast<ary::cpp::Class>(pCe);
+ }
+ else if ( ary::is_type<ary::cpp::Typedef>(*pCe) )
+ {
+ const ary::cpp::Typedef *
+ pTydef = ary::ary_cast<ary::cpp::Typedef>(pCe);
+ return HereFind_Class( i_rGate, pTydef->DescribingType() );
+ }
+ }
+
+ static const ary::cpp::Class aClassNull_( "Base class not found",
+ ary::cpp::Ce_id(0),
+ ary::cpp::PROTECT_global,
+ ary::loc::Le_id(0),
+ ary::cpp::CK_class );
+ return &aClassNull_;
+}
+
+
+
+//********************* Node ***********************//
+
+Node::Node( const ary::cpp::Class & i_rClass,
+ ary::cpp::Type_id i_nClassType,
+ const ary::cpp::Gate & i_rGate,
+ intt i_nPositionOffset,
+ Node * io_pDerived,
+ ary::cpp::E_Protection i_eProtection,
+ bool i_bVirtual )
+ : aBases(),
+ nCountBases(0),
+ pDerived(io_pDerived),
+ pClass(&i_rClass),
+ nClassType(i_nClassType),
+ eProtection(i_eProtection),
+ bVirtual(i_bVirtual),
+ nPosition(i_nPositionOffset)
+{
+ typedef ary::cpp::List_Bases BList;
+
+ for ( BList::const_iterator it = i_rClass.BaseClasses().begin();
+ it != i_rClass.BaseClasses().end();
+ ++it )
+ {
+ const ary::cpp::Class *
+ pBaseClass = HereFind_Class( i_rGate, (*it).nId );
+
+ Dyn<Node>
+ pBase( new Node(*pBaseClass,
+ (*it).nId,
+ i_rGate,
+ nPosition,
+ this,
+ (*it).eProtection,
+ (*it).eVirtuality == ary::cpp::VIRTUAL_virtual)
+ );
+ IncrBaseCount();
+ nPosition += pBase->BaseCount() + 1;
+ aBases.push_back( pBase.Release() );
+ } // end for
+}
+
+Node::~Node()
+{
+}
+
+void
+Node::FillPositionList( std::vector< const Node* > & o_rPositionList ) const
+{
+ for ( BaseList::const_iterator it = aBases.begin();
+ it != aBases.end();
+ ++it )
+ {
+ (*it)->FillPositionList(o_rPositionList);
+ } // end for
+
+ if( o_rPositionList.size() != uintt(Position()) )
+ {
+ csv_assert(false);
+ }
+ o_rPositionList.push_back(this);
+}
+
+void
+Node::Write2( csi::xml::Element & o_rOut,
+ const OuputPage_Environment & i_rEnv ) const
+{
+ if ( Derived() == 0 )
+ {
+ o_rOut
+ >> *new xml::AnElement("span")
+ << new html::ClassAttr("btself")
+ << pClass->LocalName();
+ return;
+ }
+
+ csi::xml::Element *
+ pOut = & ( o_rOut >> *new xml::AnElement("span") );
+ switch ( eProtection )
+ {
+ case ary::cpp::PROTECT_public:
+ if (bVirtual)
+ *pOut << new html::ClassAttr("btvpubl");
+ else
+ *pOut << new html::ClassAttr("btpubl");
+ break;
+ case ary::cpp::PROTECT_protected:
+ if (bVirtual)
+ *pOut << new html::ClassAttr("btvprot");
+ else
+ *pOut << new html::ClassAttr("btprot");
+ break;
+ case ary::cpp::PROTECT_private:
+ if (bVirtual)
+ *pOut << new html::ClassAttr("btvpriv");
+ else
+ *pOut << new html::ClassAttr("btpriv");
+ break;
+ default: // do nothing.
+ ;
+ } // end switch
+
+ csi::xml::Element & rOut = *pOut;
+
+ Get_LinkedTypeText( rOut, i_rEnv, nClassType, false );
+ rOut << " (";
+ if ( bVirtual )
+ rOut << "virtual ";
+ switch ( eProtection )
+ {
+ case ary::cpp::PROTECT_public:
+ rOut << "public)";
+ break;
+ case ary::cpp::PROTECT_protected:
+ rOut << "protected)";
+ break;
+ case ary::cpp::PROTECT_private:
+ rOut << "private)";
+ break;
+ default: // do nothing.
+ ;
+ } // end switch
+}
+
+void
+Node::IncrBaseCount()
+{
+ ++nCountBases;
+ if (pDerived != 0)
+ pDerived->IncrBaseCount();
+}
+
+
+} // anonymous namespace
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_class.hxx b/autodoc/source/display/html/pm_class.hxx
new file mode 100644
index 000000000000..71d9f604c602
--- /dev/null
+++ b/autodoc/source/display/html/pm_class.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 ADC_DISPLAY_HTML_PM_CLASS_HXX
+#define ADC_DISPLAY_HTML_PM_CLASS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "pm_base.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Class;
+ }
+}
+
+class ChildList_Display;
+class NavigationBar;
+
+
+class PageMaker_Class : public SpecializedPageMaker
+{
+ public:
+ enum E_ChidList
+ {
+ cl_NestedClasses = 0,
+ cl_NestedStructs,
+ cl_NestedUnions,
+ cl_Enums,
+ cl_Typedefs,
+ cl_Operations,
+ cl_StaticOperations,
+ cl_Data,
+ cl_StaticData,
+ cl_MAX
+ };
+ PageMaker_Class(
+ PageDisplay & io_rPage,
+ const ary::cpp::Class &
+ i_rClass );
+
+ virtual ~PageMaker_Class();
+
+ virtual void MakePage();
+
+ private:
+ enum E_MemberProtection { mp_public = 0, mp_protected, mp_private, mp_MAX };
+
+ virtual void Write_NavBar();
+ virtual void Write_TopArea();
+ virtual void Write_DocuArea();
+ virtual void Write_ChildList(
+ ary::SlotAccessId i_nSlot,
+ E_ChidList i_eChildListIndex,
+ const char * i_sLabel,
+ const char * i_sListTitle,
+ csi::xml::Element & o_rPublic,
+ csi::xml::Element & o_rProtected,
+ csi::xml::Element & o_rPrivate );
+ void Write_ChildList_forClasses(
+ csi::xml::Element & o_rPublic,
+ csi::xml::Element & o_rProtected,
+ csi::xml::Element & o_rPrivate,
+ const char * i_sLabel,
+ const char * i_sListTitle,
+ ary::cpp::E_ClassKey
+ i_eFilter );
+ void Write_ChildLists();
+ static const char * ChildListLabel(
+ const char * i_sLabel,
+ E_MemberProtection i_eMpr );
+ csi::html::DefListDefinition &
+ Setup_MemberSegment_Out(
+ E_MemberProtection i_eMpr );
+ void Create_NaviSubRow(
+ E_MemberProtection i_eMpr );
+ void Write_BaseHierarchy();
+ void Write_DerivedList();
+
+ const ary::cpp::Class &
+ Me() const { return *pMe; }
+ // DATA
+ const ary::cpp::Class *
+ pMe;
+ Dyn<ChildList_Display>
+ pChildDisplay;
+ Dyn<NavigationBar> pNavi;
+
+ Dyn<csi::xml::Element>
+ pProtectionArea[mp_MAX];
+
+ bool bChildLists_Exist[3*cl_MAX];
+};
+
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_help.cxx b/autodoc/source/display/html/pm_help.cxx
new file mode 100644
index 000000000000..80a832e05510
--- /dev/null
+++ b/autodoc/source/display/html/pm_help.cxx
@@ -0,0 +1,234 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pm_help.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include "navibar.hxx"
+#include "html_kit.hxx"
+
+using namespace csi;
+using csi::html::Paragraph;
+using csi::html::HorizontalLine;
+using csi::html::Headline;
+using csi::html::AlignAttr;
+using csi::html::Bold;
+using csi::html::Link;
+using csi::html::Sbr;
+using csi::html::LineBreak;
+using csi::xml::Element;
+
+
+
+const String C_sHelpText(
+"<div style=\"font-size:10pt;\">\n"
+"<h3 class=\"help\">The Main Navigationbar</h3>\n"
+"<p> On top of every page, there is a main navigationbar on a lightly coloured\n"
+"background with the following items:<br>\n"
+"</p>\n"
+"<ul>\n"
+" <li>Overview - the start page for this document,</li>\n"
+" <li>Namespace - the lowest/deepest namespace of the language objects, described\n"
+"on the current page,</li>\n"
+" <li>Class - the class, struct or union, which owns the methods or data,\n"
+"described on the current page,</li>\n"
+" <li>Index - the global alphabetical index,</li>\n"
+" <li>Help - this page.</li>\n"
+"</ul>\n"
+" Each item in this&nbsp; bar can be in three different states:<br>\n"
+"<ul>\n"
+" <li>Link - the item is valid and you can get there,</li>\n"
+" <li>Simple - the item does not apply (if this page described a namespace,\n"
+"there would be no owning class),</li>\n"
+" <li>Reversed (white text on dark background) - this is the current page.</li>\n"
+"</ul>\n"
+"<h3 class=\"help\">Lower Navigationbars</h3>\n"
+" Just below the main navigation bar, there may be zero to three lower navigationbars\n"
+"on white background.<br>\n"
+"<br>\n"
+"Their items are dependent of the context, but they always link to paragraphs\n"
+"on the same, current page.<br>\n"
+"Available items appear as links. Unavailable items appear as simple text.<br>\n"
+"\n"
+"\n"
+"<h3 class=\"help\">Namespace Descriptions</h3>\n"
+"\n"
+"<dl>\n"
+"<dt class=\"simple\">Parent namespaces</dt>\n"
+" </dl>\n"
+" <dl>\n"
+" <dd>In front of the namespace title, there is a linked list of the parent\n"
+"namespaces. The global namespace is linked with the first \"::\",</dd>\n"
+" <dd>the namespaces between the global and the current one are linked\n"
+"by their names.<br>\n"
+" </dd>\n"
+" <dd> </dd>\n"
+" </dl>\n"
+"After the title, the documentation of the namespace follows (which is often\n"
+"missing, because the namespace name may be self-explaining).<br>\n"
+" <br>\n"
+"Below are the lists of nested namspaces and of the classes, functions and\n"
+"other program objects, that belong within this namespace.<br>\n"
+"Each of this lists is accessible by the lower navigationbar on top of the\n"
+"page.<br>\n"
+"\n"
+"<h3 class=\"help\">Class Descriptions</h3>\n"
+"\n"
+" <dl>\n"
+" <dt class=\"simple\">Parent namespaces and classes</dt>\n"
+" </dl>\n"
+" <dl>\n"
+" <dd>In front of the class title, there is a linked list of the\n"
+"parent namespaces or classes. The global namespace is linked with the first\n"
+"\"::\",</dd>\n"
+" <dd>the namespaces between the global and the current one are\n"
+"linked by their names. Enclosing classes are linked as well, but appear in\n"
+"<span class=\"nqclass\">green</font> color.&nbsp;</dd>\n"
+" <dd>So you see on the first glance, that this is a parent class,\n"
+"no namespace.<br>\n"
+" </dd>\n"
+" <dd><br>\n"
+" </dd>\n"
+" </dl>\n"
+"After the title, the bases and derivations of the class follow. <br>\n"
+"Base classes are displayed as a graph. The text around base classes can appear\n"
+"in different styles and colours:<br>\n"
+"<ul>\n"
+" <li><span class=\"btpubl\">Green</span> - public inherited,</li>\n"
+" <li><span class=\"btprot\">Orange</span> - protected inherited,</li>\n"
+" <li><span class=\"btpriv\">Red</span> - private inherited,</li>\n"
+" <li><span class=\"btvpubl\">italic</span> - a (public inherited) virtual base class.</li>\n"
+" <li><span class=\"btself\">Bold and black</span> without a link - the placeholder\n"
+"for the currently described class.<br>\n"
+" </li>\n"
+"</ul>\n"
+"There may be many derivations of a class, but only the known ones, which\n"
+"are described within this document also, are listed.<br>\n"
+"<br>\n"
+"Below the derivations is a little table with some properties of the class:<br>\n"
+"<ul>\n"
+" <li>virtual - the class owns at least one virtual method,</li>\n"
+" <li>abstract - the class owns at least one abstract method,</li>\n"
+" <li>interface - the class may or may be not abstract,\n"
+"but it is intended by its author to be used only as an interface and never\n"
+"to be instantiated,</li>\n"
+" <li>template - the class is a template class.<br>\n"
+" </li>\n"
+"</ul>\n"
+"Next comes further documentation of the class itself.<br>\n"
+"<br>\n"
+"Lastly, there are listed all members of the class. Public members come first,\n"
+"then protected, at last the private ones.<br>\n"
+"All member lists are accessible by the lower navigationbars on top of the\n"
+"page.<br>\n"
+"\n"
+"<h3 class=\"help\">Macros and Defines</h3>\n"
+"In C++ and C, there are also program constructs, which do not fit into the\n"
+"name tree, because they are #define'd: macros and definitions.<br>\n"
+"These may be documented, too. Those comments you find <a href=\"def-all.html\">\n"
+"here</a>\n"
+" or from the \"Overview\" start page.\n"
+"<h3 class=\"help\">Links to IDL-Documentation</h3>\n"
+"Some types, which appear as links, may refer to classes, enums or other\n"
+"entities, which are direct mappings of UNO-IDL entities.<br>\n"
+"In those cases the link doesn't lead to the C++ class, enum or whatever,\n"
+"but to the description of the IDL entity.\n"
+"<h3 class=\"help\">How to Link From Extern Documents</h3>\n"
+"If you wish to write an extern html document, which links to types within\n"
+"this C++ reference, you can do so, if your links have the following format:<br>\n"
+"<br>\n"
+"&lt;RootDirectory-of-this-Document&gt;/names/&lt;Namespace-A&gt;/&lt;Namespace-XY&gt;/EnclosingClass-nn&gt;/&lt;TypePreFix&gt;-&lt;MyTypeName&gt;.html<br>\n"
+"<br>\n"
+"&lt;TypePreFix&gt; can have the following values:<br>\n"
+"<ul>\n"
+"<li>c - class, struct or union</li>\n"
+"<li>e - enum</li>\n"
+"<li>t - typedef</li>\n"
+"</ul>\n"
+"If this document would be located in directory &nbsp;\"/doc/cpp/ref\", examples\n"
+"would look like this:<br>\n"
+"<br>\n"
+"&lt;a href=\"/doc/cpp/ref/names/osl/c-File.html\"&gt;class File&lt;/a&gt;<br>\n"
+"&lt;a href=\"/doc/cpp/ref/names/osl/FileBase/e-RC.html\"&gt;enum FileBase::RC&lt;/a&gt;<br>\n"
+"&lt;a href=\"/doc/cpp/ref/names/t-oslMutex.html\"&gt;typedef oslMutex&lt;/a&gt;<br>\n"
+"<br>\n"
+"Namespaces are described in the index.html file within their directory:<br>\n"
+"<br>\n"
+"&lt;a href=\"/doc/cpp/ref/names/cppu/index.html\"&gt;namespace cppu&lt;/a&gt;<br>\n"
+"</div>" );
+
+
+
+
+PageMaker_Help::PageMaker_Help( PageDisplay & io_rPage )
+ : SpecializedPageMaker(io_rPage),
+ pNavi(0)
+{
+}
+
+PageMaker_Help::~PageMaker_Help()
+{
+}
+
+void
+PageMaker_Help::MakePage()
+{
+ pNavi = new NavigationBar( Env(), NavigationBar::LOC_Help );
+ Write_NavBar();
+
+ Write_TopArea();
+ Write_DocuArea();
+}
+
+void
+PageMaker_Help::Write_NavBar()
+{
+ pNavi->Write( CurOut() );
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_Help::Write_TopArea()
+{
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), "How to Use", "this Reference Document" );
+
+ CurOut() << new xml::XmlCode(C_sHelpText);
+}
+
+void
+PageMaker_Help::Write_DocuArea()
+{
+ CurOut() << new HorizontalLine;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_help.hxx b/autodoc/source/display/html/pm_help.hxx
new file mode 100644
index 000000000000..e40f2f3f503b
--- /dev/null
+++ b/autodoc/source/display/html/pm_help.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 ADC_DISPLAY_HTML_PM_HELP_HXX
+#define ADC_DISPLAY_HTML_PM_HELP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "pm_base.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+class NavigationBar;
+
+class PageMaker_Help : public SpecializedPageMaker
+{
+ public:
+ PageMaker_Help(
+ PageDisplay & io_rPage );
+
+ virtual ~PageMaker_Help();
+
+ virtual void MakePage();
+
+ private:
+ virtual void Write_NavBar();
+ virtual void Write_TopArea();
+ virtual void Write_DocuArea();
+
+ // DATA
+ Dyn<NavigationBar> pNavi;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_index.cxx b/autodoc/source/display/html/pm_index.cxx
new file mode 100644
index 000000000000..122329e9dcdb
--- /dev/null
+++ b/autodoc/source/display/html/pm_index.cxx
@@ -0,0 +1,320 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pm_index.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_define.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_macro.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include "aryattrs.hxx"
+#include "hd_chlst.hxx"
+#include "hd_docu.hxx"
+#include "html_kit.hxx"
+#include "navibar.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+#include "strconst.hxx"
+
+using namespace csi;
+using ary::GlobalId;
+
+
+
+
+namespace
+{
+
+inline const char *
+F_CK_Text( ary::cpp::E_ClassKey i_eCK )
+{
+ switch (i_eCK)
+ {
+ case ary::cpp::CK_class: return "class";
+ case ary::cpp::CK_struct: return "struct";
+ case ary::cpp::CK_union: return "union";
+ } // end switch
+ return "";
+}
+
+template <class CE>
+inline const char *
+F_OwnerType( const CE & i_rData, const ary::cpp::Gate & i_rGate )
+{
+ if ( i_rData.Protection() == ary::cpp::PROTECT_global )
+ return "namespace ";
+
+ const ary::cpp::Class *
+ pClass = dynamic_cast< const ary::cpp::Class* >(
+ i_rGate.Ces().Search_Ce(i_rData.Owner()) );
+ if (pClass != 0)
+ return F_CK_Text(pClass->ClassKey());
+ return "";
+}
+
+} // anonymous namespace
+
+PageMaker_Index::PageMaker_Index( PageDisplay & io_rPage,
+ char i_c )
+ : SpecializedPageMaker(io_rPage),
+ pNavi(0),
+ c(i_c),
+ pCurIndex(0)
+{
+}
+
+PageMaker_Index::~PageMaker_Index()
+{
+}
+
+void
+PageMaker_Index::MakePage()
+{
+ pNavi = new NavigationBar( Env(), NavigationBar::LOC_Index );
+
+ Write_NavBar();
+ Write_TopArea();
+ Write_CompleteAlphabeticalList();
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Namespace & i_rData )
+{
+ Write_CeIndexEntry( i_rData, "namespace", "namespace" );
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Class & i_rData )
+{
+ // KORR_FUTURE
+ // Really throw out all anonymous classes from index?
+
+ if ( strncmp(i_rData.LocalName().c_str()+1,"_Anonymous",10) == 0 )
+ return;
+
+ Write_CeIndexEntry( i_rData,
+ F_CK_Text(i_rData.ClassKey()),
+ F_OwnerType(i_rData, Env().Gate()) );
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Enum & i_rData )
+{
+ Write_CeIndexEntry( i_rData, "enum", F_OwnerType(i_rData, Env().Gate()) );
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Typedef & i_rData )
+{
+ Write_CeIndexEntry( i_rData, "typedef", F_OwnerType(i_rData, Env().Gate()) );
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Function & i_rData )
+{
+ Write_CeIndexEntry( i_rData, "function", F_OwnerType(i_rData, Env().Gate()) );
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Variable & i_rData )
+{
+ Write_CeIndexEntry( i_rData, "variable", F_OwnerType(i_rData, Env().Gate()) );
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::EnumValue & i_rData )
+{
+ Write_CeIndexEntry( i_rData, "enum value", "" );
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Define & i_rData )
+{
+ String sFileName;
+
+ pCurIndex->AddEntry();
+ pCurIndex->Term()
+ >> *new html::Link( Link2CppDefinition(Env(), i_rData) )
+ >> *new html::Bold
+ << i_rData.LocalName();
+ pCurIndex->Term()
+ << " - define";
+ pCurIndex->Def() << " ";
+}
+
+void
+PageMaker_Index::do_Process( const ary::cpp::Macro & i_rData )
+{
+ String sFileName;
+
+ pCurIndex->AddEntry();
+ pCurIndex->Term()
+ >> *new html::Link( Link2CppDefinition(Env(), i_rData) )
+ >> *new html::Bold
+ << i_rData.LocalName();
+ pCurIndex->Term()
+ << " - macro";
+
+ pCurIndex->Def() << " ";
+}
+
+const ary::cpp::Gate *
+PageMaker_Index::inq_Get_ReFinder() const
+{
+ return &Env().Gate();
+}
+
+void
+PageMaker_Index::Write_NavBar()
+{
+ pNavi->Write( CurOut() );
+ CurOut() << new html::HorizontalLine;
+}
+
+
+const String C_sAlphabet(
+"<a href=\"index-1.html\"><B>A</B></a> <a href=\"index-2.html\"><B>B</B></a> <a href=\"index-3.html\"><B>C</B></a> <a href=\"index-4.html\"><B>D</B></a> <a href=\"index-5.html\"><B>E</B></a> "
+"<a href=\"index-6.html\"><B>F</B></a> <a href=\"index-7.html\"><B>G</B></a> <a href=\"index-8.html\"><B>H</B></a> <a href=\"index-9.html\"><B>I</B></a> <a href=\"index-10.html\"><B>J</B></a> "
+"<a href=\"index-11.html\"><B>K</B></a> <a href=\"index-12.html\"><B>L</B></a> <a href=\"index-13.html\"><B>M</B></a> <a href=\"index-14.html\"><B>N</B></a> <a href=\"index-15.html\"><B>O</B></a> "
+"<a href=\"index-16.html\"><B>P</B></a> <a href=\"index-17.html\"><B>Q</B></a> <a href=\"index-18.html\"><B>R</B></a> <a href=\"index-19.html\"><B>S</B></a> <a href=\"index-20.html\"><B>T</B></a> "
+"<a href=\"index-21.html\"><B>U</B></a> <a href=\"index-22.html\"><B>V</B></a> <a href=\"index-23.html\"><B>W</B></a> <a href=\"index-24.html\"><B>X</B></a> <a href=\"index-25.html\"><B>Y</B></a> "
+"<a href=\"index-26.html\"><B>Z</B></a> <a href=\"index-27.html\"><B>_</B></a>" );
+
+void
+PageMaker_Index::Write_TopArea()
+{
+ String sLetter(&c, 1);
+
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), "Global Index", sLetter );
+
+ CurOut() >>* new html::Paragraph
+ << new html::AlignAttr("center")
+ << new xml::XmlCode(C_sAlphabet);
+
+ CurOut() << new html::HorizontalLine;
+}
+
+void
+PageMaker_Index::Write_CompleteAlphabeticalList()
+{
+ std::vector<GlobalId>
+ aThisPagesItems;
+ const ary::cpp::Gate &
+ rGate = Env().Gate();
+
+ static char sBegin[] = "X";
+ static char sEnd[] = "Y";
+
+ switch ( c )
+ {
+ case 'Z': sBegin[0] = 'Z';
+ sEnd[0] = '_';
+ break;
+ case '_': sBegin[0] = '_';
+ sEnd[0] = '0';
+ break;
+ default: sBegin[0] = c;
+ sEnd[0] = char(c + 1);
+ break;
+ }
+
+ uintt
+ nCount = rGate.Get_AlphabeticalList( aThisPagesItems, sBegin, sEnd );
+ if (nCount > 0 )
+ {
+ adcdisp::IndexList
+ aIndex(CurOut());
+ pCurIndex = &aIndex;
+
+ std::vector<GlobalId>::const_iterator itEnd = aThisPagesItems.end();
+ for ( std::vector<GlobalId>::const_iterator it = aThisPagesItems.begin();
+ it != itEnd;
+ ++it )
+ {
+ const ary::Entity *
+ pRe = rGate.Search_Entity( *it );
+ if ( pRe != 0 )
+ pRe->Accept(*this);
+ } // end for
+
+ pCurIndex = 0;
+ } // endif (nCount > 0)
+}
+
+void
+PageMaker_Index::Write_CeIndexEntry( const ary::cpp::CodeEntity &
+ i_rCe,
+ const char * i_sType,
+ const char * i_sOwnerType )
+{
+ if ( Ce_IsInternal(i_rCe) )
+ return;
+
+ static csv::StreamStr aQualification(500);
+
+ const ary::cpp::CodeEntity &
+ rOwner = Env().Gate().Ces().Find_Ce(i_rCe.Owner());
+
+ pCurIndex->AddEntry();
+ pCurIndex->Term()
+ >> *new html::Link( Link2Ce(Env(), i_rCe) )
+ >> *new html::Bold
+ << i_rCe.LocalName();
+ pCurIndex->Term()
+ << " - "
+ << i_sType;
+
+ if ( rOwner.Owner().IsValid() )
+ {
+ aQualification.seekp(0);
+ Env().Gate().Ces().Get_QualifiedName( aQualification,
+ rOwner.LocalName(),
+ rOwner.Owner() );
+
+ pCurIndex->Term()
+ << " in "
+ << i_sOwnerType
+ << " "
+ << aQualification.c_str();
+ }
+
+ pCurIndex->Def() << " ";
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_index.hxx b/autodoc/source/display/html/pm_index.hxx
new file mode 100644
index 000000000000..e558292e3eae
--- /dev/null
+++ b/autodoc/source/display/html/pm_index.hxx
@@ -0,0 +1,138 @@
+/* -*- 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 ADC_DISPLAY_HTML_PM_INDEX_HXX
+#define ADC_DISPLAY_HTML_PM_INDEX_HXX
+
+// BASE CLASSES
+#include "pm_base.hxx"
+#include <ary/ary_disp.hxx>
+#include <cosv/tpl/processor.hxx>
+// USED SERVICES
+namespace adcdisp
+{
+ class IndexList;
+}
+namespace ary
+{
+ namespace cpp
+ {
+ class Namespace;
+ class Class;
+ class Enum;
+ class Typedef;
+ class Function;
+ class Variable;
+ class EnumValue;
+ class Define;
+ class Macro;
+ }
+}
+
+class NavigationBar;
+
+
+
+
+class PageMaker_Index : public SpecializedPageMaker,
+ public ary::Display,
+ public csv::ConstProcessor<ary::cpp::Namespace>,
+ public csv::ConstProcessor<ary::cpp::Class>,
+ public csv::ConstProcessor<ary::cpp::Enum>,
+ public csv::ConstProcessor<ary::cpp::Typedef>,
+ public csv::ConstProcessor<ary::cpp::Function>,
+ public csv::ConstProcessor<ary::cpp::Variable>,
+ public csv::ConstProcessor<ary::cpp::EnumValue>,
+ public csv::ConstProcessor<ary::cpp::Define>,
+ public csv::ConstProcessor<ary::cpp::Macro>
+{
+ public:
+ PageMaker_Index(
+ PageDisplay & io_rPage,
+ char i_c );
+
+ virtual ~PageMaker_Index();
+
+ virtual void MakePage();
+
+ private:
+ // Interface csv::ConstProcessor<>
+ virtual void do_Process(
+ const ary::cpp::Namespace &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Class &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Enum &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Typedef &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Function &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Variable &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::EnumValue &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Define &
+ i_rData );
+ virtual void do_Process(
+ const ary::cpp::Macro &
+ i_rData );
+ // Interface ary::cpp::Display:
+ virtual const ary::cpp::Gate *
+ inq_Get_ReFinder() const;
+ // Locals
+ virtual void Write_NavBar();
+ virtual void Write_TopArea();
+ virtual void Write_CompleteAlphabeticalList();
+
+ void Write_CeIndexEntry(
+ const ary::cpp::CodeEntity &
+ i_rCe,
+ const char * i_sType,
+ const char * i_sOwnerType );
+
+ // DATA
+ Dyn<NavigationBar> pNavi;
+ char c;
+ adcdisp::IndexList *
+ pCurIndex;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_namsp.cxx b/autodoc/source/display/html/pm_namsp.cxx
new file mode 100644
index 000000000000..ea07fc77a45c
--- /dev/null
+++ b/autodoc/source/display/html/pm_namsp.cxx
@@ -0,0 +1,176 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pm_namsp.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include "hd_chlst.hxx"
+#include "hd_docu.hxx"
+#include "html_kit.hxx"
+#include "navibar.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+#include "strconst.hxx"
+
+
+using namespace csi;
+using csi::html::HorizontalLine;
+using csi::html::Link;
+using csi::html::Table;
+using csi::html::TableRow;
+using csi::html::TableCell;
+
+
+
+PageMaker_Namespace::PageMaker_Namespace( PageDisplay & io_rPage )
+ : SpecializedPageMaker(io_rPage),
+ pMe( io_rPage.Env().CurNamespace() ),
+ pChildDisplay( new ChildList_Display(io_rPage.Env()) ),
+ pNavi(0)
+{
+ csv_assert( pMe != 0 );
+}
+
+PageMaker_Namespace::~PageMaker_Namespace()
+{
+}
+
+void
+PageMaker_Namespace::MakePage()
+{
+ pNavi = new NavigationBar( Env(), Me() );
+
+ Write_NavBar();
+ Write_TopArea();
+ Write_DocuArea();
+
+ pNavi->MakeSubRow("");
+ Write_ChildList( ary::cpp::Namespace::SLOT_SubNamespaces, C_sTitle_SubNamespaces, C_sLabel_SubNamespaces );
+
+ Write_ChildLists_forClasses( C_sTitle_Classes,
+ C_sLabel_Classes,
+ ary::cpp::CK_class );
+ Write_ChildLists_forClasses( C_sTitle_Structs,
+ C_sLabel_Structs,
+ ary::cpp::CK_struct );
+ Write_ChildLists_forClasses( C_sTitle_Unions,
+ C_sLabel_Unions,
+ ary::cpp::CK_union );
+
+ Write_ChildList( ary::cpp::Namespace::SLOT_Enums, C_sTitle_Enums, C_sLabel_Enums );
+ Write_ChildList( ary::cpp::Namespace::SLOT_Typedefs, C_sTitle_Typedefs, C_sLabel_Typedefs );
+ Write_ChildList( ary::cpp::Namespace::SLOT_Operations, C_sTitle_Operations, C_sLabel_Operations );
+ Write_ChildList( ary::cpp::Namespace::SLOT_Constants, C_sTitle_Constants, C_sLabel_Constants );
+ Write_ChildList( ary::cpp::Namespace::SLOT_Variables, C_sTitle_Variables, C_sLabel_Variables );
+
+ pNavi->Write_SubRows();
+}
+
+void
+PageMaker_Namespace::Write_NavBar()
+{
+ pNavi->Write( CurOut() );
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_Namespace::Write_TopArea()
+{
+ Page().Write_NameChainWithLinks( Me() );
+
+ adcdisp::PageTitle_Std fTitle;
+ xml::Element & rH3 = fTitle( CurOut() );
+ if ( Env().CurNamespace()->Owner().IsValid() )
+ {
+ rH3 << C_sHFTypeTitle_Namespace
+ << " "
+ << Env().CurNamespace()->LocalName();
+ }
+ else
+ {
+ rH3 << C_sHFTitle_GlobalNamespaceCpp;
+ }
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_Namespace::Write_DocuArea()
+{
+ Docu_Display aDocuShow( Env() );
+
+ aDocuShow.Assign_Out(CurOut());
+ aDocuShow.Process(Me().Docu());
+ aDocuShow.Unassign_Out();
+
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_Namespace::Write_ChildList( ary::SlotAccessId i_nSlot,
+ const char * i_sListTitle,
+ const char * i_sLabel )
+
+{
+ bool bChildrenExist = false;
+ ChildList_Display::Area_Result
+ aResult( bChildrenExist, CurOut() );
+
+ pChildDisplay->Run_Simple( aResult,
+ i_nSlot,
+ i_sLabel,
+ i_sListTitle );
+
+ pNavi->AddItem(i_sListTitle, i_sLabel, bChildrenExist);
+ if (bChildrenExist)
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_Namespace::Write_ChildLists_forClasses( const char * i_sListTitle,
+ const char * i_sLabel,
+ ary::cpp::E_ClassKey i_eFilter )
+
+{
+ bool bChildrenExist = false;
+ ChildList_Display::Area_Result
+ aResult( bChildrenExist, CurOut() );
+
+ pChildDisplay->Run_GlobalClasses( aResult,
+ ary::cpp::Namespace::SLOT_Classes,
+ i_sLabel,
+ i_sListTitle,
+ i_eFilter );
+
+ pNavi->AddItem(i_sListTitle, i_sLabel, bChildrenExist);
+ if ( bChildrenExist )
+ CurOut() << new HorizontalLine;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_namsp.hxx b/autodoc/source/display/html/pm_namsp.hxx
new file mode 100644
index 000000000000..c2f0535ad7d7
--- /dev/null
+++ b/autodoc/source/display/html/pm_namsp.hxx
@@ -0,0 +1,80 @@
+/* -*- 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 ADC_DISPLAY_HTML_PM_NAMSP_HXX
+#define ADC_DISPLAY_HTML_PM_NAMSP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "pm_base.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+class ChildList_Display;
+class NavigationBar;
+
+class PageMaker_Namespace : public SpecializedPageMaker
+{
+ public:
+ PageMaker_Namespace(
+ PageDisplay & io_rPage );
+
+ virtual ~PageMaker_Namespace();
+
+ virtual void MakePage();
+
+ private:
+ virtual void Write_NavBar();
+ virtual void Write_TopArea();
+ virtual void Write_DocuArea();
+ virtual void Write_ChildList(
+ ary::SlotAccessId i_nSlot,
+ const char * i_nListTitle,
+ const char * i_nLabel );
+ void Write_ChildLists_forClasses(
+ const char * i_sListTitle,
+ const char * i_sLabel,
+ ary::cpp::E_ClassKey i_eFilter );
+
+ const ary::cpp::Namespace &
+ Me() const { return *pMe; }
+ // DATA
+ const ary::cpp::Namespace *
+ pMe;
+ Dyn<ChildList_Display>
+ pChildDisplay;
+ Dyn<NavigationBar> pNavi;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_start.cxx b/autodoc/source/display/html/pm_start.cxx
new file mode 100644
index 000000000000..335783b1b809
--- /dev/null
+++ b/autodoc/source/display/html/pm_start.cxx
@@ -0,0 +1,139 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pm_start.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ary.hxx>
+#include "hd_chlst.hxx"
+#include "hd_docu.hxx"
+#include "navibar.hxx"
+#include "html_kit.hxx"
+#include "opageenv.hxx"
+#include "pagemake.hxx"
+#include "strconst.hxx"
+
+
+using namespace csi;
+using csi::html::Paragraph;
+using csi::html::HorizontalLine;
+using csi::html::AlignAttr;
+using csi::html::Bold;
+using csi::html::Link;
+using csi::html::Sbr;
+using csi::html::LineBreak;
+
+
+
+PageMaker_Overview::PageMaker_Overview( PageDisplay & io_rPage )
+ : SpecializedPageMaker(io_rPage),
+ pNavi(0)
+{
+}
+
+PageMaker_Overview::~PageMaker_Overview()
+{
+}
+
+void
+PageMaker_Overview::MakePage()
+{
+ pNavi = new NavigationBar( Env(), NavigationBar::LOC_Overview );
+ Write_NavBar();
+
+ Write_TopArea();
+ Write_DocuArea();
+}
+
+void
+PageMaker_Overview::Write_NavBar()
+{
+ pNavi->Write( CurOut() );
+ CurOut() << new HorizontalLine;
+}
+
+void
+PageMaker_Overview::Write_TopArea()
+{
+ adcdisp::PageTitle_Std fTitle;
+ fTitle( CurOut(), Env().RepositoryTitle(), "" );
+
+ CurOut()
+ >> *new Paragraph
+ << new html::StyleAttr("font-size:14pt;")
+ << "This is a reference documentation for the C++ source code."
+ << new LineBreak
+ << new LineBreak
+ << "Points to start:";
+
+ html::SimpleList &
+ rList = *new html::SimpleList;
+ CurOut() >> rList;
+
+ html::ListItem & rNamedObjsItem =
+ rList.AddItem();
+
+ StreamLock sNspDir(50);
+ rNamedObjsItem
+ << new html::StyleAttr("font-size:14pt;")
+ >> *new Link( sNspDir() << C_sDIR_NamespacesCpp
+ << "/"
+ << C_sHFN_Namespace
+ << c_str )
+ >> *new Bold
+ << "Named Objects";
+ rNamedObjsItem << " (classes, functions, namespaces, etc.)"
+ << new html::LineBreak;
+ rList.AddItem()
+ << new html::StyleAttr("font-size:14pt;")
+ >> *new Link( "def-all.html" )
+ >> *new Bold
+ << "Defines and Macros"
+ << new html::LineBreak;
+ StreamLock sIndexDir(50);
+ rList.AddItem()
+ << new html::StyleAttr("font-size:14pt;")
+ >> *new Link( sIndexDir() << C_sDIR_Index
+ << "/index-1.html"
+ << c_str )
+ >> *new Bold
+ << "Global Index"
+ << new html::LineBreak;
+}
+
+void
+PageMaker_Overview::Write_DocuArea()
+{
+ CurOut() << new HorizontalLine;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/pm_start.hxx b/autodoc/source/display/html/pm_start.hxx
new file mode 100644
index 000000000000..26614b33bc7d
--- /dev/null
+++ b/autodoc/source/display/html/pm_start.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 ADC_DISPLAY_HTML_PM_START_HXX
+#define ADC_DISPLAY_HTML_PM_START_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "pm_base.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+class NavigationBar;
+
+class PageMaker_Overview : public SpecializedPageMaker
+{
+ public:
+ PageMaker_Overview(
+ PageDisplay & io_rPage );
+
+ virtual ~PageMaker_Overview();
+
+ virtual void MakePage();
+
+ private:
+ virtual void Write_NavBar();
+ virtual void Write_TopArea();
+ virtual void Write_DocuArea();
+
+ // DATA
+ Dyn<NavigationBar> pNavi;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/protarea.cxx b/autodoc/source/display/html/protarea.cxx
new file mode 100644
index 000000000000..d581014eccac
--- /dev/null
+++ b/autodoc/source/display/html/protarea.cxx
@@ -0,0 +1,140 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "protarea.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include "hdimpl.hxx"
+
+
+inline UINT8
+ProtectionArea::Index( ary::cpp::E_ClassKey i_eClassKey ) const
+{
+ return i_eClassKey == ary::cpp::CK_class
+ ? 0
+ : i_eClassKey == ary::cpp::CK_struct
+ ? 1
+ : 2;
+}
+
+
+
+ProtectionArea::ProtectionArea( const char * i_sLabel,
+ const char * i_sTitle )
+ : pSglTable( new S_Slot_Table(i_sTitle) ),
+ aClassesTables(),
+ sLabel(i_sLabel)
+{
+}
+
+ProtectionArea::~ProtectionArea()
+{
+
+}
+
+csi::html::Table &
+ProtectionArea::GetTable()
+{
+ csv_assert(pSglTable);
+
+ return pSglTable->GetTable();
+}
+
+csi::html::Table &
+ProtectionArea::GetTable( ary::cpp::E_ClassKey i_eClassKey )
+{
+ csv_assert(aClassesTables[Index(i_eClassKey)]);
+ return aClassesTables[Index(i_eClassKey)]->GetTable();
+}
+
+DYN csi::html::Table *
+ProtectionArea::ReleaseTable()
+{
+ csv_assert(pSglTable);
+ return pSglTable->ReleaseTable();
+}
+
+DYN csi::html::Table *
+ProtectionArea::ReleaseTable( ary::cpp::E_ClassKey i_eClassKey )
+{
+ csv_assert(aClassesTables[Index(i_eClassKey)]);
+ return aClassesTables[Index(i_eClassKey)]->ReleaseTable();
+}
+
+const char *
+ProtectionArea::Label() const
+{
+ return sLabel;
+}
+
+
+bool
+ProtectionArea::WasUsed_Area() const
+{
+ if ( pSglTable )
+ {
+ return pSglTable->WasUsed();
+ }
+
+ typedef const Dyn<ProtectionArea::S_Slot_Table> cdyntab;
+
+ // Workaround a maybe compiler bug in Solaris5-CC ?
+ // should normally work without the cast,
+ // because that is exactly the genuine type, given:
+ return static_cast< cdyntab& >(aClassesTables[0])->WasUsed()
+ OR static_cast< cdyntab& >(aClassesTables[1])->WasUsed()
+ OR static_cast< cdyntab& >(aClassesTables[2])->WasUsed();
+}
+
+//******************* S_Slot_Table **********************//
+
+ProtectionArea::
+S_Slot_Table::S_Slot_Table(const char * i_sTitle)
+ : sTableTitle(i_sTitle)
+{
+}
+
+ProtectionArea::
+S_Slot_Table::~S_Slot_Table()
+{
+}
+
+csi::html::Table &
+ProtectionArea::
+S_Slot_Table::GetTable()
+{
+ return pTable
+ ? *pTable
+ : *( pTable = &Create_ChildListTable(sTableTitle) );
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/protarea.hxx b/autodoc/source/display/html/protarea.hxx
new file mode 100644
index 000000000000..348afbe5ef78
--- /dev/null
+++ b/autodoc/source/display/html/protarea.hxx
@@ -0,0 +1,96 @@
+/* -*- 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 ADC_DISPLAY_HTML_PROTAREA_HXX
+#define ADC_DISPLAY_HTML_PROTAREA_HXX
+
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace csi
+{
+namespace html
+{
+ class Table;
+}
+}
+
+
+
+
+class ProtectionArea
+{
+ public:
+ ProtectionArea(
+ const char * i_sLabel,
+ const char * i_sTitle );
+ ~ProtectionArea();
+
+ csi::html::Table & GetTable();
+ csi::html::Table & GetTable(
+ ary::cpp::E_ClassKey
+ i_eClassKey );
+ DYN csi::html::Table * ReleaseTable();
+ DYN csi::html::Table * ReleaseTable(
+ ary::cpp::E_ClassKey
+ i_eClassKey );
+ const char * Label() const;
+
+ int Size() const { return pSglTable ? 1 : 3; }
+
+ bool WasUsed_Area() const;
+ private:
+ struct S_Slot_Table
+ {
+ const char * sTableTitle;
+ Dyn< csi::html::Table >
+ pTable;
+
+ S_Slot_Table(
+ const char * i_sTitle );
+ ~S_Slot_Table();
+ csi::html::Table & GetTable();
+ DYN csi::html::Table *
+ ReleaseTable() { return pTable.Release(); }
+ bool WasUsed() const { return pTable; }
+ };
+
+ UINT8 Index(
+ ary::cpp::E_ClassKey
+ i_eClassKey ) const;
+ // DATA
+ Dyn<S_Slot_Table> pSglTable;
+ Dyn<S_Slot_Table> aClassesTables[3];
+ const char * sLabel;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/html/strconst.hxx b/autodoc/source/display/html/strconst.hxx
new file mode 100644
index 000000000000..0bddc803249d
--- /dev/null
+++ b/autodoc/source/display/html/strconst.hxx
@@ -0,0 +1,80 @@
+/* -*- 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 ADC_DISPLAY_HTML_STRCONST_HXX
+#define ADC_DISPLAY_HTML_STRCONST_HXX
+
+
+const char * const C_sDIR_NamespacesCpp = "names";
+const char * const C_sDIR_Index = "index-files"; // Convention recognised by Javadoc
+
+const char * const C_sPath_Index = "index-files/index-1.html"; // Convention recognised by Javadoc
+
+const char * const C_sHFN_Css = "cpp.css";
+const char * const C_sHFN_Overview = "index.html";
+const char * const C_sHFN_Help = "help.html";
+
+const char * const C_sHFN_Namespace = "index.html";
+
+const char * const C_sTitle_SubNamespaces = "Nested Namespaces";
+const char * const C_sTitle_Classes = "Classes";
+const char * const C_sTitle_Structs = "Structs";
+const char * const C_sTitle_Unions = "Unions";
+const char * const C_sTitle_Enums = "Enums";
+const char * const C_sTitle_Typedefs = "Typedefs";
+const char * const C_sTitle_Operations = "Functions";
+const char * const C_sTitle_Constants = "Constants";
+const char * const C_sTitle_Variables = "Variables";
+const char * const C_sTitle_EnumValues = "Values";
+
+const char * const C_sLabel_SubNamespaces = "subnsps";
+const char * const C_sLabel_Classes = "classes";
+const char * const C_sLabel_Structs = "structs";
+const char * const C_sLabel_Unions = "unions";
+const char * const C_sLabel_Enums = "enums";
+const char * const C_sLabel_Typedefs = "tydefs";
+const char * const C_sLabel_Operations = "ops";
+const char * const C_sLabel_Constants = "consts";
+const char * const C_sLabel_Variables = "vars";
+const char * const C_sLabel_EnumValues = "envals";
+
+const char * const C_sHFTitle_Overview = "C++ Reference Documentation Overview";
+const char * const C_sHFTitle_Help = "How This Reference Document Is Organized";
+
+const char * const C_sHFTitle_GlobalNamespaceCpp = "Global Namespace in C++";
+const char * const C_sHFTypeTitle_Namespace = "namespace";
+const char * const C_sHFTypeTitle_Class = "class";
+const char * const C_sHFTypeTitle_Struct = "struct";
+const char * const C_sHFTypeTitle_Union = "union";
+const char * const C_sHFTypeTitle_Enum = "enum";
+const char * const C_sHFTypeTitle_Typedef = "typedef";
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_constgroup.cxx b/autodoc/source/display/idl/hfi_constgroup.cxx
new file mode 100644
index 000000000000..d197e55234db
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_constgroup.cxx
@@ -0,0 +1,140 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_constgroup.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_constgroup.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_navibar.hxx"
+#include "hfi_property.hxx"
+#include "hi_linkhelper.hxx"
+
+
+extern const String
+ C_sCePrefix_Constants("constants group");
+
+
+namespace
+{
+
+const String
+ C_sList_Constants("Constants");
+const String
+ C_sList_Constants_Label("Constants");
+const String
+ C_sList_ConstantDetails("Constants' Details");
+const String
+ C_sList_ConstantDetails_Label("ConstantDetails");
+
+enum E_SubListIndices
+{
+ sli_ConstantsSummary = 0,
+ sli_ConstantDetails = 1
+};
+
+
+} // anonymous namespace
+
+
+
+HF_IdlConstGroup::HF_IdlConstGroup( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlConstGroup::~HF_IdlConstGroup()
+{
+}
+
+void
+HF_IdlConstGroup::Produce_byData( const client & i_ce ) const
+{
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+ produce_Title(aTitle, C_sCePrefix_Constants, i_ce);
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ dyn_ce_list
+ dpConstants;
+ ary::idl::ifc_constgroup::attr::Get_Constants(dpConstants, i_ce);
+
+ if ( (*dpConstants).operator bool() )
+ {
+ produce_Members( *dpConstants,
+ C_sList_Constants,
+ C_sList_Constants_Label,
+ C_sList_ConstantDetails,
+ C_sList_ConstantDetails_Label );
+ pNaviSubRow->SwitchOn(sli_ConstantsSummary);
+ pNaviSubRow->SwitchOn(sli_ConstantDetails);
+ }
+ pNaviSubRow->Produce_Row();
+}
+
+HF_NaviSubRow &
+HF_IdlConstGroup::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce,true); // true := avoid link to Use-page.
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+ ret.AddItem(C_sList_Constants, C_sList_Constants_Label, false);
+ ret.AddItem(C_sList_ConstantDetails, C_sList_ConstantDetails_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+void
+HF_IdlConstGroup::produce_MemberDetails( HF_SubTitleTable & o_table,
+ const client & i_ce ) const
+{
+ HF_IdlConstant
+ aElement( Env(), o_table );
+ aElement.Produce_byData(i_ce);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_constgroup.hxx b/autodoc/source/display/idl/hfi_constgroup.hxx
new file mode 100644
index 000000000000..044f8925ed01
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_constgroup.hxx
@@ -0,0 +1,68 @@
+/* -*- 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 ADC_DISPLAY_HFI_CONSTGROUP_HXX
+#define ADC_DISPLAY_HFI_CONSTGROUP_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+class HF_IdlConstGroup : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlConstGroup(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlConstGroup();
+
+ void Produce_byData(
+ const client & ce ) const;
+ private:
+ HF_NaviSubRow & make_Navibar(
+ const client & ce ) const;
+ virtual void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+
+extern const String
+ C_sCePrefix_Constants;
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_doc.cxx b/autodoc/source/display/idl/hfi_doc.cxx
new file mode 100644
index 000000000000..c379021a845e
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_doc.cxx
@@ -0,0 +1,194 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_doc.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <ary_i/d_token.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include "hfi_tag.hxx"
+#include "hi_ary.hxx"
+
+
+
+
+HF_IdlDocu::HF_IdlDocu( Environment & io_rEnv,
+ HF_DocEntryList & o_rOut )
+ : HtmlFactory_Idl( io_rEnv, &o_rOut.CurOut() ),
+ rOut(o_rOut)
+{
+}
+
+HF_IdlDocu::~HF_IdlDocu()
+{
+}
+
+void
+HF_IdlDocu::Produce_fromCodeEntity( const client & i_ce ) const
+{
+ const ce_info *
+ i_pDocu = Get_IdlDocu(i_ce.Docu());
+ if (i_pDocu != 0)
+ Produce_byDocuAndScope(*i_pDocu, &i_ce, i_ce);
+}
+
+void
+HF_IdlDocu::Produce_fromReference( const ce_info & i_rDocuForReference,
+ const client & i_rScopeGivingCe ) const
+{
+ Produce_byDocuAndScope(i_rDocuForReference, 0, i_rScopeGivingCe );
+}
+
+void
+HF_IdlDocu::Produce_byDocuAndScope( const ce_info & i_rDocu,
+ const client * i_pClient,
+ const client & i_rScopeGivingCe ) const
+{
+ bool bShort = NOT i_rDocu.Short().IsEmpty();
+ bool bDescr = NOT i_rDocu.Description().IsEmpty();
+
+ if ( i_rDocu.IsDeprecated()
+ OR (
+ (i_pClient != 0 ? i_pClient->SightLevel() == ary::idl::sl_File : false)
+ AND NOT i_rDocu.IsPublished()
+ )
+ OR i_rDocu.IsOptional() )
+ { // any usage restriction
+ rOut.Produce_Term("Usage Restrictions");
+
+ if ( i_rDocu.IsDeprecated() )
+ rOut.Produce_Definition() >> *new Html::Italic << "deprecated";
+ if ( (i_pClient != 0 ? i_pClient->SightLevel() == ary::idl::sl_File : false)
+ AND NOT i_rDocu.IsPublished() )
+ rOut.Produce_Definition() >> *new Html::Italic << "not published";
+ if ( i_rDocu.IsOptional() )
+ rOut.Produce_Definition() >> *new Html::Italic << "optional";
+
+ if ( i_rDocu.IsDeprecated() AND
+ // KORR_FUTURE
+ // Workaround, because DocuTex2::IsEmpty() does not
+ // calculate whitespace tokens only as empty.
+ i_rDocu.DeprecatedText().Tokens().size() > 1 )
+ {
+ rOut.Produce_Term("Deprecation Info");
+
+ HF_IdlDocuTextDisplay
+ aDescription( Env(), 0, i_rScopeGivingCe);
+ aDescription.Out().Enter( rOut.Produce_Definition() );
+ i_rDocu.DeprecatedText().DisplayAt( aDescription );
+ aDescription.Out().Leave();
+ }
+ } // end if (<any usage restriction>)
+
+ if ( bShort OR bDescr )
+ {
+ rOut.Produce_Term("Description");
+ HF_IdlDocuTextDisplay
+ aDescription( Env(), 0, i_rScopeGivingCe);
+ if (bShort)
+ {
+ aDescription.Out().Enter( rOut.Produce_Definition() );
+ i_rDocu.Short().DisplayAt( aDescription );
+ aDescription.Out().Leave();
+ }
+ if (bDescr)
+ {
+ aDescription.Out().Enter( rOut.Produce_Definition() );
+ i_rDocu.Description().DisplayAt( aDescription );
+ aDescription.Out().Leave();
+ }
+ }
+
+ std::vector< csi::dsapi::DT_SeeAlsoAtTag* >
+ aSeeAlsosWithoutText;
+ std::vector< csi::dsapi::DT_SeeAlsoAtTag* >
+ aSeeAlsosWithText;
+
+ for ( std::vector< ary::inf::AtTag2* >::const_iterator
+ iter = i_rDocu.Tags().begin();
+ iter != i_rDocu.Tags().end();
+ ++iter )
+ {
+ csi::dsapi::DT_SeeAlsoAtTag*
+ pSeeAlso = dynamic_cast< csi::dsapi::DT_SeeAlsoAtTag * >(*iter);
+ if (pSeeAlso != 0 )
+ {
+ if ( pSeeAlso->Text().IsEmpty() )
+ {
+ aSeeAlsosWithoutText.push_back(pSeeAlso);
+ }
+ else
+ {
+ aSeeAlsosWithText.push_back(pSeeAlso);
+ }
+ continue;
+ }
+
+ if ( strlen( (*iter)->Title() ) > 0 )
+ {
+ HF_IdlTag
+ aTag(Env(), i_rScopeGivingCe);
+ Xml::Element &
+ rTerm = rOut.Produce_Term();
+ aTag.Produce_byData( rTerm,
+ rOut.Produce_Definition(),
+ *(*iter) );
+ }
+ } // end for
+
+ if (aSeeAlsosWithoutText.size() > 0)
+ {
+ HF_IdlTag
+ aSeeAlsoTag(Env(), i_rScopeGivingCe);
+ Xml::Element &
+ rTerm = rOut.Produce_Term();
+ aSeeAlsoTag.Produce_byData( rTerm,
+ rOut.Produce_Definition(),
+ aSeeAlsosWithoutText );
+ }
+
+ for ( std::vector< csi::dsapi::DT_SeeAlsoAtTag* >::const_iterator
+ itSee2 = aSeeAlsosWithText.begin();
+ itSee2 != aSeeAlsosWithText.end();
+ ++itSee2 )
+ {
+ HF_IdlTag
+ aTag(Env(), i_rScopeGivingCe);
+ Xml::Element &
+ rTerm = rOut.Produce_Term();
+ aTag.Produce_byData( rTerm,
+ rOut.Produce_Definition(),
+ *(*itSee2) );
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_doc.hxx b/autodoc/source/display/idl/hfi_doc.hxx
new file mode 100644
index 000000000000..c27e9708b485
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_doc.hxx
@@ -0,0 +1,88 @@
+/* -*- 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 ADC_DISPLAY_HFI_DOC_HXX
+#define ADC_DISPLAY_HFI_DOC_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+class HF_DocEntryList;
+
+
+class HF_IdlDocu : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlDocu(
+ Environment & io_rEnv,
+ HF_DocEntryList & o_rOut );
+ virtual ~HF_IdlDocu();
+
+
+ /** Produces documentation by the CodeInfo accompanying
+ ->i_ce.
+ */
+ void Produce_fromCodeEntity(
+ const client & i_ce ) const;
+
+ /** Produces documentation by the CodeInfo accompanying
+ a link or reference to a CodeEntity.
+
+ @param i_rScopeGivingCe
+ Gives the scope from which links are to be calculated.
+ */
+ void Produce_fromReference(
+ const ce_info & i_rDocuForReference,
+ const client & i_rScopeGivingCe ) const;
+
+ private:
+ // Locals
+ /** Produces documentation.
+
+ @param i_rScopeGivingCe
+ Gives the scope from which links are to be calculated.
+ */
+ void Produce_byDocuAndScope(
+ const ce_info & i_rDocu,
+ const client * i_pClient, /// May be 0.
+ const client & i_rScopeGivingCe ) const;
+
+ // DATA
+ HF_DocEntryList & rOut;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_enum.cxx b/autodoc/source/display/idl/hfi_enum.cxx
new file mode 100644
index 000000000000..18f97880bc7f
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_enum.cxx
@@ -0,0 +1,136 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_enum.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_enum.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_navibar.hxx"
+#include "hfi_property.hxx"
+#include "hi_linkhelper.hxx"
+
+
+extern const String
+ C_sCePrefix_Enum("enum");
+
+namespace
+{
+
+const String
+ C_sList_Values("Values");
+const String
+ C_sList_Values_Label("Values");
+const String
+ C_sList_ValueDetails("Values' Details");
+const String
+ C_sList_ValueDetails_Label("ValueDetails");
+
+enum E_SubListIndices
+{
+ sli_ValuesSummary = 0,
+ sli_ValueDetails = 1
+};
+
+} // anonymous namespace
+
+HF_IdlEnum::HF_IdlEnum( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlEnum::~HF_IdlEnum()
+{
+}
+
+void
+HF_IdlEnum::Produce_byData( const client & i_ce ) const
+{
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+ produce_Title(aTitle, C_sCePrefix_Enum, i_ce);
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ dyn_ce_list
+ dpValues;
+ ary::idl::ifc_enum::attr::Get_Values(dpValues, i_ce);
+ if ( (*dpValues).operator bool() )
+ {
+ produce_Members( *dpValues,
+ C_sList_Values,
+ C_sList_Values_Label,
+ C_sList_ValueDetails,
+ C_sList_ValueDetails_Label );
+ pNaviSubRow->SwitchOn(sli_ValuesSummary);
+ pNaviSubRow->SwitchOn(sli_ValueDetails);
+ }
+ pNaviSubRow->Produce_Row();
+}
+
+HF_NaviSubRow &
+HF_IdlEnum::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce);
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+ ret.AddItem(C_sList_Values, C_sList_Values_Label, false);
+ ret.AddItem(C_sList_ValueDetails, C_sList_ValueDetails_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+void
+HF_IdlEnum::produce_MemberDetails( HF_SubTitleTable & o_table,
+ const client & i_ce) const
+{
+ HF_IdlEnumValue
+ aElement( Env(), o_table );
+ aElement.Produce_byData(i_ce);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_enum.hxx b/autodoc/source/display/idl/hfi_enum.hxx
new file mode 100644
index 000000000000..1f92b983a4ba
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_enum.hxx
@@ -0,0 +1,70 @@
+/* -*- 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 ADC_DISPLAY_HFI_ENUM_HXX
+#define ADC_DISPLAY_HFI_ENUM_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+class HF_IdlEnum : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlEnum(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlEnum();
+
+ void Produce_byData(
+ const client & ce ) const;
+ private:
+ HF_NaviSubRow & make_Navibar(
+ const client & ce ) const;
+ virtual void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+
+extern const String
+ C_sCePrefix_Enum;
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_globalindex.cxx b/autodoc/source/display/idl/hfi_globalindex.cxx
new file mode 100644
index 000000000000..dc0766b665b8
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_globalindex.cxx
@@ -0,0 +1,278 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_globalindex.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_types4idl.hxx>
+#include <ary/idl/i_module.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_navibar.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+
+
+namespace
+{
+
+/**
+*/
+enum E_Types
+{
+ t_service = 0,
+ t_interface = 1,
+ t_struct = 2,
+ t_exception = 3,
+ t_enum = 4,
+ t_typedef = 5,
+ t_constantsgroup = 6,
+ t_property = 7,
+ t_function = 8,
+ t_structelement = 9,
+ t_enumvalue = 10,
+ t_constant = 11,
+ t_module = 12,
+ t_singleton = 13,
+ t_attribute = 14,
+ t_siservice = 15,
+ t_sisingleton = 16,
+ t_MAX
+};
+
+String G_sDummy;
+
+
+/* RC-Ids for IDL types (see reposy.cxx):
+
+ Module 2000
+ Interface 2001
+ Function 2002
+ Service 2003
+ Property 2004
+
+ Enum 2005
+ EnumValue 2006
+ Typedef 2007
+ Struct 2008
+ StructElement 2009
+
+ Exception 2010
+ ConstantGroup 2011
+ Constant 2012
+ Singleton 2013
+ Attribute 2014
+ SglIfcService 2015
+ SglIfcSingleton 2016
+*/
+const int C_nNumberOfIdlTypes = 17;
+const char * C_sTypeNames[C_nNumberOfIdlTypes] =
+ { "module ", "interface ", "function ", "service ", "property ",
+ "enum ", "value ", "typedef ", "struct ", "field ",
+ "exception ", "constants group ", "constant ","singleton ", "attribute ",
+ "service", "singleton"
+ };
+const char * C_sOwnerNames[C_nNumberOfIdlTypes] =
+ { "module ", "module ", "interface ", "module ", "service ",
+ "module ", "enum ", "module ", "module ", "", // could be struct or exception
+ "module ", "module ", "constants group ", "module ", "interface ",
+ "module", "module"
+ };
+const intt C_nNamesArrayOffset = intt(ary::idl::Module::class_id);
+const int C_nIxField = 9;
+
+
+
+
+const char C_cAlphabet[] =
+"<a class=\"inverse\" href=\"index-1.html\"><B>A</B></a> <a class=\"inverse\" href=\"index-2.html\"><B>B</B></a> <a class=\"inverse\" href=\"index-3.html\"><B>C</B></a> <a class=\"inverse\" href=\"index-4.html\"><B>D</B></a> <a class=\"inverse\" href=\"index-5.html\"><B>E</B></a> "
+"<a class=\"inverse\" href=\"index-6.html\"><B>F</B></a> <a class=\"inverse\" href=\"index-7.html\"><B>G</B></a> <a class=\"inverse\" href=\"index-8.html\"><B>H</B></a> <a class=\"inverse\" href=\"index-9.html\"><B>I</B></a> <a class=\"inverse\" href=\"index-10.html\"><B>J</B></a> "
+"<a class=\"inverse\" href=\"index-11.html\"><B>K</B></a> <a class=\"inverse\" href=\"index-12.html\"><B>L</B></a> <a class=\"inverse\" href=\"index-13.html\"><B>M</B></a> <a class=\"inverse\" href=\"index-14.html\"><B>N</B></a> <a class=\"inverse\" href=\"index-15.html\"><B>O</B></a> "
+"<a class=\"inverse\" href=\"index-16.html\"><B>P</B></a> <a class=\"inverse\" href=\"index-17.html\"><B>Q</B></a> <a class=\"inverse\" href=\"index-18.html\"><B>R</B></a> <a class=\"inverse\" href=\"index-19.html\"><B>S</B></a> <a class=\"inverse\" href=\"index-20.html\"><B>T</B></a> "
+"<a class=\"inverse\" href=\"index-21.html\"><B>U</B></a> <a class=\"inverse\" href=\"index-22.html\"><B>V</B></a> <a class=\"inverse\" href=\"index-23.html\"><B>W</B></a> <a class=\"inverse\" href=\"index-24.html\"><B>X</B></a> <a class=\"inverse\" href=\"index-25.html\"><B>Y</B></a> "
+"<a class=\"inverse\" href=\"index-26.html\"><B>Z</B></a>";
+
+
+
+HF_IdlGlobalIndex::PageData G_PageData;
+
+} // end anonymous namespace
+
+
+inline void
+HF_IdlGlobalIndex::write_EntryItself( Xml::Element & o_destination,
+ const ary::idl::CodeEntity & i_ce,
+ const HF_IdlTypeText & i_typeLinkWriter ) const
+{
+ i_typeLinkWriter.Produce_IndexLink(o_destination, i_ce);
+ o_destination << " - ";
+}
+
+
+HF_IdlGlobalIndex::HF_IdlGlobalIndex( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlGlobalIndex::~HF_IdlGlobalIndex()
+{
+}
+
+void
+HF_IdlGlobalIndex::Produce_Page(ary::idl::alphabetical_index::E_Letter i_letter) const
+{
+ make_Navibar();
+
+ HF_TitleTable
+ aTitle(CurOut());
+ StreamLock sl(100);
+ aTitle.Produce_Title( sl()
+ << "Global Index "
+ << ( i_letter != ary::idl::alphabetical_index::non_alpha
+ ? char(int(i_letter)-'a'+'A')
+ : '_' )
+ << c_str );
+
+ // Letters Index
+ aTitle.Add_Row()
+ << new Xml::XmlCode(
+ "<p align=\"center\"><a href=\"index-1.html\"><b>A</b></a> <a href=\"index-2.html\"><b>B</b></a> <a href=\"index-3.html\"><b>C</b></a> <a href=\"index-4.html\"><b>D</b></a> <a href=\"index-5.html\"><b>E</b></a> <a href=\"index-6.html\"><b>F</b></a> <a href=\"index-7.html\"><b>G</b></a> <a href=\"index-8.html\"><b>H</b></a> <a href=\"index-9.html\"><b>I</b></a> <a href=\"index-10.html\"><b>J</b></a>"
+ " <a href=\"index-11.html\"><b>K</b></a> <a href=\"index-12.html\"><b>L</b></a> <a href=\"index-13.html\"><b>M</b></a> <a href=\"index-14.html\"><b>N</b></a> <a href=\"index-15.html\"><b>O</b></a> <a href=\"index-16.html\"><b>P</b></a> <a href=\"index-17.html\"><b>Q</b></a> <a href=\"index-18.html\"><b>R</b></a> <a href=\"index-19.html\"><b>S</b></a> <a href=\"index-20.html\"><b>T</b></a>"
+ " <a href=\"index-21.html\"><b>U</b></a> <a href=\"index-22.html\"><b>V</b></a> <a href=\"index-23.html\"><b>W</b></a> <a href=\"index-24.html\"><b>X</b></a> <a href=\"index-25.html\"><b>Y</b></a> <a href=\"index-26.html\"><b>Z</b></a> <a href=\"index-27.html\"><b>_</b></a></p>" );
+
+ Out().Enter(CurOut() >> *new Html::DefList);
+
+ csv::erase_container(G_PageData);
+ Env().Data().Get_IndexData(G_PageData, i_letter);
+
+ // Helper object to produce links to the index Entries.
+ HF_IdlTypeText aTypeLinkWriter(Env(),HF_IdlTypeText::use_for_javacompatible_index);
+
+ PageData::const_iterator itEnd = G_PageData.end();
+ for ( PageData::const_iterator iter = G_PageData.begin();
+ iter != itEnd;
+ ++iter )
+ {
+ produce_Line(iter, aTypeLinkWriter);
+ } // end for
+
+ Out().Leave();
+ CurOut() << new Html::HorizontalLine;
+}
+
+void
+HF_IdlGlobalIndex::make_Navibar() const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_IndexMainRow();
+
+ CurOut() << new Html::HorizontalLine();
+}
+
+void
+HF_IdlGlobalIndex::produce_Line( PageData::const_iterator i_entry,
+ const HF_IdlTypeText & i_typeLinkWriter) const
+{
+ const client &
+ rCe = Env().Data().Find_Ce(*i_entry);
+ if (NOT rCe.Owner().IsValid())
+ return; // Omit global namespace.
+
+ // The destination for the created output:
+ Xml::Element & rDT = CurOut() >> *new Html::DefListTerm;
+
+ /** The following code is intended to produce an output that
+ will be recognized by the context help system of Forte.
+ That is reached by making it similar to the indices, that
+ Javadoc produces.
+ If the link to the Entry contains a hashmark, the Forte-Help
+ requires following a link to the owner.
+ But if there is no hashmark, the following link must go to
+ the same Entry again. Doesn't make really sense :-(, but that's
+ like it is.
+ */
+ write_EntryItself(rDT,rCe,i_typeLinkWriter);
+ if (rCe.SightLevel() == ary::idl::sl_Member)
+ write_OwnerOfEntry(rDT,rCe,i_typeLinkWriter);
+ else
+ write_EntrySecondTime(rDT,rCe,i_typeLinkWriter);
+
+ // This produces an empty "<dd></dd>", which is also needed to reach
+ // similarity to the Javadoc index:
+ CurOut() << new Html::DefListDefinition;
+}
+
+void
+HF_IdlGlobalIndex::write_OwnerOfEntry( Xml::Element & o_destination,
+ const ary::idl::CodeEntity & i_ce,
+ const HF_IdlTypeText & i_typeLinkWriter ) const
+{
+ const client &
+ rOwner = Env().Data().Find_Ce(i_ce.Owner());
+
+ int nIx = int(i_ce.AryClass() - C_nNamesArrayOffset);
+ csv_assert(csv::in_range(0,nIx,C_nNumberOfIdlTypes));
+
+ o_destination << C_sTypeNames[nIx]
+ << "in ";
+ if (nIx != C_nIxField)
+ {
+ o_destination << C_sOwnerNames[nIx];
+ }
+ else
+ {
+ uintt
+ nOwnerIx = rOwner.AryClass() - C_nNamesArrayOffset;
+ csv_assert(
+ nOwnerIx < static_cast< unsigned int >(C_nNumberOfIdlTypes));
+ o_destination << C_sTypeNames[nOwnerIx];
+ }
+ i_typeLinkWriter.Produce_IndexOwnerLink(o_destination, rOwner);
+}
+
+void
+HF_IdlGlobalIndex::write_EntrySecondTime( Xml::Element & o_destination,
+ const ary::idl::CodeEntity & i_ce,
+ const HF_IdlTypeText & i_typeLinkWriter ) const
+{
+ int nIx = int(i_ce.AryClass() - C_nNamesArrayOffset);
+ csv_assert(csv::in_range(0,nIx,C_nNumberOfIdlTypes));
+
+ o_destination << C_sTypeNames[nIx]
+ << " ";
+ i_typeLinkWriter.Produce_IndexSecondEntryLink(o_destination, i_ce);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_globalindex.hxx b/autodoc/source/display/idl/hfi_globalindex.hxx
new file mode 100644
index 000000000000..fe1c254b47f6
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_globalindex.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 ADC_DISPLAY_HFI_GLOBALINDEX_HXX
+#define ADC_DISPLAY_HFI_GLOBALINDEX_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_gate.hxx>
+
+
+class HF_IdlTypeText;
+
+class HF_IdlGlobalIndex : public HtmlFactory_Idl
+{
+ public:
+ typedef std::vector<ary::idl::Ce_id> PageData;
+
+ HF_IdlGlobalIndex(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlGlobalIndex();
+
+ void Produce_Page(
+ ary::idl::alphabetical_index::E_Letter
+ i_letter ) const;
+ private:
+ void make_Navibar() const; /// Called by @->Produce_Page()
+ void produce_Line( /// Called by @->Produce_Page()
+ PageData::const_iterator
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+
+ void write_EntryItself( /// Called by @->produceLine()
+ Xml::Element & o_destination,
+ const ary::idl::CodeEntity &
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+
+ void write_OwnerOfEntry( /// Called by @->produceLine()
+ Xml::Element & o_destination,
+ const ary::idl::CodeEntity &
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+
+ void write_EntrySecondTime( /// Called by @->produceLine()
+ Xml::Element & o_destination,
+ const ary::idl::CodeEntity &
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_hierarchy.cxx b/autodoc/source/display/idl/hfi_hierarchy.cxx
new file mode 100644
index 000000000000..c968b9d2c8d4
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_hierarchy.cxx
@@ -0,0 +1,205 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_hierarchy.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <udm/html/htmlitem.hxx>
+#include <ary/stdconstiter.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_type.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+#include "hfi_interface.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_env.hxx"
+
+
+
+HF_IdlBaseNode::HF_IdlBaseNode( const TYPE & i_rType,
+ const GATE & i_rGate,
+ intt i_nPositionOffset,
+ HF_IdlBaseNode & io_rDerived )
+ : nType(i_rType.TypeId()),
+ aBases(),
+ nCountBases(0),
+ nPosition(i_nPositionOffset),
+ pDerived(&io_rDerived)
+{
+ Ce_id nCe = i_rGate.Types().Search_CeRelatedTo(nType);
+ if (nCe.IsValid())
+ {
+ GatherBases(i_rGate.Ces().Find_Ce(nCe), i_rGate);
+ }
+}
+
+HF_IdlBaseNode::~HF_IdlBaseNode()
+{
+}
+
+void
+HF_IdlBaseNode::FillPositionList( std::vector< const HF_IdlBaseNode* > & o_rPositionList ) const
+{
+ for ( BaseList::const_iterator it = aBases.begin();
+ it != aBases.end();
+ ++it )
+ {
+ (*it)->FillPositionList(o_rPositionList);
+ } // end for
+
+ o_rPositionList.push_back(this);
+}
+
+void
+HF_IdlBaseNode::GatherBases( const CE & i_rCe,
+ const GATE & i_rGate )
+{
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ aHelp;
+ ary::idl::ifc_interface::attr::Get_Bases(aHelp,i_rCe);
+
+ for ( ary::StdConstIterator<ary::idl::CommentedRelation> & it = *aHelp;
+ it.operator bool();
+ ++it )
+ {
+ const TYPE &
+ rBaseType = i_rGate.Types().Find_Type((*it).Type());
+
+ Dyn<HF_IdlBaseNode>
+ pBaseNode( new HF_IdlBaseNode( rBaseType,
+ i_rGate,
+ nPosition,
+ *this )
+ );
+
+ intt nAddedBases = pBaseNode->BaseCount() + 1;
+ nCountBases += nAddedBases;
+ nPosition += nAddedBases;
+ aBases.push_back( pBaseNode.Release() );
+ } // end for
+}
+
+
+void
+Write_BaseHierarchy( csi::xml::Element & o_rOut,
+ HtmlEnvironment_Idl & i_env,
+ const ary::idl::CodeEntity & i_ce )
+{
+ csi::xml::Element &
+ rPre = o_rOut
+ >> *new csi::xml::AnElement("pre")
+ << new csi::html::StyleAttr("font-family:monospace;");
+
+ std::vector<uintt>
+ aSetColumns;
+ rPre
+ >> *new csi::html::Strong
+ << i_ce.LocalName();
+ rPre
+ << "\n";
+ Write_Bases( rPre,
+ i_env,
+ i_ce,
+ aSetColumns );
+ rPre
+ << "\n";
+
+}
+
+
+void
+Write_Bases( csi::xml::Element & o_out,
+ HtmlEnvironment_Idl & i_env,
+ const ary::idl::CodeEntity & i_rCe,
+ std::vector<uintt> & io_setColumns )
+{
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ aHelp;
+ ary::idl::ifc_interface::attr::Get_Bases(aHelp,i_rCe);
+
+ for ( ary::StdConstIterator<ary::idl::CommentedRelation> & it = *aHelp;
+ it.operator bool();
+ // NO INCREMENT HERE, see below
+ )
+ {
+ ary::idl::Type_id
+ nType = (*it).Type();
+ ++it;
+ bool
+ bThereComesMore = it.operator bool();
+
+ ary::idl::Ce_id
+ nCe = i_env.Gate().Types().Search_CeRelatedTo(nType);
+ if (nCe.IsValid())
+ {
+ // KORR_FUTURE
+ // Rather check for id(!) of com::sun::star::uno::XInterface.
+ if (i_env.Gate().Ces().Find_Ce(nCe).LocalName() == "XInterface")
+ continue;
+ }
+
+ for (uintt i = 0; i < io_setColumns.size(); ++i)
+ {
+ if (io_setColumns[i] == 1)
+ o_out << new csi::xml::XmlCode("&#x2503");
+ else
+ o_out << " ";
+ o_out << " ";
+ }
+
+ if (bThereComesMore)
+ o_out << new csi::xml::XmlCode("&#x2523");
+ else
+ o_out << new csi::xml::XmlCode("&#x2517");
+ o_out << " ";
+
+ HF_IdlTypeText
+ aDisplay( i_env, o_out, true, i_env.CurPageCe());
+ aDisplay.Produce_byData(nType);
+ o_out << "\n";
+
+ if (nCe.IsValid())
+ {
+ io_setColumns.push_back(bThereComesMore ? 1 : 0);
+
+ const ary::idl::CodeEntity &
+ rCe = i_env.Gate().Ces().Find_Ce(nCe);
+ Write_Bases( o_out,
+ i_env,
+ rCe,
+ io_setColumns );
+ io_setColumns.pop_back();
+ }
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_hierarchy.hxx b/autodoc/source/display/idl/hfi_hierarchy.hxx
new file mode 100644
index 000000000000..1da58b14cf0c
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_hierarchy.hxx
@@ -0,0 +1,127 @@
+/* -*- 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 ADC_DISPLAY_HFI_HIERARCHY_HXX
+#define ADC_DISPLAY_HFI_HIERARCHY_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+#include <ary/idl/i_types4idl.hxx>
+
+
+namespace csi
+{
+namespace xml
+{
+ class Element;
+}
+}
+
+
+class HF_IdlInterface;
+class HtmlEnvironment_Idl;
+
+
+
+/** Represents a node in an pyramidic inheritance hierarchy which shall be
+ displayed in text mode.
+*/
+class HF_IdlBaseNode
+{
+ public:
+ typedef ary::idl::CodeEntity CE;
+ typedef ary::idl::Type TYPE;
+ typedef ary::idl::Gate GATE;
+ typedef ary::idl::Ce_id Ce_id;
+ typedef ary::idl::Type_id Type_id;
+
+ /** @descr
+ The constructor recursively calls further constructors of
+ HF_IdlBaseNode for the bases of ->i_rType, if ->i_rType matches to a
+ ->CE.
+ So it builds up a complete hierarchy tree of all base classes
+ of ->i_pEntity.
+ */
+ HF_IdlBaseNode(
+ const TYPE & i_rType,
+ const GATE & i_rGate,
+ intt i_nPositionOffset,
+ HF_IdlBaseNode & io_rDerived );
+ ~HF_IdlBaseNode();
+
+ /** Recursively fills ->o_rPositionList with the instances of base
+ classes in the order in which they will be displayed.
+ */
+ void FillPositionList(
+ std::vector< const HF_IdlBaseNode* > &
+ o_rPositionList ) const;
+
+ Type_id Type() const { return nType; }
+ intt BaseCount() const { return nCountBases; }
+ intt Position() const { return nPosition; }
+ int Xpos() const { return 3*Position(); }
+ int Ypos() const { return 2*Position(); }
+ const HF_IdlBaseNode * Derived() const { return pDerived; }
+
+ private:
+ typedef std::vector< DYN HF_IdlBaseNode* > BaseList;
+
+ void GatherBases(
+ const CE & i_rCe,
+ const GATE & i_rGate );
+
+ // DATA
+ Type_id nType;
+ BaseList aBases;
+ intt nCountBases;
+ intt nPosition;
+ HF_IdlBaseNode * pDerived;
+};
+
+void Write_BaseHierarchy(
+ csi::xml::Element & o_rOut,
+ HtmlEnvironment_Idl &
+ i_env,
+ const ary::idl::CodeEntity &
+ i_rCe );
+
+void Write_Bases(
+ csi::xml::Element & o_rOut,
+ HtmlEnvironment_Idl &
+ i_env,
+ const ary::idl::CodeEntity &
+ i_rCe,
+ std::vector<uintt> &
+ io_setColumns );
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_interface.cxx b/autodoc/source/display/idl/hfi_interface.cxx
new file mode 100644
index 000000000000..d5e35a5e2a83
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_interface.cxx
@@ -0,0 +1,360 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_interface.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ik_function.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_doc.hxx"
+#include "hfi_hierarchy.hxx"
+#include "hfi_method.hxx"
+#include "hfi_navibar.hxx"
+#include "hfi_property.hxx"
+#include "hfi_tag.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+extern const String
+ C_sCePrefix_Interface("interface");
+
+namespace
+{
+
+const String
+ C_sBaseInterface("Base Interfaces");
+const String
+ C_sList_BaseComments("Comments on Base Interfaces");
+const String
+ C_sList_Methods("Methods' Summary");
+const String
+ C_sList_Methods_Label("MethodsSummary");
+const String
+ C_sDetails_Methods("Methods' Details");
+const String
+ C_sDetails_Methods_Label("MethodsDetails");
+
+const String
+ C_sList_Attributes("Attributes' Summary");
+const String
+ C_sList_Attributes_Label("AttributesSummary");
+const String
+ C_sList_AttributesDetails("Attributes' Details");
+const String
+ C_sList_AttributesDetails_Label("AttributesDetails");
+
+
+
+enum E_SubListIndices
+{
+ sli_MethodsSummay = 0,
+ sli_AttributesSummary = 1,
+ sli_MethodDetails = 2,
+ sli_AttributesDetails = 3
+};
+
+} //anonymous namespace
+
+
+
+
+HF_IdlInterface::HF_IdlInterface( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut),
+ eCurProducedMembers(mem_none)
+{
+}
+
+HF_IdlInterface::~HF_IdlInterface()
+{
+}
+
+void
+HF_IdlInterface::Produce_byData( const client & i_ce ) const
+{
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+
+ produce_Title(aTitle, C_sCePrefix_Interface, i_ce);
+
+ produce_BaseHierarchy( aTitle.Add_Row(),
+ i_ce,
+ C_sBaseInterface );
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ dyn_ce_list dpFunctions;
+ ary::idl::ifc_interface::attr::Get_Functions(dpFunctions, i_ce);
+ if ( (*dpFunctions).operator bool() )
+ {
+ eCurProducedMembers = mem_Functions;
+
+ produce_Members( *dpFunctions,
+ C_sList_Methods,
+ C_sList_Methods_Label,
+ C_sDetails_Methods,
+ C_sDetails_Methods_Label,
+ HtmlFactory_Idl::viewtype_summary );
+ pNaviSubRow->SwitchOn(sli_MethodsSummay);
+ }
+
+ dyn_ce_list
+ dpAttributes;
+ ary::idl::ifc_interface::attr::Get_Attributes(dpAttributes, i_ce);
+ if ( (*dpAttributes).operator bool() )
+ {
+ eCurProducedMembers = mem_Attributes;
+
+ produce_Members( *dpAttributes,
+ C_sList_Attributes,
+ C_sList_Attributes_Label,
+ C_sList_AttributesDetails,
+ C_sList_AttributesDetails_Label,
+ HtmlFactory_Idl::viewtype_summary );
+ pNaviSubRow->SwitchOn(sli_AttributesSummary);
+ }
+
+ ary::idl::ifc_interface::attr::Get_Functions(dpFunctions, i_ce);
+ if ( (*dpFunctions).operator bool() )
+ {
+ eCurProducedMembers = mem_Functions;
+
+ produce_Members( *dpFunctions,
+ C_sList_Methods,
+ C_sList_Methods_Label,
+ C_sDetails_Methods,
+ C_sDetails_Methods_Label,
+ HtmlFactory_Idl::viewtype_details );
+ pNaviSubRow->SwitchOn(sli_MethodDetails);
+ }
+
+ ary::idl::ifc_interface::attr::Get_Attributes(dpAttributes, i_ce);
+ if ( (*dpAttributes).operator bool() )
+ {
+ eCurProducedMembers = mem_Attributes;
+
+ produce_Members( *dpAttributes,
+ C_sList_Attributes,
+ C_sList_Attributes_Label,
+ C_sList_AttributesDetails,
+ C_sList_AttributesDetails_Label,
+ HtmlFactory_Idl::viewtype_details );
+ pNaviSubRow->SwitchOn(sli_AttributesDetails);
+ }
+
+ eCurProducedMembers = mem_none;
+
+ pNaviSubRow->Produce_Row();
+}
+
+DYN HF_NaviSubRow &
+HF_IdlInterface::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce);
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+ ret.AddItem(C_sList_Methods, C_sList_Methods_Label, false);
+ ret.AddItem(C_sList_Attributes, C_sList_Attributes_Label, false);
+ ret.AddItem(C_sDetails_Methods, C_sDetails_Methods_Label, false);
+ ret.AddItem(C_sList_AttributesDetails, C_sList_AttributesDetails_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+void
+HF_IdlInterface::produce_MemberDetails( HF_SubTitleTable & o_table,
+ const client & i_ce ) const
+{
+ switch (eCurProducedMembers)
+ {
+ case mem_Functions:
+ break;
+ case mem_Attributes:
+ {
+ HF_IdlAttribute
+ aAttribute( Env(), o_table);
+ aAttribute.Produce_byData( i_ce );
+ return;
+ };
+ default: //Won't happen.
+ return;
+ } // end switch
+
+ typedef ary::idl::ifc_function::attr funcAttr;
+
+ HF_IdlMethod
+ aFunction( Env(),
+ o_table.Add_Row()
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_MDetail) );
+
+ ary::Dyn_StdConstIterator<ary::idl::Parameter>
+ pParameters;
+ funcAttr::Get_Parameters(pParameters, i_ce);
+
+ ary::Dyn_StdConstIterator<ary::idl::Type_id>
+ pExceptions;
+ funcAttr::Get_Exceptions(pExceptions, i_ce);
+
+ aFunction.Produce_byData( i_ce.LocalName(),
+ funcAttr::ReturnType(i_ce),
+ *pParameters,
+ *pExceptions,
+ funcAttr::IsOneway(i_ce),
+ funcAttr::HasEllipse(i_ce),
+ i_ce );
+}
+
+void
+HF_IdlInterface::produce_BaseHierarchy( Xml::Element & o_screen,
+ const client & i_ce,
+ const String & i_sLabel ) const
+{
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ pHelp;
+ ary::idl::ifc_interface::attr::Get_Bases(pHelp, i_ce);
+ if (NOT (*pHelp).operator bool())
+ return;
+
+ // Check for XInterface as only base:
+ ary::StdConstIterator<ary::idl::CommentedRelation> &
+ itTest = *pHelp;
+ ary::idl::Ce_id
+ nCe = Env().Gate().Types().Search_CeRelatedTo((*itTest).Type());
+ if (nCe.IsValid())
+ {
+ // KORR_FUTURE
+ // Rather check for id(!) of com::sun::star::uno::XInterface.
+ if (Env().Gate().Ces().Find_Ce(nCe).LocalName() == "XInterface")
+ {
+ ++itTest;
+ if (NOT itTest.operator bool())
+ return;
+ }
+ }
+
+ // Write hierarchy:
+
+ HF_DocEntryList
+ aDocList( o_screen );
+ aDocList.Produce_Term(i_sLabel);
+ Xml::Element &
+ rBaseList = aDocList.Produce_Definition();
+
+// NEW
+ Write_BaseHierarchy(rBaseList, Env(), i_ce);
+
+ // Write comments:
+ // KORR_FUTURE: Make sure, no empty table is constructed when comments list is empty.
+ HF_SubTitleTable
+ aBaseTable( aDocList.Produce_Definition(),
+ "",
+ C_sList_BaseComments,
+ 2,
+ HF_SubTitleTable::sublevel_3 );
+
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ pBases;
+ ary::idl::ifc_interface::attr::Get_Bases(pBases, i_ce);
+ for ( ary::StdConstIterator<ary::idl::CommentedRelation> & it = *pBases;
+ it.operator bool();
+ ++it )
+ {
+ Xml::Element &
+ rRow = aBaseTable.Add_Row();
+
+ Xml::Element &
+ rTerm = rRow
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryLeft);
+ HF_IdlTypeText
+ aTypeDisplay( Env(), rTerm, false, 0);
+ aTypeDisplay.Produce_byData((*it).Type());
+
+ Xml::Element &
+ rDocu = rRow
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryRight);
+
+ HF_DocEntryList
+ aDocuList(rDocu);
+
+ if ((*it).Info() != 0)
+ {
+// aDocuList.Produce_Term("Comment on Base Reference");
+
+ HF_IdlDocu
+ aDocuDisplay(Env(), aDocuList);
+ aDocuDisplay.Produce_fromReference(*(*it).Info(), i_ce);
+ }
+ else
+ {
+ const client *
+ pCe = Env().Linker().Search_CeFromType((*it).Type());
+ const ce_info *
+ pShort = pCe != 0
+ ? Get_IdlDocu(pCe->Docu())
+ : (const ce_info *)(0);
+ if ( pShort != 0 )
+ {
+ aDocuList.Produce_NormalTerm("(referenced interface's summary:)");
+
+ Xml::Element &
+ rDef = aDocuList.Produce_Definition();
+ HF_IdlDocuTextDisplay
+ aShortDisplay( Env(), &rDef, *pCe);
+ pShort->Short().DisplayAt(aShortDisplay);
+ } // end if (pShort != 0)
+ } // endif ( (*i_commentedRef).Info() != 0 ) else
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_interface.hxx b/autodoc/source/display/idl/hfi_interface.hxx
new file mode 100644
index 000000000000..5566649381da
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_interface.hxx
@@ -0,0 +1,93 @@
+/* -*- 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 ADC_DISPLAY_HFI_INTERFACE_HXX
+#define ADC_DISPLAY_HFI_INTERFACE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_types4idl.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+
+
+class HF_NaviSubRow;
+class HF_SubTitleTable;
+class HF_IdlBaseNode;
+
+class HF_IdlInterface : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlInterface(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlInterface();
+
+ void Produce_byData(
+ const client & i_ce ) const;
+ private:
+ // Locals
+ DYN HF_NaviSubRow & make_Navibar(
+ const client & i_ce ) const;
+
+ virtual void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & ce ) const;
+ void produce_BaseHierarchy(
+ Xml::Element & o_screen,
+ const client & i_ce,
+ const String & i_sLabel ) const;
+
+ // Locals
+ enum E_CurProducedMembers
+ {
+ mem_none,
+ mem_Functions,
+ mem_Attributes
+ };
+
+ // DATA
+ mutable E_CurProducedMembers
+ eCurProducedMembers;
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Interface;
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_linklist.cxx b/autodoc/source/display/idl/hfi_linklist.cxx
new file mode 100644
index 000000000000..f0cf47e29c8c
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_linklist.cxx
@@ -0,0 +1,380 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_linklist.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_doc.hxx"
+#include "hfi_tag.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_ary.hxx"
+#include "hi_env.hxx"
+
+
+
+
+//******************* HF_CommentedLink_Table **********************************//
+
+HF_CommentedLink_Table::HF_CommentedLink_Table( Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ const String & i_sTitle,
+ const String & i_sLabel,
+ bool i_bBorder )
+ : HtmlFactory_Idl(io_rEnv,&o_rOut),
+ pTable( new Html::Table( (i_bBorder ? "1" : "0"), "100%", "5", "0") ),
+ pCurLinkColumn(0),
+ pCurCommentColumn(0)
+{
+ *pTable
+ << new Html::ClassAttr("commentedlinks");
+
+ CurOut()
+ >> *new Html::Label(i_sLabel)
+ << new Html::LineBreak;
+ CurOut()
+ << pTable;
+// HF_SubTitle aTitle(*pTable);
+// aTitle.Produce_it(i_sTitle);
+}
+
+HF_CommentedLink_Table::~HF_CommentedLink_Table()
+{
+}
+
+void
+HF_CommentedLink_Table::Add_Line()
+{
+ Html::TableRow &
+ rRow = pTable->AddRow();
+
+ pCurLinkColumn = & (rRow.AddCell()
+ << new Html::WidthAttr("30%")
+ << new Xml::AnAttribute("valign","top") );
+ pCurCommentColumn = & rRow.AddCell();
+}
+
+Xml::Element &
+HF_CommentedLink_Table::Cur_LinkColumn()
+{
+ csv_assert(pCurLinkColumn != 0);
+ return *pCurLinkColumn;
+}
+
+Xml::Element &
+HF_CommentedLink_Table::Cur_CommentColumn()
+{
+ csv_assert(pCurCommentColumn != 0);
+ return *pCurCommentColumn;
+}
+
+
+//******************* HF_MemberTable **********************************//
+
+HF_MemberTable::HF_MemberTable( Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ const String & i_sTitle,
+ const String & i_sLabel,
+ bool i_bInline )
+ : HtmlFactory_Idl(io_rEnv,&o_rOut),
+ pTable( new Html::Table("1", "100%", "5", "0") ),
+ pCurDeclaration(0),
+ pCurDescription(0),
+ bInline(i_bInline)
+{
+ *pTable
+ << new Html::ClassAttr("memberlist");
+
+ CurOut()
+ >> *new Html::Label(i_sLabel)
+ << new Html::LineBreak;
+ CurOut()
+ << pTable;
+// HF_SubTitle aTitle(*pTable);
+// aTitle.Produce_it(i_sTitle);
+}
+
+HF_MemberTable::~HF_MemberTable()
+{
+}
+
+void
+HF_MemberTable::Add_Line()
+{
+ if (bInline)
+ {
+ Html::TableRow & rRow = pTable->AddRow();
+
+ pCurDeclaration = &( rRow.AddCell()
+ << new Xml::AnAttribute("valign","top")
+ << new Html::WidthAttr("30%") );
+ pCurDescription = & rRow.AddCell();
+ }
+ else
+ {
+ Html::DefList *
+ pMemberSpace = new Html::DefList;
+ *pMemberSpace
+ << new Html::ClassAttr("member");
+
+ pTable->AddRow().AddCell() << pMemberSpace;
+
+ pCurDeclaration =
+ & ( *pMemberSpace
+ >> *new Html::DefListTerm
+ << new Html::ClassAttr("member") );
+ pCurDescription =
+ & ( *pMemberSpace
+ >> *new Html::DefListDefinition()
+ << new Html::ClassAttr("member") );
+ }
+}
+
+Xml::Element &
+HF_MemberTable::Cur_Declaration()
+{
+ csv_assert(pCurDeclaration != 0);
+ return *pCurDeclaration;
+}
+
+Xml::Element &
+HF_MemberTable::Cur_Description()
+{
+ csv_assert(pCurDescription != 0);
+ return *pCurDescription;
+}
+
+
+
+//******************* HF_IdlLinkList **********************************//
+
+HF_IdlLinkList::HF_IdlLinkList( Environment & io_rEnv,
+ Xml::Element * o_pOut )
+ : HtmlFactory_Idl(io_rEnv,o_pOut)
+{
+}
+
+HF_IdlLinkList::~HF_IdlLinkList()
+{
+}
+
+void
+HF_IdlLinkList::Produce_NamespaceMembers( const String & i_sTitle,
+ const String & i_sLabel,
+ const std::vector<ary::idl::Ce_id> & i_rList,
+ bool i_bNestedNamespaces ) const
+{
+ HF_CommentedLink_Table
+ aTableMaker( Env(), CurOut(),
+ i_sTitle, i_sLabel,
+ true );
+
+ std::vector<ary::idl::Ce_id>::const_iterator itEnd = i_rList.end();
+ for ( std::vector<ary::idl::Ce_id>::const_iterator it = i_rList.begin();
+ it != itEnd;
+ ++it )
+ {
+ static String sEntryName;
+ static String sEntryLink;
+ const ce_info *
+ pDocu = 0;
+ Get_EntryData_NamespaceMembers( sEntryName, sEntryLink, pDocu, *it, i_bNestedNamespaces );
+ aTableMaker.Add_Line();
+
+ aTableMaker.Cur_LinkColumn()
+ >> *new Html::Link(sEntryLink)
+ << sEntryName;
+
+ if ( pDocu != 0 )
+ {
+ HF_IdlShortDocu
+ aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() );
+ aTextDisplay.Produce_byData( pDocu );
+ }
+ } // end for
+}
+
+void
+HF_IdlLinkList::Produce_GlobalLinks( const String & i_sTitle,
+ const String & i_sLabel,
+ ce_list & i_rList ) const
+{
+ HF_CommentedLink_Table
+ aTableMaker( Env(), CurOut(),
+ i_sTitle, i_sLabel,
+ true );
+
+ for ( ; i_rList; ++i_rList )
+ {
+ aTableMaker.Add_Line();
+ HF_IdlTypeText
+ aLinkText( Env(), aTableMaker.Cur_LinkColumn(), true );
+ aLinkText.Produce_byData(*i_rList);
+
+ const ce_info *
+ pDocu = Get_EntryDocu(*i_rList);
+ if ( pDocu != 0 )
+ {
+ HF_IdlShortDocu
+ aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() );
+ aTextDisplay.Produce_byData( pDocu, *i_rList );
+ }
+ }
+}
+
+void
+HF_IdlLinkList::Produce_GlobalCommentedLinks( const String & i_sTitle,
+ const String & i_sLabel,
+ comref_list & i_rList ) const
+{
+ HF_CommentedLink_Table
+ aTableMaker( Env(), CurOut(),
+ i_sTitle, i_sLabel,
+ true );
+/*
+ for ( ; i_rList; ++i_rList )
+ {
+ aTableMaker.Add_Line();
+ HF_IdlTypeText
+ aLinkText( Env(), aTableMaker.Cur_LinkColumn(), true );
+ aLinkText.Produce_byData( (*i_rList).first );
+
+ HF_DocEntryList
+ aDocList( aTableMaker.Cur_CommentColumn() );
+ if ( (*i_rList).second != 0 )
+ {
+ HF_IdlDocu
+ aDocuDisplay( Env(), aDocList );
+ aDocuDisplay.Produce_byData( (*i_rList).second );
+ }
+ else
+ {
+ const ce_info *
+ pShort = Get_EntryDocu(
+ Env().Gate().Types().Search_CeRelatedTo(
+ (*i_rList).first) );
+ if ( pShort != 0 )
+ {
+ if (pShort->IsDeprecated())
+ {
+ aDocList.Produce_Term()
+ << "[ DEPRECATED ]";
+ }
+ if (pShort->IsOptional())
+ {
+ aDocList.Produce_Term()
+ << "[ OPTIONAL ]";
+ }
+
+ aDocList.Produce_Term()
+ << "Description";
+
+ HF_IdlDocuTextDisplay
+ aShortDisplay( Env(), &aDocList.Produce_Definition() );
+ aShortDisplay.Set_CurScopeTo(
+ Env().Gate().Types().Search_CeRelatedTo((*i_rList).first) );
+ pShort->Short().DisplayAt(aShortDisplay);
+ }
+ }
+ }
+*/
+}
+
+void
+HF_IdlLinkList::Produce_MemberLinks( const String & i_sTitle,
+ const String & i_sLabel,
+ ce_list & i_rList ) const
+{
+ HF_CommentedLink_Table
+ aTableMaker( Env(), CurOut(),
+ i_sTitle, i_sLabel,
+ true );
+
+/*
+ for ( ; i_rList; ++i_rList )
+ {
+ const ary::idl::CodeEntity &
+ rCe = Env().Gate().Ces().Find_Ce(*i_rList);
+
+ aTableMaker.Add_Line();
+ aTableMaker.Cur_LinkColumn()
+ >> *new Html::Link(
+ StreamLock(200)() << "#" << rCe.LocalName() << c_str)
+ << rCe.LocalName();
+
+ const ce_info *
+ pDocu = rCe.Docu();
+ if ( pDocu != 0 )
+ {
+ HF_IdlShortDocu
+ aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() );
+ aTextDisplay.Produce_byData( *pDocu );
+ }
+ } // end for
+*/
+}
+
+void
+HF_IdlLinkList::Get_EntryData_NamespaceMembers(
+ String & o_sEntryName,
+ String & o_sEntryLink,
+ const ce_info * & o_pDocu,
+ ce_id i_nMemberId,
+ bool i_bIsNestedNamespace ) const
+{
+ const ary::idl::CodeEntity &
+ rCe = Env().Data().Find_Ce(i_nMemberId);
+
+ o_sEntryName = rCe.LocalName();
+ o_sEntryLink = StreamLock(200)() << rCe.LocalName()
+ << ( i_bIsNestedNamespace
+ ? "/module-ix"
+ : "" )
+ << ".html"
+ << c_str;
+ o_pDocu = rCe.Docu();
+}
+
+const ary::doc::OldIdlDocu *
+HF_IdlLinkList::Get_EntryDocu(ce_id i_nMemberId) const
+{
+ if (i_nMemberId.IsValid())
+ return Env().Data().Find_Ce(i_nMemberId).Docu();
+ else
+ return 0;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_linklist.hxx b/autodoc/source/display/idl/hfi_linklist.hxx
new file mode 100644
index 000000000000..83a8998a2976
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_linklist.hxx
@@ -0,0 +1,147 @@
+/* -*- 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 ADC_DISPLAY_HFI_LINKLIST_HXX
+#define ADC_DISPLAY_HFI_LINKLIST_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+#include <ary_i/ci_text2.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+
+
+
+
+class HF_CommentedLink_Table : public HtmlFactory_Idl
+{
+ public:
+ HF_CommentedLink_Table(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ const String & i_sTitle,
+ const String & i_sLabel,
+ bool i_bBorder = false );
+ virtual ~HF_CommentedLink_Table();
+
+ void Add_Line();
+ Xml::Element & Cur_LinkColumn();
+ Xml::Element & Cur_CommentColumn();
+
+ private:
+ // DATA
+ Html::Table * pTable;
+ Xml::Element * pCurLinkColumn;
+ Xml::Element * pCurCommentColumn;
+};
+
+class HF_MemberTable : public HtmlFactory_Idl
+{
+ public:
+ HF_MemberTable(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ const String & i_sTitle,
+ const String & i_sLabel,
+ bool i_bInline = false );
+ virtual ~HF_MemberTable();
+
+ void Add_Line();
+ Xml::Element & Cur_Declaration();
+ Xml::Element & Cur_Description();
+
+ private:
+ // DATA
+ Html::Table * pTable;
+ Xml::Element * pCurDeclaration;
+ Xml::Element * pCurDescription;
+ bool bInline;
+};
+
+
+
+
+class HF_IdlLinkList : public HtmlFactory_Idl
+{
+ public:
+ typedef ary::StdConstIterator<ary::idl::CommentedRelation>
+ comref_list;
+
+ HF_IdlLinkList(
+ Environment & io_rEnv,
+ Xml::Element * o_pOut );
+ virtual ~HF_IdlLinkList();
+
+ void Produce_NamespaceMembers(
+ const String & i_sTitle,
+ const String & i_sLabel,
+ const std::vector<ary::idl::Ce_id> &
+ i_rList,
+ bool i_bNestedNamespaces = false ) const;
+ void Produce_GlobalLinks(
+ const String & i_sTitle,
+ const String & i_sLabel,
+ ce_list & i_rList ) const;
+ void Produce_GlobalCommentedLinks(
+ const String & i_sTitle,
+ const String & i_sLabel,
+ comref_list & i_rList ) const;
+ void Produce_MemberLinks(
+ const String & i_sTitle,
+ const String & i_sLabel,
+ ce_list & i_rList ) const;
+ private:
+ void Get_EntryData_NamespaceMembers(
+ String & o_sEntryName,
+ String & o_sEntryLink,
+ const ce_info * & o_pDocuText,
+ ce_id i_nMemberId,
+ bool i_bIsNestedNamespace ) const;
+ const ce_info * Get_EntryDocu(
+ ce_id i_nMemberId ) const;
+};
+
+
+
+
+
+
+
+
+// IMPLEMENTATION
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_method.cxx b/autodoc/source/display/idl/hfi_method.cxx
new file mode 100644
index 000000000000..b5d1aa9d3d8c
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_method.cxx
@@ -0,0 +1,238 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_method.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/i_param.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_funcdecl.hxx>
+#include "hfi_doc.hxx"
+#include "hfi_globalindex.hxx"
+#include "hfi_typetext.hxx"
+
+
+
+
+
+HF_IdlMethod::HF_IdlMethod( Environment & io_rEnv,
+ Xml::Element & o_cell)
+ : HtmlFactory_Idl(io_rEnv,&o_cell)
+{
+}
+
+
+HF_IdlMethod::~HF_IdlMethod()
+{
+}
+
+
+void
+HF_IdlMethod::Produce_byData( const String & i_sName,
+ type_id i_nReturnType,
+ param_list & i_rParams,
+ type_list & i_rExceptions,
+ bool i_bOneway,
+ bool i_bEllipse,
+ const client & i_ce ) const
+{
+ CurOut()
+ >> *new Html::Label(i_sName)
+ << new Html::ClassAttr(C_sMemberTitle)
+ << i_sName;
+ enter_ContentCell();
+ write_Declaration( i_sName,
+ i_nReturnType,
+ i_rParams,
+ i_rExceptions,
+ i_bOneway,
+ i_bEllipse );
+ CurOut() << new Html::HorizontalLine;
+ write_Docu(CurOut(), i_ce);
+ leave_ContentCell();
+}
+
+void
+HF_IdlMethod::write_Declaration( const String & i_sName,
+ type_id i_nReturnType,
+ param_list & i_rParams,
+ type_list & i_rExceptions,
+ bool i_bOneway,
+ bool i_bEllipse ) const
+{
+ HF_FunctionDeclaration
+ aDecl(CurOut(), "raises") ;
+ Xml::Element &
+ rReturnLine = aDecl.ReturnCell();
+
+ // Return line:
+ if (i_bOneway)
+ rReturnLine << "[oneway] ";
+ if (i_nReturnType.IsValid())
+ { // Normal function, but not constructors:
+ HF_IdlTypeText
+ aReturn(Env(), rReturnLine, true);
+ aReturn.Produce_byData(i_nReturnType);
+ }
+
+ // Main line:
+ Xml::Element &
+ rNameCell = aDecl.NameCell();
+ rNameCell
+ >> *new Html::Bold
+ << i_sName;
+
+ Xml::Element *
+ pParamEnd = 0;
+
+ bool bParams = i_rParams.operator bool();
+ if (bParams)
+ {
+ rNameCell
+ << "(";
+
+ pParamEnd = write_Param( aDecl, *i_rParams );
+ for (++i_rParams; i_rParams; ++i_rParams)
+ {
+ *pParamEnd << ",";
+ pParamEnd = write_Param( aDecl, *i_rParams );
+ } // end for
+
+ if (i_bEllipse)
+ {
+ Xml::Element &
+ rParamType = aDecl.NewParamTypeCell();
+ rParamType
+ << " ...";
+ pParamEnd = &rParamType;
+ }
+ *pParamEnd
+ << " )";
+ }
+ else
+ {
+ rNameCell
+ << "()";
+ }
+
+ if ( i_rExceptions.operator bool() )
+ {
+ Xml::Element &
+ rExcOut = aDecl.ExceptionCell();
+ HF_IdlTypeText
+ aExc(Env(), rExcOut, true);
+ aExc.Produce_byData(*i_rExceptions);
+
+ for (++i_rExceptions; i_rExceptions; ++i_rExceptions)
+ {
+ rExcOut
+ << ","
+ << new Html::LineBreak;
+ aExc.Produce_byData(*i_rExceptions);
+ } // end for
+
+ rExcOut << " );";
+ }
+ else if (bParams)
+ {
+ *pParamEnd << ";";
+ }
+ else
+ {
+ rNameCell << ";";
+ }
+}
+
+Xml::Element *
+HF_IdlMethod::write_Param( HF_FunctionDeclaration & o_decl,
+ const ary::idl::Parameter & i_param ) const
+{
+ Xml::Element &
+ rTypeCell = o_decl.NewParamTypeCell();
+ Xml::Element &
+ rNameCell = o_decl.ParamNameCell();
+
+ switch ( i_param.Direction() )
+ {
+ case ary::idl::param_in:
+ rTypeCell << "[in] ";
+ break;
+ case ary::idl::param_out:
+ rTypeCell << "[out] ";
+ break;
+ case ary::idl::param_inout:
+ rTypeCell << "[inout] ";
+ break;
+ } // end switch
+
+ HF_IdlTypeText
+ aTypeWriter(Env(), rTypeCell, true);
+ aTypeWriter.Produce_byData( i_param.Type() );
+
+ rNameCell
+ << i_param.Name();
+ return &rNameCell;
+}
+
+const String sContentBorder("0");
+const String sContentWidth("96%");
+const String sContentPadding("5");
+const String sContentSpacing("0");
+
+const String sBgWhite("#ffffff");
+const String sCenter("center");
+
+void
+HF_IdlMethod::enter_ContentCell() const
+{
+
+ Xml::Element &
+ rContentCell = CurOut()
+ >> *new Html::Table( sContentBorder,
+ sContentWidth,
+ sContentPadding,
+ sContentSpacing )
+ << new Html::ClassAttr("table-in-method")
+ << new Html::BgColorAttr(sBgWhite)
+ << new Html::AlignAttr(sCenter)
+ >> *new Html::TableRow
+ >> *new Html::TableCell;
+ Out().Enter(rContentCell);
+}
+
+
+void
+HF_IdlMethod::leave_ContentCell() const
+{
+ Out().Leave();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_method.hxx b/autodoc/source/display/idl/hfi_method.hxx
new file mode 100644
index 000000000000..7da0e5fd605c
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_method.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 ADC_DISPLAY_HFI_METHOD_HXX
+#define ADC_DISPLAY_HFI_METHOD_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_param.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+typedef ary::doc::OldIdlDocu CodeInfo;
+#include "hfi_linklist.hxx"
+
+
+
+namespace csi
+{
+ namespace idl
+ {
+ class Parameter;
+ }
+}
+
+class HF_FunctionDeclaration;
+
+class HF_IdlMethod : public HtmlFactory_Idl
+{
+ public:
+ typedef ary::StdConstIterator<ary::idl::Parameter> param_list;
+
+ HF_IdlMethod(
+ Environment & io_rEnv,
+ Xml::Element & o_cell );
+ virtual ~HF_IdlMethod();
+
+ void Produce_byData(
+ const String & i_sName,
+ type_id i_nReturnType,
+ param_list & i_rParams,
+ type_list & i_rExceptions,
+ bool i_bOneway,
+ bool i_bEllipse,
+ const client & i_ce ) const;
+ private:
+ void write_Declaration(
+ const String & i_sName,
+ type_id i_nReturnType,
+ param_list & i_rParams,
+ type_list & i_rExceptions,
+ bool i_bOneway,
+ bool i_bEllipse ) const;
+// void write_Param(
+// HF_IdlTypeText & o_type,
+// Xml::Element & o_names,
+// const ary::idl::Parameter &
+// i_param ) const;
+
+ Xml::Element * write_Param(
+ HF_FunctionDeclaration &
+ o_decl,
+ const ary::idl::Parameter &
+ i_param ) const;
+ void enter_ContentCell() const;
+ void leave_ContentCell() const;
+};
+
+
+
+// IMPLEMENTATION
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_module.cxx b/autodoc/source/display/idl/hfi_module.cxx
new file mode 100644
index 000000000000..eb65a14de9ae
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_module.cxx
@@ -0,0 +1,302 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_module.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/ik_module.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <ary/getncast.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_doc.hxx"
+#include "hfi_navibar.hxx"
+#include "hfi_tag.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+extern const String
+ C_sCePrefix_Module("module");
+
+namespace
+{
+
+const String
+ C_sList_NestedModules("Nested Modules");
+const String
+ C_sList_NestedModules_Label("NestedModules");
+const String
+ C_sList_Services("Services");
+const String
+ C_sList_Singletons("Singletons");
+const String
+ C_sList_Interfaces("Interfaces");
+const String
+ C_sList_Structs("Structs");
+const String
+ C_sList_Exceptions("Exceptions");
+const String
+ C_sList_Enums("Enums");
+const String
+ C_sList_Typedefs("Typedefs");
+const String
+ C_sList_ConstGroups("Constant Groups");
+const String
+ C_sList_ConstGroups_Label("ConstantGroups");
+
+
+enum E_SubListIndices
+{ // In case of changes, also adapt make_Navibar() !!
+ sli_NestedModules = 0,
+ sli_Services = 1,
+ sli_Singletons = 2,
+ sli_Interfaces = 3,
+ sli_Structs = 4,
+ sli_Exceptions = 5,
+ sli_Enums = 6,
+ sli_Typedefs = 7,
+ sli_ConstGroups = 8
+};
+
+} //anonymous namespace
+
+
+HF_IdlModule::HF_IdlModule( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlModule::~HF_IdlModule()
+{
+}
+
+typedef ary::idl::ifc_module::attr ModuleAttr;
+
+
+void
+HF_IdlModule::Produce_byData( const client & i_ce ) const
+{
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ if ( Env().CurPosition().Depth() > 0 )
+ {
+ aNameChain.Produce_CompleteChain_forModule(Env().CurPosition(), nameChainLinker);
+
+ StreamLock
+ sl(200);
+ aTitle.Produce_Title( sl()
+ << C_sCePrefix_Module
+ << " "
+ << i_ce.LocalName()
+ << c_str );
+ }
+ else
+ {
+ aTitle.Produce_Title( "Global Module" );
+ }
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+
+ // Write children lists:
+ ce_ptr_list aNestedModules;
+ ce_ptr_list aServices;
+ ce_ptr_list aInterfaces;
+ ce_ptr_list aStructs;
+ ce_ptr_list aExceptions;
+ ce_ptr_list aEnums;
+ ce_ptr_list aTypedefs;
+ ce_ptr_list aConstantGroups;
+ ce_ptr_list aSingletons;
+
+ ModuleAttr::Get_AllChildrenSeparated(
+ aNestedModules,
+ aServices,
+ aInterfaces,
+ aStructs,
+ aExceptions,
+ aEnums,
+ aTypedefs,
+ aConstantGroups,
+ aSingletons,
+ Env().Data().Ces(),
+ i_ce );
+
+ // Has this to be in the order of enum E_SubListIndices ???
+ if (produce_ChildList(C_sList_NestedModules, C_sList_NestedModules_Label, aNestedModules ))
+ pNaviSubRow->SwitchOn(sli_NestedModules);
+ if (produce_ChildList(C_sList_Services, C_sList_Services, aServices))
+ pNaviSubRow->SwitchOn(sli_Services);
+ if (produce_ChildList(C_sList_Singletons, C_sList_Singletons, aSingletons))
+ pNaviSubRow->SwitchOn(sli_Singletons);
+ if (produce_ChildList(C_sList_Interfaces, C_sList_Interfaces, aInterfaces))
+ pNaviSubRow->SwitchOn(sli_Interfaces);
+ if (produce_ChildList(C_sList_Structs, C_sList_Structs, aStructs))
+ pNaviSubRow->SwitchOn(sli_Structs);
+ if (produce_ChildList(C_sList_Exceptions, C_sList_Exceptions, aExceptions))
+ pNaviSubRow->SwitchOn(sli_Exceptions);
+ if (produce_ChildList(C_sList_Enums, C_sList_Enums, aEnums))
+ pNaviSubRow->SwitchOn(sli_Enums);
+ if (produce_ChildList(C_sList_Typedefs, C_sList_Typedefs, aTypedefs))
+ pNaviSubRow->SwitchOn(sli_Typedefs);
+ if (produce_ChildList(C_sList_ConstGroups, C_sList_ConstGroups_Label, aConstantGroups))
+ pNaviSubRow->SwitchOn(sli_ConstGroups);
+ pNaviSubRow->Produce_Row();
+}
+
+DYN HF_NaviSubRow &
+HF_IdlModule::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_ModuleMainRow(i_ce);
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+
+ // Has to be in the order of E_SubListIndices:
+ ret.AddItem(C_sList_NestedModules, C_sList_NestedModules_Label, false);
+ ret.AddItem(C_sList_Services, C_sList_Services, false);
+ ret.AddItem(C_sList_Singletons, C_sList_Singletons, false);
+ ret.AddItem(C_sList_Interfaces, C_sList_Interfaces, false);
+ ret.AddItem(C_sList_Structs, C_sList_Structs, false);
+ ret.AddItem(C_sList_Exceptions, C_sList_Exceptions, false);
+ ret.AddItem(C_sList_Enums, C_sList_Enums, false);
+ ret.AddItem(C_sList_Typedefs, C_sList_Typedefs, false);
+ ret.AddItem(C_sList_ConstGroups, C_sList_ConstGroups_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+bool
+HF_IdlModule::produce_ChildList( const String & i_sName,
+ const String & i_sLabel,
+ const ce_ptr_list & i_list ) const
+{
+ if ( i_list.size() == 0 )
+ return false;
+
+ HF_SubTitleTable
+ aTable( CurOut(),
+ i_sLabel,
+ i_sName,
+ 2 );
+
+ ce_ptr_list::const_iterator
+ itEnd = i_list.end();
+ for ( ce_ptr_list::const_iterator it = i_list.begin();
+ it != itEnd;
+ ++it )
+ {
+ Xml::Element &
+ rRow = aTable.Add_Row();
+ produce_Link(rRow, *it);
+ produce_LinkDoc(rRow, *it);
+ } // end for
+
+ return true;
+}
+
+void
+HF_IdlModule::produce_Link( Xml::Element & o_row,
+ const client * i_ce ) const
+{
+ csv_assert(i_ce != 0);
+ Xml::Element &
+ rCell = o_row
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryLeft);
+
+ if ( NOT ary::is_type<ary::idl::Module>(*i_ce) )
+ {
+ HF_IdlTypeText
+ aText(Env(), rCell, true);
+ aText.Produce_byData(i_ce->CeId());
+ }
+ else
+ {
+ StreamLock slBuf(100);
+ rCell
+ >> *new Html::Link( slBuf() << i_ce->LocalName()
+ << "/module-ix.html"
+ << c_str )
+ << i_ce->LocalName();
+ }
+}
+
+void
+HF_IdlModule::produce_LinkDoc( Xml::Element & o_row,
+ const client * i_ce ) const
+{
+ csv_assert(i_ce != 0);
+
+ // We need the cell in any case, because, the rendering may be hurt else.
+ Xml::Element &
+ rCell = o_row
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryRight);
+
+ const client &
+ rCe = *i_ce;
+ const ce_info *
+ pShort = Get_IdlDocu(rCe.Docu());
+ if ( pShort == 0 )
+ return;
+
+
+ if (pShort->IsDeprecated())
+ {
+ rCell << "[ DEPRECATED ]" << new Html::LineBreak;
+ }
+ if (pShort->IsOptional())
+ {
+ rCell << "[ OPTIONAL ]" << new Html::LineBreak;
+ }
+
+ HF_IdlDocuTextDisplay
+ aShortDisplay(Env(), &rCell, *i_ce);
+ pShort->Short().DisplayAt(aShortDisplay);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_module.hxx b/autodoc/source/display/idl/hfi_module.hxx
new file mode 100644
index 000000000000..23aa25176cb5
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_module.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 ADC_DISPLAY_HFI_MODULE_HXX
+#define ADC_DISPLAY_HFI_MODULE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+class HF_NaviSubRow;
+
+class HF_IdlModule : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlModule(
+ Environment & io_rEnv, // The CurDirectory() is the one of the here displayed Module.
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlModule();
+
+ void Produce_byData(
+ const client & i_ce ) const;
+ private:
+ typedef std::vector< const ary::idl::CodeEntity* > ce_ptr_list;
+
+ DYN HF_NaviSubRow & make_Navibar(
+ const client & i_ce ) const;
+ bool produce_ChildList(
+ const String & i_sName,
+ const String & i_sLabel,
+ const ce_ptr_list & i_list ) const;
+ void produce_Link(
+ Xml::Element & o_row,
+ const client * i_ce ) const;
+ void produce_LinkDoc(
+ Xml::Element & o_row,
+ const client * i_ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+
+extern const String
+ C_sCePrefix_Module;
+
+
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_navibar.cxx b/autodoc/source/display/idl/hfi_navibar.cxx
new file mode 100644
index 000000000000..eb33b3e84905
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_navibar.cxx
@@ -0,0 +1,227 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_navibar.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <toolkit/hf_navi_main.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include "hfi_interface.hxx"
+#include "hfi_module.hxx"
+#include "hfi_service.hxx"
+#include "hi_linkhelper.hxx"
+
+
+extern const String
+ C_sLocalManualLinks("#devmanual");
+
+
+const String C_sTop = "Overview";
+const String C_sModule = "Module";
+const String C_sUse = "Use";
+const String C_sManual = "Devguide";
+const String C_sIndex = "Index";
+
+
+
+
+HF_IdlNavigationBar::HF_IdlNavigationBar( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlNavigationBar::~HF_IdlNavigationBar()
+{
+}
+
+void
+HF_IdlNavigationBar::Produce_CeMainRow( const client & i_ce,
+ bool i_bNoUsePage )
+{
+ HF_NaviMainRow
+ aNaviMain( CurOut() );
+
+ StreamLock aLink(500);
+ StreamStr & rLink = aLink();
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().OutputTree().Overview() );
+ aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().Linker().PositionOf_CurModule() );
+ aNaviMain.Add_StdItem( C_sModule, rLink.c_str() );
+
+ if (i_bNoUsePage)
+ {
+ aNaviMain.Add_NoneItem( C_sUse );
+ }
+ else
+ {
+ Env().Get_LinkTo( rLink.reset(),
+ Env().Linker().PositionOf_CurXRefs(i_ce.LocalName()) );
+ aNaviMain.Add_StdItem( C_sUse, rLink.c_str() );
+ }
+
+ const StringVector &
+ rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
+ if (rManualDescrs.size() == 2)
+ {
+ aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
+ }
+ else if (rManualDescrs.size() > 2)
+ {
+ aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
+ }
+ else
+ {
+ aNaviMain.Add_NoneItem( C_sManual );
+ }
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().Linker().PositionOf_Index() );
+ aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
+
+ aNaviMain.Produce_Row();
+}
+
+void
+HF_IdlNavigationBar::Produce_CeXrefsMainRow( const client & i_ce )
+{
+ HF_NaviMainRow
+ aNaviMain( CurOut() );
+
+ StreamLock aLink(500);
+ StreamStr & rLink = aLink();
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().OutputTree().Overview() );
+ aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().Linker().PositionOf_CurModule() );
+ aNaviMain.Add_StdItem( C_sModule, rLink.c_str() );
+
+ aNaviMain.Add_SelfItem( C_sUse );
+
+ const StringVector &
+ rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
+ if (rManualDescrs.size() == 2)
+ {
+ aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
+ }
+ else if (rManualDescrs.size() > 2)
+ {
+ aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
+ }
+ else
+ {
+ aNaviMain.Add_NoneItem( C_sManual );
+ }
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().Linker().PositionOf_Index() );
+ aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
+
+ aNaviMain.Produce_Row();
+}
+
+void
+HF_IdlNavigationBar::Produce_ModuleMainRow( const client & i_ce )
+{
+ HF_NaviMainRow
+ aNaviMain( CurOut() );
+
+ StreamLock aLink(500);
+ StreamStr & rLink = aLink();
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().OutputTree().Overview() );
+ aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
+
+ aNaviMain.Add_SelfItem( C_sModule );
+
+ aNaviMain.Add_NoneItem( C_sUse );
+
+ const StringVector &
+ rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
+ if (rManualDescrs.size() == 1)
+ {
+ aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
+ }
+ else if (rManualDescrs.size() > 1)
+ {
+ aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
+ }
+ else
+ {
+ aNaviMain.Add_NoneItem( C_sManual );
+ }
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().Linker().PositionOf_Index() );
+ aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
+
+ aNaviMain.Produce_Row();
+}
+
+void
+HF_IdlNavigationBar::Produce_IndexMainRow()
+{
+ HF_NaviMainRow
+ aNaviMain( CurOut() );
+
+ StreamLock aLink(500);
+ StreamStr & rLink = aLink();
+
+ Env().Get_LinkTo( rLink.reset(),
+ Env().OutputTree().Overview() );
+ aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
+
+ aNaviMain.Add_NoneItem( C_sModule );
+ aNaviMain.Add_NoneItem( C_sUse );
+ aNaviMain.Add_NoneItem( C_sManual );
+
+ aNaviMain.Add_SelfItem( C_sIndex );
+
+ aNaviMain.Produce_Row();
+
+ CurOut() << new Html::HorizontalLine();
+}
+
+DYN HF_NaviSubRow &
+HF_IdlNavigationBar::Add_SubRow()
+{
+ return *new HF_NaviSubRow( CurOut() );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_navibar.hxx b/autodoc/source/display/idl/hfi_navibar.hxx
new file mode 100644
index 000000000000..d6ffc16ba455
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_navibar.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 ADC_DISPLAY_HFI_NAVIBAR_HXX
+#define ADC_DISPLAY_HFI_NAVIBAR_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include "hi_factory.hxx"
+ // PARAMETERS
+
+namespace ary
+{
+namespace idl
+{
+class CodeEntity;
+}
+}
+
+
+class HF_NaviSubRow;
+
+/** @resp
+ Creates a navigation bar for an IDL HTML documentation page.
+*/
+class HF_IdlNavigationBar : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlNavigationBar(
+ HtmlEnvironment_Idl &
+ io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlNavigationBar();
+
+ void Produce_CeMainRow(
+ const client & i_ce,
+ bool i_bNoUsePage = false );
+ void Produce_CeXrefsMainRow(
+ const client & i_ce );
+ void Produce_ModuleMainRow(
+ const client & i_ce );
+ void Produce_IndexMainRow();
+
+ /** Adds the subrow to the o_rOut argument of the constructor.
+ */
+ DYN HF_NaviSubRow & Add_SubRow();
+
+ private:
+ const ary::idl::CodeEntity *
+ pCe;
+};
+
+extern const String
+ C_sLocalManualLinks;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_property.cxx b/autodoc/source/display/idl/hfi_property.cxx
new file mode 100644
index 000000000000..4e7902a24810
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_property.cxx
@@ -0,0 +1,454 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_property.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_attribute.hxx>
+#include <ary/idl/ik_constant.hxx>
+#include <ary/idl/ik_enumvalue.hxx>
+#include <ary/idl/ik_property.hxx>
+#include <ary/idl/ik_structelem.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_typetext.hxx"
+#include "hfi_doc.hxx"
+#include "hfi_tag.hxx"
+#include "hi_env.hxx"
+#include "hi_ary.hxx"
+#include "hi_linkhelper.hxx"
+
+void
+HF_IdlDataMember::Produce_byData( const client & ce ) const
+{
+ write_Title(ce);
+ enter_ContentCell();
+ write_Declaration(ce);
+ write_Description(ce);
+ leave_ContentCell();
+}
+
+HF_IdlDataMember::HF_IdlDataMember( Environment & io_rEnv,
+ HF_SubTitleTable & o_table )
+ : HtmlFactory_Idl( io_rEnv,
+ &(o_table.Add_Row()
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_MDetail))
+ )
+{
+}
+
+const String sContentBorder("0");
+const String sContentWidth("96%");
+const String sContentPadding("5");
+const String sContentSpacing("0");
+
+const String sBgWhite("#ffffff");
+const String sCenter("center");
+
+void
+HF_IdlDataMember::write_Title( const client & i_ce ) const
+{
+ CurOut()
+ >> *new Html::Label(i_ce.LocalName())
+ << new Html::ClassAttr(C_sMemberTitle)
+ << i_ce.LocalName();
+}
+
+void
+HF_IdlDataMember::write_Description( const client & i_ce ) const
+{
+ CurOut() << new Html::HorizontalLine;
+ write_Docu(CurOut(), i_ce);
+}
+
+void
+HF_IdlDataMember::enter_ContentCell() const
+{
+
+ Xml::Element &
+ rContentCell = CurOut()
+ >> *new Html::Table( sContentBorder,
+ sContentWidth,
+ sContentPadding,
+ sContentSpacing )
+ << new Html::ClassAttr("table-in-data")
+ << new Html::BgColorAttr(sBgWhite)
+ << new Html::AlignAttr(sCenter)
+ >> *new Html::TableRow
+ >> *new Html::TableCell;
+ Out().Enter(rContentCell);
+}
+
+
+void
+HF_IdlDataMember::leave_ContentCell() const
+{
+ Out().Leave();
+}
+
+
+HF_IdlProperty::~HF_IdlProperty()
+{
+}
+
+typedef ary::idl::ifc_property::attr PropertyAttr;
+
+void
+HF_IdlProperty::write_Declaration( const client & i_ce ) const
+{
+ if (PropertyAttr::HasAnyStereotype(i_ce))
+ {
+ CurOut() << "[ ";
+ if (PropertyAttr::IsReadOnly(i_ce))
+ CurOut() << "readonly ";
+ if (PropertyAttr::IsBound(i_ce))
+ CurOut() << "bound ";
+ if (PropertyAttr::IsConstrained(i_ce))
+ CurOut() << "constrained ";
+ if (PropertyAttr::IsMayBeAmbiguous(i_ce))
+ CurOut() << "maybeambiguous ";
+ if (PropertyAttr::IsMayBeDefault(i_ce))
+ CurOut() << "maybedefault ";
+ if (PropertyAttr::IsMayBeVoid(i_ce))
+ CurOut() << "maybevoid ";
+ if (PropertyAttr::IsRemovable(i_ce))
+ CurOut() << "removable ";
+ if (PropertyAttr::IsTransient(i_ce))
+ CurOut() << "transient ";
+ CurOut() << "] ";
+ } // end if
+
+ HF_IdlTypeText
+ aType( Env(), CurOut(), true );
+ aType.Produce_byData( PropertyAttr::Type(i_ce) );
+
+ CurOut() << " " >> *new Html::Bold << i_ce.LocalName();
+ CurOut() << ";";
+}
+
+
+
+
+HF_IdlAttribute::~HF_IdlAttribute()
+{
+}
+
+typedef ary::idl::ifc_attribute::attr AttributeAttr;
+
+void
+HF_IdlAttribute::write_Declaration( const client & i_ce ) const
+{
+ if (AttributeAttr::HasAnyStereotype(i_ce))
+ {
+ CurOut() << "[ ";
+ if (AttributeAttr::IsReadOnly(i_ce))
+ CurOut() << "readonly ";
+ if (AttributeAttr::IsBound(i_ce))
+ CurOut() << "bound ";
+ CurOut() << "] ";
+ }
+
+ HF_IdlTypeText
+ aType( Env(), CurOut(), true );
+ aType.Produce_byData( AttributeAttr::Type(i_ce) );
+
+ CurOut()
+ << " "
+ >> *new Html::Bold
+ << i_ce.LocalName();
+
+ dyn_type_list pGetExceptions;
+ dyn_type_list pSetExceptions;
+ AttributeAttr::Get_GetExceptions(pGetExceptions, i_ce);
+ AttributeAttr::Get_SetExceptions(pSetExceptions, i_ce);
+
+ bool bGetRaises = (*pGetExceptions).IsValid();
+ bool bSetRaises = (*pSetExceptions).IsValid();
+ bool bRaises = bGetRaises OR bSetRaises;
+ if (bRaises)
+ {
+ HF_DocEntryList aSub(CurOut());
+
+ if (bGetRaises)
+ {
+ Xml::Element &
+ rGet = aSub.Produce_Definition();
+ HF_IdlTypeText
+ aExc(Env(), rGet, true);
+ type_list & itExc = *pGetExceptions;
+
+ rGet << "get raises (";
+ aExc.Produce_byData(*itExc);
+ for (++itExc; itExc.operator bool(); ++itExc)
+ {
+ rGet
+ << ",";
+ aExc.Produce_byData(*itExc);
+ } // end for
+ rGet << ")";
+ if (NOT bSetRaises)
+ rGet << ";";
+ } // end if (bGetRaises)
+
+ if (bSetRaises)
+ {
+ Xml::Element &
+ rSet = aSub.Produce_Definition();
+ HF_IdlTypeText
+ aExc(Env(), rSet, true);
+ type_list & itExc = *pSetExceptions;
+
+ rSet << "set raises (";
+ aExc.Produce_byData(*itExc);
+ for (++itExc; itExc.operator bool(); ++itExc)
+ {
+ rSet
+ << ",";
+ aExc.Produce_byData(*itExc);
+ } // end for
+ rSet << ");";
+ } // end if (bSetRaises)
+ }
+ else
+ {
+ CurOut() << ";";
+ }
+}
+
+
+
+
+HF_IdlEnumValue::~HF_IdlEnumValue()
+{
+}
+
+typedef ary::idl::ifc_enumvalue::attr EnumValueAttr;
+
+void
+HF_IdlEnumValue::write_Declaration( const client & i_ce ) const
+{
+ CurOut()
+ >> *new Html::Bold
+ << i_ce.LocalName();
+
+ const String &
+ rValue = EnumValueAttr::Value(i_ce);
+ if ( NOT rValue.empty() )
+ { CurOut() << " " // << " = " // In the moment this is somehow in the value
+ << rValue;
+ // CurOut() << ","; // In the moment this is somehow in the value
+ }
+ else
+ CurOut() << ",";
+}
+
+
+HF_IdlConstant::~HF_IdlConstant()
+{
+}
+
+typedef ary::idl::ifc_constant::attr ConstantAttr;
+
+void
+HF_IdlConstant::write_Declaration( const client & i_ce ) const
+{
+ CurOut() << "const ";
+ HF_IdlTypeText
+ aType( Env(), CurOut(), true );
+ aType.Produce_byData(ConstantAttr::Type(i_ce));
+ CurOut()
+ << " "
+ >> *new Html::Bold
+ << i_ce.LocalName();
+ const String &
+ rValue = ConstantAttr::Value(i_ce);
+ CurOut() << " " // << " = " // In the moment this is somehow in the value
+ << rValue;
+ // << ";"; // In the moment this is somehow in the value
+}
+
+
+HF_IdlStructElement::~HF_IdlStructElement()
+{
+}
+
+typedef ary::idl::ifc_structelement::attr StructElementAttr;
+
+void
+HF_IdlStructElement::write_Declaration( const client & i_ce ) const
+{
+ HF_IdlTypeText
+ aType( Env(), CurOut(), true );
+ aType.Produce_byData(StructElementAttr::Type(i_ce));
+ CurOut()
+ << " "
+ >> *new Html::Bold
+ << i_ce.LocalName();
+ CurOut()
+ << ";";
+}
+
+HF_IdlCommentedRelationElement::~HF_IdlCommentedRelationElement()
+{
+}
+
+void
+HF_IdlCommentedRelationElement::produce_Summary( Environment & io_env,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const client & i_rScopeGivingCe )
+{
+ csv_assert( i_commentedRef.Info() );
+
+ const ary::idl::Type_id aType = i_commentedRef.Type();
+ const ce_info & rDocu = *i_commentedRef.Info();
+
+ bool bShort = NOT rDocu.Short().IsEmpty();
+ bool bDescr = NOT rDocu.Description().IsEmpty();
+
+ if ( bShort )
+ {
+ HF_IdlDocuTextDisplay
+ aDescription(io_env, 0, i_rScopeGivingCe);
+
+ Xml::Element& rPara = io_context >> *new Html::Paragraph;
+ aDescription.Out().Enter( rPara );
+ rDocu.Short().DisplayAt( aDescription );
+
+ // if there's more than just the summary - i.e. a description, or usage restrictions, or tags -,
+ // then add a link to the details section
+ if ( bDescr OR rDocu.IsDeprecated() OR rDocu.IsOptional() OR NOT rDocu.Tags().empty() )
+ {
+ StreamLock aLocalLink(100);
+ aLocalLink() << "#" << get_LocalLinkName(io_env, i_commentedRef);
+
+ aDescription.Out().Out() << "(";
+ aDescription.Out().Out()
+ >> *new Html::Link( aLocalLink().c_str() )
+ << "details";
+ aDescription.Out().Out() << ")";
+ }
+
+ aDescription.Out().Leave();
+ }
+}
+
+void
+HF_IdlCommentedRelationElement::produce_LinkDoc( Environment & io_env,
+ const client & i_ce,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const E_DocType i_docType )
+{
+ if ( i_commentedRef.Info() != 0 )
+ {
+ if ( i_docType == doctype_complete )
+ {
+ HF_DocEntryList aDocList(io_context);
+ HF_IdlDocu aDocuDisplay(io_env, aDocList);
+
+ aDocuDisplay.Produce_fromReference(*i_commentedRef.Info(), i_ce);
+ }
+ else
+ {
+ produce_Summary(io_env, io_context, i_commentedRef, i_ce);
+ }
+ }
+ else
+ {
+ HF_DocEntryList aDocList(io_context);
+
+ const client *
+ pCe = io_env.Linker().Search_CeFromType(i_commentedRef.Type());
+ const ce_info *
+ pShort = pCe != 0
+ ? Get_IdlDocu(pCe->Docu())
+ : (const ce_info *)(0);
+ if ( pShort != 0 )
+ {
+ aDocList.Produce_NormalTerm("(referenced entity's summary:)");
+ Xml::Element &
+ rDef = aDocList.Produce_Definition();
+ HF_IdlDocuTextDisplay
+ aShortDisplay( io_env, &rDef, *pCe);
+ pShort->Short().DisplayAt(aShortDisplay);
+ } // end if (pShort != 0)
+ } // endif ( (*i_commentedRef).Info() != 0 ) else
+}
+
+
+String
+HF_IdlCommentedRelationElement::get_LocalLinkName( Environment & io_env,
+ const comref & i_commentedRef )
+{
+ StringVector aModules;
+ String sLocalName;
+ ce_id nCe;
+ int nSequenceCount = 0;
+
+ const ary::idl::Type &
+ rType = io_env.Data().Find_Type(i_commentedRef.Type());
+ io_env.Data().Get_TypeText(aModules, sLocalName, nCe, nSequenceCount, rType);
+
+ // speaking strictly, this is not correct: If we have two interfaces with the same local
+ // name, but in different modules, then the link name will be ambiguous. However, this should
+ // be too seldom a case to really make the link names that ugly by adding the module information.
+ return sLocalName;
+}
+
+void
+HF_IdlCommentedRelationElement::write_Title( const client & /*i_ce*/ ) const
+{
+
+ Xml::Element &
+ rAnchor = CurOut()
+ >> *new Html::Label(get_LocalLinkName(Env(), m_relation))
+ << new Html::ClassAttr(C_sMemberTitle);
+
+ HF_IdlTypeText
+ aText(Env(), rAnchor, true);
+ aText.Produce_byData(m_relation.Type());
+}
+
+void
+HF_IdlCommentedRelationElement::write_Declaration( const client & /*i_ce*/ ) const
+{
+ // nothing to do here - an entity which is a commented relation does not have a declaration
+}
+
+void
+HF_IdlCommentedRelationElement::write_Description( const client & i_ce ) const
+{
+ produce_LinkDoc( Env(), i_ce, CurOut(), m_relation, doctype_complete );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_property.hxx b/autodoc/source/display/idl/hfi_property.hxx
new file mode 100644
index 000000000000..3c6da79fc61d
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_property.hxx
@@ -0,0 +1,185 @@
+/* -*- 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 ADC_DISPLAY_HFI_PROPERTY_HXX
+#define ADC_DISPLAY_HFI_PROPERTY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+
+class HF_SubTitleTable;
+
+class HF_IdlDataMember : public HtmlFactory_Idl
+{
+ public:
+ void Produce_byData(
+ const client & ce ) const;
+ protected:
+ HF_IdlDataMember(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table );
+ virtual ~HF_IdlDataMember() {}
+
+ private:
+ virtual void write_Title(
+ const client & i_ce ) const;
+
+ virtual void write_Declaration(
+ const client & i_ce ) const = 0;
+
+ virtual void write_Description(
+ const client & i_ce ) const;
+
+ void enter_ContentCell() const;
+ void leave_ContentCell() const;
+};
+
+
+
+class HF_IdlProperty : public HF_IdlDataMember
+{
+ public:
+ HF_IdlProperty(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table )
+ : HF_IdlDataMember(io_rEnv, o_table) {}
+ virtual ~HF_IdlProperty();
+ private:
+ virtual void write_Declaration(
+ const client & i_ce ) const;
+};
+
+class HF_IdlAttribute : public HF_IdlDataMember
+{
+ public:
+ HF_IdlAttribute(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table )
+ : HF_IdlDataMember(io_rEnv, o_table) {}
+ virtual ~HF_IdlAttribute();
+
+ private:
+ virtual void write_Declaration(
+ const client & i_ce ) const;
+};
+
+
+class HF_IdlEnumValue : public HF_IdlDataMember
+{
+ public:
+ HF_IdlEnumValue(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table )
+ : HF_IdlDataMember(io_rEnv, o_table) {}
+ virtual ~HF_IdlEnumValue();
+
+ private:
+ virtual void write_Declaration(
+ const client & i_ce ) const;
+};
+
+class HF_IdlConstant : public HF_IdlDataMember
+{
+ public:
+ HF_IdlConstant(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table )
+ : HF_IdlDataMember(io_rEnv, o_table) {}
+ virtual ~HF_IdlConstant();
+
+ private:
+ virtual void write_Declaration(
+ const client & i_ce ) const;
+};
+
+
+class HF_IdlStructElement : public HF_IdlDataMember
+{
+ public:
+ HF_IdlStructElement(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table )
+ : HF_IdlDataMember(io_rEnv, o_table) {}
+ virtual ~HF_IdlStructElement();
+
+ private:
+ virtual void write_Declaration(
+ const client & i_ce ) const;
+};
+
+class HF_IdlCommentedRelationElement : public HF_IdlDataMember
+{
+ public:
+ HF_IdlCommentedRelationElement(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table,
+ const ary::idl::CommentedRelation& i_relation )
+ : HF_IdlDataMember(io_rEnv, o_table)
+ , m_relation( i_relation )
+ {
+ }
+ virtual ~HF_IdlCommentedRelationElement();
+
+ typedef ::ary::idl::CommentedRelation comref;
+
+ static void produce_LinkDoc(
+ Environment & io_env,
+ const client & i_ce,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const E_DocType i_docType );
+
+ private:
+ virtual void write_Title(
+ const client & i_ce ) const;
+ virtual void write_Declaration(
+ const client & i_ce ) const;
+ virtual void write_Description(
+ const client & i_ce ) const;
+ private:
+ static void produce_Summary( Environment & io_env,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const client & i_rScopeGivingCe );
+
+ static String get_LocalLinkName( Environment & io_env,
+ const comref & i_commentedRef );
+
+ private:
+ const ary::idl::CommentedRelation& m_relation;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_service.cxx b/autodoc/source/display/idl/hfi_service.cxx
new file mode 100644
index 000000000000..ad19d336e7f1
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_service.cxx
@@ -0,0 +1,365 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_service.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_property.hxx>
+#include <ary/idl/ik_service.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_doc.hxx"
+#include "hfi_navibar.hxx"
+#include "hfi_property.hxx"
+#include "hfi_tag.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+
+
+extern const String
+ C_sCePrefix_Service("service");
+
+namespace
+{
+
+const String
+ C_sList_IncludedServices("Services' Summary");
+const String
+ C_sList_IncludedServices_Heading("Included Services - Summary");
+const String
+ C_sList_IncludedServices_Label("ServicesSummary");
+const String
+ C_sList_IncludedServicesDetails("Services' Details");
+const String
+ C_sList_IncludedServicesDetails_Heading("Included Services - Details");
+const String
+ C_sList_IncludedServicesDetails_Label("ServicesDetails");
+const String
+ C_sList_ExportedInterfaces("Interfaces' Summary");
+const String
+ C_sList_ExportedInterfaces_Heading("Exported Interfaces - Summary");
+const String
+ C_sList_ExportedInterfaces_Label("InterfacesSummary");
+const String
+ C_sList_ExportedInterfacesDetails("Interfaces' Details");
+const String
+ C_sList_ExportedInterfacesDetails_Heading("Exported Interfaces - Details");
+const String
+ C_sList_ExportedInterfacesDetails_Label("InterfacesDetails");
+const String
+ C_sList_Properties("Properties' Summary");
+const String
+ C_sList_Properties_Label("PropertiesSummary");
+const String
+ C_sList_PropertiesDetails("Properties' Details");
+const String
+ C_sList_PropertiesDetails_Label("PropertiesDetails");
+
+
+enum E_SubListIndices
+{
+ sli_IncludedServicesSummary = 0,
+ sli_InterfacesSummary = 1,
+ sli_PropertiesSummary = 2,
+ sli_IncludedServicesDetails = 3,
+ sli_InterfacesDetails = 4,
+ sli_PropertiesDetails = 5
+};
+
+} //anonymous namespace
+
+
+HF_IdlService::HF_IdlService( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlService::~HF_IdlService()
+{
+
+}
+
+typedef ::ary::idl::ifc_service::attr
+ ServiceAttr;
+typedef ::ary::Dyn_StdConstIterator< ::ary::idl::CommentedRelation >
+ dyn_comref_list;
+
+void
+HF_IdlService::produce_CommentedRelations( const client & i_ce,
+ comref_list & it_list,
+ const String & i_summaryTitle,
+ const String & i_summaryLabel,
+ const String & i_detailsTitle,
+ const String & i_detailsLabel,
+ const E_DocType i_docType ) const
+{
+ csv_assert( it_list );
+
+ bool bSummaryOnly = ( i_docType == doctype_summaryOnly );
+ HF_SubTitleTable aTable(
+ CurOut(),
+ bSummaryOnly ? i_summaryLabel : i_detailsLabel,
+ bSummaryOnly ? i_summaryTitle : i_detailsTitle,
+ 2 );
+
+ for ( ; it_list; ++it_list )
+ {
+ Xml::Element &
+ rRow = aTable.Add_Row();
+
+ if ( bSummaryOnly )
+ {
+ produce_Link(rRow, (*it_list).Type());
+ produce_LinkSummary(i_ce, rRow, *it_list);
+ }
+ else
+ {
+ HF_IdlCommentedRelationElement
+ aRelation( Env(), aTable, *it_list );
+ aRelation.Produce_byData( i_ce );
+ }
+ } // end for
+}
+
+void
+HF_IdlService::Produce_byData( const client & i_ce ) const
+{
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+ produce_Title(aTitle, C_sCePrefix_Service, i_ce);
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ // produce ...
+ // - included services: summary
+ dyn_comref_list dpIncludedServices;
+ ServiceAttr::Get_IncludedServices(dpIncludedServices, i_ce);
+ if ( (*dpIncludedServices).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpIncludedServices,
+ C_sList_IncludedServices_Heading,
+ C_sList_IncludedServices_Label,
+ C_sList_IncludedServicesDetails_Heading,
+ C_sList_IncludedServicesDetails_Label,
+ doctype_summaryOnly );
+ pNaviSubRow->SwitchOn(sli_IncludedServicesSummary);
+ }
+
+ // - exported interfaces: summary
+ dyn_comref_list dpExportedInterfaces;
+ ServiceAttr::Get_ExportedInterfaces(dpExportedInterfaces, i_ce);
+ if ( (*dpExportedInterfaces).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpExportedInterfaces,
+ C_sList_ExportedInterfaces_Heading,
+ C_sList_ExportedInterfaces_Label,
+ C_sList_ExportedInterfacesDetails_Heading,
+ C_sList_ExportedInterfacesDetails_Label,
+ doctype_summaryOnly );
+ pNaviSubRow->SwitchOn(sli_InterfacesSummary);
+ }
+
+ // - supported properties: summary
+ dyn_ce_list dpProperties;
+ ServiceAttr::Get_Properties(dpProperties, i_ce);
+ if ( (*dpProperties).operator bool() )
+ {
+ produce_Members( *dpProperties,
+ C_sList_Properties,
+ C_sList_Properties_Label,
+ C_sList_PropertiesDetails,
+ C_sList_PropertiesDetails_Label,
+ viewtype_summary );
+ pNaviSubRow->SwitchOn(sli_PropertiesSummary);
+ }
+
+ // - included services: details
+ ServiceAttr::Get_IncludedServices(dpIncludedServices, i_ce);
+ if ( (*dpIncludedServices).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpIncludedServices,
+ C_sList_IncludedServices_Heading,
+ C_sList_IncludedServices_Label,
+ C_sList_IncludedServicesDetails_Heading,
+ C_sList_IncludedServicesDetails_Label,
+ doctype_complete );
+ pNaviSubRow->SwitchOn(sli_IncludedServicesDetails);
+ }
+
+ // - exported interfaces: details
+ ServiceAttr::Get_ExportedInterfaces(dpExportedInterfaces, i_ce);
+ if ( (*dpExportedInterfaces).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpExportedInterfaces,
+ C_sList_ExportedInterfaces_Heading,
+ C_sList_ExportedInterfaces_Label,
+ C_sList_ExportedInterfacesDetails_Heading,
+ C_sList_ExportedInterfacesDetails_Label,
+ doctype_complete );
+ pNaviSubRow->SwitchOn(sli_InterfacesDetails);
+ }
+
+ // supported properties: details
+ ServiceAttr::Get_Properties(dpProperties, i_ce);
+ if ( (*dpProperties).operator bool() )
+ {
+ produce_Members( *dpProperties,
+ C_sList_Properties,
+ C_sList_Properties_Label,
+ C_sList_PropertiesDetails,
+ C_sList_PropertiesDetails_Label,
+ viewtype_details );
+ pNaviSubRow->SwitchOn(sli_PropertiesDetails);
+ }
+
+ pNaviSubRow->Produce_Row();
+ CurOut() << new Xml::XmlCode("<br>&nbsp;");
+}
+
+typedef ary::idl::ifc_property::attr PropertyAttr;
+
+void
+HF_IdlService::produce_SummaryDeclaration( Xml::Element & o_row,
+ const client & i_property ) const
+{
+ // KORR_FUTURE
+ // Put this in to HF_IdlProperty!
+
+ Xml::Element &
+ rCell = o_row
+ >> *new Html::TableCell
+ << new Html::ClassAttr( C_sCellStyle_SummaryLeft );
+
+ if (PropertyAttr::HasAnyStereotype(i_property))
+ {
+ rCell << "[ ";
+ if (PropertyAttr::IsReadOnly(i_property))
+ rCell << "readonly ";
+ if (PropertyAttr::IsBound(i_property))
+ rCell << "bound ";
+ if (PropertyAttr::IsConstrained(i_property))
+ rCell << "constrained ";
+ if (PropertyAttr::IsMayBeAmbiguous(i_property))
+ rCell << "maybeambiguous ";
+ if (PropertyAttr::IsMayBeDefault(i_property))
+ rCell << "maybedefault ";
+ if (PropertyAttr::IsMayBeVoid(i_property))
+ rCell << "maybevoid ";
+ if (PropertyAttr::IsRemovable(i_property))
+ rCell << "removable ";
+ if (PropertyAttr::IsTransient(i_property))
+ rCell << "transient ";
+ rCell << "] ";
+ } // end if
+
+ HF_IdlTypeText
+ aType( Env(), rCell, true );
+ aType.Produce_byData( PropertyAttr::Type(i_property) );
+
+ StreamLock aLocalLink(100);
+ aLocalLink() << "#" << i_property.LocalName();
+ rCell
+ << new Html::LineBreak
+ >> *new Html::Link( aLocalLink().c_str() )
+ << i_property.LocalName();
+}
+
+DYN HF_NaviSubRow &
+HF_IdlService::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce);
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+ ret.AddItem(C_sList_IncludedServices, C_sList_IncludedServices_Label, false);
+ ret.AddItem(C_sList_ExportedInterfaces, C_sList_ExportedInterfaces_Label, false);
+ ret.AddItem(C_sList_Properties, C_sList_Properties_Label, false);
+ ret.AddItem(C_sList_IncludedServicesDetails, C_sList_IncludedServicesDetails_Label, false);
+ ret.AddItem(C_sList_ExportedInterfacesDetails, C_sList_ExportedInterfacesDetails_Label, false);
+ ret.AddItem(C_sList_PropertiesDetails, C_sList_PropertiesDetails_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+void
+HF_IdlService::produce_Link( Xml::Element & o_row,
+ type_id i_type ) const
+{
+ Xml::Element &
+ rCell = o_row
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryLeft);
+ HF_IdlTypeText
+ aText(Env(), rCell, true);
+ aText.Produce_byData(i_type);
+}
+
+void
+HF_IdlService::produce_LinkSummary( const client & i_ce,
+ Xml::Element & o_row,
+ const comref & i_commentedRef ) const
+{
+ Xml::Element &
+ rCell = o_row
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryRight);
+
+ HF_IdlCommentedRelationElement::produce_LinkDoc( Env(), i_ce, rCell, i_commentedRef, doctype_summaryOnly );
+}
+
+void
+HF_IdlService::produce_MemberDetails( HF_SubTitleTable & o_table,
+ const client & i_ce ) const
+{
+ HF_IdlProperty
+ aProperty( Env(), o_table);
+ aProperty.Produce_byData( i_ce );
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_service.hxx b/autodoc/source/display/idl/hfi_service.hxx
new file mode 100644
index 000000000000..95c6f4163548
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_service.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ADC_DISPLAY_HFI_SERVICE_HXX
+#define ADC_DISPLAY_HFI_SERVICE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+
+class HF_NaviSubRow;
+class HF_SubTitleTable;
+
+class HF_IdlService : public HtmlFactory_Idl
+{
+ public:
+ typedef ::ary::idl::CommentedRelation comref;
+ typedef ::ary::StdConstIterator< comref > comref_list;
+
+ HF_IdlService(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlService();
+
+ void Produce_byData(
+ const client & i_ce ) const;
+ private:
+ // Overwritten from HtmlFactory_Idl:
+ virtual void produce_SummaryDeclaration(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+
+ // Locals
+ DYN HF_NaviSubRow & make_Navibar(
+ const client & i_ce ) const;
+
+ void produce_Link(
+ Xml::Element & o_row,
+ type_id i_type ) const;
+ void produce_LinkSummary(
+ const client & i_ce,
+ Xml::Element & o_row,
+ const comref & i_commentedRef ) const;
+
+ void produce_MemberDetails( /// of property
+ HF_SubTitleTable & o_table,
+ const client & i_ce ) const;
+
+ void produce_CommentedRelations(
+ const client & i_ce,
+ comref_list & it_list,
+ const String & i_summaryTitle,
+ const String & i_summaryLabel,
+ const String & i_detailsTitle,
+ const String & i_detailsLabel,
+ const E_DocType i_docType ) const;
+
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Service;
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_singleton.cxx b/autodoc/source/display/idl/hfi_singleton.cxx
new file mode 100644
index 000000000000..39daf4b927ee
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_singleton.cxx
@@ -0,0 +1,136 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_singleton.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_singleton.hxx>
+#include <ary/idl/ik_sisingleton.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_navibar.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+
+extern const String
+ C_sCePrefix_Singleton("singleton");
+
+const String
+ C_sAssociatedService("Associated Service");
+const String
+ C_sImplementedInterface("Supported Interface");
+
+
+
+HF_IdlSingleton::HF_IdlSingleton( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlSingleton::~HF_IdlSingleton()
+{
+
+}
+
+typedef ::ary::idl::ifc_singleton::attr SingletonAttr;
+typedef ::ary::idl::ifc_sglifcsingleton::attr SglIfcSingletonAttr;
+
+void
+HF_IdlSingleton::Produce_byData_ServiceBased( const client & i_ce ) const
+{
+ make_Navibar(i_ce);
+
+ HF_TitleTable
+ aTitle(CurOut());
+
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+ produce_Title(aTitle, C_sCePrefix_Singleton, i_ce);
+
+ HF_DocEntryList
+ aTopList( aTitle.Add_Row() );
+ aTopList.Produce_Term(C_sAssociatedService);
+
+ HF_IdlTypeText
+ aAssociatedService( Env(), aTopList.Produce_Definition(), true );
+ aAssociatedService.Produce_byData( SingletonAttr::AssociatedService(i_ce) );
+
+ CurOut() << new Html::HorizontalLine;
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+}
+
+void
+HF_IdlSingleton::Produce_byData_InterfaceBased( const client & i_ce ) const
+{
+ make_Navibar(i_ce);
+
+ HF_TitleTable
+ aTitle(CurOut());
+
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+ produce_Title(aTitle, C_sCePrefix_Singleton, i_ce);
+
+ HF_DocEntryList
+ aTopList( aTitle.Add_Row() );
+ aTopList.Produce_Term(C_sImplementedInterface);
+
+ HF_IdlTypeText
+ aImplementedInterface( Env(), aTopList.Produce_Definition(), true );
+ aImplementedInterface.Produce_byData( SglIfcSingletonAttr::BaseInterface(i_ce) );
+
+ CurOut() << new Html::HorizontalLine;
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+}
+
+void
+HF_IdlSingleton::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce,true); // true := avoid link to Use-page.
+
+ CurOut() << new Html::HorizontalLine();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_singleton.hxx b/autodoc/source/display/idl/hfi_singleton.hxx
new file mode 100644
index 000000000000..3d1ec1b5c2fd
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_singleton.hxx
@@ -0,0 +1,71 @@
+/* -*- 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 ADC_DISPLAY_HFI_SINGLETON_HXX
+#define ADC_DISPLAY_HFI_SINGLETON_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+class HF_NaviSubRow;
+
+
+class HF_IdlSingleton : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlSingleton(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlSingleton();
+
+ void Produce_byData_ServiceBased(
+ const client & i_ce ) const;
+ void Produce_byData_InterfaceBased(
+ const client & i_ce ) const;
+ private:
+ void make_Navibar(
+ const client & i_ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Singleton;
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_siservice.cxx b/autodoc/source/display/idl/hfi_siservice.cxx
new file mode 100644
index 000000000000..7e36c79e07c1
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_siservice.cxx
@@ -0,0 +1,178 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_siservice.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_function.hxx>
+#include <ary/idl/ik_siservice.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_doc.hxx"
+#include "hfi_method.hxx"
+#include "hfi_navibar.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_env.hxx"
+#include "hi_linkhelper.hxx"
+
+
+
+namespace
+{
+
+const String
+ C_sImplementedInterface("Supported Interface");
+
+const String
+ C_sList_Constructors("Constructors' Summary");
+const String
+ C_sList_Constructors_Label("ConstructorsSummary");
+const String
+ C_sDetails_Constructors("Constructors' Details");
+const String
+ C_sDetails_Constructors_Label("ConstructorsDetails");
+
+
+enum E_SubListIndices
+{
+ sli_ConstructorsSummary = 0,
+ sli_ConstructorsDetails = 1
+};
+
+} //anonymous namespace
+
+
+HF_IdlSglIfcService::HF_IdlSglIfcService( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlSglIfcService::~HF_IdlSglIfcService()
+{
+}
+
+typedef ::ary::idl::ifc_sglifcservice::attr SglIfcServiceAttr;
+
+void
+HF_IdlSglIfcService::Produce_byData( const client & i_ce ) const
+{
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+ produce_Title(aTitle, C_sCePrefix_Service, i_ce);
+
+ HF_DocEntryList
+ aTopList( aTitle.Add_Row() );
+ aTopList.Produce_Term(C_sImplementedInterface);
+
+ HF_IdlTypeText
+ aImplementedInterface( Env(), aTopList.Produce_Definition(), true, &i_ce);
+ aImplementedInterface.Produce_byData( SglIfcServiceAttr::BaseInterface(i_ce) );
+
+ CurOut() << new Html::HorizontalLine;
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ dyn_ce_list
+ dpConstructors;
+ SglIfcServiceAttr::Get_Constructors(dpConstructors, i_ce);
+ if ( (*dpConstructors).operator bool() )
+ {
+ produce_Members( *dpConstructors,
+ C_sList_Constructors,
+ C_sList_Constructors_Label,
+ C_sDetails_Constructors,
+ C_sDetails_Constructors_Label );
+ pNaviSubRow->SwitchOn(sli_ConstructorsSummary);
+ pNaviSubRow->SwitchOn(sli_ConstructorsDetails);
+ }
+
+ pNaviSubRow->Produce_Row();
+ CurOut() << new Xml::XmlCode("<br>&nbsp;");
+}
+
+DYN HF_NaviSubRow &
+HF_IdlSglIfcService::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce, true);
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+ ret.AddItem(C_sList_Constructors, C_sList_Constructors_Label, false);
+ ret.AddItem(C_sDetails_Constructors, C_sDetails_Constructors_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+typedef ary::idl::ifc_function::attr funcAttr;
+
+void
+HF_IdlSglIfcService::produce_MemberDetails( HF_SubTitleTable & o_table,
+ const client & i_ce ) const
+{
+ HF_IdlMethod
+ aConstructor( Env(),
+ o_table.Add_Row()
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_MDetail) );
+
+ ary::Dyn_StdConstIterator<ary::idl::Parameter>
+ pParameters;
+ funcAttr::Get_Parameters(pParameters, i_ce);
+
+ ary::Dyn_StdConstIterator<ary::idl::Type_id>
+ pExceptions;
+ funcAttr::Get_Exceptions(pExceptions, i_ce);
+
+ aConstructor.Produce_byData( i_ce.LocalName(),
+ funcAttr::ReturnType(i_ce),
+ *pParameters,
+ *pExceptions,
+ funcAttr::IsOneway(i_ce),
+ funcAttr::HasEllipse(i_ce),
+ i_ce );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_siservice.hxx b/autodoc/source/display/idl/hfi_siservice.hxx
new file mode 100644
index 000000000000..e1953a93a1ca
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_siservice.hxx
@@ -0,0 +1,74 @@
+/* -*- 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 ADC_DISPLAY_HFI_SISERVICE_HXX
+#define ADC_DISPLAY_HFI_SISERVICE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+
+class HF_NaviSubRow;
+class HF_SubTitleTable;
+
+class HF_IdlSglIfcService : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlSglIfcService(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlSglIfcService();
+
+ void Produce_byData(
+ const client & i_ce ) const;
+ private:
+ DYN HF_NaviSubRow & make_Navibar(
+ const client & i_ce ) const;
+
+ void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & i_ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Service;
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_struct.cxx b/autodoc/source/display/idl/hfi_struct.cxx
new file mode 100644
index 000000000000..ada9d7618ca2
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_struct.cxx
@@ -0,0 +1,206 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_struct.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/ik_exception.hxx>
+#include <ary/idl/ik_struct.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_navi_sub.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_navibar.hxx"
+#include "hfi_property.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+extern const String
+ C_sCePrefix_Struct("struct");
+extern const String
+ C_sCePrefix_Exception("exception");
+
+
+namespace
+{
+
+const String
+ C_sBaseStruct("Base Hierarchy");
+const String
+ C_sBaseException("Base Hierarchy");
+
+const String
+ C_sList_Elements("Elements' Summary");
+const String
+ C_sList_Elements_Label("Elements");
+
+const String
+ C_sList_ElementDetails("Elements' Details");
+const String
+ C_sList_ElementDetails_Label("ElementDetails");
+
+enum E_SubListIndices
+{
+ sli_ElementsSummary = 0,
+ sli_ElementsDetails = 1
+};
+
+} // anonymous namespace
+
+
+
+HF_IdlStruct::HF_IdlStruct( Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ bool i_bIsException )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut),
+ bIsException(i_bIsException)
+{
+}
+
+HF_IdlStruct::~HF_IdlStruct()
+{
+}
+
+void
+HF_IdlStruct::Produce_byData( const client & i_ce ) const
+{
+ const ary::idl::Struct *
+ pStruct =
+ bIsException
+ ? 0
+ : static_cast< const ary::idl::Struct* >(&i_ce);
+ bool bIsTemplate =
+ pStruct != 0
+ ? pStruct->TemplateParameterType().IsValid()
+ : false;
+
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+
+ // Title:
+ StreamLock
+ slAnnotations(200);
+ get_Annotations(slAnnotations(), i_ce);
+
+ StreamLock rTitle(200);
+ if (bIsTemplate)
+ rTitle() << "template ";
+ rTitle()
+ << (bIsException
+ ? C_sCePrefix_Exception
+ : C_sCePrefix_Struct)
+ << " "
+ << i_ce.LocalName();
+ if (bIsTemplate)
+ {
+ csv_assert(pStruct != 0);
+ rTitle()
+ << "<"
+ << pStruct->TemplateParameter()
+ << ">";
+ }
+ aTitle.Produce_Title(slAnnotations().c_str(), rTitle().c_str());
+
+ // Bases:
+ produce_Bases( aTitle.Add_Row(),
+ i_ce,
+ bIsException
+ ? C_sBaseException
+ : C_sBaseStruct );
+
+ // Docu:
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ // Elements:
+ dyn_ce_list
+ dpElements;
+ if (bIsException)
+ ary::idl::ifc_exception::attr::Get_Elements(dpElements, i_ce);
+ else
+ ary::idl::ifc_struct::attr::Get_Elements(dpElements, i_ce);
+
+ if ( (*dpElements).operator bool() )
+ {
+ produce_Members( *dpElements,
+ C_sList_Elements,
+ C_sList_Elements_Label,
+ C_sList_ElementDetails,
+ C_sList_ElementDetails_Label );
+ pNaviSubRow->SwitchOn(sli_ElementsSummary);
+ pNaviSubRow->SwitchOn(sli_ElementsDetails);
+ }
+ pNaviSubRow->Produce_Row();
+}
+
+HtmlFactory_Idl::type_id
+HF_IdlStruct::inq_BaseOf( const client & i_ce ) const
+{
+ return bIsException
+ ? ary::idl::ifc_exception::attr::Base(i_ce)
+ : ary::idl::ifc_struct::attr::Base(i_ce);
+}
+
+HF_NaviSubRow &
+HF_IdlStruct::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce);
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+ ret.AddItem(C_sList_Elements, C_sList_Elements_Label, false);
+ ret.AddItem(C_sList_ElementDetails, C_sList_ElementDetails_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+void
+HF_IdlStruct::produce_MemberDetails( HF_SubTitleTable & o_table,
+ const client & i_ce) const
+{
+ HF_IdlStructElement
+ aElement( Env(), o_table );
+ aElement.Produce_byData(i_ce);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_struct.hxx b/autodoc/source/display/idl/hfi_struct.hxx
new file mode 100644
index 000000000000..4c51a4c66c84
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_struct.hxx
@@ -0,0 +1,81 @@
+/* -*- 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 ADC_DISPLAY_HFI_STRUCT_HXX
+#define ADC_DISPLAY_HFI_STRUCT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+/** Is used to display ->ary::idl::Exception s as well as ->ary::idl::Struct s.
+*/
+class HF_IdlStruct : public HtmlFactory_Idl
+{
+ public:
+
+ HF_IdlStruct(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ bool i_bIsException );
+ virtual ~HF_IdlStruct();
+
+ void Produce_byData(
+ const client & ce ) const;
+ private:
+ // Interface HtmlFactory_Idl:
+ virtual type_id inq_BaseOf(
+ const client & i_ce ) const;
+ // Locals
+ HF_NaviSubRow & make_Navibar(
+ const client & ce ) const;
+ virtual void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & ce ) const;
+ // DATA
+ bool bIsException;
+};
+
+
+
+// IMPLEMENTATION
+
+
+extern const String
+ C_sCePrefix_Struct;
+extern const String
+ C_sCePrefix_Exception;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_tag.cxx b/autodoc/source/display/idl/hfi_tag.cxx
new file mode 100644
index 000000000000..a2b97a4b41ff
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_tag.cxx
@@ -0,0 +1,357 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_tag.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary_i/ci_text2.hxx>
+#include <ary_i/d_token.hxx>
+#include <toolkit/out_tree.hxx>
+#include <adc_cl.hxx>
+#include <adc_msg.hxx>
+#include "hfi_typetext.hxx"
+#include "hi_ary.hxx"
+#include "hi_env.hxx"
+#include "hi_linkhelper.hxx"
+
+
+using ary::inf::DocuTex2;
+
+
+inline void
+HF_IdlTag::Enter_TextOut( Xml::Element & o_rText ) const
+{
+ aTextOut.Out().Enter(o_rText);
+}
+
+inline void
+HF_IdlTag::Leave_TextOut() const
+{
+ aTextOut.Out().Leave();
+}
+
+inline void
+HF_IdlTag::PutText_Out( const ary::inf::DocuTex2 & i_rText ) const
+{
+ i_rText.DisplayAt( const_cast< HF_IdlDocuTextDisplay& >(aTextOut) );
+}
+
+
+
+HF_IdlTag::HF_IdlTag( Environment & io_rEnv,
+ const ary::idl::CodeEntity & i_rScopeGivingCe )
+ : HtmlFactory_Idl( io_rEnv, 0 ),
+ pTitleOut(0),
+ aTextOut(io_rEnv, 0, i_rScopeGivingCe)
+{
+}
+
+HF_IdlTag::~HF_IdlTag()
+{
+}
+
+void
+HF_IdlTag::Produce_byData( Xml::Element & o_rTitle,
+ Xml::Element & o_rText,
+ const ary::inf::AtTag2 & i_rTag ) const
+{
+ pTitleOut = &o_rTitle;
+ Enter_TextOut(o_rText);
+ i_rTag.DisplayAt( const_cast< HF_IdlTag& >(*this) );
+ Leave_TextOut();
+}
+
+void
+HF_IdlTag::Produce_byData( Xml::Element & o_rTitle,
+ Xml::Element & o_rText,
+ const std::vector< csi::dsapi::DT_SeeAlsoAtTag* > &
+ i_seeAlsoVector ) const
+{
+ o_rTitle << "See also";
+ for ( std::vector< csi::dsapi::DT_SeeAlsoAtTag* >::const_iterator
+ it = i_seeAlsoVector.begin();
+ it != i_seeAlsoVector.end();
+ ++it )
+ {
+ if (it != i_seeAlsoVector.begin())
+ {
+ o_rText << ", ";
+ }
+ HF_IdlTypeText
+ aLinkText(Env(), o_rText, true, &aTextOut.ScopeGivingCe());
+ aLinkText.Produce_byData( (*it)->LinkText() );
+ }
+}
+
+void
+HF_IdlTag::Display_StdAtTag( const csi::dsapi::DT_StdAtTag & i_rTag )
+{
+ if ( i_rTag.Text().IsEmpty() )
+ return;
+
+ csv_assert( pTitleOut != 0 );
+ *pTitleOut << i_rTag.Title();
+ PutText_Out( i_rTag.Text() );
+}
+
+void
+HF_IdlTag::Display_SeeAlsoAtTag( const csi::dsapi::DT_SeeAlsoAtTag & i_rTag )
+{
+ if ( i_rTag.Text().IsEmpty() )
+ return;
+
+ csv_assert( pTitleOut != 0 );
+ *pTitleOut << "See also";
+
+ HF_IdlTypeText aLinkText(Env(),aTextOut.CurOut(),true, &aTextOut.ScopeGivingCe());
+ aLinkText.Produce_byData( i_rTag.LinkText() );
+
+ aTextOut.CurOut() << new Html::LineBreak;
+ PutText_Out( i_rTag.Text() );
+}
+
+void
+HF_IdlTag::Display_ParameterAtTag( const csi::dsapi::DT_ParameterAtTag & i_rTag )
+{
+ csv_assert( pTitleOut != 0 );
+ StreamLock sl(100);
+ *pTitleOut
+ << ( sl() << "Parameter " << i_rTag.Title() << c_str );
+ PutText_Out( i_rTag.Text() );
+}
+
+void
+HF_IdlTag::Display_SinceAtTag( const csi::dsapi::DT_SinceAtTag & i_rTag )
+{
+ csv_assert(pTitleOut != 0);
+
+ if ( i_rTag.Text().IsEmpty() )
+ {
+ return;
+ }
+
+ // Transform the value of the @since tag into the text to be displayed.
+ String sDisplay =
+ autodoc::CommandLine::Get_().DisplayOf_SinceTagValue(
+ i_rTag.Text().TextOfFirstToken() );
+ if (sDisplay.empty())
+ return;
+
+ *pTitleOut << "Since ";
+ DocuTex2 aHelp;
+ aHelp.AddToken(* new csi::dsapi::DT_TextToken(sDisplay));
+ PutText_Out(aHelp);
+}
+
+
+//******************** HF_IdlShortDocu *********************/
+
+HF_IdlShortDocu::HF_IdlShortDocu( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl( io_rEnv, &o_rOut )
+{
+}
+
+HF_IdlShortDocu::~HF_IdlShortDocu()
+{
+}
+
+void
+HF_IdlShortDocu::Produce_byData( const ary::idl::CodeEntity & i_rCe )
+{
+ const ce_info *
+ pDocu = Get_IdlDocu(i_rCe.Docu());
+ if (pDocu == 0)
+ return;
+
+ const ce_info &
+ rDocu = *pDocu;
+ if ( rDocu.IsDeprecated() )
+ {
+ CurOut()
+ >> *new Html::Bold
+ << "[ DEPRECATED ]" << new Html::LineBreak;
+ }
+ if ( rDocu.IsOptional() )
+ {
+ CurOut()
+ >> *new Html::Bold
+ << "[ OPTIONAL ]" << new Html::LineBreak;
+ }
+
+ HF_IdlDocuTextDisplay
+ aText( Env(), &CurOut(), i_rCe);
+ rDocu.Short().DisplayAt(aText);
+}
+
+
+//******************** HF_IdlDocuTextDisplay *********************/
+
+
+HF_IdlDocuTextDisplay::HF_IdlDocuTextDisplay( Environment & io_rEnv,
+ Xml::Element * o_pOut,
+ const ary::idl::CodeEntity & i_rScopeGivingCe )
+ : HtmlFactory_Idl(io_rEnv, o_pOut),
+ sScope(),
+ sLinkToken(),
+ bGatherLink(false),
+ pScopeGivingCe(&i_rScopeGivingCe)
+{
+}
+
+HF_IdlDocuTextDisplay::~HF_IdlDocuTextDisplay()
+{
+}
+
+void
+HF_IdlDocuTextDisplay::Display_TextToken( const csi::dsapi::DT_TextToken & i_rToken )
+{
+ if (bGatherLink)
+ {
+ if (sLinkToken.length() == 0)
+ {
+ sLinkToken = i_rToken.GetText();
+ return;
+ }
+ else
+ {
+ if ( pScopeGivingCe == 0 )
+ { // only in original file
+ TheMessages().Out_TypeVsMemberMisuse(sLinkToken, Env().CurPageCe_AsText(), 0);
+ }
+
+ StopLinkGathering();
+ }
+ } // endif (bGatherLink)
+
+ CurOut() << new Xml::XmlCode( i_rToken.GetText() );
+}
+
+void
+HF_IdlDocuTextDisplay::Display_White()
+{
+ CurOut() << " ";
+}
+
+void
+HF_IdlDocuTextDisplay::Display_MupType( const csi::dsapi::DT_MupType & i_rToken )
+{
+ if (i_rToken.IsBegin())
+ {
+ StartLinkGathering(i_rToken.Scope());
+ }
+ else
+ {
+ if (bGatherLink)
+ {
+ CreateTypeLink();
+ StopLinkGathering();
+ }
+ }
+}
+
+void
+HF_IdlDocuTextDisplay::Display_MupMember( const csi::dsapi::DT_MupMember & i_rToken )
+{
+ if (i_rToken.IsBegin())
+ {
+ StartLinkGathering(i_rToken.Scope());
+ }
+ else
+ {
+ if (bGatherLink)
+ {
+ CreateMemberLink();
+ StopLinkGathering();
+ }
+ }
+}
+
+void
+HF_IdlDocuTextDisplay::Display_MupConst( const csi::dsapi::DT_MupConst & i_rToken )
+{
+ CurOut()
+ >> *new Html::Bold
+ << i_rToken.GetText();
+}
+
+void
+HF_IdlDocuTextDisplay::Display_Style( const csi::dsapi::DT_Style & i_rToken )
+{
+ CurOut() << new Xml::XmlCode( i_rToken.GetText() );
+}
+
+void
+HF_IdlDocuTextDisplay::Display_EOL()
+{
+ CurOut() << "\n";
+}
+
+void
+HF_IdlDocuTextDisplay::CreateTypeLink()
+{
+ if (strchr(sLinkToken,':') != 0)
+ {
+ TheMessages().Out_TypeVsMemberMisuse(sLinkToken, Env().CurPageCe_AsFile(".idl"), 0);
+ CurOut() << sLinkToken;
+ return;
+ }
+ HF_IdlTypeText aLink(Env(), CurOut(), true, &ScopeGivingCe());
+ aLink.Produce_LinkInDocu(sScope, sLinkToken, String::Null_());
+}
+
+void
+HF_IdlDocuTextDisplay::CreateMemberLink()
+{
+
+ HF_IdlTypeText aLink(Env(), CurOut(), true, &ScopeGivingCe());
+
+ const char *
+ sSplit = strchr(sLinkToken,':');
+
+ if (sSplit != 0)
+ {
+ String sCe(sLinkToken.c_str(), sSplit - sLinkToken.c_str());
+ String sMember(sSplit+2);
+
+ if (NOT sScope.empty() OR ScopeGivingCe().LocalName() != sCe )
+ aLink.Produce_LinkInDocu(sScope, sCe, sMember);
+ else
+ aLink.Produce_LocalLinkInDocu(sMember);
+ }
+ else
+ {
+ aLink.Produce_LocalLinkInDocu(sLinkToken);
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_tag.hxx b/autodoc/source/display/idl/hfi_tag.hxx
new file mode 100644
index 000000000000..ed247bf27a4a
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_tag.hxx
@@ -0,0 +1,180 @@
+/* -*- 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 ADC_DISPLAY_HFI_TAG_HXX
+#define ADC_DISPLAY_HFI_TAG_HXX
+
+// BASE CLASSES
+#include "hi_factory.hxx"
+#include <ary_i/disdocum.hxx>
+// USED SERVICES
+#include <ary/idl/i_types4idl.hxx>
+#include <ary_i/ci_atag2.hxx>
+#include <ary_i/ci_text2.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+
+#include <toolkit/hf_docentry.hxx>
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+}
+}
+
+
+
+
+/** This class is an implementation of ary::inf::DocuText_Display
+ and will be used by that interface.
+*/
+class HF_IdlDocuTextDisplay : public HtmlFactory_Idl,
+ public ary::inf::DocuText_Display
+{
+ public:
+ HF_IdlDocuTextDisplay(
+ Environment & io_rEnv,
+ Xml::Element * o_pOut,
+ const ary::idl::CodeEntity &
+ i_rScopeGivingCe );
+ virtual ~HF_IdlDocuTextDisplay();
+
+ const ary::idl::CodeEntity &
+ ScopeGivingCe() const { return *pScopeGivingCe; }
+ private:
+ virtual void Display_TextToken(
+ const csi::dsapi::DT_TextToken &
+ i_rToken );
+ virtual void Display_White();
+
+ virtual void Display_MupType(
+ const csi::dsapi::DT_MupType &
+ i_rToken );
+ virtual void Display_MupMember(
+ const csi::dsapi::DT_MupMember &
+ i_rToken );
+ virtual void Display_MupConst(
+ const csi::dsapi::DT_MupConst &
+ i_rToken );
+ virtual void Display_Style(
+ const csi::dsapi::DT_Style & i_rToken );
+ virtual void Display_EOL();
+
+ // Local
+ void StartLinkGathering(
+ const String & i_sScope )
+ { sLinkToken = ""; sScope = i_sScope; bGatherLink = true; }
+ void StopLinkGathering() { bGatherLink = false; }
+ /** @precond
+ The scope is in sScope, the name is in sLinkToken.
+ */
+ void CreateTypeLink();
+ /** @precond
+ The scope is in sScope, the qualified member-name is in sLinkToken.
+ */
+ void CreateMemberLink();
+
+ // DATA
+ String sScope;
+ String sLinkToken;
+ bool bGatherLink;
+ const ary::idl::CodeEntity *
+ pScopeGivingCe;
+};
+
+
+
+class HF_IdlShortDocu : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlShortDocu(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlShortDocu();
+
+ void Produce_byData(
+ const ary::idl::CodeEntity &
+ i_rCe );
+};
+
+
+
+class HF_IdlTag : public HtmlFactory_Idl,
+ public ary::inf::DocuTag_Display
+{
+ public:
+ HF_IdlTag(
+ Environment & io_rEnv,
+ const ary::idl::CodeEntity &
+ i_rScopeGivingCe );
+ virtual ~HF_IdlTag();
+
+ void Produce_byData(
+ Xml::Element & o_rTitle,
+ Xml::Element & o_rText,
+ const ary::inf::AtTag2 &
+ i_rTag ) const;
+ void Produce_byData(
+ Xml::Element & o_rTitle,
+ Xml::Element & o_rText,
+ const std::vector< csi::dsapi::DT_SeeAlsoAtTag* > &
+ i_seeAlsoVector ) const;
+ private:
+ virtual void Display_StdAtTag(
+ const csi::dsapi::DT_StdAtTag &
+ i_rToken );
+ virtual void Display_SeeAlsoAtTag(
+ const csi::dsapi::DT_SeeAlsoAtTag &
+ i_rToken );
+ virtual void Display_ParameterAtTag(
+ const csi::dsapi::DT_ParameterAtTag &
+ i_rToken );
+ virtual void Display_SinceAtTag(
+ const csi::dsapi::DT_SinceAtTag &
+ i_rToken );
+
+ void Enter_TextOut(
+ Xml::Element & o_rText ) const;
+ void Leave_TextOut() const;
+ void PutText_Out(
+ const ary::inf::DocuTex2 &
+ i_rText ) const;
+ // DATA
+ mutable Xml::Element *
+ pTitleOut;
+ mutable HF_IdlDocuTextDisplay
+ aTextOut;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typedef.cxx b/autodoc/source/display/idl/hfi_typedef.cxx
new file mode 100644
index 000000000000..b1b717572b65
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typedef.cxx
@@ -0,0 +1,95 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_typedef.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_typedef.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include <toolkit/hf_linachain.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_navibar.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+
+HF_IdlTypedef::HF_IdlTypedef( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlTypedef::~HF_IdlTypedef()
+{
+}
+
+typedef ary::idl::ifc_typedef::attr TypedefAttr;
+
+void
+HF_IdlTypedef::Produce_byData( const client & i_ce ) const
+{
+ make_Navibar(i_ce);
+
+ HF_TitleTable
+ aTitle(CurOut());
+
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+ produce_Title(aTitle, C_sCePrefix_Typedef, i_ce);
+
+ HF_DocEntryList
+ aTopList( aTitle.Add_Row() );
+ aTopList.Produce_Term("Defining Type");
+
+ HF_IdlTypeText
+ aDefinition( Env(), aTopList.Produce_Definition(), true );
+ aDefinition.Produce_byData( TypedefAttr::DefiningType(i_ce) );
+
+ CurOut() << new Html::HorizontalLine;
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+}
+
+void
+HF_IdlTypedef::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce);
+
+ CurOut() << new Html::HorizontalLine();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typedef.hxx b/autodoc/source/display/idl/hfi_typedef.hxx
new file mode 100644
index 000000000000..3ef08d494fe4
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typedef.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 ADC_DISPLAY_HFI_TYPEDEF_HXX
+#define ADC_DISPLAY_HFI_TYPEDEF_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+class HF_IdlTypedef : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlTypedef(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlTypedef();
+
+ void Produce_byData(
+ const client & ce ) const;
+ private:
+ void make_Navibar(
+ const client & ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+
+const String
+ C_sCePrefix_Typedef("typedef");
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typetext.cxx b/autodoc/source/display/idl/hfi_typetext.cxx
new file mode 100644
index 000000000000..458f5d12ae02
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typetext.cxx
@@ -0,0 +1,760 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_typetext.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <string.h>
+#include <ary/idl/i_type.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/ik_ce.hxx>
+#include <adc_cl.hxx>
+#include <adc_msg.hxx>
+#include "hi_linkhelper.hxx"
+
+
+
+
+
+
+inline const ary::idl::Module *
+HF_IdlTypeText::referingModule() const
+{
+ if (pReferingCe == 0)
+ return Env().Linker().Search_CurModule();
+ else
+ return &Env().Data().Find_Module(pReferingCe->NameRoom());
+}
+
+inline const HF_IdlTypeText::client *
+HF_IdlTypeText::referingCe() const
+{
+ return pReferingCe;
+}
+
+
+HF_IdlTypeText::HF_IdlTypeText( Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ bool i_bWithLink,
+ const client * i_pScopeGivingCe )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut),
+ pReferingCe( i_pScopeGivingCe ),
+ bWithLink(i_bWithLink)
+{
+}
+
+HF_IdlTypeText::HF_IdlTypeText( Environment & io_rEnv,
+ E_Index )
+ : HtmlFactory_Idl(io_rEnv, 0),
+ pReferingCe( 0 ),
+ bWithLink(true)
+{
+}
+
+HF_IdlTypeText::~HF_IdlTypeText()
+{
+}
+
+void
+HF_IdlTypeText::Produce_byData(ary::idl::Type_id i_idType) const
+{
+ StringVector aModule_;
+ String sName;
+ ce_id nCe;
+ int nSequenceCount = 0;
+ csv::erase_container(aModule_);
+
+ const ary::idl::Type &
+ rType = Env().Data().Find_Type(i_idType);
+ Env().Data().Get_TypeText(aModule_, sName, nCe, nSequenceCount, rType);
+
+ if ( Env().Data().IsBuiltInOrRelated(rType) )
+ {
+ produce_BuiltIn(sName,nSequenceCount);
+ }
+ else
+ {
+ produce_FromStd( aModule_,
+ sName,
+ String::Null_(),
+ nSequenceCount,
+ (nCe.IsValid() ? exists_yes : exists_no),
+ rType.FirstEnclosedNonSequenceType(Env().Gate()).TemplateParameters() );
+ }
+}
+
+void
+HF_IdlTypeText::Produce_byData( ary::idl::Ce_id i_idCe ) const
+{
+ StringVector aModule_;
+ String sCe;
+ String sMember;
+ csv::erase_container(aModule_);
+
+ const ary::idl::CodeEntity &
+ rCe = Env().Data().Find_Ce(i_idCe);
+ Env().Data().Get_CeText(aModule_, sCe, sMember, rCe);
+ produce_FromStd(aModule_, sCe, sMember, 0, exists_yes);
+}
+
+void
+HF_IdlTypeText::Produce_byData( const String & i_sFullName ) const
+{
+ if ( strncmp(i_sFullName,"http://", 7) == 0 )
+ {
+ CurOut()
+ >> *new Html::Link(i_sFullName)
+ << i_sFullName;
+ return;
+ }
+
+ StringVector aModule_;
+ String sCe,
+ sMember;
+ int nSequence = 0;
+ String sTypeText;
+ csv::erase_container(aModule_);
+
+ const ary::idl::Module *
+ pScopeModule = referingModule();
+ if (pScopeModule == 0)
+ {
+ // SYNTAX_ERR, but rather logical error: Missing module.
+ CurOut() << i_sFullName;
+ // KORR_FUTURE
+ // How to put a message about this?
+ // errorOut_UnresolvedLink(i_sFullName);
+ return;
+ }
+
+ const char * sTypeStart = strrchr(i_sFullName,'<');
+ if ( sTypeStart != 0 )
+ {
+ const char * sTypeEnd = strchr(i_sFullName,'>');
+ if (sTypeEnd == 0)
+ { // SYNTAX_ERR
+ CurOut() << i_sFullName;
+ // KORR_FUTURE
+ // How to put a message about this?
+ // errorOut_UnresolvedLink(i_sFullName);
+ return;
+ }
+
+ nSequence = count_Sequences(i_sFullName);
+ sTypeStart++;
+ sTypeText.assign(sTypeStart, sTypeEnd-sTypeStart);
+ }
+ else
+ {
+ sTypeText = i_sFullName;
+ }
+
+ csv::erase_container(aModule_);
+ bool bFound = // KORR : Check the semantics of this, see if ce really exists, if it is a member?
+ Env().Data().Search_Ce( aModule_,
+ sCe,sMember,
+ sTypeText,
+ *pScopeModule );
+ if (NOT bFound)
+ {
+ if ( strchr(sTypeText,':') == 0
+ AND
+ *sTypeText.c_str() != 'X' ) // This is a HACK, make this correct!
+ {
+ Produce_LocalLinkInDocu(sTypeText);
+ return;
+ }
+ CurOut() << i_sFullName;
+ // KORR
+ // How to put a message about this?
+ // errorOut_UnresolvedLink(i_sFullName);
+ return;
+ }
+
+ produce_FromStd(aModule_, sCe, sMember, nSequence, exists_yes);
+}
+
+void
+HF_IdlTypeText::Produce_LinkInDocu( const String & i_scope,
+ const String & i_name,
+ const String & i_member ) const
+{
+ StringVector aModule_;
+ String sName;
+ csv::erase_container(aModule_);
+
+ const ary::idl::Module *
+ pScopeModule = referingModule();
+ if (pScopeModule == 0)
+ {
+ // SYNTAX_ERR, but rather logical error: Missing module.
+ CurOut() << i_scope << "::" << i_name;
+ if (NOT i_member.empty())
+ CurOut() << "::" << i_member;
+ return;
+ }
+
+ bool
+ bFound = Env().Data().Search_CesModule( aModule_,
+ i_scope,
+ i_name,
+ *pScopeModule );
+ if (NOT bFound)
+ {
+ CurOut() << i_scope << "::" << i_name;
+ if (NOT i_member.empty())
+ CurOut() << "::" << i_member;
+ return;
+ }
+ produce_FromStd(aModule_, i_name, i_member, 0, exists_yes);
+}
+
+void
+HF_IdlTypeText::Produce_LocalLinkInDocu( const String & i_member ) const
+{
+ StringVector aModule_;
+ String sName;
+ csv::erase_container(aModule_);
+
+ csv_assert(referingCe() != 0);
+ if ( referingModule() == Env().Linker().Search_CurModule() )
+ {
+ StreamLock slLink(200);
+ if (referingCe()->SightLevel() == ary::idl::sl_Member)
+ {
+ slLink() << "#" << i_member;
+ }
+ else
+ {
+ slLink() << referingCe()->LocalName()
+ << ".html#"
+ << i_member;
+ }
+ CurOut()
+ >> *new Html::Link(slLink().c_str())
+ << i_member;
+ return;
+ }
+
+ String sDummyMember;
+ Env().Data().Get_CeText(aModule_, sName, sDummyMember, *referingCe());
+ produce_FromStd(aModule_, sName, i_member, 0, exists_yes);
+}
+
+void
+HF_IdlTypeText::Produce_IndexLink( Xml::Element & o_out,
+ const client & i_ce ) const
+{
+ StringVector aModule_;
+ String sCe;
+ String sMember;
+ csv::erase_container(aModule_);
+
+ Out().Enter(o_out);
+
+ Env().Data().Get_CeText(aModule_, sCe, sMember, i_ce);
+ produce_IndexLink(aModule_, sCe, sMember, false);
+
+ Out().Leave();
+}
+
+void
+HF_IdlTypeText::Produce_IndexOwnerLink( Xml::Element & o_out,
+ const client & i_owner ) const
+{
+ StringVector aModule_;
+ String sCe;
+ String sMember;
+ csv::erase_container(aModule_);
+
+ Out().Enter(o_out);
+
+ if (i_owner.Owner().IsValid())
+ {
+ Env().Data().Get_CeText(aModule_, sCe, sMember, i_owner);
+ produce_IndexLink(aModule_, sCe, sMember, true);
+ }
+ else
+ { // global namespace:
+
+ CurOut()
+ << "."
+ >> *new Html::Link("../module-ix.html")
+ << "global namespace";
+ }
+
+
+ Out().Leave();
+}
+
+void
+HF_IdlTypeText::Produce_IndexSecondEntryLink( Xml::Element & o_out,
+ const client & i_ce ) const
+{
+ StringVector aModule_;
+ String sCe;
+ String sMember;
+ csv::erase_container(aModule_);
+
+ Out().Enter(o_out);
+
+ Env().Data().Get_CeText(aModule_, sCe, sMember, i_ce);
+ produce_IndexLink(aModule_, sCe, sMember, true);
+ Out().Leave();
+}
+
+
+void
+HF_IdlTypeText::produce_FromStd( const StringVector & i_module,
+ const String & i_ce,
+ const String & i_member,
+ int i_sequenceCount,
+ E_Existence i_ceExists,
+ const std::vector<ary::idl::Type_id> *
+ i_templateParameters ) const
+{
+ if (i_ceExists == exists_no)
+ {
+ if ( is_ExternLink(i_module) )
+ {
+ produce_ExternLink(i_module,i_ce,i_member,i_sequenceCount,i_templateParameters);
+ return;
+ }
+ errorOut_UnresolvedLink(i_module, i_ce, i_member);
+ }
+
+ output::Node &
+ rCeNode = Env().OutputTree().Provide_Node(i_module);
+ output::Position
+ aTargetPos(rCeNode);
+ bool
+ bShowModule = rCeNode != Env().CurPosition().RelatedNode()
+ ? i_module.size() > 0
+ : false;
+ bool
+ bUseMember = NOT i_member.empty();
+ bool
+ bLink2Module = i_ceExists == exists_yes;
+ bool
+ bLink2Ce = i_ceExists == exists_yes;
+ bool
+ bLink2Member = NOT Env().Is_MemberExistenceCheckRequired()
+ AND i_ceExists == exists_yes;
+ bool
+ bHasCeOrName = NOT i_ce.empty();
+
+ if (i_sequenceCount > 0)
+ start_Sequence(i_sequenceCount);
+
+ StreamLock aLink(300);
+ StreamStr & rLink = aLink();
+
+ // Produce output: module
+ if (bShowModule)
+ {
+ int nMax = i_module.size() - 1;
+ int nCount = 0;
+ StringVector::const_iterator
+ itm = i_module.begin();
+ for ( ;
+ nCount < nMax;
+ ++itm, ++nCount )
+ {
+ CurOut() << "::" << *itm;
+ }
+
+ CurOut() << "::";
+ if (bLink2Module)
+ {
+ aTargetPos.Set_File(output::ModuleFileName());
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ CurOut()
+ >> *new Html::Link( rLink.c_str() )
+ << *itm;
+ rLink.reset();
+ }
+ else
+ {
+ CurOut() << *itm;
+ }
+
+ if (bHasCeOrName)
+ CurOut() << "::";
+ } // end if (bShowModule)
+
+ // CodeEntity and member:
+ aTargetPos.Set_File( rLink << i_ce << ".html" << c_str );
+ rLink.reset();
+
+ if (bHasCeOrName)
+ {
+ if (bLink2Ce)
+ {
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_ce;
+ rLink.reset();
+ }
+ else
+ {
+ CurOut() << i_ce;
+ }
+
+ if (i_templateParameters != 0)
+ write_TemplateParameterList(*i_templateParameters);
+
+ if (bUseMember)
+ {
+ CurOut() << "::";
+
+ if (bLink2Member)
+ {
+ bool bFunction = strstr(i_member,"()") != 0;
+ String sMember( i_member );
+ if (bFunction)
+ sMember.assign(i_member.c_str(), sMember.length()-2);
+
+ Env().Linker().Get_Link2Member(rLink, aTargetPos, sMember);
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_member;
+ rLink.reset();
+ }
+ else
+ {
+ CurOut()
+ << i_member;
+ }
+ } // endif (bUseMember)
+ } // endif (bHasCeOrName)
+
+ if (i_sequenceCount > 0)
+ finish_Sequence(i_sequenceCount);
+}
+
+void
+HF_IdlTypeText::produce_BuiltIn( const String & i_type,
+ int i_sequenceCount ) const
+{
+ if (i_sequenceCount > 0)
+ start_Sequence(i_sequenceCount);
+ CurOut() << i_type;
+ if (i_sequenceCount > 0)
+ finish_Sequence(i_sequenceCount);
+}
+
+void
+HF_IdlTypeText::produce_IndexLink( const StringVector & i_module,
+ const String & i_ce,
+ const String & i_member,
+ bool i_bIsOwner ) const
+{
+ output::Node &
+ rCeNode = Env().OutputTree().Provide_Node(i_module);
+ output::Position
+ aTargetPos(rCeNode);
+ bool
+ bShowModule = i_bIsOwner OR (i_module.size() > 0 AND i_ce.empty());
+ bool
+ bShowNonModule = NOT bShowModule OR (i_bIsOwner AND NOT i_ce.empty());
+ bool
+ bUseMember = NOT i_member.empty();
+
+ StreamLock aLink(300);
+ StreamStr & rLink = aLink();
+
+ // Produce output: module
+ if (bShowModule)
+ {
+ if (i_bIsOwner)
+ {
+ int nMax = bShowNonModule ? i_module.size() : i_module.size() - 1;
+ int nCount = 0;
+ for ( StringVector::const_iterator itm = i_module.begin();
+ nCount < nMax;
+ ++itm, ++nCount )
+ {
+ CurOut() << "::" << *itm;
+ }
+ CurOut() << ":: .";
+ }
+
+ if (NOT bShowNonModule)
+ {
+ aTargetPos.Set_File(output::ModuleFileName());
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ CurOut()
+ >> *new Html::Link( rLink.c_str() )
+ >> *new Html::Bold
+ << i_module.back();
+ rLink.reset();
+ }
+ } // end if (bShowModule)
+
+ if (bShowNonModule)
+ {
+ aTargetPos.Set_File( rLink << i_ce << ".html" << c_str );
+ rLink.reset();
+
+ if (bUseMember)
+ {
+ bool bFunction = strstr(i_member,"()") != 0;
+ String sMember( i_member );
+ if (bFunction)
+ sMember.assign(i_member.c_str(), sMember.length()-2);
+ Env().Linker().Get_Link2Member(rLink, aTargetPos, sMember);
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ >> *new Html::Bold
+ << i_member;
+ rLink.reset();
+ }
+ else
+ {
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ if (i_bIsOwner)
+ {
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_ce;
+ }
+ else
+ {
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ >> *new Html::Bold
+ << i_ce;
+ }
+ rLink.reset();
+ }
+ } // endif (bHasCeOrName)
+}
+
+int
+HF_IdlTypeText::count_Sequences( const char * i_sFullType ) const
+{
+ int ret = 0;
+
+ for ( const char * pCount = i_sFullType;
+ *pCount != 0;
+ )
+ {
+ pCount = strstr(pCount,"sequence");
+ if (pCount != 0)
+ {
+ pCount += sizeof("sequence"); // = strlen(sequence) + 1 for '<'.
+ if ( *(pCount-1) == '\0' )
+ {
+ // SYNTAX_ERR
+ return 0;
+ }
+ ++ret;
+ }
+ } // end for
+
+ return ret;
+}
+
+void
+HF_IdlTypeText::start_Sequence( int i_count ) const
+{
+ csv_assert( i_count > 0 );
+ for (int i = 0; i < i_count; ++i )
+ {
+ CurOut() << "sequence< ";
+ }
+}
+
+void
+HF_IdlTypeText::finish_Sequence( int i_count ) const
+{
+ csv_assert( i_count > 0 );
+ for (int i = 0; i < i_count; ++i )
+ {
+ CurOut() << " >";
+ }
+}
+
+void
+HF_IdlTypeText::errorOut_UnresolvedLink( const char * i_name ) const
+{
+ StreamLock slFile(1000);
+
+ // KORR
+ // Handle links in cited documentation from other entities.
+ slFile() << Env().CurPageCe_AsText();
+ slFile().pop_back(5);
+ slFile() << ".idl";
+
+ // KORR
+ // Retrieve, correct line number.
+ TheMessages().Out_UnresolvedLink( i_name,
+ slFile().c_str(),
+ 0 );
+}
+
+void
+HF_IdlTypeText::errorOut_UnresolvedLink( const StringVector & i_module,
+ const String & i_ce,
+ const String & i_member ) const
+{
+ StreamLock slName(500);
+
+ if (i_module.size() > 0)
+ {
+ slName().operator_join(i_module.begin(), i_module.end(), "::");
+ if (NOT i_ce.empty())
+ slName() << "::";
+ }
+ if (NOT i_ce.empty())
+ {
+ slName() << i_ce;
+ if (NOT i_member.empty())
+ slName() << "::" << i_member;
+ }
+ errorOut_UnresolvedLink(slName().c_str());
+}
+
+bool
+HF_IdlTypeText::is_ExternLink( const StringVector & i_module ) const
+{
+ const autodoc::CommandLine &
+ rCmdLine = autodoc::CommandLine::Get_();
+ uintt nExtNspLength = rCmdLine.ExternNamespace().length();
+ if (nExtNspLength == 0)
+ return false;
+
+ StreamStr s(1000);
+ s << "::";
+ s.operator_join( i_module.begin(),
+ i_module.end(),
+ "::" );
+
+ if (s.length() < nExtNspLength)
+ return false;
+ return ( strncmp( rCmdLine.ExternNamespace().c_str(),
+ s.c_str(),
+ nExtNspLength ) == 0 );
+}
+
+void
+HF_IdlTypeText::produce_ExternLink( const StringVector & i_module,
+ const String & i_ce,
+ const String & i_member,
+ int i_sequenceCount,
+ const std::vector<ary::idl::Type_id> *
+ i_templateParameters ) const
+{
+ // KORR
+ // Look again at this code and take some time.
+
+ StreamLock aLink(1000);
+ StreamStr & rLink = aLink();
+
+ rLink << autodoc::CommandLine::Get_().ExternRoot();
+ rLink.operator_join( i_module.begin(),
+ i_module.end(),
+ "/" );
+ rLink << '/'
+ << i_ce
+ << ".html";
+ if (i_member.length() > 0)
+ rLink << "/#" << i_member;
+
+ if (i_sequenceCount > 0)
+ start_Sequence(i_sequenceCount);
+
+ // module
+ int nMax = i_module.size();
+ int nCount = 0;
+ StringVector::const_iterator
+ itm = i_module.begin();
+ for ( ;
+ nCount < nMax;
+ ++itm, ++nCount )
+ {
+ CurOut() << "::" << *itm;
+ }
+ CurOut() << "::";
+
+
+ // CodeEntity
+ if (i_member.length() == 0)
+ {
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_ce;
+ }
+ else
+ {
+ CurOut()
+ << i_ce;
+ }
+
+ if (i_templateParameters != 0)
+ write_TemplateParameterList(*i_templateParameters);
+
+ // Member
+ if (i_member.length() > 0)
+ {
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_member;
+ }
+
+ if (i_sequenceCount > 0)
+ finish_Sequence(i_sequenceCount);
+}
+
+void
+HF_IdlTypeText::write_TemplateParameterList(
+ const std::vector<ary::idl::Type_id> & i_templateParameters ) const
+{
+ if (i_templateParameters.size() == 0)
+ return;
+
+ HF_IdlTypeText
+ aTemplateParamWriter(Env(), CurOut(), true, pReferingCe);
+ CurOut() << "< ";
+ std::vector<ary::idl::Type_id>::const_iterator
+ it = i_templateParameters.begin();
+ aTemplateParamWriter.Produce_byData(*it);
+ for ( ++it; it != i_templateParameters.end(); ++it )
+ {
+ CurOut() << ", ";
+ aTemplateParamWriter.Produce_byData(*it);
+ }
+ CurOut() << " >";
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typetext.hxx b/autodoc/source/display/idl/hfi_typetext.hxx
new file mode 100644
index 000000000000..6d8c690976af
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typetext.hxx
@@ -0,0 +1,160 @@
+/* -*- 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 ADC_DISPLAY_HFI_TYPETEXT_HXX
+#define ADC_DISPLAY_HFI_TYPETEXT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+class HF_IdlTypeText : public HtmlFactory_Idl
+{
+ public:
+ enum E_Index { use_for_javacompatible_index };
+
+ HF_IdlTypeText(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ bool i_bWithLink,
+ const client * i_pScopeGivingCe = 0 );
+ HF_IdlTypeText(
+ Environment & io_rEnv,
+ E_Index e );
+ virtual ~HF_IdlTypeText();
+
+ void Produce_byData(
+ ary::idl::Type_id i_idType ) const;
+ void Produce_byData(
+ ary::idl::Ce_id i_idCe ) const;
+ void Produce_byData(
+ const String & i_sFullName ) const;
+ void Produce_LinkInDocu(
+ const String & i_scope,
+ const String & i_name,
+ const String & i_member ) const;
+ void Produce_LocalLinkInDocu(
+ const String & i_member ) const;
+
+ /// Produce the first link for Java-help understood index entries.
+ void Produce_IndexLink(
+ Xml::Element & o_out,
+ const client & i_ce ) const;
+ /** Produce the second link for Java-help understood index entries.
+ For members this will be a link to their owner (this function is
+ used), else see @->Produce_IndexSecondEntryLink();
+ */
+ void Produce_IndexOwnerLink(
+ Xml::Element & o_out,
+ const client & i_owner ) const;
+ /** Produce the second link for Java-help understood index entries.
+ For non- members this will again be a link to to the entry itself
+ (this function is used), else see @->Produce_IndexOwnerLink();
+ */
+ void Produce_IndexSecondEntryLink(
+ Xml::Element & o_out,
+ const client & i_ce ) const;
+ private:
+ // Locals
+ enum E_Existence
+ {
+ exists_dontknow,
+ exists_yes,
+ exists_no
+ };
+
+ void produce_FromStd(
+ const StringVector &
+ i_module,
+ const String & i_ce,
+ const String & i_member,
+ int i_sequenceCount,
+ E_Existence i_ceExists,
+ const std::vector<ary::idl::Type_id> *
+ i_templateParameters = 0 ) const;
+ void produce_BuiltIn(
+ const String & i_type,
+ int i_sequenceCount ) const;
+ void produce_IndexLink(
+ const StringVector &
+ i_module,
+ const String & i_ce,
+ const String & i_member,
+ bool i_bIsOwner ) const;
+ int count_Sequences(
+ const char * i_sFullType ) const;
+ void start_Sequence(
+ int i_count ) const;
+ void finish_Sequence(
+ int i_count ) const;
+ void errorOut_UnresolvedLink(
+ const char * i_name ) const;
+ void errorOut_UnresolvedLink(
+ const StringVector &
+ i_module,
+ const String & i_ce,
+ const String & i_member ) const;
+ bool is_ExternLink(
+ const StringVector &
+ i_module ) const;
+ void produce_ExternLink(
+ const StringVector &
+ i_module,
+ const String & i_ce,
+ const String & i_member,
+ int i_sequenceCount,
+ const std::vector<ary::idl::Type_id> *
+ i_templateParameters ) const;
+ void write_TemplateParameterList(
+ const std::vector<ary::idl::Type_id> &
+ i_templateParameters ) const;
+ const ary::idl::Module *
+ referingModule() const;
+ const client * referingCe() const;
+
+ // DATA
+ mutable const client *
+ pReferingCe;
+ bool bWithLink;
+};
+
+
+
+// IMPLEMENTATION
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_xrefpage.cxx b/autodoc/source/display/idl/hfi_xrefpage.cxx
new file mode 100644
index 000000000000..e067308295ca
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_xrefpage.cxx
@@ -0,0 +1,276 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_xrefpage.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_navibar.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_env.hxx"
+
+
+namespace
+{
+
+const String
+ C_sTitleStart("uses of ");
+const String
+ C_sCRLF("\n");
+const String
+ C_sDevMan("References in Developers Guide");
+
+} // anonymous namespace
+
+
+
+HF_IdlXrefs::HF_IdlXrefs( Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ const String & i_prefix,
+ const client & i_ce )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut),
+ rContentDirectory(*new Html::Paragraph),
+ pClient(&i_ce)
+{
+ produce_Main(i_prefix, i_ce);
+}
+
+HF_IdlXrefs::~HF_IdlXrefs()
+{
+}
+
+void
+HF_IdlXrefs::Write_ManualLinks( const client & i_ce ) const
+{
+ const StringVector &
+ rLinks2Refs = i_ce.Secondaries().Links2RefsInManual();
+ if ( rLinks2Refs.size() == 0 )
+ {
+ rContentDirectory
+ << C_sDevMan
+ << new Html::LineBreak
+ << C_sCRLF;
+ return;
+ }
+
+
+ rContentDirectory
+ >> *new Html::Link("#devmanrefs")
+ << C_sDevMan
+ << new Html::LineBreak
+ << C_sCRLF;
+
+ HF_SubTitleTable
+ aList(CurOut(), "devmanrefs", C_sDevMan, 1);
+ Xml::Element &
+ rOutCell = aList.Add_Row() >>* new Html::TableCell;
+
+ csv_assert(rLinks2Refs.size() % 2 == 0);
+ for ( StringVector::const_iterator it = rLinks2Refs.begin();
+ it != rLinks2Refs.end();
+ ++it )
+ {
+ Xml::Element &
+ rLink = rOutCell >> *new Html::Link( Env().Link2Manual(*it));
+ if ( (*(it+1)).empty() )
+
+ // HACK KORR_FUTURE
+ // Research what happens with manual links which contain normal characters
+ // in non-utf-8 texts. And research, why utfF-8 does not work here.
+ rLink << new Xml::XmlCode(*it);
+ else
+ // HACK KORR_FUTURE, see above.
+ rLink << new Xml::XmlCode( *(it+1) );
+ rOutCell
+ << new Html::LineBreak
+ << C_sCRLF;
+ ++it;
+ } // end for
+}
+
+void
+HF_IdlXrefs::Produce_List( const char * i_title,
+ const char * i_label,
+ ce_list & i_iterator ) const
+{
+ if (NOT i_iterator)
+ {
+ rContentDirectory
+ << i_title
+ << new Html::LineBreak
+ << C_sCRLF;
+ return;
+ }
+
+ csv_assert(*i_label == '#');
+
+ rContentDirectory
+ >> *new Html::Link(i_label)
+ << i_title
+ << new Html::LineBreak
+ << C_sCRLF;
+
+ HF_SubTitleTable
+ aList(CurOut(), i_label+1, i_title, 1);
+ Xml::Element &
+ rOutCell = aList.Add_Row() >>* new Html::TableCell;
+ HF_IdlTypeText
+ aTypeWriter(Env(), rOutCell, true, pClient);
+ for ( ce_list & it = i_iterator; it; ++it )
+ {
+ aTypeWriter.Produce_byData(*it);
+ rOutCell << new Html::LineBreak;
+ } // end for
+}
+
+void
+HF_IdlXrefs::Produce_Tree( const char * i_title,
+ const char * i_label,
+ const client & i_ce,
+ F_GET_SUBLIST i_sublistcreator ) const
+{
+ dyn_ce_list pResult;
+ (*i_sublistcreator)(pResult, i_ce);
+
+ if (NOT (*pResult).operator bool())
+ {
+ rContentDirectory
+ << i_title
+ << new Html::LineBreak
+ << C_sCRLF;
+ return;
+ }
+
+ csv_assert(*i_label == '#');
+
+ rContentDirectory
+ >> *new Html::Link(i_label)
+ << i_title
+ << new Html::LineBreak
+ << C_sCRLF;
+
+ HF_SubTitleTable
+ aList(CurOut(), i_label+1, i_title, 1);
+ Xml::Element &
+ rOut = aList.Add_Row()
+ >>* new Html::TableCell
+ >> *new csi::xml::AnElement("pre")
+ << new csi::html::StyleAttr("font-family:monospace;");
+
+ recursive_make_ListInTree( rOut,
+ 0,
+ i_ce,
+ *pResult,
+ i_sublistcreator );
+}
+
+void
+HF_IdlXrefs::produce_Main( const String & i_prefix,
+ const client & i_ce ) const
+{
+ make_Navibar(i_ce);
+
+ HF_TitleTable
+ aTitle(CurOut());
+ StreamLock sl(200);
+ aTitle.Produce_Title( sl()
+ << C_sTitleStart
+ << i_prefix
+ << " "
+ << i_ce.LocalName()
+ << c_str );
+
+ aTitle.Add_Row() << &rContentDirectory;
+ sl().reset();
+ rContentDirectory
+ >> *new Html::Link( sl() << i_ce.LocalName()
+ << ".html"
+ << c_str )
+ >> *new Html::Bold
+ << "back to "
+ << i_prefix
+ << " "
+ << i_ce.LocalName();
+ rContentDirectory
+ << new Html::LineBreak
+ << new Html::LineBreak
+ << C_sCRLF;
+
+ CurOut() << new Html::HorizontalLine();
+}
+
+void
+HF_IdlXrefs::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeXrefsMainRow(i_ce);
+ CurOut() << new Html::HorizontalLine();
+}
+
+void
+HF_IdlXrefs::recursive_make_ListInTree( Xml::Element & o_rDisplay,
+ uintt i_level,
+ const client & i_ce,
+ ce_list & i_iterator,
+ F_GET_SUBLIST i_sublistcreator ) const
+{
+ const char * sLevelIndentation = " ";
+
+ HF_IdlTypeText
+ aTypeWriter(Env(), o_rDisplay, true, &i_ce);
+ for ( ; i_iterator.operator bool(); ++i_iterator )
+ {
+ for (uintt i = 0; i < i_level; ++i)
+ {
+ o_rDisplay << sLevelIndentation;
+ } // end for
+
+ aTypeWriter.Produce_byData(*i_iterator);
+ o_rDisplay << C_sCRLF;
+
+ dyn_ce_list pResult;
+ const client & rCe = Env().Gate().Ces().Find_Ce(*i_iterator);
+ (*i_sublistcreator)(pResult, rCe);
+ if ( (*pResult).operator bool() )
+ {
+ recursive_make_ListInTree( o_rDisplay,
+ i_level + 1,
+ rCe,
+ *pResult,
+ i_sublistcreator );
+ }
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_xrefpage.hxx b/autodoc/source/display/idl/hfi_xrefpage.hxx
new file mode 100644
index 000000000000..34bde3af9722
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_xrefpage.hxx
@@ -0,0 +1,107 @@
+/* -*- 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 ADC_DISPLAY_HFI_XREFPAGE_HXX
+#define ADC_DISPLAY_HFI_XREFPAGE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+class HF_IdlXrefs : public HtmlFactory_Idl
+{
+ public:
+ typedef void (*F_GET_SUBLIST)(dyn_ce_list&, const client&);
+
+ HF_IdlXrefs(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut,
+ const String & i_prefix,
+ const client & i_ce);
+ virtual ~HF_IdlXrefs();
+
+ /** @descr
+ Only lists which are tried to be produced by Produce_List() or
+ Produce_Tree(), will occur in the content directory of the page.
+ They will have links, if the list or tree has at least one element,
+ else the list is mentioned in the directory without link.
+
+ @param i_label [*i_label == '#']
+ */
+ void Produce_List(
+ const char * i_title,
+ const char * i_label,
+ ce_list & i_iterator ) const;
+ void Write_ManualLinks(
+ const client & i_ce ) const;
+ /** @descr
+ Only lists which are tried to be produced by Produce_List() or
+ Produce_Tree(), will occur in the content directory of the page.
+ They will have links, if the list or tree has at least one element,
+ else the list is mentioned in the directory without link.
+
+ @param i_label [*i_label == '#']
+ */
+ void Produce_Tree(
+ const char * i_title,
+ const char * i_label,
+ const client & i_ce,
+ F_GET_SUBLIST i_sublistcreator ) const;
+
+ private:
+ // Locals
+ void produce_Main(
+ const String & i_prefix,
+ const client & i_ce ) const;
+ void make_Navibar(
+ const client & i_ce ) const;
+ /// @return true if there are any elements in sub lists.
+ void recursive_make_ListInTree(
+ Xml::Element & o_rDisplay,
+ uintt i_level, /// 0 is highest
+ const client & i_ce,
+ ce_list & i_iterator,
+ F_GET_SUBLIST i_sublistcreator ) const;
+
+ // DATA
+ Xml::Element & rContentDirectory;
+ const client * pClient;
+};
+
+
+
+// IMPLEMENTATION
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_ary.cxx b/autodoc/source/display/idl/hi_ary.cxx
new file mode 100644
index 000000000000..855b9ede1536
--- /dev/null
+++ b/autodoc/source/display/idl/hi_ary.cxx
@@ -0,0 +1,273 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hi_ary.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/ploc_dir.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_type.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+
+
+inline const ary::idl::Gate &
+AryAccess::gate() const
+ { return rGate; }
+
+inline const ary::idl::CePilot &
+AryAccess::ces() const
+ { return rGate.Ces(); }
+
+inline const ary::idl::TypePilot &
+AryAccess::types() const
+ { return rGate.Types(); }
+
+inline const ary::idl::Module *
+AryAccess::find_SubModule( const ary::idl::Module & i_parent,
+ const String & i_name ) const
+{
+ ary::idl::Ce_id
+ nModule = i_parent.Search_Name(i_name);
+ return ces().Search_Module(nModule);
+}
+
+bool
+AryAccess::nextName( const char * & io_TextPtr,
+ String & o_name ) const
+{
+ if ( strncmp(io_TextPtr,"::", 2) == 0 )
+ io_TextPtr += 2;
+
+ const char * pEnd = strchr(io_TextPtr,':');
+ size_t nLen = pEnd == 0
+ ? strlen(io_TextPtr)
+ : pEnd - io_TextPtr;
+ o_name.assign(io_TextPtr, nLen);
+ io_TextPtr += nLen;
+
+ return nLen > 0;
+}
+
+
+
+AryAccess::AryAccess( const ary::idl::Gate & i_rGate )
+ : rGate(i_rGate)
+{
+}
+
+const ary::idl::Module &
+AryAccess::GlobalNamespace() const
+{
+ return ces().GlobalNamespace();
+}
+
+const ary::idl::Module &
+AryAccess::Find_Module( ary::idl::Ce_id i_ce ) const
+{
+ return ces().Find_Module(i_ce);
+}
+
+
+const ary::idl::CodeEntity &
+AryAccess::Find_Ce( ary::idl::Ce_id i_ce ) const
+{
+ return ces().Find_Ce(i_ce);
+}
+
+const ary::idl::Type &
+AryAccess::Find_Type( ary::idl::Type_id i_type ) const
+{
+ return types().Find_Type(i_type);
+}
+
+ary::idl::Ce_id
+AryAccess::CeFromType( ary::idl::Type_id i_type ) const
+{
+ return types().Search_CeRelatedTo(i_type);
+}
+
+bool
+AryAccess::IsBuiltInOrRelated( const ary::idl::Type & i_type ) const
+{
+ return types().IsBuiltInOrRelated(i_type);
+}
+
+bool
+AryAccess::Search_Ce( StringVector & o_module,
+ String & o_mainEntity,
+ String & o_memberEntity,
+ const char * i_sText,
+ const ary::idl::Module & i_referingScope ) const
+{
+ o_module.erase(o_module.begin(),o_module.end());
+ o_mainEntity = String::Null_();
+ o_memberEntity = String::Null_();
+
+ const ary::idl::Module * pModule = 0;
+
+ if ( strncmp(i_sText, "::", 2) == 0
+ OR strncmp(i_sText, "com::sun::star", 14) == 0 )
+ pModule = &GlobalNamespace();
+ else
+ {
+ pModule = &i_referingScope;
+ ces().Get_Text(o_module, o_mainEntity, o_memberEntity, *pModule);
+ }
+
+ const char * pNext = i_sText;
+ String sNextName;
+
+ // Find Module:
+ while ( nextName(pNext, sNextName) )
+ {
+ const ary::idl::Module *
+ pSub = find_SubModule(*pModule, sNextName);
+ if (pSub != 0)
+ {
+ pModule = pSub;
+ o_module.push_back(sNextName);
+ }
+ else
+ break;
+ }
+
+ // Find main CodeEntity:
+ if ( sNextName.length() == 0 )
+ return true;
+ const ary::idl::Ce_id
+ nCe = pModule->Search_Name(sNextName);
+ if (NOT nCe.IsValid())
+ return false;
+ o_mainEntity = sNextName;
+
+ // Find member:
+ if ( *pNext == 0 )
+ return true;
+ nextName(pNext, o_memberEntity);
+ if (strchr(o_memberEntity,':') != 0)
+ return false; // This must not happen in IDL
+
+ return true;
+}
+
+bool
+AryAccess::Search_CesModule( StringVector & o_module,
+ const String & i_scope,
+ const String & i_ce,
+ const ary::idl::Module & i_referingScope ) const
+{
+ o_module.erase(o_module.begin(),o_module.end());
+
+ const ary::idl::Module *
+ pModule = 0;
+
+ if ( strncmp(i_scope, "::", 2) == 0
+ OR strncmp(i_scope, "com::sun::star", 14) == 0 )
+ pModule = &GlobalNamespace();
+ else
+ {
+ pModule = &i_referingScope;
+ static String Dummy1;
+ static String Dummy2;
+ ces().Get_Text(o_module, Dummy1, Dummy2, *pModule);
+ }
+
+ const char * pNext = i_scope;
+ String sNextName;
+
+ // Find Module:
+ while ( nextName(pNext, sNextName) )
+ {
+ const ary::idl::Module *
+ pSub = find_SubModule(*pModule, sNextName);
+ if (pSub != 0)
+ {
+ pModule = pSub;
+ o_module.push_back(sNextName);
+ }
+ else
+ return false;
+ } // end while
+ return pModule->Search_Name(i_ce).IsValid();
+}
+
+const ary::idl::Module *
+AryAccess::Search_Module( const StringVector & i_nameChain ) const
+{
+ const ary::idl::Module * ret =
+ &GlobalNamespace();
+ for ( StringVector::const_iterator it = i_nameChain.begin();
+ it != i_nameChain.end();
+ ++it )
+ {
+ ret = find_SubModule(*ret, *it);
+ if (ret == 0)
+ break;
+ } // end for
+ return ret;
+}
+
+void
+AryAccess::Get_CeText( StringVector & o_module,
+ String & o_ce,
+ String & o_member,
+ const ary::idl::CodeEntity & i_ce ) const
+{
+ ces().Get_Text(o_module, o_ce, o_member, i_ce);
+}
+
+void
+AryAccess::Get_TypeText( StringVector & o_module,
+ String & o_sCe,
+ ary::idl::Ce_id & o_nCe,
+ int & o_sequenceCount,
+ const ary::idl::Type & i_type ) const
+{
+ i_type.Get_Text(o_module, o_sCe, o_nCe, o_sequenceCount, gate());
+}
+
+void
+AryAccess::Get_IndexData( std::vector<ary::idl::Ce_id> & o_data,
+ ary::idl::alphabetical_index::E_Letter i_letter ) const
+{
+ rGate.Ces().Get_AlphabeticalIndex(o_data, i_letter);
+}
+
+
+const ary::idl::CePilot &
+AryAccess::Ces() const
+{
+ return rGate.Ces();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_ary.hxx b/autodoc/source/display/idl/hi_ary.hxx
new file mode 100644
index 000000000000..21dc60454fd5
--- /dev/null
+++ b/autodoc/source/display/idl/hi_ary.hxx
@@ -0,0 +1,164 @@
+/* -*- 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 ADC_DISPLAY_HI_ARY_HXX
+#define ADC_DISPLAY_HI_ARY_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <ary/idl/i_types4idl.hxx>
+ // PARAMETERS
+#include <ary/idl/i_gate.hxx>
+#include <ary/doc/d_docu.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+ class Gate;
+ class CePilot;
+ class TypePilot;
+}
+}
+namespace output
+{
+ class Position;
+}
+
+
+
+
+inline const ary::doc::OldIdlDocu *
+Get_IdlDocu(const ary::doc::Documentation & i_doc)
+{
+ return dynamic_cast< const ary::doc::OldIdlDocu* >(i_doc.Data());
+}
+
+
+
+
+
+/** A helper class to wrap the access to data in the Autodoc Repository.
+*/
+class AryAccess
+{
+ public:
+ // LIFECYCLE
+ AryAccess(
+ const ary::idl::Gate &
+ i_rGate );
+ // INQUIRY
+ const ary::idl::Module &
+ GlobalNamespace() const;
+ const ary::idl::Module &
+ Find_Module(
+ ary::idl::Ce_id i_ce ) const;
+ const ary::idl::CodeEntity &
+ Find_Ce(
+ ary::idl::Ce_id i_ce ) const;
+ const ary::idl::Type &
+ Find_Type(
+ ary::idl::Type_id i_type ) const;
+ ary::idl::Ce_id CeFromType(
+ ary::idl::Type_id i_type ) const;
+ bool IsBuiltInOrRelated(
+ const ary::idl::Type &
+ i_type ) const;
+ bool Search_Ce(
+ StringVector & o_module,
+ String & o_mainEntity,
+ String & o_memberEntity,
+ const char * i_sText,
+ const ary::idl::Module &
+ i_referingScope ) const;
+ bool Search_CesModule(
+ StringVector & o_module,
+ const String & i_scope,
+ const String & i_ce,
+ const ary::idl::Module &
+ i_referingScope ) const;
+ const ary::idl::Module *
+ Search_Module(
+ const StringVector &
+ i_nameChain ) const;
+
+ void Get_CeText(
+ StringVector & o_module,
+ String & o_ce,
+ String & o_member,
+ const ary::idl::CodeEntity &
+ i_ce ) const;
+ void Get_TypeText(
+ StringVector & o_module,
+ String & o_sCe,
+ ary::idl::Ce_id & o_nCe,
+ int & o_sequenceCount,
+ const ary::idl::Type &
+ i_type ) const;
+ void Get_IndexData(
+ std::vector<ary::idl::Ce_id> &
+ o_data,
+ ary::idl::alphabetical_index::E_Letter
+ i_letter ) const;
+
+ const ary::idl::CePilot &
+ Ces() const;
+ private:
+ const ary::idl::Module *
+ find_SubModule(
+ const ary::idl::Module &
+ i_parent,
+ const String & i_name ) const;
+
+ /// Gets "::"-separated names out of a string.
+ bool nextName(
+ const char * & io_TextPtr,
+ String & o_name ) const;
+
+
+ const ary::idl::Gate &
+ gate() const;
+ const ary::idl::CePilot &
+ ces() const;
+ const ary::idl::TypePilot &
+ types() const;
+ // DATA
+ const ary::idl::Gate &
+ rGate;
+};
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_display.cxx b/autodoc/source/display/idl/hi_display.cxx
new file mode 100644
index 000000000000..b3eaa76279d6
--- /dev/null
+++ b/autodoc/source/display/idl/hi_display.cxx
@@ -0,0 +1,200 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <idl/hi_display.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/file.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/getncast.hxx>
+#include <toolkit/out_tree.hxx>
+#include <cfrstd.hxx>
+#include "hi_ary.hxx"
+#include "hi_env.hxx"
+#include "hi_main.hxx"
+
+
+extern const String C_sCssFilename_Idl;
+
+
+inline bool
+HtmlDisplay_Idl::IsModule( const ary::idl::CodeEntity & i_ce ) const
+{
+ return ary::is_type<ary::idl::Module>(i_ce);
+}
+
+inline const ary::idl::Module &
+HtmlDisplay_Idl::Module_Cast( const ary::idl::CodeEntity & i_ce ) const
+{
+ return ary::ary_cast<ary::idl::Module>(i_ce);
+}
+
+
+
+
+HtmlDisplay_Idl::HtmlDisplay_Idl()
+ : pCurPageEnv(),
+ pMainDisplay()
+{
+}
+
+HtmlDisplay_Idl::~HtmlDisplay_Idl()
+{
+}
+
+void
+HtmlDisplay_Idl::do_Run( const char * i_sOutputDirectory,
+ const ary::idl::Gate & i_rAryGate,
+ const display::CorporateFrame & i_rLayout )
+{
+ SetRunData( i_sOutputDirectory, i_rAryGate, i_rLayout );
+
+ Create_StartFile();
+ Create_CssFile();
+ Create_FilesInNameTree();
+ Create_IndexFiles();
+ Create_FilesInProjectTree();
+ Create_PackageList();
+ Create_HelpFile();
+}
+
+void
+HtmlDisplay_Idl::SetRunData( const char * i_sOutputDirectory,
+ const ary::idl::Gate & i_rAryGate,
+ const display::CorporateFrame & i_rLayout )
+{
+ csv::ploc::Path aOutputDir( i_sOutputDirectory, true );
+ pCurPageEnv = new HtmlEnvironment_Idl( aOutputDir, i_rAryGate, i_rLayout );
+ pMainDisplay = new MainDisplay_Idl(*pCurPageEnv);
+}
+
+void
+HtmlDisplay_Idl::Create_StartFile()
+{
+}
+
+void
+HtmlDisplay_Idl::Create_FilesInNameTree()
+{
+ Cout() << "\nCreate files in subtree namespaces ..." << Endl();
+
+ const ary::idl::Module &
+ rGlobalNamespace = pCurPageEnv->Data().GlobalNamespace();
+ pCurPageEnv->Goto_Directory( pCurPageEnv->OutputTree().NamesRoot(), true );
+
+ RecursiveDisplay_Module(rGlobalNamespace);
+
+ Cout() << "... done." << Endl();
+}
+
+void
+HtmlDisplay_Idl::Create_IndexFiles()
+{
+ Cout() << "\nCreate files in subtree index ..." << Endl();
+ pCurPageEnv->Goto_Directory( pCurPageEnv->OutputTree().IndexRoot(), true );
+ pMainDisplay->WriteGlobalIndices();
+ Cout() << "... done.\n" << Endl();
+}
+
+typedef ary::Dyn_StdConstIterator<ary::idl::Ce_id> Dyn_CeIterator;
+typedef ary::StdConstIterator<ary::idl::Ce_id> CeIterator;
+
+void
+HtmlDisplay_Idl::RecursiveDisplay_Module( const ary::idl::Module & i_module )
+{
+ i_module.Accept(*pMainDisplay);
+
+ Dyn_CeIterator
+ aMembers;
+ i_module.Get_Names(aMembers);
+
+ for ( CeIterator & iter = *aMembers;
+ iter;
+ ++iter )
+ {
+ const ary::idl::CodeEntity &
+ rCe = pCurPageEnv->Data().Find_Ce(*iter);
+
+ if ( NOT IsModule(rCe) )
+ rCe.Accept(*pMainDisplay);
+ else
+ {
+ pCurPageEnv->Goto_DirectoryLevelDown( rCe.LocalName(), true );
+ RecursiveDisplay_Module( Module_Cast(rCe) );
+ pCurPageEnv->Goto_DirectoryLevelUp();
+ }
+ } // end for
+}
+
+void
+HtmlDisplay_Idl::Create_FilesInProjectTree()
+{
+}
+
+void
+HtmlDisplay_Idl::Create_PackageList()
+{
+}
+
+void
+HtmlDisplay_Idl::Create_HelpFile()
+{
+}
+
+void
+HtmlDisplay_Idl::Create_CssFile()
+{
+ Cout() << "\nCreate css file ..." << Endl();
+
+ pCurPageEnv->Goto_Directory( pCurPageEnv->OutputTree().Root(), true );
+ pCurPageEnv->Set_CurFile( C_sCssFilename_Idl );
+
+ StreamLock
+ slCurFilePath(700);
+ pCurPageEnv->Get_CurFilePath(slCurFilePath());
+
+ csv::File
+ aCssFile(slCurFilePath().c_str(), csv::CFM_CREATE);
+ csv::OpenCloseGuard
+ aOpenGuard(aCssFile);
+ if (NOT aOpenGuard)
+ {
+ Cerr() << "Can't create file " << slCurFilePath().c_str() << "." << Endl();
+ return;
+ }
+
+ aCssFile.write("/* Autodoc css file for IDL documentation */\n\n\n");
+ aCssFile.write(pCurPageEnv->Layout().CssStyle());
+ aCssFile.write("\n\n\n");
+ aCssFile.write(pCurPageEnv->Layout().CssStylesExplanation());
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_env.cxx b/autodoc/source/display/idl/hi_env.cxx
new file mode 100644
index 000000000000..db4589efbe43
--- /dev/null
+++ b/autodoc/source/display/idl/hi_env.cxx
@@ -0,0 +1,202 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hi_env.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/ploc_dir.hxx>
+#include <cfrstd.hxx>
+#include <toolkit/out_tree.hxx>
+#include "hi_ary.hxx"
+#include "hi_linkhelper.hxx"
+
+
+
+const String C_s_index_files("index-files");
+
+const String C_sUseFileSuffix("-use.html");
+const String C_IndexA_FileName("index-1.html");
+
+
+HtmlEnvironment_Idl::HtmlEnvironment_Idl( const csv::ploc::Path & i_rOutputDir,
+ const ary::idl::Gate & i_rGate,
+ const display::CorporateFrame & i_rLayout )
+ : aOutputRoot(i_rOutputDir),
+ pData(new AryAccess(i_rGate)),
+ pGate(&i_rGate),
+ pOutputTree(new output::Tree),
+ aCurPosition(pOutputTree->Root()),
+ pCurPageCe(0),
+ pLayout(&i_rLayout),
+ pLinker()
+{
+ StringVector aHelp;
+ pOutputTree->Set_NamesRoot(aHelp);
+
+ aHelp.push_back(output::IndexFilesDirName());
+ pOutputTree->Set_IndexRoot(aHelp);
+
+ (*aHelp.begin()) = String("com");
+ aHelp.push_back(String("sun"));
+ aHelp.push_back(String("star"));
+ pOutputTree->Set_Overview(aHelp, output::ModuleFileName() );
+
+ pLinker = new LinkHelper(*this);
+}
+
+HtmlEnvironment_Idl::~HtmlEnvironment_Idl()
+{
+}
+
+namespace
+{
+StringVector G_aChain;
+}
+
+void
+HtmlEnvironment_Idl::Goto_Directory( output::Position i_pos,
+ bool i_bCreateDirectoryIfNecessary )
+{
+ aCurPosition = i_pos;
+ aCurPath = aOutputRoot.MyPath();
+
+ aCurPosition.Get_Chain(G_aChain);
+ for ( StringVector::const_iterator it = G_aChain.begin();
+ it != G_aChain.end();
+ ++it )
+ {
+ aCurPath.DirChain() += *it;
+ }
+
+ if (i_bCreateDirectoryIfNecessary)
+ create_Directory(aCurPath);
+}
+
+void
+HtmlEnvironment_Idl::Goto_DirectoryLevelDown( const String & i_subDirName,
+ bool i_bCreateDirectoryIfNecessary )
+{
+ aCurPosition +=(i_subDirName);
+
+ aCurPath.SetFile(String::Null_());
+ aCurPath.DirChain() += i_subDirName;
+
+ if (i_bCreateDirectoryIfNecessary)
+ create_Directory(aCurPath);
+}
+
+void
+HtmlEnvironment_Idl::Goto_DirectoryLevelUp()
+{
+ aCurPosition -= 1;
+
+ aCurPath.SetFile(String::Null_());
+ aCurPath.DirChain() -= 1;
+}
+
+void
+HtmlEnvironment_Idl::Set_CurFile( const String & i_fileName )
+{
+ aCurPath.SetFile(i_fileName);
+}
+
+void
+HtmlEnvironment_Idl::create_Directory( const csv::ploc::Path & i_path )
+
+{
+ csv::ploc::Directory aCurDir(i_path);
+ if (NOT aCurDir.Exists())
+ aCurDir.PhysicalCreate();
+}
+
+inline bool
+IsAbsoluteLink(const char * i_link)
+{
+ const char
+ shttp[] = "http://";
+ const char
+ sfile[] = "file://";
+ const int
+ csize = sizeof shttp - 1;
+ csv_assert(csize == sizeof sfile - 1);
+
+ return strncmp(i_link,shttp,csize) == 0
+ OR strncmp(i_link,sfile,csize) == 0;
+}
+
+
+const char *
+HtmlEnvironment_Idl::Link2Manual( const String & i_link ) const
+{
+ if ( IsAbsoluteLink(i_link.c_str()) )
+ return i_link;
+
+ static StreamStr aLink_(200);
+ aLink_.reset();
+ String
+ sDvgRoot(pLayout->DevelopersGuideHtmlRoot());
+ if (sDvgRoot.empty())
+ sDvgRoot = "../DevelopersGuide";
+
+ // KORR_FUTURE
+ // Enhance performance by calculating this only one time:
+ if ( NOT IsAbsoluteLink(sDvgRoot.c_str()) )
+ aCurPosition.Get_LinkToRoot(aLink_);
+ aLink_ << sDvgRoot
+ << "/"
+ << i_link;
+ return aLink_.c_str();
+}
+
+String
+HtmlEnvironment_Idl::CurPageCe_AsText() const
+{
+ return CurPageCe_AsFile(".html");
+}
+
+String
+HtmlEnvironment_Idl::CurPageCe_AsFile(const char * i_sEnding) const
+{
+ if (pCurPageCe == 0)
+ return String::Null_();
+
+ static StringVector aModule_;
+ String sCe;
+ String sDummy;
+ Data().Get_CeText(aModule_, sCe, sDummy, *pCurPageCe);
+ StreamLock slCe(500);
+ if (aModule_.size() > 0)
+ slCe().operator_join(aModule_.begin(), aModule_.end(), "/");
+ if (NOT sCe.empty())
+ slCe() << "/" << sCe << i_sEnding;
+ return String(slCe().c_str());
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_env.hxx b/autodoc/source/display/idl/hi_env.hxx
new file mode 100644
index 000000000000..675db9ab7ab6
--- /dev/null
+++ b/autodoc/source/display/idl/hi_env.hxx
@@ -0,0 +1,163 @@
+/* -*- 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 ADC_DISPLAY_HI_ENV_HXX
+#define ADC_DISPLAY_HI_ENV_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <cosv/ploc.hxx>
+#include <cosv/ploc_dir.hxx>
+ // PARAMETERS
+#include <toolkit/out_position.hxx>
+
+namespace ary
+{
+namespace idl
+{
+ class Gate;
+ class CodeEntity;
+}
+}
+namespace display
+{
+ class CorporateFrame;
+}
+namespace output
+{
+ class Tree;
+}
+
+class AryAccess;
+class LinkHelper;
+
+/** @resp
+ Provides enviroment information to the HTML factory
+ classes.
+
+ @descr
+ All information that is not included in the data, especially
+ about the layout of the output tree and the access to
+ information from the repository are provided here.
+
+ @see HtmlFactory
+*/
+class HtmlEnvironment_Idl
+{
+ public:
+ // LIFECYCLE
+ HtmlEnvironment_Idl(
+ const csv::ploc::Path &
+ io_rOutputDir,
+ const ary::idl::Gate &
+ i_rGate,
+ const display::CorporateFrame &
+ i_rLayout );
+ ~HtmlEnvironment_Idl();
+
+ // OPERATIONS
+ void Goto_Directory(
+ output::Position i_pos,
+ bool i_bCreateDirectoryIfNecessary );
+ void Goto_DirectoryLevelDown(
+ const String & i_subDirName,
+ bool i_bCreateDirectoryIfNecessary );
+ void Goto_DirectoryLevelUp();
+ void Set_CurFile(
+ const String & i_fileName );
+ void Set_CurPageCe(
+ const ary::idl::CodeEntity *
+ i_ce )
+ { pCurPageCe = i_ce; }
+ // INQUIRY
+ const ary::idl::Gate &
+ Gate() const { return *pGate; }
+ const AryAccess & Data() const { return *pData; }
+ const char * Link2Manual(
+ const String & i_link ) const;
+
+ /// This may be reimplemented for removing dead links to members.
+ bool Is_MemberExistenceCheckRequired() const
+ { return false; }
+
+ /// @return Holds only the current directory, not the current file.
+ output::Position & CurPosition() const { return aCurPosition; }
+ void Get_CurFilePath(
+ StreamStr & o_buffer ) const
+ { o_buffer << aCurPath; }
+
+ const display::CorporateFrame &
+ Layout() const { return *pLayout; }
+ const LinkHelper & Linker() const { return *pLinker; }
+
+ void Get_LinkTo(
+ StreamStr & o_result,
+ output::Position i_destination )
+ { CurPosition().Get_LinkTo(o_result, i_destination); }
+ String CurPageCe_AsText() const;
+ String CurPageCe_AsFile(
+ const char * i_sEnding) const;
+ const ary::idl::CodeEntity *
+ CurPageCe() const { return pCurPageCe; }
+
+ // ACCESS
+ output::Tree & OutputTree() { return *pOutputTree; }
+
+ private:
+ // Local
+ void create_Directory(
+ const csv::ploc::Path &
+ i_path );
+
+ // DATA
+ csv::ploc::Directory
+ aOutputRoot;
+ csv::ploc::Path aCurPath;
+
+ Dyn<AryAccess> pData; /// @invariant *pData is valid.
+ const ary::idl::Gate *
+ pGate; /// @invariant pGate != 0.
+ Dyn<output::Tree> pOutputTree; /// @invariant *pOutputTree is valid.
+ mutable output::Position
+ aCurPosition;
+ const ary::idl::CodeEntity *
+ pCurPageCe;
+
+ const display::CorporateFrame *
+ pLayout;
+
+ Dyn<LinkHelper> pLinker;
+};
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_factory.cxx b/autodoc/source/display/idl/hi_factory.cxx
new file mode 100644
index 000000000000..d194d6015744
--- /dev/null
+++ b/autodoc/source/display/idl/hi_factory.cxx
@@ -0,0 +1,323 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hi_factory.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_doc.hxx"
+#include "hfi_navibar.hxx"
+#include "hfi_tag.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_linkhelper.hxx"
+
+
+extern const String
+ C_sCellStyle_SummaryLeft("imsum_left");
+extern const String
+ C_sCellStyle_SummaryRight("imsum_right");
+extern const String
+ C_sCellStyle_MDetail("imdetail");
+extern const String
+ C_sMemberTitle("membertitle");
+
+
+namespace
+{
+
+const char C_sSpace[92] = " "
+ " "
+ " ";
+}
+
+
+void
+HtmlFactory_Idl::produce_SummaryDeclaration( Xml::Element & o_row,
+ const client & i_ce ) const
+{
+ produce_InternalLink(o_row, i_ce);
+}
+
+void
+HtmlFactory_Idl::produce_InternalLink( Xml::Element & o_screen,
+ const client & i_ce ) const
+{
+ StreamLock aLocalLink(100);
+ aLocalLink() << "#" << i_ce.LocalName();
+
+ o_screen
+ >> *new Html::TableCell
+ << new Html::ClassAttr( C_sCellStyle_SummaryLeft )
+ >> *new Html::Link( aLocalLink().c_str() )
+ << i_ce.LocalName();
+}
+
+void
+HtmlFactory_Idl::produce_ShortDoc( Xml::Element & o_screen,
+ const client & i_ce ) const
+{
+ Xml::Element &
+ rDetailsRowCell = o_screen
+ >> *new Html::TableCell
+ << new Html::ClassAttr( C_sCellStyle_SummaryRight );
+ HF_IdlShortDocu
+ aLinkDoc(Env(), rDetailsRowCell);
+ aLinkDoc.Produce_byData( i_ce );
+
+ rDetailsRowCell << new Xml::XmlCode("&nbsp;");
+}
+
+// KORR_FUTURE: Does not belong here (implementation inheritance)!
+void
+HtmlFactory_Idl::produce_Bases( Xml::Element & o_screen,
+ const client & i_ce,
+ const String & i_sLabel ) const
+{
+ ary::idl::Type_id nBaseT = baseOf(i_ce);
+ if ( nBaseT.IsValid() )
+ {
+ HF_DocEntryList
+ aDocList( o_screen );
+ aDocList.Produce_Term(i_sLabel);
+
+ int nDepth = 0;
+ Xml::Element &
+ rBaseList = aDocList.Produce_Definition()
+ >> *new Xml::AnElement("pre")
+ << new Xml::AnAttribute("style","font-family:monospace;");
+ rBaseList
+ >> *new Html::Strong
+ << i_ce.LocalName();
+ rBaseList
+ << "\n";
+ recursive_ShowBases( rBaseList,
+ nBaseT,
+ nDepth );
+ }
+}
+
+void
+HtmlFactory_Idl::produce_Members( ce_list & it_list,
+ const String & i_summaryTitle,
+ const String & i_summaryLabel,
+ const String & i_detailsTitle,
+ const String & i_detailsLabel,
+ const E_MemberViewType i_viewType ) const
+{
+ csv_assert( it_list );
+
+ Dyn< HF_SubTitleTable > pSummary;
+ if ( ( i_viewType == viewtype_summary )
+ || ( i_viewType == viewtype_complete )
+ )
+ {
+ pSummary = new HF_SubTitleTable(
+ CurOut(),
+ i_summaryLabel,
+ i_summaryTitle,
+ 2 );
+ }
+
+ Dyn< HF_SubTitleTable > pDetails;
+ if ( ( i_viewType == viewtype_details )
+ || ( i_viewType == viewtype_complete )
+ )
+ {
+ pDetails = new HF_SubTitleTable(
+ CurOut(),
+ i_detailsLabel,
+ i_detailsTitle,
+ 1 );
+ }
+
+ for ( ; it_list.operator bool(); ++it_list )
+ {
+ const ary::idl::CodeEntity &
+ rCe = Env().Data().Find_Ce(*it_list);
+
+ if ( pSummary )
+ {
+ Xml::Element &
+ rSummaryRow = pSummary->Add_Row();
+ produce_SummaryDeclaration(rSummaryRow, rCe);
+// produce_InternalLink(rSummaryRow, rCe);
+ produce_ShortDoc(rSummaryRow, rCe);
+ }
+
+ if ( pDetails )
+ produce_MemberDetails(*pDetails, rCe);
+ }
+}
+
+void
+HtmlFactory_Idl::produce_Title( HF_TitleTable & o_title,
+ const String & i_label,
+ const client & i_ce ) const
+{
+ StreamLock
+ slAnnotations(200);
+ get_Annotations(slAnnotations(), i_ce);
+ StreamLock
+ slTitle(200);
+ slTitle() << i_label << " " << i_ce.LocalName();
+ o_title.Produce_Title( slAnnotations().c_str(),
+ slTitle().c_str() );
+}
+
+void
+HtmlFactory_Idl::get_Annotations( StreamStr & o_out,
+ const client & i_ce ) const
+{
+ const ary::doc::OldIdlDocu *
+ doc = Get_IdlDocu(i_ce.Docu());
+ if (doc != 0)
+ {
+ if (doc->IsDeprecated())
+ o_out << "deprecated ";
+ if (NOT doc->IsPublished())
+ o_out << "unpublished ";
+ }
+
+ // KORR
+ // Need to display "unpublished", if there is no docu.
+}
+
+void
+HtmlFactory_Idl::write_Docu( Xml::Element & o_screen,
+ const client & i_ce ) const
+{
+ const ary::doc::OldIdlDocu *
+ doc = Get_IdlDocu(i_ce.Docu());
+ if (doc != 0)
+ {
+ HF_DocEntryList
+ aDocuList( o_screen );
+ HF_IdlDocu
+ aDocu( Env(), aDocuList );
+ aDocu.Produce_fromCodeEntity(i_ce);
+ }
+
+ write_ManualLinks(o_screen, i_ce);
+}
+
+void
+HtmlFactory_Idl::write_ManualLinks( Xml::Element & o_screen,
+ const client & i_ce ) const
+{
+ const StringVector &
+ rLinks2Descrs = i_ce.Secondaries().Links2DescriptionInManual();
+ if ( rLinks2Descrs.size() == 0 )
+ return;
+
+ o_screen
+ >> *new Html::Label(C_sLocalManualLinks.c_str()+1) // Leave out the leading '#'.
+ << " ";
+ HF_DocEntryList
+ aDocuList( o_screen );
+ aDocuList.Produce_Term("Developers Guide");
+ csv_assert(rLinks2Descrs.size() % 2 == 0);
+ for ( StringVector::const_iterator it = rLinks2Descrs.begin();
+ it != rLinks2Descrs.end();
+ ++it )
+ {
+ Xml::Element &
+ rLink = aDocuList.Produce_Definition() >> *new Html::Link( Env().Link2Manual(*it));
+ if ( (*(it+1)).empty() )
+ // HACK KORR_FUTURE
+ // Research what happens with manual links which contain normal characters
+ // in non-utf-8 texts. And research, why utfF-8 does not work here.
+ rLink << new Xml::XmlCode(*it);
+ else
+ rLink << new Xml::XmlCode( *(it+1) );
+ ++it;
+ } // end for
+}
+
+void
+HtmlFactory_Idl::produce_MemberDetails( HF_SubTitleTable & ,
+ const client & ) const
+{
+ // Dummy, which does not need to do anything.
+}
+
+void
+HtmlFactory_Idl::recursive_ShowBases( Xml::Element & o_screen,
+ type_id i_baseType,
+ int & io_nDepth ) const
+{
+ // Show this base
+ ++io_nDepth;
+ const ary::idl::CodeEntity *
+ pCe = Env().Linker().Search_CeFromType(i_baseType);
+
+ csv_assert(io_nDepth > 0);
+ if (io_nDepth > 30)
+ io_nDepth = 30;
+ o_screen
+ << (C_sSpace + 93 - 3*io_nDepth)
+ << new csi::xml::XmlCode("&#x2517")
+ << " ";
+
+ if (pCe == 0)
+ {
+ HF_IdlTypeText
+ aText( Env(), o_screen, false );
+ aText.Produce_byData( i_baseType );
+ o_screen
+ << "\n";
+ --io_nDepth;
+ return;
+ }
+
+ HF_IdlTypeText
+ aBaseLink( Env(), o_screen, true );
+ aBaseLink.Produce_byData(pCe->CeId());
+ o_screen
+ << "\n";
+
+ // Bases
+ ary::idl::Type_id
+ nBaseT = baseOf(*pCe);
+ if (nBaseT.IsValid())
+ recursive_ShowBases(o_screen,nBaseT,io_nDepth);
+
+ --io_nDepth;
+ return;
+}
+
+HtmlFactory_Idl::type_id
+HtmlFactory_Idl::inq_BaseOf( const client & ) const
+{
+ // Unused dummy.
+ return type_id(0);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_factory.hxx b/autodoc/source/display/idl/hi_factory.hxx
new file mode 100644
index 000000000000..fff162e083f5
--- /dev/null
+++ b/autodoc/source/display/idl/hi_factory.hxx
@@ -0,0 +1,172 @@
+/* -*- 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 ADC_DISPLAY_HI_FACTORY_HXX
+#define ADC_DISPLAY_HI_FACTORY_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <toolkit/htmlfactory.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/stdconstiter.hxx>
+#include <ary/idl/i_types4idl.hxx>
+#include <toolkit/out_position.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+}
+namespace doc
+{
+ class OldIdlDocu;
+}
+}
+
+
+class HtmlEnvironment_Idl;
+class LinkHelper;
+class HF_NaviSubRow;
+class HF_TitleTable;
+class HF_SubTitleTable;
+
+
+class HtmlFactory_Idl : public HtmlFactory<HtmlEnvironment_Idl>
+{
+ public:
+ enum E_MemberViewType
+ {
+ viewtype_summary, // the summary of the members
+ viewtype_details, // the details of the members
+ viewtype_complete // everything
+ };
+
+ enum E_DocType
+ {
+ doctype_summaryOnly, // only the summary
+ doctype_complete // the complete documentation
+ };
+
+ public:
+ typedef ary::idl::CodeEntity client;
+ typedef ary::idl::Ce_id ce_id;
+ typedef ary::idl::Type_id type_id;
+ typedef ary::doc::OldIdlDocu ce_info;
+
+ typedef ary::Dyn_StdConstIterator<ce_id> dyn_ce_list;
+ typedef ary::Dyn_StdConstIterator<type_id> dyn_type_list;
+ typedef ary::StdConstIterator<ce_id> ce_list;
+ typedef ary::StdConstIterator<type_id> type_list;
+
+ typedef HtmlEnvironment_Idl Environment;
+ typedef output::Position OutPosition;
+
+ protected:
+ HtmlFactory_Idl(
+ Environment & io_rEnv,
+ Xml::Element * o_pOut = 0 )
+ : HtmlFactory<Environment>(io_rEnv, o_pOut)
+ { }
+ virtual ~HtmlFactory_Idl() {}
+
+ /** The default version only calls ->produce_InternalLink().
+ This may be overwritten by derived classes.
+ */
+ virtual void produce_SummaryDeclaration(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+ void produce_InternalLink(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+ void produce_ShortDoc(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+
+ // KORR_FUTURE: Does not belong here (implementation inheritance)!
+ void produce_Bases(
+ Xml::Element & o_screen,
+ const client & i_ce,
+ const String & i_sLabel ) const;
+ void produce_Members(
+ ce_list & it_list,
+ const String & i_summaryTitle,
+ const String & i_summaryLabel,
+ const String & i_detailsTitle,
+ const String & i_detailsLabel,
+ const E_MemberViewType i_viewType = viewtype_complete ) const;
+
+ void produce_Title(
+ HF_TitleTable & o_title,
+ const String & i_label,
+ const client & i_ce ) const;
+ void get_Annotations(
+ StreamStr & o_out,
+ const client & i_ce ) const;
+
+ /// Writes complete docu in standard format.
+ void write_Docu(
+ Xml::Element & o_screen,
+ const client & i_ce ) const;
+
+ void write_ManualLinks(
+ Xml::Element & o_screen,
+ const client & i_ce ) const;
+ private:
+ // Dummy does nothing
+ virtual void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & i_ce ) const;
+ void recursive_ShowBases(
+ Xml::Element & o_screen,
+ type_id i_baseType,
+ int & io_nDepth ) const;
+ type_id baseOf(
+ const client & i_ce ) const
+ { return inq_BaseOf(i_ce); }
+ virtual type_id inq_BaseOf(
+ const client & i_ce ) const;
+};
+
+
+extern const String
+ C_sCellStyle_SummaryLeft;
+extern const String
+ C_sCellStyle_SummaryRight;
+extern const String
+ C_sCellStyle_MDetail;
+extern const String
+ C_sMemberTitle;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_linkhelper.cxx b/autodoc/source/display/idl/hi_linkhelper.cxx
new file mode 100644
index 000000000000..4d6ae7a735ad
--- /dev/null
+++ b/autodoc/source/display/idl/hi_linkhelper.cxx
@@ -0,0 +1,99 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hi_linkhelper.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_module.hxx>
+
+
+
+
+const ary::idl::Module *
+LinkHelper::Search_CurModule() const
+{
+ return Search_Module( rEnv.CurPosition().RelatedNode() );
+}
+
+const ary::idl::Module *
+LinkHelper::Search_Module( output::Node & i_node ) const
+{
+ static StringVector aNames_;
+
+ output::Node::relative_id
+ nId = i_node.RelatedNameRoom();
+ if (nId == 0)
+ {
+ csv::erase_container(aNames_);
+ i_node.Get_Chain(aNames_);
+ const ary::idl::Module * pModule =
+ rEnv.Data().Search_Module(aNames_);
+ if ( pModule == 0 )
+ return 0;
+ nId = static_cast<output::Node::relative_id>(pModule->Id());
+ rEnv.CurPosition().RelatedNode().Set_RelatedNameRoom(nId);
+ }
+
+ return & rEnv.Data().Find_Module( ary::idl::Ce_id(nId) );
+}
+
+namespace
+{
+ const String C_sXrefsSuffix("-xref");
+}
+
+
+LinkHelper::OutPosition
+LinkHelper::PositionOf_CurXRefs( const String & i_ceName ) const
+{
+ StreamLock sl(100);
+ return OutPosition( rEnv.CurPosition(),
+ sl() << i_ceName
+ << C_sXrefsSuffix
+ << ".html"
+ << c_str );
+}
+
+const String &
+LinkHelper::XrefsSuffix() const
+{
+ return C_sXrefsSuffix;
+}
+
+
+String
+nameChainLinker( const char * )
+{
+ static const String
+ sModuleFileName_( output::ModuleFileName() );
+ return sModuleFileName_;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_linkhelper.hxx b/autodoc/source/display/idl/hi_linkhelper.hxx
new file mode 100644
index 000000000000..5ba31a85d884
--- /dev/null
+++ b/autodoc/source/display/idl/hi_linkhelper.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ADC_DISPLAY_HI_LINKHELPER_HXX
+#define ADC_DISPLAY_HI_LINKHELPER_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include "hi_ary.hxx"
+#include "hi_env.hxx"
+#include <toolkit/out_position.hxx>
+#include <toolkit/out_tree.hxx>
+
+
+class LinkHelper
+{
+ public:
+ typedef ary::idl::CodeEntity CE;
+ typedef output::Position OutPosition;
+
+ LinkHelper(
+ HtmlEnvironment_Idl &
+ io_rEnv )
+ : rEnv(io_rEnv) {}
+
+ OutPosition PositionOf_CurModule() const
+ { return OutPosition( rEnv.CurPosition(),
+ output::ModuleFileName()); }
+
+ OutPosition PositionOf_CurXRefs(
+ const String & i_ceName) const;
+ OutPosition PositionOf_Index() const
+ { OutPosition ret1 = rEnv.OutputTree().IndexRoot();
+ return OutPosition( ret1, String(output::IndexFile_A()) ); }
+
+
+ const ary::idl::Module *
+ Search_CurModule() const;
+ const ary::idl::Module *
+ Search_Module(
+ output::Node & i_node ) const;
+
+ const CE * Search_CeFromType(
+ ary::idl::Type_id i_type ) const;
+
+ void Get_Link2Position(
+ StreamStr & o_link,
+ OutPosition & i_pos ) const
+ { rEnv.CurPosition().Get_LinkTo(o_link, i_pos); }
+
+ void Get_Link2Member(
+ StreamStr & o_link,
+ OutPosition & i_ownerPos,
+ const String & i_memberName ) const
+ { Get_Link2Position(o_link, i_ownerPos);
+ o_link << "#" << i_memberName; }
+ const String & XrefsSuffix() const;
+
+ private:
+ // DATA
+ mutable HtmlEnvironment_Idl &
+ rEnv;
+};
+
+inline const ary::idl::CodeEntity *
+LinkHelper::Search_CeFromType( ary::idl::Type_id i_type ) const
+{
+ ary::idl::Ce_id nCe = rEnv.Data().CeFromType(i_type);
+ if (nCe.IsValid())
+ return &rEnv.Data().Find_Ce(nCe);
+ return 0;
+}
+
+
+
+String nameChainLinker(
+ const char * i_levelName );
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_main.cxx b/autodoc/source/display/idl/hi_main.cxx
new file mode 100644
index 000000000000..f6b346fcdc15
--- /dev/null
+++ b/autodoc/source/display/idl/hi_main.cxx
@@ -0,0 +1,766 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hi_main.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <algorithm>
+#include <cosv/ploc.hxx>
+#include <cosv/file.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_ce.hxx>
+#include <ary/idl/ik_enum.hxx>
+#include <ary/idl/ik_typedef.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/idl/ik_struct.hxx>
+#include <ary/idl/ik_exception.hxx>
+#include <ary/idl/i_constant.hxx>
+#include <ary/idl/i_constgroup.hxx>
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/i_singleton.hxx>
+#include <ary/idl/i_sisingleton.hxx>
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/i_interface.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/i_siservice.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/i_typedef.hxx>
+#include <ary/idl/i_module.hxx>
+#include <cfrstd.hxx>
+#include <toolkit/htmlfile.hxx>
+#include <toolkit/out_position.hxx>
+#include <toolkit/out_tree.hxx>
+#include "hfi_constgroup.hxx"
+#include "hfi_enum.hxx"
+#include "hfi_globalindex.hxx"
+#include "hfi_interface.hxx"
+#include "hfi_module.hxx"
+#include "hfi_struct.hxx"
+#include "hfi_service.hxx"
+#include "hfi_singleton.hxx"
+#include "hfi_siservice.hxx"
+#include "hfi_typedef.hxx"
+#include "hfi_xrefpage.hxx"
+#include "hi_env.hxx"
+#include "hi_linkhelper.hxx"
+
+
+using ::ary::idl::Ce_id;
+using ::ary::idl::Type_id;
+using ::ary::idl::ifc_ce::Dyn_CeIterator;
+
+
+
+extern const String C_sCssFilename_Idl("idl.css");
+
+/*
+typedef ::ary::Dyn_StdConstIterator< ::ary::idl::CommentedRelation>
+ Dyn_ComRefIterator;
+namespace read_module = ::ary::idl::ifc_module;
+namespace read_interface = ::ary::idl::ifc_interface;
+namespace read_service = ::ary::idl::ifc_service;
+namespace read_struct = ::ary::idl::ifc_struct;
+namespace read_exception = ::ary::idl::ifc_exception;
+namespace read_enum = ::ary::idl::ifc_enum;
+namespace read_typedef = ::ary::idl::ifc_typedef;
+namespace read_constgroup = ::ary::idl::ifc_constantsgroup;
+*/
+
+namespace
+{
+
+/** @resp
+ Inits (constructor) and creates (destructor) the current
+ html documentation file ( MainDisplay_Idl.pMyFile ).
+*/
+class Guard_CurFile
+{
+ public:
+ Guard_CurFile( /// For CodeEntities
+ DocuFile_Html & io_client,
+ HtmlEnvironment_Idl &
+ io_env,
+ const ary::idl::CodeEntity &
+ i_ce,
+ const String & i_titlePrefix );
+ Guard_CurFile( /// For Use pages
+ DocuFile_Html & io_client,
+ HtmlEnvironment_Idl &
+ io_env,
+ const String & i_fileName,
+ const String & i_titlePrefix );
+ Guard_CurFile( /// For Modules
+ DocuFile_Html & io_client,
+ HtmlEnvironment_Idl &
+ io_env,
+ const ary::idl::CodeEntity &
+ i_ce );
+ Guard_CurFile( /// For Indices
+ DocuFile_Html & io_client,
+ HtmlEnvironment_Idl &
+ io_env,
+ char i_letter );
+ ~Guard_CurFile();
+ private:
+ DocuFile_Html & rClient;
+ HtmlEnvironment_Idl &
+ rEnv;
+
+};
+
+/** @resp
+ Sets and releases the current factory pointer
+ ( MainDisplay_Idl.pCurFactory ).
+*/
+class Guard_CurFactoryPtr
+{
+ public:
+ Guard_CurFactoryPtr(
+ HtmlFactory_Idl *& io_client,
+ HtmlFactory_Idl & i_factory )
+ : rpClient(io_client)
+ { rpClient = &i_factory; }
+
+ ~Guard_CurFactoryPtr()
+ { rpClient = 0; }
+
+ private:
+ HtmlFactory_Idl *& rpClient;
+
+};
+
+
+Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client,
+ HtmlEnvironment_Idl & io_env,
+ const ary::idl::CodeEntity & i_ce,
+ const String & i_titlePrefix )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Ces
+ StreamLock sl(300);
+ io_env.Set_CurFile( sl() << i_ce.LocalName()
+ << ".html"
+ << c_str );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+
+ rClient.EmptyBody();
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+ rClient.SetLocation(aLocation);
+ sl().reset();
+ rClient.SetTitle( sl() << i_titlePrefix
+ << " "
+ << i_ce.LocalName()
+ << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << io_env.CurPosition().LinkToRoot()
+ << C_sCssFilename_Idl
+ << c_str );
+
+ io_env.Set_CurPageCe(&i_ce);
+}
+
+Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client,
+ HtmlEnvironment_Idl & io_env,
+ const String & i_fileName,
+ const String & i_titlePrefix )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Use pages
+ StreamLock sl(300);
+ io_env.Set_CurFile( sl() << i_fileName
+ << ".html"
+ << c_str );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+
+ rClient.EmptyBody();
+ rClient.SetLocation(aLocation);
+ sl().reset();
+ rClient.SetTitle( sl() << i_titlePrefix << " " << i_fileName << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << io_env.CurPosition().LinkToRoot()
+ << C_sCssFilename_Idl
+ << c_str );
+
+ io_env.Set_CurPageCe(0);
+}
+
+Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client,
+ HtmlEnvironment_Idl & io_env,
+ const ary::idl::CodeEntity & i_ce )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Modules
+ io_env.Set_CurFile( output::ModuleFileName() );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+
+ rClient.EmptyBody();
+ rClient.SetLocation(aLocation);
+ StreamLock sl(300);
+ rClient.SetTitle( sl() << "Module " << io_env.CurPosition().Name() << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << io_env.CurPosition().LinkToRoot()
+ << C_sCssFilename_Idl
+ << c_str );
+
+ io_env.Set_CurPageCe(&i_ce);
+}
+
+Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client,
+ HtmlEnvironment_Idl & io_env,
+ char i_letter )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Index pages
+ StreamLock sl(300);
+ io_env.Set_CurFile( sl() << "index-"
+ << ( i_letter != '_'
+ ? int(i_letter)-'a'+1
+ : 27 )
+ << ".html"
+ << c_str );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+
+ rClient.EmptyBody();
+ rClient.SetLocation(aLocation);
+ sl().reset();
+ rClient.SetTitle( sl() << "Global Index "
+ << ( i_letter != '_'
+ ? char(i_letter-'a'+'A')
+ : '_' )
+ << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << "../"
+ << C_sCssFilename_Idl
+ << c_str );
+}
+
+Guard_CurFile::~Guard_CurFile()
+{
+ rClient.CreateFile();
+ rEnv.Set_CurPageCe(0);
+}
+
+
+} // anonymous namespace
+
+
+
+
+MainDisplay_Idl::MainDisplay_Idl( HtmlEnvironment_Idl & io_rEnv )
+ : pEnv(&io_rEnv),
+ pMyFile(new DocuFile_Html),
+ pCurFactory(0)
+{
+// pMyFile->SetStyle( Env().Layout().CssStyle() );
+ pMyFile->SetCopyright( Env().Layout().CopyrightText() );
+}
+
+MainDisplay_Idl::~MainDisplay_Idl()
+{
+}
+
+
+void
+MainDisplay_Idl::WriteGlobalIndices()
+{
+ for ( const char * pLetter = "abcdefghijklmnopqrstuvwxyz_X"; *pLetter != 'X'; ++pLetter )
+ {
+ Guard_CurFile gFile( *pMyFile, Env(), *pLetter );
+
+ HF_IdlGlobalIndex aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_Page( ary::idl::alphabetical_index::E_Letter(*pLetter) );
+ } // end for
+}
+
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Module & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce );
+ HF_IdlModule aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Interface & i_ce )
+{
+ do_InterfaceDescr(i_ce);
+ do_Interface2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Service & i_ce )
+{
+ do_ServiceDescr(i_ce);
+ do_Service2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::SglIfcService & i_ce )
+{
+ do_SglIfcServiceDescr(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Struct & i_ce )
+{
+ do_StructDescr(i_ce);
+ do_Struct2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Exception & i_ce )
+{
+ do_ExceptionDescr(i_ce);
+ do_Exception2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Enum & i_ce )
+{
+ do_EnumDescr(i_ce);
+ do_Enum2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Typedef & i_ce )
+{
+ do_TypedefDescr(i_ce);
+ do_Typedef2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::ConstantsGroup & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Constants' Group" );
+ HF_IdlConstGroup aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Singleton & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Singleton" );
+ HF_IdlSingleton aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData_ServiceBased(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::SglIfcSingleton & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Singleton" );
+ HF_IdlSingleton aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData_InterfaceBased(i_ce);
+}
+
+void
+MainDisplay_Idl::do_InterfaceDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Interface" );
+ HF_IdlInterface aInterface( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aInterface);
+
+ aInterface.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_ServiceDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Service" );
+ HF_IdlService aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_SglIfcServiceDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Service" );
+ HF_IdlSglIfcService aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_StructDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Struct" );
+ HF_IdlStruct aFactory( *pEnv, pMyFile->Body(), false );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_ExceptionDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Exception" );
+ HF_IdlStruct aFactory( *pEnv, pMyFile->Body(), true );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_EnumDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Enum" );
+ HF_IdlEnum aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_TypedefDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Typedef" );
+ HF_IdlTypedef aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Interface2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << i_ce.LocalName()
+ << Env().Linker().XrefsSuffix()
+ << c_str );
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ sUsesFileName,
+ "Uses of Interface" );
+ HF_IdlXrefs aUses( *pEnv,
+ pMyFile->Body(),
+ C_sCePrefix_Interface,
+ i_ce );
+
+
+ aUses.Produce_Tree(
+ "Derived Interfaces",
+ "#Deriveds",
+ i_ce,
+ &ary::idl::ifc_interface::xref::Get_Derivations );
+
+ Dyn_CeIterator pXrefList;
+
+ ary::idl::ifc_interface::xref::Get_SynonymTypedefs(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Synonym Typedefs",
+ "#Synonyms",
+ *pXrefList );
+ ary::idl::ifc_interface::xref::Get_ExportingServices(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Services which Support this Interface",
+ "#SupportingServices",
+ *pXrefList );
+ ary::idl::ifc_interface::xref::Get_ExportingSingletons(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Singletons which Support this Interface",
+ "#SupportingSingletons",
+ *pXrefList );
+ ary::idl::ifc_interface::xref::Get_AsReturns(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Return Type",
+ "#Returns",
+ *pXrefList );
+ ary::idl::ifc_interface::xref::Get_AsParameters(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Parameter",
+ "#Parameters",
+ *pXrefList );
+ ary::idl::ifc_interface::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Service2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << i_ce.LocalName()
+ << Env().Linker().XrefsSuffix()
+ << c_str );
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ sUsesFileName,
+ "Uses of Service" );
+ HF_IdlXrefs aUses( *pEnv,
+ pMyFile->Body(),
+ C_sCePrefix_Service,
+ i_ce );
+ Dyn_CeIterator pXrefList;
+ ary::idl::ifc_service::xref::Get_IncludingServices(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Services which Include this Service",
+ "#IncludingServices",
+ *pXrefList );
+
+ ary::idl::ifc_service::xref::Get_InstantiatingSingletons(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Singletons which Instantiate this Service",
+ "#Singletons",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Struct2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << i_ce.LocalName()
+ << Env().Linker().XrefsSuffix()
+ << c_str );
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ sUsesFileName,
+ "Uses of Struct" );
+ HF_IdlXrefs aUses( *pEnv,
+ pMyFile->Body(),
+ C_sCePrefix_Struct,
+ i_ce );
+
+ aUses.Produce_Tree(
+ "Derived Structs",
+ "#Deriveds",
+ i_ce,
+ &ary::idl::ifc_struct::xref::Get_Derivations );
+
+ Dyn_CeIterator pXrefList;
+
+ ary::idl::ifc_struct::xref::Get_SynonymTypedefs(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Synonym Typedefs",
+ "#Synonyms",
+ *pXrefList );
+ ary::idl::ifc_struct::xref::Get_AsReturns(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Return Type",
+ "#Returns",
+ *pXrefList );
+ ary::idl::ifc_struct::xref::Get_AsParameters(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Parameter",
+ "#Parameters",
+ *pXrefList );
+ ary::idl::ifc_struct::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Exception2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << i_ce.LocalName()
+ << Env().Linker().XrefsSuffix()
+ << c_str );
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ sUsesFileName,
+ "Uses of Exception" );
+ HF_IdlXrefs aUses( *pEnv,
+ pMyFile->Body(),
+ C_sCePrefix_Exception,
+ i_ce );
+
+ aUses.Produce_Tree(
+ "Derived Exceptions",
+ "#Deriveds",
+ i_ce,
+ &ary::idl::ifc_exception::xref::Get_Derivations );
+
+ Dyn_CeIterator pXrefList;
+
+ ary::idl::ifc_exception::xref::Get_RaisingFunctions(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Raising Functions",
+ "#Raisers",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Enum2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << i_ce.LocalName()
+ << Env().Linker().XrefsSuffix()
+ << c_str );
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ sUsesFileName,
+ "Uses of Enum" );
+ HF_IdlXrefs aUses( *pEnv,
+ pMyFile->Body(),
+ C_sCePrefix_Enum,
+ i_ce );
+ Dyn_CeIterator pXrefList;
+ ary::idl::ifc_enum::xref::Get_SynonymTypedefs(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Synonym Typedefs",
+ "#Synonyms",
+ *pXrefList );
+ ary::idl::ifc_enum::xref::Get_AsReturns(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Return Type",
+ "#Returns",
+ *pXrefList );
+ ary::idl::ifc_enum::xref::Get_AsParameters(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Parameter",
+ "#Parameters",
+ *pXrefList );
+ ary::idl::ifc_enum::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Typedef2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl() << i_ce.LocalName()
+ << Env().Linker().XrefsSuffix()
+ << c_str );
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ sUsesFileName,
+ "Uses of Typedef" );
+ HF_IdlXrefs aUses( *pEnv,
+ pMyFile->Body(),
+ C_sCePrefix_Typedef,
+ i_ce );
+ Dyn_CeIterator pXrefList;
+ ary::idl::ifc_typedef::xref::Get_SynonymTypedefs(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Synonym Typedefs",
+ "#Synonyms",
+ *pXrefList );
+ ary::idl::ifc_typedef::xref::Get_AsReturns(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Return Type",
+ "#Returns",
+ *pXrefList );
+ ary::idl::ifc_typedef::xref::Get_AsParameters(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Parameter",
+ "#Parameters",
+ *pXrefList );
+ ary::idl::ifc_typedef::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_main.hxx b/autodoc/source/display/idl/hi_main.hxx
new file mode 100644
index 000000000000..a70daa4087a1
--- /dev/null
+++ b/autodoc/source/display/idl/hi_main.hxx
@@ -0,0 +1,181 @@
+/* -*- 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 ADC_DISPLAY_HFIDMAIN_HXX
+#define ADC_DISPLAY_HFIDMAIN_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+ // COMPONENTS
+#include "hi_factory.hxx"
+ // PARAMETERS
+
+
+class HtmlEnvironment_Idl;
+class HtmlFactory_Idl;
+class DocuFile_Html;
+
+namespace ary
+{
+namespace idl
+{
+
+ class Module;
+ class Service;
+ class SglIfcService;
+ class Interface;
+ class Struct;
+ class Exception;
+ class Enum;
+ class Typedef;
+ class ConstantsGroup;
+ class Singleton;
+ class SglIfcSingleton;
+
+} // namespace idl
+} // namespace ary
+
+
+class MainDisplay_Idl : public csv::ProcessorIfc,
+ public csv::ConstProcessor<ary::idl::Module>,
+ public csv::ConstProcessor<ary::idl::Service>,
+ public csv::ConstProcessor<ary::idl::SglIfcService>,
+ public csv::ConstProcessor<ary::idl::Interface>,
+ public csv::ConstProcessor<ary::idl::Struct>,
+ public csv::ConstProcessor<ary::idl::Exception>,
+ public csv::ConstProcessor<ary::idl::Enum>,
+ public csv::ConstProcessor<ary::idl::Typedef>,
+ public csv::ConstProcessor<ary::idl::ConstantsGroup>,
+ public csv::ConstProcessor<ary::idl::Singleton>,
+ public csv::ConstProcessor<ary::idl::SglIfcSingleton>
+{
+ public:
+ MainDisplay_Idl(
+ HtmlEnvironment_Idl &
+ io_rEnv );
+ virtual ~MainDisplay_Idl();
+
+ void WriteGlobalIndices();
+
+ void Display_NamedEntityHierarchy();
+
+ private:
+ // Interface csv::ProcessorIfc:
+ virtual void do_Process(
+ const ary::idl::Module & i_client );
+ virtual void do_Process(
+ const ary::idl::Service & i_client );
+ virtual void do_Process(
+ const ary::idl::SglIfcService &
+ i_client );
+ virtual void do_Process(
+ const ary::idl::Interface & i_client );
+ virtual void do_Process(
+ const ary::idl::Struct & i_client );
+ virtual void do_Process(
+ const ary::idl::Exception & i_client );
+ virtual void do_Process(
+ const ary::idl::Enum & i_client );
+ virtual void do_Process(
+ const ary::idl::Typedef & i_client );
+ virtual void do_Process(
+ const ary::idl::ConstantsGroup &
+ i_client );
+ virtual void do_Process(
+ const ary::idl::Singleton & i_client );
+ virtual void do_Process(
+ const ary::idl::SglIfcSingleton &
+ i_client );
+ // Locals
+ void do_ServiceDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_SglIfcServiceDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_InterfaceDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_StructDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_ExceptionDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_EnumDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_TypedefDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_SingletonDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_Service2s(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_Interface2s(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_Struct2s(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_Exception2s(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_Enum2s(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_Typedef2s(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_Singleton2s(
+ const ary::idl::CodeEntity &
+ i_rData );
+
+ const HtmlEnvironment_Idl &
+ Env() const { return *pEnv; }
+ HtmlEnvironment_Idl &
+ Env() { return *pEnv; }
+ Xml::Element & CurHtmlOut() { return pCurFactory->CurOut(); }
+
+ // DATA
+ HtmlEnvironment_Idl *
+ pEnv;
+ Dyn<DocuFile_Html> pMyFile;
+ HtmlFactory_Idl * pCurFactory;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/makefile.mk b/autodoc/source/display/idl/makefile.mk
new file mode 100644
index 000000000000..383983a1fb22
--- /dev/null
+++ b/autodoc/source/display/idl/makefile.mk
@@ -0,0 +1,77 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=display_idl
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/hfi_constgroup.obj \
+ $(OBJ)$/hfi_doc.obj \
+ $(OBJ)$/hfi_enum.obj \
+ $(OBJ)$/hfi_globalindex.obj \
+ $(OBJ)$/hfi_hierarchy.obj \
+ $(OBJ)$/hfi_interface.obj \
+ $(OBJ)$/hfi_method.obj \
+ $(OBJ)$/hfi_module.obj \
+ $(OBJ)$/hfi_navibar.obj \
+ $(OBJ)$/hfi_property.obj \
+ $(OBJ)$/hfi_service.obj \
+ $(OBJ)$/hfi_singleton.obj \
+ $(OBJ)$/hfi_siservice.obj \
+ $(OBJ)$/hfi_struct.obj \
+ $(OBJ)$/hfi_tag.obj \
+ $(OBJ)$/hfi_typedef.obj \
+ $(OBJ)$/hfi_typetext.obj \
+ $(OBJ)$/hfi_xrefpage.obj \
+ $(OBJ)$/hi_ary.obj \
+ $(OBJ)$/hi_display.obj \
+ $(OBJ)$/hi_env.obj \
+ $(OBJ)$/hi_factory.obj \
+ $(OBJ)$/hi_linkhelper.obj \
+ $(OBJ)$/hi_main.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/display/inc/cfrstd.hxx b/autodoc/source/display/inc/cfrstd.hxx
new file mode 100644
index 000000000000..dce0db3b886f
--- /dev/null
+++ b/autodoc/source/display/inc/cfrstd.hxx
@@ -0,0 +1,82 @@
+/* -*- 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 ADC_CFRSTD_HXX
+#define ADC_CFRSTD_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <display/corframe.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+class StdFrame : public display::CorporateFrame
+{
+ public:
+ // LIFECYCLE
+ StdFrame();
+
+ // INQUIRY
+ virtual DYN Html_Image *
+ LogoSrc() const;
+ virtual const char *
+ LogoLink() const;
+ virtual const char *
+ CopyrightText() const;
+ virtual const char *
+ CssStyle() const;
+ virtual const char *
+ CssStylesExplanation() const;
+ virtual const char *
+ DevelopersGuideHtmlRoot() const;
+ virtual bool SimpleLinks() const;
+
+ // ACCESS
+ virtual void Set_DevelopersGuideHtmlRoot(
+ const String & i_directory );
+ virtual void Set_SimpleLinks();
+
+ private:
+ String sDevelopersGuideHtmlRoot;
+ bool bSimpleLinks;
+};
+
+
+
+// IMPLEMENTATION
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/html/chd_udk2.hxx b/autodoc/source/display/inc/html/chd_udk2.hxx
new file mode 100644
index 000000000000..b8a17b999fb5
--- /dev/null
+++ b/autodoc/source/display/inc/html/chd_udk2.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 ADC_DISPLAY_HTML_CHD_UDK2_HXX
+#define ADC_DISPLAY_HTML_CHD_UDK2_HXX
+
+// BASE CLASSES
+#include <autodoc/dsp_html_std.hxx>
+// USED SERVICES
+#include <cosv/ploc.hxx>
+
+namespace ary
+{
+namespace cpp
+{
+ class Namespace;
+ class Gate;
+}
+}
+
+class OuputPage_Environment;
+
+
+
+
+class CppHtmlDisplay_Udk2 : public autodoc::HtmlDisplay_UdkStd
+{
+ public:
+ CppHtmlDisplay_Udk2();
+ ~CppHtmlDisplay_Udk2();
+ private:
+ // Interface CppHtmlDisplay_UdkStd:
+ virtual void do_Run(
+ const char * i_sOutputDirectory,
+ const ary::cpp::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout );
+
+ // Local
+ void SetRunData(
+ const char * i_sOutputDirectory,
+ const ary::cpp::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout );
+
+ void Create_Css_File();
+ void Create_Overview_File();
+ void Create_Help_File();
+ void Create_AllDefs_File();
+ void CreateFiles_InSubTree_Namespaces();
+ void CreateFiles_InSubTree_Index();
+
+ void RecursiveDisplay_Namespace(
+ const ary::cpp::Namespace &
+ i_rNsp );
+ void DisplayFiles_InNamespace(
+ const ary::cpp::Namespace &
+ i_rNsp );
+ const ary::cpp::Gate &
+ Gate() const;
+ // DATA
+ Dyn<OuputPage_Environment>
+ pCurPageEnv;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/idl/hi_display.hxx b/autodoc/source/display/inc/idl/hi_display.hxx
new file mode 100644
index 000000000000..6fb4ca50ab38
--- /dev/null
+++ b/autodoc/source/display/inc/idl/hi_display.hxx
@@ -0,0 +1,113 @@
+/* -*- 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 ADC_DISPLAY_HI_DISPLAY_HXX
+#define ADC_DISPLAY_HI_DISPLAY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <autodoc/dsp_html_std.hxx>
+ // COMPONENTS
+#include <cosv/ploc.hxx>
+ // PARAMETERS
+
+
+
+namespace ary
+{
+ namespace idl
+ {
+ class Module;
+ class CodeEntity;
+ } // namspace idl
+} // namspace csi
+
+
+class MainDisplay_Idl;
+class HtmlEnvironment_Idl;
+
+class HtmlDisplay_Idl : public autodoc::HtmlDisplay_Idl_Ifc
+{
+ public:
+ HtmlDisplay_Idl();
+ ~HtmlDisplay_Idl();
+ private:
+ // Interface HtmlDisplay_Idl_Ifc:
+ virtual void do_Run(
+ const char * i_sOutputDirectory,
+ const ary::idl::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout );
+ void SetRunData(
+ const char * i_sOutputDirectory,
+ const ary::idl::Gate &
+ i_rAryGate,
+ const display::CorporateFrame &
+ i_rLayout );
+ void Create_StartFile();
+ void Create_FilesInNameTree();
+ void Create_IndexFiles();
+ void Create_FilesInProjectTree();
+ void Create_PackageList();
+ void Create_HelpFile();
+ void Create_CssFile();
+
+ /** @descr
+ - makes sure, the module's directory exists
+ - creates the module's docu file
+ - creates docu files for all members of the module
+ - does the same recursive for all sub-modules.
+ */
+ void RecursiveDisplay_Module(
+ const ary::idl::Module &
+ i_rNamespace );
+ bool IsModule(
+ const ary::idl::CodeEntity &
+ i_ce ) const;
+ const ary::idl::Module &
+ Module_Cast( /// @precond Cast must be valid.
+ const ary::idl::CodeEntity &
+ i_ce ) const;
+ // DATA
+ Dyn<HtmlEnvironment_Idl>
+ pCurPageEnv;
+ Dyn<MainDisplay_Idl>
+ pMainDisplay;
+};
+
+
+
+// IMPLEMENTATION
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/hf_docentry.hxx b/autodoc/source/display/inc/toolkit/hf_docentry.hxx
new file mode 100644
index 000000000000..028f47b68af1
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/hf_docentry.hxx
@@ -0,0 +1,62 @@
+/* -*- 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 ADC_DISPLAY_HF_DOCENTRY_HXX
+#define ADC_DISPLAY_HF_DOCENTRY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "htmlfactory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+/** @resp
+ Produces a list of <DT>..</DT> and <DD>.
+*/
+class HF_DocEntryList : public HtmlMaker
+{
+ public:
+
+ HF_DocEntryList(
+ Xml::Element & o_rOut );
+ virtual ~HF_DocEntryList();
+
+ Xml::Element & Produce_Term(
+ const char * i_sTerm = 0 );
+ Xml::Element & Produce_NormalTerm( /// Font will not be bold.
+ const char * i_sTerm = 0 );
+ Xml::Element & Produce_Definition();
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/hf_funcdecl.hxx b/autodoc/source/display/inc/toolkit/hf_funcdecl.hxx
new file mode 100644
index 000000000000..013a8d2e123d
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/hf_funcdecl.hxx
@@ -0,0 +1,74 @@
+/* -*- 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 ADC_DISPLAY_HF_FUNCDECL_HXX
+#define ADC_DISPLAY_HF_FUNCDECL_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <toolkit/htmlfactory.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+class HF_FunctionDeclaration : public HtmlMaker
+{
+ public:
+ HF_FunctionDeclaration(
+ Xml::Element & o_rParent,
+ const String & i_sRaisesText );
+ virtual ~HF_FunctionDeclaration();
+
+ // OPERATIONS
+ Xml::Element & ReturnCell();
+ Xml::Element & NameCell();
+ Xml::Element & NewParamTypeCell();
+ Xml::Element & ParamNameCell();
+ Xml::Element & ExceptionCell();
+
+ private:
+ Html::TableRow & ParameterLine();
+
+ // DATA
+ String sRaisesText;
+ Html::Table * pTable;
+ Xml::Element * pReturnCell;
+ Xml::Element * pNameCell;
+ Html::TableRow * pParameterLine;
+ Xml::Element * pLastParameterCell;
+ Xml::Element * pExceptionCell;
+};
+
+
+// IMPLEMENTATION
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/hf_linachain.hxx b/autodoc/source/display/inc/toolkit/hf_linachain.hxx
new file mode 100644
index 000000000000..143e864c700e
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/hf_linachain.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 ADC_DISPLAY_HF_LINACHAIN_HXX
+#define ADC_DISPLAY_HF_LINACHAIN_HXX
+
+// BASE CLASSES
+#include "htmlfactory.hxx"
+#include "out_position.hxx"
+
+
+
+
+class HF_LinkedNameChain : public HtmlMaker
+{
+ public:
+ /** F_LinkMaker makes a link out of the name of the
+ parent position.
+
+ Returns true, if there is a link, false if not.
+ */
+ typedef String (*F_LinkMaker)(const char *);
+
+
+ HF_LinkedNameChain(
+ Xml::Element & o_rOut );
+ virtual ~HF_LinkedNameChain();
+
+ void Produce_CompleteChain(
+ const output::Position &
+ i_curPosition,
+ F_LinkMaker i_linkMaker ) const;
+ void Produce_CompleteChain_forModule(
+ const output::Position &
+ i_curPosition, /// current Module's node
+ F_LinkMaker i_linkMaker ) const;
+ private:
+ void produce_Level(
+ output::Node & i_levelNode,
+ const output::Position &
+ i_startPosition,
+ F_LinkMaker i_linkMaker ) const;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/hf_navi_main.hxx b/autodoc/source/display/inc/toolkit/hf_navi_main.hxx
new file mode 100644
index 000000000000..0fbb726a4fcb
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/hf_navi_main.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ADC_DISPLAY_HF_NAVI_MAIN_HXX
+#define ADC_DISPLAY_HF_NAVI_MAIN_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include "htmlfactory.hxx"
+ // PARAMETERS
+
+
+class HF_MainItem;
+
+
+/** @task
+ Create a HTML navigation bar with lightly coloured background.
+
+ @descr
+ There are three kinds of items:
+ Item with link: Add_StdItem(),
+ Item without link: Add_NoneItem(),
+ Item that is current page: Add_SelfItem().
+*/
+class HF_NaviMainRow : public HtmlMaker
+{
+ public:
+ enum E_Style
+ {
+ eStd,
+ eSelf,
+ eNo
+ };
+ HF_NaviMainRow(
+ Xml::Element & o_out );
+ ~HF_NaviMainRow();
+
+ void Add_StdItem(
+ const char * i_sText,
+ const char * i_sLink );
+ void Add_SelfItem(
+ const char * i_sText );
+ void Add_NoneItem(
+ const char * i_sText );
+
+ void Produce_Row();
+
+ private:
+ // DATA
+ typedef std::vector< DYN HF_MainItem* > ItemList;
+
+ ItemList aItems;
+ Xml::Element * pRow;
+};
+
+
+
+// IMPLEMENTATION
+
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/hf_navi_sub.hxx b/autodoc/source/display/inc/toolkit/hf_navi_sub.hxx
new file mode 100644
index 000000000000..24980ed666d8
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/hf_navi_sub.hxx
@@ -0,0 +1,83 @@
+/* -*- 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 ADC_DISPLAY_HF_NAVI_SUB_HXX
+#define ADC_DISPLAY_HFI_NAVI_SUB_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include "htmlfactory.hxx"
+ // PARAMETERS
+
+
+class HF_NaviSubRow : public HtmlMaker
+{
+ public:
+ HF_NaviSubRow(
+ Xml::Element & o_rOut );
+ virtual ~HF_NaviSubRow();
+
+ void AddItem(
+ const String & i_sText,
+ const String & i_sLink,
+ bool i_bSwitchOn );
+ void SwitchOn(
+ int i_nIndex );
+ void Produce_Row();
+
+ private:
+ typedef std::pair<String,String> SubRow_Data;
+ typedef std::pair<SubRow_Data,bool> SubRow_Item;
+ typedef std::vector<SubRow_Item> SubRow;
+
+ /** Puts the row's table into the parent XML-element, but
+ doesn't write the items, because the actvity-status of
+ the subitems isn't known yet.
+ */
+ void Setup_Row();
+
+ // DATA
+ SubRow aRow;
+ Xml::Element * pMyRow;
+};
+
+
+
+
+// IMPLEMENTATION
+
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/hf_title.hxx b/autodoc/source/display/inc/toolkit/hf_title.hxx
new file mode 100644
index 000000000000..d0045182ac85
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/hf_title.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ADC_DISPLAY_HF_TITLE_HXX
+#define ADC_DISPLAY_HF_TITLE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <toolkit/htmlfactory.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+class HF_TitleTable : public HtmlMaker
+{
+ public:
+ HF_TitleTable(
+ Xml::Element & o_rOut );
+ virtual ~HF_TitleTable();
+
+ void Produce_Title(
+ const char * i_title );
+ void Produce_Title(
+ const char * i_annotations,
+// const char * i_label,
+ const char * i_title );
+
+ /// @return a Html::TableCell reference.
+ Xml::Element & Add_Row();
+};
+
+
+class HF_SubTitleTable : public HtmlMaker
+{
+ public:
+ enum E_SubLevel
+ {
+ sublevel_1, /// Big title.
+ sublevel_2, /// Small title.
+ sublevel_3 /// No title.
+ };
+
+ /** @param i_nColumns [1 .. n]
+ @param i_nSubTitleLevel [1 .. 2]
+ 1 is a bit bigger than 2.
+ */
+
+ HF_SubTitleTable(
+ Xml::Element & o_rOut,
+ const String & i_label,
+ const String & i_title,
+ int i_nColumns,
+ E_SubLevel i_eSubTitleLevel = sublevel_1 );
+ virtual ~HF_SubTitleTable();
+
+ /// @return an Html::TableRow reference.
+ Xml::Element & Add_Row();
+};
+
+
+// IMPLEMENTATION
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/htmlfactory.hxx b/autodoc/source/display/inc/toolkit/htmlfactory.hxx
new file mode 100644
index 000000000000..4be72412832e
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/htmlfactory.hxx
@@ -0,0 +1,104 @@
+/* -*- 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 ADC_DISPLAY_HTMLFACTORY_HXX
+#define ADC_DISPLAY_HTMLFACTORY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include "outputstack.hxx"
+ // PARAMETERS
+#include <udm/xml/xmlitem.hxx>
+#include <udm/html/htmlitem.hxx>
+
+namespace Xml = ::csi::xml;
+namespace Html = ::csi::html;
+
+/** @resp
+ Base class for HTML page creators (factories) for code entites or
+ similar items.
+*/
+template <class ENV>
+class HtmlFactory
+{
+ public:
+ // INQUIRY
+ ENV & Env() const { return *pEnv; }
+ Xml::Element & CurOut() const { return aDestination.Out(); }
+
+ // ACCESS
+ OutputStack & Out() const { return aDestination; }
+
+ protected:
+ HtmlFactory(
+ ENV & io_rEnv,
+ Xml::Element * o_pOut = 0 )
+ : pEnv(&io_rEnv) { if (o_pOut != 0) aDestination.Enter(*o_pOut); }
+ ~HtmlFactory() {}
+ private:
+ // DATA
+ ENV * pEnv;
+ mutable OutputStack aDestination;
+};
+
+
+/** @resp
+ Base class for HTML paragraph creators, which are to be put into
+ a parent HTML element.
+*/
+class HtmlMaker
+{
+ public:
+
+ // INQUIRY
+ Xml::Element & CurOut() const { return *pOut; }
+
+ protected:
+ HtmlMaker(
+ Xml::Element & o_rOut )
+ : pOut(&o_rOut) {}
+ private:
+ // DATA
+ Xml::Element * pOut;
+};
+
+
+
+
+// IMPLEMENTATION
+
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/htmlfile.hxx b/autodoc/source/display/inc/toolkit/htmlfile.hxx
new file mode 100644
index 000000000000..ae4f773e6680
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/htmlfile.hxx
@@ -0,0 +1,88 @@
+/* -*- 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 ADC_DISPLAY_HTMLFILE_HXX
+#define ADC_DISPLAY_HTMLFILE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <udm/html/htmlitem.hxx>
+ // PARAMETERS
+#include <cosv/ploc.hxx>
+
+namespace csv
+{
+ class File;
+}
+
+/** Represents an HTML output file.
+*/
+class DocuFile_Html
+{
+ public:
+ // LIFECYCLE
+ DocuFile_Html();
+
+ void SetLocation(
+ const csv::ploc::Path &
+ i_rFilePath );
+ void SetTitle(
+ const char * i_sTitle );
+ void SetRelativeCssPath(
+ const char * i_sCssFile_relativePath );
+ void SetCopyright(
+ const char * i_sCopyright );
+ void EmptyBody();
+
+ Html::Body & Body() { return aBodyData; }
+ bool CreateFile();
+
+ private:
+ void WriteHeader(
+ csv::File & io_aFile );
+ void WriteBody(
+ csv::File & io_aFile );
+ // DATA
+ String sFilePath;
+ String sTitle;
+ String sLocation;
+ String sStyle;
+ String sCssFile;
+ String sCopyright;
+
+ Html::Body aBodyData;
+ StreamStr aBuffer;
+};
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/out_node.hxx b/autodoc/source/display/inc/toolkit/out_node.hxx
new file mode 100644
index 000000000000..1c837ec6b50f
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/out_node.hxx
@@ -0,0 +1,132 @@
+/* -*- 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 ADC_DISPLAY_OUT_NODE_HXX
+#define ADC_DISPLAY_OUT_NODE_HXX
+
+
+
+
+namespace output
+{
+
+
+/** @resp
+ Represents a tree of names where each node can have only one parent,
+ but a list of children.
+
+ @see Position
+ @see Tree
+*/
+class Node
+{
+ public:
+ typedef std::vector< Node* > List;
+ typedef UINT32 relative_id;
+
+ // LIFECYCLE
+ enum E_NullObject { null_object };
+
+ Node();
+ explicit Node(
+ E_NullObject );
+ ~Node();
+
+ // OPERATORS
+ bool operator==(
+ const Node & i_node ) const
+ { return pParent == i_node.pParent AND sName == i_node.sName; }
+ bool operator!=(
+ const Node & i_node ) const
+ { return NOT operator==(i_node); }
+
+ // OPERATIONS
+ /// Seek, and if not existent, create.
+ Node & Provide_Child(
+ const String & i_name );
+ /// Seek, and if not existent, create.
+ Node & Provide_Child(
+ const StringVector &
+ i_path )
+ { return provide_Child(i_path.begin(), i_path.end()); }
+ // INQUIRY
+ intt Depth() const { return nDepth; }
+
+ const String & Name() const { return sName; }
+ /// @return Id of a namespace or class etc. this directory represents.
+ relative_id RelatedNameRoom() const { return nNameRoomId; }
+ /// @return No delimiter at start, with delimiter at end.
+ void Get_Path(
+ StreamStr & o_result,
+ intt i_maxDepth = -1 ) const;
+ void Get_Chain(
+ StringVector & o_result,
+ intt i_maxDepth = -1 ) const;
+ // ACCESS
+ void Set_RelatedNameRoom(
+ relative_id i_nNameRoomId )
+ { nNameRoomId = i_nNameRoomId; }
+ Node * Parent() { return pParent; }
+ Node * Child(
+ const String & i_name )
+ { return find_Child(i_name); }
+ List & Children() { return aChildren; }
+
+ /// @return a reference to a Node with Depth() == -1.
+ static Node & Null_();
+
+ private:
+ // Local
+ Node(
+ const String & i_name,
+ Node & i_parent );
+
+ Node * find_Child(
+ const String & i_name );
+ Node & add_Child(
+ const String & i_name );
+ Node & provide_Child(
+ StringVector::const_iterator
+ i_next,
+ StringVector::const_iterator
+ i_end );
+ // Data
+ String sName;
+ Node * pParent;
+ List aChildren;
+ intt nDepth;
+ relative_id nNameRoomId;
+};
+
+
+
+
+} // namespace output
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/out_position.hxx b/autodoc/source/display/inc/toolkit/out_position.hxx
new file mode 100644
index 000000000000..0bc236cdf871
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/out_position.hxx
@@ -0,0 +1,120 @@
+/* -*- 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 ADC_DISPLAY_OUT_POSITION_HXX
+#define ADC_DISPLAY_OUT_POSITION_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <toolkit/out_node.hxx>
+ // PARAMETERS
+
+
+
+namespace output
+{
+
+
+
+class Position
+{
+ public:
+ // LIFECYCLE
+ Position();
+ explicit Position(
+ Node & i_directory,
+ const String & i_file = String::Null_() );
+ Position(
+ const Position & i_directory,
+ const String & i_rDifferentFile );
+ ~Position();
+
+ // OPERATIONS
+ Position & operator=(
+ Node & i_node );
+ Position & operator+=(
+ const String & i_nodeName );
+ Position & operator-=(
+ intt i_levels );
+
+ // INQUIRY
+ bool IsValid() const { return pDirectory->Depth() >= 0; }
+ const String & Name() const { return pDirectory->Name(); }
+ const String & File() const { return sFile; }
+ intt Depth() const { return pDirectory->Depth(); }
+
+ void Get_Chain(
+ StringVector & o_result ) const
+ { pDirectory->Get_Chain(o_result); }
+ String LinkToRoot(
+ const String & i_localLabel = String::Null_() ) const;
+
+ void Get_LinkTo(
+ StreamStr & o_result,
+ const Position & i_destination,
+ const String & i_localLabel = String::Null_() ) const;
+ void Get_LinkToRoot(
+ StreamStr & o_result,
+ const String & i_localLabel = String::Null_() ) const;
+
+ static char Delimiter() { return '/'; }
+
+ // ACCESS
+ Node & RelatedNode() const { return *pDirectory; }
+
+ void Set(
+ Node & i_node,
+ const String & i_file = String::Null_() );
+ void Set_File(
+ const String & i_file );
+
+ private:
+ // DATA
+ String sFile;
+ Node * pDirectory;
+};
+
+
+/// @return No delimiter at start, with delimiter at end.
+const char * get_UpLink(
+ uintt i_depth );
+
+
+// IMPLEMENTATION
+
+inline void
+Position::Set_File( const String & i_file )
+ { sFile = i_file; }
+
+} // namespace output
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/out_tree.hxx b/autodoc/source/display/inc/toolkit/out_tree.hxx
new file mode 100644
index 000000000000..d04d51b780d4
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/out_tree.hxx
@@ -0,0 +1,139 @@
+/* -*- 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 ADC_DISPLAY_OUT_TREE_HXX
+#define ADC_DISPLAY_OUT_TREE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include "out_position.hxx"
+ // PARAMETERS
+
+
+namespace output
+{
+
+inline const char *
+ModuleFileName()
+{ return "module-ix.html"; }
+inline const char *
+IndexFilesDirName()
+{ return "index-files"; }
+inline const char *
+IndexFile_A()
+{ return "index-1.html"; }
+
+
+class Tree
+{
+ public:
+ // LIFECYCLE
+ Tree();
+ ~Tree();
+
+ // OPERATIONS
+ void Set_Overview(
+ const StringVector &
+ i_path,
+ const String & i_sFileName );
+ Node & Set_NamesRoot(
+ const StringVector &
+ i_path );
+ Node & Set_IndexRoot(
+ const StringVector &
+ i_path );
+ Node & Set_ProjectsRoot(
+ const StringVector &
+ i_path );
+ Node & Provide_Node(
+ const StringVector &
+ i_path );
+
+ // ACCESS
+ Node & RootNode() { return *pRoot; }
+ Node & NamesRootNode() { return *pNamesRoot; }
+ Node & IndexRootNode() { return *pIndexRoot; }
+ Node & ProjectsRootNode() { return *pProjectsRoot; }
+
+ Position Root() { return Position(*pRoot); }
+ Position Overview() { return aOverview; }
+ Position NamesRoot() { return Position(*pNamesRoot); }
+ Position IndexRoot() { return Position(*pIndexRoot); }
+ Position ProjectsRoot() { return Position(*pProjectsRoot); }
+
+ private:
+ // forbidden:
+ Tree(const Tree&);
+ Tree & operator=(const Tree&);
+
+ // DATA
+ Dyn<Node> pRoot;
+ Node * pNamesRoot;
+ Node * pIndexRoot;
+ Node * pProjectsRoot;
+ Position aOverview;
+};
+
+
+// IMPLEMENTATION
+
+inline Node &
+Tree::Provide_Node( const StringVector & i_path )
+ { return pRoot->Provide_Child(i_path); }
+
+
+inline void
+Tree::Set_Overview( const StringVector & i_path,
+ const String & i_sFileName )
+ { aOverview.Set(Provide_Node(i_path), i_sFileName); }
+
+inline Node &
+Tree::Set_NamesRoot( const StringVector & i_path )
+ { pNamesRoot = &Provide_Node(i_path);
+ return *pNamesRoot; }
+
+inline Node &
+Tree::Set_IndexRoot( const StringVector & i_path )
+ { pIndexRoot = &Provide_Node(i_path);
+ return *pIndexRoot; }
+
+inline Node &
+Tree::Set_ProjectsRoot( const StringVector & i_path )
+ { pProjectsRoot = &Provide_Node(i_path);
+ return *pProjectsRoot; }
+
+
+
+} // namespace output
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/inc/toolkit/outputstack.hxx b/autodoc/source/display/inc/toolkit/outputstack.hxx
new file mode 100644
index 000000000000..e874516ff157
--- /dev/null
+++ b/autodoc/source/display/inc/toolkit/outputstack.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 ADC_DISPLAY_OUTPUTSTACK_HXX
+#define ADC_DISPLAY_OUTPUTSTACK_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <estack.hxx>
+ // PARAMETERS
+#include <udm/xml/xmlitem.hxx>
+
+
+class OutputStack
+{
+ public:
+ // LIFECYCLE
+ OutputStack();
+ ~OutputStack();
+
+ // OPERATIONS
+ void Enter(
+ csi::xml::Element & io_rDestination );
+ void Leave();
+
+ // ACCESS
+ csi::xml::Element & Out() const; // CurOutputNode
+
+ private:
+ EStack< csi::xml::Element * >
+ aCurDestination; // The front element is the currently used.
+ // The later ones are the parents.
+};
+
+inline csi::xml::Element &
+OutputStack::Out() const
+{
+ csv_assert( aCurDestination.size() > 0 );
+ return *aCurDestination.top();
+}
+
+// IMPLEMENTATION
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/kernel/displfct.cxx b/autodoc/source/display/kernel/displfct.cxx
new file mode 100644
index 000000000000..4e2973d4c359
--- /dev/null
+++ b/autodoc/source/display/kernel/displfct.cxx
@@ -0,0 +1,91 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "displfct.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <html/chd_udk2.hxx>
+#include <idl/hi_display.hxx>
+#include <cfrstd.hxx>
+
+
+DYN DisplayToolsFactory * DisplayToolsFactory::dpTheInstance_ = 0;
+
+
+namespace autodoc
+{
+
+DisplayToolsFactory_Ifc &
+DisplayToolsFactory_Ifc::GetIt_()
+{
+ if ( DisplayToolsFactory::dpTheInstance_ == 0 )
+ DisplayToolsFactory::dpTheInstance_ = new DisplayToolsFactory;
+ return *DisplayToolsFactory::dpTheInstance_;
+}
+
+} // namespace autodoc
+
+
+DisplayToolsFactory::DisplayToolsFactory()
+{
+}
+
+DisplayToolsFactory::~DisplayToolsFactory()
+{
+}
+
+// DYN autodoc::TextDisplay_FunctionList_Ifc *
+// DisplayToolsFactory::Create_TextDisplay_FunctionList() const
+// {
+// return new CppTextDisplay_FunctionList;
+// }
+
+
+DYN autodoc::HtmlDisplay_UdkStd *
+DisplayToolsFactory::Create_HtmlDisplay_UdkStd() const
+{
+ return new CppHtmlDisplay_Udk2;
+}
+
+DYN autodoc::HtmlDisplay_Idl_Ifc *
+DisplayToolsFactory::Create_HtmlDisplay_Idl() const
+{
+ return new HtmlDisplay_Idl;
+}
+
+const display::CorporateFrame &
+DisplayToolsFactory::Create_StdFrame() const
+{
+ static StdFrame aFrame;
+ return aFrame;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/kernel/displfct.hxx b/autodoc/source/display/kernel/displfct.hxx
new file mode 100644
index 000000000000..cd0274078162
--- /dev/null
+++ b/autodoc/source/display/kernel/displfct.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 ADC_DISPLAY_DISPLFCT_HXX
+#define ADC_DISPLAY_DISPLFCT_HXX
+
+
+#include <autodoc/displaying.hxx>
+
+
+/** Interface for parsing code of a programming language and
+ delivering the information into an Autodoc Repository.
+**/
+class DisplayToolsFactory : public autodoc::DisplayToolsFactory_Ifc
+{
+ public:
+ DisplayToolsFactory();
+ virtual ~DisplayToolsFactory();
+
+// virtual DYN autodoc::TextDisplay_FunctionList_Ifc *
+// Create_TextDisplay_FunctionList() const;
+
+ virtual DYN autodoc::HtmlDisplay_UdkStd *
+ Create_HtmlDisplay_UdkStd() const;
+ virtual DYN autodoc::HtmlDisplay_Idl_Ifc *
+ Create_HtmlDisplay_Idl() const;
+
+ virtual const display::CorporateFrame &
+ Create_StdFrame() const;
+ private:
+ static DYN DisplayToolsFactory *
+ dpTheInstance_;
+
+ friend class autodoc::DisplayToolsFactory_Ifc;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/kernel/makefile.mk b/autodoc/source/display/kernel/makefile.mk
new file mode 100644
index 000000000000..992456dcd667
--- /dev/null
+++ b/autodoc/source/display/kernel/makefile.mk
@@ -0,0 +1,55 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=display_kernel
+TARGETTYPE=CUI
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/displfct.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/display/toolkit/hf_docentry.cxx b/autodoc/source/display/toolkit/hf_docentry.cxx
new file mode 100644
index 000000000000..961ee34ebee3
--- /dev/null
+++ b/autodoc/source/display/toolkit/hf_docentry.cxx
@@ -0,0 +1,77 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/hf_docentry.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+HF_DocEntryList::HF_DocEntryList( Xml::Element & o_out )
+ : HtmlMaker( o_out >>* new Html::DefList )
+{
+}
+
+HF_DocEntryList::~HF_DocEntryList()
+{
+}
+
+Xml::Element &
+HF_DocEntryList::Produce_Term(const char * i_sTerm )
+{
+ Xml::Element &
+ ret = CurOut()
+ >> *new Html::DefListTerm
+ >> *new Html::Bold;
+ if ( NOT csv::no_str(i_sTerm))
+ ret
+ << i_sTerm;
+ return ret;
+}
+
+Xml::Element &
+HF_DocEntryList::Produce_NormalTerm(const char * i_sTerm)
+{
+ Xml::Element &
+ ret = CurOut()
+ >> *new Html::DefListTerm;
+ if ( NOT csv::no_str(i_sTerm))
+ ret
+ << i_sTerm;
+ return ret;
+}
+
+Xml::Element &
+HF_DocEntryList::Produce_Definition()
+{
+ return CurOut()
+ >> *new Html::DefListDefinition;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/hf_funcdecl.cxx b/autodoc/source/display/toolkit/hf_funcdecl.cxx
new file mode 100644
index 000000000000..4f0c652b1934
--- /dev/null
+++ b/autodoc/source/display/toolkit/hf_funcdecl.cxx
@@ -0,0 +1,159 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/hf_funcdecl.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+const String C_sValignTop("top");
+const String C_sValignBottom("bottom");
+
+
+
+HF_FunctionDeclaration::HF_FunctionDeclaration( Xml::Element & o_rParent,
+ const String & i_sRaisesText )
+ : HtmlMaker(o_rParent),
+ sRaisesText(i_sRaisesText),
+ pTable(0),
+ pReturnCell(0),
+ pNameCell(0),
+ pParameterLine(0),
+ pLastParameterCell(0),
+ pExceptionCell(0)
+{
+ pTable = new Html::Table;
+ CurOut()
+ >> *pTable
+ << new Html::ClassAttr("table-in-method")
+ << new Xml::AnAttribute("border","0");
+}
+
+HF_FunctionDeclaration::~HF_FunctionDeclaration()
+{
+}
+
+Xml::Element &
+HF_FunctionDeclaration::ReturnCell()
+{
+ if (pReturnCell != 0)
+ return *pReturnCell;
+
+ pReturnCell = &( *pTable
+ >> *new Html::TableRow
+ >> *new Html::TableCell
+ << new Html::VAlignAttr(C_sValignTop)
+ << new Xml::AnAttribute("colspan", "3")
+ );
+ return *pReturnCell;
+}
+
+Xml::Element &
+HF_FunctionDeclaration::NameCell()
+{
+ if (pNameCell != 0)
+ return *pNameCell;
+
+ pNameCell = &( ParameterLine()
+ >> *new Html::TableCell
+ << new Html::VAlignAttr(C_sValignTop)
+ );
+ pLastParameterCell = pNameCell;
+
+ return *pNameCell;
+}
+
+Xml::Element &
+HF_FunctionDeclaration::NewParamTypeCell()
+{
+ if (pLastParameterCell != pNameCell)
+ {
+ pParameterLine = 0;
+ ParameterLine()
+ >> *new Html::TableCell;
+ }
+
+ Xml::Element &
+ rParamType = ParameterLine()
+ >> *new Html::TableCell
+ << new Html::VAlignAttr(C_sValignTop);
+ pLastParameterCell
+ = &( ParameterLine()
+ >> *new Html::TableCell
+ << new Html::VAlignAttr(C_sValignBottom)
+ << new Xml::XmlCode("&nbsp;")
+ );
+ return rParamType;
+}
+
+Xml::Element &
+HF_FunctionDeclaration::ParamNameCell()
+{
+ csv_assert(pLastParameterCell != pNameCell);
+ return *pLastParameterCell;
+}
+
+Xml::Element &
+HF_FunctionDeclaration::ExceptionCell()
+{
+ if (pExceptionCell != 0)
+ return *pExceptionCell;
+
+ Xml::Element &
+ rExceptionRow = *pTable
+ >> *new Html::TableRow;
+ rExceptionRow
+ >> *new Html::TableCell
+ << new Html::VAlignAttr(C_sValignTop)
+ << new Xml::AnAttribute("align", "right")
+ << sRaisesText
+ << "( ";
+
+ pExceptionCell = &( rExceptionRow
+ >> *new Html::TableCell
+ << new Html::VAlignAttr(C_sValignTop)
+ << new Xml::AnAttribute("colspan", "2")
+ );
+ return *pExceptionCell;
+}
+
+Html::TableRow &
+HF_FunctionDeclaration::ParameterLine()
+{
+ if (pParameterLine != 0)
+ return *pParameterLine;
+
+ pParameterLine = new Html::TableRow;
+ *pTable
+ >> *pParameterLine;
+
+ return *pParameterLine;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/hf_linachain.cxx b/autodoc/source/display/toolkit/hf_linachain.cxx
new file mode 100644
index 000000000000..1d603d0a4b93
--- /dev/null
+++ b/autodoc/source/display/toolkit/hf_linachain.cxx
@@ -0,0 +1,113 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/hf_linachain.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <toolkit/out_position.hxx>
+
+
+
+HF_LinkedNameChain::HF_LinkedNameChain( Xml::Element & o_rOut )
+ : HtmlMaker( o_rOut
+ >> *new Html::Paragraph
+ << new Html::ClassAttr("namechain") )
+{
+}
+
+HF_LinkedNameChain::~HF_LinkedNameChain()
+{
+}
+
+void
+HF_LinkedNameChain::Produce_CompleteChain( const output::Position & i_curPosition,
+ F_LinkMaker i_linkMaker ) const
+{
+ produce_Level(i_curPosition.RelatedNode(), i_curPosition, i_linkMaker);
+}
+
+void
+HF_LinkedNameChain::Produce_CompleteChain_forModule( const output::Position & i_curPosition,
+ F_LinkMaker i_linkMaker ) const
+{
+ if (i_curPosition.Depth() == 0)
+ return;
+ produce_Level(*i_curPosition.RelatedNode().Parent(), i_curPosition, i_linkMaker);
+}
+
+
+
+namespace
+{
+
+StreamStr aLinkBuf(200);
+
+}
+
+void
+HF_LinkedNameChain::produce_Level( output::Node & i_levelNode,
+ const output::Position & i_startPosition,
+ F_LinkMaker i_linkMaker ) const
+{
+ if ( i_levelNode.Depth() > 0 )
+ {
+ produce_Level( *i_levelNode.Parent(),
+ i_startPosition,
+ i_linkMaker );
+ }
+
+ aLinkBuf.reset();
+
+ String
+ sFileName = (*i_linkMaker)(i_levelNode.Name());
+ output::Position
+ aLevelPos(i_levelNode, sFileName);
+
+ i_startPosition.Get_LinkTo(aLinkBuf, aLevelPos);
+
+ if ( i_levelNode.Depth() > 0 )
+ {
+ CurOut()
+ >> *new Html::Link(aLinkBuf.c_str())
+ << new Html::ClassAttr("namechain")
+ << i_levelNode.Name();
+ CurOut() << " :: ";
+ }
+ else
+ {
+ CurOut()
+ >> *new Html::Link(aLinkBuf.c_str())
+ << new Html::ClassAttr("namechain")
+ << "::";
+ CurOut() << " ";
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/hf_navi_main.cxx b/autodoc/source/display/toolkit/hf_navi_main.cxx
new file mode 100644
index 000000000000..ab378a153bca
--- /dev/null
+++ b/autodoc/source/display/toolkit/hf_navi_main.cxx
@@ -0,0 +1,240 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/hf_navi_main.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+
+
+
+//******************** MainItem and derived ones ***************//
+class HF_MainItem : public HtmlMaker
+{
+ public:
+ virtual ~HF_MainItem() {}
+ void Produce_Item() const { do_ProduceItem(); }
+ protected:
+ HF_MainItem(
+ Xml::Element & o_out )
+ : HtmlMaker(o_out) {}
+ private:
+ virtual void do_ProduceItem() const = 0;
+};
+
+
+namespace
+{
+
+class StdItem : public HF_MainItem
+{
+ public:
+ StdItem(
+ Xml::Element & o_out,
+ const char * i_sText,
+ const char * i_sLink );
+
+ ~StdItem();
+ private:
+ virtual void do_ProduceItem() const;
+
+ // DATA
+ String sText;
+ String sLink;
+};
+
+class SelfItem : public HF_MainItem
+{
+ public:
+ SelfItem(
+ Xml::Element & o_out,
+ const char * i_sText );
+ ~SelfItem();
+ private:
+ virtual void do_ProduceItem() const;
+
+ // DATA
+ String sText;
+};
+
+class NoneItem : public HF_MainItem
+{
+ public:
+ NoneItem(
+ Xml::Element & o_out,
+ const char * i_sText );
+ ~NoneItem();
+ private:
+ virtual void do_ProduceItem() const;
+
+ // DATA
+ String sText;
+};
+
+} // anonymous namespace
+
+
+
+//******************** HF_NaviMainRow ***************//
+
+
+
+HF_NaviMainRow::HF_NaviMainRow( Xml::Element & o_out )
+ : HtmlMaker(o_out),
+ aItems(),
+ pRow(0)
+{
+ aItems.reserve(5);
+
+ pRow =
+ &( CurOut()
+ >> *new Html::Table
+ << new Html::ClassAttr("navimain")
+ << new Xml::AnAttribute( "border", "0" )
+ << new Xml::AnAttribute( "cellpadding", "3" )
+ >> *new Html::TableRow
+ );
+}
+
+HF_NaviMainRow::~HF_NaviMainRow()
+{
+ csv::erase_container_of_heap_ptrs(aItems);
+}
+
+void
+HF_NaviMainRow::Add_StdItem( const char * i_sText,
+ const char * i_sLink )
+{
+ aItems.push_back(new StdItem( *pRow,i_sText,i_sLink ));
+}
+
+void
+HF_NaviMainRow::Add_SelfItem( const char * i_sText )
+{
+ aItems.push_back(new SelfItem( *pRow,i_sText ));
+}
+
+void
+HF_NaviMainRow::Add_NoneItem( const char * i_sText )
+{
+ aItems.push_back(new NoneItem( *pRow,i_sText ));
+}
+
+void
+HF_NaviMainRow::Produce_Row()
+{
+ ItemList::iterator itEnd = aItems.end();
+ for ( ItemList::iterator iter = aItems.begin();
+ iter != itEnd;
+ ++iter )
+ {
+ (*iter)->Produce_Item();
+ }
+}
+
+
+
+
+//******************** MainItem and derived ones ***************//
+
+namespace
+{
+
+StdItem::StdItem( Xml::Element & o_out,
+ const char * i_sText,
+ const char * i_sLink )
+ : HF_MainItem(o_out),
+ sText(i_sText),
+ sLink(i_sLink)
+{
+}
+
+StdItem::~StdItem()
+{
+}
+
+void
+StdItem::do_ProduceItem() const
+{
+ Xml::Element &
+ rCell = CurOut() >>* new Html::TableCell;
+ rCell
+ << new Html::ClassAttr( "navimain" )
+ >> *new Html::Link(sLink.c_str())
+ << new Html::ClassAttr( "navimain" )
+ << sText.c_str();
+}
+
+SelfItem::SelfItem( Xml::Element & o_out,
+ const char * i_sText )
+ : HF_MainItem(o_out),
+ sText(i_sText)
+{
+}
+
+SelfItem::~SelfItem()
+{
+}
+
+void
+SelfItem::do_ProduceItem() const
+{
+ Xml::Element &
+ rCell = CurOut() >>* new Html::TableCell;
+ rCell
+ << new Html::ClassAttr( "navimainself" )
+ << sText.c_str();
+}
+
+NoneItem::NoneItem( Xml::Element & o_out,
+ const char * i_sText )
+ : HF_MainItem(o_out),
+ sText(i_sText)
+{
+}
+
+NoneItem::~NoneItem()
+{
+}
+
+void
+NoneItem::do_ProduceItem() const
+{
+ Xml::Element &
+ rCell = CurOut() >>* new Html::TableCell;
+ rCell
+ << new Html::ClassAttr( "navimainnone" )
+ << sText.c_str();
+}
+
+} // anonymous namespace
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/hf_navi_sub.cxx b/autodoc/source/display/toolkit/hf_navi_sub.cxx
new file mode 100644
index 000000000000..c983ddfe69ca
--- /dev/null
+++ b/autodoc/source/display/toolkit/hf_navi_sub.cxx
@@ -0,0 +1,105 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/hf_navi_sub.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+HF_NaviSubRow::HF_NaviSubRow( Xml::Element & o_rOut )
+ : HtmlMaker(o_rOut),
+ aRow(),
+ pMyRow(0)
+{
+ Setup_Row();
+}
+
+HF_NaviSubRow::~HF_NaviSubRow()
+{
+}
+
+void
+HF_NaviSubRow::AddItem( const String & i_sText,
+ const String & i_sLink,
+ bool i_bSwitchOn )
+{
+ aRow.push_back( SubRow_Item( SubRow_Data(i_sText,i_sLink),
+ i_bSwitchOn ));
+}
+
+void
+HF_NaviSubRow::SwitchOn( int i_nIndex )
+{
+ if ( i_nIndex < int(aRow.size()) )
+ aRow[i_nIndex].second = true;
+}
+
+void
+HF_NaviSubRow::Setup_Row()
+{
+ Html::Table *
+ pTable = new Html::Table;
+ CurOut()
+ >> *pTable
+ << new Html::ClassAttr("navisub")
+ << new Xml::AnAttribute( "border", "0" )
+ << new Xml::AnAttribute( "cellpadding", "0" );
+ pMyRow = &pTable->AddRow();
+}
+
+void
+HF_NaviSubRow::Produce_Row()
+{
+ for ( SubRow::const_iterator it = aRow.begin();
+ it != aRow.end();
+ ++it )
+ {
+ Xml::Element &
+ rCell = *pMyRow
+ >> *new Html::TableCell
+ << new Html::ClassAttr("navisub");
+ StreamLock sl(100);
+ Xml::Element &
+ rGoon = (*it).second
+ ? ( rCell
+ >> *new Html::Link( sl()
+ << "#"
+ << (*it).first.second
+ << c_str )
+ << new Html::ClassAttr("navisub")
+ )
+ : rCell;
+ rGoon
+ << (*it).first.first;
+ }
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/hf_title.cxx b/autodoc/source/display/toolkit/hf_title.cxx
new file mode 100644
index 000000000000..e68f7a1afb21
--- /dev/null
+++ b/autodoc/source/display/toolkit/hf_title.cxx
@@ -0,0 +1,172 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/hf_title.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <stdlib.h>
+
+
+const String C_sTitleBorder("0");
+const String C_sTitleWidth("100%");
+const String C_sTitlePadding("5");
+const String C_sTitleSpacing("3");
+
+const String C_sSubTitleBorder("1");
+const String C_sSubTitleWidth("100%");
+const String C_sSubTitlePadding("5");
+const String C_sSubTitleSpacing("0");
+const String C_sColSpan("colspan");
+
+
+HF_TitleTable::HF_TitleTable( Xml::Element & o_rOut )
+ : HtmlMaker(o_rOut >> *new Html::Table( C_sTitleBorder,
+ C_sTitleWidth,
+ C_sTitlePadding,
+ C_sTitleSpacing )
+ << new Html::ClassAttr("title-table")
+ << new Html::StyleAttr("margin-bottom:6pt;") )
+{
+}
+
+HF_TitleTable::~HF_TitleTable()
+{
+}
+
+void
+HF_TitleTable::Produce_Title( const char * i_title )
+{
+ Add_Row()
+ << new Html::ClassAttr("title")
+ << i_title;
+}
+
+void
+HF_TitleTable::Produce_Title( const char * i_annotations,
+ const char * i_title )
+{
+ if (csv::no_str(i_annotations))
+ {
+ Produce_Title(i_title);
+ return;
+ }
+
+ Xml::Element &
+ rRow = Add_Row();
+ rRow
+ << new Html::ClassAttr("title");
+
+ Xml::Element &
+ rTable = rRow
+ >> *new Html::Table()
+ << new Html::ClassAttr("title-table")
+ << new Html::WidthAttr("99%");
+ Xml::Element &
+ rInnerRow = rTable
+ >> *new Html::TableRow;
+ rInnerRow
+ >> *new Html::TableCell
+ << new Html::WidthAttr("25%")
+ << new Html::ClassAttr("title2")
+ << i_annotations;
+ rInnerRow
+ >> *new Html::TableCell
+ << new Html::WidthAttr("50%")
+ << new Html::ClassAttr("title")
+ << i_title;
+ rInnerRow
+ >> *new Html::TableCell
+ << new Html::WidthAttr("*");
+}
+
+Xml::Element &
+HF_TitleTable::Add_Row()
+{
+ return CurOut()
+ >> *new Html::TableRow
+ >> *new Html::TableCell;
+}
+
+
+inline const char *
+get_SubTitleCssClass(HF_SubTitleTable::E_SubLevel i_eSubTitleLevel)
+{
+ return i_eSubTitleLevel == HF_SubTitleTable::sublevel_1
+ ? "subtitle"
+ : "crosstitle";
+}
+
+
+HF_SubTitleTable::HF_SubTitleTable( Xml::Element & o_rOut,
+ const String & i_label,
+ const String & i_title,
+ int i_nColumns,
+ E_SubLevel i_eSubTitleLevel )
+ : HtmlMaker( o_rOut
+ << new Html::Label(i_label)
+ >> *new Html::Table( C_sSubTitleBorder,
+ C_sSubTitleWidth,
+ C_sSubTitlePadding,
+ C_sSubTitleSpacing )
+ << new Html::ClassAttr(get_SubTitleCssClass(i_eSubTitleLevel)) )
+{
+ csv_assert(i_nColumns > 0);
+
+ if (i_eSubTitleLevel == sublevel_3)
+ return;
+
+ Xml::Element &
+ rCell = CurOut()
+ >> *new Html::TableRow
+ >> *new Html::TableCell
+ << new Html::ClassAttr(get_SubTitleCssClass(i_eSubTitleLevel)) ;
+
+ if (i_nColumns > 1)
+ {
+ StreamLock sl(20);
+ String sColumns = sl() << i_nColumns << c_str;
+ rCell
+ << new Xml::AnAttribute(C_sColSpan, sColumns);
+ }
+ rCell
+ << i_title;
+}
+
+HF_SubTitleTable::~HF_SubTitleTable()
+{
+}
+
+Xml::Element &
+HF_SubTitleTable::Add_Row()
+{
+ return CurOut() >> *new Html::TableRow;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/htmlfile.cxx b/autodoc/source/display/toolkit/htmlfile.cxx
new file mode 100644
index 000000000000..f0387f485492
--- /dev/null
+++ b/autodoc/source/display/toolkit/htmlfile.cxx
@@ -0,0 +1,213 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/htmlfile.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/file.hxx>
+#include <udm/html/htmlitem.hxx>
+
+namespace
+{
+bool bUse_OOoFrameDiv = true;
+const String C_sOOoFrameDiv_IdlId("adc-idlref");
+}
+
+using namespace csi;
+using csi::xml::AnAttribute;
+
+DocuFile_Html::DocuFile_Html()
+ : sFilePath(),
+ sTitle(),
+ sLocation(),
+ sStyle(),
+ sCssFile(),
+ sCopyright(),
+ aBodyData(),
+ aBuffer(60000) // Grows dynamically, when necessary.
+{
+}
+
+void
+DocuFile_Html::SetLocation( const csv::ploc::Path & i_rFilePath )
+{
+ StreamLock sPath(1000);
+ i_rFilePath.Get( sPath() );
+
+ sFilePath = sPath().c_str();
+}
+
+void
+DocuFile_Html::SetTitle( const char * i_sTitle )
+{
+ sTitle = i_sTitle;
+}
+
+void
+DocuFile_Html::SetRelativeCssPath( const char * i_sCssFile_relativePath )
+{
+ sCssFile = i_sCssFile_relativePath;
+}
+
+void
+DocuFile_Html::SetCopyright( const char * i_sCopyright )
+{
+ sCopyright = i_sCopyright;
+}
+
+void
+DocuFile_Html::EmptyBody()
+{
+ aBodyData.SetContent(0);
+
+ if (bUse_OOoFrameDiv)
+ {
+ // Insert <div> tag to allow better formatting for OOo.
+ aBodyData
+ << new xml::XmlCode("<div id=\"")
+ << new xml::XmlCode(C_sOOoFrameDiv_IdlId)
+ << new xml::XmlCode("\">\n\n");
+ }
+
+ aBodyData
+ >> *new html::Label( "_top_" )
+ << " ";
+}
+
+bool
+DocuFile_Html::CreateFile()
+{
+ csv::File aFile(sFilePath, csv::CFM_CREATE);
+ if (NOT aFile.open())
+ {
+ Cerr() << "Can't create file " << sFilePath << "." << Endl();
+ return false;
+ }
+
+ WriteHeader(aFile);
+ WriteBody(aFile);
+
+ // Write end
+ static const char sCompletion[] = "\n</html>\n";
+ aFile.write( sCompletion );
+
+ aFile.close();
+ Cout() << '.' << Flush();
+ return true;
+}
+
+
+void
+DocuFile_Html::WriteHeader( csv::File & io_aFile )
+{
+ aBuffer.reset();
+
+ static const char s1[] =
+ "<html>\n<head>\n<title>";
+ static const char s2[] =
+ "</title>\n"
+ "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
+
+ aBuffer.write( s1 );
+ aBuffer.write( sTitle );
+ aBuffer.write( s2 );
+
+
+ if (NOT sCssFile.empty())
+ {
+ static const char s3[] =
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
+ static const char s4[] =
+ "\">\n";
+
+ aBuffer.write(s3);
+ aBuffer.write(sCssFile);
+ aBuffer.write(s4);
+ }
+
+ if (NOT sStyle.empty())
+ {
+ static const char s5[] =
+ "<style>";
+ static const char s6[] =
+ "</style>\n";
+
+ aBuffer.write(s5);
+ aBuffer.write(sStyle);
+ aBuffer.write(s6);
+ }
+
+ static const char s7[] =
+ "</head>\n";
+ aBuffer.write(s7);
+
+ io_aFile.write(aBuffer.c_str(), aBuffer.size());
+}
+
+void
+DocuFile_Html::WriteBody( csv::File & io_aFile )
+{
+ aBuffer.reset();
+
+ aBodyData
+ >> *new html::Link( "#_top_" )
+ << "Top of Page";
+
+ if ( sCopyright.length() > 0 )
+ {
+ aBodyData
+ << new xml::XmlCode("<hr size=\"3\">");
+
+ aBodyData
+ >> *new html::Paragraph
+ << new html::ClassAttr( "copyright" )
+ << new xml::AnAttribute( "align", "center" )
+ << new xml::XmlCode(sCopyright);
+ }
+
+ if (bUse_OOoFrameDiv)
+ {
+ // Insert <div> tag to allow better formatting for OOo.
+ aBodyData
+ << new xml::XmlCode("\n</div> <!-- id=\"")
+ << new xml::XmlCode(C_sOOoFrameDiv_IdlId)
+ << new xml::XmlCode("\" -->\n");
+ }
+
+ aBodyData.WriteOut(aBuffer);
+ io_aFile.write(aBuffer.c_str(), aBuffer.size());
+}
+
+
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/makefile.mk b/autodoc/source/display/toolkit/makefile.mk
new file mode 100644
index 000000000000..ab374990eb7a
--- /dev/null
+++ b/autodoc/source/display/toolkit/makefile.mk
@@ -0,0 +1,64 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=display_toolkit
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/hf_docentry.obj \
+ $(OBJ)$/hf_funcdecl.obj \
+ $(OBJ)$/hf_linachain.obj \
+ $(OBJ)$/hf_navi_main.obj \
+ $(OBJ)$/hf_navi_sub.obj \
+ $(OBJ)$/hf_title.obj \
+ $(OBJ)$/htmlfile.obj \
+ $(OBJ)$/out_node.obj \
+ $(OBJ)$/out_position.obj \
+ $(OBJ)$/out_tree.obj \
+ $(OBJ)$/outputstack.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/display/toolkit/out_node.cxx b/autodoc/source/display/toolkit/out_node.cxx
new file mode 100644
index 000000000000..fb6dc1980a06
--- /dev/null
+++ b/autodoc/source/display/toolkit/out_node.cxx
@@ -0,0 +1,192 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/out_node.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <algorithm>
+
+
+namespace output
+{
+
+
+namespace
+{
+
+struct Less_NodePtr
+{
+ bool operator()(
+ Node * p1,
+ Node * p2 ) const
+ { return p1->Name() < p2->Name(); }
+};
+
+struct Less_NodePtr C_Less_NodePtr;
+
+
+Node C_aNullNode(Node::null_object);
+
+
+} // namepace anonymous
+
+
+//********************** Node ***************************//
+
+
+Node::Node()
+ : sName(),
+ pParent(0),
+ aChildren(),
+ nDepth(0),
+ nNameRoomId(0)
+{
+}
+
+Node::Node( E_NullObject )
+ : sName(),
+ pParent(0),
+ aChildren(),
+ nDepth(-1),
+ nNameRoomId(0)
+{
+}
+
+Node::Node( const String & i_name,
+ Node & i_parent )
+ : sName(i_name),
+ pParent(&i_parent),
+ aChildren(),
+ nDepth(i_parent.Depth()+1),
+ nNameRoomId(0)
+{
+}
+
+Node::~Node()
+{
+ for ( List::iterator it = aChildren.begin();
+ it != aChildren.end();
+ ++it )
+ {
+ delete *it;
+ }
+}
+
+Node &
+Node::Provide_Child( const String & i_name )
+{
+ Node *
+ ret = find_Child(i_name);
+ if (ret != 0)
+ return *ret;
+ return add_Child(i_name);
+}
+
+void
+Node::Get_Path( StreamStr & o_result,
+ intt i_maxDepth ) const
+{
+ // Intentionally 'i_maxDepth != 0', so max_Depth == -1 sets no limit:
+ if (i_maxDepth != 0)
+ {
+ if (pParent != 0)
+ pParent->Get_Path(o_result, i_maxDepth-1);
+ o_result << sName << '/';
+ }
+}
+
+void
+Node::Get_Chain( StringVector & o_result,
+ intt i_maxDepth ) const
+{
+ if (i_maxDepth != 0)
+ {
+ // This is called also for the toplevel Node,
+ // but there happens nothing:
+ if (pParent != 0)
+ {
+ pParent->Get_Chain(o_result, i_maxDepth-1);
+ o_result.push_back(sName);
+ }
+ }
+}
+
+Node *
+Node::find_Child( const String & i_name )
+{
+ Node aSearch;
+ aSearch.sName = i_name;
+
+ List::const_iterator
+ ret = std::lower_bound( aChildren.begin(),
+ aChildren.end(),
+ &aSearch,
+ C_Less_NodePtr );
+ if ( ret != aChildren.end() ? (*ret)->Name() == i_name : false )
+ return *ret;
+
+ return 0;
+}
+
+Node &
+Node::add_Child( const String & i_name )
+{
+ DYN Node *
+ pNew = new Node(i_name,*this);
+ aChildren.insert( std::lower_bound( aChildren.begin(),
+ aChildren.end(),
+ pNew,
+ C_Less_NodePtr ),
+ pNew );
+ return *pNew;
+}
+
+Node &
+Node::provide_Child( StringVector::const_iterator i_next,
+ StringVector::const_iterator i_end )
+{
+ if (i_next == i_end)
+ return *this;
+ return Provide_Child(*i_next).provide_Child(i_next+1,i_end);
+}
+
+
+
+
+Node &
+Node::Null_()
+{
+ return C_aNullNode;
+}
+
+
+} // namespace output
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/out_position.cxx b/autodoc/source/display/toolkit/out_position.cxx
new file mode 100644
index 000000000000..efb4495fb0b4
--- /dev/null
+++ b/autodoc/source/display/toolkit/out_position.cxx
@@ -0,0 +1,242 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/out_position.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+namespace output
+{
+
+
+
+namespace
+{
+
+const int C_nAssumedMaxLinkLength = 500;
+
+void move_ToParent(
+ Node * & io_node,
+ intt i_levels = 1 );
+
+void
+move_ToParent( Node * & io_node,
+ intt i_levels )
+{
+ for ( intt n = 0; n < i_levels; ++n )
+ {
+ csv_assert(io_node != 0);
+ io_node = io_node->Parent();
+ }
+}
+
+
+
+} // namepace anonymous
+
+
+
+Position::Position()
+ : sFile(),
+ pDirectory(&Node::Null_())
+{
+}
+
+
+Position::Position( Node & i_directory,
+ const String & i_file )
+ : sFile(i_file),
+ pDirectory(&i_directory)
+{
+}
+
+Position::Position( const Position & i_directory,
+ const String & i_sDifferentFile )
+ : sFile(i_sDifferentFile),
+ pDirectory(i_directory.pDirectory)
+{
+}
+
+
+Position::~Position()
+{
+}
+
+
+Position &
+Position::operator=( Node & i_node )
+{
+ pDirectory = &i_node;
+ sFile.clear();
+ return *this;
+}
+
+Position &
+Position::operator+=( const String & i_nodeName )
+{
+ csv_assert(pDirectory != 0);
+
+ pDirectory = &pDirectory->Provide_Child(i_nodeName);
+ sFile.clear();
+
+ return *this;
+}
+
+Position &
+Position::operator-=( intt i_levels )
+{
+ csv_assert(pDirectory != 0);
+
+ for ( intt i = i_levels; i > 0; --i )
+ {
+ pDirectory = pDirectory->Parent();
+ if (pDirectory == 0)
+ {
+ pDirectory = &Node::Null_();
+ i = 0;
+ }
+ }
+ sFile.clear();
+
+ return *this;
+}
+
+String
+Position::LinkToRoot( const String & ) const
+{
+ StreamLock sl(C_nAssumedMaxLinkLength);
+ return sl() << get_UpLink(Depth()) << c_str;
+}
+
+void
+Position::Get_LinkTo( StreamStr & o_result,
+ const Position & i_destination,
+ const String & i_localLabel ) const
+{
+ Node * p1 = pDirectory;
+ Node * p2 = i_destination.pDirectory;
+
+ intt diff = Depth() - i_destination.Depth();
+ intt pathLength1 = 0;
+ intt pathLength2 = 0;
+
+ if ( diff > 0 )
+ {
+ pathLength1 = diff;
+ move_ToParent(p1,pathLength1);
+ }
+ else if ( diff < 0 )
+ {
+ pathLength2 = -diff;
+ move_ToParent(p2,pathLength2);
+ }
+
+ while ( p1 != p2 )
+ {
+ move_ToParent(p1);
+ move_ToParent(p2);
+ ++pathLength1;
+ ++pathLength2;
+ }
+
+ o_result << get_UpLink(pathLength1);
+ i_destination.pDirectory->Get_Path(o_result, pathLength2);
+ o_result << i_destination.sFile;
+ if (i_localLabel.length())
+ o_result << "#" << i_localLabel;
+}
+
+void
+Position::Get_LinkToRoot( StreamStr & o_result,
+ const String & ) const
+{
+ o_result << get_UpLink(Depth());
+}
+
+void
+Position::Set( Node & i_node,
+ const String & i_file )
+{
+ sFile = i_file;
+ pDirectory = &i_node;
+}
+
+
+
+
+const char *
+get_UpLink(uintt i_depth)
+{
+ static const uintt
+ C_nMaxDepth = 30;
+ static const char
+ C_sUpLinkArray[3*C_nMaxDepth+1] =
+ "../../../../../../../../../../"
+ "../../../../../../../../../../"
+ "../../../../../../../../../../";
+ static const char *
+ C_sUpLink = &C_sUpLinkArray[0];
+
+ if ( i_depth <= C_nMaxDepth )
+ {
+ return C_sUpLink + 3*(C_nMaxDepth - i_depth);
+ }
+ else
+ { // not THREAD fast
+ static std::vector<char>
+ aRet;
+ uintt nNeededSize = i_depth * 3 + 1;
+
+ if (aRet.size() < nNeededSize)
+ {
+ aRet.resize(nNeededSize);
+ char * pEnd = &aRet[nNeededSize-1];
+ *pEnd = '\0';
+
+ for ( char * pFill = &(*aRet.begin());
+ pFill != pEnd;
+ pFill += 3 )
+ {
+ memcpy(pFill, C_sUpLink, 3);
+ }
+ } // end if
+
+ return &aRet[aRet.size() - 1 - 3*i_depth];
+ }
+}
+
+
+
+
+} // namespace output
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/out_tree.cxx b/autodoc/source/display/toolkit/out_tree.cxx
new file mode 100644
index 000000000000..b0330671bd27
--- /dev/null
+++ b/autodoc/source/display/toolkit/out_tree.cxx
@@ -0,0 +1,56 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/out_tree.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+namespace output
+{
+
+Tree::Tree()
+ : pRoot(new Node),
+ pNamesRoot(pRoot.Ptr()),
+ pIndexRoot(pRoot.Ptr()),
+ pProjectsRoot(pRoot.Ptr()),
+ aOverview()
+{
+}
+
+Tree::~Tree()
+{
+}
+
+
+
+} // namespace output
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/toolkit/outputstack.cxx b/autodoc/source/display/toolkit/outputstack.cxx
new file mode 100644
index 000000000000..296e77b412f8
--- /dev/null
+++ b/autodoc/source/display/toolkit/outputstack.cxx
@@ -0,0 +1,60 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <toolkit/outputstack.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+OutputStack::OutputStack()
+{
+}
+
+OutputStack::~OutputStack()
+{
+}
+
+void
+OutputStack::Enter( csi::xml::Element & io_rDestination )
+{
+ aCurDestination.push(&io_rDestination);
+}
+
+void
+OutputStack::Leave()
+{
+ csv_assert( NOT aCurDestination.empty() );
+ aCurDestination.pop();
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/adc_cl.cxx b/autodoc/source/exes/adc_uni/adc_cl.cxx
new file mode 100644
index 000000000000..45c98b7c7548
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/adc_cl.cxx
@@ -0,0 +1,402 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adc_cl.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <algorithm>
+#include <cosv/x.hxx>
+#include <cosv/file.hxx>
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/ary.hxx>
+#include <tools/tkpchars.hxx>
+#include <adc_msg.hxx>
+#include "adc_cmds.hxx"
+#include "adc_cmd_parse.hxx"
+#include "cmd_sincedata.hxx"
+
+
+namespace autodoc
+{
+
+CommandLine * CommandLine::pTheInstance_ = 0;
+
+const char * const C_sUserGuide =
+"\n\n\n"
+" General Use of Autodoc\n"
+" ----------------------\n"
+"\n"
+" Example for C++:\n"
+"\n"
+" -html <OutputDirectory> -name \"UDK 3.x anything\" -lg c++\n"
+" -p <ProjName> <ProjectRootDirectory>\n"
+" -t <SourceDir_relativeToProjectRoot>\n"
+"\n"
+" There may be several projects specified by -p.\n"
+"\n"
+"\n"
+" Example for IDL:\n"
+"\n"
+" -html <OutputDirectory> -name \"UDK 3.x anything\" -lg idl\n"
+" -t <SourceDir1> <SourceDir2>\n"
+"\n"
+" For both languages, instead of or in addition to -t may be\n"
+" used -d (no subdirectories) or -f (just one file). There can\n"
+" be multiple arguments after each of these options (-t -d -f).\n"
+"\n"
+"\n"
+" Replacing @since Tag Content\n"
+" ----------------------------\n"
+"\n"
+" In both languages you can give a transformation file to replace\n"
+" entries in @since tags by different entries.\n"
+" This file is given by the option\n"
+" -sincefile <TransformationFilePath>\n"
+" This option has to appear between the -html and the -lg option.\n"
+" Example:\n"
+" -html <OutputDirectory> -sincefile replacesince.txt\n"
+" -name \"UDK 3.x anything\" -lg idl -t <SourceDir>\n"
+"\n"
+"\n";
+
+CommandLine::CommandLine()
+ : nDebugStyle(0),
+ pSinceTransformator(new command::SinceTagTransformationData),
+ aCommands(),
+ bInitOk(false),
+ pCommand_CreateHtml(0),
+ pReposy( & ary::Repository::Create_() ),
+ bCpp(false),
+ bIdl(false)
+{
+ csv_assert(pTheInstance_ == 0);
+ pTheInstance_ = this;
+}
+
+CommandLine::~CommandLine()
+{
+ csv::erase_container_of_heap_ptrs(aCommands);
+ pTheInstance_ = 0;
+}
+
+int
+CommandLine::Run() const
+{
+ Cout() << "\nAutodoc version 2.2.5"
+ << "\n---------------------"
+ << "\n" << Endl();
+
+ bool
+ ok = true;
+ for ( CommandList::const_iterator it = aCommands.begin();
+ ok AND it != aCommands.end();
+ ++it )
+ {
+ ok = (*it)->Run();
+ }
+
+ if (pCommand_CreateHtml != 0)
+ {
+ StreamStr aDiagnosticMessagesFile(700);
+ aDiagnosticMessagesFile
+ << pCommand_CreateHtml->OutputDir()
+ << csv::ploc::Delimiter()
+ << "Autodoc_DiagnosticMessages.txt";
+ TheMessages().WriteFile(aDiagnosticMessagesFile.c_str());
+ }
+
+ return ok ? 0 : 1;
+}
+
+CommandLine &
+CommandLine::Get_()
+{
+ csv_assert(pTheInstance_ != 0);
+ return *pTheInstance_;
+}
+
+bool
+CommandLine::DoesTransform_SinceTag() const
+{
+ return pSinceTransformator->DoesTransform();
+}
+
+//bool
+//CommandLine::Strip_SinceTagText( String & io_sSinceTagValue ) const
+//{
+// return pSinceTransformator->StripSinceTagText(io_sSinceTagValue);
+//}
+
+const String &
+CommandLine::DisplayOf_SinceTagValue( const String & i_sVersionNumber ) const
+{
+ return pSinceTransformator->DisplayOf(i_sVersionNumber);
+}
+
+void
+CommandLine::do_Init( int argc,
+ char * argv[] )
+{
+ try
+ {
+ bInitOk = false;
+ StringVector aParameters;
+
+ char * * itpEnd = &argv[0] + argc;
+ for ( char * * itp = &argv[1]; itp != itpEnd; ++itp )
+ {
+ if ( strncmp(*itp, "-I:", 3) != 0 )
+ aParameters.push_back(String(*itp));
+ else
+ load_IncludedCommands(aParameters, (*itp)+3);
+ }
+
+ StringVector::const_iterator itEnd = aParameters.end();
+ for ( StringVector::const_iterator it = aParameters.begin();
+ it != itEnd;
+ )
+ {
+ if ( *it == command::C_opt_Verbose )
+ do_clVerbose(it,itEnd);
+ else if ( *it == command::C_opt_LangAll
+ OR *it == command::C_opt_Name
+ OR *it == command::C_opt_DevmanFile )
+ do_clParse(it,itEnd);
+ else if (*it == command::C_opt_CreateHtml)
+ do_clCreateHtml(it,itEnd);
+ else if (*it == command::C_opt_SinceFile)
+ do_clSinceFile(it,itEnd);
+ else if (*it == command::C_opt_ExternNamespace)
+ {
+ sExternNamespace = *(++it);
+ ++it;
+ if ( strncmp(sExternNamespace.c_str(), "::", 2) != 0)
+ {
+ throw command::X_CommandLine(
+ "-extnsp needs an absolute qualified namespace, starting with \"::\"."
+ );
+ }
+ }
+ else if (*it == command::C_opt_ExternRoot)
+ {
+ ++it;
+ StreamLock sl(1000);
+ if ( csv::compare(*it, 0, "http://", 7) != 0 )
+ {
+ sl() << "http://" << *it;
+ }
+ if ( *(sl().end()-1) != '/')
+ sl() << '/';
+ sExternRoot = sl().c_str();
+
+ ++it;
+ }
+// else if (*it == command::C_opt_CreateXml)
+// do_clCreateXml(it,itEnd);
+// else if (command::C_opt_Load)
+// do_clLoad(it,itEnd);
+// else if (*it == command::C_opt_Save)
+// do_clSave(it,itEnd);
+ else if (*it == "-h" OR *it == "-?" OR *it == "?")
+ // Leads to displaying help, because bInitOk stays on false.
+ return;
+ else if ( *it == command::C_opt_Parse )
+ // Only for backwards compatibility.
+ // Just ignore "-parse".
+ ++it;
+ else
+ {
+ StreamLock sl(200);
+ throw command::X_CommandLine(
+ sl() << "Unknown commandline option \""
+ << *it
+ << "\"."
+ << c_str );
+ }
+ } // end for
+ sort_Commands();
+
+ bInitOk = true;
+
+ } // end try
+ catch ( command::X_CommandLine & xxx )
+ {
+ xxx.Report( Cerr() );
+ }
+ catch ( csv::Exception & xxx )
+ {
+ xxx.GetInfo( Cerr() );
+ }
+}
+
+void
+CommandLine::do_PrintUse() const
+{
+ Cout() << C_sUserGuide << Endl();
+}
+
+bool
+CommandLine::inq_CheckParameters() const
+{
+ if (NOT bInitOk OR aCommands.size() == 0)
+ return false;
+ return true;
+}
+
+void
+CommandLine::load_IncludedCommands( StringVector & out,
+ const char * i_filePath )
+{
+ CharacterSource
+ aIncludedCommands;
+ csv::File
+ aFile(i_filePath, csv::CFM_READ);
+ if (NOT aFile.open())
+ {
+ Cerr() << "Command include file \""
+ << i_filePath
+ << "\" not found."
+ << Endl();
+ throw command::X_CommandLine("Invalid file in option -I:<command-file>.");
+ }
+ aIncludedCommands.LoadText(aFile);
+ aFile.close();
+
+ bool bInToken = false;
+ StreamLock aTransmit(200);
+ for ( ; NOT aIncludedCommands.IsFinished(); aIncludedCommands.MoveOn() )
+ {
+ if (bInToken)
+ {
+ if (aIncludedCommands.CurChar() <= 32)
+ {
+ const char *
+ pToken = aIncludedCommands.CutToken();
+ bInToken = false;
+
+ if ( strncmp(pToken, "-I:", 3) != 0 )
+ {
+ aTransmit().seekp(0);
+ aTransmit() << pToken;
+ aTransmit().replace_all('\\', *csv::ploc::Delimiter());
+ aTransmit().replace_all('/', *csv::ploc::Delimiter());
+ out.push_back(String(aTransmit().c_str()));
+ }
+ else
+ load_IncludedCommands(out, pToken+3);
+ }
+ }
+ else
+ {
+ if (aIncludedCommands.CurChar() > 32)
+ {
+ aIncludedCommands.CutToken();
+ bInToken = true;
+ }
+ } // endif (bInToken) else
+
+ } // end while()
+}
+
+namespace
+{
+inline int
+v_nr(StringVector::const_iterator it)
+{
+ return int( *(*it).c_str() ) - int('0');
+}
+} // anonymous namespace
+
+void
+CommandLine::do_clVerbose( opt_iter & it,
+ opt_iter itEnd )
+{
+ ++it;
+ if ( it == itEnd ? true : v_nr(it) < 0 OR v_nr(it) > 7 )
+ throw command::X_CommandLine( "Missing or invalid number in -v option." );
+ nDebugStyle = v_nr(it);
+ ++it;
+}
+
+void
+CommandLine::do_clParse( opt_iter & it,
+ opt_iter itEnd )
+{
+ command::Command *
+ pCmd_Parse = new command::Parse;
+ pCmd_Parse->Init(it, itEnd);
+ aCommands.push_back(pCmd_Parse);
+}
+
+void
+CommandLine::do_clCreateHtml( opt_iter & it,
+ opt_iter itEnd )
+{
+ pCommand_CreateHtml = new command::CreateHtml;
+ pCommand_CreateHtml->Init(it, itEnd);
+ aCommands.push_back(pCommand_CreateHtml);
+}
+
+void
+CommandLine::do_clSinceFile( opt_iter & it,
+ opt_iter itEnd )
+{
+ pSinceTransformator->Init(it, itEnd);
+}
+
+
+namespace
+{
+
+struct Less_RunningRank
+{
+ bool operator()(
+ const command::Command * const &
+ i1,
+ const command::Command * const &
+ i2 ) const
+ { return i1->RunningRank() < i2->RunningRank(); }
+};
+
+} // anonymous namespace
+
+
+
+void
+CommandLine::sort_Commands()
+{
+ std::sort( aCommands.begin(),
+ aCommands.end(),
+ Less_RunningRank() );
+}
+
+} // namespace autodoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/adc_cmd.hxx b/autodoc/source/exes/adc_uni/adc_cmd.hxx
new file mode 100644
index 000000000000..47e5ab7edfe0
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/adc_cmd.hxx
@@ -0,0 +1,134 @@
+/* -*- 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 ADC_ADC_CMD_HXX
+#define ADC_ADC_CMD_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/comdline.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace autodoc
+{
+namespace command
+{
+
+/** Context for a command, which can be read from the command line.
+*/
+class Context
+{
+ public:
+ typedef StringVector::const_iterator opt_iter;
+
+ virtual ~Context() {}
+
+ void Init(
+ opt_iter & it,
+ opt_iter itEnd );
+ private:
+ virtual void do_Init(
+ opt_iter & it,
+ opt_iter itEnd ) = 0;
+};
+
+// IMPLEMENTATION
+inline void
+Context::Init( opt_iter & i_nCurArgsBegin,
+ opt_iter i_nEndOfAllArgs )
+
+{ do_Init(i_nCurArgsBegin, i_nEndOfAllArgs); }
+
+
+
+/** Interface for commands, autodoc is able to perform.
+*/
+class Command : public Context
+{
+ public:
+ /** Running ranks of the commands are to be maintained at one location:
+ Here!
+ */
+ enum E_Ranks
+ {
+ rank_Load = 10,
+ rank_Parse = 20,
+ rank_Save = 30,
+ rank_CreateHtml = 40,
+ rank_CreateXml = 50
+ };
+
+
+ bool Run() const;
+ int RunningRank() const;
+
+ private:
+ virtual bool do_Run() const = 0;
+ virtual int inq_RunningRank() const = 0;
+};
+
+// IMPLEMENTATION
+inline bool
+Command::Run() const
+{ return do_Run(); }
+inline int
+Command::RunningRank() const
+{ return inq_RunningRank(); }
+
+
+
+
+/** The exception thrown, if the command line is invalid.
+*/
+class X_CommandLine
+{
+ public:
+ X_CommandLine(
+ const char * i_sExplanation )
+ : sExplanation(i_sExplanation) {}
+
+ void Report(
+ std::ostream & o_rOut )
+ { o_rOut << "Error in command line: "
+ << sExplanation << Endl(); }
+ private:
+ String sExplanation;
+};
+
+
+
+
+} // namespace command
+} // namespace autodoc
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/adc_cmd_parse.cxx b/autodoc/source/exes/adc_uni/adc_cmd_parse.cxx
new file mode 100644
index 000000000000..88861f87ca2d
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/adc_cmd_parse.cxx
@@ -0,0 +1,345 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "adc_cmd_parse.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <adc_cl.hxx>
+#include "adc_cmds.hxx"
+#include "cmd_run.hxx"
+
+
+
+namespace autodoc
+{
+namespace command
+{
+
+namespace
+{
+
+const String C_FileEnding_hxx("*.hxx");
+const String C_FileEnding_h("*.h");
+const String C_FileEnding_idl("*.idl");
+const String C_FileEnding_java("*.java");
+
+inline void
+CHECK( bool b, const String & text )
+{
+ if (NOT b)
+ throw X_CommandLine( text );
+}
+
+} // anonymous namespace
+
+
+
+//************************** S_LanguageInfo ***********************//
+
+S_LanguageInfo::~S_LanguageInfo()
+{
+}
+
+void
+S_LanguageInfo::do_Init( opt_iter & it,
+ opt_iter itEnd )
+{
+ ++it; // Cur is language.
+ CHECKOPT( it != itEnd AND
+ ( *it == C_arg_Cplusplus OR
+ *it == C_arg_Idl OR
+ *it == C_arg_Java ),
+ "language",
+ C_opt_LangAll );
+
+ if ( *it == C_arg_Cplusplus ) {
+ eLanguage = cpp;
+ }
+ else if ( *it == C_arg_Idl ) {
+ eLanguage = idl;
+ }
+ else if ( *it == C_arg_Java ) {
+ eLanguage = java;
+ }
+ else {
+ csv_assert(false);
+ }
+
+ switch (eLanguage)
+ {
+ case cpp: aExtensions.push_back( C_FileEnding_hxx );
+ aExtensions.push_back( C_FileEnding_h );
+ CommandLine::Get_().Set_CppUsed();
+ break;
+ case idl: aExtensions.push_back( C_FileEnding_idl );
+ CommandLine::Get_().Set_IdlUsed();
+ break;
+ case java: aExtensions.push_back( C_FileEnding_java );
+ break;
+ default: // do nothing.
+ ;
+ }
+
+ ++it; // Cur is next option.
+}
+
+void
+S_LanguageInfo::InitExtensions( opt_iter & it,
+ opt_iter itEnd )
+{
+ ++it;
+ CHECKOPT( it != itEnd AND (*it).char_at(0) == '.',
+ "extensions",
+ C_opt_ExtensionsAll );
+
+ StreamLock slCheck(150);
+ slCheck() << C_opt_ExtensionsAll
+ << " used without previous "
+ << C_opt_LangAll;
+
+ CHECK( eLanguage != none,
+ slCheck().c_str() );
+
+ do {
+ aExtensions.push_back(*it);
+ ++it;
+ } while (it != itEnd AND (*it).char_at(0) == '.');
+}
+
+
+
+//************************** Parse ***********************//
+
+Parse::Parse()
+ : sRepositoryName(),
+ aGlobalLanguage(),
+ aProjects(),
+ sDevelopersManual_RefFilePath()
+{
+}
+
+Parse::~Parse()
+{
+ csv::erase_container_of_heap_ptrs(aProjects);
+}
+
+void
+Parse::do_Init( opt_iter & it,
+ opt_iter itEnd )
+{
+ for ( ; it != itEnd; )
+ {
+ if (*it == C_opt_Name)
+ do_clName(it, itEnd);
+ else if (*it == C_opt_LangAll)
+ aGlobalLanguage.Init(it, itEnd);
+ else if (*it == C_opt_ExtensionsAll)
+ aGlobalLanguage.InitExtensions(it, itEnd);
+ else if (*it == C_opt_DevmanFile)
+ do_clDevManual(it, itEnd);
+ else if (*it == C_opt_Project)
+ do_clProject(it, itEnd);
+ else if ( *it == C_opt_SourceTree
+ OR *it == C_opt_SourceDir
+ OR *it == C_opt_SourceFile )
+ do_clDefaultProject(it, itEnd);
+ else
+ break;
+ } // for
+}
+
+void
+Parse::do_clName( opt_iter & it,
+ opt_iter itEnd )
+{
+ ++it;
+ CHECKOPT( it != itEnd AND (*it).char_at(0) != '-',
+ "name",
+ C_opt_Name );
+ sRepositoryName = *it;
+ ++it;
+}
+
+void
+Parse::do_clDevManual( opt_iter & it,
+ opt_iter itEnd )
+{
+ ++it;
+ CHECKOPT( it != itEnd AND (*it).char_at(0) != '-',
+ "link file path",
+ C_opt_DevmanFile );
+ sDevelopersManual_RefFilePath = *it;
+ ++it;
+}
+
+void
+Parse::do_clProject( opt_iter & it,
+ opt_iter itEnd )
+{
+ if ( aProjects.size() == 1 )
+ {
+ if ( aProjects.front()->IsDefault() )
+ throw X_CommandLine( "Both, named projects and a default project, cannot be used together." );
+ }
+
+ S_ProjectData * dpProject = new S_ProjectData(aGlobalLanguage);
+ ++it;
+ dpProject->Init(it, itEnd);
+ aProjects.push_back(dpProject);
+}
+
+void
+Parse::do_clDefaultProject( opt_iter & it,
+ opt_iter itEnd )
+{
+ if ( aProjects.size() > 0 )
+ {
+ throw X_CommandLine( "Both, named projects and a default project, cannot be used together." );
+ }
+
+ S_ProjectData * dpProject = new S_ProjectData( aGlobalLanguage,
+ S_ProjectData::default_prj );
+ dpProject->Init(it, itEnd);
+ aProjects.push_back(dpProject);
+}
+
+bool
+Parse::do_Run() const
+{
+ run::Parser
+ aParser(*this);
+ return aParser.Perform();
+}
+
+int
+Parse::inq_RunningRank() const
+{
+ return static_cast<int>(rank_Parse);
+}
+
+
+
+//************************** S_Sources ***********************//
+
+void
+S_Sources::do_Init( opt_iter & it,
+ opt_iter itEnd )
+{
+ StringVector *
+ pList = 0;
+ csv_assert((*it)[0] == '-');
+
+ for ( ; it != itEnd; ++it)
+ {
+ if ((*it)[0] == '-')
+ {
+ if (*it == C_opt_SourceTree)
+ pList = &aTrees;
+ else if (*it == C_opt_SourceDir)
+ pList = &aDirectories;
+ else if (*it == C_opt_SourceFile)
+ pList = &aFiles;
+ else
+ return;
+ }
+ else
+ pList->push_back(*it);
+ } // end for
+}
+
+
+
+//************************** S_ProjectData ***********************//
+
+
+S_ProjectData::S_ProjectData( const S_LanguageInfo & i_globalLanguage )
+ : sName(),
+ aRootDirectory(),
+ aLanguage(i_globalLanguage),
+ aFiles(),
+ bIsDefault(false)
+{
+}
+
+S_ProjectData::S_ProjectData( const S_LanguageInfo & i_globalLanguage,
+ E_Default )
+ : sName(),
+ aRootDirectory("."),
+ aLanguage(i_globalLanguage),
+ aFiles(),
+ bIsDefault(true)
+{
+}
+
+S_ProjectData::~S_ProjectData()
+{
+}
+
+void
+S_ProjectData::do_Init( opt_iter & it,
+ opt_iter itEnd )
+{
+ if (NOT IsDefault())
+ {
+ CHECKOPT( it != itEnd AND (*it).char_at(0) != '-',
+ "name",
+ C_opt_Project );
+ sName = *it;
+ ++it;
+
+ CHECKOPT( it != itEnd AND (*it).char_at(0) != '-',
+ "root directory",
+ C_opt_Project );
+ aRootDirectory.Set((*it).c_str(), true);
+ ++it;
+ }
+
+ for ( ; it != itEnd; )
+ {
+ if ( *it == C_opt_SourceTree
+ OR *it == C_opt_SourceDir
+ OR *it == C_opt_SourceFile )
+ aFiles.Init(it, itEnd);
+// else if (*it == C_opt_Lang)
+// aLanguage.Init(it, itEnd);
+// else if (*it == C_opt_Extensions)
+// aLanguage.InitExtensions(it, itEnd);
+ else
+ break;
+ } // for
+}
+
+} // namespace command
+} // namespace autodoc
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/adc_cmd_parse.hxx b/autodoc/source/exes/adc_uni/adc_cmd_parse.hxx
new file mode 100644
index 000000000000..dc78f3d4a2fd
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/adc_cmd_parse.hxx
@@ -0,0 +1,211 @@
+/* -*- 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 ADC_ADC_CMD_PARSE_HXX
+#define ADC_ADC_CMD_PARSE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "adc_cmd.hxx"
+ // COMPONENTS
+#include <cosv/ploc.hxx>
+ // PARAMETERS
+
+namespace autodoc
+{
+namespace command
+{
+
+/** A command context which holds the currently parsed programing language
+ and its valid file extensions.
+*/
+struct S_LanguageInfo : public Context
+{
+ enum E_ProgrammingLanguage
+ {
+ none,
+ cpp,
+ idl,
+ java
+ };
+ S_LanguageInfo()
+ : eLanguage(none),
+ aExtensions() {}
+ ~S_LanguageInfo();
+
+ void InitExtensions(
+ opt_iter & it,
+ opt_iter itEnd );
+ // DATA
+ E_ProgrammingLanguage
+ eLanguage;
+ StringVector aExtensions; // An empty string is possible and means exactly that: files without extension.
+
+ private:
+ // Interface Context:
+ virtual void do_Init(
+ opt_iter & it,
+ opt_iter itEnd );
+};
+
+
+class S_ProjectData;
+
+
+/** A command that parses source code into the Autodoc Repository.
+*/
+class Parse : public Command
+{
+ public:
+ typedef std::vector< DYN S_ProjectData * > ProjectList;
+ typedef ProjectList::const_iterator ProjectIterator;
+
+ Parse();
+ ~Parse();
+
+ // INQUIRY
+ const String & ReposyName() const;
+ const S_LanguageInfo &
+ GlobalLanguage() const;
+ ProjectIterator ProjectsBegin() const;
+ ProjectIterator ProjectsEnd() const;
+ const String & DevelopersManual_RefFilePath() const
+ { return sDevelopersManual_RefFilePath; }
+
+ private:
+ // Interface Context:
+ virtual void do_Init(
+ opt_iter & i_nCurArgsBegin,
+ opt_iter i_nEndOfAllArgs );
+ // Interface Command:
+ virtual bool do_Run() const;
+ virtual int inq_RunningRank() const;
+
+ // Locals
+ void do_clName(
+ opt_iter & it,
+ opt_iter itEnd );
+ void do_clDevManual(
+ opt_iter & it,
+ opt_iter itEnd );
+ void do_clProject(
+ opt_iter & it,
+ opt_iter itEnd );
+ void do_clDefaultProject(
+ opt_iter & it,
+ opt_iter itEnd );
+
+ // DATA
+ String sRepositoryName;
+ S_LanguageInfo aGlobalLanguage;
+
+ ProjectList aProjects;
+
+ String sDevelopersManual_RefFilePath;
+};
+
+inline const String &
+Parse::ReposyName() const
+ { return sRepositoryName; }
+inline const S_LanguageInfo &
+Parse::GlobalLanguage() const
+ { return aGlobalLanguage; }
+inline Parse::ProjectIterator
+Parse::ProjectsBegin() const
+ { return aProjects.begin(); }
+inline Parse::ProjectIterator
+Parse::ProjectsEnd() const
+ { return aProjects.end(); }
+//inline const String &
+//Parse::DevelopersManual_RefFilePath() const
+// { return sDevelopersManual_RefFilePath; }
+//inline const String &
+//Parse::DevelopersManual_HtmlRoot() const
+// { return sDevelopersManual_HtmlRoot; }
+
+
+struct S_Sources : public Context
+{
+ StringVector aTrees;
+ StringVector aDirectories;
+ StringVector aFiles;
+
+ private:
+ // Interface Context:
+ virtual void do_Init(
+ opt_iter & it,
+ opt_iter itEnd );
+};
+
+class S_ProjectData : public Context
+{
+ public:
+ enum E_Default { default_prj };
+
+ S_ProjectData(
+ const S_LanguageInfo &
+ i_globalLanguage );
+ S_ProjectData(
+ const S_LanguageInfo &
+ i_globalLanguage,
+ E_Default unused );
+ ~S_ProjectData();
+
+ bool IsDefault() const { return bIsDefault; }
+ const String & Name() const { return sName; }
+ const csv::ploc::Path &
+ RootDirectory() const { return aRootDirectory; }
+ const S_LanguageInfo &
+ Language() const { return aLanguage; }
+ const S_Sources Sources() const { return aFiles; }
+
+ private:
+ // Interface Context:
+ virtual void do_Init(
+ opt_iter & it,
+ opt_iter itEnd );
+ // Locals
+
+ // DATA
+ String sName;
+ csv::ploc::Path aRootDirectory;
+ S_LanguageInfo aLanguage;
+ S_Sources aFiles;
+ bool bIsDefault;
+};
+
+
+} // namespace command
+} // namespace autodoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/adc_cmds.cxx b/autodoc/source/exes/adc_uni/adc_cmds.cxx
new file mode 100644
index 000000000000..93f54a52ce6a
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/adc_cmds.cxx
@@ -0,0 +1,180 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "adc_cmds.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ary.hxx>
+#include <autodoc/displaying.hxx>
+#include <autodoc/dsp_html_std.hxx>
+#include <display/corframe.hxx>
+#include <adc_cl.hxx>
+
+
+namespace autodoc
+{
+namespace command
+{
+
+extern const String C_opt_Include("-I:");
+
+extern const String C_opt_Verbose("-v");
+
+extern const String C_opt_Parse("-parse");
+extern const String C_opt_Name("-name");
+extern const String C_opt_LangAll("-lg");
+extern const String C_opt_ExtensionsAll("-extg");
+extern const String C_opt_DevmanFile("-dvgfile");
+extern const String C_opt_SinceFile("-sincefile");
+
+extern const String C_arg_Cplusplus("c++");
+extern const String C_arg_Idl("idl");
+extern const String C_arg_Java("java");
+
+extern const String C_opt_Project("-p");
+//extern const String C_opt_Lang;
+//extern const String C_opt_Extensions;
+extern const String C_opt_SourceDir("-d");
+extern const String C_opt_SourceTree("-t");
+extern const String C_opt_SourceFile("-f");
+
+extern const String C_opt_CreateHtml("-html");
+extern const String C_opt_DevmanRoot("-dvgroot");
+
+//extern const String C_opt_CreateXml("-xml");
+//extern const String C_opt_Load("-load");
+//extern const String C_opt_Save("-save");
+
+extern const String C_opt_ExternNamespace("-extnsp");
+extern const String C_opt_ExternRoot("-extroot");
+
+
+
+//************************** CreateHTML ***********************//
+
+CreateHtml::CreateHtml()
+ : sOutputRootDirectory(),
+ sDevelopersManual_HtmlRoot()
+{
+}
+
+CreateHtml::~CreateHtml()
+{
+}
+
+void
+CreateHtml::do_Init( opt_iter & it,
+ opt_iter itEnd )
+{
+ ++it;
+ CHECKOPT( it != itEnd && (*it).char_at(0) != '-',
+ "output directory", C_opt_CreateHtml );
+ sOutputRootDirectory = *it;
+
+ for ( ++it;
+ it != itEnd AND (*it == C_opt_DevmanRoot);
+ ++it )
+ {
+ if (*it == C_opt_DevmanRoot)
+ {
+ ++it;
+ CHECKOPT( it != itEnd AND (*it).char_at(0) != '-',
+ "HTML root directory of Developers Guide",
+ C_opt_DevmanRoot );
+ sDevelopersManual_HtmlRoot = *it;
+ }
+ } // end for
+}
+
+bool
+CreateHtml::do_Run() const
+{
+ if ( CommandLine::Get_().IdlUsed() )
+ run_Idl();
+ if ( CommandLine::Get_().CppUsed() )
+ run_Cpp();
+ return true;
+}
+
+int
+CreateHtml::inq_RunningRank() const
+{
+ return static_cast<int>(rank_CreateHtml);
+}
+
+void
+CreateHtml::run_Idl() const
+{
+ const ary::idl::Gate &
+ rGate = CommandLine::Get_().TheRepository().Gate_Idl();
+
+ Cout() << "Creating HTML-output into the directory "
+ << sOutputRootDirectory
+ << "."
+ << Endl();
+
+ const DisplayToolsFactory_Ifc &
+ rToolsFactory = DisplayToolsFactory_Ifc::GetIt_();
+ Dyn<autodoc::HtmlDisplay_Idl_Ifc>
+ pDisplay( rToolsFactory.Create_HtmlDisplay_Idl() );
+
+ DYN display::CorporateFrame & // KORR_FUTURE: Remove the need for const_cast
+ drFrame = const_cast< display::CorporateFrame& >(rToolsFactory.Create_StdFrame());
+ if (NOT DevelopersManual_HtmlRoot().empty())
+ drFrame.Set_DevelopersGuideHtmlRoot( DevelopersManual_HtmlRoot() );
+
+ pDisplay->Run( sOutputRootDirectory,
+ rGate,
+ drFrame );
+}
+
+void
+CreateHtml::run_Cpp() const
+{
+ const ary::Repository &
+ rReposy = CommandLine::Get_().TheRepository();
+ const ary::cpp::Gate &
+ rGate = rReposy.Gate_Cpp();
+
+ const DisplayToolsFactory_Ifc &
+ rToolsFactory = DisplayToolsFactory_Ifc::GetIt_();
+ Dyn< autodoc::HtmlDisplay_UdkStd >
+ pDisplay( rToolsFactory.Create_HtmlDisplay_UdkStd() );
+
+ pDisplay->Run( sOutputRootDirectory,
+ rGate,
+ rToolsFactory.Create_StdFrame() );
+}
+
+
+} // namespace command
+} // namespace autodoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/adc_cmds.hxx b/autodoc/source/exes/adc_uni/adc_cmds.hxx
new file mode 100644
index 000000000000..461bbcbbbeec
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/adc_cmds.hxx
@@ -0,0 +1,128 @@
+/* -*- 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 ADC_ADC_CMDS_HXX
+#define ADC_ADC_CMDS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "adc_cmd.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+namespace autodoc
+{
+namespace command
+{
+
+
+/** A command that produces HTML output from the Autodoc Repository.
+*/
+class CreateHtml : public Command
+{
+ public:
+ CreateHtml();
+ ~CreateHtml();
+
+ const String & OutputDir() const;
+ const String & DevelopersManual_HtmlRoot() const
+ { return sDevelopersManual_HtmlRoot; }
+
+ private:
+ // Interface Context:
+ virtual void do_Init(
+ opt_iter & i_nCurArgsBegin,
+ opt_iter i_nEndOfAllArgs );
+ // Interface Command:
+ virtual bool do_Run() const;
+ virtual int inq_RunningRank() const;
+
+ // Locals
+ void run_Cpp() const;
+ void run_Idl() const;
+
+ // DATA
+ String sOutputRootDirectory;
+ String sDevelopersManual_HtmlRoot;
+};
+
+inline const String &
+CreateHtml::OutputDir() const
+ { return sOutputRootDirectory; }
+
+
+extern const String C_opt_Verbose;
+
+extern const String C_opt_Parse;
+extern const String C_opt_Name;
+extern const String C_opt_LangAll;
+extern const String C_opt_ExtensionsAll;
+extern const String C_opt_DevmanFile;
+extern const String C_opt_SinceFile;
+
+extern const String C_arg_Cplusplus;
+extern const String C_arg_Idl;
+extern const String C_arg_Java;
+
+extern const String C_opt_Project;
+//extern const String C_opt_Lang;
+//extern const String C_opt_Extensions;
+extern const String C_opt_SourceTree;
+extern const String C_opt_SourceDir;
+extern const String C_opt_SourceFile;
+
+extern const String C_opt_CreateHtml;
+extern const String C_opt_DevmanRoot;
+
+//extern const String C_opt_CreateXml;
+//extern const String C_opt_Load;
+//extern const String C_opt_Save;
+
+extern const String C_opt_ExternNamespace;
+extern const String C_opt_ExternRoot;
+
+
+inline void
+CHECKOPT( bool b, const char * miss, const String & opt )
+{
+ if ( NOT b )
+ {
+ StreamLock slMsg(100);
+ throw X_CommandLine( slMsg() << "Missing " << miss <<" after " << opt << "." << c_str );
+ }
+}
+
+} // namespace command
+} // namespace autodoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/adc_msg.cxx b/autodoc/source/exes/adc_uni/adc_msg.cxx
new file mode 100644
index 000000000000..ad8b9d5745f0
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/adc_msg.cxx
@@ -0,0 +1,211 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adc_msg.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/file.hxx>
+#include <cosv/tpl/tpltools.hxx>
+
+
+namespace autodoc
+{
+
+
+Messages::Messages()
+ : aMissingDocs(),
+ aParseErrors(),
+ aInvalidConstSymbols(),
+ aUnresolvedLinks(),
+ aTypeVsMemberMisuses()
+{
+}
+
+Messages::~Messages()
+{
+}
+
+void
+Messages::WriteFile(const String & i_sOutputFilePath)
+{
+ csv::File
+ aOut(i_sOutputFilePath, csv::CFM_CREATE);
+ aOut.open();
+
+ // KORR_FUTURE Enable this when appropriate:
+ WriteParagraph( aOut,
+ aParseErrors,
+ "Incompletely Parsed Files",
+ "Stopped parsing at " );
+
+ WriteParagraph( aOut,
+ aMissingDocs,
+ "Entities Without Documentation",
+ " in " );
+
+ WriteParagraph( aOut,
+ aInvalidConstSymbols,
+ "Incorrectly Written Const Symbols",
+ " in " );
+
+ WriteParagraph( aOut,
+ aUnresolvedLinks,
+ "Unresolved Links",
+ " in\n " );
+
+ WriteParagraph( aOut,
+ aTypeVsMemberMisuses,
+ "Confusion or Misuse of <Type> vs. <Member>",
+ " in " );
+ aOut.close();
+}
+
+void
+Messages::Out_MissingDoc( const String & i_sEntity,
+ const String & i_sFile,
+ uintt i_nLine)
+{
+ AddValue( aMissingDocs,
+ i_sEntity,
+ i_sFile,
+ i_nLine );
+}
+
+void
+Messages::Out_ParseError( const String & i_sFile,
+ uintt i_nLine)
+{
+ aParseErrors[Location(i_sFile,i_nLine)] = String::Null_();
+}
+
+void
+Messages::Out_InvalidConstSymbol( const String & i_sText,
+ const String & i_sFile,
+ uintt i_nLine)
+{
+ AddValue( aInvalidConstSymbols,
+ i_sText,
+ i_sFile,
+ i_nLine );
+}
+
+void
+Messages::Out_UnresolvedLink( const String & i_sLinkText,
+ const String & i_sFile,
+ uintt i_nLine)
+{
+ AddValue( aUnresolvedLinks,
+ i_sLinkText,
+ i_sFile,
+ i_nLine );
+}
+
+void
+Messages::Out_TypeVsMemberMisuse( const String & i_sLinkText,
+ const String & i_sFile,
+ uintt i_nLine)
+{
+ AddValue( aTypeVsMemberMisuses,
+ i_sLinkText,
+ i_sFile,
+ i_nLine );
+}
+
+Messages &
+Messages::The_()
+{
+ static Messages TheMessages_;
+ return TheMessages_;
+}
+
+void
+Messages::AddValue( MessageMap & o_dest,
+ const String & i_sText,
+ const String & i_sFile,
+ uintt i_nLine )
+{
+ String &
+ rDest = o_dest[Location(i_sFile,i_nLine)];
+ StreamLock
+ slDest(2000);
+ if (NOT rDest.empty())
+ slDest() << rDest;
+ slDest() << "\n " << i_sText;
+ rDest = slDest().c_str();
+}
+
+void
+Messages::WriteParagraph( csv::File & o_out,
+ const MessageMap & i_source,
+ const String & i_title,
+ const String & )
+{
+ StreamStr aLine(2000);
+
+ // Write title of paragraph:
+ aLine << i_title
+ << "\n";
+ o_out.write(aLine.c_str());
+
+ aLine.seekp(0);
+ for (uintt i = i_title.size(); i > 0; --i)
+ {
+ aLine << '-';
+ }
+ aLine << "\n\n";
+ o_out.write(aLine.c_str());
+
+ // Write Content
+ MessageMap::const_iterator it = i_source.begin();
+ MessageMap::const_iterator itEnd = i_source.end();
+ for ( ; it != itEnd; ++it )
+ {
+ aLine.seekp(0);
+ aLine << (*it).first.sFile;
+ // Nobody wants to see this, if we don't know the line:
+ if ((*it).first.nLine != 0)
+ {
+ aLine << ", line "
+ << (*it).first.nLine;
+ }
+ if (NOT (*it).second.empty())
+ {
+ aLine << ':'
+ << (*it).second
+ << "\n";
+ }
+ o_out.write(aLine.c_str());
+ }
+ o_out.write("\n\n\n");
+}
+
+} // namespace autodoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/cmd_run.cxx b/autodoc/source/exes/adc_uni/cmd_run.cxx
new file mode 100644
index 000000000000..5b79de482114
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/cmd_run.cxx
@@ -0,0 +1,281 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cmd_run.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/file.hxx>
+#include <cosv/x.hxx>
+#include <ary/ary.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <autodoc/filecoli.hxx>
+#include <autodoc/parsing.hxx>
+#include <autodoc/prs_code.hxx>
+#include <autodoc/prs_docu.hxx>
+#include <parser/unoidl.hxx>
+#include <adc_cl.hxx>
+#include "adc_cmd_parse.hxx"
+#include "adc_cmds.hxx"
+
+namespace autodoc
+{
+namespace command
+{
+namespace run
+{
+
+Parser::Parser( const Parse & i_command )
+ : rCommand(i_command),
+ pCppParser(),
+ pCppDocuInterpreter(),
+ pIdlParser()
+{
+}
+
+Parser::~Parser()
+{
+}
+
+bool
+Parser::Perform()
+{
+ Cout() << "Parsing the repository "
+ << rCommand.ReposyName()
+ << " ..."
+ << Endl();
+ try
+ {
+ ::ary::Repository &
+ rAry = CommandLine::Get_().TheRepository();
+ rAry.Set_Title(rCommand.ReposyName());
+
+ Dyn< FileCollector_Ifc >
+ pFiles( ParseToolsFactory().Create_FileCollector(6000) );
+
+ bool bIDL = false;
+ bool bCpp = false;
+
+ command::Parse::ProjectIterator
+ itEnd = rCommand.ProjectsEnd();
+ for ( command::Parse::ProjectIterator it = rCommand.ProjectsBegin();
+ it != itEnd;
+ ++it )
+ {
+ uintt nCount = GatherFiles( *pFiles, *(*it) );
+ Cout() << nCount
+ << " files found to parse in project "
+ << (*it)->Name()
+ << "."
+ << Endl();
+
+ switch ( (*it)->Language().eLanguage )
+ {
+ case command::S_LanguageInfo::idl:
+ {
+ Get_IdlParser().Run(*pFiles);
+ bIDL = true;
+ } break;
+ case command::S_LanguageInfo::cpp:
+ {
+ Get_CppParser().Run( *pFiles );
+ bCpp = true;
+ } break;
+ default:
+ Cerr() << "Project in yet unimplemented language skipped."
+ << Endl();
+ }
+ } // end for
+
+ if (bCpp)
+ {
+ rAry.Gate_Cpp().Calculate_AllSecondaryInformation();
+ }
+ if (bIDL)
+ {
+ rAry.Gate_Idl().Calculate_AllSecondaryInformation(
+ rCommand.DevelopersManual_RefFilePath() );
+
+// ::ary::idl::SecondariesPilot &
+// rIdl2sPilot = rAry.Gate_Idl().Secondaries();
+//
+// rIdl2sPilot.CheckAllInterfaceBases( rAry.Gate_Idl() );
+// rIdl2sPilot.Connect_Types2Ces();
+// rIdl2sPilot.Gather_CrossReferences();
+//
+// if (NOT rCommand.DevelopersManual_RefFilePath().empty())
+// {
+// csv::File
+// aFile(rCommand.DevelopersManual_RefFilePath(), csv::CFM_READ);
+// if ( aFile.open() )
+// {
+// rIdl2sPilot.Read_Links2DevManual(aFile);
+// aFile.close();
+// }
+// }
+ } // endif (bIDL)
+
+ return true;
+
+ } // end try
+ catch (csv::Exception & xx)
+ {
+ xx.GetInfo(Cerr());
+ Cerr() << " program will exit." << Endl();
+
+ return false;
+ }
+}
+
+CodeParser_Ifc &
+Parser::Get_CppParser()
+{
+ if ( NOT pCppParser )
+ Create_CppParser();
+ return *pCppParser;
+}
+
+IdlParser &
+Parser::Get_IdlParser()
+{
+ if ( NOT pIdlParser )
+ Create_IdlParser();
+ return *pIdlParser;
+}
+
+void
+Parser::Create_CppParser()
+{
+ pCppParser = ParseToolsFactory().Create_Parser_Cplusplus();
+ pCppDocuInterpreter = ParseToolsFactory().Create_DocuParser_AutodocStyle();
+
+ pCppParser->Setup( CommandLine::Get_().TheRepository(),
+ *pCppDocuInterpreter );
+}
+
+void
+Parser::Create_IdlParser()
+{
+ pIdlParser = new IdlParser(CommandLine::Get_().TheRepository());
+}
+
+const ParseToolsFactory_Ifc &
+Parser::ParseToolsFactory()
+{
+ return ParseToolsFactory_Ifc::GetIt_();
+}
+
+uintt
+Parser::GatherFiles( FileCollector_Ifc & o_rFiles,
+ const S_ProjectData & i_rProject )
+{
+ uintt ret = 0;
+ o_rFiles.EraseAll();
+
+ typedef StringVector StrVector;
+ typedef StrVector::const_iterator StrIterator;
+ const S_Sources &
+ rSources = i_rProject.Sources();
+ const StrVector &
+ rExtensions = i_rProject.Language().aExtensions;
+
+ StrIterator it;
+ StrIterator itTreesEnd = rSources.aTrees.end();
+ StrIterator itDirsEnd = rSources.aDirectories.end();
+ StrIterator itFilesEnd = rSources.aFiles.end();
+ StrIterator itExt;
+ StrIterator itExtEnd = rExtensions.end();
+
+ csv::StreamStr aDir(500);
+ i_rProject.RootDirectory().Get( aDir );
+
+ uintt nProjectDir_AddPosition =
+ ( strcmp(aDir.c_str(),".\\") == 0 OR strcmp(aDir.c_str(),"./") == 0 )
+ ? 0
+ : uintt( aDir.tellp() );
+
+ for ( it = rSources.aDirectories.begin();
+ it != itDirsEnd;
+ ++it )
+ {
+ aDir.seekp( nProjectDir_AddPosition );
+ aDir << *it;
+
+ for ( itExt = rExtensions.begin();
+ itExt != itExtEnd;
+ ++itExt )
+ {
+ ret += o_rFiles.AddFilesFrom( aDir.c_str(),
+ *itExt,
+ FileCollector_Ifc::flat );
+ } // end for itExt
+ } // end for it
+ for ( it = rSources.aTrees.begin();
+ it != itTreesEnd;
+ ++it )
+ {
+ aDir.seekp( nProjectDir_AddPosition );
+ aDir << *it;
+
+ for ( itExt = rExtensions.begin();
+ itExt != itExtEnd;
+ ++itExt )
+ {
+ ret += o_rFiles.AddFilesFrom( aDir.c_str(),
+ *itExt,
+ FileCollector_Ifc::recursive );
+ } // end for itExt
+ } // end for it
+ for ( it = rSources.aFiles.begin();
+ it != itFilesEnd;
+ ++it )
+ {
+ aDir.seekp( nProjectDir_AddPosition );
+ aDir << *it;
+
+ o_rFiles.AddFile( aDir.c_str() );
+ } // end for it
+ ret += rSources.aFiles.size();
+
+ return ret;
+}
+
+
+} // namespace run
+} // namespace command
+} // namespace autodoc
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/cmd_run.hxx b/autodoc/source/exes/adc_uni/cmd_run.hxx
new file mode 100644
index 000000000000..523df6eb34dc
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/cmd_run.hxx
@@ -0,0 +1,107 @@
+/* -*- 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 ADC_CMD_RUN_HXX
+#define ADC_CMD_RUN_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/comdline.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+ class Repository;
+}
+
+namespace autodoc
+{
+ class FileCollector_Ifc;
+ class ParseToolsFactory_Ifc;
+ class CodeParser_Ifc;
+ class DocumentationParser_Ifc;
+ class IdlParser;
+
+
+namespace command
+{
+ class Parse;
+ class S_ProjectData;
+ struct S_LanguageInfo;
+
+namespace run
+{
+
+/** Performs an ::autodoc::command::Parse .
+*/
+class Parser
+{
+ public:
+ Parser(
+ const Parse & i_command );
+ ~Parser();
+
+ bool Perform();
+
+ private:
+ // Locals
+ CodeParser_Ifc & Get_CppParser();
+ IdlParser & Get_IdlParser();
+ void Create_CppParser();
+ void Create_IdlParser();
+ const ParseToolsFactory_Ifc &
+ ParseToolsFactory();
+ uintt GatherFiles(
+ FileCollector_Ifc & o_rFiles,
+ const S_ProjectData &
+ i_rProject );
+ // DATA
+ const Parse & rCommand;
+
+ Dyn<CodeParser_Ifc> pCppParser;
+ Dyn<DocumentationParser_Ifc>
+ pCppDocuInterpreter;
+ Dyn<IdlParser> pIdlParser;
+};
+
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace run
+} // namespace command
+} // namespace autodoc
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/cmd_sincedata.cxx b/autodoc/source/exes/adc_uni/cmd_sincedata.cxx
new file mode 100644
index 000000000000..ca3ac084d00e
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/cmd_sincedata.cxx
@@ -0,0 +1,132 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cmd_sincedata.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/file.hxx>
+#include <cosv/tpl/tpltools.hxx>
+#include "adc_cmds.hxx"
+
+
+
+namespace autodoc
+{
+namespace command
+{
+
+SinceTagTransformationData::SinceTagTransformationData()
+ : aTransformationTable()
+{
+}
+
+SinceTagTransformationData::~SinceTagTransformationData()
+{
+}
+
+bool
+SinceTagTransformationData::DoesTransform() const
+{
+ return NOT aTransformationTable.empty();
+}
+
+const String &
+SinceTagTransformationData::DisplayOf( const String & i_versionNumber ) const
+{
+ if (DoesTransform())
+ {
+ StreamLock
+ sl(200);
+ sl() << i_versionNumber;
+ sl().strip_frontback_whitespace();
+ String
+ sVersionNumber(sl().c_str());
+
+ const String *
+ ret = csv::find_in_map(aTransformationTable, sVersionNumber);
+ return ret != 0
+ ? *ret
+ : String::Null_();
+ }
+ else
+ {
+ return i_versionNumber;
+ }
+}
+
+void
+SinceTagTransformationData::do_Init( opt_iter & it,
+ opt_iter itEnd )
+{
+ ++it; // Cur is since-file path.
+
+ CHECKOPT( it != itEnd ,
+ "file path",
+ C_opt_SinceFile );
+
+ csv::File aSinceFile(*it);
+ csv::OpenCloseGuard aSinceFileGuard(aSinceFile);
+ StreamStr sLine(200);
+
+ if (aSinceFileGuard)
+ {
+ for ( sLine.operator_read_line(aSinceFile);
+ NOT sLine.empty();
+ sLine.operator_read_line(aSinceFile) )
+ {
+
+ if (*sLine.begin() != '"')
+ continue;
+
+ const char * pVersion = sLine.c_str() + 1;
+ const char * pVersionEnd = strchr(pVersion, '"');
+ if (pVersionEnd == 0)
+ continue;
+ const char * pDisplay = strchr(pVersionEnd+1, '"');
+ if (pDisplay == 0)
+ continue;
+ ++pDisplay;
+ const char * pDisplayEnd = strchr(pDisplay, '"');
+ if (pDisplayEnd == 0)
+ continue;
+
+ aTransformationTable[ String(pVersion,pVersionEnd) ]
+ = String(pDisplay,pDisplayEnd);
+ sLine.clear();
+ } // end for
+ } // end if
+
+ ++it; // Cur is next option.
+}
+
+} // namespace command
+} // namespace autodoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/cmd_sincedata.hxx b/autodoc/source/exes/adc_uni/cmd_sincedata.hxx
new file mode 100644
index 000000000000..adac72c93594
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/cmd_sincedata.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ADC_CMD_SINCEDATA_HXX
+#define ADC_CMD_SINCEDATA_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "adc_cmd.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+namespace autodoc
+{
+namespace command
+{
+
+
+/** Provides replacements for the contents of the @@since documentation tag.
+
+ Because the @@since tag is part of the source code, it allows only one kind
+ of version information there. If this is to be mapped for different products
+ (example: from OpenOffice.org versions in the @@since tag to StarOffice or
+ StarSuite products), the value of @@since needs a replacement, which is provided
+ by this class.
+
+*/
+class SinceTagTransformationData : public Context
+{
+ public:
+ /** The key of this map are the version numbers within @since.
+ The value is the string to display for each version number.
+ */
+ typedef std::map<String,String> Map_Version2Display;
+
+ // LIFECYCLE
+ SinceTagTransformationData();
+ virtual ~SinceTagTransformationData();
+
+ // INQUIRY
+ /// False, if no transformation table exists.
+ bool DoesTransform() const;
+
+ /** Gets the string to display for a version number.
+
+ @param i_sVersionNumber
+ Usually should be the result of ->StripSinceTagValue().
+ */
+ const String & DisplayOf(
+ const String & i_sVersionNumber ) const;
+ private:
+ // Interface Context:
+ virtual void do_Init(
+ opt_iter & i_nCurArgsBegin,
+ opt_iter i_nEndOfAllArgs );
+ // DATA
+ Map_Version2Display aTransformationTable;
+};
+
+
+} // namespace command
+} // namespace autodoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/main.cxx b/autodoc/source/exes/adc_uni/main.cxx
new file mode 100644
index 000000000000..6e5a11a6e0b6
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/main.cxx
@@ -0,0 +1,56 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+
+
+// NOT FULLY DECLARED SERVICES
+
+#include <adc_cl.hxx>
+#include "cmd_run.hxx"
+
+
+int
+#ifdef WNT
+ _cdecl
+#endif
+main( int argc,
+ char * argv[] )
+{
+ autodoc::CommandLine aCL;
+ aCL.Init(argc, argv);
+ if (NOT aCL.CheckParameters() )
+ return 1;
+
+ int ret = aCL.Run();
+ return ret;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/exes/adc_uni/makefile.mk b/autodoc/source/exes/adc_uni/makefile.mk
new file mode 100644
index 000000000000..8baea0830233
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/makefile.mk
@@ -0,0 +1,104 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=autodoc
+TARGETTYPE=CUI
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+UWINAPILIB=$(0)
+LIBSALCPPRT=$(0)
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/adc_cl.obj \
+ $(OBJ)$/adc_cmd_parse.obj \
+ $(OBJ)$/adc_cmds.obj \
+ $(OBJ)$/adc_msg.obj \
+ $(OBJ)$/cmd_run.obj \
+ $(OBJ)$/cmd_sincedata.obj
+
+
+# --- Targets ------------------------------------------------------
+
+LIB1TARGET=$(LB)$/atdoc.lib
+LIB1FILES= \
+ $(LB)$/$(TARGET).lib $(LB)$/autodoc_tools.lib \
+ $(LB)$/ary_kernel.lib $(LB)$/ary_cpp.lib $(LB)$/ary_idl.lib \
+ $(LB)$/ary_info.lib $(LB)$/ary_loc.lib \
+ $(LB)$/parser_kernel.lib $(LB)$/parser_tokens.lib $(LB)$/parser_semantic.lib \
+ $(LB)$/parser_cpp.lib $(LB)$/parser_adoc.lib \
+ $(LB)$/display_kernel.lib $(LB)$/display_html.lib $(LB)$/display_idl.lib \
+ $(LB)$/display_toolkit.lib $(LB)$/parser2_tokens.lib \
+ $(LB)$/parser2_s2_luidl.lib $(LB)$/parser2_s2_dsapi.lib \
+ $(LB)$/ary2_cinfo.lib $(LB)$/ary_doc.lib
+
+
+
+APP1TARGET= $(TARGET)
+APP1STACK= 1000000
+APP1OBJS= $(OBJ)$/main.obj
+
+APP1RPATH=SDK
+
+.IF "$(GUI)"=="WNT"
+APP1STDLIBS= $(LIBSTLPORT) $(COSVLIB) $(UDMLIB)
+.ELSE
+.IF "$(OS)"=="MACOSX"
+# See <http://porting.openoffice.org/servlets/ReadMsg?list=mac&msgNo=6911>:
+APP1STDLIBS= $(LIBSTLPORT) -Wl,-all_load -ludm -lcosv
+.ELSE
+APP1STDLIBS= -lcosv -ludm
+.ENDIF
+.ENDIF
+
+APP1LIBS=$(LB)$/atdoc.lib
+
+DEPOBJFILES += $(APP1OBJS)
+
+APP1DEPN= $(LB)$/$(TARGET).lib $(LB)$/autodoc_tools.lib \
+ $(LB)$/ary_kernel.lib $(LB)$/ary_cpp.lib $(LB)$/ary_idl.lib \
+ $(LB)$/ary_info.lib $(LB)$/ary_loc.lib \
+ $(LB)$/parser_kernel.lib $(LB)$/parser_tokens.lib $(LB)$/parser_semantic.lib \
+ $(LB)$/parser_cpp.lib $(LB)$/parser_adoc.lib \
+ $(LB)$/display_kernel.lib $(LB)$/display_html.lib $(LB)$/display_idl.lib \
+ $(LB)$/display_toolkit.lib $(LB)$/parser2_tokens.lib \
+ $(LB)$/parser2_s2_luidl.lib $(LB)$/parser2_s2_dsapi.lib \
+ $(LB)$/ary2_cinfo.lib $(LB)$/ary_doc.lib
+
+
+.INCLUDE : target.mk
diff --git a/autodoc/source/exes/adc_uni/spec-CommandLine.txt b/autodoc/source/exes/adc_uni/spec-CommandLine.txt
new file mode 100644
index 000000000000..756b3184a2e4
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/spec-CommandLine.txt
@@ -0,0 +1,181 @@
+ Command Line Options
+ --------------------
+
+autodoc [-v <level>]
+ -html <out>
+ [-extroot <externroot> -extnsp <externnamespace>]
+ -lg <proglang>
+ [-t <sourcetree>[ <sourcetree> ...]
+ [-d <sourcedir>[ <sourcedir> ...]
+ [-f <sourcefile>[ <sourcefile> ...]
+
+
+ -html <OutputDirectory>
+ Directory where the output will be created.
+
+ -lg <ProgrammingLanguage>
+ Allowed values: "c++" or "idl"
+
+ -extroot <externroot>
+ Only together with "-lg idl" and -extnsp.
+ Links to code entities not found within the current parsed
+ code, will be linked there, but only if -extnsp is given and
+ the linked entity is in the given namespace.
+ <externroot> is a http link, it needs no "http://" at the
+ beginning nor slash at the end.
+
+ -extnsp <externnamespace>
+ Only together with "-lg idl" and -extroot.
+ If a code entity is not found in the current parsed code, but
+ dwells in the namespace (or its children) given here, it is
+ linked into the locátion given by -extroot.
+ <externnamespace> is an absolute qualified namespace,
+ starting with "::".
+
+ -t <SourceTree>*
+ Directory with all subdirectories.
+
+ -d <SourceDirectory>*
+ Directory without subdirectories.
+
+ -f <SourceFile>*
+ Any file. Here also files with extensions not matching the
+ language are accepted.
+
+ -I:<ResponseFile>
+ Each line in the response file has to have one command line
+ option. No whitespace at start of line.
+
+ -C:<ConfigurationFile>
+ Format see below.
+
+ -v <VerboseLevel>
+ Only for debugging. Bits 1, 2 and 4 in any combination give
+ different output.
+
+ -h
+ Displays help.
+ -?
+ Displays help.
+
+
+
+
+
+ Command Line Options especially for the OpenOffice.org SDK
+ ----------------------------------------------------------
+
+ -dvgroot <DevelopersGuide>
+ Root directory of the SDK Developers Guide.
+
+ -dvgfile <ReferenceFile>
+ File with references to the SDK Developers Guide.
+
+ -sincefile <@since-AssociationFile>
+ File that maps OpenOffice versions to the wished displayed version names.
+
+ -idlref <IdlDocumentationRoot> <Namespace[,Namespace ...]>
+ Gives the outputdirectory of an IDL documentation, where
+ symbols not found in the currently parsed namespaces of C++
+ or Java can be found.
+
+
+
+ Configure File Format
+ ---------------------
+
+<AutodocConfiguration>
+ <RepositoryName></RepositoryName>
+ // Base name of the binary repository files.
+ // Has to be a valid file name.
+
+ <HtmlOutputTitle></HtmlOutputTitle>
+ // Title on the "welcome page" of the created HTML documentation.
+ // Can be any text.
+
+ <CppExtensions></CppExtensions>
+ // Overwrites the default. Default is: .hxx .h .hpp
+ // Format: File extensions with a dot in front, like ".hcc".
+
+ <IdlExtensions></IdlExtensions>
+ // Overwrites the default. Default is: .idl
+ // Format: File extensions with a dot in front, like ".txt".
+
+ <CppDocu html="(on|off) off"/>
+
+ <IdlDocu html="(on|off) on"/>
+
+</AutodocConfiguration>
+
+
+
+
+
+
+ Historical Command Line Options
+ -------------------------------
+
+autodoc.exe
+ [ -v <VerboseNr> ]
+ -html <OutputDirectory>
+ {
+ [ -parse ]
+ [ -name <RepositoryName> ]
+ -lg <ProgrammingLanguage>
+ {
+ [ -p <ProjectName> <ProjectRootDirectory> ]
+ {
+ -t <SourceDirectory>*
+ -d <SourceDirectory>*
+ -f <SourceFile>*
+ }+
+ }+
+ }
+
+Legend:
+ <Text>
+ command line parameter
+ [ ]
+ optional
+ { }
+ Block of connected options.
+ The sequence of not connected options does not matter. So the -html or -v options can be used before or after all the parsing options.
+ +
+ once or more times
+ *
+ none or more times
+
+
+Explanation of the Options
+ -v <VerboseNr> Only for debugging. Bits 1, 2 and 4 in any combination give different output.
+ -html <OutputDirectory>
+ Gives the directory, where a HTML version of the docu shall be generated.
+ -parse Starts the block, where all the parse options are given. This can be omitted, because the parse options are identifiable without it, but it may make a commandline more readable.
+ -name <RepositoryName> This name appears as title of the documentation (currently only in the in the C++ version).
+ -lg <ProgrammingLanguage>
+
+
+ Possible values are:
+
+ c++
+ This parses all files with the endings .hxx and .h .
+ idl
+ This parses all files with the ending .idl .
+
+ -p with -t/-d/-f: If there are more than one project, the -p option is required for each one.
+
+ The directory given wit the -p option is the root directory of the project.
+ If there is no -p option, the working directory is seen as root.
+
+ All paths given with -t/-d/-f are relative to that root directory. It is possible to use "." as argument for -t or -d.
+
+ Each of -t/-d/-f can have several arguments:
+ One could write "-f file1.hxx file2.hxx file_xyz.hxx"
+ After each -p (or after -lg, if there is no -p option), there has to be at least one of the following three:
+ -t Tree, which means: include subdirectories
+ -d Directory, which means: no subdirectories
+ -f File", which means: single file name with ending.
+ This option also allows to parse some files with an ending different from those, the -lg option implies.
+
+
+
diff --git a/autodoc/source/exes/adc_uni/spec-DevGuideReferenceFile.txt b/autodoc/source/exes/adc_uni/spec-DevGuideReferenceFile.txt
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/spec-DevGuideReferenceFile.txt
diff --git a/autodoc/source/exes/adc_uni/spec-SinceTag_Handling.txt b/autodoc/source/exes/adc_uni/spec-SinceTag_Handling.txt
new file mode 100644
index 000000000000..7cf264e76be3
--- /dev/null
+++ b/autodoc/source/exes/adc_uni/spec-SinceTag_Handling.txt
@@ -0,0 +1,49 @@
+ General Handling
+ ----------------
+
+- The developer inserts the OpenOffice.org version into the @since tag.
+
+- @since-Tag may contain any string which needs to end with a Version number.
+ The first cipher following immediately on a white space is interpreted as start of the version number.
+
+- The @since Tag must stay completely within one line to allow tool support for retargeting.
+
+- To replace @since entries in the generated documentation, one needs to use
+ the command line option
+
+ -sincefile <TransformationFile-path>
+
+ This option has to occur immediately after the -html option.
+ If this option is not given, the original text of the @since tag is
+ displayed.
+
+ If the TransformationFile does not contain a specific entry,
+ nothing is displayed for this entry.
+
+
+
+ Format of the @since Tag Transformation File
+ --------------------------------------------
+
+Example
+-------
+
+***** BEGIN OF FILE ******
+"1.1" "StarOffice 7.0"
+"2.0" "StarOffice 8.0"
+"2.1" "StarOffice 9.0"
+***** END OF FILE ******
+
+
+
+Rules and Restrictions
+----------------------
+
+* Each line contains two strings within "".
+ The first string is the OpenOffice.org version number which is found in the @since tag.
+ The second string is the string to display for this version.
+* No specific order among product versions is needed.
+* Empty lines and whitespaces are allowed, except:
+ - Non empty lines must not start with white space.
+ - Within OpenOffice.org version strings, no whitespace is allowed.
+* Whitespace within display strings is displayed as it is.
diff --git a/autodoc/source/inc/adc_cl.hxx b/autodoc/source/inc/adc_cl.hxx
new file mode 100644
index 000000000000..07fff0a9d940
--- /dev/null
+++ b/autodoc/source/inc/adc_cl.hxx
@@ -0,0 +1,195 @@
+/* -*- 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 ADC_ADC_CL_HXX
+#define ADC_ADC_CL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/comdline.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+ class Repository;
+}
+
+namespace autodoc
+{
+namespace command
+{
+ class Command;
+ class CreateHtml;
+ class SinceTagTransformationData;
+}
+
+
+/** Reads and runs an Autodoc command line.
+*/
+class CommandLine : public csv::CommandLine_Ifc
+{
+ public:
+ // LIFECYCLE
+ CommandLine();
+ ~CommandLine();
+ // OPERATIONS
+ int Run() const;
+
+ // INQUIRY
+ // debugging
+ bool DebugStyle_ShowText() const;
+ bool DebugStyle_ShowStoredObjects() const;
+ bool DebugStyle_ShowTokens() const;
+
+ // @since tags
+ bool DoesTransform_SinceTag() const;
+
+// /// @see command::SinceTagTransformationData::StripSinceTagValue()
+// bool Strip_SinceTagText(
+// String & io_sSinceTagValue ) const;
+
+ /// @see command::SinceTagTransformationData::DisplayOf()
+ const String & DisplayOf_SinceTagValue(
+ const String & i_sVersionNumber ) const;
+
+ // extern IDL links
+ const String & ExternRoot() const { return sExternRoot; }
+ const String & ExternNamespace() const { return sExternNamespace; }
+
+ bool CppUsed() const { return bCpp; }
+ bool IdlUsed() const { return bIdl; }
+
+ // ACCESS
+ static CommandLine &
+ Get_();
+ void Set_ExternRoot(
+ const String & i_s )
+ { sExternRoot = i_s; }
+ void Set_ExternNamespace(
+ const String & i_s )
+ { sExternNamespace = i_s; }
+ ary::Repository & TheRepository() const { csv_assert(pReposy != 0);
+ return *pReposy; }
+ void Set_CppUsed() { bCpp = true; }
+ void Set_IdlUsed() { bIdl = true; }
+
+ private:
+ // Interface cosv::CommandLine_Ifc:
+ virtual void do_Init(
+ int argc,
+ char * argv[] );
+ virtual void do_PrintUse() const;
+ virtual bool inq_CheckParameters() const;
+
+ // Locals
+ typedef StringVector::const_iterator opt_iter;
+ typedef std::vector< DYN command::Command* > CommandList;
+
+ void load_IncludedCommands(
+ StringVector & out,
+ const char * i_filePath );
+
+ void do_clVerbose(
+ opt_iter & it,
+ opt_iter itEnd );
+ void do_clParse(
+ opt_iter & it,
+ opt_iter itEnd );
+ void do_clCreateHtml(
+ opt_iter & it,
+ opt_iter itEnd );
+ void do_clSinceFile(
+ opt_iter & it,
+ opt_iter itEnd );
+
+// void do_clCreateXml(
+// opt_iter & it,
+// opt_iter itEnd );
+// void do_clLoad(
+// opt_iter & it,
+// opt_iter itEnd );
+// void do_clSave(
+// opt_iter & it,
+// opt_iter itEnd );
+
+ void sort_Commands();
+
+ // DATA
+ uintt nDebugStyle;
+ Dyn<command::SinceTagTransformationData>
+ pSinceTransformator;
+
+ CommandList aCommands;
+ bool bInitOk;
+ command::CreateHtml *
+ pCommand_CreateHtml;
+
+ String sExternRoot;
+ String sExternNamespace;
+
+ mutable Dyn<ary::Repository>
+ pReposy;
+ bool bCpp;
+ bool bIdl;
+
+ static CommandLine *
+ pTheInstance_;
+};
+
+
+
+// IMPLEMENTATION
+inline bool
+CommandLine::DebugStyle_ShowText() const
+ { return (nDebugStyle & 2) != 0; }
+inline bool
+CommandLine::DebugStyle_ShowStoredObjects() const
+ { return (nDebugStyle & 4) != 0; }
+inline bool
+CommandLine::DebugStyle_ShowTokens() const
+ { return (nDebugStyle & 1) != 0; }
+
+} // namespace autodoc
+
+
+inline bool
+DEBUG_ShowText()
+ { return autodoc::CommandLine::Get_().DebugStyle_ShowText(); }
+inline bool
+DEBUG_ShowStoring()
+ { return autodoc::CommandLine::Get_().DebugStyle_ShowStoredObjects(); }
+inline bool
+DEBUG_ShowTokens()
+ { return autodoc::CommandLine::Get_().DebugStyle_ShowTokens(); }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/adc_msg.hxx b/autodoc/source/inc/adc_msg.hxx
new file mode 100644
index 000000000000..e88ccf5ce526
--- /dev/null
+++ b/autodoc/source/inc/adc_msg.hxx
@@ -0,0 +1,144 @@
+/* -*- 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 ADC_ADC_MSG_HXX
+#define ADC_ADC_MSG_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+namespace csv
+{
+ class File;
+}
+
+
+namespace autodoc
+{
+
+
+/** Gathers, sorts and displays (mainly diagnostic) messages to the
+ user of Autodoc.
+*/
+class Messages
+{
+ public:
+ // LIFECYCLE
+ Messages();
+ ~Messages();
+ // OPERATIONS
+ void WriteFile(
+ const String & i_sOutputFilePath);
+ // INQUIRY
+
+ // ACCESS
+ void Out_MissingDoc(
+ const String & i_sEntity,
+ const String & i_sFile,
+ uintt i_nLine);
+ void Out_ParseError(
+ const String & i_sFile,
+ uintt i_nLine);
+ void Out_InvalidConstSymbol(
+ const String & i_sText,
+ const String & i_sFile,
+ uintt i_nLine);
+ void Out_UnresolvedLink(
+ const String & i_sLinkText,
+ const String & i_sFile,
+ uintt i_nLine);
+ void Out_TypeVsMemberMisuse(
+ const String & i_sLinkText,
+ const String & i_sFile,
+ uintt i_nLine);
+
+ static Messages & The_();
+
+ private:
+ struct Location
+ {
+ String sFile;
+ uintt nLine;
+
+ Location(
+ const String & i_file,
+ uintt i_line)
+ : sFile(i_file),
+ nLine(i_line) {}
+ bool operator<(
+ const Location & i_other) const
+ { int cmp = csv::compare(sFile,i_other.sFile);
+ return cmp < 0
+ ? true
+ : cmp > 0
+ ? false
+ : nLine < i_other.nLine;
+ }
+ };
+
+ typedef std::map<Location,String> MessageMap;
+
+ // Locals
+ void AddValue(
+ MessageMap & o_dest,
+ const String & i_sText,
+ const String & i_sFile,
+ uintt i_nLine );
+ void WriteParagraph(
+ csv::File & o_out,
+ const MessageMap & i_source,
+ const String & i_title,
+ const String & i_firstIntermediateText );
+
+ // DATA
+ MessageMap aMissingDocs;
+ MessageMap aParseErrors;
+ MessageMap aInvalidConstSymbols;
+ MessageMap aUnresolvedLinks;
+ MessageMap aTypeVsMemberMisuses;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace autodoc
+
+inline autodoc::Messages &
+TheMessages()
+{
+ return autodoc::Messages::The_();
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/docu_node_ids.hxx b/autodoc/source/inc/docu_node_ids.hxx
new file mode 100644
index 000000000000..95f8e20dcebf
--- /dev/null
+++ b/autodoc/source/inc/docu_node_ids.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 ADC_DOCU_NODE_IDS_HXX
+#define ADC_DOCU_NODE_IDS_HXX
+
+
+
+namespace ary
+{
+namespace doc
+{
+namespace nodetype
+{
+enum E_Ids
+{
+
+ nt_none,
+ nt_OldCppDocu,
+ nt_OldIdlDocu
+
+
+
+
+
+
+
+
+
+};
+} // namespace nodetype
+} // namespace doc
+} // namespace ary
+
+namespace docnt = ::ary::doc::nodetype;
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/estack.hxx b/autodoc/source/inc/estack.hxx
new file mode 100644
index 000000000000..5c1b76ab7446
--- /dev/null
+++ b/autodoc/source/inc/estack.hxx
@@ -0,0 +1,96 @@
+/* -*- 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 ARY_ESTACK_HXX
+#define ARY_ESTACK_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <slist>
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+template <class ELEM>
+class EStack : private std::slist<ELEM>
+{
+ private:
+ typedef std::slist<ELEM> base;
+ const base & Base() const { return *this; }
+ base & Base() { return *this; }
+
+ public:
+ typedef ELEM value_type;
+ typedef typename std::slist<ELEM>::size_type size_type;
+
+ // LIFECYCLE
+ EStack() {}
+ EStack(
+ const EStack & i_rStack )
+ : base( (const base &)(i_rStack) ) {}
+ ~EStack() {}
+ // OPERATORS
+ EStack & operator=(
+ const EStack & i_rStack )
+ { base::operator=( i_rStack.Base() );
+ return *this; }
+ bool operator==(
+ const EStack<ELEM> &
+ i_r2 ) const
+ { return std::operator==( Base(), this->i_rStack.Base() ); }
+ bool operator<(
+ const EStack<ELEM> &
+ i_r2 ) const
+ { return std::operator<( Base(), this->i_rStack.Base() ); }
+ // OPERATIONS
+ void push(
+ const value_type & i_rElem )
+ { base::push_front(i_rElem); }
+ void pop() { base::pop_front(); }
+ void erase_all() { while (NOT empty()) pop(); }
+
+ // INQUIRY
+ const value_type & top() const { return base::front(); }
+ size_type size() const { return base::size(); }
+ bool empty() const { return base::empty(); }
+
+ // ACCESS
+ value_type & top() { return base::front(); }
+};
+
+
+
+// IMPLEMENTATION
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/luxenum.hxx b/autodoc/source/inc/luxenum.hxx
new file mode 100644
index 000000000000..5cac60403b56
--- /dev/null
+++ b/autodoc/source/inc/luxenum.hxx
@@ -0,0 +1,105 @@
+/* -*- 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 UDM_LUXENUM_HXX
+#define UDM_LUXENUM_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <map>
+#include <algorithm>
+
+
+namespace lux
+{
+
+typedef std::map< intt, String > EnumValueMap;
+
+
+template <class DIFF>
+class Enum // : public Template_Base
+{
+ public:
+ // TYPES
+ typedef Enum< DIFF > self;
+
+ // LIFECYCLE
+ Enum(
+ DIFF i_nValue,
+ const char * i_sText )
+ : nValue(i_nValue) { Values_()[nValue] = i_sText;
+ // Sequence_().insert(
+ // std::lower_bound( Sequence_().begin(), Sequence_().end(), i_nValue ),
+ // i_nValue );
+ }
+ Enum(
+ DIFF i_nValue )
+ : nValue(i_nValue) { ; }
+ Enum(
+ intt i_nValue = 0 )
+ : nValue(i_nValue) { if ( NOT CheckIntt(i_nValue) ) { csv_assert(false); } }
+ Enum(
+ const self & i_rEnum )
+ : nValue(i_rEnum.nValue) {;}
+
+ self & operator=(
+ DIFF i_nValue )
+ { nValue = i_nValue; return *this; }
+ self & operator=(
+ intt i_nValue )
+ { if ( CheckIntt(i_nValue) ) {nValue = DIFF(i_nValue);}
+ else {csv_assert(false);} return *this; }
+ self & operator=(
+ const self & i_rEnum )
+ { nValue = i_rEnum.nValue; return *this; }
+ operator DIFF() const { return DIFF(nValue); }
+
+ DIFF operator()() const { return nValue; }
+ const String & Text() const { return Values_()[nValue]; }
+
+ private:
+ static EnumValueMap &
+ Values_();
+ bool CheckIntt(
+ intt i_nNumber )
+ { return Values_().find(i_nNumber) != Values_().end(); }
+ // DATA
+ intt nValue;
+};
+
+
+
+
+} // namespace lux
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/manip.hxx b/autodoc/source/inc/manip.hxx
new file mode 100644
index 000000000000..cd07815d3fd9
--- /dev/null
+++ b/autodoc/source/inc/manip.hxx
@@ -0,0 +1,63 @@
+/* -*- 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 ARY_MANIP_HXX
+#define ARY_MANIP_HXX
+
+template <class XY >
+class Manipulator
+{
+ public:
+ virtual ~Manipulator() {}
+
+ void operator()(
+ XY & io_r ) const
+ { op_fcall(io_r); }
+ private:
+ virtual void op_fcall(
+ XY & io_r ) const = 0;
+};
+
+template <class XY >
+class Const_Manipulator
+{
+ public:
+ virtual ~Const_Manipulator() {}
+
+ void operator()(
+ const XY & io_r ) const
+ { op_fcall(io_r); }
+ private:
+ virtual void op_fcall(
+ const XY & io_r ) const = 0;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/precomp.h b/autodoc/source/inc/precomp.h
new file mode 100644
index 000000000000..9519999f22c4
--- /dev/null
+++ b/autodoc/source/inc/precomp.h
@@ -0,0 +1,69 @@
+/* -*- 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 ADC_PRECOMP_H_06071998
+#define ADC_PRECOMP_H_06071998
+
+
+// For en/disabling csv_assertions:
+#ifndef DEBUG
+#define CSV_NO_ASSERTIONS
+#endif
+
+#include <cosv/csv_precomp.h>
+
+#include <vector>
+#include <map>
+#include <set>
+
+
+
+// Shortcuts to access csv::-types:
+using csv::String;
+using csv::StringVector;
+using csv::StreamStr;
+using csv::c_str;
+typedef csv::StreamStrLock StreamLock;
+
+
+
+inline std::ostream &
+Cout() { return std::cout; }
+inline std::ostream &
+Cerr() { return std::cerr; }
+
+inline csv::F_FLUSHING_FUNC
+Endl() { return csv::Endl; }
+inline csv::F_FLUSHING_FUNC
+Flush() { return csv::Flush; }
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/prprpr.hxx b/autodoc/source/inc/prprpr.hxx
new file mode 100644
index 000000000000..eafc28fff86f
--- /dev/null
+++ b/autodoc/source/inc/prprpr.hxx
@@ -0,0 +1,61 @@
+/* -*- 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 ARY_CPP_PRPRPR_HXX // PRePRocessorPRocessing
+#define ARY_CPP_PRPRPR_HXX
+
+
+
+// Implemented in autodoc/source/parser/cpp/defdescr.cxx .
+
+bool CheckForOperator(
+ bool & o_bStringify,
+ bool & o_bConcatenate,
+ const String & i_sTextItem );
+void Do_bConcatenate(
+ csv::StreamStr & o_rText,
+ bool & io_bConcatenate );
+void Do_bStringify_begin(
+ csv::StreamStr & o_rText,
+ bool i_bStringify );
+void Do_bStringify_end(
+ csv::StreamStr & o_rText,
+ bool & io_bStringify );
+bool HandleOperatorsBeforeTextItem( /// @return true, if text item is done here
+ csv::StreamStr & o_rText,
+ bool & io_bStringify,
+ bool & io_bConcatenate,
+ const String & i_sTextItem );
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/tools/filecoll.hxx b/autodoc/source/inc/tools/filecoll.hxx
new file mode 100644
index 000000000000..c30f864a242f
--- /dev/null
+++ b/autodoc/source/inc/tools/filecoll.hxx
@@ -0,0 +1,71 @@
+/* -*- 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 ADC_FILECOLL_HXX
+#define ADC_FILECOLL_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <autodoc/filecoli.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+class FileCollector : public autodoc::FileCollector_Ifc
+{
+ public:
+ // LIFECYCLE
+ FileCollector(
+ uintt i_nRoughNrOfFiles = 0 );
+
+ // OPERATIONS
+ virtual uintt AddFilesFrom(
+ const char * i_sRootDir,
+ const char * i_sFilter,
+ E_SearchMode i_eSearchMode );
+ virtual uintt AddFile(
+ const char * i_sFilePath );
+ virtual void EraseAll();
+
+ // INQUIRY
+ virtual const_iterator
+ Begin() const;
+ virtual const_iterator
+ End() const;
+ virtual uintt Size() const;
+
+ private:
+ // DATA
+ StringVector aFoundFiles;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/inc/tools/tkpchars.hxx b/autodoc/source/inc/tools/tkpchars.hxx
new file mode 100644
index 000000000000..780352b888b3
--- /dev/null
+++ b/autodoc/source/inc/tools/tkpchars.hxx
@@ -0,0 +1,172 @@
+/* -*- 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 ADC_TKPCHARS_HXX
+#define ADC_TKPCHARS_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETRS
+#include <adc_cl.hxx>
+#include <stack>
+
+
+
+/** @descr
+
+ dpSource:
+
+ 1||||||||||||||||||||||a||||||||||||b|||c||||||||||||||||||||...
+
+
+ 1 := first character of Sourcecode.
+ a := nLastTokenStart, there starts the last cut token.
+ b := nLastCut, there is a '\0'-char which marks the end of
+ the last cut token. The original character at b is stored
+ in cCharAtLastCut and will replace the '\0'-char, when the
+ next token is cut.
+ c := The current cursor position.
+
+
+ @needs cosv.lib
+
+ @use This class can be used by any parser to get the chars of a
+ text one by one and separate them to tokens.
+**/
+
+class CharacterSource
+{
+ public:
+ // LIFECYCLE
+ CharacterSource();
+ ~CharacterSource();
+
+ // OPERATIONS
+ /** Loads the complete contents of in_rSource into the classes private memory.
+ If in_rSource is a file, it has to be open of course.
+ After loading the text, the CurChar() is set on the begin of the text.
+ **/
+ void LoadText(
+ csv::bstream & io_rSource);
+
+ void InsertTextAtCurPos(
+ const char * i_sText2Insert );
+
+ /// @return CurChar() after moving forward one char.
+ char MoveOn();
+ /** @return
+ The token which starts at the char which was CurChar(), when
+ CutToken() was called the last time - or at the beginning of the text.
+ The token ends by the CurChar() being replaced by a '\0'.
+
+ Value is valid until the next call of CutToken() or ~CharacterSource().
+ **/
+ const char * CutToken();
+
+ // INQUIRY
+ char CurChar() const;
+ /// @return The result of the last CutToken(). Or NULL, if there was none yet.
+ const char * CurToken() const;
+
+ // INQUIRY
+ /// @return true, if
+ bool IsFinished() const;
+
+ private:
+ struct S_SourceState
+ {
+ DYN char * dpSource;
+ intt nSourceSize;
+
+ intt nCurPos;
+ intt nLastCut;
+ intt nLastTokenStart;
+ char cCharAtLastCut;
+
+ S_SourceState(
+ DYN char * dpSource,
+ intt nSourceSize,
+ intt nCurPos,
+ intt nLastCut,
+ intt nLastTokenStart,
+ char cCharAtLastCut );
+ };
+
+ void BeginSource();
+ intt CurPos() const;
+ char MoveOn_OverStack();
+
+ // DATA
+ std::stack< S_SourceState >
+ aSourcesStack;
+
+ DYN char * dpSource;
+ intt nSourceSize;
+
+ intt nCurPos;
+ intt nLastCut;
+ intt nLastTokenStart;
+ char cCharAtLastCut;
+};
+
+
+inline char
+CharacterSource::MoveOn()
+ {
+if (DEBUG_ShowText())
+{
+ Cerr() << char(dpSource[nCurPos+1]) << Flush();
+}
+ if ( nCurPos < nSourceSize-1 )
+ return dpSource[++nCurPos];
+ else if ( aSourcesStack.size() > 0 )
+ return MoveOn_OverStack();
+ else
+ return dpSource[nCurPos = nSourceSize];
+ }
+inline char
+CharacterSource::CurChar() const
+ { return nCurPos != nLastCut ? dpSource[nCurPos] : cCharAtLastCut; }
+inline const char *
+CharacterSource::CurToken() const
+ { return &dpSource[nLastTokenStart]; }
+inline bool
+CharacterSource::IsFinished() const
+ { return nCurPos >= nSourceSize; }
+inline intt
+CharacterSource::CurPos() const
+ { return nCurPos; }
+
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/mkinc/fullcpp.mk b/autodoc/source/mkinc/fullcpp.mk
new file mode 100644
index 000000000000..75b251643180
--- /dev/null
+++ b/autodoc/source/mkinc/fullcpp.mk
@@ -0,0 +1,54 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+
+
+# --- Settings -----------------------------------------------------
+# Has to be included AFTER settings.mk !
+
+
+# RTTI
+.IF "$(GUI)"=="WNT"
+CFLAGS+= -GR
+.ENDIF
+.IF "$(OS)"=="LINUX" || "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" || $(COM) == "GCC"
+CFLAGSCXX+= -frtti
+.ENDIF
+
+
+
+# Precompiled Headers
+.IF "$(NP_LOCALBUILD)"!="" && "$(GUI)"=="WNT"
+
+PCH_NAME=autodoc
+.IF "$(debug)"==""
+CFLAGS+= -YX"precomp.h" -Fp$(PRJ)$/$(INPATH)$/misc$/$(PCH_NAME).pch
+.ELSE
+CFLAGS+= -YX"precomp.h" -Fp$(PRJ)$/$(INPATH)$/misc$/$(PCH_NAME).pcd
+.ENDIF
+
+.ENDIF # "$(NP_LOCALBUILD)"!="" && "$(GUI)"=="WNT"
diff --git a/autodoc/source/parser/adoc/a_rdocu.cxx b/autodoc/source/parser/adoc/a_rdocu.cxx
new file mode 100644
index 000000000000..212541a2f535
--- /dev/null
+++ b/autodoc/source/parser/adoc/a_rdocu.cxx
@@ -0,0 +1,92 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/a_rdocu.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <adoc/docu_pe.hxx>
+#include <adoc/adoc_tok.hxx>
+#include <ary/doc/d_oldcppdocu.hxx>
+#include <doc_deal.hxx>
+
+
+
+namespace adoc
+{
+
+
+DocuExplorer::DocuExplorer()
+ : pDocuDistributor(0),
+ pPE(new Adoc_PE),
+ bIsPassedFirstDocu(false)
+{
+}
+
+DocuExplorer::~DocuExplorer()
+{
+}
+
+void
+DocuExplorer::StartNewFile( DocuDealer & o_rDocuDistributor )
+{
+ pDocuDistributor = &o_rDocuDistributor;
+ bIsPassedFirstDocu = false;
+}
+
+
+void
+DocuExplorer::Process_Token( DYN adoc::Token & let_drToken )
+{
+ csv_assert(pDocuDistributor != 0);
+
+ let_drToken.Trigger(*pPE);
+ if ( pPE->IsComplete() )
+ {
+ ary::doc::OldCppDocu *
+ pDocu = pPE->ReleaseJustParsedDocu();
+ if ( pDocu != 0 )
+ {
+ if (bIsPassedFirstDocu)
+ pDocuDistributor->TakeDocu( *pDocu );
+ else
+ {
+ delete pDocu;
+ bIsPassedFirstDocu = true;
+ }
+ }
+ }
+
+ delete &let_drToken;
+}
+
+
+} // namespace adoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/adoc/adoc_tok.cxx b/autodoc/source/parser/adoc/adoc_tok.cxx
new file mode 100644
index 000000000000..4a63c2d0dc8f
--- /dev/null
+++ b/autodoc/source/parser/adoc/adoc_tok.cxx
@@ -0,0 +1,49 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/adoc_tok.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <adoc/atokdeal.hxx>
+#include <../cpp/c_dealer.hxx>
+
+
+namespace adoc {
+
+void
+Token::DealOut( ::TokenDealer & o_rDealer )
+{
+ o_rDealer.AsDistributor()->Deal_AdcDocu(*this);
+}
+
+
+} // namespace adoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/adoc/cx_a_std.cxx b/autodoc/source/parser/adoc/cx_a_std.cxx
new file mode 100644
index 000000000000..18d11b560ab0
--- /dev/null
+++ b/autodoc/source/parser/adoc/cx_a_std.cxx
@@ -0,0 +1,518 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/cx_a_std.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <adoc/cx_a_sub.hxx>
+#include <x_parse.hxx>
+#include <tools/tkpchars.hxx>
+#include <adoc/tk_attag.hxx>
+#include <adoc/tk_docw.hxx>
+#include <tokens/tokdeal.hxx>
+
+
+
+namespace adoc {
+
+
+const intt C_nStatusSize = 128;
+const intt C_nCppInitialNrOfStati = 400;
+
+
+const uintt nF_fin_Error = 1;
+const uintt nF_fin_Ignore = 2;
+const uintt nF_fin_LineStart = 3;
+const uintt nF_fin_Eol = 4;
+const uintt nF_fin_Eof = 5;
+const uintt nF_fin_AnyWord = 6;
+const uintt nF_fin_Whitespace = 7;
+
+const uintt nF_goto_AtTag = 20;
+const uintt nF_goto_CheckStar = 21;
+
+DYN TextToken * TCF_DocWord(const char * text) { return new Tok_DocWord(text); }
+
+DYN TextToken * TCF_atstd_ATT(const char * ) { return new Tok_at_std(ary::info::atid_ATT); }
+DYN TextToken * TCF_atstd_author(const char * ) { return new Tok_at_std(ary::info::atid_author); }
+DYN TextToken * TCF_atstd_change(const char * ) { return new Tok_at_std(ary::info::atid_change); }
+DYN TextToken * TCF_atstd_collab(const char * ) { return new Tok_at_std(ary::info::atid_collab); }
+DYN TextToken * TCF_atstd_contact(const char * ) { return new Tok_at_std(ary::info::atid_contact); }
+DYN TextToken * TCF_atstd_copyright(const char * ) { return new Tok_at_std(ary::info::atid_copyright); }
+DYN TextToken * TCF_atstd_descr(const char * ) { return new Tok_at_std(ary::info::atid_descr); }
+DYN TextToken * TCF_atstd_docdate(const char * ) { return new Tok_at_std(ary::info::atid_docdate); }
+DYN TextToken * TCF_atstd_derive(const char * ) { return new Tok_at_std(ary::info::atid_derive); }
+DYN TextToken * TCF_atstd_instance(const char * ) { return new Tok_at_std(ary::info::atid_instance); }
+DYN TextToken * TCF_atstd_life(const char * ) { return new Tok_at_std(ary::info::atid_life); }
+DYN TextToken * TCF_atstd_multi(const char * ) { return new Tok_at_std(ary::info::atid_multi); }
+DYN TextToken * TCF_atstd_onerror(const char * ) { return new Tok_at_std(ary::info::atid_onerror); }
+DYN TextToken * TCF_atstd_persist(const char * ) { return new Tok_at_std(ary::info::atid_persist); }
+DYN TextToken * TCF_atstd_postcond(const char * ) { return new Tok_at_std(ary::info::atid_postcond); }
+DYN TextToken * TCF_atstd_precond(const char * ) { return new Tok_at_std(ary::info::atid_precond); }
+DYN TextToken * TCF_atstd_responsibility(const char * ) { return new Tok_at_std(ary::info::atid_resp); }
+DYN TextToken * TCF_atstd_return(const char * ) { return new Tok_at_std(ary::info::atid_return); }
+DYN TextToken * TCF_atstd_short(const char * ) { return new Tok_at_std(ary::info::atid_short); }
+DYN TextToken * TCF_atstd_todo(const char * ) { return new Tok_at_std(ary::info::atid_todo); }
+DYN TextToken * TCF_atstd_version(const char * ) { return new Tok_at_std(ary::info::atid_version); }
+
+DYN TextToken * TCF_at_base(const char *) { return new Tok_at_base; }
+DYN TextToken * TCF_at_exception(const char *) { return new Tok_at_exception; }
+DYN TextToken * TCF_at_impl(const char *) { return new Tok_at_impl; }
+DYN TextToken * TCF_at_interface(const char *) { return new Tok_at_interface; }
+DYN TextToken * TCF_at_key(const char *) { return new Tok_at_key; }
+DYN TextToken * TCF_at_param(const char *) { return new Tok_at_param; }
+DYN TextToken * TCF_at_see(const char *) { return new Tok_at_see; }
+DYN TextToken * TCF_at_template(const char *) { return new Tok_at_template; }
+DYN TextToken * TCF_at_internal(const char *) { return new Tok_at_internal; }
+DYN TextToken * TCF_at_obsolete(const char *) { return new Tok_at_obsolete; }
+DYN TextToken * TCF_at_module(const char *) { return new Tok_at_module; }
+DYN TextToken * TCF_at_file(const char *) { return new Tok_at_file; }
+DYN TextToken * TCF_at_gloss(const char *) { return new Tok_at_gloss; }
+DYN TextToken * TCF_at_global(const char *) { return new Tok_at_global; }
+DYN TextToken * TCF_at_include(const char *) { return new Tok_at_include; }
+DYN TextToken * TCF_at_label(const char *) { return new Tok_at_label; }
+DYN TextToken * TCF_at_since(const char *) { return new Tok_at_since; }
+DYN TextToken * TCF_at_HTML(const char *) { return new Tok_at_HTML; }
+DYN TextToken * TCF_at_NOHTML(const char *) { return new Tok_at_NOHTML; }
+DYN TextToken * TCF_Whitespace(const char * i_sText);
+DYN TextToken * TCF_EoDocu(const char *) { return new Tok_EoDocu; }
+DYN TextToken * TCF_EoLine(const char *) { return new Tok_Eol; }
+DYN TextToken * TCF_Eof(const char *) { return new Tok_Eof; }
+
+
+
+
+Context_AdocStd::Context_AdocStd()
+ : aStateMachine(C_nStatusSize, C_nCppInitialNrOfStati),
+ pDealer(0),
+ pParentContext(0),
+ pFollowUpContext(0),
+ pCx_LineStart(0),
+ pCx_CheckStar(0),
+ pCx_AtTagCompletion(0),
+ pNewToken(0),
+ bIsMultiline(false)
+{
+ pCx_LineStart = new Cx_LineStart(*this);
+ pCx_CheckStar = new Cx_CheckStar(*this);
+ pCx_AtTagCompletion = new Cx_AtTagCompletion(*this);
+
+ SetupStateMachine();
+}
+
+void
+Context_AdocStd::SetParentContext( TkpContext & io_rParentContext,
+ const char * )
+{
+ pFollowUpContext = pParentContext = &io_rParentContext;
+ pCx_CheckStar->Set_End_FollowUpContext(io_rParentContext);
+}
+
+Context_AdocStd::~Context_AdocStd()
+{
+}
+
+void
+Context_AdocStd::AssignDealer( TokenDealer & o_rDealer )
+{
+ pDealer = &o_rDealer;
+ pCx_LineStart->AssignDealer(o_rDealer);
+ pCx_CheckStar->AssignDealer(o_rDealer);
+ pCx_AtTagCompletion->AssignDealer(o_rDealer);
+}
+
+void
+Context_AdocStd::ReadCharChain( CharacterSource & io_rText )
+{
+ csv_assert(pParentContext != 0);
+ pNewToken = 0;
+
+ TextToken::F_CRTOK fTokenCreateFunction = 0;
+ StmBoundsStatus & rBound = aStateMachine.GetCharChain(fTokenCreateFunction, io_rText);
+
+ // !!!
+ // The order of the next two lines is essential, because
+ // pFollowUpContext may be changed by PerformStatusFunction() also,
+ // which then MUST override the previous assignment.
+ pFollowUpContext = rBound.FollowUpContext();
+ PerformStatusFunction(rBound.StatusFunctionNr(), fTokenCreateFunction, io_rText);
+}
+
+bool
+Context_AdocStd::PassNewToken()
+{
+ if (pNewToken)
+ {
+ pNewToken.Release()->DealOut(*pDealer);
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Context_AdocStd::FollowUpContext()
+{
+ csv_assert(pFollowUpContext != 0);
+ return *pFollowUpContext;
+}
+
+void
+Context_AdocStd::PerformStatusFunction( uintt i_nStatusSignal,
+ F_CRTOK i_fTokenCreateFunction,
+ CharacterSource & io_rText )
+{
+ switch (i_nStatusSignal)
+ {
+ case nF_fin_Error:
+ {
+ char cCC = io_rText.CurChar();
+ String sChar( &cCC, 1 );
+ throw X_Parser(X_Parser::x_InvalidChar, sChar, String ::Null_(), 0);
+ } // no break, because of throw
+ case nF_fin_Ignore:
+ io_rText.CutToken();
+ pNewToken = 0;
+ break;
+ case nF_fin_LineStart:
+ csv_assert(i_fTokenCreateFunction != 0);
+ pNewToken = (*i_fTokenCreateFunction)(io_rText.CutToken());
+ break;
+ case nF_fin_Eol:
+ io_rText.CutToken();
+ pDealer->Deal_Eol();
+ if ( bIsMultiline )
+ {
+ pNewToken = TCF_EoLine(0);
+ pFollowUpContext = pCx_LineStart.Ptr();
+ }
+ else
+ {
+ pNewToken = TCF_EoDocu(0);
+ pFollowUpContext = pParentContext;
+ }
+ break;
+ case nF_fin_Eof:
+ pNewToken = TCF_Eof(0);
+ break;
+ case nF_fin_AnyWord:
+ if (i_fTokenCreateFunction != 0)
+ pNewToken = (*i_fTokenCreateFunction)(io_rText.CutToken());
+ else
+ pNewToken = TCF_DocWord(io_rText.CutToken());
+ break;
+ case nF_fin_Whitespace:
+ pNewToken = TCF_Whitespace(io_rText.CutToken());
+ break;
+ case nF_goto_AtTag:
+ pNewToken = 0;
+ pCx_AtTagCompletion->SetCurToken(i_fTokenCreateFunction);
+ break;
+ case nF_goto_CheckStar:
+ pNewToken = 0;
+ pCx_CheckStar->SetCanBeEnd( bIsMultiline );
+ break;
+ default:
+ {
+ char cCC = io_rText.CurChar();
+ String sChar( &cCC, 1 );
+ throw X_Parser(X_Parser::x_InvalidChar, sChar, String::Null_(), 0);
+ }
+ } // end switch (i_nStatusSignal)
+}
+
+void
+Context_AdocStd::SetupStateMachine()
+{
+ // Besondere Array-Stati (kein Tokenabschluss oder Kontextwechsel):
+// const INT16 bas = 0; // Base-Status
+ const INT16 wht = 1; // Whitespace-Status
+ const INT16 awd = 2; // Any-Word-Read-Status
+
+ // Kontextwechsel-Stati:
+ const INT16 goto_CheckStar = 3;
+ const INT16 goto_AtTag = 4;
+
+ // Tokenfinish-Stati:
+ const INT16 finError = 5;
+// const INT16 finIgnore = 6;
+ const INT16 finEol = 7;
+ const INT16 finEof = 8;
+ const INT16 finAnyWord = 9;
+ const INT16 finWhitespace = 10;
+
+ // Konstanten zur Benutzung in der Tabelle:
+ const INT16 fof = finEof;
+ const INT16 err = finError;
+ const INT16 faw = finAnyWord;
+// const INT16 fig = finIgnore;
+ const INT16 fwh = finWhitespace;
+
+ /// The '0's will be replaced by calls of AddToken().
+
+ const INT16 A_nTopStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht, 0,wht,wht, 0,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // ... 31
+ wht,awd,awd,awd,awd,awd,awd,awd,awd,awd, 0,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 63
+ 0,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
+ };
+
+ const INT16 A_nWhitespaceStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht,fwh,wht,wht,fwh,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // ... 31
+ wht,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh, // ... 63
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh, // ... 95
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh // ... 127
+ };
+
+ const INT16 A_nWordStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {faw,err,err,err,err,err,err,err,err,faw,faw,faw,faw,faw,err,err,
+ err,err,err,err,err,err,err,err,err,err,faw,err,err,err,err,err, // ... 31
+ faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 63
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
+ };
+
+ const INT16 A_nAtTagDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {faw,err,err,err,err,err,err,err,err,faw,faw,faw,faw,faw,err,err,
+ err,err,err,err,err,err,err,err,err,err,faw,err,err,err,err,err, // ... 31
+ faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 63
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
+ };
+
+ const INT16 A_nPunctDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 16 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 48 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 80 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err // 112 ...
+ };
+
+ DYN StmArrayStatus * dpStatusTop
+ = new StmArrayStatus( C_nStatusSize, A_nTopStatus, 0, true);
+ DYN StmArrayStatus * dpStatusWhite
+ = new StmArrayStatus( C_nStatusSize, A_nWhitespaceStatus, 0, true);
+ DYN StmArrayStatus * dpStatusWord
+ = new StmArrayStatus( C_nStatusSize, A_nWordStatus, TCF_DocWord, true);
+
+ DYN StmBoundsStatus * dpBst_goto_CheckStar
+ = new StmBoundsStatus( *this, *pCx_CheckStar, nF_goto_CheckStar, true );
+ DYN StmBoundsStatus * dpBst_goto_AtTag
+ = new StmBoundsStatus( *this, *pCx_AtTagCompletion, nF_goto_AtTag, true );
+
+ DYN StmBoundsStatus * dpBst_finError
+ = new StmBoundsStatus( *this, TkpContext::Null_(), nF_fin_Error, true );
+ DYN StmBoundsStatus * dpBst_finIgnore
+ = new StmBoundsStatus( *this, *this, nF_fin_Ignore, true);
+ DYN StmBoundsStatus * dpBst_finEol
+ = new StmBoundsStatus( *this, *pCx_LineStart, nF_fin_Eol, false);
+ DYN StmBoundsStatus * dpBst_finEof
+ = new StmBoundsStatus( *this, TkpContext::Null_(), nF_fin_Eof, false);
+ DYN StmBoundsStatus * dpBst_finAnyWord
+ = new StmBoundsStatus( *this, *this, nF_fin_AnyWord, true);
+ DYN StmBoundsStatus * dpBst_finWhitespace
+ = new StmBoundsStatus( *this, *this, nF_fin_Whitespace, true);
+
+ // dpMain aufbauen:
+ aStateMachine.AddStatus(dpStatusTop);
+ aStateMachine.AddStatus(dpStatusWhite);
+ aStateMachine.AddStatus(dpStatusWord);
+
+ aStateMachine.AddStatus(dpBst_goto_CheckStar);
+ aStateMachine.AddStatus(dpBst_goto_AtTag);
+
+ aStateMachine.AddStatus(dpBst_finError);
+ aStateMachine.AddStatus(dpBst_finIgnore);
+ aStateMachine.AddStatus(dpBst_finEol);
+ aStateMachine.AddStatus(dpBst_finEof);
+ aStateMachine.AddStatus(dpBst_finAnyWord);
+ aStateMachine.AddStatus(dpBst_finWhitespace);
+
+ aStateMachine.AddToken( "*", 0, A_nPunctDefStatus, goto_CheckStar );
+ aStateMachine.AddToken( "@ATT", TCF_atstd_ATT, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@att", TCF_atstd_ATT, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@ATTENTION",
+ TCF_atstd_ATT, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@attention",
+ TCF_atstd_ATT, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@author", TCF_atstd_author, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@change", TCF_atstd_change, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@collab", TCF_atstd_collab, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@collaborator",
+ TCF_atstd_collab, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@contact", TCF_atstd_contact, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@copyright",TCF_atstd_copyright, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@descr", TCF_atstd_descr, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@docdate", TCF_atstd_docdate, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@derive", TCF_atstd_derive, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@instance",TCF_atstd_instance, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@life", TCF_atstd_life, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@lifecycle",
+ TCF_atstd_life, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@multi", TCF_atstd_multi, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@multiplicity",
+ TCF_atstd_multi, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@onerror", TCF_atstd_onerror, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@persist", TCF_atstd_persist, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@postcond",TCF_atstd_postcond,A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@precond", TCF_atstd_precond, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@resp", TCF_atstd_responsibility,
+ A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@responsibility",
+ TCF_atstd_return, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@return", TCF_atstd_return, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@short", TCF_atstd_short, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@todo", TCF_atstd_todo, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@version", TCF_atstd_version, A_nAtTagDefStatus, goto_AtTag );
+
+ aStateMachine.AddToken( "@base", TCF_at_base, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@exception",TCF_at_exception, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@impl", TCF_at_impl, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@key", TCF_at_key, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@param", TCF_at_param, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@see", TCF_at_see, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@seealso", TCF_at_see, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@since", TCF_at_since, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@tpl", TCF_at_template, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@tplparam",
+ TCF_at_template, A_nAtTagDefStatus, goto_AtTag );
+
+ aStateMachine.AddToken( "@interface",TCF_at_interface, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@internal",TCF_at_internal, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@obsolete",TCF_at_obsolete, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@deprecated",TCF_at_obsolete, A_nAtTagDefStatus, goto_AtTag );
+
+ aStateMachine.AddToken( "@module", TCF_at_module, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@file", TCF_at_file, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@gloss", TCF_at_gloss, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@global#", TCF_at_global, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@include#",TCF_at_include, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@#", TCF_at_label, A_nAtTagDefStatus, goto_AtTag );
+
+ aStateMachine.AddToken( "@HTML", TCF_at_HTML, A_nAtTagDefStatus, goto_AtTag );
+ aStateMachine.AddToken( "@NOHTML", TCF_at_NOHTML, A_nAtTagDefStatus, goto_AtTag );
+
+ aStateMachine.AddToken( "\r\n", 0, A_nPunctDefStatus, finEol );
+ aStateMachine.AddToken( "\n", 0, A_nPunctDefStatus, finEol );
+ aStateMachine.AddToken( "\r", 0, A_nPunctDefStatus, finEol );
+};
+
+void
+Context_AdocStd::SetMode_IsMultiLine( bool i_bTrue )
+{
+ bIsMultiline = i_bTrue;
+}
+
+DYN TextToken *
+TCF_Whitespace(const char * i_sText)
+{
+ UINT8 nSize = static_cast<UINT8>(strlen(i_sText));
+ for ( const char * pTab = strchr(i_sText,'\t');
+ pTab != 0;
+ pTab = strchr(pTab+1,'\t') )
+ {
+ nSize += 3;
+ }
+
+ return new Tok_Whitespace(nSize);
+}
+
+
+} // namespace adoc
+
+
+/*
+@ATT[ENTION]
+@author
+@change[s]
+@collab[orators]
+@contact
+@copyright
+@descr
+@devstat[e]
+@docdate
+@derive
+@instance
+@life[cycle]
+@multi[plicity]
+@onerror
+@persist[ence]
+@postcond
+@precond
+@return
+@short
+@todo
+
+@module
+@file
+@gloss[ary]
+
+
+@base <BasisklassenName>
+@exception <ExceptionName>
+@impl[ements] <IDL-Construct>
+@key[words]|[s]
+@param <FunctionParameterName> [<Range of valid values>]
+@see[also]
+@templ[ate] <FormalTemplateParameterName>
+
+@internal
+@obsolete
+
+@#<Label>
+
+@global#<Label> Global comment.
+@include#<Label>
+
+
+*/
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/adoc/cx_a_sub.cxx b/autodoc/source/parser/adoc/cx_a_sub.cxx
new file mode 100644
index 000000000000..335e2adbc6a1
--- /dev/null
+++ b/autodoc/source/parser/adoc/cx_a_sub.cxx
@@ -0,0 +1,184 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/cx_a_sub.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <tokens/parseinc.hxx>
+#include <x_parse.hxx>
+#include <adoc/tk_docw.hxx>
+
+
+namespace adoc {
+
+//************************ Cx_LineStart ************************//
+
+Cx_LineStart::Cx_LineStart( TkpContext & i_rFollowUpContext )
+ : pDealer(0),
+ pFollowUpContext(&i_rFollowUpContext)
+{
+}
+
+void
+Cx_LineStart::ReadCharChain( CharacterSource & io_rText )
+{
+ uintt nCount = 0;
+ for ( char cNext = io_rText.CurChar(); cNext == 32 OR cNext == 9; cNext = io_rText.MoveOn() )
+ {
+ if (cNext == 32)
+ nCount++;
+ else if (cNext == 9)
+ nCount += 4;
+ }
+ io_rText.CutToken();
+
+ if (nCount < 50)
+ pNewToken = new Tok_LineStart(UINT8(nCount));
+ else
+ pNewToken = new Tok_LineStart(0);
+}
+
+bool
+Cx_LineStart::PassNewToken()
+{
+ if (pNewToken)
+ {
+ pNewToken.Release()->DealOut(*pDealer);
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Cx_LineStart::FollowUpContext()
+{
+ return *pFollowUpContext;
+}
+
+
+//************************ Cx_CheckStar ************************//
+
+Cx_CheckStar::Cx_CheckStar( TkpContext & i_rFollowUpContext )
+ : pDealer(0),
+ pFollowUpContext(&i_rFollowUpContext),
+ pEnd_FollowUpContext(0),
+ bCanBeEnd(false),
+ bEndTokenFound(false)
+{
+}
+
+
+void
+Cx_CheckStar::ReadCharChain( CharacterSource & io_rText )
+{
+ bEndTokenFound = false;
+ if (bCanBeEnd)
+ {
+ char cNext = jumpOver(io_rText,'*');
+ if ( NULCH == cNext )
+ throw X_Parser(X_Parser::x_UnexpectedEOF, "", String::Null_(), 0);
+ if (cNext == '/')
+ {
+ io_rText.MoveOn();
+ pNewToken = new Tok_EoDocu;
+ bEndTokenFound = true;
+ }
+ else
+ {
+ pNewToken = new Tok_DocWord(io_rText.CutToken());
+ }
+ }
+ else
+ {
+ jumpToWhite(io_rText);
+ pNewToken = new Tok_DocWord(io_rText.CutToken());
+ }
+}
+
+bool
+Cx_CheckStar::PassNewToken()
+{
+ if (pNewToken)
+ {
+ pNewToken.Release()->DealOut(*pDealer);
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Cx_CheckStar::FollowUpContext()
+{
+ if (bEndTokenFound)
+ return *pEnd_FollowUpContext;
+ else
+ return *pFollowUpContext;
+}
+
+
+//************************ Cx_AtTagCompletion ************************//
+
+Cx_AtTagCompletion::Cx_AtTagCompletion( TkpContext & i_rFollowUpContext )
+ : pDealer(0),
+ pFollowUpContext(&i_rFollowUpContext)
+{
+}
+
+void
+Cx_AtTagCompletion::ReadCharChain( CharacterSource & io_rText )
+{
+ jumpToWhite(io_rText);
+ csv_assert(fCur_TokenCreateFunction != 0);
+ pNewToken = (*fCur_TokenCreateFunction)(io_rText.CutToken());
+}
+
+bool
+Cx_AtTagCompletion::PassNewToken()
+{
+ if (pNewToken)
+ {
+ pNewToken.Release()->DealOut(*pDealer);
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Cx_AtTagCompletion::FollowUpContext()
+{
+ return *pFollowUpContext;
+}
+
+
+
+
+} // namespace adoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/adoc/docu_pe.cxx b/autodoc/source/parser/adoc/docu_pe.cxx
new file mode 100644
index 000000000000..d54e0295f38e
--- /dev/null
+++ b/autodoc/source/parser/adoc/docu_pe.cxx
@@ -0,0 +1,405 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/docu_pe.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/doc/d_oldcppdocu.hxx>
+#include <ary/info/ci_attag.hxx>
+#include <ary/info/ci_text.hxx>
+#include <adoc/adoc_tok.hxx>
+#include <adoc/tk_attag.hxx>
+#include <adoc/tk_docw.hxx>
+
+
+namespace adoc
+{
+
+
+inline bool
+Adoc_PE::UsesHtmlInDocuText()
+{
+ return bUsesHtmlInDocuText;
+}
+
+
+
+
+Adoc_PE::Adoc_PE()
+ : pCurDocu(0),
+ pCurAtTag(0),
+ nLineCountInDocu(0),
+ nCurSpecialMeaningTokens(0),
+ nCurSubtractFromLineStart(0),
+ eCurTagState(ts_new),
+ eDocuState(ds_wait_for_short),
+ bIsComplete(false),
+ bUsesHtmlInDocuText(false)
+{
+}
+
+Adoc_PE::~Adoc_PE()
+{
+}
+
+void
+Adoc_PE::Hdl_at_std( const Tok_at_std & i_rTok )
+{
+ InstallAtTag(
+ CurDocu().Create_StdTag(i_rTok.Id()) );
+}
+
+void
+Adoc_PE::Hdl_at_base( const Tok_at_base & )
+{
+ InstallAtTag(
+ CurDocu().CheckIn_BaseTag() );
+}
+
+void
+Adoc_PE::Hdl_at_exception( const Tok_at_exception & )
+{
+ InstallAtTag(
+ CurDocu().CheckIn_ExceptionTag() );
+}
+
+void
+Adoc_PE::Hdl_at_impl( const Tok_at_impl & )
+{
+ InstallAtTag(
+ CurDocu().Create_ImplementsTag() );
+}
+
+void
+Adoc_PE::Hdl_at_key( const Tok_at_key & )
+{
+ InstallAtTag(
+ CurDocu().Create_KeywordTag() );
+}
+
+void
+Adoc_PE::Hdl_at_param( const Tok_at_param & )
+{
+ InstallAtTag(
+ CurDocu().CheckIn_ParameterTag() );
+}
+
+void
+Adoc_PE::Hdl_at_see( const Tok_at_see & )
+{
+ InstallAtTag(
+ CurDocu().CheckIn_SeeTag() );
+}
+
+void
+Adoc_PE::Hdl_at_template( const Tok_at_template & )
+{
+ InstallAtTag(
+ CurDocu().CheckIn_TemplateTag() );
+}
+
+void
+Adoc_PE::Hdl_at_interface( const Tok_at_interface & )
+{
+ CurDocu().Set_Interface();
+}
+
+void
+Adoc_PE::Hdl_at_internal( const Tok_at_internal & )
+{
+ CurDocu().Set_Internal();
+}
+
+void
+Adoc_PE::Hdl_at_obsolete( const Tok_at_obsolete & )
+{
+ CurDocu().Set_Obsolete();
+}
+
+void
+Adoc_PE::Hdl_at_module( const Tok_at_module & )
+{
+ // KORR_FUTURE
+
+// pCurAtTag = CurDocu().Assign2_ModuleTag();
+// nCurSpecialMeaningTokens = pCurAtTag->NrOfSpecialMeaningTokens();
+}
+
+void
+Adoc_PE::Hdl_at_file( const Tok_at_file & )
+{
+ // KORR_FUTURE
+
+// pCurAtTag = CurDocu().Assign2_FileTag();
+// nCurSpecialMeaningTokens = pCurAtTag->NrOfSpecialMeaningTokens();
+}
+
+void
+Adoc_PE::Hdl_at_gloss( const Tok_at_gloss & )
+{
+ // KORR_FUTURE
+
+// Create_GlossaryEntry();
+}
+
+void
+Adoc_PE::Hdl_at_global( const Tok_at_global & )
+{
+ // KORR_FUTURE
+// Create_GlobalTextComponent();
+}
+
+void
+Adoc_PE::Hdl_at_include( const Tok_at_include & )
+{
+ // KORR_FUTURE
+}
+
+void
+Adoc_PE::Hdl_at_label( const Tok_at_label & )
+{
+ InstallAtTag(
+ CurDocu().Create_LabelTag() );
+}
+
+void
+Adoc_PE::Hdl_at_since( const Tok_at_since & )
+{
+ InstallAtTag(
+ CurDocu().Create_SinceTag() );
+}
+
+void
+Adoc_PE::Hdl_at_HTML( const Tok_at_HTML & )
+{
+ bUsesHtmlInDocuText = true;
+}
+
+void
+Adoc_PE::Hdl_at_NOHTML( const Tok_at_NOHTML & )
+{
+ bUsesHtmlInDocuText = false;
+}
+
+void
+Adoc_PE::Hdl_DocWord( const Tok_DocWord & i_rTok )
+{
+ bool bIsSpecial = false;
+ if ( nCurSpecialMeaningTokens > 0 )
+ {
+ bIsSpecial = CurAtTag().Add_SpecialMeaningToken(
+ i_rTok.Text(),
+ CurAtTag().NrOfSpecialMeaningTokens()
+ - (--nCurSpecialMeaningTokens) );
+ }
+
+ if ( NOT bIsSpecial )
+ {
+ if ( eDocuState == ds_wait_for_short OR eDocuState == ds_1newline_after_short )
+ eDocuState = ds_in_short;
+ if (nLineCountInDocu == 0)
+ nLineCountInDocu = 1;
+
+ uintt nLength = i_rTok.Length();
+ if ( nLength > 2 )
+ {
+ bool bMaybeGlobalLink = strncmp( "::", i_rTok.Text(), 2 ) == 0;
+ bool bMayBeFunction = *(i_rTok.Text() + nLength - 2) == '('
+ AND *(i_rTok.Text() + nLength - 1) == ')';
+ if ( bMaybeGlobalLink OR bMayBeFunction )
+ {
+ CurAtTag().Add_PotentialLink( i_rTok.Text(),
+ bMaybeGlobalLink,
+ bMayBeFunction );
+ return;
+ }
+ }
+
+ CurAtTag().Add_Token( i_rTok.Text() );
+ eCurTagState = ts_std;
+ }
+}
+
+void
+Adoc_PE::Hdl_Whitespace( const Tok_Whitespace & i_rTok )
+{
+ if ( eCurTagState == ts_std )
+ {
+
+ CurAtTag().Add_Whitespace(i_rTok.Size());
+ }
+}
+
+void
+Adoc_PE::Hdl_LineStart( const Tok_LineStart & i_rTok )
+{
+ if ( pCurAtTag == 0 )
+ return;
+
+ if ( nLineCountInDocu == 2 )
+ {
+ nCurSubtractFromLineStart = i_rTok.Size();
+ eCurTagState = ts_std;
+ }
+ else if ( nLineCountInDocu > 2 )
+ {
+ if ( i_rTok.Size() > nCurSubtractFromLineStart )
+ {
+ CurAtTag().Add_Whitespace( i_rTok.Size()
+ - nCurSubtractFromLineStart );
+ }
+ // else do nothing, because there is no whitespace.
+ }
+}
+
+void
+Adoc_PE::Hdl_Eol( const Tok_Eol & )
+{
+ if ( pCurAtTag == 0 )
+ return;
+
+ nLineCountInDocu++;
+
+ if ( nCurSpecialMeaningTokens == 0 )
+ {
+ CurAtTag().Add_Eol();
+
+ switch ( eDocuState )
+ {
+ case ds_wait_for_short: break;
+ case ds_in_short: if ( nLineCountInDocu < 4 )
+ eDocuState = ds_1newline_after_short;
+ else
+ {
+ RenameCurShortTag();
+ eDocuState = ds_in_descr;
+ }
+ break;
+ case ds_1newline_after_short: FinishCurShortTag();
+ eDocuState = ds_in_descr;
+ break;
+ default:
+ ; // Do noting.
+ }
+ }
+ else
+ {
+ nCurSpecialMeaningTokens = 0;
+ }
+
+
+}
+
+void
+Adoc_PE::Hdl_EoDocu( const Tok_EoDocu & )
+{
+ bIsComplete = true;
+}
+
+DYN ary::doc::OldCppDocu *
+Adoc_PE::ReleaseJustParsedDocu()
+{
+ pCurAtTag = 0;
+ nLineCountInDocu = 0;
+ nCurSpecialMeaningTokens = 0;
+ nCurSubtractFromLineStart = 0;
+ eCurTagState = ts_new;
+ eDocuState = ds_wait_for_short;
+ bIsComplete = false;
+ return pCurDocu.Release();
+}
+
+void
+Adoc_PE::InstallAtTag( DYN ary::info::AtTag * let_dpTag,
+ bool i_bImplicit )
+{
+ pCurAtTag = let_dpTag;
+ if ( pCurAtTag != 0 )
+ {
+ nCurSpecialMeaningTokens = pCurAtTag->NrOfSpecialMeaningTokens();
+ pCurAtTag->Set_HtmlUseInDocuText( bUsesHtmlInDocuText );
+ }
+
+ eCurTagState = ts_new;
+ if ( NOT i_bImplicit )
+ eDocuState = ds_std;
+}
+
+ary::doc::OldCppDocu &
+Adoc_PE::CurDocu()
+{
+ if (NOT pCurDocu)
+ pCurDocu = new ary::doc::OldCppDocu;
+ return *pCurDocu;
+}
+
+ary::info::AtTag &
+Adoc_PE::CurAtTag()
+{
+ if (NOT pCurAtTag)
+ {
+ if ( int(eDocuState) < int(ds_in_descr) )
+ {
+ InstallAtTag(
+ CurDocu().Create_StdTag(ary::info::atid_short),
+ true );
+ }
+ else
+ {
+ InstallAtTag(
+ CurDocu().Create_StdTag(ary::info::atid_descr),
+ true );
+ }
+ }
+ return *pCurAtTag;
+}
+
+void
+Adoc_PE::RenameCurShortTag()
+{
+ CurDocu().Replace_AtShort_By_AtDescr();
+}
+
+void
+Adoc_PE::FinishCurShortTag()
+{
+ InstallAtTag(
+ CurDocu().Create_StdTag(ary::info::atid_descr),
+ true );
+}
+
+
+} // namespace adoc
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/adoc/makefile.mk b/autodoc/source/parser/adoc/makefile.mk
new file mode 100644
index 000000000000..48e4084ee401
--- /dev/null
+++ b/autodoc/source/parser/adoc/makefile.mk
@@ -0,0 +1,62 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=parser_adoc
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/adoc_tok.obj \
+ $(OBJ)$/a_rdocu.obj \
+ $(OBJ)$/cx_a_std.obj \
+ $(OBJ)$/cx_a_sub.obj \
+ $(OBJ)$/docu_pe.obj \
+ $(OBJ)$/prs_adoc.obj \
+ $(OBJ)$/tk_attag.obj \
+ $(OBJ)$/tk_docw.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser/adoc/prs_adoc.cxx b/autodoc/source/parser/adoc/prs_adoc.cxx
new file mode 100644
index 000000000000..f2e48f7ee75d
--- /dev/null
+++ b/autodoc/source/parser/adoc/prs_adoc.cxx
@@ -0,0 +1,59 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/prs_adoc.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <adoc/cx_a_std.hxx>
+
+
+
+namespace adoc
+{
+
+DocuParser_AutodocStyle::DocuParser_AutodocStyle()
+{
+}
+
+DocuParser_AutodocStyle::~DocuParser_AutodocStyle()
+{
+}
+
+DYN autodoc::TkpDocuContext *
+DocuParser_AutodocStyle::Create_DocuContext() const
+{
+ return new Context_AdocStd;
+}
+
+} // namespace adoc
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/adoc/tk_attag.cxx b/autodoc/source/parser/adoc/tk_attag.cxx
new file mode 100644
index 000000000000..6c9b500d4740
--- /dev/null
+++ b/autodoc/source/parser/adoc/tk_attag.cxx
@@ -0,0 +1,86 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/tk_attag.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <adoc/tokintpr.hxx>
+
+
+
+namespace adoc {
+
+void
+Tok_at_std::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Hdl_at_std(*this);
+}
+
+const char *
+Tok_at_std::Text() const
+{
+ // KORR_FUTURE
+ return "A Tag";
+
+// return eId.Text();
+}
+
+
+#define DEFINE_TOKEN_CLASS(name, text) \
+void \
+Tok_##name::Trigger( TokenInterpreter & io_rInterpreter ) const \
+{ io_rInterpreter.Hdl_##name(*this); } \
+const char * \
+Tok_##name::Text() const \
+{ return text; }
+
+DEFINE_TOKEN_CLASS(at_base, "Base Classes")
+DEFINE_TOKEN_CLASS(at_exception, "Exceptions")
+DEFINE_TOKEN_CLASS(at_impl, "Implements")
+DEFINE_TOKEN_CLASS(at_key, "Keywords")
+DEFINE_TOKEN_CLASS(at_param, "Parameters")
+DEFINE_TOKEN_CLASS(at_see, "See Also")
+DEFINE_TOKEN_CLASS(at_template, "Template Parameters")
+DEFINE_TOKEN_CLASS(at_interface, "Interface")
+DEFINE_TOKEN_CLASS(at_internal, "[ INTERNAL ]")
+DEFINE_TOKEN_CLASS(at_obsolete, "[ DEPRECATED ]")
+DEFINE_TOKEN_CLASS(at_module, "Module")
+DEFINE_TOKEN_CLASS(at_file, "File")
+DEFINE_TOKEN_CLASS(at_gloss, "Glossary")
+DEFINE_TOKEN_CLASS(at_global, "<global doc text>")
+DEFINE_TOKEN_CLASS(at_include, "<included text>")
+DEFINE_TOKEN_CLASS(at_label, "Label")
+DEFINE_TOKEN_CLASS(at_HTML, "")
+DEFINE_TOKEN_CLASS(at_NOHTML, "")
+DEFINE_TOKEN_CLASS(at_since, "Since");
+
+} // namespace adoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/adoc/tk_docw.cxx b/autodoc/source/parser/adoc/tk_docw.cxx
new file mode 100644
index 000000000000..f7c3adb55761
--- /dev/null
+++ b/autodoc/source/parser/adoc/tk_docw.cxx
@@ -0,0 +1,130 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <adoc/tk_docw.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <adoc/tokintpr.hxx>
+
+
+
+namespace adoc {
+
+
+ static const char C_sSpace[300] =
+ " "
+ " "
+ " "
+ " "
+ " "
+ " ";
+
+
+//*********************** Tok_DocWord ******************//
+
+void
+Tok_DocWord::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Hdl_DocWord(*this);
+}
+
+const char *
+Tok_DocWord::Text() const
+{
+ return sText;
+}
+
+//*********************** Tok_Whitespace ******************//
+
+
+void
+Tok_Whitespace::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Hdl_Whitespace(*this);
+}
+
+const char *
+Tok_Whitespace::Text() const
+{
+ return C_sSpace + 299 - nSize;
+}
+
+
+
+//*********************** Tok_LineStart ******************//
+
+
+void
+Tok_LineStart::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Hdl_LineStart(*this);
+}
+
+const char *
+Tok_LineStart::Text() const
+{
+ return C_sSpace + 299 - nSize;
+}
+
+
+//*********************** Tok_Eol ******************//
+
+void
+Tok_Eol::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Hdl_Eol(*this);
+}
+
+const char *
+Tok_Eol::Text() const
+{
+ return "\n";
+}
+
+
+
+//*********************** Tok_EoDocu ******************//
+
+void
+Tok_EoDocu::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Hdl_EoDocu(*this);
+}
+
+const char *
+Tok_EoDocu::Text() const
+{
+ return "*/";
+}
+
+} // namespace adoc
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/all_toks.cxx b/autodoc/source/parser/cpp/all_toks.cxx
new file mode 100644
index 000000000000..3ea666ee94a9
--- /dev/null
+++ b/autodoc/source/parser/cpp/all_toks.cxx
@@ -0,0 +1,154 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <all_toks.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cpp/ctokdeal.hxx>
+#include "c_dealer.hxx"
+#include "tokintpr.hxx"
+
+
+
+namespace cpp {
+
+
+void
+Token::DealOut( ::TokenDealer & o_rDealer )
+{
+ // KORR_FUTURE HACK (casting to derivation cpp::TokenDealer)
+ o_rDealer.AsDistributor()->Deal_CppCode(*this);
+}
+
+
+#define DEF_TOKEN_CLASS(name) \
+void \
+Tok_##name::Trigger( TokenInterpreter & io_rInterpreter ) const \
+{ io_rInterpreter.Hdl_##name(*this); } \
+INT16 \
+Tok_##name::TypeId() const { return Tid_##name; } \
+const char * \
+Tok_##name::Text() const { return #name; }
+
+#define DEF_TOKEN_CLASS_WITHTEXT(name, text ) \
+void \
+Tok_##name::Trigger( TokenInterpreter & io_rInterpreter ) const \
+{ io_rInterpreter.Hdl_##name(*this); } \
+INT16 \
+Tok_##name::TypeId() const { return Tid_##name; } \
+const char * \
+Tok_##name::Text() const { return text; }
+
+
+DEF_TOKEN_CLASS_WITHTEXT(Identifier,sText)
+DEF_TOKEN_CLASS_WITHTEXT(Operator,sText)
+
+DEF_TOKEN_CLASS(operator)
+DEF_TOKEN_CLASS(class)
+DEF_TOKEN_CLASS(struct)
+DEF_TOKEN_CLASS(union)
+DEF_TOKEN_CLASS(enum)
+DEF_TOKEN_CLASS(typedef)
+DEF_TOKEN_CLASS(public)
+DEF_TOKEN_CLASS(protected)
+DEF_TOKEN_CLASS(private)
+DEF_TOKEN_CLASS(template)
+DEF_TOKEN_CLASS(virtual)
+DEF_TOKEN_CLASS(friend)
+DEF_TOKEN_CLASS_WITHTEXT(Tilde,"~")
+DEF_TOKEN_CLASS(const)
+DEF_TOKEN_CLASS(volatile)
+DEF_TOKEN_CLASS(extern)
+DEF_TOKEN_CLASS(static)
+DEF_TOKEN_CLASS(mutable)
+DEF_TOKEN_CLASS(register)
+DEF_TOKEN_CLASS(inline)
+DEF_TOKEN_CLASS(explicit)
+DEF_TOKEN_CLASS(namespace)
+DEF_TOKEN_CLASS(using)
+DEF_TOKEN_CLASS(throw)
+DEF_TOKEN_CLASS_WITHTEXT(SwBracket_Left,"{")
+DEF_TOKEN_CLASS_WITHTEXT(SwBracket_Right,"}")
+DEF_TOKEN_CLASS_WITHTEXT(ArrayBracket_Left,"[")
+DEF_TOKEN_CLASS_WITHTEXT(ArrayBracket_Right,"]")
+DEF_TOKEN_CLASS_WITHTEXT(Bracket_Left,"(")
+DEF_TOKEN_CLASS_WITHTEXT(Bracket_Right,")")
+DEF_TOKEN_CLASS_WITHTEXT(DoubleColon,"::")
+DEF_TOKEN_CLASS_WITHTEXT(Semicolon,";")
+DEF_TOKEN_CLASS_WITHTEXT(Comma,",")
+DEF_TOKEN_CLASS_WITHTEXT(Colon,":")
+DEF_TOKEN_CLASS_WITHTEXT(Assign,"=")
+DEF_TOKEN_CLASS_WITHTEXT(Less,"<")
+DEF_TOKEN_CLASS_WITHTEXT(Greater,">")
+DEF_TOKEN_CLASS_WITHTEXT(Asterix,"*")
+DEF_TOKEN_CLASS_WITHTEXT(AmpersAnd,"&")
+DEF_TOKEN_CLASS_WITHTEXT(Ellipse,"...")
+DEF_TOKEN_CLASS(typename)
+
+DEF_TOKEN_CLASS_WITHTEXT(DefineName,sText)
+DEF_TOKEN_CLASS_WITHTEXT(MacroName,sText)
+DEF_TOKEN_CLASS_WITHTEXT(MacroParameter,sText)
+// DEF_TOKEN_CLASS_WITHTEXT(PreProDefinition,sText)
+
+void
+Tok_PreProDefinition::Trigger( TokenInterpreter & io_rInterpreter ) const
+{ io_rInterpreter.Hdl_PreProDefinition(*this); }
+
+INT16
+Tok_PreProDefinition::TypeId() const { return Tid_PreProDefinition; }
+
+const char *
+Tok_PreProDefinition::Text() const
+{
+ return sText;
+}
+
+
+
+DEF_TOKEN_CLASS_WITHTEXT(BuiltInType,sText)
+DEF_TOKEN_CLASS_WITHTEXT(TypeSpecializer,sText)
+DEF_TOKEN_CLASS_WITHTEXT(Constant,sText)
+
+const char *
+Tok_UnblockMacro::Text() const
+{
+ return sMacroName;
+}
+
+void
+Tok_UnblockMacro::DealOut( ::TokenDealer & o_rDealer )
+{
+ // KORR_FUTURE HACK (casting to derivation cpp::TokenDealer)
+ o_rDealer.AsDistributor()->Deal_Cpp_UnblockMacro(*this);
+}
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/all_toks.hxx b/autodoc/source/parser/cpp/all_toks.hxx
new file mode 100644
index 000000000000..4aeae6e1ce0e
--- /dev/null
+++ b/autodoc/source/parser/cpp/all_toks.hxx
@@ -0,0 +1,221 @@
+/* -*- 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 ADC_CPP_ALL_TOKS_HXX
+#define ADC_CPP_ALL_TOKS_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_tok.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+namespace cpp {
+
+class Tok_Identifier : public cpp::Token
+{
+ public:
+ Tok_Identifier(
+ const char * i_sText ) : sText(i_sText) {}
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual INT16 TypeId() const;
+ virtual const char *
+ Text() const;
+ private:
+ String sText;
+};
+const INT16 Tid_Identifier = 1;
+
+/** == != <= >= && || !
+
+ new delete sizeof typeid
+ + - / % ^ | << >>
+ . -> ?
+ += -= *= /= %= &= |= ^= <<= >>=
+*/
+class Tok_Operator : public cpp::Token
+{
+ public:
+ Tok_Operator(
+ const char * i_sText ) : sText(i_sText) {}
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual INT16 TypeId() const;
+ virtual const char *
+ Text() const;
+ private:
+ String sText;
+};
+const INT16 Tid_Operator = 2;
+
+
+
+#define DECL_TOKEN_CLASS(name,tid) \
+class Tok_##name : public cpp::Token \
+{ public: \
+ virtual void Trigger( \
+ TokenInterpreter & io_rInterpreter ) const; \
+ virtual INT16 TypeId() const; \
+ virtual const char * \
+ Text() const; \
+}; \
+const INT16 Tid_##name = tid
+
+DECL_TOKEN_CLASS(operator,3);
+DECL_TOKEN_CLASS(class,4);
+DECL_TOKEN_CLASS(struct,5);
+DECL_TOKEN_CLASS(union,6);
+DECL_TOKEN_CLASS(enum,7);
+DECL_TOKEN_CLASS(typedef,8);
+DECL_TOKEN_CLASS(public,9);
+DECL_TOKEN_CLASS(protected,10);
+DECL_TOKEN_CLASS(private,11);
+DECL_TOKEN_CLASS(template,12);
+DECL_TOKEN_CLASS(virtual,13);
+DECL_TOKEN_CLASS(friend,14);
+DECL_TOKEN_CLASS(Tilde,15);
+DECL_TOKEN_CLASS(const,16);
+DECL_TOKEN_CLASS(volatile,17);
+DECL_TOKEN_CLASS(extern,18);
+DECL_TOKEN_CLASS(static,19);
+DECL_TOKEN_CLASS(mutable,20);
+DECL_TOKEN_CLASS(register,21);
+DECL_TOKEN_CLASS(inline,22);
+DECL_TOKEN_CLASS(explicit,23);
+DECL_TOKEN_CLASS(namespace,24);
+DECL_TOKEN_CLASS(using,25);
+DECL_TOKEN_CLASS(throw,26);
+DECL_TOKEN_CLASS(SwBracket_Left,27);
+DECL_TOKEN_CLASS(SwBracket_Right,28);
+DECL_TOKEN_CLASS(ArrayBracket_Left,29);
+DECL_TOKEN_CLASS(ArrayBracket_Right,30);
+DECL_TOKEN_CLASS(Bracket_Left,31);
+DECL_TOKEN_CLASS(Bracket_Right,32);
+DECL_TOKEN_CLASS(DoubleColon,33);
+DECL_TOKEN_CLASS(Semicolon,34);
+DECL_TOKEN_CLASS(Comma,35);
+DECL_TOKEN_CLASS(Colon,36);
+DECL_TOKEN_CLASS(Assign,37);
+DECL_TOKEN_CLASS(Less,38);
+DECL_TOKEN_CLASS(Greater,39);
+DECL_TOKEN_CLASS(Asterix,40);
+DECL_TOKEN_CLASS(AmpersAnd,41);
+DECL_TOKEN_CLASS(Ellipse,42);
+DECL_TOKEN_CLASS(typename,43);
+
+#undef DECL_TOKEN_CLASS
+
+#define DECL_TOKEN_CLASS_WITHTEXT(name,tid) \
+class Tok_##name : public cpp::Token \
+{ public: \
+ Tok_##name( \
+ const char * i_sText ) : sText(i_sText) {} \
+ virtual void Trigger( \
+ TokenInterpreter & io_rInterpreter ) const; \
+ virtual INT16 TypeId() const; \
+ virtual const char * \
+ Text() const; \
+ private: \
+ String sText; \
+}; \
+const INT16 Tid_##name = tid
+
+
+
+DECL_TOKEN_CLASS_WITHTEXT(DefineName,44);
+DECL_TOKEN_CLASS_WITHTEXT(MacroName,45);
+DECL_TOKEN_CLASS_WITHTEXT(MacroParameter,46);
+DECL_TOKEN_CLASS_WITHTEXT(PreProDefinition,47);
+
+/** char short int long float double wchar_t size_t
+*/
+DECL_TOKEN_CLASS_WITHTEXT(BuiltInType, 48);
+
+/** signed unsigned
+*/
+DECL_TOKEN_CLASS_WITHTEXT(TypeSpecializer, 49);
+DECL_TOKEN_CLASS_WITHTEXT(Constant, 50);
+
+
+
+/** This token does nothing in C++ code. It is added by the
+ internal macro-replacer to mark the position, where a
+ define or macro becomes valid again, which was until then
+ invalid, because the text was a replacement of this macro.
+ ( Avoiding endless recursive macro replacement. )
+*/
+class Tok_UnblockMacro : public ::TextToken
+{
+ public:
+ Tok_UnblockMacro(
+ const char * i_sMacroName ) : sMacroName(i_sMacroName) {}
+ virtual const char* Text() const;
+
+ virtual void DealOut(
+ ::TokenDealer & o_rDealer );
+ private:
+ String sMacroName;
+};
+
+
+
+/* just for viewing:
+class Tok_TypeKey : public cpp::Token // file-><type-PE>
+class Tok_Template : public cpp::Token // file
+class Tok_Namespace : public cpp::Token // file
+class Tok_Bracket : public cpp::Token // ueberall
+class Tok_Separator : public cpp::Token // ueberall
+
+class Tok_Identifier : public cpp::Token // ueberall
+class Tok_NameSeparator : public cpp::Token // Type, Name
+class Tok_BuiltInType : public cpp::Token // ueberall
+class Tok_ConVol : public cpp::Token // class-><FuVa>
+class Tok_StorageClass : public cpp::Token // file-><type>,<FuVa>
+class Tok_OperatorFunctionName : public cpp::Token // class
+
+class Tok_Protection : public cpp::Token // class
+class Tok_Virtual : public cpp::Token // class
+class Tok_Friend : public cpp::Token // class
+class Tok_Tilde : public cpp::Token // class, expression
+
+class Tok_Ellipse : public cpp::Token // function-ParaList
+class Tok_Assignment : public cpp::Token // VariableDeclaraton, Function, Parameter
+class Tok_Throw : public cpp::Token // function
+class Tok_LessMore : public cpp::Token
+class Tok_Operator : public cpp::Token // expression
+
+class Tok_Ignore : public cpp::Token
+class Tok_ContextChanger : public cpp::Token
+*/
+
+} // namespace cpp
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/c_dealer.cxx b/autodoc/source/parser/cpp/c_dealer.cxx
new file mode 100644
index 000000000000..a41d9daeb1d1
--- /dev/null
+++ b/autodoc/source/parser/cpp/c_dealer.cxx
@@ -0,0 +1,151 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "c_dealer.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/loc/locp_le.hxx>
+#include <ary/loc/loc_root.hxx>
+#include <ary/loc/loc_file.hxx>
+//#include <ary/docu.hxx>
+#include <adoc/a_rdocu.hxx>
+#include "all_toks.hxx"
+#include "c_rcode.hxx"
+
+
+namespace ary
+{
+namespace loc
+{
+ class Root;
+}
+}
+
+
+
+
+namespace cpp
+{
+
+Distributor::Distributor( ary::cpp::Gate & io_rAryGate )
+ : aCppPreProcessor(),
+ aCodeExplorer(io_rAryGate),
+ aDocuExplorer(),
+ pGate(&io_rAryGate),
+ pFileEventHandler(0),
+ pDocuDistributor(0)
+{
+ pFileEventHandler = & aCodeExplorer.FileEventHandler();
+ pDocuDistributor = & aCodeExplorer.DocuDistributor();
+}
+
+void
+Distributor::AssignPartners( CharacterSource & io_rSourceText,
+ const MacroMap & i_rValidMacros )
+{
+ aCppPreProcessor.AssignPartners(aCodeExplorer, io_rSourceText, i_rValidMacros);
+}
+
+Distributor::~Distributor()
+{
+}
+
+void
+Distributor::StartNewFile( const csv::ploc::Path & i_file )
+{
+ const csv::ploc::Root &
+ root_dir = i_file.RootDir();
+ StreamLock
+ sl(700);
+ root_dir.Get(sl());
+ csv::ploc::Path
+ root_path( sl().c_str(), true );
+ ary::loc::Le_id
+ root_id = pGate->Locations().CheckIn_Root(root_path).LeId();
+ ary::loc::File &
+ rFile = pGate->Locations().CheckIn_File(
+ i_file.File(),
+ i_file.DirChain(),
+ root_id );
+ pFileEventHandler->SetCurFile(rFile);
+
+ aCodeExplorer.StartNewFile();
+
+ csv_assert( pDocuDistributor != 0 );
+ aDocuExplorer.StartNewFile(*pDocuDistributor);
+}
+
+
+void
+Distributor::Deal_Eol()
+{
+ pFileEventHandler->Event_IncrLineCount();
+}
+
+void
+Distributor::Deal_Eof()
+{
+ // Do nothing yet.
+}
+
+void
+Distributor::Deal_Cpp_UnblockMacro( Tok_UnblockMacro & let_drToken )
+{
+ aCppPreProcessor.UnblockMacro(let_drToken.Text());
+ delete &let_drToken;
+}
+
+void
+Distributor::Deal_CppCode( cpp::Token & let_drToken )
+{
+ aCppPreProcessor.Process_Token(let_drToken);
+}
+
+void
+Distributor::Deal_AdcDocu( adoc::Token & let_drToken )
+{
+ aDocuExplorer.Process_Token(let_drToken);
+}
+
+Distributor *
+Distributor::AsDistributor()
+{
+ return this;
+}
+
+
+
+
+
+} // namespace cpp
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/c_dealer.hxx b/autodoc/source/parser/cpp/c_dealer.hxx
new file mode 100644
index 000000000000..64e833de622f
--- /dev/null
+++ b/autodoc/source/parser/cpp/c_dealer.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 ADC_CPP_C_DEALER_HXX
+#define ADC_CPP_C_DEALER_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cpp/ctokdeal.hxx>
+#include <adoc/atokdeal.hxx>
+#include <ary/info/docstore.hxx>
+ // COMPONENTS
+#include "preproc.hxx"
+#include "c_rcode.hxx"
+#include <adoc/a_rdocu.hxx>
+ // PARAMETERS
+
+namespace csv
+{
+ namespace ploc
+ {
+ class Path;
+ class DirectoryChain;
+ }
+}
+
+
+class TokenParser;
+
+
+namespace cpp
+{
+
+class PE_File;
+class DefineDescription;
+
+
+class Distributor : public cpp::TokenDealer, /// Handle C++ code tokens.
+ public adoc::TokenDealer /// Handle Autodoc documentation tokens.
+{
+ public:
+ typedef std::map< String, DefineDescription* > MacroMap;
+
+ // LIFECYCLE
+ Distributor(
+ ary::cpp::Gate & io_rGate );
+ ~Distributor();
+ // OPERATIONS
+ void AssignPartners(
+ CharacterSource & io_rSourceText,
+ const MacroMap & i_rValidMacros );
+ void StartNewFile(
+ const csv::ploc::Path &
+ i_file );
+ virtual void Deal_Eol();
+ virtual void Deal_Eof();
+
+ virtual void Deal_CppCode(
+ cpp::Token & let_drToken );
+ virtual void Deal_Cpp_UnblockMacro(
+ Tok_UnblockMacro & let_drToken );
+
+ virtual void Deal_AdcDocu(
+ adoc::Token & let_drToken );
+ virtual Distributor *
+ AsDistributor();
+ private:
+ // DATA
+ PreProcessor aCppPreProcessor;
+ CodeExplorer aCodeExplorer;
+ adoc::DocuExplorer aDocuExplorer;
+ ary::cpp::Gate * pGate;
+ FileScope_EventHandler *
+ pFileEventHandler;
+ DocuDealer * pDocuDistributor;
+};
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/c_rcode.cxx b/autodoc/source/parser/cpp/c_rcode.cxx
new file mode 100644
index 000000000000..1478496c057e
--- /dev/null
+++ b/autodoc/source/parser/cpp/c_rcode.cxx
@@ -0,0 +1,163 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "c_rcode.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_namesp.hxx>
+// #include <ary/cpp/c_groups.hxx>
+#include <ary/loc/locp_le.hxx>
+#include "cpp_pe.hxx"
+#include <adc_cl.hxx>
+#include <x_parse.hxx>
+#include "pe_file.hxx"
+
+const uintt C_nNO_TRY = uintt(-1);
+
+
+namespace cpp {
+
+
+CodeExplorer::CodeExplorer( ary::cpp::Gate & io_rAryGate )
+ : aGlobalParseContext(io_rAryGate),
+ // aEnvironments,
+ pPE_File(0),
+ pGate(&io_rAryGate),
+ dpCurToken(0)
+{
+ pPE_File = new PE_File( aGlobalParseContext );
+}
+
+CodeExplorer::~CodeExplorer()
+{
+}
+
+void
+CodeExplorer::StartNewFile()
+{
+ csv::erase_container(aEnvironments);
+
+ aEnvironments.push_back( pPE_File.MutablePtr() );
+ pPE_File->Enter(push);
+}
+
+void
+CodeExplorer::Process_Token( DYN cpp::Token & let_drToken )
+{
+if (DEBUG_ShowTokens())
+{
+ Cout() << let_drToken.Text() << Endl();
+}
+ dpCurToken = &let_drToken;
+ aGlobalParseContext.ResetResult();
+
+ do {
+ CurToken().Trigger( CurEnv() );
+ AcknowledgeResult();
+ } while ( dpCurToken );
+}
+
+void
+CodeExplorer::AcknowledgeResult()
+{
+ if (CurResult().eDone == done)
+ dpCurToken = 0;
+
+ switch ( CurResult().eStackAction )
+ {
+ case stay:
+ break;
+ case push:
+ CurEnv().Leave(push);
+ aEnvironments.push_back( &PushEnv() );
+ PushEnv().Enter(push);
+ break;
+ case pop_success:
+ CurEnv().Leave(pop_success);
+ aEnvironments.pop_back();
+ CurEnv().Enter(pop_success);
+ break;
+ case pop_failure:
+ {
+ Cpp_PE * pRecover = 0;
+ do {
+ CurEnv().Leave(pop_failure);
+ aEnvironments.pop_back();
+ if ( aEnvironments.empty() )
+ break;
+ pRecover = CurEnv().Handle_ChildFailure();
+ } while ( pRecover == 0 );
+ if ( pRecover != 0 )
+ {
+ aEnvironments.push_back(pRecover);
+ pRecover->Enter(push);
+ }
+ else
+ {
+ throw X_Parser( X_Parser::x_UnexpectedToken, CurToken().Text(), aGlobalParseContext.CurFileName(), aGlobalParseContext.LineCount() );
+ }
+ } break;
+ default:
+ csv_assert(false);
+ } // end switch(CurResult().eStackAction)
+}
+
+const Token &
+CodeExplorer::CurToken() const
+{
+ csv_assert(dpCurToken);
+
+ return *dpCurToken;
+}
+
+Cpp_PE &
+CodeExplorer::CurEnv() const
+{
+ csv_assert(aEnvironments.size() > 0);
+ csv_assert(aEnvironments.back() != 0);
+
+ return *aEnvironments.back();
+}
+
+Cpp_PE &
+CodeExplorer::PushEnv() const
+{
+ TokenProcessing_Result & rCurResult = const_cast< TokenProcessing_Result& >(aGlobalParseContext.CurResult());
+ Cpp_PE * ret = dynamic_cast< Cpp_PE* >(rCurResult.pEnv2Push);
+ csv_assert( ret != 0 );
+ return *ret;
+}
+
+
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/c_rcode.hxx b/autodoc/source/parser/cpp/c_rcode.hxx
new file mode 100644
index 000000000000..740faaa9b9a9
--- /dev/null
+++ b/autodoc/source/parser/cpp/c_rcode.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 ADC_CPP_C_RCODE_HXX
+#define ADC_CPP_C_RCODE_HXX
+
+// BASE CLASSES
+#include <tokens/tokproct.hxx>
+// USED SERVICES
+#include <cosv/ploc.hxx>
+#include "cxt2ary.hxx"
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/loc/loc_types4loc.hxx>
+
+
+
+namespace ary
+{
+namespace cpp
+{
+ class Gate;
+}
+namespace doc
+{
+ class OldCppDocu;
+}
+}
+
+namespace cpp
+{
+ class PE_File;
+ class Token;
+ class Cpp_PE;
+
+
+
+
+class CodeExplorer : private TokenProcessing_Types
+
+{
+ public:
+ CodeExplorer(
+ ary::cpp::Gate & io_rAryGate );
+ ~CodeExplorer();
+
+ void StartNewFile();
+ void Process_Token(
+ DYN cpp::Token & let_drToken );
+ // ACCESS
+ FileScope_EventHandler &
+ FileEventHandler() { return aGlobalParseContext; }
+ DocuDealer & DocuDistributor() { return aGlobalParseContext; }
+
+ private:
+ typedef std::vector< cpp::Cpp_PE* > EnvironmentStack;
+
+ void AcknowledgeResult();
+ const Token & CurToken() const;
+ Cpp_PE & CurEnv() const;
+ Cpp_PE & PushEnv() const;
+ TokenProcessing_Result &
+ CurResult() { return aGlobalParseContext.CurResult(); }
+
+ // DATA
+ ContextForAry aGlobalParseContext;
+
+ EnvironmentStack aEnvironments;
+ Dyn<PE_File> pPE_File;
+
+ ary::cpp::Gate * pGate;
+ cpp::Token * dpCurToken;
+};
+
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cpp_pe.cxx b/autodoc/source/parser/cpp/cpp_pe.cxx
new file mode 100644
index 000000000000..1e224897186d
--- /dev/null
+++ b/autodoc/source/parser/cpp/cpp_pe.cxx
@@ -0,0 +1,80 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cpp_pe.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/doc/d_oldcppdocu.hxx>
+#include "cpp_tok.hxx"
+
+
+
+
+namespace cpp {
+
+void
+Cpp_PE::SetTokenResult( E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ ParseEnvironment * i_pParseEnv2Push )
+{
+ rMyEnv.SetTokenResult( i_eDone,
+ i_eWhat2DoWithEnvStack,
+ i_pParseEnv2Push );
+}
+
+Cpp_PE::Cpp_PE( Cpp_PE * io_pParent )
+ : ParseEnvironment( io_pParent ),
+ rMyEnv( io_pParent->Env() )
+{
+ csv_assert(io_pParent != 0);
+}
+
+Cpp_PE::Cpp_PE( EnvData & i_rEnv )
+ : ParseEnvironment(0),
+ rMyEnv(i_rEnv)
+{
+}
+
+void
+Cpp_PE::StdHandlingOfSyntaxError( const char * )
+{
+ SetTokenResult(not_done, pop_failure);
+}
+
+
+Cpp_PE *
+Cpp_PE::Handle_ChildFailure()
+{
+ return 0;
+}
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cpp_pe.hxx b/autodoc/source/parser/cpp/cpp_pe.hxx
new file mode 100644
index 000000000000..cd3ba0af46f2
--- /dev/null
+++ b/autodoc/source/parser/cpp/cpp_pe.hxx
@@ -0,0 +1,83 @@
+/* -*- 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 ADC_CPP_CPP_PE_HXX
+#define ADC_CPP_CPP_PE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <semantic/parseenv.hxx>
+#include "tokintpr.hxx"
+ // COMPONENTS
+#include "pev.hxx"
+ // PARAMETERS
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+namespace cpp {
+
+class Cpp_PE : public ::ParseEnvironment,
+ public TokenInterpreter
+{
+ public:
+ typedef cpp::PeEnvironment EnvData;
+
+ void SetTokenResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ ParseEnvironment * i_pParseEnv2Push = 0 );
+
+ virtual Cpp_PE * Handle_ChildFailure(); // Defaulted to 0.
+
+ protected:
+ Cpp_PE(
+ Cpp_PE * io_pParent );
+ Cpp_PE(
+ EnvData & i_rEnv );
+
+ EnvData & Env() const;
+
+ void StdHandlingOfSyntaxError(
+ const char * i_sText );
+
+ private:
+ // DATA
+ EnvData & rMyEnv;
+};
+
+inline Cpp_PE::EnvData &
+Cpp_PE::Env() const
+ { return rMyEnv; }
+
+} // namespace cpp
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cpp_tok.hxx b/autodoc/source/parser/cpp/cpp_tok.hxx
new file mode 100644
index 000000000000..7f4200a86dda
--- /dev/null
+++ b/autodoc/source/parser/cpp/cpp_tok.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 ADC_CPP_TOK_HXX
+#define ADC_CPP_TOK_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/token.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace cpp {
+
+
+class TokenInterpreter;
+
+
+class Token : public TextToken
+{
+ public:
+ // LIFECYCLE
+ virtual ~Token() {}
+
+ // OPERATIONS
+ virtual INT16 TypeId() const = 0;
+ virtual void DealOut(
+ ::TokenDealer & o_rDealer );
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const = 0;
+};
+
+
+} // namespace cpp
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_base.cxx b/autodoc/source/parser/cpp/cx_base.cxx
new file mode 100644
index 000000000000..dad8a50b10e0
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_base.cxx
@@ -0,0 +1,79 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cx_base.hxx"
+
+// NOT FULLY DECLARED SERVICES
+#include <tokens/token.hxx>
+#include "c_dealer.hxx"
+
+
+
+namespace cpp {
+
+
+
+Cx_Base::Cx_Base( TkpContext * io_pFollowUpContext )
+ : pDealer(0),
+ pFollowUpContext(io_pFollowUpContext)
+ // pNewToken
+{
+}
+
+bool
+Cx_Base::PassNewToken()
+{
+ if (pNewToken)
+ {
+ pNewToken.Release()->DealOut(Dealer());
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Cx_Base::FollowUpContext()
+{
+ csv_assert(pFollowUpContext != 0);
+ return *pFollowUpContext;
+}
+
+void
+Cx_Base::AssignDealer( Distributor & o_rDealer )
+{
+ pDealer = &o_rDealer;
+}
+
+
+} // namespace cpp
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_base.hxx b/autodoc/source/parser/cpp/cx_base.hxx
new file mode 100644
index 000000000000..4e7ff2e3b34b
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_base.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 ADC_CPP_CX_BASE_HXX
+#define ADC_CPP_CX_BASE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcontx.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+class TextToken;
+
+
+namespace cpp
+{
+
+class Distributor;
+
+
+class Cx_Base : public ::TkpContext
+{
+ public:
+ virtual bool PassNewToken();
+ virtual TkpContext &
+ FollowUpContext();
+
+ virtual void AssignDealer(
+ Distributor & o_rDealer );
+ protected:
+ // LIFECYCLE
+ Cx_Base(
+ TkpContext * io_pFollowUpContext );
+
+ void SetNewToken(
+ DYN ::TextToken * let_dpToken );
+ void SetFollowUpContext(
+ TkpContext * io_pContext );
+
+ Distributor & Dealer() const;
+
+ private:
+ // DATA
+ Distributor * pDealer;
+ TkpContext * pFollowUpContext;
+ Dyn< ::TextToken > pNewToken;
+};
+
+
+
+
+inline void
+Cx_Base::SetNewToken( DYN ::TextToken * let_dpToken )
+ { pNewToken = let_dpToken; }
+inline void
+Cx_Base::SetFollowUpContext( TkpContext * io_pContext )
+ { pFollowUpContext = io_pContext; }
+inline Distributor &
+Cx_Base::Dealer() const
+ { csv_assert(pDealer != 0);
+ return *pDealer; }
+
+
+
+
+
+} // namespace cpp
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_c_pp.cxx b/autodoc/source/parser/cpp/cx_c_pp.cxx
new file mode 100644
index 000000000000..9c81fe71af36
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_c_pp.cxx
@@ -0,0 +1,182 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cx_c_pp.hxx"
+
+
+
+// NOT FULLY DECLARED SERVICES
+#include "c_dealer.hxx"
+#include <tokens/parseinc.hxx>
+#include <x_parse.hxx>
+#include "all_toks.hxx"
+
+
+namespace cpp
+{
+
+Context_Preprocessor::Context_Preprocessor( TkpContext & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext),
+ pContext_Parent(&i_rFollowUpContext),
+ pContext_PP_MacroParams( 0 ),
+ pContext_PP_Definition( new Context_PP_Definition(i_rFollowUpContext) )
+{
+ pContext_PP_MacroParams = new Context_PP_MacroParams(*pContext_PP_Definition);
+}
+
+void
+Context_Preprocessor::ReadCharChain( CharacterSource & io_rText )
+{
+ jumpOverWhite( io_rText );
+ jumpToWhite( io_rText );
+ const char * sPP_Keyword = io_rText.CutToken();
+ if ( strcmp(sPP_Keyword, "define") == 0 )
+ ReadDefine(io_rText);
+ else
+ ReadDefault(io_rText);
+}
+
+void
+Context_Preprocessor::AssignDealer( Distributor & o_rDealer )
+{
+ Cx_Base::AssignDealer(o_rDealer);
+ pContext_PP_MacroParams->AssignDealer(o_rDealer);
+ pContext_PP_Definition->AssignDealer(o_rDealer);
+}
+
+void
+Context_Preprocessor::ReadDefault( CharacterSource & io_rText )
+{
+ int o_rCount_BackslashedLineBreaks = 0;
+ jumpToEol(io_rText,o_rCount_BackslashedLineBreaks);
+ for ( ; o_rCount_BackslashedLineBreaks > 0; --o_rCount_BackslashedLineBreaks )
+ Dealer().Deal_Eol();
+
+ if (io_rText.CurChar() != NULCH)
+ jumpOverEol(io_rText);
+ io_rText.CutToken();
+ Dealer().Deal_Eol();
+ SetNewToken(0);
+ SetFollowUpContext( pContext_Parent );
+}
+
+void
+Context_Preprocessor::ReadDefine( CharacterSource & io_rText )
+{
+ jumpOverWhite( io_rText );
+ io_rText.CutToken();
+
+ char cNext = '\0';
+ for ( cNext = io_rText.CurChar();
+ static_cast<UINT8>(cNext) > 32 AND cNext != '(';
+ cNext = io_rText.MoveOn() )
+ { }
+
+ bool bMacro = cNext == '(';
+
+ if ( NOT bMacro )
+ {
+ SetNewToken( new Tok_DefineName(io_rText.CutToken()) );
+ SetFollowUpContext( pContext_PP_Definition.Ptr() );
+ }
+ else
+ {
+ SetNewToken( new Tok_MacroName(io_rText.CutToken()) );
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetFollowUpContext( pContext_PP_MacroParams.Ptr() );
+ }
+}
+
+
+Context_PP_MacroParams::Context_PP_MacroParams( Cx_Base & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext),
+ pContext_PP_Definition(&i_rFollowUpContext)
+{
+}
+
+void
+Context_PP_MacroParams::ReadCharChain( CharacterSource & io_rText )
+{
+ uintt nLen;
+
+ jumpOverWhite( io_rText );
+ // KORR_FUTURE Handling line breaks within macro parameters:
+ char cSeparator = jumpTo( io_rText, ',', ')' );
+ csv_assert( cSeparator != 0 );
+
+ static char cBuf[500];
+ // KORR_FUTURE, make it still safer, here:
+ strcpy( cBuf, io_rText.CutToken() ); // SAFE STRCPY (#100211# - checked)
+ for ( nLen = strlen(cBuf);
+ nLen > 0 AND cBuf[nLen-1] < 33;
+ --nLen )
+ { }
+ cBuf[nLen] = '\0';
+ SetNewToken( new Tok_MacroParameter(cBuf) );
+
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ if ( cSeparator == ',')
+ SetFollowUpContext( this );
+ else // Must be ')'
+ SetFollowUpContext( pContext_PP_Definition );
+}
+
+Context_PP_Definition::Context_PP_Definition( TkpContext & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext),
+ pContext_Parent(&i_rFollowUpContext)
+{
+}
+
+void
+Context_PP_Definition::ReadCharChain( CharacterSource & io_rText )
+{
+ int o_rCount_BackslashedLineBreaks = 0;
+ jumpToEol(io_rText,o_rCount_BackslashedLineBreaks);
+ for ( ; o_rCount_BackslashedLineBreaks > 0; --o_rCount_BackslashedLineBreaks )
+ Dealer().Deal_Eol();
+ SetNewToken( new Tok_PreProDefinition(io_rText.CutToken()) );
+ if (io_rText.CurChar() != NULCH)
+ jumpOverEol(io_rText);
+ Dealer().Deal_Eol();
+}
+
+
+} // namespace cpp
+
+
+
+
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_c_pp.hxx b/autodoc/source/parser/cpp/cx_c_pp.hxx
new file mode 100644
index 000000000000..0b0e86d2e690
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_c_pp.hxx
@@ -0,0 +1,97 @@
+/* -*- 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 ADC_CPP_CX_C_PP_HXX
+#define ADC_CPP_CX_C_PP_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcontx.hxx>
+#include "cx_base.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace cpp
+{
+
+class Context_Preprocessor : public Cx_Base
+{
+ public:
+ Context_Preprocessor(
+ TkpContext & i_rFollowUpContext );
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual void AssignDealer(
+ Distributor & o_rDealer );
+ private:
+ // Locals
+ void ReadDefault(
+ CharacterSource & io_rText );
+ void ReadDefine(
+ CharacterSource & io_rText );
+
+ // DATA
+ TkpContext * pContext_Parent;
+ Dyn<Cx_Base> pContext_PP_MacroParams;
+ Dyn<Cx_Base> pContext_PP_Definition;
+};
+
+class Context_PP_MacroParams : public Cx_Base
+{
+ public:
+ Context_PP_MacroParams(
+ Cx_Base & i_rFollowUpContext );
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ private:
+ // DATA
+ Cx_Base * pContext_PP_Definition;
+};
+
+class Context_PP_Definition : public Cx_Base
+{
+ public:
+ Context_PP_Definition(
+ TkpContext & i_rFollowUpContext );
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+
+ private:
+ // DATA
+ TkpContext * pContext_Parent;
+};
+
+
+} // namespace cpp
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_c_std.cxx b/autodoc/source/parser/cpp/cx_c_std.cxx
new file mode 100644
index 000000000000..73eed711dad4
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_c_std.cxx
@@ -0,0 +1,531 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cx_c_std.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include "all_toks.hxx"
+#include "cx_c_pp.hxx"
+#include "cx_c_sub.hxx"
+#include <tools/tkpchars.hxx>
+#include <tokens/tkpstama.hxx>
+#include <x_parse.hxx>
+#include "c_dealer.hxx"
+
+
+namespace cpp {
+
+
+const intt C_nCppInitialNrOfStati = 600;
+const intt C_nStatusSize = 128;
+
+
+
+const uintt nF_fin_Error = 1;
+const uintt nF_fin_CreateWithoutText = 2;
+const uintt nF_fin_CreateWithText = 3;
+const uintt nF_fin_Ignore = 4;
+const uintt nF_fin_EOL = 5;
+const uintt nF_fin_EOF = 6;
+const uintt nF_fin_Bezeichner = 7;
+
+const uintt nF_goto_Preprocessor = 10;
+const uintt nF_goto_Comment = 11;
+const uintt nF_goto_Docu = 12;
+const uintt nF_goto_Const = 13;
+const uintt nF_goto_UnblockMacro = 14;
+
+// Token create functions for the state machine:
+DYN TextToken * TCF_Identifier(const char * text) { return new Tok_Identifier(text); }
+
+DYN TextToken * TCF_operator(const char *) { return new Tok_operator; }
+DYN TextToken * TCF_class(const char *) { return new Tok_class; }
+DYN TextToken * TCF_struct(const char *) { return new Tok_struct; }
+DYN TextToken * TCF_union(const char *) { return new Tok_union; }
+DYN TextToken * TCF_enum(const char *) { return new Tok_enum; }
+DYN TextToken * TCF_typedef(const char *) { return new Tok_typedef; }
+DYN TextToken * TCF_public(const char *) { return new Tok_public; }
+DYN TextToken * TCF_protected(const char *) { return new Tok_protected; }
+DYN TextToken * TCF_private(const char *) { return new Tok_private; }
+DYN TextToken * TCF_template(const char *) { return new Tok_template; }
+DYN TextToken * TCF_virtual(const char *) { return new Tok_virtual; }
+DYN TextToken * TCF_friend(const char *) { return new Tok_friend; }
+DYN TextToken * TCF_Tilde(const char *) { return new Tok_Tilde; }
+DYN TextToken * TCF_const(const char *) { return new Tok_const; }
+DYN TextToken * TCF_volatile(const char *) { return new Tok_volatile; }
+DYN TextToken * TCF_extern(const char *) { return new Tok_extern; }
+DYN TextToken * TCF_static(const char *) { return new Tok_static; }
+DYN TextToken * TCF_mutable(const char *) { return new Tok_mutable; }
+DYN TextToken * TCF_register(const char *) { return new Tok_register; }
+DYN TextToken * TCF_inline(const char *) { return new Tok_inline; }
+DYN TextToken * TCF_explicit(const char *) { return new Tok_explicit; }
+DYN TextToken * TCF_namespace(const char *) { return new Tok_namespace; }
+DYN TextToken * TCF_using(const char *) { return new Tok_using; }
+DYN TextToken * TCF_throw(const char *) { return new Tok_throw; }
+DYN TextToken * TCF_SwBracketOpen(const char *) { return new Tok_SwBracket_Left; }
+DYN TextToken * TCF_SwBracketClose(const char *) { return new Tok_SwBracket_Right; }
+DYN TextToken * TCF_ArBracketOpen(const char *) { return new Tok_ArrayBracket_Left; }
+DYN TextToken * TCF_ArBracketClose(const char *) { return new Tok_ArrayBracket_Right; }
+DYN TextToken * TCF_BracketOpen(const char *) { return new Tok_Bracket_Left; }
+DYN TextToken * TCF_BracketClose(const char *) { return new Tok_Bracket_Right; }
+DYN TextToken * TCF_DblColon(const char *) { return new Tok_DoubleColon; }
+DYN TextToken * TCF_Semikolon(const char *) { return new Tok_Semicolon; }
+DYN TextToken * TCF_Komma(const char *) { return new Tok_Comma; }
+DYN TextToken * TCF_Colon(const char *) { return new Tok_Colon; }
+DYN TextToken * TCF_Zuweisung(const char *) { return new Tok_Assign; }
+DYN TextToken * TCF_Smaller(const char *) { return new Tok_Less; }
+DYN TextToken * TCF_Bigger(const char *) { return new Tok_Greater; }
+DYN TextToken * TCF_Stern(const char *) { return new Tok_Asterix; }
+DYN TextToken * TCF_Ampersand(const char *) { return new Tok_AmpersAnd; }
+DYN TextToken * TCF_Ellipse(const char *) { return new Tok_Ellipse; }
+DYN TextToken * TCF_typename(const char *) { return new Tok_typename; }
+
+ // Operators
+DYN TextToken * TCF_Operator(const char * text) { return new Tok_Operator(text); }
+
+DYN TextToken * TCF_BuiltInType(const char * text) { return new Tok_BuiltInType(text); }
+DYN TextToken * TCF_TypeModifier(const char * text) { return new Tok_TypeSpecializer(text); }
+
+DYN TextToken * TCF_Eof(const char *) { return new Tok_Eof; }
+
+
+
+Context_CppStd::Context_CppStd( DYN autodoc::TkpDocuContext & let_drContext_Docu )
+ : Cx_Base(0),
+ aStateMachine(C_nStatusSize,C_nCppInitialNrOfStati),
+ pDocuContext(&let_drContext_Docu),
+ pContext_Comment(0),
+ pContext_Preprocessor(0),
+ pContext_ConstString(0),
+ pContext_ConstChar(0),
+ pContext_ConstNumeric(0),
+ pContext_UnblockMacro(0)
+{
+ pDocuContext->SetParentContext(*this,"*/");
+
+ pContext_Comment = new Context_Comment(*this);
+ pContext_Preprocessor = new Context_Preprocessor(*this);
+ pContext_ConstString = new Context_ConstString(*this);
+ pContext_ConstChar = new Context_ConstChar(*this);
+ pContext_ConstNumeric = new Context_ConstNumeric(*this);
+ pContext_UnblockMacro = new Context_UnblockMacro(*this);
+
+ SetupStateMachine();
+}
+
+Context_CppStd::~Context_CppStd()
+{
+}
+
+void
+Context_CppStd::ReadCharChain( CharacterSource & io_rText )
+{
+ SetNewToken(0);
+
+ TextToken::F_CRTOK fTokenCreateFunction = 0;
+ StmBoundsStatus & rBound = aStateMachine.GetCharChain(fTokenCreateFunction, io_rText);
+
+ // !!!
+ // The order of the next two lines is essential, because
+ // pFollowUpContext may be changed by PerformStatusFunction() also,
+ // which then MUST override the previous assignment.
+ SetFollowUpContext(rBound.FollowUpContext());
+ PerformStatusFunction(rBound.StatusFunctionNr(), fTokenCreateFunction, io_rText);
+}
+
+void
+Context_CppStd::AssignDealer( Distributor & o_rDealer )
+{
+ Cx_Base::AssignDealer(o_rDealer);
+
+ pDocuContext->AssignDealer(o_rDealer);
+ pContext_Comment->AssignDealer(o_rDealer);
+ pContext_Preprocessor->AssignDealer(o_rDealer);
+ pContext_ConstString->AssignDealer(o_rDealer);
+ pContext_ConstChar->AssignDealer(o_rDealer);
+ pContext_ConstNumeric->AssignDealer(o_rDealer);
+ pContext_UnblockMacro->AssignDealer(o_rDealer);
+}
+
+void
+Context_CppStd::PerformStatusFunction( uintt i_nStatusSignal,
+ F_CRTOK i_fTokenCreateFunction,
+ CharacterSource & io_rText )
+{
+ switch (i_nStatusSignal)
+ {
+ case nF_fin_CreateWithoutText:
+ io_rText.CutToken();
+ csv_assert(i_fTokenCreateFunction != 0);
+ SetNewToken( (*i_fTokenCreateFunction)(0) );
+ break;
+ case nF_fin_CreateWithText:
+ csv_assert(i_fTokenCreateFunction != 0);
+ SetNewToken( (*i_fTokenCreateFunction)(io_rText.CutToken()) );
+ break;
+ case nF_fin_Ignore:
+ io_rText.CutToken();
+ SetNewToken(0);
+ break;
+ case nF_fin_EOL:
+ io_rText.CutToken();
+ SetNewToken(0);
+ Dealer().Deal_Eol();
+ break;
+ case nF_fin_EOF:
+ io_rText.CutToken();
+ SetNewToken( TCF_Eof(0) );
+ break;
+ case nF_fin_Bezeichner:
+ SetNewToken( TCF_Identifier(io_rText.CutToken()) );
+ break;
+
+ case nF_goto_Preprocessor:
+ io_rText.CutToken();
+ SetNewToken(0);
+ break;
+ case nF_goto_Comment:
+ SetNewToken(0);
+ pContext_Comment->SetMode_IsMultiLine( io_rText.CutToken()[1] == '*' );
+ break;
+ case nF_goto_Docu:
+ SetNewToken(0);
+ pDocuContext->SetMode_IsMultiLine( io_rText.CutToken()[1] == '*' );
+ break;
+ case nF_goto_Const:
+ SetNewToken(0);
+ break;
+ case nF_goto_UnblockMacro:
+ SetNewToken(0);
+ break;
+
+ case nF_fin_Error:
+ default:
+ {
+ char cCC = io_rText.CurChar();
+ String sCurChar( &cCC, 1 );
+ throw X_Parser( X_Parser::x_InvalidChar, sCurChar, String::Null_(), 0 );
+ }
+ } // end switch (i_nStatusSignal)
+}
+
+void
+Context_CppStd::SetupStateMachine()
+{
+ // Besondere Array-Stati (kein Tokenabschluss oder Kontextwechsel):
+// const INT16 top = 0; // Top-Status
+ const INT16 wht = 1; // Whitespace-überlese-Status
+ const INT16 bez = 2; // Bezeichner-lese-Status
+
+ // Tokenfinish-Stati:
+ const INT16 finError = 3;
+ const INT16 finIgnore = 4;
+ const INT16 finBezeichner = 5;
+ const INT16 finKeyword = 6;
+ const INT16 finPunctuation = 7;
+ const INT16 finBiType = 8;
+ const INT16 finTypeModifier = 9;
+ const INT16 finEOL = 10;
+ const INT16 finEOF = 11;
+
+ // Kontextwechsel-Stati:
+ const INT16 gotoComment = 12;
+ const INT16 gotoDocu = 13;
+ const INT16 gotoPreprocessor = 14;
+ const INT16 gotoConstString = 15;
+ const INT16 gotoConstChar = 16;
+ const INT16 gotoConstNumeric = 17;
+ const INT16 gotoUnblockMacro = 18;
+
+ // Abbreviations to be used in status tables:
+ const INT16 err = finError;
+ const INT16 fig = finIgnore;
+ const INT16 fbz = finBezeichner;
+ const INT16 fof = finEOF;
+ const INT16 cst = gotoConstString;
+ const INT16 cch = gotoConstChar;
+ const INT16 cnr = gotoConstNumeric;
+
+
+ /// Zeros - '0' - will be replaced by AddToken().
+
+ const INT16 A_nTopStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht, 0,wht,wht, 0,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // 16 ...
+ wht, 0,cst, 0,err, 0, 0,cch, 0, 0, 0, 0, 0, 0, 0, 0,
+ cnr,cnr,cnr,cnr,cnr,cnr,cnr,cnr,cnr,cnr, 0, 0, 0, 0, 0, 0, // 48 ...
+ 0,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez, 0, 0, 0, 0,bez, // 80 ...
+ 0,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez, 0, 0, 0, 0,err, // 80 ...
+ };
+
+ const INT16 A_nWhitespaceStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht,fig,wht,wht,fig,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // 16 ...
+ wht,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig, // 48 ...
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig, // 80 ...
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,err
+ };
+
+ const INT16 A_nBezeichnerStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fbz,err,err,err,err,err,err,err,err,fbz,fbz,fbz,fbz,fbz,err,err,
+ err,err,err,err,err,err,err,err,err,err,fbz,err,err,err,err,err, // 16 ...
+ fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,fbz,fbz, // 48 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,bez, // 80 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,err
+ };
+
+
+ const INT16 A_nOperatorDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 16 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 48 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 80 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err
+ };
+
+ const INT16 A_nBezDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fbz,err,err,err,err,err,err,err,err,fbz,fbz,fbz,fbz,fbz,err,err,
+ err,err,err,err,err,err,err,err,err,err,fbz,err,err,err,err,err, // 16 ...
+ fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,fbz,fbz, // 48 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,bez, // 80 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,err
+ };
+
+ DYN StmArrayStatus * dpStatusTop
+ = new StmArrayStatus( C_nStatusSize, A_nTopStatus, 0, true);
+ DYN StmArrayStatus * dpStatusWhite
+ = new StmArrayStatus( C_nStatusSize, A_nWhitespaceStatus, 0, true);
+ DYN StmArrayStatus * dpStatusBez
+ = new StmArrayStatus( C_nStatusSize, A_nBezeichnerStatus, TCF_Identifier, true);
+
+ DYN StmBoundsStatus * dpBst_finError
+ = new StmBoundsStatus( *this, TkpContext::Null_(), nF_fin_Error, true );
+ DYN StmBoundsStatus * dpBst_finIgnore
+ = new StmBoundsStatus( *this, *this, nF_fin_Ignore, true );
+ DYN StmBoundsStatus * dpBst_finBezeichner
+ = new StmBoundsStatus( *this, *this, nF_fin_Bezeichner, true );
+ DYN StmBoundsStatus * dpBst_finKeyword
+ = new StmBoundsStatus( *this, *this, nF_fin_CreateWithoutText, false );
+ DYN StmBoundsStatus * dpBst_finPunctuation
+ = new StmBoundsStatus( *this, *this, nF_fin_CreateWithText, false );
+ DYN StmBoundsStatus * dpBst_finBiType
+ = new StmBoundsStatus( *this, *this, nF_fin_CreateWithText, false );
+ DYN StmBoundsStatus * dpBst_finTypeModifier
+ = new StmBoundsStatus( *this, *this, nF_fin_CreateWithText, false );
+ DYN StmBoundsStatus * dpBst_finEOL
+ = new StmBoundsStatus( *this, *this, nF_fin_EOL, false );
+ DYN StmBoundsStatus * dpBst_finEOF
+ = new StmBoundsStatus( *this, TkpContext::Null_(), nF_fin_EOF, false );
+
+ DYN StmBoundsStatus * dpBst_gotoComment
+ = new StmBoundsStatus( *this, *pContext_Comment, nF_goto_Comment, false );
+ DYN StmBoundsStatus * dpBst_gotoDocu
+ = new StmBoundsStatus( *this, *pDocuContext, nF_goto_Docu, false );
+ DYN StmBoundsStatus * dpBst_gotoPreprocessor
+ = new StmBoundsStatus( *this, *pContext_Preprocessor, nF_goto_Preprocessor, false );
+ DYN StmBoundsStatus * dpBst_gotoConstString
+ = new StmBoundsStatus( *this, *pContext_ConstString, nF_goto_Const, false );
+ DYN StmBoundsStatus * dpBst_gotoConstChar
+ = new StmBoundsStatus( *this, *pContext_ConstChar, nF_goto_Const, false );
+ DYN StmBoundsStatus * dpBst_gotoConstNumeric
+ = new StmBoundsStatus( *this, *pContext_ConstNumeric, nF_goto_Const, false );
+ DYN StmBoundsStatus * dpBst_gotoUnblockMacro
+ = new StmBoundsStatus( *this, *pContext_UnblockMacro, nF_goto_UnblockMacro, false );
+
+ // dpMain aufbauen:
+ aStateMachine.AddStatus(dpStatusTop);
+
+ aStateMachine.AddStatus(dpStatusWhite);
+ aStateMachine.AddStatus(dpStatusBez);
+
+ aStateMachine.AddStatus(dpBst_finError);
+ aStateMachine.AddStatus(dpBst_finIgnore);
+ aStateMachine.AddStatus(dpBst_finBezeichner);
+ aStateMachine.AddStatus(dpBst_finKeyword);
+ aStateMachine.AddStatus(dpBst_finPunctuation);
+ aStateMachine.AddStatus(dpBst_finBiType);
+ aStateMachine.AddStatus(dpBst_finTypeModifier);
+ aStateMachine.AddStatus(dpBst_finEOL);
+ aStateMachine.AddStatus(dpBst_finEOF);
+
+ aStateMachine.AddStatus(dpBst_gotoComment);
+ aStateMachine.AddStatus(dpBst_gotoDocu);
+ aStateMachine.AddStatus(dpBst_gotoPreprocessor);
+ aStateMachine.AddStatus(dpBst_gotoConstString);
+ aStateMachine.AddStatus(dpBst_gotoConstChar);
+ aStateMachine.AddStatus(dpBst_gotoConstNumeric);
+ aStateMachine.AddStatus(dpBst_gotoUnblockMacro);
+
+ // Identifier
+
+ // Keywords and other unique Tokens
+ aStateMachine.AddToken("operator",TCF_operator,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("class",TCF_class,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("struct",TCF_struct,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("union",TCF_union,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("enum",TCF_enum,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("typedef",TCF_typedef,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("public",TCF_public,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("protected",TCF_protected,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("private",TCF_private,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("template",TCF_template,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("virtual",TCF_virtual,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("friend",TCF_friend,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("~",TCF_Tilde,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("const",TCF_const,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("volatile",TCF_volatile,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("extern",TCF_extern,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("static",TCF_static,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("mutable",TCF_mutable,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("register",TCF_register,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("inline",TCF_inline,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("explicit",TCF_explicit,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("namespace",TCF_namespace,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("using",TCF_using,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("throw",TCF_throw,A_nBezDefStatus,finKeyword);
+ aStateMachine.AddToken("{",TCF_SwBracketOpen,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("}",TCF_SwBracketClose,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("[",TCF_ArBracketOpen,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("]",TCF_ArBracketClose,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("(",TCF_BracketOpen,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken(")",TCF_BracketClose,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("::",TCF_DblColon,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken(";",TCF_Semikolon,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken(",",TCF_Komma,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken(":",TCF_Colon,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("=",TCF_Zuweisung,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("<",TCF_Smaller,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken(">",TCF_Bigger,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("*",TCF_Stern,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("&",TCF_Ampersand,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("...",TCF_Ellipse,A_nOperatorDefStatus,finKeyword);
+ aStateMachine.AddToken("typename",TCF_typename,A_nOperatorDefStatus,finKeyword);
+
+ // Operators
+ aStateMachine.AddToken("==",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("!=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("<=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken(">=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("&&",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("||",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("!",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("new",TCF_Operator,A_nBezDefStatus,finPunctuation);
+ aStateMachine.AddToken("delete",TCF_Operator,A_nBezDefStatus,finPunctuation);
+ aStateMachine.AddToken("sizeof",TCF_Operator,A_nBezDefStatus,finPunctuation);
+ aStateMachine.AddToken("typeid",TCF_Operator,A_nBezDefStatus,finPunctuation);
+ aStateMachine.AddToken("+",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("-",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("/",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("%",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("^",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("|",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("<<",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken(">>",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken(".",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("->",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("?",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("+=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("-=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("*=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("/=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("%=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("&=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("|=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("^=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken("<<=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+ aStateMachine.AddToken(">>=",TCF_Operator,A_nOperatorDefStatus,finPunctuation);
+
+ // Builtin types
+ aStateMachine.AddToken("char", TCF_BuiltInType, A_nBezDefStatus, finBiType);
+ aStateMachine.AddToken("short", TCF_BuiltInType, A_nBezDefStatus, finBiType);
+ aStateMachine.AddToken("int", TCF_BuiltInType, A_nBezDefStatus, finBiType);
+ aStateMachine.AddToken("long", TCF_BuiltInType, A_nBezDefStatus, finBiType);
+ aStateMachine.AddToken("float", TCF_BuiltInType, A_nBezDefStatus, finBiType);
+ aStateMachine.AddToken("double",TCF_BuiltInType, A_nBezDefStatus, finBiType);
+ aStateMachine.AddToken("wchar_t",TCF_BuiltInType, A_nBezDefStatus, finBiType);
+ aStateMachine.AddToken("size_t",TCF_BuiltInType, A_nBezDefStatus, finBiType);
+
+ // Type modifiers
+ aStateMachine.AddToken("signed", TCF_TypeModifier, A_nBezDefStatus, finTypeModifier);
+ aStateMachine.AddToken("unsigned", TCF_TypeModifier, A_nBezDefStatus, finTypeModifier);
+
+ // To ignore
+ aStateMachine.AddToken("auto", 0, A_nBezDefStatus, finIgnore);
+ aStateMachine.AddToken("_cdecl", 0, A_nBezDefStatus, finIgnore);
+ aStateMachine.AddToken("__cdecl", 0, A_nBezDefStatus, finIgnore);
+ aStateMachine.AddToken("__stdcall", 0, A_nBezDefStatus, finIgnore);
+ aStateMachine.AddToken("__fastcall",0, A_nBezDefStatus, finIgnore);
+ aStateMachine.AddToken("/**/", 0, A_nOperatorDefStatus,finIgnore);
+
+ // Context changers
+ aStateMachine.AddToken("#", 0, A_nOperatorDefStatus, gotoPreprocessor);
+ aStateMachine.AddToken("#undef",0, A_nOperatorDefStatus, gotoPreprocessor);
+ aStateMachine.AddToken("#unblock-",
+ 0, A_nOperatorDefStatus, gotoUnblockMacro);
+ aStateMachine.AddToken("/*", 0, A_nOperatorDefStatus, gotoComment);
+ aStateMachine.AddToken("//", 0, A_nOperatorDefStatus, gotoComment);
+ aStateMachine.AddToken("/**", 0, A_nOperatorDefStatus, gotoDocu);
+ aStateMachine.AddToken("///", 0, A_nOperatorDefStatus, gotoDocu);
+
+ // Line ends
+ // regular
+ aStateMachine.AddToken("\r\n", 0, A_nOperatorDefStatus, finEOL);
+ aStateMachine.AddToken("\n", 0, A_nOperatorDefStatus, finEOL);
+ aStateMachine.AddToken("\r", 0, A_nOperatorDefStatus, finEOL);
+ // To ignore in some cases(may be only at preprocessor?), but
+ // linecount has to be incremented.
+ aStateMachine.AddToken("\\\r\n",0, A_nOperatorDefStatus, finEOL);
+ aStateMachine.AddToken("\\\n", 0, A_nOperatorDefStatus, finEOL);
+ aStateMachine.AddToken("\\\r", 0, A_nOperatorDefStatus, finEOL);
+};
+
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_c_std.hxx b/autodoc/source/parser/cpp/cx_c_std.hxx
new file mode 100644
index 000000000000..fac94a548877
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_c_std.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 ADC_CPP_CX_C_STD_HXX
+#define ADC_CPP_CX_C_STD_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcontx.hxx>
+#include "cx_base.hxx"
+ // COMPONENTS
+#include <tokens/tkpstama.hxx>
+ // PARAMETERS
+
+
+
+namespace cpp {
+
+class Context_Comment;
+
+/**
+*/
+class Context_CppStd : public Cx_Base,
+ private StateMachineContext
+{
+ public:
+ // LIFECYCLE
+ Context_CppStd(
+ DYN autodoc::TkpDocuContext &
+ let_drContext_Docu );
+ ~Context_CppStd();
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual void AssignDealer(
+ Distributor & o_rDealer );
+ private:
+ // SERVICE FUNCTIONS
+ void PerformStatusFunction(
+ uintt i_nStatusSignal,
+ StmArrayStatus::F_CRTOK
+ i_fTokenCreateFunction,
+ CharacterSource & io_rText );
+ void SetupStateMachine();
+
+ // DATA
+ StateMachine aStateMachine;
+
+ // Contexts
+ Dyn<autodoc::TkpDocuContext>
+ pDocuContext;
+
+ Dyn<Context_Comment>
+ pContext_Comment;
+ Dyn<Cx_Base> pContext_Preprocessor;
+ Dyn<Cx_Base> pContext_ConstString;
+ Dyn<Cx_Base> pContext_ConstChar;
+ Dyn<Cx_Base> pContext_ConstNumeric;
+ Dyn<Cx_Base> pContext_UnblockMacro;
+};
+
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_c_sub.cxx b/autodoc/source/parser/cpp/cx_c_sub.cxx
new file mode 100644
index 000000000000..76e5779312b4
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_c_sub.cxx
@@ -0,0 +1,160 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cx_c_sub.hxx"
+
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ctype.h>
+#include "c_dealer.hxx"
+#include <tokens/parseinc.hxx>
+#include <x_parse.hxx>
+#include "all_toks.hxx"
+
+
+namespace cpp {
+
+
+
+void
+Context_Comment::ReadCharChain( CharacterSource & io_rText )
+{
+ // KORR_FUTURE
+ // Counting of lines must be implemented.
+ if (bCurrentModeIsMultiline)
+ {
+ char cNext = NULCH;
+
+ do {
+ do {
+ cNext = jumpTo( io_rText,'*',char(10) );
+ if (cNext == NULCH)
+ throw X_Parser( X_Parser::x_UnexpectedEOF, "", String::Null_(), 0 );
+ else if ( cNext == char(10) )
+ {
+ jumpOverEol(io_rText);
+ Dealer().Deal_Eol();
+ }
+ } while ( cNext != '*');
+ cNext = jumpOver(io_rText,'*');
+ if (cNext == NULCH)
+ throw X_Parser( X_Parser::x_UnexpectedEOF, "", String::Null_(), 0 );
+ } while (cNext != '/');
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetNewToken(0);
+ }
+ else //
+ {
+ int o_rCount_BackslashedLineBreaks = 0;
+ jumpToEol(io_rText,o_rCount_BackslashedLineBreaks);
+ for ( ; o_rCount_BackslashedLineBreaks > 0; --o_rCount_BackslashedLineBreaks )
+ Dealer().Deal_Eol();
+
+ if (io_rText.CurChar() != NULCH)
+ jumpOverEol(io_rText);
+ io_rText.CutToken();
+ Dealer().Deal_Eol();
+ SetNewToken(0);
+ } // endif
+}
+
+
+void
+Context_ConstString::ReadCharChain( CharacterSource & io_rText )
+{
+ char cNext = io_rText.MoveOn();
+
+ while (cNext != '"')
+ { // Get one complete string constant: "...."
+ while (cNext != '"' AND cNext != '\\')
+ { // Get string till next '\\'
+ cNext = io_rText.MoveOn();
+ }
+ if (cNext == '\\')
+ {
+ io_rText.MoveOn();
+ cNext = io_rText.MoveOn();
+ }
+ }
+ io_rText.MoveOn();
+ SetNewToken(new Tok_Constant(io_rText.CutToken()));
+}
+
+void
+Context_ConstChar::ReadCharChain( CharacterSource & io_rText )
+{
+ char cNext = io_rText.MoveOn();
+
+ while (cNext != '\'')
+ { // Get one complete char constant: "...."
+ while (cNext != '\'' AND cNext != '\\')
+ { // Get string till next '\\'
+ cNext = io_rText.MoveOn();
+ }
+ if (cNext == '\\')
+ {
+ io_rText.MoveOn();
+ cNext = io_rText.MoveOn();
+ }
+ }
+ io_rText.MoveOn();
+ SetNewToken(new Tok_Constant(io_rText.CutToken()));
+}
+
+void
+Context_ConstNumeric::ReadCharChain(CharacterSource & io_rText)
+{
+ char cNext = 0;
+
+ do {
+ do {
+ cNext = static_cast<char>( tolower(io_rText.MoveOn()) );
+ } while ( (cNext != 'e' AND isalnum(cNext)) OR cNext == '.');
+ if (cNext == 'e')
+ {
+ cNext = io_rText.MoveOn();
+ if (cNext == '+' OR cNext == '-')
+ cNext = io_rText.MoveOn();
+ } // endif
+ } while (isalnum(cNext) OR cNext == '.'); // Reicht aus, wenn Zahlen korrekt geschrieben sind
+ SetNewToken(new Tok_Constant(io_rText.CutToken()));
+}
+
+void
+Context_UnblockMacro::ReadCharChain(CharacterSource & io_rText)
+{
+ jumpToWhite(io_rText);
+ SetNewToken(new Tok_UnblockMacro( io_rText.CutToken() + strlen("#unblock-") ));
+}
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cx_c_sub.hxx b/autodoc/source/parser/cpp/cx_c_sub.hxx
new file mode 100644
index 000000000000..6e2d3d8807ed
--- /dev/null
+++ b/autodoc/source/parser/cpp/cx_c_sub.hxx
@@ -0,0 +1,105 @@
+/* -*- 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 ADC_CPP_CX_C_SUB_HXX
+#define ADC_CPP_CX_C_SUB_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcontx.hxx>
+#include "cx_base.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace cpp {
+
+
+class Context_Comment : public Cx_Base
+{
+ public:
+ Context_Comment(
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetMode_IsMultiLine(
+ bool i_bTrue )
+ { bCurrentModeIsMultiline = i_bTrue; }
+ private:
+ bool bCurrentModeIsMultiline;
+};
+
+class Context_ConstString : public Cx_Base
+{
+ public:
+ Context_ConstString(
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+class Context_ConstChar : public Cx_Base
+{
+ public:
+ Context_ConstChar(
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+class Context_ConstNumeric : public Cx_Base
+{
+ public:
+ Context_ConstNumeric(
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+class Context_UnblockMacro : public Cx_Base
+{
+ public:
+ Context_UnblockMacro(
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(&i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cxt2ary.cxx b/autodoc/source/parser/cpp/cxt2ary.cxx
new file mode 100644
index 000000000000..eda70ca1045e
--- /dev/null
+++ b/autodoc/source/parser/cpp/cxt2ary.cxx
@@ -0,0 +1,360 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "cxt2ary.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/entity.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_define.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/c_enuval.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_macro.hxx>
+#include <ary/cpp/c_tydef.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/loc/loc_file.hxx>
+#include <ary/doc/d_oldcppdocu.hxx>
+#include <ary/info/docstore.hxx>
+#include "icprivow.hxx"
+
+// Implementationheaders, only to be used in this file!
+#include "sfscope.hxx"
+#include "sownstck.hxx"
+#include "sdocdist.hxx"
+#include "srecover.hxx"
+
+
+
+
+
+namespace cpp
+{
+
+using ary::cpp::E_Protection;
+
+ContextForAry::ContextForAry( ary::cpp::Gate & io_rAryGate )
+ : pGate(&io_rAryGate),
+ aTokenResult(),
+ pFileScopeInfo( new S_FileScopeInfo ),
+ pOwnerStack( new S_OwnerStack ),
+ pDocuDistributor( new S_DocuDistributor ),
+ pRecoveryGuard( new S_RecoveryGuard )
+{
+ OpenNamespace( pGate->Ces().GlobalNamespace() );
+}
+
+ContextForAry::~ContextForAry()
+{
+}
+
+ary::loc::File &
+ContextForAry::inq_CurFile() const
+{
+ csv_assert(pFileScopeInfo->pCurFile != 0);
+
+ return *pFileScopeInfo->pCurFile;
+}
+
+ary::cpp::Namespace &
+ContextForAry::inq_CurNamespace() const
+{
+ return pOwnerStack->CurNamespace();
+}
+
+ary::cpp::Class *
+ContextForAry::inq_CurClass() const
+{
+ return pOwnerStack->CurClass();
+}
+
+ary::cpp::Enum *
+ContextForAry::inq_CurEnum() const
+{
+ return pOwnerStack->CurEnum();
+}
+
+
+ary::cpp::InputContext::Owner &
+ContextForAry::inq_CurOwner() const
+{
+ return pOwnerStack->CurOwner();
+}
+
+E_Protection
+ContextForAry::inq_CurProtection() const
+{
+ return pOwnerStack->CurProtection();
+}
+
+void
+ContextForAry::do_SetTokenResult( E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ ParseEnvironment * i_pParseEnv2Push )
+{
+ aTokenResult.eDone = i_eDone;
+ aTokenResult.eStackAction = i_eWhat2DoWithEnvStack;
+ aTokenResult.pEnv2Push = i_pParseEnv2Push;
+}
+
+void
+ContextForAry::do_OpenNamespace( ary::cpp::Namespace & io_rOpenedNamespace )
+{
+ pOwnerStack->OpenNamespace( io_rOpenedNamespace );
+}
+
+void
+ContextForAry::do_OpenExternC( bool )
+{
+ pOwnerStack->OpenExternC();
+ // KORR_FUTURE
+ // use i_bOnlyForOneDeclaration
+}
+
+void
+ContextForAry::do_OpenClass( ary::cpp::Class & io_rOpenedClass )
+{
+ pOwnerStack->OpenClass(io_rOpenedClass);
+ pDocuDistributor->SetCurrentlyStoredRe(io_rOpenedClass);
+}
+
+void
+ContextForAry::do_OpenEnum( ary::cpp::Enum & io_rOpenedEnum )
+{
+ pOwnerStack->OpenEnum(io_rOpenedEnum);
+ pDocuDistributor->SetCurrentlyStoredRe(io_rOpenedEnum);
+}
+
+void
+ContextForAry::do_CloseBlock()
+{
+ pOwnerStack->CloseBlock();
+}
+
+void
+ContextForAry::do_CloseClass()
+{
+ pOwnerStack->CloseClass();
+}
+
+void
+ContextForAry::do_CloseEnum()
+{
+ pOwnerStack->CloseEnum();
+}
+
+void
+ContextForAry::do_SetCurProtection( ary::cpp::E_Protection i_eProtection )
+{
+ pOwnerStack->SetCurProtection(i_eProtection);
+}
+
+void
+ContextForAry::do_OpenTemplate( const StringVector & i_rParameters )
+{
+ pFileScopeInfo->pCurTemplateParameters = new StringVector(i_rParameters);
+}
+
+DYN StringVector *
+ContextForAry::do_Get_CurTemplateParameters()
+{
+ return pFileScopeInfo->pCurTemplateParameters.Release();
+}
+
+void
+ContextForAry::do_Close_OpenTemplate()
+{
+ if (pFileScopeInfo->pCurTemplateParameters)
+ delete pFileScopeInfo->pCurTemplateParameters.Release();
+}
+
+void
+ContextForAry::do_Event_Class_FinishedBase( const String & )
+{
+ // KORR_FUTURE
+}
+
+void
+ContextForAry::do_Event_Store_Typedef( ary::cpp::Typedef & io_rTypedef )
+{
+ pDocuDistributor->SetCurrentlyStoredRe(io_rTypedef);
+}
+
+void
+ContextForAry::do_Event_Store_EnumValue( ary::cpp::EnumValue & io_rEnumValue )
+{
+ pDocuDistributor->SetCurrentlyStoredRe(io_rEnumValue);
+}
+
+void
+ContextForAry::do_Event_Store_CppDefinition( ary::cpp::DefineEntity & io_rDefinition )
+{
+ pDocuDistributor->SetCurrentlyStoredRe(io_rDefinition);
+}
+
+void
+ContextForAry::do_Event_EnterFunction_ParameterList()
+{
+ // KORR_FUTURE
+ // Inform pDocuDistributor about possibility of parameters' inline documentation.
+}
+
+void
+ContextForAry::do_Event_Function_FinishedParameter( const String & )
+{
+ // KORR_FUTURE
+}
+
+void
+ContextForAry::do_Event_LeaveFunction_ParameterList()
+{
+ // KORR_FUTURE
+}
+
+void
+ContextForAry::do_Event_EnterFunction_Implementation()
+{
+ // KORR_FUTURE
+}
+
+void
+ContextForAry::do_Event_LeaveFunction_Implementation()
+{
+ // KORR_FUTURE
+}
+
+void
+ContextForAry::do_Event_Store_Function( ary::cpp::Function & io_rFunction )
+{
+ pDocuDistributor->SetCurrentlyStoredRe(io_rFunction);
+}
+
+
+void
+ContextForAry::do_Event_Store_Variable( ary::cpp::Variable & io_rVariable )
+{
+ pDocuDistributor->SetCurrentlyStoredRe(io_rVariable);
+}
+
+void
+ContextForAry::do_TakeDocu( DYN ary::doc::OldCppDocu & let_drInfo )
+{
+ let_drInfo.Store2(*pDocuDistributor);
+}
+
+void
+ContextForAry::do_StartWaitingFor_Recovery()
+{
+ pRecoveryGuard->StartWaitingFor_Recovery();
+}
+
+ary::cpp::Gate &
+ContextForAry::inq_AryGate() const
+{
+ return * const_cast< ary::cpp::Gate* >(pGate);
+}
+
+const ary::cpp::InputContext &
+ContextForAry::inq_Context() const
+{
+ return *this;
+}
+
+String
+ContextForAry::inq_CurFileName() const
+{
+ return pFileScopeInfo->pCurFile != 0
+ ? pFileScopeInfo->pCurFile->LocalName()
+ : String::Null_();
+}
+
+uintt
+ContextForAry::inq_LineCount() const
+{
+ return pFileScopeInfo->nLineCount;
+}
+
+bool
+ContextForAry::inq_IsWaitingFor_Recovery() const
+{
+ return pRecoveryGuard->IsWithinRecovery();
+}
+
+bool
+ContextForAry::inq_IsExternC() const
+{
+ return pOwnerStack->IsExternC();
+}
+
+void
+ContextForAry::do_SetCurFile( ary::loc::File & io_rCurFile )
+{
+ pFileScopeInfo->pCurFile = &io_rCurFile;
+ pFileScopeInfo->nLineCount = 0;
+ pFileScopeInfo->pCurTemplateParameters = 0;
+
+ pOwnerStack->Reset();
+ pDocuDistributor->Reset();
+ pRecoveryGuard->Reset();
+}
+
+void
+ContextForAry::do_Event_IncrLineCount()
+{
+ ++pFileScopeInfo->nLineCount;
+ pDocuDistributor->Event_LineBreak();
+}
+
+void
+ContextForAry::do_Event_SwBracketOpen()
+{
+ pRecoveryGuard->Hdl_SwBracketOpen();
+}
+
+void
+ContextForAry::do_Event_SwBracketClose()
+{
+ pRecoveryGuard->Hdl_SwBracketClose();
+}
+
+void
+ContextForAry::do_Event_Semicolon()
+{
+ pRecoveryGuard->Hdl_Semicolon();
+}
+
+
+
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/cxt2ary.hxx b/autodoc/source/parser/cpp/cxt2ary.hxx
new file mode 100644
index 000000000000..9006aefa645e
--- /dev/null
+++ b/autodoc/source/parser/cpp/cxt2ary.hxx
@@ -0,0 +1,201 @@
+/* -*- 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 ADC_CPP_CTX2ARY_HXX
+#define ADC_CPP_CTX2ARY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/inpcontx.hxx>
+#include <doc_deal.hxx>
+#include "pev.hxx"
+#include "fevnthdl.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+namespace loc
+{
+ class File;
+}
+}
+
+
+
+namespace cpp
+{
+
+
+/** @descr
+ This class provides information about the context of an
+ CodeEntity, which is going to be stored in the repository.
+ The information is used mainly by class ary::cpp::Gate.
+
+ Also it provides information for the parser about actual
+ state of several public variables.
+
+ @todo
+ Include events, which allow correct storing of inline
+ documentation after enum values, parameters,
+ base classes.
+*/
+class ContextForAry : public ary::cpp::InputContext,
+ public cpp::PeEnvironment,
+ public cpp::FileScope_EventHandler,
+ public DocuDealer
+{
+ public:
+ // LIFECYCLE
+ ContextForAry(
+ ary::cpp::Gate & io_rAryGate );
+ virtual ~ContextForAry();
+
+ // OPERATIONS
+ void ResetResult() { aTokenResult.Reset(); }
+
+ // INQUIRY
+ const TokenProcessing_Result &
+ CurResult() const { return aTokenResult; }
+ // ACCESS
+ TokenProcessing_Result &
+ CurResult() { return aTokenResult; }
+
+ private:
+ // Interface ary::cpp::InputContext:
+ virtual ary::loc::File &
+ inq_CurFile() const;
+ virtual ary::cpp::Namespace &
+ inq_CurNamespace() const;
+ virtual ary::cpp::Class *
+ inq_CurClass() const;
+ virtual ary::cpp::Enum *
+ inq_CurEnum() const;
+
+ virtual Owner & inq_CurOwner() const;
+ virtual ary::cpp::E_Protection
+ inq_CurProtection() const;
+
+ // Interface PeEnvironment
+ virtual void do_SetTokenResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ ParseEnvironment * i_pParseEnv2Push );
+ virtual void do_OpenNamespace(
+ ary::cpp::Namespace &
+ io_rOpenedNamespace );
+ virtual void do_OpenExternC(
+ bool i_bOnlyForOneDeclaration );
+ virtual void do_OpenClass(
+ ary::cpp::Class & io_rOpenedClass );
+ virtual void do_OpenEnum(
+ ary::cpp::Enum & io_rOpenedEnum );
+ virtual void do_CloseBlock();
+ virtual void do_CloseClass();
+ virtual void do_CloseEnum();
+ virtual void do_SetCurProtection(
+ ary::cpp::E_Protection
+ i_eProtection );
+ virtual void do_OpenTemplate(
+ const StringVector &
+ i_rParameters );
+ virtual DYN StringVector *
+ do_Get_CurTemplateParameters();
+ virtual void do_Close_OpenTemplate();
+ virtual void do_Event_Class_FinishedBase(
+ const String & i_sBaseName );
+
+ virtual void do_Event_Store_Typedef(
+ ary::cpp::Typedef & io_rTypedef );
+ virtual void do_Event_Store_EnumValue(
+ ary::cpp::EnumValue &
+ io_rEnumValue );
+ virtual void do_Event_Store_CppDefinition(
+ ary::cpp::DefineEntity &
+ io_rDefinition );
+ virtual void do_Event_EnterFunction_ParameterList();
+ virtual void do_Event_Function_FinishedParameter(
+ const String & i_sParameterName );
+ virtual void do_Event_LeaveFunction_ParameterList();
+ virtual void do_Event_EnterFunction_Implementation();
+ virtual void do_Event_LeaveFunction_Implementation();
+ virtual void do_Event_Store_Function(
+ ary::cpp::Function &
+ io_rFunction );
+ virtual void do_Event_Store_Variable(
+ ary::cpp::Variable &
+ io_rVariable );
+ virtual void do_TakeDocu(
+ DYN ary::doc::OldCppDocu &
+ let_drInfo );
+ virtual void do_StartWaitingFor_Recovery();
+ virtual ary::cpp::Gate &
+ inq_AryGate() const;
+ virtual const ary::cpp::InputContext &
+ inq_Context() const;
+ virtual String inq_CurFileName() const;
+ virtual uintt inq_LineCount() const;
+ virtual bool inq_IsWaitingFor_Recovery() const;
+ virtual bool inq_IsExternC() const;
+
+ // Interface FileScope_EventHandler
+ virtual void do_SetCurFile(
+ ary::loc::File & io_rCurFile );
+ virtual void do_Event_IncrLineCount();
+ virtual void do_Event_SwBracketOpen();
+ virtual void do_Event_SwBracketClose();
+ virtual void do_Event_Semicolon();
+
+ // Local types
+ struct S_FileScopeInfo;
+ struct S_OwnerStack;
+ struct S_DocuDistributor;
+ struct S_RecoveryGuard;
+
+ // DATA
+ ary::cpp::Gate * pGate;
+ TokenProcessing_Result
+ aTokenResult;
+ Dyn<S_FileScopeInfo>
+ pFileScopeInfo;
+ Dyn<S_OwnerStack> pOwnerStack;
+ Dyn<S_DocuDistributor>
+ pDocuDistributor;
+ Dyn<S_RecoveryGuard>
+ pRecoveryGuard;
+};
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/defdescr.cxx b/autodoc/source/parser/cpp/defdescr.cxx
new file mode 100644
index 000000000000..c233a5d93be4
--- /dev/null
+++ b/autodoc/source/parser/cpp/defdescr.cxx
@@ -0,0 +1,227 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "defdescr.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <prprpr.hxx>
+
+
+
+
+namespace cpp
+{
+
+
+
+
+DefineDescription::DefineDescription( const String & i_sName,
+ const str_vector & i_rDefinition )
+ : sName(i_sName),
+ // aParams,
+ aDefinition(i_rDefinition),
+ eDefineType(type_define)
+{
+}
+
+DefineDescription::DefineDescription( const String & i_sName,
+ const str_vector & i_rParams,
+ const str_vector & i_rDefinition )
+ : sName(i_sName),
+ aParams(i_rParams),
+ aDefinition(i_rDefinition),
+ eDefineType(type_macro)
+{
+}
+
+DefineDescription::~DefineDescription()
+{
+}
+
+void
+DefineDescription::GetDefineText( csv::StreamStr & o_rText ) const
+{
+ if ( aDefinition.begin() == aDefinition.end() OR eDefineType != type_define )
+ return;
+
+
+ bool bSwitch_Stringify = false;
+ bool bSwitch_Concatenate = false;
+
+ for ( str_vector::const_iterator it = aDefinition.begin();
+ it != aDefinition.end();
+ ++it )
+ {
+ if ( HandleOperatorsBeforeTextItem( o_rText,
+ bSwitch_Stringify,
+ bSwitch_Concatenate,
+ *it ) )
+ {
+ continue;
+ }
+
+ o_rText << (*it);
+
+ Do_bStringify_end(o_rText, bSwitch_Stringify);
+ o_rText << " ";
+ }
+ o_rText.seekp(-1, csv::cur);
+}
+
+void
+DefineDescription::GetMacroText( csv::StreamStr & o_rText,
+ const StringVector & i_rGivenArguments ) const
+{
+ bool bSwitch_Stringify = false;
+ bool bSwitch_Concatenate = false;
+ intt nActiveParamNr = -1;
+
+ if ( aDefinition.begin() == aDefinition.end() OR eDefineType != type_macro )
+ return;
+
+ for ( str_vector::const_iterator it = aDefinition.begin();
+ it != aDefinition.end();
+ ++it )
+ {
+ if ( HandleOperatorsBeforeTextItem( o_rText,
+ bSwitch_Stringify,
+ bSwitch_Concatenate,
+ *it ) )
+ {
+ continue;
+ }
+
+ for ( str_vector::const_iterator param_it = aParams.begin();
+ param_it != aParams.end() AND nActiveParamNr == -1;
+ ++param_it )
+ {
+ if ( strcmp(*it, *param_it) == 0 )
+ nActiveParamNr = param_it - aParams.begin();
+ }
+ if ( nActiveParamNr == -1 )
+ {
+ o_rText << (*it);
+ }
+ else
+ {
+ o_rText << i_rGivenArguments[nActiveParamNr];
+ nActiveParamNr = -1;
+ }
+
+ Do_bStringify_end(o_rText, bSwitch_Stringify);
+ o_rText << " ";
+ }
+ o_rText.seekp(-1, csv::cur);
+}
+
+
+
+} // end namespace cpp
+
+
+
+
+
+bool
+CheckForOperator( bool & o_bStringify,
+ bool & o_bConcatenate,
+ const String & i_sTextItem )
+{
+ if ( strcmp(i_sTextItem, "##") == 0 )
+ {
+ o_bConcatenate = true;
+ return true;
+ }
+ else if ( strcmp(i_sTextItem, "#") == 0 )
+ {
+ o_bStringify = true;
+ return true;
+ }
+ return false;
+}
+
+void
+Do_bConcatenate( csv::StreamStr & o_rText,
+ bool & io_bConcatenate )
+{
+ if ( io_bConcatenate )
+ {
+ uintt nPos;
+ for ( nPos = o_rText.tellp() - 1;
+ nPos > 0 ? o_rText.c_str()[nPos] == ' ' : false;
+ --nPos ) ;
+ o_rText.seekp(nPos+1);
+ io_bConcatenate = false;
+ }
+}
+
+void
+Do_bStringify_begin( csv::StreamStr & o_rText,
+ bool i_bStringify )
+{
+ if ( i_bStringify )
+ {
+ o_rText << "\"";
+ }
+}
+
+void
+Do_bStringify_end( csv::StreamStr & o_rText,
+ bool & io_bStringify )
+{
+ if ( io_bStringify )
+ {
+ o_rText << "\"";
+ io_bStringify = false;
+ }
+}
+
+
+bool
+HandleOperatorsBeforeTextItem( csv::StreamStr & o_rText,
+ bool & io_bStringify,
+ bool & io_bConcatenate,
+ const String & i_sTextItem )
+{
+ if ( CheckForOperator( io_bStringify,
+ io_bConcatenate,
+ i_sTextItem) )
+ {
+ return true;
+ }
+ Do_bConcatenate(o_rText, io_bConcatenate);
+ Do_bStringify_begin(o_rText, io_bStringify);
+
+ return false;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/defdescr.hxx b/autodoc/source/parser/cpp/defdescr.hxx
new file mode 100644
index 000000000000..3980ea7c77fa
--- /dev/null
+++ b/autodoc/source/parser/cpp/defdescr.hxx
@@ -0,0 +1,100 @@
+/* -*- 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 ADC_CPP_DEFDESCR_HXX
+#define ADC_CPP_DEFDESCR_HXX
+
+
+
+
+namespace cpp
+{
+
+/** Describes a C/C++ #define statement. May be a define or a macro, for which
+ two cases the two different constructors are to be used.
+
+ This class is used by cpp::PreProcessor.
+*/
+class DefineDescription
+{
+ public:
+ enum E_DefineType
+ {
+ type_define,
+ type_macro
+ };
+ typedef StringVector str_vector;
+
+ DefineDescription( /// Used for: #define DEFINE xyz
+ const String & i_sName,
+ const str_vector & i_rDefinition );
+ DefineDescription( /// Used for: #define MACRO(...) abc
+ const String & i_sName,
+ const str_vector & i_rParams,
+ const str_vector & i_rDefinition );
+ ~DefineDescription();
+
+ /// Only vaild if (eDefineType == type_define) else returns "".
+ void GetDefineText(
+ csv::StreamStr & o_rText ) const;
+
+ /// Only vaild if (eDefineType == type_macro) else returns "".
+ void GetMacroText(
+ csv::StreamStr & o_rText,
+ const StringVector &
+ i_rGivenArguments ) const;
+
+ uintt ParamCount() const;
+ E_DefineType DefineType() const;
+
+ private:
+ // DATA
+ String sName;
+ str_vector aParams;
+ str_vector aDefinition;
+ E_DefineType eDefineType;
+};
+
+
+
+
+// IMPLEMENTATION
+inline uintt
+DefineDescription::ParamCount() const
+ { return aParams.size(); }
+inline DefineDescription::E_DefineType
+DefineDescription::DefineType() const
+ { return eDefineType; }
+
+
+
+
+} // end namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/fevnthdl.hxx b/autodoc/source/parser/cpp/fevnthdl.hxx
new file mode 100644
index 000000000000..0198f404f588
--- /dev/null
+++ b/autodoc/source/parser/cpp/fevnthdl.hxx
@@ -0,0 +1,107 @@
+/* -*- 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 ADC_CPP_FEVNTHDL_HXX
+#define ADC_CPP_FEVNTHDL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace loc
+{
+ class File;
+}
+}
+
+
+
+
+namespace cpp
+{
+
+
+/** This is an interface, which accepts the file scope events that may
+ be important for parsing. It is implementation-dependant, where to
+ put or what to do with them.
+*/
+class FileScope_EventHandler
+{
+ public:
+ // LIFECYCLE
+ virtual ~FileScope_EventHandler() {}
+
+ // OPERATIONS
+ void SetCurFile(
+ ary::loc::File & io_rCurFile );
+ void Event_IncrLineCount();
+ void Event_SwBracketOpen();
+ void Event_SwBracketClose();
+ void Event_Semicolon();
+
+ private:
+ virtual void do_SetCurFile(
+ ary::loc::File & io_rCurFile ) = 0;
+ virtual void do_Event_IncrLineCount() = 0;
+ virtual void do_Event_SwBracketOpen() = 0;
+ virtual void do_Event_SwBracketClose() = 0;
+ virtual void do_Event_Semicolon() = 0;
+};
+
+
+// IMPLEMENTATION
+
+inline void
+FileScope_EventHandler::SetCurFile( ary::loc::File & io_rCurFile )
+ { do_SetCurFile(io_rCurFile); }
+inline void
+FileScope_EventHandler::Event_IncrLineCount()
+ { do_Event_IncrLineCount(); }
+inline void
+FileScope_EventHandler::Event_SwBracketOpen()
+ { do_Event_SwBracketOpen(); }
+inline void
+FileScope_EventHandler::Event_SwBracketClose()
+ { do_Event_SwBracketClose(); }
+inline void
+FileScope_EventHandler::Event_Semicolon()
+ { do_Event_Semicolon(); }
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/icprivow.cxx b/autodoc/source/parser/cpp/icprivow.cxx
new file mode 100644
index 000000000000..8202e12862e7
--- /dev/null
+++ b/autodoc/source/parser/cpp/icprivow.cxx
@@ -0,0 +1,195 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <icprivow.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_class.hxx>
+
+
+
+namespace cpp
+{
+
+
+
+//****************** Owner_Namespace ********************//
+Owner_Namespace::Owner_Namespace()
+ : pScope(0)
+{
+}
+
+void
+Owner_Namespace::SetAnotherNamespace( ary::cpp::Namespace & io_rScope )
+{
+ pScope = &io_rScope;
+}
+
+bool
+Owner_Namespace::HasClass( const String & i_sLocalName )
+{
+ return pScope->Search_LocalClass(i_sLocalName).IsValid();
+}
+
+void
+Owner_Namespace::do_Add_Class( const String & i_sLocalName,
+ Cid i_nId )
+{
+ csv_assert(pScope != 0);
+ pScope->Add_LocalClass(i_sLocalName, i_nId);
+}
+
+void
+Owner_Namespace::do_Add_Enum( const String & i_sLocalName,
+ Cid i_nId )
+{
+ csv_assert(pScope != 0);
+ pScope->Add_LocalEnum(i_sLocalName, i_nId);
+}
+
+void
+Owner_Namespace::do_Add_Typedef( const String & i_sLocalName,
+ Cid i_nId )
+{
+ csv_assert(pScope != 0);
+ pScope->Add_LocalTypedef(i_sLocalName, i_nId);
+}
+
+void
+Owner_Namespace::do_Add_Operation( const String & i_sLocalName,
+ Cid i_nId,
+ bool )
+{
+ csv_assert(pScope != 0);
+ pScope->Add_LocalOperation(i_sLocalName, i_nId);
+}
+
+void
+Owner_Namespace::do_Add_Variable( const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsConst,
+ bool )
+{
+ csv_assert(pScope != 0);
+ if (i_bIsConst)
+ pScope->Add_LocalConstant(i_sLocalName, i_nId);
+ else
+ pScope->Add_LocalVariable(i_sLocalName, i_nId);
+}
+
+
+Cid
+Owner_Namespace::inq_CeId() const
+{
+ csv_assert(pScope != 0);
+ return pScope->CeId();
+}
+
+
+//****************** Owner_Class ********************//
+
+Owner_Class::Owner_Class()
+ : pScope(0)
+{
+}
+
+void
+Owner_Class::SetAnotherClass( ary::cpp::Class & io_rScope )
+{
+ pScope = &io_rScope;
+}
+
+bool
+Owner_Class::HasClass( const String & )
+{
+ return false;
+}
+
+void
+Owner_Class::do_Add_Class( const String & i_sLocalName,
+ Cid i_nId )
+{
+ csv_assert(pScope != 0);
+ pScope->Add_LocalClass(i_sLocalName, i_nId);
+}
+
+void
+Owner_Class::do_Add_Enum( const String & i_sLocalName,
+ Cid i_nId )
+{
+ csv_assert(pScope != 0);
+ pScope->Add_LocalEnum(i_sLocalName, i_nId);
+}
+
+void
+Owner_Class::do_Add_Typedef( const String & i_sLocalName,
+ Cid i_nId )
+{
+ csv_assert(pScope != 0);
+ pScope->Add_LocalTypedef(i_sLocalName, i_nId);
+}
+
+void
+Owner_Class::do_Add_Operation( const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsStatic )
+{
+ csv_assert(pScope != 0);
+ if (i_bIsStatic)
+ pScope->Add_LocalStaticOperation(i_sLocalName, i_nId);
+ else
+ pScope->Add_LocalOperation(i_sLocalName, i_nId);
+}
+
+void
+Owner_Class::do_Add_Variable( const String & i_sLocalName,
+ Cid i_nId,
+ bool ,
+ bool i_bIsStatic )
+{
+ csv_assert(pScope != 0);
+ if (i_bIsStatic)
+ pScope->Add_LocalStaticData(i_sLocalName, i_nId);
+ else
+ pScope->Add_LocalData(i_sLocalName, i_nId);
+}
+
+Cid
+Owner_Class::inq_CeId() const
+{
+ csv_assert(pScope != 0);
+ return pScope->CeId();
+}
+
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/icprivow.hxx b/autodoc/source/parser/cpp/icprivow.hxx
new file mode 100644
index 000000000000..5321df48e34a
--- /dev/null
+++ b/autodoc/source/parser/cpp/icprivow.hxx
@@ -0,0 +1,126 @@
+/* -*- 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 ARY_CPP_ICPRIVOW_HXX
+#define ARY_CPP_ICPRIVOW_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <ary/cpp/inpcontx.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace cpp
+{
+
+
+
+typedef ary::cpp::Ce_id Cid;
+
+
+class Owner_Namespace : public ary::cpp::InputContext::Owner
+{
+ public:
+ Owner_Namespace();
+ void SetAnotherNamespace(
+ ary::cpp::Namespace &
+ io_rScope );
+ virtual bool HasClass(
+ const String & i_sLocalName );
+ private:
+ virtual void do_Add_Class(
+ const String & i_sLocalName,
+ Cid i_nId );
+ virtual void do_Add_Enum(
+ const String & i_sLocalName,
+ Cid i_nId );
+ virtual void do_Add_Typedef(
+ const String & i_sLocalName,
+ Cid i_nId );
+ virtual void do_Add_Operation(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool );
+ virtual void do_Add_Variable(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsConst,
+ bool i_bIsStatic );
+ virtual Cid inq_CeId() const;
+
+ // DATA
+ ary::cpp::Namespace *
+ pScope;
+};
+
+class Owner_Class : public ary::cpp::InputContext::Owner
+{
+ public:
+ Owner_Class();
+ void SetAnotherClass(
+ ary::cpp::Class & io_rScope );
+
+ /** @attention Only a dummy for use at ary::cpp::Gate!
+ Will work nerver!
+ */
+ virtual bool HasClass(
+ const String & i_sLocalName );
+ private:
+ virtual void do_Add_Class(
+ const String & i_sLocalName,
+ Cid i_nId );
+ virtual void do_Add_Enum(
+ const String & i_sLocalName,
+ Cid i_nId );
+ virtual void do_Add_Typedef(
+ const String & i_sLocalName,
+ Cid i_nId );
+ virtual void do_Add_Operation(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsStaticMember );
+ virtual void do_Add_Variable(
+ const String & i_sLocalName,
+ Cid i_nId,
+ bool i_bIsConst,
+ bool i_bIsStatic );
+ virtual Cid inq_CeId() const;
+
+ // DATA
+ ary::cpp::Class * pScope;
+};
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/makefile.mk b/autodoc/source/parser/cpp/makefile.mk
new file mode 100644
index 000000000000..9729ee2d57b1
--- /dev/null
+++ b/autodoc/source/parser/cpp/makefile.mk
@@ -0,0 +1,87 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=parser_cpp
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/all_toks.obj \
+ $(OBJ)$/c_dealer.obj \
+ $(OBJ)$/c_rcode.obj \
+ $(OBJ)$/cpp_pe.obj \
+ $(OBJ)$/cx_base.obj \
+ $(OBJ)$/cx_c_pp.obj \
+ $(OBJ)$/cx_c_std.obj \
+ $(OBJ)$/cx_c_sub.obj \
+ $(OBJ)$/cxt2ary.obj \
+ $(OBJ)$/defdescr.obj \
+ $(OBJ)$/icprivow.obj \
+ $(OBJ)$/pe_base.obj \
+ $(OBJ)$/pe_class.obj \
+ $(OBJ)$/pe_defs.obj \
+ $(OBJ)$/pe_expr.obj \
+ $(OBJ)$/pe_enum.obj \
+ $(OBJ)$/pe_enval.obj \
+ $(OBJ)$/pe_file.obj \
+ $(OBJ)$/pe_funct.obj \
+ $(OBJ)$/pe_ignor.obj \
+ $(OBJ)$/pe_namsp.obj \
+ $(OBJ)$/pe_param.obj \
+ $(OBJ)$/pe_tpltp.obj \
+ $(OBJ)$/pe_type.obj \
+ $(OBJ)$/pe_tydef.obj \
+ $(OBJ)$/pe_vafu.obj \
+ $(OBJ)$/pe_vari.obj \
+ $(OBJ)$/preproc.obj \
+ $(OBJ)$/prs_cpp.obj \
+ $(OBJ)$/tkp_cpp.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser/cpp/pe_base.cxx b/autodoc/source/parser/cpp/pe_base.cxx
new file mode 100644
index 000000000000..0a4c823a47a4
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_base.cxx
@@ -0,0 +1,226 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_base.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_type.hxx>
+#include "pe_type.hxx"
+
+
+
+
+namespace cpp
+{
+
+
+static const PE_Base::Base aNullBase_;
+
+
+PE_Base::PE_Base( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati(new PeStatusArray<PE_Base>)
+ // aBaseIds,
+ // pSpType,
+ // pSpuBaseName
+{
+ Setup_StatusFunctions();
+ aBaseIds.reserve(4);
+
+ pSpType = new SP_Type(*this);
+ pSpuBaseName = new SPU_BaseName(*pSpType, 0, &PE_Base::SpReturn_BaseName);
+}
+
+
+PE_Base::~PE_Base()
+{
+}
+
+void
+PE_Base::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Base::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Base>::F_Tok F_Tok;
+ static F_Tok stateF_startOfNext[] = { &PE_Base::On_startOfNext_Identifier,
+ &PE_Base::On_startOfNext_public,
+ &PE_Base::On_startOfNext_protected,
+ &PE_Base::On_startOfNext_private,
+ &PE_Base::On_startOfNext_virtual,
+ &PE_Base::On_startOfNext_DoubleColon };
+ static INT16 stateT_startOfNext[] = { Tid_Identifier,
+ Tid_public,
+ Tid_protected,
+ Tid_private,
+ Tid_virtual,
+ Tid_DoubleColon };
+ static F_Tok stateF_inName[] = { &PE_Base::On_inName_Identifier,
+ &PE_Base::On_inName_virtual,
+ &PE_Base::On_inName_SwBracket_Left,
+ &PE_Base::On_inName_DoubleColon,
+ &PE_Base::On_inName_Comma };
+ static INT16 stateT_inName[] = { Tid_Identifier,
+ Tid_virtual,
+ Tid_SwBracket_Left,
+ Tid_DoubleColon,
+ Tid_Comma };
+
+ SEMPARSE_CREATE_STATUS(PE_Base, startOfNext, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Base, inName, Hdl_SyntaxError);
+}
+
+void
+PE_Base::Hdl_SyntaxError( const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Base::InitData()
+{
+ pStati->SetCur(startOfNext);
+ csv::erase_container(aBaseIds);
+ aBaseIds.push_back(aNullBase_);
+}
+
+void
+PE_Base::TransferData()
+{
+ // Does nothing.
+}
+
+void
+PE_Base::SpReturn_BaseName()
+{
+ CurObject().nId = pSpuBaseName->Child().Result_Type().Id();
+
+ static StreamStr aBaseName(100);
+ aBaseName.seekp(0);
+ pSpuBaseName->Child().Result_Type().Get_Text( aBaseName, Env().AryGate() );
+
+ Env().Event_Class_FinishedBase(aBaseName.c_str());
+}
+
+void
+PE_Base::On_startOfNext_public(const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(inName);
+
+ CurObject().eProtection = ary::cpp::PROTECT_public;
+}
+
+void
+PE_Base::On_startOfNext_protected(const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(inName);
+
+ CurObject().eProtection = ary::cpp::PROTECT_protected;
+}
+
+void
+PE_Base::On_startOfNext_private(const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(inName);
+
+ CurObject().eProtection = ary::cpp::PROTECT_private;
+}
+
+void
+PE_Base::On_startOfNext_virtual(const char *)
+{
+ SetTokenResult(done, stay);
+
+ CurObject().eVirtuality = ary::cpp::VIRTUAL_virtual;
+}
+
+void
+PE_Base::On_startOfNext_Identifier(const char * )
+{
+ pSpuBaseName->Push(not_done);
+}
+
+void
+PE_Base::On_startOfNext_DoubleColon(const char *)
+{
+ pSpuBaseName->Push(not_done);
+}
+
+void
+PE_Base::On_inName_Identifier(const char * )
+{
+ pSpuBaseName->Push(not_done);
+}
+
+void
+PE_Base::On_inName_virtual(const char *)
+{
+ SetTokenResult(done, stay);
+
+ CurObject().eVirtuality = ary::cpp::VIRTUAL_virtual;
+}
+
+void
+PE_Base::On_inName_DoubleColon(const char *)
+{
+ pSpuBaseName->Push(not_done);
+}
+
+void
+PE_Base::On_inName_Comma(const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(startOfNext);
+
+ aBaseIds.push_back( aNullBase_ );
+}
+
+void
+PE_Base::On_inName_SwBracket_Left(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+
+} // namespace cpp
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_base.hxx b/autodoc/source/parser/cpp/pe_base.hxx
new file mode 100644
index 000000000000..0a39160b6a19
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_base.hxx
@@ -0,0 +1,126 @@
+/* -*- 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 ADC_CPP_PE_BASE_HXX
+#define ADC_CPP_PE_BASE_HXX
+
+// BASE CLASSES
+#include "cpp_pe.hxx"
+// USED SERVICES
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_slntry.hxx>
+
+
+
+namespace cpp
+{
+
+class PE_Type;
+
+class PE_Base : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ startOfNext,
+ inName,
+ size_of_states
+ };
+
+ typedef ary::cpp::List_Bases BaseList;
+ typedef ary::cpp::S_Classes_Base Base;
+
+ PE_Base(
+ Cpp_PE * i_pParent );
+ ~PE_Base();
+
+ const BaseList & Result_BaseIds() const;
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ private:
+ typedef SubPe< PE_Base, PE_Type > SP_Type;
+ typedef SubPeUse< PE_Base, PE_Type> SPU_BaseName;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void SpReturn_BaseName();
+
+ void On_startOfNext_Identifier(const char *);
+ void On_startOfNext_public(const char *);
+ void On_startOfNext_protected(const char *);
+ void On_startOfNext_private(const char *);
+ void On_startOfNext_virtual(const char *);
+ void On_startOfNext_DoubleColon(const char *);
+
+ void On_inName_Identifier(const char *);
+ void On_inName_virtual(const char *);
+ void On_inName_SwBracket_Left(const char *);
+ void On_inName_DoubleColon(const char *);
+ void On_inName_Comma(const char *);
+
+ Base & CurObject();
+
+ // DATA
+ Dyn< PeStatusArray<PE_Base> >
+ pStati;
+
+ Dyn<SP_Type> pSpType; /// till "{" incl.
+ Dyn<SPU_BaseName> pSpuBaseName;
+
+ BaseList aBaseIds;
+};
+
+
+
+// IMPLEMENTATION
+
+inline const PE_Base::BaseList &
+PE_Base::Result_BaseIds() const
+ { return aBaseIds; }
+
+
+inline PE_Base::Base &
+PE_Base::CurObject()
+ { return aBaseIds.back(); }
+
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_class.cxx b/autodoc/source/parser/cpp/pe_class.cxx
new file mode 100644
index 000000000000..1b4910aff9be
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_class.cxx
@@ -0,0 +1,496 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_class.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <all_toks.hxx>
+#include "pe_base.hxx"
+#include "pe_defs.hxx"
+#include "pe_enum.hxx"
+#include "pe_tydef.hxx"
+#include "pe_vafu.hxx"
+#include "pe_ignor.hxx"
+
+
+namespace cpp {
+
+// using ary::Cid;
+
+PE_Class::PE_Class(Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Class> ),
+ // pSpBase,
+ // pSpTypedef,
+ // pSpVarFunc,
+ // pSpIgnore,
+ // pSpuBase,
+ // pSpuTypedef,
+ // pSpuVarFunc,
+ // pSpuUsing,
+ // pSpuIgnoreFailure,
+ // sLocalName,
+ eClassKey(ary::cpp::CK_class),
+ pCurObject(0),
+ // aBases,
+ eResult_KindOf(is_declaration)
+{
+ Setup_StatusFunctions();
+
+ pSpBase = new SP_Base(*this);
+ pSpTypedef = new SP_Typedef(*this);
+ pSpVarFunc = new SP_VarFunc(*this);
+ pSpIgnore = new SP_Ignore(*this);
+ pSpDefs = new SP_Defines(*this);
+
+ pSpuBase = new SPU_Base(*pSpBase, 0, &PE_Class::SpReturn_Base);
+ pSpuTypedef = new SPU_Typedef(*pSpTypedef, 0, 0);
+ pSpuVarFunc = new SPU_VarFunc(*pSpVarFunc, 0, 0);
+
+ pSpuTemplate= new SPU_Ignore(*pSpIgnore, 0, 0);
+ pSpuUsing = new SPU_Ignore(*pSpIgnore, 0, 0);
+ pSpuIgnoreFailure
+ = new SPU_Ignore(*pSpIgnore, 0, 0);
+ pSpuDefs = new SPU_Defines(*pSpDefs, 0, 0);
+}
+
+
+PE_Class::~PE_Class()
+{
+}
+
+void
+PE_Class::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+Cpp_PE *
+PE_Class::Handle_ChildFailure()
+{
+ SetCurSPU(pSpuIgnoreFailure.Ptr());
+ return &pSpuIgnoreFailure->Child();
+}
+
+void
+PE_Class::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Class>::F_Tok F_Tok;
+
+ static F_Tok stateF_start[] = { &PE_Class::On_start_class,
+ &PE_Class::On_start_struct,
+ &PE_Class::On_start_union };
+ static INT16 stateT_start[] = { Tid_class,
+ Tid_struct,
+ Tid_union };
+
+ static F_Tok stateF_expectName[] = { &PE_Class::On_expectName_Identifier,
+ &PE_Class::On_expectName_SwBracket_Left,
+ &PE_Class::On_expectName_Colon
+ };
+ static INT16 stateT_expectName[] = { Tid_Identifier,
+ Tid_SwBracket_Left,
+ Tid_Colon
+ };
+
+ static F_Tok stateF_gotName[] = { &PE_Class::On_gotName_SwBracket_Left,
+ &PE_Class::On_gotName_Semicolon,
+ &PE_Class::On_gotName_Colon };
+ static INT16 stateT_gotName[] = { Tid_SwBracket_Left,
+ Tid_Semicolon,
+ Tid_Colon };
+
+ static F_Tok stateF_bodyStd[] = { &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_ClassKey,
+ &PE_Class::On_bodyStd_ClassKey,
+ &PE_Class::On_bodyStd_ClassKey,
+
+ &PE_Class::On_bodyStd_enum,
+ &PE_Class::On_bodyStd_typedef,
+ &PE_Class::On_bodyStd_public,
+ &PE_Class::On_bodyStd_protected,
+ &PE_Class::On_bodyStd_private,
+
+ &PE_Class::On_bodyStd_template,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_friend,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc,
+
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc,
+
+ &PE_Class::On_bodyStd_using,
+ &PE_Class::On_bodyStd_SwBracket_Right,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_DefineName,
+ &PE_Class::On_bodyStd_MacroName,
+
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc,
+ &PE_Class::On_bodyStd_VarFunc, };
+
+ static INT16 stateT_bodyStd[] = { Tid_Identifier,
+ Tid_operator,
+ Tid_class,
+ Tid_struct,
+ Tid_union,
+
+ Tid_enum,
+ Tid_typedef,
+ Tid_public,
+ Tid_protected,
+ Tid_private,
+
+ Tid_template,
+ Tid_virtual,
+ Tid_friend,
+ Tid_Tilde,
+ Tid_const,
+
+ Tid_volatile,
+ Tid_static,
+ Tid_mutable,
+ Tid_inline,
+ Tid_explicit,
+
+ Tid_using,
+ Tid_SwBracket_Right,
+ Tid_DoubleColon,
+ Tid_typename,
+ Tid_DefineName,
+
+ Tid_MacroName,
+ Tid_BuiltInType,
+ Tid_TypeSpecializer };
+
+ static F_Tok stateF_inProtection[] = { &PE_Class::On_inProtection_Colon };
+ static INT16 stateT_inProtection[] = { Tid_Colon };
+
+ static F_Tok stateF_afterDecl[] = { &PE_Class::On_afterDecl_Semicolon };
+ static INT16 stateT_afterDecl[] = { Tid_Semicolon };
+
+ SEMPARSE_CREATE_STATUS(PE_Class, start, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Class, expectName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Class, gotName, On_gotName_Return2Type);
+ SEMPARSE_CREATE_STATUS(PE_Class, bodyStd, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Class, inProtection, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Class, afterDecl, On_afterDecl_Return2Type);
+
+}
+
+void
+PE_Class::InitData()
+{
+ pStati->SetCur(start);
+ sLocalName.clear();
+ eClassKey = ary::cpp::CK_class;
+ pCurObject = 0;
+ csv::erase_container(aBases);
+ eResult_KindOf = is_declaration;
+}
+
+void
+PE_Class::TransferData()
+{
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_Class::Hdl_SyntaxError( const char * i_sText)
+{
+ if ( *i_sText == ';' )
+ {
+ Cerr() << Env().CurFileName() << ", line "
+ << Env().LineCount()
+ << ": Sourcecode warning: ';' as a toplevel declaration is deprecated."
+ << Endl();
+ SetTokenResult(done,stay);
+ return;
+ }
+
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Class::Init_CurObject()
+{
+ // KORR_FUTURE
+ // This will have to be done before parsing base classes, because of
+ // possible inline documentation for base classes.
+ pCurObject = & Env().AryGate().Ces().Store_Class( Env().Context(), sLocalName, eClassKey );
+
+ for ( PE_Base::BaseList::const_iterator it = aBases.begin();
+ it != aBases.end();
+ ++it )
+ {
+ pCurObject->Add_BaseClass( *it );
+ } // end for
+
+ Dyn< StringVector >
+ pTplParams( Env().Get_CurTemplateParameters() );
+ if ( pTplParams )
+ {
+ for ( StringVector::const_iterator it = pTplParams->begin();
+ it != pTplParams->end();
+ ++it )
+ {
+ pCurObject->Add_TemplateParameterType( *it, ary::cpp::Type_id(0) );
+ } // end for
+ }
+}
+
+void
+PE_Class::SpReturn_Base()
+{
+ aBases = pSpuBase->Child().Result_BaseIds();
+ pStati->SetCur(gotName);
+}
+
+void
+PE_Class::On_start_class( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expectName);
+ eClassKey = ary::cpp::CK_class;
+}
+
+void
+PE_Class::On_start_struct( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expectName);
+ eClassKey = ary::cpp::CK_struct;
+}
+
+void
+PE_Class::On_start_union( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expectName);
+ eClassKey = ary::cpp::CK_union;
+}
+
+void
+PE_Class::On_expectName_Identifier( const char * i_sText )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(gotName);
+ sLocalName = i_sText;
+}
+
+void
+PE_Class::On_expectName_SwBracket_Left( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(bodyStd);
+
+ sLocalName = "";
+ Init_CurObject();
+ sLocalName = pCurObject->LocalName();
+
+ Env().OpenClass(*pCurObject);
+}
+
+void
+PE_Class::On_expectName_Colon( const char * )
+{
+ pStati->SetCur(gotName);
+ sLocalName = "";
+
+ pSpuBase->Push(done);
+}
+
+void
+PE_Class::On_gotName_SwBracket_Left( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(bodyStd);
+
+ Init_CurObject();
+ if ( sLocalName.empty() )
+ sLocalName = pCurObject->LocalName();
+
+ Env().OpenClass(*pCurObject);
+}
+
+void
+PE_Class::On_gotName_Semicolon( const char * )
+{
+ SetTokenResult(not_done, pop_success);
+
+ eResult_KindOf = is_predeclaration;
+}
+
+void
+PE_Class::On_gotName_Colon( const char * )
+{
+ pSpuBase->Push(done);
+}
+
+void
+PE_Class::On_gotName_Return2Type( const char * )
+{
+ SetTokenResult(not_done, pop_success);
+
+ eResult_KindOf = is_qualified_typename;
+}
+
+void
+PE_Class::On_bodyStd_VarFunc( const char * )
+{
+ pSpuVarFunc->Push(not_done);
+}
+
+void
+PE_Class::On_bodyStd_ClassKey( const char * )
+{
+ pSpuVarFunc->Push(not_done); // This is correct,
+ // classes are parsed via PE_Type.
+}
+
+void
+PE_Class::On_bodyStd_enum( const char * )
+{
+ pSpuVarFunc->Push(not_done); // This is correct,
+ // enums are parsed via PE_Type.
+}
+
+void
+PE_Class::On_bodyStd_typedef( const char * )
+{
+ pSpuTypedef->Push(not_done);
+}
+
+void
+PE_Class::On_bodyStd_public( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(inProtection);
+
+ Env().SetCurProtection(ary::cpp::PROTECT_public);
+}
+
+void
+PE_Class::On_bodyStd_protected( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(inProtection);
+
+ Env().SetCurProtection(ary::cpp::PROTECT_protected);
+}
+
+void
+PE_Class::On_bodyStd_private( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(inProtection);
+
+ Env().SetCurProtection(ary::cpp::PROTECT_private);
+}
+
+void
+PE_Class::On_bodyStd_template( const char * )
+{
+ pSpuTemplate->Push(done);
+}
+
+void
+PE_Class::On_bodyStd_friend( const char * )
+{
+ // KORR_FUTURE
+ pSpuUsing->Push(done);
+}
+
+void
+PE_Class::On_bodyStd_using( const char * )
+{
+ pSpuUsing->Push(done);
+}
+
+void
+PE_Class::On_bodyStd_SwBracket_Right( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterDecl);
+
+ Env().CloseClass();
+}
+
+void
+PE_Class::On_bodyStd_DefineName(const char * )
+{
+ pSpuDefs->Push(not_done);
+}
+
+void
+PE_Class::On_bodyStd_MacroName(const char * )
+{
+ pSpuDefs->Push(not_done);
+}
+
+
+void
+PE_Class::On_inProtection_Colon( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(bodyStd);
+}
+
+void
+PE_Class::On_afterDecl_Semicolon( const char * )
+{
+ SetTokenResult(not_done, pop_success);
+ eResult_KindOf = is_declaration;
+}
+
+void
+PE_Class::On_afterDecl_Return2Type( const char * )
+{
+ SetTokenResult(not_done, pop_success);
+ eResult_KindOf = is_implicit_declaration;
+}
+
+
+} // namespace cpp
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_class.hxx b/autodoc/source/parser/cpp/pe_class.hxx
new file mode 100644
index 000000000000..d94123a26265
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_class.hxx
@@ -0,0 +1,255 @@
+/* -*- 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 ADC_CPP_PE_CLASS_HXX
+#define ADC_CPP_PE_CLASS_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // OTHER
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_slntry.hxx>
+#include "all_toks.hxx"
+
+namespace ary
+{
+namespace cpp
+{
+ class Class;
+}
+}
+
+
+namespace cpp
+{
+
+
+using ary::cpp::E_Protection;
+using ary::cpp::E_Virtuality;
+
+
+class PE_Base;
+class PE_Enum;
+class PE_Typedef;
+class PE_VarFunc;
+class PE_Ignore;
+class PE_Defines;
+
+
+class PE_Class : public cpp::Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start, /// before class, struct or union
+ expectName, /// after class, struct or union
+ gotName, /// after name, before : or {
+ bodyStd, /// after {
+ inProtection, /// after public, protected or private and before ":"
+ afterDecl, /// after ending }
+ size_of_states
+ };
+
+ enum E_KindOfResult
+ {
+ is_declaration, // normal
+ is_implicit_declaration, // like in: class Abc { public int n; } aAbc;
+ is_predeclaration, // like: class Abc;
+ is_qualified_typename // like in: class Abc * fx();
+
+ };
+
+ PE_Class(
+ Cpp_PE * i_pParent );
+ ~PE_Class();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+ virtual Cpp_PE * Handle_ChildFailure();
+
+ E_KindOfResult Result_KindOf() const;
+ const String & Result_LocalName() const;
+ const String & Result_FirstNameSegment() const;
+
+ private:
+ typedef SubPe< PE_Class, PE_Base > SP_Base;
+// typedef SubPe< PE_Class, PE_Enum> SP_Enum;
+ typedef SubPe< PE_Class, PE_Typedef> SP_Typedef;
+ typedef SubPe< PE_Class, PE_VarFunc> SP_VarFunc;
+ typedef SubPe< PE_Class, PE_Ignore > SP_Ignore;
+ typedef SubPe< PE_Class, PE_Defines> SP_Defines;
+
+ typedef SubPeUse< PE_Class, PE_Base> SPU_Base;
+// typedef SubPeUse< PE_Class, PE_Enum> SPU_Enum;
+ typedef SubPeUse< PE_Class, PE_Typedef> SPU_Typedef;
+ typedef SubPeUse< PE_Class, PE_VarFunc> SPU_VarFunc;
+ typedef SubPeUse< PE_Class, PE_Ignore> SPU_Ignore;
+ typedef SubPeUse< PE_Class, PE_Defines> SPU_Defines;
+
+ typedef ary::cpp::List_Bases BaseList;
+ typedef ary::cpp::S_Classes_Base Base;
+ typedef ary::cpp::E_Protection E_Protection;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+ void Init_CurObject();
+
+ void SpReturn_Base();
+
+ void On_start_class( const char * );
+ void On_start_struct( const char * );
+ void On_start_union( const char * );
+
+ void On_expectName_Identifier( const char * );
+ void On_expectName_SwBracket_Left( const char * );
+ void On_expectName_Colon( const char * );
+
+ void On_gotName_SwBracket_Left( const char * );
+ void On_gotName_Semicolon( const char * );
+ void On_gotName_Colon( const char * );
+ void On_gotName_Return2Type( const char * );
+
+ void On_bodyStd_VarFunc( const char * );
+ void On_bodyStd_ClassKey( const char * );
+ void On_bodyStd_enum( const char * );
+ void On_bodyStd_typedef( const char * );
+ void On_bodyStd_public( const char * );
+ void On_bodyStd_protected( const char * );
+ void On_bodyStd_private( const char * );
+ void On_bodyStd_template( const char * );
+ void On_bodyStd_friend( const char * );
+ void On_bodyStd_using( const char * );
+ void On_bodyStd_SwBracket_Right( const char * );
+ void On_bodyStd_DefineName(const char * );
+ void On_bodyStd_MacroName(const char * );
+
+ void On_inProtection_Colon( const char * );
+
+ void On_afterDecl_Semicolon( const char * );
+ void On_afterDecl_Return2Type( const char * );
+
+ // DATA
+ Dyn< PeStatusArray<PE_Class> >
+ pStati;
+
+ Dyn<SP_Base> pSpBase;
+// Dyn<SP_Enum> pSpEnum;
+ Dyn<SP_Typedef> pSpTypedef;
+ Dyn<SP_VarFunc> pSpVarFunc;
+ Dyn<SP_Ignore> pSpIgnore;
+ Dyn<SP_Defines> pSpDefs;
+
+ Dyn<SPU_Base> pSpuBase;
+// Dyn<SPU_Enum> pSpuEnum;
+ Dyn<SPU_Typedef> pSpuTypedef;
+ Dyn<SPU_VarFunc> pSpuVarFunc;
+
+ Dyn<SPU_Ignore> pSpuTemplate;
+ Dyn<SPU_Ignore> pSpuUsing;
+ Dyn<SPU_Ignore> pSpuIgnoreFailure;
+ Dyn<SPU_Defines> pSpuDefs;
+
+
+
+ String sLocalName;
+ ary::cpp::E_ClassKey
+ eClassKey;
+ ary::cpp::Class * pCurObject;
+ BaseList aBases;
+
+ E_KindOfResult eResult_KindOf;
+};
+
+
+
+// IMPLEMENTATION
+
+inline PE_Class::E_KindOfResult
+PE_Class::Result_KindOf() const
+{
+ return eResult_KindOf;
+}
+
+inline const String &
+PE_Class::Result_LocalName() const
+{
+ return sLocalName;
+}
+
+inline const String &
+PE_Class::Result_FirstNameSegment() const
+{
+ return sLocalName;
+}
+
+
+
+
+} // namespace cpp
+
+
+/* // Branches
+
+class struct union
+ -> Class
+ -> Predeclaration
+
+typedef
+ -> Typedef
+
+enum
+ -> Enum
+
+TypeDeclaration
+ -> Function In Class
+ -> Variable
+
+public, protected, private
+ -> Protection declaration
+
+friend
+ -> Friend Class
+ -> Friend Function
+
+virtual
+ -> Function In Class
+
+using
+ -> Using Declaration
+*/
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_defs.cxx b/autodoc/source/parser/cpp/pe_defs.cxx
new file mode 100644
index 000000000000..d599ea9de1eb
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_defs.cxx
@@ -0,0 +1,182 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_defs.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_define.hxx>
+#include <ary/cpp/c_macro.hxx>
+#include <ary/cpp/cp_def.hxx>
+#include "all_toks.hxx"
+
+
+namespace cpp
+{
+
+
+PE_Defines::PE_Defines( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Defines> ),
+ // sName,
+ // aParameters,
+ // sDefinition,
+ bIsMacro(false)
+{
+ Setup_StatusFunctions();
+}
+
+
+PE_Defines::~PE_Defines()
+{
+}
+
+void
+PE_Defines::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Defines::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Defines>::F_Tok F_Tok;
+ static F_Tok stateF_expectName[] = { &PE_Defines::On_expectName_DefineName,
+ &PE_Defines::On_expectName_MacroName
+ };
+ static INT16 stateT_expectName[] = { Tid_DefineName,
+ Tid_MacroName
+ };
+
+ static F_Tok stateF_gotDefineName[] = { &PE_Defines::On_gotDefineName_PreProDefinition };
+ static INT16 stateT_gotDefineName[] = { Tid_PreProDefinition };
+
+ static F_Tok stateF_expectMacroParameters[] =
+ { &PE_Defines::On_expectMacroParameters_MacroParameter,
+ &PE_Defines::On_expectMacroParameters_PreProDefinition
+ };
+ static INT16 stateT_expectMacroParameters[] =
+ { Tid_MacroParameter,
+ Tid_PreProDefinition
+ };
+
+ SEMPARSE_CREATE_STATUS(PE_Defines, expectName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Defines, gotDefineName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Defines, expectMacroParameters, Hdl_SyntaxError);
+}
+
+void
+PE_Defines::InitData()
+{
+ pStati->SetCur(expectName);
+
+ sName.clear();
+ csv::erase_container( aParameters );
+ csv::erase_container( aDefinition );
+ bIsMacro = false;
+}
+
+void
+PE_Defines::TransferData()
+{
+ if (NOT bIsMacro)
+ {
+ if (aDefinition.empty() OR aDefinition.front().empty())
+ return;
+
+ ary::cpp::Define &
+ rNew = Env().AryGate().Defs().Store_Define(
+ Env().Context(), sName, aDefinition );
+ Env().Event_Store_CppDefinition(rNew);
+ }
+ else
+ {
+ ary::cpp::Macro &
+ rNew = Env().AryGate().Defs().Store_Macro(
+ Env().Context(), sName, aParameters, aDefinition );
+ Env().Event_Store_CppDefinition(rNew);
+ }
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_Defines::Hdl_SyntaxError( const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Defines::On_expectName_DefineName( const char * i_sText )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(gotDefineName);
+
+ sName = i_sText;
+ bIsMacro = false;
+}
+
+void
+PE_Defines::On_expectName_MacroName( const char * i_sText )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expectMacroParameters);
+
+ sName = i_sText;
+ bIsMacro = true;
+}
+
+void
+PE_Defines::On_gotDefineName_PreProDefinition( const char * i_sText )
+{
+ SetTokenResult(done, pop_success);
+
+ aDefinition.push_back( String (i_sText) );
+}
+
+void
+PE_Defines::On_expectMacroParameters_MacroParameter( const char * i_sText )
+{
+ SetTokenResult(done, stay);
+ aParameters.push_back( String (i_sText) );
+}
+
+void
+PE_Defines::On_expectMacroParameters_PreProDefinition( const char * i_sText )
+{
+ SetTokenResult(done, pop_success);
+
+ aDefinition.push_back( String (i_sText) );
+}
+
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_defs.hxx b/autodoc/source/parser/cpp/pe_defs.hxx
new file mode 100644
index 000000000000..955dadef7828
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_defs.hxx
@@ -0,0 +1,96 @@
+/* -*- 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 ADC_CPP_PE_DEFS_HXX
+#define ADC_CPP_PE_DEFS_HXX
+
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+ // PARAMETERS
+
+
+namespace cpp
+{
+
+
+
+class PE_Defines : public cpp::Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ expectName,
+ gotDefineName,
+ expectMacroParameters,
+ size_of_states
+ };
+
+ PE_Defines(
+ Cpp_PE * i_pParent );
+ ~PE_Defines();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ private:
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void On_expectName_DefineName( const char * );
+ void On_expectName_MacroName( const char * );
+
+ void On_gotDefineName_PreProDefinition( const char * );
+
+ void On_expectMacroParameters_MacroParameter( const char * );
+ void On_expectMacroParameters_PreProDefinition( const char * );
+
+ // DATA
+ Dyn< PeStatusArray<PE_Defines> >
+ pStati;
+
+ String sName;
+ StringVector aParameters;
+ StringVector aDefinition;
+ bool bIsMacro;
+};
+
+
+
+} //namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_enum.cxx b/autodoc/source/parser/cpp/pe_enum.cxx
new file mode 100644
index 000000000000..b56ffc96380b
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_enum.cxx
@@ -0,0 +1,191 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_enum.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_enum.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <all_toks.hxx>
+#include "pe_enval.hxx"
+
+
+namespace cpp {
+
+
+PE_Enum::PE_Enum(Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Enum> ),
+ // pSpValue,
+ // pSpuValue,
+ // sLocalName,
+ pCurObject(0),
+ eResult_KindOf(is_declaration)
+{
+ Setup_StatusFunctions();
+
+ pSpValue = new SP_EnumValue(*this);
+ pSpuValue = new SPU_EnumValue(*pSpValue, 0, 0);
+}
+
+
+PE_Enum::~PE_Enum()
+{
+}
+
+void
+PE_Enum::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Enum::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Enum>::F_Tok F_Tok;
+ static F_Tok stateF_expectName[] = { &PE_Enum::On_expectName_Identifier,
+ &PE_Enum::On_expectName_SwBracket_Left
+ };
+ static INT16 stateT_expectName[] = { Tid_Identifier,
+ Tid_SwBracket_Left
+ };
+
+ static F_Tok stateF_gotName[] = { &PE_Enum::On_gotName_SwBracket_Left };
+ static INT16 stateT_gotName[] = { Tid_SwBracket_Left };
+
+ static F_Tok stateF_bodyStd[] = { &PE_Enum::On_bodyStd_Identifier,
+ &PE_Enum::On_bodyStd_SwBracket_Right };
+ static INT16 stateT_bodyStd[] = { Tid_Identifier,
+ Tid_SwBracket_Right };
+
+ static F_Tok stateF_afterBlock[] = { &PE_Enum::On_afterBlock_Semicolon };
+ static INT16 stateT_afterBlock[] = { Tid_Semicolon };
+
+ SEMPARSE_CREATE_STATUS(PE_Enum, expectName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Enum, gotName, On_gotName_Return2Type);
+ SEMPARSE_CREATE_STATUS(PE_Enum, bodyStd, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Enum, afterBlock, On_afterBlock_Return2Type);
+}
+
+void
+PE_Enum::InitData()
+{
+ pStati->SetCur(expectName);
+ pCurObject = 0;
+ sLocalName.clear();
+ eResult_KindOf = is_declaration;
+}
+
+void
+PE_Enum::TransferData()
+{
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_Enum::Hdl_SyntaxError( const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Enum::On_expectName_Identifier( const char * i_sText )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(gotName);
+
+ sLocalName = i_sText;
+ pCurObject = & Env().AryGate().Ces().Store_Enum( Env().Context(), sLocalName );
+}
+
+void
+PE_Enum::On_expectName_SwBracket_Left( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(bodyStd);
+
+ sLocalName = "";
+ pCurObject = & Env().AryGate().Ces().Store_Enum( Env().Context(), sLocalName );
+ sLocalName = pCurObject->LocalName();
+
+ Env().OpenEnum(*pCurObject);
+}
+
+void
+PE_Enum::On_gotName_SwBracket_Left( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(bodyStd);
+ Env().OpenEnum(*pCurObject);
+}
+
+void
+PE_Enum::On_gotName_Return2Type( const char * )
+{
+ SetTokenResult(not_done, pop_success);
+
+ eResult_KindOf = is_qualified_typename;
+}
+
+void
+PE_Enum::On_bodyStd_Identifier( const char * )
+{
+ pSpuValue->Push(not_done);
+}
+
+void
+PE_Enum::On_bodyStd_SwBracket_Right( const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterBlock);
+
+ Env().CloseEnum();
+}
+
+void
+PE_Enum::On_afterBlock_Semicolon( const char * )
+{
+ SetTokenResult(not_done, pop_success);
+ eResult_KindOf = is_declaration;
+}
+
+void
+PE_Enum::On_afterBlock_Return2Type( const char * )
+{
+ SetTokenResult(not_done, pop_success);
+ eResult_KindOf = is_implicit_declaration;
+}
+
+} // namespace cpp
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_enum.hxx b/autodoc/source/parser/cpp/pe_enum.hxx
new file mode 100644
index 000000000000..8d7484a9a6df
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_enum.hxx
@@ -0,0 +1,140 @@
+/* -*- 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 ADC_CPP_PE_ENUM_HXX
+#define ADC_CPP_PE_ENUM_HXX
+
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+ // PARAMETERS
+// #include "all_toks.hxx"
+
+
+namespace cpp {
+
+
+class PE_EnumValue;
+
+class PE_Enum : public cpp::Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ expectName, /// after "enum"
+ gotName, /// after name, before : or {
+ bodyStd, /// after {
+ afterBlock, /// after ending }
+ size_of_states
+ };
+
+ enum E_KindOfResult
+ {
+ is_declaration, // normal
+ is_implicit_declaration, // like in: enum Abc { rot, gelb, blau } aAbc;
+ is_qualified_typename // like in: enum Abc * fx();
+
+ };
+ PE_Enum(
+ Cpp_PE * i_pParent );
+ ~PE_Enum();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ E_KindOfResult Result_KindOf() const;
+ const String & Result_LocalName() const;
+ const String & Result_FirstNameSegment() const;
+
+ private:
+ typedef SubPe< PE_Enum, PE_EnumValue > SP_EnumValue;
+ typedef SubPeUse< PE_Enum, PE_EnumValue> SPU_EnumValue;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void On_expectName_Identifier( const char * );
+ void On_expectName_SwBracket_Left( const char * );
+
+ void On_gotName_SwBracket_Left( const char * );
+ void On_gotName_Return2Type( const char * );
+
+ void On_bodyStd_Identifier( const char * );
+ void On_bodyStd_SwBracket_Right( const char * );
+
+ void On_afterBlock_Semicolon( const char * );
+ void On_afterBlock_Return2Type( const char * );
+
+ // DATA
+ Dyn< PeStatusArray<PE_Enum> >
+ pStati;
+ Dyn<SP_EnumValue> pSpValue;
+ Dyn<SPU_EnumValue> pSpuValue;
+
+ String sLocalName;
+ ary::cpp::Enum * pCurObject;
+
+ E_KindOfResult eResult_KindOf;
+};
+
+
+
+// IMPLEMENTATION
+inline PE_Enum::E_KindOfResult
+PE_Enum::Result_KindOf() const
+{
+ return eResult_KindOf;
+}
+
+inline const String &
+PE_Enum::Result_LocalName() const
+{
+ return sLocalName;
+}
+
+inline const String &
+PE_Enum::Result_FirstNameSegment() const
+{
+ return sLocalName;
+}
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_enval.cxx b/autodoc/source/parser/cpp/pe_enval.cxx
new file mode 100644
index 000000000000..0480047fb10b
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_enval.cxx
@@ -0,0 +1,170 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_enval.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include "pe_expr.hxx"
+
+
+
+namespace cpp {
+
+
+PE_EnumValue::PE_EnumValue( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_EnumValue> )
+ // pSpExpression,
+ // pSpuInitExpression
+{
+ Setup_StatusFunctions();
+
+ pSpExpression = new SP_Expression(*this);
+ pSpuInitExpression = new SPU_Expression(*pSpExpression, 0, &PE_EnumValue::SpReturn_InitExpression);
+}
+
+PE_EnumValue::~PE_EnumValue()
+{
+}
+
+void
+PE_EnumValue::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_EnumValue::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_EnumValue>::F_Tok F_Tok;
+
+ static F_Tok stateF_start[] = { &PE_EnumValue::On_start_Identifier };
+ static INT16 stateT_start[] = { Tid_Identifier };
+
+ static F_Tok stateF_afterName[] = { &PE_EnumValue::On_afterName_SwBracket_Right,
+ &PE_EnumValue::On_afterName_Comma,
+ &PE_EnumValue::On_afterName_Assign };
+ static INT16 stateT_afterName[] = { Tid_SwBracket_Right,
+ Tid_Comma,
+ Tid_Assign };
+
+ static F_Tok stateF_expectFinish[] = { &PE_EnumValue::On_expectFinish_SwBracket_Right,
+ &PE_EnumValue::On_expectFinish_Comma };
+ static INT16 stateT_expectFinish[] = { Tid_SwBracket_Right,
+ Tid_Comma };
+
+ SEMPARSE_CREATE_STATUS(PE_EnumValue, start, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_EnumValue, afterName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_EnumValue, expectFinish, Hdl_SyntaxError);
+}
+
+void
+PE_EnumValue::InitData()
+{
+ pStati->SetCur(start);
+
+ sName.clear();
+ sInitExpression.clear();
+}
+
+void
+PE_EnumValue::TransferData()
+{
+ pStati->SetCur(size_of_states);
+
+ ary::cpp::EnumValue &
+ rEnVal = Env().AryGate().Ces().Store_EnumValue(
+ Env().Context(), sName, sInitExpression );
+ Env().Event_Store_EnumValue(rEnVal);
+}
+
+void
+PE_EnumValue::Hdl_SyntaxError( const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_EnumValue::SpReturn_InitExpression()
+{
+ pStati->SetCur(expectFinish);
+
+ sInitExpression = pSpuInitExpression->Child().Result_Text();
+}
+
+void
+PE_EnumValue::On_start_Identifier(const char * i_sText)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterName);
+
+ sName = i_sText;
+}
+
+void
+PE_EnumValue::On_afterName_SwBracket_Right(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_EnumValue::On_afterName_Comma(const char * )
+{
+ SetTokenResult(done, pop_success);
+}
+
+void
+PE_EnumValue::On_afterName_Assign(const char * )
+{
+ pSpuInitExpression->Push(done);
+}
+
+void
+PE_EnumValue::On_expectFinish_SwBracket_Right(const char * )
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_EnumValue::On_expectFinish_Comma(const char * )
+{
+ SetTokenResult(done, pop_success);
+}
+
+
+} // namespace cpp
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_enval.hxx b/autodoc/source/parser/cpp/pe_enval.hxx
new file mode 100644
index 000000000000..5cfdd5f447af
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_enval.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ADC_CPP_PE_ENVAL_HXX
+#define ADC_CPP_PE_ENVAL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+ // PARAMETERS
+
+
+namespace cpp {
+
+class PE_Expression;
+
+
+class PE_EnumValue : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start, // before name
+ afterName,
+ expectFinish, // after init-expression
+ size_of_states
+ };
+ PE_EnumValue(
+ Cpp_PE * i_pParent );
+ ~PE_EnumValue();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ private:
+ typedef SubPe< PE_EnumValue, PE_Expression > SP_Expression;
+ typedef SubPeUse< PE_EnumValue, PE_Expression> SPU_Expression;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError(const char *);
+
+ void SpReturn_InitExpression();
+
+ void On_start_Identifier(const char * );
+
+ void On_afterName_SwBracket_Right(const char * );
+ void On_afterName_Comma(const char * );
+ void On_afterName_Assign(const char * );
+
+ void On_expectFinish_SwBracket_Right(const char * );
+ void On_expectFinish_Comma(const char * );
+
+ // DATA
+ Dyn< PeStatusArray<PE_EnumValue> >
+ pStati;
+ Dyn<SP_Expression> pSpExpression;
+ Dyn<SPU_Expression> pSpuInitExpression;
+
+ String sName;
+ String sInitExpression;
+};
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_expr.cxx b/autodoc/source/parser/cpp/pe_expr.cxx
new file mode 100644
index 000000000000..0594e57077c5
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_expr.cxx
@@ -0,0 +1,179 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_expr.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+
+
+namespace cpp {
+
+
+
+PE_Expression::PE_Expression( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Expression> ),
+ aResult_Text(100),
+ nBracketCounter(0)
+{
+ Setup_StatusFunctions();
+}
+
+
+PE_Expression::~PE_Expression()
+{
+}
+
+void
+PE_Expression::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Expression::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Expression>::F_Tok F_Tok;
+
+ static F_Tok stateF_std[] = { &PE_Expression::On_std_SwBracket_Left,
+ &PE_Expression::On_std_SwBracket_Right,
+ &PE_Expression::On_std_ArrayBracket_Left,
+ &PE_Expression::On_std_ArrayBracket_Right,
+ &PE_Expression::On_std_Bracket_Left,
+ &PE_Expression::On_std_Bracket_Right,
+ &PE_Expression::On_std_Semicolon,
+ &PE_Expression::On_std_Comma };
+ static INT16 stateT_std[] = { Tid_SwBracket_Left,
+ Tid_SwBracket_Right,
+ Tid_ArrayBracket_Left,
+ Tid_ArrayBracket_Right,
+ Tid_Bracket_Left,
+ Tid_Bracket_Right,
+ Tid_Semicolon,
+ Tid_Comma };
+
+ SEMPARSE_CREATE_STATUS(PE_Expression, std, On_std_Default);
+}
+
+void
+PE_Expression::InitData()
+{
+ pStati->SetCur(std);
+ aResult_Text.seekp(0);
+ nBracketCounter = 0;
+}
+
+void
+PE_Expression::TransferData()
+{
+ pStati->SetCur(size_of_states);
+ if ( aResult_Text.tellp() > 0)
+ aResult_Text.pop_back(1);
+}
+
+void
+PE_Expression::On_std_Default( const char * i_sText)
+{
+ SetTokenResult(done, stay);
+ aResult_Text << i_sText << " ";
+}
+
+void
+PE_Expression::On_std_SwBracket_Left( const char *)
+{
+ SetTokenResult(done, stay);
+ nBracketCounter++;
+}
+
+void
+PE_Expression::On_std_SwBracket_Right( const char *)
+{
+ nBracketCounter--;
+ if ( nBracketCounter >= 0 )
+ SetTokenResult(done, stay);
+ else
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Expression::On_std_ArrayBracket_Left( const char *)
+{
+ SetTokenResult(done, stay);
+ nBracketCounter++;
+}
+
+void
+PE_Expression::On_std_ArrayBracket_Right( const char *)
+{
+ nBracketCounter--;
+ if ( nBracketCounter >= 0 )
+ SetTokenResult(done, stay);
+ else
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Expression::On_std_Bracket_Left( const char *)
+{
+ SetTokenResult(done, stay);
+ nBracketCounter++;
+}
+
+void
+PE_Expression::On_std_Bracket_Right( const char *)
+{
+ nBracketCounter--;
+ if ( nBracketCounter >= 0 )
+ SetTokenResult(done, stay);
+ else
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Expression::On_std_Semicolon( const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Expression::On_std_Comma( const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+
+} // namespace cpp
+
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_expr.hxx b/autodoc/source/parser/cpp/pe_expr.hxx
new file mode 100644
index 000000000000..8c1b5a94af9d
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_expr.hxx
@@ -0,0 +1,107 @@
+/* -*- 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 ADC_CPP_PE_EXPR_HXX
+#define ADC_CPP_PE_EXPR_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+ // PARAMETERS
+
+
+namespace cpp {
+
+
+class PE_Expression : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ std,
+ size_of_states
+ };
+ PE_Expression(
+ Cpp_PE * i_pParent );
+ ~PE_Expression();
+
+ const char * Result_Text() const;
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ private:
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void On_std_Default( const char *);
+
+ void On_std_SwBracket_Left( const char *);
+ void On_std_SwBracket_Right( const char *);
+ void On_std_ArrayBracket_Left( const char *);
+ void On_std_ArrayBracket_Right( const char *);
+ void On_std_Bracket_Left( const char *);
+ void On_std_Bracket_Right( const char *);
+ void On_std_Semicolon( const char *);
+ void On_std_Comma( const char *);
+
+ // DATA
+ Dyn< PeStatusArray<PE_Expression> >
+ pStati;
+
+ csv::StreamStr aResult_Text;
+
+ intt nBracketCounter;
+};
+
+
+
+// IMPLEMENTATION
+
+inline const char *
+PE_Expression::Result_Text() const
+{
+ return aResult_Text.c_str();
+}
+
+
+} // namespace cpp
+
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_file.cxx b/autodoc/source/parser/cpp/pe_file.cxx
new file mode 100644
index 000000000000..6160f97b89b8
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_file.cxx
@@ -0,0 +1,320 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_file.hxx"
+
+// NOT FULLY DECLARED SERVICES
+#include "pe_defs.hxx"
+#include "pe_enum.hxx"
+#include "pe_namsp.hxx"
+#include "pe_tpltp.hxx"
+#include "pe_tydef.hxx"
+#include "pe_vafu.hxx"
+#include "pe_ignor.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+
+
+namespace cpp
+{
+
+PE_File::PE_File( cpp::PeEnvironment & io_rEnv)
+ : Cpp_PE(io_rEnv),
+ pEnv(&io_rEnv),
+ pStati( new PeStatusArray<PE_File> ),
+ // pSpNamespace,
+ // pSpTypedef,
+ // pSpVarFunc,
+ // pSpIgnore,
+ // pSpuNamespace,
+ // pSpuClass,
+ // pSpuTypedef,
+ // pSpuVarFunc,
+ // pSpuTemplate,
+ // pSpuUsing,
+ // pSpuIgnoreFailure,
+ bWithinSingleExternC(false)
+{
+ Setup_StatusFunctions();
+
+ pSpNamespace = new SP_Namespace(*this);
+ pSpTypedef = new SP_Typedef(*this);
+ pSpVarFunc = new SP_VarFunc(*this);
+ pSpTemplate = new SP_Template(*this);
+ pSpDefs = new SP_Defines(*this);
+ pSpIgnore = new SP_Ignore(*this);
+
+ pSpuNamespace = new SPU_Namespace(*pSpNamespace, 0, 0);
+ pSpuTypedef = new SPU_Typedef(*pSpTypedef, 0, 0);
+ pSpuVarFunc = new SPU_VarFunc(*pSpVarFunc, 0, &PE_File::SpReturn_VarFunc);
+ pSpuTemplate = new SPU_Template(*pSpTemplate, 0, &PE_File::SpReturn_Template);
+ pSpuDefs = new SPU_Defines(*pSpDefs, 0, 0);
+ pSpuUsing = new SPU_Ignore(*pSpIgnore, 0, 0);
+ pSpuIgnoreFailure
+ = new SPU_Ignore(*pSpIgnore, 0, 0);
+}
+
+PE_File::~PE_File()
+{
+}
+
+void
+PE_File::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+Cpp_PE *
+PE_File::Handle_ChildFailure()
+{
+ SetCurSPU(pSpuIgnoreFailure.Ptr());
+ return &pSpuIgnoreFailure->Child();
+}
+
+void
+PE_File::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_File>::F_Tok F_Tok;
+ static F_Tok stateF_std[] = { &PE_File::On_std_VarFunc,
+ &PE_File::On_std_ClassKey,
+ &PE_File::On_std_ClassKey,
+ &PE_File::On_std_ClassKey,
+ &PE_File::On_std_enum,
+
+ &PE_File::On_std_typedef,
+ &PE_File::On_std_template,
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_extern,
+
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_namespace,
+ &PE_File::On_std_using,
+
+ &PE_File::On_std_SwBracketRight,
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_DefineName,
+ &PE_File::On_std_MacroName,
+
+ &PE_File::On_std_VarFunc,
+ &PE_File::On_std_VarFunc };
+
+ static INT16 stateT_std[] = { Tid_Identifier,
+ Tid_class,
+ Tid_struct,
+ Tid_union,
+ Tid_enum,
+
+ Tid_typedef,
+ Tid_template,
+ Tid_const,
+ Tid_volatile,
+ Tid_extern,
+
+ Tid_static,
+ Tid_register,
+ Tid_inline,
+ Tid_namespace,
+ Tid_using,
+
+ Tid_SwBracket_Right,
+ Tid_DoubleColon,
+ Tid_typename,
+ Tid_DefineName,
+ Tid_MacroName,
+
+ Tid_BuiltInType,
+ Tid_TypeSpecializer };
+
+ static F_Tok stateF_in_extern[] = { &PE_File::On_in_extern_Constant };
+ static INT16 stateT_in_extern[] = { Tid_Constant };
+
+ static F_Tok stateF_in_externC[] = { &PE_File::On_in_externC_SwBracket_Left };
+ static INT16 stateT_in_externC[] = { Tid_SwBracket_Left };
+
+
+ SEMPARSE_CREATE_STATUS(PE_File, std, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_File, in_extern, On_in_extern_Ignore);
+ SEMPARSE_CREATE_STATUS(PE_File, in_externC, On_in_externC_NoBlock);
+}
+
+void
+PE_File::InitData()
+{
+ pStati->SetCur(std);
+}
+
+void
+PE_File::TransferData()
+{
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_File::Hdl_SyntaxError( const char * i_sText)
+{
+ if ( *i_sText == ';' )
+ {
+ Cerr() << Env().CurFileName() << ", line "
+ << Env().LineCount()
+ << ": Sourcecode warning: ';' as a toplevel declaration is deprecated."
+ << Endl();
+ SetTokenResult(done,stay);
+ return;
+ }
+
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_File::SpReturn_VarFunc()
+{
+ if (bWithinSingleExternC)
+ {
+ access_Env().CloseBlock();
+ bWithinSingleExternC = false;
+ }
+}
+
+void
+PE_File::SpReturn_Template()
+{
+ access_Env().OpenTemplate( pSpuTemplate->Child().Result_Parameters() );
+}
+
+void
+PE_File::On_std_namespace(const char * )
+{
+ pSpuNamespace->Push(done);
+}
+
+void
+PE_File::On_std_ClassKey(const char * )
+{
+ pSpuVarFunc->Push(not_done); // This is correct,
+ // classes are parsed via PE_Type.
+}
+
+void
+PE_File::On_std_typedef(const char * )
+{
+ pSpuTypedef->Push(not_done);
+}
+
+void
+PE_File::On_std_enum(const char * )
+{
+ pSpuVarFunc->Push(not_done); // This is correct,
+ // enums are parsed via PE_Type.
+}
+
+void
+PE_File::On_std_VarFunc(const char * )
+{
+ pSpuVarFunc->Push(not_done);
+}
+
+void
+PE_File::On_std_template(const char * )
+{
+ pSpuTemplate->Push(done);
+}
+
+void
+PE_File::On_std_extern(const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(in_extern);
+}
+
+void
+PE_File::On_std_using(const char * )
+{
+ pSpuUsing->Push(done);
+}
+
+void
+PE_File::On_std_SwBracketRight(const char * )
+{
+ SetTokenResult(done,stay);
+ access_Env().CloseBlock();
+}
+
+void
+PE_File::On_std_DefineName(const char * )
+{
+ pSpuDefs->Push(not_done);
+}
+
+void
+PE_File::On_std_MacroName(const char * )
+{
+ pSpuDefs->Push(not_done);
+}
+
+void
+PE_File::On_in_extern_Constant(const char * )
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(in_externC);
+
+ access_Env().OpenExternC();
+}
+
+void
+PE_File::On_in_extern_Ignore(const char * )
+{
+ SetTokenResult(not_done, stay);
+ pStati->SetCur(std);
+}
+
+void
+PE_File::On_in_externC_SwBracket_Left(const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(std);
+}
+
+void
+PE_File::On_in_externC_NoBlock(const char * )
+{
+ SetTokenResult(not_done, stay);
+ pStati->SetCur(std);
+
+ bWithinSingleExternC = true;
+}
+
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_file.hxx b/autodoc/source/parser/cpp/pe_file.hxx
new file mode 100644
index 000000000000..7a36f2c6fe9c
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_file.hxx
@@ -0,0 +1,198 @@
+/* -*- 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 ADC_CPP_PE_FILE_HXX
+#define ADC_CPP_PE_FILE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+ // PARAMETERS
+
+
+namespace cpp {
+
+ class PeEnvironment;
+
+ class PE_Namespace;
+ class PE_Enum;
+ class PE_Typedef;
+ class PE_VarFunc;
+ class PE_TemplateTop;
+ class PE_Defines;
+ class PE_Ignore;
+
+class PE_File : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ std, /// before class, struct or union
+ in_extern,
+ in_externC,
+ size_of_states
+ };
+
+ PE_File(
+ PeEnvironment & io_rEnv );
+ ~PE_File();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+ virtual Cpp_PE * Handle_ChildFailure();
+
+ private:
+ typedef SubPe< PE_File, PE_Namespace> SP_Namespace;
+ typedef SubPe< PE_File, PE_Typedef> SP_Typedef;
+ typedef SubPe< PE_File, PE_VarFunc> SP_VarFunc;
+ typedef SubPe< PE_File, PE_TemplateTop> SP_Template;
+ typedef SubPe< PE_File, PE_Defines> SP_Defines;
+ typedef SubPe< PE_File, PE_Ignore > SP_Ignore;
+
+ typedef SubPeUse< PE_File, PE_Namespace> SPU_Namespace;
+ typedef SubPeUse< PE_File, PE_Typedef> SPU_Typedef;
+ typedef SubPeUse< PE_File, PE_VarFunc> SPU_VarFunc;
+ typedef SubPeUse< PE_File, PE_TemplateTop> SPU_Template;
+ typedef SubPeUse< PE_File, PE_Defines> SPU_Defines;
+ typedef SubPeUse< PE_File, PE_Ignore> SPU_Ignore;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void SpReturn_VarFunc();
+ void SpReturn_Template();
+
+ void On_std_namespace(const char * i_sText);
+ void On_std_ClassKey(const char * i_sText);
+ void On_std_typedef(const char * i_sText);
+ void On_std_enum(const char * i_sText);
+ void On_std_VarFunc(const char * i_sText);
+ void On_std_template(const char * i_sText);
+ void On_std_extern(const char * i_sText);
+ void On_std_using(const char * i_sText);
+ void On_std_SwBracketRight(const char * i_sText);
+
+ void On_std_DefineName(const char * i_sText);
+ void On_std_MacroName(const char * i_sText);
+
+ void On_in_extern_Constant(const char * i_sText);
+ void On_in_extern_Ignore(const char * i_sText);
+ void On_in_externC_SwBracket_Left(const char * i_sText);
+ void On_in_externC_NoBlock(const char * i_sText);
+
+ PeEnvironment & access_Env() { return *pEnv; }
+
+
+ // DATA
+ PeEnvironment * pEnv;
+
+ Dyn< PeStatusArray<PE_File> >
+ pStati;
+
+ Dyn<SP_Namespace> pSpNamespace;
+ Dyn<SP_Typedef> pSpTypedef;
+ Dyn<SP_VarFunc> pSpVarFunc;
+ Dyn<SP_Template> pSpTemplate;
+ Dyn<SP_Defines> pSpDefs;
+
+ Dyn<SP_Ignore> pSpIgnore;
+
+ Dyn<SPU_Namespace> pSpuNamespace;
+ Dyn<SPU_Typedef> pSpuTypedef;
+ Dyn<SPU_VarFunc> pSpuVarFunc;
+ Dyn<SPU_Template> pSpuTemplate;
+ Dyn<SPU_Defines> pSpuDefs;
+
+ Dyn<SPU_Ignore> pSpuUsing;
+ Dyn<SPU_Ignore> pSpuIgnoreFailure;
+
+ bool bWithinSingleExternC; /** After 'extern "C"' without following '{',
+ waiting for the next function or variable to
+ set back to false.
+ */
+};
+
+} // namespace cpp
+
+
+
+/* // Branches
+
+namespace
+ -> Named Namespace declaration
+ -> Unnamed Namespace declaration
+ -> Namespace alias definition
+
+class struct union
+ -> Class
+ -> Predeclaration
+
+typedef
+ -> Typedef
+
+enum
+ -> Enum
+
+extern
+ -> Extern-"C"
+ -> TypeDeclaration
+
+TypeDeclaration
+ -> FunctionDecl
+ -> FunctionDef
+ -> Variable
+
+template
+ -> TemplateClass
+ -> TemplateFunction
+ -> TemplateFunction/Method-Implementation
+ -> TemplatePredeclaration
+
+}
+ -> End of Namespace
+ -> End of Extern-"C"
+
+asm
+ -> AssemblerDeclaration
+
+using
+ -> Using-Declaration
+ -> Using-Directive
+
+*/
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_funct.cxx b/autodoc/source/parser/cpp/pe_funct.cxx
new file mode 100644
index 000000000000..081f369a0c9c
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_funct.cxx
@@ -0,0 +1,612 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_funct.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_funct.hxx>
+#include <ary/cpp/c_type.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/cpp/cp_type.hxx>
+#include <ary/cpp/inpcontx.hxx>
+#include "pe_type.hxx"
+#include "pe_param.hxx"
+
+
+
+
+namespace cpp
+{
+
+
+inline void
+PE_Function::PerformFinishingPunctuation()
+{
+ SetTokenResult(not_done,pop_success);
+}
+
+
+PE_Function::PE_Function( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Function> ),
+ // pSpParameter,
+ // pSpuParameter,
+ // pSpType,
+ // pSpuException,
+ // pSpuCastOperatorType,
+ nResult(0),
+ bResult_WithImplementation(false),
+ aName(60),
+ eVirtuality(ary::cpp::VIRTUAL_none),
+ eConVol(ary::cpp::CONVOL_none),
+ // aFlags,
+ nReturnType(0),
+ // aParameters
+ // aExceptions,
+ bThrow(false),
+ nBracketCounterInImplementation(0)
+{
+ Setup_StatusFunctions();
+
+ pSpParameter = new SP_Parameter(*this);
+ pSpType = new SP_Type(*this);
+
+ pSpuParameter = new SPU_Parameter(*pSpParameter, 0, &PE_Function::SpReturn_Parameter);
+ pSpuException = new SPU_Type(*pSpType, 0, &PE_Function::SpReturn_Exception);
+ pSpuCastOperatorType = new SPU_Type(*pSpType, &PE_Function::SpInit_CastOperatorType, &PE_Function::SpReturn_CastOperatorType);
+}
+
+PE_Function::~PE_Function()
+{
+
+}
+
+void
+PE_Function::Init_Std( const String & i_sName,
+ ary::cpp::Type_id i_nReturnType,
+ bool i_bVirtual,
+ ary::cpp::FunctionFlags i_aFlags )
+{
+ aName << i_sName;
+ eVirtuality = i_bVirtual ? ary::cpp::VIRTUAL_virtual : ary::cpp::VIRTUAL_none;
+ aFlags = i_aFlags;
+ nReturnType = i_nReturnType;
+ pStati->SetCur(afterName);
+}
+
+void
+PE_Function::Init_Ctor( const String & i_sName,
+ ary::cpp::FunctionFlags i_aFlags )
+{
+ aName << i_sName;
+ eVirtuality = ary::cpp::VIRTUAL_none;
+ aFlags = i_aFlags;
+ nReturnType = 0;
+ pStati->SetCur(afterName);
+}
+
+void
+PE_Function::Init_Dtor( const String & i_sName,
+ bool i_bVirtual,
+ ary::cpp::FunctionFlags i_aFlags )
+{
+ aName << "~" << i_sName;
+ eVirtuality = i_bVirtual ? ary::cpp::VIRTUAL_virtual : ary::cpp::VIRTUAL_none;
+ aFlags = i_aFlags;
+ nReturnType = 0;
+ pStati->SetCur(afterName);
+}
+
+void
+PE_Function::Init_CastOperator( bool i_bVirtual,
+ ary::cpp::FunctionFlags i_aFlags )
+{
+ aName << "operator ";
+ eVirtuality = i_bVirtual ? ary::cpp::VIRTUAL_virtual : ary::cpp::VIRTUAL_none;
+ aFlags = i_aFlags;
+ nReturnType = 0;
+ pStati->SetCur(afterCastOperator);
+}
+
+void
+PE_Function::Init_NormalOperator( ary::cpp::Type_id i_nReturnType,
+ bool i_bVirtual,
+ ary::cpp::FunctionFlags i_aFlags )
+{
+ aName << "operator";
+ eVirtuality = i_bVirtual ? ary::cpp::VIRTUAL_virtual : ary::cpp::VIRTUAL_none;
+ aFlags = i_aFlags;
+ nReturnType = i_nReturnType;
+ pStati->SetCur(afterStdOperator);
+}
+
+ary::cpp::Ce_id
+PE_Function::Result_Id() const
+{
+ return nResult;
+}
+
+void
+PE_Function::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Function::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Function>::F_Tok F_Tok;
+
+ static F_Tok stateF_afterStdOperator[] =
+ { &PE_Function::On_afterOperator_Std_Operator,
+ &PE_Function::On_afterOperator_Std_LeftBracket,
+ &PE_Function::On_afterOperator_Std_LeftBracket,
+ &PE_Function::On_afterOperator_Std_Operator,
+ &PE_Function::On_afterOperator_Std_Operator,
+ &PE_Function::On_afterOperator_Std_Operator,
+ &PE_Function::On_afterOperator_Std_Operator,
+ &PE_Function::On_afterOperator_Std_Operator,
+ &PE_Function::On_afterOperator_Std_Operator };
+ static INT16 stateT_afterStdOperator[] =
+ { Tid_Operator,
+ Tid_ArrayBracket_Left,
+ Tid_Bracket_Left,
+ Tid_Comma,
+ Tid_Assign,
+ Tid_Less,
+ Tid_Greater,
+ Tid_Asterix,
+ Tid_AmpersAnd };
+
+ static F_Tok stateF_afterStdOperatorLeftBracket[] =
+ { &PE_Function::On_afterStdOperatorLeftBracket_RightBracket,
+ &PE_Function::On_afterStdOperatorLeftBracket_RightBracket };
+ static INT16 stateT_afterStdOperatorLeftBracket[] =
+ { Tid_ArrayBracket_Right,
+ Tid_Bracket_Right };
+
+ static F_Tok stateF_afterCastOperator[] =
+ { &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type,
+ &PE_Function::On_afterOperator_Cast_Type };
+ static INT16 stateT_afterCastOperator[] =
+ { Tid_Identifier,
+ Tid_class,
+ Tid_struct,
+ Tid_union,
+ Tid_enum,
+ Tid_const,
+ Tid_volatile,
+ Tid_DoubleColon,
+ Tid_typename,
+ Tid_BuiltInType,
+ Tid_TypeSpecializer };
+
+ static F_Tok stateF_afterName[] = { &PE_Function::On_afterName_Bracket_Left };
+ static INT16 stateT_afterName[] = { Tid_Bracket_Left };
+
+ static F_Tok stateF_expectParameterSeparator[] =
+ { &PE_Function::On_expectParameterSeparator_BracketRight,
+ &PE_Function::On_expectParameterSeparator_Comma };
+ static INT16 stateT_expectParameterSeparator[] =
+ { Tid_Bracket_Right,
+ Tid_Comma };
+
+ static F_Tok stateF_afterParameters[] = { &PE_Function::On_afterParameters_const,
+ &PE_Function::On_afterParameters_volatile,
+ &PE_Function::On_afterParameters_throw,
+ &PE_Function::On_afterParameters_SwBracket_Left,
+ &PE_Function::On_afterParameters_Semicolon,
+ &PE_Function::On_afterParameters_Comma,
+ &PE_Function::On_afterParameters_Colon,
+ &PE_Function::On_afterParameters_Assign };
+ static INT16 stateT_afterParameters[] = { Tid_const,
+ Tid_volatile,
+ Tid_throw,
+ Tid_SwBracket_Left,
+ Tid_Semicolon,
+ Tid_Comma,
+ Tid_Colon,
+ Tid_Assign };
+
+ static F_Tok stateF_afterThrow[] = { &PE_Function::On_afterThrow_Bracket_Left };
+ static INT16 stateT_afterThrow[] = { Tid_Bracket_Left };
+
+ static F_Tok stateF_expectExceptionSeparator[] =
+ { &PE_Function::On_expectExceptionSeparator_BracketRight,
+ &PE_Function::On_expectExceptionSeparator_Comma };
+ static INT16 stateT_expectExceptionSeparator[] =
+ { Tid_Bracket_Right,
+ Tid_Comma };
+
+ static F_Tok stateF_afterExceptions[] = { &PE_Function::On_afterExceptions_SwBracket_Left,
+ &PE_Function::On_afterExceptions_Semicolon,
+ &PE_Function::On_afterExceptions_Comma,
+ &PE_Function::On_afterExceptions_Colon,
+ &PE_Function::On_afterExceptions_Assign };
+ static INT16 stateT_afterExceptions[] = { Tid_SwBracket_Left,
+ Tid_Semicolon,
+ Tid_Comma,
+ Tid_Colon,
+ Tid_Assign };
+
+ static F_Tok stateF_expectZero[] = { &PE_Function::On_expectZero_Constant };
+ static INT16 stateT_expectZero[] = { Tid_Constant };
+
+ static F_Tok stateF_inImplementation[] =
+ { &PE_Function::On_inImplementation_SwBracket_Left,
+ &PE_Function::On_inImplementation_SwBracket_Right };
+ static INT16 stateT_inImplementation[] =
+ { Tid_SwBracket_Left,
+ Tid_SwBracket_Right };
+
+ SEMPARSE_CREATE_STATUS(PE_Function, afterStdOperator, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, afterStdOperatorLeftBracket, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, afterCastOperator, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, afterName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, expectParameterSeparator, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, afterParameters, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, afterThrow, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, expectExceptionSeparator, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, afterExceptions, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, expectZero, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Function, inImplementation, On_inImplementation_Default );
+}
+
+void
+PE_Function::InitData()
+{
+ pStati->SetCur( afterName ),
+ nResult = 0;
+ bResult_WithImplementation = false;
+ aName.seekp(0);
+ eVirtuality = ary::cpp::VIRTUAL_none;
+ eConVol = ary::cpp::CONVOL_none;
+ aFlags.Reset();
+ nReturnType = 0;
+ csv::erase_container(aParameters);
+ csv::erase_container(aExceptions);
+ bThrow = false;
+}
+
+void
+PE_Function::TransferData()
+{
+ String sName( aName.c_str() );
+ ary::cpp::Function *
+ pFunction = Env().AryGate().Ces().Store_Operation(
+ Env().Context(),
+ sName,
+ nReturnType,
+ aParameters,
+ eVirtuality,
+ eConVol,
+ aFlags,
+ bThrow,
+ aExceptions );
+ if (pFunction != 0)
+ {
+ // KORR_FUTURE: How to handle differing documentation?
+
+ Dyn< StringVector >
+ pTplParams ( Env().Get_CurTemplateParameters() );
+ if ( pTplParams )
+ {
+ for ( StringVector::const_iterator it = pTplParams->begin();
+ it != pTplParams->end();
+ ++it )
+ {
+ pFunction->Add_TemplateParameterType( *it, ary::cpp::Type_id(0) );
+ } // end for
+ }
+
+ Env().Event_Store_Function(*pFunction);
+ }
+
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_Function::Hdl_SyntaxError(const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Function::SpInit_CastOperatorType()
+{
+ pSpuCastOperatorType->Child().Init_AsCastOperatorType();
+}
+
+void
+PE_Function::SpReturn_Parameter()
+{
+ pStati->SetCur(expectParameterSeparator);
+
+ ary::cpp::Type_id nParamType = pSpuParameter->Child().Result_FrontType();
+ if ( nParamType.IsValid() ) // Check, if there was a parameter, or only the closing ')'.
+ {
+ aParameters.push_back( pSpuParameter->Child().Result_ParamInfo() );
+ }
+}
+
+void
+PE_Function::SpReturn_Exception()
+{
+ pStati->SetCur(expectExceptionSeparator);
+
+ ary::cpp::Type_id
+ nException = pSpuException->Child().Result_Type().TypeId();
+ if ( nException.IsValid() AND pSpuException->Child().Result_KindOf() == PE_Type::is_type )
+ {
+ aExceptions.push_back( nException );
+ }
+}
+
+void
+PE_Function::SpReturn_CastOperatorType()
+{
+ pStati->SetCur(afterName);
+
+ Env().AryGate().Types().Get_TypeText(
+ aName, pSpuCastOperatorType->Child().Result_Type().TypeId() );
+}
+
+void
+PE_Function::On_afterOperator_Std_Operator(const char * i_sText)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(afterName);
+
+ if ( 'a' <= *i_sText AND *i_sText <= 'z' )
+ aName << ' ';
+ aName << i_sText;
+}
+
+void
+PE_Function::On_afterOperator_Std_LeftBracket(const char * i_sText)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(afterStdOperatorLeftBracket);
+
+ aName << i_sText;
+}
+
+void
+PE_Function::On_afterStdOperatorLeftBracket_RightBracket(const char * i_sText)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(afterName);
+
+ aName << i_sText;
+}
+
+void
+PE_Function::On_afterOperator_Cast_Type(const char *)
+{
+ pSpuCastOperatorType->Push(not_done);
+}
+
+void
+PE_Function::On_afterName_Bracket_Left(const char *)
+{
+ pSpuParameter->Push(done);
+}
+
+void
+PE_Function::On_expectParameterSeparator_BracketRight(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(afterParameters);
+}
+
+void
+PE_Function::On_expectParameterSeparator_Comma(const char *)
+{
+ pSpuParameter->Push(done);
+}
+
+void
+PE_Function::On_afterParameters_const(const char *)
+{
+ SetTokenResult(done,stay);
+ eConVol = static_cast<E_ConVol>(
+ static_cast<int>(eConVol) | static_cast<int>(ary::cpp::CONVOL_const) );
+}
+
+void
+PE_Function::On_afterParameters_volatile(const char *)
+{
+ SetTokenResult(done,stay);
+ eConVol = static_cast<E_ConVol>(
+ static_cast<int>(eConVol) | static_cast<int>(ary::cpp::CONVOL_volatile) );
+}
+
+void
+PE_Function::On_afterParameters_throw(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(afterThrow);
+ bThrow = true;
+}
+
+void
+PE_Function::On_afterParameters_SwBracket_Left(const char *)
+{
+ EnterImplementation(1);
+}
+
+void
+PE_Function::On_afterParameters_Semicolon(const char *)
+{
+ PerformFinishingPunctuation();
+}
+
+void
+PE_Function::On_afterParameters_Comma(const char *)
+{
+ PerformFinishingPunctuation();
+}
+
+void
+PE_Function::On_afterParameters_Colon(const char *)
+{
+ EnterImplementation(0);
+}
+
+void
+PE_Function::On_afterParameters_Assign(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(expectZero);
+}
+
+void
+PE_Function::On_afterThrow_Bracket_Left(const char *)
+{
+ pSpuException->Push(done);
+}
+
+void
+PE_Function::On_expectExceptionSeparator_BracketRight(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(afterExceptions);
+}
+
+void
+PE_Function::On_expectExceptionSeparator_Comma(const char *)
+{
+ pSpuException->Push(done);
+}
+
+void
+PE_Function::On_afterExceptions_SwBracket_Left(const char *)
+{
+ EnterImplementation(1);
+}
+
+void
+PE_Function::On_afterExceptions_Semicolon(const char *)
+{
+ PerformFinishingPunctuation();
+}
+
+void
+PE_Function::On_afterExceptions_Comma(const char *)
+{
+ PerformFinishingPunctuation();
+}
+
+void
+PE_Function::On_afterExceptions_Colon(const char *)
+{
+ EnterImplementation(0);
+}
+
+void
+PE_Function::On_afterExceptions_Assign(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(expectZero);
+}
+
+void
+PE_Function::On_expectZero_Constant(const char * i_sText)
+{
+ if ( strcmp(i_sText,"0") != 0 )
+ Hdl_SyntaxError(i_sText);
+
+ SetTokenResult(done,stay);
+ pStati->SetCur(afterExceptions);
+
+ eVirtuality = ary::cpp::VIRTUAL_abstract;
+}
+
+void
+PE_Function::On_inImplementation_SwBracket_Left(const char *)
+{
+ SetTokenResult(done,stay);
+ nBracketCounterInImplementation++;
+}
+
+void
+PE_Function::On_inImplementation_SwBracket_Right(const char *)
+{
+ nBracketCounterInImplementation--;
+ if (nBracketCounterInImplementation == 0)
+ {
+ SetTokenResult(done,pop_success);
+ }
+ else
+ {
+ SetTokenResult(done,stay);
+ }
+}
+
+void
+PE_Function::On_inImplementation_Default(const char *)
+{
+ SetTokenResult(done,stay);
+}
+
+void
+PE_Function::EnterImplementation( intt i_nBracketCountStart )
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(inImplementation);
+
+ bResult_WithImplementation = true;
+ nBracketCounterInImplementation = i_nBracketCountStart;
+ if ( Env().Context().CurClass() != 0 )
+ {
+ aFlags.SetInline();
+ }
+}
+
+
+
+} // namespace cpp
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_funct.hxx b/autodoc/source/parser/cpp/pe_funct.hxx
new file mode 100644
index 000000000000..20d8b5e35d5c
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_funct.hxx
@@ -0,0 +1,284 @@
+/* -*- 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 ADC_CPP_PE_FUNCT_HXX
+#define ADC_CPP_PE_FUNCT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_vfflag.hxx>
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace cpp
+{
+class Function;
+struct S_VariableInfo;
+}
+}
+
+namespace cpp
+{
+
+class PE_Type;
+class PE_Parameter;
+
+class PE_Function : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ afterStdOperator, // if initializes as operator
+ afterStdOperatorLeftBracket,
+ // if initializes as operator with ( or [
+ afterCastOperator, // if initializes as operator
+ afterName, // undecided
+ expectParameterSeparator, //
+ afterParameters, // before const, volatile throw or = 0.
+ afterThrow, // expect (
+ expectExceptionSeparator, //
+ afterExceptions, // = 0 oder ; oder ,
+ expectZero, // after '='
+ inImplementation, // after {
+ size_of_states
+ };
+ typedef ary::cpp::E_Protection E_Protection;
+ typedef ary::cpp::E_Virtuality E_Virtuality;
+ typedef ary::cpp::E_ConVol E_ConVol;
+
+ PE_Function(
+ Cpp_PE * i_pParent );
+ ~PE_Function();
+
+ void Init_Std(
+ const String & i_sName,
+ ary::cpp::Type_id i_nReturnType,
+ bool i_bVirtual,
+ ary::cpp::FunctionFlags
+ i_aFlags );
+ void Init_Ctor(
+ const String & i_sName,
+ ary::cpp::FunctionFlags
+ i_aFlags );
+ void Init_Dtor(
+ const String & i_sName,
+ bool i_bVirtual,
+ ary::cpp::FunctionFlags
+ i_aFlags );
+ void Init_CastOperator(
+ bool i_bVirtual,
+ ary::cpp::FunctionFlags
+ i_aFlags );
+ void Init_NormalOperator(
+ ary::cpp::Type_id i_nReturnType,
+ bool i_bVirtual,
+ ary::cpp::FunctionFlags
+ i_aFlags );
+
+ ary::cpp::Ce_id Result_Id() const;
+ bool Result_WithImplementation() const;
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+ private:
+ typedef SubPe< PE_Function, PE_Type > SP_Type;
+ typedef SubPeUse< PE_Function, PE_Type > SPU_Type;
+ typedef SubPe< PE_Function, PE_Parameter> SP_Parameter;
+ typedef SubPeUse<PE_Function, PE_Parameter> SPU_Parameter;
+
+ typedef std::vector<ary::cpp::S_Parameter> ParameterList;
+ typedef std::vector<ary::cpp::Type_id> ExceptionTypeList;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError(const char * i_sText);
+
+ void SpInit_CastOperatorType();
+
+ void SpReturn_Parameter();
+ void SpReturn_Exception();
+ void SpReturn_CastOperatorType();
+
+ void On_afterOperator_Std_Operator(const char * i_sText); // Operator+() etc.
+ void On_afterOperator_Std_LeftBracket(const char * i_sText); // operator [] or ()
+ void On_afterStdOperatorLeftBracket_RightBracket(const char * i_sText);
+ void On_afterOperator_Cast_Type(const char * i_sText); // Type
+
+ void On_afterName_Bracket_Left(const char * i_sText);
+
+ void On_expectParameterSeparator_BracketRight(const char * i_sText);
+ void On_expectParameterSeparator_Comma(const char * i_sText);
+
+ void On_afterParameters_const(const char * i_sText);
+ void On_afterParameters_volatile(const char * i_sText);
+ void On_afterParameters_throw(const char * i_sText);
+ void On_afterParameters_SwBracket_Left(const char * i_sText);
+ void On_afterParameters_Semicolon(const char * i_sText);
+ void On_afterParameters_Comma(const char * i_sText);
+ void On_afterParameters_Colon(const char * i_sText);
+ void On_afterParameters_Assign(const char * i_sText);
+
+ void On_afterThrow_Bracket_Left(const char * i_sText);
+
+ void On_expectExceptionSeparator_BracketRight(const char * i_sText);
+ void On_expectExceptionSeparator_Comma(const char * i_sText);
+
+ void On_afterExceptions_SwBracket_Left(const char * i_sText);
+ void On_afterExceptions_Semicolon(const char * i_sText);
+ void On_afterExceptions_Comma(const char * i_sText);
+ void On_afterExceptions_Colon(const char * i_sText);
+ void On_afterExceptions_Assign(const char * i_sText);
+
+ void On_expectZero_Constant(const char * i_sText);
+
+ void On_inImplementation_SwBracket_Left(const char * i_sText);
+ void On_inImplementation_SwBracket_Right(const char * i_sText);
+ void On_inImplementation_Default(const char * i_sText);
+
+ void PerformFinishingPunctuation();
+ void EnterImplementation(
+ intt i_nBracketCountStart ); /// 1 normally, 0 in initialisation section of c'tors.
+
+ // DATA
+ Dyn< PeStatusArray<PE_Function> >
+ pStati;
+
+ Dyn< SP_Parameter > pSpParameter;
+ Dyn< SPU_Parameter> pSpuParameter;
+ Dyn< SP_Type > pSpType;
+ Dyn< SPU_Type > pSpuException;
+ Dyn< SPU_Type > pSpuCastOperatorType; // in "operator int()" or "operator ThatClass *()"
+
+ ary::cpp::Ce_id nResult;
+ bool bResult_WithImplementation; // Necessary for the parent ParseEnvironment
+ // to know, there is no semicolon or comma following.
+ // Pre results
+ StreamStr aName;
+ E_Virtuality eVirtuality;
+ E_ConVol eConVol;
+ ary::cpp::FunctionFlags
+ aFlags;
+ ary::cpp::Type_id nReturnType;
+ ParameterList aParameters;
+ ExceptionTypeList aExceptions;
+ bool bThrow; // Indicates, if there is a throw - important, if there are 0 exceptions listed.
+ intt nBracketCounterInImplementation;
+};
+
+
+
+
+// IMPLEMENTATION
+inline bool
+PE_Function::Result_WithImplementation() const
+ { return bResult_WithImplementation; }
+
+
+
+
+} // namespace cpp
+#endif
+
+
+
+
+
+/* // Overview of Stati
+
+Undecided
+---------
+
+start // vor und während storage class specifiern
+
+->Typ
+
+expectName // Typ ist da
+
+afterName
+
+
+
+
+Variable
+--------
+
+start // vor und während storage class specifiern
+
+->Typ
+
+expectName // Typ ist da -> im Falle von '(': notyetimplemented
+afterName
+
+expectSize // after [
+expectFinish
+ // vor ; oder ,
+expectNextVarName // anders als bei expectName kann hier auch * oder & kommen
+
+
+
+
+
+Function
+--------
+
+start // vor und während storage class specifiern
+
+->Typ
+
+expectName // Typ ist da
+expectBracket // Nach Name
+expectParameter // nach ( oder ,
+-> Parameter
+after Parameters // before const, volatile throw or = 0.
+after throw // expect (
+expectException // after (
+after exceptions // = 0 oder ; oder ,
+
+
+expectNextVarName // anders als bei expectName kann hier auch * oder & kommen
+
+
+
+
+
+
+
+*/
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_ignor.cxx b/autodoc/source/parser/cpp/pe_ignor.cxx
new file mode 100644
index 000000000000..67db5593c736
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_ignor.cxx
@@ -0,0 +1,118 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_ignor.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+
+
+namespace cpp {
+
+
+
+PE_Ignore::PE_Ignore( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ nBracketCounter(0),
+ bBlockOpened(false)
+{
+ Setup_StatusFunctions();
+}
+
+
+PE_Ignore::~PE_Ignore()
+{
+}
+
+void
+PE_Ignore::Call_Handler( const cpp::Token & i_rTok )
+{
+ if ( NOT bBlockOpened )
+ {
+ switch (i_rTok.TypeId())
+ {
+ case Tid_SwBracket_Left: SetTokenResult(done, stay);
+ nBracketCounter++;
+ bBlockOpened = true;
+ break;
+ case Tid_Semicolon: SetTokenResult(done, pop_success);
+ break;
+ default:
+ SetTokenResult(done, stay);
+ } // end switch
+ }
+ else if ( nBracketCounter > 0 )
+ {
+ SetTokenResult(done, stay);
+
+ switch (i_rTok.TypeId())
+ {
+ case Tid_SwBracket_Left: nBracketCounter++;
+ break;
+ case Tid_SwBracket_Right: nBracketCounter--;
+ break;
+ } // end switch
+ }
+ else if ( i_rTok.TypeId() == Tid_Semicolon )
+ {
+ SetTokenResult(done, pop_success);
+ }
+ else
+ {
+ SetTokenResult(not_done, pop_success);
+ }
+}
+
+void
+PE_Ignore::Setup_StatusFunctions()
+{
+ // Does nothing.
+}
+
+void
+PE_Ignore::InitData()
+{
+ nBracketCounter = 0;
+ bBlockOpened = false;
+}
+
+void
+PE_Ignore::TransferData()
+{
+ // Does nothing.
+}
+
+
+} // namespace cpp
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_ignor.hxx b/autodoc/source/parser/cpp/pe_ignor.hxx
new file mode 100644
index 000000000000..7efb2757479b
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_ignor.hxx
@@ -0,0 +1,77 @@
+/* -*- 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 ADC_CPP_PE_IGNOR_HXX
+#define ADC_CPP_PE_IGNOR_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cpp_pe.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace cpp {
+
+
+class PE_Ignore : public Cpp_PE
+{
+ public:
+ PE_Ignore(
+ Cpp_PE * i_pParent );
+ ~PE_Ignore();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+ private:
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+
+ // DATA
+ uintt nBracketCounter;
+ bool bBlockOpened;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace cpp
+
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_namsp.cxx b/autodoc/source/parser/cpp/pe_namsp.cxx
new file mode 100644
index 000000000000..bf9ca483abbe
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_namsp.cxx
@@ -0,0 +1,165 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <pe_namsp.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <all_toks.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <semantic/callf.hxx>
+#include "x_parse.hxx"
+
+
+
+
+namespace cpp
+{
+
+PE_Namespace::PE_Namespace( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Namespace> ),
+ // sLocalname
+ bPush(false)
+{
+ Setup_StatusFunctions();
+}
+
+PE_Namespace::~PE_Namespace()
+{
+}
+
+void
+PE_Namespace::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Namespace>::F_Tok F_Tok;
+ static F_Tok stateF_start[] = { &PE_Namespace::On_start_Identifier,
+ &PE_Namespace::On_start_SwBracket_Left };
+ static INT16 stateT_start[] = { Tid_Identifier,
+ Tid_SwBracket_Left };
+ static F_Tok stateF_gotName[] = { &PE_Namespace::On_gotName_SwBracket_Left,
+ &PE_Namespace::On_gotName_Assign };
+ static INT16 stateT_gotName[] = { Tid_SwBracket_Left,
+ Tid_Assign };
+ static F_Tok stateF_expectSemicolon[] = { &PE_Namespace::On_expectSemicolon_Semicolon };
+ static INT16 stateT_expectSemicolon[] = { Tid_Semicolon };
+
+ SEMPARSE_CREATE_STATUS(PE_Namespace, start, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Namespace, gotName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Namespace, expectSemicolon, Hdl_SyntaxError);
+}
+
+void
+PE_Namespace::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Namespace::InitData()
+{
+ pStati->SetCur(start);
+ sLocalName = "";
+ bPush = false;
+}
+
+void
+PE_Namespace::TransferData()
+{
+ if (bPush)
+ {
+ ary::cpp::Namespace &
+ rNew = Env().AryGate().Ces().CheckIn_Namespace(
+ Env().Context(),
+ sLocalName );
+ Env().OpenNamespace(rNew);
+ }
+}
+
+void
+PE_Namespace::Hdl_SyntaxError( const char * i_sText)
+{
+ throw X_Parser( X_Parser::x_UnexpectedToken,
+ i_sText != 0 ? i_sText : "",
+ Env().CurFileName(),
+ Env().LineCount() );
+}
+
+void
+PE_Namespace::On_start_Identifier(const char * i_sText)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(gotName);
+
+ sLocalName = i_sText;
+}
+
+void
+PE_Namespace::On_start_SwBracket_Left(const char * )
+{
+ SetTokenResult(done, pop_success);
+ pStati->SetCur(size_of_states);
+
+ sLocalName = ""; // Anonymous namespace, a name is created in
+ // Gate().CheckIn_Namespace() .
+
+ bPush = true;
+}
+
+void
+PE_Namespace::On_gotName_SwBracket_Left(const char * )
+{
+ SetTokenResult(done, pop_success);
+ pStati->SetCur(size_of_states);
+
+ bPush = true;
+}
+
+void
+PE_Namespace::On_gotName_Assign(const char * )
+{
+ // KORR_FUTURE
+ Hdl_SyntaxError(0);
+}
+
+void
+PE_Namespace::On_expectSemicolon_Semicolon(const char * )
+{
+ SetTokenResult(done,pop_success);
+ pStati->SetCur(size_of_states);
+}
+
+} // namespace cpp
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_namsp.hxx b/autodoc/source/parser/cpp/pe_namsp.hxx
new file mode 100644
index 000000000000..d07ab61ad3b7
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_namsp.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ADC_CPP_PE_NAMSP_HXX
+#define ADC_CPP_PE_NAMSP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_pe.hxx>
+ // PARAMETERS
+
+namespace ary
+{
+namespace cpp
+{
+class Namespace;
+}
+}
+
+
+namespace cpp
+{
+
+
+class PE_Namespace : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start,
+ gotName,
+ expectSemicolon, /// after namespace assignment
+ size_of_states
+ };
+ PE_Namespace(
+ Cpp_PE * i_pParent );
+ ~PE_Namespace();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ ary::cpp::Namespace *
+ Result_OpenedNamespace() const;
+ private:
+ void Setup_StatusFunctions();
+
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void On_start_Identifier(const char * i_sText);
+ void On_start_SwBracket_Left(const char * i_sText);
+ void On_gotName_SwBracket_Left(const char * i_sText);
+ void On_gotName_Assign(const char * i_sText);
+ void On_expectSemicolon_Semicolon(const char * i_sText);
+
+ // DATA
+ Dyn< PeStatusArray<PE_Namespace> >
+ pStati;
+
+ String sLocalName;
+ bool bPush;
+};
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_param.cxx b/autodoc/source/parser/cpp/pe_param.cxx
new file mode 100644
index 000000000000..19ce4607d060
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_param.cxx
@@ -0,0 +1,282 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_param.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/cp_type.hxx>
+#include "pe_type.hxx"
+#include "pe_vari.hxx"
+
+
+namespace cpp {
+
+
+
+//*********************** PE_Parameter ***********************//
+
+
+PE_Parameter::PE_Parameter( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Parameter> )
+ // pSpType,
+ // pSpuType,
+ // pSpVariable,
+ // pSpuVariable,
+ // aResultParamInfo
+{
+ Setup_StatusFunctions();
+
+ pSpType = new SP_Type(*this);
+ pSpuType = new SPU_Type(*pSpType, &PE_Parameter::SpInit_Type, &PE_Parameter::SpReturn_Type);
+ pSpVariable = new SP_Variable(*this);
+ pSpuVariable = new SPU_Variable(*pSpVariable, &PE_Parameter::SpInit_Variable, &PE_Parameter::SpReturn_Variable);
+}
+
+PE_Parameter::~PE_Parameter()
+{
+}
+
+void
+PE_Parameter::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Parameter::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Parameter>::F_Tok F_Tok;
+ static F_Tok stateF_start[] = { &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Type,
+
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Bracket_Right,
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Ellipse,
+
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Type,
+ &PE_Parameter::On_start_Type };
+ static INT16 stateT_start[] = { Tid_Identifier,
+ Tid_class,
+ Tid_struct,
+ Tid_union,
+ Tid_enum,
+
+ Tid_const,
+ Tid_volatile,
+ Tid_Bracket_Right,
+ Tid_DoubleColon,
+ Tid_Ellipse,
+
+ Tid_typename,
+ Tid_BuiltInType,
+ Tid_TypeSpecializer };
+
+ static F_Tok stateF_expectName[] = { &PE_Parameter::On_expectName_Identifier,
+ &PE_Parameter::On_expectName_ArrayBracket_Left,
+ &PE_Parameter::On_expectName_Bracket_Right,
+ &PE_Parameter::On_expectName_Comma,
+ &PE_Parameter::On_afterName_Assign };
+ static INT16 stateT_expectName[] = { Tid_Identifier,
+ Tid_ArrayBracket_Left,
+ Tid_Bracket_Right,
+ Tid_Comma,
+ Tid_Assign };
+ static F_Tok stateF_afterName[] = { &PE_Parameter::On_afterName_ArrayBracket_Left,
+ &PE_Parameter::On_afterName_Bracket_Right,
+ &PE_Parameter::On_afterName_Comma,
+ &PE_Parameter::On_afterName_Assign };
+ static INT16 stateT_afterName[] = { Tid_ArrayBracket_Left,
+ Tid_Bracket_Right,
+ Tid_Comma,
+ Tid_Assign };
+ static F_Tok stateF_finished[] = { &PE_Parameter::On_finished_Comma,
+ &PE_Parameter::On_finished_Bracket_Right };
+ static INT16 stateT_finished[] = { Tid_Bracket_Right,
+ Tid_Comma };
+
+ SEMPARSE_CREATE_STATUS(PE_Parameter, start, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Parameter, expectName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Parameter, afterName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Parameter, finished, Hdl_SyntaxError);
+}
+
+
+void
+PE_Parameter::InitData()
+{
+ pStati->SetCur(start);
+ aResultParamInfo.Empty();
+}
+
+void
+PE_Parameter::TransferData()
+{
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_Parameter::Hdl_SyntaxError( const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Parameter::SpInit_Type()
+{
+ // Does nothing.
+}
+
+void
+PE_Parameter::SpInit_Variable()
+{
+ // Does nothing.
+}
+
+void
+PE_Parameter::SpReturn_Type()
+{
+ aResultParamInfo.nType = pSpuType->Child().Result_Type().Id();
+ pStati->SetCur(expectName);
+}
+
+void
+PE_Parameter::SpReturn_Variable()
+{
+ if (pSpuVariable->Child().Result_Pattern() > 0)
+ {
+ aResultParamInfo.sSizeExpression = pSpuVariable->Child().Result_SizeExpression();
+ aResultParamInfo.sInitExpression = pSpuVariable->Child().Result_InitExpression();
+ }
+}
+
+void
+PE_Parameter::On_start_Type(const char *)
+{
+ pSpuType->Push(not_done);
+}
+
+void
+PE_Parameter::On_start_Bracket_Right(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Parameter::On_start_Ellipse(const char *)
+{
+ SetTokenResult(done, pop_success);
+
+ aResultParamInfo.nType = Env().AryGate().Types().Tid_Ellipse();
+}
+
+void
+PE_Parameter::On_expectName_Identifier(const char * i_sText)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterName);
+
+ aResultParamInfo.sName = i_sText;
+}
+
+void
+PE_Parameter::On_expectName_ArrayBracket_Left(const char * i_sText)
+{
+ On_afterName_ArrayBracket_Left(i_sText);
+}
+
+void
+PE_Parameter::On_expectName_Bracket_Right(const char * i_sText)
+{
+ On_afterName_Bracket_Right(i_sText);
+}
+
+void
+PE_Parameter::On_expectName_Comma(const char * i_sText)
+{
+ On_afterName_Comma(i_sText);
+}
+
+void
+PE_Parameter::On_afterName_ArrayBracket_Left(const char *)
+{
+ pSpuVariable->Push(not_done);
+}
+
+void
+PE_Parameter::On_afterName_Bracket_Right(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Parameter::On_afterName_Comma(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Parameter::On_afterName_Assign(const char *)
+{
+ pSpuVariable->Push(not_done);
+}
+
+void
+PE_Parameter::On_finished_Bracket_Right(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Parameter::On_finished_Comma(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+
+} // namespace cpp
+
+
+
+
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_param.hxx b/autodoc/source/parser/cpp/pe_param.hxx
new file mode 100644
index 000000000000..44688796236f
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_param.hxx
@@ -0,0 +1,141 @@
+/* -*- 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 ADC_CPP_PE_PARAM_HXX
+#define ADC_CPP_PE_PARAM_HXX
+
+// BASE CLASSES
+#include "cpp_pe.hxx"
+// USED SERVICES
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+#include <ary/cpp/c_vfflag.hxx>
+
+
+
+
+namespace cpp
+{
+ class PE_Type;
+ class PE_Variable;
+
+
+
+
+class PE_Parameter : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start,
+ expectName,
+ afterName,
+ finished,
+ size_of_states
+ };
+ typedef ary::cpp::S_Parameter S_ParamInfo;
+
+ explicit PE_Parameter(
+ Cpp_PE * i_pParent );
+ ~PE_Parameter();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ ary::cpp::Type_id Result_FrontType() const;
+ const S_ParamInfo & Result_ParamInfo() const;
+
+ private:
+ typedef SubPe< PE_Parameter, PE_Type > SP_Type;
+ typedef SubPeUse< PE_Parameter, PE_Type > SPU_Type;
+ typedef SubPe< PE_Parameter, PE_Variable > SP_Variable;
+ typedef SubPeUse< PE_Parameter, PE_Variable > SPU_Variable;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void SpInit_Type(); // Type and Ignore.
+ void SpInit_Variable();
+ void SpReturn_Type();
+ void SpReturn_Variable();
+
+ void On_start_Type(const char * i_sText);
+ void On_start_Bracket_Right(const char * i_sText);
+ void On_start_Ellipse(const char * i_sText);
+
+ void On_expectName_Identifier(const char * i_sText);
+ void On_expectName_ArrayBracket_Left(const char * i_sText);
+ void On_expectName_Bracket_Right(const char * i_sText);
+ void On_expectName_Comma(const char * i_sText);
+
+ void On_afterName_ArrayBracket_Left(const char * i_sText);
+ void On_afterName_Bracket_Right(const char * i_sText);
+ void On_afterName_Comma(const char * i_sText);
+ void On_afterName_Assign(const char * i_sText);
+
+ void On_finished_Bracket_Right(const char * i_sText);
+ void On_finished_Comma(const char * i_sText);
+
+ // DATA
+ Dyn< PeStatusArray<PE_Parameter> >
+ pStati;
+
+ Dyn<SP_Type> pSpType;
+ Dyn<SPU_Type> pSpuType;
+ Dyn<SP_Variable> pSpVariable;
+ Dyn<SPU_Variable> pSpuVariable;
+
+ S_ParamInfo aResultParamInfo;
+};
+
+
+
+
+// IMPLEMENTATION
+inline ary::cpp::Type_id
+PE_Parameter::Result_FrontType() const
+{
+ return aResultParamInfo.nType;
+}
+
+inline const PE_Parameter::S_ParamInfo &
+PE_Parameter::Result_ParamInfo() const
+{
+ return aResultParamInfo;
+}
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_tpltp.cxx b/autodoc/source/parser/cpp/pe_tpltp.cxx
new file mode 100644
index 000000000000..1cbb5b47c851
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_tpltp.cxx
@@ -0,0 +1,178 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_tpltp.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+
+
+
+namespace cpp {
+
+
+
+PE_TemplateTop::PE_TemplateTop( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_TemplateTop> ),
+ // aResult_Parameters,
+ bCurIsConstant(false)
+{
+ Setup_StatusFunctions();
+}
+
+
+PE_TemplateTop::~PE_TemplateTop()
+{
+}
+
+void
+PE_TemplateTop::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_TemplateTop::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_TemplateTop>::F_Tok F_Tok;
+
+ static F_Tok stateF_start[] = { &PE_TemplateTop::On_start_Less };
+ static INT16 stateT_start[] = { Tid_Less };
+
+ static F_Tok stateF_expect_qualifier[]= { &PE_TemplateTop::On_expect_qualifier_ClassOrTypename,
+ &PE_TemplateTop::On_expect_qualifier_Greater,
+ &PE_TemplateTop::On_expect_qualifier_ClassOrTypename };
+ static INT16 stateT_expect_qualifier[]= { Tid_class,
+ Tid_Greater,
+ Tid_typename };
+
+ static F_Tok stateF_expect_name[] = { &PE_TemplateTop::On_expect_name_Identifier };
+ static INT16 stateT_expect_name[] = { Tid_Identifier };
+
+ static F_Tok stateF_expect_separator[]= { &PE_TemplateTop::On_expect_separator_Comma,
+ &PE_TemplateTop::On_expect_separator_Greater };
+ static INT16 stateT_expect_separator[]= { Tid_Comma,
+ Tid_Greater };
+
+ SEMPARSE_CREATE_STATUS(PE_TemplateTop, start, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_TemplateTop, expect_qualifier, On_expect_qualifier_Other);
+ SEMPARSE_CREATE_STATUS(PE_TemplateTop, expect_name, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_TemplateTop, expect_separator, Hdl_SyntaxError);
+}
+
+void
+PE_TemplateTop::InitData()
+{
+ pStati->SetCur(start);
+ csv::erase_container(aResult_Parameters);
+ bCurIsConstant = false;
+}
+
+void
+PE_TemplateTop::TransferData()
+{
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_TemplateTop::Hdl_SyntaxError(const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_TemplateTop::On_start_Less( const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expect_qualifier);
+}
+
+void
+PE_TemplateTop::On_expect_qualifier_ClassOrTypename( const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expect_name);
+}
+
+void
+PE_TemplateTop::On_expect_qualifier_Greater(const char *)
+{
+ SetTokenResult(done, pop_success);
+}
+
+void
+PE_TemplateTop::On_expect_qualifier_Other( const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expect_name);
+
+ bCurIsConstant = true;
+}
+
+void
+PE_TemplateTop::On_expect_name_Identifier( const char * i_sText)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expect_separator);
+
+ StreamLock sl(50);
+ if ( NOT bCurIsConstant )
+ {
+ String sText( sl() << "typename " << i_sText << c_str );
+ aResult_Parameters.push_back(sText);
+ }
+ else //
+ {
+ String sText( sl() << "constant " << i_sText << c_str );
+ aResult_Parameters.push_back(sText);
+ bCurIsConstant = false;
+ } // endif
+}
+
+void
+PE_TemplateTop::On_expect_separator_Comma( const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expect_qualifier);
+}
+
+void
+PE_TemplateTop::On_expect_separator_Greater( const char *)
+{
+ SetTokenResult(done, pop_success);
+}
+
+
+
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_tpltp.hxx b/autodoc/source/parser/cpp/pe_tpltp.hxx
new file mode 100644
index 000000000000..9d1fdbff8911
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_tpltp.hxx
@@ -0,0 +1,108 @@
+/* -*- 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 ADC_CPP_PE_TPLTP_HXX
+#define ADC_CPP_PE_TPLTP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+ // PARAMETERS
+
+
+namespace cpp {
+
+
+
+class PE_TemplateTop : public cpp::Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start,
+ expect_qualifier,
+ expect_name,
+ expect_separator,
+ size_of_states
+ };
+ PE_TemplateTop(
+ Cpp_PE * i_pParent );
+ ~PE_TemplateTop();
+
+ const StringVector &
+ Result_Parameters() const;
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+ private:
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError(const char *);
+
+
+ void On_start_Less(const char *);
+
+ void On_expect_qualifier_ClassOrTypename(const char *);
+ void On_expect_qualifier_Greater(const char *);
+ void On_expect_qualifier_Other(const char *);
+
+ void On_expect_name_Identifier(const char *);
+
+ void On_expect_separator_Comma(const char *);
+ void On_expect_separator_Greater(const char *);
+
+ // DATA
+ Dyn< PeStatusArray<PE_TemplateTop> >
+ pStati;
+
+ StringVector
+ aResult_Parameters;
+ bool bCurIsConstant;
+};
+
+
+
+// IMPLEMENTATION
+
+inline const StringVector &
+PE_TemplateTop::Result_Parameters() const
+ { return aResult_Parameters; }
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_tydef.cxx b/autodoc/source/parser/cpp/pe_tydef.cxx
new file mode 100644
index 000000000000..fa5527fefbc4
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_tydef.cxx
@@ -0,0 +1,145 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_tydef.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_type.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <all_toks.hxx>
+#include "pe_type.hxx"
+
+
+namespace cpp {
+
+
+PE_Typedef::PE_Typedef(Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Typedef> ),
+ // pSpType,
+ // pSpuType,
+ // sName
+ nType(0)
+{
+ Setup_StatusFunctions();
+
+ pSpType = new SP_Type(*this);
+ pSpuType = new SPU_Type(*pSpType, 0, &PE_Typedef::SpReturn_Type);
+}
+
+PE_Typedef::~PE_Typedef()
+{
+}
+
+void
+PE_Typedef::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Typedef::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Typedef>::F_Tok F_Tok;
+ static F_Tok stateF_start[] = { &PE_Typedef::On_start_typedef };
+ static INT16 stateT_start[] = { Tid_typedef };
+
+ static F_Tok stateF_expectName[] = { &PE_Typedef::On_expectName_Identifier };
+ static INT16 stateT_expectName[] = { Tid_Identifier };
+
+ static F_Tok stateF_afterName[] = { &PE_Typedef::On_afterName_Semicolon };
+ static INT16 stateT_afterName[] = { Tid_Semicolon };
+
+ SEMPARSE_CREATE_STATUS(PE_Typedef, start, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Typedef, expectName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Typedef, afterName, Hdl_SyntaxError);
+}
+
+void
+PE_Typedef::InitData()
+{
+ pStati->SetCur(start);
+
+ sName.clear();
+ nType = 0;
+}
+
+void
+PE_Typedef::TransferData()
+{
+ pStati->SetCur(size_of_states);
+
+ ary::cpp::Typedef &
+ rTypedef = Env().AryGate().Ces().Store_Typedef(
+ Env().Context(), sName, nType );
+ Env().Event_Store_Typedef(rTypedef);
+}
+
+void
+PE_Typedef::Hdl_SyntaxError( const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Typedef::SpReturn_Type()
+{
+ pStati->SetCur(expectName);
+
+ nType = pSpuType->Child().Result_Type().Id();
+}
+
+void
+PE_Typedef::On_start_typedef( const char * )
+{
+ pSpuType->Push(done);
+}
+
+void
+PE_Typedef::On_expectName_Identifier( const char * i_sText )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterName);
+
+ sName = i_sText;
+}
+
+void
+PE_Typedef::On_afterName_Semicolon( const char * )
+{
+ SetTokenResult(done, pop_success);
+}
+
+} // namespace cpp
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_tydef.hxx b/autodoc/source/parser/cpp/pe_tydef.hxx
new file mode 100644
index 000000000000..5c4cac474814
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_tydef.hxx
@@ -0,0 +1,93 @@
+/* -*- 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 ADC_CPP_PE_TYDEF_HXX
+#define ADC_CPP_PE_TYDEF_HXX
+
+// BASE CLASSES
+#include "cpp_pe.hxx"
+// USED SERVICES
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+
+
+namespace cpp
+{
+ class PE_Type;
+
+
+
+
+class PE_Typedef : public cpp::Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start,
+ expectName,
+ afterName,
+ size_of_states
+ };
+ PE_Typedef(
+ Cpp_PE * i_pParent );
+ ~PE_Typedef();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+ private:
+ typedef SubPe< PE_Typedef, PE_Type > SP_Type;
+ typedef SubPeUse< PE_Typedef, PE_Type> SPU_Type;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void SpReturn_Type();
+
+ void On_start_typedef( const char * );
+ void On_expectName_Identifier( const char * );
+ void On_afterName_Semicolon( const char * );
+
+ // DATA
+ Dyn< PeStatusArray<PE_Typedef> >
+ pStati;
+ Dyn<SP_Type> pSpType;
+ Dyn<SPU_Type> pSpuType;
+
+ String sName;
+ ary::cpp::Type_id nType;
+};
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_type.cxx b/autodoc/source/parser/cpp/pe_type.cxx
new file mode 100644
index 000000000000..1f34ddffc14e
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_type.cxx
@@ -0,0 +1,556 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_type.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/cpp/inpcontx.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_namesp.hxx>
+#include <ary/cpp/cp_type.hxx>
+#include "pe_class.hxx"
+#include "pe_enum.hxx"
+#include <x_parse.hxx>
+
+
+
+class NullType : public ary::cpp::Type
+{
+ private:
+ virtual void do_Accept(
+ csv::ProcessorIfc & io_processor ) const;
+ virtual ary::ClassId
+ get_AryClass() const;
+ virtual bool inq_IsConst() const;
+ virtual void inq_Get_Text(
+ StreamStr & o_rPreName,
+ StreamStr & o_rName,
+ StreamStr & o_rPostName,
+ const ary::cpp::Gate &
+ i_rGate ) const;
+};
+
+void
+NullType::do_Accept(csv::ProcessorIfc & ) const
+{
+ // Does nothing.
+}
+
+ary::ClassId
+NullType::get_AryClass() const
+{
+ return 0;
+}
+
+bool
+NullType::inq_IsConst() const
+{
+ return true;
+}
+
+void
+NullType::inq_Get_Text( StreamStr & ,
+ StreamStr & ,
+ StreamStr & ,
+ const ary::cpp::Gate & ) const
+{
+ // Does nothing.
+}
+
+
+
+
+namespace cpp
+{
+
+
+inline bool
+PE_Type::IsType() const
+ { return eResult_KindOf == is_type; }
+
+
+PE_Type::PE_Type( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Type> ),
+ pSpType(0),
+ pSpuType_TemplateParameter(0),
+ // pSpClass,
+ // pSpuClass,
+ // pSpEnum,
+ // pSpuEnum,
+ pType(0),
+ pCurTemplate_ParameterList(0),
+ // sOwningClassName,
+ // sParsedClass_Name,
+ pResult_Type(0),
+ eResult_KindOf(is_none),
+ bIsCastOperatorType(false)
+{
+ Setup_StatusFunctions();
+
+ pSpType = new SP_Type(*this);
+ pSpClass = new SP_Class(*this);
+ pSpEnum = new SP_Enum(*this);
+
+ pSpuType_TemplateParameter
+ = new SPU_Type( *pSpType, 0,
+ &PE_Type::SpReturn_Type_TemplateParameter );
+ pSpuClass = new SPU_Class( *pSpClass, 0,
+ & PE_Type::SpReturn_Class );
+ pSpuEnum = new SPU_Enum( *pSpEnum, 0,
+ & PE_Type::SpReturn_Enum );
+}
+
+PE_Type::~PE_Type()
+{
+}
+
+void
+PE_Type::Init_AsCastOperatorType()
+{
+ bIsCastOperatorType = true;
+}
+
+void
+PE_Type::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Type::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Type>::F_Tok F_Tok;
+ static F_Tok stateF_start[] = { &PE_Type::On_start_Identifier,
+ &PE_Type::On_start_class,
+ &PE_Type::On_start_class,
+ &PE_Type::On_start_class,
+ &PE_Type::On_start_enum,
+ &PE_Type::On_start_const,
+ &PE_Type::On_start_volatile,
+ &PE_Type::On_start_Bracket_Right,
+ &PE_Type::On_start_DoubleColon,
+ &PE_Type::On_start_typename,
+ &PE_Type::On_start_BuiltInType,
+ &PE_Type::On_start_TypeSpecializer };
+ static INT16 stateT_start[] = { Tid_Identifier,
+ Tid_class,
+ Tid_struct,
+ Tid_union,
+ Tid_enum,
+ Tid_const,
+ Tid_volatile,
+ Tid_Bracket_Right,
+ Tid_DoubleColon,
+ Tid_typename,
+ Tid_BuiltInType,
+ Tid_TypeSpecializer };
+
+ static F_Tok stateF_expect_namesegment[] = { &PE_Type::On_expect_namesegment_Identifier,
+ &PE_Type::On_expect_namesegment_Identifier };
+ static INT16 stateT_expect_namesegment[] = { Tid_Identifier,
+ Tid_BuiltInType };
+
+ static F_Tok stateF_after_namesegment[] = { &PE_Type::On_after_namesegment_const,
+ &PE_Type::On_after_namesegment_volatile,
+ &PE_Type::On_after_namesegment_Bracket_Left,
+ &PE_Type::On_after_namesegment_DoubleColon,
+ &PE_Type::On_after_namesegment_Less,
+ &PE_Type::On_after_namesegment_Asterix,
+ &PE_Type::On_after_namesegment_AmpersAnd };
+ static INT16 stateT_after_namesegment[] = { Tid_const,
+ Tid_volatile,
+ Tid_Bracket_Left,
+ Tid_DoubleColon,
+ Tid_Less,
+ Tid_Asterix,
+ Tid_AmpersAnd };
+
+ static F_Tok stateF_afterclass_expect_semicolon[] =
+ { &PE_Type::On_afterclass_expect_semicolon_Semicolon };
+ static INT16 stateT_afterclass_expect_semicolon[] =
+ { Tid_Semicolon };
+
+ static F_Tok stateF_within_template[] = { &PE_Type::On_within_template_Comma,
+ &PE_Type::On_within_template_Greater,
+ &PE_Type::On_within_template_Constant };
+ static INT16 stateT_within_template[] = { Tid_Comma,
+ Tid_Greater,
+ Tid_Constant };
+
+ static F_Tok stateF_within_indirection[] = { &PE_Type::On_within_indirection_const,
+ &PE_Type::On_within_indirection_volatile,
+ &PE_Type::On_within_indirection_Asterix,
+ &PE_Type::On_within_indirection_AmpersAnd };
+ static INT16 stateT_within_indirection[] = { Tid_const,
+ Tid_volatile,
+ Tid_Asterix,
+ Tid_AmpersAnd };
+
+ SEMPARSE_CREATE_STATUS(PE_Type, start, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Type, expect_namesegment, On_EndOfType);
+ SEMPARSE_CREATE_STATUS(PE_Type, after_namesegment, On_EndOfType);
+ SEMPARSE_CREATE_STATUS(PE_Type, afterclass_expect_semicolon, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Type, within_template, On_within_template_TypeStart);
+ SEMPARSE_CREATE_STATUS(PE_Type, within_indirection, On_EndOfType);
+}
+
+void
+PE_Type::InitData()
+{
+ pStati->SetCur(start);
+
+ ary::cpp::Ce_id
+ scope_id = Env().Context().CurClass() != 0
+ ? Env().Context().CurClass()->CeId()
+ : Env().Context().CurNamespace().CeId();
+
+ pType = new ary::cpp::UsedType(scope_id);
+ pCurTemplate_ParameterList = 0;
+ sOwningClassName
+ = Env().Context().CurClass() != 0
+ ? Env().Context().CurClass()->LocalName().c_str()
+ : "";
+ sParsedClass_Name.clear();
+ pResult_Type = 0;
+ eResult_KindOf = is_type;
+ bIsCastOperatorType = false;
+}
+
+void
+PE_Type::TransferData()
+{
+ pStati->SetCur(size_of_states);
+
+ if ( IsType() )
+ pResult_Type = & Env().AryGate().Types().CheckIn_UsedType(
+ Env().Context(),
+ *pType.Release() );
+ else
+ pResult_Type = new NullType;
+}
+
+void
+PE_Type::Hdl_SyntaxError( const char * i_sText )
+{
+ StdHandlingOfSyntaxError( i_sText );
+}
+
+void
+PE_Type::SpReturn_Type_TemplateParameter()
+{
+ if ( pSpuType_TemplateParameter->Child().Result_KindOf() != is_type )
+ throw X_Parser(X_Parser::x_UnspecifiedSyntaxError, "", String::Null_(), 0);
+
+ pCurTemplate_ParameterList->AddParam_Type(
+ pSpuType_TemplateParameter->Child().Result_Type().TypeId() );
+}
+
+void
+PE_Type::SpReturn_Class()
+{
+ switch ( pSpuClass->Child().Result_KindOf() )
+ {
+ case PE_Class::is_declaration:
+ pStati->SetCur(afterclass_expect_semicolon);
+ eResult_KindOf = is_explicit_class_declaration;
+ break;
+ case PE_Class::is_implicit_declaration:
+ pStati->SetCur(after_namesegment);
+ pType->Add_NameSegment(
+ pSpuClass->Child().Result_LocalName() );
+ break;
+ case PE_Class::is_predeclaration:
+ pStati->SetCur(afterclass_expect_semicolon);
+ eResult_KindOf = is_class_predeclaration;
+ break;
+ case PE_Class::is_qualified_typename:
+ pStati->SetCur(after_namesegment);
+ pType->Add_NameSegment(
+ pSpuClass->Child().Result_FirstNameSegment() );
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+void
+PE_Type::SpReturn_Enum()
+{
+ switch ( pSpuEnum->Child().Result_KindOf() )
+ {
+ case PE_Enum::is_declaration:
+ pStati->SetCur(afterclass_expect_semicolon);
+ eResult_KindOf = is_explicit_enum_declaration;
+ break;
+ case PE_Enum::is_implicit_declaration:
+ pStati->SetCur(after_namesegment);
+ pType->Add_NameSegment(
+ pSpuEnum->Child().Result_LocalName() );
+ break;
+ case PE_Enum::is_qualified_typename:
+ pStati->SetCur(after_namesegment);
+ pType->Add_NameSegment(
+ pSpuEnum->Child().Result_FirstNameSegment() );
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+void
+PE_Type::On_EndOfType(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Type::On_start_Identifier( const char * i_sText )
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(after_namesegment);
+
+ pType->Add_NameSegment(i_sText);
+}
+
+void
+PE_Type::On_start_class(const char *)
+{
+ pSpuClass->Push(not_done);
+}
+
+void
+PE_Type::On_start_enum(const char *)
+{
+ pSpuEnum->Push(done);
+}
+
+void
+PE_Type::On_start_const(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Set_Const();
+}
+
+void
+PE_Type::On_start_volatile(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Set_Volatile();
+}
+
+void
+PE_Type::On_start_Bracket_Right(const char *)
+{
+ SetTokenResult(not_done,pop_success);
+
+ eResult_KindOf = is_none;
+}
+
+void
+PE_Type::On_start_DoubleColon(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Set_Absolute();
+}
+
+void
+PE_Type::On_start_BuiltInType(const char * i_sText)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(after_namesegment);
+ pType->Set_BuiltIn(i_sText);
+}
+
+void
+PE_Type::On_start_TypeSpecializer(const char * i_sText)
+{
+ SetTokenResult(done,stay);
+ if (*i_sText == 'u') {
+ pType->Set_Unsigned();
+ }
+ else if (*i_sText == 's') {
+ pType->Set_Signed();
+ }
+ else {
+ csv_assert(false);
+ }
+}
+
+void
+PE_Type::On_start_typename(const char *)
+{
+ SetTokenResult(done,stay);
+}
+
+void
+PE_Type::On_expect_namesegment_Identifier(const char * i_sText)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(after_namesegment);
+ pType->Add_NameSegment(i_sText);
+}
+
+void
+PE_Type::On_after_namesegment_const(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Set_Const();
+}
+
+void
+PE_Type::On_after_namesegment_volatile(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Set_Volatile();
+}
+
+void
+PE_Type::On_after_namesegment_Bracket_Left(const char * i_sText)
+{
+ if ( bIsCastOperatorType )
+ {
+ SetTokenResult(not_done, pop_success);
+ }
+ else if ( pType->LocalName() == sOwningClassName )
+ {
+ SetTokenResult(not_done,pop_success);
+ eResult_KindOf = is_constructor;
+
+ }
+ else //
+ {
+ On_EndOfType(i_sText);
+ } // endif
+}
+
+void
+PE_Type::On_after_namesegment_DoubleColon(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(expect_namesegment);
+}
+
+void
+PE_Type::On_after_namesegment_Less(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(within_template);
+
+ pCurTemplate_ParameterList = & pType->Enter_Template();
+}
+
+void
+PE_Type::On_after_namesegment_Asterix(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(within_indirection);
+ pType->Add_PtrLevel();
+}
+
+void
+PE_Type::On_after_namesegment_AmpersAnd(const char *)
+{
+ SetTokenResult(done,pop_success);
+ pType->Set_Reference();
+}
+
+void
+PE_Type::On_afterclass_expect_semicolon_Semicolon(const char *)
+{
+ csv_assert( NOT IsType() );
+ SetTokenResult(not_done,pop_success);
+}
+
+void
+PE_Type::On_within_template_Comma(const char *)
+{
+ SetTokenResult(done,stay);
+}
+
+void
+PE_Type::On_within_template_Greater(const char *)
+{
+ SetTokenResult(done,stay);
+ pStati->SetCur(after_namesegment);
+
+ pCurTemplate_ParameterList = 0;
+}
+
+void
+PE_Type::On_within_template_Constant(const char * i_sText)
+{
+ // KORR_FUTURE
+ Cerr() << "Templates with constants as parameters are not yet supported by Autodoc" << Endl();
+ Hdl_SyntaxError(i_sText);
+}
+
+void
+PE_Type::On_within_template_TypeStart(const char *)
+{
+ pSpuType_TemplateParameter->Push(not_done);
+}
+
+void
+PE_Type::On_within_indirection_const(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Set_Const();
+}
+
+void
+PE_Type::On_within_indirection_volatile(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Set_Volatile();
+}
+
+void
+PE_Type::On_within_indirection_Asterix(const char *)
+{
+ SetTokenResult(done,stay);
+ pType->Add_PtrLevel();
+}
+
+void
+PE_Type::On_within_indirection_AmpersAnd(const char *)
+{
+ SetTokenResult(done,pop_success);
+ pType->Set_Reference();
+}
+
+} // namespace cpp
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_type.hxx b/autodoc/source/parser/cpp/pe_type.hxx
new file mode 100644
index 000000000000..55eeaa5279f4
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_type.hxx
@@ -0,0 +1,187 @@
+/* -*- 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 ADC_CPP_PE_TYPE_HXX
+#define ADC_CPP_PE_TYPE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <ary/cpp/usedtype.hxx>
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+ // PARAMETERS
+#include <ary/cpp/c_types4cpp.hxx>
+
+
+
+namespace cpp {
+
+class PE_Class;
+class PE_Enum;
+class PE_Expression;
+
+class PE_Type : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start,
+ expect_namesegment,
+ after_namesegment,
+ afterclass_expect_semicolon,
+ within_template,
+ within_indirection,
+ size_of_states
+ };
+ enum E_KindOfResult
+ {
+ is_none,
+ is_type,
+ is_constructor,
+ is_explicit_class_declaration,
+ is_class_predeclaration,
+ is_explicit_enum_declaration
+ };
+
+ PE_Type(
+ Cpp_PE * i_pParent );
+ ~PE_Type();
+
+ void Init_AsCastOperatorType();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ E_KindOfResult Result_KindOf() const;
+ const ary::cpp::Type &
+ Result_Type() const;
+ private:
+ typedef SubPe< PE_Type, PE_Type > SP_Type;
+ typedef SubPe< PE_Type, PE_Class > SP_Class;
+ typedef SubPe< PE_Type, PE_Enum > SP_Enum;
+ typedef SubPeUse< PE_Type, PE_Type > SPU_Type;
+ typedef SubPeUse< PE_Type, PE_Class > SPU_Class;
+ typedef SubPeUse< PE_Type, PE_Enum > SPU_Enum;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError( const char *);
+
+ void SpReturn_Type_TemplateParameter();
+ void SpReturn_Class();
+ void SpReturn_Enum();
+
+ void On_EndOfType(const char *);
+
+ void On_start_Identifier(const char *);
+ void On_start_class(const char *);
+ void On_start_enum(const char *);
+ void On_start_const(const char *);
+ void On_start_volatile(const char *);
+ void On_start_Bracket_Right(const char *);
+ void On_start_DoubleColon(const char *);
+ void On_start_BuiltInType(const char *);
+ void On_start_TypeSpecializer(const char *);
+ void On_start_typename(const char *);
+
+ void On_expect_namesegment_Identifier(const char *);
+
+ void On_after_namesegment_const(const char *);
+ void On_after_namesegment_volatile(const char *);
+ void On_after_namesegment_Bracket_Left(const char *);
+ void On_after_namesegment_DoubleColon(const char *);
+ void On_after_namesegment_Less(const char *);
+ void On_after_namesegment_Asterix(const char *);
+ void On_after_namesegment_AmpersAnd(const char *);
+
+ void On_afterclass_expect_semicolon_Semicolon(const char *);
+
+ void On_within_template_Comma(const char *);
+ void On_within_template_Greater(const char *);
+ void On_within_template_Constant(const char *);
+ void On_within_template_TypeStart(const char *);
+
+ void On_within_indirection_const(const char *);
+ void On_within_indirection_volatile(const char *);
+ void On_within_indirection_Asterix(const char *);
+ void On_within_indirection_AmpersAnd(const char *);
+
+ bool IsType() const;
+
+ // DATA
+ Dyn< PeStatusArray<PE_Type> >
+ pStati;
+
+ Dyn<SP_Type> pSpType;
+ Dyn<SPU_Type> pSpuType_TemplateParameter;
+ Dyn<SP_Class> pSpClass;
+ Dyn<SPU_Class> pSpuClass;
+ Dyn<SP_Enum> pSpEnum;
+ Dyn<SPU_Enum> pSpuEnum;
+
+ Dyn<ary::cpp::UsedType>
+ pType;
+ ary::cpp::ut::List_TplParameter *
+ pCurTemplate_ParameterList;
+ String sOwningClassName;
+ String sParsedClass_Name;
+
+ const ary::cpp::Type *
+ pResult_Type;
+ E_KindOfResult eResult_KindOf;
+ bool bIsCastOperatorType;
+};
+
+
+
+// IMPLEMENTATION
+
+
+inline const ary::cpp::Type &
+PE_Type::Result_Type() const
+ { csv_assert(pResult_Type != 0);
+ return *pResult_Type; }
+inline PE_Type::E_KindOfResult
+PE_Type::Result_KindOf() const
+ { return eResult_KindOf; }
+
+
+} // namespace cpp
+
+
+#endif
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_vafu.cxx b/autodoc/source/parser/cpp/pe_vafu.cxx
new file mode 100644
index 000000000000..ca9a538f544e
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_vafu.cxx
@@ -0,0 +1,651 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_vafu.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <ary/cpp/c_class.hxx>
+#include <ary/cpp/c_vari.hxx>
+#include <ary/cpp/c_vfflag.hxx>
+#include <ary/cpp/cp_ce.hxx>
+#include <ary/cpp/inpcontx.hxx>
+#include "pe_type.hxx"
+#include "pe_vari.hxx"
+#include "pe_funct.hxx"
+#include "pe_ignor.hxx"
+#include <x_parse.hxx>
+
+
+
+
+namespace cpp {
+
+
+
+//*********************** PE_VarFunc ***********************//
+
+
+PE_VarFunc::PE_VarFunc( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_VarFunc> ),
+ // pSpType,
+ // pSpuType,
+ // pSpVariable,
+ // pSpuVariable,
+ // pSpFunction,
+ // pSpuFunctionStd,
+ // pSpuFunctionCtor,
+ // pSpuFunctionDtor,
+ // pSpuFunctionCastOperator,
+ // pSpuFunctionNormalOperator
+ // pSpIgnore,
+ // pSpuIgnore,
+ nCounter_TemplateBrackets(0),
+ bInDestructor(false),
+ // aResultIds,
+ nResultFrontType(0),
+ eResultType(result_unknown),
+ bVirtual(false),
+ bStatic(false),
+ bExtern(false),
+ bExternC(false),
+ bMutable(false),
+ bInline(false),
+ bRegister(false),
+ bExplicit(false)
+{
+ Setup_StatusFunctions();
+
+ pSpType = new SP_Type(*this);
+ pSpuType = new SPU_Type(*pSpType, 0, &PE_VarFunc::SpReturn_Type);
+ pSpVariable = new SP_Variable(*this);
+ pSpuVariable = new SPU_Variable(*pSpVariable, 0, &PE_VarFunc::SpReturn_Variable);
+ pSpFunction = new SP_Function(*this);
+ pSpuFunctionStd = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionStd, &PE_VarFunc::SpReturn_FunctionStd);
+ pSpuFunctionCtor = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionCtor, &PE_VarFunc::SpReturn_FunctionStd);
+ pSpuFunctionDtor = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionDtor, &PE_VarFunc::SpReturn_FunctionStd);
+ pSpuFunctionCastOperator
+ = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionCastOperator, &PE_VarFunc::SpReturn_FunctionStd);
+ pSpuFunctionNormalOperator
+ = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionNormalOperator, &PE_VarFunc::SpReturn_FunctionStd);
+ pSpIgnore = new SP_Ignore(*this);
+ pSpuIgnore = new SPU_Ignore(*pSpIgnore, 0, &PE_VarFunc::SpReturn_Ignore);
+}
+
+PE_VarFunc::~PE_VarFunc()
+{
+}
+
+void
+PE_VarFunc::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_VarFunc::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_VarFunc>::F_Tok F_Tok;
+
+ static F_Tok stateF_start[] = { &PE_VarFunc::On_start_Identifier,
+ &PE_VarFunc::On_start_operator,
+ &PE_VarFunc::On_start_TypeKey,
+ &PE_VarFunc::On_start_TypeKey,
+ &PE_VarFunc::On_start_TypeKey,
+ &PE_VarFunc::On_start_TypeKey,
+ &PE_VarFunc::On_start_virtual,
+ &PE_VarFunc::On_start_Tilde,
+ &PE_VarFunc::On_start_const,
+ &PE_VarFunc::On_start_volatile,
+ &PE_VarFunc::On_start_extern,
+ &PE_VarFunc::On_start_static,
+ &PE_VarFunc::On_start_mutable,
+ &PE_VarFunc::On_start_register,
+ &PE_VarFunc::On_start_inline,
+ &PE_VarFunc::On_start_explicit,
+ &PE_VarFunc::On_start_Bracket_Right,
+ &PE_VarFunc::On_start_Identifier,
+ &PE_VarFunc::On_start_typename,
+ &PE_VarFunc::On_start_Identifier,
+ &PE_VarFunc::On_start_Identifier };
+ static INT16 stateT_start[] = { Tid_Identifier,
+ Tid_operator,
+ Tid_class,
+ Tid_struct,
+ Tid_union,
+ Tid_enum,
+ Tid_virtual,
+ Tid_Tilde,
+ Tid_const,
+ Tid_volatile,
+ Tid_extern,
+ Tid_static,
+ Tid_mutable,
+ Tid_register,
+ Tid_inline,
+ Tid_explicit,
+ Tid_Bracket_Right,
+ Tid_DoubleColon,
+ Tid_typename,
+ Tid_BuiltInType,
+ Tid_TypeSpecializer };
+
+ static F_Tok stateF_expectCtor[] = { &PE_VarFunc::On_expectCtor_Bracket_Left };
+ static INT16 stateT_expectCtor[] = { Tid_Bracket_Left };
+
+ static F_Tok stateF_afterClassDecl[] = { &PE_VarFunc::On_afterClassDecl_Semicolon };
+ static INT16 stateT_afterClassDecl[] = { Tid_Semicolon };
+
+ static F_Tok stateF_expectName[] = { &PE_VarFunc::On_expectName_Identifier,
+ &PE_VarFunc::On_expectName_operator,
+ &PE_VarFunc::On_expectName_Bracket_Left };
+ static INT16 stateT_expectName[] = { Tid_Identifier,
+ Tid_operator,
+ Tid_Bracket_Left };
+
+ static F_Tok stateF_afterName[] = { &PE_VarFunc::On_afterName_ArrayBracket_Left,
+ &PE_VarFunc::On_afterName_Bracket_Left,
+ &PE_VarFunc::On_afterName_DoubleColon,
+ &PE_VarFunc::On_afterName_Semicolon,
+ &PE_VarFunc::On_afterName_Comma,
+ &PE_VarFunc::On_afterName_Assign,
+ &PE_VarFunc::On_afterName_Less };
+ static INT16 stateT_afterName[] = { Tid_ArrayBracket_Left,
+ Tid_Bracket_Left,
+ Tid_DoubleColon,
+ Tid_Semicolon,
+ Tid_Comma,
+ Tid_Assign,
+ Tid_Less };
+
+ static F_Tok stateF_afterName_inErraneousTemplate[] =
+ { &PE_VarFunc::On_afterName_inErraneousTemplate_Less,
+ &PE_VarFunc::On_afterName_inErraneousTemplate_Greater };
+ static INT16 stateT_afterName_inErraneousTemplate[] =
+ { Tid_Less,
+ Tid_Greater };
+
+ static F_Tok stateF_finished[] = { &PE_VarFunc::On_finished_Semicolon,
+ &PE_VarFunc::On_finished_Comma };
+ static INT16 stateT_finished[] = { Tid_Semicolon,
+ Tid_Comma };
+
+ static F_Tok stateF_finishedIncludingFunctionImplementation[] =
+ { &PE_VarFunc::On_finishedIncludingFunctionImplementation_Default
+ };
+ static INT16 stateT_finishedIncludingFunctionImplementation[] =
+ { Tid_BuiltInType // Just to have one entry, but it is default handled, too.
+ };
+
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, start, Hdl_UnknownToken);
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, expectCtor, Hdl_UnknownToken);
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, afterClassDecl, Hdl_UnknownToken);
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, expectName, Hdl_UnknownToken);
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, afterName, Hdl_UnknownToken);
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, afterName_inErraneousTemplate, On_afterName_inErraneousTemplate_Default);
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, finished, On_finished_Default);
+ SEMPARSE_CREATE_STATUS(PE_VarFunc, finishedIncludingFunctionImplementation, On_finishedIncludingFunctionImplementation_Default);
+}
+
+void
+PE_VarFunc::InitData()
+{
+ pStati->SetCur(start);
+ csv::erase_container(aResultIds);
+
+ nCounter_TemplateBrackets = 0;
+ bInDestructor = false;
+
+ nResultFrontType = 0;
+ eResultType = result_unknown;
+ sName.clear();
+ bVirtual = ary::cpp::VIRTUAL_none;
+ bStatic = false;
+ bExtern = false;
+ bExternC = false;
+ bMutable = false;
+ bInline = false;
+ bRegister = false;
+ bExplicit = false;
+}
+
+void
+PE_VarFunc::TransferData()
+{
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_VarFunc::Hdl_UnknownToken( const char *)
+{
+ pSpuIgnore->Push(not_done);
+}
+
+void
+PE_VarFunc::SpInit_FunctionStd()
+{
+ if ( nResultFrontType.IsValid() AND sName.length() > 0 )
+ {
+ pSpuFunctionStd->Child().Init_Std(
+ sName,
+ nResultFrontType,
+ bVirtual,
+ CreateFunctionFlags() );
+ }
+ else
+ {
+ throw X_Parser( X_Parser::x_UnexpectedToken,
+ "",
+ Env().CurFileName(),
+ Env().LineCount() );
+ }
+}
+
+void
+PE_VarFunc::SpInit_FunctionCtor()
+{
+ ary::cpp::Class * pOwnerClass = Env().Context().CurClass();
+ csv_assert( pOwnerClass != 0 );
+ pSpuFunctionStd->Child().Init_Ctor( pOwnerClass->LocalName(),
+ CreateFunctionFlags() );
+}
+
+void
+PE_VarFunc::SpInit_FunctionDtor()
+{
+ pSpuFunctionStd->Child().Init_Dtor( sName,
+ bVirtual,
+ CreateFunctionFlags() );
+}
+
+void
+PE_VarFunc::SpInit_FunctionCastOperator()
+{
+ pSpuFunctionStd->Child().Init_CastOperator( bVirtual,
+ CreateFunctionFlags() );
+}
+
+void
+PE_VarFunc::SpInit_FunctionNormalOperator()
+{
+ pSpuFunctionStd->Child().Init_NormalOperator( nResultFrontType,
+ bVirtual,
+ CreateFunctionFlags() );
+}
+
+void
+PE_VarFunc::SpReturn_Type()
+{
+ switch ( pSpuType->Child().Result_KindOf() )
+ {
+ case PE_Type::is_type:
+ pStati->SetCur(expectName);
+ nResultFrontType
+ = pSpuType->Child().Result_Type().Id();
+ break;
+ case PE_Type::is_constructor:
+ pStati->SetCur(expectCtor);
+ eResultType = result_function;
+ break;
+ case PE_Type::is_explicit_class_declaration:
+ case PE_Type::is_explicit_enum_declaration:
+ pStati->SetCur(afterClassDecl);
+ eResultType = result_ignore;
+ break;
+ case PE_Type::is_class_predeclaration:
+ pStati->SetCur(afterClassDecl);
+ eResultType = result_ignore;
+ break;
+ default:
+ ;
+ }
+}
+
+void
+PE_VarFunc::SpReturn_Variable()
+{
+ typedef ary::cpp::VariableFlags VarFlags;
+
+ if ( NOT bExtern )
+ {
+ VarFlags aFlags( UINT16(
+ ( bStatic AND Env().Context().CurClass() == 0 ? VarFlags::f_static_local : 0 )
+ | ( bStatic AND Env().Context().CurClass() != 0 ? VarFlags::f_static_member : 0 )
+ | ( bMutable ? VarFlags::f_mutable : 0 ) )
+ );
+
+// ary::S_InitData aData( 0, Env().CurCeSpace().Id(), i_sName, 0 );
+ ary::cpp::Variable & rCurParsedVariable
+ = Env().AryGate().Ces().Store_Variable( Env().Context(),
+ sName,
+ nResultFrontType,
+ aFlags,
+ pSpuVariable->Child().Result_SizeExpression(),
+ pSpuVariable->Child().Result_InitExpression() );
+ Env().Event_Store_Variable(rCurParsedVariable);
+ aResultIds.push_back( rCurParsedVariable.CeId() );
+ eResultType = result_variable;
+ }
+ else if (bExtern)
+ {
+ eResultType = result_ignore;
+ }
+
+ pStati->SetCur(finished);
+}
+
+void
+PE_VarFunc::SpReturn_FunctionStd()
+{
+ if ( (NOT bExtern) OR bExternC )
+ {
+ aResultIds.push_back(pSpuFunctionStd->Child().Result_Id());
+ eResultType = result_function;
+ }
+ else
+ {
+ eResultType = result_ignore;
+ }
+
+ if ( NOT pSpuFunctionStd->Child().Result_WithImplementation() )
+ pStati->SetCur(finished);
+ else
+ pStati->SetCur(finishedIncludingFunctionImplementation);
+}
+
+void
+PE_VarFunc::SpReturn_Ignore()
+{
+ pStati->SetCur(finished);
+}
+
+void
+PE_VarFunc::On_start_Identifier(const char *)
+{
+ pSpuType->Push(not_done);
+}
+
+void
+PE_VarFunc::On_start_operator(const char *)
+{
+ pSpuFunctionCastOperator->Push(done);
+}
+
+void
+PE_VarFunc::On_start_TypeKey(const char *)
+{
+ pSpuType->Push(not_done);
+}
+
+void
+PE_VarFunc::On_start_virtual(const char *)
+{
+ SetTokenResult(done, stay);
+ bVirtual = true;
+}
+
+void
+PE_VarFunc::On_start_Tilde(const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expectName);
+
+ bInDestructor = true;
+}
+
+void
+PE_VarFunc::On_start_const(const char *)
+{
+ pSpuType->Push(not_done);
+}
+
+void
+PE_VarFunc::On_start_volatile(const char *)
+{
+ pSpuType->Push(not_done);
+}
+
+void
+PE_VarFunc::On_start_extern(const char *)
+{
+ SetTokenResult(done, stay);
+ bExtern = true;
+}
+
+void
+PE_VarFunc::On_start_static(const char *)
+{
+ SetTokenResult(done, stay);
+ bStatic = true;
+}
+
+void
+PE_VarFunc::On_start_mutable(const char *)
+{
+ SetTokenResult(done, stay);
+ bMutable = true;
+}
+
+void
+PE_VarFunc::On_start_register(const char *)
+{
+ SetTokenResult(done, stay);
+ bRegister = true;
+}
+
+void
+PE_VarFunc::On_start_inline(const char *)
+{
+ SetTokenResult(done, stay);
+
+ bInline = true;
+}
+
+void
+PE_VarFunc::On_start_explicit(const char *)
+{
+ SetTokenResult(done, stay);
+ bExplicit = true;
+}
+
+void
+PE_VarFunc::On_start_Bracket_Right(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_VarFunc::On_start_typename(const char *)
+{
+ pSpuType->Push(not_done);
+}
+
+void
+PE_VarFunc::On_expectCtor_Bracket_Left(const char *)
+{
+ pSpuFunctionCtor->Push(not_done);
+}
+
+void
+PE_VarFunc::On_afterClassDecl_Semicolon(const char *)
+{
+ SetTokenResult(done, pop_success);
+}
+
+void
+PE_VarFunc::On_expectName_Identifier(const char * i_sText)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterName);
+ sName = i_sText;
+}
+
+void
+PE_VarFunc::On_expectName_operator(const char *)
+{
+ pSpuFunctionNormalOperator->Push(done);
+}
+
+void
+PE_VarFunc::On_expectName_Bracket_Left(const char *)
+{
+ // Function pointer declaration
+ pSpuIgnore->Push(not_done);
+ // TODO
+}
+
+
+void
+PE_VarFunc::On_afterName_ArrayBracket_Left(const char *)
+{
+ pSpuVariable->Push(not_done);
+}
+
+void
+PE_VarFunc::On_afterName_Bracket_Left(const char *)
+{
+ if ( NOT bInDestructor)
+ pSpuFunctionStd->Push(not_done);
+ else
+ pSpuFunctionDtor->Push(not_done);
+}
+
+void
+PE_VarFunc::On_afterName_DoubleColon(const char *)
+{
+ pSpuIgnore->Push(done); // This seems to be only an implementation.
+
+ // This may have been a template.
+ // In that case, the declaration needs to be closed.
+ Env().Close_OpenTemplate();
+}
+
+void
+PE_VarFunc::On_afterName_Semicolon(const char *)
+{
+ pSpuVariable->Push(not_done);
+}
+
+void
+PE_VarFunc::On_afterName_Comma(const char *)
+{
+ pSpuVariable->Push(not_done);
+}
+
+void
+PE_VarFunc::On_afterName_Assign(const char * )
+{
+ pSpuVariable->Push(not_done);
+}
+
+void
+PE_VarFunc::On_afterName_Less(const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterName_inErraneousTemplate);
+
+ nCounter_TemplateBrackets = 1;
+}
+
+void
+PE_VarFunc::On_afterName_inErraneousTemplate_Less(const char * )
+{
+ SetTokenResult(done, stay);
+
+ nCounter_TemplateBrackets++;
+}
+
+void
+PE_VarFunc::On_afterName_inErraneousTemplate_Greater(const char * )
+{
+ SetTokenResult(done, stay);
+
+ nCounter_TemplateBrackets--;
+ if ( nCounter_TemplateBrackets == 0 )
+ pStati->SetCur(afterName);
+}
+
+void
+PE_VarFunc::On_afterName_inErraneousTemplate_Default(const char * )
+{
+ SetTokenResult(done, stay);
+}
+
+void
+PE_VarFunc::On_finished_Semicolon(const char * ) // Should be Semicolon !!!
+{
+ SetTokenResult(done, pop_success);
+}
+
+void
+PE_VarFunc::On_finished_Comma(const char * )
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(expectName);
+}
+
+void
+PE_VarFunc::On_finished_Default(const char * )
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_VarFunc::On_finishedIncludingFunctionImplementation_Default(const char * )
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+ary::cpp::FunctionFlags
+PE_VarFunc::CreateFunctionFlags()
+{
+ typedef ary::cpp::FunctionFlags FuncFlags;
+
+ return FuncFlags( UINT16(
+ ( bStatic AND Env().Context().CurClass() == 0 ? FuncFlags::f_static_local : 0 )
+ | ( bStatic AND Env().Context().CurClass() != 0 ? FuncFlags::f_static_member : 0 )
+ | ( bExtern ? FuncFlags::f_extern : 0 )
+ | ( Env().IsExternC() ? FuncFlags::f_externC : 0 )
+ | ( bMutable ? FuncFlags::f_mutable : 0 )
+ | ( bInline ? FuncFlags::f_inline : 0 )
+ | ( bRegister ? FuncFlags::f_register : 0 )
+ | ( bExplicit ? FuncFlags::f_explicit : 0 ) )
+ );
+
+}
+
+
+} // namespace cpp
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_vafu.hxx b/autodoc/source/parser/cpp/pe_vafu.hxx
new file mode 100644
index 000000000000..c31bbb5daf47
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_vafu.hxx
@@ -0,0 +1,292 @@
+/* -*- 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 ADC_CPP_PE_VAFU_HXX
+#define ADC_CPP_PE_VAFU_HXX
+
+// BASE CLASSES
+#include "cpp_pe.hxx"
+// USED SERVICES
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_vfflag.hxx>
+
+
+
+namespace cpp
+{
+
+class PE_Type;
+class PE_Variable;
+class PE_Function;
+class PE_Ignore;
+
+
+
+
+class PE_VarFunc : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ start,
+ expectCtor,
+ afterClassDecl, // Also used for after enum declaration.
+ expectName,
+ afterName,
+ afterName_inErraneousTemplate,
+ finished,
+ finishedIncludingFunctionImplementation,
+ size_of_states
+ };
+ enum E_ResultType
+ {
+ result_unknown = 0,
+ result_ignore, /// Used for class and enum declarations and predeclarations and for extern variables and functions.
+ result_variable,
+ result_function
+ };
+
+ typedef ary::cpp::E_Protection E_Protection;
+
+
+ PE_VarFunc(
+ Cpp_PE * i_pParent );
+ ~PE_VarFunc();
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ const std::vector<ary::cpp::Ce_id> &
+ Result_Ids() const;
+ ary::cpp::Type_id Result_FrontType() const;
+ const StringVector &
+ Result_Names() const;
+ E_ResultType Result_CeType() const;
+
+ private:
+ typedef SubPe< PE_VarFunc, PE_Type > SP_Type;
+ typedef SubPeUse< PE_VarFunc, PE_Type > SPU_Type;
+ typedef SubPe< PE_VarFunc, PE_Variable > SP_Variable;
+ typedef SubPeUse< PE_VarFunc, PE_Variable > SPU_Variable;
+ typedef SubPe< PE_VarFunc, PE_Function > SP_Function;
+ typedef SubPeUse< PE_VarFunc, PE_Function > SPU_Function;
+ typedef SubPe< PE_VarFunc, PE_Ignore > SP_Ignore;
+ typedef SubPeUse< PE_VarFunc, PE_Ignore > SPU_Ignore;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_UnknownToken( const char *);
+
+ void SpInit_FunctionStd();
+ void SpInit_FunctionCtor();
+ void SpInit_FunctionDtor();
+ void SpInit_FunctionCastOperator();
+ void SpInit_FunctionNormalOperator();
+ void SpReturn_Type();
+ void SpReturn_Variable();
+ void SpReturn_FunctionStd();
+ void SpReturn_Ignore();
+
+ void On_start_Identifier(const char * i_sText);
+ void On_start_operator(const char * i_sText);
+ void On_start_TypeKey(const char * i_sText);
+ void On_start_virtual(const char * i_sText);
+ void On_start_Tilde(const char * i_sText);
+ void On_start_const(const char * i_sText);
+ void On_start_volatile(const char * i_sText);
+ void On_start_extern(const char * i_sText);
+ void On_start_static(const char * i_sText);
+ void On_start_mutable(const char * i_sText);
+ void On_start_register(const char * i_sText);
+ void On_start_inline(const char * i_sText);
+ void On_start_explicit(const char * i_sText);
+ void On_start_Bracket_Right(const char * i_sText);
+ void On_start_typename(const char * i_sText);
+
+ void On_expectCtor_Bracket_Left(const char * i_sText);
+
+ void On_afterClassDecl_Semicolon(const char * i_sText);
+
+ void On_expectName_Identifier(const char * i_sText);
+ void On_expectName_operator(const char * i_sText);
+ void On_expectName_Bracket_Left(const char * i_sText);
+
+ void On_afterName_ArrayBracket_Left(const char * i_sText);
+ void On_afterName_Bracket_Left(const char * i_sText);
+ void On_afterName_DoubleColon(const char * i_sText);
+ void On_afterName_Semicolon(const char * i_sText);
+ void On_afterName_Comma(const char * i_sText);
+ void On_afterName_Assign(const char * i_sText);
+ void On_afterName_Less(const char * i_sText);
+
+ void On_afterName_inErraneousTemplate_Less(const char * i_sText);
+ void On_afterName_inErraneousTemplate_Greater(const char * i_sText);
+ void On_afterName_inErraneousTemplate_Default(const char * i_sText);
+
+ void On_finished_Semicolon(const char * i_sText);
+ void On_finished_Comma(const char * i_sText);
+ void On_finished_Default(const char * i_sText);
+
+ void On_finishedIncludingFunctionImplementation_Default(const char * i_sText);
+
+ ary::cpp::FunctionFlags
+ CreateFunctionFlags();
+
+ // DATA
+ Dyn< PeStatusArray<PE_VarFunc> >
+ pStati;
+
+ Dyn<SP_Type> pSpType;
+ Dyn<SPU_Type> pSpuType;
+ Dyn<SP_Variable> pSpVariable;
+ Dyn<SPU_Variable> pSpuVariable;
+ Dyn<SP_Function> pSpFunction;
+ Dyn<SPU_Function> pSpuFunctionStd;
+ Dyn<SPU_Function> pSpuFunctionCtor;
+ Dyn<SPU_Function> pSpuFunctionDtor;
+ Dyn<SPU_Function> pSpuFunctionCastOperator;
+ Dyn<SPU_Function> pSpuFunctionNormalOperator;
+ Dyn<SP_Ignore> pSpIgnore;
+ Dyn<SPU_Ignore> pSpuIgnore;
+
+ intt nCounter_TemplateBrackets;
+ bool bInDestructor;
+
+ std::vector<ary::cpp::Ce_id>
+ aResultIds;
+ ary::cpp::Type_id nResultFrontType;
+ E_ResultType eResultType;
+
+ // Pre-Results
+ String sName;
+
+ bool bVirtual;
+ bool bStatic;
+ bool bExtern;
+ bool bExternC;
+ bool bMutable;
+ bool bInline;
+ bool bRegister;
+ bool bExplicit;
+};
+
+
+
+// IMPLEMENTATION
+
+inline const std::vector<ary::cpp::Ce_id> &
+PE_VarFunc::Result_Ids() const
+ { return aResultIds; }
+inline ary::cpp::Type_id
+PE_VarFunc::Result_FrontType() const
+ { return nResultFrontType; }
+inline PE_VarFunc::E_ResultType
+PE_VarFunc::Result_CeType() const
+ { return eResultType; }
+
+
+
+} // namespace cpp
+
+
+
+
+#endif
+
+
+/* // Overview of Stati
+
+Undecided
+---------
+
+start // vor und während storage class specifiern
+ any ->stay
+ operaator ->goto Function
+
+->Typ
+
+expectName
+ Identifier ->stay
+ operator ->goto Function
+
+afterName ->goto Variable or Function
+
+
+
+
+Variable
+--------
+
+start // vor und während storage class specifiern
+
+->Typ
+
+expectName // Typ ist da -> im Falle von '(': notyetimplemented
+afterName
+
+expectSize // after [
+expectFinish
+ // vor ; oder ,
+expectNextVarName // anders als bei expectName kann hier auch * oder & kommen
+
+
+
+
+
+Function
+--------
+
+start // vor und während storage class specifiern
+
+->Typ
+
+expectName // Typ ist da
+expectBracket // Nach Name
+expectParameter // nach ( oder ,
+-> Parameter
+after Parameters // before const, volatile throw or = 0.
+after throw // expect (
+expectException // after (
+after exceptions // = 0 oder ; oder ,
+
+
+expectNextVarName // anders als bei expectName kann hier auch * oder & kommen
+
+
+
+
+
+
+
+*/
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_vari.cxx b/autodoc/source/parser/cpp/pe_vari.cxx
new file mode 100644
index 000000000000..f062c5a1901f
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_vari.cxx
@@ -0,0 +1,189 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "pe_vari.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include "pe_expr.hxx"
+
+
+
+
+namespace cpp {
+
+
+PE_Variable::PE_Variable( Cpp_PE * i_pParent )
+ : Cpp_PE(i_pParent),
+ pStati( new PeStatusArray<PE_Variable> )
+ // pSpExpression,
+ // pSpuArraySizeExpression,
+ // pSpuInitExpression,
+ // sResultSizeExpression,
+ // sResultInitExpression
+{
+ Setup_StatusFunctions();
+
+ pSpExpression = new SP_Expression(*this);
+
+ pSpuArraySizeExpression = new SPU_Expression(*pSpExpression, 0, &PE_Variable::SpReturn_ArraySizeExpression);
+ pSpuInitExpression = new SPU_Expression(*pSpExpression, 0, &PE_Variable::SpReturn_InitExpression);
+}
+
+PE_Variable::~PE_Variable()
+{
+}
+
+void
+PE_Variable::Call_Handler( const cpp::Token & i_rTok )
+{
+ pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text());
+}
+
+void
+PE_Variable::Setup_StatusFunctions()
+{
+ typedef CallFunction<PE_Variable>::F_Tok F_Tok;
+
+ static F_Tok stateF_afterName[] = { &PE_Variable::On_afterName_ArrayBracket_Left,
+ &PE_Variable::On_afterName_Semicolon,
+ &PE_Variable::On_afterName_Comma,
+ &PE_Variable::On_afterName_Assign };
+ static INT16 stateT_afterName[] = { Tid_ArrayBracket_Left,
+ Tid_Semicolon,
+ Tid_Comma,
+ Tid_Assign };
+ static F_Tok stateF_afterSize[] = { &PE_Variable::On_afterSize_ArrayBracket_Right };
+ static INT16 stateT_afterSize[] = { Tid_ArrayBracket_Right };
+ static F_Tok stateF_expectFinish[] = { &PE_Variable::On_expectFinish_Bracket_Right,
+ &PE_Variable::On_expectFinish_Semicolon,
+ &PE_Variable::On_expectFinish_Comma };
+ static INT16 stateT_expectFinish[] = { Tid_Bracket_Right,
+ Tid_Semicolon,
+ Tid_Comma };
+
+ SEMPARSE_CREATE_STATUS(PE_Variable, afterName, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Variable, afterSize, Hdl_SyntaxError);
+ SEMPARSE_CREATE_STATUS(PE_Variable, expectFinish, Hdl_SyntaxError);
+}
+
+void
+PE_Variable::InitData()
+{
+ pStati->SetCur(afterName);
+
+ sResultSizeExpression.clear();
+ sResultInitExpression.clear();
+}
+
+void
+PE_Variable::TransferData()
+{
+ pStati->SetCur(size_of_states);
+}
+
+void
+PE_Variable::Hdl_SyntaxError( const char * i_sText)
+{
+ StdHandlingOfSyntaxError(i_sText);
+}
+
+void
+PE_Variable::SpReturn_ArraySizeExpression()
+{
+ pStati->SetCur(afterSize);
+
+ sResultSizeExpression = pSpuArraySizeExpression->Child().Result_Text();
+}
+
+void
+PE_Variable::SpReturn_InitExpression()
+{
+ pStati->SetCur(expectFinish);
+
+ sResultInitExpression = pSpuInitExpression->Child().Result_Text();
+}
+
+void
+PE_Variable::On_afterName_ArrayBracket_Left(const char *)
+{
+ pSpuArraySizeExpression->Push(done);
+}
+
+void
+PE_Variable::On_afterName_Semicolon(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Variable::On_afterName_Comma(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Variable::On_afterName_Assign(const char *)
+{
+ pSpuInitExpression->Push(done);
+}
+
+void
+PE_Variable::On_afterSize_ArrayBracket_Right(const char *)
+{
+ SetTokenResult(done, stay);
+ pStati->SetCur(afterName);
+}
+
+void
+PE_Variable::On_expectFinish_Semicolon(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Variable::On_expectFinish_Comma(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+void
+PE_Variable::On_expectFinish_Bracket_Right(const char *)
+{
+ SetTokenResult(not_done, pop_success);
+}
+
+
+} // namespace cpp
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pe_vari.hxx b/autodoc/source/parser/cpp/pe_vari.hxx
new file mode 100644
index 000000000000..58370616359a
--- /dev/null
+++ b/autodoc/source/parser/cpp/pe_vari.hxx
@@ -0,0 +1,132 @@
+/* -*- 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 ADC_CPP_PE_VARI_HXX
+#define ADC_CPP_PE_VARI_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cpp_pe.hxx"
+ // COMPONENTS
+#include <semantic/callf.hxx>
+#include <semantic/sub_peu.hxx>
+#include <ary/cpp/c_types4cpp.hxx>
+#include <ary/cpp/c_vfflag.hxx>
+ // PARAMETERS
+
+
+namespace cpp {
+
+class PE_Expression;
+
+
+class PE_Variable : public Cpp_PE
+{
+ public:
+ enum E_State
+ {
+ afterName, //
+ afterSize, // after ]
+ expectFinish, // after InitExpression
+ size_of_states
+ };
+ PE_Variable(
+ Cpp_PE * i_pParent );
+ ~PE_Variable();
+
+ /** @return
+ Bit 0x0001 != 0, if there is a size and
+ bit 0x0002 != 0, if there is an initialisation.
+ */
+ UINT16 Result_Pattern() const;
+ const String & Result_SizeExpression() const;
+ const String & Result_InitExpression() const;
+
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok );
+
+ private:
+ typedef SubPe< PE_Variable, PE_Expression > SP_Expression;
+ typedef SubPeUse< PE_Variable, PE_Expression> SPU_Expression;
+
+ void Setup_StatusFunctions();
+ virtual void InitData();
+ virtual void TransferData();
+ void Hdl_SyntaxError(const char *);
+
+ void SpReturn_ArraySizeExpression();
+ void SpReturn_InitExpression();
+
+ void On_afterName_ArrayBracket_Left(const char * i_sText);
+ void On_afterName_Semicolon(const char * i_sText);
+ void On_afterName_Comma(const char * i_sText);
+ void On_afterName_Assign(const char * i_sText);
+
+ void On_afterSize_ArrayBracket_Right(const char * i_sText);
+
+ void On_expectFinish_Semicolon(const char * i_sText);
+ void On_expectFinish_Comma(const char * i_sText);
+ void On_expectFinish_Bracket_Right(const char * i_sText);
+
+ // DATA
+ Dyn< PeStatusArray<PE_Variable> >
+ pStati;
+
+ Dyn<SP_Expression> pSpExpression;
+ Dyn<SPU_Expression> pSpuArraySizeExpression;
+ Dyn<SPU_Expression> pSpuInitExpression;
+
+ String sResultSizeExpression;
+ String sResultInitExpression;
+};
+
+
+
+// IMPLEMENTATION
+
+
+inline UINT16
+PE_Variable::Result_Pattern() const
+ { return ( sResultSizeExpression.length() > 0 ? 1 : 0 )
+ + ( sResultInitExpression.length() > 0 ? 2 : 0 ); }
+inline const String &
+PE_Variable::Result_SizeExpression() const
+ { return sResultSizeExpression; }
+inline const String &
+PE_Variable::Result_InitExpression() const
+ { return sResultInitExpression; }
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/pev.hxx b/autodoc/source/parser/cpp/pev.hxx
new file mode 100644
index 000000000000..31a873ef7f0f
--- /dev/null
+++ b/autodoc/source/parser/cpp/pev.hxx
@@ -0,0 +1,306 @@
+/* -*- 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 ADC_CPP_PEV_HXX
+#define ADC_CPP_PEV_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tokproct.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+ namespace cpp
+ {
+ class Gate;
+ class InputContext;
+
+ class Namespace;
+ class Class;
+ class Enum;
+ class Typedef;
+ class Function;
+ class Variable;
+ class EnumValue;
+
+ class DefineEntity;
+ }
+
+ class Documentation;
+}
+
+
+namespace cpp
+{
+
+
+class PeEnvironment : protected TokenProcessing_Types
+{
+ public:
+ // INQUIRY
+ virtual ~PeEnvironment() {}
+
+ // OPERATIONS
+ // Token results
+ void SetTokenResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ ParseEnvironment * i_pParseEnv2Push = 0 );
+
+ // Owner stack
+ void OpenNamespace(
+ ary::cpp::Namespace &
+ io_rOpenedNamespace );
+ void OpenExternC(
+ bool i_bOnlyForOneDeclaration = false );
+ void OpenClass(
+ ary::cpp::Class & io_rOpenedClass );
+ void OpenEnum(
+ ary::cpp::Enum & io_rOpenedEnum );
+ void CloseBlock(); /// Handles a '}' on file scope.
+ void CloseClass();
+ void CloseEnum();
+ void SetCurProtection( /// Handles 'public:', 'protected:' and 'private:' on class scope.
+ ary::cpp::E_Protection
+ i_eProtection );
+ void OpenTemplate(
+ const StringVector &
+ i_rParameters );
+ /// Removes parameters from this object.
+ DYN StringVector * Get_CurTemplateParameters();
+ /// Checks, if a template is still open, and if yes, closes it.
+ void Close_OpenTemplate();
+
+ // Special events
+ void Event_Class_FinishedBase(
+ const String & i_sParameterName );
+
+ void Event_Store_Typedef(
+ ary::cpp::Typedef & io_rTypedef );
+ void Event_Store_EnumValue(
+ ary::cpp::EnumValue &
+ io_rEnumValue );
+ void Event_Store_CppDefinition(
+ ary::cpp::DefineEntity &
+ io_rDefinition );
+
+ void Event_EnterFunction_ParameterList();
+ void Event_Function_FinishedParameter(
+ const String & i_sParameterName );
+ void Event_LeaveFunction_ParameterList();
+ void Event_EnterFunction_Implementation();
+ void Event_LeaveFunction_Implementation();
+
+ void Event_Store_Function(
+ ary::cpp::Function &
+ io_rFunction );
+ void Event_Store_Variable(
+ ary::cpp::Variable &
+ io_rVariable );
+ // Error recovery
+ void StartWaitingFor_Recovery();
+
+ // INQUIRY
+ ary::cpp::Gate & AryGate() const;
+ const ary::cpp::InputContext &
+ Context() const;
+ String CurFileName() const;
+ uintt LineCount() const;
+ bool IsWaitingFor_Recovery() const;
+ bool IsExternC() const;
+
+ private:
+ virtual void do_SetTokenResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ ParseEnvironment * i_pParseEnv2Push ) = 0;
+ virtual void do_OpenNamespace(
+ ary::cpp::Namespace &
+ io_rOpenedNamespace ) = 0;
+ virtual void do_OpenExternC(
+ bool i_bOnlyForOneDeclaration ) = 0;
+ virtual void do_OpenClass(
+ ary::cpp::Class & io_rOpenedClass ) = 0;
+ virtual void do_OpenEnum(
+ ary::cpp::Enum & io_rOpenedEnum ) = 0;
+ virtual void do_CloseBlock() = 0;
+ virtual void do_CloseClass() = 0;
+ virtual void do_CloseEnum() = 0;
+ virtual void do_SetCurProtection(
+ ary::cpp::E_Protection
+ i_eProtection ) = 0;
+ virtual void do_OpenTemplate(
+ const StringVector &
+ i_rParameters ) = 0;
+ virtual DYN StringVector *
+ do_Get_CurTemplateParameters() = 0;
+ virtual void do_Close_OpenTemplate() = 0;
+ virtual void do_Event_Class_FinishedBase(
+ const String & i_sBaseName ) = 0;
+
+ virtual void do_Event_Store_Typedef(
+ ary::cpp::Typedef & io_rTypedef ) = 0;
+ virtual void do_Event_Store_EnumValue(
+ ary::cpp::EnumValue &
+ io_rEnumValue ) = 0;
+ virtual void do_Event_Store_CppDefinition(
+ ary::cpp::DefineEntity &
+ io_rDefinition ) = 0;
+ virtual void do_Event_EnterFunction_ParameterList() = 0;
+ virtual void do_Event_Function_FinishedParameter(
+ const String & i_sParameterName ) = 0;
+ virtual void do_Event_LeaveFunction_ParameterList() = 0;
+ virtual void do_Event_EnterFunction_Implementation() = 0;
+ virtual void do_Event_LeaveFunction_Implementation() = 0;
+ virtual void do_Event_Store_Function(
+ ary::cpp::Function &
+ io_rFunction ) = 0;
+ virtual void do_Event_Store_Variable(
+ ary::cpp::Variable &
+ io_rVariable ) = 0;
+ virtual void do_StartWaitingFor_Recovery() = 0;
+ virtual ary::cpp::Gate &
+ inq_AryGate() const = 0;
+ virtual const ary::cpp::InputContext &
+ inq_Context() const = 0;
+ virtual String inq_CurFileName() const = 0;
+ virtual uintt inq_LineCount() const = 0;
+ virtual bool inq_IsWaitingFor_Recovery() const = 0;
+ virtual bool inq_IsExternC() const = 0;
+};
+
+
+
+// IMPLEMENTATION
+
+inline void
+PeEnvironment::SetTokenResult( E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ ParseEnvironment * i_pParseEnv2Push )
+ { do_SetTokenResult(i_eDone, i_eWhat2DoWithEnvStack, i_pParseEnv2Push); }
+inline void
+PeEnvironment::OpenNamespace( ary::cpp::Namespace & io_rOpenedNamespace )
+ { do_OpenNamespace(io_rOpenedNamespace); }
+inline void
+PeEnvironment::OpenExternC( bool i_bOnlyForOneDeclaration )
+ { do_OpenExternC(i_bOnlyForOneDeclaration); }
+inline void
+PeEnvironment::OpenClass( ary::cpp::Class & io_rOpenedClass )
+ { do_OpenClass(io_rOpenedClass); }
+inline void
+PeEnvironment::OpenEnum( ary::cpp::Enum & io_rOpenedEnum )
+ { do_OpenEnum(io_rOpenedEnum); }
+inline void
+PeEnvironment::CloseBlock()
+ { do_CloseBlock(); }
+inline void
+PeEnvironment::CloseClass()
+ { do_CloseClass(); }
+inline void
+PeEnvironment::CloseEnum()
+ { do_CloseEnum(); }
+inline void
+PeEnvironment::SetCurProtection( ary::cpp::E_Protection i_eProtection )
+ { do_SetCurProtection(i_eProtection); }
+inline void
+PeEnvironment::OpenTemplate( const StringVector & i_rParameters )
+ { do_OpenTemplate(i_rParameters); }
+inline DYN StringVector *
+PeEnvironment::Get_CurTemplateParameters()
+ { return do_Get_CurTemplateParameters(); }
+inline void
+PeEnvironment::Close_OpenTemplate()
+ { do_Close_OpenTemplate(); }
+inline void
+PeEnvironment::Event_Class_FinishedBase( const String & i_sBaseName )
+ { do_Event_Class_FinishedBase(i_sBaseName); }
+inline void
+PeEnvironment::Event_Store_Typedef( ary::cpp::Typedef & io_rTypedef )
+ { do_Event_Store_Typedef(io_rTypedef); }
+inline void
+PeEnvironment::Event_Store_EnumValue( ary::cpp::EnumValue & io_rEnumValue )
+ { do_Event_Store_EnumValue(io_rEnumValue); }
+inline void
+PeEnvironment::Event_Store_CppDefinition( ary::cpp::DefineEntity & io_rDefinition )
+ { do_Event_Store_CppDefinition(io_rDefinition); }
+inline void
+PeEnvironment::Event_EnterFunction_ParameterList()
+ { do_Event_EnterFunction_ParameterList(); }
+inline void
+PeEnvironment::Event_Function_FinishedParameter( const String & i_sParameterName )
+ { do_Event_Function_FinishedParameter(i_sParameterName); }
+inline void
+PeEnvironment::Event_LeaveFunction_ParameterList()
+ { do_Event_LeaveFunction_ParameterList(); }
+inline void
+PeEnvironment::Event_EnterFunction_Implementation()
+ { do_Event_EnterFunction_Implementation(); }
+inline void
+PeEnvironment::Event_LeaveFunction_Implementation()
+ { do_Event_LeaveFunction_Implementation(); }
+inline void
+PeEnvironment::Event_Store_Function( ary::cpp::Function & io_rFunction )
+ { do_Event_Store_Function(io_rFunction); }
+inline void
+PeEnvironment::Event_Store_Variable( ary::cpp::Variable & io_rVariable )
+ { do_Event_Store_Variable(io_rVariable); }
+inline void
+PeEnvironment::StartWaitingFor_Recovery()
+ { do_StartWaitingFor_Recovery(); }
+inline ary::cpp::Gate &
+PeEnvironment::AryGate() const
+ { return inq_AryGate(); }
+inline const ary::cpp::InputContext &
+PeEnvironment::Context() const
+ { return inq_Context(); }
+inline String
+PeEnvironment::CurFileName() const
+ { return inq_CurFileName(); }
+inline uintt
+PeEnvironment::LineCount() const
+ { return inq_LineCount(); }
+inline bool
+PeEnvironment::IsWaitingFor_Recovery() const
+ { return inq_IsWaitingFor_Recovery(); }
+inline bool
+PeEnvironment::IsExternC() const
+ { return inq_IsExternC(); }
+
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/preproc.cxx b/autodoc/source/parser/cpp/preproc.cxx
new file mode 100644
index 000000000000..856736b96442
--- /dev/null
+++ b/autodoc/source/parser/cpp/preproc.cxx
@@ -0,0 +1,233 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "preproc.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include "all_toks.hxx"
+#include "defdescr.hxx"
+#include <tools/tkpchars.hxx>
+#include "c_rcode.hxx"
+
+
+namespace cpp
+{
+
+
+PreProcessor::F_TOKENPROC PreProcessor::aTokProcs[PreProcessor::state_MAX] =
+ {
+ &PreProcessor::On_plain,
+ &PreProcessor::On_expect_macro_bracket_left,
+ &PreProcessor::On_expect_macro_param
+ };
+
+
+PreProcessor::PreProcessor()
+ : pCppExplorer(0),
+ pSourceText(0),
+ pCurValidDefines(0),
+ // aTokens,
+ eState(plain),
+ pCurMacro(0),
+ dpCurMacroName(0),
+ // aCurMacroParams,
+ aCurParamText(60000),
+ nBracketInParameterCounter(0)
+ // aBlockedMacroNames
+{
+}
+
+PreProcessor::~PreProcessor()
+{
+}
+
+void
+PreProcessor::AssignPartners( CodeExplorer & o_rCodeExplorer,
+ CharacterSource & o_rCharSource,
+ const MacroMap & i_rCurValidDefines )
+{
+ pCppExplorer = &o_rCodeExplorer;
+ pSourceText = &o_rCharSource;
+ pCurValidDefines = &i_rCurValidDefines;
+}
+
+void
+PreProcessor::Process_Token( cpp::Token & let_drToken )
+{
+ csv_assert(pCppExplorer != 0); // Implies pSourceText and pCurValidDefines.
+
+ (this->*aTokProcs[eState])(let_drToken);
+}
+
+void
+PreProcessor::On_plain( cpp::Token & let_drToken )
+{
+ if ( let_drToken.TypeId() == Tid_Identifier )
+ {
+ if (CheckForDefine(let_drToken))
+ return;
+ }
+
+ pCppExplorer->Process_Token(let_drToken);
+}
+
+void
+PreProcessor::On_expect_macro_bracket_left( cpp::Token & let_drToken )
+{
+ if ( let_drToken.TypeId() == Tid_Bracket_Left )
+ {
+ aCurParamText.seekp(0);
+ eState = expect_macro_param;
+ }
+ else
+ {
+ pCppExplorer->Process_Token(*dpCurMacroName);
+ dpCurMacroName = 0;
+ pCppExplorer->Process_Token(let_drToken);
+ eState = plain;
+ }
+}
+
+void
+PreProcessor::On_expect_macro_param( cpp::Token & let_drToken )
+{
+ if ( let_drToken.TypeId() == Tid_Bracket_Left )
+ nBracketInParameterCounter++;
+ else if ( let_drToken.TypeId() == Tid_Bracket_Right )
+ {
+ if ( nBracketInParameterCounter > 0 )
+ nBracketInParameterCounter--;
+ else
+ {
+ if ( NOT csv::no_str(aCurParamText.c_str()) )
+ {
+ aCurMacroParams.push_back( String(aCurParamText.c_str()) );
+ }
+ csv_assert( aCurMacroParams.size() == pCurMacro->ParamCount() );
+
+ InterpretMacro();
+ eState = plain;
+ return;
+ }
+ }
+ else if ( let_drToken.TypeId() == Tid_Comma AND nBracketInParameterCounter == 0 )
+ {
+ aCurMacroParams.push_back( String (aCurParamText.c_str()) );
+ aCurParamText.seekp(0);
+ return;
+ }
+
+ // KORR_FUTURE:
+ // If in future whitespace is parsed also, that should match exactly and the
+ // safety spaces, " ", here should be removed.
+ aCurParamText << let_drToken.Text() << " ";
+}
+
+bool
+PreProcessor::CheckForDefine( cpp::Token & let_drToken )
+{
+ String sTokenText(let_drToken.Text());
+ pCurMacro = csv::value_from_map( *pCurValidDefines, sTokenText );
+ if (pCurMacro == 0 )
+ return false;
+ for ( StringVector::const_iterator it = aBlockedMacroNames.begin();
+ it != aBlockedMacroNames.end();
+ ++it )
+ {
+ if ( strcmp( (*it).c_str(), let_drToken.Text() ) == 0 )
+ return false;
+ }
+
+ if ( pCurMacro->DefineType() == DefineDescription::type_define )
+ {
+ delete &let_drToken;
+
+ aCurParamText.seekp(0);
+ pCurMacro->GetDefineText(aCurParamText);
+
+ if ( aCurParamText.tellp() > 1 )
+ pSourceText->InsertTextAtCurPos(aCurParamText.c_str());
+ }
+ else // ( pCurMacro->DefineType() == DefineDescription::type_macro )
+ {
+ dpCurMacroName = &let_drToken;
+ eState = expect_macro_bracket_left;
+ csv::erase_container( aCurMacroParams );
+ aCurParamText.seekp(0);
+ nBracketInParameterCounter = 0;
+ } // endif
+
+ return true;
+}
+
+void
+PreProcessor::UnblockMacro( const char * i_sMacroName )
+{
+ for ( StringVector::iterator it = aBlockedMacroNames.begin();
+ it != aBlockedMacroNames.end();
+ ++it )
+ {
+ if ( strcmp( (*it), i_sMacroName ) == 0 )
+ {
+ aBlockedMacroNames.erase(it);
+ break;
+ }
+ } /// end for
+}
+
+void
+PreProcessor::InterpretMacro()
+{
+ aCurParamText.seekp(0);
+ pCurMacro->GetMacroText(aCurParamText, aCurMacroParams);
+
+ if ( NOT csv::no_str(aCurParamText.c_str()) )
+ {
+ aCurParamText.seekp(-1, csv::cur);
+ aCurParamText << " #unblock-" << dpCurMacroName->Text() << " ";
+
+ pSourceText->InsertTextAtCurPos(aCurParamText.c_str());
+ String sCurMacroName(dpCurMacroName->Text());
+ aBlockedMacroNames.insert( aBlockedMacroNames.begin(), sCurMacroName );
+ }
+
+ delete dpCurMacroName;
+ dpCurMacroName = 0;
+ pCurMacro = 0;
+ csv::erase_container(aCurMacroParams);
+ aCurParamText.seekp(0);
+}
+
+
+} // end namespace cpp
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/preproc.hxx b/autodoc/source/parser/cpp/preproc.hxx
new file mode 100644
index 000000000000..0f78e5affb1f
--- /dev/null
+++ b/autodoc/source/parser/cpp/preproc.hxx
@@ -0,0 +1,118 @@
+/* -*- 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 ADC_CPP_PREPROC_HXX
+#define ADC_CPP_PREPROC_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <deque>
+ // PARAMETERS
+
+class CharacterSource;
+
+
+namespace cpp
+{
+
+class Token;
+class CodeExplorer;
+class DefineDescription;
+
+
+class PreProcessor
+{
+ public:
+ typedef std::map< String, DefineDescription* > MacroMap;
+
+ // LIFECYCLE
+ PreProcessor();
+ ~PreProcessor();
+ // OPERATONS
+ void AssignPartners(
+ CodeExplorer & o_rCodeExplorer,
+ CharacterSource & o_rCharSource,
+ const MacroMap & i_rCurValidDefines );
+ void Process_Token(
+ cpp::Token & let_drToken );
+ void UnblockMacro(
+ const char * i_sMacroName );
+ private:
+ public: // Necessary for instantiation of static variable:
+ enum E_State
+ {
+ plain = 0,
+ expect_macro_bracket_left,
+ expect_macro_param,
+ state_MAX
+ };
+ typedef void (PreProcessor::* F_TOKENPROC )(cpp::Token &);
+ void On_plain( cpp::Token & );
+ void On_expect_macro_bracket_left( cpp::Token & );
+ void On_expect_macro_param( cpp::Token & );
+
+ private: // Reprivate again:
+ typedef std::deque< DYN cpp::Token * > TokenQueue;
+ typedef StringVector List_MacroParams;
+
+
+ bool CheckForDefine(
+ cpp::Token & let_drToken );
+ void InterpretMacro();
+
+ // DATA
+ static F_TOKENPROC aTokProcs[state_MAX];
+ // Referenced extern objects
+ CodeExplorer * pCppExplorer;
+ CharacterSource * pSourceText;
+ const MacroMap * pCurValidDefines;
+
+ // internal data
+ TokenQueue aTokens;
+
+ E_State eState;
+
+ DefineDescription * pCurMacro;
+ DYN Token * dpCurMacroName;
+ List_MacroParams aCurMacroParams;
+ csv::StreamStr aCurParamText;
+
+ intt nBracketInParameterCounter;
+ StringVector aBlockedMacroNames;
+};
+
+
+
+} // end namespace cpp
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/prs_cpp.cxx b/autodoc/source/parser/cpp/prs_cpp.cxx
new file mode 100644
index 000000000000..6cda9eab509a
--- /dev/null
+++ b/autodoc/source/parser/cpp/prs_cpp.cxx
@@ -0,0 +1,250 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <cpp/prs_cpp.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/file.hxx>
+#include <ary/ary.hxx>
+#include <ary/cpp/c_gate.hxx>
+#include <autodoc/prs_docu.hxx>
+#include <autodoc/filecoli.hxx>
+#include <autodoc/x_parsing.hxx>
+#include <tools/tkpchars.hxx>
+#include <adc_cl.hxx>
+#include "c_dealer.hxx"
+#include "defdescr.hxx"
+#include "tkp_cpp.hxx"
+
+
+// Helper function
+static bool Local_LoadFile(
+ CharacterSource & o_rTextBuffer,
+ const String & i_rFullFilePath );
+
+
+
+
+namespace cpp
+{
+
+// This class is used for the UDK as workaround for the missing
+// feature of parsing #define s.
+
+class Udk_MacroMap
+{
+ public:
+ typedef std::map< String , DefineDescription* > Data;
+
+ Udk_MacroMap();
+ ~Udk_MacroMap();
+
+ const Data & GetData() const { return aData; }
+
+ private:
+ Data aData;
+};
+
+struct S_RunningData
+{
+ CharacterSource aFileContent;
+ ary::cpp::Gate & rCppGate;
+ Udk_MacroMap aMacros;
+ Distributor aDealer;
+ TokenParser_Cpp aTkp;
+
+ S_RunningData(
+ ary::Repository & o_rRepository,
+ const autodoc::DocumentationParser_Ifc &
+ i_rDocumentationInterpreter );
+};
+
+
+
+
+Cpluplus_Parser::Cpluplus_Parser()
+// : pRunningData
+{
+}
+
+Cpluplus_Parser::~Cpluplus_Parser()
+{
+}
+
+void
+Cpluplus_Parser::Setup( ary::Repository & o_rRepository,
+ const autodoc::DocumentationParser_Ifc & i_rDocumentationInterpreter )
+{
+ pRunningData = new S_RunningData(o_rRepository, i_rDocumentationInterpreter);
+}
+
+void
+Cpluplus_Parser::Run( const autodoc::FileCollector_Ifc & i_rFiles )
+{
+ for ( autodoc::FileCollector_Ifc::const_iterator iter = i_rFiles.Begin();
+ iter != i_rFiles.End();
+ ++iter )
+ {
+ csv::ploc::Path
+ aFilePath(*iter);
+
+ try
+ {
+ if ( NOT Local_LoadFile(pRunningData->aFileContent, *iter) )
+ continue;
+ for ( pRunningData->aTkp.StartNewFile(aFilePath);
+ pRunningData->aTkp.HasMore();
+ pRunningData->aTkp.GetNextToken() )
+ ;
+ }
+ catch (autodoc::X_Parser_Ifc & rX_Parse)
+ {
+ if ( DEBUG_ShowStoring() OR DEBUG_ShowText() )
+ Cerr() << rX_Parse << Endl();
+ }
+ catch (...)
+ {
+ if ( DEBUG_ShowStoring() OR DEBUG_ShowText() )
+ Cerr() << "Error: Unknown exception." << Endl();
+ }
+ } // end for (iter)
+}
+
+S_RunningData::S_RunningData( ary::Repository & o_rRepository,
+ const autodoc::DocumentationParser_Ifc & i_rDocumentationInterpreter )
+ : aFileContent(),
+ rCppGate( o_rRepository.Gate_Cpp() ),
+ aMacros(),
+ aDealer(o_rRepository.Gate_Cpp()),
+ aTkp( * i_rDocumentationInterpreter.Create_DocuContext() )
+{
+ aDealer.AssignPartners( aFileContent,
+ aMacros.GetData() );
+ aTkp.AssignPartners( aFileContent, aDealer );
+}
+
+
+Udk_MacroMap::Udk_MacroMap()
+{
+ String sSAL_CALL("SAL_CALL");
+ String sSAL_CALL_ELLIPSE("SAL_CALL_ELLIPSE");
+ String sSAL_NO_VTABLE("SAL_NO_VTABLE");
+ String sREGISTRY_CALLTYPE("REGISTRY_CALLTYPE");
+ String sSAL_THROW("SAL_THROW");
+ String sSAL_THROW_EXTERN_C("SAL_THROW_EXTERN_C");
+
+ String s__DEF_COMPIMPLHELPER_A("__DEF_COMPIMPLHELPER_A");
+ String s__DEF_COMPIMPLHELPER_B("__DEF_COMPIMPLHELPER_B");
+ String s__DEF_COMPIMPLHELPER("__DEF_COMPIMPLHELPER");
+
+ String s__DEF_IMPLHELPER_PRE("__DEF_IMPLHELPER_PRE");
+ String s__IFC_WRITEOFFSET("__IFC_WRITEOFFSET");
+ String s__DEF_IMPLHELPER_POST("__DEF_IMPLHELPER_POST");
+
+ String sSAL_EXCEPTION_DLLPUBLIC_EXPORT("SAL_EXCEPTION_DLLPUBLIC_EXPORT");
+ String sSAL_EXCEPTION_DLLPRIVATE("SAL_EXCEPTION_DLLPRIVATE");
+
+
+ StringVector aEmpty;
+
+ StringVector aParamsSAL_THROW;
+ aParamsSAL_THROW.push_back( String ("exc") );
+ StringVector aDefSAL_THROW;
+ aDefSAL_THROW.push_back( String ("throw") );
+ aDefSAL_THROW.push_back( String ("exc") );
+
+ StringVector aCompImplHelperParams;
+ aCompImplHelperParams.push_back(String ("N"));
+
+
+ // filling up the list
+
+
+ aData[sSAL_CALL] = new DefineDescription(sSAL_CALL, aEmpty);
+ aData[sSAL_CALL_ELLIPSE] = new DefineDescription(sSAL_CALL_ELLIPSE, aEmpty);
+ aData[sSAL_NO_VTABLE] = new DefineDescription(sSAL_NO_VTABLE, aEmpty);
+ aData[sREGISTRY_CALLTYPE] = new DefineDescription(sREGISTRY_CALLTYPE, aEmpty);
+
+ aData[sSAL_THROW] = new DefineDescription(sSAL_THROW, aParamsSAL_THROW, aDefSAL_THROW);
+ aData[sSAL_THROW_EXTERN_C] = new DefineDescription(sSAL_THROW_EXTERN_C, aEmpty, aEmpty);
+
+ aData[s__DEF_COMPIMPLHELPER_A]
+ = new DefineDescription( s__DEF_COMPIMPLHELPER_A, aCompImplHelperParams, aEmpty);
+ aData[s__DEF_COMPIMPLHELPER_B]
+ = new DefineDescription(s__DEF_COMPIMPLHELPER_B, aCompImplHelperParams, aEmpty);
+ aData[s__DEF_COMPIMPLHELPER]
+ = new DefineDescription(s__DEF_COMPIMPLHELPER, aCompImplHelperParams, aEmpty);
+
+ aData[s__DEF_IMPLHELPER_PRE]
+ = new DefineDescription(s__DEF_IMPLHELPER_PRE, aCompImplHelperParams, aEmpty);
+ aData[s__IFC_WRITEOFFSET]
+ = new DefineDescription(s__IFC_WRITEOFFSET, aCompImplHelperParams, aEmpty);
+ aData[s__DEF_IMPLHELPER_POST]
+ = new DefineDescription(s__DEF_IMPLHELPER_POST, aCompImplHelperParams, aEmpty);
+
+ aData[sSAL_EXCEPTION_DLLPUBLIC_EXPORT]
+ = new DefineDescription(sSAL_EXCEPTION_DLLPUBLIC_EXPORT, aEmpty);
+ aData[sSAL_EXCEPTION_DLLPRIVATE]
+ = new DefineDescription(sSAL_EXCEPTION_DLLPRIVATE, aEmpty);
+}
+
+Udk_MacroMap::~Udk_MacroMap()
+{
+ for ( Data::iterator it = aData.begin(); it != aData.end(); ++it )
+ {
+ delete (*it).second;
+ }
+}
+
+
+
+} // namespace cpp
+
+
+bool
+Local_LoadFile( CharacterSource & o_rTextBuffer,
+ const String & i_rFullFilePath )
+{
+ Cout() << "Parse " << i_rFullFilePath << " ..." << Endl();
+
+ csv::File aFile( i_rFullFilePath, csv::CFM_READ );
+ if (NOT aFile.open())
+ {
+ Cerr() << " could not be opened.\n" << Endl();
+ return false;
+ }
+ o_rTextBuffer.LoadText(aFile);
+ aFile.close();
+ return true;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/sdocdist.hxx b/autodoc/source/parser/cpp/sdocdist.hxx
new file mode 100644
index 000000000000..10e6fd4dced8
--- /dev/null
+++ b/autodoc/source/parser/cpp/sdocdist.hxx
@@ -0,0 +1,161 @@
+/* -*- 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 ADC_CPP_SDOCDIST_HXX
+#define ADC_CPP_SDOCDIST_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cxt2ary.hxx"
+#include <ary/info/docstore.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace cpp
+{
+
+using ary::Documentation;
+
+/** Implementation struct for cpp::ContextForAry.
+*/
+
+struct ContextForAry::S_DocuDistributor : public ary::info::DocuStore
+{
+ public:
+ S_DocuDistributor() : pCurRe(0) {}
+ ~S_DocuDistributor() {}
+
+ void Reset() { pCurRe = 0; pLastStoredDocu = 0; }
+
+ void SetCurrentlyStoredRe(
+ ary::cpp::CppEntity &
+ io_rRe );
+ void Event_LineBreak();
+
+ private:
+ // Interface ary::info::DocuStore
+ virtual void do_Store2CurFile(
+ DYN ary::doc::Node& let_drDocu );
+ virtual void do_Store2CurNamespace(
+ DYN ary::doc::Node& let_drDocu );
+
+ virtual void do_Store2ConnectedDeclaration(
+ DYN ary::doc::Node& let_drDocu );
+
+ virtual void do_Store2Glossary(
+ DYN ary::doc::Node& let_drDocu,
+ const String & i_sExplainedTerm );
+ virtual void do_Store2GlobalTexts(
+ DYN ary::doc::Node& let_drDocu,
+ ary::info::GlobalTextId
+ i_nId );
+ // DATA
+ ary::cpp::CppEntity *
+ pCurRe;
+ Dyn<ary::doc::Node> pLastStoredDocu;
+};
+
+
+// IMPLEMENTATION
+
+/* The implementation is in header, though not all inline, because this file
+ is included in cxt2ary.cxx only!
+*/
+
+
+void
+ContextForAry::
+S_DocuDistributor::SetCurrentlyStoredRe( ary::cpp::CppEntity & io_rRe )
+{
+ pCurRe = &io_rRe;
+ if ( pLastStoredDocu )
+ pCurRe->Set_Docu( *pLastStoredDocu.Release() );
+}
+
+inline void
+ContextForAry::
+S_DocuDistributor::Event_LineBreak()
+{
+ pCurRe = 0;
+}
+
+void
+ContextForAry::
+S_DocuDistributor::do_Store2CurFile( DYN ary::doc::Node & let_drDocu )
+{
+ // KORR_FUTURE
+ delete &let_drDocu;
+}
+
+void
+ContextForAry::
+S_DocuDistributor::do_Store2CurNamespace( DYN ary::doc::Node & let_drDocu )
+{
+ // KORR_FUTURE
+ delete &let_drDocu;
+}
+
+void
+ContextForAry::
+S_DocuDistributor::do_Store2ConnectedDeclaration( DYN ary::doc::Node & let_drDocu )
+{
+ if ( pCurRe != 0 )
+ pCurRe->Set_Docu(let_drDocu);
+ else
+ pLastStoredDocu = &let_drDocu;
+}
+
+void
+ContextForAry::
+S_DocuDistributor::do_Store2Glossary( DYN ary::doc::Node & let_drDocu,
+ const String & // i_sExplainedTerm
+ )
+{
+ // KORR_FUTURE
+ delete &let_drDocu;
+}
+
+void
+ContextForAry::
+S_DocuDistributor::do_Store2GlobalTexts( DYN ary::doc::Node & let_drDocu,
+ ary::info::GlobalTextId // i_nId
+ )
+{
+ // KORR_FUTURE
+ delete &let_drDocu;
+}
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/sfscope.hxx b/autodoc/source/parser/cpp/sfscope.hxx
new file mode 100644
index 000000000000..6f3eaa7b4225
--- /dev/null
+++ b/autodoc/source/parser/cpp/sfscope.hxx
@@ -0,0 +1,72 @@
+/* -*- 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 ADC_CPP_SFSCOPE_HXX
+#define ADC_CPP_SFSCOPE_HXX
+
+// USED SERVICES
+#include "cxt2ary.hxx"
+
+
+
+
+namespace cpp
+{
+
+
+/** Implementation struct for cpp::ContextForAry.
+*/
+struct ContextForAry::S_FileScopeInfo
+{
+ ary::loc::File * pCurFile;
+ uintt nLineCount;
+ Dyn<StringVector> pCurTemplateParameters;
+
+ S_FileScopeInfo();
+};
+
+
+
+
+// IMPLEMENTATION
+inline
+ContextForAry::
+S_FileScopeInfo::S_FileScopeInfo()
+ : pCurFile(0),
+ nLineCount(0),
+ pCurTemplateParameters(0)
+{
+}
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/sownstck.hxx b/autodoc/source/parser/cpp/sownstck.hxx
new file mode 100644
index 000000000000..5c00e40dabf7
--- /dev/null
+++ b/autodoc/source/parser/cpp/sownstck.hxx
@@ -0,0 +1,327 @@
+/* -*- 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 ADC_CPP_SOWNSTCK_HXX
+#define ADC_CPP_SOWNSTCK_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cxt2ary.hxx"
+ // COMPONENTS
+#include <ary/cpp/c_types4cpp.hxx>
+#include <estack.hxx>
+ // PARAMETERS
+#include <ary/cpp/c_namesp.hxx>
+#include <x_parse.hxx>
+
+
+namespace cpp
+{
+
+using ary::cpp::E_Protection;
+
+
+/** Implementation struct for cpp::ContextForAry.
+*/
+struct ContextForAry::S_OwnerStack
+{
+ public:
+ S_OwnerStack();
+ void SetGlobalNamespace(
+ ary::cpp::Namespace &
+ io_rGlobalNamespace );
+ ~S_OwnerStack();
+
+ void Reset();
+
+ void OpenNamespace(
+ ary::cpp::Namespace &
+ io_rOpenedNamespace );
+ void OpenExternC();
+ void OpenClass(
+ ary::cpp::Class & io_rOpenedClass );
+ void OpenEnum(
+ ary::cpp::Enum & io_rOpenedEnum );
+ void CloseBlock();
+ void CloseClass();
+ void CloseEnum();
+ void SetCurProtection(
+ ary::cpp::E_Protection
+ i_eProtection );
+ ary::cpp::Namespace &
+ CurNamespace() const;
+ ary::cpp::Class * CurClass() const;
+ ary::cpp::Enum * CurEnum() const;
+
+ Owner & CurOwner() const;
+ ary::cpp::E_Protection
+ CurProtection() const;
+ bool IsExternC() const { return nExternC > 0; }
+
+ private:
+ typedef std::pair< ary::cpp::Class*, E_Protection > ClassEnv;
+ typedef EStack< ary::cpp::Namespace* > Stack_Namespaces;
+ typedef EStack< ClassEnv > Stack_Classes;
+ typedef ary::cpp::InputContext::Owner Ifc_Owner;
+
+ void SetOwner_2CurNamespace();
+ void SetOwner_2CurClass();
+ void SetOwner_2None();
+
+ // DATA
+ Stack_Namespaces aStack_Namespaces;
+ Stack_Classes aStack_Classes;
+ ary::cpp::Enum * pCurEnum;
+ uintt nExternC; /// This is a number, for the case that extern "C" blocks are nested.
+
+ Dyn<Owner_Namespace>
+ pOwner_Namespace;
+ Dyn<Owner_Class> pOwner_Class;
+ Ifc_Owner * pOwner_Cur;
+};
+
+
+// IMPLEMENTATION
+
+/* The implementation is in header, though not inline, because this file is included
+ in cxt2ary.cxx only!
+*/
+
+inline ary::cpp::Namespace &
+ContextForAry::
+S_OwnerStack::CurNamespace() const
+{
+ csv_assert( aStack_Namespaces.size() > 0 );
+ return *aStack_Namespaces.top();
+}
+
+inline ary::cpp::Class *
+ContextForAry::
+S_OwnerStack::CurClass() const
+{
+ return aStack_Classes.size() > 0
+ ? aStack_Classes.top().first
+ : (ary::cpp::Class *) 0;
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::SetOwner_2CurNamespace()
+{
+ csv_assert( aStack_Namespaces.size() > 0 );
+ pOwner_Cur = pOwner_Namespace.MutablePtr();
+ pOwner_Namespace->SetAnotherNamespace( CurNamespace() );
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::SetOwner_2CurClass()
+{
+ csv_assert( aStack_Classes.size() > 0 );
+ pOwner_Cur = pOwner_Class.MutablePtr();
+ pOwner_Class->SetAnotherClass( *CurClass() );
+}
+
+ContextForAry::
+S_OwnerStack::S_OwnerStack()
+ : // aStack_Namespaces,
+ // aStack_Classes,
+ pCurEnum(0),
+ nExternC(0),
+ pOwner_Namespace(new Owner_Namespace),
+ pOwner_Class(new Owner_Class),
+ pOwner_Cur(0)
+{
+}
+
+void
+ContextForAry::
+S_OwnerStack::Reset()
+{
+ while ( aStack_Namespaces.top()->Owner().IsValid() )
+ aStack_Namespaces.pop();
+ while ( NOT aStack_Classes.empty() )
+ aStack_Classes.pop();
+ pCurEnum = 0;
+ nExternC = 0;
+ SetOwner_2CurNamespace();
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::SetGlobalNamespace( ary::cpp::Namespace & io_rGlobalNamespace )
+{
+ csv_assert( aStack_Namespaces.size() == 0 );
+ aStack_Namespaces.push(&io_rGlobalNamespace);
+ SetOwner_2CurNamespace();
+}
+
+ContextForAry::
+S_OwnerStack::~S_OwnerStack()
+{
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::OpenNamespace( ary::cpp::Namespace & io_rOpenedNamespace )
+{
+ csv_assert( aStack_Namespaces.size() > 0 OR io_rOpenedNamespace.Parent() == 0 );
+ aStack_Namespaces.push(&io_rOpenedNamespace);
+ SetOwner_2CurNamespace();
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::OpenExternC()
+{
+ ++nExternC;
+// SetOwner_2None();
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::SetCurProtection( ary::cpp::E_Protection i_eProtection )
+{
+ csv_assert( aStack_Classes.size() > 0 );
+ aStack_Classes.top().second = i_eProtection;
+}
+
+inline ary::cpp::Enum *
+ContextForAry::
+S_OwnerStack::CurEnum() const
+{
+ return pCurEnum;
+}
+
+
+inline ary::cpp::InputContext::Owner &
+ContextForAry::
+S_OwnerStack::CurOwner() const
+{
+ csv_assert( pOwner_Cur != 0 );
+ return *pOwner_Cur;
+}
+
+inline E_Protection
+ContextForAry::
+S_OwnerStack::CurProtection() const
+{
+ return aStack_Classes.size() > 0
+ ? aStack_Classes.top().second
+ : ary::cpp::PROTECT_global;
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::SetOwner_2None()
+{
+ pOwner_Cur = 0;
+}
+
+void
+ContextForAry::
+S_OwnerStack::OpenClass( ary::cpp::Class & io_rOpenedClass )
+{
+ E_Protection eDefaultProtection
+ = io_rOpenedClass.ClassKey() == ary::cpp::CK_class
+ ? ary::cpp::PROTECT_private
+ : ary::cpp::PROTECT_public;
+ aStack_Classes.push( ClassEnv(&io_rOpenedClass, eDefaultProtection) );
+ SetOwner_2CurClass();
+}
+
+inline void
+ContextForAry::
+S_OwnerStack::OpenEnum( ary::cpp::Enum & io_rOpenedEnum )
+{
+ csv_assert( pCurEnum == 0 );
+ pCurEnum = &io_rOpenedEnum;
+ SetOwner_2None();
+}
+
+void
+ContextForAry::
+S_OwnerStack::CloseBlock()
+{
+ if (nExternC > 0)
+ {
+ --nExternC;
+ }
+ else
+ {
+ // csv_assert( aStack_Classes.size() == 0 );
+ if ( aStack_Classes.size() > 0 )
+ throw X_Parser(X_Parser::x_UnspecifiedSyntaxError, "", String::Null_(), 0);
+
+ csv_assert( pCurEnum == 0 );
+ aStack_Namespaces.pop();
+
+ // csv_assert( aStack_Namespaces.size() > 0 );
+ if( aStack_Namespaces.size() == 0 )
+ throw X_Parser(X_Parser::x_UnspecifiedSyntaxError, "", String::Null_(), 0);
+
+ }
+ SetOwner_2CurNamespace();
+}
+
+void
+ContextForAry::
+S_OwnerStack::CloseClass()
+{
+ // csv_assert( aStack_Classes.size() > 0 );
+ if ( aStack_Classes.size() == 0 )
+ throw X_Parser(X_Parser::x_UnspecifiedSyntaxError, "", String::Null_(), 0);
+
+ aStack_Classes.pop();
+ if ( aStack_Classes.size() > 0 )
+ SetOwner_2CurClass();
+ else
+ SetOwner_2CurNamespace();
+}
+
+void
+ContextForAry::
+S_OwnerStack::CloseEnum()
+{
+ csv_assert( pCurEnum != 0 );
+ pCurEnum = 0;
+ if ( aStack_Classes.size() > 0 )
+ SetOwner_2CurClass();
+ else
+ SetOwner_2CurNamespace();
+}
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/srecover.hxx b/autodoc/source/parser/cpp/srecover.hxx
new file mode 100644
index 000000000000..8408604db3fd
--- /dev/null
+++ b/autodoc/source/parser/cpp/srecover.hxx
@@ -0,0 +1,134 @@
+/* -*- 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 ADC_CPP_SRECOVER_HXX
+#define ADC_CPP_SRECOVER_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "cxt2ary.hxx"
+#include <ary/info/docstore.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace cpp
+{
+
+/** Implementation struct for cpp::ContextForAry.
+*/
+struct ContextForAry::S_RecoveryGuard
+{
+ public:
+ S_RecoveryGuard();
+ ~S_RecoveryGuard();
+
+ void Reset() { bIsWithinRecovery = false; nBlockBracketsCounter = 0; }
+
+ void StartWaitingFor_Recovery();
+
+ void Hdl_SwBracketOpen();
+ void Hdl_SwBracketClose();
+ void Hdl_Semicolon();
+
+ bool IsWithinRecovery() const;
+
+ private:
+ // DATA
+ bool bIsWithinRecovery;
+ intt nBlockBracketsCounter;
+};
+
+
+
+// IMPLEMENTATION
+
+/* The implementation is in header, though not all inline, because this file
+ is included in cxt2ary.cxx only!
+*/
+
+ContextForAry::
+S_RecoveryGuard::S_RecoveryGuard()
+ : bIsWithinRecovery(false),
+ nBlockBracketsCounter(0)
+{
+}
+
+ContextForAry::
+S_RecoveryGuard::~S_RecoveryGuard()
+{
+}
+
+inline void
+ContextForAry::
+S_RecoveryGuard::StartWaitingFor_Recovery()
+{
+ bIsWithinRecovery = true;
+ nBlockBracketsCounter = 0;
+}
+
+void
+ContextForAry::
+S_RecoveryGuard::Hdl_SwBracketOpen()
+{
+ if ( bIsWithinRecovery )
+ ++nBlockBracketsCounter;
+}
+
+void
+ContextForAry::
+S_RecoveryGuard::Hdl_SwBracketClose()
+{
+ if ( bIsWithinRecovery )
+ --nBlockBracketsCounter;
+}
+
+inline void
+ContextForAry::
+S_RecoveryGuard::Hdl_Semicolon()
+{
+ if (bIsWithinRecovery AND nBlockBracketsCounter == 0)
+ bIsWithinRecovery = false;
+}
+
+inline bool
+ContextForAry::
+S_RecoveryGuard::IsWithinRecovery() const
+{
+ return bIsWithinRecovery;
+}
+
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/tkp_cpp.cxx b/autodoc/source/parser/cpp/tkp_cpp.cxx
new file mode 100644
index 000000000000..ffe0ca26dfdb
--- /dev/null
+++ b/autodoc/source/parser/cpp/tkp_cpp.cxx
@@ -0,0 +1,94 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "tkp_cpp.hxx"
+
+// NOT FULLY DECLARED SERVICES
+#include "cx_c_std.hxx"
+#include "c_dealer.hxx"
+
+
+namespace cpp {
+
+
+
+
+TokenParser_Cpp::TokenParser_Cpp( DYN autodoc::TkpDocuContext & let_drDocuContext )
+ : pBaseContext( new Context_CppStd( let_drDocuContext ) ),
+ pCurContext(0),
+ pDealer(0),
+ pCharacterSource(0)
+{
+ SetStartContext();
+}
+
+TokenParser_Cpp::~TokenParser_Cpp()
+{
+}
+
+void
+TokenParser_Cpp::AssignPartners( CharacterSource & io_rCharacterSource,
+ cpp::Distributor & o_rDealer )
+{
+ pDealer = &o_rDealer;
+ pBaseContext->AssignDealer(o_rDealer);
+ pCharacterSource = &io_rCharacterSource;
+}
+
+void
+TokenParser_Cpp::StartNewFile( const csv::ploc::Path & i_file )
+{
+ csv_assert(pDealer != 0);
+ pDealer->StartNewFile(i_file);
+
+ csv_assert(pCharacterSource != 0);
+ Start(*pCharacterSource);
+}
+
+void
+TokenParser_Cpp::SetStartContext()
+{
+ pCurContext = pBaseContext.Ptr();
+}
+
+void
+TokenParser_Cpp::SetCurrentContext( TkpContext & io_rContext )
+{
+ pCurContext = &io_rContext;
+}
+
+TkpContext &
+TokenParser_Cpp::CurrentContext()
+{
+ return *pCurContext;
+}
+
+} // namespace cpp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/tkp_cpp.hxx b/autodoc/source/parser/cpp/tkp_cpp.hxx
new file mode 100644
index 000000000000..70dfab605c6f
--- /dev/null
+++ b/autodoc/source/parser/cpp/tkp_cpp.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ADC_TKP_CPP_HXX
+#define ADC_TKP_CPP_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkp.hxx>
+ // COMPONENTS
+ // PARAMETRS
+
+namespace autodoc
+{
+ class TkpDocuContext;
+}
+
+namespace csv
+{
+ namespace ploc
+ {
+ class Path;
+ class DirectoryChain;
+ }
+}
+
+
+namespace cpp {
+
+class Context_CppStd;
+class DefineDescription;
+class Distributor;
+
+
+/** This is a TokenParser which is able to parse tokens from
+ C++ source code.
+*/
+class TokenParser_Cpp : public TokenParser
+{
+ public:
+ typedef std::map< String, DefineDescription* > MacroMap;
+
+ // LIFECYCLE
+ TokenParser_Cpp(
+ DYN autodoc::TkpDocuContext &
+ let_drDocuContext );
+ virtual ~TokenParser_Cpp();
+
+ // OPERATIONS
+ void AssignPartners(
+ CharacterSource & io_rCharacterSource,
+ cpp::Distributor & o_rDealer );
+ void StartNewFile(
+ const csv::ploc::Path &
+ i_file );
+ private:
+ virtual void SetStartContext();
+ virtual void SetCurrentContext(
+ TkpContext & io_rContext );
+ virtual TkpContext &
+ CurrentContext();
+ // DATA
+ Dyn<Context_CppStd> pBaseContext;
+ TkpContext * pCurContext;
+ Distributor * pDealer;
+ CharacterSource * pCharacterSource;
+};
+
+
+} // namespace cpp
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/cpp/tokintpr.hxx b/autodoc/source/parser/cpp/tokintpr.hxx
new file mode 100644
index 000000000000..f526ba00ee06
--- /dev/null
+++ b/autodoc/source/parser/cpp/tokintpr.hxx
@@ -0,0 +1,120 @@
+/* -*- 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 ADC_CPP_TOKINTPR_HXX
+#define ADC_CPP_TOKINTPR_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <all_toks.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace cpp {
+
+
+
+#define DECL_TOK_HANDLER(token) \
+ void Hdl_##token( \
+ const Tok_##token & i_rTok ) { Call_Handler(i_rTok); }
+
+class TokenInterpreter
+{
+ public:
+ virtual ~TokenInterpreter() {}
+
+ DECL_TOK_HANDLER(Identifier)
+ DECL_TOK_HANDLER(Operator)
+ DECL_TOK_HANDLER(operator)
+ DECL_TOK_HANDLER(class)
+ DECL_TOK_HANDLER(struct)
+ DECL_TOK_HANDLER(union)
+ DECL_TOK_HANDLER(enum)
+ DECL_TOK_HANDLER(typedef)
+ DECL_TOK_HANDLER(public)
+ DECL_TOK_HANDLER(protected)
+ DECL_TOK_HANDLER(private)
+ DECL_TOK_HANDLER(template)
+ DECL_TOK_HANDLER(virtual)
+ DECL_TOK_HANDLER(friend)
+ DECL_TOK_HANDLER(Tilde)
+ DECL_TOK_HANDLER(const)
+ DECL_TOK_HANDLER(volatile)
+ DECL_TOK_HANDLER(extern)
+ DECL_TOK_HANDLER(static)
+ DECL_TOK_HANDLER(mutable)
+ DECL_TOK_HANDLER(register)
+ DECL_TOK_HANDLER(inline)
+ DECL_TOK_HANDLER(explicit)
+ DECL_TOK_HANDLER(namespace)
+ DECL_TOK_HANDLER(using)
+ DECL_TOK_HANDLER(throw)
+ DECL_TOK_HANDLER(SwBracket_Left)
+ DECL_TOK_HANDLER(SwBracket_Right)
+ DECL_TOK_HANDLER(ArrayBracket_Left)
+ DECL_TOK_HANDLER(ArrayBracket_Right)
+ DECL_TOK_HANDLER(Bracket_Left)
+ DECL_TOK_HANDLER(Bracket_Right)
+ DECL_TOK_HANDLER(DoubleColon)
+ DECL_TOK_HANDLER(Semicolon)
+ DECL_TOK_HANDLER(Comma)
+ DECL_TOK_HANDLER(Colon)
+ DECL_TOK_HANDLER(Assign)
+ DECL_TOK_HANDLER(Less)
+ DECL_TOK_HANDLER(Greater)
+ DECL_TOK_HANDLER(Asterix)
+ DECL_TOK_HANDLER(AmpersAnd)
+ DECL_TOK_HANDLER(Ellipse)
+ DECL_TOK_HANDLER(typename)
+ DECL_TOK_HANDLER(DefineName)
+ DECL_TOK_HANDLER(MacroName)
+ DECL_TOK_HANDLER(MacroParameter)
+ DECL_TOK_HANDLER(PreProDefinition)
+ DECL_TOK_HANDLER(BuiltInType)
+ DECL_TOK_HANDLER(TypeSpecializer)
+ DECL_TOK_HANDLER(Constant)
+
+ protected:
+ virtual void Call_Handler(
+ const cpp::Token & i_rTok ) = 0;
+};
+
+#undef DECL_TOK_HANDLER
+
+
+// IMPLEMENTATION
+
+
+} // namespace cpp
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/a_rdocu.hxx b/autodoc/source/parser/inc/adoc/a_rdocu.hxx
new file mode 100644
index 000000000000..bf49609f29c4
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/a_rdocu.hxx
@@ -0,0 +1,73 @@
+/* -*- 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 ADC_ADOC_A_RDOCU_HXX
+#define ADC_ADOC_A_RDOCU_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+class DocuDealer;
+
+
+
+namespace adoc
+{
+
+class Token;
+class Adoc_PE;
+
+class DocuExplorer
+
+{
+ public:
+ DocuExplorer();
+ ~DocuExplorer();
+ void StartNewFile(
+ DocuDealer & o_rDocuDistributor );
+
+ void Process_Token(
+ DYN adoc::Token & let_drToken );
+ private:
+ DocuDealer * pDocuDistributor;
+ Dyn<Adoc_PE> pPE;
+ bool bIsPassedFirstDocu;
+};
+
+
+} // namespace adoc
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/adoc_tok.hxx b/autodoc/source/parser/inc/adoc/adoc_tok.hxx
new file mode 100644
index 000000000000..fa4a143eaf73
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/adoc_tok.hxx
@@ -0,0 +1,64 @@
+/* -*- 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 ADC_ADOC_ADOC_TOK_HXX
+#define ADC_ADOC_ADOC_TOK_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/token.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace adoc {
+
+
+class TokenInterpreter;
+
+
+class Token : public TextToken
+{
+ public:
+ // LIFECYCLE
+ virtual ~Token() {}
+
+ // OPERATIONS
+ virtual void DealOut(
+ ::TokenDealer & o_rDealer );
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const = 0;
+};
+
+
+} // namespace adoc
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/atokdeal.hxx b/autodoc/source/parser/inc/adoc/atokdeal.hxx
new file mode 100644
index 000000000000..db2765f54e56
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/atokdeal.hxx
@@ -0,0 +1,62 @@
+/* -*- 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 ADC_ADOC_ATOKDEAL_HXX
+#define ADC_ADOC_ATOKDEAL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tokdeal.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+namespace adoc
+{
+
+class Token;
+
+class TokenDealer : virtual public ::TokenDealer
+{
+ public:
+
+ virtual void Deal_AdcDocu(
+ adoc::Token & let_drToken ) = 0;
+};
+
+
+} // namespace adoc
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/cx_a_std.hxx b/autodoc/source/parser/inc/adoc/cx_a_std.hxx
new file mode 100644
index 000000000000..c9a6c1443b12
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/cx_a_std.hxx
@@ -0,0 +1,107 @@
+/* -*- 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 ADC_ADOC_CX_A_STD_HXX
+#define ADC_ADOC_CX_A_STD_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcontx.hxx>
+ // COMPONENTS
+#include <tokens/tkpstama.hxx>
+ // PARAMETERS
+
+class TextToken;
+
+
+namespace adoc {
+
+class Cx_LineStart;
+class Cx_CheckStar;
+class Cx_AtTagCompletion;
+
+
+/**
+@descr
+*/
+class Context_AdocStd : public autodoc::TkpDocuContext,
+ private StateMachineContext
+{
+ public:
+ // LIFECYCLE
+ Context_AdocStd();
+ virtual void SetParentContext(
+ TkpContext & io_rParentContext,
+ const char * i_sMultiLineEndToken );
+ ~Context_AdocStd();
+
+ // OPERATIONS
+ virtual void AssignDealer(
+ TokenDealer & o_rDealer );
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual bool PassNewToken();
+ virtual void SetMode_IsMultiLine(
+ bool i_bTrue );
+ // INQUIRY
+ virtual TkpContext &
+ FollowUpContext();
+ private:
+ // SERVICE FUNCTIONS
+ virtual void PerformStatusFunction(
+ uintt i_nStatusSignal,
+ F_CRTOK i_fTokenCreateFunction,
+ CharacterSource & io_rText );
+
+ void SetupStateMachine();
+
+ // DATA
+ StateMachine aStateMachine;
+ TokenDealer * pDealer;
+
+ // Contexts
+ TkpContext * pParentContext;
+ TkpContext * pFollowUpContext;
+ Dyn<Cx_LineStart> pCx_LineStart;
+ Dyn<Cx_CheckStar> pCx_CheckStar;
+ Dyn<Cx_AtTagCompletion>
+ pCx_AtTagCompletion;
+
+ // Temporary data, used during ReadCharChain()
+ Dyn<TextToken> pNewToken;
+ bool bIsMultiline;
+};
+
+
+} // namespace adoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/cx_a_sub.hxx b/autodoc/source/parser/inc/adoc/cx_a_sub.hxx
new file mode 100644
index 000000000000..43fe2fca8449
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/cx_a_sub.hxx
@@ -0,0 +1,148 @@
+/* -*- 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 ADC_ADOC_CX_A_SUB_HXX
+#define ADC_ADOC_CX_A_SUB_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcontx.hxx>
+ // COMPONENTS
+#include <tokens/tkpstama.hxx>
+ // PARAMETERS
+#include <tokens/token.hxx>
+
+
+namespace adoc {
+
+
+
+
+class Cx_LineStart : public TkpContext
+{
+ public:
+ Cx_LineStart(
+ TkpContext & i_rFollowUpContext );
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual bool PassNewToken();
+ virtual TkpContext &
+ FollowUpContext();
+
+ void SetCurToken(
+ TextToken::F_CRTOK i_fTokenCreateFunction )
+ { fCur_TokenCreateFunction = i_fTokenCreateFunction; }
+ void AssignDealer(
+ TokenDealer & o_rDealer )
+ { pDealer = &o_rDealer; }
+ private:
+ // DATA
+ TokenDealer * pDealer;
+ TkpContext * pFollowUpContext;
+
+ Dyn<TextToken> pNewToken;
+
+ TextToken::F_CRTOK fCur_TokenCreateFunction;
+};
+
+
+/**
+@descr
+*/
+
+class Cx_CheckStar : public TkpContext
+{
+ public:
+ // LIFECYCLE
+ Cx_CheckStar(
+ TkpContext & i_rFollowUpContext );
+ void Set_End_FollowUpContext(
+ TkpContext & i_rEnd_FollowUpContext )
+ { pEnd_FollowUpContext = &i_rEnd_FollowUpContext; }
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual bool PassNewToken();
+
+ void SetCanBeEnd(
+ bool i_bCanBeEnd )
+ { bCanBeEnd = i_bCanBeEnd; }
+ virtual TkpContext &
+ FollowUpContext();
+ void AssignDealer(
+ TokenDealer & o_rDealer )
+ { pDealer = &o_rDealer; }
+ private:
+ // DATA
+ TokenDealer * pDealer;
+ TkpContext * pFollowUpContext;
+ TkpContext * pEnd_FollowUpContext;
+
+ Dyn<TextToken> pNewToken;
+
+ bool bCanBeEnd;
+ bool bEndTokenFound;
+};
+
+
+class Cx_AtTagCompletion : public TkpContext
+{
+ public:
+ Cx_AtTagCompletion(
+ TkpContext & i_rFollowUpContext );
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual bool PassNewToken();
+ virtual TkpContext &
+ FollowUpContext();
+
+ void SetCurToken(
+ TextToken::F_CRTOK i_fTokenCreateFunction )
+ { fCur_TokenCreateFunction = i_fTokenCreateFunction; }
+ void AssignDealer(
+ TokenDealer & o_rDealer )
+ { pDealer = &o_rDealer; }
+ private:
+ // DATA
+ TokenDealer * pDealer;
+ TkpContext * pFollowUpContext;
+
+ Dyn<TextToken> pNewToken;
+
+ TextToken::F_CRTOK fCur_TokenCreateFunction;
+};
+
+
+} // namespace adoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/docu_pe.hxx b/autodoc/source/parser/inc/adoc/docu_pe.hxx
new file mode 100644
index 000000000000..ef49b2594c79
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/docu_pe.hxx
@@ -0,0 +1,195 @@
+/* -*- 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 ADC_DOCU_PE_HXX
+#define ADC_DOCU_PE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <adoc/tokintpr.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+namespace doc
+{
+ class OldCppDocu;
+}
+namespace info
+{
+ class AtTag;
+}
+}
+
+
+
+namespace adoc
+{
+
+
+class Adoc_PE : public TokenInterpreter
+{
+ public:
+ Adoc_PE();
+ ~Adoc_PE();
+
+ virtual void Hdl_at_std(
+ const Tok_at_std & i_rTok );
+ virtual void Hdl_at_base(
+ const Tok_at_base & i_rTok );
+ virtual void Hdl_at_exception(
+ const Tok_at_exception &
+ i_rTok );
+ virtual void Hdl_at_impl(
+ const Tok_at_impl & i_rTok );
+ virtual void Hdl_at_key(
+ const Tok_at_key & i_rTok );
+ virtual void Hdl_at_param(
+ const Tok_at_param &
+ i_rTok );
+ virtual void Hdl_at_see(
+ const Tok_at_see & i_rTok );
+ virtual void Hdl_at_template(
+ const Tok_at_template &
+ i_rTok );
+ virtual void Hdl_at_interface(
+ const Tok_at_interface &
+ i_rTok );
+ virtual void Hdl_at_internal(
+ const Tok_at_internal &
+ i_rTok );
+ virtual void Hdl_at_obsolete(
+ const Tok_at_obsolete &
+ i_rTok );
+ virtual void Hdl_at_module(
+ const Tok_at_module &
+ i_rTok );
+ virtual void Hdl_at_file(
+ const Tok_at_file & i_rTok );
+ virtual void Hdl_at_gloss(
+ const Tok_at_gloss &
+ i_rTok );
+ virtual void Hdl_at_global(
+ const Tok_at_global &
+ i_rTok );
+ virtual void Hdl_at_include(
+ const Tok_at_include &
+ i_rTok );
+ virtual void Hdl_at_label(
+ const Tok_at_label &
+ i_rTok );
+ virtual void Hdl_at_since(
+ const Tok_at_since &
+ i_rTok );
+ virtual void Hdl_at_HTML(
+ const Tok_at_HTML &
+ i_rTok );
+ virtual void Hdl_at_NOHTML(
+ const Tok_at_NOHTML &
+ i_rTok );
+
+ virtual void Hdl_DocWord(
+ const Tok_DocWord & i_rTok );
+
+ virtual void Hdl_Whitespace(
+ const Tok_Whitespace &
+ i_rTok );
+ virtual void Hdl_LineStart(
+ const Tok_LineStart &
+ i_rTok );
+ virtual void Hdl_Eol(
+ const Tok_Eol & i_rTok );
+
+ virtual void Hdl_EoDocu(
+ const Tok_EoDocu & i_rTok );
+
+
+ DYN ary::doc::OldCppDocu *
+ ReleaseJustParsedDocu();
+
+ bool IsComplete() const;
+
+ private:
+ void InstallAtTag(
+ DYN ary::info::AtTag *
+ let_dpTag,
+ bool i_bImplicit = false ); /// True for implicit @short and @descr.
+ ary::doc::OldCppDocu &
+ CurDocu();
+ ary::info::AtTag & CurAtTag();
+ bool UsesHtmlInDocuText();
+
+ void RenameCurShortTag();
+ void FinishCurShortTag();
+
+
+ // DATA
+ enum E_TagState
+ {
+ ts_new,
+ ts_std
+ };
+ enum E_DocuState
+ {
+ ds_wait_for_short = 0,
+ ds_in_short,
+ ds_1newline_after_short,
+ ds_in_descr,
+ ds_std
+ };
+
+ Dyn<ary::doc::OldCppDocu>
+ pCurDocu;
+ ary::info::AtTag * pCurAtTag;
+ uintt nLineCountInDocu;
+ UINT8 nCurSpecialMeaningTokens;
+ UINT8 nCurSubtractFromLineStart;
+ E_TagState eCurTagState;
+ E_DocuState eDocuState;
+ bool bIsComplete;
+ bool bUsesHtmlInDocuText;
+};
+
+
+// IMPLEMENTATION
+inline bool
+Adoc_PE::IsComplete() const
+{
+ return bIsComplete;
+}
+
+
+
+
+} // namespace adoc
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/prs_adoc.hxx b/autodoc/source/parser/inc/adoc/prs_adoc.hxx
new file mode 100644
index 000000000000..5326552dd017
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/prs_adoc.hxx
@@ -0,0 +1,57 @@
+/* -*- 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 ADC_ADOC_PRS_ADOC_HXX
+#define ADC_ADOC_PRS_ADOC_HXX
+
+
+
+#include <autodoc/prs_docu.hxx>
+
+namespace adoc
+{
+
+
+class DocuParser_AutodocStyle : public autodoc::DocumentationParser_Ifc
+{
+ public:
+ DocuParser_AutodocStyle();
+ virtual ~DocuParser_AutodocStyle();
+
+ virtual DYN autodoc::TkpDocuContext *
+ Create_DocuContext() const;
+};
+
+
+
+} // namespace adoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/tk_attag.hxx b/autodoc/source/parser/inc/adoc/tk_attag.hxx
new file mode 100644
index 000000000000..11c21124e67d
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/tk_attag.hxx
@@ -0,0 +1,100 @@
+/* -*- 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 ADC_ADOC_TK_ATTAG_HXX
+#define ADC_ADOC_TK_ATTAG_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <adoc/adoc_tok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/info/inftypes.hxx>
+
+namespace adoc {
+
+typedef ary::info::E_AtTagId E_AtTagId;
+
+
+class Tok_at_std : public Token
+{
+ public:
+ Tok_at_std(
+ E_AtTagId i_nId )
+ : eId(i_nId) {}
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+ E_AtTagId Id() const { return eId; }
+
+ private:
+ E_AtTagId eId;
+};
+
+
+#define DECL_TOKEN_CLASS(name) \
+class Tok_##name : public Token \
+{ public: \
+ virtual void Trigger( \
+ TokenInterpreter & io_rInterpreter ) const; \
+ virtual const char * \
+ Text() const; \
+}
+
+
+DECL_TOKEN_CLASS(at_base);
+DECL_TOKEN_CLASS(at_exception);
+DECL_TOKEN_CLASS(at_impl);
+DECL_TOKEN_CLASS(at_key);
+DECL_TOKEN_CLASS(at_param);
+DECL_TOKEN_CLASS(at_see);
+DECL_TOKEN_CLASS(at_template);
+DECL_TOKEN_CLASS(at_interface);
+DECL_TOKEN_CLASS(at_internal);
+DECL_TOKEN_CLASS(at_obsolete);
+DECL_TOKEN_CLASS(at_module);
+DECL_TOKEN_CLASS(at_file);
+DECL_TOKEN_CLASS(at_gloss);
+DECL_TOKEN_CLASS(at_global);
+DECL_TOKEN_CLASS(at_include);
+DECL_TOKEN_CLASS(at_label);
+DECL_TOKEN_CLASS(at_HTML);
+DECL_TOKEN_CLASS(at_NOHTML);
+DECL_TOKEN_CLASS(at_since);
+
+
+#undef DECL_TOKEN_CLASS
+
+
+
+} // namespace adoc
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/tk_docw.hxx b/autodoc/source/parser/inc/adoc/tk_docw.hxx
new file mode 100644
index 000000000000..fa53d8968826
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/tk_docw.hxx
@@ -0,0 +1,119 @@
+/* -*- 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 ADC_ADOC_TK_DOCW_HXX
+#define ADC_ADOC_TK_DOCW_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <adoc/adoc_tok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace adoc {
+
+
+class Tok_DocWord : public Token
+{
+ public:
+ // Spring and Fall
+ Tok_DocWord(
+ const char * i_sText )
+ : sText(i_sText) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ uintt Length() const { return sText.length(); }
+
+ private:
+ // DATA
+ String sText;
+};
+
+class Tok_Whitespace : public Token
+{
+ public:
+ // Spring and Fall
+ Tok_Whitespace(
+ UINT8 i_nSize )
+ : nSize(i_nSize) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ UINT8 Size() const { return nSize; }
+
+ private:
+ // DATA
+ UINT8 nSize;
+};
+
+class Tok_LineStart : public Token
+{
+ public:
+ // Spring and Fall
+ Tok_LineStart(
+ UINT8 i_nSize )
+ : nSize(i_nSize) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ UINT8 Size() const { return nSize; }
+
+ private:
+ // DATA
+ UINT8 nSize;
+};
+
+class Tok_Eol : public Token
+{ public:
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+};
+
+class Tok_EoDocu : public Token
+{ public:
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+};
+
+
+} // namespace adoc
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/adoc/tokintpr.hxx b/autodoc/source/parser/inc/adoc/tokintpr.hxx
new file mode 100644
index 000000000000..f24b2ea80a97
--- /dev/null
+++ b/autodoc/source/parser/inc/adoc/tokintpr.hxx
@@ -0,0 +1,119 @@
+/* -*- 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 ADC_ADOC_TOKINTPR_HXX
+#define ADC_ADOC_TOKINTPR_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace adoc {
+
+
+class Tok_at_std;
+class Tok_at_base;
+class Tok_at_exception;
+class Tok_at_impl;
+class Tok_at_key;
+class Tok_at_param;
+class Tok_at_see;
+class Tok_at_template;
+class Tok_at_interface;
+class Tok_at_internal;
+class Tok_at_obsolete;
+class Tok_at_module;
+class Tok_at_file;
+class Tok_at_gloss;
+class Tok_at_global;
+class Tok_at_include;
+class Tok_at_label;
+class Tok_at_since;
+class Tok_at_HTML; // Sets default to: Use HTML in DocuText
+class Tok_at_NOHTML; // Sets default to: Don't use HTML in DocuText
+
+class Tok_DocWord;
+class Tok_LineStart;
+class Tok_Whitespace;
+class Tok_Eol;
+class Tok_EoDocu;
+
+
+#define DECL_TOK_HANDLER(token) \
+ virtual void Hdl_##token( \
+ const Tok_##token & i_rTok ) = 0
+
+
+
+class TokenInterpreter
+{
+ public:
+ virtual ~TokenInterpreter() {}
+
+ DECL_TOK_HANDLER(at_std);
+ DECL_TOK_HANDLER(at_base);
+ DECL_TOK_HANDLER(at_exception);
+ DECL_TOK_HANDLER(at_impl);
+ DECL_TOK_HANDLER(at_key);
+ DECL_TOK_HANDLER(at_param);
+ DECL_TOK_HANDLER(at_see);
+ DECL_TOK_HANDLER(at_template);
+ DECL_TOK_HANDLER(at_interface);
+ DECL_TOK_HANDLER(at_internal);
+ DECL_TOK_HANDLER(at_obsolete);
+ DECL_TOK_HANDLER(at_module);
+ DECL_TOK_HANDLER(at_file);
+ DECL_TOK_HANDLER(at_gloss);
+ DECL_TOK_HANDLER(at_global);
+ DECL_TOK_HANDLER(at_include);
+ DECL_TOK_HANDLER(at_label);
+ DECL_TOK_HANDLER(at_since);
+ DECL_TOK_HANDLER(at_HTML);
+ DECL_TOK_HANDLER(at_NOHTML);
+ DECL_TOK_HANDLER(DocWord);
+ DECL_TOK_HANDLER(Whitespace);
+ DECL_TOK_HANDLER(LineStart);
+ DECL_TOK_HANDLER(Eol);
+ DECL_TOK_HANDLER(EoDocu);
+};
+
+#undef DECL_TOK_HANDLER
+
+
+// IMPLEMENTATION
+
+
+} // namespace adoc
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/cpp/ctokdeal.hxx b/autodoc/source/parser/inc/cpp/ctokdeal.hxx
new file mode 100644
index 000000000000..9d1f59c08e53
--- /dev/null
+++ b/autodoc/source/parser/inc/cpp/ctokdeal.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 ADC_CPP_CTOKDEAL_HXX
+#define ADC_CPP_CTOKDEAL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tokdeal.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace cpp
+{
+
+class Token;
+class Tok_UnblockMacro;
+
+
+class TokenDealer : virtual public ::TokenDealer
+{
+ public:
+
+ virtual void Deal_CppCode(
+ cpp::Token & let_drToken ) = 0;
+
+ /** This is to be used only by the internal macro expander
+ ( ::cpp::PreProcessor ).
+ These tokens are inserted into the source text temporary to make clear,
+ where a specific macro replacement ends and therefore the macro's name
+ becomes valid again.
+
+ @see ::cpp::Tok_UnblockMacro
+ @see ::cpp::PreProcessor
+ */
+ virtual void Deal_Cpp_UnblockMacro(
+ Tok_UnblockMacro & let_drToken ) = 0;
+};
+
+
+
+} // namespace cpp
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/cpp/prs_cpp.hxx b/autodoc/source/parser/inc/cpp/prs_cpp.hxx
new file mode 100644
index 000000000000..61512f24b54f
--- /dev/null
+++ b/autodoc/source/parser/inc/cpp/prs_cpp.hxx
@@ -0,0 +1,70 @@
+/* -*- 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 ADC_CPP_PRS_CPP_HXX
+#define ADC_CPP_PRS_CPP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <autodoc/prs_code.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace cpp
+{
+
+struct S_RunningData;
+
+class Cpluplus_Parser : public autodoc::CodeParser_Ifc
+{
+ public:
+ Cpluplus_Parser();
+ virtual ~Cpluplus_Parser();
+
+
+ virtual void Setup(
+ ary::Repository & o_rRepository,
+ const autodoc::DocumentationParser_Ifc &
+ i_rDocumentationInterpreter );
+
+ virtual void Run(
+ const autodoc::FileCollector_Ifc &
+ i_rFiles );
+ private:
+ Dyn<S_RunningData> pRunningData;
+};
+
+
+
+
+} // namespace cpp
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/doc_deal.hxx b/autodoc/source/parser/inc/doc_deal.hxx
new file mode 100644
index 000000000000..f9b12c8b2299
--- /dev/null
+++ b/autodoc/source/parser/inc/doc_deal.hxx
@@ -0,0 +1,92 @@
+/* -*- 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 ADC_DOC_DEAL_HXX
+#define ADC_DOC_DEAL_HXX
+
+// BASE CLASSES
+#include <tokens/tokproct.hxx>
+// USED SERVICES
+#include <ary/cpp/c_types4cpp.hxx>
+
+namespace ary
+{
+namespace doc
+{
+ class OldCppDocu;
+}
+}
+
+
+
+
+class DocuDealer
+{
+ public:
+ // INQUIRY
+ virtual ~DocuDealer() {}
+
+ // OPERATIONS
+ /** @descr
+ This distributes the let_drDocu to the matching ary::RepositoryEntity .
+
+ If the docu is not inline, it will be saved and later given to the next
+ ary::CodeEntity. Or it will be discarded, if there does not come a matching
+ ary::CodeEntity .
+
+ If the docu is inline after a function header or after an enum value
+ or after a function parameter or after a base class, it will be stored
+ together with the matching function, enum value, parameter or base class.
+
+ If the documentation is @file or @project or @glos(sary) it will be
+ stored at the matching ary::cpp::FileGroup, ary::cpp::ProjectGroup
+ or ary::Glossary.
+ */
+ void TakeDocu(
+ DYN ary::doc::OldCppDocu &
+ let_drInfo );
+ private:
+ virtual void do_TakeDocu(
+ DYN ary::doc::OldCppDocu &
+ let_drInfo ) = 0;
+};
+
+
+
+
+// IMPLEMENTATION
+inline void
+DocuDealer::TakeDocu( DYN ary::doc::OldCppDocu & let_drInfo )
+ { do_TakeDocu(let_drInfo); }
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/semantic/callf.hxx b/autodoc/source/parser/inc/semantic/callf.hxx
new file mode 100644
index 000000000000..6a8c829e00ee
--- /dev/null
+++ b/autodoc/source/parser/inc/semantic/callf.hxx
@@ -0,0 +1,289 @@
+/* -*- 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 ADC_CPP_CALLF_HXX
+#define ADC_CPP_CALLF_HXX
+
+// USED SERVICES
+
+
+
+
+/** This represents a function to be called, if a specific kind of token
+ arrives in the semantic parser.
+
+ @descr This class is only to be used as member of PeStatus<PE>.
+ @template PE
+ The owning ParseEnvironment.
+ @see PeStatus, ParseEnvironment
+*/
+template <class PE>
+class CallFunction
+{
+ public:
+ typedef void (PE::*F_Tok)(const char *);
+
+ CallFunction(
+ F_Tok i_f2Call,
+ INT16 i_nTokType );
+
+ F_Tok GetF() const;
+ INT16 TokType() const;
+
+ private:
+ // DATA
+ F_Tok f2Call;
+ INT16 nTokType;
+};
+
+
+/** One state within a ParseEnvironment.
+
+ @template PE
+ The owning ParseEnvironment.
+*/
+template <class PE>
+class PeStatus
+{
+ public:
+ typedef typename CallFunction<PE>::F_Tok F_Tok;
+
+ PeStatus(
+ PE & i_rMyPE,
+ uintt i_nSize,
+ F_Tok * i_pFuncArray,
+ INT16 * i_pTokTypeArray,
+ F_Tok i_pDefault );
+ virtual ~PeStatus();
+
+ virtual void Call_Handler(
+ INT16 i_nTokTypeId,
+ const char * i_sTokenText ) const;
+
+ private:
+ bool CheckForCall(
+ uintt i_nPos,
+ INT16 i_nTokTypeId,
+ const char * i_sTokenText ) const;
+
+ PE * pMyPE;
+ std::vector< CallFunction<PE> >
+ aBranches;
+ F_Tok fDefault;
+};
+
+
+template <class PE>
+class PeStatusArray
+{
+ public:
+ typedef typename PE::E_State State;
+
+ PeStatusArray();
+ void InsertState(
+ State i_ePosition,
+ DYN PeStatus<PE> & let_drState );
+ ~PeStatusArray();
+
+ const PeStatus<PE> &
+ operator[](
+ State i_ePosition ) const;
+
+ void SetCur(
+ State i_eCurState );
+ const PeStatus<PE> &
+ Cur() const;
+
+ private:
+ DYN PeStatus<PE> * aStati[PE::size_of_states];
+ State eState;
+};
+
+
+
+// IMPLEMENTATION
+
+
+// CallFunction
+
+template <class PE>
+CallFunction<PE>::CallFunction( F_Tok i_f2Call,
+ INT16 i_nTokType )
+ : f2Call(i_f2Call),
+ nTokType(i_nTokType)
+{
+}
+
+template <class PE>
+inline typename CallFunction<PE>::F_Tok
+CallFunction<PE>::GetF() const
+{
+ return f2Call;
+}
+
+template <class PE>
+inline INT16
+CallFunction<PE>::TokType() const
+{
+ return nTokType;
+}
+
+
+
+// PeStatus
+
+template <class PE>
+PeStatus<PE>::PeStatus( PE & i_rMyPE,
+ uintt i_nSize,
+ F_Tok * i_pFuncArray,
+ INT16 * i_pTokTypeArray,
+ F_Tok i_fDefault )
+ : pMyPE(&i_rMyPE),
+ fDefault(i_fDefault)
+{
+ aBranches.reserve(i_nSize);
+ for ( uintt i = 0; i < i_nSize; ++i )
+ {
+// csv_assert(i > 0 ? i_pTokTypeArray[i] > i_pTokTypeArray[i-1] : true);
+ aBranches.push_back( CallFunction<PE>( i_pFuncArray[i], i_pTokTypeArray[i]) );
+ } // end for
+}
+
+template <class PE>
+PeStatus<PE>::~PeStatus()
+{
+
+}
+
+template <class PE>
+void
+PeStatus<PE>::Call_Handler( INT16 i_nTokTypeId,
+ const char * i_sTokenText ) const
+{
+ uintt nSize = aBranches.size();
+ uintt nPos = nSize / 2;
+
+ if ( i_nTokTypeId < aBranches[nPos].TokType() )
+ {
+ for ( --nPos; intt(nPos) >= 0; --nPos )
+ {
+ if (CheckForCall(nPos, i_nTokTypeId, i_sTokenText))
+ return;
+ }
+ }
+ else
+ {
+ for ( ; nPos < nSize; ++nPos )
+ {
+ if (CheckForCall(nPos, i_nTokTypeId, i_sTokenText))
+ return;
+ }
+ }
+
+ (pMyPE->*fDefault)(i_sTokenText);
+}
+
+template <class PE>
+bool
+PeStatus<PE>::CheckForCall( uintt i_nPos,
+ INT16 i_nTokTypeId,
+ const char * i_sTokenText ) const
+{
+ if ( aBranches[i_nPos].TokType() == i_nTokTypeId )
+ {
+ (pMyPE->*aBranches[i_nPos].GetF())(i_sTokenText);
+ return true;
+ }
+ return false;
+}
+
+// PeStatusArray
+
+template <class PE>
+PeStatusArray<PE>::PeStatusArray()
+ : eState(PE::size_of_states)
+{
+ memset(aStati, 0, sizeof aStati);
+}
+
+template <class PE>
+void
+PeStatusArray<PE>::InsertState( State i_ePosition,
+ DYN PeStatus<PE> & let_drState )
+{
+ csv_assert(aStati[i_ePosition] == 0);
+ aStati[i_ePosition] = &let_drState;
+}
+
+template <class PE>
+PeStatusArray<PE>::~PeStatusArray()
+{
+ int i_max = PE::size_of_states;
+ for (int i = 0; i < i_max; i++)
+ {
+ delete aStati[i];
+ } // end for
+}
+
+template <class PE>
+inline const PeStatus<PE> &
+PeStatusArray<PE>::operator[]( State i_ePosition ) const
+{
+ csv_assert( uintt(i_ePosition) < PE::size_of_states );
+ csv_assert( aStati[i_ePosition] != 0 );
+ return *aStati[i_ePosition];
+}
+
+template <class PE>
+inline void
+PeStatusArray<PE>::SetCur( State i_eCurState )
+{
+ eState = i_eCurState;
+}
+
+
+template <class PE>
+const PeStatus<PE> &
+PeStatusArray<PE>::Cur() const
+{
+ return (*this)[eState];
+}
+
+#define SEMPARSE_CREATE_STATUS(penv, state, default_function) \
+ pStati->InsertState( state, \
+ *new PeStatus<penv>( \
+ *this, \
+ sizeof( stateT_##state ) / sizeof (INT16), \
+ stateF_##state, \
+ stateT_##state, \
+ &penv::default_function ) )
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/semantic/parseenv.hxx b/autodoc/source/parser/inc/semantic/parseenv.hxx
new file mode 100644
index 000000000000..058989ea3739
--- /dev/null
+++ b/autodoc/source/parser/inc/semantic/parseenv.hxx
@@ -0,0 +1,112 @@
+/* -*- 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 ADC_PARSEENV_HXX
+#define ADC_PARSEENV_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tokproct.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace info
+{
+class CodeInfo;
+} // namespace info
+} // namespace ary)
+
+
+
+class SubPeUseIfc;
+
+
+class ParseEnvironment : protected TokenProcessing_Types
+{
+ public:
+ virtual ~ParseEnvironment() {}
+
+ // Parsing
+ void Enter(
+ E_EnvStackAction i_eWayOfEntering );
+ void Leave(
+ E_EnvStackAction i_eWayOfLeaving );
+ void SetCurSPU(
+ const SubPeUseIfc * i_pCurSPU );
+
+ ParseEnvironment * Parent() const;
+
+
+ // ACCESS
+ protected:
+ ParseEnvironment(
+ ParseEnvironment * i_pParent );
+ const SubPeUseIfc * CurSubPeUse() const;
+ private:
+ virtual void InitData() = 0;
+ virtual void TransferData() = 0;
+
+ ParseEnvironment * pParent;
+ const SubPeUseIfc * pCurSubPe;
+};
+
+class SubPeUseIfc
+{
+ public:
+ virtual ~SubPeUseIfc() {}
+
+ virtual void InitParse() const = 0;
+ virtual void GetResults() const = 0;
+};
+
+
+
+// IMPLEMENTATION
+
+inline void
+ParseEnvironment::SetCurSPU( const SubPeUseIfc * i_pCurSPU )
+ { pCurSubPe = i_pCurSPU; }
+
+inline ParseEnvironment *
+ParseEnvironment::Parent() const
+ { return pParent; }
+
+inline const SubPeUseIfc *
+ParseEnvironment::CurSubPeUse() const
+ { return pCurSubPe; }
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/semantic/sub_pe.hxx b/autodoc/source/parser/inc/semantic/sub_pe.hxx
new file mode 100644
index 000000000000..0aef6804eafe
--- /dev/null
+++ b/autodoc/source/parser/inc/semantic/sub_pe.hxx
@@ -0,0 +1,114 @@
+/* -*- 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 ADC_CPP_SUB_PE_HXX
+#define ADC_CPP_SUB_PE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+class ParseEnvironment;
+
+template <class PE, class SUB>
+class SubPe
+{
+ public:
+ typedef SubPe< PE, SUB > self;
+
+ SubPe(
+ PE & i_rParent );
+ PE & Parent() const;
+ SUB & Child() const;
+
+ ParseEnvironment & Get() const;
+
+ private:
+ SUB & CreateChild() const;
+
+ PE & rParent;
+ Dyn<SUB> pChild;
+};
+
+
+
+// IMPLEMENTATION
+
+
+// SubPe
+
+template <class PE, class SUB>
+SubPe<PE,SUB>::SubPe( PE & i_rParent )
+ : rParent(i_rParent)
+{
+}
+
+template <class PE, class SUB>
+PE &
+SubPe<PE,SUB>::Parent() const
+{
+ return rParent;
+}
+
+template <class PE, class SUB>
+inline SUB &
+SubPe<PE,SUB>::Child() const
+{
+ return pChild ? *pChild.MutablePtr() : CreateChild();
+}
+
+template <class PE, class SUB>
+ParseEnvironment &
+SubPe<PE,SUB>::Get() const
+{
+ return Child();
+}
+
+template <class PE, class SUB>
+SUB &
+SubPe<PE,SUB>::CreateChild() const
+{
+ self * pThis = const_cast< self* >(this);
+
+ SUB * pNewChild = new SUB( &rParent);
+
+ pThis->pChild = pNewChild;
+
+ return *pChild.MutablePtr();
+}
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/semantic/sub_peu.hxx b/autodoc/source/parser/inc/semantic/sub_peu.hxx
new file mode 100644
index 000000000000..9960e3e751e2
--- /dev/null
+++ b/autodoc/source/parser/inc/semantic/sub_peu.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 ADC_CPP_SUB_PEU_HXX
+#define ADC_CPP_SUB_PEU_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <semantic/parseenv.hxx>
+#include <tokens/tokproct.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <semantic/sub_pe.hxx>
+
+
+
+template <class PE, class SUB>
+class SubPeUse : public SubPeUseIfc,
+ private TokenProcessing_Types
+{
+ public:
+ typedef void (PE::*F_INIT)();
+ typedef void (PE::*F_RETURN)();
+
+ SubPeUse(
+ SubPe<PE,SUB> & i_rSubPeCreator,
+ F_INIT i_fInit,
+ F_RETURN i_fReturn );
+ ~SubPeUse();
+
+ void Push(
+ E_TokenDone i_eDone );
+ virtual void InitParse() const;
+ virtual void GetResults() const;
+
+ PE & Parent() const;
+ SUB & Child() const;
+
+ private:
+ // DATA
+ SubPe<PE,SUB> & rSubPeCreator;
+ F_INIT fInit;
+ F_RETURN fReturn;
+};
+
+
+// IMPLEMENTATION
+
+
+template <class PE, class SUB>
+SubPeUse<PE,SUB>::SubPeUse( SubPe<PE,SUB> & i_rSubPeCreator,
+ F_INIT i_fInit,
+ F_RETURN i_fReturn )
+ : rSubPeCreator(i_rSubPeCreator),
+ fInit(i_fInit),
+ fReturn(i_fReturn)
+{
+}
+
+template <class PE, class SUB>
+SubPeUse<PE,SUB>::~SubPeUse()
+{
+}
+
+template <class PE, class SUB>
+void
+SubPeUse<PE,SUB>::Push( E_TokenDone i_eDone )
+{
+ Parent().SetTokenResult( i_eDone, push, &rSubPeCreator.Get() );
+ Parent().SetCurSPU(this);
+}
+
+template <class PE, class SUB>
+void
+SubPeUse<PE,SUB>::InitParse() const
+{
+ if (fInit != 0)
+ (Parent().*fInit)();
+}
+
+template <class PE, class SUB>
+void
+SubPeUse<PE,SUB>::GetResults() const
+{
+ if (fReturn != 0)
+ (Parent().*fReturn)();
+}
+
+template <class PE, class SUB>
+inline PE &
+SubPeUse<PE,SUB>::Parent() const
+{
+ return rSubPeCreator.Parent();
+}
+
+template <class PE, class SUB>
+inline SUB &
+SubPeUse<PE,SUB>::Child() const
+{
+ return rSubPeCreator.Child();
+}
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/parseinc.hxx b/autodoc/source/parser/inc/tokens/parseinc.hxx
new file mode 100644
index 000000000000..0f01fab399c0
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/parseinc.hxx
@@ -0,0 +1,205 @@
+/* -*- 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 ADC_PARSEINC_HXX
+#define ADC_PARSEINC_HXX
+
+
+#include <tools/tkpchars.hxx>
+
+inline char
+jumpOver( CharacterSource & io_rText,
+ char in_c )
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ cNext == in_c;
+ cNext = io_rText.MoveOn() )
+ { }
+
+ return cNext;
+}
+
+inline char
+jumpTo( CharacterSource & io_rText,
+ char in_c )
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ cNext != in_c AND cNext != 0;
+ cNext = io_rText.MoveOn() )
+ { }
+
+ return cNext;
+}
+
+inline char
+jumpTo( CharacterSource & io_rText,
+ char in_c1,
+ char in_c2 )
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ cNext != in_c1 AND cNext != in_c2 AND cNext != 0;
+ cNext = io_rText.MoveOn() )
+ { }
+
+ return cNext;
+}
+
+inline char
+jumpTo( CharacterSource & io_rText,
+ char in_c1,
+ char in_c2,
+ char in_c3 )
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ cNext != in_c1 AND cNext != in_c2 AND cNext != in_c3 AND cNext != 0;
+ cNext = io_rText.MoveOn() )
+ { }
+
+ return cNext;
+}
+
+inline char
+jumpTo( CharacterSource & io_rText,
+ char in_c1,
+ char in_c2,
+ char in_c3,
+ char in_c4 )
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ cNext != in_c1 AND cNext != in_c2 AND cNext != in_c3
+ AND cNext != in_c4 AND cNext != 0;
+ cNext = io_rText.MoveOn() )
+ { }
+
+ return cNext;
+}
+
+inline char
+jumpOverWhite(CharacterSource & io_rText)
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ static_cast<UINT8>(cNext) < 33
+ AND cNext != 0 AND cNext != 13 AND cNext != 10;
+ cNext = io_rText.MoveOn() )
+ { }
+
+ return cNext;
+}
+
+inline char
+jumpToWhite(CharacterSource & io_rText)
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ static_cast<UINT8>(cNext) > 32;
+ cNext = io_rText.MoveOn() )
+ { }
+
+ return cNext;
+}
+
+inline char
+jumpToEol(CharacterSource & io_rText, int & o_rCount_BackslashedLineBreaks )
+{
+ o_rCount_BackslashedLineBreaks = 0;
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ cNext != 13 AND cNext != 10 AND cNext != NULCH;
+ cNext = io_rText.MoveOn() )
+ {
+ if ( cNext == '\\')
+ {
+ cNext = io_rText.MoveOn();
+ if ( cNext == 13 )
+ io_rText.MoveOn();
+ if ( cNext == 10 )
+ ++o_rCount_BackslashedLineBreaks;
+ }
+ }
+ return cNext;
+}
+
+inline char
+jumpToEol(CharacterSource & io_rText)
+{
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ cNext != 13 AND cNext != 10 AND cNext != NULCH;
+ cNext = io_rText.MoveOn() )
+ {
+ if ( cNext == '\\')
+ io_rText.MoveOn();
+ }
+ return cNext;
+}
+
+inline char
+jumpOverEol(CharacterSource & io_rText)
+{
+ char cNext = io_rText.CurChar();
+
+ if (cNext == 13)
+ io_rText.MoveOn();
+ if (cNext == 10)
+ io_rText.MoveOn();
+ return cNext;
+}
+
+
+inline char // Finds a matching closing bracket after the opening one is passed
+jumpToMatchingBracket( CharacterSource & io_rText,
+ char in_cBegin,
+ char in_cEnd )
+{
+ intt nCounter = 1;
+ char cNext;
+ for ( cNext = io_rText.CurChar();
+ nCounter - (cNext == in_cEnd ? 1 : 0) > 0 AND cNext != NULCH;
+ cNext = io_rText.MoveOn() )
+ {
+ if (cNext == in_cEnd)
+ nCounter++;
+ else if (cNext == in_cBegin)
+ nCounter--;
+ }
+
+ return cNext;
+}
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/stmstarr.hxx b/autodoc/source/parser/inc/tokens/stmstarr.hxx
new file mode 100644
index 000000000000..640177faf363
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/stmstarr.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 ADC_STMSTARR_HXX
+#define ADC_STMSTARR_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/stmstate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <tokens/token.hxx>
+
+
+class StmArrayStatus : public StmStatus
+{
+ public:
+ typedef TextToken::F_CRTOK F_CRTOK;
+
+ // LIFECYCLE
+ StmArrayStatus(
+ intt i_nStatusSize,
+ const INT16 * in_aArrayModel,
+ F_CRTOK i_fTokenCreateFunction,
+ bool in_bIsDefault );
+ ~StmArrayStatus();
+
+ // INQUIRY
+ StmStatus::Branch NextBy(
+ intt in_nFollowersIndex) const;
+ F_CRTOK TokenCreateFunction() const
+ { return fTokenCreateFunction; }
+ virtual bool IsADefault() const;
+
+ // ACCESS
+ virtual StmArrayStatus *
+ AsArray();
+ bool SetBranch(
+ intt in_nBranchIx,
+ StmStatus::Branch in_nBranch );
+ void SetTokenCreateFunction(
+ F_CRTOK i_fTokenCreateFunction );
+ private:
+ StmStatus::Branch * dpBranches;
+ intt nNrOfBranches;
+ F_CRTOK fTokenCreateFunction;
+ bool bIsADefault;
+};
+
+
+// IMPLEMENTATION
+
+inline void
+StmArrayStatus::SetTokenCreateFunction( F_CRTOK i_fTokenCreateFunction )
+ { fTokenCreateFunction = i_fTokenCreateFunction; }
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/stmstate.hxx b/autodoc/source/parser/inc/tokens/stmstate.hxx
new file mode 100644
index 000000000000..e966b4740b75
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/stmstate.hxx
@@ -0,0 +1,70 @@
+/* -*- 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 ADC_STMSTATE_HXX
+#define ADC_STMSTATE_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+class StmArrayStatus;
+class StmBoundsStatus;
+
+/** A StmStatus is a state within a StateMachine.
+ There are two kinds of it. Either its an array of pointers to
+ other states within the state machine - an ArrayStatus.
+
+ Or it is a BoundsStatus, which shows, the token cannot be
+ followed further within the StateMachine.
+**/
+class StmStatus // := "State machine status"
+{
+ public:
+ typedef intt Branch; /// Values >= 0 give a next #Status' ID.
+ /// Values <= 0 tell, that a token is finished.
+ /// a value < 0 returns the status back to an upper level state machine.
+ // LIFECYCLE
+ virtual ~StmStatus() {}
+
+ // OPERATIONS
+ virtual StmArrayStatus *
+ AsArray();
+ virtual StmBoundsStatus *
+ AsBounds();
+
+ // INQUIRY
+ virtual bool IsADefault() const = 0;
+};
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/stmstfin.hxx b/autodoc/source/parser/inc/tokens/stmstfin.hxx
new file mode 100644
index 000000000000..7ded64933bb5
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/stmstfin.hxx
@@ -0,0 +1,82 @@
+/* -*- 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 ADC_STMSTFIN_HXX
+#define ADC_STMSTFIN_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/stmstate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+class TkpContext;
+class StateMachineContext;
+
+/**
+**/
+class StmBoundsStatus : public StmStatus
+{
+ public:
+ // LIFECYCLE
+ StmBoundsStatus(
+ StateMachineContext &
+ o_rOwner,
+ TkpContext & i_rFollowUpContext,
+ uintt i_nStatusFunctionNr,
+ bool i_bIsDefault );
+ // INQUIRY
+ TkpContext * FollowUpContext();
+ uintt StatusFunctionNr() const;
+ virtual bool IsADefault() const;
+
+ // ACCESS
+ virtual StmBoundsStatus *
+ AsBounds();
+
+ private:
+ StateMachineContext *
+ pOwner;
+ TkpContext * pFollowUpContext;
+ uintt nStatusFunctionNr;
+ bool bIsDefault;
+};
+
+inline TkpContext *
+StmBoundsStatus::FollowUpContext()
+ { return pFollowUpContext; }
+inline uintt
+StmBoundsStatus::StatusFunctionNr() const
+ { return nStatusFunctionNr; }
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/tkp.hxx b/autodoc/source/parser/inc/tokens/tkp.hxx
new file mode 100644
index 000000000000..97fc9578ae5c
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/tkp.hxx
@@ -0,0 +1,95 @@
+/* -*- 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 ADC_TKP_HXX
+#define ADC_TKP_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+class CharacterSource;
+class TkpContext;
+ // PARAMETRS
+
+
+
+/** This is the interface for parser classes, which get a sequence of tokens from
+ a text.
+
+ Start() starts to parse the text from the given i_rSource.
+ GetNextToken() returns a Token on the heap as long as there are
+ still characters in the text left. This can be checked by
+ HasMore().
+
+ The algorithms for parsing tokens from the text are an issue of
+ the derived classes.
+*/
+
+class TokenParser
+{
+ public:
+ // LIFECYCLE
+ TokenParser();
+ virtual ~TokenParser() {}
+
+ // OPERATIONS
+ /** Start parsing a character source. Any previously parsed sources
+ are discarded.
+ */
+ virtual void Start(
+ CharacterSource &
+ i_rSource );
+
+ /** @short Gets the next identifiable token out of the
+ source code.
+ */
+ void GetNextToken();
+
+ /// @return true, if there are more tokens to parse.
+ bool HasMore() const { return bHasMore; }
+
+ private:
+ void InitSource(
+ CharacterSource &
+ i_rSource );
+
+ virtual void SetStartContext() = 0;
+ virtual void SetCurrentContext(
+ TkpContext & io_rContext ) = 0;
+ virtual TkpContext &
+ CurrentContext() = 0;
+ // DATA
+ CharacterSource * pChars;
+ bool bHasMore;
+};
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/tkpcontx.hxx b/autodoc/source/parser/inc/tokens/tkpcontx.hxx
new file mode 100644
index 000000000000..c8818b4bfc20
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/tkpcontx.hxx
@@ -0,0 +1,142 @@
+/* -*- 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 ADC_TKPCONTX_HXX
+#define ADC_TKPCONTX_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <tokens/token.hxx>
+class CharacterSource;
+class TkpNullContext;
+
+/** @task
+ Specifies a context within which tokens are interpreted in a special
+ way. For example in parsing C++ there could be a context for code,
+ one for comments and a third one for preprocessor statements, because
+ each of these would give the same token different meanings.
+
+ The three functions
+ ReadCharChain()
+ PassNewToken()
+ FollowUpContext()
+ have to be called in this sequence.
+
+**/
+class TkpContext
+{
+ public:
+ // LIFECYCLE
+ virtual ~TkpContext() {}
+
+ // OPERATIONS
+ /** @descr
+ The functions starts to parse with the CurChar() of io_rText.
+ It leaves io_rText.CurChar() at the first char of the following Token or
+ the following Context.
+
+ This function returns, when a context has parsed some characterss
+ and completed a token OR left the context.
+ If the token is to be ignored, it is cut from io_rText.
+
+ If the token is to be parsed further in a different context,
+ it is NOT cut from io_rText.
+
+ After this function PassNewToken() has to be called.
+
+ If the function has found a valid and complete token, PassNewToken()
+ passes the parsed token to the internally known receiver and
+ returns true. The token is cut from io_rText.
+ **/
+ virtual void ReadCharChain(
+ CharacterSource & io_rText ) = 0;
+ /** Has to pass the parsed token to a known receiver.
+ If the token is to be parsed further in a different context,
+ PassNewToken() returns false, but the token is NOT cut from io_rText.
+
+ @return true, if a token was passed.
+ false, if the token was not parsed completely by this context
+ or if the token is to be ignored.
+ */
+ virtual bool PassNewToken() = 0;
+ virtual TkpContext &
+ FollowUpContext() = 0;
+
+ static TkpNullContext &
+ Null_();
+};
+
+class StateMachineContext
+{
+ public:
+ typedef TextToken::F_CRTOK F_CRTOK;
+
+ virtual ~StateMachineContext() {}
+
+ /// Is used by StmBoundsStatus only.
+ virtual void PerformStatusFunction(
+ uintt i_nStatusSignal,
+ F_CRTOK i_fTokenCreateFunction,
+ CharacterSource & io_rText ) = 0;
+};
+
+class TkpNullContext : public TkpContext
+{
+ public:
+ ~TkpNullContext();
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual bool PassNewToken();
+ virtual TkpContext &
+ FollowUpContext();
+};
+
+namespace autodoc
+{
+
+class TkpDocuContext : public TkpContext
+{
+ public:
+ virtual void SetParentContext(
+ TkpContext & io_rParentContext,
+ const char * i_sMultiLineEndToken ) = 0;
+ virtual void AssignDealer(
+ TokenDealer & o_rDealer ) = 0;
+ virtual void SetMode_IsMultiLine(
+ bool i_bTrue ) = 0;
+};
+
+} // namespace autodoc
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/tkpstama.hxx b/autodoc/source/parser/inc/tokens/tkpstama.hxx
new file mode 100644
index 000000000000..9c09ba6bc808
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/tkpstama.hxx
@@ -0,0 +1,125 @@
+/* -*- 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 ADC_TKPSTAMA_HXX
+#define ADC_TKPSTAMA_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcontx.hxx>
+ // COMPONENTS
+#include <tokens/stmstarr.hxx>
+#include <tokens/stmstfin.hxx>
+
+/** @descr
+ This state-machine models state transitions from one state to another
+ per indices of branches. If the indices represent ascii-char-values,
+ the state-machine can be used for recognising tokens of text.
+
+ The state-machine can be a status itself.
+
+ StateMachine needs the array-size of all stati as a guess, how many stati
+ the state machine will contain, when at work.
+
+
+**/
+class StateMachine
+{
+ public:
+ // Types
+ typedef StmStatus::Branch Branch;
+ typedef StmStatus * * StatusList;
+
+ //# Interface self
+ // LIFECYCLE
+ StateMachine(
+ intt in_nStatusSize,
+ intt in_nInitial_StatusListSize ); /// The user of the constructor should guess
+ /// the approximate number of stati here to
+ /// avoid multiple reallocations.
+ /// @#AddStatus
+ intt AddStatus( /// @return the new #Status' ID
+ DYN StmStatus * let_dpStatus);
+ /// @#AddToken
+ void AddToken(
+ const char * in_sToken,
+ TextToken::F_CRTOK in_fTokenCreateFunction,
+ const INT16 * in_aBranches,
+ INT16 in_nBoundsStatus );
+ ~StateMachine();
+
+
+ // OPERATIONS
+ StmBoundsStatus &
+ GetCharChain(
+ TextToken::F_CRTOK &
+ o_nTokenCreateFunction,
+ CharacterSource & io_rText );
+ private:
+ // SERVICE FUNCTIONS
+ StmStatus & Status(
+ intt in_nStatusNr) const;
+ StmArrayStatus &
+ CurrentStatus() const;
+ StmBoundsStatus *
+ BoundsStatus() const;
+
+ /// Sets the PeekedStatus.
+ void Peek(
+ intt in_nBranch);
+
+ void ResizeStati(); // Adds space for 32 stati.
+
+ // DATA
+ StatusList pStati; /// List of Status, implemented as simple C-array of length #nStatiSpace
+ /// with nStatiLength valid members (beginning from zero).
+ intt nCurrentStatus;
+ intt nPeekedStatus;
+
+ intt nStatusSize; /// Size of the branch array of a single status.
+
+ intt nNrofStati; /// Nr of Stati so far.
+ intt nStatiSpace; /// Size of allocated array for #pStati (size in items).
+};
+
+
+
+/** @#AddToken
+ @descr
+ Adds a token, which will be recogniszeds by the
+ statemachine.
+
+
+**/
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/tokdeal.hxx b/autodoc/source/parser/inc/tokens/tokdeal.hxx
new file mode 100644
index 000000000000..3d70cdd4ad03
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/tokdeal.hxx
@@ -0,0 +1,59 @@
+/* -*- 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 ADC_TOKDEAL_HXX
+#define ADC_TOKDEAL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace cpp
+{
+ class Distributor;
+}
+
+
+class TokenDealer
+
+{
+ public:
+ virtual ~TokenDealer() {}
+
+ virtual void Deal_Eol() = 0;
+ virtual void Deal_Eof() = 0;
+ virtual cpp::Distributor *
+ AsDistributor() = 0;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/token.hxx b/autodoc/source/parser/inc/tokens/token.hxx
new file mode 100644
index 000000000000..f44ca2917372
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/token.hxx
@@ -0,0 +1,68 @@
+/* -*- 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 ADC_TOKEN_HXX
+#define ADC_TOKEN_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETRS
+
+
+class TokenDealer;
+
+/**
+*/
+class TextToken
+{
+ public:
+ typedef TextToken * (*F_CRTOK)(const char*);
+
+ // LIFECYCLE
+ virtual ~TextToken() {}
+
+
+ // INQUIRY
+ virtual const char* Text() const = 0;
+
+ virtual void DealOut(
+ ::TokenDealer & o_rDealer ) = 0;
+};
+
+class Tok_Eof : public TextToken
+{
+ virtual void DealOut( // Implemented in tokdeal.cxx
+ TokenDealer & o_rDealer );
+ virtual const char* Text() const;
+};
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/tokens/tokproct.hxx b/autodoc/source/parser/inc/tokens/tokproct.hxx
new file mode 100644
index 000000000000..8fdcef957290
--- /dev/null
+++ b/autodoc/source/parser/inc/tokens/tokproct.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 ADC_CPP_TOKPROCT_HXX
+#define ADC_CPP_TOKPROCT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+class ParseEnvironment;
+
+/** is a parent class for classes, which take part in parsing tokens semantically.
+ It provides some types for them.
+*/
+class TokenProcessing_Types
+{
+ public:
+ enum E_TokenDone
+ {
+ not_done = 0,
+ done = 1
+ };
+
+ enum E_EnvStackAction
+ {
+ stay, // same parse environment
+ push, // push sub environment
+ pop_success, // return to parent environment, parsing was successful
+ pop_failure // return to parent environment, but an error occured.
+ };
+
+ struct TokenProcessing_Result
+ {
+ E_TokenDone eDone;
+ E_EnvStackAction eStackAction;
+ ParseEnvironment * pEnv2Push;
+
+ TokenProcessing_Result()
+ : eDone(not_done), eStackAction(stay), pEnv2Push(0) {}
+ void Reset() { eDone = not_done; eStackAction = stay; pEnv2Push = 0; }
+ };
+
+ enum E_ParseResult
+ {
+ res_error,
+ res_complete,
+ res_predeclaration
+ };
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/x_docu.hxx b/autodoc/source/parser/inc/x_docu.hxx
new file mode 100644
index 000000000000..faf14b0591d2
--- /dev/null
+++ b/autodoc/source/parser/inc/x_docu.hxx
@@ -0,0 +1,61 @@
+/* -*- 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 ADC_X_DOCU_HXX
+#define ADC_X_DOCU_HXX
+
+// BASE CLASSES
+#include <autodoc/x_parsing.hxx>
+
+
+
+
+class X_Docu : public autodoc::X_Parser_Ifc
+{
+ public:
+ // LIFECYCLE
+ X_Docu(
+ const char * i_tag,
+ const char * i_explanation );
+ ~X_Docu();
+ // INQUIRY
+ virtual E_Event GetEvent() const;
+ virtual void GetInfo(
+ std::ostream & o_rOutputMedium ) const;
+
+ private:
+ String sTagName;
+ String sExplanation;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/inc/x_parse.hxx b/autodoc/source/parser/inc/x_parse.hxx
new file mode 100644
index 000000000000..593c7661d9bc
--- /dev/null
+++ b/autodoc/source/parser/inc/x_parse.hxx
@@ -0,0 +1,66 @@
+/* -*- 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 ADC_X_PARSE_HXX
+#define ADC_X_PARSE_HXX
+
+// BASE CLASSES
+#include <autodoc/x_parsing.hxx>
+
+
+
+
+class X_Parser : public autodoc::X_Parser_Ifc
+{
+ public:
+ // LIFECYCLE
+ X_Parser(
+ E_Event i_eEvent,
+ const char * i_sObject,
+ const String & i_sCausingFile_FullPath,
+ uintt i_nCausingLineNr );
+ ~X_Parser();
+ // INQUIRY
+ virtual E_Event GetEvent() const;
+ virtual void GetInfo(
+ std::ostream & o_rOutputMedium ) const;
+
+ private:
+ E_Event eEvent;
+ String sObject;
+ String sCausingFile_FullPath;
+ uintt nCausingLineNr;
+
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/kernel/makefile.mk b/autodoc/source/parser/kernel/makefile.mk
new file mode 100644
index 000000000000..9baf8ab1c6ef
--- /dev/null
+++ b/autodoc/source/parser/kernel/makefile.mk
@@ -0,0 +1,58 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=parser_kernel
+TARGETTYPE=CUI
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/parsefct.obj \
+ $(OBJ)$/x_docu.obj \
+ $(OBJ)$/x_parse.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser/kernel/parsefct.cxx b/autodoc/source/parser/kernel/parsefct.cxx
new file mode 100644
index 000000000000..0f157a4159e6
--- /dev/null
+++ b/autodoc/source/parser/kernel/parsefct.cxx
@@ -0,0 +1,83 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "parsefct.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <cpp/prs_cpp.hxx>
+#include <adoc/prs_adoc.hxx>
+#include <tools/filecoll.hxx>
+
+
+DYN ParseToolsFactory * ParseToolsFactory::dpTheInstance_ = 0;
+
+
+namespace autodoc
+{
+
+ParseToolsFactory_Ifc &
+ParseToolsFactory_Ifc::GetIt_()
+{
+ if ( ParseToolsFactory::dpTheInstance_ == 0 )
+ ParseToolsFactory::dpTheInstance_ = new ParseToolsFactory;
+ return *ParseToolsFactory::dpTheInstance_;
+}
+
+} // namespace autodoc
+
+
+ParseToolsFactory::ParseToolsFactory()
+{
+}
+
+ParseToolsFactory::~ParseToolsFactory()
+{
+}
+
+DYN autodoc::CodeParser_Ifc *
+ParseToolsFactory::Create_Parser_Cplusplus() const
+{
+ return new cpp::Cpluplus_Parser;
+}
+
+DYN autodoc::DocumentationParser_Ifc *
+ParseToolsFactory::Create_DocuParser_AutodocStyle() const
+{
+ return new adoc::DocuParser_AutodocStyle;
+}
+
+DYN autodoc::FileCollector_Ifc *
+ParseToolsFactory::Create_FileCollector( uintt i_nEstimatedNrOfFiles ) const
+{
+ return new FileCollector(i_nEstimatedNrOfFiles);
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/kernel/parsefct.hxx b/autodoc/source/parser/kernel/parsefct.hxx
new file mode 100644
index 000000000000..b4cfa443f007
--- /dev/null
+++ b/autodoc/source/parser/kernel/parsefct.hxx
@@ -0,0 +1,62 @@
+/* -*- 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 ADC_PARSER_PARSEFCT_HXX
+#define ADC_PARSER_PARSEFCT_HXX
+
+
+#include <autodoc/parsing.hxx>
+
+
+/** Interface for parsing code of a programming language and
+ delivering the information into an Autodoc Repository.
+**/
+class ParseToolsFactory : public autodoc::ParseToolsFactory_Ifc
+{
+ public:
+ ParseToolsFactory();
+ virtual ~ParseToolsFactory();
+
+ virtual DYN autodoc::CodeParser_Ifc *
+ Create_Parser_Cplusplus() const;
+ virtual DYN autodoc::DocumentationParser_Ifc *
+ Create_DocuParser_AutodocStyle() const;
+ virtual DYN autodoc::FileCollector_Ifc *
+ Create_FileCollector(
+ uintt i_nEstimatedNrOfFiles ) const;
+ private:
+ static DYN ParseToolsFactory *
+ dpTheInstance_;
+
+ friend class autodoc::ParseToolsFactory_Ifc;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/kernel/x_docu.cxx b/autodoc/source/parser/kernel/x_docu.cxx
new file mode 100644
index 000000000000..529073675810
--- /dev/null
+++ b/autodoc/source/parser/kernel/x_docu.cxx
@@ -0,0 +1,64 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <x_docu.hxx>
+
+// NOT FULLY DECLARED SERVICES
+
+
+
+X_Docu::X_Docu( const char * i_tag,
+ const char * i_explanation )
+ : sTagName(i_tag),
+ sExplanation(i_explanation)
+{
+}
+
+X_Docu::~X_Docu()
+{
+}
+
+X_Docu::E_Event
+X_Docu::GetEvent() const
+{
+ return x_Any;
+}
+
+void
+X_Docu::GetInfo( std::ostream & o_rOutputMedium ) const
+{
+ o_rOutputMedium
+ << "Error in tag '"
+ << sTagName
+ << "': "
+ << sExplanation
+ << Endl();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/kernel/x_parse.cxx b/autodoc/source/parser/kernel/x_parse.cxx
new file mode 100644
index 000000000000..f06de7f96f96
--- /dev/null
+++ b/autodoc/source/parser/kernel/x_parse.cxx
@@ -0,0 +1,101 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <x_parse.hxx>
+
+// NOT FULLY DECLARED SERVICES
+
+
+
+X_Parser::X_Parser( E_Event i_eEvent,
+ const char * i_sObject,
+ const String & i_sCausingFile_FullPath,
+ uintt i_nCausingLineNr )
+ : eEvent(i_eEvent),
+ sObject(i_sObject),
+ sCausingFile_FullPath(i_sCausingFile_FullPath),
+ nCausingLineNr(i_nCausingLineNr)
+{
+}
+
+X_Parser::~X_Parser()
+{
+}
+
+X_Parser::E_Event
+X_Parser::GetEvent() const
+{
+ return eEvent;
+}
+
+void
+X_Parser::GetInfo( std::ostream & o_rOutputMedium ) const
+{
+ o_rOutputMedium << "Error in file "
+ << sCausingFile_FullPath
+ << " in line "
+ << nCausingLineNr
+ << ": ";
+
+
+ switch (eEvent)
+ {
+ case x_InvalidChar:
+ o_rOutputMedium << "Unknown character '"
+ << sObject
+ << "'";
+ break;
+ case x_UnexpectedToken:
+ o_rOutputMedium << "Unexpected token \""
+ << sObject
+ << "\"";
+ break;
+ case x_UnexpectedEOF:
+ o_rOutputMedium << "Unexpected end of file.";
+ break;
+ case x_UnspecifiedSyntaxError:
+ o_rOutputMedium << "Unspecified syntax problem in file.";
+ break;
+ case x_Any:
+ default:
+ o_rOutputMedium << "Unspecified parsing exception.";
+ } // end switch
+ o_rOutputMedium << Endl();
+}
+
+
+std::ostream &
+operator<<( std::ostream & o_rOut,
+ const autodoc::X_Parser_Ifc & i_rException )
+{
+ i_rException.GetInfo(o_rOut);
+ return o_rOut;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/semantic/makefile.mk b/autodoc/source/parser/semantic/makefile.mk
new file mode 100644
index 000000000000..da7e8f154b43
--- /dev/null
+++ b/autodoc/source/parser/semantic/makefile.mk
@@ -0,0 +1,58 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=parser_semantic
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/parseenv.obj
+
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser/semantic/parseenv.cxx b/autodoc/source/parser/semantic/parseenv.cxx
new file mode 100644
index 000000000000..aa998d038542
--- /dev/null
+++ b/autodoc/source/parser/semantic/parseenv.cxx
@@ -0,0 +1,89 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <semantic/parseenv.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/doc/d_oldcppdocu.hxx>
+#include <x_parse.hxx>
+
+
+void
+ParseEnvironment::Enter( E_EnvStackAction i_eWayOfEntering )
+{
+ switch (i_eWayOfEntering)
+ {
+ case push:
+ InitData();
+ if ( Parent() != 0 )
+ {
+ csv_assert( Parent()->CurSubPeUse() != 0 );
+ Parent()->CurSubPeUse()->InitParse();
+ }
+ break;
+ case pop_success:
+ break;
+ case pop_failure:
+ break;
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+void
+ParseEnvironment::Leave( E_EnvStackAction i_eWayOfLeaving )
+{
+ switch (i_eWayOfLeaving)
+ {
+ case push:
+ break;
+ case pop_success:
+ TransferData();
+ if ( Parent() != 0 )
+ {
+ csv_assert( Parent()->CurSubPeUse() != 0 );
+ Parent()->CurSubPeUse()->GetResults();
+ }
+ break;
+ case pop_failure:
+ break;
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+ParseEnvironment::ParseEnvironment( ParseEnvironment * i_pParent )
+ : pParent(i_pParent),
+ // pDocu,
+ pCurSubPe(0)
+{
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/tokens/makefile.mk b/autodoc/source/parser/tokens/makefile.mk
new file mode 100644
index 000000000000..beb3207154fb
--- /dev/null
+++ b/autodoc/source/parser/tokens/makefile.mk
@@ -0,0 +1,62 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=garden
+TARGET=parser_tokens
+TARGETTYPE=CUI
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/stmstarr.obj \
+ $(OBJ)$/stmstate.obj \
+ $(OBJ)$/stmstfin.obj \
+ $(OBJ)$/tkpstama.obj \
+ $(OBJ)$/tkp.obj \
+ $(OBJ)$/tkpcontx.obj \
+ $(OBJ)$/tokdeal.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser/tokens/stmstarr.cxx b/autodoc/source/parser/tokens/stmstarr.cxx
new file mode 100644
index 000000000000..8070fae3a450
--- /dev/null
+++ b/autodoc/source/parser/tokens/stmstarr.cxx
@@ -0,0 +1,101 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/stmstarr.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <x_parse.hxx>
+
+
+
+StmArrayStatus::StmArrayStatus( intt i_nStatusSize,
+ const INT16 * in_aArrayModel,
+ F_CRTOK i_fTokenCreateFunction,
+ bool in_bIsDefault )
+ : dpBranches(new StmStatus::Branch[i_nStatusSize]),
+ nNrOfBranches(i_nStatusSize),
+ fTokenCreateFunction(i_fTokenCreateFunction),
+ bIsADefault(in_bIsDefault)
+{
+ if (in_aArrayModel != 0)
+ {
+ intt count = 0;
+ for (const INT16 * get = in_aArrayModel; count < nNrOfBranches; count++, get++)
+ dpBranches[count] = *get;
+ }
+ else //
+ {
+ memset(dpBranches, 0, nNrOfBranches);
+ } // endif
+}
+
+StmArrayStatus::~StmArrayStatus()
+{
+ delete [] dpBranches;
+}
+
+bool
+StmArrayStatus::SetBranch( intt in_nBranchIx,
+ StmStatus::Branch in_nBranch )
+{
+ if ( csv::in_range(intt(0), in_nBranchIx, intt(nNrOfBranches) ) )
+ {
+ dpBranches[in_nBranchIx] = in_nBranch;
+ return true;
+ }
+ return false;
+}
+
+
+StmStatus::Branch
+StmArrayStatus::NextBy(intt in_nIndex) const
+{
+ if (in_nIndex < 0)
+ throw X_Parser(X_Parser::x_InvalidChar, "", String::Null_(), 0);
+
+ return in_nIndex < nNrOfBranches
+ ? dpBranches[in_nIndex]
+ : dpBranches[nNrOfBranches - 1];
+}
+
+
+bool
+StmArrayStatus::IsADefault() const
+{
+ return bIsADefault;
+}
+
+StmArrayStatus *
+StmArrayStatus::AsArray()
+{
+ return this;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/tokens/stmstate.cxx b/autodoc/source/parser/tokens/stmstate.cxx
new file mode 100644
index 000000000000..6530ebbbe838
--- /dev/null
+++ b/autodoc/source/parser/tokens/stmstate.cxx
@@ -0,0 +1,48 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/stmstate.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+
+StmArrayStatus *
+StmStatus::AsArray()
+{
+ return 0;
+}
+
+StmBoundsStatus *
+StmStatus::AsBounds()
+{
+ return 0;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/tokens/stmstfin.cxx b/autodoc/source/parser/tokens/stmstfin.cxx
new file mode 100644
index 000000000000..84b7a9cf39e9
--- /dev/null
+++ b/autodoc/source/parser/tokens/stmstfin.cxx
@@ -0,0 +1,63 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/stmstfin.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <tokens/tkpcontx.hxx>
+
+
+StmBoundsStatus::StmBoundsStatus( StateMachineContext &
+ o_rOwner,
+ TkpContext & i_rFollowUpContext,
+ uintt i_nStatusFunctionNr,
+ bool i_bIsDefault )
+ : pOwner(&o_rOwner),
+ pFollowUpContext(&i_rFollowUpContext),
+ nStatusFunctionNr(i_nStatusFunctionNr),
+ bIsDefault(i_bIsDefault)
+{
+}
+
+bool
+StmBoundsStatus::IsADefault() const
+{
+ return bIsDefault;
+}
+
+StmBoundsStatus *
+StmBoundsStatus::AsBounds()
+{
+ return this;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/tokens/tkp.cxx b/autodoc/source/parser/tokens/tkp.cxx
new file mode 100644
index 000000000000..7be7bcb55842
--- /dev/null
+++ b/autodoc/source/parser/tokens/tkp.cxx
@@ -0,0 +1,74 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/tkp.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <tools/tkpchars.hxx>
+#include <tokens/tkpcontx.hxx>
+
+
+
+TokenParser::TokenParser()
+ : pChars(0),
+ bHasMore(false)
+{
+}
+
+void
+TokenParser::Start( CharacterSource & i_rSource )
+{
+ InitSource(i_rSource);
+}
+
+void
+TokenParser::GetNextToken()
+{
+ csv_assert(pChars != 0);
+
+ bHasMore = NOT pChars->IsFinished();
+
+ for ( bool bDone = NOT bHasMore; NOT bDone; )
+ {
+ CurrentContext().ReadCharChain(*pChars);
+ bDone = CurrentContext().PassNewToken();
+ SetCurrentContext(CurrentContext().FollowUpContext());
+ }
+}
+
+void
+TokenParser::InitSource( CharacterSource & i_rSource )
+{
+ pChars = &i_rSource;
+ bHasMore = true;
+ SetStartContext();
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/tokens/tkpcontx.cxx b/autodoc/source/parser/tokens/tkpcontx.cxx
new file mode 100644
index 000000000000..c1979bfe6c44
--- /dev/null
+++ b/autodoc/source/parser/tokens/tkpcontx.cxx
@@ -0,0 +1,70 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/tkpcontx.hxx>
+
+// NOT FULLY DECLARED SERVICES
+
+
+
+TkpNullContext G_aNullContext;
+
+TkpNullContext &
+TkpContext::Null_()
+{
+ return G_aNullContext;
+}
+
+TkpNullContext::~TkpNullContext()
+{
+}
+
+void
+TkpNullContext::ReadCharChain( CharacterSource & )
+{
+}
+
+bool
+TkpNullContext::PassNewToken()
+{
+ return false;
+}
+
+TkpContext &
+TkpNullContext::FollowUpContext()
+{
+ return *this;
+}
+
+
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/tokens/tkpstama.cxx b/autodoc/source/parser/tokens/tkpstama.cxx
new file mode 100644
index 000000000000..bf27299ef63c
--- /dev/null
+++ b/autodoc/source/parser/tokens/tkpstama.cxx
@@ -0,0 +1,180 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/tkpstama.hxx>
+
+// NOT FULLY DECLARED SERVICES
+// #include <srcfind.hxx>
+#include <tokens/stmstarr.hxx>
+//#include <parseinc.hxx>
+#include <tools/tkpchars.hxx>
+
+
+const intt C_nStatuslistResizeValue = 32;
+const intt C_nTopStatus = 0;
+
+StateMachine::StateMachine( intt in_nStatusSize,
+ intt in_nInitial_StatusListSize )
+ : pStati(new StmStatus*[in_nInitial_StatusListSize]),
+ nCurrentStatus(C_nTopStatus),
+ nPeekedStatus(C_nTopStatus),
+ nStatusSize(in_nStatusSize),
+ nNrofStati(0),
+ nStatiSpace(in_nInitial_StatusListSize)
+{
+ csv_assert(in_nStatusSize > 0);
+ csv_assert(in_nInitial_StatusListSize > 0);
+
+ memset(pStati, 0, sizeof(StmStatus*) * nStatiSpace);
+}
+
+intt
+StateMachine::AddStatus(StmStatus * let_dpStatus)
+{
+ if (nNrofStati == nStatiSpace)
+ {
+ ResizeStati();
+ }
+ pStati[nNrofStati] = let_dpStatus;
+ return nNrofStati++;
+}
+
+void
+StateMachine::AddToken( const char * in_sToken,
+ TextToken::F_CRTOK in_fTokenCreateFunction,
+ const INT16 * in_aBranches,
+ INT16 in_nBoundsStatus )
+{
+ if (csv::no_str(in_sToken))
+ return;
+
+ // Durch existierende Stati durchhangeln:
+ nCurrentStatus = 0;
+ nPeekedStatus = 0;
+
+ for ( const char * pChar = in_sToken;
+ *pChar != NULCH;
+ ++pChar )
+ {
+ Peek(*pChar);
+ StmStatus & rPst = Status(nPeekedStatus);
+ if ( rPst.IsADefault() OR rPst.AsBounds() != 0 )
+ {
+ nPeekedStatus = AddStatus( new StmArrayStatus(nStatusSize, in_aBranches, 0, false ) );
+ CurrentStatus().SetBranch( *pChar, nPeekedStatus );
+ }
+ nCurrentStatus = nPeekedStatus;
+ } // end for
+ StmArrayStatus & rLastStatus = CurrentStatus();
+ rLastStatus.SetTokenCreateFunction(in_fTokenCreateFunction);
+ for (intt i = 0; i < nStatusSize; i++)
+ {
+ if (Status(rLastStatus.NextBy(i)).AsBounds() != 0)
+ rLastStatus.SetBranch(i,in_nBoundsStatus);
+ } // end for
+}
+
+StateMachine::~StateMachine()
+{
+ for (intt i = 0; i < nNrofStati; i++)
+ {
+ delete pStati[i];
+ }
+ delete [] pStati;
+}
+
+StmBoundsStatus &
+StateMachine::GetCharChain( TextToken::F_CRTOK & o_nTokenCreateFunction,
+ CharacterSource & io_rText )
+{
+ nCurrentStatus = C_nTopStatus;
+
+ Peek(io_rText.CurChar());
+ while (BoundsStatus() == 0)
+ {
+ nCurrentStatus = nPeekedStatus;
+ Peek(io_rText.MoveOn());
+ }
+ o_nTokenCreateFunction = CurrentStatus().TokenCreateFunction();
+
+ return *BoundsStatus();
+}
+
+void
+StateMachine::ResizeStati()
+{
+ intt nNewSize = nStatiSpace + C_nStatuslistResizeValue;
+ intt i = 0;
+ StatusList pNewStati = new StmStatus*[nNewSize];
+
+ for ( ; i < nNrofStati; i++)
+ {
+ pNewStati[i] = pStati[i];
+ }
+ memset( pNewStati+i,
+ 0,
+ (nNewSize-i) * sizeof(StmStatus*) );
+
+ delete [] pStati;
+ pStati = pNewStati;
+ nStatiSpace = nNewSize;
+}
+
+StmStatus &
+StateMachine::Status(intt in_nStatusNr) const
+{
+ csv_assert( csv::in_range(intt(0), in_nStatusNr, intt(nNrofStati)) );
+ return *pStati[in_nStatusNr];
+}
+
+StmArrayStatus &
+StateMachine::CurrentStatus() const
+{
+ StmArrayStatus * pCurSt = Status(nCurrentStatus).AsArray();
+
+ csv_assert(pCurSt != 0);
+// if(pCurSt == 0)
+// csv_assert(false);
+ return *pCurSt;
+}
+
+StmBoundsStatus *
+StateMachine::BoundsStatus() const
+{
+ return Status(nPeekedStatus).AsBounds();
+}
+
+void
+StateMachine::Peek(intt in_nBranch)
+{
+ StmArrayStatus & rSt = CurrentStatus();
+ nPeekedStatus = rSt.NextBy(in_nBranch);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser/tokens/tokdeal.cxx b/autodoc/source/parser/tokens/tokdeal.cxx
new file mode 100644
index 000000000000..561a638a3233
--- /dev/null
+++ b/autodoc/source/parser/tokens/tokdeal.cxx
@@ -0,0 +1,52 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/tokdeal.hxx>
+#include <tokens/token.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+
+
+
+void
+Tok_Eof::DealOut( TokenDealer & o_rDealer )
+{
+ o_rDealer.Deal_Eof();
+};
+
+const char *
+Tok_Eof::Text() const
+{
+ return "";
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/cx_idlco.cxx b/autodoc/source/parser_i/idl/cx_idlco.cxx
new file mode 100644
index 000000000000..42ace9448462
--- /dev/null
+++ b/autodoc/source/parser_i/idl/cx_idlco.cxx
@@ -0,0 +1,547 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/cx_idlco.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <s2_luidl/cx_sub.hxx>
+#include <s2_dsapi/cx_dsapi.hxx>
+#include <tools/tkpchars.hxx>
+#include <tokens/tkpstam2.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_luidl/tokrecv.hxx>
+#include <x_parse2.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+const intt C_nCppInitialNrOfStati = 400;
+const intt C_nStatusSize = 128;
+
+
+
+const uintt nF_fin_Error = 1;
+const uintt nF_fin_Ignore = 2;
+const uintt nF_fin_Identifier = 3;
+const uintt nF_fin_Keyword = 4;
+const uintt nF_fin_Punctuation = 5;
+const uintt nF_fin_EOL = 6;
+const uintt nF_fin_EOF = 7;
+
+const uintt nF_goto_MLDocu = 10;
+const uintt nF_goto_SLDocu = 11;
+const uintt nF_goto_MLComment = 12;
+const uintt nF_goto_SLComment = 13;
+const uintt nF_goto_Praeprocessor = 14;
+const uintt nF_goto_Assignment = 15;
+
+
+
+const UINT16 nTok_bty_any = 100 + TokBuiltInType::bty_any;
+const UINT16 nTok_bty_boolean = 100 + TokBuiltInType::bty_boolean;
+const UINT16 nTok_bty_byte = 100 + TokBuiltInType::bty_byte;
+const UINT16 nTok_bty_char = 100 + TokBuiltInType::bty_char;
+const UINT16 nTok_bty_double = 100 + TokBuiltInType::bty_double;
+const UINT16 nTok_bty_hyper = 100 + TokBuiltInType::bty_hyper;
+const UINT16 nTok_bty_long = 100 + TokBuiltInType::bty_long;
+const UINT16 nTok_bty_short = 100 + TokBuiltInType::bty_short;
+const UINT16 nTok_bty_string = 100 + TokBuiltInType::bty_string;
+const UINT16 nTok_bty_void = 100 + TokBuiltInType::bty_void;
+const UINT16 nTok_bty_ellipse = 100 + TokBuiltInType::bty_ellipse;
+
+const UINT16 nTok_tmod_unsigned = 200 + TokTypeModifier::tmod_unsigned;
+const UINT16 nTok_tmod_sequence = 200 + TokTypeModifier::tmod_sequence;
+
+const UINT16 nTok_ph_in = 250 + TokParameterHandling::ph_in;
+const UINT16 nTok_ph_out = 250 + TokParameterHandling::ph_out;
+const UINT16 nTok_ph_inout = 250 + TokParameterHandling::ph_inout;
+
+const UINT16 nTok_mt_attribute = 300 + TokMetaType::mt_attribute;
+const UINT16 nTok_mt_constants = 300 + TokMetaType::mt_constants;
+const UINT16 nTok_mt_enum = 300 + TokMetaType::mt_enum;
+const UINT16 nTok_mt_exception = 300 + TokMetaType::mt_exception;
+const UINT16 nTok_mt_ident = 300 + TokMetaType::mt_ident;
+const UINT16 nTok_mt_interface = 300 + TokMetaType::mt_interface;
+const UINT16 nTok_mt_module = 300 + TokMetaType::mt_module;
+const UINT16 nTok_mt_property = 300 + TokMetaType::mt_property;
+const UINT16 nTok_mt_service = 300 + TokMetaType::mt_service;
+const UINT16 nTok_mt_singleton = 300 + TokMetaType::mt_singleton;
+const UINT16 nTok_mt_struct = 300 + TokMetaType::mt_struct;
+const UINT16 nTok_mt_typedef = 300 + TokMetaType::mt_typedef;
+const UINT16 nTok_mt_uik = 300 + TokMetaType::mt_uik;
+
+const UINT16 nTok_ste_bound = 400 + TokStereotype::ste_bound;
+const UINT16 nTok_ste_constrained = 400 + TokStereotype::ste_constrained;
+const UINT16 nTok_ste_const = 400 + TokStereotype::ste_const;
+const UINT16 nTok_ste_maybeambiguous = 400 + TokStereotype::ste_maybeambiguous;
+const UINT16 nTok_ste_maybedefault = 400 + TokStereotype::ste_maybedefault;
+const UINT16 nTok_ste_maybevoid = 400 + TokStereotype::ste_maybevoid;
+const UINT16 nTok_ste_oneway = 400 + TokStereotype::ste_oneway;
+const UINT16 nTok_ste_optional = 400 + TokStereotype::ste_optional;
+const UINT16 nTok_ste_readonly = 400 + TokStereotype::ste_readonly;
+const UINT16 nTok_ste_removable = 400 + TokStereotype::ste_removable;
+const UINT16 nTok_ste_virtual = 400 + TokStereotype::ste_virtual;
+const UINT16 nTok_ste_transient = 400 + TokStereotype::ste_transient;
+const UINT16 nTok_ste_published = 400 + TokStereotype::ste_published;
+
+const UINT16 nTok_raises = 501;
+const UINT16 nTok_needs = 502;
+const UINT16 nTok_observes = 503;
+
+const UINT16 nTok_assignment = 550;
+
+const UINT16 nTok_ignore = 600;
+const UINT16 nTok_none_MLCommentBegin = 601;
+const UINT16 nTok_none_SLCommentBegin = 602;
+const UINT16 nTok_none_MLDocuBegin = 603;
+const UINT16 nTok_none_SLDocuBegin = 604;
+const UINT16 nTok_none_PraeprocessorBegin = 605;
+
+
+const UINT16 nTok_punct_BracketOpen = 700 + TokPunctuation::BracketOpen;
+const UINT16 nTok_punct_BracketClose = 700 + TokPunctuation::BracketClose;
+const UINT16 nTok_punct_ArrayBracketOpen = 700 + TokPunctuation::ArrayBracketOpen;
+const UINT16 nTok_punct_ArrayBracketClose = 700 + TokPunctuation::ArrayBracketClose;
+const UINT16 nTok_punct_CurledBracketOpen = 700 + TokPunctuation::CurledBracketOpen;
+const UINT16 nTok_punct_CurledBracketClose = 700 + TokPunctuation::CurledBracketClose;
+const UINT16 nTok_punct_Semicolon = 700 + TokPunctuation::Semicolon;
+const UINT16 nTok_punct_Colon = 700 + TokPunctuation::Colon;
+const UINT16 nTok_punct_DoubleColon = 700 + TokPunctuation::DoubleColon;
+const UINT16 nTok_punct_Comma = 700 + TokPunctuation::Comma;
+const UINT16 nTok_punct_Minus = 700 + TokPunctuation::Minus;
+const UINT16 nTok_punct_Fullstop = 700 + TokPunctuation::Fullstop;
+const UINT16 nTok_punct_Lesser = 700 + TokPunctuation::Lesser;
+const UINT16 nTok_punct_Greater = 700 + TokPunctuation::Greater;
+
+const UINT16 nTok_EOL = 801;
+const UINT16 nTok_EOF = 802;
+
+
+
+Context_UidlCode::Context_UidlCode( Token_Receiver & o_rReceiver,
+ DYN TkpDocuContext & let_drContext_Docu )
+ : aStateMachine(C_nStatusSize,C_nCppInitialNrOfStati),
+ pReceiver(&o_rReceiver),
+ pDocuContext(&let_drContext_Docu),
+ dpContext_MLComment(0),
+ dpContext_SLComment(0),
+ dpContext_Preprocessor(0),
+ dpContext_Assignment(0),
+ pNewToken(0),
+ pFollowUpContext(0)
+{
+ dpContext_MLComment = new Context_MLComment(o_rReceiver,*this),
+ dpContext_SLComment = new Context_SLComment(o_rReceiver,*this),
+ dpContext_Preprocessor = new Context_Praeprocessor(o_rReceiver,*this),
+ dpContext_Assignment = new Context_Assignment(o_rReceiver,*this),
+
+ pDocuContext->SetParentContext(*this,"*/");
+ SetupStateMachine();
+}
+
+Context_UidlCode::~Context_UidlCode()
+{
+}
+
+void
+Context_UidlCode::ReadCharChain( CharacterSource & io_rText )
+{
+ pNewToken = 0;
+
+ UINT16 nTokenId = 0;
+ StmBoundsStatu2 & rBound = aStateMachine.GetCharChain(nTokenId, io_rText);
+
+ // !!!
+ // The order of the next two lines is essential, because
+ // pFollowUpContext may be changed by PerformStatusFunction() also,
+ // which then MUST override the previous assignment.
+ pFollowUpContext = rBound.FollowUpContext();
+ PerformStatusFunction(rBound.StatusFunctionNr(), nTokenId, io_rText);
+}
+
+bool
+Context_UidlCode::PassNewToken()
+{
+ if (pNewToken)
+ {
+ pReceiver->Receive(*pNewToken.Release());
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Context_UidlCode::FollowUpContext()
+{
+ csv_assert(pFollowUpContext != 0);
+ return *pFollowUpContext;
+}
+
+void
+Context_UidlCode::PerformStatusFunction( uintt i_nStatusSignal,
+ UINT16 i_nTokenId,
+ CharacterSource & io_rText )
+{
+ switch (i_nStatusSignal)
+ {
+ case nF_fin_Error:
+ // KORR_FUTURE
+ throw X_AutodocParser(X_AutodocParser::x_InvalidChar);
+ // no break, because of throw
+ case nF_fin_Ignore:
+ pNewToken = 0;
+ io_rText.CutToken();
+ break;
+ case nF_fin_Identifier:
+ pNewToken = new TokIdentifier(io_rText.CutToken());
+ break;
+ case nF_fin_Keyword:
+ io_rText.CutToken();
+ switch ( i_nTokenId / 50 )
+ {
+ case 2:
+ pNewToken = new TokBuiltInType(i_nTokenId - 100);
+ break;
+ case 4:
+ pNewToken = new TokTypeModifier(i_nTokenId - 200);
+ break;
+ case 5:
+ pNewToken = new TokParameterHandling(i_nTokenId - 250);
+ break;
+ case 6:
+ pNewToken = new TokMetaType(i_nTokenId - 300);
+ break;
+ case 8:
+ pNewToken = new TokStereotype(i_nTokenId - 400);
+ break;
+ case 10:
+ switch (i_nTokenId-500)
+ {
+ case 1:
+ pNewToken = new TokRaises;
+ break;
+ case 2:
+ pNewToken = new TokNeeds;
+ break;
+ case 3:
+ pNewToken = new TokObserves;
+ break;
+ default:
+ csv_assert(false);
+ }
+ break;
+ default:
+ csv_assert(false);
+ } // end switch ( i_nTokenId / 50 )
+ break;
+ case nF_fin_Punctuation:
+ io_rText.CutToken();
+ if (i_nTokenId == nTok_punct_DoubleColon)
+ pNewToken = new TokNameSeparator;
+ else
+ pNewToken = new TokPunctuation(i_nTokenId - 700);
+ break;
+ case nF_fin_EOL:
+ io_rText.CutToken();
+ pNewToken = new Tok_EOL;
+ pReceiver->Increment_CurLine();
+ break;
+ case nF_fin_EOF:
+ pNewToken = new Tok_EOF;
+ break;
+ case nF_goto_MLDocu:
+ while ( io_rText.CurChar() == '*')
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ pDocuContext->SetMode_IsMultiLine(true);
+ break;
+ case nF_goto_SLDocu:
+ io_rText.CutToken();
+ pDocuContext->SetMode_IsMultiLine(false);
+ break;
+ case nF_goto_MLComment:
+ break;
+ case nF_goto_SLComment:
+ break;
+ case nF_goto_Praeprocessor:
+ break;
+ case nF_goto_Assignment:
+ break;
+ default:
+ csv_assert(false);
+ } // end switch (i_nStatusSignal)
+}
+
+void
+Context_UidlCode::SetupStateMachine()
+{
+ // Besondere Array-Stati (kein Tokenabschluss oder Kontextwechsel):
+// const INT16 top = 0; // Top-Status
+ const INT16 wht = 1; // Whitespace-überlese-Status
+ const INT16 bez = 2; // Bezeichner-lese-Status
+
+ // Tokenfinish-Stati:
+ const INT16 finErr = 3;
+ const INT16 finIgn = 4;
+ const INT16 finBez = 5;
+ const INT16 finKeyw = 6;
+ const INT16 finPunct = 7;
+ const INT16 finEOL = 8;
+ const INT16 finEOF = 9;
+
+ // Kontextwechsel-Stati:
+ const INT16 gotoMld = 10;
+ const INT16 gotoSld = 11;
+ const INT16 gotoMlc = 12;
+ const INT16 gotoSlc = 13;
+ const INT16 gotoPrp = 14;
+ const INT16 gotoAsg = 15;
+
+ // Konstanten zur Benutzung in der Tabelle:
+ const INT16 err = finErr;
+ const INT16 fbz = finBez;
+ const INT16 fig = finIgn;
+ const INT16 fof = finEOF;
+// const INT16 fkw = finKeyw;
+// const INT16 fpc = finPunct;
+
+ /// Die '0'en werden spaeter durch AddToken() ersetzt.
+
+ const INT16 A_nTopStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht, 0,wht,wht, 0,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // 16 ...
+ wht,err,wht, 0,err,err,err,err, 0, 0,err,err, 0, 0, 0,err,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,err,err,err,err,err,err, // 48 ...
+ err,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez, 0,err, 0,err,bez, // 80 ...
+ err,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez, 0,err, 0,err,err, // 112 ...
+ };
+
+ const INT16 A_nWhitespaceStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht,fig,wht,wht,fig,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // 16 ...
+ wht,fig,wht,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig, // 48 ...
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig, // 80 ...
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
+ fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,err // 112 ...
+ };
+
+ const INT16 A_nBezeichnerStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fbz,err,err,err,err,err,err,err,err,fbz,fbz,fbz,fbz,fbz,err,err,
+ err,err,err,err,err,err,err,err,err,err,fbz,err,err,err,err,err, // 16 ...
+ fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,fbz,fbz, // 48 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,bez, // 80 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,err // 112 ...
+ };
+
+ const INT16 A_nPunctDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 16 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 48 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 80 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err // 112 ...
+ };
+
+ const INT16 A_nKeywordDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fbz,err,err,err,err,err,err,err,err,fbz,fbz,fbz,fbz,fbz,err,err,
+ err,err,err,err,err,err,err,err,err,err,fbz,err,err,err,err,err, // 16 ...
+ fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,fbz,fbz, // 48 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,bez, // 80 ...
+ fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
+ bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,err // 112 ...
+ };
+
+ DYN StmArrayStatu2 * dpStatusTop
+ = new StmArrayStatu2( C_nStatusSize, A_nTopStatus, 0, true);
+ DYN StmArrayStatu2 * dpStatusWhite
+ = new StmArrayStatu2( C_nStatusSize, A_nWhitespaceStatus, 0, true);
+ DYN StmArrayStatu2 * dpStatusBez
+ = new StmArrayStatu2( C_nStatusSize, A_nBezeichnerStatus, 0, true);
+
+ DYN StmBoundsStatu2 * dpBst_finErr
+ = new StmBoundsStatu2( *this, TkpContext_Null2_(), nF_fin_Error, true );
+ DYN StmBoundsStatu2 * dpBst_finIgn
+ = new StmBoundsStatu2( *this, *this, nF_fin_Ignore, true );
+ DYN StmBoundsStatu2 * dpBst_finBez
+ = new StmBoundsStatu2( *this, *this, nF_fin_Identifier, true );
+ DYN StmBoundsStatu2 * dpBst_finKeyw
+ = new StmBoundsStatu2( *this, *this, nF_fin_Keyword, false );
+ DYN StmBoundsStatu2 * dpBst_finPunct
+ = new StmBoundsStatu2( *this, *this, nF_fin_Punctuation, false );
+ DYN StmBoundsStatu2 * dpBst_finEOL
+ = new StmBoundsStatu2( *this, *this, nF_fin_EOL, false );
+ DYN StmBoundsStatu2 * dpBst_finEOF
+ = new StmBoundsStatu2( *this, TkpContext_Null2_(), nF_fin_EOF, false );
+
+ DYN StmBoundsStatu2 * dpBst_gotoMld
+ = new StmBoundsStatu2( *this, *pDocuContext, nF_goto_MLDocu, false );
+ DYN StmBoundsStatu2 * dpBst_gotoSld
+ = new StmBoundsStatu2( *this, *pDocuContext, nF_goto_SLDocu, false );
+ DYN StmBoundsStatu2 * dpBst_gotoMlc
+ = new StmBoundsStatu2( *this, *dpContext_MLComment, nF_goto_MLComment, false );
+ DYN StmBoundsStatu2 * dpBst_gotoSlc
+ = new StmBoundsStatu2( *this, *dpContext_SLComment, nF_goto_SLComment, false );
+ DYN StmBoundsStatu2 * dpBst_gotoPrp
+ = new StmBoundsStatu2( *this, *dpContext_Preprocessor, nF_goto_Praeprocessor, false );
+ DYN StmBoundsStatu2 * dpBst_gotoAsg
+ = new StmBoundsStatu2( *this, *dpContext_Assignment, nF_goto_Assignment, false );
+
+ // dpMain aufbauen:
+ aStateMachine.AddStatus(dpStatusTop);
+
+ aStateMachine.AddStatus(dpStatusWhite);
+ aStateMachine.AddStatus(dpStatusBez);
+
+ aStateMachine.AddStatus(dpBst_finErr);
+ aStateMachine.AddStatus(dpBst_finIgn);
+ aStateMachine.AddStatus(dpBst_finBez);
+ aStateMachine.AddStatus(dpBst_finKeyw);
+ aStateMachine.AddStatus(dpBst_finPunct);
+ aStateMachine.AddStatus(dpBst_finEOL);
+ aStateMachine.AddStatus(dpBst_finEOF);
+
+ aStateMachine.AddStatus(dpBst_gotoMld);
+ aStateMachine.AddStatus(dpBst_gotoSld);
+ aStateMachine.AddStatus(dpBst_gotoMlc);
+ aStateMachine.AddStatus(dpBst_gotoSlc);
+ aStateMachine.AddStatus(dpBst_gotoPrp);
+ aStateMachine.AddStatus(dpBst_gotoAsg);
+
+ aStateMachine.AddToken("any", nTok_bty_any, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("attribute", nTok_mt_attribute, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("boolean", nTok_bty_boolean, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("bound", nTok_ste_bound, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("byte", nTok_bty_byte, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("char", nTok_bty_char, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("const", nTok_ste_const, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("constants", nTok_mt_constants, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("constrained",
+ nTok_ste_constrained, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("double", nTok_bty_double, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("enum", nTok_mt_enum, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("exception", nTok_mt_exception, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("hyper", nTok_bty_hyper, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("ident", nTok_mt_ident, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("in", nTok_ph_in, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("inout", nTok_ph_inout, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("interface", nTok_mt_interface, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("long", nTok_bty_long, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("maybeambiguous",
+ nTok_ste_maybeambiguous,A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("maybedefault",
+ nTok_ste_maybedefault, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("maybevoid", nTok_ste_maybevoid, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("module", nTok_mt_module, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("needs", nTok_needs, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("observes", nTok_observes, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("oneway", nTok_ste_oneway, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("optional", nTok_ste_optional, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("out", nTok_ph_out, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("property", nTok_mt_property, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("published", nTok_ste_published, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("raises", nTok_raises, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("readonly", nTok_ste_readonly, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("removable", nTok_ste_removable, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("sequence", nTok_tmod_sequence, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("service", nTok_mt_service, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("short", nTok_bty_short, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("singleton", nTok_mt_singleton, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("string", nTok_bty_string, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("struct", nTok_mt_struct, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("transient", nTok_ste_transient, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("typedef", nTok_mt_typedef, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("uik", nTok_mt_uik, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("unsigned", nTok_tmod_unsigned, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("virtual", nTok_ste_virtual, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("void", nTok_bty_void, A_nKeywordDefStatus, finKeyw);
+ aStateMachine.AddToken("...", nTok_bty_ellipse, A_nPunctDefStatus, finKeyw);
+
+ aStateMachine.AddToken("=", nTok_assignment, A_nPunctDefStatus, gotoAsg);
+
+ aStateMachine.AddToken("(", nTok_punct_BracketOpen, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken(")", nTok_punct_BracketClose,A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken("[", nTok_punct_ArrayBracketOpen,
+ A_nPunctDefStatus, finIgn);
+ aStateMachine.AddToken("]", nTok_punct_ArrayBracketClose,
+ A_nPunctDefStatus, finIgn);
+ aStateMachine.AddToken("{", nTok_punct_CurledBracketOpen,
+ A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken("}", nTok_punct_CurledBracketClose,
+ A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken("<", nTok_punct_Lesser, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken(">", nTok_punct_Greater, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken(";", nTok_punct_Semicolon, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken(":", nTok_punct_Colon, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken("::", nTok_punct_DoubleColon, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken(",", nTok_punct_Comma, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken("-", nTok_punct_Minus, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken(".", nTok_punct_Fullstop, A_nPunctDefStatus, finPunct);
+ aStateMachine.AddToken("/**", nTok_none_MLDocuBegin, A_nPunctDefStatus, gotoMld);
+ aStateMachine.AddToken("///", nTok_none_SLDocuBegin, A_nPunctDefStatus, gotoSld);
+ aStateMachine.AddToken("/*", nTok_none_MLCommentBegin,
+ A_nPunctDefStatus, gotoMlc);
+ aStateMachine.AddToken("//", nTok_none_SLCommentBegin,
+ A_nPunctDefStatus, gotoSlc);
+ aStateMachine.AddToken("/**/", nTok_ignore, A_nPunctDefStatus, finIgn);
+ aStateMachine.AddToken("#", nTok_none_PraeprocessorBegin,
+ A_nPunctDefStatus, gotoPrp);
+ aStateMachine.AddToken("\r\n", nTok_EOL, A_nPunctDefStatus, finEOL);
+ aStateMachine.AddToken("\r", nTok_EOL, A_nPunctDefStatus, finEOL);
+ aStateMachine.AddToken("\n", nTok_EOL, A_nPunctDefStatus, finEOL);
+ aStateMachine.AddToken("\n\r", nTok_EOL, A_nPunctDefStatus, finEOL);
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/cx_sub.cxx b/autodoc/source/parser_i/idl/cx_sub.cxx
new file mode 100644
index 000000000000..e098d6cc1c3c
--- /dev/null
+++ b/autodoc/source/parser_i/idl/cx_sub.cxx
@@ -0,0 +1,149 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/cx_sub.hxx>
+
+
+
+// NOT FULLY DECLARED SERVICES
+#include <s2_luidl/tokrecv.hxx>
+#include <../../parser/inc/tokens/parseinc.hxx>
+#include <x_parse2.hxx>
+#include <s2_luidl/tk_const.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+bool
+Cx_Base::PassNewToken()
+{
+ if (pNewToken)
+ {
+ rReceiver.Receive(*pNewToken.Release());
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Cx_Base::FollowUpContext()
+{
+ csv_assert(pFollowUpContext != 0);
+ return *pFollowUpContext;
+}
+
+void
+Context_MLComment::ReadCharChain( CharacterSource & io_rText )
+{
+ char cNext = NULCH;
+
+ do {
+ do {
+ cNext = jumpTo(io_rText,'*','\n');
+ if (cNext == '\n')
+ {
+ Receiver().Increment_CurLine();
+ cNext = io_rText.MoveOn();
+ }
+ else if (cNext == NULCH)
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ } while (cNext != '*');
+
+ cNext = jumpOver(io_rText,'*');
+ if (cNext == NULCH)
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ } while (cNext != '/');
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetToken(0);
+}
+
+void
+Context_SLComment::ReadCharChain( CharacterSource & io_rText )
+{
+ jumpToEol(io_rText);
+ if (io_rText.CurChar() != NULCH)
+ jumpOverEol(io_rText);
+ io_rText.CutToken();
+ SetToken(0);
+
+ Receiver().Increment_CurLine();
+}
+
+void
+Context_Praeprocessor::ReadCharChain( CharacterSource & io_rText )
+{
+ jumpToEol(io_rText);
+ if (io_rText.CurChar() != NULCH)
+ jumpOverEol(io_rText);
+ io_rText.CutToken();
+ SetToken(0);
+
+ Receiver().Increment_CurLine();
+}
+
+void
+Context_Assignment::ReadCharChain( CharacterSource & io_rText )
+{
+ // KORR_FUTURE
+ // How to handle new lines within this, so he y get realised by
+ // ParserInfo?
+
+ char cNext = NULCH;
+ do {
+ if ( (cNext = jumpTo(io_rText,';',',','"','}')) == NULCH )
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ if (cNext == '"')
+ {
+ cNext = io_rText.MoveOn();
+ while (cNext != '"')
+ {
+ if ( (cNext = jumpTo(io_rText,'"','\\')) == NULCH )
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ if (cNext == '\\')
+ io_rText.MoveOn();
+ }
+ cNext = io_rText.MoveOn();
+ } // endif (cNext == '"')
+ } while (cNext != ';' AND cNext != ',' AND cNext != '}');
+
+ if (cNext == ',' OR cNext == ';')
+ io_rText.MoveOn();
+ SetToken(new TokAssignment(io_rText.CutToken()));
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/distrib.cxx b/autodoc/source/parser_i/idl/distrib.cxx
new file mode 100644
index 000000000000..75c245bfa96e
--- /dev/null
+++ b/autodoc/source/parser_i/idl/distrib.cxx
@@ -0,0 +1,266 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/distrib.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/doc/d_oldidldocu.hxx>
+#include <parser/parserinfo.hxx>
+#include <s2_luidl/tkp_uidl.hxx>
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_dsapi/docu_pe2.hxx>
+#include <adc_cl.hxx>
+#include <x_parse2.hxx>
+
+
+
+const uintt C_nNO_TRY = uintt(-1);
+
+
+namespace csi
+{
+namespace uidl
+{
+
+TokenDistributor::TokenDistributor( ary::Repository & io_rRepository,
+ ParserInfo & io_rParserInfo )
+ : pTokenSource(0),
+ aDocumentation(io_rParserInfo),
+ aProcessingData( io_rRepository, aDocumentation, io_rParserInfo )
+{
+}
+
+TokenDistributor::~TokenDistributor()
+{
+}
+
+void
+TokenDistributor::TradeToken()
+{
+ bool bGoon = true;
+ while (bGoon AND NOT aProcessingData.NextTokenExists())
+ {
+ bGoon = pTokenSource->GetNextToken();
+ }
+ if (bGoon)
+ aProcessingData.ProcessCurToken();
+}
+
+TokenDistributor::ProcessingData::ProcessingData(
+ ary::Repository & io_rRepository,
+ Documentation & i_rDocuProcessor,
+ ParserInfo & io_rParserInfo )
+ : // aEnvironments
+ // aTokenQueue
+ // itCurToken
+ // aCurResult
+ nTryCount(0),
+ bFinished(false),
+ rRepository(io_rRepository),
+ rParserInfo(io_rParserInfo),
+ pDocuProcessor(&i_rDocuProcessor),
+ bPublishedRecentlyOn(false)
+{
+ itCurToken = aTokenQueue.end();
+}
+
+TokenDistributor::ProcessingData::~ProcessingData()
+{
+}
+
+void
+TokenDistributor::ProcessingData::SetTopParseEnvironment( UnoIDL_PE & io_pTopParseEnvironment )
+{
+ csv::erase_container(aEnvironments);
+ aEnvironments.push_back( EnvironmentInfo( &io_pTopParseEnvironment, 0 ) );
+ io_pTopParseEnvironment.EstablishContacts(0,rRepository,aCurResult);
+}
+
+void
+TokenDistributor::ProcessingData::Receive( DYN csi::uidl::Token & let_drToken )
+{
+ aTokenQueue.push_back( &let_drToken );
+ itCurToken = aTokenQueue.end()-1;
+}
+
+void
+TokenDistributor::ProcessingData::Increment_CurLine()
+{
+ rParserInfo.Increment_CurLine();
+}
+
+void
+TokenDistributor::ProcessingData::ProcessCurToken()
+{
+
+if (DEBUG_ShowTokens())
+{
+ Cout() << (*itCurToken)->Text() << Endl();
+}
+
+ aCurResult.reset();
+
+ CurEnvironment().ProcessToken( CurToken() );
+ AcknowledgeResult();
+}
+
+
+UnoIDL_PE &
+TokenDistributor::ProcessingData::CurEnvironment() const
+{
+ csv_assert(aEnvironments.size() > 0);
+ csv_assert(aEnvironments.back().first != 0);
+
+ return *aEnvironments.back().first;
+}
+
+bool
+TokenDistributor::ProcessingData::NextTokenExists() const
+{
+ return itCurToken != aTokenQueue.end();
+}
+
+void
+TokenDistributor::ProcessingData::AcknowledgeResult()
+{
+ if (aCurResult.eDone == done)
+ ++itCurToken;
+
+ switch ( aCurResult.eStackAction )
+ {
+ case stay:
+ if (aCurResult.eDone != done)
+ {
+ csv_assert(false);
+ }
+ break;
+ case push_sure:
+ CurEnv().Leave(push_sure);
+ aEnvironments.push_back( EnvironmentInfo(&PushEnv(), C_nNO_TRY) );
+ PushEnv().Enter(push_sure);
+ PushEnv().SetDocu(pDocuProcessor->ReleaseLastParsedDocu());
+ if (bPublishedRecentlyOn)
+ {
+ PushEnv().SetPublished();
+ bPublishedRecentlyOn = false;
+ }
+
+ break;
+ case push_try:
+ Cout() << "TestInfo: Environment tried." << Endl();
+ CurEnv().Leave(push_try);
+ aEnvironments.push_back( EnvironmentInfo(&PushEnv(), CurTokenPosition()) );
+ nTryCount++;
+ PushEnv().Enter(push_try);
+ break;
+ case pop_success:
+ CurEnv().Leave(pop_success);
+ if ( CurEnv_TriedTokenPosition() > 0 )
+ DecrementTryCount();
+ aEnvironments.pop_back();
+ CurEnv().Enter(pop_success);
+ break;
+ case pop_failure:
+ {
+ CurEnv().Leave(pop_failure);
+ if (aCurResult.eDone == done)
+ {
+ csv_assert(false);
+ }
+
+ if ( CurEnv_TriedTokenPosition() == C_nNO_TRY )
+ throw X_AutodocParser( X_AutodocParser::x_UnexpectedToken, (*itCurToken)->Text() );
+
+ itCurToken = aTokenQueue.begin() + CurEnv_TriedTokenPosition();
+ DecrementTryCount();
+ aEnvironments.pop_back();
+ CurEnv().Enter(pop_failure);
+ } break;
+ default:
+ csv_assert(false);
+ } // end switch(aCurResult.eStackAction)
+}
+
+void
+TokenDistributor::ProcessingData::DecrementTryCount()
+{
+ nTryCount--;
+ if (nTryCount == 0)
+ {
+ aTokenQueue.erase(aTokenQueue.begin(), itCurToken);
+ itCurToken = aTokenQueue.begin();
+ }
+}
+
+TokenDistributor::
+Documentation::Documentation(ParserInfo & io_rParserInfo)
+ : pDocuParseEnv(new csi::dsapi::SapiDocu_PE(io_rParserInfo)),
+ rParserInfo(io_rParserInfo),
+ pMostRecentDocu(0),
+ bIsPassedFirstDocu(false)
+{
+}
+
+TokenDistributor::
+Documentation::~Documentation()
+{
+}
+
+void
+TokenDistributor::
+Documentation::Receive( DYN csi::dsapi::Token & let_drToken )
+{
+ csv_assert(pDocuParseEnv);
+
+ pDocuParseEnv->ProcessToken(let_drToken);
+ if ( pDocuParseEnv->IsComplete() )
+ {
+ pMostRecentDocu = pDocuParseEnv->ReleaseJustParsedDocu();
+ if (NOT bIsPassedFirstDocu)
+ {
+ pMostRecentDocu = 0; // Deletes the most recent docu.
+ bIsPassedFirstDocu = true;
+ }
+ }
+}
+
+void
+TokenDistributor::
+Documentation::Increment_CurLine()
+{
+ rParserInfo.Increment_CurLine();
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/makefile.mk b/autodoc/source/parser_i/idl/makefile.mk
new file mode 100644
index 000000000000..7449548742b6
--- /dev/null
+++ b/autodoc/source/parser_i/idl/makefile.mk
@@ -0,0 +1,84 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=parser2_s2_luidl
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+
+OBJFILES= \
+ $(OBJ)$/cx_idlco.obj \
+ $(OBJ)$/cx_sub.obj \
+ $(OBJ)$/distrib.obj \
+ $(OBJ)$/parsenv2.obj \
+ $(OBJ)$/pe_attri.obj \
+ $(OBJ)$/pe_const.obj \
+ $(OBJ)$/pe_enum2.obj \
+ $(OBJ)$/pe_evalu.obj \
+ $(OBJ)$/pe_excp.obj \
+ $(OBJ)$/pe_file2.obj \
+ $(OBJ)$/pe_func2.obj \
+ $(OBJ)$/pe_iface.obj \
+ $(OBJ)$/pe_property.obj \
+ $(OBJ)$/pe_selem.obj \
+ $(OBJ)$/pe_servi.obj \
+ $(OBJ)$/pe_singl.obj \
+ $(OBJ)$/pe_struc.obj \
+ $(OBJ)$/pe_tydf2.obj \
+ $(OBJ)$/pe_type2.obj \
+ $(OBJ)$/pe_vari2.obj \
+ $(OBJ)$/pestate.obj \
+ $(OBJ)$/semnode.obj \
+ $(OBJ)$/tk_const.obj \
+ $(OBJ)$/tk_ident.obj \
+ $(OBJ)$/tk_keyw.obj \
+ $(OBJ)$/tk_punct.obj \
+ $(OBJ)$/tkp_uidl.obj \
+ $(OBJ)$/unoidl.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser_i/idl/parsenv2.cxx b/autodoc/source/parser_i/idl/parsenv2.cxx
new file mode 100644
index 000000000000..4327ae1e3cbd
--- /dev/null
+++ b/autodoc/source/parser_i/idl/parsenv2.cxx
@@ -0,0 +1,215 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/parsenv2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ary.hxx>
+#include <ary/getncast.hxx>
+#include <ary/qualiname.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/i_enumvalue.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <parser/parserinfo.hxx>
+#include <adc_msg.hxx>
+#include <s2_luidl/uidl_tok.hxx>
+#include <x_parse2.hxx>
+
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+UnoIDL_PE::~UnoIDL_PE()
+{
+}
+
+void
+UnoIDL_PE::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ pRepository = &io_rRepository;
+ aMyNode.EstablishContacts(io_pParentPE, io_rRepository.Gate_Idl(), o_rResult);
+}
+
+//void
+//UnoIDL_PE::EstablishContacts( UnoIDL_PE * io_pParentPE,
+// ary::idl::Gate & io_rGate,
+// TokenProcessing_Result & o_rResult )
+//{
+// aMyNode.EstablishContacts(io_pParentPE, io_rGate, o_rResult);
+//}
+
+void
+UnoIDL_PE::Enter( E_EnvStackAction i_eWayOfEntering )
+{
+ switch (i_eWayOfEntering)
+ {
+ case push_sure:
+ InitData();
+ break;
+ case push_try:
+ csv_assert(false);
+ break;
+ case pop_success:
+ ReceiveData();
+ break;
+ case pop_failure:
+ throw X_AutodocParser(X_AutodocParser::x_Any);
+ // no break because of throw
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+void
+UnoIDL_PE::Leave( E_EnvStackAction i_eWayOfLeaving )
+{
+ switch (i_eWayOfLeaving)
+ {
+ case push_sure:
+ break;
+ case push_try:
+ csv_assert(false);
+ break;
+ case pop_success:
+ TransferData();
+ break;
+ case pop_failure:
+ throw X_AutodocParser(X_AutodocParser::x_Any);
+ // no break because of throw
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+void
+UnoIDL_PE::SetDocu( DYN ary::doc::OldIdlDocu * let_dpDocu )
+{
+ pDocu = let_dpDocu;
+}
+
+void
+UnoIDL_PE::SetPublished()
+{
+ if (NOT pDocu)
+ {
+ pDocu = new ary::doc::OldIdlDocu;
+ }
+ pDocu->SetPublished();
+}
+
+void
+UnoIDL_PE::SetOptional()
+{
+ if (NOT pDocu)
+ {
+ pDocu = new ary::doc::OldIdlDocu;
+ }
+ pDocu->SetOptional();
+}
+
+void
+UnoIDL_PE::PassDocuAt( ary::idl::CodeEntity & io_rCe )
+{
+ if (pDocu)
+ {
+ io_rCe.Set_Docu(*pDocu.Release());
+ }
+ else if // KORR_FUTURE
+ // Re-enable doc-warning for Enum Values, as soon as there is a
+ // @option -no-doc-for-enumvalues.
+ ( NOT ary::is_type<ary::idl::Module>(io_rCe)
+ AND NOT ary::is_type<ary::idl::Enum>(io_rCe) )
+ {
+ TheMessages().Out_MissingDoc(
+ io_rCe.LocalName(),
+ ParseInfo().CurFile(),
+ ParseInfo().CurLine() );
+ }
+}
+
+void
+UnoIDL_PE::InitData()
+{
+ // Needs not anything to do.
+}
+
+void
+UnoIDL_PE::ReceiveData()
+{
+ // Needs not anything to do.
+}
+
+const ary::idl::Module &
+UnoIDL_PE::CurNamespace() const
+{
+ if ( Parent() != 0 )
+ return Parent()->CurNamespace();
+ else
+ {
+ csv_assert(false);
+ return *(const ary::idl::Module*)0;
+ }
+}
+
+const ParserInfo &
+UnoIDL_PE::ParseInfo() const
+{
+ if ( Parent() != 0 )
+ return Parent()->ParseInfo();
+ else
+ {
+ csv_assert(false);
+ return *(const ParserInfo*)0;
+ }
+}
+
+UnoIDL_PE::UnoIDL_PE()
+ : aMyNode(),
+ pDocu(),
+ pRepository(0)
+{
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_attri.cxx b/autodoc/source/parser_i/idl/pe_attri.cxx
new file mode 100644
index 000000000000..31fe8063ea6c
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_attri.cxx
@@ -0,0 +1,297 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_attri.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_attribute.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/pe_vari2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+PE_Attribute::PE_Attribute( const Ce_id & i_rCurOwner )
+ : eState(e_none),
+ pCurOwner(&i_rCurOwner),
+ pPE_Variable(0),
+ pPE_Exception(0),
+ pCurAttribute(0),
+ nCurParsedType(0),
+ sCurParsedName(),
+ bReadOnly(false),
+ bBound(false)
+{
+ pPE_Variable = new PE_Variable(nCurParsedType, sCurParsedName);
+ pPE_Exception = new PE_Type(nCurParsedType);
+}
+
+void
+PE_Attribute::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Variable->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Exception->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Attribute::~PE_Attribute()
+{
+}
+
+void
+PE_Attribute::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Attribute::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ switch (eState)
+ {
+ case e_start:
+ SetResult(not_done, push_sure, pPE_Variable.Ptr());
+ eState = in_variable;
+ break;
+ case in_raise_std:
+ if (strcmp(i_rToken.Text(),"get") == 0)
+ {
+ SetResult(done, stay);
+ eState = in_get;
+ }
+ else if (strcmp(i_rToken.Text(),"set") == 0)
+ {
+ SetResult(done, stay);
+ eState = in_set;
+ }
+ else
+ {
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ }
+ break;
+ case in_get:
+ case in_set:
+ SetResult(not_done, push_sure, pPE_Exception.Ptr());
+ break;
+ default:
+ SetResult(not_done, pop_failure);
+ } // end switch
+}
+
+void
+PE_Attribute::Process_Stereotype( const TokStereotype & i_rToken )
+{
+ if (eState != e_start)
+ {
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ return;
+ }
+
+ switch (i_rToken.Id())
+ {
+ case TokStereotype::ste_readonly:
+ bReadOnly = true;
+ break;
+ case TokStereotype::ste_bound:
+ bBound = true;
+ break;
+ default:
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ return;
+ } // end switch
+
+ SetResult(done, stay);
+}
+
+void
+PE_Attribute::Process_MetaType( const TokMetaType & i_rToken )
+{
+ if (eState != e_start OR i_rToken.Id() != TokMetaType::mt_attribute)
+ {
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ return;
+ }
+
+ SetResult(done, stay);
+}
+
+void
+PE_Attribute::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ switch (eState)
+ {
+ case e_start:
+ SetResult(done, stay);
+ break;
+ case expect_end:
+ switch(i_rToken.Id())
+ {
+ case TokPunctuation::Semicolon:
+ SetResult(done, pop_success);
+ eState = e_none;
+ break;
+ case TokPunctuation::Comma:
+ SetResult(not_done, pop_failure);
+ Cerr() << "Autodoc does not support comma separated attributes, because those are discouraged by IDL policies." << Endl();
+ break;
+ case TokPunctuation::CurledBracketOpen:
+ SetResult(done, stay);
+ eState = in_raise_std;
+ break;
+ default:
+ SetResult(not_done, pop_failure);
+ } // end switch
+ break;
+ case in_raise_std:
+ SetResult(done, stay);
+ if (i_rToken.Id() == TokPunctuation::CurledBracketClose)
+ {
+ eState = expect_end;
+ }
+ break;
+ case in_get:
+ case in_set:
+ SetResult(done, stay);
+ if (i_rToken.Id() == TokPunctuation::Semicolon)
+ {
+ eState = in_raise_std;
+ }
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+void
+PE_Attribute::Process_Raises()
+{
+ if (eState == in_get OR eState == in_set)
+ {
+ SetResult(done, stay);
+ }
+ else
+ SetResult(not_done, pop_failure);
+}
+
+void
+PE_Attribute::Process_Default()
+{
+ if (eState == e_start)
+ {
+ SetResult(not_done, push_sure, pPE_Variable.Ptr());
+ eState = in_variable;
+ }
+ else if (eState == in_get OR eState == in_set)
+ SetResult(not_done, push_sure, pPE_Exception.Ptr());
+ else
+ SetResult(not_done, pop_failure);
+}
+
+void
+PE_Attribute::InitData()
+{
+ eState = e_start;
+
+ pCurAttribute = 0;
+ nCurParsedType = 0;
+ sCurParsedName = "";
+ bReadOnly = false;
+ bBound = false;
+}
+
+void
+PE_Attribute::TransferData()
+{
+ eState = e_none;
+}
+
+void
+PE_Attribute::ReceiveData()
+{
+ switch (eState)
+ {
+ case in_variable:
+ csv_assert(pCurOwner->IsValid());
+ pCurAttribute = &Gate().Ces().Store_Attribute(
+ *pCurOwner,
+ sCurParsedName,
+ nCurParsedType,
+ bReadOnly,
+ bBound );
+ PassDocuAt(*pCurAttribute);
+ nCurParsedType = 0;
+ eState = expect_end;
+ break;
+ case in_get:
+ csv_assert(pCurAttribute != 0);
+ pCurAttribute->Add_GetException(nCurParsedType);
+ nCurParsedType = 0;
+ break;
+ case in_set:
+ csv_assert(pCurAttribute != 0);
+ pCurAttribute->Add_SetException(nCurParsedType);
+ nCurParsedType = 0;
+ break;
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+
+UnoIDL_PE &
+PE_Attribute::MyPE()
+{
+ return *this;
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_const.cxx b/autodoc/source/parser_i/idl/pe_const.cxx
new file mode 100644
index 000000000000..4013f33d02d7
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_const.cxx
@@ -0,0 +1,282 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_const.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_constant.hxx>
+#include <ary/idl/i_constgroup.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/pe_evalu.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+#ifdef DF
+#undef DF
+#endif
+#define DF &PE_Constant::On_Default
+
+PE_Constant::F_TOK
+PE_Constant::aDispatcher[PE_Constant::e_STATES_MAX][PE_Constant::tt_MAX] =
+ { { DF, DF, DF }, // e_none
+ { DF, &PE_Constant::On_expect_name_Identifier,
+ DF }, // expect_name
+ { DF, DF, &PE_Constant::On_expect_curl_bracket_open_Punctuation }, // expect_curl_bracket_open
+ { &PE_Constant::On_expect_const_Stereotype,
+ DF, &PE_Constant::On_expect_const_Punctuation }, // expect_const
+ { DF, &PE_Constant::On_expect_value_Identifier,
+ DF }, // expect_value
+ { DF, DF, &PE_Constant::On_expect_finish_Punctuation } // expect_finish
+ };
+
+
+
+inline void
+PE_Constant::CallHandler( const char * i_sTokenText,
+ E_TokenType i_eTokenType )
+ { (this->*aDispatcher[eState][i_eTokenType])(i_sTokenText); }
+
+
+
+
+PE_Constant::PE_Constant()
+ : eState(e_none),
+ sData_Name(),
+ nDataId(0),
+ pPE_Type(0),
+ nType(0),
+ pPE_Value(0),
+ sName(),
+ sAssignment()
+{
+ pPE_Type = new PE_Type(nType);
+ pPE_Value = new PE_Value(sName, sAssignment, true);
+}
+
+void
+PE_Constant::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Value->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Constant::~PE_Constant()
+{
+}
+
+void
+PE_Constant::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Constant::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_identifier);
+}
+
+void
+PE_Constant::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_punctuation);
+}
+
+void
+PE_Constant::Process_Stereotype( const TokStereotype & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_stereotype);
+}
+
+void
+PE_Constant::On_expect_name_Identifier(const char * i_sText)
+{
+ sName = i_sText;
+
+ SetResult(done,stay);
+ eState = expect_curl_bracket_open;
+}
+
+void
+PE_Constant::On_expect_curl_bracket_open_Punctuation(const char * i_sText)
+{
+ if ( i_sText[0] == '{')
+ {
+ sData_Name = sName;
+
+ ary::idl::ConstantsGroup &
+ rCe = Gate().Ces().
+ Store_ConstantsGroup(CurNamespace().CeId(),sData_Name);
+ PassDocuAt(rCe);
+ nDataId = rCe.CeId();
+
+ SetResult(done,stay);
+ eState = expect_const;
+ }
+ else
+ {
+ On_Default(i_sText);
+ }
+}
+
+void
+PE_Constant::On_expect_const_Stereotype(const char *)
+{
+ SetResult( done, push_sure, pPE_Type.Ptr() );
+}
+
+void
+PE_Constant::On_expect_const_Punctuation(const char * i_sText)
+{
+ if ( i_sText[0] == '}')
+ {
+ SetResult(done,stay);
+ eState = expect_finish;
+ }
+ else
+ {
+ On_Default(i_sText);
+ }
+}
+
+void
+PE_Constant::On_expect_value_Identifier(const char *)
+{
+ SetResult( not_done, push_sure, pPE_Value.Ptr() );
+}
+
+void
+PE_Constant::On_expect_finish_Punctuation(const char * i_sText)
+{
+ if ( i_sText[0] == ';')
+ {
+ SetResult(done,pop_success);
+ eState = e_none;
+ }
+ else
+ {
+ On_Default(i_sText);
+ }
+}
+
+void
+PE_Constant::On_Default(const char * )
+{
+ SetResult(not_done,pop_failure);
+ eState = e_none;
+}
+
+void
+PE_Constant::EmptySingleConstData()
+{
+ nType = 0;
+ sName = "";
+ sAssignment = "";
+}
+
+void
+PE_Constant::CreateSingleConstant()
+{
+ ary::idl::Constant &
+ rCe = Gate().Ces().Store_Constant( nDataId,
+ sName,
+ nType,
+ sAssignment );
+ pPE_Type->PassDocuAt(rCe);
+}
+
+void
+PE_Constant::InitData()
+{
+ eState = expect_name;
+
+ sData_Name.clear();
+ nDataId = 0;
+
+ EmptySingleConstData();
+}
+
+void
+PE_Constant::ReceiveData()
+{
+ switch (eState)
+ {
+ case expect_const:
+ eState = expect_value;
+ break;
+ case expect_value:
+ {
+ if (sName.length() == 0 OR sAssignment.length() == 0 OR NOT nType.IsValid())
+ {
+ Cerr() << "Constant without value found." << Endl();
+ eState = expect_const;
+ break;
+ }
+
+ CreateSingleConstant();
+ EmptySingleConstData();
+ eState = expect_const;
+ } break;
+ default:
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ } // end switch
+}
+
+void
+PE_Constant::TransferData()
+{
+ csv_assert(nDataId.IsValid());
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_Constant::MyPE()
+{
+ return *this;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_enum2.cxx b/autodoc/source/parser_i/idl/pe_enum2.cxx
new file mode 100644
index 000000000000..68fb46d48a56
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_enum2.cxx
@@ -0,0 +1,253 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_enum2.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/i_enumvalue.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_evalu.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+#ifdef DF
+#undef DF
+#endif
+#define DF &PE_Enum::On_Default
+
+PE_Enum::F_TOK
+PE_Enum::aDispatcher[PE_Enum::e_STATES_MAX][PE_Enum::tt_MAX] =
+ { { DF, DF }, // e_none
+ { &PE_Enum::On_expect_name_Identifier,
+ DF }, // expect_name
+ { DF, &PE_Enum::On_expect_curl_bracket_open_Punctuation }, // expect_curl_bracket_open
+ { &PE_Enum::On_expect_value_Identifier,
+ &PE_Enum::On_expect_value_Punctuation }, // expect_value
+ { DF, &PE_Enum::On_expect_finish_Punctuation } // expect_finish
+ };
+
+
+
+inline void
+PE_Enum::CallHandler( const char * i_sTokenText,
+ E_TokenType i_eTokenType )
+ { (this->*aDispatcher[eState][i_eTokenType])(i_sTokenText); }
+
+
+
+
+PE_Enum::PE_Enum()
+ : eState(e_none),
+ sData_Name(),
+ nDataId(0),
+ pPE_Value(0),
+ sName(),
+ sAssignment()
+{
+ pPE_Value = new PE_Value(sName, sAssignment, false);
+}
+
+void
+PE_Enum::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Value->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Enum::~PE_Enum()
+{
+}
+
+void
+PE_Enum::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Enum::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_identifier);
+}
+
+void
+PE_Enum::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_punctuation);
+}
+
+void
+PE_Enum::On_expect_name_Identifier(const char * i_sText)
+{
+ sName = i_sText;
+
+ SetResult(done,stay);
+ eState = expect_curl_bracket_open;
+}
+
+void
+PE_Enum::On_expect_curl_bracket_open_Punctuation(const char * i_sText)
+{
+ if ( i_sText[0] == '{')
+ {
+ sData_Name = sName;
+ ary::idl::Enum &
+ rCe = Gate().Ces().Store_Enum(CurNamespace().CeId(), sData_Name);
+ PassDocuAt(rCe);
+ nDataId = rCe.CeId();
+
+ SetResult(done,stay);
+ eState = expect_value;
+ }
+ else
+ {
+ On_Default(i_sText);
+ }
+}
+
+void
+PE_Enum::On_expect_value_Punctuation(const char * i_sText)
+{
+ if ( i_sText[0] == '}' )
+ {
+ SetResult(done,stay);
+ eState = expect_finish;
+ }
+ else
+ {
+ On_Default(i_sText);
+ }
+}
+
+void
+PE_Enum::On_expect_value_Identifier(const char *)
+{
+ SetResult( not_done, push_sure, pPE_Value.Ptr() );
+}
+
+void
+PE_Enum::On_expect_finish_Punctuation(const char * i_sText)
+{
+ if ( i_sText[0] == ';')
+ {
+ SetResult(done,pop_success);
+ eState = e_none;
+ }
+ else
+ {
+ On_Default(i_sText);
+ }
+}
+
+void
+PE_Enum::On_Default(const char * )
+{
+ SetResult(not_done,pop_failure);
+ eState = e_none;
+}
+
+void
+PE_Enum::EmptySingleValueData()
+{
+ sName = "";
+ sAssignment = "";
+}
+
+void
+PE_Enum::CreateSingleValue()
+{
+ ary::idl::EnumValue &
+ rCe = Gate().Ces().Store_EnumValue( nDataId, sName, sAssignment );
+ pPE_Value->PassDocuAt(rCe);
+}
+
+void
+PE_Enum::InitData()
+{
+ eState = expect_name;
+
+ sData_Name.clear();
+ nDataId = 0;
+
+ EmptySingleValueData();
+}
+
+void
+PE_Enum::ReceiveData()
+{
+ switch (eState)
+ {
+ case expect_value:
+ {
+ if (sName.length() == 0)
+ {
+ On_Default("");
+ break;
+ }
+
+ CreateSingleValue();
+ EmptySingleValueData();
+ } break;
+ default:
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ } // end switch
+}
+
+void
+PE_Enum::TransferData()
+{
+ csv_assert(sData_Name.length() > 0);
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_Enum::MyPE()
+{
+ return *this;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_evalu.cxx b/autodoc/source/parser_i/idl/pe_evalu.cxx
new file mode 100644
index 000000000000..4e1aafabb10b
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_evalu.cxx
@@ -0,0 +1,184 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_evalu.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_enumvalue.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_luidl/tk_const.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+#ifdef DF
+#undef DF
+#endif
+#define DF &PE_Value::On_Default
+
+PE_Value::F_TOK
+PE_Value::aDispatcher[PE_Value::e_STATES_MAX][PE_Value::tt_MAX] =
+ { { DF, DF, DF }, // e_none
+ { &PE_Value::On_expect_name_Identifier,
+ DF, DF }, // expect_name
+ { DF, &PE_Value::On_got_name_Punctuation,
+ &PE_Value::On_got_name_Assignment } // got_name
+ };
+
+
+
+inline void
+PE_Value::CallHandler( const char * i_sTokenText,
+ E_TokenType i_eTokenType )
+ { (this->*aDispatcher[eState][i_eTokenType])(i_sTokenText); }
+
+
+
+
+
+PE_Value::PE_Value( String & o_rName,
+ String & o_rAssignment,
+ bool i_bIsConst )
+ : eState(e_none),
+ pName(&o_rName),
+ pAssignment(&o_rAssignment),
+ bIsConst(i_bIsConst)
+{
+}
+
+void
+PE_Value::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+}
+
+PE_Value::~PE_Value()
+{
+}
+
+void
+PE_Value::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Value::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_identifier);
+}
+
+void
+PE_Value::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_punctuation);
+}
+
+void
+PE_Value::Process_Assignment( const TokAssignment & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_assignment);
+}
+
+void
+PE_Value::On_expect_name_Identifier(const char * i_sText)
+{
+ *pName = i_sText;
+ SetResult(done,stay);
+ eState = got_name;
+}
+
+void
+PE_Value::On_got_name_Punctuation(const char * i_sText)
+{
+ if ( (i_sText[0] == ',' AND NOT IsConst())
+ OR (i_sText[0] == ';' AND IsConst()) )
+ {
+ SetResult(done,pop_success);
+ eState = e_none;
+ }
+ else if (i_sText[0] == '}' AND NOT IsConst())
+ {
+ SetResult(not_done,pop_success);
+ eState = e_none;
+ }
+ else
+ On_Default(i_sText);
+}
+
+void
+PE_Value::On_got_name_Assignment(const char * i_sText)
+{
+ *pAssignment = i_sText;
+ SetResult(done,pop_success);
+ eState = e_none;
+}
+
+void
+PE_Value::On_Default(const char * )
+{
+ SetResult(not_done,pop_failure);
+}
+
+void
+PE_Value::InitData()
+{
+ eState = expect_name;
+
+ *pName = "";
+ *pAssignment = "";
+}
+
+void
+PE_Value::TransferData()
+{
+ csv_assert(pName->length() > 0);
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_Value::MyPE()
+{
+ return *this;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_excp.cxx b/autodoc/source/parser_i/idl/pe_excp.cxx
new file mode 100644
index 000000000000..23d3843583bb
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_excp.cxx
@@ -0,0 +1,301 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_excp.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_structelem.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/pe_selem.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+PE_Exception::PE_Exception()
+ // : aWork,
+ // pStati
+{
+ pStati = new S_Stati(*this);
+}
+
+void
+PE_Exception::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ Work().pPE_Element->EstablishContacts(this,io_rRepository,o_rResult);
+ Work().pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Exception::~PE_Exception()
+{
+}
+
+void
+PE_Exception::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*Stati().pCurStatus);
+}
+
+
+void
+PE_Exception::InitData()
+{
+ Work().InitData();
+ Stati().pCurStatus = &Stati().aWaitForName;
+}
+
+void
+PE_Exception::TransferData()
+{
+ if (NOT Work().bIsPreDeclaration)
+ {
+ csv_assert(Work().sData_Name.size() > 0);
+ csv_assert(Work().nCurStruct.IsValid());
+ }
+ Stati().pCurStatus = &Stati().aNone;
+}
+
+void
+PE_Exception::ReceiveData()
+{
+ Stati().pCurStatus->On_SubPE_Left();
+}
+
+PE_Exception::S_Work::S_Work()
+ : sData_Name(),
+ bIsPreDeclaration(false),
+ nCurStruct(0),
+ pPE_Element(0),
+ nCurParsed_ElementRef(0),
+ pPE_Type(0),
+ nCurParsed_Base(0)
+
+{
+ pPE_Element = new PE_StructElement(nCurParsed_ElementRef,nCurStruct);
+ pPE_Type = new PE_Type(nCurParsed_Base);
+}
+
+void
+PE_Exception::S_Work::InitData()
+{
+ sData_Name.clear();
+ bIsPreDeclaration = false;
+ nCurStruct = 0;
+
+ nCurParsed_ElementRef = 0;
+ nCurParsed_Base = 0;
+}
+
+void
+PE_Exception::S_Work::Prepare_PE_QualifiedName()
+{
+ nCurParsed_ElementRef = 0;
+}
+
+void
+PE_Exception::S_Work::Prepare_PE_Element()
+{
+ nCurParsed_Base = 0;
+}
+
+void
+PE_Exception::S_Work::Data_Set_Name( const char * i_sName )
+{
+ sData_Name = i_sName;
+}
+
+PE_Exception::S_Stati::S_Stati(PE_Exception & io_rStruct)
+ : aNone(io_rStruct),
+ aWaitForName(io_rStruct),
+ aGotName(io_rStruct),
+ aWaitForBase(io_rStruct),
+ aGotBase(io_rStruct),
+ aWaitForElement(io_rStruct),
+ aWaitForFinish(io_rStruct),
+ pCurStatus(0)
+{
+ pCurStatus = &aNone;
+}
+
+
+//*********************** Stati ***************************//
+
+
+UnoIDL_PE &
+PE_Exception::PE_StructState::MyPE()
+{
+ return rStruct;
+}
+
+
+void
+PE_Exception::State_WaitForName::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ Work().Data_Set_Name(i_rToken.Text());
+ MoveState( Stati().aGotName );
+ SetResult(done,stay);
+}
+
+void
+PE_Exception::State_GotName::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if ( i_rToken.Id() != TokPunctuation::Semicolon )
+ {
+ switch (i_rToken.Id())
+ {
+ case TokPunctuation::Colon:
+ MoveState( Stati().aWaitForBase );
+ SetResult(done,push_sure,Work().pPE_Type.Ptr());
+ Work().Prepare_PE_QualifiedName();
+ break;
+ case TokPunctuation::CurledBracketOpen:
+ PE().store_Exception();
+ MoveState( Stati().aWaitForElement );
+ SetResult(done,stay);
+ break;
+ default:
+ SetResult(not_done,pop_failure);
+ } // end switch
+ }
+ else
+ {
+ Work().sData_Name.clear();
+ SetResult(done,pop_success);
+ }
+}
+
+void
+PE_Exception::State_WaitForBase::On_SubPE_Left()
+{
+ MoveState(Stati().aGotBase);
+}
+
+void
+PE_Exception::State_GotBase::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if ( i_rToken.Id() == TokPunctuation::CurledBracketOpen )
+ {
+ PE().store_Exception();
+ MoveState( Stati().aWaitForElement );
+ SetResult(done,stay);
+ }
+ else
+ {
+ SetResult(not_done,pop_failure);
+ }
+}
+
+void
+PE_Exception::State_WaitForElement::Process_Identifier( const TokIdentifier & )
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr() );
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Exception::State_WaitForElement::Process_NameSeparator()
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr());
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Exception::State_WaitForElement::Process_BuiltInType( const TokBuiltInType & )
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr());
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Exception::State_WaitForElement::Process_TypeModifier(const TokTypeModifier & )
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr());
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Exception::State_WaitForElement::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if ( i_rToken.Id() == TokPunctuation::CurledBracketClose )
+ {
+ MoveState( Stati().aWaitForFinish );
+ SetResult( done, stay );
+ }
+ else
+ {
+ SetResult( not_done, pop_failure );
+ }
+}
+
+void
+PE_Exception::State_WaitForFinish::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if (i_rToken.Id() == TokPunctuation::Semicolon)
+ {
+ MoveState( Stati().aNone );
+ SetResult( done, pop_success );
+ }
+ else
+ {
+ SetResult( not_done, pop_failure );
+ }
+}
+
+void
+PE_Exception::store_Exception()
+{
+ ary::idl::Exception &
+ rCe = Gate().Ces().Store_Exception(
+ CurNamespace().CeId(),
+ Work().sData_Name,
+ Work().nCurParsed_Base );
+ PassDocuAt(rCe);
+ Work().nCurStruct = rCe.Id();
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_file2.cxx b/autodoc/source/parser_i/idl/pe_file2.cxx
new file mode 100644
index 000000000000..144470f8945e
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_file2.cxx
@@ -0,0 +1,320 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_file2.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/distrib.hxx>
+#include <s2_luidl/pe_servi.hxx>
+#include <s2_luidl/pe_iface.hxx>
+#include <s2_luidl/pe_singl.hxx>
+#include <s2_luidl/pe_struc.hxx>
+#include <s2_luidl/pe_excp.hxx>
+#include <s2_luidl/pe_const.hxx>
+#include <s2_luidl/pe_enum2.hxx>
+#include <s2_luidl/pe_tydf2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+PE_File::PE_File( TokenDistributor & i_rTokenAdmin,
+ const ParserInfo & i_parseInfo )
+ : pTokenAdmin(&i_rTokenAdmin),
+ pPE_Service(new PE_Service),
+ pPE_Singleton(new PE_Singleton),
+ pPE_Interface(new PE_Interface),
+ pPE_Struct(new PE_Struct),
+ pPE_Exception(new PE_Exception),
+ pPE_Constant(new PE_Constant),
+ pPE_Enum(new PE_Enum),
+ pPE_Typedef(new PE_Typedef),
+ pCurNamespace(0),
+ pParseInfo(&i_parseInfo),
+ eState(e_none),
+ nBracketCount_inDefMode(0)
+{
+}
+
+void
+PE_File::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Service->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Singleton->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Interface->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Struct->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Exception->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Constant->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Enum->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Typedef->EstablishContacts(this,io_rRepository,o_rResult);
+
+ pCurNamespace = &Gate().Ces().GlobalNamespace();
+}
+
+PE_File::~PE_File()
+{
+}
+
+void
+PE_File::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_File::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ switch (eState)
+ {
+ case wait_for_module:
+ {
+ csv_assert(pCurNamespace != 0);
+
+ ary::idl::Module & rCe = Gate().Ces().CheckIn_Module(pCurNamespace->CeId(), i_rToken.Text());
+ pCurNamespace = &rCe;
+
+ // Get docu out of normal:
+ SetDocu(pTokenAdmin->ReleaseLastParsedDocu());
+ PassDocuAt(rCe);
+
+ csv_assert(pCurNamespace != 0);
+
+ SetResult(done, stay);
+ eState = wait_for_module_bracket;
+ } break;
+ case on_default:
+ SetResult(done, stay);
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+void
+PE_File::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ switch (eState)
+ {
+ case e_std:
+ if (i_rToken.Id() == TokPunctuation::CurledBracketClose)
+ {
+ csv_assert(pCurNamespace != 0);
+
+ pCurNamespace = &Gate().Ces().Find_Module(pCurNamespace->Owner());
+
+ SetResult(done, stay);
+ eState = wait_for_module_semicolon;
+ }
+ else
+ {
+ csv_assert(false);
+ }
+ break;
+ case wait_for_module_bracket:
+ if (i_rToken.Id() == TokPunctuation::CurledBracketOpen)
+ {
+ SetResult(done, stay);
+ eState = e_std;
+ }
+ else
+ {
+ csv_assert(false);
+ }
+ break;
+ case wait_for_module_semicolon:
+ if (i_rToken.Id() == TokPunctuation::Semicolon)
+ {
+ SetResult(done, stay);
+ eState = e_std;
+ }
+ else
+ {
+ csv_assert(false);
+ }
+ break;
+ case on_default:
+ if (i_rToken.Id() == TokPunctuation::CurledBracketClose)
+ {
+ nBracketCount_inDefMode--;
+ }
+ else if (i_rToken.Id() == TokPunctuation::CurledBracketOpen)
+ {
+ nBracketCount_inDefMode++;
+ }
+ else if (i_rToken.Id() == TokPunctuation::Semicolon)
+ {
+ if (nBracketCount_inDefMode <= 0)
+ {
+ eState = e_std;
+ }
+ }
+ SetResult(done, stay);
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+void
+PE_File::Process_MetaType( const TokMetaType & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case TokMetaType::mt_service:
+ eState = in_sub_pe;
+ SetResult( not_done, push_sure, pPE_Service.Ptr());
+ break;
+ case TokMetaType::mt_singleton:
+ eState = in_sub_pe;
+ SetResult( not_done, push_sure, pPE_Singleton.Ptr());
+ break;
+ case TokMetaType::mt_uik:
+ Cerr() << "Syntax error: [uik ....] is obsolete now." << Endl();
+ SetResult( not_done, pop_failure);
+ break;
+ case TokMetaType::mt_interface:
+ eState = in_sub_pe;
+ SetResult( not_done, push_sure, pPE_Interface.Ptr());
+ break;
+ case TokMetaType::mt_module:
+ eState = wait_for_module;
+ SetResult( done, stay );
+ break;
+ case TokMetaType::mt_struct:
+ eState = in_sub_pe;
+ SetResult( done, push_sure, pPE_Struct.Ptr());
+ break;
+ case TokMetaType::mt_exception:
+ eState = in_sub_pe;
+ SetResult( done, push_sure, pPE_Exception.Ptr());
+ break;
+ case TokMetaType::mt_constants:
+ eState = in_sub_pe;
+ SetResult( done, push_sure, pPE_Constant.Ptr());
+ break;
+ case TokMetaType::mt_enum:
+ eState = in_sub_pe;
+ SetResult( done, push_sure, pPE_Enum.Ptr());
+ break;
+ case TokMetaType::mt_typedef:
+ eState = in_sub_pe;
+ SetResult( done, push_sure, pPE_Typedef.Ptr());
+ break;
+
+ default:
+ Process_Default();
+ } // end switch
+}
+
+void
+PE_File::Process_Stereotype( const TokStereotype & i_rToken )
+{
+ if (i_rToken.Id() == TokStereotype::ste_published)
+ {
+ pTokenAdmin->Set_PublishedOn();
+
+ SetResult(done, stay);
+ }
+ else
+ {
+ Process_Default();
+ }
+}
+
+void
+PE_File::Process_Default()
+{
+ if (eState != on_default)
+ {
+ eState = on_default;
+ nBracketCount_inDefMode = 0;
+ }
+ SetResult(done, stay);
+}
+
+const ary::idl::Module &
+PE_File::CurNamespace() const
+{
+ csv_assert(pCurNamespace);
+ return *pCurNamespace;
+}
+
+const ParserInfo &
+PE_File::ParseInfo() const
+{
+ csv_assert(pParseInfo);
+ return *pParseInfo;
+}
+
+void
+PE_File::InitData()
+{
+ eState = e_std;
+}
+
+void
+PE_File::TransferData()
+{
+ eState = e_none;
+}
+
+void
+PE_File::ReceiveData()
+{
+ eState = e_std;
+}
+
+
+UnoIDL_PE &
+PE_File::MyPE()
+{
+ return *this;
+}
+
+} // namespace uidl
+} // namespace csi
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_func2.cxx b/autodoc/source/parser_i/idl/pe_func2.cxx
new file mode 100644
index 000000000000..64a0c6d65736
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_func2.cxx
@@ -0,0 +1,447 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_func2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_function.hxx>
+#include <ary/idl/i_type.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/pe_vari2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <x_parse2.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+PE_Function::PE_Function( const RParent & i_rCurInterface )
+ : eState(e_none),
+ sData_Name(),
+ nData_ReturnType(0),
+ bData_Oneway(false),
+ pCurFunction(0),
+ pCurParent(&i_rCurInterface),
+ pPE_Type(0),
+ nCurParsedType(0),
+ sName(),
+ pPE_Variable(0),
+ eCurParsedParam_Direction(ary::idl::param_in),
+ nCurParsedParam_Type(0),
+ sCurParsedParam_Name(),
+ bIsForConstructors(false)
+{
+ pPE_Type = new PE_Type(nCurParsedType);
+ pPE_Variable = new PE_Variable(nCurParsedParam_Type, sCurParsedParam_Name);
+}
+
+PE_Function::PE_Function( const RParent & i_rCurService,
+ E_Constructor )
+ : eState(expect_name),
+ sData_Name(),
+ nData_ReturnType(0),
+ bData_Oneway(false),
+ pCurFunction(0),
+ pCurParent(&i_rCurService),
+ pPE_Type(0),
+ nCurParsedType(0),
+ sName(),
+ pPE_Variable(0),
+ eCurParsedParam_Direction(ary::idl::param_in),
+ nCurParsedParam_Type(0),
+ sCurParsedParam_Name(),
+ bIsForConstructors(true)
+{
+ pPE_Type = new PE_Type(nCurParsedType);
+ pPE_Variable = new PE_Variable(nCurParsedParam_Type, sCurParsedParam_Name);
+}
+
+void
+PE_Function::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Variable->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Function::~PE_Function()
+{
+}
+
+void
+PE_Function::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Function::Process_Stereotype( const TokStereotype & i_rToken )
+{
+ if (eState == e_start)
+ {
+ switch (i_rToken.Id())
+ {
+ case TokStereotype::ste_oneway:
+ bData_Oneway = true;
+ SetResult(done, stay);
+ break;
+ default:
+ OnDefault();
+ } // end switch
+ }
+ else
+ OnDefault();
+}
+
+void
+PE_Function::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ switch (eState)
+ {
+ case e_start:
+ GoIntoReturnType();
+ break;
+ case expect_name:
+ sData_Name = i_rToken.Text();
+ SetResult(done,stay);
+ eState = expect_params_list;
+
+ if (NOT bIsForConstructors)
+ {
+ pCurFunction = &Gate().Ces().Store_Function(
+ *pCurParent,
+ sData_Name,
+ nData_ReturnType,
+ bData_Oneway );
+ }
+ else
+ {
+ pCurFunction = &Gate().Ces().Store_ServiceConstructor(
+ *pCurParent,
+ sData_Name );
+ }
+ PassDocuAt(*pCurFunction);
+ break;
+ case expect_parameter_variable:
+ GoIntoParameterVariable();
+ break;
+ case expect_exception:
+ GoIntoException();
+ break;
+ default:
+ OnDefault();
+ }
+}
+
+void
+PE_Function::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ switch (eState)
+ {
+ case e_start:
+ SetResult(done,stay);
+ break;
+ case expect_params_list:
+ if (i_rToken.Id() != TokPunctuation::BracketOpen)
+ {
+ OnDefault();
+ return;
+ }
+ SetResult(done,stay);
+ eState = expect_parameter;
+ break;
+ case expect_parameter:
+ if (i_rToken.Id() == TokPunctuation::BracketClose)
+ {
+ SetResult(done,stay);
+ eState = params_finished;
+ }
+ else
+ {
+ OnDefault();
+ return;
+ }
+ break;
+ case expect_parameter_separator:
+ if (i_rToken.Id() == TokPunctuation::Comma)
+ {
+ SetResult(done,stay);
+ eState = expect_parameter;
+ }
+ else if (i_rToken.Id() == TokPunctuation::BracketClose)
+ {
+ SetResult(done,stay);
+ eState = params_finished;
+ }
+ else
+ {
+ OnDefault();
+ return;
+ }
+ break;
+ case params_finished:
+ case exceptions_finished:
+ if (i_rToken.Id() != TokPunctuation::Semicolon)
+ {
+ OnDefault();
+ return;
+ }
+ SetResult(done,pop_success);
+ eState = e_none;
+ break;
+ case expect_exceptions_list:
+ if (i_rToken.Id() != TokPunctuation::BracketOpen)
+ {
+ OnDefault();
+ return;
+ }
+ SetResult(done,stay);
+ eState = expect_exception;
+ break;
+ case expect_exception_separator:
+ if (i_rToken.Id() == TokPunctuation::Comma)
+ {
+ SetResult(done,stay);
+ eState = expect_exception;
+ }
+ else if (i_rToken.Id() == TokPunctuation::BracketClose)
+ {
+ SetResult(done,stay);
+ eState = exceptions_finished;
+ }
+ else
+ {
+ OnDefault();
+ return;
+ }
+ break;
+ default:
+ OnDefault();
+ }
+}
+
+void
+PE_Function::Process_BuiltInType( const TokBuiltInType & i_rToken )
+{
+ switch (eState)
+ {
+ case e_start:
+ GoIntoReturnType();
+ break;
+ case expect_parameter_variable:
+ GoIntoParameterVariable();
+ break;
+ case expect_parameter_separator:
+ if (i_rToken.Id() != TokBuiltInType::bty_ellipse)
+ {
+ OnDefault();
+ }
+ else
+ {
+ pCurFunction->Set_Ellipse();
+ SetResult(done,stay);
+ // eState stays the same, because we wait for the closing ")" now.
+ }
+ break;
+ case expect_exception:
+ GoIntoException();
+ break;
+ default:
+ OnDefault();
+ } // end switch
+}
+
+void
+PE_Function::Process_ParameterHandling( const TokParameterHandling & i_rToken )
+{
+ if (eState != expect_parameter)
+ {
+ OnDefault();
+ return;
+ }
+
+ switch (i_rToken.Id())
+ {
+ case TokParameterHandling::ph_in:
+ eCurParsedParam_Direction = ary::idl::param_in;
+ break;
+ case TokParameterHandling::ph_out:
+ eCurParsedParam_Direction = ary::idl::param_out;
+ break;
+ case TokParameterHandling::ph_inout:
+ eCurParsedParam_Direction = ary::idl::param_inout;
+ break;
+ default:
+ csv_assert(false);
+ }
+ SetResult(done,stay);
+ eState = expect_parameter_variable;
+}
+
+void
+PE_Function::Process_Raises()
+{
+ if (eState != params_finished)
+ {
+ OnDefault();
+ return;
+ }
+ SetResult(done,stay);
+ eState = expect_exceptions_list;
+}
+
+void
+PE_Function::Process_Default()
+{
+ switch (eState)
+ {
+ case e_start:
+ GoIntoReturnType();
+ break;
+ case expect_parameter_variable:
+ GoIntoParameterVariable();
+ break;
+ case expect_exception:
+ GoIntoException();
+ break;
+ default:
+ OnDefault();
+ } // end switch
+}
+
+void
+PE_Function::GoIntoReturnType()
+{
+ SetResult(not_done, push_sure, pPE_Type.Ptr());
+ eState = in_return_type;
+}
+
+void
+PE_Function::GoIntoParameterVariable()
+{
+ SetResult(not_done, push_sure, pPE_Variable.Ptr());
+ eState = in_parameter_variable;
+}
+
+void
+PE_Function::GoIntoException()
+{
+ SetResult(not_done, push_sure, pPE_Type.Ptr());
+ eState = in_exception;
+}
+
+void
+PE_Function::OnDefault()
+{
+ throw X_AutodocParser(X_AutodocParser::x_Any);
+}
+
+void
+PE_Function::InitData()
+{
+ eState = e_start;
+
+ sData_Name.clear();
+ nData_ReturnType = 0;
+ bData_Oneway = false;
+ pCurFunction = 0;
+
+ nCurParsedType = 0;
+ eCurParsedParam_Direction = ary::idl::param_in;
+ nCurParsedParam_Type = 0;
+ sCurParsedParam_Name.clear();
+
+ if (bIsForConstructors)
+ {
+ eState = expect_name;
+ }
+}
+
+void
+PE_Function::ReceiveData()
+{
+ switch (eState)
+ {
+ case in_return_type:
+ nData_ReturnType = nCurParsedType;
+ nCurParsedType = 0;
+ eState = expect_name;
+ break;
+ case in_parameter_variable:
+ csv_assert(pCurFunction != 0);
+ pCurFunction->Add_Parameter(
+ sCurParsedParam_Name,
+ nCurParsedParam_Type,
+ eCurParsedParam_Direction );
+ sCurParsedParam_Name = "";
+ nCurParsedParam_Type = 0;
+ eCurParsedParam_Direction = ary::idl::param_in;
+ eState = expect_parameter_separator;
+ break;
+ case in_exception:
+ csv_assert(pCurFunction != 0);
+ pCurFunction->Add_Exception(nCurParsedType);
+ eState = expect_exception_separator;
+ break;
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+void
+PE_Function::TransferData()
+{
+ pCurFunction = 0;
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_Function::MyPE()
+{
+ return *this;
+}
+
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_iface.cxx b/autodoc/source/parser_i/idl/pe_iface.cxx
new file mode 100644
index 000000000000..404c303d2c04
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_iface.cxx
@@ -0,0 +1,470 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_iface.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_interface.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_func2.hxx>
+#include <s2_luidl/pe_attri.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <adc_cl.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+#ifdef DF
+#undef DF
+#endif
+#define DF &PE_Interface::On_Default
+
+PE_Interface::F_TOK
+PE_Interface::aDispatcher[PE_Interface::e_STATES_MAX][PE_Interface::tt_MAX] =
+ { { DF, DF, DF, DF, DF }, // e_none
+ { &PE_Interface::On_need_uik_MetaType,
+ DF, DF, DF, DF }, // need_uik
+ { DF, &PE_Interface::On_uik_Identifier,
+ &PE_Interface::On_uik_Punctuation,
+ DF, DF }, // uik
+ { &PE_Interface::On_need_ident_MetaType,
+ DF, DF, DF, DF }, // need_ident
+ { DF, &PE_Interface::On_ident_Identifier,
+ &PE_Interface::On_ident_Punctuation,
+ DF, DF }, // ident
+ { &PE_Interface::On_need_interface_MetaType,
+ DF, DF, DF, DF }, // need_interface
+ { DF, &PE_Interface::On_need_name_Identifer,
+ DF, DF, DF }, // need_name
+ { DF, DF, &PE_Interface::On_wait_for_base_Punctuation,
+ DF, DF }, // wait_for_base
+ { DF, DF, DF, DF, DF }, // in_base
+ { DF, DF, &PE_Interface::On_need_curlbr_open_Punctuation,
+ DF, DF }, // need_curlbr_open
+ { &PE_Interface::On_std_Metatype,
+ &PE_Interface::On_std_GotoFunction,
+ &PE_Interface::On_std_Punctuation,
+ &PE_Interface::On_std_GotoFunction,
+ &PE_Interface::On_std_Stereotype }, // e_std
+ { DF, DF, DF, DF, DF }, // in_function
+ { DF, DF, DF, DF, DF }, // in_attribute
+ { DF, DF, &PE_Interface::On_need_finish_Punctuation,
+ DF, DF }, // need_finish
+ { DF, DF, DF, DF, DF } // in_base_interface
+ };
+
+
+
+inline void
+PE_Interface::CallHandler( const char * i_sTokenText,
+ E_TokenType i_eTokenType )
+ { (this->*aDispatcher[eState][i_eTokenType])(i_sTokenText); }
+
+
+
+PE_Interface::PE_Interface()
+ : eState(e_none),
+ sData_Name(),
+ bIsPreDeclaration(false),
+ pCurInterface(0),
+ nCurInterface(0),
+ pPE_Function(0),
+ pPE_Attribute(0),
+ pPE_Type(0),
+ nCurParsed_Base(0),
+ bOptionalMember(false)
+{
+ pPE_Function = new PE_Function(nCurInterface);
+ pPE_Type = new PE_Type(nCurParsed_Base);
+ pPE_Attribute = new PE_Attribute(nCurInterface);
+}
+
+void
+PE_Interface::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Function->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Attribute->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Interface::~PE_Interface()
+{
+}
+
+void
+PE_Interface::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+
+void
+PE_Interface::Process_MetaType( const TokMetaType & i_rToken )
+{
+ CallHandler( i_rToken.Text(), tt_metatype );
+}
+
+void
+PE_Interface::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ CallHandler( i_rToken.Text(), tt_identifier );
+}
+
+void
+PE_Interface::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ CallHandler( i_rToken.Text(), tt_punctuation );
+}
+
+void
+PE_Interface::Process_NameSeparator()
+{
+ CallHandler( "", tt_startoftype );
+}
+
+void
+PE_Interface::Process_BuiltInType( const TokBuiltInType & i_rToken )
+{
+ CallHandler( i_rToken.Text(), tt_startoftype );
+}
+
+void
+PE_Interface::Process_TypeModifier( const TokTypeModifier & i_rToken )
+{
+ CallHandler( i_rToken.Text(), tt_startoftype );
+}
+
+void
+PE_Interface::Process_Stereotype( const TokStereotype & i_rToken )
+{
+ CallHandler( i_rToken.Text(), tt_stereotype );
+}
+
+void
+PE_Interface::Process_Default()
+{
+ SetResult(done, stay);
+}
+
+
+void
+PE_Interface::On_need_uik_MetaType(const char *)
+{
+ // Deprecated, data will be ignored
+ SetResult(done, stay);
+ eState = uik;
+}
+
+void
+PE_Interface::On_uik_Identifier(const char *)
+{
+ // Deprecated, data will be ignored
+ SetResult(done, stay);
+}
+
+void
+PE_Interface::On_uik_Punctuation(const char * i_sText)
+{
+ // Deprecated, data will be ignored
+ SetResult(done, stay);
+ if (strcmp(",",i_sText) == 0)
+ {
+ eState = need_ident;
+ }
+}
+
+void
+PE_Interface::On_need_ident_MetaType(const char *)
+{
+ SetResult(done, stay);
+ eState = ident;
+}
+
+void
+PE_Interface::On_ident_Identifier(const char *)
+{
+ SetResult(done, stay);
+}
+
+void
+PE_Interface::On_ident_Punctuation(const char * i_sText)
+{
+ SetResult(done, stay);
+ if (strcmp(")",i_sText) == 0)
+ {
+ eState = need_interface;
+ }
+}
+
+void
+PE_Interface::On_need_interface_MetaType(const char *)
+{
+ SetResult(done, stay);
+ eState = need_name;
+}
+
+void
+PE_Interface::On_need_name_Identifer(const char * i_sText)
+{
+ SetResult(done, stay);
+ sData_Name = i_sText;
+ eState = wait_for_base;
+}
+
+void
+PE_Interface::On_wait_for_base_Punctuation(const char * i_sText)
+{
+ if (i_sText[0] != ';')
+ {
+ switch (i_sText[0])
+ {
+ case ':':
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_base;
+ break;
+ case '{':
+ store_Interface();
+
+ SetResult(done,stay);
+ eState = e_std;
+ break;
+ default:
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ } // end switch
+ }
+ else
+ {
+ bIsPreDeclaration = true;
+ SetResult(done, pop_success);
+ eState = e_none;
+ }
+}
+
+void
+PE_Interface::On_need_curlbr_open_Punctuation(const char * i_sText)
+{
+ if (i_sText[0] == '{')
+ {
+ store_Interface();
+
+ SetResult(done, stay);
+ eState = e_std;
+ }
+ else {
+ csv_assert(false);
+ }
+}
+
+
+void
+PE_Interface::On_std_Metatype(const char * i_sText)
+{
+ if (strcmp(i_sText,"attribute") == 0)
+ On_std_GotoAttribute(i_sText);
+ else if (strcmp(i_sText,"interface") == 0)
+ On_std_GotoBaseInterface(i_sText);
+ else
+ On_std_GotoFunction(i_sText);
+}
+
+void
+PE_Interface::On_std_Punctuation(const char * i_sText)
+{
+ switch (i_sText[0])
+ {
+ case '}':
+ SetResult(done, stay);
+ eState = need_finish;
+ break;
+ case ';': // Appears after base interface declarations.
+ SetResult(done, stay);
+ break;
+ default:
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ } // end switch
+}
+
+void
+PE_Interface::On_std_Stereotype(const char * i_sText)
+{
+ if (strcmp(i_sText,"oneway") == 0)
+ On_std_GotoFunction(i_sText);
+ else if ( strcmp(i_sText,"readonly") == 0
+ OR strcmp(i_sText,"bound") == 0 )
+ On_std_GotoAttribute(i_sText);
+ else if (strcmp(i_sText,"optional") == 0)
+ {
+ bOptionalMember = true;
+ SetResult(done, stay);
+ }
+ else
+ SetResult(not_done, pop_failure);
+}
+
+void
+PE_Interface::On_std_GotoFunction(const char * )
+{
+ SetResult(not_done, push_sure, pPE_Function.Ptr());
+ eState = in_function;
+}
+
+void
+PE_Interface::On_std_GotoAttribute(const char * )
+{
+ SetResult(not_done, push_sure, pPE_Attribute.Ptr());
+ eState = in_attribute;
+}
+
+void
+PE_Interface::On_std_GotoBaseInterface(const char * )
+{
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_base_interface;
+}
+
+void
+PE_Interface::On_need_finish_Punctuation(const char * i_sText)
+{
+ switch (i_sText[0])
+ {
+ case ';':
+ SetResult(done, pop_success);
+ eState = e_none;
+ break;
+ default:
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ } // end switch
+}
+
+void
+PE_Interface::On_Default(const char *)
+{
+ SetResult(not_done, pop_failure);
+}
+
+void
+PE_Interface::InitData()
+{
+ eState = need_interface;
+
+ sData_Name.clear();
+ bIsPreDeclaration = false;
+ pCurInterface = 0;
+ nCurInterface = 0;
+ nCurParsed_Base = 0;
+ bOptionalMember = false;
+}
+
+void
+PE_Interface::TransferData()
+{
+ if (NOT bIsPreDeclaration)
+ {
+ csv_assert(sData_Name.size() > 0);
+ csv_assert(nCurInterface.IsValid());
+ }
+ else
+ {
+ sData_Name.clear();
+ pCurInterface = 0;
+ nCurInterface = 0;
+ }
+
+ eState = e_none;
+}
+
+void
+PE_Interface::ReceiveData()
+{
+ switch (eState)
+ {
+ case in_base:
+ eState = need_curlbr_open;
+ break;
+ case in_function:
+ eState = e_std;
+ break;
+ case in_attribute:
+ eState = e_std;
+ break;
+ case in_base_interface:
+ if (bOptionalMember)
+ {
+ pPE_Type->SetOptional();
+ bOptionalMember = false;
+ }
+ pCurInterface->Add_Base(
+ nCurParsed_Base,
+ pPE_Type->ReleaseDocu());
+ nCurParsed_Base = 0;
+ eState = e_std;
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+UnoIDL_PE &
+PE_Interface::MyPE()
+{
+ return *this;
+}
+
+void
+PE_Interface::store_Interface()
+{
+ pCurInterface = & Gate().Ces().Store_Interface(
+ CurNamespace().CeId(),
+ sData_Name,
+ nCurParsed_Base );
+ nCurInterface = pCurInterface->CeId();
+ PassDocuAt(*pCurInterface);
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_property.cxx b/autodoc/source/parser_i/idl/pe_property.cxx
new file mode 100644
index 000000000000..fc138b3c9d27
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_property.cxx
@@ -0,0 +1,240 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_property.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_property.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_vari2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+PE_Property::PE_Property( const Ce_id & i_rCurOwner )
+ : eState(e_none),
+ pCurOwner(&i_rCurOwner),
+ pPE_Variable(0),
+ nCurParsedType(0),
+ sCurParsedName(),
+ bIsOptional(false),
+ aStereotypes()
+{
+ pPE_Variable = new PE_Variable(nCurParsedType, sCurParsedName);
+}
+
+void
+PE_Property::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Variable->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Property::~PE_Property()
+{
+}
+
+void
+PE_Property::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Property::Process_Stereotype( const TokStereotype & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case TokStereotype::ste_optional:
+ bIsOptional = true;
+ break;
+ case TokStereotype::ste_readonly:
+ aStereotypes.Set_Flag(Stereotypes::readonly);
+ break;
+ case TokStereotype::ste_bound:
+ aStereotypes.Set_Flag(Stereotypes::bound);
+ break;
+ case TokStereotype::ste_constrained:
+ aStereotypes.Set_Flag(Stereotypes::constrained);
+ break;
+ case TokStereotype::ste_maybeambiguous:
+ aStereotypes.Set_Flag(Stereotypes::maybeambiguous);
+ break;
+ case TokStereotype::ste_maybedefault:
+ aStereotypes.Set_Flag(Stereotypes::maybedefault);
+ break;
+ case TokStereotype::ste_maybevoid:
+ aStereotypes.Set_Flag(Stereotypes::maybevoid);
+ break;
+ case TokStereotype::ste_removable:
+ aStereotypes.Set_Flag(Stereotypes::removable);
+ break;
+ case TokStereotype::ste_transient:
+ aStereotypes.Set_Flag(Stereotypes::transient);
+ break;
+
+ default:
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+ return;
+ }
+
+ SetResult(done, stay);
+}
+
+void
+PE_Property::Process_MetaType( const TokMetaType & i_rToken )
+{
+ if (eState == e_start)
+ {
+ if ( i_rToken.Id() == TokMetaType::mt_property )
+ {
+ SetResult(done, stay);
+ eState = expect_variable;
+ return;
+ }
+ } // endif (eState == e_start)
+
+ SetResult(not_done, pop_failure);
+ eState = e_none;
+}
+
+void
+PE_Property::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ switch (eState)
+ {
+ case e_start:
+ SetResult(done, stay);
+ break;
+ case expect_variable:
+ if (i_rToken.Id() == TokPunctuation::Semicolon)
+ {
+ SetResult(done, pop_success);
+ eState = e_none;
+ }
+ else if (i_rToken.Id() == TokPunctuation::Comma)
+ SetResult(done, stay);
+ else
+ SetResult(not_done, pop_failure);
+ break;
+ default:
+ csv_assert(false);
+ }
+}
+
+void
+PE_Property::Process_Default()
+{
+ if (eState == expect_variable)
+ {
+ SetResult(not_done, push_sure, pPE_Variable.Ptr());
+ eState = in_variable;
+ }
+ else
+ SetResult(not_done, pop_failure);
+}
+
+void
+PE_Property::InitData()
+{
+ eState = e_start;
+
+ nCurParsedType = 0;
+ sCurParsedName = "";
+
+ // bIsOptional and
+ // aStereotypes
+ // may be preset by the PE_Service-(or PE_Interface-)parent
+ // with PresetOptional() or
+ // PresetStereotype()
+ // - therefore it must not be set here!
+}
+
+void
+PE_Property::TransferData()
+{
+ if (bIsOptional)
+ {
+ SetOptional();
+ bIsOptional = false;
+ }
+
+ ary::idl::CodeEntity *
+ pCe = 0;
+ csv_assert(pCurOwner->IsValid());
+
+ pCe = &Gate().Ces().Store_Property( *pCurOwner,
+ sCurParsedName,
+ nCurParsedType,
+ aStereotypes );
+
+ csv_assert(pCe != 0);
+ PassDocuAt(*pCe);
+
+ nCurParsedType = 0;
+ sCurParsedName.clear();
+ aStereotypes = Stereotypes();
+
+ eState = e_none;
+}
+
+void
+PE_Property::ReceiveData()
+{
+ eState = expect_variable;
+}
+
+
+UnoIDL_PE &
+PE_Property::MyPE()
+{
+ return *this;
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_selem.cxx b/autodoc/source/parser_i/idl/pe_selem.cxx
new file mode 100644
index 000000000000..7dabd57b8205
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_selem.cxx
@@ -0,0 +1,208 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_selem.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/i_structelem.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+namespace
+{
+ const String C_sNone;
+}
+
+PE_StructElement::PE_StructElement( RStructElement & o_rResult,
+ const RStruct & i_rCurStruct,
+ const String & i_rCurStructTemplateParam )
+ : eState(e_none),
+ pResult(&o_rResult),
+ pCurStruct(&i_rCurStruct),
+ bIsExceptionElement(false),
+ pPE_Type(0),
+ nType(0),
+ sName(),
+ pCurStructTemplateParam(&i_rCurStructTemplateParam)
+{
+ pPE_Type = new PE_Type(nType);
+}
+
+PE_StructElement::PE_StructElement( RStructElement & o_rResult,
+ const RStruct & i_rCurExc )
+ : eState(e_none),
+ pResult(&o_rResult),
+ pCurStruct(&i_rCurExc),
+ bIsExceptionElement(true),
+ pPE_Type(0),
+ nType(0),
+ sName(),
+ pCurStructTemplateParam(&C_sNone)
+{
+ pPE_Type = new PE_Type(nType);
+}
+
+void
+PE_StructElement::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_StructElement::~PE_StructElement()
+{
+}
+
+void
+PE_StructElement::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_StructElement::Process_Default()
+{
+ if (eState == expect_type)
+ {
+ SetResult( not_done, push_sure, pPE_Type.Ptr() );
+ eState = expect_name;
+ }
+ else {
+ csv_assert(false);
+ }
+}
+
+void
+PE_StructElement::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ csv_assert(*i_rToken.Text() != 0);
+
+ if (eState == expect_type)
+ {
+ if ( *pCurStructTemplateParam == i_rToken.Text() )
+ {
+ nType = lhf_FindTemplateParamType();
+ SetResult( done, stay );
+ eState = expect_name;
+ }
+ else // No template parameter type existing, or not matching:
+ {
+ SetResult( not_done, push_sure, pPE_Type.Ptr() );
+ eState = expect_name;
+ }
+ }
+ else if (eState == expect_name)
+ {
+ sName = i_rToken.Text();
+ SetResult( done, stay );
+ eState = expect_finish;
+ }
+ else {
+ csv_assert(false);
+ }
+}
+
+void
+PE_StructElement::Process_Punctuation( const TokPunctuation &)
+{
+ csv_assert(eState == expect_finish);
+
+ SetResult( done, pop_success );
+}
+
+void
+PE_StructElement::InitData()
+{
+ eState = expect_type;
+
+ nType = 0;
+ sName = "";
+}
+
+void
+PE_StructElement::TransferData()
+{
+ csv_assert(pResult != 0 AND pCurStruct != 0);
+
+ ary::idl::StructElement *
+ pCe = 0;
+ if (bIsExceptionElement)
+ {
+ pCe = & Gate().Ces().Store_ExceptionMember(
+ *pCurStruct,
+ sName,
+ nType );
+ }
+ else
+ {
+ pCe = & Gate().Ces().Store_StructMember(
+ *pCurStruct,
+ sName,
+ nType );
+ }
+ *pResult = pCe->CeId();
+ PassDocuAt(*pCe);
+
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_StructElement::MyPE()
+{
+ return *this;
+}
+
+ary::idl::Type_id
+PE_StructElement::lhf_FindTemplateParamType() const
+{
+ const ary::idl::CodeEntity &
+ rCe = Gate().Ces().Find_Ce(*pCurStruct);
+ const ary::idl::Struct &
+ rStruct = static_cast< const ary::idl::Struct& >(rCe);
+ return rStruct.TemplateParameterType();
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_servi.cxx b/autodoc/source/parser_i/idl/pe_servi.cxx
new file mode 100644
index 000000000000..a4209c58f7be
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_servi.cxx
@@ -0,0 +1,395 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_servi.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/i_siservice.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_func2.hxx>
+#include <s2_luidl/pe_property.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+PE_Service::PE_Service()
+ : eState(e_none),
+ sData_Name(),
+ bIsPreDeclaration(false),
+ pCurService(0),
+ pCurSiService(0),
+ nCurService(0),
+ pPE_Property(0),
+ nCurParsed_Property(0),
+ pPE_Type(0),
+ nCurParsed_Type(0),
+ pPE_Constructor(0),
+ bOptionalMember(false)
+{
+ pPE_Property = new PE_Property(nCurService);
+ pPE_Type = new PE_Type(nCurParsed_Type);
+ pPE_Constructor = new PE_Function(nCurService, PE_Function::constructor);
+}
+
+void
+PE_Service::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Property->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+ pPE_Constructor->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Service::~PE_Service()
+{
+}
+
+void
+PE_Service::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+
+void
+PE_Service::Process_MetaType( const TokMetaType & i_rToken )
+{
+ switch ( i_rToken.Id() )
+ {
+ case TokMetaType::mt_service:
+ if (eState == need_name)
+ SetResult(done, stay );
+ else if (eState == e_std)
+ {
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_service_type;
+ }
+ else
+ On_Default();
+ break;
+ case TokMetaType::mt_interface:
+ if (eState == e_std)
+ {
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_ifc_type;
+ }
+ else
+ On_Default();
+ break;
+ case TokMetaType::mt_property:
+ if (eState == e_std)
+ {
+ StartProperty();
+ }
+ else
+ On_Default();
+ break;
+ default:
+ // KORR_FUTURE:
+ // Should throw syntax error warning.
+ ;
+ } // end switch
+}
+
+void
+PE_Service::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ if (eState == need_name)
+ {
+ sData_Name = i_rToken.Text();
+ SetResult(done, stay);
+ eState = need_curlbr_open;
+ }
+ else if (eState == e_std_sib)
+ {
+ SetResult(not_done, push_sure, pPE_Constructor.Ptr());
+ }
+ else
+ On_Default();
+}
+
+void
+PE_Service::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case TokPunctuation::Colon:
+ if (eState == need_curlbr_open)
+ {
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = need_base_interface;
+ }
+ else
+ On_Default();
+ break;
+
+ case TokPunctuation::CurledBracketOpen:
+ if (eState == need_curlbr_open)
+ {
+ pCurService = &Gate().Ces().Store_Service(
+ CurNamespace().CeId(),
+ sData_Name );
+ nCurService = pCurService->CeId();
+ PassDocuAt(*pCurService);
+ SetResult(done, stay);
+ eState = e_std;
+ }
+ else if (eState == need_curlbr_open_sib)
+ {
+ SetResult(done, stay);
+ eState = e_std_sib;
+ }
+ else
+ On_Default();
+ break;
+ case TokPunctuation::CurledBracketClose:
+ if (eState == e_std OR eState == e_std_sib)
+ {
+ SetResult(done, stay);
+ eState = need_finish;
+ }
+ else
+ On_Default();
+ break;
+ case TokPunctuation::Comma:
+ if (eState == expect_ifc_separator)
+ {
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_ifc_type;
+ }
+ else if (eState == expect_service_separator)
+ {
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_service_type;
+ }
+ else if (eState == e_std)
+ {
+ SetResult(done, stay);
+ }
+ else
+ On_Default();
+ break;
+ case TokPunctuation::Semicolon:
+ switch (eState)
+ {
+ case need_curlbr_open:
+ sData_Name.clear();
+ bIsPreDeclaration = true;
+ SetResult(done, pop_success);
+ eState = e_none;
+ break;
+ case need_curlbr_open_sib:
+ SetResult(done, pop_success);
+ eState = e_none;
+ break;
+ case expect_ifc_separator:
+ case expect_service_separator:
+ SetResult(done, stay);
+ eState = e_std;
+ break;
+ case need_finish:
+ SetResult(done, pop_success);
+ eState = e_none;
+ break;
+ case at_ignore:
+ SetResult(done, stay);
+ eState = e_std;
+ break;
+ default:
+ On_Default();
+ } // end switch
+ break;
+ default:
+ On_Default();
+ } // end switch
+}
+
+void
+PE_Service::Process_Stereotype( const TokStereotype & i_rToken )
+{
+ if (i_rToken.Id() == TokStereotype::ste_optional)
+ {
+ bOptionalMember = true;
+ SetResult(done, stay);
+ }
+ else if ( eState == e_std )
+ {
+ StartProperty();
+ }
+ else
+ On_Default();
+}
+
+void
+PE_Service::Process_Needs()
+{
+ SetResult(done,stay);
+ eState = at_ignore;
+}
+
+void
+PE_Service::Process_Observes()
+{
+ SetResult(done,stay);
+ eState = at_ignore;
+}
+
+void
+PE_Service::Process_Default()
+{
+ On_Default();
+}
+
+
+void
+PE_Service::On_Default()
+{
+ if (eState == at_ignore)
+ SetResult(done, stay);
+ else
+ SetResult(not_done, pop_failure);
+}
+
+void
+PE_Service::InitData()
+{
+ eState = need_name;
+ sData_Name.clear();
+ bIsPreDeclaration = false;
+ pCurService = 0;
+ pCurSiService = 0;
+ nCurService = 0;
+ nCurParsed_Property = 0;
+ nCurParsed_Type = 0;
+ bOptionalMember = false;
+}
+
+void
+PE_Service::TransferData()
+{
+ if (NOT bIsPreDeclaration)
+ {
+ csv_assert(sData_Name.size() > 0);
+ csv_assert( (pCurService != 0) != (pCurSiService != 0) );
+ }
+
+ eState = e_none;
+}
+
+void
+PE_Service::ReceiveData()
+{
+ switch (eState)
+ {
+ case in_property:
+ eState = e_std;
+ break;
+ case in_ifc_type:
+ if (bOptionalMember)
+ {
+ pPE_Type->SetOptional();
+ }
+ pCurService->AddRef_SupportedInterface(
+ nCurParsed_Type,
+ pPE_Type->ReleaseDocu());
+ nCurParsed_Type = 0;
+ eState = expect_ifc_separator;
+ break;
+ case in_service_type:
+ if (bOptionalMember)
+ {
+ pPE_Type->SetOptional();
+ }
+ pCurService->AddRef_IncludedService(
+ nCurParsed_Type,
+ pPE_Type->ReleaseDocu());
+ nCurParsed_Type = 0;
+ eState = expect_service_separator;
+ break;
+ case need_base_interface:
+ pCurSiService = &Gate().Ces().Store_SglIfcService(
+ CurNamespace().CeId(),
+ sData_Name,
+ nCurParsed_Type );
+ nCurService = pCurSiService->CeId();
+ PassDocuAt(*pCurSiService);
+
+ nCurParsed_Type = 0;
+ eState = need_curlbr_open_sib;
+ break;
+ case e_std_sib:
+ break;
+ default:
+ csv_assert(false);
+ }
+
+ bOptionalMember = false;
+}
+
+
+UnoIDL_PE &
+PE_Service::MyPE()
+{
+ return *this;
+}
+
+void
+PE_Service::StartProperty()
+{
+ SetResult(not_done, push_sure, pPE_Property.Ptr());
+ eState = in_property;
+
+ if (bOptionalMember)
+ {
+ pPE_Property->PresetOptional();
+ bOptionalMember = false;
+ }
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_singl.cxx b/autodoc/source/parser_i/idl/pe_singl.cxx
new file mode 100644
index 000000000000..292d380323ac
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_singl.cxx
@@ -0,0 +1,250 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_singl.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_singleton.hxx>
+#include <ary/idl/i_sisingleton.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+PE_Singleton::PE_Singleton()
+ : eState(e_none),
+ sData_Name(),
+ bIsPreDeclaration(false),
+ pCurSingleton(0),
+ pCurSiSingleton(0),
+ pPE_Type(0),
+ nCurParsed_Type(0)
+{
+ pPE_Type = new PE_Type(nCurParsed_Type);
+}
+
+void
+PE_Singleton::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Singleton::~PE_Singleton()
+{
+}
+
+void
+PE_Singleton::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+
+void
+PE_Singleton::Process_MetaType( const TokMetaType & i_rToken )
+{
+ switch ( i_rToken.Id() )
+ {
+ case TokMetaType::mt_service:
+ if (eState == e_std)
+ {
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_service;
+ }
+ else
+ On_Default();
+ break;
+ case TokMetaType::mt_singleton:
+ if (eState == need_name)
+ SetResult(done, stay);
+ else
+ On_Default();
+ break;
+ default:
+ // KORR_FUTURE
+ // Should throw syntax error warning
+ ;
+
+ } // end switch
+}
+
+void
+PE_Singleton::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ if (eState == need_name)
+ {
+ sData_Name = i_rToken.Text();
+ SetResult(done, stay);
+ eState = need_curlbr_open;
+ }
+ else
+ On_Default();
+}
+
+void
+PE_Singleton::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case TokPunctuation::CurledBracketOpen:
+ if (eState == need_curlbr_open)
+ {
+ pCurSingleton = &Gate().Ces().Store_Singleton(
+ CurNamespace().CeId(),
+ sData_Name );
+ PassDocuAt(*pCurSingleton);
+ SetResult(done, stay);
+ eState = e_std;
+ }
+ else
+ On_Default();
+ break;
+ case TokPunctuation::CurledBracketClose:
+ if (eState == e_std)
+ {
+ SetResult(done, stay);
+ eState = need_finish;
+ }
+ else
+ On_Default();
+ break;
+ case TokPunctuation::Semicolon:
+ switch (eState)
+ {
+ case e_std: SetResult(done, stay);
+ break;
+ case need_finish:
+ SetResult(done, pop_success);
+ eState = e_none;
+ break;
+ default:
+ On_Default();
+ } // end switch
+ break;
+ case TokPunctuation::Colon:
+ switch (eState)
+ {
+ case need_curlbr_open:
+ SetResult(done, push_sure, pPE_Type.Ptr());
+ eState = in_base_interface;
+ break;
+ default:
+ On_Default();
+ } // end switch
+ break;
+ default:
+ On_Default();
+ } // end switch
+}
+
+void
+PE_Singleton::Process_Default()
+{
+ On_Default();
+}
+
+
+void
+PE_Singleton::On_Default()
+{
+ SetResult(not_done, pop_failure);
+}
+
+void
+PE_Singleton::InitData()
+{
+ eState = need_name;
+ sData_Name.clear();
+ bIsPreDeclaration = false;
+ pCurSingleton = 0;
+ pCurSiSingleton = 0;
+ nCurParsed_Type = 0;
+}
+
+void
+PE_Singleton::TransferData()
+{
+ if (NOT bIsPreDeclaration)
+ {
+ csv_assert(sData_Name.size() > 0);
+ csv_assert( (pCurSingleton != 0) != (pCurSiSingleton != 0) );
+ }
+
+ eState = e_none;
+}
+
+void
+PE_Singleton::ReceiveData()
+{
+ switch (eState)
+ {
+ case in_service:
+ pCurSingleton->Set_Service(nCurParsed_Type);
+ nCurParsed_Type = 0;
+ eState = e_std;
+ break;
+ case in_base_interface:
+ pCurSiSingleton = &Gate().Ces().Store_SglIfcSingleton(
+ CurNamespace().CeId(),
+ sData_Name,
+ nCurParsed_Type );
+ PassDocuAt(*pCurSiSingleton);
+ nCurParsed_Type = 0;
+ eState = need_finish;
+ break;
+ default:
+ csv_assert(false);
+ } // end switch
+}
+
+UnoIDL_PE &
+PE_Singleton::MyPE()
+{
+ return *this;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_struc.cxx b/autodoc/source/parser_i/idl/pe_struc.cxx
new file mode 100644
index 000000000000..a9dc68448ee3
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_struc.cxx
@@ -0,0 +1,330 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_struc.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/pe_selem.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+PE_Struct::PE_Struct()
+ // : aWork,
+ // pStati
+{
+ pStati = new S_Stati(*this);
+}
+
+void
+PE_Struct::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ Work().pPE_Element->EstablishContacts(this,io_rRepository,o_rResult);
+ Work().pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Struct::~PE_Struct()
+{
+}
+
+void
+PE_Struct::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*Stati().pCurStatus);
+}
+
+
+void
+PE_Struct::InitData()
+{
+ Work().InitData();
+ Stati().pCurStatus = &Stati().aWaitForName;
+}
+
+void
+PE_Struct::TransferData()
+{
+ if (NOT Work().bIsPreDeclaration)
+ {
+ csv_assert(Work().sData_Name.size() > 0);
+ csv_assert(Work().nCurStruct.IsValid());
+ }
+ Stati().pCurStatus = &Stati().aNone;
+}
+
+void
+PE_Struct::ReceiveData()
+{
+ Stati().pCurStatus->On_SubPE_Left();
+}
+
+PE_Struct::S_Work::S_Work()
+ : sData_Name(),
+ sData_TemplateParam(),
+ bIsPreDeclaration(false),
+ nCurStruct(0),
+ pPE_Element(0),
+ nCurParsed_ElementRef(0),
+ pPE_Type(0),
+ nCurParsed_Base(0)
+
+{
+ pPE_Element = new PE_StructElement(nCurParsed_ElementRef,nCurStruct,sData_TemplateParam);
+ pPE_Type = new PE_Type(nCurParsed_Base);
+}
+
+void
+PE_Struct::S_Work::InitData()
+{
+ sData_Name.clear();
+ sData_TemplateParam.clear();
+ bIsPreDeclaration = false;
+ nCurStruct = 0;
+ nCurParsed_ElementRef = 0;
+ nCurParsed_Base = 0;
+}
+
+void
+PE_Struct::S_Work::Prepare_PE_QualifiedName()
+{
+ nCurParsed_ElementRef = 0;
+}
+
+void
+PE_Struct::S_Work::Prepare_PE_Element()
+{
+ nCurParsed_Base = 0;
+}
+
+void
+PE_Struct::S_Work::Data_Set_Name( const char * i_sName )
+{
+ sData_Name = i_sName;
+}
+
+void
+PE_Struct::S_Work::Data_Set_TemplateParam( const char * i_sTemplateParam )
+{
+ sData_TemplateParam = i_sTemplateParam;
+}
+
+PE_Struct::S_Stati::S_Stati(PE_Struct & io_rStruct)
+ : aNone(io_rStruct),
+ aWaitForName(io_rStruct),
+ aGotName(io_rStruct),
+ aWaitForTemplateParam(io_rStruct),
+ aWaitForTemplateEnd(io_rStruct),
+ aWaitForBase(io_rStruct),
+ aGotBase(io_rStruct),
+ aWaitForElement(io_rStruct),
+ aWaitForFinish(io_rStruct),
+ pCurStatus(0)
+{
+ pCurStatus = &aNone;
+}
+
+
+//*********************** Stati ***************************//
+
+
+UnoIDL_PE &
+PE_Struct::PE_StructState::MyPE()
+{
+ return rStruct;
+}
+
+
+void
+PE_Struct::State_WaitForName::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ Work().Data_Set_Name(i_rToken.Text());
+ MoveState( Stati().aGotName );
+ SetResult(done,stay);
+}
+
+void
+PE_Struct::State_GotName::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if ( i_rToken.Id() != TokPunctuation::Semicolon )
+ {
+ switch (i_rToken.Id())
+ {
+ case TokPunctuation::Colon:
+ MoveState( Stati().aWaitForBase );
+ SetResult(done,push_sure,Work().pPE_Type.Ptr());
+ Work().Prepare_PE_QualifiedName();
+ break;
+ case TokPunctuation::CurledBracketOpen:
+ PE().store_Struct();
+ MoveState( Stati().aWaitForElement );
+ SetResult(done,stay);
+ break;
+ case TokPunctuation::Lesser:
+ MoveState( Stati().aWaitForTemplateParam );
+ SetResult(done,stay);
+ break;
+ default:
+ SetResult(not_done,pop_failure);
+ } // end switch
+ }
+ else
+ {
+ Work().sData_Name.clear();
+ SetResult(done,pop_success);
+ }
+}
+
+void
+PE_Struct::State_WaitForTemplateParam::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ Work().Data_Set_TemplateParam(i_rToken.Text());
+ MoveState( Stati().aWaitForTemplateEnd );
+ SetResult(done,stay);
+}
+
+void
+PE_Struct::State_WaitForTemplateEnd::Process_Punctuation( const TokPunctuation & )
+{
+ // Assume: TokPunctuation::Greater
+ MoveState( Stati().aGotName );
+ SetResult(done,stay);
+}
+
+void
+PE_Struct::State_WaitForBase::On_SubPE_Left()
+{
+ MoveState(Stati().aGotBase);
+}
+
+void
+PE_Struct::State_GotBase::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if ( i_rToken.Id() == TokPunctuation::CurledBracketOpen )
+ {
+ PE().store_Struct();
+ MoveState( Stati().aWaitForElement );
+ SetResult(done,stay);
+ }
+ else
+ {
+ SetResult(not_done,pop_failure);
+ }
+}
+
+void
+PE_Struct::State_WaitForElement::Process_Identifier( const TokIdentifier & )
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr() );
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Struct::State_WaitForElement::Process_NameSeparator()
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr());
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Struct::State_WaitForElement::Process_BuiltInType( const TokBuiltInType & )
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr());
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Struct::State_WaitForElement::Process_TypeModifier(const TokTypeModifier & )
+{
+ SetResult( not_done, push_sure, Work().pPE_Element.Ptr());
+ Work().Prepare_PE_Element();
+}
+
+void
+PE_Struct::State_WaitForElement::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if ( i_rToken.Id() == TokPunctuation::CurledBracketClose )
+ {
+ MoveState( Stati().aWaitForFinish );
+ SetResult( done, stay );
+ }
+ else
+ {
+ SetResult( not_done, pop_failure );
+ }
+}
+
+void
+PE_Struct::State_WaitForFinish::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if (i_rToken.Id() == TokPunctuation::Semicolon)
+ {
+ MoveState( Stati().aNone );
+ SetResult( done, pop_success );
+ }
+ else
+ {
+ SetResult( not_done, pop_failure );
+ }
+}
+
+void
+PE_Struct::store_Struct()
+{
+ ary::idl::Struct &
+ rCe = Gate().Ces().Store_Struct(
+ CurNamespace().CeId(),
+ Work().sData_Name,
+ Work().nCurParsed_Base,
+ Work().sData_TemplateParam );
+ PassDocuAt(rCe);
+ Work().nCurStruct = rCe.CeId();
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_tydf2.cxx b/autodoc/source/parser_i/idl/pe_tydf2.cxx
new file mode 100644
index 000000000000..310a8f57327b
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_tydf2.cxx
@@ -0,0 +1,186 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_tydf2.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_typedef.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+#include <s2_luidl/tk_const.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+#ifdef DF
+#undef DF
+#endif
+#define DF &PE_Typedef::On_Default
+
+PE_Typedef::F_TOK
+PE_Typedef::aDispatcher[PE_Typedef::e_STATES_MAX][PE_Typedef::tt_MAX] =
+ { { DF, DF, DF }, // e_none
+ { &PE_Typedef::On_expect_description_Any,
+ &PE_Typedef::On_expect_description_Any,
+ DF }, // expect_description
+ { DF, &PE_Typedef::On_expect_name_Identifier,
+ DF }, // expect_name
+ { DF, DF, &PE_Typedef::On_got_name_Punctuation } // got_name
+ };
+
+
+
+inline void
+PE_Typedef::CallHandler( const char * i_sTokenText,
+ E_TokenType i_eTokenType )
+ { (this->*aDispatcher[eState][i_eTokenType])(i_sTokenText); }
+
+
+
+
+
+PE_Typedef::PE_Typedef()
+ : eState(e_none),
+ pPE_Type(0),
+ nType(0),
+ sName()
+{
+ pPE_Type = new PE_Type(nType);
+}
+
+void
+PE_Typedef::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Typedef::~PE_Typedef()
+{
+}
+
+void
+PE_Typedef::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Typedef::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_identifier);
+}
+
+void
+PE_Typedef::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ CallHandler(i_rToken.Text(), tt_punctuation);
+}
+
+void
+PE_Typedef::Process_Default()
+{
+ CallHandler("", tt_any);
+}
+
+void
+PE_Typedef::On_expect_description_Any(const char *)
+{
+ SetResult(not_done,push_sure, pPE_Type.Ptr());
+}
+
+void
+PE_Typedef::On_expect_name_Identifier(const char * i_sText)
+{
+ sName = i_sText;
+ SetResult(done,stay);
+ eState = got_name;
+}
+
+void
+PE_Typedef::On_got_name_Punctuation(const char * i_sText)
+{
+ if ( i_sText[0] == ';' )
+ {
+ SetResult(done,pop_success);
+ eState = e_none;
+ }
+ else
+ On_Default(i_sText);
+}
+
+void
+PE_Typedef::On_Default(const char * )
+{
+ SetResult(not_done,pop_failure);
+}
+
+void
+PE_Typedef::InitData()
+{
+ eState = expect_description;
+ nType = 0;
+ sName = "";
+}
+
+void
+PE_Typedef::ReceiveData()
+{
+ eState = expect_name;
+}
+
+void
+PE_Typedef::TransferData()
+{
+ ary::idl::Typedef &
+ rCe = Gate().Ces().Store_Typedef(CurNamespace().CeId(), sName, nType);
+ PassDocuAt(rCe);
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_Typedef::MyPE()
+{
+ return *this;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_type2.cxx b/autodoc/source/parser_i/idl/pe_type2.cxx
new file mode 100644
index 000000000000..fe73ce04bdca
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_type2.cxx
@@ -0,0 +1,317 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_type2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_type.hxx>
+#include <ary/idl/ip_type.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/uidl_tok.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+
+/** Implementation Concept for Parsing a Type
+
+Example Type:
+ sequence < ::abc::TName< TplType > > AnyName;
+
+Status Changes:
+
+expect_type:
+ sequence -> expect_type
+ < -> expect_type
+ :: -> expect_quname_part
+ abc -> expect_quname_separator
+ :: -> expect_quname_part
+ TName -> expect_quname_separator
+ < -> in_template_type (process in nested PE_Type instance)
+
+ expect_type:
+ TplType ->expect_quname_separator
+ > -> e_none (finish, '>' not handled)
+
+ > -> expect_quname_separator
+ > -> expect_quname_separator (not finish, because sequencecounter > 0)
+ AnyName -> e_none (finish)
+*/
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+PE_Type::PE_Type( ary::idl::Type_id & o_rResult )
+ : pResult(&o_rResult),
+ nIsSequenceCounter(0),
+ nSequenceDownCounter(0),
+ bIsUnsigned(false),
+ sFullType(),
+ eState(e_none),
+ sLastPart(),
+ pPE_TemplateType(0), // @attention Recursion, only initiate, if needed!
+ nTemplateType(0),
+ aTemplateParameters()
+{
+}
+
+PE_Type::~PE_Type()
+{
+}
+
+void
+PE_Type::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+void
+PE_Type::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ if (eState == expect_type)
+ {
+ sLastPart = i_rToken.Text();
+ eState = expect_quname_separator;
+ SetResult(done, stay);
+ }
+ else if (eState == expect_quname_part)
+ {
+ sLastPart = i_rToken.Text();
+ eState = expect_quname_separator;
+ SetResult(done, stay);
+ }
+ else if (eState == expect_quname_separator)
+ {
+ Finish();
+ }
+}
+
+void
+PE_Type::Process_NameSeparator()
+{
+ if (eState == expect_type)
+ {
+ sFullType.Init(true);
+ eState = expect_quname_part;
+ SetResult(done, stay);
+ }
+ else if (eState == expect_quname_separator)
+ {
+ sFullType += sLastPart;
+ eState = expect_quname_part;
+ SetResult(done, stay);
+ }
+}
+
+void
+PE_Type::Process_Punctuation( const TokPunctuation & i_rToken )
+{
+ if (eState == expect_type)
+ {
+ csv_assert(i_rToken.Id() == TokPunctuation::Lesser);
+ SetResult(done, stay);
+ }
+ else if (eState == expect_quname_separator)
+ {
+ switch (i_rToken.Id())
+ {
+ case TokPunctuation::Lesser:
+ eState = in_template_type;
+ SetResult( done, push_sure, &MyTemplateType() );
+ break;
+
+ case TokPunctuation::Greater:
+ if (nSequenceDownCounter > 0)
+ {
+ nSequenceDownCounter--;
+ SetResult(done, stay);
+ }
+ else
+ {
+ Finish();
+ }
+ break;
+
+ default:
+ Finish();
+ } // end switch
+ }
+ else if (eState == in_template_type)
+ {
+ aTemplateParameters.push_back(nTemplateType);
+ nTemplateType = 0;
+
+ if (i_rToken.Id() == TokPunctuation::Greater)
+ {
+ eState = expect_quname_separator;
+ SetResult(done, stay);
+ }
+ else if (i_rToken.Id() == TokPunctuation::Comma)
+ {
+ SetResult(done, push_sure, &MyTemplateType());
+ }
+ else
+ {
+ csv_assert(false);
+ Finish();
+ }
+ }
+}
+
+void
+PE_Type::Process_BuiltInType( const TokBuiltInType & i_rToken )
+{
+ if (eState == expect_type)
+ {
+ sLastPart = i_rToken.Text();
+ eState = expect_quname_separator;
+ SetResult(done, stay);
+ }
+ else if (eState == expect_quname_part)
+ {
+ // Can this happen?
+
+ sLastPart = i_rToken.Text();
+ eState = expect_quname_separator;
+ SetResult(done, stay);
+ }
+ else if (eState == expect_quname_separator)
+ {
+ // Can this happen?
+
+ Finish();
+ }
+}
+
+void
+PE_Type::Process_TypeModifier( const TokTypeModifier & i_rToken )
+{
+ if (eState == expect_type)
+ {
+ switch ( i_rToken.Id() )
+ {
+ case TokTypeModifier::tmod_unsigned:
+ bIsUnsigned = true;
+ break;
+ case TokTypeModifier::tmod_sequence:
+ nIsSequenceCounter++;
+ nSequenceDownCounter++;
+ break;
+ default:
+ csv_assert(false);
+ }
+ SetResult(done, stay);
+ }
+ else if (eState == expect_quname_separator)
+ {
+ // Can this happen?
+
+ Finish();
+ }
+}
+
+void
+PE_Type::Process_Default()
+{
+ Finish();
+}
+
+void
+PE_Type::Finish()
+{
+ csv_assert(nSequenceDownCounter == 0);
+
+ sFullType.SetLocalName(sLastPart);
+ SetResult(not_done, pop_success);
+}
+
+PE_Type &
+PE_Type::MyTemplateType()
+{
+ if (NOT pPE_TemplateType)
+ {
+ pPE_TemplateType = new PE_Type(nTemplateType);
+ pPE_TemplateType->EstablishContacts( this,
+ MyRepository(),
+ TokenResult() );
+ }
+ return *pPE_TemplateType;
+}
+
+void
+PE_Type::InitData()
+{
+ eState = expect_type;
+
+ nIsSequenceCounter = 0;
+ nSequenceDownCounter = 0;
+ bIsUnsigned = false;
+ sFullType.Empty();
+ sLastPart.clear();
+ nTemplateType = 0;
+ csv::erase_container(aTemplateParameters);
+}
+
+void
+PE_Type::TransferData()
+{
+ if (bIsUnsigned)
+ {
+ StreamLock sl(40);
+ String sName( sl() << "unsigned " << sFullType.LocalName() << c_str );
+ sFullType.SetLocalName(sName);
+ }
+
+ const ary::idl::Type &
+ result = Gate().Types().CheckIn_Type( sFullType,
+ nIsSequenceCounter,
+ CurNamespace().CeId(),
+ &aTemplateParameters );
+ *pResult = result.TypeId();
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_Type::MyPE()
+{
+ return *this;
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pe_vari2.cxx b/autodoc/source/parser_i/idl/pe_vari2.cxx
new file mode 100644
index 000000000000..8491d831c9b8
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pe_vari2.cxx
@@ -0,0 +1,175 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pe_vari2.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_property.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/pe_type2.hxx>
+#include <s2_luidl/tk_keyw.hxx>
+#include <s2_luidl/tk_ident.hxx>
+#include <s2_luidl/tk_punct.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+PE_Variable::PE_Variable( ary::idl::Type_id & i_rResult_Type,
+ String & i_rResult_Name )
+ : eState(e_none),
+ pResult_Type(&i_rResult_Type),
+ pResult_Name(&i_rResult_Name),
+ pPE_Type(0)
+{
+ pPE_Type = new PE_Type(i_rResult_Type);
+}
+
+void
+PE_Variable::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result & o_rResult )
+{
+ UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
+ pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
+}
+
+PE_Variable::~PE_Variable()
+{
+}
+
+void
+PE_Variable::ProcessToken( const Token & i_rToken )
+{
+ i_rToken.Trigger(*this);
+}
+
+
+void
+PE_Variable::Process_Default()
+{
+ if (eState == expect_type)
+ {
+ SetResult( not_done, push_sure, pPE_Type.Ptr() );
+ }
+ else{
+ csv_assert(false);
+ }
+}
+
+void
+PE_Variable::Process_Identifier( const TokIdentifier & i_rToken )
+{
+ if (eState == expect_type)
+ {
+ SetResult( not_done, push_sure, pPE_Type.Ptr() );
+ }
+ else if (eState == expect_name)
+ {
+ *pResult_Name = i_rToken.Text();
+ SetResult( done, stay );
+ eState = expect_finish;
+ }
+ else {
+ csv_assert(false);
+ }
+}
+
+void
+PE_Variable::Process_Punctuation( const TokPunctuation & )
+{
+ if (eState == expect_finish)
+ {
+ SetResult( not_done, pop_success );
+ eState = e_none;
+ }
+ else if (eState == expect_name)
+ {
+ SetResult( not_done, pop_success );
+ eState = e_none;
+ }
+ else {
+ csv_assert(false);
+ }
+}
+
+void
+PE_Variable::Process_BuiltInType( const TokBuiltInType & i_rToken )
+{
+ if (eState == expect_type)
+ {
+ SetResult( not_done, push_sure, pPE_Type.Ptr() );
+ }
+ else if (eState == expect_name AND i_rToken.Id() == TokBuiltInType::bty_ellipse)
+ {
+ SetResult( not_done, pop_success );
+ eState = e_none;
+ }
+ else {
+ csv_assert(false);
+ }
+}
+
+void
+PE_Variable::InitData()
+{
+ eState = expect_type;
+
+ *pResult_Type = 0;
+ *pResult_Name = "";
+}
+
+void
+PE_Variable::ReceiveData()
+{
+ eState = expect_name;
+}
+
+void
+PE_Variable::TransferData()
+{
+ eState = e_none;
+}
+
+UnoIDL_PE &
+PE_Variable::MyPE()
+{
+ return *this;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/pestate.cxx b/autodoc/source/parser_i/idl/pestate.cxx
new file mode 100644
index 000000000000..2799e2029783
--- /dev/null
+++ b/autodoc/source/parser_i/idl/pestate.cxx
@@ -0,0 +1,142 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/pestate.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/parsenv2.hxx>
+
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+void
+ParseEnvState::Process_Identifier( const TokIdentifier & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_NameSeparator()
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_Punctuation( const TokPunctuation & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_BuiltInType( const TokBuiltInType & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_TypeModifier( const TokTypeModifier & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_MetaType( const TokMetaType & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_Stereotype( const TokStereotype & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_ParameterHandling( const TokParameterHandling & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_Raises()
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_Needs()
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_Observes()
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_Assignment( const TokAssignment & )
+{
+ Process_Default();
+}
+
+void
+ParseEnvState::Process_EOL()
+{
+ MyPE().SetResult(done,stay);
+}
+
+
+void
+ParseEnvState::On_SubPE_Left()
+{
+}
+
+void
+ParseEnvState::Process_Default()
+{
+ if (bDefaultIsError)
+ MyPE().SetResult(not_done, pop_failure);
+ else // ignore:
+ MyPE().SetResult(done, stay);
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/semnode.cxx b/autodoc/source/parser_i/idl/semnode.cxx
new file mode 100644
index 000000000000..f2e38a291e87
--- /dev/null
+++ b/autodoc/source/parser_i/idl/semnode.cxx
@@ -0,0 +1,85 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/semnode.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/ary.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <s2_luidl/parsenv2.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+SemanticNode::SemanticNode()
+ : pParentPE(0),
+ pAryGate(0),
+ pTokenResult(0)
+{
+}
+
+void
+SemanticNode::EstablishContacts( UnoIDL_PE * io_pParentPE,
+ ary::idl::Gate & io_rGate,
+ TokenProcessing_Result & o_rResult )
+{
+ pParentPE = io_pParentPE;
+ pAryGate = &io_rGate;
+ pTokenResult = &o_rResult;
+}
+
+SemanticNode::~SemanticNode()
+{
+}
+
+void
+SemanticNode::SetTokenResult( E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ UnoIDL_PE * i_pParseEnv2Push )
+{
+ csv_assert(pTokenResult != 0);
+
+ pTokenResult->eDone = i_eDone;
+ pTokenResult->eStackAction = i_eWhat2DoWithEnvStack;
+ pTokenResult->pEnv2Push = i_pParseEnv2Push;
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/tk_const.cxx b/autodoc/source/parser_i/idl/tk_const.cxx
new file mode 100644
index 000000000000..98b418b3f679
--- /dev/null
+++ b/autodoc/source/parser_i/idl/tk_const.cxx
@@ -0,0 +1,59 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/tk_const.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <s2_luidl/tokintpr.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+void
+TokAssignment::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Assignment(*this);
+}
+
+const char *
+TokAssignment::Text() const
+{
+ return sText;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/tk_ident.cxx b/autodoc/source/parser_i/idl/tk_ident.cxx
new file mode 100644
index 000000000000..13f5571d5e05
--- /dev/null
+++ b/autodoc/source/parser_i/idl/tk_ident.cxx
@@ -0,0 +1,70 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/tk_ident.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <s2_luidl/tokintpr.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+void
+TokIdentifier::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Identifier(*this);
+}
+
+const char *
+TokIdentifier::Text() const
+{
+ return sText;
+}
+
+void
+TokNameSeparator::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_NameSeparator();
+}
+
+const char *
+TokNameSeparator::Text() const
+{
+ return "::";
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/tk_keyw.cxx b/autodoc/source/parser_i/idl/tk_keyw.cxx
new file mode 100644
index 000000000000..408f83dc4b58
--- /dev/null
+++ b/autodoc/source/parser_i/idl/tk_keyw.cxx
@@ -0,0 +1,227 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/tk_keyw.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <s2_luidl/tokintpr.hxx>
+
+
+using csi::uidl::TokBuiltInType;
+using csi::uidl::TokTypeModifier;
+using csi::uidl::TokMetaType;
+using csi::uidl::TokStereotype;
+using csi::uidl::TokParameterHandling;
+
+
+lux::EnumValueMap G_aTokBuiltInType_EV_TokenId_Values;
+TokBuiltInType::EV_TokenId ev_bty_none(TokBuiltInType::e_none,"");
+TokBuiltInType::EV_TokenId ev_bty_any(TokBuiltInType::bty_any,"any");
+TokBuiltInType::EV_TokenId ev_bty_boolean(TokBuiltInType::bty_boolean,"boolean");
+TokBuiltInType::EV_TokenId ev_bty_byte(TokBuiltInType::bty_byte,"byte");
+TokBuiltInType::EV_TokenId ev_bty_char(TokBuiltInType::bty_char,"char");
+TokBuiltInType::EV_TokenId ev_bty_double(TokBuiltInType::bty_double,"double");
+TokBuiltInType::EV_TokenId ev_bty_hyper(TokBuiltInType::bty_hyper,"hyper");
+TokBuiltInType::EV_TokenId ev_bty_long(TokBuiltInType::bty_long,"long");
+TokBuiltInType::EV_TokenId ev_bty_short(TokBuiltInType::bty_short,"short");
+TokBuiltInType::EV_TokenId ev_bty_string(TokBuiltInType::bty_string,"string");
+TokBuiltInType::EV_TokenId ev_bty_void(TokBuiltInType::bty_void,"void");
+TokBuiltInType::EV_TokenId ev_bty_ellipse(TokBuiltInType::bty_ellipse,"...");
+
+
+lux::EnumValueMap G_aTokTypeModifier_EV_TokenId_Values;
+TokTypeModifier::EV_TokenId ev_tmod_none(TokTypeModifier::e_none,"");
+TokTypeModifier::EV_TokenId ev_tmod_unsigned(TokTypeModifier::tmod_unsigned,"unsigned");
+TokTypeModifier::EV_TokenId ev_tmod_sequence(TokTypeModifier::tmod_sequence,"sequence");
+
+
+lux::EnumValueMap G_aTokMetaType_EV_TokenId_Values;
+TokMetaType::EV_TokenId ev_mt_none(TokMetaType::e_none,"");
+TokMetaType::EV_TokenId ev_mt_attribute(TokMetaType::mt_attribute,"attribute");
+TokMetaType::EV_TokenId ev_mt_constants(TokMetaType::mt_constants,"constants");
+TokMetaType::EV_TokenId ev_mt_enum(TokMetaType::mt_enum,"enum");
+TokMetaType::EV_TokenId ev_mt_exception(TokMetaType::mt_exception,"exception");
+TokMetaType::EV_TokenId ev_mt_ident(TokMetaType::mt_ident,"ident");
+TokMetaType::EV_TokenId ev_mt_interface(TokMetaType::mt_interface,"interface");
+TokMetaType::EV_TokenId ev_mt_module(TokMetaType::mt_module,"module");
+TokMetaType::EV_TokenId ev_mt_property(TokMetaType::mt_property,"property");
+TokMetaType::EV_TokenId ev_mt_service(TokMetaType::mt_service,"service");
+TokMetaType::EV_TokenId ev_mt_singleton(TokMetaType::mt_singleton,"singleton");
+TokMetaType::EV_TokenId ev_mt_struct(TokMetaType::mt_struct,"struct");
+TokMetaType::EV_TokenId ev_mt_typedef(TokMetaType::mt_typedef,"typedef");
+TokMetaType::EV_TokenId ev_mt_uik(TokMetaType::mt_uik,"uik");
+
+
+lux::EnumValueMap G_aTokStereotype_EV_TokenId_Values;
+TokStereotype::EV_TokenId ev_ste_none(TokStereotype::e_none,"");
+TokStereotype::EV_TokenId ev_ste_bound(TokStereotype::ste_bound,"bound");
+TokStereotype::EV_TokenId ev_ste_const(TokStereotype::ste_const,"const");
+TokStereotype::EV_TokenId ev_ste_constrained(TokStereotype::ste_constrained,"constrained");
+TokStereotype::EV_TokenId ev_ste_maybeambiguous(TokStereotype::ste_maybeambiguous,"maybeambiguous");
+TokStereotype::EV_TokenId ev_ste_maybedefault(TokStereotype::ste_maybedefault,"maybedefault");
+TokStereotype::EV_TokenId ev_ste_maybevoid(TokStereotype::ste_maybevoid,"maybevoid");
+TokStereotype::EV_TokenId ev_ste_oneway(TokStereotype::ste_oneway,"oneway");
+TokStereotype::EV_TokenId ev_ste_optional(TokStereotype::ste_optional,"optional");
+TokStereotype::EV_TokenId ev_ste_readonly(TokStereotype::ste_readonly,"readonly");
+TokStereotype::EV_TokenId ev_ste_removable(TokStereotype::ste_removable,"removable");
+TokStereotype::EV_TokenId ev_ste_virtual(TokStereotype::ste_virtual,"virtual");
+TokStereotype::EV_TokenId ev_ste_transient(TokStereotype::ste_transient,"transient");
+TokStereotype::EV_TokenId ev_ste_published(TokStereotype::ste_published,"published");
+
+
+lux::EnumValueMap G_aTokParameterHandling_EV_TokenId_Values;
+TokParameterHandling::EV_TokenId ev_ph_none(TokParameterHandling::e_none,"");
+TokParameterHandling::EV_TokenId ev_ph_in(TokParameterHandling::ph_in,"in");
+TokParameterHandling::EV_TokenId ev_ph_out(TokParameterHandling::ph_out,"out");
+TokParameterHandling::EV_TokenId ev_ph_inout(TokParameterHandling::ph_inout,"inout");
+
+
+namespace lux
+{
+
+template<> EnumValueMap &
+TokBuiltInType::EV_TokenId::Values_() { return G_aTokBuiltInType_EV_TokenId_Values; }
+template<> EnumValueMap &
+TokTypeModifier::EV_TokenId::Values_() { return G_aTokTypeModifier_EV_TokenId_Values; }
+template<> EnumValueMap &
+TokMetaType::EV_TokenId::Values_() { return G_aTokMetaType_EV_TokenId_Values; }
+template<> EnumValueMap &
+TokStereotype::EV_TokenId::Values_() { return G_aTokStereotype_EV_TokenId_Values; }
+template<> EnumValueMap &
+TokParameterHandling::EV_TokenId::Values_() { return G_aTokParameterHandling_EV_TokenId_Values; }
+
+} // namespace lux
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+void
+TokBuiltInType::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_BuiltInType(*this);
+}
+
+const char *
+TokBuiltInType::Text() const
+{
+ return eTag.Text();
+}
+
+void
+TokTypeModifier::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_TypeModifier(*this);
+}
+
+const char *
+TokTypeModifier::Text() const
+{
+ return eTag.Text();
+}
+
+void
+TokMetaType::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_MetaType(*this);
+}
+
+const char *
+TokMetaType::Text() const
+{
+ return eTag.Text();
+}
+
+void
+TokStereotype::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Stereotype(*this);
+}
+
+const char *
+TokStereotype::Text() const
+{
+ return eTag.Text();
+}
+
+void
+TokParameterHandling::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_ParameterHandling(*this);
+}
+
+const char *
+TokParameterHandling::Text() const
+{
+ return eTag.Text();
+}
+
+void
+TokRaises::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Raises();
+}
+
+const char *
+TokRaises::Text() const
+{
+ return "raises";
+}
+
+void
+TokNeeds::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Needs();
+}
+
+const char *
+TokNeeds::Text() const
+{
+ return "needs";
+}
+void
+TokObserves::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Observes();
+}
+
+const char *
+TokObserves::Text() const
+{
+ return "observes";
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/tk_punct.cxx b/autodoc/source/parser_i/idl/tk_punct.cxx
new file mode 100644
index 000000000000..e617473fcd1b
--- /dev/null
+++ b/autodoc/source/parser_i/idl/tk_punct.cxx
@@ -0,0 +1,116 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/tk_punct.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <parser/parserinfo.hxx>
+#include <s2_luidl/tokintpr.hxx>
+
+
+using csi::uidl::TokPunctuation;
+
+
+lux::EnumValueMap G_aTokPunctuation_EV_TokenId_Values;
+TokPunctuation::EV_TokenId ev_none(TokPunctuation::e_none,"");
+TokPunctuation::EV_TokenId BracketOpen(TokPunctuation::BracketOpen,"(");
+TokPunctuation::EV_TokenId BracketClose(TokPunctuation::BracketClose,")");
+TokPunctuation::EV_TokenId ArrayBracketOpen(TokPunctuation::ArrayBracketOpen,"[");
+TokPunctuation::EV_TokenId ArrayBracketClose(TokPunctuation::ArrayBracketClose,"]");
+TokPunctuation::EV_TokenId CurledBracketOpen(TokPunctuation::CurledBracketOpen,"{");
+TokPunctuation::EV_TokenId CurledBracketClose(TokPunctuation::CurledBracketClose,"}");
+TokPunctuation::EV_TokenId Semicolon(TokPunctuation::Semicolon,";");
+TokPunctuation::EV_TokenId Colon(TokPunctuation::Colon,":");
+TokPunctuation::EV_TokenId DoubleColon(TokPunctuation::DoubleColon,"::");
+TokPunctuation::EV_TokenId Comma(TokPunctuation::Comma,",");
+TokPunctuation::EV_TokenId Minus(TokPunctuation::Minus,"-");
+TokPunctuation::EV_TokenId Fullstop(TokPunctuation::Fullstop,".");
+TokPunctuation::EV_TokenId Lesser(TokPunctuation::Lesser,"<");
+TokPunctuation::EV_TokenId Greater(TokPunctuation::Greater,">");
+
+
+
+
+namespace lux
+{
+template<> EnumValueMap &
+TokPunctuation::EV_TokenId::Values_() { return G_aTokPunctuation_EV_TokenId_Values; }
+}
+
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+void
+TokPunctuation::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Punctuation(*this);
+}
+
+const char *
+TokPunctuation::Text() const
+{
+ return eTag.Text();
+}
+
+void
+Tok_EOL::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_EOL();
+}
+
+const char *
+Tok_EOL::Text() const
+{
+ return "\r\n";
+}
+
+void
+Tok_EOF::Trigger( TokenInterpreter & ) const
+{
+ csv_assert(false);
+// io_rInterpreter.Process_EOF();
+}
+
+const char *
+Tok_EOF::Text() const
+{
+ return "";
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/tkp_uidl.cxx b/autodoc/source/parser_i/idl/tkp_uidl.cxx
new file mode 100644
index 000000000000..66f8c556cdbf
--- /dev/null
+++ b/autodoc/source/parser_i/idl/tkp_uidl.cxx
@@ -0,0 +1,76 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_luidl/tkp_uidl.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <s2_luidl/cx_idlco.hxx>
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+TokenParser_Uidl::TokenParser_Uidl( Token_Receiver & o_rUidlReceiver,
+ DYN ::TkpDocuContext & let_drDocuContext )
+ : pBaseContext(new Context_UidlCode(o_rUidlReceiver, let_drDocuContext)),
+ pCurContext(0)
+{
+ SetStartContext();
+}
+
+TokenParser_Uidl::~TokenParser_Uidl()
+{
+}
+
+void
+TokenParser_Uidl::SetStartContext()
+{
+ pCurContext = pBaseContext.Ptr();
+}
+
+void
+TokenParser_Uidl::SetCurrentContext( TkpContext & io_rContext )
+{
+ pCurContext = &io_rContext;
+}
+
+TkpContext &
+TokenParser_Uidl::CurrentContext()
+{
+ return *pCurContext;
+}
+
+} // namespace uidl
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idl/unoidl.cxx b/autodoc/source/parser_i/idl/unoidl.cxx
new file mode 100644
index 000000000000..5206a364d78e
--- /dev/null
+++ b/autodoc/source/parser_i/idl/unoidl.cxx
@@ -0,0 +1,179 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <parser/unoidl.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <stdlib.h>
+#include <cosv/file.hxx>
+#include <ary/ary.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <../parser/inc/x_docu.hxx>
+#include <parser/parserinfo.hxx>
+#include <tools/filecoll.hxx>
+#include <tools/tkpchars.hxx>
+#include <s2_luidl/tkp_uidl.hxx>
+#include <s2_luidl/distrib.hxx>
+#include <s2_luidl/pe_file2.hxx>
+#include <s2_dsapi/cx_dsapi.hxx>
+#include <adc_msg.hxx>
+#include <x_parse2.hxx>
+
+
+
+namespace autodoc
+{
+
+
+class FileParsePerformers
+{
+ public:
+ FileParsePerformers(
+ ary::Repository &
+ io_rRepository,
+ ParserInfo & io_rParserInfo );
+
+ void ParseFile(
+ const char * i_sFullPath );
+
+ void ConnectLinks();
+
+ private:
+ CharacterSource aFileLoader;
+ Dyn<csi::uidl::TokenParser_Uidl>
+ pTokens;
+ csi::uidl::TokenDistributor
+ aDistributor;
+ Dyn<csi::uidl::PE_File>
+ pFileParseEnvironment;
+ ary::Repository &
+ rRepository;
+ ParserInfo & rParserInfo;
+};
+
+
+IdlParser::IdlParser( ary::Repository & io_rRepository )
+ : pRepository(&io_rRepository)
+{
+}
+
+void
+IdlParser::Run( const autodoc::FileCollector_Ifc & i_rFiles )
+{
+ Dyn<FileParsePerformers>
+ pFileParsePerformers(
+ new FileParsePerformers(*pRepository,
+ static_cast< ParserInfo& >(*this)) );
+
+ FileCollector::const_iterator iEnd = i_rFiles.End();
+ for ( FileCollector::const_iterator iter = i_rFiles.Begin();
+ iter != iEnd;
+ ++iter )
+ {
+ Cout() << (*iter) << " ..."<< Endl();
+
+ try
+ {
+ pFileParsePerformers->ParseFile(*iter);
+ }
+ catch (X_AutodocParser &)
+ {
+ /// Ignore and goon
+ TheMessages().Out_ParseError(CurFile(), CurLine());
+ pFileParsePerformers
+ = new FileParsePerformers(*pRepository,
+ static_cast< ParserInfo& >(*this));
+ }
+ catch (X_Docu & xd)
+ {
+ // Currently thic catches only wrong since tags, while since tags are
+ // transformed. In this case the program shall be terminated.
+ Cerr() << xd << Endl();
+ exit(1);
+ }
+ catch (...)
+ {
+ Cout() << "Unknown error." << Endl();
+ exit(0);
+// pFileParsePerformers = new FileParsePerformers( *pRepository );
+ }
+ }
+
+ pFileParsePerformers->ConnectLinks();
+}
+
+FileParsePerformers::FileParsePerformers( ary::Repository & io_rRepository,
+ ParserInfo & io_rParserInfo )
+ : pTokens(0),
+ aDistributor(io_rRepository, io_rParserInfo),
+ rRepository( io_rRepository ),
+ rParserInfo(io_rParserInfo)
+{
+ DYN csi::dsapi::Context_Docu *
+ dpDocuContext
+ = new csi::dsapi::Context_Docu( aDistributor.DocuTokens_Receiver() );
+ pTokens = new csi::uidl::TokenParser_Uidl( aDistributor.CodeTokens_Receiver(), *dpDocuContext );
+ pFileParseEnvironment
+ = new csi::uidl::PE_File(aDistributor,rParserInfo);
+
+ aDistributor.SetTokenProvider(*pTokens);
+ aDistributor.SetTopParseEnvironment(*pFileParseEnvironment);
+}
+
+void
+FileParsePerformers::ParseFile( const char * i_sFullPath )
+{
+ csv::File aFile(i_sFullPath);
+
+ aFile.open( csv::CFM_READ );
+ csv_assert( aFile.is_open() );
+ aFileLoader.LoadText(aFile);
+ aFile.close();
+
+ rParserInfo.Set_CurFile(i_sFullPath, true); // true = count lines
+ pTokens->Start(aFileLoader);
+ aDistributor.Reset();
+
+ do {
+ aDistributor.TradeToken();
+ } while ( NOT aFileLoader.IsFinished() );
+}
+
+void
+FileParsePerformers::ConnectLinks()
+{
+ // KORR_FUTURE ?
+// rRepository.RwGate_Idl().ConnectAdditionalLinks();
+}
+
+} // namespace autodoc
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idoc/cx_docu2.cxx b/autodoc/source/parser_i/idoc/cx_docu2.cxx
new file mode 100644
index 000000000000..c39a1aa0f49a
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/cx_docu2.cxx
@@ -0,0 +1,269 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_dsapi/cx_docu2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <../../parser/inc/tokens/parseinc.hxx>
+#include <s2_dsapi/tokrecv.hxx>
+#include <s2_dsapi/tk_html.hxx>
+#include <s2_dsapi/tk_xml.hxx>
+#include <s2_dsapi/tk_docw2.hxx>
+#include <x_parse2.hxx>
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+
+bool
+Cx_Base::PassNewToken()
+{
+ if (pNewToken)
+ {
+ rReceiver.Receive(*pNewToken.Release());
+
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Cx_Base::FollowUpContext()
+{
+ csv_assert(pFollowUpContext != 0);
+ return *pFollowUpContext;
+}
+
+void
+Cx_Base::Handle_DocuSyntaxError( CharacterSource & io_rText )
+{
+ // KORR_FUTURE
+ // Put this into Error Log File
+
+ Cerr() << "Error: Syntax error in documentation within "
+ << "this text:\n\""
+ << io_rText.CutToken()
+ << "\"."
+ << Endl();
+ SetToken( new Tok_Word(io_rText.CurToken()) );
+}
+
+void
+Cx_EoHtml::ReadCharChain( CharacterSource & io_rText )
+{
+ if ( NULCH == jumpTo(io_rText,'>') )
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ io_rText.MoveOn();
+ SetToken(new Tok_HtmlTag(io_rText.CutToken(),bToken_IsStartOfParagraph));
+}
+
+void
+Cx_EoXmlConst::ReadCharChain( CharacterSource & io_rText )
+{
+ char c = jumpTo(io_rText,'>','*');
+ if ( NULCH == c OR '*' == c )
+ {
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ }
+
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetToken(new Tok_XmlConst(eTokenId));
+}
+
+void
+Cx_EoXmlLink_BeginTag::ReadCharChain( CharacterSource & io_rText )
+{
+ String sScope;
+ String sDim;
+
+ do {
+ char cReached = jumpTo(io_rText,'"','>','*');
+ switch (cReached)
+ {
+ case '"':
+ {
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ char c = jumpTo(io_rText,'"','*', '>');
+ if ( NULCH == c OR '*' == c OR '>' == c)
+ {
+ if ( '>' == c )
+ io_rText.MoveOn();
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ }
+
+ const char * pAttribute = io_rText.CutToken();
+ if ( *pAttribute != '[' )
+ sScope = pAttribute;
+ else
+ sDim = pAttribute;
+
+ io_rText.MoveOn();
+ break;
+ }
+ case '>':
+ break;
+ case '*':
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ default:
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ } // end switch
+ } while ( io_rText.CurChar() != '>' );
+
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetToken( new Tok_XmlLink_BeginTag(eTokenId, sScope.c_str(), sDim.c_str()) );
+}
+
+void
+Cx_EoXmlLink_EndTag::ReadCharChain( CharacterSource & io_rText )
+{
+ char c = jumpTo(io_rText,'>','*');
+ if ( NULCH == c OR '*' == c )
+ {
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ }
+
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetToken(new Tok_XmlLink_EndTag(eTokenId));
+}
+
+void
+Cx_EoXmlFormat_BeginTag::ReadCharChain( CharacterSource & io_rText )
+{
+ String sDim;
+
+ char cReached = jumpTo(io_rText,'"','>','*');
+ switch (cReached)
+ {
+ case '"':
+ {
+ io_rText.MoveOn();
+ io_rText.CutToken();
+
+ char c = jumpTo(io_rText,'"','*','>');
+ if ( NULCH == c OR '*' == c OR '>' == c )
+ {
+ if ('>' == c )
+ io_rText.MoveOn();
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ }
+
+ sDim = io_rText.CutToken();
+
+ c = jumpTo(io_rText,'>','*');
+ if ( NULCH == c OR '*' == c )
+ {
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ }
+ break;
+ }
+ case '>':
+ break;
+ case '*':
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ default:
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ } // end switch
+
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetToken(new Tok_XmlFormat_BeginTag(eTokenId, sDim));
+}
+
+void
+Cx_EoXmlFormat_EndTag::ReadCharChain( CharacterSource & io_rText )
+{
+ char c = jumpTo(io_rText,'>','*');
+ if ( NULCH == c OR '*' == c )
+ {
+ Handle_DocuSyntaxError(io_rText);
+ return;
+ }
+
+ io_rText.MoveOn();
+ io_rText.CutToken();
+ SetToken(new Tok_XmlFormat_EndTag(eTokenId));
+}
+
+void
+Cx_CheckStar::ReadCharChain( CharacterSource & io_rText )
+{
+ bEndTokenFound = false;
+ if (bIsEnd)
+ {
+ char cNext = jumpOver(io_rText,'*');
+ if ( NULCH == cNext )
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ if (cNext == '/')
+ {
+ io_rText.MoveOn();
+ SetToken(new Tok_DocuEnd);
+ bEndTokenFound = true;
+ }
+ else
+ {
+ SetToken( new Tok_Word(io_rText.CutToken()) );
+ }
+ }
+ else
+ {
+ jumpToWhite(io_rText);
+ SetToken( new Tok_Word(io_rText.CutToken()) );
+ }
+}
+
+TkpContext &
+Cx_CheckStar::FollowUpContext()
+{
+ if (bEndTokenFound)
+ return *pEnd_FollowUpContext;
+ else
+ return Cx_Base::FollowUpContext();
+}
+
+} // namespace dsapi
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idoc/cx_dsapi.cxx b/autodoc/source/parser_i/idoc/cx_dsapi.cxx
new file mode 100644
index 000000000000..b1cf5fddcc63
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/cx_dsapi.cxx
@@ -0,0 +1,535 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_dsapi/cx_dsapi.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <x_parse2.hxx>
+#include <tools/tkpchars.hxx>
+#include <s2_dsapi/tk_atag2.hxx>
+#include <s2_dsapi/tk_docw2.hxx>
+#include <s2_dsapi/tk_xml.hxx>
+#include <s2_dsapi/cx_docu2.hxx>
+#include <s2_dsapi/tokrecv.hxx>
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+const intt C_nStatusSize = 128;
+const intt C_nCppInitialNrOfStati = 400;
+
+
+const uintt nF_fin_Error = 1;
+const uintt nF_fin_Ignore = 2;
+const uintt nF_fin_Eof = 3;
+const uintt nF_fin_AnyWord = 4;
+const uintt nF_fin_AtTag = 5;
+const uintt nF_fin_EndSign = 6;
+const uintt nF_goto_EoHtml = 7;
+const uintt nF_goto_EoXmlConst = 8;
+const uintt nF_goto_EoXmlLink_BeginTag = 9;
+const uintt nF_goto_EoXmlLink_EndTag = 10;
+const uintt nF_goto_EoXmlFormat_BeginTag = 11;
+const uintt nF_goto_EoXmlFormat_EndTag = 12;
+const uintt nF_goto_CheckStar = 13;
+const uintt nF_fin_Comma = 14;
+const uintt nF_fin_White = 15;
+
+const UINT16 nTok_at_author = 100 + Tok_AtTag::author;
+const UINT16 nTok_at_see = 100 + Tok_AtTag::see;
+const UINT16 nTok_at_param = 100 + Tok_AtTag::param;
+const UINT16 nTok_at_return = 100 + Tok_AtTag::e_return;
+const UINT16 nTok_at_throws = 100 + Tok_AtTag::e_throw;
+const UINT16 nTok_at_example = 100 + Tok_AtTag::example;
+const UINT16 nTok_at_deprecated = 100 + Tok_AtTag::deprecated;
+const UINT16 nTok_at_suspicious = 100 + Tok_AtTag::suspicious;
+const UINT16 nTok_at_missing = 100 + Tok_AtTag::missing;
+const UINT16 nTok_at_incomplete = 100 + Tok_AtTag::incomplete;
+const UINT16 nTok_at_version = 100 + Tok_AtTag::version;
+const UINT16 nTok_at_guarantees = 100 + Tok_AtTag::guarantees;
+const UINT16 nTok_at_exception = 100 + Tok_AtTag::exception;
+const UINT16 nTok_at_since = 100 + Tok_AtTag::since;
+
+const UINT16 nTok_const_TRUE = 200 + Tok_XmlConst::e_true;
+const UINT16 nTok_const_FALSE = 200 + Tok_XmlConst::e_false;
+const UINT16 nTok_const_NULL = 200 + Tok_XmlConst::e_null;
+const UINT16 nTok_const_void = 200 + Tok_XmlConst::e_void;
+
+const UINT16 nTok_link_typeB = 300 + Tok_XmlLink_BeginTag::type;
+const UINT16 nTok_link_typeE = 325 + Tok_XmlLink_EndTag::type;
+const UINT16 nTok_link_memberB = 300 + Tok_XmlLink_BeginTag::member;
+const UINT16 nTok_link_membeE = 325 + Tok_XmlLink_EndTag::member;
+const UINT16 nTok_link_constB = 300 + Tok_XmlLink_BeginTag::e_const;
+const UINT16 nTok_link_constE = 325 + Tok_XmlLink_EndTag::e_const;
+
+const UINT16 nTok_format_listingB = 350 + Tok_XmlFormat_BeginTag::listing;
+const UINT16 nTok_format_listingE = 375 + Tok_XmlFormat_EndTag::listing;
+const UINT16 nTok_format_codeB = 350 + Tok_XmlFormat_BeginTag::code;
+const UINT16 nTok_format_codeE = 375 + Tok_XmlFormat_EndTag::code;
+const UINT16 nTok_format_atomB = 350 + Tok_XmlFormat_BeginTag::atom;
+const UINT16 nTok_format_atomE = 375 + Tok_XmlFormat_EndTag::atom;
+
+
+const UINT16 nTok_html_parastart = 400;
+
+const UINT16 nTok_MLDocuEnd = 501;
+const UINT16 nTok_EOL = 502;
+
+
+Context_Docu::Context_Docu( Token_Receiver & o_rReceiver )
+ : aStateMachine(C_nStatusSize, C_nCppInitialNrOfStati),
+ pReceiver(&o_rReceiver),
+ pParentContext(0),
+ pCx_EoHtml(0),
+ pCx_EoXmlConst(0),
+ pCx_EoXmlLink_BeginTag(0),
+ pCx_EoXmlLink_EndTag(0),
+ pCx_EoXmlFormat_BeginTag(0),
+ pCx_EoXmlFormat_EndTag(0),
+ pCx_CheckStar(0),
+ pNewToken(0),
+ pFollowUpContext(0),
+ bIsMultiline(false)
+{
+ pCx_EoHtml = new Cx_EoHtml(o_rReceiver, *this);
+ pCx_EoXmlConst = new Cx_EoXmlConst(o_rReceiver, *this);
+ pCx_EoXmlLink_BeginTag = new Cx_EoXmlLink_BeginTag(o_rReceiver, *this);
+ pCx_EoXmlLink_EndTag = new Cx_EoXmlLink_EndTag(o_rReceiver, *this);
+ pCx_EoXmlFormat_BeginTag = new Cx_EoXmlFormat_BeginTag(o_rReceiver, *this);
+ pCx_EoXmlFormat_EndTag = new Cx_EoXmlFormat_EndTag(o_rReceiver, *this);
+ pCx_CheckStar = new Cx_CheckStar(*pReceiver,*this);
+
+ SetupStateMachine();
+}
+
+void
+Context_Docu::SetParentContext( TkpContext & io_rParentContext,
+ const char * )
+{
+ pFollowUpContext = pParentContext = &io_rParentContext;
+ pCx_CheckStar->Set_End_FolloUpContext(io_rParentContext);
+}
+
+Context_Docu::~Context_Docu()
+{
+}
+
+void
+Context_Docu::ReadCharChain( CharacterSource & io_rText )
+{
+ csv_assert(pParentContext != 0);
+
+ pNewToken = 0;
+
+ UINT16 nTokenId = 0;
+ StmBoundsStatu2 & rBound = aStateMachine.GetCharChain(nTokenId, io_rText);
+
+ // !!!
+ // The order of the next two lines is essential, because
+ // pFollowUpContext may be changed by PerformStatusFunction() also,
+ // which then MUST override the previous assignment.
+ pFollowUpContext = rBound.FollowUpContext();
+ PerformStatusFunction(rBound.StatusFunctionNr(), nTokenId, io_rText);
+}
+
+bool
+Context_Docu::PassNewToken()
+{
+ if (pNewToken)
+ {
+ pReceiver->Receive(*pNewToken.Release());
+ return true;
+ }
+ return false;
+}
+
+TkpContext &
+Context_Docu::FollowUpContext()
+{
+ csv_assert(pFollowUpContext != 0);
+ return *pFollowUpContext;
+}
+
+void
+Context_Docu::PerformStatusFunction( uintt i_nStatusSignal,
+ UINT16 i_nTokenId,
+ CharacterSource & io_rText )
+{
+ switch (i_nStatusSignal)
+ {
+ case nF_fin_White:
+ io_rText.CutToken();
+ pNewToken = new Tok_White;
+ break;
+ case nF_fin_Error:
+ throw X_AutodocParser(X_AutodocParser::x_InvalidChar);
+ // no break because of throw
+ case nF_fin_Ignore:
+ pNewToken = 0;
+ io_rText.CutToken();
+ break;
+ case nF_fin_Eof:
+ if (bIsMultiline)
+ throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
+ else
+ io_rText.CutToken();
+ pNewToken = new Tok_EOF;
+ break;
+ case nF_fin_AnyWord:
+ pNewToken = new Tok_Word(io_rText.CutToken());
+ break;
+ case nF_fin_AtTag:
+ io_rText.CutToken();
+ pNewToken = new Tok_AtTag( i_nTokenId - 100 );
+ break;
+ case nF_fin_Comma:
+ io_rText.CutToken();
+ pNewToken = new Tok_Comma;
+ break;
+ case nF_fin_EndSign:
+ io_rText.CutToken();
+ switch (i_nTokenId)
+ {
+ case nTok_MLDocuEnd:
+ if (bIsMultiline)
+ {
+ pNewToken = new Tok_DocuEnd;
+ pFollowUpContext = pParentContext;
+ }
+ else
+ {
+ pNewToken = new Tok_Word(io_rText.CutToken());
+ pFollowUpContext = this;
+ }
+ break;
+ case nTok_EOL:
+ if (bIsMultiline)
+ {
+ pNewToken = new Tok_EOL;
+ pFollowUpContext = this;
+ }
+ else
+ {
+ pNewToken = new Tok_DocuEnd;
+ pFollowUpContext = pParentContext;
+ }
+ pReceiver->Increment_CurLine();
+ break;
+ default:
+ csv_assert(false);
+ }
+ break;
+ case nF_goto_EoHtml:
+ pCx_EoHtml->SetIfIsStartOfParagraph(i_nTokenId == nTok_html_parastart);
+ break;
+ case nF_goto_EoXmlConst:
+ pCx_EoXmlConst->SetTokenId(i_nTokenId - 200);
+ break;
+ case nF_goto_EoXmlLink_BeginTag:
+ pCx_EoXmlLink_BeginTag->SetTokenId(i_nTokenId - 300);
+ break;
+ case nF_goto_EoXmlLink_EndTag:
+ pCx_EoXmlLink_EndTag->SetTokenId(i_nTokenId - 325);
+ break;
+ case nF_goto_EoXmlFormat_BeginTag:
+ pCx_EoXmlFormat_BeginTag->SetTokenId(i_nTokenId - 350);
+ break;
+ case nF_goto_EoXmlFormat_EndTag:
+ pCx_EoXmlFormat_EndTag->SetTokenId(i_nTokenId - 375);
+ break;
+ case nF_goto_CheckStar:
+ pCx_CheckStar->SetIsEnd( bIsMultiline );
+ break;
+ default:
+ csv_assert(false);
+ } // end switch (i_nStatusSignal)
+}
+
+void
+Context_Docu::SetupStateMachine()
+{
+ // Besondere Array-Stati (kein Tokenabschluss oder Kontextwechsel):
+// const INT16 bas = 0; // Base-Status
+ const INT16 wht = 1; // Whitespace-overlook-Status
+ const INT16 awd = 2; // Any-Word-Read-Status
+
+ // Kontextwechsel-Stati:
+ const INT16 goto_EoHtml = 3;
+ const INT16 goto_EoXmlConst = 4;
+ const INT16 goto_EoXmlLink_BeginTag = 5;
+ const INT16 goto_EoXmlLink_EndTag = 6;
+ const INT16 goto_EoXmlFormat_BeginTag = 7;
+ const INT16 goto_EoXmlFormat_EndTag = 8;
+ const INT16 goto_CheckStar = 9;
+
+ // Tokenfinish-Stati:
+ const INT16 finError = 10;
+// const INT16 finIgnore = 11;
+ const INT16 finEof = 12;
+ const INT16 finAnyWord = 13;
+ const INT16 finAtTag = 14;
+ const INT16 finEndSign = 15;
+// const INT16 finComma = 16;
+ const INT16 finWhite = 17;
+
+ // Konstanten zur Benutzung in der Tabelle:
+ const INT16 ght = goto_EoHtml;
+/*
+ const INT16 gxc = goto_EoXmlConst;
+ const INT16 glb = goto_EoXmlLink_TagBegin;
+ const INT16 gle = goto_EoXmlLink_TagEnd;
+ const INT16 gfb = goto_EoXmlFormat_TagBegin;
+ const INT16 gfe = goto_EoXmlFormat_TagEnd;
+*/
+ const INT16 err = finError;
+ const INT16 faw = finAnyWord;
+// const INT16 fig = finIgnore;
+// const INT16 fes = finEndSign;
+ const INT16 fof = finEof;
+// const INT16 fat = finAtTag;
+ const INT16 fwh = finWhite;
+
+ /// The '0's will be replaced by calls of AddToken().
+
+ const INT16 A_nTopStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht, 0,wht,wht, 0,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // ... 31
+ wht,awd,awd,awd,awd,awd,awd,awd,awd,awd, 0,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, 0,awd,awd,awd, // ... 63
+ 0,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
+ };
+
+ const INT16 A_nWhitespaceStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {fof,err,err,err,err,err,err,err,err,wht,fwh,wht,wht,fwh,err,err,
+ err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // ... 31
+ wht,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh, // ... 63
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh, // ... 95
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
+ fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh // ... 127
+ };
+
+ const INT16 A_nWordStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {faw,err,err,err,err,err,err,err,err,faw,faw,faw,faw,faw,err,err,
+ err,err,err,err,err,err,err,err,err,err,faw,err,err,err,err,err, // ... 31
+ faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd, // ... 63
+ faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
+ };
+
+ const INT16 A_nAtTagDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {faw,err,err,err,err,err,err,err,err,faw,faw,faw,faw,faw,err,err,
+ err,err,err,err,err,err,err,err,err,err,faw,err,err,err,err,err, // ... 31
+ faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,faw,awd,awd,awd, // ... 63
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
+ awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
+ };
+
+ const INT16 A_nHtmlDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {ght,err,err,err,err,err,err,err,err,ght,ght,ght,ght,ght,err,err,
+ err,err,err,err,err,err,err,err,err,err,ght,err,err,err,err,err, // ... 31
+ ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,
+ ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght, // ... 63
+ ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,
+ ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght, // ... 95
+ ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,
+ ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght // ... 127
+ };
+
+ const INT16 A_nPunctDefStatus[C_nStatusSize] =
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ {err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 16 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 48 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 80 ...
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
+ err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err // 112 ...
+ };
+
+ DYN StmArrayStatu2 * dpStatusTop
+ = new StmArrayStatu2( C_nStatusSize, A_nTopStatus, 0, true);
+ DYN StmArrayStatu2 * dpStatusWhite
+ = new StmArrayStatu2( C_nStatusSize, A_nWhitespaceStatus, 0, true);
+ DYN StmArrayStatu2 * dpStatusWord
+ = new StmArrayStatu2( C_nStatusSize, A_nWordStatus, 0, true);
+
+ DYN StmBoundsStatu2 * dpBst_goto_EoHtml
+ = new StmBoundsStatu2( *this, *pCx_EoHtml, nF_goto_EoHtml, true );
+ DYN StmBoundsStatu2 * dpBst_goto_EoXmlConst
+ = new StmBoundsStatu2( *this, *pCx_EoXmlConst, nF_goto_EoXmlConst, true );
+ DYN StmBoundsStatu2 * dpBst_goto_EoXmlLink_BeginTag
+ = new StmBoundsStatu2( *this, *pCx_EoXmlLink_BeginTag, nF_goto_EoXmlLink_BeginTag, true );
+ DYN StmBoundsStatu2 * dpBst_goto_EoXmlLink_EndTag
+ = new StmBoundsStatu2( *this, *pCx_EoXmlLink_EndTag, nF_goto_EoXmlLink_EndTag, true );
+ DYN StmBoundsStatu2 * dpBst_goto_EoXmlFormat_BeginTag
+ = new StmBoundsStatu2( *this, *pCx_EoXmlFormat_BeginTag, nF_goto_EoXmlFormat_BeginTag, true );
+ DYN StmBoundsStatu2 * dpBst_goto_EoXmlFormat_EndTag
+ = new StmBoundsStatu2( *this, *pCx_EoXmlFormat_EndTag, nF_goto_EoXmlFormat_EndTag, true );
+ DYN StmBoundsStatu2 * dpBst_goto_CheckStar
+ = new StmBoundsStatu2( *this, *pCx_CheckStar, nF_goto_CheckStar, true );
+
+
+ DYN StmBoundsStatu2 * dpBst_finError
+ = new StmBoundsStatu2( *this, TkpContext_Null2_(), nF_fin_Error, true );
+ DYN StmBoundsStatu2 * dpBst_finIgnore
+ = new StmBoundsStatu2( *this, *this, nF_fin_Ignore, true);
+ DYN StmBoundsStatu2 * dpBst_finEof
+ = new StmBoundsStatu2( *this, TkpContext_Null2_(), nF_fin_Eof, false);
+ DYN StmBoundsStatu2 * dpBst_finAnyWord
+ = new StmBoundsStatu2( *this, *this, nF_fin_AnyWord, true);
+ DYN StmBoundsStatu2 * dpBst_finAtTag
+ = new StmBoundsStatu2( *this, *this, nF_fin_AtTag, false);
+ DYN StmBoundsStatu2 * dpBst_finEndSign
+ = new StmBoundsStatu2( *this, *pParentContext, nF_fin_EndSign, false);
+ DYN StmBoundsStatu2 * dpBst_fin_Comma
+ = new StmBoundsStatu2( *this, *this, nF_fin_Comma, false );
+ DYN StmBoundsStatu2 * dpBst_finWhite
+ = new StmBoundsStatu2( *this, *this, nF_fin_White, false);
+
+
+ // dpMain aufbauen:
+ aStateMachine.AddStatus(dpStatusTop);
+ aStateMachine.AddStatus(dpStatusWhite);
+ aStateMachine.AddStatus(dpStatusWord);
+
+ aStateMachine.AddStatus(dpBst_goto_EoHtml);
+ aStateMachine.AddStatus(dpBst_goto_EoXmlConst);
+ aStateMachine.AddStatus(dpBst_goto_EoXmlLink_BeginTag);
+ aStateMachine.AddStatus(dpBst_goto_EoXmlLink_EndTag);
+ aStateMachine.AddStatus(dpBst_goto_EoXmlFormat_BeginTag);
+ aStateMachine.AddStatus(dpBst_goto_EoXmlFormat_EndTag);
+ aStateMachine.AddStatus(dpBst_goto_CheckStar);
+
+ aStateMachine.AddStatus(dpBst_finError);
+ aStateMachine.AddStatus(dpBst_finIgnore);
+ aStateMachine.AddStatus(dpBst_finEof);
+ aStateMachine.AddStatus(dpBst_finAnyWord);
+ aStateMachine.AddStatus(dpBst_finAtTag);
+ aStateMachine.AddStatus(dpBst_finEndSign);
+ aStateMachine.AddStatus(dpBst_fin_Comma);
+ aStateMachine.AddStatus(dpBst_finWhite);
+
+
+ aStateMachine.AddToken( "@author", nTok_at_author, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@param", nTok_at_param, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@throws", nTok_at_throws, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@see", nTok_at_see, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@since", nTok_at_since, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@example", nTok_at_example, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@return", nTok_at_return, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@returns", nTok_at_return, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@deprecated",
+ nTok_at_deprecated, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@suspicious",
+ nTok_at_suspicious, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@missing", nTok_at_missing, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@incomplete",
+ nTok_at_incomplete, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@version", nTok_at_version, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@guarantees",
+ nTok_at_guarantees, A_nAtTagDefStatus, finAtTag );
+ aStateMachine.AddToken( "@exception",
+ nTok_at_exception, A_nAtTagDefStatus, finAtTag );
+
+ aStateMachine.AddToken( "<", 0, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "*", 0, A_nPunctDefStatus, goto_CheckStar );
+// aStateMachine.AddToken( ",", 0, A_nPunctDefStatus, finComma );
+
+ aStateMachine.AddToken( "<type", nTok_link_typeB, A_nHtmlDefStatus, goto_EoXmlLink_BeginTag );
+ aStateMachine.AddToken( "</type", nTok_link_typeE, A_nHtmlDefStatus, goto_EoXmlLink_EndTag );
+ aStateMachine.AddToken( "<member", nTok_link_memberB, A_nHtmlDefStatus, goto_EoXmlLink_BeginTag );
+ aStateMachine.AddToken( "</member", nTok_link_membeE, A_nHtmlDefStatus, goto_EoXmlLink_EndTag );
+ aStateMachine.AddToken( "<const", nTok_link_constB, A_nHtmlDefStatus, goto_EoXmlLink_BeginTag );
+ aStateMachine.AddToken( "</const", nTok_link_constE, A_nHtmlDefStatus, goto_EoXmlLink_EndTag );
+
+ aStateMachine.AddToken( "<listing", nTok_format_listingB,A_nHtmlDefStatus, goto_EoXmlFormat_BeginTag );
+ aStateMachine.AddToken( "</listing",nTok_format_listingE,A_nHtmlDefStatus, goto_EoXmlFormat_EndTag );
+ aStateMachine.AddToken( "<code", nTok_format_codeB, A_nHtmlDefStatus, goto_EoXmlFormat_BeginTag );
+ aStateMachine.AddToken( "</code", nTok_format_codeE, A_nHtmlDefStatus, goto_EoXmlFormat_EndTag );
+ aStateMachine.AddToken( "<atom", nTok_format_atomB, A_nHtmlDefStatus, goto_EoXmlFormat_BeginTag );
+ aStateMachine.AddToken( "</atom", nTok_format_atomE, A_nHtmlDefStatus, goto_EoXmlFormat_EndTag );
+
+ aStateMachine.AddToken( "<TRUE/", nTok_const_TRUE, A_nHtmlDefStatus, goto_EoXmlConst );
+ aStateMachine.AddToken( "<true/", nTok_const_TRUE, A_nHtmlDefStatus, goto_EoXmlConst );
+ aStateMachine.AddToken( "<FALSE/", nTok_const_FALSE, A_nHtmlDefStatus, goto_EoXmlConst );
+ aStateMachine.AddToken( "<false/", nTok_const_FALSE, A_nHtmlDefStatus, goto_EoXmlConst );
+ aStateMachine.AddToken( "<NULL/", nTok_const_NULL, A_nHtmlDefStatus, goto_EoXmlConst );
+ aStateMachine.AddToken( "<void/", nTok_const_void, A_nHtmlDefStatus, goto_EoXmlConst );
+
+ aStateMachine.AddToken( "<p", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<pre", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<dl", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<ul", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<ol", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<table", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<P", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<PRE", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<DL", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<UL", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<OL", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+ aStateMachine.AddToken( "<TABLE", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
+
+ aStateMachine.AddToken( "\r\n", nTok_EOL, A_nPunctDefStatus, finEndSign );
+ aStateMachine.AddToken( "\n", nTok_EOL, A_nPunctDefStatus, finEndSign );
+ aStateMachine.AddToken( "\r", nTok_EOL, A_nPunctDefStatus, finEndSign );
+};
+
+void
+Context_Docu::SetMode_IsMultiLine( bool i_bTrue )
+{
+ bIsMultiline = i_bTrue;
+}
+
+
+} // namespace dsapi
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idoc/docu_pe2.cxx b/autodoc/source/parser_i/idoc/docu_pe2.cxx
new file mode 100644
index 000000000000..3c8efce59a90
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/docu_pe2.cxx
@@ -0,0 +1,608 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_dsapi/docu_pe2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/doc/d_oldidldocu.hxx>
+#include <ary_i/d_token.hxx>
+#include <parser/parserinfo.hxx>
+#include <adc_cl.hxx>
+#include <adc_msg.hxx>
+#include <../parser/inc/x_docu.hxx>
+#include <s2_dsapi/dsapitok.hxx>
+#include <s2_dsapi/tk_atag2.hxx>
+#include <s2_dsapi/tk_html.hxx>
+#include <s2_dsapi/tk_docw2.hxx>
+#include <s2_dsapi/tk_xml.hxx>
+
+
+#ifdef UNX
+#define strnicmp strncasecmp
+#endif
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+const char * AtTagTitle(
+ const Tok_AtTag & i_rToken );
+
+
+SapiDocu_PE::SapiDocu_PE(ParserInfo & io_rPositionInfo)
+ : pDocu(0),
+ eState(e_none),
+ pPositionInfo(&io_rPositionInfo),
+ fCurTokenAddFunction(&SapiDocu_PE::AddDocuToken2Void),
+ pCurAtTag(0),
+ sCurDimAttribute(),
+ sCurAtSeeType_byXML(200)
+{
+}
+
+SapiDocu_PE::~SapiDocu_PE()
+{
+}
+
+void
+SapiDocu_PE::ProcessToken( DYN csi::dsapi::Token & let_drToken )
+{
+ if (IsComplete())
+ {
+ pDocu = 0;
+ eState = e_none;
+ }
+
+ if ( eState == e_none )
+ {
+ pDocu = new ary::doc::OldIdlDocu;
+ eState = st_short;
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Short;
+ }
+
+ csv_assert(pDocu);
+
+ let_drToken.Trigger(*this);
+ delete &let_drToken;
+}
+
+void
+SapiDocu_PE::Process_AtTag( const Tok_AtTag & i_rToken )
+{
+ if (NOT pCurAtTag)
+ {
+ eState = st_attags;
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag;
+ }
+ else
+ {
+ csv_assert(eState == st_attags);
+ pDocu->AddAtTag(*pCurAtTag.Release());
+ }
+
+ if (i_rToken.Id() == Tok_AtTag::param)
+ {
+ pCurAtTag = new DT_ParameterAtTag;
+ fCurTokenAddFunction = &SapiDocu_PE::SetCurParameterAtTagName;
+ }
+ else if (i_rToken.Id() == Tok_AtTag::see)
+ {
+ pCurAtTag = new DT_SeeAlsoAtTag;
+ fCurTokenAddFunction = &SapiDocu_PE::SetCurSeeAlsoAtTagLinkText;
+ }
+ else if (i_rToken.Id() == Tok_AtTag::deprecated)
+ {
+ pDocu->SetDeprecated();
+ pCurAtTag = new DT_StdAtTag(""); // Dummy that will not be used.
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Deprecated;
+ }
+ else if (i_rToken.Id() == Tok_AtTag::since)
+ {
+ pCurAtTag = new DT_SinceAtTag;
+ fCurTokenAddFunction = &SapiDocu_PE::SetCurSinceAtTagVersion;
+ }
+ else
+ {
+ pCurAtTag = new DT_StdAtTag( AtTagTitle(i_rToken) );
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag;
+ }
+}
+
+void
+SapiDocu_PE::Process_HtmlTag( const Tok_HtmlTag & i_rToken )
+{
+ if (eState == st_short AND i_rToken.IsParagraphStarter())
+ {
+ eState = st_description;
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Description;
+ }
+
+ // Workaround special for some errors in API docu:
+ if ( strnicmp("<true",i_rToken.Text(),5 ) == 0 )
+ {
+ if ( strcmp("<TRUE/>",i_rToken.Text()) != 0 )
+ TheMessages().Out_InvalidConstSymbol( i_rToken.Text(),
+ pPositionInfo->CurFile(),
+ pPositionInfo->CurLine() );
+ (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>true</b>") );
+ return;
+ }
+ else if ( strnicmp("<false",i_rToken.Text(),6 ) == 0 )
+ {
+ if ( strcmp("<FALSE/>",i_rToken.Text()) != 0 )
+ TheMessages().Out_InvalidConstSymbol( i_rToken.Text(),
+ pPositionInfo->CurFile(),
+ pPositionInfo->CurLine() );
+ (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>false</b>") );
+ return;
+ }
+ else if ( strnicmp("<NULL",i_rToken.Text(),5 ) == 0 )
+ {
+ if ( strcmp("<NULL/>",i_rToken.Text()) != 0 )
+ TheMessages().Out_InvalidConstSymbol( i_rToken.Text(),
+ pPositionInfo->CurFile(),
+ pPositionInfo->CurLine() );
+ (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>null</b>") );
+ return;
+ }
+ else if ( strnicmp("<void",i_rToken.Text(),5 ) == 0 )
+ {
+ if ( strcmp("<void/>",i_rToken.Text()) != 0 )
+ TheMessages().Out_InvalidConstSymbol( i_rToken.Text(),
+ pPositionInfo->CurFile(),
+ pPositionInfo->CurLine() );
+ (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>void</b>") );
+ return;
+ }
+
+ (this->*fCurTokenAddFunction)( *new DT_Style(i_rToken.Text(),false) );
+}
+
+void
+SapiDocu_PE::Process_XmlConst( const Tok_XmlConst & i_rToken )
+{
+ (this->*fCurTokenAddFunction)(*new DT_MupConst(i_rToken.Text()));
+}
+
+void
+SapiDocu_PE::Process_XmlLink_BeginTag( const Tok_XmlLink_BeginTag & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case Tok_XmlLink_Tag::e_const:
+ (this->*fCurTokenAddFunction)(*new DT_Style("<b>",false));
+ break;
+ case Tok_XmlLink_Tag::member:
+ (this->*fCurTokenAddFunction)(*new DT_MupMember(i_rToken.Scope()));
+ break;
+ case Tok_XmlLink_Tag::type:
+ (this->*fCurTokenAddFunction)(*new DT_MupType(i_rToken.Scope()));
+ break;
+ default:
+ // Do nothing.
+ ;
+ }
+
+ if ( i_rToken.Dim().length() > 0 )
+ sCurDimAttribute = i_rToken.Dim();
+ else
+ sCurDimAttribute.clear();
+}
+
+void
+SapiDocu_PE::Process_XmlLink_EndTag( const Tok_XmlLink_EndTag & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case Tok_XmlLink_Tag::e_const:
+ (this->*fCurTokenAddFunction)(*new DT_Style("</b>",false));
+ break;
+ case Tok_XmlLink_Tag::member:
+ (this->*fCurTokenAddFunction)(*new DT_MupMember(true));
+ break;
+ case Tok_XmlLink_Tag::type:
+ (this->*fCurTokenAddFunction)(*new DT_MupType(true));
+ break;
+ default:
+ // Do nothing.
+ ;
+ }
+ if ( sCurDimAttribute.length() > 0 )
+ {
+ (this->*fCurTokenAddFunction)( *new DT_TextToken(sCurDimAttribute.c_str()) );
+ sCurDimAttribute.clear();
+ }
+}
+
+void
+SapiDocu_PE::Process_XmlFormat_BeginTag( const Tok_XmlFormat_BeginTag & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case Tok_XmlFormat_Tag::code:
+ (this->*fCurTokenAddFunction)(*new DT_Style("<code>",false));
+ break;
+ case Tok_XmlFormat_Tag::listing:
+ (this->*fCurTokenAddFunction)(*new DT_Style("<pre>",true));
+ break;
+ case Tok_XmlFormat_Tag::atom:
+ (this->*fCurTokenAddFunction)(*new DT_Style("<code>",true));
+ break;
+ default:
+ // Do nothing.
+ ;
+ }
+ if ( i_rToken.Dim().length() > 0 )
+ sCurDimAttribute = i_rToken.Dim();
+ else
+ sCurDimAttribute.clear();
+}
+
+void
+SapiDocu_PE::Process_XmlFormat_EndTag( const Tok_XmlFormat_EndTag & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case Tok_XmlFormat_Tag::code:
+ (this->*fCurTokenAddFunction)(*new DT_Style("</code>",false));
+ break;
+ case Tok_XmlFormat_Tag::listing:
+ (this->*fCurTokenAddFunction)(*new DT_Style("</pre>",true));
+ break;
+ case Tok_XmlFormat_Tag::atom:
+ (this->*fCurTokenAddFunction)(*new DT_Style("</code>",true));
+ break;
+ default:
+ // Do nothing.
+ ;
+ }
+ if ( sCurDimAttribute.length() > 0 )
+ {
+ (this->*fCurTokenAddFunction)( *new DT_TextToken(sCurDimAttribute.c_str()) );
+ sCurDimAttribute.clear();
+ }
+}
+
+void
+SapiDocu_PE::Process_Word( const Tok_Word & i_rToken )
+{
+ (this->*fCurTokenAddFunction)(*new DT_TextToken(i_rToken.Text()));
+}
+
+void
+SapiDocu_PE::Process_Comma()
+{
+ csv_assert(1==7);
+// (this->*fCurTokenAddFunction)(*new DT_Comma(i_rToken.Text()));
+}
+
+void
+SapiDocu_PE::Process_DocuEnd()
+{
+ eState = st_complete;
+ if (pCurAtTag)
+ pDocu->AddAtTag(*pCurAtTag.Release());
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Void;
+}
+
+void
+SapiDocu_PE::Process_EOL()
+{
+ (this->*fCurTokenAddFunction)(*new DT_EOL);
+}
+
+void
+SapiDocu_PE::Process_White()
+{
+ (this->*fCurTokenAddFunction)(*new DT_White);
+}
+
+DYN ary::doc::OldIdlDocu *
+SapiDocu_PE::ReleaseJustParsedDocu()
+{
+ if (IsComplete())
+ {
+ eState = e_none;
+ return pDocu.Release();
+ }
+ return 0;
+}
+
+
+bool
+SapiDocu_PE::IsComplete() const
+{
+ return eState == st_complete;
+}
+
+void
+SapiDocu_PE::AddDocuToken2Void( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ delete &let_drNewToken;
+}
+
+void
+SapiDocu_PE::AddDocuToken2Short( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pDocu);
+ pDocu->AddToken2Short(let_drNewToken);
+}
+
+void
+SapiDocu_PE::AddDocuToken2Description( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pDocu);
+ pDocu->AddToken2Description(let_drNewToken);
+}
+
+void
+SapiDocu_PE::AddDocuToken2Deprecated( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pDocu);
+ pDocu->AddToken2DeprecatedText(let_drNewToken);
+}
+
+void
+SapiDocu_PE::AddDocuToken2CurAtTag( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pCurAtTag);
+ pCurAtTag->AddToken(let_drNewToken);
+}
+
+void
+SapiDocu_PE::SetCurParameterAtTagName( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ if (let_drNewToken.IsWhiteOnly())
+ {
+ delete &let_drNewToken;
+ return;
+ }
+
+ csv_assert(pCurAtTag);
+ DT_TextToken * dpText = dynamic_cast< DT_TextToken* >(&let_drNewToken);
+ if (dpText != 0)
+ pCurAtTag->SetName(dpText->GetText());
+ else
+ pCurAtTag->SetName("parameter ?");
+ delete &let_drNewToken;
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag;
+}
+
+void
+SapiDocu_PE::SetCurSeeAlsoAtTagLinkText( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pCurAtTag);
+
+ if (let_drNewToken.IsWhiteOnly())
+ {
+ delete &let_drNewToken;
+ return;
+ }
+
+ DT_TextToken * pText = dynamic_cast< DT_TextToken* >(&let_drNewToken);
+ if (pText != 0)
+ pCurAtTag->SetName(pText->GetText());
+ else
+ {
+ DT_MupType *
+ pTypeBegin = dynamic_cast< DT_MupType* >(&let_drNewToken);
+ DT_MupMember *
+ pMemberBegin = dynamic_cast< DT_MupMember* >(&let_drNewToken);
+ if (pTypeBegin != 0 OR pMemberBegin != 0)
+ {
+ sCurAtSeeType_byXML.reset();
+
+ sCurAtSeeType_byXML
+ << ( pTypeBegin != 0
+ ? pTypeBegin->Scope()
+ : pMemberBegin->Scope() );
+
+ if (sCurAtSeeType_byXML.tellp() > 0)
+ {
+ sCurAtSeeType_byXML
+ << "::";
+ }
+ delete &let_drNewToken;
+ fCurTokenAddFunction = &SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_2;
+ return;
+ }
+ else
+ {
+ pCurAtTag->SetName("? (no identifier found)");
+ }
+ }
+ delete &let_drNewToken;
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag;
+}
+
+void
+SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_2( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pCurAtTag);
+
+ if (let_drNewToken.IsWhiteOnly())
+ {
+ delete &let_drNewToken;
+ return;
+ }
+
+ DT_TextToken *
+ pText = dynamic_cast< DT_TextToken* >(&let_drNewToken);
+ if (pText != 0)
+ {
+ sCurAtSeeType_byXML
+ << pText->GetText();
+ pCurAtTag->SetName(sCurAtSeeType_byXML.c_str());
+ }
+ else
+ {
+ pCurAtTag->SetName("? (no identifier found)");
+ }
+ sCurAtSeeType_byXML.reset();
+ delete &let_drNewToken;
+ fCurTokenAddFunction = &SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_3;
+}
+
+void
+SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_3( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pCurAtTag);
+
+ if (let_drNewToken.IsWhiteOnly())
+ {
+ delete &let_drNewToken;
+ return;
+ }
+
+ /// Could emit warning, but don't because this parser is obsolete.
+// Tok_XmlLink_BeginTag *
+// pLinkEnd = dynamic_cast< Tok_XmlLink_EndTag* >(&let_drNewToken);
+// if (pLinkEnd == 0)
+// {
+// warn_aboutMissingClosingTag();
+// }
+
+ delete &let_drNewToken;
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag;
+}
+
+
+
+void
+SapiDocu_PE::SetCurSinceAtTagVersion( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pCurAtTag);
+
+ DT_TextToken * pToken = dynamic_cast< DT_TextToken* >(&let_drNewToken);
+ if (pToken == 0)
+ {
+ delete &let_drNewToken;
+ return;
+ }
+
+ const String
+ sVersion(pToken->GetText());
+ const char
+ cFirst = *sVersion.begin();
+ const char
+ cCiphersend = '9' + 1;
+ const autodoc::CommandLine &
+ rCommandLine = autodoc::CommandLine::Get_();
+
+
+ if ( rCommandLine.DoesTransform_SinceTag())
+ {
+ // The @since version number shall be interpreted,
+
+ if ( NOT csv::in_range('0', cFirst, cCiphersend) )
+ {
+ // But this is a non-number-part, so we wait for
+ // the next one.
+ delete &let_drNewToken;
+ return;
+ }
+ else if (rCommandLine.DisplayOf_SinceTagValue(sVersion).empty())
+ {
+ // This is the numbered part, but we don't know it.
+ delete &let_drNewToken;
+
+ StreamLock
+ sl(200);
+ sl()
+ << "Since-value '"
+ << sVersion
+ << "' not found in translation table.";
+ throw X_Docu("since", sl().c_str());
+ }
+ }
+
+ // Either since tags are not specially interpreted, or
+ // we got a known one.
+ pCurAtTag->AddToken(let_drNewToken);
+ fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2SinceAtTag;
+}
+
+void
+SapiDocu_PE::AddDocuToken2SinceAtTag( DYN ary::inf::DocuToken & let_drNewToken )
+{
+ csv_assert(pCurAtTag);
+ String &
+ sValue = pCurAtTag->Access_Text().Access_TextOfFirstToken();
+ StreamLock
+ sHelp(1000);
+
+ DT_TextToken *
+ pToken = dynamic_cast< DT_TextToken* >(&let_drNewToken);
+ if (pToken != 0)
+ {
+ sValue = sHelp() << sValue << pToken->GetText() << c_str;
+ }
+ else if (dynamic_cast< DT_White* >(&let_drNewToken) != 0)
+ {
+ sValue = sHelp() << sValue << " " << c_str;
+ }
+ delete &let_drNewToken;
+}
+
+const char *
+AtTagTitle( const Tok_AtTag & i_rToken )
+{
+ switch (i_rToken.Id())
+ {
+ case Tok_AtTag::author: return "";
+ case Tok_AtTag::see: return "See also";
+ case Tok_AtTag::param: return "Parameters";
+ case Tok_AtTag::e_return: return "Returns";
+ case Tok_AtTag::e_throw: return "Throws";
+ case Tok_AtTag::example: return "Example";
+ case Tok_AtTag::deprecated: return "Deprecated";
+ case Tok_AtTag::suspicious: return "";
+ case Tok_AtTag::missing: return "";
+ case Tok_AtTag::incomplete: return "";
+ case Tok_AtTag::version: return "";
+ case Tok_AtTag::guarantees: return "Guarantees";
+ case Tok_AtTag::exception: return "Exception";
+ case Tok_AtTag::since: return "Since version";
+ default:
+ // See below.
+ ;
+ }
+ return i_rToken.Text();
+}
+
+
+
+} // namespace dsapi
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idoc/makefile.mk b/autodoc/source/parser_i/idoc/makefile.mk
new file mode 100644
index 000000000000..c4e760bd2973
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/makefile.mk
@@ -0,0 +1,62 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=autodoc
+TARGET=parser2_s2_dsapi
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/cx_docu2.obj \
+ $(OBJ)$/cx_dsapi.obj \
+ $(OBJ)$/docu_pe2.obj \
+ $(OBJ)$/tk_atag2.obj \
+ $(OBJ)$/tk_docw2.obj \
+ $(OBJ)$/tk_html.obj \
+ $(OBJ)$/tk_xml.obj
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser_i/idoc/tk_atag2.cxx b/autodoc/source/parser_i/idoc/tk_atag2.cxx
new file mode 100644
index 000000000000..30264f68f1f0
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/tk_atag2.cxx
@@ -0,0 +1,85 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_dsapi/tk_atag2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <s2_dsapi/tokintpr.hxx>
+
+
+
+using csi::dsapi::Tok_AtTag;
+
+lux::EnumValueMap G_aTokAtTag_EV_TokenId_Values;
+Tok_AtTag::EV_TokenId ev_none2(Tok_AtTag::e_none,"");
+Tok_AtTag::EV_TokenId ev_author(Tok_AtTag::author,"@author");
+Tok_AtTag::EV_TokenId ev_see(Tok_AtTag::see,"@see");
+Tok_AtTag::EV_TokenId ev_param(Tok_AtTag::param,"@param");
+Tok_AtTag::EV_TokenId ev_e_return(Tok_AtTag::e_return,"@return");
+Tok_AtTag::EV_TokenId ev_e_throw(Tok_AtTag::e_throw,"@throws");
+Tok_AtTag::EV_TokenId ev_example(Tok_AtTag::example,"@example");
+Tok_AtTag::EV_TokenId ev_deprecated(Tok_AtTag::deprecated,"@deprecated");
+Tok_AtTag::EV_TokenId ev_suspicious(Tok_AtTag::suspicious,"@suspicious");
+Tok_AtTag::EV_TokenId ev_missing(Tok_AtTag::missing,"@missing");
+Tok_AtTag::EV_TokenId ev_incomplete(Tok_AtTag::incomplete,"@incomplete");
+Tok_AtTag::EV_TokenId ev_version(Tok_AtTag::version,"@version");
+Tok_AtTag::EV_TokenId ev_guarantees(Tok_AtTag::guarantees,"@guarantees");
+Tok_AtTag::EV_TokenId ev_exception(Tok_AtTag::exception,"@exception");
+Tok_AtTag::EV_TokenId ev_since(Tok_AtTag::since,"@since");
+
+
+namespace lux
+{
+template<> EnumValueMap &
+Tok_AtTag::EV_TokenId::Values_() { return G_aTokAtTag_EV_TokenId_Values; }
+}
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+void
+Tok_AtTag::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_AtTag(*this);
+}
+
+const char *
+Tok_AtTag::Text() const
+{
+ return eTag.Text();
+}
+
+} // namespace dsapi
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idoc/tk_docw2.cxx b/autodoc/source/parser_i/idoc/tk_docw2.cxx
new file mode 100644
index 000000000000..097214a9c838
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/tk_docw2.cxx
@@ -0,0 +1,121 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_dsapi/tk_docw2.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <s2_dsapi/tokintpr.hxx>
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+void
+Tok_Word::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Word(*this);
+}
+
+const char *
+Tok_Word::Text() const
+{
+ return sText;
+}
+
+void
+Tok_Comma::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_Comma();
+}
+
+const char *
+Tok_Comma::Text() const
+{
+ return ",";
+}
+
+void
+Tok_DocuEnd::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_DocuEnd();
+}
+
+const char *
+Tok_DocuEnd::Text() const
+{
+ return "*/";
+}
+
+void
+Tok_EOL::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_EOL();
+}
+
+const char *
+Tok_EOL::Text() const
+{
+ return "\r\n";
+}
+
+void
+Tok_EOF::Trigger( TokenInterpreter & ) const
+{
+ csv_assert(false);
+}
+
+const char *
+Tok_EOF::Text() const
+{
+ return "";
+}
+
+void
+Tok_White::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_White();
+}
+
+const char *
+Tok_White::Text() const
+{
+ return " ";
+}
+
+
+
+
+} // namespace dsapi
+} // namespace csi
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idoc/tk_html.cxx b/autodoc/source/parser_i/idoc/tk_html.cxx
new file mode 100644
index 000000000000..d26720bd9b0d
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/tk_html.cxx
@@ -0,0 +1,60 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_dsapi/tk_html.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <s2_dsapi/tokintpr.hxx>
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+void
+Tok_HtmlTag::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_HtmlTag(*this);
+}
+
+const char *
+Tok_HtmlTag::Text() const
+{
+ return sTag;
+}
+
+
+} // namespace dsapi
+} // namespace csi
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/idoc/tk_xml.cxx b/autodoc/source/parser_i/idoc/tk_xml.cxx
new file mode 100644
index 000000000000..a1f60d0ef98a
--- /dev/null
+++ b/autodoc/source/parser_i/idoc/tk_xml.cxx
@@ -0,0 +1,176 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <s2_dsapi/tk_xml.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <s2_dsapi/tokintpr.hxx>
+
+using csi::dsapi::Tok_XmlConst;
+using csi::dsapi::Tok_XmlLink_Tag;
+using csi::dsapi::Tok_XmlFormat_Tag;
+
+
+lux::EnumValueMap G_aTok_XmlConst_EV_TokenId_Values;
+Tok_XmlConst::EV_TokenId ev_consts_none(Tok_XmlConst::e_none,"");
+Tok_XmlConst::EV_TokenId ev_e_true(Tok_XmlConst::e_true,"true");
+Tok_XmlConst::EV_TokenId ev_e_false(Tok_XmlConst::e_false,"false");
+Tok_XmlConst::EV_TokenId ev_e_null(Tok_XmlConst::e_null,"NULL");
+Tok_XmlConst::EV_TokenId ev_e_void(Tok_XmlConst::e_void,"void");
+
+lux::EnumValueMap G_aTok_XmlLink_Tag_EV_TokenId_Values;
+Tok_XmlLink_Tag::EV_TokenId ev_linktags_none(Tok_XmlLink_Tag::e_none,"");
+Tok_XmlLink_Tag::EV_TokenId ev_e_const(Tok_XmlLink_Tag::e_const,"const");
+Tok_XmlLink_Tag::EV_TokenId ev_member(Tok_XmlLink_Tag::member,"member");
+Tok_XmlLink_Tag::EV_TokenId ev_type(Tok_XmlLink_Tag::type,"type");
+
+lux::EnumValueMap G_aTok_XmlFormat_Tag_EV_TokenId_Values;
+Tok_XmlFormat_Tag::EV_TokenId ev_formattags_none(Tok_XmlFormat_Tag::e_none,"");
+Tok_XmlFormat_Tag::EV_TokenId ev_code(Tok_XmlFormat_Tag::code,"code");
+Tok_XmlFormat_Tag::EV_TokenId ev_listing(Tok_XmlFormat_Tag::listing,"listing");
+Tok_XmlFormat_Tag::EV_TokenId ev_atom(Tok_XmlFormat_Tag::atom,"code");
+
+
+namespace lux
+{
+
+template<> EnumValueMap &
+Tok_XmlConst::EV_TokenId::Values_() { return G_aTok_XmlConst_EV_TokenId_Values; }
+template<> EnumValueMap &
+Tok_XmlLink_Tag::EV_TokenId::Values_() { return G_aTok_XmlLink_Tag_EV_TokenId_Values; }
+template<> EnumValueMap &
+Tok_XmlFormat_Tag::EV_TokenId::Values_() { return G_aTok_XmlFormat_Tag_EV_TokenId_Values; }
+
+} // namespace lux
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+void
+Tok_XmlConst::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_XmlConst(*this);
+}
+
+const char *
+Tok_XmlConst::Text() const
+{
+ return eTag.Text();
+}
+
+void
+Tok_XmlLink_BeginTag::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_XmlLink_BeginTag(*this);
+}
+
+const char *
+Tok_XmlLink_BeginTag::Text() const
+{
+ static StreamStr ret(120);
+ ret.seekp(0);
+ if (sScope.length() > 0)
+ {
+ ret << "<"
+ << eTag.Text()
+ << " scope=\""
+ << sScope
+ << "\">";
+ }
+ else
+ {
+ ret << "<"
+ << eTag.Text()
+ << ">";
+ }
+ return ret.c_str();
+}
+
+void
+Tok_XmlLink_EndTag::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_XmlLink_EndTag(*this);
+}
+
+const char *
+Tok_XmlLink_EndTag::Text() const
+{
+ static StreamStr ret(120);
+ ret.seekp(0);
+ ret << "</"
+ << eTag.Text()
+ << ">";
+ return ret.c_str();
+}
+
+void
+Tok_XmlFormat_BeginTag::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_XmlFormat_BeginTag(*this);
+}
+
+const char *
+Tok_XmlFormat_BeginTag::Text() const
+{
+ static StreamStr ret(120);
+ ret.seekp(0);
+ ret << "<"
+ << eTag.Text()
+ << ">";
+ return ret.c_str();
+}
+
+void
+Tok_XmlFormat_EndTag::Trigger( TokenInterpreter & io_rInterpreter ) const
+{
+ io_rInterpreter.Process_XmlFormat_EndTag(*this);
+}
+
+const char *
+Tok_XmlFormat_EndTag::Text() const
+{
+ static StreamStr ret(120);
+ ret.seekp(0);
+ ret << "</"
+ << eTag.Text()
+ << ">";
+ return ret.c_str();
+}
+
+
+} // namespace dsapi
+} // namespace csi
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/cx_docu2.hxx b/autodoc/source/parser_i/inc/s2_dsapi/cx_docu2.hxx
new file mode 100644
index 000000000000..b8a08fa987b4
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/cx_docu2.hxx
@@ -0,0 +1,235 @@
+/* -*- 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 DSAPI_CX_DOCU2_HXX
+#define DSAPI_CX_DOCU2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcont2.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <s2_dsapi/tk_xml.hxx>
+
+namespace csi
+{
+namespace dsapi
+{
+
+class Token_Receiver;
+
+
+/**
+@descr
+*/
+
+class Cx_Base : public ::TkpContext
+{
+ public:
+ virtual bool PassNewToken();
+ virtual TkpContext &
+ FollowUpContext();
+ protected:
+ // LIFECYCLE
+ Cx_Base(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : rReceiver(o_rReceiver),
+ pFollowUpContext(&i_rFollowUpContext)
+ // pNewToken
+ { }
+ protected:
+ void SetToken(
+ DYN Token * let_dpToken )
+ { pNewToken = let_dpToken; }
+ void Handle_DocuSyntaxError(
+ CharacterSource & io_rText );
+
+ private:
+ // DATA
+ Token_Receiver & rReceiver;
+ TkpContext * pFollowUpContext;
+ Dyn<Token> pNewToken;
+};
+
+
+class Cx_EoHtml : public Cx_Base
+{
+ public:
+ // LIFECYCLE
+ Cx_EoHtml(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetIfIsStartOfParagraph(
+ bool i_bNextTokenProperty )
+ { bToken_IsStartOfParagraph = i_bNextTokenProperty; }
+
+ private:
+ bool bToken_IsStartOfParagraph;
+};
+
+class Cx_EoXmlConst : public Cx_Base
+{
+ public:
+ // LIFECYCLE
+ Cx_EoXmlConst(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetTokenId(
+ lux::Enum< Tok_XmlConst::E_TokenId >
+ i_eTokenId )
+ { eTokenId = i_eTokenId; }
+ private:
+ Tok_XmlConst::EV_TokenId
+ eTokenId;
+};
+
+class Cx_EoXmlLink_BeginTag : public Cx_Base
+{
+ public:
+ // LIFECYCLE
+ Cx_EoXmlLink_BeginTag(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetTokenId(
+ Tok_XmlLink_BeginTag::EV_TokenId
+ i_eTokenId )
+ { eTokenId = i_eTokenId; }
+ private:
+ Tok_XmlLink_BeginTag::EV_TokenId
+ eTokenId;
+};
+
+class Cx_EoXmlLink_EndTag : public Cx_Base
+{
+ public:
+ // LIFECYCLE
+ Cx_EoXmlLink_EndTag(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetTokenId(
+ Tok_XmlLink_EndTag::EV_TokenId
+ i_eTokenId )
+ { eTokenId = i_eTokenId; }
+ private:
+ Tok_XmlLink_EndTag::E_TokenId
+ eTokenId;
+};
+
+class Cx_EoXmlFormat_BeginTag : public Cx_Base
+{
+ public:
+ // LIFECYCLE
+ Cx_EoXmlFormat_BeginTag(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetTokenId(
+ lux::Enum< Tok_XmlFormat_BeginTag::E_TokenId >
+ i_eTokenId )
+ { eTokenId = i_eTokenId; }
+ private:
+ lux::Enum< Tok_XmlFormat_BeginTag::E_TokenId >
+ eTokenId;
+};
+
+class Cx_EoXmlFormat_EndTag : public Cx_Base
+{
+ public:
+ // LIFECYCLE
+ Cx_EoXmlFormat_EndTag(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetTokenId(
+ lux::Enum< Tok_XmlFormat_EndTag::E_TokenId >
+ i_eTokenId )
+ { eTokenId = i_eTokenId; }
+ private:
+ lux::Enum< Tok_XmlFormat_EndTag::E_TokenId >
+ eTokenId;
+};
+
+class Cx_CheckStar : public Cx_Base
+{
+ public:
+ // LIFECYCLE
+ Cx_CheckStar(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext),
+ bIsEnd(false), bEndTokenFound(false)
+ { }
+ void Set_End_FolloUpContext(
+ TkpContext & i_rEnd_FollowUpContext )
+ { pEnd_FollowUpContext = &i_rEnd_FollowUpContext; }
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ void SetIsEnd(
+ bool i_bIsEnd )
+ { bIsEnd = i_bIsEnd; }
+ virtual TkpContext &
+ FollowUpContext();
+ private:
+ TkpContext * pEnd_FollowUpContext;
+ bool bIsEnd;
+ bool bEndTokenFound;
+};
+
+
+} // namespace dsapi
+} // namespace csi
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/cx_dsapi.hxx b/autodoc/source/parser_i/inc/s2_dsapi/cx_dsapi.hxx
new file mode 100644
index 000000000000..6e229c0af51b
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/cx_dsapi.hxx
@@ -0,0 +1,125 @@
+/* -*- 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 ADC_CX_DSAPI_HXX
+#define ADC_CX_DSAPI_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcont2.hxx>
+ // COMPONENTS
+#include <cosv/tpl/dyn.hxx>
+#include <tokens/tkpstam2.hxx>
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+class Token_Receiver;
+class Token;
+
+class Cx_EoHtml;
+class Cx_EoXmlConst;
+class Cx_EoXmlLink_BeginTag;
+class Cx_EoXmlLink_EndTag;
+class Cx_EoXmlFormat_BeginTag;
+class Cx_EoXmlFormat_EndTag;
+class Cx_CheckStar;
+
+/**
+@descr
+*/
+class Context_Docu : public TkpDocuContext,
+ private StateMachineContext
+{
+ public:
+ // LIFECYCLE
+ Context_Docu(
+ Token_Receiver & o_rReceiver );
+ virtual void SetParentContext(
+ TkpContext & io_rParentContext,
+ const char * i_sMultiLineEndToken );
+
+ ~Context_Docu();
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+
+ virtual bool PassNewToken();
+ virtual void SetMode_IsMultiLine(
+ bool i_bTrue );
+
+ // INQUIRY
+ virtual TkpContext &
+ FollowUpContext();
+ private:
+ // SERVICE FUNCTIONS
+ virtual void PerformStatusFunction(
+ uintt i_nStatusSignal,
+ UINT16 i_nTokenId,
+ CharacterSource & io_rText );
+
+ void SetupStateMachine();
+
+ // DATA
+ StateMachin2 aStateMachine;
+ Token_Receiver * pReceiver;
+
+ // Contexts
+ TkpContext * pParentContext;
+ String sMultiLineEndToken;
+
+ Dyn<Cx_EoHtml> pCx_EoHtml;
+ Dyn<Cx_EoXmlConst> pCx_EoXmlConst;
+ Dyn<Cx_EoXmlLink_BeginTag>
+ pCx_EoXmlLink_BeginTag;
+ Dyn<Cx_EoXmlLink_EndTag>
+ pCx_EoXmlLink_EndTag;
+ Dyn<Cx_EoXmlFormat_BeginTag>
+ pCx_EoXmlFormat_BeginTag;
+ Dyn<Cx_EoXmlFormat_EndTag>
+ pCx_EoXmlFormat_EndTag;
+ Dyn<Cx_CheckStar> pCx_CheckStar;
+
+ // Temporary data, used during ReadCharChain()
+ Dyn<Token> pNewToken;
+ ::TkpContext * pFollowUpContext;
+ bool bIsMultiline;
+};
+
+
+} // namespace dsapi
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/docu_pe2.hxx b/autodoc/source/parser_i/inc/s2_dsapi/docu_pe2.hxx
new file mode 100644
index 000000000000..977f9b65bf9e
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/docu_pe2.hxx
@@ -0,0 +1,176 @@
+/* -*- 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 ADC_DSAPI_DOCU_PE2_HXX
+#define ADC_DSAPI_DOCU_PE2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_dsapi/tokintpr.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+class ParserInfo;
+
+namespace ary
+{
+namespace doc
+{
+ class OldIdlDocu;
+}
+
+namespace inf
+{
+ class DocuToken;
+} // namespace info
+} // namespace ary
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class Token;
+class DT_AtTag;
+
+class SapiDocu_PE : public TokenInterpreter
+{
+ public:
+ SapiDocu_PE(
+ ParserInfo & io_rPositionInfo );
+ ~SapiDocu_PE();
+
+ void ProcessToken(
+ DYN csi::dsapi::Token &
+ let_drToken );
+
+ virtual void Process_AtTag(
+ const Tok_AtTag & i_rToken );
+ virtual void Process_HtmlTag(
+ const Tok_HtmlTag & i_rToken );
+ virtual void Process_XmlConst(
+ const Tok_XmlConst &
+ i_rToken );
+ virtual void Process_XmlLink_BeginTag(
+ const Tok_XmlLink_BeginTag &
+ i_rToken );
+ virtual void Process_XmlLink_EndTag(
+ const Tok_XmlLink_EndTag &
+ i_rToken );
+ virtual void Process_XmlFormat_BeginTag(
+ const Tok_XmlFormat_BeginTag &
+ i_rToken );
+ virtual void Process_XmlFormat_EndTag(
+ const Tok_XmlFormat_EndTag &
+ i_rToken );
+ virtual void Process_Word(
+ const Tok_Word & i_rToken );
+ virtual void Process_Comma();
+ virtual void Process_DocuEnd();
+ virtual void Process_EOL();
+ virtual void Process_White();
+
+
+ DYN ary::doc::OldIdlDocu *
+ ReleaseJustParsedDocu();
+
+ bool IsComplete() const;
+
+ private:
+ enum E_State
+ {
+ e_none = 0,
+ st_short,
+ st_description,
+ st_attags,
+ st_complete
+ };
+
+ typedef void ( SapiDocu_PE::*F_TokenAdder )( DYN ary::inf::DocuToken & let_drNewToken );
+
+ void AddDocuToken2Void(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void AddDocuToken2Short(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void AddDocuToken2Description(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void AddDocuToken2Deprecated(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void AddDocuToken2CurAtTag(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void SetCurParameterAtTagName(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void SetCurSeeAlsoAtTagLinkText(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void SetCurSeeAlsoAtTagLinkText_2(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void SetCurSeeAlsoAtTagLinkText_3(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void SetCurSinceAtTagVersion(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+ void AddDocuToken2SinceAtTag(
+ DYN ary::inf::DocuToken &
+ let_drNewToken );
+
+ // DATA
+ Dyn<ary::doc::OldIdlDocu>
+ pDocu;
+ E_State eState;
+ ParserInfo * pPositionInfo;
+ F_TokenAdder fCurTokenAddFunction;
+
+ Dyn<DT_AtTag> pCurAtTag;
+ String sCurDimAttribute;
+ StreamStr sCurAtSeeType_byXML;
+};
+
+} // namespace dsapi
+} // namespace csi
+
+
+// IMPLEMENTATION
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/dsapitok.hxx b/autodoc/source/parser_i/inc/s2_dsapi/dsapitok.hxx
new file mode 100644
index 000000000000..9ccccee02ef8
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/dsapitok.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 DSAPI_DSAPITOK_HXX
+#define DSAPI_DSAPITOK_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/token2.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class TokenInterpreter;
+
+
+class Token : public TextToken
+{
+ public:
+ // LIFECYCLE
+ virtual ~Token() {}
+
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const = 0;
+};
+
+
+} // namespace dsapi
+} // namespace csi
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/tk_atag2.hxx b/autodoc/source/parser_i/inc/s2_dsapi/tk_atag2.hxx
new file mode 100644
index 000000000000..57bf561ffdce
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/tk_atag2.hxx
@@ -0,0 +1,90 @@
+/* -*- 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 DSAPI_TK_ATAG2_HXX
+#define DSAPI_TK_ATAG2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_dsapi/dsapitok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <luxenum.hxx>
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class Tok_AtTag : public Token
+{
+ public:
+ // TYPE
+ enum E_TokenId
+ {
+ e_none = 0,
+ author = 1,
+ see = 2,
+ param = 3,
+ e_return = 4,
+ e_throw = 5,
+ example = 6,
+ deprecated = 7,
+ suspicious = 8,
+ missing = 9,
+ incomplete = 10,
+ version = 11,
+ guarantees = 12,
+ exception = 13,
+ since = 14
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+ // Spring and Fall
+ Tok_AtTag(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ EV_TokenId eTag;
+};
+
+} // namespace dsapi
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/tk_docw2.hxx b/autodoc/source/parser_i/inc/s2_dsapi/tk_docw2.hxx
new file mode 100644
index 000000000000..5ee763969ad6
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/tk_docw2.hxx
@@ -0,0 +1,123 @@
+/* -*- 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 DSAPI_TK_DOCW2_HXX
+#define DSAPI_TK_DOCW2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_dsapi/dsapitok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class Tok_Word : public Token
+{
+ public:
+ // Spring and Fall
+ Tok_Word(
+ const char * i_sText )
+ : sText(i_sText) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+
+ private:
+ // DATA
+ String sText;
+};
+
+class Tok_Comma : public Token
+{
+ public:
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+};
+
+class Tok_DocuEnd : public Token
+{
+ public:
+ // Spring and Fall
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+};
+
+class Tok_EOL : public Token
+{
+ public:
+ // Spring and Fall
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+};
+
+class Tok_EOF : public Token
+{
+ public:
+ // Spring and Fall
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+};
+
+class Tok_White : public Token
+{
+ public:
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+};
+
+
+
+} // namespace dsapi
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/tk_html.hxx b/autodoc/source/parser_i/inc/s2_dsapi/tk_html.hxx
new file mode 100644
index 000000000000..3d69c13d296c
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/tk_html.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 DSAPI_TK_HTML_HXX
+#define DSAPI_TK_HTML_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_dsapi/dsapitok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class Tok_HtmlTag : public Token
+{
+ public:
+ // Spring and Fall
+ Tok_HtmlTag(
+ const char * i_sTag,
+ bool i_bIsParagraphStarter )
+ : sTag(i_sTag),
+ bIsParagraphStarter(i_bIsParagraphStarter)
+ {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ bool IsParagraphStarter() const
+ { return bIsParagraphStarter; }
+
+ private:
+ String sTag;
+ bool bIsParagraphStarter;
+};
+
+
+} // namespace dsapi
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/tk_xml.hxx b/autodoc/source/parser_i/inc/s2_dsapi/tk_xml.hxx
new file mode 100644
index 000000000000..7bb8db52a27f
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/tk_xml.hxx
@@ -0,0 +1,203 @@
+/* -*- 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 DSAPI_TK_XML_HXX
+#define DSAPI_TK_XML_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_dsapi/dsapitok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <luxenum.hxx>
+
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class Tok_XmlTag : public Token
+{
+ public:
+};
+
+class Tok_XmlConst : public Tok_XmlTag
+{
+ public:
+ // TYPE
+ enum E_TokenId
+ {
+ e_none = 0,
+ e_true = 1,
+ e_false = 2,
+ e_null = 3,
+ e_void = 4
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+ // Spring and Fall
+ Tok_XmlConst(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+class Tok_XmlLink_Tag : public Tok_XmlTag
+{
+ public:
+ // TYPE
+ enum E_TokenId
+ {
+ e_none = 0,
+ e_const = 1,
+ member = 2,
+ type = 3
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+};
+
+class Tok_XmlLink_BeginTag : public Tok_XmlLink_Tag
+{
+ public:
+ // Spring and Fall
+ Tok_XmlLink_BeginTag(
+ EV_TokenId i_eTag,
+ const String & i_sScope,
+ const String & i_sDim )
+ : eTag(i_eTag),
+ sScope(i_sScope),
+ sDim(i_sDim) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ E_TokenId Id() const { return eTag; }
+ const String & Scope() const { return sScope; }
+ const String & Dim() const { return sDim; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+ String sScope;
+ String sDim;
+};
+
+class Tok_XmlLink_EndTag : public Tok_XmlLink_Tag
+{
+ public:
+ // Spring and Fall
+ Tok_XmlLink_EndTag(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+class Tok_XmlFormat_Tag : public Tok_XmlTag
+{
+ public:
+ // TYPE
+ enum E_TokenId
+ {
+ e_none = 0,
+ code = 1,
+ listing = 2,
+ atom = 3
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+};
+
+class Tok_XmlFormat_BeginTag : public Tok_XmlFormat_Tag
+{
+ public:
+ // Spring and Fall
+ Tok_XmlFormat_BeginTag(
+ EV_TokenId i_eTag,
+ const String & i_sDim )
+ : eTag(i_eTag),
+ sDim(i_sDim) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ E_TokenId Id() const { return eTag; }
+ const String & Dim() const { return sDim; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+ String sDim;
+};
+
+class Tok_XmlFormat_EndTag : public Tok_XmlFormat_Tag
+{
+ public:
+ // Spring and Fall
+ Tok_XmlFormat_EndTag(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char* Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+
+} // namespace dsapi
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/tokintpr.hxx b/autodoc/source/parser_i/inc/s2_dsapi/tokintpr.hxx
new file mode 100644
index 000000000000..fed4c0e25121
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/tokintpr.hxx
@@ -0,0 +1,96 @@
+/* -*- 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 ADC_DSAPI_TOKINTPR_HXX
+#define ADC_DSAPI_TOKINTPR_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class Tok_AtTag;
+class Tok_XmlConst;
+class Tok_XmlLink_BeginTag;
+class Tok_XmlLink_EndTag;
+class Tok_XmlFormat_BeginTag;
+class Tok_XmlFormat_EndTag;
+class Tok_Word;
+class Tok_HtmlTag;
+
+class TokenInterpreter
+{
+ public:
+ virtual ~TokenInterpreter() {}
+
+ virtual void Process_AtTag(
+ const Tok_AtTag & i_rToken ) = 0;
+ virtual void Process_HtmlTag(
+ const Tok_HtmlTag & i_rToken ) = 0;
+ virtual void Process_XmlConst(
+ const Tok_XmlConst &
+ i_rToken ) = 0;
+ virtual void Process_XmlLink_BeginTag(
+ const Tok_XmlLink_BeginTag &
+ i_rToken ) = 0;
+ virtual void Process_XmlLink_EndTag(
+ const Tok_XmlLink_EndTag &
+ i_rToken ) = 0;
+ virtual void Process_XmlFormat_BeginTag(
+ const Tok_XmlFormat_BeginTag &
+ i_rToken ) = 0;
+ virtual void Process_XmlFormat_EndTag(
+ const Tok_XmlFormat_EndTag &
+ i_rToken ) = 0;
+ virtual void Process_Word(
+ const Tok_Word & i_rToken ) = 0;
+ virtual void Process_Comma() = 0;
+ virtual void Process_DocuEnd() = 0;
+ virtual void Process_EOL() = 0;
+ virtual void Process_White() = 0;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace dsapi
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_dsapi/tokrecv.hxx b/autodoc/source/parser_i/inc/s2_dsapi/tokrecv.hxx
new file mode 100644
index 000000000000..14ef872d4306
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_dsapi/tokrecv.hxx
@@ -0,0 +1,62 @@
+/* -*- 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 DSAPI_TOKRECV_HXX
+#define DSAPI_TOKRECV_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace dsapi
+{
+
+
+class Token;
+/**
+@descr
+*/
+class Token_Receiver
+{
+ public:
+ virtual ~Token_Receiver() {}
+ virtual void Receive(
+ DYN Token & let_drToken ) = 0;
+ virtual void Increment_CurLine() = 0;
+};
+
+
+} // namespace dsapi
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/cx_idlco.hxx b/autodoc/source/parser_i/inc/s2_luidl/cx_idlco.hxx
new file mode 100644
index 000000000000..07d325846238
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/cx_idlco.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 LUIDL_CX_IDLCO_HXX
+#define LUIDL_CX_IDLCO_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcont2.hxx>
+ // COMPONENTS
+#include <tokens/tkpstam2.hxx>
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class Token_Receiver;
+class Token;
+
+/**
+*/
+class Context_UidlCode : public TkpContext,
+ private StateMachineContext
+{
+ public:
+ // LIFECYCLE
+ Context_UidlCode(
+ Token_Receiver & o_rReceiver,
+ DYN TkpDocuContext &
+ let_drContext_Docu );
+ ~Context_UidlCode();
+ // OPERATORS
+
+ // OPERATIONS
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual bool PassNewToken();
+
+ // INQUIRY
+ virtual TkpContext &
+ FollowUpContext();
+ private:
+ // SERVICE FUNCTIONS
+ void PerformStatusFunction(
+ uintt i_nStatusSignal,
+ UINT16 i_nTokenId,
+ CharacterSource & io_rText );
+ void SetupStateMachine();
+
+ // DATA
+ StateMachin2 aStateMachine;
+ Token_Receiver * pReceiver;
+
+ // Contexts
+ Dyn<TkpDocuContext> pDocuContext;
+
+ Dyn<TkpContext> dpContext_MLComment;
+ Dyn<TkpContext> dpContext_SLComment;
+ Dyn<TkpContext> dpContext_Preprocessor;
+ Dyn<TkpContext> dpContext_Assignment;
+
+ // Temporary data, used during ReadCharChain()
+ Dyn<Token> pNewToken;
+ ::TkpContext * pFollowUpContext;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/cx_sub.hxx b/autodoc/source/parser_i/inc/s2_luidl/cx_sub.hxx
new file mode 100644
index 000000000000..0113a87c11e7
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/cx_sub.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 ADC_LUIDL_CX_SUB_HXX
+#define ADC_LUIDL_CX_SUB_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcont2.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+#include "uidl_tok.hxx"
+
+namespace csi
+{
+namespace uidl
+{
+
+class Token_Receiver;
+class Token;
+
+
+class Cx_Base : public ::TkpContext
+{
+ public:
+ virtual bool PassNewToken();
+ virtual TkpContext &
+ FollowUpContext();
+ protected:
+ // LIFECYCLE
+ Cx_Base(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : rReceiver(o_rReceiver),
+ pFollowUpContext(&i_rFollowUpContext),
+ pNewToken()
+ {}
+ protected:
+ void SetToken(
+ DYN Token * let_dpToken )
+ { pNewToken = let_dpToken; }
+ Token_Receiver & Receiver() { return rReceiver; }
+
+ private:
+ // DATA
+ Token_Receiver & rReceiver;
+ TkpContext * pFollowUpContext;
+ Dyn<Token> pNewToken;
+};
+
+
+
+/**
+@descr
+*/
+
+class Context_MLComment : public Cx_Base
+{
+ public:
+ Context_MLComment(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+class Context_SLComment : public Cx_Base
+{
+ public:
+ Context_SLComment(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+class Context_Praeprocessor : public Cx_Base
+{
+ public:
+ Context_Praeprocessor(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+class Context_Assignment : public Cx_Base
+{
+ public:
+ Context_Assignment(
+ Token_Receiver & o_rReceiver,
+ TkpContext & i_rFollowUpContext )
+ : Cx_Base(o_rReceiver, i_rFollowUpContext) {}
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/distrib.hxx b/autodoc/source/parser_i/inc/s2_luidl/distrib.hxx
new file mode 100644
index 000000000000..411fc402eb42
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/distrib.hxx
@@ -0,0 +1,274 @@
+/* -*- 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 LUIDL_DISTRIB_HXX
+#define LUIDL_DISTRIB_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/tokrecv.hxx>
+#include <s2_dsapi/tokrecv.hxx>
+#include <s2_luidl/tokproct.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+class ParserInfo;
+
+namespace ary
+{
+ class Repository;
+
+namespace doc
+{
+ class OldIdlDocu;
+} // namespace inf
+} // namespace ary)
+
+
+
+namespace csi
+{
+namespace dsapi
+{
+ class Token_Receiver;
+ class SapiDocu_PE;
+}
+
+
+
+namespace uidl
+{
+
+
+typedef std::vector< DYN Token * > TokenQueue;
+typedef TokenQueue::iterator TokenIterator;
+
+class TokenParser_Uidl;
+class UnoIDL_PE;
+class Token;
+
+
+class TokenDistributor : private TokenProcessing_Types
+
+{
+ public:
+ TokenDistributor(
+ ary::Repository & io_rRepository,
+ ParserInfo & io_rParserInfo );
+ void SetTokenProvider(
+ TokenParser_Uidl & io_rTokenSource );
+ void SetTopParseEnvironment(
+ UnoIDL_PE & io_pTopParseEnvironment );
+ ~TokenDistributor();
+
+
+ void Reset() { aDocumentation.Reset(); }
+ /** calls pTokenSource->GetNextToken() and checks the incoming tokens, until a
+ usable token is found. This token will be forwarded to
+ pTopParseEnv;
+ */
+ void TradeToken();
+
+ csi::uidl::Token_Receiver &
+ CodeTokens_Receiver();
+ csi::dsapi::Token_Receiver &
+ DocuTokens_Receiver();
+
+ /** Used from PE_File, if there is a docu to get without
+ an environment to push (this is the case for modules).
+ */
+ DYN ary::doc::OldIdlDocu *
+ ReleaseLastParsedDocu()
+ { return aDocumentation.ReleaseLastParsedDocu(); }
+
+ /** Used from PE_File, if the term "published" was parsed.
+ The next opened parse environment will be set to be published
+ (call ->UnoIDL_PE::SetPublished()).
+ */
+ void Set_PublishedOn()
+ { aProcessingData.Set_PublishedOn(); }
+
+
+ private:
+ class Documentation;
+ class ProcessingData;
+ friend class ProcessingData;
+
+ class ProcessingData : public csi::uidl::Token_Receiver,
+ private TokenProcessing_Types
+ {
+ public:
+ ProcessingData(
+ ary::Repository & io_rRepository,
+ Documentation & i_rDocuProcessor,
+ ParserInfo & io_rParserInfo );
+ ~ProcessingData();
+ void SetTopParseEnvironment(
+ UnoIDL_PE & io_pTopParseEnvironment );
+
+
+ /** is called from pTokenSource before finishing a ::TokenParse2::GetNextToken()
+ call and passes the just parsed token to this class.
+ */
+ virtual void Receive(
+ DYN csi::uidl::Token &
+ let_drToken );
+ virtual void Increment_CurLine();
+
+ void ProcessCurToken();
+
+ UnoIDL_PE & CurEnvironment() const;
+ bool NextTokenExists() const;
+ void Set_PublishedOn()
+ { bPublishedRecentlyOn = true; }
+
+ private:
+ typedef uintt TokenQ_Position;
+ typedef std::pair< UnoIDL_PE *, TokenQ_Position > EnvironmentInfo;
+ typedef std::vector< EnvironmentInfo > EnvironmentStack;
+
+ void AcknowledgeResult();
+ const csi::uidl::Token &
+ CurToken() const;
+ UnoIDL_PE & CurEnv() const;
+ UnoIDL_PE & PushEnv() const;
+ uintt CurTokenPosition() const;
+ uintt CurEnv_TriedTokenPosition() const;
+ void DecrementTryCount();
+
+ EnvironmentStack aEnvironments;
+ TokenQueue aTokenQueue;
+ TokenIterator itCurToken;
+ TokenProcessing_Result
+ aCurResult;
+ uintt nTryCount;
+ bool bFinished;
+ ary::Repository &
+ rRepository;
+ ParserInfo & rParserInfo;
+ Documentation * pDocuProcessor;
+ bool bPublishedRecentlyOn;
+ };
+
+ class Documentation : public csi::dsapi::Token_Receiver
+ {
+ public:
+ Documentation(
+ ParserInfo & io_rParserInfo);
+ ~Documentation();
+
+ void Reset() { bIsPassedFirstDocu = false; }
+
+ virtual void Receive(
+ DYN csi::dsapi::Token &
+ let_drToken );
+ virtual void Increment_CurLine();
+ DYN ary::doc::OldIdlDocu *
+ ReleaseLastParsedDocu()
+ { return pMostRecentDocu.Release(); }
+ private:
+ Dyn<csi::dsapi::SapiDocu_PE>
+ pDocuParseEnv;
+ ParserInfo & rParserInfo;
+ Dyn<ary::doc::OldIdlDocu>
+ pMostRecentDocu;
+ bool bIsPassedFirstDocu;
+ };
+
+ // DATA
+ TokenParser_Uidl * pTokenSource;
+ Documentation aDocumentation;
+ ProcessingData aProcessingData;
+};
+
+
+
+// IMPLEMENTATION
+
+inline void
+TokenDistributor::SetTokenProvider( TokenParser_Uidl & io_rTokenSource )
+ { pTokenSource = &io_rTokenSource; }
+
+inline void
+TokenDistributor::SetTopParseEnvironment( UnoIDL_PE & io_pTopParseEnvironment )
+ { aProcessingData.SetTopParseEnvironment(io_pTopParseEnvironment); }
+
+inline csi::uidl::Token_Receiver &
+TokenDistributor::CodeTokens_Receiver()
+ { return aProcessingData; }
+
+inline csi::dsapi::Token_Receiver &
+TokenDistributor::DocuTokens_Receiver()
+ { return aDocumentation; }
+
+inline const csi::uidl::Token &
+TokenDistributor::ProcessingData::CurToken() const
+{
+ csv_assert( itCurToken != aTokenQueue.end() );
+ csv_assert( *itCurToken != 0 );
+ return *(*itCurToken);
+}
+
+inline UnoIDL_PE &
+TokenDistributor::ProcessingData::CurEnv() const
+{
+ csv_assert( aEnvironments.size() > 0 );
+ csv_assert( aEnvironments.back().first != 0 );
+ return *aEnvironments.back().first;
+}
+
+inline UnoIDL_PE &
+TokenDistributor::ProcessingData::PushEnv() const
+{
+ csv_assert( aCurResult.pEnv2Push != 0 );
+ return *aCurResult.pEnv2Push;
+}
+
+inline uintt
+TokenDistributor::ProcessingData::CurTokenPosition() const
+{
+ return itCurToken - aTokenQueue.begin();
+}
+
+inline uintt
+TokenDistributor::ProcessingData::CurEnv_TriedTokenPosition() const
+{
+ csv_assert( aEnvironments.size() > 0 );
+ return aEnvironments.back().second;
+}
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/parsenv2.hxx b/autodoc/source/parser_i/inc/s2_luidl/parsenv2.hxx
new file mode 100644
index 000000000000..7708ac66775e
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/parsenv2.hxx
@@ -0,0 +1,145 @@
+/* -*- 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 LUIDL_PARSENV2_HXX
+#define LUIDL_PARSENV2_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/tokproct.hxx>
+ // COMPONENTS
+#include <s2_luidl/semnode.hxx>
+ // PARAMETERS
+#include <ary/idl/i_types4idl.hxx>
+#include <ary/idl/i_module.hxx>
+
+
+
+class ParserInfo;
+
+namespace ary
+{
+ class QualifiedName;
+ class Repository;
+
+namespace doc
+{
+ class OldIdlDocu;
+}
+
+namespace idl
+{
+ class CodeEntity;
+}
+}
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class Token;
+class SemanticNode;
+
+
+class UnoIDL_PE : virtual protected TokenProcessing_Types
+{
+ public:
+ virtual ~UnoIDL_PE();
+
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository &
+ io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+// virtual void EstablishContacts(
+// UnoIDL_PE * io_pParentPE,
+// ary::idl::Gate &
+// io_rGate,
+// TokenProcessing_Result &
+// o_rResult );
+ virtual void Enter(
+ E_EnvStackAction i_eWayOfEntering );
+ virtual void Leave(
+ E_EnvStackAction i_eWayOfLeaving );
+ virtual void ProcessToken(
+ const Token & i_rToken ) = 0;
+
+ void SetDocu(
+ DYN ary::doc::OldIdlDocu *
+ let_dpDocu );
+ void SetPublished();
+ void SetOptional();
+ void PassDocuAt(
+ ary::idl::CodeEntity &
+ io_rCe );
+
+ UnoIDL_PE * Parent() const { return aMyNode.Parent(); }
+
+ void SetResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ UnoIDL_PE * i_pParseEnv2Push = 0 )
+ { aMyNode.SetTokenResult( i_eDone, i_eWhat2DoWithEnvStack, i_pParseEnv2Push ); }
+ virtual const ary::idl::Module &
+ CurNamespace() const;
+ virtual const ParserInfo &
+ ParseInfo() const;
+ ary::idl::Gate & Gate() const { return aMyNode.AryGate(); }
+ TokenProcessing_Result &
+ TokenResult() const { return aMyNode.TokenResult(); }
+ DYN ary::doc::OldIdlDocu *
+ ReleaseDocu() { return pDocu.Release(); }
+ protected:
+ UnoIDL_PE();
+ ary::Repository & MyRepository() { csv_assert(pRepository != 0);
+ return *pRepository; }
+ private:
+ virtual void InitData();
+ virtual void TransferData() = 0;
+ virtual void ReceiveData();
+
+ SemanticNode aMyNode;
+ Dyn<ary::doc::OldIdlDocu>
+ pDocu;
+ ary::Repository * pRepository;
+};
+
+
+
+
+} // namespace uidl
+} // namespace csi
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_attri.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_attri.hxx
new file mode 100644
index 000000000000..222fcdf43b7a
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_attri.hxx
@@ -0,0 +1,137 @@
+/* -*- 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 ADC_UIDL_PE_ATTRI_HXX
+#define ADC_UIDL_PE_ATTRI_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+#include <ary/idl/i_property.hxx>
+ // PARAMETERS
+#include <ary/idl/i_gate.hxx>
+
+
+namespace ary
+{
+ namespace idl
+ {
+ class Attribute;
+ }
+}
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class PE_Variable;
+class PE_Type;
+
+class PE_Attribute : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ typedef ary::idl::Ce_id Ce_id;
+ typedef ary::idl::Type_id Type_id;
+
+ PE_Attribute(
+ const Ce_id & i_rCurOwner );
+
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository &
+ io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ virtual ~PE_Attribute();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_Raises();
+ virtual void Process_Default();
+
+ private:
+ enum E_State
+ {
+ e_none,
+ e_start,
+ in_variable,
+ expect_end,
+ in_raise_std, /// before 'get', 'set', ';' or '}'
+ in_get,
+ in_set
+ };
+
+ virtual void InitData();
+ virtual void ReceiveData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ E_State eState;
+ const Ce_id * pCurOwner;
+
+ Dyn<PE_Variable> pPE_Variable;
+ Dyn<PE_Type> pPE_Exception;
+
+ // object-data
+ ary::idl::Attribute *
+ pCurAttribute;
+ Type_id nCurParsedType;
+ String sCurParsedName;
+ bool bReadOnly;
+ bool bBound;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_const.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_const.hxx
new file mode 100644
index 000000000000..397a235e4748
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_const.hxx
@@ -0,0 +1,147 @@
+/* -*- 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 LUIDL_PE_CONST_HXX
+#define LUIDL_PE_CONST_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace udm {
+class Agent_Struct;
+} // namespace udm
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class ConstantsGroup;
+
+class PE_Type;
+class PE_Value;
+
+class PE_Constant : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Constant();
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository &
+ io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_Constant();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+
+ private:
+ enum E_State
+ {
+ e_none,
+ expect_name,
+ expect_curl_bracket_open,
+ expect_const,
+ expect_value,
+ expect_finish,
+ e_STATES_MAX
+ };
+ enum E_TokenType
+ {
+ tt_stereotype,
+ tt_identifier,
+ tt_punctuation,
+ tt_MAX
+ };
+ typedef void (PE_Constant::*F_TOK)(const char *);
+
+
+ void CallHandler(
+ const char * i_sTokenText,
+ E_TokenType i_eTokenType );
+
+ void On_expect_name_Identifier(const char * i_sText);
+ void On_expect_curl_bracket_open_Punctuation(const char * i_sText);
+ void On_expect_const_Stereotype(const char * i_sText);
+ void On_expect_const_Punctuation(const char * i_sText);
+ void On_expect_value_Identifier(const char * i_sText);
+ void On_expect_finish_Punctuation(const char * i_sText);
+ void On_Default(const char * );
+
+ void EmptySingleConstData();
+ void CreateSingleConstant();
+
+ virtual void InitData();
+ virtual void ReceiveData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ static F_TOK aDispatcher[e_STATES_MAX][tt_MAX];
+
+ E_State eState;
+
+ String sData_Name;
+ ary::idl::Ce_id nDataId;
+
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nType;
+
+ Dyn<PE_Value> pPE_Value;
+ String sName;
+ String sAssignment;
+};
+
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_enum2.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_enum2.hxx
new file mode 100644
index 000000000000..2fef65658d9b
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_enum2.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 ADC_UIDL_PE_ENUM2_HXX
+#define ADC_UIDL_PE_ENUM2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+// class Enum;
+
+class PE_Value;
+
+class PE_Enum : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Enum();
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_Enum();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+
+ private:
+ enum E_State
+ {
+ e_none,
+ expect_name,
+ expect_curl_bracket_open,
+ expect_value,
+ expect_finish,
+ e_STATES_MAX
+ };
+ enum E_TokenType
+ {
+ tt_identifier,
+ tt_punctuation,
+ tt_MAX
+ };
+ typedef void (PE_Enum::*F_TOK)(const char *);
+
+
+ void CallHandler(
+ const char * i_sTokenText,
+ E_TokenType i_eTokenType );
+
+ void On_expect_name_Identifier(const char * i_sText);
+ void On_expect_curl_bracket_open_Punctuation(const char * i_sText);
+ void On_expect_value_Punctuation(const char * i_sText);
+ void On_expect_value_Identifier(const char * i_sText);
+ void On_expect_finish_Punctuation(const char * i_sText);
+ void On_Default(const char * );
+
+ void EmptySingleValueData();
+ void CreateSingleValue();
+
+ virtual void InitData();
+ virtual void ReceiveData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ static F_TOK aDispatcher[e_STATES_MAX][tt_MAX];
+
+ E_State eState;
+
+ String sData_Name;
+ ary::idl::Ce_id nDataId;
+
+ Dyn<PE_Value> pPE_Value;
+ String sName;
+ String sAssignment;
+};
+
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_evalu.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_evalu.hxx
new file mode 100644
index 000000000000..13bb996e6380
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_evalu.hxx
@@ -0,0 +1,129 @@
+/* -*- 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 LUIDL_PE_EVALU_HXX
+#define LUIDL_PE_EVALU_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace udm {
+class Agent_Struct;
+} // namespace udm
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class PE_Value : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Value(
+ String & o_rName,
+ String & o_rAssignment,
+ bool i_bIsConst );
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository &
+ io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_Value();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_Assignment(
+ const TokAssignment &
+ i_rToken );
+ private:
+ enum E_State
+ {
+ e_none = 0,
+ expect_name,
+ got_name,
+ e_STATES_MAX
+ };
+ enum E_TokenType /// @ATTENTION Do not change existing values (except of tt_MAX) !!! Else array-indices will break.
+ {
+ tt_identifier = 0,
+ tt_punctuation = 1,
+ tt_assignment = 2,
+ tt_MAX
+ };
+ typedef void (PE_Value::*F_TOK)(const char *);
+
+
+ void CallHandler(
+ const char * i_sTokenText,
+ E_TokenType i_eTokenType );
+
+ void On_expect_name_Identifier(const char * i_sText);
+ void On_got_name_Punctuation(const char * i_sText);
+ void On_got_name_Assignment(const char * i_sText);
+ void On_Default(const char * );
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ bool IsConst() const { return bIsConst; }
+
+ static F_TOK aDispatcher[e_STATES_MAX][tt_MAX];
+
+ E_State eState;
+ String * pName;
+ String * pAssignment;
+ bool bIsConst;
+};
+
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_excp.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_excp.hxx
new file mode 100644
index 000000000000..4d6a9bd96872
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_excp.hxx
@@ -0,0 +1,261 @@
+/* -*- 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 LUIDL_PE_EXCP_HXX
+#define LUIDL_PE_EXCP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+#include <s2_luidl/semnode.hxx>
+#include <ary/qualiname.hxx>
+ // PARAMETERS
+
+
+
+namespace csi
+{
+namespace prl
+{
+ class TNamespace;
+}
+}
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class Exception;
+class StructElement;
+class PE_StructElement;
+class PE_Type;
+
+
+class PE_Exception : public UnoIDL_PE
+{
+ public:
+ PE_Exception();
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_Exception();
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ private:
+ struct S_Work
+ {
+ S_Work();
+
+ void InitData();
+ void Prepare_PE_QualifiedName();
+ void Prepare_PE_Element();
+ void Data_Set_Name(
+ const char * i_sName );
+ // DATA
+ String sData_Name;
+ bool bIsPreDeclaration;
+ ary::idl::Ce_id nCurStruct;
+
+ Dyn<PE_StructElement>
+ pPE_Element;
+ ary::idl::Ce_id nCurParsed_ElementRef;
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nCurParsed_Base;
+ };
+
+ struct S_Stati;
+ class PE_StructState;
+ friend struct S_Stati;
+ friend class PE_StructState;
+
+
+ class PE_StructState : public ParseEnvState
+ {
+ public:
+
+ protected:
+ PE_StructState(
+ PE_Exception & i_rStruct )
+ : rStruct(i_rStruct) {}
+ void MoveState(
+ ParseEnvState & i_rState ) const;
+ void SetResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ UnoIDL_PE * i_pParseEnv2Push = 0 ) const
+ { rStruct.SetResult(i_eDone, i_eWhat2DoWithEnvStack, i_pParseEnv2Push); }
+
+ S_Stati & Stati() const { return *rStruct.pStati; }
+ S_Work & Work() const { return rStruct.aWork; }
+ PE_Exception & PE() const { return rStruct; }
+
+ private:
+ virtual UnoIDL_PE & MyPE();
+ // DATA
+ PE_Exception & rStruct;
+ };
+
+ class State_None : public PE_StructState
+ {
+ public:
+ State_None(
+ PE_Exception & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ };
+ class State_WaitForName : public PE_StructState
+ { // -> Name
+ public:
+ State_WaitForName(
+ PE_Exception & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ };
+ class State_GotName : public PE_StructState
+ { // -> : { ;
+ public:
+ State_GotName(
+ PE_Exception & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+ class State_WaitForBase : public PE_StructState
+ { // -> Base
+ public:
+ State_WaitForBase(
+ PE_Exception & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void On_SubPE_Left();
+ };
+ class State_GotBase : public PE_StructState
+ { // -> {
+ public:
+ State_GotBase(
+ PE_Exception & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+ class State_WaitForElement : public PE_StructState
+ { // -> Typ }
+ public:
+ State_WaitForElement(
+ PE_Exception & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_NameSeparator();
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken );
+ virtual void Process_TypeModifier(
+ const TokTypeModifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+// virtual void On_SubPE_Left();
+ };
+ class State_WaitForFinish : public PE_StructState
+ { // -> ;
+ public:
+ State_WaitForFinish(
+ PE_Exception & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+
+ struct S_Stati
+ {
+ S_Stati(
+ PE_Exception & io_rStruct );
+ void SetState(
+ ParseEnvState & i_rNextState )
+ { pCurStatus = &i_rNextState; }
+
+ State_None aNone;
+ State_WaitForName aWaitForName;
+ State_GotName aGotName;
+ State_WaitForBase aWaitForBase;
+ State_GotBase aGotBase;
+ State_WaitForElement
+ aWaitForElement;
+ State_WaitForFinish aWaitForFinish;
+
+ ParseEnvState * pCurStatus;
+ };
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual void ReceiveData();
+
+ public:
+
+ void store_Exception();
+
+ private:
+
+ S_Stati & Stati() { return *pStati; }
+ S_Work & Work() { return aWork; }
+
+ // DATA
+ S_Work aWork;
+ Dyn<S_Stati> pStati;
+};
+
+
+inline void
+PE_Exception::PE_StructState::MoveState(
+ ParseEnvState & i_rState ) const
+ { rStruct.Stati().SetState(i_rState); }
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_file2.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_file2.hxx
new file mode 100644
index 000000000000..e499565e466a
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_file2.hxx
@@ -0,0 +1,142 @@
+/* -*- 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 LUIDL_PE_FILE2_HXX
+#define LUIDL_PE_FILE2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace ary
+{
+namespace idl
+{
+class Module;
+} // namespace idl
+} // namespace ary
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class TokenDistributor;
+class PE_Service;
+class PE_Singleton;
+class PE_Interface;
+class PE_Struct;
+class PE_Exception;
+class PE_Constant;
+class PE_Enum;
+class PE_Typedef;
+
+
+class PE_File : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_File(
+ TokenDistributor & i_rTokenAdmin,
+ const ParserInfo & i_parseInfo );
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_File();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken );
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+ virtual void Process_Default();
+
+ private:
+ enum E_State
+ {
+ e_none,
+ e_std,
+ wait_for_module,
+ wait_for_module_bracket,
+ wait_for_module_semicolon,
+ in_sub_pe,
+ on_default
+ };
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual void ReceiveData();
+ virtual UnoIDL_PE & MyPE();
+ virtual const ary::idl::Module &
+ CurNamespace() const;
+ virtual const ParserInfo &
+ ParseInfo() const;
+ // DATA
+ TokenDistributor * pTokenAdmin;
+ Dyn<PE_Service> pPE_Service;
+ Dyn<PE_Singleton> pPE_Singleton;
+ Dyn<PE_Interface> pPE_Interface;
+ Dyn<PE_Struct> pPE_Struct;
+ Dyn<PE_Exception> pPE_Exception;
+ Dyn<PE_Constant> pPE_Constant;
+ Dyn<PE_Enum> pPE_Enum;
+ Dyn<PE_Typedef> pPE_Typedef;
+
+ const ary::idl::Module *
+ pCurNamespace;
+ const ParserInfo * pParseInfo;
+
+ E_State eState;
+ uintt nBracketCount_inDefMode;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_func2.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_func2.hxx
new file mode 100644
index 000000000000..3d639c2f8b6a
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_func2.hxx
@@ -0,0 +1,169 @@
+/* -*- 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 ADC_UIDL_PE_FUNC2_HXX
+#define ADC_UIDL_PE_FUNC2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+// #include <ary/idl/i_gate.hxx>
+// #include <ary/idl/ip_ce.hxx>
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+#include <ary/idl/i_param.hxx>
+ // PARAMETERS
+
+namespace ary
+{
+ namespace idl
+ {
+ class Function;
+ }
+}
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class PE_Type;
+class PE_Variable;
+
+class PE_Function : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ typedef ary::idl::Ce_id RParent;
+ typedef ary::idl::Ce_id RFunction;
+
+ enum E_Constructor { constructor };
+
+ /// Constructor for interfaces.
+ PE_Function(
+ const RParent & i_rCurInterface );
+
+ /// Constructor for single interface based services.
+ PE_Function(
+ const RParent & i_rCurService,
+ E_Constructor i_eCtorMarker );
+
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ virtual ~PE_Function();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken );
+ virtual void Process_ParameterHandling(
+ const TokParameterHandling &
+ i_rToken );
+ virtual void Process_Raises();
+ virtual void Process_Default();
+
+ private:
+ enum E_State
+ {
+ e_none,
+ e_start,
+ in_return_type,
+ expect_name,
+ expect_params_list,
+ expect_parameter,
+ expect_parameter_variable,
+ in_parameter_variable,
+ expect_parameter_separator,
+ params_finished,
+ expect_exceptions_list,
+ expect_exception,
+ in_exception,
+ expect_exception_separator,
+ exceptions_finished
+ };
+
+ void GoIntoReturnType();
+ void GoIntoParameterVariable();
+ void GoIntoException();
+ void OnDefault();
+
+ virtual void InitData();
+ virtual void ReceiveData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ E_State eState;
+
+ String sData_Name;
+ ary::idl::Type_id nData_ReturnType;
+ bool bData_Oneway;
+ ary::idl::Function *
+ pCurFunction;
+
+ const RParent * pCurParent;
+
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nCurParsedType; // ReturnType or Exception
+
+ String sName;
+
+ Dyn<PE_Variable> pPE_Variable;
+ ary::idl::E_ParameterDirection
+ eCurParsedParam_Direction;
+ ary::idl::Type_id nCurParsedParam_Type;
+ String sCurParsedParam_Name;
+ bool bIsForConstructors;
+};
+
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_iface.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_iface.hxx
new file mode 100644
index 000000000000..37f33cf8a73a
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_iface.hxx
@@ -0,0 +1,186 @@
+/* -*- 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 ADC_UIDL_PE_IFACE_HXX
+#define ADC_UIDL_PE_IFACE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+namespace idl
+{
+ class Interface;
+}
+}
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+class PE_Function;
+class PE_Attribute;
+class PE_Type;
+
+class PE_Interface : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Interface();
+ virtual ~PE_Interface();
+
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken );
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_NameSeparator();
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken );
+ virtual void Process_TypeModifier(
+ const TokTypeModifier &
+ i_rToken );
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+ virtual void Process_Default();
+
+ private:
+ enum E_State /// @ATTENTION Do not change existing values (except of e_STATES_MAX) !!! Else array-indices will break.
+ {
+ e_none = 0,
+ need_uik,
+ uik,
+ need_ident,
+ ident,
+ need_interface,
+ need_name,
+ wait_for_base,
+ in_base, // in header, after ":"
+ need_curlbr_open,
+ e_std,
+ in_function,
+ in_attribute,
+ need_finish,
+ in_base_interface, // in body, after "interface"
+ e_STATES_MAX
+ };
+ enum E_TokenType /// @ATTENTION Do not change existing values (except of tt_MAX) !!! Else array-indices will break.
+ {
+ tt_metatype = 0,
+ tt_identifier = 1,
+ tt_punctuation = 2,
+ tt_startoftype = 3,
+ tt_stereotype = 4,
+ tt_MAX
+ };
+ typedef void (PE_Interface::*F_TOK)(const char *);
+
+
+ void On_need_uik_MetaType(const char * i_sText);
+ void On_uik_Identifier(const char * i_sText);
+ void On_uik_Punctuation(const char * i_sText);
+ void On_need_ident_MetaType(const char * i_sText);
+ void On_ident_Identifier(const char * i_sText);
+ void On_ident_Punctuation(const char * i_sText);
+ void On_need_interface_MetaType(const char * i_sText);
+ void On_need_name_Identifer(const char * i_sText);
+ void On_wait_for_base_Punctuation(const char * i_sText);
+ void On_need_curlbr_open_Punctuation(const char * i_sText);
+ void On_std_Metatype(const char * i_sText);
+ void On_std_Punctuation(const char * i_sText);
+ void On_std_Stereotype(const char * i_sText);
+ void On_std_GotoFunction(const char * i_sText);
+ void On_std_GotoAttribute(const char * i_sText);
+ void On_std_GotoBaseInterface(const char * i_sText);
+ void On_need_finish_Punctuation(const char * i_sText);
+ void On_Default(const char * i_sText);
+
+ void CallHandler(
+ const char * i_sTokenText,
+ E_TokenType i_eTokenType );
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual void ReceiveData();
+ virtual UnoIDL_PE & MyPE();
+
+ void store_Interface();
+
+ // DATA
+ static F_TOK aDispatcher[e_STATES_MAX][tt_MAX];
+
+ E_State eState;
+ String sData_Name;
+ bool bIsPreDeclaration;
+ ary::idl::Interface *
+ pCurInterface;
+ ary::idl::Ce_id nCurInterface;
+
+ Dyn<PE_Function> pPE_Function;
+ Dyn<PE_Attribute> pPE_Attribute;
+
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nCurParsed_Base;
+ bool bOptionalMember;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_modul.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_modul.hxx
new file mode 100644
index 000000000000..1c75d25203d1
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_modul.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 LUIDL_PE_MODUL_HXX
+#define LUIDL_PE_MODUL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <semantic/semnode.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+class PE_Module : public ::ParseEnvironment
+{
+ public:
+
+ virtual void Enter(
+ E_EnvStackAction i_eWayOfEntering );
+ virtual void Leave(
+ E_EnvStackAction i_eWayOfLeaving );
+
+ private:
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_property.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_property.hxx
new file mode 100644
index 000000000000..15aa52b7c31a
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_property.hxx
@@ -0,0 +1,125 @@
+/* -*- 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 ADC_UIDL_PE_PROPERTY_HXX
+#define ADC_UIDL_PE_PROPERTY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+#include <ary/idl/i_property.hxx>
+ // PARAMETERS
+#include <ary/idl/i_gate.hxx>
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class PE_Variable;
+
+class PE_Property : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ typedef ary::idl::Ce_id Ce_id;
+ typedef ary::idl::Type_id Type_id;
+ typedef ary::idl::Property::Stereotypes Stereotypes;
+
+
+ PE_Property(
+ const Ce_id & i_rCurOwner );
+
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository &
+ io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ virtual ~PE_Property();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_Default();
+
+ void PresetOptional() { bIsOptional = true; }
+ void PresetStereotypes(
+ Stereotypes::E_Flags
+ i_eFlag )
+ { aStereotypes.Set_Flag(i_eFlag); }
+ private:
+ enum E_State
+ {
+ e_none,
+ e_start,
+ expect_variable,
+ in_variable
+ };
+
+ virtual void InitData();
+ virtual void ReceiveData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ E_State eState;
+ const Ce_id * pCurOwner;
+
+ Dyn<PE_Variable> pPE_Variable;
+
+ // object-data
+ Type_id nCurParsedType;
+ String sCurParsedName;
+ bool bIsOptional;
+ Stereotypes aStereotypes;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_selem.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_selem.hxx
new file mode 100644
index 000000000000..54088fdbdd9c
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_selem.hxx
@@ -0,0 +1,124 @@
+/* -*- 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 LUIDL_PE_SELEM_HXX
+#define LUIDL_PE_SELEM_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_gate.hxx>
+
+
+namespace udm {
+class Agent_Struct;
+} // namespace udm
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class PE_Type;
+class StructElement;
+class Struct;
+
+class PE_StructElement : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ typedef ary::idl::Ce_id RStructElement;
+ typedef ary::idl::Ce_id RStruct;
+
+ PE_StructElement( /// Use for Struct-elements
+ RStructElement & o_rResult,
+ const RStruct & i_rCurStruct,
+ const String & i_rCurStructTemplateParam );
+ PE_StructElement( /// Use for Exception-elements
+ RStructElement & o_rResult,
+ const RStruct & i_rCurExc );
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_StructElement();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Default();
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+
+ private:
+ enum E_State
+ {
+ e_none,
+ expect_type,
+ expect_name,
+ expect_finish
+ };
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ ary::idl::Type_id lhf_FindTemplateParamType() const;
+
+ // DATA
+ E_State eState;
+ RStructElement * pResult;
+ const RStruct * pCurStruct;
+ bool bIsExceptionElement;
+
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nType;
+ String sName;
+ const String * pCurStructTemplateParam;
+};
+
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_servi.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_servi.hxx
new file mode 100644
index 000000000000..691b97d5a432
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_servi.hxx
@@ -0,0 +1,151 @@
+/* -*- 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 ADC_UIDL_PE_SERVI_HXX
+#define ADC_UIDL_PE_SERVI_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+ namespace idl
+ {
+ class Service;
+ class SglIfcService;
+ }
+}
+
+namespace csi
+{
+namespace uidl
+{
+
+class PE_Property;
+class PE_Type;
+class PE_Function;
+
+
+class PE_Service : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Service();
+ virtual ~PE_Service();
+
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken );
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+ virtual void Process_Needs();
+ virtual void Process_Observes();
+ virtual void Process_Default();
+
+ private:
+ void On_Default();
+
+ enum E_State
+ {
+ e_none = 0,
+ need_name,
+ need_curlbr_open,
+ e_std,
+ in_property,
+ in_ifc_type,
+ in_service_type,
+ expect_ifc_separator,
+ expect_service_separator,
+ at_ignore,
+ need_finish,
+ need_base_interface, /// After ":".
+ need_curlbr_open_sib, /// After base interface in single interface based service.
+ e_std_sib, /// Standard in single interface based service.
+ e_STATES_MAX
+ };
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual void ReceiveData();
+ virtual UnoIDL_PE & MyPE();
+
+ void StartProperty();
+
+
+ // DATA
+ E_State eState;
+ String sData_Name;
+ bool bIsPreDeclaration;
+ ary::idl::Service * pCurService;
+ ary::idl::SglIfcService *
+ pCurSiService;
+ ary::idl::Ce_id nCurService; // Needed for PE_Attribute.
+
+ Dyn<PE_Property> pPE_Property;
+ ary::idl::Ce_id nCurParsed_Property;
+
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nCurParsed_Type;
+
+ Dyn<PE_Function> pPE_Constructor;
+
+ bool bOptionalMember;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_singl.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_singl.hxx
new file mode 100644
index 000000000000..5affacaa925e
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_singl.hxx
@@ -0,0 +1,127 @@
+/* -*- 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 LUIDL_PE_SINGL_HXX
+#define LUIDL_PE_SINGL_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace ary
+{
+ namespace idl
+ {
+ class Singleton;
+ class SglIfcSingleton;
+ }
+}
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class PE_Type;
+
+
+class PE_Singleton : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Singleton();
+ virtual ~PE_Singleton();
+
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken );
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_Default();
+
+ private:
+ enum E_State
+ {
+ e_none = 0,
+ need_name,
+ need_curlbr_open,
+ e_std,
+ in_service,
+ need_finish,
+ in_base_interface,
+ e_STATES_MAX
+ };
+
+ void On_Default();
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual void ReceiveData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+// static F_TOK aDispatcher[e_STATES_MAX][tt_MAX];
+
+ E_State eState;
+ String sData_Name;
+ bool bIsPreDeclaration;
+ ary::idl::Singleton *
+ pCurSingleton;
+ ary::idl::SglIfcSingleton *
+ pCurSiSingleton;
+
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nCurParsed_Type;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_struc.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_struc.hxx
new file mode 100644
index 000000000000..3746d74e4144
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_struc.hxx
@@ -0,0 +1,287 @@
+/* -*- 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 LUIDL_PE_STRUC_HXX
+#define LUIDL_PE_STRUC_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+#include <s2_luidl/semnode.hxx>
+#include <ary/qualiname.hxx>
+ // PARAMETERS
+
+
+
+namespace csi
+{
+namespace prl
+{
+ class TNamespace;
+}
+}
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class Struct;
+class StructElement;
+class PE_StructElement;
+class PE_Type;
+
+
+class PE_Struct : public UnoIDL_PE
+{
+ public:
+ PE_Struct();
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_Struct();
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ private:
+ struct S_Work
+ {
+ S_Work();
+
+ void InitData();
+ void Prepare_PE_QualifiedName();
+ void Prepare_PE_Element();
+ void Data_Set_Name(
+ const char * i_sName );
+ void Data_Set_TemplateParam(
+ const char * i_sTemplateParam );
+
+ String sData_Name;
+ String sData_TemplateParam;
+ bool bIsPreDeclaration;
+ ary::idl::Ce_id nCurStruct;
+
+ Dyn<PE_StructElement>
+ pPE_Element;
+ ary::idl::Ce_id nCurParsed_ElementRef;
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nCurParsed_Base;
+ };
+
+ struct S_Stati;
+ class PE_StructState;
+ friend struct S_Stati;
+ friend class PE_StructState;
+
+
+ class PE_StructState : public ParseEnvState
+ {
+ public:
+
+ protected:
+ PE_StructState(
+ PE_Struct & i_rStruct )
+ : rStruct(i_rStruct) {}
+ void MoveState(
+ ParseEnvState & i_rState ) const;
+ void SetResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ UnoIDL_PE * i_pParseEnv2Push = 0 ) const
+ { rStruct.SetResult(i_eDone, i_eWhat2DoWithEnvStack, i_pParseEnv2Push); }
+
+ S_Stati & Stati() const { return *rStruct.pStati; }
+ S_Work & Work() const { return rStruct.aWork; }
+ PE_Struct & PE() const { return rStruct; }
+
+ private:
+ virtual UnoIDL_PE & MyPE();
+ // DATA
+ PE_Struct & rStruct;
+ };
+
+ class State_None : public PE_StructState
+ {
+ public:
+ State_None(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ };
+ class State_WaitForName : public PE_StructState
+ { // -> Name
+ public:
+ State_WaitForName(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ };
+ class State_GotName : public PE_StructState
+ { // -> : { ; <
+ public:
+ State_GotName(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+ class State_WaitForTemplateParam : public PE_StructState
+ { // -> Template parameter identifier
+ public:
+ State_WaitForTemplateParam(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ };
+ class State_WaitForTemplateEnd : public PE_StructState
+ { // -> >
+ public:
+ State_WaitForTemplateEnd(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+ class State_WaitForBase : public PE_StructState
+ { // -> Base
+ public:
+ State_WaitForBase(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void On_SubPE_Left();
+ };
+ class State_GotBase : public PE_StructState
+ { // -> {
+ public:
+ State_GotBase(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+ class State_WaitForElement : public PE_StructState
+ { // -> Typ }
+ public:
+ State_WaitForElement(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_NameSeparator();
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken );
+ virtual void Process_TypeModifier(
+ const TokTypeModifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+ class State_WaitForFinish : public PE_StructState
+ { // -> ;
+ public:
+ State_WaitForFinish(
+ PE_Struct & i_rStruct )
+ : PE_StructState(i_rStruct) {}
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ };
+
+ struct S_Stati
+ {
+ S_Stati(
+ PE_Struct & io_rStruct );
+ void SetState(
+ ParseEnvState & i_rNextState )
+ { pCurStatus = &i_rNextState; }
+
+ State_None aNone;
+ State_WaitForName aWaitForName;
+ State_GotName aGotName;
+ State_WaitForTemplateParam
+ aWaitForTemplateParam;
+ State_WaitForTemplateEnd
+ aWaitForTemplateEnd;
+ State_WaitForBase aWaitForBase;
+ State_GotBase aGotBase;
+ State_WaitForElement
+ aWaitForElement;
+ State_WaitForFinish aWaitForFinish;
+
+ ParseEnvState * pCurStatus;
+ };
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual void ReceiveData();
+
+ public:
+
+ void store_Struct();
+
+ private:
+
+ S_Stati & Stati() { return *pStati; }
+ S_Work & Work() { return aWork; }
+
+ // DATA
+ S_Work aWork;
+ Dyn<S_Stati> pStati;
+};
+
+
+inline void
+PE_Struct::PE_StructState::MoveState(
+ ParseEnvState & i_rState ) const
+ { rStruct.Stati().SetState(i_rState); }
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_tydf2.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_tydf2.hxx
new file mode 100644
index 000000000000..ea8228fecbae
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_tydf2.hxx
@@ -0,0 +1,126 @@
+/* -*- 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 LUIDL_PE_TYDF2_HXX
+#define LUIDL_PE_TYDF2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+
+
+namespace csi
+{
+namespace uidl
+{
+
+class PE_Type;
+
+
+class PE_Typedef : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Typedef();
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~PE_Typedef();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_Default();
+
+ private:
+ enum E_State
+ {
+ e_none = 0,
+ expect_description,
+ expect_name,
+ got_name,
+ e_STATES_MAX
+ };
+ enum E_TokenType /// @ATTENTION Do not change existing values (except of tt_MAX) !!! Else array-indices will break.
+ {
+ tt_any = 0,
+ tt_identifier,
+ tt_punctuation,
+ tt_MAX
+ };
+ typedef void (PE_Typedef::*F_TOK)(const char *);
+
+
+ void CallHandler(
+ const char * i_sTokenText,
+ E_TokenType i_eTokenType );
+
+ void On_expect_description_Any(const char * i_sText);
+ void On_expect_name_Identifier(const char * i_sText);
+ void On_got_name_Punctuation(const char * i_sText);
+ void On_Default(const char * );
+
+ virtual void InitData();
+ virtual void ReceiveData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ static F_TOK aDispatcher[e_STATES_MAX][tt_MAX];
+
+ E_State eState;
+ Dyn<PE_Type> pPE_Type;
+ ary::idl::Type_id nType;
+ String sName;
+};
+
+
+
+} // namespace uidl
+} // namespace csi
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_type2.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_type2.hxx
new file mode 100644
index 000000000000..2d6367528672
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_type2.hxx
@@ -0,0 +1,119 @@
+/* -*- 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 ADC_PE_TYPE2_HXX
+#define ADC_PE_TYPE2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include<s2_luidl/parsenv2.hxx>
+#include<s2_luidl/pestate.hxx>
+ // COMPONENTS
+#include<ary/qualiname.hxx>
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class PE_Type : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Type(
+ ary::idl::Type_id & o_rResult );
+ virtual ~PE_Type();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_NameSeparator();
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken );
+ virtual void Process_TypeModifier(
+ const TokTypeModifier &
+ i_rToken );
+ virtual void Process_Default();
+
+ private:
+ enum E_State
+ {
+ e_none = 0,
+ expect_type,
+ expect_quname_part,
+ expect_quname_separator,
+ in_template_type
+ };
+
+ void Finish();
+ PE_Type & MyTemplateType();
+
+ virtual void InitData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ ary::idl::Type_id * pResult;
+
+ uintt nIsSequenceCounter;
+ uintt nSequenceDownCounter;
+ bool bIsUnsigned;
+ ary::QualifiedName sFullType;
+
+ E_State eState;
+ String sLastPart;
+
+ Dyn<PE_Type> pPE_TemplateType; /// @attention Recursion, only initiate, if needed!
+ ary::idl::Type_id nTemplateType;
+ std::vector<ary::idl::Type_id>
+ aTemplateParameters;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pe_vari2.hxx b/autodoc/source/parser_i/inc/s2_luidl/pe_vari2.hxx
new file mode 100644
index 000000000000..961539c57abd
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pe_vari2.hxx
@@ -0,0 +1,109 @@
+/* -*- 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 ADC_UIDL_PE_VARI2_HXX
+#define ADC_UIDL_PE_VARI2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/parsenv2.hxx>
+#include <s2_luidl/pestate.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class PE_Type;
+
+
+class PE_Variable : public UnoIDL_PE,
+ public ParseEnvState
+{
+ public:
+ PE_Variable(
+ ary::idl::Type_id & i_rResult_Type,
+ String & i_rResult_Name );
+ virtual void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::Repository &
+ io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ virtual ~PE_Variable();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ virtual void Process_Default();
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken );
+ private:
+ enum E_State
+ {
+ e_none,
+ expect_type,
+ expect_name,
+ expect_finish
+ };
+
+ virtual void InitData();
+ virtual void ReceiveData();
+ virtual void TransferData();
+ virtual UnoIDL_PE & MyPE();
+
+ // DATA
+ E_State eState;
+ ary::idl::Type_id * pResult_Type;
+ String * pResult_Name;
+
+ Dyn<PE_Type> pPE_Type;
+};
+
+
+
+} // namespace uidl
+} // namespace csi
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/pestate.hxx b/autodoc/source/parser_i/inc/s2_luidl/pestate.hxx
new file mode 100644
index 000000000000..78582ab0abae
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/pestate.hxx
@@ -0,0 +1,108 @@
+/* -*- 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 ADC_PESTATE_HXX
+#define ADC_PESTATE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include<s2_luidl/tokintpr.hxx>
+#include<s2_luidl/tokproct.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class TokIdentifier;
+class TokBuiltInType;
+class TokPunctuation;
+class Tok_Documentation;
+
+class ParseEnvState : public TokenInterpreter,
+ virtual protected TokenProcessing_Types
+{
+ public:
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken );
+ virtual void Process_NameSeparator();
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken );
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken );
+ virtual void Process_TypeModifier(
+ const TokTypeModifier &
+ i_rToken );
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken );
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken );
+ virtual void Process_ParameterHandling(
+ const TokParameterHandling &
+ i_rToken );
+ virtual void Process_Raises();
+ virtual void Process_Needs();
+ virtual void Process_Observes();
+ virtual void Process_Assignment(
+ const TokAssignment &
+ i_rToken );
+ virtual void Process_EOL();
+
+ virtual void On_SubPE_Left();
+
+ virtual void Process_Default();
+
+ protected:
+ ParseEnvState() : bDefaultIsError(true) {}
+ void SetDefault2Ignore() { bDefaultIsError = false; }
+
+ private:
+ virtual UnoIDL_PE & MyPE() = 0;
+ bool bDefaultIsError;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/semnode.hxx b/autodoc/source/parser_i/inc/s2_luidl/semnode.hxx
new file mode 100644
index 000000000000..75c8fdf4bdce
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/semnode.hxx
@@ -0,0 +1,134 @@
+/* -*- 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 ADC_SEMNODE_HXX
+#define ADC_SEMNODE_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/tokproct.hxx>
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/qualiname.hxx>
+// #include <udm/ref.hxx>
+
+
+namespace ary
+{
+ class QualifiedName;
+ class Repository;
+
+namespace idl
+{
+ class Gate;
+ class Module;
+} // namespace idl
+} // namespace ary
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class Struct;
+class Token;
+
+
+/** is an implementation class for UnoIDL_PE s
+*/
+class SemanticNode : private TokenProcessing_Types
+{
+ public:
+ SemanticNode();
+ void EstablishContacts(
+ UnoIDL_PE * io_pParentPE,
+ ary::idl::Gate & io_rRepository,
+ TokenProcessing_Result &
+ o_rResult );
+ ~SemanticNode();
+
+ void SetTokenResult(
+ E_TokenDone i_eDone,
+ E_EnvStackAction i_eWhat2DoWithEnvStack,
+ UnoIDL_PE * i_pParseEnv2Push = 0 );
+ UnoIDL_PE * Parent() const { return pParentPE; }
+ ary::idl::Gate & AryGate() const { return *pAryGate; }
+ TokenProcessing_Result &
+ TokenResult() const { return *pTokenResult; }
+
+ private:
+ // DATA
+ UnoIDL_PE * pParentPE;
+ ary::idl::Gate * pAryGate;
+ TokenProcessing_Result *
+ pTokenResult;
+};
+
+
+/*
+class Trying_PE
+{
+ public:
+ virtual ~Trying_PE() {}
+
+ protected:
+ Trying_PE();
+
+ virtual void ProcessToken(
+ const Token & i_rToken );
+
+ void StartTry(
+ UnoIDL_PE & i_rFirstTry );
+ void Add2Try(
+ UnoIDL_PE & i_rTry );
+ bool AmITrying() const;
+ UnoIDL_PE * NextTry() const;
+ void FinishTry();
+
+ private:
+ std::vector<UnoIDL_PE*>
+ aTryableSubEnvironments;
+ uintt nTryCounter;
+};
+
+*/
+
+
+// IMPLEMENTATION
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/smp_uidl.hxx b/autodoc/source/parser_i/inc/s2_luidl/smp_uidl.hxx
new file mode 100644
index 000000000000..c29f7297c181
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/smp_uidl.hxx
@@ -0,0 +1,84 @@
+/* -*- 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 ADC_SMP_HXX
+#define ADC_SMP_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/tok_recv.hxx>
+#include <s2_dsapi/tok_recv.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+/** is an implementation class for ParseEnvironment
+*/
+class SemanticParser : public csi::uidl::Token_Receiver,
+ public csi::dsapi::Token_Receiver
+{
+ public:
+ typedef std::deque< DYN TextToken * > TokenQueue;
+
+ ~SemanticParser();
+
+
+ void Receive(
+ DYN csi::uidl::Token &
+ let_drToken );
+ void Receive(
+ DYN csi::dsapi::Token &
+ let_drToken );
+
+ private:
+ // DATA
+ TokenQueue aTokenQueue;
+
+
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tk_const.hxx b/autodoc/source/parser_i/inc/s2_luidl/tk_const.hxx
new file mode 100644
index 000000000000..e423a8130b0d
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tk_const.hxx
@@ -0,0 +1,66 @@
+/* -*- 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 ADC_UIDL_TK_CONST_HXX
+#define ADC_UIDL_TK_CONST_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/uidl_tok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class TokAssignment : public Token
+{
+ public:
+ TokAssignment(
+ const char * i_sText )
+ : sText(i_sText) {}
+
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+ private:
+ // DATA
+ String sText;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tk_ident.hxx b/autodoc/source/parser_i/inc/s2_luidl/tk_ident.hxx
new file mode 100644
index 000000000000..1abc3cf77a46
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tk_ident.hxx
@@ -0,0 +1,77 @@
+/* -*- 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 ADC_UIDL_TK_IDENT_HXX
+#define ADC_UIDL_TK_IDENT_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/uidl_tok.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class TokIdentifier : public Token
+{
+ public:
+ TokIdentifier(
+ const char * i_sText )
+ : sText(i_sText) {}
+
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+ private:
+ // DATA
+ String sText;
+};
+
+class TokNameSeparator : public Token
+{
+ public:
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tk_keyw.hxx b/autodoc/source/parser_i/inc/s2_luidl/tk_keyw.hxx
new file mode 100644
index 000000000000..ac0120c7582d
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tk_keyw.hxx
@@ -0,0 +1,253 @@
+/* -*- 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 ADC_UIDL_TK_KEYW_HXX
+#define ADC_UIDL_TK_KEYW_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/uidl_tok.hxx>
+ // COMPONENTS
+#include <luxenum.hxx>
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class TokKeyword : public Token
+{
+};
+
+
+class TokBuiltInType : public TokKeyword
+{
+ public:
+ enum E_TokenId
+ {
+ e_none = 0,
+ bty_any = 1,
+ bty_boolean = 2,
+ bty_byte = 3,
+ bty_char = 4,
+ bty_double = 5,
+ bty_hyper = 6,
+ bty_long = 7,
+ bty_short = 8,
+ bty_string = 9,
+ bty_void = 10,
+ bty_ellipse = 11
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+ TokBuiltInType(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+
+class TokTypeModifier : public TokKeyword
+{
+ public:
+ enum E_TokenId
+ {
+ e_none = 0,
+ tmod_unsigned = 1,
+ tmod_sequence
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+ TokTypeModifier(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+class TokMetaType : public TokKeyword
+{
+ public:
+ enum E_TokenId
+ {
+ e_none = 0,
+ mt_attribute = 1,
+ mt_constants,
+ mt_enum,
+ mt_exception,
+ mt_ident,
+ mt_interface,
+ mt_module,
+ mt_property,
+ mt_service,
+ mt_singleton,
+ mt_struct,
+ mt_typedef,
+ mt_uik
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+ TokMetaType(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+ E_TokenId Id() const { return eTag; }
+
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+class TokStereotype : public TokKeyword
+{
+ public:
+ // TYPES
+ enum E_TokenId
+ {
+ e_none = 0,
+ ste_bound = 1,
+ ste_const,
+ ste_constrained,
+ ste_maybeambiguous,
+ ste_maybedefault,
+ ste_maybevoid,
+ ste_oneway,
+ ste_optional,
+ ste_readonly,
+ ste_removable,
+ ste_virtual,
+ ste_transient,
+ ste_published
+ };
+
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+ TokStereotype(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char *
+ Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+class TokParameterHandling : public TokKeyword
+{
+ public:
+ // TYPES
+ enum E_TokenId
+ {
+ e_none = 0,
+ ph_in,
+ ph_out,
+ ph_inout
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+ TokParameterHandling(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char *
+ Text() const;
+ E_TokenId Id() const { return eTag; }
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+class TokRaises : public TokKeyword
+{
+ public:
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+};
+
+class TokNeeds : public TokKeyword
+{
+ public:
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+};
+
+class TokObserves : public TokKeyword
+{
+ public:
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ virtual const char *
+ Text() const;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tk_punct.hxx b/autodoc/source/parser_i/inc/s2_luidl/tk_punct.hxx
new file mode 100644
index 000000000000..043256ef27e5
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tk_punct.hxx
@@ -0,0 +1,115 @@
+/* -*- 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 ADC_UIDL_TK_PUNCT_HXX
+#define ADC_UIDL_TK_PUNCT_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <s2_luidl/uidl_tok.hxx>
+ // COMPONENTS
+#include <luxenum.hxx>
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class TokPunctuation : public Token
+{
+ public:
+ // TYPES
+ enum E_TokenId
+ {
+ e_none = 0,
+ BracketOpen = 1, // (
+ BracketClose = 2, // )
+ ArrayBracketOpen = 3, // [
+ ArrayBracketClose = 4, // ]
+ CurledBracketOpen = 5, // {
+ CurledBracketClose = 6, // }
+ Semicolon = 7, // ;
+ Colon = 8, // :
+ DoubleColon = 9, // ::
+ Comma = 10, // ,
+ Minus = 11, // -
+ Fullstop = 12, // .
+ Lesser = 13, // <
+ Greater = 14 // >
+ };
+ typedef lux::Enum<E_TokenId> EV_TokenId;
+
+
+ TokPunctuation(
+ EV_TokenId i_eTag )
+ : eTag(i_eTag) {}
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char *
+ Text() const;
+ EV_TokenId Id() const { return eTag; }
+
+
+ private:
+ // DATA
+ EV_TokenId eTag;
+};
+
+class Tok_EOL : public Token
+{
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char *
+ Text() const;
+};
+
+class Tok_EOF : public Token
+{
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const;
+ // INQUIRY
+ virtual const char *
+ Text() const;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tkp_uidl.hxx b/autodoc/source/parser_i/inc/s2_luidl/tkp_uidl.hxx
new file mode 100644
index 000000000000..02c35e2fd871
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tkp_uidl.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 ADC_TKP_UIDL_HXX
+#define ADC_TKP_UIDL_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkp2.hxx>
+ // COMPONENTS
+ // PARAMETRS
+
+class TkpDocuContext;
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+
+class Token_Receiver;
+class Context_UidlCode;
+
+
+/** This is a TokenParser which is able to parse tokens from
+ C++ source code.
+*/
+class TokenParser_Uidl : public TokenParse2
+{
+ public:
+ // LIFECYCLE
+ TokenParser_Uidl(
+ Token_Receiver & o_rUidlReceiver,
+ DYN TkpDocuContext &
+ let_drDocuContext );
+ virtual ~TokenParser_Uidl();
+
+ // OPERATIONS
+ private:
+ virtual ::TkpContext &
+ CurrentContext();
+
+ virtual void SetStartContext();
+ virtual void SetCurrentContext(
+ TkpContext & io_rContext );
+ // DATA
+ Dyn<Context_UidlCode>
+ pBaseContext;
+ ::TkpContext * pCurContext;
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tokintpr.hxx b/autodoc/source/parser_i/inc/s2_luidl/tokintpr.hxx
new file mode 100644
index 000000000000..fcfd1972ce1b
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tokintpr.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 ADC_LUIDL_TOKINTPR_HXX
+#define ADC_LUIDL_TOKINTPR_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class TokIdentifier;
+class TokPunctuation;
+class TokBuiltInType;
+class TokTypeModifier;
+class TokMetaType;
+class TokStereotype;
+class TokParameterHandling;
+class TokAssignment;
+class Tok_Documentation;
+
+
+class TokenInterpreter
+{
+ public:
+ virtual ~TokenInterpreter() {}
+
+ virtual void Process_Identifier(
+ const TokIdentifier &
+ i_rToken ) = 0;
+ virtual void Process_NameSeparator() = 0; // ::
+ virtual void Process_Punctuation(
+ const TokPunctuation &
+ i_rToken ) = 0;
+ virtual void Process_BuiltInType(
+ const TokBuiltInType &
+ i_rToken ) = 0;
+ virtual void Process_TypeModifier(
+ const TokTypeModifier &
+ i_rToken ) = 0;
+ virtual void Process_MetaType(
+ const TokMetaType & i_rToken ) = 0;
+ virtual void Process_Stereotype(
+ const TokStereotype &
+ i_rToken ) = 0;
+ virtual void Process_ParameterHandling(
+ const TokParameterHandling &
+ i_rToken ) = 0;
+ virtual void Process_Raises() = 0;
+ virtual void Process_Needs() = 0;
+ virtual void Process_Observes() = 0;
+ virtual void Process_Assignment(
+ const TokAssignment &
+ i_rToken ) = 0;
+ virtual void Process_EOL() = 0;
+};
+
+
+
+// IMPLEMENTATION
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tokproct.hxx b/autodoc/source/parser_i/inc/s2_luidl/tokproct.hxx
new file mode 100644
index 000000000000..0afae87c52b7
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tokproct.hxx
@@ -0,0 +1,95 @@
+/* -*- 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 ADC_TOKPROCT_HXX
+#define ADC_TOKPROCT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class UnoIDL_PE;
+
+
+/** is a parent class for classes, which take part in parsing tokens semantically.
+ It provides some types for them.
+*/
+class TokenProcessing_Types
+{
+ public:
+ enum E_TokenDone
+ {
+ not_done = 0,
+ done = 1
+ };
+
+ enum E_EnvStackAction
+ {
+ stay, // same parse environment
+ push_sure, // push sub environment, which must be the correct one
+ push_try, // push sub environment, which is tried, if it may be the right one
+ pop_success, // return to parent environment, parsing was successful
+ pop_failure // return to parent environment, but an error occured.
+ };
+
+ struct TokenProcessing_Result
+ {
+ E_TokenDone eDone;
+ E_EnvStackAction eStackAction;
+ UnoIDL_PE * pEnv2Push;
+
+ TokenProcessing_Result()
+ : eDone(not_done), eStackAction(stay), pEnv2Push(0) {}
+ void reset() { eDone = not_done; eStackAction = stay; pEnv2Push = 0; }
+ };
+
+ enum E_ParseResult
+ {
+ res_error,
+ res_complete,
+ res_predeclaration
+ };
+};
+
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/tokrecv.hxx b/autodoc/source/parser_i/inc/s2_luidl/tokrecv.hxx
new file mode 100644
index 000000000000..f1d43dd5a435
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/tokrecv.hxx
@@ -0,0 +1,62 @@
+/* -*- 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 LUIDL_TOKRECV_HXX
+#define LUIDL_TOKRECV_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class Token;
+
+/**
+@descr
+*/
+class Token_Receiver
+{
+ public:
+ virtual ~Token_Receiver() {}
+ virtual void Receive(
+ DYN Token & let_drToken ) = 0;
+ virtual void Increment_CurLine() = 0;
+};
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/s2_luidl/uidl_tok.hxx b/autodoc/source/parser_i/inc/s2_luidl/uidl_tok.hxx
new file mode 100644
index 000000000000..a316582b381b
--- /dev/null
+++ b/autodoc/source/parser_i/inc/s2_luidl/uidl_tok.hxx
@@ -0,0 +1,66 @@
+/* -*- 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 ADC_UIDL_TOK_HXX
+#define ADC_UIDL_TOK_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/token2.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+class ParserInfo;
+
+namespace csi
+{
+namespace uidl
+{
+
+
+class TokenInterpreter;
+
+class Token : public TextToken
+{
+ public:
+ // LIFECYCLE
+ virtual ~Token() {}
+
+ // OPERATIONS
+ virtual void Trigger(
+ TokenInterpreter & io_rInterpreter ) const = 0;
+};
+
+} // namespace uidl
+} // namespace csi
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/semantic/parsenv2.hxx b/autodoc/source/parser_i/inc/semantic/parsenv2.hxx
new file mode 100644
index 000000000000..75facea675ce
--- /dev/null
+++ b/autodoc/source/parser_i/inc/semantic/parsenv2.hxx
@@ -0,0 +1,53 @@
+/* -*- 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 ADC_PARSEENV2_HXX
+#define ADC_PARSEENV2_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <queue>
+
+
+
+class ParseEnvironment
+{
+ public:
+ virtual ~ParseEnvironment();
+
+ virtual void Enter() = 0;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/tokens/stmstar2.hxx b/autodoc/source/parser_i/inc/tokens/stmstar2.hxx
new file mode 100644
index 000000000000..1555cde5e0d6
--- /dev/null
+++ b/autodoc/source/parser_i/inc/tokens/stmstar2.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 ADC_STMSTAR2_HXX
+#define ADC_STMSTAR2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/stmstat2.hxx>
+ // COMPONENTS
+ // PARAMETERS
+ // SERVICES
+
+
+class StmArrayStatu2 : public StmStatu2
+{
+ public:
+ // LIFECYCLE
+ StmArrayStatu2(
+ intt i_nStatusSize,
+ const INT16 * in_aArrayModel,
+ uintt i_nTokenId,
+ bool in_bIsDefault );
+ ~StmArrayStatu2();
+
+ // INQUIRY
+ StmStatu2::Branch NextBy(
+ intt in_nFollowersIndex) const;
+ UINT16 TokenId() const { return nTokenId; }
+ virtual bool IsADefault() const;
+
+ // ACCESS
+ virtual StmArrayStatu2 *
+ AsArray();
+ bool SetBranch(
+ intt in_nBranchIx,
+ StmStatu2::Branch
+ in_nBranch );
+ void SetTokenId(
+ UINT16 in_nTokenId );
+ private:
+ StmStatu2::Branch * dpBranches;
+ intt nNrOfBranches;
+ UINT16 nTokenId;
+ bool bIsADefault;
+};
+
+
+// IMPLEMENTATION
+
+inline void
+StmArrayStatu2::SetTokenId( UINT16 in_nTokenId )
+ { nTokenId = in_nTokenId; }
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/tokens/stmstat2.hxx b/autodoc/source/parser_i/inc/tokens/stmstat2.hxx
new file mode 100644
index 000000000000..3d83bb0f77fb
--- /dev/null
+++ b/autodoc/source/parser_i/inc/tokens/stmstat2.hxx
@@ -0,0 +1,70 @@
+/* -*- 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 ADC_STMSTAT2_HXX
+#define ADC_STMSTAT2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+class StmArrayStatu2;
+class StmBoundsStatu2;
+
+/** A StmStatu2 is a state within a StateMachin2.
+ There are two kinds of it. Either its an array of pointers to
+ other states within the state machine - an ArrayStatus.
+
+ Or it is a BoundsStatus, which shows, the token cannot be
+ followed further within the StateMachin2.
+**/
+class StmStatu2 // := "State machine status"
+{
+ public:
+ typedef intt Branch; /// Values >= 0 give a next #Status' ID.
+ /// Values <= 0 tell, that a token is finished.
+ /// a value < 0 returns the status back to an upper level state machine.
+ // LIFECYCLE
+ virtual ~StmStatu2() {}
+
+ // OPERATIONS
+ virtual StmArrayStatu2 *
+ AsArray();
+ virtual StmBoundsStatu2 *
+ AsBounds();
+
+ // INQUIRY
+ virtual bool IsADefault() const = 0;
+};
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/tokens/stmstfi2.hxx b/autodoc/source/parser_i/inc/tokens/stmstfi2.hxx
new file mode 100644
index 000000000000..d5550752e6a3
--- /dev/null
+++ b/autodoc/source/parser_i/inc/tokens/stmstfi2.hxx
@@ -0,0 +1,82 @@
+/* -*- 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 ADC_STMSTFI2_HXX
+#define ADC_STMSTFI2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/stmstat2.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+class TkpContext;
+class StateMachineContext;
+
+/**
+**/
+class StmBoundsStatu2 : public StmStatu2
+{
+ public:
+ // LIFECYCLE
+ StmBoundsStatu2(
+ StateMachineContext &
+ o_rOwner,
+ TkpContext & i_rFollowUpContext,
+ uintt i_nStatusFunctionNr,
+ bool i_bIsDefault );
+ // INQUIRY
+ TkpContext * FollowUpContext();
+ uintt StatusFunctionNr() const;
+ virtual bool IsADefault() const;
+
+ // ACCESS
+ virtual StmBoundsStatu2 *
+ AsBounds();
+
+ private:
+ StateMachineContext *
+ pOwner;
+ TkpContext * pFollowUpContext;
+ uintt nStatusFunctionNr;
+ bool bIsDefault;
+};
+
+inline TkpContext *
+StmBoundsStatu2::FollowUpContext()
+ { return pFollowUpContext; }
+inline uintt
+StmBoundsStatu2::StatusFunctionNr() const
+ { return nStatusFunctionNr; }
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/tokens/tkp2.hxx b/autodoc/source/parser_i/inc/tokens/tkp2.hxx
new file mode 100644
index 000000000000..faf45d8e5332
--- /dev/null
+++ b/autodoc/source/parser_i/inc/tokens/tkp2.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 ADC_TKP2_HXX
+#define ADC_TKP2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+class CharacterSource;
+class TkpContext;
+ // PARAMETRS
+
+
+
+/** This is the interface for parser classes, which get a sequence of Token s from
+ a text.
+
+ Start() starts to parse the text from the given i_rSource.
+ GetNextToken() returns a Token on the heap as long as there are
+ still characters in the text left. The last time GetNextToken()
+ returns NULL.
+
+ The algorithms for parsing tokens from the text are an issue of
+ the derived classes.
+*/
+class TokenParse2
+{
+ public:
+ // LIFECYCLE
+ TokenParse2();
+ virtual ~TokenParse2() {}
+
+ // OPERATIONS
+ virtual void Start(
+ CharacterSource &
+ i_rSource );
+
+ /** @short Gets the next identifiable token out of the
+ source code.
+ @return true, if there was passed a valid token.
+ false, if the parsed stream is finished or
+ an error occured.
+ */
+ bool GetNextToken();
+
+ private:
+ virtual void SetStartContext() = 0;
+ virtual void SetCurrentContext(
+ TkpContext & io_rContext ) = 0;
+ virtual TkpContext &
+ CurrentContext() = 0;
+ // DATA
+ CharacterSource * pChars;
+};
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/tokens/tkpcont2.hxx b/autodoc/source/parser_i/inc/tokens/tkpcont2.hxx
new file mode 100644
index 000000000000..fc7991ae1832
--- /dev/null
+++ b/autodoc/source/parser_i/inc/tokens/tkpcont2.hxx
@@ -0,0 +1,125 @@
+/* -*- 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 ADC_TKPCONT2_HXX
+#define ADC_TKPCONT2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+class CharacterSource;
+class TkpNullContext;
+class TkpNullContex2;
+
+/** @task
+ Specifies a context within which tokens are interpreted in a special
+ way. For example in parsing C++ there could be a context for code,
+ one for comments and a third one for preprocessor statements, because
+ each of these would give the same token different meanings.
+**/
+class TkpContext
+{
+ public:
+ // LIFECYCLE
+ virtual ~TkpContext() {}
+
+ // OPERATIONS
+ /** @descr
+ The functions starts to parse with the CurToken() of io_rText.
+ It leaves io_rText at the first char of the following Token or
+ the following Context.
+
+ This function returns, when a context has parsed some characterss
+ and completed a token OR left the context.
+ If the token is to be ignored, PassNewToken() returns false
+ and cuts the token from io_rText.
+ If the token is to be parsed further in a different context,
+ PassNewToken() returns false, but the token is
+ NOT cut from io_rText.
+
+ If the function has found a valid and complete token, PassNewToken()
+ passes the parsed token to the internally known receiver and
+ returns true. The token is cut from io_rText.
+ **/
+ virtual void ReadCharChain(
+ CharacterSource & io_rText ) = 0;
+ /** Has to pass the parsed token to a known receiver.
+ @return true, if a token was passed.
+ false, if no token was parsed complete by this context.
+ */
+ virtual bool PassNewToken() = 0;
+ virtual TkpContext &
+ FollowUpContext() = 0;
+
+ static TkpNullContext &
+ Null_();
+};
+
+TkpNullContex2 & TkpContext_Null2_();
+
+class StateMachineContext
+{
+ public:
+ virtual ~StateMachineContext() {}
+
+ /// Is used by StmBoundsStatu2 only.
+ virtual void PerformStatusFunction(
+ uintt i_nStatusSignal,
+ UINT16 i_nTokenId,
+ CharacterSource & io_rText ) = 0;
+};
+
+class TkpNullContex2 : public TkpContext
+{
+ public:
+ ~TkpNullContex2();
+
+ virtual void ReadCharChain(
+ CharacterSource & io_rText );
+ virtual bool PassNewToken();
+ virtual TkpContext &
+ FollowUpContext();
+};
+
+class TkpDocuContext : public TkpContext
+{
+ public:
+ virtual void SetParentContext(
+ TkpContext & io_rParentContext,
+ const char * i_sMultiLineEndToken ) = 0;
+ virtual void SetMode_IsMultiLine(
+ bool i_bTrue ) = 0;
+};
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/tokens/tkpstam2.hxx b/autodoc/source/parser_i/inc/tokens/tkpstam2.hxx
new file mode 100644
index 000000000000..a23da72f2c1e
--- /dev/null
+++ b/autodoc/source/parser_i/inc/tokens/tkpstam2.hxx
@@ -0,0 +1,123 @@
+/* -*- 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 ADC_TKPSTAM2_HXX
+#define ADC_TKPSTAM2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <tokens/tkpcont2.hxx>
+ // COMPONENTS
+#include <tokens/stmstar2.hxx>
+#include <tokens/stmstfi2.hxx>
+
+/** @descr
+ This state-machine models state transitions from one state to another
+ per indices of branches. If the indices represent ascii-char-values,
+ the state-machine can be used for recognising tokens of text.
+
+ The state-machine can be a status itself.
+
+ StateMachin2 needs the array-size of all stati as a guess, how many stati
+ the state machine will contain, when at work.
+
+
+**/
+class StateMachin2
+{
+ public:
+ // Types
+ typedef StmStatu2::Branch Branch;
+ typedef StmStatu2 * * StatusList;
+
+ //# Interface self
+ // LIFECYCLE
+ StateMachin2(
+ intt in_nStatusSize,
+ intt in_nInitial_StatusListSize ); /// The user of the constructor should guess
+ /// the approximate number of stati here to
+ /// avoid multiple reallocations.
+ /// @#AddStatus
+ intt AddStatus( /// @return the new #Status' ID
+ DYN StmStatu2 * let_dpStatus);
+ /// @#AddToken
+ void AddToken(
+ const char * in_sToken,
+ UINT16 in_nTokenId,
+ const INT16 * in_aBranches,
+ INT16 in_nBoundsStatus );
+ ~StateMachin2();
+
+ // OPERATIONS
+ StmBoundsStatu2 &
+ GetCharChain(
+ UINT16 & o_nTokenId,
+ CharacterSource & io_rText );
+ private:
+ // SERVICE FUNCTIONS
+ StmStatu2 & Status(
+ intt in_nStatusNr) const;
+ StmArrayStatu2 &
+ CurrentStatus() const;
+ StmBoundsStatu2 *
+ BoundsStatus() const;
+
+ /// Sets the PeekedStatus.
+ void Peek(
+ intt in_nBranch);
+
+ void ResizeStati(); // Adds space for 32 stati.
+
+ // DATA
+ StatusList pStati; /// List of Status, implemented as simple C-array of length #nStatiSpace
+ /// with nStatiLength valid members (beginning from zero).
+ intt nCurrentStatus;
+ intt nPeekedStatus;
+
+ intt nStatusSize; /// Size of the branch array of a single status.
+
+ intt nNrofStati; /// Nr of Stati so far.
+ intt nStatiSpace; /// Size of allocated array for #pStati (size in items).
+};
+
+
+
+/** @#AddToken
+ @descr
+ Adds a token, which will be recogniszeds by the
+ statemachine.
+
+
+**/
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/tokens/token2.hxx b/autodoc/source/parser_i/inc/tokens/token2.hxx
new file mode 100644
index 000000000000..d1a4ac3b275c
--- /dev/null
+++ b/autodoc/source/parser_i/inc/tokens/token2.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 ADC_TOKEN2_HXX
+#define ADC_TOKEN2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETRS
+
+
+
+/** This is the interface for parser classes, which get a sequence of Token s from
+ a text.
+
+ Start() starts to parse the text from the given i_rSource.
+ GetNextToken() returns a Token on the heap as long as there are
+ still characters in the text left. The last time GetNextToken()
+ returns NULL.
+
+ The algorithms for parsing tokens from the text are an issue of
+ the derived classes.
+*/
+class TextToken
+{
+ public:
+ // LIFECYCLE
+ virtual ~TextToken() {}
+
+
+ // INQUIRY
+ virtual const char* Text() const = 0;
+};
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/inc/x_parse2.hxx b/autodoc/source/parser_i/inc/x_parse2.hxx
new file mode 100644
index 000000000000..0301dc74f5a4
--- /dev/null
+++ b/autodoc/source/parser_i/inc/x_parse2.hxx
@@ -0,0 +1,70 @@
+/* -*- 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 ADC_X_PARSE2_HXX
+#define ADC_X_PARSE2_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/x.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+class X_AutodocParser : public csv::Exception
+{
+ public:
+ // TYPES
+ enum E_Type
+ {
+ x_Any = 0,
+ x_InvalidChar,
+ x_UnexpectedToken,
+ x_UnexpectedEOF
+ };
+ // LIFECYCLE
+ X_AutodocParser(
+ E_Type i_eType,
+ const char * i_sName = "" )
+ : eType(i_eType), sName(i_sName) {}
+ // INQUIRY
+ virtual void GetInfo(
+ std::ostream & o_rOutputMedium ) const;
+
+ private:
+ E_Type eType;
+ String sName;
+
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/tokens/makefile.mk b/autodoc/source/parser_i/tokens/makefile.mk
new file mode 100644
index 000000000000..9674e6684827
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/makefile.mk
@@ -0,0 +1,63 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=garden
+TARGET=parser2_tokens
+TARGETTYPE=CUI
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/stmstar2.obj \
+ $(OBJ)$/stmstat2.obj \
+ $(OBJ)$/stmstfi2.obj \
+ $(OBJ)$/tkpstam2.obj \
+ $(OBJ)$/tkp2.obj \
+ $(OBJ)$/tkpcont2.obj \
+ $(OBJ)$/x_parse2.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/parser_i/tokens/stmstar2.cxx b/autodoc/source/parser_i/tokens/stmstar2.cxx
new file mode 100644
index 000000000000..1cc135fa63e1
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/stmstar2.cxx
@@ -0,0 +1,104 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/stmstar2.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <x_parse2.hxx>
+
+
+
+StmArrayStatu2::StmArrayStatu2( intt i_nStatusSize,
+ const INT16 * in_aArrayModel,
+ uintt i_nTokenId,
+ bool in_bIsDefault )
+ : dpBranches(new StmStatu2::Branch[i_nStatusSize]),
+ nNrOfBranches(i_nStatusSize),
+ nTokenId(UINT16(i_nTokenId)),
+ bIsADefault(in_bIsDefault)
+{
+ // KORR_FUTURE: Interface of StmArrayStatu2() has to be changed.
+ csv_assert(i_nTokenId < 64536);
+
+ if (in_aArrayModel != 0)
+ {
+ intt count = 0;
+ for (const INT16 * get = in_aArrayModel; count < nNrOfBranches; count++, get++)
+ dpBranches[count] = *get;
+ }
+ else //
+ {
+ memset(dpBranches, 0, nNrOfBranches);
+ } // endif
+}
+
+StmArrayStatu2::~StmArrayStatu2()
+{
+ delete [] dpBranches;
+}
+
+bool
+StmArrayStatu2::SetBranch( intt in_nBranchIx,
+ StmStatu2::Branch in_nBranch )
+{
+ if ( csv::in_range(intt(0), in_nBranchIx, intt(nNrOfBranches) ) )
+ {
+ dpBranches[in_nBranchIx] = in_nBranch;
+ return true;
+ }
+ return false;
+}
+
+
+StmStatu2::Branch
+StmArrayStatu2::NextBy(intt in_nIndex) const
+{
+ if (in_nIndex < 0)
+ throw X_AutodocParser(X_AutodocParser::x_InvalidChar);
+
+ return in_nIndex < nNrOfBranches
+ ? dpBranches[in_nIndex]
+ : dpBranches[nNrOfBranches - 1];
+}
+
+
+bool
+StmArrayStatu2::IsADefault() const
+{
+ return bIsADefault;
+}
+
+StmArrayStatu2 *
+StmArrayStatu2::AsArray()
+{
+ return this;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/tokens/stmstat2.cxx b/autodoc/source/parser_i/tokens/stmstat2.cxx
new file mode 100644
index 000000000000..4d0cf62c4ed2
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/stmstat2.cxx
@@ -0,0 +1,48 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/stmstat2.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+
+StmArrayStatu2 *
+StmStatu2::AsArray()
+{
+ return 0;
+}
+
+StmBoundsStatu2 *
+StmStatu2::AsBounds()
+{
+ return 0;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/tokens/stmstfi2.cxx b/autodoc/source/parser_i/tokens/stmstfi2.cxx
new file mode 100644
index 000000000000..15bffb0bf937
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/stmstfi2.cxx
@@ -0,0 +1,63 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/stmstfi2.hxx>
+
+
+// NOT FULLY DECLARED SERVICES
+#include <tokens/tkpcont2.hxx>
+
+
+StmBoundsStatu2::StmBoundsStatu2( StateMachineContext &
+ o_rOwner,
+ TkpContext & i_rFollowUpContext,
+ uintt i_nStatusFunctionNr,
+ bool i_bIsDefault )
+ : pOwner(&o_rOwner),
+ pFollowUpContext(&i_rFollowUpContext),
+ nStatusFunctionNr(i_nStatusFunctionNr),
+ bIsDefault(i_bIsDefault)
+{
+}
+
+bool
+StmBoundsStatu2::IsADefault() const
+{
+ return bIsDefault;
+}
+
+StmBoundsStatu2 *
+StmBoundsStatu2::AsBounds()
+{
+ return this;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/tokens/tkp2.cxx b/autodoc/source/parser_i/tokens/tkp2.cxx
new file mode 100644
index 000000000000..58f740d871e0
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/tkp2.cxx
@@ -0,0 +1,64 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/tkp2.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <tools/tkpchars.hxx>
+#include <tokens/tkpcont2.hxx>
+
+TokenParse2::TokenParse2()
+ : pChars(0)
+{
+}
+
+void
+TokenParse2::Start( CharacterSource & i_rSource )
+{
+ pChars = &i_rSource;
+ SetStartContext();
+}
+
+bool
+TokenParse2::GetNextToken()
+{
+ csv_assert(pChars != 0);
+
+ bool bDone = false;
+ while ( NOT bDone AND NOT pChars->IsFinished() )
+ {
+ CurrentContext().ReadCharChain(*pChars);
+ bDone = CurrentContext().PassNewToken();
+ SetCurrentContext(CurrentContext().FollowUpContext());
+ }
+ return bDone;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/tokens/tkpcont2.cxx b/autodoc/source/parser_i/tokens/tkpcont2.cxx
new file mode 100644
index 000000000000..4ccef4df4b12
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/tkpcont2.cxx
@@ -0,0 +1,67 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/tkpcont2.hxx>
+
+// NOT FULLY DECLARED SERVICES
+
+
+
+TkpNullContex2 G_aNullContex2;
+
+TkpNullContex2 &
+TkpContext_Null2_()
+{
+ return G_aNullContex2;
+}
+
+TkpNullContex2::~TkpNullContex2()
+{
+}
+
+void
+TkpNullContex2::ReadCharChain( CharacterSource & )
+{
+}
+
+bool
+TkpNullContex2::PassNewToken()
+{
+ return false;
+}
+
+TkpContext &
+TkpNullContex2::FollowUpContext()
+{
+ return *this;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/tokens/tkpstam2.cxx b/autodoc/source/parser_i/tokens/tkpstam2.cxx
new file mode 100644
index 000000000000..90978c10ae2b
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/tkpstam2.cxx
@@ -0,0 +1,177 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tokens/tkpstam2.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <tokens/stmstar2.hxx>
+#include <tools/tkpchars.hxx>
+
+
+const intt C_nStatuslistResizeValue = 32;
+const intt C_nTopStatus = 0;
+
+StateMachin2::StateMachin2( intt in_nStatusSize,
+ intt in_nInitial_StatusListSize )
+ : pStati(new StmStatu2*[in_nInitial_StatusListSize]),
+ nCurrentStatus(C_nTopStatus),
+ nPeekedStatus(C_nTopStatus),
+ nStatusSize(in_nStatusSize),
+ nNrofStati(0),
+ nStatiSpace(in_nInitial_StatusListSize)
+{
+ csv_assert(in_nStatusSize > 0);
+ csv_assert(in_nInitial_StatusListSize > 0);
+
+ memset(pStati, 0, sizeof(StmStatu2*) * nStatiSpace);
+}
+
+intt
+StateMachin2::AddStatus(StmStatu2 * let_dpStatus)
+{
+ if (nNrofStati == nStatiSpace)
+ {
+ ResizeStati();
+ }
+ pStati[nNrofStati] = let_dpStatus;
+ return nNrofStati++;
+}
+
+void
+StateMachin2::AddToken( const char * in_sToken,
+ UINT16 in_nTokenId,
+ const INT16 * in_aBranches,
+ INT16 in_nBoundsStatus )
+{
+ if (csv::no_str(in_sToken))
+ return;
+
+ // Durch existierende Stati durchhangeln:
+ nCurrentStatus = 0;
+ nPeekedStatus = 0;
+
+ for ( const char * pChar = in_sToken;
+ *pChar != NULCH;
+ ++pChar )
+ {
+ Peek(*pChar);
+ StmStatu2 & rPst = Status(nPeekedStatus);
+ if ( rPst.IsADefault() OR rPst.AsBounds() != 0 )
+ {
+ nPeekedStatus = AddStatus( new StmArrayStatu2(nStatusSize, in_aBranches, 0, false ) );
+ CurrentStatus().SetBranch( *pChar, nPeekedStatus );
+ }
+ nCurrentStatus = nPeekedStatus;
+ } // end for
+ StmArrayStatu2 & rLastStatus = CurrentStatus();
+ rLastStatus.SetTokenId(in_nTokenId);
+ for (intt i = 0; i < nStatusSize; i++)
+ {
+ if (Status(rLastStatus.NextBy(i)).AsBounds() != 0)
+ rLastStatus.SetBranch(i,in_nBoundsStatus);
+ } // end for
+}
+
+StateMachin2::~StateMachin2()
+{
+ for (intt i = 0; i < nNrofStati; i++)
+ {
+ delete pStati[i];
+ }
+ delete [] pStati;
+}
+
+StmBoundsStatu2 &
+StateMachin2::GetCharChain( UINT16 & o_nTokenId,
+ CharacterSource & io_rText )
+{
+ nCurrentStatus = C_nTopStatus;
+ Peek(io_rText.CurChar());
+ while (BoundsStatus() == 0)
+ {
+ nCurrentStatus = nPeekedStatus;
+ Peek(io_rText.MoveOn());
+ }
+ o_nTokenId = CurrentStatus().TokenId();
+
+ return *BoundsStatus();
+}
+
+void
+StateMachin2::ResizeStati()
+{
+ intt nNewSize = nStatiSpace + C_nStatuslistResizeValue;
+ intt i = 0;
+ StatusList pNewStati = new StmStatu2*[nNewSize];
+
+ for ( ; i < nNrofStati; i++)
+ {
+ pNewStati[i] = pStati[i];
+ }
+ memset( pNewStati+i,
+ 0,
+ (nNewSize-i) * sizeof(StmStatu2*) );
+
+ delete [] pStati;
+ pStati = pNewStati;
+ nStatiSpace = nNewSize;
+}
+
+StmStatu2 &
+StateMachin2::Status(intt in_nStatusNr) const
+{
+ csv_assert( csv::in_range(intt(0), in_nStatusNr, intt(nNrofStati)) );
+ return *pStati[in_nStatusNr];
+}
+
+StmArrayStatu2 &
+StateMachin2::CurrentStatus() const
+{
+ StmArrayStatu2 * pCurSt = Status(nCurrentStatus).AsArray();
+ if (pCurSt == 0)
+ {
+ csv_assert(false);
+ }
+ return *pCurSt;
+}
+
+StmBoundsStatu2 *
+StateMachin2::BoundsStatus() const
+{
+ return Status(nPeekedStatus).AsBounds();
+}
+
+void
+StateMachin2::Peek(intt in_nBranch)
+{
+ StmArrayStatu2 & rSt = CurrentStatus();
+ nPeekedStatus = rSt.NextBy(in_nBranch);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/parser_i/tokens/x_parse2.cxx b/autodoc/source/parser_i/tokens/x_parse2.cxx
new file mode 100644
index 000000000000..8194985388e0
--- /dev/null
+++ b/autodoc/source/parser_i/tokens/x_parse2.cxx
@@ -0,0 +1,63 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <x_parse2.hxx>
+
+// NOT FULLY DECLARED SERVICES
+
+ enum E_Type
+ {
+ x_Any = 0,
+ x_InvalidChar,
+ x_UnexpectedEOF
+ };
+void
+X_AutodocParser::GetInfo( std::ostream & o_rOutputMedium ) const
+{
+ switch (eType)
+ {
+ case x_Any:
+ o_rOutputMedium << "Unspecified parsing exception ." << Endl();
+ break;
+ case x_InvalidChar:
+ o_rOutputMedium << "Unknown character during parsing." << Endl();
+ break;
+ case x_UnexpectedToken:
+ o_rOutputMedium << "Unexpected token " << sName << " found." << Endl();
+ break;
+ case x_UnexpectedEOF:
+ o_rOutputMedium << "Unexpected end of file found." << Endl();
+ break;
+ default:
+ o_rOutputMedium << "Unknown exception during parsing." << Endl();
+ }
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/tools/filecoll.cxx b/autodoc/source/tools/filecoll.cxx
new file mode 100644
index 000000000000..0e0a8ba5962b
--- /dev/null
+++ b/autodoc/source/tools/filecoll.cxx
@@ -0,0 +1,134 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tools/filecoll.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/ploc_dir.hxx>
+
+#include <stdio.h>
+
+
+FileCollector::FileCollector( uintt i_nRoughNrOfFiles )
+ // : aFoundFiles
+{
+ if (i_nRoughNrOfFiles > 0)
+ aFoundFiles.reserve(i_nRoughNrOfFiles);
+}
+
+uintt
+FileCollector::AddFilesFrom( const char * i_sRootDir,
+ const char * i_sFilter,
+ E_SearchMode i_eSearchMode )
+{
+ uintt nSizeAtStart = aFoundFiles.size();
+
+ if (csv::no_str(i_sFilter) OR csv::no_str(i_sRootDir))
+ {
+ Cout() << "Warning: The filter contains no files." << Endl();
+ return 0;
+ }
+
+ csv::ploc::Directory aDir(i_sRootDir);
+ if (NOT aDir.Exists())
+ {
+ Cerr() << "Warning: The path for the files to be parsed could not be found:\n"
+ << i_sRootDir
+ << Endl();
+ return 0;
+ }
+
+ Cout() << "." << Flush();
+ aDir.GetContainedFiles(aFoundFiles, i_sFilter);
+
+ if (i_eSearchMode == recursive)
+ {
+ StreamStr aPath(1020);
+ aPath << i_sRootDir << csv::ploc::Delimiter();
+ uintt nSubDirStart = aPath.tellp();
+
+ StringVector aSubDirs;
+ aDir.GetContainedDirectories(aSubDirs);
+
+ for ( const_iterator iter = aSubDirs.begin();
+ iter != aSubDirs.end();
+ ++iter )
+ {
+ aPath.seekp(nSubDirStart);
+ aPath << (*iter);
+ AddFilesFrom( aPath.c_str(), i_sFilter, i_eSearchMode );
+ }
+ }
+
+ return aFoundFiles.size() - nSizeAtStart;
+}
+
+uintt
+FileCollector::AddFile( const char * i_sFilePath )
+{
+ FILE * pFile = fopen( i_sFilePath, "r" );
+ if ( pFile == 0 )
+ {
+ Cerr() << "Warning: The path for the file to be parsed could not be found:\n"
+ << i_sFilePath
+ << Endl();
+ return 0;
+ }
+
+ fclose(pFile);
+ aFoundFiles.push_back(i_sFilePath);
+ return 1;
+}
+
+void
+FileCollector::EraseAll()
+{
+ csv::erase_container(aFoundFiles);
+}
+
+FileCollector::const_iterator
+FileCollector::Begin() const
+{
+ return aFoundFiles.begin();
+}
+
+FileCollector::const_iterator
+FileCollector::End() const
+{
+ return aFoundFiles.end();
+}
+
+uintt
+FileCollector::Size() const
+{
+ return aFoundFiles.size();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/tools/makefile.mk b/autodoc/source/tools/makefile.mk
new file mode 100644
index 000000000000..31d48edc0898
--- /dev/null
+++ b/autodoc/source/tools/makefile.mk
@@ -0,0 +1,58 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=autodoc
+TARGET=autodoc_tools
+TARGETTYPE=CUI
+
+
+# --- Settings -----------------------------------------------------
+
+ENABLE_EXCEPTIONS=true
+PRJINC=$(PRJ)$/source
+
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk
+
+
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= \
+ $(OBJ)$/filecoll.obj \
+ $(OBJ)$/tkpchars.obj
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+
diff --git a/autodoc/source/tools/tkpchars.cxx b/autodoc/source/tools/tkpchars.cxx
new file mode 100644
index 000000000000..25210acfa6f7
--- /dev/null
+++ b/autodoc/source/tools/tkpchars.cxx
@@ -0,0 +1,161 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <tools/tkpchars.hxx>
+
+// NOT FULLY DECLARED SERVICES
+#include <cosv/bstream.hxx>
+#include <cosv/x.hxx>
+
+
+
+CharacterSource::CharacterSource()
+ : dpSource(new char[2]),
+ nSourceSize(0),
+ nCurPos(0),
+ nLastCut(0),
+ nLastTokenStart(0),
+ cCharAtLastCut(0)
+{
+ dpSource[nSourceSize] = NULCH;
+ dpSource[nSourceSize+1] = NULCH;
+}
+
+CharacterSource::~CharacterSource()
+{
+ delete [] dpSource;
+}
+
+void
+CharacterSource::LoadText(csv::bstream & io_rSource)
+{
+ if (dpSource != 0)
+ delete [] dpSource;
+
+ io_rSource.seek(0, csv::end);
+ nSourceSize = intt(io_rSource.position());
+ io_rSource.seek(0);
+
+ dpSource = new char[nSourceSize+1];
+
+ intt nCount = (intt) io_rSource.read(dpSource,nSourceSize);
+ if (nCount != nSourceSize)
+ throw csv::X_Default("IO-Error: Could not load file completely.");
+
+ dpSource[nSourceSize] = NULCH;
+
+ BeginSource();
+}
+
+/// KORR_FUTURE: So far, this works only when tokens do not cross inserted text boundaries.
+void
+CharacterSource::InsertTextAtCurPos( const char * i_sText2Insert )
+{
+ if ( i_sText2Insert == 0 ? true : strlen(i_sText2Insert) == 0 )
+ return;
+
+ aSourcesStack.push( S_SourceState(
+ dpSource,
+ nSourceSize,
+ nCurPos,
+ nLastCut,
+ nLastTokenStart,
+ cCharAtLastCut ) );
+
+ nSourceSize = strlen(i_sText2Insert);
+ dpSource = new char[nSourceSize+1];
+ strcpy( dpSource, i_sText2Insert); // SAFE STRCPY (#100211# - checked)
+
+ BeginSource();
+}
+
+const char *
+CharacterSource::CutToken()
+{
+ dpSource[nLastCut] = cCharAtLastCut;
+ nLastTokenStart = nLastCut;
+ nLastCut = CurPos();
+ cCharAtLastCut = dpSource[nLastCut];
+ dpSource[nLastCut] = NULCH;
+
+ return &dpSource[nLastTokenStart];
+}
+
+void
+CharacterSource::BeginSource()
+{
+ nCurPos = 0;
+ nLastCut = 0;
+ nLastTokenStart = 0;
+ cCharAtLastCut = dpSource[nLastCut];
+ dpSource[nLastCut] = NULCH;
+}
+
+// KORR_FUTURE: So far, this works only when tokens do not cross inserted text boundaries.
+char
+CharacterSource::MoveOn_OverStack()
+{
+ while ( aSourcesStack.size() > 0 AND nCurPos >= nSourceSize-1 )
+ {
+ S_SourceState & aState = aSourcesStack.top();
+ delete [] dpSource;
+
+ dpSource = aState.dpSource;
+ nSourceSize = aState.nSourceSize;
+ nCurPos = aState.nCurPos;
+ nLastCut = aState.nLastCut;
+ nLastTokenStart = aState.nLastTokenStart;
+ cCharAtLastCut = aState.cCharAtLastCut;
+
+ aSourcesStack.pop();
+ }
+
+ if ( nLastCut < nCurPos )
+ CutToken();
+
+ return CurChar();
+}
+
+CharacterSource::
+S_SourceState::S_SourceState( DYN char * dpSource_,
+ intt nSourceSize_,
+ intt nCurPos_,
+ intt nLastCut_,
+ intt nLastTokenStart_,
+ char cCharAtLastCut_ )
+ : dpSource(dpSource_),
+ nSourceSize(nSourceSize_),
+ nCurPos(nCurPos_),
+ nLastCut(nLastCut_),
+ nLastTokenStart(nLastTokenStart_),
+ cCharAtLastCut(cCharAtLastCut_)
+{
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 000000000000..defc542c41e9
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+if test "z$1" = "z--clean"; then
+ echo "Cleaning"
+
+ rm -Rf autom4te.cache
+ rm -f missing install-sh mkinstalldirs libtool ltmain.sh
+ exit 1;
+fi
+
+requote_args ()
+{
+ sed -r -e 's/.*configure //' -e 's/(["'"'"'])/\\\1/g' -e 's/=(([^"'"'"'-]|-[^-]| )*)( |$)/="\1" /g'
+}
+
+old_args=""
+if test $# -eq 0 && test -f config.log; then
+ old_args=`grep '\$ ./configure' config.log | requote_args`
+ echo "re-using arguments from last configure: $old_args";
+fi
+
+touch ChangeLog
+
+aclocal $ACLOCAL_FLAGS || exit 1;
+#automake --gnu --add-missing --copy || exit 1;
+#intltoolize --copy --force --automake
+autoconf || exit 1;
+if test "x$NOCONFIGURE" = "x"; then
+ if test -n "$old_args" ; then
+ eval `echo ./configure $old_args`
+ else
+ ./configure "$@"
+ fi
+else
+ echo "Skipping configure process."
+fi
diff --git a/automation/inc/automation/automation.hxx b/automation/inc/automation/automation.hxx
new file mode 100644
index 000000000000..aaf54e24d564
--- /dev/null
+++ b/automation/inc/automation/automation.hxx
@@ -0,0 +1,55 @@
+/* -*- 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 AUTOMATION_HXX
+#define AUTOMATION_HXX
+
+class ImplRemoteControl;
+
+class RemoteControl
+{
+ ImplRemoteControl* pImpl;
+public:
+ RemoteControl();
+ ~RemoteControl();
+};
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ typedef void ( *pfunc_CreateRemoteControl)();
+ typedef void ( *pfunc_DestroyRemoteControl)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // AUTOMATION_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/inc/automation/commdefines.hxx b/automation/inc/automation/commdefines.hxx
new file mode 100644
index 000000000000..15e38a8ff897
--- /dev/null
+++ b/automation/inc/automation/commdefines.hxx
@@ -0,0 +1,150 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+
+#include <automation/commtypes.hxx>
+#include <osl/endian.h>
+
+#ifndef MAKEDWORD
+#define MAKEDWORD(wl, wh) ((comm_DWORD)((wl) & 0xFFFF) | (((comm_DWORD)(wh) & 0xFFFF) << 16))
+#endif
+#ifndef LOWORD
+#define LOWORD(d) ((comm_WORD)((comm_DWORD)(d) & 0xFFFF))
+#endif
+#ifndef HIWORD
+#define HIWORD(d) ((comm_WORD)(((comm_DWORD)(d) >> 16) & 0xFFFF))
+#endif
+#ifndef MAKEWORD
+#define MAKEWORD(bl, bh) ((comm_WORD)((bl) & 0xFF) | (((comm_WORD)(bh) & 0xFF) << 8))
+#endif
+#ifndef LOBYTE
+#define LOBYTE(w) ((comm_BYTE)((comm_WORD)(w) & 0xFF))
+#endif
+#ifndef HIBYTE
+#define HIBYTE(w) ((comm_BYTE)(((comm_WORD)(w) >> 8) & 0xFF))
+#endif
+#ifndef MAKEBYTE
+#define MAKEBYTE(nl, nh) ((comm_BYTE)(((nl) & 0x0F) | (((nh) & 0x0F) << 4)))
+#endif
+#ifndef LONIBBLE
+#define LONIBBLE(b) ((comm_BYTE)((b) & 0x0F))
+#endif
+#ifndef HINIBBLE
+#define HINIBBLE(b) ((comm_BYTE)(((b) >> 4) & 0x0F))
+#endif
+
+#ifndef SWAPWORD
+#define SWAPWORD(w) MAKEWORD(HIBYTE(w),LOBYTE(w))
+#endif
+#ifndef SWAPDWORD
+#define SWAPDWORD(d) MAKEDWORD(SWAPWORD(HIWORD(d)),SWAPWORD(LOWORD(d)))
+#endif
+
+#ifdef OSL_BIGENDIAN
+#ifndef NETWORD
+#define NETWORD(w) (comm_WORD)(w)
+#endif
+#ifndef NETDWORD
+#define NETDWORD(d) (comm_DWORD)(d)
+#endif
+#endif // OSL_BIGENDIAN
+
+#ifdef OSL_LITENDIAN
+#ifndef NETWORD
+#define NETWORD(w) MAKEWORD(HIBYTE(w),LOBYTE(w))
+#endif
+#ifndef NETDWORD
+#define NETDWORD(d) MAKEDWORD(NETWORD(HIWORD(d)),NETWORD(LOWORD(d)))
+#endif
+#endif // OSL_LITENDIAN
+
+/**
+ Es gibt zwei arten von Datenpaketen
+ die erste enthält in den ersten 4 Byte die Längenangabe und in den Darauffolgenden die Daten
+ Die Längenangabe bezieht sich nur auf die Daten ohne die Längenangabe selbst.
+
+ Die Zweite Art von Datenpaketen enthält Header mit weitere Informationen
+ wie unten beschrieben.
+
+ Umgeschaltet wird mit dem Boolean bUseMultiChannel im Konstruktor des Managers.
+**/
+/**
+Defines für Header Typen:
+
+Allgemeiner Header:
+ Byte Länge Inhalt
+ 0..3 4 Länge des Paketes ohne diese 4 Byte
+ 4 1 Prüfsumme über die Länge. Stimmt sie nicht wird die Verbindung geschlossen
+ 5..6 2 Länge des Headers ohne diese 2 Byte
+ 7..8 2 Typ des Headers
+
+CH_SimpleMultiChannel:
+ 9..10 2 Channel
+CH_Handshake Internal Use ONLY
+ Keine Weiteren Daten!
+
+**/
+typedef comm_UINT16 CMProtocol;
+
+#define CM_PROTOCOL_OLDSTYLE (CMProtocol)0x0001
+#define CM_PROTOCOL_MARS (CMProtocol)0x0001
+#define CM_PROTOCOL_BROADCASTER (CMProtocol)0x0002
+#define CM_PROTOCOL_USER_START (CMProtocol)0x0100
+
+typedef comm_USHORT HandshakeType;
+typedef comm_USHORT CommunicationOption;
+
+#define CH_NoHeader 0x0000
+#define CH_SimpleMultiChannel 0x0001
+#define CH_Handshake 0x0002
+
+#define CH_REQUEST_HandshakeAlive ((HandshakeType)0x0101) /// Fordert eine Alive Antwort an
+#define CH_RESPONSE_HandshakeAlive ((HandshakeType)0x0102) /// Alive Antwort
+
+/**
+ Announce supported options:
+ Client announces available options
+ Server returns subset of these options (note that the sbset can be the entire set also)
+**/
+#define CH_SUPPORT_OPTIONS ((HandshakeType)0x0103)
+#define OPT_USE_SHUTDOWN_PROTOCOL ((CommunicationOption)0x0001)
+
+/// these are for making sure all Data is read prior to shutting sown the link
+#define CH_REQUEST_ShutdownLink ((HandshakeType)0x0104) /// Request to Shutdown this link
+#define CH_ShutdownLink ((HandshakeType)0x0105) /// Shutdown this link
+
+#define CH_SetApplication ((HandshakeType)0x0106) /// Set Description of Client
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/inc/automation/commtypes.hxx b/automation/inc/automation/commtypes.hxx
new file mode 100644
index 000000000000..1dc7f4383559
--- /dev/null
+++ b/automation/inc/automation/commtypes.hxx
@@ -0,0 +1,103 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to supply the types and defines for Environment independent
+ * building of the packethandler
+ * Only adaption of this file should be necessary. Else it is a bug!
+ * Eather including apropriate files or defining the types when not available in the environment
+ *
+ ************************************************************************/
+
+/** defines al least types
+ comm_BYTE
+ comm_WORD;
+ comm_DWORD;
+ comm_BOOL
+ comm_ULONG
+ comm_USHORT
+ comm_UINT16
+ comm_UINT32
+ comm_UniChar
+**/
+
+#ifndef _COMMTYPES_HXX
+#define _COMMTYPES_HXX
+
+#include <sal/types.h>
+typedef sal_Unicode comm_UniChar;
+
+// this is a trick to be sure the SO types are unknown, so the compiler will yell at us in case we use them
+#ifndef _SOLAR_H
+#define NO_SOLAR
+#endif
+
+#ifdef NO_SOLAR
+#define BYTE BYTE_hidden
+#define BOOL BOOL_hidden
+#define ULONG ULONG_hidden
+#define USHORT USHORT_hidden
+#define UINT16 UINT16_hidden
+#define UINT32 UINT32_hidden
+
+#endif
+
+//#define DBG_ASSERT( cond, text )
+//#define DBG_ERROR( text )
+#include <tools/debug.hxx>
+
+#include <tools/solar.h>
+typedef BYTE comm_BYTE;
+typedef BOOL comm_BOOL;
+typedef sal_uInt32 comm_ULONG;
+typedef sal_uInt16 comm_USHORT;
+typedef UINT16 comm_UINT16;
+typedef UINT32 comm_UINT32;
+
+#ifdef NO_SOLAR
+#undef BYTE
+#undef BOOL
+#undef ULONG
+#undef USHORT
+#undef UINT16
+#undef UINT32
+
+#endif
+
+typedef sal_uInt16 comm_WORD;
+typedef sal_uInt32 comm_DWORD;
+
+class SmartId;
+class String;
+#define comm_String String
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/inc/automation/communi.hxx b/automation/inc/automation/communi.hxx
new file mode 100644
index 000000000000..5f873f5b393f
--- /dev/null
+++ b/automation/inc/automation/communi.hxx
@@ -0,0 +1,183 @@
+/* -*- 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 _COMMUNI_HXX
+#define _COMMUNI_HXX
+
+#include <svl/svarray.hxx>
+#include <osl/thread.hxx>
+#include <osl/mutex.hxx>
+#include <vcl/timer.hxx>
+#include <automation/simplecm.hxx>
+
+class SvStream;
+class SvMemoryStream;
+//class Application;
+
+class CommunicationManagerServerAcceptThread;
+SV_DECL_PTRARR_SORT( CommunicationLinkList, CommunicationLink*, 1, 10 )
+
+class MultiCommunicationManager : public CommunicationManager
+{
+public:
+ MultiCommunicationManager( BOOL bUseMultiChannel = FALSE );
+ virtual ~MultiCommunicationManager();
+ virtual BOOL StopCommunication(); // Hält alle CommunicationLinks an
+ virtual BOOL IsLinkValid( CommunicationLink* pCL );
+ virtual USHORT GetCommunicationLinkCount();
+ virtual CommunicationLinkRef GetCommunicationLink( USHORT nNr );
+
+ void DoQuickShutdown( BOOL bQuickShutdown = TRUE) { bGracefullShutdown = !bQuickShutdown; }
+
+protected:
+ virtual void CallConnectionOpened( CommunicationLink* pCL );
+ virtual void CallConnectionClosed( CommunicationLink* pCL );
+ CommunicationLinkList *ActiveLinks;
+ CommunicationLinkList *InactiveLinks; /// Hier sind die CommunicationLinks drin, die sich noch nicht selbst abgemeldet haben.
+ /// allerdings schon ein StopCommunication gekriegt haben, bzw ein ConnectionTerminated
+ virtual void DestroyingLink( CommunicationLink *pCL ); // Link trägt sich im Destruktor aus
+
+ BOOL bGracefullShutdown;
+};
+
+class CommunicationManagerServer : public MultiCommunicationManager
+{
+public:
+ CommunicationManagerServer( BOOL bUseMultiChannel = FALSE ):MultiCommunicationManager( bUseMultiChannel ){;}
+};
+
+class CommunicationManagerClient : public MultiCommunicationManager, public ICommunicationManagerClient
+{
+public:
+ CommunicationManagerClient( BOOL bUseMultiChannel = FALSE );
+};
+
+class CommunicationLinkViaSocket : public SimpleCommunicationLinkViaSocket, public osl::Thread
+{
+public:
+ CommunicationLinkViaSocket( CommunicationManager *pMan, osl::StreamSocket* pSocket );
+ virtual ~CommunicationLinkViaSocket();
+
+ virtual BOOL IsCommunicationError();
+ virtual BOOL DoTransferDataStream( SvStream *pDataStream, CMProtocol nProtocol = CM_PROTOCOL_OLDSTYLE );
+
+ // Diese sind Virtuelle Links!!!!
+ virtual long ConnectionClosed( void* = NULL );
+ virtual long DataReceived( void* = NULL );
+
+ virtual BOOL StopCommunication();
+
+ void SetPutDataReceivedHdl( Link lPutDataReceived ){ mlPutDataReceived = lPutDataReceived; }
+ Link GetDataReceivedLink () {Link aLink = LINK( this, CommunicationLinkViaSocket, DataReceived ); return aLink;}
+ DECL_LINK( PutDataReceivedHdl, CommunicationLinkViaSocket* );
+
+protected:
+ virtual void SAL_CALL run();
+
+ virtual BOOL ShutdownCommunication();
+ ULONG nConnectionClosedEventId;
+ ULONG nDataReceivedEventId;
+ osl::Mutex aMConnectionClosed; // Notwendig, da Event verarbeitet werden kann bevor Variable gesetzt ist
+ osl::Mutex aMDataReceived; // Notwendig, da Event verarbeitet werden kann bevor Variable gesetzt ist
+ virtual void WaitForShutdown();
+
+ DECL_LINK( ShutdownLink, void* );
+ Timer aShutdownTimer;
+ BOOL bShutdownStarted;
+ BOOL bDestroying;
+ Link mlPutDataReceived;
+};
+
+class CommunicationManagerServerViaSocket : public CommunicationManagerServer
+{
+ friend class CommunicationManagerServerAcceptThread;
+public:
+ using CommunicationManager::StartCommunication;
+
+ CommunicationManagerServerViaSocket( ULONG nPort, USHORT nMaxCon, BOOL bUseMultiChannel = FALSE );
+ virtual ~CommunicationManagerServerViaSocket();
+
+ virtual BOOL StartCommunication();
+ virtual BOOL StopCommunication();
+
+protected:
+ ULONG nPortToListen;
+ USHORT nMaxConnections;
+
+private:
+ CommunicationManagerServerAcceptThread *pAcceptThread;
+ void AddConnection( CommunicationLink *pNewConnection );
+};
+
+class CommunicationManagerServerAcceptThread: public osl::Thread
+{
+public:
+ CommunicationManagerServerAcceptThread( CommunicationManagerServerViaSocket* pServer, ULONG nPort, USHORT nMaxCon = CM_UNLIMITED_CONNECTIONS );
+ virtual ~CommunicationManagerServerAcceptThread();
+ CommunicationLinkRef GetNewConnection(){ CommunicationLinkRef xTemp = xmNewConnection; xmNewConnection.Clear(); return xTemp; }
+
+protected:
+ virtual void SAL_CALL run();
+
+private:
+ CommunicationManagerServerViaSocket* pMyServer;
+ osl::AcceptorSocket* pAcceptorSocket;
+ ULONG nPortToListen;
+ USHORT nMaxConnections;
+ ULONG nAddConnectionEventId;
+ osl::Mutex aMAddConnection; // Notwendig, da Event verarbeitet werden kann bevor Variable gesetzt ist
+ void CallInfoMsg( InfoString aMsg ){ pMyServer->CallInfoMsg( aMsg ); }
+ CM_InfoType GetInfoType(){ return pMyServer->GetInfoType(); }
+
+ // Diese beiden werden zum Transport der Connection vom Thread zum Mainthread verwendet.
+ CommunicationLinkRef xmNewConnection;
+ DECL_LINK( AddConnection, void* );
+};
+
+class CommunicationManagerClientViaSocket : public CommunicationManagerClient, CommonSocketFunctions
+{
+public:
+ using CommunicationManager::StartCommunication;
+
+ CommunicationManagerClientViaSocket( ByteString aHost, ULONG nPort, BOOL bUseMultiChannel = FALSE );
+ CommunicationManagerClientViaSocket( BOOL bUseMultiChannel = FALSE );
+ virtual ~CommunicationManagerClientViaSocket();
+
+ virtual BOOL StartCommunication(){ return StartCommunication( aHostToTalk, nPortToTalk );}
+ virtual BOOL StartCommunication( ByteString aHost, ULONG nPort ){ return DoStartCommunication( this, (ICommunicationManagerClient*) this, aHost, nPort );}
+
+private:
+ ByteString aHostToTalk;
+ ULONG nPortToTalk;
+protected:
+ virtual CommunicationLink *CreateCommunicationLink( CommunicationManager *pCM, osl::ConnectorSocket* pCS ){ return new CommunicationLinkViaSocket( pCM, pCS ); }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/inc/automation/simplecm.hxx b/automation/inc/automation/simplecm.hxx
new file mode 100644
index 000000000000..91a44f17f639
--- /dev/null
+++ b/automation/inc/automation/simplecm.hxx
@@ -0,0 +1,396 @@
+/* -*- 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 _SIMPLECM_HXX
+#define _SIMPLECM_HXX
+
+#include <tools/link.hxx>
+#include <tools/string.hxx>
+#include <tools/stream.hxx>
+#include <osl/socket.hxx>
+#include <tools/debug.hxx>
+#include <tools/datetime.hxx>
+
+#include <automation/commdefines.hxx>
+
+// CM steht für CommunicationManager
+#define CM_UNLIMITED_CONNECTIONS 0xffff
+
+typedef USHORT CM_NameType;
+#define CM_DOTTED ( (CM_NameType) 01 )
+#define CM_FQDN ( (CM_NameType) 02 )
+
+typedef USHORT CM_InfoType;
+// nur eines dieser 3 defines darf verwendet werden
+#define CM_NO_TEXT ( (CM_InfoType) 01 )
+#define CM_SHORT_TEXT ( (CM_InfoType) 02 )
+#define CM_VERBOSE_TEXT ( (CM_InfoType) 03 )
+
+#define CM_OPEN ( (CM_InfoType) 0x0004 )
+#define CM_CLOSE ( (CM_InfoType) 0x0008 )
+#define CM_RECEIVE ( (CM_InfoType) 0x0010 )
+#define CM_SEND ( (CM_InfoType) 0x0020 )
+#define CM_ERROR ( (CM_InfoType) 0x0040 )
+#define CM_MISC ( (CM_InfoType) 0x0080 )
+
+#define CM_USER_1 ( (CM_InfoType) 0x0100 )
+#define CM_USER_2 ( (CM_InfoType) 0x0200 )
+#define CM_USER_3 ( (CM_InfoType) 0x0400 )
+#define CM_USER_4 ( (CM_InfoType) 0x0800 )
+
+#define CM_ALL ( CM_OPEN | CM_CLOSE | CM_RECEIVE | CM_SEND | CM_ERROR | CM_MISC )
+#define CM_NONE ( 0 )
+
+#define CByteString( constAsciiStr ) ByteString( RTL_CONSTASCII_STRINGPARAM ( constAsciiStr ) )
+
+#define INFO_MSG( Short, Long, Type, CLink ) \
+{ \
+ if ( (Type & GetInfoType()) > 0 ) \
+ { \
+ switch ( GetInfoType() & 03 ) \
+ { \
+ case CM_NO_TEXT: \
+ { \
+ ByteString aByteString; \
+ CallInfoMsg( InfoString( aByteString, Type, CLink ) ); \
+ } \
+ break; \
+ case CM_SHORT_TEXT: \
+ { \
+ ByteString aByteString( Short ); \
+ CallInfoMsg( InfoString( aByteString, Type, CLink ) ); \
+ } \
+ break; \
+ case CM_VERBOSE_TEXT: \
+ { \
+ ByteString aByteString( Long ); \
+ CallInfoMsg( InfoString( aByteString, Type, CLink ) ); \
+ } \
+ break; \
+ default: \
+ break; \
+ } \
+ } \
+}\
+
+class CommunicationLink;
+
+/*#undef PRV_SV_DECL_REF_LOCK
+#define PRV_SV_DECL_REF_LOCK(ClassName, Ref) \
+protected: \
+ ClassName * pObj; \
+public: \
+PRV_SV_DECL_REF_SIGNATURE(ClassName, Ref) \
+ inline ClassName##Ref( void * pObjP ){ClassName##Ref ((ClassName *) pObjP);} \
+*/
+
+SV_DECL_REF( CommunicationLink )
+
+class InfoString : public ByteString
+{
+public:
+ InfoString( ByteString &nMsg, CM_InfoType nIT, CommunicationLink *pCL = NULL ): ByteString( nMsg ), nInfoType( nIT ), pCommLink( pCL ) {;}
+ CM_InfoType GetInfoType(){ return nInfoType; }
+ CommunicationLinkRef GetCommunicationLink(){ return pCommLink; }
+private:
+ CM_InfoType nInfoType;
+ CommunicationLinkRef pCommLink;
+};
+
+class PacketHandler;
+class CommunicationManager;
+class SingleCommunicationManager;
+class MultiCommunicationManager;
+class CommunicationManagerServerAcceptThread;
+class CommunicationLink : public SvRefBase
+{
+protected:
+ friend class CommunicationManager;
+ friend class SingleCommunicationManager;
+ friend class MultiCommunicationManager;
+ friend class CommunicationManagerServerAcceptThread;
+ // Darf nicht abgeräumt werden zwischen Empfang des Streams und ende des Callbacks
+
+protected: // so daß nur über Ref gelöscht werden kann
+ virtual ~CommunicationLink();
+ void InvalidateManager() { pMyManager = NULL; }
+
+ PacketHandler* pPacketHandler;
+
+public:
+ CommunicationLink( CommunicationManager *pMan );
+
+ virtual BOOL StopCommunication()=0;
+ virtual BOOL IsCommunicationError()=0;
+ CommunicationManager* GetCommunicationManager(){ return pMyManager; }
+
+// Der Name oder die IP-Adresse oder sonstwas um den Communikationspartner zu identifizieren
+ virtual ByteString GetCommunicationPartner( CM_NameType eType )=0;
+
+// Der Name oder die IP-Adresse oder sonstwas um den Communikationspartner zu identifizieren
+ virtual ByteString GetMyName( CM_NameType eType )=0;
+
+// Liefert einen neuen Stream zum Versenden von Daten.
+ virtual SvStream* GetBestCommunicationStream()=0;
+
+ /** will call virtual function DoTransferDataStream to do actual work
+ Purpos is to allow housekeeping
+ **/
+ BOOL TransferDataStream( SvStream *pDataStream, CMProtocol nProtocol = CM_PROTOCOL_OLDSTYLE );
+
+ // Liefert die ID, die vom Sender angegeben wurde.
+ // Dadurch lassen sich virtuelle Kommunikationen über einen physikalischen Link realisiren.
+ // Da die Kommunikation zu älteren Versionen kompatibel bleiben muß, muß der Empfänger raten,
+ // die neue oder die alte verwendet wird, da sich der Kopf eines Auftrages dann ändert.
+ UINT16 GetProtocol(){ return nServiceProtocol; }
+
+ // Der Stream wird hier übergeben. Der Aufrufer ist für dessen Löschung zuständig
+ // Die Methode MUSS gerufen werden, da sonst keine weiteren Daten empfangen werden.
+ SvStream* GetServiceData(){ SvStream *pTemp = pServiceData; pServiceData = NULL; return pTemp; }
+
+ /// Ermöglicht das Auslösen des nächsten Callbacks. Wird auch Implizit gerufen.
+ void FinishCallback(){ bIsInsideCallback = FALSE; }
+
+ /// Syncrones Empfangen der Daten. Nur für Kommandozeile, sonst leer implementiert
+ virtual BOOL ReceiveDataStream(){ return FALSE; }
+
+ /// Statistics
+ DateTime GetStart() { return aStart; }
+ ULONG GetTotalBytes() { return nTotalBytes; }
+ DateTime GetLastAccess() { return aLastAccess; }
+ const ByteString& GetApplication() { return maApplication; }
+ virtual void SetApplication( const ByteString& aApp );
+
+protected:
+ void CallInfoMsg( InfoString aMsg );
+ CM_InfoType GetInfoType();
+ CommunicationManager *pMyManager;
+// Diese Methoden werden im Main Kontext gerufen und an den Manager weitergereicht.
+ virtual DECL_LINK( ConnectionClosed, void* = NULL );
+ virtual DECL_LINK( DataReceived, void* = NULL );
+
+ virtual BOOL DoTransferDataStream( SvStream *pDataStream, CMProtocol nProtocol = CM_PROTOCOL_OLDSTYLE );
+
+ SvStream *pServiceData;
+ UINT16 nServiceProtocol;
+ UINT16 nServiceHeaderType;
+
+ /// Verhindert das vorzeitige Auslösen des nächsten Callbacks.
+ void StartCallback(){ bIsInsideCallback = TRUE; }
+ BOOL bIsInsideCallback;
+
+ virtual BOOL SendHandshake( HandshakeType aHandshakeType, SvStream* pData = NULL)=0;
+
+ virtual BOOL ShutdownCommunication() = 0; /// Really stop the Communication
+
+ /// Statistics
+ DateTime aStart;
+ ULONG nTotalBytes;
+ DateTime aLastAccess;
+
+private:
+ ByteString maApplication;
+
+#if OSL_DEBUG_LEVEL > 1
+public:
+ // misc (debuging) purposes
+ BOOL bFlag;
+ ULONG nSomething;
+#endif
+
+};
+
+SV_IMPL_REF( CommunicationLink );
+
+class CommonSocketFunctions;
+class CommunicationManager
+{
+ friend class CommunicationLink;
+ friend class CommonSocketFunctions;
+public:
+ CommunicationManager( BOOL bUseMultiChannel = FALSE );
+ virtual ~CommunicationManager();
+
+ virtual BOOL StartCommunication()=0;
+ virtual BOOL StartCommunication( String aApp, String aParams );
+ virtual BOOL StartCommunication( ByteString aHost, ULONG nPort );
+ virtual BOOL StopCommunication()=0; // Hält alle CommunicationLinks an
+ virtual BOOL IsCommunicationRunning() { return bIsCommunicationRunning; }
+// virtual BOOL IsCommunicationError();
+
+// Der Name oder die IP-Adresse oder sonstwas um den Communikationspartner zu identifizieren
+ virtual ByteString GetMyName( CM_NameType eType );
+
+ virtual BOOL IsLinkValid( CommunicationLink* pCL )=0; // Notwendig für call im Destruktor
+
+ virtual USHORT GetCommunicationLinkCount()=0;
+ virtual CommunicationLinkRef GetCommunicationLink( USHORT nNr )=0;
+
+ // Liefert den letzten neuen Link oder NULL wenn dieser schon wieder geschlossen ist.
+ CommunicationLinkRef GetLastNewLink() { return xLastNewLink; }
+
+ void SetConnectionOpenedHdl( Link lConnectionOpened ){ mlConnectionOpened = lConnectionOpened; }
+ void SetConnectionClosedHdl( Link lConnectionClosed ){ mlConnectionClosed = lConnectionClosed; }
+ void SetDataReceivedHdl( Link lDataReceived ){ mlDataReceived = lDataReceived; }
+ void SetInfoMsgHdl( Link lInfoMsg ){ mlInfoMsg = lInfoMsg; }
+
+ void SetInfoType( CM_InfoType nIT ){ nInfoType = nIT; }
+ CM_InfoType GetInfoType(){ return nInfoType; }
+
+ BOOL IsMultiChannel(){ return bIsMultiChannel; }
+ void SetApplication( const ByteString& aApp, BOOL bRunningLinks = FALSE );
+ const ByteString& GetApplication() { return maApplication; }
+
+protected:
+ // Diese Methoden werden innerhalb gerufen. Sie erledigen eventuelles Housekeeping
+ // und rufen dann die entsprechende Methode
+ virtual void CallConnectionOpened( CommunicationLink* pCL );
+ virtual void CallConnectionClosed( CommunicationLink* pCL );
+ void CallDataReceived( CommunicationLink* pCL );
+ void CallInfoMsg( InfoString aMsg );
+
+ CM_InfoType nInfoType;
+
+ // Diese Routinen rufen den Link oder sind überladen
+ virtual void ConnectionOpened( CommunicationLink* pCL ){ mlConnectionOpened.Call( pCL ); }
+ virtual void ConnectionClosed( CommunicationLink* pCL ){ mlConnectionClosed.Call( pCL ); }
+ virtual void DataReceived( CommunicationLink* pCL ){ mlDataReceived.Call( pCL ); }
+ virtual void InfoMsg( InfoString aMsg ){ mlInfoMsg.Call( &aMsg ); }
+
+ BOOL bIsCommunicationRunning;
+
+ virtual void DestroyingLink( CommunicationLink *pCL )=0; // Link trägt sich im Destruktor aus
+
+private:
+ ByteString maApplication;
+ Link mlConnectionOpened;
+ Link mlConnectionClosed;
+ Link mlDataReceived;
+ Link mlInfoMsg;
+ CommunicationLinkRef xLastNewLink;
+
+ BOOL bIsMultiChannel;
+};
+
+class SingleCommunicationManager : public CommunicationManager
+{
+public:
+ SingleCommunicationManager( BOOL bUseMultiChannel = FALSE );
+ virtual ~SingleCommunicationManager();
+ virtual BOOL StopCommunication(); // Hält alle CommunicationLinks an
+ virtual BOOL IsLinkValid( CommunicationLink* pCL );
+ virtual USHORT GetCommunicationLinkCount();
+ virtual CommunicationLinkRef GetCommunicationLink( USHORT nNr );
+
+protected:
+ virtual void CallConnectionOpened( CommunicationLink* pCL );
+ virtual void CallConnectionClosed( CommunicationLink* pCL );
+ CommunicationLinkRef xActiveLink;
+ CommunicationLink *pInactiveLink;
+ virtual void DestroyingLink( CommunicationLink *pCL ); // Link trägt sich im Destruktor aus
+};
+
+class ICommunicationManagerClient
+{
+ friend class CommonSocketFunctions;
+protected:
+ virtual BOOL RetryConnect() { return FALSE; } // Kann dann eventuell die Applikation starten
+};
+
+class TCPIO;
+class SimpleCommunicationLinkViaSocket : public CommunicationLink
+{
+public:
+ virtual BOOL IsCommunicationError();
+ virtual BOOL StopCommunication();
+
+ virtual ByteString GetCommunicationPartner( CM_NameType eType );
+ virtual ByteString GetMyName( CM_NameType eType );
+ virtual SvStream* GetBestCommunicationStream();
+ virtual void SetApplication( const ByteString& aApp );
+
+private:
+ ByteString aCommunicationPartner;
+ ByteString aMyName;
+
+ TCPIO* pTCPIO;
+ osl::StreamSocket* pStreamSocket;
+
+protected:
+ SimpleCommunicationLinkViaSocket( CommunicationManager *pMan, osl::StreamSocket* pSocket );
+ virtual ~SimpleCommunicationLinkViaSocket();
+
+ osl::StreamSocket* GetStreamSocket() { return pStreamSocket; }
+ void SetStreamSocket( osl::StreamSocket* pSocket );
+
+ SvStream *pReceiveStream;
+ BOOL DoReceiveDataStream(); /// Recieve DataPacket from Socket
+ virtual BOOL SendHandshake( HandshakeType aHandshakeType, SvStream* pData = NULL);
+ bool IsReceiveReady();
+ BOOL bIsRequestShutdownPending;
+ virtual void WaitForShutdown()=0;
+ void SetNewPacketAsCurrent();
+};
+
+class SimpleCommunicationLinkViaSocketWithReceiveCallbacks : public SimpleCommunicationLinkViaSocket
+{
+public:
+ SimpleCommunicationLinkViaSocketWithReceiveCallbacks( CommunicationManager *pMan, osl::StreamSocket* pSocket );
+ ~SimpleCommunicationLinkViaSocketWithReceiveCallbacks();
+ virtual BOOL ReceiveDataStream();
+protected:
+ virtual BOOL ShutdownCommunication(); /// Really stop the Communication
+ virtual void WaitForShutdown();
+};
+
+class CommonSocketFunctions
+{
+public:
+ BOOL DoStartCommunication( CommunicationManager *pCM, ICommunicationManagerClient *pCMC, ByteString aHost, ULONG nPort );
+protected:
+ virtual CommunicationLink *CreateCommunicationLink( CommunicationManager *pCM, osl::ConnectorSocket* pCS )=0;
+};
+
+class SingleCommunicationManagerClientViaSocket : public SingleCommunicationManager, public ICommunicationManagerClient, CommonSocketFunctions
+{
+public:
+ using CommunicationManager::StartCommunication;
+
+ SingleCommunicationManagerClientViaSocket( ByteString aHost, ULONG nPort, BOOL bUseMultiChannel = FALSE );
+ SingleCommunicationManagerClientViaSocket( BOOL bUseMultiChannel = FALSE );
+ virtual BOOL StartCommunication(){ return DoStartCommunication( this, (ICommunicationManagerClient*) this, aHostToTalk, nPortToTalk );}
+ virtual BOOL StartCommunication( ByteString aHost, ULONG nPort ){ return DoStartCommunication( this, (ICommunicationManagerClient*) this, aHost, nPort );}
+private:
+ ByteString aHostToTalk;
+ ULONG nPortToTalk;
+protected:
+ virtual CommunicationLink *CreateCommunicationLink( CommunicationManager *pCM, osl::ConnectorSocket* pCS ){ return new SimpleCommunicationLinkViaSocketWithReceiveCallbacks( pCM, pCS ); }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/inc/makefile.mk b/automation/inc/makefile.mk
new file mode 100644
index 000000000000..782b6a805b9b
--- /dev/null
+++ b/automation/inc/makefile.mk
@@ -0,0 +1,47 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=automation
+TARGET=inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(ENABLE_PCH)"!=""
+ALLTAR : \
+ $(SLO)$/precompiled.pch \
+ $(SLO)$/precompiled_ex.pch
+
+.ENDIF # "$(ENABLE_PCH)"!=""
+
diff --git a/automation/inc/pch/precompiled_automation.cxx b/automation/inc/pch/precompiled_automation.cxx
new file mode 100644
index 000000000000..e07b325283d8
--- /dev/null
+++ b/automation/inc/pch/precompiled_automation.cxx
@@ -0,0 +1,31 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_automation.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/inc/pch/precompiled_automation.hxx b/automation/inc/pch/precompiled_automation.hxx
new file mode 100644
index 000000000000..05a8e8250f74
--- /dev/null
+++ b/automation/inc/pch/precompiled_automation.hxx
@@ -0,0 +1,34 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:30.061723
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/packimages/makefile.mk b/automation/packimages/makefile.mk
new file mode 100644
index 000000000000..928155039773
--- /dev/null
+++ b/automation/packimages/makefile.mk
@@ -0,0 +1,63 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..
+PRJNAME=automation
+TARGET=packimages
+RSCCUSTOMIMG*=$(PRJ)$/util
+
+# point to an existing directory as default that poses no threat
+# to a "find" that looks for "*.png"
+RSCCUSTOMIMG*=$(PRJNAME)$/util
+
+# point to an existing directory as default that poses no threat
+# to a "find" that looks for "*.png"
+RSCCUSTOMIMG*=$(PRJNAME)$/util
+
+.INCLUDE: settings.mk
+
+.INCLUDE: target.mk
+
+ALLTAR : \
+ $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))$/images_tt.zip
+
+#solarenv = j:\so-cwsserv04\gh7\SRC680\src.m50\solenv
+#outpath = wntmsci10
+#common_outdir = common
+#solarresdir = j:\so-cwsserv04\gh7\SRC680\wntmsci10\res.m50
+
+
+$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))$/images_tt.zip .PHONY:
+ @echo ------------------------------
+ @echo Making: $@
+ $(COPY) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SOLARRESDIR))$/img$/stt*.ilst $(MISC)
+ $(COPY) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SOLARRESDIR))$/img$/svt*.ilst $(MISC)
+ $(COPY) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SOLARRESDIR))$/img$/fps*.ilst $(MISC)
+ $(COPY) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SOLARRESDIR))$/img$/vcl*.ilst $(MISC)
+ $(COPY) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SOLARRESDIR))$/img$/sb*.ilst $(MISC)
+ -$(MKDIR) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))
+ $(PERL) $(SOLARENV)$/bin$/packimages.pl -g $(SOLARSRC)$/$(RSCDEFIMG) -m $(SOLARSRC)$/$(RSCDEFIMG) -c $(RSCCUSTOMIMG) -l $(MISC) -o $@
+
diff --git a/automation/prj/build.lst b/automation/prj/build.lst
new file mode 100644
index 000000000000..b019873f07d9
--- /dev/null
+++ b/automation/prj/build.lst
@@ -0,0 +1,11 @@
+au automation : basic fpicker NULL
+au automation usr1 - all au_mkout NULL
+au automation\inc nmake - all au_inc NULL
+au automation\source\simplecm nmake - all au_scom au_inc NULL
+au automation\source\communi nmake - all au_comm au_inc NULL
+au automation\source\app nmake - all au_app au_inc NULL
+au automation\source\server nmake - all au_server au_inc NULL
+au automation\source\testtool nmake - all au_tt au_inc NULL
+au automation\source\miniapp nmake - all au_mini au_inc NULL
+au automation\packimages nmake - all au_pack NULL
+au automation\util nmake - all au_util au_scom au_comm au_app au_mini au_server au_tt NULL
diff --git a/automation/prj/d.lst b/automation/prj/d.lst
new file mode 100644
index 000000000000..c83a2284e34b
--- /dev/null
+++ b/automation/prj/d.lst
@@ -0,0 +1,27 @@
+mkdir: %COMMON_DEST%\bin%_EXT%\hid
+mkdir: %_DEST%\inc%_EXT%\automation
+
+#..\%COMMON_OUTDIR%\misc\*.hid %COMMON_DEST%\bin%_EXT%\hid\*.hid
+..\util\manually_added_ids.hid %COMMON_DEST%\bin%_EXT%\hid\manually_added_ids.hid
+..\%__SRC%\bin\*.dll %_DEST%\bin%_EXT%\*.dll
+..\%__SRC%\lib\lib* %_DEST%\lib%_EXT%\*
+..\%__SRC%\lib\ists.lib %_DEST%\lib%_EXT%\ists.lib
+..\%__SRC%\lib\isimplecm.lib %_DEST%\lib%_EXT%\isimplecm.lib
+..\%__SRC%\lib\icommuni.lib %_DEST%\lib%_EXT%\icommuni.lib
+
+..\inc\automation\automation.hxx %_DEST%\inc%_EXT%\automation\automation.hxx
+..\inc\automation\commdefines.hxx %_DEST%\inc%_EXT%\automation\commdefines.hxx
+..\inc\automation\commtypes.hxx %_DEST%\inc%_EXT%\automation\commtypes.hxx
+..\inc\automation\communi.hxx %_DEST%\inc%_EXT%\automation\communi.hxx
+..\inc\automation\simplecm.hxx %_DEST%\inc%_EXT%\automation\simplecm.hxx
+
+..\%__SRC%\bin\testtool.exe %_DEST%\bin%_EXT%\testtool.bin
+..\%__SRC%\bin\testtool %_DEST%\bin%_EXT%\testtool.bin
+..\%__SRC%\inc\classes %_DEST%\bin%_EXT%\classes
+..\%__SRC%\inc\keycodes %_DEST%\bin%_EXT%\keycodes
+..\%__SRC%\inc\res_type %_DEST%\bin%_EXT%\res_type
+
+..\%COMMON_OUTDIR%\bin\images_tt.zip %COMMON_DEST%\bin%_EXT%\images_tt.zip
+
+..\%__SRC%\bin\testtoolrc %_DEST%\lib%_EXT%\testtoolrc
+..\%__SRC%\bin\testtool.ini %_DEST%\bin%_EXT%\testtool.ini
diff --git a/automation/prj/l10n b/automation/prj/l10n
new file mode 100644
index 000000000000..69f0d9e5e24e
--- /dev/null
+++ b/automation/prj/l10n
@@ -0,0 +1 @@
+#i49922# In this module en-US and de are used as source language
diff --git a/automation/source/app/makefile.mk b/automation/source/app/makefile.mk
new file mode 100644
index 000000000000..8a430b3c3a96
--- /dev/null
+++ b/automation/source/app/makefile.mk
@@ -0,0 +1,52 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=automation
+TARGET=app
+
+# --- Settings ------------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ------------------------------------------------------------
+
+CXXFILES = \
+ testbasi.cxx
+
+
+OBJFILES = \
+ $(OBJ)$/testbasi.obj
+
+
+LIBTARGET = NO
+
+
+# --- Targets ------------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/automation/source/app/testbasi.cxx b/automation/source/app/testbasi.cxx
new file mode 100644
index 000000000000..101d72b3471b
--- /dev/null
+++ b/automation/source/app/testbasi.cxx
@@ -0,0 +1,148 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <basic/sbx.hxx>
+
+#include <basic/ttstrhlp.hxx>
+#include <basic/testtool.hxx>
+#include "testbasi.hxx"
+#define P_FEHLERLISTE TestToolObj::pFehlerListe
+
+#include <testapp.hxx>
+#include <testtool.hxx>
+
+TYPEINIT1(TTBasic,MyBasic)
+
+/*class MyFactory : public SbxFactory
+{
+public:
+ virtual SbxBase* Create( UINT16 nSbxId, UINT32 = SBXCR_SBX );
+};
+
+static SampleObjectFac aFac1;
+static MyFactory aFac2;
+static CommunicationFactory aComManFac;
+static ProcessFactory aProcessFac;
+static short nInst = 0;
+
+SbxBase* MyFactory::Create( UINT16 nSbxId, UINT32 nCr )
+{
+ if( nCr == SBXCR_TEST && nSbxId == SBXID_MYBASIC )
+ return new MyBasic;
+ else
+ return NULL;
+} */
+
+TTBasic::TTBasic() : MyBasic()
+{
+// Eigenes Objekt reinbraten
+ TestToolObj* pTTO = new TestToolObj( CUniString("App"), this );
+ pTTO->SetLogHdl( GenLogHdl() );
+ pTTO->SetWinInfoHdl( GenWinInfoHdl() );
+ pTTO->SetModuleWinExistsHdl( GenModuleWinExistsHdl() );
+ pTTO->SetWriteStringHdl( GenWriteStringHdl() );
+ pTTO->SetCErrorHdl( LINK( this, TTBasic, CErrorImpl ) );
+
+ StartListeningTT( pTTO->GetTTBroadcaster() );
+
+ pTestObject = pTTO;
+ pTestObject->SetFlag( SBX_EXTSEARCH );
+ Insert( pTestObject );
+}
+
+MyBasic* TTBasic::CreateMyBasic()
+{
+ return new TTBasic();
+}
+
+void TTBasic::LoadIniFile()
+{
+ ((TestToolObj*)pTestObject)->LoadIniFile();
+}
+
+SbTextType TTBasic::GetSymbolType( const String &rSymbol, BOOL bWasTTControl )
+{
+ return ((TestToolObj*)pTestObject)->GetSymbolType( rSymbol, bWasTTControl );
+}
+
+
+TTBasic::~TTBasic()
+{
+}
+
+IMPL_LINK( TTBasic, CErrorImpl, ErrorEntry*, pData )
+{
+ return CError( pData->nError, pData->aText, pData->nLine, pData->nCol1, pData->nCol2 );
+}
+
+BOOL TTBasic::Compile( SbModule* p )
+{
+ p->SetComment( ((TestToolObj*)pTestObject)->GetRevision(p->GetSource()) );
+ SbModule* pOldModule = GetCompileModule();
+ SetCompileModule( p );
+ p->SetSource( ((TestToolObj*)pTestObject)->PreCompile(p->GetSource()) );
+ SetCompileModule( pOldModule );
+ if ( ((TestToolObj*)pTestObject)->WasPrecompilerError() )
+ return FALSE;
+ return MyBasic::Compile( p );
+}
+
+const String TTBasic::GetSpechialErrorText()
+{
+ String nErrorText;
+ if ( pTestObject && IS_ERROR() && GetErrorCode() == GET_ERROR()->nError )
+ {
+ nErrorText = GenRealString( GET_ERROR()->aText );
+ nErrorText.AppendAscii( ": " );
+ nErrorText += String::CreateFromInt64( GET_ERROR()->nError );
+ }
+ else
+ {
+ nErrorText = GetErrorText();
+ }
+ return nErrorText;
+}
+
+void TTBasic::ReportRuntimeError( AppBasEd *pEditWin )
+{
+ SbxVariableRef aDummy = new SbxVariable;
+ aDummy->SetUserData( 24 ); // ID_MaybeAddErr
+ ((TestToolObj*)pTestObject)->Notify( pTestObject->GetBroadcaster(), SbxHint( SBX_HINT_DATAWANTED, aDummy ) );
+ aDummy->SetUserData( 18 ); // ID_ExceptLog
+ ((TestToolObj*)pTestObject)->Notify( pTestObject->GetBroadcaster(), SbxHint( SBX_HINT_DATAWANTED, aDummy ) );
+ MyBasic::ReportRuntimeError( pEditWin );
+}
+
+void TTBasic::DebugFindNoErrors( BOOL bDebugFindNoErrors )
+{
+ ((TestToolObj*)pTestObject)->DebugFindNoErrors( bDebugFindNoErrors );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/app/testbasi.hxx b/automation/source/app/testbasi.hxx
new file mode 100644
index 000000000000..89d870a66cb4
--- /dev/null
+++ b/automation/source/app/testbasi.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 _TTBASIC_HXX
+#define _TTBASIC_HXX
+
+#include <basic/sbstar.hxx>
+#include <basic/mybasic.hxx>
+
+class ErrorEntry;
+
+#define SBXID_TTBASIC 0x5454 // TTBasic: TT
+
+#define SBXCR_TEST2 0x54534554L // TEST
+
+class TTBasic : public MyBasic
+{
+public:
+ SBX_DECL_PERSIST_NODATA(SBXCR_TEST2,SBXID_TTBASIC,1);
+ TYPEINFO();
+ TTBasic();
+ ~TTBasic();
+ BOOL Compile( SbModule* );
+ static MyBasic* CreateMyBasic();
+
+ // nicht mit #ifdefs klammern, da diese Headerdatei für testtool und basic
+ // gleichermaßen verwendet wird.
+ DECL_LINK( CErrorImpl, ErrorEntry* );
+// SbxObject *pTestObject; // für das Testtool; ansonsten NULL
+
+ void LoadIniFile();
+ SbTextType GetSymbolType( const String &Symbol, BOOL bWasTTControl ); // Besimmt den erweiterten Symboltyp für das Syntaxhighlighting
+ virtual const String GetSpechialErrorText();
+ virtual void ReportRuntimeError( AppBasEd *pEditWin );
+ virtual void DebugFindNoErrors( BOOL bDebugFindNoErrors );
+};
+
+SV_DECL_IMPL_REF(TTBasic)
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/communi/communi.cxx b/automation/source/communi/communi.cxx
new file mode 100644
index 000000000000..f19b095449ff
--- /dev/null
+++ b/automation/source/communi/communi.cxx
@@ -0,0 +1,599 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <stdio.h>
+#if OSL_DEBUG_LEVEL > 1
+#define DEBUGPRINTF(x) { printf(x); fflush( stdout ); }
+#else
+#define DEBUGPRINTF(x)
+#endif
+#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+#include <osl/socket.hxx>
+#include <tools/stream.hxx>
+#include <vcl/timer.hxx>
+#include <tools/fsys.hxx>
+
+#include <automation/communi.hxx>
+
+
+/* Um den Destruktor protected zu machen wurde unten das delete entfernt.
+ Die Methode wird ohnehin hucht benutzt.
+// delete *((AE*)pData+n);
+*/
+
+#undef SV_IMPL_PTRARR_SORT
+#define SV_IMPL_PTRARR_SORT( nm,AE )\
+_SV_IMPL_SORTAR_ALG( nm,AE )\
+ void nm::DeleteAndDestroy( USHORT nP, USHORT nL ) { \
+ if( nL ) {\
+ DBG_ASSERT( nP < nA && nP + nL <= nA, "ERR_VAR_DEL" );\
+ for( USHORT n=nP; n < nP + nL; n++ ) \
+ DBG_ERROR("Das Element der Liste wurde nicht gelöscht"); \
+ SvPtrarr::Remove( nP, nL ); \
+ } \
+ } \
+_SV_SEEK_PTR( nm, AE )
+
+
+
+
+SV_IMPL_PTRARR_SORT( CommunicationLinkList, CommunicationLink* );
+
+osl::Mutex *pMPostUserEvent=NULL; // Notwendig, da nicht threadfest
+
+CommunicationLinkViaSocket::CommunicationLinkViaSocket( CommunicationManager *pMan, osl::StreamSocket* pSocket )
+: SimpleCommunicationLinkViaSocket( pMan, pSocket )
+, nConnectionClosedEventId( 0 )
+, nDataReceivedEventId( 0 )
+, bShutdownStarted( FALSE )
+, bDestroying( FALSE )
+{
+ SetPutDataReceivedHdl(LINK( this, CommunicationLinkViaSocket, PutDataReceivedHdl ));
+ if ( !pMPostUserEvent )
+ pMPostUserEvent = new osl::Mutex;
+ // this is necassary to prevent the running thread from sending the close event
+ // before the open event has been sent.
+ StartCallback();
+
+ create();
+}
+
+CommunicationLinkViaSocket::~CommunicationLinkViaSocket()
+{
+ bDestroying = TRUE;
+ StopCommunication();
+ while ( nConnectionClosedEventId || nDataReceivedEventId )
+ GetpApp()->Yield();
+ {
+ osl::MutexGuard aGuard( aMConnectionClosed );
+ if ( nConnectionClosedEventId )
+ {
+ GetpApp()->RemoveUserEvent( nConnectionClosedEventId );
+ nConnectionClosedEventId = 0;
+ INFO_MSG( CByteString("Event gelöscht"),
+ CByteString( "ConnectionClosedEvent aus Queue gelöscht"),
+ CM_MISC, NULL );
+ }
+ }
+ {
+ osl::MutexGuard aGuard( aMDataReceived );
+ if ( nDataReceivedEventId )
+ {
+ GetpApp()->RemoveUserEvent( nDataReceivedEventId );
+ nDataReceivedEventId = 0;
+ delete GetServiceData();
+ INFO_MSG( CByteString("Event gelöscht"),
+ CByteString( "DataReceivedEvent aus Queue gelöscht"),
+ CM_MISC, NULL );
+ }
+ }
+}
+
+BOOL CommunicationLinkViaSocket::ShutdownCommunication()
+{
+ if ( isRunning() )
+ {
+
+ terminate();
+ if ( GetStreamSocket() )
+ GetStreamSocket()->shutdown();
+
+ if ( GetStreamSocket() ) // Mal wieder nach oben verschoben, da sonst nicht vom Read runtergesprungen wird.
+ GetStreamSocket()->close();
+
+ resume(); // So daß das run auch die Schleife verlassen kann
+
+ join();
+
+ osl::StreamSocket* pTempSocket = GetStreamSocket();
+ SetStreamSocket( NULL );
+ delete pTempSocket;
+
+// ConnectionClosed(); Wird am Ende des Thread gerufen
+
+ }
+ else
+ {
+ join();
+ }
+
+ return TRUE;
+}
+
+BOOL CommunicationLinkViaSocket::StopCommunication()
+{
+ if ( !bShutdownStarted )
+ {
+ return SimpleCommunicationLinkViaSocket::StopCommunication();
+ }
+ else
+ {
+ WaitForShutdown();
+ return TRUE;
+ }
+}
+
+
+IMPL_LINK( CommunicationLinkViaSocket, ShutdownLink, void*, EMPTYARG )
+{
+ if ( !IsCommunicationError() )
+ ShutdownCommunication();
+ return 0;
+}
+
+
+void CommunicationLinkViaSocket::WaitForShutdown()
+{
+ if ( !bShutdownStarted )
+ {
+ aShutdownTimer.SetTimeout( 30000 ); // Should be 30 Seconds
+ aShutdownTimer.SetTimeoutHdl( LINK( this, CommunicationLinkViaSocket, ShutdownLink ) );
+ aShutdownTimer.Start();
+ bShutdownStarted = TRUE;
+ }
+ if ( bDestroying )
+ {
+ while ( pMyManager && aShutdownTimer.IsActive() )
+ {
+ if ( IsCommunicationError() )
+ return;
+ GetpApp()->Yield();
+ }
+ ShutdownCommunication();
+ }
+}
+
+BOOL CommunicationLinkViaSocket::IsCommunicationError()
+{
+ return !isRunning() || SimpleCommunicationLinkViaSocket::IsCommunicationError();
+}
+
+void CommunicationLinkViaSocket::run()
+{
+ BOOL bWasError = FALSE;
+ while ( schedule() && !bWasError && GetStreamSocket() )
+ {
+ if ( bWasError |= !DoReceiveDataStream() )
+ continue;
+
+ TimeValue sNochEins = {0, 1000000};
+ while ( schedule() && bIsInsideCallback ) // solange der letzte Callback nicht beendet ist
+ wait( sNochEins );
+ SetNewPacketAsCurrent();
+ StartCallback();
+ {
+ osl::MutexGuard aGuard( aMDataReceived );
+ osl::MutexGuard aGuard2( *pMPostUserEvent );
+ mlPutDataReceived.Call(this);
+ }
+ }
+ TimeValue sNochEins = {0, 1000000};
+ while ( schedule() && bIsInsideCallback ) // solange der letzte Callback nicht beendet ist
+ wait( sNochEins );
+
+ StartCallback();
+ {
+ osl::MutexGuard aGuard( aMConnectionClosed );
+ osl::MutexGuard aGuard2( *pMPostUserEvent );
+ nConnectionClosedEventId = GetpApp()->PostUserEvent( LINK( this, CommunicationLinkViaSocket, ConnectionClosed ) );
+ }
+}
+
+BOOL CommunicationLinkViaSocket::DoTransferDataStream( SvStream *pDataStream, CMProtocol nProtocol )
+{
+ if ( !isRunning() )
+ return FALSE;
+
+ return SimpleCommunicationLinkViaSocket::DoTransferDataStream( pDataStream, nProtocol );
+}
+
+/// Dies ist ein virtueller Link!!!
+long CommunicationLinkViaSocket::ConnectionClosed( void* EMPTYARG )
+{
+ {
+ osl::MutexGuard aGuard( aMConnectionClosed );
+ nConnectionClosedEventId = 0; // Achtung!! alles andere muß oben gemacht werden.
+ }
+ ShutdownCommunication();
+ return CommunicationLink::ConnectionClosed( );
+}
+
+/// Dies ist ein virtueller Link!!!
+long CommunicationLinkViaSocket::DataReceived( void* EMPTYARG )
+{
+ {
+ osl::MutexGuard aGuard( aMDataReceived );
+ nDataReceivedEventId = 0; // Achtung!! alles andere muß oben gemacht werden.
+ }
+ return CommunicationLink::DataReceived( );
+}
+
+IMPL_LINK( CommunicationLinkViaSocket, PutDataReceivedHdl, CommunicationLinkViaSocket*, EMPTYARG )
+{
+ nDataReceivedEventId = GetpApp()->PostUserEvent( LINK( this, CommunicationLink, DataReceived ) );
+ return 0;
+}
+
+
+
+MultiCommunicationManager::MultiCommunicationManager( BOOL bUseMultiChannel )
+: CommunicationManager( bUseMultiChannel )
+, bGracefullShutdown( TRUE )
+{
+ ActiveLinks = new CommunicationLinkList;
+ InactiveLinks = new CommunicationLinkList;
+}
+
+MultiCommunicationManager::~MultiCommunicationManager()
+{
+ StopCommunication();
+
+ if ( bGracefullShutdown ) // first try to collect all callbacks for closing channels
+ {
+ Timer aTimeout;
+ aTimeout.SetTimeout( 40000 );
+ aTimeout.Start();
+ USHORT nLinkCount = 0;
+ USHORT nNewLinkCount = 0;
+ while ( aTimeout.IsActive() )
+ {
+ GetpApp()->Yield();
+ nNewLinkCount = GetCommunicationLinkCount();
+ if ( nNewLinkCount == 0 )
+ aTimeout.Stop();
+ if ( nNewLinkCount != nLinkCount )
+ {
+ aTimeout.Start();
+ nLinkCount = nNewLinkCount;
+ }
+ }
+ }
+
+ // Alles weghauen, was nicht rechtzeitig auf die Bäume gekommen ist
+ // Was bei StopCommunication übrig geblieben ist, da es sich asynchron austragen wollte
+ USHORT i = ActiveLinks->Count();
+ while ( i-- )
+ {
+ CommunicationLinkRef rTempLink = ActiveLinks->GetObject( i );
+ ActiveLinks->Remove( i );
+ rTempLink->InvalidateManager();
+ rTempLink->ReleaseReference();
+ }
+ delete ActiveLinks;
+
+ /// Die Links zwischen ConnectionClosed und Destruktor.
+ /// Hier NICHT gerefcounted, da sie sich sonst im Kreis festhaten würden,
+ /// da die Links sich erst in ihrem Destruktor austragen
+ i = InactiveLinks->Count();
+ while ( i-- )
+ {
+ CommunicationLinkRef rTempLink = InactiveLinks->GetObject( i );
+ InactiveLinks->Remove( i );
+ rTempLink->InvalidateManager();
+ }
+ delete InactiveLinks;
+}
+
+BOOL MultiCommunicationManager::StopCommunication()
+{
+ // Alle Verbindungen abbrechen
+ // ConnectionClosed entfernt die Links aus der Liste. Je nach Implementation syncron
+ // oder asyncron. Daher Von oben nach unten Abräumen, so daß sich nichts verschiebt.
+ USHORT i = ActiveLinks->Count();
+ int nFail = 0;
+ while ( i )
+ {
+ if ( !ActiveLinks->GetObject(i-1)->StopCommunication() )
+ nFail++; // Hochzählen, da Verbindung sich nicht (sofort) beenden lässt.
+ i--;
+ }
+
+ return nFail == 0;
+}
+
+BOOL MultiCommunicationManager::IsLinkValid( CommunicationLink* pCL )
+{
+ if ( ActiveLinks->Seek_Entry( pCL ) )
+ return TRUE;
+ else
+ return FALSE;
+}
+
+USHORT MultiCommunicationManager::GetCommunicationLinkCount()
+{
+ return ActiveLinks->Count();
+}
+
+CommunicationLinkRef MultiCommunicationManager::GetCommunicationLink( USHORT nNr )
+{
+ return ActiveLinks->GetObject( nNr );
+}
+
+void MultiCommunicationManager::CallConnectionOpened( CommunicationLink* pCL )
+{
+ CommunicationLinkRef rHold(pCL); // Hält den Zeiger bis zum Ende des calls
+ ActiveLinks->C40_PTR_INSERT(CommunicationLink, pCL);
+ rHold->AddRef();
+
+ CommunicationManager::CallConnectionOpened( pCL );
+}
+
+void MultiCommunicationManager::CallConnectionClosed( CommunicationLink* pCL )
+{
+ CommunicationLinkRef rHold(pCL); // Hält denm Zeiger bis zum Ende des calls
+
+ CommunicationManager::CallConnectionClosed( pCL );
+
+ USHORT nPos;
+ if ( ActiveLinks->Seek_Entry( pCL, &nPos ) )
+ {
+ InactiveLinks->C40_PTR_INSERT(CommunicationLink, pCL); // Ohne Reference
+ ActiveLinks->Remove( nPos );
+ }
+ pCL->ReleaseReference();
+
+ bIsCommunicationRunning = ActiveLinks->Count() > 0;
+// delete pCL;
+#if OSL_DEBUG_LEVEL > 1
+ rHold->bFlag = TRUE;
+#endif
+}
+
+void MultiCommunicationManager::DestroyingLink( CommunicationLink *pCL )
+{
+ USHORT nPos;
+ if ( InactiveLinks->Seek_Entry( pCL, &nPos ) )
+ InactiveLinks->Remove( nPos );
+ pCL->InvalidateManager();
+}
+
+
+
+CommunicationManagerClient::CommunicationManagerClient( BOOL bUseMultiChannel )
+: MultiCommunicationManager( bUseMultiChannel )
+{
+ ByteString aApplication("Something inside ");
+ aApplication.Append( ByteString( DirEntry( Application::GetAppFileName() ).GetName(), gsl_getSystemTextEncoding() ) );
+ SetApplication( aApplication );
+}
+
+
+
+CommunicationManagerServerViaSocket::CommunicationManagerServerViaSocket( ULONG nPort, USHORT nMaxCon, BOOL bUseMultiChannel )
+: CommunicationManagerServer( bUseMultiChannel )
+, nPortToListen( nPort )
+, nMaxConnections( nMaxCon )
+, pAcceptThread( NULL )
+{
+}
+
+CommunicationManagerServerViaSocket::~CommunicationManagerServerViaSocket()
+{
+ StopCommunication();
+}
+
+BOOL CommunicationManagerServerViaSocket::StartCommunication()
+{
+ if ( !pAcceptThread )
+ pAcceptThread = new CommunicationManagerServerAcceptThread( this, nPortToListen, nMaxConnections );
+ return TRUE;
+}
+
+
+BOOL CommunicationManagerServerViaSocket::StopCommunication()
+{
+ // Erst den Acceptor anhalten
+ delete pAcceptThread;
+ pAcceptThread = NULL;
+
+ // Dann alle Verbindungen kappen
+ return CommunicationManagerServer::StopCommunication();
+}
+
+
+void CommunicationManagerServerViaSocket::AddConnection( CommunicationLink *pNewConnection )
+{
+ CallConnectionOpened( pNewConnection );
+}
+
+
+CommunicationManagerServerAcceptThread::CommunicationManagerServerAcceptThread( CommunicationManagerServerViaSocket* pServer, ULONG nPort, USHORT nMaxCon )
+: pMyServer( pServer )
+, pAcceptorSocket( NULL )
+, nPortToListen( nPort )
+, nMaxConnections( nMaxCon )
+, nAddConnectionEventId( 0 )
+, xmNewConnection( NULL )
+{
+ if ( !pMPostUserEvent )
+ pMPostUserEvent = new osl::Mutex;
+ create();
+}
+
+
+CommunicationManagerServerAcceptThread::~CommunicationManagerServerAcceptThread()
+{
+#ifndef aUNX // Weil das Accept nicht abgebrochen werden kann, so terminiert wenigstens das Prog
+ // #62855# pl: gilt auch bei anderen Unixen
+ // die richtige Loesung waere natuerlich, etwas auf die pipe zu schreiben,
+ // was der thread als Abbruchbedingung erkennt
+ // oder wenigstens ein kill anstatt join
+ terminate();
+ if ( pAcceptorSocket )
+ pAcceptorSocket->close(); // Dann das Accept unterbrechen
+
+ join(); // Warten bis fertig
+
+ if ( pAcceptorSocket )
+ {
+ delete pAcceptorSocket;
+ pAcceptorSocket = NULL;
+ }
+#else
+ DEBUGPRINTF ("Destructor CommunicationManagerServerAcceptThread Übersprungen!!!! (wegen Solaris BUG)\n");
+#endif
+ {
+ osl::MutexGuard aGuard( aMAddConnection );
+ if ( nAddConnectionEventId )
+ {
+ GetpApp()->RemoveUserEvent( nAddConnectionEventId );
+ nAddConnectionEventId = 0;
+ CommunicationLinkRef xNewConnection = GetNewConnection();
+ INFO_MSG( CByteString("Event gelöscht"),
+ CByteString( "AddConnectionEvent aus Queue gelöscht"),
+ CM_MISC, xNewConnection );
+ xNewConnection->InvalidateManager();
+ xNewConnection.Clear(); // sollte das Objekt hier löschen
+ }
+ }
+}
+
+void CommunicationManagerServerAcceptThread::run()
+{
+ if ( !nPortToListen )
+ return;
+
+ pAcceptorSocket = new osl::AcceptorSocket();
+ osl::SocketAddr Addr;
+ Addr.setPort( nPortToListen );
+ pAcceptorSocket->setOption( osl_Socket_OptionReuseAddr, 1 );
+ if ( !pAcceptorSocket->bind( Addr ) )
+ {
+ return;
+ }
+ if ( !pAcceptorSocket->listen( nMaxConnections ) )
+ {
+ return;
+ }
+
+
+ osl::StreamSocket* pStreamSocket = NULL;
+
+ while ( schedule() )
+ {
+ pStreamSocket = new osl::StreamSocket;
+ switch ( pAcceptorSocket->acceptConnection( *pStreamSocket ) )
+ {
+ case osl_Socket_Ok:
+ {
+ pStreamSocket->setOption( osl_Socket_OptionTcpNoDelay, 1 );
+
+ TimeValue sNochEins = {0, 100};
+ while ( schedule() && xmNewConnection.Is() ) // Solange die letzte Connection nicht abgeholt wurde warten wir
+ wait( sNochEins );
+ xmNewConnection = new CommunicationLinkViaSocket( pMyServer, pStreamSocket );
+ xmNewConnection->StartCallback();
+ {
+ osl::MutexGuard aGuard( aMAddConnection );
+ osl::MutexGuard aGuard2( *pMPostUserEvent );
+ nAddConnectionEventId = GetpApp()->PostUserEvent( LINK( this, CommunicationManagerServerAcceptThread, AddConnection ) );
+ }
+ }
+ break;
+ case osl_Socket_TimedOut:
+ delete pStreamSocket;
+ pStreamSocket = NULL;
+ break;
+ case osl_Socket_Error:
+ delete pStreamSocket;
+ pStreamSocket = NULL;
+ break;
+
+ case osl_Socket_Interrupted:
+ case osl_Socket_InProgress:
+ default:
+ break;
+ }
+ }
+}
+
+
+IMPL_LINK( CommunicationManagerServerAcceptThread, AddConnection, void*, EMPTYARG )
+{
+ {
+ osl::MutexGuard aGuard( aMAddConnection );
+ nAddConnectionEventId = 0;
+ }
+ pMyServer->AddConnection( xmNewConnection );
+ xmNewConnection.Clear();
+ return 1;
+}
+
+
+#define GETSET(aVar, KeyName, Dafault) \
+ aVar = aConf.ReadKey(KeyName,"No Entry"); \
+ if ( aVar == "No Entry" ) \
+ { \
+ aVar = Dafault; \
+ aConf.WriteKey(KeyName, aVar); \
+ }
+
+
+CommunicationManagerClientViaSocket::CommunicationManagerClientViaSocket( ByteString aHost, ULONG nPort, BOOL bUseMultiChannel )
+: CommunicationManagerClient( bUseMultiChannel )
+, aHostToTalk( aHost )
+, nPortToTalk( nPort )
+{
+}
+
+CommunicationManagerClientViaSocket::CommunicationManagerClientViaSocket( BOOL bUseMultiChannel )
+: CommunicationManagerClient( bUseMultiChannel )
+, aHostToTalk( "" )
+, nPortToTalk( 0 )
+{
+}
+
+CommunicationManagerClientViaSocket::~CommunicationManagerClientViaSocket()
+{
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/communi/makefile.mk b/automation/source/communi/makefile.mk
new file mode 100644
index 000000000000..1d01badab455
--- /dev/null
+++ b/automation/source/communi/makefile.mk
@@ -0,0 +1,44 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=automation
+TARGET=communi
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES= \
+ $(SLO)$/communi.obj
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/automation/source/inc/cmdbasestream.hxx b/automation/source/inc/cmdbasestream.hxx
new file mode 100644
index 000000000000..0170b08aefe0
--- /dev/null
+++ b/automation/source/inc/cmdbasestream.hxx
@@ -0,0 +1,88 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+
+#ifndef _CMDBASESTREAM_HXX_
+#define _CMDBASESTREAM_HXX_
+
+#include <automation/commtypes.hxx>
+#include "icommstream.hxx"
+
+class CmdBaseStream
+{
+protected:
+ ICommStream* pCommStream;
+ CmdBaseStream();
+ virtual ~CmdBaseStream();
+
+public:
+
+ void GenError( SmartId *pUId, comm_String *pString );
+
+ void GenReturn( comm_USHORT nRet, comm_ULONG nNr );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_ULONG nNr );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_String *pString );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_BOOL bBool );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_ULONG nNr, comm_String *pString, comm_BOOL bBool );
+
+// MacroRecorder
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_String *pString );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_String *pString, comm_BOOL bBool );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_BOOL bBool );
+ void GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_ULONG nNr );
+
+ void Read ( comm_USHORT &nNr );
+ void Read ( comm_ULONG &nNr );
+ void Read (comm_UniChar* &aString, comm_USHORT &nLenInChars );
+ void Read ( comm_BOOL &bBool );
+ comm_USHORT GetNextType();
+
+ void Write( comm_USHORT nNr );
+ void Write( comm_ULONG nNr );
+ void Write( const comm_UniChar* aString, comm_USHORT nLenInChars );
+ void Write( comm_BOOL bBool );
+
+// Complex Datatypes to be handled system dependent
+ virtual void Read ( comm_String *&pString );
+ virtual void Read ( SmartId* &pId );
+
+ virtual void Write( comm_String *pString );
+ virtual void Write( SmartId* pId );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/inc/icommstream.hxx b/automation/source/inc/icommstream.hxx
new file mode 100644
index 000000000000..adc9be16063e
--- /dev/null
+++ b/automation/source/inc/icommstream.hxx
@@ -0,0 +1,67 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+
+#ifndef _AUTOMATION_ICOMMSTREAM_HXX_
+#define _AUTOMATION_ICOMMSTREAM_HXX_
+
+#include <automation/commtypes.hxx>
+
+class ICommStream
+{
+public:
+
+ ICommStream(){}
+ virtual ~ICommStream(){}
+
+ virtual ICommStream& operator>>( comm_USHORT& rUShort )=0;
+ virtual ICommStream& operator>>( comm_ULONG& rULong )=0;
+ virtual ICommStream& operator>>( comm_BOOL& rChar )=0;
+
+ virtual ICommStream& operator<<( comm_USHORT nUShort )=0;
+ virtual ICommStream& operator<<( comm_ULONG nULong )=0;
+ virtual ICommStream& operator<<( comm_BOOL nChar )=0;
+
+ virtual comm_ULONG Read( void* pData, comm_ULONG nSize )=0;
+ virtual comm_ULONG Write( const void* pData, comm_ULONG nSize )=0;
+
+ virtual comm_BOOL IsEof() const=0;
+ virtual comm_ULONG SeekRel( long nPos )=0;
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/inc/rcontrol.hxx b/automation/source/inc/rcontrol.hxx
new file mode 100644
index 000000000000..f3609b9de3d9
--- /dev/null
+++ b/automation/source/inc/rcontrol.hxx
@@ -0,0 +1,499 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+
+#ifndef _RCONTROL_HXX
+#define _RCONTROL_HXX
+
+
+#define UID_ACTIVE 0
+
+
+#define SI_IPCCommandBlock 1
+#define SI_SocketCommandBlock SI_IPCCommandBlock // Zumindest erstmal
+#define SI_DirectCommandBlock 2
+#define SIControl 3
+#define SISlot 4
+#define SIFlow 5
+#define SICommand 6
+#define SIUnoSlot 7
+#define SIStringControl 8
+
+#define SIReturnBlock 11
+#define SIReturn 12
+#define SIReturnError 13
+
+// Typisierung im Stream
+#define BinUSHORT 11
+#define BinULONG 14
+#define BinString 12
+#define BinBool 13
+#define BinSbxValue 15
+
+
+// Classes
+// !!!Diese Defines duerfen niemals geaendert werden!!!
+#define C_NoType -1
+// Maximale 32 einfache Controls
+#define C_TabControl 0
+#define C_RadioButton 1
+#define C_CheckBox 2
+#define C_TriStateBox 3
+#define C_Edit 4
+#define C_MultiLineEdit 5
+#define C_MultiListBox 6
+#define C_ListBox 7
+#define C_ComboBox 8
+#define C_PushButton 9
+
+#define C_SpinField 10
+#define C_PatternField 11
+#define C_NumericField 12
+#define C_MetricField 13
+#define C_CurrencyField 14
+#define C_DateField 15
+#define C_TimeField 16
+
+#define C_ImageRadioButton 17
+#define C_NumericBox 18
+#define C_MetricBox 19
+#define C_CurrencyBox 20
+#define C_DateBox 21
+#define C_TimeBox 22
+
+#define C_ImageButton 23
+#define C_MenuButton 24
+#define C_MoreButton 25
+
+// Maximale 7 Container
+#define C_TabPage 32
+#define C_ModalDlg 33
+#define C_FloatWin 34
+#define C_ModelessDlg 35
+#define C_WorkWin 36
+#define C_DockingWin 37
+
+// Diese Defines koennen geaendert werden
+#define C_MessBox 40
+#define C_InfoBox 41
+#define C_WarningBox 42
+#define C_ErrorBox 43
+#define C_QueryBox 44
+
+#define C_TabDlg 45
+#define C_SingleTabDlg 46
+
+#define C_Window 47
+
+
+#define C_PatternBox 60
+#define C_ToolBox 61
+#define C_ValueSet 62
+#define C_Control 63
+#define C_TreeListBox 64 // Hurray the TreeListBox finally got its own Window Type
+
+#define C_OkButton 65
+#define C_CancelButton 66
+#define C_ButtonDialog 67
+
+#define C_Dialog 68
+
+
+
+
+#define M_WITH_RETURN 0x0200 // Die Variable wird zum Aufnehmen des Wertes gespeichert
+#define M_KEY_STRING 0x0400 // Key Befehle werden umgewandelt i.e. "<return><up>"
+#define M_SOFFICE 0x0800 // Command valid for Star/Open Office
+#define M_MOZILLA 0x1000 // Command valid for Mozilla
+// for MacroRecorder
+#define M_RET_NUM_CONTROL 0x2000 // decode ULong as Control (For Tabpages, Toolboxes, ... )
+
+// Methoden
+#define M_Select 21
+#define M_SetNoSelection 22
+#define M_SetText 23
+#define M_More 24
+#define M_Less 25
+#define M_ToMin 26
+#define M_ToMax 27
+#define M_Check 28
+#define M_UnCheck 29
+#define M_TriState 30
+#define M_SetPage 31
+#define M_Click 32
+
+#define M_Close 33 // Push Buttons on Dialog (Auch More Button)
+#define M_Cancel 34
+#define M_OK 35
+#define M_Help 36
+#define M_Default 37 // Push defaultbutton on Dialog
+
+#define M_Yes 38
+#define M_No 39
+#define M_Repeat 40
+
+#define M_Open 41
+#define M_Pick 42
+#define M_Move 43
+#define M_Size 44
+#define M_Minimize 45
+#define M_Maximize 46
+#define M_Dock 47
+#define M_Undock 48
+
+
+
+#define M_TypeKeys ( M_KEY_STRING | 50 )
+#define M_MouseDown 51
+#define M_MouseUp 52
+#define M_MouseMove 53
+#define M_MouseDoubleClick 54
+#define M_SnapShot 55
+#define M_SetNextToolBox 56
+#define M_OpenContextMenu 57
+#define M_MultiSelect 58
+
+// Filedialog
+#define M_SetPath 60
+#define M_SetCurFilter 61
+
+// Printdialog
+#define M_SetPrinter 70
+#define M_CheckRange 71
+#define M_SetRangeText 72
+#define M_SetFirstPage 73
+#define M_SetLastPage 74
+#define M_CheckCollate 75
+#define M_SetPageId 76
+#define M_SetPageNr 77
+
+#define M_AnimateMouse 78
+#define M_TearOff 79
+
+#define M_FadeIn 80
+#define M_FadeOut 81
+#define M_Pin 82
+
+#define M_UseMenu 83 // Use the menu of the next possible parent of given Window
+
+#define M_OpenMenu 84 // MenuButtons and Menus in ToolBoxes
+
+#define M_Restore 85 // Window Control together with M_Maximize and M_Minimize
+
+#define M_DisplayPercent 200 // Zum Anzeigen der Prozente des Windows
+
+#define M_LAST_NO_RETURN 200
+
+#if ( M_LAST_NO_RETURN >= M_WITH_RETURN )
+#error "Bereich überschritten"
+#endif
+
+#define M_Exists ( M_WITH_RETURN | 1 )
+#define M_NotExists ( M_WITH_RETURN | 2 )
+#define M_IsEnabled ( M_WITH_RETURN | 3 )
+#define M_IsVisible ( M_WITH_RETURN | 4 )
+#define M_IsWritable ( M_WITH_RETURN | 5 )
+
+#define M_GetPage ( M_WITH_RETURN | 6 )
+#define M_IsChecked ( M_WITH_RETURN | 7 )
+#define M_IsTristate ( M_WITH_RETURN | 8 )
+#define M_GetState ( M_WITH_RETURN | 9 )
+#define M_GetText ( M_WITH_RETURN | 10 )
+#define M_GetSelCount ( M_WITH_RETURN | 11 )
+#define M_GetSelIndex ( M_WITH_RETURN | 12 )
+#define M_GetSelText ( M_WITH_RETURN | 13 )
+#define M_GetItemCount ( M_WITH_RETURN | 14 )
+#define M_GetItemText ( M_WITH_RETURN | 15 )
+#define M_IsOpen ( M_WITH_RETURN | 16 )
+#define M_Caption ( M_WITH_RETURN | 17 )
+#define M_IsMax ( M_WITH_RETURN | 18 )
+#define M_IsDocked ( M_WITH_RETURN | 19 )
+#define M_GetRT ( M_WITH_RETURN | 20 )
+#define M_GetPageId ( M_WITH_RETURN | 21 )
+#define M_GetPageCount ( M_WITH_RETURN | 22 )
+#define M_GetPosX ( M_WITH_RETURN | 23 )
+#define M_GetPosY ( M_WITH_RETURN | 24 )
+#define M_GetSizeX ( M_WITH_RETURN | 25 )
+#define M_GetSizeY ( M_WITH_RETURN | 26 )
+#define M_GetNextToolBox ( M_WITH_RETURN | 27 )
+#define M_GetButtonCount ( M_WITH_RETURN | 28 )
+#define M_GetButtonId ( M_WITH_RETURN | 29 )
+
+#define M_IsFadeIn ( M_WITH_RETURN | 30 )
+#define M_IsPin ( M_WITH_RETURN | 31 )
+
+// Statusbar
+#define M_StatusGetText ( M_WITH_RETURN | 32 )
+#define M_StatusIsProgress ( M_WITH_RETURN | 33 )
+#define M_StatusGetItemCount ( M_WITH_RETURN | 34 )
+#define M_StatusGetItemId ( M_WITH_RETURN | 35 )
+
+//
+#define M_GetMouseStyle ( M_WITH_RETURN | 36 )
+
+// support for Messagebox with checkbox
+#define M_GetCheckBoxText ( M_WITH_RETURN | 37 )
+
+// Scrollbars
+#define M_HasScrollBar ( M_WITH_RETURN | 38 )
+#define M_IsScrollBarEnabled ( M_WITH_RETURN | 39 )
+
+// Dieser befehl wird nur intern im Controller (sts library) verwendet. Sie tauchen nicht im Testtool auf!
+#define _M_IsEnabled ( M_WITH_RETURN | 50 )
+
+
+#define M_GetFixedTextCount ( M_WITH_RETURN | 51 )
+#define M_GetFixedText ( M_WITH_RETURN | 52 )
+
+
+#define M_IsMin ( M_WITH_RETURN | 53 )
+#define M_IsRestore ( M_WITH_RETURN | 54 )
+
+#define M_GetItemType ( M_WITH_RETURN | 55 )
+
+// Commands for (Edit)BrowseBox
+#define M_GetColumnCount ( M_WITH_RETURN | 56 )
+#define M_GetRowCount ( M_WITH_RETURN | 57 )
+#define M_IsEditing ( M_WITH_RETURN | 58 )
+
+#define M_IsItemEnabled ( M_WITH_RETURN | 59 )
+
+//#define M_SOFFICE 0x0800 // Command valid for Star/Open Office
+//#define M_MOZILLA 0x1000 // Command valid for Mozilla
+
+
+// RemoteCommands
+#define RC_AppAbort ( M_SOFFICE | M_MOZILLA | 1 )
+#define RC_SetClipboard ( M_SOFFICE | M_MOZILLA | 2 )
+#define RC_NoDebug ( M_SOFFICE | M_MOZILLA | 3 )
+#define RC_Debug ( M_SOFFICE | M_MOZILLA | 4 )
+#define RC_GPF ( M_SOFFICE | M_MOZILLA | 5 )
+#define RC_DisplayHid ( M_SOFFICE | M_MOZILLA | 6 )
+#define RC_AppDelay ( M_SOFFICE | M_MOZILLA | 7 )
+#define RC_UseBindings ( M_SOFFICE | 8 )
+#define RC_Profile ( M_SOFFICE | M_MOZILLA | 9 )
+// (Popup)Menu
+#define RC_MenuSelect ( M_SOFFICE | M_MOZILLA | 10 )
+#define RC_SetControlType ( M_SOFFICE | 11 ) // deprecated since RTTI
+// RemoteFileAccess
+#define RC_Kill ( M_SOFFICE | 12 )
+#define RC_RmDir ( M_SOFFICE | 13 )
+#define RC_MkDir ( M_SOFFICE | 14 )
+#define RC_FileCopy ( M_SOFFICE | 15 )
+#define RC_Name ( M_SOFFICE | 16 )
+
+#define RC_CaptureAssertions (M_SOFFICE | M_MOZILLA | 17 )
+#define RC_Assert ( M_SOFFICE | M_MOZILLA | 18 )
+
+#define RC_MenuOpen ( M_SOFFICE | M_MOZILLA | 19 )
+
+#define RC_TypeKeysDelay ( M_SOFFICE | M_MOZILLA | 20 )
+
+#define RC_ShowBar ( M_MOZILLA | 21 )
+
+#define RC_LoadURL ( M_MOZILLA | 22 )
+
+#define RC_CloseSysDialog ( M_SOFFICE | 23 )
+
+#define RC_SAXRelease ( M_SOFFICE | 24 )
+
+#define RC_RecordMacro ( M_SOFFICE | 25 )
+
+#define RC_ActivateDocument ( M_SOFFICE | 26 )
+
+#define RC_CatchGPF ( M_SOFFICE | 27 )
+
+#define _RC_LAST_NO_RETURN 27
+
+#if ( _RC_LAST_NO_RETURN >= M_WITH_RETURN )
+#error "Bereich überschritten"
+#endif
+
+// Befehle mit Returnwert
+#define RC_GetClipboard ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 1 )
+#define RC_WinTree ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 2 )
+#define RC_ResetApplication ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 3 )
+#define RC_GetNextCloseWindow ( M_SOFFICE | M_WITH_RETURN | 4 )
+#define RC_ApplicationBusy ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 5 )
+// (Popup)Menu
+#define RC_MenuGetItemCount ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 6 )
+#define RC_MenuGetItemId ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 7 )
+#define RC_MenuGetItemPos ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 8 )
+#define RC_MenuIsSeperator ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 9 )
+#define RC_MenuIsItemChecked ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 10 )
+#define RC_MenuIsItemEnabled ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 11 )
+#define RC_MenuGetItemText ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 12 )
+// RemoteFileAccess
+#define RC_Dir ( M_SOFFICE | M_WITH_RETURN | 18 )
+#define RC_FileLen ( M_SOFFICE | M_WITH_RETURN | 19 )
+#define RC_FileDateTime ( M_SOFFICE | M_WITH_RETURN | 20 )
+
+#define RC_Translate ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 21 )
+#define RC_GetMouseStyle ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 22 )
+#define RC_UnpackStorage ( M_SOFFICE | M_WITH_RETURN | 23 )
+
+#define RC_IsBarVisible ( M_MOZILLA | M_WITH_RETURN | 24 )
+
+#define RC_MenuGetItemCommand ( M_SOFFICE | M_MOZILLA | M_WITH_RETURN | 25 )
+
+#define RC_ExistsSysDialog ( M_SOFFICE | M_WITH_RETURN | 26 )
+
+#define RC_SAXCheckWellformed ( M_SOFFICE | M_WITH_RETURN | 27 )
+#define RC_SAXReadFile ( M_SOFFICE | M_WITH_RETURN | 28 )
+
+#define RC_SAXGetNodeType ( M_SOFFICE | M_WITH_RETURN | 29 )
+#define RC_SAXGetElementName ( M_SOFFICE | M_WITH_RETURN | 30 )
+#define RC_SAXGetChars ( M_SOFFICE | M_WITH_RETURN | 31 )
+#define RC_SAXGetChildCount ( M_SOFFICE | M_WITH_RETURN | 32 )
+#define RC_SAXGetAttributeCount ( M_SOFFICE | M_WITH_RETURN | 33 )
+#define RC_SAXGetAttributeName ( M_SOFFICE | M_WITH_RETURN | 34 )
+#define RC_SAXGetAttributeValue ( M_SOFFICE | M_WITH_RETURN | 35 )
+#define RC_SAXSeekElement ( M_SOFFICE | M_WITH_RETURN | 36 )
+#define RC_SAXHasElement ( M_SOFFICE | M_WITH_RETURN | 37 )
+#define RC_SAXGetElementPath ( M_SOFFICE | M_WITH_RETURN | 38 )
+
+#define RC_GetDocumentCount ( M_SOFFICE | M_WITH_RETURN | 39 )
+
+#define RC_GetSystemLanguage ( M_SOFFICE | M_WITH_RETURN | 40 )
+
+#define RC_IsProduct ( M_SOFFICE | M_WITH_RETURN | 41 )
+
+#define RC_MenuHasSubMenu ( M_SOFFICE | M_WITH_RETURN | 42 )
+
+#define RC_UsePostEvents ( M_SOFFICE | M_WITH_RETURN | 43 )
+
+#define RC_WaitSlot ( M_SOFFICE | M_WITH_RETURN | 44 )
+
+// Flow Control
+#define F_EndCommandBlock 101 // Initiiert Rückmeldung des Status
+#define F_Sequence 102 // Übergibt Sequence Nummer (1. in jedem Stream)
+
+// Return codes
+#define RET_Sequence 132 // Übergibt Sequence Nummer (1. in jedem Stream)
+#define RET_Value 133 // Übergibt Return-wert
+#define RET_WinInfo 134 // Information über aktuelles Fenster/Control
+#define RET_ProfileInfo 135 // Profile Information
+#define RET_DirectLoging 136 // Direktes Übertragen von Informationen in das Log
+#define RET_MacroRecorder 137 // MakroRecorder Befehl übertragen
+
+
+
+// Subcodes die in nUId geliefert werden
+// für F_ProfileInfo
+#define S_ProfileReset 201 // nNr1 = Anzahl Borders
+ // Achtung!! Diese Defines müssen aufeinanderfolgende Nummern haben!!
+#define S_ProfileBorder1 202 // nNr1 = Border1 in ms
+#define S_ProfileBorder2 203 // nNr1 = Border2 in ms
+#define S_ProfileBorder3 204 // nNr1 = Border3 in ms
+#define S_ProfileBorder4 205 // nNr1 = Border4 in ms
+ // Achtung Ende
+#define S_ProfileTime 210 // nNr1 = remote Zeit des Befehls
+#define S_ProfileDump 211 // Gibt die daten aus.
+
+// für F_DirectLoging
+#define S_AssertError 220
+#define S_AssertWarning 221
+#define S_AssertTrace 222
+#define S_QAError 223
+
+
+
+// Constants which are available in VCLTestTool scripts
+
+// Different types of controls recognized via RTTI
+#define CONST_CTBrowseBox 100
+#define CONST_CTValueSet 103
+#define CONST_CTORoadmap 104
+#define CONST_CTIExtensionListBox 105
+#define CONST_CTTableControl 106
+#define CONST_CTUnknown 199
+
+// Konstanten für das ALignment des gesuchten Splitters
+#define CONST_ALIGN_LEFT 120
+#define CONST_ALIGN_TOP 121
+#define CONST_ALIGN_RIGHT 122
+#define CONST_ALIGN_BOTTOM 123
+
+/// What dialog to use in RC_CloseSysDialog or RC_ExistsSysDialog
+#define CONST_FilePicker 301
+#define CONST_FolderPicker 302
+
+/// NodeTypes of the SAX Parser
+#define CONST_NodeTypeCharacter 555
+#define CONST_NodeTypeElement 556
+#define CONST_NodeTypeComment 557
+
+/// ItemTypes for TreeListBox and maybe others
+#define CONST_ItemTypeText 602
+#define CONST_ItemTypeBMP 601
+#define CONST_ItemTypeCheckbox 600
+#define CONST_ItemTypeContextBMP 603
+#define CONST_ItemTypeUnknown 604
+
+/// Return values for WaitSlot
+#define CONST_WSTimeout 701
+#define CONST_WSAborted 702
+#define CONST_WSFinished 703
+
+// Beschreibt die Parametertypen als Bitfeld Reihenfolge immer!
+// wie hier Aufgelistet
+#define PARAM_NONE 0x0000
+#define PARAM_USHORT_1 0x0001
+#define PARAM_USHORT_2 0x0002
+#define PARAM_USHORT_3 0x0100 // Nicht in der Reihe!!
+#define PARAM_USHORT_4 0x0200 // Nicht in der Reihe!!
+#define PARAM_ULONG_1 0x0004
+#define PARAM_ULONG_2 0x0008
+#define PARAM_STR_1 0x0010
+#define PARAM_STR_2 0x0020
+#define PARAM_BOOL_1 0x0040
+#define PARAM_BOOL_2 0x0080
+#define PARAM_SBXVALUE_1 0x0400 // hier mit 0x0400 Weiter!!! Siehe Oben!
+
+// Zusätzliche Beschreibung!! wird auch mit dem Rest verodert
+//#define PARAM_STR_RAW 0x8000 // Der Zeichensatz der Strings wird nicht konvertiert(für Fareastern)
+
+
+#define ERR_SEND_TIMEOUT 100
+#define ERR_EXEC_TIMEOUT 101
+#define ERR_RESTART_FAIL 102
+#define ERR_RESTART 103
+#define ERR_NO_WIN 104 // Keine *.Win Dateien gefunden
+#define ERR_NO_SID 105 // Keine *.Sid Dateien gefunden
+#define ERR_NO_FILE 106 // Datei nicht gefunden
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/inc/sttresid.hxx b/automation/source/inc/sttresid.hxx
new file mode 100644
index 000000000000..3ccfe483a8f4
--- /dev/null
+++ b/automation/source/inc/sttresid.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _STTRESID_HXX_
+#define _STTRESID_HXX_
+
+#include <tools/resmgr.hxx>
+#include <tools/resid.hxx>
+
+class SttResId : public ResId
+{
+ static ResMgr* getSttResMgr();
+ public:
+ SttResId( sal_uInt32 nId ) : ResId( nId, *getSttResMgr() ) {}
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/inc/svcommstream.hxx b/automation/source/inc/svcommstream.hxx
new file mode 100644
index 000000000000..0cf289147f04
--- /dev/null
+++ b/automation/source/inc/svcommstream.hxx
@@ -0,0 +1,59 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <tools/stream.hxx>
+
+#include <automation/commtypes.hxx>
+#include "icommstream.hxx"
+
+
+class SvCommStream : public ICommStream
+{
+protected:
+ SvStream* pStream;
+public:
+
+ SvCommStream( SvStream* pIO );
+ ~SvCommStream();
+
+ ICommStream& operator>>( comm_USHORT& rUShort );
+ ICommStream& operator>>( comm_ULONG& rULong );
+ ICommStream& operator>>( comm_BOOL& rChar );
+
+ ICommStream& operator<<( comm_USHORT nUShort );
+ ICommStream& operator<<( comm_ULONG nULong );
+ ICommStream& operator<<( comm_BOOL nChar );
+
+ comm_ULONG Read( void* pData, comm_ULONG nSize );
+ comm_ULONG Write( const void* pData, comm_ULONG nSize );
+
+ comm_BOOL IsEof() const;
+ comm_ULONG SeekRel( long nPos );
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/inc/testapp.hxx b/automation/source/inc/testapp.hxx
new file mode 100644
index 000000000000..6760fb229af7
--- /dev/null
+++ b/automation/source/inc/testapp.hxx
@@ -0,0 +1,198 @@
+/* -*- 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 TESTAPP_HXX
+#define TESTAPP_HXX
+
+#include <basic/sbmod.hxx>
+#include <basic/testtool.hxx>
+#include <vcl/smartid.hxx>
+
+class CommunicationLink;
+class CommunicationManagerClientViaSocketTT;
+class CNames;
+class ControlItemUId;
+class CRevNames;
+//class SbxTransportVariableRef;
+class ControlsRef;
+class CmdStream;
+class FloatingLoadConf;
+class TestToolObj;
+class ControlDef;
+
+class SbxTransportMethod;
+class Application;
+
+class SotStorage;
+
+class ImplTestToolObj;
+class MyBasic;
+
+class ErrorEntry
+{
+public:
+ ErrorEntry(ULONG nNr, String aStr = String()) : nError(nNr),aText(aStr),nLine(0),nCol1(0),nCol2(0) {}
+ ErrorEntry(ULONG nNr, String aStr, xub_StrLen l, xub_StrLen c1, xub_StrLen c2 )
+ : nError(nNr),aText(aStr),nLine(l),nCol1(c1),nCol2(c2) {}
+ ULONG nError;
+ String aText;
+ xub_StrLen nLine;
+ xub_StrLen nCol1;
+ xub_StrLen nCol2;
+};
+
+SV_DECL_PTRARR_DEL(CErrors, ErrorEntry*, 1, 1)
+
+struct ControlDefLoad {
+ const char* Kurzname;
+ ULONG nUId;
+};
+
+class TestToolObj: public SbxObject
+{
+ friend class TTBasic;
+ friend class Controls;
+public:
+ TestToolObj( String aName, String aFilePath ); // Alle Dateien in FilePath, Kein IPC
+ TestToolObj( String aName, MyBasic* pBas ); // Pfade aus INI, IPC benutzen
+ ~TestToolObj();
+ void LoadIniFile(); // Laden der IniEinstellungen, die durch den ConfigDialog geändert werden können
+ void DebugFindNoErrors( BOOL bDebugFindNoErrors );
+
+private:
+ BOOL bWasPrecompilerError; // True wenn beim letzten Precompile ein Fehler auftrat
+ BOOL CError( ULONG, const String&, xub_StrLen, xub_StrLen, xub_StrLen );
+ void CalcPosition( String const &aSource, xub_StrLen nPos, xub_StrLen &l, xub_StrLen &c );
+ xub_StrLen ImplSearch( const String &aSource, const xub_StrLen nStart, const xub_StrLen nEnd, const String &aSearch, const xub_StrLen nSearchStart = 0 );
+ xub_StrLen PreCompilePart( String &aSource, xub_StrLen nStart, xub_StrLen nEnd, String aFinalErrorLabel, USHORT &nLabelCount );
+ void PreCompileDispatchParts( String &aSource, String aStart, String aEnd, String aFinalLable );
+public:
+ String GetRevision(String const &aSourceIn); // find Revision in the sourcecode
+ String PreCompile(String const &aSourceIn); // try catch; testcase endcase ..
+ BOOL WasPrecompilerError(); // True wenn beim letzten Precompile ein Fehler auftrat
+ void SFX_NOTIFY( SfxBroadcaster&, const TypeId&, const SfxHint& rHint, const TypeId& );
+ virtual SbxVariable* Find( const String&, SbxClassType );
+// String aKeyPlusClasses; // Pfad für keycodes & classes & res_type (Aus Configdatei)
+ DECL_LINK( ReturnResultsLink, CommunicationLink* );
+ BOOL ReturnResults( SvStream *pIn ); // Rücklieferung des Antwortstreams über IPC oder TCP/IP oder direkt
+
+ void SetLogHdl( const Link& rLink ) { aLogHdl = rLink; }
+ const Link& GetLogHdl() const { return aLogHdl; }
+
+ void SetWinInfoHdl( const Link& rLink ) { aWinInfoHdl = rLink; }
+ const Link& GetWinInfoHdl() const { return aWinInfoHdl; }
+
+ void SetModuleWinExistsHdl( const Link& rLink ) { aModuleWinExistsHdl = rLink; }
+ const Link& GetModuleWinExistsHdl() const { return aModuleWinExistsHdl; }
+
+ void SetCErrorHdl( const Link& rLink ) { aCErrorHdl = rLink; }
+ const Link& GetCErrorHdl() const { return aCErrorHdl; }
+
+ void SetWriteStringHdl( const Link& rLink ) { aWriteStringHdl = rLink; }
+ const Link& GetWriteStringHdl() const { return aWriteStringHdl; }
+
+ SfxBroadcaster& GetTTBroadcaster();
+
+private:
+ ImplTestToolObj *pImpl; // Alles was von der Implementation abhängt
+ static const CErrors* GetFehlerListe() { return pFehlerListe; }
+ BOOL bUseIPC;
+ Link aLogHdl; // Zum Logen der Fehlermeldungen im Testtool
+ Link aWinInfoHdl; // Anzeigen der Windows/Controls der zu testenden App
+ Link aModuleWinExistsHdl; // Prüft ob das Modul schon im Editor geladen ist
+ Link aCErrorHdl; // Melden von Compilererror
+ Link aWriteStringHdl; // Schreiben von text (e.g. MakroRecorder)
+ BOOL bReturnOK; // Bricht WaitForAnswer ab
+ CRevNames *pShortNames; // Aktuell verwendete Controls, zur gewinnung des Namens aus Fehlermeldung
+ ULONG nSequence; // Sequence um Antwort und Anfrage zu syncronisieren
+ SmartId aNextReturnId; // Id des Returnwertes i.e. UId
+ void ReplaceNumbers(String &aText); // Zahlen im String mit speziellem Format in Namen umwandeln
+
+ String aLastRecordedKontext;// Keeps the last kontext recorded by the Macro Recorder
+
+#define FLAT TRUE
+ String ProgPath; // Dateiname der zu Testenden APP; Gesetzt über Start
+ String aLogFileName; // Momentaner Logfilename (Wie Programmdatei aber mit .res)
+ BOOL IsBlock; // Innerhalb Begin/EndBlock
+ BOOL SingleCommandBlock; // Implizit um jedes kommando ein Begin/EndBlock
+ CmdStream *In;
+
+ void AddName(String &aBisher, String &aNeu ); // Name eventuell mit / anhängen
+ void AddToListByNr( CNames *&pControls, ControlItemUId *&pNewItem ); //
+ CNames *m_pControls;
+ CNames *m_pNameKontext; // Zeigt auf den aktuellen Namenskontext, der über 'Kontext' gesetzt wurde
+ CNames *m_pSIds;
+ CNames *m_pReverseSlots; // Slots mit Kurznamen nach Nummer
+ CNames *m_pReverseControls; // Controls mit Kurznamen nach Nummer
+ CNames *m_pReverseControlsSon;// Controls mit Kurznamen nach Nummer nach Fenstern (Son)
+ CNames *m_pReverseUIds; // Langnamen nach Nummer
+
+
+ USHORT nMyVar; // Wievielte Var aus Pool ist dran
+
+ void InitTestToolObj();
+ CommunicationManagerClientViaSocketTT *pCommunicationManager;
+ void SendViaSocket();
+
+ BOOL Load( String aFileName, SbModule *pMod );
+
+ void ReadNames( String Filename, CNames *&pNames, CNames *&pUIds, BOOL bIsFlat = FALSE );
+ void ReadFlat( String Filename, CNames *&pNames, BOOL bSortByName );
+ BOOL ReadNamesBin( String Filename, CNames *&pSIds, CNames *&pControls );
+ BOOL WriteNamesBin( String Filename, CNames *pSIds, CNames *pControls );
+ void ReadHidLstByNumber();
+ void SortControlsByNumber( BOOL bIncludeActive = FALSE );
+
+ String GetMethodName( ULONG nMethodId );
+ String GetKeyName( USHORT nKeyCode );
+
+ void WaitForAnswer ();
+ DECL_LINK( IdleHdl, Application* );
+ DECL_LINK( CallDialogHandler, Application* );
+ String aDialogHandlerName;
+ USHORT nWindowHandlerCallLevel;
+
+ USHORT nIdleCount;
+ // wenn DialogHandler gesetzt wird er im IdleHandler inkrementiert und
+ // in WaitForAnswer rückgesetzt. Übersteigt er einen gewissen wert, gehe ich davon aus,
+ // daß WaitForAnswer still ligt und rufe die DialogHander Sub im BASIC auf.
+
+ void BeginBlock();
+ void EndBlock();
+
+ SbTextType GetSymbolType( const String &rSymbol, BOOL bWasControl );
+ static ControlDefLoad const arR_Cmds[];
+ static CNames *pRCommands;
+
+ static CErrors *pFehlerListe; // Hier werden die Fehler des Testtools gespeichert
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/inc/testtool.hxx b/automation/source/inc/testtool.hxx
new file mode 100644
index 000000000000..78a56b3160eb
--- /dev/null
+++ b/automation/source/inc/testtool.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 SVTOOLS_TESTTOOL_HXX
+#define SVTOOLS_TESTTOOL_HXX
+
+#include <tools/solar.h>
+#include <tools/link.hxx>
+#include <vcl/timer.hxx>
+
+class Application;
+class SvStream;
+
+class StatementFlow;
+class CommunicationManager;
+class CommunicationLink;
+#if OSL_DEBUG_LEVEL > 1
+class EditWindow;
+#endif
+class ImplRC;
+
+class ImplRemoteControl
+{
+ friend class StatementFlow;
+
+ BOOL m_bIdleInserted;
+ AutoTimer m_aIdleTimer;
+ BOOL m_bInsideExecutionLoop;
+#if OSL_DEBUG_LEVEL > 1
+ EditWindow *m_pDbgWin;
+#endif
+
+public:
+ ImplRemoteControl();
+ ~ImplRemoteControl();
+ BOOL QueCommands( ULONG nServiceId, SvStream *pIn );
+ SvStream* GetReturnStream();
+
+ DECL_LINK( IdleHdl, Application* );
+ DECL_LINK( CommandHdl, Application* );
+
+ DECL_LINK( QueCommandsEvent, CommunicationLink* );
+
+protected:
+ CommunicationManager *pServiceMgr;
+ SvStream *pRetStream;
+};
+
+#endif // SVTOOLS_TESTTOOL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/miniapp/editwin.cxx b/automation/source/miniapp/editwin.cxx
new file mode 100644
index 000000000000..5568b5152320
--- /dev/null
+++ b/automation/source/miniapp/editwin.cxx
@@ -0,0 +1,127 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+#include "editwin.hxx"
+#include <tools/stream.hxx>
+#include <vcl/msgbox.hxx>
+
+
+BOOL GHEditWindow::Close()
+{
+ if (aInhalt.IsModified())
+ {
+ }
+ delete(this);
+ return TRUE;
+}
+
+void GHEditWindow::Resize()
+{
+ aInhalt.SetPosSizePixel(Point(1,1),GetOutputSizePixel());
+}
+
+GHEditWindow::GHEditWindow(Window * pParent, String aName, WinBits iWstyle)
+: FloatingWindow(pParent)
+, aInhalt(this,iWstyle)
+{
+ SetOutputSizePixel( Size( 120,80 ) );
+ Show();
+ Resize();
+ aInhalt.Show();
+ SetText(aName);
+}
+
+void GHEditWindow::Clear()
+{
+ aInhalt.SetText(String());
+}
+
+void GHEditWindow::AddText( String aNew, BOOL bMoveToEnd)
+{
+ String aOld = aInhalt.GetText();
+
+ aOld += aNew;
+ aOld.ConvertLineEnd();
+ aInhalt.SetText(aOld);
+ if (bMoveToEnd)
+ aInhalt.SetSelection(Selection(SELECTION_MAX,SELECTION_MAX));
+}
+
+
+EditFileWindow::EditFileWindow(Window * pParent, String aName, WinBits iWstyle)
+: GHEditWindow(pParent, aName, iWstyle)
+, aFileName(aName)
+{
+ LoadFile();
+}
+
+void EditFileWindow::LoadFile()
+{
+
+ SvFileStream Stream;
+ String All,Line;
+
+ Stream.Open(aFileName, STREAM_STD_READ);
+
+ if (!Stream.IsOpen())
+ {
+ AddText(CUniString("could not open ").Append(aFileName).AppendAscii("\n"));
+ aFileName.Erase();
+ return;
+ }
+
+ while (!Stream.IsEof())
+ {
+
+ Stream.ReadByteStringLine( Line, RTL_TEXTENCODING_UTF8 );
+
+ All += Line;
+ All += '\n';
+
+ }
+
+ All.ConvertLineEnd();
+
+ AddText(All,FALSE);
+
+}
+
+BOOL EditFileWindow::Close()
+{
+
+ if (aInhalt.IsModified() && QueryBox(this,WB_DEF_YES | WB_YES_NO_CANCEL, String(aFileName).AppendAscii("\nhas been changed.\n\nSave file?")).Execute())
+ {
+
+ }
+ return GHEditWindow::Close();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/miniapp/editwin.hxx b/automation/source/miniapp/editwin.hxx
new file mode 100644
index 000000000000..bf7cbfa3ca34
--- /dev/null
+++ b/automation/source/miniapp/editwin.hxx
@@ -0,0 +1,70 @@
+/* -*- 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 _editwin
+#define _editwin
+
+#include <basic/ttstrhlp.hxx>
+#include <vcl/floatwin.hxx>
+#include <svtools/svmedit.hxx>
+
+class GHEditWindow : public FloatingWindow
+{
+
+protected:
+
+ MultiLineEdit aInhalt;
+
+ virtual BOOL Close(); // derived
+ void Resize();
+
+public:
+
+ GHEditWindow();
+ GHEditWindow(Window * pParent, String aName = CUniString("Neues Fenster"), WinBits iWstyle = WB_STDWORK);
+
+ void Clear();
+ void AddText( String aNew, BOOL bMoveToEnd = TRUE);
+};
+
+
+
+class EditFileWindow : public GHEditWindow
+{
+
+ String aFileName;
+ virtual BOOL Close(); // derived
+ void LoadFile();
+
+public:
+ EditFileWindow(Window * pParent, String aName = CUniString("Neue Datei"), WinBits iWstyle = WB_STDWORK);
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/miniapp/hid.lst b/automation/source/miniapp/hid.lst
new file mode 100644
index 000000000000..99964dba02e8
--- /dev/null
+++ b/automation/source/miniapp/hid.lst
@@ -0,0 +1,27 @@
+MENU_CLIENT 256
+IDM_FILE 1
+IDM_FILE_OPEN_TEST 2
+IDM_FILE_EXIT 3
+IDM_FILE_EXIT_HELP 0
+IDM_FILE_OPEN_TEST_HELP 1
+IDM_FILE_HELP 3
+GROSSER_TEST_DLG 256
+IDM_TEST 5
+IDM_TEST_GROSS 6
+IDM_SYS_DLG 7
+IDM_TEST_WINTREE 8
+
+
+
+UID_GROSSER_TEST_DLG 101
+UID_CheckBox 202
+UID_TriStateBox 303
+UID_OKButton 404
+UID_TimeField 505
+UID_MultiLineEdit 606
+UID_RadioButton1 707
+UID_RadioButton2 708
+UID_MultiListBox 809
+UID_ComboBox 910
+UID_DateBox 1011
+
diff --git a/automation/source/miniapp/makefile.mk b/automation/source/miniapp/makefile.mk
new file mode 100644
index 000000000000..14a6d1ff0e1d
--- /dev/null
+++ b/automation/source/miniapp/makefile.mk
@@ -0,0 +1,54 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=automation
+TARGET=miniapp
+
+# --- Settings ------------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ------------------------------------------------------------
+
+OBJFILES = \
+ $(OBJ)$/testapp.obj \
+ $(OBJ)$/editwin.obj \
+ $(OBJ)$/servres.obj
+
+
+EXCEPTIONSFILES= \
+ $(OBJ)$/testapp.obj
+
+SRS1NAME=$(TARGET)
+SRC1FILES = \
+ servres.src
+
+# --- Targets ------------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/automation/source/miniapp/servres.cxx b/automation/source/miniapp/servres.cxx
new file mode 100644
index 000000000000..3cbb4bf3c80c
--- /dev/null
+++ b/automation/source/miniapp/servres.cxx
@@ -0,0 +1,62 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <string.h>
+
+#include "servres.hrc"
+#include "servuid.hxx"
+#include "servres.hxx"
+
+
+ModalDialogGROSSER_TEST_DLG::ModalDialogGROSSER_TEST_DLG( Window * pParent, const ResId & rResId, BOOL bFreeRes )
+ : ModalDialog( pParent, rResId ),
+ aCheckBox1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aTriStateBox1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aOKButton1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aTimeField1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aMultiLineEdit1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aGroupBox1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aRadioButton1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aRadioButton2( this, ResId( 2, *rResId.GetResMgr() ) ),
+ aMultiListBox1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aComboBox1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aDateBox1( this, ResId( 1, *rResId.GetResMgr() ) ),
+ aFixedText1( this, ResId( 1, *rResId.GetResMgr() ) )
+{
+ if( bFreeRes ) FreeResource();
+}
+
+MenuMENU_CLIENT::MenuMENU_CLIENT( const ResId & rResId, BOOL )
+ : MenuBar( rResId )
+{
+ // No subresources, automatic free resource
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/miniapp/servres.hrc b/automation/source/miniapp/servres.hrc
new file mode 100644
index 000000000000..2f95a34a60b6
--- /dev/null
+++ b/automation/source/miniapp/servres.hrc
@@ -0,0 +1,40 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+/* StarView ressource header file */
+#define MENU_CLIENT 256
+#define IDM_FILE 1
+#define IDM_FILE_OPEN_TEST 2
+#define IDM_FILE_EXIT 3
+#define IDM_FILE_EXIT_HELP 4
+#define IDM_FILE_OPEN_TEST_HELP 1
+#define IDM_FILE_HELP 3
+#define GROSSER_TEST_DLG 256
+#define IDM_TEST 5
+#define IDM_TEST_GROSS 6
+#define IDM_SYS_DLG 7
+#define IDM_TEST_WINTREE 8
+
diff --git a/automation/source/miniapp/servres.hxx b/automation/source/miniapp/servres.hxx
new file mode 100644
index 000000000000..c93c758ec229
--- /dev/null
+++ b/automation/source/miniapp/servres.hxx
@@ -0,0 +1,65 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+#include <svtools/svmedit.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/field.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/group.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/lstbox.hxx>
+
+class ModalDialogGROSSER_TEST_DLG : public ModalDialog
+{
+protected:
+ CheckBox aCheckBox1;
+ TriStateBox aTriStateBox1;
+ OKButton aOKButton1;
+ TimeField aTimeField1;
+ MultiLineEdit aMultiLineEdit1;
+ GroupBox aGroupBox1;
+ RadioButton aRadioButton1;
+ RadioButton aRadioButton2;
+ MultiListBox aMultiListBox1;
+ ComboBox aComboBox1;
+ DateBox aDateBox1;
+ FixedText aFixedText1;
+public:
+ ModalDialogGROSSER_TEST_DLG( Window * pParent, const ResId & rResId, BOOL bFreeRes = TRUE );
+};
+
+class MenuMENU_CLIENT : public MenuBar
+{
+protected:
+public:
+ MenuMENU_CLIENT( const ResId & rResId, BOOL bFreeRes = TRUE );
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/miniapp/servres.src b/automation/source/miniapp/servres.src
new file mode 100644
index 000000000000..426be8b81532
--- /dev/null
+++ b/automation/source/miniapp/servres.src
@@ -0,0 +1,233 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "servres.hrc"
+#include "servuid.hxx"
+ModalDialog GROSSER_TEST_DLG
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ HelpID = UID_GROSSER_TEST_DLG ;
+ Pos = MAP_APPFONT ( 14 , 7 ) ;
+ Size = MAP_APPFONT ( 273 , 110 ) ;
+ Text = "Großer Testdialog" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ CheckBox 1
+ {
+ HelpID = UID_CheckBox ;
+ Pos = MAP_APPFONT ( 9 , 17 ) ;
+ Size = MAP_APPFONT ( 55 , 12 ) ;
+ Text = "CheckBox" ;
+ TabStop = TRUE ;
+ };
+ TriStateBox 1
+ {
+ HelpID = UID_TriStateBox ;
+ Pos = MAP_APPFONT ( 9 , 29 ) ;
+ Size = MAP_APPFONT ( 62 , 12 ) ;
+ Text = "TriStateBox" ;
+ TabStop = TRUE ;
+ };
+ OKButton 1
+ {
+ HelpID = 1 ;
+ Pos = MAP_APPFONT ( 132 , 92 ) ;
+ Size = MAP_APPFONT ( 64 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ TimeField 1
+ {
+ Border = TRUE ;
+ HelpID = UID_TimeField ;
+ Pos = MAP_APPFONT ( 9 , 92 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Spin = TRUE ;
+ };
+ MultiLineEdit 1
+ {
+ Border = TRUE ;
+ HelpID = UID_MultiLineEdit ;
+ Pos = MAP_APPFONT ( 172 , 6 ) ;
+ Size = MAP_APPFONT ( 94 , 48 ) ;
+ Text = "MultiLineEdit" ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ };
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 9 , 42 ) ;
+ Size = MAP_APPFONT ( 58 , 44 ) ;
+ Text = "GroupBox" ;
+ Group = TRUE ;
+ };
+ RadioButton 2
+ {
+ HelpID = UID_RadioButton2 ;
+ Pos = MAP_APPFONT ( 16 , 68 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "Radio2" ;
+ TabStop = TRUE ;
+ };
+ RadioButton 1
+ {
+ HelpID = UID_RadioButton1 ;
+ Pos = MAP_APPFONT ( 16 , 54 ) ;
+ Size = MAP_APPFONT ( 42 , 12 ) ;
+ Text = "Radio1" ;
+ TabStop = TRUE ;
+ };
+ MultiListBox 1
+ {
+ Border = TRUE ;
+ HelpID = UID_MultiListBox ;
+ Pos = MAP_APPFONT ( 76 , 6 ) ;
+ Size = MAP_APPFONT ( 86 , 48 ) ;
+ TabStop = TRUE ;
+ StringList =
+ {
+ < "MultiListBox" ; Default ; > ;
+ < "Zeile 2" ; Default ; > ;
+ < "Zeile 3" ; Default ; > ;
+ < "Zeile 4" ; Default ; > ;
+ < "Zeile 5" ; Default ; > ;
+ < "Zeile 6" ; Default ; > ;
+ < "Zeile 7" ; Default ; > ;
+ < "Zeile 8" ; Default ; > ;
+ < "Zeile 9" ; Default ; > ;
+ < "Zeile 10" ; Default ; > ;
+ };
+ };
+ ComboBox 1
+ {
+ HelpID = UID_ComboBox ;
+ Pos = MAP_APPFONT ( 76 , 58 ) ;
+ Size = MAP_APPFONT ( 86 , 55 ) ;
+ Text = "ComboBox" ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ AutoHScroll = TRUE ;
+ StringList =
+ {
+ "ComboBox" ;
+ "Erster" ;
+ "Zweiter" ;
+ "Dritter" ;
+ };
+ };
+ DateBox 1
+ {
+ HelpID = UID_DateBox ;
+ Pos = MAP_APPFONT ( 76 , 72 ) ;
+ Size = MAP_APPFONT ( 86 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ AutoHScroll = TRUE ;
+ StringList =
+ {
+ "1.1.91" ;
+ "2.2.92" ;
+ "3.3.93" ;
+ };
+ };
+ FixedText 1
+ {
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 19 , 6 ) ;
+ Size = MAP_APPFONT ( 39 , 9 ) ;
+ Text = "FixedText" ;
+ Center = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 202 , 92 ) ;
+ Size = MAP_APPFONT ( 64 , 12 ) ;
+ TabStop = TRUE ;
+ };
+};
+Menu MENU_CLIENT
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = IDM_FILE ;
+ HelpID = IDM_FILE_HELP ;
+ Text = "~File" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = IDM_FILE_OPEN_TEST ;
+ HelpID = IDM_FILE_OPEN_TEST_HELP ;
+ Text = "~Open Test Window" ;
+ };
+ MenuItem
+ {
+ Identifier = 4 ;
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = IDM_FILE_EXIT ;
+ HelpID = IDM_FILE_EXIT_HELP ;
+ Text = "~Beenden" ;
+ AccelKey = KeyCode
+ {
+ Code = KEY_F4 ;
+ Modifier2 = TRUE ;
+ };
+ };
+ };
+ };
+ };
+ MenuItem
+ {
+ Identifier = IDM_TEST ;
+ Text = "~Test" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = IDM_TEST_GROSS ;
+ Text = "~Großer Testdialog" ;
+ };
+ MenuItem
+ {
+ Identifier = IDM_SYS_DLG ;
+ Text = "~Sysdialoge" ;
+ };
+ };
+ };
+ };
+ };
+};
+
diff --git a/automation/source/miniapp/servuid.hxx b/automation/source/miniapp/servuid.hxx
new file mode 100644
index 000000000000..7460c097606a
--- /dev/null
+++ b/automation/source/miniapp/servuid.hxx
@@ -0,0 +1,40 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+#define UID_GROSSER_TEST_DLG 101
+#define UID_CheckBox 202
+#define UID_TriStateBox 303
+#define UID_OKButton 404
+#define UID_TimeField 505
+#define UID_MultiLineEdit 606
+#define UID_RadioButton1 707
+#define UID_RadioButton2 708
+#define UID_MultiListBox 809
+#define UID_ComboBox 910
+#define UID_DateBox 1011
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/miniapp/test.bas b/automation/source/miniapp/test.bas
new file mode 100644
index 000000000000..6d00e892fcb3
--- /dev/null
+++ b/automation/source/miniapp/test.bas
@@ -0,0 +1,126 @@
+'encoding UTF-8 Do not remove or change this line!
+sub main
+' cMassentest
+' DisplayHid
+ cTestdialog
+ cSysDlgTest
+ cFileOpenTest
+ SidWintree
+
+ FileExit
+end sub
+
+testcase cMassentest
+
+DisplayHid
+resetapplication
+FileDialog
+kontext "GrosserTestDlg"
+dim c,t,lang,i
+c = 0
+lang = "0123456789abcdef"
+lang = lang + lang
+lang = lang + lang
+lang = lang + lang
+lang = lang + lang
+lang = lang + lang
+lang = lang + lang
+
+lang = lang + lang
+lang = lang + lang
+nodebug
+while 1
+ c = c + 1
+ t = str(c)
+ MultiLineEdit.SetText t
+ CheckBox.check lang
+ CheckBox.uncheck lang
+ for i = 1 to 200 : next
+ beep
+wend
+
+endcase
+
+
+testcase cFileOpenTest
+
+ FileOpenTest
+ setclipboard wintree
+ kontext
+ active.cancel
+
+endcase
+
+
+testcase cSysDlgTest
+
+ SysDialogs
+ setclipboard wintree
+ kontext
+ active.yes
+ setclipboard wintree
+ active.ok
+ active.Cancel
+
+ SysDialogs
+ active.Cancel
+ active.ok
+
+endcase
+
+testcase cTestdialog
+
+ FileDialog
+
+ kontext "GrosserTestDlg"
+ CheckBox.uncheck
+ TriStateBox.tristate
+ 'OKButton
+' TimeField.settext("fhsdjk")
+ MultiLineEdit.SetText "Das war der Text: '"+MultiLineEdit.GetText+"'"
+ RadioButton1.check
+ RadioButton2.check
+' MultiListBox.select 2
+ ComboBox.select("Dritter")
+ DateBox.select("1.1.91")
+
+ GrosserTestDlg.ok
+
+endcase
+
+
+sub LoadIncludeFiles
+
+ start "miniapp.exe", "-enableautomation"
+
+ use "test.win"
+ use "test.sid"
+
+ testexit
+
+end sub
+
+sub testenter
+end sub
+
+sub testexit
+
+ dim xx
+ xx = resetapplication
+ if xx > "" then warnlog xx
+
+end sub
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/automation/source/miniapp/test.sid b/automation/source/miniapp/test.sid
new file mode 100644
index 000000000000..3af8966aa06b
--- /dev/null
+++ b/automation/source/miniapp/test.sid
@@ -0,0 +1,5 @@
+FileOpenTest IDM_FILE_OPEN_TEST
+FileExit IDM_FILE_EXIT
+FileDialog IDM_TEST_GROSS
+SidWintree IDM_TEST_WINTREE
+SysDialogs IDM_SYS_DLG
diff --git a/automation/source/miniapp/test.win b/automation/source/miniapp/test.win
new file mode 100644
index 000000000000..224ca5ad2d44
--- /dev/null
+++ b/automation/source/miniapp/test.win
@@ -0,0 +1,13 @@
+*active
+*GrosserTestDlg UID_GROSSER_TEST_DLG
+CheckBox UID_CheckBox
+TriStateBox UID_TriStateBox
+OKButton UID_OKButton
+TimeField UID_TimeField
+MultiLineEdit UID_MultiLineEdit
+RadioButton1 UID_RadioButton1
+RadioButton2 UID_RadioButton2
+MultiListBox UID_MultiListBox
+ComboBox UID_ComboBox
+DateBox UID_DateBox
+
diff --git a/automation/source/miniapp/testapp.cxx b/automation/source/miniapp/testapp.cxx
new file mode 100644
index 000000000000..539f4851b8e3
--- /dev/null
+++ b/automation/source/miniapp/testapp.cxx
@@ -0,0 +1,350 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <svtools/filedlg.hxx>
+#include <stdio.h>
+#include <vcl/msgbox.hxx>
+#include <tools/debug.hxx>
+#include <svtools/testtool.hxx>
+#include <svtools/ttprops.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <osl/process.h>
+#include <ucbhelper/contentbroker.hxx>
+#include <ucbhelper/configurationkeys.hxx>
+#include <comphelper/regpathhelper.hxx>
+#include <comphelper/processfactory.hxx>
+#include <cppuhelper/servicefactory.hxx>
+#include <com/sun/star/registry/XImplementationRegistration.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/ucb/XContentProviderManager.hpp>
+
+#include "servres.hrc"
+#include "servres.hxx"
+#include "testapp.hxx"
+
+using namespace comphelper;
+using namespace cppu;
+using namespace rtl;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::registry;
+using namespace com::sun::star::ucb;
+
+static ResMgr* pAppMgr = NULL;
+
+MainWindow::MainWindow(MyApp *pAppl)
+: WorkWindow(NULL, WB_STDWORK)
+, pApp(pAppl)
+{}
+
+IMPL_LINK(MainWindow,MenuSelectHdl,MenuBar*,aMenu)
+{
+
+ return pApp->GetDispatcher()->ExecuteFunction(aMenu->GetCurItemId());
+
+}
+
+void MainWindow::FileOpen()
+{
+ FileDialog Dlg(this,WB_OPEN );
+
+ Dlg.AddFilter(CUniString("Alle Dateien"), CUniString("*.*"));
+ Dlg.SetCurFilter (CUniString("*.*"));
+
+ if (Dlg.Execute() == RET_OK)
+ {
+ new EditFileWindow(this,Dlg.GetPath());
+ }
+}
+
+
+void MainWindow::TestGross()
+{
+ ModalDialogGROSSER_TEST_DLG Dlg(this,ResId(GROSSER_TEST_DLG, *pAppMgr));
+
+ if (Dlg.Execute() == RET_OK)
+ {
+ }
+}
+
+
+BOOL MainWindow::Close()
+{
+ WorkWindow::Close();
+ FileExit();
+ return TRUE;
+}
+
+void MainWindow::FileExit()
+{
+/* WriteSTBProfile();*/
+
+// if (pApp->CloseAll())
+ pApp->Quit();
+}
+
+
+void MainWindow::Tree(GHEditWindow *aEditWin, Window *pBase, USHORT Indent)
+{
+ String sIndent,aText;
+ sIndent.Expand(5*Indent);
+
+ aText = pBase->GetText();
+ aText.SearchAndReplaceAllAscii("\n",CUniString("\\n"));
+
+ aEditWin->AddText(String(sIndent).AppendAscii("Text: ").Append(aText).AppendAscii("\n"));
+ aEditWin->AddText(String(sIndent).AppendAscii("Help: ").Append(String::CreateFromInt64(pBase->GetHelpId())).AppendAscii(":").Append(pBase->GetQuickHelpText()).AppendAscii(":").Append(pBase->GetHelpText()).AppendAscii("\n"));
+
+ USHORT i;
+ for (i = 0 ; i < pBase->GetChildCount() ; i++)
+ {
+ Tree(aEditWin,pBase->GetChild(i),Indent+1);
+ }
+}
+
+void MainWindow::WinTree()
+{
+
+ GHEditWindow * aEditWin = new GHEditWindow(this,CUniString("Window Tree"));
+ Tree(aEditWin,this,0);
+
+}
+
+void MainWindow::SysDlg()
+{
+ switch (QueryBox(this,WB_YES_NO_CANCEL | WB_DEF_YES, CUniString("Want to open another Dialog?")).Execute())
+ {
+ case RET_YES:
+ while ( WarningBox(this,WB_OK_CANCEL | WB_DEF_OK,CUniString("Well this is the last box now!")).Execute() == RET_OK ) ;
+ break;
+ case RET_NO:
+ break;
+ case RET_CANCEL:InfoBox(this,CUniString("Oh well..")).Execute();
+ break;
+ }
+
+/*
+
+#define WB_OK ((WinBits)0x0010)
+#define WB_OK_CANCEL ((WinBits)0x0020)
+#define WB_YES_NO ((WinBits)0x0040)
+#define WB_YES_NO_CANCEL ((WinBits)0x0080)
+#define WB_RETRY_CANCEL ((WinBits)0x0100)
+
+#define WB_DEF_OK ((WinBits)0x0200)
+#define WB_DEF_CANCEL ((WinBits)0x0400)
+#define WB_DEF_RETRY ((WinBits)0x0800)
+#define WB_DEF_YES ((WinBits)0x1000)
+#define WB_DEF_NO ((WinBits)0x2000)
+
+#define RET_OK TRUE
+#define RET_CANCEL FALSE
+#define RET_YES 2
+#define RET_NO 3
+#define RET_RETRY 4
+*/
+}
+
+MyApp aApp;
+
+MyApp::MyApp()
+{
+ pMainWin = NULL;
+}
+
+void MyApp::Property( ApplicationProperty& rProp )
+{
+ TTProperties* pTTProperties = PTR_CAST( TTProperties, &rProp );
+ if ( pTTProperties )
+ {
+ pTTProperties->nPropertyVersion = TT_PROPERTIES_VERSION;
+ switch ( pTTProperties->nActualPR )
+ {
+/* case TT_PR_SLOTS:
+ {
+ pTTProperties->nSidOpenUrl = SID_OPENURL;
+ pTTProperties->nSidFileName = SID_FILE_NAME;
+ pTTProperties->nSidNewDocDirect = SID_NEWDOCDIRECT;
+ pTTProperties->nSidCopy = SID_COPY;
+ pTTProperties->nSidPaste = SID_PASTE;
+ pTTProperties->nSidSourceView = SID_SOURCEVIEW;
+ pTTProperties->nSidSelectAll = SID_SELECTALL;
+ pTTProperties->nSidReferer = SID_REFERER;
+ pTTProperties->nActualPR = 0;
+ }
+ break;*/
+ case TT_PR_DISPATCHER:
+ {
+ PlugInDispatcher* pDispatcher = GetDispatcher();
+ if ( !pDispatcher )
+ pTTProperties->nActualPR = TT_PR_ERR_NODISPATCHER;
+ else
+ {
+ pDispatcher->SetExecuteMode(EXECUTEMODE_DIALOGASYNCHRON);
+ if ( pDispatcher->ExecuteFunction(
+ pTTProperties->mnSID, pTTProperties->mppArgs, pTTProperties->mnMode )
+ == EXECUTE_NO )
+ pTTProperties->nActualPR = TT_PR_ERR_NOEXECUTE;
+ else
+ pTTProperties->nActualPR = 0;
+ }
+ }
+ break;
+/* case TT_PR_IMG:
+ {
+ SvDataMemberObjectRef aDataObject = new SvDataMemberObject();
+ SvData* pDataBmp = new SvData( FORMAT_BITMAP );
+ pDataBmp->SetData( pTTProperties->mpBmp );
+ aDataObject->Append( pDataBmp );
+ aDataObject->CopyClipboard();
+ pTTProperties->nActualPR = 0;
+ }
+ break;*/
+ default:
+ {
+ pTTProperties->nPropertyVersion = 0;
+ }
+ }
+ return;
+ }
+}
+
+
+USHORT MyDispatcher::ExecuteFunction( USHORT nSID, SfxPoolItem** ppArgs, USHORT nMode)
+{
+ (void) ppArgs; /* avoid warning about unused parameter */
+ (void) nMode; /* avoid warning about unused parameter */
+
+ switch (nSID)
+ {
+ case IDM_FILE_EXIT: pMainWin->FileExit(); break;
+ case IDM_FILE_OPEN_TEST: pMainWin->FileOpen(); break;
+ case IDM_TEST_GROSS: pMainWin->TestGross(); break;
+ case IDM_TEST_WINTREE: pMainWin->WinTree(); break;
+ case IDM_SYS_DLG: pMainWin->SysDlg(); break;
+ default:
+ {
+ DBG_ERROR1("Dispatcher kennt Funktion nicht %s",ByteString::CreateFromInt64(nSID).GetBuffer());
+ return EXECUTE_NO;
+ }
+
+ }
+ return EXECUTE_YES;
+}
+
+PlugInDispatcher* MyApp::GetDispatcher()
+{
+ return pMyDispatcher;
+}
+
+Reference< XContentProviderManager > InitializeUCB( void )
+{
+ OUString path;
+ if( osl_Process_E_None != osl_getExecutableFile( (rtl_uString**)&path ) )
+ {
+ InfoBox( NULL, String::CreateFromAscii( "Couldn't retrieve directory of executable" ) ).Execute();
+ exit( 1 );
+ }
+ OSL_ASSERT( path.lastIndexOf( '/' ) >= 0 );
+
+
+ ::rtl::OUStringBuffer bufServices( path.copy( 0, path.lastIndexOf( '/' )+1 ) );
+ bufServices.appendAscii("services.rdb");
+ OUString services = bufServices.makeStringAndClear();
+
+ ::rtl::OUStringBuffer bufTypes( path.copy( 0, path.lastIndexOf( '/' )+1 ) );
+ bufTypes.appendAscii("types.rdb");
+ OUString types = bufTypes.makeStringAndClear();
+
+
+ Reference< XMultiServiceFactory > xSMgr;
+ try
+ {
+ xSMgr = createRegistryServiceFactory( types, services, sal_True );
+ }
+ catch( com::sun::star::uno::Exception & exc )
+ {
+ fprintf( stderr, "Couldn't bootstrap uno servicemanager for reason : %s\n" ,
+ OUStringToOString( exc.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
+ InfoBox( NULL, String( exc.Message ) ).Execute();
+ throw ;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////
+ // set global factory
+ setProcessServiceFactory( xSMgr );
+
+// Create unconfigured Ucb:
+ Sequence< Any > aArgs;
+ ucbhelper::ContentBroker::initialize( xSMgr, aArgs );
+ Reference< XContentProviderManager > xUcb =
+ ucbhelper::ContentBroker::get()->getContentProviderManagerInterface();
+
+ Reference< XContentProvider > xFileProvider
+ ( xSMgr->createInstance( OUString::createFromAscii( "com.sun.star.ucb.FileContentProvider" ) ), UNO_QUERY );
+ xUcb->registerContentProvider( xFileProvider, OUString::createFromAscii( "file" ), sal_True );
+
+ return xUcb;
+}
+
+void MyApp::Main()
+{
+ Reference< XContentProviderManager > xUcb = InitializeUCB();
+ LanguageType aRequestedLanguage;
+ aRequestedLanguage = LanguageType( LANGUAGE_GERMAN );
+
+ AllSettings aSettings = GetSettings();
+ aSettings.SetUILanguage( aRequestedLanguage );
+ aSettings.SetLanguage( aRequestedLanguage );
+ SetSettings( aSettings );
+ pAppMgr = CREATEVERSIONRESMGR( tma );
+
+ MainWindow MainWin(this);
+ pMainWin = &MainWin;
+
+ MenuBar aMenu(ResId(MENU_CLIENT,*pAppMgr));
+ MainWin.SetMenuBar( &aMenu );
+ aMenu.GetPopupMenu( IDM_FILE )->SetSelectHdl(LINK(&MainWin, MainWindow, MenuSelectHdl));
+ aMenu.GetPopupMenu( IDM_TEST )->SetSelectHdl(LINK(&MainWin, MainWindow, MenuSelectHdl));
+
+ MyDispatcher MyDsp(pMainWin);
+ pMyDispatcher = &MyDsp;
+
+ MainWin.SetText(CUniString("Star Division Test Tool Client Window"));
+ MainWin.Show();
+
+ RemoteControl aRC;
+
+ Execute();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/miniapp/testapp.hxx b/automation/source/miniapp/testapp.hxx
new file mode 100644
index 000000000000..bc06f0bd9dce
--- /dev/null
+++ b/automation/source/miniapp/testapp.hxx
@@ -0,0 +1,109 @@
+/* -*- 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 _TESTAPP_HXX
+#define _TESTAPP_HXX
+
+#include <vcl/svapp.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/field.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/group.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/wrkwin.hxx>
+#include <svl/poolitem.hxx>
+
+
+#include "editwin.hxx"
+
+
+#define EXECUTE_NO 0
+#define EXECUTE_POSSIBLE 1
+#define EXECUTE_YES 2
+#define EXECUTEMODE_ASYNCHRON 1
+#define EXECUTEMODE_DIALOGASYNCHRON 2
+
+
+class MyApp;
+class MainWindow : public WorkWindow
+{
+ MyApp *pApp;
+
+public:
+ MainWindow(MyApp *pAppl);
+ virtual BOOL Close(); // derived
+
+ void FileExit();
+ void FileOpen();
+ void TestGross();
+ void Tree(GHEditWindow *aEditWin, Window *pBase, USHORT Indent);
+ void WinTree();
+ void SysDlg();
+ DECL_LINK(MenuSelectHdl,MenuBar*);
+
+};
+#define PlugInDispatcher MyDispatcher
+class MyDispatcher
+{
+ MainWindow *pMainWin;
+
+public:
+ MyDispatcher(MainWindow *MainWin) : pMainWin(MainWin) {};
+ virtual ~MyDispatcher() {};
+ virtual USHORT ExecuteFunction( USHORT nSID, SfxPoolItem** ppArgs = 0, USHORT nMode = 0);
+ virtual void SetExecuteMode( USHORT nMode )
+ {
+ (void) nMode; /* avoid warning about unused parameter */
+ }; // Ist hier sowieso egal
+};
+
+class MyApp : public Application
+{
+ PopupMenu *MyMenu;
+ Timer aCommandTimer;
+ PlugInDispatcher *pMyDispatcher;
+
+public:
+ MyApp();
+ void Main();
+
+ virtual void Property( ApplicationProperty& );
+ virtual PlugInDispatcher* GetDispatcher();
+
+ MainWindow *pMainWin;
+};
+
+// -----------------------------------------------------------------------
+
+extern MyApp aApp;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/mozillaserver/makefile.mk b/automation/source/mozillaserver/makefile.mk
new file mode 100644
index 000000000000..064f4284fd36
--- /dev/null
+++ b/automation/source/mozillaserver/makefile.mk
@@ -0,0 +1,153 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=automation
+TARGET=xxx
+USE_DEFFILE=TRUE
+NO_BSYMBOLIC=TRUE
+ENABLE_EXCEPTIONS=TRUE
+LIBTARGET=NO
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# ------------------------------------------------------------------
+
+PACKAGE := com$/sun$/star$/testtool
+TARGET := com_sun_star_testtool
+
+
+#RDB=$(SOLARBINDIR)$/applicat.rdb
+RDB=$(BIN)$/mozillatesttool.rdb
+
+
+GENJAVACLASSFILES = \
+ $(CLASSDIR)$/$(PACKAGE)$/XAction.class \
+ $(CLASSDIR)$/$(PACKAGE)$/XActionControl.class \
+ $(CLASSDIR)$/$(PACKAGE)$/XActionCommand.class \
+ $(CLASSDIR)$/$(PACKAGE)$/XActionControl.class \
+ $(CLASSDIR)$/$(PACKAGE)$/XActionFlow.class \
+ $(CLASSDIR)$/$(PACKAGE)$/XResult.class \
+ $(CLASSDIR)$/$(PACKAGE)$/ResultType.class \
+ $(CLASSDIR)$/$(PACKAGE)$/XMozillaTesttoolServer.class
+
+
+TYPES={$(subst,.class, $(subst,$/,. $(subst,$(CLASSDIR)$/,-T $(GENJAVACLASSFILES))))}
+GENJAVAFILES = {$(subst,.class,.java $(subst,$/class, $(GENJAVACLASSFILES)))}
+#JAVAFILES= $(GENJAVAFILES)
+
+
+
+UNOUCRDEP=$(RDB)
+UNOUCRRDB=$(RDB)
+
+UNOUCROUT=$(OUT)$/inc
+INCPRE+=$(OUT)$/inc
+
+UNOTYPES= \
+ com.sun.star.uno.TypeClass \
+ com.sun.star.uno.XAggregation \
+ com.sun.star.uno.XWeak \
+ com.sun.star.lang.XTypeProvider \
+ com.sun.star.lang.XServiceInfo \
+ com.sun.star.lang.XSingleServiceFactory \
+ com.sun.star.lang.XMultiServiceFactory \
+ com.sun.star.lang.XComponent \
+ com.sun.star.lang.XMain \
+ com.sun.star.loader.XImplementationLoader \
+ com.sun.star.registry.XRegistryKey \
+ com.sun.star.bridge.XUnoUrlResolver \
+ com.sun.star.container.XSet \
+ com.sun.star.testtool.XAction \
+ com.sun.star.testtool.XActionControl \
+ com.sun.star.testtool.XActionCommand \
+ com.sun.star.testtool.XActionControl \
+ com.sun.star.testtool.XActionFlow \
+ com.sun.star.testtool.XResult \
+ com.sun.star.testtool.ResultType \
+ com.sun.star.testtool.XMozillaTesttoolServer
+
+
+
+#SLOFILES= \
+# $(SLO)$/iserverproxy.obj \
+# $(SLO)$/broadcastclient.obj \
+# $(SLO)$/genericinformation.obj \
+# $(SLO)$/informationclient.obj
+
+# ---- test ----
+
+#LIB1TARGET=$(SLB)$/iserverproxy.lib
+#LIB1OBJFILES=$(SLOFILES)
+
+#SHL1TARGET=iserverproxy
+#SHL1STDLIBS= \
+# $(OSLLIB) $(RTLLIB) $(TOOLSLIB) \
+# $(CPPULIB) \
+# $(CPPUHELPERLIB) \
+# $(UNOLIB) \
+# $(SVTOOLLIB) \
+# $(SALLIB) \
+# $(BOOTSTRP)
+
+#SHL1LIBS= $(LIB1TARGET) $(LB)$/ico.lib
+#SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+#DEF1NAME= $(SHL1TARGET)
+#DEF1EXPORTFILE= exports.dxp
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+ALLTAR : $(GENJAVAFILES)
+
+ALLIDLFILES= \
+ mozillatesttoolserver.idl \
+ xmozillatesttoolserver.idl
+
+$(RDB): $(ALLIDLFILES)
+ $(TOUCH) $@
+ $(RM) $@
+ unoidl -I$(PRJ) -I$(SOLARIDLDIR) -Burd -OH$(BIN) $?
+ $(REGMERGE) $@ /UCR $(BIN)$/{$(ALLIDLFILES:f:s/.idl/.urd/)}
+ $(REGMERGE) $@ / $(SOLARBINDIR)$/applicat.rdb
+ $(REGCOMP) -register -r $@ -c $(DLLPRE)connectr$(DLLPOST)
+ $(REGCOMP) -register -r $@ -c $(DLLPRE)acceptor$(DLLPOST)
+ $(REGCOMP) -register -r $@ -c $(DLLPRE)brdgfctr$(DLLPOST)
+ $(REGCOMP) -register -r $@ -c $(DLLPRE)remotebridge$(DLLPOST)
+ $(TOUCH) $@
+
+
+$(GENJAVAFILES): $(RDB)
+ @echo Types: $(TYPES)
+ @echo Javafiles: $(GENJAVAFILES)
+ $(JAVAMAKER) -BUCR -O$(OUT) $(TYPES) $(RDB)
+
+
diff --git a/automation/source/mozillaserver/mozillatesttoolserver.idl b/automation/source/mozillaserver/mozillatesttoolserver.idl
new file mode 100644
index 000000000000..5b5b5acc1e16
--- /dev/null
+++ b/automation/source/mozillaserver/mozillatesttoolserver.idl
@@ -0,0 +1,52 @@
+/*************************************************************************
+ *
+ * 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 __com_sun_star_testtool_MozillaTesttoolServer_idl__
+#define __com_sun_star_testtool_MozillaTesttoolServer_idl__
+
+#include <xmozillatesttoolserver.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module testtool {
+
+//=============================================================================
+/**
+ * This service provides the ability to control Mozilla
+ *<BR>
+ */
+service MozillaTesttoolServer
+{
+ /** resolve objects via this interface.
+ */
+ interface com::sun::star::testtool::XMozillaTesttoolServer;
+};
+
+//=============================================================================
+
+}; }; }; };
+
+#endif
diff --git a/automation/source/mozillaserver/xmozillatesttoolserver.idl b/automation/source/mozillaserver/xmozillatesttoolserver.idl
new file mode 100644
index 000000000000..51755a67a35d
--- /dev/null
+++ b/automation/source/mozillaserver/xmozillatesttoolserver.idl
@@ -0,0 +1,157 @@
+/*************************************************************************
+ *
+ * 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 __com_sun_star_testtool_XMozillaTesttoolServer_idl__
+#define __com_sun_star_testtool_XMozillaTesttoolServer_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/connection/NoConnectException.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module testtool {
+
+//=============================================================================
+/** Service com.sun.star.devtools.IServerProxy implements this interface.
+ */
+[ uik(E2423753-33D6-11D1-AABE00A0-259D5623), ident( "XMozillaTesttoolServer", 1.0 ) ]
+interface XAction : com::sun::star::uno::XInterface
+{
+ /** execute one command
+ <BR>
+ */
+ void execute();
+
+};
+
+//=============================================================================
+
+
+//=============================================================================
+/** Service com.sun.star.devtools.IServerProxy implements this interface.
+ */
+[ uik(E2423753-33D6-11D1-AABE00A0-259D5623), ident( "XMozillaTesttoolServer", 1.0 ) ]
+interface XActionControl : XAction
+{
+ /** execute one command
+ <BR>
+ */
+ void execute();
+
+};
+
+//=============================================================================
+
+
+//=============================================================================
+/** Service com.sun.star.devtools.IServerProxy implements this interface.
+ */
+[ uik(E2423753-33D6-11D1-AABE00A0-259D5623), ident( "XMozillaTesttoolServer", 1.0 ) ]
+interface XActionCommand : XAction
+{
+ /** execute one command
+ <BR>
+ */
+ void execute();
+
+};
+
+//=============================================================================
+/** Service com.sun.star.devtools.IServerProxy implements this interface.
+ */
+[ uik(E2423743-33D6-11D1-AABE00A0-259D5623), ident( "XActionFlow", 1.0 ) ]
+interface XActionFlow : XAction
+{
+ /** execute one command
+ <BR>
+ */
+ void execute();
+
+};
+
+//=============================================================================
+
+}; }; }; };
+
+//=============================================================================
+
+module com { module sun { module star { module testtool {
+
+
+enum ResultType
+ {
+ SEQUENCE, /// command with SEQUENCE has been executed
+ ERROR, /// An error has ocured
+ RESULT, /// Result of a request
+ ASSERTION, /// An Assertion has been captured
+ UI_INFO /// Info about the UserInterfaace
+ };
+
+//=============================================================================
+/** Service com.sun.star.devtools.IServerProxy implements this interface.
+ */
+[ uik(E2426453-33D6-11D1-AABE00A0-259D5623), ident( "XResult", 1.0 ) ]
+interface XResult : com::sun::star::uno::XInterface
+{
+ /** execute one command
+ <BR>
+ */
+ void SetResultType( [in] ResultType aType );
+ ResultType GetResultType();
+
+ void SetValue( [in] any Value );
+ any GetValue();
+};
+
+//=============================================================================
+
+}; }; }; };
+
+//=============================================================================
+
+module com { module sun { module star { module testtool {
+
+//=============================================================================
+/** Service com.sun.star.devtools.IServerProxy implements this interface.
+ */
+[ uik(E2446735-33D6-11D1-AABE00A0-259D5623), ident( "XMozillaTesttoolServer", 1.0 ) ]
+interface XMozillaTesttoolServer : com::sun::star::uno::XInterface
+{
+ /** Control the Mozilla Browser
+ <BR>
+ */
+ [oneway] void execute( [in] XAction aAction );
+// sequence < XResult > getResults( [in] boolean bBlock ); /// bBoch = TRUE means to wait for at least 1 result
+
+};
+
+//=============================================================================
+
+}; }; }; };
+
+
+#endif
diff --git a/automation/source/server/XMLParser.cxx b/automation/source/server/XMLParser.cxx
new file mode 100644
index 000000000000..0ea7f3c0eb26
--- /dev/null
+++ b/automation/source/server/XMLParser.cxx
@@ -0,0 +1,695 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <tools/stream.hxx>
+#include "statemnt.hxx"
+#include "rcontrol.hxx"
+#include "retstrm.hxx"
+#include <basic/svtmsg.hrc>
+
+#include <basic/ttstrhlp.hxx>
+
+#include <com/sun/star/xml/sax/XParser.hpp>
+#include <com/sun/star/xml/sax/SAXException.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+#include <comphelper/processfactory.hxx>
+#include <cppuhelper/implbase2.hxx>
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/xml/sax/SAXParseException.hpp>
+
+using namespace com::sun::star::xml::sax;
+using namespace com::sun::star::io;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::util;
+using namespace rtl;
+
+class SVInputStream : public cppu::WeakImplHelper1< XInputStream >
+{
+ SvStream* pStream;
+public:
+ SVInputStream( SvStream* pSt ):pStream( pSt ){};
+ ~SVInputStream(){ delete pStream; pStream=NULL; }
+
+ // Methods XInputStream
+ virtual sal_Int32 SAL_CALL readBytes( ::com::sun::star::uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL readSomeBytes( ::com::sun::star::uno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL skipBytes( sal_Int32 nBytesToSkip ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL available( ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL closeInput( ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+};
+
+
+sal_Int32 SAL_CALL SVInputStream::readBytes( ::com::sun::star::uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
+{
+ aData.realloc( nBytesToRead );
+ sal_Int32 nRead = pStream->Read( aData.getArray(), nBytesToRead );
+ aData.realloc( nRead );
+ return nRead;
+}
+
+sal_Int32 SAL_CALL SVInputStream::readSomeBytes( ::com::sun::star::uno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
+{
+ return readBytes( aData, nMaxBytesToRead );
+}
+
+void SAL_CALL SVInputStream::skipBytes( sal_Int32 nBytesToSkip ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
+{
+ if ( nBytesToSkip > 0 )
+ pStream->SeekRel( nBytesToSkip );
+}
+
+sal_Int32 SAL_CALL SVInputStream::available( ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
+{
+ ULONG nCurrent = pStream->Tell();
+ ULONG nSize = pStream->Seek( STREAM_SEEK_TO_END );
+ ULONG nAvailable = nSize - nCurrent;
+ pStream->Seek( nCurrent );
+ return nAvailable;
+}
+
+void SAL_CALL SVInputStream::closeInput( ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
+{
+// pStream->Close(); // automatically done in destructor
+ delete pStream;
+ pStream = NULL;
+}
+
+class Node;
+SV_DECL_REF(Node)
+
+enum NodeType { NODE_CHARACTER = CONST_NodeTypeCharacter,
+ NODE_ELEMENT = CONST_NodeTypeElement,
+ NODE_COMMENT = CONST_NodeTypeComment };
+
+class Node : public SvRefBase
+{
+ NodeType aNodeType;
+ Node* pParent; // Use pointer to prevent cyclic references resulting in undeleted objects
+
+protected:
+ Node( NodeType aType ): aNodeType( aType ), pParent( NULL ){};
+ virtual ~Node();
+
+public:
+ NodeType GetNodeType() { return aNodeType; }
+ void SetParent( NodeRef xNewParent );
+ NodeRef GetParent();
+};
+
+SV_IMPL_REF(Node)
+// generate NodeRefMemberList
+SV_DECL_IMPL_REF_LIST( NodeRef, Node* )
+
+Node::~Node()
+{
+}
+
+void Node::SetParent( NodeRef xNewParent )
+{
+ pParent = &xNewParent;
+}
+
+NodeRef Node::GetParent()
+{
+ return NodeRef( pParent );
+}
+
+class CharacterNode : public Node
+{
+ String aCharacters;
+public:
+ CharacterNode( const String& aChars ): Node( NODE_CHARACTER ), aCharacters( aChars ){};
+
+ String GetCharacters() { return aCharacters; }
+};
+
+class ElementNode : public Node
+{
+ String aNodeName;
+ Reference < XAttributeList > xAttributeList;
+ NodeRefMemberList aDocumentNodeList;
+public:
+ ElementNode( const String& aName, Reference < XAttributeList > xAttributes );
+ void AppendNode( NodeRef xNewNode );
+ ULONG GetChildCount(){ return aDocumentNodeList.Count(); }
+ NodeRef GetChild( USHORT nIndex ){ return aDocumentNodeList.GetObject( nIndex ); }
+ Reference < XAttributeList > GetAttributes(){ return xAttributeList; }
+
+ String GetNodeName() { return aNodeName; }
+};
+
+ElementNode::ElementNode( const String& aName, Reference < XAttributeList > xAttributes )
+: Node( NODE_ELEMENT )
+, aNodeName( aName )
+{
+ if ( xAttributes.is() )
+ {
+ Reference < XCloneable > xAttributeCloner( xAttributes, UNO_QUERY );
+ if ( xAttributeCloner.is() )
+ xAttributeList = Reference < XAttributeList > ( xAttributeCloner->createClone() , UNO_QUERY );
+ else
+ {
+ DBG_ERROR("Unable to clone AttributeList");
+ }
+ }
+};
+
+void ElementNode::AppendNode( NodeRef xNewNode )
+{
+ aDocumentNodeList.Insert ( xNewNode, LIST_APPEND );
+ xNewNode->SetParent( this );
+}
+
+// XIndexAccess
+
+
+
+
+
+enum ParseAction { COLLECT_DATA, COLLECT_DATA_IGNORE_WHITESPACE, PARSE_ONLY };
+
+class SAXParser : public cppu::WeakImplHelper2< XErrorHandler, XDocumentHandler >
+{
+ String aFilename;
+ Reference < XParser > xParser;
+
+ // XErrorHandler
+ void AddToList( const sal_Char* cuType, const ::com::sun::star::uno::Any& aSAXParseException );
+ String aErrors;
+
+ NodeRef xTreeRoot;
+ NodeRef xCurrentNode;
+ ULONG nTimestamp;
+ ParseAction aAction;
+
+public:
+ SAXParser( const String &rFilename );
+ ~SAXParser();
+
+ // Access Methods
+ NodeRef GetCurrentNode(){ return xCurrentNode; }
+ void SetCurrentNode( NodeRef xCurrent ){ xCurrentNode = xCurrent; }
+ NodeRef GetRootNode(){ return xTreeRoot; }
+ ULONG GetTimestamp(){ return nTimestamp; }
+ void Touch(){ nTimestamp = Time::GetSystemTicks(); }
+
+ // Methods SAXParser
+ BOOL Parse( ParseAction aAct );
+ String GetErrors(){ return aErrors; }
+
+ // Methods XErrorHandler
+ virtual void SAL_CALL error( const ::com::sun::star::uno::Any& aSAXParseException ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL fatalError( const ::com::sun::star::uno::Any& aSAXParseException ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL warning( const ::com::sun::star::uno::Any& aSAXParseException ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+
+ // Methods XDocumentHandler
+ virtual void SAL_CALL startDocument( ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL endDocument( ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL startElement( const ::rtl::OUString& aName, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL endElement( const ::rtl::OUString& aName ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL characters( const ::rtl::OUString& aChars ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL processingInstruction( const ::rtl::OUString& aTarget, const ::rtl::OUString& aData ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setDocumentLocator( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator >& xLocator ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+};
+
+
+SAXParser::SAXParser( const String &rFilename )
+: aFilename( rFilename )
+{
+ Touch();
+}
+
+SAXParser::~SAXParser()
+{
+ xParser.clear();
+}
+
+BOOL SAXParser::Parse( ParseAction aAct )
+{
+ aAction = aAct;
+ Touch();
+ SvStream* pStream = new SvFileStream( aFilename, STREAM_STD_READ );
+ if ( pStream->GetError() )
+ return FALSE;
+
+ InputSource sSource;
+ sSource.aInputStream = new SVInputStream( pStream ); // is refcounted and hence deletet appropriately
+ sSource.sPublicId = OUString( aFilename );
+
+ xParser = Reference < XParser > ( ::comphelper::getProcessServiceFactory()->createInstance( CUniString("com.sun.star.xml.sax.Parser") ), UNO_QUERY );
+ if ( xParser.is() )
+ {
+ xParser->setErrorHandler( ( XErrorHandler*) this );
+ if ( aAction == COLLECT_DATA || aAction == COLLECT_DATA_IGNORE_WHITESPACE )
+ xParser->setDocumentHandler( ( XDocumentHandler*) this );
+
+ try
+ {
+ xParser->parseStream ( sSource );
+ }
+ catch( class SAXParseException & rPEx)
+ {
+#ifdef DBG_ERROR
+ String aMemo( rPEx.Message );
+ aMemo = String( aMemo );
+#endif
+ }
+ catch( class Exception & rEx)
+ {
+#ifdef DBG_ERROR
+ String aMemo( rEx.Message );
+ aMemo = String( aMemo );
+#endif
+ }
+ xParser->setErrorHandler( NULL ); // otherwile Object holds itself
+ if ( aAction == COLLECT_DATA || aAction == COLLECT_DATA_IGNORE_WHITESPACE )
+ xParser->setDocumentHandler( NULL ); // otherwile Object holds itself
+ }
+ else
+ return FALSE;
+ return TRUE;
+}
+
+
+// Helper Methods XErrorHandler
+void SAXParser::AddToList( const sal_Char* cuType, const ::com::sun::star::uno::Any& aSAXParseException )
+{
+ SAXParseException aException;
+ aSAXParseException >>= aException;
+
+ aErrors.Append( String( aException.PublicId ) );
+ aErrors.AppendAscii( "(" );
+ aErrors.Append( String::CreateFromInt64( aException.LineNumber ) );
+ aErrors.AppendAscii( ":" );
+ aErrors.Append( String::CreateFromInt64( aException.ColumnNumber ) );
+ aErrors.AppendAscii( ") : " );
+ aErrors.AppendAscii( cuType );
+ aErrors.AppendAscii( ": " );
+ aErrors.Append( String( aException.Message ) );
+ aErrors.AppendAscii( "\n" );
+}
+
+// Methods XErrorHandler
+void SAL_CALL SAXParser::error( const ::com::sun::star::uno::Any& aSAXParseException ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ AddToList( "error", aSAXParseException );
+}
+
+void SAL_CALL SAXParser::fatalError( const ::com::sun::star::uno::Any& aSAXParseException ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ AddToList( "fatal error", aSAXParseException );
+}
+
+void SAL_CALL SAXParser::warning( const ::com::sun::star::uno::Any& aSAXParseException ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ AddToList( "warning", aSAXParseException );
+}
+
+
+// Methods XDocumentHandler
+void SAXParser::startDocument( ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ xTreeRoot = new ElementNode( CUniString("/"), Reference < XAttributeList > (NULL) );
+ xCurrentNode = xTreeRoot;
+ Touch();
+}
+
+void SAXParser::endDocument( ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+}
+
+void SAXParser::startElement( const ::rtl::OUString& aName, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ NodeRef xNewNode = new ElementNode ( String(aName), xAttribs );
+ ((ElementNode*)(&xCurrentNode))->AppendNode( xNewNode );
+ xCurrentNode = xNewNode;
+}
+
+void SAXParser::endElement( const ::rtl::OUString& aName ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ (void) aName; /* avoid warning about unused parameter */
+ xCurrentNode = xCurrentNode->GetParent();
+}
+
+void SAXParser::characters( const ::rtl::OUString& aChars ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ if ( aAction == COLLECT_DATA_IGNORE_WHITESPACE )
+ { // check for whitespace
+ BOOL bAllWhitespace = TRUE;
+ for ( int i = 0 ; bAllWhitespace && i < aChars.getLength() ; i++ )
+ if ( aChars[i] != 10 // LF
+ && aChars[i] != 13 // CR
+ && aChars[i] != ' ' // Blank
+ && aChars[i] != '\t' ) // Tab
+ bAllWhitespace = FALSE;
+ if ( bAllWhitespace )
+ return;
+ }
+ NodeRef xNewNode = new CharacterNode ( String(aChars) );
+ ((ElementNode*)(&xCurrentNode))->AppendNode( xNewNode );
+}
+
+void SAXParser::ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ (void) aWhitespaces; /* avoid warning about unused parameter */
+}
+
+void SAXParser::processingInstruction( const ::rtl::OUString& aTarget, const ::rtl::OUString& aData ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ (void) aTarget; /* avoid warning about unused parameter */
+ (void) aData; /* avoid warning about unused parameter */
+}
+
+void SAXParser::setDocumentLocator( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator >& xLocator ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException)
+{
+ (void) xLocator; /* avoid warning about unused parameter */
+#if OSL_DEBUG_LEVEL > 1
+ ::rtl::OUString aTester;
+ aTester = xLocator->getPublicId();
+ aTester = xLocator->getSystemId();
+#endif
+}
+
+
+
+
+void StatementCommand::HandleSAXParser()
+{
+ static Reference < XReference > xParserKeepaliveReference; // this is to keep the Object alive only
+ static SAXParser* pSAXParser;
+
+ // We need spechial prerequisites for these!
+
+ ElementNode* pElementNode = NULL;
+ switch ( nMethodId )
+ {
+ case RC_SAXGetNodeType:
+ case RC_SAXGetAttributeCount:
+ case RC_SAXGetAttributeName:
+ case RC_SAXGetAttributeValue:
+ case RC_SAXGetChildCount:
+ case RC_SAXGetElementName:
+ case RC_SAXGetChars:
+
+ case RC_SAXSeekElement:
+ case RC_SAXHasElement:
+ case RC_SAXGetElementPath:
+ {
+ if ( xParserKeepaliveReference.is() && pSAXParser->GetCurrentNode().Is() )
+ {
+ if ( pSAXParser->GetCurrentNode()->GetNodeType() == NODE_ELEMENT )
+ {
+ NodeRef xNode=pSAXParser->GetCurrentNode();
+ pElementNode = (ElementNode*)(&xNode);
+ }
+ }
+ else
+ {
+ ReportError( GEN_RES_STR1( S_NO_SAX_PARSER, RcString( nMethodId ) ) );
+ return;
+ }
+
+ }
+ }
+
+ switch ( nMethodId )
+ {
+ case RC_SAXCheckWellformed:
+ {
+ if( (nParams & PARAM_STR_1) )
+ {
+ xParserKeepaliveReference.clear();
+ pSAXParser = new SAXParser( aString1 );
+ xParserKeepaliveReference = ( XReference* )pSAXParser;
+ if ( !xParserKeepaliveReference.is() )
+ ReportError( GEN_RES_STR1( S_NO_SAX_PARSER, RcString( nMethodId ) ) );
+ else
+ {
+ if ( !pSAXParser->Parse( PARSE_ONLY ) )
+ ReportError( GEN_RES_STR1( S_NO_SAX_PARSER, RcString( nMethodId ) ) );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, pSAXParser->GetErrors() );
+ }
+
+ xParserKeepaliveReference.clear();
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+
+ case RC_SAXReadFile:
+ {
+ if( (nParams & PARAM_STR_1) )
+ {
+ ParseAction aAction;
+ if( (nParams & PARAM_BOOL_1) && bBool1 )
+ aAction = COLLECT_DATA;
+ else
+ aAction = COLLECT_DATA_IGNORE_WHITESPACE;
+
+ xParserKeepaliveReference.clear();
+ pSAXParser = new SAXParser( aString1 );
+ xParserKeepaliveReference = ( XReference* )pSAXParser;
+ if ( !xParserKeepaliveReference.is() )
+ ReportError( GEN_RES_STR1( S_NO_SAX_PARSER, RcString( nMethodId ) ) );
+ else
+ {
+
+ if ( !pSAXParser->Parse( aAction ) )
+ ReportError( GEN_RES_STR1( S_NO_SAX_PARSER, RcString( nMethodId ) ) );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, pSAXParser->GetErrors() );
+ }
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_SAXGetNodeType:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)pSAXParser->GetCurrentNode()->GetNodeType() );
+ }
+ break;
+ case RC_SAXGetAttributeCount:
+ case RC_SAXGetAttributeName:
+ case RC_SAXGetAttributeValue:
+ case RC_SAXGetChildCount:
+ case RC_SAXGetElementName:
+ {
+ if ( pElementNode )
+ {
+ Reference < XAttributeList > xAttributeList = pElementNode->GetAttributes();
+ switch ( nMethodId )
+ {
+ case RC_SAXGetElementName:
+ pRet->GenReturn ( RET_Value, aSmartMethodId, pElementNode->GetNodeName() );
+ break;
+ case RC_SAXGetChildCount:
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)pElementNode->GetChildCount() );
+ break;
+ case RC_SAXGetAttributeCount:
+ if ( xAttributeList.is() )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)xAttributeList->getLength() );
+ else
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)0 );
+ break;
+ case RC_SAXGetAttributeName:
+ {
+ if( (nParams & PARAM_USHORT_1) && ValueOK( aSmartMethodId, RcString( nMethodId ), nNr1, xAttributeList.is()?xAttributeList->getLength():0 ) )
+ {
+ String aRet( xAttributeList->getNameByIndex( nNr1-1 ) );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aRet );
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_SAXGetAttributeValue:
+ // Number or String
+ {
+ if( (nParams & PARAM_USHORT_1) && ValueOK( aSmartMethodId, RcString( nMethodId ), nNr1, xAttributeList.is()?xAttributeList->getLength():0 ) )
+ {
+ String aRet( xAttributeList->getValueByIndex( nNr1-1 ) );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aRet );
+ }
+ else if( (nParams & PARAM_STR_1) && xAttributeList.is() )
+ {
+ String aRet( xAttributeList->getValueByName( aString1 ) );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aRet );
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+
+ default:
+ ReportError( GEN_RES_STR1( S_INTERNAL_ERROR, RcString( nMethodId ) ) );
+ }
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_SAXGetChars:
+ {
+ if ( pSAXParser->GetCurrentNode()->GetNodeType() == NODE_CHARACTER )
+ {
+ NodeRef xNode=pSAXParser->GetCurrentNode();
+ CharacterNode* aCharacterNode = (CharacterNode*)(&xNode);
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aCharacterNode->GetCharacters() );
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+
+ case RC_SAXSeekElement:
+ case RC_SAXHasElement:
+ // Number or String
+ {
+ BOOL bCheckOnly = nMethodId == RC_SAXHasElement;
+
+ if( (nParams & PARAM_USHORT_1) && !(nParams & PARAM_STR_1) )
+ {
+ if ( nNr1 == 0 )
+ {
+ if ( bCheckOnly )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, pSAXParser->GetCurrentNode()->GetParent().Is() );
+ else if ( pSAXParser->GetCurrentNode()->GetParent().Is() )
+ pSAXParser->SetCurrentNode( pSAXParser->GetCurrentNode()->GetParent() );
+ }
+ else if ( !pElementNode )
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ else if ( bCheckOnly )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, ValueOK( aSmartMethodId, String(), nNr1, pElementNode->GetChildCount() ) );
+ else if ( ValueOK( aSmartMethodId, RcString( nMethodId ), nNr1, pElementNode->GetChildCount() ) )
+ pSAXParser->SetCurrentNode( pElementNode->GetChild( nNr1-1 ) );
+ }
+ else if( (nParams & PARAM_STR_1) )
+ {
+ if ( aString1.EqualsAscii( "/" ) )
+ {
+ if ( bCheckOnly )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_BOOL)TRUE );
+ else
+ pSAXParser->SetCurrentNode( pSAXParser->GetRootNode() );
+ }
+ else if ( aString1.Copy(0,2).EqualsAscii( "*:" ) )
+ {
+ ULONG nTimestamp = (ULONG)aString1.GetToken( 1, ':' ).ToInt64();
+ ULONG nPointer = (ULONG)aString1.GetToken( 2, ':' ).ToInt64();
+ if ( bCheckOnly )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_BOOL)(pSAXParser->GetTimestamp() == nTimestamp) );
+ else
+ if ( pSAXParser->GetTimestamp() == nTimestamp )
+ {
+ {
+ Node* pNode = (Node*)nPointer;
+ pSAXParser->SetCurrentNode( NodeRef( pNode ) );
+ }
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ else if ( pElementNode )
+ {
+ USHORT nNthOccurance;
+ if( (nParams & PARAM_USHORT_1) )
+ nNthOccurance = nNr1;
+ else
+ nNthOccurance = 1;
+
+ USHORT i;
+ NodeRef xNew;
+ for ( i = 0 ; i < pElementNode->GetChildCount() && !xNew.Is() ; i++ )
+ {
+ xNew = pElementNode->GetChild( i );
+ if ( xNew->GetNodeType() == NODE_ELEMENT )
+ {
+ ElementNode* pNewElement = (ElementNode*)(&xNew);
+ if ( aString1.Equals( pNewElement->GetNodeName() ) )
+ {
+ if ( nNthOccurance > 1 )
+ {
+ xNew.Clear();
+ nNthOccurance--;
+ }
+ }
+ else
+ xNew.Clear();
+ }
+ else
+ xNew.Clear();
+ }
+ if ( bCheckOnly )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, xNew.Is() );
+ else
+ if ( xNew.Is() )
+ pSAXParser->SetCurrentNode( xNew );
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ else
+ if ( bCheckOnly )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_BOOL)FALSE );
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_SAXGetElementPath:
+ {
+ DBG_ASSERT( sizeof( ULONG ) == sizeof ( void* ), "Pointertype has different size than ULONG");
+ String aPath;
+ aPath.AppendAscii( "*:" );
+ aPath.Append( String::CreateFromInt64( pSAXParser->GetTimestamp() ) );
+ aPath.AppendAscii( ":" );
+ NodeRef xNode=pSAXParser->GetCurrentNode();
+ Node* pNode = (Node*)(&xNode);
+ aPath.Append( String::CreateFromInt64( (ULONG)pNode ) );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aPath );
+ }
+ break;
+
+ case RC_SAXRelease:
+ {
+ xParserKeepaliveReference.clear();
+ }
+ break;
+ default:
+ ReportError( GEN_RES_STR1( S_INTERNAL_ERROR, RcString( nMethodId ) ) );
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/cmdbasestream.cxx b/automation/source/server/cmdbasestream.cxx
new file mode 100644
index 000000000000..1e670a6e4d6a
--- /dev/null
+++ b/automation/source/server/cmdbasestream.cxx
@@ -0,0 +1,303 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+#include <osl/endian.h>
+
+#include "cmdbasestream.hxx"
+#include "rcontrol.hxx"
+
+CmdBaseStream::CmdBaseStream()
+: pCommStream( NULL )
+{
+}
+
+CmdBaseStream::~CmdBaseStream()
+{
+}
+
+void CmdBaseStream::GenError (SmartId *pUId, comm_String *pString )
+{
+ Write(comm_USHORT(SIReturnError));
+ Write(pUId);
+ Write(pString);
+}
+
+void CmdBaseStream::GenReturn (comm_USHORT nRet, comm_ULONG nUId )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(nUId);
+ Write(comm_USHORT(PARAM_NONE)); // Typ der folgenden Parameter
+}
+
+void CmdBaseStream::GenReturn (comm_USHORT nRet, SmartId *pUId, comm_ULONG nNr )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_ULONG_1)); // Typ der folgenden Parameter
+ Write(nNr);
+}
+
+void CmdBaseStream::GenReturn (comm_USHORT nRet, SmartId *pUId, comm_String *pString )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_STR_1)); // Typ der folgenden Parameter
+ Write(pString);
+}
+
+void CmdBaseStream::GenReturn (comm_USHORT nRet, SmartId *pUId, comm_BOOL bBool )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_BOOL_1)); // Typ der folgenden Parameter
+ Write(bBool);
+}
+
+void CmdBaseStream::GenReturn (comm_USHORT nRet, SmartId *pUId, comm_ULONG nNr, comm_String *pString, comm_BOOL bBool )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_ULONG_1|PARAM_STR_1|PARAM_BOOL_1)); // Typ der folgenden Parameter
+ Write(nNr);
+ Write(pString);
+ Write(bBool);
+}
+
+// MacroRecorder
+void CmdBaseStream::GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_USHORT_1)); // Typ der folgenden Parameter
+ Write(nMethod);
+}
+
+void CmdBaseStream::GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_String *pString )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_USHORT_1|PARAM_STR_1)); // Typ der folgenden Parameter
+ Write(nMethod);
+ Write(pString);
+}
+
+void CmdBaseStream::GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_String *pString, comm_BOOL bBool )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_USHORT_1|PARAM_STR_1|PARAM_BOOL_1)); // Typ der folgenden Parameter
+ Write(nMethod);
+ Write(pString);
+ Write(bBool);
+}
+
+void CmdBaseStream::GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_BOOL bBool )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_USHORT_1|PARAM_BOOL_1)); // Typ der folgenden Parameter
+ Write(nMethod);
+ Write(bBool);
+}
+
+void CmdBaseStream::GenReturn( comm_USHORT nRet, SmartId *pUId, comm_USHORT nMethod, comm_ULONG nNr )
+{
+ Write(comm_USHORT(SIReturn));
+ Write(nRet);
+ Write(pUId);
+ Write(comm_USHORT(PARAM_USHORT_1|PARAM_ULONG_1)); // Typ der folgenden Parameter
+ Write(nMethod);
+ Write(nNr);
+}
+
+
+
+void CmdBaseStream::Read (comm_USHORT &nNr)
+{
+ comm_USHORT nId;
+ *pCommStream >> nId;
+ if (pCommStream->IsEof()) return;
+#ifdef DBG_UTIL
+ if (nId != BinUSHORT) DBG_ERROR1( "Falscher Typ im Stream: Erwartet USHORT, gefunden :%hu", nId );
+#endif
+ *pCommStream >> nNr;
+}
+
+void CmdBaseStream::Read (comm_ULONG &nNr)
+{
+ comm_USHORT nId;
+ *pCommStream >> nId;
+ if (pCommStream->IsEof()) return;
+#ifdef DBG_UTIL
+ if (nId != BinULONG) DBG_ERROR1( "Falscher Typ im Stream: Erwartet ULONG, gefunden :%hu", nId );
+#endif
+ *pCommStream >> nNr;
+}
+
+void CmdBaseStream::Read (comm_UniChar* &aString, comm_USHORT &nLenInChars )
+{
+ comm_USHORT nId;
+ *pCommStream >> nId;
+#ifdef DBG_UTIL
+ if (nId != BinString) DBG_ERROR1( "Falscher Typ im Stream: Erwartet String, gefunden :%hu", nId );
+#endif
+
+ *pCommStream >> nLenInChars;
+
+ aString = new comm_UniChar [nLenInChars];
+ pCommStream->Read( aString, ((comm_ULONG)nLenInChars) * sizeof( comm_UniChar ) );
+#ifdef OSL_BIGENDIAN
+ // we have to change the byteorder
+ comm_USHORT n;
+ for ( n = 0 ; n < nLenInChars ; n++ )
+ aString[ n ] = aString[ n ] >> 8 | aString[ n ] << 8;
+#endif
+}
+
+void CmdBaseStream::Read (comm_BOOL &bBool)
+{
+ comm_USHORT nId;
+ *pCommStream >> nId;
+#ifdef DBG_UTIL
+ if (nId != BinBool) DBG_ERROR1( "Falscher Typ im Stream: Erwartet BOOL, gefunden :%hu", nId );
+#endif
+ *pCommStream >> bBool;
+}
+
+comm_USHORT CmdBaseStream::GetNextType()
+{
+ comm_USHORT nId;
+ *pCommStream >> nId;
+ pCommStream->SeekRel(-2);
+ return nId;
+}
+
+
+void CmdBaseStream::Write( comm_USHORT nNr )
+{
+ *pCommStream << comm_USHORT( BinUSHORT );
+ *pCommStream << nNr;
+}
+
+void CmdBaseStream::Write( comm_ULONG nNr )
+{
+ *pCommStream << comm_USHORT( BinULONG );
+ *pCommStream << nNr;
+}
+
+void CmdBaseStream::Write( const comm_UniChar* aString, comm_USHORT nLenInChars )
+{
+ *pCommStream << comm_USHORT(BinString);
+
+ comm_USHORT n;
+
+ // remove BiDi and zero-width-markers 0x200B - 0x200F
+ // remove BiDi and paragraph-markers 0x2028 - 0x202E
+
+ comm_UniChar* aNoBiDiString;
+ aNoBiDiString = new comm_UniChar [nLenInChars];
+ comm_USHORT nNewLenInChars = 0;
+ for ( n = 0 ; n < nLenInChars ; n++ )
+ {
+ comm_UniChar c = aString[ n ];
+ if ( ((c >= 0x200B) && (c <= 0x200F))
+ ||((c >= 0x2028) && (c <= 0x202E)) )
+ { //Ignore character
+ }
+ else
+ {
+ aNoBiDiString[ nNewLenInChars ] = c;
+ nNewLenInChars++;
+ }
+ }
+
+ *pCommStream << nNewLenInChars;
+
+#ifdef OSL_BIGENDIAN
+ // we have to change the byteorder
+ comm_UniChar* aNewString;
+ aNewString = new comm_UniChar [nNewLenInChars];
+ for ( n = 0 ; n < nNewLenInChars ; n++ )
+ aNewString[ n ] = aNoBiDiString[ n ] >> 8 | aNoBiDiString[ n ] << 8;
+ pCommStream->Write( aNewString, ((comm_ULONG)nNewLenInChars) * sizeof( comm_UniChar ) );
+ delete [] aNewString;
+#else
+ pCommStream->Write( aNoBiDiString, ((comm_ULONG)nNewLenInChars) * sizeof( comm_UniChar ) );
+#endif
+
+ delete [] aNoBiDiString;
+}
+
+void CmdBaseStream::Write( comm_BOOL bBool )
+{
+ *pCommStream << comm_USHORT( BinBool );
+ *pCommStream << bBool;
+}
+
+void CmdBaseStream::Read ( comm_String* &pString )
+{
+ (void) pString; /* avoid warning about unused parameter */
+ DBG_ERROR("Read ( comm_String* &pString ) Not Implemented");
+}
+void CmdBaseStream::Read ( SmartId* &pId )
+{
+ (void) pId; /* avoid warning about unused parameter */
+ DBG_ERROR("Read ( SmartId* &pId ) Not Implemented");
+}
+
+void CmdBaseStream::Write( comm_String *pString )
+{
+ (void) pString; /* avoid warning about unused parameter */
+ DBG_ERROR("Write( comm_String *pString ) Not Implemented");
+}
+void CmdBaseStream::Write( SmartId* pId )
+{
+ (void) pId; /* avoid warning about unused parameter */
+ DBG_ERROR("Write( SmartId* pId ) Not Implemented");
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/editwin.cxx b/automation/source/server/editwin.cxx
new file mode 100644
index 000000000000..5d3e1502b187
--- /dev/null
+++ b/automation/source/server/editwin.cxx
@@ -0,0 +1,166 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+#if OSL_DEBUG_LEVEL > 1
+#include <vcl/svapp.hxx>
+#include "editwin.hxx"
+
+
+class ImpWorkWindow : public WorkWindow
+{
+public:
+ MultiLineEdit m_aInhalt;
+ ImpWorkWindow( WorkWindow *pParent, const UniString &rName, WinBits );
+ ~ImpWorkWindow();
+ void Resize();
+};
+
+ImpWorkWindow::ImpWorkWindow( WorkWindow *pParent, const String &rName, WinBits iWstyle )
+: WorkWindow( pParent , WB_SIZEMOVE )
+, m_aInhalt( this, iWstyle )
+{
+ m_aInhalt.Show();
+ SetText(rName);
+ SetPosSizePixel( Point( 1,40 ), Size(500,150) );
+ Resize();
+}
+
+ImpWorkWindow::~ImpWorkWindow()
+{
+ Hide();
+}
+
+void ImpWorkWindow::Resize()
+{
+ m_aInhalt.SetPosSizePixel( Point(), GetOutputSizePixel() );
+}
+
+BOOL EditWindow::Close()
+{
+ if ( pImpWorkWindow )
+ {
+ delete pImpWorkWindow;
+ pImpWorkWindow = NULL;
+ }
+ return TRUE;
+}
+
+void EditWindow::Show()
+{
+ if ( Check() )
+ pImpWorkWindow->Show();
+ else
+ bShowWin = TRUE;
+}
+
+void EditWindow::Hide()
+{
+ if ( Check() )
+ pImpWorkWindow->Hide();
+ else
+ bShowWin = FALSE;
+}
+
+EditWindow::EditWindow( WorkWindow *pParent, const String &rName, WinBits iWstyle )
+: pImpWorkWindow(NULL)
+, pMemParent(pParent)
+, aMemName(rName)
+, iMemWstyle(iWstyle)
+, nTextLen(0)
+, bQuiet(FALSE)
+{
+}
+
+EditWindow::~EditWindow()
+{
+ Close();
+}
+
+BOOL EditWindow::Check()
+{
+ if ( ! pImpWorkWindow && Application::IsInExecute() )
+ {
+ pImpWorkWindow = new ImpWorkWindow( pMemParent, aMemName, iMemWstyle );
+ pImpWorkWindow->m_aInhalt.SetText( aMemPreWinText );
+ nTextLen = aMemPreWinText.Len();
+ aMemPreWinText.Erase();
+ if ( bShowWin )
+ pImpWorkWindow->Show();
+ return TRUE;
+ }
+ return pImpWorkWindow != NULL;
+}
+
+void EditWindow::Clear()
+{
+ if ( Check() )
+ {
+ pImpWorkWindow->m_aInhalt.SetText( String() );
+ nTextLen = 0;
+ }
+ aMemPreWinText.Erase();
+}
+
+void EditWindow::AddText( const sal_Char* rNew )
+{
+ AddText( UniString::CreateFromAscii( rNew ) );
+}
+
+void EditWindow::AddText( const String &rNew )
+{
+ if ( bQuiet ) return;
+
+ String aText = rNew;
+ aText.ConvertLineEnd();
+
+ if ( Check() )
+ {
+ if ( nTextLen > 5000 )
+ {
+ pImpWorkWindow->m_aInhalt.SetText( pImpWorkWindow->m_aInhalt.GetText().Erase(0,1000) );
+ nTextLen = pImpWorkWindow->m_aInhalt.GetText().Len(); // Absolut, um Fehler sonstwo auszubügeln
+ }
+
+
+ pImpWorkWindow->m_aInhalt.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
+ pImpWorkWindow->m_aInhalt.ReplaceSelected( aText );
+ nTextLen = nTextLen + aText.Len();
+ pImpWorkWindow->m_aInhalt.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
+ }
+ else
+ {
+ aMemPreWinText += aText;
+ }
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/editwin.hxx b/automation/source/server/editwin.hxx
new file mode 100644
index 000000000000..d01a824c3bdd
--- /dev/null
+++ b/automation/source/server/editwin.hxx
@@ -0,0 +1,72 @@
+/* -*- 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 _EDITWIN_HXX
+#define _EDITWIN_HXX
+
+#if OSL_DEBUG_LEVEL > 1
+
+#include <vcl/wrkwin.hxx>
+
+#include <svtools/svmedit.hxx>
+
+class ImpWorkWindow;
+
+class EditWindow
+{
+protected:
+ ImpWorkWindow *pImpWorkWindow;
+ BOOL check();
+
+ WorkWindow *pMemParent;
+ String aMemName;
+ WinBits iMemWstyle;
+
+ String aMemPreWinText;
+ BOOL bShowWin;
+
+ xub_StrLen nTextLen; // aus Performanzgründen eigene Länge mitführen
+
+public:
+ EditWindow( WorkWindow *pParent, const UniString &rName = UniString( RTL_CONSTASCII_USTRINGPARAM ( "Debug" ) ), WinBits iWstyle = WB_HSCROLL | WB_VSCROLL );
+ virtual ~EditWindow();
+
+ void Clear();
+ void Show();
+ void Hide();
+ void AddText( const String &rNew );
+ void AddText( const sal_Char* rNew );
+
+ virtual BOOL Close(); // derived
+ BOOL bQuiet;
+ BOOL Check();
+};
+
+#endif
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/makefile.mk b/automation/source/server/makefile.mk
new file mode 100644
index 000000000000..bced075be72a
--- /dev/null
+++ b/automation/source/server/makefile.mk
@@ -0,0 +1,71 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..$/..
+
+PRJNAME=automation
+TARGET=server
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES = \
+ $(SLO)$/XMLParser.obj \
+ $(SLO)$/recorder.obj \
+ $(SLO)$/svcommstream.obj \
+ $(SLO)$/cmdbasestream.obj \
+ $(SLO)$/scmdstrm.obj \
+ $(SLO)$/statemnt.obj \
+ $(SLO)$/sta_list.obj \
+ $(SLO)$/editwin.obj \
+ $(SLO)$/server.obj \
+ $(SLO)$/retstrm.obj \
+ $(SLO)$/profiler.obj
+
+
+OBJFILES = \
+ $(OBJ)$/cmdbasestream.obj \
+ $(OBJ)$/svcommstream.obj
+
+EXCEPTIONSFILES = \
+ $(SLO)$/statemnt.obj \
+ $(SLO)$/server.obj \
+ $(SLO)$/XMLParser.obj
+
+NOOPTFILES = $(SLO)$/statemnt.obj
+
+.IF "$(OS)"=="SOLARIS"
+SLOFILES += $(SLO)$/prof_usl.obj
+.ELSE
+SLOFILES += $(SLO)$/prof_nul.obj
+.ENDIF
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/automation/source/server/prof_nul.cxx b/automation/source/server/prof_nul.cxx
new file mode 100644
index 000000000000..3fb9d92a7597
--- /dev/null
+++ b/automation/source/server/prof_nul.cxx
@@ -0,0 +1,98 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+
+#include "profiler.hxx"
+#include "rcontrol.hxx"
+#include <basic/ttstrhlp.hxx>
+
+struct SysdepProfileSnapshot
+{
+ // Hier stehen alle Felder zum Speichern eines Snapshot
+};
+
+
+struct SysdepStaticData
+{
+ // Hier steht alles, was während des Profiles ständig gebraucht wird
+};
+
+
+void TTProfiler::InitSysdepProfiler()
+{
+ if ( !pSysDepStatic ) // Sollte immer so sein!!
+ pSysDepStatic = new SysdepStaticData;
+ // Hier initialisieren
+
+};
+
+void TTProfiler::DeinitSysdepProfiler()
+{
+ if ( pSysDepStatic ) // Sollte immer so sein!!
+ {
+ // Hier aufräumen und eventuell Speicher freigeben
+
+ delete pSysDepStatic;
+ }
+};
+
+SysdepProfileSnapshot *TTProfiler::NewSysdepSnapshotData()
+{
+ return new SysdepProfileSnapshot;
+};
+
+void TTProfiler::DeleteSysdepSnapshotData( SysdepProfileSnapshot *pSysdepProfileSnapshot )
+{
+ delete pSysdepProfileSnapshot;
+};
+
+
+// Titelzeile für Logdatei
+String TTProfiler::GetSysdepProfileHeader()
+{
+ return String(CUniString("(noch) keine weiteren Daten Implementiert"));
+};
+
+
+// Zustand merken
+void TTProfiler::GetSysdepProfileSnapshot( SysdepProfileSnapshot *, USHORT )
+{};
+
+
+// Informationszeile zusammenbauen
+String TTProfiler::GetSysdepProfileLine( SysdepProfileSnapshot *, SysdepProfileSnapshot * )
+{
+ return String();
+};
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/prof_usl.cxx b/automation/source/server/prof_usl.cxx
new file mode 100644
index 000000000000..a20e81606d7b
--- /dev/null
+++ b/automation/source/server/prof_usl.cxx
@@ -0,0 +1,138 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+
+#include <procfs.h>
+#include <tools/stream.hxx>
+#include "profiler.hxx"
+
+
+struct SysdepProfileSnapshot
+{
+ pstatus mpstatus;
+ psinfo mpsinfo;
+ prusage mprusage;
+};
+
+
+struct SysdepStaticData
+{
+ // Hier steht alles, was während des Profiles ständig gebraucht wird
+};
+
+
+void TTProfiler::InitSysdepProfiler()
+{
+ if ( !pSysDepStatic ) // Sollte immer so sein!!
+ pSysDepStatic = new SysdepStaticData;
+ // Hier initialisieren
+
+};
+
+void TTProfiler::DeinitSysdepProfiler()
+{
+ if ( pSysDepStatic ) // Sollte immer so sein!!
+ {
+ // Hier aufräumen und eventuell Speicher freigeben
+
+ delete pSysDepStatic;
+ }
+};
+
+SysdepProfileSnapshot *TTProfiler::NewSysdepSnapshotData()
+{
+ return new SysdepProfileSnapshot;
+};
+
+void TTProfiler::DeleteSysdepSnapshotData( SysdepProfileSnapshot *pSysdepProfileSnapshot )
+{
+ delete pSysdepProfileSnapshot;
+};
+
+
+// Titelzeile für Logdatei
+String TTProfiler::GetSysdepProfileHeader()
+{
+ return String::CreateFromAscii(" Size(Kb) ResidentSZ rtime ktime utime total");
+};
+
+
+// Zustand merken
+void TTProfiler::GetSysdepProfileSnapshot( SysdepProfileSnapshot *pSysdepProfileSnapshot, USHORT )
+{
+ SvFileStream aStream( String::CreateFromAscii("/proc/self/psinfo"), STREAM_READ ); // Das ist ein expliziter Pfad für UNXSOL!
+ if ( aStream.IsOpen() )
+ {
+ aStream.Read( &(pSysdepProfileSnapshot->mpsinfo), sizeof( psinfo ) );
+ aStream.Close();
+ }
+ SvFileStream anotherStream( String::CreateFromAscii("/proc/self/status"), STREAM_READ ); // Das ist ein expliziter Pfad für UNXSOL!
+ if ( anotherStream.IsOpen() )
+ {
+ anotherStream.Read( &(pSysdepProfileSnapshot->mpstatus), sizeof( pstatus ) );
+ anotherStream.Close();
+ }
+ SvFileStream YetAnotherStream( String::CreateFromAscii("/proc/self/usage"), STREAM_READ ); // Das ist ein expliziter Pfad für UNXSOL!
+ if ( YetAnotherStream.IsOpen() )
+ {
+ YetAnotherStream.Read( &(pSysdepProfileSnapshot->mprusage), sizeof( prusage ) );
+ YetAnotherStream.Close();
+ }
+};
+
+#define DIFF2( aFirst, aSecond, Membername ) ( aSecond.Membername - aFirst.Membername )
+#define CALC_MS( nSec, nNSec ) ( nSec * 1000 + (nNSec+500000) / 1000000 )
+#define DIFF_MS( pStart, pEnd, Member ) ( CALC_MS( pEnd->Member.tv_sec, pEnd->Member.tv_nsec ) - CALC_MS( pStart->Member.tv_sec, pStart->Member.tv_nsec ) )
+// Informationszeile zusammenbauen
+String TTProfiler::GetSysdepProfileLine( SysdepProfileSnapshot *pStart, SysdepProfileSnapshot *pStop )
+{
+ String aProfile;
+
+ aProfile += Pad( String::CreateFromInt64(pStop->mpsinfo.pr_size), 9);
+ aProfile += Pad( String::CreateFromInt64(pStop->mpsinfo.pr_rssize), 11);
+
+
+ aProfile += Pad( String::CreateFromInt64(DIFF_MS( pStart, pStop, mprusage.pr_rtime ) / AVER( pStart, pStop, mprusage.pr_count )), 7 );
+
+
+ ULONG d_utime = DIFF_MS( pStart, pStop, mpstatus.pr_utime ) + DIFF_MS( pStart, pStop, mpstatus.pr_cutime );
+ ULONG d_stime = DIFF_MS( pStart, pStop, mpstatus.pr_stime ) + DIFF_MS( pStart, pStop, mpstatus.pr_cstime );
+
+ aProfile += Pad( String::CreateFromInt64(d_utime), 7 );
+ aProfile += Pad( String::CreateFromInt64(d_stime), 7 );
+ aProfile += Pad( String::CreateFromInt64(d_utime + d_stime), 7 );
+
+ return aProfile;
+};
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/profiler.cxx b/automation/source/server/profiler.cxx
new file mode 100644
index 000000000000..95d7c00a6b7e
--- /dev/null
+++ b/automation/source/server/profiler.cxx
@@ -0,0 +1,264 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+
+#include <tools/time.hxx>
+#include <tools/string.hxx>
+#include <unotools/localedatawrapper.hxx>
+#include <vcl/svapp.hxx>
+#include <basic/ttstrhlp.hxx>
+
+
+#include "profiler.hxx"
+
+
+TTProfiler::TTProfiler()
+: mpStart( NULL )
+, mpEnd( NULL )
+, bIsProfileIntervalStarted( FALSE )
+, bIsProfilingPerCommand( FALSE )
+, bIsPartitioning( FALSE )
+, bIsAutoProfiling( FALSE )
+, pSysDepStatic( NULL )
+{
+ InitSysdepProfiler();
+ mpStart = new ProfileSnapshot;
+ mpStart->pSysdepProfileSnapshot = NewSysdepSnapshotData();
+ mpEnd = new ProfileSnapshot;
+ mpEnd->pSysdepProfileSnapshot = NewSysdepSnapshotData();
+ StartProfileInterval();
+}
+
+TTProfiler::~TTProfiler()
+{
+ if ( IsAutoProfiling() )
+ StopAutoProfiling();
+ if ( mpStart )
+ {
+ if ( mpStart->pSysdepProfileSnapshot )
+ DeleteSysdepSnapshotData( mpStart->pSysdepProfileSnapshot );
+ delete mpStart;
+ mpStart = NULL;
+ }
+ if ( mpEnd )
+ {
+ if ( mpEnd->pSysdepProfileSnapshot )
+ DeleteSysdepSnapshotData( mpEnd->pSysdepProfileSnapshot );
+ delete mpEnd;
+ mpEnd = NULL;
+ }
+ DeinitSysdepProfiler();
+}
+
+
+String TTProfiler::GetProfileHeader()
+{
+ UniString aReturn;
+ aReturn += '\n';
+ if ( !IsAutoProfiling() )
+ aReturn.AppendAscii("Befehl").Append(TabString(36));
+
+ aReturn.AppendAscii(" Zeitdauer");
+ aReturn.AppendAscii(" Ticks in %");
+ aReturn.Append( GetSysdepProfileHeader() );
+ aReturn.AppendAscii("\n");
+ return aReturn;
+}
+
+
+void TTProfiler::StartProfileInterval( BOOL bReadAnyway )
+{
+ if ( !bIsProfileIntervalStarted || bReadAnyway )
+ {
+ GetProfileSnapshot( mpStart );
+ GetSysdepProfileSnapshot( mpStart->pSysdepProfileSnapshot, PROFILE_START );
+ bIsProfileIntervalStarted = TRUE;
+ }
+}
+
+String TTProfiler::GetProfileLine( ProfileSnapshot *pStart, ProfileSnapshot *pEnd )
+{
+ String aProfileString;
+
+ aProfileString += Pad(GetpApp()->GetAppLocaleDataWrapper().getDuration( DIFF( pStart, pEnd, aTime) , TRUE, TRUE ), 12);
+
+ ULONG nProcessTicks = DIFF( pStart, pEnd, nProcessTicks );
+ ULONG nSystemTicks = DIFF( pStart, pEnd, nSystemTicks );
+ if ( nSystemTicks )
+ {
+ aProfileString += Pad(UniString::CreateFromInt32( (100 * nProcessTicks) / nSystemTicks ), 11);
+ aProfileString += '%';
+ }
+ else
+ aProfileString += Pad(CUniString("?? "), 12);
+
+ return aProfileString;
+}
+
+
+String TTProfiler::GetProfileLine( String &aPrefix )
+{
+ String aProfileString;
+ if ( IsProfilingPerCommand() || IsAutoProfiling() )
+ {
+ aProfileString = aPrefix;
+ aProfileString += TabString(35);
+
+
+ aProfileString += GetProfileLine( mpStart, mpEnd );
+ aProfileString += GetSysdepProfileLine( mpStart->pSysdepProfileSnapshot, mpEnd->pSysdepProfileSnapshot );
+ aProfileString += '\n';
+ }
+
+ return aProfileString;
+}
+
+
+void TTProfiler::EndProfileInterval()
+{
+ GetProfileSnapshot( mpEnd );
+ GetSysdepProfileSnapshot( mpEnd->pSysdepProfileSnapshot, PROFILE_END );
+ bIsProfileIntervalStarted = FALSE;
+}
+
+
+void TTProfiler::GetProfileSnapshot( ProfileSnapshot *pProfileSnapshot )
+{
+ pProfileSnapshot->aTime = Time();
+ pProfileSnapshot->nProcessTicks = Time::GetProcessTicks();
+ pProfileSnapshot->nSystemTicks = Time::GetSystemTicks();
+}
+
+
+void TTProfiler::StartProfilingPerCommand() // Jeden Befehl mitschneiden
+{
+ bIsProfilingPerCommand = TRUE;
+}
+
+void TTProfiler::StopProfilingPerCommand()
+{
+ bIsProfilingPerCommand = FALSE;
+}
+
+void TTProfiler::StartPartitioning()
+{
+ bIsPartitioning = TRUE;
+}
+
+void TTProfiler::StopPartitioning()
+{
+ bIsPartitioning = TRUE;
+}
+
+ULONG TTProfiler::GetPartitioningTime()
+{
+ return DIFF( mpStart, mpEnd, nSystemTicks );
+}
+
+
+
+void TTProfiler::StartAutoProfiling( ULONG nMSec )
+{
+ if ( !bIsAutoProfiling )
+ {
+ pAutoStart = new ProfileSnapshot;
+ pAutoStart->pSysdepProfileSnapshot = NewSysdepSnapshotData();
+ pAutoEnd = new ProfileSnapshot;
+ pAutoEnd->pSysdepProfileSnapshot = NewSysdepSnapshotData();
+ GetProfileSnapshot( pAutoStart );
+ GetSysdepProfileSnapshot( pAutoStart->pSysdepProfileSnapshot, PROFILE_START );
+ SetTimeout( nMSec );
+ bIsAutoProfiling = TRUE;
+ Start();
+ }
+
+}
+
+void TTProfiler::Timeout()
+{
+ GetProfileSnapshot( pAutoEnd );
+ GetSysdepProfileSnapshot( pAutoEnd->pSysdepProfileSnapshot, PROFILE_END );
+ String aLine;
+
+ aLine += GetProfileLine( pAutoStart, pAutoEnd );
+ aLine += GetSysdepProfileLine( pAutoStart->pSysdepProfileSnapshot, pAutoEnd->pSysdepProfileSnapshot );
+ aLine += '\n';
+
+ aAutoProfileBuffer += aLine;
+
+ ProfileSnapshot *pTemp = pAutoStart; // Tauschen, so daß jetziges Ende nächsten Start wird
+ pAutoStart = pAutoEnd;
+ pAutoEnd = pTemp;
+
+ Start(); // Timer neu starten
+}
+
+String TTProfiler::GetAutoProfiling()
+{
+ String aTemp(aAutoProfileBuffer);
+ aAutoProfileBuffer.Erase();
+ return aTemp;
+}
+
+void TTProfiler::StopAutoProfiling()
+{
+ if ( bIsAutoProfiling )
+ {
+ Stop();
+ bIsAutoProfiling = FALSE;
+ }
+}
+
+
+
+//String TTProfiler::Hex( ULONG nNr )
+String TTProfiler::Dec( ULONG nNr )
+{
+ String aRet(UniString::CreateFromInt32(nNr));
+ if ( nNr < 100 )
+ {
+ aRet = Pad( aRet, 3);
+ aRet.SearchAndReplaceAll(' ','0');
+ }
+ aRet.Insert( ',', aRet.Len() - 2 );
+ return aRet;
+}
+
+String TTProfiler::Pad( const String aS, xub_StrLen nLen )
+{
+ if ( nLen > aS.Len() )
+ return UniString().Fill( nLen - aS.Len() ).Append( aS );
+ else
+ return CUniString(" ").Append( aS );
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/profiler.hxx b/automation/source/server/profiler.hxx
new file mode 100644
index 000000000000..c7d0537d6225
--- /dev/null
+++ b/automation/source/server/profiler.hxx
@@ -0,0 +1,139 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+
+
+#define AVER( pFirst, pSecond, Membername ) (( pFirst->Membername + pSecond->Membername ) / 2 )
+#define DIFF( pFirst, pSecond, Membername ) ( pSecond->Membername - pFirst->Membername )
+#define S_SAFEDIV( a,b ) ((b)==0?CUniString("#DIV"):UniString::CreateFromInt32( (ULONG) ((a)/(b))))
+#define S_SAFEDIV_DEC( a,b ) ((b)==0?CUniString("#DIV"):Dec((ULONG) ((a)/(b))))
+
+#include <tools/time.hxx>
+#include <tools/string.hxx>
+#include <vcl/timer.hxx>
+
+#define PROFILE_START 0x01
+#define PROFILE_END 0x02
+
+
+struct SysdepProfileSnapshot;
+struct SysdepStaticData; // Nicht wirklich statisch, sondern statisch über mehrere Snapshots
+
+struct ProfileSnapshot
+{
+ Time aTime;
+ SysdepProfileSnapshot *pSysdepProfileSnapshot;
+ ULONG nProcessTicks;
+ ULONG nSystemTicks;
+};
+
+
+class TTProfiler : private Timer
+{
+public:
+ TTProfiler();
+ ~TTProfiler();
+
+ String GetProfileHeader(); // Titelzeile für Logdatei
+ void StartProfileInterval( BOOL bReadAnyway = FALSE ); // Zustand merken
+ void EndProfileInterval(); // Informationszeile zusammenbauen
+ String GetProfileLine( String &aPrefix );
+
+
+ void StartProfilingPerCommand(); // Jeden Befehl mitschneiden
+ void StopProfilingPerCommand();
+ BOOL IsProfilingPerCommand() { return bIsProfilingPerCommand; }
+
+ void StartPartitioning();
+ void StopPartitioning();
+ BOOL IsPartitioning() { return bIsPartitioning; }
+ ULONG GetPartitioningTime();
+
+ void StartAutoProfiling( ULONG nMSec ); // Automatisch alle nMSec Milisekunden sampeln
+ String GetAutoProfiling(); // Aktuelle `Sammlung` abholen
+ void StopAutoProfiling(); // Sampeln beenden
+ BOOL IsAutoProfiling() { return bIsAutoProfiling; }
+
+private:
+
+ void GetProfileSnapshot( ProfileSnapshot *pProfileSnapshot );
+
+ // Informationszeile zusammenbauen
+ String GetProfileLine( ProfileSnapshot *pStart, ProfileSnapshot *pStop );
+
+
+ ProfileSnapshot *mpStart;
+ ProfileSnapshot *mpEnd;
+ BOOL bIsProfileIntervalStarted;
+
+
+
+//
+ BOOL bIsProfilingPerCommand;
+ BOOL bIsPartitioning;
+
+
+// Für das Automatische Profiling in festen Intervallen
+
+ ProfileSnapshot *pAutoStart;
+ ProfileSnapshot *pAutoEnd;
+ BOOL bIsAutoProfiling;
+ String aAutoProfileBuffer;
+
+ virtual void Timeout();
+
+
+// Einige Hilfsfunktionen
+
+// String Hex( ULONG nNr );
+ String Dec( ULONG nNr ); // Ergebnis = nNr / 100 mit 2 Dezimalen
+ String Pad( const String aS, xub_StrLen nLen ); // Fügt blanks links an den String an
+
+/* Ab hier werden die Methoden Systemabhängig in den entsprechenden cxx implementiert
+ Sie werden von den oberen Methoden gerufen.
+*/
+
+ SysdepStaticData *pSysDepStatic;
+
+ void InitSysdepProfiler();
+ void DeinitSysdepProfiler();
+
+ SysdepProfileSnapshot *NewSysdepSnapshotData();
+ void DeleteSysdepSnapshotData( SysdepProfileSnapshot *pSysdepProfileSnapshot );
+
+ // Titelzeile für Logdatei
+ String GetSysdepProfileHeader();
+
+ // Zustand merken
+ void GetSysdepProfileSnapshot( SysdepProfileSnapshot *pSysdepProfileSnapshot, USHORT nMode = PROFILE_START | PROFILE_END );
+
+ // Informationszeile zusammenbauen
+ String GetSysdepProfileLine( SysdepProfileSnapshot *pStart, SysdepProfileSnapshot *pStop );
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/recorder.cxx b/automation/source/server/recorder.cxx
new file mode 100644
index 000000000000..ba730491f672
--- /dev/null
+++ b/automation/source/server/recorder.cxx
@@ -0,0 +1,1097 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <osl/mutex.hxx>
+
+#include <vcl/window.hxx>
+#include <vcl/vclevent.hxx>
+#include <vcl/button.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/spinfld.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/floatwin.hxx>
+#include <basic/ttstrhlp.hxx>
+#include "statemnt.hxx"
+#include "retstrm.hxx"
+#include "rcontrol.hxx"
+#include "recorder.hxx"
+
+#include <comphelper/uieventslogger.hxx>
+
+MacroRecorder* MacroRecorder::pMacroRecorder = NULL;
+
+MacroRecorder::MacroRecorder()
+: pLastWin( NULL )
+, pEditModify( NULL )
+, pActionParent( NULL )
+, aKeyUniqueID()
+, pKeyWin( NULL )
+, bKeyFollowFocus( FALSE )
+, m_bRecord( FALSE )
+, m_bLog( FALSE )
+{
+ aHookRefresh.SetTimeout( 500 );
+ aHookRefresh.SetTimeoutHdl( LINK( this, MacroRecorder, HookRefreshHdl) );
+ aHookRefresh.Start();
+ aEventListenerHdl = LINK( this, MacroRecorder, EventListener );
+ AddEventHooks();
+}
+
+MacroRecorder::~MacroRecorder()
+{
+ aHookRefresh.Stop();
+ RemoveEventHooks();
+}
+
+void MacroRecorder::AddEventHooks()
+{
+ Window *pTopLevel = Application::GetFirstTopLevelWindow();
+ while ( pTopLevel )
+ {
+ Window *pParent = pTopLevel;
+ while ( pParent->GetParent() )
+ pParent = pParent->GetParent();
+
+ pParent->RemoveChildEventListener( aEventListenerHdl ); // might be instrumented already
+ pParent->AddChildEventListener( aEventListenerHdl );
+
+ pTopLevel = Application::GetNextTopLevelWindow( pTopLevel );
+ }
+}
+
+void MacroRecorder::RemoveEventHooks()
+{
+ Window *pTopLevel = Application::GetFirstTopLevelWindow();
+ while ( pTopLevel )
+ {
+ pTopLevel->RemoveChildEventListener( aEventListenerHdl );
+ pTopLevel = Application::GetNextTopLevelWindow( pTopLevel );
+ }
+}
+
+IMPL_LINK( MacroRecorder, HookRefreshHdl, void*, EMPTYARG )
+{
+ AddEventHooks();
+ return 0;
+}
+
+void MacroRecorder::LogVCL( SmartId aParentID, USHORT nVCLWindowType, SmartId aID, String aMethod, USHORT nParam )
+{
+ ::comphelper::UiEventsLogger::logVcl( aParentID.GetText(), nVCLWindowType, aID.GetText(), aMethod, nParam );
+}
+
+void MacroRecorder::LogVCL( SmartId aParentID, USHORT nVCLWindowType, SmartId aID, String aMethod )
+{
+ ::comphelper::UiEventsLogger::logVcl( aParentID.GetText(), nVCLWindowType, aID.GetText(), aMethod );
+}
+
+Window* MacroRecorder::GetParentWithID( Window* pThis )
+{
+ Window *pOverlap = pThis->GetWindow( WINDOW_OVERLAP );
+ while ( pOverlap != pThis && !pThis->GetSmartUniqueOrHelpId().HasAny() && pThis->GET_REAL_PARENT() )
+ pThis = pThis->GET_REAL_PARENT();
+ return pThis;
+}
+
+SmartId MacroRecorder::GetParentID( Window* pThis )
+{
+ if ( pThis->GetParent() )
+ return pThis->GetParent()->GetSmartUniqueOrHelpId();
+ else
+ return SmartId();
+}
+
+IMPL_LINK( MacroRecorder, EventListener, VclSimpleEvent*, pEvent )
+{
+ BOOL bSendData = FALSE;
+
+ if ( pEvent->ISA( VclWindowEvent ) )
+ {
+ VclWindowEvent* pWinEvent = ( VclWindowEvent* ) pEvent;
+ Window* pWin = pWinEvent->GetWindow();
+ ULONG nEventID = pWinEvent->GetId();
+#if OSL_DEBUG_LEVEL > 1
+ if ( nEventID >= 1001 && nEventID != VCLEVENT_WINDOW_KEYUP )
+ nEventID = pWinEvent->GetId(); // Just something to set a breakpoint
+ else
+ return 0;
+#endif
+
+// check for different action after collecting keys
+ // send if there_is_something_to_send
+ // and eather event_is_not_of_interest
+ // or ( new_window and new_window_is_interesting ) ( ignore interesting events to uninteresting window )
+
+ if ( aKeyString.Len()
+ && ( ( nEventID != VCLEVENT_WINDOW_KEYINPUT
+ && nEventID != VCLEVENT_WINDOW_MOUSEMOVE
+ && nEventID != VCLEVENT_WINDOW_COMMAND
+ && nEventID != VCLEVENT_WINDOW_KEYUP )
+ || ( pKeyWin != pWin
+ && ( pWin->GetType() == WINDOW_CONTROL || pWin->GetType() == WINDOW_WINDOW )
+ )
+ )
+ )
+ {
+ if ( m_bRecord )
+ {
+ // we cannot access pKeyWin since it might have dissapeared
+ if ( bKeyFollowFocus )
+ StatementList::pRet->GenReturn( RET_MacroRecorder, aKeyUniqueID, (USHORT)M_TypeKeys, aKeyString, bKeyFollowFocus );
+ else
+ StatementList::pRet->GenReturn( RET_MacroRecorder, aKeyUniqueID, (USHORT)M_TypeKeys, aKeyString );
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::pRet->GenReturn( RET_MacroRecorder, aKeyUniqueID, (USHORT)M_TypeKeys, String::CreateFromInt32( nEventID ) );
+#endif
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+// HACK Too many KeyEvents generated LogVCL( SmartId(), 0, aKeyUniqueID, CUniString("TypeKeys"), aKeyString.Len() );
+ }
+ // cleanup
+ aKeyString.Erase();
+ pKeyWin = NULL;
+ bKeyFollowFocus = FALSE;
+ }
+
+ switch ( pWin->GetType() )
+ {
+ case WINDOW_TABPAGE:
+ switch( nEventID )
+ {
+ case VCLEVENT_WINDOW_ACTIVATE:
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, SmartId(), (comm_USHORT)(M_SetPage|M_RET_NUM_CONTROL), static_cast<comm_ULONG>(pWin->GetSmartUniqueOrHelpId().GetNum()) ); //GetNum() ULONG != comm_ULONG on 64bit
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( SmartId(), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), CUniString("SetPage") );
+ }
+ break;
+ }
+ break;
+ case WINDOW_RADIOBUTTON:
+ case WINDOW_IMAGERADIOBUTTON:
+ switch( nEventID )
+ {
+ case VCLEVENT_BUTTON_CLICK: // VCLEVENT_RADIOBUTTON_TOGGLE
+ {
+ if ( ((RadioButton*)pWin)->IsChecked() )
+ {
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), (comm_USHORT)M_Check );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), CUniString("Check") );
+ }
+ }
+ }
+ break;
+ }
+ break;
+ case WINDOW_CHECKBOX:
+ case WINDOW_TRISTATEBOX:
+ switch( nEventID )
+ {
+ case VCLEVENT_BUTTON_CLICK: //VCLEVENT_CHECKBOX_TOGGLE:
+ {
+ comm_USHORT nMethod;
+ String aMethod;
+ switch ( ((TriStateBox*)pWin)->GetState() )
+ {
+ case STATE_CHECK: nMethod = M_Check; aMethod = CUniString("Check"); break;
+ case STATE_NOCHECK: nMethod = M_UnCheck; aMethod = CUniString("UnCheck"); break;
+ case STATE_DONTKNOW: nMethod = M_TriState; aMethod = CUniString("TriState"); break;
+ default: nMethod = M_Check;
+ DBG_ERROR( "Unknown state in TriStateBox::GetState()" );
+ }
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), nMethod );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), aMethod );
+ }
+ }
+ break;
+ }
+ break;
+ case WINDOW_EDIT:
+ case WINDOW_MULTILINEEDIT:
+ switch( nEventID )
+ {
+ case VCLEVENT_EDIT_MODIFY:
+ pEditModify = pWin;
+ aEditModifyString = ((Edit*)pWin)->GetText();
+ break;
+ }
+ break;
+ case WINDOW_MULTILISTBOX:
+ switch( nEventID )
+ {
+ case VCLEVENT_LISTBOX_SELECT:
+ Sound::Beep();
+ }
+ case WINDOW_LISTBOX:
+ switch( nEventID )
+ {
+// case VCLEVENT_LISTBOX_DOUBLECLICK:
+ case VCLEVENT_LISTBOX_SELECT:
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), (comm_USHORT)M_Select, comm_ULONG( ((ListBox*)pWin)->GetSelectEntryPos() +1 ) );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), CUniString("Select"), ((ListBox*)pWin)->GetSelectEntryPos() );
+ }
+ break;
+ }
+ break;
+ case WINDOW_COMBOBOX:
+ case WINDOW_PATTERNBOX:
+ case WINDOW_NUMERICBOX:
+ case WINDOW_METRICBOX:
+ case WINDOW_CURRENCYBOX:
+ case WINDOW_DATEBOX:
+ case WINDOW_TIMEBOX:
+ switch( nEventID )
+ {
+ case VCLEVENT_EDIT_MODIFY:
+ pEditModify = pWin;
+ aEditModifyString = ((Edit*)pWin)->GetText();
+ break;
+ case VCLEVENT_COMBOBOX_SELECT:
+ {
+ pEditModify = NULL;
+ aEditModifyString.Erase();
+
+ USHORT nPos = ((ComboBox*)pWin)->GetEntryPos(((ComboBox*)pWin)->GetText());
+ if ( m_bRecord )
+ {
+ if ( nPos == COMBOBOX_ENTRY_NOTFOUND )
+ Sound::Beep();
+ else
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), (comm_USHORT)M_Select, (comm_ULONG) nPos+1 );
+ bSendData = TRUE;
+ }
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), CUniString("Select"), nPos );
+ }
+ }
+ }
+ break;
+ case WINDOW_PUSHBUTTON:
+ case WINDOW_OKBUTTON:
+ case WINDOW_CANCELBUTTON:
+ case WINDOW_IMAGEBUTTON:
+ case WINDOW_MOREBUTTON:
+ case WINDOW_HELPBUTTON:
+ switch( nEventID )
+ {
+ case VCLEVENT_BUTTON_CLICK:
+ Window* pParent = pWin->GetParent();
+ BOOL bDone = FALSE;
+ if ( pParent->IsDialog() && !pWin->GetSmartUniqueOrHelpId().HasAny() )
+ {
+ switch ( pParent->GetType() )
+ {
+ case WINDOW_MESSBOX:
+ case WINDOW_INFOBOX:
+ case WINDOW_WARNINGBOX:
+ case WINDOW_ERRORBOX:
+ case WINDOW_QUERYBOX:
+ case WINDOW_BUTTONDIALOG:
+ {
+ comm_USHORT nMethod;
+ String aMethod;
+ ButtonDialog* pBD = (ButtonDialog*)pParent;
+
+ // we have to find the current Button ID ourselves since it is not generated at this point :-(
+ USHORT nCurrentButtonId = 0xffff; // Some wild value to wak up people
+ USHORT i;
+ for ( i = 0; i < pBD->GetButtonCount() ; i++ )
+ {
+ if ( pBD->GetPushButton( pBD->GetButtonId(i) ) == pWin )
+ {
+ nCurrentButtonId = pBD->GetButtonId(i);
+ break;
+ }
+ }
+
+ switch ( nCurrentButtonId )
+ {
+ case BUTTONID_OK: nMethod = M_OK; aMethod = CUniString("OK"); break;
+ case BUTTONID_CANCEL: nMethod = M_Cancel; aMethod = CUniString("Cancel"); break;
+ case BUTTONID_YES: nMethod = M_Yes; aMethod = CUniString("Yes"); break;
+ case BUTTONID_NO: nMethod = M_No; aMethod = CUniString("No"); break;
+ case BUTTONID_RETRY: nMethod = M_Repeat; aMethod = CUniString("Repeat"); break;
+ case BUTTONID_HELP: nMethod = M_Help; aMethod = CUniString("Help"); break;
+ default: nMethod = M_Click; aMethod = CUniString("Click");
+ }
+ if ( m_bRecord )
+ {
+ if ( nMethod != M_Click )
+ StatementList::pRet->GenReturn( RET_MacroRecorder, SmartId( 0 ), nMethod );
+ else
+ StatementList::pRet->GenReturn( RET_MacroRecorder, SmartId( 0 ), nMethod, (comm_ULONG)nCurrentButtonId );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ if ( nMethod != M_Click )
+ LogVCL( SmartId(), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), aMethod );
+ else
+ LogVCL( SmartId(), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), aMethod, nCurrentButtonId );
+ bDone = TRUE;
+ }
+ }
+ break;
+ default:
+ {
+ comm_USHORT nMethod;
+ String aMethod;
+ switch ( pWin->GetType() )
+ {
+ case WINDOW_OKBUTTON: nMethod = M_OK; aMethod = CUniString("OK"); break;
+ case WINDOW_CANCELBUTTON: nMethod = M_Cancel; aMethod = CUniString("Cancel"); break;
+ case WINDOW_HELPBUTTON: nMethod = M_Help; aMethod = CUniString("Help"); break;
+ default: nMethod = M_Default;aMethod = CUniString("Unknown Button");
+ DBG_ERROR( "Unknown Button" );
+ }
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pParent->GetSmartUniqueOrHelpId(), nMethod );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), aMethod );
+ bDone = TRUE;
+ }
+ }
+ break;
+ }
+ }
+ if ( m_bRecord )
+ {
+ if ( !bSendData && pWin->GetSmartUniqueOrHelpId().HasAny() )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), (comm_USHORT)M_Click );
+ bSendData = TRUE;
+ }
+ }
+ if ( m_bLog )
+ {
+ if ( !bDone )
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), CUniString("Click") );
+ }
+ }
+ break;
+/* case C_MoreButton:
+ switch( nEventID )
+ {
+ case M_IsOpen :
+ pRet->GenReturn ( RET_Value, nUId, ((MoreButton*)pControl)->GetState());
+ break;
+ case M_Click :
+ ((MoreButton*)pControl)->Click();
+ break;
+ case M_Open :
+ ((MoreButton*)pControl)->SetState(TRUE);
+ break;
+ case M_Close :
+ ((MoreButton*)pControl)->SetState(FALSE);
+ break;
+ default:
+ ReportError( nUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MoreButton" ) );
+ break;
+ }
+ break;*/
+ case WINDOW_SPINFIELD:
+ case WINDOW_PATTERNFIELD:
+ case WINDOW_NUMERICFIELD:
+ case WINDOW_METRICFIELD:
+ case WINDOW_CURRENCYFIELD:
+ case WINDOW_DATEFIELD:
+ case WINDOW_TIMEFIELD:
+ switch( nEventID )
+ {
+ case VCLEVENT_SPINFIELD_UP:
+ case VCLEVENT_SPINFIELD_DOWN:
+ case VCLEVENT_SPINFIELD_FIRST:
+ case VCLEVENT_SPINFIELD_LAST:
+ {
+ pEditModify = NULL;
+ aEditModifyString.Erase();
+
+ comm_USHORT nMethod;
+ String aMethod;
+ switch ( nEventID )
+ {
+ case VCLEVENT_SPINFIELD_UP: nMethod = M_More; aMethod = CUniString("More"); break;
+ case VCLEVENT_SPINFIELD_DOWN: nMethod = M_Less; aMethod = CUniString("Less"); break;
+ case VCLEVENT_SPINFIELD_FIRST: nMethod = M_ToMin; aMethod = CUniString("ToMin"); break;
+ case VCLEVENT_SPINFIELD_LAST: nMethod = M_ToMax; aMethod = CUniString("ToMax"); break;
+ default: nMethod = M_ToMin; aMethod = CUniString("Unknown");
+ DBG_ERROR( "Unknown EventID in Spinfield" );
+ }
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), nMethod );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), aMethod );
+ }
+ }
+ break;
+ case VCLEVENT_EDIT_MODIFY:
+ pEditModify = pWin;
+ aEditModifyString = ((SpinField*)pWin)->GetText();
+ break;
+ }
+ break;
+
+ case WINDOW_MENUBUTTON:
+ switch( nEventID )
+ {
+ case VCLEVENT_BUTTON_CLICK:
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), (comm_USHORT)M_Click );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), CUniString("Click") );
+ }
+ break;
+/* Keyevent or Timeout
+ case M_Open :
+ {
+ MouseEvent aMEvnt;
+ Point aPt( pControl->GetSizePixel().Width() / 2, pControl->GetSizePixel().Height() / 2 );
+ aMEvnt = MouseEvent( aPt,1,MOUSE_SIMPLECLICK,MOUSE_LEFT );
+ ImplMouseButtonDown( pControl, aMEvnt );
+
+ ULONG nStart = Time::GetSystemTicks();
+ ULONG nDelay = pControl->GetSettings().GetMouseSettings().GetActionDelay();
+ while ( ( Time::GetSystemTicks() - nStart ) < nDelay + 100 )
+ SafeReschedule();
+
+ ImplMouseButtonUp ( pControl, aMEvnt );
+ }
+ break;*/
+ }
+ break;
+ case WINDOW_TOOLBOX:
+ {
+ ToolBox *pTB = ((ToolBox*)pWin);
+ switch( nEventID )
+ {
+ case VCLEVENT_TOOLBOX_SELECT:
+ { // a Button has been clicked
+ // so this cannot be a tearoff or OpenMenu anymore
+ pActionParent = NULL;
+ // compare to 1 for floating ToolBoxes
+ if ( m_bRecord )
+ {
+ if ( !pWin->GetSmartUniqueOrHelpId().HasAny() || pWin->GetSmartUniqueOrHelpId().Matches( 1 ) )
+ // generate direct Button access
+ StatementList::pRet->GenReturn( RET_MacroRecorder, SmartId( pTB->GetItemCommand( pTB->GetCurItemId() ) ), (comm_USHORT)(M_Click) );
+ else
+ // access via Toolbox
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pTB->GetSmartUniqueOrHelpId(), (comm_USHORT)(M_Click|M_RET_NUM_CONTROL), static_cast<comm_ULONG>(pTB->GetHelpId( pTB->GetCurItemId() )) ); // GetHelpId() ULONG != comm_ULONG on 64bit
+ bSendData = TRUE;
+ }
+/* not needed if ( m_bLog )
+ {
+ }*/
+ }
+ break;
+ case VCLEVENT_TOOLBOX_CLICK: /// ATTENTION this is called during initialisation of toolbox. whoever 'invented' this
+ pActionParent = pTB;
+ break;
+// case VCLEVENT_WINDOW_SHOW: // not usable ATM. see above
+// if ( pActionParent )
+// { // a new toolbox opens up, might be a tearoff
+// if ( pActionParent != pWin )
+// { // it IS a tearoff not an undock
+// // compare to 1 for floating ToolBoxes
+// if ( m_bRecord )
+// {
+// if ( !pWin->GetSmartUniqueOrHelpId().HasAny() || pWin->GetSmartUniqueOrHelpId().Matches( 1 ) )
+// // generate direct Button access
+// StatementList::pRet->GenReturn( RET_MacroRecorder, SmartId( pActionParent->GetHelpId( pActionParent->GetCurItemId() ) ), (comm_USHORT)(M_TearOff) );
+// else
+// // access via Toolbox
+// StatementList::pRet->GenReturn( RET_MacroRecorder, pActionParent->GetSmartUniqueOrHelpId(), (comm_USHORT)(M_TearOff|M_RET_NUM_CONTROL), static_cast<comm_ULONG>(pActionParent->GetHelpId( pActionParent->GetCurItemId() )) ); // GetHelpId() ULONG != comm_ULONG on 64bit
+// bSendData = TRUE;
+// }
+// if ( m_bLog )
+// {
+// LogVCL( pActionParent->GetSmartUniqueOrHelpId(), pWin->GetType(), SmartId( pActionParent->GetHelpId( pActionParent->GetCurItemId() ) ), CUniString("TearOff") );
+// }
+// }
+// pActionParent = NULL;
+// }
+// break;
+ case VCLEVENT_TOOLBOX_DEACTIVATE:
+ pActionParent = NULL;
+ break;
+ }
+ }
+ break;
+/* ToolBox *pTB = ((ToolBox*)pControl);
+ if ( pTB->GetUniqueOrHelpId() != nUId ) // Also Button auf der ToolBox gefunden
+ {
+ if ( nParams == PARAM_NONE )
+ { // Wir fälschen einen Parameter
+ nParams = PARAM_USHORT_1;
+ nNr1 = nUId;
+ }
+ else
+ ReportError( nUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
+ }
+
+#define FIND_HELP\
+{\
+ if( nParams == PARAM_USHORT_1 )\
+ nLNr1 = nNr1;\
+ for ( nNr1 = 0; nNr1 < pTB->GetItemCount() && nLNr1 != pTB->GetHelpId(pTB->GetItemId(nNr1)) ; nNr1++ ) {}\
+ bBool1 = nLNr1 == pTB->GetHelpId(pTB->GetItemId(nNr1));\
+ if ( !bBool1 )\
+ ReportError( nUId, GEN_RES_STR1( S_HELPID_ON_TOOLBOX_NOT_FOUND, MethodString( nMethodId ) ) );\
+ else\
+ {\
+ if ( !pTB->IsItemEnabled( pTB->GetItemId(nNr1) ) && nMethodId != _M_IsEnabled )\
+ {\
+ ReportError( nUId, GEN_RES_STR1( S_BUTTON_DISABLED_ON_TOOLBOX, MethodString( nMethodId ) ) );\
+ bBool1 = FALSE;\
+ }\
+ else if ( !pTB->IsItemVisible( pTB->GetItemId(nNr1) ) )\
+ {\
+ ReportError( nUId, GEN_RES_STR1( S_BUTTON_HIDDEN_ON_TOOLBOX, MethodString( nMethodId ) ) );\
+ bBool1 = FALSE;\
+ }\
+ else\
+ {\
+ if ( pTB->GetItemRect(pTB->GetItemId(nNr1)).IsEmpty() )\
+ {\
+ USHORT nLine = pTB->GetCurLine();\
+ do\
+ {\
+ pTB->ShowLine( FALSE );\
+ for ( int i = 1 ; i < 30 ; i++ )\
+ SafeReschedule();\
+ }\
+ while ( pTB->GetCurLine() != nLine && pTB->GetItemRect(pTB->GetItemId(nNr1)).IsEmpty() );\
+ pTB->Invalidate( pTB->GetScrollRect() );\
+ }\
+ if ( pTB->GetItemRect(pTB->GetItemId(nNr1)).IsEmpty() )\
+ {\
+ ReportError( nUId, GEN_RES_STR1( S_CANNOT_MAKE_BUTTON_VISIBLE_IN_TOOLBOX, MethodString( nMethodId ) ) );\
+ bBool1 = FALSE;\
+ }\
+ }\
+ }\
+}\
+
+ switch( nEventID )
+ {
+ case M_SetNextToolBox :
+ if ( (nParams & PARAM_STR_1) )
+ pTB->SetNextToolBox( aString1 );
+ else
+ pTB->SetNextToolBox( pTB->GetNextToolBox() );
+ pTB->NextToolBox();
+ break;
+ case M_GetNextToolBox :
+ pRet->GenReturn ( RET_Value, nUId, (String)pTB->GetNextToolBox());
+ break;
+ default:
+ ReportError( nUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ToolBox" ) );
+ break;
+ }
+ }
+ break;
+*/
+ case WINDOW_CONTROL:
+ case WINDOW_WINDOW:
+ switch( nEventID )
+ {
+ case VCLEVENT_WINDOW_COMMAND:
+ break;
+ case VCLEVENT_WINDOW_KEYINPUT:
+ {
+ const KeyEvent *pKeyEvent = ((KeyEvent*)pWinEvent->GetData());
+ const KeyCode aKeyCode = pKeyEvent->GetKeyCode();
+ if ( pKeyEvent )
+ {
+ pKeyWin = pWin;
+ Window *pIdWin = GetParentWithID( pWin );
+ if ( pIdWin != pWin )
+ bKeyFollowFocus = TRUE;
+ aKeyUniqueID = pIdWin->GetSmartUniqueOrHelpId();
+ if ( m_bLog )
+ {
+// HACK Too many KeyEvents generated if ( aKeyString.Len() == 0 )
+// HACK Too many KeyEvents generated LogVCL( SmartId(), 0, aKeyUniqueID, CUniString("TypeKeysStart") );
+ }
+ if ( ( !aKeyCode.IsMod1() && !aKeyCode.IsMod2() ) &&
+ (( aKeyCode.GetGroup() == KEYGROUP_NUM) ||
+ ( aKeyCode.GetGroup() == KEYGROUP_ALPHA) ||
+ ( aKeyCode.GetCode() == KEY_SPACE) ||
+ ( aKeyCode.GetCode() == KEY_ADD) ||
+ ( aKeyCode.GetCode() == KEY_SUBTRACT) ||
+ ( aKeyCode.GetCode() == KEY_MULTIPLY) ||
+ ( aKeyCode.GetCode() == KEY_DIVIDE) ||
+ ( aKeyCode.GetCode() == KEY_POINT) ||
+ ( aKeyCode.GetCode() == KEY_COMMA) ||
+ ( aKeyCode.GetCode() == KEY_EQUAL) ||
+ ( aKeyCode.GetCode() == 0) ) )
+ {
+ DBG_ASSERT( pKeyEvent->GetCharCode(), "no charcode found" );
+ aKeyString += pKeyEvent->GetCharCode();
+ }
+ else
+ { // not a regular key, transfer KeyCode
+ aKeyString += sal_Unicode(1); // mask it
+ // extra for '>' which is coded as <SHIFT GREATER>
+ if ( pKeyEvent->GetCharCode() == '>' )
+ aKeyString += sal_Unicode( KEY_GREATER | (aKeyCode.GetAllModifier() & ~KEY_SHIFT) );
+ else
+ aKeyString += sal_Unicode( aKeyCode.GetCode() | aKeyCode.GetAllModifier() );
+ }
+ }
+ }
+ break;
+
+ case VCLEVENT_WINDOW_MOUSEMOVE:
+ case VCLEVENT_WINDOW_MOUSEBUTTONDOWN:
+ case VCLEVENT_WINDOW_MOUSEBUTTONUP:
+ {
+ }
+ break;
+
+
+ }
+ break;
+ case WINDOW_DOCKINGWINDOW:
+// switch( nEventID )
+ {
+// case 1 .. 0xffff:
+ DBG_TRACE3( "TT_VCLMessage %u %u %X",nEventID, pWin->GetType(), pWin );
+// BOOL bx = ((DockingWindow*)pWin)->IsFloatingMode();
+// break;
+/* case M_Dock :
+ if ( ((DockingWindow*)pControl)->IsFloatingMode() )
+ ((DockingWindow*)pControl)->SetFloatingMode(FALSE);
+ else
+ ReportError( nUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_FLOATING_MODE, MethodString( nMethodId ) ) );
+ break;
+ case M_Undock :
+ if ( !((DockingWindow*)pControl)->IsFloatingMode() )
+ ((DockingWindow*)pControl)->SetFloatingMode(TRUE);
+ else
+ ReportError( nUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_FLOATING_MODE, MethodString( nMethodId ) ) );
+ break;
+ case M_IsDocked :
+ pRet->GenReturn ( RET_Value, nUId, (comm_BOOL) !((DockingWindow*)pControl)->IsFloatingMode());
+ break;
+ case M_Close:
+ //nWindowWaitUId = nUId;
+ DBG_ASSERT( nUId == pControl->GetUniqueOrHelpId(), "nUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((DockingWindow*)pControl)->Close();
+ break;
+ case M_Size:
+ case M_Move:
+ case M_IsMax :
+ case M_Minimize :
+ case M_Maximize :
+ if ( ((DockingWindow*)pControl)->IsFloatingMode() )
+ {
+ pControl = ((DockingWindow*)pControl)->GetFloatingWindow();
+ goto FloatWin;
+ }
+ else
+ ReportError( nUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_DOCKING_MODE, MethodString( nMethodId ) ) );
+ break;
+ case M_Help: // Alles was unten weiterbehandelt werden soll
+ goto MoreDialog;
+
+ default:
+ ReportError( nUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "DockingWindow" ) );
+ break;*/
+ }
+ break;
+
+
+
+
+
+
+ case WINDOW_FLOATINGWINDOW:
+ {
+ DBG_TRACE3( "TT_VCLMessage %u %u %X",nEventID, pWin->GetType(), pWin );
+// FloatingWindow *pFW = ((FloatingWindow*)pWin);
+/* switch( nEventID )
+ {
+
+// M_OpenMenu an einem ToolboxButton
+ case VCLEVENT_WINDOW_SHOW:
+ if ( pActionParent )
+ { // a new FloatingWindow opens up, so we assume an OpenMenu
+ // compare to 1 for floating ToolBoxes
+ if ( ( pActionParent->GetUniqueOrHelpId() == 0 || pActionParent->GetUniqueOrHelpId() == 1 ) )
+ // generate direct Button access
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pActionParent->GetHelpId( pActionParent->GetCurItemId() ), (comm_USHORT)(M_OpenMenu) );
+ else
+ // access via Toolbox
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pActionParent->GetUniqueOrHelpId(), (comm_USHORT)(M_OpenMenu|M_RET_NUM_CONTROL), pActionParent->GetHelpId( pActionParent->GetCurItemId() ) );
+ bSendData = TRUE;
+ }
+ break;
+
+ }
+ */ }
+ break;
+/*
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_IsMax :
+ pRet->GenReturn ( RET_Value, nUId, (comm_BOOL)!((FloatingWindow*)pControl)->IsRollUp());
+ break;
+ case M_Minimize :
+ ((FloatingWindow*)pControl)->RollUp();
+ break;
+ case M_Maximize :
+ ((FloatingWindow*)pControl)->RollDown();
+ break;
+ case M_Size:
+ {
+ if ( pControl->GetStyle() & WB_SIZEABLE )
+ {
+ pControl->SetSizePixel(Size(nNr1,nNr2));
+ pControl->Resize();
+ }
+ else
+ ReportError( nUId, GEN_RES_STR1( S_SIZE_NOT_CHANGEABLE, MethodString( nMethodId ) ) );
+ break;
+ }
+ case M_Close:
+ DBG_ASSERT( nUId == pControl->GetUniqueOrHelpId(), "nUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((FloatingWindow*)pControl)->Close();
+ break;
+ case M_Help: // Alles was unten weiterbehandelt werden soll
+ case M_Move:
+ goto MoreDialog;
+ default:
+ ReportError( nUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "FloatingWin" ) );
+ break;
+ }
+ break;*/
+
+
+
+
+
+
+
+
+/*
+ case C_ModelessDlg:
+ case C_Dlg:
+ case C_TabDlg:
+ MoreDialog:
+ switch( nEventID )
+ {
+
+ // (Rect GetRect)
+
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_Close:
+ DBG_ASSERT( nUId == pControl->GetUniqueOrHelpId(), "nUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((SystemWindow*)pControl)->Close();
+ break;
+ case M_Move:
+ {
+ pControl->SetPosPixel(Point(nNr1,nNr2));
+ break;
+ }
+ default:
+ ReportError( nUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "Dialog" ) );
+ break;
+ }
+ break;*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+ case C_WorkWin:
+ switch( nEventID )
+ {
+ case M_Close:
+ DBG_ASSERT( nUId == pControl->GetUniqueOrHelpId(), "nUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((WorkWindow*)pControl)->Close();
+ break;
+ case M_Size:
+ case M_Move:
+ goto FloatWin;
+ break;
+ case M_Help: // Alles was unten weiterbehandelt werden soll
+ goto MoreDialog;
+ default:
+ ReportError( nUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "WorkWindow" ) );
+ break;
+ }
+ break;
+ */
+
+
+/* case C_TabPage:
+ switch( nEventID )
+ {
+ }
+ break;*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+ case C_MessBox:
+ case C_InfoBox:
+ case C_WarningBox:
+ case C_ErrorBox:
+ case C_QueryBox:
+ {
+ BOOL bDone = TRUE;
+ MessBox* pMB = (MessBox*)pControl;
+ switch( nEventID )
+ {
+ case M_GetCheckBoxText:
+ pRet->GenReturn ( RET_Value, nUId, pMB->GetCheckBoxText() );
+ break;
+ case M_IsChecked :
+ pRet->GenReturn ( RET_Value, nUId, comm_BOOL( pMB->GetCheckBoxState() == STATE_CHECK) );
+ break;
+ case M_GetState :
+ pRet->GenReturn ( RET_Value, nUId, comm_ULONG( pMB->GetCheckBoxState() ));
+ break;
+ case M_Check :
+ pMB->SetCheckBoxState( STATE_CHECK );
+ break;
+ case M_UnCheck :
+ pMB->SetCheckBoxState( STATE_NOCHECK );
+ break;
+ case M_GetText :
+ pRet->GenReturn ( RET_Value, nUId, pMB->GetMessText());
+ break;
+
+ default:
+ bDone = FALSE;
+ break;
+ }
+ if ( bDone )
+ break; // break the case here else continue at C_ButtonDialog
+ }
+ case C_ButtonDialog:
+ {
+ ButtonDialog* pBD = (ButtonDialog*)pControl;
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Working MessBox: " );
+ if (pControl->IsVisible())
+ m_pDbgWin->AddText("*(Visible)\n");
+ else
+ m_pDbgWin->AddText("*(nicht Visible)\n");
+#endif
+ switch( nEventID )
+ {
+ case M_GetText :
+ pRet->GenReturn ( RET_Value, nUId, pControl->GetText());
+ break;
+ case M_Click:
+ if ( nParams & PARAM_USHORT_1 )
+ {
+ if ( pBD->GetPushButton( nNr1 ) )
+ {
+ if ( nNr1 != BUTTONID_HELP )
+ {
+ SET_WINP_CLOSING(pControl);
+ }
+ pBD->GetPushButton( nNr1 )->Click();
+ }
+ else
+ ReportError( nUId, GEN_RES_STR2( S_NO_DEFAULT_BUTTON, UniString::CreateFromInt32( nNr1 ), MethodString( nMethodId ) ) );
+ }
+ else
+ ReportError( nUId, GEN_RES_STR1( S_BUTTONID_REQUIRED, MethodString( nMethodId ) ) );
+ break;
+ case M_GetButtonCount :
+ pRet->GenReturn ( RET_Value, nUId, comm_ULONG(pBD->GetButtonCount()));
+ break;
+ case M_GetButtonId :
+ if ( ValueOK(nUId, MethodString( nMethodId ),nNr1,pBD->GetButtonCount()) )
+ pRet->GenReturn ( RET_Value, nUId, comm_ULONG(pBD->GetButtonId(nNr1-1)));
+ break;
+ default:
+ ReportError( nUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MessageBox" ) );
+ break;
+ }
+ break;
+
+
+ */
+
+
+ }
+
+
+ switch( nEventID )
+ {
+ case VCLEVENT_CONTROL_LOSEFOCUS:
+ if ( pEditModify == pWin )
+ {
+ if ( m_bRecord )
+ {
+ StatementList::pRet->GenReturn( RET_MacroRecorder, pWin->GetSmartUniqueOrHelpId(), M_SetText, aEditModifyString );
+ bSendData = TRUE;
+ }
+ if ( m_bLog )
+ {
+ LogVCL( GetParentID( pWin ), pWin->GetType(), pWin->GetSmartUniqueOrHelpId(), CUniString("Modify") );
+ }
+ pEditModify = NULL;
+ aEditModifyString.Erase(); //could be somewhat lengthy
+ }
+ break;
+ }
+
+ pLastWin = pWin;
+
+ } // if
+ else if ( pEvent->ISA( VclMenuEvent ) )
+ {
+// VclMenuEvent* pMenuEvent = ( VclMenuEvent* ) pEvent;
+ }
+
+
+ if ( bSendData )
+ new StatementFlow( NULL, F_EndCommandBlock ); // Kommando zum Senden erzeugen und in que eintragen
+
+ return 0;
+}
+
+
+
+static ::osl::Mutex * getRecorderMutex()
+{
+ static ::osl::Mutex * pMutex = NULL;
+ if(pMutex==NULL)
+ {
+ ::osl::MutexGuard aGuard(::osl::Mutex::getGlobalMutex());
+ if(pMutex==NULL)
+ pMutex = new ::osl::Mutex();
+ }
+ return pMutex;
+}
+
+
+void MacroRecorder::CheckDelete()
+{
+ ::osl::MutexGuard aGuard( getRecorderMutex() );
+ if ( !m_bRecord && !m_bLog )
+ {
+ pMacroRecorder = NULL;
+ delete this;
+ }
+}
+
+
+MacroRecorder* MacroRecorder::GetMacroRecorder()
+{
+ ::osl::MutexGuard aGuard( getRecorderMutex() );
+ if ( !pMacroRecorder )
+ pMacroRecorder = new MacroRecorder;
+
+ return pMacroRecorder;
+}
+
+BOOL MacroRecorder::HasMacroRecorder()
+{
+ ::osl::MutexGuard aGuard( getRecorderMutex() );
+ return pMacroRecorder != NULL;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/recorder.hxx b/automation/source/server/recorder.hxx
new file mode 100644
index 000000000000..fff786d1484d
--- /dev/null
+++ b/automation/source/server/recorder.hxx
@@ -0,0 +1,86 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <tools/string.hxx>
+#include <tools/link.hxx>
+#include <vcl/smartid.hxx>
+#include <vcl/timer.hxx>
+
+class ToolBox;
+class Window;
+class VclSimpleEvent;
+
+class MacroRecorder
+{
+private:
+ Window* GetParentWithID( Window* pThis );
+ SmartId GetParentID( Window* pThis );
+
+ Link aEventListenerHdl;
+ DECL_LINK( EventListener, VclSimpleEvent* );
+
+ Window* pLastWin;
+ Window* pEditModify;
+ String aEditModifyString;
+
+ ToolBox *pActionParent; // toolbox from which a tearoff or OpenMenu might happen
+
+ // record keys
+ String aKeyString;
+ SmartId aKeyUniqueID; // has to be remembered seperately since Window might be gone when needed
+ Window* pKeyWin;
+ BOOL bKeyFollowFocus;
+
+ AutoTimer aHookRefresh;
+ void AddEventHooks();
+ void RemoveEventHooks();
+ DECL_LINK( HookRefreshHdl, void* );
+
+ void LogVCL( SmartId aParentID, USHORT nVCLWindowType, SmartId aID, String aMethod, USHORT aParam );
+ void LogVCL( SmartId aParentID, USHORT nVCLWindowType, SmartId aID, String aMethod );
+
+ static MacroRecorder *pMacroRecorder;
+
+ MacroRecorder();
+ ~MacroRecorder();
+ void CheckDelete();
+
+ // Actions to perform
+ BOOL m_bRecord;
+ BOOL m_bLog;
+
+public:
+
+ void SetActionRecord( BOOL bRecord = TRUE ) { m_bRecord = bRecord; CheckDelete(); };
+ void SetActionLog( BOOL bLog = TRUE ) { m_bLog = bLog; CheckDelete(); };
+
+ static MacroRecorder* GetMacroRecorder();
+ static BOOL HasMacroRecorder();
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/retstrm.cxx b/automation/source/server/retstrm.cxx
new file mode 100644
index 000000000000..1e89d1826ddd
--- /dev/null
+++ b/automation/source/server/retstrm.cxx
@@ -0,0 +1,124 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <tools/stream.hxx>
+
+#include "retstrm.hxx"
+#include "rcontrol.hxx"
+#include "svcommstream.hxx"
+
+
+RetStream::RetStream()
+{
+ pSammel = new SvMemoryStream();
+ pCommStream = new SvCommStream( pSammel );
+// SetCommStream( pCommStream );
+}
+
+RetStream::~RetStream()
+{
+ delete pCommStream;
+ delete pSammel;
+}
+
+void RetStream::GenError ( SmartId aUId, String aString )
+{
+ CmdBaseStream::GenError ( &aUId, &aString );
+}
+
+void RetStream::GenReturn ( USHORT nRet, SmartId aUId, String aString )
+{
+ CmdBaseStream::GenReturn ( nRet, &aUId, &aString );
+}
+
+void RetStream::GenReturn ( USHORT nRet, SmartId aUId, SbxValue &aValue )
+{
+ Write(USHORT(SIReturn));
+ Write(nRet);
+ Write(&aUId);
+ Write(USHORT(PARAM_SBXVALUE_1)); // Typ der folgenden Parameter
+ Write(aValue);
+}
+
+void RetStream::GenReturn ( USHORT nRet, SmartId aUId, comm_ULONG nNr, String aString, BOOL bBool )
+{
+ CmdBaseStream::GenReturn ( nRet, &aUId, nNr, &aString, bBool );
+}
+
+void RetStream::GenReturn( USHORT nRet, SmartId aUId, comm_USHORT nMethod, String aString )
+{
+ CmdBaseStream::GenReturn ( nRet, &aUId, nMethod, &aString );
+}
+
+void RetStream::GenReturn( USHORT nRet, SmartId aUId, comm_USHORT nMethod, String aString, BOOL bBool )
+{
+ CmdBaseStream::GenReturn ( nRet, &aUId, nMethod, &aString, bBool );
+}
+
+
+void RetStream::Write( String *pString )
+{
+ CmdBaseStream::Write( pString->GetBuffer(), pString->Len() );
+}
+
+void RetStream::Write( SbxValue &aValue )
+{
+ *pSammel << USHORT( BinSbxValue );
+ aValue.Store( *pSammel );
+}
+
+void RetStream::Write( SmartId* pId )
+{
+ DBG_ASSERT( !pId->HasString() || !pId->HasNumeric(), "SmartId contains Number and String. using String only." );
+ if ( pId->HasString() )
+ {
+ String aTmp( pId->GetStr() );
+ Write( &aTmp );
+ }
+ else
+ Write( static_cast<comm_ULONG>(pId->GetNum()) ); ////GetNum() ULONG != comm_ULONG on 64bit
+}
+
+
+SvStream* RetStream::GetStream()
+{
+ return pSammel;
+}
+
+void RetStream::Reset ()
+{
+ delete pCommStream;
+ delete pSammel;
+ pSammel = new SvMemoryStream();
+ pCommStream = new SvCommStream( pSammel );
+// SetCommStream( pCommStream );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/retstrm.hxx b/automation/source/server/retstrm.hxx
new file mode 100644
index 000000000000..ed620a4f6751
--- /dev/null
+++ b/automation/source/server/retstrm.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 _RETSTRM_HXX
+#define _RETSTRM_HXX
+
+#include <basic/sbxvar.hxx>
+#include <vcl/smartid.hxx>
+#include "cmdbasestream.hxx"
+
+class SvStream;
+
+class RetStream: public CmdBaseStream
+{
+
+public:
+ RetStream();
+ ~RetStream();
+
+ using CmdBaseStream::GenError;
+// void GenError( comm_ULONG nError, const comm_UniChar* aString, comm_USHORT nLenInChars ){CmdBaseStream::GenError( nError, aString, nLenInChars );}
+// new
+ void GenError( SmartId aUId, String aString );
+
+ using CmdBaseStream::GenReturn;
+ void GenReturn( comm_USHORT nRet, comm_ULONG nNr ){CmdBaseStream::GenReturn( nRet, nNr );}
+ void GenReturn( comm_USHORT nRet, SmartId aUId, comm_ULONG nNr ){CmdBaseStream::GenReturn( nRet, &aUId, nNr );}
+ void GenReturn( comm_USHORT nRet, SmartId aUId, comm_BOOL bBool ){CmdBaseStream::GenReturn( nRet, &aUId, bBool );}
+// MacroRecorder
+ void GenReturn( comm_USHORT nRet, SmartId aUId, comm_USHORT nMethod ){CmdBaseStream::GenReturn( nRet, &aUId, nMethod );}
+ void GenReturn( comm_USHORT nRet, SmartId aUId, comm_USHORT nMethod, comm_BOOL bBool ){CmdBaseStream::GenReturn( nRet, &aUId, nMethod, bBool );}
+ void GenReturn( comm_USHORT nRet, SmartId aUId, comm_USHORT nMethod, comm_ULONG nNr ){CmdBaseStream::GenReturn( nRet, &aUId, nMethod, nNr );}
+
+// new
+ void GenReturn( USHORT nRet, SmartId aUId, String aString );
+ void GenReturn( USHORT nRet, SmartId aUId, SbxValue &aValue );
+ void GenReturn( USHORT nRet, SmartId aUId, comm_ULONG nNr, String aString, BOOL bBool );
+// MacroRecorder
+ void GenReturn( USHORT nRet, SmartId aUId, comm_USHORT nMethod, String aString );
+ void GenReturn( USHORT nRet, SmartId aUId, comm_USHORT nMethod, String aString, BOOL bBool );
+
+ void Reset();
+ SvStream* GetStream();
+
+
+
+ using CmdBaseStream::Write;
+ void Write( comm_USHORT nNr ){CmdBaseStream::Write( nNr );}
+ void Write( comm_ULONG nNr ){CmdBaseStream::Write( nNr );}
+ void Write( comm_BOOL bBool ){CmdBaseStream::Write( bBool );}
+// new
+ void Write( SbxValue &aValue );
+
+// Complex Datatypes to be handled system dependent
+ virtual void Write( SmartId* pId );
+ virtual void Write( String *pString );
+
+ SvStream *pSammel;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/scmdstrm.cxx b/automation/source/server/scmdstrm.cxx
new file mode 100644
index 000000000000..977236cc5a3f
--- /dev/null
+++ b/automation/source/server/scmdstrm.cxx
@@ -0,0 +1,217 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <svl/intitem.hxx>
+#include <svl/stritem.hxx>
+#include <svl/eitem.hxx>
+#include "scmdstrm.hxx"
+#include "svcommstream.hxx"
+#include "rcontrol.hxx"
+
+#if OSL_DEBUG_LEVEL > 1
+#include "editwin.hxx"
+#include "statemnt.hxx"
+#endif
+
+SCmdStream::SCmdStream(SvStream *pIn)
+{
+ pSammel = pIn;
+ pCommStream = new SvCommStream( pSammel );
+// SetCommStream( pCommStream );
+}
+
+SCmdStream::~SCmdStream()
+{
+ delete pCommStream;
+}
+
+void SCmdStream::Read (String* &pString)
+{
+ if ( !pString )
+ pString = new String();
+ comm_UniChar* pStr;
+ USHORT nLenInChars;
+ CmdBaseStream::Read( pStr, nLenInChars );
+
+ *pString = String( pStr, nLenInChars );
+ delete [] pStr;
+}
+
+void SCmdStream::Read (String &aString)
+{
+ comm_UniChar* pStr;
+ USHORT nLenInChars;
+ CmdBaseStream::Read( pStr, nLenInChars );
+
+ aString = String( pStr, nLenInChars );
+ delete [] pStr;
+}
+
+void SCmdStream::Read ( SfxPoolItem *&pItem )
+{
+ USHORT nType;
+ USHORT nId;
+ Read(nId);
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "Parameter: " );
+ StatementList::m_pDbgWin->AddText( String::CreateFromInt32( nId ) );
+ StatementList::m_pDbgWin->AddText( " " );
+#endif
+ Read( nType );
+ switch (nType)
+ {
+ case BinUSHORT:
+ {
+ comm_USHORT nNr;
+ Read (nNr );
+ pItem = new SfxUInt16Item(nId,nNr);
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "USHORT:" );
+ StatementList::m_pDbgWin->AddText( String::CreateFromInt32( nNr ) );
+#endif
+ }
+ break;
+ case BinULONG:
+ {
+ comm_ULONG nNr;
+ Read (nNr );
+ pItem = new SfxUInt32Item(nId,nNr);
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "ULONG:" );
+ StatementList::m_pDbgWin->AddText( String::CreateFromInt64( nNr ) );
+#endif
+ }
+ break;
+ case BinString:
+ {
+ String aString;
+ Read (aString);
+
+ pItem = new SfxStringItem(nId,aString);
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "String:" );
+ StatementList::m_pDbgWin->AddText( aString );
+#endif
+ }
+ break;
+ case BinBool:
+ {
+ comm_BOOL bBool;
+ Read (bBool);
+ pItem = new SfxBoolItem(nId,bBool);
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "BOOL:" );
+ StatementList::m_pDbgWin->AddText( bBool ? "TRUE" : "FALSE" );
+#endif
+ }
+ break;
+ default:
+ DBG_ERROR1( "Ungültiger Typ im Stream:%hu", nType );
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "Ungültiger Typ !!!! " );
+#endif
+ break;
+ }
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "\n" );
+#endif
+}
+
+void SCmdStream::Read ( ::com::sun::star::beans::PropertyValue &rItem )
+{
+ USHORT nType;
+ String aId;
+ Read(aId);
+ rItem.Name = rtl::OUString( aId );
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "Parameter: " );
+ StatementList::m_pDbgWin->AddText( aId );
+ StatementList::m_pDbgWin->AddText( " " );
+#endif
+ nType = GetNextType();
+ switch (nType)
+ {
+ case BinUSHORT:
+ {
+ comm_USHORT nNr;
+ Read (nNr );
+ rItem.Value <<= nNr;
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "USHORT:" );
+ StatementList::m_pDbgWin->AddText( String::CreateFromInt32( nNr ) );
+#endif
+ }
+ break;
+ case BinULONG:
+ {
+ comm_ULONG nNr;
+ Read (nNr );
+ rItem.Value <<= nNr;
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "ULONG:" );
+ StatementList::m_pDbgWin->AddText( String::CreateFromInt64( nNr ) );
+#endif
+ }
+ break;
+ case BinString:
+ {
+ String aString;
+ Read (aString);
+ rItem.Value <<= ::rtl::OUString( aString );
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "String:" );
+ StatementList::m_pDbgWin->AddText( aString );
+#endif
+ }
+ break;
+ case BinBool:
+ {
+ comm_BOOL bBool;
+ Read (bBool);
+ rItem.Value <<= bBool;
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "BOOL:" );
+ StatementList::m_pDbgWin->AddText( bBool ? "TRUE" : "FALSE" );
+#endif
+ }
+ break;
+ default:
+ DBG_ERROR1( "Ungültiger Typ im Stream:%hu", nType );
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "Ungültiger Typ !!!! " );
+#endif
+ break;
+ }
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "\n" );
+#endif
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/scmdstrm.hxx b/automation/source/server/scmdstrm.hxx
new file mode 100644
index 000000000000..d578909ad3ab
--- /dev/null
+++ b/automation/source/server/scmdstrm.hxx
@@ -0,0 +1,64 @@
+/* -*- 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 _SCMDSTRM_HXX
+#define _SCMDSTRM_HXX
+
+#include <tools/solar.h>
+#include <com/sun/star/beans/PropertyValue.hpp>
+
+#include "cmdbasestream.hxx"
+
+class SvStream;
+class SfxPoolItem;
+class String;
+class ICommStream;
+
+class SCmdStream: public CmdBaseStream
+{
+ SvStream *pSammel;
+
+public:
+ SCmdStream( SvStream *pIn );
+ ~SCmdStream();
+
+ using CmdBaseStream::Read;
+ void Read ( comm_USHORT &nNr ){CmdBaseStream::Read ( nNr );}
+ void Read ( comm_ULONG &nNr ){CmdBaseStream::Read ( nNr );}
+// void Read ( comm_UniChar* &aString, comm_USHORT &nLenInChars ){CmdBaseStream::Read ( aString, nLenInChars );}
+ void Read ( comm_BOOL &bBool ){CmdBaseStream::Read ( bBool );}
+// new
+ void Read ( String &aString );
+ void Read ( SfxPoolItem *&pItem );
+ void Read ( ::com::sun::star::beans::PropertyValue &rItem );
+
+ virtual void Read (String* &pString);
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/server.cxx b/automation/source/server/server.cxx
new file mode 100644
index 000000000000..66f6f95ae783
--- /dev/null
+++ b/automation/source/server/server.cxx
@@ -0,0 +1,974 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+// do not use Application Idle but AutoTimer instead
+#define TIMERIDLE
+
+#define NO_JPEG
+
+#ifndef NO_JPEG
+#include <svtools/jpeg.hxx>
+#endif
+#include <vcl/timer.hxx>
+#include <vcl/wrkwin.hxx>
+#include <osl/diagnose.h>
+#include <osl/mutex.hxx>
+#include <osl/socket.hxx>
+
+#include <vcl/dialog.hxx>
+#include <tools/stream.hxx>
+#include <tools/config.hxx>
+
+#if 1
+#include <svtools/ttprops.hxx>
+#include <basic/ttstrhlp.hxx>
+#include <svl/stritem.hxx>
+#include <svtools/stringtransfer.hxx>
+#include <vcl/sound.hxx>
+#include "testtool.hrc"
+#include <vcl/bitmap.hxx>
+// Hat keinen Includeschutz
+#include <svtools/svtdata.hxx>
+#endif // 1
+#include <rtl/textenc.h>
+#include <rtl/uri.h>
+#include <rtl/uri.hxx>
+#include "statemnt.hxx"
+#include "scmdstrm.hxx"
+#include "rcontrol.hxx"
+#include "server.hxx"
+#include "testtool.hxx"
+#include "automation/automation.hxx"
+#include "recorder.hxx"
+
+#include "basic/svtmsg.hrc"
+
+#ifdef DBG_UTIL
+void TestToolDebugPrint( const sal_Char *pString )
+{
+ if ( !DbgFilterMessage( pString ) )
+ StatementList::DirectLog( S_AssertError, UniString( pString, RTL_TEXTENCODING_UTF8 ) );
+}
+void SAL_CALL osl_TestToolDebugPrint( const sal_Char *pString )
+{
+ TestToolDebugPrint( pString );
+}
+#endif
+
+
+ULONG RemoteControlCommunicationManager::nPortIs = TT_PORT_NOT_INITIALIZED;
+USHORT RemoteControlCommunicationManager::nComm = 0;
+BOOL RemoteControlCommunicationManager::bQuiet = FALSE;
+
+#if OSL_DEBUG_LEVEL > 1
+RemoteControlCommunicationManager::RemoteControlCommunicationManager( EditWindow * pDbgWin )
+#else
+RemoteControlCommunicationManager::RemoteControlCommunicationManager()
+#endif
+: CommunicationManagerServerViaSocket( GetPort(), 1, TRUE )
+#if OSL_DEBUG_LEVEL > 1
+, m_pDbgWin( pDbgWin )
+#endif
+, pTimer( NULL )
+{
+ bIsPortValid = ( GetPort() != 0 );
+ if ( bQuiet )
+ {
+ SetInfoType( CM_NO_TEXT );
+ }
+ else
+ {
+ SetInfoType( CM_SHORT_TEXT | CM_ALL );
+ ByteString aByteString;
+ InfoMsg( InfoString( aByteString, CM_ALL ) ); // Anzeigen, daß wir da sind
+ }
+}
+
+RemoteControlCommunicationManager::~RemoteControlCommunicationManager()
+{
+ if ( pTimer )
+ delete pTimer;
+ DoQuickShutdown();
+}
+
+void RemoteControlCommunicationManager::ConnectionOpened( CommunicationLink* pCL )
+{
+ StatementFlow::pCommLink = pCL;
+ CommunicationManagerServerViaSocket::ConnectionOpened( pCL );
+}
+
+
+void RemoteControlCommunicationManager::ConnectionClosed( CommunicationLink* pCL )
+{
+ StatementFlow::pCommLink = NULL;
+ CommunicationManagerServerViaSocket::ConnectionClosed( pCL );
+}
+
+
+IMPL_LINK( RemoteControlCommunicationManager, SetWinCaption, Timer*, EMPTYARG )
+{
+ if ( pTimer )
+ {
+ delete pTimer;
+ pTimer = NULL;
+ }
+
+ if ( StatementList::GetFirstDocFrame() )
+ {
+ if ( !aOriginalWinCaption.Len() )
+ aOriginalWinCaption = StatementList::GetFirstDocFrame()->GetText();
+ StatementList::GetFirstDocFrame()->SetText(String(aOriginalWinCaption).AppendAscii(" TT").Append(aAdditionalWinCaption).AppendAscii("[").Append(UniString::CreateFromInt32(nPortToListen)).AppendAscii("]"));
+ }
+ else
+ { // Dann Probieren wir es eben in 1 Sekunde nochmal
+ pTimer = new Timer(); // Wird im Link gelöscht
+ pTimer->SetTimeout( 1000 );
+ pTimer->SetTimeoutHdl( LINK( this, RemoteControlCommunicationManager, SetWinCaption ) );
+ pTimer->Start();
+ }
+ return 0;
+}
+
+void RemoteControlCommunicationManager::InfoMsg( InfoString aMsg )
+{
+ if ( !bIsPortValid )
+ return;
+ aAdditionalWinCaption = UniString( aMsg, RTL_TEXTENCODING_ASCII_US );
+ SetWinCaption();
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( UniString( (ByteString)aMsg, RTL_TEXTENCODING_ASCII_US ) );
+ m_pDbgWin->AddText( "\n" );
+#endif
+}
+
+ULONG RemoteControlCommunicationManager::GetPort()
+{
+ if ( TT_PORT_NOT_INITIALIZED == nPortIs )
+ { // Read Config
+
+ USHORT i;
+ // are we to be automated at all?
+ BOOL bAutomate = FALSE;
+ for ( i = 0 ; i < Application::GetCommandLineParamCount() ; i++ )
+ {
+ if ( Application::GetCommandLineParam( i ).EqualsIgnoreCaseAscii("/enableautomation")
+ || Application::GetCommandLineParam( i ).EqualsIgnoreCaseAscii("-enableautomation"))
+ {
+ bAutomate = TRUE;
+ break;
+ }
+ }
+
+// if started within Portal determin location of testtool.ini/rc by analysing the commandline
+// /userid:demo1[/export/home/user/demo1]
+// -userid:demo1[/export/home/user/demo1]
+ String aIniFileDir;
+ for ( i = 0 ; i < Application::GetCommandLineParamCount() ; i++ )
+ {
+ if ( Application::GetCommandLineParam( i ).Copy(0,8).EqualsIgnoreCaseAscii("/userid:")
+ || Application::GetCommandLineParam( i ).Copy(0,8).EqualsIgnoreCaseAscii("-userid:") )
+ {
+ rtl::OUString aEncHome
+ = Application::GetCommandLineParam(i).GetBuffer();
+
+ rtl::OUString aDecHome = rtl::Uri::decode(aEncHome,
+ rtl_UriDecodeWithCharset,
+ RTL_TEXTENCODING_UTF8);
+
+ aIniFileDir = aDecHome;
+ aIniFileDir.Erase( 0, aIniFileDir.Search('[')+1 );
+ aIniFileDir.Erase( aIniFileDir.Search(']') );
+ }
+ }
+
+ if ( ! aIniFileDir.Len() )
+ aIniFileDir = Config::GetDefDirectory();
+
+ Config aConf(Config::GetConfigName( aIniFileDir, CUniString("testtool") ));
+ aConf.SetGroup("Communication");
+
+ ByteString aNoTesttoolKey( ByteString("Exclude_").Append( ByteString( Application::GetAppFileName(), RTL_TEXTENCODING_UTF8 ) ) );
+// -notesttool
+ for ( i = 0 ; i < Application::GetCommandLineParamCount() ; i++ )
+ {
+ if ( Application::GetCommandLineParam( i ).CompareIgnoreCaseToAscii("-notesttool") == COMPARE_EQUAL )
+ aConf.WriteKey( aNoTesttoolKey, "something" );
+ }
+
+ nPortIs = aConf.ReadKey("TTPort","0").ToInt32();
+
+ // noch prüfen ob dieses Office getestet werden soll.
+ if ( !bAutomate || aConf.ReadKey( aNoTesttoolKey, "" ) != "" )
+ nPortIs = 0;
+
+ nComm = (USHORT)aConf.ReadKey("Comm","0").ToInt32();
+ if ( nComm )
+ aConf.DeleteKey("Comm");
+
+ bQuiet = ( aConf.ReadKey("Quiet","no").CompareIgnoreCaseToAscii("yes") == COMPARE_EQUAL );
+ }
+ return nPortIs;
+}
+
+#if OSL_DEBUG_LEVEL > 1
+#define MIN_IDLE 10000 // Ruhe vor dem Sturm min 10 Sekunden
+#else
+#define MIN_IDLE 60000 // Ruhe vor dem Sturm min 1 Minuten
+#endif
+
+class ExtraIdle : public AutoTimer
+{
+ virtual void Timeout();
+
+ USHORT nStep;
+ ImplRemoteControl *pRemoteControl;
+public:
+ ExtraIdle( ImplRemoteControl *pRC );
+};
+
+
+ExtraIdle::ExtraIdle( ImplRemoteControl *pRC )
+: nStep( 0 )
+, pRemoteControl (pRC )
+{
+ SetTimeout( 120000 ); // 2 Minuten
+#if OSL_DEBUG_LEVEL > 1
+ SetTimeout( 40000 ); // 40 Sekunden
+#endif
+ Start();
+}
+
+void ExtraIdle::Timeout()
+{
+ if ( !StatementList::pTTProperties )
+ StatementList::pTTProperties = new TTProperties();
+
+ if ( !StatementList::pTTProperties->GetSlots() )
+ {
+ delete this;
+ return;
+ }
+
+ // Müssen wir selbst idlen?
+#if OSL_DEBUG_LEVEL > 1
+ ULONG nLastInputInterval = Application::GetLastInputInterval();
+ BOOL bIsInModalMode = Application::IsInModalMode();
+ if ( bIsInModalMode || nLastInputInterval < MIN_IDLE )
+#else
+ if ( Application::IsInModalMode() || Application::GetLastInputInterval() < MIN_IDLE )
+#endif
+ {
+ if ( nStep ) // Schon angefangen? dann abbrechen, sonst später nochmal
+ {
+ if ( nStep < 15 )
+ {
+ Sound::Beep();
+ Sound::Beep();
+ }
+#if OSL_DEBUG_LEVEL < 2
+ delete this;
+#endif
+ }
+#if OSL_DEBUG_LEVEL > 1
+ if ( nStep < 15 )
+ {
+ Sound::Beep();
+ Sound::Beep();
+ }
+#endif
+ return;
+ }
+
+ if ( StatementList::pFirst ) // Verarbeitung neu aufsetzen
+ {
+ GetpApp()->PostUserEvent( LINK( pRemoteControl, ImplRemoteControl, CommandHdl ) );
+ return;
+ }
+
+
+ switch ( nStep++ ) // Probieren ob wir noch was machen können
+ {
+ case 0:
+ {
+ SfxPoolItem *pItem = new SfxStringItem((USHORT)StatementList::pTTProperties->nSidNewDocDirect, CUniString("swriter/web") );
+ new StatementSlot( StatementList::pTTProperties->nSidNewDocDirect, pItem );
+ SetTimeout(30000);
+ return;
+ }
+ case 1:
+ {
+ new StatementSlot( StatementList::pTTProperties->nSidSourceView );
+#if OSL_DEBUG_LEVEL > 1
+ SetTimeout(7000);
+#else
+ SetTimeout(1500);
+#endif
+ return;
+ }
+ case 2:
+ {
+ new StatementSlot( StatementList::pTTProperties->nSidSelectAll );
+ return;
+ }
+ case 3:
+ {
+
+#if OSL_DEBUG_LEVEL > 1
+//#define TT_NO_DECRYPT
+#define TT_CODE
+#else
+#define TT_CODE
+#endif
+
+#ifdef TT_NO_DECRYPT
+ String aStr =
+ ""
+ ;
+
+#else
+ ByteString aStr =
+ "\n"
+ "VRQJ`ob\n"
+ "YEZO\n"
+ "ob\n"
+ "UmRo`\n"
+ "5J~O2o5+90~5,6xW$+5:c9o0UXRm`Y UQ~JP~X]`Y\\|%Y`Yo]~O||2[pP0Y1J,|V),,7:,+|JS+U*[/O|K\n"
+ "|KaLYNV~]]2W/]*Y9|`*Y,P=[5P|U\n"
+ "]}mqbw`zZU\\L\n"
+ "LZdYWo9\n"
+ "/J\n"
+ "U~[QoZ\n"
+ "Rqd~V\n"
+ ",)1~00\n"
+ "\n"
+ ")0~*2=\n"
+ "++2\\5&K|~5n9r~9/*9<*~051*Q|0~0rY|~./97~Q*7,Z9<|KY0:=K*<=w~qY`IbOKzLwN,`7b,V~]E`]b\\ORE~\n"
+ "\n"
+ "Vq~bR`W;a+Y\\J=LKJa+W*I/PbR~JLUX[|b~`Z2P/R*[9a~W=9~/9p8=a*P=J0OZ~7L`JbL=P<WbaLQbPO]JYKbD\n"
+ "aY`J5J:b~7=2~+9)9W1,50b9X3P0`YbYVJ`Jb \\`Z]`Vb\n"
+ "VRQJ`b"
+ ;
+#endif
+
+#ifdef TT_CODE
+ for ( USHORT i = 0 ; i < aStr.Len() ; i++ )
+ {
+ if ( aStr.GetChar(i) < 32 || aStr.GetChar(i) > 126 )
+ {
+ // do nothing
+ }
+ else
+ {
+ aStr.SetChar( i, aStr.GetChar(i) - 32 );
+ aStr.SetChar( i, 126 - aStr.GetChar(i) );
+ }
+
+ if ( i > (aStr.Len() / 2) && (i&1) )
+ {
+ sal_Char c = aStr.GetChar(i);
+ aStr.SetChar( i, aStr.GetChar(aStr.Len()-i-1) );
+ aStr.SetChar( aStr.Len()-i-1, c );
+ }
+ }
+#endif
+
+ ::svt::OStringTransfer::CopyString( UniString( aStr, RTL_TEXTENCODING_ASCII_US ), StatementList::GetFirstDocFrame() );
+
+ new StatementSlot( StatementList::pTTProperties->nSidPaste );
+ return;
+ }
+ case 4:
+ {
+ new StatementSlot( StatementList::pTTProperties->nSidSourceView );
+ return;
+ }
+ case 5:
+ {
+ new StatementSlot( StatementList::pTTProperties->nSidSelectAll );
+ new StatementSlot( StatementList::pTTProperties->nSidCopy );
+ new StatementSlot( StatementList::pTTProperties->nSidPaste );
+ return;
+ }
+ case 6:
+ {
+ ByteString aTr("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-");
+ ByteString aData =
+"P-S-0U04Fihixh00l0004b0b300-PS0g30428333y243q334j44426a6a65576c8k97aJecf7feccedg2inj3ghlshde5krk+lno"
+"PpqpBfjsgusp1unp-po-PS0gm044x465e6b6L6boygeg-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo"
+"-ooo-ooo-oo-1M04020Y30J0o080B040R040M-N0M700l010l000k000000000006000N011I112r222M-N0gJ40D000U001R011"
+"0110500vr0001014p148mcg1R4koV18s95cwkAE2V8gImM5kgQY9WcosCw22I556p669I99aoaadrddd6eeeNghhIhhiriik6lll"
+"NlmmImoprppp6qqqNsttItturuuw6xxxNxyyHyAA6BBBNBCCHCEE6FFFNFGGHGII6JJJNJKKHKMM6NNNNNOOHOQQ6RRRNRSSCSUU"
+"NUVVIVVWpWWYIYYZrZZZ6+++M-N0Q700R000l000l000g00000006000N011I112r222M-N0kJ40C0003110d1110110r00t6000"
+"Q041l18cF14gtk1ous48Acw295gAlEIMv28cxkY5FosQE2595dU9sY56q669N9aaCaddNdeeIeghrhhh6iiiNkllIllmrmmo6ppp"
+"NpqqIqstrttt6uuuIwwxrxxx6yyyIAABrBBB6CCCIEEFrFFF6GGGIIIJrJJJ6KKKIMMNrNNN6OOOIQQRrRRR6SSSIUUVrVVV6WWW"
+"IYYZrZZZ6+++U-S0d3009004Q040Of0TPU5QGjFCdPoji85WiqEopkCag321kP8dW4yO4KRlNi9iwzeTKup+Yk0lrdcicCEeLtVQ"
+"z1IFeROmSJBa7VYMYY-0EWGkJWH6LpAVdrUepM7ScEpkTBkenX3YGuoFVU0IGk+dSzPpv0N6U07eTPFgid-YtvOD2ws5C96qDgIL"
+"vhsoWmBPAozc+KgPjiVuW0TJnrt6PqF63p2VJEJ6A+l33JqESWh0G4yn1JkcaaEBnw17xmaf0q4BGkVy40Jj+FAyioG3KEukCtP1"
+"OAdOe4ASVCPuUrQDFsqBoRWN6jqxOBfH-30WbgyZy+HtyI6xNVvt3M0lnfscjA8rBUeoRXifTPCceY6t46AR9ooG2jVzdmo+PQ6R"
+"cAEDd7VE3GvUyDJzn2e0yyzypEdnCzUZorT029pk4LHJYsRQmR5smaW9EuCbt2A2s2Nd9ZKAkcJSWoTGPV5p6d1PZCiYt6kVETBB"
+"K7zNWhRK7kMBCag7zELQ2e6HWHM+BwO4nJA-30uF2a2WgcgndWuk6gPbha0D5WFPq902KmjNwyg5xkVQvgd9W9SCfiFd95Ndh9yj"
+"Odd7k38da3xWqtwcHPOEb7AvIPqAdRbz3XNNEYFu7bS9Iz-0UVQJc-gtgPCQ7cledmoGTULsGpjeu0TzkJi2tusMDnR4cisDw2rz"
+"Vhs36hPC0oSH7V-UMAjVIC3dRFwNoc20a0+Culnm3q9QQJsgt00IeEoRXCh3jUg3eO8yGBOpFwYap5OrpoAfMeR6Q8L0sUIgI7B3"
+"Oy9q5WMBAxg5PYnBSxZlywhwDlb45Il6Y+F-NaH62MEoByaq02d2aaEz5Bwx45DqfEC4ACqd4FYjI9IbAgqH7uFopm+JQRSHrSNd"
+"ct0dwNo+FAUaD926b3wtUoRIPJ-MTLLiQcC92bTBue9RkDqqYRcXxn06S9Jm6Qhpk9IjH8JLyIinJj3EAF7bTH9jkf170OvzuO2j"
+"I2jenHhQvnKoDSHSmWenEhfEHkVgekpfIOhkBhqLVaEvb83EyfD2Awrbk5+lwyvOne6yBA36rdrmna4xFOsvqGxRcgcJy-lXnjCn"
+"eeWhGvqAbmSf7LcDwqykK9jqADpRqkXSq7MB7ZOHSgJhNitiw3i6y9LYjRNlq4Lc-00zCNL3CThC65Ajjlw8550bAbqa0d0Jz3BT"
+"kH6EDgQhRUhjtyK9y9CjraNEw9ERUq6MmYa989nsRqsPxo+zi2IbOfxy9q3lFL-QSWn5qwp7nTFUwVe-XaDxnGfWOIYXXfIkILs-"
+"lWPSm51tjj967w11u-YylxUO++EfuLsmr1c3jLdgcDYmK9roIAmz1t1vAalje3oyXDp335xkQ24rS1JhdokOn5cWpizqiE5bsbg4"
+"4gWkfJ2IEVnSoWmj8eNeAFuoT0wzWWm9UgmDKRH2INGJy6OHTwn7zawsiPo796yQd6OsPORlTrUR-bEMLPj8nZdMwyX-Jb8npd2-"
+"zV9JMRdNarUy1aF0tiihB0o+kQh5iy9r9BMqhPjf+WckJ9WWqmSQTEqAl+zwgw-+vH5WomSNVjbDLchO9Ae-ggdQGPcb+7Dq0X-d"
+"XsFHj76-a0eUqKlN6cgHMKgKSmv8xcMVnCIPAnqR0SsThTWe8GSgo3pTGWTgBrtb1X2OfHMHsi8D3gkpPwKvoxoEuSJcTmD2kiAS"
+"Pk3wl5C5NZDe9OrZMdDg6VQpDybXJ7EWLCdwsPoTGqhcGOGvrJ2WgFuuem+wP1ZGhkpee9rU7CTad9q9DxVgNzGWk+lGid6rKswa"
+"1+Uc57RmFASpo3qbaGvuMReTLCWXsocM6lvXmSZHAhhaaV7EHH9sJglnrUlniII4I0gVZHFLys8VKKb2yKbAYHeSY3VlmgRywmqd"
+"UXugq90wSsh0poya0qEAF9CjjadQumckue1unyK1sdcUwyxQOcARlHjLWYd3lS2ozCTQ48zZXesU66bAUfTdoXoOInm7MpPgwiDp"
+"XDqJrEMEChxb747KzIHfxSdi++EwdRNK7RHEmgVhqiZkW1WqBEnjst6Oz08ztIPVknfPjq8NDB4h9g1sD+l1xQNzHNg+Jb1Vmii6"
+"1dP-57LPdOhlWSTKYaCmzwAhGqyOlPrY9zXZodpZuoL2kjTBLBxaeGcM+NONZcN7GqIqFcNlhVgMXKHsd-WEBBR957ZZn7hk-mbb"
+"FGxWLzaiHE6t48mXupNDlxi6d1w-yaPlmczA0gTsEhqRrsEbj48ProNvyivlaY06bdYSvGN7IOBc1ezBJiFd5OTz+RbzIsqJpCsJ"
+"BOTSLjAdwXCzq-XExGbygb3X2oURVXxTB4q0e6euBRnXkIJuTM7SfQfQkdEEjN7J56t3oxP6B0cA4lgSDhURzsDzrkk0ECxfwaU3"
+"ovagJuvzx07aksPdxkQ8aqEy618F-4wjCr3hZq8gq3gu7RJ4ovXa86R7ZskSYJC01o2OpfvJh0WqpYiIuE0zBqpI3kTJQZ0Or5ku"
+"9RzhbzbV1AU0BzJ5vPTOBRIOIAiJiBiOdI8fR3dcWle3xCder+W6QELyr6NaldJipQCeAMwRr5mpzZESGAhuU3BDdkCh5ENgMUE-"
+"sWotoCfnOwT7tJlXLHODk8K7Z4zYCG9Dh2fQazDE0JqBDruomfatotGADn25BCDpk6GI6SSftpUd71Qr1JBrgOr33aWswl983Uk7"
+"cq9Em7vGtACekHlvOOVJfbdh76nNHzuQ1Z1oBvuU9l-dAg+-QWWFQ18D8U+zmYn1jypyarIXSrcIb67wLDTFXWm8F9XPmFWRBD3d"
+"WukVJwhGNV5ZHVE1wCudY07ZIEAd1kgzgPcRSxFhRhFpXsnESjJhUNCA3DlrARwzz+llg0xpVHrJiddYT36P453qxpOmIE9e6-qJ"
+"h4ipfTTt8f2Kq4mdWniErPtI+wrN-edvCQFtPdrL+tpV6EpPRXgmHnjRhV0eWWzqxdRZacX98CME3pvwDYWkO8TOUlcNQSKTU1iF"
+"FC9WIBA8PulsCFVNH1qJwZxYYcaX6CGNnR7vHiIBDsTE51J4b4fYucNYFG9V5mCUdrJT57tHk9eghSOfgeHZDxuvQt8619pwKma7"
+"3Nl00EFklZOk+APRmKviL+iyiG1sWfA3E0xUPznlQgvsHJRzD9u0TzHsB6tIMKLmOxvVHG9knpHerjAXNqIp7jwZzvYXIyW8kw8g"
+"3ycECFaB2Y2U0l00NE7l2Aca2y5uhk+QJygN0857SQMVSEXjy+Q84nQjkTh1GAtFACtdHRhwQ6FhQMLjFu6zyxuFycbQA7qNSsiy"
+"90wlAaUBBtFhxMV0TPd8DbVScjJoMSAYMh6GhAHnKOZsbdqvwtHKdZWZ9HQbdmVOt0xnnK5Ju9KfwhuHMZIoPt73BqspII6qBobB"
+"5kfcwm183j4fwapcs50EoGgz2UZGuK88agfskePeYt9DOQD3qxxfuJ5lZUFHa8aqFJIT6MG2Kwtwuu0zBqTz8x5DYM7PDh29F9FU"
+"1ge-wqqIMqmXlpbO65sila1be1yRGABAbw2njF5txZEAaqEyEo9FUPqnKQ4y1NQqSXkCpsqpO06UUCyBBzaDjawwoHkKOT1-zqpz"
+"FU7JNudONE3fuYk83U9thALoAIeG6FKizOLgU4AcDcszCmGZgylUI-Edd9mAKL9nJe+YdiYxl7uX4mATdO30KcuDrRoTxBbiHbuA"
+"qlorQn1D0opRuIhzVLm8+z8QRFlNA0683M1QYE+Lhka+kaIDvE8RHQHel4bOsMFp6lmV6D3cNhQvpG1sECm02a5tgF52reEBaYEw"
+"OhD+RQiFedTm3OQg5iq2c04kidOoDgaPNGs1VitbrhIvAuzStaWksap3jp9UrAN1O-0nAECIfSP0QHVkGWtduz6XSmJ7MsLPmPJ3"
+"hRjY7DtZXWjvtHcj9ooAXcPsI+3YgG951n7urnyB1kbQV+ZdlAbI11Y3orBMB+le8goi66fWyEX9FHpFEL32jNqSghzvyEC1227-"
+"p5t8vx19mYHbOghy5K7voWUAXsjX2gwzicmKiNJR9OrHppAbVEVzVjOuYWmwCpGWFW1DlaoOc03PWkgqvVeezQY8IiM9Rptnniwf"
+"Xa1XnMPo6ES0MHE5nwC8tT65VVw3C2peCu720i6oVvevcoMGeP3PVgvBkudifs0GNH7AaOGVFhrbE68B8sq6AH8BFvXhZfzdhb1f"
+"Y1p-GVyr3qECy393zFEq0wHg2Vls4OiVD-J0d7JFKsuhUPgdykTCWhbqkdvwUUyg7qXPvdeC09AUAszRcVsk5iihIr1+N-0ATkGU"
+"i6GPwTlzw-dALNmjbVjHOSAsWaihe303RxAmD4akSPWkjgtot17BTZfaSgaNH+ESoUGJ3GgPJqD8UBsAShIF-X0wwyFpDkTwESHg"
+"jNwUF9EpszCwj1myzqZG9hIp76G1ymz7BuZF0T5pdA1GMG8AGuRbXEtJMkHsDJoztG06Jqm-khFPydXg-VB1k+l9AMwzzvtCDacK"
+"k22WU1fByYcDpmW0Y9YF-zeZDDcQJVF8tT8cNNjt9GdIF3103ZFP8oulWCfnXETCKz3YQFsm3qOUu6GJ-lb2foo1WJqGpcCbyPmy"
+"Ib95rQLJnk56YC1KmN5zMJ831cVsERyvdPOSW8kg-2uk8m3J4zgAWAhvvBOofIjFb5yNf0shVv-JJ9f49ZFcQ+LKDFKX3iNV1E-G"
+"MxeEwbi-uGP8BGO4vGgV0IFbgswumfhk14OF3q+1qwRFpq4hr1s6zQEAgoVAW3QE4tsQpYW3JkcqDcnSOjbePZeFrFMor-o3UG2F"
+"jmw8667eXk3UiM9vq5EpyrbQxexsJ3tKy7w6lGsumfMWIlcSglkLUzicysuPgqT5Wuzn8MkGvTYve2UyunErUnD-+Qwr0rDo1tOG"
+"bbtcNNeFInx5rDK3DHahjTON3d3oTpePxioVK3sRLDh185yKMzTQv812ADCFcwvFHbetPF41f7kot00O2OMUkw4OPvuTRkhdAhgd"
+"il2SM9bunNaNHqh9Ov8Qv3SKEl1O-BwzjYF0VWjkxycswQFqQotUPw+Q-6FrCPFWvaF2CP2F319stMfD-8bHsd87KZfQ9ChereG4"
+"Z8XP8dNMipn-evkOVVFqfgN16dO8Ya9nqGFIpIW1Ljv7wOAzdZFsm5C1EuQoKzwyXDO0BDjceBsyTt40H0upG8D1N1ZP66OPIeQy"
+"oXQwI63e+NnuYA0687-d6N6rDscj+VHn2R0RUXQFZ2+EANqcqvan4y0Erpl01fAfmLaI8pmOgsRUDvuF5e9YnWNhxtSzS4fsjj1J"
+"1EIGpcw0WfiaOul1s19ZIECoLBx-#S";
+
+
+//#if OSL_DEBUG_LEVEL > 1
+// SvFileStream aStream( "d:\\gh_writeback.jpg" , STREAM_STD_READWRITE | STREAM_TRUNC );
+//#else
+ SvMemoryStream aStream;
+//#endif
+ xub_StrLen c;
+ xub_StrLen cRest = 0;
+
+ xub_StrLen nIndex;
+ for ( nIndex = 0 ; nIndex < aData.Len() ; nIndex++ )
+ {
+ if ( ( nIndex & 3 ) == 0 )
+ {
+ cRest = aData.GetChar( nIndex );
+ cRest = aTr.Search( (sal_Char)cRest );
+ }
+ else
+ {
+ c = aData.GetChar( nIndex );
+ c = aTr.Search( (sal_Char)c );
+
+ c <<= 2;
+ c |= ( ( cRest & 0x30 ) >> 4 );
+ cRest <<= 2;
+
+ aStream << sal_Char(c);
+ }
+ }
+
+ aStream.Seek(0);
+#ifndef NO_JPEG
+ Graphic aGraphic;
+ if ( ImportJPEG( aStream, aGraphic, NULL ) )
+ {
+ Bitmap *pBmp = new Bitmap( aGraphic.GetBitmap() );
+ StatementList::pTTProperties->Img( pBmp );
+ delete pBmp;
+ }
+ else
+#endif
+ {
+ ::svt::OStringTransfer::CopyString( CUniString("\nSorry! no bitmap"), StatementList::GetFirstDocFrame() );
+ }
+
+/***********************************************************************
+// USHORT nBC = pBmp->GetBitCount();
+// pBmp->Scale( 0.02, 0.02 );
+// nBC = pBmp->GetBitCount();
+// SvMemoryStream aStream;
+ SvFileStream aStream( "d:\gh_small50.jpg", STREAM_STD_READ );
+
+ aStream.Seek( 0 );
+ xub_StrLen c;
+ String aOut;
+ String aDreierGruppe;
+ xub_StrLen cRest=0;
+ aStream >> c;
+ while ( !aStream.IsEof() )
+ {
+ cRest <<= 2; // Im ersten Durchgang egal, da immer 0
+ cRest |= ( c & 0x03 );
+ c >>= 2;
+ aDreierGruppe += aTr.GetChar( c );
+
+ if ( aDreierGruppe.Len() == 3 )
+ {
+ aOut += aTr.GetChar( cRest );
+ aOut += aDreierGruppe;
+ cRest = 0;
+ aDreierGruppe = "";
+ }
+ aStream >> c;
+ }
+ if ( aDreierGruppe.Len() )
+ {
+ aOut += cRest;
+ aOut += aDreierGruppe;
+ }
+ ::svt::OStringTransfer::CopyString( aOut );
+**********************************************************************************/
+
+ new StatementSlot( StatementList::pTTProperties->nSidPaste );
+ return;
+ }
+ case 7:
+ {
+ new StatementSlot( 20384 ); // FN_TOOL_ANKER_CHAR aus SW?
+ return;
+ }
+ }
+
+ // Wir sind am Ende
+
+#if OSL_DEBUG_LEVEL < 2
+ delete this;
+#endif
+}
+
+IMPL_LINK( ImplRemoteControl, IdleHdl, Application*, EMPTYARG )
+{
+ if( StatementList::pFirst )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "* " );
+ #endif
+ GetpApp()->PostUserEvent( LINK( this, ImplRemoteControl, CommandHdl ) );
+ }
+ return 0;
+}
+
+
+
+IMPL_LINK( ImplRemoteControl, CommandHdl, Application*, EMPTYARG )
+{
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Entering CommandHdl\n" );
+#endif
+
+ if ( StatementList::MaybeResetSafeReschedule() )
+ {
+ StatementList::bExecuting = FALSE; // Wird nacher im SafeReschedule wieder zurückgesetzt
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "SafeReschedule has been reset\n" );
+#endif
+ }
+
+ if ( ( StatementList::bReadingCommands && !StatementList::bDying ) ||
+ ( StatementList::bExecuting ) ||
+ ( StatementList::IsInReschedule() ) )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ if ( StatementList::bReadingCommands )
+ m_pDbgWin->AddText( "Reading Commands " );
+ if ( StatementList::bExecuting )
+ m_pDbgWin->AddText( "In Execute " );
+ if ( StatementList::IsInReschedule() )
+ {
+ m_pDbgWin->AddText( "In Reschedule FocusWindow: 0x" );
+ m_pDbgWin->AddText(
+ String::CreateFromInt64(
+ sal::static_int_cast< sal_Int64 >(
+ reinterpret_cast< sal_IntPtr >(GetpApp()->GetFocusWindow())),
+ 16 ));
+ m_pDbgWin->AddText( " " );
+ }
+ m_pDbgWin->AddText( "Leaving CommandHdl\n" );
+#endif
+ return 0; // Garnicht erst irgendwelchen blödsinn machen
+ }
+
+ while( StatementList::pFirst && ( !StatementList::bReadingCommands || StatementList::bDying ) )
+ // Schleift hier bis Befehl nicht zurückkommt,
+ // Wird dann rekursiv über IdleHdl und PostUserEvent aufgerufen.
+ {
+ m_bInsideExecutionLoop = TRUE;
+#ifdef TIMERIDLE
+ m_aIdleTimer.Stop();
+ m_aIdleTimer.Start();
+#endif
+ StatementList *pC = StatementList::pFirst;
+
+// MessBox MB( pMainWin, WB_DEF_OK|WB_OK, "Pause ...", "... und Weiter" );
+// MB.Execute();
+
+ if ( !StatementList::bCatchGPF )
+ {
+ if (!pC->CheckWindowWait() || !pC->Execute())
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Leaving CommandHdl\n" );
+#endif
+ return 0; // So dass die App nochmal ´ne chance bekommt
+ }
+ }
+ else
+ {
+ try
+ {
+ if (!pC->CheckWindowWait() || !pC->Execute())
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Leaving CommandHdl\n" );
+#endif
+ return 0; // So dass die App nochmal ´ne chance bekommt
+ }
+ }
+ catch( ... )
+ {
+ if ( !StatementFlow::bUseIPC )
+ throw; // aus der Hilfe heraus nicht leise abbrechen
+
+ try
+ {
+ ModelessDialog *pDlg = new ModelessDialog(NULL);
+ pDlg->SetOutputSizePixel(Size(150,0));
+ pDlg->SetText( String ( TTProperties::GetSvtResId( TT_GPF ) ) );
+ pDlg->Show();
+ DBG_ERROR("GPF");
+ pC->ReportError( GEN_RES_STR0( S_GPF_ABORT ) );
+ StatementList::bDying = TRUE;
+ while ( StatementList::pFirst ) // Kommandos werden übersprungen
+ StatementList::NormalReschedule();
+ delete pDlg;
+ }
+ catch ( ... )
+ {
+ Application::Quit();
+ }
+ Application::Quit();
+ }
+ }
+
+/* #i46293# remove reschedules
+ for (int xx = 1;xx < 20;xx++)
+ StatementList::NormalReschedule();
+*/
+ m_bInsideExecutionLoop = FALSE;
+ }
+
+ StatementList::aWindowWaitUId = SmartId(); // Warten rücksetzen, da handler sowieso verlassen wird
+
+/* if( StatementList::pFirst && !StatementList::bReadingCommands )
+ // Abfrage nötig, da andere CommandHdl aktiv sein können oder
+ // neue Commands gelesen werden können
+ {
+ delete StatementList::pFirst; // Löscht die gesamte Liste !!
+ StatementList::pFirst = NULL;
+ StatementList::pCurrent = NULL; // Nur zur Sicherheit, sollte hier sowieso NULL sein
+ }*/
+
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Leaving CommandHdl\n" );
+#endif
+ return 0;
+}
+
+IMPL_LINK( ImplRemoteControl, QueCommandsEvent, CommunicationLink*, pCL )
+{
+ SvStream *pTemp = pCL->GetServiceData();
+ QueCommands( SI_IPCCommandBlock, pTemp );
+ delete pTemp;
+ return 0;
+}
+
+BOOL ImplRemoteControl::QueCommands( ULONG nServiceId, SvStream *pIn )
+{
+// return TRUE;
+ USHORT nId;
+
+ if( !m_bIdleInserted )
+ {
+#ifdef TIMERIDLE
+ m_aIdleTimer.SetTimeoutHdl( LINK( this, ImplRemoteControl, IdleHdl ) );
+ m_aIdleTimer.SetTimeout( 500 );
+ m_aIdleTimer.Start();
+#else
+ GetpApp()->InsertIdleHdl( LINK( this, ImplRemoteControl, IdleHdl ), 1 );
+#endif
+ m_bIdleInserted = TRUE;
+ }
+
+
+ StatementList::bReadingCommands = TRUE;
+
+#if OSL_DEBUG_LEVEL > 1
+ if (!m_pDbgWin->bQuiet)
+ m_pDbgWin->Show();
+ m_pDbgWin->AddText( "Reading " );
+ m_pDbgWin->AddText( String::CreateFromInt64( nServiceId ) );
+ m_pDbgWin->AddText( " :\n" );
+#endif
+
+ if( nServiceId != SI_IPCCommandBlock && nServiceId != SI_DirectCommandBlock )
+ {
+ DBG_ERROR1( "Ungültiger Request :%i", (int)nServiceId );
+ return FALSE;
+ }
+
+ SCmdStream *pCmdStream = new SCmdStream(pIn);
+
+ pCmdStream->Read( nId );
+ while( !pIn->IsEof() )
+ {
+ switch( nId )
+ {
+ case SICommand:
+ {
+ new StatementCommand( pCmdStream ); // Wird im Konstruktor an Liste angehängt
+ break;
+ }
+ case SIControl:
+ case SIStringControl:
+ {
+ new StatementControl( pCmdStream, nId ); // Wird im Konstruktor an Liste angehängt
+ break;
+ }
+ case SISlot:
+ {
+ new StatementSlot( pCmdStream ); // Wird im Konstruktor an Liste angehängt
+ break;
+ }
+ case SIUnoSlot:
+ {
+ new StatementUnoSlot( pCmdStream ); // Wird im Konstruktor an Liste angehängt
+ break;
+ }
+ case SIFlow:
+ {
+ new StatementFlow( nServiceId, pCmdStream, this ); // Wird im Konstruktor an Liste angehängt
+ break;
+ }
+ default:
+ DBG_ERROR1( "Unbekannter Request Nr:%i", nId );
+ break;
+ }
+ if( !pIn->IsEof() )
+ pCmdStream->Read( nId );
+ else {
+ DBG_ERROR( "truncated input stream" );
+ }
+ }
+
+ StatementList::bReadingCommands = FALSE;
+
+ delete pCmdStream;
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Done Reading " );
+ m_pDbgWin->AddText( String::CreateFromInt64( nServiceId ) );
+ m_pDbgWin->AddText( " :\n" );
+#endif
+ if ( !m_bInsideExecutionLoop )
+ {
+#ifdef DEBUG
+ m_pDbgWin->AddText( "Posting Event for CommandHdl.\n" );
+#endif
+
+ GetpApp()->PostUserEvent( LINK( this, ImplRemoteControl, CommandHdl ) );
+ }
+#ifdef DEBUG
+ else
+ m_bInsideExecutionLoop = TRUE;
+#endif
+ return TRUE;
+} // BOOL ImplRemoteControl::QueCommands( ULONG nServiceId, SvStream *pIn )
+
+
+SvStream* ImplRemoteControl::GetReturnStream()
+{
+ SvStream* pTemp = pRetStream;
+ pRetStream = NULL;
+ return pTemp;
+}
+
+ImplRemoteControl::ImplRemoteControl()
+: m_bIdleInserted( FALSE )
+, m_bInsideExecutionLoop( FALSE )
+#if OSL_DEBUG_LEVEL > 1
+, m_pDbgWin(NULL)
+#endif
+, pRetStream(NULL)
+{
+#if OSL_DEBUG_LEVEL > 1
+ if ( RemoteControlCommunicationManager::GetPort() != TT_NO_PORT_DEFINED || RemoteControlCommunicationManager::nComm )
+ {
+ m_pDbgWin = new EditWindow( NULL, CUniString("Debug Window"), WB_VSCROLL );
+ m_pDbgWin->bQuiet = TRUE;
+ m_pDbgWin->Hide();
+ StatementList::m_pDbgWin = m_pDbgWin;
+ }
+#endif
+ if ( RemoteControlCommunicationManager::GetPort() == TT_NO_PORT_DEFINED )
+ pServiceMgr = NULL;
+ else
+ {
+#if OSL_DEBUG_LEVEL > 1
+ pServiceMgr = new RemoteControlCommunicationManager( m_pDbgWin );
+#else
+ pServiceMgr = new RemoteControlCommunicationManager();
+#endif
+ pServiceMgr->SetDataReceivedHdl( LINK( this, ImplRemoteControl, QueCommandsEvent ) );
+ pServiceMgr->StartCommunication();
+
+#ifdef DBG_UTIL
+ DbgSetPrintTestTool( TestToolDebugPrint );
+ // first change it, so we get the original Pointer
+ StatementCommand::pOriginal_osl_DebugMessageFunc = osl_setDebugMessageFunc( osl_TestToolDebugPrint );
+ if ( DbgGetErrorOut() != DBG_OUT_TESTTOOL )
+ osl_setDebugMessageFunc( StatementCommand::pOriginal_osl_DebugMessageFunc );
+#endif
+ }
+ if ( RemoteControlCommunicationManager::nComm )
+ new ExtraIdle( this ); // Setzt die Bearbeitung wieder auf
+}
+
+ImplRemoteControl::~ImplRemoteControl()
+{
+ if ( MacroRecorder::HasMacroRecorder() )
+ MacroRecorder::GetMacroRecorder()->SetActionRecord( FALSE ); // Will delete MacroRecorder if necessary
+
+
+ StatementList::bDying = TRUE;
+#if OSL_DEBUG_LEVEL > 1
+ if ( m_pDbgWin )
+ m_pDbgWin->bQuiet = TRUE; // Keine Ausgabe mehr im Debugwindow
+#endif
+
+#ifdef DBG_UTIL
+ // Zurücksetzen, so daß nachfolgende Assertions nicht verloren gehen
+ DbgSetPrintTestTool( NULL );
+ osl_setDebugMessageFunc( StatementCommand::pOriginal_osl_DebugMessageFunc );
+#endif
+
+ if ( StatementList::pFirst )
+ { // Es sind noch Kommandos da, also auch eine Möglichkeit zurückzusenden.
+ StatementList::pFirst->ReportError( GEN_RES_STR0( S_APP_SHUTDOWN ) );
+ while ( StatementList::pFirst ) // Kommandos werden übersprungen
+ StatementList::NormalReschedule(); // Fehler zurückgeschickt
+ }
+
+ if ( pServiceMgr )
+ pServiceMgr->StopCommunication();
+
+ if ( GetTTSettings()->pDisplayHidWin )
+ {
+ delete (Window*)(GetTTSettings()->pDisplayHidWin);
+ GetTTSettings()->pDisplayHidWin = NULL;
+ }
+ if ( GetTTSettings()->pTranslateWin )
+ {
+ delete (Window*)(GetTTSettings()->pTranslateWin);
+ GetTTSettings()->pTranslateWin = NULL;
+ }
+#if OSL_DEBUG_LEVEL > 1
+ delete m_pDbgWin;
+#endif
+ if( m_bIdleInserted )
+ {
+#ifdef TIMERIDLE
+ m_aIdleTimer.Stop();
+#else
+ GetpApp()->RemoveIdleHdl( LINK( this, ImplRemoteControl, IdleHdl ) );
+#endif
+ m_bIdleInserted = FALSE;
+ }
+ delete pServiceMgr;
+}
+
+RemoteControl::RemoteControl()
+{
+ pImpl = new ImplRemoteControl;
+}
+
+RemoteControl::~RemoteControl()
+{
+ delete pImpl;
+}
+
+static ::osl::Mutex aMutex;
+static RemoteControl* pRemoteControl = 0;
+extern "C" void CreateRemoteControl()
+{
+ if ( !pRemoteControl )
+ {
+ ::osl::MutexGuard aGuard( aMutex );
+ if ( !pRemoteControl )
+ pRemoteControl = new RemoteControl();
+ }
+}
+
+extern "C" void DestroyRemoteControl()
+{
+ ::osl::MutexGuard aGuard( aMutex );
+ delete pRemoteControl;
+ pRemoteControl = 0;
+}
+
+extern "C" void CreateEventLogger()
+{
+ MacroRecorder::GetMacroRecorder()->SetActionLog();
+}
+
+extern "C" void DestroyEventLogger()
+{
+ MacroRecorder::GetMacroRecorder()->SetActionLog( FALSE ); // Will delete MacroRecorder if necessary
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/server.hxx b/automation/source/server/server.hxx
new file mode 100644
index 000000000000..e07ad2b0f6e4
--- /dev/null
+++ b/automation/source/server/server.hxx
@@ -0,0 +1,73 @@
+/* -*- 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 _SERVER_HXX
+#define _SERVER_HXX
+
+#include "editwin.hxx"
+#include <automation/communi.hxx>
+
+#define TT_PORT_NOT_INITIALIZED ULONG(0xFFFFFFFF) // Eigentlich ja noch mehr, aber soll mal reichen
+#define TT_NO_PORT_DEFINED 0
+
+class RemoteControlCommunicationManager : public CommunicationManagerServerViaSocket
+{
+#if OSL_DEBUG_LEVEL > 1
+ EditWindow *m_pDbgWin;
+#endif
+ String aOriginalWinCaption;
+ String aAdditionalWinCaption;
+ BOOL bIsPortValid;
+ DECL_LINK( SetWinCaption, Timer* = NULL);
+ Timer* pTimer;
+ virtual void InfoMsg( InfoString aMsg );
+ static ULONG nPortIs;
+ static BOOL bQuiet;
+
+public:
+#if OSL_DEBUG_LEVEL > 1
+ RemoteControlCommunicationManager( EditWindow * pDbgWin );
+#else
+ RemoteControlCommunicationManager();
+#endif
+ ~RemoteControlCommunicationManager();
+
+ virtual void ConnectionOpened( CommunicationLink* pCL );
+ virtual void ConnectionClosed( CommunicationLink* pCL );
+
+ static ULONG GetPort();
+ static USHORT nComm;
+
+#if OSL_DEBUG_LEVEL > 1
+// virtual void DataReceived( CommunicationLink* pCL );
+#endif
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/sta_list.cxx b/automation/source/server/sta_list.cxx
new file mode 100644
index 000000000000..756cfa980114
--- /dev/null
+++ b/automation/source/server/sta_list.cxx
@@ -0,0 +1,1224 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <tools/time.hxx>
+#include <vcl/splitwin.hxx>
+#include <vcl/wrkwin.hxx>
+#include <basic/ttstrhlp.hxx>
+#include "statemnt.hxx"
+
+#include "retstrm.hxx"
+#include "rcontrol.hxx"
+
+#if OSL_DEBUG_LEVEL > 1
+#include "editwin.hxx"
+#endif
+
+#include "profiler.hxx"
+#include <vcl/floatwin.hxx>
+#include <vcl/toolbox.hxx>
+
+// only needed for dynamic_cast in wintree
+#include <svtools/editbrowsebox.hxx>
+#include <svtools/valueset.hxx>
+#include <svtools/roadmap.hxx>
+#include <svtools/extensionlistbox.hxx>
+#include <svtools/table/tablecontrol.hxx>
+
+#define WINDOW_ANYTYPE WINDOW_BASE
+
+
+TTProfiler *StatementList::pProfiler = NULL;
+StatementList *StatementList::pFirst = NULL;
+BOOL StatementList::bReadingCommands = FALSE;
+BOOL StatementList::bIsInReschedule = FALSE;
+USHORT StatementList::nModalCount = 0;
+Window *StatementList::pLastFocusWindow = NULL;
+BOOL StatementList::bWasDragManager = FALSE;
+BOOL StatementList::bWasPopupMenu = FALSE;
+BOOL StatementList::bBasicWasRunning = FALSE;
+RetStream *StatementList::pRet = NULL;
+BOOL StatementList::IsError = FALSE;
+BOOL StatementList::bDying = FALSE;
+BOOL StatementList::bExecuting = FALSE;
+StatementList *StatementList::pCurrentProfileStatement = NULL;
+BOOL StatementList::bUsePostEvents = TRUE;
+#if OSL_DEBUG_LEVEL > 1
+EditWindow *StatementList::m_pDbgWin;
+#endif
+
+
+SmartId StatementList::aWindowWaitUId = SmartId();
+Window *StatementList::pWindowWaitPointer = NULL;
+SmartId StatementList::aWindowWaitOldHelpId = SmartId();
+SmartId StatementList::aWindowWaitOldUniqueId = SmartId();
+USHORT StatementList::nUseBindings = 0;
+
+SmartId StatementList::aSubMenuId1 = SmartId(); // Untermenüs bei PopupMenus
+SmartId StatementList::aSubMenuId2 = SmartId(); // erstmal 2-Stufig
+SmartId StatementList::aSubMenuId3 = SmartId(); // and now even 3 levels #i31512#
+SystemWindow *StatementList::pMenuWindow = NULL;
+TTProperties *StatementList::pTTProperties = NULL;
+
+USHORT StatementList::nMinTypeKeysDelay = 0; // Verzögerung der einzelnen Anschläge für TypeKeys
+USHORT StatementList::nMaxTypeKeysDelay = 0;
+BOOL StatementList::bDoTypeKeysDelay = FALSE;
+
+Window* StatementList::pFirstDocFrame = NULL;
+
+BOOL StatementList::bIsSlotInExecute = FALSE;
+
+BOOL StatementList::bCatchGPF = TRUE;
+
+
+IMPL_GEN_RES_STR;
+
+
+static TTSettings* pTTSettings = NULL;
+
+TTSettings* GetTTSettings()
+{
+ if ( !pTTSettings )
+ {
+ pTTSettings = new TTSettings;
+
+ // DisplayHID
+ pTTSettings->pDisplayInstance = NULL;
+ pTTSettings->pDisplayHidWin = NULL;
+ pTTSettings->Old = NULL;
+ pTTSettings->Act = NULL;
+ pTTSettings->aOriginalCaption.Erase();
+
+ // Translate
+ pTTSettings->pTranslateWin = NULL;
+ pTTSettings->bToTop = TRUE;
+ }
+
+ return pTTSettings;
+}
+
+
+
+
+#define IS_WINP_CLOSING(pWin) (pWin->GetSmartHelpId().Matches( 4321 ) && pWin->GetSmartUniqueId().Matches( 1234 ))
+
+/*
+UniString GEN_RES_STR0( ULONG nResId ) { return ResString( nResId ); }
+UniString GEN_RES_STR1( ULONG nResId, const UniString &Text1 ) { return GEN_RES_STR0( nResId ).Append( ArgString( 1, Text1 ) ); }
+UniString GEN_RES_STR2( ULONG nResId, const UniString &Text1, const UniString &Text2 ) { return GEN_RES_STR1( nResId, Text1 ).Append( ArgString( 2, Text2 ) ); }
+UniString GEN_RES_STR3( ULONG nResId, const UniString &Text1, const UniString &Text2, const UniString &Text3 ) { return GEN_RES_STR2( nResId, Text1, Text2 ).Append( ArgString( 3, Text3 ) );}
+*/
+StatementList::StatementList()
+: nRetryCount(MAX_RETRIES)
+, bStatementInQue(FALSE)
+{
+ if (!pRet)
+ pRet = new RetStream; // so Spät wie möglich, aber dennoch Zentral und auf jeden Fall rechtzeitig, da pRet private ist.
+}
+
+void StatementList::InitProfile()
+{
+ if ( pProfiler )
+ {
+ if ( pProfiler->IsProfilingPerCommand() || pProfiler->IsPartitioning() )
+ pProfiler->StartProfileInterval( pCurrentProfileStatement != this );
+
+#if OSL_DEBUG_LEVEL > 1
+ if ( pCurrentProfileStatement != NULL && pCurrentProfileStatement != this )
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), CUniString("InitProfile von anderem Statement gerufen ohne SendProfile\n") );
+#endif
+ pCurrentProfileStatement = this;
+ }
+}
+
+void StatementList::SendProfile( String aText )
+{
+ if ( pProfiler )
+ {
+ if ( pCurrentProfileStatement == this )
+ {
+ if ( pProfiler->IsProfilingPerCommand() || pProfiler->IsPartitioning() )
+ pProfiler->EndProfileInterval();
+
+ if ( pProfiler->IsProfilingPerCommand() )
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), pProfiler->GetProfileLine( aText ) );
+
+ if ( pProfiler->IsPartitioning() )
+ pRet->GenReturn( RET_ProfileInfo, SmartId( S_ProfileTime ), static_cast<comm_ULONG>(pProfiler->GetPartitioningTime()) ); // GetPartitioningTime() ULONG != comm_ULONG on 64bit
+ }
+
+ if ( pProfiler->IsAutoProfiling() )
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), pProfiler->GetAutoProfiling() );
+
+#if OSL_DEBUG_LEVEL > 1
+ if ( pCurrentProfileStatement == NULL )
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), CUniString("SendProfile ohne InitProfile\n") );
+#endif
+ pCurrentProfileStatement = NULL;
+ }
+}
+
+void StatementList::QueStatement(StatementList *pAfterThis)
+{
+ DBG_ASSERT(!bStatementInQue,"QueStatement für bereits eingetragenes Statement -> Abgebrochen");
+ if ( bStatementInQue )
+ return;
+
+ bStatementInQue = TRUE;
+ if ( pAfterThis )
+ {
+ if ( pAfterThis->bStatementInQue )
+ {
+ pNext = pAfterThis->pNext;
+ pAfterThis->pNext = this;
+ }
+ else
+ { // pAfterThis not in que -> already dequed -> add to front of list
+ pNext = pFirst;
+ pFirst = this;
+ }
+ }
+ else // am Ende einfügen
+ {
+ pNext = NULL;
+ if( !pFirst )
+ pFirst = this;
+ else
+ {
+ StatementList *pList;
+ pList = pFirst;
+ while( pList->pNext )
+ pList = pList->pNext;
+ pList->pNext = this;
+ }
+ }
+}
+
+void StatementList::Advance()
+{ // pFirst ist static!
+ pFirst = pNext;
+ bStatementInQue = FALSE;
+ pNext = NULL;
+}
+
+
+StatementList::~StatementList()
+{
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Deleting \n" );
+#endif
+ DBG_ASSERT(!bReadingCommands,"Deleting commands while reading them!");
+}
+
+Window* StatementList::GetDocWin( USHORT nNr )
+{
+ Window* pBase = Application::GetFirstTopLevelWindow();
+
+ while ( pBase )
+ {
+ if ( IsDocWin( pBase ) )
+ {
+ if ( !nNr )
+ return pBase;
+ nNr--;
+ }
+ pBase = Application::GetNextTopLevelWindow( pBase );
+ }
+ return NULL;
+}
+
+USHORT StatementList::GetDocFrameCount()
+{
+ Window* pBase = Application::GetFirstTopLevelWindow();
+ USHORT nCount = 0;
+
+ while ( pBase )
+ {
+ if ( IsDocFrame( pBase ) )
+ nCount++;
+ pBase = Application::GetNextTopLevelWindow( pBase );
+ }
+ return nCount;
+}
+
+USHORT StatementList::GetDocWinCount()
+{
+ Window* pBase = Application::GetFirstTopLevelWindow();
+ USHORT nCount = 0;
+
+ while ( pBase )
+ {
+ if ( IsDocWin( pBase ) )
+ nCount++;
+ pBase = Application::GetNextTopLevelWindow( pBase );
+ }
+ return nCount;
+}
+
+Window* StatementList::SearchAllWin( Window *pBase, Search &aSearch, BOOL MaybeBase )
+{
+
+ if ( !pBase && !aSearch.HasSearchFlag( SEARCH_NO_TOPLEVEL_WIN ) )
+ {
+ BOOL bSearchFocusFirst = aSearch.HasSearchFlag( SEARCH_FOCUS_FIRST );
+
+ Window *pControl = NULL;
+ if ( bSearchFocusFirst )
+ {
+ // first test Parent of Focus Window
+ pBase = Application::GetFocusWindow();
+ if ( pBase )
+ {
+ DBG_ASSERT( WinPtrValid( pBase ), "GetFocusWindow is no valid WindowPointer" );
+ Window *pPParent = pBase;
+ while ( pPParent->GET_REAL_PARENT() )
+ pPParent = pPParent->GET_REAL_PARENT();
+
+// if ( !IsFirstDocFrame( pPParent ) )
+// {
+ // get overlap window. Will be dialog else document itself
+ pBase = pBase->GetWindow( WINDOW_OVERLAP );
+
+ // set flag to find disabled elements.
+ // This is better than an enabled one on another Window
+ aSearch.AddSearchFlags( SEARCH_FIND_DISABLED );
+
+ // search on current Dialog first
+ pControl = SearchAllWin( pBase, aSearch );
+
+ // search on current Document
+ if ( !pControl && pBase != pPParent )
+ pControl = SearchAllWin( pPParent, aSearch );
+
+ aSearch.RemoveSearchFlags( SEARCH_FIND_DISABLED );
+
+ if ( pControl )
+ return pControl;
+// }
+ }
+ }
+
+ pBase = Application::GetFirstTopLevelWindow();
+
+ // Skip FirstDocFrame
+// if ( bSearchFocusFirst && IsFirstDocFrame( pBase ) )
+// pBase = Application::GetNextTopLevelWindow( pBase );
+
+ while ( pBase )
+ {
+ pControl = SearchAllWin( pBase, aSearch );
+ if ( pControl )
+ return pControl;
+
+ pBase = Application::GetNextTopLevelWindow( pBase );
+ // Skip FirstDocFrame
+// if ( bSearchFocusFirst && IsFirstDocFrame( pBase ) )
+// pBase = Application::GetNextTopLevelWindow( pBase );
+ }
+ return NULL;
+ }
+
+
+ Window *pResult = NULL;
+ pResult = SearchClientWin( pBase, aSearch, MaybeBase );
+ if ( pResult )
+ return pResult;
+
+// if ( pBase->GetType() != WINDOW_BORDERWINDOW )
+// return NULL;
+
+ if ( !aSearch.HasSearchFlag( SEARCH_NOOVERLAP ) )
+ {
+ if ( pBase->GetWindow( WINDOW_FIRSTOVERLAP ) )
+ pResult = SearchAllWin( pBase->GetWindow( WINDOW_FIRSTOVERLAP ), aSearch );
+
+ if ( !pResult && pBase->GetWindow( WINDOW_NEXT ) )
+ pResult = SearchAllWin( pBase->GetWindow( WINDOW_NEXT ), aSearch );
+ }
+
+ return pResult;
+}
+
+
+Window* StatementList::SearchClientWin( Window *pBase, Search &aSearch, BOOL MaybeBase )
+{
+ if ( !pBase )
+ return NULL;
+
+ if ( MaybeBase && aSearch.IsWinOK( pBase ) )
+ return pBase;
+
+ Window *pResult = NULL;
+
+ USHORT i;
+ for( i = 0 ; i < pBase->GetChildCount() && !pResult; i++ )
+ pResult = SearchClientWin( pBase->GetChild(i), aSearch );
+
+ return pResult;
+}
+
+
+BOOL SearchUID::IsWinOK( Window *pWin )
+{
+ if ( aUId.Matches( pWin->GetSmartUniqueOrHelpId() ) )
+ {
+ if ( ( pWin->IsEnabled() || HasSearchFlag( SEARCH_FIND_DISABLED ) ) && pWin->IsVisible() )
+ return TRUE;
+ else
+ {
+ if ( !pMaybeResult )
+ pMaybeResult = pWin;
+ return FALSE;
+ }
+ }
+ else if ( pWin->GetType() == WINDOW_TOOLBOX ) // Buttons and Controls on ToolBox.
+ {
+ ToolBox *pTB = ((ToolBox*)pWin);
+ USHORT i;
+ for ( i = 0; i < pTB->GetItemCount() ; i++ )
+ {
+ if ( aUId.Matches( pTB->GetItemCommand(pTB->GetItemId( i )) ) || aUId.Matches( pTB->GetHelpId(pTB->GetItemId( i )) ) )
+ { // ID matches.
+ Window *pItemWin;
+ pItemWin = pTB->GetItemWindow( pTB->GetItemId( i ) );
+
+ if ( bSearchButtonOnToolbox && pTB->GetItemType( i ) == TOOLBOXITEM_BUTTON && !pItemWin )
+ { // We got a Control, see if its valid also.
+ // Same as above.
+ if ( ( pTB->IsEnabled() || HasSearchFlag( SEARCH_FIND_DISABLED ) ) && pTB->IsVisible() )
+ { // We got a Button, see if its valid also.
+ if ( ( pTB->IsItemEnabled(pTB->GetItemId(i)) || HasSearchFlag( SEARCH_FIND_DISABLED ) )
+ && pTB->IsItemVisible(pTB->GetItemId(i)) )
+ return TRUE; // We got a Button.
+ else
+ { // better a disabled Button on a valid ToolBox than an invalid ToolBox as below
+ pMaybeResult = pTB;
+ return FALSE;
+ }
+ }
+ else if ( !pMaybeResult )
+ { // invalid ToolBox
+ pMaybeResult = pTB;
+ return FALSE;
+ }
+ }
+ if ( pItemWin )
+ { // We got a Control, see if its valid also.
+ // Same as above.
+ if ( ( pItemWin->IsEnabled() || HasSearchFlag( SEARCH_FIND_DISABLED ) ) && pItemWin->IsVisible() )
+ {
+ if ( !pAlternateResult ) // only take the first found ItemWindow #i35365
+ pAlternateResult = pItemWin; // since we cannot return a Window here
+ return FALSE; // continue searching to prefer a window with the right ID #i32292
+ }
+ else if ( !pMaybeResult )
+ {
+ pMaybeResult = pItemWin;
+ return FALSE;
+ }
+ }
+ }
+ }
+ return FALSE;
+ }
+ else
+ return FALSE;
+}
+
+Window* StatementList::SearchTree( SmartId aUId ,BOOL bSearchButtonOnToolbox )
+{
+ SearchUID aSearch(aUId,bSearchButtonOnToolbox);
+
+ Window *pResult = SearchAllWin( NULL, aSearch );
+ if ( pResult )
+ return pResult;
+ else if ( aSearch.GetAlternateResultWin() )
+ return aSearch.GetAlternateResultWin();
+ else
+ return aSearch.GetMaybeWin();
+}
+
+
+BOOL SearchWinPtr::IsWinOK( Window *pWin )
+{
+ return pWin == pTest;
+}
+
+BOOL StatementList::WinPtrValid(Window *pTest)
+{
+ SearchWinPtr aSearch( pTest );
+ return SearchAllWin( NULL, aSearch ) != NULL;
+}
+
+
+BOOL SearchRT::IsWinOK( Window *pWin )
+{
+ if ( pWin->IsVisible() && pWin->GetType() == mnRT )
+ {
+ mnCount++;
+ if ( mnSkip )
+ {
+ mnSkip--;
+ return FALSE;
+ }
+ else
+ return TRUE;
+ }
+ return FALSE;
+}
+
+Window* StatementList::GetWinByRT( Window *pBase, WindowType nRT, BOOL MaybeBase, USHORT nSkip, BOOL bSearchAll )
+{
+ SearchRT aSearch( nRT, 0, nSkip );
+ if ( bSearchAll )
+ aSearch.AddSearchFlags( SEARCH_FOCUS_FIRST | SEARCH_FIND_DISABLED );
+ else
+ aSearch.AddSearchFlags( SEARCH_NOOVERLAP | SEARCH_NO_TOPLEVEL_WIN );
+
+ return SearchAllWin( pBase, aSearch, MaybeBase );
+}
+
+USHORT StatementList::CountWinByRT( Window *pBase, WindowType nRT, BOOL MaybeBase )
+{
+ SearchRT aSearch( nRT, SEARCH_NOOVERLAP | SEARCH_NO_TOPLEVEL_WIN, 0xFFFF );
+
+ SearchAllWin( pBase, aSearch, MaybeBase );
+ return aSearch.GetCount();
+}
+
+BOOL SearchScroll::IsWinOK( Window *pWin )
+{
+ if ( SearchRT::IsWinOK( pWin ) )
+ {
+ DBG_ASSERT( pWin->GetStyle() & ( WB_HORZ | WB_VERT ), "Nither WB_HORZ nor WB_VERT set on ScrollBar");
+ return (( pWin->GetStyle() & WB_HORZ ) && ( nDirection == CONST_ALIGN_BOTTOM ))
+ || (( pWin->GetStyle() & WB_VERT ) && ( nDirection == CONST_ALIGN_RIGHT ));
+ }
+ return FALSE;
+}
+
+ScrollBar* StatementList::GetScrollBar( Window *pBase, USHORT nDirection, BOOL MaybeBase )
+{
+ SearchScroll aSearch( nDirection, SEARCH_NOOVERLAP | SEARCH_NO_TOPLEVEL_WIN );
+
+ return (ScrollBar*)SearchAllWin( pBase, aSearch, MaybeBase );
+}
+
+
+BOOL SearchPopupFloatingWin::IsWinOK( Window *pWin )
+{
+ return pWin->IsVisible() && pWin->GetType() == WINDOW_FLOATINGWINDOW && ((FloatingWindow*)pWin)->IsInPopupMode();
+}
+
+Window* StatementList::GetPopupFloatingWin( BOOL MaybeBase )
+{
+ SearchPopupFloatingWin aSearch;
+
+ return SearchAllWin( NULL, aSearch, MaybeBase );
+}
+
+
+Menu* StatementList::GetMatchingMenu( Window* pWin, Menu* pBaseMenu )
+{
+ if ( pBaseMenu )
+ {
+ if ( pBaseMenu->GetWindow() == pWin )
+ return pBaseMenu;
+
+ USHORT i;
+// while ( pBaseMenu )
+// {
+ i = 0;
+ while ( i < pBaseMenu->GetItemCount() )
+ {
+ PopupMenu* pPopup = pBaseMenu->GetPopupMenu( pBaseMenu->GetItemId( i ) );
+ if ( pPopup && pPopup->GetWindow() )
+ {
+ if ( pPopup->GetWindow() == pWin )
+ return pPopup;
+ else
+ {
+ pBaseMenu = pPopup;
+ i = 0;
+ }
+ }
+ else
+ i++;
+ }
+// }
+ }
+ else
+ {
+ if ( PopupMenu::GetActivePopupMenu() )
+ {
+ Menu* pMenu = GetMatchingMenu( pWin, PopupMenu::GetActivePopupMenu() );
+ if ( pMenu )
+ return pMenu;
+ }
+
+ USHORT nSkip = 0;
+ Window* pMenuBarWin = NULL;
+ while ( (pMenuBarWin = GetWinByRT( NULL, WINDOW_MENUBARWINDOW, TRUE, nSkip++, TRUE )) != NULL )
+ {
+ Window* pParent = pMenuBarWin->GET_REAL_PARENT();
+ if ( pParent && pParent->GetType() == WINDOW_BORDERWINDOW && pParent->IsVisible() )
+ {
+ Menu* pMenu = NULL;
+ // find Menu of MenuBarWindow
+ USHORT nCount;
+ for ( nCount = 0 ; nCount < pParent->GetChildCount() ; nCount++ )
+ {
+ if ( pParent->GetChild( nCount )->GetType() == WINDOW_WORKWINDOW )
+ pMenu = ((WorkWindow*)(pParent->GetChild( nCount )))->GetMenuBar();
+ }
+ if ( pMenu )
+ {
+ // check for menu bar in Task Window
+ if ( pMenuBarWin == pWin )
+ return pMenu;
+
+ // search submenues
+ pMenu = GetMatchingMenu( pWin, pMenu );
+ if ( pMenu )
+ return pMenu;
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+
+BOOL SearchActive::IsWinOK( Window *pWin )
+{
+// return pWin->IsVisible() && ( (nRT == WINDOW_ANYTYPE && IsDialog(pWin) ) || pWin->GetType() == nRT ) && (nRT == WINDOW_FILEDIALOG || nRT == WINDOW_PATHDIALOG || nRT == WINDOW_PRINTDIALOG || nRT == WINDOW_PRINTERSETUPDIALOG || nRT == WINDOW_COLORDIALOG || ((SystemWindow*)pWin)->IsActive());
+ // only matches ResID due to problems with UNIX Window Managers
+ return pWin->IsVisible() && ( (nRT == WINDOW_ANYTYPE && IsDialog(pWin) ) || pWin->GetType() == nRT );
+}
+
+Window* StatementList::GetActive( WindowType nRT, BOOL MaybeBase )
+{
+ SearchActive aSearch( nRT );
+
+ return SearchAllWin( NULL, aSearch, MaybeBase );
+}
+
+BOOL SearchFadeSplitWin::IsWinOK( Window *pWin )
+{
+#if OSL_DEBUG_LEVEL > 1
+ if ( pWin->GetType() == WINDOW_SPLITWINDOW )
+ {
+ BOOL bResult;
+ WindowAlign aAlign;
+ bResult = pWin->IsVisible();
+ bResult = ((SplitWindow*)pWin)->IsFadeInButtonVisible();
+ bResult = ((SplitWindow*)pWin)->IsFadeOutButtonVisible();
+ bResult = ((SplitWindow*)pWin)->IsAutoHideButtonVisible();
+ aAlign = ((SplitWindow*)pWin)->GetAlign();
+ }
+#endif
+ return pWin->IsVisible() && ( pWin->GetType() == WINDOW_SPLITWINDOW )
+ && (((SplitWindow*)pWin)->IsFadeInButtonVisible() || ((SplitWindow*)pWin)->IsFadeOutButtonVisible() )
+ /*&& ((SplitWindow*)pWin)->IsAutoHideButtonVisible()*/ && ((SplitWindow*)pWin)->GetAlign() == nAlign;
+}
+
+Window* StatementList::GetFadeSplitWin( Window *pBase, WindowAlign nAlign, BOOL MaybeBase )
+{
+ SearchFadeSplitWin aSearch( nAlign );
+
+ if ( GetpApp()->GetAppWindow() == pBase && pBase->GetType() != WINDOW_BORDERWINDOW )
+ pBase = pBase->GetWindow( WINDOW_OVERLAP );
+
+ return SearchAllWin( pBase, aSearch, MaybeBase );
+}
+
+Window* StatementList::GetMouseWin()
+{
+ Window *pBase = Application::GetFirstTopLevelWindow();
+ Window *pControl = NULL;
+ while ( pBase )
+ {
+ Window *pBaseFrame = pBase->GetWindow( WINDOW_OVERLAP );
+
+ Point aP = pBaseFrame->GetPointerPosPixel();
+ pControl = pBaseFrame->FindWindow( aP );
+ if ( pControl )
+ return pControl;
+
+ pBase = Application::GetNextTopLevelWindow( pBase );
+ }
+ return NULL;
+}
+
+Window* StatementList::GetFocus( WindowType nRT, BOOL MaybeBase )
+{
+
+ if ( nRT == WINDOW_TABCONTROL )
+ {
+ Window *pResult = GetActive( WINDOW_TABDIALOG, MaybeBase);
+ for( USHORT i = 0 ; pResult && i < pResult->GetChildCount(); i++ )
+ if ( pResult->GetChild(i)->GetType() == nRT )
+ return pResult->GetChild(i);
+ }
+
+ return NULL;
+}
+
+Window* StatementList::GetAnyActive( BOOL MaybeBase )
+{
+ Window *pControl;
+
+ pControl = GetActive( WINDOW_MESSBOX, MaybeBase);
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_INFOBOX, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_WARNINGBOX, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_ERRORBOX, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_QUERYBOX, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_BUTTONDIALOG, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_FILEDIALOG, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_PATHDIALOG, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_PRINTDIALOG, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_PRINTERSETUPDIALOG, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetActive( WINDOW_COLORDIALOG, MaybeBase);
+ }
+ if ( !pControl )
+ {
+ pControl = GetFocus( WINDOW_TABCONTROL, MaybeBase);
+ }
+
+ return pControl;
+}
+
+void StatementList::SetFirstDocFrame( Window* pWin )
+{
+ DBG_ASSERT( IsDocFrame( pWin ), "Non Document Frame set as first Document Frame" );
+ pFirstDocFrame = pWin;
+}
+
+Window* StatementList::GetFirstDocFrame()
+{
+
+ if ( pFirstDocFrame && !WinPtrValid( pFirstDocFrame ) )
+ pFirstDocFrame = NULL;
+ if ( pFirstDocFrame && !pFirstDocFrame->IsVisible() )
+ pFirstDocFrame = NULL;
+ if ( pFirstDocFrame && !IsDocFrame( pFirstDocFrame ) )
+ pFirstDocFrame = NULL;
+ if ( !pFirstDocFrame )
+ {
+ Window* pBase = Application::GetFirstTopLevelWindow();
+ while ( pBase && !IsDocFrame( pBase ) )
+ pBase = Application::GetNextTopLevelWindow( pBase );
+
+ if ( pBase )
+ SetFirstDocFrame( pBase );
+
+ if ( !pBase ) // find just something
+ {
+ pBase = Application::GetFirstTopLevelWindow();
+ while ( pBase && !pBase->IsVisible() )
+ pBase = Application::GetNextTopLevelWindow( pBase );
+
+ return pBase; // just for now, later we will hopefully have a Window
+ }
+ }
+ return pFirstDocFrame;
+}
+
+BOOL StatementList::IsFirstDocFrame( Window* pWin )
+{
+ return pWin && ( pWin == GetFirstDocFrame() || ( GetFirstDocFrame() && pWin == GetFirstDocFrame()->GetWindow( WINDOW_CLIENT ) ) ) && ( GetFirstDocFrame() && IsDocFrame( GetFirstDocFrame() ) );
+}
+
+MenuBar* StatementList::GetDocFrameMenuBar( Window* pWin )
+{
+ if ( pWin && pWin->IsVisible() && pWin->GetType() == WINDOW_BORDERWINDOW )
+ {
+ USHORT nCount;
+ for ( nCount = 0 ; nCount < pWin->GetChildCount() ; nCount++ )
+ {
+ if ( pWin->GetChild( nCount )->GetType() == WINDOW_WORKWINDOW )
+ return ((WorkWindow*)(pWin->GetChild( nCount )))->GetMenuBar();
+ }
+ }
+ return NULL;
+}
+
+// a Doc Frame is a Document or the Backing Window
+BOOL StatementList::IsDocFrame( Window* pWin )
+{
+ if ( pWin && pWin->IsVisible() && pWin->GetType() == WINDOW_BORDERWINDOW )
+ {
+ USHORT nCount;
+ BOOL bHasWorkWindow = FALSE;
+ BOOL bHasMenuBar = FALSE;
+ // #91724# it is now necessary to sort out the IME WIndow in Solaris as well.
+ // so now we check for existence of WINDOW_WORKWINDOW and newly for
+ // WINDOW_MENUBARWINDOW which contains the Menu and the close/min/max buttons
+ for ( nCount = 0 ; nCount < pWin->GetChildCount() ; nCount++ )
+ {
+ if ( pWin->GetChild( nCount )->GetType() == WINDOW_WORKWINDOW )
+ bHasWorkWindow = TRUE;
+ if ( pWin->GetChild( nCount )->GetType() == WINDOW_MENUBARWINDOW )
+ bHasMenuBar = TRUE;
+ }
+ return bHasWorkWindow && bHasMenuBar;
+ }
+ return FALSE;
+}
+
+// a Doc Win is a real document (not the Backing Window)
+BOOL StatementList::IsDocWin( Window* pWin )
+{
+ if ( pWin && IsDocFrame( pWin ) )
+ {
+ if ( GetDocFrameCount() != 1 )
+ return TRUE;
+ else
+ {
+ // check for the close button to see if we are the last one or only the backing Window
+ if ( GetDocFrameMenuBar( pWin ) )
+ return GetDocFrameMenuBar( pWin )->HasCloser();
+ }
+ }
+ return FALSE;
+}
+
+BOOL StatementList::IsIMEWin( Window* pWin ) // Input Window for CJK under Solaris
+{
+ if ( pWin && pWin->IsVisible() && pWin->GetType() == WINDOW_BORDERWINDOW )
+ {
+ USHORT nCount;
+ BOOL bHasWorkWindow = FALSE;
+ BOOL bHasWindow = FALSE;
+ // #91724# it is now necessary to sort out the IME WIndow in Solaris as well.
+ // so now we check for existence of WINDOW_WORKWINDOW and newly for
+ // WINDOW_WINDOW which contains the Menu and the close/min/max buttons
+ for ( nCount = 0 ; nCount < pWin->GetChildCount() ; nCount++ )
+ if ( pWin->GetChild( nCount )->GetType() == WINDOW_WORKWINDOW )
+ bHasWorkWindow = TRUE;
+ for ( nCount = 0 ; nCount < pWin->GetChildCount() ; nCount++ )
+ if ( pWin->GetChild( nCount )->GetType() == WINDOW_WINDOW )
+ bHasWindow = TRUE;
+ return bHasWorkWindow && !bHasWindow;
+ }
+ return FALSE;
+}
+
+UniString StatementList::Tree(Window *pBase, int Indent)
+{
+
+ String aReturn, aSep;
+ if ( !pBase )
+ {
+ aSep.AssignAscii("============================\n");
+ aSep.ConvertLineEnd();
+ pBase = Application::GetFirstTopLevelWindow();
+ while ( pBase )
+ {
+ Window *pBaseFrame = pBase->GetWindow( WINDOW_OVERLAP );
+
+ aReturn += aSep;
+ aReturn += Tree( pBaseFrame, Indent+1 );
+
+ pBase = Application::GetNextTopLevelWindow( pBase );
+ }
+ return aReturn;
+ }
+
+
+ aSep.AssignAscii("----------------------------\n");
+ aSep.ConvertLineEnd();
+
+ aReturn += ClientTree( pBase, Indent );
+
+ if ( pBase->GetWindow( WINDOW_FIRSTOVERLAP ) )
+ {
+ aReturn += aSep;
+ aReturn += Tree( pBase->GetWindow( WINDOW_FIRSTOVERLAP ), Indent+1 );
+ }
+
+ if ( pBase->GetWindow( WINDOW_NEXT ) )
+ {
+ aReturn += aSep;
+ aReturn += Tree( pBase->GetWindow( WINDOW_NEXT ), Indent );
+ }
+
+ return aReturn;
+}
+
+String StatementList::ClientTree(Window *pBase, int Indent)
+{
+#if OSL_DEBUG_LEVEL > 1
+#define WRITE(Text) { m_pDbgWin->AddText(Text); aReturn += Text; }
+#define WRITEc(Text) { m_pDbgWin->AddText(Text); aReturn.AppendAscii(Text); }
+#else
+#define WRITE(Text) { aReturn += Text; }
+#define WRITEc(Text) { aReturn.AppendAscii(Text); }
+#endif
+
+ String sIndent,aText,aReturn;
+ sIndent.Expand(sal::static_int_cast< xub_StrLen >(2*Indent));
+
+ aText = pBase->GetText();
+
+
+ UniString t1,t2;t1 = CUniString("\n"); t2 = CUniString("\\n");
+ aText.SearchAndReplaceAll(t1,t2 );
+
+ WRITE(sIndent);
+
+ if (pBase->IsDialog())
+ {
+ WRITEc("*(Dialog(TH))");
+ }
+ if (IsDialog( pBase ))
+ {
+ WRITEc("*(Dialog(GH))");
+ }
+ if (pBase->HasFocus())
+ {
+ WRITEc("*(Focus)");
+ }
+ if (!pBase->IsEnabled())
+ {
+ WRITEc("*(Disab)");
+ }
+ if (pBase->IsVisible())
+ {
+ WRITEc("*(Visible)");
+ }
+ if ( IsDialog(pBase) && ((SystemWindow*)pBase)->IsActive() )
+ {
+ WRITEc("*(Active)");
+ }
+ if ( pBase->GetStyle() & WB_CLOSEABLE )
+ {
+ WRITEc("*(Closable)");
+ }
+ if ( pBase->GetType() == WINDOW_DOCKINGWINDOW &&
+ ((((DockingWindow*)pBase)->GetFloatStyle()) & WB_CLOSEABLE) )
+ {
+ WRITEc("*(Closable Docking in Floatingstyle)");
+ }
+ if ( pBase->GetStyle() & WB_DOCKABLE )
+ {
+ WRITEc("*(Dockable)");
+ }
+ if ( pBase->GetType() == WINDOW_SPLITWINDOW &&
+ (((SplitWindow*)pBase)->IsFadeInButtonVisible() || ((SplitWindow*)pBase)->IsFadeOutButtonVisible()) )
+ {
+ WRITEc("*(FadeIn/Out)");
+ }
+ WRITEc("Text: ");
+ WRITE(aText);
+ WRITEc("\n");
+
+ WRITE(sIndent);
+ WRITEc("UId : ");
+ WRITE(UIdString(pBase->GetSmartUniqueOrHelpId()));
+ WRITEc(":0x");
+ WRITE(
+ String::CreateFromInt64(
+ sal::static_int_cast< sal_Int64 >(
+ reinterpret_cast< sal_IntPtr >(pBase)),
+ 16 ));
+ WRITEc(":");
+ WRITE(pBase->GetQuickHelpText());
+ WRITEc(":");
+ WRITE(pBase->GetHelpText());
+ WRITEc("\n");
+
+ WRITE(sIndent);
+ WRITEc("RTyp: ");
+ WRITE(MakeStringNumber(TypeKenn,pBase->GetType()));
+ if ( pBase->GetType() == WINDOW_CONTROL )
+ {
+ if ( dynamic_cast< svt::EditBrowseBox* >(pBase) )
+ WRITEc("/BrowseBox")
+ else if ( dynamic_cast< ValueSet* >(pBase) )
+ WRITEc("/ValueSet")
+ else if ( dynamic_cast< svt::ORoadmap* >(pBase) )
+ WRITEc("/RoadMap")
+ else if ( dynamic_cast< svt::IExtensionListBox* >(pBase) )
+ WRITEc("/ExtensionListBox")
+ else if ( dynamic_cast< svt::table::TableControl* >(pBase) )
+ WRITEc("/TableControl")
+ else
+ WRITEc("/Unknown")
+ }
+ WRITEc("\n");
+
+ aReturn.ConvertLineEnd();
+ USHORT i;
+ for (i = 0 ; i < pBase->GetChildCount() ; i++)
+ {
+ aReturn += ClientTree(pBase->GetChild(i),Indent+1);
+ }
+ return aReturn;
+}
+
+
+BOOL StatementList::CheckWindowWait()
+{
+ static Time StartTime = Time(0L); // Abbruch wenn Fenster absolut nicht schliesst.
+ if ( StartTime == Time(0L) )
+ StartTime = Time();
+
+ if ( pWindowWaitPointer )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Waiting for Window to close ... " );
+#endif
+ if ( WinPtrValid(pWindowWaitPointer) && IS_WINP_CLOSING(pWindowWaitPointer) )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( aWindowWaitUId.GetText().AppendAscii(" Still Open. RType=") );
+ m_pDbgWin->AddText( String::CreateFromInt32( pWindowWaitPointer->GetType() ).AppendAscii("\n") );
+#endif
+
+ // Ist die Zeit schonn abgelaufen?
+ if ( StartTime + Time(0,0,10) < Time() ) // 10 Sekunden reichen wohl
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Close timed out. Going on!! " );
+#endif
+ pWindowWaitPointer->SetSmartHelpId(aWindowWaitOldHelpId, SMART_SET_ALL);
+ pWindowWaitPointer->SetSmartUniqueId(aWindowWaitOldUniqueId, SMART_SET_ALL);
+
+ aWindowWaitUId = SmartId();
+ pWindowWaitPointer = NULL;
+ StartTime = Time(0L);
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+ pWindowWaitPointer = NULL;
+ aWindowWaitUId = SmartId();
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Closed, Going on.\n" );
+#endif
+ }
+ StartTime = Time(0L);
+ return TRUE;
+}
+
+void StatementList::ReportError(String aMessage)
+{
+ ReportError ( SmartId(), aMessage );
+}
+
+void StatementList::ReportError(SmartId aUId, String aMessage)
+{
+ pRet->GenError ( aUId, aMessage );
+ IsError = TRUE;
+}
+
+void StatementList::ReportError(String aMessage, ULONG nWhatever)
+{
+ ReportError ( aMessage.AppendAscii(" ").Append(UniString::CreateFromInt32(nWhatever)));
+}
+
+void StatementList::DirectLog( ULONG nType, String aMessage )
+{
+ if ( pRet )
+ pRet->GenReturn( RET_DirectLoging, SmartId(nType), aMessage );
+}
+
+
+#define CALL_EVENT_WITH_NOTIFY( EventType, Event, WinP, Method ) \
+{ \
+ if ( StatementList::WinPtrValid( WinP ) ) \
+ { \
+ NotifyEvent aNEvt( EventType, WinP, &Event ); \
+ if ( !WinP->PreNotify( aNEvt ) ) \
+ WinP->Method( Event ); \
+ } \
+}
+
+void ImplKeyInput( Window* pWin, KeyEvent &aKEvnt, BOOL bForceDirect )
+{
+
+ if ( StatementList::bUsePostEvents && !bForceDirect )
+ {
+ if ( StatementList::WinPtrValid( pWin ) )
+ {
+ ULONG nID1;
+ ULONG nID2;
+ nID1 = Application::PostKeyEvent( VCLEVENT_WINDOW_KEYINPUT, pWin, &aKEvnt );
+ nID2 = Application::PostKeyEvent( VCLEVENT_WINDOW_KEYUP, pWin, &aKEvnt );
+ // wait after posting both events so deleting pWin will remove the second event also
+ ImplEventWait( nID1 );
+ ImplEventWait( nID2 );
+ }
+ }
+ else
+ {
+ if ( !Application::CallAccel( aKEvnt.GetKeyCode() ) )
+ {
+ CALL_EVENT_WITH_NOTIFY( EVENT_KEYINPUT, aKEvnt, pWin, KeyInput )
+
+ KeyCode aCode = aKEvnt.GetKeyCode();
+ if ( (aCode.GetCode() == KEY_CONTEXTMENU) || ((aCode.GetCode() == KEY_F10) && aCode.IsShift()) )
+ {
+ if ( StatementList::WinPtrValid( pWin ) )
+ {
+ Point aPos;
+ // simulate mouseposition at center of window
+ Size aSize = pWin->GetOutputSize();
+ aPos = Point( aSize.getWidth()/2, aSize.getHeight()/2 );
+
+ CommandEvent aEvent( aPos, COMMAND_CONTEXTMENU, FALSE );
+ ImplCommand( pWin, aEvent );
+ }
+ }
+ }
+
+ CALL_EVENT_WITH_NOTIFY( EVENT_KEYUP, aKEvnt, pWin, KeyUp )
+ }
+};
+
+void ImplMouseMove( Window* pWin, MouseEvent &aMEvnt, BOOL bForceDirect )
+{
+ if ( StatementList::bUsePostEvents && !bForceDirect )
+ {
+ if ( StatementList::WinPtrValid( pWin ) )
+ {
+ ULONG nID;
+ nID = Application::PostMouseEvent( VCLEVENT_WINDOW_MOUSEMOVE, pWin, &aMEvnt );
+ ImplEventWait( nID );
+ }
+ }
+ else
+ {
+ // DragManager* pDragManager = DragManager::GetDragManager();
+ // if ( pDragManager )
+ // pDragManager->MouseMove( aMEvnt, pWin );
+ // else
+ if ( pWin->IsTracking() )
+ {
+ TrackingEvent aTEvt( aMEvnt );
+ pWin->Tracking( aTEvt );
+ }
+ else
+ CALL_EVENT_WITH_NOTIFY( EVENT_MOUSEMOVE, aMEvnt, pWin, MouseMove )
+ }
+};
+
+void ImplMouseButtonDown( Window* pWin, MouseEvent &aMEvnt, BOOL bForceDirect )
+{
+ if ( StatementList::bUsePostEvents && !bForceDirect )
+ {
+ if ( StatementList::WinPtrValid( pWin ) )
+ {
+ ULONG nID;
+ nID = Application::PostMouseEvent( VCLEVENT_WINDOW_MOUSEBUTTONDOWN, pWin, &aMEvnt );
+ ImplEventWait( nID );
+ }
+ }
+ else
+ {
+ CALL_EVENT_WITH_NOTIFY( EVENT_MOUSEBUTTONDOWN, aMEvnt, pWin, MouseButtonDown )
+ }
+};
+
+void ImplMouseButtonUp( Window* pWin, MouseEvent &aMEvnt, BOOL bForceDirect )
+{
+ if ( StatementList::bUsePostEvents && !bForceDirect )
+ {
+ if ( StatementList::WinPtrValid( pWin ) )
+ {
+ ULONG nID;
+ nID = Application::PostMouseEvent( VCLEVENT_WINDOW_MOUSEBUTTONUP, pWin, &aMEvnt );
+ ImplEventWait( nID );
+ }
+ }
+ else
+ {
+ // DragManager* pDragManager = DragManager::GetDragManager();
+ // if ( pDragManager )
+ // pDragManager->ButtonUp( aMEvnt, pWin );
+ // else
+ if ( pWin->IsTracking() )
+ {
+ // siehe #64693 die Position ist für Toolboxen relevant
+ // #60020 Jetzt hoffentlich kein GPF mehr
+ // Zuerst Tracking beenden ohne Event
+ pWin->EndTracking( ENDTRACK_DONTCALLHDL );
+ // dann eigenen Event mit richtigem Maus-Event senden
+ TrackingEvent aTEvt( aMEvnt, ENDTRACK_END );
+ pWin->Tracking( aTEvt );
+ }
+ else
+ CALL_EVENT_WITH_NOTIFY( EVENT_MOUSEBUTTONUP, aMEvnt, pWin, MouseButtonUp )
+ }
+};
+
+void ImplEventWait( ULONG nID )
+{
+ while ( !Application::IsProcessedMouseOrKeyEvent( nID ) )
+ Application::Yield();
+}
+
+void ImplCommand( Window* pWin, CommandEvent &aCmdEvnt )
+{
+ CALL_EVENT_WITH_NOTIFY( EVENT_COMMAND, aCmdEvnt, pWin, Command )
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/statemnt.cxx b/automation/source/server/statemnt.cxx
new file mode 100644
index 000000000000..893dbd6710e3
--- /dev/null
+++ b/automation/source/server/statemnt.cxx
@@ -0,0 +1,6760 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <com/sun/star/frame/XFramesSupplier.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/uieventslogger.hxx>
+
+#include <vcl/wintypes.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/menubtn.hxx>
+#include <svtools/svtreebx.hxx>
+#include <svtools/brwbox.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/dockwin.hxx>
+#include <vcl/floatwin.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/morebtn.hxx>
+#include <vcl/field.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/tabpage.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/status.hxx>
+#include <svtools/prgsbar.hxx>
+#include <svtools/editbrowsebox.hxx>
+#include <vcl/splitwin.hxx>
+#include <vcl/group.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/wrkwin.hxx>
+#include <osl/diagnose.h>
+#include <vcl/wintypes.hxx>
+#include <svtools/valueset.hxx>
+#include <svtools/roadmap.hxx>
+#include <svtools/table/tablecontrol.hxx>
+#include <svl/poolitem.hxx>
+#include <svtools/extensionlistbox.hxx>
+// Hat keinen Includeschutz
+#include <svtools/svtdata.hxx>
+#include <tools/time.hxx>
+#include <svtools/stringtransfer.hxx>
+#include <tools/stream.hxx>
+#include <tools/fsys.hxx>
+#include <svl/stritem.hxx>
+#include <svtools/ttprops.hxx>
+#include <basic/ttstrhlp.hxx>
+#include <basic/dispdefs.hxx>
+#include <basic/sbuno.hxx>
+#include <svl/pickerhistory.hxx>
+#include <com/sun/star/util/XCancellable.hpp>
+
+#include <sot/storage.hxx>
+#include <sot/storinfo.hxx>
+#include "statemnt.hxx"
+#include "scmdstrm.hxx"
+
+#include "retstrm.hxx"
+
+#if OSL_DEBUG_LEVEL > 1
+#include "editwin.hxx"
+#endif
+#include "rcontrol.hxx"
+#include <automation/communi.hxx>
+#include "testtool.hxx"
+
+#include "profiler.hxx"
+
+#include "recorder.hxx"
+
+#include "testtool.hrc"
+#include <basic/svtmsg.hrc>
+
+#include <algorithm>
+
+
+using namespace com::sun::star::frame;
+using namespace com::sun::star::uno;
+//using namespace com::sun::star::util; geht wegen Color nicht
+using namespace com::sun::star::beans;
+using namespace svt;
+//using namespace svt::table;
+
+
+#ifndef SBX_VALUE_DECL_DEFINED
+#define SBX_VALUE_DECL_DEFINED
+SV_DECL_REF(SbxValue)
+#endif
+SV_IMPL_REF(SbxValue)
+
+CommunicationLink *StatementFlow::pCommLink = NULL;
+BOOL StatementFlow::bUseIPC = TRUE;
+BOOL StatementFlow::bSending = FALSE;
+ImplRemoteControl *StatementFlow::pRemoteControl = NULL;
+
+USHORT StatementCommand::nDirPos = 0;
+Dir *StatementCommand::pDir = NULL;
+pfunc_osl_printDebugMessage StatementCommand::pOriginal_osl_DebugMessageFunc = NULL;
+
+
+#define RESET_APPLICATION_TO_BACKING_WINDOW
+
+
+#define SET_WINP_CLOSING(pWin) \
+ pWindowWaitPointer = pWin; \
+ aWindowWaitUId = pControl->GetSmartUniqueOrHelpId(); \
+ aWindowWaitOldHelpId = pWin->GetSmartHelpId(); \
+ aWindowWaitOldUniqueId = pWin->GetSmartUniqueId(); \
+ pWin->SetSmartHelpId( SmartId(4321) ); \
+ pWin->SetSmartUniqueId( SmartId(1234) );
+
+// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+StatementFlow::StatementFlow( StatementList *pAfterThis, USHORT nArtP )
+: nArt(nArtP)
+, nParams(0)
+, nSNr1(0)
+, nLNr1(0)
+, aString1()
+, bBool1(FALSE)
+{
+ QueStatement( pAfterThis );
+}
+
+StatementFlow::StatementFlow( ULONG nServiceId, SCmdStream *pCmdIn, ImplRemoteControl *pRC )
+: nArt(0)
+, nParams(0)
+, nSNr1(0)
+, nLNr1(0)
+, aString1()
+, bBool1(FALSE)
+{
+ QueStatement( NULL );
+ bUseIPC = (nServiceId == SI_IPCCommandBlock);
+ pRemoteControl = pRC;
+ pCmdIn->Read( nArt );
+ pCmdIn->Read( nParams );
+
+ if( nParams & PARAM_USHORT_1 ) pCmdIn->Read( nSNr1 );
+ if( nParams & PARAM_ULONG_1 ) pCmdIn->Read( nLNr1 );
+ if( nParams & PARAM_STR_1 ) pCmdIn->Read( aString1 );
+ if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 ); // sollte nie auftreten!!
+
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Reading FlowControl: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nArt ) );
+ m_pDbgWin->AddText( " Params:" );
+ if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nSNr1 ) );}
+ if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " l1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
+ if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
+ if( nParams & PARAM_BOOL_1 ) {m_pDbgWin->AddText( " b2:" );m_pDbgWin->AddText( bBool1 ? "TRUE" : "FALSE" );}
+ m_pDbgWin->AddText( "\n" );
+#endif
+}
+
+void StatementFlow::SendViaSocket()
+{
+ if ( bSending )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "SendViaSocket called recursively. Aborted!!!\n" );
+#endif
+ DBG_ERROR("SendViaSocket called recursively. Aborted!!!");
+ return;
+ }
+ bSending = TRUE;
+ if ( pCommLink )
+ {
+ if ( !pCommLink->TransferDataStream( pRet->GetStream() ) ) // tritt ein Fehler auf, so wird sofort gelöscht ...
+ pCommLink = NULL;
+ }
+ else
+ {
+ // Macht nix. Wenn das Basic nicht mehr da ist, ist sowiso alles egal
+ DBG_ERROR("Cannot send results to TestTool");
+ }
+
+ pRet->Reset();
+ bSending = FALSE;
+ IsError = FALSE;
+}
+
+BOOL StatementFlow::Execute()
+{
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Executing Flow: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nArt ) );
+ m_pDbgWin->AddText( "\n" );
+#endif
+ switch ( nArt )
+ {
+ case F_EndCommandBlock:
+ {
+
+ if ( !bUseIPC )
+ {
+ // bBool1 wurde im CTOR auf FALSE initialisiert
+ if ( !bBool1 ) // also erster Durchlauf
+ {
+ pRemoteControl->pRetStream = pRet->GetStream();
+ bBool1 = TRUE; // wurde im CTOR auf FALSE initialisiert
+ nRetryCount = nRetryCount * 4;
+ }
+ if ( pRemoteControl->pRetStream && (nRetryCount--) ) // also solange nicht abgeholt
+ {
+ return FALSE; // Bitte einmal vom Callstack runter
+ }
+ }
+
+ }
+ break;
+ }
+
+ Advance();
+ switch ( nArt )
+ {
+ case F_EndCommandBlock:
+ if ( !bUseIPC )
+ { // wird oben abgehandelt
+ pRet->Reset();
+ IsError = FALSE;
+ }
+ else
+ SendViaSocket();
+
+ break;
+
+ case F_Sequence:
+
+ pRet->GenReturn(RET_Sequence,nLNr1);
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Sending Sequence Nr: " );
+ m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );
+ m_pDbgWin->AddText( "\n" );
+ #endif
+
+ break;
+// case RET_:
+ default:
+ DBG_ERROR( "Unknown Flowcontrol" );
+ break;
+ }
+
+ delete this;
+ return TRUE;
+}
+
+// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+// neue Hilfsfunktion, die stetig erweitert werden muss
+static short ImpGetRType( Window *pWin, SmartId aUId )
+{
+ ULONG nUId = aUId.GetNum(); // GetNum() is always zero if no num is defined
+ // GGGg gggg::gggg gggg::ggLL LLLl::llll llll
+ DBG_ASSERT( pWin, "missing Parameter" );
+ short nRT;
+ if( (nUId & 0xE0000000) == 0 ) // keine auto ID
+ nRT = C_NoType;
+ else {
+// if( (nUId & 0x1F) == 0 ) // globale Resource
+ if( (nUId & 0x1FF) == 0 ) // globale Resource GH: soweit ich das verstanden habe 1FF
+ nRT = (short)(C_TabPage - 1 + (nUId >> 29));
+ else
+ nRT = (short)((nUId & 0x00003E00) >> 9);
+ if ( nRT == C_TabPage ) // wegen TabDialog.UId = TabPage.UId
+ nRT = C_NoType;
+ else
+ {
+#ifndef DBG_UTIL
+ return nRT;
+#endif
+ }
+ }
+
+#ifdef DBG_UTIL
+ short n = nRT;
+#endif
+ WindowType eRT = pWin->GetType();
+ switch( eRT ) {
+ case WINDOW_WINDOW: nRT = C_Window ; break;
+
+ case WINDOW_TABCONTROL: nRT = C_TabControl ; break;
+ case WINDOW_RADIOBUTTON: nRT = C_RadioButton ; break;
+ case WINDOW_CHECKBOX: nRT = C_CheckBox ; break;
+ case WINDOW_TRISTATEBOX: nRT = C_TriStateBox ; break;
+ case WINDOW_EDIT: nRT = C_Edit ; break;
+ case WINDOW_MULTILINEEDIT: nRT = C_MultiLineEdit ; break;
+ case WINDOW_MULTILISTBOX: nRT = C_MultiListBox ; break;
+ case WINDOW_LISTBOX: nRT = C_ListBox ; break;
+ case WINDOW_COMBOBOX: nRT = C_ComboBox ; break;
+ case WINDOW_PUSHBUTTON: nRT = C_PushButton ; break;
+ case WINDOW_SPINFIELD: nRT = C_SpinField ; break;
+ case WINDOW_PATTERNFIELD: nRT = C_PatternField ; break;
+ case WINDOW_NUMERICFIELD: nRT = C_NumericField ; break;
+ case WINDOW_METRICFIELD: nRT = C_MetricField ; break;
+ case WINDOW_CURRENCYFIELD: nRT = C_CurrencyField ; break;
+ case WINDOW_DATEFIELD: nRT = C_DateField ; break;
+ case WINDOW_TIMEFIELD: nRT = C_TimeField ; break;
+ case WINDOW_IMAGERADIOBUTTON: nRT = C_ImageRadioButton ; break;
+ case WINDOW_NUMERICBOX: nRT = C_NumericBox ; break;
+ case WINDOW_METRICBOX: nRT = C_MetricBox ; break;
+ case WINDOW_CURRENCYBOX: nRT = C_CurrencyBox ; break;
+ case WINDOW_DATEBOX: nRT = C_DateBox ; break;
+ case WINDOW_TIMEBOX: nRT = C_TimeBox ; break;
+ case WINDOW_IMAGEBUTTON: nRT = C_ImageButton ; break;
+ case WINDOW_MENUBUTTON: nRT = C_MenuButton ; break;
+ case WINDOW_MOREBUTTON: nRT = C_MoreButton ; break;
+
+
+ case WINDOW_TABPAGE: nRT = C_TabPage; break;
+ case WINDOW_MODALDIALOG: nRT = C_ModalDlg; break;
+ case WINDOW_FLOATINGWINDOW: nRT = C_FloatWin; break;
+ case WINDOW_MODELESSDIALOG: nRT = C_ModelessDlg; break;
+ case WINDOW_WORKWINDOW: nRT = C_WorkWin; break;
+ case WINDOW_DOCKINGWINDOW: nRT = C_DockingWin; break;
+
+ case WINDOW_MESSBOX: nRT = C_MessBox; break;
+ case WINDOW_INFOBOX: nRT = C_InfoBox; break;
+ case WINDOW_WARNINGBOX: nRT = C_WarningBox; break;
+ case WINDOW_ERRORBOX: nRT = C_ErrorBox; break;
+ case WINDOW_QUERYBOX: nRT = C_QueryBox; break;
+#if 0 //ifndef VCL
+ case WINDOW_FILEDIALOG: nRT = C_FileDlg; break;
+ case WINDOW_PATHDIALOG: nRT = C_PathDlg; break;
+ case WINDOW_PRINTDIALOG: nRT = C_PrintDlg; break;
+ case WINDOW_PRINTERSETUPDIALOG: nRT = C_PrinterSetupDlg;break;
+ case WINDOW_COLORDIALOG: nRT = C_ColorDlg; break;
+#endif
+ case WINDOW_TABDIALOG: nRT = C_TabDlg; break;
+// case WINDOW_TABDIALOG: nRT = C_SingleTabDlg; break;
+
+ case WINDOW_PATTERNBOX: nRT = C_PatternBox; break;
+ case WINDOW_TOOLBOX: nRT = C_ToolBox; break;
+// Gibts nicht case WINDOW_VALUESET: nRT = C_ValueSet; break;
+ case WINDOW_CONTROL: nRT = C_Control; break;
+ case WINDOW_OKBUTTON: nRT = C_OkButton; break;
+ case WINDOW_CANCELBUTTON: nRT = C_CancelButton; break;
+ case WINDOW_BUTTONDIALOG: nRT = C_ButtonDialog; break;
+ case WINDOW_TREELISTBOX: nRT = C_TreeListBox; break;
+
+ case WINDOW_DIALOG: nRT = C_Dialog; break;
+ }
+#ifdef DBG_UTIL
+ // Die Werte n sind bei den WindowTypen nicht mehr vergeben, werden aber in der AutoID noch verwendet
+ // Sie werden jetzt durch den Typ nRT implementiert.
+ DBG_ASSERT( n == C_NoType || n == nRT
+ || ( n == C_ImageButton && nRT == C_PushButton )
+ || ( n == C_TriStateBox && nRT == C_CheckBox )
+ || ( n == C_ImageRadioButton && nRT == C_RadioButton )
+ , "error in algorithm" );
+#endif
+ return nRT;
+}
+
+// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+StatementSlot::StatementSlot( SCmdStream *pCmdIn )
+: pItemArr(NULL)
+{
+ QueStatement( NULL );
+ pCmdIn->Read( nFunctionId );
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Reading Slot: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
+ m_pDbgWin->AddText( "\n" );
+#endif
+ pCmdIn->Read( nAnzahl );
+ if ( nAnzahl )
+ {
+ switch ( pCmdIn->GetNextType() )
+ {
+ case BinUSHORT: // use old calling method
+ {
+ nAnzahl++;
+ pItemArr = new SfxPoolItem*[nAnzahl];
+ for (USHORT i = 0 ; i+1 < nAnzahl ; i++)
+ pCmdIn->Read( pItemArr[i] );
+ pItemArr[nAnzahl-1] = NULL;
+ }
+ break;
+ case BinString: // new Method
+ {
+ aArgs.realloc(nAnzahl);
+ PropertyValue* pArg = aArgs.getArray();
+ for (USHORT i = 0 ; i < nAnzahl ; i++)
+ pCmdIn->Read( pArg[i] );
+ }
+ break;
+ }
+ }
+}
+
+// Constructor for UnoSlot
+StatementSlot::StatementSlot()
+: nAnzahl( 0 )
+, pItemArr(NULL)
+, nFunctionId( 0 )
+, bMenuClosed(FALSE)
+{}
+
+StatementSlot::StatementSlot( ULONG nSlot, SfxPoolItem* pItem )
+: pItemArr(NULL)
+, bMenuClosed(FALSE)
+{
+ QueStatement( NULL );
+ nFunctionId = USHORT(nSlot);
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Reading Slot: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
+ m_pDbgWin->AddText( "\n" );
+#endif
+ if ( pItem )
+ {
+ nAnzahl = 2;
+ pItemArr = new SfxPoolItem*[2];
+ pItemArr[0] = pItem;
+ pItemArr[1] = NULL;
+ }
+ else
+ nAnzahl = 0;
+}
+
+StatementSlot::~StatementSlot()
+{
+ if (nAnzahl)
+ {
+ if ( pItemArr )
+ {
+ for (USHORT i = 0 ; i+1 < nAnzahl ; i++)
+ delete pItemArr[i];
+ delete[] pItemArr;
+ }
+
+ aArgs.realloc( 0 );
+ }
+}
+
+void StatementSlot::AddReferer()
+{
+ HACK( "only to test!" );
+// because slot 6102 /*SID_VERB_START*/ crashes when called with Property Referer
+// We return to the previous behavior (which was a bug realy) of not adding this Property to calls which have no properties at all
+// according to MBA most likely this Property can be removed at all and is maybe only needed for Slots with URLs
+ if ( !nAnzahl )
+ return;
+
+ PropertyValue* pArg;
+
+ nAnzahl++;
+ aArgs.realloc(nAnzahl);
+ pArg = aArgs.getArray();
+ pArg[nAnzahl-1].Name = rtl::OUString::createFromAscii("Referer");
+ pArg[nAnzahl-1].Value <<= ::rtl::OUString::createFromAscii("private:user");
+
+ nAnzahl++;
+ aArgs.realloc(nAnzahl);
+ pArg = aArgs.getArray();
+ pArg[nAnzahl-1].Name = rtl::OUString::createFromAscii("SynchronMode");
+ pArg[nAnzahl-1].Value <<= sal_Bool( TRUE );
+}
+
+class SlotStatusListener : public cppu::WeakImplHelper1< XStatusListener >
+{
+public:
+ SlotStatusListener();
+
+ // XStatusListener
+ virtual void SAL_CALL statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
+
+ // local Members
+ BOOL bDisposed;
+ BOOL bEnabled;
+};
+/*
+struct FeatureStateEvent : public ::com::sun::star::lang::EventObject
+ ::com::sun::star::util::URL FeatureURL;
+ ::rtl::OUString FeatureDescriptor;
+ sal_Bool IsEnabled;
+ sal_Bool Requery;
+ ::com::sun::star::uno::Any State;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > Source;
+*/
+
+SlotStatusListener::SlotStatusListener()
+: bDisposed( FALSE )
+, bEnabled( TRUE )
+{}
+
+// XStatusListener
+void SAL_CALL SlotStatusListener::statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event ) throw (::com::sun::star::uno::RuntimeException)
+{
+// DBG_ERROR1("FeatureURL: %s", ByteString( String( Event.FeatureURL.Complete ), RTL_TEXTENCODING_UTF8 ).GetBuffer() );
+// DBG_ERROR1("FeatureDescriptor: %s", ByteString( String( Event.FeatureDescriptor ), RTL_TEXTENCODING_UTF8 ).GetBuffer() );
+ bEnabled = Event.IsEnabled;
+// DBG_ASSERT( Event.IsEnabled, "Not enabled" );
+// DBG_ASSERT( !Event.Requery, "Requery" );
+}
+
+// XEventListener
+void SAL_CALL SlotStatusListener::disposing( const ::com::sun::star::lang::EventObject& ) throw (::com::sun::star::uno::RuntimeException)
+{
+ bDisposed = TRUE;
+}
+
+BOOL StatementSlot::Execute()
+{
+ if ( IsError )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Skipping Slot: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
+ m_pDbgWin->AddText( "\n" );
+ #endif
+
+ Advance();
+ delete this;
+ return TRUE;
+ }
+
+ InitProfile();
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Executing Slot: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
+ m_pDbgWin->AddText( "\n" );
+#endif
+
+ PopupMenu *pPopup = NULL;
+ MenuBar *pMenuBar = NULL;
+ Menu *pMenu;
+
+ GetCurrentMenues( pPopup, pMenuBar, pMenu );
+ if ( pPopup )
+ {
+ if ( !bMenuClosed )
+ {
+ pPopup->EndExecute(0);
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+ bMenuClosed = TRUE;
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Closed contextmenu\n" );
+#endif
+ return FALSE;
+ }
+ else if ( nRetryCount-- )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Waiting for contextmenu to close\n" );
+#endif
+ return FALSE;
+ }
+ else
+ ReportError( GEN_RES_STR0( S_MENU_NOT_CLOSING ) );
+ }
+
+ Advance();
+
+ if ( !IsError )
+ {
+ if ( ( nAnzahl == 0 && !getenv("OLDSLOTHANDLING") ) || aArgs.hasElements() )
+ { // trying to call slots via uno
+ AddReferer();
+ if ( !aUnoUrl.Len() )
+ aUnoUrl = CUniString("slot:").Append( String::CreateFromInt32( nFunctionId ) );
+ ::com::sun::star::util::URL aTargetURL;
+ aTargetURL.Complete = aUnoUrl;
+ Reference < XFramesSupplier > xDesktop = Reference < XFramesSupplier >( ::comphelper::getProcessServiceFactory()->createInstance( CUniString("com.sun.star.frame.Desktop") ), UNO_QUERY );
+ Reference < XFrame > xFrame;
+
+ if ( xDesktop.is() )
+ {
+ xFrame = xDesktop->getActiveFrame();
+ if ( !xFrame.is() )
+ {
+ Reference < XFrames > xFrames;
+ xFrames = xDesktop->getFrames();
+ if ( xFrames.is() && xFrames->getCount() > 0 )
+ {
+ Any aFrame = xFrames->getByIndex( xFrames->getCount() -1 );
+ aFrame >>= xFrame;
+ }
+ }
+ if ( !xFrame.is() )
+ {
+ if ( GetFirstDocFrame() )
+ GetFirstDocFrame()->ToTop();
+ xFrame = xDesktop->getActiveFrame();
+ }
+ }
+
+ if ( xFrame.is() )
+ xDesktop = Reference < XFramesSupplier >( xFrame, UNO_QUERY );
+ else
+ xDesktop.clear();
+
+ while ( xDesktop.is() && xDesktop->getActiveFrame().is() )
+ {
+ xFrame = xDesktop->getActiveFrame();
+#if OSL_DEBUG_LEVEL > 1
+ ::rtl::OUString aName;
+ if ( xFrame.is() )
+ aName = xFrame->getName();
+#endif
+ xDesktop = Reference < XFramesSupplier >( xFrame, UNO_QUERY );
+ }
+
+ if ( !xFrame.is() )
+ ReportError( GEN_RES_STR1( S_UNO_URL_EXECUTE_FAILED_NO_FRAME, aTargetURL.Complete ) );
+ else
+ {
+ Reference < ::com::sun::star::util::XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance( CUniString("com.sun.star.util.URLTransformer" )), UNO_QUERY );
+ xTrans->parseStrict( aTargetURL );
+
+ Reference < XDispatchProvider > xProv( xFrame, UNO_QUERY );
+ Reference < XDispatch > xDisp;
+ while ( xProv.is() && !xDisp.is() )
+ {
+ xDisp = xProv->queryDispatch( aTargetURL, ::rtl::OUString(), 0 );
+ if ( !xDisp.is() )
+ {
+ xFrame = Reference < XFrame > ( xFrame->getCreator(), UNO_QUERY );
+ xProv = Reference < XDispatchProvider > ( xFrame, UNO_QUERY );
+ }
+ }
+
+ if ( xDisp.is() )
+ {
+ Reference < XStatusListener > xListener = ( XStatusListener* )new SlotStatusListener;
+ xDisp->addStatusListener( xListener, aTargetURL );
+ if ( static_cast< SlotStatusListener* >(xListener.get())->bEnabled )
+ {
+ if ( bIsSlotInExecute )
+ ReportError( GEN_RES_STR0( S_SLOT_IN_EXECUTE ) );
+ else
+ {
+ bIsSlotInExecute = TRUE;
+ xDisp->dispatch( aTargetURL, aArgs );
+ bIsSlotInExecute = FALSE;
+ }
+ }
+ else
+ ReportError( GEN_RES_STR1( S_UNO_URL_EXECUTE_FAILED_DISABLED, aTargetURL.Complete ) );
+ xDisp->removeStatusListener( xListener, aTargetURL );
+ }
+ else
+ ReportError( GEN_RES_STR1( S_UNO_URL_EXECUTE_FAILED_NO_DISPATCHER, aTargetURL.Complete ) );
+ }
+ }
+ else
+ {
+ DirectLog( S_QAError, GEN_RES_STR0( S_DEPRECATED ) );
+ if ( !pTTProperties )
+ pTTProperties = new TTProperties();
+
+ switch ( pTTProperties->ExecuteFunction( nFunctionId, pItemArr, EXECUTEMODE_DIALOGASYNCHRON | nUseBindings ) )
+ {
+ case TT_PR_ERR_NODISPATCHER:
+ {
+ ReportError( SmartId(nFunctionId), GEN_RES_STR0( S_SID_EXECUTE_FAILED_NO_DISPATCHER ) );
+ }
+ break;
+ case TT_PR_ERR_NOEXECUTE:
+ {
+ ReportError(SmartId(nFunctionId), GEN_RES_STR0( S_SID_EXECUTE_FAILED ) );
+ }
+ break;
+ }
+ }
+ }
+
+
+/* Neues Verfahren ab 334!
+ Neue Methode zum einstellen, daß Modale Dialoge immer Asynchron aufgerufen werden
+ und echter Returnwert, ob Slot geklappt hat
+ und Testen ob Slot überhaupt durch UI aufgerufen werden kann */
+
+
+ SendProfile( SlotString( nFunctionId ) );
+ delete this;
+ return TRUE;
+}
+
+// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+StatementUnoSlot::StatementUnoSlot(SCmdStream *pIn)
+{
+ QueStatement( NULL );
+
+ pIn->Read( aUnoUrl );
+
+#if OSL_DEBUG_LEVEL > 1
+ StatementList::m_pDbgWin->AddText( "UnoUrl:" );
+ StatementList::m_pDbgWin->AddText( aUnoUrl );
+ StatementList::m_pDbgWin->AddText( "\n" );
+#endif
+
+}
+
+// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+StatementCommand::StatementCommand( StatementList *pAfterThis, USHORT MethodId, USHORT Params, USHORT Nr1 )
+: nMethodId( MethodId )
+, aSmartMethodId()
+, nParams(Params)
+, nNr1(Nr1)
+, nNr2(0)
+, nNr3(0)
+, nNr4(0)
+, nLNr1(0)
+, aString1()
+, aString2()
+, bBool1(FALSE)
+, bBool2(FALSE)
+{
+ QueStatement( pAfterThis );
+ aSmartMethodId = SmartId( nMethodId );
+
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Directly adding Conmmand:" );
+ m_pDbgWin->AddText( " Methode: " );
+ m_pDbgWin->AddText( aSmartMethodId.GetText() );
+ m_pDbgWin->AddText( " Params:" );
+ if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr1 ) );}
+ if( nParams & PARAM_USHORT_2 ) {m_pDbgWin->AddText( " n2:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr2 ) );}
+ if( nParams & PARAM_USHORT_3 ) {m_pDbgWin->AddText( " n3:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr3 ) );}
+ if( nParams & PARAM_USHORT_4 ) {m_pDbgWin->AddText( " n4:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr4 ) );}
+ if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " nl1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
+ if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
+ if( nParams & PARAM_STR_2 ) {m_pDbgWin->AddText( " s2:" );m_pDbgWin->AddText( aString2 );}
+ if( nParams & PARAM_BOOL_1 ) {m_pDbgWin->AddText( " b1:" );m_pDbgWin->AddText( bBool1 ? "TRUE" : "FALSE" );}
+ if( nParams & PARAM_BOOL_2 ) {m_pDbgWin->AddText( " b2:" );m_pDbgWin->AddText( bBool2 ? "TRUE" : "FALSE" );}
+ m_pDbgWin->AddText( "\n" );
+#endif
+}
+
+
+StatementCommand::StatementCommand( SCmdStream *pCmdIn )
+: nMethodId(0)
+, aSmartMethodId()
+, nParams(0)
+, nNr1(0)
+, nNr2(0)
+, nNr3(0)
+, nNr4(0)
+, nLNr1(0)
+, aString1()
+, aString2()
+, bBool1(FALSE)
+, bBool2(FALSE)
+{
+ QueStatement( NULL );
+ pCmdIn->Read( nMethodId );
+ aSmartMethodId = SmartId( nMethodId );
+ pCmdIn->Read( nParams );
+
+ if( nParams & PARAM_USHORT_1 ) pCmdIn->Read( nNr1 );
+ if( nParams & PARAM_USHORT_2 ) pCmdIn->Read( nNr2 );
+ if( nParams & PARAM_USHORT_3 ) pCmdIn->Read( nNr3 );
+ if( nParams & PARAM_USHORT_4 ) pCmdIn->Read( nNr4 );
+ if( nParams & PARAM_ULONG_1 ) pCmdIn->Read( nLNr1 );
+ if( nParams & PARAM_STR_1 ) pCmdIn->Read( aString1 );
+ if( nParams & PARAM_STR_2 ) pCmdIn->Read( aString2 );
+ if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 );
+ if( nParams & PARAM_BOOL_2 ) pCmdIn->Read( bBool2 );
+
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Reading Conmmand:" );
+ m_pDbgWin->AddText( " Methode: " );
+ m_pDbgWin->AddText( aSmartMethodId.GetText() );
+ m_pDbgWin->AddText( " Params:" );
+ if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr1 ) );}
+ if( nParams & PARAM_USHORT_2 ) {m_pDbgWin->AddText( " n2:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr2 ) );}
+ if( nParams & PARAM_USHORT_3 ) {m_pDbgWin->AddText( " n3:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr3 ) );}
+ if( nParams & PARAM_USHORT_4 ) {m_pDbgWin->AddText( " n4:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr4 ) );}
+ if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " nl1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
+ if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
+ if( nParams & PARAM_STR_2 ) {m_pDbgWin->AddText( " s2:" );m_pDbgWin->AddText( aString2 );}
+ if( nParams & PARAM_BOOL_1 ) {m_pDbgWin->AddText( " b1:" );m_pDbgWin->AddText( bBool1 ? "TRUE" : "FALSE" );}
+ if( nParams & PARAM_BOOL_2 ) {m_pDbgWin->AddText( " b2:" );m_pDbgWin->AddText( bBool2 ? "TRUE" : "FALSE" );}
+ m_pDbgWin->AddText( "\n" );
+#endif
+
+ if ( nMethodId == RC_AppAbort )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "*Deleting all Commands:\n" );
+ #endif
+ bReadingCommands = FALSE;
+ while ( StatementList::pFirst != this ) // Alles Löschen außer mich selbst
+ {
+ StatementList *pDeQue = StatementList::pFirst;
+ pDeQue->Advance();
+ delete pDeQue;
+ }
+ bReadingCommands = TRUE;
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "*Done deleting all Commands:\n" );
+ #endif
+ }
+
+}
+
+void StatementCommand::WriteControlData( Window *pBase, ULONG nConf, BOOL bFirst )
+{
+
+ if ( IsDialog(pBase) && !bFirst )
+ return;
+
+ if ( bFirst )
+ pRet->GenReturn ( RET_WinInfo, SmartId(), (comm_ULONG)nConf | DH_MODE_DATA_VALID, UniString(), TRUE );
+
+ if ( bFirst )
+ {
+ if ( pBase->GetType() == WINDOW_WINDOW && pBase->GetParent() && pBase->GetParent()->GetType() == WINDOW_CONTROL &&
+ dynamic_cast< svt::table::TableControl* > ( pBase->GetParent() ) )
+ pBase = pBase->GetParent();
+ }
+
+ { // Klammerung, so daß der String nicht während der Rekursion bestehen bleibt
+ String aName;
+ BOOL bSkip = FALSE;
+
+ switch ( pBase->GetType() )
+ {
+ case WINDOW_RADIOBUTTON:
+ case WINDOW_CHECKBOX:
+ case WINDOW_TRISTATEBOX:
+ case WINDOW_PUSHBUTTON:
+ case WINDOW_OKBUTTON:
+ case WINDOW_CANCELBUTTON:
+ case WINDOW_IMAGERADIOBUTTON:
+ case WINDOW_IMAGEBUTTON:
+ case WINDOW_MENUBUTTON:
+ case WINDOW_MOREBUTTON:
+ case WINDOW_TABPAGE:
+ case WINDOW_MODALDIALOG:
+ case WINDOW_FLOATINGWINDOW:
+ case WINDOW_MODELESSDIALOG:
+ case WINDOW_WORKWINDOW:
+ case WINDOW_DOCKINGWINDOW:
+ case WINDOW_CONTROL:
+
+ case WINDOW_FILEDIALOG:
+ case WINDOW_PATHDIALOG:
+ case WINDOW_PRINTDIALOG:
+ case WINDOW_PRINTERSETUPDIALOG:
+ case WINDOW_COLORDIALOG:
+ case WINDOW_TABDIALOG:
+
+ case WINDOW_BUTTONDIALOG:
+
+ case WINDOW_MENUBARWINDOW:
+ aName = pBase->GetText().EraseAllChars('~');
+ break;
+
+ case WINDOW_EDIT:
+ case WINDOW_MULTILINEEDIT:
+ case WINDOW_MULTILISTBOX:
+ case WINDOW_LISTBOX:
+ case WINDOW_COMBOBOX:
+ case WINDOW_SPINFIELD:
+ case WINDOW_PATTERNFIELD:
+ case WINDOW_NUMERICFIELD:
+ case WINDOW_METRICFIELD:
+ case WINDOW_CURRENCYFIELD:
+ case WINDOW_DATEFIELD:
+ case WINDOW_TIMEFIELD:
+ case WINDOW_NUMERICBOX:
+ case WINDOW_METRICBOX:
+ case WINDOW_CURRENCYBOX:
+ case WINDOW_DATEBOX:
+ case WINDOW_TIMEBOX:
+ case WINDOW_PATTERNBOX:
+ case WINDOW_TOOLBOX:
+ aName = pBase->GetQuickHelpText();
+ break;
+
+ case WINDOW_MESSBOX:
+ case WINDOW_INFOBOX:
+ case WINDOW_WARNINGBOX:
+ case WINDOW_ERRORBOX:
+ case WINDOW_QUERYBOX:
+ aName = ((MessBox*)pBase)->GetMessText();
+ break;
+
+ default:
+ if ( pBase->GetSmartUniqueOrHelpId().Equals( SmartId() ) && !( nConf & DH_MODE_ALLWIN ) )
+ bSkip = TRUE;
+ }
+
+ if ( !bSkip )
+ {
+ if ( aName.Len() == 0 )
+ aName = pBase->GetQuickHelpText();
+ if ( aName.Len() == 0 )
+ aName = pBase->GetHelpText();
+ if ( aName.Len() == 0 )
+ aName = pBase->GetText();
+
+
+ String aTypeSuffix;
+ if ( pBase->GetType() == WINDOW_CONTROL )
+ {
+ if ( dynamic_cast< EditBrowseBox* >(pBase) )
+ aTypeSuffix.AppendAscii( "/BrowseBox", 10 );
+ else if ( dynamic_cast< ValueSet* >(pBase) )
+ aTypeSuffix.AppendAscii( "/ValueSet", 9 );
+ else if ( dynamic_cast< ORoadmap* >(pBase) )
+ aTypeSuffix.AppendAscii( "/RoadMap", 8 );
+ else if ( dynamic_cast< IExtensionListBox* >(pBase) )
+ aTypeSuffix.AppendAscii( "/ExtensionListBox" );
+ else if ( dynamic_cast< svt::table::TableControl* >(pBase) )
+ aTypeSuffix.AppendAscii( "/TableControl" );
+ else
+ aTypeSuffix.AppendAscii( "/Unknown", 8 );
+ }
+
+ SmartId aId = pBase->GetSmartUniqueOrHelpId();
+ if ( aId.HasString() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( aId.GetStr() ), (comm_ULONG)pBase->GetType(),
+ TypeString(pBase->GetType()).Append(aTypeSuffix).AppendAscii(": ").Append(aName), FALSE );
+ if ( !aId.HasString() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( aId.GetNum() ), (comm_ULONG)pBase->GetType(),
+ TypeString(pBase->GetType()).Append(aTypeSuffix).AppendAscii(": ").Append(aName), FALSE );
+
+
+ if ( pBase->GetType() == WINDOW_TOOLBOX ) // Buttons und Controls auf Toolboxen.
+ {
+ ToolBox *pTB = ((ToolBox*)pBase);
+ USHORT i;
+ for ( i = 0; i < pTB->GetItemCount() ; i++ )
+ {
+ aName = String();
+// if ( aName.Len() == 0 )
+// aName = pTB->GetQuickHelpText();
+ if ( aName.Len() == 0 )
+ aName = pTB->GetHelpText( pTB->GetItemId( i ) );
+ if ( aName.Len() == 0 )
+ aName = pTB->GetItemText( pTB->GetItemId( i ) );
+
+ Window *pItemWin;
+ pItemWin = pTB->GetItemWindow( pTB->GetItemId( i ) );
+ if ( pTB->GetItemType( i ) == TOOLBOXITEM_BUTTON && ( !pItemWin || !pItemWin->IsVisible() ) )
+ {
+ if ( pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( pTB->GetItemCommand(pTB->GetItemId( i )) ), (comm_ULONG)WINDOW_BUTTON,
+ TypeString(WINDOW_BUTTON).AppendAscii(": ").Append(aName), FALSE );
+ if ( !pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( pTB->GetHelpId(pTB->GetItemId( i )) ), (comm_ULONG)WINDOW_BUTTON,
+ TypeString(WINDOW_BUTTON).AppendAscii(": ").Append(aName), FALSE );
+ }
+ else
+ {
+ if ( pItemWin )
+ {
+ if ( pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( pTB->GetItemCommand(pTB->GetItemId( i )) ), (comm_ULONG)pItemWin->GetType(),
+ TypeString(pItemWin->GetType()).AppendAscii(": ").Append(aName), FALSE );
+ if ( !pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( pTB->GetHelpId(pTB->GetItemId( i )) ), (comm_ULONG)pItemWin->GetType(),
+ TypeString(pItemWin->GetType()).AppendAscii(": ").Append(aName), FALSE );
+ USHORT ii;
+ for( ii = 0 ; ii < pItemWin->GetChildCount(); ii++ )
+ WriteControlData( pItemWin->GetChild(ii), nConf, FALSE );
+ }
+ else
+ {
+ if ( nConf & DH_MODE_ALLWIN )
+ {
+ String aToolBoxItemType;
+ switch ( pTB->GetItemType( i ) )
+ {
+ case TOOLBOXITEM_DONTKNOW:
+ aToolBoxItemType.AssignAscii("TOOLBOXITEM_DONTKNOW");
+ break;
+ case TOOLBOXITEM_BUTTON:
+ aToolBoxItemType.AssignAscii("TOOLBOXITEM_BUTTON");
+ break;
+ case TOOLBOXITEM_SPACE:
+ aToolBoxItemType.AssignAscii("TOOLBOXITEM_SPACE");
+ break;
+ case TOOLBOXITEM_SEPARATOR:
+ aToolBoxItemType.AssignAscii("TOOLBOXITEM_SEPARATOR");
+ break;
+ case TOOLBOXITEM_BREAK:
+ aToolBoxItemType.AssignAscii("TOOLBOXITEM_BREAK");
+ break;
+ default:
+ DBG_ERROR1( "Unknown TOOLBOXITEM %i", pTB->GetItemType( i ) );
+ }
+ if ( pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( pTB->GetItemCommand(pTB->GetItemId( i )) ), (comm_ULONG)WINDOW_BASE,
+ aToolBoxItemType.AppendAscii(": ").Append(aName), FALSE );
+ if ( !pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( pTB->GetHelpId(pTB->GetItemId( i )) ), (comm_ULONG)WINDOW_BASE,
+ aToolBoxItemType.AppendAscii(": ").Append(aName), FALSE );
+ }
+ }
+ }
+ }
+
+ return; // ToolBox ist hier schon komplett abgehandelt.
+ }
+
+
+ if ( pBase->GetType() == WINDOW_BUTTONDIALOG // Buttons auf Buttondialogen mit ID
+ || pBase->GetType() == WINDOW_MESSBOX
+ || pBase->GetType() == WINDOW_INFOBOX
+ || pBase->GetType() == WINDOW_WARNINGBOX
+ || pBase->GetType() == WINDOW_ERRORBOX
+ || pBase->GetType() == WINDOW_QUERYBOX )
+ {
+ ButtonDialog *pBD = ((ButtonDialog*)pBase);
+ USHORT i;
+ for ( i = 0; i < pBD->GetButtonCount() ; i++ )
+ {
+ aName = String();
+ if ( aName.Len() == 0 )
+ aName = pBD->GetPushButton( pBD->GetButtonId(i) )->GetText();
+ String aID;
+ switch ( pBD->GetButtonId(i) )
+ {
+ case BUTTONID_OK:
+ aID.AssignAscii("Ok");
+ break;
+ case BUTTONID_CANCEL:
+ aID.AssignAscii("Cancel");
+ break;
+ case BUTTONID_YES:
+ aID.AssignAscii("Yes");
+ break;
+ case BUTTONID_NO:
+ aID.AssignAscii("No");
+ break;
+ case BUTTONID_RETRY:
+ aID.AssignAscii("Retry");
+ break;
+ case BUTTONID_HELP:
+ aID.AssignAscii("Help");
+ break;
+ default:
+ aID = UniString::CreateFromInt32( pBD->GetButtonId(i) );
+ break;
+ }
+
+ pRet->GenReturn ( RET_WinInfo, SmartId( aID ), (comm_ULONG)pBD->GetPushButton( pBD->GetButtonId(i) )->GetType(), // So daß der Text angezeigt wird!
+ TypeString(pBD->GetPushButton( pBD->GetButtonId(i) )->GetType()).AppendAscii(": ").Append(aName)
+ .AppendAscii(" ButtonId = ").Append(aID), FALSE );
+ }
+
+ return; // ButtonDialog ist hier schon komplett abgehandelt.
+ }
+
+
+ Menu* pMenu = GetMatchingMenu( pBase );
+
+ if ( pMenu ) // Menus
+ {
+ USHORT i;
+ for ( i = 0; i < pMenu->GetItemCount() ; i++ )
+ {
+ USHORT nID = pMenu->GetItemId( i );
+
+ aName = String();
+ if ( aName.Len() == 0 )
+ aName = pMenu->GetHelpText( nID );
+ if ( aName.Len() == 0 )
+ aName = pMenu->GetItemText( nID );
+
+
+ if ( pMenu->GetItemType( i ) == MENUITEM_STRING || pMenu->GetItemType( i ) == MENUITEM_IMAGE || pMenu->GetItemType( i ) == MENUITEM_STRINGIMAGE || (nConf & DH_MODE_ALLWIN) )
+ {
+ String aMenuItemType;
+ switch ( pMenu->GetItemType( i ) )
+ {
+ case MENUITEM_STRING:
+ aMenuItemType.AssignAscii("MENUITEM_STRING");
+ break;
+ case MENUITEM_STRINGIMAGE:
+ aMenuItemType.AssignAscii("MENUITEM_STRINGIMAGE");
+ break;
+ case MENUITEM_IMAGE:
+ aMenuItemType.AssignAscii("MENUITEM_IMAGE");
+ break;
+ case MENUITEM_SEPARATOR:
+ aMenuItemType.AssignAscii("MENUITEM_SEPARATOR");
+ break;
+ case MENUITEM_DONTKNOW:
+ aMenuItemType.AssignAscii("MENUITEM_DONTKNOW");
+ break;
+ default:
+ DBG_ERROR1( "Unknown MENUITEM %i", pMenu->GetItemType( i ) );
+ }
+ if ( pMenu->GetItemCommand(nID).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( pMenu->GetItemCommand(nID) ), (comm_ULONG)0,
+ aMenuItemType.AppendAscii(": ").Append(aName), FALSE );
+ if ( !pMenu->GetItemCommand(nID).Len() || ( nConf & DH_MODE_ALLWIN ) )
+ pRet->GenReturn ( RET_WinInfo, SmartId( nID ), (comm_ULONG)0,
+ aMenuItemType.AppendAscii(": ").Append(aName), FALSE );
+ }
+ }
+
+ return; // Menu ist hier schon komplett abgehandelt.
+ }
+ }
+ }
+
+ for( USHORT i = 0 ; i < pBase->GetChildCount(); i++ )
+ WriteControlData( pBase->GetChild(i), nConf, FALSE );
+}
+
+class SysWinContainer : public WorkWindow
+{
+private:
+ ToolBox *pClientWin;
+ DockingWindow *pDock;
+public:
+ SysWinContainer( ToolBox *pClient );
+ ~SysWinContainer();
+ virtual void Resize();
+ virtual void Resizing( Size& rSize );
+};
+
+SysWinContainer::SysWinContainer( ToolBox *pClient )
+: WorkWindow( NULL, WB_BORDER | WB_SIZEMOVE | WB_CLOSEABLE )
+, pClientWin( pClient )
+{
+ pDock = new DockingWindow( this );
+ pClientWin->SetParent( pDock );
+ pClientWin->SetFloatingMode( FALSE );
+ SetText( pClient->GetText() );
+ SetPosPixel( Point( 1,40 ) );
+ Resize();
+ pDock->Show();
+ EnableAlwaysOnTop();
+ Show();
+}
+
+SysWinContainer::~SysWinContainer()
+{
+ delete pDock;
+}
+
+void SysWinContainer::Resize()
+{
+ Size aSize( GetOutputSizePixel() );
+ Resizing( aSize );
+// aSize = pClientWin->GetSizePixel();
+// aSize = pClientWin->CalcWindowSizePixel();
+ if ( aSize != GetSizePixel() )
+ {
+ SetOutputSizePixel( aSize );
+ pDock->SetSizePixel( aSize );
+ pClientWin->SetSizePixel( aSize );
+ }
+}
+
+void SysWinContainer::Resizing( Size& rSize )
+{
+ Size aSize;
+ Size aBestSize;
+ USHORT i;
+ BOOL bHasValue = FALSE;
+ ULONG nBestValue = 0;
+ ULONG nThisValue;
+ for ( i=1 ; i<=1 ; i++ )
+ {
+ aSize = pClientWin->CalcWindowSizePixel( i );
+ nThisValue = Abs( aSize.Width() - rSize.Width() ) + Abs( aSize.Height() - rSize.Height() );
+ if ( !bHasValue || ( nThisValue < nBestValue ) )
+ {
+ nBestValue = nThisValue;
+ aBestSize = aSize;
+ bHasValue = TRUE;
+ }
+ }
+ rSize = aBestSize;
+}
+
+
+class DisplayHidWin : public ToolBox
+{
+ Edit *pEdit;
+ Size aMinEditSize;
+ USHORT nLastItemID;
+ BOOL bIsDraging;
+ BOOL bIsPermanentDraging;
+ void SetDraging( BOOL bNewDraging );
+ Image *pShow, *pShow2;
+ BOOL bConfigChanged;
+ void EnableButtons( ULONG nConf );
+
+ ULONG nEventHookID;
+ static long stub_VCLEventHookProc( NotifyEvent& rEvt, void* pData )
+ {
+ return ((DisplayHidWin*)pData)->VCLEventHook( rEvt );
+ }
+
+ long VCLEventHook( NotifyEvent& rEvt );
+ Window *pLastMouseMoveWin;
+
+ SysWinContainer *pContainer;
+
+ // aborting by pressing shist twice
+ BOOL bOldShift;
+ Time aLatest;
+ USHORT nShiftCount;
+
+public:
+ DisplayHidWin();
+ ~DisplayHidWin();
+
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void Click();
+ virtual void Select();
+ virtual void SetText( const XubString& rStr );
+
+ void SetDisplayText( const String &aNewText ){ pEdit->SetText(aNewText); }
+ String GetDisplayText() const { return pEdit->GetText(); }
+ BOOL IsDisplayTextModified() const { return pEdit->IsModified(); }
+ void ClearDisplayTextModified() const { pEdit->ClearModifyFlag(); }
+
+ void SetConfig( ULONG nConf );
+ ULONG GetConfig();
+
+ BOOL IsConfigChanged() { return bConfigChanged; }
+ void ConfigSent() { bConfigChanged = FALSE; }
+
+ BOOL IsSendData() { return GetItemState( TT_SEND_DATA ) == STATE_CHECK; }
+// BOOL IsAllWin() { return GetItemState( TT_ALLWIN ) == STATE_CHECK; }
+
+ BOOL IsDraging() { return bIsDraging; }
+
+ Window* LastMouseMoveWin() { return pLastMouseMoveWin; }
+};
+
+DisplayHidWin::DisplayHidWin()
+: ToolBox( StatementList::GetFirstDocFrame(), TTProperties::GetSvtResId(DisplayHidToolBox) )
+, bIsDraging( FALSE )
+, bIsPermanentDraging( FALSE )
+, pShow( NULL )
+, pShow2( NULL )
+, pLastMouseMoveWin( NULL )
+, bOldShift( 0 )
+, nShiftCount( 0 )
+{
+ SetOutStyle( TOOLBOX_STYLE_HANDPOINTER | TOOLBOX_STYLE_FLAT );
+ pEdit = new Edit( this, WB_CENTER | WB_BORDER );
+ aMinEditSize = GetItemRect( TT_OUTPUT ).GetSize();
+/**/ aMinEditSize=Size(20,20);
+ aMinEditSize.Width() *= 12;
+ pEdit->SetSizePixel( aMinEditSize );
+ pEdit->Show();
+ SetItemWindow( TT_OUTPUT, pEdit );
+ Resize();
+ pContainer = new SysWinContainer( this );
+ nEventHookID = Application::AddEventHook( stub_VCLEventHookProc, this );
+}
+
+DisplayHidWin::~DisplayHidWin()
+{
+ Application::RemoveEventHook( nEventHookID );
+ Hide(); // so GetFirstDocFrame won't return ourselves (needed for SOPlayer)
+ SetParent( StatementList::GetFirstDocFrame() );
+ delete pContainer;
+ delete pEdit;
+}
+
+void DisplayHidWin::SetDraging( BOOL bNewDraging )
+{
+ if ( !pShow )
+ pShow = new Image( GetItemImage( TT_SHOW ) );
+ if ( !pShow2 )
+ pShow2 = new Image( Bitmap( TTProperties::GetSvtResId( TT_SHOW2 ) ) );
+
+ if ( bNewDraging )
+ SetItemImage( TT_SHOW, *pShow2 );
+ else
+ SetItemImage( TT_SHOW, *pShow );
+
+ bIsDraging = bNewDraging;
+}
+
+void DisplayHidWin::EnableButtons( ULONG nConf )
+{
+ BOOL bSend = BOOL(nConf & DH_MODE_SEND_DATA);
+ EnableItem( TT_ALLWIN, bSend );
+ EnableItem( TT_KURZNAME, bSend );
+ EnableItem( TT_LANGNAME, bSend );
+}
+
+void DisplayHidWin::Tracking( const TrackingEvent& rTEvt )
+{
+// if ( nLastItemID == TT_SHOW && GetItemState( TT_SHOW ) == STATE_NOCHECK && ( rTEvt.IsTrackingEnded() || rTEvt.IsTrackingCanceled() ) )
+// SetDraging( FALSE );
+ if ( nLastItemID == TT_SHOW && GetItemState( TT_SHOW ) == STATE_NOCHECK )
+ EndTracking( ENDTRACK_CANCEL );
+ ToolBox::Tracking( rTEvt);
+}
+
+void DisplayHidWin::Click()
+{
+ nLastItemID = GetCurItemId();
+ if ( nLastItemID == TT_SHOW )
+ {
+ SetDraging( TRUE );
+ }
+ ToolBox::Click();
+}
+
+void DisplayHidWin::Select()
+{
+ if ( GetItemState( GetCurItemId() ) == STATE_NOCHECK )
+ {
+ SetItemState( GetCurItemId(), STATE_CHECK );
+ if ( GetCurItemId() == TT_SHOW )
+ {
+ bIsPermanentDraging = TRUE;
+ SetDraging( TRUE );
+ }
+ }
+ else
+ {
+ SetItemState( GetCurItemId(), STATE_NOCHECK );
+ if ( GetCurItemId() == TT_SHOW )
+ {
+ bIsPermanentDraging = FALSE;
+ SetDraging( FALSE );
+ }
+ }
+ if ( GetCurItemId() == TT_SEND_DATA )
+ {
+ EnableButtons( GetConfig() );
+ }
+}
+
+void DisplayHidWin::SetConfig( ULONG nConf )
+{
+ SetItemState( TT_KURZNAME, ( nConf & DH_MODE_KURZNAME ) ? STATE_CHECK : STATE_NOCHECK );
+ SetItemState( TT_LANGNAME, ( nConf & DH_MODE_LANGNAME ) ? STATE_CHECK : STATE_NOCHECK );
+ SetItemState( TT_ALLWIN, ( nConf & DH_MODE_ALLWIN ) ? STATE_CHECK : STATE_NOCHECK );
+ SetItemState( TT_SEND_DATA, ( nConf & DH_MODE_SEND_DATA ) ? STATE_CHECK : STATE_NOCHECK );
+ EnableButtons( nConf );
+}
+
+ULONG DisplayHidWin::GetConfig()
+{
+ ULONG nConf = 0;
+ if ( GetItemState( TT_KURZNAME ) == STATE_CHECK )
+ nConf |= DH_MODE_KURZNAME;
+ if ( GetItemState( TT_LANGNAME ) == STATE_CHECK )
+ nConf |= DH_MODE_LANGNAME;
+ if ( GetItemState( TT_ALLWIN ) == STATE_CHECK )
+ nConf |= DH_MODE_ALLWIN;
+ if ( IsSendData() )
+ nConf |= DH_MODE_SEND_DATA;
+
+ return nConf;
+}
+
+void DisplayHidWin::SetText( const XubString& rStr )
+{
+ pContainer->SetText( rStr );
+}
+
+long DisplayHidWin::VCLEventHook( NotifyEvent& rEvt )
+{
+ if ( EVENT_MOUSEMOVE == rEvt.GetType() )
+ {
+ pLastMouseMoveWin = rEvt.GetWindow();
+
+ // check if abort with pressing shift twice
+ MouseEvent* pMEvt = (MouseEvent*)rEvt.GetMouseEvent();
+
+ if ( ( pMEvt->IsShift() && !bOldShift ) ) // Shift pressed
+ {
+ if ( aLatest < Time() )
+ {
+ nShiftCount = 0;
+ aLatest = Time()+Time( 0, 0, 0, 50 );
+ }
+ nShiftCount++;
+ }
+ if ( ( !pMEvt->IsShift() && bOldShift ) ) // Shift released
+ {
+ nShiftCount++;
+ if ( nShiftCount == 4 && aLatest > Time() )
+ {
+ bIsPermanentDraging = FALSE;
+ SetDraging( FALSE );
+ SetItemState( TT_SHOW, STATE_NOCHECK );
+ }
+ }
+ bOldShift = pMEvt->IsShift();
+ }
+ if ( ( ( EVENT_MOUSEBUTTONUP == rEvt.GetType() && rEvt.GetMouseEvent()->GetButtons() == MOUSE_LEFT) || ( EVENT_MOUSEMOVE == rEvt.GetType() && !rEvt.GetMouseEvent()->GetButtons() ) )
+ && IsDraging() && !bIsPermanentDraging )
+ SetDraging( FALSE );
+ return 0;
+}
+
+
+BOOL StatementCommand::DisplayHID()
+{
+ // Return TRUE -> reexecute command
+
+ if ( !bBool2 ) // Wird auf FALSE initialisiert
+ {
+ bBool2 = TRUE; // Wir sind initialisiert.
+ GetTTSettings()->pDisplayInstance = this; // Und haben die Macht (Alle anderen beenden sich)
+
+ if ( !(nParams & PARAM_ULONG_1) )
+ {
+ if( GetTTSettings()->pDisplayHidWin ) // Nichts verändern
+ nLNr1 = GetTTSettings()->pDisplayHidWin->GetConfig();
+ else // Beim ersten Aufruf wollen wir alles richtig einstellen
+ nLNr1 = DH_MODE_KURZNAME | DH_MODE_LANGNAME;
+
+ if( ((nParams & PARAM_BOOL_1) && bBool1) )
+ nLNr1 |= DH_MODE_SEND_DATA;
+ else
+ nLNr1 &= ( ~DH_MODE_SEND_DATA );
+ }
+
+ if ( GetTTSettings()->pDisplayHidWin )
+ GetTTSettings()->pDisplayHidWin->SetConfig( nLNr1 );
+ }
+
+ if ( GetTTSettings()->pDisplayInstance && GetTTSettings()->pDisplayInstance != this )
+ {
+ DBG_WARNING("Mehrere DisplayHID am laufen");
+ return FALSE; // Noch eine andere Instanz macht das gleiche!
+ }
+
+ if ( !GetTTSettings()->pDisplayHidWin )
+ {
+ GetTTSettings()->pDisplayHidWin = new DisplayHidWin();
+ GetTTSettings()->aOriginalCaption = GetTTSettings()->pDisplayHidWin->GetText();
+ GetTTSettings()->pDisplayHidWin->Show();
+ if ( bBool1 )
+ nLNr1 |= DH_MODE_SEND_DATA;
+ GetTTSettings()->pDisplayHidWin->SetConfig( nLNr1 );
+
+ GetTTSettings()->Old = NULL;
+ GetTTSettings()->Act = NULL;
+ GetTTSettings()->pDisplayInstance = this;
+ }
+ else
+ {
+ GetTTSettings()->pDisplayHidWin->GetWindow( WINDOW_OVERLAP )->Enable( TRUE, TRUE );
+ GetTTSettings()->pDisplayHidWin->GetWindow( WINDOW_OVERLAP )->EnableInput( TRUE, TRUE );
+ }
+
+
+ if ( GetTTSettings()->pDisplayHidWin->IsVisible() && !bDying )
+ {
+
+ if ( GetTTSettings()->pDisplayHidWin->IsDraging() )
+ {
+
+
+#define HIGHLIGHT_WIN( WinPtr ) \
+ { \
+ Color aLineColMem = WinPtr->GetLineColor(); \
+ WinPtr->SetLineColor( Color( COL_WHITE ) ); \
+ Color aFillColMem = WinPtr->GetFillColor(); \
+ WinPtr->SetFillColor( Color( COL_LIGHTRED ) ); \
+ RasterOp aROp = WinPtr->GetRasterOp(); \
+ WinPtr->SetRasterOp( ROP_XOR ); \
+ Size aSz = WinPtr->PixelToLogic( WinPtr->GetSizePixel() );\
+ ULONG nMaxCornerRadius = WinPtr->PixelToLogic( Point( 80, 0 ) ).X();\
+ ULONG iCorner = std::max ((ULONG) 8, (ULONG) std::min( nMaxCornerRadius, (ULONG) std::min((ULONG) (aSz.Width() / 6), (ULONG)(aSz.Height() / 6))));\
+ WinPtr->DrawRect(Rectangle(Point(),aSz), iCorner, iCorner);\
+ WinPtr->SetLineColor( aLineColMem ); \
+ WinPtr->SetFillColor( aFillColMem ); \
+ WinPtr->SetRasterOp( aROp ); \
+ }
+
+
+#define SET_WIN( WinPtr ) \
+ if ( StatementList::WinPtrValid(WinPtr) ) \
+ { \
+ HIGHLIGHT_WIN ( WinPtr ); \
+ }
+
+#define RESET_WIN( WinPtr ) \
+ if ( StatementList::WinPtrValid(WinPtr) ) \
+ { \
+ WinPtr->Invalidate( INVALIDATE_NOTRANSPARENT ); \
+ WinPtr->Update(); \
+ }
+
+
+ GetTTSettings()->Old = GetTTSettings()->Act;
+// GetTTSettings()->Act = GetMouseWin();
+ GetTTSettings()->Act = GetTTSettings()->pDisplayHidWin->LastMouseMoveWin();
+
+ if ( !StatementList::WinPtrValid ( GetTTSettings()->Old ) )
+ GetTTSettings()->Old = NULL;
+ if ( !StatementList::WinPtrValid ( GetTTSettings()->Act ) )
+ GetTTSettings()->Act = NULL;
+
+ if ( GetTTSettings()->Act && GetTTSettings()->Act->GetType() == WINDOW_BORDERWINDOW )
+ GetTTSettings()->Act = GetTTSettings()->Act->GetWindow( WINDOW_CLIENT );
+
+ if ( GetTTSettings()->Act != GetTTSettings()->Old )
+ {
+ if ( GetTTSettings()->Old )
+ {
+ RESET_WIN(GetTTSettings()->Old);
+ }
+ if ( GetTTSettings()->Act )
+ {
+ SET_WIN(GetTTSettings()->Act);
+ GetTTSettings()->pDisplayHidWin->SetDisplayText(GetTTSettings()->Act->GetSmartUniqueOrHelpId().GetText().AppendAscii(" WinType: ")
+ .Append(UniString::CreateFromInt64(GetTTSettings()->Act->GetType())).AppendAscii(" ").Append(GetTTSettings()->Act->GetText()));
+ if ( GetTTSettings()->Act && !GetTTSettings()->Act->GetSmartUniqueId().Equals( GetTTSettings()->Act->GetSmartHelpId() ) )
+ GetTTSettings()->pDisplayHidWin->SetText(UniString( TTProperties::GetSvtResId( TT_ALTERNATE_CAPTION ) ).Append(GetTTSettings()->Act->GetSmartHelpId().GetText()));
+ else
+ GetTTSettings()->pDisplayHidWin->SetText( GetTTSettings()->aOriginalCaption );
+ }
+ else
+ GetTTSettings()->pDisplayHidWin->SetDisplayText(CUniString("Kein Window/Control gefunden"));
+ }
+ else if ( GetTTSettings()->Act )
+ {
+// SET_WIN(GetTTSettings()->Act);
+ if ( GetTTSettings()->pDisplayHidWin->IsDisplayTextModified() && GetTTSettings()->pDisplayHidWin->GetDisplayText().Len() > 0 )
+ {
+ GetTTSettings()->Act->SetSmartUniqueId( SmartId( GetTTSettings()->pDisplayHidWin->GetDisplayText().ToInt32() ) );
+ GetTTSettings()->pDisplayHidWin->ClearDisplayTextModified();
+ }
+ }
+/* if ( Application::GetLastInputInterval() > 5000 ) // 5 Sekunden lang nix geschehen
+ {
+ GetTTSettings()->pDisplayHidWin->ToTop( TOTOP_NOGRABFOCUS );
+ }
+*/
+ if ( GetTTSettings()->pDisplayHidWin->IsSendData() /*&& bBool2*/ && GetTTSettings()->Act )
+ {
+ if ( !StatementFlow::bSending )
+ { // Normalerweise syncronisierung über Protokoll. Hier ist das aber asyncron!!!
+ WriteControlData( GetTTSettings()->Act, GetTTSettings()->pDisplayHidWin->GetConfig() );
+ new StatementFlow( this, F_EndCommandBlock ); // Kommando zum Senden erzeugen und in que eintragen
+ }
+ }
+ } //if ( GetTTSettings()->pDisplayHidWin->IsDraging() )
+ else
+ {
+ if ( GetTTSettings()->Act )
+ {
+ RESET_WIN(GetTTSettings()->Act);
+ GetTTSettings()->Act = NULL;
+ }
+ }
+
+ if ( pFirst == this ) // Sollte immer so sein, aber besser isses
+ if ( pNext ) // Befehle warten auf Ausführung
+ { // An Ende neu einsortieren
+ Advance();
+ QueStatement( NULL );
+ }
+// { // Ersten und 2. austauschen.
+// pFirst = pNext;
+// pNext = pNext->pNext;
+// pFirst->pNext = this;
+// }
+
+ }
+ else
+ {
+ delete GetTTSettings()->pDisplayHidWin;
+ GetTTSettings()->pDisplayHidWin = NULL;
+ GetTTSettings()->pDisplayInstance = NULL;
+ }
+
+ return GetTTSettings()->pDisplayHidWin != NULL;
+}
+
+class TranslateWin : public WorkWindow
+{
+private:
+ DECL_LINK( DoAccept, PushButton* );
+ DECL_LINK( DoNext, PushButton* );
+ DECL_LINK( DoSelect, PushButton* );
+ DECL_LINK( DoRestore, PushButton* );
+ DECL_LINK( TranslationChanged, Edit* );
+ DECL_LINK( ShowInplace, Timer* );
+
+ Timer InplaceTimer;
+
+// virtual void MouseButtonUp( const MouseEvent& rMEvt );
+// virtual void MouseMove( const MouseEvent& rMEvt );
+
+ PushButton PushButtonTT_PB_NEXT;
+ GroupBox GroupBoxTT_GB_TRANSLATION;
+ Edit EditTT_E_NEW;
+ GroupBox GroupBoxTT_GB_COMMENT;
+ Edit EditTT_E_COMMENT;
+ PushButton PushButtonTT_PB_ACCEPT;
+ FixedText FixedTextTT_FT_OLD;
+ PushButton PushButtonTT_PB_SELECT;
+ PushButton PushButtonTT_PB_RESTORE;
+
+ Window *Old;
+ Window *Act;
+ Window *pTranslateWin;
+ BOOL bSelecting;
+
+ BOOL bAvailable;
+ BOOL bNext;
+
+ BOOL TestChangedDataSaved();
+
+
+ ULONG nEventHookID;
+ static long stub_VCLEventHookProc( NotifyEvent& rEvt, void* pData )
+ {
+ return ((TranslateWin*)pData)->VCLEventHook( rEvt );
+ }
+
+ long VCLEventHook( NotifyEvent& rEvt );
+
+public:
+ TranslateWin();
+ ~TranslateWin();
+
+ static String MarkShortcutErrors( Window* pBase, BOOL bMark );
+
+ BOOL IsTranslationAvailable(){ return bAvailable; }
+ BOOL IsNextDialog(){ return bNext; }
+ void ResetNextDialog(){ bNext = FALSE; }
+
+ Window* GetTranslationWindow(){ return pTranslateWin; }
+ String GetOriginalText(){ return FixedTextTT_FT_OLD.GetText(); }
+ String GetTranslationText(){ return EditTT_E_NEW.GetText(); }
+ String GetComment(){ return EditTT_E_COMMENT.GetText(); }
+
+ void EnableTranslation();
+};
+
+TranslateWin::TranslateWin()
+: WorkWindow( NULL, TTProperties::GetSvtResId( TT_INLINE_TRANSLATION ) )
+, PushButtonTT_PB_NEXT( this, TTProperties::GetSvtResId( TT_PB_NEXT ) )
+, GroupBoxTT_GB_TRANSLATION( this, TTProperties::GetSvtResId( TT_GB_TRANSLATION ) )
+, EditTT_E_NEW( this, TTProperties::GetSvtResId( TT_E_NEW ) )
+, GroupBoxTT_GB_COMMENT( this, TTProperties::GetSvtResId( TT_GB_COMMENT ) )
+, EditTT_E_COMMENT( this, TTProperties::GetSvtResId( TT_E_COMMENT ) )
+, PushButtonTT_PB_ACCEPT( this, TTProperties::GetSvtResId( TT_PB_ACCEPT ) )
+, FixedTextTT_FT_OLD( this, TTProperties::GetSvtResId( TT_FT_OLD ) )
+, PushButtonTT_PB_SELECT( this, TTProperties::GetSvtResId( TT_PB_SELECT ) )
+, PushButtonTT_PB_RESTORE( this, TTProperties::GetSvtResId( TT_PB_RESTORE ) )
+, Old( NULL )
+, Act( NULL )
+, pTranslateWin( NULL )
+, bSelecting( FALSE )
+, bAvailable( FALSE )
+, bNext( FALSE )
+{
+ FreeResource();
+ PushButtonTT_PB_NEXT.SetClickHdl( LINK( this, TranslateWin, DoNext ) );
+ PushButtonTT_PB_ACCEPT.SetClickHdl( LINK( this, TranslateWin, DoAccept ) );
+ PushButtonTT_PB_SELECT.SetClickHdl( LINK( this, TranslateWin, DoSelect ) );
+ PushButtonTT_PB_RESTORE.SetClickHdl( LINK( this, TranslateWin, DoRestore ) );
+ EditTT_E_NEW.SetModifyHdl( LINK( this, TranslateWin, TranslationChanged ) );
+ InplaceTimer.SetTimeout( 250 );
+ InplaceTimer.SetTimeoutHdl( LINK( this, TranslateWin, ShowInplace ) );
+ EnableAlwaysOnTop();
+ nEventHookID = Application::AddEventHook( stub_VCLEventHookProc, this );
+}
+
+TranslateWin::~TranslateWin()
+{
+ Application::RemoveEventHook( nEventHookID );
+}
+
+BOOL TranslateWin::TestChangedDataSaved()
+{
+ if ( ( EditTT_E_NEW.GetText().CompareTo( FixedTextTT_FT_OLD.GetText() ) != COMPARE_EQUAL
+ || EditTT_E_COMMENT.GetText().Len() )
+ && PushButtonTT_PB_ACCEPT.IsEnabled() )
+ {
+ return MessBox( this, TTProperties::GetSvtResId( TT_DISCARD_CHANGED_DATA ) ).Execute() == RET_YES;
+ }
+ else
+ return TRUE;
+}
+
+IMPL_LINK( TranslateWin, DoAccept, PushButton*, EMPTYARG )
+{
+ PushButtonTT_PB_SELECT.Disable();
+ PushButtonTT_PB_NEXT.Disable();
+ PushButtonTT_PB_RESTORE.Disable();
+ EditTT_E_NEW.Disable();
+ EditTT_E_COMMENT.Disable();
+ PushButtonTT_PB_ACCEPT.Disable();
+ bAvailable = TRUE;
+ return 0;
+}
+
+IMPL_LINK( TranslateWin, DoNext, PushButton*, EMPTYARG )
+{
+ if ( TestChangedDataSaved() )
+ {
+ PushButtonTT_PB_SELECT.Disable();
+ PushButtonTT_PB_NEXT.Disable();
+ PushButtonTT_PB_RESTORE.Disable();
+ EditTT_E_NEW.Disable();
+ EditTT_E_COMMENT.Disable();
+ PushButtonTT_PB_ACCEPT.Disable();
+ bNext = TRUE;
+ }
+ return 0;
+}
+
+IMPL_LINK( TranslateWin, DoSelect, PushButton*, EMPTYARG )
+{
+ if ( bSelecting )
+ {
+// ReleaseMouse();
+ bSelecting = FALSE;
+ }
+ else
+ {
+ if ( TestChangedDataSaved() )
+ {
+ PushButtonTT_PB_RESTORE.Disable();
+// CaptureMouse();
+ bSelecting = TRUE;
+ }
+ }
+ return 0;
+}
+
+IMPL_LINK( TranslateWin, DoRestore, PushButton*, EMPTYARG )
+{
+ String sTT_E_OLD( FixedTextTT_FT_OLD.GetText());
+ sTT_E_OLD.SearchAndReplaceAll( CUniString("\\n"), CUniString("\n") );
+ sTT_E_OLD.SearchAndReplaceAll( CUniString("\\t"), CUniString("\t") );
+
+ String sTT_E_NEW( EditTT_E_NEW.GetText());
+ sTT_E_NEW.SearchAndReplaceAll( CUniString("\\n"), CUniString("\n") );
+ sTT_E_NEW.SearchAndReplaceAll( CUniString("\\t"), CUniString("\t") );
+
+ if ( StatementList::WinPtrValid( pTranslateWin ) && pTranslateWin->GetText().CompareTo( sTT_E_NEW ) == COMPARE_EQUAL )
+ { // Im ersten schritt nur in der UI zurück
+ pTranslateWin->SetText( sTT_E_OLD );
+ }
+ else
+ { // Im zweite Schritt auch den eingegebenen Text
+ EditTT_E_NEW.SetText( FixedTextTT_FT_OLD.GetText() );
+ PushButtonTT_PB_RESTORE.Disable();
+ }
+ if ( StatementList::WinPtrValid( pTranslateWin ) )
+ MarkShortcutErrors( pTranslateWin->GetWindow( WINDOW_OVERLAP ), TRUE );
+ return 0;
+}
+
+IMPL_LINK( TranslateWin, TranslationChanged, Edit*, pEdit )
+{
+ (void) pEdit; /* avoid warning about unused parameter */
+ PushButtonTT_PB_RESTORE.Enable();
+ InplaceTimer.Start();
+ return 0;
+}
+
+IMPL_LINK( TranslateWin, ShowInplace, Timer*, EMPTYARG )
+{
+ PushButtonTT_PB_RESTORE.Enable();
+ if ( StatementList::WinPtrValid( pTranslateWin ) )
+ {
+ String sTT_E_NEW( EditTT_E_NEW.GetText());
+ // alle CRs UnQuoten
+ sTT_E_NEW.SearchAndReplaceAll( CUniString("\\n"), CUniString("\n") );
+ // alle TABSs UnQuoten
+ sTT_E_NEW.SearchAndReplaceAll( CUniString("\\t"), CUniString("\t") );
+ pTranslateWin->SetText( sTT_E_NEW );
+
+ MarkShortcutErrors( pTranslateWin->GetWindow( WINDOW_OVERLAP ), TRUE );
+ }
+ return 0;
+}
+
+long TranslateWin::VCLEventHook( NotifyEvent& rEvt )
+{
+ if ( EVENT_MOUSEMOVE == rEvt.GetType() )
+ {
+ if ( bSelecting )
+ {
+ const MouseEvent *pMEvt = rEvt.GetMouseEvent();
+ Old = Act;
+ Act = rEvt.GetWindow();
+
+ if ( Act )
+ {
+ Window *pWin = Act;
+ USHORT i;
+ for ( i = 0 ; i < Act->GetChildCount() ; i++ )
+ {
+ pWin = Act->GetChild(i);
+ Rectangle aWinPosSize( pWin->GetPosPixel(), pWin->GetSizePixel() );
+
+ if ( ( pWin->IsMouseTransparent() || !pWin->IsEnabled() ) && aWinPosSize.IsInside( pMEvt->GetPosPixel() ) )
+ {
+ Act = pWin;
+ break;
+ }
+ }
+ }
+
+ if ( !StatementList::WinPtrValid ( Old ) )
+ Old = NULL;
+
+ if ( Act != Old )
+ {
+ if ( Old )
+ {
+ Window *pWin;
+ if ( Old->IsMouseTransparent() && Old->GET_REAL_PARENT() )
+ pWin = Old->GET_REAL_PARENT();
+ else
+ pWin = Old;
+ RESET_WIN(pWin);
+ }
+ if ( Act )
+ {
+ SET_WIN(Act);
+ FixedTextTT_FT_OLD.SetText( Act->GetText() );
+ }
+ else
+ FixedTextTT_FT_OLD.SetText( String() );
+ }
+ else if ( Act )
+ {
+ // SET_WIN(Act);
+ }
+ /* if ( Application::GetLastInputInterval() > 5000 ) // 5 Sekunden lang nix geschehen
+ {
+ ToTop();
+ }
+ */
+ } //if ( bSelecting )
+ else
+ {
+ if ( Act )
+ {
+ if ( Act->IsMouseTransparent() && Act->GET_REAL_PARENT() )
+ Act = Act->GET_REAL_PARENT();
+ RESET_WIN(Act);
+ Act = NULL;
+ }
+ }
+ }
+ else if ( EVENT_MOUSEBUTTONUP == rEvt.GetType() )
+ {
+ if ( bSelecting )
+ {
+ pTranslateWin = Act;
+ if ( pTranslateWin )
+ {
+ MarkShortcutErrors( pTranslateWin->GetWindow( WINDOW_OVERLAP ), TRUE );
+ // alle CRs quoten (NF)
+ String sTT_E_NEW( pTranslateWin->GetText());
+ sTT_E_NEW.SearchAndReplaceAll( CUniString("\n"), CUniString("\\n") );
+ // alle TABSs quoten ()
+ sTT_E_NEW.SearchAndReplaceAll( CUniString("\t"), CUniString("\\t") );
+
+ FixedTextTT_FT_OLD.SetText( sTT_E_NEW );
+ EditTT_E_NEW.SetText( sTT_E_NEW );
+ EditTT_E_NEW.Enable();
+ EditTT_E_NEW.GrabFocus();
+ EditTT_E_COMMENT.SetText( String() );
+ EditTT_E_COMMENT.Enable();
+ PushButtonTT_PB_ACCEPT.Enable();
+ }
+ // ReleaseMouse();
+ bSelecting = FALSE;
+ }
+ }
+
+ return 0;
+}
+
+#define FDS_ACTION_COLLECT 1
+#define FDS_ACTION_MARK 2
+#define FDS_ACTION_UNMARK 3
+
+class FindShortcutErrors: public Search
+{
+ String aShortcuts,aDoubleShortcuts;
+ USHORT nAction;
+public:
+ FindShortcutErrors();
+ virtual BOOL IsWinOK( Window *pWin );
+ void SetAction( USHORT nA );
+ String GetDoubleShortcuts() { return aDoubleShortcuts; }
+};
+
+FindShortcutErrors::FindShortcutErrors()
+: Search( SEARCH_NOOVERLAP | SEARCH_NO_TOPLEVEL_WIN )
+{
+ SetAction( FDS_ACTION_COLLECT ); // Wir fange immer mit sammeln an, ODER??
+}
+
+void FindShortcutErrors::SetAction( USHORT nA )
+{
+ nAction = nA;
+ if ( FDS_ACTION_COLLECT == nAction )
+ {
+ aShortcuts = UniString();
+ aDoubleShortcuts = UniString();
+ }
+}
+
+BOOL FindShortcutErrors::IsWinOK( Window *pWin )
+{
+ if ( pWin->IsReallyVisible() )
+ {
+ String aText = pWin->GetText();
+ xub_StrLen nPos = aText.Search('~');
+ String aShortcut;
+ BOOL bHasAccel = FALSE;
+ if ( nPos != STRING_NOTFOUND )
+ {
+ aShortcut = aText.Copy( nPos+1, 1 );
+ aShortcut.ToLowerAscii();
+ bHasAccel = aShortcut.Len() == 1;
+ }
+
+ switch ( nAction )
+ {
+ case FDS_ACTION_COLLECT:
+ {
+ if ( aShortcuts.Search( aShortcut ) != STRING_NOTFOUND )
+ aDoubleShortcuts += aShortcut;
+ else
+ aShortcuts += aShortcut;
+ }
+ break;
+ case FDS_ACTION_MARK:
+ {
+ BOOL bMissing = FALSE;
+ if ( !bHasAccel && aText.Len() ) // should there be an accelarator defined
+ {
+
+ Window* pChild;
+ pChild = pWin->GetWindow( WINDOW_CLIENT );
+
+ if ( (pChild->GetType() == WINDOW_RADIOBUTTON) ||
+ (pChild->GetType() == WINDOW_IMAGERADIOBUTTON) ||
+ (pChild->GetType() == WINDOW_CHECKBOX) ||
+ (pChild->GetType() == WINDOW_TRISTATEBOX) ||
+ (pChild->GetType() == WINDOW_PUSHBUTTON) )
+ {
+ if ( !pChild->GetText().EqualsAscii( "..." ) )
+ bMissing = TRUE;
+ }
+
+ if ( pChild->GetType() == WINDOW_FIXEDTEXT )
+ {
+ Window* pTempChild = pWin->GetWindow( WINDOW_NEXT );
+ if ( pTempChild )
+ pTempChild = pTempChild->GetWindow( WINDOW_CLIENT );
+
+ if ( pTempChild && pChild->GetText().Len() )
+ {
+ if ( (pTempChild->GetType() == WINDOW_EDIT) ||
+ (pTempChild->GetType() == WINDOW_MULTILINEEDIT) ||
+ (pTempChild->GetType() == WINDOW_SPINFIELD) ||
+ (pTempChild->GetType() == WINDOW_PATTERNFIELD) ||
+ (pTempChild->GetType() == WINDOW_NUMERICFIELD) ||
+ (pTempChild->GetType() == WINDOW_METRICFIELD) ||
+ (pTempChild->GetType() == WINDOW_CURRENCYFIELD) ||
+ (pTempChild->GetType() == WINDOW_DATEFIELD) ||
+ (pTempChild->GetType() == WINDOW_TIMEFIELD) ||
+ (pTempChild->GetType() == WINDOW_LISTBOX) ||
+ (pTempChild->GetType() == WINDOW_MULTILISTBOX) ||
+ (pTempChild->GetType() == WINDOW_COMBOBOX) ||
+ (pTempChild->GetType() == WINDOW_PATTERNBOX) ||
+ (pTempChild->GetType() == WINDOW_NUMERICBOX) ||
+ (pTempChild->GetType() == WINDOW_METRICBOX) ||
+ (pTempChild->GetType() == WINDOW_CURRENCYBOX) ||
+ (pTempChild->GetType() == WINDOW_DATEBOX) ||
+ (pTempChild->GetType() == WINDOW_TIMEBOX) )
+ {
+ bMissing = TRUE;
+ }
+ }
+ }
+ }
+
+ if ( bHasAccel && aDoubleShortcuts.Search( aShortcut ) != STRING_NOTFOUND )
+ {
+ if ( pWin->GetType() == WINDOW_GROUPBOX )
+ pWin->SetControlForeground( Color( COL_LIGHTRED ) );
+ else
+ {
+ pWin->SetControlBackground();
+ Color aCol(COL_GRAY);
+ aCol.SetRed( 0xff );
+ pWin->SetControlBackground( aCol );
+ }
+ }
+ else if ( bMissing )
+ {
+ pWin->SetControlBackground();
+ Color aCol(COL_GRAY);
+ aCol.SetRed( 0xff );
+ aCol.SetGreen( 0xff );
+ pWin->SetControlBackground( aCol );
+ }
+ else
+ {
+ pWin->SetControlForeground();
+ pWin->SetControlBackground();
+ }
+ }
+ break;
+ case FDS_ACTION_UNMARK:
+ {
+ pWin->SetControlForeground();
+ pWin->SetControlBackground();
+ }
+ break;
+ }
+ }
+ else
+ if ( FDS_ACTION_MARK == nAction || FDS_ACTION_UNMARK == nAction )
+ {
+ pWin->SetControlForeground();
+ pWin->SetControlBackground();
+ }
+
+ return FALSE;
+}
+
+String TranslateWin::MarkShortcutErrors( Window* pBase, BOOL bMark )
+{
+ if ( pBase )
+ {
+ FindShortcutErrors aFinder;
+ if ( bMark )
+ {
+ StatementList::SearchAllWin( pBase, aFinder, TRUE ); // collect Shortcuts first
+ aFinder.SetAction( FDS_ACTION_MARK );
+ }
+ else
+ aFinder.SetAction( FDS_ACTION_UNMARK );
+ StatementList::SearchAllWin( pBase, aFinder, TRUE );
+ return aFinder.GetDoubleShortcuts();
+ }
+ return UniString();
+}
+
+void TranslateWin::EnableTranslation()
+{
+ PushButtonTT_PB_SELECT.Enable();
+ PushButtonTT_PB_NEXT.Enable();
+ bAvailable = FALSE;
+ bNext = FALSE;
+}
+
+void StatementCommand::Translate()
+{
+ // Es wurde eine initale UniqueId mitgegeben. Dann nur die dopelten Shortcuts liefern
+ if( (nParams & PARAM_ULONG_1) && nLNr1 )
+ {
+ String aDouble;
+ Window *pWin = SearchTree( SmartId( nLNr1 ) ,FALSE );
+ if ( pWin )
+ {
+ pWin = pWin->GetWindow( WINDOW_OVERLAP );
+ aDouble = TranslateWin::MarkShortcutErrors( pWin, TRUE );
+ }
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aDouble );
+ return;
+ }
+
+ if ( !GetTTSettings()->pTranslateWin )
+ {
+ GetTTSettings()->pTranslateWin = new TranslateWin;
+ GetTTSettings()->bToTop = TRUE;
+ }
+
+ GetTTSettings()->pTranslateWin->Show();
+ if ( GetTTSettings()->bToTop )
+ {
+ GetTTSettings()->pTranslateWin->ToTop();
+ GetTTSettings()->bToTop = FALSE;
+ }
+
+// GetTTSettings()->pTranslateWin->GetWindow( WINDOW_OVERLAP )->Enable( TRUE, TRUE );
+ GetTTSettings()->pTranslateWin->GetWindow( WINDOW_OVERLAP )->EnableInput( TRUE, TRUE );
+
+ if ( GetTTSettings()->pTranslateWin->IsTranslationAvailable() )
+ {
+ String aTranslation;
+ Window* pTranslationWindow = GetTTSettings()->pTranslateWin->GetTranslationWindow();
+
+ DBG_ASSERT( pTranslationWindow, "Kein Translation Window" );
+
+ if ( WinPtrValid( pTranslationWindow ) )
+ {
+ if ( pTranslationWindow->GetType() == WINDOW_BORDERWINDOW && pTranslationWindow->GetWindow( WINDOW_CLIENT ) )
+ {
+ Window* pNew = pTranslationWindow->GetWindow( WINDOW_CLIENT );
+ // Bei Dockingwindoes das kanze Geraffel von Docking Floating überspringen
+ while ( IsDialog( pNew ) && !pNew->GetSmartUniqueOrHelpId().HasAny() && pNew->GetChildCount() == 1 )
+ pNew = pNew->GetChild( 0 );
+ pTranslationWindow = pNew;
+ }
+
+ aTranslation = CUniString("0;");
+
+ aTranslation += pTranslationWindow->GetSmartUniqueOrHelpId().GetText();
+ aTranslation += ';';
+
+ aTranslation += TypeString( pTranslationWindow->GetType() );
+ aTranslation += ';';
+
+ Window* pParentDialog = pTranslationWindow;
+ while ( pParentDialog && !IsDialog( pParentDialog ) )
+ {
+ pParentDialog = pParentDialog->GET_REAL_PARENT();
+ }
+
+ if ( pParentDialog )
+ {
+ aTranslation += pParentDialog->GetSmartUniqueOrHelpId().GetText();
+ aTranslation += ';';
+ aTranslation += TypeString( pParentDialog->GetType() );
+ }
+ else
+ aTranslation.AppendAscii( "0;" ); // Zahl + leerer String
+ aTranslation += ';';
+
+ aTranslation += '\"';
+ aTranslation += GetTTSettings()->pTranslateWin->GetOriginalText();
+ aTranslation += '\"';
+
+ aTranslation += ';';
+
+ aTranslation += '\"';
+ aTranslation += GetTTSettings()->pTranslateWin->GetTranslationText();
+ aTranslation += '\"';
+
+ aTranslation += ';';
+
+ aTranslation += '\"';
+ aTranslation += GetTTSettings()->pTranslateWin->GetComment();
+ aTranslation += '\"';
+
+ // alle CRs quoten (NF)
+ aTranslation.SearchAndReplaceAll( CUniString("\n"), CUniString("\\n") );
+ // alle TABSs quoten ()
+ aTranslation.SearchAndReplaceAll( CUniString("\t"), CUniString("\\t") );
+
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aTranslation );
+ GetTTSettings()->pTranslateWin->EnableTranslation();
+ GetTTSettings()->bToTop = TRUE;
+ }
+ else
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, String() );
+ GetTTSettings()->pTranslateWin->EnableTranslation();
+ ErrorBox err( GetTTSettings()->pTranslateWin, TTProperties::GetSvtResId( TT_NO_CONTROL ));
+ err.Execute();
+ GetTTSettings()->bToTop = TRUE;
+ }
+
+ }
+ else if ( GetTTSettings()->pTranslateWin->IsNextDialog() )
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, CUniString("1") );
+ GetTTSettings()->pTranslateWin->ResetNextDialog();
+ GetTTSettings()->pTranslateWin->LoseFocus();
+ GetTTSettings()->bToTop = TRUE;
+ }
+ else
+ {
+ GetTTSettings()->pTranslateWin->EnableTranslation();
+ pRet->GenReturn ( RET_Value, aSmartMethodId, String() );
+ }
+}
+
+Window* StatementCommand::GetNextOverlap( Window* pBase )
+{ // Findet irgendwelche Overlap-Fenster, die schließbar aussehen
+ // Eventuell muß noch die Auswahl verfeinert werden.
+
+ if ( pBase->GetType() != WINDOW_BORDERWINDOW )
+ pBase = pBase->GetWindow( WINDOW_OVERLAP );
+
+ Window *pControl = NULL;
+ if ( pBase->GetWindow( WINDOW_FIRSTOVERLAP ) )
+ {
+ pControl = GetNextOverlap( pBase->GetWindow( WINDOW_FIRSTOVERLAP ) );
+ }
+
+ if ( !pControl && pBase->GetWindow( WINDOW_NEXT ) )
+ {
+ pControl = GetNextOverlap( pBase->GetWindow( WINDOW_NEXT ) );
+ }
+
+ if ( !pControl )
+ {
+ Window *pTest = pBase->GetWindow( WINDOW_CLIENT );
+ if ( IsAccessable (pTest)
+ && pTest->IsEnabled()
+ && pTest->IsVisible()
+ && ((pTest->GetStyle() & WB_CLOSEABLE ) || (pBase->GetStyle() & WB_CLOSEABLE )) )
+ return pTest;
+ else
+ return NULL;
+ }
+ else
+ return pControl;
+}
+
+Window* StatementCommand::GetNextRecoverWin()
+{
+ // über die TopLevelWindows der App iterieren
+ Window* pBase = Application::GetFirstTopLevelWindow();
+ Window *pControl = NULL;
+ Window* pMyFirstDocFrame = NULL;
+ while ( pBase )
+ {
+ // zuerst weitere Fenster auf dem Fenster suchen und schliessen
+ pControl = GetNextOverlap( pBase );
+ if ( pControl && pControl->GetType() == WINDOW_HELPTEXTWINDOW )
+ {} // skip it
+ else
+ {
+ if ( pControl && pControl->IsVisible() && !IsFirstDocFrame( pControl ) && !IsIMEWin( pControl ) )
+ {
+ Window* pTB = pControl->GetChild( 0 );
+ if ( pControl->GetChildCount() == 1 && pTB->GetType() == WINDOW_TOOLBOX )
+// return pTB;
+ ; // do not act on floating toolboxes #i38796
+ else
+ return pControl;
+ }
+
+ // dann das Fenster selbst Schliessen
+ // erstes DocWin überspringen
+ // Assumption that Doc Windows are Borderwindows and ButtonDialog and such are not
+ if ( pBase->IsVisible() && !IsFirstDocFrame( pBase ) && pBase->GetType() != WINDOW_BORDERWINDOW && !IsIMEWin( pBase ) )
+ return pBase;
+
+ if ( !pMyFirstDocFrame && IsFirstDocFrame( pBase ) )
+ pMyFirstDocFrame = pBase;
+ }
+
+ pBase = Application::GetNextTopLevelWindow( pBase );
+ }
+#ifdef RESET_APPLICATION_TO_BACKING_WINDOW
+ // close the FirstDocFrame last, It will not be closed, but the Document inside will be closed.
+ if ( IsDocWin( pMyFirstDocFrame ) )
+ return pMyFirstDocFrame;
+#endif // def RESET_APPLICATION_TO_BACKING_WINDOW
+
+ return NULL;
+}
+
+BOOL StatementCommand::Execute()
+{
+ if ( IsError )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Skipping Command: " );
+ m_pDbgWin->AddText( aSmartMethodId.GetText() );
+ m_pDbgWin->AddText( "\n" );
+ #endif
+
+ Advance();
+ delete this;
+ return TRUE;
+ }
+
+ InitProfile();
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Executing Command: " );
+ m_pDbgWin->AddText( aSmartMethodId.GetText() );
+ m_pDbgWin->AddText( "\n" );
+#endif
+
+
+
+
+
+#if OSL_DEBUG_LEVEL > 1
+#define REPORT_WIN_CLOSED(pControl, aInfo) \
+ _REPORT_WIN_CLOSED(pControl, aInfo) \
+ m_pDbgWin->AddText( aInfo.AppendAscii(" \"").Append( pControl->GetText() ).AppendAscii("\" geschlossen, RType = ").Append( TypeString(pControl->GetType()) ).AppendAscii(", UId = ").Append( UIdString(pControl->GetSmartUniqueOrHelpId()) ) );
+#else
+#define REPORT_WIN_CLOSED(pControl, aInfo) _REPORT_WIN_CLOSED(pControl, aInfo)
+#endif
+
+#define REPORT_WIN_CLOSEDc(pControl, aInfo ) \
+ REPORT_WIN_CLOSED(pControl, CUniString(aInfo) )
+
+#define _REPORT_WIN_CLOSED(pControl, aInfo) \
+ if ( aString1.Len() ) \
+ aString1 += '\n'; \
+ aString1 += aInfo; \
+ aString1.AppendAscii(" \""); \
+ aString1 += pControl->GetText(); \
+ aString1.AppendAscii("\" geschlossen, RType = ");\
+ aString1 += TypeString(pControl->GetType()); \
+ aString1.AppendAscii(", UId = "); \
+ aString1 += UIdString(pControl->GetSmartUniqueOrHelpId());
+
+
+ switch ( nMethodId )
+ {
+ case RC_AppDelay:
+ if ( !bBool1 )
+ {
+ nLNr1 = Time().GetTime() + nNr1/10;
+ bBool1 = TRUE;
+ }
+ if ( Time().GetTime() < long(nLNr1) ) // Aktuelle Zeit kleiner Endzeit
+ return FALSE;
+ break;
+ case RC_DisplayHid:
+ if ( DisplayHID() )
+ return FALSE;
+ break;
+ case RC_ResetApplication:
+ {
+ if ( !bBool1 )
+ {
+ nRetryCount = 150; // das sollte reichen.
+ bBool1 = TRUE; // Nur beim ersten mal!
+ nNr1 = 1; // Welcher Button ist dran?
+ nLNr1 = 0; // Speichern des AppWin
+ aString1 = UniString(); // Liste der geschlossenen Fenster
+
+ // So daß nacher auch wieder alles auf Default steht
+ nUseBindings = 0;
+ bCatchGPF = TRUE;
+ bUsePostEvents = TRUE;
+
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+ }
+ if ( !nRetryCount )
+ ReportError( GEN_RES_STR0( S_RESETAPPLICATION_FAILED_COMPLEX ) );
+
+ Window *pControl = GetNextRecoverWin();
+
+ if ( pControl )
+ {
+ bBool2 = FALSE; // flag for wait when all windows are closed
+ pControl->GrabFocus();
+
+ if ( pControl->GetType() != WINDOW_DOCKINGWINDOW
+ && pControl->GetType() != WINDOW_FLOATINGWINDOW
+ && pControl->GetType() != WINDOW_MODELESSDIALOG
+ && pControl->GetType() != WINDOW_WORKWINDOW
+ && pControl->GetType() != WINDOW_TOOLBOX
+ && pControl->GetType() != WINDOW_BORDERWINDOW
+ && nRetryCount-- )
+ {
+ short nRT = ImpGetRType( pControl, pControl->GetSmartUniqueOrHelpId() );
+
+ if ( nRT == C_TabControl && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
+ { // Bei Tabcontrol den zugehörigen Tabdialog nehmen
+ pControl = pControl->GET_REAL_PARENT();
+ nRT = ImpGetRType( pControl, pControl->GetSmartUniqueOrHelpId() );
+ }
+
+ switch( nRT )
+ {
+ case C_ModalDlg:
+ case C_Dialog:
+ case C_TabDlg:
+ REPORT_WIN_CLOSEDc(pControl, "Dialog");
+ SET_WINP_CLOSING(pControl);
+ ((SystemWindow*)pControl)->Close();
+ break;
+ case C_WorkWin:
+ break;
+ case C_MessBox:
+ case C_InfoBox:
+ case C_WarningBox:
+ case C_ErrorBox:
+ case C_QueryBox:
+ case C_ButtonDialog:
+ {
+ ButtonDialog* pBD = (ButtonDialog*)pControl;
+ // nNr1 >= 10 bedeutet (Custom)-Buttons durchgehen
+ if ( nNr1 >= 10+pBD->GetButtonCount() ) nNr1 = 1;
+ switch( nNr1 )
+ {
+ case 5:
+ if ( pBD->GetPushButton( BUTTONID_OK ) )
+ {
+ REPORT_WIN_CLOSEDc(pControl, "Message Box (OK)");
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_OK);
+ }
+ nNr1 = 10; // Nochmal alle Buttons der Reihe nach
+ break;
+ case 4:
+ if ( pBD->GetPushButton( BUTTONID_CANCEL ) )
+ {
+ REPORT_WIN_CLOSEDc(pControl, "Message Box (Cancel)");
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_CANCEL);
+ }
+ nNr1++;
+ break;
+ case 3:
+ if ( pBD->GetPushButton( BUTTONID_YES ) )
+ {
+ REPORT_WIN_CLOSEDc(pControl, "Message Box (Yes)");
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_YES);
+ }
+ nNr1++;
+ break;
+ case 2: // BUG 48239
+ case 1:
+ if ( pBD->GetPushButton( BUTTONID_NO ) )
+ {
+ REPORT_WIN_CLOSEDc(pControl, "Message Box (No)");
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_NO);
+ }
+ nNr1++;
+ break;
+ default:
+ {
+ USHORT nID = pBD->GetButtonId( nNr1-10 );
+ if ( nID != BUTTONID_HELP )
+ {
+ REPORT_WIN_CLOSED(pControl, CUniString("Message Box (").Append( UniString::CreateFromInt32(nID) ).AppendAscii(")"));
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(nID);
+ }
+ nNr1++;
+ }
+ }
+ break;
+ }
+ default:
+ DBG_ERROR( "Unknown Windowtype" );
+ REPORT_WIN_CLOSEDc(pControl, "Unknown Windowtype");
+ ReportError( GEN_RES_STR0( S_RESETAPPLICATION_FAILED_UNKNOWN ), pControl->GetType() );
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( " Unbekannter Objekttyp aus UId" );
+ #endif
+ break;
+ }
+ return FALSE;
+ }
+ else
+ {
+ if ( (pControl->GetType() == WINDOW_DOCKINGWINDOW || pControl->GetType() == WINDOW_TOOLBOX) && nRetryCount-- )
+ {
+ if ( (((DockingWindow*)pControl)->GetStyle() | ((DockingWindow*)pControl)->GetFloatStyle()) & WB_CLOSEABLE )
+ {
+ REPORT_WIN_CLOSED(pControl, TypeString(pControl->GetType()));
+ SET_WINP_CLOSING(pControl);
+ ((DockingWindow*)pControl)->Close();
+
+ // Eigentlich nur bei TaskWindows! Hoffen wir mal, daß keine anderen DockingWindows dazwischen hauen.
+ if ( (Window*)nLNr1 != pControl )
+ nNr1 = 1; // Zum durchprobieren der Buttons beim Schließen
+ nLNr1 = (ULONG)pControl;
+
+ return FALSE;
+ }
+ }
+ if ( nRetryCount--
+ && ( (pControl->GetType() == WINDOW_FLOATINGWINDOW)
+ || (pControl->GetType() == WINDOW_MODELESSDIALOG)
+ || (pControl->GetType() == WINDOW_WORKWINDOW)
+ || (pControl->GetType() == WINDOW_BORDERWINDOW) ) )
+ {
+ // if ( pControl->GetStyle() & WB_CLOSEABLE )
+ {
+#ifdef RESET_APPLICATION_TO_BACKING_WINDOW
+ // Special handling for last Document; do not close the Frame, only the Document
+ if ( GetDocWinCount() == 1 && IsDocFrame( pControl ) )
+ {
+ if ( IsDocWin( pControl ) )
+ {
+ if ( GetDocFrameMenuBar( pControl ) )
+ {
+ MenuBar* pMenu = GetDocFrameMenuBar( pControl );
+ if ( pMenu->HasCloser() )
+ {
+ REPORT_WIN_CLOSED( pControl, TypeString(pControl->GetType()));
+ SET_WINP_CLOSING(pControl);
+
+ pMenu->GetCloserHdl().Call( pMenu );
+
+ // nur bei TaskWindows!
+ if ( (Window*)nLNr1 != pControl )
+ nNr1 = 1; // Zum durchprobieren der Buttons beim Schließen
+ nLNr1 = (ULONG)pControl;
+
+ return FALSE;
+ }
+ }
+ }
+ }
+ else
+#endif // def RESET_APPLICATION_TO_BACKING_WINDOW
+ {
+ REPORT_WIN_CLOSED( pControl, TypeString(pControl->GetType()));
+ SET_WINP_CLOSING(pControl);
+ ((SystemWindow*)pControl)->Close();
+
+ // Eigentlich nur bei TaskWindows!
+ if ( (Window*)nLNr1 != pControl )
+ nNr1 = 1; // Zum durchprobieren der Buttons beim Schließen
+ nLNr1 = (ULONG)pControl;
+
+ return FALSE;
+ }
+ }
+ }
+ }
+ }
+ // wait for some time if more windows show up
+ // E.g.: Floating toolbars on a Task which was hidden by another Task before
+ if ( !bBool2 )
+ {
+ nLNr1 = Time().GetTime() + 100; // 100 = 1 Second
+ bBool2 = TRUE;
+ }
+ if ( Time().GetTime() < long(nLNr1) ) // Aktuelle Zeit kleiner Endzeit
+ return FALSE;
+ else
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aString1);
+ }
+ break;
+ case RC_WaitSlot:
+ {
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1000; // defaults to 1000 = 1 Sec.
+ if ( !bBool1 )
+ {
+ nLNr1 = Time().GetTime() + nNr1/10;
+ bBool1 = TRUE;
+ }
+
+ if ( !bIsSlotInExecute )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, comm_USHORT(CONST_WSFinished) );
+ else
+ {
+ if ( Time().GetTime() < long(nLNr1) ) // Aktuelle Zeit kleiner Endzeit
+ return FALSE;
+ pRet->GenReturn ( RET_Value, aSmartMethodId, comm_USHORT(CONST_WSTimeout) );
+ }
+ }
+ break;
+ }
+
+
+ Advance();
+
+
+ switch ( nMethodId )
+ {
+ case RC_AppDelay: // Diese Befehle werden anderswo behandelt
+ case RC_DisplayHid:
+ case RC_ResetApplication:
+ case RC_WaitSlot:
+
+ case RC_AppAbort: // Sofortiges Löschen aller Befehle
+ break;
+ case RC_Assert:
+ {
+ ByteString aAssertion( "Diese Assertion wurde vom Testtool per Befehl ausgelöst" );
+ aAssertion = ByteString( String( aAssertion, RTL_TEXTENCODING_MS_1252 ), RTL_TEXTENCODING_UTF8 );
+ DBG_ASSERT( !aString1.Len(), ByteString( aString1, RTL_TEXTENCODING_UTF8 ).GetBuffer() );
+ DBG_ASSERT( aString1.Len(), aAssertion.GetBuffer() );
+ OSL_ENSURE( !aString1.Len(), ByteString( aString1, RTL_TEXTENCODING_UTF8 ).GetBuffer() );
+ OSL_ENSURE( aString1.Len(), aAssertion.GetBuffer() );
+ }
+ break;
+ case RC_CaptureAssertions:
+#ifdef DBG_UTIL
+ if( !(nParams & PARAM_BOOL_1) || bBool1 )
+ {
+ DBG_INSTOUTERROR( DBG_OUT_TESTTOOL );
+ osl_setDebugMessageFunc( osl_TestToolDebugPrint );
+ }
+ else
+ {
+ DBG_INSTOUTERROR( DBG_OUT_MSGBOX );
+ osl_setDebugMessageFunc( pOriginal_osl_DebugMessageFunc );
+ }
+#endif
+ break;
+ case RC_Translate:
+ Translate();
+ break;
+ case RC_ApplicationBusy:
+ {
+ BOOL bWait = FALSE;
+ ReportError( GEN_RES_STR0( S_NO_ACTIVE_WINDOW ) );
+// if ( Application::GetAppWindow() )
+// bWait = Application::GetAppWindow()->IsWait();
+ pRet->GenReturn ( RET_Value, aSmartMethodId, bWait );
+ break;
+ }
+ case RC_GetClipboard:
+ {
+ ::rtl::OUString aTemp;
+ ::svt::OStringTransfer::PasteString( aTemp, GetFirstDocFrame() );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, String( aTemp ) );
+ }
+ break;
+ case RC_SetClipboard:
+ ::svt::OStringTransfer::CopyString(aString1,GetFirstDocFrame());
+ break;
+ case RC_WinTree:
+ pRet->GenReturn ( RET_Value, aSmartMethodId, Tree( NULL, 0));
+ break;
+ #if OSL_DEBUG_LEVEL > 1
+ case RC_NoDebug:
+ m_pDbgWin->bQuiet = TRUE;
+ m_pDbgWin->Hide();
+ m_pDbgWin->Clear();
+ break;
+ case RC_Debug:
+ m_pDbgWin->bQuiet = FALSE;
+ m_pDbgWin->Show();
+ break;
+ #endif
+ case RC_GPF:
+ ((TabControl*)NULL)->SetCurPageId( 12345 );
+ break;
+ case RC_GetNextCloseWindow:
+ {
+ Window *pWin = GetActive( WINDOW_BASE ); // WINDOW_ANYTYPE
+ if ( !pWin )
+ ReportError( GEN_RES_STR0( S_NO_ACTIVE_WINDOW ) );
+ else if ( !IsDialog(pWin) )
+ ReportError( GEN_RES_STR0( S_NO_DIALOG_IN_GETACTIVE ) );
+ else
+ pRet->GenReturn( RET_Value, aSmartMethodId, static_cast<comm_ULONG>(pWin->GetSmartUniqueOrHelpId().GetNum())); //GetNum() ULONG != comm_ULONG on 64bit
+ }
+ break;
+ case RC_UseBindings:
+ if( !(nParams & PARAM_BOOL_1) || bBool1 )
+ nUseBindings = SFX_USE_BINDINGS;
+ else
+ nUseBindings = 0;
+ break;
+ case RC_Profile:
+ // Bei folgenden Parametern passiert folgendes:
+ // ein boolean=false Alles Profiling stoppen (Ergebnisse liefern)
+ // ein boolean=true, 1-4 ints Einteilung der Zeiten in Kästchen
+ // kein! boolean keine ints loggen jeden Befehls
+ // kein! boolean 1 int loggen alle int Millisekunden
+ // ein String wird in das Logfile übernommen(sonst passiert nichts)
+ if( !(nParams & PARAM_BOOL_1) || bBool1 )
+ {
+ if ( !pProfiler )
+ {
+ pProfiler = new TTProfiler;
+ InitProfile();
+ }
+
+ if( !(nParams & PARAM_BOOL_1) && (nParams & PARAM_USHORT_1) )
+ { // Autoprofiling: Profile nNr
+ if ( pProfiler->IsProfilingPerCommand() )
+ {
+ pProfiler->StopProfilingPerCommand();
+ }
+ pProfiler->StartAutoProfiling( nNr1 );
+
+ // Der Header ist abhängig vom Modus
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), pProfiler->GetProfileHeader() );
+ }
+ else if ( nParams & PARAM_USHORT_1 )
+ { // Partitioning initialisieren: Profile true [,nNr][,nNr][,nNr][,nNr]
+ comm_ULONG nAnzahl=0;
+ if ( nParams & PARAM_USHORT_1 ) { nAnzahl++; };
+ if ( nParams & PARAM_USHORT_2 ) { nAnzahl++; };
+ if ( nParams & PARAM_USHORT_3 ) { nAnzahl++; };
+ if ( nParams & PARAM_USHORT_4 ) { nAnzahl++; };
+
+ // Hier werden die Parameter ans Testtool zurück übertragen.
+ // Das ist zwar etwas eigenartig, aber ansonsten müsste man im Testtool
+ // die einfache Struktur der Remotebefehle aufbrechen.
+ pRet->GenReturn( RET_ProfileInfo, SmartId( S_ProfileReset ), nAnzahl );
+
+ // Und die einzelnen Grenzen
+ if ( nParams & PARAM_USHORT_1 ) { pRet->GenReturn( RET_ProfileInfo, SmartId( S_ProfileBorder1 ), (comm_ULONG)nNr1 ); };
+ if ( nParams & PARAM_USHORT_2 ) { pRet->GenReturn( RET_ProfileInfo, SmartId( S_ProfileBorder2 ), (comm_ULONG)nNr2 ); };
+ if ( nParams & PARAM_USHORT_3 ) { pRet->GenReturn( RET_ProfileInfo, SmartId( S_ProfileBorder3 ), (comm_ULONG)nNr3 ); };
+ if ( nParams & PARAM_USHORT_4 ) { pRet->GenReturn( RET_ProfileInfo, SmartId( S_ProfileBorder4 ), (comm_ULONG)nNr4 ); };
+
+ pProfiler->StartPartitioning();
+ }
+ else if( nParams == PARAM_STR_1 ) // Genau ein String!
+ { // Nur einen String ins Profiling aufnehmen
+ aString1 += '\n';
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), aString1 );
+ }
+ else
+ { // Normales Profiling je Kommando: profile
+ if ( pProfiler->IsAutoProfiling() )
+ {
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), pProfiler->GetAutoProfiling() );
+ pProfiler->StopAutoProfiling();
+ }
+ pProfiler->StartProfilingPerCommand();
+
+ // Der Header ist abhängig vom Modus
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), pProfiler->GetProfileHeader() );
+ }
+ }
+ else // Profiling wieder ausschalten: Profile false
+ if ( pProfiler )
+ {
+ if ( pProfiler->IsProfilingPerCommand() )
+ pProfiler->StopProfilingPerCommand();
+
+ if ( pProfiler->IsAutoProfiling() )
+ {
+ pRet->GenReturn( RET_ProfileInfo, SmartId(), pProfiler->GetAutoProfiling() );
+ pProfiler->StopAutoProfiling();
+ }
+
+ if ( pProfiler->IsPartitioning() )
+ {
+ pRet->GenReturn( RET_ProfileInfo, SmartId( S_ProfileDump ), (comm_ULONG)0 );
+ pProfiler->StopPartitioning();
+ }
+
+ delete pProfiler;
+ pProfiler = NULL;
+ }
+ break;
+ case RC_MenuGetItemCount:
+ case RC_MenuGetItemId:
+ case RC_MenuGetItemPos:
+ case RC_MenuIsSeperator:
+ case RC_MenuIsItemChecked:
+ case RC_MenuIsItemEnabled:
+ case RC_MenuGetItemText:
+ case RC_MenuGetItemCommand:
+ case RC_MenuHasSubMenu:
+ case RC_MenuSelect:
+ {
+ PopupMenu *pPopup = NULL;
+ MenuBar *pMenuBar = NULL;
+ Menu *pMenu;
+
+ USHORT nErr = GetCurrentMenues( pPopup, pMenuBar, pMenu );
+
+ if ( !pMenu )
+ {
+ if ( nErr == 1 )
+ ReportError( GEN_RES_STR0( S_NO_POPUP ) );
+ else
+ ReportError( GEN_RES_STR0( S_NO_SUBMENU ) );
+ break;
+ }
+
+ USHORT nItemCount = 0;
+ switch ( nMethodId )
+ {
+ case RC_MenuGetItemCount:
+ case RC_MenuGetItemId:
+ case RC_MenuIsSeperator:
+ {
+ nItemCount = pMenu->GetItemCount();
+ if ( pMenu->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES )
+ { // jep, we have to adjust the count
+ BOOL bLastWasSeperator = TRUE; // TRUE for Separator at the top
+ for ( USHORT i = 0 ; i < pMenu->GetItemCount() ; i++ )
+ {
+ if ( !pMenu->IsItemEnabled( pMenu->GetItemId( i ) ) )
+ nItemCount--;
+ else
+ {
+ if ( pMenu->GetItemType( i ) == MENUITEM_SEPARATOR && bLastWasSeperator )
+ nItemCount--;
+ bLastWasSeperator = pMenu->GetItemType( i ) == MENUITEM_SEPARATOR;
+ }
+ }
+ if ( bLastWasSeperator ) // Separator at bottom
+ nItemCount--;
+ }
+ }
+ break;
+ }
+
+ // for certain methods calculate the physical index (reinserting the hidden entries)
+ USHORT nPhysicalIndex = 0;
+ switch ( nMethodId )
+ {
+ case RC_MenuGetItemId:
+ case RC_MenuIsSeperator:
+ {
+ nPhysicalIndex = nNr1;
+ if ( pMenu->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES )
+ { // jep, we have to adjust the position
+ BOOL bLastWasSeperator = TRUE; // TRUE for Separator at the top
+ USHORT nVisibleCount = 0;
+ for ( USHORT i = 0 ; i < pMenu->GetItemCount() && nVisibleCount < nNr1 ; i++ )
+ {
+ if ( pMenu->IsItemEnabled( pMenu->GetItemId( i ) )
+ && !( pMenu->GetItemType( i ) == MENUITEM_SEPARATOR && bLastWasSeperator ) )
+ {
+ nVisibleCount++;
+ bLastWasSeperator = pMenu->GetItemType( i ) == MENUITEM_SEPARATOR;
+ }
+ else
+ nPhysicalIndex++;
+ }
+ DBG_ASSERT( nVisibleCount == nNr1, "Adaption of Index failed: nVisibleCount != nNr1" );
+ }
+ }
+ break;
+ }
+
+
+
+ switch ( nMethodId )
+ {
+ case RC_MenuGetItemCount:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)nItemCount );
+ }
+ break;
+ case RC_MenuGetItemId:
+ {
+ if ( ValueOK(aSmartMethodId, RcString( nMethodId ),nNr1,nItemCount) )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)pMenu->GetItemId(nPhysicalIndex-1) );
+ }
+ break;
+ case RC_MenuGetItemPos:
+ {
+ USHORT nLogicalPos = pMenu->GetItemPos(nNr1);
+ if ( MENU_ITEM_NOTFOUND != nLogicalPos && pMenu->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES )
+ { // jep, we have to adjust the position
+ if ( !pMenu->IsItemEnabled( nNr1 ) )
+ nLogicalPos = MENU_ITEM_NOTFOUND;
+ else
+ {
+ BOOL bLastWasSeperator = FALSE;
+ for ( int i = nLogicalPos ; i >= 0 ; i-- )
+ {
+ if ( !pMenu->IsItemEnabled( pMenu->GetItemId( sal::static_int_cast< USHORT >(i) ) ) ||
+ ( pMenu->GetItemType( sal::static_int_cast< USHORT >(i) ) == MENUITEM_SEPARATOR && bLastWasSeperator ) )
+ nLogicalPos--;
+ bLastWasSeperator = pMenu->GetItemType( sal::static_int_cast< USHORT >(i) ) == MENUITEM_SEPARATOR;
+ }
+ }
+ }
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)(nLogicalPos+1) );
+ }
+ break;
+ case RC_MenuIsSeperator:
+ {
+ if ( ValueOK(aSmartMethodId, RcString( nMethodId ),nNr1,nItemCount) )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_BOOL)(pMenu->GetItemType(nPhysicalIndex-1) == MENUITEM_SEPARATOR) );
+ }
+ break;
+ case RC_MenuIsItemChecked:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_BOOL)pMenu->IsItemChecked(nNr1) );
+ }
+ break;
+ case RC_MenuIsItemEnabled:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_BOOL)pMenu->IsItemEnabled(nNr1) );
+ }
+ break;
+ case RC_MenuGetItemText:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (String)pMenu->GetItemText(nNr1) );
+ }
+ break;
+ case RC_MenuGetItemCommand:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (String)pMenu->GetItemCommand(nNr1) );
+ }
+ break;
+ case RC_MenuHasSubMenu:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (BOOL)(pMenu->GetPopupMenu(nNr1) != NULL) );
+ }
+ break;
+ case RC_MenuSelect:
+ {
+ if ( pMenu->GetPopupMenu(nNr1) )
+ {
+ if ( !aSubMenuId1.GetNum() )
+ aSubMenuId1 = SmartId(nNr1);
+ else if ( !aSubMenuId2.GetNum() )
+ aSubMenuId2 = SmartId(nNr1);
+ else if ( !aSubMenuId3.GetNum() )
+ aSubMenuId3 = SmartId(nNr1);
+
+ if ( pPopup )
+ pPopup->SelectEntry(nNr1);
+ else
+ pMenuBar->SelectEntry(nNr1);
+ }
+ else
+ {
+ if ( pPopup )
+ {
+ pPopup->EndExecute(nNr1);
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+ }
+ else
+ {
+ pMenuBar->SelectEntry(nNr1);
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+ }
+ }
+ }
+ break;
+ }
+ }
+ break;
+ case RC_SetControlType:
+ {
+ DirectLog( S_QAError, GEN_RES_STR0( S_DEPRECATED ) );
+ }
+ break;
+ case RC_Kill:
+ case RC_RmDir:
+ case RC_MkDir:
+ case RC_FileCopy:
+ case RC_Name:
+ case RC_Dir:
+ case RC_FileLen:
+ case RC_FileDateTime:
+ {
+ long nErrorcode = FSYS_ERR_OK;
+ switch ( nMethodId )
+ {
+ case RC_Kill:
+ {
+ DirEntry aFile( aString1 );
+ nErrorcode = aFile.GetError();
+ if ( FSYS_ERR_OK == nErrorcode && FileStat( aFile ).IsKind( FSYS_KIND_FILE ) )
+ nErrorcode = aFile.Kill();
+ else
+ nErrorcode = FSYS_ERR_NOTAFILE;
+ }
+ break;
+ case RC_RmDir:
+ {
+ DirEntry aDir( aString1 );
+ nErrorcode = aDir.GetError();
+ if ( FSYS_ERR_OK == nErrorcode && FileStat( aDir ).IsKind( FSYS_KIND_DIR ) )
+ nErrorcode = aDir.Kill();
+ else
+ nErrorcode = FSYS_ERR_NOTADIRECTORY;
+ }
+ break;
+ case RC_MkDir:
+ {
+ DirEntry aDir( aString1 );
+ nErrorcode = aDir.GetError();
+ if ( !nErrorcode && !aDir.MakeDir() )
+ nErrorcode = FSYS_ERR_UNKNOWN;
+// Workaround für Bug 60693
+// nErrorcode = aDir.GetError();
+ }
+ break;
+ case RC_FileCopy:
+ {
+ nErrorcode = DirEntry( aString1 ).CopyTo( DirEntry( aString2 ), FSYS_ACTION_COPYFILE );
+ }
+ break;
+ case RC_Name:
+ {
+ nErrorcode = DirEntry( aString1 ).MoveTo( DirEntry( aString2 ) );
+ }
+ break;
+ case RC_Dir:
+ {
+
+ String aPath;
+ USHORT nDirFlags = 0;
+// from basic/source/inc/runtime.hxx
+#define Sb_ATTR_NORMAL 0x0000
+#define Sb_ATTR_HIDDEN 0x0002
+#define Sb_ATTR_SYSTEM 0x0004
+#define Sb_ATTR_VOLUME 0x0008
+#define Sb_ATTR_DIRECTORY 0x0010
+#define Sb_ATTR_ARCHIVE 0x0020
+ // copied from Basic and adapted basic/source/runtime/methods.cxx Revision 1.54
+ if ( (nParams & PARAM_STR_1) )
+ {
+ delete pDir;
+ pDir = NULL; // wg. Sonderbehandlung Sb_ATTR_VOLUME
+ DirEntry aEntry( aString1 );
+ FileStat aStat( aEntry );
+ if(!aStat.GetError() && (aStat.GetKind() & FSYS_KIND_FILE))
+ {
+ // OK, only a filename
+ // cut off path (VB4)
+ aPath = aEntry.GetName();
+ }
+ else
+ {
+ USHORT nFlags = 0;
+ if ( (nParams & PARAM_USHORT_1) )
+ nDirFlags = nFlags = nNr1;
+ else
+ nDirFlags = nFlags = Sb_ATTR_HIDDEN | Sb_ATTR_SYSTEM | Sb_ATTR_DIRECTORY;
+
+ // Nur diese Bitmaske ist unter Windows erlaubt
+ #ifdef WIN
+ if( nFlags & ~0x1E )
+ {
+ nDirFlags = 0;
+ StarBASIC::Error( SbERR_BAD_ARGUMENT );
+ }
+ #endif
+ // Sb_ATTR_VOLUME wird getrennt gehandelt
+ if( nDirFlags & Sb_ATTR_VOLUME )
+ aPath = aEntry.GetVolume();
+ else
+ {
+ // Die richtige Auswahl treffen
+ USHORT nMode = FSYS_KIND_FILE;
+ if( nFlags & Sb_ATTR_DIRECTORY )
+ nMode |= FSYS_KIND_DIR;
+ if( nFlags == Sb_ATTR_DIRECTORY )
+ nMode = FSYS_KIND_DIR;
+ pDir = new Dir( aEntry, (DirEntryKind) nMode );
+ nErrorcode = pDir->GetError();
+ nDirPos = 0;
+ }
+ }
+ }
+
+ if( pDir )
+ {
+ for( ;; )
+ {
+ if( nDirPos >= pDir->Count() )
+ {
+ delete pDir;
+ pDir = NULL;
+ aPath.Erase();
+ break;
+ }
+ DirEntry aNextEntry=(*(pDir))[nDirPos++];
+ aPath = aNextEntry.GetName(); //Full();
+ #ifdef WIN
+ aNextEntry.ToAbs();
+ String sFull(aNextEntry.GetFull());
+ unsigned nFlags;
+
+ if (_dos_getfileattr( sFull.GetStr(), &nFlags ))
+ nErrorcode = FSYS_ERR_NOTEXISTS;
+ else
+ {
+ INT16 nCurFlags = nDirFlags;
+ if( (nCurFlags == Sb_ATTR_NORMAL)
+ && !(nFlags & ( _A_HIDDEN | _A_SYSTEM | _A_VOLID | _A_SUBDIR ) ) )
+ break;
+ else if( (nCurFlags & Sb_ATTR_HIDDEN) && (nFlags & _A_HIDDEN) )
+ break;
+ else if( (nCurFlags & Sb_ATTR_SYSTEM) && (nFlags & _A_SYSTEM) )
+ break;
+ else if( (nCurFlags & Sb_ATTR_VOLUME) && (nFlags & _A_VOLID) )
+ break;
+ else if( (nCurFlags & Sb_ATTR_DIRECTORY) && (nFlags & _A_SUBDIR) )
+ break;
+ }
+ #else
+ break;
+ #endif
+ }
+ }
+ if ( !nErrorcode )
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, aPath );
+ }
+
+
+
+/* keep old Implementation for now
+ // neues Verzeichnis einlesen
+ if ( (nParams & PARAM_STR_1) )
+ {
+ if ( pDir )
+ {
+ delete pDir;
+ pDir = NULL;
+ }
+ DirEntryKind aDirEntryKind = FSYS_KIND_FILE | FSYS_KIND_DIR;
+ if ( (nParams & PARAM_USHORT_1) && nNr1 )
+ {
+ if ( nNr1 & 16 )
+ aDirEntryKind = FSYS_KIND_DIR;
+ else
+ ReportError( GEN_RES_STR0( S_SELECTION_BY_ATTRIBUTE_ONLY_DIRECTORIES ) );
+ }
+
+ DirEntry aEntry( aString1 );
+ nErrorcode = aEntry.GetError();
+ if ( !nErrorcode )
+ {
+ nDirPos = 0;
+ FileStat aFS( aEntry );
+ if ( !aFS.IsKind( FSYS_KIND_WILD ) && !aFS.IsKind( FSYS_KIND_DIR ) && aEntry.Exists() )
+ { // Sonderbehandlung für genau einen Eintrag
+ if ( !aFS.IsKind( FSYS_KIND_DIR ) && ( aDirEntryKind == FSYS_KIND_DIR ) )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, String() );
+ else
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (String)(aEntry.GetName()) );
+
+ break;
+ }
+ else
+ {
+ pDir = new Dir( aEntry, aDirEntryKind );
+ nErrorcode = pDir->GetError();
+ }
+ }
+ }
+
+ if ( !pDir )
+ pDir = new Dir;
+
+ if ( !nErrorcode && ValueOK( aSmartMethodId, GEN_RES_STR0( S_NO_MORE_FILES ), nDirPos+1, pDir->Count()+1 ) )
+ {
+ if ( nDirPos == pDir->Count() )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, String() );
+ else
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (String)((*pDir)[ nDirPos ].GetName()) );
+ nDirPos++;
+ }*/
+ }
+ break;
+ case RC_FileLen:
+ {
+ DirEntry aFile( aString1 );
+ nErrorcode = aFile.GetError();
+ if ( FSYS_ERR_OK == nErrorcode )
+ {
+ FileStat aFS( aFile );
+ pRet->GenReturn ( RET_Value, aSmartMethodId, static_cast<comm_ULONG>(aFS.GetSize()) ); //GetSize() ULONG != comm_ULONG on 64bit
+ nErrorcode = aFS.GetError();
+ }
+ }
+ break;
+ case RC_FileDateTime:
+ {
+ DirEntry aFile( aString1 );
+ nErrorcode = aFile.GetError();
+ if ( FSYS_ERR_OK == nErrorcode )
+ {
+ FileStat aStat( aFile );
+ Time aTime( aStat.TimeModified() );
+ Date aDate( aStat.DateModified() );
+ nErrorcode = aStat.GetError();
+
+ double fSerial = (double)( aDate - Date(30,12,1899) );
+ long nSeconds = aTime.GetHour();
+ nSeconds *= 3600;
+ nSeconds += aTime.GetMin() * 60;
+ nSeconds += aTime.GetSec();
+ double nDays = ((double)nSeconds) / (double)(24.0*3600.0);
+ fSerial += nDays;
+
+ SbxValueRef xValue = new SbxValue( SbxDATE );
+ xValue->PutDate( fSerial );
+
+ pRet->GenReturn ( RET_Value, aSmartMethodId, *xValue );
+ }
+ }
+ break;
+ }
+ switch ( nErrorcode )
+ {
+ case FSYS_ERR_OK:
+ break;
+ case FSYS_ERR_MISPLACEDCHAR:
+ {
+ ReportError( CUniString("MISPLACEDCHAR") );
+ }
+ break;
+ case FSYS_ERR_INVALIDCHAR:
+ {
+ ReportError( CUniString("INVALIDCHAR") );
+ }
+ break;
+ case FSYS_ERR_NOTEXISTS:
+ {
+ ReportError( CUniString("NOTEXISTS") );
+ }
+ break;
+ case FSYS_ERR_ALREADYEXISTS:
+ {
+ ReportError( CUniString("ALREADYEXISTS") );
+ }
+ break;
+ case FSYS_ERR_NOTADIRECTORY:
+ {
+ ReportError( CUniString("NOTADIRECTORY") );
+ }
+ break;
+ case FSYS_ERR_NOTAFILE:
+ {
+ ReportError( CUniString("NOTAFILE") );
+ }
+ break;
+ case FSYS_ERR_INVALIDDEVICE:
+ {
+ ReportError( CUniString("INVALIDDEVICE") );
+ }
+ break;
+ case FSYS_ERR_ACCESSDENIED:
+ {
+ ReportError( CUniString("ACCESSDENIED") );
+ }
+ break;
+ case FSYS_ERR_LOCKVIOLATION:
+ {
+ ReportError( CUniString("LOCKVIOLATION") );
+ }
+ break;
+ case FSYS_ERR_VOLUMEFULL:
+ {
+ ReportError( CUniString("VOLUMEFULL") );
+ }
+ break;
+ case FSYS_ERR_ISWILDCARD:
+ {
+ ReportError( CUniString("ISWILDCARD") );
+ }
+ break;
+ case FSYS_ERR_NOTSUPPORTED:
+ {
+ ReportError( CUniString("NOTSUPPORTED") );
+ }
+ break;
+ case FSYS_ERR_UNKNOWN:
+ {
+ ReportError( CUniString("UNKNOWN") );
+ }
+ break;
+ default:
+ {
+ ReportError( CUniString("Not an FSYS Error") );
+ }
+ }
+
+ }
+ break;
+ case RC_TypeKeysDelay:
+ {
+ if( (nParams & PARAM_BOOL_1) )
+ {
+ bDoTypeKeysDelay = bBool1;
+ }
+ else if( nParams & PARAM_USHORT_1 )
+ {
+ nMinTypeKeysDelay = nNr1;
+ if( nParams & PARAM_USHORT_2 )
+ nMaxTypeKeysDelay = nNr2;
+ else
+ nMaxTypeKeysDelay = nMinTypeKeysDelay;
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_GetMouseStyle:
+ {
+ Pointer aPointer;
+// if ( DragManager::GetDragManager() )
+// aPointer = DragManager::GetDragManager()->GetDragPointer();
+// else
+ {
+ Window *pActualWin = GetMouseWin();
+ if ( pActualWin )
+ aPointer = pActualWin->GetPointer();
+ else
+ {
+ ReportError( GEN_RES_STR1( S_POINTER_OUTSIDE_APPWIN, RcString( nMethodId ) ) );
+ aPointer = Pointer( POINTER_NULL );
+ }
+ }
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_ULONG)aPointer.GetStyle() );
+ }
+ break;
+ case RC_UnpackStorage:
+ {
+ if( (nParams & PARAM_STR_1) )
+ {
+ String aFileName( aString1 );
+ DirEntry aDestPath;
+ if( (nParams & PARAM_STR_2) )
+ aDestPath = DirEntry( aString2 );
+ else
+ {
+ aDestPath = DirEntry( aFileName );
+ aDestPath.SetExtension( CUniString( "plaintext" ) );
+ }
+
+#if OSL_DEBUG_LEVEL > 1
+ USHORT nEntries = Dir( aDestPath, FSYS_KIND_FILE | FSYS_KIND_DIR ).Count();
+ (void) nEntries; /* avoid warning about unused parameter */
+#endif
+ // The Count is only larger than 2 is the path is a directory which is not empty
+ // the Count of 2 results from the "." and ".." directory
+ if ( Dir( aDestPath, FSYS_KIND_FILE | FSYS_KIND_DIR ).Count() > 2 )
+ DirectLog( S_QAError, GEN_RES_STR1( S_DIRECTORY_NOT_EMPTY, aDestPath.GetFull() ) );
+
+ SotStorageRef xStorage = new SotStorage( aFileName, STREAM_STD_READ );
+ if ( xStorage->GetError() )
+ ReportError( GEN_RES_STR2(S_UNPACKING_STORAGE_FAILED, aFileName, aDestPath.GetFull()) );
+ else
+ UnpackStorage( xStorage, aDestPath );
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_CloseSysDialog:
+ case RC_ExistsSysDialog:
+ {
+ if( (nParams & PARAM_USHORT_1) )
+ {
+ Reference < ::com::sun::star::util::XCancellable > xPicker;
+ switch( nNr1 )
+ {
+ case CONST_FilePicker:
+ {
+ xPicker.set( Reference < ::com::sun::star::util::XCancellable >( svt::GetTopMostFilePicker(), UNO_QUERY ) );
+ }
+ break;
+ case CONST_FolderPicker:
+ {
+ xPicker.set( Reference < ::com::sun::star::util::XCancellable >( svt::GetTopMostFolderPicker(), UNO_QUERY ) );
+ }
+ break;
+ default:
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ switch( nMethodId )
+ {
+ case RC_CloseSysDialog:
+ {
+ if ( xPicker.is() )
+ xPicker->cancel();
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_ExistsSysDialog:
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_BOOL)xPicker.is() );
+ }
+ break;
+ default:
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_SAXCheckWellformed:
+ case RC_SAXReadFile:
+
+ case RC_SAXGetNodeType:
+ case RC_SAXGetAttributeCount:
+ case RC_SAXGetAttributeName:
+ case RC_SAXGetAttributeValue:
+ case RC_SAXGetChildCount:
+ case RC_SAXGetElementName:
+ case RC_SAXGetChars:
+
+ case RC_SAXSeekElement:
+ case RC_SAXHasElement:
+ case RC_SAXGetElementPath:
+
+ case RC_SAXRelease:
+ {
+ HandleSAXParser();
+ }
+ break;
+ case RC_RecordMacro:
+ {
+ if ( ! (nParams & PARAM_BOOL_1) )
+ bBool1 = TRUE;
+
+ MacroRecorder::GetMacroRecorder()->SetActionRecord( bBool1 );
+ }
+ break;
+ case RC_GetDocumentCount :
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_USHORT)GetDocWinCount() );
+ }
+ break;
+ case RC_ActivateDocument :
+ {
+ if( nParams & PARAM_USHORT_1 )
+ {
+ if ( ValueOK(aSmartMethodId, RcString( nMethodId ), nNr1, GetDocWinCount() ) )
+ {
+ Window* pWin = GetDocWin( nNr1-1 );
+ if ( pWin )
+ {
+ pWin->ToTop();
+ pWin->GrabFocus();
+ }
+ }
+ }
+ else
+ ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ }
+ break;
+ case RC_GetSystemLanguage :
+ {
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (comm_USHORT)Application::GetSettings().GetLanguage() );
+ }
+ break;
+ case RC_CatchGPF :
+ {
+ if( (nParams & PARAM_BOOL_1) )
+ bCatchGPF = bBool1;
+ else
+ bCatchGPF = TRUE;
+ }
+ break;
+ case RC_IsProduct :
+ {
+ BOOL bIsProduct;
+ #ifdef DBG_UTIL
+ bIsProduct = FALSE;
+ #else
+ bIsProduct = TRUE;
+ #endif
+ pRet->GenReturn ( RET_Value, aSmartMethodId, (BOOL)bIsProduct );
+ }
+ break;
+ case RC_UsePostEvents :
+ {
+ if( (nParams & PARAM_BOOL_1) )
+ bUsePostEvents = bBool1;
+ else
+ bUsePostEvents = TRUE;
+ }
+ break;
+ default:
+ ReportError( GEN_RES_STR1( S_UNKNOWN_COMMAND, RcString( nMethodId ) ) );
+ }
+ SendProfile( RcString(nMethodId) );
+ delete this;
+ return TRUE;
+}
+
+
+BOOL StatementCommand::UnpackStorage( SotStorageRef xStorage, DirEntry &aBaseDir )
+{
+ SvStorageInfoList aList;
+ xStorage->FillInfoList( &aList );
+
+ for( USHORT i = 0; i < aList.Count(); i++ )
+ {
+ SvStorageInfo& rInfo = aList.GetObject( i );
+ String aName = rInfo.GetName();
+ DirEntry aPath ( aBaseDir );
+ aPath += DirEntry( aName );
+ BOOL bIsStorage = xStorage->IsStorage( aName );
+ if ( bIsStorage )
+ {
+ SotStorageRef xSubStorage = xStorage->OpenSotStorage( aName, STREAM_STD_READ );
+ if ( xSubStorage->GetError() )
+ {
+ ReportError( GEN_RES_STR2(S_UNPACKING_STORAGE_FAILED, aName, aPath.GetFull()) );
+ return FALSE;
+ }
+ UnpackStorage( xSubStorage, aPath );
+ }
+ else
+ {
+ if ( !aPath.MakeDir( TRUE ) )
+ {
+ ReportError( GEN_RES_STR1(S_CANNOT_CREATE_DIRECTORY, aPath.GetFull()) );
+ return FALSE;
+ }
+ SotStorageStreamRef xStream = xStorage->OpenSotStream( aName, STREAM_STD_READ );
+ SvFileStream aDestination( aPath.GetFull(), STREAM_STD_READWRITE | STREAM_TRUNC );
+ (*xStream) >> aDestination;
+ if ( aDestination.GetError() != ERRCODE_NONE )
+ {
+ ReportError( GEN_RES_STR2(S_UNPACKING_STORAGE_FAILED, aName, aPath.GetFull()) );
+ return FALSE;
+ }
+ aDestination.Close();
+ }
+ }
+ return TRUE;
+}
+
+
+// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+StatementControl::StatementControl( SCmdStream *pCmdIn, USHORT nControlIdType )
+: StatementList()
+, nNr1( 0 )
+, nNr2( 0 )
+, nNr3( 0 )
+, nNr4( 0 )
+, nLNr1( 0 )
+, aString1()
+, aString2()
+, bBool1(FALSE)
+, bBool2(FALSE)
+{
+ QueStatement( NULL );
+ if ( nControlIdType == SIControl )
+ {
+ comm_ULONG nId;
+ pCmdIn->Read( nId );
+ aUId = SmartId( nId );
+ }
+ else if ( nControlIdType == SIStringControl )
+ {
+ String aId;
+ pCmdIn->Read( aId );
+ aUId = SmartId( aId );
+ }
+ else
+ {
+ DBG_ERROR( "Wrong ControlType" );
+ }
+
+ pCmdIn->Read( nMethodId );
+ pCmdIn->Read( nParams );
+
+ if( nParams & PARAM_USHORT_1 ) pCmdIn->Read( nNr1 );
+ if( nParams & PARAM_USHORT_2 ) pCmdIn->Read( nNr2 );
+ if( nParams & PARAM_USHORT_3 ) pCmdIn->Read( nNr3 );
+ if( nParams & PARAM_USHORT_4 ) pCmdIn->Read( nNr4 );
+ if( nParams & PARAM_ULONG_1 ) pCmdIn->Read( nLNr1 );
+ if( nParams & PARAM_STR_1 ) pCmdIn->Read( aString1 );
+ if( nParams & PARAM_STR_2 ) pCmdIn->Read( aString2 );
+ if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 );
+ if( nParams & PARAM_BOOL_2 ) pCmdIn->Read( bBool2 );
+
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Reading Control: UId: " );
+ m_pDbgWin->AddText( aUId.GetText() );
+ m_pDbgWin->AddText( " Methode: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
+ m_pDbgWin->AddText( " Params:" );
+ if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr1 ) );}
+ if( nParams & PARAM_USHORT_2 ) {m_pDbgWin->AddText( " n2:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr2 ) );}
+ if( nParams & PARAM_USHORT_3 ) {m_pDbgWin->AddText( " n3:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr3 ) );}
+ if( nParams & PARAM_USHORT_4 ) {m_pDbgWin->AddText( " n4:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr4 ) );}
+ if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " nl1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
+ if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
+ if( nParams & PARAM_STR_2 ) {m_pDbgWin->AddText( " s2:" );m_pDbgWin->AddText( aString2 );}
+/* if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 );
+ if( nParams & PARAM_BOOL_2 ) pCmdIn->Read( bBool2 );*/
+ m_pDbgWin->AddText( "\n" );
+#endif
+}
+
+BOOL IsDialog(Window *pWin)
+{ // Alles was von SystemWindow abgeleitet ist
+ if ( !pWin )
+ return FALSE;
+
+ switch (pWin->GetType())
+ {
+ case WINDOW_FLOATINGWINDOW:
+ case WINDOW_DOCKINGWINDOW:
+ case WINDOW_MODELESSDIALOG:
+ case WINDOW_DIALOG:
+ case WINDOW_MODALDIALOG:
+ case WINDOW_WORKWINDOW:
+ case WINDOW_TABDIALOG:
+
+ case WINDOW_MESSBOX:
+ case WINDOW_INFOBOX:
+ case WINDOW_WARNINGBOX:
+ case WINDOW_ERRORBOX:
+ case WINDOW_QUERYBOX:
+ case WINDOW_BUTTONDIALOG:
+ case WINDOW_FILEDIALOG:
+ case WINDOW_PRINTDIALOG:
+ case WINDOW_PRINTERSETUPDIALOG:
+
+// ab hier nicht ansprechbar (da nicht implementiert)
+ case WINDOW_SYSWINDOW:
+ case WINDOW_SYSTEMDIALOG:
+ case WINDOW_COLORDIALOG:
+ case WINDOW_FONTDIALOG:
+ case WINDOW_PATHDIALOG:
+
+
+ return TRUE;
+// break;
+ default:
+ return FALSE;
+// break;
+ }
+}
+
+
+BOOL IsAccessable(Window *pWin)
+{
+ if ( pWin == NULL )
+ return FALSE;
+
+ return pWin->IsEnabled() && pWin->IsInputEnabled();
+}
+
+
+
+// neue Hilfsfunktion
+static Window*ImpGetButton( Window *pBase, WinBits nMask, WinBits nWinBits )
+{
+ USHORT n = pBase->GetChildCount();
+ for( USHORT i = 0 ; i < n; i++ ) {
+ Window *pChild = pBase->GetChild(i);
+ if( pChild->GetType() == WINDOW_OKBUTTON
+ || pChild->GetType() == WINDOW_CANCELBUTTON
+ || pChild->GetType() == WINDOW_HELPBUTTON
+ || pChild->GetType() == WINDOW_PUSHBUTTON )
+ if( !nMask || ( pChild->GetStyle() & nMask ) == nWinBits )
+ return pChild;
+ }
+ return NULL;
+}
+
+BOOL StatementControl::ControlOK( Window *pControl, const sal_Char* cBezeichnung )
+{
+ if ( pControl && ( ( ( IsAccessable(pControl) || (nMethodId & M_WITH_RETURN) ) &&
+ pControl->IsVisible() ) ||
+ aUId.Matches( UID_ACTIVE ) ) )
+ return TRUE;
+ else
+ {
+ UniString aBezeichnung( cBezeichnung, RTL_TEXTENCODING_ASCII_US );
+ if ( aBezeichnung.Len() > 0 )
+ {
+ if (!pControl)
+ ReportError( aUId, GEN_RES_STR1( S_WIN_NOT_FOUND, aBezeichnung ) );
+ else if ( !pControl->IsVisible() )
+ ReportError( aUId, GEN_RES_STR1( S_WIN_INVISIBLE, aBezeichnung ) );
+ else
+ ReportError( aUId, GEN_RES_STR1( S_WIN_DISABLED, aBezeichnung ) );
+ }
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( aBezeichnung.AppendAscii(" NotFound or Disabled or Invisible") );
+ #endif
+
+ return FALSE;
+ }
+}
+
+
+BOOL StatementList::ValueOK( SmartId aId, String aBezeichnung, ULONG nValue, ULONG nMax )
+{
+
+ if ( nMax < nValue )
+ {
+ if ( aBezeichnung.Len() > 0 )
+ ReportError( aId, GEN_RES_STR3( S_NUMBER_TOO_BIG, aBezeichnung, UniString::CreateFromInt32( nValue ), UniString::CreateFromInt32( nMax ) ) );
+ return FALSE;
+ }
+ if ( nValue < 1 )
+ {
+ if ( aBezeichnung.Len() > 0 )
+ ReportError( aId, GEN_RES_STR3c3( S_NUMBER_TOO_SMALL, aBezeichnung, UniString::CreateFromInt32( nValue ), "1" ) );
+ return FALSE;
+ }
+ return TRUE;
+}
+
+USHORT StatementList::GetCurrentMenues( PopupMenu *&pPopup, MenuBar *&pMenuBar, Menu *&pMenu )
+{
+ if ( WinPtrValid( pMenuWindow ) )
+ pMenuBar = pMenuWindow->GetMenuBar();
+
+ if ( pMenuBar ) // use MenuBar as base
+ pMenu = pMenuBar;
+ else // use contextmenu as base
+ {
+ pMenu = PopupMenu::GetActivePopupMenu();
+ pPopup = PopupMenu::GetActivePopupMenu();
+ }
+
+ if ( !pMenu )
+ return 1;
+
+ if ( aSubMenuId1.GetNum() )
+ {
+ pPopup = pMenu->GetPopupMenu(
+ sal::static_int_cast< USHORT >(aSubMenuId1.GetNum()));
+ pMenu = pPopup;
+ }
+
+ if ( pMenu && aSubMenuId2.GetNum() )
+ {
+ pPopup = pMenu->GetPopupMenu(
+ sal::static_int_cast< USHORT >(aSubMenuId2.GetNum()));
+ pMenu = pPopup;
+ }
+
+ if ( pMenu && aSubMenuId3.GetNum() )
+ {
+ pPopup = pMenu->GetPopupMenu(
+ sal::static_int_cast< USHORT >(aSubMenuId3.GetNum()));
+ pMenu = pPopup;
+ }
+
+ return 0;
+}
+
+void StatementControl::AnimateMouse( Window *pControl, TTHotSpots aWohin )
+{
+ Point aZiel;
+
+ switch (aWohin)
+ {
+ case MitteLinks:
+ {
+ long nHeight = pControl->GetSizePixel().Height();
+ aZiel.X() += 5;
+ aZiel.Y() += nHeight / 2;
+ }
+ break;
+ case Mitte:
+ {
+ Size aSize = pControl->GetOutputSizePixel();
+ aZiel.Move( aSize.Width() / 2, aSize.Height() / 2 );
+ }
+ break;
+ case MitteOben:
+ {
+ long nWidth = pControl->GetSizePixel().Width();
+ aZiel.X() += nWidth / 2;
+ aZiel.Y() += 5;
+ }
+ break;
+ }
+ AnimateMouse( pControl, aZiel );
+}
+
+
+void StatementControl::AnimateMouse( Window *pControl, Point aWohin )
+{
+ Point aAkt = pControl->GetPointerPosPixel();
+ Point aZiel = aWohin;
+
+ long nSteps;
+ Point aDiff = aAkt - aZiel;
+
+ if ( Abs(aDiff.X()) < Abs(aDiff.Y()) )
+ nSteps = Abs(aDiff.Y()) / 5;
+ else
+ nSteps = Abs(aDiff.X()) / 5;
+ if ( nSteps == 0 )
+ return;
+
+ aDiff *= 1000;
+ aDiff /= nSteps;
+
+ StatementList::bExecuting = TRUE; // Bah ist das ein ekliger Hack
+ // Das verhindert, daß schon der nächste Befehl ausgeführt wird.
+
+ for ( ; nSteps ; nSteps-- )
+ {
+ if ( Abs((aAkt - pControl->GetPointerPosPixel()).X()) > 5 ||
+ Abs((aAkt - pControl->GetPointerPosPixel()).Y()) > 5 )
+ nSteps = 1;
+ aAkt = aZiel + aDiff * nSteps / 1000;
+ pControl->SetPointerPosPixel(aAkt);
+ SafeReschedule();
+ }
+ pControl->SetPointerPosPixel(aZiel);
+ StatementList::bExecuting = FALSE; // Bah ist das ein ekliger Hack
+}
+
+
+BOOL StatementControl::MaybeDoTypeKeysDelay( Window *pTestWindow )
+{
+ if ( bDoTypeKeysDelay )
+ {
+ ULONG nTimeWait = nMinTypeKeysDelay;
+ if ( nMaxTypeKeysDelay != nMinTypeKeysDelay )
+ nTimeWait += Time::GetSystemTicks() % ( nMaxTypeKeysDelay - nMinTypeKeysDelay );
+ Timer aTimer;
+ aTimer.SetTimeout( nTimeWait );
+ aTimer.Start();
+ StatementList::bExecuting = TRUE; // Bah ist das ein ekliger Hack
+ // Das verhindert, daß schon der nächste Befehl ausgeführt wird.
+ while ( aTimer.IsActive() )
+ {
+ SafeReschedule( TRUE );
+ }
+ StatementList::bExecuting = FALSE; // Bah ist das ein ekliger Hack
+ if ( !WinPtrValid(pTestWindow ) )
+ {
+ ReportError( aUId, GEN_RES_STR1( S_WINDOW_DISAPPEARED, MethodString( nMethodId ) ) );
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+BOOL StatementControl::HandleVisibleControls( Window *pControl )
+{
+ if( pControl ) // Also auch bei Disabled nicht jedoch bei Invisible
+ {
+ switch( nMethodId )
+ {
+ case M_IsEnabled:
+ pRet->GenReturn ( RET_Value, aUId, IsAccessable(pControl) );
+ break;
+ case M_IsVisible:
+ pRet->GenReturn ( RET_Value, aUId, pControl->IsVisible() );
+ break;
+ case M_GetPosX:
+ if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für FloatingWindows
+ if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für TabDialoge
+ if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für Border
+ if ( (nParams & PARAM_BOOL_1) && bBool1 )
+ pControl = pControl->GetWindow( WINDOW_OVERLAP );
+
+ if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_SPLITWINDOW )
+ {
+ Point aPos = pControl->GetPosPixel();
+ aPos = pControl->GET_REAL_PARENT()->OutputToScreenPixel( aPos );
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)aPos.X() );
+ }
+ else
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetPosPixel().X() );
+ break;
+ case M_GetPosY:
+ if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für FloatingWindows
+ if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für TabDialoge
+ if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für Border
+ if ( (nParams & PARAM_BOOL_1) && bBool1 )
+ pControl = pControl->GetWindow( WINDOW_OVERLAP );
+
+ if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_SPLITWINDOW )
+ {
+ Point aPos = pControl->GetPosPixel();
+ aPos = pControl->GET_REAL_PARENT()->OutputToScreenPixel( aPos );
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)aPos.Y() );
+ }
+ else
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetPosPixel().Y() );
+ break;
+ case M_GetSizeX:
+ if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für FloatingWindows
+ if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für TabDialoge
+ if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für Border
+ if ( (nParams & PARAM_BOOL_1) && bBool1 )
+ pControl = pControl->GetWindow( WINDOW_OVERLAP );
+
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetSizePixel().Width() );
+ break;
+ case M_GetSizeY:
+ if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für FloatingWindows
+ if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für TabDialoge
+ if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für Border
+ if ( (nParams & PARAM_BOOL_1) && bBool1 )
+ pControl = pControl->GetWindow( WINDOW_OVERLAP );
+
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetSizePixel().Height() );
+ break;
+ case M_SnapShot:
+ {
+ if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für FloatingWindows
+ if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für TabDialoge
+ if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
+ pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung für Border
+ if ( (nParams & PARAM_BOOL_1) && bBool1 )
+ pControl = pControl->GetWindow( WINDOW_OVERLAP );
+
+ Bitmap aBmp = pControl->SnapShot();
+ if ( pControl->GetType() == WINDOW_WORKWINDOW )
+ {
+ Point aStart = pControl->GetPosPixel();
+ if ( !(nParams & PARAM_USHORT_4) )
+ {
+ nParams |= PARAM_USHORT_1;
+ nParams |= PARAM_USHORT_2;
+ nParams |= PARAM_USHORT_3;
+ nParams |= PARAM_USHORT_4;
+ nNr1 = (USHORT)-aStart.X();
+ nNr2 = (USHORT)-aStart.Y();
+ nNr3 = (USHORT)pControl->GetSizePixel().Width() + 2*(USHORT)aStart.X();
+ nNr4 = (USHORT)pControl->GetSizePixel().Height() + 2*(USHORT)aStart.Y();
+ }
+ nNr1 = std::max((USHORT)-aStart.X(),nNr1);
+ nNr2 = std::max((USHORT)-aStart.Y(),nNr2);
+ nNr3 = std::min((USHORT)(pControl->GetSizePixel().Width() + 2*(USHORT)aStart.X()),nNr3);
+ nNr4 = std::min((USHORT)(pControl->GetSizePixel().Height() + 2*(USHORT)aStart.Y()),nNr4);
+ }
+ if( nParams & PARAM_USHORT_4 )
+ { // Zuschneiden
+ Point aPt(-nNr1,-nNr2);
+ Size aSz(nNr3,nNr4);
+ VirtualDevice aVDev( *pControl );
+
+ aVDev.SetOutputSizePixel( aSz );
+ aVDev.DrawBitmap( aPt, aBmp );
+ aBmp = aVDev.GetBitmap( Point(), aSz );
+ }
+
+ SvFileStream fOut;
+ fOut.Open(aString1,STREAM_STD_WRITE);
+ aBmp.Write(fOut);
+ if ( fOut.GetError() )
+ ReportError( aUId, GEN_RES_STR1( S_ERROR_SAVING_IMAGE, UniString::CreateFromInt32( fOut.GetError() ) ) );
+ fOut.Close();
+ }
+ break;
+ case M_GetFixedTextCount:
+ {
+ pRet->GenReturn ( RET_Value, aUId, CountWinByRT( pControl, WINDOW_FIXEDTEXT, TRUE ) );
+ }
+ break;
+ case M_GetFixedText:
+ {
+ if( ( nParams & PARAM_USHORT_1 ) == 0 )
+ nNr1 = 1;
+
+ FixedText* pFixedText = (FixedText*)GetWinByRT( pControl, WINDOW_FIXEDTEXT, TRUE, nNr1-1 );
+ if ( pFixedText )
+ pRet->GenReturn ( RET_Value, aUId, pFixedText->GetText() );
+ else
+ ValueOK(aUId, MethodString( nMethodId ),nNr1,CountWinByRT( pControl, WINDOW_FIXEDTEXT, TRUE ) );
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ SendProfile( UIdString( aUId ).Append('.').Append( MethodString( nMethodId ) ) );
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL StatementControl::HandleCommonMethods( Window *pControl )
+{
+ switch( nMethodId ) // Diese können an jedem Window ausgeführt werden
+ {
+ case M_Exists: // Oben schon Behandelt. Unterdrückt hier nur Fehler
+ case M_NotExists:
+ case M_IsEnabled:
+ case M_IsVisible:
+ case M_SnapShot:
+ break;
+ case M_Caption :
+ {
+ if ( pControl->GetText().Len() == 0 && IsDocFrame( pControl->GetWindow( WINDOW_FRAME ) ) )
+ pRet->GenReturn ( RET_Value, aUId, pControl->GetWindow( WINDOW_FRAME )->GetText());
+ else
+ pRet->GenReturn ( RET_Value, aUId, pControl->GetText());
+ }
+ break;
+ case M_GetRT:
+ {
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetType() );
+ }
+ break;
+ case M_TypeKeys:
+ {
+ if( !(nParams & PARAM_USHORT_1) ) // Anzahl wiederholungen
+ nNr1 = 1;
+ if( !(nParams & PARAM_BOOL_1) ) // Follow Focus
+ bBool1 = FALSE; // so bleibt das bisherige Verhalten
+
+ if ( !bBool1 ) // Altes Verhalten
+ pControl->GrabFocus();
+ else // If focus is not inside given control we grab it once.
+ {
+ Window *pFocus = GetpApp()->GetFocusWindow();
+ if ( !pFocus || !pControl->IsWindowOrChild( pFocus, TRUE ) )
+ pControl->GrabFocus();
+ }
+
+
+ // maybe this can get removed since we are using GetPreferredKeyInputWindow()
+ if ( pControl->GetType() == WINDOW_COMBOBOX )
+ { // Bei COMBOBOX an das Edit direkt liefern
+ Window *pTemp = NULL;
+ for ( USHORT i = 0 ; i < pControl->GetChildCount() && !pTemp ; i++ )
+ if ( pControl->GetChild( i )->GetType() == WINDOW_EDIT )
+ pTemp = pControl->GetChild( i );
+ if ( pTemp )
+ pControl = pTemp;
+ }
+
+ Window *pDeliverHere = pControl;
+ for (int j = 0; j < nNr1; j++)
+ for (xub_StrLen i = 0; i < aString1.Len(); i++)
+ {
+ if ( StatementList::bUsePostEvents )
+ { // grab focus every time
+ Window *pFocus = GetpApp()->GetFocusWindow();
+ if ( !pFocus || !pControl->IsWindowOrChild( pFocus, TRUE ) )
+ pControl->GrabFocus();
+ }
+ if ( bBool1 ) // Jedesmal das FocusWindow finden
+ {
+ Window *pFocus = GetpApp()->GetFocusWindow();
+ if ( pFocus && pControl->IsWindowOrChild( pFocus, TRUE ) )
+ pDeliverHere = pFocus;
+ else // sonst fallback auf das Basisfenster
+ pDeliverHere = pControl;
+ }
+ pDeliverHere = pDeliverHere->GetPreferredKeyInputWindow();
+ KeyEvent aEvent;
+ if ( ((USHORT)aString1.GetChar(i)) <= 7 )
+ {
+ USHORT nVal = 0;
+ switch (aString1.GetChar(i))
+ {
+ case 1: nVal = aString1.GetChar(i+1) + (aString1.GetChar(i+2) << 8);
+ i += 2;
+ break;
+ case 3: nVal = (aString1.GetChar(i+1) << 8);
+ i++;
+ break;
+ case 5: nVal = aString1.GetChar(i+1);
+ i++;
+ break;
+ case 7: nVal = 0;
+ break;
+ }
+ // #105672#
+ // find out the keycode
+ USHORT nKeygroup = nVal & KEYGROUP_TYPE;
+ USHORT nKeyCode = nVal & KEY_CODE;
+ sal_Unicode aCh;
+ switch (nKeygroup)
+ {
+ case KEYGROUP_NUM:
+ aCh = nKeyCode - KEY_0 + '0';
+ break;
+ case KEYGROUP_ALPHA:
+ aCh = nKeyCode - KEY_A;
+ if ( nVal & KEY_MOD1 )
+ {}
+ else if ( nVal & KEY_SHIFT )
+ aCh += 'A';
+ else
+ aCh += 'a';
+ break;
+ case KEYGROUP_MISC:
+ { // CR ESC TAB BACK
+ ByteString aPrintableMisc("\x0d\x1b\x09\x08 **+-*/.,<>=",16);
+ if ( nKeyCode-KEY_RETURN < aPrintableMisc.Len()
+ && nKeyCode != KEY_INSERT && nKeyCode != KEY_DELETE )
+ aCh = aPrintableMisc.GetChar( nKeyCode-KEY_RETURN );
+ else
+ aCh = 0;
+ }
+ break;
+ case KEYGROUP_CURSOR:
+ case KEYGROUP_FKEYS:
+ default:
+ aCh = 0;
+ }
+ aEvent = KeyEvent(aCh,KeyCode(nVal & 0xFFF,nVal & 0xF000));
+ }
+ else
+ {
+ // CR ESC TAB BACK
+ String aPrintableMisc = CUniString("\x0d\x1b\x09\x08 xx+-*/.,<>=");
+ sal_Unicode aCh = aString1.GetChar(i);
+ if ( aCh >= 'a' && aCh <= 'z' )
+ aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_ALPHA + aCh-'a', 0));
+ else if ( aCh >= 'A' && aCh <= 'Z' )
+ aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_ALPHA + aCh-'a', KEY_SHIFT));
+ else if ( aCh >= '0' && aCh <= '9' )
+ aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_NUM + aCh-'0', 0));
+ else if ( aPrintableMisc.Search(aCh) != STRING_NOTFOUND )
+ aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_MISC + (USHORT)aPrintableMisc.Search(aCh), 0));
+ else // Sollte eigentlich nicht auftreten
+ aEvent = KeyEvent(aCh, KeyCode());
+ }
+ ImplKeyInput( pDeliverHere, aEvent );
+ if ( !MaybeDoTypeKeysDelay( pControl ) )
+ break;
+ else
+ SafeReschedule();SafeReschedule();SafeReschedule();
+ }
+ }
+ break;
+
+#define CalcMouseButton\
+ USHORT nButton = MOUSE_LEFT;\
+ if ( (nParams & PARAM_USHORT_3) )\
+ {\
+ switch ( nNr3 )\
+ {\
+ case 1: nButton = MOUSE_LEFT; break;\
+ case 2: nButton = MOUSE_MIDDLE; break;\
+ case 3: nButton = MOUSE_RIGHT; break;\
+ }\
+ }\
+
+ case M_MouseDown:
+ {
+ CalcMouseButton;
+ Size aS = pControl->GetOutputSizePixel();
+ Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
+ Window *pActualWin = pControl->FindWindow( aPos );
+// AnimateMouse( pControl, aPos );
+
+ if ( pActualWin )
+ aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
+// aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
+ else
+ pActualWin = pControl;
+
+ AnimateMouse( pActualWin, aPos );
+ pActualWin->GrabFocus();
+ MouseEvent aMEvnt(aPos,1,MOUSE_SIMPLECLICK|MOUSE_SELECT,nButton);
+ ImplMouseButtonDown( pActualWin, aMEvnt );
+ }
+ break;
+ case M_MouseUp:
+ {
+ CalcMouseButton;
+ Size aS = pControl->GetOutputSizePixel();
+ Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
+ Window *pActualWin = pControl->FindWindow( aPos );
+
+ if ( pActualWin )
+ aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
+// aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
+ else
+ pActualWin = pControl;
+
+ AnimateMouse( pActualWin, aPos );
+// pActualWin->GrabFocus();
+ MouseEvent aMEvt( aPos, 1, MOUSE_SIMPLECLICK|MOUSE_SELECT, nButton );
+ ImplMouseButtonUp( pActualWin, aMEvt );
+ }
+ break;
+ case M_MouseMove:
+ {
+ CalcMouseButton;
+ Size aS = pControl->GetOutputSizePixel();
+ Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
+ Window *pActualWin = pControl->FindWindow( aPos );
+
+ if ( pActualWin )
+ {
+ aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
+// aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
+ }
+ else
+ pActualWin = pControl;
+
+ AnimateMouse( pActualWin, aPos );
+// pActualWin->GrabFocus();
+ MouseEvent aMEvt( aPos, 0, MOUSE_SIMPLEMOVE|MOUSE_DRAGMOVE, nButton );
+ ImplMouseMove( pActualWin, aMEvt );
+ }
+ break;
+ case M_MouseDoubleClick:
+ {
+ CalcMouseButton;
+ Size aS = pControl->GetOutputSizePixel();
+ Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
+ Window *pActualWin = pControl->FindWindow( aPos );
+
+ if ( pActualWin )
+ {
+ aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
+// aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
+ }
+ else
+ pActualWin = pControl;
+
+ AnimateMouse( pActualWin, aPos );
+ pActualWin->GrabFocus();
+ MouseEvent aMEvnt;
+ aMEvnt = MouseEvent(aPos,1,MOUSE_SIMPLECLICK|MOUSE_SELECT,nButton);
+ ImplMouseButtonDown( pActualWin, aMEvnt );
+ ImplMouseButtonUp ( pActualWin, aMEvnt );
+ aMEvnt = MouseEvent(aPos,2,MOUSE_SIMPLECLICK|MOUSE_SELECT,nButton);
+ ImplMouseButtonDown( pActualWin, aMEvnt );
+ ImplMouseButtonUp ( pActualWin, aMEvnt );
+ }
+ break;
+ case M_DisplayPercent:
+ {
+ ModelessDialog *pDlg = new ModelessDialog(NULL);
+ pDlg->SetOutputSizePixel(Size(100,30));
+
+ Edit *pMyEd = new Edit(pDlg,WB_CENTER | WB_BORDER );
+ pMyEd->SetSizePixel(Size(100,30));
+ pDlg->SetText(UniString("Schließen", RTL_TEXTENCODING_ISO_8859_1));
+ pDlg->Show();
+ pMyEd->Show();
+ ULONG nTime = Time().GetTime();
+
+ while (pDlg->IsVisible())
+ {
+ pDlg->ToTop();
+ for (int i = 1 ; i<10 ; i++)
+ SafeReschedule();
+ Point Pos = pControl->GetPointerPosPixel();
+ Size Siz=pControl->GetOutputSizePixel();
+ if ( Time().GetTime() - nTime > 10 )
+ {
+ nTime = Time().GetTime();
+ pMyEd->SetText(UniString::CreateFromInt32(Pos.X()*100/Siz.Width()).AppendAscii("%x").Append( UniString::CreateFromInt32(Pos.Y()*100/Siz.Height()) ).Append('%'));
+ }
+ }
+
+ delete pMyEd;
+ delete pDlg;
+ }
+ break;
+ case M_OpenContextMenu:
+ {
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+ Point aPos;
+ ToolBox* pTB = (ToolBox*)pControl;
+ if ( (pControl->GetType() == WINDOW_TOOLBOX) && pTB->IsMenuEnabled() )
+ {
+ pTB->ExecuteCustomMenu();
+/* Rectangle aRect = pTB->GetMenubuttonRect();
+ AnimateMouse( pControl, aRect.Center() );
+ MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
+ ImplMouseButtonDown( pTB, aMEvnt );*/
+ }
+ else
+ {
+ BOOL bAtMousePos = ( nParams & PARAM_BOOL_1 ) && bBool1;
+ if ( bAtMousePos )
+ {
+ aPos = pControl->GetPointerPosPixel();
+ Window *pActualWin = pControl->FindWindow( aPos );
+
+ if ( pActualWin )
+ {
+ aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
+ // aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
+ pControl = pActualWin;
+ }
+ }
+ CommandEvent aEvent( aPos, COMMAND_CONTEXTMENU, bAtMousePos );
+ ImplCommand( pControl, aEvent );
+ }
+ }
+ break;
+ case M_UseMenu:
+ {
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+
+ while ( pControl && !( ( pControl->GetType() == WINDOW_SYSWINDOW || pControl->GetType() == WINDOW_WORKWINDOW ) && ControlOK( pControl, "" ) ) )
+ pControl = pControl->GET_REAL_PARENT();
+
+ if ( pControl && ((SystemWindow*)pControl)->GetMenuBar() )
+ pMenuWindow = ((SystemWindow*)pControl);
+ else
+ ReportError( GEN_RES_STR1( S_NO_MENU, MethodString( nMethodId ) ) );
+ }
+ break;
+ case M_FadeIn:
+ case M_FadeOut:
+ case M_Pin:
+ case M_IsFadeIn:
+ case M_IsPin:
+ {
+ WindowAlign aWindowAlign = WINDOWALIGN_LEFT;
+ if ( (nParams & PARAM_USHORT_1) )
+ {
+ switch ( nNr1 )
+ {
+ case CONST_ALIGN_LEFT:
+ aWindowAlign = WINDOWALIGN_LEFT;
+ break;
+ case CONST_ALIGN_TOP:
+ aWindowAlign = WINDOWALIGN_TOP;
+ break;
+ case CONST_ALIGN_RIGHT:
+ aWindowAlign = WINDOWALIGN_RIGHT;
+ break;
+ case CONST_ALIGN_BOTTOM:
+ aWindowAlign = WINDOWALIGN_BOTTOM;
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR1( S_INVALID_POSITION, MethodString( nMethodId ) ) );
+ }
+ }
+
+ Window* pTemp = NULL;
+ while ( !pTemp && pControl )
+ {
+ pTemp = GetFadeSplitWin( pControl, aWindowAlign );
+ pControl = pControl->GET_REAL_PARENT();
+ }
+
+ if ( !pTemp )
+ {
+ ReportError( aUId, GEN_RES_STR1( S_SPLITWIN_NOT_FOUND, MethodString( nMethodId ) ) );
+ break;
+ }
+
+ pControl = pTemp; // So daß wir unten ohne Fehler durchkommen
+ SplitWindow *pSW = (SplitWindow*) pTemp;
+
+// Rectangle GetAutoHideRect() const;
+// Rectangle GetFadeInRect() const;
+// Rectangle GetFadeOutRect() const;
+
+ switch( nMethodId )
+ {
+ case M_FadeIn:
+ if ( pSW->IsFadeInButtonVisible() )
+ pSW->FadeIn();
+ break;
+ case M_FadeOut:
+ if ( pSW->IsFadeOutButtonVisible() )
+ pSW->FadeOut();
+ break;
+ case M_Pin:
+ if ( ( pSW->GetAutoHideState() && bBool1 )
+ || ( !pSW->GetAutoHideState() && !bBool1 ) )
+ {
+ MouseEvent aMEvnt;
+ Point aPt( pSW->GetAutoHideRect().Center() );
+ aMEvnt = MouseEvent( aPt,1,MOUSE_SIMPLECLICK,MOUSE_LEFT );
+ ImplMouseButtonDown( pControl, aMEvnt, FORCE_DIRECT_CALL );
+ ImplMouseButtonUp ( pControl, aMEvnt, FORCE_DIRECT_CALL );
+ }
+// pSW->AutoHide();
+ break;
+ case M_IsFadeIn:
+ pRet->GenReturn ( RET_Value, aUId, pSW->IsFadeOutButtonVisible() );
+ break;
+ case M_IsPin:
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)!pSW->GetAutoHideState() );
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
+ }
+ SendProfile( UIdString( aUId ).Append('.').Append( MethodString( nMethodId ) ) );
+ }
+ break;
+ case M_StatusGetText:
+ case M_StatusIsProgress:
+ case M_StatusGetItemCount:
+ case M_StatusGetItemId:
+ {
+ StatusBar *pStatus = NULL;
+ while ( !pStatus && pControl )
+ {
+ pStatus = (StatusBar*)GetWinByRT( pControl, WINDOW_STATUSBAR, TRUE );
+ pControl = pControl->GET_REAL_PARENT();
+ }
+
+ if ( !pStatus )
+ {
+ ReportError( aUId, GEN_RES_STR1( S_NO_STATUSBAR, MethodString( nMethodId ) ) );
+ break;
+ }
+
+ switch ( nMethodId )
+ {
+ case M_StatusGetText:
+ {
+ if ( (nParams & PARAM_USHORT_1) )
+ {
+ if ( pStatus->AreItemsVisible() )
+ pRet->GenReturn ( RET_Value, aUId, String(pStatus->GetItemText(nNr1)));
+ else
+ ReportError( aUId, GEN_RES_STR1( S_ITEMS_INVISIBLE, MethodString( nMethodId ) ) );
+ }
+ else
+ {
+ if ( pStatus->AreItemsVisible() )
+ {
+ if ( pStatus->GetItemCount() == 1 )
+ {
+ pRet->GenReturn ( RET_Value, aUId, pStatus->GetItemText( pStatus->GetItemId(0) ));
+ }
+ else
+ {
+ pRet->GenReturn ( RET_Value, aUId, String() );
+ }
+ }
+ else
+ pRet->GenReturn ( RET_Value, aUId, (String)pStatus->GetText() );
+ }
+ }
+ break;
+ case M_StatusIsProgress:
+ {
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)pStatus->IsProgressMode() );
+ }
+ break;
+ case M_StatusGetItemCount:
+ if ( pStatus->AreItemsVisible() )
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pStatus->GetItemCount()));
+ else
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
+ break;
+ case M_StatusGetItemId:
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pStatus->GetItemCount()) )
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pStatus->GetItemId(nNr1-1)));
+ break;
+ }
+ }
+ break;
+ case M_HasScrollBar:
+ case M_IsScrollBarEnabled:
+ {
+ if ( (nParams | PARAM_USHORT_1) != PARAM_USHORT_1 ) // so there are other params
+ {
+ ReportError( aUId, GEN_RES_STR0( S_INVALID_PARAMETERS ) );
+ break;
+ }
+
+ if( !(nParams & PARAM_USHORT_1) )
+ nNr1 = CONST_ALIGN_RIGHT; // default is right Scrollbar(vertical)
+
+ if ( (nNr1 != CONST_ALIGN_RIGHT) && (nNr1 != CONST_ALIGN_BOTTOM) )
+ {
+ ReportError( aUId, GEN_RES_STR1( S_INVALID_POSITION, MethodString( nMethodId ) ) );
+ break;
+ }
+
+ ScrollBar *pScroll = NULL;
+
+ USHORT nSteps = 2;
+ while ( !pScroll && pControl && nSteps-- )
+ {
+ pScroll = GetScrollBar( pControl, nNr1, TRUE );
+ pControl = pControl->GET_REAL_PARENT();
+ }
+
+ switch ( nMethodId )
+ {
+ case M_HasScrollBar:
+ {
+ if ( pScroll )
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)TRUE );
+ else
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)FALSE );
+ }
+ break;
+ case M_IsScrollBarEnabled:
+ {
+ if ( !pScroll )
+ {
+ ReportError( aUId, GEN_RES_STR1( S_NO_SCROLLBAR, MethodString( nMethodId ) ) );
+ break;
+ }
+ pRet->GenReturn ( RET_Value, aUId, pScroll->IsEnabled() );
+ }
+ break;
+ }
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+
+BOOL StatementControl::Execute()
+{
+ Window *pControl;
+ BOOL bStatementDone = TRUE;
+
+
+ if ( IsError )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Skipping Window: " );
+ m_pDbgWin->AddText( aUId.GetText() );
+ m_pDbgWin->AddText( " Method: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
+ m_pDbgWin->AddText( "\n" );
+ #endif
+ Advance();
+ delete this;
+ return TRUE;
+ }
+
+ InitProfile();
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Executing Window: " );
+ m_pDbgWin->AddText( aUId.GetText() );
+ m_pDbgWin->AddText( " Method: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
+ m_pDbgWin->AddText( "\n" );
+#endif
+
+
+ if ( aUId.Matches( UID_ACTIVE ) )
+ pControl = GetAnyActive();
+ else
+ {
+ BOOL bSearchButtonOnToolbox = (nParams == PARAM_NONE) && ((M_Click == nMethodId) || (M_TearOff == nMethodId) || (M_IsEnabled == nMethodId) || (M_OpenMenu == nMethodId));
+ bSearchButtonOnToolbox |= (nParams == PARAM_USHORT_1) && (M_GetState == nMethodId);
+ if ( nMethodId == M_TypeKeys || nMethodId == M_MouseDown
+ || nMethodId == M_MouseUp || nMethodId == M_MouseMove
+ || nMethodId == M_SnapShot )
+ {
+ pControl = NULL;
+ if ( /*(nMethodId == M_SnapShot || nMethodId == M_TypeKeys) &&*/ !pControl )
+ pControl = SearchTree( aUId ,bSearchButtonOnToolbox );
+ }
+ else
+ pControl = SearchTree( aUId ,bSearchButtonOnToolbox );
+ }
+
+
+ if ( pControl && pControl->GetType() == WINDOW_TOOLBOX )
+ {
+ if ( !aUId.Matches( pControl->GetSmartUniqueOrHelpId() ) )
+ { // Also wenn wir irgendwas auf einer Toolbox gefunden haben
+ switch ( nMethodId )
+ {
+ case M_Click:
+ case M_TearOff:
+ case M_OpenMenu:
+ case M_GetState:
+ break;
+ case M_IsEnabled:
+ nMethodId = _M_IsEnabled; // Umlabeln, da die Behandlung essentiell anders ist!
+ break;
+ default:
+ pControl = NULL;
+ }
+ }
+ }
+
+
+ switch ( nMethodId )
+ {
+ case M_Exists:
+ case M_NotExists:
+ Time aT;
+ USHORT aSeconds = aT.GetMin()*60+aT.GetSec();
+ if ( !bBool2 ) // wurde im Konstruktor auf FALSE gesetzt
+ {
+ bBool2 = TRUE;
+ nNr2 = aSeconds;
+ if( !(nParams & PARAM_USHORT_1) )
+ nNr1 = 0; // defaultmäßig sofort zurück
+ }
+ if ( aSeconds < nNr2 ) // Falls die Stunde umgesprungen ist
+ aSeconds += 60*60;
+
+ if ( /* !IsAccessable(pControl)#87019# */ !pControl || !pControl->IsVisible() )
+ pControl = NULL;
+ if ( ((nMethodId == M_Exists) && pControl) ||
+ ((nMethodId == M_NotExists) && !pControl) )
+ { // Wenn Bedingung erfüllt
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)TRUE );
+ }
+ else
+ if ( aSeconds <= nNr2 + nNr1 ) // Zeit ist noch nicht abgelaufen
+ return FALSE;
+ else
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)FALSE );
+
+ Advance();
+ delete this;
+ return TRUE;
+// break;
+ }
+
+
+ short nRT = 0;
+
+ if( pControl ) // Das Fenster Existiert irgendwo, kann aber auch hidden sein!
+ {
+ nRT = ImpGetRType( pControl, aUId ); // If not Numeric pControl is used
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Type is: " );
+ m_pDbgWin->AddText( String::CreateFromInt32( nRT ) );
+ m_pDbgWin->AddText( "\n" );
+#endif
+ }
+
+ if ( nRT == C_Window && // Search for WorkWindow to satisfy these commands
+ ( nMethodId == M_Close
+// || nMethodId == M_Size
+// || nMethodId == M_Move
+ || nMethodId == M_IsMax
+ || nMethodId == M_IsMin
+ || nMethodId == M_IsRestore
+ || nMethodId == M_Minimize
+ || nMethodId == M_Maximize
+ || nMethodId == M_Restore ) )
+ {
+ Window* pNewControl = pControl;
+ while ( pNewControl && pNewControl->GetType() != WINDOW_WORKWINDOW )
+ pNewControl = pNewControl->GET_REAL_PARENT();
+
+ if ( pNewControl )
+ {
+ pControl = pNewControl;
+ nRT = C_WorkWin;
+ }
+ }
+
+
+ if ( (!ControlOK( pControl, "" )) && ( nMethodId != M_SnapShot ) && (nRetryCount--))
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( CUniString("Reschedule command (").Append( UniString::CreateFromInt32(nRetryCount) ).AppendAscii(")\n") );
+#endif
+ return FALSE;
+ }
+
+ if( ControlOK( pControl, "" ) )
+ {
+ if ( nMethodId == M_OpenContextMenu && !bBool2 )
+ {
+ pControl->GrabFocus(); // to get asyncron focus on unix
+ bBool2 = TRUE;
+ return FALSE;
+ }
+ // TODO: handle GetFocus for all Methods and Windows like this (remove part below)
+ // See for impact of changed focus for HandleVisibleControls() (taking Snapshots might be different, possible exclude those methods)
+ if (( (nRT == C_TreeListBox) && !bBool2 )
+ && nMethodId != M_TypeKeys // TypeKeys macht das selbst, falls eigenes Focushandling gewünscht
+ && nMethodId != M_MouseDown
+ && nMethodId != M_MouseUp
+ && nMethodId != M_MouseMove
+ /*&& nMethodId != M_MouseDoubleClick*/ )
+ {
+ if ( !pControl->HasFocus() )
+ {
+ pControl->GrabFocus();
+ int i = 10;
+ while ( i-- && !pControl->HasFocus() ) // reschedule a bit
+ {
+ SafeReschedule();
+ if ( !WinPtrValid( pControl ) )
+ return FALSE;
+ }
+ if ( !pControl->HasFocus() ) // to get asyncronous focus
+ {
+ bBool2 = TRUE;
+ return FALSE;
+ }
+ }
+ }
+ }
+
+ Advance();
+
+ if ( HandleVisibleControls( pControl ) )
+ {
+ delete this;
+ return TRUE;
+ }
+ if( ControlOK( pControl, "Window/Control" ) )
+ {
+ if (((( nRT < C_TabPage && nRT > C_TabControl )
+ || nRT == C_PatternBox
+ || nRT == C_ToolBox
+ || nRT == C_ValueSet
+ || nRT == C_Control
+ || nRT == C_TreeListBox
+ )
+ || nMethodId == M_OpenContextMenu )
+ && nMethodId != M_TypeKeys // TypeKeys macht das selbst, falls eigenes Focushandling gewünscht
+ && nMethodId != M_MouseDown
+ && nMethodId != M_MouseUp
+ && nMethodId != M_MouseMove
+ /*&& nMethodId != M_MouseDoubleClick*/ )
+ pControl->GrabFocus();
+
+/* leads to problems because settext sets the text whereas typekeys adds to the text.
+ if ( bDoTypeKeysDelay && nMethodId == M_SetText && ( nParams & PARAM_STR_1 ) )
+ { // Hier wird das Statement auf ein TypeKeys umgebogen
+ nMethodId = M_TypeKeys;
+ nParams = PARAM_BOOL_1 | PARAM_STR_1;
+ bBool1 = TRUE;
+ pControl->GrabFocus();
+ }
+*/
+ if ( !HandleCommonMethods( pControl ) )
+ {
+ switch( nRT )
+ {
+ case C_TabControl:
+ switch( nMethodId )
+ {
+ case M_GetPageId:
+ if ( (nParams & PARAM_USHORT_1) )
+ {
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((TabControl*)pControl)->GetPageCount() ) )
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)((TabControl*)pControl)->GetPageId(nNr1-1));
+ }
+ else
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)((TabControl*)pControl)->GetCurPageId());
+ break;
+ case M_GetPageCount:
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)((TabControl*)pControl)->GetPageCount());
+ break;
+ case M_SetPageId:
+ if (((TabControl*)pControl)->GetCurPageId())
+ ((TabControl*)pControl)->DeactivatePage();
+ ((TabControl*)pControl)->SetCurPageId( nNr1 );
+ ((TabControl*)pControl)->ActivatePage();
+ break;
+ case M_SetPageNr:
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((TabControl*)pControl)->GetPageCount() ) )
+ {
+ if (((TabControl*)pControl)->GetCurPageId())
+ ((TabControl*)pControl)->DeactivatePage();
+ ((TabControl*)pControl)->SetCurPageId( ((TabControl*)pControl)->GetPageId( nNr1-1 ) );
+ ((TabControl*)pControl)->ActivatePage();
+ }
+ break;
+ case M_GetPage:
+ pRet->GenReturn ( RET_Value, aUId, ((TabControl*)pControl)->GetTabPage(((TabControl*)pControl)->GetCurPageId())->GetSmartUniqueOrHelpId().GetText());
+ break;
+ case M_SetPage :
+ { // Wegen lokaler Variablen
+ TabControl *pTControl = ((TabControl*)pControl);
+ USHORT nActive = pTControl->GetCurPageId();
+ USHORT i,anz;
+ SmartId aID;
+ SmartId aWantedID;
+ if ( (nParams & PARAM_ULONG_1) )
+ {
+ aWantedID = SmartId( nLNr1 );
+ }
+ else if ( (nParams & PARAM_STR_1) )
+ {
+ aWantedID = SmartId( aString1 );
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
+
+ i = pTControl->GetPagePos( pTControl->GetCurPageId() );
+ for ( anz=0 ; anz < pTControl->GetPageCount() && !aID.Matches( aWantedID ) ; anz++ )
+ {
+ pTControl->SelectTabPage( pTControl->GetPageId(i) );
+ /*if (pTControl->GetCurPageId())
+ pTControl->DeactivatePage();
+ pTControl->SetCurPageId( pTControl->GetPageId(i) );
+ pTControl->ActivatePage();*/
+ aID = pTControl->GetTabPage(pTControl->GetCurPageId())->GetSmartUniqueOrHelpId();
+ i++;
+ if ( i >= pTControl->GetPageCount() )
+ i = 0;
+ if ( !MaybeDoTypeKeysDelay( pTControl ) || !MaybeDoTypeKeysDelay( pTControl ) || !MaybeDoTypeKeysDelay( pTControl ) ) // 3 Mal aufrufen
+ break;
+ }
+ if ( !aID.Matches( aWantedID ) )
+ {
+ pTControl->SelectTabPage( nActive );
+ /*if (pTControl->GetCurPageId())
+ pTControl->DeactivatePage();
+ pTControl->SetCurPageId( nActive );
+ pTControl->ActivatePage();*/
+ ReportError( aWantedID, GEN_RES_STR1( S_TABPAGE_NOT_FOUND, MethodString( nMethodId ) ) );
+ }
+ }
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TabControl" ) );
+ break;
+ }
+ break;
+ case C_RadioButton:
+ case C_ImageRadioButton:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteLinks);
+ break;
+ case M_IsChecked :
+ pRet->GenReturn ( RET_Value, aUId, ((RadioButton*)pControl)->IsChecked());
+ break;
+ case M_Check :
+ ((RadioButton*)pControl)->Check();
+ ((RadioButton*)pControl)->Click();
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "RadioButton" ) );
+ break;
+ }
+ break;
+ case C_CheckBox:
+ case C_TriStateBox:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteLinks);
+ break;
+ case M_IsChecked :
+ pRet->GenReturn ( RET_Value, aUId, comm_BOOL( ((TriStateBox*)pControl)->GetState() == STATE_CHECK) );
+ break;
+ case M_IsTristate :
+ pRet->GenReturn ( RET_Value, aUId, comm_BOOL( ((TriStateBox*)pControl)->GetState() == STATE_DONTKNOW) );
+ break;
+ case M_GetState :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((TriStateBox*)pControl)->GetState()));
+ break;
+ case M_Check :
+ ((TriStateBox*)pControl)->SetState( STATE_CHECK );
+ ((TriStateBox*)pControl)->Click();
+ break;
+ case M_UnCheck :
+ ((TriStateBox*)pControl)->SetState( STATE_NOCHECK );
+ ((TriStateBox*)pControl)->Click();
+ break;
+ case M_TriState :
+ if ( ((TriStateBox*)pControl)->IsTriStateEnabled() )
+ {
+ ((TriStateBox*)pControl)->SetState( STATE_DONTKNOW );
+ ((TriStateBox*)pControl)->Click();
+ }
+ else
+ {
+ ReportError( aUId, GEN_RES_STR0( S_TRISTATE_NOT_ALLOWED ) );
+ }
+ break;
+ case M_Click :
+ {
+ TriStateBox *pTB = ((TriStateBox*)pControl);
+ if ( pTB->GetState() == STATE_NOCHECK )
+ pTB->SetState( STATE_CHECK );
+ else if ( pTB->GetState() == STATE_CHECK )
+ {
+ if ( pTB->IsTriStateEnabled() )
+ pTB->SetState( STATE_DONTKNOW );
+ else
+ pTB->SetState( STATE_NOCHECK );
+ }
+ else
+ pTB->SetState( STATE_NOCHECK );
+ pTB->Click();
+ }
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TriStateBox" ) );
+ break;
+ }
+ break;
+ case C_Edit:
+ case C_MultiLineEdit:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, Mitte);
+ break;
+ case M_GetText :
+ pRet->GenReturn ( RET_Value, aUId, ((Edit*)pControl)->GetText());
+ break;
+ case M_IsWritable:
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((Edit*)pControl)->IsReadOnly() );
+ break;
+ default:
+ if ( ! ((Edit*)pControl)->IsReadOnly() )
+ {
+ switch( nMethodId )
+ {
+ case M_SetText :
+ ((Edit*)pControl)->SetText( aString1 );
+ if ( nRT == C_MultiLineEdit ) // since SetModifyFlag is not virtual we have to do this
+ ((MultiLineEdit*)pControl)->SetModifyFlag();
+ else
+ ((Edit*)pControl)->SetModifyFlag();
+ ((Edit*)pControl)->Modify();
+ if ( ((Edit*)pControl)->GetText().CompareTo(aString1) != COMPARE_EQUAL )
+ ReportError( aUId, GEN_RES_STR1( S_ERROR_IN_SET_TEXT, MethodString( nMethodId ) ) );
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "(MultiLine)Edit" ) );
+ break;
+ }
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1c( S_ATTEMPT_TO_WRITE_READONLY, "(MultiLine)Edit" ) );
+ }
+ break;
+ case C_MultiListBox:
+ case C_ListBox:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_GetSelCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ListBox*)pControl)->GetSelectEntryCount()));
+ break;
+ case M_GetSelIndex :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ {
+ if ( ((ListBox*)pControl)->GetSelectEntryCount() == 0 )
+ {
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
+ break;
+ }
+ nNr1 = 1;
+ }
+ ValueOK(aUId, MethodString( nMethodId ),nNr1,((ListBox*)pControl)->GetSelectEntryCount());
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ListBox*)pControl)->GetSelectEntryPos(nNr1-1)) +1);
+ break;
+ case M_GetSelText :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ pRet->GenReturn ( RET_Value, aUId, ((ListBox*)pControl)->GetSelectEntry(nNr1-1));
+ break;
+ case M_GetItemCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ListBox*)pControl)->GetEntryCount()));
+ break;
+ case M_GetItemText :
+ pRet->GenReturn ( RET_Value, aUId, ((ListBox*)pControl)->GetEntry(nNr1-1));
+ break;
+ case M_Select:
+ case M_MultiSelect:
+ {
+ BOOL bUnselectBeforeSelect = ( nMethodId == M_Select );
+ BOOL bFehler = FALSE;
+ if ( ! (nParams & PARAM_BOOL_1) )
+ bBool1 = TRUE;
+
+ if ( nMethodId == M_MultiSelect && nRT == C_ListBox )
+ {
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ListBox" ) );
+ bFehler = TRUE;
+ }
+
+ if ( !bBool1 && nMethodId == M_Select )
+ {
+ ReportError( aUId, GEN_RES_STR1( S_NO_SELECT_FALSE, MethodString( nMethodId ) ) );
+ bFehler = TRUE;
+ }
+
+ if ( !bFehler )
+ {
+ if( nParams & PARAM_STR_1 )
+ {
+ ListBox *pLB = ((ListBox*)pControl);
+ USHORT nPos;
+ if ( (nPos = pLB->GetEntryPos( aString1 )) == LISTBOX_ENTRY_NOTFOUND )
+ ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
+ else
+ {
+ if ( bUnselectBeforeSelect )
+ pLB->SetNoSelection();
+ pLB->SelectEntryPos( nPos, bBool1 );
+ if ( pLB->IsEntryPosSelected( nPos ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
+ ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), aString1 ) );
+ }
+ }
+ else
+ {
+ ListBox *pLB = ((ListBox*)pControl);
+ pLB = static_cast<ListBox*>(pControl);
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pLB->GetEntryCount()) )
+ {
+ if ( bUnselectBeforeSelect )
+ pLB->SetNoSelection();
+ pLB->SelectEntryPos( nNr1-1, bBool1 );
+ if ( pLB->IsEntryPosSelected( nNr1-1 ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
+ ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), UniString::CreateFromInt32( nNr1 ) ) );
+ }
+ }
+ ((ListBox*)pControl)->Select();
+ }
+ }
+ break;
+ case M_SetNoSelection :
+ ((ListBox*)pControl)->SetNoSelection();
+ ((ListBox*)pControl)->Select();
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "(Multi)ListBox" ) );
+ break;
+ }
+ break;
+ case C_ComboBox:
+ case C_PatternBox:
+ case C_NumericBox:
+ case C_MetricBox:
+ case C_CurrencyBox:
+ case C_DateBox:
+ case C_TimeBox:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_GetSelText :
+ pRet->GenReturn ( RET_Value, aUId, ((ComboBox*)pControl)->GetText());
+ break;
+ case M_GetSelIndex :
+ {
+ USHORT nPos = ((ComboBox*)pControl)->GetEntryPos(((ComboBox*)pControl)->GetText());
+ if ( nPos == COMBOBOX_ENTRY_NOTFOUND )
+ nPos = 0;
+ else
+ nPos++;
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG) nPos);
+ }
+ break;
+ case M_GetItemCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ComboBox*)pControl)->GetEntryCount()));
+ break;
+ case M_GetItemText :
+ pRet->GenReturn ( RET_Value, aUId, ((ComboBox*)pControl)->GetEntry(nNr1-1));
+ break;
+ case M_IsWritable:
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((ComboBox*)pControl)->IsReadOnly() );
+ break;
+ case M_Select :
+ if( nParams & PARAM_USHORT_1 )
+ {
+ if ( !ValueOK(aUId, MethodString( nMethodId ),nNr1,((ComboBox*)pControl)->GetEntryCount()) )
+ break;
+ aString1 = ((ComboBox*)pControl)->GetEntry(nNr1-1);
+ }
+ else
+ {
+ if ( ((ComboBox*)pControl)->GetEntryPos( aString1 ) == COMBOBOX_ENTRY_NOTFOUND )
+ {
+ ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
+ break;
+ }
+ }
+
+
+ ((ComboBox*)pControl)->SetText( aString1 );
+ ((ComboBox*)pControl)->SetModifyFlag();
+ ((ComboBox*)pControl)->Modify();
+ break;
+ case M_SetText :
+ if ( ! ((ComboBox*)pControl)->IsReadOnly() )
+ {
+ if ( ! (nParams & PARAM_STR_1) )
+ aString1 = String();
+ ((ComboBox*)pControl)->SetText( aString1 );
+ ((ComboBox*)pControl)->SetModifyFlag();
+ ((ComboBox*)pControl)->Modify();
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1c( S_ATTEMPT_TO_WRITE_READONLY, "ComboBox" ) );
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ComboBox" ) );
+ break;
+ }
+ break;
+ case C_PushButton:
+ case C_OkButton:
+ case C_CancelButton:
+ case C_ImageButton:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, Mitte);
+ break;
+ case M_Click :
+ ((PushButton*)pControl)->Click();
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "PushButton" ) );
+ break;
+ }
+ break;
+ case C_MoreButton:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, Mitte);
+ break;
+ case M_IsOpen :
+ pRet->GenReturn ( RET_Value, aUId, ((MoreButton*)pControl)->GetState());
+ break;
+ case M_Click :
+ ((MoreButton*)pControl)->Click();
+ break;
+ case M_Open :
+ ((MoreButton*)pControl)->SetState(TRUE);
+ break;
+ case M_Close :
+ ((MoreButton*)pControl)->SetState(FALSE);
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MoreButton" ) );
+ break;
+ }
+ break;
+ case C_SpinField:
+ case C_PatternField:
+ case C_NumericField:
+ case C_MetricField:
+ case C_CurrencyField:
+ case C_DateField:
+ case C_TimeField:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, Mitte);
+ break;
+ case M_GetText :
+ pRet->GenReturn ( RET_Value, aUId, ((SpinField*)pControl)->GetText());
+ break;
+ case M_IsWritable:
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((SpinField*)pControl)->IsReadOnly() );
+ break;
+ case M_SetText :
+ if ( ! ((SpinField*)pControl)->IsReadOnly() )
+ {
+ ((SpinField*)pControl)->SetText( aString1 );
+ ((SpinField*)pControl)->SetModifyFlag();
+ ((SpinField*)pControl)->Modify();
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1c( S_ATTEMPT_TO_WRITE_READONLY, "SpinField" ) );
+ break;
+ case M_More :
+ {
+ if ( !(nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ for (int i = 1; i<= nNr1; i++)
+ {
+ ((SpinField*)pControl)->Up();
+ ((SpinField*)pControl)->SetModifyFlag();
+ ((SpinField*)pControl)->Modify();
+ }
+ }
+ break;
+ case M_Less :
+ {
+ if ( !(nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ for (int i = 1; i<= nNr1; i++)
+ {
+ ((SpinField*)pControl)->Down();
+ ((SpinField*)pControl)->SetModifyFlag();
+ ((SpinField*)pControl)->Modify();
+ }
+ }
+ break;
+ case M_ToMin :
+ ((SpinField*)pControl)->First();
+ ((SpinField*)pControl)->SetModifyFlag();
+ ((SpinField*)pControl)->Modify();
+ break;
+ case M_ToMax :
+ ((SpinField*)pControl)->Last();
+ ((SpinField*)pControl)->SetModifyFlag();
+ ((SpinField*)pControl)->Modify();
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "SpinField" ) );
+ break;
+ }
+ break;
+
+ case C_MenuButton:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, Mitte);
+ break;
+ case M_Click :
+ {
+ MouseEvent aMEvnt;
+ Point aPt( pControl->GetSizePixel().Width() / 2, pControl->GetSizePixel().Height() / 2 );
+ aMEvnt = MouseEvent( aPt,1,MOUSE_SIMPLECLICK,MOUSE_LEFT );
+ ImplMouseButtonDown( pControl, aMEvnt, FORCE_DIRECT_CALL );
+ ImplMouseButtonUp ( pControl, aMEvnt, FORCE_DIRECT_CALL );
+ }
+ break;
+ case M_Open :
+ case M_OpenMenu :
+ {
+ MouseEvent aMEvnt;
+ Point aPt( pControl->GetSizePixel().Width() / 2, pControl->GetSizePixel().Height() / 2 );
+ aMEvnt = MouseEvent( aPt,1,MOUSE_SIMPLECLICK,MOUSE_LEFT );
+ ImplMouseButtonDown( pControl, aMEvnt, FORCE_DIRECT_CALL );
+
+ ULONG nStart = Time::GetSystemTicks();
+ ULONG nDelay = pControl->GetSettings().GetMouseSettings().GetActionDelay();
+ while ( ( Time::GetSystemTicks() - nStart ) < nDelay + 100 )
+ SafeReschedule();
+
+ ImplMouseButtonUp ( pControl, aMEvnt, FORCE_DIRECT_CALL );
+
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+ }
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MenuButton" ) );
+ break;
+ }
+ break;
+ case C_ToolBox:
+ {
+ ToolBox *pTB = ((ToolBox*)pControl);
+ if ( !aUId.Matches( pTB->GetSmartUniqueOrHelpId() ) ) // Also Button auf der ToolBox gefunden
+ {
+ if ( (nParams == PARAM_NONE) || (nParams == PARAM_USHORT_1) )
+ { // Wir fälschen einen Parameter
+ if ( aUId.HasNumeric() )
+ {
+ nParams |= PARAM_ULONG_1;
+ nLNr1 = USHORT( aUId.GetNum() );
+ DBG_ASSERT( nLNr1 <= 0xFFFF, "ID on ToolBox > 0xFFFF" );
+ }
+ else
+ {
+ nParams |= PARAM_STR_1;
+ aString1 = aUId.GetStr();
+ }
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
+ }
+
+#define FIND_ITEM\
+ USHORT nItemPos = 0;\
+ BOOL bItemFound = FALSE;\
+ {\
+ SmartId aButtonId;\
+ if( nParams & PARAM_STR_1 )\
+ aButtonId = SmartId( aString1 );\
+ if( nParams & PARAM_ULONG_1 )\
+ aButtonId = SmartId( nLNr1 );\
+ for ( nItemPos = 0; nItemPos < pTB->GetItemCount() && !aButtonId.Matches(pTB->GetItemCommand(pTB->GetItemId(nItemPos))) &&\
+ !aButtonId.Matches(pTB->GetHelpId(pTB->GetItemId(nItemPos))) ; nItemPos++ ) {}\
+ bItemFound = aButtonId.Matches(pTB->GetItemCommand(pTB->GetItemId(nItemPos))) || aButtonId.Matches(pTB->GetHelpId(pTB->GetItemId(nItemPos)));\
+ if ( !bItemFound )\
+ ReportError( aUId, GEN_RES_STR1( S_HELPID_ON_TOOLBOX_NOT_FOUND, MethodString( nMethodId ) ) );\
+ else\
+ {\
+ if ( !pTB->IsItemEnabled( pTB->GetItemId(nItemPos) ) && nMethodId != _M_IsEnabled && nMethodId != M_GetState )\
+ {\
+ ReportError( aUId, GEN_RES_STR1( S_BUTTON_DISABLED_ON_TOOLBOX, MethodString( nMethodId ) ) );\
+ bItemFound = FALSE;\
+ }\
+ else if ( !pTB->IsItemVisible( pTB->GetItemId(nItemPos) ) && nMethodId != M_GetState )\
+ {\
+ ReportError( aUId, GEN_RES_STR1( S_BUTTON_HIDDEN_ON_TOOLBOX, MethodString( nMethodId ) ) );\
+ bItemFound = FALSE;\
+ }\
+ else\
+ {\
+ if ( pTB->IsMenuEnabled() )\
+ { /* button is in Menu */\
+ }\
+ else\
+ { /* Try the multi line way */\
+ if ( pTB->GetItemRect(pTB->GetItemId(nItemPos)).IsEmpty() )\
+ {\
+ USHORT nLine = pTB->GetCurLine();\
+ do\
+ {\
+ pTB->ShowLine( FALSE );\
+ for ( int i = 1 ; i < 30 ; i++ )\
+ SafeReschedule();\
+ }\
+ while ( pTB->GetCurLine() != nLine && pTB->GetItemRect(pTB->GetItemId(nItemPos)).IsEmpty() );\
+ pTB->Invalidate( pTB->GetScrollRect() );\
+ }\
+ if ( pTB->GetItemRect(pTB->GetItemId(nItemPos)).IsEmpty() )\
+ {\
+ ReportError( aUId, GEN_RES_STR1( S_CANNOT_MAKE_BUTTON_VISIBLE_IN_TOOLBOX, MethodString( nMethodId ) ) );\
+ bItemFound = FALSE;\
+ }\
+ }\
+ }\
+ }\
+ }\
+
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteLinks);
+ break;
+ case M_Click :
+ {
+ FIND_ITEM;
+ if ( bItemFound ) // FIND_ITEM Erfolgreich
+ {
+ Rectangle aRect = pTB->GetItemRect(pTB->GetItemId(nItemPos));
+ if ( aRect.IsEmpty() )
+ {
+ pTB->ExecuteCustomMenu();
+/* aRect = pTB->GetMenubuttonRect();
+ MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
+ ImplMouseButtonDown( pTB, aMEvnt );*/
+
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+
+ new StatementCommand( this, RC_MenuSelect, PARAM_USHORT_1, pTB->GetItemId(nItemPos) + TOOLBOX_MENUITEM_START );
+ }
+ else
+ {
+ aRect = pTB->GetItemRect(pTB->GetItemId(nItemPos));
+ MouseEvent aMEvnt;
+ aMEvnt = MouseEvent(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
+ ImplMouseButtonDown( pTB, aMEvnt, FORCE_DIRECT_CALL );
+ ImplMouseButtonUp ( pTB, aMEvnt, FORCE_DIRECT_CALL );
+ }
+ }
+ }
+ break;
+ case M_TearOff :
+ {
+ FIND_ITEM;
+ if ( bItemFound ) // FIND_ITEM Erfolgreich
+ {
+ Rectangle aRect = pTB->GetItemPosDropDownRect( nItemPos );
+ AnimateMouse( pControl, aRect.Center() );
+ MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
+ ImplMouseButtonDown( pTB, aMEvnt, FORCE_DIRECT_CALL );
+
+ Window *pWin = NULL;
+ // Wait for the window to open.
+ StatementList::bExecuting = TRUE; // Bah ist das ein ekliger Hack
+ { // Das verhindert, daß schon der nächste Befehl ausgeführt wird.
+ Time aDelay;
+ while ( !pWin && ( (pWin = GetPopupFloatingWin()) == NULL ) && ( Time() - aDelay ).GetSec() < 15 )
+ SafeReschedule();
+ }
+ StatementList::bExecuting = FALSE; // Bah ist das ein ekliger Hack
+
+ if ( pWin && pWin->GetType() == WINDOW_FLOATINGWINDOW )
+ {
+ aMEvnt = MouseEvent(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
+ ImplMouseButtonUp( pTB, aMEvnt, FORCE_DIRECT_CALL );
+ ((FloatingWindow*)pWin)->EndPopupMode( FLOATWIN_POPUPMODEEND_TEAROFF );
+ }
+ else
+ {
+ aMEvnt = MouseEvent(Point(1,-10), 1, MOUSE_SIMPLECLICK,MOUSE_LEFT);
+ ImplMouseButtonUp( pTB, aMEvnt, FORCE_DIRECT_CALL );
+ ReportError( aUId, GEN_RES_STR1( S_TEAROFF_FAILED, MethodString( nMethodId ) ) );
+ }
+ }
+ }
+ break;
+ case M_OpenMenu :
+ {
+ FIND_ITEM;
+ if ( bItemFound ) // FIND_ITEM Erfolgreich
+ {
+ Rectangle aRect = pTB->GetItemPosDropDownRect( nItemPos );
+ AnimateMouse( pControl, aRect.Center() );
+ MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
+ ImplMouseButtonDown( pTB, aMEvnt);
+ ImplMouseButtonUp( pTB, aMEvnt);
+
+ // Das Fenster ist offen.
+ aSubMenuId1 = SmartId();
+ aSubMenuId2 = SmartId();
+ aSubMenuId3 = SmartId();
+ pMenuWindow = NULL;
+ }
+ }
+ break;
+ case _M_IsEnabled:
+ {
+ FIND_ITEM;
+ if ( bItemFound ) // FIND_ITEM Erfolgreich
+ {
+ pRet->GenReturn ( RET_Value, aUId, pTB->IsItemEnabled( pTB->GetItemId(nItemPos) ) );
+ }
+ }
+ break;
+ case M_GetState :
+ {
+ FIND_ITEM;
+ if ( bItemFound ) // FIND_ITEM Erfolgreich
+ {
+ switch (nNr1)
+ {
+ case 0:
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetHelpId(pTB->GetItemId(nItemPos)));
+ break;
+ case 1:
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemType(nItemPos));
+ break;
+ case 2:
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemState(pTB->GetItemId(nItemPos)));
+ break;
+ case 3:
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemId(nItemPos));
+ break;
+ default:
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
+ break;
+ }
+ }
+ }
+ break;
+ case M_GetItemText :
+ pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetItemText(nNr1));
+ break;
+ case M_GetText :
+ pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetText());
+ break;
+ case M_GetItemCount :
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemCount());
+ break;
+ case M_SetNextToolBox :
+ if ( (nParams & PARAM_STR_1) )
+ pTB->SetNextToolBox( aString1 );
+ else
+ pTB->SetNextToolBox( pTB->GetNextToolBox() );
+ pTB->NextToolBox();
+ break;
+ case M_GetNextToolBox :
+ pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetNextToolBox());
+ break;
+ case M_Dock :
+ case M_Undock :
+ case M_IsDocked :
+ case M_Close:
+ case M_Size:
+ case M_Move:
+ case M_IsMax:
+ case M_Minimize:
+ case M_Maximize:
+ case M_Help: // Alles was unten weiterbehandelt werden soll
+ goto DockingWin;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ToolBox" ) );
+ break;
+ }
+ }
+ break;
+
+ case C_TreeListBox:
+ switch( nMethodId )
+ {
+
+
+
+#define GET_NTH_ENTRY_LBOX( First, Next, Anzahl) \
+ SvLBoxEntry *pThisEntry = ((SvTreeListBox*)pControl)->First(); \
+ { \
+ int niTemp = Anzahl; \
+ while ( niTemp-- ) \
+ { \
+ pThisEntry = ((SvTreeListBox*)pControl)->Next( pThisEntry ); \
+ } \
+ }
+
+ case M_GetText : // Get the first text of the given (default=1) line
+ { // should get removed some time
+ SvTreeListBox *pTree = (SvTreeListBox*)pControl;
+ SvLBoxEntry *pThisEntry = pTree->GetCurEntry();
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ if ( pThisEntry )
+ {
+ SvLBoxString* pItem = NULL;
+ USHORT nValidTextItemCount = 0;
+ {
+ USHORT nIndex = 0;
+ SvLBoxItem *pMyItem;
+ while ( ( nValidTextItemCount < nNr1 ) && nIndex < pThisEntry->ItemCount() )
+ {
+ pMyItem = pThisEntry->GetItem( nIndex );
+ if ( pMyItem->IsA() == SV_ITEM_ID_LBOXSTRING )
+ {
+ pItem = (SvLBoxString*)pMyItem;
+ nValidTextItemCount++;
+ }
+ nIndex++;
+ }
+ }
+ if ( ValueOK( aUId, CUniString("GetText"), nNr1, nValidTextItemCount ) )
+ pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
+ }
+ else
+ ReportError( aUId, GEN_RES_STR2c2( S_NO_SELECTED_ENTRY, MethodString( nMethodId ), "TreeListBox" ) );
+ }
+ break;
+ case M_GetSelCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetSelectionCount()));
+ break;
+ case M_GetItemCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetVisibleCount()) );
+ break;
+ case M_GetSelIndex :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ if ( ValueOK(aUId, CUniString("GetSelIndex"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
+ {
+ nNr1--;
+ GET_NTH_ENTRY_LBOX( FirstSelected, NextSelected, nNr1);
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( ((SvTreeListBox*)pControl)->GetVisiblePos( pThisEntry )) +1 );
+ }
+ break;
+ case M_Select :
+ if ( ! (nParams & PARAM_BOOL_1) )
+ bBool1 = TRUE;
+ if( nParams & PARAM_STR_1 )
+ {
+/* ListBox *pLB = ((ListBox*)pControl);
+ if ( pLB->GetEntryPos( aString1 ) == LISTBOX_ENTRY_NOTFOUND )
+ ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
+ else
+ {
+ pLB->SelectEntry( aString1, bBool1 );
+ if ( pLB->IsEntrySelected( aString1 ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
+ ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), aString1 ) );
+ }
+*/ ReportError( aUId, GEN_RES_STR1( S_SELECT_DESELECT_VIA_STRING_NOT_IMPLEMENTED, MethodString( nMethodId ) ) );
+ }
+ else
+ {
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
+ {
+ SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
+ ((SvTreeListBox*)pControl)->Select ( pEntry, bBool1 );
+ }
+ }
+ break;
+ case M_GetSelText :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ if ( ! (nParams & PARAM_USHORT_2) )
+ nNr2 = 1;
+ if ( ValueOK(aUId, CUniString("GetSelText"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
+ {
+ nNr1--;
+ GET_NTH_ENTRY_LBOX( FirstSelected, NextSelected, nNr1);
+ if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
+ {
+ SvLBoxString* pItem = NULL;
+ if ( ! (nParams & PARAM_USHORT_2) )
+ pItem = (SvLBoxString*)pThisEntry->GetFirstItem( SV_ITEM_ID_LBOXSTRING );
+ else
+ {
+ SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
+ if ( pMyItem->IsA() == SV_ITEM_ID_LBOXSTRING )
+ pItem = (SvLBoxString*)pMyItem;
+ }
+
+ if ( pItem )
+ pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_LIST_BOX_STRING, MethodString( nMethodId ) ) );
+ }
+ }
+ break;
+ case M_GetItemText :
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
+ {
+ SvLBoxEntry *pThisEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
+ if ( ! (nParams & PARAM_USHORT_2) )
+ nNr2 = 1;
+ if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
+ {
+ SvLBoxString* pItem = NULL;
+ if ( ! (nParams & PARAM_USHORT_2) )
+ pItem = (SvLBoxString*)pThisEntry->GetFirstItem( SV_ITEM_ID_LBOXSTRING );
+ else
+ {
+ SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
+ if ( pMyItem->IsA() == SV_ITEM_ID_LBOXSTRING )
+ pItem = (SvLBoxString*)pMyItem;
+ }
+
+ if ( pItem )
+ pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_LIST_BOX_STRING, MethodString( nMethodId ) ) );
+ }
+ }
+ break;
+ case M_IsChecked :
+ case M_IsTristate :
+ case M_GetState :
+ case M_Check :
+ case M_UnCheck :
+ case M_TriState :
+ {
+ SvTreeListBox *pTree = (SvTreeListBox*)pControl;
+ SvLBoxEntry *pThisEntry = NULL;
+
+ if ( ! (nParams & PARAM_USHORT_1) )
+ {
+ pThisEntry = pTree->GetCurEntry();
+ if ( !pThisEntry )
+ ReportError( aUId, GEN_RES_STR2c2( S_NO_SELECTED_ENTRY, MethodString( nMethodId ), "TreeListBox" ) );
+ }
+ else
+ {
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
+ {
+ pThisEntry = (SvLBoxEntry*)pTree->GetEntryAtVisPos( nNr1-1 );
+ }
+ }
+
+ if ( ! (nParams & PARAM_USHORT_2) )
+ nNr2 = 1;
+
+ if ( pThisEntry )
+ {
+ if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
+ {
+ SvLBoxButton* pItem = NULL;
+ if ( ! (nParams & PARAM_USHORT_2) )
+ pItem = (SvLBoxButton*)pThisEntry->GetFirstItem( SV_ITEM_ID_LBOXBUTTON );
+ else
+ {
+ SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
+ if ( pMyItem->IsA() == SV_ITEM_ID_LBOXBUTTON )
+ pItem = (SvLBoxButton*)pMyItem;
+ }
+
+ if ( pItem )
+ {
+ switch( nMethodId )
+ {
+ case M_IsChecked :
+ pRet->GenReturn ( RET_Value, aUId, comm_BOOL( pItem->IsStateChecked() ) );
+ break;
+ case M_IsTristate :
+ pRet->GenReturn ( RET_Value, aUId, comm_BOOL( pItem->IsStateTristate() ) );
+ break;
+ case M_GetState :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pItem->GetButtonFlags() & ~SV_STATE_MASK ));
+ break;
+ case M_Check :
+ if ( !pItem->IsStateChecked() )
+ {
+ pItem->SetStateChecked();
+ pTree->CheckButtonHdl();
+ pTree->InvalidateEntry( pThisEntry );
+ }
+ break;
+ case M_UnCheck :
+ if ( pItem->IsStateChecked() || pItem->IsStateTristate() )
+ {
+ pItem->SetStateUnchecked();
+ pTree->CheckButtonHdl();
+ pTree->InvalidateEntry( pThisEntry );
+ }
+ break;
+ case M_TriState :
+ if ( !pItem->IsStateTristate() )
+ {
+ pItem->SetStateTristate();
+ pTree->CheckButtonHdl();
+ pTree->InvalidateEntry( pThisEntry );
+ }
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
+ break;
+ }
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_LIST_BOX_BUTTON, MethodString( nMethodId ) ) );
+ }
+ }
+ }
+ break;
+ case M_GetItemType :
+ {
+ SvTreeListBox *pTree = (SvTreeListBox*)pControl;
+ SvLBoxEntry *pThisEntry = NULL;
+
+ if ( ! (nParams & PARAM_USHORT_1) )
+ {
+ pThisEntry = pTree->GetCurEntry();
+ if ( !pThisEntry )
+ ReportError( aUId, GEN_RES_STR2c2( S_NO_SELECTED_ENTRY, MethodString( nMethodId ), "TreeListBox" ) );
+ }
+ else
+ {
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
+ {
+ pThisEntry = (SvLBoxEntry*)pTree->GetEntryAtVisPos( nNr1-1 );
+ }
+ }
+
+ if ( pThisEntry )
+ {
+ if ( ! (nParams & PARAM_USHORT_2) )
+ nNr2 = 1;
+ if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
+ {
+ SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
+ comm_USHORT nType;
+ switch ( pMyItem->IsA() )
+ {
+ case SV_ITEM_ID_LBOXSTRING: nType = CONST_ItemTypeText ; break;
+ case SV_ITEM_ID_LBOXBMP: nType = CONST_ItemTypeBMP ; break;
+ case SV_ITEM_ID_LBOXBUTTON: nType = CONST_ItemTypeCheckbox ; break;
+ case SV_ITEM_ID_LBOXCONTEXTBMP: nType = CONST_ItemTypeContextBMP ; break;
+ default: nType = CONST_ItemTypeUnknown;
+ }
+ pRet->GenReturn ( RET_Value, aUId, nType );
+ }
+ }
+ }
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TreeListBox" ) );
+ break;
+ }
+ break;
+ case C_Control:
+ {
+ USHORT nRealControlType = 0;
+ if ( dynamic_cast< EditBrowseBox* >(pControl) )
+ nRealControlType = CONST_CTBrowseBox;
+ else if ( dynamic_cast< ValueSet* >(pControl) )
+ nRealControlType = CONST_CTValueSet;
+ else if ( dynamic_cast< ORoadmap* >(pControl) )
+ nRealControlType = CONST_CTORoadmap;
+ else if ( dynamic_cast< IExtensionListBox* >(pControl) )
+ nRealControlType = CONST_CTIExtensionListBox;
+ else if ( dynamic_cast< ::svt::table::TableControl* >(pControl) )
+ nRealControlType = CONST_CTTableControl;
+ else
+ nRealControlType = CONST_CTUnknown;
+
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ default:
+ switch( nRealControlType )
+ {
+ case CONST_CTBrowseBox:
+ {
+ EditBrowseBox* pEBBox = dynamic_cast< EditBrowseBox* >(pControl);
+ switch( nMethodId )
+ {
+
+
+ /*
+
+
+ BOOL MakeFieldVisible( long nRow, USHORT nColId, BOOL bComplete = FALSE );
+ // access to dynamic values of cursor row
+ String GetColumnTitle( USHORT nColumnId ) const;
+ USHORT GetColumnId( USHORT nPos ) const;
+ USHORT GetColumnPos( USHORT nColumnId ) const;
+ // access and movement of cursor
+ long GetCurRow() const { return nCurRow; }
+ USHORT GetCurColumnId() const { return nCurColId; }
+ BOOL GoToRow( long nRow );
+ BOOL GoToRowAndDoNotModifySelection( long nRow );
+ BOOL GoToColumnId( USHORT nColId );
+ BOOL GoToRowColumnId( long nRow, USHORT nColId );
+ // selections
+ void SetNoSelection();
+ void SelectAll();
+ void SelectRow( long nRow, BOOL bSelect = TRUE, BOOL bExpand = TRUE );
+ void SelectColumnPos( USHORT nCol, BOOL bSelect = TRUE )
+ { SelectColumnPos( nCol, bSelect, TRUE); }
+ void SelectColumnId( USHORT nColId, BOOL bSelect = TRUE )
+ { SelectColumnPos( GetColumnPos(nColId), bSelect, TRUE); }
+ long GetSelectRowCount() const;
+ USHORT GetSelectColumnCount() const;
+ BOOL IsRowSelected( long nRow ) const;
+ BOOL IsColumnSelected( USHORT nColumnId ) const;
+ long FirstSelectedRow( BOOL bInverse = FALSE );
+ long LastSelectedRow( BOOL bInverse = FALSE );
+ long PrevSelectedRow();
+ long NextSelectedRow();
+ const MultiSelection* GetSelection() const
+ { return bMultiSelection ? uRow.pSel : 0; }
+ void SetSelection( const MultiSelection &rSelection );
+
+ virtual String GetCellText(long _nRow, USHORT _nColId) const;
+ USHORT GetColumnCount() const { return ColCount(); }
+protected:
+ virtual long GetRowCount() const;
+
+
+ EditBrowseBox
+
+ sal_Bool IsEditing() const {return aController.Is();}
+ void InvalidateStatusCell(long nRow) {RowModified(nRow, 0);}
+ void InvalidateHandleColumn();
+
+ CellControllerRef Controller() const { return aController; }
+ sal_Int32 GetBrowserFlags() const { return m_nBrowserFlags; }
+
+ virtual void ActivateCell(long nRow, sal_uInt16 nCol, sal_Bool bSetCellFocus = sal_True);
+ virtual void DeactivateCell(sal_Bool bUpdate = sal_True);
+
+
+
+ */
+ case M_GetSelText :
+ {
+ pRet->GenReturn ( RET_Value, aUId, pEBBox->GetCellText( pEBBox->GetCurrRow(), pEBBox->GetColumnId( pEBBox->GetCurrColumn() )));
+ }
+ break;
+ case M_GetColumnCount :
+ {
+ USHORT nColCount = pEBBox->GetColumnCount();
+ comm_USHORT nUnfrozenColCount = 0;
+ USHORT i;
+ for ( i=0 ; i < nColCount ; i++ )
+ {
+ if ( !pEBBox->IsFrozen( pEBBox->GetColumnId( i ) ) )
+ nUnfrozenColCount++;
+ }
+ pRet->GenReturn ( RET_Value, aUId, nUnfrozenColCount );
+ }
+ break;
+ case M_GetRowCount :
+ {
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pEBBox->GetRowCount() );
+ }
+ break;
+ case M_IsEditing :
+ {
+ CellControllerRef aControler;
+ aControler = pEBBox->Controller();
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)aControler.Is() );
+ }
+ break;
+ case M_Select :
+ {
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pEBBox->GetRowCount() ) )
+ {
+ USHORT nColCount = pEBBox->GetColumnCount();
+ comm_USHORT nUnfrozenColCount = 0;
+ USHORT i;
+ for ( i=0 ; i < nColCount ; i++ )
+ {
+ if ( !pEBBox->IsFrozen( pEBBox->GetColumnId( i ) ) )
+ nUnfrozenColCount++;
+ }
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr2,nUnfrozenColCount ) )
+ pEBBox->GoToRowColumnId( nNr1-1, pEBBox->GetColumnId( nNr2 ) );
+ }
+ }
+ break;
+
+
+
+ /*
+ case M_GetSelCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetSelectionCount()));
+ break;
+ case M_GetSelIndex :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ if ( ValueOK(aUId, CUniString("GetSelIndex"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
+ {
+ nNr1--;
+ COUNT_LBOX( FirstSelected, NextSelected, nNr1);
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( ((SvTreeListBox*)pControl)->GetVisiblePos( pThisEntry )) +1 );
+ }
+ break;
+ case M_GetSelText :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ if ( ValueOK(aUId, CUniString("GetSelText"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
+ {
+ nNr1--;
+ COUNT_LBOX( FirstSelected, NextSelected, nNr1);
+ GetFirstValidTextItem( pThisEntry );
+ pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
+ }
+ break;
+ case M_GetItemCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetVisibleCount()) );
+ break;
+ case M_GetItemText :
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
+ {
+ SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
+ GetFirstValidTextItem( pEntry );
+ pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
+ }
+ break;
+ case M_Select :
+ if ( ! (nParams & PARAM_BOOL_1) )
+ bBool1 = TRUE;
+ if( nParams & PARAM_STR_1 )
+ {
+ / * ListBox *pLB = ((ListBox*)pControl);
+ if ( pLB->GetEntryPos( aString1 ) == LISTBOX_ENTRY_NOTFOUND )
+ ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
+ else
+ {
+ pLB->SelectEntry( aString1, bBool1 );
+ if ( pLB->IsEntrySelected( aString1 ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
+ ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), aString1 ) );
+ }
+ * / ReportError( aUId, GEN_RES_STR1( S_SELECT_DESELECT_VIA_STRING_NOT_IMPLEMENTED, MethodString( nMethodId ) ) );
+ }
+ else
+ {
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
+ {
+ SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
+ ((SvTreeListBox*)pControl)->Select ( pEntry, bBool1 );
+ }
+ }
+ break;*/
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "EditBrowseBox" ) );
+ break;
+ }
+ }
+ break;
+ case CONST_CTValueSet:
+ {
+ ValueSet *pVS = dynamic_cast< ValueSet* >(pControl);
+ switch ( nMethodId )
+ {
+ case M_GetItemCount:
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pVS->GetItemCount()));
+ break;
+ case M_GetItemText:
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pVS->GetItemCount() ))
+ pRet->GenReturn ( RET_Value, aUId, pVS->GetItemText( pVS->GetItemId( nNr1-1 ) ) );
+ break;
+ case M_Select:
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pVS->GetItemCount() ))
+ pVS->SelectItem( pVS->GetItemId( nNr1-1 ) );
+ break;
+ case M_GetSelIndex :
+ if ( pVS->IsNoSelection() )
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
+ else
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pVS->GetItemPos( pVS->GetSelectItemId() ) +1));
+ break;
+ case M_GetSelText :
+ if ( pVS->IsNoSelection() )
+ pRet->GenReturn ( RET_Value, aUId, String() );
+ else
+ pRet->GenReturn ( RET_Value, aUId, pVS->GetItemText( pVS->GetSelectItemId() ) );
+ break;
+ case M_SetNoSelection :
+ pVS->SetNoSelection();
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ValueSet" ) );
+ break;
+ }
+ }
+ break;
+ case CONST_CTORoadmap:
+ {
+ ORoadmap *pRM = dynamic_cast< ORoadmap* >(pControl);
+ switch ( nMethodId )
+ {
+ case M_GetItemCount:
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pRM->GetItemCount()));
+ break;
+ case M_GetItemText:
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pRM->GetItemCount() ))
+ pRet->GenReturn ( RET_Value, aUId, pRM->GetRoadmapItemLabel( pRM->GetItemID( nNr1-1 ) ) );
+ break;
+ case M_Select:
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pRM->GetItemCount() ))
+ {
+ if ( pRM->IsRoadmapItemEnabled( pRM->GetItemID( nNr1-1 ) ) )
+ pRM->SelectRoadmapItemByID( pRM->GetItemID( nNr1-1 ) );
+ else
+ ReportError( aUId, GEN_RES_STR1c( S_WIN_DISABLED, "RoadmapItem" ) );
+ }
+ break;
+ case M_GetSelIndex :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pRM->GetItemIndex( pRM->GetCurrentRoadmapItemID() ) +1));
+ break;
+ case M_GetSelText :
+ pRet->GenReturn ( RET_Value, aUId, pRM->GetRoadmapItemLabel( pRM->GetCurrentRoadmapItemID() ) );
+ break;
+ case M_IsItemEnabled :
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pRM->GetItemCount() ))
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)pRM->IsRoadmapItemEnabled( pRM->GetItemID( nNr1-1 ) ) );
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "RoadMap" ) );
+ break;
+ }
+ }
+ break;
+ case CONST_CTIExtensionListBox:
+ {
+ IExtensionListBox *pELB = dynamic_cast< IExtensionListBox* >(pControl);
+ switch ( nMethodId )
+ {
+ case M_GetItemCount:
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pELB->getItemCount()));
+ break;
+ case M_GetItemText:
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pELB->getItemCount() ))
+ switch ( nNr2 )
+ {
+ case 1:
+ pRet->GenReturn ( RET_Value, aUId, pELB->getItemName( nNr1 -1 ) );
+ break;
+ case 2:
+ pRet->GenReturn ( RET_Value, aUId, pELB->getItemVersion( nNr1 -1 ) );
+ break;
+ case 3:
+ pRet->GenReturn ( RET_Value, aUId, pELB->getItemDescription( nNr1 -1 ) );
+ break;
+ case 4:
+ pRet->GenReturn ( RET_Value, aUId, pELB->getItemPublisher( nNr1 -1 ) );
+ break;
+ case 5:
+ pRet->GenReturn ( RET_Value, aUId, pELB->getItemPublisherLink( nNr1 -1 ) );
+ break;
+ default:
+ ValueOK( aUId, MethodString( nMethodId ).AppendAscii(" String Number"), nNr2, 5 );
+ }
+ break;
+ case M_Select:
+ if ( (nParams & PARAM_USHORT_1) )
+ {
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pELB->getItemCount() ))
+ {
+ pELB->select( nNr1-1 );
+ }
+ }
+ else if ( (nParams & PARAM_STR_1) )
+ {
+ pELB->select( aString1 );
+ BOOL bSuccess = TRUE;
+ if ( pELB->getSelIndex() == EXTENSION_LISTBOX_ENTRY_NOTFOUND )
+ bSuccess = FALSE;
+ else
+ {
+ if ( !aString1.Equals( String( pELB->getItemName( pELB->getSelIndex() ) ) ) )
+ bSuccess = FALSE;
+ }
+ if ( !bSuccess )
+ ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
+ }
+ break;
+ case M_GetSelCount :
+ if ( pELB->getSelIndex() == EXTENSION_LISTBOX_ENTRY_NOTFOUND )
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( 0 ));
+ else
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( 1 ));
+ break;
+ case M_GetSelIndex :
+ if ( pELB->getSelIndex() == EXTENSION_LISTBOX_ENTRY_NOTFOUND )
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( 0 ));
+ else
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pELB->getSelIndex() +1));
+ break;
+/* xxxcase M_SetNoSelection :
+ ((ListBox*)pControl)->SetNoSelection();
+ ((ListBox*)pControl)->Select();
+ break; */
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "RoadMap" ) );
+ break;
+ }
+ }
+ break;
+
+ case CONST_CTTableControl:
+ {
+ ::svt::table::TableControl *pTC = dynamic_cast< ::svt::table::TableControl* >(pControl);
+ switch ( nMethodId )
+ {
+ case M_GetItemType :
+ {
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTC->GetColumnCount() ) &&
+ ValueOK( aUId, MethodString( nMethodId ), nNr2, pTC->GetRowCount() ))
+ {
+ ::svt::table::PTableModel pModel = pTC->GetModel();
+ Any aCell = pModel->getCellContent()[nNr2-1][nNr1-1];
+ pRet->GenReturn ( RET_Value, aUId, String( aCell.getValueTypeName() ));
+ }
+ }
+ break;
+ case M_GetItemText :
+ {
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTC->GetColumnCount() ) &&
+ ValueOK( aUId, MethodString( nMethodId ), nNr2, pTC->GetRowCount() ))
+ {
+ ::svt::table::PTableModel pModel = pTC->GetModel();
+ Any aCell = pModel->getCellContent()[nNr2-1][nNr1-1];
+ /* doesn't work ATM since it gets casted to SbxDATE in VCLTestTool unfortunately
+ SbxVariableRef xRes = new SbxVariable( SbxVARIANT );
+ unoToSbxValue( xRes, aCell );
+ pRet->GenReturn ( RET_Value, aUId, *xRes );*/
+
+ Type aType = aCell.getValueType();
+ TypeClass eTypeClass = aType.getTypeClass();
+ switch( eTypeClass )
+ {
+ /*case TypeClass_ENUM:
+ {
+ sal_Int32 nEnum = 0;
+ enum2int( nEnum, aValue );
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)nEnum );
+ }
+ break;*/
+ case TypeClass_BOOLEAN:
+ pRet->GenReturn ( RET_Value, aUId, *(sal_Bool*)aCell.getValue() );
+ break;
+ case TypeClass_CHAR:
+ {
+ ::rtl::OUString aContent( *(sal_Unicode*)aCell.getValue() );
+ pRet->GenReturn ( RET_Value, aUId, aContent );
+ }
+ break;
+ case TypeClass_STRING:
+ {
+ ::rtl::OUString aContent;
+ aCell >>= aContent;
+ pRet->GenReturn ( RET_Value, aUId, aContent );
+ }
+ break;
+ //case TypeClass_FLOAT: break;
+ //case TypeClass_DOUBLE: break;
+ //case TypeClass_OCTET: break;
+ case TypeClass_BYTE:
+ case TypeClass_SHORT:
+ case TypeClass_LONG:
+ case TypeClass_HYPER:
+ case TypeClass_UNSIGNED_LONG:
+ case TypeClass_UNSIGNED_HYPER:
+ {
+ comm_ULONG val = 0;
+ aCell >>= val;
+ pRet->GenReturn ( RET_Value, aUId, val );
+ }
+ break;
+ //case TypeClass_UNSIGNED_OCTET:break;
+ case TypeClass_UNSIGNED_SHORT:
+ {
+ comm_USHORT val = 0;
+ aCell >>= val;
+ pRet->GenReturn ( RET_Value, aUId, val );
+ }
+ break;
+ default:
+ pRet->GenReturn ( RET_Value, aUId, comm_USHORT(0) );
+ break;
+ }
+ }
+ }
+ break;
+ case M_GetColumnCount :
+ {
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTC->GetColumnCount() );
+ }
+ break;
+ case M_GetRowCount :
+ {
+ pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTC->GetRowCount() );
+ }
+ break;
+ case M_Select :
+ {
+ if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTC->GetRowCount() ))
+ {
+ if ( pTC->GoToRow( ::svt::table::RowPos( nNr1-1 ) ) )
+ {
+ Size aSize( pTC->GetSizePixel() );
+// DirectLog( S_QAError, UniString::CreateFromInt32( aSize.Width() ).Append( UniString::CreateFromInt32( aSize.Height() ) ) );
+ Point aPos( aSize.Width() / 2, aSize.Height() / 2 );
+ long nStep = aSize.Height() / 4;
+ ::svt::table::RowPos nLastPos;
+ while ( ( nLastPos = pTC->GetCurrentRow( aPos ) ) != nNr1-1 && nStep > 0 )
+ {
+ if ( nLastPos > nNr1-1 || nLastPos == ROW_INVALID )
+ aPos.Y() -= nStep;
+ else
+ aPos.Y() += nStep;
+ nStep /= 2;
+ }
+ if ( pTC->GetCurrentRow( aPos ) == nNr1-1 )
+ {
+ MouseEvent aMEvnt(aPos,1,MOUSE_SIMPLECLICK|MOUSE_SELECT,MOUSE_LEFT,KEY_MOD1);
+ pTC->getSelEngine()->SelMouseButtonDown( aMEvnt );
+ pTC->getSelEngine()->SelMouseButtonUp( aMEvnt );
+ if ( pTC->IsRowSelected( nNr1-1 ) )
+ pTC->Select();
+ }
+ else
+ ReportError( aUId, GEN_RES_STR2c2( S_METHOD_FAILED, MethodString( nMethodId ), "find pos" ) );
+ }
+ else
+ ReportError( aUId, GEN_RES_STR2c2( S_METHOD_FAILED, MethodString( nMethodId ), "GoTo" ) );
+ }
+ }
+ break;
+ case M_GetSelCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_USHORT( pTC->GetSelectedRows().size() ));
+ break;
+ case M_GetSelIndex :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ if ( ValueOK( aUId, CUniString("GetSelIndex"), nNr1, pTC->GetSelectedRows().size() ) )
+ pRet->GenReturn ( RET_Value, aUId, comm_USHORT( pTC->GetSelectedRows()[nNr1-1] +1 ) );
+ break;
+/* case M_GetSelText :
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1;
+ if ( ValueOK(aUId, CUniString("GetSelText"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
+ {
+ nNr1--;
+ COUNT_LBOX( FirstSelected, NextSelected, nNr1);
+ GetFirstValidTextItem( pThisEntry );
+ pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
+ }
+ break;
+ */
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TableControl" ) );
+ break;
+ }
+ }
+ break;
+
+ case CONST_CTUnknown:
+ ReportError( aUId, GEN_RES_STR2( S_UNKNOWN_TYPE, UniString::CreateFromInt32( nRT ), MethodString(nMethodId) ) );
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
+ break;
+ }
+ }
+ break;
+ }
+ case C_Window:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "Window" ) );
+ break;
+ }
+ break;
+
+ case C_DockingWin:
+ DockingWin:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_Dock :
+ if ( ((DockingWindow*)pControl)->IsFloatingMode() )
+ ((DockingWindow*)pControl)->SetFloatingMode(FALSE);
+ else
+ ReportError( aUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_FLOATING_MODE, MethodString( nMethodId ) ) );
+ break;
+ case M_Undock :
+ if ( !((DockingWindow*)pControl)->IsFloatingMode() )
+ ((DockingWindow*)pControl)->SetFloatingMode(TRUE);
+ else
+ ReportError( aUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_FLOATING_MODE, MethodString( nMethodId ) ) );
+ break;
+ case M_IsDocked :
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((DockingWindow*)pControl)->IsFloatingMode());
+ break;
+ case M_Close:
+ //aWindowWaitUId = aUId;
+ DBG_ASSERT( aUId.Matches( pControl->GetSmartUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((DockingWindow*)pControl)->Close();
+ break;
+ case M_Size:
+ case M_Move:
+ case M_IsMax:
+ case M_Minimize:
+ case M_Maximize:
+ if ( ((DockingWindow*)pControl)->IsFloatingMode() )
+ {
+ Window* pFloat = ((DockingWindow*)pControl)->GetFloatingWindow();
+ if ( !pFloat && ((DockingWindow*)pControl)->IsFloatingMode() )
+ {
+ if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
+ pFloat = pControl->GET_REAL_PARENT();
+ else
+ {
+ DBG_ERROR("FloatingMode set but Parent is no FloatingWindow");
+ }
+ }
+ if ( pFloat && pFloat->GetType() == WINDOW_FLOATINGWINDOW )
+ {
+ pControl = pFloat;
+ goto FloatWin;
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_CANNOT_FIND_FLOATING_WIN, MethodString( nMethodId ) ) );
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_DOCKING_MODE, MethodString( nMethodId ) ) );
+ break;
+ case M_Help: // Alles was unten weiterbehandelt werden soll
+ goto MoreDialog;
+
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "DockingWindow" ) );
+ break;
+ }
+ break;
+ case C_FloatWin:
+ FloatWin:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_IsMax :
+ pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)!((FloatingWindow*)pControl)->IsRollUp());
+ break;
+ case M_Minimize :
+ ((FloatingWindow*)pControl)->RollUp();
+ break;
+ case M_Maximize :
+ ((FloatingWindow*)pControl)->RollDown();
+ break;
+ case M_Size:
+ {
+ if ( pControl->GetStyle() & WB_SIZEABLE )
+ {
+ Size aMin = ((FloatingWindow*)pControl)->GetMinOutputSizePixel();
+ if ( aMin.Width() <= nNr1 && aMin.Height() <= nNr2 )
+ {
+ pControl->SetSizePixel(Size(nNr1,nNr2));
+ pControl->Resize();
+ }
+ else
+ {
+ ReportError( aUId, GEN_RES_STR2( S_SIZE_BELOW_MINIMUM, String::CreateFromInt32( aMin.Width() ), String::CreateFromInt32( aMin.Height() ) ) );
+ }
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_SIZE_NOT_CHANGEABLE, MethodString( nMethodId ) ) );
+ break;
+ }
+ case M_Close:
+ DBG_ASSERT( aUId.Matches( pControl->GetSmartUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((FloatingWindow*)pControl)->Close();
+ break;
+ case M_Help: // Alles was unten weiterbehandelt werden soll
+ case M_Move:
+ goto MoreDialog;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "FloatingWin" ) );
+ break;
+ }
+ break;
+ case C_ModelessDlg:
+ case C_ModalDlg:
+ case C_Dialog:
+ case C_TabDlg:
+ MoreDialog:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_Close:
+ DBG_ASSERT( aUId.Matches( pControl->GetSmartUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((SystemWindow*)pControl)->Close();
+ break;
+ case M_OK:
+ {
+ Window *pChild = GetWinByRT( pControl, WINDOW_OKBUTTON );
+ if( ControlOK( pChild, "OK Button" ) )
+ {
+ DBG_ASSERT( aUId.Matches( pControl->GetSmartUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((Button*)pChild)->Click();
+ }
+ break;
+ }
+ case M_Cancel:
+ {
+ Window *pChild = GetWinByRT( pControl, WINDOW_CANCELBUTTON );
+ if( ControlOK( pChild, "Cancel Button" ) )
+ {
+ DBG_ASSERT( aUId.Matches( pControl->GetSmartUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((Button*)pChild)->Click();
+ }
+ break;
+ }
+ case M_Help:
+ {
+ Window *pChild = GetWinByRT( pControl, WINDOW_HELPBUTTON );
+ if( ControlOK( pChild, "Help Button" ) )
+ ((Button*)pChild)->Click();
+ break;
+ }
+ case M_Default:
+ {
+ Window *pChild = ImpGetButton( pControl, WB_DEFBUTTON, WB_DEFBUTTON );
+ if( ControlOK( pChild, "Default Button" ) )
+ ((Button*)pChild)->Click();
+ break;
+ }
+ case M_Move:
+ {
+ pControl->SetPosPixel(Point(nNr1,nNr2));
+ break;
+ }
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "Dialog" ) );
+ break;
+ }
+ break;
+ case C_WorkWin:
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, MitteOben);
+ break;
+ case M_Close:
+ DBG_ASSERT( aUId.Matches( pControl->GetSmartUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
+ SET_WINP_CLOSING(pControl);
+ ((WorkWindow*)pControl)->Close();
+ break;
+ case M_Size:
+ case M_Move:
+ goto FloatWin;
+// break;
+ case M_IsMax :
+ pRet->GenReturn ( RET_Value, aUId, ((WorkWindow*)pControl)->IsMaximized() );
+ break;
+ case M_IsMin :
+ pRet->GenReturn ( RET_Value, aUId, ((WorkWindow*)pControl)->IsMinimized() );
+ break;
+ case M_IsRestore :
+ pRet->GenReturn ( RET_Value, aUId, comm_BOOL (!((WorkWindow*)pControl)->IsMaximized() && !((WorkWindow*)pControl)->IsMinimized()) );
+ break;
+ case M_Minimize :
+ ((WorkWindow*)pControl)->Maximize( FALSE );
+ ((WorkWindow*)pControl)->Minimize();
+ break;
+ case M_Maximize :
+ ((WorkWindow*)pControl)->Maximize();
+ break;
+ case M_Restore :
+ ((WorkWindow*)pControl)->Maximize( FALSE );
+ ((WorkWindow*)pControl)->Restore();
+ break;
+ case M_Help: // Alles was unten weiterbehandelt werden soll
+ goto MoreDialog;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "WorkWindow" ) );
+ break;
+ }
+ break;
+ case C_TabPage:
+ ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
+ break;
+ case C_MessBox:
+ case C_InfoBox:
+ case C_WarningBox:
+ case C_ErrorBox:
+ case C_QueryBox:
+ {
+ BOOL bDone = TRUE;
+ MessBox* pMB = (MessBox*)pControl;
+ switch( nMethodId )
+ {
+ case M_GetCheckBoxText:
+ pRet->GenReturn ( RET_Value, aUId, pMB->GetCheckBoxText() );
+ break;
+ case M_IsChecked :
+ pRet->GenReturn ( RET_Value, aUId, comm_BOOL( pMB->GetCheckBoxState() == STATE_CHECK) );
+ break;
+ case M_Check :
+ pMB->SetCheckBoxState( TRUE );
+ break;
+ case M_UnCheck :
+ pMB->SetCheckBoxState( FALSE );
+ break;
+ case M_GetText :
+ pRet->GenReturn ( RET_Value, aUId, pMB->GetMessText());
+ break;
+
+ default:
+ bDone = FALSE;
+ break;
+ }
+ if ( bDone )
+ break; // break the case here else continue at C_ButtonDialog
+ }
+ case C_ButtonDialog:
+ {
+ ButtonDialog* pBD = (ButtonDialog*)pControl;
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "Working MessBox: " );
+ if (pControl->IsVisible())
+ m_pDbgWin->AddText("*(Visible)\n");
+ else
+ m_pDbgWin->AddText("*(nicht Visible)\n");
+#endif
+ switch( nMethodId )
+ {
+ case M_AnimateMouse :
+ AnimateMouse( pControl, Mitte);
+ break;
+ case M_OK:
+#if ( BUTTONID_OK != RET_OK )
+#error BUTTONID_OK != RET_OK
+#endif
+ if ( pBD->GetPushButton( BUTTONID_OK ) )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_OK);
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_OK_BUTTON, MethodString( nMethodId ) ) );
+ break;
+ case M_Cancel:
+ if ( pBD->GetPushButton( BUTTONID_CANCEL ) )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_CANCEL);
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_CANCEL_BUTTON, MethodString( nMethodId ) ) );
+ break;
+ case M_Yes:
+ if ( pBD->GetPushButton( BUTTONID_YES ) )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_YES);
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_YES_BUTTON, MethodString( nMethodId ) ) );
+ break;
+ case M_No:
+ if ( pBD->GetPushButton( BUTTONID_NO ) )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_NO);
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_NO_BUTTON, MethodString( nMethodId ) ) );
+ break;
+ case M_Repeat:
+ if ( pBD->GetPushButton( BUTTONID_RETRY ) )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_RETRY);
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_RETRY_BUTTON, MethodString( nMethodId ) ) );
+ break;
+ case M_Help:
+ if ( pBD->GetPushButton( BUTTONID_HELP ) )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(BUTTONID_HELP);
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_HELP_BUTTON, MethodString( nMethodId ) ) );
+ break;
+ case M_Default:
+ {
+ WinBits Style = pControl->GetStyle();
+ if ( Style & WB_DEF_OK )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_OK);
+ }
+ else if ( Style & WB_DEF_CANCEL )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_CANCEL);
+ }
+ else if ( Style & WB_DEF_YES )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_YES);
+ }
+ else if ( Style & WB_DEF_NO )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_NO);
+ }
+ else if ( Style & WB_DEF_RETRY )
+ {
+ SET_WINP_CLOSING(pControl);
+ pBD->EndDialog(RET_RETRY);
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_NO_DEFAULT_BUTTON, MethodString( nMethodId ) ) );
+ }
+ break;
+ case M_GetText :
+ pRet->GenReturn ( RET_Value, aUId, pControl->GetText());
+ break;
+ case M_Click:
+ if ( nParams & PARAM_USHORT_1 )
+ {
+ if ( pBD->GetPushButton( nNr1 ) )
+ {
+ if ( nNr1 != BUTTONID_HELP )
+ {
+ SET_WINP_CLOSING(pControl);
+ }
+ pBD->GetPushButton( nNr1 )->Click();
+ }
+ else
+ ReportError( aUId, GEN_RES_STR2( S_NO_DEFAULT_BUTTON, UniString::CreateFromInt32( nNr1 ), MethodString( nMethodId ) ) );
+ }
+ else
+ ReportError( aUId, GEN_RES_STR1( S_BUTTONID_REQUIRED, MethodString( nMethodId ) ) );
+ break;
+ case M_GetButtonCount :
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pBD->GetButtonCount()));
+ break;
+ case M_GetButtonId :
+ if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pBD->GetButtonCount()) )
+ pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pBD->GetButtonId(nNr1-1)));
+ break;
+ default:
+ ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MessageBox" ) );
+ break;
+ }
+ break;
+ }
+ default:
+ DBG_ERROR( "Unknown Objekttype from UId or Method not suported" );
+ ReportError( aUId, GEN_RES_STR2( S_UNKNOWN_TYPE, UniString::CreateFromInt32( nRT ), MethodString(nMethodId) ) );
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( " Unknown Objekttype from UId or Method not suported" );
+#endif
+ break;
+ }
+ }
+ for( int i = 0; i < 32; i++ )
+ SafeReschedule();
+ }
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( "\n" );
+#endif
+ if ( bStatementDone )
+ {
+ SendProfile( UIdString( aUId ).Append('.').Append( MethodString( nMethodId ) ) );
+ delete this;
+ }
+ else
+ {
+ if ( nRetryCount-- )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ m_pDbgWin->AddText( CUniString("Reschedule command (requed) (").Append( UniString::CreateFromInt32(nRetryCount) ).AppendAscii(")\n") );
+#endif
+ QueStatement( this ); // will que at the start of the list
+ }
+ else
+ {
+ bStatementDone=TRUE;
+ }
+ }
+ return bStatementDone;
+
+#define FINISH_NEXT
+#define FINISH_SAME
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/statemnt.hxx b/automation/source/server/statemnt.hxx
new file mode 100644
index 000000000000..a4d2b76f5632
--- /dev/null
+++ b/automation/source/server/statemnt.hxx
@@ -0,0 +1,500 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+/***************************************************************************
+**
+** Von StatementList werden alle Statements abgeleitet.
+** Es gibt immer nur eine Statementliste, die verpointert ist.
+** jederzeit kann das der Anfang der Kette abgefragt werden.
+**
+**
+**
+**
+**
+**
+**
+***************************************************************************/
+#ifndef _STATEMNT_HXX
+#define _STATEMNT_HXX
+
+#include <vcl/wintypes.hxx>
+#include <tools/string.hxx>
+#include <tools/debug.hxx>
+#include <tools/time.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/svapp.hxx>
+#include <tools/fsys.hxx>
+#include <sot/storage.hxx>
+#include <basic/sbstar.hxx>
+#include <vcl/event.hxx>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <vcl/smartid.hxx>
+#include <automation/commtypes.hxx>
+
+class Window;
+class SystemWindow;
+class Point;
+class SfxPoolItem;
+
+class ScrollBar;
+
+class SCmdStream;
+class RetStream;
+class ImplRemoteControl;
+
+class TTProfiler;
+class TTProperties;
+
+class Dir;
+
+class CommunicationLink;
+
+#if OSL_DEBUG_LEVEL > 1
+class EditWindow;
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+ void SAL_CALL osl_TestToolDebugPrint( const sal_Char *pString );
+#ifdef __cplusplus
+}
+#endif
+
+
+#define IsVisible IsReallyVisible
+#define GET_REAL_PARENT() GetWindow( WINDOW_REALPARENT )
+
+// switch behaviour of ImplMouse* and ImplKeyInput
+#define FORCE_DIRECT_CALL TRUE
+
+typedef USHORT SearchFlags;
+#define SEARCH_NOOVERLAP ((SearchFlags) 0x0001)
+#define SEARCH_NO_TOPLEVEL_WIN ((SearchFlags) 0x0002)
+#define SEARCH_FOCUS_FIRST ((SearchFlags) 0x0004)
+#define SEARCH_FIND_DISABLED ((SearchFlags) 0x0008)
+
+class Search
+{
+ SearchFlags nmSearchFlags;
+public:
+ Search( SearchFlags nSearchFlags = 0): nmSearchFlags(nSearchFlags) {}
+ virtual ~Search() {}
+
+ virtual BOOL IsWinOK( Window *pWin ) = 0;
+ SearchFlags GetSearchFlags() { return nmSearchFlags; }
+ void AddSearchFlags( SearchFlags aNewFlags ) { nmSearchFlags |= aNewFlags; }
+ void RemoveSearchFlags( SearchFlags aRemoveFlags ) { nmSearchFlags &= ( ~aRemoveFlags ); }
+ BOOL HasSearchFlag( SearchFlags aQueryFlag ) { return (nmSearchFlags & aQueryFlag) == aQueryFlag; }
+};
+
+BOOL IsDialog(Window *pWin); // Ist *pWin von SystemWindow abgeleitet (Kann es Active sein)
+BOOL IsAccessable(Window *pWin); // Ist *pWin Zugreifbar (über IsEnabled und Parents geprüft)
+
+
+//class SafePointer : CriticalSection
+class SafePointer
+{
+ SafePointer *pSelf;
+public:
+ SafePointer() { pSelf = this; }
+ virtual ~SafePointer() { DBG_ASSERT(pSelf==this,"Destructor von Nicht existierendem Objekt aufgerufen");
+ pSelf = NULL; }
+// static BOOL IsValid( SafePointer *pThis ) { return pThis == pThis->pSelf; }
+// virtual operator -> (); { DBG_ASSERT(pMyself == this,"-> von Nicht existierendem Objekt aufgerufen"); }
+};
+
+
+class DisplayHidWin;
+class StatementCommand;
+class TranslateWin;
+
+struct TTSettings
+{
+ // DisplayHID
+ StatementCommand *pDisplayInstance;
+ DisplayHidWin *pDisplayHidWin;
+ Window *Old;
+ Window *Act;
+ String aOriginalCaption;
+
+ // Translate
+ TranslateWin *pTranslateWin;
+ BOOL bToTop;
+};
+
+
+TTSettings* GetTTSettings();
+
+
+#define MAX_RETRIES 9
+class StatementList : public SafePointer
+{
+private:
+ StatementList(const StatementList&);
+ StatementList & operator=(const StatementList&);
+
+protected:
+ StatementList();
+ USHORT nRetryCount;
+ void QueStatement(StatementList *pAfterThis);
+ BOOL bStatementInQue;
+ static USHORT nUseBindings;
+
+ static TTProfiler *pProfiler;
+ void InitProfile();
+ void SendProfile( String aText );
+ static StatementList *pCurrentProfileStatement;
+
+ static BOOL bIsInReschedule;
+ static USHORT nModalCount;
+ static Window *pLastFocusWindow; // Wenn dieses sich ändert wird Safe Reschedule abgebrochen
+ static BOOL bWasDragManager; // Wenn dieses sich ändert wird Safe Reschedule abgebrochen
+ static BOOL bWasPopupMenu; // Wenn dieses sich ändert wird Safe Reschedule abgebrochen
+ static BOOL bBasicWasRunning;
+
+ static USHORT nMinTypeKeysDelay; /// Verzögerung der einzelnen Anschläge für TypeKeys
+ static USHORT nMaxTypeKeysDelay;
+ static BOOL bDoTypeKeysDelay;
+
+ static Window* pFirstDocFrame;
+
+ static BOOL bIsSlotInExecute;
+
+public:
+ static BOOL IsInReschedule() { return bIsInReschedule; }
+ void SafeReschedule( BOOL bYield = FALSE ) // Setzt Flag, so daß nicht schon der nächste Befehl ausgeführt wird
+ {
+ nModalCount = Application::GetModalModeCount();
+ bIsInReschedule = TRUE;
+ pLastFocusWindow = GetpApp()->GetFocusWindow();
+ bWasDragManager = false /*!= DragManager::GetDragManager()*/;
+ bWasPopupMenu = NULL != PopupMenu::GetActivePopupMenu();
+ bBasicWasRunning = StarBASIC::IsRunning();
+ bWasExecuting = bExecuting;
+ if ( bYield )
+ GetpApp()->Yield();
+ else
+ GetpApp()->Reschedule();
+ bExecuting = bWasExecuting;
+ bBasicWasRunning = FALSE;
+ bWasPopupMenu = FALSE;
+ bWasDragManager = FALSE;
+ pLastFocusWindow = NULL;
+ bIsInReschedule = FALSE;
+ nModalCount = 0;
+ }
+ static BOOL MaybeResetSafeReschedule()
+ { // Implementierung muß hier zwar nicht sein, ist aber übersichtlicher so
+ if ( !bIsInReschedule )
+ return FALSE;
+
+ if ( pLastFocusWindow != GetpApp()->GetFocusWindow()
+ || ( Application::GetModalModeCount() > nModalCount )
+// || ( DragManager::GetDragManager() && !bWasDragManager )
+ || ( PopupMenu::GetActivePopupMenu() && !bWasPopupMenu )
+ || ( StarBASIC::IsRunning() && !bBasicWasRunning ) )
+ {
+ bIsInReschedule = FALSE;
+ pLastFocusWindow = NULL;
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+ static void NormalReschedule() // Setzt das flag nicht
+ {
+ GetpApp()->Reschedule();
+ }
+#define Reschedule RescheduleNichtBenutzen_StattdessenSafeRescheduleAnStatementList
+
+ static Window* GetMouseWin();
+ static BOOL WinPtrValid(Window *pTest);
+ static Window* SearchAllWin( Window *pBase, Search &aSearch, BOOL MaybeBase = TRUE );
+protected:
+ static Window* SearchClientWin( Window *pBase, Search &aSearch, BOOL MaybeBase = TRUE );
+
+ Window* SearchTree( SmartId aUId, BOOL bSearchButtonOnToolbox = FALSE );
+ Window* GetActive( WindowType nRT, BOOL MaybeBase = TRUE );
+ Window* GetFocus( WindowType nRT, BOOL MaybeBase = TRUE );
+ Window* GetAnyActive( BOOL MaybeBase = TRUE );
+ ScrollBar* GetScrollBar( Window *pBase, USHORT nDirection, BOOL MaybeBase = TRUE );
+ Window* GetPopupFloatingWin( BOOL MaybeBase = TRUE );
+ Menu* GetMatchingMenu( Window* pWin, Menu* pBaseMenu = NULL );
+ Window* GetWinByRT( Window *pBase, WindowType nRT, BOOL MaybeBase = TRUE, USHORT nSkip = 0, BOOL bSearchAll = FALSE );
+ USHORT CountWinByRT( Window *pBase, WindowType nRT, BOOL MaybeBase = TRUE );
+ Window* GetDocWin( USHORT nNr );
+ USHORT GetDocWinCount();
+ Window* GetFadeSplitWin( Window *pBase, WindowAlign nAlign, BOOL MaybeBase = TRUE );
+ BOOL ValueOK(SmartId nId, String aBezeichnung, ULONG nValue, ULONG nMax);
+
+ USHORT GetCurrentMenues( PopupMenu *&pPopup, MenuBar *&pMenuBar, Menu *&pMenu );
+
+public:
+// void AddStatement( StatementList *pNewStatement );
+
+ virtual ~StatementList();
+ void Advance();
+ virtual BOOL Execute() = 0;
+/***************************************************************************
+** Bestimmt erst den nächsten Befehl, setzt Current
+** und führt dann aus.
+** Returnwert gibt an, ob Befehl nochmal ausgeführt
+** werden soll. Dann muß auch der UserEvent verlassen werden, um der Applikation
+** normales Arbeiten zu ermöglichen (Dialog schliessen)
+** TRUE bedeutet, dass alles klar gegangen ist
+** FALSE bedeutet nochmal Bitte
+***************************************************************************/
+
+ void ReportError(String aMessage);
+ void ReportError(SmartId aUId, String aMessage);
+ void ReportError(String aMessage, ULONG nWhatever);
+
+ static void DirectLog( ULONG nType, String aString );
+
+ String Tree(Window *pBase, int Indent);
+ String ClientTree(Window *pBase, int Indent);
+
+ StatementList *pNext;
+ static StatementList /**pCurrent,*/ *pFirst;
+ static BOOL bReadingCommands;
+ static SmartId aWindowWaitUId;
+ static Window *pWindowWaitPointer;
+ static SmartId aWindowWaitOldHelpId;
+ static SmartId aWindowWaitOldUniqueId;
+ static RetStream *pRet;
+ static BOOL IsError;
+ static BOOL bDying;
+ static BOOL bExecuting; // Gesetzt, wenn ein Befehl rescheduled ohne einen neuen Befehl zu erlauben
+ BOOL bWasExecuting; // Wurde bei einem MaybeResetSafeReschedule resettet, so wird der Zustand danach wiederhergestellt
+ static SmartId aSubMenuId1; // Untermenüs bei PopupMenus
+ static SmartId aSubMenuId2; // erstmal 2-Stufig
+ static SmartId aSubMenuId3; // and now even 3 levels #i31512#
+ static SystemWindow *pMenuWindow; // when using MenuBar as base for MenuCommands
+ static TTProperties *pTTProperties; // Hier stehen die SlotIDs aus dem SFX drin
+
+ BOOL CheckWindowWait(); //True heisst, dass Window noch existiert
+ //False -> Window weg;
+ static void SetFirstDocFrame( Window* pWin );
+ static Window* GetFirstDocFrame();
+ static BOOL IsFirstDocFrame( Window* pWin );
+ static BOOL IsDocWin( Window* pWin );
+ static BOOL IsIMEWin( Window* pWin ); // Input Window for CJK under Solaris
+ static BOOL IsDocFrame( Window* pWin );
+ static MenuBar* GetDocFrameMenuBar( Window* pWin );
+ static USHORT GetDocFrameCount();
+
+ static BOOL bCatchGPF;
+
+ static BOOL bUsePostEvents; // use Application::Post*Event or own impl to handle key and mouseevents
+
+#if OSL_DEBUG_LEVEL > 1
+ static EditWindow *m_pDbgWin;
+#endif
+};
+
+class StatementSlot : public StatementList //Slots aufrufen
+{
+protected:
+ USHORT nAnzahl;
+ SfxPoolItem **pItemArr;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue> aArgs;
+ USHORT nFunctionId; // can get removed when the old (numeric) slothandling is removed
+ String aUnoUrl;
+ BOOL bMenuClosed;
+
+ StatementSlot();
+ void AddReferer();
+public:
+ StatementSlot( SCmdStream *pIn );
+ StatementSlot( ULONG nSlot, SfxPoolItem* pItem = NULL );
+ virtual ~StatementSlot();
+ virtual BOOL Execute();
+};
+
+class StatementUnoSlot : public StatementSlot //Uno Slots aufrufen
+{
+public:
+ StatementUnoSlot(SCmdStream *pIn);
+};
+
+class StatementCommand : public StatementList // Befehl ausführen (wintree, resetaplication ...)
+{
+ friend class ImplRemoteControl;
+protected:
+ USHORT nMethodId;
+ SmartId aSmartMethodId;
+ USHORT nParams;
+ comm_USHORT nNr1,nNr2,nNr3,nNr4;
+ comm_ULONG nLNr1;
+ String aString1,aString2;
+ BOOL bBool1,bBool2;
+
+ Window* GetNextOverlap( Window* pBase );
+ Window* GetNextRecoverWin();
+
+ static USHORT nDirPos;
+ static Dir *pDir;
+ static pfunc_osl_printDebugMessage pOriginal_osl_DebugMessageFunc;
+
+
+ BOOL UnpackStorage( SotStorageRef xStorage, DirEntry &aBaseDir );
+
+ void HandleSAXParser();
+
+public:
+ StatementCommand( SCmdStream *pIn );
+ StatementCommand( StatementList *pAfterThis, USHORT MethodId, USHORT Params, USHORT Nr1 );
+ virtual BOOL Execute();
+ BOOL DisplayHID();
+ void Translate();
+ void WriteControlData( Window *pBase, ULONG nConf, BOOL bFirst = TRUE );
+
+};
+
+
+enum TTHotSpots { MitteLinks, Mitte, MitteOben };
+
+class StatementControl : public StatementList
+{
+protected:
+ SmartId aUId;
+ USHORT nMethodId;
+ USHORT nParams;
+ comm_USHORT nNr1,nNr2,nNr3,nNr4;
+ comm_ULONG nLNr1;
+ String aString1,aString2;
+ BOOL bBool1,bBool2;
+ BOOL ControlOK( Window *pControl, const sal_Char* aBezeichnung );
+ void AnimateMouse( Window *pControl, TTHotSpots aWohin );
+ void AnimateMouse( Window *pControl, Point aWohin );
+
+ BOOL MaybeDoTypeKeysDelay( Window *pTestWindow );
+
+ BOOL HandleVisibleControls( Window *pControl );
+ BOOL HandleCommonMethods( Window *pControl );
+
+public:
+ StatementControl( SCmdStream *pIn, USHORT nControlType );
+ virtual BOOL Execute();
+
+};
+
+class StatementFlow : public StatementList // Kommunikation mit Sequence
+{
+ USHORT nArt;
+
+ USHORT nParams;
+ comm_USHORT nSNr1;
+ comm_ULONG nLNr1;
+ String aString1;
+ BOOL bBool1;
+
+
+public:
+ StatementFlow (ULONG nServiceId, SCmdStream *pIn, ImplRemoteControl *pRC );
+ StatementFlow( StatementList *pAfterThis, USHORT nArtP );
+ virtual BOOL Execute();
+ static CommunicationLink *pCommLink;
+ static BOOL bSending;
+
+ static BOOL bUseIPC; // Soll zur rückmeldung IPC verwendet werden?
+ static ImplRemoteControl *pRemoteControl; // Static für 2. Constructor
+
+private:
+ void SendViaSocket();
+};
+
+class SearchUID : public Search
+{
+ Window *pMaybeResult;
+ Window *pAlternateResult;
+ SmartId aUId;
+ BOOL bSearchButtonOnToolbox;
+public:
+ SearchUID( SmartId aUIdP, BOOL bSearchButtonOnToolboxP ): Search( SEARCH_FOCUS_FIRST ), pMaybeResult(NULL), pAlternateResult(NULL), aUId(aUIdP), bSearchButtonOnToolbox(bSearchButtonOnToolboxP) {}
+ virtual BOOL IsWinOK( Window *pWin );
+ Window* GetMaybeWin() { return pMaybeResult; }
+ Window* GetAlternateResultWin() { return pAlternateResult; }
+};
+class SearchActive : public Search
+{
+ WindowType nRT;
+public:
+ SearchActive( WindowType nRTP ): nRT(nRTP) {}
+ virtual BOOL IsWinOK( Window *pWin );
+};
+class SearchPopupFloatingWin : public Search
+{
+public:
+ SearchPopupFloatingWin(): Search( SEARCH_FOCUS_FIRST ) {}
+ virtual BOOL IsWinOK( Window *pWin );
+};
+class SearchRT : public Search
+{
+ WindowType mnRT;
+ USHORT mnSkip;
+ USHORT mnCount;
+public:
+ SearchRT( WindowType nRTP, SearchFlags nSearchFlags, USHORT nSkip = 0 ): Search(nSearchFlags), mnRT(nRTP), mnSkip( nSkip ), mnCount( 0 ) {}
+ virtual BOOL IsWinOK( Window *pWin );
+ USHORT GetCount(){ return mnCount; }
+};
+class SearchScroll : public SearchRT
+{
+ USHORT nDirection;
+public:
+ SearchScroll( USHORT nDir, SearchFlags nSearchFlags ): SearchRT(WINDOW_SCROLLBAR, nSearchFlags), nDirection(nDir) {}
+ virtual BOOL IsWinOK( Window *pWin );
+};
+class SearchWinPtr : public Search
+{
+ Window *pTest;
+public:
+ SearchWinPtr( Window *pTestP ): pTest(pTestP) {}
+ virtual BOOL IsWinOK( Window *pWin );
+};
+class SearchFadeSplitWin : public Search
+{
+ WindowAlign nAlign;
+public:
+ SearchFadeSplitWin( WindowAlign nAlignP ): nAlign(nAlignP) {}
+ virtual BOOL IsWinOK( Window *pWin );
+};
+
+
+void ImplKeyInput( Window* pWin, KeyEvent &aKEvnt, BOOL bForceDirect=FALSE );
+void ImplMouseMove( Window* pWin, MouseEvent &aMEvnt, BOOL bForceDirect=FALSE );
+void ImplMouseButtonDown( Window* pWin, MouseEvent &aMEvnt, BOOL bForceDirect=FALSE );
+void ImplMouseButtonUp( Window* pWin, MouseEvent &aMEvnt, BOOL bForceDirect=FALSE );
+void ImplCommand( Window* pWin, CommandEvent &aCmdEvnt );
+void ImplEventWait( ULONG nID );
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/svcommstream.cxx b/automation/source/server/svcommstream.cxx
new file mode 100644
index 000000000000..c689f9137a3f
--- /dev/null
+++ b/automation/source/server/svcommstream.cxx
@@ -0,0 +1,51 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+#include "svcommstream.hxx"
+
+SvCommStream::SvCommStream( SvStream* pIO ) { pStream = pIO; }
+SvCommStream::~SvCommStream() {}
+
+ICommStream& SvCommStream::operator>>( comm_USHORT& rUShort ) { *pStream >> rUShort; return *this; }
+ICommStream& SvCommStream::operator>>( comm_ULONG& rULong ) { *pStream >> rULong; return *this; }
+ICommStream& SvCommStream::operator>>( comm_BOOL& rChar ) { *pStream >> rChar; return *this; }
+
+ICommStream& SvCommStream::operator<<( comm_USHORT nUShort ) { *pStream << nUShort; return *this; }
+ICommStream& SvCommStream::operator<<( comm_ULONG nULong ) { *pStream << nULong; return *this; }
+ICommStream& SvCommStream::operator<<( comm_BOOL nChar ) { *pStream << nChar; return *this; }
+
+comm_ULONG SvCommStream::Read( void* pData, comm_ULONG nSize ) { return pStream->Read( pData, nSize ); }
+comm_ULONG SvCommStream::Write( const void* pData, comm_ULONG nSize ) { return pStream->Write( pData, nSize ); }
+
+comm_BOOL SvCommStream::IsEof() const { return pStream->IsEof(); }
+comm_ULONG SvCommStream::SeekRel( long nPos ) { return pStream->SeekRel( nPos ); }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/server/testtool.hrc b/automation/source/server/testtool.hrc
new file mode 100644
index 000000000000..d6a234b74236
--- /dev/null
+++ b/automation/source/server/testtool.hrc
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define TTSTART 12345
+
+#define DisplayHidToolBox ( TTSTART + 0 )
+#define TT_SHOW 1
+#define TT_SHOW2 ( TTSTART + 1 )
+#define TT_OUTPUT 3
+#define TT_SEND_DATA 4
+#define TT_ALLWIN 5
+#define TT_KURZNAME 6
+#define TT_LANGNAME 7
+#define TT_ALTERNATE_CAPTION ( TTSTART + 2 )
+
+#define TT_INLINE_TRANSLATION ( TTSTART + 3)
+#define TT_GB_TRANSLATION 1
+#define TT_E_NEW 2
+#define TT_FT_OLD 3
+#define TT_GB_COMMENT 4
+#define TT_E_COMMENT 5
+
+#define TT_PB_SELECT 6
+#define TT_PB_RESTORE 7
+#define TT_PB_ACCEPT 8
+#define TT_PB_NEXT 9
+
+#define TT_DISCARD_CHANGED_DATA ( TTSTART + 4 )
+#define TT_NO_CONTROL ( TTSTART + 5 )
+
+
+#define TT_GPF ( TTSTART + 6 )
diff --git a/automation/source/simplecm/communiio.hxx b/automation/source/simplecm/communiio.hxx
new file mode 100644
index 000000000000..c0625ed8b2c6
--- /dev/null
+++ b/automation/source/simplecm/communiio.hxx
@@ -0,0 +1,68 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+
+#include <automation/commtypes.hxx>
+
+#define C_ERROR_NONE 0x0001
+#define C_ERROR_PERMANENT 0x0002
+#define C_ERROR_RETRY 0x0003
+#define C_ERROR_TIMEOUT 0x0004
+
+class ITransmiter
+{
+protected:
+ comm_ULONG nLastSent;
+public:
+ ITransmiter() :nLastSent( 0 ){}
+ virtual ~ITransmiter() {}
+ virtual comm_USHORT TransferBytes( const void* pBuffer, comm_UINT32 nLen ) = 0;
+
+ comm_ULONG GetLastSent() { return nLastSent; }
+};
+
+class IReceiver
+{
+protected:
+ comm_ULONG nLastReceived;
+public:
+ IReceiver() :nLastReceived( 0 ){}
+ virtual ~IReceiver() {;}
+ virtual comm_USHORT ReceiveBytes( void* pBuffer, comm_UINT32 nLen ) = 0;
+
+ comm_ULONG GetLastReceived() { return nLastReceived; }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/simplecm/makefile.mk b/automation/source/simplecm/makefile.mk
new file mode 100644
index 000000000000..b6318ab4fd46
--- /dev/null
+++ b/automation/source/simplecm/makefile.mk
@@ -0,0 +1,46 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=automation
+TARGET=simplecm
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES= \
+ $(SLO)$/tcpio.obj \
+ $(SLO)$/packethandler.obj \
+ $(SLO)$/simplecm.obj \
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/automation/source/simplecm/packethandler.cxx b/automation/source/simplecm/packethandler.cxx
new file mode 100644
index 000000000000..034143d2cba6
--- /dev/null
+++ b/automation/source/simplecm/packethandler.cxx
@@ -0,0 +1,337 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+
+#include "packethandler.hxx"
+#include <automation/commtypes.hxx>
+#include <automation/commdefines.hxx>
+#include "communiio.hxx"
+
+/**
+Forces switch to multichannel headers even for old communication Method
+**/
+#define FORCE_MULTI_CHANNEL_HEADERS
+
+
+PacketHandler::PacketHandler( ITransmiter* pTransmitter_, IReceiver* pReceiver_, comm_BOOL bMC )
+: pTransmitter( pTransmitter_ )
+, pReceiver( pReceiver_ )
+, bMultiChannel( bMC )
+{
+}
+
+unsigned char PacketHandler::CalcCheckByte( comm_UINT32 nBytes )
+{
+ comm_UINT16 nRes = 0;
+ nRes += HIBYTE( HIWORD( nBytes ) ) ^ 0xf0;
+ nRes += LOBYTE( HIWORD( nBytes ) ) ^ 0x0f;
+ nRes += HIBYTE( LOWORD( nBytes ) ) ^ 0xf0;
+ nRes += LOBYTE( LOWORD( nBytes ) ) ^ 0x0f;
+
+ nRes ^= HIBYTE( nRes );
+
+ return LOBYTE( nRes );
+}
+
+
+#define READ_SOCKET( pBuffer, nLength )\
+ if ( !bWasError )\
+ {\
+ bWasError |= pReceiver->ReceiveBytes( pBuffer, nLength ) != C_ERROR_NONE;\
+ }
+
+#define READ_SOCKET_LEN( pBuffer, nLength, nTotal )\
+ READ_SOCKET( pBuffer, nLength );\
+ if ( !bWasError )\
+ {nTotal += nLength;}
+
+comm_BOOL PacketHandler::ReceiveData( void* &pData, comm_UINT32 &nLen )
+{
+ DBG_ASSERT( !pData, "pData should be NULL -> memory leak" );
+
+ nLen = 0;
+ pData = NULL;
+ comm_BOOL bWasError = FALSE;
+ comm_BOOL bForceMultiChannelThisPacket = FALSE;
+ if ( pReceiver )
+ {
+ comm_UINT32 nBytes = 0;
+ nReceiveProtocol = CM_PROTOCOL_OLDSTYLE;
+ nReceiveHeaderType = CH_NoHeader;
+
+ READ_SOCKET( &nBytes, sizeof(nBytes) )
+ if ( bWasError )
+ return FALSE;
+
+ if ( 0xFFFFFFFF == nBytes ) // Expliziter Request für dieses Datenpaket auf MultiChannel umzuschalten
+ {
+ READ_SOCKET( &nBytes, sizeof(nBytes) )
+ if ( bWasError )
+ return FALSE;
+ bForceMultiChannelThisPacket = TRUE;
+ }
+
+ nBytes = NETDWORD( nBytes );
+
+ if ( bMultiChannel || bForceMultiChannelThisPacket )
+ {
+ comm_ULONG nReadSoFar = 0;
+ comm_ULONG nHeaderReadSoFar = 0;
+
+ // Prüfbyte für Längenangabe
+ unsigned char nLenCheck = 0;
+ READ_SOCKET_LEN( &nLenCheck, 1, nReadSoFar );
+ // Stimmt das Prüfbyte?
+ bWasError |= nLenCheck != CalcCheckByte( nBytes );
+
+
+ comm_UINT16 nHeaderBytes;
+ READ_SOCKET_LEN( &nHeaderBytes, 2, nReadSoFar );
+ nHeaderBytes = NETWORD( nHeaderBytes );
+ // reicht der Header über das Ende hinaus?
+ bWasError |= !(nBytes >= nReadSoFar + nHeaderBytes);
+
+ READ_SOCKET_LEN( &nReceiveHeaderType, 2, nHeaderReadSoFar );
+ nReceiveHeaderType = NETWORD( nReceiveHeaderType );
+
+ switch ( nReceiveHeaderType )
+ {
+ case CH_SimpleMultiChannel:
+ {
+ READ_SOCKET_LEN( &nReceiveProtocol, 2, nHeaderReadSoFar );
+ nReceiveProtocol = NETWORD( nReceiveProtocol );
+ }
+ break;
+ case CH_Handshake:
+ {
+ }
+ break;
+ default:
+ {
+ DBG_ERROR("Unbekannter Headertyp in der Kommunikation");
+ bWasError = TRUE;
+ }
+
+ }
+
+ if ( bWasError )
+ return FALSE;
+
+ /// Längen anpassen und ggf restheader überlesen.
+ while ( nHeaderBytes > nHeaderReadSoFar )
+ {
+ unsigned char nDummy;
+ READ_SOCKET_LEN( &nDummy, 1, nHeaderReadSoFar );
+ }
+
+ nReadSoFar += nHeaderReadSoFar;
+ nBytes -= nReadSoFar;
+
+ }
+
+ /* @@@ Notes @@@
+ *
+ * 1) a 'void*' allocated via 'new char[]' is always deallocated
+ * via plain 'delete()', not via array 'delete[]()'; it's just
+ * raw memory.
+ *
+ * 2) as the caller of this routine later-on changes ownership
+ * of 'pData' via 'SvMemoryStream::SetBuffer()' (in 'simplecm.cxx',
+ * 'SimpleCommunicationLinkViaSocket::DoReceiveDataStream()'),
+ * the allocator used here for 'void* pData' must match the
+ * deallocator used in 'SvMemoryStream::FreeMemory()', i.e.
+ * '::operator delete()'.
+ */
+ pData = ::operator new(nBytes);
+ READ_SOCKET( pData, nBytes )
+ if ( bWasError )
+ {
+ ::operator delete(pData), pData = 0;
+ return FALSE;
+ }
+ nLen = nBytes;
+ }
+ else
+ bWasError = TRUE;
+
+ return !bWasError;
+}
+
+/*#define WRITE_SOCKET( pBuffer, nLength )\
+ if ( !bWasError )\
+ bWasError |= !pStreamSocket || (pStreamSocket->write( pBuffer, nLength ) != nLength)*/
+
+#define WRITE_SOCKET( pBuffer, nLength )\
+ if ( !bWasError )\
+ {bWasError |= pTransmitter->TransferBytes( pBuffer, nLength ) != C_ERROR_NONE;}
+
+
+
+comm_BOOL PacketHandler::TransferData( const void* pData, comm_UINT32 nLen, CMProtocol nProtocol )
+{
+ comm_UINT32 nBuffer = nLen;
+ comm_BOOL bWasError = FALSE;
+
+#ifndef FORCE_MULTI_CHANNEL_HEADERS
+ if ( bMultiChannel )
+#endif
+ nBuffer += 1+2+2+2; // für einen CH_SimpleMultiChannel
+
+#ifdef FORCE_MULTI_CHANNEL_HEADERS
+ if ( !bMultiChannel )
+ {
+ comm_UINT32 n32;
+ n32 = 0xffffffff; // Umschalten auf MultiChannel
+ n32 = NETDWORD( n32 );
+ WRITE_SOCKET( &n32, 4 );
+ }
+#endif
+
+
+ comm_UINT32 nNetworkBuffer = NETDWORD( nBuffer );
+ WRITE_SOCKET( &nNetworkBuffer, sizeof(nNetworkBuffer) );
+
+
+#ifndef FORCE_MULTI_CHANNEL_HEADERS
+ if ( bMultiChannel )
+#endif
+ {
+ comm_UINT16 n16;
+ unsigned char c;
+
+ c = CalcCheckByte( nBuffer );
+ WRITE_SOCKET( &c, 1 );
+
+ n16 = 4; // Länge des Headers für einen CH_SimpleMultiChannel
+ n16 = NETWORD( n16 );
+ WRITE_SOCKET( &n16, 2 );
+
+ n16 = CH_SimpleMultiChannel; // Typ des Headers
+ n16 = NETWORD( n16 );
+ WRITE_SOCKET( &n16, 2 );
+
+ nProtocol = NETWORD( nProtocol );
+ WRITE_SOCKET( &nProtocol, 2 );
+ }
+
+ WRITE_SOCKET( pData, nLen );
+ return !bWasError;
+}
+
+comm_BOOL PacketHandler::SendHandshake( HandshakeType aHandshakeType, const void* pData, comm_UINT32 nLen )
+{
+ comm_BOOL bWasError = FALSE;
+
+ comm_UINT32 nBuffer = 0;
+
+// if ( pMyManager->IsMultiChannel() ) Wir senden immer FFFFFFFF vorweg -> immer MultiChannel (Oder GPF bei älteren)
+ nBuffer += 1+2+2; // für einen CH_Handshake
+
+ nBuffer += 2; // für den Typ des Handshakes
+
+ switch ( aHandshakeType )
+ {
+ case CH_REQUEST_HandshakeAlive:
+ nBuffer += 0; // Keine extra Daten
+ break;
+ case CH_RESPONSE_HandshakeAlive:
+ nBuffer += 0; // Keine extra Daten
+ break;
+ case CH_REQUEST_ShutdownLink:
+ nBuffer += 0; // Keine extra Daten
+ break;
+ case CH_ShutdownLink:
+ nBuffer += 0; // Keine extra Daten
+ break;
+ case CH_SUPPORT_OPTIONS:
+ nBuffer += 2 ; // one word extradata for options
+ break;
+ case CH_SetApplication:
+ nBuffer += 0 ; // one word extradata for options
+ break;
+ default:
+ DBG_ERROR("Unknown HandshakeType");
+ }
+
+ if ( pData )
+ nBuffer += nLen; // Extra data in Buffer
+
+ comm_UINT32 n32;
+ n32 = 0xffffffff; // Umschalten auf MultiChannel
+ n32 = NETDWORD( n32 );
+ WRITE_SOCKET( &n32, 4 );
+
+ comm_UINT32 nNetworkBuffer = NETDWORD( nBuffer );
+ WRITE_SOCKET( &nNetworkBuffer, sizeof(nNetworkBuffer) );
+
+
+ comm_UINT16 n16;
+ unsigned char c;
+
+ c = CalcCheckByte( nBuffer );
+ WRITE_SOCKET( &c, 1 );
+
+ n16 = 2; // Länge des Headers für einen CH_Handshake
+ n16 = NETWORD( n16 );
+ WRITE_SOCKET( &n16, 2 );
+
+ n16 = CH_Handshake; // Typ des Headers
+ n16 = NETWORD( n16 );
+ WRITE_SOCKET( &n16, 2 );
+
+ n16 = aHandshakeType; // Typ des Handshakes
+ n16 = NETWORD( n16 );
+ WRITE_SOCKET( &n16, 2 );
+
+
+ switch ( aHandshakeType )
+ {
+ case CH_SUPPORT_OPTIONS:
+ n16 = OPT_USE_SHUTDOWN_PROTOCOL;
+ n16 = NETWORD( n16 );
+ WRITE_SOCKET( &n16, 2 );
+ break;
+ }
+
+ if ( pData )
+ WRITE_SOCKET( pData, nLen );
+
+ return !bWasError;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/simplecm/packethandler.hxx b/automation/source/simplecm/packethandler.hxx
new file mode 100644
index 000000000000..31081b2e949a
--- /dev/null
+++ b/automation/source/simplecm/packethandler.hxx
@@ -0,0 +1,72 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+/*************************************************************************
+ *
+ * ATTENTION
+ * This file is intended to work inside and outside the StarOffice environment.
+ * Only adaption of file commtypes.hxx should be necessary. Else it is a bug!
+ *
+ ************************************************************************/
+
+#ifndef _TOOLS_PACKETHANDLER_HXX_
+#define _TOOLS_PACKETHANDLER_HXX_
+
+#include <automation/commtypes.hxx>
+#include <automation/commdefines.hxx>
+
+class ITransmiter;
+class IReceiver;
+
+class PacketHandler
+{
+private:
+ unsigned char CalcCheckByte( comm_UINT32 nBytes );
+ ITransmiter* pTransmitter;
+ IReceiver* pReceiver;
+
+ comm_BOOL bMultiChannel;
+
+protected:
+ comm_UINT16 nReceiveProtocol;
+ comm_UINT16 nReceiveHeaderType;
+
+public:
+ PacketHandler( ITransmiter* pTransmitter_, IReceiver* pReceiver_, comm_BOOL bMC = FALSE );
+
+ comm_UINT16 GetReceiveProtocol() { return nReceiveProtocol; }
+ comm_UINT16 GetReceiveHeaderType() { return nReceiveHeaderType; }
+
+ comm_BOOL ReceiveData( void* &pData, comm_UINT32 &nLen ); /// Recieve DataPacket from Socket
+ virtual comm_BOOL SendHandshake( HandshakeType aHandshakeType, const void* pData = NULL, comm_UINT32 nLen = 0 );
+ virtual comm_BOOL TransferData( const void* pData, comm_UINT32 nLen, CMProtocol nProtocol = CM_PROTOCOL_OLDSTYLE );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/simplecm/simplecm.cxx b/automation/source/simplecm/simplecm.cxx
new file mode 100644
index 000000000000..26c8d6af0585
--- /dev/null
+++ b/automation/source/simplecm/simplecm.cxx
@@ -0,0 +1,700 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+
+#define ENABLE_BYTESTRING_STREAM_OPERATORS
+#include <tools/solar.h>
+#include <automation/simplecm.hxx>
+
+#include <automation/commdefines.hxx>
+#include "packethandler.hxx"
+#include "tcpio.hxx"
+
+#if OSL_DEBUG_LEVEL > 1
+#include <stdio.h>
+void debug_printf( const char *chars )
+{
+ static BOOL bPrint = (getenv("DEBUG") != NULL);
+ if ( bPrint )
+ {
+ printf( chars );
+ fflush( stdout );
+ }
+}
+#endif
+
+CommunicationLink::CommunicationLink( CommunicationManager *pMan )
+: pMyManager(pMan)
+, pServiceData(NULL)
+, nServiceProtocol( 0 )
+, bIsInsideCallback( FALSE )
+, nTotalBytes( 0 )
+, maApplication("Undefined")
+#if OSL_DEBUG_LEVEL > 1
+, bFlag( FALSE )
+, nSomething( 0 )
+#endif
+{
+}
+
+CommunicationLink::~CommunicationLink()
+{
+#if OSL_DEBUG_LEVEL > 1
+ if ( !bFlag ) // bFlag will be set if deletion is expected else we can set a breakpoint
+ bFlag = FALSE;
+#endif
+ if ( pMyManager )
+ pMyManager->DestroyingLink( this );
+}
+
+void CommunicationLink::CallInfoMsg( InfoString aMsg )
+{
+ if ( pMyManager )
+ pMyManager->InfoMsg( aMsg );
+};
+
+CM_InfoType CommunicationLink::GetInfoType()
+{
+ if ( pMyManager )
+ return pMyManager->GetInfoType();
+ else
+ return CM_NO_TEXT;
+}
+
+IMPL_LINK( CommunicationLink, ConnectionClosed, void*, EMPTYARG )
+{
+ if ( pMyManager )
+ pMyManager->CallConnectionClosed( this );
+ return 1;
+}
+
+IMPL_LINK( CommunicationLink, DataReceived, void*, EMPTYARG )
+{
+ if ( pMyManager )
+ pMyManager->CallDataReceived( this );
+ return 1;
+}
+
+BOOL CommunicationLink::DoTransferDataStream( SvStream *pDataStream, CMProtocol nProtocol )
+{
+ INFO_MSG( CByteString("S :").Append( GetCommunicationPartner( CM_FQDN ) ),
+ CByteString("Daten Senden:").Append( GetCommunicationPartner( CM_FQDN ) ),
+ CM_SEND, this );
+ BOOL bWasError = FALSE;
+
+ UINT32 nBuffer;
+ nBuffer = pDataStream->SeekRel(0) +1;
+ bWasError = pPacketHandler->TransferData( ((SvMemoryStream*)pDataStream)->GetData(), nBuffer, nProtocol ) != C_ERROR_NONE;
+
+ if ( bWasError )
+ {
+ INFO_MSG( CByteString("Send Failed:").Append( GetCommunicationPartner( CM_FQDN ) ),
+ CByteString( "Socket wird wegen Fehlers beim Senden geschlossen: ").Append( GetCommunicationPartner( CM_FQDN ) ),
+ CM_ERROR, this );
+ ShutdownCommunication();
+ }
+ return !bWasError;
+}
+
+BOOL CommunicationLink::TransferDataStream( SvStream *pDataStream, CMProtocol nProtocol )
+{
+ aLastAccess = DateTime();
+ nTotalBytes += pDataStream->Seek( STREAM_SEEK_TO_END );
+ return DoTransferDataStream( pDataStream, nProtocol );
+}
+
+void CommunicationLink::SetApplication( const ByteString& aApp )
+{
+ maApplication = aApp;
+}
+
+
+SimpleCommunicationLinkViaSocket::SimpleCommunicationLinkViaSocket( CommunicationManager *pMan, osl::StreamSocket* pSocket )
+: CommunicationLink( pMan )
+, aCommunicationPartner()
+, aMyName()
+, pStreamSocket( pSocket )
+, pReceiveStream( NULL )
+, bIsRequestShutdownPending( FALSE )
+{
+ pTCPIO = new TCPIO( pStreamSocket );
+ pPacketHandler = new PacketHandler( (ITransmiter*) pTCPIO, pTCPIO, pMyManager->IsMultiChannel() );
+}
+
+SimpleCommunicationLinkViaSocket::~SimpleCommunicationLinkViaSocket()
+{
+ delete pPacketHandler;
+ pPacketHandler = NULL;
+ delete pTCPIO;
+ pTCPIO = NULL;
+ delete pStreamSocket;
+ pStreamSocket = NULL;
+}
+
+void SimpleCommunicationLinkViaSocket::SetStreamSocket( osl::StreamSocket* pSocket )
+{
+ if ( pTCPIO )
+ pTCPIO->SetStreamSocket( pSocket );
+ pStreamSocket = pSocket;
+}
+
+BOOL SimpleCommunicationLinkViaSocket::StopCommunication()
+{
+ CommunicationLinkRef rHold(this); // avoid deleting this link before the end of the method
+ if ( !IsCommunicationError() ) // Meaning that the Communication is still runnung
+ {
+#if OSL_DEBUG_LEVEL > 1
+ debug_printf("Sending REQUEST_ShutdownLink\n");
+#endif
+ SendHandshake( CH_REQUEST_ShutdownLink );
+ }
+ WaitForShutdown();
+ return TRUE;
+}
+
+BOOL SimpleCommunicationLinkViaSocket::IsCommunicationError()
+{
+ return !pStreamSocket;
+}
+
+ByteString SimpleCommunicationLinkViaSocket::GetCommunicationPartner( CM_NameType eType )
+{
+ if ( pStreamSocket )
+ {
+ switch ( eType )
+ {
+ case CM_DOTTED:
+ {
+ rtl::OUString aDotted;
+ osl::SocketAddr* pPeerAdr = new osl::SocketAddr;
+ pStreamSocket->getPeerAddr( *pPeerAdr );
+ osl_getDottedInetAddrOfSocketAddr( pPeerAdr->getHandle(), &aDotted.pData);
+ delete pPeerAdr;
+ return ByteString( UniString(aDotted), RTL_TEXTENCODING_UTF8 );
+ }
+ //break;
+ case CM_FQDN:
+ {
+ if ( !aCommunicationPartner.Len() )
+ {
+ rtl::OUString aFQDN( pStreamSocket->getPeerHost());
+ aCommunicationPartner = ByteString( UniString(aFQDN), RTL_TEXTENCODING_UTF8 );
+ }
+ return aCommunicationPartner;
+ }
+ //break;
+ }
+ }
+ return CByteString( "Unknown" );
+}
+
+ByteString SimpleCommunicationLinkViaSocket::GetMyName( CM_NameType eType )
+{
+ if ( pStreamSocket )
+ {
+ switch ( eType )
+ {
+ case CM_DOTTED:
+ {
+ rtl::OUString aDotted;
+ osl::SocketAddr* pPeerAdr = new osl::SocketAddr;
+ pStreamSocket->getPeerAddr( *pPeerAdr );
+ osl_getDottedInetAddrOfSocketAddr( pPeerAdr->getHandle(), &aDotted.pData);
+ delete pPeerAdr;
+ return ByteString( UniString(aDotted), RTL_TEXTENCODING_UTF8 );
+ }
+ //break;
+ case CM_FQDN:
+ {
+ if ( !aMyName.Len() )
+ {
+ rtl::OUString aFQDN(pStreamSocket->getLocalHost());
+ aMyName = ByteString( UniString(aFQDN), RTL_TEXTENCODING_UTF8 );
+ }
+ return aMyName;
+ }
+ //break;
+ }
+ }
+ return CByteString( "Error" );
+}
+
+SvStream* SimpleCommunicationLinkViaSocket::GetBestCommunicationStream()
+{
+ SvStream* pStream = new SvMemoryStream;
+// pStream->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+ return pStream;
+}
+
+#define READ_SOCKET( pBuffer, nLength )\
+ if ( !bWasError )\
+ {bWasError |= pTCPIO->ReceiveBytes( pBuffer, nLength ) != C_ERROR_NONE;}
+
+#define READ_SOCKET_LEN( pBuffer, nLength, nTotal )\
+ READ_SOCKET( pBuffer, nLength );\
+ if ( !bWasError )\
+ {nTotal += nLength;}
+
+BOOL SimpleCommunicationLinkViaSocket::DoReceiveDataStream()
+{
+ BOOL bWasError = FALSE;
+ void* pBuffer = NULL;
+ comm_UINT32 nLen;
+ bWasError = pPacketHandler->ReceiveData( pBuffer, nLen ) != C_ERROR_NONE;
+ if ( !bWasError )
+ {
+ pReceiveStream = GetBestCommunicationStream();
+ DBG_ASSERT( pReceiveStream->IsA() == ID_MEMORYSTREAM, "CommunicationStream is not an SvMemoryStream. Communication has to be reimplemented here!");
+ if ( pReceiveStream->IsA() == ID_MEMORYSTREAM )
+ ((SvMemoryStream*)pReceiveStream)->SetBuffer( pBuffer, nLen, TRUE, nLen );
+ DBG_ASSERT( pReceiveStream, "Datastream is NULL");
+ }
+
+ return !bWasError;
+}
+
+void SimpleCommunicationLinkViaSocket::SetApplication( const ByteString& aApp )
+{
+ CommunicationLink::SetApplication( aApp );
+ SvStream* pData = GetBestCommunicationStream();
+ *pData << aApp;
+ SendHandshake( CH_SetApplication, pData );
+ delete pData;
+}
+
+void SimpleCommunicationLinkViaSocket::SetNewPacketAsCurrent()
+{
+ pServiceData = pReceiveStream;
+ nServiceProtocol = pPacketHandler->GetReceiveProtocol();
+ nServiceHeaderType = pPacketHandler->GetReceiveHeaderType();
+}
+
+BOOL SimpleCommunicationLinkViaSocket::SendHandshake( HandshakeType aHandshakeType, SvStream* pData )
+{
+ BOOL bWasError;
+
+ if ( pData )
+ {
+ UINT32 nBuffer;
+ nBuffer = pData->Seek( STREAM_SEEK_TO_END );
+ bWasError = !pPacketHandler->SendHandshake( aHandshakeType, ((SvMemoryStream*)pData)->GetData(), nBuffer );
+ }
+ else
+ bWasError = !pPacketHandler->SendHandshake( aHandshakeType );
+
+
+ if ( bWasError )
+ {
+ INFO_MSG( CByteString("Send Failed:").Append( GetCommunicationPartner( CM_FQDN ) ),
+ CByteString( "Socket wird wegen Fehlers beim Senden geschlossen: ").Append( GetCommunicationPartner( CM_FQDN ) ),
+ CM_ERROR, this );
+ ShutdownCommunication();
+ }
+ else
+ { // set new status
+ switch ( aHandshakeType )
+ {
+ case CH_REQUEST_HandshakeAlive:
+ break;
+ case CH_RESPONSE_HandshakeAlive:
+ break;
+ case CH_REQUEST_ShutdownLink:
+ bIsRequestShutdownPending = TRUE;
+ break;
+ case CH_ShutdownLink:
+ break;
+ case CH_SUPPORT_OPTIONS:
+ break;
+ case CH_SetApplication:
+ break;
+ default:
+ DBG_ERROR("Unknown HandshakeType");
+ }
+ }
+ return !bWasError;
+}
+
+SimpleCommunicationLinkViaSocketWithReceiveCallbacks::SimpleCommunicationLinkViaSocketWithReceiveCallbacks( CommunicationManager *pMan, osl::StreamSocket* pSocket )
+: SimpleCommunicationLinkViaSocket( pMan, pSocket )
+{
+}
+
+SimpleCommunicationLinkViaSocketWithReceiveCallbacks::~SimpleCommunicationLinkViaSocketWithReceiveCallbacks()
+{
+ if ( pMyManager && pMyManager->IsLinkValid( this ) && !bIsRequestShutdownPending )
+ StopCommunication();
+}
+
+bool SimpleCommunicationLinkViaSocket::IsReceiveReady()
+{
+ if ( !IsCommunicationError() )
+ {
+ TimeValue aTime = {30, 0}; // 30 seconds
+ return pStreamSocket->isRecvReady( &aTime );
+ }
+
+ return false;
+}
+
+void SimpleCommunicationLinkViaSocketWithReceiveCallbacks::WaitForShutdown()
+{
+ CommunicationLinkRef rHold(this); // avoid deleting this link before the end of the method
+
+ while( pMyManager && !IsCommunicationError() && IsReceiveReady())
+ ReceiveDataStream();
+}
+
+BOOL SimpleCommunicationLinkViaSocketWithReceiveCallbacks::ReceiveDataStream()
+{
+ if ( DoReceiveDataStream() )
+ {
+ SetNewPacketAsCurrent();
+ StartCallback();
+ DataReceived();
+ return TRUE;
+ }
+ else
+ {
+ StartCallback();
+ ShutdownCommunication();
+ return FALSE;
+ }
+}
+
+BOOL SimpleCommunicationLinkViaSocketWithReceiveCallbacks::ShutdownCommunication()
+{
+ if ( GetStreamSocket() )
+ GetStreamSocket()->shutdown();
+
+ if ( GetStreamSocket() )
+ GetStreamSocket()->close();
+
+ osl::StreamSocket* pTempSocket = GetStreamSocket();
+ SetStreamSocket( NULL );
+ delete pTempSocket;
+
+ ConnectionClosed();
+
+ return TRUE;
+}
+
+
+
+CommunicationManager::CommunicationManager( BOOL bUseMultiChannel )
+: nInfoType( CM_NONE )
+, bIsCommunicationRunning( FALSE )
+, maApplication("Unknown")
+, bIsMultiChannel( bUseMultiChannel )
+{
+}
+
+CommunicationManager::~CommunicationManager()
+{
+ xLastNewLink.Clear();
+}
+
+BOOL CommunicationManager::StartCommunication( String aApp, String aParams )
+{
+ (void) aApp; /* avoid warning about unused parameter */
+ (void) aParams; /* avoid warning about unused parameter */
+ return FALSE;
+}
+
+BOOL CommunicationManager::StartCommunication( ByteString aHost, ULONG nPort )
+{
+ (void) aHost; /* avoid warning about unused parameter */
+ (void) nPort; /* avoid warning about unused parameter */
+ return FALSE;
+}
+
+ByteString CommunicationManager::GetMyName( CM_NameType )
+{
+ rtl::OUString aHostname( osl::SocketAddr::getLocalHostname());
+ return ByteString( UniString(aHostname), RTL_TEXTENCODING_UTF8 );
+}
+
+void CommunicationManager::CallConnectionOpened( CommunicationLink* pCL )
+{
+ pCL->StartCallback(); // Sollte bereits vor dem Aufruf gerufen werden
+ pCL->aStart = DateTime();
+ pCL->aLastAccess = pCL->aStart;
+ bIsCommunicationRunning = TRUE;
+ pCL->SetApplication( GetApplication() );
+
+ xLastNewLink = pCL;
+
+ INFO_MSG( CByteString("C+:").Append( pCL->GetCommunicationPartner( CM_FQDN ) ),
+ CByteString("Verbindung aufgebaut: ").Append( pCL->GetCommunicationPartner( CM_FQDN ) ),
+ CM_OPEN, pCL );
+ ConnectionOpened( pCL );
+ pCL->FinishCallback();
+}
+
+void CommunicationManager::CallConnectionClosed( CommunicationLink* pCL )
+{
+ pCL->StartCallback(); // Sollte bereits vor dem Aufruf gerufen werden
+ pCL->aLastAccess = DateTime();
+
+ INFO_MSG( CByteString("C-:").Append( pCL->GetCommunicationPartner( CM_FQDN ) ),
+ CByteString("Verbindung abgebrochen: ").Append( pCL->GetCommunicationPartner( CM_FQDN ) ),
+ CM_CLOSE, pCL );
+ ConnectionClosed( pCL );
+
+ if ( xLastNewLink == pCL )
+ xLastNewLink.Clear();
+
+ pCL->FinishCallback();
+// delete pCL;
+}
+
+void CommunicationManager::CallDataReceived( CommunicationLink* pCL )
+{
+ pCL->StartCallback(); // Sollte bereits vor dem Aufruf gerufen werden
+ pCL->aLastAccess = DateTime();
+ CommunicationLinkRef rHold(pCL); // Hält den Zeiger bis zum Ende des calls
+
+ // should be impossible but happens for mysterious reasons
+ if ( !pCL->pServiceData )
+ {
+ DBG_ERROR( "Datastream is NULL" );
+ pCL->FinishCallback();
+ return;
+ }
+
+
+ if ( CH_Handshake == pCL->nServiceHeaderType )
+ {
+ SvStream *pData = pCL->GetServiceData();
+ USHORT nType;
+ pData->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN ); // Unfortulately it is written this way :((
+ *pData >> nType;
+ pData->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ switch ( nType )
+ {
+ case CH_REQUEST_HandshakeAlive:
+ {
+ pCL->SendHandshake( CH_RESPONSE_HandshakeAlive );
+ }
+ break;
+ case CH_REQUEST_ShutdownLink:
+ {
+#if OSL_DEBUG_LEVEL > 1
+ debug_printf("Sending ShutdownLink\n");
+#endif
+ pCL->SendHandshake( CH_ShutdownLink );
+ }
+ break;
+ case CH_ShutdownLink:
+ {
+#if OSL_DEBUG_LEVEL > 1
+ debug_printf("Executing ShutdownLink\n");
+#endif
+ pCL->ShutdownCommunication();
+ }
+ break;
+ case CH_SetApplication:
+ {
+ ByteString aApplication;
+ *pData >> aApplication;
+ pCL->CommunicationLink::SetApplication( aApplication );
+#if OSL_DEBUG_LEVEL > 1
+ debug_printf( "Setting Application to " );
+ debug_printf( aApplication.GetBuffer() );
+ debug_printf( "\n" );
+#endif
+ }
+ break;
+
+#if OSL_DEBUG_LEVEL > 1
+ default:
+ {
+ debug_printf("Unknown Handshake received\n");
+ }
+#endif
+ }
+ delete pData;
+ }
+ else
+ {
+ if ( pCL->pServiceData )
+ {
+ pCL->nTotalBytes += pCL->pServiceData->Seek( STREAM_SEEK_TO_END );
+ pCL->pServiceData->Seek( STREAM_SEEK_TO_BEGIN );
+ }
+
+ INFO_MSG( CByteString("D :").Append( pCL->GetCommunicationPartner( CM_FQDN ) ),
+ CByteString("Daten Empfangen:").Append( pCL->GetCommunicationPartner( CM_FQDN ) ),
+ CM_RECEIVE, pCL );
+ DataReceived( pCL );
+ }
+ delete pCL->GetServiceData();
+ pCL->FinishCallback();
+}
+
+void CommunicationManager::CallInfoMsg( InfoString aMsg )
+{
+ // Hier wird es wohl kein Housekeeping geben
+ InfoMsg( aMsg );
+}
+
+void CommunicationManager::SetApplication( const ByteString& aApp, BOOL bRunningLinks )
+{
+ maApplication = aApp;
+ if ( bRunningLinks )
+ {
+ USHORT i;
+ for ( i = 0 ; i < GetCommunicationLinkCount() ; i++ )
+ GetCommunicationLink( i )->SetApplication( aApp );
+ }
+}
+
+
+
+SingleCommunicationManager::SingleCommunicationManager( BOOL bUseMultiChannel )
+: CommunicationManager( bUseMultiChannel )
+{
+ xActiveLink = NULL;
+ pInactiveLink = NULL;
+}
+
+SingleCommunicationManager::~SingleCommunicationManager()
+{
+ StopCommunication();
+ if ( pInactiveLink )
+ pInactiveLink->InvalidateManager();
+}
+
+BOOL SingleCommunicationManager::StopCommunication()
+{
+ if ( xActiveLink.Is() )
+ {
+ BOOL bSuccess = xActiveLink->StopCommunication();
+ if ( pInactiveLink )
+ pInactiveLink->InvalidateManager();
+ pInactiveLink = xActiveLink;
+ xActiveLink.Clear();
+ return bSuccess;
+ }
+ return TRUE;
+}
+
+BOOL SingleCommunicationManager::IsLinkValid( CommunicationLink* pCL )
+{
+ return &xActiveLink == pCL;
+}
+
+USHORT SingleCommunicationManager::GetCommunicationLinkCount()
+{
+ return IsCommunicationRunning()?1:0;
+}
+
+CommunicationLinkRef SingleCommunicationManager::GetCommunicationLink( USHORT )
+{
+ return xActiveLink;
+}
+
+void SingleCommunicationManager::CallConnectionOpened( CommunicationLink* pCL )
+{
+ DBG_ASSERT( !xActiveLink.Is(), "Es ist bereits ein CommunicationLink aktiv");
+ if ( xActiveLink.Is() )
+ {
+ if ( pInactiveLink )
+ pInactiveLink->InvalidateManager();
+ pInactiveLink = xActiveLink;
+ xActiveLink->StopCommunication(); // Den alten Link brutal abwürgen
+ }
+ xActiveLink = pCL;
+ CommunicationManager::CallConnectionOpened( pCL );
+}
+
+void SingleCommunicationManager::CallConnectionClosed( CommunicationLink* pCL )
+{
+ CommunicationManager::CallConnectionClosed( pCL );
+
+ DBG_ASSERT( pCL == xActiveLink, "SingleCommunicationManager::CallConnectionClosed mit fremdem Link");
+ if ( pInactiveLink )
+ pInactiveLink->InvalidateManager();
+ pInactiveLink = xActiveLink;
+ xActiveLink.Clear();
+ bIsCommunicationRunning = FALSE;
+}
+
+void SingleCommunicationManager::DestroyingLink( CommunicationLink *pCL )
+{
+ pInactiveLink = NULL;
+ pCL->InvalidateManager();
+}
+
+
+SingleCommunicationManagerClientViaSocket::SingleCommunicationManagerClientViaSocket( ByteString aHost, ULONG nPort, BOOL bUseMultiChannel )
+: SingleCommunicationManager( bUseMultiChannel )
+, aHostToTalk( aHost )
+, nPortToTalk( nPort )
+{
+}
+
+
+SingleCommunicationManagerClientViaSocket::SingleCommunicationManagerClientViaSocket( BOOL bUseMultiChannel )
+: SingleCommunicationManager( bUseMultiChannel )
+, aHostToTalk()
+, nPortToTalk( 0 )
+{
+}
+
+
+BOOL CommonSocketFunctions::DoStartCommunication( CommunicationManager *pCM, ICommunicationManagerClient *pCMC, ByteString aHost, ULONG nPort )
+{
+ osl::SocketAddr Addr( rtl::OUString( UniString( aHost, RTL_TEXTENCODING_UTF8 ) ), nPort );
+ osl::ConnectorSocket *pConnSocket;
+
+
+ TimeValue aTV;
+ aTV.Seconds = 10; // Warte 10 Sekunden
+ aTV.Nanosec = 0;
+ do
+ {
+ pConnSocket = new osl::ConnectorSocket();
+ pConnSocket->setOption( osl_Socket_OptionTcpNoDelay, 1 );
+ if ( pConnSocket->connect( Addr, &aTV ) == osl_Socket_Ok )
+ {
+ pConnSocket->setOption( osl_Socket_OptionTcpNoDelay, 1 );
+ pCM->CallConnectionOpened( CreateCommunicationLink( pCM, pConnSocket ) );
+ return TRUE;
+ }
+ else
+ delete pConnSocket;
+
+ } while ( pCMC->RetryConnect() );
+
+ return FALSE;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/simplecm/tcpio.cxx b/automation/source/simplecm/tcpio.cxx
new file mode 100644
index 000000000000..e71afb399b84
--- /dev/null
+++ b/automation/source/simplecm/tcpio.cxx
@@ -0,0 +1,74 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+#include "tcpio.hxx"
+
+/// implement ITransmiter
+comm_USHORT TCPIO::TransferBytes( const void* pBuffer, comm_UINT32 nLen )
+{
+ osl::MutexGuard aGuard( aMSocketWriteAccess );
+ if ( !pStreamSocket )
+ {
+ nLastSent = 0;
+ return C_ERROR_PERMANENT;
+ }
+ nLastSent = pStreamSocket->write( pBuffer, nLen );
+ if ( nLastSent == nLen )
+ return C_ERROR_NONE;
+ return C_ERROR_PERMANENT;
+}
+
+
+/// implement IReceiver
+comm_USHORT TCPIO::ReceiveBytes( void* pBuffer, comm_UINT32 nLen )
+{
+ osl::MutexGuard aGuard( aMSocketReadAccess );
+ if ( !pStreamSocket )
+ {
+ nLastReceived = 0;
+ return C_ERROR_PERMANENT;
+ }
+ nLastReceived = pStreamSocket->read( pBuffer, nLen );
+ if ( nLastReceived == nLen )
+ return C_ERROR_NONE;
+ return C_ERROR_PERMANENT;
+}
+
+
+// helper
+void TCPIO::SetStreamSocket( osl::StreamSocket* pSocket )
+{
+ osl::MutexGuard aRGuard( aMSocketReadAccess );
+ osl::MutexGuard aWGuard( aMSocketWriteAccess );
+ pStreamSocket = pSocket;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/simplecm/tcpio.hxx b/automation/source/simplecm/tcpio.hxx
new file mode 100644
index 000000000000..07c3edba7a5b
--- /dev/null
+++ b/automation/source/simplecm/tcpio.hxx
@@ -0,0 +1,64 @@
+/* -*- 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 TCPIO_HXX
+#define TCPIO_HXX
+
+#include <osl/socket.hxx>
+#include <osl/mutex.hxx>
+
+#include "communiio.hxx"
+
+class TCPIO : public ITransmiter, public IReceiver
+{
+private:
+ osl::StreamSocket* pStreamSocket;
+ osl::Mutex aMSocketReadAccess;
+ osl::Mutex aMSocketWriteAccess;
+
+public:
+
+ ///
+ TCPIO( osl::StreamSocket* pSocket ):pStreamSocket( pSocket ){}
+ virtual ~TCPIO(){}
+
+
+ /// implement ITransmiter
+ virtual comm_USHORT TransferBytes( const void* pBuffer, comm_UINT32 nLen );
+
+ /// implement IReceiver
+ virtual comm_USHORT ReceiveBytes( void* pBuffer, comm_UINT32 nLen );
+
+ // helper
+ void SetStreamSocket( osl::StreamSocket* pSocket );
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/cmdstrm.cxx b/automation/source/testtool/cmdstrm.cxx
new file mode 100644
index 000000000000..a860948c6b04
--- /dev/null
+++ b/automation/source/testtool/cmdstrm.cxx
@@ -0,0 +1,470 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include <vcl/keycod.hxx>
+#include <basic/sbx.hxx>
+#include <tools/stream.hxx>
+
+#include "cmdstrm.hxx"
+#include "rcontrol.hxx"
+#include "objtest.hxx"
+#include "sttresid.hxx"
+#include "svcommstream.hxx"
+#include <basic/testtool.hrc>
+
+ControlDefLoad __READONLY_DATA CmdStream::arKeyCodes [] =
+#include <keycodes.hxx>
+CNames *CmdStream::pKeyCodes = NULL;
+
+ResMgr* SttResId::getSttResMgr()
+{
+ static ResMgr* pMgr = NULL;
+ if( ! pMgr )
+ pMgr = CREATEVERSIONRESMGR( stt );
+ return pMgr;
+}
+
+CmdStream::CmdStream()
+{
+ pSammel = new SvMemoryStream();
+ pCommStream = new SvCommStream( pSammel );
+}
+
+CmdStream::~CmdStream()
+{
+ delete pCommStream;
+ delete pSammel;
+}
+
+
+#define PUT_CHAR(ch) \
+ USHORT nMCode = nModify + ch; \
+ USHORT _Code = 1; \
+ if ( (nMCode & 0xFF) == 0 ) \
+ _Code |= 2; \
+ if ( (nMCode >> 8) == 0 ) \
+ _Code |= 4; \
+ Result += (char) _Code; \
+ Result += (char) ( nMCode & 0xFF ); \
+ Result += (char) ( nMCode >> 8 )
+
+
+String CmdStream::WandleKeyEventString( String aKeys )
+{
+ if ( !pKeyCodes )
+ ReadFlatArray(arKeyCodes,pKeyCodes);
+ if ( !pKeyCodes )
+ return aKeys;
+
+ xub_StrLen nPos1 = 0;
+ while ( (nPos1 = aKeys.Search('<',nPos1)) != STRING_NOTFOUND)
+ {
+ xub_StrLen nPos2 = aKeys.Search('>',nPos1);
+ if ( nPos2 != STRING_NOTFOUND )
+ {
+ String Work = aKeys.Copy(nPos1+1,nPos2-nPos1+1-2);
+ aKeys.Erase(nPos1,nPos2-nPos1+1); // Inclusive Spitze Klammern weg
+ String Result, Token;
+ USHORT nModify = 0;
+ while ( Work.Len() > 0 )
+ {
+ Token = Work.GetToken(0,' ');
+ Work.Erase(0,Token.Len()+1);
+ ControlDef WhatName(Token,SmartId());
+ USHORT nElement;
+ if (pKeyCodes->Seek_Entry(&WhatName,&nElement))
+ {
+ USHORT nCode = (USHORT) pKeyCodes->GetObject(nElement)->pData->aUId.GetNum();
+ if ( nCode >= KEY_SHIFT )
+ nModify ^= nCode;
+ else
+ {
+ if ( ( nModify == 0 ) &&
+ (((nCode & 0xFF00) == KEYGROUP_NUM) ||
+ ((nCode & 0xFF00) == KEYGROUP_ALPHA) ||
+ ( nCode == KEY_SPACE) ||
+ ( nCode == KEY_ADD) ||
+ ( nCode == KEY_SUBTRACT) ||
+ ( nCode == KEY_MULTIPLY) ||
+ ( nCode == KEY_DIVIDE) ||
+ ( nCode == KEY_POINT) ||
+ ( nCode == KEY_COMMA) ||
+ ( nCode == KEY_LESS) ||
+ ( nCode == KEY_GREATER) ||
+ ( nCode == KEY_EQUAL) ) )
+ {
+ switch ( nCode )
+ {
+ case KEY_SPACE: Token = ' '; break;
+ case KEY_ADD: Token = '+'; break;
+ case KEY_SUBTRACT: Token = '-'; break;
+ case KEY_MULTIPLY: Token = '*'; break;
+ case KEY_DIVIDE: Token = '/'; break;
+ case KEY_POINT: Token = '.'; break;
+ case KEY_COMMA: Token = ','; break;
+ case KEY_LESS: Token = '<'; break;
+ case KEY_GREATER: Token = '>'; break;
+ case KEY_EQUAL: Token = '='; break;
+ default:
+// if ( nModify == 0 )
+// Token.ToLower();
+// else
+// Token.ToUpper();
+ ;
+ }
+ Result += Token;
+ }
+ else
+ {
+ PUT_CHAR (nCode);
+ }
+ }
+ }
+ else
+ {
+ Result += '<';
+ Result += Token;
+ Result += ' ';
+ Result += String( SttResId( S_INVALID_KEYCODE ) );
+ Result += '>';
+ }
+ }
+ aKeys.Insert(Result,nPos1);
+ nPos1 = nPos1 + Result.Len();
+ }
+ else
+ nPos1 = aKeys.Len() + 1;
+ }
+
+ return aKeys;
+}
+
+
+void CmdStream::WriteSortedParams( SbxArray* rPar, BOOL IsKeyString )
+{
+ USHORT nParams = PARAM_NONE;
+ USHORT nNr1=0,nNr2=0,nNr3=0,nNr4=0;
+ comm_ULONG nLNr1=0;
+ String aString1,aString2;
+ BOOL bBool1=FALSE,bBool2=FALSE;
+
+ if ( rPar )
+ {
+ for ( USHORT i = 1; i < rPar->Count() ; i++)
+ {
+ switch (rPar->Get( i )->GetType())
+ {
+ case SbxLONG: // alles immer als Short �bertragen
+ case SbxULONG:
+ case SbxLONG64:
+ case SbxULONG64:
+ case SbxDOUBLE:
+ case SbxINTEGER:
+ case SbxBYTE:
+ case SbxUSHORT:
+ case SbxINT:
+ case SbxUINT:
+ case SbxSINGLE:
+ if ( (nParams & PARAM_USHORT_1) == 0 )
+ {
+ nParams |= PARAM_USHORT_1;
+ nNr1 = rPar->Get( i )->GetUShort();
+ }
+ else if ( (nParams & PARAM_USHORT_2) == 0 )
+ {
+ nParams |= PARAM_USHORT_2;
+ nNr2 = rPar->Get( i )->GetUShort();
+ }
+ else if ( (nParams & PARAM_USHORT_3) == 0 )
+ {
+ nParams |= PARAM_USHORT_3;
+ nNr3 = rPar->Get( i )->GetUShort();
+ }
+ else if ( (nParams & PARAM_USHORT_4) == 0 )
+ {
+ nParams |= PARAM_USHORT_4;
+ nNr4 = rPar->Get( i )->GetUShort();
+ }
+ else
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ break;
+ case SbxOBJECT: // whenever a control is passed. TabPage, MenuBar
+ {
+ SbxProperty *pMember = NULL;
+ if ( rPar->Get( i )->ISA( SbxObject ) )
+ pMember = ((SbxObject*)rPar->Get( i ))->GetDfltProperty();
+ if ( pMember != NULL )
+ {
+ if ( pMember->GetType() == SbxSTRING )
+ {
+ if ( nParams & PARAM_STR_1 )
+ if ( nParams & PARAM_STR_2 )
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ else
+ {
+ nParams |= PARAM_STR_2;
+ aString2 = pMember->GetString();
+ }
+ else
+ {
+ nParams |= PARAM_STR_1;
+ aString1 = pMember->GetString();
+ }
+ break;
+ }
+ else if ( pMember->GetType() == SbxULONG )
+ {
+ if ( nParams & PARAM_ULONG_1 )
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ else
+ {
+ nParams |= PARAM_ULONG_1;
+ nLNr1 = pMember->GetULong();
+ }
+ }
+ else
+ SbxBase::SetError( SbxERR_NAMED_NOT_FOUND );
+ }
+ else
+ {
+ SbxBase::SetError( SbxERR_NAMED_NOT_FOUND );
+ }
+ }
+ break;
+ case SbxSTRING:
+ case SbxCHAR:
+ if ( nParams & PARAM_STR_1 )
+ if ( nParams & PARAM_STR_2 )
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ else
+ {
+ nParams |= PARAM_STR_2;
+ aString2 = rPar->Get( i )->GetString();
+ }
+ else
+ {
+ nParams |= PARAM_STR_1;
+ aString1 = rPar->Get( i )->GetString();
+ }
+ break;
+ case SbxBOOL:
+ if ( nParams & PARAM_BOOL_1 )
+ if ( nParams & PARAM_BOOL_2 )
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ else
+ {
+ nParams |= PARAM_BOOL_2;
+ bBool2 = rPar->Get( i )->GetBool();
+ }
+ else
+ {
+ nParams |= PARAM_BOOL_1;
+ bBool1 = rPar->Get( i )->GetBool();
+ }
+ break;
+ default:
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ break;
+ }
+ }
+ }
+ Write (nParams);
+ if( nParams & PARAM_USHORT_1 ) Write( nNr1 );
+ if( nParams & PARAM_USHORT_2 ) Write( nNr2 );
+ if( nParams & PARAM_USHORT_3 ) Write( nNr3 );
+ if( nParams & PARAM_USHORT_4 ) Write( nNr4 );
+ if( nParams & PARAM_ULONG_1 ) Write( nLNr1 );
+ if( nParams & PARAM_STR_1 ) Write( aString1, IsKeyString );
+ if( nParams & PARAM_STR_2 ) Write( aString2, IsKeyString );
+ if( nParams & PARAM_BOOL_1 ) Write( bBool1 );
+ if( nParams & PARAM_BOOL_2 ) Write( bBool2 );
+}
+
+void CmdStream::GenCmdCommand( USHORT nNr, SbxArray* rPar )
+{
+ Write(USHORT(SICommand));
+ Write(nNr);
+ WriteSortedParams(rPar, (nNr & M_KEY_STRING) != 0 );
+}
+
+void CmdStream::GenCmdSlot( USHORT nNr, SbxArray* rPar )
+{
+ Write(USHORT(SISlot));
+ Write(nNr);
+ if (rPar)
+ {
+ USHORT nAnz = (rPar->Count()-1) >> 1; // Geteilt durch 2
+ Write(nAnz);
+ BOOL bWriteUnoSlot = rPar->Get( 1 )->GetType() == SbxSTRING;
+
+ for (USHORT n = 1 ; n <= nAnz ; n++)
+ {
+ /// #59513# nicht mehr ben�tigt
+// ULONG nUserData = rPar->Get( 2*n-1 )->GetUserData();
+// rPar->Get( 2*n-1 )->SetUserData(ID_DoNothing); // Verhindert Ausf�hrung der Slots, die als Parameter �bergeben sind.
+
+ if ( bWriteUnoSlot )
+ Write(rPar->Get( 2*n-1 )->GetString());
+ else
+ Write(rPar->Get( 2*n-1 )->GetUShort());
+ switch (rPar->Get( 2*n )->GetType())
+ {
+ case SbxINTEGER:
+ case SbxBYTE:
+ case SbxUSHORT:
+ case SbxINT:
+ case SbxUINT:
+ case SbxSINGLE:
+ if ( !bWriteUnoSlot )
+ Write( (USHORT)BinUSHORT );
+ Write(rPar->Get( 2*n )->GetUShort());
+ break;
+ case SbxLONG:
+ case SbxULONG:
+ case SbxLONG64:
+ case SbxULONG64:
+ case SbxDOUBLE:
+ if ( !bWriteUnoSlot )
+ Write( (USHORT)BinULONG );
+ Write(rPar->Get( 2*n )->GetULong());
+ break;
+ case SbxSTRING:
+ case SbxCHAR:
+ if ( !bWriteUnoSlot )
+ Write( (USHORT)BinString);
+ Write((String)rPar->Get( 2*n )->GetString()); // Cast f�r OS/2
+ break;
+ case SbxBOOL:
+ if ( !bWriteUnoSlot )
+ Write( (USHORT)BinBool);
+ Write(rPar->Get( 2*n )->GetBool());
+ break;
+ default:
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ break;
+ }
+
+ /// #59513# nicht mehr ben�tigt ( siehe oben )
+// rPar->Get( 2*n-1 )->SetUserData(nUserData); // Und wieder zur�cksetzen, so da� auch alles sauber ist.
+ }
+ }
+ else
+ Write(USHORT(0));
+}
+
+void CmdStream::GenCmdUNOSlot( const String &aURL )
+{
+ Write( USHORT(SIUnoSlot) );
+/* Write( USHORT(0) ); // Hier wird im Office die SID_OPENURL Eingetragen.
+ // Dies mu� nat�rlich im Office hart verdratet werden und nicht hier,
+ // da sich die ID ja mal �ndern kann.
+
+ // Da auch die ID f�r das PoolItem im Office entnommen werden mu� hier also kein PoolItem
+ // gesendet werden.
+
+ Write( USHORT(0) ); // Anzahl PoolItems
+
+ // Stattdessen wird noch eine extra String gesendet, der dann Officeseitig in ein
+ // SfxStringItem mit entsprechender ID gewandelt wird.
+ Write( aURL ); // String f�r das PoolItem*/
+
+ Write( aURL ); // Die UNO URL eben
+}
+
+void CmdStream::GenCmdControl( comm_ULONG nUId, USHORT nMethodId, SbxArray* rPar )
+{
+ Write(USHORT(SIControl));
+ Write(nUId);
+ Write(nMethodId);
+ WriteSortedParams(rPar, (nMethodId & M_KEY_STRING) != 0 );
+}
+
+void CmdStream::GenCmdControl( String aUId, USHORT nMethodId, SbxArray* rPar )
+{
+ Write(USHORT(SIStringControl));
+ Write(aUId);
+ Write(nMethodId);
+ WriteSortedParams(rPar, (nMethodId & M_KEY_STRING) != 0 );
+}
+
+void CmdStream::GenCmdFlow( USHORT nArt )
+{
+ Write(USHORT(SIFlow));
+ Write(nArt);
+ Write(USHORT(PARAM_NONE)); // Typ der folgenden Parameter
+}
+
+void CmdStream::GenCmdFlow( USHORT nArt, USHORT nNr1 )
+{
+ Write(USHORT(SIFlow));
+ Write(nArt);
+ Write(USHORT(PARAM_USHORT_1)); // Typ der folgenden Parameter
+ Write(nNr1);
+}
+
+void CmdStream::GenCmdFlow( USHORT nArt, comm_ULONG nNr1 )
+{
+ Write(USHORT(SIFlow));
+ Write(nArt);
+ Write(USHORT(PARAM_ULONG_1)); // Typ der folgenden Parameter
+ Write(nNr1);
+}
+
+void CmdStream::GenCmdFlow( USHORT nArt, String aString1 )
+{
+ Write(USHORT(SIFlow));
+ Write(nArt);
+ Write(USHORT(PARAM_STR_1)); // Typ der folgenden Parameter
+ Write(aString1);
+}
+
+void CmdStream::Write( String aString, BOOL IsKeyString )
+{
+ if ( IsKeyString )
+ Write( WandleKeyEventString( aString ), FALSE );
+ else
+ Write( aString.GetBuffer(), aString.Len() );
+}
+
+SvMemoryStream* CmdStream::GetStream()
+{
+ return pSammel;
+}
+
+void CmdStream::Reset( comm_ULONG nSequence )
+{
+ delete pCommStream;
+ delete pSammel;
+ pSammel = new SvMemoryStream();
+ pCommStream = new SvCommStream( pSammel );
+ GenCmdFlow (F_Sequence,nSequence);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/cmdstrm.hxx b/automation/source/testtool/cmdstrm.hxx
new file mode 100644
index 000000000000..fb8b49f6106e
--- /dev/null
+++ b/automation/source/testtool/cmdstrm.hxx
@@ -0,0 +1,81 @@
+/* -*- 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 _CMDSTRM_HXX
+#define _CMDSTRM_HXX
+
+#include <objtest.hxx>
+#include <testapp.hxx>
+#include "cmdbasestream.hxx"
+
+class CmdStream : public CmdBaseStream
+{
+public:
+ CmdStream();
+ ~CmdStream();
+
+ void WriteSortedParams( SbxArray* rPar, BOOL IsKeyString = FALSE );
+
+ void GenCmdCommand( USHORT nNr, SbxArray* rPar );
+
+ void GenCmdSlot( USHORT nNr, SbxArray* rPar );
+
+ void GenCmdUNOSlot( const String &aURL );
+
+ void GenCmdControl( comm_ULONG nUId, USHORT nMethodId, SbxArray* rPar );
+ void GenCmdControl( String aUId, USHORT nMethodId, SbxArray* rPar );
+
+
+ void GenCmdFlow( USHORT nArt );
+ void GenCmdFlow( USHORT nArt, USHORT nNr1 );
+ void GenCmdFlow( USHORT nArt, comm_ULONG nNr1 );
+ void GenCmdFlow( USHORT nArt, String aString1 );
+
+ void Reset(comm_ULONG nSequence);
+
+ SvMemoryStream* GetStream();
+
+ static CNames *pKeyCodes; // Namen der Sondertasten MOD1, F1, LEFT ...
+ static ControlDefLoad __READONLY_DATA arKeyCodes [];
+
+private:
+ String WandleKeyEventString( String aKeys ); // Nutzt pKeyCodes. <RETURN> <SHIFT LEFT LEFT>
+
+ using CmdBaseStream::Write;
+ void Write( comm_USHORT nNr ){CmdBaseStream::Write( nNr );}
+ void Write( comm_ULONG nNr ){CmdBaseStream::Write( nNr );}
+ void Write( const comm_UniChar* aString, comm_USHORT nLenInChars ){CmdBaseStream::Write( aString, nLenInChars );}
+ void Write( comm_BOOL bBool ){CmdBaseStream::Write( bBool );}
+// new
+ void Write( String aString, BOOL IsKeyString = FALSE );
+
+ SvMemoryStream *pSammel;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/comm_bas.cxx b/automation/source/testtool/comm_bas.cxx
new file mode 100644
index 000000000000..8c206b108926
--- /dev/null
+++ b/automation/source/testtool/comm_bas.cxx
@@ -0,0 +1,440 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+#include "comm_bas.hxx"
+#include <tools/errcode.hxx>
+#include <basic/sbxobj.hxx>
+#include <basic/sbx.hxx>
+#include <basic/sbxvar.hxx>
+#include <vcl/svapp.hxx>
+#include <automation/communi.hxx>
+#include <basic/ttstrhlp.hxx>
+
+// Der CommunicationManager hat folgende Elemente:
+// 1) Properties:
+// Keine
+// 2) Methoden:
+// CommunicationLink StartCommunication( Host, Port )
+// StopAllCommunication // Alle Kommunikation wird abgebrochen
+// BOOL IsCommunicationRunning // Läuft noch irgendwas
+// String GetMyName Der eigene Name
+// BOOL IsLinkValid( CommunicationLink ) // Ist dieser Link noch gültig
+// SetCommunicationEventHandler( String ) // Diese Funktion wird aufgerufen bei jedem Event
+
+// Der CommunicationLink hat folgende Elemente:
+// 1) Properties:
+// Keine
+// 2) Methoden:
+// StopCommunication Die Kommunikation wird abgebrochen
+// String GetMyName Der eigene Name
+// String GetHostName Der Name des Anderen
+// Send(String ) String an den Partner schicken
+// String GetString Ergebnis des letzten Empfangs
+
+
+// Diese Implementation ist ein Beispiel fuer eine tabellengesteuerte
+// Version, die sehr viele Elemente enthalten kann. Die Elemente werden
+// je nach Bedarf aus der Tabelle in das Objekt uebernommen.
+
+// Das nArgs-Feld eines Tabelleneintrags ist wie folgt verschluesselt:
+
+#define _ARGSMASK 0x00FF // Bis zu 255 Argumente
+#define _RWMASK 0x0F00 // Maske fuer R/W-Bits
+#define _TYPEMASK 0xF000 // Maske fuer den Typ des Eintrags
+
+#define _READ 0x0100 // kann gelesen werden
+#define _BWRITE 0x0200 // kann as Lvalue verwendet werden
+#define _LVALUE _BWRITE // kann as Lvalue verwendet werden
+#define _READWRITE 0x0300 // beides
+#define _OPT 0x0400 // TRUE: optionaler Parameter
+#define _METHOD 0x1000 // Masken-Bit fuer eine Methode
+#define _PROPERTY 0x2000 // Masken-Bit fuer eine Property
+#define _COLL 0x4000 // Masken-Bit fuer eine Collection
+ // Kombination von oberen Bits:
+#define _FUNCTION 0x1100 // Maske fuer Function
+#define _LFUNCTION 0x1300 // Maske fuer Function, die auch als Lvalue geht
+#define _ROPROP 0x2100 // Maske Read Only-Property
+#define _WOPROP 0x2200 // Maske Write Only-Property
+#define _RWPROP 0x2300 // Maske Read/Write-Property
+#define _COLLPROP 0x4100 // Maske Read-Collection-Element
+
+#define COLLNAME "Elements" // Name der Collection, hier mal hart verdrahtet
+
+
+
+CommunicationWrapper::Methods CommunicationWrapper::aManagerMethods[] = {
+// Neue Kommunikation aufbauen
+{ "StartCommunication", SbxEMPTY, &CommunicationWrapper::MStartCommunication, 2 | _FUNCTION },
+ // Zwei Named Parameter
+ { "Host", SbxSTRING, NULL, 0 },
+ { "Port", SbxLONG, NULL, 0 },
+// Alle Kommunikation wird abgebrochen
+{ "StopAllCommunication", SbxEMPTY, &CommunicationWrapper::MStopAllCommunication, 0 | _FUNCTION },
+// Läuft noch irgendwas
+{ "IsCommunicationRunning", SbxBOOL, &CommunicationWrapper::MIsCommunicationRunning, 0 | _FUNCTION },
+// Hostname als FQDN erfragen
+{ "GetMyName", SbxSTRING, &CommunicationWrapper::MGetMyName, 0 | _FUNCTION },
+// Abfragen ob der Link überhaupt noch gültig ist
+{ "IsLinkValid", SbxBOOL, &CommunicationWrapper::MIsLinkValid, 1 | _FUNCTION },
+ // Ein Named Parameter
+ { "Link", SbxOBJECT, NULL, 0 },
+// Dieser Handler wird dauernd gerufen
+{ "SetCommunicationEventHandler", SbxEMPTY, &CommunicationWrapper::MSetCommunicationEventHandler, 1 | _FUNCTION },
+ // Ein Named Parameter
+ { "FuncName", SbxSTRING, NULL, 0 },
+
+{ NULL, SbxNULL, NULL, -1 }}; // Tabellenende
+
+
+
+
+
+
+CommunicationWrapper::Methods CommunicationWrapper::aLinkMethods[] = {
+// Die Kommunikation wird abgebrochen
+{ "StopCommunication", SbxEMPTY, &CommunicationWrapper::LStopCommunication, 0 | _FUNCTION },
+// Der eigene Name
+{ "GetMyName", SbxSTRING, &CommunicationWrapper::LGetMyName, 0 | _FUNCTION },
+// Der Name des Anderen
+{ "GetHostName", SbxSTRING, &CommunicationWrapper::LGetHostName, 0 | _FUNCTION },
+// String an den Partner schicken
+{ "Send", SbxEMPTY, &CommunicationWrapper::LSend, 1 | _FUNCTION },
+ // Ein Named Parameter
+ { "SendString", SbxSTRING, NULL, 0 },
+// Ergebnis des letzten Empfangs
+{ "GetString", SbxSTRING, &CommunicationWrapper::LGetString, 0 | _FUNCTION },
+
+{ NULL, SbxNULL, NULL, -1 }}; // Tabellenende
+
+
+
+
+
+// Konstruktor für den Manager
+CommunicationWrapper::CommunicationWrapper( const String& rClass ) : SbxObject( rClass )
+, m_pLink( NULL )
+, m_bIsManager( TRUE )
+, m_bCatchOpen( FALSE )
+, m_pNewLink( NULL )
+{
+// SetName( CUniString("Manager") );
+ m_pMethods = &aManagerMethods[0];
+ m_pManager = new CommunicationManagerClientViaSocket;
+ m_pManager->SetConnectionOpenedHdl( LINK( this, CommunicationWrapper, Open ) );
+ m_pManager->SetConnectionClosedHdl( LINK( this, CommunicationWrapper, Close ) );
+ m_pManager->SetDataReceivedHdl( LINK( this, CommunicationWrapper, Data ) );
+}
+
+// Konstruktor für den Link
+CommunicationWrapper::CommunicationWrapper( CommunicationLink *pThisLink ) : SbxObject( CUniString("Link") )
+, m_pLink( pThisLink )
+, m_bIsManager( FALSE )
+, m_bCatchOpen( FALSE )
+, m_pNewLink( NULL )
+{
+ m_pMethods = &aLinkMethods[0];
+ m_pManager = (CommunicationManagerClientViaSocket*)pThisLink->GetCommunicationManager();
+}
+
+// Destruktor
+CommunicationWrapper::~CommunicationWrapper()
+{
+ if ( m_bIsManager )
+ delete m_pManager;
+}
+
+
+// Suche nach einem Element:
+// Hier wird linear durch die Methodentabelle gegangen, bis eine
+// passende Methode gefunden wurde.
+// Wenn die Methode/Property nicht gefunden wurde, nur NULL ohne
+// Fehlercode zurueckliefern, da so auch eine ganze Chain von
+// Objekten nach der Methode/Property befragt werden kann.
+
+SbxVariable* CommunicationWrapper::Find( const String& rName, SbxClassType t )
+{
+ // Ist das Element bereits vorhanden?
+ SbxVariable* pRes = SbxObject::Find( rName, t );
+ if( !pRes && t != SbxCLASS_OBJECT )
+ {
+ // sonst suchen
+ Methods* p = m_pMethods;
+ short nIndex = 0;
+ BOOL bFound = FALSE;
+ while( p->nArgs != -1 )
+ {
+ if( rName.CompareIgnoreCaseToAscii( p->pName ) == COMPARE_EQUAL )
+ {
+ bFound = TRUE; break;
+ }
+ nIndex += ( p->nArgs & _ARGSMASK ) + 1;
+ p = m_pMethods + nIndex;
+ }
+ if( bFound )
+ {
+ // Args-Felder isolieren:
+ short nAccess = ( p->nArgs & _RWMASK ) >> 8;
+ short nType = ( p->nArgs & _TYPEMASK );
+ String aName( p->pName, RTL_TEXTENCODING_ASCII_US );
+ SbxClassType eCT = SbxCLASS_OBJECT;
+ if( nType & _PROPERTY )
+ eCT = SbxCLASS_PROPERTY;
+ else if( nType & _METHOD )
+ eCT = SbxCLASS_METHOD;
+ pRes = Make( aName, eCT, p->eType );
+ // Wir setzen den Array-Index + 1, da ja noch andere
+ // Standard-Properties existieren, die auch aktiviert
+ // werden muessen.
+ pRes->SetUserData( nIndex + 1 );
+ pRes->SetFlags( nAccess );
+ }
+ }
+ return pRes;
+}
+
+// Aktivierung eines Elements oder Anfordern eines Infoblocks
+
+void CommunicationWrapper::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCT,
+ const SfxHint& rHint, const TypeId& rHT )
+{
+ const SbxHint* pHint = PTR_CAST(SbxHint,&rHint);
+ if( pHint )
+ {
+ SbxVariable* pVar = pHint->GetVar();
+ SbxArray* pPar = pVar->GetParameters();
+ USHORT nIndex = (USHORT) pVar->GetUserData();
+ // kein Index: weiterreichen!
+ if( nIndex )
+ {
+ ULONG t = pHint->GetId();
+ if( t == SBX_HINT_INFOWANTED )
+ pVar->SetInfo( GetInfo( (short) pVar->GetUserData() ) );
+ else
+ {
+ BOOL bWrite = FALSE;
+ if( t == SBX_HINT_DATACHANGED )
+ bWrite = TRUE;
+ if( t == SBX_HINT_DATAWANTED || bWrite )
+ {
+ // Parameter-Test fuer Methoden:
+ USHORT nPar = m_pMethods[ --nIndex ].nArgs & 0x00FF;
+ // Element 0 ist der Returnwert
+ if( ( !pPar && nPar )
+ || ( pPar && pPar->Count() != nPar+1 ) )
+ SetError( SbxERR_WRONG_ARGS );
+ // Alles klar, man kann den Call ausfuehren
+ else
+ {
+ (this->*(m_pMethods[ nIndex ].pFunc))( pVar, pPar, bWrite );
+ }
+ }
+ }
+ }
+ SbxObject::SFX_NOTIFY( rBC, rBCT, rHint, rHT );
+ }
+}
+
+// Zusammenbau der Infostruktur fuer einzelne Elemente
+
+SbxInfo* CommunicationWrapper::GetInfo( short nIdx )
+{
+ Methods* p = &m_pMethods[ nIdx ];
+ // Wenn mal eine Hilfedatei zur Verfuegung steht:
+ // SbxInfo* pInfo = new SbxInfo( Hilfedateiname, p->nHelpId );
+ SbxInfo* pRetInfo = new SbxInfo;
+ short nPar = p->nArgs & _ARGSMASK;
+ for( short i = 0; i < nPar; i++ )
+ {
+ p++;
+ String aName( p->pName, RTL_TEXTENCODING_ASCII_US );
+ USHORT nIFlags = ( p->nArgs >> 8 ) & 0x03;
+ if( p->nArgs & _OPT )
+ nIFlags |= SBX_OPTIONAL;
+ pRetInfo->AddParam( aName, p->eType, nIFlags );
+ }
+ return pRetInfo;
+}
+
+
+////////////////////////////////////////////////////////////////////////////
+
+// Hilfsmethoden für den Manager
+
+IMPL_LINK( CommunicationWrapper, Open, CommunicationLink*, pLink )
+{
+ if ( m_bCatchOpen )
+ m_pNewLink = pLink;
+ else
+ Events( CUniString("Open"), pLink );
+ return 1;
+}
+
+IMPL_LINK( CommunicationWrapper, Close, CommunicationLink*, pLink )
+{
+ Events( CUniString("Close"), pLink );
+ return 1;
+}
+
+IMPL_LINK( CommunicationWrapper, Data, CommunicationLink*, pLink )
+{
+ Events( CUniString("Data"), pLink );
+ return 1;
+}
+
+void CommunicationWrapper::Events( String aType, CommunicationLink* pLink )
+{
+ if ( m_aEventHandlerName.Len() )
+ {
+ SbxArrayRef pPar = new SbxArray( SbxVARIANT );
+ pPar->Put( new SbxVariable( SbxSTRING ), 1 );
+ pPar->Get( 1 )->PutString( aType );
+
+ pPar->Put( new SbxVariable( SbxOBJECT ), 2 );
+ pPar->Get( 2 )->PutObject( new CommunicationWrapper( pLink ) );
+
+ Call( m_aEventHandlerName, pPar );
+ }
+ else
+ delete pLink->GetServiceData(); // Stream wegschmeissen um nicht zu blockieren
+}
+
+
+////////////////////////////////////////////////////////////////////////////
+
+// Properties und Methoden legen beim Get (bPut = FALSE) den Returnwert
+// im Element 0 des Argv ab; beim Put (bPut = TRUE) wird der Wert aus
+// Element 0 gespeichert.
+
+// Die Methoden:
+
+// Manager
+void CommunicationWrapper::MStartCommunication( SbxVariable* pVar, SbxArray* pPar, BOOL /*bWrite*/ )
+{ // CommunicationLink StartCommunication( Host, Port )
+ m_bCatchOpen = TRUE;
+ if ( m_pManager->StartCommunication( ByteString( pPar->Get( 1 )->GetString(), RTL_TEXTENCODING_UTF8 ), pPar->Get( 2 )->GetULong() ) )
+ {
+ while ( !m_pNewLink )
+ GetpApp()->Reschedule();
+ m_bCatchOpen = FALSE;
+ CommunicationWrapper *pNewLinkWrapper = new CommunicationWrapper( m_pNewLink );
+ m_pNewLink = NULL;
+ pVar->PutObject( pNewLinkWrapper );
+ }
+
+}
+
+void CommunicationWrapper::MStopAllCommunication( SbxVariable* /*pVar*/, SbxArray* /*pPar*/, BOOL /*bWrite*/ )
+{ // StopAllCommunication // Alle Kommunikation wird abgebrochen
+ m_pManager->StopCommunication();
+}
+
+void CommunicationWrapper::MIsCommunicationRunning( SbxVariable* pVar, SbxArray* /*pPar*/, BOOL /*bWrite*/ )
+{ // BOOL IsCommunicationRunning // Läuft noch irgendwas
+ pVar->PutBool( m_pManager->IsCommunicationRunning() );
+}
+
+void CommunicationWrapper::MGetMyName( SbxVariable* pVar, SbxArray* /*pPar*/, BOOL /*bWrite*/ )
+{ // String GetMyName Der eigene Name
+ pVar->PutString( UniString( m_pManager->GetMyName( CM_FQDN ), RTL_TEXTENCODING_UTF8 ) );
+}
+
+void CommunicationWrapper::MIsLinkValid( SbxVariable* pVar, SbxArray* pPar, BOOL /*bWrite*/ )
+{ // BOOL IsLinkValid( CommunicationLink ) // Ist dieser Link noch gültig
+ CommunicationWrapper *pWrapper = (CommunicationWrapper*)(pPar->Get( 1 )->GetObject());
+ pVar->PutBool( m_pManager->IsLinkValid( pWrapper->GetCommunicationLink() ) );
+}
+
+void CommunicationWrapper::MSetCommunicationEventHandler( SbxVariable* /*pVar*/, SbxArray* pPar, BOOL /*bWrite*/ )
+{ // SetCommunicationEventHandler( String ) // Diese Funktion wird aufgerufen bei jedem Event
+ m_aEventHandlerName = pPar->Get( 1 )->GetString();
+}
+
+
+
+
+
+// Link
+void CommunicationWrapper::LStopCommunication( SbxVariable* /*pVar*/, SbxArray* /*pPar*/, BOOL /*bWrite*/ )
+{ // StopCommunication Die Kommunikation wird abgebrochen
+ m_pLink->StopCommunication();
+}
+
+void CommunicationWrapper::LGetMyName( SbxVariable* pVar, SbxArray* /*pPar*/, BOOL /*bWrite*/ )
+{ // String GetMyName Der eigene Name
+ pVar->PutString( UniString( m_pLink->GetMyName( CM_FQDN ), RTL_TEXTENCODING_UTF8 ) );
+}
+
+void CommunicationWrapper::LGetHostName( SbxVariable* pVar, SbxArray* /*pPar*/, BOOL /*bWrite*/ )
+{ // String GetHostName Der Name des Anderen
+ pVar->PutString( UniString( m_pLink->GetCommunicationPartner( CM_FQDN ), RTL_TEXTENCODING_UTF8 ) );
+}
+
+void CommunicationWrapper::LSend( SbxVariable* /*pVar*/, SbxArray* pPar, BOOL /*bWrite*/ )
+{ // Send(String ) String an den Partner schicken
+ SvStream *pSendStream = m_pLink->GetBestCommunicationStream();
+ String aSendString = pPar->Get( 1 )->GetString();
+ pSendStream->WriteByteString( aSendString, RTL_TEXTENCODING_UTF8 );
+ m_pLink->TransferDataStream( pSendStream );
+ delete pSendStream;
+}
+
+void CommunicationWrapper::LGetString( SbxVariable* pVar, SbxArray* /*pPar*/, BOOL /*bWrite*/ )
+{ // String GetString Ergebnis des letzten Empfangs
+ SvStream *pReceiveStream = m_pLink->GetServiceData();
+ if ( pReceiveStream )
+ {
+ ULONG nLength = pReceiveStream->Seek( STREAM_SEEK_TO_END );
+ pReceiveStream->Seek( STREAM_SEEK_TO_BEGIN );
+ char *pBuffer = new char[nLength];
+ pReceiveStream->Read( pBuffer, nLength );
+ String aReceive(
+ pBuffer, sal::static_int_cast< xub_StrLen >( nLength ),
+ RTL_TEXTENCODING_UTF8 );
+ delete [] pBuffer;
+ pVar->PutString( aReceive );
+ delete pReceiveStream;
+ }
+ else
+ pVar->PutString( UniString() );
+}
+
+
+
+// Die Factory legt unser Objekte an.
+
+SbxObject* CommunicationFactory::CreateObject( const String& rClass )
+{
+ if( rClass.CompareIgnoreCaseToAscii( "CommunicationManager" ) == COMPARE_EQUAL )
+ return new CommunicationWrapper( rClass );
+ return NULL;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/comm_bas.hxx b/automation/source/testtool/comm_bas.hxx
new file mode 100644
index 000000000000..3587efcc4806
--- /dev/null
+++ b/automation/source/testtool/comm_bas.hxx
@@ -0,0 +1,121 @@
+/* -*- 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 _COMM_BAS_HXX
+#define _COMM_BAS_HXX
+
+#include <basic/sbxfac.hxx>
+#include <basic/sbxvar.hxx>
+#include <basic/sbxobj.hxx>
+
+class CommunicationManagerClientViaSocket;
+class CommunicationLink;
+
+class CommunicationWrapper : public SbxObject // Einer für Manager und Links
+{
+ // Definition eines Tabelleneintrags. Dies wird hier gemacht,
+ // da dadurch die Methoden und Properties als private deklariert
+ // werden koennen.
+#if defined ( ICC ) || defined ( HPUX ) || defined ( C50 ) || defined ( C52 )
+public:
+#endif
+ typedef void( CommunicationWrapper::*pMeth )
+ ( SbxVariable* pThis, SbxArray* pArgs, BOOL bWrite );
+#if defined ( ICC ) || defined ( HPUX )
+private:
+#endif
+
+ struct Methods {
+ const char* pName; // Name des Eintrags
+ SbxDataType eType; // Datentyp
+ pMeth pFunc; // Function Pointer
+ short nArgs; // Argumente und Flags
+ };
+ static Methods aManagerMethods[]; // Methodentabelle
+ static Methods aLinkMethods[]; // Methodentabelle
+ Methods *m_pMethods; // Aktuelle Methodentabelle
+
+ // Methoden
+ // Manager
+ void MStartCommunication( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void MStopAllCommunication( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void MIsCommunicationRunning( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void MGetMyName( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void MIsLinkValid( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void MSetCommunicationEventHandler( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+
+ // Link
+ void LStopCommunication( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void LGetMyName( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void LGetHostName( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void LSend( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+ void LGetString( SbxVariable* pVar, SbxArray* pPar, BOOL bWrite );
+
+ // Interne Member und Methoden
+ CommunicationManagerClientViaSocket *m_pManager;
+ CommunicationLink *m_pLink;
+ BOOL m_bIsManager; // Ist es kein Manager, so ist es ein Link
+
+ // Kram für Manager
+ DECL_LINK( Open, CommunicationLink* );
+ DECL_LINK( Close, CommunicationLink* );
+ DECL_LINK( Data, CommunicationLink* );
+ void Events( String aType, CommunicationLink* pLink );
+ BOOL m_bCatchOpen;
+ CommunicationLink *m_pNewLink;
+ String m_aEventHandlerName;
+
+ using SbxVariable::GetInfo;
+ // Infoblock auffuellen
+ SbxInfo* GetInfo( short nIdx );
+
+ // Broadcaster Notification
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+public:
+ CommunicationWrapper( const String& );
+ CommunicationWrapper( CommunicationLink *pThisLink );
+ ~CommunicationWrapper();
+ // Suchen eines Elements
+ virtual SbxVariable* Find( const String&, SbxClassType );
+
+ CommunicationLink* GetCommunicationLink() { return m_pLink; }
+};
+
+
+// Die dazugehoerige Factory:
+
+class CommunicationFactory : public SbxFactory
+{
+public:
+ virtual SbxObject* CreateObject( const String& );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/cretstrm.cxx b/automation/source/testtool/cretstrm.cxx
new file mode 100644
index 000000000000..0f9781c73970
--- /dev/null
+++ b/automation/source/testtool/cretstrm.cxx
@@ -0,0 +1,73 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+#include "cretstrm.hxx"
+#include <tools/debug.hxx>
+#include "rcontrol.hxx"
+#include "svcommstream.hxx"
+
+
+SV_IMPL_REF(SbxBase)
+
+CRetStream::CRetStream(SvStream *pIn)
+{
+ pSammel = pIn;
+ delete pCommStream;
+ pCommStream = new SvCommStream( pSammel );
+}
+
+CRetStream::~CRetStream()
+{
+ delete pCommStream;
+}
+
+void CRetStream::Read ( String &aString )
+{
+ comm_UniChar* pStr;
+ USHORT nLenInChars;
+ CmdBaseStream::Read( pStr, nLenInChars );
+
+ aString = String( pStr, nLenInChars );
+ delete [] pStr;
+}
+
+void CRetStream::Read( SbxValue &aValue )
+{
+ *pSammel >> nId;
+ if (nId != BinSbxValue)
+ {
+ DBG_ERROR1( "Falscher Typ im Stream: Erwartet SbxValue, gefunden :%hu", nId );
+ }
+ SbxBaseRef xBase = SbxBase::Load( *pSammel );
+ if ( IS_TYPE( SbxValue, xBase ) )
+ aValue = *PTR_CAST( SbxValue, &xBase );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/cretstrm.hxx b/automation/source/testtool/cretstrm.hxx
new file mode 100644
index 000000000000..206d74db33ba
--- /dev/null
+++ b/automation/source/testtool/cretstrm.hxx
@@ -0,0 +1,58 @@
+/* -*- 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 _CRETSTRM_HXX
+#define _CRETSTRM_HXX
+
+#include <tools/stream.hxx>
+#include <basic/sbxvar.hxx>
+
+#include "cmdbasestream.hxx"
+
+class CRetStream : public CmdBaseStream
+{
+ SvStream *pSammel;
+ USHORT nId;
+
+public:
+ CRetStream( SvStream *pIn );
+ ~CRetStream();
+
+ using CmdBaseStream::Read;
+ void Read ( comm_USHORT &nNr ){CmdBaseStream::Read ( nNr );}
+ void Read ( comm_ULONG &nNr ){CmdBaseStream::Read ( nNr );}
+// void Read ( comm_UniChar* &aString, comm_USHORT &nLenInChars ){CmdBaseStream::Read ( aString, nLenInChars );}
+ virtual void Read ( SmartId* &pId ){CmdBaseStream::Read ( pId );}
+ void Read ( comm_BOOL &bBool ){CmdBaseStream::Read ( bBool );}
+// new
+ void Read( String &aString );
+ void Read( SbxValue &aValue );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/filter.pl b/automation/source/testtool/filter.pl
new file mode 100644
index 000000000000..8f45073b0934
--- /dev/null
+++ b/automation/source/testtool/filter.pl
@@ -0,0 +1,125 @@
+#!/usr/bin/perl
+#*************************************************************************
+#*
+# 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.
+#
+#************************************************************************/
+
+$debug = "";
+$ctrue = 1;
+$cfalse = 0;
+# reads a block
+# Parameter: FileHandle
+# list of Regular Expressions which terminate the block.
+# for '#ifdef' block would then be ("^#else\$", "^#endif\$")
+
+sub read_block {
+
+ local($file) = @_;
+ print "reading block '$file' ",scalar(@_),"\n" if $debug;
+ while ( <$file> ) {
+ chop;
+ s/\s*$//; # remove trailing whitespaces
+ s/^\s*//; # remove leading whitespaces
+ print "Input : \"$_\"\n" if $debug;
+ s/\/\/.*//; # Remove line comment
+ s/\/\*.*?\*\///g; # remove comments within one line
+ s/\s+/ /g; # Change all whitespace into a single blank
+ s/ *$//; # Remove whitespace at end
+ s/^# /#/; # Change # <command> to #<command>
+
+
+ @line = split(/ /,$_,3);
+
+ $_ = $line[0];
+ if ( $_ && /^#/ ) { # Line starts with '#' -> preprocessor command
+ print "proccessing line: @line\n" if $debug;
+ if (/#define/)
+ {
+ if ( $line[1] =~ /^$namefilter/ )
+ {
+ $mykey = $line[1];
+ $mykey =~ s/^$namefilter//;
+ $count += 1;
+ print OUT "$mykey ", $line[2], "\n";
+ print OUT2 "\t{ \"$mykey\", ", $line[2] ," },\n";
+ }
+ }
+ }
+ }
+ print "Leaving read_block at the end\n" if $debug;
+}
+
+# Read a file.
+# first parameter ist the filename
+sub read_file {
+
+ local ($filename,$file) = @_;
+ $file++; # String increment
+ local $TempFileName = $basename."/".$filename;
+ print "reading file $TempFileName as $file\n" if $debug;
+ open($file, $TempFileName) || die "error: Could not open file $TempFileName. ";
+
+ &read_block($file); # read data
+ close($file);
+ print "done reading $filename\n" if $debug;
+}
+
+# main starts here
+
+$basename = ".";
+$basename = $ARGV[0] if defined($ARGV[0]);
+
+$filename = "app.hrc";
+$filename = $ARGV[1] if defined($ARGV[1]);
+
+
+$outfilebase = $filename;
+$outfilebase =~ s/\.[^.]+$//; # cut off suffix
+$outfilebase = $ARGV[2] if defined($ARGV[2]);
+
+
+$namefilter = $ARGV[3] if defined($ARGV[3]);
+
+
+print "Generating $outfilebase:\n";
+
+$count = 0;
+
+open(OUT,">$outfilebase");
+open(OUT2,">$outfilebase.hxx");
+print OUT2 "\{\n";
+
+&read_file ($filename,"f00");
+
+print OUT2 "\t{ \"\" ,0 }\n\};\n";
+
+close(OUT);
+close(OUT2);
+
+if ( $count == 0 )
+{
+ die "Error: No Entries Found generating \"$outfilebase.hxx\". Testtool will not work!"
+}
+
diff --git a/automation/source/testtool/httprequest.cxx b/automation/source/testtool/httprequest.cxx
new file mode 100644
index 000000000000..beb8f4c4d0d7
--- /dev/null
+++ b/automation/source/testtool/httprequest.cxx
@@ -0,0 +1,239 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+#include <stdio.h>
+#include "httprequest.hxx"
+#include <osl/socket.hxx>
+#include <tools/debug.hxx>
+
+
+void HttpRequest::Init()
+{
+ nResultId = 0;
+ aHeader.Erase();
+ aContentType.Erase();
+ delete pStream;
+ pStream = NULL;
+}
+
+HttpRequest::HttpRequest()
+: nStatus( HTTP_INIT )
+, nResultId( 0 )
+, pStream( NULL )
+{}
+
+HttpRequest::~HttpRequest()
+{
+ delete pStream;
+ pStream = NULL;
+}
+
+void HttpRequest::SetRequest( ByteString aHost, ByteString aPath, USHORT nPort )
+{
+ nStatus = HTTP_REQUEST_SET;
+ Init();
+ aRequestHost = aHost;
+ aRequestPath = aPath;
+ nRequestPort = nPort;
+}
+
+void HttpRequest::SetProxy( ByteString aHost, USHORT nPort )
+{
+ nStatus = HTTP_REQUEST_SET;
+ Init();
+ aProxyHost = aHost;
+ nProxyPort = nPort;
+}
+
+BOOL HttpRequest::Execute()
+{
+ nStatus = HTTP_REQUEST_PENDING;
+ Init();
+
+ // Open channel to standard redir host
+ osl::SocketAddr aConnectAddr;
+
+ if ( aProxyHost.Len() )
+ {
+ aConnectAddr = osl::SocketAddr( rtl::OUString( UniString( aProxyHost, RTL_TEXTENCODING_UTF8 ) ), nProxyPort );
+ }
+ else
+ {
+ aConnectAddr = osl::SocketAddr( rtl::OUString( UniString( aRequestHost, RTL_TEXTENCODING_UTF8 ) ), nRequestPort );
+ }
+
+ TimeValue aTV;
+ aTV.Seconds = 10; // Warte 10 Sekunden
+ aTV.Nanosec = 0;
+
+ pOutSocket = new osl::ConnectorSocket();
+ if ( pOutSocket->connect( aConnectAddr, &aTV ) == osl_Socket_Ok )
+ {
+// pOutSocket->setTcpNoDelay( 1 );
+ }
+ else
+ {
+ delete pOutSocket;
+ nStatus = HTTP_REQUEST_ERROR;
+ return FALSE;
+ }
+
+
+ SendString( pOutSocket, "GET " );
+ if ( aProxyHost.Len() )
+ {
+ //GET http://staroffice-doc.germany.sun.com/cgi-bin/htdig/binarycopy.sh?CopyIt=++CopyIt++ HTTP/1.0
+ SendString( pOutSocket, "http://" );
+ SendString( pOutSocket, aRequestHost );
+ SendString( pOutSocket, ":" );
+ SendString( pOutSocket, ByteString::CreateFromInt32( nRequestPort ) );
+ SendString( pOutSocket, aRequestPath );
+ SendString( pOutSocket, " HTTP/1.0\n" );
+
+ SendString( pOutSocket, "Proxy-Connection: Keep-Alive\n" );
+ }
+ else
+ {
+ //GET /cgi-bin/htdig/binarycopy.sh?CopyIt=++CopyIt++ HTTP/1.0
+ SendString( pOutSocket, aRequestPath );
+ SendString( pOutSocket, " HTTP/1.0\n" );
+
+ SendString( pOutSocket, "Connection: Keep-Alive\n" );
+ }
+
+ SendString( pOutSocket, "User-Agent: Mozilla/4.7 [de] (Linux; I)" );
+ SendString( pOutSocket, "Host: " );
+ SendString( pOutSocket, aRequestHost );
+ // Terminate with empty line
+ SendString( pOutSocket, "\n\n" );
+
+
+
+#define BUFFRE_SIZE 0x10000 // 64K Buffer
+ char* pBuffer = new char[ BUFFRE_SIZE ];
+
+ BOOL bWasError = ( nStatus != HTTP_REQUEST_PENDING );
+
+ ULONG nDataRead;
+ pStream = new SvMemoryStream( 0x10000, 0x10000 );
+ while ( !bWasError )
+ {
+ bWasError |= ( BUFFRE_SIZE != ( nDataRead = pOutSocket->read( pBuffer, BUFFRE_SIZE ) ) );
+
+ pStream->Write( pBuffer, nDataRead );
+ }
+
+ delete [] pBuffer;
+ pOutSocket->shutdown();
+ pOutSocket->close();
+
+ pStream->Seek( 0 );
+
+ ByteString aLine;
+ BOOL bInsideHeader = TRUE;
+ while ( bInsideHeader )
+ {
+ pStream->ReadLine( aLine );
+ if ( !aLine.Len() )
+ bInsideHeader = FALSE;
+ else
+ {
+ if ( IsItem( "HTTP/", aLine ) )
+ nResultId = (USHORT)aLine.GetToken( 1, ' ' ).ToInt32();
+ if ( IsItem( "Content-Type:", aLine ) )
+ {
+ aContentType = aLine.Copy( 13 );
+ aContentType.EraseLeadingAndTrailingChars();
+ }
+ aHeader += aLine;
+ aHeader += "\n";
+ }
+ }
+
+ if ( nStatus == HTTP_REQUEST_PENDING )
+ {
+ nStatus = HTTP_REQUEST_DONE;
+ return TRUE;
+ }
+ else
+ {
+ nStatus = HTTP_REQUEST_ERROR;
+ return FALSE;
+ }
+}
+/*
+HTTP/1.1 200 OK
+Date: Tue, 22 Jan 2002 14:16:20 GMT
+Server: Apache/1.3.14 (Unix) (SuSE/Linux) mod_throttle/3.0 mod_layout/1.0 mod_f
+astcgi/2.2.2 mod_jk
+Set-Cookie2: JSESSIONID=ffkpgb7tm1;Version=1;Discard;Path="/bugtracker"
+Set-Cookie: JSESSIONID=ffkpgb7tm1;Path=/bugtracker
+Servlet-Engine: Tomcat Web Server/3.2.1 (JSP 1.1; Servlet 2.2; Java 1.3.0; Linux
+ 2.4.0-4GB i386; java.vendor=Sun Microsystems Inc.)
+Connection: close
+Content-Type: text/xml; charset=ISO-8859-1
+ */
+void HttpRequest::SendString( osl::StreamSocket* pSocket , ByteString aText )
+{
+ if ( nStatus == HTTP_REQUEST_PENDING )
+ pSocket->write( aText.GetBuffer(), aText.Len() );
+}
+
+BOOL HttpRequest::IsItem( ByteString aItem, ByteString aLine )
+{
+ return aItem.Match( aLine ) == STRING_MATCH;
+}
+
+
+void HttpRequest::Abort()
+{
+ if ( pOutSocket )
+ {
+ nStatus = HTTP_REQUEST_ERROR;
+ pOutSocket->shutdown();
+ pOutSocket->close();
+ }
+}
+
+
+
+
+SvMemoryStream* HttpRequest::GetBody()
+{
+ return pStream;
+}
+
+USHORT HttpRequest::GetStatus()
+{
+ return nStatus;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/httprequest.hxx b/automation/source/testtool/httprequest.hxx
new file mode 100644
index 000000000000..af8ad673a17d
--- /dev/null
+++ b/automation/source/testtool/httprequest.hxx
@@ -0,0 +1,88 @@
+/* -*- 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 _HTTPREQUEST_HXX_
+#define _HTTPREQUEST_HXX_
+
+#define HTTP_INIT 0
+#define HTTP_REQUEST_SET 1
+#define HTTP_REQUEST_PENDING 2
+#define HTTP_REQUEST_DONE 3
+#define HTTP_REQUEST_ERROR 4
+
+#include <tools/string.hxx>
+#include <tools/stream.hxx>
+
+namespace osl
+{
+ class StreamSocket;
+ class ConnectorSocket;
+}
+
+class HttpRequest
+{
+ ByteString aRequestPath;
+ ByteString aRequestHost;
+ USHORT nRequestPort;
+ ByteString aProxyHost;
+ USHORT nProxyPort;
+
+ USHORT nStatus;
+ osl::ConnectorSocket *pOutSocket;
+
+ ByteString aHeader;
+ USHORT nResultId;
+ ByteString aContentType;
+ SvMemoryStream* pStream;
+
+ void SendString( osl::StreamSocket* pSocket, ByteString aText );
+ BOOL IsItem( ByteString aItem, ByteString aLine );
+ void Init();
+public:
+ HttpRequest();
+ ~HttpRequest();
+
+ void SetRequest( ByteString aHost, ByteString aPath, USHORT nPort );
+ void SetProxy( ByteString aHost, USHORT nPort );
+
+ BOOL Execute();
+ void Abort();
+
+ ByteString GetHeader() { return aHeader; }
+ SvMemoryStream* GetBody();
+
+ ByteString GetContentType() { return aContentType; }
+ USHORT GetResultId() { return nResultId; }
+
+ USHORT GetStatus();
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/makefile.mk b/automation/source/testtool/makefile.mk
new file mode 100644
index 000000000000..db8464130c1b
--- /dev/null
+++ b/automation/source/testtool/makefile.mk
@@ -0,0 +1,109 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=automation
+TARGET=testtool
+
+# --- Settings ------------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ------------------------------------------------------------
+
+OBJFILES = \
+ $(OBJ)$/cmdstrm.obj \
+ $(OBJ)$/cretstrm.obj \
+ $(OBJ)$/objtest.obj \
+ $(OBJ)$/tcommuni.obj \
+ $(OBJ)$/comm_bas.obj \
+ $(OBJ)$/httprequest.obj \
+
+
+EXCEPTIONSFILES= \
+ $(OBJ)$/tcommuni.obj \
+ $(OBJ)$/cmdstrm.obj \
+ $(OBJ)$/objtest.obj
+
+HXXFILES = $(INCCOM)$/keycodes.hxx \
+ $(INCCOM)$/classes.hxx \
+ $(INCCOM)$/r_cmds.hxx \
+ $(INCCOM)$/res_type.hxx
+
+.IF "$(GUI)" == "WNT"
+OBJFILES += $(OBJ)$/sysdir_win.obj
+OBJFILES += $(OBJ)$/registry_win.obj
+.ENDIF
+# --- Targets ------------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+$(OBJFILES) : $(HXXFILES)
+$(HXXFILES) : $(MISC)$/xfilter.pl
+
+
+$(INCCOM)$/keycodes.hxx : $(SOLARVERSION)$/$(INPATH)$/inc$(UPDMINOREXT)$/vcl$/keycodes.hxx \
+ $(MISC)$/xfilter.pl
+ $(PERL) $(MISC)$/xfilter.pl $(SOLARVERSION)$/$(INPATH)$/inc$(UPDMINOREXT) vcl$/keycodes.hxx $(INCCOM)$/keycodes KEY_
+
+$(INCCOM)$/classes.hxx : ..$/inc$/rcontrol.hxx \
+ $(MISC)$/xfilter.pl
+ $(PERL) $(MISC)$/xfilter.pl ..$/inc rcontrol.hxx $(INCCOM)$/classes M_
+
+$(INCCOM)$/r_cmds.hxx : ..$/inc$/rcontrol.hxx \
+ $(MISC)$/xfilter.pl
+ $(PERL) $(MISC)$/xfilter.pl ..$/inc rcontrol.hxx $(INCCOM)$/r_cmds RC_
+
+$(INCCOM)$/res_type.hxx : $(SOLARVERSION)$/$(INPATH)$/inc$(UPDMINOREXT)$/tools$/wintypes.hxx \
+ $(MISC)$/xfilter.pl
+ $(PERL) $(MISC)$/xfilter.pl $(SOLARVERSION)$/$(INPATH)$/inc$(UPDMINOREXT) tools$/wintypes.hxx $(INCCOM)$/res_type WINDOW_
+
+
+
+$(MISC)$/xfilter.pl : filter.pl
+ tr -d "\015" < filter.pl > $(MISC)$/xfilter.pl
+ chmod 664 $(MISC)$/xfilter.pl
+
+
+
+.IF "$(GUI)"=="UNX"
+INIFILESUFFIX=rc
+BRANDPATH=none
+.ELIF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
+INIFILESUFFIX=.ini
+BRANDPATH=..
+.END
+
+$(BIN)$/testtool$(INIFILESUFFIX): testtool.ini
+ $(SED) -e s/$(EMQ)!INIFILESUFFIX$(EMQ)!/$(INIFILESUFFIX)/ \
+ -e s/$(EMQ)!BRANDPATH$(EMQ)!/$(BRANDPATH)/ < $< > $@
+
+ALLTAR: \
+ $(BIN)$/testtool$(INIFILESUFFIX)
+
diff --git a/automation/source/testtool/objtest.cxx b/automation/source/testtool/objtest.cxx
new file mode 100644
index 000000000000..8143700f7cd8
--- /dev/null
+++ b/automation/source/testtool/objtest.cxx
@@ -0,0 +1,4258 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+#ifdef OS2
+#define INCL_DOS
+#include <svpm.h>
+#endif
+
+#include "sysdir_win.hxx"
+#include "registry_win.hxx"
+#include "sttresid.hxx"
+#include <osl/file.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+#include <tools/config.hxx>
+#include <vcl/svapp.hxx>
+#include <svtools/stringtransfer.hxx>
+#include <svl/brdcst.hxx>
+//#ifndef _SBXCLASS_HXX //autogen
+#include <basic/sbx.hxx>
+//#endif
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/bridge/XBridgeFactory.hpp>
+#include <com/sun/star/connection/XConnector.hpp>
+#include <com/sun/star/connection/XConnection.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uno/XNamingService.hpp>
+
+#include <cppuhelper/servicefactory.hxx>
+
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::frame;
+using namespace com::sun::star::bridge;
+using namespace com::sun::star::connection;
+using namespace rtl;
+
+
+#include <svtools/svmedit.hxx>
+
+#ifdef UNX
+#include <unistd.h> // readlink
+#include <errno.h>
+#endif
+
+#include <basic/sbuno.hxx>
+
+#include <basic/basicrt.hxx>
+#include <basic/ttstrhlp.hxx>
+#include "tcommuni.hxx"
+#include "comm_bas.hxx"
+#include <cretstrm.hxx>
+
+#include "objtest.hxx"
+#include "rcontrol.hxx"
+
+#include <basic/testtool.hrc>
+#include <basic/ttmsg.hrc>
+
+#include <basic/mybasic.hxx>
+#include <basic/testtool.hxx>
+#include <basic/sbstar.hxx>
+
+#include <algorithm>
+
+#ifndef SBX_VALUE_DECL_DEFINED
+#define SBX_VALUE_DECL_DEFINED
+SV_DECL_REF(SbxValue)
+#endif
+SV_IMPL_REF(SbxValue)
+
+static CommunicationFactory aComManFac;
+
+#define cMyDelim ' '
+#define P_FEHLERLISTE pFehlerListe
+#define KEEP_SEQUENCES 100 // Keep Names of last 100 Calls
+
+
+ControlDefLoad __READONLY_DATA Controls::arClasses [] =
+#include "classes.hxx"
+CNames *Controls::pClasses = NULL;
+
+ControlDefLoad __READONLY_DATA TestToolObj::arR_Cmds [] =
+#include "r_cmds.hxx"
+CNames *TestToolObj::pRCommands = NULL;
+CErrors *TestToolObj::pFehlerListe = NULL; // Hier werden die Fehler des Testtools gespeichert
+
+
+DBG_NAME( ControlItem )
+DBG_NAME( ControlDef )
+
+ControlItem::ControlItem( const sal_Char *Name, SmartId aUIdP )
+{
+DBG_CTOR(ControlItem,0);
+ InitData();
+ pData->Kurzname.AssignAscii( Name );
+ pData->aUId = aUIdP;
+}
+
+ControlItem::ControlItem( const String &Name, SmartId aUIdP )
+{
+DBG_CTOR(ControlItem,0);
+ InitData();
+ pData->Kurzname = Name;
+ pData->aUId = aUIdP;
+}
+
+/*ControlItem::ControlItem( const String &Name, const String &URL, const URLType aType )
+{
+DBG_CTOR(ControlItem,0);
+ InitData();
+ pData->Kurzname = Name;
+ pData->aURL = URL;
+ pData->nUId = aType;
+}
+
+ControlItem::ControlItem( const String &Name, const String &URL, const ULONG nUId )
+{
+DBG_CTOR(ControlItem,0);
+ InitData();
+ pData->Kurzname = Name;
+ pData->aURL = URL;
+ pData->nUId = nUId;
+}
+
+ControlItem::ControlItem( const char *Name, const String &URL, const ULONG nUId )
+{
+DBG_CTOR(ControlItem,0);
+ InitData();
+ pData->Kurzname.AssignAscii( Name );
+ pData->aURL = URL;
+ pData->nUId = nUId;
+} */
+
+
+ControlItem::ControlItem( ControlData *pDataP )
+{
+DBG_CTOR(ControlItem,0);
+ pData = pDataP;
+}
+
+ControlSon::~ControlSon()
+{
+ if (pSons)
+ {
+ delete pSons;
+ pSons = NULL;
+ }
+}
+
+ControlItemSon::ControlItemSon(const String &Name, SmartId aUIdP )
+: ControlItem( Name, aUIdP )
+{}
+
+/*ControlItemSon::ControlItemSon(const String &Name, const String &URL, const URLType aType )
+: ControlItem( Name, URL, aType )
+{}
+
+ControlItemSon::ControlItemSon(const String &Name, const String &URL, const ULONG nUId )
+: ControlItem( Name, URL, nUId )
+{}
+
+ControlItemSon::ControlItemSon(const char *Name, const String &URL, const ULONG nUId )
+: ControlItem( Name, URL, nUId )
+{}*/
+
+
+
+BOOL ControlDef::operator < (const ControlItem &rPar)
+{
+ return pData->Kurzname.CompareIgnoreCaseToAscii(rPar.pData->Kurzname) == COMPARE_LESS;
+}
+
+BOOL ControlDef::operator == (const ControlItem &rPar)
+{
+ return pData->Kurzname.CompareIgnoreCaseToAscii(rPar.pData->Kurzname) == COMPARE_EQUAL;
+}
+
+void ControlDef::Write( SvStream &aStream )
+{
+ if ( pSons )
+ aStream.WriteByteString( String('*').Append( pData->Kurzname ), RTL_TEXTENCODING_UTF8 );
+ else
+ aStream.WriteByteString( pData->Kurzname, RTL_TEXTENCODING_UTF8 );
+ aStream << ((USHORT)pData->aUId.HasNumeric());
+ if ( pData->aUId.HasString() )
+ aStream.WriteByteString( pData->aUId.GetStr(), RTL_TEXTENCODING_UTF8 );
+ else
+ aStream << static_cast<comm_ULONG>(pData->aUId.GetNum()); //GetNum() ULONG != comm_ULONG on 64bit
+ if ( pSons )
+ for ( USHORT i = 0 ; pSons->Count() > i ; i++ )
+ ((ControlDef*)(*pSons)[i])->Write(aStream);
+}
+
+ControlDef::ControlDef(const String &Name, SmartId aUIdP )
+: ControlItemSon( Name, aUIdP)
+{
+ DBG_CTOR(ControlDef,0);
+}
+
+/*ControlDef::ControlDef(const String &Name, const String &URL, const URLType aType )
+: ControlItemSon( Name, URL, aType )
+{
+ DBG_CTOR(ControlDef,0);
+} */
+
+ControlDef::ControlDef(const String &aOldName, const String &aNewName, ControlDef *pOriginal, BOOL bWithSons )
+: ControlItemSon("", pOriginal->pData->aUId)
+{
+ DBG_CTOR(ControlDef,0);
+ if ( pOriginal->pData->Kurzname == aOldName )
+ pData->Kurzname = aNewName;
+ else
+ pData->Kurzname = pOriginal->pData->Kurzname;
+
+ if ( bWithSons && pOriginal->pSons )
+ {
+ pSons = new CNames();
+ for ( USHORT i = 0; i < pOriginal->pSons->Count() ; i++)
+ {
+ ControlDef *pNewDef;
+ pNewDef = new ControlDef( aOldName, aNewName, pOriginal->SonGetObject(i) ,TRUE );
+ if (! SonInsert(pNewDef))
+ {
+ DBG_ERROR("Name Doppelt im CopyConstructor. Neuer Name = Controlname!!");
+ delete pNewDef;
+ }
+ }
+
+ }
+ else
+ pSons = NULL;
+}
+
+BOOL ControlItemUId::operator < (const ControlItem &rPar)
+{
+ return pData->aUId < rPar.pData->aUId;
+}
+
+BOOL ControlItemUId::operator == (const ControlItem &rPar)
+{
+ return pData->aUId == rPar.pData->aUId;
+}
+
+SV_IMPL_OP_PTRARR_SORT( CNames, ControlItem* )
+
+void CRevNames::Insert( String aName, SmartId aUId, ULONG nSeq )
+{
+ ControlItem *pRN = new ReverseName(aName,aUId,nSeq);
+ USHORT nPos;
+ if ( Seek_Entry(pRN,&nPos) )
+ DeleteAndDestroy(nPos);
+
+ if ( !CNames::C40_PTR_INSERT( ControlItem, pRN) )
+ {
+ DBG_ERROR("Interner Fehler beim Speichern der Lokalen KurzNamen");
+ delete pRN;
+ }
+
+}
+
+String CRevNames::GetName( SmartId aUId )
+{
+ ReverseName *pRN = new ReverseName(UniString(),aUId,0);
+ USHORT nPos;
+ BOOL bSeekOK = Seek_Entry(pRN,&nPos);
+
+ delete pRN;
+ if ( bSeekOK )
+ return GetObject(nPos)->pData->Kurzname;
+ else
+ {
+ if ( aUId.Matches( UID_ACTIVE ) )
+ return CUniString("Active");
+ else
+ return GEN_RES_STR1( S_NAME_NOT_THERE, aUId.GetText() );
+ }
+}
+
+void CRevNames::Invalidate ( ULONG nSeq )
+{
+ USHORT i;
+ for (i = 0; i < Count() ;)
+ {
+ if (((ReverseName*)GetObject(i))->LastSequence < nSeq)
+ DeleteAndDestroy(i);
+ else
+ i++;
+ }
+}
+
+
+SV_IMPL_PTRARR(CErrors, ErrorEntry*)
+
+
+SbxTransportMethod::SbxTransportMethod( SbxDataType DT )
+: SbxMethod(CUniString("Dummy"),DT)
+{
+ nValue = 0;
+}
+
+
+TestToolObj::TestToolObj( String aName, String aFilePath ) // Interner Aufruf
+: SbxObject( aName )
+, bUseIPC(FALSE)
+, bReturnOK(TRUE)
+, nSequence(KEEP_SEQUENCES)
+, ProgPath()
+, IsBlock(FALSE)
+, SingleCommandBlock(TRUE)
+, m_pControls(NULL)
+, m_pNameKontext(NULL)
+, m_pSIds(NULL)
+, m_pReverseSlots(NULL)
+, m_pReverseControls(NULL)
+, m_pReverseControlsSon(NULL)
+, m_pReverseUIds(NULL)
+, pCommunicationManager(NULL)
+, aDialogHandlerName()
+, nWindowHandlerCallLevel(0)
+, nIdleCount(0)
+{
+ pImpl = new ImplTestToolObj;
+ pImpl->ProgParam = String();
+ pImpl->aFileBase = DirEntry(aFilePath);
+// pImpl->aLogFileBase = DirEntry();
+ pImpl->aHIDDir = DirEntry(aFilePath);
+ pImpl->bIsStart = FALSE;
+ pImpl->pMyBasic = NULL;
+
+ pImpl->aServerTimeout = Time(0,1,00); // 1:00 Minuten fest
+ InitTestToolObj();
+}
+
+TestToolObj::TestToolObj( String aName, MyBasic* pBas ) // Aufruf im Testtool
+: SbxObject( aName )
+, bUseIPC(TRUE)
+, bReturnOK(TRUE)
+, nSequence(KEEP_SEQUENCES)
+, ProgPath()
+, IsBlock(FALSE)
+, SingleCommandBlock(TRUE)
+, m_pControls(NULL)
+, m_pNameKontext(NULL)
+, m_pSIds(NULL)
+, m_pReverseSlots(NULL)
+, m_pReverseControls(NULL)
+, m_pReverseControlsSon(NULL)
+, m_pReverseUIds(NULL)
+, pCommunicationManager(NULL)
+, aDialogHandlerName()
+, nWindowHandlerCallLevel(0)
+, nIdleCount(0)
+{
+ pImpl = new ImplTestToolObj;
+ pImpl->ProgParam = String();
+ pImpl->bIsStart = FALSE;
+ pImpl->pMyBasic = pBas;
+
+ LoadIniFile();
+ InitTestToolObj();
+
+ pCommunicationManager = new CommunicationManagerClientViaSocketTT();
+ pCommunicationManager->SetDataReceivedHdl( LINK( this, TestToolObj, ReturnResultsLink ));
+}
+
+void TestToolObj::LoadIniFile() // Laden der IniEinstellungen, die durch den ConfigDialog ge�ndert werden k�nnen
+{
+#define GETSET(aVar, KeyName, Dafault) \
+ { \
+ ByteString __##aVar##__; \
+ __##aVar##__ = aConf.ReadKey(KeyName); \
+ if ( !__##aVar##__.Len() ) \
+ { \
+ __##aVar##__ = Dafault; \
+ aConf.WriteKey(KeyName, __##aVar##__); \
+ } \
+ aVar = UniString( __##aVar##__, RTL_TEXTENCODING_UTF8 );\
+ }
+
+#define NEWOLD( NewKey, OldKey ) \
+ { \
+ ByteString aValue; \
+ if ( ( (aValue = aConf.ReadKey( OldKey )).Len() ) && !aConf.ReadKey( NewKey ).Len() ) \
+ aConf.WriteKey( NewKey, aValue ); \
+ }
+
+
+ Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") ));
+ aConf.SetGroup("Misc");
+ ByteString aCurrentProfile = aConf.ReadKey( "CurrentProfile", "Path" );
+ aConf.SetGroup( aCurrentProfile );
+
+ NEWOLD( "BaseDir", "Basisverzeichnis" )
+ String aFB;
+ GETSET( aFB, "BaseDir", "" );
+ pImpl->aFileBase = DirEntry(aFB);
+
+ // remove old keys
+ if ( aConf.ReadKey("KeyCodes + Classes").Len() != 0 ||
+ aConf.ReadKey("KeyCodes + Classes + Res_Type").Len() != 0 )
+ {
+ aConf.DeleteKey("KeyCodes + Classes + Res_Type");
+ aConf.DeleteKey("KeyCodes + Classes");
+ }
+
+ NEWOLD( "LogBaseDir", "LogBasisverzeichnis" )
+ String aLFB;
+ GETSET( aLFB, "LogBaseDir", ByteString( aFB, RTL_TEXTENCODING_UTF8 ) );
+ pImpl->aLogFileBase = DirEntry(aLFB);
+
+ NEWOLD( "HIDDir", "HIDVerzeichnis" )
+ String aHID;
+ GETSET( aHID, "HIDDir", "" );
+ pImpl->aHIDDir = DirEntry(aHID);
+
+
+ aConf.SetGroup("Misc");
+
+ String aST;
+ GETSET( aST, "ServerTimeout", ByteString::CreateFromInt64(Time(0,0,45).GetTime()) ); // 45 Sekunden Initial
+ pImpl->aServerTimeout = Time(ULONG(aST.ToInt64()));
+
+ String aSOSE;
+ aCurrentProfile = aConf.ReadKey( "CurrentProfile", "Misc" );
+ aConf.SetGroup( aCurrentProfile );
+ GETSET( aSOSE, "StopOnSyntaxError", "0" );
+ pImpl->bStopOnSyntaxError = aSOSE.EqualsAscii("1");
+
+
+ aConf.SetGroup("GUI Platform");
+
+ String aGP;
+ ByteString abGP;
+#ifdef WNT
+ abGP.Append( "501" ); // WinXP
+#elif defined SOLARIS && defined SPARC
+ abGP.Append( "01" ); // Solaris SPARC
+#elif defined SCO
+ abGP.Append( "02" ); // SCO UNIX
+#elif defined LINUX && defined INTEL
+ abGP.Append( "03" ); // Linux
+#elif defined AIX
+ abGP.Append( "04" );
+#elif defined SOLARIS && defined INTEL
+ abGP.Append( "05" ); // Solaris x86
+#elif defined HPUX
+ abGP.Append( "07" );
+#elif defined FREEBSD
+ abGP.Append( "08" );
+#elif defined MACOSX
+ abGP.Append( "12" );
+#elif defined LINUX && defined PPC
+ abGP.Append( "13" );
+#elif defined NETBSD && defined INTEL
+ abGP.Append( "14" ); // NetBSD/i386
+#elif defined LINUX && defined X86_64
+ abGP.Append( "15" ); // Linux x86-64
+#elif defined LINUX && defined SPARC
+ abGP.Append( "16" ); // Linux SPARC
+#elif defined OS2
+ abGP.Append( "17" );
+#elif defined LINUX && defined MIPS
+ abGP.Append( "18" ); // Linux MIPS
+#elif defined LINUX && defined ARM
+ abGP.Append( "19" ); // Linux ARM
+#elif defined LINUX && defined IA64
+ abGP.Append( "20" ); // Linux ia64
+#elif defined LINUX && defined S390
+ abGP.Append( "21" ); // Linux S390
+#elif defined LINUX && defined HPPA
+ abGP.Append( "22" ); // Linux PA-RISC
+#elif defined LINUX && defined AXP
+ abGP.Append( "23" ); // Linux ALPHA
+#elif defined NETBSD && defined X86_64
+ abGP.Append( "24" ); // NetBSD/amd64
+#elif defined OPENBSD && defined X86
+ abGP.Append( "25" ); // OpenBSD/i386
+#elif defined OPENBSD && defined X86_64
+ abGP.Append( "26" ); // OpenBSD/amd64
+#else
+#error ("unknown platform. please request an ID for your platform on qa/dev")
+#endif
+ GETSET( aGP, "Current", abGP );
+
+// #i68804# Write default Communication section to testtoolrc/.ini
+// this is not fastest but too keep defaultsettings in one place in the code
+ GetHostConfig();
+ GetTTPortConfig();
+ GetUnoPortConfig();
+}
+
+#define MAKE_TT_KEYWORD( cName, aType, aResultType, nID ) \
+{ \
+ SbxVariableRef pMeth; \
+ pMeth = Make( CUniString(cName), aType, aResultType ); \
+ pMeth->SetUserData( nID ); \
+}
+
+// SetUserData muß irgendwas sein, sonst wird es im Find rausgefiltert!!!
+#define MAKE_USHORT_CONSTANT(cName, nValue) \
+ { \
+ SbxProperty *pVal = new SbxProperty( CUniString( cName) , SbxINTEGER ); \
+ pVal->PutInteger( nValue ) ; \
+ pVal->SetUserData( 32000 ); \
+ Insert( pVal ); \
+ }
+
+#define RTLNAME "@SBRTL" // copied from basic/source/classes/sb.cxx
+
+void TestToolObj::InitTestToolObj()
+{
+ pImpl->nNumBorders = 0; // F�r Profiling mit k�stchen
+
+ pImpl->nMinRemoteCommandDelay = 0;
+ pImpl->nMaxRemoteCommandDelay = 0;
+ pImpl->bDoRemoteCommandDelay = FALSE;
+
+ pImpl->bLnaguageExtensionLoaded= FALSE;
+ pImpl->pTTSfxBroadcaster = NULL;
+
+ pImpl->nErrorCount = 0;
+ pImpl->nWarningCount = 0;
+ pImpl->nQAErrorCount = 0;
+ pImpl->nIncludeFileWarningCount = 0;
+
+ pImpl->xErrorList = new SbxDimArray( SbxSTRING );
+ pImpl->xWarningList = new SbxDimArray( SbxSTRING );
+ pImpl->xQAErrorList = new SbxDimArray( SbxSTRING );
+ pImpl->xIncludeFileWarningList = new SbxDimArray( SbxSTRING );
+
+ pImpl->nTestCaseLineNr = 0;
+
+ pImpl->bEnableQaErrors = TRUE;
+ pImpl->bDebugFindNoErrors = FALSE;
+
+ pImpl->pChildEnv = new Environment;
+
+ if (!pFehlerListe)
+ pFehlerListe = new CErrors; // Vor allem anderen. Wer weiss, wer alles einen Fehler ausl�st.
+
+ In = new CmdStream();
+
+ pShortNames = new CRevNames;
+
+ pImpl->pHttpRequest = NULL;
+
+// overwrite standard "wait" method, cause we can do better than that!!
+// Insert Object into SbiStdObject but change listening.
+ SbxVariable* pRTL = pImpl->pMyBasic->Find( CUniString(RTLNAME), SbxCLASS_DONTCARE );
+ SbxObject* pRTLObject = PTR_CAST( SbxObject, pRTL );
+ if ( pRTLObject )
+ {
+ SbxVariableRef pWait;
+ pWait = pRTLObject->Make( CUniString("Wait"), SbxCLASS_METHOD, SbxNULL );
+ pWait->SetUserData( ID_Wait );
+ // change listener here
+ pRTLObject->EndListening( pWait->GetBroadcaster(), TRUE );
+ StartListening( pWait->GetBroadcaster(), TRUE );
+ }
+ else
+ {
+ DBG_ERROR("Testtool: Could not replace Wait method");
+ }
+
+ MAKE_TT_KEYWORD( "Kontext", SbxCLASS_METHOD, SbxNULL, ID_Kontext );
+ MAKE_TT_KEYWORD( "GetNextError", SbxCLASS_VARIABLE, SbxVARIANT, ID_GetError );
+ MAKE_TT_KEYWORD( "Start", SbxCLASS_METHOD, SbxSTRING, ID_Start );
+// pMeth = Make( "Kill", SbxCLASS_METHOD, SbxNULL );
+// pMeth->SetUserData( ID_Kill );
+ /* pMeth = Make( "TestReset", SbxCLASS_METHOD, SbxNULL );
+ pMeth->SetUserData( ID_Reset );*/
+ MAKE_TT_KEYWORD( "Use", SbxCLASS_METHOD, SbxNULL, ID_Use );
+ MAKE_TT_KEYWORD( "StartUse", SbxCLASS_METHOD, SbxNULL, ID_StartUse );
+ MAKE_TT_KEYWORD( "FinishUse", SbxCLASS_METHOD, SbxNULL, ID_FinishUse );
+
+ MAKE_TT_KEYWORD( "CaseLog", SbxCLASS_METHOD, SbxNULL, ID_CaseLog );
+ MAKE_TT_KEYWORD( "ExceptLog", SbxCLASS_METHOD, SbxNULL, ID_ExceptLog );
+ MAKE_TT_KEYWORD( "PrintLog", SbxCLASS_METHOD, SbxNULL, ID_PrintLog );
+ MAKE_TT_KEYWORD( "WarnLog", SbxCLASS_METHOD, SbxNULL, ID_WarnLog );
+ MAKE_TT_KEYWORD( "ErrorLog", SbxCLASS_METHOD, SbxNULL, ID_ErrorLog );
+ MAKE_TT_KEYWORD( "QAErrorLog", SbxCLASS_METHOD, SbxNULL, ID_QAErrorLog );
+ MAKE_TT_KEYWORD( "EnableQaErrors", SbxCLASS_PROPERTY, SbxBOOL, ID_EnableQaErrors );
+ MAKE_TT_KEYWORD( "MaybeAddErr", SbxCLASS_METHOD, SbxNULL, ID_MaybeAddErr );
+ MAKE_TT_KEYWORD( "ClearError", SbxCLASS_METHOD, SbxNULL, ID_ClearError );
+ MAKE_TT_KEYWORD( "SaveIDs", SbxCLASS_METHOD, SbxBOOL, ID_SaveIDs );
+ MAKE_TT_KEYWORD( "AutoExecute", SbxCLASS_PROPERTY, SbxBOOL, ID_AutoExecute ); // Achtung! PROPERTY Also eine Variable
+ MAKE_TT_KEYWORD( "Execute", SbxCLASS_METHOD, SbxNULL, ID_Execute );
+ MAKE_TT_KEYWORD( "StopOnSyntaxError", SbxCLASS_PROPERTY, SbxBOOL, ID_StopOnSyntaxError );
+
+/* Dialog Handler werden gebraucht, wenn im internen Testtool ein Dialog
+ hochgerissen wird. Nach versenden der Remote-Kommandos wird IdleHandler aktiviert.
+ Er testet, ob das Reschedule zum WaitForAnswer zur�ckkehrt. Bleibt das aus, so
+ wird erst der RemoteHandler zur�ckgesetzt und dann die Handler-Sub im Basic
+ gerufen.(Entkoppelt �ber PostUserEvent.)
+
+ In returndaten_verarbeiten wird flag f�r ausf�hrung des n�chsten remote-befehls
+ r�ckgesetzt. Der Handler wird damit auch entwertet. Er gilt also nur f�r den
+ n�chsten Remotebefehl.
+*/
+ MAKE_TT_KEYWORD( "DialogHandler", SbxCLASS_METHOD, SbxNULL, ID_DialogHandler );
+
+ MAKE_TT_KEYWORD( "GetUnoApp", SbxCLASS_METHOD, SbxOBJECT, ID_GetUnoApp );
+ MAKE_TT_KEYWORD( "GetIServer", SbxCLASS_METHOD, SbxOBJECT, ID_GetIServer );
+
+ MAKE_TT_KEYWORD( "RemoteCommandDelay", SbxCLASS_METHOD, SbxNULL, ID_RemoteCommandDelay );
+
+ MAKE_TT_KEYWORD( "GetApplicationPath", SbxCLASS_METHOD, SbxSTRING, ID_GetApplicationPath );
+ MAKE_TT_KEYWORD( "GetCommonApplicationPath", SbxCLASS_METHOD, SbxSTRING, ID_GetCommonApplicationPath );
+ MAKE_TT_KEYWORD( "MakeIniFileName", SbxCLASS_METHOD, SbxSTRING, ID_MakeIniFileName );
+
+/// active constants returning error and warning count
+ MAKE_TT_KEYWORD( "GetErrorCount", SbxCLASS_METHOD, SbxULONG, ID_GetErrorCount );
+ MAKE_TT_KEYWORD( "GetWarningCount", SbxCLASS_METHOD, SbxULONG, ID_GetWarningCount );
+ MAKE_TT_KEYWORD( "GetQAErrorCount", SbxCLASS_METHOD, SbxULONG, ID_GetQAErrorCount );
+ MAKE_TT_KEYWORD( "GetUseFileWarningCount", SbxCLASS_METHOD, SbxULONG, ID_GetUseFileWarningCount );
+
+ MAKE_TT_KEYWORD( "GetErrorList", SbxCLASS_METHOD, SbxOBJECT, ID_GetErrorList );
+ MAKE_TT_KEYWORD( "GetWarningList", SbxCLASS_METHOD, SbxOBJECT, ID_GetWarningList );
+ MAKE_TT_KEYWORD( "GetQAErrorList", SbxCLASS_METHOD, SbxOBJECT, ID_GetQAErrorList );
+ MAKE_TT_KEYWORD( "GetUseFileWarningList", SbxCLASS_METHOD, SbxOBJECT, ID_GetUseFileWarningList );
+
+ MAKE_TT_KEYWORD( "GetTestCaseName", SbxCLASS_METHOD, SbxSTRING, ID_GetTestCaseName );
+ MAKE_TT_KEYWORD( "GetTestCaseFileName", SbxCLASS_METHOD, SbxSTRING, ID_GetTestCaseFileName );
+ MAKE_TT_KEYWORD( "GetTestCaseLineNr", SbxCLASS_METHOD, SbxUSHORT, ID_GetTestCaseLineNr );
+
+ MAKE_TT_KEYWORD( "SetChildEnv", SbxCLASS_METHOD, SbxNULL, ID_SetChildEnv );
+ MAKE_TT_KEYWORD( "GetChildEnv", SbxCLASS_METHOD, SbxSTRING, ID_GetChildEnv );
+
+ MAKE_TT_KEYWORD( "GetLinkDestination", SbxCLASS_METHOD, SbxSTRING, ID_GetLinkDestination );
+ MAKE_TT_KEYWORD( "GetRegistryValue", SbxCLASS_METHOD, SbxSTRING, ID_GetRegistryValue );
+
+ MAKE_TT_KEYWORD( "KillApp", SbxCLASS_METHOD, SbxNULL, ID_KillApp );
+
+ MAKE_TT_KEYWORD( "HTTPSend", SbxCLASS_METHOD, SbxUSHORT, ID_HTTPSend );
+ MAKE_TT_KEYWORD( "HTTPSetProxy", SbxCLASS_METHOD, SbxNULL, ID_HTTPSetProxy );
+
+ // Load the Remote Commands from list
+ if ( !pRCommands ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( arR_Cmds, pRCommands );
+ USHORT i;
+ for ( i = 0 ; i < pRCommands->Count() ; i++ )
+ {
+ SbxTransportMethod *pMeth = new SbxTransportMethod( SbxVARIANT );
+ pMeth->SetName( pRCommands->GetObject( i )->pData->Kurzname );
+ pMeth->SetUserData( ID_RemoteCommand );
+ pMeth->nValue = pRCommands->GetObject( i )->pData->aUId.GetNum();
+ Insert( pMeth );
+ StartListening( pMeth->GetBroadcaster(), TRUE );
+ }
+
+// Konstanten f�r SetControlType
+ MAKE_USHORT_CONSTANT("CTBrowseBox",CONST_CTBrowseBox);
+ MAKE_USHORT_CONSTANT("CTValueSet",CONST_CTValueSet);
+
+// Konstanten f�r das Alignment des gesuchten Splitters
+ MAKE_USHORT_CONSTANT("AlignLeft",CONST_ALIGN_LEFT);
+ MAKE_USHORT_CONSTANT("AlignTop",CONST_ALIGN_TOP);
+ MAKE_USHORT_CONSTANT("AlignRight",CONST_ALIGN_RIGHT);
+ MAKE_USHORT_CONSTANT("AlignBottom",CONST_ALIGN_BOTTOM);
+
+/// What dialog to use in RC_CloseSysDialog or RC_ExistsSysDialog
+ MAKE_USHORT_CONSTANT("FilePicker",CONST_FilePicker);
+ MAKE_USHORT_CONSTANT("FolderPicker",CONST_FolderPicker);
+
+/// NodeTypes of the SAX Parser
+ MAKE_USHORT_CONSTANT("NodeTypeCharacter",CONST_NodeTypeCharacter);
+ MAKE_USHORT_CONSTANT("NodeTypeElement",CONST_NodeTypeElement);
+ MAKE_USHORT_CONSTANT("NodeTypeComment",CONST_NodeTypeComment);
+
+
+/// ItemTypes for TreeListBox and maybe others
+ MAKE_USHORT_CONSTANT("ItemTypeText",CONST_ItemTypeText);
+ MAKE_USHORT_CONSTANT("ItemTypeBMP",CONST_ItemTypeBMP);
+ MAKE_USHORT_CONSTANT("ItemTypeCheckbox",CONST_ItemTypeCheckbox);
+ MAKE_USHORT_CONSTANT("ItemTypeContextBMP",CONST_ItemTypeContextBMP);
+ MAKE_USHORT_CONSTANT("ItemTypeUnknown",CONST_ItemTypeUnknown);
+
+
+/// Return values for WaitSlot
+ MAKE_USHORT_CONSTANT("WSTimeout",CONST_WSTimeout);
+ MAKE_USHORT_CONSTANT("WSAborted",CONST_WSAborted);
+ MAKE_USHORT_CONSTANT("WSFinished",CONST_WSFinished);
+
+
+ pImpl->pControlsObj = new Controls( CUniString("GetNextCloseWindow") );
+ pImpl->pControlsObj->SetType( SbxVARIANT );
+ Insert( pImpl->pControlsObj );
+ pImpl->pControlsObj->SetUserData( ID_GetNextCloseWindow );
+ pImpl->pControlsObj->ChangeListener( this );
+
+ for ( i=0;i<VAR_POOL_SIZE;i++)
+ {
+/* pMyVar = new SbxObject( "Dummy" );
+ pMyVar->SetType( SbxVARIANT );*/
+
+// pMyVar = new SbxMethod( "Dummy", SbxVARIANT );
+
+ pImpl->pMyVars[i] = new SbxTransportMethod( SbxVARIANT );
+ pImpl->pMyVars[i]->SetName( CUniString("VarDummy").Append(String::CreateFromInt32(i) ) );
+
+ Insert( pImpl->pMyVars[i] );
+// StartListening( pMyVars[i]->GetBroadcaster(), TRUE );
+
+ }
+
+ m_pControls = new CNames();
+ m_pSIds = new CNames();
+ m_pNameKontext = m_pControls;
+
+ nMyVar = 0;
+
+ pImpl->pMyBasic->AddFactory( &aComManFac );
+
+
+// Das ist zum testen des IPC
+
+/* int sent = 0;
+
+ ModelessDialog *pDlg = new ModelessDialog(NULL);
+ pDlg->SetOutputSizePixel(Size(100,30));
+
+ Edit *pMyEd = new Edit(pDlg,WB_CENTER | WB_BORDER);
+ pMyEd->SetSizePixel(Size(100,30));
+ pDlg->Show();
+ pMyEd->Show();
+ Time aTime;
+
+ String VollePackung;
+ VollePackung.Fill(32760,'*');
+
+ BeginBlock(); // zum warm werden
+ EndBlock();
+ ResetError();
+
+ while ( pDlg->IsVisible() && !IsError() )
+ {
+ BeginBlock();
+ In->GenCmdFlow (124,VollePackung);
+ EndBlock();
+ pMyEd->SetText(String("Test Nr. ") + String(++sent));
+ while ( aTime.Get100Sec() / 10 == Time().Get100Sec() / 10 );
+ aTime = Time();
+ }
+
+ delete pMyEd;
+ delete pDlg;
+*/
+// Test ende
+
+
+}
+
+TestToolObj::~TestToolObj()
+{
+ pImpl->pMyBasic->RemoveFactory( &aComManFac );
+ EndListening( ((StarBASIC*)GetParent())->GetBroadcaster() );
+ pImpl->pNextReturn.Clear();
+
+ pImpl->pControlsObj.Clear();
+
+ for ( int i = 0 ; i < VAR_POOL_SIZE ; i++ )
+ {
+ pImpl->pMyVars[i].Clear();
+ }
+
+ if (m_pControls)
+ delete m_pControls;
+ if (m_pReverseSlots)
+ delete m_pReverseSlots;
+ if (m_pReverseControls)
+ delete m_pReverseControls;
+ if (m_pReverseControlsSon)
+ delete m_pReverseControlsSon;
+ if (m_pReverseUIds)
+ delete m_pReverseUIds;
+ if (m_pSIds)
+ delete m_pSIds;
+ if (pFehlerListe)
+ {
+ delete pFehlerListe;
+ pFehlerListe = NULL; // da pFehlerListe static ist!!
+ }
+ if ( pCommunicationManager )
+ {
+ pCommunicationManager->StopCommunication();
+ delete pCommunicationManager;
+ }
+ delete In;
+ if ( pImpl->pTTSfxBroadcaster )
+ delete pImpl->pTTSfxBroadcaster;
+ delete pImpl->pChildEnv;
+
+ pImpl->xErrorList.Clear();
+ pImpl->xWarningList.Clear();
+ pImpl->xQAErrorList.Clear();
+ pImpl->xIncludeFileWarningList.Clear();
+
+ delete pImpl;
+
+ delete pShortNames;
+}
+
+SfxBroadcaster& TestToolObj::GetTTBroadcaster()
+{
+ if ( !pImpl->pTTSfxBroadcaster )
+ pImpl->pTTSfxBroadcaster = new SfxBroadcaster;
+ return *pImpl->pTTSfxBroadcaster;
+}
+
+void TestToolObj::ReadNames( String Filename, CNames *&pNames, CNames *&pUIds, BOOL bIsFlat )
+{
+/*******************************************************************************
+**
+** Folgende Dateiendungen sind vorhanden
+**
+** hid.lst Langname UId
+** *.sid Slot Ids Kurzname Langname Datei ist flach
+** *.win Controlname Langname Datei mit *name und +name Notation
+**
+**
+*******************************************************************************/
+
+
+ SvFileStream Stream;
+ String aLine,aShortname,aLongname;
+ SmartId aUId;
+ xub_StrLen nLineNr;
+ USHORT nElement;
+ ControlDef *pNewDef, *pNewDef2;
+ ControlDef *pFatherDef = NULL;
+
+ nLineNr = 0; // Wir sind ja noch vor der Datei
+
+ if (! pUIds)
+ {
+ String aFileName = (pImpl->aHIDDir + DirEntry(CUniString("hid.lst"))).GetFull();
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_SHOW_ACTION, String(SttResId(S_READING_LONGNAMES)), aFileName );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ ReadFlat( aFileName ,pUIds, TRUE );
+ if ( !pUIds )
+ return;
+ pNewDef = new ControlDef("Active",SmartId(0));
+ const ControlItem *pItem = pNewDef;
+ if (! pUIds->Insert(pItem))
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1c( S_DOUBLE_NAME, "Active" ), Filename, nLineNr );
+ delete pNewDef;
+ }
+
+ }
+
+ ADD_MESSAGE_LOG( Filename );
+
+ Stream.Open(Filename, STREAM_STD_READ);
+ if (!Stream.IsOpen())
+ {
+ ADD_ERROR(ERR_NO_FILE,GEN_RES_STR1(S_CANNOT_OPEN_FILE, Filename));
+ return;
+ }
+
+ if ( bIsFlat && !pNames )
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_SHOW_ACTION, String(SttResId(S_READING_SLOT_IDS)), Filename );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ else
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_SHOW_ACTION, String(SttResId(S_READING_CONTROLS)), Filename );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ if ( !pNames )
+ pNames = new CNames();
+
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_ENTERWAIT );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ while (!Stream.IsEof())
+ {
+ nLineNr++;
+
+ Stream.ReadByteStringLine(aLine, RTL_TEXTENCODING_IBM_850);
+ aLine.EraseLeadingChars();
+ aLine.EraseTrailingChars();
+ while ( aLine.SearchAscii(" ") != STRING_NOTFOUND )
+ aLine.SearchAndReplaceAllAscii(" ",UniString(' '));
+ if (aLine.Len() == 0) continue;
+ if (aLine.Copy(0,4).CompareIgnoreCaseToAscii("Rem ") == COMPARE_EQUAL) continue;
+ if (aLine.Copy(0,1).CompareToAscii("'") == COMPARE_EQUAL) continue;
+
+ if ( (aLine.GetTokenCount(cMyDelim) < 2 || aLine.GetTokenCount(cMyDelim) > 3) && aLine.CompareIgnoreCaseToAscii("*Active") != COMPARE_EQUAL )
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_INVALID_LINE, aLine ), Filename, nLineNr );
+ continue;
+ }
+
+ aShortname = aLine.GetToken(0,cMyDelim);
+ aLongname = aLine.GetToken(1,cMyDelim);
+
+ String aFirstAllowedExtra, aAllowed;
+ aFirstAllowedExtra.AssignAscii("+*");
+ aAllowed.AssignAscii("_");
+ xub_StrLen nIndex = 0;
+ BOOL bOK = TRUE;
+
+ while ( bOK && nIndex < aShortname.Len() )
+ {
+ sal_Unicode aChar = aShortname.GetChar( nIndex );
+ BOOL bOKThis = FALSE;
+ bOKThis |= ( aAllowed.Search( aChar ) != STRING_NOTFOUND );
+ if ( !nIndex )
+ bOKThis |= ( aFirstAllowedExtra.Search( aChar ) != STRING_NOTFOUND );
+ bOKThis |= ( aChar >= 'A' && aChar <= 'Z' );
+ bOKThis |= ( aChar >= 'a' && aChar <= 'z' );
+ bOKThis |= ( aChar >= '0' && aChar <= '9' );
+
+ bOK &= bOKThis;
+ nIndex++;
+ }
+ if ( !bOK )
+ {
+ ADD_WARNING_LOG2( CUniString("Zeile \"").Append(aLine).AppendAscii("\" enth�lt ung�ltige Zeichen."), Filename, nLineNr );
+ continue;
+ }
+
+ BOOL bUnoName = ( aLongname.Copy( 0, 5 ).EqualsIgnoreCaseAscii( ".uno:" )
+ || aLongname.Copy( 0, 4 ).EqualsIgnoreCaseAscii( "http" )
+ || aLongname.Copy( 0, 15 ).EqualsIgnoreCaseAscii( "private:factory" )
+ || aLongname.Copy( 0, 8 ).EqualsIgnoreCaseAscii( "service:" )
+ || aLongname.Copy( 0, 6 ).EqualsIgnoreCaseAscii( "macro:" )
+ || aLongname.Copy( 0, 8 ).EqualsIgnoreCaseAscii( ".HelpId:" ) );
+ // generic method to mark longnames as symbolic
+ if ( aLongname.Copy( 0, 4 ).EqualsIgnoreCaseAscii( "sym:" ) )
+ {
+ bUnoName = TRUE;
+ aLongname.Erase( 0, 4 );
+ }
+ BOOL bMozillaName = ( !bIsFlat && aLongname.Copy( 0, 4 ).EqualsIgnoreCaseAscii( ".moz" ) );
+
+ if ( aShortname.GetChar(0) == '+' ) // Kompletten Eintrag kopieren
+ {
+ aShortname.Erase(0,1);
+ ControlDef WhatName(aLongname,SmartId());
+ ControlDef *OldTree;
+ if (pNames->Seek_Entry(&WhatName,&nElement))
+ {
+ OldTree = (ControlDef*)pNames->GetObject(nElement);
+ pNewDef = new ControlDef(aLongname,aShortname,OldTree,TRUE);
+
+ const ControlItem *pItem = pNewDef;
+ if (! pNames->Insert(pItem))
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_DOUBLE_NAME, aLine ), Filename, nLineNr );
+ delete pNewDef;
+ pFatherDef = NULL;
+ }
+ else
+ {
+ pFatherDef = pNewDef;
+ }
+ }
+ else
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_SHORTNAME_UNKNOWN, aLine ), Filename, nLineNr );
+ continue;
+ }
+
+ }
+ else
+ {
+
+ if (aShortname.CompareIgnoreCaseToAscii("*Active") == COMPARE_EQUAL)
+ aUId = SmartId( UID_ACTIVE );
+ else if ( !bUnoName && !bMozillaName )
+ { // Bestimmen der ID aus der Hid.Lst
+ ControlDef WhatName(aLongname,SmartId());
+ if (pUIds->Seek_Entry(&WhatName,&nElement))
+ aUId = pUIds->GetObject(nElement)->pData->aUId;
+ else
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_LONGNAME_UNKNOWN, aLine ), Filename, nLineNr );
+ continue;
+ }
+ }
+ else
+ {
+ if ( bUnoName )
+ aUId = SmartId( aLongname );
+ else if ( bMozillaName )
+ aUId = SmartId( aLongname );
+ else
+ {
+ DBG_ERROR("Unknown URL schema");
+ }
+ }
+
+
+
+ if (aShortname.GetChar(0) == '*' || bIsFlat) // Globaler Kurzname (Dialogname oder SId)
+ {
+ if (!bIsFlat)
+ aShortname.Erase(0,1);
+
+ pNewDef = new ControlDef(aShortname,aUId);
+
+ if (!bIsFlat)
+ {
+ pNewDef->Sons( new CNames() );
+
+ pNewDef2 = new ControlDef(aShortname,aUId);
+ if (!pNewDef->SonInsert( pNewDef2 )) // Dialog in eigenen Namespace eintragen
+ {
+ delete pNewDef2;
+ DBG_ERROR(" !!!! ACHTUNG !!!! Fehler beim einf�gen in leere Liste!");
+ }
+ }
+
+ const ControlItem *pItem = pNewDef;
+ if (! pNames->Insert(pItem))
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_DOUBLE_NAME, aLine ), Filename, nLineNr );
+ delete pNewDef;
+ pFatherDef = NULL;
+ }
+ else
+ {
+ pFatherDef = pNewDef;
+ }
+ }
+ else
+ {
+ if (!pFatherDef)
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR0( S_FIRST_SHORTNAME_REQ_ASTRX ), Filename, nLineNr );
+ }
+ else
+ {
+ pNewDef = new ControlDef(aShortname,aUId);
+ if (! pFatherDef->SonInsert(pNewDef))
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_DOUBLE_NAME, aLine ), Filename, nLineNr );
+ delete pNewDef;
+ }
+ }
+ }
+ }
+ GetpApp()->Reschedule();
+ }
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_LEAVEWAIT );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_HIDE_ACTION );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ Stream.Close();
+}
+
+
+void TestToolObj::AddName(String &aBisher, String &aNeu )
+{
+ String aSl( '/' );
+ if ( UniString(aSl).Append(aBisher).Append(aSl).ToUpperAscii().Search( UniString(aSl).Append(aNeu).Append(aSl).ToUpperAscii() ) == STRING_NOTFOUND )
+ {
+ aBisher += aSl;
+ aBisher += aNeu;
+ }
+}
+
+
+void TestToolObj::ReadFlat( String Filename, CNames *&pNames, BOOL bSortByName )
+// Wenn bSortByName == FALSE, dann nach UId Sortieren (ControlItemUId statt ControlDef)
+{
+ SvFileStream Stream;
+ String aLine,aLongname;
+ SmartId aUId;
+ xub_StrLen nLineNr;
+ ControlItem *pNewItem;
+ USHORT nDoubleCount = 0;
+
+ Stream.Open(Filename, STREAM_STD_READ);
+
+ if (!Stream.IsOpen())
+ {
+ ADD_ERROR(ERR_NO_FILE,GEN_RES_STR1(S_CANNOT_OPEN_FILE, Filename));
+ return;
+ }
+
+ nLineNr = 0; // Wir sind ja noch vor der Datei
+
+ if ( !pNames )
+ pNames = new CNames();
+
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_ENTERWAIT );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ ADD_MESSAGE_LOG( Filename );
+ while (!Stream.IsEof())
+ {
+ nLineNr++;
+
+ Stream.ReadByteStringLine(aLine, RTL_TEXTENCODING_IBM_850);
+ aLine.EraseLeadingChars();
+ aLine.EraseTrailingChars();
+ while ( aLine.SearchAscii(" ") != STRING_NOTFOUND )
+ aLine.SearchAndReplaceAllAscii(" ",UniString(' '));
+ if (aLine.Len() == 0) continue;
+
+ if ( (aLine.GetTokenCount(cMyDelim) < 2 || aLine.GetTokenCount(cMyDelim) > 3) && aLine.CompareIgnoreCaseToAscii("*Active") != COMPARE_EQUAL )
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_INVALID_LINE, aLine ), Filename, nLineNr );
+ continue;
+ }
+
+ aLongname = aLine.GetToken(0,cMyDelim);
+ aUId = SmartId( (ULONG)aLine.GetToken(1,cMyDelim).ToInt64() );
+
+ if ( bSortByName )
+ pNewItem = new ControlDef( aLongname, aUId );
+ else
+ pNewItem = new ControlItemUId( aLongname, aUId );
+ if ( !pNames->C40_PTR_INSERT( ControlItem, pNewItem ) )
+ {
+ if ( bSortByName )
+ {
+ if ( nDoubleCount++ < 10 )
+ {
+ ADD_WARNING_LOG2( GEN_RES_STR1( S_DOUBLE_NAME, aLine ), Filename, nLineNr );
+ }
+ }
+ else
+ {
+ USHORT nNr;
+ pNames->Seek_Entry( pNewItem, &nNr );
+ AddName( pNames->GetObject(nNr)->pData->Kurzname, pNewItem->pData->Kurzname );
+ }
+ delete pNewItem;
+ }
+ GetpApp()->Reschedule();
+ }
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_LEAVEWAIT );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ Stream.Close();
+#ifdef DBG_UTIL
+// int i;
+// for ( i = 0 ; i < pNames->Count() ; i++ )
+// {
+// DBG_ERROR( pNames->GetObject(i)->pData->Kurzname );
+// }
+#endif
+}
+
+void ReadFlatArray( const ControlDefLoad arWas [], CNames *&pNames )
+{
+ USHORT nIndex = 0;
+
+ if ( !pNames )
+ pNames = new CNames();
+
+ while ( String::CreateFromAscii(arWas[nIndex].Kurzname).Len() > 0 )
+ {
+ SmartId aUId (arWas[nIndex].nUId);
+ const ControlItem *pX = new ControlDef( arWas[nIndex].Kurzname, aUId);
+ pNames->C40_PTR_INSERT(ControlItem, pX);
+ nIndex++;
+ }
+}
+
+void TestToolObj::WaitForAnswer ()
+{
+ if ( bUseIPC )
+ {
+ #ifdef DBG_UTILx
+ USHORT nSysWinModeMemo = GetpApp()->GetSystemWindowMode();
+ GetpApp()->SetSystemWindowMode( 0 );
+ ModelessDialog aDlg(NULL);
+ aDlg.SetOutputSizePixel(Size(200,0));
+ aDlg.SetText(CUniString("Waiting for Answer"));
+ aDlg.Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE );
+ GetpApp()->SetSystemWindowMode( nSysWinModeMemo );
+ #endif
+ BOOL bWasRealWait = !bReturnOK;
+ BasicRuntime aRun( NULL );
+ if ( BasicRuntimeAccess::HasRuntime() )
+ aRun = BasicRuntimeAccess::GetRuntime();
+
+ // this timer to terminate Yield below
+ Timer aTimer;
+ aTimer.SetTimeout( pImpl->aServerTimeout.GetMSFromTime() );
+ aTimer.Start();
+ while ( !bReturnOK && aTimer.IsActive() && pCommunicationManager->IsCommunicationRunning()
+ && aRun.IsValid() && aRun.IsRun() )
+ {
+ #ifdef OS2
+ DosSleep(100);
+ #endif
+ GetpApp()->Yield();
+ if ( BasicRuntimeAccess::HasRuntime() )
+ aRun = BasicRuntimeAccess::GetRuntime();
+ else
+ aRun = BasicRuntime( NULL );
+ }
+ if ( bWasRealWait && aDialogHandlerName.Len() > 0 ) // Damit das ganze auch im Testtool l�uft
+ CallDialogHandler(GetpApp());
+ }
+ else
+ {
+ Time Ende;
+
+ Ende += pImpl->aServerTimeout;
+ SvStream *pTemp = NULL;
+
+ while ( !bReturnOK && Ende > Time() )
+ {
+// pTemp = PlugInApplication::GetPlugInApp()->GetReturnFromExecute();
+ if ( pTemp )
+ {
+ ReturnResults( pTemp );
+ bReturnOK = TRUE;
+ }
+ else
+ {
+ GetpApp()->Reschedule();
+ }
+ nIdleCount = 0;
+ }
+ }
+
+
+ if ( !bReturnOK )
+ {
+ ADD_ERROR(ERR_EXEC_TIMEOUT,GEN_RES_STR1(S_TIMOUT_WAITING, String::CreateFromInt64(nSequence)));
+ bReturnOK = TRUE;
+ nSequence++;
+ }
+}
+
+
+IMPL_LINK( TestToolObj, IdleHdl, Application*, EMPTYARG )
+{
+ if ( !bReturnOK )
+ nIdleCount++;
+ if ( nIdleCount > 10 ) // d.h. Schon 10 mal hier gewesen und noch keinmal im WaitForAnswer
+ {
+ GetpApp()->RemoveIdleHdl( LINK( this, TestToolObj, IdleHdl ) );
+ GetpApp()->PostUserEvent( LINK( this, TestToolObj, CallDialogHandler ) );
+ }
+ return 0;
+}
+
+IMPL_LINK( TestToolObj, CallDialogHandler, Application*, EMPTYARG )
+{
+ nWindowHandlerCallLevel++;
+ String aHandlerName(aDialogHandlerName);
+ aDialogHandlerName.Erase();
+
+ ULONG nRememberSequence = nSequence; // Da sich die Sequence im DialogHandler �ndert
+ ((StarBASIC*)GetParent())->Call( aHandlerName );
+ nSequence = nRememberSequence;
+ // Die Sequenznummern werden dann zwar doppelt vergeben, aber wen k�mmerts.
+
+ nWindowHandlerCallLevel--;
+ return 0;
+}
+
+
+void TestToolObj::BeginBlock()
+{
+ WaitForAnswer();
+ if ( IsError() )
+ return;
+
+ DBG_ASSERT(!IsBlock,"BeginBlock innerhalb eines Blockes");
+ In->Reset(nSequence);
+ IsBlock = TRUE;
+}
+
+
+void TestToolObj::SendViaSocket()
+{
+ if ( !pCommunicationManager )
+ {
+ DBG_ERROR("Kein CommunicationManager vorhanden!!");
+ return;
+ }
+
+ if ( !pCommunicationManager->IsCommunicationRunning() )
+ {
+ // first try to run basic sub "startTheOffice" see i86540
+ SbxVariable* pMeth = pImpl->pMyBasic->Find( CUniString( "startTheOffice" ), SbxCLASS_DONTCARE);
+ if( !pImpl->bIsStart && pMeth && pMeth->ISA(SbxMethod) )
+ {
+ pImpl->pMyBasic->Call( CUniString( "startTheOffice" ) );
+ }
+ else
+ {
+ pImpl->pMyBasic->ResetError(); // reset error produced by failed Find above
+ if ( !pCommunicationManager->StartCommunication( ProgPath, pImpl->ProgParam, pImpl->pChildEnv ) )
+ {
+ ADD_ERROR(ERR_RESTART_FAIL,GEN_RES_STR1(S_APPLICATION_START_FAILED, ProgPath));
+ }
+ else
+ {
+ if ( !pImpl->bIsStart )
+ {
+ ADD_ERROR(ERR_RESTART,GEN_RES_STR0(S_APPLICATION_RESTARTED));
+ }
+ }
+ }
+ }
+
+ bReturnOK = FALSE;
+ if ( pCommunicationManager->GetLastNewLink() )
+ {
+ if ( !pCommunicationManager->GetLastNewLink()->TransferDataStream( In->GetStream() ) )
+ {
+ ADD_ERROR(ERR_SEND_TIMEOUT,GEN_RES_STR1(S_TIMOUT_SENDING, String::CreateFromInt64(nSequence)));
+ nSequence++;
+ bReturnOK = TRUE; // Kein Return zu erwarten
+ }
+ }
+ else
+ {
+ ADD_ERROR(ERR_SEND_TIMEOUT,GEN_RES_STR1(S_NO_CONNECTION, String::CreateFromInt64(nSequence)));
+ nSequence++;
+ bReturnOK = TRUE; // Kein Return zu erwarten
+ }
+
+}
+
+void TestToolObj::EndBlock()
+{
+ if (IsBlock)
+ {
+ pImpl->LocalStarttime = Time::GetSystemTicks(); // Setzen der Anfangszeit f�r Performancemessung
+
+ In->GenCmdFlow (F_EndCommandBlock);
+
+ if ( pImpl->bDoRemoteCommandDelay )
+ {
+ ULONG nTimeWait = pImpl->nMinRemoteCommandDelay;
+ if ( pImpl->nMaxRemoteCommandDelay != pImpl->nMinRemoteCommandDelay )
+ nTimeWait += Time::GetSystemTicks() % ( pImpl->nMaxRemoteCommandDelay - pImpl->nMinRemoteCommandDelay );
+ Timer aTimer;
+ aTimer.SetTimeout( nTimeWait );
+ aTimer.Start();
+ while ( aTimer.IsActive() && pCommunicationManager->IsCommunicationRunning() )
+ {
+ #ifdef OS2
+ DosSleep(100);
+ #endif
+ GetpApp()->Yield();
+ }
+ }
+
+ if ( bUseIPC )
+ SendViaSocket();
+ else
+ {
+// PlugInApplication::GetPlugInApp()->ExecuteRemoteStatements( In->GetStream() );
+ bReturnOK = FALSE;
+ if ( aDialogHandlerName.Len() > 0 )
+ GetpApp()->InsertIdleHdl( LINK( this, TestToolObj, IdleHdl ), 1 );
+ }
+ IsBlock = FALSE;
+ }
+ else
+ {
+ DBG_ERROR("EndBlock au�erhalb eines Blockes");
+ }
+}
+
+
+BOOL TestToolObj::Load( String aFileName, SbModule *pMod )
+{
+ BOOL bOk = TRUE;
+ SvFileStream aStrm( aFileName, STREAM_STD_READ );
+ if( aStrm.IsOpen() )
+ {
+ String aText, aLine;
+ BOOL bIsFirstLine = TRUE;
+ rtl_TextEncoding aFileEncoding = RTL_TEXTENCODING_IBM_850;
+ while( !aStrm.IsEof() && bOk )
+ {
+ aStrm.ReadByteStringLine( aLine, aFileEncoding );
+ if ( bIsFirstLine && IsTTSignatureForUnicodeTextfile( aLine ) )
+ aFileEncoding = RTL_TEXTENCODING_UTF8;
+ else
+ {
+ if ( !bIsFirstLine )
+ aText += '\n';
+ aText += aLine;
+ bIsFirstLine = FALSE;
+ }
+ if( aStrm.GetError() != SVSTREAM_OK )
+ bOk = FALSE;
+ }
+ aText.ConvertLineEnd();
+ pMod->SetName(CUniString("--").Append(aFileName));
+
+ pMod->SetComment( GetRevision( aText ) );
+
+ SbModule* pOldModule = MyBasic::GetCompileModule();
+ MyBasic::SetCompileModule( pMod );
+
+ pMod->SetSource( PreCompile( aText ) );
+
+ MyBasic::SetCompileModule( pOldModule );
+ if ( WasPrecompilerError() )
+ bOk = FALSE;
+
+ }
+ else
+ bOk = FALSE;
+ return bOk;
+}
+
+
+BOOL TestToolObj::ReadNamesBin( String Filename, CNames *&pSIds, CNames *&pControls )
+{
+ SvFileStream aStream;
+ String aName,aURL;
+ SmartId aUId;
+ ControlDef *pNewDef, *pNewDef2;
+ ControlDef *pFatherDef = NULL;
+
+
+ aStream.Open(Filename, STREAM_STD_READ);
+ if (!aStream.IsOpen())
+ {
+ ADD_ERROR(ERR_NO_FILE,GEN_RES_STR1(S_CANNOT_OPEN_FILE, Filename));
+ return FALSE;
+ }
+
+ if ( !pSIds )
+ pSIds = new CNames();
+ if ( !pControls )
+ pControls = new CNames();
+
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_ENTERWAIT );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ USHORT nAnz;
+ aStream >> nAnz;
+ CNames *pNames = pSIds; // first read all the slots
+ BOOL bIsFlat = TRUE; // Slots do not have children
+
+ while ( nAnz && !aStream.IsEof() )
+ {
+
+ aStream.ReadByteString( aName, RTL_TEXTENCODING_UTF8 );
+
+ USHORT nType;
+ aStream >> nType;
+ if ( !nType /* HasNumeric() */)
+ {
+ String aStrId;
+ aStream.ReadByteString( aStrId, RTL_TEXTENCODING_UTF8 );
+ aUId = SmartId( aStrId );
+ }
+ else
+ {
+ comm_ULONG nUId;
+ aStream >> nUId;
+ aUId = SmartId( nUId );
+ }
+
+ if (aName.GetChar(0) == '*' || bIsFlat ) // Globaler Kurzname (Dialogname oder SId)
+ {
+ if (!bIsFlat)
+ aName.Erase(0,1);
+ pNewDef = new ControlDef(aName,aUId);
+
+ if (!bIsFlat)
+ {
+ pNewDef->Sons(new CNames());
+
+ pNewDef2 = new ControlDef(aName,aUId); // Noch einen machen
+ if (!pNewDef->SonInsert(pNewDef2)) // Dialog in eigenen Namespace eintragen
+ {
+ delete pNewDef2;
+ DBG_ERROR(" !!!! ACHTUNG !!!! Fehler beim einf�gen in leere Liste!");
+ }
+ }
+
+ const ControlItem *pItem = pNewDef;
+ if (! pNames->Insert(pItem))
+ {
+ DBG_ERROR(" !!!! ACHTUNG !!!! Fehler beim einf�gen eines namens!");
+ delete pNewDef;
+ pFatherDef = NULL;
+ }
+ else
+ {
+ pFatherDef = pNewDef;
+ }
+ }
+ else
+ {
+ if (!pFatherDef)
+ {
+ DBG_ERROR( "Internal Error: Erster Kurzname mu� mit * beginnen. �berspringe." );
+ }
+ else
+ {
+ pNewDef = new ControlDef(aName,aUId);
+ if (! pFatherDef->SonInsert(pNewDef))
+ {
+ delete pNewDef;
+ DBG_ERROR(" !!!! ACHTUNG !!!! Fehler beim einf�gen eines namens!");
+ }
+ }
+ }
+
+
+ nAnz--;
+ if ( !nAnz && bIsFlat ) // We have read all slots
+ {
+ aStream >> nAnz;
+ pNames = pControls; // Now read the controls
+ bIsFlat = FALSE; // Controls *do* have children
+ }
+
+
+ GetpApp()->Reschedule();
+ }
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_LEAVEWAIT );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ aStream.Close();
+ return TRUE;
+}
+
+
+BOOL TestToolObj::WriteNamesBin( String Filename, CNames *pSIds, CNames *pControls )
+{
+ BOOL bOk = TRUE;
+ SvFileStream aStrm( String(Filename).AppendAscii(".bin"), STREAM_STD_WRITE );
+ if( aStrm.IsOpen() )
+ {
+ USHORT i;
+ if ( pSIds )
+ {
+ aStrm << pSIds->Count();
+ for ( i = 0 ; pSIds->Count() > i && bOk ; i++ )
+ {
+ ((ControlDef*)(*pSIds)[i])->Write(aStrm);
+ if( aStrm.GetError() != SVSTREAM_OK )
+ bOk = FALSE;
+ }
+ }
+ else
+ aStrm << USHORT( 0 );
+
+ if ( pControls )
+ {
+ aStrm << pControls->Count();
+ for ( i = 0 ; pControls->Count() > i && bOk ; i++ )
+ {
+ ((ControlDef*)(*pControls)[i])->Write(aStrm);
+ if( aStrm.GetError() != SVSTREAM_OK )
+ bOk = FALSE;
+ }
+ }
+ else
+ aStrm << USHORT( 0 );
+ }
+ else
+ bOk = FALSE;
+ return bOk;
+}
+
+
+void TestToolObj::SFX_NOTIFY( SfxBroadcaster&, const TypeId&,
+ const SfxHint& rHint, const TypeId& )
+{
+ static CNames *pUIds = NULL; // Halten der hid.lst
+
+ const SbxHint* p = PTR_CAST(SbxHint,&rHint);
+ if( p )
+ {
+ SbxVariable* pVar = p->GetVar();
+ SbxArray* rPar = pVar->GetParameters();
+
+ ULONG nHintId = p->GetId();
+ ULONG nHintUserData = pVar->GetUserData();
+ if( nHintId == SBX_HINT_DATAWANTED )
+ {
+ nMyVar = 0;
+ switch( nHintUserData )
+ {
+ case ID_Kontext:
+ if ( !rPar )
+ {
+ m_pNameKontext = m_pControls;
+
+ // So da� nicht immer mal wieder was aus einem alten Kontext dazwischenhaut
+ for (USHORT i=0;i<VAR_POOL_SIZE;i++)
+ {
+ pImpl->pMyVars[i]->SetName( CUniString("VarDummy").Append(UniString::CreateFromInt32(i)) );
+ }
+ }
+ else if ( rPar && rPar->Count() == 2 )
+ {
+ USHORT nElement;
+ SbxVariableRef pArg = rPar->Get( 1 );
+ String aKontext = pArg->GetString();
+ ControlDef WhatName(aKontext,SmartId());
+ if (m_pControls && m_pControls->Seek_Entry(&WhatName,&nElement))
+ {
+ m_pNameKontext = ((ControlDef*)m_pControls->GetObject(nElement))->GetSons();
+
+ // So da� nicht immer mal wieder was aus einem alten Kontext dazwischenhaut
+ for (USHORT i=0;i<VAR_POOL_SIZE;i++)
+ {
+ pImpl->pMyVars[i]->SetName( CUniString("VarDummy").Append(UniString::CreateFromInt32(i)) );
+ }
+ }
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_Start:
+ if ( rPar && rPar->Count() >= 2 )
+ {
+ SbxVariableRef pArg = rPar->Get( 1 );
+ ProgPath = pArg->GetString();
+ if ( rPar && rPar->Count() >= 3 )
+ {
+ pArg = rPar->Get( 2 );
+ pImpl->ProgParam = pArg->GetString();
+ }
+ else
+ pImpl->ProgParam.Erase();
+
+ String aTmpStr(ProgPath);
+ aTmpStr += ' ';
+ aTmpStr += pImpl->ProgParam;
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_SHOW_ACTION, String(SttResId(S_STARTING_APPLICATION)), aTmpStr );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ pImpl->bIsStart = TRUE;
+ BeginBlock();
+ EndBlock();
+ pImpl->bIsStart = FALSE;
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_HIDE_ACTION );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ }
+ break;
+ case ID_KillApp:
+ pCommunicationManager->KillApplication();
+ break;
+ case ID_SaveIDs:
+ if ( rPar && rPar->Count() >= 2 ) // Genau ein Parameter
+ {
+ SbxVariableRef pArg = rPar->Get( 1 );
+ DirEntry FilePath = pImpl->aFileBase + DirEntry(pArg->GetString(),FSYS_STYLE_VFAT);
+ WriteNamesBin( FilePath.GetFull(), m_pSIds, m_pControls );
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_AutoExecute:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ {
+ pVar->PutBool(SingleCommandBlock);
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_Execute:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ {
+ EndBlock();
+ BeginBlock();
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_DialogHandler:
+ if ( rPar && rPar->Count() >= 2 ) // Genau ein Parameter
+ {
+ SbxVariableRef pArg = rPar->Get( 1 );
+ aDialogHandlerName = pArg->GetString();
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_GetError:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ {
+ WaitForAnswer();
+ if ( IS_ERROR() )
+ {
+// pVar->PutULong( GET_ERROR()->nError );
+ pVar->PutString( GET_ERROR()->aText );
+ POP_ERROR();
+ }
+ else
+ {
+// pVar->PutULong( 0 );
+ pVar->PutString( String() );
+ }
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_StartUse:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ {
+ {
+ BasicRuntime aRun = BasicRuntimeAccess::GetRuntime();
+ aLogFileName = DirEntry(aRun.GetModuleName(SbxNAME_NONE)).GetBase().AppendAscii(".res");
+ }
+
+ ADD_RUN_LOG();
+ ADD_CASE_LOG(GEN_RES_STR0(S_READING_FILE));
+
+ pCommunicationManager->StopCommunication();
+ // Wait for asynchronous events to be processed, so communication will be restarted properly
+ while ( pCommunicationManager->IsCommunicationRunning() )
+ Application::Reschedule();
+
+ SingleCommandBlock = TRUE; // Bug 57188
+ IsBlock = FALSE;
+
+// pCommunicationManager->StartCommunication();
+
+ for (USHORT i=0;i<VAR_POOL_SIZE;i++)
+ {
+ pImpl->pMyVars[i]->SetName( CUniString("VarDummy").Append(UniString::CreateFromInt32(i)) );
+ }
+ nMyVar = 0;
+
+ if (m_pControls)
+ {
+ delete m_pControls;
+ m_pControls = NULL;
+ }
+ if (m_pReverseSlots)
+ {
+ delete m_pReverseSlots;
+ m_pReverseSlots = NULL;
+ }
+ if (m_pReverseControls)
+ {
+ delete m_pReverseControls;
+ m_pReverseControls = NULL;
+ }
+ if (m_pReverseControlsSon)
+ {
+ delete m_pReverseControlsSon;
+ m_pReverseControlsSon = NULL;
+ }
+ if (m_pSIds)
+ {
+ delete m_pSIds;
+ m_pSIds = NULL;
+ }
+ if (pUIds)
+ {
+ delete pUIds;
+ pUIds = NULL;
+ }
+ if (m_pReverseUIds)
+ {
+ delete m_pReverseUIds;
+ m_pReverseUIds = NULL;
+ }
+ m_pNameKontext = m_pControls;
+ pImpl->bLnaguageExtensionLoaded = FALSE;
+ SfxSimpleHint aHint( SBX_HINT_LANGUAGE_EXTENSION_LOADED );
+ GetTTBroadcaster().Broadcast( aHint );
+
+ pImpl->nMinRemoteCommandDelay = 0;
+ pImpl->nMaxRemoteCommandDelay = 0;
+ pImpl->bDoRemoteCommandDelay = FALSE;
+ pImpl->aTestCaseName.Erase();
+ pImpl->aTestCaseFileName.Erase();
+ pImpl->nTestCaseLineNr = 0;
+
+ pImpl->bEnableQaErrors = TRUE;
+ pImpl->bDebugFindNoErrors = FALSE;
+
+ pImpl->pChildEnv->clear();
+
+ String aName( CUniString( "StopOnSyntaxError" ) );
+ SbxVariableRef xStopOnSyntaxError = SbxObject::Find( aName, SbxCLASS_PROPERTY );
+ if ( xStopOnSyntaxError.Is() )
+ xStopOnSyntaxError->PutBool( pImpl->bStopOnSyntaxError );
+ else
+ SetError( SbxERR_BAD_ACTION );
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_Use:
+ if ( rPar && rPar->Count() >= 2 )
+ {
+ SbxVariableRef pArg = rPar->Get( 1 );
+ DirEntry FilePath(pArg->GetString(),FSYS_STYLE_VFAT);
+ if ( !FilePath.IsAbs() )
+ FilePath = pImpl->aFileBase + FilePath;
+ String Ext = FilePath.GetExtension();
+ if ( Ext.CompareIgnoreCaseToAscii("Win") == COMPARE_EQUAL )
+ {
+ ReadNames( FilePath.GetFull(),m_pControls,pUIds);
+ pImpl->bLnaguageExtensionLoaded = TRUE;
+ SfxSimpleHint aHint( SBX_HINT_LANGUAGE_EXTENSION_LOADED );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ else if ( Ext.CompareIgnoreCaseToAscii("Sid") == COMPARE_EQUAL )
+ {
+ ReadNames( FilePath.GetFull(),m_pSIds,pUIds,FLAT);
+ pImpl->bLnaguageExtensionLoaded = TRUE;
+ SfxSimpleHint aHint( SBX_HINT_LANGUAGE_EXTENSION_LOADED );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ else if ( Ext.CompareIgnoreCaseToAscii("Bin") == COMPARE_EQUAL )
+ {
+ ReadNamesBin( FilePath.GetFull(), m_pSIds, m_pControls );
+ pImpl->bLnaguageExtensionLoaded = TRUE;
+ SfxSimpleHint aHint( SBX_HINT_LANGUAGE_EXTENSION_LOADED );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ else if ( Ext.CompareIgnoreCaseToAscii("Inc") == COMPARE_EQUAL )
+ {
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_SHOW_ACTION, String(SttResId(S_READING_BASIC_MODULE)), FilePath.GetFull() );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ String aFullPathname = FilePath.GetFull();
+ StarBASIC *pBasic = (StarBASIC*)GetParent();
+ if ( !aModuleWinExistsHdl.Call( &aFullPathname ) &&
+ !pBasic->FindModule( CUniString( "--" ).Append(aFullPathname) ) )
+ {
+ SbModule *pMod;
+ pMod = pBasic->MakeModule( CUniString("--"), String() );
+ pMod->Clear();
+ if ( Load( aFullPathname, pMod ) )
+ {
+ if ( !IS_ERROR() )
+ {
+ pBasic->Compile( pMod );
+ pMod->RunInit();
+ }
+ }
+ else
+ {
+ ADD_ERROR( SbxERR_CANNOT_LOAD, FilePath.GetFull() );
+ }
+ }
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_HIDE_ACTION );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ }
+ else
+ {
+ ADD_ERROR(SbxERR_CANNOT_LOAD,FilePath.GetFull());
+ }
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_FinishUse:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ {
+ ADD_CASE_LOG( String() ); // Case abschliessen
+ if (!m_pControls)
+ m_pControls = new CNames();
+
+ if (!m_pSIds)
+ m_pSIds = new CNames();
+
+ if (pUIds)
+ { // save some memory
+ delete pUIds;
+ pUIds = NULL;
+ }
+
+ m_pNameKontext = m_pControls;
+
+ if ( pImpl->bLnaguageExtensionLoaded )
+ {
+ SfxSimpleHint aHint( SBX_HINT_LANGUAGE_EXTENSION_LOADED );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ pImpl->nIncludeFileWarningCount = pImpl->nWarningCount;
+ pImpl->nWarningCount = 0;
+
+ *pImpl->xIncludeFileWarningList = *pImpl->xWarningList;
+ pImpl->xWarningList->SbxArray::Clear();
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_CaseLog:
+ if ( rPar ) // rPar != NULL <=> Es gibt Parameter
+ {
+ USHORT n;
+ String aX;
+ for ( n = 1; n < rPar->Count(); n++ )
+ {
+ SbxVariableRef pArg = rPar->Get( n );
+ aX += pArg->GetString();
+ }
+ pImpl->aTestCaseName = aX;
+ if ( pImpl->aTestCaseName.Len() && BasicRuntimeAccess::HasRuntime() )
+ {
+ BasicRuntime aRun = BasicRuntimeAccess::GetRuntime();
+ pImpl->aTestCaseFileName = aRun.GetModuleName(SbxNAME_SHORT_TYPES);
+ if ( pImpl->aTestCaseFileName.Copy(0,2).CompareToAscii( "--" ) == COMPARE_EQUAL )
+ pImpl->aTestCaseFileName.Erase(0,2);
+ pImpl->nTestCaseLineNr = aRun.GetLine();
+ }
+ else
+ {
+ pImpl->aTestCaseFileName.Erase();
+ pImpl->nTestCaseLineNr = 0;
+ }
+ ADD_CASE_LOG( aX );
+ }
+ break;
+ case ID_ExceptLog:
+ if ( IS_ERROR() )
+ {
+ BasicRuntime aRun = BasicRuntimeAccess::GetRuntime();
+ BOOL bWasNewError = FALSE;
+
+ if ( BasicRuntimeAccess::HasStack() )
+ {
+ for ( USHORT i = 0 ; i < BasicRuntimeAccess::GetStackEntryCount() -1 ; i++ )
+ {
+ BasicErrorStackEntry aThisEntry = BasicRuntimeAccess::GetStackEntry(i);
+ if ( !bWasNewError )
+ {
+ bWasNewError = TRUE;
+ ADD_ERROR_LOG( GET_ERROR()->aText, aThisEntry.GetModuleName(SbxNAME_SHORT_TYPES),
+ aThisEntry.GetLine(), aThisEntry.GetCol1(), aThisEntry.GetCol2(), aThisEntry.GetSourceRevision() );
+ }
+ ADD_CALL_STACK_LOG( String(aThisEntry.GetModuleName(SbxNAME_SHORT_TYPES))
+ .AppendAscii(": ").Append(aThisEntry.GetMethodName(SbxNAME_SHORT_TYPES)),
+ aThisEntry.GetModuleName(SbxNAME_SHORT_TYPES),
+ aThisEntry.GetLine(), aThisEntry.GetCol1(), aThisEntry.GetCol2() );
+
+ }
+ BasicRuntimeAccess::DeleteStack();
+ }
+
+ BOOL bIsFirst = TRUE;
+ while ( aRun.IsValid() )
+ {
+ xub_StrLen nErrLn;
+ xub_StrLen nCol1;
+ xub_StrLen nCol2;
+ if ( bIsFirst )
+ {
+ bIsFirst = FALSE;
+ nErrLn = GET_ERROR()->nLine;
+ nCol1 = GET_ERROR()->nCol1;
+ nCol2 = GET_ERROR()->nCol2;
+ }
+ else
+ {
+ nErrLn = aRun.GetLine();
+ nCol1 = aRun.GetCol1();
+ nCol2 = aRun.GetCol2();
+ }
+
+ if ( !bWasNewError )
+ {
+ bWasNewError = TRUE;
+ ADD_ERROR_LOG( GET_ERROR()->aText, aRun.GetModuleName(SbxNAME_SHORT_TYPES),
+ nErrLn, nCol1, nCol2, aRun.GetSourceRevision() );
+ }
+ ADD_CALL_STACK_LOG( String(aRun.GetModuleName(SbxNAME_SHORT_TYPES))
+ .AppendAscii(": ").Append(aRun.GetMethodName(SbxNAME_SHORT_TYPES)),
+ aRun.GetModuleName(SbxNAME_SHORT_TYPES),
+ nErrLn, nCol1, nCol2 );
+ aRun = aRun.GetNextRuntime();
+ }
+ }
+ break;
+ case ID_ErrorLog:
+ if ( IS_ERROR() )
+ {
+ BasicRuntime aRun = BasicRuntimeAccess::GetRuntime();
+ if ( BasicRuntimeAccess::HasStack() )
+ {
+ BasicErrorStackEntry aThisEntry = BasicRuntimeAccess::GetStackEntry( 0 );
+ ADD_ERROR_LOG( GET_ERROR()->aText, aThisEntry.GetModuleName(SbxNAME_SHORT_TYPES),
+ aThisEntry.GetLine(), aThisEntry.GetCol1(), aThisEntry.GetCol2(), aThisEntry.GetSourceRevision() );
+ BasicRuntimeAccess::DeleteStack();
+ }
+ else
+ {
+ ADD_ERROR_LOG( GET_ERROR()->aText, aRun.GetModuleName(SbxNAME_SHORT_TYPES),
+ StarBASIC::GetErl(), aRun.GetCol1(), aRun.GetCol2(), aRun.GetSourceRevision() );
+ }
+ }
+ break;
+ case ID_QAErrorLog:
+ if ( rPar ) // rPar != NULL <=> Es gibt Parameter
+ {
+ USHORT n;
+ String aSammel;
+ for ( n = 1; n < rPar->Count(); n++ )
+ {
+ SbxVariableRef pArg = rPar->Get( n );
+ aSammel += pArg->GetString();
+ }
+ ADD_QA_ERROR_LOG( aSammel );
+ }
+ break;
+ case ID_PrintLog:
+ if ( rPar ) // rPar != NULL <=> Es gibt Parameter
+ {
+ USHORT n;
+ String aSammel;
+ for ( n = 1; n < rPar->Count(); n++ )
+ {
+ SbxVariableRef pArg = rPar->Get( n );
+ aSammel += pArg->GetString();
+ }
+ ADD_MESSAGE_LOG( aSammel );
+ }
+ break;
+ case ID_WarnLog:
+ if ( rPar ) // rPar != NULL <=> Es gibt Parameter
+ {
+ USHORT n;
+ String aSammel;
+ for ( n = 1; n < rPar->Count(); n++ )
+ {
+ SbxVariableRef pArg = rPar->Get( n );
+ aSammel += pArg->GetString();
+ }
+ ADD_WARNING_LOG( aSammel );
+
+ }
+ break;
+ case ID_ClearError:
+ while ( IS_ERROR() )
+ {
+ POP_ERROR();
+ }
+ break;
+ case ID_MaybeAddErr:
+ if ( ((StarBASIC*)GetParent())->GetErrBasic() && ( !IS_ERROR() ||
+ pFehlerListe->GetObject(pFehlerListe->Count()-1)->nError != ((StarBASIC*)GetParent())->GetErrBasic() ) )
+ {
+ ((StarBASIC*)GetParent())->MakeErrorText(((StarBASIC*)GetParent())->GetErrBasic(),String());
+ ADD_ERROR_QUIET(((StarBASIC*)GetParent())->GetErrBasic() , ((StarBASIC*)GetParent())->GetErrorText())
+ }
+ break;
+ case ID_GetNextCloseWindow:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ {
+ SetError( SbxERR_NOTIMP );
+ break;
+
+// Das ist total rotten und mu� wohl komplett neu!!
+
+
+/* BOOL bWasBlock = IsBlock;
+ if ( !IsBlock ) // Impliziter call bei Aufruf mit Methode
+ if ( SingleCommandBlock )
+ BeginBlock();
+// if ( !IsError() )
+// In->GenCmdSlot (128,rPar);
+// ((Controls*)pVar)->pMethodVar->nValue = 128;
+
+ ULONG nOldValue = ((Controls*)pVar)->GetULong();
+ // Setzen, so da� beim Return der Wert stimmt
+ ((Controls*)pVar)->PutULong( 128 );
+ pImpl->pNextReturn = ((Controls*)pVar)->pMethodVar;
+ if ( SingleCommandBlock )
+ EndBlock();
+ WaitForAnswer();
+ if ( bWasBlock )
+ if ( SingleCommandBlock )
+ BeginBlock();
+ ((Controls*)pVar)->PutULong( nOldValue );
+
+ // R�cksetzen, so da� beim n�chsten Aufruf alles klappt
+// ((Controls*)pVar)->SetUserData( 128 );
+
+
+// ((Controls*)pVar)->SetName("xxx");
+ // Setzen und r�cksetzen der ID, so dass der Notify ohne Wirkung bleibt.
+ ((Controls*)pVar)->pMethodVar->SetUserData(ID_ErrorDummy);
+ ((Controls*)pVar)->PutULong( ((Controls*)pVar)->pMethodVar->GetULong() );
+ ((Controls*)pVar)->pMethodVar->SetUserData(ID_Control);
+
+ pShortNames->Insert( CUniString("xxx"), SmartId( ((Controls*)pVar)->pMethodVar->nValue ), nSequence );
+
+ nOldValue = ((Controls*)pVar)->GetULong();
+
+ SbxVariable *pMember;
+ if ( ! (pMember = ((Controls*)pVar)->Find(CUniString("ID"),SbxCLASS_DONTCARE)) )
+ {
+ pMember = new SbxProperty(CUniString("ID"),SbxVARIANT);
+ ((Controls*)pVar)->Insert(pMember);
+ }
+ pMember->PutULong(((Controls*)pVar)->pMethodVar->nValue);
+
+ if ( ! (pMember = ((Controls*)pVar)->Find(CUniString("name"),SbxCLASS_DONTCARE)) )
+ {
+ pMember = NULL;
+ }
+ else
+ pMember->PutString(CUniString("xxx"));
+
+ */
+
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_RemoteCommand:
+ {
+ if ( SingleCommandBlock )
+ BeginBlock();
+ else
+ if ( ((SbxTransportMethod*)pVar)->nValue & M_WITH_RETURN )
+ {
+ SetError( SbxERR_NOTIMP );
+ }
+ if ( !IsError() )
+ In->GenCmdCommand ((USHORT)(((SbxTransportMethod*)pVar)->nValue),rPar);
+ if ( !IsError() && ((SbxTransportMethod*)pVar)->nValue & M_WITH_RETURN )
+ {
+ pImpl->pNextReturn = ((SbxTransportMethod*)pVar);
+ aNextReturnId = SmartId( ((SbxTransportMethod*)pVar)->nValue );
+ }
+ if ( SingleCommandBlock )
+ EndBlock();
+ if ( !IsError() && (USHORT)((SbxTransportMethod*)pVar)->nValue & M_WITH_RETURN )
+ {
+ WaitForAnswer();
+ }
+ // f�r einige noch etwas Nachbehandlung
+ switch ( ((SbxTransportMethod*)pVar)->nValue )
+ {
+ case RC_WinTree:
+// ::svt::OStringTransfer::CopyString(pVar->GetString(), pSomeWindowIDontHave );
+ break;
+ }
+
+ }
+ break;
+ case ID_Dispatch:
+ if ( !rPar || (rPar->Count() % 2) == 1 ) // rPar = NULL <=> Kein Parameter ansonsten Gerade Anzahl(Ungerade, da immer Anzahl+1
+ {
+ if ( SingleCommandBlock )
+ BeginBlock();
+ if ( !IsError() )
+ In->GenCmdSlot ( (USHORT)((SbxTransportMethod*)pVar)->nValue, rPar );
+ pVar->PutInteger( (USHORT)((SbxTransportMethod*)pVar)->nValue );
+ if ( SingleCommandBlock )
+ EndBlock();
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_UNODispatch:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter ansonsten Gerade Anzahl(Ungerade, da immer Anzahl+1
+ {
+ if ( SingleCommandBlock )
+ BeginBlock();
+ if ( !IsError() )
+ In->GenCmdUNOSlot ( ((SbxTransportMethod*)pVar)->aUnoSlot );
+ pVar->PutString( ((SbxTransportMethod*)pVar)->aUnoSlot );
+ if ( SingleCommandBlock )
+ EndBlock();
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_Control:
+ case ID_StringControl:
+ // if only the object is given in the script we don't have to do anything (object stands for itself)
+ if ( !pVar->ISA( SbxObject ) )
+ {
+ if ( SingleCommandBlock )
+ BeginBlock();
+ else
+ if ( ((SbxTransportMethod*)pVar)->nValue & M_WITH_RETURN )
+ {
+ SetError( SbxERR_NOTIMP );
+ }
+ if ( !IsError() )
+ {
+ SbxVariable *pMember = NULL;
+ if ( pVar->GetParent() )
+ pMember = pVar->GetParent()->Find(CUniString("ID"),SbxCLASS_DONTCARE);
+ if ( pMember == NULL )
+ {
+ SetError( SbxERR_NAMED_NOT_FOUND );
+ }
+ else
+ {
+ if ( nHintUserData == ID_Control )
+ {
+ In->GenCmdControl (pMember->GetULong(),
+ (USHORT)((SbxTransportMethod*)pVar)->nValue, rPar);
+ aNextReturnId = SmartId( pMember->GetULong() );
+ }
+ else
+ {
+ In->GenCmdControl (pMember->GetString(),
+ (USHORT)((SbxTransportMethod*)pVar)->nValue, rPar);
+ aNextReturnId = SmartId( pMember->GetString() );
+ }
+ }
+
+ if ( !IsError() && ((SbxTransportMethod*)pVar)->nValue & M_WITH_RETURN )
+ {
+ pImpl->pNextReturn = ((SbxTransportMethod*)pVar);
+ }
+ else
+ {
+ pImpl->pNextReturn = NULL;
+ aNextReturnId = SmartId();
+ }
+
+ }
+ if ( SingleCommandBlock )
+ EndBlock();
+ if ( !IsError() && (USHORT)((SbxTransportMethod*)pVar)->nValue & M_WITH_RETURN )
+ {
+ WaitForAnswer();
+ }
+ }
+
+ break;
+ case ID_GetUnoApp:
+ {
+ // Hier wird der Remote UNO Kram gestartet
+ // Eintrag in die Konfiguration unter
+ // org.openoffice.Office.Common/Start/Connection
+ // socket,host=0,port=12345;iiop;XBla
+ // oder
+ // socket,host=0,port=12345;urp;;XBla
+
+ String aString;
+ aString.AppendAscii( "socket,host=" );
+ aString += GetHostConfig();
+ aString.AppendAscii( ",port=" );
+ aString += String::CreateFromInt32( GetUnoPortConfig() );
+
+ Reference< XMultiServiceFactory > smgr_xMultiserviceFactory;
+ try
+ {
+ Reference< XMultiServiceFactory > xSMgr = comphelper::getProcessServiceFactory();
+// is allways there
+/* if ( ! xSMgr.is() )
+ {
+ xSMgr = ::cppu::createRegistryServiceFactory(OUString(RTL_CONSTASCII_USTRINGPARAM("applicat.rdb")), sal_True );
+ if ( xSMgr.is() )
+ comphelper::setProcessServiceFactory( xSMgr );
+ }*/
+
+ OUString aURL( aString );
+ Reference< XConnector > xConnector( xSMgr->createInstance(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.connection.Connector") ) ), UNO_QUERY );
+ Reference< XConnection > xConnection( xConnector->connect( aURL ) );
+
+ Reference< XBridgeFactory > xBridgeFactory( xSMgr->createInstance(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.BridgeFactory") ) ), UNO_QUERY );
+ Reference< XBridge > xBridge( xBridgeFactory->createBridge(
+ OUString(), OUString( RTL_CONSTASCII_USTRINGPARAM("urp") ),
+ xConnection, Reference< XInstanceProvider >() ) );
+
+ // Reference< XInterface > xRet( xBridge->getInstance( OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")) ) );
+ Reference< XInterface > xRet( xBridge->getInstance( OUString( RTL_CONSTASCII_USTRINGPARAM("StarOffice.ServiceManager")) ) );
+
+ // Reference< XNamingService > xNamingService(xRet, UNO_QUERY);
+
+ // Reference< XInterface > smgr = xNamingService->getRegisteredObject( OUString( RTL_CONSTASCII_USTRINGPARAM("StarOffice.ServiceManager" ) ) );
+
+ smgr_xMultiserviceFactory = Reference< XMultiServiceFactory >(xRet, UNO_QUERY);
+ //MBA fragen!!
+ }
+ catch( class Exception & rEx)
+ {
+ ADD_ERROR(SbxERR_BAD_ACTION, String( rEx.Message ) );
+ }
+ catch( ... )
+ {
+ ADD_ERROR(SbxERR_BAD_ACTION, CUniString( "Unknown Error" ) );
+ }
+
+ if( smgr_xMultiserviceFactory.is() )
+ {
+ Any aAny;
+// aAny <<= xBridge;
+ aAny <<= smgr_xMultiserviceFactory;
+
+ SbxObjectRef xMySbxObj = GetSbUnoObject( CUniString("RemoteUnoAppFuerTesttool"), aAny );
+ if ( xMySbxObj.Is() )
+ pVar->PutObject( xMySbxObj );
+ }
+ }
+ break;
+ case ID_GetIServer:
+ {
+ // Hier wird der Remote UNO Kram gestartet
+
+ String aString;
+// aString += GetHostConfig();
+// aString.AppendAscii( ":" );
+// aString += String::CreateFromInt32( GetUnoPortConfig() );
+
+ Reference< XMultiServiceFactory > xSMgr /* = comphelper::getProcessServiceFactory()*/;
+// if ( ! xSMgr.is() )
+ {
+ xSMgr = ::cppu::createRegistryServiceFactory(OUString(RTL_CONSTASCII_USTRINGPARAM("g:\\iserverproxy.rdb")), sal_True);
+// comphelper::setProcessServiceFactory( xSMgr );
+ }
+
+ OUString aURL( aString );
+ Reference< XConnector > xConnector( xSMgr->createInstance(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.connection.Connector") ) ), UNO_QUERY );
+ Reference< XConnection > xConnection( xConnector->connect( OUString( RTL_CONSTASCII_USTRINGPARAM("socket,host=grande,port=7453")) ) );
+
+ Reference< XBridgeFactory > xBridgeFactory( xSMgr->createInstance(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.BridgeFactory") ) ), UNO_QUERY );
+ Reference< XBridge > xBridge( xBridgeFactory->createBridge(
+ OUString(), OUString( RTL_CONSTASCII_USTRINGPARAM("urp") ),
+ xConnection, Reference< XInstanceProvider >() ) );
+
+ Reference< XInterface > xRet( xBridge->getInstance( OUString( RTL_CONSTASCII_USTRINGPARAM("XIServerProxy")) ) );
+
+
+/* Reference< XIServerProxy > xIS( xRet, UNO_QUERY );
+ if ( xIS.is() )
+ {
+ String aHost( xIS->getIServerHost() );
+
+// Reference < XInformationClient > xIC = xIS->createIServerClient( "XInformationClient" );
+ Reference < XInformationClient > xIC = xIS->createInformationClient();
+ xIC->getTree(OUString::createFromAscii("r:\\b_server\\config\\stand.lst"), OUString() );
+
+
+ Reference< XTypeProvider > xTP( xRet, UNO_QUERY );
+ Sequence < com::sun::star::uno::Type > s = xTP->getTypes();
+ }
+ */
+
+ if( xRet.is() )
+ {
+ Any aAny;
+ aAny <<= xRet;
+
+ SbxObjectRef xMySbxObj = GetSbUnoObject( CUniString("IServerProxy"), aAny );
+ if ( xMySbxObj.Is() )
+ pVar->PutObject( xMySbxObj );
+ }
+ // In Basic:
+ // msgbox dbg_SupportedInterfaces
+ // msgbox dbg_Properties
+ // msgbox dbg_Methods
+ }
+ break;
+ case ID_RemoteCommandDelay:
+ if ( rPar && rPar->Count() >= 2 && rPar->Count() <=3 )
+ {
+ switch (rPar->Get( 1 )->GetType())
+ {
+ case SbxLONG: // alles immer als Short �bertragen
+ case SbxULONG:
+ case SbxLONG64:
+ case SbxULONG64:
+ case SbxDOUBLE:
+ case SbxINTEGER:
+ case SbxBYTE:
+ case SbxUSHORT:
+ case SbxINT:
+ case SbxUINT:
+ case SbxSINGLE:
+ pImpl->nMinRemoteCommandDelay = rPar->Get( 1 )->GetULong();
+ if ( rPar->Count() == 3 )
+ pImpl->nMaxRemoteCommandDelay = rPar->Get( 2 )->GetULong();
+ else
+ pImpl->nMaxRemoteCommandDelay = pImpl->nMinRemoteCommandDelay;
+ break;
+ case SbxBOOL:
+ pImpl->bDoRemoteCommandDelay = rPar->Get( 1 )->GetBool();
+ break;
+ default:
+ SbxBase::SetError( SbxERR_WRONG_ARGS );
+ break;
+ }
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_GetApplicationPath:
+ if ( !rPar )
+ {
+ OUString aUrl = Config::GetDefDirectory();
+ OUString aPath;
+ osl::FileBase::getSystemPathFromFileURL( aUrl, aPath );
+ pVar->PutString( String( aPath ) );
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_GetCommonApplicationPath:
+ if ( !rPar )
+ {
+#ifdef WNT
+ //////// adapted this from setup2\win\source\system\winos.cxx
+ String aSysPath;
+ aSysPath = _SHGetSpecialFolder_COMMON_APPDATA();
+ if ( aSysPath.Len() )
+ {
+ pVar->PutString( aSysPath );
+ }
+ else // default to ID_GetApplicationPath (same as in setup)
+ {
+ OUString aUrl = Config::GetDefDirectory();
+ OUString aPath;
+ osl::FileBase::getSystemPathFromFileURL( aUrl, aPath );
+ pVar->PutString( String( aPath ) );
+ }
+#elif defined OS2
+ {
+ char* etc = getenv("ETC");
+ if (etc)
+ pVar->PutString( CUniString( etc ) );
+ else
+ pVar->PutString( CUniString( "/etc" ) );
+ }
+#else
+#if UNX
+ pVar->PutString( CUniString( "/etc" ) );
+#else
+#error not implemented
+#endif
+#endif
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_MakeIniFileName:
+ if ( rPar && rPar->Count() == 2 )
+ {
+ OUString aUrl = Config::GetConfigName( String(), rPar->Get( 1 )->GetString() );
+ OUString aPath;
+ osl::FileBase::getSystemPathFromFileURL( aUrl, aPath );
+ pVar->PutString( String( aPath ) );
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_Wait:
+ {
+ if( rPar && rPar->Count() == 2 )
+ {
+ long nWait = rPar->Get(1)->GetLong();
+ if( nWait >= 0 )
+ {
+#ifdef DEBUG
+ Time aStart;
+#endif
+ Timer aTimer;
+ aTimer.SetTimeout( nWait );
+ aTimer.Start();
+ while ( aTimer.IsActive() )
+ Application::Yield();
+#ifdef DEBUG
+ Time aEnd;
+ Time aDiff = aEnd - aStart;
+ long aMS = long( aDiff.GetMSFromTime() );
+ if ( Abs( aMS - nWait ) > 100 )
+ {
+ DBG_ERROR1("Wait was off limit by %i", aDiff.GetMSFromTime() - nWait );
+ }
+#endif
+ }
+ }
+ else
+ SetError( SbERR_BAD_NUMBER_OF_ARGS );
+ }
+ break;
+ case ID_GetErrorCount:
+ {
+ pVar->PutULong( pImpl->nErrorCount );
+ }
+ break;
+ case ID_GetWarningCount:
+ {
+ pVar->PutULong( pImpl->nWarningCount );
+ }
+ break;
+ case ID_GetQAErrorCount:
+ {
+ pVar->PutULong( pImpl->nQAErrorCount );
+ }
+ break;
+ case ID_GetUseFileWarningCount:
+ {
+ pVar->PutULong( pImpl->nIncludeFileWarningCount );
+ }
+ break;
+ case ID_GetErrorList:
+ {
+ if ( ! pImpl->xErrorList->GetDims() )
+ pImpl->xErrorList->AddDim( 1, 32000 );
+ pVar->PutObject( pImpl->xErrorList );
+ }
+ break;
+ case ID_GetWarningList:
+ {
+ if ( ! pImpl->xWarningList->GetDims() )
+ pImpl->xWarningList->AddDim( 1, 32000 );
+ pVar->PutObject( pImpl->xWarningList );
+ }
+ break;
+ case ID_GetQAErrorList:
+ {
+ if ( ! pImpl->xQAErrorList->GetDims() )
+ pImpl->xQAErrorList->AddDim( 1, 32000 );
+ pVar->PutObject( pImpl->xQAErrorList );
+ }
+ break;
+ case ID_GetUseFileWarningList:
+ {
+ if ( ! pImpl->xIncludeFileWarningList->GetDims() )
+ pImpl->xIncludeFileWarningList->AddDim( 1, 32000 );
+ pVar->PutObject( pImpl->xIncludeFileWarningList );
+ }
+ break;
+ case ID_GetTestCaseName:
+ {
+ pVar->PutString( pImpl->aTestCaseName );
+ }
+ break;
+ case ID_GetTestCaseFileName:
+ {
+ pVar->PutString( pImpl->aTestCaseFileName );
+ }
+ break;
+ case ID_GetTestCaseLineNr:
+ {
+ pVar->PutUShort( pImpl->nTestCaseLineNr );
+ }
+ break;
+ case ID_SetChildEnv:
+ {
+ if( rPar && rPar->Count() == 3 )
+ {
+ pImpl->pChildEnv->erase( rPar->Get(1)->GetString() );
+ pImpl->pChildEnv->insert( EnvironmentVariable( rPar->Get(1)->GetString(), rPar->Get(2)->GetString() ) );
+ }
+ else
+ SetError( SbERR_BAD_NUMBER_OF_ARGS );
+ }
+ break;
+ case ID_GetChildEnv:
+ {
+ if( rPar && rPar->Count() == 2 )
+ {
+ Environment::const_iterator aIter = pImpl->pChildEnv->find( rPar->Get(1)->GetString() );
+ if ( aIter != pImpl->pChildEnv->end() )
+ pVar->PutString( (*aIter).second );
+ else
+ pVar->PutString( String() );
+ }
+ else
+ SetError( SbERR_BAD_NUMBER_OF_ARGS );
+ }
+ break;
+ case ID_GetLinkDestination:
+ {
+ if( rPar && rPar->Count() == 2 )
+ {
+ String aSource,aDest;
+ aSource = rPar->Get(1)->GetString();
+#ifdef UNX
+ ByteString aByteSource( aSource, osl_getThreadTextEncoding() );
+ char cDest[1024];
+ int nLen = 0;
+ if ( ( nLen = readlink( aByteSource.GetBuffer(), cDest, sizeof(cDest) ) ) >= 0 )
+ {
+ aDest = String( cDest, nLen, osl_getThreadTextEncoding() );
+ }
+ else
+ {
+ int nErr = errno;
+ switch ( nErr )
+ {
+ case EINVAL: aDest = aSource;
+ break;
+ default:
+ SetError( SbERR_ACCESS_ERROR );
+ }
+ }
+#else
+ aDest = aSource;
+#endif
+ pVar->PutString( aDest );
+ }
+ else
+ SetError( SbERR_BAD_NUMBER_OF_ARGS );
+ }
+ break;
+ case ID_GetRegistryValue:
+ {
+ if( rPar && rPar->Count() == 3 )
+ {
+ String aValue;
+#ifdef WNT
+ aValue = ReadRegistry( rPar->Get(1)->GetString(), rPar->Get(2)->GetString() );
+#endif
+ pVar->PutString( aValue );
+ }
+ else
+ SetError( SbERR_BAD_NUMBER_OF_ARGS );
+ }
+ break;
+ case ID_HTTPSend:
+ {
+ if( rPar && ( rPar->Count() == 4 || rPar->Count() == 5 ) )
+ {
+ if ( !pImpl->pHttpRequest )
+ pImpl->pHttpRequest = new HttpRequest;
+ pImpl->pHttpRequest->SetRequest( ByteString( rPar->Get(1)->GetString(), RTL_TEXTENCODING_ASCII_US ), ByteString( rPar->Get(2)->GetString(), RTL_TEXTENCODING_ASCII_US ), rPar->Get(3)->GetUShort() );
+
+ if ( pImpl->pHttpRequest->Execute() )
+ {
+ if ( rPar->Count() == 5 )
+ { // filename is given
+ SvFileStream aDestination( rPar->Get(4)->GetString(), STREAM_STD_READWRITE | STREAM_TRUNC );
+ (*(pImpl->pHttpRequest->GetBody())) >> aDestination;
+ if ( aDestination.GetError() != ERRCODE_NONE )
+ SetError( SbERR_ACCESS_ERROR );
+ aDestination.Close();
+ }
+ pVar->PutUShort( pImpl->pHttpRequest->GetResultId() );
+ }
+ else
+ SetError( SbERR_ACCESS_ERROR );
+ }
+ else
+ SetError( SbERR_BAD_NUMBER_OF_ARGS );
+ }
+ break;
+ case ID_HTTPSetProxy:
+ {
+ if( rPar && rPar->Count() == 3 )
+ {
+ if ( !pImpl->pHttpRequest )
+ pImpl->pHttpRequest = new HttpRequest;
+ pImpl->pHttpRequest->SetProxy( ByteString( rPar->Get(1)->GetString(), RTL_TEXTENCODING_ASCII_US ), rPar->Get(2)->GetUShort() );
+ }
+ else
+ SetError( SbERR_BAD_NUMBER_OF_ARGS );
+ }
+ break;
+ } // switch( nHintUserData )
+ } // if( nHintId == SBX_HINT_DATAWANTED )
+ else if( nHintId == SBX_HINT_DATACHANGED )
+ {
+ switch( nHintUserData )
+ {
+ case ID_AutoExecute:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ {
+ SingleCommandBlock = pVar->GetBool();
+ if ( SingleCommandBlock )
+ EndBlock();
+ else
+ BeginBlock();
+ }
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ case ID_EnableQaErrors:
+ if ( !rPar ) // rPar = NULL <=> Kein Parameter
+ pImpl->bEnableQaErrors = pVar->GetBool();
+ else
+ SetError( SbxERR_WRONG_ARGS );
+ break;
+ }
+ } // if( nHintId == SBX_HINT_DATACHANGED )
+ else if( nHintId == SBX_HINT_BASICSTART )
+ {
+ pImpl->nErrorCount = 0;
+ pImpl->nWarningCount = 0;
+ pImpl->nQAErrorCount = 0;
+ pImpl->nIncludeFileWarningCount = 0;
+
+ pImpl->xErrorList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+ pImpl->xWarningList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+ pImpl->xQAErrorList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+ pImpl->xIncludeFileWarningList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+
+ if (pFehlerListe)
+ delete pFehlerListe;
+ pFehlerListe = new CErrors;
+
+ for (USHORT i=0;i<VAR_POOL_SIZE;i++)
+ {
+ pImpl->pMyVars[i]->SetName( CUniString("VarDummy").Append(UniString::CreateFromInt32(i)) );
+ }
+ nMyVar = 0;
+
+ } // if( nHintId == SBX_HINT_BASICSTART )
+ else if( nHintId == SBX_HINT_BASICSTOP )
+ {
+ // Log summary to journal
+ ADD_CASE_LOG( String() ); // Case abschliessen
+ ADD_MESSAGE_LOG( CUniString("***************************************************") );
+ if ( pImpl->nErrorCount )
+ {
+ ADD_WARNING_LOG( GEN_RES_STR1( S_ERRORS_DETECTED, String::CreateFromInt32( pImpl->nErrorCount ) ) );
+ pImpl->nWarningCount--; // Anpassen, da diese Warnung nicht in die Statistik soll
+ }
+ else
+ ADD_MESSAGE_LOG( GEN_RES_STR0( S_NO_ERRORS_DETECTED ) );
+
+ if ( pImpl->nWarningCount )
+ ADD_WARNING_LOG( GEN_RES_STR1( S_WARNINGS_DETECTED, String::CreateFromInt32( pImpl->nWarningCount ) ) )
+ else
+ ADD_MESSAGE_LOG( GEN_RES_STR0( S_NO_WARNINGS_DETECTED ) );
+
+ if ( pImpl->nIncludeFileWarningCount )
+ ADD_WARNING_LOG( GEN_RES_STR1( S_INCLUDE_FILE_WARNINGS_DETECTED, String::CreateFromInt32( pImpl->nIncludeFileWarningCount ) ) )
+ else
+ ADD_MESSAGE_LOG( GEN_RES_STR0( S_NO_INCLUDE_FILE_WARNINGS_DETECTED ) );
+ ADD_MESSAGE_LOG( CUniString("***************************************************") );
+
+ pImpl->nErrorCount = 0;
+ pImpl->nWarningCount = 0;
+ pImpl->nQAErrorCount = 0;
+ pImpl->nIncludeFileWarningCount = 0;
+
+ pImpl->xErrorList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+ pImpl->xWarningList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+ pImpl->xQAErrorList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+ pImpl->xIncludeFileWarningList->SbxArray::Clear(); // call SbxArray::Clear because SbxVarArray::Clear only clears dimensions but no content
+ } // if( nHintId == SBX_HINT_BASICSTOP )
+ WaitForAnswer();
+ if ( IsError() && ( !IS_ERROR() || GET_ERROR()->nError != GetError() ) )
+ {
+ ((StarBASIC*)GetParent())->MakeErrorText(GetError(),String());
+ ADD_ERROR_QUIET(GetError(),String(pVar->GetName()).AppendAscii(": ").
+ Append(((StarBASIC*)GetParent())->GetErrorText()));
+ }
+ }
+}
+
+void TestToolObj::DebugFindNoErrors( BOOL bDebugFindNoErrors )
+{
+ pImpl->bDebugFindNoErrors = bDebugFindNoErrors;
+}
+
+SbxVariable* TestToolObj::Find( const String& aStr, SbxClassType aType)
+{
+ if ( BasicRuntimeAccess::IsRunInit() ) // wegen Find im "Global" Befehl des Basic
+ return NULL;
+
+ SbxVariableRef Old = SbxObject::Find(aStr, aType );
+ // do not return any objects from pMyVars[]
+ if (Old && Old->GetUserData() != ID_Dispatch
+ && Old->GetUserData() != ID_UNODispatch
+ && Old->GetUserData() != ID_ErrorDummy
+ && Old->GetUserData() != 0 )
+ return Old;
+ else if ( aStr.SearchAscii(":") != STRING_NOTFOUND )
+ { // ignore qualified names e.g. main:FormWizard If this was removed an error would be generated
+ }
+ else
+ {
+
+ USHORT nElement;
+ ControlDef *pWhatName = new ControlDef(aStr,SmartId());
+
+ /// nach Controls suchen
+ if (m_pNameKontext && m_pNameKontext->Seek_Entry(pWhatName,&nElement))
+ {
+ delete pWhatName;
+ pWhatName = ((ControlDef*)m_pNameKontext->GetObject(nElement));
+
+//// new Controls Object every time
+ pImpl->pControlsObj = new Controls( pWhatName->pData->Kurzname );
+ pImpl->pControlsObj->SetType( SbxOBJECT );
+ pImpl->pControlsObj->ChangeListener( this );
+
+
+ // Will be set on method-child further down
+ if ( pWhatName->pData->aUId.HasNumeric() )
+ pImpl->pControlsObj->SetUserData( ID_Control );
+ else
+ pImpl->pControlsObj->SetUserData( ID_StringControl );
+
+ pShortNames->Insert(pWhatName->pData->Kurzname,pWhatName->pData->aUId,nSequence);
+
+ SbxVariable *pMember = pImpl->pControlsObj->Find(CUniString("ID"),SbxCLASS_DONTCARE);
+ if ( pMember == NULL )
+ {
+ SbxProperty* pID = new SbxProperty(CUniString("ID"),SbxVARIANT);
+ pImpl->pControlsObj->Insert(pID);
+ pImpl->pControlsObj->SetDfltProperty(pID);
+ pMember = pID;
+ }
+ if ( pWhatName->pData->aUId.HasNumeric() )
+ pMember->PutULong(pWhatName->pData->aUId.GetNum());
+ else
+ pMember->PutString(pWhatName->pData->aUId.GetStr());
+
+ pMember = pImpl->pControlsObj->Find(CUniString("name"),SbxCLASS_DONTCARE);
+ if ( pMember != NULL )
+ pMember->PutString(pWhatName->pData->Kurzname);
+
+ return pImpl->pControlsObj;
+ }
+
+ /// Nach slots suchen
+ if (m_pSIds && m_pSIds->Seek_Entry(pWhatName,&nElement))
+ {
+ SbxTransportMethodRef pMyVar;
+ pMyVar = pImpl->pMyVars[nMyVar++];
+ if ( nMyVar >= VAR_POOL_SIZE )
+ nMyVar = 0;
+ delete pWhatName;
+ pWhatName = ( (ControlDef*)m_pSIds->GetObject( nElement ) );
+ pMyVar->SetName( pWhatName->pData->Kurzname );
+
+ if ( pWhatName->pData->aUId.HasNumeric() )
+ {
+ pMyVar->SetUserData( ID_Dispatch );
+ pMyVar->nValue = pWhatName->pData->aUId.GetNum();
+ pShortNames->Insert( aStr, pWhatName->pData->aUId, nSequence );
+ }
+ else
+ {
+ pMyVar->SetUserData( ID_UNODispatch );
+ pMyVar->aUnoSlot = pWhatName->pData->aUId.GetStr();
+ }
+ return pMyVar;
+ }
+
+ /// es kann sich noch um eine SlotID handeln, die numerisch abgefragt wird, statt ausgef�hrt zu werden
+ if ( aStr.Copy( aStr.Len()-3, 3 ).CompareIgnoreCaseToAscii("_ID") == COMPARE_EQUAL && m_pSIds )
+ {
+ delete pWhatName;
+ pWhatName = new ControlDef( aStr.Copy( 0, aStr.Len()-3 ), SmartId() );
+ if ( m_pSIds->Seek_Entry( pWhatName, &nElement ) )
+ { // Nach slots suchen
+ SbxVariable *pReturn = new SbxVariable;
+ delete pWhatName;
+ pWhatName = ( (ControlDef*)m_pSIds->GetObject( nElement ) );
+ pReturn->SetName( pWhatName->pData->Kurzname );
+
+ if ( pWhatName->pData->aUId.HasNumeric() )
+ pReturn->PutULong(pWhatName->pData->aUId.GetNum());
+ else
+ pReturn->PutString(pWhatName->pData->aUId.GetStr());
+ return pReturn;
+ }
+ }
+ if ( !pImpl->bDebugFindNoErrors )
+ {
+ ADD_ERROR(SbxERR_PROC_UNDEFINED,GEN_RES_STR1(S_UNKNOWN_SLOT_CONTROL, aStr) );
+ }
+ }
+ return NULL;
+}
+
+String TestToolObj::GetRevision( String const &aSourceIn )
+{
+ // search $Revision: 1.40 $
+ xub_StrLen nPos;
+ if ( ( nPos = aSourceIn.SearchAscii( "$Revision:" ) ) != STRING_NOTFOUND )
+ return aSourceIn.Copy( nPos+ 10, aSourceIn.SearchAscii( "$", nPos+10 ) -nPos-10);
+ else
+ return String::CreateFromAscii("No Revision found");
+}
+
+BOOL TestToolObj::CError( ULONG code, const String& rMsg, xub_StrLen l, xub_StrLen c1, xub_StrLen c2 )
+{
+ bWasPrecompilerError = TRUE;
+ if ( aCErrorHdl.IsSet() )
+ {
+ ErrorEntry aErrorEntry( code, rMsg, l, c1, c2 );
+ return (BOOL)aCErrorHdl.Call( &aErrorEntry );
+ }
+ else
+ {
+ ADD_ERROR( code, rMsg )
+ return TRUE;
+ }
+}
+
+void TestToolObj::CalcPosition( String const &aSource, xub_StrLen nPos, xub_StrLen &l, xub_StrLen &c )
+{
+ l = 1;
+ xub_StrLen nAkt = 0;
+ xub_StrLen nNext;
+ while ( (nNext = aSource.Search( '\n', nAkt )) != STRING_NOTFOUND && nNext < nPos )
+ {
+ l++;
+ nAkt = nNext+1;
+ }
+ c = nPos - nAkt;
+}
+
+
+#define CATCH_LABEL CUniString( "ctch" )
+#define CATCHRES_LABEL CUniString( "ctchres" )
+#define ENDCATCH_LABEL CUniString( "endctch" )
+
+BOOL IsAlphaChar( sal_Unicode cChar )
+{
+ return ( cChar >= 'a' && cChar <= 'z' ) ||
+ ( cChar >= 'A' && cChar <= 'Z' );
+}
+
+BOOL IsInsideString( const String& aSource, const xub_StrLen nStart )
+{
+ BOOL bInside = FALSE;
+ xub_StrLen nPos = nStart-1;
+
+ while ( nPos && aSource.GetChar(nPos) != _CR && aSource.GetChar(nPos) != _LF )
+ {
+ if ( aSource.GetChar(nPos) == '"' )
+ bInside = !bInside;
+ nPos--;
+ }
+ return bInside;
+}
+
+BOOL IsValidHit( const String& aSource, const xub_StrLen nStart, const xub_StrLen nEnd )
+{
+ return !IsAlphaChar( aSource.GetChar(nStart-1) ) && !IsAlphaChar( aSource.GetChar(nEnd+1))
+ && !IsInsideString( aSource, nStart );
+}
+
+
+xub_StrLen TestToolObj::ImplSearch( const String &aSource, const xub_StrLen nStart, const xub_StrLen nEnd, const String &aSearch, const xub_StrLen nSearchStart )
+{
+ xub_StrLen nPos = aSource.Search( aSearch, std::max( nSearchStart, nStart ) );
+ if ( nPos > nEnd - aSearch.Len() || nPos == STRING_NOTFOUND )
+ return STRING_NOTFOUND;
+ else
+ {
+ if ( IsValidHit( aSource, nPos, nPos+aSearch.Len()-1 ) )
+ return nPos;
+ else
+ return ImplSearch( aSource, nStart, nEnd, aSearch, nPos+aSearch.Len() );
+ }
+}
+
+xub_StrLen TestToolObj::PreCompilePart( String &aSource, xub_StrLen nStart, xub_StrLen nEnd, String aFinalErrorLabel, USHORT &nLabelCount )
+{
+ xub_StrLen nTry,nCatch,nEndcatch;
+ if( (nTry = ImplSearch( aSource, nStart, nEnd, CUniString("try"), nStart )) == STRING_NOTFOUND )
+ return nEnd;
+ if ( (nCatch = ImplSearch( aSource, nStart, nEnd, CUniString("catch"), nTry )) == STRING_NOTFOUND )
+ {
+ xub_StrLen l,c;
+ CalcPosition( aSource, nTry, l, c );
+ CError( SbERR_BAD_BLOCK, CUniString("catch"), l, c, c+2 );
+ return nEnd;
+ }
+ if ( (nEndcatch = ImplSearch( aSource, nStart, nEnd, CUniString("endcatch"), nCatch )) == STRING_NOTFOUND )
+ {
+ xub_StrLen l,c;
+ CalcPosition( aSource, nCatch, l, c );
+ CError( SbERR_BAD_BLOCK, CUniString("endcatch"), l, c, c+4 );
+ return nEnd;
+ }
+
+ nLabelCount++;
+ String aStr = String::CreateFromInt32( nLabelCount );
+ String aCatchLabel(CATCH_LABEL);
+ aCatchLabel += aStr;
+ String aCatchresLabel(CATCHRES_LABEL);
+ aCatchresLabel += aStr;
+ String aEndcatchLabel( ENDCATCH_LABEL);
+ aEndcatchLabel += aStr;
+
+ xub_StrLen nTry2 = 0;
+ while ( !WasPrecompilerError() && (nTry2 = ImplSearch( aSource, nStart, nEnd, CUniString("try"), nTry+1 )) != STRING_NOTFOUND )
+ { // Wir rekursieren erstmal mit dem 2. Try
+ if ( nTry2 < nCatch )
+ nEnd += PreCompilePart( aSource, nTry2, nEndcatch+8, aCatchLabel, nLabelCount ) - nEndcatch-8;
+ else
+ nEnd = PreCompilePart( aSource, nTry2, nEnd, aFinalErrorLabel, nLabelCount );
+
+ if ( (nCatch = ImplSearch( aSource, nStart, nEnd, CUniString("catch"), nTry )) == STRING_NOTFOUND )
+ {
+ xub_StrLen l,c;
+ CalcPosition( aSource, nTry, l, c );
+ CError( SbERR_BAD_BLOCK, CUniString("catch"), l, c, c+2 );
+ return nEnd;
+ }
+ if ( (nEndcatch = ImplSearch( aSource, nStart, nEnd, CUniString("endcatch"), nCatch )) == STRING_NOTFOUND )
+ {
+ xub_StrLen l,c;
+ CalcPosition( aSource, nCatch, l, c );
+ CError( SbERR_BAD_BLOCK, CUniString("endcatch"), l, c, c+4 );
+ return nEnd;
+ }
+ }
+
+ String aReplacement;
+ int nTotalLength = -3 -5 -8; // try, catch und endcatch fallen raus
+
+ aReplacement.AppendAscii( "on error goto " );
+ aReplacement += aCatchLabel;
+ aSource.SearchAndReplaceAscii( "try", aReplacement, nTry );
+ nTotalLength += aReplacement.Len();
+
+
+// on error goto endcse
+// goto endctchXX
+// ctchXX:
+// if err = 35 or err = 18 then : resume : endif :
+// MaybeAddErr
+// on error goto endcse
+// resume ctchresXX
+// ctchresXX:
+ aReplacement.Erase();
+ aReplacement.AppendAscii( "on error goto " );
+ aReplacement += aFinalErrorLabel;
+ aReplacement.AppendAscii( " : goto " );
+ aReplacement += aEndcatchLabel;
+ aReplacement.AppendAscii( " : " );
+ aReplacement += aCatchLabel;
+ aReplacement.AppendAscii( ": if err = 35 or err = 18 then : on error goto 0 : resume : endif" );
+ aReplacement.AppendAscii( " : MaybeAddErr : on error goto " );
+ aReplacement += aFinalErrorLabel;
+ aReplacement.AppendAscii( " : resume " );
+ aReplacement += aCatchresLabel;
+ aReplacement.AppendAscii( " : " );
+ aReplacement += aCatchresLabel;
+ aReplacement.AppendAscii( ": " );
+ aSource.SearchAndReplaceAscii( "catch", aReplacement, nCatch );
+ nTotalLength += aReplacement.Len();
+
+
+ aReplacement.Erase();
+ aReplacement.AppendAscii("ClearError : ");
+ aReplacement += aEndcatchLabel;
+ aReplacement.AppendAscii(": ");
+ aSource.SearchAndReplaceAscii( "endcatch", aReplacement, nEndcatch );
+ nTotalLength += aReplacement.Len();
+
+ if ( aSource.Len() >= STRING_MAXLEN )
+ {
+ xub_StrLen l,c;
+ CalcPosition( aSource, nEndcatch, l, c );
+ CError( SbERR_PROG_TOO_LARGE, CUniString("endcatch"), l, c, c+2 );
+ }
+
+ return xub_StrLen( nEnd + nTotalLength );
+}
+
+
+void TestToolObj::PreCompileDispatchParts( String &aSource, String aStart, String aEnd, String aFinalLable )
+{
+ USHORT nLabelCount = 0;
+ xub_StrLen nPartPos = 0;
+
+ while ( !WasPrecompilerError() && (nPartPos = ImplSearch( aSource, nPartPos, aSource.Len(), aStart )) != STRING_NOTFOUND )
+ {
+ xub_StrLen nEndPart = ImplSearch( aSource, nPartPos, aSource.Len(), aEnd );
+ if ( nEndPart == STRING_NOTFOUND )
+ return;
+ nPartPos = PreCompilePart( aSource, nPartPos, nEndPart, aFinalLable, nLabelCount );
+ nPartPos = nPartPos + aEnd.Len();
+ }
+}
+
+
+BOOL TestToolObj::WasPrecompilerError()
+{
+ return bWasPrecompilerError;
+}
+
+String TestToolObj::PreCompile( String const &aSourceIn )
+{
+ // Im CTOR zu fr�h, und hier grade nicg rechtzeitig. Start und Stop von Programmausf�hrung
+ StartListening( ((StarBASIC*)GetParent())->GetBroadcaster(), TRUE );
+
+ xub_StrLen nTestCase;
+ xub_StrLen nEndCase;
+ xub_StrLen nStartPos = 0;
+ String aSource(aSourceIn);
+ bWasPrecompilerError = FALSE;
+
+HACK("Ich gestehe alles: Ich war zu faul das richtig zu machen.")
+ aSource = String(' ').Append( aSource ); // Da Schl�sselworte an Position 0 sonst nicht gefunden werden
+
+
+// Erstmal alle "'" Kommentare raus
+
+ xub_StrLen nComment;
+ while ( (nComment = aSource.SearchAscii("'",nStartPos)) != STRING_NOTFOUND )
+ {
+ USHORT nStringEndCount = 0;
+ xub_StrLen nIndex = nComment;
+ while ( nIndex && aSource.GetChar(nIndex) != '\n' )
+ {
+ if ( aSource.GetChar(nIndex) == '"' )
+ nStringEndCount++;
+ nIndex--;
+ }
+ if ( (nStringEndCount & 1) == 0 ) // Wir waren also nicht innerhalb eines Strings
+ {
+ xub_StrLen nComEnd = aSource.SearchAscii("\n",nComment);
+
+ while ( aSource.GetChar(nComEnd) == _CR || aSource.GetChar(nComEnd) == _LF )
+ nComEnd--;
+
+ nComEnd++;
+
+ aSource.Erase(nComment,nComEnd-nComment);
+ }
+ else
+ nComment++;
+ nStartPos = nComment;
+ }
+
+
+ PreCompileDispatchParts( aSource, CUniString("sub"), CUniString("end sub"), CUniString("0") );
+ PreCompileDispatchParts( aSource, CUniString("function"), CUniString("end function"), CUniString("0") );
+ PreCompileDispatchParts( aSource, CUniString("testcase"), CUniString("endcase"), CUniString("endcse") );
+
+
+ xub_StrLen nMainPos = ImplSearch( aSource, 0, aSource.Len(), CUniString("sub main") );
+ aSource.SearchAndReplaceAscii("sub main",CUniString("Sub Main StartUse : LoadIncludeFiles : FinishUse "), nMainPos );
+ if ( aSource.Len() >= STRING_MAXLEN )
+ {
+ xub_StrLen l,c;
+ CalcPosition( aSource, nMainPos, l, c );
+ CError( SbERR_PROG_TOO_LARGE, CUniString("endcatch"), l, c, c+2 );
+ }
+
+ while ( (nTestCase = ImplSearch( aSource, 0, aSource.Len(), CUniString("testcase") ) ) != STRING_NOTFOUND )
+ {
+ xub_StrLen nTcEnd = aSource.SearchAscii("\n",nTestCase);
+
+ while ( aSource.GetChar(nTcEnd) == _CR || aSource.GetChar(nTcEnd) == _LF )
+ nTcEnd--;
+
+ nTcEnd++;
+
+ if ( aSource.SearchAscii(":",nTestCase) < nTcEnd )
+ nTcEnd = aSource.SearchAscii(":",nTestCase) -1;
+ String aSuffix = aSource.Copy(nTestCase+8,nTcEnd-nTestCase-8);
+ USHORT nOldLen;
+ do
+ {
+ nOldLen = aSuffix.Len();
+ aSuffix.EraseLeadingAndTrailingChars( ' ' );
+ aSuffix.EraseLeadingAndTrailingChars( 0x09 );
+ } while ( nOldLen != aSuffix.Len() );
+ aSource.Erase(nTestCase,nTcEnd-nTestCase);
+ aSource.Insert(CUniString("Sub ").Append(aSuffix).AppendAscii(" CaseLog \"").Append(aSuffix).AppendAscii("\" : on error goto endcse : TestEnter "),nTestCase);
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Attention!!! The lable endsub is officially used to exit a sub instead of using 'exit sub' or 'return'
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ while ( (nEndCase = ImplSearch( aSource, 0, aSource.Len(), CUniString("endcase") ) ) != STRING_NOTFOUND )
+ aSource.SearchAndReplaceAscii("endcase",CUniString("goto endsub : endcse: if ( err = 35 and StopOnSyntaxError ) or err = 18 then : on error goto 0 : resume : endif : MaybeAddErr : ExceptLog : resume endcse_res : endcse_res: on error goto 0 : endsub: TestExit : ClearError : CaseLog \"\" : end sub "), nEndCase );
+
+ if ( aSource.Len() >= STRING_MAXLEN )
+ {
+ xub_StrLen l,c;
+ CalcPosition( aSource, 0, l, c );
+ CError( SbERR_PROG_TOO_LARGE, CUniString("endcatch"), l, c, c+2 );
+ }
+ return aSource;
+}
+
+void TestToolObj::AddToListByNr( CNames *&pControls, ControlItemUId *&pNewItem )
+{
+ USHORT nNr;
+ if ( pControls->Seek_Entry( pNewItem, &nNr ) )
+ {
+ AddName( pControls->GetObject(nNr)->pData->Kurzname, pNewItem->pData->Kurzname );
+ delete pNewItem;
+ pNewItem = (ControlItemUId*)pControls->GetObject(nNr); // f�r einf�gen der S�hne
+ }
+ else
+ {
+ ControlItem* pNI = pNewItem;
+ pControls->C40_PTR_INSERT(ControlItem,pNI);
+ }
+}
+
+IMPL_LINK( TestToolObj, ReturnResultsLink, CommunicationLink*, pCommLink )
+{
+ return ReturnResults( pCommLink->GetServiceData() );
+}
+
+void TestToolObj::ReadHidLstByNumber()
+{
+ // Die Hid.Lst nach Nummern sortiert einlesen
+ if ( !m_pReverseUIds )
+ {
+ String aName = (pImpl->aHIDDir + DirEntry(CUniString("hid.lst"))).GetFull();
+
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_SHOW_ACTION, String(SttResId(S_READING_LONGNAMES)), aName );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+
+ ReadFlat( aName, m_pReverseUIds, FALSE );
+
+ {
+ TTExecutionStatusHint aHint( TT_EXECUTION_HIDE_ACTION );
+ GetTTBroadcaster().Broadcast( aHint );
+ }
+ }
+}
+
+void TestToolObj::SortControlsByNumber( BOOL bIncludeActive )
+{
+ // Die Controls einmal hirarchisch und einmal alle flach nach nummer sortiert
+ if ( !m_pReverseControls && !m_pReverseControlsSon && m_pControls )
+ {
+ m_pReverseControls = new CNames;
+ m_pReverseControlsSon = new CNames;
+ USHORT nWin,nCont;
+ const String aSl('/');
+ for ( nWin = 0 ; nWin < m_pControls->Count() ; nWin++ )
+ {
+ String aFatherName( m_pControls->GetObject(nWin)->pData->Kurzname );
+ ControlItemUId *pNewFather = new ControlItemUIdSon(aFatherName,m_pControls->GetObject(nWin)->pData->aUId);
+ AddToListByNr( m_pReverseControlsSon, pNewFather );
+ if (! ((ControlItemUIdSon*)pNewFather)->GetSons() )
+ ((ControlItemUIdSon*)pNewFather)->Sons( new CNames );
+
+ // Existieren S�hne, diese in beide Listen eintragen
+ CNames *pControlList = ((ControlItemSon*)m_pControls->GetObject(nWin))->GetSons();
+ if ( pControlList )
+ for ( nCont = 0 ; nCont < pControlList->Count() ; nCont++ )
+ {
+ ControlItemUId *pNewItem;
+
+ String aCombinedName( aFatherName );
+ aCombinedName.AppendAscii( ":" );
+ aCombinedName.Append( pControlList->GetObject(nCont)->pData->Kurzname );
+ pNewItem = new ControlItemUId( aCombinedName, pControlList->GetObject(nCont)->pData->aUId );
+ AddToListByNr( m_pReverseControls, pNewItem );
+
+ pNewItem = new ControlItemUId( pControlList->GetObject(nCont)->pData->Kurzname, pControlList->GetObject(nCont)->pData->aUId );
+ AddToListByNr( ((ControlItemUIdSon*)pNewFather)->GetSons(), pNewItem );
+ }
+ }
+ if ( !bIncludeActive )
+ {
+ ControlItem *pZeroItem = new ControlItemUId( UniString(), SmartId(0) );
+ USHORT nNr;
+ if ( m_pReverseControls->Seek_Entry( pZeroItem, &nNr ) )
+ {
+ m_pReverseControls->DeleteAndDestroy( nNr );
+// um VorlagenLaden/UntergeordneteIniDatei/SpeichernDlg/OrdnerDlg/OeffnenDlg/MessageBox/LetzteVersion/GrafikEinfuegenDlg/FarbeDlg/ExportierenDlg/DruckerEinrichten/DruckenDlg/DateiEinfuegenDlg/Active zu verhindern
+ }
+/* if ( m_pReverseControlsSon->Seek_Entry( pZeroItem, &nNr ) )
+ {
+ m_pReverseControlsSon->DeleteAndDestroy( nNr );
+// um VorlagenLaden/UntergeordneteIniDatei/SpeichernDlg/OrdnerDlg/OeffnenDlg/MessageBox/LetzteVersion/GrafikEinfuegenDlg/FarbeDlg/ExportierenDlg/DruckerEinrichten/DruckenDlg/DateiEinfuegenDlg/Active zu verhindern
+ }*/
+ delete pZeroItem;
+ }
+ }
+}
+
+
+BOOL TestToolObj::ReturnResults( SvStream *pIn )
+{
+
+ USHORT nId;
+ ULONG nClearSequence = 0;
+ BOOL bSequenceOK = TRUE;
+ CNames *pReverseControlsKontext = NULL;
+
+ CRetStream *pRetStream = new CRetStream(pIn);
+
+ pRetStream->Read( nId );
+ while( !pIn->IsEof() )
+ {
+ switch( nId )
+ {
+ case SIReturn:
+ {
+ USHORT nRet,nParams;
+ SmartId aUId;
+ pRetStream->Read(nRet);
+ if ( pRetStream->GetNextType() == BinString )
+ {
+ String aUStrId; // UniqueStringID Used for Mozilla Integration
+ pRetStream->Read( aUStrId );
+ aUId = SmartId( aUStrId );
+ }
+ else
+ {
+ comm_ULONG nUId;
+ pRetStream->Read( nUId ); // bei Sequence einfach die Sequence
+ aUId = SmartId( nUId );
+ }
+ pRetStream->Read(nParams);
+
+ USHORT nNr1 = 0;
+ comm_ULONG nLNr1 = 0;
+ String aString1;
+ BOOL bBool1 = FALSE;
+ SbxValueRef xValue1 = new SbxValue;
+
+ if( nParams & PARAM_USHORT_1 )
+ pRetStream->Read( nNr1 );
+ if( nParams & PARAM_ULONG_1 )
+ pRetStream->Read( nLNr1 );
+ if( nParams & PARAM_STR_1 )
+ {
+ pRetStream->Read( aString1 );
+ ReplaceNumbers ( aString1 );
+ }
+ else
+ aString1.Erase();
+ if( nParams & PARAM_BOOL_1 )
+ pRetStream->Read( bBool1 );
+ if( nParams & PARAM_SBXVALUE_1 )
+ pRetStream->Read( *xValue1 );
+ switch (nRet)
+ {
+ case RET_Sequence:
+ {
+ ULONG nUId = aUId.GetNum();
+ if ( nSequence != nUId )
+ {
+ bSequenceOK = FALSE;
+ ADD_ERROR(SbxERR_BAD_ACTION, GEN_RES_STR2(S_RETURN_SEQUENCE_MISSMATCH, String::CreateFromInt64(nUId), String::CreateFromInt64(nSequence)) );
+ }
+ else
+ {
+ nClearSequence = nUId;
+ }
+ }
+ break;
+ case RET_Value:
+ if ( pImpl->pNextReturn )
+ {
+// ULONG nHintUserData = pImpl->pNextReturn->GetParent()->GetUserData();
+// pImpl->pNextReturn->GetParent()->SetUserData(0);
+// if ( nUId == pImpl->pNextReturn->GetParent()->GetULong() )
+ if ( aNextReturnId.Matches( aUId ) )
+ {
+ if( nParams & PARAM_ULONG_1 )
+ {
+ if ( nLNr1 > 0x7fffffff )
+ pImpl->pNextReturn->PutLong( long(nLNr1 - 0xffffffff) -1 );
+ else
+ pImpl->pNextReturn->PutULong( nLNr1 );
+ }
+ if( nParams & PARAM_USHORT_1 ) pImpl->pNextReturn->PutUShort( nNr1 );
+ if( nParams & PARAM_STR_1 ) pImpl->pNextReturn->PutString( aString1 );
+ if( nParams & PARAM_BOOL_1 ) pImpl->pNextReturn->PutBool( bBool1 );
+ if( nParams & PARAM_SBXVALUE_1 )
+ {
+ SbxValues aValues( SbxDATE );
+ xValue1->Get( aValues );
+ pImpl->pNextReturn->Put( aValues );
+ }
+ }
+ else
+ {
+ ADD_ERROR(SbxERR_BAD_ACTION, GEN_RES_STR0(S_RETURNED_VALUE_ID_MISSMATCH) )
+ }
+// pImpl->pNextReturn->GetParent()->SetUserData(nHintUserData);
+ pImpl->pNextReturn = NULL;
+ }
+ else
+ {
+ ADD_ERROR(SbxERR_BAD_ACTION, GEN_RES_STR0(S_RETURNED_VALUE_NO_RECEIVER) )
+ }
+ break;
+ case RET_WinInfo:
+ {
+ if ( !m_pReverseControls && !m_pReverseControlsSon )
+ pReverseControlsKontext = NULL;
+
+ ReadHidLstByNumber();
+ SortControlsByNumber();
+
+ // Alle Slots nach Nummer Sortiert
+ if ( !m_pReverseSlots && m_pSIds )
+ {
+ m_pReverseSlots = new CNames;
+ USHORT nWin;
+ const String aSl('/');
+ for ( nWin = 0 ; nWin < m_pSIds->Count() ; nWin++ )
+ {
+ ControlItemUId *pNewItem = new ControlItemUId(m_pSIds->GetObject(nWin)->pData->Kurzname,m_pSIds->GetObject(nWin)->pData->aUId);
+ AddToListByNr( m_pReverseSlots, pNewItem );
+ }
+ }
+
+ WinInfoRec *pWinInfo = new WinInfoRec;
+ pWinInfo->aUId = aUId.GetText();
+ pWinInfo->nRType = (USHORT)nLNr1; // just ULONG for Transport, data is always USHORT
+ pWinInfo->aRName = aString1;
+ pWinInfo->bIsReset = bBool1;
+ pWinInfo->aKurzname.Erase();
+ pWinInfo->aSlotname.Erase();
+
+ // eventuell den Kontext feststellen. Passiert nur beim ersten Eintrag nach reset
+ if ( !pReverseControlsKontext && m_pReverseControlsSon )
+ {
+ USHORT nNr;
+ ControlItem *pNewItem = new ControlItemUId( String(), aUId );
+ if ( m_pReverseControlsSon->Seek_Entry(pNewItem,&nNr) )
+ {
+ pReverseControlsKontext = ((ControlItemUIdSon*)m_pReverseControlsSon->GetObject(nNr))->GetSons();
+ pWinInfo->aKurzname = CUniString("*");
+ }
+ else
+ pReverseControlsKontext = m_pReverseControls;
+
+ delete pNewItem;
+ }
+
+ // Reset. Mu� nach bestimmen des Kontext stehen, da sonst mit dem reset-record
+ // der Kontext falsch gesetzt wird.
+ if ( pWinInfo->bIsReset )
+ pReverseControlsKontext = NULL; // Reihenfolge wichtig!
+
+
+ // Kurzname feststellen
+ if ( pReverseControlsKontext )
+ {
+ USHORT nNr;
+ ControlItem *pNewItem = new ControlItemUId( String(), aUId );
+ if ( pReverseControlsKontext->Seek_Entry(pNewItem,&nNr) )
+ {
+// SmartId aID = pReverseControlsKontext->GetObject(nNr)->pData->aUId;
+ pWinInfo->aKurzname += pReverseControlsKontext->GetObject(nNr)->pData->Kurzname;
+ }
+ delete pNewItem;
+ }
+
+ // Slotname feststellen
+ if ( m_pReverseSlots )
+ {
+ USHORT nNr;
+ ControlItem *pNewItem = new ControlItemUId( String(), aUId );
+ if ( m_pReverseSlots->Seek_Entry(pNewItem,&nNr) )
+ pWinInfo->aSlotname = m_pReverseSlots->GetObject(nNr)->pData->Kurzname;
+ delete pNewItem;
+ }
+
+ // Langname feststellen
+ if ( aUId.HasString() )
+ { // use the String ID since there is no LongName in hid.lst
+ pWinInfo->aLangname = aUId.GetStr();
+ }
+ else
+ {
+ if ( m_pReverseUIds )
+ {
+ USHORT nNr;
+ ControlItem *pNewItem = new ControlItemUId( String(), aUId );
+ if ( m_pReverseUIds->Seek_Entry(pNewItem,&nNr) )
+ pWinInfo->aLangname = m_pReverseUIds->GetObject(nNr)->pData->Kurzname;
+ delete pNewItem;
+ }
+ }
+
+ aWinInfoHdl.Call( pWinInfo );
+
+ delete pWinInfo;
+ }
+ break;
+ case RET_ProfileInfo:
+ {
+ ULONG nUId = aUId.GetNum();
+ if ( nParams & PARAM_STR_1 )
+ {
+ DirEntry FilePath = pImpl->aLogFileBase + DirEntry(DirEntry(aLogFileName).GetBase().AppendAscii(".prf"));
+ SvFileStream aStrm( FilePath.GetFull(), STREAM_STD_WRITE );
+ if( aStrm.IsOpen() )
+ {
+ aString1.ConvertLineEnd(LINEEND_CRLF);
+ aStrm.Seek(STREAM_SEEK_TO_END);
+ aStrm << ByteString( aString1, RTL_TEXTENCODING_UTF8 ).GetBuffer();
+ aStrm.Close();
+ }
+ }
+ if ( nParams & PARAM_ULONG_1 )
+ {
+ switch ( nUId )
+ {
+ case S_ProfileReset: // nLNr1 = Anzahl Borders
+ {
+ pImpl->nNumBorders = (USHORT)nLNr1; // Borders are 0 to 4
+ USHORT i;
+ for ( i=0 ; i<4 ; i++ )
+ pImpl->naValBorders[i] = 0;
+
+ for ( i=0 ; i<5 ; i++ )
+ {
+ pImpl->naNumEntries[i] = 0;
+ pImpl->naRemoteTime[i] = 0;
+ pImpl->naLocalTime[i] = 0;
+ }
+ break;
+ }
+ case S_ProfileBorder1: // nLNr1 = Border1 in ms
+ case S_ProfileBorder2: // nLNr1 = Border2 in ms
+ case S_ProfileBorder3: // nLNr1 = Border3 in ms
+ case S_ProfileBorder4: // nLNr1 = Border4 in ms
+ {
+ pImpl->naValBorders[ nUId - S_ProfileBorder1 ] = nLNr1;
+ break;
+ }
+ case S_ProfileTime: // nLNr1 = remote Zeit des Befehls
+ {
+ USHORT i;
+ for ( i=0 ; i<pImpl->nNumBorders &&
+ pImpl->naValBorders[i] <= nLNr1 ; i++ ) {};
+
+ pImpl->naNumEntries[ i ]++;
+ pImpl->naRemoteTime[ i ] += nLNr1;
+ pImpl->naLocalTime[ i ] += Time::GetSystemTicks() - pImpl->LocalStarttime;
+
+ #if OSL_DEBUG_LEVEL > 1
+ if ( nLNr1 > (Time::GetSystemTicks() - pImpl->LocalStarttime) )
+ {
+ String aLine = CUniString("Testtoolzeit(").Append(String::CreateFromInt64(Time::GetSystemTicks() - pImpl->LocalStarttime)).AppendAscii(") kleiner Officezeit(").Append(String::CreateFromInt64(nLNr1)).AppendAscii(")\n");
+ DirEntry FilePath = pImpl->aLogFileBase + DirEntry(DirEntry(aLogFileName).GetBase().AppendAscii(".prf"));
+ SvFileStream aStrm( FilePath.GetFull(), STREAM_STD_WRITE );
+ if( aStrm.IsOpen() )
+ {
+ aLine.ConvertLineEnd(LINEEND_CRLF);
+ aStrm.Seek(STREAM_SEEK_TO_END);
+ aStrm << ByteString( aLine, RTL_TEXTENCODING_UTF8 ).GetBuffer();
+ aStrm.Close();
+ }
+ }
+ #endif
+
+ break;
+ }
+ case S_ProfileDump: // Gibt die daten aus.
+ {
+ if ( pImpl->nNumBorders == 0 ) // Also keine alte R�ckmeldung vom Office
+ break;
+ DirEntry FilePath = pImpl->aLogFileBase + DirEntry(DirEntry(aLogFileName).GetBase().AppendAscii(".prf"));
+ SvFileStream aStrm( FilePath.GetFull(), STREAM_STD_WRITE );
+ if( aStrm.IsOpen() )
+ {
+ String aProfile;
+ USHORT i;
+
+ aProfile += String().Expand(15);
+ for ( i=0 ; i<pImpl->nNumBorders ; i++ )
+ aProfile += (CUniString("< ").Append(String::CreateFromInt64(pImpl->naValBorders[i]))).Expand(20);
+
+ aProfile += (CUniString(">= ").Append(TTFormat::ms2s(pImpl->naValBorders[pImpl->nNumBorders-1])));
+
+ aProfile += '\n';
+
+ aProfile += CUniString("Ereignisse").Expand(15);
+ for ( i=0 ; i<=pImpl->nNumBorders ; i++ )
+ aProfile += TTFormat::ms2s(pImpl->naNumEntries[i]).Expand(20);
+
+ aProfile += '\n';
+
+ aProfile += CUniString("Server Zeit").Expand(15);
+ for ( i=0 ; i<=pImpl->nNumBorders ; i++ )
+ aProfile += TTFormat::ms2s(pImpl->naRemoteTime[i]).Expand(20);
+
+ aProfile += '\n';
+
+ aProfile += CUniString("Testtool Zeit").Expand(15);
+ for ( i=0 ; i<=pImpl->nNumBorders ; i++ )
+ aProfile += TTFormat::ms2s(pImpl->naLocalTime[i]).Expand(20);
+
+ aProfile += '\n';
+
+ aProfile += CUniString("Overhead p.e.").Expand(15);
+ for ( i=0 ; i<=pImpl->nNumBorders ; i++ )
+ {
+ if ( pImpl->naNumEntries[i] > 0 )
+ aProfile += TTFormat::ms2s((pImpl->naLocalTime[i]-pImpl->naRemoteTime[i])/pImpl->naNumEntries[i]).Expand(20);
+ else
+ aProfile += CUniString( "??" ).Expand(20);
+ }
+
+ aProfile += '\n';
+
+ aProfile.ConvertLineEnd(LINEEND_CRLF);
+ aStrm.Seek(STREAM_SEEK_TO_END);
+ aStrm << ByteString( aProfile, RTL_TEXTENCODING_UTF8 ).GetBuffer();
+ aStrm.Close();
+ }
+ break;
+ }
+ default:
+ DBG_ERROR1("Unbekannter Sub Return Code bei Profile: %hu", nUId );
+ break;
+ }
+ }
+ }
+ break;
+ case RET_DirectLoging:
+ {
+ ULONG nUId = aUId.GetNum();
+ switch ( nUId )
+ {
+ case S_AssertError:
+ {
+ ADD_ASSERTION_LOG( aString1 );
+// ADD_ERROR_LOG( aString1, aRun.GetModuleName(SbxNAME_SHORT_TYPES),
+// aRun.GetLine(), aRun.GetCol1(), aRun.GetCol2() );
+ }
+ break;
+ case S_QAError:
+ {
+ ADD_QA_ERROR_LOG( aString1 );
+ }
+ break;
+ default:
+ ;
+ }
+ }
+ break;
+ case RET_MacroRecorder:
+ {
+ SortControlsByNumber( TRUE );
+ String aCommand,aControls,aControl,aULongNames,aULongName;
+ BOOL bWriteNewKontext = FALSE;
+
+ aControls.Erase();
+ // Kurzname feststellen
+ if ( m_pReverseControls )
+ {
+ USHORT nNr;
+ ControlItem *pNewItem = new ControlItemUId( String(), aUId );
+ if ( m_pReverseControls->Seek_Entry(pNewItem,&nNr) )
+ aControls = m_pReverseControls->GetObject(nNr)->pData->Kurzname;
+ delete pNewItem;
+ }
+ if ( !aControls.Len() )
+ {
+ aControls = String::CreateFromAscii("UnknownControl:UnknownControl");
+ Sound::Beep( SOUND_WARNING );
+ }
+
+ aULongNames.Erase();
+ if( (nParams & PARAM_ULONG_1) && (nNr1 & M_RET_NUM_CONTROL) )
+ {
+ if ( m_pReverseControls )
+ {
+ USHORT nNr;
+ ControlItem *pNewItem = new ControlItemUId( String(), SmartId( nLNr1 ) );
+ if ( m_pReverseControls->Seek_Entry(pNewItem,&nNr) )
+ aULongNames = m_pReverseControls->GetObject(nNr)->pData->Kurzname;
+ delete pNewItem;
+ }
+ if ( !aULongNames.Len() )
+ {
+ aULongNames = String::CreateFromAscii("Unknown:Unknown");
+ Sound::Beep( SOUND_WARNING );
+ }
+
+ // now determin the best common kontext
+ USHORT i,j;
+ BOOL bFoundUlongName = FALSE, bFoundControl = FALSE;
+ // check for current kontext
+ for ( i = 0 ; !bFoundUlongName && i < aULongNames.GetTokenCount('/') ; i++ )
+ bFoundUlongName = aLastRecordedKontext.Equals( aULongNames.GetToken(i,'/').GetToken( 0,':') );
+
+ for ( j = 0 ; !bFoundControl && j < aControls.GetTokenCount('/') ; j++ )
+ bFoundControl = aLastRecordedKontext.Equals( aControls.GetToken(j,'/').GetToken( 0,':') );
+
+ if ( bFoundUlongName && bFoundControl )
+ {
+ aULongName = aULongNames.GetToken(i-1,'/').GetToken( 1,':');
+ aControl = aControls.GetToken(j-1,'/').GetToken( 1,':');
+ }
+ else
+ { // see if we can find common kontext
+ BOOL bFound = FALSE;
+
+ String aCurrentKontext;
+ for ( i = 0 ; !bFound && i < aULongNames.GetTokenCount('/') ; i++ )
+ {
+ aCurrentKontext = aULongNames.GetToken(i,'/').GetToken( 0,':');
+
+ for ( j = 0 ; !bFound && j < aControls.GetTokenCount('/') ; j++ )
+ {
+ if ( aCurrentKontext.Equals( aControls.GetToken(j,'/').GetToken( 0,':') ) )
+ {
+ bFound = TRUE;
+ aULongName = aULongNames.GetToken(i,'/').GetToken( 1,':');
+ aControl = aControls.GetToken(j,'/').GetToken( 1,':');
+ aLastRecordedKontext = aCurrentKontext;
+ bWriteNewKontext = TRUE;
+ }
+ }
+ }
+ if ( !bFound )
+ {
+ // check if both contain toplevel
+ bFoundUlongName = FALSE;
+ bFoundControl = FALSE;
+ for ( i = 0 ; !bFoundUlongName && i < aULongNames.GetTokenCount('/') ; i++ )
+ bFoundUlongName = aULongNames.GetToken(i,'/').GetToken( 0,':').Equals( aULongNames.GetToken(i,'/').GetToken( 1,':') );
+
+ for ( j = 0 ; !bFoundControl && j < aControls.GetTokenCount('/') ; j++ )
+ bFoundControl = aControls.GetToken(j,'/').GetToken( 0,':').Equals( aControls.GetToken(j,'/').GetToken( 1,':') );
+
+ if ( bFoundUlongName && bFoundControl )
+ {
+ aULongName = aULongNames.GetToken(i-1,'/').GetToken( 1,':');
+ aControl = aControls.GetToken(j-1,'/').GetToken( 1,':');
+ if ( aLastRecordedKontext.Len() )
+ {
+ aLastRecordedKontext.Erase();
+ bWriteNewKontext = TRUE;
+ }
+ }
+ else
+ {
+ String aComment;
+ aComment = CUniString( "'could not Determin common kontext\n" );
+ Sound::Beep( SOUND_WARNING );
+ aWriteStringHdl.Call( &aComment );
+ aULongName = aULongNames.GetToken(i,'/');
+ aControl = aControls.GetToken(j,'/');
+ }
+ }
+ }
+
+ }
+ else
+ { // we only have a Control
+ USHORT i;
+ BOOL bFoundControl = FALSE;
+ // check for current kontext
+ for ( i = 0 ; !bFoundControl && i < aControls.GetTokenCount('/') ; i++ )
+ bFoundControl = aLastRecordedKontext.Equals( aControls.GetToken(i,'/').GetToken( 0,':') );
+ if ( bFoundControl )
+ aControl = aControls.GetToken(i-1,'/').GetToken( 1,':');
+ else
+ {
+ aLastRecordedKontext = aControls.GetToken(0,'/').GetToken( 0,':');
+ bWriteNewKontext = TRUE;
+ aControl = aControls.GetToken(0,'/').GetToken( 1,':');
+ }
+
+ }
+
+
+ if ( bWriteNewKontext )
+ {
+ String aKontextCommand = CUniString( "Kontext" );
+ if ( aLastRecordedKontext.Len() )
+ {
+ aKontextCommand.AppendAscii ( " \"" );
+ aKontextCommand += aLastRecordedKontext;
+ aKontextCommand.AppendAscii ( "\"" );
+ }
+ aKontextCommand.AppendAscii( "\n" );
+ aWriteStringHdl.Call( &aKontextCommand );
+ }
+
+ aCommand = aControl;
+
+ // Add Method name
+ String aMethod = GetMethodName( nNr1 & ~M_RET_NUM_CONTROL );
+ aCommand += '.';
+ aCommand += aMethod;
+
+ BOOL bWasParam = FALSE;
+
+ if( nParams & PARAM_STR_1 )
+ {
+ bWasParam = TRUE;
+ aCommand.AppendAscii( " \"" );
+ if ( nNr1 & M_KEY_STRING )
+ {
+ USHORT nModify = 0;
+ BOOL bIsProsa = FALSE;
+ xub_StrLen i;
+ for ( i = 0; i < aString1.Len(); i++ )
+ {
+ if ( ((USHORT)aString1.GetChar(i)) == 1 ) // we have a spechial char
+ {
+ i++;
+ if ( !bIsProsa )
+ {
+ aCommand.AppendAscii( "<" );
+ bIsProsa = TRUE;
+ }
+ else
+ aCommand.AppendAscii( " " );
+
+ USHORT nKeyCode = (USHORT)aString1.GetChar(i) & KEY_CODE;
+ USHORT nNewModify = (USHORT)aString1.GetChar(i) & KEY_MODTYPE;
+ if ( nNewModify != nModify )
+ { // generate modifiers
+ USHORT nChanged = ( nNewModify ^ nModify );
+ if ( nChanged & KEY_SHIFT )
+ {
+ aCommand += GetKeyName( KEY_SHIFT );
+ aCommand.AppendAscii( " " );
+ }
+ if ( nChanged & KEY_MOD1 )
+ {
+ aCommand += GetKeyName( KEY_MOD1 );
+ aCommand.AppendAscii( " " );
+ }
+ if ( nChanged & KEY_MOD2 )
+ {
+ aCommand += GetKeyName( KEY_MOD2 );
+ aCommand.AppendAscii( " " );
+ }
+ }
+ aCommand += GetKeyName( nKeyCode );
+ nModify = nNewModify;
+ }
+ else
+ {
+ if ( bIsProsa )
+ {
+ aCommand.AppendAscii( ">" );
+ bIsProsa = FALSE;
+ }
+ aCommand += aString1.GetChar(i);
+ nModify = 0;
+ }
+ }
+ if ( bIsProsa )
+ {
+ aCommand.AppendAscii( ">" );
+ bIsProsa = FALSE;
+ }
+ }
+ else
+ {
+ aCommand += aString1;
+ }
+ aCommand.AppendAscii( "\"" );
+ }
+ if( nParams & PARAM_ULONG_1 )
+ {
+ if ( bWasParam )
+ aCommand.AppendAscii( ", " );
+ else
+ aCommand.AppendAscii( " " );
+ bWasParam = TRUE;
+ if ( nNr1 & M_RET_NUM_CONTROL )
+ {
+ aCommand.Append( aULongName );
+ }
+ else
+ {
+ aCommand.Append( String::CreateFromInt64( nLNr1 ) );
+ }
+ }
+ if( nParams & PARAM_BOOL_1 )
+ {
+ if ( bWasParam )
+ aCommand.AppendAscii( ", " );
+ else
+ aCommand.AppendAscii( " " );
+ bWasParam = TRUE;
+ if ( bBool1 )
+ aCommand.AppendAscii( "true" );
+ else
+ aCommand.AppendAscii( "false" );
+ }
+
+ aCommand.AppendAscii( "\n" );
+
+ aWriteStringHdl.Call( &aCommand );
+ }
+ break;
+ default:
+ DBG_ERROR1( "Unbekannter Return Code: %iu", nRet );
+ break;
+ }
+
+ break;
+ }
+ case SIReturnError:
+ {
+ String aString;
+ SmartId aUId;
+ if ( pRetStream->GetNextType() == BinString )
+ {
+ String aUStrId; // UniqueStringID Used for Mozilla Integration
+ pRetStream->Read( aUStrId );
+ aUId = SmartId( aUStrId );
+ }
+ else
+ {
+ comm_ULONG nUId;
+ pRetStream->Read( nUId ); // bei Sequence einfach die Sequence
+ aUId = SmartId( nUId );
+ }
+ pRetStream->Read( aString );
+ ReplaceNumbers (aString);
+
+ String aShortName;
+ aShortName = pShortNames->GetName(aUId);
+ aShortName.AppendAscii( " : " );
+
+ String aTmpStr(aShortName);
+ aTmpStr += aString;
+ ADD_ERROR(SbxERR_BAD_ACTION, aTmpStr/*, nNr*/);
+ break;
+ }
+ default:
+ DBG_ERROR1( "Unbekannter Request im Return Stream Nr: %iu", nId );
+ break;
+ }
+ if( !pIn->IsEof() )
+ pRetStream->Read( nId );
+ else
+ {
+ DBG_ERROR( "truncated input stream" );
+ }
+
+ }
+
+ delete pRetStream;
+ if ( bSequenceOK )
+ {
+ nSequence++;
+ pShortNames->Invalidate( nClearSequence - KEEP_SEQUENCES );
+ }
+
+ bReturnOK = TRUE;
+
+ return TRUE;
+} // RetService::Request()
+
+String TestToolObj::GetMethodName( ULONG nMethodId )
+{
+ USHORT nElement;
+ if ( !Controls::pClasses ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( Controls::arClasses, Controls::pClasses );
+ if ( Controls::pClasses )
+ {
+ for ( nElement = 0 ; nElement < Controls::pClasses->Count() ; nElement++ )
+ if ( Controls::pClasses->GetObject(nElement)->pData->aUId.Matches( nMethodId ) )
+ return Controls::pClasses->GetObject(nElement)->pData->Kurzname;
+ }
+ return String();
+}
+
+String TestToolObj::GetKeyName( USHORT nKeyCode )
+{
+ USHORT nElement;
+ if ( !CmdStream::pKeyCodes ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( CmdStream::arKeyCodes, CmdStream::pKeyCodes );
+ if ( CmdStream::pKeyCodes )
+ {
+ for ( nElement = 0 ; nElement < CmdStream::pKeyCodes->Count() ; nElement++ )
+ if ( CmdStream::pKeyCodes->GetObject(nElement)->pData->aUId.Matches( nKeyCode ) )
+ return CmdStream::pKeyCodes->GetObject(nElement)->pData->Kurzname;
+ }
+ return CUniString( "UnknownKeyCode" );
+}
+
+void TestToolObj::ReplaceNumbers(String &aText)
+{
+static ControlDefLoad __READONLY_DATA arRes_Type [] =
+#include "res_type.hxx"
+
+ static CNames *pRTypes = NULL;
+ xub_StrLen nStart = STRING_NOTFOUND;
+ xub_StrLen nGleich = STRING_NOTFOUND;
+ xub_StrLen nEnd = STRING_NOTFOUND;
+ xub_StrLen nStartPos = 0;
+ ULONG nNumber;
+ String aType;
+ String aResult;
+ BOOL bFound;
+
+ while ( (nStart = aText.Search(StartKenn,nStartPos)) != STRING_NOTFOUND &&
+ (nGleich = aText.SearchAscii("=",nStart+StartKenn.Len())) != STRING_NOTFOUND &&
+ (nEnd = aText.Search(EndKenn,nGleich+1)) != STRING_NOTFOUND)
+ {
+ aType = aText.Copy(nStart,nGleich-nStart);
+ nNumber = (ULONG)aText.Copy(nGleich+1,nEnd-nGleich-1).ToInt64();
+ bFound = FALSE;
+ if ( aType.CompareTo(UIdKenn) == COMPARE_EQUAL )
+ {
+ aResult = pShortNames->GetName(SmartId(nNumber));
+ bFound = TRUE;
+ }
+ if ( aType.CompareTo(MethodKenn ) == COMPARE_EQUAL )
+ {
+ bFound = TRUE;
+ aResult = GetMethodName( nNumber );
+ }
+ if ( aType.CompareTo(RcKenn ) == COMPARE_EQUAL )
+ {
+ bFound = TRUE;
+ if ( !pRCommands ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( arR_Cmds, pRCommands );
+
+ USHORT nElement;
+ if ( pRCommands )
+ {
+ for ( nElement = 0 ; nElement < pRCommands->Count() ; nElement++ )
+ if ( pRCommands->GetObject(nElement)->pData->aUId.Matches( nNumber ) )
+ {
+ aResult = pRCommands->GetObject(nElement)->pData->Kurzname;
+ nElement = pRCommands->Count();
+ }
+ }
+ }
+ if ( aType.CompareTo(TypeKenn ) == COMPARE_EQUAL )
+ {
+ bFound = TRUE;
+ if ( !pRTypes ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( arRes_Type, pRTypes );
+
+ USHORT nElement;
+ if ( pRTypes )
+ {
+ for ( nElement = 0 ; nElement < pRTypes->Count() ; nElement++ )
+ if ( pRTypes->GetObject(nElement)->pData->aUId.Matches( nNumber ) )
+ {
+ aResult = pRTypes->GetObject(nElement)->pData->Kurzname;
+ nElement = pRTypes->Count();
+ }
+ }
+ }
+ if ( aType.CompareTo(SlotKenn ) == COMPARE_EQUAL )
+ {
+ aResult = pShortNames->GetName(SmartId(nNumber));
+ bFound = TRUE;
+ }
+ if ( aType.CompareTo(TabKenn ) == COMPARE_EQUAL )
+ {
+ if ( nNumber > nStart )
+ aResult.Fill( (USHORT)nNumber - nStart +1 );
+ else
+ aResult = CUniString(" ");
+ bFound = TRUE;
+ }
+
+ nStartPos = nStart;
+ if ( bFound )
+ {
+ aText.Erase(nStart,nEnd+EndKenn.Len()-nStart);
+ aText.Insert(aResult,nStart);
+ nStartPos = nStartPos + aResult.Len();
+ }
+ else
+ nStartPos = nStartPos + StartKenn.Len();
+ }
+}
+
+
+SbTextType TestToolObj::GetSymbolType( const String &rSymbol, BOOL bWasControl )
+{
+ if ( rSymbol.CompareToAscii( "try" ) == COMPARE_EQUAL
+ || rSymbol.CompareToAscii( "catch" ) == COMPARE_EQUAL
+ || rSymbol.CompareToAscii( "endcatch" ) == COMPARE_EQUAL
+ || rSymbol.CompareToAscii( "testcase" ) == COMPARE_EQUAL
+ || rSymbol.CompareToAscii( "endcase" ) == COMPARE_EQUAL )
+ {
+ return TT_KEYWORD;
+ }
+
+
+ ControlDef WhatName( rSymbol, SmartId() );
+
+ if ( bWasControl )
+ {
+ if ( !Controls::pClasses ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( Controls::arClasses, Controls::pClasses );
+
+ if ( (Controls::pClasses && Controls::pClasses->Seek_Entry( &WhatName ))
+ || rSymbol.EqualsIgnoreCaseAscii( "ID" )
+ || rSymbol.EqualsIgnoreCaseAscii( "Name" ) )
+ return TT_METHOD;
+ else
+ return TT_NOMETHOD;
+ }
+
+ // Die Controls durchsuchen
+ if ( m_pControls )
+ {
+ USHORT nWin;
+
+ for ( nWin = 0 ; nWin < m_pControls->Count() ; nWin++ )
+ {
+ if ( ((ControlDef*)m_pControls->GetObject( nWin ))->SonSeek_Entry( &WhatName ) )
+ return TT_CONTROL;
+ }
+ }
+
+ // Die Slots durchsuchen
+ if ( m_pSIds && m_pSIds->Seek_Entry( &WhatName ) )
+ return TT_SLOT;
+
+ // Ist es ein RemoteCommand
+ if ( !pRCommands ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( arR_Cmds, pRCommands );
+ if ( pRCommands && pRCommands->Seek_Entry( &WhatName ) )
+ return TT_REMOTECMD;
+
+ // Wenns sonst nix war, dann vielleicht ein Lokales Kommando
+ SbxVariable *pVar = SbxObject::Find( rSymbol, SbxCLASS_DONTCARE );
+ if ( pVar && ( pVar->ISA(SbxMethod) || pVar->ISA(SbxProperty) ) )
+ {
+ return TT_LOCALCMD;
+ }
+
+ return SB_SYMBOL; // Alles was hier landet ist vom Typ SB_SYMBOL und bleibt es auch
+}
+
+
+#undef P_FEHLERLISTE
+#define P_FEHLERLISTE TestToolObj::pFehlerListe
+
+Controls::Controls( String aCName )
+: SbxObject( aCName)
+{
+ pMethodVar = new SbxTransportMethod( SbxVARIANT );
+ pMethodVar->SetName( CUniString("Dummy") );
+ Insert( pMethodVar );
+// pMethodVar = Make( CUniString("Dummy"), SbxCLASS_PROPERTY, SbxULONG );
+}
+
+
+Controls::~Controls()
+{}
+
+
+void Controls::ChangeListener( SbxObject* parent )
+{
+ EndListening( pMethodVar->GetBroadcaster(), TRUE );
+ parent->StartListening( pMethodVar->GetBroadcaster(), TRUE );
+}
+
+void Controls::SFX_NOTIFY( SfxBroadcaster&, const TypeId&,
+ const SfxHint&, const TypeId& )
+{}
+
+
+
+SbxVariable* Controls::Find( const String& aStr, SbxClassType aType)
+{
+ if ( !pClasses ) // Ist static, wird also nur einmal geladen
+ ReadFlatArray( arClasses, pClasses );
+
+ if ( GetUserData() == ID_ErrorDummy )
+ {
+ pMethodVar->SetName(UniString(GetName()).AppendAscii(".").Append(aStr));
+ pMethodVar->SetUserData( ID_ErrorDummy );
+ return pMethodVar;
+ }
+
+
+ USHORT nElement;
+ ControlDef WhatName(aStr,SmartId());
+ if (pClasses && pClasses->Seek_Entry(&WhatName,&nElement))
+ {
+ pMethodVar->SetName(aStr);
+ ULONG nUId = pClasses->GetObject(nElement)->pData->aUId.GetNum();
+ pMethodVar->nValue = nUId;
+
+ pMethodVar->SetUserData( GetUserData() );
+ return pMethodVar;
+ }
+ else
+ { // mainly for ID and name
+ SbxVariableRef Old = SbxObject::Find(aStr, aType );
+ if (Old)
+ return Old;
+ else if ( aStr.EqualsIgnoreCaseAscii("ID") )
+ return NULL; // suppress generation of error in this case
+ }
+ ADD_ERROR(SbxERR_BAD_METHOD,GEN_RES_STR2(S_UNKNOWN_METHOD, GetName(), aStr));
+ return NULL;
+}
+
+
+String TTFormat::ms2s( ULONG nMilliSeconds )
+{
+ if ( nMilliSeconds < 100000 ) // 100 Sekunden
+ return String::CreateFromInt64( nMilliSeconds );
+ if ( nMilliSeconds < 100000*60 ) // 100 Minuten
+ return String::CreateFromInt32( nMilliSeconds / 1000 ).AppendAscii("Sec");
+ return String::CreateFromInt32( nMilliSeconds / 1000 / 60 ).AppendAscii("Min");
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/objtest.hxx b/automation/source/testtool/objtest.hxx
new file mode 100644
index 000000000000..f60732b5d3fa
--- /dev/null
+++ b/automation/source/testtool/objtest.hxx
@@ -0,0 +1,406 @@
+/* -*- 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 _OBJTEST_HXX
+#define _OBJTEST_HXX
+
+#include <tools/fsys.hxx>
+
+
+#include <testapp.hxx>
+#include <testtool.hxx>
+#include "cmdstrm.hxx"
+#include <basic/basicrt.hxx>
+#include <vcl/smartid.hxx>
+#include "httprequest.hxx"
+
+#include <map>
+
+// #define ID_BeginBlock 1
+// #define ID_EndBlock 2
+#define ID_Kontext 3
+#define ID_GetError 4
+#define ID_ErrorDummy 5 // Intern zum Behandlen von Fehlenden Controls und Methoden
+#define ID_RecordError 6
+#define ID_Start 7
+//#define ID_Kill 8
+//#define ID_Reset 9
+// #define ID_AppAbort 10
+#define ID_Dispatch 11
+#define ID_UNODispatch 12
+#define ID_Control 13
+#define ID_StartUse 14
+#define ID_Use 15
+#define ID_FinishUse 16
+#define ID_CaseLog 17
+#define ID_ExceptLog 18
+#define ID_PrintLog 19
+#define ID_WarnLog 20
+#define ID_ErrorLog 21
+#define ID_EnableQaErrors 22
+#define ID_QAErrorLog 23
+#define ID_MaybeAddErr 24
+#define ID_ClearError 25
+#define ID_GetNextCloseWindow 26
+#define ID_RemoteCommand 27
+#define ID_SaveIDs 28
+#define ID_AutoExecute 29
+#define ID_Execute 30
+#define ID_DialogHandler 31
+#define ID_GetUnoApp 32
+#define ID_GetIServer 33
+#define ID_RemoteCommandDelay 34
+#define ID_GetApplicationPath 35
+#define ID_GetCommonApplicationPath 36
+#define ID_MakeIniFileName 37
+#define ID_StringControl 38
+#define ID_Wait 39
+#define ID_GetErrorCount 40
+#define ID_GetWarningCount 41
+#define ID_GetQAErrorCount 42
+#define ID_GetUseFileWarningCount 43
+#define ID_GetErrorList 44
+#define ID_GetWarningList 45
+#define ID_GetQAErrorList 46
+#define ID_GetUseFileWarningList 47
+#define ID_GetTestCaseName 48
+#define ID_GetTestCaseFileName 49
+#define ID_GetTestCaseLineNr 50
+#define ID_StopOnSyntaxError 51
+#define ID_SetChildEnv 52
+#define ID_GetChildEnv 53
+#define ID_GetLinkDestination 54
+#define ID_GetRegistryValue 55
+#define ID_KillApp 56
+#define ID_HTTPSend 57
+#define ID_HTTPSetProxy 58
+#define ID_DoNothing 99
+
+void ReadFlatArray( const ControlDefLoad arWas [], CNames *&pNames );
+
+class ControlData
+{
+public:
+ String Kurzname;
+ SmartId aUId;
+};
+
+DBG_NAMEEX( ControlItem )
+DBG_NAMEEX( ControlDef )
+class ControlItem
+{
+private:
+ void InitData() { pData = new ControlData; }
+public:
+ ControlData *pData;
+
+ ControlItem( const char *Name, SmartId aUIdP );
+ ControlItem( const String &Name, SmartId aUIdP );
+// ControlItem( const String &Name, const String &URL, const URLType aType );
+// ControlItem( const String &Name, const String &URL, const ULONG nUId );
+// ControlItem( const char *Name, const String &URL, const ULONG nUId );
+ ControlItem( ControlData *pDataP );
+ virtual ~ControlItem() {
+DBG_DTOR(ControlItem,0);
+ delete pData;
+ }
+ virtual BOOL operator < (const ControlItem &rPar)=0;
+ virtual BOOL operator == (const ControlItem &rPar)=0;
+// void Write( SvStream &aStream );
+};
+
+SV_DECL_PTRARR_SORT_DEL(CNames, ControlItem*, 50, 10)
+
+#define MK_SON_ACCESS( ClassName )\
+ BOOL SonInsert( const ClassName *pNewEntry ) { const ControlItem *pItem = pNewEntry; return pSons->Insert( pItem ); }\
+ BOOL SonSeek_Entry( const ClassName *pSearchEntry, USHORT *nRes = NULL) { return pSons->Seek_Entry( pSearchEntry, nRes ); }\
+ ClassName* SonGetObject( USHORT nNr ) { return (ClassName*)pSons->GetObject( nNr ); }
+
+class ControlSon
+{
+protected:
+ CNames *pSons; // um sicherzustelle, daß nur Söhne des richtien Type reinkommen
+
+public:
+ ControlSon() : pSons( NULL ) {};
+ ~ControlSon();
+// void Write( SvStream &aStream );
+
+ USHORT Son_Count() { return pSons->Count(); }
+ void Sons( CNames *pNewSons ) { pSons = pNewSons; }
+ CNames*& GetSons() { return pSons; }
+};
+
+class ControlItemSon : public ControlItem, public ControlSon
+{
+public:
+ ControlItemSon(const char *Name, SmartId aUIdP )
+ : ControlItem( Name, aUIdP ) {}
+ ControlItemSon(const String &Name, SmartId aUIdP );
+// ControlItemSon(const String &Name, const String &URL, const URLType aType );
+// ControlItemSon(const String &Name, const String &URL, const ULONG nUId );
+// ControlItemSon(const char *Name, const String &URL, const ULONG nUId );
+// void Write( SvStream &aStream );
+};
+
+class ControlDef : public ControlItemSon
+{
+public:
+ ControlDef(const char *Name, SmartId aUIdP )
+ : ControlItemSon( Name, aUIdP ) {DBG_CTOR(ControlDef,0);}
+ ControlDef(const String &Name, SmartId aUIdP );
+// ControlDef(const String &Name, const String &URL, const URLType aType );
+ ControlDef(const String &aOldName, const String &aNewName, ControlDef *pOriginal, BOOL bWithSons = FALSE );
+ ~ControlDef() {DBG_DTOR(ControlDef,0);}
+ virtual BOOL operator < (const ControlItem &rPar);
+ virtual BOOL operator == (const ControlItem &rPar);
+ void Write( SvStream &aStream );
+ MK_SON_ACCESS( ControlDef )
+};
+
+class ControlItemUId : public ControlItem
+{
+public:
+ ControlItemUId(String Name, SmartId aUIdP)
+ : ControlItem( Name, aUIdP){}
+ virtual BOOL operator < (const ControlItem &rPar);
+ virtual BOOL operator == (const ControlItem &rPar);
+};
+
+class ControlItemUIdSon : public ControlItemUId, public ControlSon
+{
+public:
+ ControlItemUIdSon(String Name, SmartId aUIdP) : ControlItemUId( Name, aUIdP) {}
+ MK_SON_ACCESS( ControlItemUId )
+};
+
+class ReverseName : public ControlItemUId
+{
+public:
+ ULONG LastSequence;
+
+ ReverseName(String Name, SmartId aUIdP, ULONG nSeq) : ControlItemUId( Name, aUIdP), LastSequence(nSeq) {}
+};
+
+class CRevNames: public CNames
+{
+public:
+ void Insert( String aName, SmartId aUId, ULONG nSeq );
+ String GetName( SmartId aUId );
+ void Invalidate ( ULONG nSeq );
+};
+
+
+class SbxTransportMethod: public SbxMethod
+{
+public:
+ SbxTransportMethod( SbxDataType );
+ ULONG nValue;
+ String aUnoSlot;
+};
+SV_DECL_IMPL_REF(SbxTransportMethod);
+
+class Controls: public SbxObject
+{
+public:
+ Controls( String aCName );
+ ~Controls();
+ void ChangeListener( SbxObject* pParent );
+
+ void SFX_NOTIFY( SfxBroadcaster&, const TypeId&, const SfxHint& rHint, const TypeId& );
+ virtual SbxVariable* Find( const String&, SbxClassType );
+ SbxTransportMethodRef pMethodVar; // zum Transport von Find nach Notify
+ static CNames *pClasses;
+ static ControlDefLoad __READONLY_DATA arClasses [];
+};
+SV_DECL_IMPL_REF(Controls);
+
+typedef std::map< String, String > Environment;
+
+class ImplTestToolObj
+{
+public:
+// ImplTestToolObj()
+// ~ImplTestToolObj()
+
+ String ProgParam; // Parameter der zu Testenden APP; Gesetzt über Start
+
+ DirEntry aFileBase; // Grundpfad für die *.sid und *.win Dateien (Aus Configdatei)
+ DirEntry aLogFileBase; // Grundpfad für die *.res Dateien (Aus Configdatei)
+ DirEntry aHIDDir; // Verzeichnis, in dem die hid.lst gesucht wird
+
+ SbxTransportMethodRef pNextReturn; // Verweis auf die Var, die den Returnwert aufnimmt.
+
+ ControlsRef pControlsObj; // Jeweiliges Objekt, an dem Methoden aufgerufen weden.
+
+#define VAR_POOL_SIZE 8
+ SbxTransportMethodRef pMyVars[VAR_POOL_SIZE]; // Falls in Ausdrücken mehrere verwendet werden
+
+ Time aServerTimeout;
+
+
+// Profiling Datenfelder
+ ULONG LocalStarttime;
+ USHORT nNumBorders;
+ ULONG naValBorders[4];
+ ULONG naNumEntries[5];
+ ULONG naRemoteTime[5];
+ ULONG naLocalTime[5];
+
+ ULONG nMinRemoteCommandDelay;
+ ULONG nMaxRemoteCommandDelay;
+ BOOL bDoRemoteCommandDelay;
+
+ BOOL bLnaguageExtensionLoaded; // Wurde über 'use' was geladen? Für syntax highlighting
+ SfxBroadcaster *pTTSfxBroadcaster;
+
+ ULONG nErrorCount;
+ ULONG nWarningCount;
+ ULONG nQAErrorCount;
+ ULONG nIncludeFileWarningCount;
+
+ SbxDimArrayRef xErrorList;
+ SbxDimArrayRef xWarningList;
+ SbxDimArrayRef xQAErrorList;
+ SbxDimArrayRef xIncludeFileWarningList;
+
+ BOOL bIsStart; // set tu TRUE while command Start is initiating the communication
+
+ MyBasic* pMyBasic;
+
+ String aTestCaseName; // holds name of current TestCase
+ String aTestCaseFileName; // holds FileName of current TestCase
+ USHORT nTestCaseLineNr; // holds Line of current TestCase
+
+ BOOL bEnableQaErrors; // include QA errors in report
+ BOOL bDebugFindNoErrors; // suppress generating errors when find of variables is called for variable viewing purposes
+
+ BOOL bStopOnSyntaxError; // catch syntax errors in testcases or not
+
+ Environment *pChildEnv; // Environment Variables for child Process
+
+ HttpRequest *pHttpRequest; // used for sending HTTP requests
+};
+
+
+class TTFormat
+{
+public:
+ static String ms2s( ULONG nMilliSeconds );
+};
+
+
+#define ADD_TO_LOG( aLogTypep, aMsgp, aFilenamep, nLinep, nCol1p, nCol2p, aRevisionp, pLogList )\
+{ \
+ TTLogMsg *pLogMsg = new TTLogMsg(); \
+ pLogMsg->aDebugData.aMsg = aMsgp; \
+ pLogMsg->aLogFileName = (pImpl->aLogFileBase + DirEntry(aLogFileName)).GetFull(); \
+ pLogMsg->aDebugData.aFilename = aFilenamep; \
+ pLogMsg->aDebugData.nLine = nLinep; \
+ pLogMsg->aDebugData.nCol1 = nCol1p; \
+ pLogMsg->aDebugData.nCol2 = nCol2p; \
+ pLogMsg->aDebugData.aLogType = aLogTypep; \
+ aLogHdl.Call( pLogMsg ); \
+ void* pDummyForWarningAboutNULL = pLogList; \
+ if( pDummyForWarningAboutNULL ) \
+ { \
+ SbxDimArray* pLogArray = (SbxDimArray*)pLogList; \
+ SbxVariable* pLogLine = new SbxVariable( SbxSTRING ); \
+ String aCollect; \
+ aCollect.Append( pLogMsg->aDebugData.aFilename ); \
+ aCollect.AppendAscii( ";" ); \
+ aCollect.Append( String::CreateFromInt32( nLinep ) ); \
+ aCollect.AppendAscii( ";" ); \
+ aCollect.Append( aRevisionp ); \
+ aCollect.AppendAscii( ";" ); \
+ aCollect.Append( pLogMsg->aDebugData.aMsg ); \
+ pLogLine->PutString( aCollect ); \
+ pLogArray->Insert( pLogLine, pLogArray->Count() ); \
+ } \
+ delete pLogMsg; \
+} \
+
+
+#define ADD_RUN_LOG() \
+ ADD_TO_LOG(LOG_RUN, String(), String(), 0, 0, 0, String(), NULL) \
+
+#define ADD_ERROR_LOG(aMsg, aFilename, nLine, nCol1, nCol2, aRevision) \
+{ \
+ ADD_TO_LOG(LOG_ERROR, aMsg, aFilename, nLine, nCol1, nCol2, aRevision, &pImpl->xErrorList) \
+ pImpl->nErrorCount++; \
+}
+
+#define ADD_CALL_STACK_LOG(aMsg, aFilename, nLine, nCol1, nCol2) \
+ ADD_TO_LOG(LOG_CALL_STACK, aMsg, aFilename, nLine, nCol1, nCol2, String(), NULL) \
+
+
+#define ADD_AUTO_LOG(aLogType, aMsg, pLogList) \
+{ \
+ if ( BasicRuntimeAccess::HasRuntime() ) \
+ { \
+ BasicRuntime aRun = BasicRuntimeAccess::GetRuntime(); \
+ ADD_TO_LOG(aLogType, aMsg, aRun.GetModuleName(SbxNAME_SHORT_TYPES), \
+ aRun.GetLine(), aRun.GetCol1(), aRun.GetCol2(), aRun.GetSourceRevision(), pLogList) \
+ } \
+ else \
+ { \
+ ADD_TO_LOG(aLogType, aMsg, UniString(), 0, 0, STRING_LEN, String(), pLogList) \
+ } \
+} \
+
+#define ADD_CASE_LOG(aMsg) \
+ ADD_AUTO_LOG(LOG_TEST_CASE, aMsg, NULL) \
+
+#define ADD_MESSAGE_LOG(aMsg) \
+ ADD_AUTO_LOG(LOG_MESSAGE, aMsg, NULL) \
+
+#define ADD_WARNING_LOG(aMsg) \
+{ \
+ ADD_AUTO_LOG(LOG_WARNING, aMsg, &pImpl->xWarningList) \
+ pImpl->nWarningCount++; \
+}
+
+#define ADD_WARNING_LOG2(aMsg, aFilename, nLine ) \
+{ \
+ ADD_TO_LOG(LOG_WARNING, aMsg, aFilename, nLine, 0, STRING_LEN, String(), &pImpl->xWarningList) \
+ pImpl->nWarningCount++; \
+}
+
+#define ADD_ASSERTION_LOG(aMsg) \
+ ADD_AUTO_LOG(LOG_ASSERTION, aMsg, NULL) \
+
+#define ADD_QA_ERROR_LOG(aMsg) \
+ if ( pImpl->bEnableQaErrors ) \
+ { \
+ ADD_AUTO_LOG(LOG_QA_ERROR, aMsg, &pImpl->xQAErrorList) \
+ pImpl->nQAErrorCount++; \
+ }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/registry_win.cxx b/automation/source/testtool/registry_win.cxx
new file mode 100644
index 000000000000..264a68aae257
--- /dev/null
+++ b/automation/source/testtool/registry_win.cxx
@@ -0,0 +1,90 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+////////////////////////////////////////////////////////////////////////////
+////
+//// Windows ONLY
+////
+////////////////////////////////////////////////////////////////////////////
+
+
+#include <tools/prewin.h>
+#include "winreg.h"
+#include <tools/postwin.h>
+// as we define it ourselves further down the line we remove it here
+#ifdef IS_ERROR
+// #undef IS_ERROR
+#endif
+
+#include "registry_win.hxx"
+#include <osl/thread.h>
+
+
+String ReadRegistry( String aKey, String aValueName )
+{
+ String aRet;
+ HKEY hBaseKey;
+ if ( aKey.GetToken( 0, '\\' ).EqualsIgnoreCaseAscii( "HKEY_CURRENT_USER" ) )
+ hBaseKey = HKEY_CURRENT_USER;
+ else if ( aKey.GetToken( 0, '\\' ).EqualsIgnoreCaseAscii( "HKEY_LOCAL_MACHINE" ) )
+ hBaseKey = HKEY_LOCAL_MACHINE;
+ else
+ {
+ return aRet;
+ }
+
+ aKey.Erase( 0, aKey.Search( '\\' )+1 );
+
+ HKEY hRegKey;
+
+ if ( RegOpenKeyW( hBaseKey,
+ reinterpret_cast<LPCWSTR>(aKey.GetBuffer()),
+ &hRegKey ) == ERROR_SUCCESS )
+ {
+ LONG lRet;
+ sal_Unicode PathW[_MAX_PATH];
+ DWORD lSize = sizeof(PathW) / sizeof( sal_Unicode );
+ DWORD Type = REG_SZ;
+
+ lRet = RegQueryValueExW(hRegKey, reinterpret_cast<LPCWSTR>(aValueName.GetBuffer()), NULL, &Type, (LPBYTE)PathW, &lSize);
+
+ if ((lRet == ERROR_SUCCESS) && (Type == REG_SZ))
+ {
+ aRet = String( PathW );
+ }
+
+ RegCloseKey(hRegKey);
+ }
+ return aRet;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/registry_win.hxx b/automation/source/testtool/registry_win.hxx
new file mode 100644
index 000000000000..4a9492d80d2b
--- /dev/null
+++ b/automation/source/testtool/registry_win.hxx
@@ -0,0 +1,34 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+
+#include <tools/string.hxx>
+
+String ReadRegistry( String aKey, String aValueName );
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/sysdir_win.cxx b/automation/source/testtool/sysdir_win.cxx
new file mode 100644
index 000000000000..44cb8bef2fe1
--- /dev/null
+++ b/automation/source/testtool/sysdir_win.cxx
@@ -0,0 +1,107 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+////////////////////////////////////////////////////////////////////////////
+////
+//// Windows ONLY
+////
+////////////////////////////////////////////////////////////////////////////
+
+
+#include <tools/prewin.h>
+#ifndef _SHOBJ_H
+#if defined _MSC_VER
+#pragma warning(push, 1)
+#pragma warning(disable: 4917)
+#endif
+#include <shlobj.h>
+#if defined _MSC_VER
+#pragma warning(pop)
+#endif
+#endif
+#include <tools/postwin.h>
+// as we define it ourselves further down the line we remove it here
+#ifdef IS_ERROR
+ #undef IS_ERROR
+#endif
+
+#include <tchar.h>
+#include "sysdir_win.hxx"
+
+
+//////// copied this from setup2\win\source\system\winos.cxx
+
+void _SHFree( void *pv )
+{
+ IMalloc *pMalloc;
+ if( NOERROR == SHGetMalloc(&pMalloc) )
+ {
+ pMalloc->Free( pv );
+ pMalloc->Release();
+ }
+}
+
+#define ALLOC(type, n) ((type *) HeapAlloc(GetProcessHeap(), 0, sizeof(type) * n ))
+#define FREE(p) HeapFree(GetProcessHeap(), 0, p)
+
+UniString _SHGetSpecialFolder( int nFolderID )
+{
+
+ LPITEMIDLIST pidl;
+ HRESULT hHdl = SHGetSpecialFolderLocation( NULL, nFolderID, &pidl );
+ UniString aFolder;
+
+ if( hHdl == NOERROR )
+ {
+ WCHAR *lpFolderW;
+ lpFolderW = ALLOC( WCHAR, 16000 );
+
+ SHGetPathFromIDListW( pidl, lpFolderW );
+ aFolder = UniString( reinterpret_cast<const sal_Unicode*>(lpFolderW) );
+
+ FREE( lpFolderW );
+ _SHFree( pidl );
+ }
+ return aFolder;
+}
+
+
+/////////////// end of copy
+
+
+
+String _SHGetSpecialFolder_COMMON_APPDATA()
+{
+ return _SHGetSpecialFolder( CSIDL_COMMON_APPDATA );
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/sysdir_win.hxx b/automation/source/testtool/sysdir_win.hxx
new file mode 100644
index 000000000000..c27e3e434e75
--- /dev/null
+++ b/automation/source/testtool/sysdir_win.hxx
@@ -0,0 +1,34 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+
+#include <tools/string.hxx>
+
+String _SHGetSpecialFolder_COMMON_APPDATA();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/tcommuni.cxx b/automation/source/testtool/tcommuni.cxx
new file mode 100644
index 000000000000..bc0e94f76728
--- /dev/null
+++ b/automation/source/testtool/tcommuni.cxx
@@ -0,0 +1,201 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_automation.hxx"
+
+
+#include <tools/config.hxx>
+#include <vcl/svapp.hxx>
+#include <tools/time.hxx>
+#include <tools/debug.hxx>
+#include <vcl/timer.hxx>
+
+#include <basic/ttstrhlp.hxx>
+
+#include "rcontrol.hxx"
+#include "tcommuni.hxx"
+#include <basic/testtool.hxx>
+
+CommunicationManagerClientViaSocketTT::CommunicationManagerClientViaSocketTT()
+: CommunicationManagerClientViaSocket( TRUE )
+, aAppPath()
+, aAppParams()
+, pProcess( NULL )
+{
+}
+
+
+BOOL CommunicationManagerClientViaSocketTT::StartCommunication()
+{
+ bApplicationStarted = FALSE;
+ return CommunicationManagerClientViaSocket::StartCommunication( ByteString( GetHostConfig(), RTL_TEXTENCODING_UTF8 ), GetTTPortConfig() );
+}
+
+
+BOOL CommunicationManagerClientViaSocketTT::StartCommunication( String aApp, String aParams, Environment *pChildEnv )
+{
+ aAppPath = aApp;
+ aAppParams = aParams;
+ aAppEnv = (*pChildEnv);
+ return StartCommunication();
+}
+
+
+BOOL CommunicationManagerClientViaSocketTT::RetryConnect()
+{
+ if ( !bApplicationStarted )
+ {
+ // Die App ist wohl nicht da. Starten wir sie mal.
+ if ( aAppPath.Len() )
+ {
+ delete pProcess;
+
+ pProcess = new Process();
+ pProcess->SetImage( aAppPath, aAppParams, &aAppEnv );
+
+ BOOL bSucc = pProcess->Start();
+ bApplicationStarted = TRUE;
+
+ if ( bSucc )
+ {
+ aFirstRetryCall = Time() + Time( 0, 1 ); // Max eine Minute Zeit
+ for ( int i = 10 ; i-- ; )
+ GetpApp()->Reschedule();
+ }
+ return bSucc;
+ }
+ return FALSE;
+ }
+ else
+ {
+ if ( aFirstRetryCall > Time() )
+ {
+ Timer aWait;
+ aWait.SetTimeout( 500 ); // Max 500 mSec
+ aWait.Start();
+ while ( aWait.IsActive() )
+ GetpApp()->Yield();
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+}
+
+BOOL CommunicationManagerClientViaSocketTT::KillApplication()
+{
+ if ( pProcess )
+ return pProcess->Terminate();
+ return TRUE;
+}
+
+#define GETSET(aVar, KeyName, Dafault) \
+ aVar = aConf.ReadKey(KeyName,"No Entry"); \
+ if ( aVar.CompareTo("No Entry") == COMPARE_EQUAL ) \
+ { \
+ aVar = ByteString(Dafault); \
+ aConf.WriteKey(KeyName, aVar); \
+ }
+
+
+String GetHostConfig()
+{
+ String aHostToTalk;
+
+ for ( USHORT i = 0 ; i < Application::GetCommandLineParamCount() ; i++ )
+ {
+ if ( Application::GetCommandLineParam( i ).Copy(0,6).CompareIgnoreCaseToAscii("-host=") == COMPARE_EQUAL
+#ifndef UNX
+ || Application::GetCommandLineParam( i ).Copy(0,6).CompareIgnoreCaseToAscii("/host=") == COMPARE_EQUAL
+#endif
+ )
+ return Application::GetCommandLineParam( i ).Copy(6);
+ }
+
+ ByteString abHostToTalk;
+ Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") ));
+ aConf.SetGroup("Communication");
+
+ GETSET( abHostToTalk, "Host", DEFAULT_HOST );
+ return UniString( abHostToTalk, RTL_TEXTENCODING_UTF8 );
+}
+
+
+ULONG GetTTPortConfig()
+{
+ String aPortToTalk;
+
+ for ( USHORT i = 0 ; i < Application::GetCommandLineParamCount() ; i++ )
+ {
+ if ( Application::GetCommandLineParam( i ).Copy(0,6).CompareIgnoreCaseToAscii("-port=") == COMPARE_EQUAL
+#ifndef UNX
+ || Application::GetCommandLineParam( i ).Copy(0,6).CompareIgnoreCaseToAscii("/port=") == COMPARE_EQUAL
+#endif
+ )
+ {
+ aPortToTalk = Application::GetCommandLineParam( i ).Copy(6);
+ return (ULONG)aPortToTalk.ToInt64();
+ }
+ }
+
+ ByteString abPortToTalk;
+ Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") ));
+ aConf.SetGroup("Communication");
+
+ GETSET( abPortToTalk, "TTPort", ByteString::CreateFromInt32( TESTTOOL_DEFAULT_PORT ) );
+ return (ULONG)abPortToTalk.ToInt64();
+}
+
+
+ULONG GetUnoPortConfig()
+{
+ String aPortToTalk;
+
+ for ( USHORT i = 0 ; i < Application::GetCommandLineParamCount() ; i++ )
+ {
+ if ( Application::GetCommandLineParam( i ).Copy(0,9).CompareIgnoreCaseToAscii("-unoport=") == COMPARE_EQUAL
+#ifndef UNX
+ || Application::GetCommandLineParam( i ).Copy(0,9).CompareIgnoreCaseToAscii("/unoport=") == COMPARE_EQUAL
+#endif
+ )
+ {
+ aPortToTalk = Application::GetCommandLineParam( i ).Copy(6);
+ return (ULONG)aPortToTalk.ToInt64();
+ }
+ }
+
+ ByteString abPortToTalk;
+ Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") ));
+ aConf.SetGroup("Communication");
+
+ GETSET( abPortToTalk, "UnoPort", ByteString::CreateFromInt32( UNO_DEFAULT_PORT ) );
+ return (ULONG)abPortToTalk.ToInt64();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/tcommuni.hxx b/automation/source/testtool/tcommuni.hxx
new file mode 100644
index 000000000000..e92a93eb36a5
--- /dev/null
+++ b/automation/source/testtool/tcommuni.hxx
@@ -0,0 +1,69 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <automation/communi.hxx>
+#include <tools/link.hxx>
+#include <svl/svarray.hxx>
+
+#include <osl/thread.hxx>
+
+#ifndef _STRING_LIST
+DECLARE_LIST( StringList, String * )
+#define _STRING_LIST
+#endif
+#include <basic/process.hxx>
+
+class Process;
+
+class CommunicationManagerClientViaSocketTT : public CommunicationManagerClientViaSocket
+{
+public:
+ CommunicationManagerClientViaSocketTT();
+
+ using CommunicationManagerClientViaSocket::StartCommunication;
+ virtual BOOL StartCommunication();
+ virtual BOOL StartCommunication( String aApp, String aParams, Environment *pChildEnv );
+
+ BOOL KillApplication();
+
+protected:
+ virtual BOOL RetryConnect();
+ BOOL bApplicationStarted;
+ Time aFirstRetryCall;
+ String aAppPath;
+ String aAppParams;
+ Environment aAppEnv;
+ Process *pProcess;
+};
+
+
+String GetHostConfig();
+ULONG GetTTPortConfig();
+ULONG GetUnoPortConfig();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/automation/source/testtool/testtool.ini b/automation/source/testtool/testtool.ini
new file mode 100644
index 000000000000..ff2e43f5c0f6
--- /dev/null
+++ b/automation/source/testtool/testtool.ini
@@ -0,0 +1,19 @@
+[Bootstrap]
+URE_BOOTSTRAP=${ORIGIN}/fundamentalbasis!INIFILESUFFIX!
+OOO_BASE_DIR=${ORIGIN}/..
+BRAND_BASE_DIR=${OOO_BASE_DIR}/!BRANDPATH!
+UserInstallation=${SYSUSERCONFIG}/.oootesttool
+
+[Misc]
+CurrentProfile=_profile_Default
+
+[OOoProgramDir]
+Type=Path
+Current=.
+
+[Crashreporter]
+UseProxy=false
+ProxyServer=none
+ProxyPort=8080
+AllowContact=false
+ReturnAddress=
diff --git a/automation/util/makefile.mk b/automation/util/makefile.mk
new file mode 100644
index 000000000000..8747ff4c4b0e
--- /dev/null
+++ b/automation/util/makefile.mk
@@ -0,0 +1,283 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=automation
+TARGET=automation
+TARGETTYPE=GUI
+
+# --- Settings ---------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ---------------------------------------------------
+
+LIB1TARGET=$(SLB)$/$(TARGET).lib
+LIB1FILES= \
+ $(SLB)$/server.lib \
+ $(SLB)$/simplecm.lib \
+ $(SLB)$/communi.lib
+
+# --- sts library ---------------------------------------------------
+
+SHL1TARGET= sts$(DLLPOSTFIX)
+SHL1IMPLIB= ists
+
+SHL1STDLIBS= \
+ $(TOOLSLIB) \
+ $(UNOTOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(VCLLIB) \
+ $(BASICLIB) \
+ $(SALLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(COMPHELPERLIB) \
+ $(SOTLIB)
+
+
+.IF "$(GUI)"=="WNT"
+SHL1STDLIBS+= \
+ $(ADVAPI32LIB) \
+ $(GDI32LIB)
+.ENDIF
+
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+
+DEF1NAME =$(SHL1TARGET)
+DEF1DEPN = \
+ $(MISC)$/$(SHL1TARGET).flt
+
+DEFLIB1NAME =$(TARGET)
+DEF1DES =TestToolServer
+
+# --- simple communication library (no vcl) ---------------------------------------------------
+
+SHL2TARGET= simplecm$(DLLPOSTFIX)
+SHL2IMPLIB= isimplecm
+
+SHL2STDLIBS= \
+ $(TOOLSLIB) \
+ $(SALLIB)
+
+
+SHL2DEF= $(MISC)$/$(SHL2TARGET).def
+SHL2LIBS= $(SLB)$/simplecm.lib
+
+DEF2NAME =$(SHL2TARGET)
+DEF2DEPN = \
+ $(MISC)$/$(SHL2TARGET).flt
+
+DEFLIB2NAME =simplecm
+DEF2DES =SimpleCommunication
+
+# --- communication library ---------------------------------------------------
+
+SHL3TARGET= communi$(DLLPOSTFIX)
+SHL3IMPLIB= icommuni
+
+SHL3STDLIBS= \
+ $(TOOLSLIB) \
+ $(SVLLIB) \
+ $(VCLLIB) \
+ $(SALLIB) \
+ $(SIMPLECMLIB)
+
+
+.IF "$(GUI)"=="WNT"
+SHL3STDLIBS+= \
+ $(ADVAPI32LIB) \
+ $(GDI32LIB)
+.ENDIF
+
+SHL3DEF= $(MISC)$/$(SHL3TARGET).def
+SHL3LIBS= $(SLB)$/communi.lib
+SHL3DEPN=$(SHL2TARGETN)
+
+DEF3NAME =$(SHL3TARGET)
+DEF3DEPN = \
+ $(MISC)$/$(SHL3TARGET).flt
+
+DEFLIB3NAME =communi
+DEF3DES =Communication
+
+# --- TESTTOOL IDE ------------------------------------------------------
+
+APP1TARGET=testtool
+
+.IF "$(GUI)"=="UNX" || ("$(COM)"=="GCC" && "$(GUI)"=="WNT")
+APP1DEPN+=$(SHL2TARGETN) $(SHL3TARGETN)
+.ELSE
+APP1DEPN+=$(SHL2IMPLIBN) $(SHL3IMPLIBN)
+.ENDIF
+APP1STDLIBS= \
+ $(APP3RDLIB) \
+ $(SAMPLE3RDLIB)
+
+APP1STDLIBS+= \
+ $(CPPUHELPERLIB) \
+ $(TOOLSLIB) \
+ $(UNOTOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(VCLLIB) \
+ $(SALLIB) \
+ $(UCBHELPERLIB) \
+ $(COMPHELPERLIB) \
+ $(BASICLIB) \
+ $(SIMPLECMLIB) \
+ $(COMMUNILIB)
+
+.IF "$(GUI)"=="UNX"
+APP1STDLIBS+= \
+ $(SALLIB) $(BASICLIB)
+APP1STDLIBS+=$(CPPULIB)
+.ENDIF
+.IF "$(GUI)"=="WNT" || "$(COM)"=="GCC"
+APP1STDLIBS+=$(CPPULIB)
+.ENDIF
+
+.IF "$(GUI)"=="WNT"
+APP1STDLIBS += \
+ $(SHELL32LIB) \
+ $(ADVAPI32LIB)
+.ENDIF # "$(GUI)"=="WNT"
+
+
+
+.IF "$(OS)" == "SOLARIS"
+APP1STDLIBS+= -lXm
+.ENDIF
+
+.IF "$(GUI)" == "UNX"
+.IF "$(OS)" == "LINUX"
+APP1STDLIBS+= -lXext -lX11 -lSM -lICE
+.ENDIF
+.IF "$(OS)"=="MACOSX"
+APP1STDLIBS+= -lapp -lsample
+.ENDIF
+.ENDIF
+
+
+
+APP1LIBS=\
+ $(LB)$/testtool.lib
+
+APP1OBJS= $(OBJ)$/testbasi.obj \
+ $(OBJ)$/cmdbasestream.obj \
+ $(OBJ)$/svcommstream.obj
+
+# --- TESTTOOL MINIAPP ------------------------------------------------------
+# ressources are linked here
+
+RESLIB1NAME=tma
+RESLIB1SRSFILES= \
+ $(SRS)$/miniapp.srs
+
+APP3TARGET=miniapp
+APP3STDLIBS= \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(UCBHELPERLIB) \
+ $(COMPHELPERLIB) \
+ $(AUTOMATIONLIB) \
+ $(SALLIB) \
+ $(TOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(VCLLIB)
+
+.IF "$(GUI)"=="UNX"
+.IF "$(OS)"=="MACOSX"
+APP3STDLIBS+= \
+ $(SALLIB) $(LIBSTLPORT)
+.ELSE
+APP3STDLIBS+= \
+ $(SALLIB)
+.ENDIF
+.ENDIF
+# $(AUTOMATIONLIB) is build in SHL1TARGET
+.IF "$(GUI)"=="UNX" || ("$(COM)"=="GCC" && "$(GUI)"=="WNT")
+APP3DEPN=$(SHL1TARGETN)
+.ELSE
+APP3DEPN=$(SHL1IMPLIBN)
+.ENDIF
+
+APP3LIBS= \
+ $(LB)$/miniapp.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+# win16 braucht ein appobj
+APP3OBJS= $(OBJ)$/testapp.obj
+.ENDIF
+.ENDIF
+
+# --- Targets -----------------------------------------------------------
+
+.INCLUDE : target.mk
+
+# --- Basic-Filter-Datei ---
+
+$(MISC)$/$(SHL1TARGET).flt: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo WEP > $@
+ @echo LIBMAIN >> $@
+ @echo LibMain >> $@
+ @echo Sbi >> $@
+ @echo exception >> $@
+ @echo bad_alloc >> $@
+ @echo __CT >> $@
+
+$(MISC)$/$(SHL2TARGET).flt: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo WEP > $@
+ @echo LIBMAIN >> $@
+ @echo LibMain >> $@
+ @echo Sbi >> $@
+ @echo exception >> $@
+ @echo bad_alloc >> $@
+ @echo __CT >> $@
+
+$(MISC)$/$(SHL3TARGET).flt: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo WEP > $@
+ @echo LIBMAIN >> $@
+ @echo LibMain >> $@
+ @echo Sbi >> $@
+ @echo exception >> $@
+ @echo bad_alloc >> $@
+ @echo __CT >> $@
+
+
+# ------------------------------------------------------------------------
+
diff --git a/automation/util/manually_added_ids.hid b/automation/util/manually_added_ids.hid
new file mode 100755
index 000000000000..7372dc0d9879
--- /dev/null
+++ b/automation/util/manually_added_ids.hid
@@ -0,0 +1,8 @@
+
+MSC_Super_ID 123456
+MSC_Super_ID2 1234567
+MSC_Super_ID3 12345678
+
+FontWork1TBO 40026
+FontWork2TBO 40027
+
diff --git a/basctl/inc/basidesh.hrc b/basctl/inc/basidesh.hrc
new file mode 100644
index 000000000000..8bf7d3316cd0
--- /dev/null
+++ b/basctl/inc/basidesh.hrc
@@ -0,0 +1,192 @@
+/*************************************************************************
+ *
+ * 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 _BASIDESH_HRC
+#define _BASIDESH_HRC
+
+#ifndef _SVTOOLS_IMAGEMGR_HRC
+#include <svtools/imagemgr.hrc>
+#endif
+
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+
+
+// Resource-ID's...
+#ifndef _SVX_NOIDERESIDS
+
+#define RID_BASICIDE_OBJECTBAR ( RID_BASICIDE_START + 0 )
+#define RID_BASICMENU ( RID_BASICIDE_START + 1 )
+#define RID_BASICPLUGINMENU ( RID_BASICIDE_START + 2 )
+#define RID_EDT_WATCHEDIT ( RID_BASICIDE_START + 4 )
+#define RID_ICO_MDIWINDOW ( RID_BASICIDE_START + 5 )
+#define RID_POPUP_BRKDLG ( RID_BASICIDE_START + 10 )
+#define RID_POPUP_BRKPROPS ( RID_BASICIDE_START + 11 )
+#define RID_POPUP_TABBAR ( RID_BASICIDE_START + 12 )
+#define RID_TD_ORGANIZE ( RID_BASICIDE_START + 36 )
+#define RID_TP_MODULS ( RID_BASICIDE_START + 37 )
+#define RID_TP_LIBS ( RID_BASICIDE_START + 38 )
+#define RID_TP_DLGS ( RID_BASICIDE_START + 39 )
+#define RID_DLG_LIBS ( RID_BASICIDE_START + 40 )
+#define RID_DLG_NEWLIB ( RID_BASICIDE_START + 42 )
+#define RID_DLG_EXPORT ( RID_BASICIDE_START + 43 )
+#define RID_POPUP_DLGED ( RID_BASICIDE_START + 62 )
+#define RID_PRINTDLG_STRLIST ( RID_BASICIDE_START + 78 )
+
+#define RID_IMG_LOCKED_HC ( RID_BASICIDE_START + 6 )
+#define RID_IMGBTN_REMOVEWATCH ( RID_BASICIDE_START + 8 )
+#define RID_IMGBTN_GOTOCALL ( RID_BASICIDE_START + 9 )
+#define RID_IMGLST_LAYOUT_HC ( RID_BASICIDE_START + 14 )
+#define RID_IMG_REMOVEWATCH_HC ( RID_BASICIDE_START + 15 )
+#define RID_IMG_INSTALLATION ( RID_BASICIDE_START + 20 )
+#define RID_IMG_INSTALLATION_HC ( RID_BASICIDE_START + 21 )
+#define RID_IMG_DOCUMENT ( RID_BASICIDE_START + 22 )
+#define RID_IMG_DOCUMENT_HC ( RID_BASICIDE_START + 23 )
+#define RID_IMG_MODLIB ( RID_BASICIDE_START + 24 )
+#define RID_IMG_MODLIB_HC ( RID_BASICIDE_START + 25 )
+#define RID_IMG_MODLIBNOTLOADED ( RID_BASICIDE_START + 26 )
+#define RID_IMG_MODLIBNOTLOADED_HC ( RID_BASICIDE_START + 27 )
+#define RID_IMG_MODULE ( RID_BASICIDE_START + 28 )
+#define RID_IMG_MODULE_HC ( RID_BASICIDE_START + 29 )
+#define RID_IMG_MACRO ( RID_BASICIDE_START + 30 )
+#define RID_IMG_MACRO_HC ( RID_BASICIDE_START + 31 )
+#define RID_IMG_DLGLIB ( RID_BASICIDE_START + 32 )
+#define RID_IMG_DLGLIB_HC ( RID_BASICIDE_START + 33 )
+#define RID_IMG_DLGLIBNOTLOADED ( RID_BASICIDE_START + 34 )
+#define RID_IMG_DLGLIBNOTLOADED_HC ( RID_BASICIDE_START + 35 )
+#define RID_IMG_DIALOG ( RID_BASICIDE_START + 36 )
+#define RID_IMG_DIALOG_HC ( RID_BASICIDE_START + 37 )
+#define RID_IMG_LOCKED ( RID_BASICIDE_START + 41 )
+#define RID_IMGLST_LAYOUT ( RID_BASICIDE_START + 49 )
+
+#define RID_STR_SEARCHALLMODULES ( RID_BASICIDE_START + 1 )
+#define RID_STR_SEARCHFROMSTART ( RID_BASICIDE_START + 2 )
+#define RID_STR_NOMODULE ( RID_BASICIDE_START + 3 )
+#define RID_STR_FILTER_ALLFILES ( RID_BASICIDE_START + 4 )
+// free
+#define RID_STR_CANNOTCLOSE ( RID_BASICIDE_START + 13 )
+#define RID_STR_IDENAME ( RID_BASICIDE_START + 14 )
+#define RID_STR_INITIDE ( RID_BASICIDE_START + 15 )
+#define RID_STR_STACKNAME ( RID_BASICIDE_START + 16 )
+#define RID_STR_WATCHNAME ( RID_BASICIDE_START + 17 )
+#define RID_STR_REMOVEWATCH ( RID_BASICIDE_START + 18 )
+#define RID_STR_CANNOTRUNMACRO ( RID_BASICIDE_START + 19 )
+#define RID_STR_OPEN ( RID_BASICIDE_START + 20 )
+#define RID_STR_SAVE ( RID_BASICIDE_START + 21 )
+#define RID_STR_RUNTIMEERROR ( RID_BASICIDE_START + 22 )
+#define RID_STR_COMPILEERROR ( RID_BASICIDE_START + 23 )
+#define RID_STR_STDDIALOGNAME ( RID_BASICIDE_START + 24 )
+#define RID_STR_STDMACRONAME ( RID_BASICIDE_START + 25 )
+#define RID_STR_STDJAVAFUNCTIONNAME ( RID_BASICIDE_START + 26 )
+#define RID_STR_STDMODULENAME ( RID_BASICIDE_START + 27 )
+#define RID_STR_ALL ( RID_BASICIDE_START + 28 )
+#define RID_STR_CLOSE ( RID_BASICIDE_START + 29 )
+#define RID_STR_PAGE ( RID_BASICIDE_START + 30 )
+#define RID_STR_BADSBXNAME ( RID_BASICIDE_START + 31 )
+#define RID_STR_STDLIBNAME ( RID_BASICIDE_START + 32 )
+#define RID_STR_ERROROPENSTORAGE ( RID_BASICIDE_START + 33 )
+#define RID_STR_NOLIBINSTORAGE ( RID_BASICIDE_START + 34 )
+#define RID_STR_SBXNAMEALLREADYUSED ( RID_BASICIDE_START + 35 )
+#define RID_STR_SIGNED ( RID_BASICIDE_START + 36 )
+#define RID_STR_WATCHVARIABLE ( RID_BASICIDE_START + 37 )
+#define RID_STR_WATCHVALUE ( RID_BASICIDE_START + 38 )
+#define RID_STR_WATCHTYPE ( RID_BASICIDE_START + 39 )
+// free
+#define RID_STR_REPLACESTDLIB ( RID_BASICIDE_START + 41 )
+#define RID_STR_SBXNAMEALLREADYUSED2 ( RID_BASICIDE_START + 42 )
+#define RID_STR_SEARCHNOTFOUND ( RID_BASICIDE_START + 43 )
+#define RID_STR_SEARCHREPLACES ( RID_BASICIDE_START + 44 )
+#define RID_STR_CANNOTCHANGENAMESTDLIB ( RID_BASICIDE_START + 45 )
+#define RID_STR_CANNOTCHANGENAMEREFLIB ( RID_BASICIDE_START + 46 )
+#define RID_STR_CANNOTUNLOADSTDLIB ( RID_BASICIDE_START + 47 )
+#define RID_STR_GENERATESOURCE ( RID_BASICIDE_START + 48 )
+#define RID_STR_REFNOTPOSSIBLE ( RID_BASICIDE_START + 49 )
+#define RID_STR_FILEEXISTS ( RID_BASICIDE_START + 50 )
+// free
+#define RID_STR_ERROROPENLIB ( RID_BASICIDE_START + 55 )
+#define RID_STR_STDJAVAMODULENAME ( RID_BASICIDE_START + 56 )
+#define RID_STR_NEWLIB ( RID_BASICIDE_START + 57 )
+#define RID_STR_NEWMOD ( RID_BASICIDE_START + 58 )
+#define RID_STR_NEWDLG ( RID_BASICIDE_START + 59 )
+#define RID_STR_LIBNAMETOLONG ( RID_BASICIDE_START + 60 )
+#define RID_STR_ERRORCHOOSEMACRO ( RID_BASICIDE_START + 61 )
+// free
+#define RID_STR_LIBISREADONLY ( RID_BASICIDE_START + 63 )
+#define RID_STR_REPLACELIB ( RID_BASICIDE_START + 64 )
+// free
+#define RID_STR_IMPORTNOTPOSSIBLE ( RID_BASICIDE_START + 67 )
+#define RID_STR_NOIMPORT ( RID_BASICIDE_START + 68 )
+#define RID_STR_ENTERPASSWORD ( RID_BASICIDE_START + 69 )
+// free
+#define RID_STR_NEWMETH ( RID_BASICIDE_START + 71 )
+#define RID_STR_USERMACROS ( RID_BASICIDE_START + 72 )
+#define RID_STR_USERDIALOGS ( RID_BASICIDE_START + 73 )
+#define RID_STR_USERMACROSDIALOGS ( RID_BASICIDE_START + 74 )
+#define RID_STR_SHAREMACROS ( RID_BASICIDE_START + 75 )
+#define RID_STR_SHAREDIALOGS ( RID_BASICIDE_START + 76 )
+#define RID_STR_SHAREMACROSDIALOGS ( RID_BASICIDE_START + 77 )
+// free
+#define RID_STR_QUERYREPLACEMACRO ( RID_BASICIDE_START + 80 )
+#define RID_STR_FILENAME ( RID_BASICIDE_START + 81 )
+#define RID_STR_APPENDLIBS ( RID_BASICIDE_START + 82 )
+#define RID_STR_QUERYDELMACRO ( RID_BASICIDE_START + 83 )
+#define RID_STR_QUERYDELDIALOG ( RID_BASICIDE_START + 84 )
+#define RID_STR_QUERYDELLIB ( RID_BASICIDE_START + 85 )
+#define RID_STR_QUERYDELLIBREF ( RID_BASICIDE_START + 86 )
+#define RID_STR_QUERYDELMODULE ( RID_BASICIDE_START + 87 )
+#define RID_STR_BASIC ( RID_BASICIDE_START + 88 )
+#define RID_STR_DOC ( RID_BASICIDE_START + 89 )
+#define RID_STR_MACRONAMEREQ ( RID_BASICIDE_START + 90 )
+#define RID_STR_WILLSTOPPRG ( RID_BASICIDE_START + 91 )
+#define RID_STR_STACK ( RID_BASICIDE_START + 92 )
+#define RID_STR_OBJNOTFOUND ( RID_BASICIDE_START + 93 )
+#define RID_STR_COULDNTREAD ( RID_BASICIDE_START + 94 )
+#define RID_STR_COULDNTWRITE ( RID_BASICIDE_START + 95 )
+#define RID_STR_WRONGPASSWORD ( RID_BASICIDE_START + 96 )
+#define RID_STR_LINE ( RID_BASICIDE_START + 97 )
+#define RID_STR_COLUMN ( RID_BASICIDE_START + 98 )
+#define RID_STR_SOURCETOBIG ( RID_BASICIDE_START + 99 )
+#define RID_STR_EXPORTPACKAGE ( RID_BASICIDE_START + 100 )
+#define RID_STR_EXPORTBASIC ( RID_BASICIDE_START + 101 )
+#define RID_STR_PACKAGE_BUNDLE ( RID_BASICIDE_START + 102 )
+
+#define RID_STR_DLGIMP_CLASH_RENAME ( RID_BASICIDE_START + 110 )
+#define RID_STR_DLGIMP_CLASH_REPLACE ( RID_BASICIDE_START + 111 )
+#define RID_STR_DLGIMP_CLASH_TITLE ( RID_BASICIDE_START + 112 )
+#define RID_STR_DLGIMP_CLASH_TEXT ( RID_BASICIDE_START + 113 )
+#define RID_STR_DLGIMP_MISMATCH_ADD ( RID_BASICIDE_START + 114 )
+#define RID_STR_DLGIMP_MISMATCH_OMIT ( RID_BASICIDE_START + 115 )
+#define RID_STR_DLGIMP_MISMATCH_TITLE ( RID_BASICIDE_START + 116 )
+#define RID_STR_DLGIMP_MISMATCH_TEXT ( RID_BASICIDE_START + 117 )
+#define RID_STR_DOCUMENT_OBJECTS ( RID_BASICIDE_START + 118 )
+#define RID_STR_USERFORMS ( RID_BASICIDE_START + 119 )
+#define RID_STR_NORMAL_MODULES ( RID_BASICIDE_START + 120 )
+#define RID_STR_CLASS_MODULES ( RID_BASICIDE_START + 121 )
+
+#endif // _SVX_NOIDERESIDS
+
+#endif // _BASIDESH_HRC
diff --git a/basctl/inc/helpid.hrc b/basctl/inc/helpid.hrc
new file mode 100644
index 000000000000..0f666941e57e
--- /dev/null
+++ b/basctl/inc/helpid.hrc
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * 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 _BASCTL_HELPID_HRC
+#define _BASCTL_HELPID_HRC
+
+// include ---------------------------------------------------------------
+
+#include <svl/solar.hrc>
+
+// Help-Ids --------------------------------------------------------------
+
+#define HID_BASICIDE_TOOLBOX (HID_BASICIDE_START + 0)
+#define HID_BASICIDE_OBJECTS (HID_BASICIDE_START + 1)
+#define HID_MACRO_OPTIONS (HID_BASICIDE_START + 2)
+#define HID_BASICIDE_BRKPNTS (HID_BASICIDE_START + 3)
+#define HID_BASICIDE_MODULS (HID_BASICIDE_START + 4)
+#define HID_BASICIDE_LIBS_TP (HID_BASICIDE_START + 5)
+#define HID_BASICIDE_LIBS_DLG (HID_BASICIDE_START + 6)
+#define HID_BASICIDE_CONTROLS (HID_BASICIDE_START + 7)
+#define HID_BASICIDE_MACROS (HID_BASICIDE_START + 8)
+#define HID_BASICIDE_LIBS (HID_BASICIDE_START + 9)
+#define HID_BASICIDE_ORG_TC (HID_BASICIDE_START + 10)
+
+#define HID_BASICIDE_MODULES_TREE (HID_BASICIDE_START + 11)
+#define HID_BASICIDE_LIBS_TREE (HID_BASICIDE_START + 12)
+#define HID_BASICIDE_LIBSDLG_TREE (HID_BASICIDE_START + 13)
+#define HID_BASICIDE_OBJECTCAT (HID_BASICIDE_START + 14)
+
+#define HID_BASICIDE_PROP_BROWSER (HID_BASICIDE_START + 15)
+
+#define HID_BASICIDE_PROP_BROWSER_LBOX (HID_BASICIDE_START + 16)
+
+#define HID_BASICIDE_OBJCAT_SHOW (HID_BASICIDE_START + 17)
+#define HID_BASICIDE_OBJCAT_PROPS (HID_BASICIDE_START + 18)
+#define HID_BASICIDE_OBJCAT_HELP (HID_BASICIDE_START + 19)
+
+#define HID_BASICIDE_BRKDLG (HID_BASICIDE_START + 20)
+#define HID_BASICIDE_ACTIV (HID_BASICIDE_START + 21)
+#define HID_BASICIDE_BRKPROPS (HID_BASICIDE_START + 22)
+#define HID_BASICIDE_REMOVEWATCH (HID_BASICIDE_START + 23)
+#define HID_BASICIDE_GOTOALL (HID_BASICIDE_START + 24)
+
+#define HID_BASICIDE_MODULWINDOW (HID_BASICIDE_START + 25)
+#define HID_BASICIDE_DIALOGWINDOW (HID_BASICIDE_START + 26)
+
+#define HID_BASICIDE_EDITORWINDOW (HID_BASICIDE_START + 27)
+#define HID_BASICIDE_BREAKPOINTWINDOW (HID_BASICIDE_START + 28)
+#define HID_BASICIDE_WATCHWINDOW (HID_BASICIDE_START + 29)
+#define HID_BASICIDE_STACKWINDOW (HID_BASICIDE_START + 30)
+#define HID_BASICIDE_TABBAR (HID_BASICIDE_START + 31)
+#define HID_BASICIDE_WATCHWINDOW_EDIT (HID_BASICIDE_START + 32)
+#define HID_BASICIDE_WATCHWINDOW_LIST (HID_BASICIDE_START + 33)
+#define HID_BASICIDE_STACKWINDOW_LIST (HID_BASICIDE_START + 34)
+
+#define HID_BASICIDE_MANAGE_LANGUAGE (HID_BASICIDE_START + 35)
+#define HID_BASICIDE_SETDEFAULT_LANGUAGE (HID_BASICIDE_START + 36)
+#define HID_BASICIDE_ADDNEW_LANGUAGE (HID_BASICIDE_START + 37)
+#define HID_BASICIDE_ADDNEW_CONTROL (HID_BASICIDE_START + 38)
+
+#endif
+
diff --git a/basctl/inc/iderdll.hxx b/basctl/inc/iderdll.hxx
new file mode 100644
index 000000000000..6b48b37f50c4
--- /dev/null
+++ b/basctl/inc/iderdll.hxx
@@ -0,0 +1,57 @@
+/* -*- 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 _IDERDLL_HXX
+#define _IDERDLL_HXX
+
+class BasicIDEShell;
+class BasicIDEData;
+
+class BasicIDEDLL
+{
+ friend class BasicIDEShell;
+
+ BasicIDEShell* pShell;
+ BasicIDEData* pExtraData;
+
+public:
+ BasicIDEDLL();
+ ~BasicIDEDLL();
+
+ BasicIDEShell* GetShell() const { return pShell; }
+ BasicIDEData* GetExtraData();
+ static void Init();
+ static void Exit();
+ static BasicIDEDLL* GetDLL();
+};
+
+#define IDE_DLL() BasicIDEDLL::GetDLL()
+
+#endif //_IDERDLL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/inc/makefile.mk b/basctl/inc/makefile.mk
new file mode 100644
index 000000000000..f1ef542c9963
--- /dev/null
+++ b/basctl/inc/makefile.mk
@@ -0,0 +1,48 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=basctl
+TARGET=inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(ENABLE_PCH)"!=""
+ALLTAR : \
+ $(SLO)$/precompiled.pch \
+ $(SLO)$/precompiled_ex.pch
+
+.ENDIF # "$(ENABLE_PCH)"!=""
+
diff --git a/basctl/inc/pch/precompiled_basctl.cxx b/basctl/inc/pch/precompiled_basctl.cxx
new file mode 100644
index 000000000000..5f74ede5c895
--- /dev/null
+++ b/basctl/inc/pch/precompiled_basctl.cxx
@@ -0,0 +1,31 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_basctl.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/inc/pch/precompiled_basctl.hxx b/basctl/inc/pch/precompiled_basctl.hxx
new file mode 100644
index 000000000000..96030135a2a9
--- /dev/null
+++ b/basctl/inc/pch/precompiled_basctl.hxx
@@ -0,0 +1,211 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:30.436716
+
+#ifdef PRECOMPILED_HEADERS
+#include "com/sun/star/accessibility/AccessibleEventId.hpp"
+#include "com/sun/star/accessibility/AccessibleRole.hpp"
+#include "com/sun/star/accessibility/AccessibleStateType.hpp"
+#include "com/sun/star/awt/XDialog.hpp"
+#include "com/sun/star/beans/PropertyValue.hpp"
+#include "com/sun/star/beans/XPropertySet.hpp"
+#include "com/sun/star/beans/Property.hpp"
+#include "com/sun/star/container/XNameContainer.hpp"
+#include "com/sun/star/document/MacroExecMode.hpp"
+#include "com/sun/star/frame/XDispatchProvider.hpp"
+#include "com/sun/star/frame/XLayoutManager.hpp"
+#include "com/sun/star/resource/XStringResourcePersistence.hpp"
+#include "com/sun/star/script/XLibraryContainer.hpp"
+#include "com/sun/star/script/XLibraryContainerPassword.hpp"
+#include "com/sun/star/script/XLibraryContainer2.hpp"
+#include "com/sun/star/task/XStatusIndicator.hpp"
+#include "com/sun/star/task/XStatusIndicatorFactory.hpp"
+#include "com/sun/star/ui/dialogs/XFilePicker.hpp"
+#include "com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp"
+#include "com/sun/star/ui/dialogs/XFilterManager.hpp"
+#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
+#include "com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp"
+#include "com/sun/star/util/XCloneable.hpp"
+
+#include "comphelper/types.hxx"
+#include "comphelper/processfactory.hxx"
+
+#include "toolkit/awt/vclxfont.hxx"
+#include "toolkit/helper/externallock.hxx"
+#include "toolkit/helper/convert.hxx"
+#include "toolkit/helper/vclunohelper.hxx"
+
+#include "tools/debug.hxx"
+#include "tools/diagnose_ex.h"
+#include "tools/urlobj.hxx"
+
+#include "vcl/wrkwin.hxx"
+#include "vcl/msgbox.hxx"
+#include "vcl/menu.hxx"
+#include "vcl/status.hxx"
+#include "vcl/sound.hxx"
+#include "vcl/svapp.hxx"
+#include "vcl/scrbar.hxx"
+
+#include "svl/svarray.hxx"
+#include "svl/itempool.hxx"
+#include "svl/itemset.hxx"
+#include "svl/aeitem.hxx"
+#include "svl/stritem.hxx"
+#include "svl/whiter.hxx"
+#include "svtools/langtab.hxx"
+#include "svtools/texteng.hxx"
+#include "svtools/textview.hxx"
+#include "svtools/xtextedt.hxx"
+#include "svtools/txtattr.hxx"
+#include "svtools/textwindowpeer.hxx"
+#include "svl/urihelper.hxx"
+
+#define _BASIC_TEXTPORTIONS
+#include "basic/sbdef.hxx"
+#include "basic/sbstar.hxx"
+#include "basic/sbmeth.hxx"
+#include "basic/sbmod.hxx"
+#include "basic/basmgr.hxx"
+#include "basic/sbuno.hxx"
+#include "basic/basrdll.hxx"
+#include "basic/sbx.hxx"
+
+#include "sfx2/app.hxx"
+#include "sfx2/objface.hxx"
+#include "sfx2/printer.hxx"
+#include "sfx2/viewsh.hxx"
+#include "sfx2/event.hxx"
+#include "sfx2/bindings.hxx"
+#include "sfx2/request.hxx"
+#include "sfx2/childwin.hxx"
+#include "sfx2/viewfrm.hxx"
+#include "sfx2/dispatch.hxx"
+#include "sfx2/objsh.hxx"
+#include "sfx2/genlink.hxx"
+#include "sfx2/dispatch.hxx"
+#include "sfx2/minfitem.hxx"
+#include "sfx2/dinfdlg.hxx"
+#include "sfx2/docfac.hxx"
+#include "sfx2/progress.hxx"
+#include "sfx2/docfile.hxx"
+#include "sfx2/docfac.hxx"
+
+
+#define ITEMID_FONT 0
+#define ITEMID_POSTURE 0
+#define ITEMID_WEIGHT 0
+#define ITEMID_SHADOWED 0
+#define ITEMID_CONTOUR 0
+#define ITEMID_CROSSEDOUT 0
+#define ITEMID_UNDERLINE 0
+#define ITEMID_FONTHEIGHT 0
+#define ITEMID_COLOR 0
+#define ITEMID_ADJUST 0
+#define ITEMID_LINESPACING 0
+#define ITEMID_TABSTOP 0
+#define ITEMID_LRSPACE 0
+#define ITEMID_ULSPACE 0
+#define ITEMID_SEARCH 0
+#define ITEMID_SEARCH 0
+#define ITEMID_SIZE 0
+#define ITEMID_FONTLIST 0
+#define ITEMID_AUTOKERN 0
+#define ITEMID_WORDLINEMODE 0
+#define ITEMID_PROPSIZE 0
+#define ITEMID_CHARSETCOLOR 0
+#define ITEMID_KERNING 0
+#define ITEMID_CASEMAP 0
+#define ITEMID_ESCAPEMENT 0
+#define ITEMID_LANGUAGE 0
+#define ITEMID_NOLINEBREAK 0
+#define ITEMID_NOHYPHENHERE 0
+#define ITEMID_BLINK 0
+#define ITEMID_PAPERBIN 0
+#define ITEMID_PRINT 0
+#define ITEMID_OPAQUE 0
+#define ITEMID_PROTECT 0
+#define ITEMID_SHADOW 0
+#define ITEMID_BOX 0
+#define ITEMID_BOXINFO 0
+#define ITEMID_FMTBREAK 0
+#define ITEMID_FMTKEEP 0
+#define ITEMID_LINE 0
+#define ITEMID_BRUSH 0
+
+#include "svl/srchitem.hxx"
+#include "editeng/flstitem.hxx"
+#include "editeng/fontitem.hxx"
+#include "editeng/postitem.hxx"
+#include "editeng/wghtitem.hxx"
+#include "editeng/fhgtitem.hxx"
+#include "editeng/fwdtitem.hxx"
+#include "editeng/udlnitem.hxx"
+#include "editeng/crsditem.hxx"
+#include "editeng/shdditem.hxx"
+#include "editeng/akrnitem.hxx"
+#include "editeng/wrlmitem.hxx"
+#include "editeng/cntritem.hxx"
+#include "editeng/prszitem.hxx"
+#include "editeng/colritem.hxx"
+#include "editeng/cscoitem.hxx"
+#include "editeng/kernitem.hxx"
+
+#include "editeng/cmapitem.hxx"
+#include "editeng/escpitem.hxx"
+#include "editeng/langitem.hxx"
+#include "editeng/nlbkitem.hxx"
+#include "editeng/nhypitem.hxx"
+#include "editeng/lcolitem.hxx"
+#include "editeng/blnkitem.hxx"
+
+#include "editeng/pbinitem.hxx"
+#include "editeng/sizeitem.hxx"
+#include "editeng/lrspitem.hxx"
+#include "editeng/ulspitem.hxx"
+#include "editeng/prntitem.hxx"
+#include "editeng/opaqitem.hxx"
+#include "editeng/protitem.hxx"
+#include "editeng/shaditem.hxx"
+#include "editeng/boxitem.hxx"
+#include "editeng/brkitem.hxx"
+#include "editeng/keepitem.hxx"
+#include "editeng/bolnitem.hxx"
+#include "editeng/brshitem.hxx"
+#include "svx/xmlsecctrl.hxx"
+#include "editeng/unolingu.hxx"
+
+#include "xmlscript/xmldlg_imexp.hxx"
+
+#include "unotools/charclass.hxx"
+#include "unotools/accessiblestatesethelper.hxx"
+#include "unotools/accessiblerelationsethelper.hxx"
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/prj/build.lst b/basctl/prj/build.lst
new file mode 100644
index 000000000000..a48a698a99a7
--- /dev/null
+++ b/basctl/prj/build.lst
@@ -0,0 +1,9 @@
+bc basctl : l10n svx NULL
+bc basctl usr1 - all bc_mkout NULL
+bc basctl\inc nmake - all bc_inc NULL
+bc basctl\source\inc get - all bc_sinc NULL
+bc basctl\sdi nmake - all bc_sdi NULL
+bc basctl\source\dlged nmake - all bc_dlg bc_inc NULL
+bc basctl\source\basicide nmake - all bc_bide bc_sdi bc_inc NULL
+bc basctl\source\accessibility nmake - all bc_acc bc_inc NULL
+bc basctl\util nmake - all bc_util bc_bide bc_dlg bc_acc NULL
diff --git a/basctl/prj/d.lst b/basctl/prj/d.lst
new file mode 100644
index 000000000000..d05ff35bdabc
--- /dev/null
+++ b/basctl/prj/d.lst
@@ -0,0 +1,23 @@
+mkdir: %COMMON_DEST%\bin%_EXT%\hid
+mkdir: %_DEST%\xml%_EXT%\uiconfig
+mkdir: %_DEST%\xml%_EXT%\uiconfig\modules
+mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\BasicIDE
+mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\BasicIDE\menubar
+mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\BasicIDE\toolbar
+mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\BasicIDE\statusbar
+
+..\%COMMON_OUTDIR%\misc\*.hid %COMMON_DEST%\bin%_EXT%\hid\*.hid
+..\%__SRC%\inc\basslots.ilb %_DEST%\inc%_EXT%\basslots.ilb
+..\%__SRC%\lib\lib*.* %_DEST%\lib%_EXT%\lib*.*
+..\%__SRC%\bin\basctl*.dll %_DEST%\bin%_EXT%\basctl*.dll
+..\%__SRC%\bin\basctl*.res %_DEST%\bin%_EXT%\basctl*.res
+..\%__SRC%\misc\basctl*.map %_DEST%\bin%_EXT%\basctl*.map
+..\%__SRC%\misc\basctl.csv %_DEST%\inc%_EXT%\basctl.csv
+
+mkdir: %_DEST%\inc%_EXT%\basctl
+
+..\util\basctl.xml %_DEST%\xml%_EXT%\basctl.xml
+
+..\uiconfig\basicide\menubar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\BasicIDE\menubar\*.xml
+..\uiconfig\basicide\toolbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\BasicIDE\toolbar\*.xml
+..\uiconfig\basicide\statusbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\BasicIDE\statusbar\*.xml
diff --git a/basctl/sdi/baside.sdi b/basctl/sdi/baside.sdi
new file mode 100644
index 000000000000..bc9232c08bfd
--- /dev/null
+++ b/basctl/sdi/baside.sdi
@@ -0,0 +1,470 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+interface BasicIDEView
+[
+ uuid = "D88DF7A2-EE63-11d0-89CA-008029E4B0B1";
+]
+{
+}
+
+shell BasicIDEShell
+{
+ import BasicIDEView [Automation];
+
+ // ========================================================
+ // Current, je nach aktuellem Fenster:
+ // ========================================================
+ SID_BASICIDE_HIDECURPAGE
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_DELETECURRENT
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_RENAMECURRENT
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_CUT
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_COPY
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_PASTE
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_UNDO
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_REDO
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_DELETE
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_BACKSPACE
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_SEARCH_OPTIONS
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ SID_SEARCH_ITEM
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ FID_SEARCH_NOW
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ FID_SEARCH_OFF
+ [
+ ExecMethod = ExecuteCurrent;
+ StateMethod = GetState;
+ ]
+
+ // ========================================================
+ // Global: Egal, welches Fenster gerade aktiv ist:
+ // ========================================================
+ SID_BASICIDE_LIBSELECTOR
+ [
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_LIBSELECTED
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_LIBLOADED
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_LIBREMOVED
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_SBXDELETED
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_SBXINSERTED
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_SBXRENAMED
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_SHOWSBX
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_NEWWINDOW
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_DOCINFO
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_SAVEDOC
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_SIGNATURE
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_SAVEASDOC
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ // Ab hier normal...
+ SID_BASICIDE_CHOOSEMACRO
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_MODULEDLG
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_OBJCAT
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_CREATEMACRO
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_EDITMACRO
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_NAMECHANGEDONTAB
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_STOREMODULESOURCE
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_STOREALLMODULESOURCES
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_UPDATEMODULESOURCE
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_UPDATEALLMODULESOURCES
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICSTOP
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_NEWMODULE
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_NEWJAVAMODULE
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_NEWDIALOG
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_SHOW_PROPERTYBROWSER
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_SHOWWINDOW
+ [
+ ExecMethod = ExecuteGlobal;
+ ]
+
+ SID_BASICIDE_MANAGE_LANG
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_CURRENT_LANG
+ [
+ ExecMethod = ExecuteGlobal;
+ StateMethod = GetState;
+ ]
+
+ // ========================================================
+ // Nur, wenn BasicFenster oben
+ // ========================================================
+ SID_BASICRUN
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICCOMPILE
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICLOAD
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICSAVEAS
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_MATCHGROUP
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICSTEPINTO
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICSTEPOVER
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICSTEPOUT
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_TOGGLEBRKPNT
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_MANAGEBRKPNTS
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_TOGGLEBRKPNTENABLED
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_ADDWATCH
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_REMOVEWATCH
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_BRKPNTSCHANGED
+ [
+ ExecMethod = ExecuteBasic;
+ StateMethod = GetState;
+ ]
+
+ // ========================================================
+ // Nur, wenn Dialogfenster oben
+ // ========================================================
+ SID_CHOOSE_CONTROLS
+ [
+ ExecMethod = ExecuteDialog;
+ StateMethod = GetState;
+ ]
+
+ SID_EXPORT_DIALOG
+ [
+ ExecMethod = ExecuteDialog;
+ StateMethod = GetState;
+ ]
+
+ SID_IMPORT_DIALOG
+ [
+ ExecMethod = ExecuteDialog;
+ StateMethod = GetState;
+ ]
+
+ SID_DIALOG_TESTMODE
+ [
+ ExecMethod = ExecuteDialog;
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_STAT_POS
+ [
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_STAT_DATE
+ [
+ StateMethod = GetState;
+ ]
+
+ SID_BASICIDE_STAT_TITLE
+ [
+ StateMethod = GetState;
+ ]
+
+ SID_DOC_MODIFIED
+ [
+ StateMethod = GetState;
+ ]
+
+ SID_ATTR_INSERT
+ [
+ StateMethod = GetState;
+ ]
+
+ SID_ATTR_SIZE
+ [
+ StateMethod = GetState;
+ ]
+}
+
+interface BasicIDEDocument
+[
+ uuid = "D88DF7A1-EE63-11d0-89CA-008029E4B0B1";
+]
+{
+}
+
+shell BasicDocShell
+{
+ import BasicIDEDocument [Automation];
+}
+
diff --git a/basctl/sdi/basslots.hrc b/basctl/sdi/basslots.hrc
new file mode 100644
index 000000000000..d71a1d26d020
--- /dev/null
+++ b/basctl/sdi/basslots.hrc
@@ -0,0 +1,29 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <svx/svxids.hrc>
+#include <editeng/memberids.hrc>
diff --git a/basctl/sdi/basslots.sdi b/basctl/sdi/basslots.sdi
new file mode 100644
index 000000000000..f6cf7ce83a30
--- /dev/null
+++ b/basctl/sdi/basslots.sdi
@@ -0,0 +1,47 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+module
+"6706E0E7-FB05-101B-804c-04021c007002"
+"6806E0E7-FB05-101B-804c-04021c007002"
+BasicIDE
+[
+HelpText( "BasicIDE" )
+SlotIdFile( "basslots.hrc" )
+]
+{
+ //=========================================================================
+ include "sfx2/sfxitems.sdi"
+ include "sfx2/sfx.sdi"
+ include "svx/svxitems.sdi"
+ include "svx/xoitems.sdi"
+ include "svx/svx.sdi"
+
+ include "baside.sdi"
+
+}
+
diff --git a/basctl/sdi/makefile.mk b/basctl/sdi/makefile.mk
new file mode 100644
index 000000000000..2e8a49ef992d
--- /dev/null
+++ b/basctl/sdi/makefile.mk
@@ -0,0 +1,54 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+
+PRJ=..
+
+PRJNAME=basctl
+TARGET=basslots
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.IF "$(L10N_framework)"==""
+SDI1NAME=$(TARGET)
+SDI1EXPORT=basctl
+
+# --- Files --------------------------------------------------------
+
+SVSDI1DEPEND= \
+ $(SOLARINCXDIR)$/sfx2/sfx.sdi \
+ $(SOLARINCXDIR)$/sfx2/sfxitems.sdi \
+ $(SOLARINCXDIR)$/svx/svx.sdi \
+ $(SOLARINCXDIR)$/svx/svxitems.sdi \
+ $(SOLARINCXDIR)$/svx/xoitems.sdi \
+ baside.sdi
+
+# --- Targets -------------------------------------------------------
+.ENDIF
+.INCLUDE : target.mk
+
diff --git a/basctl/source/accessibility/accessibledialogcontrolshape.cxx b/basctl/source/accessibility/accessibledialogcontrolshape.cxx
new file mode 100644
index 000000000000..b2b20e105b4e
--- /dev/null
+++ b/basctl/source/accessibility/accessibledialogcontrolshape.cxx
@@ -0,0 +1,621 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include <accessibledialogcontrolshape.hxx>
+#include <baside3.hxx>
+#include <dlgeddef.hxx>
+#include <dlgedview.hxx>
+#include <dlgedobj.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <toolkit/awt/vclxfont.hxx>
+#include <toolkit/helper/externallock.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <vcl/svapp.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+
+// -----------------------------------------------------------------------------
+// class AccessibleDialogControlShape
+// -----------------------------------------------------------------------------
+
+AccessibleDialogControlShape::AccessibleDialogControlShape( DialogWindow* pDialogWindow, DlgEdObj* pDlgEdObj )
+ :AccessibleExtendedComponentHelper_BASE( new VCLExternalSolarLock() )
+ ,m_pDialogWindow( pDialogWindow )
+ ,m_pDlgEdObj( pDlgEdObj )
+{
+ m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
+
+ if ( m_pDlgEdObj )
+ m_xControlModel = Reference< XPropertySet >( m_pDlgEdObj->GetUnoControlModel(), UNO_QUERY );
+
+ if ( m_xControlModel.is() )
+ m_xControlModel->addPropertyChangeListener( ::rtl::OUString(), static_cast< beans::XPropertyChangeListener* >( this ) );
+
+ m_bFocused = IsFocused();
+ m_bSelected = IsSelected();
+ m_aBounds = GetBounds();
+}
+
+// -----------------------------------------------------------------------------
+
+AccessibleDialogControlShape::~AccessibleDialogControlShape()
+{
+ if ( m_xControlModel.is() )
+ m_xControlModel->removePropertyChangeListener( ::rtl::OUString(), static_cast< beans::XPropertyChangeListener* >( this ) );
+
+ delete m_pExternalLock;
+ m_pExternalLock = NULL;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool AccessibleDialogControlShape::IsFocused()
+{
+ sal_Bool bFocused = sal_False;
+ if ( m_pDialogWindow )
+ {
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView && pSdrView->IsObjMarked( m_pDlgEdObj ) && pSdrView->GetMarkedObjectList().GetMarkCount() == 1 )
+ bFocused = sal_True;
+ }
+
+ return bFocused;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool AccessibleDialogControlShape::IsSelected()
+{
+ sal_Bool bSelected = sal_False;
+ if ( m_pDialogWindow )
+ {
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView )
+ bSelected = pSdrView->IsObjMarked( m_pDlgEdObj );
+ }
+
+ return bSelected;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::SetFocused( sal_Bool bFocused )
+{
+ if ( m_bFocused != bFocused )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bFocused )
+ aOldValue <<= AccessibleStateType::FOCUSED;
+ else
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ m_bFocused = bFocused;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::SetSelected( sal_Bool bSelected )
+{
+ if ( m_bSelected != bSelected )
+ {
+ Any aOldValue, aNewValue;
+ if ( m_bSelected )
+ aOldValue <<= AccessibleStateType::SELECTED;
+ else
+ aNewValue <<= AccessibleStateType::SELECTED;
+ m_bSelected = bSelected;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+awt::Rectangle AccessibleDialogControlShape::GetBounds()
+{
+ awt::Rectangle aBounds( 0, 0, 0, 0 );
+ if ( m_pDlgEdObj )
+ {
+ // get the bounding box of the shape in logic units
+ Rectangle aRect = m_pDlgEdObj->GetSnapRect();
+
+ if ( m_pDialogWindow )
+ {
+ // transform coordinates relative to the parent
+ MapMode aMap = m_pDialogWindow->GetMapMode();
+ Point aOrg = aMap.GetOrigin();
+ aRect.Move( aOrg.X(), aOrg.Y() );
+
+ // convert logic units to pixel
+ aRect = m_pDialogWindow->LogicToPixel( aRect, MapMode(MAP_100TH_MM) );
+
+ // clip the shape's bounding box with the bounding box of its parent
+ Rectangle aParentRect( Point( 0, 0 ), m_pDialogWindow->GetSizePixel() );
+ aRect = aRect.GetIntersection( aParentRect );
+ aBounds = AWTRectangle( aRect );
+ }
+ }
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::SetBounds( const awt::Rectangle& aBounds )
+{
+ if ( m_aBounds.X != aBounds.X || m_aBounds.Y != aBounds.Y || m_aBounds.Width != aBounds.Width || m_aBounds.Height != aBounds.Height )
+ {
+ m_aBounds = aBounds;
+ NotifyAccessibleEvent( AccessibleEventId::BOUNDRECT_CHANGED, Any(), Any() );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+Window* AccessibleDialogControlShape::GetWindow() const
+{
+ Window* pWindow = NULL;
+ if ( m_pDlgEdObj )
+ {
+ Reference< awt::XControl > xControl( m_pDlgEdObj->GetControl(), UNO_QUERY );
+ if ( xControl.is() )
+ pWindow = VCLUnoHelper::GetWindow( xControl->getPeer() );
+ }
+
+ return pWindow;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogControlShape::GetModelStringProperty( const sal_Char* pPropertyName )
+{
+ ::rtl::OUString sReturn;
+
+ try
+ {
+ if ( m_xControlModel.is() )
+ {
+ ::rtl::OUString sPropertyName( ::rtl::OUString::createFromAscii( pPropertyName ) );
+ Reference< XPropertySetInfo > xInfo = m_xControlModel->getPropertySetInfo();
+ if ( xInfo.is() && xInfo->hasPropertyByName( sPropertyName ) )
+ m_xControlModel->getPropertyValue( sPropertyName ) >>= sReturn;
+ }
+ }
+ catch ( const Exception& )
+ {
+ OSL_ENSURE( sal_False, "AccessibleDialogControlShape::GetModelStringProperty: caught an exception!" );
+ }
+
+ return sReturn;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( IsFocused() )
+ rStateSet.AddState( AccessibleStateType::FOCUSED );
+
+ rStateSet.AddState( AccessibleStateType::SELECTABLE );
+
+ if ( IsSelected() )
+ rStateSet.AddState( AccessibleStateType::SELECTED );
+
+ rStateSet.AddState( AccessibleStateType::RESIZABLE );
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleComponent
+// -----------------------------------------------------------------------------
+
+awt::Rectangle AccessibleDialogControlShape::implGetBounds() throw (RuntimeException)
+{
+ return GetBounds();
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( AccessibleDialogControlShape, AccessibleExtendedComponentHelper_BASE, AccessibleDialogControlShape_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleDialogControlShape, AccessibleExtendedComponentHelper_BASE, AccessibleDialogControlShape_BASE )
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::disposing()
+{
+ AccessibleExtendedComponentHelper_BASE::disposing();
+
+ m_pDialogWindow = NULL;
+ m_pDlgEdObj = NULL;
+
+ if ( m_xControlModel.is() )
+ m_xControlModel->removePropertyChangeListener( ::rtl::OUString(), static_cast< beans::XPropertyChangeListener* >( this ) );
+ m_xControlModel.clear();
+}
+
+// -----------------------------------------------------------------------------
+// XEventListener
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::disposing( const lang::EventObject& ) throw (RuntimeException)
+{
+ if ( m_xControlModel.is() )
+ m_xControlModel->removePropertyChangeListener( ::rtl::OUString(), static_cast< beans::XPropertyChangeListener* >( this ) );
+ m_xControlModel.clear();
+}
+
+// -----------------------------------------------------------------------------
+// XPropertyChangeListener
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::propertyChange( const beans::PropertyChangeEvent& rEvent ) throw (RuntimeException)
+{
+ if ( rEvent.PropertyName == DLGED_PROP_NAME )
+ {
+ NotifyAccessibleEvent( AccessibleEventId::NAME_CHANGED, rEvent.OldValue, rEvent.NewValue );
+ }
+ else if ( rEvent.PropertyName == DLGED_PROP_POSITIONX ||
+ rEvent.PropertyName == DLGED_PROP_POSITIONY ||
+ rEvent.PropertyName == DLGED_PROP_WIDTH ||
+ rEvent.PropertyName == DLGED_PROP_HEIGHT )
+ {
+ SetBounds( GetBounds() );
+ }
+ else if ( rEvent.PropertyName == DLGED_PROP_BACKGROUNDCOLOR ||
+ rEvent.PropertyName == DLGED_PROP_TEXTCOLOR ||
+ rEvent.PropertyName == DLGED_PROP_TEXTLINECOLOR )
+ {
+ NotifyAccessibleEvent( AccessibleEventId::VISIBLE_DATA_CHANGED, Any(), Any() );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogControlShape::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.basctl.AccessibleShape" );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool AccessibleDialogControlShape::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > AccessibleDialogControlShape::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.drawing.AccessibleShape" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessible
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleContext > AccessibleDialogControlShape::getAccessibleContext( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return this;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogControlShape::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > AccessibleDialogControlShape::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ return Reference< XAccessible >();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > AccessibleDialogControlShape::getAccessibleParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+ if ( m_pDialogWindow )
+ xParent = m_pDialogWindow->GetAccessible();
+
+ return xParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogControlShape::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndexInParent = -1;
+ Reference< XAccessible > xParent( getAccessibleParent() );
+ if ( xParent.is() )
+ {
+ Reference< XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
+ if ( xParentContext.is() )
+ {
+ for ( sal_Int32 i = 0, nCount = xParentContext->getAccessibleChildCount(); i < nCount; ++i )
+ {
+ Reference< XAccessible > xChild( xParentContext->getAccessibleChild( i ) );
+ if ( xChild.is() )
+ {
+ Reference< XAccessibleContext > xChildContext = xChild->getAccessibleContext();
+ if ( xChildContext == (XAccessibleContext*)this )
+ {
+ nIndexInParent = i;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return nIndexInParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 AccessibleDialogControlShape::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::SHAPE;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogControlShape::getAccessibleDescription( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetModelStringProperty( "HelpText" );
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogControlShape::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return GetModelStringProperty( "Name" );
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleRelationSet > AccessibleDialogControlShape::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleStateSet > AccessibleDialogControlShape::getAccessibleStateSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Locale AccessibleDialogControlShape::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > AccessibleDialogControlShape::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Reference< XAccessible >();
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogControlShape::grabFocus( ) throw (RuntimeException)
+{
+ // no focus for shapes
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogControlShape::getForeground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ if ( pWindow->IsControlForeground() )
+ nColor = pWindow->GetControlForeground().GetColor();
+ else
+ {
+ Font aFont;
+ if ( pWindow->IsControlFont() )
+ aFont = pWindow->GetControlFont();
+ else
+ aFont = pWindow->GetFont();
+ nColor = aFont.GetColor().GetColor();
+ }
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogControlShape::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ if ( pWindow->IsControlBackground() )
+ nColor = pWindow->GetControlBackground().GetColor();
+ else
+ nColor = pWindow->GetBackground().GetColor().GetColor();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+Reference< awt::XFont > AccessibleDialogControlShape::getFont( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ {
+ Reference< awt::XDevice > xDev( pWindow->GetComponentInterface(), UNO_QUERY );
+ if ( xDev.is() )
+ {
+ Font aFont;
+ if ( pWindow->IsControlFont() )
+ aFont = pWindow->GetControlFont();
+ else
+ aFont = pWindow->GetFont();
+ VCLXFont* pVCLXFont = new VCLXFont;
+ pVCLXFont->Init( *xDev.get(), aFont );
+ xFont = pVCLXFont;
+ }
+ }
+
+ return xFont;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogControlShape::getTitledBorderText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogControlShape::getToolTipText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sText;
+ Window* pWindow = GetWindow();
+ if ( pWindow )
+ sText = pWindow->GetQuickHelpText();
+
+ return sText;
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/accessibility/accessibledialogwindow.cxx b/basctl/source/accessibility/accessibledialogwindow.cxx
new file mode 100644
index 000000000000..b8c43e4daa37
--- /dev/null
+++ b/basctl/source/accessibility/accessibledialogwindow.cxx
@@ -0,0 +1,1126 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include <accessibledialogwindow.hxx>
+#include <accessibledialogcontrolshape.hxx>
+#include <baside3.hxx>
+#include <dlged.hxx>
+#include <dlgedmod.hxx>
+#include <dlgedpage.hxx>
+#include <dlgedview.hxx>
+#include <dlgedobj.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <unotools/accessiblerelationsethelper.hxx>
+#include <toolkit/awt/vclxfont.hxx>
+#include <toolkit/helper/externallock.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <vcl/svapp.hxx>
+
+#include <vector>
+#include <algorithm>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::accessibility;
+using namespace ::comphelper;
+
+DBG_NAME( AccessibleDialogWindow )
+
+
+// -----------------------------------------------------------------------------
+// class ChildDescriptor
+// -----------------------------------------------------------------------------
+
+AccessibleDialogWindow::ChildDescriptor::ChildDescriptor( DlgEdObj* _pDlgEdObj )
+ :pDlgEdObj( _pDlgEdObj )
+ ,rxAccessible( 0 )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+AccessibleDialogWindow::ChildDescriptor::~ChildDescriptor()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+AccessibleDialogWindow::ChildDescriptor::ChildDescriptor( const ChildDescriptor& rDesc )
+ :pDlgEdObj( rDesc.pDlgEdObj )
+ ,rxAccessible( rDesc.rxAccessible )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+AccessibleDialogWindow::ChildDescriptor& AccessibleDialogWindow::ChildDescriptor::operator=( const ChildDescriptor& rDesc )
+{
+ pDlgEdObj = rDesc.pDlgEdObj;
+ rxAccessible = rDesc.rxAccessible;
+
+ return *this;
+}
+
+// -----------------------------------------------------------------------------
+
+bool AccessibleDialogWindow::ChildDescriptor::operator==( const ChildDescriptor& rDesc )
+{
+ bool bRet = false;
+ if ( pDlgEdObj == rDesc.pDlgEdObj )
+ bRet = true;
+
+ return bRet;
+}
+
+// -----------------------------------------------------------------------------
+
+bool AccessibleDialogWindow::ChildDescriptor::operator<( const ChildDescriptor& rDesc ) const
+{
+ bool bRet = false;
+ if ( pDlgEdObj && rDesc.pDlgEdObj && pDlgEdObj->GetOrdNum() < rDesc.pDlgEdObj->GetOrdNum() )
+ bRet = true;
+
+ return bRet;
+}
+
+// -----------------------------------------------------------------------------
+// class AccessibleDialogWindow
+// -----------------------------------------------------------------------------
+
+AccessibleDialogWindow::AccessibleDialogWindow( DialogWindow* pDialogWindow )
+ :AccessibleExtendedComponentHelper_BASE( new VCLExternalSolarLock() )
+ ,m_pDialogWindow( pDialogWindow )
+{
+ DBG_CTOR( AccessibleDialogWindow, NULL );
+ m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
+
+ if ( m_pDialogWindow )
+ {
+ SdrPage* pSdrPage = m_pDialogWindow->GetPage();
+ if ( pSdrPage )
+ {
+ ULONG nCount = pSdrPage->GetObjCount();
+
+ for ( ULONG i = 0; i < nCount; ++i )
+ {
+ SdrObject* pObj = pSdrPage->GetObj( i );
+ DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
+ if ( pDlgEdObj )
+ {
+ ChildDescriptor aDesc( pDlgEdObj );
+ if ( IsChildVisible( aDesc ) )
+ m_aAccessibleChildren.push_back( aDesc );
+ }
+ }
+ }
+
+ m_pDialogWindow->AddEventListener( LINK( this, AccessibleDialogWindow, WindowEventListener ) );
+
+ m_pDlgEditor = m_pDialogWindow->GetEditor();
+ if ( m_pDlgEditor )
+ StartListening( *m_pDlgEditor );
+
+ m_pDlgEdModel = m_pDialogWindow->GetModel();
+ if ( m_pDlgEdModel )
+ StartListening( *m_pDlgEdModel );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+AccessibleDialogWindow::~AccessibleDialogWindow()
+{
+ DBG_DTOR( AccessibleDialogWindow, NULL );
+ if ( m_pDialogWindow )
+ m_pDialogWindow->RemoveEventListener( LINK( this, AccessibleDialogWindow, WindowEventListener ) );
+
+ if ( m_pDlgEditor )
+ EndListening( *m_pDlgEditor );
+
+ if ( m_pDlgEdModel )
+ EndListening( *m_pDlgEdModel );
+
+ delete m_pExternalLock;
+ m_pExternalLock = NULL;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::UpdateFocused()
+{
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i].rxAccessible );
+ if ( xChild.is() )
+ {
+ AccessibleDialogControlShape* pShape = static_cast< AccessibleDialogControlShape* >( xChild.get() );
+ if ( pShape )
+ pShape->SetFocused( pShape->IsFocused() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::UpdateSelected()
+{
+ NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i].rxAccessible );
+ if ( xChild.is() )
+ {
+ AccessibleDialogControlShape* pShape = static_cast< AccessibleDialogControlShape* >( xChild.get() );
+ if ( pShape )
+ pShape->SetSelected( pShape->IsSelected() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::UpdateBounds()
+{
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xChild( m_aAccessibleChildren[i].rxAccessible );
+ if ( xChild.is() )
+ {
+ AccessibleDialogControlShape* pShape = static_cast< AccessibleDialogControlShape* >( xChild.get() );
+ if ( pShape )
+ pShape->SetBounds( pShape->GetBounds() );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool AccessibleDialogWindow::IsChildVisible( const ChildDescriptor& rDesc )
+{
+ sal_Bool bVisible = sal_False;
+
+ if ( m_pDialogWindow )
+ {
+ // first check, if the shape is in a visible layer
+ SdrModel* pSdrModel = m_pDialogWindow->GetModel();
+ if ( pSdrModel )
+ {
+ SdrLayerAdmin& rLayerAdmin = pSdrModel->GetLayerAdmin();
+ DlgEdObj* pDlgEdObj = rDesc.pDlgEdObj;
+ if ( pDlgEdObj )
+ {
+ SdrLayerID nLayerId = pDlgEdObj->GetLayer();
+ const SdrLayer* pSdrLayer = rLayerAdmin.GetLayerPerID( nLayerId );
+ if ( pSdrLayer )
+ {
+ String aLayerName = pSdrLayer->GetName();
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView && pSdrView->IsLayerVisible( aLayerName ) )
+ {
+ // get the bounding box of the shape in logic units
+ Rectangle aRect = pDlgEdObj->GetSnapRect();
+
+ // transform coordinates relative to the parent
+ MapMode aMap = m_pDialogWindow->GetMapMode();
+ Point aOrg = aMap.GetOrigin();
+ aRect.Move( aOrg.X(), aOrg.Y() );
+
+ // convert logic units to pixel
+ aRect = m_pDialogWindow->LogicToPixel( aRect, MapMode(MAP_100TH_MM) );
+
+ // check, if the shape's bounding box intersects with the bounding box of its parent
+ Rectangle aParentRect( Point( 0, 0 ), m_pDialogWindow->GetSizePixel() );
+ if ( aParentRect.IsOver( aRect ) )
+ bVisible = sal_True;
+ }
+ }
+ }
+ }
+ }
+
+ return bVisible;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::InsertChild( const ChildDescriptor& rDesc )
+{
+ // check, if object is already in child list
+ AccessibleChildren::iterator aIter = ::std::find( m_aAccessibleChildren.begin(), m_aAccessibleChildren.end(), rDesc );
+
+ // if not found, insert in child list
+ if ( aIter == m_aAccessibleChildren.end() )
+ {
+ // insert entry in child list
+ m_aAccessibleChildren.push_back( rDesc );
+
+ // get the accessible of the inserted child
+ Reference< XAccessible > xChild( getAccessibleChild( m_aAccessibleChildren.size() - 1 ) );
+
+ // sort child list
+ SortChildren();
+
+ // send accessible child event
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aNewValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::RemoveChild( const ChildDescriptor& rDesc )
+{
+ // find object in child list
+ AccessibleChildren::iterator aIter = ::std::find( m_aAccessibleChildren.begin(), m_aAccessibleChildren.end(), rDesc );
+
+ // if found, remove from child list
+ if ( aIter != m_aAccessibleChildren.end() )
+ {
+ // get the accessible of the removed child
+ Reference< XAccessible > xChild( aIter->rxAccessible );
+
+ // remove entry from child list
+ m_aAccessibleChildren.erase( aIter );
+
+ // send accessible child event
+ if ( xChild.is() )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= xChild;
+ NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+
+ Reference< XComponent > xComponent( xChild, UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::UpdateChild( const ChildDescriptor& rDesc )
+{
+ if ( IsChildVisible( rDesc ) )
+ {
+ // if the object is not in the child list, insert child
+ InsertChild( rDesc );
+ }
+ else
+ {
+ // if the object is in the child list, remove child
+ RemoveChild( rDesc );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::UpdateChildren()
+{
+ if ( m_pDialogWindow )
+ {
+ SdrPage* pSdrPage = m_pDialogWindow->GetPage();
+ if ( pSdrPage )
+ {
+ for ( ULONG i = 0, nCount = pSdrPage->GetObjCount(); i < nCount; ++i )
+ {
+ SdrObject* pObj = pSdrPage->GetObj( i );
+ DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
+ if ( pDlgEdObj )
+ UpdateChild( ChildDescriptor( pDlgEdObj ) );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::SortChildren()
+{
+ // sort child list
+ ::std::sort( m_aAccessibleChildren.begin(), m_aAccessibleChildren.end() );
+}
+
+// -----------------------------------------------------------------------------
+
+IMPL_LINK( AccessibleDialogWindow, WindowEventListener, VclSimpleEvent*, pEvent )
+{
+ DBG_CHKTHIS( AccessibleDialogWindow, 0 );
+ DBG_ASSERT( pEvent && pEvent->ISA( VclWindowEvent ), "AccessibleDialogWindow::WindowEventListener: unknown window event!" );
+
+ if ( pEvent && pEvent->ISA( VclWindowEvent ) )
+ {
+ DBG_ASSERT( ((VclWindowEvent*)pEvent)->GetWindow(), "AccessibleDialogWindow::WindowEventListener: no window!" );
+ if ( !((VclWindowEvent*)pEvent)->GetWindow()->IsAccessibilityEventsSuppressed() || ( pEvent->GetId() == VCLEVENT_OBJECT_DYING ) )
+ {
+ ProcessWindowEvent( *(VclWindowEvent*)pEvent );
+ }
+ }
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ Any aOldValue, aNewValue;
+
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_WINDOW_ENABLED:
+ {
+ aNewValue <<= AccessibleStateType::ENABLED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_DISABLED:
+ {
+ aOldValue <<= AccessibleStateType::ENABLED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_ACTIVATE:
+ {
+ aNewValue <<= AccessibleStateType::ACTIVE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_DEACTIVATE:
+ {
+ aOldValue <<= AccessibleStateType::ACTIVE;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_GETFOCUS:
+ {
+ aNewValue <<= AccessibleStateType::FOCUSED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ {
+ aOldValue <<= AccessibleStateType::FOCUSED;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_SHOW:
+ {
+ aNewValue <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_HIDE:
+ {
+ aOldValue <<= AccessibleStateType::SHOWING;
+ NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+ }
+ break;
+ case VCLEVENT_WINDOW_RESIZE:
+ {
+ NotifyAccessibleEvent( AccessibleEventId::BOUNDRECT_CHANGED, aOldValue, aNewValue );
+ UpdateChildren();
+ UpdateBounds();
+ }
+ break;
+ case VCLEVENT_OBJECT_DYING:
+ {
+ if ( m_pDialogWindow )
+ {
+ m_pDialogWindow->RemoveEventListener( LINK( this, AccessibleDialogWindow, WindowEventListener ) );
+ m_pDialogWindow = NULL;
+
+ if ( m_pDlgEditor )
+ EndListening( *m_pDlgEditor );
+ m_pDlgEditor = NULL;
+
+ if ( m_pDlgEdModel )
+ EndListening( *m_pDlgEdModel );
+ m_pDlgEdModel = NULL;
+
+ // dispose all children
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i].rxAccessible, UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+ }
+ break;
+ default:
+ {
+ }
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+ if ( m_pDialogWindow )
+ {
+ if ( m_pDialogWindow->IsEnabled() )
+ rStateSet.AddState( AccessibleStateType::ENABLED );
+
+ rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+
+ if ( m_pDialogWindow->HasFocus() )
+ rStateSet.AddState( AccessibleStateType::FOCUSED );
+
+ rStateSet.AddState( AccessibleStateType::VISIBLE );
+
+ if ( m_pDialogWindow->IsVisible() )
+ rStateSet.AddState( AccessibleStateType::SHOWING );
+
+ rStateSet.AddState( AccessibleStateType::OPAQUE );
+
+ rStateSet.AddState( AccessibleStateType::RESIZABLE );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// OCommonAccessibleComponent
+// -----------------------------------------------------------------------------
+
+awt::Rectangle AccessibleDialogWindow::implGetBounds() throw (RuntimeException)
+{
+ awt::Rectangle aBounds;
+ if ( m_pDialogWindow )
+ aBounds = AWTRectangle( Rectangle( m_pDialogWindow->GetPosPixel(), m_pDialogWindow->GetSizePixel() ) );
+
+ return aBounds;
+}
+
+// -----------------------------------------------------------------------------
+// SfxListener
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::Notify( SfxBroadcaster&, const SfxHint& rHint )
+{
+ if ( rHint.ISA( SdrHint ) )
+ {
+ SdrHint* pSdrHint = (SdrHint*)&rHint;
+ switch ( pSdrHint->GetKind() )
+ {
+ case HINT_OBJINSERTED:
+ {
+ SdrObject* pObj = (SdrObject*)pSdrHint->GetObject();
+ DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
+ if ( pDlgEdObj )
+ {
+ ChildDescriptor aDesc( pDlgEdObj );
+ if ( IsChildVisible( aDesc ) )
+ InsertChild( aDesc );
+ }
+ }
+ break;
+ case HINT_OBJREMOVED:
+ {
+ SdrObject* pObj = (SdrObject*)pSdrHint->GetObject();
+ DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
+ if ( pDlgEdObj )
+ RemoveChild( ChildDescriptor( pDlgEdObj ) );
+ }
+ break;
+ default: ;
+ }
+ }
+ else if ( rHint.ISA( DlgEdHint ) )
+ {
+ DlgEdHint* pDlgEdHint = (DlgEdHint*)&rHint;
+ switch ( pDlgEdHint->GetKind() )
+ {
+ case DLGED_HINT_WINDOWSCROLLED:
+ {
+ UpdateChildren();
+ UpdateBounds();
+ }
+ break;
+ case DLGED_HINT_LAYERCHANGED:
+ {
+ DlgEdObj* pDlgEdObj = pDlgEdHint->GetObject();
+ if ( pDlgEdObj )
+ UpdateChild( ChildDescriptor( pDlgEdObj ) );
+ }
+ break;
+ case DLGED_HINT_OBJORDERCHANGED:
+ {
+ SortChildren();
+ }
+ break;
+ case DLGED_HINT_SELECTIONCHANGED:
+ {
+ UpdateFocused();
+ UpdateSelected();
+ }
+ break;
+ default: ;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XInterface
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XINTERFACE2( AccessibleDialogWindow, AccessibleExtendedComponentHelper_BASE, AccessibleDialogWindow_BASE )
+
+// -----------------------------------------------------------------------------
+// XTypeProvider
+// -----------------------------------------------------------------------------
+
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleDialogWindow, AccessibleExtendedComponentHelper_BASE, AccessibleDialogWindow_BASE )
+
+// -----------------------------------------------------------------------------
+// XComponent
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::disposing()
+{
+ AccessibleExtendedComponentHelper_BASE::disposing();
+
+ if ( m_pDialogWindow )
+ {
+ m_pDialogWindow->RemoveEventListener( LINK( this, AccessibleDialogWindow, WindowEventListener ) );
+ m_pDialogWindow = NULL;
+
+ if ( m_pDlgEditor )
+ EndListening( *m_pDlgEditor );
+ m_pDlgEditor = NULL;
+
+ if ( m_pDlgEdModel )
+ EndListening( *m_pDlgEdModel );
+ m_pDlgEdModel = NULL;
+
+ // dispose all children
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XComponent > xComponent( m_aAccessibleChildren[i].rxAccessible, UNO_QUERY );
+ if ( xComponent.is() )
+ xComponent->dispose();
+ }
+ m_aAccessibleChildren.clear();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogWindow::getImplementationName() throw (RuntimeException)
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.basctl.AccessibleWindow" );
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool AccessibleDialogWindow::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > AccessibleDialogWindow::getSupportedServiceNames() throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames(1);
+ aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleWindow" );
+ return aNames;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessible
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleContext > AccessibleDialogWindow::getAccessibleContext( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return this;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleContext
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogWindow::getAccessibleChildCount() throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return m_aAccessibleChildren.size();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > AccessibleDialogWindow::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( i < 0 || i >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild = m_aAccessibleChildren[i].rxAccessible;
+ if ( !xChild.is() )
+ {
+ if ( m_pDialogWindow )
+ {
+ DlgEdObj* pDlgEdObj = m_aAccessibleChildren[i].pDlgEdObj;
+ if ( pDlgEdObj )
+ {
+ xChild = new AccessibleDialogControlShape( m_pDialogWindow, pDlgEdObj );
+
+ // insert into child list
+ m_aAccessibleChildren[i].rxAccessible = xChild;
+ }
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > AccessibleDialogWindow::getAccessibleParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xParent;
+ if ( m_pDialogWindow )
+ {
+ Window* pParent = m_pDialogWindow->GetAccessibleParentWindow();
+ if ( pParent )
+ xParent = pParent->GetAccessible();
+ }
+
+ return xParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogWindow::getAccessibleIndexInParent( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nIndexInParent = -1;
+ if ( m_pDialogWindow )
+ {
+ Window* pParent = m_pDialogWindow->GetAccessibleParentWindow();
+ if ( pParent )
+ {
+ for ( USHORT i = 0, nCount = pParent->GetAccessibleChildWindowCount(); i < nCount; ++i )
+ {
+ Window* pChild = pParent->GetAccessibleChildWindow( i );
+ if ( pChild == static_cast< Window* >( m_pDialogWindow ) )
+ {
+ nIndexInParent = i;
+ break;
+ }
+ }
+ }
+ }
+
+ return nIndexInParent;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int16 AccessibleDialogWindow::getAccessibleRole( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return AccessibleRole::PANEL;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogWindow::getAccessibleDescription( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sDescription;
+ if ( m_pDialogWindow )
+ sDescription = m_pDialogWindow->GetAccessibleDescription();
+
+ return sDescription;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogWindow::getAccessibleName( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sName;
+ if ( m_pDialogWindow )
+ sName = m_pDialogWindow->GetAccessibleName();
+
+ return sName;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleRelationSet > AccessibleDialogWindow::getAccessibleRelationSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
+ Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessibleStateSet > AccessibleDialogWindow::getAccessibleStateSet( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
+ Reference< XAccessibleStateSet > xSet = pStateSetHelper;
+
+ if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
+ {
+ FillAccessibleStateSet( *pStateSetHelper );
+ }
+ else
+ {
+ pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
+ }
+
+ return xSet;
+}
+
+// -----------------------------------------------------------------------------
+
+Locale AccessibleDialogWindow::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return Application::GetSettings().GetLocale();
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleComponent
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > AccessibleDialogWindow::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< XAccessible > xChild;
+ for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
+ {
+ Reference< XAccessible > xAcc = getAccessibleChild( i );
+ if ( xAcc.is() )
+ {
+ Reference< XAccessibleComponent > xComp( xAcc->getAccessibleContext(), UNO_QUERY );
+ if ( xComp.is() )
+ {
+ Rectangle aRect = VCLRectangle( xComp->getBounds() );
+ Point aPos = VCLPoint( rPoint );
+ if ( aRect.IsInside( aPos ) )
+ {
+ xChild = xAcc;
+ break;
+ }
+ }
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::grabFocus( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( m_pDialogWindow )
+ m_pDialogWindow->GrabFocus();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogWindow::getForeground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ if ( m_pDialogWindow )
+ {
+ if ( m_pDialogWindow->IsControlForeground() )
+ nColor = m_pDialogWindow->GetControlForeground().GetColor();
+ else
+ {
+ Font aFont;
+ if ( m_pDialogWindow->IsControlFont() )
+ aFont = m_pDialogWindow->GetControlFont();
+ else
+ aFont = m_pDialogWindow->GetFont();
+ nColor = aFont.GetColor().GetColor();
+ }
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogWindow::getBackground( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nColor = 0;
+ if ( m_pDialogWindow )
+ {
+ if ( m_pDialogWindow->IsControlBackground() )
+ nColor = m_pDialogWindow->GetControlBackground().GetColor();
+ else
+ nColor = m_pDialogWindow->GetBackground().GetColor().GetColor();
+ }
+
+ return nColor;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleExtendedComponent
+// -----------------------------------------------------------------------------
+
+Reference< awt::XFont > AccessibleDialogWindow::getFont( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ Reference< awt::XFont > xFont;
+ if ( m_pDialogWindow )
+ {
+ Reference< awt::XDevice > xDev( m_pDialogWindow->GetComponentInterface(), UNO_QUERY );
+ if ( xDev.is() )
+ {
+ Font aFont;
+ if ( m_pDialogWindow->IsControlFont() )
+ aFont = m_pDialogWindow->GetControlFont();
+ else
+ aFont = m_pDialogWindow->GetFont();
+ VCLXFont* pVCLXFont = new VCLXFont;
+ pVCLXFont->Init( *xDev.get(), aFont );
+ xFont = pVCLXFont;
+ }
+ }
+
+ return xFont;
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogWindow::getTitledBorderText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ return ::rtl::OUString();
+}
+
+// -----------------------------------------------------------------------------
+
+::rtl::OUString AccessibleDialogWindow::getToolTipText( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ ::rtl::OUString sText;
+ if ( m_pDialogWindow )
+ sText = m_pDialogWindow->GetQuickHelpText();
+
+ return sText;
+}
+
+// -----------------------------------------------------------------------------
+// XAccessibleSelection
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ if ( m_pDialogWindow )
+ {
+ DlgEdObj* pDlgEdObj = m_aAccessibleChildren[nChildIndex].pDlgEdObj;
+ if ( pDlgEdObj )
+ {
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView )
+ {
+ SdrPageView* pPgView = pSdrView->GetSdrPageView();
+ if ( pPgView )
+ pSdrView->MarkObj( pDlgEdObj, pPgView );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool AccessibleDialogWindow::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ sal_Bool bSelected = sal_False;
+ if ( m_pDialogWindow )
+ {
+ DlgEdObj* pDlgEdObj = m_aAccessibleChildren[nChildIndex].pDlgEdObj;
+ if ( pDlgEdObj )
+ {
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView )
+ bSelected = pSdrView->IsObjMarked( pDlgEdObj );
+ }
+ }
+
+ return bSelected;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::clearAccessibleSelection( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( m_pDialogWindow )
+ {
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView )
+ pSdrView->UnmarkAll();
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::selectAllAccessibleChildren( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( m_pDialogWindow )
+ {
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView )
+ pSdrView->MarkAll();
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 AccessibleDialogWindow::getSelectedAccessibleChildCount( ) throw (RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ sal_Int32 nRet = 0;
+
+ for ( sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
+ {
+ if ( isAccessibleChildSelected( i ) )
+ ++nRet;
+ }
+
+ return nRet;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XAccessible > AccessibleDialogWindow::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ Reference< XAccessible > xChild;
+
+ for ( sal_Int32 i = 0, j = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
+ {
+ if ( isAccessibleChildSelected( i ) && ( j++ == nSelectedChildIndex ) )
+ {
+ xChild = getAccessibleChild( i );
+ break;
+ }
+ }
+
+ return xChild;
+}
+
+// -----------------------------------------------------------------------------
+
+void AccessibleDialogWindow::deselectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+ OExternalLockGuard aGuard( this );
+
+ if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() )
+ throw IndexOutOfBoundsException();
+
+ if ( m_pDialogWindow )
+ {
+ DlgEdObj* pDlgEdObj = m_aAccessibleChildren[nChildIndex].pDlgEdObj;
+ if ( pDlgEdObj )
+ {
+ SdrView* pSdrView = m_pDialogWindow->GetView();
+ if ( pSdrView )
+ {
+ SdrPageView* pPgView = pSdrView->GetSdrPageView();
+ if ( pPgView )
+ pSdrView->MarkObj( pDlgEdObj, pPgView, TRUE );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/accessibility/makefile.mk b/basctl/source/accessibility/makefile.mk
new file mode 100644
index 000000000000..ec899b893944
--- /dev/null
+++ b/basctl/source/accessibility/makefile.mk
@@ -0,0 +1,48 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=basctl
+TARGET=accessibility
+ENABLE_EXCEPTIONS=TRUE
+VISIBILITY_HIDDEN=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES=\
+ $(SLO)$/accessibledialogwindow.obj \
+ $(SLO)$/accessibledialogcontrolshape.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/basctl/source/basicide/basdoc.cxx b/basctl/source/basicide/basdoc.cxx
new file mode 100644
index 000000000000..83d2d10e1256
--- /dev/null
+++ b/basctl/source/basicide/basdoc.cxx
@@ -0,0 +1,137 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include <ide_pch.hxx>
+#include <svx/svxids.hrc>
+
+#define GLOBALOVERFLOW2
+
+#include <sfx2/docfac.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
+#include <vcl/status.hxx>
+
+#include <svx/xmlsecctrl.hxx>
+
+#include <basdoc.hxx>
+
+#define BasicDocShell
+#include <basslots.hxx>
+
+#include "basicmod.hxx"
+#include "unomodel.hxx"
+
+TYPEINIT1(BasicDocShell, SfxObjectShell);
+DBG_NAME(BasicDocShell);
+
+SFX_IMPL_OBJECTFACTORY( BasicDocShell, SvGlobalName(), SFXOBJECTSHELL_STD_NORMAL, "sbasic" )
+
+SFX_IMPL_INTERFACE( BasicDocShell, SfxObjectShell, IDEResId( 0 ) )
+{
+ SFX_STATUSBAR_REGISTRATION( IDEResId( SID_BASICIDE_STATUSBAR ) );
+}
+
+BasicDocShell::BasicDocShell()
+ :SfxObjectShell( SFXMODEL_DISABLE_EMBEDDED_SCRIPTS | SFXMODEL_DISABLE_DOCUMENT_RECOVERY )
+{
+ pPrinter = 0;
+ SetPool( &SFX_APP()->GetPool() );
+ SetBaseModel( new SIDEModel(this) );
+}
+
+__EXPORT BasicDocShell::~BasicDocShell()
+{
+ delete pPrinter;
+}
+
+SfxPrinter* BasicDocShell::GetPrinter( BOOL bCreate )
+{
+ if ( !pPrinter && bCreate )
+ pPrinter = new SfxPrinter( new SfxItemSet( GetPool(), SID_PRINTER_NOTFOUND_WARN , SID_PRINTER_NOTFOUND_WARN ) );
+
+ return pPrinter;
+}
+
+void BasicDocShell::SetPrinter( SfxPrinter* pPr )
+{
+ if ( pPr != pPrinter )
+ {
+ delete pPrinter;
+ pPrinter = pPr;
+ }
+}
+
+void BasicDocShell::FillStatusBar( StatusBar& rStatusBar )
+{
+ String aTmp;
+
+ // Titel
+ aTmp.Fill( 30, 'X' );
+ rStatusBar.InsertItem( SID_BASICIDE_STAT_TITLE,
+ rStatusBar.GetTextWidth( aTmp ), SIB_AUTOSIZE | SIB_LEFT);
+
+ // Modify
+ rStatusBar.InsertItem( SID_DOC_MODIFIED,
+ rStatusBar.GetTextWidth( '*' ) );
+
+ // signatures
+ rStatusBar.InsertItem( SID_SIGNATURE, XmlSecStatusBarControl::GetDefItemWidth( rStatusBar ), SIB_USERDRAW );
+ rStatusBar.SetHelpId(SID_SIGNATURE, SID_SIGNATURE);
+
+ // Position
+ aTmp.Erase();
+ aTmp.Fill( 15, 'X' );
+ rStatusBar.InsertItem( SID_BASICIDE_STAT_POS,
+ rStatusBar.GetTextWidth( aTmp ), SIB_LEFT);
+
+ // Insert/Overwrite
+ rStatusBar.InsertItem( SID_ATTR_INSERT,
+ rStatusBar.GetTextWidth( String( RTL_CONSTASCII_USTRINGPARAM( "XXXXX" /* "EINFG" */ ) ) ) );
+
+ // Uhrzeit
+ aTmp.Fill( 20, 'X' );
+ rStatusBar.InsertItem( SID_ATTR_SIZE,
+ rStatusBar.GetTextWidth( aTmp ), SIB_AUTOSIZE | SIB_LEFT | SIB_USERDRAW );
+
+// return pStatusBar;
+
+}
+
+void BasicDocShell::FillClass( SvGlobalName*, sal_uInt32*, String*, String*, String*, sal_Int32, sal_Bool bTemplate) const
+{
+ (void)bTemplate;
+ DBG_ASSERT( bTemplate == sal_False, "No template for Basic" );
+}
+
+void BasicDocShell::Draw( OutputDevice *, const JobSetup &, USHORT )
+{}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basdoc.hxx b/basctl/source/basicide/basdoc.hxx
new file mode 100644
index 000000000000..ba98e47efee1
--- /dev/null
+++ b/basctl/source/basicide/basdoc.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 _BASDOC_HXX
+#define _BASDOC_HXX
+
+#include <svx/ifaceids.hxx>
+#include <iderid.hxx>
+#include <sfx2/objsh.hxx>
+
+class SfxPrinter;
+
+class BasicDocShell: public SfxObjectShell
+{
+ SfxPrinter* pPrinter;
+
+protected:
+ virtual void FillStatusBar( StatusBar& rBar);
+ virtual void Draw( OutputDevice *, const JobSetup & rSetup,
+ USHORT nAspect = ASPECT_CONTENT );
+ virtual void FillClass( SvGlobalName * pClassName,
+ sal_uInt32 * pFormat,
+ String * pAppName,
+ String * pFullTypeName,
+ String * pShortTypeName,
+ sal_Int32 nVersion,
+ sal_Bool bTemplate = sal_False ) const;
+
+public:
+ TYPEINFO();
+
+ using SotObject::GetInterface;
+ SFX_DECL_OBJECTFACTORY();
+ SFX_DECL_INTERFACE( SVX_INTERFACE_BASIDE_DOCSH )
+ BasicDocShell();
+ ~BasicDocShell();
+
+ SfxPrinter* GetPrinter( BOOL bCreate );
+ void SetPrinter( SfxPrinter* pPrinter );
+};
+
+#endif // _BASDOC_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basicbox.cxx b/basctl/source/basicide/basicbox.cxx
new file mode 100644
index 000000000000..9ac79df53864
--- /dev/null
+++ b/basctl/source/basicide/basicbox.cxx
@@ -0,0 +1,548 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <ide_pch.hxx>
+
+
+#include <basidesh.hrc>
+#include <basidesh.hxx>
+#include <basobj.hxx>
+
+#include <basicbox.hxx>
+#include <iderid.hxx>
+#include <iderdll.hxx>
+#include <bastypes.hxx>
+#include "bastype2.hxx"
+#include "basdoc.hxx"
+
+#include "localizationmgr.hxx"
+#include "managelang.hxx"
+#include "dlgresid.hrc"
+#include <editeng/unolingu.hxx>
+
+#include <svtools/langtab.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+
+SFX_IMPL_TOOLBOX_CONTROL( LibBoxControl, SfxStringItem );
+
+LibBoxControl::LibBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx )
+ : SfxToolBoxControl( nSlotId, nId, rTbx )
+{
+}
+
+
+
+LibBoxControl::~LibBoxControl()
+{
+}
+
+
+
+void LibBoxControl::StateChanged( USHORT, SfxItemState eState, const SfxPoolItem* pState )
+{
+ BasicLibBox* pBox = (BasicLibBox*) GetToolBox().GetItemWindow( GetId() );
+
+ DBG_ASSERT( pBox, "Box not found" );
+ if ( !pBox )
+ return;
+
+ if ( eState != SFX_ITEM_AVAILABLE )
+ pBox->Disable();
+ else
+ {
+ pBox->Enable();
+
+ if ( pState->ISA(SfxStringItem) )
+ pBox->Update( (const SfxStringItem*)pState );
+ else
+ pBox->Update( NULL );
+ }
+}
+
+
+
+Window* LibBoxControl::CreateItemWindow( Window *pParent )
+{
+ return new BasicLibBox( pParent, m_xFrame );
+}
+
+//=============================================================================
+//= DocListenerBox
+//=============================================================================
+
+DocListenerBox::DocListenerBox( Window* pParent )
+ :ListBox( pParent, WinBits( WB_BORDER | WB_DROPDOWN ) )
+ ,m_aNotifier( *this )
+{
+}
+
+DocListenerBox::~DocListenerBox()
+{
+ m_aNotifier.dispose();
+}
+
+void DocListenerBox::onDocumentCreated( const ScriptDocument& /*_rDocument*/ )
+{
+ FillBox();
+}
+
+void DocListenerBox::onDocumentOpened( const ScriptDocument& /*_rDocument*/ )
+{
+ FillBox();
+}
+
+void DocListenerBox::onDocumentSave( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void DocListenerBox::onDocumentSaveDone( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void DocListenerBox::onDocumentSaveAs( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void DocListenerBox::onDocumentSaveAsDone( const ScriptDocument& /*_rDocument*/ )
+{
+ FillBox();
+}
+
+void DocListenerBox::onDocumentClosed( const ScriptDocument& /*_rDocument*/ )
+{
+ if ( SFX_APP()->IsInBasicCall() )
+ // Nicht wenn Office beendet
+ FillBox();
+}
+
+void DocListenerBox::onDocumentTitleChanged( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void DocListenerBox::onDocumentModeChanged( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+//=============================================================================
+//= BasicLibBox
+//=============================================================================
+BasicLibBox::BasicLibBox( Window* pParent, const uno::Reference< frame::XFrame >& rFrame ) :
+ DocListenerBox( pParent ),
+ m_xFrame( rFrame )
+{
+ FillBox();
+ bIgnoreSelect = TRUE; // Select von 0 noch nicht weiterleiten
+ bFillBox = TRUE;
+ SelectEntryPos( 0 );
+ aCurText = GetEntry( 0 );
+ SetSizePixel( Size( 250, 200 ) );
+ bIgnoreSelect = FALSE;
+}
+
+
+
+__EXPORT BasicLibBox::~BasicLibBox()
+{
+ ClearBox();
+}
+
+void __EXPORT BasicLibBox::Update( const SfxStringItem* pItem )
+{
+ // Immer auf dem laufenden sein...
+// if ( !pItem || !pItem->GetValue().Len() )
+ FillBox();
+
+ if ( pItem )
+ {
+ aCurText = pItem->GetValue();
+ if ( aCurText.Len() == 0 )
+ aCurText = String( IDEResId( RID_STR_ALL ) );
+ }
+
+ if ( GetSelectEntry() != aCurText )
+ SelectEntry( aCurText );
+}
+
+void __EXPORT BasicLibBox::ReleaseFocus()
+{
+ SfxViewShell* pCurSh = SfxViewShell::Current();
+ DBG_ASSERT( pCurSh, "Current ViewShell not found!" );
+
+ if ( pCurSh )
+ {
+ Window* pShellWin = pCurSh->GetWindow();
+ if ( !pShellWin ) // sonst werde ich ihn nicht los
+ pShellWin = Application::GetDefDialogParent();
+
+ pShellWin->GrabFocus();
+ }
+}
+
+void BasicLibBox::FillBox()
+{
+ SetUpdateMode( FALSE );
+ bIgnoreSelect = TRUE;
+
+ aCurText = GetSelectEntry();
+
+ SelectEntryPos( 0 );
+ ClearBox();
+
+ // create list box entries
+ USHORT nPos = InsertEntry( String( IDEResId( RID_STR_ALL ) ), LISTBOX_APPEND );
+ SetEntryData( nPos, new BasicLibEntry( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_UNKNOWN, String() ) );
+ InsertEntries( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_USER );
+ InsertEntries( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_SHARE );
+
+ ScriptDocuments aDocuments( ScriptDocument::getAllScriptDocuments( ScriptDocument::DocumentsSorted ) );
+ for ( ScriptDocuments::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ InsertEntries( *doc, LIBRARY_LOCATION_DOCUMENT );
+ }
+
+ SetUpdateMode( TRUE );
+
+ SelectEntry( aCurText );
+ if ( !GetSelectEntryCount() )
+ {
+ SelectEntryPos( GetEntryCount() ); // gibst es nicht => leer?
+ aCurText = GetSelectEntry();
+ }
+ bIgnoreSelect = FALSE;
+}
+
+void BasicLibBox::InsertEntries( const ScriptDocument& rDocument, LibraryLocation eLocation )
+{
+ // get a sorted list of library names
+ Sequence< ::rtl::OUString > aLibNames = rDocument.getLibraryNames();
+ sal_Int32 nLibCount = aLibNames.getLength();
+ const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
+
+ for ( sal_Int32 i = 0 ; i < nLibCount ; ++i )
+ {
+ String aLibName = pLibNames[ i ];
+ if ( eLocation == rDocument.getLibraryLocation( aLibName ) )
+ {
+ String aName( rDocument.getTitle( eLocation ) );
+ String aEntryText( CreateMgrAndLibStr( aName, aLibName ) );
+ USHORT nPos = InsertEntry( aEntryText, LISTBOX_APPEND );
+ SetEntryData( nPos, new BasicLibEntry( rDocument, eLocation, aLibName ) );
+ }
+ }
+}
+
+long BasicLibBox::PreNotify( NotifyEvent& rNEvt )
+{
+ long nDone = 0;
+ if( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ KeyEvent aKeyEvt = *rNEvt.GetKeyEvent();
+ USHORT nKeyCode = aKeyEvt.GetKeyCode().GetCode();
+ switch( nKeyCode )
+ {
+ case KEY_RETURN:
+ {
+ NotifyIDE();
+ nDone = 1;
+ }
+ break;
+
+ case KEY_ESCAPE:
+ {
+ SelectEntry( aCurText );
+ ReleaseFocus();
+ nDone = 1;
+ }
+ break;
+ }
+ }
+ else if( rNEvt.GetType() == EVENT_GETFOCUS )
+ {
+ if ( bFillBox )
+ {
+ FillBox();
+ bFillBox = FALSE;
+ }
+ }
+ else if( rNEvt.GetType() == EVENT_LOSEFOCUS )
+ {
+ if ( !HasChildPathFocus( TRUE ) )
+ {
+ bIgnoreSelect = TRUE;
+ bFillBox = TRUE;
+ }
+ }
+
+ return nDone ? nDone : ListBox::PreNotify( rNEvt );
+}
+
+void __EXPORT BasicLibBox::Select()
+{
+ if ( !IsTravelSelect() )
+ {
+ if ( !bIgnoreSelect )
+ NotifyIDE();
+ else
+ SelectEntry( aCurText ); // Seit 306... (Select nach Escape)
+ }
+}
+
+void BasicLibBox::NotifyIDE()
+{
+ USHORT nSelPos = GetSelectEntryPos();
+ BasicLibEntry* pEntry = (BasicLibEntry*)GetEntryData( nSelPos );
+ if ( pEntry )
+ {
+ ScriptDocument aDocument( pEntry->GetDocument() );
+ SfxUsrAnyItem aDocumentItem( SID_BASICIDE_ARG_DOCUMENT_MODEL, uno::makeAny( aDocument.getDocumentOrNull() ) );
+ String aLibName = pEntry->GetLibName();
+ SfxStringItem aLibNameItem( SID_BASICIDE_ARG_LIBNAME, aLibName );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if ( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_LIBSELECTED,
+ SFX_CALLMODE_SYNCHRON, &aDocumentItem, &aLibNameItem, 0L );
+ }
+ }
+ ReleaseFocus();
+}
+
+void BasicLibBox::ClearBox()
+{
+ USHORT nCount = GetEntryCount();
+ for ( USHORT i = 0; i < nCount; ++i )
+ {
+ BasicLibEntry* pEntry = (BasicLibEntry*)GetEntryData( i );
+ delete pEntry;
+ }
+ ListBox::Clear();
+}
+
+// class LanguageBoxControl ----------------------------------------------
+
+SFX_IMPL_TOOLBOX_CONTROL( LanguageBoxControl, SfxStringItem );
+
+LanguageBoxControl::LanguageBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx )
+ : SfxToolBoxControl( nSlotId, nId, rTbx )
+{
+}
+
+LanguageBoxControl::~LanguageBoxControl()
+{
+}
+
+void LanguageBoxControl::StateChanged( USHORT _nID, SfxItemState _eState, const SfxPoolItem* _pItem )
+{
+ (void)_nID;
+
+ BasicLanguageBox* pBox = (BasicLanguageBox*)( GetToolBox().GetItemWindow( GetId() ) );
+
+ if ( pBox )
+ {
+ if ( _eState != SFX_ITEM_AVAILABLE )
+ pBox->Disable();
+ else
+ {
+ pBox->Enable();
+ if ( _pItem->ISA(SfxStringItem) )
+ pBox->Update( (const SfxStringItem*)_pItem );
+ else
+ pBox->Update( NULL );
+ }
+ }
+}
+
+Window* LanguageBoxControl::CreateItemWindow( Window *pParent )
+{
+ return new BasicLanguageBox( pParent );
+}
+
+// class BasicLanguageBox ------------------------------------------------
+
+BasicLanguageBox::BasicLanguageBox( Window* pParent ) :
+
+ DocListenerBox( pParent ),
+
+ m_sNotLocalizedStr( IDEResId( RID_STR_TRANSLATION_NOTLOCALIZED ) ),
+ m_sDefaultLanguageStr( IDEResId( RID_STR_TRANSLATION_DEFAULT ) ),
+
+ m_bIgnoreSelect( false )
+
+{
+ SetSizePixel( Size( 210, 200 ) );
+
+ FillBox();
+}
+
+BasicLanguageBox::~BasicLanguageBox()
+{
+ ClearBox();
+}
+
+void BasicLanguageBox::FillBox()
+{
+ SetUpdateMode( FALSE );
+ m_bIgnoreSelect = true;
+ m_sCurrentText = GetSelectEntry();
+ ClearBox();
+
+ LocalizationMgr* pCurMgr = IDE_DLL()->GetShell()->GetCurLocalizationMgr();
+ if ( pCurMgr->isLibraryLocalized() )
+ {
+ Enable();
+ SvtLanguageTable aLangTable;
+ Locale aDefaultLocale = pCurMgr->getStringResourceManager()->getDefaultLocale();
+ Locale aCurrentLocale = pCurMgr->getStringResourceManager()->getCurrentLocale();
+ Sequence< Locale > aLocaleSeq = pCurMgr->getStringResourceManager()->getLocales();
+ const Locale* pLocale = aLocaleSeq.getConstArray();
+ INT32 i, nCount = aLocaleSeq.getLength();
+ USHORT nSelPos = LISTBOX_ENTRY_NOTFOUND;
+ for ( i = 0; i < nCount; ++i )
+ {
+ bool bIsDefault = localesAreEqual( aDefaultLocale, pLocale[i] );
+ bool bIsCurrent = localesAreEqual( aCurrentLocale, pLocale[i] );
+ LanguageType eLangType = SvxLocaleToLanguage( pLocale[i] );
+ String sLanguage = aLangTable.GetString( eLangType );
+ if ( bIsDefault )
+ {
+ sLanguage += ' ';
+ sLanguage += m_sDefaultLanguageStr;
+ }
+ USHORT nPos = InsertEntry( sLanguage );
+ SetEntryData( nPos, new LanguageEntry( sLanguage, pLocale[i], bIsDefault ) );
+
+ if ( bIsCurrent )
+ nSelPos = nPos;
+ }
+
+ if ( nSelPos != LISTBOX_ENTRY_NOTFOUND )
+ {
+ SelectEntryPos( nSelPos );
+ m_sCurrentText = GetSelectEntry();
+ }
+ }
+ else
+ {
+ InsertEntry( m_sNotLocalizedStr );
+ SelectEntryPos(0);
+ Disable();
+ }
+
+ SetUpdateMode( TRUE );
+ m_bIgnoreSelect = false;
+}
+
+void BasicLanguageBox::ClearBox()
+{
+ USHORT nCount = GetEntryCount();
+ for ( USHORT i = 0; i < nCount; ++i )
+ {
+ LanguageEntry* pEntry = (LanguageEntry*)GetEntryData(i);
+ delete pEntry;
+ }
+ ListBox::Clear();
+}
+
+void BasicLanguageBox::SetLanguage()
+{
+ LanguageEntry* pEntry = (LanguageEntry*)GetEntryData( GetSelectEntryPos() );
+ if ( pEntry )
+ IDE_DLL()->GetShell()->GetCurLocalizationMgr()->handleSetCurrentLocale( pEntry->m_aLocale );
+}
+
+void BasicLanguageBox::Select()
+{
+ if ( !m_bIgnoreSelect )
+ SetLanguage();
+ else
+ SelectEntry( m_sCurrentText ); // Select after Escape
+}
+
+long BasicLanguageBox::PreNotify( NotifyEvent& rNEvt )
+{
+ long nDone = 0;
+ if( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ USHORT nKeyCode = rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
+ switch( nKeyCode )
+ {
+ case KEY_RETURN:
+ {
+ SetLanguage();
+ nDone = 1;
+ }
+ break;
+
+ case KEY_ESCAPE:
+ {
+ SelectEntry( m_sCurrentText );
+ nDone = 1;
+ }
+ break;
+ }
+ }
+ else if( rNEvt.GetType() == EVENT_GETFOCUS )
+ {
+ }
+ else if( rNEvt.GetType() == EVENT_LOSEFOCUS )
+ {
+ }
+
+ return nDone ? nDone : ListBox::PreNotify( rNEvt );
+}
+
+void BasicLanguageBox::Update( const SfxStringItem* pItem )
+{
+ FillBox();
+
+ if ( pItem && pItem->GetValue().Len() > 0 )
+ {
+ m_sCurrentText = pItem->GetValue();
+ if ( GetSelectEntry() != m_sCurrentText )
+ SelectEntry( m_sCurrentText );
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basicbox.hxx b/basctl/source/basicide/basicbox.hxx
new file mode 100644
index 000000000000..f5a938194889
--- /dev/null
+++ b/basctl/source/basicide/basicbox.hxx
@@ -0,0 +1,154 @@
+/* -*- 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 _BASICBOX_HXX
+#define _BASICBOX_HXX
+
+#include "doceventnotifier.hxx"
+#include <svl/stritem.hxx>
+#include <svheader.hxx>
+#include <sfx2/tbxctrl.hxx>
+#include <vcl/lstbox.hxx>
+
+
+class LibBoxControl: public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ LibBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~LibBoxControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual Window* CreateItemWindow( Window *pParent );
+};
+
+/** base class for list boxes which need to update their content according to the list
+ of open documents
+*/
+class DocListenerBox :public ListBox
+ ,public ::basctl::DocumentEventListener
+{
+protected:
+ DocListenerBox( Window* pParent );
+ ~DocListenerBox();
+
+protected:
+ virtual void FillBox() = 0;
+
+private:
+ // DocumentEventListener
+ virtual void onDocumentCreated( const ScriptDocument& _rDocument );
+ virtual void onDocumentOpened( const ScriptDocument& _rDocument );
+ virtual void onDocumentSave( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAs( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAsDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentClosed( const ScriptDocument& _rDocument );
+ virtual void onDocumentTitleChanged( const ScriptDocument& _rDocument );
+ virtual void onDocumentModeChanged( const ScriptDocument& _rDocument );
+
+private:
+ ::basctl::DocumentEventNotifier m_aNotifier;
+};
+
+//
+
+class BasicLibBox : public DocListenerBox
+{
+private:
+ String aCurText;
+ BOOL bIgnoreSelect;
+ BOOL bFillBox;
+ com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > m_xFrame;
+
+ void ReleaseFocus();
+ void InsertEntries( const ScriptDocument& rDocument, LibraryLocation eLocation );
+
+ void ClearBox();
+ void NotifyIDE();
+
+ // DocListenerBox
+ virtual void FillBox();
+
+protected:
+ virtual void Select();
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+public:
+ BasicLibBox( Window* pParent,
+ const com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame );
+ ~BasicLibBox();
+
+ using Window::Update;
+ void Update( const SfxStringItem* pItem );
+};
+
+class LanguageBoxControl: public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ LanguageBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~LanguageBoxControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState );
+ virtual Window* CreateItemWindow( Window *pParent );
+};
+
+class BasicLanguageBox : public DocListenerBox
+{
+private:
+ String m_sNotLocalizedStr;
+ String m_sDefaultLanguageStr;
+ String m_sCurrentText;
+
+ bool m_bIgnoreSelect;
+
+ void ClearBox();
+ void SetLanguage();
+
+ // DocListenerBox
+ virtual void FillBox();
+
+protected:
+ virtual void Select();
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+public:
+ BasicLanguageBox( Window* pParent );
+ ~BasicLanguageBox();
+
+ using Window::Update;
+ void Update( const SfxStringItem* pItem );
+};
+
+#endif // _BASICBOX_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basicmod.hxx b/basctl/source/basicide/basicmod.hxx
new file mode 100644
index 000000000000..da7556613561
--- /dev/null
+++ b/basctl/source/basicide/basicmod.hxx
@@ -0,0 +1,49 @@
+/* -*- 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 BASICMOD_HXX
+#define BASICMOD_HXX
+
+#include <sfx2/module.hxx>
+#include <tools/shl.hxx>
+
+class BasicIDEModule : public SfxModule
+{
+public:
+ BasicIDEModule( ResMgr *pMgr, SfxObjectFactory *pObjFact) :
+ SfxModule( pMgr, FALSE, pObjFact, NULL )
+ {}
+};
+
+
+#define BASIC_MOD() ( *(BasicIDEModule**) GetAppData(SHL_IDE) )
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basicprint.src b/basctl/source/basicide/basicprint.src
new file mode 100644
index 000000000000..1f301d3461a9
--- /dev/null
+++ b/basctl/source/basicide/basicprint.src
@@ -0,0 +1,40 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <basidesh.hrc>
+
+StringArray RID_PRINTDLG_STRLIST
+{
+ ItemList [en-US] =
+ {
+ < "Print range"; >;
+ < "All ~Pages"; >;
+ < "Print all pages of the printable content."; >;
+ < "Pa~ges"; >;
+ < "Print only some pages of the printable content."; >;
+ };
+};
diff --git a/basctl/source/basicide/basicrenderable.cxx b/basctl/source/basicide/basicrenderable.cxx
new file mode 100644
index 000000000000..889e09b7f633
--- /dev/null
+++ b/basctl/source/basicide/basicrenderable.cxx
@@ -0,0 +1,196 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+#include "precompiled_basctl.hxx"
+
+#include "basicrenderable.hxx"
+#include "bastypes.hxx"
+#include "basidesh.hrc"
+
+#include "com/sun/star/awt/XDevice.hpp"
+#include "toolkit/awt/vclxdevice.hxx"
+#include "vcl/print.hxx"
+#include "tools/multisel.hxx"
+#include "tools/resary.hxx"
+
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+using namespace basicide;
+
+BasicRenderable::BasicRenderable( IDEBaseWindow* pWin )
+: cppu::WeakComponentImplHelper1< com::sun::star::view::XRenderable >( maMutex )
+, mpWindow( pWin )
+{
+ ResStringArray aStrings( IDEResId( RID_PRINTDLG_STRLIST ) );
+ DBG_ASSERT( aStrings.Count() >= 5, "resource incomplete" );
+ if( aStrings.Count() < 5 ) // bad resource ?
+ return;
+
+ m_aUIProperties.realloc( 3 );
+
+ // create Subgroup for print range
+ vcl::PrinterOptionsHelper::UIControlOptions aPrintRangeOpt;
+ aPrintRangeOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintRange" ) );
+ aPrintRangeOpt.mbInternalOnly = sal_True;
+ m_aUIProperties[0].Value = getSubgroupControlOpt( rtl::OUString( aStrings.GetString( 0 ) ),
+ rtl::OUString(),
+ aPrintRangeOpt
+ );
+
+ // create a choice for the range to print
+ rtl::OUString aPrintContentName( RTL_CONSTASCII_USTRINGPARAM( "PrintContent" ) );
+ Sequence< rtl::OUString > aChoices( 2 );
+ Sequence< rtl::OUString > aHelpTexts( 2 );
+ aChoices[0] = aStrings.GetString( 1 );
+ aHelpTexts[0] = aStrings.GetString( 2 );
+ aChoices[1] = aStrings.GetString( 3 );
+ aHelpTexts[1] = aStrings.GetString( 4 );
+ m_aUIProperties[1].Value = getChoiceControlOpt( rtl::OUString(),
+ aHelpTexts,
+ aPrintContentName,
+ aChoices,
+ 0 );
+
+ // create a an Edit dependent on "Pages" selected
+ vcl::PrinterOptionsHelper::UIControlOptions aPageRangeOpt( aPrintContentName, 1, sal_True );
+ m_aUIProperties[2].Value = getEditControlOpt( rtl::OUString(),
+ rtl::OUString(),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageRange" ) ),
+ rtl::OUString(),
+ aPageRangeOpt
+ );
+}
+
+BasicRenderable::~BasicRenderable()
+{
+}
+
+Printer* BasicRenderable::getPrinter()
+{
+ Printer* pPrinter = NULL;
+ Any aValue( getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) ) ) );
+ Reference<awt::XDevice> xRenderDevice;
+
+ if( aValue >>= xRenderDevice )
+ {
+ VCLXDevice* pDevice = VCLXDevice::GetImplementation(xRenderDevice);
+ OutputDevice* pOut = pDevice ? pDevice->GetOutputDevice() : NULL;
+ pPrinter = dynamic_cast<Printer*>(pOut);
+ }
+ return pPrinter;
+}
+
+sal_Int32 SAL_CALL BasicRenderable::getRendererCount (
+ const Any&, const Sequence<beans::PropertyValue >& i_xOptions
+ ) throw (lang::IllegalArgumentException, RuntimeException)
+{
+ processProperties( i_xOptions );
+
+ sal_Int32 nCount = 0;
+ if( mpWindow )
+ {
+ Printer* pPrinter = getPrinter();
+ if( pPrinter )
+ {
+ nCount = mpWindow->countPages( pPrinter );
+ sal_Int64 nContent = getIntValue( "PrintContent", -1 );
+ if( nContent == 1 )
+ {
+ rtl::OUString aPageRange( getStringValue( "PageRange" ) );
+ MultiSelection aSel( aPageRange );
+ long nSelCount = aSel.GetSelectCount();
+ if( nSelCount >= 0 && nSelCount < nCount )
+ nCount = nSelCount;
+ }
+ }
+ else
+ throw lang::IllegalArgumentException();
+ }
+
+ return nCount;
+}
+
+Sequence<beans::PropertyValue> SAL_CALL BasicRenderable::getRenderer (
+ sal_Int32, const Any&, const Sequence<beans::PropertyValue>& i_xOptions
+ ) throw (lang::IllegalArgumentException, RuntimeException)
+{
+ processProperties( i_xOptions );
+
+ Sequence< beans::PropertyValue > aVals;
+ // insert page size here
+ Printer* pPrinter = getPrinter();
+ // no renderdevice is legal; the first call is to get our print ui options
+ if( pPrinter )
+ {
+ Size aPageSize( pPrinter->PixelToLogic( pPrinter->GetPaperSizePixel(), MapMode( MAP_100TH_MM ) ) );
+
+ aVals.realloc( 1 );
+ aVals[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) );
+ awt::Size aSize;
+ aSize.Width = aPageSize.Width();
+ aSize.Height = aPageSize.Height();
+ aVals[0].Value <<= aSize;
+ }
+
+ appendPrintUIOptions( aVals );
+
+ return aVals;
+}
+
+void SAL_CALL BasicRenderable::render (
+ sal_Int32 nRenderer, const Any&,
+ const Sequence<beans::PropertyValue>& i_xOptions
+ ) throw (lang::IllegalArgumentException, RuntimeException)
+{
+ processProperties( i_xOptions );
+
+ if( mpWindow )
+ {
+ Printer* pPrinter = getPrinter();
+ if( pPrinter )
+ {
+ sal_Int64 nContent = getIntValue( "PrintContent", -1 );
+ if( nContent == 1 )
+ {
+ rtl::OUString aPageRange( getStringValue( "PageRange" ) );
+ MultiSelection aSel( aPageRange );
+ long nSelect = aSel.FirstSelected();
+ while( nSelect != long(SFX_ENDOFSELECTION) && nRenderer-- )
+ nSelect = aSel.NextSelected();
+ if( nSelect != long(SFX_ENDOFSELECTION) )
+ mpWindow->printPage( sal_Int32(nSelect-1), pPrinter );
+ }
+ else
+ mpWindow->printPage( nRenderer, pPrinter );
+ }
+ else
+ throw lang::IllegalArgumentException();
+ }
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basicrenderable.hxx b/basctl/source/basicide/basicrenderable.hxx
new file mode 100644
index 000000000000..aadddae90ed0
--- /dev/null
+++ b/basctl/source/basicide/basicrenderable.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 _BASICRENDERABLE_HXX
+#define _BASICRENDERABLE_HXX
+
+#include "com/sun/star/view/XRenderable.hpp"
+#include "cppuhelper/compbase1.hxx"
+
+#include "vcl/print.hxx"
+
+class IDEBaseWindow;
+
+namespace basicide
+{
+class BasicRenderable :
+ public cppu::WeakComponentImplHelper1< com::sun::star::view::XRenderable >,
+ public vcl::PrinterOptionsHelper
+{
+ IDEBaseWindow* mpWindow;
+ osl::Mutex maMutex;
+
+ Printer* getPrinter();
+public:
+ BasicRenderable( IDEBaseWindow* pWin );
+ virtual ~BasicRenderable();
+
+ // XRenderable
+ virtual sal_Int32 SAL_CALL getRendererCount (
+ const com::sun::star::uno::Any& aSelection,
+ const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue >& xOptions)
+ throw (com::sun::star::lang::IllegalArgumentException, com::sun::star::uno::RuntimeException);
+
+ virtual com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> SAL_CALL getRenderer (
+ sal_Int32 nRenderer,
+ const com::sun::star::uno::Any& rSelection,
+ const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rxOptions)
+ throw (com::sun::star::lang::IllegalArgumentException, com::sun::star::uno::RuntimeException);
+
+ virtual void SAL_CALL render (
+ sal_Int32 nRenderer,
+ const com::sun::star::uno::Any& rSelection,
+ const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rxOptions)
+ throw (com::sun::star::lang::IllegalArgumentException, com::sun::star::uno::RuntimeException);
+
+};
+
+} // namespace
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx
new file mode 100644
index 000000000000..ef1289736106
--- /dev/null
+++ b/basctl/source/basicide/baside2.cxx
@@ -0,0 +1,1759 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include <ide_pch.hxx>
+
+
+#include <svtools/texteng.hxx>
+#include <svtools/textview.hxx>
+#include <svtools/xtextedt.hxx>
+#include <basic/sbx.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
+#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
+#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <com/sun/star/document/MacroExecMode.hpp>
+#include <com/sun/star/script/ModuleType.hpp>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <sfx2/docfile.hxx>
+#include <basic/basrdll.hxx>
+
+
+#include <baside2.hrc>
+#include <baside2.hxx>
+#include <objdlg.hxx>
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+
+#include <basobj.hxx>
+#include <brkdlg.hxx>
+
+#include <svx/srchdlg.hxx>
+
+#include <vcl/sound.hxx>
+
+#include <unotools/textsearch.hxx>
+#include <tools/diagnose_ex.h>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+
+#define SPLIT_MARGIN 5
+#define SPLIT_HEIGHT 2
+
+#define LMARGPRN 1700
+#define RMARGPRN 900
+#define TMARGPRN 2000
+#define BMARGPRN 1000
+#define BORDERPRN 300
+
+#define APPWAIT_START 100
+
+#define VALIDWINDOW 0x1234
+
+#if defined(OW) || defined(MTF)
+#define FILTERMASK_ALL "*"
+#elif defined(PM2)
+#define FILTERMASK_ALL ""
+#else
+#define FILTERMASK_ALL "*.*"
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::ui::dialogs;
+using namespace utl;
+using namespace comphelper;
+
+
+DBG_NAME( ModulWindow )
+
+TYPEINIT1( ModulWindow , IDEBaseWindow );
+
+void lcl_PrintHeader( Printer* pPrinter, USHORT nPages, USHORT nCurPage, const String& rTitle, bool bOutput )
+{
+ short nLeftMargin = LMARGPRN;
+ Size aSz = pPrinter->GetOutputSize();
+ short nBorder = BORDERPRN;
+
+ const Color aOldLineColor( pPrinter->GetLineColor() );
+ const Color aOldFillColor( pPrinter->GetFillColor() );
+ const Font aOldFont( pPrinter->GetFont() );
+
+ pPrinter->SetLineColor( Color( COL_BLACK ) );
+ pPrinter->SetFillColor();
+
+ Font aFont( aOldFont );
+ aFont.SetWeight( WEIGHT_BOLD );
+ aFont.SetAlign( ALIGN_BOTTOM );
+ pPrinter->SetFont( aFont );
+
+ long nFontHeight = pPrinter->GetTextHeight();
+
+ // 1.Border => Strich, 2+3 Border = Freiraum.
+ long nYTop = TMARGPRN-3*nBorder-nFontHeight;
+
+ long nXLeft = nLeftMargin-nBorder;
+ long nXRight = aSz.Width()-RMARGPRN+nBorder;
+
+ if( bOutput )
+ pPrinter->DrawRect( Rectangle(
+ Point( nXLeft, nYTop ),
+ Size( nXRight-nXLeft, aSz.Height() - nYTop - BMARGPRN + nBorder ) ) );
+
+
+ long nY = TMARGPRN-2*nBorder;
+ Point aPos( nLeftMargin, nY );
+ if( bOutput )
+ pPrinter->DrawText( aPos, rTitle );
+ if ( nPages != 1 )
+ {
+ aFont.SetWeight( WEIGHT_NORMAL );
+ pPrinter->SetFont( aFont );
+ String aPageStr( RTL_CONSTASCII_USTRINGPARAM( " [" ) );
+ aPageStr += String( IDEResId( RID_STR_PAGE ) );
+ aPageStr += ' ';
+ aPageStr += String::CreateFromInt32( nCurPage );
+ aPageStr += ']';
+ aPos.X() += pPrinter->GetTextWidth( rTitle );
+ if( bOutput )
+ pPrinter->DrawText( aPos, aPageStr );
+ }
+
+
+ nY = TMARGPRN-nBorder;
+
+ if( bOutput )
+ pPrinter->DrawLine( Point( nXLeft, nY ), Point( nXRight, nY ) );
+
+ pPrinter->SetFont( aOldFont );
+ pPrinter->SetFillColor( aOldFillColor );
+ pPrinter->SetLineColor( aOldLineColor );
+}
+
+void lcl_ConvertTabsToSpaces( String& rLine )
+{
+ if ( rLine.Len() )
+ {
+ USHORT nPos = 0;
+ USHORT nMax = rLine.Len();
+ while ( nPos < nMax )
+ {
+ if ( rLine.GetChar( nPos ) == '\t' )
+ {
+ // Nicht 4 Blanks, sondern an 4er TabPos:
+ String aBlanker;
+ aBlanker.Fill( ( 4 - ( nPos % 4 ) ), ' ' );
+ rLine.Erase( nPos, 1 );
+ rLine.Insert( aBlanker, nPos );
+ nMax = rLine.Len();
+ }
+ nPos++; // Nicht optimal, falls Tab, aber auch nicht verkehrt...
+ }
+ }
+}
+
+
+ModulWindow::ModulWindow( ModulWindowLayout* pParent, const ScriptDocument& rDocument, String aLibName,
+ String aName, ::rtl::OUString& aModule )
+ :IDEBaseWindow( pParent, rDocument, aLibName, aName )
+ ,aXEditorWindow( this )
+ ,m_aModule( aModule )
+{
+ DBG_CTOR( ModulWindow, 0 );
+ nValid = VALIDWINDOW;
+ pLayout = pParent;
+ aXEditorWindow.Show();
+
+ SetBackground();
+}
+
+SbModuleRef ModulWindow::XModule()
+{
+ // ModuleWindows can now be created as a result of the
+ // modules getting created via the api. This is a result of an
+ // elementInserted event from the BasicLibrary container.
+ // However the SbModule is also created from a different listener to
+ // the same event ( in basmgr ) Therefore it is possible when we look
+ // for xModule it may not yet be available, here we keep tring to access
+ // the module until such time as it exists
+
+ if ( !xModule.Is() )
+ {
+ BasicManager* pBasMgr = GetDocument().getBasicManager();
+ if ( pBasMgr )
+ {
+ StarBASIC* pBasic = pBasMgr->GetLib( GetLibName() );
+ if ( pBasic )
+ {
+ xBasic = pBasic;
+ xModule = (SbModule*)pBasic->FindModule( GetName() );
+ }
+ }
+ }
+ return xModule;
+}
+
+__EXPORT ModulWindow::~ModulWindow()
+{
+ DBG_DTOR( ModulWindow, 0 );
+ nValid = 0;
+
+ StarBASIC::Stop();
+}
+
+
+void __EXPORT ModulWindow::GetFocus()
+{
+ if ( nValid != VALIDWINDOW )
+ return;
+ DBG_CHKTHIS( ModulWindow, 0 );
+ aXEditorWindow.GetEdtWindow().GrabFocus();
+ // Basisklasse nicht rufen, weil Focus jetzt woanders...
+}
+
+void ModulWindow::DoInit()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ // Wird beim Umschalten der Fenster gerufen...
+ if ( GetVScrollBar() )
+ GetVScrollBar()->Hide();
+ GetHScrollBar()->Show();
+// GetEditorWindow().SetScrollBarRanges();
+ GetEditorWindow().InitScrollBars();
+// GetEditorWindow().GrabFocus();
+}
+
+
+void __EXPORT ModulWindow::Paint( const Rectangle& )
+{
+}
+
+void __EXPORT ModulWindow::Resize()
+{
+ aXEditorWindow.SetPosSizePixel( Point( 0, 0 ),
+ Size( GetOutputSizePixel() ) );
+}
+
+
+// "Import" von baside4.cxx
+void CreateEngineForBasic( StarBASIC* pBasic );
+
+void ModulWindow::CheckCompileBasic()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+
+ if ( XModule().Is() )
+ {
+ // Zur Laufzeit wird niemals compiliert!
+ BOOL bRunning = StarBASIC::IsRunning();
+ BOOL bModified = ( !xModule->IsCompiled() ||
+ ( GetEditEngine() && GetEditEngine()->IsModified() ) );
+
+ if ( !bRunning && bModified )
+ {
+ BOOL bDone = FALSE;
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ pIDEShell->GetViewFrame()->GetWindow().EnterWait();
+
+ if( bModified )
+ {
+ AssertValidEditEngine();
+ GetEditorWindow().SetSourceInBasic( FALSE );
+ }
+
+ BOOL bWasModified = GetBasic()->IsModified();
+
+ bDone = GetBasic()->Compile( xModule );
+ if ( !bWasModified )
+ GetBasic()->SetModified( FALSE );
+
+ if ( bDone )
+ {
+ GetBreakPoints().SetBreakPointsInBasic( xModule );
+ }
+
+ pIDEShell->GetViewFrame()->GetWindow().LeaveWait();
+
+ aStatus.bError = !bDone;
+ aStatus.bIsRunning = FALSE;
+ }
+ }
+}
+
+BOOL ModulWindow::BasicExecute()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+
+ // #116444# check security settings before macro execution
+ ScriptDocument aDocument( GetDocument() );
+ if ( aDocument.isDocument() )
+ {
+ if ( !aDocument.allowMacros() )
+ {
+ WarningBox( this, WB_OK, String( IDEResId( RID_STR_CANNOTRUNMACRO ) ) ).Execute();
+ return FALSE;
+ }
+ }
+
+ CheckCompileBasic();
+
+ if ( XModule().Is() && xModule->IsCompiled() && !aStatus.bError )
+ {
+ if ( GetBreakPoints().Count() )
+ aStatus.nBasicFlags = aStatus.nBasicFlags | SbDEBUG_BREAK;
+
+ if ( !aStatus.bIsRunning )
+ {
+ DBG_ASSERT( xModule.Is(), "Kein Modul!" );
+ AddStatus( BASWIN_RUNNINGBASIC );
+ USHORT nStart, nEnd, nCurMethodStart = 0;
+ TextSelection aSel = GetEditView()->GetSelection();
+ // Init cursor to top
+ nCurMethodStart = ( aSel.GetStart().GetPara() + 1 );
+ SbMethod* pMethod = 0;
+ // erstes Macro, sonst blind "Main" (ExtSearch?)
+ for ( USHORT nMacro = 0; nMacro < xModule->GetMethods()->Count(); nMacro++ )
+ {
+ SbMethod* pM = (SbMethod*)xModule->GetMethods()->Get( nMacro );
+ DBG_ASSERT( pM, "Method?" );
+ pM->GetLineRange( nStart, nEnd );
+ if ( nCurMethodStart >= nStart && nCurMethodStart <= nEnd )
+ {
+ // matched a method to the cursor position
+ pMethod = pM;
+ break;
+ }
+ }
+ if ( !pMethod )
+ {
+ // If not in a method then prompt the user
+ return ( BasicIDE::ChooseMacro( uno::Reference< frame::XModel >(), FALSE, rtl::OUString() ).getLength() > 0 ) ? TRUE : FALSE;
+ }
+ if ( pMethod )
+ {
+ pMethod->SetDebugFlags( aStatus.nBasicFlags );
+ BasicDLL::SetDebugMode( TRUE );
+ BasicIDE::RunMethod( pMethod );
+ BasicDLL::SetDebugMode( FALSE );
+ // Falls waehrend Interactive=FALSE abgebrochen
+ BasicDLL::EnableBreak( TRUE );
+ }
+ ClearStatus( BASWIN_RUNNINGBASIC );
+ }
+ else
+ aStatus.bIsRunning = FALSE; // Abbruch von Reschedule()
+ }
+
+ BOOL bDone = !aStatus.bError;
+
+ return bDone;
+}
+
+BOOL ModulWindow::CompileBasic()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ CheckCompileBasic();
+
+ BOOL bIsCompiled = FALSE;
+ if ( XModule().Is() )
+ bIsCompiled = xModule->IsCompiled();
+
+ return bIsCompiled;
+}
+
+BOOL ModulWindow::BasicRun()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+
+ aStatus.nBasicFlags = 0;
+ BOOL bDone = BasicExecute();
+ return bDone;
+}
+
+BOOL ModulWindow::BasicStepOver()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ aStatus.nBasicFlags = SbDEBUG_STEPINTO | SbDEBUG_STEPOVER;
+ BOOL bDone = BasicExecute();
+ return bDone;
+}
+
+
+BOOL ModulWindow::BasicStepInto()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+
+ aStatus.nBasicFlags = SbDEBUG_STEPINTO;
+ BOOL bDone = BasicExecute();
+ return bDone;
+}
+
+BOOL ModulWindow::BasicStepOut()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+
+ aStatus.nBasicFlags = SbDEBUG_STEPOUT;
+ BOOL bDone = BasicExecute();
+ return bDone;
+}
+
+
+
+void ModulWindow::BasicStop()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+
+ GetBasic()->Stop();
+ aStatus.bIsRunning = FALSE;
+}
+
+BOOL ModulWindow::LoadBasic()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ BOOL bDone = FALSE;
+
+ Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference < XFilePicker > xFP;
+ if( xMSF.is() )
+ {
+ Sequence <Any> aServiceType(1);
+ aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
+ xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
+ }
+
+ if ( aCurPath.Len() )
+ xFP->setDisplayDirectory ( aCurPath );
+
+ //xFP->setTitle( String( IDEResId( RID_STR_OPEN ) ) );
+
+ Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
+ xFltMgr->appendFilter( String( RTL_CONSTASCII_USTRINGPARAM( "BASIC" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "*.bas" ) ) );
+ xFltMgr->appendFilter( String( IDEResId( RID_STR_FILTER_ALLFILES ) ), String( RTL_CONSTASCII_USTRINGPARAM( FILTERMASK_ALL ) ) );
+ xFltMgr->setCurrentFilter( String( RTL_CONSTASCII_USTRINGPARAM( "BASIC" ) ) );
+
+ if( xFP->execute() == RET_OK )
+ {
+ Sequence< ::rtl::OUString > aPaths = xFP->getFiles();
+ aCurPath = aPaths[0];
+ SfxMedium aMedium( aCurPath, STREAM_READ | STREAM_SHARE_DENYWRITE | STREAM_NOCREATE, TRUE );
+ SvStream* pStream = aMedium.GetInStream();
+ if ( pStream )
+ {
+ AssertValidEditEngine();
+ ULONG nLines = CalcLineCount( *pStream );
+ // nLines*4: ReadText/Formatting/Highlighting/Formatting
+ GetEditorWindow().CreateProgress( String( IDEResId( RID_STR_GENERATESOURCE ) ), nLines*4 );
+ GetEditEngine()->SetUpdateMode( FALSE );
+ GetEditView()->Read( *pStream );
+ GetEditEngine()->SetUpdateMode( TRUE );
+ GetEditorWindow().Update(); // Es wurde bei UpdateMode = TRUE nur Invalidiert
+ GetEditorWindow().ForceSyntaxTimeout();
+ GetEditorWindow().DestroyProgress();
+ ULONG nError = aMedium.GetError();
+ if ( nError )
+ ErrorHandler::HandleError( nError );
+ else
+ bDone = TRUE;
+ }
+ else
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_COULDNTREAD ) ) ).Execute();
+ }
+ return bDone;
+}
+
+
+BOOL ModulWindow::SaveBasicSource()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ BOOL bDone = FALSE;
+
+ Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference < XFilePicker > xFP;
+ if( xMSF.is() )
+ {
+ Sequence <Any> aServiceType(1);
+ aServiceType[0] <<= TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD;
+ xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
+ }
+
+ Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
+ xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, sal_False);
+ Any aValue;
+ aValue <<= (sal_Bool) sal_True;
+ xFPControl->setValue(ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue);
+
+ if ( aCurPath.Len() )
+ xFP->setDisplayDirectory ( aCurPath );
+
+ //xFP->setTitle( String( IDEResId( RID_STR_SAVE ) ) );
+
+ Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
+ xFltMgr->appendFilter( String( RTL_CONSTASCII_USTRINGPARAM( "BASIC" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "*.bas" ) ) );
+ xFltMgr->appendFilter( String( IDEResId( RID_STR_FILTER_ALLFILES ) ), String( RTL_CONSTASCII_USTRINGPARAM( FILTERMASK_ALL ) ) );
+ xFltMgr->setCurrentFilter( String( RTL_CONSTASCII_USTRINGPARAM( "BASIC" ) ) );
+
+ if( xFP->execute() == RET_OK )
+ {
+ Sequence< ::rtl::OUString > aPaths = xFP->getFiles();
+ aCurPath = aPaths[0];
+ SfxMedium aMedium( aCurPath, STREAM_WRITE | STREAM_SHARE_DENYWRITE | STREAM_TRUNC, TRUE, FALSE );
+ SvStream* pStream = aMedium.GetOutStream();
+ if ( pStream )
+ {
+ EnterWait();
+ AssertValidEditEngine();
+ GetEditEngine()->Write( *pStream );
+ aMedium.Commit();
+ LeaveWait();
+ ULONG nError = aMedium.GetError();
+ if ( nError )
+ ErrorHandler::HandleError( nError );
+ else
+ bDone = TRUE;
+ }
+ else
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_COULDNTWRITE) ) ).Execute();
+ }
+
+ return bDone;
+}
+
+BOOL implImportDialog( Window* pWin, const String& rCurPath, const ScriptDocument& rDocument, const String& aLibName );
+
+BOOL ModulWindow::ImportDialog()
+{
+ const ScriptDocument& rDocument = GetDocument();
+ String aLibName = GetLibName();
+ BOOL bRet = implImportDialog( this, aCurPath, rDocument, aLibName );
+ return bRet;
+}
+
+BOOL ModulWindow::ToggleBreakPoint( ULONG nLine )
+{
+ DBG_ASSERT( XModule().Is(), "Kein Modul!" );
+
+ BOOL bNewBreakPoint = FALSE;
+
+ if ( XModule().Is() )
+ {
+ CheckCompileBasic();
+ if ( aStatus.bError )
+ {
+ Sound::Beep();
+ return FALSE;
+ }
+
+ BreakPoint* pBrk = GetBreakPoints().FindBreakPoint( nLine );
+ if ( pBrk ) // entfernen
+ {
+ xModule->ClearBP( (USHORT)nLine );
+ delete GetBreakPoints().Remove( pBrk );
+ }
+ else // einen erzeugen
+ {
+ if ( xModule->SetBP( (USHORT)nLine) )
+ {
+ GetBreakPoints().InsertSorted( new BreakPoint( nLine ) );
+ bNewBreakPoint = TRUE;
+ if ( StarBASIC::IsRunning() )
+ {
+ for ( USHORT nMethod = 0; nMethod < xModule->GetMethods()->Count(); nMethod++ )
+ {
+ SbMethod* pMethod = (SbMethod*)xModule->GetMethods()->Get( nMethod );
+ DBG_ASSERT( pMethod, "Methode nicht gefunden! (NULL)" );
+ pMethod->SetDebugFlags( pMethod->GetDebugFlags() | SbDEBUG_BREAK );
+ }
+ }
+ }
+
+ if ( !bNewBreakPoint )
+ Sound::Beep();
+ }
+ }
+
+ return bNewBreakPoint;
+}
+
+void ModulWindow::UpdateBreakPoint( const BreakPoint& rBrk )
+{
+ DBG_ASSERT( XModule().Is(), "Kein Modul!" );
+
+ if ( XModule().Is() )
+ {
+ CheckCompileBasic();
+
+ if ( rBrk.bEnabled )
+ xModule->SetBP( (USHORT)rBrk.nLine );
+ else
+ xModule->ClearBP( (USHORT)rBrk.nLine );
+ }
+}
+
+
+BOOL ModulWindow::BasicToggleBreakPoint()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ AssertValidEditEngine();
+
+ TextSelection aSel = GetEditView()->GetSelection();
+ aSel.GetStart().GetPara()++; // Basic-Zeilen beginnen bei 1!
+ aSel.GetEnd().GetPara()++;
+
+ BOOL bNewBreakPoint = FALSE;
+
+ for ( ULONG nLine = aSel.GetStart().GetPara(); nLine <= aSel.GetEnd().GetPara(); nLine++ )
+ {
+ if ( ToggleBreakPoint( nLine ) )
+ bNewBreakPoint = TRUE;
+ }
+
+ aXEditorWindow.GetBrkWindow().Invalidate();
+ return bNewBreakPoint;
+}
+
+
+void ModulWindow::BasicToggleBreakPointEnabled()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ AssertValidEditEngine();
+
+ ExtTextView* pView = GetEditView();
+ if ( pView )
+ {
+ TextSelection aSel = pView->GetSelection();
+ BreakPointList& rList = GetBreakPoints();
+
+ for ( ULONG nLine = ++aSel.GetStart().GetPara(), nEnd = ++aSel.GetEnd().GetPara(); nLine <= nEnd; ++nLine )
+ {
+ BreakPoint* pBrk = rList.FindBreakPoint( nLine );
+ if ( pBrk )
+ {
+ pBrk->bEnabled = pBrk->bEnabled ? FALSE : TRUE;
+ UpdateBreakPoint( *pBrk );
+ }
+ }
+
+ GetBreakPointWindow().Invalidate();
+ }
+}
+
+
+void ModulWindow::ManageBreakPoints()
+{
+ BreakPointWindow& rBrkWin = GetBreakPointWindow();
+ BreakPointDialog aBrkDlg( &rBrkWin, GetBreakPoints() );
+ aBrkDlg.Execute();
+ rBrkWin.Invalidate();
+}
+
+
+IMPL_LINK( ModulWindow, BasicErrorHdl, StarBASIC *, pBasic )
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ GoOnTop();
+
+ // ReturnWert: BOOL
+ // FALSE: Abbrechen
+ // TRUE: Weiter....
+ String aErrorText( pBasic->GetErrorText() );
+ USHORT nErrorLine = pBasic->GetLine() - 1;
+ USHORT nErrCol1 = pBasic->GetCol1();
+ USHORT nErrCol2 = pBasic->GetCol2();
+ if ( nErrCol2 != 0xFFFF )
+ nErrCol2++;
+
+ AssertValidEditEngine();
+ GetEditView()->SetSelection( TextSelection( TextPaM( nErrorLine, nErrCol1 ), TextPaM( nErrorLine, nErrCol2 ) ) );
+
+ String aErrorTextPrefix;
+ if( pBasic->IsCompilerError() )
+ {
+ aErrorTextPrefix = String( IDEResId( RID_STR_COMPILEERROR ) );
+ }
+ else
+ {
+ aErrorTextPrefix = String( IDEResId( RID_STR_RUNTIMEERROR ) );
+ aErrorTextPrefix += StarBASIC::GetVBErrorCode( pBasic->GetErrorCode() );
+ aErrorTextPrefix += ' ';
+ pLayout->GetStackWindow().UpdateCalls();
+ }
+ // Wenn anderes Basic, dan sollte die IDE versuchen, da richtige
+ // Modul anzuzeigen...
+ BOOL bMarkError = ( pBasic == GetBasic() ) ? TRUE : FALSE;
+ if ( bMarkError )
+ aXEditorWindow.GetBrkWindow().SetMarkerPos( nErrorLine, TRUE );
+// ErrorBox( this, WB_OK | WB_DEF_OK, String( aErrorTextPrefix + aErrorText ) ).Execute();
+// ErrorHandler::HandleError( pBasic->GetErrorCode() );
+
+ // #i47002#
+ Reference< awt::XWindow > xWindow = VCLUnoHelper::GetInterface( this );
+
+ ErrorHandler::HandleError( StarBASIC::GetErrorCode() );
+
+ // #i47002#
+ Window* pWindow = VCLUnoHelper::GetWindow( xWindow );
+ if ( !pWindow )
+ return FALSE;
+
+ if ( bMarkError )
+ aXEditorWindow.GetBrkWindow().SetMarkerPos( MARKER_NOMARKER );
+ return FALSE;
+}
+
+long __EXPORT ModulWindow::BasicBreakHdl( StarBASIC* pBasic )
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ // Ein GoOnTop aktiviert da Fenster, das veraendert aber den Context fuer
+ // das Programm!
+// GoOnTop();
+
+ // #i69280 Required in Window despite normal usage in next command!
+ (void)pBasic;
+
+ // ReturnWert: USHORT => siehe SB-Debug-Flags
+ USHORT nErrorLine = pBasic->GetLine();
+
+ // Gibt es hier einen BreakPoint?
+ BreakPoint* pBrk = GetBreakPoints().FindBreakPoint( nErrorLine );
+ if ( pBrk )
+ {
+ pBrk->nHitCount++;
+ if ( pBrk->nHitCount < pBrk->nStopAfter && GetBasic()->IsBreak() )
+ return aStatus.nBasicFlags; // weiterlaufen...
+ }
+
+ nErrorLine--; // EditEngine begint bei 0, Basic bei 1
+ // Alleine schon damit gescrollt wird...
+ AssertValidEditEngine();
+ GetEditView()->SetSelection( TextSelection( TextPaM( nErrorLine, 0 ), TextPaM( nErrorLine, 0 ) ) );
+ aXEditorWindow.GetBrkWindow().SetMarkerPos( nErrorLine );
+
+ pLayout->GetWatchWindow().UpdateWatches();
+ pLayout->GetStackWindow().UpdateCalls();
+
+ aStatus.bIsInReschedule = TRUE;
+ aStatus.bIsRunning = TRUE;
+
+ AddStatus( BASWIN_INRESCHEDULE );
+
+ BasicIDE::InvalidateDebuggerSlots();
+
+ while( aStatus.bIsRunning )
+ Application::Yield();
+
+ aStatus.bIsInReschedule = FALSE;
+ aXEditorWindow.GetBrkWindow().SetMarkerPos( MARKER_NOMARKER );
+
+ ClearStatus( BASWIN_INRESCHEDULE );
+
+ return aStatus.nBasicFlags;
+}
+
+void ModulWindow::BasicAddWatch()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ String aWatchStr;
+ BOOL bInserted = FALSE;
+ AssertValidEditEngine();
+ BOOL bAdd = TRUE;
+ if ( !GetEditView()->HasSelection() )
+ {
+// bAdd = GetEditView()->SelectCurrentWord();
+ TextPaM aWordStart;
+ String aWord = GetEditEngine()->GetWord( GetEditView()->GetSelection().GetEnd(), &aWordStart );
+ if ( aWord.Len() )
+ {
+ TextSelection aSel( aWordStart );
+ USHORT& rIndex = aSel.GetEnd().GetIndex();
+ rIndex = rIndex + aWord.Len();
+ // aSel.GetEnd().GetIndex() += sal::static_int_cast<int>( aWord.Len() );
+ GetEditView()->SetSelection( aSel );
+ bAdd = TRUE;
+ }
+ }
+ if ( bAdd )
+ {
+ TextSelection aSel = GetEditView()->GetSelection();
+ if ( aSel.GetStart().GetPara() == aSel.GetEnd().GetPara() )
+ {
+ aWatchStr = GetEditView()->GetSelected();
+ pLayout->GetWatchWindow().AddWatch( aWatchStr );
+ pLayout->GetWatchWindow().UpdateWatches();
+ bInserted = TRUE;
+ }
+ }
+
+ if ( !bInserted )
+ Sound::Beep();
+}
+
+
+
+void ModulWindow::BasicRemoveWatch()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ BOOL bRemoved = pLayout->GetWatchWindow().RemoveSelectedWatch();
+
+ if ( !bRemoved )
+ Sound::Beep();
+}
+
+
+void ModulWindow::EditMacro( const String& rMacroName )
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ DBG_ASSERT( XModule().Is(), "Kein Modul!" );
+
+ if ( XModule().Is() )
+ {
+ CheckCompileBasic();
+
+ if ( !aStatus.bError )
+ {
+ USHORT nStart, nEnd;
+ SbMethod* pMethod = (SbMethod*)xModule->Find( rMacroName, SbxCLASS_METHOD );
+ if ( pMethod )
+ {
+ pMethod->GetLineRange( nStart, nEnd );
+ if ( nStart )
+ {
+ // Basic beginnt bei 1
+ nStart--;
+ nEnd--;
+ }
+ TextSelection aSel( TextPaM( nStart, 0 ), TextPaM( nStart, 0 ) );
+ AssertValidEditEngine();
+ TextView * pView = GetEditView();
+ // ggf. hinscrollen, so dass erste Zeile oben...
+ long nVisHeight = GetOutputSizePixel().Height();
+ if ( (long)pView->GetTextEngine()->GetTextHeight() > nVisHeight )
+ {
+ long nMaxY = pView->GetTextEngine()->GetTextHeight() - nVisHeight;
+ long nOldStartY = pView->GetStartDocPos().Y();
+ long nNewStartY = nStart * pView->GetTextEngine()->GetCharHeight();
+ nNewStartY = Min( nNewStartY, nMaxY );
+ pView->Scroll( 0, -(nNewStartY-nOldStartY) );
+ pView->ShowCursor( FALSE, TRUE );
+ GetEditVScrollBar().SetThumbPos( pView->GetStartDocPos().Y() );
+ }
+ pView->SetSelection( aSel );
+ pView->ShowCursor();
+ pView->GetWindow()->GrabFocus();
+ }
+ }
+ }
+}
+
+
+void __EXPORT ModulWindow::StoreData()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ // StoreData wird gerufen, wenn der BasicManager zerstoert oder
+ // dieses Fenster beendet wird.
+ // => Keine Unterbrechungen erwuenscht!
+ // Und bei SAVE, wenn AppBasic...
+ GetEditorWindow().SetSourceInBasic( TRUE );
+ // Nicht das Modify loeschen, sonst wird das Basic nicht gespeichert
+ // Es wird beim Speichern sowieso geloescht.
+// xModule->SetModified( FALSE );
+}
+
+BOOL __EXPORT ModulWindow::CanClose()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ return TRUE;
+}
+
+
+BOOL __EXPORT ModulWindow::AllowUndo()
+{
+ return GetEditorWindow().CanModify();
+}
+
+
+void __EXPORT ModulWindow::UpdateData()
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ DBG_ASSERT( XModule().Is(), "Kein Modul!" );
+ // UpdateData wird gerufen, wenn sich der Source von aussen
+ // geaendert hat.
+ // => Keine Unterbrechungen erwuenscht!
+
+ if ( XModule().Is() )
+ {
+ SetModule( xModule->GetSource32() );
+
+ if ( GetEditView() )
+ {
+ TextSelection aSel = GetEditView()->GetSelection();
+ setTextEngineText( GetEditEngine(), xModule->GetSource32() );
+ GetEditView()->SetSelection( aSel );
+ GetEditEngine()->SetModified( FALSE );
+ BasicIDE::MarkDocumentModified( GetDocument() );
+ }
+ }
+}
+
+sal_Int32 ModulWindow::countPages( Printer* pPrinter )
+{
+ return FormatAndPrint( pPrinter, -1 );
+}
+
+void ModulWindow::printPage( sal_Int32 nPage, Printer* pPrinter )
+{
+ FormatAndPrint( pPrinter, nPage );
+}
+
+/* implementation note: this is totally inefficient for the XRenderable interface
+ usage since the whole "document" will be format for every page. Should this ever
+ become a problem we should
+ - format only once for every new printer
+ - keep an index list for each page which is the starting paragraph
+*/
+sal_Int32 ModulWindow::FormatAndPrint( Printer* pPrinter, sal_Int32 nPrintPage )
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+
+ AssertValidEditEngine();
+
+ MapMode eOldMapMode( pPrinter->GetMapMode() );
+ Font aOldFont( pPrinter->GetFont() );
+
+// Font aFont( GetEditEngine()->CreateFontFromItemSet( GetEditEngine()->GetEmptyItemSet() ) );
+ Font aFont( GetEditEngine()->GetFont() );
+ aFont.SetAlign( ALIGN_BOTTOM );
+ aFont.SetTransparent( TRUE );
+ aFont.SetSize( Size( 0, 360 ) );
+ pPrinter->SetFont( aFont );
+ pPrinter->SetMapMode( MAP_100TH_MM );
+
+ String aTitle( CreateQualifiedName() );
+
+ USHORT nLineHeight = (USHORT) pPrinter->GetTextHeight(); // etwas mehr.
+ USHORT nParaSpace = 10;
+
+ Size aPaperSz = pPrinter->GetOutputSize();
+ aPaperSz.Width() -= (LMARGPRN+RMARGPRN);
+ aPaperSz.Height() -= (TMARGPRN+BMARGPRN);
+
+ // nLinepPage stimmt nicht, wenn Zeilen umgebrochen werden muessen...
+ USHORT nLinespPage = (USHORT) (aPaperSz.Height()/nLineHeight);
+ USHORT nCharspLine = (USHORT) (aPaperSz.Width() / pPrinter->GetTextWidth( 'X' ) );
+ ULONG nParas = GetEditEngine()->GetParagraphCount();
+
+ USHORT nPages = (USHORT) (nParas/nLinespPage+1 );
+ USHORT nCurPage = 1;
+
+ // Header drucken...
+ lcl_PrintHeader( pPrinter, nPages, nCurPage, aTitle, nPrintPage == 0 );
+ Point aPos( LMARGPRN, TMARGPRN );
+ for ( ULONG nPara = 0; nPara < nParas; nPara++ )
+ {
+ String aLine( GetEditEngine()->GetText( nPara ) );
+ lcl_ConvertTabsToSpaces( aLine );
+ USHORT nLines = aLine.Len()/nCharspLine+1;
+ for ( USHORT nLine = 0; nLine < nLines; nLine++ )
+ {
+ String aTmpLine( aLine, nLine*nCharspLine, nCharspLine );
+ aPos.Y() += nLineHeight;
+ if ( aPos.Y() > ( aPaperSz.Height()+TMARGPRN ) )
+ {
+ nCurPage++;
+ lcl_PrintHeader( pPrinter, nPages, nCurPage, aTitle, nCurPage-1 == nPrintPage );
+ aPos = Point( LMARGPRN, TMARGPRN+nLineHeight );
+ }
+ if( nCurPage-1 == nPrintPage )
+ pPrinter->DrawText( aPos, aTmpLine );
+ }
+ aPos.Y() += nParaSpace;
+ }
+
+ pPrinter->SetFont( aOldFont );
+ pPrinter->SetMapMode( eOldMapMode );
+
+ return sal_Int32(nCurPage);
+}
+
+
+void __EXPORT ModulWindow::ExecuteCommand( SfxRequest& rReq )
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ AssertValidEditEngine();
+ USHORT nSlot = rReq.GetSlot();
+ switch ( nSlot )
+ {
+ case SID_BASICRUN:
+ {
+ BasicRun();
+ }
+ break;
+ case SID_BASICCOMPILE:
+ {
+ CompileBasic();
+ }
+ break;
+ case SID_BASICSTEPOVER:
+ {
+ BasicStepOver();
+ }
+ break;
+ case SID_BASICSTEPINTO:
+ {
+ BasicStepInto();
+ }
+ break;
+ case SID_BASICSTEPOUT:
+ {
+ BasicStepOut();
+ }
+ break;
+ case SID_BASICLOAD:
+ {
+ LoadBasic();
+ }
+ break;
+ case SID_BASICSAVEAS:
+ {
+ SaveBasicSource();
+ }
+ break;
+ case SID_IMPORT_DIALOG:
+ {
+ ImportDialog();
+ }
+ break;
+ case SID_BASICIDE_MATCHGROUP:
+ {
+ if ( !GetEditView()->MatchGroup() )
+ Sound::Beep();
+ }
+ break;
+ case SID_BASICIDE_TOGGLEBRKPNT:
+ {
+ BasicToggleBreakPoint();
+ }
+ break;
+ case SID_BASICIDE_MANAGEBRKPNTS:
+ {
+ ManageBreakPoints();
+ }
+ break;
+ case SID_BASICIDE_TOGGLEBRKPNTENABLED:
+ {
+ BasicToggleBreakPointEnabled();
+ }
+ break;
+ case SID_BASICIDE_ADDWATCH:
+ {
+ BasicAddWatch();
+ }
+ break;
+ case SID_BASICIDE_REMOVEWATCH:
+ {
+ BasicRemoveWatch();
+ }
+ break;
+ case SID_CUT:
+ {
+ if ( !IsReadOnly() )
+ {
+ GetEditView()->Cut();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ }
+ }
+ break;
+ case SID_COPY:
+ {
+ GetEditView()->Copy();
+ }
+ break;
+ case SID_PASTE:
+ {
+ if ( !IsReadOnly() )
+ {
+ GetEditView()->Paste();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ }
+ }
+ break;
+ case SID_BASICIDE_BRKPNTSCHANGED:
+ {
+ GetBreakPointWindow().Invalidate();
+ }
+ break;
+ }
+}
+
+
+
+void __EXPORT ModulWindow::GetState( SfxItemSet &rSet )
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ SfxWhichIter aIter(rSet);
+ for ( USHORT nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich() )
+ {
+ switch ( nWh )
+ {
+ // allgemeine Items:
+ case SID_CUT:
+ {
+ if ( !GetEditView() || !GetEditView()->HasSelection() )
+ rSet.DisableItem( nWh );
+
+ if ( IsReadOnly() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_COPY:
+ {
+ if ( !GetEditView() || !GetEditView()->HasSelection() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_PASTE:
+ {
+ if ( !IsPasteAllowed() )
+ rSet.DisableItem( nWh );
+
+ if ( IsReadOnly() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_BASICIDE_STAT_POS:
+ {
+ TextView* pView = GetEditView();
+ if ( pView )
+ {
+ TextSelection aSel = pView->GetSelection();
+ String aPos( IDEResId( RID_STR_LINE ) );
+ aPos += ' ';
+ aPos += String::CreateFromInt32( aSel.GetEnd().GetPara()+1 );
+ aPos += String( RTL_CONSTASCII_USTRINGPARAM( ", " ) );
+ aPos += String( IDEResId( RID_STR_COLUMN ) );
+ aPos += ' ';
+ aPos += String::CreateFromInt32( aSel.GetEnd().GetIndex()+1 );
+ SfxStringItem aItem( SID_BASICIDE_STAT_POS, aPos );
+ rSet.Put( aItem );
+ }
+ }
+ break;
+ case SID_ATTR_INSERT:
+ {
+ TextView* pView = GetEditView();
+ if ( pView )
+ {
+ SfxBoolItem aItem( SID_ATTR_INSERT, pView->IsInsertMode() );
+ rSet.Put( aItem );
+ }
+ }
+ break;
+ }
+ }
+}
+
+
+void __EXPORT ModulWindow::DoScroll( ScrollBar* pCurScrollBar )
+{
+ DBG_CHKTHIS( ModulWindow, 0 );
+ if ( ( pCurScrollBar == GetHScrollBar() ) && GetEditView() )
+ {
+ // Nicht mit dem Wert Scrollen, sondern lieber die Thumb-Pos fuer die
+ // VisArea verwenden:
+ long nDiff = GetEditView()->GetStartDocPos().X() - pCurScrollBar->GetThumbPos();
+ GetEditView()->Scroll( nDiff, 0 );
+ GetEditView()->ShowCursor( FALSE, TRUE );
+ pCurScrollBar->SetThumbPos( GetEditView()->GetStartDocPos().X() );
+
+ }
+}
+
+
+BOOL __EXPORT ModulWindow::IsModified()
+{
+ return GetEditEngine() ? GetEditEngine()->IsModified() : FALSE;
+}
+
+
+
+void __EXPORT ModulWindow::GoOnTop()
+{
+ IDE_DLL()->GetShell()->GetViewFrame()->ToTop();
+}
+
+String ModulWindow::GetSbModuleName()
+{
+ String aModuleName;
+ if ( XModule().Is() )
+ aModuleName = xModule->GetName();
+ return aModuleName;
+}
+
+
+
+String __EXPORT ModulWindow::GetTitle()
+{
+ return GetSbModuleName();
+}
+
+
+
+void ModulWindow::FrameWindowMoved()
+{
+// if ( GetEditEngine() && GetEditEngine()->IsInSelectionMode() )
+// GetEditEngine()->StopSelectionMode();
+}
+
+
+
+void ModulWindow::ShowCursor( BOOL bOn )
+{
+ if ( GetEditEngine() )
+ {
+ TextView* pView = GetEditEngine()->GetActiveView();
+ if ( pView )
+ {
+ if ( bOn )
+ pView->ShowCursor();
+ else
+ pView->HideCursor();
+ }
+ }
+}
+
+
+Window* __EXPORT ModulWindow::GetLayoutWindow()
+{
+ return pLayout;
+}
+
+void ModulWindow::AssertValidEditEngine()
+{
+ if ( !GetEditEngine() )
+ GetEditorWindow().CreateEditEngine();
+}
+
+void ModulWindow::Deactivating()
+{
+ if ( GetEditView() )
+ GetEditView()->EraseVirtualDevice();
+}
+
+USHORT ModulWindow::StartSearchAndReplace( const SvxSearchItem& rSearchItem, BOOL bFromStart )
+{
+ // Mann koennte fuer das blinde Alle-Ersetzen auch auf
+ // Syntaxhighlighting/Formatierung verzichten...
+ AssertValidEditEngine();
+ ExtTextView* pView = GetEditView();
+ TextSelection aSel;
+ if ( bFromStart )
+ {
+ aSel = pView->GetSelection();
+ if ( !rSearchItem.GetBackward() )
+ pView->SetSelection( TextSelection() );
+ else
+ pView->SetSelection( TextSelection( TextPaM( 0xFFFFFFFF, 0xFFFF ), TextPaM( 0xFFFFFFFF, 0xFFFF ) ) );
+ }
+
+ BOOL bForward = !rSearchItem.GetBackward();
+ USHORT nFound = 0;
+ if ( ( rSearchItem.GetCommand() == SVX_SEARCHCMD_FIND ) ||
+ ( rSearchItem.GetCommand() == SVX_SEARCHCMD_FIND_ALL ) )
+ {
+ nFound = pView->Search( rSearchItem.GetSearchOptions() , bForward );
+ }
+ else if ( ( rSearchItem.GetCommand() == SVX_SEARCHCMD_REPLACE ) ||
+ ( rSearchItem.GetCommand() == SVX_SEARCHCMD_REPLACE_ALL ) )
+ {
+ if ( !IsReadOnly() )
+ {
+ BOOL bAll = rSearchItem.GetCommand() == SVX_SEARCHCMD_REPLACE_ALL;
+ nFound = pView->Replace( rSearchItem.GetSearchOptions() , bAll , bForward );
+ }
+ }
+
+ if ( bFromStart && !nFound )
+ pView->SetSelection( aSel );
+
+ return nFound;
+}
+
+SfxUndoManager* __EXPORT ModulWindow::GetUndoManager()
+{
+ if ( GetEditEngine() )
+ return &GetEditEngine()->GetUndoManager();
+ return NULL;
+}
+
+USHORT __EXPORT ModulWindow::GetSearchOptions()
+{
+ USHORT nOptions = SEARCH_OPTIONS_SEARCH |
+ SEARCH_OPTIONS_WHOLE_WORDS |
+ SEARCH_OPTIONS_BACKWARDS |
+ SEARCH_OPTIONS_REG_EXP |
+ SEARCH_OPTIONS_EXACT |
+ SEARCH_OPTIONS_SELECTION |
+ SEARCH_OPTIONS_SIMILARITY;
+
+ if ( !IsReadOnly() )
+ {
+ nOptions |= SEARCH_OPTIONS_REPLACE;
+ nOptions |= SEARCH_OPTIONS_REPLACE_ALL;
+ }
+
+ return nOptions;
+}
+
+void __EXPORT ModulWindow::BasicStarted()
+{
+ if ( XModule().Is() )
+ {
+ aStatus.bIsRunning = TRUE;
+ BreakPointList& rList = GetBreakPoints();
+ if ( rList.Count() )
+ {
+ rList.ResetHitCount();
+ rList.SetBreakPointsInBasic( xModule );
+ for ( USHORT nMethod = 0; nMethod < xModule->GetMethods()->Count(); nMethod++ )
+ {
+ SbMethod* pMethod = (SbMethod*)xModule->GetMethods()->Get( nMethod );
+ DBG_ASSERT( pMethod, "Methode nicht gefunden! (NULL)" );
+ pMethod->SetDebugFlags( pMethod->GetDebugFlags() | SbDEBUG_BREAK );
+ }
+ }
+ }
+}
+
+void __EXPORT ModulWindow::BasicStopped()
+{
+ aStatus.bIsRunning = FALSE;
+ GetBreakPointWindow().SetMarkerPos( MARKER_NOMARKER );
+}
+
+BasicEntryDescriptor ModulWindow::CreateEntryDescriptor()
+{
+ ScriptDocument aDocument( GetDocument() );
+ String aLibName( GetLibName() );
+ LibraryLocation eLocation = aDocument.getLibraryLocation( aLibName );
+ String aModName( GetName() );
+ String aLibSubName;
+ if( xBasic.Is() && aDocument.isInVBAMode() && XModule().Is() )
+ {
+ switch( xModule->GetModuleType() )
+ {
+ case script::ModuleType::DOCUMENT:
+ {
+ aLibSubName = String( IDEResId( RID_STR_DOCUMENT_OBJECTS ) );
+ uno::Reference< container::XNameContainer > xLib = aDocument.getOrCreateLibrary( E_SCRIPTS, aLibName );
+ if( xLib.is() )
+ {
+ String sObjName;
+ ModuleInfoHelper::getObjectName( xLib, aModName, sObjName );
+ if( sObjName.Len() )
+ {
+ aModName.AppendAscii(" (").Append(sObjName).AppendAscii(")");
+ }
+ }
+ break;
+ }
+ case script::ModuleType::FORM:
+ aLibSubName = String( IDEResId( RID_STR_USERFORMS ) );
+ break;
+ case script::ModuleType::NORMAL:
+ aLibSubName = String( IDEResId( RID_STR_NORMAL_MODULES ) );
+ break;
+ case script::ModuleType::CLASS:
+ aLibSubName = String( IDEResId( RID_STR_CLASS_MODULES ) );
+ break;
+ }
+ }
+ return BasicEntryDescriptor( aDocument, eLocation, aLibName, aLibSubName, aModName, OBJ_TYPE_MODULE );
+}
+
+void ModulWindow::SetReadOnly( BOOL b )
+{
+ if ( GetEditView() )
+ GetEditView()->SetReadOnly( b );
+}
+
+BOOL ModulWindow::IsReadOnly()
+{
+ BOOL bReadOnly = FALSE;
+
+ if ( GetEditView() )
+ bReadOnly = GetEditView()->IsReadOnly();
+
+ return bReadOnly;
+}
+
+BOOL ModulWindow::IsPasteAllowed()
+{
+ BOOL bPaste = FALSE;
+
+ // get clipboard
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = GetClipboard();
+ if ( xClipboard.is() )
+ {
+ // get clipboard content
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ Reference< datatransfer::XTransferable > xTransf = xClipboard->getContents();
+ Application::AcquireSolarMutex( nRef );
+ if ( xTransf.is() )
+ {
+ datatransfer::DataFlavor aFlavor;
+ SotExchange::GetFormatDataFlavor( SOT_FORMAT_STRING, aFlavor );
+ if ( xTransf->isDataFlavorSupported( aFlavor ) )
+ {
+ bPaste = TRUE;
+ }
+ }
+ }
+
+ return bPaste;
+}
+
+ModulWindowLayout::ModulWindowLayout( Window* pParent ) :
+ Window( pParent, WB_CLIPCHILDREN ),
+ aVSplitter( this, WinBits( WB_VSCROLL ) ),
+ aHSplitter( this, WinBits( WB_HSCROLL ) ),
+ aWatchWindow( this ),
+ aStackWindow( this ),
+ bVSplitted(FALSE),
+ bHSplitted(FALSE),
+ m_pModulWindow(0),
+ m_aImagesNormal(IDEResId(RID_IMGLST_LAYOUT)),
+ m_aImagesHighContrast(IDEResId(RID_IMGLST_LAYOUT_HC))
+{
+ SetBackground(GetSettings().GetStyleSettings().GetWindowColor());
+
+ aVSplitter.SetSplitHdl( LINK( this, ModulWindowLayout, SplitHdl ) );
+ aHSplitter.SetSplitHdl( LINK( this, ModulWindowLayout, SplitHdl ) );
+ aVSplitter.Show();
+ aHSplitter.Show();
+
+ aWatchWindow.Show();
+ aStackWindow.Show();
+
+ Color aColor(GetSettings().GetStyleSettings().GetFieldTextColor());
+ m_aSyntaxColors[TT_UNKNOWN] = aColor;
+ m_aSyntaxColors[TT_WHITESPACE] = aColor;
+ m_aSyntaxColors[TT_EOL] = aColor;
+ m_aColorConfig.AddListener(this);
+ m_aSyntaxColors[TT_IDENTIFIER]
+ = Color(m_aColorConfig.GetColorValue(svtools::BASICIDENTIFIER).nColor);
+ m_aSyntaxColors[TT_NUMBER]
+ = Color(m_aColorConfig.GetColorValue(svtools::BASICNUMBER).nColor);
+ m_aSyntaxColors[TT_STRING]
+ = Color(m_aColorConfig.GetColorValue(svtools::BASICSTRING).nColor);
+ m_aSyntaxColors[TT_COMMENT]
+ = Color(m_aColorConfig.GetColorValue(svtools::BASICCOMMENT).nColor);
+ m_aSyntaxColors[TT_ERROR]
+ = Color(m_aColorConfig.GetColorValue(svtools::BASICERROR).nColor);
+ m_aSyntaxColors[TT_OPERATOR]
+ = Color(m_aColorConfig.GetColorValue(svtools::BASICOPERATOR).nColor);
+ m_aSyntaxColors[TT_KEYWORDS]
+ = Color(m_aColorConfig.GetColorValue(svtools::BASICKEYWORD).nColor);
+
+ Font aFont( GetFont() );
+ Size aSz( aFont.GetSize() );
+ aSz.Height() *= 3;
+ aSz.Height() /= 2;
+ aFont.SetSize( aSz );
+ aFont.SetWeight( WEIGHT_BOLD );
+ aFont.SetColor(GetSettings().GetStyleSettings().GetWindowTextColor());
+ SetFont( aFont );
+}
+
+ModulWindowLayout::~ModulWindowLayout()
+{
+ m_aColorConfig.RemoveListener(this);
+}
+
+void __EXPORT ModulWindowLayout::Resize()
+{
+ // ScrollBars, etc. passiert in BasicIDEShell:Adjust...
+ ArrangeWindows();
+// Invalidate();
+}
+
+void __EXPORT ModulWindowLayout::Paint( const Rectangle& )
+{
+ DrawText( Point(), String( IDEResId( RID_STR_NOMODULE ) ) );
+}
+
+
+void ModulWindowLayout::ArrangeWindows()
+{
+ Size aSz = GetOutputSizePixel();
+
+ // prueffen, ob der Splitter in einem gueltigen Bereich liegt...
+ long nMinPos = SPLIT_MARGIN;
+ long nMaxPos = aSz.Height() - SPLIT_MARGIN;
+
+ long nVSplitPos = aVSplitter.GetSplitPosPixel();
+ long nHSplitPos = aHSplitter.GetSplitPosPixel();
+ if ( !bVSplitted )
+ {
+ // Wenn noch nie gesplitted wurde, Verhaeltniss = 3 : 4
+ nVSplitPos = aSz.Height() * 3 / 4;
+ aVSplitter.SetSplitPosPixel( nVSplitPos );
+ }
+ if ( !bHSplitted )
+ {
+ // Wenn noch nie gesplitted wurde, Verhaeltniss = 2 : 3
+ nHSplitPos = aSz.Width() * 2 / 3;
+ aHSplitter.SetSplitPosPixel( nHSplitPos );
+ }
+ if ( ( nVSplitPos < nMinPos ) || ( nVSplitPos > nMaxPos ) )
+ nVSplitPos = ( nVSplitPos < nMinPos ) ? 0 : ( aSz.Height() - SPLIT_HEIGHT );
+
+ Size aXEWSz;
+ aXEWSz.Width() = aSz.Width();
+ aXEWSz.Height() = nVSplitPos + 1;
+ if ( m_pModulWindow )
+ {
+ DBG_CHKOBJ( m_pModulWindow, ModulWindow, 0 );
+ m_pModulWindow->SetPosSizePixel( Point( 0, 0 ), aXEWSz );
+ }
+
+ aVSplitter.SetDragRectPixel( Rectangle( Point( 0, 0 ), Size( aSz.Width(), aSz.Height() ) ) );
+ aVSplitter.SetPosPixel( Point( 0, nVSplitPos ) );
+ aVSplitter.SetSizePixel( Size( aSz.Width(), SPLIT_HEIGHT ) );
+
+ aHSplitter.SetDragRectPixel( Rectangle( Point( 0, nVSplitPos+SPLIT_HEIGHT ), Size( aSz.Width(), aSz.Height() - nVSplitPos - SPLIT_HEIGHT ) ) );
+ aHSplitter.SetPosPixel( Point( nHSplitPos, nVSplitPos ) );
+ aHSplitter.SetSizePixel( Size( SPLIT_HEIGHT, aSz.Height() - nVSplitPos ) );
+
+ Size aWWSz;
+ Point aWWPos( 0, nVSplitPos+SPLIT_HEIGHT );
+ aWWSz.Width() = nHSplitPos;
+ aWWSz.Height() = aSz.Height() - aWWPos.Y();
+ if ( !aWatchWindow.IsFloatingMode() )
+ aWatchWindow.SetPosSizePixel( aWWPos, aWWSz );
+
+ Size aSWSz;
+ Point aSWPos( nHSplitPos+SPLIT_HEIGHT, nVSplitPos+SPLIT_HEIGHT );
+ aSWSz.Width() = aSz.Width() - aSWPos.X();
+ aSWSz.Height() = aSz.Height() - aSWPos.Y();
+ if ( !aStackWindow.IsFloatingMode() )
+ aStackWindow.SetPosSizePixel( aSWPos, aSWSz );
+
+ if ( aStackWindow.IsFloatingMode() && aWatchWindow.IsFloatingMode() )
+ aHSplitter.Hide();
+ else
+ aHSplitter.Show();
+
+ long nHDoubleClickSplitPosX = aSz.Width()-aHSplitter.GetSizePixel().Width();
+ if ( aHSplitter.GetSplitPosPixel() < nHDoubleClickSplitPosX )
+ aHSplitter.SetLastSplitPosPixel( nHDoubleClickSplitPosX );
+
+
+ long nHDoubleClickSplitPosY = aSz.Height()-aVSplitter.GetSizePixel().Height();
+ if ( aVSplitter.GetSplitPosPixel() < nHDoubleClickSplitPosY )
+ aVSplitter.SetLastSplitPosPixel( nHDoubleClickSplitPosY );
+}
+
+IMPL_LINK( ModulWindowLayout, SplitHdl, Splitter *, pSplitter )
+{
+ if ( pSplitter == &aVSplitter )
+ bVSplitted = TRUE;
+ else
+ bHSplitted = TRUE;
+
+ ArrangeWindows();
+ return 0;
+}
+
+BOOL ModulWindowLayout::IsToBeDocked( DockingWindow* pDockingWindow, const Point& rPos, Rectangle& rRect )
+{
+ // prueffen, ob als Dock oder als Child:
+ // TRUE: Floating
+ // FALSE: Child
+ Point aPosInMe = ScreenToOutputPixel( rPos );
+ Size aSz = GetOutputSizePixel();
+ if ( ( aPosInMe.X() > 0 ) && ( aPosInMe.X() < aSz.Width() ) &&
+ ( aPosInMe.Y() > 0 ) && ( aPosInMe.Y() < aSz.Height() ) )
+ {
+ long nVSplitPos = aVSplitter.GetSplitPosPixel();
+ long nHSplitPos = aHSplitter.GetSplitPosPixel();
+ if ( pDockingWindow == &aWatchWindow )
+ {
+ if ( ( aPosInMe.Y() > nVSplitPos ) && ( aPosInMe.X() < nHSplitPos ) )
+ {
+ rRect.SetSize( Size( nHSplitPos, aSz.Height() - nVSplitPos ) );
+ rRect.SetPos( OutputToScreenPixel( Point( 0, nVSplitPos ) ) );
+ return TRUE;
+ }
+ }
+ if ( pDockingWindow == &aStackWindow )
+ {
+ if ( ( aPosInMe.Y() > nVSplitPos ) && ( aPosInMe.X() > nHSplitPos ) )
+ {
+ rRect.SetSize( Size( aSz.Width() - nHSplitPos, aSz.Height() - nVSplitPos ) );
+ rRect.SetPos( OutputToScreenPixel( Point( nHSplitPos, nVSplitPos ) ) );
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+void ModulWindowLayout::DockaWindow( DockingWindow* pDockingWindow )
+{
+ if ( pDockingWindow == &aWatchWindow )
+ {
+ // evtl. Sonderbehandlung...
+ ArrangeWindows();
+ }
+ else if ( pDockingWindow == &aStackWindow )
+ {
+ // evtl. Sonderbehandlung...
+ ArrangeWindows();
+ }
+#ifdef DBG_UTIL
+ else
+ DBG_ERROR( "Wer will sich denn hier andocken ?" );
+#endif
+}
+
+void ModulWindowLayout::SetModulWindow( ModulWindow* pModWin )
+{
+ m_pModulWindow = pModWin;
+ ArrangeWindows();
+}
+
+// virtual
+void ModulWindowLayout::DataChanged(DataChangedEvent const & rDCEvt)
+{
+ Window::DataChanged(rDCEvt);
+ if (rDCEvt.GetType() == DATACHANGED_SETTINGS
+ && (rDCEvt.GetFlags() & SETTINGS_STYLE) != 0)
+ {
+ bool bInvalidate = false;
+ Color aColor(GetSettings().GetStyleSettings().GetWindowColor());
+ if (aColor
+ != rDCEvt.GetOldSettings()->GetStyleSettings().GetWindowColor())
+ {
+ SetBackground(Wallpaper(aColor));
+ bInvalidate = true;
+ }
+ aColor = GetSettings().GetStyleSettings().GetWindowTextColor();
+ if (aColor != rDCEvt.GetOldSettings()->
+ GetStyleSettings().GetWindowTextColor())
+ {
+ Font aFont(GetFont());
+ aFont.SetColor(aColor);
+ SetFont(aFont);
+ bInvalidate = true;
+ }
+ if (bInvalidate)
+ Invalidate();
+ aColor = GetSettings().GetStyleSettings().GetFieldTextColor();
+ if (aColor != m_aSyntaxColors[TT_UNKNOWN])
+ {
+ m_aSyntaxColors[TT_UNKNOWN] = aColor;
+ m_aSyntaxColors[TT_WHITESPACE] = aColor;
+ m_aSyntaxColors[TT_EOL] = aColor;
+ updateSyntaxHighlighting();
+ }
+ }
+}
+
+// virtual
+void ModulWindowLayout::ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 )
+{
+ {
+ Color aColor(m_aColorConfig.GetColorValue(svtools::BASICIDENTIFIER).
+ nColor);
+ bool bChanged = aColor != m_aSyntaxColors[TT_IDENTIFIER];
+ m_aSyntaxColors[TT_IDENTIFIER] = aColor;
+ aColor = Color(m_aColorConfig.GetColorValue(svtools::BASICNUMBER).nColor);
+ if (bChanged || aColor != m_aSyntaxColors[TT_NUMBER])
+ bChanged = true;
+ m_aSyntaxColors[TT_NUMBER] = aColor;
+ aColor = Color(m_aColorConfig.GetColorValue(svtools::BASICSTRING).nColor);
+ if (bChanged || aColor != m_aSyntaxColors[TT_STRING])
+ bChanged = true;
+ m_aSyntaxColors[TT_STRING] = aColor;
+ aColor = Color(m_aColorConfig.GetColorValue(svtools::BASICCOMMENT).
+ nColor);
+ if (bChanged || aColor != m_aSyntaxColors[TT_COMMENT])
+ bChanged = true;
+ m_aSyntaxColors[TT_COMMENT] = aColor;
+ aColor = Color(m_aColorConfig.GetColorValue(svtools::BASICERROR).nColor);
+ if (bChanged || aColor != m_aSyntaxColors[TT_ERROR])
+ bChanged = true;
+ m_aSyntaxColors[TT_ERROR] = aColor;
+ aColor = Color(m_aColorConfig.GetColorValue(svtools::BASICOPERATOR).
+ nColor);
+ if (bChanged || aColor != m_aSyntaxColors[TT_OPERATOR])
+ bChanged = true;
+ m_aSyntaxColors[TT_OPERATOR] = aColor;
+ aColor = Color(m_aColorConfig.GetColorValue(svtools::BASICKEYWORD).
+ nColor);
+ if (bChanged || aColor != m_aSyntaxColors[TT_KEYWORDS])
+ bChanged = true;
+ m_aSyntaxColors[TT_KEYWORDS] = aColor;
+ if (bChanged)
+ updateSyntaxHighlighting();
+ }
+}
+
+void ModulWindowLayout::updateSyntaxHighlighting()
+{
+ if (m_pModulWindow != 0)
+ {
+ EditorWindow & rEditor = m_pModulWindow->GetEditorWindow();
+ ULONG nCount = rEditor.GetEditEngine()->GetParagraphCount();
+ for (ULONG i = 0; i < nCount; ++i)
+ rEditor.DoDelayedSyntaxHighlight(i);
+ }
+}
+
+Image ModulWindowLayout::getImage(USHORT nId, bool bHighContrastMode) const
+{
+ return (bHighContrastMode ? m_aImagesHighContrast : m_aImagesNormal).
+ GetImage(nId);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/baside2.hrc b/basctl/source/basicide/baside2.hrc
new file mode 100644
index 000000000000..f97a0d897912
--- /dev/null
+++ b/basctl/source/basicide/baside2.hrc
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * 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 _BASIDE2_HRC
+#define _BASIDE2_HRC
+
+#include <basidesh.hrc>
+
+// Diese Dateien enthaelt nur die lokalen ID's.
+
+// RID_POPUP_BRKPROPS
+#define RID_BRKPROPS 1
+#define RID_ACTIV 2
+
+// RID_POPUP_BRKDLG
+#define RID_BRKDLG 1
+
+// RID_POPUP_TABBAR
+#define RID_INSERT 1
+
+// ModulWindowLayout
+#define IMGID_BRKENABLED ( SID_BASICIDE_IMAGESTART + 20 )
+#define IMGID_BRKDISABLED ( SID_BASICIDE_IMAGESTART + 21 )
+#define IMGID_STEPMARKER ( SID_BASICIDE_IMAGESTART + 22 )
+#define IMGID_ERRORMARKER ( SID_BASICIDE_IMAGESTART + 23 )
+
+#endif // _BASIDE2_HRC
diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx
new file mode 100644
index 000000000000..12ae6a23fb6f
--- /dev/null
+++ b/basctl/source/basicide/baside2.hxx
@@ -0,0 +1,507 @@
+/* -*- 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 _BASIDE2_HXX
+#define _BASIDE2_HXX
+
+#include <svheader.hxx>
+
+#include <bastypes.hxx>
+#include <bastype3.hxx>
+#include <basidesh.hxx>
+
+class ExtTextEngine;
+class ExtTextView;
+class SvxSearchItem;
+#include <svtools/svtabbx.hxx>
+#include <svtools/headbar.hxx>
+
+#include <vcl/button.hxx>
+#include <basic/sbmod.hxx>
+#include <vcl/split.hxx>
+#include "svl/lstner.hxx"
+#include <svtools/colorcfg.hxx>
+
+#include <sfx2/progress.hxx>
+#include <svtools/syntaxhighlight.hxx>
+
+DBG_NAMEEX( ModulWindow )
+
+#define MARKER_NOMARKER 0xFFFF
+
+namespace utl
+{
+ class SourceViewConfig;
+}
+
+// #108672 Helper functions to get/set text in TextEngine
+// using the stream interface (get/setText() only supports
+// tools Strings limited to 64K).
+::rtl::OUString getTextEngineText( ExtTextEngine* pEngine );
+void setTextEngineText( ExtTextEngine* pEngine, const ::rtl::OUString aStr );
+
+class ProgressInfo : public SfxProgress
+{
+private:
+ ULONG nCurState;
+
+public:
+
+ inline ProgressInfo( SfxObjectShell* pObjSh, const String& rText, ULONG nRange );
+
+// inline void StartProgress( const String& rName, ULONG nStates );
+// inline void EndProgress();
+ inline void StepProgress();
+};
+
+inline ProgressInfo::ProgressInfo( SfxObjectShell* pObjSh, const String& rText, ULONG nRange )
+ : SfxProgress( pObjSh, rText, nRange )
+{
+ nCurState = 0;
+}
+
+// inline void ProgressInfo::StartProgress( const String& rName, ULONG nStates )
+// {
+// nCurState = 0;
+// if ( pStbMgr )
+// pStbMgr->StartProgressMode( rName, nStates );
+// }
+
+// inline void ProgressInfo::EndProgress()
+// {
+// if ( pStbMgr )
+// pStbMgr->EndProgressMode();
+//}
+
+inline void ProgressInfo::StepProgress()
+{
+ SetState( ++nCurState );
+}
+
+
+namespace svt {
+class SourceViewConfig;
+}
+
+class EditorWindow : public Window, public SfxListener, public utl::ConfigurationListener
+{
+private:
+ ExtTextView* pEditView;
+ ExtTextEngine* pEditEngine;
+
+ utl::SourceViewConfig* pSourceViewConfig;
+
+ long nCurTextWidth;
+
+ SyntaxHighlighter aHighlighter;
+ Timer aSyntaxIdleTimer;
+ Table aSyntaxLineTable;
+ DECL_LINK( SyntaxTimerHdl, Timer * );
+ ProgressInfo* pProgress;
+ ModulWindow* pModulWindow;
+
+ virtual void DataChanged(DataChangedEvent const & rDCEvt);
+
+ using Window::Notify;
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ void ImpDoHighlight( ULONG nLineOff );
+ void ImplSetFont();
+
+ BOOL bHighlightning;
+ BOOL bDoSyntaxHighlight;
+ BOOL bDelayHighlight;
+
+ virtual
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >
+ GetComponentInterface(BOOL bCreate = TRUE);
+
+protected:
+ virtual void Paint( const Rectangle& );
+ virtual void Resize();
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void LoseFocus();
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+ virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 );
+
+ void DoSyntaxHighlight( ULONG nPara );
+ String GetWordAtCursor();
+ BOOL ImpCanModify();
+
+public:
+ EditorWindow( Window* pParent );
+ ~EditorWindow();
+
+ ExtTextEngine* GetEditEngine() const { return (ExtTextEngine*)pEditEngine; }
+ ExtTextView* GetEditView() const { return pEditView; }
+ ProgressInfo* GetProgress() const { return pProgress; }
+
+ void CreateProgress( const String& rText, ULONG nRange );
+ void DestroyProgress();
+
+ void ParagraphInsertedDeleted( ULONG nNewPara, BOOL bInserted );
+ void DoDelayedSyntaxHighlight( ULONG nPara );
+
+ void CreateEditEngine();
+ void SetScrollBarRanges();
+ void InitScrollBars();
+ void SetModulWindow( ModulWindow* pWin )
+ { pModulWindow = pWin; }
+
+ void ForceSyntaxTimeout();
+ BOOL SetSourceInBasic( BOOL bQuiet = TRUE );
+
+ BOOL CanModify() { return ImpCanModify(); }
+};
+
+
+class BreakPointWindow : public Window
+{
+private:
+ long nCurYOffset;
+ USHORT nMarkerPos;
+ BreakPointList aBreakPointList;
+ ModulWindow* pModulWindow;
+ BOOL bErrorMarker;
+ bool m_bHighContrastMode;
+
+ virtual void DataChanged(DataChangedEvent const & rDCEvt);
+
+ void setBackgroundColor(Color aColor);
+
+protected:
+ virtual void Paint( const Rectangle& );
+ virtual void Resize();
+ BreakPoint* FindBreakPoint( const Point& rMousePos );
+ void ShowMarker( BOOL bShow );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+
+ BOOL SyncYOffset();
+
+public:
+ BreakPointWindow( Window* pParent );
+ ~BreakPointWindow();
+
+ void SetModulWindow( ModulWindow* pWin )
+ { pModulWindow = pWin; }
+
+ void SetMarkerPos( USHORT nLine, BOOL bErrorMarker = FALSE );
+
+ void DoScroll( long nHorzScroll, long nVertScroll );
+ long& GetCurYOffset() { return nCurYOffset; }
+ BreakPointList& GetBreakPoints() { return aBreakPointList; }
+};
+
+
+class WatchTreeListBox : public SvHeaderTabListBox
+{
+ String aEditingRes;
+
+protected:
+ virtual BOOL EditingEntry( SvLBoxEntry* pEntry, Selection& rSel );
+ virtual BOOL EditedEntry( SvLBoxEntry* pEntry, const String& rNewText );
+
+ BOOL ImplBasicEntryEdited( SvLBoxEntry* pEntry, const String& rResult );
+ SbxBase* ImplGetSBXForEntry( SvLBoxEntry* pEntry, bool& rbArrayElement );
+
+// virtual DragDropMode NotifyBeginDrag( SvLBoxEntry* );
+// virtual BOOL NotifyQueryDrop( SvLBoxEntry* );
+
+// virtual BOOL NotifyMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+// SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos );
+// virtual BOOL NotifyCopying( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+// SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos );
+// BOOL NotifyCopyingMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+// SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos, BOOL bMove );
+
+public:
+ WatchTreeListBox( Window* pParent, WinBits nWinBits );
+ ~WatchTreeListBox();
+
+ void RequestingChilds( SvLBoxEntry * pParent );
+ void UpdateWatches( bool bBasicStopped = false );
+
+ using SvTabListBox::SetTabs;
+ virtual void SetTabs();
+};
+
+
+
+class WatchWindow : public BasicDockingWindow
+{
+private:
+ String aWatchStr;
+ ExtendedEdit aXEdit;
+ ImageButton aRemoveWatchButton;
+ WatchTreeListBox aTreeListBox;
+ HeaderBar aHeaderBar;
+
+protected:
+ virtual void Resize();
+ virtual void Paint( const Rectangle& rRect );
+
+ DECL_LINK( ButtonHdl, ImageButton * );
+ DECL_LINK( TreeListHdl, SvTreeListBox * );
+ DECL_LINK( implEndDragHdl, HeaderBar * );
+ DECL_LINK( EditAccHdl, Accelerator * );
+
+
+public:
+ WatchWindow( Window* pParent );
+ ~WatchWindow();
+
+ void AddWatch( const String& rVName );
+ BOOL RemoveSelectedWatch();
+ void UpdateWatches( bool bBasicStopped = false );
+
+ WatchTreeListBox& GetWatchTreeListBox() { return aTreeListBox; }
+};
+
+
+class StackWindow : public BasicDockingWindow
+{
+private:
+ SvTreeListBox aTreeListBox;
+ ImageButton aGotoCallButton;
+ String aStackStr;
+
+protected:
+ virtual void Resize();
+ virtual void Paint( const Rectangle& rRect );
+ DECL_LINK( ButtonHdl, ImageButton * );
+
+public:
+ StackWindow( Window* pParent );
+ ~StackWindow();
+
+ void UpdateCalls();
+};
+
+
+class ComplexEditorWindow : public Window
+{
+private:
+ BreakPointWindow aBrkWindow;
+ EditorWindow aEdtWindow;
+ ScrollBar aEWVScrollBar;
+
+ virtual void DataChanged(DataChangedEvent const & rDCEvt);
+
+protected:
+ virtual void Resize();
+ DECL_LINK( ScrollHdl, ScrollBar * );
+
+public:
+ ComplexEditorWindow( ModulWindow* pParent );
+
+ BreakPointWindow& GetBrkWindow() { return aBrkWindow; }
+ EditorWindow& GetEdtWindow() { return aEdtWindow; }
+ ScrollBar& GetEWVScrollBar() { return aEWVScrollBar; }
+};
+
+
+#define SYNTAX_COLOR_MAX 5
+
+class ModulWindow: public IDEBaseWindow
+{
+ friend class BasicIDEShell;
+
+private:
+ StarBASICRef xBasic;
+ short nValid;
+ ComplexEditorWindow aXEditorWindow;
+ BasicStatus aStatus;
+ SbModuleRef xModule;
+ ModulWindowLayout* pLayout;
+ String aCurPath;
+ ::rtl::OUString m_aModule;
+
+ DECL_LINK( BasicErrorHdl, StarBASIC * );
+ long BasicBreakHdl( StarBASIC* pBasic );
+
+ void CheckCompileBasic();
+ BOOL BasicExecute();
+
+ void GoOnTop();
+ void AssertValidEditEngine();
+
+ sal_Int32 FormatAndPrint( Printer* pPrinter, sal_Int32 nPage = -1 );
+ SbModuleRef XModule();
+protected:
+ virtual void Resize();
+ virtual void GetFocus();
+ virtual void Paint( const Rectangle& );
+ virtual void Deactivating();
+ virtual void DoInit();
+ virtual void DoScroll( ScrollBar* pCurScrollBar );
+
+public:
+ TYPEINFO();
+
+ ModulWindow( ModulWindowLayout* pParent, const ScriptDocument& rDocument, String aLibName,
+ String aName, ::rtl::OUString& aModule );
+
+ ~ModulWindow();
+
+ virtual void ExecuteCommand( SfxRequest& rReq );
+ virtual void GetState( SfxItemSet& );
+ virtual void StoreData();
+ virtual void UpdateData();
+ virtual BOOL CanClose();
+ // virtual void PrintData( Printer* pPrinter );
+ // return number of pages to be printed
+ virtual sal_Int32 countPages( Printer* pPrinter );
+ // print page
+ virtual void printPage( sal_Int32 nPage, Printer* pPrinter );
+ virtual String GetTitle();
+ virtual BasicEntryDescriptor CreateEntryDescriptor();
+ virtual BOOL AllowUndo();
+ virtual void SetReadOnly( BOOL bReadOnly );
+ virtual BOOL IsReadOnly();
+
+ StarBASIC* GetBasic() { XModule(); return xBasic; }
+
+ SbModule* GetSbModule() { return xModule; }
+ void SetSbModule( SbModule* pModule ) { xModule = pModule; }
+ String GetSbModuleName();
+
+ BOOL CompileBasic();
+ BOOL BasicRun();
+ BOOL BasicStepOver();
+ BOOL BasicStepInto();
+ BOOL BasicStepOut();
+ void BasicStop();
+ BOOL BasicToggleBreakPoint();
+ void BasicToggleBreakPointEnabled();
+ void ManageBreakPoints();
+ void UpdateBreakPoint( const BreakPoint& rBrk );
+ void BasicAddWatch();
+ void BasicRemoveWatch();
+
+ BOOL LoadBasic();
+ BOOL SaveBasicSource();
+ BOOL ImportDialog();
+
+ void EditMacro( const String& rMacroName );
+
+// void InsertFromObjectCatalog( ObjectCatalog* pObjDlg );
+
+ BOOL ToggleBreakPoint( ULONG nLine );
+
+ BasicStatus& GetBasicStatus() { return aStatus; }
+
+ virtual BOOL IsModified();
+ virtual BOOL IsPasteAllowed();
+
+ void FrameWindowMoved();
+ void ShowCursor( BOOL bOn );
+
+ virtual USHORT GetSearchOptions();
+ USHORT StartSearchAndReplace( const SvxSearchItem& rSearchItem, BOOL bFromStart = FALSE );
+
+ virtual Window* GetLayoutWindow();
+
+ EditorWindow& GetEditorWindow() { return aXEditorWindow.GetEdtWindow(); }
+ BreakPointWindow& GetBreakPointWindow() { return aXEditorWindow.GetBrkWindow(); }
+ ScrollBar& GetEditVScrollBar() { return aXEditorWindow.GetEWVScrollBar(); }
+ ExtTextEngine* GetEditEngine() { return GetEditorWindow().GetEditEngine(); }
+ ExtTextView* GetEditView() { return GetEditorWindow().GetEditView(); }
+ BreakPointList& GetBreakPoints() { return GetBreakPointWindow().GetBreakPoints(); }
+ ModulWindowLayout* GetLayout() const { return pLayout; }
+
+ virtual void BasicStarted();
+ virtual void BasicStopped();
+
+ virtual SfxUndoManager* GetUndoManager();
+
+ const ::rtl::OUString& GetModule() const { return m_aModule; }
+ void SetModule( const ::rtl::OUString& aModule ) { m_aModule = aModule; }
+};
+
+class ModulWindowLayout: public Window, public utl::ConfigurationListener
+{
+private:
+
+ Splitter aVSplitter;
+ Splitter aHSplitter;
+
+ WatchWindow aWatchWindow;
+ StackWindow aStackWindow;
+
+ BOOL bVSplitted;
+ BOOL bHSplitted;
+
+ ModulWindow * m_pModulWindow;
+
+ Color m_aSyntaxColors[TT_KEYWORDS + 1];
+ svtools::ColorConfig m_aColorConfig;
+
+ ImageList m_aImagesNormal;
+ ImageList m_aImagesHighContrast;
+
+ virtual void DataChanged(DataChangedEvent const & rDCEvt);
+
+ virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 );
+
+ void updateSyntaxHighlighting();
+
+ DECL_LINK( SplitHdl, Splitter * );
+
+ void ArrangeWindows();
+
+protected:
+ virtual void Resize();
+ virtual void Paint( const Rectangle& rRect );
+
+public:
+ ModulWindowLayout( Window* pParent );
+ ~ModulWindowLayout();
+
+ void DockaWindow( DockingWindow* pDockingWin );
+ BOOL IsToBeDocked( DockingWindow* pDockingWin, const Point& rPos, Rectangle& rRect );
+
+ void SetModulWindow( ModulWindow* pModWin );
+ ModulWindow* GetModulWindow() const { return m_pModulWindow; }
+
+ WatchWindow& GetWatchWindow() { return aWatchWindow; }
+ StackWindow& GetStackWindow() { return aStackWindow; }
+
+ Image getImage(USHORT nId, bool bHighContrastMode) const;
+
+ inline Color const & getSyntaxColor(TokenTypes eType) const
+ { return m_aSyntaxColors[eType]; }
+};
+
+#endif // _BASIDE2_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
new file mode 100644
index 000000000000..2fa67b22fb48
--- /dev/null
+++ b/basctl/source/basicide/baside2b.cxx
@@ -0,0 +1,2317 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include <svl/svarray.hxx>
+#define _BASIC_TEXTPORTIONS
+#include <basic/sbdef.hxx>
+#include <ide_pch.hxx>
+
+
+#include <tools/urlobj.hxx>
+#include <unotools/charclass.hxx>
+#include <svl/urihelper.hxx>
+#include <basic/sbx.hxx>
+#include <vcl/sound.hxx>
+#include <svtools/xtextedt.hxx>
+#include <svtools/txtattr.hxx>
+#include <svtools/textwindowpeer.hxx>
+#include <basic/sbuno.hxx>
+
+#include <helpid.hrc>
+#include <baside2.hrc>
+#include <baside2.hxx>
+#include <brkdlg.hxx>
+#include <objdlg.hxx>
+#include <basobj.hxx>
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <vcl/taskpanelist.hxx>
+#include <vcl/help.hxx>
+
+#include <unotools/sourceviewconfig.hxx>
+
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <comphelper/processfactory.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+
+long nVirtToolBoxHeight; // wird im WatchWindow init., im Stackwindow verw.
+long nHeaderBarHeight;
+
+#define SCROLL_LINE 12
+#define SCROLL_PAGE 60
+
+#define DWBORDER 3
+
+static const char cSuffixes[] = "%&!#@$";
+
+MapUnit eEditMapUnit = MAP_100TH_MM;
+
+
+// #108672 Helper functions to get/set text in TextEngine
+// using the stream interface (get/setText() only supports
+// tools Strings limited to 64K).
+::rtl::OUString getTextEngineText( ExtTextEngine* pEngine )
+{
+ SvMemoryStream aMemStream;
+ aMemStream.SetStreamCharSet( RTL_TEXTENCODING_UTF8 );
+ aMemStream.SetLineDelimiter( LINEEND_LF );
+ pEngine->Write( aMemStream );
+ ULONG nSize = aMemStream.Tell();
+ ::rtl::OUString aText( (const sal_Char*)aMemStream.GetData(),
+ nSize, RTL_TEXTENCODING_UTF8 );
+ return aText;
+}
+
+void setTextEngineText( ExtTextEngine* pEngine, const ::rtl::OUString aStr )
+{
+ pEngine->SetText( String() );
+ ::rtl::OString aUTF8Str = ::rtl::OUStringToOString( aStr, RTL_TEXTENCODING_UTF8 );
+ SvMemoryStream aMemStream( (void*)aUTF8Str.getStr(), aUTF8Str.getLength(),
+ STREAM_READ | STREAM_SEEK_TO_BEGIN );
+ aMemStream.SetStreamCharSet( RTL_TEXTENCODING_UTF8 );
+ aMemStream.SetLineDelimiter( LINEEND_LF );
+ pEngine->Read( aMemStream );
+}
+
+void lcl_DrawIDEWindowFrame( DockingWindow* pWin )
+{
+ // The result of using explicit colors here appears to be harmless when
+ // switching to high contrast mode:
+ if ( !pWin->IsFloatingMode() )
+ {
+ Size aSz = pWin->GetOutputSizePixel();
+ const Color aOldLineColor( pWin->GetLineColor() );
+ pWin->SetLineColor( Color( COL_WHITE ) );
+ // oben eine weisse..
+ pWin->DrawLine( Point( 0, 0 ), Point( aSz.Width(), 0 ) );
+ // unten eine schwarze...
+ pWin->SetLineColor( Color( COL_BLACK ) );
+ pWin->DrawLine( Point( 0, aSz.Height() - 1 ), Point( aSz.Width(), aSz.Height() - 1 ) );
+ pWin->SetLineColor( aOldLineColor );
+ }
+}
+
+void lcl_SeparateNameAndIndex( const String& rVName, String& rVar, String& rIndex )
+{
+ rVar = rVName;
+ rIndex.Erase();
+ USHORT nIndexStart = rVar.Search( '(' );
+ if ( nIndexStart != STRING_NOTFOUND )
+ {
+ USHORT nIndexEnd = rVar.Search( ')', nIndexStart );
+ if ( nIndexStart != STRING_NOTFOUND )
+ {
+ rIndex = rVar.Copy( nIndexStart+1, nIndexEnd-nIndexStart-1 );
+ rVar.Erase( nIndexStart );
+ rVar.EraseTrailingChars();
+ rIndex.EraseLeadingChars();
+ rIndex.EraseTrailingChars();
+ }
+ }
+
+ if ( rVar.Len() )
+ {
+ USHORT nLastChar = rVar.Len()-1;
+ if ( strchr( cSuffixes, rVar.GetChar( nLastChar ) ) )
+ rVar.Erase( nLastChar, 1 );
+ }
+ if ( rIndex.Len() )
+ {
+ USHORT nLastChar = rIndex.Len()-1;
+ if ( strchr( cSuffixes, rIndex.GetChar( nLastChar ) ) )
+ rIndex.Erase( nLastChar, 1 );
+ }
+}
+
+
+EditorWindow::EditorWindow( Window* pParent ) :
+ Window( pParent, WB_BORDER )
+{
+ bDoSyntaxHighlight = TRUE;
+ bDelayHighlight = TRUE;
+ pModulWindow = 0;
+ pEditView = 0;
+ pEditEngine = 0;
+ pSourceViewConfig = new utl::SourceViewConfig;
+ bHighlightning = FALSE;
+ pProgress = 0;
+ nCurTextWidth = 0;
+ SetBackground(
+ Wallpaper(GetSettings().GetStyleSettings().GetFieldColor()));
+ SetPointer( Pointer( POINTER_TEXT ) );
+
+ SetHelpId( HID_BASICIDE_EDITORWINDOW );
+ pSourceViewConfig->AddListener(this);
+}
+
+
+
+__EXPORT EditorWindow::~EditorWindow()
+{
+ pSourceViewConfig->RemoveListener(this);
+ delete pSourceViewConfig;
+
+ aSyntaxIdleTimer.Stop();
+
+ if ( pEditEngine )
+ {
+ EndListening( *pEditEngine );
+ pEditEngine->RemoveView( pEditView );
+// pEditEngine->SetViewWin( 0 );
+ delete pEditView;
+ delete pEditEngine;
+ }
+}
+
+String EditorWindow::GetWordAtCursor()
+{
+ String aWord;
+
+ if ( pEditView )
+ {
+ TextEngine* pTextEngine = pEditView->GetTextEngine();
+ if ( pTextEngine )
+ {
+ // check first, if the cursor is at a help URL
+ const TextSelection& rSelection = pEditView->GetSelection();
+ const TextPaM& rSelStart = rSelection.GetStart();
+ const TextPaM& rSelEnd = rSelection.GetEnd();
+ String aText = pTextEngine->GetText( rSelEnd.GetPara() );
+ CharClass aClass( ::comphelper::getProcessServiceFactory() , Application::GetSettings().GetLocale() );
+ xub_StrLen nSelStart = static_cast< xub_StrLen >( rSelStart.GetIndex() );
+ xub_StrLen nSelEnd = static_cast< xub_StrLen >( rSelEnd.GetIndex() );
+ xub_StrLen nLength = static_cast< xub_StrLen >( aText.Len() );
+ xub_StrLen nStart = 0;
+ xub_StrLen nEnd = nLength;
+ while ( nStart < nLength )
+ {
+ String aURL( URIHelper::FindFirstURLInText( aText, nStart, nEnd, aClass ) );
+ INetURLObject aURLObj( aURL );
+ if ( aURLObj.GetProtocol() == INET_PROT_VND_SUN_STAR_HELP
+ && nSelStart >= nStart && nSelStart <= nEnd && nSelEnd >= nStart && nSelEnd <= nEnd )
+ {
+ aWord = aURL;
+ break;
+ }
+ nStart = nEnd;
+ nEnd = nLength;
+ }
+
+ // Nicht den Selektierten Bereich, sondern an der CursorPosition,
+ // falls Teil eines Worts markiert.
+ if ( !aWord.Len() )
+ aWord = pTextEngine->GetWord( rSelEnd );
+
+ // Kann leer sein, wenn komplettes Word markiert, da Cursor dahinter.
+ if ( !aWord.Len() && pEditView->HasSelection() )
+ aWord = pTextEngine->GetWord( rSelStart );
+ }
+ }
+
+ return aWord;
+}
+
+void __EXPORT EditorWindow::RequestHelp( const HelpEvent& rHEvt )
+{
+ BOOL bDone = FALSE;
+
+ // Sollte eigentlich mal aktiviert werden...
+ if ( pEditEngine )
+ {
+ if ( rHEvt.GetMode() & HELPMODE_CONTEXT )
+ {
+ String aKeyword = GetWordAtCursor();
+ Application::GetHelp()->Start( aKeyword, this );
+ bDone = TRUE;
+ }
+ else if ( rHEvt.GetMode() & HELPMODE_QUICK )
+ {
+ String aHelpText;
+ Point aTopLeft;
+ if ( StarBASIC::IsRunning() )
+ {
+ Point aWindowPos = rHEvt.GetMousePosPixel();
+ aWindowPos = ScreenToOutputPixel( aWindowPos );
+ Point aDocPos = GetEditView()->GetDocPos( aWindowPos );
+ TextPaM aCursor = GetEditView()->GetTextEngine()->GetPaM( aDocPos, FALSE );
+ TextPaM aStartOfWord;
+ String aWord = GetEditView()->GetTextEngine()->GetWord( aCursor, &aStartOfWord );
+ if ( aWord.Len() && !ByteString( aWord, RTL_TEXTENCODING_UTF8 ).IsNumericAscii() )
+ {
+ USHORT nLastChar =aWord.Len()-1;
+ if ( strchr( cSuffixes, aWord.GetChar( nLastChar ) ) )
+ aWord.Erase( nLastChar, 1 );
+ SbxBase* pSBX = StarBASIC::FindSBXInCurrentScope( aWord );
+ if ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) )
+ {
+ SbxVariable* pVar = (SbxVariable*)pSBX;
+ SbxDataType eType = pVar->GetType();
+ if ( (BYTE)eType == (BYTE)SbxOBJECT )
+ // Kann zu Absturz, z.B. bei Selections-Objekt fuehren
+ // Type == Object heisst nicht, dass pVar == Object!
+ ; // aHelpText = ((SbxObject*)pVar)->GetClassName();
+ else if ( eType & SbxARRAY )
+ ; // aHelpText = "{...}";
+ else if ( (BYTE)eType != (BYTE)SbxEMPTY )
+ {
+ aHelpText = pVar->GetName();
+ if ( !aHelpText.Len() ) // Bei Uebergabeparametern wird der Name nicht kopiert
+ aHelpText = aWord;
+ aHelpText += '=';
+ aHelpText += pVar->GetString();
+ }
+ }
+ if ( aHelpText.Len() )
+ {
+ aTopLeft = GetEditView()->GetTextEngine()->PaMtoEditCursor( aStartOfWord ).BottomLeft();
+ aTopLeft = GetEditView()->GetWindowPos( aTopLeft );
+ aTopLeft.X() += 5;
+ aTopLeft.Y() += 5;
+ aTopLeft = OutputToScreenPixel( aTopLeft );
+ }
+ }
+ }
+ Help::ShowQuickHelp( this, Rectangle( aTopLeft, Size( 1, 1 ) ), aHelpText, QUICKHELP_TOP|QUICKHELP_LEFT);
+ bDone = TRUE;
+ }
+ }
+
+ if ( !bDone )
+ Window::RequestHelp( rHEvt );
+}
+
+
+void __EXPORT EditorWindow::Resize()
+{
+ // ScrollBars, etc. passiert in Adjust...
+ if ( pEditView )
+ {
+ long nVisY = pEditView->GetStartDocPos().Y();
+// pEditView->SetOutputArea( Rectangle( Point( 0, 0 ), GetOutputSize() ) );
+ pEditView->ShowCursor();
+ Size aOutSz( GetOutputSizePixel() );
+ long nMaxVisAreaStart = pEditView->GetTextEngine()->GetTextHeight() - aOutSz.Height();
+ if ( nMaxVisAreaStart < 0 )
+ nMaxVisAreaStart = 0;
+ if ( pEditView->GetStartDocPos().Y() > nMaxVisAreaStart )
+ {
+ Point aStartDocPos( pEditView->GetStartDocPos() );
+ aStartDocPos.Y() = nMaxVisAreaStart;
+ pEditView->SetStartDocPos( aStartDocPos );
+ pEditView->ShowCursor();
+ pModulWindow->GetBreakPointWindow().GetCurYOffset() = aStartDocPos.Y();
+ }
+ InitScrollBars();
+ if ( nVisY != pEditView->GetStartDocPos().Y() )
+ Invalidate();
+ }
+}
+
+
+
+void __EXPORT EditorWindow::MouseMove( const MouseEvent &rEvt )
+{
+ if ( pEditView )
+ pEditView->MouseMove( rEvt );
+}
+
+
+
+void __EXPORT EditorWindow::MouseButtonUp( const MouseEvent &rEvt )
+{
+ if ( pEditView )
+ {
+ pEditView->MouseButtonUp( rEvt );
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_STAT_POS );
+ }
+}
+
+void __EXPORT EditorWindow::MouseButtonDown( const MouseEvent &rEvt )
+{
+ GrabFocus();
+ if ( pEditView )
+ {
+ pEditView->MouseButtonDown( rEvt );
+ }
+}
+
+void __EXPORT EditorWindow::Command( const CommandEvent& rCEvt )
+{
+ if ( pEditView )
+ {
+ pEditView->Command( rCEvt );
+ if ( ( rCEvt.GetCommand() == COMMAND_WHEEL ) ||
+ ( rCEvt.GetCommand() == COMMAND_STARTAUTOSCROLL ) ||
+ ( rCEvt.GetCommand() == COMMAND_AUTOSCROLL ) )
+ {
+ HandleScrollCommand( rCEvt, pModulWindow->GetHScrollBar(), &pModulWindow->GetEditVScrollBar() );
+ }
+ }
+}
+
+BOOL EditorWindow::ImpCanModify()
+{
+ BOOL bCanModify = TRUE;
+ if ( StarBASIC::IsRunning() )
+ {
+ // Wenn im Trace-Mode, entweder Trace abbrechen oder
+ // Eingabe verweigern
+ // Im Notify bei Basic::Stoped die Markierungen in den Modulen
+ // entfernen!
+ if ( QueryBox( 0, WB_OK_CANCEL, String( IDEResId( RID_STR_WILLSTOPPRG ) ) ).Execute() == RET_OK )
+ {
+ pModulWindow->GetBasicStatus().bIsRunning = FALSE;
+ BasicIDE::StopBasic();
+ }
+ else
+ bCanModify = FALSE;
+ }
+ return bCanModify;
+}
+
+void __EXPORT EditorWindow::KeyInput( const KeyEvent& rKEvt )
+{
+ if ( !pEditView ) // Passiert unter W95 bei letzte Version, Ctrl-Tab
+ return;
+
+#if OSL_DEBUG_LEVEL > 1
+ Range aRange = pModulWindow->GetHScrollBar()->GetRange(); (void)aRange;
+ long nVisSz = pModulWindow->GetHScrollBar()->GetVisibleSize(); (void)nVisSz;
+ long nPapSz = pModulWindow->GetHScrollBar()->GetPageSize(); (void)nPapSz;
+ long nLinSz = pModulWindow->GetHScrollBar()->GetLineSize(); (void)nLinSz;
+ long nThumb = pModulWindow->GetHScrollBar()->GetThumbPos(); (void)nThumb;
+#endif
+ BOOL bDone = FALSE;
+ BOOL bWasModified = pEditEngine->IsModified();
+ if ( !TextEngine::DoesKeyChangeText( rKEvt ) || ImpCanModify() )
+ {
+ if ( ( rKEvt.GetKeyCode().GetCode() == KEY_A) && rKEvt.GetKeyCode().IsMod1() )
+ pEditView->SetSelection( TextSelection( TextPaM( 0, 0 ), TextPaM( 0xFFFFFFFF, 0xFFFF ) ) );
+ else if ( ( rKEvt.GetKeyCode().GetCode() == KEY_Y ) && rKEvt.GetKeyCode().IsMod1() )
+ bDone = TRUE; // CTRL-Y schlucken, damit kein Vorlagenkatalog
+ else
+ {
+ if ( ( rKEvt.GetKeyCode().GetCode() == KEY_TAB ) && !rKEvt.GetKeyCode().IsMod1() &&
+ !rKEvt.GetKeyCode().IsMod2() && !GetEditView()->IsReadOnly() )
+ {
+ TextSelection aSel( pEditView->GetSelection() );
+ if ( aSel.GetStart().GetPara() != aSel.GetEnd().GetPara() )
+ {
+ bDelayHighlight = FALSE;
+ if ( !rKEvt.GetKeyCode().IsShift() )
+ pEditView->IndentBlock();
+ else
+ pEditView->UnindentBlock();
+ bDelayHighlight = TRUE;
+ bDone = TRUE;
+ }
+ }
+ if ( !bDone )
+ bDone = pEditView->KeyInput( rKEvt );
+ }
+ }
+ if ( !bDone )
+ {
+ if ( !SfxViewShell::Current()->KeyInput( rKEvt ) )
+ Window::KeyInput( rKEvt );
+ }
+ else
+ {
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_BASICIDE_STAT_POS );
+ if ( rKEvt.GetKeyCode().GetGroup() == KEYGROUP_CURSOR )
+ pBindings->Update( SID_BASICIDE_STAT_POS );
+ if ( !bWasModified && pEditEngine->IsModified() )
+ {
+ pBindings->Invalidate( SID_SAVEDOC );
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ }
+ if ( rKEvt.GetKeyCode().GetCode() == KEY_INSERT )
+ pBindings->Invalidate( SID_ATTR_INSERT );
+ }
+ }
+}
+
+void __EXPORT EditorWindow::Paint( const Rectangle& rRect )
+{
+ if ( !pEditEngine ) // spaetestens jetzt brauche ich sie...
+ CreateEditEngine();
+
+ pEditView->Paint( rRect );
+}
+
+void __EXPORT EditorWindow::LoseFocus()
+{
+ SetSourceInBasic();
+ Window::LoseFocus();
+}
+
+BOOL EditorWindow::SetSourceInBasic( BOOL bQuiet )
+{
+ (void)bQuiet;
+
+ BOOL bChanged = FALSE;
+ if ( pEditEngine && pEditEngine->IsModified()
+ && !GetEditView()->IsReadOnly() ) // Added because of #i60626, otherwise
+ // any read only bug in the text engine could lead to a crash later
+ {
+ if ( !StarBASIC::IsRunning() ) // Nicht zur Laufzeit!
+ {
+ ::rtl::OUString aModule = getTextEngineText( pEditEngine );
+
+ // update module in basic
+#ifdef DBG_UTIL
+ SbModule* pModule = pModulWindow->GetSbModule();
+#endif
+ DBG_ASSERT(pModule, "EditorWindow::SetSourceInBasic: No Module found!");
+
+ // update module in module window
+ pModulWindow->SetModule( aModule );
+
+ // update module in library
+ ScriptDocument aDocument( pModulWindow->GetDocument() );
+ String aLibName = pModulWindow->GetLibName();
+ String aName = pModulWindow->GetName();
+ OSL_VERIFY( aDocument.updateModule( aLibName, aName, aModule ) );
+
+ pEditEngine->SetModified( FALSE );
+ BasicIDE::MarkDocumentModified( aDocument );
+ bChanged = TRUE;
+ }
+ }
+ return bChanged;
+}
+
+
+// Returns the position of the last character of any of the following
+// EOL char combinations: CR, CR/LF, LF, return -1 if no EOL is found
+sal_Int32 searchEOL( const ::rtl::OUString& rStr, sal_Int32 fromIndex )
+{
+ sal_Int32 iRetPos = -1;
+
+ sal_Int32 iLF = rStr.indexOf( LINE_SEP, fromIndex );
+ if( iLF != -1 )
+ {
+ iRetPos = iLF;
+ }
+ else
+ {
+ iRetPos = rStr.indexOf( LINE_SEP_CR, fromIndex );
+ }
+ return iRetPos;
+}
+
+
+void EditorWindow::CreateEditEngine()
+{
+ if ( pEditEngine )
+ return;
+
+ pEditEngine = new ExtTextEngine;
+ pEditView = new ExtTextView( pEditEngine, this );
+ pEditView->SetAutoIndentMode( TRUE );
+ pEditEngine->SetUpdateMode( FALSE );
+ pEditEngine->InsertView( pEditView );
+
+ ImplSetFont();
+
+ aSyntaxIdleTimer.SetTimeout( 200 );
+ aSyntaxIdleTimer.SetTimeoutHdl( LINK( this, EditorWindow, SyntaxTimerHdl ) );
+
+ aHighlighter.initialize( HIGHLIGHT_BASIC );
+
+ BOOL bWasDoSyntaxHighlight = bDoSyntaxHighlight;
+ bDoSyntaxHighlight = FALSE; // Bei grossen Texten zu langsam...
+ ::rtl::OUString aOUSource( pModulWindow->GetModule() );
+ sal_Int32 nLines = 0;
+ sal_Int32 nIndex = -1;
+ do
+ {
+ nLines++;
+ nIndex = searchEOL( aOUSource, nIndex+1 );
+ }
+ while ( nIndex >= 0 );
+
+ // nLines*4: SetText+Formatting+DoHighlight+Formatting
+ // 1 Formatting koennte eingespart werden, aber dann wartet man
+ // bei einem langen Sourcecode noch laenger auf den Text...
+ pProgress = new ProgressInfo( IDE_DLL()->GetShell()->GetViewFrame()->GetObjectShell(), String( IDEResId( RID_STR_GENERATESOURCE ) ), nLines*4 );
+ setTextEngineText( pEditEngine, aOUSource );
+
+ pEditView->SetStartDocPos( Point( 0, 0 ) );
+ pEditView->SetSelection( TextSelection() );
+ pModulWindow->GetBreakPointWindow().GetCurYOffset() = 0;
+ pEditEngine->SetUpdateMode( TRUE );
+ Update(); // Es wurde bei UpdateMode = TRUE nur Invalidiert
+
+ // Die anderen Fenster auch, damit keine halben Sachen auf dem Bildschirm!
+ pModulWindow->GetLayout()->GetWatchWindow().Update();
+ pModulWindow->GetLayout()->GetStackWindow().Update();
+ pModulWindow->GetBreakPointWindow().Update();
+
+ pEditView->ShowCursor( TRUE, TRUE );
+
+ StartListening( *pEditEngine );
+
+ // Das Syntax-Highlightning legt ein rel. groesse VDev an.
+ aSyntaxIdleTimer.Stop();
+ bDoSyntaxHighlight = bWasDoSyntaxHighlight;
+
+
+ for ( USHORT nLine = 0; nLine < nLines; nLine++ )
+ aSyntaxLineTable.Insert( nLine, (void*)(USHORT)1 );
+ ForceSyntaxTimeout();
+
+ DELETEZ( pProgress );
+
+ pEditView->EraseVirtualDevice();
+ pEditEngine->SetModified( FALSE );
+ pEditEngine->EnableUndo( TRUE );
+
+ InitScrollBars();
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_STAT_POS );
+
+ DBG_ASSERT( pModulWindow->GetBreakPointWindow().GetCurYOffset() == 0, "CreateEditEngine: Brechpunkte verschoben?" );
+
+ // set readonly mode for readonly libraries
+ ScriptDocument aDocument( pModulWindow->GetDocument() );
+ ::rtl::OUString aOULibName( pModulWindow->GetLibName() );
+ Reference< script::XLibraryContainer2 > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) )
+ {
+ pModulWindow->SetReadOnly( TRUE );
+ }
+
+ if ( aDocument.isDocument() && aDocument.isReadOnly() )
+ pModulWindow->SetReadOnly( TRUE );
+}
+
+// virtual
+void EditorWindow::DataChanged(DataChangedEvent const & rDCEvt)
+{
+ Window::DataChanged(rDCEvt);
+ if (rDCEvt.GetType() == DATACHANGED_SETTINGS
+ && (rDCEvt.GetFlags() & SETTINGS_STYLE) != 0)
+ {
+ Color aColor(GetSettings().GetStyleSettings().GetFieldColor());
+ if (aColor
+ != rDCEvt.GetOldSettings()->GetStyleSettings().GetFieldColor())
+ {
+ SetBackground(Wallpaper(aColor));
+ Invalidate();
+ }
+ if (pEditEngine != 0)
+ {
+ aColor = GetSettings().GetStyleSettings().GetFieldTextColor();
+ if (aColor != rDCEvt.GetOldSettings()->
+ GetStyleSettings().GetFieldTextColor())
+ {
+ Font aFont(pEditEngine->GetFont());
+ aFont.SetColor(aColor);
+ pEditEngine->SetFont(aFont);
+ }
+ }
+ }
+}
+
+void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
+{
+ if ( rHint.ISA( TextHint ) )
+ {
+ const TextHint& rTextHint = (const TextHint&)rHint;
+ if( rTextHint.GetId() == TEXT_HINT_VIEWSCROLLED )
+ {
+ if ( pModulWindow->GetHScrollBar() )
+ pModulWindow->GetHScrollBar()->SetThumbPos( pEditView->GetStartDocPos().X() );
+ pModulWindow->GetEditVScrollBar().SetThumbPos( pEditView->GetStartDocPos().Y() );
+ pModulWindow->GetBreakPointWindow().DoScroll
+ ( 0, pModulWindow->GetBreakPointWindow().GetCurYOffset() - pEditView->GetStartDocPos().Y() );
+ }
+ else if( rTextHint.GetId() == TEXT_HINT_TEXTHEIGHTCHANGED )
+ {
+ if ( pEditView->GetStartDocPos().Y() )
+ {
+ long nOutHeight = GetOutputSizePixel().Height();
+ long nTextHeight = pEditEngine->GetTextHeight();
+ if ( nTextHeight < nOutHeight )
+ pEditView->Scroll( 0, pEditView->GetStartDocPos().Y() );
+ }
+
+ SetScrollBarRanges();
+ }
+ else if( rTextHint.GetId() == TEXT_HINT_TEXTFORMATTED )
+ {
+ if ( pModulWindow->GetHScrollBar() )
+ {
+ ULONG nWidth = pEditEngine->CalcTextWidth();
+ if ( (long)nWidth != nCurTextWidth )
+ {
+ nCurTextWidth = nWidth;
+ pModulWindow->GetHScrollBar()->SetRange( Range( 0, (long)nCurTextWidth-1) );
+ pModulWindow->GetHScrollBar()->SetThumbPos( pEditView->GetStartDocPos().X() );
+ }
+ }
+ long nPrevTextWidth = nCurTextWidth;
+ nCurTextWidth = pEditEngine->CalcTextWidth();
+ if ( nCurTextWidth != nPrevTextWidth )
+ SetScrollBarRanges();
+ }
+ else if( rTextHint.GetId() == TEXT_HINT_PARAINSERTED )
+ {
+ ParagraphInsertedDeleted( rTextHint.GetValue(), TRUE );
+ DoDelayedSyntaxHighlight( rTextHint.GetValue() );
+ }
+ else if( rTextHint.GetId() == TEXT_HINT_PARAREMOVED )
+ {
+ ParagraphInsertedDeleted( rTextHint.GetValue(), FALSE );
+ }
+ else if( rTextHint.GetId() == TEXT_HINT_PARACONTENTCHANGED )
+ {
+ DoDelayedSyntaxHighlight( rTextHint.GetValue() );
+ }
+ }
+}
+
+void EditorWindow::ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 )
+{
+ ImplSetFont();
+}
+
+void EditorWindow::SetScrollBarRanges()
+{
+ // Extra-Methode, nicht InitScrollBars, da auch fuer EditEngine-Events.
+ if ( !pEditEngine )
+ return;
+
+ if ( pModulWindow->GetHScrollBar() )
+ pModulWindow->GetHScrollBar()->SetRange( Range( 0, nCurTextWidth-1 ) );
+
+ pModulWindow->GetEditVScrollBar().SetRange( Range( 0, pEditEngine->GetTextHeight()-1 ) );
+}
+
+void EditorWindow::InitScrollBars()
+{
+ if ( !pEditEngine )
+ return;
+
+ SetScrollBarRanges();
+ Size aOutSz( GetOutputSizePixel() );
+ pModulWindow->GetEditVScrollBar().SetVisibleSize( aOutSz.Height() );
+ pModulWindow->GetEditVScrollBar().SetPageSize( aOutSz.Height() * 8 / 10 );
+ pModulWindow->GetEditVScrollBar().SetLineSize( GetTextHeight() );
+ pModulWindow->GetEditVScrollBar().SetThumbPos( pEditView->GetStartDocPos().Y() );
+ pModulWindow->GetEditVScrollBar().Show();
+
+ if ( pModulWindow->GetHScrollBar() )
+ {
+ pModulWindow->GetHScrollBar()->SetVisibleSize( aOutSz.Width() );
+ pModulWindow->GetHScrollBar()->SetPageSize( aOutSz.Width() * 8 / 10 );
+ pModulWindow->GetHScrollBar()->SetLineSize( GetTextWidth( 'x' ) );
+ pModulWindow->GetHScrollBar()->SetThumbPos( pEditView->GetStartDocPos().X() );
+ pModulWindow->GetHScrollBar()->Show();
+ }
+}
+
+void EditorWindow::ImpDoHighlight( ULONG nLine )
+{
+ if ( bDoSyntaxHighlight )
+ {
+ String aLine( pEditEngine->GetText( nLine ) );
+ Range aChanges = aHighlighter.notifyChange( nLine, 0, &aLine, 1 );
+ if ( aChanges.Len() )
+ {
+ for ( long n = aChanges.Min() + 1; n <= aChanges.Max(); n++ )
+ aSyntaxLineTable.Insert( n, (void*)(ULONG)1 );
+ aSyntaxIdleTimer.Start();
+ }
+
+ BOOL bWasModified = pEditEngine->IsModified();
+ pEditEngine->RemoveAttribs( nLine, TRUE );
+ HighlightPortions aPortions;
+ aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+ USHORT nCount = aPortions.Count();
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ HighlightPortion& r = aPortions[i];
+ const Color& rColor = ((ModulWindowLayout*)pModulWindow->GetLayoutWindow())->getSyntaxColor(r.tokenType);
+ pEditEngine->SetAttrib( TextAttribFontColor( rColor ), nLine, r.nBegin, r.nEnd, TRUE );
+ }
+
+ // Das Highlighten soll kein Modify setzen
+ pEditEngine->SetModified( bWasModified );
+ }
+}
+
+void EditorWindow::ImplSetFont()
+{
+ if ( pSourceViewConfig )
+ {
+ String sFontName = pSourceViewConfig->GetFontName();
+ if ( !sFontName.Len() )
+ {
+ Font aTmpFont( OutputDevice::GetDefaultFont( DEFAULTFONT_FIXED, Application::GetSettings().GetUILanguage(), 0 , this ) );
+ sFontName = aTmpFont.GetName();
+ }
+ Size aFontSize( 0, pSourceViewConfig->GetFontHeight() );
+ Font aFont( sFontName, aFontSize );
+ aFont.SetColor( GetSettings().GetStyleSettings().GetFieldTextColor() );
+ SetPointFont( aFont );
+ aFont = GetFont();
+
+ if ( pModulWindow )
+ pModulWindow->GetBreakPointWindow().SetFont( aFont );
+
+ if ( pEditEngine )
+ {
+ BOOL bModified = pEditEngine->IsModified();
+ pEditEngine->SetFont( aFont );
+ pEditEngine->SetModified( bModified );
+ }
+ }
+}
+
+void EditorWindow::DoSyntaxHighlight( ULONG nPara )
+{
+ // Durch das DelayedSyntaxHighlight kann es passieren,
+ // dass die Zeile nicht mehr existiert!
+ if ( nPara < pEditEngine->GetParagraphCount() )
+ {
+ // leider weis ich nicht, ob genau diese Zeile Modified() ...
+ if ( pProgress )
+ pProgress->StepProgress();
+ ImpDoHighlight( nPara );
+ }
+}
+
+void EditorWindow::DoDelayedSyntaxHighlight( ULONG nPara )
+{
+ // Zeile wird nur in 'Liste' aufgenommen, im TimerHdl abgearbeitet.
+ // => Nicht Absaetze manipulieren, waehrend EditEngine formatiert.
+ if ( pProgress )
+ pProgress->StepProgress();
+
+ if ( !bHighlightning && bDoSyntaxHighlight )
+ {
+ if ( bDelayHighlight )
+ {
+ aSyntaxLineTable.Insert( nPara, (void*)(ULONG)1 );
+ aSyntaxIdleTimer.Start();
+ }
+ else
+ DoSyntaxHighlight( nPara );
+ }
+}
+
+IMPL_LINK( EditorWindow, SyntaxTimerHdl, Timer *, EMPTYARG )
+{
+ DBG_ASSERT( pEditView, "Noch keine View, aber Syntax-Highlight ?!" );
+
+ BOOL bWasModified = pEditEngine->IsModified();
+ // pEditEngine->SetUpdateMode( FALSE );
+
+ bHighlightning = TRUE;
+ USHORT nLine;
+ void* p = aSyntaxLineTable.First();
+ while ( p )
+ {
+ nLine = (USHORT)aSyntaxLineTable.GetCurKey();
+ DoSyntaxHighlight( nLine );
+ p = aSyntaxLineTable.Next();
+ }
+
+ // MT: Removed, because of idle format now when set/remove attribs...
+ // pEditView->SetAutoScroll( FALSE ); // #101043# Don't scroll because of syntax highlight
+ // pEditEngine->SetUpdateMode( TRUE );
+ // pEditView->ShowCursor( FALSE, TRUE );
+ // pEditView->SetAutoScroll( TRUE );
+
+ // #i45572#
+ if ( pEditView )
+ pEditView->ShowCursor( FALSE, TRUE );
+
+ pEditEngine->SetModified( bWasModified );
+
+ aSyntaxLineTable.Clear();
+ bHighlightning = FALSE;
+
+ return 0;
+}
+
+void EditorWindow::ParagraphInsertedDeleted( ULONG nPara, BOOL bInserted )
+{
+ if ( pProgress )
+ pProgress->StepProgress();
+
+ if ( !bInserted && ( nPara == TEXT_PARA_ALL ) )
+ {
+ pModulWindow->GetBreakPoints().reset();
+ pModulWindow->GetBreakPointWindow().Invalidate();
+ aHighlighter.initialize( HIGHLIGHT_BASIC );
+ }
+ else
+ {
+ // Brechpunkte Aktualisieren...
+ // keine Sonderbehandlung fuer EditEngine-CTOR ( Erste-Zeile-Problem ),
+ // da in diesem Moment noch keine BreakPoints.
+ // +1: Basic-Zeilen beginnen bei 1!
+ pModulWindow->GetBreakPoints().AdjustBreakPoints( (USHORT)nPara+1, bInserted );
+
+ // Im BreakPointWindow invalidieren...
+ long nLineHeight = GetTextHeight();
+ Size aSz = pModulWindow->GetBreakPointWindow().GetOutputSize();
+ Rectangle aInvRec( Point( 0, 0 ), aSz );
+ long nY = nPara*nLineHeight - pModulWindow->GetBreakPointWindow().GetCurYOffset();
+ aInvRec.Top() = nY;
+ pModulWindow->GetBreakPointWindow().Invalidate( aInvRec );
+
+ if ( bDoSyntaxHighlight )
+ {
+ String aDummy;
+ aHighlighter.notifyChange( nPara, bInserted ? 1 : (-1), &aDummy, 1 );
+ }
+ }
+}
+
+void EditorWindow::CreateProgress( const String& rText, ULONG nRange )
+{
+ DBG_ASSERT( !pProgress, "ProgressInfo existiert schon" );
+ pProgress = new ProgressInfo( IDE_DLL()->GetShell()->GetViewFrame()->GetObjectShell(), rText, nRange );
+}
+
+void EditorWindow::DestroyProgress()
+{
+ DELETEZ( pProgress );
+}
+
+void EditorWindow::ForceSyntaxTimeout()
+{
+ aSyntaxIdleTimer.Stop();
+ ((Link&)aSyntaxIdleTimer.GetTimeoutHdl()).Call( &aSyntaxIdleTimer );
+}
+
+
+
+BreakPointWindow::BreakPointWindow( Window* pParent ) :
+ Window( pParent, WB_BORDER )
+{
+ pModulWindow = 0;
+ nCurYOffset = 0;
+ setBackgroundColor(GetSettings().GetStyleSettings().GetFieldColor());
+ m_bHighContrastMode = GetSettings().GetStyleSettings().GetHighContrastMode();
+ nMarkerPos = MARKER_NOMARKER;
+
+ // nCurYOffset merken und nicht von EditEngine holen.
+ // Falls in EditEngine autom. gescrollt wurde, wuesste ich sonst nicht,
+ // wo ich gerade stehe.
+
+ SetHelpId( HID_BASICIDE_BREAKPOINTWINDOW );
+}
+
+
+
+__EXPORT BreakPointWindow::~BreakPointWindow()
+{
+}
+
+
+
+void __EXPORT BreakPointWindow::Resize()
+{
+/// Invalidate();
+}
+
+
+
+void __EXPORT BreakPointWindow::Paint( const Rectangle& )
+{
+ if ( SyncYOffset() )
+ return;
+
+ Size aOutSz( GetOutputSize() );
+ long nLineHeight = GetTextHeight();
+
+ Image aBrk1(((ModulWindowLayout *) pModulWindow->GetLayoutWindow())->
+ getImage(IMGID_BRKENABLED, m_bHighContrastMode));
+ Image aBrk0(((ModulWindowLayout *) pModulWindow->GetLayoutWindow())->
+ getImage(IMGID_BRKDISABLED, m_bHighContrastMode));
+ Size aBmpSz( aBrk1.GetSizePixel() );
+ aBmpSz = PixelToLogic( aBmpSz );
+ Point aBmpOff( 0, 0 );
+ aBmpOff.X() = ( aOutSz.Width() - aBmpSz.Width() ) / 2;
+ aBmpOff.Y() = ( nLineHeight - aBmpSz.Height() ) / 2;
+
+ BreakPoint* pBrk = GetBreakPoints().First();
+ while ( pBrk )
+ {
+ ULONG nLine = pBrk->nLine-1;
+ ULONG nY = nLine*nLineHeight - nCurYOffset;
+ DrawImage( Point( 0, nY ) + aBmpOff, pBrk->bEnabled ? aBrk1 : aBrk0 );
+ pBrk = GetBreakPoints().Next();
+ }
+ ShowMarker( TRUE );
+}
+
+
+
+void BreakPointWindow::DoScroll( long nHorzScroll, long nVertScroll )
+{
+ nCurYOffset -= nVertScroll;
+ Window::Scroll( nHorzScroll, nVertScroll );
+}
+
+
+
+void BreakPointWindow::SetMarkerPos( USHORT nLine, BOOL bError )
+{
+ if ( SyncYOffset() )
+ Update();
+
+ ShowMarker( FALSE ); // Alten wegzeichen...
+ nMarkerPos = nLine;
+ bErrorMarker = bError;
+ ShowMarker( TRUE ); // Neuen zeichnen...
+}
+
+void BreakPointWindow::ShowMarker( BOOL bShow )
+{
+ if ( nMarkerPos == MARKER_NOMARKER )
+ return;
+
+ Size aOutSz( GetOutputSize() );
+ long nLineHeight = GetTextHeight();
+
+ Image aMarker(((ModulWindowLayout*)pModulWindow->GetLayoutWindow())->
+ getImage(bErrorMarker
+ ? IMGID_ERRORMARKER : IMGID_STEPMARKER,
+ m_bHighContrastMode));
+
+ Size aMarkerSz( aMarker.GetSizePixel() );
+ aMarkerSz = PixelToLogic( aMarkerSz );
+ Point aMarkerOff( 0, 0 );
+ aMarkerOff.X() = ( aOutSz.Width() - aMarkerSz.Width() ) / 2;
+ aMarkerOff.Y() = ( nLineHeight - aMarkerSz.Height() ) / 2;
+
+ ULONG nY = nMarkerPos*nLineHeight - nCurYOffset;
+ Point aPos( 0, nY );
+ aPos += aMarkerOff;
+ if ( bShow )
+ DrawImage( aPos, aMarker );
+ else
+ Invalidate( Rectangle( aPos, aMarkerSz ) );
+}
+
+
+
+
+BreakPoint* BreakPointWindow::FindBreakPoint( const Point& rMousePos )
+{
+ long nLineHeight = GetTextHeight();
+ long nYPos = rMousePos.Y() + nCurYOffset;
+// Image aBrk( ((ModulWindowLayout*)pModulWindow->GetLayoutWindow())->GetImage( IMGID_BRKENABLED ) );
+// Size aBmpSz( aBrk.GetSizePixel() );
+// aBmpSz = PixelToLogic( aBmpSz );
+
+ BreakPoint* pBrk = GetBreakPoints().First();
+ while ( pBrk )
+ {
+ ULONG nLine = pBrk->nLine-1;
+ long nY = nLine*nLineHeight;
+ if ( ( nYPos > nY ) && ( nYPos < ( nY + nLineHeight ) ) )
+ return pBrk;
+ pBrk = GetBreakPoints().Next();
+ }
+ return 0;
+}
+
+void __EXPORT BreakPointWindow::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if ( rMEvt.GetClicks() == 2 )
+ {
+ Point aMousePos( PixelToLogic( rMEvt.GetPosPixel() ) );
+ long nLineHeight = GetTextHeight();
+ long nYPos = aMousePos.Y() + nCurYOffset;
+ long nLine = nYPos / nLineHeight + 1;
+ pModulWindow->ToggleBreakPoint( (ULONG)nLine );
+ // vielleicht mal etwas genauer...
+ Invalidate();
+ }
+}
+
+
+
+void __EXPORT BreakPointWindow::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
+ {
+ Point aPos( rCEvt.IsMouseEvent() ? rCEvt.GetMousePosPixel() : Point(1,1) );
+ Point aEventPos( PixelToLogic( aPos ) );
+ BreakPoint* pBrk = rCEvt.IsMouseEvent() ? FindBreakPoint( aEventPos ) : 0;
+ if ( pBrk )
+ {
+ // prueffen, ob Brechpunkt enabled....
+ PopupMenu aBrkPropMenu( IDEResId( RID_POPUP_BRKPROPS ) );
+ aBrkPropMenu.CheckItem( RID_ACTIV, pBrk->bEnabled );
+ switch ( aBrkPropMenu.Execute( this, aPos ) )
+ {
+ case RID_ACTIV:
+ {
+ pBrk->bEnabled = pBrk->bEnabled ? FALSE : TRUE;
+ pModulWindow->UpdateBreakPoint( *pBrk );
+ Invalidate();
+ }
+ break;
+ case RID_BRKPROPS:
+ {
+ BreakPointDialog aBrkDlg( this, GetBreakPoints() );
+ aBrkDlg.SetCurrentBreakPoint( pBrk );
+ aBrkDlg.Execute();
+ Invalidate();
+ }
+ break;
+ }
+ }
+ else
+ {
+ PopupMenu aBrkListMenu( IDEResId( RID_POPUP_BRKDLG ) );
+ switch ( aBrkListMenu.Execute( this, aPos ) )
+ {
+ case RID_BRKDLG:
+ {
+ BreakPointDialog aBrkDlg( this, GetBreakPoints() );
+ aBrkDlg.Execute();
+ Invalidate();
+ }
+ break;
+ }
+ }
+ }
+}
+
+BOOL BreakPointWindow::SyncYOffset()
+{
+ TextView* pView = pModulWindow->GetEditView();
+ if ( pView )
+ {
+ long nViewYOffset = pView->GetStartDocPos().Y();
+ if ( nCurYOffset != nViewYOffset )
+ {
+ nCurYOffset = nViewYOffset;
+ Invalidate();
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+// virtual
+void BreakPointWindow::DataChanged(DataChangedEvent const & rDCEvt)
+{
+ Window::DataChanged(rDCEvt);
+ if (rDCEvt.GetType() == DATACHANGED_SETTINGS
+ && (rDCEvt.GetFlags() & SETTINGS_STYLE) != 0)
+ {
+ Color aColor(GetSettings().GetStyleSettings().GetFieldColor());
+ if (aColor
+ != rDCEvt.GetOldSettings()->GetStyleSettings().GetFieldColor())
+ {
+ setBackgroundColor(aColor);
+ m_bHighContrastMode = GetSettings().GetStyleSettings().GetHighContrastMode();
+ Invalidate();
+ }
+ }
+}
+
+void BreakPointWindow::setBackgroundColor(Color aColor)
+{
+ SetBackground(Wallpaper(aColor));
+}
+
+
+const USHORT ITEM_ID_VARIABLE = 1;
+const USHORT ITEM_ID_VALUE = 2;
+const USHORT ITEM_ID_TYPE = 3;
+
+WatchWindow::WatchWindow( Window* pParent ) :
+ BasicDockingWindow( pParent ),
+ aWatchStr( IDEResId( RID_STR_REMOVEWATCH ) ),
+ aXEdit( this, IDEResId( RID_EDT_WATCHEDIT ) ),
+ aRemoveWatchButton( this, IDEResId( RID_IMGBTN_REMOVEWATCH ) ),
+ aTreeListBox( this, WB_BORDER | WB_3DLOOK | WB_HASBUTTONS | WB_HASLINES | WB_HSCROLL | WB_TABSTOP
+ | WB_HASLINESATROOT | WB_HASBUTTONSATROOT ),
+ aHeaderBar( this, WB_BUTTONSTYLE | WB_BORDER )
+{
+ nVirtToolBoxHeight = aXEdit.GetSizePixel().Height() + 7;
+ nHeaderBarHeight = 16;
+
+ aTreeListBox.SetHelpId(HID_BASICIDE_WATCHWINDOW_LIST);
+ aTreeListBox.EnableInplaceEditing( TRUE );
+ aTreeListBox.SetSelectHdl( LINK( this, WatchWindow, TreeListHdl ) );
+ aTreeListBox.SetPosPixel( Point( DWBORDER, nVirtToolBoxHeight + nHeaderBarHeight ) );
+ aTreeListBox.SetHighlightRange( 1, 5 );
+
+ Point aPnt( DWBORDER, nVirtToolBoxHeight + 1 );
+ aHeaderBar.SetPosPixel( aPnt );
+ aHeaderBar.SetEndDragHdl( LINK( this, WatchWindow, implEndDragHdl ) );
+
+ long nVarTabWidth = 220;
+ long nValueTabWidth = 100;
+ long nTypeTabWidth = 1250;
+ aHeaderBar.InsertItem( ITEM_ID_VARIABLE, String( IDEResId( RID_STR_WATCHVARIABLE ) ), nVarTabWidth );
+ aHeaderBar.InsertItem( ITEM_ID_VALUE, String( IDEResId( RID_STR_WATCHVALUE ) ), nValueTabWidth );
+ aHeaderBar.InsertItem( ITEM_ID_TYPE, String( IDEResId( RID_STR_WATCHTYPE ) ), nTypeTabWidth );
+
+ long tabs[ 4 ];
+ tabs[ 0 ] = 3; // two tabs
+ tabs[ 1 ] = 0;
+ tabs[ 2 ] = nVarTabWidth;
+ tabs[ 3 ] = nVarTabWidth + nValueTabWidth;
+ aTreeListBox.SvHeaderTabListBox::SetTabs( tabs, MAP_PIXEL );
+ aTreeListBox.InitHeaderBar( &aHeaderBar );
+
+ aTreeListBox.SetNodeDefaultImages( );
+
+ aHeaderBar.Show();
+
+ aRemoveWatchButton.Disable();
+
+ aTreeListBox.Show();
+
+ long nTextLen = GetTextWidth( aWatchStr ) + DWBORDER;
+ aXEdit.SetPosPixel( Point( nTextLen, 3 ) );
+ aXEdit.SetAccHdl( LINK( this, WatchWindow, EditAccHdl ) );
+ aXEdit.GetAccelerator().InsertItem( 1, KeyCode( KEY_RETURN ) );
+ aXEdit.GetAccelerator().InsertItem( 2, KeyCode( KEY_ESCAPE ) );
+ aXEdit.Show();
+
+ aRemoveWatchButton.SetModeImage(Image(IDEResId(RID_IMG_REMOVEWATCH_HC)),
+ BMP_COLOR_HIGHCONTRAST);
+ aRemoveWatchButton.SetClickHdl( LINK( this, WatchWindow, ButtonHdl ) );
+ aRemoveWatchButton.SetPosPixel( Point( nTextLen + aXEdit.GetSizePixel().Width() + 4, 2 ) );
+ Size aSz( aRemoveWatchButton.GetModeImage().GetSizePixel() );
+ aSz.Width() += 6;
+ aSz.Height() += 6;
+ aRemoveWatchButton.SetSizePixel( aSz );
+ aRemoveWatchButton.Show();
+
+ SetText( String( IDEResId( RID_STR_WATCHNAME ) ) );
+
+ SetHelpId( HID_BASICIDE_WATCHWINDOW );
+
+ // make watch window keyboard accessible
+ GetSystemWindow()->GetTaskPaneList()->AddWindow( this );
+}
+
+
+
+__EXPORT WatchWindow::~WatchWindow()
+{
+ GetSystemWindow()->GetTaskPaneList()->RemoveWindow( this );
+}
+
+
+
+void __EXPORT WatchWindow::Paint( const Rectangle& )
+{
+ DrawText( Point( DWBORDER, 7 ), aWatchStr );
+ lcl_DrawIDEWindowFrame( this );
+}
+
+
+
+void __EXPORT WatchWindow::Resize()
+{
+ Size aSz = GetOutputSizePixel();
+ Size aBoxSz( aSz.Width() - 2*DWBORDER, aSz.Height() - nVirtToolBoxHeight - DWBORDER );
+
+ if ( aBoxSz.Width() < 4 ) // < 4, weil noch Border...
+ aBoxSz.Width() = 0;
+ if ( aBoxSz.Height() < 4 )
+ aBoxSz.Height() = 0;
+
+ aBoxSz.Height() -= nHeaderBarHeight;
+ aTreeListBox.SetSizePixel( aBoxSz );
+ aTreeListBox.GetHScroll()->SetPageSize( aTreeListBox.GetHScroll()->GetVisibleSize() );
+
+ aBoxSz.Height() = nHeaderBarHeight;
+ aHeaderBar.SetSizePixel( aBoxSz );
+
+ Invalidate(); //Wegen DrawLine im Paint...
+}
+
+struct MemberList
+{
+ String* mpMemberNames;
+ int mnMemberCount;
+
+ MemberList( void )
+ : mpMemberNames( NULL )
+ , mnMemberCount( 0 )
+ {}
+ ~MemberList()
+ {
+ clear();
+ }
+
+ void clear( void );
+ void allocList( int nCount );
+};
+
+void MemberList::clear( void )
+{
+ if( mnMemberCount )
+ {
+ delete[] mpMemberNames;
+ mnMemberCount = 0;
+ }
+}
+
+void MemberList::allocList( int nCount )
+{
+ clear();
+ if( nCount > 0 )
+ {
+ mnMemberCount = nCount;
+ mpMemberNames = new String[ mnMemberCount ];
+ }
+}
+
+struct WatchItem
+{
+ String maName;
+ String maDisplayName;
+ SbxObjectRef mpObject;
+ MemberList maMemberList;
+
+ SbxDimArrayRef mpArray;
+ int nDimLevel; // 0 = Root
+ int nDimCount;
+ short* pIndices;
+
+ WatchItem* mpArrayParentItem;
+
+ WatchItem( void )
+ : nDimLevel( 0 )
+ , nDimCount( 0 )
+ , pIndices( NULL )
+ , mpArrayParentItem( NULL )
+ {}
+ ~WatchItem()
+ { clearWatchItem(); }
+
+ void clearWatchItem( bool bIncludeArrayData=true )
+ {
+ mpObject = NULL;
+ maMemberList.clear();
+ if( bIncludeArrayData )
+ {
+ mpArray = NULL;
+ nDimLevel = 0;
+ nDimCount = 0;
+ delete[] pIndices;
+ pIndices = NULL;
+ }
+ }
+
+ WatchItem* GetRootItem( void );
+ SbxDimArray* GetRootArray( void );
+};
+
+WatchItem* WatchItem::GetRootItem( void )
+{
+ WatchItem* pItem = mpArrayParentItem;
+ while( pItem )
+ {
+ if( pItem->mpArray.Is() )
+ break;
+ pItem = pItem->mpArrayParentItem;
+ }
+ return pItem;
+}
+
+SbxDimArray* WatchItem::GetRootArray( void )
+{
+ WatchItem* pRootItem = GetRootItem();
+ SbxDimArray* pRet = NULL;
+ if( pRootItem )
+ pRet = pRootItem->mpArray;
+ return pRet;
+}
+
+void WatchWindow::AddWatch( const String& rVName )
+{
+ WatchItem* pWatchItem = new WatchItem;
+ String aVar, aIndex;
+ lcl_SeparateNameAndIndex( rVName, aVar, aIndex );
+ pWatchItem->maName = aVar;
+
+ String aWatchStr_( aVar );
+ aWatchStr_ += String( RTL_CONSTASCII_USTRINGPARAM( "\t\t" ) );
+ SvLBoxEntry* pNewEntry = aTreeListBox.InsertEntry( aWatchStr_, 0, TRUE, LIST_APPEND );
+ pNewEntry->SetUserData( pWatchItem );
+
+ aTreeListBox.Select( pNewEntry, TRUE );
+ aTreeListBox.MakeVisible( pNewEntry );
+ aRemoveWatchButton.Enable();
+}
+
+BOOL WatchWindow::RemoveSelectedWatch()
+{
+ SvLBoxEntry* pEntry = aTreeListBox.GetCurEntry();
+ if ( pEntry )
+ {
+ aTreeListBox.GetModel()->Remove( pEntry );
+ pEntry = aTreeListBox.GetCurEntry();
+ if ( pEntry )
+ aXEdit.SetText( ((WatchItem*)pEntry->GetUserData())->maName );
+ else
+ aXEdit.SetText( String() );
+ if ( !aTreeListBox.GetEntryCount() )
+ aRemoveWatchButton.Disable();
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+IMPL_LINK_INLINE_START( WatchWindow, ButtonHdl, ImageButton *, pButton )
+{
+ if ( pButton == &aRemoveWatchButton )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_REMOVEWATCH );
+ }
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( WatchWindow, ButtonHdl, ImageButton *, pButton )
+
+
+
+IMPL_LINK_INLINE_START( WatchWindow, TreeListHdl, SvTreeListBox *, EMPTYARG )
+{
+ SvLBoxEntry* pCurEntry = aTreeListBox.GetCurEntry();
+ if ( pCurEntry && pCurEntry->GetUserData() )
+ aXEdit.SetText( ((WatchItem*)pCurEntry->GetUserData())->maName );
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( WatchWindow, TreeListHdl, SvTreeListBox *, EMPTYARG )
+
+
+IMPL_LINK_INLINE_START( WatchWindow, implEndDragHdl, HeaderBar *, pBar )
+{
+ (void)pBar;
+
+ const sal_Int32 TAB_WIDTH_MIN = 10;
+ sal_Int32 nMaxWidth =
+ aHeaderBar.GetSizePixel().getWidth() - 2 * TAB_WIDTH_MIN;
+
+ sal_Int32 nVariableWith = aHeaderBar.GetItemSize( ITEM_ID_VARIABLE );
+ if( nVariableWith < TAB_WIDTH_MIN )
+ aHeaderBar.SetItemSize( ITEM_ID_VARIABLE, TAB_WIDTH_MIN );
+ else if( nVariableWith > nMaxWidth )
+ aHeaderBar.SetItemSize( ITEM_ID_VARIABLE, nMaxWidth );
+
+ sal_Int32 nValueWith = aHeaderBar.GetItemSize( ITEM_ID_VALUE );
+ if( nValueWith < TAB_WIDTH_MIN )
+ aHeaderBar.SetItemSize( ITEM_ID_VALUE, TAB_WIDTH_MIN );
+ else if( nValueWith > nMaxWidth )
+ aHeaderBar.SetItemSize( ITEM_ID_VALUE, nMaxWidth );
+
+ if (aHeaderBar.GetItemSize( ITEM_ID_TYPE ) < TAB_WIDTH_MIN)
+ aHeaderBar.SetItemSize( ITEM_ID_TYPE, TAB_WIDTH_MIN );
+
+ sal_Int32 nPos = 0;
+ USHORT nTabs = aHeaderBar.GetItemCount();
+ // OSL_ASSERT( m_treelb->TabCount() == nTabs );
+ for( USHORT i = 1 ; i < nTabs ; ++i )
+ {
+ nPos += aHeaderBar.GetItemSize( i );
+ aTreeListBox.SetTab( i, nPos, MAP_PIXEL );
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( WatchWindow, implEndDragHdl, HeaderBar *, pBar )
+
+
+IMPL_LINK( WatchWindow, EditAccHdl, Accelerator *, pAcc )
+{
+ switch ( pAcc->GetCurKeyCode().GetCode() )
+ {
+ case KEY_RETURN:
+ {
+ String aCurText( aXEdit.GetText() );
+ if ( aCurText.Len() )
+ {
+ AddWatch( aCurText );
+ aXEdit.SetSelection( Selection( 0, 0xFFFF ) );
+ UpdateWatches();
+ }
+ else
+ Sound::Beep();
+ }
+ break;
+ case KEY_ESCAPE:
+ {
+ aXEdit.SetText( String() );
+ }
+ break;
+ }
+
+ return 0;
+}
+
+void WatchWindow::UpdateWatches( bool bBasicStopped )
+{
+ aTreeListBox.UpdateWatches( bBasicStopped );
+}
+
+
+StackWindow::StackWindow( Window* pParent ) :
+ BasicDockingWindow( pParent ),
+ aTreeListBox( this, WB_BORDER | WB_3DLOOK | WB_HSCROLL | WB_TABSTOP ),
+ aGotoCallButton( this, IDEResId( RID_IMGBTN_GOTOCALL ) ),
+ aStackStr( IDEResId( RID_STR_STACK ) )
+{
+ aTreeListBox.SetHelpId(HID_BASICIDE_STACKWINDOW_LIST);
+ aTreeListBox.SetPosPixel( Point( DWBORDER, nVirtToolBoxHeight ) );
+ aTreeListBox.SetHighlightRange();
+ aTreeListBox.SetSelectionMode( NO_SELECTION );
+ aTreeListBox.InsertEntry( String(), 0, FALSE, LIST_APPEND );
+ aTreeListBox.Show();
+
+ SetText( String( IDEResId( RID_STR_STACKNAME ) ) );
+
+ SetHelpId( HID_BASICIDE_STACKWINDOW );
+
+ aGotoCallButton.SetClickHdl( LINK( this, StackWindow, ButtonHdl ) );
+ aGotoCallButton.SetPosPixel( Point( DWBORDER, 2 ) );
+ Size aSz( aGotoCallButton.GetModeImage().GetSizePixel() );
+ aSz.Width() += 6;
+ aSz.Height() += 6;
+ aGotoCallButton.SetSizePixel( aSz );
+// aGotoCallButton.Show(); // wird vom Basic noch nicht unterstuetzt!
+ aGotoCallButton.Hide();
+
+ // make stack window keyboard accessible
+ GetSystemWindow()->GetTaskPaneList()->AddWindow( this );
+}
+
+
+
+__EXPORT StackWindow::~StackWindow()
+{
+ GetSystemWindow()->GetTaskPaneList()->RemoveWindow( this );
+}
+
+
+
+void __EXPORT StackWindow::Paint( const Rectangle& )
+{
+ DrawText( Point( DWBORDER, 7 ), aStackStr );
+ lcl_DrawIDEWindowFrame( this );
+}
+
+
+
+void __EXPORT StackWindow::Resize()
+{
+ Size aSz = GetOutputSizePixel();
+ Size aBoxSz( aSz.Width() - 2*DWBORDER, aSz.Height() - nVirtToolBoxHeight - DWBORDER );
+
+ if ( aBoxSz.Width() < 4 ) // < 4, weil noch Border...
+ aBoxSz.Width() = 0;
+ if ( aBoxSz.Height() < 4 )
+ aBoxSz.Height() = 0;
+
+ aTreeListBox.SetSizePixel( aBoxSz );
+
+ Invalidate(); //Wegen DrawLine im Paint...
+}
+
+
+
+IMPL_LINK_INLINE_START( StackWindow, ButtonHdl, ImageButton *, pButton )
+{
+ if ( pButton == &aGotoCallButton )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_GOTOCALL );
+ }
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( StackWindow, ButtonHdl, ImageButton *, pButton )
+
+
+
+void __EXPORT StackWindow::UpdateCalls()
+{
+ aTreeListBox.SetUpdateMode( FALSE );
+ aTreeListBox.Clear();
+
+ if ( StarBASIC::IsRunning() )
+ {
+ SbxError eOld = SbxBase::GetError();
+ aTreeListBox.SetSelectionMode( SINGLE_SELECTION );
+
+ USHORT nScope = 0;
+ SbMethod* pMethod = StarBASIC::GetActiveMethod( nScope );
+ while ( pMethod )
+ {
+ String aEntry( String::CreateFromInt32(nScope ));
+ if ( aEntry.Len() < 2 )
+ aEntry.Insert( ' ', 0 );
+ aEntry += String( RTL_CONSTASCII_USTRINGPARAM( ": " ) );
+ aEntry += pMethod->GetName();
+ SbxArray* pParams = pMethod->GetParameters();
+ SbxInfo* pInfo = pMethod->GetInfo();
+ if ( pParams )
+ {
+ aEntry += '(';
+ // 0 ist der Name der Sub...
+ for ( USHORT nParam = 1; nParam < pParams->Count(); nParam++ )
+ {
+ SbxVariable* pVar = pParams->Get( nParam );
+ DBG_ASSERT( pVar, "Parameter?!" );
+ if ( pVar->GetName().Len() )
+ aEntry += pVar->GetName();
+ else if ( pInfo )
+ {
+ const SbxParamInfo* pParam = pInfo->GetParam( nParam );
+ if ( pParam )
+ aEntry += pParam->aName;
+ }
+ aEntry += '=';
+ if( pVar->GetType() & SbxARRAY )
+ aEntry += String( RTL_CONSTASCII_USTRINGPARAM( "..." ) );
+ else
+ aEntry += pVar->GetString();
+ if ( nParam < ( pParams->Count() - 1 ) )
+ aEntry += String( RTL_CONSTASCII_USTRINGPARAM( ", " ) );
+ }
+ aEntry += ')';
+ }
+ aTreeListBox.InsertEntry( aEntry, 0, FALSE, LIST_APPEND );
+ nScope++;
+ pMethod = StarBASIC::GetActiveMethod( nScope );
+ }
+
+ SbxBase::ResetError();
+ if( eOld != SbxERR_OK )
+ SbxBase::SetError( eOld );
+ }
+ else
+ {
+ aTreeListBox.SetSelectionMode( NO_SELECTION );
+ aTreeListBox.InsertEntry( String(), 0, FALSE, LIST_APPEND );
+ }
+
+ aTreeListBox.SetUpdateMode( TRUE );
+}
+
+
+
+
+ComplexEditorWindow::ComplexEditorWindow( ModulWindow* pParent ) :
+ Window( pParent, WB_3DLOOK | WB_CLIPCHILDREN ),
+ aBrkWindow( this ),
+ aEdtWindow( this ),
+ aEWVScrollBar( this, WB_VSCROLL | WB_DRAG )
+{
+ aEdtWindow.SetModulWindow( pParent );
+ aBrkWindow.SetModulWindow( pParent );
+ aEdtWindow.Show();
+ aBrkWindow.Show();
+
+ aEWVScrollBar.SetLineSize( SCROLL_LINE );
+ aEWVScrollBar.SetPageSize( SCROLL_PAGE );
+ aEWVScrollBar.SetScrollHdl( LINK( this, ComplexEditorWindow, ScrollHdl ) );
+ aEWVScrollBar.Show();
+}
+
+
+
+void __EXPORT ComplexEditorWindow::Resize()
+{
+ Size aOutSz = GetOutputSizePixel();
+ Size aSz( aOutSz );
+ aSz.Width() -= 2*DWBORDER;
+ aSz.Height() -= 2*DWBORDER;
+ long nBrkWidth = 20;
+ long nSBWidth = aEWVScrollBar.GetSizePixel().Width();
+
+ Size aBrkSz( Size( nBrkWidth, aSz.Height() ) );
+ aBrkWindow.SetPosSizePixel( Point( DWBORDER, DWBORDER ), aBrkSz );
+
+ Size aEWSz( Size( aSz.Width() - nBrkWidth - nSBWidth + 2, aSz.Height() ) );
+ aEdtWindow.SetPosSizePixel( Point( DWBORDER+aBrkSz.Width()-1, DWBORDER ), aEWSz );
+
+ aEWVScrollBar.SetPosSizePixel( Point( aOutSz.Width()-DWBORDER-nSBWidth, DWBORDER ), Size( nSBWidth, aSz.Height() ) );
+
+ // Macht das EditorWindow, ausserdem hier falsch, da Pixel
+// aEWVScrollBar.SetPageSize( aEWSz.Height() * 8 / 10 );
+// aEWVScrollBar.SetVisibleSize( aSz.Height() );
+// Invalidate();
+}
+
+IMPL_LINK( ComplexEditorWindow, ScrollHdl, ScrollBar *, pCurScrollBar )
+{
+ if ( aEdtWindow.GetEditView() )
+ {
+ DBG_ASSERT( pCurScrollBar == &aEWVScrollBar, "Wer scrollt hier ?" );
+ long nDiff = aEdtWindow.GetEditView()->GetStartDocPos().Y() - pCurScrollBar->GetThumbPos();
+ aEdtWindow.GetEditView()->Scroll( 0, nDiff );
+ aBrkWindow.DoScroll( 0, nDiff );
+ aEdtWindow.GetEditView()->ShowCursor( FALSE, TRUE );
+ pCurScrollBar->SetThumbPos( aEdtWindow.GetEditView()->GetStartDocPos().Y() );
+ }
+
+ return 0;
+}
+
+// virtual
+void ComplexEditorWindow::DataChanged(DataChangedEvent const & rDCEvt)
+{
+ Window::DataChanged(rDCEvt);
+ if (rDCEvt.GetType() == DATACHANGED_SETTINGS
+ && (rDCEvt.GetFlags() & SETTINGS_STYLE) != 0)
+ {
+ Color aColor(GetSettings().GetStyleSettings().GetFaceColor());
+ if (aColor
+ != rDCEvt.GetOldSettings()->GetStyleSettings().GetFaceColor())
+ {
+ SetBackground(Wallpaper(aColor));
+ Invalidate();
+ }
+ }
+}
+
+// virtual
+uno::Reference< awt::XWindowPeer >
+EditorWindow::GetComponentInterface(BOOL bCreate)
+{
+ uno::Reference< awt::XWindowPeer > xPeer(
+ Window::GetComponentInterface(false));
+ if (!xPeer.is() && bCreate)
+ {
+ // Make sure edit engine and view are available:
+ if (!pEditEngine)
+ CreateEditEngine();
+
+ xPeer = new ::svt::TextWindowPeer(*GetEditView());
+ SetComponentInterface(xPeer);
+ }
+ return xPeer;
+}
+
+WatchTreeListBox::WatchTreeListBox( Window* pParent, WinBits nWinBits )
+ : SvHeaderTabListBox( pParent, nWinBits )
+{}
+
+WatchTreeListBox::~WatchTreeListBox()
+{
+ // User-Daten zerstoeren...
+ SvLBoxEntry* pEntry = First();
+ while ( pEntry )
+ {
+ delete (WatchItem*)pEntry->GetUserData();
+ pEntry = Next( pEntry );
+ }
+}
+
+void WatchTreeListBox::SetTabs()
+{
+ SvHeaderTabListBox::SetTabs();
+ USHORT nTabCount_ = aTabs.Count();
+ for( USHORT i = 0 ; i < nTabCount_ ; i++ )
+ {
+ SvLBoxTab* pTab = (SvLBoxTab*)aTabs.GetObject(i);
+ if( i == 2 )
+ pTab->nFlags |= SV_LBOXTAB_EDITABLE;
+ else
+ pTab->nFlags &= ~SV_LBOXTAB_EDITABLE;
+ }
+}
+
+void WatchTreeListBox::RequestingChilds( SvLBoxEntry * pParent )
+{
+ if( !StarBASIC::IsRunning() )
+ return;
+
+ if( GetChildCount( pParent ) > 0 )
+ return;
+
+ SvLBoxEntry * pEntry = pParent;
+ WatchItem* pItem = (WatchItem*)pEntry->GetUserData();
+
+ SbxDimArray* pArray = pItem->mpArray;
+ SbxDimArray* pRootArray = pItem->GetRootArray();
+ bool bArrayIsRootArray = false;
+ if( !pArray && pRootArray )
+ {
+ pArray = pRootArray;
+ bArrayIsRootArray = true;
+ }
+
+ SbxObject* pObj = pItem->mpObject;
+ if( pObj )
+ {
+ createAllObjectProperties( pObj );
+ SbxArray* pProps = pObj->GetProperties();
+ USHORT nPropCount = pProps->Count();
+ pItem->maMemberList.allocList( nPropCount );
+
+ for( USHORT i = 0 ; i < nPropCount - 3 ; i++ )
+ {
+ SbxVariable* pVar = pProps->Get( i );
+
+ String aName( pVar->GetName() );
+ pItem->maMemberList.mpMemberNames[i] = aName;
+ SvLBoxEntry* pChildEntry = SvTreeListBox::InsertEntry( aName, pEntry );
+ WatchItem* pChildItem = new WatchItem();
+ pChildItem->maName = aName;
+ pChildEntry->SetUserData( pChildItem );
+ }
+ if( nPropCount > 0 )
+ {
+ UpdateWatches();
+ }
+ }
+ else if( pArray )
+ {
+ USHORT nElementCount = 0;
+
+ // Loop through indices of current level
+ int nParentLevel = bArrayIsRootArray ? pItem->nDimLevel : 0;
+ int nThisLevel = nParentLevel + 1;
+ INT32 nMin, nMax;
+ pArray->GetDim32( nThisLevel, nMin, nMax );
+ for( INT32 i = nMin ; i <= nMax ; i++ )
+ {
+ WatchItem* pChildItem = new WatchItem();
+
+ // Copy data and create name
+ String aBaseName( pItem->maName );
+ pChildItem->maName = aBaseName;
+
+ String aIndexStr = String( RTL_CONSTASCII_USTRINGPARAM( "(" ) );
+ // pChildItem->mpArray = pItem->mpArray;
+ pChildItem->mpArrayParentItem = pItem;
+ pChildItem->nDimLevel = nThisLevel;
+ pChildItem->nDimCount = pItem->nDimCount;
+ pChildItem->pIndices = new short[ pChildItem->nDimCount ];
+ USHORT j;
+ for( j = 0 ; j < nParentLevel ; j++ )
+ {
+ short n = pChildItem->pIndices[j] = pItem->pIndices[j];
+ aIndexStr += String::CreateFromInt32( n );
+ aIndexStr += String( RTL_CONSTASCII_USTRINGPARAM( "," ) );
+ }
+ pChildItem->pIndices[ nParentLevel ] = sal::static_int_cast<short>( i );
+ aIndexStr += String::CreateFromInt32( i );
+ aIndexStr += String( RTL_CONSTASCII_USTRINGPARAM( ")" ) );
+
+ String aDisplayName;
+ WatchItem* pArrayRootItem = pChildItem->GetRootItem();
+ if( pArrayRootItem && pArrayRootItem->mpArrayParentItem )
+ aDisplayName = pItem->maDisplayName;
+ else
+ aDisplayName = aBaseName;
+ aDisplayName += aIndexStr;
+ pChildItem->maDisplayName = aDisplayName;
+
+ SvLBoxEntry* pChildEntry = SvTreeListBox::InsertEntry( aDisplayName, pEntry );
+ nElementCount++;
+ pChildEntry->SetUserData( pChildItem );
+ }
+ if( nElementCount > 0 )
+ {
+ UpdateWatches();
+ }
+ }
+}
+
+SbxBase* WatchTreeListBox::ImplGetSBXForEntry( SvLBoxEntry* pEntry, bool& rbArrayElement )
+{
+ SbxBase* pSBX = NULL;
+ rbArrayElement = false;
+
+ WatchItem* pItem = (WatchItem*)pEntry->GetUserData();
+ String aVName( pItem->maName );
+
+ SvLBoxEntry* pParentEntry = GetParent( pEntry );
+ WatchItem* pParentItem = pParentEntry ? (WatchItem*)pParentEntry->GetUserData() : NULL;
+ if( pParentItem )
+ {
+ SbxObject* pObj = pParentItem->mpObject;
+ SbxDimArray* pArray;
+ if( pObj )
+ {
+ pSBX = pObj->Find( aVName, SbxCLASS_DONTCARE );
+
+ SbxVariable* pVar;
+ if ( pSBX && (pVar = PTR_CAST( SbxVariable, pSBX )) != NULL
+ && !pSBX->ISA( SbxMethod ) )
+ {
+ // Force getting value
+ SbxValues aRes;
+ aRes.eType = SbxVOID;
+ pVar->Get( aRes );
+ }
+ }
+ // Array?
+ else if( (pArray = pItem->GetRootArray()) != NULL )
+ // else if( (pArray = pItem->mpArray) != NULL )
+ {
+ rbArrayElement = true;
+ if( pParentItem->nDimLevel + 1 == pParentItem->nDimCount )
+ // if( pItem->nDimLevel == pItem->nDimCount )
+ pSBX = pArray->Get( pItem->pIndices );
+ // else
+ // pSBX = pArray;
+ }
+ }
+ else
+ {
+ pSBX = StarBASIC::FindSBXInCurrentScope( aVName );
+ }
+ return pSBX;
+}
+
+BOOL __EXPORT WatchTreeListBox::EditingEntry( SvLBoxEntry* pEntry, Selection& )
+{
+ WatchItem* pItem = (WatchItem*)pEntry->GetUserData();
+
+ BOOL bEdit = FALSE;
+ if ( StarBASIC::IsRunning() && StarBASIC::GetActiveMethod() && !SbxBase::IsError() )
+ {
+ // No out of scope entries
+ bool bArrayElement;
+ SbxBase* pSBX = ImplGetSBXForEntry( pEntry, bArrayElement );
+ if ( ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) ) || bArrayElement )
+ {
+ // Accept no objects and only end nodes of arrays for editing
+ if( !pItem->mpObject && (pItem->mpArray == NULL || pItem->nDimLevel == pItem->nDimCount) )
+ {
+ aEditingRes = SvHeaderTabListBox::GetEntryText( pEntry, ITEM_ID_VALUE-1 );
+ aEditingRes.EraseLeadingChars();
+ aEditingRes.EraseTrailingChars();
+ bEdit = TRUE;
+ }
+ }
+ }
+
+ if ( !bEdit )
+ Sound::Beep();
+
+ return bEdit;
+}
+
+BOOL __EXPORT WatchTreeListBox::EditedEntry( SvLBoxEntry* pEntry, const String& rNewText )
+{
+ WatchItem* pItem = (WatchItem*)pEntry->GetUserData();
+ String aVName( pItem->maName );
+
+ String aResult = rNewText;
+ aResult.EraseLeadingChars();
+ aResult.EraseTrailingChars();
+
+ USHORT nResultLen = aResult.Len();
+ sal_Unicode cFirst = aResult.GetChar( 0 );
+ sal_Unicode cLast = aResult.GetChar( nResultLen - 1 );
+ if( cFirst == '\"' && cLast == '\"' )
+ aResult = aResult.Copy( 1, nResultLen - 2 );
+
+ BOOL bResModified = ( aResult != aEditingRes ) ? TRUE : FALSE;
+ BOOL bError = FALSE;
+ if ( !aVName.Len() )
+ {
+ bError = TRUE;
+ }
+
+ BOOL bRet = FALSE;
+
+ if ( bError )
+ {
+ Sound::Beep();
+ }
+ else if ( bResModified )
+ {
+ bRet = ImplBasicEntryEdited( pEntry, aResult );
+ }
+
+ return bRet;
+}
+
+BOOL WatchTreeListBox::ImplBasicEntryEdited( SvLBoxEntry* pEntry, const String& rResult )
+{
+ WatchItem* pItem = (WatchItem*)pEntry->GetUserData();
+ String aVName( pItem->maName );
+
+ BOOL bError = FALSE;
+ String aResult( rResult );
+ String aIndex;
+ bool bArrayElement;
+ SbxBase* pSBX = ImplGetSBXForEntry( pEntry, bArrayElement );
+
+ SbxBase* pToBeChanged = NULL;
+ if ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) )
+ {
+ SbxVariable* pVar = (SbxVariable*)pSBX;
+ SbxDataType eType = pVar->GetType();
+ if ( (BYTE)eType == (BYTE)SbxOBJECT )
+ bError = TRUE;
+ else if ( eType & SbxARRAY )
+ bError = TRUE;
+ else
+ pToBeChanged = pSBX;
+ }
+
+ if ( pToBeChanged )
+ {
+ if ( pToBeChanged->ISA( SbxVariable ) )
+ {
+ // Wenn der Typ variabel ist, macht die Konvertierung des SBX nichts,
+ // bei festem Typ wird der String konvertiert.
+ ((SbxVariable*)pToBeChanged)->PutStringExt( aResult );
+ }
+ else
+ bError = TRUE;
+ }
+
+ // Wenn jemand z.B. einen zu grossen Wert fuer ein Int eingegeben hat,
+ // folgt beim naechsten Step() ein Runtime-Error.
+ if ( SbxBase::IsError() )
+ {
+ bError = TRUE;
+ SbxBase::ResetError();
+ }
+
+ if ( bError )
+ Sound::Beep();
+
+ UpdateWatches();
+
+ // Der Text soll niemals 1-zu-1 uebernommen werden, weil dann das
+ // UpdateWatches verlorengeht.
+ return FALSE;
+}
+
+
+static void implCollapseModifiedObjectEntry( SvLBoxEntry* pParent, WatchTreeListBox* pThis )
+{
+ pThis->Collapse( pParent );
+
+ SvLBoxTreeList* pModel = pThis->GetModel();
+ SvLBoxEntry* pDeleteEntry;
+ while( (pDeleteEntry = pThis->SvTreeListBox::GetEntry( pParent, 0 )) != NULL )
+ {
+ implCollapseModifiedObjectEntry( pDeleteEntry, pThis );
+
+ WatchItem* pItem = (WatchItem*)pDeleteEntry->GetUserData();
+ delete pItem;
+ pModel->Remove( pDeleteEntry );
+ }
+}
+
+static String implCreateTypeStringForDimArray( WatchItem* pItem, SbxDataType eType )
+{
+ String aRetStr = getBasicTypeName( eType );
+
+ SbxDimArray* pArray = pItem->mpArray;
+ if( !pArray )
+ pArray = pItem->GetRootArray();
+ if( pArray )
+ {
+ int nDimLevel = pItem->nDimLevel;
+ int nDims = pItem->nDimCount;
+ if( nDimLevel < nDims )
+ {
+ aRetStr += '(';
+ for( int i = nDimLevel ; i < nDims ; i++ )
+ {
+ short nMin, nMax;
+ pArray->GetDim( sal::static_int_cast<short>( i+1 ), nMin, nMax );
+ aRetStr += String::CreateFromInt32( nMin );
+ aRetStr += String( RTL_CONSTASCII_USTRINGPARAM( " to " ) );
+ aRetStr += String::CreateFromInt32( nMax );
+ if( i < nDims - 1 )
+ aRetStr += String( RTL_CONSTASCII_USTRINGPARAM( ", " ) );
+ }
+ aRetStr += ')';
+ }
+ }
+ return aRetStr;
+}
+
+
+void implEnableChildren( SvLBoxEntry* pEntry, bool bEnable )
+// inline void implEnableChildren( SvLBoxEntry* pEntry, bool bEnable )
+{
+ if( bEnable )
+ {
+ pEntry->SetFlags(
+ (pEntry->GetFlags() &
+ ~(SV_ENTRYFLAG_NO_NODEBMP | SV_ENTRYFLAG_HAD_CHILDREN))
+ | SV_ENTRYFLAG_CHILDS_ON_DEMAND );
+ }
+ else
+ {
+ pEntry->SetFlags(
+ (pEntry->GetFlags() & ~(SV_ENTRYFLAG_CHILDS_ON_DEMAND)) );
+ }
+}
+
+void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
+{
+ SbMethod* pCurMethod = StarBASIC::GetActiveMethod();
+
+ SbxError eOld = SbxBase::GetError();
+ setBasicWatchMode( true );
+
+ SvLBoxEntry* pEntry = First();
+ while ( pEntry )
+ {
+ WatchItem* pItem = (WatchItem*)pEntry->GetUserData();
+ String aVName( pItem->maName );
+ DBG_ASSERT( aVName.Len(), "Var? - Darf nicht leer sein!" );
+ String aWatchStr;
+ String aTypeStr;
+ if ( pCurMethod )
+ {
+ bool bArrayElement;
+ SbxBase* pSBX = ImplGetSBXForEntry( pEntry, bArrayElement );
+
+ // Array? If no end node create type string
+ if( bArrayElement && pItem->nDimLevel < pItem->nDimCount )
+ {
+ SbxDimArray* pRootArray = pItem->GetRootArray();
+ SbxDataType eType = pRootArray->GetType();
+ // SbxDataType eType = pItem->mpArray->GetType();
+ aTypeStr = implCreateTypeStringForDimArray( pItem, eType );
+ implEnableChildren( pEntry, true );
+ }
+
+ bool bCollapse = false;
+ if ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) )
+ {
+ SbxVariable* pVar = (SbxVariable*)pSBX;
+ // Sonderbehandlung fuer Arrays:
+ SbxDataType eType = pVar->GetType();
+ if ( eType & SbxARRAY )
+ {
+ // Mehrdimensionale Arrays beruecksichtigen!
+ SbxBase* pBase = pVar->GetObject();
+ if ( pBase && pBase->ISA( SbxDimArray ) )
+ {
+ SbxDimArray* pNewArray = (SbxDimArray*)pBase;
+ SbxDimArray* pOldArray = pItem->mpArray;
+
+ bool bArrayChanged = false;
+ if( pNewArray != NULL && pOldArray != NULL )
+ {
+ // Compare Array dimensions to see if array has changed
+ // Can be a copy, so comparing pointers does not work
+ USHORT nOldDims = pOldArray->GetDims();
+ USHORT nNewDims = pNewArray->GetDims();
+ if( nOldDims != nNewDims )
+ {
+ bArrayChanged = true;
+ }
+ else
+ {
+ for( int i = 0 ; i < nOldDims ; i++ )
+ {
+ short nOldMin, nOldMax;
+ short nNewMin, nNewMax;
+
+ pOldArray->GetDim( sal::static_int_cast<short>( i+1 ), nOldMin, nOldMax );
+ pNewArray->GetDim( sal::static_int_cast<short>( i+1 ), nNewMin, nNewMax );
+ if( nOldMin != nNewMin || nOldMax != nNewMax )
+ {
+ bArrayChanged = true;
+ break;
+ }
+ }
+ }
+ }
+ else if( pNewArray == NULL || pOldArray == NULL )
+ bArrayChanged = true;
+
+ if( pNewArray )
+ implEnableChildren( pEntry, true );
+
+ // #i37227 Clear always and replace array
+ if( pNewArray != pOldArray )
+ {
+ pItem->clearWatchItem( false );
+ if( pNewArray )
+ {
+ implEnableChildren( pEntry, true );
+
+ pItem->mpArray = pNewArray;
+ USHORT nDims = pNewArray->GetDims();
+ pItem->nDimLevel = 0;
+ pItem->nDimCount = nDims;
+ }
+ }
+ if( bArrayChanged && pOldArray != NULL )
+ bCollapse = true;
+
+ aTypeStr = implCreateTypeStringForDimArray( pItem, eType );
+ }
+ else
+ aWatchStr += String( RTL_CONSTASCII_USTRINGPARAM( "<?>" ) );
+ }
+ else if ( (BYTE)eType == (BYTE)SbxOBJECT )
+ {
+ SbxObject* pObj = NULL;
+ SbxBase* pBase = pVar->GetObject();
+ if( pBase && pBase->ISA( SbxObject ) )
+ pObj = (SbxObject*)pBase;
+
+ if( pObj )
+ {
+ // Check if member list has changed
+ bool bObjChanged = false;
+ if( pItem->mpObject != NULL && pItem->maMemberList.mpMemberNames != NULL )
+ {
+ SbxArray* pProps = pObj->GetProperties();
+ USHORT nPropCount = pProps->Count();
+ for( USHORT i = 0 ; i < nPropCount - 3 ; i++ )
+ {
+ SbxVariable* pVar_ = pProps->Get( i );
+ String aName( pVar_->GetName() );
+ if( pItem->maMemberList.mpMemberNames[i] != aName )
+ {
+ bObjChanged = true;
+ break;
+ }
+ }
+ if( bObjChanged )
+ bCollapse = true;
+ }
+
+ pItem->mpObject = pObj;
+ implEnableChildren( pEntry, true );
+ aTypeStr = getBasicObjectTypeName( pObj );
+ }
+ else
+ {
+ aWatchStr = String( RTL_CONSTASCII_USTRINGPARAM( "Null" ) );
+ if( pItem->mpObject != NULL )
+ {
+ bCollapse = true;
+ pItem->clearWatchItem( false );
+
+ implEnableChildren( pEntry, false );
+ }
+ }
+ }
+ else
+ {
+ if( pItem->mpObject != NULL )
+ {
+ bCollapse = true;
+ pItem->clearWatchItem( false );
+
+ implEnableChildren( pEntry, false );
+ }
+
+ bool bString = ((BYTE)eType == (BYTE)SbxSTRING);
+ String aStrStr( RTL_CONSTASCII_USTRINGPARAM( "\"" ) );
+ if( bString )
+ aWatchStr += aStrStr;
+ aWatchStr += pVar->GetString();
+ if( bString )
+ aWatchStr += aStrStr;
+ }
+ if( !aTypeStr.Len() )
+ {
+ if( !pVar->IsFixed() )
+ aTypeStr = String( RTL_CONSTASCII_USTRINGPARAM( "Variant/" ) );
+ aTypeStr += getBasicTypeName( pVar->GetType() );
+ }
+ }
+ else if( !bArrayElement )
+ aWatchStr += String( RTL_CONSTASCII_USTRINGPARAM( "<Out of Scope>" ) );
+
+ if( bCollapse )
+ implCollapseModifiedObjectEntry( pEntry, this );
+
+ }
+ else if( bBasicStopped )
+ {
+ if( pItem->mpObject || pItem->mpArray )
+ {
+ implCollapseModifiedObjectEntry( pEntry, this );
+ pItem->mpObject = NULL;
+ }
+ }
+
+ SvHeaderTabListBox::SetEntryText( aWatchStr, pEntry, ITEM_ID_VALUE-1 );
+ SvHeaderTabListBox::SetEntryText( aTypeStr, pEntry, ITEM_ID_TYPE-1 );
+
+ pEntry = Next( pEntry );
+ }
+
+ // Force redraw
+ Invalidate();
+
+ SbxBase::ResetError();
+ if( eOld != SbxERR_OK )
+ SbxBase::SetError( eOld );
+ setBasicWatchMode( false );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/baside3.cxx b/basctl/source/basicide/baside3.cxx
new file mode 100644
index 000000000000..244440823169
--- /dev/null
+++ b/basctl/source/basicide/baside3.cxx
@@ -0,0 +1,1415 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+//svdraw.hxx
+//#define _SVDRAW_HXX ***
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS ***
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+//#define _SDR_NOUNDO ***
+#define _SDR_NOXOUTDEV
+
+#include <ide_pch.hxx>
+
+
+#include <vector>
+#include <basidesh.hrc>
+#include <baside3.hxx>
+#include <localizationmgr.hxx>
+#include <accessibledialogwindow.hxx>
+#include <dlged.hxx>
+#include <dlgedmod.hxx>
+#include <dlgedview.hxx>
+#include <dlgeddef.hxx>
+#include <propbrw.hxx>
+
+#include <basobj.hxx>
+#include <iderdll.hxx>
+#include <basidesh.hxx>
+#include <idetemp.hxx>
+#include <helpid.hrc>
+#include <bastype2.hxx>
+#include <svx/svdview.hxx>
+#include <editeng/unolingu.hxx>
+#include <tools/diagnose_ex.h>
+#include <tools/urlobj.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <xmlscript/xmldlg_imexp.hxx>
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <svtools/ehdl.hxx>
+#include <svtools/langtab.hxx>
+#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
+#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
+#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
+#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
+#include <com/sun/star/resource/XStringResourceResolver.hpp>
+#include <com/sun/star/resource/StringResourceWithLocation.hpp>
+#include <com/sun/star/task/XInteractionHandler.hpp>
+#include <com/sun/star/script/vba/XVBACompatibility.hpp>
+
+using namespace comphelper;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::io;
+using namespace ::com::sun::star::resource;
+using namespace ::com::sun::star::ui::dialogs;
+
+#if defined(MAC)
+#define FILTERMASK_ALL "****"
+#elif defined(OW) || defined(MTF)
+#define FILTERMASK_ALL "*"
+#elif defined(PM2)
+#define FILTERMASK_ALL ""
+#else
+#define FILTERMASK_ALL "*.*"
+#endif
+
+DBG_NAME( DialogWindow )
+
+TYPEINIT1( DialogWindow, IDEBaseWindow );
+
+DialogWindow::DialogWindow( Window* pParent, const ScriptDocument& rDocument, String aLibName, String aName,
+ const com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >& xDialogModel )
+ :IDEBaseWindow( pParent, rDocument, aLibName, aName )
+ ,pUndoMgr(NULL)
+{
+ InitSettings( TRUE, TRUE, TRUE );
+
+ pEditor = new DlgEditor( rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
+ pEditor->SetWindow( this );
+ pEditor->SetDialog( xDialogModel );
+
+ // Undo einrichten
+ pUndoMgr = new SfxUndoManager;
+
+ Link aDummyLink;
+ aOldNotifyUndoActionHdl = pEditor->GetModel()->GetNotifyUndoActionHdl();
+ pEditor->GetModel()->SetNotifyUndoActionHdl(
+ LINK(this, DialogWindow, NotifyUndoActionHdl));
+
+ SetHelpId( HID_BASICIDE_DIALOGWINDOW );
+
+ // set readonly mode for readonly libraries
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( GetDocument().getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) )
+ SetReadOnly( TRUE );
+
+ if ( rDocument.isDocument() && rDocument.isReadOnly() )
+ SetReadOnly( TRUE );
+}
+
+DialogWindow::~DialogWindow()
+{
+ delete pEditor;
+ delete pUndoMgr;
+}
+
+void DialogWindow::LoseFocus()
+{
+ if ( IsModified() )
+ StoreData();
+
+ Window::LoseFocus();
+}
+
+
+
+void DialogWindow::Paint( const Rectangle& rRect )
+{
+ pEditor->Paint( rRect );
+}
+
+
+
+void DialogWindow::Resize()
+{
+ if ( GetHScrollBar() && GetVScrollBar() ) {
+ pEditor->SetScrollBars( GetHScrollBar(), GetVScrollBar() );
+ }
+}
+
+
+
+void DialogWindow::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ pEditor->MouseButtonDown( rMEvt );
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER );
+}
+
+
+
+void DialogWindow::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ pEditor->MouseButtonUp( rMEvt );
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if( (pEditor->GetMode() == DLGED_INSERT) && !pEditor->IsCreateOK() )
+ {
+ pEditor->SetMode( DLGED_SELECT );
+ if ( pBindings )
+ pBindings->Invalidate( SID_CHOOSE_CONTROLS );
+ }
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER );
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ pBindings->Invalidate( SID_SAVEDOC );
+ }
+}
+
+
+
+void DialogWindow::MouseMove( const MouseEvent& rMEvt )
+{
+ pEditor->MouseMove( rMEvt );
+}
+
+
+
+void DialogWindow::KeyInput( const KeyEvent& rKEvt )
+{
+ if( rKEvt.GetKeyCode() == KEY_BACKSPACE )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BACKSPACE );
+ }
+ }
+ else
+ {
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if( pBindings && rKEvt.GetKeyCode() == KEY_TAB )
+ pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER );
+
+ if( !pEditor->KeyInput( rKEvt ) )
+ {
+ if( !SfxViewShell::Current()->KeyInput( rKEvt ) )
+ Window::KeyInput( rKEvt );
+ }
+ }
+}
+
+void DialogWindow::Command( const CommandEvent& rCEvt )
+{
+ if ( ( rCEvt.GetCommand() == COMMAND_WHEEL ) ||
+ ( rCEvt.GetCommand() == COMMAND_STARTAUTOSCROLL ) ||
+ ( rCEvt.GetCommand() == COMMAND_AUTOSCROLL ) )
+ {
+ HandleScrollCommand( rCEvt, GetHScrollBar(), GetVScrollBar() );
+ }
+ else if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if ( pDispatcher )
+ {
+ SdrView* pView = GetView();
+ if( !rCEvt.IsMouseEvent() && pView->AreObjectsMarked() )
+ {
+ Rectangle aMarkedRect( pView->GetMarkedRect() );
+ Point MarkedCenter( aMarkedRect.Center() );
+ Point PosPixel( LogicToPixel( MarkedCenter ) );
+ pDispatcher->ExecutePopup( IDEResId(RID_POPUP_DLGED), this, &PosPixel );
+ }
+ else
+ {
+ pDispatcher->ExecutePopup( IDEResId(RID_POPUP_DLGED) );
+ }
+
+ }
+ }
+ else
+ IDEBaseWindow::Command( rCEvt );
+}
+
+
+
+
+IMPL_LINK( DialogWindow, NotifyUndoActionHdl, SfxUndoAction *, pUndoAction )
+{
+ (void)pUndoAction;
+
+ // not working yet for unocontrols
+ /*
+ if (pUndoAction)
+ {
+ pUndoMgr->AddUndoAction( pUndoAction );
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_UNDO );
+ }
+ */
+
+ return 0;
+}
+
+
+
+void __EXPORT DialogWindow::DoInit()
+{
+ GetHScrollBar()->Show();
+ GetVScrollBar()->Show();
+ pEditor->SetScrollBars( GetHScrollBar(), GetVScrollBar() );
+}
+
+
+
+void __EXPORT DialogWindow::DoScroll( ScrollBar* pCurScrollBar )
+{
+ pEditor->DoScroll( pCurScrollBar );
+}
+
+void __EXPORT DialogWindow::GetState( SfxItemSet& rSet )
+{
+ SfxWhichIter aIter(rSet);
+ for ( USHORT nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich() )
+ {
+ switch ( nWh )
+ {
+ case SID_PASTE:
+ {
+ if ( !IsPasteAllowed() )
+ rSet.DisableItem( nWh );
+
+ if ( IsReadOnly() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_COPY:
+ {
+ // any object selected?
+ if ( !pEditor->GetView()->AreObjectsMarked() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_CUT:
+ case SID_DELETE:
+ case SID_BACKSPACE:
+ {
+ // any object selected?
+ if ( !pEditor->GetView()->AreObjectsMarked() )
+ rSet.DisableItem( nWh );
+
+ if ( IsReadOnly() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_REDO:
+ {
+ if ( !pUndoMgr->GetUndoActionCount() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+
+ // Nur Dialogfenster:
+ case SID_DIALOG_TESTMODE:
+ {
+ // ist die IDE noch aktiv?
+ if( IDE_DLL()->GetShell()->GetFrame() )
+ {
+ rSet.Put( SfxBoolItem( SID_DIALOG_TESTMODE,
+ (pEditor->GetMode() == DLGED_TEST) ? TRUE : FALSE) );
+ }
+ else
+ rSet.Put( SfxBoolItem( SID_DIALOG_TESTMODE,FALSE ));
+ }
+ break;
+
+ case SID_CHOOSE_CONTROLS:
+ {
+ if ( IsReadOnly() )
+ {
+ rSet.DisableItem( nWh );
+ }
+ else
+ {
+ SfxAllEnumItem aItem( SID_CHOOSE_CONTROLS );
+ if ( GetEditor()->GetMode() == DLGED_SELECT )
+ aItem.SetValue( SVX_SNAP_SELECT );
+ else
+ {
+ USHORT nObj;
+ switch( pEditor->GetInsertObj() )
+ {
+ case OBJ_DLG_PUSHBUTTON: nObj = SVX_SNAP_PUSHBUTTON; break;
+ case OBJ_DLG_RADIOBUTTON: nObj = SVX_SNAP_RADIOBUTTON; break;
+ case OBJ_DLG_CHECKBOX: nObj = SVX_SNAP_CHECKBOX; break;
+ case OBJ_DLG_LISTBOX: nObj = SVX_SNAP_LISTBOX; break;
+ case OBJ_DLG_COMBOBOX: nObj = SVX_SNAP_COMBOBOX; break;
+ case OBJ_DLG_GROUPBOX: nObj = SVX_SNAP_GROUPBOX; break;
+ case OBJ_DLG_EDIT: nObj = SVX_SNAP_EDIT; break;
+ case OBJ_DLG_FIXEDTEXT: nObj = SVX_SNAP_FIXEDTEXT; break;
+ case OBJ_DLG_IMAGECONTROL: nObj = SVX_SNAP_IMAGECONTROL; break;
+ case OBJ_DLG_PROGRESSBAR: nObj = SVX_SNAP_PROGRESSBAR; break;
+ case OBJ_DLG_HSCROLLBAR: nObj = SVX_SNAP_HSCROLLBAR; break;
+ case OBJ_DLG_VSCROLLBAR: nObj = SVX_SNAP_VSCROLLBAR; break;
+ case OBJ_DLG_HFIXEDLINE: nObj = SVX_SNAP_HFIXEDLINE; break;
+ case OBJ_DLG_VFIXEDLINE: nObj = SVX_SNAP_VFIXEDLINE; break;
+ case OBJ_DLG_DATEFIELD: nObj = SVX_SNAP_DATEFIELD; break;
+ case OBJ_DLG_TIMEFIELD: nObj = SVX_SNAP_TIMEFIELD; break;
+ case OBJ_DLG_NUMERICFIELD: nObj = SVX_SNAP_NUMERICFIELD; break;
+ case OBJ_DLG_CURRENCYFIELD: nObj = SVX_SNAP_CURRENCYFIELD; break;
+ case OBJ_DLG_FORMATTEDFIELD: nObj = SVX_SNAP_FORMATTEDFIELD; break;
+ case OBJ_DLG_PATTERNFIELD: nObj = SVX_SNAP_PATTERNFIELD; break;
+ case OBJ_DLG_FILECONTROL: nObj = SVX_SNAP_FILECONTROL; break;
+ case OBJ_DLG_TREECONTROL: nObj = SVX_SNAP_TREECONTROL; break;
+ default: nObj = 0;
+ }
+#ifdef DBG_UTIL
+ if( !nObj )
+ {
+ DBG_WARNING( "SID_CHOOSE_CONTROLS: Unbekannt!" );
+ }
+#endif
+ aItem.SetValue( nObj );
+ }
+
+ rSet.Put( aItem );
+ }
+ }
+ break;
+
+ case SID_SHOW_PROPERTYBROWSER:
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ if ( pViewFrame && !pViewFrame->HasChildWindow( SID_SHOW_PROPERTYBROWSER ) && !pEditor->GetView()->AreObjectsMarked() )
+ rSet.DisableItem( nWh );
+
+ if ( IsReadOnly() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ }
+ }
+}
+
+
+
+void __EXPORT DialogWindow::ExecuteCommand( SfxRequest& rReq )
+{
+ switch ( rReq.GetSlot() )
+ {
+ case SID_CUT:
+ if ( !IsReadOnly() )
+ {
+ GetEditor()->Cut();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ }
+ break;
+ case SID_DELETE:
+ if ( !IsReadOnly() )
+ {
+ GetEditor()->Delete();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ }
+ break;
+ case SID_COPY:
+ GetEditor()->Copy();
+ break;
+ case SID_PASTE:
+ if ( !IsReadOnly() )
+ {
+ GetEditor()->Paste();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ }
+ break;
+ case SID_CHOOSE_CONTROLS:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ DBG_ASSERT( pArgs, "Nix Args" );
+
+ const SfxAllEnumItem& rItem = (SfxAllEnumItem&)pArgs->Get( SID_CHOOSE_CONTROLS );
+ switch( rItem.GetValue() )
+ {
+ case SVX_SNAP_PUSHBUTTON:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_PUSHBUTTON );
+ }
+ break;
+ case SVX_SNAP_RADIOBUTTON:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_RADIOBUTTON );
+ }
+ break;
+ case SVX_SNAP_CHECKBOX:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_CHECKBOX);
+ }
+ break;
+ case SVX_SNAP_LISTBOX:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_LISTBOX );
+ }
+ break;
+ case SVX_SNAP_COMBOBOX:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_COMBOBOX );
+ }
+ break;
+ case SVX_SNAP_GROUPBOX:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_GROUPBOX );
+ }
+ break;
+ case SVX_SNAP_EDIT:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_EDIT );
+ }
+ break;
+ case SVX_SNAP_FIXEDTEXT:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_FIXEDTEXT );
+ }
+ break;
+ case SVX_SNAP_IMAGECONTROL:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_IMAGECONTROL );
+ }
+ break;
+ case SVX_SNAP_PROGRESSBAR:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_PROGRESSBAR );
+ }
+ break;
+ case SVX_SNAP_HSCROLLBAR:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_HSCROLLBAR );
+ }
+ break;
+ case SVX_SNAP_VSCROLLBAR:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_VSCROLLBAR );
+ }
+ break;
+ case SVX_SNAP_HFIXEDLINE:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_HFIXEDLINE );
+ }
+ break;
+ case SVX_SNAP_VFIXEDLINE:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_VFIXEDLINE );
+ }
+ break;
+ case SVX_SNAP_DATEFIELD:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_DATEFIELD );
+ }
+ break;
+ case SVX_SNAP_TIMEFIELD:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_TIMEFIELD );
+ }
+ break;
+ case SVX_SNAP_NUMERICFIELD:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_NUMERICFIELD );
+ }
+ break;
+ case SVX_SNAP_CURRENCYFIELD:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_CURRENCYFIELD );
+ }
+ break;
+ case SVX_SNAP_FORMATTEDFIELD:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_FORMATTEDFIELD );
+ }
+ break;
+ case SVX_SNAP_PATTERNFIELD:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_PATTERNFIELD );
+ }
+ break;
+ case SVX_SNAP_FILECONTROL:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_FILECONTROL );
+ }
+ break;
+ case SVX_SNAP_TREECONTROL:
+ {
+ GetEditor()->SetMode( DLGED_INSERT );
+ GetEditor()->SetInsertObj( OBJ_DLG_TREECONTROL );
+ }
+ break;
+
+ case SVX_SNAP_SELECT:
+ {
+ GetEditor()->SetMode( DLGED_SELECT );
+ }
+ break;
+ }
+
+ if ( rReq.GetModifier() & KEY_MOD1 )
+ {
+ if ( GetEditor()->GetMode() == DLGED_INSERT )
+ GetEditor()->CreateDefaultObject();
+ }
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ }
+ break;
+
+ case SID_DIALOG_TESTMODE:
+ {
+ DlgEdMode eOldMode = GetEditor()->GetMode();
+ GetEditor()->SetMode( DLGED_TEST );
+ GetEditor()->SetMode( eOldMode );
+ rReq.Done();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DIALOG_TESTMODE );
+ return;
+ }
+ case SID_EXPORT_DIALOG:
+ SaveDialog();
+ break;
+
+ case SID_IMPORT_DIALOG:
+ ImportDialog();
+ break;
+ }
+
+ rReq.Done();
+}
+
+Reference< container::XNameContainer > DialogWindow::GetDialog() const
+{
+ return pEditor->GetDialog();
+}
+
+BOOL DialogWindow::RenameDialog( const String& rNewName )
+{
+ if ( !BasicIDE::RenameDialog( this, GetDocument(), GetLibName(), GetName(), rNewName ) )
+ return FALSE;
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+
+ return TRUE;
+}
+
+void DialogWindow::DisableBrowser()
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxChildWindow* pChildWin = pViewFrame ? pViewFrame->GetChildWindow(SID_SHOW_PROPERTYBROWSER) : NULL;
+ if( pChildWin )
+ ((PropBrw*)(pChildWin->GetWindow()))->Update( NULL );
+}
+
+void DialogWindow::UpdateBrowser()
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxChildWindow* pChildWin = pViewFrame ? pViewFrame->GetChildWindow(SID_SHOW_PROPERTYBROWSER) : NULL;
+ if( pChildWin )
+ ((PropBrw*)(pChildWin->GetWindow()))->Update( pIDEShell );
+}
+
+static ::rtl::OUString aResourceResolverPropName =
+ ::rtl::OUString::createFromAscii( "ResourceResolver" );
+
+BOOL DialogWindow::SaveDialog()
+{
+ DBG_CHKTHIS( DialogWindow, 0 );
+ BOOL bDone = FALSE;
+
+ Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference < XFilePicker > xFP;
+ if( xMSF.is() )
+ {
+ Sequence <Any> aServiceType(1);
+ aServiceType[0] <<= TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD;
+ xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
+ }
+
+ Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
+ xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, sal_False);
+ Any aValue;
+ aValue <<= (sal_Bool) sal_True;
+ xFPControl->setValue(ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue);
+
+ if ( aCurPath.Len() )
+ xFP->setDisplayDirectory ( aCurPath );
+
+ xFP->setDefaultName( ::rtl::OUString( GetName() ) );
+
+ String aDialogStr( IDEResId( RID_STR_STDDIALOGNAME ) );
+ Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
+ xFltMgr->appendFilter( aDialogStr, String( RTL_CONSTASCII_USTRINGPARAM( "*.xdl" ) ) );
+ xFltMgr->appendFilter( String( IDEResId( RID_STR_FILTER_ALLFILES ) ), String( RTL_CONSTASCII_USTRINGPARAM( FILTERMASK_ALL ) ) );
+ xFltMgr->setCurrentFilter( aDialogStr );
+
+ if( xFP->execute() == RET_OK )
+ {
+ Sequence< ::rtl::OUString > aPaths = xFP->getFiles();
+ aCurPath = aPaths[0];
+
+ // export dialog model to xml
+ Reference< container::XNameContainer > xDialogModel = GetDialog();
+ Reference< XComponentContext > xContext;
+ Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
+ OSL_ASSERT( xProps.is() );
+ OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() );
+ Reference< XInputStream > xInput( xISP->createInputStream() );
+
+ Reference< XSimpleFileAccess > xSFI( xMSF->createInstance
+ ( ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ) ), UNO_QUERY );
+
+ Reference< XOutputStream > xOutput;
+ try
+ {
+ if( xSFI->exists( aCurPath ) )
+ xSFI->kill( aCurPath );
+ xOutput = xSFI->openFileWrite( aCurPath );
+ }
+ catch( Exception& )
+ {}
+
+ if( xOutput.is() )
+ {
+ Sequence< sal_Int8 > bytes;
+ sal_Int32 nRead = xInput->readBytes( bytes, xInput->available() );
+ for (;;)
+ {
+ if( nRead )
+ xOutput->writeBytes( bytes );
+
+ nRead = xInput->readBytes( bytes, 1024 );
+ if (! nRead)
+ break;
+ }
+ bDone = true;
+
+ // With resource?
+ Reference< beans::XPropertySet > xDialogModelPropSet( xDialogModel, UNO_QUERY );
+ Reference< resource::XStringResourceResolver > xStringResourceResolver;
+ if( xDialogModelPropSet.is() )
+ {
+ try
+ {
+ Any aResourceResolver = xDialogModelPropSet->getPropertyValue( aResourceResolverPropName );
+ aResourceResolver >>= xStringResourceResolver;
+ }
+ catch( beans::UnknownPropertyException& )
+ {}
+ }
+
+ bool bResource = false;
+ if( xStringResourceResolver.is() )
+ {
+ Sequence< lang::Locale > aLocaleSeq = xStringResourceResolver->getLocales();
+ sal_Int32 nLocaleCount = aLocaleSeq.getLength();
+ if( nLocaleCount > 0 )
+ bResource = true;
+ }
+
+ if( bResource )
+ {
+ INetURLObject aURLObj( aCurPath );
+ aURLObj.removeExtension();
+ ::rtl::OUString aDialogName( aURLObj.getName() );
+ aURLObj.removeSegment();
+ ::rtl::OUString aURL( aURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
+ sal_Bool bReadOnly = sal_False;
+ ::rtl::OUString aComment( ::rtl::OUString::createFromAscii( "# " ) );
+ aComment += aDialogName;
+ aComment += ::rtl::OUString::createFromAscii( " strings" );
+ Reference< task::XInteractionHandler > xDummyHandler;
+
+ // Remove old properties files in case of overwriting Dialog files
+ if( xSFI->isFolder( aURL ) )
+ {
+ Sequence< ::rtl::OUString > aContentSeq = xSFI->getFolderContents( aURL, false );
+
+ ::rtl::OUString aDialogName_( aDialogName );
+ aDialogName_ += ::rtl::OUString::createFromAscii( "_" );
+ sal_Int32 nCount = aContentSeq.getLength();
+ const ::rtl::OUString* pFiles = aContentSeq.getConstArray();
+ for( int i = 0 ; i < nCount ; i++ )
+ {
+ ::rtl::OUString aCompleteName = pFiles[i];
+ rtl::OUString aPureName;
+ rtl::OUString aExtension;
+ sal_Int32 iDot = aCompleteName.lastIndexOf( '.' );
+ sal_Int32 iSlash = aCompleteName.lastIndexOf( '/' );
+ if( iDot != -1 )
+ {
+ sal_Int32 iCopyFrom = (iSlash != -1) ? iSlash + 1 : 0;
+ aPureName = aCompleteName.copy( iCopyFrom, iDot-iCopyFrom );
+ aExtension = aCompleteName.copy( iDot + 1 );
+ }
+
+ if( aExtension.equalsAscii( "properties" ) ||
+ aExtension.equalsAscii( "default" ) )
+ {
+ if( aPureName.indexOf( aDialogName_ ) == 0 )
+ {
+ try
+ {
+ xSFI->kill( aCompleteName );
+ }
+ catch( uno::Exception& )
+ {}
+ }
+ }
+ }
+ }
+
+ Reference< XStringResourceWithLocation > xStringResourceWithLocation =
+ StringResourceWithLocation::create( xContext, aURL, bReadOnly,
+ xStringResourceResolver->getDefaultLocale(), aDialogName, aComment, xDummyHandler );
+
+ // Add locales
+ Sequence< lang::Locale > aLocaleSeq = xStringResourceResolver->getLocales();
+ const lang::Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 nLocaleCount = aLocaleSeq.getLength();
+ for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ )
+ {
+ const lang::Locale& rLocale = pLocales[ iLocale ];
+ xStringResourceWithLocation->newLocale( rLocale );
+ }
+
+ Reference< XStringResourceManager > xTargetStringResourceManager( xStringResourceWithLocation, uno::UNO_QUERY );
+
+ LocalizationMgr::copyResourceForDialog( xDialogModel,
+ xStringResourceResolver, xTargetStringResourceManager );
+
+ xStringResourceWithLocation->store();
+ }
+ }
+ else
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_COULDNTWRITE) ) ).Execute();
+ }
+
+ return bDone;
+}
+
+extern bool localesAreEqual( const ::com::sun::star::lang::Locale& rLocaleLeft,
+ const ::com::sun::star::lang::Locale& rLocaleRight );
+
+std::vector< lang::Locale > implGetLanguagesOnlyContainedInFirstSeq
+ ( Sequence< lang::Locale > aFirstSeq, Sequence< lang::Locale > aSecondSeq )
+{
+ std::vector< lang::Locale > avRet;
+
+ const lang::Locale* pFirst = aFirstSeq.getConstArray();
+ const lang::Locale* pSecond = aSecondSeq.getConstArray();
+ sal_Int32 nFirstCount = aFirstSeq.getLength();
+ sal_Int32 nSecondCount = aSecondSeq.getLength();
+
+ for( sal_Int32 iFirst = 0 ; iFirst < nFirstCount ; iFirst++ )
+ {
+ const lang::Locale& rFirstLocale = pFirst[ iFirst ];
+
+ bool bAlsoContainedInSecondSeq = false;
+ for( sal_Int32 iSecond = 0 ; iSecond < nSecondCount ; iSecond++ )
+ {
+ const lang::Locale& rSecondLocale = pSecond[ iSecond ];
+
+ bool bMatch = localesAreEqual( rFirstLocale, rSecondLocale );
+ if( bMatch )
+ {
+ bAlsoContainedInSecondSeq = true;
+ break;
+ }
+ }
+
+ if( !bAlsoContainedInSecondSeq )
+ avRet.push_back( rFirstLocale );
+ }
+
+ return avRet;
+}
+
+
+class NameClashQueryBox : public MessBox
+{
+public:
+ NameClashQueryBox( Window* pParent,
+ const XubString& rTitle, const XubString& rMessage );
+};
+
+NameClashQueryBox::NameClashQueryBox( Window* pParent,
+ const XubString& rTitle, const XubString& rMessage )
+ : MessBox( pParent, 0, rTitle, rMessage )
+{
+ if ( rTitle.Len() )
+ SetText( rTitle );
+
+ maMessText = rMessage;
+
+ AddButton( String( IDEResId( RID_STR_DLGIMP_CLASH_RENAME ) ), RET_YES,
+ BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_OKBUTTON | BUTTONDIALOG_FOCUSBUTTON );
+ AddButton( String( IDEResId( RID_STR_DLGIMP_CLASH_REPLACE ) ), RET_NO, 0 );
+ AddButton( BUTTON_CANCEL, RET_CANCEL, BUTTONDIALOG_CANCELBUTTON );
+
+ SetImage( GetSettings().GetStyleSettings().GetHighContrastMode() ?
+ QueryBox::GetStandardImageHC() : QueryBox::GetStandardImage() );
+}
+
+
+class LanguageMismatchQueryBox : public MessBox
+{
+public:
+ LanguageMismatchQueryBox( Window* pParent,
+ const XubString& rTitle, const XubString& rMessage );
+};
+
+LanguageMismatchQueryBox::LanguageMismatchQueryBox( Window* pParent,
+ const XubString& rTitle, const XubString& rMessage )
+ : MessBox( pParent, 0, rTitle, rMessage )
+{
+ if ( rTitle.Len() )
+ SetText( rTitle );
+
+ maMessText = rMessage;
+ AddButton( String( IDEResId( RID_STR_DLGIMP_MISMATCH_ADD ) ), RET_YES,
+ BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_OKBUTTON | BUTTONDIALOG_FOCUSBUTTON );
+ AddButton( String( IDEResId( RID_STR_DLGIMP_MISMATCH_OMIT ) ), RET_NO, 0 );
+ AddButton( BUTTON_CANCEL, RET_CANCEL, BUTTONDIALOG_CANCELBUTTON );
+ AddButton( BUTTON_HELP, BUTTONID_HELP, BUTTONDIALOG_HELPBUTTON, 4 );
+
+ SetImage( GetSettings().GetStyleSettings().GetHighContrastMode() ?
+ QueryBox::GetStandardImageHC() : QueryBox::GetStandardImage() );
+}
+
+BOOL implImportDialog( Window* pWin, const String& rCurPath, const ScriptDocument& rDocument, const String& aLibName )
+{
+ BOOL bDone = FALSE;
+
+ Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference < XFilePicker > xFP;
+ if( xMSF.is() )
+ {
+ Sequence <Any> aServiceType(1);
+ aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
+ xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
+ }
+
+ Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
+ xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, sal_False);
+ Any aValue;
+ aValue <<= (sal_Bool) sal_True;
+ xFPControl->setValue(ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue);
+
+ String aCurPath( rCurPath );
+ if ( aCurPath.Len() )
+ xFP->setDisplayDirectory ( aCurPath );
+
+ String aDialogStr( IDEResId( RID_STR_STDDIALOGNAME ) );
+ Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
+ xFltMgr->appendFilter( aDialogStr, String( RTL_CONSTASCII_USTRINGPARAM( "*.xdl" ) ) );
+ xFltMgr->appendFilter( String( IDEResId( RID_STR_FILTER_ALLFILES ) ), String( RTL_CONSTASCII_USTRINGPARAM( FILTERMASK_ALL ) ) );
+ xFltMgr->setCurrentFilter( aDialogStr );
+
+ if( xFP->execute() == RET_OK )
+ {
+ Sequence< ::rtl::OUString > aPaths = xFP->getFiles();
+ aCurPath = aPaths[0];
+
+ ::rtl::OUString aBasePath;
+ ::rtl::OUString aOUCurPath( aCurPath );
+ sal_Int32 iSlash = aOUCurPath.lastIndexOf( '/' );
+ if( iSlash != -1 )
+ aBasePath = aOUCurPath.copy( 0, iSlash + 1 );
+
+ try
+ {
+ // create dialog model
+ Reference< container::XNameContainer > xDialogModel( xMSF->createInstance
+ ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ), UNO_QUERY_THROW );
+
+ Reference< XSimpleFileAccess > xSFI( xMSF->createInstance
+ ( ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ) ), UNO_QUERY_THROW );
+
+ Reference< XInputStream > xInput;
+ if( xSFI->exists( aCurPath ) )
+ xInput = xSFI->openFileRead( aCurPath );
+
+ Reference< XComponentContext > xContext;
+ Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
+ OSL_ASSERT( xProps.is() );
+ OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
+
+ String aXmlDlgName;
+ Reference< beans::XPropertySet > xDialogModelPropSet( xDialogModel, UNO_QUERY );
+ if( xDialogModelPropSet.is() )
+ {
+ try
+ {
+ Any aXmlDialogNameAny = xDialogModelPropSet->getPropertyValue( DLGED_PROP_NAME );
+ ::rtl::OUString aOUXmlDialogName;
+ aXmlDialogNameAny >>= aOUXmlDialogName;
+ aXmlDlgName = aOUXmlDialogName;
+ }
+ catch( beans::UnknownPropertyException& )
+ {}
+ }
+ bool bValidName = (aXmlDlgName.Len() != 0);
+ OSL_ASSERT( bValidName );
+ if( !bValidName )
+ return bDone;
+
+ bool bDialogAlreadyExists = rDocument.hasDialog( aLibName, aXmlDlgName );
+
+ String aNewDlgName = aXmlDlgName;
+ enum NameClashMode
+ {
+ NO_CLASH,
+ CLASH_OVERWRITE_DIALOG,
+ CLASH_RENAME_DIALOG,
+ };
+ NameClashMode eNameClashMode = NO_CLASH;
+ if( bDialogAlreadyExists )
+ {
+ String aQueryBoxTitle( IDEResId( RID_STR_DLGIMP_CLASH_TITLE ) );
+ String aQueryBoxText( IDEResId( RID_STR_DLGIMP_CLASH_TEXT ) );
+ aQueryBoxText.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "$(ARG1)" ) ), aXmlDlgName );
+
+ NameClashQueryBox aQueryBox( pWin, aQueryBoxTitle, aQueryBoxText );
+ USHORT nRet = aQueryBox.Execute();
+ if( RET_YES == nRet )
+ {
+ // RET_YES == Rename, see NameClashQueryBox::NameClashQueryBox
+ eNameClashMode = CLASH_RENAME_DIALOG;
+
+ aNewDlgName = rDocument.createObjectName( E_DIALOGS, aLibName );
+ }
+ else if( RET_NO == nRet )
+ {
+ // RET_NO == Replace, see NameClashQueryBox::NameClashQueryBox
+ eNameClashMode = CLASH_OVERWRITE_DIALOG;
+ }
+ else if( RET_CANCEL == nRet )
+ {
+ return bDone;
+ }
+ }
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if( pIDEShell == NULL )
+ {
+ OSL_ASSERT( pIDEShell != NULL );
+ return bDone;
+ }
+
+ // Resource?
+ ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILocale();
+ Reference< task::XInteractionHandler > xDummyHandler;
+ bool bReadOnly = true;
+ Reference< XStringResourceWithLocation > xImportStringResource =
+ StringResourceWithLocation::create( xContext, aBasePath, bReadOnly,
+ aLocale, aXmlDlgName, ::rtl::OUString(), xDummyHandler );
+
+ Sequence< lang::Locale > aImportLocaleSeq = xImportStringResource->getLocales();
+ sal_Int32 nImportLocaleCount = aImportLocaleSeq.getLength();
+
+ Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, TRUE ) );
+ Reference< resource::XStringResourceManager > xLibStringResourceManager = LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+ sal_Int32 nLibLocaleCount = 0;
+ Sequence< lang::Locale > aLibLocaleSeq;
+ if( xLibStringResourceManager.is() )
+ {
+ aLibLocaleSeq = xLibStringResourceManager->getLocales();
+ nLibLocaleCount = aLibLocaleSeq.getLength();
+ }
+
+ // Check language matches
+ std::vector< lang::Locale > aOnlyInImportLanguages =
+ implGetLanguagesOnlyContainedInFirstSeq( aImportLocaleSeq, aLibLocaleSeq );
+ int nOnlyInImportLanguageCount = aOnlyInImportLanguages.size();
+
+ // For now: Keep languages from lib
+ bool bLibLocalized = (nLibLocaleCount > 0);
+ bool bImportLocalized = (nImportLocaleCount > 0);
+
+ bool bAddDialogLanguagesToLib = false;
+ if( nOnlyInImportLanguageCount > 0 )
+ {
+ String aQueryBoxTitle( IDEResId( RID_STR_DLGIMP_MISMATCH_TITLE ) );
+ String aQueryBoxText( IDEResId( RID_STR_DLGIMP_MISMATCH_TEXT ) );
+ LanguageMismatchQueryBox aQueryBox( pWin, aQueryBoxTitle, aQueryBoxText );
+ USHORT nRet = aQueryBox.Execute();
+ if( RET_YES == nRet )
+ {
+ // RET_YES == Add, see LanguageMismatchQueryBox::LanguageMismatchQueryBox
+ bAddDialogLanguagesToLib = true;
+ }
+ // RET_NO == Omit, see LanguageMismatchQueryBox::LanguageMismatchQueryBox
+ // -> nothing to do here
+ //else if( RET_NO == nRet )
+ //{
+ //}
+ else if( RET_CANCEL == nRet )
+ {
+ return bDone;
+ }
+ }
+
+ if( bImportLocalized )
+ {
+ bool bCopyResourcesForDialog = true;
+ if( bAddDialogLanguagesToLib )
+ {
+ LocalizationMgr* pCurMgr = pIDEShell->GetCurLocalizationMgr();
+
+ lang::Locale aFirstLocale;
+ aFirstLocale = aOnlyInImportLanguages[0];
+ if( nOnlyInImportLanguageCount > 1 )
+ {
+ // Check if import default belongs to only import languages and use it then
+ lang::Locale aImportDefaultLocale = xImportStringResource->getDefaultLocale();
+ lang::Locale aTmpLocale;
+ for( int i = 0 ; i < nOnlyInImportLanguageCount ; ++i )
+ {
+ aTmpLocale = aOnlyInImportLanguages[i];
+ if( localesAreEqual( aImportDefaultLocale, aTmpLocale ) )
+ {
+ aFirstLocale = aImportDefaultLocale;
+ break;
+ }
+ }
+ }
+
+ Sequence< lang::Locale > aFirstLocaleSeq( 1 );
+ aFirstLocaleSeq[0] = aFirstLocale;
+ pCurMgr->handleAddLocales( aFirstLocaleSeq );
+
+ if( nOnlyInImportLanguageCount > 1 )
+ {
+ Sequence< lang::Locale > aRemainingLocaleSeq( nOnlyInImportLanguageCount - 1 );
+ lang::Locale aTmpLocale;
+ int iSeq = 0;
+ for( int i = 0 ; i < nOnlyInImportLanguageCount ; ++i )
+ {
+ aTmpLocale = aOnlyInImportLanguages[i];
+ if( !localesAreEqual( aFirstLocale, aTmpLocale ) )
+ aRemainingLocaleSeq[iSeq++] = aTmpLocale;
+ }
+ pCurMgr->handleAddLocales( aRemainingLocaleSeq );
+ }
+ }
+ else if( !bLibLocalized )
+ {
+ Reference< resource::XStringResourceManager > xImportStringResourceManager( xImportStringResource, UNO_QUERY );
+ LocalizationMgr::resetResourceForDialog( xDialogModel, xImportStringResourceManager );
+ bCopyResourcesForDialog = false;
+ }
+
+ if( bCopyResourcesForDialog )
+ {
+ Reference< resource::XStringResourceResolver > xImportStringResourceResolver( xImportStringResource, UNO_QUERY );
+ LocalizationMgr::copyResourceForDroppedDialog( xDialogModel, aXmlDlgName,
+ xLibStringResourceManager, xImportStringResourceResolver );
+ }
+ }
+ else if( bLibLocalized )
+ {
+ LocalizationMgr::setResourceIDsForDialog( xDialogModel, xLibStringResourceManager );
+ }
+
+
+ LocalizationMgr::setStringResourceAtDialog( rDocument, aLibName, aNewDlgName, xDialogModel );
+
+ if( eNameClashMode == CLASH_OVERWRITE_DIALOG )
+ {
+ if ( BasicIDE::RemoveDialog( rDocument, aLibName, aNewDlgName ) )
+ {
+ IDEBaseWindow* pDlgWin = pIDEShell->FindDlgWin( rDocument, aLibName, aNewDlgName, FALSE, TRUE );
+ if( pDlgWin != NULL )
+ pIDEShell->RemoveWindow( pDlgWin, TRUE );
+ BasicIDE::MarkDocumentModified( rDocument );
+ }
+ else
+ {
+ // TODO: Assertion?
+ return bDone;
+ }
+ }
+
+ if( eNameClashMode == CLASH_RENAME_DIALOG )
+ {
+ bool bRenamed = false;
+ if( xDialogModelPropSet.is() )
+ {
+ try
+ {
+ Any aXmlDialogNameAny;
+ aXmlDialogNameAny <<= ::rtl::OUString( aNewDlgName );
+ xDialogModelPropSet->setPropertyValue( DLGED_PROP_NAME, aXmlDialogNameAny );
+ bRenamed = true;
+ }
+ catch( beans::UnknownPropertyException& )
+ {}
+ }
+
+
+ if( bRenamed )
+ {
+ LocalizationMgr::renameStringResourceIDs( rDocument, aLibName, aNewDlgName, xDialogModel );
+ }
+ else
+ {
+ // TODO: Assertion?
+ return bDone;
+ }
+ }
+
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
+ bool bSuccess = rDocument.insertDialog( aLibName, aNewDlgName, xISP );
+ if( bSuccess )
+ {
+ DialogWindow* pNewDlgWin = pIDEShell->CreateDlgWin( rDocument, aLibName, aNewDlgName );
+ pIDEShell->SetCurWindow( pNewDlgWin, TRUE );
+ }
+
+ bDone = TRUE;
+ }
+ catch( Exception& )
+ {}
+ }
+
+ return bDone;
+}
+
+BOOL DialogWindow::ImportDialog()
+{
+ DBG_CHKTHIS( DialogWindow, 0 );
+
+ const ScriptDocument& rDocument = GetDocument();
+ String aLibName = GetLibName();
+ BOOL bRet = implImportDialog( this, aCurPath, rDocument, aLibName );
+ return bRet;
+}
+
+DlgEdModel* DialogWindow::GetModel() const
+{
+ return pEditor ? pEditor->GetModel() : NULL;
+}
+
+DlgEdPage* DialogWindow::GetPage() const
+{
+ return pEditor ? pEditor->GetPage() : NULL;
+}
+
+DlgEdView* DialogWindow::GetView() const
+{
+ return pEditor ? pEditor->GetView() : NULL;
+}
+
+BOOL __EXPORT DialogWindow::IsModified()
+{
+ return pEditor->IsModified();
+}
+
+SfxUndoManager* __EXPORT DialogWindow::GetUndoManager()
+{
+ return pUndoMgr;
+}
+
+String DialogWindow::GetTitle()
+{
+ return GetName();
+}
+
+BasicEntryDescriptor DialogWindow::CreateEntryDescriptor()
+{
+ ScriptDocument aDocument( GetDocument() );
+ String aLibName( GetLibName() );
+ String aLibSubName;
+ LibraryLocation eLocation = aDocument.getLibraryLocation( aLibName );
+ return BasicEntryDescriptor( aDocument, eLocation, aLibName, aLibSubName, GetName(), OBJ_TYPE_DIALOG );
+}
+
+void DialogWindow::SetReadOnly( BOOL b )
+{
+ if ( pEditor )
+ {
+ if ( b )
+ pEditor->SetMode( DLGED_READONLY );
+ else
+ pEditor->SetMode( DLGED_SELECT );
+ }
+}
+
+BOOL DialogWindow::IsReadOnly()
+{
+ BOOL bReadOnly = FALSE;
+
+ if ( pEditor && pEditor->GetMode() == DLGED_READONLY )
+ bReadOnly = TRUE;
+
+ return bReadOnly;
+}
+
+BOOL DialogWindow::IsPasteAllowed()
+{
+ return pEditor ? pEditor->IsPasteAllowed() : FALSE;
+}
+
+void DialogWindow::StoreData()
+{
+ if ( IsModified() )
+ {
+ try
+ {
+ Reference< container::XNameContainer > xLib = GetDocument().getLibrary( E_DIALOGS, GetLibName(), true );
+
+ if( xLib.is() )
+ {
+ Reference< container::XNameContainer > xDialogModel = pEditor->GetDialog();
+
+ if( xDialogModel.is() )
+ {
+ Reference< XComponentContext > xContext;
+ Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
+ OSL_ASSERT( xProps.is() );
+ OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() );
+ xLib->replaceByName( ::rtl::OUString( GetName() ), makeAny( xISP ) );
+ }
+ }
+ }
+ catch ( uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ BasicIDE::MarkDocumentModified( GetDocument() );
+ pEditor->ClearModifyFlag();
+ }
+}
+
+void DialogWindow::Deactivating()
+{
+ if ( IsModified() )
+ BasicIDE::MarkDocumentModified( GetDocument() );
+}
+
+sal_Int32 DialogWindow::countPages( Printer* pPrinter )
+{
+ return pEditor->countPages( pPrinter );
+}
+
+void DialogWindow::printPage( sal_Int32 nPage, Printer* pPrinter )
+{
+ pEditor->printPage( nPage, pPrinter, CreateQualifiedName() );
+}
+
+void DialogWindow::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ if( (rDCEvt.GetType()==DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ {
+ InitSettings( TRUE, TRUE, TRUE );
+ Invalidate();
+ }
+ else
+ IDEBaseWindow::DataChanged( rDCEvt );
+}
+
+void DialogWindow::InitSettings(BOOL bFont,BOOL bForeground,BOOL bBackground)
+{
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ if( bFont )
+ {
+ Font aFont;
+ aFont = rStyleSettings.GetFieldFont();
+ SetPointFont( aFont );
+ }
+
+ if( bForeground || bFont )
+ {
+ SetTextColor( rStyleSettings.GetFieldTextColor() );
+ SetTextFillColor();
+ }
+
+ if( bBackground )
+ SetBackground( rStyleSettings.GetFieldColor() );
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > DialogWindow::CreateAccessible()
+{
+ return (::com::sun::star::accessibility::XAccessible*) new AccessibleDialogWindow( this );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basidectrlr.cxx b/basctl/source/basicide/basidectrlr.cxx
new file mode 100644
index 000000000000..9bce6c13c294
--- /dev/null
+++ b/basctl/source/basicide/basidectrlr.cxx
@@ -0,0 +1,153 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <basidectrlr.hxx>
+#include <cppuhelper/queryinterface.hxx>
+#include <comphelper/sequence.hxx>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+
+#include <vcl/syswin.hxx>
+
+#include <basidesh.hxx>
+
+
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::beans;
+
+
+#define PROPERTY_ID_ICONID 1
+#define PROPERTY_ICONID ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IconId" ) )
+
+
+//----------------------------------------------------------------------------
+
+BasicIDEController::BasicIDEController( BasicIDEShell* pViewShell )
+ :OPropertyContainer( m_aBHelper )
+ ,SfxBaseController( pViewShell )
+ ,m_nIconId( ICON_MACROLIBRARY )
+{
+ registerProperty( PROPERTY_ICONID, PROPERTY_ID_ICONID, PropertyAttribute::READONLY, &m_nIconId, ::getCppuType( &m_nIconId ) );
+}
+
+//----------------------------------------------------------------------------
+
+BasicIDEController::~BasicIDEController()
+{
+}
+
+// XInterface
+//----------------------------------------------------------------------------
+
+Any SAL_CALL BasicIDEController::queryInterface( const Type & rType ) throw(RuntimeException)
+{
+ Any aReturn = SfxBaseController::queryInterface( rType );
+ if ( !aReturn.hasValue() )
+ aReturn = OPropertyContainer::queryInterface( rType );
+
+ return aReturn;
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL BasicIDEController::acquire() throw()
+{
+ SfxBaseController::acquire();
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL BasicIDEController::release() throw()
+{
+ SfxBaseController::release();
+}
+
+
+// XTypeProvider ( ::SfxBaseController )
+//----------------------------------------------------------------------------
+
+Sequence< Type > SAL_CALL BasicIDEController::getTypes() throw(RuntimeException)
+{
+ Sequence< Type > aTypes = ::comphelper::concatSequences(
+ SfxBaseController::getTypes(),
+ OPropertyContainer::getTypes()
+ );
+
+ return aTypes;
+}
+
+//----------------------------------------------------------------------------
+
+Sequence< sal_Int8 > SAL_CALL BasicIDEController::getImplementationId() throw(RuntimeException)
+{
+ static ::cppu::OImplementationId * pId = 0;
+ if ( !pId )
+ {
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if ( !pId )
+ {
+ static ::cppu::OImplementationId aId;
+ pId = &aId;
+ }
+ }
+ return pId->getImplementationId();
+}
+
+// XPropertySet
+//----------------------------------------------------------------------------
+
+Reference< beans::XPropertySetInfo > SAL_CALL BasicIDEController::getPropertySetInfo() throw(RuntimeException)
+{
+ Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
+ return xInfo;
+}
+
+// OPropertySetHelper
+//----------------------------------------------------------------------------
+
+::cppu::IPropertyArrayHelper& BasicIDEController::getInfoHelper()
+{
+ return *getArrayHelper();
+}
+
+// OPropertyArrayUsageHelper
+//----------------------------------------------------------------------------
+
+::cppu::IPropertyArrayHelper* BasicIDEController::createArrayHelper( ) const
+{
+ Sequence< Property > aProps;
+ describeProperties( aProps );
+ return new ::cppu::OPropertyArrayHelper( aProps );
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
new file mode 100644
index 000000000000..80928ca87ec5
--- /dev/null
+++ b/basctl/source/basicide/basides1.cxx
@@ -0,0 +1,1443 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "docsignature.hxx"
+
+#define GLOBALOVERFLOW2
+#include <basic/sbx.hxx>
+#define _SVSTDARR_STRINGS
+#include <svl/svstdarr.hxx>
+#include <ide_pch.hxx>
+
+#define _SOLAR__PRIVATE 1
+
+// #define _SVX_NOIDERESIDS
+
+#define SI_NOCONTROL
+#define SI_NOSBXCONTROLS
+#define SI_NOITEMS
+#define SI_NODRW
+#define _VCTRLS_HXX
+
+#include <basidesh.hrc>
+#include <basidesh.hxx>
+#include <baside2.hxx>
+#include <baside3.hxx>
+#include <basobj.hxx>
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <sbxitem.hxx>
+#include <managelang.hxx>
+#include <localizationmgr.hxx>
+#include <helpid.hrc>
+
+#include <svtools/texteng.hxx>
+#include <svtools/textview.hxx>
+#include <svtools/xtextedt.hxx>
+#include <tools/urlobj.hxx>
+#include <tools/diagnose_ex.h>
+#include <sfx2/minfitem.hxx>
+#include <sfx2/docfile.hxx>
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <com/sun/star/task/XStatusIndicatorFactory.hpp>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/frame/XLayoutManager.hpp>
+
+#include <algorithm>
+#include <memory>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::frame;
+
+class SvxSearchItem;
+
+// Egal was, einfach ans aktuelle Fenster:
+void __EXPORT BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
+{
+ if ( !pCurWin )
+ return;
+
+ switch ( rReq.GetSlot() )
+ {
+ case SID_BASICIDE_HIDECURPAGE:
+ {
+ pCurWin->StoreData();
+ RemoveWindow( pCurWin, FALSE );
+ }
+ break;
+ case SID_BASICIDE_DELETECURRENT:
+ {
+ ScriptDocument aDocument( pCurWin->GetDocument() );
+ String aLibName = pCurWin->GetLibName();
+ String aName = pCurWin->GetName();
+
+ if ( pCurWin->ISA( ModulWindow ) )
+ {
+ // module
+ if ( QueryDelModule( aName, pCurWin ) )
+ {
+ if ( aDocument.removeModule( aLibName, aName ) )
+ {
+ BasicIDE::MarkDocumentModified( aDocument );
+ }
+ }
+ }
+ else
+ {
+ // dialog
+ if ( QueryDelDialog( aName, pCurWin ) )
+ {
+ if ( BasicIDE::RemoveDialog( aDocument, aLibName, aName ) )
+ {
+ RemoveWindow( pCurWin, TRUE );
+ BasicIDE::MarkDocumentModified( aDocument );
+ }
+ }
+ }
+ }
+ break;
+ case SID_BASICIDE_RENAMECURRENT:
+ {
+ pTabBar->StartEditMode( pTabBar->GetCurPageId() );
+ }
+ break;
+ case FID_SEARCH_NOW:
+ {
+ if ( pCurWin->ISA( ModulWindow ) )
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ // Leider kenne ich die ID nicht:
+ USHORT nWhich = pArgs->GetWhichByPos( 0 );
+ DBG_ASSERT( nWhich, "Wich fuer SearchItem ?" );
+ const SfxPoolItem& rItem = pArgs->Get( nWhich );
+ DBG_ASSERT( rItem.ISA( SvxSearchItem ), "Kein Searchitem!" );
+ if ( rItem.ISA( SvxSearchItem ) )
+ {
+ // Item wegen der Einstellungen merken...
+ IDE_DLL()->GetExtraData()->SetSearchItem( (const SvxSearchItem&)rItem );
+ USHORT nFound = 0;
+ BOOL bCanceled = FALSE;
+ if ( ((const SvxSearchItem&)rItem).GetCommand() == SVX_SEARCHCMD_REPLACE_ALL )
+ {
+ USHORT nActModWindows = 0;
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ while ( pWin )
+ {
+ if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
+ nActModWindows++;
+ pWin = aIDEWindowTable.Next();
+ }
+
+ if ( ( nActModWindows <= 1 ) || ( !((const SvxSearchItem&)rItem).GetSelection() && QueryBox( pCurWin, WB_YES_NO|WB_DEF_YES, String( IDEResId( RID_STR_SEARCHALLMODULES ) ) ).Execute() == RET_YES ) )
+ {
+ pWin = aIDEWindowTable.First();
+ while ( pWin )
+ {
+ if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
+ nFound = nFound + ((ModulWindow*)pWin)->StartSearchAndReplace( (const SvxSearchItem&)rItem );
+ pWin = aIDEWindowTable.Next();
+ }
+ }
+ else
+ nFound = ((ModulWindow*)pCurWin)->StartSearchAndReplace( (const SvxSearchItem&)rItem );
+
+ IDEResId nId( RID_STR_SEARCHREPLACES );
+ String aReplStr( nId );
+ aReplStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), String::CreateFromInt32( nFound ) );
+ InfoBox( pCurWin, aReplStr ).Execute();
+ }
+ else
+ {
+ nFound = ((ModulWindow*)pCurWin)->StartSearchAndReplace( (const SvxSearchItem&)rItem );
+ if ( !nFound && !((const SvxSearchItem&)rItem).GetSelection() )
+ {
+ // Andere Module durchsuchen...
+ BOOL bChangeCurWindow = FALSE;
+ aIDEWindowTable.Seek( pCurWin );
+ // Erstmal beim naechsten Anfangen, ggf. spaeter von vorne
+ IDEBaseWindow* pWin = aIDEWindowTable.Next();
+ BOOL bSearchedFromStart = FALSE;
+ while ( !nFound && !bCanceled && ( pWin || !bSearchedFromStart ) )
+ {
+ if ( !pWin )
+ {
+ SfxViewFrame* pViewFrame = GetViewFrame();
+ SfxChildWindow* pChildWin = pViewFrame ? pViewFrame->GetChildWindow( SID_SEARCH_DLG ) : NULL;
+ Window* pParent = pChildWin ? pChildWin->GetWindow() : NULL;
+ QueryBox aQuery( pParent, WB_YES_NO|WB_DEF_YES, String( IDEResId( RID_STR_SEARCHFROMSTART ) ) );
+ if ( aQuery.Execute() == RET_YES )
+ {
+ pWin = aIDEWindowTable.First();
+ bSearchedFromStart = TRUE;
+ }
+ else
+ bCanceled = TRUE;
+ }
+
+ if ( pWin && !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ if ( pWin != pCurWin )
+ {
+ // Groesse einstellen, damit die View
+ // gleich richtig justiert werden kann.
+ if ( pCurWin )
+ pWin->SetSizePixel( pCurWin->GetSizePixel() );
+ nFound = ((ModulWindow*)pWin)->StartSearchAndReplace( (const SvxSearchItem&)rItem, TRUE );
+ }
+ if ( nFound )
+ {
+ bChangeCurWindow = TRUE;
+ break;
+ }
+ }
+ if ( pWin && ( pWin != pCurWin ) )
+ pWin = aIDEWindowTable.Next();
+ else
+ pWin = 0; // Dann sind wir durch...
+ }
+ if ( !nFound && bSearchedFromStart ) // Aktuelles von vorne...
+ nFound = ((ModulWindow*)pCurWin)->StartSearchAndReplace( (const SvxSearchItem&)rItem, TRUE );
+ if ( bChangeCurWindow )
+ SetCurWindow( pWin, TRUE );
+ }
+ if ( !nFound && !bCanceled )
+ InfoBox( pCurWin, String( IDEResId( RID_STR_SEARCHNOTFOUND ) ) ).Execute();
+ }
+
+ rReq.Done();
+ }
+ }
+ }
+ break;
+ case FID_SEARCH_OFF:
+ {
+ if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+ pCurWin->GrabFocus();
+ }
+ break;
+ case SID_UNDO:
+ case SID_REDO:
+ {
+ if ( GetUndoManager() && pCurWin->AllowUndo() )
+ {
+ GetViewFrame()->ExecuteSlot( rReq );
+ }
+ }
+ break;
+ default:
+ {
+ pCurWin->ExecuteCommand( rReq );
+ }
+ }
+}
+
+// Egal, wer oben, Einfluss auf die Shell:
+void __EXPORT BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
+{
+ USHORT nSlot = rReq.GetSlot();
+ switch ( nSlot )
+ {
+ case SID_BASICSTOP:
+ {
+ // Evtl. nicht einfach anhalten, falls auf Brechpunkt!
+ if ( pCurWin && pCurWin->IsA( TYPE( ModulWindow ) ) )
+ ((ModulWindow*)pCurWin)->BasicStop();
+ BasicIDE::StopBasic();
+ }
+ break;
+
+ case SID_SAVEDOC:
+ {
+ if ( pCurWin )
+ {
+ // Daten ins BASIC zurueckschreiben
+ StoreAllWindowData();
+
+ // document basic
+ ScriptDocument aDocument( pCurWin->GetDocument() );
+ if ( aDocument.isDocument() )
+ {
+ uno::Reference< task::XStatusIndicator > xStatusIndicator;
+
+ SFX_REQUEST_ARG( rReq, pStatusIndicatorItem, SfxUnoAnyItem, SID_PROGRESS_STATUSBAR_CONTROL, FALSE );
+ if ( pStatusIndicatorItem )
+ OSL_VERIFY( pStatusIndicatorItem->GetValue() >>= xStatusIndicator );
+ else
+ {
+ // get statusindicator
+ SfxViewFrame *pFrame_ = GetFrame();
+ if ( pFrame_ )
+ {
+ uno::Reference< task::XStatusIndicatorFactory > xStatFactory(
+ pFrame_->GetFrame().GetFrameInterface(),
+ uno::UNO_QUERY );
+ if( xStatFactory.is() )
+ xStatusIndicator = xStatFactory->createStatusIndicator();
+ }
+
+ if ( xStatusIndicator.is() )
+ rReq.AppendItem( SfxUnoAnyItem( SID_PROGRESS_STATUSBAR_CONTROL, uno::makeAny( xStatusIndicator ) ) );
+ }
+
+ aDocument.saveDocument( xStatusIndicator );
+ }
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ pBindings->Invalidate( SID_SAVEDOC );
+ pBindings->Invalidate( SID_SIGNATURE );
+ }
+ }
+ }
+ break;
+ case SID_SIGNATURE:
+ {
+ if ( pCurWin )
+ {
+ ::basctl::DocumentSignature aSignature( pCurWin->GetDocument() );
+ if ( aSignature.supportsSignatures() )
+ {
+ aSignature.signScriptingContent();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_SIGNATURE );
+ }
+ }
+ }
+ break;
+
+ case SID_BASICIDE_MODULEDLG:
+ {
+ if ( rReq.GetArgs() )
+ {
+ const SfxUInt16Item &rTabId = (const SfxUInt16Item&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_TABID );
+ BasicIDE::Organize( rTabId.GetValue() );
+ }
+ else
+ BasicIDE::Organize( 0 );
+ }
+ break;
+ case SID_BASICIDE_CHOOSEMACRO:
+ {
+ BasicIDE::ChooseMacro( NULL, FALSE, ::rtl::OUString() );
+ }
+ break;
+ case SID_BASICIDE_CREATEMACRO:
+ case SID_BASICIDE_EDITMACRO:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SfxMacroInfoItem& rInfo = (const SfxMacroInfoItem&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_MACROINFO );
+ BasicManager* pBasMgr = (BasicManager*)rInfo.GetBasicManager();
+ DBG_ASSERT( pBasMgr, "Nichts selektiert im Basic-Baum ?" );
+
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+
+ StartListening( *pBasMgr, TRUE /* Nur einmal anmelden */ );
+ String aLibName( rInfo.GetLib() );
+ if ( !aLibName.Len() )
+ aLibName = String::CreateFromAscii( "Standard" );
+ StarBASIC* pBasic = pBasMgr->GetLib( aLibName );
+ if ( !pBasic )
+ {
+ // load module and dialog library (if not loaded)
+ aDocument.loadLibraryIfExists( E_SCRIPTS, aLibName );
+ aDocument.loadLibraryIfExists( E_DIALOGS, aLibName );
+
+ // get Basic
+ pBasic = pBasMgr->GetLib( aLibName );
+ }
+ DBG_ASSERT( pBasic, "Kein Basic!" );
+
+ SetCurLib( aDocument, aLibName );
+
+ if ( rReq.GetSlot() == SID_BASICIDE_CREATEMACRO )
+ {
+ SbModule* pModule = pBasic->FindModule( rInfo.GetModule() );
+ if ( !pModule )
+ {
+ if ( rInfo.GetModule().Len() || !pBasic->GetModules()->Count() )
+ {
+ String aModName = rInfo.GetModule();
+
+ ::rtl::OUString sModuleCode;
+ if ( aDocument.createModule( aLibName, aModName, FALSE, sModuleCode ) )
+ pModule = pBasic->FindModule( aModName );
+ }
+ else
+ pModule = (SbModule*) pBasic->GetModules()->Get(0);
+ }
+ DBG_ASSERT( pModule, "Kein Modul!" );
+ if ( !pModule->GetMethods()->Find( rInfo.GetMethod(), SbxCLASS_METHOD ) )
+ BasicIDE::CreateMacro( pModule, rInfo.GetMethod() );
+ }
+ SfxViewFrame* pViewFrame = GetViewFrame();
+ if ( pViewFrame )
+ pViewFrame->ToTop();
+ ModulWindow* pWin = FindBasWin( aDocument, aLibName, rInfo.GetModule(), TRUE );
+ DBG_ASSERT( pWin, "Edit/Create Macro: Fenster wurde nicht erzeugt/gefunden!" );
+ SetCurWindow( pWin, TRUE );
+ pWin->EditMacro( rInfo.GetMethod() );
+ }
+ break;
+ case SID_BASICIDE_OBJCAT:
+ {
+ ShowObjectDialog( TRUE, TRUE );
+ }
+ break;
+ case SID_BASICIDE_NAMECHANGEDONTAB:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SfxUInt16Item &rTabId = (const SfxUInt16Item&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_TABID );
+ const SfxStringItem &rModName = (const SfxStringItem&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_MODULENAME );
+ IDEBaseWindow* pWin = aIDEWindowTable.Get( rTabId.GetValue() );
+ DBG_ASSERT( pWin, "Window nicht im Liste, aber in TabBar ?" );
+ if ( pWin )
+ {
+ String aNewName( rModName.GetValue() );
+ String aOldName( pWin->GetName() );
+ if ( aNewName != aOldName )
+ {
+ bool bRenameOk = false;
+ if ( pWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ ModulWindow* pModWin = (ModulWindow*)pWin;
+ String aLibName = ( pModWin->GetLibName() );
+ ScriptDocument aDocument( pWin->GetDocument() );
+
+ if ( BasicIDE::RenameModule( pModWin, aDocument, aLibName, aOldName, aNewName ) )
+ {
+ bRenameOk = true;
+ // Because we listen for container events for script
+ // modules, rename will delete the 'old' window
+ // pWin has been invalidated, restore now
+ pWin = FindBasWin( aDocument, aLibName, aNewName, TRUE );
+ }
+
+ }
+ else if ( pWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ DialogWindow* pDlgWin = (DialogWindow*)pWin;
+ bRenameOk = pDlgWin->RenameDialog( aNewName );
+ }
+ if ( bRenameOk )
+ {
+ BasicIDE::MarkDocumentModified( pWin->GetDocument() );
+ }
+ else
+ {
+ // set old name in TabWriter
+ USHORT nId = (USHORT)aIDEWindowTable.GetKey( pWin );
+ DBG_ASSERT( nId, "No entry in Tabbar!" );
+ if ( nId )
+ pTabBar->SetPageText( nId, aOldName );
+ }
+ }
+
+ // set focus to current window
+ pWin->GrabFocus();
+ }
+ }
+ break;
+ case SID_BASICIDE_STOREMODULESOURCE:
+ case SID_BASICIDE_UPDATEMODULESOURCE:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SfxMacroInfoItem& rInfo = (const SfxMacroInfoItem&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_MACROINFO );
+ BasicManager* pBasMgr = (BasicManager*)rInfo.GetBasicManager();
+ DBG_ASSERT( pBasMgr, "Store source: Kein BasMgr?" );
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+ ModulWindow* pWin = FindBasWin( aDocument, rInfo.GetLib(), rInfo.GetModule(), FALSE, TRUE );
+ if ( pWin )
+ {
+ if ( rReq.GetSlot() == SID_BASICIDE_STOREMODULESOURCE )
+ pWin->StoreData();
+ else
+ pWin->UpdateData();
+ }
+ }
+ break;
+ case SID_BASICIDE_STOREALLMODULESOURCES:
+ case SID_BASICIDE_UPDATEALLMODULESOURCES:
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ while ( pWin )
+ {
+ if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ if ( rReq.GetSlot() == SID_BASICIDE_STOREALLMODULESOURCES )
+ pWin->StoreData();
+ else
+ pWin->UpdateData();
+ }
+ pWin = aIDEWindowTable.Next();
+ }
+ }
+ break;
+ case SID_BASICIDE_LIBSELECTED:
+ case SID_BASICIDE_LIBREMOVED:
+ case SID_BASICIDE_LIBLOADED:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SfxUsrAnyItem& rShellItem = (const SfxUsrAnyItem&)rReq.GetArgs()->Get( SID_BASICIDE_ARG_DOCUMENT_MODEL );
+ uno::Reference< frame::XModel > xModel( rShellItem.GetValue(), UNO_QUERY );
+ ScriptDocument aDocument( xModel.is() ? ScriptDocument( xModel ) : ScriptDocument::getApplicationScriptDocument() );
+ const SfxStringItem& rLibNameItem = (const SfxStringItem&)rReq.GetArgs()->Get( SID_BASICIDE_ARG_LIBNAME );
+ String aLibName( rLibNameItem.GetValue() );
+
+ if ( nSlot == SID_BASICIDE_LIBSELECTED )
+ {
+ // load module and dialog library (if not loaded)
+ aDocument.loadLibraryIfExists( E_SCRIPTS, aLibName );
+ aDocument.loadLibraryIfExists( E_DIALOGS, aLibName );
+
+ // check password, if library is password protected and not verified
+ BOOL bOK = TRUE;
+ Reference< script::XLibraryContainer > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aLibName ) && !xPasswd->isLibraryPasswordVerified( aLibName ) )
+ {
+ String aPassword;
+ bOK = QueryPassword( xModLibContainer, aLibName, aPassword );
+ }
+ }
+
+ if ( bOK )
+ {
+ SetCurLib( aDocument, aLibName, true, false );
+ }
+ else
+ {
+ // alten Wert einstellen...
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_LIBSELECTOR, TRUE, FALSE );
+ }
+ }
+ else if ( nSlot == SID_BASICIDE_LIBREMOVED )
+ {
+ if ( !m_aCurLibName.Len() || ( aDocument == m_aCurDocument && aLibName == m_aCurLibName ) )
+ {
+ RemoveWindows( aDocument, aLibName, TRUE );
+ if ( aDocument == m_aCurDocument && aLibName == m_aCurLibName )
+ {
+ m_aCurDocument = ScriptDocument::getApplicationScriptDocument();
+ m_aCurLibName = String();
+ // Kein UpdateWindows!
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_LIBSELECTOR );
+ }
+ }
+ }
+ else // Loaded...
+ UpdateWindows();
+ }
+ break;
+ case SID_BASICIDE_NEWMODULE:
+ {
+ ModulWindow* pWin = CreateBasWin( m_aCurDocument, m_aCurLibName, String() );
+ DBG_ASSERT( pWin, "New Module: Konnte Fenster nicht erzeugen!" );
+ SetCurWindow( pWin, TRUE );
+ }
+ break;
+ case SID_BASICIDE_NEWDIALOG:
+ {
+ DialogWindow* pWin = CreateDlgWin( m_aCurDocument, m_aCurLibName, String() );
+ DBG_ASSERT( pWin, "New Module: Konnte Fenster nicht erzeugen!" );
+ SetCurWindow( pWin, TRUE );
+ }
+ break;
+ case SID_BASICIDE_SBXRENAMED:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ }
+ break;
+ case SID_BASICIDE_SBXINSERTED:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SbxItem& rSbxItem = (const SbxItem&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_SBX );
+ ScriptDocument aDocument( rSbxItem.GetDocument() );
+ String aLibName( rSbxItem.GetLibName() );
+ String aName( rSbxItem.GetName() );
+ if ( !m_aCurLibName.Len() || ( aDocument == m_aCurDocument && aLibName == m_aCurLibName ) )
+ {
+ IDEBaseWindow* pWin = 0;
+ if ( rSbxItem.GetType() == BASICIDE_TYPE_MODULE )
+ pWin = FindBasWin( aDocument, aLibName, aName, TRUE );
+ else if ( rSbxItem.GetType() == BASICIDE_TYPE_DIALOG )
+ pWin = FindDlgWin( aDocument, aLibName, aName, TRUE );
+ }
+ }
+ break;
+ case SID_BASICIDE_SBXDELETED:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SbxItem& rSbxItem = (const SbxItem&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_SBX );
+ ScriptDocument aDocument( rSbxItem.GetDocument() );
+ IDEBaseWindow* pWin = FindWindow( aDocument, rSbxItem.GetLibName(), rSbxItem.GetName(), rSbxItem.GetType(), TRUE );
+ if ( pWin )
+ RemoveWindow( pWin, TRUE );
+ }
+ break;
+ case SID_BASICIDE_SHOWSBX:
+ {
+ DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
+ const SbxItem& rSbxItem = (const SbxItem&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_SBX );
+ ScriptDocument aDocument( rSbxItem.GetDocument() );
+ String aLibName( rSbxItem.GetLibName() );
+ String aName( rSbxItem.GetName() );
+ SetCurLib( aDocument, aLibName );
+ IDEBaseWindow* pWin = 0;
+ if ( rSbxItem.GetType() == BASICIDE_TYPE_DIALOG )
+ {
+ pWin = FindDlgWin( aDocument, aLibName, aName, TRUE );
+ }
+ else if ( rSbxItem.GetType() == BASICIDE_TYPE_MODULE )
+ {
+ pWin = FindBasWin( aDocument, aLibName, aName, TRUE );
+ }
+ else if ( rSbxItem.GetType() == BASICIDE_TYPE_METHOD )
+ {
+ pWin = FindBasWin( aDocument, aLibName, aName, TRUE );
+ ((ModulWindow*)pWin)->EditMacro( rSbxItem.GetMethodName() );
+ }
+ DBG_ASSERT( pWin, "Fenster wurde nicht erzeugt!" );
+ SetCurWindow( pWin, TRUE );
+ pTabBar->MakeVisible( pTabBar->GetCurPageId() );
+ }
+ break;
+ case SID_SHOW_PROPERTYBROWSER:
+ {
+ GetViewFrame()->ChildWindowExecute( rReq );
+ rReq.Done();
+ }
+ break;
+ case SID_BASICIDE_SHOWWINDOW:
+ {
+ ::std::auto_ptr< ScriptDocument > pDocument;
+
+ SFX_REQUEST_ARG( rReq, pDocumentItem, SfxStringItem, SID_BASICIDE_ARG_DOCUMENT, sal_False );
+ if ( pDocumentItem )
+ {
+ String sDocumentCaption = pDocumentItem->GetValue();
+ if ( sDocumentCaption.Len() )
+ pDocument.reset( new ScriptDocument( ScriptDocument::getDocumentWithURLOrCaption( sDocumentCaption ) ) );
+ }
+
+ SFX_REQUEST_ARG( rReq, pDocModelItem, SfxUsrAnyItem, SID_BASICIDE_ARG_DOCUMENT_MODEL, sal_False );
+ if ( !pDocument.get() && pDocModelItem )
+ {
+ uno::Reference< frame::XModel > xModel( pDocModelItem->GetValue(), UNO_QUERY );
+ if ( xModel.is() )
+ pDocument.reset( new ScriptDocument( xModel ) );
+ }
+
+ if ( !pDocument.get() )
+ break;
+
+ SFX_REQUEST_ARG( rReq, pLibNameItem, SfxStringItem, SID_BASICIDE_ARG_LIBNAME, sal_False );
+ if ( !pLibNameItem )
+ break;
+
+ String aLibName( pLibNameItem->GetValue() );
+ pDocument->loadLibraryIfExists( E_SCRIPTS, aLibName );
+ SetCurLib( *pDocument, aLibName );
+ SFX_REQUEST_ARG( rReq, pNameItem, SfxStringItem, SID_BASICIDE_ARG_NAME, sal_False );
+ if ( pNameItem )
+ {
+ String aName( pNameItem->GetValue() );
+ String aModType( String::CreateFromAscii( "Module" ) );
+ String aDlgType( String::CreateFromAscii( "Dialog" ) );
+ String aType( aModType );
+ SFX_REQUEST_ARG( rReq, pTypeItem, SfxStringItem, SID_BASICIDE_ARG_TYPE, sal_False );
+ if ( pTypeItem )
+ aType = pTypeItem->GetValue();
+
+ IDEBaseWindow* pWin = 0;
+ if ( aType == aModType )
+ pWin = FindBasWin( *pDocument, aLibName, aName, FALSE );
+ else if ( aType == aDlgType )
+ pWin = FindDlgWin( *pDocument, aLibName, aName, FALSE );
+
+ if ( pWin )
+ {
+ SetCurWindow( pWin, TRUE );
+ if ( pTabBar )
+ pTabBar->MakeVisible( pTabBar->GetCurPageId() );
+
+ if ( pWin->ISA( ModulWindow ) )
+ {
+ ModulWindow* pModWin = (ModulWindow*)pWin;
+ SFX_REQUEST_ARG( rReq, pLineItem, SfxUInt32Item, SID_BASICIDE_ARG_LINE, sal_False );
+ if ( pLineItem )
+ {
+ pModWin->AssertValidEditEngine();
+ TextView* pTextView = pModWin->GetEditView();
+ if ( pTextView )
+ {
+ TextEngine* pTextEngine = pTextView->GetTextEngine();
+ if ( pTextEngine )
+ {
+ sal_uInt32 nLine = pLineItem->GetValue();
+ sal_uInt32 nLineCount = 0;
+ for ( sal_uInt32 i = 0, nCount = pTextEngine->GetParagraphCount(); i < nCount; ++i )
+ nLineCount += pTextEngine->GetLineCount( i );
+ if ( nLine > nLineCount )
+ nLine = nLineCount;
+ if ( nLine > 0 )
+ --nLine;
+
+ // scroll window and set selection
+ long nVisHeight = pModWin->GetOutputSizePixel().Height();
+ long nTextHeight = pTextEngine->GetTextHeight();
+ if ( nTextHeight > nVisHeight )
+ {
+ long nMaxY = nTextHeight - nVisHeight;
+ long nOldY = pTextView->GetStartDocPos().Y();
+ long nNewY = nLine * pTextEngine->GetCharHeight() - nVisHeight / 2;
+ nNewY = ::std::min( nNewY, nMaxY );
+ pTextView->Scroll( 0, -( nNewY - nOldY ) );
+ pTextView->ShowCursor( FALSE, TRUE );
+ pModWin->GetEditVScrollBar().SetThumbPos( pTextView->GetStartDocPos().Y() );
+ }
+ sal_uInt16 nCol1 = 0, nCol2 = 0;
+ SFX_REQUEST_ARG( rReq, pCol1Item, SfxUInt16Item, SID_BASICIDE_ARG_COLUMN1, sal_False );
+ if ( pCol1Item )
+ {
+ nCol1 = pCol1Item->GetValue();
+ if ( nCol1 > 0 )
+ --nCol1;
+ nCol2 = nCol1;
+ }
+ SFX_REQUEST_ARG( rReq, pCol2Item, SfxUInt16Item, SID_BASICIDE_ARG_COLUMN2, sal_False );
+ if ( pCol2Item )
+ {
+ nCol2 = pCol2Item->GetValue();
+ if ( nCol2 > 0 )
+ --nCol2;
+ }
+ TextSelection aSel( TextPaM( nLine, nCol1 ), TextPaM( nLine, nCol2 ) );
+ pTextView->SetSelection( aSel );
+ pTextView->ShowCursor();
+ Window* pWindow_ = pTextView->GetWindow();
+ if ( pWindow_ )
+ pWindow_->GrabFocus();
+ }
+ }
+ }
+ }
+ }
+ }
+ rReq.Done();
+ }
+ break;
+
+ case SID_BASICIDE_MANAGE_LANG:
+ {
+ ManageLanguageDialog aDlg( GetCurWindow(), GetCurLocalizationMgr() );
+ aDlg.Execute();
+ rReq.Done();
+ }
+ break;
+ }
+}
+
+void __EXPORT BasicIDEShell::GetState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+ for ( USHORT nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich() )
+ {
+ switch ( nWh )
+ {
+ case SID_DOCINFO:
+ {
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_SAVEDOC:
+ {
+ BOOL bDisable = FALSE;
+
+ if ( pCurWin )
+ {
+ if ( !pCurWin->IsModified() )
+ {
+ ScriptDocument aDocument( pCurWin->GetDocument() );
+ bDisable = ( !aDocument.isAlive() )
+ || ( aDocument.isDocument() ? !aDocument.isDocumentModified() : !IsAppBasicModified() );
+ }
+ }
+ else
+ {
+ bDisable = TRUE;
+ }
+
+ if ( bDisable )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_NEWWINDOW:
+ case SID_SAVEASDOC:
+ {
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_SIGNATURE:
+ {
+ sal_uInt16 nState = 0;
+ if ( pCurWin )
+ {
+ ::basctl::DocumentSignature aSignature( pCurWin->GetDocument() );
+ nState = aSignature.getScriptingSignatureState();
+ }
+ rSet.Put( SfxUInt16Item( SID_SIGNATURE, nState ) );
+ }
+ break;
+ case SID_BASICIDE_MODULEDLG:
+ {
+ if ( StarBASIC::IsRunning() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_BASICIDE_CHOOSEMACRO:
+ case SID_BASICIDE_OBJCAT:
+ case SID_BASICIDE_SHOWSBX:
+ case SID_BASICIDE_CREATEMACRO:
+ case SID_BASICIDE_EDITMACRO:
+ case SID_BASICIDE_NAMECHANGEDONTAB:
+ {
+ ;
+ }
+ break;
+
+ case SID_BASICIDE_ADDWATCH:
+ case SID_BASICIDE_REMOVEWATCH:
+ case SID_BASICLOAD:
+ case SID_BASICSAVEAS:
+ case SID_BASICIDE_MATCHGROUP:
+ {
+ if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) )
+ rSet.DisableItem( nWh );
+ else if ( ( nWh == SID_BASICLOAD ) && ( StarBASIC::IsRunning() || ( pCurWin && pCurWin->IsReadOnly() ) ) )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_BASICRUN:
+ case SID_BASICSTEPINTO:
+ case SID_BASICSTEPOVER:
+ case SID_BASICSTEPOUT:
+ case SID_BASICIDE_TOGGLEBRKPNT:
+ case SID_BASICIDE_MANAGEBRKPNTS:
+ {
+ if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) )
+ rSet.DisableItem( nWh );
+ else if ( StarBASIC::IsRunning() && !((ModulWindow*)pCurWin)->GetBasicStatus().bIsInReschedule )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_BASICCOMPILE:
+ {
+ if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) || StarBASIC::IsRunning() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_BASICSTOP:
+ {
+ // Stop immermoeglich, wenn irgendein Basic lauft...
+ if ( !StarBASIC::IsRunning() )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_CHOOSE_CONTROLS:
+ case SID_DIALOG_TESTMODE:
+ {
+ if( !pCurWin || !pCurWin->IsA( TYPE( DialogWindow ) ) )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_SHOW_FORMS:
+ case SID_SHOW_HIDDEN:
+ {
+ rSet.DisableItem( nWh );
+ }
+ break;
+ case SID_SEARCH_OPTIONS:
+ {
+ USHORT nOptions = 0;
+ if( pCurWin )
+ nOptions = pCurWin->GetSearchOptions();
+ rSet.Put( SfxUInt16Item( SID_SEARCH_OPTIONS, nOptions ) );
+ }
+ break;
+ case SID_BASICIDE_LIBSELECTOR:
+ {
+ String aName;
+ if ( m_aCurLibName.Len() )
+ {
+ LibraryLocation eLocation = m_aCurDocument.getLibraryLocation( m_aCurLibName );
+ aName = CreateMgrAndLibStr( m_aCurDocument.getTitle( eLocation ), m_aCurLibName );
+ }
+ SfxStringItem aItem( SID_BASICIDE_LIBSELECTOR, aName );
+ rSet.Put( aItem );
+ }
+ break;
+ case SID_SEARCH_ITEM:
+ {
+ String aSelected = GetSelectionText( TRUE );
+ SvxSearchItem& rItem = IDE_DLL()->GetExtraData()->GetSearchItem();
+ rItem.SetSearchString( aSelected );
+ rSet.Put( rItem );
+ }
+ break;
+ case SID_BASICIDE_STAT_DATE:
+ {
+ String aDate;
+ aDate = String( RTL_CONSTASCII_USTRINGPARAM( "Datum?!" ) );
+ SfxStringItem aItem( SID_BASICIDE_STAT_DATE, aDate );
+ rSet.Put( aItem );
+ }
+ break;
+ case SID_DOC_MODIFIED:
+ {
+ String aModifiedMarker;
+ BOOL bModified = FALSE;
+
+ if ( pCurWin )
+ {
+ if ( pCurWin->IsModified() )
+ bModified = TRUE;
+ else
+ {
+ ScriptDocument aDocument( pCurWin->GetDocument() );
+ bModified = aDocument.isDocument() ? aDocument.isDocumentModified() : IsAppBasicModified();
+ }
+ }
+
+ if ( bModified )
+ aModifiedMarker = '*';
+
+ SfxStringItem aItem( SID_DOC_MODIFIED, aModifiedMarker );
+ rSet.Put( aItem );
+ }
+ break;
+ case SID_BASICIDE_STAT_TITLE:
+ {
+ if ( pCurWin )
+ {
+ String aTitle = pCurWin->CreateQualifiedName();
+ SfxStringItem aItem( SID_BASICIDE_STAT_TITLE, aTitle );
+ rSet.Put( aItem );
+ }
+ }
+ break;
+ // Werden vom Controller ausgewertet:
+ case SID_ATTR_SIZE:
+ case SID_ATTR_INSERT:
+ break;
+ case SID_UNDO:
+ case SID_REDO:
+ {
+ if( GetUndoManager() ) // sonst rekursives GetState
+ GetViewFrame()->GetSlotState( nWh, NULL, &rSet );
+ }
+ break;
+ case SID_SHOW_PROPERTYBROWSER:
+ {
+ if ( GetViewFrame()->KnowsChildWindow( nWh ) )
+ rSet.Put( SfxBoolItem( nWh, GetViewFrame()->HasChildWindow( nWh ) ) );
+ else
+ rSet.DisableItem( nWh );
+ }
+ break;
+
+ case SID_BASICIDE_CURRENT_LANG:
+ {
+ if( (pCurWin && pCurWin->IsReadOnly()) || GetCurLibName().Len() == 0 )
+ rSet.DisableItem( nWh );
+ else
+ {
+ String aItemStr;
+ LocalizationMgr* pCurMgr = GetCurLocalizationMgr();
+ if ( pCurMgr->isLibraryLocalized() )
+ {
+ Sequence< lang::Locale > aLocaleSeq = pCurMgr->getStringResourceManager()->getLocales();
+ const lang::Locale* pLocale = aLocaleSeq.getConstArray();
+ INT32 i, nCount = aLocaleSeq.getLength();
+
+ // Force different results for any combination of locales and default locale
+ ::rtl::OUString aLangStr;
+ for ( i = 0; i <= nCount; ++i )
+ {
+ lang::Locale aLocale;
+ if( i < nCount )
+ aLocale = pLocale[i];
+ else
+ aLocale = pCurMgr->getStringResourceManager()->getDefaultLocale();
+
+ aLangStr += aLocale.Language;
+ aLangStr += aLocale.Country;
+ aLangStr += aLocale.Variant;
+ }
+ aItemStr = aLangStr;
+ }
+ rSet.Put( SfxStringItem( nWh, aItemStr ) );
+ }
+ }
+ break;
+
+ case SID_BASICIDE_MANAGE_LANG:
+ {
+ if( (pCurWin && pCurWin->IsReadOnly()) || GetCurLibName().Len() == 0 )
+ rSet.DisableItem( nWh );
+ }
+ break;
+ }
+ }
+ if ( pCurWin )
+ pCurWin->GetState( rSet );
+}
+
+sal_Bool BasicIDEShell::HasUIFeature( sal_uInt32 nFeature )
+{
+ sal_Bool bResult = sal_False;
+
+ if ( (nFeature & BASICIDE_UI_FEATURE_SHOW_BROWSER) == BASICIDE_UI_FEATURE_SHOW_BROWSER )
+ {
+ // fade out (in) property browser in module (dialog) windows
+ if ( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) && !pCurWin->IsReadOnly() )
+ bResult = sal_True;
+ }
+
+ return bResult;
+}
+
+void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, BOOL bUpdateTabBar, BOOL bRememberAsCurrent )
+{
+ // Es muss ein EditWindow am Sfx gesetzt sein, sonst kommt kein
+ // Resize, also stehen die Controls auf den Wiese...
+ // Sieht dann sowieso besser aus, wenn das Modul-Layout angezeigt wird...
+ if ( !pNewWin && ( GetWindow() != pModulLayout ) )
+ {
+ pModulLayout->Show();
+ AdjustPosSizePixel( Point( 0, 0 ), GetViewFrame()->GetWindow().GetOutputSizePixel() );
+ SetWindow( pModulLayout );
+ EnableScrollbars( FALSE );
+ aVScrollBar.Hide();
+ }
+
+ if ( pNewWin != pCurWin )
+ {
+ IDEBaseWindow* pPrevCurWin = pCurWin;
+ pCurWin = pNewWin;
+ if ( pPrevCurWin )
+ {
+ pPrevCurWin->Hide();
+ pPrevCurWin->Deactivating();
+// pPrevCurWin->GetLayoutWindow()->Hide();
+ if( pPrevCurWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ ((DialogWindow*)pPrevCurWin)->DisableBrowser();
+ }
+ else
+ {
+ pModulLayout->SetModulWindow( NULL );
+ }
+ }
+ if ( pCurWin )
+ {
+ AdjustPosSizePixel( Point( 0, 0 ), GetViewFrame()->GetWindow().GetOutputSizePixel() );
+ if( pCurWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ GetViewFrame()->GetWindow().SetHelpId( HID_BASICIDE_MODULWINDOW );
+ pModulLayout->SetModulWindow( (ModulWindow*)pCurWin );
+ pModulLayout->Show();
+ }
+ else
+ {
+ pModulLayout->Hide();
+ GetViewFrame()->GetWindow().SetHelpId( HID_BASICIDE_DIALOGWINDOW );
+ }
+
+ if ( bRememberAsCurrent )
+ {
+ BasicIDEData* pData = IDE_DLL()->GetExtraData();
+ if ( pData )
+ {
+ USHORT nCurrentType = pCurWin->IsA( TYPE( ModulWindow ) ) ? BASICIDE_TYPE_MODULE : BASICIDE_TYPE_DIALOG;
+ LibInfoItem* pLibInfoItem = new LibInfoItem( pCurWin->GetDocument(), pCurWin->GetLibName(), pCurWin->GetName(), nCurrentType );
+ pData->GetLibInfos().InsertInfo( pLibInfoItem );
+ }
+ }
+
+ if ( GetViewFrame()->GetWindow().IsVisible() ) // sonst macht es spaeter der SFX
+ pCurWin->Show();
+
+ pCurWin->Init();
+
+ if ( !IDE_DLL()->GetExtraData()->ShellInCriticalSection() )
+ {
+ Window* pFrameWindow = &GetViewFrame()->GetWindow();
+ Window* pFocusWindow = Application::GetFocusWindow();
+ while ( pFocusWindow && ( pFocusWindow != pFrameWindow ) )
+ pFocusWindow = pFocusWindow->GetParent();
+ if ( pFocusWindow ) // Focus in BasicIDE
+ pNewWin->GrabFocus();
+ }
+ if( pCurWin->IsA( TYPE( DialogWindow ) ) )
+ ((DialogWindow*)pCurWin)->UpdateBrowser();
+ }
+ if ( bUpdateTabBar )
+ {
+ ULONG nKey = aIDEWindowTable.GetKey( pCurWin );
+ if ( pCurWin && ( pTabBar->GetPagePos( (USHORT)nKey ) == TAB_PAGE_NOTFOUND ) )
+ pTabBar->InsertPage( (USHORT)nKey, pCurWin->GetTitle() ); // wurde neu eingeblendet
+ pTabBar->SetCurPageId( (USHORT)nKey );
+ }
+ if ( pCurWin && pCurWin->IsSuspended() ) // Wenn das Fenster im Fehlerfall angezeigt wird...
+ pCurWin->SetStatus( pCurWin->GetStatus() & ~BASWIN_SUSPENDED );
+ if ( pCurWin )
+ {
+ SetWindow( pCurWin );
+ if ( pCurWin->GetDocument().isDocument() )
+ SfxObjectShell::SetCurrentComponent( pCurWin->GetDocument().getDocument() );
+ }
+ else
+ {
+ SetWindow( pModulLayout );
+ GetViewFrame()->GetWindow().SetHelpId( HID_BASICIDE_MODULWINDOW );
+ SfxObjectShell::SetCurrentComponent( NULL );
+ }
+ SetUndoManager( pCurWin ? pCurWin->GetUndoManager() : 0 );
+ InvalidateBasicIDESlots();
+ EnableScrollbars( pCurWin ? TRUE : FALSE );
+
+ if ( m_pCurLocalizationMgr )
+ m_pCurLocalizationMgr->handleTranslationbar();
+
+ ManageToolbars();
+
+ // fade out (in) property browser in module (dialog) windows
+ UIFeatureChanged();
+ }
+}
+
+void BasicIDEShell::ManageToolbars()
+{
+ static ::rtl::OUString aLayoutManagerName = ::rtl::OUString::createFromAscii( "LayoutManager" );
+ static ::rtl::OUString aMacroBarResName =
+ ::rtl::OUString::createFromAscii( "private:resource/toolbar/macrobar" );
+ static ::rtl::OUString aDialogBarResName =
+ ::rtl::OUString::createFromAscii( "private:resource/toolbar/dialogbar" );
+ static ::rtl::OUString aInsertControlsBarResName =
+ ::rtl::OUString::createFromAscii( "private:resource/toolbar/insertcontrolsbar" );
+ (void)aInsertControlsBarResName;
+
+ if( !pCurWin )
+ return;
+
+ Reference< beans::XPropertySet > xFrameProps
+ ( GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY );
+ if ( xFrameProps.is() )
+ {
+ Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
+ uno::Any a = xFrameProps->getPropertyValue( aLayoutManagerName );
+ a >>= xLayoutManager;
+ if ( xLayoutManager.is() )
+ {
+ xLayoutManager->lock();
+ if( pCurWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ xLayoutManager->destroyElement( aMacroBarResName );
+
+ xLayoutManager->requestElement( aDialogBarResName );
+ xLayoutManager->requestElement( aInsertControlsBarResName );
+ }
+ else
+ {
+ xLayoutManager->destroyElement( aDialogBarResName );
+ xLayoutManager->destroyElement( aInsertControlsBarResName );
+
+ xLayoutManager->requestElement( aMacroBarResName );
+ }
+ xLayoutManager->unlock();
+ }
+ }
+}
+
+IDEBaseWindow* BasicIDEShell::FindApplicationWindow()
+{
+ return FindWindow( ScriptDocument::getApplicationScriptDocument() );
+}
+
+IDEBaseWindow* BasicIDEShell::FindWindow( const ScriptDocument& rDocument, const String& rLibName, const String& rName, USHORT nType, BOOL bFindSuspended )
+{
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ while ( pWin )
+ {
+ if ( !pWin->IsSuspended() || bFindSuspended )
+ {
+ if ( !rLibName.Len() || !rName.Len() || nType == BASICIDE_TYPE_UNKNOWN )
+ {
+ // return any non-suspended window
+ return pWin;
+ }
+ else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && pWin->GetName() == rName &&
+ ( ( pWin->IsA( TYPE( ModulWindow ) ) && nType == BASICIDE_TYPE_MODULE ) ||
+ ( pWin->IsA( TYPE( DialogWindow ) ) && nType == BASICIDE_TYPE_DIALOG ) ) )
+ {
+ return pWin;
+ }
+ }
+ pWin = aIDEWindowTable.Next();
+ }
+ return 0;
+}
+
+long BasicIDEShell::CallBasicErrorHdl( StarBASIC* pBasic )
+{
+ long nRet = 0;
+ ModulWindow* pModWin = ShowActiveModuleWindow( pBasic );
+ if ( pModWin )
+ nRet = pModWin->BasicErrorHdl( pBasic );
+ return nRet;
+}
+
+long BasicIDEShell::CallBasicBreakHdl( StarBASIC* pBasic )
+{
+ long nRet = 0;
+ ModulWindow* pModWin = ShowActiveModuleWindow( pBasic );
+ if ( pModWin )
+ {
+ BOOL bAppWindowDisabled, bDispatcherLocked;
+ USHORT nWaitCount;
+ SfxUInt16Item *pSWActionCount, *pSWLockViewCount;
+ BasicIDE::BasicStopped( &bAppWindowDisabled, &bDispatcherLocked,
+ &nWaitCount, &pSWActionCount, &pSWLockViewCount );
+
+ nRet = pModWin->BasicBreakHdl( pBasic );
+
+ if ( StarBASIC::IsRunning() ) // Falls abgebrochen...
+ {
+ if ( bAppWindowDisabled )
+ Application::GetDefDialogParent()->Enable( FALSE );
+ /*
+ if ( bDispatcherLocked )
+ SFX_APP()->LockDispatcher( TRUE );
+ */
+ if ( nWaitCount )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ for ( USHORT n = 0; n < nWaitCount; n++ )
+ pIDEShell->GetViewFrame()->GetWindow().EnterWait();
+ }
+ }
+ }
+ return nRet;
+}
+
+ModulWindow* BasicIDEShell::ShowActiveModuleWindow( StarBASIC* pBasic )
+{
+ SetCurLib( ScriptDocument::getApplicationScriptDocument(), String(), false );
+
+ SbModule* pActiveModule = StarBASIC::GetActiveModule();
+ SbClassModuleObject* pClassModuleObject = PTR_CAST(SbClassModuleObject,pActiveModule);
+ if( pClassModuleObject != NULL )
+ pActiveModule = pClassModuleObject->getClassModule();
+
+ DBG_ASSERT( pActiveModule, "Kein aktives Modul im ErrorHdl?!" );
+ if ( pActiveModule )
+ {
+ ModulWindow* pWin = 0;
+ SbxObject* pParent = pActiveModule->GetParent();
+ DBG_ASSERT( pParent && pParent->ISA( StarBASIC ), "Kein BASIC!" );
+ StarBASIC* pLib = static_cast< StarBASIC* >( pParent );
+ if ( pLib )
+ {
+ BasicManager* pBasMgr = BasicIDE::FindBasicManager( pLib );
+ if ( pBasMgr )
+ {
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+ String aLibName = pLib->GetName();
+ pWin = FindBasWin( aDocument, aLibName, pActiveModule->GetName(), TRUE );
+ DBG_ASSERT( pWin, "Error/Step-Hdl: Fenster wurde nicht erzeugt/gefunden!" );
+ SetCurLib( aDocument, aLibName );
+ SetCurWindow( pWin, TRUE );
+ }
+ }
+ BasicManager* pBasicMgr = BasicIDE::FindBasicManager( pBasic );
+ if ( pBasicMgr )
+ StartListening( *pBasicMgr, TRUE /* Nur einmal anmelden */ );
+ return pWin;
+ }
+ return 0;
+}
+
+void __EXPORT BasicIDEShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize )
+{
+ // Nicht wenn minimiert, weil dann bei Restore der Text verschoben ist.
+ if ( GetViewFrame()->GetWindow().GetOutputSizePixel().Height() == 0 )
+ return;
+
+ Size aSz( rSize );
+// long nScrollbarWidthPixel = aVScrollBar.GetSizePixel().Width();
+ Size aScrollBarBoxSz( aScrollBarBox.GetSizePixel() );
+ aSz.Height() -= aScrollBarBoxSz.Height();
+
+ Size aOutSz( aSz );
+ aSz.Width() -= aScrollBarBoxSz.Width();
+ aScrollBarBox.SetPosPixel( Point( rSize.Width() - aScrollBarBoxSz.Width(), rSize.Height() - aScrollBarBoxSz.Height() ) );
+ aVScrollBar.SetPosSizePixel( Point( rPos.X()+aSz.Width(), rPos.Y() ), Size( aScrollBarBoxSz.Width(), aSz.Height() ) );
+ if ( bTabBarSplitted )
+ {
+ // SplitSize ist beim Resize 0 !
+ long nSplitPos = pTabBar->GetSizePixel().Width();
+ if ( nSplitPos > aSz.Width() )
+ nSplitPos = aSz.Width();
+ pTabBar->SetPosSizePixel( Point( rPos.X(), rPos.Y()+aSz.Height() ), Size( nSplitPos, aScrollBarBoxSz.Height() ) );
+ long nScrlStart = rPos.X() + nSplitPos;
+ aHScrollBar.SetPosSizePixel( Point( nScrlStart, rPos.Y()+aSz.Height() ), Size( aSz.Width() - nScrlStart + 1, aScrollBarBoxSz.Height() ) );
+ aHScrollBar.Update();
+ }
+ else
+ {
+ aHScrollBar.SetPosSizePixel( Point( rPos.X()+ aSz.Width()/2 - 1, rPos.Y()+aSz.Height() ), Size( aSz.Width()/2 + 2, aScrollBarBoxSz.Height() ) );
+ pTabBar->SetPosSizePixel( Point( rPos.X(), rPos.Y()+aSz.Height() ), Size( aSz.Width()/2, aScrollBarBoxSz.Height() ) );
+ }
+
+ Window* pEdtWin = pCurWin ? pCurWin->GetLayoutWindow() : pModulLayout;
+ if ( pEdtWin )
+ {
+ if( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) )
+ pEdtWin->SetPosSizePixel( rPos, aSz ); // Ohne ScrollBar
+ else
+ pEdtWin->SetPosSizePixel( rPos, aOutSz );
+ }
+}
+
+Reference< XModel > BasicIDEShell::GetCurrentDocument() const
+{
+ Reference< XModel > xDocument;
+ if ( pCurWin && pCurWin->GetDocument().isDocument() )
+ xDocument = pCurWin->GetDocument().getDocument();
+ return xDocument;
+}
+
+void __EXPORT BasicIDEShell::Activate( BOOL bMDI )
+{
+ SfxViewShell::Activate( bMDI );
+
+ if ( bMDI )
+ {
+ if( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) )
+ ((DialogWindow*)pCurWin)->UpdateBrowser();
+
+ ShowObjectDialog( TRUE, FALSE );
+ }
+}
+
+void __EXPORT BasicIDEShell::Deactivate( BOOL bMDI )
+{
+ // bMDI TRUE heisst, dass ein anderes MDI aktiviert wurde, bei einem
+ // Deactivate durch eine MessageBox ist bMDI FALSE
+ if ( bMDI )
+ {
+ if( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ DialogWindow* pXDlgWin = (DialogWindow*)pCurWin;
+ pXDlgWin->DisableBrowser();
+ if( pXDlgWin->IsModified() )
+ BasicIDE::MarkDocumentModified( pXDlgWin->GetDocument() );
+ }
+
+ // CanClose pruefen, damit auch beim deaktivieren der BasicIDE geprueft wird,
+ // ob in einem Modul der Sourcecode zu gross ist...
+ for ( ULONG nWin = 0; nWin < aIDEWindowTable.Count(); nWin++ )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( nWin );
+ if ( /* !pWin->IsSuspended() && */ !pWin->CanClose() )
+ {
+ if ( m_aCurLibName.Len() && ( pWin->IsDocument( m_aCurDocument ) || pWin->GetLibName() != m_aCurLibName ) )
+ SetCurLib( ScriptDocument::getApplicationScriptDocument(), String(), false );
+ SetCurWindow( pWin, TRUE );
+ break;
+ }
+ }
+
+ ShowObjectDialog( FALSE, FALSE );
+ }
+}
+
+
+IMPL_LINK( BasicIDEShell, AccelSelectHdl, Accelerator*, pAccel )
+{
+ BOOL bDone = TRUE;
+ SfxViewFrame* pViewFrame = GetViewFrame();
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( !pDispatcher )
+ return FALSE;
+ switch ( pAccel->GetCurKeyCode().GetCode() )
+ {
+ case KEY_F5:
+ if ( pAccel->GetCurKeyCode().IsShift() )
+ pDispatcher->Execute( SID_BASICSTOP, SFX_CALLMODE_SYNCHRON );
+ else
+ pDispatcher->Execute( SID_BASICRUN, SFX_CALLMODE_SYNCHRON );
+ break;
+ case KEY_F7:
+ pDispatcher->Execute( SID_BASICIDE_ADDWATCH, SFX_CALLMODE_SYNCHRON );
+ break;
+ case KEY_F8:
+ if ( pAccel->GetCurKeyCode().IsShift() )
+ pDispatcher->Execute( SID_BASICSTEPOVER, SFX_CALLMODE_SYNCHRON );
+ else
+ pDispatcher->Execute( SID_BASICSTEPINTO, SFX_CALLMODE_SYNCHRON );
+ break;
+ case KEY_F9:
+ if ( pAccel->GetCurKeyCode().IsShift() )
+ pDispatcher->Execute( SID_BASICIDE_TOGGLEBRKPNTENABLED, SFX_CALLMODE_SYNCHRON );
+ else
+ pDispatcher->Execute( SID_BASICIDE_TOGGLEBRKPNT, SFX_CALLMODE_SYNCHRON );
+ break;
+ default: bDone = FALSE;
+ }
+ return bDone;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basides2.cxx b/basctl/source/basicide/basides2.cxx
new file mode 100644
index 000000000000..4092529a5e17
--- /dev/null
+++ b/basctl/source/basicide/basides2.cxx
@@ -0,0 +1,353 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "docsignature.hxx"
+
+#define SI_NOCONTROL
+#define SI_NOSBXCONTROLS
+
+#include <ide_pch.hxx>
+#include <basic/sbx.hxx>
+#include "basicrenderable.hxx"
+
+#include <com/sun/star/frame/XTitle.hpp>
+
+#include <vcl/sound.hxx>
+#include <basidesh.hxx>
+#include <basidesh.hrc>
+#include <baside2.hxx>
+#include <basdoc.hxx>
+#include <basobj.hxx>
+#include <svtools/texteng.hxx>
+#include <svtools/textview.hxx>
+#include <svtools/xtextedt.hxx>
+#include <tools/diagnose_ex.h>
+#include <sfx2/sfxdefs.hxx>
+#include <sfx2/signaturestate.hxx>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+namespace css = ::com::sun::star;
+
+IMPL_LINK_INLINE_START( BasicIDEShell, ObjectDialogCancelHdl, ObjectCatalog *, EMPTYARG )
+{
+ ShowObjectDialog( FALSE, TRUE );
+ return 0;
+}
+IMPL_LINK_INLINE_END( BasicIDEShell, ObjectDialogCancelHdl, ObjectCatalog *, EMPTYARG )
+
+/*
+IMPL_LINK( BasicIDEShell, ObjectDialogInsertHdl, ObjectCatalog *, pObjCat )
+{
+ if ( !pCurWin )
+ return 0;
+
+ if ( pCurWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ ModulWindow* pEditWin = (ModulWindow*)pCurWin;
+ pEditWin->InsertFromObjectCatalog( pObjCat );
+ }
+ else
+ Sound::Beep();
+
+ return 0;
+}
+*/
+
+Reference< view::XRenderable > BasicIDEShell::GetRenderable()
+{
+ return Reference< view::XRenderable >( new basicide::BasicRenderable( pCurWin ) );
+}
+
+#if 0
+USHORT __EXPORT BasicIDEShell::Print( SfxProgress &rProgress, BOOL bIsAPI, PrintDialog *pPrintDialog )
+{
+ if ( pCurWin )
+ {
+ SfxPrinter* pPrinter = GetPrinter( TRUE );
+ if ( pPrinter )
+ {
+ SfxViewShell::Print( rProgress, bIsAPI, pPrintDialog );
+ pCurWin->PrintData( pPrinter );
+ }
+ }
+ return 0;
+}
+#endif
+
+BOOL BasicIDEShell::HasSelection( BOOL /* bText */ ) const
+{
+ BOOL bSel = FALSE;
+ if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+ {
+ TextView* pEditView = ((ModulWindow*)pCurWin)->GetEditView();
+ if ( pEditView && pEditView->HasSelection() )
+ bSel = TRUE;
+ }
+ return bSel;
+}
+
+String BasicIDEShell::GetSelectionText( BOOL bWholeWord )
+{
+ String aText;
+ if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+ {
+ TextView* pEditView = ((ModulWindow*)pCurWin)->GetEditView();
+ if ( pEditView )
+ {
+ if ( bWholeWord && !pEditView->HasSelection() )
+ {
+ // String aStrCurrentDelimiters = pEngine->GetWordDelimiters();
+ // pEngine->SetWordDelimiters( " .,;\"'" );
+ aText = pEditView->GetTextEngine()->GetWord( pEditView->GetSelection().GetEnd() );
+ // pEngine->SetWordDelimiters( aStrCurrentDelimiters );
+ }
+ else
+ {
+ TextSelection aSel = pEditView->GetSelection();
+ if ( !bWholeWord || ( aSel.GetStart().GetPara() == aSel.GetEnd().GetPara() ) )
+ aText = pEditView->GetSelected();
+ }
+ }
+ }
+ return aText;
+}
+
+SfxPrinter* __EXPORT BasicIDEShell::GetPrinter( BOOL bCreate )
+{
+ if ( pCurWin ) // && pCurWin->ISA( ModulWindow ) )
+ {
+ BasicDocShell* pDocShell = (BasicDocShell*)GetViewFrame()->GetObjectShell();
+ DBG_ASSERT( pDocShell, "DocShell ?!" );
+ return pDocShell->GetPrinter( bCreate );
+ }
+ return 0;
+}
+
+USHORT __EXPORT BasicIDEShell::SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags, bool )
+{
+ (void)nDiffFlags;
+ BasicDocShell* pDocShell = (BasicDocShell*)GetViewFrame()->GetObjectShell();
+ DBG_ASSERT( pDocShell, "DocShell ?!" );
+ pDocShell->SetPrinter( pNewPrinter );
+ return 0;
+}
+
+void BasicIDEShell::SetMDITitle()
+{
+ String aTitle;
+
+ if ( m_aCurLibName.Len() )
+ {
+ LibraryLocation eLocation = m_aCurDocument.getLibraryLocation( m_aCurLibName );
+ aTitle = m_aCurDocument.getTitle( eLocation );
+ aTitle += '.';
+ aTitle += m_aCurLibName;
+ }
+ else
+ {
+ aTitle = String( IDEResId( RID_STR_ALL ) );
+ }
+
+ ::basctl::DocumentSignature aCurSignature( m_aCurDocument );
+ if ( aCurSignature.getScriptingSignatureState() == SIGNATURESTATE_SIGNATURES_OK )
+ {
+ aTitle += String::CreateFromAscii( " " );
+ aTitle += String( IDEResId( RID_STR_SIGNED ) );
+ aTitle += String::CreateFromAscii( " " );
+ }
+
+ SfxViewFrame* pViewFrame = GetViewFrame();
+ if ( pViewFrame )
+ {
+ SfxObjectShell* pShell = pViewFrame->GetObjectShell();
+ if ( pShell && aTitle != pShell->GetTitle( SFX_TITLE_CAPTION ) )
+ {
+ pShell->SetTitle( aTitle );
+ pShell->SetModified( FALSE );
+ }
+
+ css::uno::Reference< css::frame::XController > xController = GetController ();
+ css::uno::Reference< css::frame::XTitle > xTitle (xController, css::uno::UNO_QUERY);
+ if (xTitle.is ())
+ xTitle->setTitle (aTitle);
+ }
+}
+
+void BasicIDEShell::DestroyModulWindowLayout()
+{
+ delete pModulLayout;
+ pModulLayout = 0;
+}
+
+
+void BasicIDEShell::UpdateModulWindowLayout( bool bBasicStopped )
+{
+ if ( pModulLayout )
+ {
+ pModulLayout->GetStackWindow().UpdateCalls();
+ pModulLayout->GetWatchWindow().UpdateWatches( bBasicStopped );
+ }
+}
+
+void BasicIDEShell::CreateModulWindowLayout()
+{
+ pModulLayout = new ModulWindowLayout( &GetViewFrame()->GetWindow() );
+}
+
+ModulWindow* BasicIDEShell::CreateBasWin( const ScriptDocument& rDocument, const String& rLibName, const String& rModName )
+{
+ bCreatingWindow = TRUE;
+
+ ULONG nKey = 0;
+ ModulWindow* pWin = 0;
+
+ String aLibName( rLibName );
+ String aModName( rModName );
+
+ if ( !aLibName.Len() )
+ aLibName = String::CreateFromAscii( "Standard" );
+
+ uno::Reference< container::XNameContainer > xLib = rDocument.getOrCreateLibrary( E_SCRIPTS, aLibName );
+
+ if ( !aModName.Len() )
+ aModName = rDocument.createObjectName( E_SCRIPTS, aLibName );
+
+ // Vielleicht gibt es ein suspendiertes?
+ pWin = FindBasWin( rDocument, aLibName, aModName, FALSE, TRUE );
+
+ if ( !pWin )
+ {
+ ::rtl::OUString aModule;
+ bool bSuccess = false;
+ if ( rDocument.hasModule( aLibName, aModName ) )
+ bSuccess = rDocument.getModule( aLibName, aModName, aModule );
+ else
+ bSuccess = rDocument.createModule( aLibName, aModName, TRUE, aModule );
+
+ if ( bSuccess )
+ {
+ pWin = FindBasWin( rDocument, aLibName, aModName, FALSE, TRUE );
+ if( !pWin )
+ {
+ // new module window
+ pWin = new ModulWindow( pModulLayout, rDocument, aLibName, aModName, aModule );
+ nKey = InsertWindowInTable( pWin );
+ }
+ else // we've gotten called recursively ( via listener from createModule above ), get outta here
+ return pWin;
+ }
+ }
+ else
+ {
+ pWin->SetStatus( pWin->GetStatus() & ~BASWIN_SUSPENDED );
+ IDEBaseWindow* pTmp = aIDEWindowTable.First();
+ while ( pTmp && !nKey )
+ {
+ if ( pTmp == pWin )
+ nKey = aIDEWindowTable.GetCurKey();
+ pTmp = aIDEWindowTable.Next();
+ }
+ DBG_ASSERT( nKey, "CreateBasWin: Kein Key- Fenster nicht gefunden!" );
+ }
+ if( nKey && xLib.is() && rDocument.isInVBAMode() )
+ {
+ // display a nice friendly name in the ObjectModule tab,
+ // combining the objectname and module name, e.g. Sheet1 ( Financials )
+ String sObjName;
+ ModuleInfoHelper::getObjectName( xLib, rModName, sObjName );
+ if( sObjName.Len() )
+ {
+ aModName.AppendAscii(" (").Append(sObjName).AppendAscii(")");
+ }
+ }
+ pTabBar->InsertPage( (USHORT)nKey, aModName );
+ pTabBar->Sort();
+ pWin->GrabScrollBars( &aHScrollBar, &aVScrollBar );
+ if ( !pCurWin )
+ SetCurWindow( pWin, FALSE, FALSE );
+
+ bCreatingWindow = FALSE;
+ return pWin;
+}
+
+ModulWindow* BasicIDEShell::FindBasWin( const ScriptDocument& rDocument, const String& rLibName, const String& rModName, BOOL bCreateIfNotExist, BOOL bFindSuspended )
+{
+ ModulWindow* pModWin = 0;
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ while ( pWin && !pModWin )
+ {
+ if ( ( !pWin->IsSuspended() || bFindSuspended ) && pWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ if ( !rLibName.Len() ) // nur irgendeins finden...
+ pModWin = (ModulWindow*)pWin;
+ else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && pWin->GetName() == rModName )
+ pModWin = (ModulWindow*)pWin;
+ }
+ pWin = aIDEWindowTable.Next();
+ }
+ if ( !pModWin && bCreateIfNotExist )
+ pModWin = CreateBasWin( rDocument, rLibName, rModName );
+
+ return pModWin;
+}
+
+void __EXPORT BasicIDEShell::Move()
+{
+ if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+ ((ModulWindow*)pCurWin)->FrameWindowMoved();
+}
+
+void __EXPORT BasicIDEShell::ShowCursor( bool bOn )
+{
+ if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+ ((ModulWindow*)pCurWin)->ShowCursor( bOn );
+}
+
+// Hack for #101048
+sal_Int32 getBasicIDEShellCount( void );
+
+// Nur wenn Basicfenster oben:
+void __EXPORT BasicIDEShell::ExecuteBasic( SfxRequest& rReq )
+{
+ if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) )
+ return;
+
+ pCurWin->ExecuteCommand( rReq );
+ sal_Int32 nCount = getBasicIDEShellCount();
+ if( nCount )
+ CheckWindows();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basides3.cxx b/basctl/source/basicide/basides3.cxx
new file mode 100644
index 000000000000..3825eaef11bf
--- /dev/null
+++ b/basctl/source/basicide/basides3.cxx
@@ -0,0 +1,179 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#define SI_NOCONTROL
+#define SI_NOSBXCONTROLS
+
+#include <basidesh.hrc>
+#include <ide_pch.hxx>
+
+
+#define _SOLAR__PRIVATE 1
+
+#include <basidesh.hxx>
+#include <baside2.hxx>
+#include <baside3.hxx>
+#include <basobj.hxx>
+#include <localizationmgr.hxx>
+#include <dlgedview.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <xmlscript/xmldlg_imexp.hxx>
+#include <tools/diagnose_ex.h>
+
+using namespace comphelper;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::io;
+
+
+DialogWindow* BasicIDEShell::CreateDlgWin( const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName )
+{
+ bCreatingWindow = TRUE;
+
+ ULONG nKey = 0;
+ DialogWindow* pWin = 0;
+ String aLibName( rLibName );
+ String aDlgName( rDlgName );
+
+ if ( !aLibName.Len() )
+ aLibName = String::CreateFromAscii( "Standard" );
+
+ rDocument.getOrCreateLibrary( E_DIALOGS, aLibName );
+
+ if ( !aDlgName.Len() )
+ aDlgName = rDocument.createObjectName( E_DIALOGS, aLibName );
+
+ // Vielleicht gibt es ein suspendiertes?
+ pWin = FindDlgWin( rDocument, aLibName, aDlgName, FALSE, TRUE );
+
+ if ( !pWin )
+ {
+ try
+ {
+ Reference< io::XInputStreamProvider > xISP;
+ if ( rDocument.hasDialog( aLibName, aDlgName ) )
+ rDocument.getDialog( aLibName, aDlgName, xISP );
+ else
+ rDocument.createDialog( aLibName, aDlgName, xISP );
+
+ if ( xISP.is() )
+ {
+ // create dialog model
+ Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
+ Reference< container::XNameContainer > xDialogModel( xMSF->createInstance
+ ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ), UNO_QUERY );
+ Reference< XInputStream > xInput( xISP->createInputStream() );
+ Reference< XComponentContext > xContext;
+ Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
+ OSL_ASSERT( xProps.is() );
+ OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
+ LocalizationMgr::setStringResourceAtDialog( rDocument, rLibName, aDlgName, xDialogModel );
+
+ // new dialog window
+ pWin = new DialogWindow( &GetViewFrame()->GetWindow(), rDocument, aLibName, aDlgName, xDialogModel );
+ nKey = InsertWindowInTable( pWin );
+ }
+ }
+ catch ( uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ else
+ {
+ pWin->SetStatus( pWin->GetStatus() & ~BASWIN_SUSPENDED );
+ IDEBaseWindow* pTmp = aIDEWindowTable.First();
+ while ( pTmp && !nKey )
+ {
+ if ( pTmp == pWin )
+ nKey = aIDEWindowTable.GetCurKey();
+ pTmp = aIDEWindowTable.Next();
+ }
+ DBG_ASSERT( nKey, "CreateDlgWin: Kein Key - Fenster nicht gefunden!" );
+ }
+
+ if( pWin )
+ {
+ pWin->GrabScrollBars( &aHScrollBar, &aVScrollBar );
+ pTabBar->InsertPage( (USHORT)nKey, aDlgName );
+ pTabBar->Sort();
+ if ( !pCurWin )
+ SetCurWindow( pWin, FALSE, FALSE );
+ }
+
+ bCreatingWindow = FALSE;
+ return pWin;
+}
+
+DialogWindow* BasicIDEShell::FindDlgWin( const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName, BOOL bCreateIfNotExist, BOOL bFindSuspended )
+{
+ DialogWindow* pDlgWin = 0;
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ while ( pWin && !pDlgWin )
+ {
+ if ( ( !pWin->IsSuspended() || bFindSuspended ) && pWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ if ( !rLibName.Len() ) // nur irgendeins finden...
+ pDlgWin = (DialogWindow*)pWin;
+ else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && pWin->GetName() == rDlgName )
+ pDlgWin = (DialogWindow*)pWin;
+ }
+ pWin = aIDEWindowTable.Next();
+ }
+ if ( !pDlgWin && bCreateIfNotExist )
+ pDlgWin = CreateDlgWin( rDocument, rLibName, rDlgName );
+
+ return pDlgWin;
+}
+
+SdrView* BasicIDEShell::GetCurDlgView() const
+{
+ if ( !pCurWin || !pCurWin->IsA( TYPE( DialogWindow ) ) )
+ return NULL;
+
+ DialogWindow* pWin = (DialogWindow*)pCurWin;
+ return pWin->GetView();
+}
+
+// Nur wenn Dialogfenster oben:
+void __EXPORT BasicIDEShell::ExecuteDialog( SfxRequest& rReq )
+{
+ if ( pCurWin && ( pCurWin->IsA( TYPE( DialogWindow) ) ||
+ (rReq.GetSlot() == SID_IMPORT_DIALOG &&pCurWin->IsA( TYPE( ModulWindow) ) ) ) )
+ {
+ pCurWin->ExecuteCommand( rReq );
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
new file mode 100644
index 000000000000..9b5d01636047
--- /dev/null
+++ b/basctl/source/basicide/basidesh.cxx
@@ -0,0 +1,1065 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+// CLOOKS:
+//#define _MENUBTN_HXX
+#define _SPIN_HXX
+#define _PRVWIN_HXX
+//#define _FIELD_HXX ***
+//#define _TAB_HXX ***
+#define _DIALOGS_HXX
+#define _SVRTF_HXX
+#define _ISETBRW_HXX
+#define _VCTRLS_HXX
+#define SI_NOCONTROL
+#define SI_NOSBXCONTROLS
+
+#define ITEMID_SIZE 0
+
+// Falls ohne PCH's:
+#include <ide_pch.hxx>
+
+
+#define _SOLAR__PRIVATE 1
+#include <basic/sbx.hxx>
+#include <svl/hint.hxx>
+#include <tools/diagnose_ex.h>
+#include <basidesh.hrc>
+#include <basidesh.hxx>
+#include <basdoc.hxx>
+#include <basobj.hxx>
+#include <bastypes.hxx>
+#include <basicbox.hxx>
+#include <objdlg.hxx>
+#include <sbxitem.hxx>
+#include <tbxctl.hxx>
+#include <iderdll2.hxx>
+#include <basidectrlr.hxx>
+#include <localizationmgr.hxx>
+
+#define BasicIDEShell
+#define SFX_TYPEMAP
+#include <idetemp.hxx>
+#include <basslots.hxx>
+#include <iderdll.hxx>
+#include <svx/pszctrl.hxx>
+#include <svx/insctrl.hxx>
+#include <svx/srchdlg.hxx>
+#include <svx/lboxctrl.hxx>
+#include <svx/tbcontrl.hxx>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/container/XContainer.hpp>
+#include <com/sun/star/container/XContainerListener.hpp>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+
+#include <svx/xmlsecctrl.hxx>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+using ::rtl::OUString;
+
+static const rtl::OUString sStandardLibName( rtl::OUString::createFromAscii("Standard") );
+
+typedef ::cppu::WeakImplHelper1< container::XContainerListener > ContainerListenerBASE;
+
+class ContainerListenerImpl : public ContainerListenerBASE
+{
+ BasicIDEShell* mpShell;
+public:
+
+ ContainerListenerImpl( BasicIDEShell* pShell ) : mpShell( pShell ) {}
+
+ ~ContainerListenerImpl()
+ {
+ }
+
+ void addContainerListener( const ScriptDocument& rScriptDocument, const String& aLibName )
+ {
+ try
+ {
+ uno::Reference< container::XContainer > xContainer( rScriptDocument.getLibrary( E_SCRIPTS, aLibName, FALSE ), uno::UNO_QUERY );
+ if ( xContainer.is() )
+ {
+ uno::Reference< container::XContainerListener > xContainerListener( this );
+ xContainer->addContainerListener( xContainerListener );
+ }
+ }
+ catch( uno::Exception& ) {}
+ }
+ void removeContainerListener( const ScriptDocument& rScriptDocument, const String& aLibName )
+ {
+ try
+ {
+ uno::Reference< container::XContainer > xContainer( rScriptDocument.getLibrary( E_SCRIPTS, aLibName, FALSE ), uno::UNO_QUERY );
+ if ( xContainer.is() )
+ {
+ uno::Reference< container::XContainerListener > xContainerListener( this );
+ xContainer->removeContainerListener( xContainerListener );
+ }
+ }
+ catch( uno::Exception& ) {}
+ }
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const lang::EventObject& ) throw( uno::RuntimeException ) {}
+
+ // XContainerListener
+ virtual void SAL_CALL elementInserted( const container::ContainerEvent& Event ) throw( uno::RuntimeException )
+ {
+ rtl::OUString sModuleName;
+ if( mpShell && ( Event.Accessor >>= sModuleName ) )
+ mpShell->FindBasWin( mpShell->m_aCurDocument, mpShell->m_aCurLibName, sModuleName, TRUE, FALSE );
+ }
+ virtual void SAL_CALL elementReplaced( const container::ContainerEvent& ) throw( com::sun::star::uno::RuntimeException ) { }
+ virtual void SAL_CALL elementRemoved( const container::ContainerEvent& Event ) throw( com::sun::star::uno::RuntimeException )
+ {
+ rtl::OUString sModuleName;
+ if( mpShell && ( Event.Accessor >>= sModuleName ) )
+ {
+ IDEBaseWindow* pWin = mpShell->FindWindow( mpShell->m_aCurDocument, mpShell->m_aCurLibName, sModuleName, BASICIDE_TYPE_MODULE, TRUE );
+ if( pWin )
+ mpShell->RemoveWindow( pWin, TRUE, TRUE );
+ }
+ }
+
+};
+
+TYPEINIT1( BasicIDEShell, SfxViewShell );
+
+SFX_IMPL_NAMED_VIEWFACTORY( BasicIDEShell, "Default" )
+{
+ SFX_VIEW_REGISTRATION( BasicDocShell );
+}
+
+
+// MI: Prinzipiel IDL, aber ich lieber doch nicht?
+// SFX_IMPL_ /*IDL_*/ INTERFACE( BasicIDEShell, SfxViewShell, IDEResId( RID_STR_IDENAME ) )
+SFX_IMPL_INTERFACE( BasicIDEShell, SfxViewShell, IDEResId( RID_STR_IDENAME ) )
+{
+ SFX_CHILDWINDOW_REGISTRATION( SID_SEARCH_DLG );
+ SFX_FEATURED_CHILDWINDOW_REGISTRATION(SID_SHOW_PROPERTYBROWSER, BASICIDE_UI_FEATURE_SHOW_BROWSER);
+ SFX_POPUPMENU_REGISTRATION( IDEResId( RID_POPUP_DLGED ) );
+}
+
+
+
+#define IDE_VIEWSHELL_FLAGS SFX_VIEW_CAN_PRINT|SFX_VIEW_NO_NEWWINDOW
+
+
+// Hack for #101048
+static sal_Int32 GnBasicIDEShellCount;
+sal_Int32 getBasicIDEShellCount( void )
+ { return GnBasicIDEShellCount; }
+
+BasicIDEShell::BasicIDEShell( SfxViewFrame* pFrame_, SfxViewShell* /* pOldShell */ ) :
+ SfxViewShell( pFrame_, IDE_VIEWSHELL_FLAGS ),
+ m_aCurDocument( ScriptDocument::getApplicationScriptDocument() ),
+ aHScrollBar( &GetViewFrame()->GetWindow(), WinBits( WB_HSCROLL | WB_DRAG ) ),
+ aVScrollBar( &GetViewFrame()->GetWindow(), WinBits( WB_VSCROLL | WB_DRAG ) ),
+ aScrollBarBox( &GetViewFrame()->GetWindow(), WinBits( WB_SIZEABLE ) ),
+ m_bAppBasicModified( FALSE ),
+ m_aNotifier( *this )
+{
+ m_xLibListener = new ContainerListenerImpl( this );
+ Init();
+ GnBasicIDEShellCount++;
+}
+
+
+
+void BasicIDEShell::Init()
+{
+ TbxControls::RegisterControl( SID_CHOOSE_CONTROLS );
+ SvxPosSizeStatusBarControl::RegisterControl();
+ SvxInsertStatusBarControl::RegisterControl();
+ XmlSecStatusBarControl::RegisterControl( SID_SIGNATURE );
+ SvxSimpleUndoRedoController::RegisterControl( SID_UNDO );
+ SvxSimpleUndoRedoController::RegisterControl( SID_REDO );
+
+ SvxSearchDialogWrapper::RegisterChildWindow( sal_False );
+
+ IDE_DLL()->GetExtraData()->ShellInCriticalSection() = TRUE;
+
+ SetName( String( RTL_CONSTASCII_USTRINGPARAM( "BasicIDE" ) ) );
+ SetHelpId( SVX_INTERFACE_BASIDE_VIEWSH );
+
+ SFX_APP()->EnterBasicCall();
+
+ LibBoxControl::RegisterControl( SID_BASICIDE_LIBSELECTOR );
+ LanguageBoxControl::RegisterControl( SID_BASICIDE_CURRENT_LANG );
+
+ CreateModulWindowLayout();
+
+ GetViewFrame()->GetWindow().SetBackground();
+
+ pCurWin = 0;
+ m_aCurDocument = ScriptDocument::getApplicationScriptDocument();
+ pObjectCatalog = 0;
+ bCreatingWindow = FALSE;
+
+ m_pCurLocalizationMgr = NULL;
+
+ pTabBar = new BasicIDETabBar( &GetViewFrame()->GetWindow() );
+ pTabBar->SetSplitHdl( LINK( this, BasicIDEShell, TabBarSplitHdl ) );
+ bTabBarSplitted = FALSE;
+
+ nCurKey = 100;
+ InitScrollBars();
+ InitTabBar();
+
+ SetCurLib( ScriptDocument::getApplicationScriptDocument(), String::CreateFromAscii( "Standard" ), false, false );
+
+ if ( IDE_DLL() && IDE_DLL()->pShell == NULL )
+ IDE_DLL()->pShell = this;
+
+ IDE_DLL()->GetExtraData()->ShellInCriticalSection() = FALSE;
+
+ // It's enough to create the controller ...
+ // It will be public by using magic :-)
+ new BasicIDEController( this );
+
+ // Force updating the title ! Because it must be set to the controller
+ // it has to be called directly after creating those controller.
+ SetMDITitle ();
+
+ UpdateWindows();
+}
+
+__EXPORT BasicIDEShell::~BasicIDEShell()
+{
+ m_aNotifier.dispose();
+
+ if ( IDE_DLL() && IDE_DLL()->pShell == this )
+ IDE_DLL()->pShell = NULL;
+
+ // Damit bei einem Basic-Fehler beim Speichern die Shell nicht sofort
+ // wieder hoch kommt:
+ IDE_DLL()->GetExtraData()->ShellInCriticalSection() = TRUE;
+
+ SetWindow( 0 );
+ SetCurWindow( 0 );
+
+ // Alle Fenster zerstoeren:
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ while ( pWin )
+ {
+ // Kein Store, passiert bereits, wenn die BasicManager zerstoert werden.
+ delete pWin;
+ pWin = aIDEWindowTable.Next();
+ }
+
+ aIDEWindowTable.Clear();
+ delete pTabBar;
+ delete pObjectCatalog;
+ DestroyModulWindowLayout();
+
+ ContainerListenerImpl* pListener = static_cast< ContainerListenerImpl* >( m_xLibListener.get() );
+ // Destroy all ContainerListeners for Basic Container.
+ if ( pListener )
+ pListener->removeContainerListener( m_aCurDocument, m_aCurLibName );
+
+ // MI: Das gab einen GPF im SDT beim Schliessen da dann der ViewFrame die
+ // ObjSh loslaesst. Es wusste auch keiner mehr wozu das gut war.
+ // GetViewFrame()->GetObjectShell()->Broadcast( SfxSimpleHint( SFX_HINT_DYING ) );
+
+ SFX_APP()->LeaveBasicCall();
+ IDE_DLL()->GetExtraData()->ShellInCriticalSection() = FALSE;
+
+ GnBasicIDEShellCount--;
+}
+
+void BasicIDEShell::onDocumentCreated( const ScriptDocument& /*_rDocument*/ )
+{
+ UpdateWindows();
+}
+
+void BasicIDEShell::onDocumentOpened( const ScriptDocument& /*_rDocument*/ )
+{
+ UpdateWindows();
+}
+
+void BasicIDEShell::onDocumentSave( const ScriptDocument& /*_rDocument*/ )
+{
+ StoreAllWindowData();
+}
+
+void BasicIDEShell::onDocumentSaveDone( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void BasicIDEShell::onDocumentSaveAs( const ScriptDocument& /*_rDocument*/ )
+{
+ StoreAllWindowData();
+}
+
+void BasicIDEShell::onDocumentSaveAsDone( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void BasicIDEShell::onDocumentClosed( const ScriptDocument& _rDocument )
+{
+ if ( !_rDocument.isValid() )
+ return;
+
+ bool bSetCurWindow = false;
+ bool bSetCurLib = ( _rDocument == m_aCurDocument );
+
+ // remove all windows which belong to this document
+ for ( ULONG nWin = aIDEWindowTable.Count(); nWin; )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( --nWin );
+ if ( pWin->IsDocument( _rDocument ) )
+ {
+ if ( pWin->GetStatus() & (BASWIN_RUNNINGBASIC|BASWIN_INRESCHEDULE) )
+ {
+ pWin->AddStatus( BASWIN_TOBEKILLED );
+ pWin->Hide();
+ StarBASIC::Stop();
+ // there's no notify
+ pWin->BasicStopped();
+ }
+ else
+ {
+ pWin->StoreData();
+ if ( pWin == pCurWin )
+ bSetCurWindow = true;
+ RemoveWindow( pWin, TRUE, FALSE );
+ }
+ }
+ }
+
+ // remove lib info
+ BasicIDEData* pData = IDE_DLL()->GetExtraData();
+ if ( pData )
+ pData->GetLibInfos().RemoveInfoFor( _rDocument );
+
+ if ( bSetCurLib )
+ SetCurLib( ScriptDocument::getApplicationScriptDocument(), String::CreateFromAscii( "Standard" ), true, false );
+ else if ( bSetCurWindow )
+ SetCurWindow( FindApplicationWindow(), TRUE );
+}
+
+void BasicIDEShell::onDocumentTitleChanged( const ScriptDocument& /*_rDocument*/ )
+{
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_LIBSELECTOR, TRUE, FALSE );
+ SetMDITitle();
+}
+
+void BasicIDEShell::onDocumentModeChanged( const ScriptDocument& _rDocument )
+{
+ for ( ULONG nWin = aIDEWindowTable.Count(); nWin; )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( --nWin );
+ if ( pWin->IsDocument( _rDocument ) && _rDocument.isDocument() )
+ pWin->SetReadOnly( _rDocument.isReadOnly() );
+ }
+}
+
+void BasicIDEShell::StoreAllWindowData( BOOL bPersistent )
+{
+ for ( ULONG nWin = 0; nWin < aIDEWindowTable.Count(); nWin++ )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( nWin );
+ DBG_ASSERT( pWin, "PrepareClose: NULL-Pointer in Table?" );
+ if ( !pWin->IsSuspended() )
+ pWin->StoreData();
+ }
+
+ if ( bPersistent )
+ {
+ SFX_APP()->SaveBasicAndDialogContainer();
+ SetAppBasicModified( FALSE );
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_SAVEDOC );
+ pBindings->Update( SID_SAVEDOC );
+ }
+ }
+}
+
+
+USHORT __EXPORT BasicIDEShell::PrepareClose( BOOL bUI, BOOL bForBrowsing )
+{
+ (void)bForBrowsing;
+
+ // da es nach Drucken etc. (DocInfo) modifiziert ist, hier resetten
+ GetViewFrame()->GetObjectShell()->SetModified(FALSE);
+
+ if ( StarBASIC::IsRunning() )
+ {
+ if( bUI )
+ {
+ String aErrorStr( IDEResId( RID_STR_CANNOTCLOSE ) );
+ Window *pParent = &GetViewFrame()->GetWindow();
+ InfoBox( pParent, aErrorStr ).Execute();
+ }
+ return FALSE;
+ }
+ else
+ {
+ // Hier unguenstig, wird zweimal gerufen...
+// StoreAllWindowData();
+
+ BOOL bCanClose = TRUE;
+ for ( ULONG nWin = 0; bCanClose && ( nWin < aIDEWindowTable.Count() ); nWin++ )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( nWin );
+ if ( /* !pWin->IsSuspended() && */ !pWin->CanClose() )
+ {
+ if ( m_aCurLibName.Len() && ( pWin->IsDocument( m_aCurDocument ) || pWin->GetLibName() != m_aCurLibName ) )
+ SetCurLib( ScriptDocument::getApplicationScriptDocument(), String(), false );
+ SetCurWindow( pWin, TRUE );
+ bCanClose = FALSE;
+ }
+ }
+
+ if ( bCanClose )
+ StoreAllWindowData( FALSE ); // Nicht auf Platte schreiben, das passiert am Ende automatisch
+
+ return bCanClose;
+ }
+}
+
+void BasicIDEShell::InitScrollBars()
+{
+ aVScrollBar.SetLineSize( 300 );
+ aVScrollBar.SetPageSize( 2000 );
+ aHScrollBar.SetLineSize( 300 );
+ aHScrollBar.SetPageSize( 2000 );
+ aHScrollBar.Enable();
+ aVScrollBar.Enable();
+ aVScrollBar.Show();
+ aHScrollBar.Show();
+ aScrollBarBox.Show();
+}
+
+
+
+void BasicIDEShell::InitTabBar()
+{
+ pTabBar->Enable();
+ pTabBar->Show();
+ pTabBar->SetSelectHdl( LINK( this, BasicIDEShell, TabBarHdl ) );
+}
+
+
+Size __EXPORT BasicIDEShell::GetOptimalSizePixel() const
+{
+ return Size( 400, 300 );
+}
+
+
+
+void __EXPORT BasicIDEShell::OuterResizePixel( const Point &rPos, const Size &rSize )
+{
+ // Adjust fliegt irgendwann raus...
+ AdjustPosSizePixel( rPos, rSize );
+}
+
+
+IMPL_LINK_INLINE_START( BasicIDEShell, TabBarSplitHdl, TabBar *, pTBar )
+{
+ (void)pTBar;
+ bTabBarSplitted = TRUE;
+ ArrangeTabBar();
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( BasicIDEShell, TabBarSplitHdl, TabBar *, pTBar )
+
+
+
+IMPL_LINK( BasicIDEShell, TabBarHdl, TabBar *, pCurTabBar )
+{
+ USHORT nCurId = pCurTabBar->GetCurPageId();
+ IDEBaseWindow* pWin = aIDEWindowTable.Get( nCurId );
+ DBG_ASSERT( pWin, "Eintrag in TabBar passt zu keinem Fenster!" );
+ SetCurWindow( pWin );
+
+ return 0;
+}
+
+
+
+BOOL BasicIDEShell::NextPage( BOOL bPrev )
+{
+ BOOL bRet = FALSE;
+ USHORT nPos = pTabBar->GetPagePos( pTabBar->GetCurPageId() );
+
+ if ( bPrev )
+ --nPos;
+ else
+ ++nPos;
+
+ if ( nPos < pTabBar->GetPageCount() )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.Get( pTabBar->GetPageId( nPos ) );
+ SetCurWindow( pWin, TRUE );
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+
+
+void BasicIDEShell::ArrangeTabBar()
+{
+ Size aSz( GetViewFrame()->GetWindow().GetOutputSizePixel() );
+ long nBoxPos = aScrollBarBox.GetPosPixel().X() - 1;
+ long nPos = pTabBar->GetSplitSize();
+ if ( nPos <= nBoxPos )
+ {
+ Point aPnt( pTabBar->GetPosPixel() );
+ long nH = aHScrollBar.GetSizePixel().Height();
+ pTabBar->SetPosSizePixel( aPnt, Size( nPos, nH ) );
+ long nScrlStart = aPnt.X() + nPos;
+ aHScrollBar.SetPosSizePixel( Point( nScrlStart, aPnt.Y() ), Size( nBoxPos - nScrlStart + 2, nH ) );
+ aHScrollBar.Update();
+ }
+}
+
+
+
+SfxUndoManager* BasicIDEShell::GetUndoManager()
+{
+ SfxUndoManager* pMgr = NULL;
+ if( pCurWin )
+ pMgr = pCurWin->GetUndoManager();
+
+ return pMgr;
+}
+
+
+
+void BasicIDEShell::ShowObjectDialog( BOOL bShow, BOOL bCreateOrDestroy )
+{
+ if ( bShow )
+ {
+ if ( !pObjectCatalog && bCreateOrDestroy )
+ {
+ pObjectCatalog = new ObjectCatalog( &GetViewFrame()->GetWindow() );
+ // Position wird in BasicIDEData gemerkt und vom Dlg eingestellt
+ if ( pObjectCatalog )
+ {
+ pObjectCatalog->SetCancelHdl( LINK( this, BasicIDEShell, ObjectDialogCancelHdl ) );
+ BasicEntryDescriptor aDesc;
+ IDEBaseWindow* pCurWin_ = GetCurWindow();
+ if ( pCurWin_ )
+ aDesc = pCurWin_->CreateEntryDescriptor();
+ pObjectCatalog->SetCurrentEntry( aDesc );
+ }
+ }
+
+ // Die allerletzten Aenderungen...
+ if ( pCurWin )
+ pCurWin->StoreData();
+
+ if ( pObjectCatalog )
+ {
+ pObjectCatalog->UpdateEntries();
+ pObjectCatalog->Show();
+ }
+ }
+ else if ( pObjectCatalog )
+ {
+ pObjectCatalog->Hide();
+ if ( bCreateOrDestroy )
+ {
+ // Wegen OS/2-Focus-Problem pObjectCatalog vorm delete auf NULL
+ ObjectCatalog* pTemp = pObjectCatalog;
+ pObjectCatalog = 0;
+ delete pTemp;
+ }
+ }
+}
+
+
+
+void __EXPORT BasicIDEShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId&,
+ const SfxHint& rHint, const TypeId& )
+{
+ if ( IDE_DLL()->GetShell() )
+ {
+ if ( rHint.IsA( TYPE( SfxSimpleHint ) ) )
+ {
+ switch ( ((SfxSimpleHint&)rHint).GetId() )
+ {
+ case SFX_HINT_DYING:
+ {
+ EndListening( rBC, TRUE /* Alle abmelden */ );
+ if ( pObjectCatalog )
+ pObjectCatalog->UpdateEntries();
+ }
+ break;
+ }
+
+ if ( rHint.IsA( TYPE( SbxHint ) ) )
+ {
+ SbxHint& rSbxHint = (SbxHint&)rHint;
+ ULONG nHintId = rSbxHint.GetId();
+ if ( ( nHintId == SBX_HINT_BASICSTART ) ||
+ ( nHintId == SBX_HINT_BASICSTOP ) )
+ {
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_BASICRUN );
+ pBindings->Update( SID_BASICRUN );
+ pBindings->Invalidate( SID_BASICCOMPILE );
+ pBindings->Update( SID_BASICCOMPILE );
+ pBindings->Invalidate( SID_BASICSTEPOVER );
+ pBindings->Update( SID_BASICSTEPOVER );
+ pBindings->Invalidate( SID_BASICSTEPINTO );
+ pBindings->Update( SID_BASICSTEPINTO );
+ pBindings->Invalidate( SID_BASICSTEPOUT );
+ pBindings->Update( SID_BASICSTEPOUT );
+ pBindings->Invalidate( SID_BASICSTOP );
+ pBindings->Update( SID_BASICSTOP );
+ pBindings->Invalidate( SID_BASICIDE_TOGGLEBRKPNT );
+ pBindings->Update( SID_BASICIDE_TOGGLEBRKPNT );
+ pBindings->Invalidate( SID_BASICIDE_MANAGEBRKPNTS );
+ pBindings->Update( SID_BASICIDE_MANAGEBRKPNTS );
+ pBindings->Invalidate( SID_BASICIDE_MODULEDLG );
+ pBindings->Update( SID_BASICIDE_MODULEDLG );
+ pBindings->Invalidate( SID_BASICLOAD );
+ pBindings->Update( SID_BASICLOAD );
+ }
+
+ if ( nHintId == SBX_HINT_BASICSTOP )
+ {
+ // Nicht nur bei Error/Break oder explizitem anhalten,
+ // falls durch einen Programmierfehler das Update abgeschaltet ist.
+ BasicIDE::BasicStopped();
+ UpdateModulWindowLayout( true ); // Leer machen...
+ if( m_pCurLocalizationMgr )
+ m_pCurLocalizationMgr->handleBasicStopped();
+ }
+ else if( m_pCurLocalizationMgr )
+ {
+ m_pCurLocalizationMgr->handleBasicStarted();
+ }
+
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ while ( pWin )
+ {
+ if ( nHintId == SBX_HINT_BASICSTART )
+ pWin->BasicStarted();
+ else
+ pWin->BasicStopped();
+ pWin = aIDEWindowTable.Next();
+ }
+ }
+ }
+ }
+ }
+}
+
+
+
+void BasicIDEShell::CheckWindows()
+{
+ BOOL bSetCurWindow = FALSE;
+ for ( ULONG nWin = 0; nWin < aIDEWindowTable.Count(); nWin++ )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( nWin );
+ if ( pWin->GetStatus() & BASWIN_TOBEKILLED )
+ {
+ pWin->StoreData();
+ if ( pWin == pCurWin )
+ bSetCurWindow = TRUE;
+ RemoveWindow( pWin, TRUE, FALSE );
+ nWin--;
+ }
+ }
+ if ( bSetCurWindow )
+ SetCurWindow( FindApplicationWindow(), TRUE );
+}
+
+
+
+void BasicIDEShell::RemoveWindows( const ScriptDocument& rDocument, const String& rLibName, BOOL bDestroy )
+{
+ BOOL bChangeCurWindow = pCurWin ? FALSE : TRUE;
+ for ( ULONG nWin = 0; nWin < aIDEWindowTable.Count(); nWin++ )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( nWin );
+ if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName )
+ {
+ if ( pWin == pCurWin )
+ bChangeCurWindow = TRUE;
+ pWin->StoreData();
+ RemoveWindow( pWin, bDestroy, FALSE );
+ nWin--;
+ }
+ }
+ if ( bChangeCurWindow )
+ SetCurWindow( FindApplicationWindow(), TRUE );
+}
+
+
+
+void BasicIDEShell::UpdateWindows()
+{
+ // Alle Fenster, die nicht angezeigt werden duerfen, entfernen
+ BOOL bChangeCurWindow = pCurWin ? FALSE : TRUE;
+ if ( m_aCurLibName.Len() )
+ {
+ for ( ULONG nWin = 0; nWin < aIDEWindowTable.Count(); nWin++ )
+ {
+ IDEBaseWindow* pWin = aIDEWindowTable.GetObject( nWin );
+ if ( !pWin->IsDocument( m_aCurDocument ) || pWin->GetLibName() != m_aCurLibName )
+ {
+ if ( pWin == pCurWin )
+ bChangeCurWindow = TRUE;
+ pWin->StoreData();
+ // Die Abfrage auf RUNNING verhindert den Absturz, wenn in Reschedule.
+ // Fenster bleibt erstmal stehen, spaeter sowieso mal umstellen,
+ // dass Fenster nur als Hidden markiert werden und nicht
+ // geloescht.
+ if ( !(pWin->GetStatus() & ( BASWIN_TOBEKILLED | BASWIN_RUNNINGBASIC | BASWIN_SUSPENDED ) ) )
+ {
+ RemoveWindow( pWin, FALSE, FALSE );
+ nWin--;
+ }
+ }
+ }
+ }
+
+ if ( bCreatingWindow )
+ return;
+
+ IDEBaseWindow* pNextActiveWindow = 0;
+
+ // Alle anzuzeigenden Fenster anzeigen
+ ScriptDocuments aDocuments( ScriptDocument::getAllScriptDocuments( ScriptDocument::AllWithApplication ) );
+ for ( ScriptDocuments::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ StartListening( *doc->getBasicManager(), TRUE /* Nur einmal anmelden */ );
+
+ // libraries
+ Sequence< ::rtl::OUString > aLibNames( doc->getLibraryNames() );
+ sal_Int32 nLibCount = aLibNames.getLength();
+ const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
+
+ for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+ {
+ String aLibName = pLibNames[ i ];
+
+ if ( !m_aCurLibName.Len() || ( *doc == m_aCurDocument && aLibName == m_aCurLibName ) )
+ {
+ // check, if library is password protected and not verified
+ BOOL bProtected = FALSE;
+ Reference< script::XLibraryContainer > xModLibContainer( doc->getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aLibName ) && !xPasswd->isLibraryPasswordVerified( aLibName ) )
+ {
+ bProtected = TRUE;
+ }
+ }
+
+ if ( !bProtected )
+ {
+ LibInfoItem* pLibInfoItem = 0;
+ BasicIDEData* pData = IDE_DLL()->GetExtraData();
+ if ( pData )
+ pLibInfoItem = pData->GetLibInfos().GetInfo( LibInfoKey( *doc, aLibName ) );
+
+ // modules
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) )
+ {
+ StarBASIC* pLib = doc->getBasicManager()->GetLib( aLibName );
+ if ( pLib )
+ ImplStartListening( pLib );
+
+ try
+ {
+ Sequence< ::rtl::OUString > aModNames( doc->getObjectNames( E_SCRIPTS, aLibName ) );
+ sal_Int32 nModCount = aModNames.getLength();
+ const ::rtl::OUString* pModNames = aModNames.getConstArray();
+
+ for ( sal_Int32 j = 0 ; j < nModCount ; j++ )
+ {
+ String aModName = pModNames[ j ];
+ ModulWindow* pWin = FindBasWin( *doc, aLibName, aModName, FALSE );
+ if ( !pWin )
+ pWin = CreateBasWin( *doc, aLibName, aModName );
+ if ( !pNextActiveWindow && pLibInfoItem && pLibInfoItem->GetCurrentName() == aModName &&
+ pLibInfoItem->GetCurrentType() == BASICIDE_TYPE_MODULE )
+ {
+ pNextActiveWindow = (IDEBaseWindow*)pWin;
+ }
+ }
+ }
+ catch ( container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ // dialogs
+ Reference< script::XLibraryContainer > xDlgLibContainer( doc->getLibraryContainer( E_DIALOGS ) );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) )
+ {
+ try
+ {
+ Sequence< ::rtl::OUString > aDlgNames = doc->getObjectNames( E_DIALOGS, aLibName );
+ sal_Int32 nDlgCount = aDlgNames.getLength();
+ const ::rtl::OUString* pDlgNames = aDlgNames.getConstArray();
+
+ for ( sal_Int32 j = 0 ; j < nDlgCount ; j++ )
+ {
+ String aDlgName = pDlgNames[ j ];
+ // this find only looks for non-suspended windows;
+ // suspended windows are handled in CreateDlgWin
+ DialogWindow* pWin = FindDlgWin( *doc, aLibName, aDlgName, FALSE );
+ if ( !pWin )
+ pWin = CreateDlgWin( *doc, aLibName, aDlgName );
+ if ( !pNextActiveWindow && pLibInfoItem && pLibInfoItem->GetCurrentName() == aDlgName &&
+ pLibInfoItem->GetCurrentType() == BASICIDE_TYPE_DIALOG )
+ {
+ pNextActiveWindow = (IDEBaseWindow*)pWin;
+ }
+ }
+ }
+ catch ( container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if ( bChangeCurWindow )
+ {
+ if ( !pNextActiveWindow )
+ pNextActiveWindow = FindApplicationWindow();
+ SetCurWindow( pNextActiveWindow, TRUE );
+ }
+}
+
+void BasicIDEShell::RemoveWindow( IDEBaseWindow* pWindow_, BOOL bDestroy, BOOL bAllowChangeCurWindow )
+{
+ DBG_ASSERT( pWindow_, "Kann keinen NULL-Pointer loeschen!" );
+ ULONG nKey = aIDEWindowTable.GetKey( pWindow_ );
+ pTabBar->RemovePage( (USHORT)nKey );
+ aIDEWindowTable.Remove( nKey );
+ if ( pWindow_ == pCurWin )
+ {
+ if ( bAllowChangeCurWindow )
+ SetCurWindow( FindApplicationWindow(), TRUE );
+ else
+ SetCurWindow( NULL, FALSE );
+ }
+ if ( bDestroy )
+ {
+ if ( !( pWindow_->GetStatus() & BASWIN_INRESCHEDULE ) )
+ {
+ delete pWindow_;
+ }
+ else
+ {
+ pWindow_->AddStatus( BASWIN_TOBEKILLED );
+ pWindow_->Hide();
+ // In normal mode stop basic in windows to be deleted
+ // In VBA stop basic only if the running script is trying to delete
+ // its parent module
+ bool bStop = true;
+ if ( pWindow_->GetDocument().isInVBAMode() )
+ {
+ SbModule* pMod = StarBASIC::GetActiveModule();
+ if ( !pMod || ( pMod && ( pMod->GetName() != pWindow_->GetName() ) ) )
+ bStop = false;
+ }
+ if ( bStop )
+ {
+ StarBASIC::Stop();
+ // Es kommt kein Notify...
+ pWindow_->BasicStopped();
+ }
+ aIDEWindowTable.Insert( nKey, pWindow_ ); // wieder einhaegen
+ }
+ }
+ else
+ {
+ pWindow_->Hide();
+ pWindow_->AddStatus( BASWIN_SUSPENDED );
+ pWindow_->Deactivating();
+ aIDEWindowTable.Insert( nKey, pWindow_ ); // wieder einhaegen
+ }
+
+}
+
+
+
+USHORT BasicIDEShell::InsertWindowInTable( IDEBaseWindow* pNewWin )
+{
+ // Eigentlich prueffen,
+ nCurKey++;
+ aIDEWindowTable.Insert( nCurKey, pNewWin );
+ return nCurKey;
+}
+
+
+
+void BasicIDEShell::InvalidateBasicIDESlots()
+{
+ // Nur die, die eine optische Auswirkung haben...
+
+ if ( IDE_DLL()->GetShell() )
+ {
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_UNDO );
+ pBindings->Invalidate( SID_REDO );
+ pBindings->Invalidate( SID_SAVEDOC );
+ pBindings->Invalidate( SID_SIGNATURE );
+ pBindings->Invalidate( SID_BASICIDE_CHOOSEMACRO );
+ pBindings->Invalidate( SID_BASICIDE_MODULEDLG );
+ pBindings->Invalidate( SID_BASICIDE_OBJCAT );
+ pBindings->Invalidate( SID_BASICSTOP );
+ pBindings->Invalidate( SID_BASICRUN );
+ pBindings->Invalidate( SID_BASICCOMPILE );
+ pBindings->Invalidate( SID_BASICLOAD );
+ pBindings->Invalidate( SID_BASICSAVEAS );
+ pBindings->Invalidate( SID_BASICIDE_MATCHGROUP );
+ pBindings->Invalidate( SID_BASICSTEPINTO );
+ pBindings->Invalidate( SID_BASICSTEPOVER );
+ pBindings->Invalidate( SID_BASICSTEPOUT );
+ pBindings->Invalidate( SID_BASICIDE_TOGGLEBRKPNT );
+ pBindings->Invalidate( SID_BASICIDE_MANAGEBRKPNTS );
+ pBindings->Invalidate( SID_BASICIDE_ADDWATCH );
+ pBindings->Invalidate( SID_BASICIDE_REMOVEWATCH );
+ pBindings->Invalidate( SID_CHOOSE_CONTROLS );
+ pBindings->Invalidate( SID_PRINTDOC );
+ pBindings->Invalidate( SID_PRINTDOCDIRECT );
+ pBindings->Invalidate( SID_SETUPPRINTER );
+ pBindings->Invalidate( SID_DIALOG_TESTMODE );
+
+ pBindings->Invalidate( SID_DOC_MODIFIED );
+ pBindings->Invalidate( SID_BASICIDE_STAT_TITLE );
+ pBindings->Invalidate( SID_BASICIDE_STAT_POS );
+ pBindings->Invalidate( SID_ATTR_INSERT );
+ pBindings->Invalidate( SID_ATTR_SIZE );
+ }
+ }
+}
+
+void BasicIDEShell::EnableScrollbars( BOOL bEnable )
+{
+ if ( bEnable )
+ {
+ aHScrollBar.Enable();
+ aVScrollBar.Enable();
+ }
+ else
+ {
+ aHScrollBar.Disable();
+ aVScrollBar.Disable();
+ }
+}
+
+void BasicIDEShell::SetCurLib( const ScriptDocument& rDocument, String aLibName, bool bUpdateWindows, bool bCheck )
+{
+ if ( !bCheck || ( rDocument != m_aCurDocument || aLibName != m_aCurLibName ) )
+ {
+ ContainerListenerImpl* pListener = static_cast< ContainerListenerImpl* >( m_xLibListener.get() );
+
+ if ( pListener )
+ pListener->removeContainerListener( m_aCurDocument, m_aCurLibName );
+
+ m_aCurDocument = rDocument;
+
+ pListener->addContainerListener( m_aCurDocument, aLibName );
+
+ m_aCurLibName = aLibName;
+
+ if ( bUpdateWindows )
+ UpdateWindows();
+
+ SetMDITitle();
+
+ SetCurLibForLocalization( rDocument, aLibName );
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_BASICIDE_LIBSELECTOR );
+ pBindings->Invalidate( SID_BASICIDE_CURRENT_LANG );
+ pBindings->Invalidate( SID_BASICIDE_MANAGE_LANG );
+ }
+ }
+}
+
+void BasicIDEShell::SetCurLibForLocalization( const ScriptDocument& rDocument, String aLibName )
+{
+ // Create LocalizationMgr
+ delete m_pCurLocalizationMgr;
+ Reference< resource::XStringResourceManager > xStringResourceManager;
+ try
+ {
+ if( aLibName.Len() )
+ {
+ Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, TRUE ) );
+ xStringResourceManager = LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+ }
+ }
+ catch ( container::NoSuchElementException& )
+ {}
+ m_pCurLocalizationMgr = new LocalizationMgr
+ ( this, rDocument, aLibName, xStringResourceManager );
+
+ m_pCurLocalizationMgr->handleTranslationbar();
+}
+
+void BasicIDEShell::ImplStartListening( StarBASIC* pBasic )
+{
+ StartListening( pBasic->GetBroadcaster(), TRUE /* Nur einmal anmelden */ );
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basidesh.src b/basctl/source/basicide/basidesh.src
new file mode 100644
index 000000000000..556211f690af
--- /dev/null
+++ b/basctl/source/basicide/basidesh.src
@@ -0,0 +1,747 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <baside2.hrc>
+#include <helpid.hrc>
+#ifndef _GLOBLMN_HRC
+#include <svx/globlmn.hrc>
+#endif
+#include "dlgresid.hrc"
+
+#define MASKCOLOR MaskColor = Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; };
+
+String RID_STR_IDENAME
+{
+ Text = "BasicIDE" ;
+};
+String RID_STR_FILTER_ALLFILES
+{
+ Text [ en-US ] = "<All>" ;
+};
+String RID_STR_NOMODULE
+{
+ Text [ en-US ] = "< No Module >" ;
+};
+String RID_STR_WRONGPASSWORD
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fehlerhaftes Paßwort. : Fehlerhaftes Pa˜wort. */
+ Text [ en-US ] = "Incorrect Password" ;
+};
+String RID_STR_OPEN
+{
+ Text [ en-US ] = "Load" ;
+};
+String RID_STR_SAVE
+{
+ Text [ en-US ] = "Save" ;
+};
+String RID_STR_SOURCETOBIG
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Der Quelltext ist zu groß und kann weder gespeichert noch compiliert werden.\nLöschen Sie einige Kommentare oder übertragen Sie einige Methoden in ein anderes Modul. : Der Quelltext ist zu gro˜ und kann weder gespeichert noch compiliert werden.\nL÷schen Sie einige Kommentare oder ³bertragen Sie einige Methoden in ein anderes Modul. */
+ Text [ en-US ] = "The source text is too large and can be neither compiled nor saved.\nDelete some of the comments or transfer some methods into another module." ;
+};
+String RID_STR_ERROROPENSTORAGE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler beim Öffnen der Datei : Fehler beim Íffnen der Datei */
+ Text [ en-US ] = "Error opening file" ;
+};
+String RID_STR_ERROROPENLIB
+{
+ Text [ en-US ] = "Error loading library" ;
+};
+String RID_STR_NOLIBINSTORAGE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Die Datei enthält keine BASIC-Bibliotheken : Die Datei enthõlt keine BASIC-Bibliotheken */
+ Text [ en-US ] = "The file does not contain any BASIC libraries" ;
+};
+String RID_STR_BADSBXNAME
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Bezeichner : Ung³ltiger Bezeichner */
+ Text [ en-US ] = "Invalid Name" ;
+};
+String RID_STR_LIBNAMETOLONG
+{
+ Text [ en-US ] = "A library name can have up to 30 characters.";
+};
+String RID_STR_ERRORCHOOSEMACRO
+{
+ Text [ en-US ] = "Macros from other documents are not accessible.";
+};
+String RID_STR_LIBISREADONLY
+{
+ Text [ en-US ] = "This library is read-only.";
+};
+String RID_STR_REPLACELIB
+{
+ Text [ en-US ] = "'XX' cannot be replaced.";
+};
+String RID_STR_IMPORTNOTPOSSIBLE
+{
+ Text [ en-US ] = "'XX' cannot be added.";
+};
+String RID_STR_NOIMPORT
+{
+ Text [ en-US ] = "'XX' was not added.";
+};
+String RID_STR_ENTERPASSWORD
+{
+ Text [ en-US ] = "Enter password for 'XX'";
+};
+String RID_STR_SBXNAMEALLREADYUSED
+{
+ Text [ en-US ] = "Name already exists" ;
+};
+String RID_STR_SIGNED
+{
+ Text [ en-US ] = "(Signed)" ;
+};
+String RID_STR_SBXNAMEALLREADYUSED2
+{
+ Text [ en-US ] = "Object with same name already exists" ;
+};
+String RID_STR_FILEEXISTS
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Die Datei 'XX' existiert schon : Die Datei ''XX'' existiert schon */
+ Text [ en-US ] = "The 'XX' file already exists" ;
+};
+String RID_STR_CANNOTRUNMACRO
+{
+ Text [ en-US ] = "For security reasons, you cannot run this macro.\n\nFor more information, check the security settings." ;
+};
+String RID_STR_COMPILEERROR
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Übersetzungs-Fehler: : šbersetzungs-Fehler: */
+ Text [ en-US ] = "Compile Error: " ;
+};
+String RID_STR_RUNTIMEERROR
+{
+ Text [ en-US ] = "Runtime Error: #" ;
+};
+String RID_STR_SEARCHNOTFOUND
+{
+ Text [ en-US ] = "Search key not found" ;
+};
+String RID_STR_SEARCHFROMSTART
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Es wurde bis zum letzten Modul gesucht. Möchten Sie die Suche beim ersten Modul fortsetzen? : Es wurde bis zum letzten Modul gesucht. M÷chten Sie die Suche beim ersten Modul fortsetzen? */
+ Text [ en-US ] = "Search to last module complete. Continue at first module?" ;
+};
+String RID_STR_SEARCHREPLACES
+{
+ Text [ en-US ] = "Search key replaced XX times" ;
+};
+String RID_STR_COULDNTREAD
+{
+ Text [ en-US ] = "The file could not be read" ;
+};
+String RID_STR_COULDNTWRITE
+{
+ Text [ en-US ] = "The file could not be saved" ;
+};
+String RID_STR_CANNOTCHANGENAMESTDLIB
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Der Name der Standard-Bibliothek kann nicht geändert werden : Der Name der Standard-Bibliothek kann nicht geõndert werden */
+ Text [ en-US ] = "The name of the default library cannot be changed." ;
+};
+String RID_STR_CANNOTCHANGENAMEREFLIB
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Der Name einer referenzierten Bibliothek kann nicht geändert werden : Der Name einer referenzierten Bibliothek kann nicht geõndert werden */
+ Text [ en-US ] = "The name of a referenced library cannot be changed." ;
+};
+String RID_STR_CANNOTUNLOADSTDLIB
+{
+ Text [ en-US ] = "The default library cannot be deactivated" ;
+};
+String RID_STR_GENERATESOURCE
+{
+ Text [ en-US ] = "Generating source" ;
+};
+String RID_STR_FILENAME
+{
+ Text [ en-US ] = "File name:" ;
+};
+String RID_STR_APPENDLIBS
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Bibliotheken hinzufügen : Bibliotheken hinzuf³gen */
+ Text [ en-US ] = "Import Libraries" ;
+};
+String RID_STR_QUERYDELMACRO
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Möchten Sie das Makro XX löschen ? : M÷chten Sie das Makro XX l÷schen ? */
+ Text [ en-US ] = "Do you want to delete the macro XX?" ;
+};
+String RID_STR_QUERYDELDIALOG
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Möchten Sie den Dialog XX löschen ? : M÷chten Sie den Dialog XX l÷schen ? */
+ Text [ en-US ] = "Do you want to delete the XX dialog?" ;
+};
+String RID_STR_QUERYDELLIB
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Möchten Sie die Bibliothek XX löschen ? : M÷chten Sie die Bibliothek XX l÷schen ? */
+ Text [ en-US ] = "Do you want to delete the XX library?" ;
+};
+String RID_STR_QUERYDELLIBREF
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Möchten Sie die Referenz auf die Bibliothek XX löschen ? : M÷chten Sie die Referenz auf die Bibliothek XX l÷schen ? */
+ Text [ en-US ] = "Do you want to delete the reference to the XX library?" ;
+};
+String RID_STR_QUERYDELMODULE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Möchten Sie das Modul XX löschen ? : M÷chten Sie das Modul XX l÷schen ? */
+ Text [ en-US ] = "Do you want to delete the XX module?" ;
+};
+String RID_STR_OBJNOTFOUND
+{
+ Text [ en-US ] = "Object or method not found" ;
+};
+String RID_STR_BASIC
+{
+ Text [ en-US ] = "BASIC" ;
+};
+String RID_STR_LINE
+{
+ // Abkuerzung fuer 'Zeile'
+ Text [ en-US ] = "Ln" ;
+};
+String RID_STR_COLUMN
+{
+ // Abkuerzung fuer 'Spalte'
+ Text [ en-US ] = "Col" ;
+};
+String RID_STR_DOC
+{
+ Text [ en-US ] = "Document" ;
+};
+String RID_BASICIDE_OBJECTBAR
+{
+ Text [ en-US ] = "Macro Bar" ;
+};
+String RID_STR_CANNOTCLOSE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Das Fenster kann nicht geschlossen werden,\nwährend das BASIC-Programm läuft. : Das Fenster kann nicht geschlossen werden,\nwõhrend das BASIC-Programm lõuft. */
+ Text [ en-US ] = "The window cannot be closed while BASIC is running." ;
+};
+String RID_STR_REPLACESTDLIB
+{
+ Text [ en-US ] = "The default library cannot be replaced." ;
+};
+String RID_STR_REFNOTPOSSIBLE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Referenz auf 'XX' nicht möglich. : Referenz auf ''XX'' nicht möglich. */
+ /* ### ACHTUNG: Neuer Text in Resource? Referenz auf 'XX' nicht möglich. : Referenz auf 'XX' nicht m÷glich. */
+ Text [ en-US ] = "Reference to 'XX' not possible." ;
+};
+String RID_STR_WATCHNAME
+{
+ Text [ en-US ] = "Watch" ;
+};
+String RID_STR_WATCHVARIABLE
+{
+ Text [ en-US ] = "Variable" ;
+};
+String RID_STR_WATCHVALUE
+{
+ Text [ en-US ] = "Value" ;
+};
+String RID_STR_WATCHTYPE
+{
+ Text [ en-US ] = "Type" ;
+};
+String RID_STR_STACKNAME
+{
+ Text [ en-US ] = "Call Stack" ;
+};
+String RID_STR_INITIDE
+{
+ Text [ en-US ] = "BASIC Initialization" ;
+};
+String RID_STR_STDMODULENAME
+{
+ Text [ en-US ] = "Module" ;
+};
+String RID_STR_STDDIALOGNAME
+{
+ Text [ en-US ] = "Dialog" ;
+};
+String RID_STR_STDLIBNAME
+{
+ Text [ en-US ] = "Library" ;
+};
+String RID_STR_NEWLIB
+{
+ Text [ en-US ] = "New Library" ;
+};
+String RID_STR_NEWMOD
+{
+ Text [ en-US ] = "New Module" ;
+};
+String RID_STR_NEWDLG
+{
+ Text [ en-US ] = "New Dialog" ;
+};
+String RID_STR_ALL
+{
+ Text [ en-US ] = "All" ;
+};
+String RID_STR_PAGE
+{
+ Text [ en-US ] = "Page" ;
+};
+String RID_STR_MACRONAMEREQ
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Es muß ein Name angegeben werden. : Es mu˜ ein Name angegeben werden. */
+ Text [ en-US ] = "A name must be entered." ;
+};
+String RID_STR_WILLSTOPPRG
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Sie müssen nach dieser Änderung Ihr Programm neu starten.\nForfahren? : Sie m³ssen nach dieser Žnderung Ihr Programm neu starten.\nForfahren? */
+ Text [ en-US ] = "You will have to restart the program after this edit.\nContinue?" ;
+};
+String RID_STR_SEARCHALLMODULES
+{
+ Text [ en-US ] = "Do you want to replace the text in all active modules?" ;
+};
+Edit RID_EDT_WATCHEDIT
+{
+ HelpId = HID_BASICIDE_WATCHWINDOW_EDIT ;
+ Border = TRUE ;
+ SvLook = TRUE ;
+ Size = MAP_APPFONT ( 80 , 12 ) ;
+};
+ImageButton RID_IMGBTN_REMOVEWATCH
+{
+ HelpId = HID_BASICIDE_REMOVEWATCH ;
+ SmallStyle = TRUE ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "baswatr.bmp" ; };
+ MASKCOLOR
+ };
+ QuickHelpText [ en-US ] = "Remove Watch" ;
+};
+Image RID_IMG_REMOVEWATCH_HC
+{
+ ImageBitmap = Bitmap { File = "baswatr_h.bmp" ; };
+ MASKCOLOR
+};
+ImageButton RID_IMGBTN_GOTOCALL
+{
+ HelpId = HID_BASICIDE_GOTOALL ;
+ SmallStyle = TRUE ;
+ ButtonImage = Image { ImageBitmap = Bitmap { File = "basgocl.bmp" ; }; } ;
+};
+String RID_STR_REMOVEWATCH
+{
+ Text [ en-US ] = "Watch:" ;
+};
+String RID_STR_STACK
+{
+ Text [ en-US ] = "Calls: " ;
+};
+String RID_STR_USERMACROS
+{
+ Text [ en-US ] = "My Macros" ;
+};
+String RID_STR_USERDIALOGS
+{
+ Text [ en-US ] = "My Dialogs" ;
+};
+String RID_STR_USERMACROSDIALOGS
+{
+ Text [ en-US ] = "My Macros & Dialogs" ;
+};
+String RID_STR_SHAREMACROS
+{
+ Text [ en-US ] = "%PRODUCTNAME Macros" ;
+};
+String RID_STR_SHAREDIALOGS
+{
+ Text [ en-US ] = "%PRODUCTNAME Dialogs" ;
+};
+String RID_STR_SHAREMACROSDIALOGS
+{
+ Text [ en-US ] = "%PRODUCTNAME Macros & Dialogs" ;
+};
+Menu RID_POPUP_BRKPROPS
+{
+ Text [ en-US ] = "Properties" ;
+ DefaultItemId = RID_BRKPROPS ;
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_ACTIV ;
+ HelpId = HID_BASICIDE_ACTIV ;
+ Text [ en-US ] = "Active" ;
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = RID_BRKPROPS ;
+ HelpId = HID_BASICIDE_BRKPROPS ;
+ Text [ en-US ] = "Properties..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einstellungen für den Haltepunkt : Einstellungen f³r den Haltepunkt */
+ };
+ };
+};
+Menu RID_POPUP_BRKDLG
+{
+ Text [ en-US ] = "Manage Breakpoints" ;
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_BRKDLG ;
+ HelpId = HID_BASICIDE_BRKDLG ;
+ Text [ en-US ] = "Manage Breakpoints..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Dialog für die Haltepunkte : Dialog f³r die Haltepunkte */
+ };
+ };
+};
+Menu RID_POPUP_TABBAR
+{
+ DefaultItemId = SID_BASICIDE_HIDECURPAGE ;
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_INSERT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */
+ Text [ en-US ] = "Insert" ;
+ Submenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_BASICIDE_NEWMODULE ;
+ HelpId = SID_BASICIDE_NEWMODULE ;
+ Text [ en-US ] = "BASIC Module" ;
+ };
+ MenuItem
+ {
+ Identifier = SID_BASICIDE_NEWDIALOG ;
+ HelpId = SID_BASICIDE_NEWDIALOG ;
+ Text [ en-US ] = "BASIC Dialog" ;
+ };
+ };
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Modul oder Dialog einfügen : Modul oder Dialog einf³gen */
+ };
+ MenuItem
+ {
+ Identifier = SID_BASICIDE_DELETECURRENT ;
+ HelpId = SID_BASICIDE_DELETECURRENT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Löschen : L÷schen */
+ Text [ en-US ] = "Delete" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Modul oder Dialog löschen : Modul oder Dialog l÷schen */
+ };
+ MenuItem
+ {
+ Identifier = SID_BASICIDE_RENAMECURRENT ;
+ HelpId = SID_BASICIDE_RENAMECURRENT ;
+ Text [ en-US ] = "Rename" ;
+ };
+ MenuItem
+ {
+ Identifier = SID_BASICIDE_HIDECURPAGE ;
+ HelpId = SID_BASICIDE_HIDECURPAGE ;
+ Text [ en-US ] = "Hide" ;
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = SID_BASICIDE_MODULEDLG ;
+ HelpId = SID_BASICIDE_MODULEDLG ;
+ Text [ en-US ] = "Modules..." ;
+ };
+ };
+};
+Menu RID_POPUP_DLGED
+{
+ DefaultItemId = SID_SHOW_PROPERTYBROWSER ;
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_SHOW_PROPERTYBROWSER ;
+ HelpId = SID_SHOW_PROPERTYBROWSER ;
+ Text [ en-US ] = "Properties...";
+ };
+ };
+};
+ImageList RID_IMGLST_LAYOUT
+{
+ Prefix = "im";
+ MASKCOLOR
+ IdList =
+ {
+ IMGID_BRKENABLED ;
+ IMGID_BRKDISABLED ;
+ IMGID_STEPMARKER ;
+ IMGID_ERRORMARKER ;
+ };
+};
+ImageList RID_IMGLST_LAYOUT_HC
+{
+ Prefix = "imh";
+ MASKCOLOR
+ IdList =
+ {
+ IMGID_BRKENABLED ;
+ IMGID_BRKDISABLED ;
+ IMGID_STEPMARKER ;
+ IMGID_ERRORMARKER ;
+ };
+};
+Image RID_IMG_LOCKED
+{
+ ImageBitmap = Bitmap { File = "locked.bmp" ; };
+ MASKCOLOR
+};
+Image RID_IMG_LOCKED_HC
+{
+ ImageBitmap = Bitmap { File = "locked_h.bmp" ; };
+ MASKCOLOR
+};
+Image RID_IMG_INSTALLATION
+{
+ ImageBitmap = Bitmap { File = "harddisk_16.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_INSTALLATION_HC
+{
+ ImageBitmap = Bitmap { File = "harddisk_16_h.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DOCUMENT
+{
+ ImageBitmap = Bitmap { File = "im30826.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DOCUMENT_HC
+{
+ ImageBitmap = Bitmap { File = "imh30826.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MODLIB
+{
+ ImageBitmap = Bitmap { File = "im30820.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MODLIB_HC
+{
+ ImageBitmap = Bitmap { File = "imh30820.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MODLIBNOTLOADED
+{
+ ImageBitmap = Bitmap { File = "im30827.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MODLIBNOTLOADED_HC
+{
+ ImageBitmap = Bitmap { File = "imh30827.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MODULE
+{
+ ImageBitmap = Bitmap { File = "im30821.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MODULE_HC
+{
+ ImageBitmap = Bitmap { File = "imh30821.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MACRO
+{
+ ImageBitmap = Bitmap { File = "im30822.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_MACRO_HC
+{
+ ImageBitmap = Bitmap { File = "imh30822.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DLGLIB
+{
+ ImageBitmap = Bitmap { File = "dialogfolder_16.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DLGLIB_HC
+{
+ ImageBitmap = Bitmap { File = "dialogfolder_16_h.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DLGLIBNOTLOADED
+{
+ ImageBitmap = Bitmap { File = "dialogfoldernot_16.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DLGLIBNOTLOADED_HC
+{
+ ImageBitmap = Bitmap { File = "dialogfoldernot_16_h.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DIALOG
+{
+ ImageBitmap = Bitmap { File = "im30823.png"; };
+ MASKCOLOR
+};
+Image RID_IMG_DIALOG_HC
+{
+ ImageBitmap = Bitmap { File = "imh30823.png"; };
+ MASKCOLOR
+};
+String RID_STR_QUERYREPLACEMACRO
+{
+ Text [ en-US ] = "Do you want to overwrite the XX macro?" ;
+};
+String RID_STR_TRANSLATION_NOTLOCALIZED
+{
+ Text [ en-US ] = "<Not localized>" ;
+};
+String RID_STR_TRANSLATION_DEFAULT
+{
+ Text [ en-US ] = "[Default Language]" ;
+};
+String RID_STR_DOCUMENT_OBJECTS
+{
+ Text [ en-US ] = "Document Objects" ;
+};
+String RID_STR_USERFORMS
+{
+ Text [ en-US ] = "Forms" ;
+};
+String RID_STR_NORMAL_MODULES
+{
+ Text [ en-US ] = "Modules" ;
+};
+String RID_STR_CLASS_MODULES
+{
+ Text [ en-US ] = "Class Modules" ;
+};
+
+
+String RID_STR_DLGIMP_CLASH_RENAME
+{
+ Text [ en-US ] = "Rename" ;
+};
+
+String RID_STR_DLGIMP_CLASH_REPLACE
+{
+ Text [ en-US ] = "Replace" ;
+};
+
+String RID_STR_DLGIMP_CLASH_TITLE
+{
+ Text [ en-US ] = "Dialog Import - Name already used" ;
+};
+
+String RID_STR_DLGIMP_CLASH_TEXT
+{
+ Text [ en-US ] = "The library already contains a dialog with the name:\n\n$(ARG1)\n\nRename dialog to keep current dialog or replace existing dialog.\n " ;
+};
+
+String RID_STR_DLGIMP_MISMATCH_ADD
+{
+ Text [ en-US ] = "Add" ;
+};
+
+String RID_STR_DLGIMP_MISMATCH_OMIT
+{
+ Text [ en-US ] = "Omit" ;
+};
+
+String RID_STR_DLGIMP_MISMATCH_TITLE
+{
+ Text [ en-US ] = "Dialog Import - Language Mismatch" ;
+};
+
+String RID_STR_DLGIMP_MISMATCH_TEXT
+{
+ Text [ en-US ] = "The dialog to be imported supports other languages than the target library.\n\nAdd these languages to the library to keep additional language resources provided by the dialog or omit them to stay with the current library languages.\n\nNote: For languages not supported by the dialog the resources of the dialog's default language will be used.\n " ;
+};
+
+
+#define MN_EDIT 20
+#define MN_VIEW 21
+#define MN_EXTRA 22
+#define MN_WIN 30
+#define MN_HELP 31
+#define MN_TEMPLATES 11
+
+#define MN_PLEDIT 20
+#define MN_PLVIEW 21
+#define MN_PLEXTRA 22
+#define MN_PLWIN 30
+#define MN_PLHELP 31
+#define MN_PLTEMPLATES 11
+
+
+/*
+
+The application menu bar resource has become obsolete. You can now find the menu bar definition at:
+<project>/basicide/menubar/menubar.xml.
+
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basctl/source/basicide/basobj2.cxx b/basctl/source/basicide/basobj2.cxx
new file mode 100644
index 000000000000..a5b441cdb1ab
--- /dev/null
+++ b/basctl/source/basicide/basobj2.cxx
@@ -0,0 +1,416 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <ide_pch.hxx>
+
+#include <vector>
+#include <algorithm>
+#include <basic/sbx.hxx>
+#include <unotools/moduleoptions.hxx>
+#include <com/sun/star/document/XEmbeddedScripts.hpp>
+#include <com/sun/star/document/XScriptInvocationContext.hpp>
+#include <basobj.hxx>
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <iderid.hxx>
+#include <macrodlg.hxx>
+#include <moduldlg.hxx>
+#include <basidesh.hxx>
+#include <basidesh.hrc>
+#include <baside2.hxx>
+#include <basicmod.hxx>
+#include <basdoc.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::container;
+
+
+//----------------------------------------------------------------------------
+
+extern "C" {
+ SAL_DLLPUBLIC_EXPORT rtl_uString* basicide_choose_macro( void* pOnlyInDocument_AsXModel, BOOL bChooseOnly, rtl_uString* pMacroDesc )
+ {
+ ::rtl::OUString aMacroDesc( pMacroDesc );
+ Reference< frame::XModel > aDocument( static_cast< frame::XModel* >( pOnlyInDocument_AsXModel ) );
+ ::rtl::OUString aScriptURL = BasicIDE::ChooseMacro( aDocument, bChooseOnly, aMacroDesc );
+ rtl_uString* pScriptURL = aScriptURL.pData;
+ rtl_uString_acquire( pScriptURL );
+
+ return pScriptURL;
+ }
+ SAL_DLLPUBLIC_EXPORT void basicide_macro_organizer( INT16 nTabId )
+ {
+ OSL_TRACE("in basicide_macro_organizer");
+ BasicIDE::Organize( nTabId );
+ }
+}
+
+namespace BasicIDE
+{
+//----------------------------------------------------------------------------
+
+void Organize( INT16 tabId )
+{
+ BasicIDEDLL::Init();
+
+ BasicEntryDescriptor aDesc;
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ {
+ IDEBaseWindow* pCurWin = pIDEShell->GetCurWindow();
+ if ( pCurWin )
+ aDesc = pCurWin->CreateEntryDescriptor();
+ }
+
+ Window* pParent = Application::GetDefDialogParent();
+ OrganizeDialog* pDlg = new OrganizeDialog( pParent, tabId, aDesc );
+ pDlg->Execute();
+ delete pDlg;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL IsValidSbxName( const String& rName )
+{
+ for ( USHORT nChar = 0; nChar < rName.Len(); nChar++ )
+ {
+ BOOL bValid = ( ( rName.GetChar(nChar) >= 'A' && rName.GetChar(nChar) <= 'Z' ) ||
+ ( rName.GetChar(nChar) >= 'a' && rName.GetChar(nChar) <= 'z' ) ||
+ ( rName.GetChar(nChar) >= '0' && rName.GetChar(nChar) <= '9' && nChar ) ||
+ ( rName.GetChar(nChar) == '_' ) );
+ if ( !bValid )
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static BOOL StringCompareLessThan( const String& rStr1, const String& rStr2 )
+{
+ return (rStr1.CompareIgnoreCaseToAscii( rStr2 ) == COMPARE_LESS);
+}
+
+//----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > GetMergedLibraryNames( const Reference< script::XLibraryContainer >& xModLibContainer, const Reference< script::XLibraryContainer >& xDlgLibContainer )
+{
+ // create a sorted list of module library names
+ ::std::vector<String> aModLibList;
+ if ( xModLibContainer.is() )
+ {
+ Sequence< ::rtl::OUString > aModLibNames = xModLibContainer->getElementNames();
+ sal_Int32 nModLibCount = aModLibNames.getLength();
+ const ::rtl::OUString* pModLibNames = aModLibNames.getConstArray();
+ for ( sal_Int32 i = 0 ; i < nModLibCount ; i++ )
+ aModLibList.push_back( pModLibNames[ i ] );
+ ::std::sort( aModLibList.begin() , aModLibList.end() , StringCompareLessThan );
+ }
+
+ // create a sorted list of dialog library names
+ ::std::vector<String> aDlgLibList;
+ if ( xDlgLibContainer.is() )
+ {
+ Sequence< ::rtl::OUString > aDlgLibNames = xDlgLibContainer->getElementNames();
+ sal_Int32 nDlgLibCount = aDlgLibNames.getLength();
+ const ::rtl::OUString* pDlgLibNames = aDlgLibNames.getConstArray();
+ for ( sal_Int32 i = 0 ; i < nDlgLibCount ; i++ )
+ aDlgLibList.push_back( pDlgLibNames[ i ] );
+ ::std::sort( aDlgLibList.begin() , aDlgLibList.end() , StringCompareLessThan );
+ }
+
+ // merge both lists
+ ::std::vector<String> aLibList( aModLibList.size() + aDlgLibList.size() );
+ ::std::merge( aModLibList.begin(), aModLibList.end(), aDlgLibList.begin(), aDlgLibList.end(), aLibList.begin(), StringCompareLessThan );
+ ::std::vector<String>::iterator aIterEnd = ::std::unique( aLibList.begin(), aLibList.end() ); // move unique elements to the front
+ aLibList.erase( aIterEnd, aLibList.end() ); // remove duplicates
+
+ // copy to sequence
+ sal_Int32 nLibCount = aLibList.size();
+ Sequence< ::rtl::OUString > aSeqLibNames( nLibCount );
+ for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+ aSeqLibNames.getArray()[ i ] = aLibList[ i ];
+
+ return aSeqLibNames;
+}
+
+//----------------------------------------------------------------------------
+
+bool RenameModule( Window* pErrorParent, const ScriptDocument& rDocument, const String& rLibName, const String& rOldName, const String& rNewName )
+{
+ if ( !rDocument.hasModule( rLibName, rOldName ) )
+ {
+ OSL_ENSURE( false, "BasicIDE::RenameModule: old module name is invalid!" );
+ return false;
+ }
+
+ if ( rDocument.hasModule( rLibName, rNewName ) )
+ {
+ ErrorBox aError( pErrorParent, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_SBXNAMEALLREADYUSED2 ) ) );
+ aError.Execute();
+ return false;
+ }
+
+ // #i74440
+ if ( rNewName.Len() == 0 )
+ {
+ ErrorBox aError( pErrorParent, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) );
+ aError.Execute();
+ return false;
+ }
+
+ if ( !rDocument.renameModule( rLibName, rOldName, rNewName ) )
+ return false;
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ {
+ IDEBaseWindow* pWin = pIDEShell->FindWindow( rDocument, rLibName, rNewName, BASICIDE_TYPE_MODULE, TRUE );
+ if ( pWin )
+ {
+ // set new name in window
+ pWin->SetName( rNewName );
+
+ // set new module in module window
+ ModulWindow* pModWin = (ModulWindow*)pWin;
+ pModWin->SetSbModule( (SbModule*)pModWin->GetBasic()->FindModule( rNewName ) );
+
+ // update tabwriter
+ USHORT nId = (USHORT)(pIDEShell->GetIDEWindowTable()).GetKey( pWin );
+ DBG_ASSERT( nId, "No entry in Tabbar!" );
+ if ( nId )
+ {
+ BasicIDETabBar* pTabBar = (BasicIDETabBar*)pIDEShell->GetTabBar();
+ pTabBar->SetPageText( nId, rNewName );
+ pTabBar->Sort();
+ pTabBar->MakeVisible( pTabBar->GetCurPageId() );
+ }
+ }
+ }
+ return true;
+}
+
+//----------------------------------------------------------------------------
+
+::rtl::OUString ChooseMacro( const uno::Reference< frame::XModel >& rxLimitToDocument, BOOL bChooseOnly, const ::rtl::OUString& rMacroDesc )
+{
+ (void)rMacroDesc;
+
+ BasicIDEDLL::Init();
+
+ IDE_DLL()->GetExtraData()->ChoosingMacro() = TRUE;
+ SFX_APP()->EnterBasicCall();
+
+ String aScriptURL;
+ BOOL bError = FALSE;
+ SbMethod* pMethod = NULL;
+
+ MacroChooser* pChooser = new MacroChooser( NULL, TRUE );
+ if ( bChooseOnly || !SvtModuleOptions().IsBasicIDE() )
+ pChooser->SetMode( MACROCHOOSER_CHOOSEONLY );
+
+ if ( !bChooseOnly && rxLimitToDocument.is() )
+ // Hack!
+ pChooser->SetMode( MACROCHOOSER_RECORDING );
+
+ short nRetValue = pChooser->Execute();
+
+ IDE_DLL()->GetExtraData()->ChoosingMacro() = FALSE;
+
+ switch ( nRetValue )
+ {
+ case MACRO_OK_RUN:
+ {
+ pMethod = pChooser->GetMacro();
+ if ( !pMethod && pChooser->GetMode() == MACROCHOOSER_RECORDING )
+ pMethod = pChooser->CreateMacro();
+
+ if ( pMethod )
+ {
+ SbModule* pModule = pMethod->GetModule();
+ DBG_ASSERT(pModule, "BasicIDE::ChooseMacro: No Module found!");
+ if ( pModule )
+ {
+ StarBASIC* pBasic = (StarBASIC*)pModule->GetParent();
+ DBG_ASSERT(pBasic, "BasicIDE::ChooseMacro: No Basic found!");
+ if ( pBasic )
+ {
+ BasicManager* pBasMgr = BasicIDE::FindBasicManager( pBasic );
+ DBG_ASSERT(pBasMgr, "BasicIDE::ChooseMacro: No BasicManager found!");
+ if ( pBasMgr )
+ {
+ // name
+ String aName;
+ aName += pBasic->GetName();
+ aName += '.';
+ aName += pModule->GetName();
+ aName += '.';
+ aName += pMethod->GetName();
+
+ // language
+ String aLanguage = String::CreateFromAscii("Basic");
+
+ // location
+ String aLocation;
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+ if ( aDocument.isDocument() )
+ {
+ // document basic
+ aLocation = String::CreateFromAscii("document");
+
+ if ( rxLimitToDocument.is() )
+ {
+ uno::Reference< frame::XModel > xLimitToDocument( rxLimitToDocument );
+
+ uno::Reference< document::XEmbeddedScripts > xScripts( rxLimitToDocument, UNO_QUERY );
+ if ( !xScripts.is() )
+ { // the document itself does not support embedding scripts
+ uno::Reference< document::XScriptInvocationContext > xContext( rxLimitToDocument, UNO_QUERY );
+ if ( xContext.is() )
+ xScripts = xContext->getScriptContainer();
+ if ( xScripts.is() )
+ { // but it is able to refer to a document which actually does support this
+ xLimitToDocument.set( xScripts, UNO_QUERY );
+ if ( !xLimitToDocument.is() )
+ {
+ OSL_ENSURE( false, "BasicIDE::ChooseMacro: a script container which is no document!?" );
+ xLimitToDocument = rxLimitToDocument;
+ }
+ }
+ }
+
+ if ( xLimitToDocument != aDocument.getDocument() )
+ {
+ // error
+ bError = TRUE;
+ ErrorBox( NULL, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_ERRORCHOOSEMACRO ) ) ).Execute();
+ }
+ }
+ }
+ else
+ {
+ // application basic
+ aLocation = String::CreateFromAscii("application");
+ }
+
+ // script URL
+ if ( !bError )
+ {
+ aScriptURL = String::CreateFromAscii("vnd.sun.star.script:");
+ aScriptURL += aName;
+ aScriptURL += String::CreateFromAscii("?language=");
+ aScriptURL += aLanguage;
+ aScriptURL += String::CreateFromAscii("&location=");
+ aScriptURL += aLocation;
+ }
+ }
+ }
+ }
+ }
+
+ if ( pMethod && !rxLimitToDocument.is() )
+ {
+ pMethod->AddRef(); // festhalten, bis Event abgearbeitet.
+ Application::PostUserEvent( LINK( IDE_DLL()->GetExtraData(), BasicIDEData, ExecuteMacroEvent ), pMethod );
+ }
+ }
+ break;
+ }
+
+ delete pChooser;
+
+ SFX_APP()->LeaveBasicCall();
+
+ return ::rtl::OUString( aScriptURL );
+}
+
+//----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > GetMethodNames( const ScriptDocument& rDocument, const String& rLibName, const String& rModName )
+ throw(NoSuchElementException )
+{
+ Sequence< ::rtl::OUString > aSeqMethods;
+
+ // get module
+ ::rtl::OUString aOUSource;
+ if ( rDocument.getModule( rLibName, rModName, aOUSource ) )
+ {
+ SbModuleRef xModule = new SbModule( rModName );
+ xModule->SetSource32( aOUSource );
+ USHORT nCount = xModule->GetMethods()->Count();
+ USHORT nRealCount = nCount;
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ SbMethod* pMethod = (SbMethod*)xModule->GetMethods()->Get( i );
+ if( pMethod->IsHidden() )
+ --nRealCount;
+ }
+ aSeqMethods.realloc( nRealCount );
+
+ USHORT iTarget = 0;
+ for ( USHORT i = 0 ; i < nCount; ++i )
+ {
+ SbMethod* pMethod = (SbMethod*)xModule->GetMethods()->Get( i );
+ if( pMethod->IsHidden() )
+ continue;
+ DBG_ASSERT( pMethod, "Method not found! (NULL)" );
+ aSeqMethods.getArray()[ iTarget++ ] = pMethod->GetName();
+ }
+ }
+
+ return aSeqMethods;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL HasMethod( const ScriptDocument& rDocument, const String& rLibName, const String& rModName, const String& rMethName )
+{
+ BOOL bHasMethod = FALSE;
+
+ ::rtl::OUString aOUSource;
+ if ( rDocument.hasModule( rLibName, rModName ) && rDocument.getModule( rLibName, rModName, aOUSource ) )
+ {
+ SbModuleRef xModule = new SbModule( rModName );
+ xModule->SetSource32( aOUSource );
+ SbxArray* pMethods = xModule->GetMethods();
+ if ( pMethods )
+ {
+ SbMethod* pMethod = (SbMethod*)pMethods->Find( rMethName, SbxCLASS_METHOD );
+ if ( pMethod && !pMethod->IsHidden() )
+ bHasMethod = TRUE;
+ }
+ }
+
+ return bHasMethod;
+}
+} //namespace BasicIDE
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/basobj3.cxx b/basctl/source/basicide/basobj3.cxx
new file mode 100644
index 000000000000..35c4eafbebf1
--- /dev/null
+++ b/basctl/source/basicide/basobj3.cxx
@@ -0,0 +1,529 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <ide_pch.hxx>
+
+#include <vector>
+#include <algorithm>
+#include <basic/sbx.hxx>
+#include <unotools/moduleoptions.hxx>
+
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <basobj.hxx>
+#include <basidesh.hxx>
+#include <objdlg.hxx>
+#include <bastypes.hxx>
+#include <basdoc.hxx>
+#include <basidesh.hrc>
+
+#include <baside2.hxx>
+#include <baside3.hxx>
+#include <basicmod.hxx>
+#include <localizationmgr.hxx>
+#include "dlged.hxx"
+#include <dlgeddef.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <xmlscript/xmldlg_imexp.hxx>
+#include <rtl/uri.hxx>
+#include <osl/process.h>
+#include <osl/file.hxx>
+
+using namespace comphelper;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::container;
+
+
+//----------------------------------------------------------------------------
+
+extern "C" {
+ SAL_DLLPUBLIC_EXPORT long basicide_handle_basic_error( void* pPtr )
+ {
+ return BasicIDE::HandleBasicError( (StarBASIC*)pPtr );
+ }
+}
+
+namespace BasicIDE
+{
+//----------------------------------------------------------------------------
+
+SbMethod* CreateMacro( SbModule* pModule, const String& rMacroName )
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_STOREALLMODULESOURCES );
+ }
+
+ if ( pModule->GetMethods()->Find( rMacroName, SbxCLASS_METHOD ) )
+ return 0;
+
+ String aMacroName( rMacroName );
+ if ( aMacroName.Len() == 0 )
+ {
+ if ( !pModule->GetMethods()->Count() )
+ aMacroName = String( RTL_CONSTASCII_USTRINGPARAM( "Main" ) );
+ else
+ {
+ BOOL bValid = FALSE;
+ String aStdMacroText( RTL_CONSTASCII_USTRINGPARAM( "Macro" ) );
+ //String aStdMacroText( IDEResId( RID_STR_STDMACRONAME ) );
+ USHORT nMacro = 1;
+ while ( !bValid )
+ {
+ aMacroName = aStdMacroText;
+ aMacroName += String::CreateFromInt32( nMacro );
+ // Pruefen, ob vorhanden...
+ bValid = pModule->GetMethods()->Find( aMacroName, SbxCLASS_METHOD ) ? FALSE : TRUE;
+ nMacro++;
+ }
+ }
+ }
+
+ ::rtl::OUString aOUSource( pModule->GetSource32() );
+
+ // Nicht zu viele Leerzeilen erzeugen...
+ sal_Int32 nSourceLen = aOUSource.getLength();
+ if ( nSourceLen > 2 )
+ {
+ const sal_Unicode* pStr = aOUSource.getStr();
+ if ( pStr[ nSourceLen - 1 ] != LINE_SEP )
+ aOUSource += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "\n\n" ) );
+ else if ( pStr[ nSourceLen - 2 ] != LINE_SEP )
+ aOUSource += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "\n" ) );
+ else if ( pStr[ nSourceLen - 3 ] == LINE_SEP )
+ aOUSource = aOUSource.copy( 0, nSourceLen-1 );
+ }
+
+ ::rtl::OUString aSubStr;
+ aSubStr = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Sub " ) );
+ aSubStr += aMacroName;
+ aSubStr += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "\n\nEnd Sub" ) );
+
+ aOUSource += aSubStr;
+
+ // update module in library
+ ScriptDocument aDocument( ScriptDocument::NoDocument );
+ SbxObject* pParent = pModule->GetParent();
+ StarBASIC* pBasic = PTR_CAST(StarBASIC,pParent);
+ DBG_ASSERT(pBasic, "BasicIDE::CreateMacro: No Basic found!");
+ if ( pBasic )
+ {
+ BasicManager* pBasMgr = BasicIDE::FindBasicManager( pBasic );
+ DBG_ASSERT(pBasMgr, "BasicIDE::CreateMacro: No BasicManager found!");
+ if ( pBasMgr )
+ {
+ aDocument = ScriptDocument::getDocumentForBasicManager( pBasMgr );
+ OSL_ENSURE( aDocument.isValid(), "BasicIDE::CreateMacro: no document for the given BasicManager!" );
+ if ( aDocument.isValid() )
+ {
+ String aLibName = pBasic->GetName();
+ String aModName = pModule->GetName();
+ OSL_VERIFY( aDocument.updateModule( aLibName, aModName, aOUSource ) );
+ }
+ }
+ }
+
+ SbMethod* pMethod = (SbMethod*)pModule->GetMethods()->Find( aMacroName, SbxCLASS_METHOD );
+
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_UPDATEALLMODULESOURCES );
+ }
+
+ if ( aDocument.isAlive() )
+ BasicIDE::MarkDocumentModified( aDocument );
+
+ return pMethod;
+}
+
+//----------------------------------------------------------------------------
+
+bool RenameDialog( Window* pErrorParent, const ScriptDocument& rDocument, const String& rLibName, const String& rOldName, const String& rNewName )
+ throw(ElementExistException, NoSuchElementException)
+{
+ if ( !rDocument.hasDialog( rLibName, rOldName ) )
+ {
+ OSL_ENSURE( false, "BasicIDE::RenameDialog: old module name is invalid!" );
+ return false;
+ }
+
+ if ( rDocument.hasDialog( rLibName, rNewName ) )
+ {
+ ErrorBox aError( pErrorParent, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_SBXNAMEALLREADYUSED2 ) ) );
+ aError.Execute();
+ return false;
+ }
+
+ // #i74440
+ if ( rNewName.Len() == 0 )
+ {
+ ErrorBox aError( pErrorParent, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) );
+ aError.Execute();
+ return false;
+ }
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ IDEBaseWindow* pWin = pIDEShell ? pIDEShell->FindWindow( rDocument, rLibName, rOldName, BASICIDE_TYPE_DIALOG, FALSE ) : NULL;
+ Reference< XNameContainer > xExistingDialog;
+ if ( pWin )
+ xExistingDialog = ((DialogWindow*)pWin)->GetEditor()->GetDialog();
+
+ if ( xExistingDialog.is() )
+ LocalizationMgr::renameStringResourceIDs( rDocument, rLibName, rNewName, xExistingDialog );
+
+ if ( !rDocument.renameDialog( rLibName, rOldName, rNewName, xExistingDialog ) )
+ return false;
+
+ if ( pWin )
+ {
+ // set new name in window
+ pWin->SetName( rNewName );
+
+ // update property browser
+ ((DialogWindow*)pWin)->UpdateBrowser();
+
+ // update tabwriter
+ USHORT nId = (USHORT)(pIDEShell->GetIDEWindowTable()).GetKey( pWin );
+ DBG_ASSERT( nId, "No entry in Tabbar!" );
+ if ( nId )
+ {
+ BasicIDETabBar* pTabBar = (BasicIDETabBar*)pIDEShell->GetTabBar();
+ pTabBar->SetPageText( nId, rNewName );
+ pTabBar->Sort();
+ pTabBar->MakeVisible( pTabBar->GetCurPageId() );
+ }
+ }
+ return true;
+}
+
+//----------------------------------------------------------------------------
+
+bool RemoveDialog( const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName )
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ {
+ DialogWindow* pDlgWin = pIDEShell->FindDlgWin( rDocument, rLibName, rDlgName, FALSE );
+ if( pDlgWin )
+ {
+ Reference< container::XNameContainer > xDialogModel = pDlgWin->GetDialog();
+ LocalizationMgr::removeResourceForDialog( rDocument, rLibName, rDlgName, xDialogModel );
+ }
+ }
+
+ return rDocument.removeDialog( rLibName, rDlgName );
+}
+
+//----------------------------------------------------------------------------
+
+StarBASIC* FindBasic( const SbxVariable* pVar )
+{
+ const SbxVariable* pSbx = pVar;
+ while ( pSbx && !pSbx->ISA( StarBASIC ) )
+ pSbx = pSbx->GetParent();
+
+ DBG_ASSERT( !pSbx || pSbx->ISA( StarBASIC ), "Find Basic: Kein Basic!" );
+ return (StarBASIC*)pSbx;
+}
+
+//----------------------------------------------------------------------------
+
+BasicManager* FindBasicManager( StarBASIC* pLib )
+{
+ ScriptDocuments aDocuments( ScriptDocument::getAllScriptDocuments( ScriptDocument::AllWithApplication ) );
+ for ( ScriptDocuments::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ BasicManager* pBasicMgr = doc->getBasicManager();
+ OSL_ENSURE( pBasicMgr, "BasicIDE::FindBasicManager: no basic manager for the document!" );
+ if ( !pBasicMgr )
+ continue;
+
+ Sequence< ::rtl::OUString > aLibNames( doc->getLibraryNames() );
+ sal_Int32 nLibCount = aLibNames.getLength();
+ const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
+
+ for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+ {
+ StarBASIC* pL = pBasicMgr->GetLib( pLibNames[ i ] );
+ if ( pL == pLib )
+ return pBasicMgr;
+ }
+ }
+ return NULL;
+}
+
+//----------------------------------------------------------------------------
+
+void MarkDocumentModified( const ScriptDocument& rDocument )
+{
+ // Muss ja nicht aus einem Document kommen...
+ if ( rDocument.isApplication() )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ pIDEShell->SetAppBasicModified();
+ }
+ else
+ {
+ rDocument.setDocumentModified();
+ }
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_SIGNATURE );
+ pBindings->Invalidate( SID_SAVEDOC );
+ pBindings->Update( SID_SAVEDOC );
+ }
+
+ // Objectcatalog updaten...
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ ObjectCatalog* pObjCatalog = pIDEShell ? pIDEShell->GetObjectCatalog() : 0;
+ if ( pObjCatalog )
+ pObjCatalog->UpdateEntries();
+}
+
+//----------------------------------------------------------------------------
+
+void RunMethod( SbMethod* pMethod )
+{
+ SbxValues aRes;
+ aRes.eType = SbxVOID;
+ pMethod->Get( aRes );
+}
+
+//----------------------------------------------------------------------------
+
+void StopBasic()
+{
+ StarBASIC::Stop();
+ BasicIDEShell* pShell = IDE_DLL()->GetShell();
+ if ( pShell )
+ {
+ IDEWindowTable& rWindows = pShell->GetIDEWindowTable();
+ IDEBaseWindow* pWin = rWindows.First();
+ while ( pWin )
+ {
+ // BasicStopped von Hand rufen, da das Stop-Notify ggf. sonst nicht
+ // durchkommen kann.
+ pWin->BasicStopped();
+ pWin = rWindows.Next();
+ }
+ }
+ BasicIDE::BasicStopped();
+}
+
+//----------------------------------------------------------------------------
+
+void BasicStopped( BOOL* pbAppWindowDisabled,
+ BOOL* pbDispatcherLocked, USHORT* pnWaitCount,
+ SfxUInt16Item** ppSWActionCount, SfxUInt16Item** ppSWLockViewCount )
+{
+ // Nach einem Error oder dem expliziten abbrechen des Basics muessen
+ // ggf. einige Locks entfernt werden...
+
+ if ( pbAppWindowDisabled )
+ *pbAppWindowDisabled = FALSE;
+ if ( pbDispatcherLocked )
+ *pbDispatcherLocked = FALSE;
+ if ( pnWaitCount )
+ *pnWaitCount = 0;
+ if ( ppSWActionCount )
+ *ppSWActionCount = 0;
+ if ( ppSWLockViewCount )
+ *ppSWLockViewCount = 0;
+
+ // AppWait ?
+ USHORT nWait = 0;
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if( pIDEShell )
+ {
+ while ( pIDEShell->GetViewFrame()->GetWindow().IsWait() )
+ {
+ pIDEShell->GetViewFrame()->GetWindow().LeaveWait();
+ nWait++;
+ }
+ if ( pnWaitCount )
+ *pnWaitCount = nWait;
+ }
+
+ /*
+ // Interactive = FALSE ?
+ if ( SFX_APP()->IsDispatcherLocked() )
+ {
+ SFX_APP()->LockDispatcher( FALSE );
+ if ( pbDispatcherLocked )
+ *pbDispatcherLocked = TRUE;
+ } */
+
+ Window* pDefParent = Application::GetDefDialogParent();
+ if ( pDefParent && !pDefParent->IsEnabled() )
+ {
+ pDefParent->Enable( TRUE );
+ if ( pbAppWindowDisabled )
+ *pbAppWindowDisabled = TRUE;
+ }
+
+}
+
+//----------------------------------------------------------------------------
+
+void InvalidateDebuggerSlots()
+{
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_BASICSTOP );
+ pBindings->Update( SID_BASICSTOP );
+ pBindings->Invalidate( SID_BASICRUN );
+ pBindings->Update( SID_BASICRUN );
+ pBindings->Invalidate( SID_BASICCOMPILE );
+ pBindings->Update( SID_BASICCOMPILE );
+ pBindings->Invalidate( SID_BASICSTEPOVER );
+ pBindings->Update( SID_BASICSTEPOVER );
+ pBindings->Invalidate( SID_BASICSTEPINTO );
+ pBindings->Update( SID_BASICSTEPINTO );
+ pBindings->Invalidate( SID_BASICSTEPOUT );
+ pBindings->Update( SID_BASICSTEPOUT );
+ pBindings->Invalidate( SID_BASICIDE_TOGGLEBRKPNT );
+ pBindings->Update( SID_BASICIDE_TOGGLEBRKPNT );
+ pBindings->Invalidate( SID_BASICIDE_STAT_POS );
+ pBindings->Update( SID_BASICIDE_STAT_POS );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+long HandleBasicError( StarBASIC* pBasic )
+{
+ BasicIDEDLL::Init();
+ BasicIDE::BasicStopped();
+
+ // no error output during macro choosing
+ if ( IDE_DLL()->GetExtraData()->ChoosingMacro() )
+ return 1;
+ if ( IDE_DLL()->GetExtraData()->ShellInCriticalSection() )
+ return 2;
+
+ long nRet = 0;
+ BasicIDEShell* pIDEShell = 0;
+ if ( SvtModuleOptions().IsBasicIDE() )
+ {
+ BasicManager* pBasMgr = BasicIDE::FindBasicManager( pBasic );
+ if ( pBasMgr )
+ {
+ BOOL bProtected = FALSE;
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+ OSL_ENSURE( aDocument.isValid(), "BasicIDE::HandleBasicError: no document for the given BasicManager!" );
+ if ( aDocument.isValid() )
+ {
+ ::rtl::OUString aOULibName( pBasic->GetName() );
+ Reference< script::XLibraryContainer > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ bProtected = TRUE;
+ }
+ }
+ }
+
+ if ( !bProtected )
+ {
+ pIDEShell = IDE_DLL()->GetShell();
+ if ( !pIDEShell )
+ {
+ SfxAllItemSet aArgs( SFX_APP()->GetPool() );
+ SfxRequest aRequest( SID_BASICIDE_APPEAR, SFX_CALLMODE_SYNCHRON, aArgs );
+ SFX_APP()->ExecuteSlot( aRequest );
+ pIDEShell = IDE_DLL()->GetShell();
+ }
+ }
+ }
+ }
+
+ if ( pIDEShell )
+ nRet = pIDEShell->CallBasicErrorHdl( pBasic );
+ else
+ ErrorHandler::HandleError( StarBASIC::GetErrorCode() );
+
+ return nRet;
+}
+
+//----------------------------------------------------------------------------
+
+SfxBindings* GetBindingsPtr()
+{
+ SfxBindings* pBindings = NULL;
+
+ SfxViewFrame* pFrame = NULL;
+ BasicIDEDLL* pIDEDLL = IDE_DLL();
+ if ( pIDEDLL && pIDEDLL->GetShell() )
+ {
+ pFrame = pIDEDLL->GetShell()->GetViewFrame();
+ }
+ else
+ {
+ SfxViewFrame* pView = SfxViewFrame::GetFirst();
+ while ( pView )
+ {
+ SfxObjectShell* pObjShell = pView->GetObjectShell();
+ if ( pObjShell && pObjShell->ISA( BasicDocShell ) )
+ {
+ pFrame = pView;
+ break;
+ }
+ pView = SfxViewFrame::GetNext( *pView );
+ }
+ }
+ if ( pFrame != NULL )
+ pBindings = &pFrame->GetBindings();
+
+ return pBindings;
+}
+
+} //namespace BasicIDE
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/bastype2.cxx b/basctl/source/basicide/bastype2.cxx
new file mode 100644
index 000000000000..4fb2679cbc9f
--- /dev/null
+++ b/basctl/source/basicide/bastype2.cxx
@@ -0,0 +1,903 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <memory>
+
+#include "vcl/bitmap.hxx"
+
+#include <ide_pch.hxx>
+
+
+#include <basidesh.hrc>
+#include <bastypes.hxx>
+#include <bastype2.hxx>
+#include <basobj.hxx>
+#include <baside2.hrc>
+#include <iderid.hxx>
+#include <tools/urlobj.hxx>
+#include <tools/diagnose_ex.h>
+#include <basic/sbx.hxx>
+#include <svtools/imagemgr.hxx>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+#include <com/sun/star/frame/XModuleManager.hpp>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/componentcontext.hxx>
+#include <map>
+#include <com/sun/star/script/ModuleType.hpp>
+#include <com/sun/star/script/vba/XVBAModuleInfo.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+
+void ModuleInfoHelper::getObjectName( const uno::Reference< container::XNameContainer >& rLib, const String& rModName, String& rObjName )
+{
+ try
+ {
+ uno::Reference< script::vba::XVBAModuleInfo > xVBAModuleInfo( rLib, uno::UNO_QUERY );
+ if ( xVBAModuleInfo.is() && xVBAModuleInfo->hasModuleInfo( rModName ) )
+ {
+ script::ModuleInfo aModuleInfo = xVBAModuleInfo->getModuleInfo( rModName );
+ uno::Any aObject( aModuleInfo.ModuleObject );
+ uno::Reference< lang::XServiceInfo > xServiceInfo( aObject, uno::UNO_QUERY );
+ if( xServiceInfo.is() && xServiceInfo->supportsService( rtl::OUString::createFromAscii( "ooo.vba.excel.Worksheet" ) ) )
+ {
+ uno::Reference< container::XNamed > xNamed( aObject, uno::UNO_QUERY );
+ if( xNamed.is() )
+ rObjName = xNamed->getName();
+ }
+ }
+ }
+ catch( uno::Exception& )
+ {
+ }
+}
+
+sal_Int32 ModuleInfoHelper::getModuleType( const uno::Reference< container::XNameContainer >& rLib, const String& rModName )
+{
+ sal_Int32 nType = script::ModuleType::NORMAL;
+ uno::Reference< script::vba::XVBAModuleInfo > xVBAModuleInfo( rLib, uno::UNO_QUERY );
+ if ( xVBAModuleInfo.is() && xVBAModuleInfo->hasModuleInfo( rModName ) )
+ {
+ script::ModuleInfo aModuleInfo = xVBAModuleInfo->getModuleInfo( rModName );
+ nType = aModuleInfo.ModuleType;
+ }
+ return nType;
+}
+
+BasicEntry::~BasicEntry()
+{
+}
+
+BasicDocumentEntry::BasicDocumentEntry( const ScriptDocument& rDocument, LibraryLocation eLocation, BasicEntryType eType )
+ :BasicEntry( eType )
+ ,m_aDocument( rDocument )
+ ,m_eLocation( eLocation )
+{
+ OSL_ENSURE( m_aDocument.isValid(), "BasicDocumentEntry::BasicDocumentEntry: illegal document!" );
+}
+
+BasicDocumentEntry::~BasicDocumentEntry()
+{
+}
+
+BasicLibEntry::BasicLibEntry( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, BasicEntryType eType )
+ :BasicDocumentEntry( rDocument, eLocation, eType )
+ ,m_aLibName( rLibName )
+{
+}
+
+BasicLibEntry::~BasicLibEntry()
+{
+}
+
+BasicEntryDescriptor::BasicEntryDescriptor()
+ :m_aDocument( ScriptDocument::getApplicationScriptDocument() )
+ ,m_eLocation( LIBRARY_LOCATION_UNKNOWN )
+ ,m_eType( OBJ_TYPE_UNKNOWN )
+{
+}
+
+BasicEntryDescriptor::BasicEntryDescriptor( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, const String& rLibSubName, const String& rName, BasicEntryType eType )
+ :m_aDocument( rDocument )
+ ,m_eLocation( eLocation )
+ ,m_aLibName( rLibName )
+ ,m_aLibSubName( rLibSubName )
+ ,m_aName( rName )
+ ,m_eType( eType )
+{
+ OSL_ENSURE( m_aDocument.isValid(), "BasicEntryDescriptor::BasicEntryDescriptor: invalid document!" );
+}
+
+BasicEntryDescriptor::BasicEntryDescriptor( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, const String& rLibSubName, const String& rName, const String& rMethodName, BasicEntryType eType )
+ :m_aDocument( rDocument )
+ ,m_eLocation( eLocation )
+ ,m_aLibName( rLibName )
+ ,m_aLibSubName( rLibSubName )
+ ,m_aName( rName )
+ ,m_aMethodName( rMethodName )
+ ,m_eType( eType )
+{
+ OSL_ENSURE( m_aDocument.isValid(), "BasicEntryDescriptor::BasicEntryDescriptor: invalid document!" );
+}
+
+BasicEntryDescriptor::~BasicEntryDescriptor()
+{
+}
+
+BasicEntryDescriptor::BasicEntryDescriptor( const BasicEntryDescriptor& rDesc )
+ :m_aDocument( rDesc.m_aDocument )
+ ,m_eLocation( rDesc.m_eLocation )
+ ,m_aLibName( rDesc.m_aLibName )
+ ,m_aLibSubName( rDesc.m_aLibSubName )
+ ,m_aName( rDesc.m_aName )
+ ,m_aMethodName( rDesc.m_aMethodName )
+ ,m_eType( rDesc.m_eType )
+{
+}
+
+BasicEntryDescriptor& BasicEntryDescriptor::operator=( const BasicEntryDescriptor& rDesc )
+{
+ m_aDocument = rDesc.m_aDocument;
+ m_eLocation = rDesc.m_eLocation;
+ m_aLibName = rDesc.m_aLibName;
+ m_aLibSubName = rDesc.m_aLibSubName;
+ m_aName = rDesc.m_aName;
+ m_aMethodName = rDesc.m_aMethodName;
+ m_eType = rDesc.m_eType;
+
+ return *this;
+}
+
+bool BasicEntryDescriptor::operator==( const BasicEntryDescriptor& rDesc ) const
+{
+ return m_aDocument == rDesc.m_aDocument &&
+ m_eLocation == rDesc.m_eLocation &&
+ m_aLibName == rDesc.m_aLibName &&
+ m_aLibSubName == rDesc.m_aLibSubName &&
+ m_aName == rDesc.m_aName &&
+ m_aMethodName == rDesc.m_aMethodName &&
+ m_eType == rDesc.m_eType;
+}
+
+BasicTreeListBox::BasicTreeListBox( Window* pParent, const ResId& rRes ) :
+ SvTreeListBox( pParent, IDEResId( sal::static_int_cast<USHORT>( rRes.GetId() ) ) ),
+ m_aNotifier( *this )
+{
+ SetNodeDefaultImages();
+ SetSelectionMode( SINGLE_SELECTION );
+ nMode = 0xFF; // Alles
+}
+
+
+
+BasicTreeListBox::~BasicTreeListBox()
+{
+ m_aNotifier.dispose();
+
+ // UserDaten zerstoeren
+ SvLBoxEntry* pEntry = First();
+ while ( pEntry )
+ {
+ delete (BasicEntry*)pEntry->GetUserData();
+ pEntry = Next( pEntry );
+ }
+}
+
+void BasicTreeListBox::ScanEntry( const ScriptDocument& rDocument, LibraryLocation eLocation )
+{
+ OSL_ENSURE( rDocument.isAlive(), "BasicTreeListBox::ScanEntry: illegal document!" );
+ if ( !rDocument.isAlive() )
+ return;
+
+ // can be called multiple times for updating!
+
+ // eigentlich prueffen, ob Basic bereits im Baum ?!
+ SetUpdateMode( FALSE );
+
+ // level 1: BasicManager (application, document, ...)
+ SvLBoxEntry* pDocumentRootEntry = FindRootEntry( rDocument, eLocation );
+ if ( pDocumentRootEntry && IsExpanded( pDocumentRootEntry ) )
+ ImpCreateLibEntries( pDocumentRootEntry, rDocument, eLocation );
+ if ( !pDocumentRootEntry )
+ {
+ String aRootName( GetRootEntryName( rDocument, eLocation ) );
+ Image aImage;
+ Image aImageHC;
+ GetRootEntryBitmaps( rDocument, aImage, aImageHC );
+ pDocumentRootEntry = AddEntry(
+ aRootName,
+ aImage,
+ aImageHC,
+ 0, true,
+ std::auto_ptr< BasicEntry >( new BasicDocumentEntry( rDocument, eLocation ) ) );
+ }
+
+ SetUpdateMode( TRUE );
+}
+
+void BasicTreeListBox::ImpCreateLibEntries( SvLBoxEntry* pDocumentRootEntry, const ScriptDocument& rDocument, LibraryLocation eLocation )
+{
+ // get a sorted list of library names
+ Sequence< ::rtl::OUString > aLibNames( rDocument.getLibraryNames() );
+ sal_Int32 nLibCount = aLibNames.getLength();
+ const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
+
+ for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+ {
+ String aLibName = pLibNames[ i ];
+
+ if ( eLocation == rDocument.getLibraryLocation( aLibName ) )
+ {
+ // check, if the module library is loaded
+ BOOL bModLibLoaded = FALSE;
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer > xModLibContainer( rDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryLoaded( aOULibName ) )
+ bModLibLoaded = TRUE;
+
+ // check, if the dialog library is loaded
+ BOOL bDlgLibLoaded = FALSE;
+ Reference< script::XLibraryContainer > xDlgLibContainer( rDocument.getLibraryContainer( E_DIALOGS ) );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryLoaded( aOULibName ) )
+ bDlgLibLoaded = TRUE;
+
+ BOOL bLoaded = bModLibLoaded || bDlgLibLoaded;
+
+ // if only one of the libraries is loaded, load also the other
+ if ( bLoaded )
+ {
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
+ xModLibContainer->loadLibrary( aOULibName );
+
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && !xDlgLibContainer->isLibraryLoaded( aOULibName ) )
+ xDlgLibContainer->loadLibrary( aOULibName );
+ }
+
+ // create tree list box entry
+ USHORT nId, nIdHC;
+ if ( ( nMode & BROWSEMODE_DIALOGS ) && !( nMode & BROWSEMODE_MODULES ) )
+ {
+ nId = bLoaded ? RID_IMG_DLGLIB : RID_IMG_DLGLIBNOTLOADED;
+ nIdHC = bLoaded ? RID_IMG_DLGLIB_HC : RID_IMG_DLGLIBNOTLOADED_HC;
+ }
+ else
+ {
+ nId = bLoaded ? RID_IMG_MODLIB : RID_IMG_MODLIBNOTLOADED;
+ nIdHC = bLoaded ? RID_IMG_MODLIB_HC : RID_IMG_MODLIBNOTLOADED_HC;
+ }
+ SvLBoxEntry* pLibRootEntry = FindEntry( pDocumentRootEntry, aLibName, OBJ_TYPE_LIBRARY );
+ if ( pLibRootEntry )
+ {
+ SetEntryBitmaps( pLibRootEntry, Image( IDEResId( nId ) ), Image( IDEResId( nIdHC ) ) );
+ if ( IsExpanded( pLibRootEntry ) )
+ ImpCreateLibSubEntries( pLibRootEntry, rDocument, aLibName );
+ }
+ else
+ {
+ pLibRootEntry = AddEntry(
+ aLibName,
+ Image( IDEResId( nId ) ),
+ Image( IDEResId( nIdHC ) ),
+ pDocumentRootEntry, true,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_LIBRARY ) ) );
+ }
+ }
+ }
+}
+
+void BasicTreeListBox::ImpCreateLibSubEntries( SvLBoxEntry* pLibRootEntry, const ScriptDocument& rDocument, const String& rLibName )
+{
+ ::rtl::OUString aOULibName( rLibName );
+
+ // modules
+ if ( nMode & BROWSEMODE_MODULES )
+ {
+ Reference< script::XLibraryContainer > xModLibContainer( rDocument.getLibraryContainer( E_SCRIPTS ) );
+
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ try
+ {
+ if( rDocument.isInVBAMode() )
+ ImpCreateLibSubEntriesInVBAMode( pLibRootEntry, rDocument, rLibName );
+ else
+ {
+ // get a sorted list of module names
+ Sequence< ::rtl::OUString > aModNames = rDocument.getObjectNames( E_SCRIPTS, rLibName );
+ sal_Int32 nModCount = aModNames.getLength();
+ const ::rtl::OUString* pModNames = aModNames.getConstArray();
+
+ for ( sal_Int32 i = 0 ; i < nModCount ; i++ )
+ {
+ String aModName = pModNames[ i ];
+ SvLBoxEntry* pModuleEntry = FindEntry( pLibRootEntry, aModName, OBJ_TYPE_MODULE );
+ if ( !pModuleEntry )
+ pModuleEntry = AddEntry(
+ aModName,
+ Image( IDEResId( RID_IMG_MODULE ) ),
+ Image( IDEResId( RID_IMG_MODULE_HC ) ),
+ pLibRootEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_MODULE ) ) );
+
+ // methods
+ if ( nMode & BROWSEMODE_SUBS )
+ {
+ Sequence< ::rtl::OUString > aNames = BasicIDE::GetMethodNames( rDocument, rLibName, aModName );
+ sal_Int32 nCount = aNames.getLength();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+
+ for ( sal_Int32 j = 0 ; j < nCount ; j++ )
+ {
+ String aName = pNames[ j ];
+ SvLBoxEntry* pEntry = FindEntry( pModuleEntry, aName, OBJ_TYPE_METHOD );
+ if ( !pEntry )
+ pEntry = AddEntry(
+ aName,
+ Image( IDEResId( RID_IMG_MACRO ) ),
+ Image( IDEResId( RID_IMG_MACRO_HC ) ),
+ pModuleEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_METHOD ) ) );
+ }
+ }
+ }
+ }
+ }
+ catch ( const container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+
+ // dialogs
+ if ( nMode & BROWSEMODE_DIALOGS )
+ {
+ Reference< script::XLibraryContainer > xDlgLibContainer( rDocument.getLibraryContainer( E_SCRIPTS ) );
+
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ try
+ {
+ // get a sorted list of dialog names
+ Sequence< ::rtl::OUString > aDlgNames( rDocument.getObjectNames( E_DIALOGS, rLibName ) );
+ sal_Int32 nDlgCount = aDlgNames.getLength();
+ const ::rtl::OUString* pDlgNames = aDlgNames.getConstArray();
+
+ for ( sal_Int32 i = 0 ; i < nDlgCount ; i++ )
+ {
+ String aDlgName = pDlgNames[ i ];
+ SvLBoxEntry* pDialogEntry = FindEntry( pLibRootEntry, aDlgName, OBJ_TYPE_DIALOG );
+ if ( !pDialogEntry )
+ pDialogEntry = AddEntry(
+ aDlgName,
+ Image( IDEResId( RID_IMG_DIALOG ) ),
+ Image( IDEResId( RID_IMG_DIALOG_HC ) ),
+ pLibRootEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_DIALOG ) ) );
+ }
+ }
+ catch ( container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+}
+
+void BasicTreeListBox::ImpCreateLibSubEntriesInVBAMode( SvLBoxEntry* pLibRootEntry, const ScriptDocument& rDocument, const String& rLibName )
+{
+
+ ::std::vector< std::pair< BasicEntryType, ::rtl::OUString > > aEntries;
+ aEntries.push_back( ::std::make_pair( OBJ_TYPE_DOCUMENT_OBJECTS, String( IDEResId( RID_STR_DOCUMENT_OBJECTS ) ) ) );
+ aEntries.push_back( ::std::make_pair( OBJ_TYPE_USERFORMS, String( IDEResId( RID_STR_USERFORMS ) ) ) );
+ aEntries.push_back( ::std::make_pair( OBJ_TYPE_NORMAL_MODULES, String( IDEResId( RID_STR_NORMAL_MODULES ) ) ) );
+ aEntries.push_back( ::std::make_pair( OBJ_TYPE_CLASS_MODULES, String( IDEResId( RID_STR_CLASS_MODULES ) ) ) );
+
+ ::std::vector< std::pair< BasicEntryType, ::rtl::OUString > >::iterator iter;
+ for( iter = aEntries.begin(); iter != aEntries.end(); ++iter )
+ {
+ BasicEntryType eType = iter->first;
+ ::rtl::OUString aEntryName = iter->second;
+ SvLBoxEntry* pLibSubRootEntry = FindEntry( pLibRootEntry, aEntryName, eType );
+ if( pLibSubRootEntry )
+ {
+ SetEntryBitmaps( pLibSubRootEntry, Image( IDEResId( RID_IMG_MODLIB ) ), Image( IDEResId( RID_IMG_MODLIB_HC ) ) );
+ if ( IsExpanded( pLibSubRootEntry ) )
+ ImpCreateLibSubSubEntriesInVBAMode( pLibSubRootEntry, rDocument, rLibName );
+ }
+ else
+ {
+ pLibSubRootEntry = AddEntry(
+ aEntryName,
+ Image( IDEResId( RID_IMG_MODLIB ) ),
+ Image( IDEResId( RID_IMG_MODLIB_HC ) ),
+ pLibRootEntry, true,
+ std::auto_ptr< BasicEntry >( new BasicEntry( eType ) ) );
+ }
+ }
+}
+
+void BasicTreeListBox::ImpCreateLibSubSubEntriesInVBAMode( SvLBoxEntry* pLibSubRootEntry, const ScriptDocument& rDocument, const String& rLibName )
+{
+ uno::Reference< container::XNameContainer > xLib = rDocument.getOrCreateLibrary( E_SCRIPTS, rLibName );
+ if( !xLib.is() )
+ return;
+
+ try
+ {
+ // get a sorted list of module names
+ Sequence< ::rtl::OUString > aModNames = rDocument.getObjectNames( E_SCRIPTS, rLibName );
+ sal_Int32 nModCount = aModNames.getLength();
+ const ::rtl::OUString* pModNames = aModNames.getConstArray();
+
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pLibSubRootEntry ) );
+ BasicEntryType eCurrentType( aDesc.GetType() );
+
+ for ( sal_Int32 i = 0 ; i < nModCount ; i++ )
+ {
+ String aModName = pModNames[ i ];
+ BasicEntryType eType = OBJ_TYPE_UNKNOWN;
+ switch( ModuleInfoHelper::getModuleType( xLib, aModName ) )
+ {
+ case script::ModuleType::DOCUMENT:
+ eType = OBJ_TYPE_DOCUMENT_OBJECTS;
+ break;
+ case script::ModuleType::FORM:
+ eType = OBJ_TYPE_USERFORMS;
+ break;
+ case script::ModuleType::NORMAL:
+ eType = OBJ_TYPE_NORMAL_MODULES;
+ break;
+ case script::ModuleType::CLASS:
+ eType = OBJ_TYPE_CLASS_MODULES;
+ break;
+ }
+ if( eType != eCurrentType )
+ continue;
+
+ // display a nice friendly name in the ObjectModule tab,
+ // combining the objectname and module name, e.g. Sheet1 ( Financials )
+ String aEntryName( aModName );
+ if( eType == OBJ_TYPE_DOCUMENT_OBJECTS )
+ {
+ String sObjName;
+ ModuleInfoHelper::getObjectName( xLib, aModName, sObjName );
+ if( sObjName.Len() )
+ {
+ aEntryName.AppendAscii(" (").Append(sObjName).AppendAscii(")");
+ }
+ }
+ SvLBoxEntry* pModuleEntry = FindEntry( pLibSubRootEntry, aEntryName, OBJ_TYPE_MODULE );
+ if ( !pModuleEntry )
+ pModuleEntry = AddEntry(
+ aEntryName,
+ Image( IDEResId( RID_IMG_MODULE ) ),
+ Image( IDEResId( RID_IMG_MODULE_HC ) ),
+ pLibSubRootEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_MODULE ) ) );
+
+ // methods
+ if ( nMode & BROWSEMODE_SUBS )
+ {
+ Sequence< ::rtl::OUString > aNames = BasicIDE::GetMethodNames( rDocument, rLibName, aModName );
+ sal_Int32 nCount = aNames.getLength();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+
+ for ( sal_Int32 j = 0 ; j < nCount ; j++ )
+ {
+ String aName = pNames[ j ];
+ SvLBoxEntry* pEntry = FindEntry( pModuleEntry, aName, OBJ_TYPE_METHOD );
+ if ( !pEntry )
+ pEntry = AddEntry(
+ aName,
+ Image( IDEResId( RID_IMG_MACRO ) ),
+ Image( IDEResId( RID_IMG_MACRO_HC ) ),
+ pModuleEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_METHOD ) ) );
+ }
+ }
+ }
+ }
+ catch ( const container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+}
+
+SvLBoxEntry* BasicTreeListBox::ImpFindEntry( SvLBoxEntry* pParent, const String& rText )
+{
+ ULONG nRootPos = 0;
+ SvLBoxEntry* pEntry = pParent ? FirstChild( pParent ) : GetEntry( nRootPos );
+ while ( pEntry )
+ {
+ if ( GetEntryText( pEntry ) == rText )
+ return pEntry;
+
+ pEntry = pParent ? NextSibling( pEntry ) : GetEntry( ++nRootPos );
+ }
+ return 0;
+}
+
+void BasicTreeListBox::onDocumentCreated( const ScriptDocument& /*_rDocument*/ )
+{
+ UpdateEntries();
+}
+
+void BasicTreeListBox::onDocumentOpened( const ScriptDocument& /*_rDocument*/ )
+{
+ UpdateEntries();
+}
+
+void BasicTreeListBox::onDocumentSave( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void BasicTreeListBox::onDocumentSaveDone( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void BasicTreeListBox::onDocumentSaveAs( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void BasicTreeListBox::onDocumentSaveAsDone( const ScriptDocument& /*_rDocument*/ )
+{
+ UpdateEntries();
+}
+
+void BasicTreeListBox::onDocumentClosed( const ScriptDocument& /*_rDocument*/ )
+{
+ UpdateEntries();
+}
+
+void BasicTreeListBox::onDocumentTitleChanged( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void BasicTreeListBox::onDocumentModeChanged( const ScriptDocument& /*_rDocument*/ )
+{
+ // not interested in
+}
+
+void BasicTreeListBox::UpdateEntries()
+{
+ BasicEntryDescriptor aCurDesc( GetEntryDescriptor( FirstSelected() ) );
+
+ // Erstmal die vorhandenen Eintraege auf existens pruefen:
+ SvLBoxEntry* pLastValid = 0;
+ SvLBoxEntry* pEntry = First();
+ while ( pEntry )
+ {
+ if ( IsValidEntry( pEntry ) )
+ pLastValid = pEntry;
+ else
+ {
+ delete (BasicEntry*)pEntry->GetUserData();
+ GetModel()->Remove( pEntry );
+ }
+ pEntry = pLastValid ? Next( pLastValid ) : First();
+ }
+
+ // Jetzt ueber die Basics rennen und in die Zweige eintragen
+ ScanAllEntries();
+
+ SetCurrentEntry( aCurDesc );
+}
+
+SvLBoxEntry* __EXPORT BasicTreeListBox::CloneEntry( SvLBoxEntry* pSource )
+{
+ SvLBoxEntry* pNew = SvTreeListBox::CloneEntry( pSource );
+ BasicEntry* pUser = (BasicEntry*)pSource->GetUserData();
+
+ DBG_ASSERT( pUser, "User-Daten?!" );
+ DBG_ASSERT( pUser->GetType() != OBJ_TYPE_DOCUMENT, "BasicTreeListBox::CloneEntry: document?!" );
+
+ BasicEntry* pNewUser = new BasicEntry( *pUser );
+ pNew->SetUserData( pNewUser );
+ return pNew;
+}
+
+SvLBoxEntry* BasicTreeListBox::FindEntry( SvLBoxEntry* pParent, const String& rText, BasicEntryType eType )
+{
+ ULONG nRootPos = 0;
+ SvLBoxEntry* pEntry = pParent ? FirstChild( pParent ) : GetEntry( nRootPos );
+ while ( pEntry )
+ {
+ BasicEntry* pBasicEntry = (BasicEntry*)pEntry->GetUserData();
+ DBG_ASSERT( pBasicEntry, "FindEntry: Kein BasicEntry ?!" );
+ if ( ( pBasicEntry->GetType() == eType ) && ( GetEntryText( pEntry ) == rText ) )
+ return pEntry;
+
+ pEntry = pParent ? NextSibling( pEntry ) : GetEntry( ++nRootPos );
+ }
+ return 0;
+}
+
+long BasicTreeListBox::ExpandingHdl()
+{
+ // Expanding oder Collaps?
+ BOOL bOK = TRUE;
+ if ( GetModel()->GetDepth( GetHdlEntry() ) == 1 )
+ {
+ SvLBoxEntry* pCurEntry = GetCurEntry();
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ OSL_ENSURE( aDocument.isAlive(), "BasicTreeListBox::ExpandingHdl: no document, or document is dead!" );
+ if ( aDocument.isAlive() )
+ {
+ String aLibName( aDesc.GetLibName() );
+ String aLibSubName( aDesc.GetLibSubName() );
+ String aName( aDesc.GetName() );
+ String aMethodName( aDesc.GetMethodName() );
+
+ if ( aLibName.Len() && !aLibSubName.Len() && !aName.Len() && !aMethodName.Len() )
+ {
+ // check password, if library is password protected and not verified
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ String aPassword;
+ bOK = QueryPassword( xModLibContainer, aLibName, aPassword );
+ }
+ }
+ }
+ }
+ }
+ return bOK;
+}
+
+BOOL BasicTreeListBox::IsEntryProtected( SvLBoxEntry* pEntry )
+{
+ BOOL bProtected = FALSE;
+ if ( pEntry && ( GetModel()->GetDepth( pEntry ) == 1 ) )
+ {
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ OSL_ENSURE( aDocument.isAlive(), "BasicTreeListBox::IsEntryProtected: no document, or document is dead!" );
+ if ( aDocument.isAlive() )
+ {
+ ::rtl::OUString aOULibName( aDesc.GetLibName() );
+ Reference< script::XLibraryContainer > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ bProtected = TRUE;
+ }
+ }
+ }
+ }
+ return bProtected;
+}
+
+SvLBoxEntry* BasicTreeListBox::AddEntry(
+ const String& rText, const Image& rImage, const Image& rImageHC,
+ SvLBoxEntry* pParent, bool bChildrenOnDemand, std::auto_ptr< BasicEntry > aUserData )
+{
+ SvLBoxEntry* p = InsertEntry(
+ rText, rImage, rImage, pParent, bChildrenOnDemand, LIST_APPEND,
+ aUserData.release() ); // XXX possible leak
+ SetExpandedEntryBmp( p, rImageHC, BMP_COLOR_HIGHCONTRAST );
+ SetCollapsedEntryBmp( p, rImageHC, BMP_COLOR_HIGHCONTRAST );
+ return p;
+}
+
+void BasicTreeListBox::SetEntryBitmaps( SvLBoxEntry * pEntry, const Image& rImage, const Image& rImageHC )
+{
+ SetExpandedEntryBmp( pEntry, rImage, BMP_COLOR_NORMAL );
+ SetCollapsedEntryBmp( pEntry, rImage, BMP_COLOR_NORMAL );
+ SetExpandedEntryBmp( pEntry, rImageHC, BMP_COLOR_HIGHCONTRAST );
+ SetCollapsedEntryBmp( pEntry, rImageHC, BMP_COLOR_HIGHCONTRAST );
+}
+
+LibraryType BasicTreeListBox::GetLibraryType() const
+{
+ LibraryType eType = LIBRARY_TYPE_ALL;
+ if ( ( nMode & BROWSEMODE_MODULES ) && !( nMode & BROWSEMODE_DIALOGS ) )
+ eType = LIBRARY_TYPE_MODULE;
+ else if ( !( nMode & BROWSEMODE_MODULES ) && ( nMode & BROWSEMODE_DIALOGS ) )
+ eType = LIBRARY_TYPE_DIALOG;
+ return eType;
+}
+
+String BasicTreeListBox::GetRootEntryName( const ScriptDocument& rDocument, LibraryLocation eLocation ) const
+{
+ return rDocument.getTitle( eLocation, GetLibraryType() );
+}
+
+void BasicTreeListBox::GetRootEntryBitmaps( const ScriptDocument& rDocument, Image& rImage, Image& rImageHC )
+{
+ OSL_ENSURE( rDocument.isValid(), "BasicTreeListBox::GetRootEntryBitmaps: illegal document!" );
+ if ( !rDocument.isValid() )
+ return;
+
+ if ( rDocument.isDocument() )
+ {
+ ::rtl::OUString sFactoryURL;
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ Reference< ::com::sun::star::frame::XModuleManager > xModuleManager;
+ if ( aContext.createComponent( "com.sun.star.frame.ModuleManager", xModuleManager ) )
+ {
+ try
+ {
+ ::rtl::OUString sModule( xModuleManager->identify( rDocument.getDocument() ) );
+ Reference< container::XNameAccess > xModuleConfig( xModuleManager, UNO_QUERY );
+ if ( xModuleConfig.is() )
+ {
+ Sequence< beans::PropertyValue > aModuleDescr;
+ xModuleConfig->getByName( sModule ) >>= aModuleDescr;
+ sal_Int32 nCount = aModuleDescr.getLength();
+ const beans::PropertyValue* pModuleDescr = aModuleDescr.getConstArray();
+ for ( sal_Int32 i = 0; i < nCount; ++i )
+ {
+ if ( pModuleDescr[ i ].Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "ooSetupFactoryEmptyDocumentURL" ) ) )
+ {
+ pModuleDescr[ i ].Value >>= sFactoryURL;
+ break;
+ }
+ }
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ if ( sFactoryURL.getLength() )
+ {
+ rImage = SvFileInformationManager::GetFileImage( INetURLObject( sFactoryURL ),
+ FALSE /* small */,
+ FALSE /* normal */ );
+
+ rImageHC = SvFileInformationManager::GetFileImage( INetURLObject( sFactoryURL ),
+ FALSE /* small */,
+ TRUE /* high contrast */ );
+ }
+ else
+ {
+ // default icon
+ rImage = Image( IDEResId( RID_IMG_DOCUMENT ) );
+ rImageHC = Image( IDEResId( RID_IMG_DOCUMENT_HC ) );
+ }
+ }
+ else
+ {
+ rImage = Image( IDEResId( RID_IMG_INSTALLATION ) );
+ rImageHC = Image( IDEResId( RID_IMG_INSTALLATION_HC ) );
+ }
+}
+
+void BasicTreeListBox::SetCurrentEntry( BasicEntryDescriptor& rDesc )
+{
+ SvLBoxEntry* pCurEntry = 0;
+ BasicEntryDescriptor aDesc( rDesc );
+ if ( aDesc.GetType() == OBJ_TYPE_UNKNOWN )
+ {
+ aDesc = BasicEntryDescriptor(
+ ScriptDocument::getApplicationScriptDocument(),
+ LIBRARY_LOCATION_USER, String::CreateFromAscii( "Standard" ),
+ String(), String::CreateFromAscii( "." ), OBJ_TYPE_UNKNOWN );
+ }
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ OSL_ENSURE( aDocument.isValid(), "BasicTreeListBox::SetCurrentEntry: invalid document!" );
+ LibraryLocation eLocation( aDesc.GetLocation() );
+ SvLBoxEntry* pRootEntry = FindRootEntry( aDocument, eLocation );
+ if ( pRootEntry )
+ {
+ pCurEntry = pRootEntry;
+ String aLibName( aDesc.GetLibName() );
+ if ( aLibName.Len() )
+ {
+ Expand( pRootEntry );
+ SvLBoxEntry* pLibEntry = FindEntry( pRootEntry, aLibName, OBJ_TYPE_LIBRARY );
+ if ( pLibEntry )
+ {
+ pCurEntry = pLibEntry;
+ String aLibSubName( aDesc.GetLibSubName() );
+ if( aLibSubName.Len() )
+ {
+ Expand( pLibEntry );
+ SvLBoxEntry* pLibSubEntry = ImpFindEntry( pLibEntry, aLibSubName );
+ if( pLibSubEntry )
+ {
+ pCurEntry = pLibSubEntry;
+ }
+ }
+ String aName( aDesc.GetName() );
+ if ( aName.Len() )
+ {
+ Expand( pCurEntry );
+ BasicEntryType eType = OBJ_TYPE_MODULE;
+ if ( aDesc.GetType() == OBJ_TYPE_DIALOG )
+ eType = OBJ_TYPE_DIALOG;
+ SvLBoxEntry* pEntry = FindEntry( pCurEntry, aName, eType );
+ if ( pEntry )
+ {
+ pCurEntry = pEntry;
+ String aMethodName( aDesc.GetMethodName() );
+ if ( aMethodName.Len() )
+ {
+ Expand( pEntry );
+ SvLBoxEntry* pSubEntry = FindEntry( pEntry, aMethodName, OBJ_TYPE_METHOD );
+ if ( pSubEntry )
+ {
+ pCurEntry = pSubEntry;
+ }
+ else
+ {
+ pSubEntry = FirstChild( pEntry );
+ if ( pSubEntry )
+ pCurEntry = pSubEntry;
+ }
+ }
+ }
+ else
+ {
+ pEntry = FirstChild( pLibEntry );
+ if ( pEntry )
+ pCurEntry = pEntry;
+ }
+ }
+ }
+ else
+ {
+ pLibEntry = FirstChild( pRootEntry );
+ if ( pLibEntry )
+ pCurEntry = pLibEntry;
+ }
+ }
+ }
+ else
+ {
+ pRootEntry = First();
+ if ( pRootEntry )
+ pCurEntry = pRootEntry;
+ }
+
+ SetCurEntry( pCurEntry );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/bastype2.hxx b/basctl/source/basicide/bastype2.hxx
new file mode 100644
index 000000000000..08fb03d1c689
--- /dev/null
+++ b/basctl/source/basicide/bastype2.hxx
@@ -0,0 +1,222 @@
+/* -*- 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 _BASTYPE2_HXX
+#define _BASTYPE2_HXX
+
+#include "doceventnotifier.hxx"
+
+#include <memory>
+#include "tools/solar.h"
+
+#define _SVICNVW_HXX
+#include <svtools/svtreebx.hxx>
+#include <svl/lstner.hxx>
+#include <basic/sbstar.hxx>
+#include <sbxitem.hxx>
+#include "basobj.hxx"
+
+enum BasicEntryType { OBJ_TYPE_UNKNOWN, OBJ_TYPE_DOCUMENT, OBJ_TYPE_LIBRARY, OBJ_TYPE_MODULE, OBJ_TYPE_DIALOG, OBJ_TYPE_METHOD, OBJ_TYPE_DOCUMENT_OBJECTS, OBJ_TYPE_USERFORMS, OBJ_TYPE_NORMAL_MODULES, OBJ_TYPE_CLASS_MODULES };
+
+#define BROWSEMODE_MODULES 0x01
+#define BROWSEMODE_SUBS 0x02
+#define BROWSEMODE_DIALOGS 0x04
+
+class SbMethod;
+class SbxObject;
+class SbModule;
+class SvLBoxEntry;
+class SbxVariable;
+class String;
+
+
+class BasicEntry
+{
+private:
+ BasicEntryType m_eType;
+
+public:
+ BasicEntry( BasicEntryType eType ) { m_eType = eType; }
+ BasicEntry( const BasicEntry& r ) { m_eType = r.m_eType; }
+ virtual ~BasicEntry();
+
+ BasicEntryType GetType() const { return m_eType; }
+};
+
+class BasicDocumentEntry : public BasicEntry
+{
+private:
+ ScriptDocument m_aDocument;
+ LibraryLocation m_eLocation;
+
+public:
+ BasicDocumentEntry( const ScriptDocument& rDocument, LibraryLocation eLocation, BasicEntryType eType = OBJ_TYPE_DOCUMENT );
+ virtual ~BasicDocumentEntry();
+
+ const ScriptDocument&
+ GetDocument() const { return m_aDocument; }
+ LibraryLocation GetLocation() const { return m_eLocation; }
+};
+
+class BasicLibEntry : public BasicDocumentEntry
+{
+private:
+ String m_aLibName;
+
+public:
+ BasicLibEntry( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, BasicEntryType eType = OBJ_TYPE_LIBRARY );
+ virtual ~BasicLibEntry();
+
+ const String& GetLibName() const { return m_aLibName; }
+};
+
+class BasicEntryDescriptor
+{
+ ScriptDocument m_aDocument;
+ LibraryLocation m_eLocation;
+ String m_aLibName;
+ String m_aLibSubName; // for vba entry: Document Objects, Class Modules, Forms and Normal Modules
+ String m_aName;
+ String m_aMethodName;
+ BasicEntryType m_eType;
+
+public:
+ BasicEntryDescriptor();
+ BasicEntryDescriptor( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, const String& rLibSubName, const String& rName, BasicEntryType eType );
+ BasicEntryDescriptor( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, const String& rLibSubName, const String& rName, const String& rMethodName, BasicEntryType eType );
+ virtual ~BasicEntryDescriptor();
+
+ BasicEntryDescriptor( const BasicEntryDescriptor& rDesc );
+ BasicEntryDescriptor& operator=( const BasicEntryDescriptor& rDesc );
+ bool operator==( const BasicEntryDescriptor& rDesc ) const;
+
+ const ScriptDocument&
+ GetDocument() const { return m_aDocument; }
+ void SetDocument( const ScriptDocument& rDocument ) { m_aDocument = rDocument; }
+
+ LibraryLocation GetLocation() const { return m_eLocation; }
+ void SetLocation( LibraryLocation eLocation ) { m_eLocation = eLocation; }
+
+ const String& GetLibName() const { return m_aLibName; }
+ void SetLibName( const String& aLibName ) { m_aLibName = aLibName; }
+
+ const String& GetLibSubName() const { return m_aLibSubName; }
+ void SetLibSubName( const String& aLibSubName ) { m_aLibSubName = aLibSubName; }
+
+ const String& GetName() const { return m_aName; }
+ void SetName( const String& aName ) { m_aName = aName; }
+
+ const String& GetMethodName() const { return m_aMethodName; }
+ void SetMethodName( const String& aMethodName ) { m_aMethodName = aMethodName; }
+
+ BasicEntryType GetType() const { return m_eType; }
+ void SetType( BasicEntryType eType ) { m_eType = eType; }
+};
+
+
+/****************************************
+ Zuordnung von Typen und Pointern in BasicEntrys:
+
+ OBJ_TYPE_DOCUMENT BasicDocumentEntry
+ OBJ_TYPE_LIBRARY BasicEntry
+ OBJ_TYPE_MODULE BasicEntry
+ OBJ_TYPE_DIALOG BasicEntry
+ OBJ_TYPE_METHOD BasicEntry
+
+******************************************/
+
+class BasicTreeListBox :public SvTreeListBox
+ ,public ::basctl::DocumentEventListener
+{
+private:
+ USHORT nMode;
+ ::basctl::DocumentEventNotifier m_aNotifier;
+
+ void SetEntryBitmaps( SvLBoxEntry * pEntry, const Image& rImage, const Image& rImageHC );
+
+protected:
+ virtual void RequestingChilds( SvLBoxEntry* pParent );
+ virtual void ExpandedHdl();
+ virtual SvLBoxEntry* CloneEntry( SvLBoxEntry* pSource );
+ virtual long ExpandingHdl();
+
+ void ImpCreateLibEntries( SvLBoxEntry* pShellRootEntry, const ScriptDocument& rDocument, LibraryLocation eLocation );
+ void ImpCreateLibSubEntries( SvLBoxEntry* pLibRootEntry, const ScriptDocument& rDocument, const String& rLibName );
+ void ImpCreateLibSubEntriesInVBAMode( SvLBoxEntry* pLibRootEntry, const ScriptDocument& rDocument, const String& rLibName );
+ void ImpCreateLibSubSubEntriesInVBAMode( SvLBoxEntry* pLibSubRootEntry, const ScriptDocument& rDocument, const String& rLibName );
+ SvLBoxEntry* ImpFindEntry( SvLBoxEntry* pParent, const String& rText );
+
+ // DocumentEventListener
+ virtual void onDocumentCreated( const ScriptDocument& _rDocument );
+ virtual void onDocumentOpened( const ScriptDocument& _rDocument );
+ virtual void onDocumentSave( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAs( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAsDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentClosed( const ScriptDocument& _rDocument );
+ virtual void onDocumentTitleChanged( const ScriptDocument& _rDocument );
+ virtual void onDocumentModeChanged( const ScriptDocument& _rDocument );
+
+public:
+ BasicTreeListBox( Window* pParent, const ResId& rRes );
+ ~BasicTreeListBox();
+
+ void ScanEntry( const ScriptDocument& rDocument, LibraryLocation eLocation );
+ void ScanAllEntries();
+ void UpdateEntries();
+
+ BOOL IsEntryProtected( SvLBoxEntry* pEntry );
+
+ void SetMode( USHORT nM ) { nMode = nM; }
+ USHORT GetMode() const { return nMode; }
+
+ SbModule* FindModule( SvLBoxEntry* pEntry );
+ SbxVariable* FindVariable( SvLBoxEntry* pEntry );
+ SvLBoxEntry* FindRootEntry( const ScriptDocument& rDocument, LibraryLocation eLocation );
+ SvLBoxEntry* FindEntry( SvLBoxEntry* pParent, const String& rText, BasicEntryType eType );
+
+ BasicEntryDescriptor GetEntryDescriptor( SvLBoxEntry* pEntry );
+
+ USHORT ConvertType( BasicEntryType eType );
+ bool IsValidEntry( SvLBoxEntry* pEntry );
+
+ SvLBoxEntry* AddEntry( const String& rText, const Image& rImage, const Image& rImageHC,
+ SvLBoxEntry* pParent, bool bChildrenOnDemand,
+ std::auto_ptr< BasicEntry > aUserData );
+
+ String GetRootEntryName( const ScriptDocument& rDocument, LibraryLocation eLocation ) const;
+ void GetRootEntryBitmaps( const ScriptDocument& rDocument, Image& rImage, Image& rImageHC );
+
+ void SetCurrentEntry( BasicEntryDescriptor& rDesc );
+
+private:
+ LibraryType GetLibraryType() const;
+};
+
+#endif // _BASTYPE2_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/bastype3.cxx b/basctl/source/basicide/bastype3.cxx
new file mode 100644
index 000000000000..3f114b190587
--- /dev/null
+++ b/basctl/source/basicide/bastype3.cxx
@@ -0,0 +1,509 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include <ide_pch.hxx>
+
+#define _SI_NOSBXCONTROLS
+
+#include <basic/sbx.hxx>
+#include <bastype2.hxx>
+#include <basobj.hxx>
+#include <baside2.hrc>
+#include <iderid.hxx>
+#include <bastypes.hxx>
+#include <basdoc.hxx>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+
+
+SV_DECL_VARARR( EntryArray, SvLBoxEntry*, 4, 4 )
+
+SV_IMPL_VARARR( EntryArray, SvLBoxEntry*);
+
+
+void __EXPORT BasicTreeListBox::RequestingChilds( SvLBoxEntry* pEntry )
+{
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ OSL_ENSURE( aDocument.isAlive(), "BasicTreeListBox::RequestingChilds: invalid document!" );
+ if ( !aDocument.isAlive() )
+ return;
+
+ LibraryLocation eLocation( aDesc.GetLocation() );
+ BasicEntryType eType( aDesc.GetType() );
+
+ if ( eType == OBJ_TYPE_DOCUMENT )
+ {
+ ImpCreateLibEntries( pEntry, aDocument, eLocation );
+ }
+ else if ( eType == OBJ_TYPE_LIBRARY )
+ {
+ String aLibName( aDesc.GetLibName() );
+ ::rtl::OUString aOULibName( aLibName );
+
+ // check password
+ BOOL bOK = TRUE;
+ Reference< script::XLibraryContainer > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ String aPassword;
+ bOK = QueryPassword( xModLibContainer, aLibName, aPassword );
+ }
+ }
+
+ if ( bOK )
+ {
+ // load module library
+ BOOL bModLibLoaded = FALSE;
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ if ( !xModLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ EnterWait();
+ xModLibContainer->loadLibrary( aOULibName );
+ LeaveWait();
+ }
+ bModLibLoaded = xModLibContainer->isLibraryLoaded( aOULibName );
+ }
+
+ // load dialog library
+ BOOL bDlgLibLoaded = FALSE;
+ Reference< script::XLibraryContainer > xDlgLibContainer( aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) )
+ {
+ if ( !xDlgLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ EnterWait();
+ xDlgLibContainer->loadLibrary( aOULibName );
+ LeaveWait();
+ }
+ bDlgLibLoaded = xDlgLibContainer->isLibraryLoaded( aOULibName );
+ }
+
+ if ( bModLibLoaded || bDlgLibLoaded )
+ {
+ // create the sub entries
+ ImpCreateLibSubEntries( pEntry, aDocument, aLibName );
+
+ // exchange image
+ bool bDlgMode = ( nMode & BROWSEMODE_DIALOGS ) && !( nMode & BROWSEMODE_MODULES );
+ Image aImage( IDEResId( bDlgMode ? RID_IMG_DLGLIB : RID_IMG_MODLIB ) );
+ Image aImageHC( IDEResId( bDlgMode ? RID_IMG_DLGLIB_HC : RID_IMG_MODLIB_HC ) );
+ SetEntryBitmaps( pEntry, aImage, aImageHC );
+ }
+ else
+ {
+ DBG_ERROR( "BasicTreeListBox::RequestingChilds: Error loading library!" );
+ }
+ }
+ }
+ else if ( eType == OBJ_TYPE_DOCUMENT_OBJECTS
+ || eType == OBJ_TYPE_USERFORMS
+ || eType == OBJ_TYPE_NORMAL_MODULES
+ || eType == OBJ_TYPE_CLASS_MODULES )
+ {
+ String aLibName( aDesc.GetLibName() );
+ ImpCreateLibSubSubEntriesInVBAMode( pEntry, aDocument, aLibName );
+ }
+ else {
+ DBG_ERROR( "BasicTreeListBox::RequestingChilds: Unknown Type!" );
+ }
+}
+
+void __EXPORT BasicTreeListBox::ExpandedHdl()
+{
+ SvLBoxEntry* pEntry = GetHdlEntry();
+ DBG_ASSERT( pEntry, "Was wurde zugeklappt?" );
+ // Die OnDemand erzeugten Childs loeschen,
+ // SubChilds werden automatisch geloescht.
+ if ( !IsExpanded( pEntry ) && pEntry->HasChildsOnDemand() )
+ {
+ SvLBoxEntry* pChild = FirstChild( pEntry );
+ while ( pChild )
+ {
+ GetModel()->Remove( pChild ); // Ruft auch den DTOR
+ pChild = FirstChild( pEntry );
+ }
+ }
+}
+
+void BasicTreeListBox::ScanAllEntries()
+{
+ ScanEntry( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_USER );
+ ScanEntry( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_SHARE );
+
+ ScriptDocuments aDocuments( ScriptDocument::getAllScriptDocuments( ScriptDocument::DocumentsSorted ) );
+ for ( ScriptDocuments::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ if ( doc->isAlive() )
+ ScanEntry( *doc, LIBRARY_LOCATION_DOCUMENT );
+ }
+}
+
+SbxVariable* BasicTreeListBox::FindVariable( SvLBoxEntry* pEntry )
+{
+ if ( !pEntry )
+ return 0;
+
+ String aLib, aModOrObj, aSubOrPropOrSObj, aPropOrSubInSObj;
+ ScriptDocument aDocument( ScriptDocument::getApplicationScriptDocument() );
+ EntryArray aEntries;
+
+ while ( pEntry )
+ {
+ USHORT nDepth = GetModel()->GetDepth( pEntry );
+ switch ( nDepth )
+ {
+ case 4:
+ case 3:
+ case 2:
+ case 1:
+ {
+ aEntries.C40_INSERT( SvLBoxEntry, pEntry, 0 );
+ }
+ break;
+ case 0:
+ {
+ aDocument = ((BasicDocumentEntry*)pEntry->GetUserData())->GetDocument();
+ }
+ break;
+ }
+ pEntry = GetParent( pEntry );
+ }
+
+ SbxVariable* pVar = 0;
+ bool bDocumentObjects = false;
+ if ( aEntries.Count() )
+ {
+ for ( USHORT n = 0; n < aEntries.Count(); n++ )
+ {
+ SvLBoxEntry* pLE = aEntries[n];
+ DBG_ASSERT( pLE, "Entrie im Array nicht gefunden" );
+ BasicEntry* pBE = (BasicEntry*)pLE->GetUserData();
+ DBG_ASSERT( pBE, "Keine Daten im Eintrag gefunden!" );
+ String aName( GetEntryText( pLE ) );
+
+ switch ( pBE->GetType() )
+ {
+ case OBJ_TYPE_LIBRARY:
+ {
+ BasicManager* pBasMgr = aDocument.getBasicManager();
+ if ( pBasMgr )
+ pVar = pBasMgr->GetLib( aName );
+ }
+ break;
+ case OBJ_TYPE_MODULE:
+ {
+ DBG_ASSERT( pVar && pVar->IsA( TYPE(StarBASIC) ), "FindVariable: Ungueltiges Basic" );
+ // extract the module name from the string like "Sheet1 (Example1)"
+ if( bDocumentObjects )
+ {
+ sal_uInt16 nIndex = 0;
+ aName = aName.GetToken( 0, ' ', nIndex );
+ }
+ pVar = ((StarBASIC*)pVar)->FindModule( aName );
+ }
+ break;
+ case OBJ_TYPE_METHOD:
+ {
+ DBG_ASSERT( pVar && ( (pVar->IsA( TYPE(SbModule) )) || (pVar->IsA( TYPE(SbxObject) )) ), "FindVariable: Ungueltiges Modul/Objekt" );
+ pVar = ((SbxObject*)pVar)->GetMethods()->Find( aName, SbxCLASS_METHOD );
+ }
+ break;
+ case OBJ_TYPE_DIALOG:
+ {
+ // sbx dialogs removed
+ }
+ break;
+ case OBJ_TYPE_DOCUMENT_OBJECTS:
+ bDocumentObjects = true;
+ case OBJ_TYPE_USERFORMS:
+ case OBJ_TYPE_NORMAL_MODULES:
+ case OBJ_TYPE_CLASS_MODULES:
+ {
+ // skip, to find the child entry.
+ continue;
+ }
+ default:
+ {
+ DBG_ERROR( "FindVariable: Unbekannter Typ!" );
+ pVar = 0;
+ }
+ break;
+ }
+ if ( !pVar )
+ break;
+ }
+ }
+
+ return pVar;
+}
+
+BasicEntryDescriptor BasicTreeListBox::GetEntryDescriptor( SvLBoxEntry* pEntry )
+{
+ ScriptDocument aDocument( ScriptDocument::getApplicationScriptDocument() );
+ LibraryLocation eLocation = LIBRARY_LOCATION_UNKNOWN;
+ String aLibName;
+ String aLibSubName;
+ String aName;
+ String aMethodName;
+ BasicEntryType eType = OBJ_TYPE_UNKNOWN;
+
+ if ( !pEntry )
+ return BasicEntryDescriptor( aDocument, eLocation, aLibName, aLibSubName, aName, aMethodName, eType );
+
+ EntryArray aEntries;
+
+ while ( pEntry )
+ {
+ USHORT nDepth = GetModel()->GetDepth( pEntry );
+ switch ( nDepth )
+ {
+ case 4:
+ case 3:
+ case 2:
+ case 1:
+ {
+ aEntries.C40_INSERT( SvLBoxEntry, pEntry, 0 );
+ }
+ break;
+ case 0:
+ {
+ BasicDocumentEntry* pBasicDocumentEntry = (BasicDocumentEntry*)pEntry->GetUserData();
+ if ( pBasicDocumentEntry )
+ {
+ aDocument = pBasicDocumentEntry->GetDocument();
+ eLocation = pBasicDocumentEntry->GetLocation();
+ eType = OBJ_TYPE_DOCUMENT;
+ }
+ }
+ break;
+ }
+ pEntry = GetParent( pEntry );
+ }
+
+ if ( aEntries.Count() )
+ {
+ for ( USHORT n = 0; n < aEntries.Count(); n++ )
+ {
+ SvLBoxEntry* pLE = aEntries[n];
+ DBG_ASSERT( pLE, "Entrie im Array nicht gefunden" );
+ BasicEntry* pBE = (BasicEntry*)pLE->GetUserData();
+ DBG_ASSERT( pBE, "Keine Daten im Eintrag gefunden!" );
+
+ switch ( pBE->GetType() )
+ {
+ case OBJ_TYPE_LIBRARY:
+ {
+ aLibName = GetEntryText( pLE );
+ eType = pBE->GetType();
+ }
+ break;
+ case OBJ_TYPE_MODULE:
+ {
+ aName = GetEntryText( pLE );
+ eType = pBE->GetType();
+ }
+ break;
+ case OBJ_TYPE_METHOD:
+ {
+ aMethodName = GetEntryText( pLE );
+ eType = pBE->GetType();
+ }
+ break;
+ case OBJ_TYPE_DIALOG:
+ {
+ aName = GetEntryText( pLE );
+ eType = pBE->GetType();
+ }
+ break;
+ case OBJ_TYPE_DOCUMENT_OBJECTS:
+ case OBJ_TYPE_USERFORMS:
+ case OBJ_TYPE_NORMAL_MODULES:
+ case OBJ_TYPE_CLASS_MODULES:
+ {
+ aLibSubName = GetEntryText( pLE );
+ eType = pBE->GetType();
+ }
+ break;
+ default:
+ {
+ DBG_ERROR( "GetEntryDescriptor: Unbekannter Typ!" );
+ eType = OBJ_TYPE_UNKNOWN;
+ }
+ break;
+ }
+
+ if ( eType == OBJ_TYPE_UNKNOWN )
+ break;
+ }
+ }
+
+ return BasicEntryDescriptor( aDocument, eLocation, aLibName, aLibSubName, aName, aMethodName, eType );
+}
+
+USHORT BasicTreeListBox::ConvertType( BasicEntryType eType )
+{
+ USHORT nType = OBJ_TYPE_UNKNOWN;
+
+ switch ( eType )
+ {
+ case OBJ_TYPE_DOCUMENT:
+ {
+ nType = BASICIDE_TYPE_SHELL;
+ }
+ break;
+ case OBJ_TYPE_LIBRARY:
+ {
+ nType = BASICIDE_TYPE_LIBRARY;
+ }
+ break;
+ case OBJ_TYPE_MODULE:
+ {
+ nType = BASICIDE_TYPE_MODULE;
+ }
+ break;
+ case OBJ_TYPE_DIALOG:
+ {
+ nType = BASICIDE_TYPE_DIALOG;
+ }
+ break;
+ case OBJ_TYPE_METHOD:
+ {
+ nType = BASICIDE_TYPE_METHOD;
+ }
+ break;
+ default: ;
+ }
+
+ return nType;
+}
+
+bool BasicTreeListBox::IsValidEntry( SvLBoxEntry* pEntry )
+{
+ bool bIsValid = false;
+
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ LibraryLocation eLocation( aDesc.GetLocation() );
+ String aLibName( aDesc.GetLibName() );
+ String aName( aDesc.GetName() );
+ String aMethodName( aDesc.GetMethodName() );
+ BasicEntryType eType( aDesc.GetType() );
+
+ switch ( eType )
+ {
+ case OBJ_TYPE_DOCUMENT:
+ {
+ bIsValid = aDocument.isAlive()
+ && ( aDocument.isApplication()
+ || GetRootEntryName( aDocument, eLocation ) == GetEntryText( pEntry )
+ );
+ }
+ break;
+ case OBJ_TYPE_LIBRARY:
+ {
+ bIsValid = aDocument.hasLibrary( E_SCRIPTS, aLibName ) || aDocument.hasLibrary( E_DIALOGS, aLibName );
+ }
+ break;
+ case OBJ_TYPE_MODULE:
+ {
+ bIsValid = aDocument.hasModule( aLibName, aName );
+ }
+ break;
+ case OBJ_TYPE_DIALOG:
+ {
+ bIsValid = aDocument.hasDialog( aLibName, aName );
+ }
+ break;
+ case OBJ_TYPE_METHOD:
+ {
+ bIsValid = BasicIDE::HasMethod( aDocument, aLibName, aName, aMethodName );
+ }
+ break;
+ case OBJ_TYPE_DOCUMENT_OBJECTS:
+ case OBJ_TYPE_USERFORMS:
+ case OBJ_TYPE_NORMAL_MODULES:
+ case OBJ_TYPE_CLASS_MODULES:
+ {
+ bIsValid = true;
+ }
+ break;
+ default: ;
+ }
+
+ return bIsValid;
+}
+
+SbModule* BasicTreeListBox::FindModule( SvLBoxEntry* pEntry )
+{
+ SbxVariable* pVar = FindVariable( pEntry );
+ if ( pVar && pVar->IsA( TYPE(SbModule ) ) )
+ return (SbModule*)pVar;
+ return 0;
+}
+
+SvLBoxEntry* BasicTreeListBox::FindRootEntry( const ScriptDocument& rDocument, LibraryLocation eLocation )
+{
+ OSL_ENSURE( rDocument.isValid(), "BasicTreeListBox::FindRootEntry: invalid document!" );
+ ULONG nRootPos = 0;
+ SvLBoxEntry* pRootEntry = GetEntry( nRootPos );
+ while ( pRootEntry )
+ {
+ DBG_ASSERT( (((BasicEntry*)pRootEntry->GetUserData())->GetType() == OBJ_TYPE_DOCUMENT ), "Kein Shelleintrag?" );
+ BasicDocumentEntry* pBasicDocumentEntry = (BasicDocumentEntry*)pRootEntry->GetUserData();
+ if ( pBasicDocumentEntry && ( pBasicDocumentEntry->GetDocument() == rDocument ) && pBasicDocumentEntry->GetLocation() == eLocation )
+ return pRootEntry;
+ pRootEntry = GetEntry( ++nRootPos );
+ }
+ return 0;
+}
+
+String CreateMgrAndLibStr( const String& rMgrName, const String& rLibName )
+{
+ String aName( '[' );
+ aName += rMgrName;
+ aName += String( RTL_CONSTASCII_USTRINGPARAM( "]." ) );
+ aName += rLibName;
+ return aName;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/bastype3.hxx b/basctl/source/basicide/bastype3.hxx
new file mode 100644
index 000000000000..bc27eaa6cf90
--- /dev/null
+++ b/basctl/source/basicide/bastype3.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 _BASTYPE3_HXX
+#define _BASTYPE3_HXX
+
+#include <svheader.hxx>
+
+#include <svtools/svmedit.hxx>
+
+#include <iderid.hxx>
+
+class EditorWindow;
+
+#ifndef NO_SPECIALEDIT
+
+class ExtendedEdit : public Edit
+{
+private:
+ Accelerator aAcc;
+ Link aAccHdl;
+ Link aGotFocusHdl;
+ Link aLoseFocusHdl;
+
+protected:
+ DECL_LINK( EditAccHdl, Accelerator * );
+ DECL_LINK( ImplGetFocusHdl, Control* );
+ DECL_LINK( ImplLoseFocusHdl, Control* );
+
+public:
+ ExtendedEdit( Window* pParent, IDEResId nRes );
+
+ void SetAccHdl( const Link& rLink ) { aAccHdl = rLink; }
+ void SetLoseFocusHdl( const Link& rLink ) { aLoseFocusHdl = rLink; }
+ void SetGotFocusHdl( const Link& rLink ) { aGotFocusHdl = rLink; }
+ Accelerator& GetAccelerator() { return aAcc; }
+};
+
+#endif //NO_SPECIALEDIT
+
+#endif // _BASTYPE3_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/bastype4.hxx b/basctl/source/basicide/bastype4.hxx
new file mode 100644
index 000000000000..a65b286db99d
--- /dev/null
+++ b/basctl/source/basicide/bastype4.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 _BASTYPE4_HXX
+#define _BASTYPE4_HXX
+
+
+#include <svtools/tabbar.hxx>
+
+class EditEngine;
+class EditView;
+
+class ExtendedTabBar : public TabBar
+{
+ EditEngine* pEditEngine;
+ EditView* pEditView;
+ BOOL bIsInKeyInput;
+#if _SOLAR__PRIVATE
+ void ImpCheckEditEngine( BOOL bKeepNewText );
+#endif
+protected:
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void LoseFocus();
+ virtual void KeyInput( const KeyEvent& rKEvent );
+ virtual void Paint( const Rectangle& );
+
+ virtual BOOL StartRenamingTab( USHORT nCurId );
+ virtual BOOL AllowRenamingTab( USHORT nCurId, const String& rNewName );
+ virtual void TabRenamed( USHORT nCurId, const String& rNewName );
+
+public:
+ ExtendedTabBar( Window* pParent, WinBits nStyle );
+ ~ExtendedTabBar();
+
+ void RenameSelectedTab();
+ BOOL IsInEditMode() const { return pEditEngine ? TRUE : FALSE; }
+ void StopEditMode( BOOL bKeepCurText = FALSE );
+};
+
+#endif //_BASTYPE4_HXX
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/bastypes.cxx b/basctl/source/basicide/bastypes.cxx
new file mode 100644
index 000000000000..5faaf7988313
--- /dev/null
+++ b/basctl/source/basicide/bastypes.cxx
@@ -0,0 +1,1022 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include <vector>
+#include <algorithm>
+
+#include <ide_pch.hxx>
+
+
+#include <basic/sbx.hxx>
+#include <helpid.hrc>
+#include <basidesh.hrc>
+#include <bastypes.hxx>
+#include <bastype2.hxx>
+#include <baside2.hxx> // Leider brauche ich teilweise pModulWindow...
+#include <baside3.hxx>
+#include <baside2.hrc>
+#include <svtools/textview.hxx>
+#include <svtools/texteng.hxx>
+#include <basobj.hxx>
+#include <sbxitem.hxx>
+#include <iderdll.hxx>
+
+#include <sfx2/passwd.hxx>
+
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+#include <com/sun/star/script/ModuleType.hpp>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star;
+
+
+DBG_NAME( IDEBaseWindow )
+
+const char* pRegName = "BasicIDETabBar";
+
+TYPEINIT0( IDEBaseWindow )
+TYPEINIT1( SbxItem, SfxPoolItem );
+
+IDEBaseWindow::IDEBaseWindow( Window* pParent, const ScriptDocument& rDocument, String aLibName, String aName )
+ :Window( pParent, WinBits( WB_3DLOOK ) )
+ ,m_aDocument( rDocument )
+ ,m_aLibName( aLibName )
+ ,m_aName( aName )
+{
+ DBG_CTOR( IDEBaseWindow, 0 );
+ pShellHScrollBar = 0;
+ pShellVScrollBar = 0;
+ nStatus = 0;
+}
+
+
+
+__EXPORT IDEBaseWindow::~IDEBaseWindow()
+{
+ DBG_DTOR( IDEBaseWindow, 0 );
+ if ( pShellVScrollBar )
+ pShellVScrollBar->SetScrollHdl( Link() );
+ if ( pShellHScrollBar )
+ pShellHScrollBar->SetScrollHdl( Link() );
+}
+
+
+
+void IDEBaseWindow::Init()
+{
+ DBG_CHKTHIS( IDEBaseWindow, 0 );
+ if ( pShellVScrollBar )
+ pShellVScrollBar->SetScrollHdl( LINK( this, IDEBaseWindow, ScrollHdl ) );
+ if ( pShellHScrollBar )
+ pShellHScrollBar->SetScrollHdl( LINK( this, IDEBaseWindow, ScrollHdl ) );
+ DoInit(); // virtuell...
+}
+
+
+
+void __EXPORT IDEBaseWindow::DoInit()
+{
+}
+
+
+
+void IDEBaseWindow::GrabScrollBars( ScrollBar* pHScroll, ScrollBar* pVScroll )
+{
+ DBG_CHKTHIS( IDEBaseWindow, 0 );
+ pShellHScrollBar = pHScroll;
+ pShellVScrollBar = pVScroll;
+// Init(); // macht kein Sinn, fuehrt zu flackern, fuehr zu Fehlern...
+}
+
+
+
+IMPL_LINK_INLINE_START( IDEBaseWindow, ScrollHdl, ScrollBar *, pCurScrollBar )
+{
+ DBG_CHKTHIS( IDEBaseWindow, 0 );
+ DoScroll( pCurScrollBar );
+ return 0;
+}
+IMPL_LINK_INLINE_END( IDEBaseWindow, ScrollHdl, ScrollBar *, pCurScrollBar )
+
+
+
+void __EXPORT IDEBaseWindow::ExecuteCommand( SfxRequest& )
+{
+ DBG_CHKTHIS( IDEBaseWindow, 0 );
+}
+
+
+
+void __EXPORT IDEBaseWindow::GetState( SfxItemSet& )
+{
+ DBG_CHKTHIS( IDEBaseWindow, 0 );
+}
+
+
+long IDEBaseWindow::Notify( NotifyEvent& rNEvt )
+{
+ long nDone = 0;
+
+ if ( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ KeyEvent aKEvt = *rNEvt.GetKeyEvent();
+ KeyCode aCode = aKEvt.GetKeyCode();
+ USHORT nCode = aCode.GetCode();
+
+ switch ( nCode )
+ {
+ case KEY_PAGEUP:
+ case KEY_PAGEDOWN:
+ {
+ if ( aCode.IsMod1() )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ pIDEShell->NextPage( nCode == KEY_PAGEUP );
+
+ nDone = 1;
+ }
+ }
+ break;
+ }
+ }
+
+ return nDone ? nDone : Window::Notify( rNEvt );
+}
+
+
+void __EXPORT IDEBaseWindow::DoScroll( ScrollBar* )
+{
+ DBG_CHKTHIS( IDEBaseWindow, 0 );
+}
+
+
+void __EXPORT IDEBaseWindow::StoreData()
+{
+}
+
+BOOL __EXPORT IDEBaseWindow::CanClose()
+{
+ return TRUE;
+}
+
+BOOL __EXPORT IDEBaseWindow::AllowUndo()
+{
+ return TRUE;
+}
+
+
+
+void __EXPORT IDEBaseWindow::UpdateData()
+{
+}
+
+
+String __EXPORT IDEBaseWindow::GetTitle()
+{
+ return String();
+}
+
+
+
+String IDEBaseWindow::CreateQualifiedName()
+{
+ String aName;
+ if ( m_aLibName.Len() )
+ {
+ LibraryLocation eLocation = m_aDocument.getLibraryLocation( m_aLibName );
+ aName = m_aDocument.getTitle( eLocation );
+ aName += '.';
+ aName += m_aLibName;
+ aName += '.';
+ aName += GetTitle();
+ }
+
+ return aName;
+}
+
+void IDEBaseWindow::SetReadOnly( BOOL )
+{
+}
+
+BOOL IDEBaseWindow::IsReadOnly()
+{
+ return FALSE;
+}
+
+void __EXPORT IDEBaseWindow::BasicStarted()
+{
+}
+
+void __EXPORT IDEBaseWindow::BasicStopped()
+{
+}
+
+BOOL __EXPORT IDEBaseWindow::IsModified()
+{
+ return TRUE;
+}
+
+BOOL __EXPORT IDEBaseWindow::IsPasteAllowed()
+{
+ return FALSE;
+}
+
+Window* __EXPORT IDEBaseWindow::GetLayoutWindow()
+{
+ return this;
+}
+
+SfxUndoManager* __EXPORT IDEBaseWindow::GetUndoManager()
+{
+ return NULL;
+}
+
+BreakPointList::BreakPointList()
+{}
+
+BreakPointList::BreakPointList(BreakPointList const & rList):
+ BreakPL( sal::static_int_cast<USHORT>( rList.Count() ))
+{
+ for (ULONG i = 0; i < rList.Count(); ++i)
+ Insert(new BreakPoint(*rList.GetObject(i)), i);
+}
+
+BreakPointList::~BreakPointList()
+{
+ reset();
+}
+
+void BreakPointList::reset()
+{
+ while (Count() > 0)
+ delete Remove(Count() - 1);
+}
+
+void BreakPointList::transfer(BreakPointList & rList)
+{
+ reset();
+ for (ULONG i = 0; i < rList.Count(); ++i)
+ Insert(rList.GetObject(i), i);
+ rList.Clear();
+}
+
+void BreakPointList::InsertSorted( BreakPoint* pNewBrk )
+{
+ BreakPoint* pBrk = First();
+ while ( pBrk )
+ {
+ if ( pNewBrk->nLine <= pBrk->nLine )
+ {
+ DBG_ASSERT( ( pBrk->nLine != pNewBrk->nLine ) || pNewBrk->bTemp, "BreakPoint existiert schon!" );
+ Insert( pNewBrk );
+ return;
+ }
+ pBrk = Next();
+ }
+ // Keine Einfuegeposition gefunden => LIST_APPEND
+ Insert( pNewBrk, LIST_APPEND );
+}
+
+void BreakPointList::SetBreakPointsInBasic( SbModule* pModule )
+{
+ pModule->ClearAllBP();
+
+ BreakPoint* pBrk = First();
+ while ( pBrk )
+ {
+ if ( pBrk->bEnabled )
+ pModule->SetBP( (USHORT)pBrk->nLine );
+ pBrk = Next();
+ }
+}
+
+BreakPoint* BreakPointList::FindBreakPoint( ULONG nLine )
+{
+ BreakPoint* pBrk = First();
+ while ( pBrk )
+ {
+ if ( pBrk->nLine == nLine )
+ return pBrk;
+
+ pBrk = Next();
+ }
+
+ return (BreakPoint*)0;
+}
+
+
+
+void BreakPointList::AdjustBreakPoints( ULONG nLine, BOOL bInserted )
+{
+ BreakPoint* pBrk = First();
+ while ( pBrk )
+ {
+ BOOL bDelBrk = FALSE;
+ if ( pBrk->nLine == nLine )
+ {
+ if ( bInserted )
+ pBrk->nLine++;
+ else
+ bDelBrk = TRUE;
+ }
+ else if ( pBrk->nLine > nLine )
+ {
+ if ( bInserted )
+ pBrk->nLine++;
+ else
+ pBrk->nLine--;
+ }
+
+ if ( bDelBrk )
+ {
+ ULONG n = GetCurPos();
+ delete Remove( pBrk );
+ pBrk = Seek( n );
+ }
+ else
+ {
+ pBrk = Next();
+ }
+ }
+}
+
+void BreakPointList::ResetHitCount()
+{
+ BreakPoint* pBrk = First();
+ while ( pBrk )
+ {
+ pBrk->nHitCount = 0;
+ pBrk = Next();
+ }
+}
+
+void IDEBaseWindow::Deactivating()
+{
+}
+
+USHORT __EXPORT IDEBaseWindow::GetSearchOptions()
+{
+ return 0;
+}
+
+
+BasicDockingWindow::BasicDockingWindow( Window* pParent ) :
+ DockingWindow( pParent, WB_BORDER | WB_3DLOOK | WB_DOCKABLE | WB_MOVEABLE |
+ WB_SIZEABLE | WB_ROLLABLE |
+ WB_DOCKABLE | WB_CLIPCHILDREN )
+{
+}
+
+
+
+BOOL __EXPORT BasicDockingWindow::Docking( const Point& rPos, Rectangle& rRect )
+{
+ ModulWindowLayout* pLayout = (ModulWindowLayout*)GetParent();
+ Rectangle aTmpRec( rRect );
+ BOOL bDock = IsDockingPrevented() ? FALSE : pLayout->IsToBeDocked( this, rPos, aTmpRec );
+ if ( bDock )
+ {
+ rRect.SetSize( aTmpRec.GetSize() );
+ }
+ else // Alte Groesse einstellen
+ {
+ if ( !aFloatingPosAndSize.IsEmpty() )
+ rRect.SetSize( aFloatingPosAndSize.GetSize() );
+ }
+ return !bDock; // bFloat
+}
+
+
+
+void __EXPORT BasicDockingWindow::EndDocking( const Rectangle& rRect, BOOL bFloatMode )
+{
+ if ( bFloatMode )
+ DockingWindow::EndDocking( rRect, bFloatMode );
+ else
+ {
+ SetFloatingMode( FALSE );
+ ModulWindowLayout* pLayout = (ModulWindowLayout*)GetParent();
+ pLayout->DockaWindow( this );
+ }
+}
+
+
+
+void __EXPORT BasicDockingWindow::ToggleFloatingMode()
+{
+ ModulWindowLayout* pLayout = (ModulWindowLayout*)GetParent();
+ if ( IsFloatingMode() )
+ {
+ if ( !aFloatingPosAndSize.IsEmpty() )
+ SetPosSizePixel( GetParent()->ScreenToOutputPixel( aFloatingPosAndSize.TopLeft() ),
+ aFloatingPosAndSize.GetSize() );
+ }
+ pLayout->DockaWindow( this );
+}
+
+
+
+BOOL __EXPORT BasicDockingWindow::PrepareToggleFloatingMode()
+{
+ if ( IsFloatingMode() )
+ {
+ // Position und Groesse auf dem Desktop merken...
+ aFloatingPosAndSize.SetPos( GetParent()->OutputToScreenPixel( GetPosPixel() ) );
+ aFloatingPosAndSize.SetSize( GetSizePixel() );
+ }
+ return TRUE;
+}
+
+
+
+void __EXPORT BasicDockingWindow::StartDocking()
+{
+ // Position und Groesse auf dem Desktop merken...
+ if ( IsFloatingMode() )
+ {
+ aFloatingPosAndSize.SetPos( GetParent()->OutputToScreenPixel( GetPosPixel() ) );
+ aFloatingPosAndSize.SetSize( GetSizePixel() );
+ }
+}
+
+
+
+ExtendedEdit::ExtendedEdit( Window* pParent, IDEResId nRes ) :
+ Edit( pParent, nRes )
+{
+ aAcc.SetSelectHdl( LINK( this, ExtendedEdit, EditAccHdl ) );
+ Control::SetGetFocusHdl( LINK( this, ExtendedEdit, ImplGetFocusHdl ) );
+ Control::SetLoseFocusHdl( LINK( this, ExtendedEdit, ImplLoseFocusHdl ) );
+}
+
+IMPL_LINK( ExtendedEdit, ImplGetFocusHdl, Control*, EMPTYARG )
+{
+ Application::InsertAccel( &aAcc );
+ aLoseFocusHdl.Call( this );
+ return 0;
+}
+
+
+IMPL_LINK( ExtendedEdit, ImplLoseFocusHdl, Control*, EMPTYARG )
+{
+ Application::RemoveAccel( &aAcc );
+ return 0;
+}
+
+
+IMPL_LINK_INLINE_START( ExtendedEdit, EditAccHdl, Accelerator *, pAcc )
+{
+ aAccHdl.Call( pAcc );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ExtendedEdit, EditAccHdl, Accelerator *, pAcc )
+
+
+
+struct TabBarDDInfo
+{
+ ULONG npTabBar;
+ USHORT nPage;
+
+ TabBarDDInfo() { npTabBar = 0; nPage = 0; }
+ TabBarDDInfo( ULONG _npTabBar, USHORT _nPage ) { npTabBar = _npTabBar; nPage = _nPage; }
+};
+
+
+BasicIDETabBar::BasicIDETabBar( Window* pParent ) :
+ TabBar( pParent, WinBits( WB_3DLOOK | WB_SCROLL | WB_BORDER | WB_SIZEABLE | WB_DRAG ) )
+{
+ EnableEditMode( TRUE );
+
+ SetHelpId( HID_BASICIDE_TABBAR );
+}
+
+void __EXPORT BasicIDETabBar::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if ( rMEvt.IsLeft() && ( rMEvt.GetClicks() == 2 ) && !IsInEditMode() )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_MODULEDLG );
+ }
+ }
+ else
+ {
+ TabBar::MouseButtonDown( rMEvt );
+ }
+}
+
+void __EXPORT BasicIDETabBar::Command( const CommandEvent& rCEvt )
+{
+ if ( ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU ) && !IsInEditMode() )
+ {
+ Point aPos( rCEvt.IsMouseEvent() ? rCEvt.GetMousePosPixel() : Point(1,1) );
+ if ( rCEvt.IsMouseEvent() ) // Richtige Tab selektieren
+ {
+ Point aP = PixelToLogic( aPos );
+ MouseEvent aMouseEvent( aP, 1, MOUSE_SIMPLECLICK, MOUSE_LEFT );
+ TabBar::MouseButtonDown( aMouseEvent );
+ }
+
+ PopupMenu aPopup( IDEResId( RID_POPUP_TABBAR ) );
+ if ( GetPageCount() == 0 )
+ {
+ aPopup.EnableItem( SID_BASICIDE_DELETECURRENT, FALSE );
+ aPopup.EnableItem( SID_BASICIDE_RENAMECURRENT, FALSE );
+ aPopup.EnableItem( SID_BASICIDE_HIDECURPAGE, FALSE );
+ }
+
+ if ( StarBASIC::IsRunning() )
+ {
+ aPopup.EnableItem(SID_BASICIDE_DELETECURRENT, false);
+ aPopup.EnableItem( SID_BASICIDE_RENAMECURRENT, false);
+ aPopup.EnableItem(SID_BASICIDE_MODULEDLG, false);
+ }
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ {
+ ScriptDocument aDocument( pIDEShell->GetCurDocument() );
+ ::rtl::OUString aOULibName( pIDEShell->GetCurLibName() );
+ Reference< script::XLibraryContainer2 > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) )
+ {
+ aPopup.EnableItem( aPopup.GetItemId( 0 ), FALSE );
+ aPopup.EnableItem( SID_BASICIDE_DELETECURRENT, FALSE );
+ aPopup.EnableItem( SID_BASICIDE_RENAMECURRENT, FALSE );
+ aPopup.RemoveDisabledEntries();
+ }
+ if ( aDocument.isInVBAMode() )
+ {
+ // disable to delete or remove object modules in IDE
+ BasicManager* pBasMgr = aDocument.getBasicManager();
+ if ( pBasMgr )
+ {
+ StarBASIC* pBasic = pBasMgr->GetLib( aOULibName );
+ if( pBasic )
+ {
+ IDEWindowTable& aIDEWindowTable = pIDEShell->GetIDEWindowTable();
+ IDEBaseWindow* pWin = aIDEWindowTable.Get( GetCurPageId() );
+ if( pWin && pWin->ISA( ModulWindow ) )
+ {
+ SbModule* pActiveModule = (SbModule*)pBasic->FindModule( pWin->GetName() );
+ if( pActiveModule && ( pActiveModule->GetModuleType() == script::ModuleType::DOCUMENT ) )
+ {
+ aPopup.EnableItem( SID_BASICIDE_DELETECURRENT, FALSE );
+ aPopup.EnableItem( SID_BASICIDE_RENAMECURRENT, FALSE );
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if ( pDispatcher )
+ pDispatcher->Execute( aPopup.Execute( this, aPos ) );
+ }
+}
+
+long BasicIDETabBar::AllowRenaming()
+{
+ BOOL bValid = BasicIDE::IsValidSbxName( GetEditText() );
+
+ if ( !bValid )
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
+
+ return bValid ? TABBAR_RENAMING_YES : TABBAR_RENAMING_NO;
+}
+
+
+void __EXPORT BasicIDETabBar::EndRenaming()
+{
+ if ( !IsEditModeCanceled() )
+ {
+ SfxUInt16Item aID( SID_BASICIDE_ARG_TABID, GetEditPageId() );
+ SfxStringItem aNewName( SID_BASICIDE_ARG_MODULENAME, GetEditText() );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_NAMECHANGEDONTAB,
+ SFX_CALLMODE_SYNCHRON, &aID, &aNewName, 0L );
+ }
+ }
+}
+
+
+void BasicIDETabBar::Sort()
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ {
+ IDEWindowTable& aIDEWindowTable = pIDEShell->GetIDEWindowTable();
+ TabBarSortHelper aTabBarSortHelper;
+ ::std::vector<TabBarSortHelper> aModuleList;
+ ::std::vector<TabBarSortHelper> aDialogList;
+ USHORT nPageCount = GetPageCount();
+ USHORT i;
+
+ // create module and dialog lists for sorting
+ for ( i = 0; i < nPageCount; i++)
+ {
+ USHORT nId = GetPageId( i );
+ aTabBarSortHelper.nPageId = nId;
+ aTabBarSortHelper.aPageText = GetPageText( nId );
+ IDEBaseWindow* pWin = aIDEWindowTable.Get( nId );
+
+ if ( pWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ aModuleList.push_back( aTabBarSortHelper );
+ }
+ else if ( pWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ aDialogList.push_back( aTabBarSortHelper );
+ }
+ }
+
+ // sort module and dialog lists by page text
+ ::std::sort( aModuleList.begin() , aModuleList.end() );
+ ::std::sort( aDialogList.begin() , aDialogList.end() );
+
+
+ USHORT nModules = sal::static_int_cast<USHORT>( aModuleList.size() );
+ USHORT nDialogs = sal::static_int_cast<USHORT>( aDialogList.size() );
+
+ // move module pages to new positions
+ for (i = 0; i < nModules; i++)
+ {
+ MovePage( aModuleList[i].nPageId , i );
+ }
+
+ // move dialog pages to new positions
+ for (i = 0; i < nDialogs; i++)
+ {
+ MovePage( aDialogList[i].nPageId , nModules + i );
+ }
+ }
+}
+
+void CutLines( ::rtl::OUString& rStr, sal_Int32 nStartLine, sal_Int32 nLines, BOOL bEraseTrailingEmptyLines )
+{
+ sal_Int32 nStartPos = 0;
+ sal_Int32 nEndPos = 0;
+ sal_Int32 nLine = 0;
+ while ( nLine < nStartLine )
+ {
+ nStartPos = searchEOL( rStr, nStartPos );
+ if( nStartPos == -1 )
+ break;
+ nStartPos++; // nicht das \n.
+ nLine++;
+ }
+
+ DBG_ASSERTWARNING( nStartPos != -1, "CutLines: Startzeile nicht gefunden!" );
+
+ if ( nStartPos != -1 )
+ {
+ nEndPos = nStartPos;
+ for ( sal_Int32 i = 0; i < nLines; i++ )
+ nEndPos = searchEOL( rStr, nEndPos+1 );
+
+ if ( nEndPos == -1 ) // kann bei letzter Zeile passieren
+ nEndPos = rStr.getLength();
+ else
+ nEndPos++;
+
+ ::rtl::OUString aEndStr = rStr.copy( nEndPos );
+ rStr = rStr.copy( 0, nStartPos );
+ rStr += aEndStr;
+ }
+ if ( bEraseTrailingEmptyLines )
+ {
+ sal_Int32 n = nStartPos;
+ sal_Int32 nLen = rStr.getLength();
+ while ( ( n < nLen ) && ( rStr.getStr()[ n ] == LINE_SEP ||
+ rStr.getStr()[ n ] == LINE_SEP_CR ) )
+ {
+ n++;
+ }
+
+ if ( n > nStartPos )
+ {
+ ::rtl::OUString aEndStr = rStr.copy( n );
+ rStr = rStr.copy( 0, nStartPos );
+ rStr += aEndStr;
+ }
+ }
+}
+
+ULONG CalcLineCount( SvStream& rStream )
+{
+ ULONG nLFs = 0;
+ ULONG nCRs = 0;
+ char c;
+
+ rStream.Seek( 0 );
+ rStream >> c;
+ while ( !rStream.IsEof() )
+ {
+ if ( c == '\n' )
+ nLFs++;
+ else if ( c == '\r' )
+ nCRs++;
+ rStream >> c;
+ }
+
+ rStream.Seek( 0 );
+ if ( nLFs > nCRs )
+ return nLFs;
+ return nCRs;
+}
+
+LibInfoKey::LibInfoKey( const ScriptDocument& rDocument, const String& rLibName )
+ :m_aDocument( rDocument )
+ ,m_aLibName( rLibName )
+{
+}
+
+LibInfoKey::~LibInfoKey()
+{
+}
+
+LibInfoKey::LibInfoKey( const LibInfoKey& rKey )
+ :m_aDocument( rKey.m_aDocument )
+ ,m_aLibName( rKey.m_aLibName )
+{
+}
+
+LibInfoKey& LibInfoKey::operator=( const LibInfoKey& rKey )
+{
+ m_aDocument = rKey.m_aDocument;
+ m_aLibName = rKey.m_aLibName;
+ return *this;
+}
+
+bool LibInfoKey::operator==( const LibInfoKey& rKey ) const
+{
+ bool bRet = false;
+ if ( m_aDocument == rKey.m_aDocument && m_aLibName == rKey.m_aLibName )
+ bRet = true;
+ return bRet;
+}
+
+LibInfoItem::LibInfoItem( const ScriptDocument& rDocument, const String& rLibName, const String& rCurrentName, USHORT nCurrentType )
+ :m_aDocument( rDocument )
+ ,m_aLibName( rLibName )
+ ,m_aCurrentName( rCurrentName )
+ ,m_nCurrentType( nCurrentType )
+{
+}
+
+LibInfoItem::~LibInfoItem()
+{
+}
+
+LibInfoItem::LibInfoItem( const LibInfoItem& rItem )
+ :m_aDocument( rItem.m_aDocument )
+ ,m_aLibName( rItem.m_aLibName )
+ ,m_aCurrentName( rItem.m_aCurrentName )
+ ,m_nCurrentType( rItem.m_nCurrentType )
+{
+}
+
+LibInfoItem& LibInfoItem::operator=( const LibInfoItem& rItem )
+{
+ m_aDocument = rItem.m_aDocument;
+ m_aLibName = rItem.m_aLibName;
+ m_aCurrentName = rItem.m_aCurrentName;
+ m_nCurrentType = rItem.m_nCurrentType;
+
+ return *this;
+}
+
+LibInfos::LibInfos()
+{
+}
+
+LibInfos::~LibInfos()
+{
+ LibInfoMap::iterator end = m_aLibInfoMap.end();
+ for ( LibInfoMap::iterator it = m_aLibInfoMap.begin(); it != end; ++it )
+ delete it->second;
+ m_aLibInfoMap.clear();
+}
+
+void LibInfos::InsertInfo( LibInfoItem* pItem )
+{
+ LibInfoKey aKey( pItem->GetDocument(), pItem->GetLibName() );
+ LibInfoMap::iterator it = m_aLibInfoMap.find( aKey );
+ if ( it != m_aLibInfoMap.end() )
+ {
+ LibInfoItem* pI = it->second;
+ m_aLibInfoMap.erase( it );
+ delete pI;
+ }
+ m_aLibInfoMap.insert( LibInfoMap::value_type( aKey, pItem ) );
+}
+
+void LibInfos::RemoveInfoFor( const ScriptDocument& _rDocument )
+{
+ for ( LibInfoMap::iterator it = m_aLibInfoMap.begin();
+ it != m_aLibInfoMap.end();
+ )
+ {
+ if ( it->first.GetDocument() != _rDocument )
+ {
+ ++it;
+ continue;
+ }
+
+ LibInfoItem* pItem = it->second;
+
+ LibInfoMap::iterator next_it = it; ++next_it;
+ m_aLibInfoMap.erase( it );
+ it = next_it;
+
+ delete pItem;
+ }
+}
+
+LibInfoItem* LibInfos::GetInfo( const LibInfoKey& rKey )
+{
+ LibInfoItem* pItem = 0;
+ LibInfoMap::iterator it = m_aLibInfoMap.find( rKey );
+ if ( it != m_aLibInfoMap.end() )
+ pItem = it->second;
+ return pItem;
+}
+
+SbxItem::SbxItem(USHORT nWhich_, const ScriptDocument& rDocument, const String& aLibName, const String& aName, USHORT nType )
+ :SfxPoolItem( nWhich_ )
+ ,m_aDocument(rDocument)
+ ,m_aLibName(aLibName)
+ ,m_aName(aName)
+ ,m_nType(nType)
+{
+}
+
+SbxItem::SbxItem(USHORT nWhich_, const ScriptDocument& rDocument, const String& aLibName, const String& aName, const String& aMethodName, USHORT nType )
+ :SfxPoolItem( nWhich_ )
+ ,m_aDocument(rDocument)
+ ,m_aLibName(aLibName)
+ ,m_aName(aName)
+ ,m_aMethodName(aMethodName)
+ ,m_nType(nType)
+{
+}
+
+SbxItem::SbxItem(const SbxItem& rCopy)
+ :SfxPoolItem( rCopy )
+ ,m_aDocument( rCopy.m_aDocument )
+{
+ m_aLibName = rCopy.m_aLibName;
+ m_aName = rCopy.m_aName;
+ m_aMethodName = rCopy.m_aMethodName;
+ m_nType = rCopy.m_nType;
+}
+
+int SbxItem::operator==( const SfxPoolItem& rCmp) const
+{
+ DBG_ASSERT( rCmp.ISA( SbxItem ), "==: Kein SbxItem!" );
+ return ( SfxPoolItem::operator==( rCmp ) && ( m_aDocument == ((const SbxItem&)rCmp).m_aDocument )
+ && ( m_aLibName == ((const SbxItem&)rCmp).m_aLibName )
+ && ( m_aName == ((const SbxItem&)rCmp).m_aName )
+ && ( m_aMethodName == ((const SbxItem&)rCmp).m_aMethodName )
+ && ( m_nType == ((const SbxItem&)rCmp).m_nType ) );
+}
+
+SfxPoolItem *SbxItem::Clone( SfxItemPool* ) const
+{
+ return new SbxItem(*this);
+}
+
+BOOL QueryDel( const String& rName, const ResId& rId, Window* pParent )
+{
+ String aQuery( rId );
+ String aName( rName );
+ aName += '\'';
+ aName.Insert( '\'', 0 );
+ aQuery.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), aName );
+ QueryBox aQueryBox( pParent, WB_YES_NO | WB_DEF_YES, aQuery );
+ if ( aQueryBox.Execute() == RET_YES )
+ return TRUE;
+ return FALSE;
+}
+
+BOOL QueryDelMacro( const String& rName, Window* pParent )
+{
+ return QueryDel( rName, IDEResId( RID_STR_QUERYDELMACRO ), pParent );
+}
+
+BOOL QueryReplaceMacro( const String& rName, Window* pParent )
+{
+ return QueryDel( rName, IDEResId( RID_STR_QUERYREPLACEMACRO ), pParent );
+}
+
+BOOL QueryDelDialog( const String& rName, Window* pParent )
+{
+ return QueryDel( rName, IDEResId( RID_STR_QUERYDELDIALOG ), pParent );
+}
+
+BOOL QueryDelLib( const String& rName, BOOL bRef, Window* pParent )
+{
+ return QueryDel( rName, IDEResId( bRef ? RID_STR_QUERYDELLIBREF : RID_STR_QUERYDELLIB ), pParent );
+}
+
+BOOL QueryDelModule( const String& rName, Window* pParent )
+{
+ return QueryDel( rName, IDEResId( RID_STR_QUERYDELMODULE ), pParent );
+}
+
+BOOL QueryPassword( const Reference< script::XLibraryContainer >& xLibContainer, const String& rLibName, String& rPassword, BOOL bRepeat, BOOL bNewTitle )
+{
+ BOOL bOK = FALSE;
+ USHORT nRet = 0;
+
+ do
+ {
+ // password dialog
+ SfxPasswordDialog* pDlg = new SfxPasswordDialog( Application::GetDefDialogParent() );
+ pDlg->SetMinLen( 1 );
+
+ // set new title
+ if ( bNewTitle )
+ {
+ String aTitle( IDEResId( RID_STR_ENTERPASSWORD ) );
+ aTitle.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), rLibName );
+ pDlg->SetText( aTitle );
+ }
+
+ // execute dialog
+ nRet = pDlg->Execute();
+
+ // verify password
+ if ( nRet == RET_OK )
+ {
+ ::rtl::OUString aOULibName( rLibName );
+ if ( xLibContainer.is() && xLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ rPassword = pDlg->GetPassword();
+ ::rtl::OUString aOUPassword( rPassword );
+ bOK = xPasswd->verifyLibraryPassword( aOULibName, aOUPassword );
+
+ if ( !bOK )
+ {
+ ErrorBox aErrorBox( Application::GetDefDialogParent(), WB_OK, String( IDEResId( RID_STR_WRONGPASSWORD ) ) );
+ aErrorBox.Execute();
+ }
+ }
+ }
+ }
+
+ delete pDlg;
+ }
+ while ( bRepeat && !bOK && nRet == RET_OK );
+
+ return bOK;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/brkdlg.cxx b/basctl/source/basicide/brkdlg.cxx
new file mode 100644
index 000000000000..34a1f8f62c94
--- /dev/null
+++ b/basctl/source/basicide/brkdlg.cxx
@@ -0,0 +1,282 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <limits>
+
+#include <vcl/sound.hxx>
+
+// #define ITEMID_SEARCH SID_SEARCH_ITEM
+#define _SVX_NOIDERESIDS
+#include <brkdlg.hxx>
+#include <brkdlg.hrc>
+#include <basidesh.hxx>
+#include <basidesh.hrc>
+#include <iderdll.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/viewfrm.hxx>
+
+// FIXME Why does BreakPointDialog allow only USHORT for break-point line
+// numbers, whereas BreakPoint supports ULONG?
+
+bool lcl_ParseText( String aText, USHORT& rLineNr )
+{
+ // aText should look like "# n" where
+ // n > 0 && n < std::numeric_limits< USHORT >::max().
+ // All spaces are ignored, so there can even be spaces within the
+ // number n. (Maybe it would be better to ignore all whitespace instead
+ // of just spaces.)
+ aText.EraseAllChars(' ');
+ sal_Unicode cFirst = aText.GetChar(0);
+ if (cFirst != '#' && !(cFirst >= '0' && cFirst <= '9'))
+ return false;
+ if (cFirst == '#')
+ aText.Erase(0, 1);
+ // XXX Assumes that USHORT is contained within sal_Int32:
+ sal_Int32 n = aText.ToInt32();
+ if (n <= 0 || n > std::numeric_limits< USHORT >::max())
+ return false;
+ rLineNr = static_cast< USHORT >(n);
+ return true;
+}
+
+BreakPointDialog::BreakPointDialog( Window* pParent, BreakPointList& rBrkPntList ) :
+ ModalDialog( pParent, IDEResId( RID_BASICIDE_BREAKPOINTDLG ) ),
+ aComboBox( this, IDEResId( RID_CB_BRKPOINTS ) ),
+ aOKButton( this, IDEResId( RID_PB_OK ) ),
+ aCancelButton( this, IDEResId( RID_PB_CANCEL ) ),
+ aNewButton( this, IDEResId( RID_PB_NEW ) ),
+ aDelButton( this, IDEResId( RID_PB_DEL ) ),
+ aCheckBox( this, IDEResId( RID_CHKB_ACTIVE ) ),
+ aBrkText( this, IDEResId( RID_FT_BRKPOINTS ) ),
+ aPassText( this, IDEResId( RID_FT_PASS ) ),
+ aNumericField( this, IDEResId( RID_FLD_PASS ) ),
+ m_rOriginalBreakPointList(rBrkPntList),
+ m_aModifiedBreakPointList(rBrkPntList)
+{
+ FreeResource();
+
+ aComboBox.SetUpdateMode( FALSE );
+ BreakPoint* pBrk = m_aModifiedBreakPointList.First();
+ BreakPoint* pFirstBrk = pBrk;
+ while ( pBrk )
+ {
+ String aEntryStr( RTL_CONSTASCII_USTRINGPARAM( "# " ) );
+ aEntryStr += String::CreateFromInt32( pBrk->nLine );
+ aComboBox.InsertEntry( aEntryStr, COMBOBOX_APPEND );
+ pBrk = m_aModifiedBreakPointList.Next();
+ }
+ aComboBox.SetUpdateMode( TRUE );
+
+ aOKButton.SetClickHdl( LINK( this, BreakPointDialog, ButtonHdl ) );
+ aNewButton.SetClickHdl( LINK( this, BreakPointDialog, ButtonHdl ) );
+ aDelButton.SetClickHdl( LINK( this, BreakPointDialog, ButtonHdl ) );
+// aShowButton.SetClickHdl( LINK( this, BreakPointDialog, ButtonHdl ) );
+
+ aCheckBox.SetClickHdl( LINK( this, BreakPointDialog, CheckBoxHdl ) );
+ aComboBox.SetSelectHdl( LINK( this, BreakPointDialog, ComboBoxHighlightHdl ) );
+ aComboBox.SetModifyHdl( LINK( this, BreakPointDialog, EditModifyHdl ) );
+ aComboBox.GrabFocus();
+
+ aNumericField.SetMin( 0 );
+ aNumericField.SetMax( 0x7FFFFFFF );
+ aNumericField.SetSpinSize( 1 );
+ aNumericField.SetStrictFormat( TRUE );
+ aNumericField.SetModifyHdl( LINK( this, BreakPointDialog, EditModifyHdl ) );
+
+ aComboBox.SetText( aComboBox.GetEntry( 0 ) );
+ UpdateFields( pFirstBrk );
+
+ CheckButtons();
+}
+
+void BreakPointDialog::SetCurrentBreakPoint( BreakPoint* pBrk )
+{
+ String aStr( RTL_CONSTASCII_USTRINGPARAM( "# " ) );
+ aStr += String::CreateFromInt32( pBrk->nLine );
+ aComboBox.SetText( aStr );
+ UpdateFields( pBrk );
+}
+
+void BreakPointDialog::CheckButtons()
+{
+ // "New" button is enabled if the combo box edit contains a valid line
+ // number that is not already present in the combo box list; otherwise
+ // "OK" and "Delete" buttons are enabled:
+ USHORT nLine;
+ if (lcl_ParseText(aComboBox.GetText(), nLine)
+ && m_aModifiedBreakPointList.FindBreakPoint(nLine) == 0)
+ {
+ aNewButton.Enable();
+ aOKButton.Disable();
+ aDelButton.Disable();
+ }
+ else
+ {
+ aNewButton.Disable();
+ aOKButton.Enable();
+ aDelButton.Enable();
+ }
+}
+
+IMPL_LINK_INLINE_START( BreakPointDialog, CheckBoxHdl, CheckBox *, pChkBx )
+{
+ BreakPoint* pBrk = GetSelectedBreakPoint();
+ if ( pBrk )
+ pBrk->bEnabled = pChkBx->IsChecked();
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( BreakPointDialog, CheckBoxHdl, CheckBox *, pChkBx )
+
+
+
+IMPL_LINK( BreakPointDialog, ComboBoxHighlightHdl, ComboBox *, pBox )
+{
+ aNewButton.Disable();
+ aOKButton.Enable();
+ aDelButton.Enable();
+
+ USHORT nEntry = pBox->GetEntryPos( pBox->GetText() );
+ BreakPoint* pBrk = m_aModifiedBreakPointList.GetObject( nEntry );
+ DBG_ASSERT( pBrk, "Kein passender Breakpoint zur Liste ?" );
+ UpdateFields( pBrk );
+
+ return 0;
+}
+
+
+
+IMPL_LINK( BreakPointDialog, EditModifyHdl, Edit *, pEdit )
+{
+ if ( pEdit == &aComboBox )
+ CheckButtons();
+ else if ( pEdit == &aNumericField )
+ {
+ BreakPoint* pBrk = GetSelectedBreakPoint();
+ if ( pBrk )
+ pBrk->nStopAfter = pEdit->GetText().ToInt32();
+ }
+ return 0;
+}
+
+
+
+IMPL_LINK( BreakPointDialog, ButtonHdl, Button *, pButton )
+{
+ if ( pButton == &aOKButton )
+ {
+ m_rOriginalBreakPointList.transfer(m_aModifiedBreakPointList);
+ EndDialog( 1 );
+ }
+ else if ( pButton == &aNewButton )
+ {
+ // Checkbox beruecksichtigen!
+ String aText( aComboBox.GetText() );
+ USHORT nLine;
+ BOOL bValid = lcl_ParseText( aText, nLine );
+ if ( bValid )
+ {
+ BreakPoint* pBrk = new BreakPoint( nLine );
+ pBrk->bEnabled = aCheckBox.IsChecked();
+ pBrk->nStopAfter = (ULONG) aNumericField.GetValue();
+ m_aModifiedBreakPointList.InsertSorted( pBrk );
+ String aEntryStr( RTL_CONSTASCII_USTRINGPARAM( "# " ) );
+ aEntryStr += String::CreateFromInt32( pBrk->nLine );
+ aComboBox.InsertEntry( aEntryStr, COMBOBOX_APPEND );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
+ }
+ }
+ else
+ {
+ aComboBox.SetText( aText );
+ aComboBox.GrabFocus();
+ Sound::Beep();
+ }
+ CheckButtons();
+ }
+ else if ( pButton == &aDelButton )
+ {
+ USHORT nEntry = aComboBox.GetEntryPos( aComboBox.GetText() );
+ BreakPoint* pBrk = m_aModifiedBreakPointList.GetObject( nEntry );
+ if ( pBrk )
+ {
+ delete m_aModifiedBreakPointList.Remove( pBrk );
+ aComboBox.RemoveEntry( nEntry );
+ if ( nEntry && !( nEntry < aComboBox.GetEntryCount() ) )
+ nEntry--;
+ aComboBox.SetText( aComboBox.GetEntry( nEntry ) );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
+ }
+ }
+ CheckButtons();
+ }
+// else if ( pButton == &aShowButton )
+// {
+// ;
+// }
+
+ return 0;
+}
+
+
+
+void BreakPointDialog::UpdateFields( BreakPoint* pBrk )
+{
+ if ( pBrk )
+ {
+ aCheckBox.Check( pBrk->bEnabled );
+ aNumericField.SetValue( pBrk->nStopAfter );
+ }
+}
+
+
+
+BreakPoint* BreakPointDialog::GetSelectedBreakPoint()
+{
+ USHORT nEntry = aComboBox.GetEntryPos( aComboBox.GetText() );
+ BreakPoint* pBrk = m_aModifiedBreakPointList.GetObject( nEntry );
+ return pBrk;
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/brkdlg.hrc b/basctl/source/basicide/brkdlg.hrc
new file mode 100644
index 000000000000..921990d35e6c
--- /dev/null
+++ b/basctl/source/basicide/brkdlg.hrc
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * 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 _BRKDLG_HRC
+#define _BRKDLG_HRC
+
+#include <svl/solar.hrc>
+
+#define RID_BASICIDE_BREAKPOINTDLG ( RID_BASICIDE_START + 80 )
+
+#define RID_CB_BRKPOINTS 2
+#define RID_PB_OK 3
+#define RID_PB_CANCEL 4
+#define RID_PB_NEW 5
+#define RID_PB_DEL 6
+#define RID_CHKB_ACTIVE 7
+#define RID_FT_PASS 8
+#define RID_FT_BRKPOINTS 9
+#define RID_FLD_PASS 10
+
+#endif // _BRKDLG_HRC
+
diff --git a/basctl/source/basicide/brkdlg.hxx b/basctl/source/basicide/brkdlg.hxx
new file mode 100644
index 000000000000..04777bb70518
--- /dev/null
+++ b/basctl/source/basicide/brkdlg.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 _BRKDLG_HXX
+#define _BRKDLG_HXX
+
+#include <svheader.hxx>
+#include <bastypes.hxx>
+#include <vcl/dialog.hxx>
+
+#include <vcl/button.hxx>
+#include <vcl/field.hxx>
+#include <vcl/fixed.hxx>
+
+class BreakPointDialog : public ModalDialog
+{
+private:
+ ComboBox aComboBox;
+ OKButton aOKButton;
+ CancelButton aCancelButton;
+ PushButton aNewButton;
+ PushButton aDelButton;
+// PushButton aShowButton;
+ CheckBox aCheckBox;
+ FixedText aBrkText;
+ FixedText aPassText;
+ NumericField aNumericField;
+
+ BreakPointList & m_rOriginalBreakPointList;
+ BreakPointList m_aModifiedBreakPointList;
+
+protected:
+ void CheckButtons();
+ DECL_LINK( CheckBoxHdl, CheckBox * );
+ DECL_LINK( ComboBoxHighlightHdl, ComboBox * );
+ DECL_LINK( EditModifyHdl, Edit * );
+ DECL_LINK( ButtonHdl, Button * );
+ void UpdateFields( BreakPoint* pBrk );
+ BreakPoint* GetSelectedBreakPoint();
+
+
+public:
+ BreakPointDialog( Window* pParent, BreakPointList& rBrkList );
+
+ void SetCurrentBreakPoint( BreakPoint* pBrk );
+};
+
+#endif // _BRKDLG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/brkdlg.src b/basctl/source/basicide/brkdlg.src
new file mode 100644
index 000000000000..00fd8fbf8968
--- /dev/null
+++ b/basctl/source/basicide/brkdlg.src
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "helpid.hrc"
+#include <brkdlg.hrc>
+ModalDialog RID_BASICIDE_BREAKPOINTDLG
+{
+ // HelpId = HID_BASICIDE_BRKPNTS ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 178 , 116 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ ComboBox RID_CB_BRKPOINTS
+ {
+ Pos = MAP_APPFONT ( 6 , 14 ) ;
+ Size = MAP_APPFONT ( 110 , 70 ) ;
+ TabStop = TRUE ;
+ };
+ OKButton RID_PB_OK
+ {
+ Pos = MAP_APPFONT ( 122 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton RID_PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 122 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_NEW
+ {
+ Pos = MAP_APPFONT ( 122 , 57 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "New" ;
+ };
+ PushButton RID_PB_DEL
+ {
+ Pos = MAP_APPFONT ( 122 , 74 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Löschen : L÷schen */
+ TabStop = TRUE ;
+ Text [ en-US ] = "Delete" ;
+ };
+ CheckBox RID_CHKB_ACTIVE
+ {
+ Pos = MAP_APPFONT ( 6 , 87 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Active" ;
+ };
+ FixedText RID_FT_PASS
+ {
+ Pos = MAP_APPFONT ( 6 , 102 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text [ en-US ] = "Pass Count:" ;
+ };
+ FixedText RID_FT_BRKPOINTS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 110, 10 ) ;
+ Text [ en-US ] = "Breakpoints" ;
+ };
+ NumericField RID_FLD_PASS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 81 , 100 ) ;
+ Size = MAP_APPFONT ( 35 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ Text [ en-US ] = "Manage Breakpoints" ;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basctl/source/basicide/doceventnotifier.cxx b/basctl/source/basicide/doceventnotifier.cxx
new file mode 100644
index 000000000000..a47c269f2c3d
--- /dev/null
+++ b/basctl/source/basicide/doceventnotifier.cxx
@@ -0,0 +1,280 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "doceventnotifier.hxx"
+#include "scriptdocument.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/document/XEventBroadcaster.hpp>
+/** === end UNO includes === **/
+
+#include <vcl/svapp.hxx>
+
+#include <tools/diagnose_ex.h>
+
+#include <comphelper/componentcontext.hxx>
+#include <comphelper/processfactory.hxx>
+
+#include <osl/mutex.hxx>
+#include <sal/macros.h>
+
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+
+//........................................................................
+namespace basctl
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::document::XEventBroadcaster;
+ using ::com::sun::star::document::XEventListener;
+ using ::com::sun::star::document::EventObject;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::frame::XModel;
+ using ::com::sun::star::uno::UNO_QUERY;
+ /** === end UNO using === **/
+ namespace csslang = ::com::sun::star::lang;
+
+ //====================================================================
+ //= DocumentEventNotifier_Impl
+ //====================================================================
+ typedef ::cppu::WeakComponentImplHelper1 < XEventListener
+ > DocumentEventNotifier_Impl_Base;
+
+ enum ListenerAction
+ {
+ RegisterListener,
+ RemoveListener
+ };
+
+ /** impl class for DocumentEventNotifier
+ */
+ class DocumentEventNotifier_Impl :public ::boost::noncopyable
+ ,public ::cppu::BaseMutex
+ ,public DocumentEventNotifier_Impl_Base
+ {
+ public:
+ DocumentEventNotifier_Impl( DocumentEventListener& _rListener, const Reference< XModel >& _rxDocument );
+
+ // document::XEventListener
+ virtual void SAL_CALL notifyEvent( const EventObject& Event ) throw (RuntimeException);
+
+ // lang::XEventListener
+ virtual void SAL_CALL disposing( const csslang::EventObject& Event ) throw (RuntimeException);
+
+ // ComponentHelper
+ virtual void SAL_CALL disposing();
+
+ protected:
+ ~DocumentEventNotifier_Impl();
+
+ private:
+ /// determines whether the instance is already disposed
+ bool impl_isDisposed_nothrow() const { return m_pListener == NULL; }
+
+ /// disposes the instance
+ void impl_dispose_nothrow();
+
+ /// registers or revokes the instance as listener at the global event broadcaster
+ void impl_listenerAction_nothrow( ListenerAction _eAction );
+
+ private:
+ DocumentEventListener* m_pListener;
+ Reference< XModel > m_xModel;
+ };
+
+ //--------------------------------------------------------------------
+ DocumentEventNotifier_Impl::DocumentEventNotifier_Impl( DocumentEventListener& _rListener, const Reference< XModel >& _rxDocument )
+ :DocumentEventNotifier_Impl_Base( m_aMutex )
+ ,m_pListener( &_rListener )
+ ,m_xModel( _rxDocument )
+ {
+ osl_incrementInterlockedCount( &m_refCount );
+ impl_listenerAction_nothrow( RegisterListener );
+ osl_decrementInterlockedCount( &m_refCount );
+ }
+
+ //--------------------------------------------------------------------
+ DocumentEventNotifier_Impl::~DocumentEventNotifier_Impl()
+ {
+ if ( !impl_isDisposed_nothrow() )
+ {
+ acquire();
+ dispose();
+ }
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL DocumentEventNotifier_Impl::notifyEvent( const EventObject& _rEvent ) throw (RuntimeException)
+ {
+ ::osl::ClearableMutexGuard aGuard( m_aMutex );
+
+ OSL_PRECOND( !impl_isDisposed_nothrow(), "DocumentEventNotifier_Impl::notifyEvent: disposed, but still getting events?" );
+ if ( impl_isDisposed_nothrow() )
+ return;
+
+ Reference< XModel > xDocument( _rEvent.Source, UNO_QUERY );
+ OSL_ENSURE( xDocument.is(), "DocumentEventNotifier_Impl::notifyEvent: illegal source document!" );
+ if ( !xDocument.is() )
+ return;
+
+ struct EventEntry
+ {
+ const sal_Char* pEventName;
+ void (DocumentEventListener::*listenerMethod)( const ScriptDocument& _rDocument );
+ };
+ EventEntry aEvents[] = {
+ { "OnNew", &DocumentEventListener::onDocumentCreated },
+ { "OnLoad", &DocumentEventListener::onDocumentOpened },
+ { "OnSave", &DocumentEventListener::onDocumentSave },
+ { "OnSaveDone", &DocumentEventListener::onDocumentSaveDone },
+ { "OnSaveAs", &DocumentEventListener::onDocumentSaveAs },
+ { "OnSaveAsDone", &DocumentEventListener::onDocumentSaveAsDone },
+ { "OnUnload", &DocumentEventListener::onDocumentClosed },
+ { "OnTitleChanged", &DocumentEventListener::onDocumentTitleChanged },
+ { "OnModeChanged", &DocumentEventListener::onDocumentModeChanged }
+ };
+
+ for ( size_t i=0; i < SAL_N_ELEMENTS( aEvents ); ++i )
+ {
+ if ( !_rEvent.EventName.equalsAscii( aEvents[i].pEventName ) )
+ continue;
+
+ ScriptDocument aDocument( xDocument );
+ {
+ // the listener implementations usually require the SolarMutex, so lock it here.
+ // But ensure the proper order of locking the solar and the own mutex
+ aGuard.clear();
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard2( m_aMutex );
+
+ if ( impl_isDisposed_nothrow() )
+ // somebody took the chance to dispose us -> bail out
+ return;
+
+ (m_pListener->*aEvents[i].listenerMethod)( aDocument );
+ }
+ break;
+ }
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL DocumentEventNotifier_Impl::disposing( const csslang::EventObject& /*Event*/ ) throw (RuntimeException)
+ {
+ SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ if ( !impl_isDisposed_nothrow() )
+ impl_dispose_nothrow();
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL DocumentEventNotifier_Impl::disposing()
+ {
+ impl_listenerAction_nothrow( RemoveListener );
+ impl_dispose_nothrow();
+ }
+
+ //--------------------------------------------------------------------
+ void DocumentEventNotifier_Impl::impl_dispose_nothrow()
+ {
+ m_pListener = NULL;
+ m_xModel.clear();
+ }
+
+ //--------------------------------------------------------------------
+ void DocumentEventNotifier_Impl::impl_listenerAction_nothrow( ListenerAction _eAction )
+ {
+ try
+ {
+ Reference< XEventBroadcaster > xBroadcaster;
+ if ( m_xModel.is() )
+ xBroadcaster.set( m_xModel, UNO_QUERY_THROW );
+ else
+ {
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ xBroadcaster.set(
+ aContext.createComponent( "com.sun.star.frame.GlobalEventBroadcaster" ),
+ UNO_QUERY_THROW );
+ }
+
+ void ( SAL_CALL XEventBroadcaster::*listenerAction )( const Reference< XEventListener >& ) =
+ ( _eAction == RegisterListener ) ? &XEventBroadcaster::addEventListener : &XEventBroadcaster::removeEventListener;
+ (xBroadcaster.get()->*listenerAction)( this );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ //====================================================================
+ //= DocumentEventNotifier
+ //====================================================================
+ //--------------------------------------------------------------------
+ DocumentEventNotifier::DocumentEventNotifier( DocumentEventListener& _rListener, const Reference< XModel >& _rxDocument )
+ :m_pImpl( new DocumentEventNotifier_Impl( _rListener, _rxDocument ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ DocumentEventNotifier::DocumentEventNotifier( DocumentEventListener& _rListener )
+ :m_pImpl( new DocumentEventNotifier_Impl( _rListener, Reference< XModel >() ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ DocumentEventNotifier::~DocumentEventNotifier()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void DocumentEventNotifier::dispose()
+ {
+ m_pImpl->dispose();
+ }
+
+ //====================================================================
+ //= DocumentEventListener
+ //====================================================================
+ DocumentEventListener::~DocumentEventListener()
+ {
+ }
+
+//........................................................................
+} // namespace basctl
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/docsignature.cxx b/basctl/source/basicide/docsignature.cxx
new file mode 100644
index 000000000000..19cf14004612
--- /dev/null
+++ b/basctl/source/basicide/docsignature.cxx
@@ -0,0 +1,118 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "docsignature.hxx"
+#include "scriptdocument.hxx"
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <sfx2/objsh.hxx>
+#include <sfx2/signaturestate.hxx>
+
+//........................................................................
+namespace basctl
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::frame::XModel;
+ /** === end UNO using === **/
+
+ //====================================================================
+ //= DocumentSignature_Data
+ //====================================================================
+ struct DocumentSignature_Data
+ {
+ SfxObjectShell* pShell;
+
+ DocumentSignature_Data() : pShell( NULL ) { }
+ };
+
+ //====================================================================
+ //= DocumentSignature
+ //====================================================================
+ //--------------------------------------------------------------------
+ DocumentSignature::DocumentSignature( const ScriptDocument& _rDocument )
+ :m_pData( new DocumentSignature_Data )
+ {
+ if ( _rDocument.isDocument() )
+ {
+ Reference< XModel > xDocument( _rDocument.getDocument() );
+ // find object shell for document
+ SfxObjectShell* pShell = SfxObjectShell::GetFirst();
+ while ( pShell )
+ {
+ if ( pShell->GetModel() == xDocument )
+ break;
+ pShell = SfxObjectShell::GetNext( *pShell );
+ }
+ m_pData->pShell = pShell;
+ }
+ }
+
+ //--------------------------------------------------------------------
+ DocumentSignature::~DocumentSignature()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ bool DocumentSignature::supportsSignatures() const
+ {
+ return ( m_pData->pShell != NULL );
+ }
+
+ //--------------------------------------------------------------------
+ void DocumentSignature::signScriptingContent() const
+ {
+ OSL_PRECOND( supportsSignatures(), "DocumentSignature::signScriptingContent: signatures not supported by this document!" );
+ if ( m_pData->pShell )
+ m_pData->pShell->SignScriptingContent();
+ }
+
+ //--------------------------------------------------------------------
+ sal_uInt16 DocumentSignature::getScriptingSignatureState() const
+ {
+ if ( m_pData->pShell )
+ return m_pData->pShell->GetScriptingSignatureState();
+ return SIGNATURESTATE_NOSIGNATURES;
+ }
+
+//........................................................................
+} // namespace basctl
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/documentenumeration.cxx b/basctl/source/basicide/documentenumeration.cxx
new file mode 100644
index 000000000000..e9cfa14b1ee0
--- /dev/null
+++ b/basctl/source/basicide/documentenumeration.cxx
@@ -0,0 +1,206 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "documentenumeration.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/frame/XFramesSupplier.hpp>
+/** === end UNO includes === **/
+
+#include <tools/diagnose_ex.h>
+
+#include <comphelper/stl_types.hxx>
+
+//........................................................................
+namespace basctl { namespace docs {
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::frame::XDesktop;
+ using ::com::sun::star::container::XEnumerationAccess;
+ using ::com::sun::star::container::XEnumeration;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::frame::XModel;
+ using ::com::sun::star::frame::XFramesSupplier;
+ using ::com::sun::star::frame::XFrames;
+ using ::com::sun::star::frame::XController;
+ using ::com::sun::star::frame::XModel2;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::lang::XServiceInfo;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::frame::XFrame;
+ /** === end UNO using === **/
+ namespace FrameSearchFlag = ::com::sun::star::frame::FrameSearchFlag;
+
+ //====================================================================
+ //= DocumentEnumeration_Data
+ //====================================================================
+ struct DocumentEnumeration_Data
+ {
+ ::comphelper::ComponentContext aContext;
+ const IDocumentDescriptorFilter* pFilter;
+
+ DocumentEnumeration_Data( const ::comphelper::ComponentContext& _rContext, const IDocumentDescriptorFilter* _pFilter )
+ :aContext( _rContext )
+ ,pFilter( _pFilter )
+ {
+ }
+ };
+
+ //====================================================================
+ //= DocumentEnumeration
+ //====================================================================
+ //--------------------------------------------------------------------
+ DocumentEnumeration::DocumentEnumeration( const ::comphelper::ComponentContext& _rContext, const IDocumentDescriptorFilter* _pFilter )
+ :m_pData( new DocumentEnumeration_Data( _rContext, _pFilter ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ DocumentEnumeration::~DocumentEnumeration()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ namespace
+ {
+ //................................................................
+ void lcl_getDocumentControllers_nothrow( DocumentDescriptor& _io_rDocDesc )
+ {
+ OSL_PRECOND( _io_rDocDesc.xModel.is(), "lcl_getDocumentControllers_nothrow: illegal model!" );
+
+ _io_rDocDesc.aControllers.clear();
+ try
+ {
+ Reference< XModel2 > xModel2( _io_rDocDesc.xModel, UNO_QUERY );
+ if ( xModel2.is() )
+ {
+ Reference< XEnumeration > xEnum( xModel2->getControllers(), UNO_SET_THROW );
+ while ( xEnum->hasMoreElements() )
+ {
+ Reference< XController > xController( xEnum->nextElement(), UNO_QUERY_THROW );
+ _io_rDocDesc.aControllers.push_back( xController );
+ }
+ }
+ else if ( _io_rDocDesc.xModel.is() )
+ _io_rDocDesc.aControllers.push_back( _io_rDocDesc.xModel->getCurrentController() );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ //................................................................
+ void lcl_getDocuments_nothrow( const Sequence< Reference< XFrame > >& _rFrames, Documents& _out_rDocuments,
+ const IDocumentDescriptorFilter* _pFilter )
+ {
+ // ensure we don't encounter some models multiple times
+ ::std::set< Reference< XModel >, ::comphelper::OInterfaceCompare< XModel > > aEncounteredModels;
+
+ for ( const Reference< XFrame >* pFrame = _rFrames.getConstArray();
+ pFrame != _rFrames.getConstArray() + _rFrames.getLength();
+ ++pFrame
+ )
+ {
+ try
+ {
+ OSL_ENSURE( pFrame->is(), "lcl_getDocuments_nothrow: illegal frame!" );
+ if ( !pFrame->is() )
+ continue;
+ Reference< XController > xController( (*pFrame)->getController() );
+ if ( !xController.is() )
+ continue;
+
+ Reference< XModel > xModel( xController->getModel() );
+ if ( !xModel.is() )
+ // though it's legal for a controller to not have a model, we're not interested in
+ // those
+ continue;
+
+ if ( aEncounteredModels.find( xModel ) != aEncounteredModels.end() )
+ // there might be multiple frames for the same model
+ // handle it only once
+ continue;
+ aEncounteredModels.insert( xModel );
+
+ // create a DocumentDescriptor
+ DocumentDescriptor aDescriptor;
+ aDescriptor.xModel = xModel;
+ lcl_getDocumentControllers_nothrow( aDescriptor );
+
+ // consult filter, if there is one
+ if ( _pFilter && !_pFilter->includeDocument( aDescriptor ) )
+ continue;
+
+ _out_rDocuments.push_back( aDescriptor );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+ }
+
+ //--------------------------------------------------------------------
+ void DocumentEnumeration::getDocuments( Documents& _out_rDocuments ) const
+ {
+ _out_rDocuments.clear();
+
+ try
+ {
+ const Reference< XDesktop > xDesktop( m_pData->aContext.createComponent( "com.sun.star.frame.Desktop" ), UNO_QUERY_THROW );
+ const Reference< XFramesSupplier > xSuppFrames( xDesktop, UNO_QUERY_THROW );
+ const Reference< XFrames > xFrames( xSuppFrames->getFrames(), UNO_SET_THROW );
+ const Sequence< Reference< XFrame > > aFrames( xFrames->queryFrames( FrameSearchFlag::ALL ) );
+
+ lcl_getDocuments_nothrow( aFrames, _out_rDocuments, m_pData->pFilter );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+//........................................................................
+} } // namespace basctl::docs
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/documentenumeration.hxx b/basctl/source/basicide/documentenumeration.hxx
new file mode 100644
index 000000000000..6778c676c15c
--- /dev/null
+++ b/basctl/source/basicide/documentenumeration.hxx
@@ -0,0 +1,109 @@
+/* -*- 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 BASCTL_DOCUMENTENUMERATION_HXX
+#define BASCTL_DOCUMENTENUMERATION_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XController.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/componentcontext.hxx>
+
+#include <memory>
+#include <vector>
+
+//........................................................................
+namespace basctl { namespace docs {
+//........................................................................
+
+ typedef ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > Model;
+ typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > > Controllers;
+
+ struct DocumentDescriptor
+ {
+ Model xModel;
+ Controllers aControllers;
+ };
+
+ typedef ::std::vector< DocumentDescriptor > Documents;
+
+ //====================================================================
+ //= IDocumentDescriptorFilter
+ //====================================================================
+ /// allows pre-filtering when enumerating document descriptors
+ class SAL_NO_VTABLE IDocumentDescriptorFilter
+ {
+ public:
+ virtual bool includeDocument( const DocumentDescriptor& _rDocument ) const = 0;
+ };
+
+ //====================================================================
+ //= DocumentEnumeration
+ //====================================================================
+ struct DocumentEnumeration_Data;
+ /** is a helper class for enumerating documents in OOo
+
+ If you need a list of all open documents in OOo, this is little bit of
+ a hassle: You need to iterate though all components at the desktop, which
+ might or might not be documents.
+
+ Additionally, you need to examine the existing documents' frames
+ for sub frames, which might contain sub documents (e.g. embedded objects
+ edited out-place).
+
+ DocumentEnumeration relieves you from this hassle.
+ */
+ class DocumentEnumeration
+ {
+ public:
+ DocumentEnumeration( const ::comphelper::ComponentContext& _rContext, const IDocumentDescriptorFilter* _pFilter = NULL );
+ ~DocumentEnumeration();
+
+ /** retrieves a list of all currently known documents in the application
+
+ @param _out_rDocuments
+ output parameter taking the collected document information
+ @
+ */
+ void getDocuments(
+ Documents& _out_rDocuments
+ ) const;
+
+ private:
+ ::std::auto_ptr< DocumentEnumeration_Data > m_pData;
+ };
+
+//........................................................................
+} } // namespace basctl::docs
+//........................................................................
+
+#endif // BASCTL_DOCUMENTENUMERATION_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/ide_pch.cxx b/basctl/source/basicide/ide_pch.cxx
new file mode 100644
index 000000000000..44937011dc2f
--- /dev/null
+++ b/basctl/source/basicide/ide_pch.cxx
@@ -0,0 +1,33 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include <ide_pch.hxx>
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/ide_pch.hxx b/basctl/source/basicide/ide_pch.hxx
new file mode 100644
index 000000000000..d30218e73c50
--- /dev/null
+++ b/basctl/source/basicide/ide_pch.hxx
@@ -0,0 +1,72 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+#include <svheader.hxx>
+
+#define ITEMID_SEARCH 0
+#define ITEMID_SIZE 0
+
+#include <vcl/wrkwin.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/menu.hxx>
+
+#include <svl/svarray.hxx>
+#include <svl/itemset.hxx>
+#include <svl/aeitem.hxx>
+#include <svl/stritem.hxx>
+#include <svl/whiter.hxx>
+#include <svl/intitem.hxx>
+#include <svl/srchitem.hxx>
+
+#define _BASIC_TEXTPORTIONS
+#include <basic/sbdef.hxx>
+#include <basic/sbstar.hxx>
+#include <basic/sbmeth.hxx>
+#include <basic/sbmod.hxx>
+#include <basic/basmgr.hxx>
+
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/printer.hxx>
+#include <sfx2/viewsh.hxx>
+#include <sfx2/event.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/childwin.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/genlink.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/minfitem.hxx>
+#include <sfx2/dinfdlg.hxx>
+#include <sfx2/docfac.hxx>
+#include <sfx2/progress.hxx>
+#include <editeng/sizeitem.hxx>
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/iderdll.cxx b/basctl/source/basicide/iderdll.cxx
new file mode 100644
index 000000000000..dd06ff421860
--- /dev/null
+++ b/basctl/source/basicide/iderdll.cxx
@@ -0,0 +1,232 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include <ide_pch.hxx>
+
+
+#include <svheader.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/genlink.hxx>
+
+
+#include <svl/solar.hrc>
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <iderid.hxx>
+#include <svx/svxids.hrc>
+#include <basidesh.hxx>
+#include <basidesh.hrc>
+#include <basobj.hxx>
+#include <bastypes.hxx>
+#include <basdoc.hxx>
+#include <basicmod.hxx>
+#include <propbrw.hxx>
+
+
+#define ITEMID_SEARCH 0
+#include <svl/srchitem.hxx>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+
+using ::rtl::OUString;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+
+static BasicIDEDLL* pBasicIDEDLL = 0;
+
+BasicIDEDLL* BasicIDEDLL::GetDLL()
+{
+ return pBasicIDEDLL;
+}
+
+IDEResId::IDEResId( USHORT nId ):
+ ResId( nId, *(*(BasicIDEModule**)GetAppData(SHL_IDE))->GetResMgr() )
+{
+}
+
+BasicIDEDLL::BasicIDEDLL()
+{
+ pBasicIDEDLL = this;
+ pShell = 0;
+ pExtraData = 0;
+
+ GetExtraData(); // damit GlobalErrorHdl gesetzt wird.
+}
+
+BasicIDEDLL::~BasicIDEDLL()
+{
+ delete pExtraData;
+ *(BasicIDEDLL**)GetAppData(SHL_IDE) = NULL;
+}
+
+void BasicIDEDLL::Init()
+{
+ if ( pBasicIDEDLL )
+ return;
+
+ SfxObjectFactory* pFact = &BasicDocShell::Factory();
+ (void)pFact;
+
+ ByteString aResMgrName( "basctl" );
+ ResMgr* pMgr = ResMgr::CreateResMgr(
+ aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ BASIC_MOD() = new BasicIDEModule( pMgr, &BasicDocShell::Factory() );
+
+ new BasicIDEDLL;
+ SfxModule* pMod = BASIC_MOD();
+
+ SfxObjectFactory& rFactory = BasicDocShell::Factory();
+ rFactory.SetDocumentServiceName( String::CreateFromAscii( "com.sun.star.script.BasicIDE" ) );
+
+ BasicDocShell::RegisterInterface( pMod );
+ BasicIDEShell::RegisterFactory( SVX_INTERFACE_BASIDE_VIEWSH );
+ BasicIDEShell::RegisterInterface( pMod );
+
+ PropBrwMgr::RegisterChildWindow();
+}
+
+/*************************************************************************
+|*
+|* Deinitialisierung
+|*
+\************************************************************************/
+void BasicIDEDLL::Exit()
+{
+ // the BasicIDEModule must be destroyed
+ BasicIDEModule** ppShlPtr = (BasicIDEModule**) GetAppData(SHL_IDE);
+ delete (*ppShlPtr);
+ (*ppShlPtr) = NULL;
+ DELETEZ( pBasicIDEDLL );
+}
+
+BasicIDEData* BasicIDEDLL::GetExtraData()
+{
+ if ( !pExtraData )
+ pExtraData = new BasicIDEData;
+ return pExtraData;
+}
+
+BasicIDEData::BasicIDEData() : aObjCatPos( INVPOSITION, INVPOSITION )
+{
+ nBasicDialogCount = 0;
+ bChoosingMacro = FALSE;
+ bShellInCriticalSection = FALSE;
+ pSearchItem = new SvxSearchItem( SID_SEARCH_ITEM );
+
+ StarBASIC::SetGlobalBreakHdl( LINK( this, BasicIDEData, GlobalBasicBreakHdl ) );
+
+ pAccelerator = 0;
+}
+
+BasicIDEData::~BasicIDEData()
+{
+ // ErrorHdl zuruecksetzen ist zwar sauberer, aber diese Instanz wird
+ // sowieso sehr spaet, nach dem letzten Basic, zerstoert.
+ // Durch den Aufruf werden dann aber wieder AppDaten erzeugt und nicht
+ // mehr zerstoert => MLK's beim Purify
+// StarBASIC::SetGlobalErrorHdl( Link() );
+// StarBASIC::SetGlobalBreakHdl( Link() );
+// StarBASIC::setGlobalStarScriptListener( XEngineListenerRef() );
+
+ delete pSearchItem;
+ //delete pAccelerator;
+}
+
+SvxSearchItem& BasicIDEData::GetSearchItem() const
+{
+ return *pSearchItem;
+}
+
+void BasicIDEData::SetSearchItem( const SvxSearchItem& rItem )
+{
+ delete pSearchItem;
+ pSearchItem = (SvxSearchItem*)rItem.Clone();
+}
+
+IMPL_LINK( BasicIDEData, GlobalBasicBreakHdl, StarBASIC *, pBasic )
+{
+ long nRet = 0;
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ {
+ BasicManager* pBasMgr = BasicIDE::FindBasicManager( pBasic );
+ if ( pBasMgr )
+ {
+ // Hier lande ich zweimal, wenn Step into protected Basic
+ // => schlecht, wenn Passwortabfrage 2x, ausserdem sieht man in
+ // dem PasswordDlg nicht, fuer welche Lib...
+ // => An dieser Stelle keine Passwort-Abfrage starten
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+ OSL_ENSURE( aDocument.isValid(), "BasicIDEData::GlobalBasicBreakHdl: no document for the basic manager!" );
+ if ( aDocument.isValid() )
+ {
+ ::rtl::OUString aOULibName( pBasic->GetName() );
+ Reference< script::XLibraryContainer > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ // Ein Step-Out muesste mich aus den geschuetzten Bereich befoerdern...
+ nRet = SbDEBUG_STEPOUT;
+ }
+ else
+ {
+ nRet = pIDEShell->CallBasicBreakHdl( pBasic );
+ }
+ }
+ }
+ }
+ }
+
+ return nRet;
+}
+
+IMPL_LINK( BasicIDEData, ExecuteMacroEvent, void *, pData )
+{
+ if ( pData )
+ {
+ SFX_APP()->EnterBasicCall();
+ SbMethod* pMethod = (SbMethod*)pData;
+
+ // Ist es eine StarScript-Methode? Am Parent erkennen
+ DBG_ASSERT( pMethod->GetParent()->GetFlags() & SBX_EXTSEARCH, "Kein EXTSEARCH!" );
+ BasicIDE::RunMethod( pMethod );
+ pMethod->ReleaseRef(); // muss vorher inkrementiert worden sein!
+ SFX_APP()->LeaveBasicCall();
+ }
+ return 0;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/iderdll2.hxx b/basctl/source/basicide/iderdll2.hxx
new file mode 100644
index 000000000000..e79c11721ed6
--- /dev/null
+++ b/basctl/source/basicide/iderdll2.hxx
@@ -0,0 +1,111 @@
+/* -*- 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 _IDERDLL2_HXX
+#define _IDERDLL2_HXX
+
+class StarBASIC;
+class SvxSearchItem;
+class Accelerator;
+
+#include <tools/string.hxx>
+#include <tools/gen.hxx>
+#include <tools/link.hxx>
+
+#include <bastypes.hxx>
+#include <bastype2.hxx>
+
+#define INVPOSITION 0x7fff
+
+class BasicIDEData
+{
+private:
+ Accelerator* pAccelerator;
+ SvxSearchItem* pSearchItem;
+
+ LibInfos aLibInfos;
+
+ BasicEntryDescriptor m_aLastEntryDesc;
+
+ Point aObjCatPos;
+ Size aObjCatSize;
+
+ String aAddLibPath;
+ String aAddLibFilter;
+
+ USHORT nBasicDialogCount;
+
+ BOOL OLD_bRelMacroRecording;
+ BOOL bChoosingMacro;
+ BOOL bShellInCriticalSection;
+
+protected:
+ DECL_LINK( GlobalBasicBreakHdl, StarBASIC * );
+
+public:
+ BasicIDEData();
+ ~BasicIDEData();
+
+ LibInfos& GetLibInfos() { return aLibInfos; }
+
+ BasicEntryDescriptor& GetLastEntryDescriptor() { return m_aLastEntryDesc; }
+ void SetLastEntryDescriptor( BasicEntryDescriptor& rDesc ) { m_aLastEntryDesc = rDesc; }
+
+ BOOL& ChoosingMacro() { return bChoosingMacro; }
+ BOOL& ShellInCriticalSection() { return bShellInCriticalSection; }
+
+ USHORT GetBasicDialogCount() const { return nBasicDialogCount; }
+ void IncBasicDialogCount() { nBasicDialogCount++; }
+ void DecBasicDialogCount() { nBasicDialogCount--; }
+
+ SvxSearchItem& GetSearchItem() const;
+ void SetSearchItem( const SvxSearchItem& rItem );
+
+ void SetObjectCatalogPos( const Point& rPnt )
+ { aObjCatPos = rPnt; }
+ const Point& GetObjectCatalogPos() const
+ { return aObjCatPos; }
+
+ void SetObjectCatalogSize( const Size& rSize )
+ { aObjCatSize = rSize; }
+ const Size& GetObjectCatalogSize() const
+ { return aObjCatSize; }
+
+ const String& GetAddLibPath() const { return aAddLibPath; }
+ void SetAddLibPath( const String& rPath ) { aAddLibPath = rPath; }
+
+ const String& GetAddLibFilter() const { return aAddLibFilter; }
+ void SetAddLibFilter( const String& rFilter ) { aAddLibFilter = rFilter; }
+
+ DECL_LINK( ExecuteMacroEvent, void * );
+};
+
+
+#endif //_IDERDLL2_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/idetemp.hxx b/basctl/source/basicide/idetemp.hxx
new file mode 100644
index 000000000000..7700d94f0748
--- /dev/null
+++ b/basctl/source/basicide/idetemp.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 _IDETEMP_HXX
+#define _IDETEMP_HXX
+
+
+enum SvxChooseControlEnum
+{
+ SVX_SNAP_PUSHBUTTON,
+ SVX_SNAP_CHECKBOX,
+ SVX_SNAP_RADIOBUTTON,
+ SVX_SNAP_SPINBUTTON,
+ SVX_SNAP_FIXEDTEXT,
+ SVX_SNAP_GROUPBOX,
+ SVX_SNAP_LISTBOX,
+ SVX_SNAP_COMBOBOX,
+ SVX_SNAP_EDIT,
+ SVX_SNAP_HSCROLLBAR,
+ SVX_SNAP_VSCROLLBAR,
+ SVX_SNAP_PREVIEW,
+ SVX_SNAP_SELECT,
+ SVX_SNAP_URLBUTTON,
+ SVX_SNAP_NOTHING,
+ SVX_SNAP_IMAGECONTROL,
+ SVX_SNAP_PROGRESSBAR,
+ SVX_SNAP_HFIXEDLINE,
+ SVX_SNAP_VFIXEDLINE,
+ SVX_SNAP_DATEFIELD,
+ SVX_SNAP_TIMEFIELD,
+ SVX_SNAP_NUMERICFIELD,
+ SVX_SNAP_CURRENCYFIELD,
+ SVX_SNAP_FORMATTEDFIELD,
+ SVX_SNAP_PATTERNFIELD,
+ SVX_SNAP_FILECONTROL,
+ SVX_SNAP_TREECONTROL
+};
+
+#define SvxChooseControlItem SfxAllEnumItem
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/localizationmgr.cxx b/basctl/source/basicide/localizationmgr.cxx
new file mode 100644
index 000000000000..bd0259fe0637
--- /dev/null
+++ b/basctl/source/basicide/localizationmgr.cxx
@@ -0,0 +1,1228 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_basctl.hxx"
+#include <ide_pch.hxx>
+
+#include <basidesh.hxx>
+#include <baside3.hxx>
+#include <basobj.hxx>
+#include <iderdll.hxx>
+#include "dlged.hxx"
+
+#include <localizationmgr.hxx>
+#include <com/sun/star/resource/XStringResourceSupplier.hpp>
+#include <com/sun/star/frame/XLayoutManager.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::resource;
+
+static ::rtl::OUString aDot = ::rtl::OUString::createFromAscii( "." );
+static ::rtl::OUString aEsc = ::rtl::OUString::createFromAscii( "&" );
+static ::rtl::OUString aSemi = ::rtl::OUString::createFromAscii( ";" );
+
+
+LocalizationMgr::LocalizationMgr( BasicIDEShell* pIDEShell,
+ const ScriptDocument& rDocument, String aLibName,
+ const Reference< XStringResourceManager >& xStringResourceManager )
+ : m_xStringResourceManager( xStringResourceManager )
+ , m_pIDEShell( pIDEShell )
+ , m_aDocument( rDocument )
+ , m_aLibName( aLibName )
+{
+}
+
+bool LocalizationMgr::isLibraryLocalized( void )
+{
+ bool bRet = false;
+ if( m_xStringResourceManager.is() )
+ {
+ Sequence< Locale > aLocaleSeq = m_xStringResourceManager->getLocales();
+ bRet = ( aLocaleSeq.getLength() > 0 );
+ }
+ return bRet;
+}
+
+void LocalizationMgr::handleTranslationbar( void )
+{
+ static ::rtl::OUString aLayoutManagerName = ::rtl::OUString::createFromAscii( "LayoutManager" );
+ static ::rtl::OUString aToolBarResName =
+ ::rtl::OUString::createFromAscii( "private:resource/toolbar/translationbar" );
+
+ Reference< beans::XPropertySet > xFrameProps
+ ( m_pIDEShell->GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY );
+ if ( xFrameProps.is() )
+ {
+ Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
+ uno::Any a = xFrameProps->getPropertyValue( aLayoutManagerName );
+ a >>= xLayoutManager;
+ if ( xLayoutManager.is() )
+ {
+ if ( !isLibraryLocalized() )
+ {
+ xLayoutManager->destroyElement( aToolBarResName );
+ }
+ else
+ {
+ xLayoutManager->createElement( aToolBarResName );
+ xLayoutManager->requestElement( aToolBarResName );
+ }
+ }
+ }
+}
+
+
+//============================================
+// TODO: -> export from toolkit
+
+struct LanguageDependentProp
+{
+ const char* pPropName;
+ sal_Int32 nPropNameLength;
+};
+
+static LanguageDependentProp aLanguageDependentProp[] =
+{
+ { "Text", 4 },
+ { "Label", 5 },
+ { "Title", 5 },
+ { "HelpText", 8 },
+ { "CurrencySymbol", 14 },
+ { "StringItemList", 14 },
+ { 0, 0 }
+};
+
+bool isLanguageDependentProperty( ::rtl::OUString aName )
+{
+ bool bRet = false;
+
+ LanguageDependentProp* pLangDepProp = aLanguageDependentProp;
+ while( pLangDepProp->pPropName != 0 )
+ {
+ if( aName.equalsAsciiL( pLangDepProp->pPropName, pLangDepProp->nPropNameLength ))
+ {
+ bRet = true;
+ break;
+ }
+ pLangDepProp++;
+ }
+ return bRet;
+}
+//============================================
+
+void LocalizationMgr::implEnableDisableResourceForAllLibraryDialogs( HandleResourceMode eMode )
+{
+ Sequence< ::rtl::OUString > aDlgNames = m_aDocument.getObjectNames( E_DIALOGS, m_aLibName );
+ sal_Int32 nDlgCount = aDlgNames.getLength();
+ const ::rtl::OUString* pDlgNames = aDlgNames.getConstArray();
+
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ for( sal_Int32 i = 0 ; i < nDlgCount ; i++ )
+ {
+ String aDlgName = pDlgNames[ i ];
+ DialogWindow* pWin = m_pIDEShell->FindDlgWin( m_aDocument, m_aLibName, aDlgName, FALSE );
+ if( pWin && pWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ DialogWindow* pDialogWin = static_cast< DialogWindow* >( pWin );
+ Reference< container::XNameContainer > xDialog = pDialogWin->GetDialog();
+ if( xDialog.is() )
+ {
+ // Handle dialog itself as control
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialog;
+ implHandleControlResourceProperties( aDialogCtrl, aDlgName,
+ ::rtl::OUString(), m_xStringResourceManager, xDummyStringResolver, eMode );
+
+ // Handle all controls
+ Sequence< ::rtl::OUString > aNames = xDialog->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ for( sal_Int32 j = 0 ; j < nCtrls ; ++j )
+ {
+ ::rtl::OUString aCtrlName( pNames[j] );
+ Any aCtrl = xDialog->getByName( aCtrlName );
+ implHandleControlResourceProperties( aCtrl, aDlgName,
+ aCtrlName, m_xStringResourceManager, xDummyStringResolver, eMode );
+ }
+ }
+ }
+ }
+}
+
+
+::rtl::OUString implCreatePureResourceId
+ ( const ::rtl::OUString& aDialogName, const ::rtl::OUString& aCtrlName,
+ const ::rtl::OUString& aPropName,
+ Reference< XStringResourceManager > xStringResourceManager )
+{
+ sal_Int32 nUniqueId = xStringResourceManager->getUniqueNumericId();
+ ::rtl::OUString aPureIdStr = ::rtl::OUString::valueOf( nUniqueId );
+ aPureIdStr += aDot;
+ aPureIdStr += aDialogName;
+ aPureIdStr += aDot;
+ if( aCtrlName.getLength() )
+ {
+ aPureIdStr += aCtrlName;
+ aPureIdStr += aDot;
+ }
+ aPureIdStr += aPropName;
+ return aPureIdStr;
+}
+
+extern bool localesAreEqual( const ::com::sun::star::lang::Locale& rLocaleLeft,
+ const ::com::sun::star::lang::Locale& rLocaleRight );
+
+// Works on xStringResourceManager's current language for SET_IDS/RESET_IDS,
+// anyway only one language should exist when calling this method then,
+// either the first one for mode SET_IDS or the last one for mode RESET_IDS
+sal_Int32 LocalizationMgr::implHandleControlResourceProperties
+ ( Any aControlAny, const ::rtl::OUString& aDialogName, const ::rtl::OUString& aCtrlName,
+ Reference< XStringResourceManager > xStringResourceManager,
+ Reference< XStringResourceResolver > xSourceStringResolver, HandleResourceMode eMode )
+{
+ sal_Int32 nChangedCount = 0;
+
+ Reference< XPropertySet > xPropertySet;
+ aControlAny >>= xPropertySet;
+ if( xPropertySet.is() )
+ {
+ Sequence< Locale > aLocaleSeq = xStringResourceManager->getLocales();
+ sal_Int32 nLocaleCount = aLocaleSeq.getLength();
+ if( nLocaleCount == 0 )
+ return 0;
+
+ Reference< XPropertySetInfo > xPropertySetInfo = xPropertySet->getPropertySetInfo();
+ if( xPropertySetInfo.is() )
+ {
+ // get sequence of control properties
+ Sequence< Property > aPropSeq = xPropertySetInfo->getProperties();
+ const Property* pProps = aPropSeq.getConstArray();
+ sal_Int32 nCtrlProps = aPropSeq.getLength();
+
+ // create a map of tab indices and control names, sorted by tab index
+ for( sal_Int32 j = 0 ; j < nCtrlProps ; ++j )
+ {
+ const Property& rProp = pProps[j];
+ ::rtl::OUString aPropName = rProp.Name;
+ TypeClass eType = rProp.Type.getTypeClass();
+ bool bLanguageDependentProperty =
+ (eType == TypeClass_STRING || eType == TypeClass_SEQUENCE)
+ && isLanguageDependentProperty( aPropName );
+ if( !bLanguageDependentProperty )
+ continue;
+
+ if( eType == TypeClass_STRING )
+ {
+ Any aPropAny = xPropertySet->getPropertyValue( aPropName );
+ ::rtl::OUString aPropStr;
+ aPropAny >>= aPropStr;
+
+ // Replace string by id, add id+string to StringResource
+ if( eMode == SET_IDS )
+ {
+ bool bEscAlreadyExisting = (aPropStr.getLength() && aPropStr.getStr()[0] == '&' );
+ if( bEscAlreadyExisting )
+ continue;
+
+ ::rtl::OUString aPureIdStr = implCreatePureResourceId
+ ( aDialogName, aCtrlName, aPropName, xStringResourceManager );
+
+ // Set Id for all locales
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ for( sal_Int32 i = 0 ; i < nLocaleCount ; i++ )
+ {
+ const Locale& rLocale = pLocales[ i ];
+ xStringResourceManager->setStringForLocale( aPureIdStr, aPropStr, rLocale );
+ }
+
+ ::rtl::OUString aPropIdStr = aEsc;
+ aPropIdStr += aPureIdStr;
+ // TODO?: Change here and in toolkit
+ //aPropIdStr += aSemi;
+ (void)aSemi;
+ aPropAny <<= aPropIdStr;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ // Replace id by string from StringResource
+ else if( eMode == RESET_IDS )
+ {
+ if( aPropStr.getLength() > 1 )
+ {
+ ::rtl::OUString aPureIdStr = aPropStr.copy( 1 );
+ ::rtl::OUString aNewPropStr = aPropStr;
+ try
+ {
+ aNewPropStr = xStringResourceManager->resolveString( aPureIdStr );
+ }
+ catch(MissingResourceException&)
+ {
+ }
+ aPropAny <<= aNewPropStr;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ }
+ // Remove Id for all locales
+ else if( eMode == REMOVE_IDS_FROM_RESOURCE )
+ {
+ if( aPropStr.getLength() > 1 )
+ {
+ ::rtl::OUString aPureIdStr = aPropStr.copy( 1 );
+
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ for( sal_Int32 i = 0 ; i < nLocaleCount ; i++ )
+ {
+ const Locale& rLocale = pLocales[ i ];
+ try
+ {
+ xStringResourceManager->removeIdForLocale( aPureIdStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {
+ }
+ }
+ }
+ }
+ // Rename resource id
+ else if( eMode == RENAME_DIALOG_IDS || eMode == RENAME_CONTROL_IDS )
+ {
+ ::rtl::OUString aSourceIdStr = aPropStr;
+ ::rtl::OUString aPureSourceIdStr = aSourceIdStr.copy( 1 );
+
+ ::rtl::OUString aPureIdStr = implCreatePureResourceId
+ ( aDialogName, aCtrlName, aPropName, xStringResourceManager );
+
+ // Set new Id and remove old one for all locales
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ for( sal_Int32 i = 0 ; i < nLocaleCount ; i++ )
+ {
+ const Locale& rLocale = pLocales[ i ];
+ ::rtl::OUString aResStr;
+ try
+ {
+ aResStr = xStringResourceManager->resolveStringForLocale
+ ( aPureSourceIdStr, rLocale );
+ xStringResourceManager->removeIdForLocale( aPureSourceIdStr, rLocale );
+ xStringResourceManager->setStringForLocale( aPureIdStr, aResStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {}
+ }
+
+ ::rtl::OUString aPropIdStr = aEsc;
+ aPropIdStr += aPureIdStr;
+ // TODO?: Change here and in toolkit
+ //aPropIdStr += aSemi;
+ (void)aSemi;
+ aPropAny <<= aPropIdStr;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ // Replace string by string from source StringResourceResolver
+ else if( eMode == MOVE_RESOURCES && xSourceStringResolver.is() )
+ {
+ ::rtl::OUString aSourceIdStr = aPropStr;
+ ::rtl::OUString aPureSourceIdStr = aSourceIdStr.copy( 1 );
+
+ ::rtl::OUString aPureIdStr = implCreatePureResourceId
+ ( aDialogName, aCtrlName, aPropName, xStringResourceManager );
+
+ const Locale& rDefaultLocale = xSourceStringResolver->getDefaultLocale();
+
+ // Set Id for all locales
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ for( sal_Int32 i = 0 ; i < nLocaleCount ; i++ )
+ {
+ const Locale& rLocale = pLocales[ i ];
+ ::rtl::OUString aResStr;
+ try
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rDefaultLocale );
+ }
+ xStringResourceManager->setStringForLocale( aPureIdStr, aResStr, rLocale );
+ }
+
+ ::rtl::OUString aPropIdStr = aEsc;
+ aPropIdStr += aPureIdStr;
+ // TODO?: Change here and in toolkit
+ //aPropIdStr += aSemi;
+ (void)aSemi;
+ aPropAny <<= aPropIdStr;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ // Copy string from source to target resource
+ else if( eMode == COPY_RESOURCES && xSourceStringResolver.is() )
+ {
+ ::rtl::OUString aSourceIdStr = aPropStr;
+ ::rtl::OUString aPureSourceIdStr = aSourceIdStr.copy( 1 );
+
+ const Locale& rDefaultLocale = xSourceStringResolver->getDefaultLocale();
+
+ // Copy Id for all locales
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ for( sal_Int32 i = 0 ; i < nLocaleCount ; i++ )
+ {
+ const Locale& rLocale = pLocales[ i ];
+ ::rtl::OUString aResStr;
+ try
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rDefaultLocale );
+ }
+ xStringResourceManager->setStringForLocale( aPureSourceIdStr, aResStr, rLocale );
+ }
+ }
+ nChangedCount++;
+ }
+
+ // Listbox / Combobox
+ else if( eType == TypeClass_SEQUENCE )
+ {
+ Any aPropAny = xPropertySet->getPropertyValue( aPropName );
+ Sequence< ::rtl::OUString > aPropStrings;
+ aPropAny >>= aPropStrings;
+
+ const ::rtl::OUString* pPropStrings = aPropStrings.getConstArray();
+ sal_Int32 nPropStringCount = aPropStrings.getLength();
+ if( nPropStringCount == 0 )
+ continue;
+
+ // Replace string by id, add id+string to StringResource
+ if( eMode == SET_IDS )
+ {
+ Sequence< ::rtl::OUString > aIdStrings;
+ aIdStrings.realloc( nPropStringCount );
+ ::rtl::OUString* pIdStrings = aIdStrings.getArray();
+
+ ::rtl::OUString aIdStrBase = aDot;
+ aIdStrBase += aCtrlName;
+ aIdStrBase += aDot;
+ aIdStrBase += aPropName;
+
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 i;
+ for ( i = 0; i < nPropStringCount; ++i )
+ {
+ ::rtl::OUString aPropStr = pPropStrings[i];
+ bool bEscAlreadyExisting = (aPropStr.getLength() && aPropStr.getStr()[0] == '&' );
+ if( bEscAlreadyExisting )
+ {
+ pIdStrings[i] = aPropStr;
+ continue;
+ }
+
+ sal_Int32 nUniqueId = xStringResourceManager->getUniqueNumericId();
+ ::rtl::OUString aPureIdStr = ::rtl::OUString::valueOf( nUniqueId );
+ aPureIdStr += aIdStrBase;
+
+ // Set Id for all locales
+ for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ )
+ {
+ const Locale& rLocale = pLocales[ iLocale ];
+ xStringResourceManager->setStringForLocale( aPureIdStr, aPropStr, rLocale );
+ }
+
+ ::rtl::OUString aPropIdStr = aEsc;
+ aPropIdStr += aPureIdStr;
+ pIdStrings[i] = aPropIdStr;
+ }
+ aPropAny <<= aIdStrings;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ // Replace id by string from StringResource
+ else if( eMode == RESET_IDS )
+ {
+ Sequence< ::rtl::OUString > aNewPropStrings;
+ aNewPropStrings.realloc( nPropStringCount );
+ ::rtl::OUString* pNewPropStrings = aNewPropStrings.getArray();
+
+ sal_Int32 i;
+ for ( i = 0; i < nPropStringCount; ++i )
+ {
+ ::rtl::OUString aIdStr = pPropStrings[i];
+ ::rtl::OUString aNewPropStr = aIdStr;
+ if( aIdStr.getLength() > 1 )
+ {
+ ::rtl::OUString aPureIdStr = aIdStr.copy( 1 );
+ try
+ {
+ aNewPropStr = xStringResourceManager->resolveString( aPureIdStr );
+ }
+ catch(MissingResourceException&)
+ {
+ }
+ }
+ pNewPropStrings[i] = aNewPropStr;
+ }
+ aPropAny <<= aNewPropStrings;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ // Remove Id for all locales
+ else if( eMode == REMOVE_IDS_FROM_RESOURCE )
+ {
+ Sequence< ::rtl::OUString > aNewPropStrings;
+ aNewPropStrings.realloc( nPropStringCount );
+
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 i;
+ for ( i = 0; i < nPropStringCount; ++i )
+ {
+ ::rtl::OUString aIdStr = pPropStrings[i];
+ if( aIdStr.getLength() > 1 )
+ {
+ ::rtl::OUString aPureIdStr = aIdStr.copy( 1 );
+
+ for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ )
+ {
+ const Locale& rLocale = pLocales[iLocale];
+ try
+ {
+ xStringResourceManager->removeIdForLocale( aPureIdStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {
+ }
+ }
+ }
+ }
+ }
+ // Rename resource id
+ else if( eMode == RENAME_CONTROL_IDS )
+ {
+ Sequence< ::rtl::OUString > aIdStrings;
+ aIdStrings.realloc( nPropStringCount );
+ ::rtl::OUString* pIdStrings = aIdStrings.getArray();
+
+ ::rtl::OUString aIdStrBase = aDot;
+ aIdStrBase += aCtrlName;
+ aIdStrBase += aDot;
+ aIdStrBase += aPropName;
+
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 i;
+ for ( i = 0; i < nPropStringCount; ++i )
+ {
+ ::rtl::OUString aSourceIdStr = pPropStrings[i];
+ ::rtl::OUString aPureSourceIdStr = aSourceIdStr.copy( 1 );
+
+ sal_Int32 nUniqueId = xStringResourceManager->getUniqueNumericId();
+ ::rtl::OUString aPureIdStr = ::rtl::OUString::valueOf( nUniqueId );
+ aPureIdStr += aIdStrBase;
+
+ // Set Id for all locales
+ for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ )
+ {
+ const Locale& rLocale = pLocales[ iLocale ];
+
+ ::rtl::OUString aResStr;
+ try
+ {
+ aResStr = xStringResourceManager->resolveStringForLocale
+ ( aPureSourceIdStr, rLocale );
+ xStringResourceManager->removeIdForLocale( aPureSourceIdStr, rLocale );
+ xStringResourceManager->setStringForLocale( aPureIdStr, aResStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {}
+ }
+
+ ::rtl::OUString aPropIdStr = aEsc;
+ aPropIdStr += aPureIdStr;
+ pIdStrings[i] = aPropIdStr;
+ }
+ aPropAny <<= aIdStrings;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ // Replace string by string from source StringResourceResolver
+ else if( eMode == MOVE_RESOURCES && xSourceStringResolver.is() )
+ {
+ Sequence< ::rtl::OUString > aIdStrings;
+ aIdStrings.realloc( nPropStringCount );
+ ::rtl::OUString* pIdStrings = aIdStrings.getArray();
+
+ ::rtl::OUString aIdStrBase = aDot;
+ aIdStrBase += aCtrlName;
+ aIdStrBase += aDot;
+ aIdStrBase += aPropName;
+
+ const Locale& rDefaultLocale = xSourceStringResolver->getDefaultLocale();
+
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 i;
+ for ( i = 0; i < nPropStringCount; ++i )
+ {
+ ::rtl::OUString aSourceIdStr = pPropStrings[i];
+ ::rtl::OUString aPureSourceIdStr = aSourceIdStr.copy( 1 );
+
+ sal_Int32 nUniqueId = xStringResourceManager->getUniqueNumericId();
+ ::rtl::OUString aPureIdStr = ::rtl::OUString::valueOf( nUniqueId );
+ aPureIdStr += aIdStrBase;
+
+ // Set Id for all locales
+ for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ )
+ {
+ const Locale& rLocale = pLocales[ iLocale ];
+
+ ::rtl::OUString aResStr;
+ try
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rDefaultLocale );
+ }
+ xStringResourceManager->setStringForLocale( aPureIdStr, aResStr, rLocale );
+ }
+
+ ::rtl::OUString aPropIdStr = aEsc;
+ aPropIdStr += aPureIdStr;
+ pIdStrings[i] = aPropIdStr;
+ }
+ aPropAny <<= aIdStrings;
+ xPropertySet->setPropertyValue( aPropName, aPropAny );
+ }
+ // Copy string from source to target resource
+ else if( eMode == COPY_RESOURCES && xSourceStringResolver.is() )
+ {
+ const Locale& rDefaultLocale = xSourceStringResolver->getDefaultLocale();
+
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 i;
+ for ( i = 0; i < nPropStringCount; ++i )
+ {
+ ::rtl::OUString aSourceIdStr = pPropStrings[i];
+ ::rtl::OUString aPureSourceIdStr = aSourceIdStr.copy( 1 );
+
+ // Set Id for all locales
+ for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ )
+ {
+ const Locale& rLocale = pLocales[ iLocale ];
+
+ ::rtl::OUString aResStr;
+ try
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rLocale );
+ }
+ catch(MissingResourceException&)
+ {
+ aResStr = xSourceStringResolver->resolveStringForLocale
+ ( aPureSourceIdStr, rDefaultLocale );
+ }
+ xStringResourceManager->setStringForLocale( aPureSourceIdStr, aResStr, rLocale );
+ }
+ }
+ }
+ nChangedCount++;
+ }
+ }
+ }
+ }
+ return nChangedCount;
+}
+
+/*
+void TEST_simulateDialogAddRemoveLocale( bool bAdd )
+{
+ Sequence< Locale > aLocaleSeq( 1 );
+ Locale* pLocales = aLocaleSeq.getArray();
+
+ ::com::sun::star::lang::Locale aLocale_en;
+ aLocale_en.Language = ::rtl::OUString::createFromAscii( "en" );
+ aLocale_en.Country = ::rtl::OUString::createFromAscii( "US" );
+
+ ::com::sun::star::lang::Locale aLocale_de;
+ aLocale_de.Language = ::rtl::OUString::createFromAscii( "de" );
+ aLocale_de.Country = ::rtl::OUString::createFromAscii( "DE" );
+
+ ::com::sun::star::lang::Locale aLocale_fr;
+ aLocale_fr.Language = ::rtl::OUString::createFromAscii( "fr" );
+ aLocale_fr.Country = ::rtl::OUString::createFromAscii( "FR" );
+
+ int n = 0;
+ if( n == 0 )
+ pLocales[0] = aLocale_en;
+ else if( n == 1 )
+ pLocales[0] = aLocale_de;
+ else if( n == 2 )
+ pLocales[0] = aLocale_fr;
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ LocalizationMgr* pMgr = pIDEShell->GetCurLocalizationMgr();
+ if( bAdd )
+ pMgr->handleAddLocales( aLocaleSeq );
+ else
+ pMgr->handleRemoveLocales( aLocaleSeq );
+}
+
+void TEST_simulateDialogAddLocale( void )
+{
+ TEST_simulateDialogAddRemoveLocale( true );
+}
+
+void TEST_simulateDialogRemoveLocale( void )
+{
+ TEST_simulateDialogAddRemoveLocale( false );
+}
+*/
+
+void LocalizationMgr::handleAddLocales( Sequence< Locale > aLocaleSeq )
+{
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 nLocaleCount = aLocaleSeq.getLength();
+
+ if( isLibraryLocalized() )
+ {
+ for( sal_Int32 i = 0 ; i < nLocaleCount ; i++ )
+ {
+ const Locale& rLocale = pLocales[ i ];
+ m_xStringResourceManager->newLocale( rLocale );
+ }
+ }
+ else
+ {
+ DBG_ASSERT( nLocaleCount==1, "LocalizationMgr::handleAddLocales(): Only one first locale allowed" );
+
+ const Locale& rLocale = pLocales[ 0 ];
+ m_xStringResourceManager->newLocale( rLocale );
+ enableResourceForAllLibraryDialogs();
+ }
+
+ BasicIDE::MarkDocumentModified( m_aDocument );
+
+ // update locale toolbar
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_CURRENT_LANG );
+
+ handleTranslationbar();
+}
+
+
+void LocalizationMgr::handleRemoveLocales( Sequence< Locale > aLocaleSeq )
+{
+ const Locale* pLocales = aLocaleSeq.getConstArray();
+ sal_Int32 nLocaleCount = aLocaleSeq.getLength();
+ bool bConsistant = true;
+ bool bModified = false;
+
+ for( sal_Int32 i = 0 ; i < nLocaleCount ; i++ )
+ {
+ const Locale& rLocale = pLocales[ i ];
+ bool bRemove = true;
+
+ // Check if last locale
+ Sequence< Locale > aResLocaleSeq = m_xStringResourceManager->getLocales();
+ if( aResLocaleSeq.getLength() == 1 )
+ {
+ const Locale& rLastResLocale = aResLocaleSeq.getConstArray()[ 0 ];
+ if( localesAreEqual( rLocale, rLastResLocale ) )
+ {
+ disableResourceForAllLibraryDialogs();
+ }
+ else
+ {
+ // Inconsistancy, keep last locale
+ bConsistant = false;
+ bRemove = false;
+ }
+ }
+
+ if( bRemove )
+ {
+ try
+ {
+ m_xStringResourceManager->removeLocale( rLocale );
+ bModified = true;
+ }
+ catch(IllegalArgumentException&)
+ {
+ bConsistant = false;
+ }
+ }
+ }
+ if( bModified )
+ {
+ BasicIDE::MarkDocumentModified( m_aDocument );
+
+ // update slots
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_BASICIDE_CURRENT_LANG );
+ pBindings->Invalidate( SID_BASICIDE_MANAGE_LANG );
+ }
+
+ handleTranslationbar();
+ }
+
+ DBG_ASSERT( bConsistant,
+ "LocalizationMgr::handleRemoveLocales(): sequence contains unsupported locales" );
+}
+
+void LocalizationMgr::handleSetDefaultLocale( Locale aLocale )
+{
+ if( m_xStringResourceManager.is() )
+ {
+ try
+ {
+ m_xStringResourceManager->setDefaultLocale( aLocale );
+ }
+ catch(IllegalArgumentException&)
+ {
+ DBG_ERROR( "LocalizationMgr::handleSetDefaultLocale: Invalid locale" );
+ }
+
+ // update locale toolbar
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_CURRENT_LANG );
+ }
+}
+
+void LocalizationMgr::handleSetCurrentLocale( ::com::sun::star::lang::Locale aLocale )
+{
+ if( m_xStringResourceManager.is() )
+ {
+ try
+ {
+ m_xStringResourceManager->setCurrentLocale( aLocale, false );
+ }
+ catch(IllegalArgumentException&)
+ {
+ DBG_ERROR( "LocalizationMgr::handleSetCurrentLocale: Invalid locale" );
+ }
+
+ // update locale toolbar
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_CURRENT_LANG );
+
+ IDEBaseWindow* pCurWin = m_pIDEShell->GetCurWindow();
+ if ( pCurWin && !pCurWin->IsSuspended() && pCurWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ DialogWindow* pDlgWin = (DialogWindow*)pCurWin;
+ DlgEditor* pWinEditor = pDlgWin->GetEditor();
+ if( pWinEditor )
+ pWinEditor->UpdatePropertyBrowserDelayed();
+ }
+ }
+}
+
+void LocalizationMgr::handleBasicStarted( void )
+{
+ if( m_xStringResourceManager.is() )
+ m_aLocaleBeforeBasicStart = m_xStringResourceManager->getCurrentLocale();
+}
+
+void LocalizationMgr::handleBasicStopped( void )
+{
+ try
+ {
+ if( m_xStringResourceManager.is() )
+ m_xStringResourceManager->setCurrentLocale( m_aLocaleBeforeBasicStart, true );
+ }
+ catch(IllegalArgumentException&)
+ {
+ }
+}
+
+
+DialogWindow* FindDialogWindowForEditor( DlgEditor* pEditor )
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ IDEWindowTable& aIDEWindowTable = pIDEShell->GetIDEWindowTable();
+ IDEBaseWindow* pWin = aIDEWindowTable.First();
+ DialogWindow* pFoundDlgWin = NULL;
+ while( pWin )
+ {
+ if ( !pWin->IsSuspended() && pWin->IsA( TYPE( DialogWindow ) ) )
+ {
+ DialogWindow* pDlgWin = (DialogWindow*)pWin;
+ DlgEditor* pWinEditor = pDlgWin->GetEditor();
+ if( pWinEditor == pEditor )
+ {
+ pFoundDlgWin = pDlgWin;
+ break;
+ }
+ }
+ pWin = aIDEWindowTable.Next();
+ }
+ return pFoundDlgWin;
+}
+
+
+void LocalizationMgr::setControlResourceIDsForNewEditorObject( DlgEditor* pEditor,
+ Any aControlAny, const ::rtl::OUString& aCtrlName )
+{
+ // Get library for DlgEditor
+ DialogWindow* pDlgWin = FindDialogWindowForEditor( pEditor );
+ if( !pDlgWin )
+ return;
+ ScriptDocument aDocument( pDlgWin->GetDocument() );
+ DBG_ASSERT( aDocument.isValid(), "LocalizationMgr::setControlResourceIDsForNewEditorObject: invalid document!" );
+ if ( !aDocument.isValid() )
+ return;
+ const String& rLibName = pDlgWin->GetLibName();
+ Reference< container::XNameContainer > xDialogLib( aDocument.getLibrary( E_DIALOGS, rLibName, TRUE ) );
+ Reference< XStringResourceManager > xStringResourceManager =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+
+ // Set resource property
+ if( !xStringResourceManager.is() || xStringResourceManager->getLocales().getLength() == 0 )
+ return;
+
+ ::rtl::OUString aDialogName = pDlgWin->GetName();
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ sal_Int32 nChangedCount = implHandleControlResourceProperties
+ ( aControlAny, aDialogName, aCtrlName, xStringResourceManager,
+ xDummyStringResolver, SET_IDS );
+
+ if( nChangedCount )
+ BasicIDE::MarkDocumentModified( aDocument );
+}
+
+void LocalizationMgr::renameControlResourceIDsForEditorObject( DlgEditor* pEditor,
+ ::com::sun::star::uno::Any aControlAny, const ::rtl::OUString& aNewCtrlName )
+{
+ // Get library for DlgEditor
+ DialogWindow* pDlgWin = FindDialogWindowForEditor( pEditor );
+ if( !pDlgWin )
+ return;
+ ScriptDocument aDocument( pDlgWin->GetDocument() );
+ DBG_ASSERT( aDocument.isValid(), "LocalizationMgr::renameControlResourceIDsForEditorObject: invalid document!" );
+ if ( !aDocument.isValid() )
+ return;
+ const String& rLibName = pDlgWin->GetLibName();
+ Reference< container::XNameContainer > xDialogLib( aDocument.getLibrary( E_DIALOGS, rLibName, TRUE ) );
+ Reference< XStringResourceManager > xStringResourceManager =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+
+ // Set resource property
+ if( !xStringResourceManager.is() || xStringResourceManager->getLocales().getLength() == 0 )
+ return;
+
+ ::rtl::OUString aDialogName = pDlgWin->GetName();
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ implHandleControlResourceProperties
+ ( aControlAny, aDialogName, aNewCtrlName, xStringResourceManager,
+ xDummyStringResolver, RENAME_CONTROL_IDS );
+}
+
+
+void LocalizationMgr::deleteControlResourceIDsForDeletedEditorObject( DlgEditor* pEditor,
+ Any aControlAny, const ::rtl::OUString& aCtrlName )
+{
+ // Get library for DlgEditor
+ DialogWindow* pDlgWin = FindDialogWindowForEditor( pEditor );
+ if( !pDlgWin )
+ return;
+ ScriptDocument aDocument( pDlgWin->GetDocument() );
+ DBG_ASSERT( aDocument.isValid(), "LocalizationMgr::deleteControlResourceIDsForDeletedEditorObject: invalid document!" );
+ if ( !aDocument.isValid() )
+ return;
+ const String& rLibName = pDlgWin->GetLibName();
+ Reference< container::XNameContainer > xDialogLib( aDocument.getLibrary( E_DIALOGS, rLibName, TRUE ) );
+ Reference< XStringResourceManager > xStringResourceManager =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+
+ ::rtl::OUString aDialogName = pDlgWin->GetName();
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ sal_Int32 nChangedCount = implHandleControlResourceProperties
+ ( aControlAny, aDialogName, aCtrlName, xStringResourceManager,
+ xDummyStringResolver, REMOVE_IDS_FROM_RESOURCE );
+
+ if( nChangedCount )
+ BasicIDE::MarkDocumentModified( aDocument );
+}
+
+void LocalizationMgr::setStringResourceAtDialog( const ScriptDocument& rDocument, const String& aLibName,
+ const String& aDlgName, Reference< container::XNameContainer > xDialogModel )
+{
+ static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAscii( "ResourceResolver" );
+
+ // Get library
+ Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, TRUE ) );
+ Reference< XStringResourceManager > xStringResourceManager =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+
+ // Set resource property
+ if( xStringResourceManager.is() )
+ {
+ // Not very elegant as dialog may or may not be localized yet
+ // TODO: Find better place, where dialog is created
+ if( xStringResourceManager->getLocales().getLength() > 0 )
+ {
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialogModel;
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ implHandleControlResourceProperties( aDialogCtrl, aDlgName,
+ ::rtl::OUString(), xStringResourceManager,
+ xDummyStringResolver, SET_IDS );
+ }
+
+ Reference< beans::XPropertySet > xDlgPSet( xDialogModel, UNO_QUERY );
+ Any aStringResourceManagerAny;
+ aStringResourceManagerAny <<= xStringResourceManager;
+ xDlgPSet->setPropertyValue( aResourceResolverPropName, aStringResourceManagerAny );
+ }
+}
+
+void LocalizationMgr::renameStringResourceIDs( const ScriptDocument& rDocument, const String& aLibName,
+ const String& aDlgName, Reference< container::XNameContainer > xDialogModel )
+{
+ // Get library
+ Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, TRUE ) );
+ Reference< XStringResourceManager > xStringResourceManager =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+ if( !xStringResourceManager.is() )
+ return;
+
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialogModel;
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ implHandleControlResourceProperties( aDialogCtrl, aDlgName,
+ ::rtl::OUString(), xStringResourceManager,
+ xDummyStringResolver, RENAME_DIALOG_IDS );
+
+ // Handle all controls
+ Sequence< ::rtl::OUString > aNames = xDialogModel->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ for( sal_Int32 i = 0 ; i < nCtrls ; ++i )
+ {
+ ::rtl::OUString aCtrlName( pNames[i] );
+ Any aCtrl = xDialogModel->getByName( aCtrlName );
+ implHandleControlResourceProperties( aCtrl, aDlgName,
+ aCtrlName, xStringResourceManager,
+ xDummyStringResolver, RENAME_DIALOG_IDS );
+ }
+}
+
+void LocalizationMgr::removeResourceForDialog( const ScriptDocument& rDocument, const String& aLibName,
+ const String& aDlgName, Reference< container::XNameContainer > xDialogModel )
+{
+ // Get library
+ Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, TRUE ) );
+ Reference< XStringResourceManager > xStringResourceManager =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+ if( !xStringResourceManager.is() )
+ return;
+
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialogModel;
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ implHandleControlResourceProperties( aDialogCtrl, aDlgName,
+ ::rtl::OUString(), xStringResourceManager,
+ xDummyStringResolver, REMOVE_IDS_FROM_RESOURCE );
+
+ // Handle all controls
+ Sequence< ::rtl::OUString > aNames = xDialogModel->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ for( sal_Int32 i = 0 ; i < nCtrls ; ++i )
+ {
+ ::rtl::OUString aCtrlName( pNames[i] );
+ Any aCtrl = xDialogModel->getByName( aCtrlName );
+ implHandleControlResourceProperties( aCtrl, aDlgName,
+ aCtrlName, xStringResourceManager,
+ xDummyStringResolver, REMOVE_IDS_FROM_RESOURCE );
+ }
+}
+
+void LocalizationMgr::resetResourceForDialog( Reference< container::XNameContainer > xDialogModel,
+ Reference< XStringResourceManager > xStringResourceManager )
+{
+ if( !xStringResourceManager.is() )
+ return;
+
+ // Dialog as control
+ ::rtl::OUString aDummyName;
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialogModel;
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ implHandleControlResourceProperties( aDialogCtrl, aDummyName,
+ aDummyName, xStringResourceManager, xDummyStringResolver, RESET_IDS );
+
+ // Handle all controls
+ Sequence< ::rtl::OUString > aNames = xDialogModel->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ for( sal_Int32 i = 0 ; i < nCtrls ; ++i )
+ {
+ ::rtl::OUString aCtrlName( pNames[i] );
+ Any aCtrl = xDialogModel->getByName( aCtrlName );
+ implHandleControlResourceProperties( aCtrl, aDummyName,
+ aCtrlName, xStringResourceManager, xDummyStringResolver, RESET_IDS );
+ }
+}
+
+void LocalizationMgr::setResourceIDsForDialog( Reference< container::XNameContainer > xDialogModel,
+ Reference< XStringResourceManager > xStringResourceManager )
+{
+ if( !xStringResourceManager.is() )
+ return;
+
+ // Dialog as control
+ ::rtl::OUString aDummyName;
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialogModel;
+ Reference< XStringResourceResolver > xDummyStringResolver;
+ implHandleControlResourceProperties( aDialogCtrl, aDummyName,
+ aDummyName, xStringResourceManager, xDummyStringResolver, SET_IDS );
+
+ // Handle all controls
+ Sequence< ::rtl::OUString > aNames = xDialogModel->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ for( sal_Int32 i = 0 ; i < nCtrls ; ++i )
+ {
+ ::rtl::OUString aCtrlName( pNames[i] );
+ Any aCtrl = xDialogModel->getByName( aCtrlName );
+ implHandleControlResourceProperties( aCtrl, aDummyName,
+ aCtrlName, xStringResourceManager, xDummyStringResolver, SET_IDS );
+ }
+}
+
+void LocalizationMgr::copyResourcesForPastedEditorObject( DlgEditor* pEditor,
+ Any aControlAny, const ::rtl::OUString& aCtrlName,
+ Reference< XStringResourceResolver > xSourceStringResolver )
+{
+ // Get library for DlgEditor
+ DialogWindow* pDlgWin = FindDialogWindowForEditor( pEditor );
+ if( !pDlgWin )
+ return;
+ ScriptDocument aDocument( pDlgWin->GetDocument() );
+ DBG_ASSERT( aDocument.isValid(), "LocalizationMgr::copyResourcesForPastedEditorObject: invalid document!" );
+ if ( !aDocument.isValid() )
+ return;
+ const String& rLibName = pDlgWin->GetLibName();
+ Reference< container::XNameContainer > xDialogLib( aDocument.getLibrary( E_DIALOGS, rLibName, TRUE ) );
+ Reference< XStringResourceManager > xStringResourceManager =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+
+ // Set resource property
+ if( !xStringResourceManager.is() || xStringResourceManager->getLocales().getLength() == 0 )
+ return;
+
+ ::rtl::OUString aDialogName = pDlgWin->GetName();
+ implHandleControlResourceProperties
+ ( aControlAny, aDialogName, aCtrlName, xStringResourceManager,
+ xSourceStringResolver, MOVE_RESOURCES );
+}
+
+void LocalizationMgr::copyResourceForDroppedDialog( Reference< container::XNameContainer > xDialogModel,
+ const ::rtl::OUString& aDialogName, Reference< XStringResourceManager > xStringResourceManager,
+ Reference< XStringResourceResolver > xSourceStringResolver )
+{
+ if( !xStringResourceManager.is() )
+ return;
+
+ // Dialog as control
+ ::rtl::OUString aDummyName;
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialogModel;
+ implHandleControlResourceProperties( aDialogCtrl, aDialogName,
+ aDummyName, xStringResourceManager, xSourceStringResolver, MOVE_RESOURCES );
+
+ // Handle all controls
+ Sequence< ::rtl::OUString > aNames = xDialogModel->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ for( sal_Int32 i = 0 ; i < nCtrls ; ++i )
+ {
+ ::rtl::OUString aCtrlName( pNames[i] );
+ Any aCtrl = xDialogModel->getByName( aCtrlName );
+ implHandleControlResourceProperties( aCtrl, aDialogName,
+ aCtrlName, xStringResourceManager, xSourceStringResolver, MOVE_RESOURCES );
+ }
+}
+
+void LocalizationMgr::copyResourceForDialog(
+ const Reference< container::XNameContainer >& xDialogModel,
+ const Reference< XStringResourceResolver >& xSourceStringResolver,
+ const Reference< XStringResourceManager >& xTargetStringResourceManager )
+{
+ if( !xDialogModel.is() || !xSourceStringResolver.is() || !xTargetStringResourceManager.is() )
+ return;
+
+ ::rtl::OUString aDummyName;
+ Any aDialogCtrl;
+ aDialogCtrl <<= xDialogModel;
+ implHandleControlResourceProperties
+ ( aDialogCtrl, aDummyName, aDummyName, xTargetStringResourceManager,
+ xSourceStringResolver, COPY_RESOURCES );
+
+ // Handle all controls
+ Sequence< ::rtl::OUString > aNames = xDialogModel->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ for( sal_Int32 i = 0 ; i < nCtrls ; ++i )
+ {
+ ::rtl::OUString aCtrlName( pNames[i] );
+ Any aCtrl = xDialogModel->getByName( aCtrlName );
+ implHandleControlResourceProperties( aCtrl, aDummyName, aDummyName,
+ xTargetStringResourceManager, xSourceStringResolver, COPY_RESOURCES );
+ }
+}
+
+Reference< XStringResourceManager > LocalizationMgr::getStringResourceFromDialogLibrary
+ ( Reference< container::XNameContainer > xDialogLib )
+{
+ Reference< XStringResourceManager > xStringResourceManager;
+ if( xDialogLib.is() )
+ {
+ Reference< resource::XStringResourceSupplier > xStringResourceSupplier( xDialogLib, UNO_QUERY );
+ if( xStringResourceSupplier.is() )
+ {
+ Reference< resource::XStringResourceResolver >
+ xStringResourceResolver = xStringResourceSupplier->getStringResource();
+
+ xStringResourceManager =
+ Reference< resource::XStringResourceManager >( xStringResourceResolver, UNO_QUERY );
+ }
+ }
+ return xStringResourceManager;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/macrodlg.cxx b/basctl/source/basicide/macrodlg.cxx
new file mode 100644
index 000000000000..e3f21bba669a
--- /dev/null
+++ b/basctl/source/basicide/macrodlg.cxx
@@ -0,0 +1,923 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <memory>
+
+#include <ide_pch.hxx>
+
+
+#include <macrodlg.hxx>
+#include <macrodlg.hrc>
+#include <basidesh.hrc>
+#include <basidesh.hxx>
+#include <baside2.hrc> // ID's fuer Imagese
+#include <basobj.hxx>
+#include <baside3.hxx>
+
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <iderid.hxx>
+
+#include <moduldlg.hxx>
+#include <basic/sbx.hxx>
+
+#include <bastypes.hxx>
+#include <sbxitem.hxx>
+#include <sfx2/minfitem.hxx>
+
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <com/sun/star/document/MacroExecMode.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+
+DECLARE_LIST( MacroList, SbMethod* )
+
+MacroChooser::MacroChooser( Window* pParnt, BOOL bCreateEntries ) :
+ SfxModalDialog( pParnt, IDEResId( RID_MACROCHOOSER ) ),
+ aMacroNameTxt( this, IDEResId( RID_TXT_MACRONAME ) ),
+ aMacroNameEdit( this, IDEResId( RID_ED_MACRONAME ) ),
+ aMacroFromTxT( this, IDEResId( RID_TXT_MACROFROM ) ),
+ aMacrosSaveInTxt( this, IDEResId( RID_TXT_SAVEMACRO ) ),
+ aBasicBox( this, IDEResId( RID_CTRL_LIB ) ),
+ aMacrosInTxt( this, IDEResId( RID_TXT_MACROSIN ) ),
+ aMacroBox( this, IDEResId( RID_CTRL_MACRO ) ),
+ aRunButton( this, IDEResId( RID_PB_RUN ) ),
+ aCloseButton( this, IDEResId( RID_PB_CLOSE ) ),
+ aAssignButton( this, IDEResId( RID_PB_ASSIGN ) ),
+ aEditButton( this, IDEResId( RID_PB_EDIT ) ),
+ aNewDelButton( this, IDEResId( RID_PB_DEL ) ),
+ aOrganizeButton( this, IDEResId( RID_PB_ORG ) ),
+ aHelpButton( this, IDEResId( RID_PB_HELP ) ),
+ aNewLibButton( this, IDEResId( RID_PB_NEWLIB ) ),
+ aNewModButton( this, IDEResId( RID_PB_NEWMOD ) )
+{
+ FreeResource();
+
+ nMode = MACROCHOOSER_ALL;
+ bNewDelIsDel = TRUE;
+
+ // Der Sfx fragt den BasicManager nicht, ob modified
+ // => Speichern anschmeissen, wenn Aenderung, aber kein Sprung in
+ // die BasicIDE.
+ bForceStoreBasic = FALSE;
+
+ aMacrosInTxtBaseStr = aMacrosInTxt.GetText();
+
+ aMacroBox.SetSelectionMode( SINGLE_SELECTION );
+ aMacroBox.SetHighlightRange(); // ueber ganze Breite selektieren
+
+ aRunButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+ aCloseButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+ aAssignButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+ aEditButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+ aNewDelButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+ aOrganizeButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+
+ // Buttons only for MACROCHOOSER_RECORDING
+ aNewLibButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+ aNewModButton.SetClickHdl( LINK( this, MacroChooser, ButtonHdl ) );
+ aNewLibButton.Hide(); // default
+ aNewModButton.Hide(); // default
+ aMacrosSaveInTxt.Hide(); // default
+
+ aMacrosInTxt.SetStyle( WB_NOMULTILINE | WB_PATHELLIPSIS );
+
+ aMacroNameEdit.SetModifyHdl( LINK( this, MacroChooser, EditModifyHdl ) );
+
+ aBasicBox.SetSelectHdl( LINK( this, MacroChooser, BasicSelectHdl ) );
+
+ aMacroBox.SetDoubleClickHdl( LINK( this, MacroChooser, MacroDoubleClickHdl ) );
+ aMacroBox.SetSelectHdl( LINK( this, MacroChooser, MacroSelectHdl ) );
+
+ aBasicBox.SetMode( BROWSEMODE_MODULES );
+ aBasicBox.SetWindowBits( WB_HASLINES | WB_HASLINESATROOT |
+ WB_HASBUTTONS | WB_HASBUTTONSATROOT |
+ WB_HSCROLL );
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_STOREALLMODULESOURCES );
+ }
+
+ if ( bCreateEntries )
+ aBasicBox.ScanAllEntries();
+}
+
+MacroChooser::~MacroChooser()
+{
+ if ( bForceStoreBasic )
+ SFX_APP()->SaveBasicAndDialogContainer();
+}
+
+void MacroChooser::StoreMacroDescription()
+{
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( aBasicBox.FirstSelected() ) );
+ String aMethodName;
+ SvLBoxEntry* pEntry = aMacroBox.FirstSelected();
+ if ( pEntry )
+ aMethodName = aMacroBox.GetEntryText( pEntry );
+ else
+ aMethodName = aMacroNameEdit.GetText();
+ if ( aMethodName.Len() )
+ {
+ aDesc.SetMethodName( aMethodName );
+ aDesc.SetType( OBJ_TYPE_METHOD );
+ }
+
+ BasicIDEData* pData = IDE_DLL()->GetExtraData();
+ if ( pData )
+ pData->SetLastEntryDescriptor( aDesc );
+}
+
+void MacroChooser::RestoreMacroDescription()
+{
+ BasicEntryDescriptor aDesc;
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ {
+ IDEBaseWindow* pCurWin = pIDEShell->GetCurWindow();
+ if ( pCurWin )
+ aDesc = pCurWin->CreateEntryDescriptor();
+ }
+ else
+ {
+ BasicIDEData* pData = IDE_DLL()->GetExtraData();
+ if ( pData )
+ aDesc = pData->GetLastEntryDescriptor();
+ }
+
+ aBasicBox.SetCurrentEntry( aDesc );
+
+ String aLastMacro( aDesc.GetMethodName() );
+ if ( aLastMacro.Len() )
+ {
+ // find entry in macro box
+ SvLBoxEntry* pEntry = 0;
+ ULONG nPos = 0;
+ SvLBoxEntry* pE = aMacroBox.GetEntry( nPos );
+ while ( pE )
+ {
+ if ( aMacroBox.GetEntryText( pE ) == aLastMacro )
+ {
+ pEntry = pE;
+ break;
+ }
+ pE = aMacroBox.GetEntry( ++nPos );
+ }
+
+ if ( pEntry )
+ aMacroBox.SetCurEntry( pEntry );
+ else
+ {
+ aMacroNameEdit.SetText( aLastMacro );
+ aMacroNameEdit.SetSelection( Selection( 0, 0 ) );
+ }
+ }
+}
+
+short __EXPORT MacroChooser::Execute()
+{
+ RestoreMacroDescription();
+ aRunButton.GrabFocus();
+
+ // #104198 Check if "wrong" document is active
+ SvLBoxEntry* pSelectedEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pSelectedEntry ) );
+ const ScriptDocument& rSelectedDoc( aDesc.GetDocument() );
+
+ // App Basic is always ok, so only check if shell was found
+ if( rSelectedDoc.isDocument() && !rSelectedDoc.isActive() )
+ {
+ // Search for the right entry
+ ULONG nRootPos = 0;
+ SvLBoxEntry* pRootEntry = aBasicBox.GetEntry( nRootPos );
+ while( pRootEntry )
+ {
+ BasicEntryDescriptor aCmpDesc( aBasicBox.GetEntryDescriptor( pRootEntry ) );
+ const ScriptDocument& rCmpDoc( aCmpDesc.GetDocument() );
+ if ( rCmpDoc.isDocument() && rCmpDoc.isActive() )
+ {
+ SvLBoxEntry* pEntry = pRootEntry;
+ SvLBoxEntry* pLastValid = pEntry;
+ while ( pEntry )
+ {
+ pLastValid = pEntry;
+ pEntry = aBasicBox.FirstChild( pEntry );
+ }
+ if( pLastValid )
+ aBasicBox.SetCurEntry( pLastValid );
+ }
+ pRootEntry = aBasicBox.GetEntry( ++nRootPos );
+ }
+ }
+
+ CheckButtons();
+ UpdateFields();
+
+ if ( StarBASIC::IsRunning() )
+ aCloseButton.GrabFocus();
+
+ Window* pPrevDlgParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( this );
+ short nRet = ModalDialog::Execute();
+ // #57314# Wenn die BasicIDE aktiviert wurde, dann nicht den DefModalDialogParent auf das inaktive Dokument zuruecksetzen.
+ if ( Application::GetDefDialogParent() == this )
+ Application::SetDefDialogParent( pPrevDlgParent );
+ return nRet;
+}
+
+
+void MacroChooser::EnableButton( Button& rButton, BOOL bEnable )
+{
+ if ( bEnable )
+ {
+ if ( nMode == MACROCHOOSER_CHOOSEONLY || nMode == MACROCHOOSER_RECORDING )
+ {
+ // Nur der RunButton kann enabled werden
+ if ( &rButton == &aRunButton )
+ rButton.Enable();
+ else
+ rButton.Disable();
+ }
+ else
+ rButton.Enable();
+ }
+ else
+ rButton.Disable();
+}
+
+
+
+
+SbMethod* MacroChooser::GetMacro()
+{
+ SbMethod* pMethod = 0;
+ SbModule* pModule = aBasicBox.FindModule( aBasicBox.GetCurEntry() );
+ if ( pModule )
+ {
+ SvLBoxEntry* pEntry = aMacroBox.FirstSelected();
+ if ( pEntry )
+ {
+ String aMacroName( aMacroBox.GetEntryText( pEntry ) );
+ pMethod = (SbMethod*)pModule->GetMethods()->Find( aMacroName, SbxCLASS_METHOD );
+ }
+ }
+ return pMethod;
+}
+
+
+
+void MacroChooser::DeleteMacro()
+{
+ SbMethod* pMethod = GetMacro();
+ DBG_ASSERT( pMethod, "DeleteMacro: Kein Macro !" );
+ if ( pMethod && QueryDelMacro( pMethod->GetName(), this ) )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_STOREALLMODULESOURCES );
+ }
+
+ // Aktuelles Doc als geaendert markieren:
+ StarBASIC* pBasic = BasicIDE::FindBasic( pMethod );
+ DBG_ASSERT( pBasic, "Basic?!" );
+ BasicManager* pBasMgr = BasicIDE::FindBasicManager( pBasic );
+ DBG_ASSERT( pBasMgr, "BasMgr?" );
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+ if ( aDocument.isDocument() ) // Muss ja nicht aus einem Document kommen...
+ {
+ aDocument.setDocumentModified();
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_SAVEDOC );
+ }
+
+ SbModule* pModule = pMethod->GetModule();
+ DBG_ASSERT( pModule, "DeleteMacro: Kein Modul?!" );
+ ::rtl::OUString aSource( pModule->GetSource32() );
+ USHORT nStart, nEnd;
+ pMethod->GetLineRange( nStart, nEnd );
+ pModule->GetMethods()->Remove( pMethod );
+ CutLines( aSource, nStart-1, nEnd-nStart+1, TRUE );
+ pModule->SetSource32( aSource );
+
+ // update module in library
+ String aLibName = pBasic->GetName();
+ String aModName = pModule->GetName();
+ OSL_VERIFY( aDocument.updateModule( aLibName, aModName, aSource ) );
+
+ SvLBoxEntry* pEntry = aMacroBox.FirstSelected();
+ DBG_ASSERT( pEntry, "DeleteMacro: Entry ?!" );
+ aMacroBox.GetModel()->Remove( pEntry );
+ bForceStoreBasic = TRUE;
+ }
+}
+
+SbMethod* MacroChooser::CreateMacro()
+{
+ SbMethod* pMethod = 0;
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ OSL_ENSURE( aDocument.isAlive(), "MacroChooser::CreateMacro: no document!" );
+ if ( !aDocument.isAlive() )
+ return NULL;
+
+ String aLibName( aDesc.GetLibName() );
+
+ if ( !aLibName.Len() )
+ aLibName = String::CreateFromAscii( "Standard" );
+
+ aDocument.getOrCreateLibrary( E_SCRIPTS, aLibName );
+
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
+ xModLibContainer->loadLibrary( aOULibName );
+ Reference< script::XLibraryContainer > xDlgLibContainer( aDocument.getLibraryContainer( E_DIALOGS ) );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && !xDlgLibContainer->isLibraryLoaded( aOULibName ) )
+ xDlgLibContainer->loadLibrary( aOULibName );
+
+ BasicManager* pBasMgr = aDocument.getBasicManager();
+ StarBASIC* pBasic = pBasMgr ? pBasMgr->GetLib( aLibName ) : 0;
+ if ( pBasic )
+ {
+ SbModule* pModule = 0;
+ String aModName( aDesc.GetName() );
+ if ( aModName.Len() )
+ {
+ // extract the module name from the string like "Sheet1 (Example1)"
+ if( aDesc.GetLibSubName().Equals( String( IDEResId( RID_STR_DOCUMENT_OBJECTS ) ) ) )
+ {
+ sal_uInt16 nIndex = 0;
+ aModName = aModName.GetToken( 0, ' ', nIndex );
+ }
+ pModule = pBasic->FindModule( aModName );
+ }
+ else if ( pBasic->GetModules()->Count() )
+ pModule = (SbModule*)pBasic->GetModules()->Get( 0 );
+
+ if ( !pModule )
+ {
+ pModule = createModImpl( static_cast<Window*>( this ),
+ aDocument, aBasicBox, aLibName, aModName );
+ }
+
+ String aSubName = aMacroNameEdit.GetText();
+ DBG_ASSERT( !pModule || !pModule->GetMethods()->Find( aSubName, SbxCLASS_METHOD ), "Macro existiert schon!" );
+ pMethod = pModule ? BasicIDE::CreateMacro( pModule, aSubName ) : NULL;
+ }
+
+ return pMethod;
+}
+
+void MacroChooser::SaveSetCurEntry( SvTreeListBox& rBox, SvLBoxEntry* pEntry )
+{
+ // Durch das Highlight wird das Edit sonst platt gemacht:
+
+ String aSaveText( aMacroNameEdit.GetText() );
+ Selection aCurSel( aMacroNameEdit.GetSelection() );
+
+ rBox.SetCurEntry( pEntry );
+ aMacroNameEdit.SetText( aSaveText );
+ aMacroNameEdit.SetSelection( aCurSel );
+}
+
+void MacroChooser::CheckButtons()
+{
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ SvLBoxEntry* pMacroEntry = aMacroBox.FirstSelected();
+ SbMethod* pMethod = GetMacro();
+
+ // check, if corresponding libraries are readonly
+ BOOL bReadOnly = FALSE;
+ USHORT nDepth = pCurEntry ? aBasicBox.GetModel()->GetDepth( pCurEntry ) : 0;
+ if ( nDepth == 1 || nDepth == 2 )
+ {
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ ::rtl::OUString aOULibName( aDesc.GetLibName() );
+ Reference< script::XLibraryContainer2 > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) )
+ {
+ bReadOnly = TRUE;
+ }
+ }
+
+ if ( nMode != MACROCHOOSER_RECORDING )
+ {
+ // Run...
+ BOOL bEnable = pMethod ? TRUE : FALSE;
+ if ( ( nMode != MACROCHOOSER_CHOOSEONLY ) && StarBASIC::IsRunning() )
+ bEnable = FALSE;
+ EnableButton( aRunButton, bEnable );
+ }
+
+ // Organisieren immer moeglich ?
+
+ // Assign...
+ EnableButton( aAssignButton, pMethod ? TRUE : FALSE );
+
+ // Edit...
+ EnableButton( aEditButton, pMacroEntry ? TRUE : FALSE );
+
+ // aOrganizeButton
+ EnableButton( aOrganizeButton, !StarBASIC::IsRunning() && ( nMode == MACROCHOOSER_ALL ));
+
+ // aNewDelButton....
+ bool bProtected = aBasicBox.IsEntryProtected( pCurEntry );
+ bool bShare = ( aDesc.GetLocation() == LIBRARY_LOCATION_SHARE );
+ EnableButton( aNewDelButton,
+ !StarBASIC::IsRunning() && ( nMode == MACROCHOOSER_ALL ) && !bProtected && !bReadOnly && !bShare );
+ BOOL bPrev = bNewDelIsDel;
+ bNewDelIsDel = pMethod ? TRUE : FALSE;
+ if ( ( bPrev != bNewDelIsDel ) && ( nMode == MACROCHOOSER_ALL ) )
+ {
+ String aBtnText( bNewDelIsDel ? IDEResId( RID_STR_BTNDEL) : IDEResId( RID_STR_BTNNEW ) );
+ aNewDelButton.SetText( aBtnText );
+ }
+
+ if ( nMode == MACROCHOOSER_RECORDING )
+ {
+ // save button
+ if ( !bProtected && !bReadOnly && !bShare )
+ aRunButton.Enable();
+ else
+ aRunButton.Disable();
+
+ // new library button
+ if ( !bShare )
+ aNewLibButton.Enable();
+ else
+ aNewLibButton.Disable();
+
+ // new module button
+ if ( !bProtected && !bReadOnly && !bShare )
+ aNewModButton.Enable();
+ else
+ aNewModButton.Disable();
+ }
+}
+
+
+
+IMPL_LINK_INLINE_START( MacroChooser, MacroDoubleClickHdl, SvTreeListBox *, EMPTYARG )
+{
+ StoreMacroDescription();
+ if ( nMode == MACROCHOOSER_RECORDING )
+ {
+ SbMethod* pMethod = GetMacro();
+ if ( pMethod && !QueryReplaceMacro( pMethod->GetName(), this ) )
+ return 0;
+ }
+
+ EndDialog( MACRO_OK_RUN );
+ return 0;
+}
+IMPL_LINK_INLINE_END( MacroChooser, MacroDoubleClickHdl, SvTreeListBox *, EMPTYARG )
+
+IMPL_LINK( MacroChooser, MacroSelectHdl, SvTreeListBox *, pBox )
+{
+ // Wird auch gerufen, wenn Deselektiert!
+ // 2 Funktionsaufrufe in jedem SelectHdl, nur weil Olli
+ // keinen separatren DeselctHdl einfuehren wollte:
+ // Also: Feststellen, ob Select oder Deselect:
+ if ( pBox->IsSelected( pBox->GetHdlEntry() ) )
+ {
+ UpdateFields();
+ CheckButtons();
+ }
+ return 0;
+}
+
+IMPL_LINK( MacroChooser, BasicSelectHdl, SvTreeListBox *, pBox )
+{
+ static String aSpaceStr = String::CreateFromAscii(" ");
+
+ // Wird auch gerufen, wenn Deselektiert!
+ // 2 Funktionsaufrufe in jedem SelectHdl, nur weil Olli
+ // keinen separatren DeselctHdl einfuehren wollte:
+ // Also: Feststellen, ob Select oder Deselect:
+ if ( !pBox->IsSelected( pBox->GetHdlEntry() ) )
+ return 0;
+
+ SbModule* pModule = aBasicBox.FindModule( aBasicBox.GetCurEntry() );
+
+ aMacroBox.Clear();
+ if ( pModule )
+ {
+ String aStr = aMacrosInTxtBaseStr;
+ aStr += aSpaceStr;
+ aStr += pModule->GetName();
+
+ aMacrosInTxt.SetText( aStr );
+
+ // Die Macros sollen in der Reihenfolge angezeigt werden,
+ // wie sie im Modul stehen.
+ MacroList aMacros;
+ USHORT nMacroCount = pModule->GetMethods()->Count();
+ USHORT nRealMacroCount = 0;
+ USHORT iMeth;
+ for ( iMeth = 0; iMeth < nMacroCount; iMeth++ )
+ {
+ SbMethod* pMethod = (SbMethod*)pModule->GetMethods()->Get( iMeth );
+ if( pMethod->IsHidden() )
+ continue;
+ ++nRealMacroCount;
+ DBG_ASSERT( pMethod, "Methode nicht gefunden! (NULL)" );
+ ULONG nPos = LIST_APPEND;
+ // Eventuell weiter vorne ?
+ USHORT nStart, nEnd;
+ pMethod->GetLineRange( nStart, nEnd );
+ for ( ULONG n = 0; n < aMacros.Count(); n++ )
+ {
+ USHORT nS, nE;
+ SbMethod* pM = aMacros.GetObject( n );
+ DBG_ASSERT( pM, "Macro nicht in Liste ?!" );
+ pM->GetLineRange( nS, nE );
+ if ( nS > nStart )
+ {
+ nPos = n;
+ break;
+ }
+ }
+ aMacros.Insert( pMethod, nPos );
+ }
+
+ aMacroBox.SetUpdateMode( FALSE );
+ for ( iMeth = 0; iMeth < nRealMacroCount; iMeth++ )
+ aMacroBox.InsertEntry( aMacros.GetObject( iMeth )->GetName() );
+ aMacroBox.SetUpdateMode( TRUE );
+
+ if ( aMacroBox.GetEntryCount() )
+ {
+ SvLBoxEntry* pEntry = aMacroBox.GetEntry( 0 );
+ DBG_ASSERT( pEntry, "Entry ?!" );
+ aMacroBox.SetCurEntry( pEntry );
+ }
+ }
+
+ UpdateFields();
+ CheckButtons();
+ return 0;
+}
+
+
+
+IMPL_LINK( MacroChooser, EditModifyHdl, Edit *, pEdit )
+{
+ (void)pEdit;
+
+ // Das Modul, in dem bei Neu das Macro landet, selektieren,
+ // wenn BasicManager oder Lib selektiert.
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ if ( pCurEntry )
+ {
+ USHORT nDepth = aBasicBox.GetModel()->GetDepth( pCurEntry );
+ if ( ( nDepth == 1 ) && ( aBasicBox.IsEntryProtected( pCurEntry ) ) )
+ {
+ // Dann auf die entsprechende Std-Lib stellen...
+ SvLBoxEntry* pManagerEntry = aBasicBox.GetModel()->GetParent( pCurEntry );
+ pCurEntry = aBasicBox.GetModel()->FirstChild( pManagerEntry );
+ }
+ if ( nDepth < 2 )
+ {
+ SvLBoxEntry* pNewEntry = pCurEntry;
+ while ( pCurEntry && ( nDepth < 2 ) )
+ {
+ pCurEntry = aBasicBox.FirstChild( pCurEntry );
+ if ( pCurEntry )
+ {
+ pNewEntry = pCurEntry;
+ nDepth = aBasicBox.GetModel()->GetDepth( pCurEntry );
+ }
+ }
+ SaveSetCurEntry( aBasicBox, pNewEntry );
+ }
+ if ( aMacroBox.GetEntryCount() )
+ {
+ String aEdtText( aMacroNameEdit.GetText() );
+ BOOL bFound = FALSE;
+ for ( USHORT n = 0; n < aMacroBox.GetEntryCount(); n++ )
+ {
+ SvLBoxEntry* pEntry = aMacroBox.GetEntry( n );
+ DBG_ASSERT( pEntry, "Entry ?!" );
+ if ( aMacroBox.GetEntryText( pEntry ).CompareIgnoreCaseToAscii( aEdtText ) == COMPARE_EQUAL )
+ {
+ SaveSetCurEntry( aMacroBox, pEntry );
+ bFound = TRUE;
+ break;
+ }
+ }
+ if ( !bFound )
+ {
+ SvLBoxEntry* pEntry = aMacroBox.FirstSelected();
+ // Wenn es den Eintrag gibt ->Select ->Desription...
+ if ( pEntry )
+ aMacroBox.Select( pEntry, FALSE );
+ }
+ }
+ }
+
+ CheckButtons();
+ return 0;
+}
+
+
+
+IMPL_LINK( MacroChooser, ButtonHdl, Button *, pButton )
+{
+ // ausser bei New/Record wird die Description durch LoseFocus uebernommen.
+ if ( pButton == &aRunButton )
+ {
+ StoreMacroDescription();
+
+ // #116444# check security settings before macro execution
+ if ( nMode == MACROCHOOSER_ALL )
+ {
+ SbMethod* pMethod = GetMacro();
+ SbModule* pModule = pMethod ? pMethod->GetModule() : NULL;
+ StarBASIC* pBasic = pModule ? (StarBASIC*)pModule->GetParent() : NULL;
+ BasicManager* pBasMgr = pBasic ? BasicIDE::FindBasicManager( pBasic ) : NULL;
+ if ( pBasMgr )
+ {
+ ScriptDocument aDocument( ScriptDocument::getDocumentForBasicManager( pBasMgr ) );
+ if ( aDocument.isDocument() && !aDocument.allowMacros() )
+ {
+ WarningBox( this, WB_OK, String( IDEResId( RID_STR_CANNOTRUNMACRO ) ) ).Execute();
+ return 0;
+ }
+ }
+ }
+ else if ( nMode == MACROCHOOSER_RECORDING )
+ {
+ BOOL bValid = BasicIDE::IsValidSbxName( aMacroNameEdit.GetText() );
+ if ( !bValid )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
+ aMacroNameEdit.SetSelection( Selection( 0, aMacroNameEdit.GetText().Len() ) );
+ aMacroNameEdit.GrabFocus();
+ return 0;
+ }
+
+ SbMethod* pMethod = GetMacro();
+ if ( pMethod && !QueryReplaceMacro( pMethod->GetName(), this ) )
+ return 0;
+ }
+
+ EndDialog( MACRO_OK_RUN );
+ }
+ else if ( pButton == &aCloseButton )
+ {
+ StoreMacroDescription();
+ EndDialog( MACRO_CLOSE );
+ }
+ else if ( ( pButton == &aEditButton ) || ( pButton == &aNewDelButton ) )
+ {
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ DBG_ASSERT( aDocument.isAlive(), "MacroChooser::ButtonHdl: no document, or document is dead!" );
+ if ( !aDocument.isAlive() )
+ return 0;
+ BasicManager* pBasMgr = aDocument.getBasicManager();
+ String aLib( aDesc.GetLibName() );
+ String aMod( aDesc.GetName() );
+ // extract the module name from the string like "Sheet1 (Example1)"
+ if( aDesc.GetLibSubName().Equals( String( IDEResId( RID_STR_DOCUMENT_OBJECTS ) ) ) )
+ {
+ sal_uInt16 nIndex = 0;
+ aMod = aMod.GetToken( 0, ' ', nIndex );
+ }
+ String aSub( aDesc.GetMethodName() );
+ SfxMacroInfoItem aInfoItem( SID_BASICIDE_ARG_MACROINFO, pBasMgr, aLib, aMod, aSub, String() );
+ if ( pButton == &aEditButton )
+ {
+ SvLBoxEntry* pEntry = aMacroBox.FirstSelected();
+ if ( pEntry )
+ aInfoItem.SetMethod( aMacroBox.GetEntryText( pEntry ) );
+ StoreMacroDescription();
+ SfxAllItemSet aArgs( SFX_APP()->GetPool() );
+ SfxRequest aRequest( SID_BASICIDE_APPEAR, SFX_CALLMODE_SYNCHRON, aArgs );
+ SFX_APP()->ExecuteSlot( aRequest );
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ pDispatcher->Execute( SID_BASICIDE_EDITMACRO, SFX_CALLMODE_ASYNCHRON, &aInfoItem, 0L );
+ EndDialog( MACRO_EDIT );
+ }
+ else
+ {
+ if ( bNewDelIsDel )
+ {
+ DeleteMacro();
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_UPDATEMODULESOURCE,
+ SFX_CALLMODE_SYNCHRON, &aInfoItem, 0L );
+ }
+ CheckButtons();
+ UpdateFields();
+ //if ( aMacroBox.GetCurEntry() ) // OV-Bug ?
+ // aMacroBox.Select( aMacroBox.GetCurEntry() );
+ }
+ else
+ {
+ BOOL bValid = BasicIDE::IsValidSbxName( aMacroNameEdit.GetText() );
+ if ( !bValid )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
+ aMacroNameEdit.SetSelection( Selection( 0, aMacroNameEdit.GetText().Len() ) );
+ aMacroNameEdit.GrabFocus();
+ return 1;
+ }
+ SbMethod* pMethod = CreateMacro();
+ if ( pMethod )
+ {
+ aInfoItem.SetMethod( pMethod->GetName() );
+ aInfoItem.SetModule( pMethod->GetModule()->GetName() );
+ aInfoItem.SetLib( pMethod->GetModule()->GetParent()->GetName() );
+ SfxAllItemSet aArgs( SFX_APP()->GetPool() );
+ SfxRequest aRequest( SID_BASICIDE_APPEAR, SFX_CALLMODE_SYNCHRON, aArgs );
+ SFX_APP()->ExecuteSlot( aRequest );
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if ( pDispatcher )
+ pDispatcher->Execute( SID_BASICIDE_EDITMACRO, SFX_CALLMODE_ASYNCHRON, &aInfoItem, 0L );
+ StoreMacroDescription();
+ EndDialog( MACRO_NEW );
+ }
+ }
+ }
+ }
+
+ else if ( pButton == &aAssignButton )
+ {
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ DBG_ASSERT( aDocument.isAlive(), "MacroChooser::ButtonHdl: no document, or document is dead!" );
+ if ( !aDocument.isAlive() )
+ return 0;
+ BasicManager* pBasMgr = aDocument.getBasicManager();
+ String aLib( aDesc.GetLibName() );
+ String aMod( aDesc.GetName() );
+ String aSub( aMacroNameEdit.GetText() );
+ SbMethod* pMethod = GetMacro();
+ DBG_ASSERT( pBasMgr, "BasMgr?" );
+ DBG_ASSERT( pMethod, "Method?" );
+ String aComment( GetInfo( pMethod ) );
+ SfxMacroInfoItem aItem( SID_MACROINFO, pBasMgr, aLib, aMod, aSub, aComment );
+ SfxAllItemSet Args( SFX_APP()->GetPool() );
+ SfxRequest aRequest( SID_CONFIG, SFX_CALLMODE_SYNCHRON, Args );
+ aRequest.AppendItem( aItem );
+ SFX_APP()->ExecuteSlot( aRequest );
+ }
+ else if ( pButton == &aNewLibButton )
+ {
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ createLibImpl( static_cast<Window*>( this ), aDocument, NULL, &aBasicBox );
+ }
+ else if ( pButton == &aNewModButton )
+ {
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ String aLibName( aDesc.GetLibName() );
+ String aModName;
+ createModImpl( static_cast<Window*>( this ), aDocument,
+ aBasicBox, aLibName, aModName, true );
+ }
+ else if ( pButton == &aOrganizeButton )
+ {
+ StoreMacroDescription();
+
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( aBasicBox.FirstSelected() ) );
+ OrganizeDialog* pDlg = new OrganizeDialog( this, 0, aDesc );
+ USHORT nRet = pDlg->Execute();
+ delete pDlg;
+
+ if ( nRet ) // Nicht einfach nur geschlossen
+ {
+ EndDialog( MACRO_EDIT );
+ return 0;
+ }
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell && pIDEShell->IsAppBasicModified() )
+ bForceStoreBasic = TRUE;
+
+ aBasicBox.UpdateEntries();
+ }
+ return 0;
+}
+
+
+
+void MacroChooser::UpdateFields()
+{
+ SvLBoxEntry* pMacroEntry = aMacroBox.GetCurEntry();
+ String aEmptyStr;
+
+ aMacroNameEdit.SetText( aEmptyStr );
+ if ( pMacroEntry )
+ aMacroNameEdit.SetText( aMacroBox.GetEntryText( pMacroEntry ) );
+}
+
+void MacroChooser::SetMode( USHORT nM )
+{
+ nMode = nM;
+ if ( nMode == MACROCHOOSER_ALL )
+ {
+ aRunButton.SetText( String( IDEResId( RID_STR_RUN ) ) );
+ EnableButton( aNewDelButton, TRUE );
+ EnableButton( aOrganizeButton, TRUE );
+ }
+ else if ( nMode == MACROCHOOSER_CHOOSEONLY )
+ {
+ aRunButton.SetText( String( IDEResId( RID_STR_CHOOSE ) ) );
+ EnableButton( aNewDelButton, FALSE );
+ EnableButton( aOrganizeButton, FALSE );
+ }
+ else if ( nMode == MACROCHOOSER_RECORDING )
+ {
+ aRunButton.SetText( String( IDEResId( RID_STR_RECORD ) ) );
+ EnableButton( aNewDelButton, FALSE );
+ EnableButton( aOrganizeButton, FALSE );
+
+ aAssignButton.Hide();
+ aEditButton.Hide();
+ aNewDelButton.Hide();
+ aOrganizeButton.Hide();
+ aMacroFromTxT.Hide();
+
+ aNewLibButton.Show();
+ aNewModButton.Show();
+ aMacrosSaveInTxt.Show();
+
+ Point aHelpPos = aHelpButton.GetPosPixel();
+ Point aHelpPosLogic = PixelToLogic( aHelpPos, MapMode(MAP_APPFONT) );
+ aHelpPosLogic.Y() -= 34;
+ aHelpPos = LogicToPixel( aHelpPosLogic, MapMode(MAP_APPFONT) );
+ aHelpButton.SetPosPixel( aHelpPos );
+ }
+ CheckButtons();
+}
+
+String MacroChooser::GetInfo( SbxVariable* pVar )
+{
+ String aComment;
+ SbxInfoRef xInfo = pVar->GetInfo();
+ if ( xInfo.Is() )
+ aComment = xInfo->GetComment();
+ return aComment;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/macrodlg.hrc b/basctl/source/basicide/macrodlg.hrc
new file mode 100644
index 000000000000..ae96e1b0b92f
--- /dev/null
+++ b/basctl/source/basicide/macrodlg.hrc
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * 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 _MACRODLG_HRC
+#define _MACRODLG_HRC
+
+#include <svl/solar.hrc>
+
+#define RID_MACROCHOOSER ( RID_BASICIDE_START + 50 )
+#define RID_STR_BTNDEL ( RID_BASICIDE_START + 51 )
+#define RID_STR_BTNNEW ( RID_BASICIDE_START + 52 )
+#define RID_STR_CHOOSE ( RID_BASICIDE_START + 53 )
+#define RID_STR_RUN ( RID_BASICIDE_START + 54 )
+#define RID_STR_RECORD ( RID_BASICIDE_START + 56 )
+
+#define RID_CTRL_MACRO 1
+#define RID_CTRL_LIB 2
+#define RID_TXT_MACRONAME 3
+#define RID_TXT_MACROFROM 4
+#define RID_ED_MACRONAME 5
+#define RID_TXT_DESCRIPTION 6
+#define RID_PB_RUN 8
+#define RID_PB_CLOSE 9
+#define RID_PB_EDIT 10
+#define RID_PB_ORG 11
+#define RID_PB_DEL 12
+#define RID_PB_ASSIGN 13
+#define RID_PB_HELP 15
+#define RID_ML_DESCRIPTION 16
+#define RID_TXT_MACROSIN 17
+#define RID_TXT_SAVEMACRO 18
+#define RID_PB_NEWLIB 19
+#define RID_PB_NEWMOD 20
+
+#endif // _MACRODLG_HRC
+
diff --git a/basctl/source/basicide/macrodlg.hxx b/basctl/source/basicide/macrodlg.hxx
new file mode 100644
index 000000000000..b6841377833b
--- /dev/null
+++ b/basctl/source/basicide/macrodlg.hxx
@@ -0,0 +1,114 @@
+/* -*- 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 _MACRODLG_HXX
+#define _MACRODLG_HXX
+
+#include <svheader.hxx>
+
+#include <bastype2.hxx>
+#include <bastype3.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <vcl/fixed.hxx>
+
+#include <vcl/button.hxx>
+
+#define MACRO_CLOSE 10
+#define MACRO_OK_RUN 11
+#define MACRO_NEW 12
+#define MACRO_EDIT 14
+#define MACRO_ORGANIZE 15
+#define MACRO_ASSIGN 16
+
+#define MACROCHOOSER_ALL 1
+#define MACROCHOOSER_CHOOSEONLY 2
+#define MACROCHOOSER_RECORDING 3
+
+class BasicManager;
+
+class MacroChooser : public SfxModalDialog
+{
+private:
+ FixedText aMacroNameTxt;
+ Edit aMacroNameEdit;
+ FixedText aMacroFromTxT;
+ FixedText aMacrosSaveInTxt;
+ BasicTreeListBox aBasicBox;
+ FixedText aMacrosInTxt;
+ String aMacrosInTxtBaseStr;
+ SvTreeListBox aMacroBox;
+
+ PushButton aRunButton;
+ CancelButton aCloseButton;
+ PushButton aAssignButton;
+ PushButton aEditButton;
+ PushButton aNewDelButton;
+ PushButton aOrganizeButton;
+ HelpButton aHelpButton;
+ PushButton aNewLibButton;
+ PushButton aNewModButton;
+
+ BOOL bNewDelIsDel;
+ BOOL bForceStoreBasic;
+
+ USHORT nMode;
+
+ DECL_LINK( MacroSelectHdl, SvTreeListBox * );
+ DECL_LINK( MacroDoubleClickHdl, SvTreeListBox * );
+ DECL_LINK( BasicSelectHdl, SvTreeListBox * );
+ DECL_LINK( EditModifyHdl, Edit * );
+ DECL_LINK( ButtonHdl, Button * );
+
+ void CheckButtons();
+ void SaveSetCurEntry( SvTreeListBox& rBox, SvLBoxEntry* pEntry );
+ void UpdateFields();
+
+ void EnableButton( Button& rButton, BOOL bEnable );
+
+ String GetInfo( SbxVariable* pVar );
+
+ void StoreMacroDescription();
+ void RestoreMacroDescription();
+
+public:
+ MacroChooser( Window* pParent, BOOL bCreateEntries = TRUE );
+ ~MacroChooser();
+
+ SbMethod* GetMacro();
+ void DeleteMacro();
+ SbMethod* CreateMacro();
+
+ virtual short Execute();
+
+ void SetMode( USHORT nMode );
+ USHORT GetMode() const { return nMode; }
+};
+
+#endif // _MACRODLG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/macrodlg.src b/basctl/source/basicide/macrodlg.src
new file mode 100644
index 000000000000..5037879802b0
--- /dev/null
+++ b/basctl/source/basicide/macrodlg.src
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <sfx2/sfx.hrc>
+#include <macrodlg.hrc>
+#include <basidesh.hrc>
+#include <helpid.hrc>
+ModalDialog RID_MACROCHOOSER
+{
+ // HelpId = SID_BASICCHOOSER ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 287 , 165 ) ;
+ Text [ en-US ] = "%PRODUCTNAME Basic Macros" ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+
+ FixedText RID_TXT_MACROSIN
+ {
+ Pos = MAP_APPFONT ( 122 , 30 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text [ en-US ] = "Existing macros ~in:";
+ };
+ Control RID_CTRL_MACRO
+ {
+ HelpID = HID_BASICIDE_MACROS ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 122 , 41 ) ;
+ Size = MAP_APPFONT ( 100 , 117 ) ;
+ // Size = MAP_APPFONT ( 100 , 117 ) ;
+ TabStop = TRUE ;
+ };
+ Control RID_CTRL_LIB
+ {
+ HelpID = HID_BASICIDE_LIBS ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 41 ) ;
+ Size = MAP_APPFONT ( 110 , 117 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText RID_TXT_MACRONAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text [ en-US ] = "~Macro name" ;
+ };
+ Edit RID_ED_MACRONAME
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 14 ) ;
+ Size = MAP_APPFONT ( 110 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText RID_TXT_MACROFROM
+ {
+ Pos = MAP_APPFONT ( 6 , 30 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text [ en-US ] = "Macro ~from" ;
+ };
+ FixedText RID_TXT_SAVEMACRO
+ {
+ Pos = MAP_APPFONT ( 6 , 30 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text [ en-US ] = "Save m~acro in";
+ };
+
+ FixedText RID_TXT_DESCRIPTION
+ {
+ Pos = MAP_APPFONT ( 6 , 117 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text [ en-US ] = "De~scription" ;
+ };
+ PushButton RID_PB_RUN
+ {
+ Pos = MAP_APPFONT ( 231 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE;
+ /* ### ACHTUNG: Neuer Text in Resource? Aus~führen : Aus~f³hren */
+ Text [ en-US ] = "R~un" ;
+ TabStop = TRUE ;
+ };
+ CancelButton RID_PB_CLOSE
+ {
+ Pos = MAP_APPFONT ( 231 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Close";
+ };
+
+ PushButton RID_PB_ASSIGN
+ {
+ Pos = MAP_APPFONT ( 231 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text [ en-US ] = "~Assign..." ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_EDIT
+ {
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Pos = MAP_APPFONT ( 231 , 77 ) ;
+ Text [ en-US ] = "~Edit" ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_NEWLIB
+ {
+ Pos = MAP_APPFONT ( 231 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text [ en-US ] = "New ~Library";
+ };
+ PushButton RID_PB_NEWMOD
+ {
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Pos = MAP_APPFONT ( 231 , 77 ) ;
+ Text [ en-US ] = "New M~odule";
+ };
+ PushButton RID_PB_DEL
+ {
+ Pos = MAP_APPFONT ( 231 , 94 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen... : ~L÷schen... */
+ Text [ en-US ] = "~Delete" ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_ORG
+ {
+ Pos = MAP_APPFONT ( 231 , 114 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text [ en-US ] = "~Organizer..." ;
+ };
+ HelpButton RID_PB_HELP
+ {
+ Pos = MAP_APPFONT ( 231 , 131 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MultiLineEdit RID_ML_DESCRIPTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 131 ) ;
+ Size = MAP_APPFONT ( 216 , 28 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE ;
+ };
+};
+String RID_STR_STDMACRONAME
+{
+ Text [ en-US ] = "Macro" ;
+};
+String RID_STR_BTNDEL
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen... : ~L÷schen... */
+ Text [ en-US ] = "~Delete" ;
+};
+String RID_STR_BTNNEW
+{
+ Text [ en-US ] = "~New" ;
+};
+String RID_STR_CLOSE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Schließen : Schlie˜en */
+ Text [ en-US ] = "Close" ;
+};
+String RID_STR_CHOOSE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Auswählen : Auswõhlen */
+ Text [ en-US ] = "Choose" ;
+};
+String RID_STR_RUN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Ausführen : Ausf³hren */
+ Text [ en-US ] = "Run" ;
+};
+
+String RID_STR_RECORD
+{
+ Text [ en-US ] = "~Save" ;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basctl/source/basicide/makefile.mk b/basctl/source/basicide/makefile.mk
new file mode 100644
index 000000000000..b225b987b24b
--- /dev/null
+++ b/basctl/source/basicide/makefile.mk
@@ -0,0 +1,100 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=basctl
+TARGET=basicide
+VISIBILITY_HIDDEN=TRUE
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ide_pch
+PROJECTPCHSOURCE=ide_pch
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+.IF "$(basicdebug)" != "" || "$(BASICDEBUG)" != ""
+CDEFS+=-DBASICDEBUG
+.ENDIF
+
+
+# --- Allgemein ----------------------------------------------------------
+
+EXCEPTIONSFILES=$(SLO)$/basicrenderable.obj \
+ $(SLO)$/scriptdocument.obj \
+ $(SLO)$/basicbox.obj \
+ $(SLO)$/basidesh.obj \
+ $(SLO)$/basides1.obj \
+ $(SLO)$/basides2.obj \
+ $(SLO)$/basides3.obj \
+ $(SLO)$/baside2.obj \
+ $(SLO)$/baside3.obj \
+ $(SLO)$/basobj2.obj \
+ $(SLO)$/basobj3.obj \
+ $(SLO)$/bastypes.obj \
+ $(SLO)$/bastype2.obj \
+ $(SLO)$/bastype3.obj \
+ $(SLO)$/iderdll.obj \
+ $(SLO)$/macrodlg.obj \
+ $(SLO)$/moduldlg.obj \
+ $(SLO)$/moduldl2.obj \
+ $(SLO)$/unomodel.obj \
+ $(SLO)$/register.obj \
+ $(SLO)$/basdoc.obj \
+ $(SLO)$/tbxctl.obj \
+ $(SLO)$/basidectrlr.obj \
+ $(SLO)$/localizationmgr.obj \
+ $(SLO)$/doceventnotifier.obj \
+ $(SLO)$/docsignature.obj \
+ $(SLO)$/documentenumeration.obj
+
+SLOFILES = $(EXCEPTIONSFILES) \
+ $(SLO)$/baside2b.obj \
+ $(SLO)$/brkdlg.obj \
+ $(SLO)$/objdlg.obj \
+
+SRS1NAME=$(TARGET)
+SRC1FILES= basidesh.src macrodlg.src moptions.src moduldlg.src objdlg.src brkdlg.src tbxctl.src basicprint.src
+
+.INCLUDE : target.mk
+
+$(INCCOM)$/dllname.hxx: makefile.mk
+.IF "$(GUI)"=="UNX"
+ $(RM) $@
+ echo \#define DLL_NAME \"libbasctl$(DLLPOSTFIX)$(DLLPOST)\" >$@
+.ELSE
+ echo \#define DLL_NAME \"basctl$(DLLPOSTFIX)$(DLLPOST)\" >$@
+.ENDIF
+
+$(SLO)$/basiclib.obj : $(INCCOM)$/dllname.hxx
+
+$(INCCOM)$/basicide.hrc: basidesh.hrc
+ @-$(COPY) basidesh.hrc $@
+
diff --git a/basctl/source/basicide/moduldl2.cxx b/basctl/source/basicide/moduldl2.cxx
new file mode 100644
index 000000000000..b66d6b3510d9
--- /dev/null
+++ b/basctl/source/basicide/moduldl2.cxx
@@ -0,0 +1,1728 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#define GLOBALOVERFLOW
+
+#include <ide_pch.hxx>
+
+#include <svtools/filedlg.hxx>
+
+
+#include <sot/storinfo.hxx>
+
+#include <moduldlg.hrc>
+#include <moduldlg.hxx>
+#include <basidesh.hrc>
+#include <basidesh.hxx>
+#include <bastypes.hxx>
+#include <basobj.hxx>
+#include <baside2.hrc>
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <svx/passwd.hxx>
+#include <sbxitem.hxx>
+#include <basdoc.hxx>
+#include <ucbhelper/content.hxx>
+#include "rtl/uri.hxx"
+#include <tools/urlobj.hxx>
+#include <tools/diagnose_ex.h>
+
+#include <sot/storage.hxx>
+#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
+#include <com/sun/star/ui/dialogs/XFolderPicker.hpp>
+#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+#include <com/sun/star/script/XLibraryContainerExport.hpp>
+#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
+#include "com/sun/star/ucb/XCommandEnvironment.hpp"
+#include <com/sun/star/ucb/NameClash.hpp>
+#include "com/sun/star/packages/manifest/XManifestWriter.hpp"
+#include <unotools/pathoptions.hxx>
+#include <comphelper/processfactory.hxx>
+
+#include <com/sun/star/util/VetoException.hpp>
+#include <com/sun/star/script/ModuleSizeExceededRequest.hpp>
+
+using namespace ::comphelper;
+using ::rtl::OUString;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::ui::dialogs;
+
+
+typedef ::cppu::WeakImplHelper1< task::XInteractionHandler > HandlerImpl_BASE;
+
+class DummyInteractionHandler : public HandlerImpl_BASE
+{
+ Reference< task::XInteractionHandler > m_xHandler;
+public:
+ DummyInteractionHandler( const Reference< task::XInteractionHandler >& xHandler ) : m_xHandler( xHandler ){}
+
+ virtual void SAL_CALL handle( const Reference< task::XInteractionRequest >& rRequest ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ if ( m_xHandler.is() )
+ {
+ script::ModuleSizeExceededRequest aModSizeException;
+ if ( rRequest->getRequest() >>= aModSizeException )
+ m_xHandler->handle( rRequest );
+ }
+ }
+};
+
+//----------------------------------------------------------------------------
+// BasicLibUserData
+//----------------------------------------------------------------------------
+class BasicLibUserData
+{
+private:
+ ScriptDocument m_aDocument;
+
+public:
+ BasicLibUserData( const ScriptDocument& rDocument ) : m_aDocument( rDocument ) { }
+ virtual ~BasicLibUserData() {};
+
+ const ScriptDocument&
+ GetDocument() const { return m_aDocument; }
+};
+
+
+//----------------------------------------------------------------------------
+// BasicLibLBoxString
+//----------------------------------------------------------------------------
+
+class BasicLibLBoxString : public SvLBoxString
+{
+public:
+ BasicLibLBoxString( SvLBoxEntry* pEntry, USHORT nFlags, const String& rTxt ) :
+ SvLBoxString( pEntry, nFlags, rTxt ) {}
+
+ virtual void Paint( const Point& rPos, SvLBox& rDev, USHORT nFlags, SvLBoxEntry* pEntry );
+};
+
+//----------------------------------------------------------------------------
+
+void BasicLibLBoxString::Paint( const Point& rPos, SvLBox& rDev, USHORT, SvLBoxEntry* pEntry )
+{
+ // Change text color if library is read only:
+ bool bReadOnly = false;
+ if (pEntry && pEntry->GetUserData())
+ {
+ ScriptDocument aDocument(
+ static_cast< BasicLibUserData * >(pEntry->GetUserData())->
+ GetDocument() );
+
+ rtl::OUString aLibName(
+ static_cast< SvLBoxString * >(pEntry->GetItem(1))->GetText());
+ Reference< script::XLibraryContainer2 > xModLibContainer(
+ aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY);
+ Reference< script::XLibraryContainer2 > xDlgLibContainer(
+ aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY);
+ bReadOnly
+ = (xModLibContainer.is() && xModLibContainer->hasByName(aLibName)
+ && xModLibContainer->isLibraryReadOnly(aLibName))
+ || (xDlgLibContainer.is() && xDlgLibContainer->hasByName(aLibName)
+ && xDlgLibContainer->isLibraryReadOnly(aLibName));
+ }
+ if (bReadOnly)
+ rDev.DrawCtrlText(rPos, GetText(), 0, STRING_LEN, TEXT_DRAW_DISABLE);
+ else
+ rDev.DrawText(rPos, GetText());
+}
+
+
+//----------------------------------------------------------------------------
+// BasicCheckBox
+//----------------------------------------------------------------------------
+
+BasicCheckBox::BasicCheckBox( Window* pParent, const ResId& rResId )
+ :SvTabListBox( pParent, rResId )
+ ,m_aDocument( ScriptDocument::getApplicationScriptDocument() )
+{
+ nMode = LIBMODE_MANAGER;
+ long aTabs_[] = { 1, 12 }; // Mindestens einen braucht die TabPos...
+ // 12 wegen der Checkbox
+ SetTabs( aTabs_ );
+ Init();
+}
+
+//----------------------------------------------------------------------------
+
+__EXPORT BasicCheckBox::~BasicCheckBox()
+{
+ delete pCheckButton;
+
+ // delete user data
+ SvLBoxEntry* pEntry = First();
+ while ( pEntry )
+ {
+ delete (BasicLibUserData*)pEntry->GetUserData();
+ pEntry = Next( pEntry );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void BasicCheckBox::Init()
+{
+ pCheckButton = new SvLBoxButtonData(this);
+
+ if ( nMode == LIBMODE_CHOOSER )
+ EnableCheckButton( pCheckButton );
+ else
+ EnableCheckButton( 0 );
+
+ SetHighlightRange();
+}
+
+//----------------------------------------------------------------------------
+
+void BasicCheckBox::SetMode( USHORT n )
+{
+ nMode = n;
+
+ if ( nMode == LIBMODE_CHOOSER )
+ EnableCheckButton( pCheckButton );
+ else
+ EnableCheckButton( 0 );
+}
+
+//----------------------------------------------------------------------------
+
+SvLBoxEntry* BasicCheckBox::DoInsertEntry( const String& rStr, ULONG nPos )
+{
+ return SvTabListBox::InsertEntryToColumn( rStr, nPos, 0 );
+}
+
+//----------------------------------------------------------------------------
+
+SvLBoxEntry* BasicCheckBox::FindEntry( const String& rName )
+{
+ ULONG nCount = GetEntryCount();
+ for ( ULONG i = 0; i < nCount; i++ )
+ {
+ SvLBoxEntry* pEntry = GetEntry( i );
+ DBG_ASSERT( pEntry, "pEntry?!" );
+ if ( rName.CompareIgnoreCaseToAscii( GetEntryText( pEntry, 0 ) ) == COMPARE_EQUAL )
+ return pEntry;
+ }
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+void BasicCheckBox::CheckEntryPos( ULONG nPos, BOOL bCheck )
+{
+ if ( nPos < GetEntryCount() )
+ {
+ SvLBoxEntry* pEntry = GetEntry( nPos );
+
+ if ( bCheck != GetCheckButtonState( pEntry ) )
+ SetCheckButtonState( pEntry,
+ bCheck
+ ? SvButtonState(SV_BUTTON_CHECKED)
+ : SvButtonState(SV_BUTTON_UNCHECKED) );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+BOOL BasicCheckBox::IsChecked( ULONG nPos ) const
+{
+ if ( nPos < GetEntryCount() )
+ return (GetCheckButtonState( GetEntry( nPos ) ) == SV_BUTTON_CHECKED);
+ return FALSE;
+}
+
+//----------------------------------------------------------------------------
+
+void BasicCheckBox::InitEntry( SvLBoxEntry* pEntry, const XubString& rTxt, const Image& rImg1, const Image& rImg2, SvLBoxButtonKind eButtonKind )
+{
+ SvTabListBox::InitEntry( pEntry, rTxt, rImg1, rImg2, eButtonKind );
+
+ if ( nMode == LIBMODE_MANAGER )
+ {
+ // initialize all columns with own string class (column 0 == bitmap)
+ USHORT nCount = pEntry->ItemCount();
+ for ( USHORT nCol = 1; nCol < nCount; ++nCol )
+ {
+ SvLBoxString* pCol = (SvLBoxString*)pEntry->GetItem( nCol );
+ BasicLibLBoxString* pStr = new BasicLibLBoxString( pEntry, 0, pCol->GetText() );
+ pEntry->ReplaceItem( pStr, nCol );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT BasicCheckBox::EditingEntry( SvLBoxEntry* pEntry, Selection& )
+{
+ if ( nMode != LIBMODE_MANAGER )
+ return FALSE;
+
+ DBG_ASSERT( pEntry, "Kein Eintrag?" );
+
+ // check, if Standard library
+ String aLibName = GetEntryText( pEntry, 0 );
+ if ( aLibName.EqualsIgnoreCaseAscii( "Standard" ) )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_CANNOTCHANGENAMESTDLIB ) ) ).Execute();
+ return FALSE;
+ }
+
+ // check, if library is readonly
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer2 > xModLibContainer( m_aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) && !xModLibContainer->isLibraryLink( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) && !xDlgLibContainer->isLibraryLink( aOULibName ) ) )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_LIBISREADONLY ) ) ).Execute();
+ return FALSE;
+ }
+
+ // i24094: Password verification necessary for renaming
+ BOOL bOK = TRUE;
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ // check password
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ String aPassword;
+ Reference< script::XLibraryContainer > xModLibContainer1( xModLibContainer, UNO_QUERY );
+ bOK = QueryPassword( xModLibContainer1, aLibName, aPassword );
+ }
+ if ( !bOK )
+ return FALSE;
+ }
+
+ // TODO: check if library is reference/link
+
+ // Prueffen, ob Referenz...
+ /*
+ USHORT nLib = pBasMgr->GetLibId( GetEntryText( pEntry, 0 ) );
+ DBG_ASSERT( nLib != LIB_NOTFOUND, "LibId ?!" );
+ if ( pBasMgr->IsReference( nLib ) )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_CANNOTCHANGENAMEREFLIB ) ) ).Execute();
+ return FALSE;
+ }
+ */
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT BasicCheckBox::EditedEntry( SvLBoxEntry* pEntry, const String& rNewText )
+{
+ BOOL bValid = ( rNewText.Len() <= 30 ) && BasicIDE::IsValidSbxName( rNewText );
+ String aCurText( GetEntryText( pEntry, 0 ) );
+ if ( bValid && ( aCurText != rNewText ) )
+ {
+ try
+ {
+ ::rtl::OUString aOUOldName( aCurText );
+ ::rtl::OUString aOUNewName( rNewText );
+
+ Reference< script::XLibraryContainer2 > xModLibContainer( m_aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ if ( xModLibContainer.is() )
+ {
+ xModLibContainer->renameLibrary( aOUOldName, aOUNewName );
+ }
+
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( xDlgLibContainer.is() )
+ {
+ xDlgLibContainer->renameLibrary( aOUOldName, aOUNewName );
+ }
+
+ BasicIDE::MarkDocumentModified( m_aDocument );
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ {
+ pBindings->Invalidate( SID_BASICIDE_LIBSELECTOR );
+ pBindings->Update( SID_BASICIDE_LIBSELECTOR );
+ }
+ }
+ catch ( container::ElementExistException& )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_SBXNAMEALLREADYUSED ) ) ).Execute();
+ return FALSE;
+ }
+ catch ( container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ return FALSE;
+ }
+ }
+
+ if ( !bValid )
+ {
+ if ( rNewText.Len() > 30 )
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_LIBNAMETOLONG ) ) ).Execute();
+ else
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
+ }
+
+ return bValid;
+}
+
+//----------------------------------------------------------------------------
+// NewObjectDialog
+//----------------------------------------------------------------------------
+
+IMPL_LINK(NewObjectDialog, OkButtonHandler, Button *, EMPTYARG)
+{
+ if (BasicIDE::IsValidSbxName(aEdit.GetText()))
+ EndDialog(1);
+ else
+ {
+ ErrorBox(this, WB_OK | WB_DEF_OK,
+ String(IDEResId(RID_STR_BADSBXNAME))).Execute();
+ aEdit.GrabFocus();
+ }
+ return 0;
+}
+
+NewObjectDialog::NewObjectDialog(Window * pParent, USHORT nMode,
+ bool bCheckName)
+ : ModalDialog( pParent, IDEResId( RID_DLG_NEWLIB ) ),
+ aText( this, IDEResId( RID_FT_NEWLIB ) ),
+ aEdit( this, IDEResId( RID_ED_LIBNAME ) ),
+ aOKButton( this, IDEResId( RID_PB_OK ) ),
+ aCancelButton( this, IDEResId( RID_PB_CANCEL ) )
+{
+ FreeResource();
+ aEdit.GrabFocus();
+
+ if ( nMode == NEWOBJECTMODE_LIB )
+ {
+ SetText( String( IDEResId( RID_STR_NEWLIB ) ) );
+ }
+ else if ( nMode == NEWOBJECTMODE_MOD )
+ {
+ SetText( String( IDEResId( RID_STR_NEWMOD ) ) );
+ }
+ else if ( nMode == NEWOBJECTMODE_METH )
+ {
+ SetText( String( IDEResId( RID_STR_NEWMETH ) ) );
+ }
+ else
+ {
+ SetText( String( IDEResId( RID_STR_NEWDLG ) ) );
+ }
+
+ if (bCheckName)
+ aOKButton.SetClickHdl(LINK(this, NewObjectDialog, OkButtonHandler));
+}
+
+//----------------------------------------------------------------------------
+
+NewObjectDialog::~NewObjectDialog()
+{
+}
+
+//----------------------------------------------------------------------------
+// ExportDialog
+//----------------------------------------------------------------------------
+
+IMPL_LINK(ExportDialog, OkButtonHandler, Button *, EMPTYARG)
+{
+ mbExportAsPackage = maExportAsPackageButton.IsChecked();
+ EndDialog(1);
+ return 0;
+}
+
+ExportDialog::ExportDialog( Window * pParent )
+ : ModalDialog( pParent, IDEResId( RID_DLG_EXPORT ) ),
+ maExportAsPackageButton( this, IDEResId( RB_EXPORTASPACKAGE ) ),
+ maExportAsBasicButton( this, IDEResId( RB_EXPORTASBASIC ) ),
+ maOKButton( this, IDEResId( RID_PB_OK ) ),
+ maCancelButton( this, IDEResId( RID_PB_CANCEL ) )
+{
+ FreeResource();
+ maExportAsPackageButton.Check();
+ maOKButton.SetClickHdl(LINK(this, ExportDialog, OkButtonHandler));
+}
+
+//----------------------------------------------------------------------------
+
+ExportDialog::~ExportDialog()
+{
+}
+
+//----------------------------------------------------------------------------
+// LibPage
+//----------------------------------------------------------------------------
+
+LibPage::LibPage( Window * pParent )
+ :TabPage( pParent, IDEResId( RID_TP_LIBS ) )
+ ,aBasicsText( this, IDEResId( RID_STR_BASICS ) )
+ ,aBasicsBox( this, IDEResId( RID_LB_BASICS ) )
+ ,aLibText( this, IDEResId( RID_STR_LIB ) )
+ ,aLibBox( this, IDEResId( RID_TRLBOX ) )
+ ,aEditButton( this, IDEResId( RID_PB_EDIT ) )
+ ,aCloseButton( this, IDEResId( RID_PB_CLOSE ) )
+ ,aPasswordButton( this, IDEResId( RID_PB_PASSWORD ) )
+ ,aExportButton( this, IDEResId( RID_PB_EXPORT ) )
+ ,aNewLibButton( this, IDEResId( RID_PB_NEWLIB ) )
+ ,aInsertLibButton( this, IDEResId( RID_PB_APPEND ) )
+ ,aDelButton( this, IDEResId( RID_PB_DELETE ) )
+ ,m_aCurDocument( ScriptDocument::getApplicationScriptDocument() )
+ ,m_eCurLocation( LIBRARY_LOCATION_UNKNOWN )
+{
+ FreeResource();
+ pTabDlg = 0;
+
+ aEditButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
+ aNewLibButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
+ aPasswordButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
+ aExportButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
+ aInsertLibButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
+ aDelButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
+ aCloseButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
+ aLibBox.SetSelectHdl( LINK( this, LibPage, TreeListHighlightHdl ) );
+
+ aBasicsBox.SetSelectHdl( LINK( this, LibPage, BasicSelectHdl ) );
+
+ aLibBox.SetMode( LIBMODE_MANAGER );
+ aLibBox.EnableInplaceEditing( TRUE );
+ aLibBox.SetWindowBits( WB_HSCROLL );
+ aCloseButton.GrabFocus();
+
+ long aTabs[] = { 2, 30, 120 };
+ aLibBox.SetTabs( aTabs, MAP_PIXEL );
+
+ FillListBox();
+ aBasicsBox.SelectEntryPos( 0 );
+ SetCurLib();
+
+ CheckButtons();
+}
+
+//----------------------------------------------------------------------------
+
+LibPage::~LibPage()
+{
+ USHORT nCount = aBasicsBox.GetEntryCount();
+ for ( USHORT i = 0; i < nCount; ++i )
+ {
+ BasicDocumentEntry* pEntry = (BasicDocumentEntry*)aBasicsBox.GetEntryData( i );
+ delete pEntry;
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::CheckButtons()
+{
+ SvLBoxEntry* pCur = aLibBox.GetCurEntry();
+ if ( pCur )
+ {
+ String aLibName = aLibBox.GetEntryText( pCur, 0 );
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+
+ if ( m_eCurLocation == LIBRARY_LOCATION_SHARE )
+ {
+ aPasswordButton.Disable();
+ aNewLibButton.Disable();
+ aInsertLibButton.Disable();
+ aDelButton.Disable();
+ }
+ else if ( aLibName.EqualsIgnoreCaseAscii( "Standard" ) )
+ {
+ aPasswordButton.Disable();
+ aNewLibButton.Enable();
+ aInsertLibButton.Enable();
+ aExportButton.Disable();
+ aDelButton.Disable();
+ if ( !aLibBox.HasFocus() )
+ aCloseButton.GrabFocus();
+ }
+ else if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) )
+ {
+ aPasswordButton.Disable();
+ aNewLibButton.Enable();
+ aInsertLibButton.Enable();
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) && !xModLibContainer->isLibraryLink( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) && !xDlgLibContainer->isLibraryLink( aOULibName ) ) )
+ aDelButton.Disable();
+ else
+ aDelButton.Enable();
+ }
+ else
+ {
+ if ( xModLibContainer.is() && !xModLibContainer->hasByName( aOULibName ) )
+ aPasswordButton.Disable();
+ else
+ aPasswordButton.Enable();
+
+ aNewLibButton.Enable();
+ aInsertLibButton.Enable();
+ aExportButton.Enable();
+ aDelButton.Enable();
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void __EXPORT LibPage::ActivatePage()
+{
+ SetCurLib();
+}
+
+//----------------------------------------------------------------------------
+
+
+void __EXPORT LibPage::DeactivatePage()
+{
+}
+
+//----------------------------------------------------------------------------
+
+
+IMPL_LINK_INLINE_START( LibPage, TreeListHighlightHdl, SvTreeListBox *, pBox )
+{
+ if ( pBox->IsSelected( pBox->GetHdlEntry() ) )
+ CheckButtons();
+ return 0;
+}
+IMPL_LINK_INLINE_END( LibPage, TreeListHighlightHdl, SvTreeListBox *, pBox )
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( LibPage, BasicSelectHdl, ListBox *, pBox )
+{
+ (void)pBox;
+ SetCurLib();
+ CheckButtons();
+ return 0;
+}
+IMPL_LINK_INLINE_END( LibPage, BasicSelectHdl, ListBox *, pBox )
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( LibPage, ButtonHdl, Button *, pButton )
+{
+ if ( pButton == &aEditButton )
+ {
+ SfxAllItemSet aArgs( SFX_APP()->GetPool() );
+ SfxRequest aRequest( SID_BASICIDE_APPEAR, SFX_CALLMODE_SYNCHRON, aArgs );
+ SFX_APP()->ExecuteSlot( aRequest );
+
+ SfxUsrAnyItem aDocItem( SID_BASICIDE_ARG_DOCUMENT_MODEL, makeAny( m_aCurDocument.getDocumentOrNull() ) );
+ SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
+ DBG_ASSERT( pCurEntry, "Entry?!" );
+ String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
+ SfxStringItem aLibNameItem( SID_BASICIDE_ARG_LIBNAME, aLibName );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if ( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_LIBSELECTED,
+ SFX_CALLMODE_ASYNCHRON, &aDocItem, &aLibNameItem, 0L );
+ }
+ EndTabDialog( 1 );
+ return 0;
+ }
+ else if ( pButton == &aNewLibButton )
+ NewLib();
+ else if ( pButton == &aInsertLibButton )
+ InsertLib();
+ else if ( pButton == &aExportButton )
+ Export();
+ else if ( pButton == &aDelButton )
+ DeleteCurrent();
+ else if ( pButton == &aCloseButton )
+ {
+ EndTabDialog( 0 );
+ return 0;
+ }
+ else if ( pButton == &aPasswordButton )
+ {
+ SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
+ String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
+ ::rtl::OUString aOULibName( aLibName );
+
+ // load module library (if not loaded)
+ Reference< script::XLibraryContainer > xModLibContainer = m_aCurDocument.getLibraryContainer( E_SCRIPTS );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ pIDEShell->GetViewFrame()->GetWindow().EnterWait();
+ xModLibContainer->loadLibrary( aOULibName );
+ if ( pIDEShell )
+ pIDEShell->GetViewFrame()->GetWindow().LeaveWait();
+ }
+
+ // load dialog library (if not loaded)
+ Reference< script::XLibraryContainer > xDlgLibContainer = m_aCurDocument.getLibraryContainer( E_DIALOGS );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && !xDlgLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ if ( pIDEShell )
+ pIDEShell->GetViewFrame()->GetWindow().EnterWait();
+ xDlgLibContainer->loadLibrary( aOULibName );
+ if ( pIDEShell )
+ pIDEShell->GetViewFrame()->GetWindow().LeaveWait();
+ }
+
+ // check, if library is password protected
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() )
+ {
+ BOOL bProtected = xPasswd->isLibraryPasswordProtected( aOULibName );
+
+ // change password dialog
+ SvxPasswordDialog* pDlg = new SvxPasswordDialog( this, TRUE, !bProtected );
+ pDlg->SetCheckPasswordHdl( LINK( this, LibPage, CheckPasswordHdl ) );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ BOOL bNewProtected = xPasswd->isLibraryPasswordProtected( aOULibName );
+
+ if ( bNewProtected != bProtected )
+ {
+ ULONG nPos = (ULONG)aLibBox.GetModel()->GetAbsPos( pCurEntry );
+ aLibBox.GetModel()->Remove( pCurEntry );
+ ImpInsertLibEntry( aLibName, nPos );
+ aLibBox.SetCurEntry( aLibBox.GetEntry( nPos ) );
+ }
+
+ BasicIDE::MarkDocumentModified( m_aCurDocument );
+ }
+ delete pDlg;
+ }
+ }
+ }
+ CheckButtons();
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( LibPage, CheckPasswordHdl, SvxPasswordDialog *, pDlg )
+{
+ long nRet = 0;
+
+ SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
+ ::rtl::OUString aOULibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
+ Reference< script::XLibraryContainerPassword > xPasswd( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+
+ if ( xPasswd.is() )
+ {
+ try
+ {
+ ::rtl::OUString aOUOldPassword( pDlg->GetOldPassword() );
+ ::rtl::OUString aOUNewPassword( pDlg->GetNewPassword() );
+ xPasswd->changeLibraryPassword( aOULibName, aOUOldPassword, aOUNewPassword );
+ nRet = 1;
+ }
+ catch (...)
+ {
+ }
+ }
+
+ return nRet;
+}
+IMPL_LINK_INLINE_END( LibPage, CheckPasswordHdl, SvxPasswordDialog *, pDlg )
+
+//----------------------------------------------------------------------------
+
+void LibPage::NewLib()
+{
+ createLibImpl( static_cast<Window*>( this ), m_aCurDocument, &aLibBox, NULL);
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::InsertLib()
+{
+ // file open dialog
+ Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference < XFilePicker > xFP;
+ if( xMSF.is() )
+ {
+ Sequence <Any> aServiceType(1);
+ aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
+ xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
+ }
+ xFP->setTitle( String( IDEResId( RID_STR_APPENDLIBS ) ) );
+
+ // filter
+ ::rtl::OUString aTitle = String( IDEResId( RID_STR_BASIC ) );
+ ::rtl::OUString aFilter;
+ aFilter = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.sbl;*.xlc;*.xlb" ) ); // library files
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sdw;*.sxw;*.odt" ) ); // text
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.vor;*.stw;*.ott" ) ); // text template
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sgl;*.sxg;*.odm" ) ); // master document
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.oth" ) ); // html document template
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sdc;*.sxc;*.ods" ) ); // spreadsheet
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.stc;*.ots" ) ); // spreadsheet template
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sda;*.sxd;*.odg" ) ); // drawing
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.std;*.otg" ) ); // drawing template
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sdd;*.sxi;*.odp" ) ); // presentation
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sti;*.otp" ) ); // presentation template
+ aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sxm;*.odf" ) ); // formula
+ Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
+ xFltMgr->appendFilter( aTitle, aFilter );
+
+ // set display directory and filter
+ String aPath( IDE_DLL()->GetExtraData()->GetAddLibPath() );
+ if ( aPath.Len() )
+ {
+ xFP->setDisplayDirectory( aPath );
+ }
+ else
+ {
+ // macro path from configuration management
+ xFP->setDisplayDirectory( SvtPathOptions().GetWorkPath() );
+ }
+
+ String aLastFilter( IDE_DLL()->GetExtraData()->GetAddLibFilter() );
+ if ( aLastFilter.Len() )
+ {
+ xFltMgr->setCurrentFilter( aLastFilter );
+ }
+ else
+ {
+ xFltMgr->setCurrentFilter( String( IDEResId( RID_STR_BASIC ) ) );
+ }
+
+ if ( xFP->execute() == RET_OK )
+ {
+ IDE_DLL()->GetExtraData()->SetAddLibPath( xFP->getDisplayDirectory() );
+ IDE_DLL()->GetExtraData()->SetAddLibFilter( xFltMgr->getCurrentFilter() );
+
+ // library containers for import
+ Reference< script::XLibraryContainer2 > xModLibContImport;
+ Reference< script::XLibraryContainer2 > xDlgLibContImport;
+
+ // file URLs
+ Sequence< ::rtl::OUString > aFiles = xFP->getFiles();
+ INetURLObject aURLObj( aFiles[0] );
+ INetURLObject aModURLObj( aURLObj );
+ INetURLObject aDlgURLObj( aURLObj );
+
+ String aBase = aURLObj.getBase();
+ String aModBase = String::CreateFromAscii( "script" );
+ String aDlgBase = String::CreateFromAscii( "dialog" );
+
+ if ( aBase == aModBase || aBase == aDlgBase )
+ {
+ aModURLObj.setBase( aModBase );
+ aDlgURLObj.setBase( aDlgBase );
+ }
+
+ if ( xMSF.is() )
+ {
+ Reference< XSimpleFileAccess > xSFA( xMSF->createInstance(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" ) ) ), UNO_QUERY );
+
+ if ( xSFA.is() )
+ {
+ ::rtl::OUString aModURL( aModURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
+ if ( xSFA->exists( aModURL ) )
+ {
+ Sequence <Any> aSeqModURL(1);
+ aSeqModURL[0] <<= aModURL;
+ xModLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.DocumentScriptLibraryContainer" ) ), aSeqModURL ), UNO_QUERY );
+ }
+
+ ::rtl::OUString aDlgURL( aDlgURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
+ if ( xSFA->exists( aDlgURL ) )
+ {
+ Sequence <Any> aSeqDlgURL(1);
+ aSeqDlgURL[0] <<= aDlgURL;
+ xDlgLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.DocumentDialogLibraryContainer" ) ), aSeqDlgURL ), UNO_QUERY );
+ }
+ }
+ }
+
+ if ( xModLibContImport.is() || xDlgLibContImport.is() )
+ {
+ LibDialog* pLibDlg = 0;
+
+ Reference< script::XLibraryContainer > xModLibContImp( xModLibContImport, UNO_QUERY );
+ Reference< script::XLibraryContainer > xDlgLibContImp( xDlgLibContImport, UNO_QUERY );
+ Sequence< ::rtl::OUString > aLibNames = BasicIDE::GetMergedLibraryNames( xModLibContImp, xDlgLibContImp );
+ sal_Int32 nLibCount = aLibNames.getLength();
+ const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
+ for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+ {
+ // library import dialog
+ if ( !pLibDlg )
+ {
+ pLibDlg = new LibDialog( this );
+ pLibDlg->SetStorageName( aURLObj.getName() );
+ pLibDlg->GetLibBox().SetMode( LIBMODE_CHOOSER );
+ }
+
+ // libbox entries
+ String aLibName( pLibNames[ i ] );
+ String aOULibName( aLibName );
+ if ( !( ( xModLibContImport.is() && xModLibContImport->hasByName( aOULibName ) && xModLibContImport->isLibraryLink( aOULibName ) ) ||
+ ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aOULibName ) && xDlgLibContImport->isLibraryLink( aOULibName ) ) ) )
+ {
+ SvLBoxEntry* pEntry = pLibDlg->GetLibBox().DoInsertEntry( aLibName );
+ USHORT nPos = (USHORT) pLibDlg->GetLibBox().GetModel()->GetAbsPos( pEntry );
+ pLibDlg->GetLibBox().CheckEntryPos( nPos, TRUE);
+ }
+ }
+
+ if ( !pLibDlg )
+ InfoBox( this, String( IDEResId( RID_STR_NOLIBINSTORAGE ) ) ).Execute();
+ else
+ {
+ BOOL bChanges = FALSE;
+ String aExtension( aURLObj.getExtension() );
+ String aLibExtension( String::CreateFromAscii( "xlb" ) );
+ String aContExtension( String::CreateFromAscii( "xlc" ) );
+
+ // disable reference checkbox for documents and sbls
+ if ( aExtension != aLibExtension && aExtension != aContExtension )
+ pLibDlg->EnableReference( FALSE );
+
+ if ( pLibDlg->Execute() )
+ {
+ ULONG nNewPos = aLibBox.GetEntryCount();
+ BOOL bRemove = FALSE;
+ BOOL bReplace = pLibDlg->IsReplace();
+ BOOL bReference = pLibDlg->IsReference();
+ for ( USHORT nLib = 0; nLib < pLibDlg->GetLibBox().GetEntryCount(); nLib++ )
+ {
+ if ( pLibDlg->GetLibBox().IsChecked( nLib ) )
+ {
+ SvLBoxEntry* pEntry = pLibDlg->GetLibBox().GetEntry( nLib );
+ DBG_ASSERT( pEntry, "Entry?!" );
+ String aLibName( pLibDlg->GetLibBox().GetEntryText( pEntry, 0 ) );
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+
+ // check, if the library is already existing
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) ) )
+ {
+ if ( bReplace )
+ {
+ // check, if the library is the Standard library
+ if ( aLibName.EqualsAscii( "Standard" ) )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_REPLACESTDLIB ) ) ).Execute();
+ continue;
+ }
+
+ // check, if the library is readonly and not a link
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) && !xModLibContainer->isLibraryLink( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) && !xDlgLibContainer->isLibraryLink( aOULibName ) ) )
+ {
+ String aErrStr( IDEResId( RID_STR_REPLACELIB ) );
+ aErrStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), aLibName );
+ aErrStr += '\n';
+ aErrStr += String( IDEResId( RID_STR_LIBISREADONLY ) );
+ ErrorBox( this, WB_OK | WB_DEF_OK, aErrStr ).Execute();
+ continue;
+ }
+
+ // remove existing libraries
+ bRemove = TRUE;
+ }
+ else
+ {
+ String aErrStr;
+ if ( bReference )
+ aErrStr = String( IDEResId( RID_STR_REFNOTPOSSIBLE ) );
+ else
+ aErrStr = String( IDEResId( RID_STR_IMPORTNOTPOSSIBLE ) );
+ aErrStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), aLibName );
+ aErrStr += '\n';
+ aErrStr += String( IDEResId( RID_STR_SBXNAMEALLREADYUSED ) );
+ ErrorBox( this, WB_OK | WB_DEF_OK, aErrStr ).Execute();
+ continue;
+ }
+ }
+
+ // check, if the library is password protected
+ BOOL bOK = FALSE;
+ String aPassword;
+ if ( xModLibContImport.is() && xModLibContImport->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContImport, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) && !bReference )
+ {
+ bOK = QueryPassword( xModLibContImp, aLibName, aPassword, TRUE, TRUE );
+
+ if ( !bOK )
+ {
+ String aErrStr( IDEResId( RID_STR_NOIMPORT ) );
+ aErrStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), aLibName );
+ ErrorBox( this, WB_OK | WB_DEF_OK, aErrStr ).Execute();
+ continue;
+ }
+ }
+ }
+
+ // remove existing libraries
+ if ( bRemove )
+ {
+ // remove listbox entry
+ SvLBoxEntry* pEntry_ = aLibBox.FindEntry( aLibName );
+ if ( pEntry_ )
+ aLibBox.SvTreeListBox::GetModel()->Remove( pEntry_ );
+
+ // remove module library
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ xModLibContainer->removeLibrary( aOULibName );
+
+ // remove dialog library
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) )
+ xDlgLibContainer->removeLibrary( aOULibName );
+ }
+
+ // copy module library
+ if ( xModLibContImport.is() && xModLibContImport->hasByName( aOULibName ) && xModLibContainer.is() && !xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< container::XNameContainer > xModLib;
+ if ( bReference )
+ {
+ // storage URL
+ INetURLObject aModStorageURLObj( aModURLObj );
+ if ( aExtension == aContExtension )
+ {
+ sal_Int32 nCount = aModStorageURLObj.getSegmentCount();
+ aModStorageURLObj.insertName( aLibName, false, nCount-1 );
+ aModStorageURLObj.setExtension( aLibExtension );
+ aModStorageURLObj.setFinalSlash();
+ }
+ ::rtl::OUString aModStorageURL( aModStorageURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
+
+ // create library link
+ xModLib = Reference< container::XNameContainer >( xModLibContainer->createLibraryLink( aOULibName, aModStorageURL, TRUE ), UNO_QUERY);
+ }
+ else
+ {
+ // create library
+ xModLib = xModLibContainer->createLibrary( aOULibName );
+ if ( xModLib.is() )
+ {
+ // get import library
+ Reference< container::XNameContainer > xModLibImport;
+ Any aElement = xModLibContImport->getByName( aOULibName );
+ aElement >>= xModLibImport;
+
+ if ( xModLibImport.is() )
+ {
+ // load library
+ if ( !xModLibContImport->isLibraryLoaded( aOULibName ) )
+ xModLibContImport->loadLibrary( aOULibName );
+
+ // copy all modules
+ Sequence< ::rtl::OUString > aModNames = xModLibImport->getElementNames();
+ sal_Int32 nModCount = aModNames.getLength();
+ const ::rtl::OUString* pModNames = aModNames.getConstArray();
+ for ( sal_Int32 i = 0 ; i < nModCount ; i++ )
+ {
+ ::rtl::OUString aOUModName( pModNames[ i ] );
+ Any aElement_ = xModLibImport->getByName( aOUModName );
+ xModLib->insertByName( aOUModName, aElement_ );
+ }
+
+ // set password
+ if ( bOK )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() )
+ {
+ try
+ {
+ ::rtl::OUString aOUPassword( aPassword );
+ xPasswd->changeLibraryPassword( aOULibName, ::rtl::OUString(), aOUPassword );
+ }
+ catch (...)
+ {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // copy dialog library
+ if ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aOULibName ) && xDlgLibContainer.is() && !xDlgLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< container::XNameContainer > xDlgLib;
+ if ( bReference )
+ {
+ // storage URL
+ INetURLObject aDlgStorageURLObj( aDlgURLObj );
+ if ( aExtension == aContExtension )
+ {
+ sal_Int32 nCount = aDlgStorageURLObj.getSegmentCount();
+ aDlgStorageURLObj.insertName( aLibName, false, nCount - 1 );
+ aDlgStorageURLObj.setExtension( aLibExtension );
+ aDlgStorageURLObj.setFinalSlash();
+ }
+ ::rtl::OUString aDlgStorageURL( aDlgStorageURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
+
+ // create library link
+ xDlgLib = Reference< container::XNameContainer >( xDlgLibContainer->createLibraryLink( aOULibName, aDlgStorageURL, TRUE ), UNO_QUERY);
+ }
+ else
+ {
+ // create library
+ xDlgLib = xDlgLibContainer->createLibrary( aOULibName );
+ if ( xDlgLib.is() )
+ {
+ // get import library
+ Reference< container::XNameContainer > xDlgLibImport;
+ Any aElement = xDlgLibContImport->getByName( aOULibName );
+ aElement >>= xDlgLibImport;
+
+ if ( xDlgLibImport.is() )
+ {
+ // load library
+ if ( !xDlgLibContImport->isLibraryLoaded( aOULibName ) )
+ xDlgLibContImport->loadLibrary( aOULibName );
+
+ // copy all dialogs
+ Sequence< ::rtl::OUString > aDlgNames = xDlgLibImport->getElementNames();
+ sal_Int32 nDlgCount = aDlgNames.getLength();
+ const ::rtl::OUString* pDlgNames = aDlgNames.getConstArray();
+ for ( sal_Int32 i = 0 ; i < nDlgCount ; i++ )
+ {
+ ::rtl::OUString aOUDlgName( pDlgNames[ i ] );
+ Any aElement_ = xDlgLibImport->getByName( aOUDlgName );
+ xDlgLib->insertByName( aOUDlgName, aElement_ );
+ }
+ }
+ }
+ }
+ }
+
+ // insert listbox entry
+ ImpInsertLibEntry( aLibName, aLibBox.GetEntryCount() );
+ bChanges = TRUE;
+ }
+ }
+
+ SvLBoxEntry* pFirstNew = aLibBox.GetEntry( nNewPos );
+ if ( pFirstNew )
+ aLibBox.SetCurEntry( pFirstNew );
+ }
+
+ delete pLibDlg;
+ if ( bChanges )
+ BasicIDE::MarkDocumentModified( m_aCurDocument );
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::Export( void )
+{
+ SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
+ String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
+
+ // Password verification
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ BOOL bOK = TRUE;
+
+ // check password
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ String aPassword;
+ Reference< script::XLibraryContainer > xModLibContainer1( xModLibContainer, UNO_QUERY );
+ bOK = QueryPassword( xModLibContainer1, aLibName, aPassword );
+ }
+ if ( !bOK )
+ return;
+ }
+
+
+ Window* pWin = static_cast<Window*>( this );
+ std::auto_ptr< ExportDialog > xNewDlg( new ExportDialog( pWin ) );
+
+ if ( xNewDlg->Execute() == RET_OK )
+ {
+ try
+ {
+ if( xNewDlg->isExportAsPackage() )
+ ExportAsPackage( aLibName );
+ else
+ ExportAsBasic( aLibName );
+ }
+ catch( util::VetoException& ) // user cancled operation
+ {
+ }
+ }
+}
+
+void LibPage::implExportLib( const String& aLibName, const String& aTargetURL,
+ const Reference< task::XInteractionHandler >& Handler )
+{
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainerExport > xModLibContainerExport
+ ( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainerExport > xDlgLibContainerExport
+ ( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( xModLibContainerExport.is() )
+ xModLibContainerExport->exportLibrary( aOULibName, aTargetURL, Handler );
+
+ if ( xDlgLibContainerExport.is() )
+ xDlgLibContainerExport->exportLibrary( aOULibName, aTargetURL, Handler );
+}
+
+
+//===========================================================================
+// Implementation XCommandEnvironment
+
+typedef cppu::WeakImplHelper1< XCommandEnvironment > LibCommandEnvironmentHelper;
+
+class OLibCommandEnvironment : public LibCommandEnvironmentHelper
+{
+ Reference< task::XInteractionHandler > mxInteraction;
+
+public:
+ OLibCommandEnvironment( Reference< task::XInteractionHandler > xInteraction )
+ : mxInteraction( xInteraction )
+ {}
+
+ // Methods
+ virtual Reference< task::XInteractionHandler > SAL_CALL getInteractionHandler()
+ throw(RuntimeException);
+ virtual Reference< XProgressHandler > SAL_CALL getProgressHandler()
+ throw(RuntimeException);
+};
+
+Reference< task::XInteractionHandler > OLibCommandEnvironment::getInteractionHandler()
+ throw(RuntimeException)
+{
+ return mxInteraction;
+}
+
+Reference< XProgressHandler > OLibCommandEnvironment::getProgressHandler()
+ throw(RuntimeException)
+{
+ Reference< XProgressHandler > xRet;
+ return xRet;
+}
+
+
+
+void LibPage::ExportAsPackage( const String& aLibName )
+{
+ // file open dialog
+ Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference< task::XInteractionHandler > xHandler;
+ Reference< XSimpleFileAccess > xSFA;
+ Reference < XFilePicker > xFP;
+ if( xMSF.is() )
+ {
+ xHandler = Reference< task::XInteractionHandler >( xMSF->createInstance
+ ( DEFINE_CONST_UNICODE("com.sun.star.task.InteractionHandler") ), UNO_QUERY );
+
+ xSFA = Reference< XSimpleFileAccess > ( xMSF->createInstance(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" ) ) ), UNO_QUERY );
+ if( !xSFA.is() )
+ {
+ DBG_ERROR( "No simpleFileAccess" );
+ return;
+ }
+
+ Sequence <Any> aServiceType(1);
+ aServiceType[0] <<= TemplateDescription::FILESAVE_SIMPLE;
+ xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
+ }
+ xFP->setTitle( String( IDEResId( RID_STR_EXPORTPACKAGE ) ) );
+
+ // filter
+ ::rtl::OUString aTitle = String( IDEResId( RID_STR_PACKAGE_BUNDLE ) );
+ ::rtl::OUString aFilter;
+ aFilter = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.oxt" ) ); // library files
+ Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
+ xFltMgr->appendFilter( aTitle, aFilter );
+
+ // set display directory and filter
+ String aPath( IDE_DLL()->GetExtraData()->GetAddLibPath() );
+ if ( aPath.Len() )
+ {
+ xFP->setDisplayDirectory( aPath );
+ }
+ else
+ {
+ // macro path from configuration management
+ xFP->setDisplayDirectory( SvtPathOptions().GetWorkPath() );
+ }
+ xFltMgr->setCurrentFilter( aTitle );
+
+ if ( xFP->execute() == RET_OK )
+ {
+ IDE_DLL()->GetExtraData()->SetAddLibPath( xFP->getDisplayDirectory() );
+
+ Sequence< ::rtl::OUString > aFiles = xFP->getFiles();
+ INetURLObject aURL( aFiles[0] );
+ if( !aURL.getExtension().getLength() )
+ aURL.setExtension( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "oxt" ) ) );
+
+ ::rtl::OUString aPackageURL( aURL.GetMainURL( INetURLObject::NO_DECODE ) );
+
+ String aTmpPath = SvtPathOptions().GetTempPath();
+ INetURLObject aInetObj( aTmpPath );
+ aInetObj.insertName( aLibName, sal_True, INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
+ OUString aSourcePath = aInetObj.GetMainURL( INetURLObject::NO_DECODE );
+ if( xSFA->exists( aSourcePath ) )
+ xSFA->kill( aSourcePath );
+ Reference< task::XInteractionHandler > xDummyHandler( new DummyInteractionHandler( xHandler ) );
+ implExportLib( aLibName, aTmpPath, xDummyHandler );
+
+ Reference< XCommandEnvironment > xCmdEnv =
+ static_cast<XCommandEnvironment*>( new OLibCommandEnvironment( xHandler ) );
+
+ ::ucbhelper::Content sourceContent( aSourcePath, xCmdEnv );
+
+ ::rtl::OUStringBuffer buf;
+ buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.zip://") );
+ buf.append( ::rtl::Uri::encode( aPackageURL,
+ rtl_UriCharClassRegName,
+ rtl_UriEncodeIgnoreEscapes,
+ RTL_TEXTENCODING_UTF8 ) );
+ buf.append( static_cast<sal_Unicode>('/') );
+ OUString destFolder( buf.makeStringAndClear() );
+
+ if( xSFA->exists( aPackageURL ) )
+ xSFA->kill( aPackageURL );
+
+ ::ucbhelper::Content destFolderContent( destFolder, xCmdEnv );
+ destFolderContent.transferContent(
+ sourceContent, ::ucbhelper::InsertOperation_COPY,
+ OUString(), NameClash::OVERWRITE );
+
+ INetURLObject aMetaInfInetObj( aTmpPath );
+ aMetaInfInetObj.insertName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "META-INF" ) ),
+ sal_True, INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
+ OUString aMetaInfFolder = aMetaInfInetObj.GetMainURL( INetURLObject::NO_DECODE );
+ if( xSFA->exists( aMetaInfFolder ) )
+ xSFA->kill( aMetaInfFolder );
+ xSFA->createFolder( aMetaInfFolder );
+
+ ::std::vector< Sequence<beans::PropertyValue> > manifest;
+ const OUString strMediaType = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MediaType" ) );
+ const OUString strFullPath = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FullPath" ) );
+ const OUString strBasicMediaType = ::rtl::OUString
+ ( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.sun.star.basic-library" ) );
+
+ Sequence<beans::PropertyValue> attribs( 2 );
+ beans::PropertyValue * pattribs = attribs.getArray();
+ pattribs[ 0 ].Name = strFullPath;
+ OUString fullPath = aLibName;
+ fullPath += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/") );
+ pattribs[ 0 ].Value <<= fullPath;
+ pattribs[ 1 ].Name = strMediaType;
+ pattribs[ 1 ].Value <<= strBasicMediaType;
+ manifest.push_back( attribs );
+
+ // write into pipe:
+ Reference<packages::manifest::XManifestWriter> xManifestWriter( xMSF->createInstance
+ ( DEFINE_CONST_UNICODE("com.sun.star.packages.manifest.ManifestWriter") ), UNO_QUERY );
+ Reference<io::XOutputStream> xPipe( xMSF->createInstance
+ ( DEFINE_CONST_UNICODE("com.sun.star.io.Pipe") ), UNO_QUERY );
+ xManifestWriter->writeManifestSequence(
+ xPipe, Sequence< Sequence<beans::PropertyValue> >(
+ &manifest[ 0 ], manifest.size() ) );
+
+ aMetaInfInetObj.insertName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "manifest.xml" ) ),
+ sal_True, INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
+
+ // write buffered pipe data to content:
+ ::ucbhelper::Content manifestContent( aMetaInfInetObj.GetMainURL( INetURLObject::NO_DECODE ), xCmdEnv );
+ manifestContent.writeStream( Reference<io::XInputStream>( xPipe, UNO_QUERY_THROW ), true );
+
+ ::ucbhelper::Content MetaInfContent( aMetaInfFolder, xCmdEnv );
+ destFolderContent.transferContent(
+ MetaInfContent, ::ucbhelper::InsertOperation_COPY,
+ OUString(), NameClash::OVERWRITE );
+
+ if( xSFA->exists( aSourcePath ) )
+ xSFA->kill( aSourcePath );
+ if( xSFA->exists( aMetaInfFolder ) )
+ xSFA->kill( aMetaInfFolder );
+ }
+}
+
+void LibPage::ExportAsBasic( const String& aLibName )
+{
+ // Folder picker
+ Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference< XFolderPicker > xFolderPicker;
+ Reference< task::XInteractionHandler > xHandler;
+ if( xMSF.is() )
+ {
+ xFolderPicker = Reference< XFolderPicker >( xMSF->createInstance(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FolderPicker" ) ) ), UNO_QUERY );
+
+ xHandler = Reference< task::XInteractionHandler >( xMSF->createInstance
+ ( DEFINE_CONST_UNICODE("com.sun.star.task.InteractionHandler") ), UNO_QUERY );
+ }
+
+ if( xFolderPicker.is() )
+ {
+ xFolderPicker->setTitle( String( IDEResId( RID_STR_EXPORTBASIC ) ) );
+
+ // set display directory and filter
+ String aPath( IDE_DLL()->GetExtraData()->GetAddLibPath() );
+ if( !aPath.Len() )
+ aPath = SvtPathOptions().GetWorkPath();
+
+ // INetURLObject aURL(m_sSavePath, INET_PROT_FILE);
+ xFolderPicker->setDisplayDirectory( aPath );
+ short nRet = xFolderPicker->execute();
+ if( nRet == RET_OK )
+ {
+ String aTargetURL = xFolderPicker->getDirectory();
+ IDE_DLL()->GetExtraData()->SetAddLibPath( aTargetURL );
+
+ Reference< task::XInteractionHandler > xDummyHandler( new DummyInteractionHandler( xHandler ) );
+ implExportLib( aLibName, aTargetURL, xDummyHandler );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::DeleteCurrent()
+{
+ SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
+ String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
+
+ // check, if library is link
+ BOOL bIsLibraryLink = FALSE;
+ ::rtl::OUString aOULibName( aLibName );
+ Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryLink( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryLink( aOULibName ) ) )
+ {
+ bIsLibraryLink = TRUE;
+ }
+
+ if ( QueryDelLib( aLibName, bIsLibraryLink, this ) )
+ {
+ // inform BasicIDE
+ SfxUsrAnyItem aDocItem( SID_BASICIDE_ARG_DOCUMENT_MODEL, makeAny( m_aCurDocument.getDocumentOrNull() ) );
+ SfxStringItem aLibNameItem( SID_BASICIDE_ARG_LIBNAME, aLibName );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_LIBREMOVED,
+ SFX_CALLMODE_SYNCHRON, &aDocItem, &aLibNameItem, 0L );
+ }
+
+ // remove library from module and dialog library containers
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ xModLibContainer->removeLibrary( aOULibName );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) )
+ xDlgLibContainer->removeLibrary( aOULibName );
+
+ ((SvLBox&)aLibBox).GetModel()->Remove( pCurEntry );
+ BasicIDE::MarkDocumentModified( m_aCurDocument );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::EndTabDialog( USHORT nRet )
+{
+ DBG_ASSERT( pTabDlg, "TabDlg nicht gesetzt!" );
+ if ( pTabDlg )
+ pTabDlg->EndDialog( nRet );
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::FillListBox()
+{
+ InsertListBoxEntry( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_USER );
+ InsertListBoxEntry( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_SHARE );
+
+ ScriptDocuments aDocuments( ScriptDocument::getAllScriptDocuments( ScriptDocument::DocumentsSorted ) );
+ for ( ScriptDocuments::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ InsertListBoxEntry( *doc, LIBRARY_LOCATION_DOCUMENT );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::InsertListBoxEntry( const ScriptDocument& rDocument, LibraryLocation eLocation )
+{
+ String aEntryText( rDocument.getTitle( eLocation ) );
+ USHORT nPos = aBasicsBox.InsertEntry( aEntryText, LISTBOX_APPEND );
+ aBasicsBox.SetEntryData( nPos, new BasicDocumentEntry( rDocument, eLocation ) );
+}
+
+//----------------------------------------------------------------------------
+
+void LibPage::SetCurLib()
+{
+ USHORT nSelPos = aBasicsBox.GetSelectEntryPos();
+ BasicDocumentEntry* pEntry = (BasicDocumentEntry*)aBasicsBox.GetEntryData( nSelPos );
+ if ( pEntry )
+ {
+ ScriptDocument aDocument( pEntry->GetDocument() );
+ DBG_ASSERT( aDocument.isAlive(), "LibPage::SetCurLib: no document, or document is dead!" );
+ if ( !aDocument.isAlive() )
+ return;
+ LibraryLocation eLocation = pEntry->GetLocation();
+ if ( aDocument != m_aCurDocument || eLocation != m_eCurLocation )
+ {
+ m_aCurDocument = aDocument;
+ m_eCurLocation = eLocation;
+ aLibBox.SetDocument( aDocument );
+ aLibBox.Clear();
+
+ // get a sorted list of library names
+ Sequence< ::rtl::OUString > aLibNames = aDocument.getLibraryNames();
+ sal_Int32 nLibCount = aLibNames.getLength();
+ const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
+
+ for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+ {
+ String aLibName( pLibNames[ i ] );
+ if ( eLocation == aDocument.getLibraryLocation( aLibName ) )
+ ImpInsertLibEntry( aLibName, i );
+ }
+
+ SvLBoxEntry* pEntry_ = aLibBox.FindEntry( String::CreateFromAscii( "Standard" ) );
+ if ( !pEntry_ )
+ pEntry_ = aLibBox.GetEntry( 0 );
+ aLibBox.SetCurEntry( pEntry_ );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+SvLBoxEntry* LibPage::ImpInsertLibEntry( const String& rLibName, ULONG nPos )
+{
+ // check, if library is password protected
+ BOOL bProtected = FALSE;
+ ::rtl::OUString aOULibName( rLibName );
+ Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
+ {
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() )
+ {
+ bProtected = xPasswd->isLibraryPasswordProtected( aOULibName );
+ }
+ }
+
+ SvLBoxEntry* pNewEntry = aLibBox.DoInsertEntry( rLibName, nPos );
+ pNewEntry->SetUserData( new BasicLibUserData( m_aCurDocument ) );
+
+ if (bProtected)
+ {
+ Image aImage(IDEResId(RID_IMG_LOCKED));
+ aLibBox.SetExpandedEntryBmp(pNewEntry, aImage, BMP_COLOR_NORMAL);
+ aLibBox.SetCollapsedEntryBmp(pNewEntry, aImage, BMP_COLOR_NORMAL);
+ aImage = Image(IDEResId(RID_IMG_LOCKED_HC));
+ aLibBox.SetExpandedEntryBmp(pNewEntry, aImage,
+ BMP_COLOR_HIGHCONTRAST);
+ aLibBox.SetCollapsedEntryBmp(pNewEntry, aImage,
+ BMP_COLOR_HIGHCONTRAST);
+ }
+
+ // check, if library is link
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryLink( aOULibName ) )
+ {
+ String aLinkURL = xModLibContainer->getLibraryLinkURL( aOULibName );
+ aLibBox.SetEntryText( aLinkURL, pNewEntry, 1 );
+ }
+
+ return pNewEntry;
+}
+
+//----------------------------------------------------------------------------
+
+// Helper function
+void createLibImpl( Window* pWin, const ScriptDocument& rDocument,
+ BasicCheckBox* pLibBox, BasicTreeListBox* pBasicBox )
+{
+ OSL_ENSURE( rDocument.isAlive(), "createLibImpl: invalid document!" );
+ if ( !rDocument.isAlive() )
+ return;
+
+ // create library name
+ String aLibName;
+ String aLibStdName( String( RTL_CONSTASCII_USTRINGPARAM( "Library" ) ) );
+ //String aLibStdName( IDEResId( RID_STR_STDLIBNAME ) );
+ BOOL bValid = FALSE;
+ USHORT i = 1;
+ while ( !bValid )
+ {
+ aLibName = aLibStdName;
+ aLibName += String::CreateFromInt32( i );
+ if ( !rDocument.hasLibrary( E_SCRIPTS, aLibName ) && !rDocument.hasLibrary( E_DIALOGS, aLibName ) )
+ bValid = TRUE;
+ i++;
+ }
+
+ std::auto_ptr< NewObjectDialog > xNewDlg( new NewObjectDialog( pWin, NEWOBJECTMODE_LIB ) );
+ xNewDlg->SetObjectName( aLibName );
+
+ if ( xNewDlg->Execute() )
+ {
+ if ( xNewDlg->GetObjectName().Len() )
+ aLibName = xNewDlg->GetObjectName();
+
+ if ( aLibName.Len() > 30 )
+ {
+ ErrorBox( pWin, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_LIBNAMETOLONG ) ) ).Execute();
+ }
+ else if ( !BasicIDE::IsValidSbxName( aLibName ) )
+ {
+ ErrorBox( pWin, WB_OK | WB_DEF_OK,
+ String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
+ }
+ else if ( rDocument.hasLibrary( E_SCRIPTS, aLibName ) || rDocument.hasLibrary( E_DIALOGS, aLibName ) )
+ {
+ ErrorBox( pWin, WB_OK | WB_DEF_OK,
+ String( IDEResId( RID_STR_SBXNAMEALLREADYUSED2 ) ) ).Execute();
+ }
+ else
+ {
+ try
+ {
+ // create module and dialog library
+ Reference< container::XNameContainer > xModLib( rDocument.getOrCreateLibrary( E_SCRIPTS, aLibName ) );
+ Reference< container::XNameContainer > xDlgLib( rDocument.getOrCreateLibrary( E_DIALOGS, aLibName ) );
+
+ if( pLibBox )
+ {
+ SvLBoxEntry* pEntry = pLibBox->DoInsertEntry( aLibName );
+ pEntry->SetUserData( new BasicLibUserData( rDocument ) );
+ pLibBox->SetCurEntry( pEntry );
+ }
+
+ // create a module
+ String aModName = rDocument.createObjectName( E_SCRIPTS, aLibName );
+ ::rtl::OUString sModuleCode;
+ if ( !rDocument.createModule( aLibName, aModName, TRUE, sModuleCode ) )
+ throw Exception();
+
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, rDocument, aLibName, aModName, BASICIDE_TYPE_MODULE );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_SBXINSERTED,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+
+ if( pBasicBox )
+ {
+ SvLBoxEntry* pEntry = pBasicBox->GetCurEntry();
+ SvLBoxEntry* pRootEntry = NULL;
+ while( pEntry )
+ {
+ pRootEntry = pEntry;
+ pEntry = pBasicBox->GetParent( pEntry );
+ }
+
+ USHORT nMode = pBasicBox->GetMode();
+ bool bDlgMode = ( nMode & BROWSEMODE_DIALOGS ) && !( nMode & BROWSEMODE_MODULES );
+ USHORT nId = bDlgMode ? RID_IMG_DLGLIB : RID_IMG_MODLIB;
+ USHORT nIdHC = bDlgMode ? RID_IMG_DLGLIB_HC : RID_IMG_MODLIB_HC;
+ SvLBoxEntry* pNewLibEntry = pBasicBox->AddEntry(
+ aLibName,
+ Image( IDEResId( nId ) ),
+ Image( IDEResId( nIdHC ) ),
+ pRootEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_LIBRARY ) ) );
+ DBG_ASSERT( pNewLibEntry, "InsertEntry fehlgeschlagen!" );
+
+ if( pNewLibEntry )
+ {
+ SvLBoxEntry* pEntry_ = pBasicBox->AddEntry(
+ aModName,
+ Image( IDEResId( RID_IMG_MODULE ) ),
+ Image( IDEResId( RID_IMG_MODULE_HC ) ),
+ pNewLibEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_MODULE ) ) );
+ DBG_ASSERT( pEntry_, "InsertEntry fehlgeschlagen!" );
+ pBasicBox->SetCurEntry( pEntry_ );
+ pBasicBox->Select( pBasicBox->GetCurEntry() ); // OV-Bug?!
+ }
+ }
+ }
+ catch ( uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/moduldlg.cxx b/basctl/source/basicide/moduldlg.cxx
new file mode 100644
index 000000000000..fcc2858670d1
--- /dev/null
+++ b/basctl/source/basicide/moduldlg.cxx
@@ -0,0 +1,1068 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <memory>
+
+#include <ide_pch.hxx>
+
+
+#include <moduldlg.hrc>
+#include <moduldlg.hxx>
+#include <basidesh.hrc>
+#include <basidesh.hxx>
+#include <bastypes.hxx>
+#include <baside3.hxx>
+#include <basobj.hxx>
+#include <baside2.hrc>
+#include <sbxitem.hxx>
+#include <iderdll.hxx>
+
+#include <com/sun/star/io/XInputStreamProvider.hpp>
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <com/sun/star/script/XLibraryContainerPassword.hpp>
+#include <com/sun/star/resource/XStringResourceManager.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <comphelper/processfactory.hxx>
+#include <xmlscript/xmldlg_imexp.hxx>
+
+#include "localizationmgr.hxx"
+#include <basic/sbx.hxx>
+#include <tools/diagnose_ex.h>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::resource;
+
+
+ExtBasicTreeListBox::ExtBasicTreeListBox( Window* pParent, const ResId& rRes )
+ : BasicTreeListBox( pParent, rRes )
+{
+}
+
+
+
+ExtBasicTreeListBox::~ExtBasicTreeListBox()
+{
+}
+
+BOOL __EXPORT ExtBasicTreeListBox::EditingEntry( SvLBoxEntry* pEntry, Selection& )
+{
+ BOOL bRet = FALSE;
+
+ if ( pEntry )
+ {
+ USHORT nDepth = GetModel()->GetDepth( pEntry );
+ if ( nDepth >= 2 )
+ {
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ ::rtl::OUString aOULibName( aDesc.GetLibName() );
+ Reference< script::XLibraryContainer2 > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( !( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) ) )
+ {
+ // allow editing only for libraries, which are not readonly
+ bRet = TRUE;
+ }
+ }
+ }
+
+ return bRet;
+}
+
+BOOL __EXPORT ExtBasicTreeListBox::EditedEntry( SvLBoxEntry* pEntry, const String& rNewText )
+{
+ BOOL bValid = BasicIDE::IsValidSbxName( rNewText );
+ if ( !bValid )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
+ return FALSE;
+ }
+
+ String aCurText( GetEntryText( pEntry ) );
+ if ( aCurText == rNewText )
+ // nothing to do
+ return TRUE;
+
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ DBG_ASSERT( aDocument.isValid(), "ExtBasicTreeListBox::EditedEntry: no document!" );
+ if ( !aDocument.isValid() )
+ return FALSE;
+ String aLibName( aDesc.GetLibName() );
+ BasicEntryType eType( aDesc.GetType() );
+
+ bool bSuccess = ( eType == OBJ_TYPE_MODULE )
+ ? BasicIDE::RenameModule( this, aDocument, aLibName, aCurText, rNewText )
+ : BasicIDE::RenameDialog( this, aDocument, aLibName, aCurText, rNewText );
+
+ if ( !bSuccess )
+ return FALSE;
+
+ BasicIDE::MarkDocumentModified( aDocument );
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, aDocument, aLibName, rNewText, ConvertType( eType ) );
+ pDispatcher->Execute( SID_BASICIDE_SBXRENAMED,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+
+ // OV-Bug?!
+ SetEntryText( pEntry, rNewText );
+ SetCurEntry( pEntry );
+ SetCurEntry( pEntry );
+ Select( pEntry, FALSE );
+ Select( pEntry ); // damit Handler gerufen wird => Edit updaten
+
+ return TRUE;
+}
+
+
+DragDropMode __EXPORT ExtBasicTreeListBox::NotifyStartDrag( TransferDataContainer&, SvLBoxEntry* pEntry )
+{
+ DragDropMode nMode_ = SV_DRAGDROP_NONE;
+
+ if ( pEntry )
+ {
+ USHORT nDepth = GetModel()->GetDepth( pEntry );
+ if ( nDepth >= 2 )
+ {
+ nMode_ = SV_DRAGDROP_CTRL_COPY;
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( pEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ ::rtl::OUString aOULibName( aDesc.GetLibName() );
+ // allow MOVE mode only for libraries, which are not readonly
+ Reference< script::XLibraryContainer2 > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( !( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) ) )
+ {
+ // Only allow copy for localized libraries
+ bool bAllowMove = true;
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) )
+ {
+ // Get StringResourceManager
+ Reference< container::XNameContainer > xDialogLib( aDocument.getLibrary( E_DIALOGS, aOULibName, TRUE ) );
+ Reference< XStringResourceManager > xSourceMgr =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
+ if( xSourceMgr.is() )
+ bAllowMove = ( xSourceMgr->getLocales().getLength() == 0 );
+ }
+ if( bAllowMove )
+ nMode_ |= SV_DRAGDROP_CTRL_MOVE;
+ }
+ }
+ }
+
+ return nMode_;
+}
+
+
+BOOL __EXPORT ExtBasicTreeListBox::NotifyAcceptDrop( SvLBoxEntry* pEntry )
+{
+ // don't drop on a BasicManager (nDepth == 0)
+ USHORT nDepth = pEntry ? GetModel()->GetDepth( pEntry ) : 0;
+ BOOL bValid = nDepth ? TRUE : FALSE;
+
+ // don't drop in the same library
+ SvLBoxEntry* pSelected = FirstSelected();
+ if ( ( nDepth == 1 ) && ( pEntry == GetParent( pSelected ) ) )
+ bValid = FALSE;
+ else if ( ( nDepth == 2 ) && ( GetParent( pEntry ) == GetParent( pSelected ) ) )
+ bValid = FALSE;
+
+ // don't drop on a library, which is not loaded, readonly or password protected
+ // or which already has a module/dialog with this name
+ if ( bValid && ( nDepth > 0 ) )
+ {
+ // get source module/dialog name
+ BasicEntryDescriptor aSourceDesc( GetEntryDescriptor( pSelected ) );
+ String aSourceName( aSourceDesc.GetName() );
+ BasicEntryType eSourceType( aSourceDesc.GetType() );
+
+ // get target shell and target library name
+ BasicEntryDescriptor aDestDesc( GetEntryDescriptor( pEntry ) );
+ const ScriptDocument& rDestDoc( aDestDesc.GetDocument() );
+ String aDestLibName( aDestDesc.GetLibName() );
+ ::rtl::OUString aOUDestLibName( aDestLibName );
+
+ // check if module library is not loaded, readonly or password protected
+ Reference< script::XLibraryContainer2 > xModLibContainer( rDestDoc.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOUDestLibName ) )
+ {
+ if ( !xModLibContainer->isLibraryLoaded( aOUDestLibName ) )
+ bValid = FALSE;
+
+ if ( xModLibContainer->isLibraryReadOnly( aOUDestLibName ) )
+ bValid = FALSE;
+
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOUDestLibName ) && !xPasswd->isLibraryPasswordVerified( aOUDestLibName ) )
+ bValid = FALSE;
+ }
+
+ // check if dialog library is not loaded or readonly
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( rDestDoc.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOUDestLibName ) )
+ {
+ if ( !xDlgLibContainer->isLibraryLoaded( aOUDestLibName ) )
+ bValid = FALSE;
+
+ if ( xDlgLibContainer->isLibraryReadOnly( aOUDestLibName ) )
+ bValid = FALSE;
+ }
+
+ // check, if module/dialog with this name is already existing in target library
+ if ( ( eSourceType == OBJ_TYPE_MODULE && rDestDoc.hasModule( aDestLibName, aSourceName ) ) ||
+ ( eSourceType == OBJ_TYPE_DIALOG && rDestDoc.hasDialog( aDestLibName, aSourceName ) ) )
+ {
+ bValid = FALSE;
+ }
+ }
+
+ return bValid;
+}
+
+
+BOOL __EXPORT ExtBasicTreeListBox::NotifyMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos )
+{
+ return NotifyCopyingMoving( pTarget, pEntry,
+ rpNewParent, rNewChildPos, TRUE );
+}
+
+
+BOOL __EXPORT ExtBasicTreeListBox::NotifyCopying( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos )
+{
+// return FALSE; // Wie kopiere ich ein SBX ?!
+ return NotifyCopyingMoving( pTarget, pEntry,
+ rpNewParent, rNewChildPos, FALSE );
+}
+
+
+void BasicIDEShell::CopyDialogResources( Reference< io::XInputStreamProvider >& io_xISP,
+ const ScriptDocument& rSourceDoc, const String& rSourceLibName, const ScriptDocument& rDestDoc,
+ const String& rDestLibName, const String& rDlgName )
+{
+ if ( !io_xISP.is() )
+ return;
+
+ // Get StringResourceManager
+ Reference< container::XNameContainer > xSourceDialogLib( rSourceDoc.getLibrary( E_DIALOGS, rSourceLibName, TRUE ) );
+ Reference< XStringResourceManager > xSourceMgr =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xSourceDialogLib );
+ if( !xSourceMgr.is() )
+ return;
+ bool bSourceLocalized = ( xSourceMgr->getLocales().getLength() > 0 );
+
+ Reference< container::XNameContainer > xDestDialogLib( rDestDoc.getLibrary( E_DIALOGS, rDestLibName, TRUE ) );
+ Reference< XStringResourceManager > xDestMgr =
+ LocalizationMgr::getStringResourceFromDialogLibrary( xDestDialogLib );
+ if( !xDestMgr.is() )
+ return;
+ bool bDestLocalized = ( xDestMgr->getLocales().getLength() > 0 );
+
+ if( !bSourceLocalized && !bDestLocalized )
+ return;
+
+ // create dialog model
+ Reference< lang::XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
+ Reference< container::XNameContainer > xDialogModel = Reference< container::XNameContainer >( xMSF->createInstance
+ ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ), UNO_QUERY );
+ Reference< io::XInputStream > xInput( io_xISP->createInputStream() );
+ Reference< XComponentContext > xContext;
+ Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
+ OSL_ASSERT( xProps.is() );
+ OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rSourceDoc.isDocument() ? rSourceDoc.getDocument() : Reference< frame::XModel >() );
+
+ if( xDialogModel.is() )
+ {
+ if( bSourceLocalized && bDestLocalized )
+ {
+ Reference< resource::XStringResourceResolver > xSourceStringResolver( xSourceMgr, UNO_QUERY );
+ LocalizationMgr::copyResourceForDroppedDialog( xDialogModel, rDlgName, xDestMgr, xSourceStringResolver );
+ }
+ else if( bSourceLocalized )
+ {
+ LocalizationMgr::resetResourceForDialog( xDialogModel, xSourceMgr );
+ }
+ else if( bDestLocalized )
+ {
+ LocalizationMgr::setResourceIDsForDialog( xDialogModel, xDestMgr );
+ }
+ io_xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, rDestDoc.isDocument() ? rDestDoc.getDocument() : Reference< frame::XModel >() );
+ }
+}
+
+
+BOOL __EXPORT ExtBasicTreeListBox::NotifyCopyingMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos, BOOL bMove )
+{
+ (void)pEntry;
+ DBG_ASSERT( pEntry, "Kein Eintrag?" ); // Hier ASS ok, sollte nicht mit
+ DBG_ASSERT( pTarget, "Kein Ziel?" ); // NULL (ganz vorne) erreicht werden
+ USHORT nDepth = GetModel()->GetDepth( pTarget );
+ DBG_ASSERT( nDepth, "Tiefe?" );
+ if ( nDepth == 1 )
+ {
+ // Target = Basic => Modul/Dialog unter das Basic haengen...
+ rpNewParent = pTarget;
+ rNewChildPos = 0;
+ }
+ else if ( nDepth >= 2 )
+ {
+ // Target = Modul/Dialog => Modul/Dialog unter das uebergeordnete Basic haengen...
+ rpNewParent = GetParent( pTarget );
+ rNewChildPos = GetModel()->GetRelPos( pTarget ) + 1;
+ }
+
+ // get target shell and target library name
+ BasicEntryDescriptor aDestDesc( GetEntryDescriptor( rpNewParent ) );
+ const ScriptDocument& rDestDoc( aDestDesc.GetDocument() );
+ String aDestLibName( aDestDesc.GetLibName() );
+
+ // get source shell, library name and module/dialog name
+ BasicEntryDescriptor aSourceDesc( GetEntryDescriptor( FirstSelected() ) );
+ const ScriptDocument rSourceDoc( aSourceDesc.GetDocument() );
+ String aSourceLibName( aSourceDesc.GetLibName() );
+ String aSourceName( aSourceDesc.GetName() );
+ BasicEntryType eType( aSourceDesc.GetType() );
+
+ // get dispatcher
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+
+ if ( bMove ) // move
+ {
+ // remove source module/dialog window
+ if ( rSourceDoc != rDestDoc || aSourceLibName != aDestLibName )
+ {
+ if( pDispatcher )
+ {
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, rSourceDoc, aSourceLibName, aSourceName, ConvertType( eType ) );
+ pDispatcher->Execute( SID_BASICIDE_SBXDELETED,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+ }
+
+ try
+ {
+ if ( eType == OBJ_TYPE_MODULE ) // module
+ {
+ // get module
+ ::rtl::OUString aModule;
+ if ( rSourceDoc.getModule( aSourceLibName, aSourceName, aModule ) )
+ {
+ // remove module from source library
+ if ( rSourceDoc.removeModule( aSourceLibName, aSourceName ) )
+ {
+ BasicIDE::MarkDocumentModified( rSourceDoc );
+
+ // insert module into target library
+ if ( rDestDoc.insertModule( aDestLibName, aSourceName, aModule ) )
+ BasicIDE::MarkDocumentModified( rDestDoc );
+ }
+ }
+ }
+ else if ( eType == OBJ_TYPE_DIALOG ) // dialog
+ {
+ // get dialog
+ Reference< io::XInputStreamProvider > xISP;
+ if ( rSourceDoc.getDialog( aSourceLibName, aSourceName, xISP ) )
+ {
+ BasicIDEShell::CopyDialogResources( xISP, rSourceDoc,
+ aSourceLibName, rDestDoc, aDestLibName, aSourceName );
+
+ // remove dialog from source library
+ if ( BasicIDE::RemoveDialog( rSourceDoc, aSourceLibName, aSourceName ) )
+ {
+ BasicIDE::MarkDocumentModified( rSourceDoc );
+
+ // insert dialog into target library
+ if ( rDestDoc.insertDialog( aDestLibName, aSourceName, xISP ) )
+ BasicIDE::MarkDocumentModified( rDestDoc );
+ }
+ }
+ }
+ }
+ catch ( uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ else // copy
+ {
+ try
+ {
+ if ( eType == OBJ_TYPE_MODULE ) // module
+ {
+ // get module
+ ::rtl::OUString aModule;
+ if ( rSourceDoc.getModule( aSourceLibName, aSourceName, aModule ) )
+ {
+ // insert module into target library
+ if ( rDestDoc.insertModule( aDestLibName, aSourceName, aModule ) )
+ BasicIDE::MarkDocumentModified( rDestDoc );
+ }
+ }
+ else if ( eType == OBJ_TYPE_DIALOG ) // dialog
+ {
+ // get dialog
+ Reference< io::XInputStreamProvider > xISP;
+ if ( rSourceDoc.getDialog( aSourceLibName, aSourceName, xISP ) )
+ {
+ BasicIDEShell::CopyDialogResources( xISP, rSourceDoc,
+ aSourceLibName, rDestDoc, aDestLibName, aSourceName );
+
+ // insert dialog into target library
+ if ( rDestDoc.insertDialog( aDestLibName, aSourceName, xISP ) )
+ BasicIDE::MarkDocumentModified( rDestDoc );
+ }
+ }
+ }
+ catch ( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ // create target module/dialog window
+ if ( rSourceDoc != rDestDoc || aSourceLibName != aDestLibName )
+ {
+ if( pDispatcher )
+ {
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, rDestDoc, aDestLibName, aSourceName, ConvertType( eType ) );
+ pDispatcher->Execute( SID_BASICIDE_SBXINSERTED,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+ }
+
+ return 2; // Aufklappen...
+}
+
+OrganizeDialog::OrganizeDialog( Window* pParent, INT16 tabId, BasicEntryDescriptor& rDesc )
+ :TabDialog( pParent, IDEResId( RID_TD_ORGANIZE ) )
+ ,aTabCtrl( this, IDEResId( RID_TC_ORGANIZE ) )
+ ,m_aCurEntry( rDesc )
+{
+ FreeResource();
+ aTabCtrl.SetActivatePageHdl( LINK( this, OrganizeDialog, ActivatePageHdl ) );
+ if( tabId == 0 )
+ {
+ aTabCtrl.SetCurPageId( RID_TP_MOD );
+ }
+ else if ( tabId == 1 )
+ {
+ aTabCtrl.SetCurPageId( RID_TP_DLG );
+ }
+ else
+ {
+ aTabCtrl.SetCurPageId( RID_TP_LIB );
+ }
+
+ ActivatePageHdl( &aTabCtrl );
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_STOREALLMODULESOURCES );
+ }
+}
+
+__EXPORT OrganizeDialog::~OrganizeDialog()
+{
+ for ( USHORT i = 0; i < aTabCtrl.GetPageCount(); i++ )
+ delete aTabCtrl.GetTabPage( aTabCtrl.GetPageId( i ) );
+};
+
+short OrganizeDialog::Execute()
+{
+ Window* pPrevDlgParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( this );
+ short nRet = TabDialog::Execute();
+ Application::SetDefDialogParent( pPrevDlgParent );
+ return nRet;
+}
+
+
+IMPL_LINK( OrganizeDialog, ActivatePageHdl, TabControl *, pTabCtrl )
+{
+ USHORT nId = pTabCtrl->GetCurPageId();
+ // Wenn TabPage noch nicht erzeugt wurde, dann erzeugen
+ if ( !pTabCtrl->GetTabPage( nId ) )
+ {
+ TabPage* pNewTabPage = 0;
+ switch ( nId )
+ {
+ case RID_TP_MOD:
+ {
+ pNewTabPage = new ObjectPage( pTabCtrl, IDEResId( RID_TP_MODULS ), BROWSEMODE_MODULES );
+ ((ObjectPage*)pNewTabPage)->SetTabDlg( this );
+ ((ObjectPage*)pNewTabPage)->SetCurrentEntry( m_aCurEntry );
+ }
+ break;
+ case RID_TP_DLG:
+ {
+ pNewTabPage = new ObjectPage( pTabCtrl, IDEResId( RID_TP_DLGS ), BROWSEMODE_DIALOGS );
+ ((ObjectPage*)pNewTabPage)->SetTabDlg( this );
+ ((ObjectPage*)pNewTabPage)->SetCurrentEntry( m_aCurEntry );
+ }
+ break;
+ case RID_TP_LIB:
+ {
+ pNewTabPage = new LibPage( pTabCtrl );
+ ((LibPage*)pNewTabPage)->SetTabDlg( this );
+ }
+ break;
+ default: DBG_ERROR( "PageHdl: Unbekannte ID!" );
+ }
+ DBG_ASSERT( pNewTabPage, "Keine Page!" );
+ pTabCtrl->SetTabPage( nId, pNewTabPage );
+ }
+ return 0;
+}
+
+ObjectPage::ObjectPage( Window * pParent, const ResId& rResId, USHORT nMode ) :
+ TabPage( pParent, rResId ),
+ aLibText( this, IDEResId( RID_STR_LIB ) ),
+ aBasicBox( this, IDEResId( RID_TRLBOX ) ),
+ aEditButton( this, IDEResId( RID_PB_EDIT ) ),
+ aCloseButton( this, IDEResId( RID_PB_CLOSE ) ),
+ aNewModButton( this, IDEResId( RID_PB_NEWMOD ) ),
+ aNewDlgButton( this, IDEResId( RID_PB_NEWDLG ) ),
+ aDelButton( this, IDEResId( RID_PB_DELETE ) )
+{
+ FreeResource();
+ pTabDlg = 0;
+
+ aEditButton.SetClickHdl( LINK( this, ObjectPage, ButtonHdl ) );
+ aDelButton.SetClickHdl( LINK( this, ObjectPage, ButtonHdl ) );
+ aCloseButton.SetClickHdl( LINK( this, ObjectPage, ButtonHdl ) );
+ aBasicBox.SetSelectHdl( LINK( this, ObjectPage, BasicBoxHighlightHdl ) );
+
+ if( nMode & BROWSEMODE_MODULES )
+ {
+ aNewModButton.SetClickHdl( LINK( this, ObjectPage, ButtonHdl ) );
+ aNewDlgButton.Hide();
+ }
+ else if ( nMode & BROWSEMODE_DIALOGS )
+ {
+ aNewDlgButton.SetClickHdl( LINK( this, ObjectPage, ButtonHdl ) );
+ aNewModButton.Hide();
+ }
+
+ aBasicBox.SetDragDropMode( SV_DRAGDROP_CTRL_MOVE | SV_DRAGDROP_CTRL_COPY );
+ aBasicBox.EnableInplaceEditing( TRUE );
+ aBasicBox.SetMode( nMode );
+ aBasicBox.SetWindowBits( WB_HASLINES | WB_HASLINESATROOT |
+ WB_HASBUTTONS | WB_HASBUTTONSATROOT |
+ WB_HSCROLL );
+ aBasicBox.ScanAllEntries();
+
+ aEditButton.GrabFocus();
+ CheckButtons();
+}
+
+void ObjectPage::SetCurrentEntry( BasicEntryDescriptor& rDesc )
+{
+ aBasicBox.SetCurrentEntry( rDesc );
+}
+
+void __EXPORT ObjectPage::ActivatePage()
+{
+ aBasicBox.UpdateEntries();
+}
+
+void __EXPORT ObjectPage::DeactivatePage()
+{
+}
+
+void ObjectPage::CheckButtons()
+{
+ // enable/disable edit button
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ ::rtl::OUString aOULibName( aDesc.GetLibName() );
+ String aLibSubName( aDesc.GetLibSubName() );
+ sal_Bool bVBAEnabled = aDocument.isInVBAMode();
+ USHORT nMode = aBasicBox.GetMode();
+
+ USHORT nDepth = pCurEntry ? aBasicBox.GetModel()->GetDepth( pCurEntry ) : 0;
+ if ( nDepth >= 2 )
+ {
+ if( bVBAEnabled && ( nMode & BROWSEMODE_MODULES ) && ( nDepth == 2 ) )
+ aEditButton.Disable();
+ else
+ aEditButton.Enable();
+ }
+ else
+ aEditButton.Disable();
+
+ // enable/disable new module/dialog buttons
+ LibraryLocation eLocation( aDesc.GetLocation() );
+ BOOL bReadOnly = FALSE;
+ if ( nDepth > 0 )
+ {
+ Reference< script::XLibraryContainer2 > xModLibContainer( aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ Reference< script::XLibraryContainer2 > xDlgLibContainer( aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+ if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
+ ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) )
+ {
+ bReadOnly = TRUE;
+ }
+ }
+ if ( bReadOnly || eLocation == LIBRARY_LOCATION_SHARE )
+ {
+ aNewModButton.Disable();
+ aNewDlgButton.Disable();
+ }
+ else
+ {
+ aNewModButton.Enable();
+ aNewDlgButton.Enable();
+ }
+
+ // enable/disable delete button
+ if ( nDepth >= 2 && !bReadOnly && eLocation != LIBRARY_LOCATION_SHARE )
+ {
+ if( bVBAEnabled && ( nMode & BROWSEMODE_MODULES ) && ( ( nDepth == 2 ) || aLibSubName.Equals( String( IDEResId( RID_STR_DOCUMENT_OBJECTS ) ) ) ) )
+ aDelButton.Disable();
+ else
+ aDelButton.Enable();
+ }
+ else
+ aDelButton.Disable();
+}
+
+IMPL_LINK( ObjectPage, BasicBoxHighlightHdl, BasicTreeListBox *, pBox )
+{
+ if ( !pBox->IsSelected( pBox->GetHdlEntry() ) )
+ return 0;
+
+ CheckButtons();
+ return 0;
+}
+
+IMPL_LINK( ObjectPage, ButtonHdl, Button *, pButton )
+{
+ if ( pButton == &aEditButton )
+ {
+ SfxAllItemSet aArgs( SFX_APP()->GetPool() );
+ SfxRequest aRequest( SID_BASICIDE_APPEAR, SFX_CALLMODE_SYNCHRON, aArgs );
+ SFX_APP()->ExecuteSlot( aRequest );
+
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ DBG_ASSERT( pCurEntry, "Entry?!" );
+ if ( aBasicBox.GetModel()->GetDepth( pCurEntry ) >= 2 )
+ {
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ if ( pDispatcher )
+ {
+ String aModName( aDesc.GetName() );
+ // extract the module name from the string like "Sheet1 (Example1)"
+ if( aDesc.GetLibSubName().Equals( String( IDEResId( RID_STR_DOCUMENT_OBJECTS ) ) ) )
+ {
+ sal_uInt16 nIndex = 0;
+ aModName = aModName.GetToken( 0, ' ', nIndex );
+ }
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, aDesc.GetDocument(), aDesc.GetLibName(),
+ aModName, aBasicBox.ConvertType( aDesc.GetType() ) );
+ pDispatcher->Execute( SID_BASICIDE_SHOWSBX, SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+ }
+ else // Nur Lib selektiert
+ {
+ DBG_ASSERT( aBasicBox.GetModel()->GetDepth( pCurEntry ) == 1, "Kein LibEntry?!" );
+ ScriptDocument aDocument( ScriptDocument::getApplicationScriptDocument() );
+ SvLBoxEntry* pParentEntry = aBasicBox.GetParent( pCurEntry );
+ if ( pParentEntry )
+ {
+ BasicDocumentEntry* pBasicDocumentEntry = (BasicDocumentEntry*)pParentEntry->GetUserData();
+ if ( pBasicDocumentEntry )
+ aDocument = pBasicDocumentEntry->GetDocument();
+ }
+ SfxUsrAnyItem aDocItem( SID_BASICIDE_ARG_DOCUMENT_MODEL, makeAny( aDocument.getDocumentOrNull() ) );
+ String aLibName( aBasicBox.GetEntryText( pCurEntry ) );
+ SfxStringItem aLibNameItem( SID_BASICIDE_ARG_LIBNAME, aLibName );
+ if ( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_LIBSELECTED, SFX_CALLMODE_ASYNCHRON, &aDocItem, &aLibNameItem, 0L );
+ }
+ }
+ EndTabDialog( 1 );
+ }
+ else if ( pButton == &aNewModButton )
+ NewModule();
+ else if ( pButton == &aNewDlgButton )
+ NewDialog();
+ else if ( pButton == &aDelButton )
+ DeleteCurrent();
+ else if ( pButton == &aCloseButton )
+ EndTabDialog( 0 );
+
+ return 0;
+}
+
+bool ObjectPage::GetSelection( ScriptDocument& rDocument, String& rLibName )
+{
+ bool bRet = false;
+
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ rDocument = aDesc.GetDocument();
+ rLibName = aDesc.GetLibName();
+ if ( !rLibName.Len() )
+ rLibName = String::CreateFromAscii( "Standard" );
+
+ DBG_ASSERT( rDocument.isAlive(), "ObjectPage::GetSelection: no or dead ScriptDocument in the selection!" );
+ if ( !rDocument.isAlive() )
+ return false;
+
+ // check if the module library is loaded
+ BOOL bOK = TRUE;
+ ::rtl::OUString aOULibName( rLibName );
+ Reference< script::XLibraryContainer > xModLibContainer( rDocument.getLibraryContainer( E_SCRIPTS ) );
+ if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ // check password
+ Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+ if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
+ {
+ String aPassword;
+ bOK = QueryPassword( xModLibContainer, rLibName, aPassword );
+ }
+
+ // load library
+ if ( bOK )
+ xModLibContainer->loadLibrary( aOULibName );
+ }
+
+ // check if the dialog library is loaded
+ Reference< script::XLibraryContainer > xDlgLibContainer( rDocument.getLibraryContainer( E_DIALOGS ) );
+ if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && !xDlgLibContainer->isLibraryLoaded( aOULibName ) )
+ {
+ // load library
+ if ( bOK )
+ xDlgLibContainer->loadLibrary( aOULibName );
+ }
+
+ if ( bOK )
+ bRet = true;
+
+ return bRet;
+}
+
+void ObjectPage::NewModule()
+{
+ ScriptDocument aDocument( ScriptDocument::getApplicationScriptDocument() );
+ String aLibName;
+
+ if ( GetSelection( aDocument, aLibName ) )
+ {
+ String aModName;
+ createModImpl( static_cast<Window*>( this ), aDocument,
+ aBasicBox, aLibName, aModName, true );
+ }
+}
+
+void ObjectPage::NewDialog()
+{
+ ScriptDocument aDocument( ScriptDocument::getApplicationScriptDocument() );
+ String aLibName;
+
+ if ( GetSelection( aDocument, aLibName ) )
+ {
+ aDocument.getOrCreateLibrary( E_DIALOGS, aLibName );
+
+ std::auto_ptr< NewObjectDialog > xNewDlg(
+ new NewObjectDialog(this, NEWOBJECTMODE_DLG, true));
+ xNewDlg->SetObjectName( aDocument.createObjectName( E_DIALOGS, aLibName ) );
+
+ if (xNewDlg->Execute() != 0)
+ {
+ String aDlgName( xNewDlg->GetObjectName() );
+ if (aDlgName.Len() == 0)
+ aDlgName = aDocument.createObjectName( E_DIALOGS, aLibName);
+
+ if ( aDocument.hasDialog( aLibName, aDlgName ) )
+ {
+ ErrorBox( this, WB_OK | WB_DEF_OK,
+ String( IDEResId( RID_STR_SBXNAMEALLREADYUSED2 ) ) ).Execute();
+ }
+ else
+ {
+ Reference< io::XInputStreamProvider > xISP;
+ if ( !aDocument.createDialog( aLibName, aDlgName, xISP ) )
+ return;
+
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, aDocument, aLibName, aDlgName, BASICIDE_TYPE_DIALOG );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_SBXINSERTED,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+ LibraryLocation eLocation = aDocument.getLibraryLocation( aLibName );
+ SvLBoxEntry* pRootEntry = aBasicBox.FindRootEntry( aDocument, eLocation );
+ if ( pRootEntry )
+ {
+ if ( !aBasicBox.IsExpanded( pRootEntry ) )
+ aBasicBox.Expand( pRootEntry );
+ SvLBoxEntry* pLibEntry = aBasicBox.FindEntry( pRootEntry, aLibName, OBJ_TYPE_LIBRARY );
+ DBG_ASSERT( pLibEntry, "Libeintrag nicht gefunden!" );
+ if ( pLibEntry )
+ {
+ if ( !aBasicBox.IsExpanded( pLibEntry ) )
+ aBasicBox.Expand( pLibEntry );
+ SvLBoxEntry* pEntry = aBasicBox.FindEntry( pLibEntry, aDlgName, OBJ_TYPE_DIALOG );
+ if ( !pEntry )
+ {
+ pEntry = aBasicBox.AddEntry(
+ aDlgName,
+ Image( IDEResId( RID_IMG_DIALOG ) ),
+ Image( IDEResId( RID_IMG_DIALOG_HC ) ),
+ pLibEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_DIALOG ) ) );
+ DBG_ASSERT( pEntry, "InsertEntry fehlgeschlagen!" );
+ }
+ aBasicBox.SetCurEntry( pEntry );
+ aBasicBox.Select( aBasicBox.GetCurEntry() ); // OV-Bug?!
+ }
+ }
+ }
+ }
+ }
+}
+
+void ObjectPage::DeleteCurrent()
+{
+ SvLBoxEntry* pCurEntry = aBasicBox.GetCurEntry();
+ DBG_ASSERT( pCurEntry, "Kein aktueller Eintrag!" );
+ BasicEntryDescriptor aDesc( aBasicBox.GetEntryDescriptor( pCurEntry ) );
+ ScriptDocument aDocument( aDesc.GetDocument() );
+ DBG_ASSERT( aDocument.isAlive(), "ObjectPage::DeleteCurrent: no document!" );
+ if ( !aDocument.isAlive() )
+ return;
+ String aLibName( aDesc.GetLibName() );
+ String aName( aDesc.GetName() );
+ BasicEntryType eType( aDesc.GetType() );
+
+ if ( ( eType == OBJ_TYPE_MODULE && QueryDelModule( aName, this ) ) ||
+ ( eType == OBJ_TYPE_DIALOG && QueryDelDialog( aName, this ) ) )
+ {
+ aBasicBox.GetModel()->Remove( pCurEntry );
+ if ( aBasicBox.GetCurEntry() ) // OV-Bug ?
+ aBasicBox.Select( aBasicBox.GetCurEntry() );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, aDocument, aLibName, aName, aBasicBox.ConvertType( eType ) );
+ pDispatcher->Execute( SID_BASICIDE_SBXDELETED,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+
+ try
+ {
+ bool bSuccess = false;
+ if ( eType == OBJ_TYPE_MODULE )
+ bSuccess = aDocument.removeModule( aLibName, aName );
+ else if ( eType == OBJ_TYPE_DIALOG )
+ bSuccess = BasicIDE::RemoveDialog( aDocument, aLibName, aName );
+
+ if ( bSuccess )
+ BasicIDE::MarkDocumentModified( aDocument );
+ }
+ catch ( container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+}
+
+
+
+void ObjectPage::EndTabDialog( USHORT nRet )
+{
+ DBG_ASSERT( pTabDlg, "TabDlg nicht gesetzt!" );
+ if ( pTabDlg )
+ pTabDlg->EndDialog( nRet );
+}
+
+
+LibDialog::LibDialog( Window* pParent )
+ : ModalDialog( pParent, IDEResId( RID_DLG_LIBS ) ),
+ aOKButton( this, IDEResId( RID_PB_OK ) ),
+ aCancelButton( this, IDEResId( RID_PB_CANCEL ) ),
+ aStorageName( this, IDEResId( RID_FT_STORAGENAME ) ),
+ aLibBox( this, IDEResId( RID_CTRL_LIBS ) ),
+ aFixedLine( this, IDEResId( RID_FL_OPTIONS ) ),
+ aReferenceBox( this, IDEResId( RID_CB_REF ) ),
+ aReplaceBox( this, IDEResId( RID_CB_REPL ) )
+{
+ SetText( String( IDEResId( RID_STR_APPENDLIBS ) ) );
+ FreeResource();
+}
+
+
+LibDialog::~LibDialog()
+{
+}
+
+void LibDialog::SetStorageName( const String& rName )
+{
+ String aName( IDEResId( RID_STR_FILENAME ) );
+ aName += rName;
+ aStorageName.SetText( aName );
+}
+
+// Helper function
+SbModule* createModImpl( Window* pWin, const ScriptDocument& rDocument,
+ BasicTreeListBox& rBasicBox, const String& rLibName, String aModName, bool bMain )
+{
+ OSL_ENSURE( rDocument.isAlive(), "createModImpl: invalid document!" );
+ if ( !rDocument.isAlive() )
+ return NULL;
+
+ SbModule* pModule = NULL;
+
+ String aLibName( rLibName );
+ if ( !aLibName.Len() )
+ aLibName = String::CreateFromAscii( "Standard" );
+ rDocument.getOrCreateLibrary( E_SCRIPTS, aLibName );
+ if ( !aModName.Len() )
+ aModName = rDocument.createObjectName( E_SCRIPTS, aLibName );
+
+ std::auto_ptr< NewObjectDialog > xNewDlg(
+ new NewObjectDialog( pWin, NEWOBJECTMODE_MOD, true ) );
+ xNewDlg->SetObjectName( aModName );
+
+ if (xNewDlg->Execute() != 0)
+ {
+ if ( xNewDlg->GetObjectName().Len() )
+ aModName = xNewDlg->GetObjectName();
+
+ try
+ {
+ ::rtl::OUString sModuleCode;
+ // the module has existed
+ if( rDocument.hasModule( aLibName, aModName ) )
+ return NULL;
+ rDocument.createModule( aLibName, aModName, bMain, sModuleCode );
+ BasicManager* pBasMgr = rDocument.getBasicManager();
+ StarBASIC* pBasic = pBasMgr? pBasMgr->GetLib( aLibName ) : 0;
+ if ( pBasic )
+ pModule = pBasic->FindModule( aModName );
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, rDocument, aLibName, aModName, BASICIDE_TYPE_MODULE );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_BASICIDE_SBXINSERTED,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+ LibraryLocation eLocation = rDocument.getLibraryLocation( aLibName );
+ SvLBoxEntry* pRootEntry = rBasicBox.FindRootEntry( rDocument, eLocation );
+ if ( pRootEntry )
+ {
+ if ( !rBasicBox.IsExpanded( pRootEntry ) )
+ rBasicBox.Expand( pRootEntry );
+ SvLBoxEntry* pLibEntry = rBasicBox.FindEntry( pRootEntry, aLibName, OBJ_TYPE_LIBRARY );
+ DBG_ASSERT( pLibEntry, "Libeintrag nicht gefunden!" );
+ if ( pLibEntry )
+ {
+ if ( !rBasicBox.IsExpanded( pLibEntry ) )
+ rBasicBox.Expand( pLibEntry );
+ SvLBoxEntry* pSubRootEntry = pLibEntry;
+ if( pBasic && rDocument.isInVBAMode() )
+ {
+ // add the new module in the "Modules" entry
+ SvLBoxEntry* pLibSubEntry = rBasicBox.FindEntry( pLibEntry, String( IDEResId( RID_STR_NORMAL_MODULES ) ) , OBJ_TYPE_NORMAL_MODULES );
+ if( pLibSubEntry )
+ {
+ if( !rBasicBox.IsExpanded( pLibSubEntry ) )
+ rBasicBox.Expand( pLibSubEntry );
+ pSubRootEntry = pLibSubEntry;
+ }
+ }
+
+ SvLBoxEntry* pEntry = rBasicBox.FindEntry( pSubRootEntry, aModName, OBJ_TYPE_MODULE );
+ if ( !pEntry )
+ {
+ pEntry = rBasicBox.AddEntry(
+ aModName,
+ Image( IDEResId( RID_IMG_MODULE ) ),
+ Image( IDEResId( RID_IMG_MODULE_HC ) ),
+ pSubRootEntry, false,
+ std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_MODULE ) ) );
+ DBG_ASSERT( pEntry, "InsertEntry fehlgeschlagen!" );
+ }
+ rBasicBox.SetCurEntry( pEntry );
+ rBasicBox.Select( rBasicBox.GetCurEntry() ); // OV-Bug?!
+ }
+ }
+ }
+ catch ( container::ElementExistException& )
+ {
+ ErrorBox( pWin, WB_OK | WB_DEF_OK,
+ String( IDEResId( RID_STR_SBXNAMEALLREADYUSED2 ) ) ).Execute();
+ }
+ catch ( container::NoSuchElementException& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ return pModule;
+}
+
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/moduldlg.hrc b/basctl/source/basicide/moduldlg.hrc
new file mode 100644
index 000000000000..1eed98e0bdca
--- /dev/null
+++ b/basctl/source/basicide/moduldlg.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * 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 _MODULDLG_HRC
+#define _MODULDLG_HRC
+
+#include <svl/solar.hrc>
+
+#define RID_STR_LIB 1
+#define RID_TRLBOX 2
+// free
+#define RID_PB_EDIT 4
+#define RID_PB_CLOSE 5
+#define RID_PB_NEWMOD 6
+#define RID_PB_NEWDLG 7
+#define RID_PB_DELETE 8
+#define RID_PB_NEWLIB 9
+#define RID_PB_APPEND 10
+#define RID_PB_PASSWORD 11
+#define RID_LB_BASICS 12
+#define RID_STR_BASICS 13
+
+#define RID_PB_EXPORT 14
+#define RID_PB_EXPORT_PACKAGE 15
+
+#define RID_TP_MOD 20
+#define RID_TP_LIB 21
+#define RID_TP_DLG 22
+
+#define RID_TC_ORGANIZE 30
+
+#define RID_PB_OK 31
+#define RID_PB_CANCEL 32
+#define RID_CTRL_LIBS 33
+#define RID_FL_OPTIONS 34
+#define RID_CB_REF 35
+#define RID_CB_REPL 36
+#define RID_FT_STORAGENAME 38
+
+#define RID_FT_NEWLIB 40
+#define RID_ED_LIBNAME 41
+#define RB_EXPORTASPACKAGE 42
+#define RB_EXPORTASBASIC 43
+
+#endif // _MODULDLG_HRC
diff --git a/basctl/source/basicide/moduldlg.hxx b/basctl/source/basicide/moduldlg.hxx
new file mode 100644
index 000000000000..552c638e8daa
--- /dev/null
+++ b/basctl/source/basicide/moduldlg.hxx
@@ -0,0 +1,277 @@
+/* -*- 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 _MODULDLG_HXX
+#define _MODULDLG_HXX
+
+#include <svheader.hxx>
+
+#include <bastype2.hxx>
+#include <vcl/dialog.hxx>
+
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+#include <svtools/svtabbx.hxx>
+#include <vcl/tabdlg.hxx>
+#include <vcl/tabpage.hxx>
+#include "com/sun/star/task/XInteractionHandler.hpp"
+
+#include <vcl/tabctrl.hxx>
+#include <vcl/lstbox.hxx>
+
+class StarBASIC;
+
+
+#define NEWOBJECTMODE_LIB 1
+#define NEWOBJECTMODE_MOD 2
+#define NEWOBJECTMODE_DLG 3
+#define NEWOBJECTMODE_METH 4
+
+class NewObjectDialog : public ModalDialog
+{
+private:
+ FixedText aText;
+ Edit aEdit;
+ OKButton aOKButton;
+ CancelButton aCancelButton;
+
+ DECL_LINK(OkButtonHandler, Button *);
+
+public:
+ NewObjectDialog(Window * pParent, USHORT nMode, bool bCheckName = false);
+ ~NewObjectDialog();
+
+ String GetObjectName() const { return aEdit.GetText(); }
+ void SetObjectName( const String& rName ) { aEdit.SetText( rName ); aEdit.SetSelection( Selection( 0, rName.Len() ) );}
+};
+
+class ExportDialog : public ModalDialog
+{
+private:
+ RadioButton maExportAsPackageButton;
+ RadioButton maExportAsBasicButton;
+ OKButton maOKButton;
+ CancelButton maCancelButton;
+
+ sal_Bool mbExportAsPackage;
+
+ DECL_LINK(OkButtonHandler, Button *);
+
+public:
+ ExportDialog( Window * pParent );
+ ~ExportDialog();
+
+ sal_Bool isExportAsPackage( void ) { return mbExportAsPackage; }
+};
+
+
+class ExtBasicTreeListBox : public BasicTreeListBox
+{
+protected:
+ virtual BOOL EditingEntry( SvLBoxEntry* pEntry, Selection& rSel );
+ virtual BOOL EditedEntry( SvLBoxEntry* pEntry, const String& rNewText );
+
+ virtual DragDropMode NotifyStartDrag( TransferDataContainer& rData, SvLBoxEntry* pEntry );
+ virtual BOOL NotifyAcceptDrop( SvLBoxEntry* pEntry );
+
+ virtual BOOL NotifyMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos );
+ virtual BOOL NotifyCopying( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos );
+ BOOL NotifyCopyingMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent, ULONG& rNewChildPos, BOOL bMove );
+
+public:
+ ExtBasicTreeListBox( Window* pParent, const ResId& rRes );
+ ~ExtBasicTreeListBox();
+};
+
+#define LIBMODE_CHOOSER 1
+#define LIBMODE_MANAGER 2
+
+class BasicCheckBox : public SvTabListBox
+{
+private:
+ USHORT nMode;
+ SvLBoxButtonData* pCheckButton;
+ ScriptDocument m_aDocument;
+ void Init();
+
+public:
+ BasicCheckBox( Window* pParent, const ResId& rResId );
+ ~BasicCheckBox();
+
+ SvLBoxEntry* DoInsertEntry( const String& rStr, ULONG nPos = LISTBOX_APPEND );
+ SvLBoxEntry* FindEntry( const String& rName );
+
+ void CheckEntryPos( ULONG nPos, BOOL bCheck = TRUE );
+ BOOL IsChecked( ULONG nPos ) const;
+
+ virtual void InitEntry( SvLBoxEntry*, const XubString&, const Image&, const Image&, SvLBoxButtonKind eButtonKind );
+ virtual BOOL EditingEntry( SvLBoxEntry* pEntry, Selection& rSel );
+ virtual BOOL EditedEntry( SvLBoxEntry* pEntry, const String& rNewText );
+
+ void SetDocument( const ScriptDocument& rDocument ) { m_aDocument = rDocument; }
+
+ void SetMode( USHORT n );
+ USHORT GetMode() const { return nMode; }
+};
+
+class LibDialog: public ModalDialog
+{
+private:
+ OKButton aOKButton;
+ CancelButton aCancelButton;
+ FixedText aStorageName;
+ BasicCheckBox aLibBox;
+ FixedLine aFixedLine;
+ CheckBox aReferenceBox;
+ CheckBox aReplaceBox;
+
+public:
+ LibDialog( Window* pParent );
+ ~LibDialog();
+
+ void SetStorageName( const String& rName );
+
+ BasicCheckBox& GetLibBox() { return aLibBox; }
+ BOOL IsReference() const { return aReferenceBox.IsChecked(); }
+ BOOL IsReplace() const { return aReplaceBox.IsChecked(); }
+
+ void EnableReference( BOOL b ) { aReferenceBox.Enable( b ); }
+ void EnableReplace( BOOL b ) { aReplaceBox.Enable( b ); }
+};
+
+
+class OrganizeDialog : public TabDialog
+{
+private:
+ TabControl aTabCtrl;
+ BasicEntryDescriptor m_aCurEntry;
+
+public:
+ OrganizeDialog( Window* pParent, INT16 tabId, BasicEntryDescriptor& rDesc );
+ ~OrganizeDialog();
+
+ virtual short Execute();
+
+ DECL_LINK( ActivatePageHdl, TabControl * );
+};
+
+class ObjectPage: public TabPage
+{
+protected:
+ FixedText aLibText;
+ ExtBasicTreeListBox aBasicBox;
+ PushButton aEditButton;
+ CancelButton aCloseButton;
+ PushButton aNewModButton;
+ PushButton aNewDlgButton;
+ PushButton aDelButton;
+
+ DECL_LINK( BasicBoxHighlightHdl, BasicTreeListBox * );
+ DECL_LINK( ButtonHdl, Button * );
+ void CheckButtons();
+ bool GetSelection( ScriptDocument& rDocument, String& rLibName );
+ void DeleteCurrent();
+ void NewModule();
+ void NewDialog();
+ void EndTabDialog( USHORT nRet );
+
+ TabDialog* pTabDlg;
+
+ virtual void ActivatePage();
+ virtual void DeactivatePage();
+
+public:
+ ObjectPage( Window* pParent, const ResId& rResId, USHORT nMode );
+
+ void SetCurrentEntry( BasicEntryDescriptor& rDesc );
+ void SetTabDlg( TabDialog* p ) { pTabDlg = p;}
+};
+
+
+class SvxPasswordDialog;
+
+class LibPage: public TabPage
+{
+protected:
+ FixedText aBasicsText;
+ ListBox aBasicsBox;
+ FixedText aLibText;
+ BasicCheckBox aLibBox;
+ PushButton aEditButton;
+ CancelButton aCloseButton;
+ PushButton aPasswordButton;
+ PushButton aExportButton;
+ PushButton aNewLibButton;
+ PushButton aInsertLibButton;
+ PushButton aDelButton;
+
+ ScriptDocument m_aCurDocument;
+ LibraryLocation m_eCurLocation;
+
+ DECL_LINK( TreeListHighlightHdl, SvTreeListBox * );
+ DECL_LINK( BasicSelectHdl, ListBox * );
+ DECL_LINK( ButtonHdl, Button * );
+ DECL_LINK( CheckPasswordHdl, SvxPasswordDialog * );
+ void CheckButtons();
+ void DeleteCurrent();
+ void NewLib();
+ void InsertLib();
+ void implExportLib( const String& aLibName, const String& aTargetURL,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& Handler );
+ void Export();
+ void ExportAsPackage( const String& aLibName );
+ void ExportAsBasic( const String& aLibName );
+ void EndTabDialog( USHORT nRet );
+ void FillListBox();
+ void InsertListBoxEntry( const ScriptDocument& rDocument, LibraryLocation eLocation );
+ void SetCurLib();
+ SvLBoxEntry* ImpInsertLibEntry( const String& rLibName, ULONG nPos );
+ virtual void ActivatePage();
+ virtual void DeactivatePage();
+
+ TabDialog* pTabDlg;
+
+public:
+ LibPage( Window* pParent );
+ virtual ~LibPage();
+
+ void SetTabDlg( TabDialog* p ) { pTabDlg = p;}
+};
+
+// Helper functions
+SbModule* createModImpl( Window* pWin, const ScriptDocument& rDocument,
+ BasicTreeListBox& rBasicBox, const String& rLibName, String aModName, bool bMain = false );
+void createLibImpl( Window* pWin, const ScriptDocument& rDocument,
+ BasicCheckBox* pLibBox, BasicTreeListBox* pBasicBox );
+
+#endif // _MODULDLG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/moduldlg.src b/basctl/source/basicide/moduldlg.src
new file mode 100644
index 000000000000..a6ac943f29d0
--- /dev/null
+++ b/basctl/source/basicide/moduldlg.src
@@ -0,0 +1,411 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "helpid.hrc"
+#include <moduldlg.hrc>
+#include <basidesh.hrc>
+TabDialog RID_TD_ORGANIZE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Makros verwalten : Verwalten */
+ /* ### ACHTUNG: Neuer Text in Resource? Makros verwalten : Verwalten */
+ Text[ en-US ] = "%PRODUCTNAME Basic Macro Organizer";
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ // Da Cancel-Button auf TabPage, nicht auf Dialog!
+ TabControl RID_TC_ORGANIZE
+ {
+ // HelpID = HID_BASICIDE_ORG_TC;
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = RID_TP_MOD ;
+ Text [ en-US ] = "Modules" ;
+ };
+ PageItem
+ {
+ Identifier = RID_TP_DLG ;
+ Text [ en-US ] = "Dialogs" ;
+ };
+ PageItem
+ {
+ Identifier = RID_TP_LIB ;
+ Text [ en-US ] = "Libraries" ;
+ };
+ };
+ };
+};
+TabPage RID_TP_MODULS
+{
+ // HelpId = HID_BASICIDE_MODULS ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 210 , 140 ) ;
+ FixedText RID_STR_LIB
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text [ en-US ] = "M~odule" ;
+ };
+ Control RID_TRLBOX
+ {
+ HelpId = HID_BASICIDE_MODULES_TREE ;
+ Pos = MAP_APPFONT ( 6 , 17 ) ;
+ Size = MAP_APPFONT ( 130 , 117 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ PushButton RID_PB_EDIT
+ {
+ Text [ en-US ] = "~Edit";
+ Pos = MAP_APPFONT ( 144 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton RID_PB_CLOSE
+ {
+ Text [ en-US ] = "Close";
+ Pos = MAP_APPFONT ( 144 , 23 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_NEWMOD
+ {
+ Pos = MAP_APPFONT ( 144 , 103 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text [ en-US ] = "~New..." ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_NEWDLG
+ {
+ Pos = MAP_APPFONT ( 144 , 103 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text [ en-US ] = "~New..." ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_DELETE
+ {
+ Pos = MAP_APPFONT ( 144 , 120 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen... : ~L÷schen... */
+ Text [ en-US ] = "~Delete" ;
+ TabStop = TRUE ;
+ };
+};
+TabPage RID_TP_DLGS
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 210 , 140 ) ;
+ FixedText RID_STR_LIB
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text [ en-US ] = "Dialog" ;
+ };
+ Control RID_TRLBOX
+ {
+ HelpId = HID_BASICIDE_MODULES_TREE ;
+ Pos = MAP_APPFONT ( 6 , 17 ) ;
+ Size = MAP_APPFONT ( 130 , 117 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ PushButton RID_PB_EDIT
+ {
+ Text [ en-US ] = "~Edit";
+ Pos = MAP_APPFONT ( 144 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton RID_PB_CLOSE
+ {
+ Text[ en-US ] = "Close";
+ Pos = MAP_APPFONT ( 144 , 23 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_NEWMOD
+ {
+ Pos = MAP_APPFONT ( 144 , 103 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text [ en-US ] = "~New..." ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_NEWDLG
+ {
+ Pos = MAP_APPFONT ( 144 , 103 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text [ en-US ] = "~New..." ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_DELETE
+ {
+ Pos = MAP_APPFONT ( 144 , 120 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen... : ~L÷schen... */
+ Text [ en-US ] = "~Delete" ;
+ TabStop = TRUE ;
+ };
+};
+TabPage RID_TP_LIBS
+{
+ // HelpId = HID_BASICIDE_LIBS_TP ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 210 , 140 ) ;
+ FixedText RID_STR_BASICS
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text [ en-US ] = "L~ocation";
+ };
+ ListBox RID_LB_BASICS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 17 ) ;
+ Size = MAP_APPFONT ( 130 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText RID_STR_LIB
+ {
+ Pos = MAP_APPFONT ( 6 , 36 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text [ en-US ] = "~Library" ;
+ };
+ Control RID_TRLBOX
+ {
+ HelpID = HID_BASICIDE_LIBS_TREE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 47 ) ;
+ Size = MAP_APPFONT ( 130 , 87 ) ;
+ TabStop = TRUE ;
+ };
+
+ PushButton RID_PB_EDIT
+ {
+ Text [ en-US ] = "~Edit";
+ Pos = MAP_APPFONT ( 144 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton RID_PB_CLOSE
+ {
+ Text [ en-US ] = "Close";
+ Pos = MAP_APPFONT ( 144 , 23 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Schließen : Schlie˜en */
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_PASSWORD
+ {
+ Pos = MAP_APPFONT ( 144 , 43 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text [ en-US ] = "~Password..." ;
+ TabStop = TRUE ;
+ };
+
+ PushButton RID_PB_NEWLIB
+ {
+ Pos = MAP_APPFONT ( 144 , 69 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text [ en-US ] = "~New..." ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_APPEND
+ {
+ Pos = MAP_APPFONT ( 144 , 86 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Hin~zufügen... : Hin~zuf³gen... */
+ Text [ en-US ] = "~Import..." ;
+ };
+ PushButton RID_PB_EXPORT
+ {
+ Pos = MAP_APPFONT ( 144 , 103 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text [ en-US ] = "E~xport..." ;
+ TabStop = TRUE ;
+ };
+ PushButton RID_PB_DELETE
+ {
+ Pos = MAP_APPFONT ( 144 , 120 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen... : ~L÷schen... */
+ Text [ en-US ] = "~Delete" ;
+ TabStop = TRUE ;
+ };
+};
+ModalDialog RID_DLG_LIBS
+{
+ // HelpId = HID_BASICIDE_LIBS_DLG ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 168 , 132 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ OKButton RID_PB_OK
+ {
+ Pos = MAP_APPFONT ( 112 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton RID_PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 112 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText RID_FT_STORAGENAME
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ };
+ Control RID_CTRL_LIBS
+ {
+ HelpID = HID_BASICIDE_LIBSDLG_TREE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 100 , 67 ) ;
+ TabStop = TRUE ;
+ };
+ FixedLine RID_FL_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 89 ) ;
+ Size = MAP_APPFONT ( 156 , 8 ) ;
+ Text [ en-US ] = "Options" ;
+ };
+ CheckBox RID_CB_REF
+ {
+ Pos = MAP_APPFONT ( 12 , 100 ) ;
+ Size = MAP_APPFONT ( 146 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Insert as reference (read-only)" ;
+ };
+ CheckBox RID_CB_REPL
+ {
+ Pos = MAP_APPFONT ( 12 , 113 ) ;
+ Size = MAP_APPFONT ( 146 , 10 ) ;
+ Text [ en-US ] = "Replace existing libraries" ;
+ };
+};
+ModalDialog RID_DLG_NEWLIB
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 160 , 55 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ OKButton RID_PB_OK
+ {
+ Pos = MAP_APPFONT ( 104 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton RID_PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 104 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText RID_FT_NEWLIB
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text [ en-US ] = "~Name:" ;
+ };
+ Edit RID_ED_LIBNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 92 , 12 ) ;
+ TabStop = TRUE ;
+ };
+};
+
+ModalDialog RID_DLG_EXPORT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 115 , 55 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "Export Basic library";
+ OKButton RID_PB_OK
+ {
+ Pos = MAP_APPFONT ( 6 , 35 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton RID_PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 59 , 35 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+
+ RadioButton RB_EXPORTASPACKAGE
+ {
+ Pos = MAP_APPFONT( 6, 6 );
+ Size = MAP_APPFONT( 103, 10 );
+ Group = TRUE;
+ Text [ en-US ] = "Export as ~extension";
+ TabStop = TRUE ;
+ };
+ RadioButton RB_EXPORTASBASIC
+ {
+ Pos = MAP_APPFONT( 6, 19 );
+ Size = MAP_APPFONT( 103, 10 );
+ //Group = TRUE;
+ Text [ en-US ] = "Export as BASIC library";
+ };
+};
+
+String RID_STR_EXPORTPACKAGE
+{
+ Text [ en-US ] = "Export library as extension";
+};
+
+String RID_STR_EXPORTBASIC
+{
+ Text [ en-US ] = "Export as BASIC library";
+};
+
+String RID_STR_PACKAGE_BUNDLE
+{
+ Text [ en-US ] = "Extension";
+};
+
diff --git a/basctl/source/basicide/moptions.hrc b/basctl/source/basicide/moptions.hrc
new file mode 100644
index 000000000000..2636a39a8484
--- /dev/null
+++ b/basctl/source/basicide/moptions.hrc
@@ -0,0 +1,47 @@
+/*************************************************************************
+ *
+ * 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 _MOPTIONS_HRC
+#define _MOPTIONS_HRC
+
+#include <svl/solar.hrc>
+
+#define RID_MACROOPTIONS ( RID_BASICIDE_START + 55 )
+
+#define RID_FT_SBXNAME 2
+#define RID_PB_OK 3
+#define RID_PB_CANCEL 4
+#define RID_PB_HELP 5
+#define RID_FT_DESCR 6
+#define RID_ME_DESCR 7
+#define RID_FL_HELP 8
+#define RID_FT_HELPID 9
+#define RID_NF_HELPID 10
+#define RID_FT_HELPNAME 11
+#define RID_ED_HELPNAME 12
+
+#endif // _MOPTIONS_HRC
+
diff --git a/basctl/source/basicide/moptions.src b/basctl/source/basicide/moptions.src
new file mode 100644
index 000000000000..ef1be222095c
--- /dev/null
+++ b/basctl/source/basicide/moptions.src
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "helpid.hrc"
+#include <moptions.hrc>
+ModalDialog RID_MACROOPTIONS
+{
+ // HelpId = HID_MACRO_OPTIONS ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 224 , 121 ) ;
+ Text [ en-US ] = "Description" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ FixedText RID_FT_SBXNAME
+ {
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 150 , 10 ) ;
+ };
+ OKButton RID_PB_OK
+ {
+ Pos = MAP_APPFONT ( 168 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton RID_PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 168 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton RID_PB_HELP
+ {
+ Pos = MAP_APPFONT ( 168 , 53 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText RID_FT_DESCR
+ {
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text [ en-US ] = "Description" ;
+ };
+ MultiLineEdit RID_ME_DESCR
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 32 ) ;
+ Size = MAP_APPFONT ( 154 , 36 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE ;
+ };
+ FixedLine RID_FL_HELP
+ {
+ Pos = MAP_APPFONT ( 6 , 73 ) ;
+ Size = MAP_APPFONT ( 212 , 8 ) ;
+ Text [ en-US ] = "Help information" ;
+ };
+ FixedText RID_FT_HELPID
+ {
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 9 , 83 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text [ en-US ] = "Help ID" ;
+ };
+ NumericField RID_NF_HELPID
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 95 , 83 ) ;
+ Size = MAP_APPFONT ( 120 , 12 ) ;
+ TabStop = TRUE ;
+ Minimum = 0 ;
+ Maximum = 0xFFFFFFFF ;
+ };
+ FixedText RID_FT_HELPNAME
+ {
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 9 , 99 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text [ en-US ] = "Help file name" ;
+ };
+ Edit RID_ED_HELPNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 95 , 99 ) ;
+ Size = MAP_APPFONT ( 120 , 12 ) ;
+ TabStop = TRUE ;
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basctl/source/basicide/objdlg.cxx b/basctl/source/basicide/objdlg.cxx
new file mode 100644
index 000000000000..f3998287a2b8
--- /dev/null
+++ b/basctl/source/basicide/objdlg.cxx
@@ -0,0 +1,303 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <ide_pch.hxx>
+
+
+#include <basic/sbx.hxx>
+#include <vcl/cmdevt.hxx>
+#include <vcl/taskpanelist.hxx>
+#include <vcl/sound.hxx>
+#include <objdlg.hrc>
+#include <objdlg.hxx>
+#include <bastypes.hxx>
+#include <basidesh.hrc>
+#include <basidesh.hxx>
+#include <iderdll.hxx>
+#include <iderdll2.hxx>
+#include <sbxitem.hxx>
+
+
+ObjectTreeListBox::ObjectTreeListBox( Window* pParent, const ResId& rRes )
+ : BasicTreeListBox( pParent, rRes )
+{
+}
+
+ObjectTreeListBox::~ObjectTreeListBox()
+{
+}
+
+void ObjectTreeListBox::Command( const CommandEvent& )
+{
+}
+
+void ObjectTreeListBox::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ BasicTreeListBox::MouseButtonDown( rMEvt );
+
+ if ( rMEvt.IsLeft() && ( rMEvt.GetClicks() == 2 ) )
+ {
+ BasicEntryDescriptor aDesc( GetEntryDescriptor( GetCurEntry() ) );
+
+ if ( aDesc.GetType() == OBJ_TYPE_METHOD )
+ {
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, aDesc.GetDocument(), aDesc.GetLibName(), aDesc.GetName(),
+ aDesc.GetMethodName(), ConvertType( aDesc.GetType() ) );
+ pDispatcher->Execute( SID_BASICIDE_SHOWSBX,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+ }
+ }
+}
+
+
+
+ObjectCatalog::ObjectCatalog( Window * pParent )
+ :FloatingWindow( pParent, IDEResId( RID_BASICIDE_OBJCAT ) )
+ ,aMacroTreeList( this, IDEResId( RID_TLB_MACROS ) )
+ ,aToolBox(this, IDEResId(RID_TB_TOOLBOX), IDEResId(RID_IMGLST_TB_HC))
+ ,aMacroDescr( this, IDEResId( RID_FT_MACRODESCR ) )
+{
+ FreeResource();
+
+ aToolBox.SetOutStyle( TOOLBOX_STYLE_FLAT );
+ aToolBox.SetSizePixel( aToolBox.CalcWindowSizePixel() );
+ aToolBox.SetSelectHdl( LINK( this, ObjectCatalog, ToolBoxHdl ) );
+
+ aMacroTreeList.SetWindowBits( WB_HASLINES | WB_HASLINESATROOT |
+ WB_HASBUTTONS | WB_HASBUTTONSATROOT |
+ WB_HSCROLL );
+
+ aMacroTreeList.SetSelectHdl( LINK( this, ObjectCatalog, TreeListHighlightHdl ) );
+
+ aMacroTreeList.ScanAllEntries();
+ CheckButtons();
+
+ Point aPos = IDE_DLL()->GetExtraData()->GetObjectCatalogPos();
+ Size aSize = IDE_DLL()->GetExtraData()->GetObjectCatalogSize();
+ if ( aPos.X() == INVPOSITION )
+ {
+ // Zentriert nach AppWin:
+ Window* pWin = GetParent();
+ aPos = pWin->OutputToScreenPixel( Point( 0, 0 ) );
+ Size aAppWinSz = pWin->GetSizePixel();
+ Size aDlgWinSz = GetSizePixel();
+ aPos.X() += aAppWinSz.Width() / 2;
+ aPos.X() -= aDlgWinSz.Width() / 2;
+ aPos.Y() += aAppWinSz.Height() / 2;
+ aPos.Y() -= aDlgWinSz.Height() / 2;
+ }
+ SetPosPixel( aPos );
+ if ( aSize.Width() )
+ SetOutputSizePixel( aSize );
+
+ Resize(); // damit der Resize-Handler die Controls anordnet
+
+ // make object catalog keyboard accessible
+ pParent->GetSystemWindow()->GetTaskPaneList()->AddWindow( this );
+}
+
+ObjectCatalog::~ObjectCatalog()
+{
+ GetParent()->GetSystemWindow()->GetTaskPaneList()->RemoveWindow( this );
+}
+
+void __EXPORT ObjectCatalog::Move()
+{
+ IDE_DLL()->GetExtraData()->SetObjectCatalogPos( GetPosPixel() );
+}
+
+BOOL __EXPORT ObjectCatalog::Close()
+{
+ aCancelHdl.Call( this );
+ return TRUE;
+}
+
+void __EXPORT ObjectCatalog::Resize()
+{
+ Size aOutSz = GetOutputSizePixel();
+ IDE_DLL()->GetExtraData()->SetObjectCatalogSize( aOutSz );
+
+ Point aTreePos = aMacroTreeList.GetPosPixel();
+ Size aDescrSz = aMacroDescr.GetSizePixel();
+
+ Size aTreeSz;
+ long nCtrlWidth = aOutSz.Width() - 2*aTreePos.X();
+ aTreeSz.Width() = nCtrlWidth;
+ aTreeSz.Height() = aOutSz.Height() - aTreePos.Y() -
+ 2*aTreePos.X() - aDescrSz.Height();
+
+ if ( aTreeSz.Height() > 0 )
+ {
+ aMacroTreeList.SetSizePixel( aTreeSz );
+
+ Point aDescrPos( aTreePos.X(), aTreePos.Y()+aTreeSz.Height()+aTreePos.X() );
+
+ aMacroDescr.SetPosSizePixel( aDescrPos, Size( nCtrlWidth, aDescrSz.Height() ) );
+
+ String aDesc = aMacroDescr.GetText();
+ aMacroDescr.SetText(String());
+ aMacroDescr.SetText(aDesc);
+ }
+
+ // Die Buttons oben bleiben immer unveraendert stehen...
+}
+
+IMPL_LINK( ObjectCatalog, ToolBoxHdl, ToolBox*, pToolBox )
+{
+ USHORT nCurItem = pToolBox->GetCurItemId();
+ switch ( nCurItem )
+ {
+ case TBITEM_SHOW:
+ {
+ SfxAllItemSet aArgs( SFX_APP()->GetPool() );
+ SfxRequest aRequest( SID_BASICIDE_APPEAR, SFX_CALLMODE_SYNCHRON, aArgs );
+ SFX_APP()->ExecuteSlot( aRequest );
+
+ SvLBoxEntry* pCurEntry = aMacroTreeList.GetCurEntry();
+ DBG_ASSERT( pCurEntry, "Entry?!" );
+ BasicEntryDescriptor aDesc( aMacroTreeList.GetEntryDescriptor( pCurEntry ) );
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
+ if ( aDesc.GetType() == OBJ_TYPE_MODULE ||
+ aDesc.GetType() == OBJ_TYPE_DIALOG ||
+ aDesc.GetType() == OBJ_TYPE_METHOD )
+ {
+ if( pDispatcher )
+ {
+ SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, aDesc.GetDocument(), aDesc.GetLibName(), aDesc.GetName(),
+ aDesc.GetMethodName(), aMacroTreeList.ConvertType( aDesc.GetType() ) );
+ pDispatcher->Execute( SID_BASICIDE_SHOWSBX,
+ SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
+ }
+ }
+ else
+ {
+ ErrorBox( this, WB_OK, String( IDEResId( RID_STR_OBJNOTFOUND ) ) ).Execute();
+ aMacroTreeList.GetModel()->Remove( pCurEntry );
+ CheckButtons();
+ }
+ }
+ break;
+ }
+
+ return 0;
+}
+
+
+
+void ObjectCatalog::CheckButtons()
+{
+ SvLBoxEntry* pCurEntry = aMacroTreeList.GetCurEntry();
+ BasicEntryType eType = pCurEntry ? ((BasicEntry*)pCurEntry->GetUserData())->GetType() : OBJ_TYPE_UNKNOWN;
+ if ( eType == OBJ_TYPE_DIALOG || eType == OBJ_TYPE_MODULE || eType == OBJ_TYPE_METHOD )
+ aToolBox.EnableItem( TBITEM_SHOW, TRUE );
+ else
+ aToolBox.EnableItem( TBITEM_SHOW, FALSE );
+}
+
+
+
+IMPL_LINK_INLINE_START( ObjectCatalog, TreeListHighlightHdl, SvTreeListBox *, pBox )
+{
+ if ( pBox->IsSelected( pBox->GetHdlEntry() ) )
+ UpdateFields();
+ return 0;
+}
+IMPL_LINK_INLINE_END( ObjectCatalog, TreeListHighlightHdl, SvTreeListBox *, pBox )
+
+
+void ObjectCatalog::UpdateFields()
+{
+ SvLBoxEntry* pCurEntry = aMacroTreeList.GetCurEntry();
+ if ( pCurEntry )
+ {
+ CheckButtons();
+ aMacroDescr.SetText( String() );
+ SbxVariable* pVar = aMacroTreeList.FindVariable( pCurEntry );
+ if ( pVar )
+ {
+ SbxInfoRef xInfo = pVar->GetInfo();
+ if ( xInfo.Is() )
+ aMacroDescr.SetText( xInfo->GetComment() );
+ }
+ }
+}
+
+
+void ObjectCatalog::UpdateEntries()
+{
+ aMacroTreeList.UpdateEntries();
+}
+
+void ObjectCatalog::SetCurrentEntry( BasicEntryDescriptor& rDesc )
+{
+ aMacroTreeList.SetCurrentEntry( rDesc );
+}
+
+ObjectCatalogToolBox_Impl::ObjectCatalogToolBox_Impl(
+ Window * pParent, ResId const & rResId,
+ ResId const & rImagesHighContrastId):
+ ToolBox(pParent, rResId),
+ m_aImagesNormal(GetImageList()),
+ m_aImagesHighContrast(rImagesHighContrastId),
+ m_bHighContrast(false)
+{
+ setImages();
+}
+
+// virtual
+void ObjectCatalogToolBox_Impl::DataChanged(DataChangedEvent const & rDCEvt)
+{
+ ToolBox::DataChanged(rDCEvt);
+ if ((rDCEvt.GetType() == DATACHANGED_SETTINGS
+ || rDCEvt.GetType() == DATACHANGED_DISPLAY)
+ && (rDCEvt.GetFlags() & SETTINGS_STYLE) != 0)
+ setImages();
+}
+
+void ObjectCatalogToolBox_Impl::setImages()
+{
+ bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode();
+ if (bHC != m_bHighContrast)
+ {
+ SetImageList(bHC ? m_aImagesHighContrast : m_aImagesNormal);
+ m_bHighContrast = bHC;
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/objdlg.hrc b/basctl/source/basicide/objdlg.hrc
new file mode 100644
index 000000000000..930ab31a4ae8
--- /dev/null
+++ b/basctl/source/basicide/objdlg.hrc
@@ -0,0 +1,40 @@
+/*************************************************************************
+ *
+ * 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 _OBJDLG_HRC
+#define _OBJDLG_HRC
+
+#include <svl/solar.hrc>
+
+#define RID_BASICIDE_OBJCAT ( RID_BASICIDE_START + 70 )
+#define RID_FT_MACRODESCR 8
+#define RID_IMGLST_TB_HC 9
+#define RID_TLB_MACROS 10
+#define RID_TB_TOOLBOX 11
+
+#define TBITEM_SHOW 1
+
+#endif // _OBJDLG_HXX
diff --git a/basctl/source/basicide/objdlg.hxx b/basctl/source/basicide/objdlg.hxx
new file mode 100644
index 000000000000..cd48a135a882
--- /dev/null
+++ b/basctl/source/basicide/objdlg.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 _OBJDLG_HXX
+#define _OBJDLG_HXX
+
+#include <svheader.hxx>
+#include <vcl/floatwin.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/fixed.hxx>
+#include "vcl/image.hxx"
+
+#include <bastype2.hxx>
+
+class StarBASIC;
+
+class ObjectTreeListBox : public BasicTreeListBox
+{
+private:
+
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+public:
+ ObjectTreeListBox( Window* pParent, const ResId& rRes );
+ ~ObjectTreeListBox();
+};
+
+class ObjectCatalogToolBox_Impl: public ToolBox
+{
+public:
+ ObjectCatalogToolBox_Impl(Window * pParent, ResId const & rResId,
+ ResId const & rImagesHighContrastId);
+
+private:
+ virtual void DataChanged(DataChangedEvent const & rDCEvt);
+
+ void setImages();
+
+ ImageList m_aImagesNormal;
+ ImageList m_aImagesHighContrast;
+ bool m_bHighContrast;
+};
+
+class ObjectCatalog : public FloatingWindow
+{
+private:
+ ObjectTreeListBox aMacroTreeList;
+ ObjectCatalogToolBox_Impl aToolBox;
+ FixedText aMacroDescr;
+ Link aCancelHdl;
+
+protected:
+ DECL_LINK( ToolBoxHdl, ToolBox* );
+ void CheckButtons();
+ DECL_LINK( TreeListHighlightHdl, SvTreeListBox * );
+ void UpdateFields();
+ virtual void Move();
+ virtual BOOL Close();
+ virtual void Resize();
+
+public:
+ ObjectCatalog( Window * pParent );
+ virtual ~ObjectCatalog();
+
+ void UpdateEntries();
+ void SetCurrentEntry( BasicEntryDescriptor& rDesc );
+
+ void SetCancelHdl( const Link& rLink ) { aCancelHdl = rLink; }
+};
+
+#endif //_OBJDLG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/objdlg.src b/basctl/source/basicide/objdlg.src
new file mode 100644
index 000000000000..c8de023dec53
--- /dev/null
+++ b/basctl/source/basicide/objdlg.src
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <objdlg.hrc>
+#include <helpid.hrc>
+
+#define MASKCOLOR MaskColor = Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; };
+
+FloatingWindow RID_BASICIDE_OBJCAT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 191 , 179 ) ;
+ Text [ en-US ] = "Objects" ;
+ Closeable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Zoomable = TRUE ;
+ Hide = TRUE ;
+ ClipChildren = TRUE ;
+ Control RID_TLB_MACROS
+ {
+ HelpId = HID_BASICIDE_OBJECTCAT ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 24 ) ;
+ Size = MAP_APPFONT ( 185 , 126 ) ;
+ TabStop = TRUE ;
+ };
+ ToolBox RID_TB_TOOLBOX
+ {
+ HelpId = HID_BASICIDE_OBJECTS ;
+ SVLook = TRUE ;
+ Align = BOXALIGN_TOP ;
+ Pos = MAP_APPFONT ( 4 , 6 ) ;
+ ItemImageList = ImageList
+ {
+ Prefix = "im";
+ MASKCOLOR
+ IdList =
+ {
+ TBITEM_SHOW ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = TBITEM_SHOW ;
+ HelpId = HID_BASICIDE_OBJCAT_SHOW ;
+ Text [ en-US ] = "Show" ;
+ };
+ };
+ };
+ ImageList RID_IMGLST_TB_HC
+ {
+ Prefix = "imh";
+ MASKCOLOR
+ IdList =
+ {
+ TBITEM_SHOW ;
+ };
+ };
+ FixedText RID_FT_MACRODESCR
+ {
+ WordBreak = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 156 ) ;
+ Size = MAP_APPFONT ( 185 , 18 ) ;
+ };
+};
diff --git a/basctl/source/basicide/register.cxx b/basctl/source/basicide/register.cxx
new file mode 100644
index 000000000000..612a3dc1f303
--- /dev/null
+++ b/basctl/source/basicide/register.cxx
@@ -0,0 +1,120 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/registry/XRegistryKey.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <rtl/ustring.hxx>
+
+#include <cppuhelper/factory.hxx>
+
+#include "unomodel.hxx"
+
+using ::rtl::OUString;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+
+
+extern "C" {
+
+SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char** ppEnvironmentTypeName,
+ uno_Environment** ppEnvironment )
+{
+ (void)ppEnvironment;
+ *ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
+}
+
+SAL_DLLPUBLIC_EXPORT
+sal_Bool SAL_CALL component_writeInfo( void* pServiceManager ,
+ void* pRegistryKey )
+{
+ (void)pServiceManager;
+
+ Reference< ::registry::XRegistryKey >
+ xKey( reinterpret_cast< ::registry::XRegistryKey* >( pRegistryKey ) ) ;
+
+ OUString aDelimiter( RTL_CONSTASCII_USTRINGPARAM("/") );
+ OUString aUnoServices( RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES") );
+
+ sal_Int32 i;
+ Reference< ::registry::XRegistryKey > xNewKey;
+ xNewKey = xKey->createKey( aDelimiter + SIDEModel::getImplementationName_Static() + aUnoServices );
+ Sequence< OUString > aServices = SIDEModel::getSupportedServiceNames_Static();
+ for(i = 0; i < aServices.getLength(); i++ )
+ xNewKey->createKey( aServices.getConstArray()[i] );
+
+ return sal_True;
+}
+
+SAL_DLLPUBLIC_EXPORT
+void* SAL_CALL component_getFactory( const sal_Char* pImplementationName,
+ void* pServiceManager,
+ void* pRegistryKey )
+{
+ (void)pRegistryKey;
+
+ // Set default return value for this operation - if it failed.
+ void* pReturn = NULL ;
+
+ if (
+ ( pImplementationName != NULL ) &&
+ ( pServiceManager != NULL )
+ )
+ {
+ // Define variables which are used in following macros.
+ Reference< XSingleServiceFactory > xFactory ;
+ Reference< XMultiServiceFactory > xServiceManager( reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
+
+ if( SIDEModel::getImplementationName_Static().equalsAscii( pImplementationName ) )
+ {
+ xFactory = ::cppu::createSingleFactory( xServiceManager,
+ SIDEModel::getImplementationName_Static(),
+ SIDEModel_createInstance,
+ SIDEModel::getSupportedServiceNames_Static() );
+ }
+
+ // Factory is valid - service was found.
+ if ( xFactory.is() )
+ {
+ xFactory->acquire();
+ pReturn = xFactory.get();
+ }
+ }
+
+ // Return with result of this operation.
+ return pReturn ;
+}
+} // extern "C"
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/scriptdocument.cxx b/basctl/source/basicide/scriptdocument.cxx
new file mode 100644
index 000000000000..bc21f4b3f556
--- /dev/null
+++ b/basctl/source/basicide/scriptdocument.cxx
@@ -0,0 +1,1631 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "scriptdocument.hxx"
+#include "basobj.hxx"
+#include "basidesh.hrc"
+#include "iderid.hxx"
+#include "dlgeddef.hxx"
+#include "localizationmgr.hxx"
+#include "doceventnotifier.hxx"
+#include "documentenumeration.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/script/XLibraryContainer2.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uri/XUriReferenceFactory.hpp>
+#include <com/sun/star/util/XMacroExpander.hpp>
+#include <com/sun/star/document/MacroExecMode.hpp>
+#include <com/sun/star/document/XEventBroadcaster.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/util/XModifiable.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/document/XEmbeddedScripts.hpp>
+#include <com/sun/star/script/vba/XVBACompatibility.hpp>
+#include <com/sun/star/script/vba/XVBAModuleInfo.hpp>
+/** === end UNO includes === **/
+
+#include <sfx2/objsh.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/docfile.hxx>
+
+#include <vcl/svapp.hxx>
+
+#include <basic/basicmanagerrepository.hxx>
+
+#include <xmlscript/xmldlg_imexp.hxx>
+
+#include <unotools/syslocale.hxx>
+
+#include <unotools/collatorwrapper.hxx>
+
+#include <tools/diagnose_ex.h>
+#include <tools/urlobj.hxx>
+
+#include <comphelper/processfactory.hxx>
+#include <comphelper/documentinfo.hxx>
+#include <comphelper/componentcontext.hxx>
+
+#include <osl/mutex.hxx>
+
+#include <cppuhelper/implbase1.hxx>
+
+#include <rtl/uri.hxx>
+#include <rtl/bootstrap.hxx>
+
+#include <osl/process.h>
+#include <osl/file.hxx>
+
+#include <algorithm>
+#include <functional>
+#include <set>
+
+//........................................................................
+namespace basctl
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::frame::XModel;
+ using ::com::sun::star::beans::XPropertySet;
+ using ::com::sun::star::script::XLibraryContainer;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::beans::XPropertySetInfo;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::container::XNameContainer;
+ using ::com::sun::star::container::NoSuchElementException;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::task::XStatusIndicator;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::script::XLibraryContainer2;
+ using ::com::sun::star::lang::XMultiServiceFactory;
+ using ::com::sun::star::uri::XUriReferenceFactory;
+ using ::com::sun::star::uri::XUriReference;
+ using ::com::sun::star::uno::XComponentContext;
+ using ::com::sun::star::util::XMacroExpander;
+ using ::com::sun::star::io::XInputStreamProvider;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::io::XInputStream;
+ using ::com::sun::star::frame::XStorable;
+ using ::com::sun::star::util::XModifiable;
+ using ::com::sun::star::frame::XController;
+ using ::com::sun::star::frame::XFrame;
+ using ::com::sun::star::util::URL;
+ using ::com::sun::star::frame::XDispatchProvider;
+ using ::com::sun::star::frame::XDispatch;
+ using ::com::sun::star::beans::PropertyValue;
+ using ::com::sun::star::frame::XDesktop;
+ using ::com::sun::star::container::XEnumerationAccess;
+ using ::com::sun::star::container::XEnumeration;
+ using ::com::sun::star::frame::XModel2;
+ using ::com::sun::star::awt::XWindow2;
+ using ::com::sun::star::document::XEventListener;
+ using ::com::sun::star::lang::EventObject;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::document::XEventBroadcaster;
+ using ::com::sun::star::document::XEmbeddedScripts;
+ using ::com::sun::star::script::ModuleInfo;
+ using ::com::sun::star::script::vba::XVBACompatibility;
+ using ::com::sun::star::script::vba::XVBAModuleInfo;
+ /** === end UNO using === **/
+ namespace MacroExecMode = ::com::sun::star::document::MacroExecMode;
+ namespace FrameSearchFlag = ::com::sun::star::frame::FrameSearchFlag;
+
+ //====================================================================
+ //= helper
+ //====================================================================
+ namespace
+ {
+ //................................................................
+ static bool StringCompareLessThan( const String& lhs, const String& rhs )
+ {
+ return ( lhs.CompareIgnoreCaseToAscii( rhs ) == COMPARE_LESS );
+ }
+
+ //................................................................
+ class FilterDocuments : public docs::IDocumentDescriptorFilter
+ {
+ public:
+ FilterDocuments( bool _bFilterInvisible ) : m_bFilterInvisible( _bFilterInvisible ) { }
+
+ virtual bool includeDocument( const docs::DocumentDescriptor& _rDocument ) const;
+
+ private:
+ bool impl_isDocumentVisible_nothrow( const docs::DocumentDescriptor& _rDocument ) const;
+
+ private:
+ bool m_bFilterInvisible;
+ };
+
+ //................................................................
+ bool FilterDocuments::impl_isDocumentVisible_nothrow( const docs::DocumentDescriptor& _rDocument ) const
+ {
+ try
+ {
+ for ( docs::Controllers::const_iterator controller = _rDocument.aControllers.begin();
+ controller != _rDocument.aControllers.end();
+ ++controller
+ )
+ {
+ Reference< XFrame > xFrame( (*controller)->getFrame(), UNO_SET_THROW );
+ Reference< XWindow2 > xContainer( xFrame->getContainerWindow(), UNO_QUERY_THROW );
+ if ( xContainer->isVisible() )
+ return true;
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
+ }
+
+ //................................................................
+ bool FilterDocuments::includeDocument( const docs::DocumentDescriptor& _rDocument ) const
+ {
+ Reference< XEmbeddedScripts > xScripts( _rDocument.xModel, UNO_QUERY );
+ if ( !xScripts.is() )
+ return false;
+ if ( !m_bFilterInvisible || impl_isDocumentVisible_nothrow( _rDocument ) )
+ return true;
+ return false;
+ }
+
+ //................................................................
+ void lcl_getAllModels_throw( docs::Documents& _out_rModels, bool _bVisibleOnly )
+ {
+ _out_rModels.clear();
+
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ FilterDocuments aFilter( _bVisibleOnly );
+ docs::DocumentEnumeration aEnum( aContext, &aFilter );
+
+ aEnum.getDocuments( _out_rModels );
+ }
+ }
+
+ //====================================================================
+ //= ScriptDocument_Impl - declaration
+ //====================================================================
+ class ScriptDocument_Impl : public DocumentEventListener
+ {
+ private:
+ bool m_bIsApplication;
+ bool m_bValid;
+ bool m_bDocumentClosed;
+ Reference< XModel > m_xDocument;
+ Reference< XModifiable > m_xDocModify;
+ Reference< XEmbeddedScripts > m_xScriptAccess;
+ ::std::auto_ptr< DocumentEventNotifier >
+ m_pDocListener;
+
+ public:
+ ScriptDocument_Impl( );
+ ScriptDocument_Impl( const Reference< XModel >& _rxDocument );
+ ~ScriptDocument_Impl();
+
+ /** determines whether the instance refers to a valid "document" with script and
+ dialog libraries
+ */
+ inline bool isValid() const { return m_bValid; }
+ /** determines whether the instance refers to a non-closed document
+ */
+ inline bool isAlive() const { return m_bValid ? ( m_bIsApplication ? true : !m_bDocumentClosed ) : false; }
+ /// determines whether the "document" refers to the application in real
+ inline bool isApplication() const { return m_bValid && m_bIsApplication; }
+ /// determines whether the document refers to a real document (instead of the application)
+ inline bool isDocument() const { return m_bValid && !m_bIsApplication; }
+
+ /** invalidates the instance
+ */
+ void invalidate();
+
+ const Reference< XModel >&
+ getDocumentRef() const { return m_xDocument; }
+
+ /// returns a library container belonging to the document
+ Reference< XLibraryContainer >
+ getLibraryContainer( LibraryContainerType _eType ) const;
+
+ /// determines whether a given library is part of the shared installation
+ bool isLibraryShared( const ::rtl::OUString& _rLibName, LibraryContainerType _eType );
+
+ /** returns the current frame of the document
+
+ To be called for documents only, not for the application.
+
+ If <FALSE/> is returned, an assertion will be raised in non-product builds.
+ */
+ bool getCurrentFrame( Reference< XFrame >& _out_rxFrame ) const;
+
+ // versions with the same signature/semantics as in ScriptDocument itself
+ bool isReadOnly() const;
+ bool isInVBAMode() const;
+ BasicManager*
+ getBasicManager() const;
+ Reference< XModel >
+ getDocument() const;
+ void setDocumentModified() const;
+ bool isDocumentModified() const;
+ bool saveDocument( const Reference< XStatusIndicator >& _rxStatusIndicator ) const;
+
+ ::rtl::OUString
+ getTitle() const;
+ ::rtl::OUString
+ getURL() const;
+
+ bool allowMacros() const;
+
+ Reference< XNameContainer >
+ getLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, bool _bLoadLibrary ) const
+ SAL_THROW((NoSuchElementException));
+ bool hasLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
+ Reference< XNameContainer >
+ getOrCreateLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
+
+ void loadLibraryIfExists( LibraryContainerType _eType, const ::rtl::OUString& _rLibrary );
+
+ bool removeModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModuleName );
+ bool hasModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName ) const;
+ bool getModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rObjectName, Any& _out_rModuleOrDialog );
+ bool renameModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rOldName, const ::rtl::OUString& _rNewName, const Reference< XNameContainer >& _rxExistingDialogModel );
+ bool createModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, bool _bCreateMain, ::rtl::OUString& _out_rNewModuleCode ) const;
+ bool insertModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rObjectName, const ::rtl::OUString& _rModName, const Any& _rElement ) const;
+ bool updateModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const;
+ bool createDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName, Reference< XInputStreamProvider >& _out_rDialogProvider ) const;
+
+ protected:
+ // DocumentEventListener
+ virtual void onDocumentCreated( const ScriptDocument& _rDocument );
+ virtual void onDocumentOpened( const ScriptDocument& _rDocument );
+ virtual void onDocumentSave( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAs( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAsDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentClosed( const ScriptDocument& _rDocument );
+ virtual void onDocumentTitleChanged( const ScriptDocument& _rDocument );
+ virtual void onDocumentModeChanged( const ScriptDocument& _rDocument );
+
+ private:
+ bool impl_initDocument_nothrow( const Reference< XModel >& _rxModel );
+ };
+
+ //====================================================================
+ //= ScriptDocument_Impl - implementation
+ //====================================================================
+ //--------------------------------------------------------------------
+ ScriptDocument_Impl::ScriptDocument_Impl()
+ :m_bIsApplication( true )
+ ,m_bValid( true )
+ ,m_bDocumentClosed( false )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument_Impl::ScriptDocument_Impl( const Reference< XModel >& _rxDocument )
+ :m_bIsApplication( false )
+ ,m_bValid( false )
+ ,m_bDocumentClosed( false )
+ {
+ if ( _rxDocument.is() )
+ {
+ if ( impl_initDocument_nothrow( _rxDocument ) )
+ {
+ }
+ }
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument_Impl::~ScriptDocument_Impl()
+ {
+ invalidate();
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::invalidate()
+ {
+ m_bIsApplication = false;
+ m_bValid = false;
+ m_bDocumentClosed = false;
+
+ m_xDocument.clear();
+ m_xDocModify.clear();
+ m_xScriptAccess.clear();
+
+ if ( m_pDocListener.get() )
+ m_pDocListener->dispose();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::impl_initDocument_nothrow( const Reference< XModel >& _rxModel )
+ {
+ try
+ {
+ m_xDocument.set ( _rxModel, UNO_SET_THROW );
+ m_xDocModify.set ( _rxModel, UNO_QUERY_THROW );
+ m_xScriptAccess.set ( _rxModel, UNO_QUERY );
+
+ m_bValid = m_xScriptAccess.is();
+
+ if ( m_bValid )
+ m_pDocListener.reset( new DocumentEventNotifier( *this, _rxModel ) );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ m_bValid = false;
+ }
+
+ if ( !m_bValid )
+ {
+ invalidate();
+ }
+
+ return m_bValid;
+ }
+ //--------------------------------------------------------------------
+ Reference< XLibraryContainer > ScriptDocument_Impl::getLibraryContainer( LibraryContainerType _eType ) const
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::getLibraryContainer: invalid!" );
+
+ Reference< XLibraryContainer > xContainer;
+ if ( !isValid() )
+ return xContainer;
+
+ try
+ {
+ if ( isApplication() )
+ xContainer.set( _eType == E_SCRIPTS ? SFX_APP()->GetBasicContainer() : SFX_APP()->GetDialogContainer(), UNO_QUERY_THROW );
+ else
+ {
+ xContainer.set(
+ _eType == E_SCRIPTS ? m_xScriptAccess->getBasicLibraries() : m_xScriptAccess->getDialogLibraries(),
+ UNO_QUERY_THROW );
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return xContainer;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::isReadOnly() const
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::isReadOnly: invalid state!" );
+ OSL_ENSURE( !isApplication(), "ScriptDocument_Impl::isReadOnly: not allowed to be called for the application!" );
+
+ bool bIsReadOnly = true;
+ if ( isValid() && !isApplication() )
+ {
+ try
+ {
+ // note that XStorable is required by the OfficeDocument service
+ Reference< XStorable > xDocStorable( m_xDocument, UNO_QUERY_THROW );
+ bIsReadOnly = xDocStorable->isReadonly();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ return bIsReadOnly;
+ }
+
+ bool ScriptDocument_Impl::isInVBAMode() const
+ {
+ bool bResult = false;
+ if ( !isApplication() )
+ {
+ Reference< XVBACompatibility > xVBACompat( getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+ if ( xVBACompat.is() )
+ bResult = xVBACompat->getVBACompatibilityMode();
+ }
+ return bResult;
+ }
+
+ //--------------------------------------------------------------------
+ BasicManager* ScriptDocument_Impl::getBasicManager() const
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::getBasicManager: invalid state!" );
+ if ( !isValid() )
+ return NULL;
+
+ if ( isApplication() )
+ return SFX_APP()->GetBasicManager();
+
+ return ::basic::BasicManagerRepository::getDocumentBasicManager( m_xDocument );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XModel > ScriptDocument_Impl::getDocument() const
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::getDocument: invalid state!" );
+ OSL_ENSURE( isDocument(), "ScriptDocument_Impl::getDocument: for documents only!" );
+ if ( !isValid() || !isDocument() )
+ return NULL;
+
+ return m_xDocument;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XNameContainer > ScriptDocument_Impl::getLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, bool _bLoadLibrary ) const
+ SAL_THROW((NoSuchElementException))
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::getLibrary: invalid state!" );
+
+ Reference< XNameContainer > xContainer;
+ try
+ {
+ Reference< XLibraryContainer > xLibContainer = getLibraryContainer( _eType );
+ if ( isValid() )
+ {
+ if ( xLibContainer.is() )
+ xContainer.set( xLibContainer->getByName( _rLibName ), UNO_QUERY_THROW );
+ }
+
+ if ( !xContainer.is() )
+ throw NoSuchElementException();
+
+ // load library
+ if ( _bLoadLibrary && !xLibContainer->isLibraryLoaded( _rLibName ) )
+ xLibContainer->loadLibrary( _rLibName );
+ }
+ catch( const NoSuchElementException& )
+ {
+ throw; // allowed to leave
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return xContainer;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::hasLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const
+ {
+ bool bHas = false;
+ try
+ {
+ Reference< XLibraryContainer > xLibContainer = getLibraryContainer( _eType );
+ bHas = xLibContainer.is() && xLibContainer->hasByName( _rLibName );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return bHas;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XNameContainer > ScriptDocument_Impl::getOrCreateLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const
+ {
+ Reference< XNameContainer > xLibrary;
+ try
+ {
+ Reference< XLibraryContainer > xLibContainer( getLibraryContainer( _eType ), UNO_QUERY_THROW );
+ if ( xLibContainer->hasByName( _rLibName ) )
+ xLibrary.set( xLibContainer->getByName( _rLibName ), UNO_QUERY_THROW );
+ else
+ xLibrary.set( xLibContainer->createLibrary( _rLibName ), UNO_QUERY_THROW );
+
+ if ( !xLibContainer->isLibraryLoaded( _rLibName ) )
+ xLibContainer->loadLibrary( _rLibName );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return xLibrary;
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::loadLibraryIfExists( LibraryContainerType _eType, const ::rtl::OUString& _rLibrary )
+ {
+ try
+ {
+ Reference< XLibraryContainer > xLibContainer( getLibraryContainer( _eType ) );
+ if ( xLibContainer.is() && xLibContainer->hasByName( _rLibrary ) && !xLibContainer->isLibraryLoaded( _rLibrary ) )
+ xLibContainer->loadLibrary( _rLibrary );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::removeModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModuleName )
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::removeModuleOrDialog: invalid!" );
+ if ( isValid() )
+ {
+ try
+ {
+ Reference< XNameContainer > xLib( getLibrary( _eType, _rLibName, TRUE ) );
+ if ( xLib.is() )
+ {
+ xLib->removeByName( _rModuleName );
+ return true;
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ return false;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::hasModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName ) const
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::hasModuleOrDialog: invalid!" );
+ if ( !isValid() )
+ return false;
+
+ try
+ {
+ Reference< XNameContainer > xLib( getLibrary( _eType, _rLibName, TRUE ) );
+ if ( xLib.is() )
+ return xLib->hasByName( _rModName );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::getModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rObjectName, Any& _out_rModuleOrDialog )
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::getModuleOrDialog: invalid!" );
+ if ( !isValid() )
+ return false;
+
+ _out_rModuleOrDialog.clear();
+ try
+ {
+ Reference< XNameContainer > xLib( getLibrary( _eType, _rLibName, TRUE ), UNO_QUERY_THROW );
+ if ( xLib->hasByName( _rObjectName ) )
+ {
+ _out_rModuleOrDialog = xLib->getByName( _rObjectName );
+ return true;
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::renameModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName,
+ const ::rtl::OUString& _rOldName, const ::rtl::OUString& _rNewName, const Reference< XNameContainer >& _rxExistingDialogModel )
+ {
+ OSL_ENSURE( isValid(), "ScriptDocument_Impl::renameModuleOrDialog: invalid!" );
+ if ( !isValid() )
+ return false;
+
+ try
+ {
+ Reference< XNameContainer > xLib( getLibrary( _eType, _rLibName, TRUE ), UNO_QUERY_THROW );
+
+ // get element
+ Any aElement( xLib->getByName( _rOldName ) );
+
+ // remove element from container
+ xLib->removeByName( _rOldName );
+
+ // if it's a dialog, import and export, to reflect the new name
+ if ( _eType == E_DIALOGS )
+ {
+ // create dialog model
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ Reference< XNameContainer > xDialogModel;
+ if ( _rxExistingDialogModel.is() )
+ xDialogModel = _rxExistingDialogModel;
+ else
+ if ( !aContext.createComponent( "com.sun.star.awt.UnoControlDialogModel", xDialogModel ) )
+ return false;
+
+ // import dialog model
+ Reference< XInputStreamProvider > xISP( aElement, UNO_QUERY_THROW );
+ if ( !_rxExistingDialogModel.is() )
+ {
+ Reference< XInputStream > xInput( xISP->createInputStream(), UNO_QUERY_THROW );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, aContext.getUNOContext(), isDocument() ? getDocument() : Reference< XModel >() );
+ }
+
+ // set new name as property
+ Reference< XPropertySet > xDlgPSet( xDialogModel, UNO_QUERY_THROW );
+ xDlgPSet->setPropertyValue( DLGED_PROP_NAME, makeAny( _rNewName ) );
+
+ // export dialog model
+ xISP = ::xmlscript::exportDialogModel( xDialogModel, aContext.getUNOContext(), isDocument() ? getDocument() : Reference< XModel >() );
+ aElement <<= xISP;
+ }
+
+ // insert element by new name in container
+ if ( _eType == E_SCRIPTS )
+ {
+ Reference< XVBAModuleInfo > xVBAModuleInfo( xLib, UNO_QUERY );
+ if ( xVBAModuleInfo->hasModuleInfo( _rOldName ) )
+ {
+ ModuleInfo sModuleInfo = xVBAModuleInfo->getModuleInfo( _rOldName );
+ xVBAModuleInfo->removeModuleInfo( _rOldName );
+ xVBAModuleInfo->insertModuleInfo( _rNewName, sModuleInfo );
+ }
+ }
+ xLib->insertByName( _rNewName, aElement );
+ return true;
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::createModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, bool _bCreateMain, ::rtl::OUString& _out_rNewModuleCode ) const
+ {
+ _out_rNewModuleCode = ::rtl::OUString();
+ try
+ {
+ Reference< XNameContainer > xLib( getLibrary( E_SCRIPTS, _rLibName, TRUE ) );
+ if ( !xLib.is() || xLib->hasByName( _rModName ) )
+ return false;
+
+ // create new module
+ _out_rNewModuleCode = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "REM ***** BASIC *****\n\n" ) );
+ if ( _bCreateMain )
+ _out_rNewModuleCode += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Sub Main\n\nEnd Sub\n" ) );
+
+ // insert module into library
+ xLib->insertByName( _rModName, makeAny( _out_rNewModuleCode ) );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ return false;
+ }
+
+ return true;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::insertModuleOrDialog( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rObjectName, const Any& _rElement ) const
+ {
+ try
+ {
+ Reference< XNameContainer > xLib( getOrCreateLibrary( _eType, _rLibName ), UNO_QUERY_THROW );
+ if ( xLib->hasByName( _rObjectName ) )
+ return false;
+
+ xLib->insertByName( _rObjectName, _rElement );
+ return true;
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::updateModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const
+ {
+ try
+ {
+ Reference< XNameContainer > xLib( getOrCreateLibrary( E_SCRIPTS, _rLibName ), UNO_QUERY_THROW );
+ if ( !xLib->hasByName( _rModName ) )
+ return false;
+ xLib->replaceByName( _rModName, makeAny( _rModuleCode ) );
+ return true;
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::createDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName, Reference< XInputStreamProvider >& _out_rDialogProvider ) const
+ {
+ try
+ {
+ Reference< XNameContainer > xLib( getLibrary( E_DIALOGS, _rLibName, TRUE ), UNO_QUERY_THROW );
+
+ // create dialog
+ _out_rDialogProvider.clear();
+ if ( xLib->hasByName( _rDialogName ) )
+ return false;
+
+ // create new dialog model
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ Reference< XNameContainer > xDialogModel;
+ if ( !aContext.createComponent( "com.sun.star.awt.UnoControlDialogModel", xDialogModel ) )
+ return false;
+
+ // set name property
+ Reference< XPropertySet > xDlgPSet( xDialogModel, UNO_QUERY_THROW );
+ xDlgPSet->setPropertyValue( DLGED_PROP_NAME, makeAny( _rDialogName ) );
+
+ // export dialog model
+ _out_rDialogProvider = ::xmlscript::exportDialogModel( xDialogModel, aContext.getUNOContext(), isDocument() ? getDocument() : Reference< XModel >() );
+
+ // insert dialog into library
+ xLib->insertByName( _rDialogName, makeAny( _out_rDialogProvider ) );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return _out_rDialogProvider.is();
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::setDocumentModified() const
+ {
+ OSL_ENSURE( isValid() && isDocument(), "ScriptDocument_Impl::setDocumentModified: only to be called for real documents!" );
+ if ( isValid() && isDocument() )
+ {
+ try
+ {
+ m_xDocModify->setModified( sal_True );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::isDocumentModified() const
+ {
+ OSL_ENSURE( isValid() && isDocument(), "ScriptDocument_Impl::isDocumentModified: only to be called for real documents!" );
+ bool bIsModified = false;
+ if ( isValid() && isDocument() )
+ {
+ try
+ {
+ bIsModified = m_xDocModify->isModified();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ return bIsModified;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::saveDocument( const Reference< XStatusIndicator >& _rxStatusIndicator ) const
+ {
+ Reference< XFrame > xFrame;
+ if ( !getCurrentFrame( xFrame ) )
+ return false;
+
+ Sequence< PropertyValue > aArgs;
+ if ( _rxStatusIndicator.is() )
+ {
+ aArgs.realloc(1);
+ aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StatusIndicator" ) );
+ aArgs[0].Value <<= _rxStatusIndicator;
+ }
+
+ try
+ {
+ URL aURL;
+ aURL.Complete = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:Save" ) );
+ aURL.Main = aURL.Complete;
+ aURL.Protocol = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:" ) );
+ aURL.Path = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Save" ) );
+
+ Reference< XDispatchProvider > xDispProv( xFrame, UNO_QUERY_THROW );
+ Reference< XDispatch > xDispatch(
+ xDispProv->queryDispatch( aURL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "_self" ) ), FrameSearchFlag::AUTO ),
+ UNO_SET_THROW );
+
+ xDispatch->dispatch( aURL, aArgs );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ return false;
+ }
+
+ return true;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString ScriptDocument_Impl::getTitle() const
+ {
+ OSL_PRECOND( isValid() && isDocument(), "ScriptDocument_Impl::getTitle: for documents only!" );
+
+ ::rtl::OUString sTitle;
+ if ( isValid() && isDocument() )
+ {
+ sTitle = ::comphelper::DocumentInfo::getDocumentTitle( m_xDocument );
+ }
+ return sTitle;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString ScriptDocument_Impl::getURL() const
+ {
+ OSL_PRECOND( isValid() && isDocument(), "ScriptDocument_Impl::getURL: for documents only!" );
+
+ ::rtl::OUString sURL;
+ if ( isValid() && isDocument() )
+ {
+ try
+ {
+ sURL = m_xDocument->getURL();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ return sURL;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::allowMacros() const
+ {
+ OSL_ENSURE( isValid() && isDocument(), "ScriptDocument_Impl::allowMacros: for documents only!" );
+ bool bAllow = false;
+ if ( isValid() && isDocument() )
+ {
+ try
+ {
+ bAllow = m_xScriptAccess->getAllowMacroExecution();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ return bAllow;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::getCurrentFrame( Reference< XFrame >& _out_rxFrame ) const
+ {
+ _out_rxFrame.clear();
+ OSL_PRECOND( isValid() && isDocument(), "ScriptDocument_Impl::getCurrentFrame: documents only!" );
+ if ( !isValid() || !isDocument() )
+ return false;
+
+ try
+ {
+ Reference< XModel > xDocument( m_xDocument, UNO_SET_THROW );
+ Reference< XController > xController( xDocument->getCurrentController(), UNO_SET_THROW );
+ _out_rxFrame.set( xController->getFrame(), UNO_SET_THROW );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return _out_rxFrame.is();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument_Impl::isLibraryShared( const ::rtl::OUString& _rLibName, LibraryContainerType _eType )
+ {
+ bool bIsShared = false;
+ try
+ {
+ Reference< XLibraryContainer2 > xLibContainer( getLibraryContainer( _eType ), UNO_QUERY_THROW );
+
+ if ( !xLibContainer->hasByName( _rLibName ) || !xLibContainer->isLibraryLink( _rLibName ) )
+ return false;
+ ::rtl::OUString aFileURL;
+ Reference< XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
+ Reference< XUriReferenceFactory > xUriFac;
+ if ( xMSF.is() )
+ {
+ xUriFac.set(
+ xMSF->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.uri.UriReferenceFactory" ) ) ),
+ UNO_QUERY_THROW );
+ }
+
+ ::rtl::OUString aLinkURL( xLibContainer->getLibraryLinkURL( _rLibName ) );
+ Reference< XUriReference > xUriRef( xUriFac->parse( aLinkURL ), UNO_QUERY_THROW );
+
+ ::rtl::OUString aScheme = xUriRef->getScheme();
+ if ( aScheme.equalsIgnoreAsciiCaseAscii( "file" ) )
+ {
+ aFileURL = aLinkURL;
+ }
+ else if ( aScheme.equalsIgnoreAsciiCaseAscii( "vnd.sun.star.pkg" ) )
+ {
+ ::rtl::OUString aAuthority = xUriRef->getAuthority();
+ if ( aAuthority.matchIgnoreAsciiCaseAsciiL( RTL_CONSTASCII_STRINGPARAM( "vnd.sun.star.expand:" ) ) )
+ {
+ ::rtl::OUString aDecodedURL( aAuthority.copy( sizeof ( "vnd.sun.star.expand:" ) - 1 ) );
+ aDecodedURL = ::rtl::Uri::decode( aDecodedURL, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
+ Reference< XComponentContext > xContext;
+ Reference< XPropertySet > xProps( xMSF, UNO_QUERY_THROW );
+ xContext.set( xProps->getPropertyValue( ::rtl::OUString::createFromAscii( "DefaultContext" ) ), UNO_QUERY_THROW );
+ Reference< XMacroExpander > xMacroExpander(
+ xContext->getValueByName(
+ ::rtl::OUString::createFromAscii( "/singletons/com.sun.star.util.theMacroExpander" ) ),
+ UNO_QUERY_THROW );
+ aFileURL = xMacroExpander->expandMacros( aDecodedURL );
+ }
+ }
+
+ if ( aFileURL.getLength() )
+ {
+ ::osl::DirectoryItem aFileItem;
+ ::osl::FileStatus aFileStatus( FileStatusMask_FileURL );
+ OSL_VERIFY( ::osl::DirectoryItem::get( aFileURL, aFileItem ) == ::osl::FileBase::E_None );
+ OSL_VERIFY( aFileItem.getFileStatus( aFileStatus ) == ::osl::FileBase::E_None );
+ ::rtl::OUString aCanonicalFileURL( aFileStatus.getFileURL() );
+
+ ::rtl::OUString aSearchURL1( RTL_CONSTASCII_USTRINGPARAM( "share/basic" ) );
+ ::rtl::OUString aSearchURL2( RTL_CONSTASCII_USTRINGPARAM( "share/uno_packages" ) );
+ ::rtl::OUString aSearchURL3( RTL_CONSTASCII_USTRINGPARAM( "share/extensions" ) );
+ if( aCanonicalFileURL.indexOf( aSearchURL1 ) != -1 ||
+ aCanonicalFileURL.indexOf( aSearchURL2 ) != -1 ||
+ aCanonicalFileURL.indexOf( aSearchURL3 ) != -1 )
+ bIsShared = true;
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return bIsShared;
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentCreated( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentOpened( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentSave( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentSaveDone( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentSaveAs( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentSaveAsDone( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentClosed( const ScriptDocument& _rDocument )
+ {
+ DBG_TESTSOLARMUTEX();
+ OSL_PRECOND( isValid(), "ScriptDocument_Impl::onDocumentClosed: should not be listening if I'm not valid!" );
+
+ bool bMyDocument = m_xDocument == _rDocument.getDocument();
+ OSL_PRECOND( bMyDocument, "ScriptDocument_Impl::onDocumentClosed: didn't want to know *this*!" );
+ if ( bMyDocument )
+ {
+ m_bDocumentClosed = true;
+ }
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentTitleChanged( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument_Impl::onDocumentModeChanged( const ScriptDocument& /*_rDocument*/ )
+ {
+ // not interested in
+ }
+
+ //====================================================================
+ //= ScriptDocument
+ //====================================================================
+ //--------------------------------------------------------------------
+ ScriptDocument::ScriptDocument()
+ :m_pImpl( new ScriptDocument_Impl() )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument::ScriptDocument( ScriptDocument::SpecialDocument _eType )
+ :m_pImpl( new ScriptDocument_Impl( Reference< XModel >() ) )
+ {
+ OSL_ENSURE( _eType == NoDocument, "ScriptDocument::ScriptDocument: unknown SpecialDocument type!" );
+ (void)_eType;
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument::ScriptDocument( const Reference< XModel >& _rxDocument )
+ :m_pImpl( new ScriptDocument_Impl( _rxDocument ) )
+ {
+ OSL_ENSURE( _rxDocument.is(), "ScriptDocument::ScriptDocument: document must not be NULL!" );
+ // a NULL document results in an uninitialized instance, and for this
+ // purpose, there is a dedicated constructor
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument::ScriptDocument( const ScriptDocument& _rSource )
+ :m_pImpl( _rSource.m_pImpl )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument::~ScriptDocument()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ const ScriptDocument& ScriptDocument::getApplicationScriptDocument()
+ {
+ static ScriptDocument s_aApplicationScripts;
+ return s_aApplicationScripts;
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument ScriptDocument::getDocumentForBasicManager( const BasicManager* _pManager )
+ {
+ if ( _pManager == SFX_APP()->GetBasicManager() )
+ return getApplicationScriptDocument();
+
+ docs::Documents aDocuments;
+ lcl_getAllModels_throw( aDocuments, false );
+
+ for ( docs::Documents::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ const BasicManager* pDocBasicManager = ::basic::BasicManagerRepository::getDocumentBasicManager( doc->xModel );
+ if ( ( pDocBasicManager != SFX_APP()->GetBasicManager() )
+ && ( pDocBasicManager == _pManager )
+ )
+ {
+ return ScriptDocument( doc->xModel );
+ }
+ }
+
+ OSL_ENSURE( false, "ScriptDocument::getDocumentForBasicManager: did not find a document for this manager!" );
+ return ScriptDocument( NoDocument );
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocument ScriptDocument::getDocumentWithURLOrCaption( const ::rtl::OUString& _rUrlOrCaption )
+ {
+ ScriptDocument aDocument( getApplicationScriptDocument() );
+ if ( _rUrlOrCaption.getLength() == 0 )
+ return aDocument;
+
+ docs::Documents aDocuments;
+ lcl_getAllModels_throw( aDocuments, false );
+
+ for ( docs::Documents::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ const ScriptDocument aCheck = ScriptDocument( doc->xModel );
+ if ( _rUrlOrCaption == aCheck.getTitle()
+ || _rUrlOrCaption == aCheck.getURL()
+ )
+ {
+ aDocument = aCheck;
+ break;
+ }
+ }
+
+ return aDocument;
+ }
+
+ //--------------------------------------------------------------------
+ namespace
+ {
+ struct DocumentTitleLess : public ::std::binary_function< ScriptDocument, ScriptDocument, bool >
+ {
+ DocumentTitleLess( const CollatorWrapper& _rCollator )
+ :m_aCollator( _rCollator )
+ {
+ }
+
+ bool operator()( const ScriptDocument& _lhs, const ScriptDocument& _rhs ) const
+ {
+ return m_aCollator.compareString( _lhs.getTitle(), _rhs.getTitle() ) < 0;
+ }
+ private:
+ const CollatorWrapper m_aCollator;
+ };
+ }
+
+ //--------------------------------------------------------------------
+ ScriptDocuments ScriptDocument::getAllScriptDocuments( ScriptDocument::ScriptDocumentList _eListType )
+ {
+ ScriptDocuments aScriptDocs;
+
+ // include application?
+ if ( _eListType == AllWithApplication )
+ aScriptDocs.push_back( getApplicationScriptDocument() );
+
+ // obtain documents
+ try
+ {
+ docs::Documents aDocuments;
+ lcl_getAllModels_throw( aDocuments, true /* exclude invisible */ );
+
+ for ( docs::Documents::const_iterator doc = aDocuments.begin();
+ doc != aDocuments.end();
+ ++doc
+ )
+ {
+ // exclude documents without script/library containers
+ ScriptDocument aDoc( doc->xModel );
+ if ( !aDoc.isValid() )
+ continue;
+
+ aScriptDocs.push_back( aDoc );
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ // sort document list by doc title?
+ if ( _eListType == DocumentsSorted )
+ {
+ CollatorWrapper aCollator( ::comphelper::getProcessServiceFactory() );
+ aCollator.loadDefaultCollator( SvtSysLocale().GetLocaleData().getLocale(), 0 );
+ ::std::sort( aScriptDocs.begin(), aScriptDocs.end(), DocumentTitleLess( aCollator ) );
+ }
+
+ return aScriptDocs;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::operator==( const ScriptDocument& _rhs ) const
+ {
+ return m_pImpl->getDocumentRef() == _rhs.m_pImpl->getDocumentRef();
+ }
+
+ //--------------------------------------------------------------------
+ sal_Int32 ScriptDocument::hashCode() const
+ {
+ return sal::static_int_cast<sal_Int32>(reinterpret_cast< sal_IntPtr >( m_pImpl->getDocumentRef().get() ));
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::isValid() const
+ {
+ return m_pImpl->isValid();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::isAlive() const
+ {
+ return m_pImpl->isAlive();
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XLibraryContainer > ScriptDocument::getLibraryContainer( LibraryContainerType _eType ) const
+ {
+ return m_pImpl->getLibraryContainer( _eType );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XNameContainer > ScriptDocument::getLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, bool _bLoadLibrary ) const
+ SAL_THROW((NoSuchElementException))
+ {
+ return m_pImpl->getLibrary( _eType, _rLibName, _bLoadLibrary );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::hasLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const
+ {
+ return m_pImpl->hasLibrary( _eType, _rLibName );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XNameContainer > ScriptDocument::getOrCreateLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const
+ {
+ return m_pImpl->getOrCreateLibrary( _eType, _rLibName );
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument::loadLibraryIfExists( LibraryContainerType _eType, const ::rtl::OUString& _rLibrary )
+ {
+ m_pImpl->loadLibraryIfExists( _eType, _rLibrary );
+ }
+
+ //--------------------------------------------------------------------
+ Sequence< ::rtl::OUString > ScriptDocument::getObjectNames( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const
+ {
+ Sequence< ::rtl::OUString > aModuleNames;
+
+ try
+ {
+ if ( hasLibrary( _eType, _rLibName ) )
+ {
+ Reference< XNameContainer > xLib( getLibrary( _eType, _rLibName, false ) );
+ if ( xLib.is() )
+ aModuleNames = xLib->getElementNames();
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ // sort
+ ::std::sort( aModuleNames.getArray() , aModuleNames.getArray() + aModuleNames.getLength() , StringCompareLessThan );
+
+ return aModuleNames;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString ScriptDocument::createObjectName( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const
+ {
+ ::rtl::OUString aObjectName;
+
+ ::rtl::OUString aBaseName = _eType == E_SCRIPTS
+ ? ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Module" ) )
+ : ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Dialog" ) );
+
+ Sequence< ::rtl::OUString > aUsedNames( getObjectNames( _eType, _rLibName ) );
+ ::std::set< ::rtl::OUString > aUsedNamesCheck;
+ ::std::copy( aUsedNames.getConstArray(), aUsedNames.getConstArray() + aUsedNames.getLength(),
+ ::std::insert_iterator< ::std::set< ::rtl::OUString > >( aUsedNamesCheck, aUsedNamesCheck.begin() ) );
+
+ bool bValid = false;
+ USHORT i = 1;
+ while ( !bValid )
+ {
+ aObjectName = aBaseName;
+ aObjectName += String::CreateFromInt32( i );
+
+ if ( aUsedNamesCheck.find( aObjectName ) == aUsedNamesCheck.end() )
+ bValid = TRUE;
+
+ ++i;
+ }
+
+ return aObjectName;
+ }
+
+ //--------------------------------------------------------------------
+ Sequence< ::rtl::OUString > ScriptDocument::getLibraryNames() const
+ {
+ return BasicIDE::GetMergedLibraryNames( getLibraryContainer( E_SCRIPTS ), getLibraryContainer( E_DIALOGS ) );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::isReadOnly() const
+ {
+ return m_pImpl->isReadOnly();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::isApplication() const
+ {
+ return m_pImpl->isApplication();
+ }
+
+ bool ScriptDocument::isInVBAMode() const
+ {
+ return m_pImpl->isInVBAMode();
+ }
+
+ //--------------------------------------------------------------------
+ BasicManager* ScriptDocument::getBasicManager() const
+ {
+ return m_pImpl->getBasicManager();
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XModel > ScriptDocument::getDocument() const
+ {
+ return m_pImpl->getDocument();
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XModel > ScriptDocument::getDocumentOrNull() const
+ {
+ if ( isDocument() )
+ return m_pImpl->getDocument();
+ return NULL;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::removeModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModuleName ) const
+ {
+ return m_pImpl->removeModuleOrDialog( E_SCRIPTS, _rLibName, _rModuleName );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::hasModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModuleName ) const
+ {
+ return m_pImpl->hasModuleOrDialog( E_SCRIPTS, _rLibName, _rModuleName );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::getModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, ::rtl::OUString& _out_rModuleSource ) const
+ {
+ Any aCode;
+ if ( !m_pImpl->getModuleOrDialog( E_SCRIPTS, _rLibName, _rModName, aCode ) )
+ return false;
+ OSL_VERIFY( aCode >>= _out_rModuleSource );
+ return true;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::renameModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rOldName, const ::rtl::OUString& _rNewName ) const
+ {
+ return m_pImpl->renameModuleOrDialog( E_SCRIPTS, _rLibName, _rOldName, _rNewName, NULL );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::createModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, bool _bCreateMain, ::rtl::OUString& _out_rNewModuleCode ) const
+ {
+ if ( !m_pImpl->createModule( _rLibName, _rModName, _bCreateMain, _out_rNewModuleCode ) )
+ return false;
+
+ // doc shell modified
+ BasicIDE::MarkDocumentModified( *const_cast< ScriptDocument* >( this ) ); // here?
+ return true;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::insertModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const
+ {
+ return m_pImpl->insertModuleOrDialog( E_SCRIPTS, _rLibName, _rModName, makeAny( _rModuleCode ) );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::updateModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const
+ {
+ return m_pImpl->updateModule( _rLibName, _rModName, _rModuleCode );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::removeDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName ) const
+ {
+ return m_pImpl->removeModuleOrDialog( E_DIALOGS, _rLibName, _rDialogName );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::hasDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName ) const
+ {
+ return m_pImpl->hasModuleOrDialog( E_DIALOGS, _rLibName, _rDialogName );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::getDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName, Reference< XInputStreamProvider >& _out_rDialogProvider ) const
+ {
+ Any aCode;
+ if ( !m_pImpl->getModuleOrDialog( E_DIALOGS, _rLibName, _rDialogName, aCode ) )
+ return false;
+ OSL_VERIFY( aCode >>= _out_rDialogProvider );
+ return _out_rDialogProvider.is();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::renameDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rOldName, const ::rtl::OUString& _rNewName, const Reference< XNameContainer >& _rxExistingDialogModel ) const
+ {
+ return m_pImpl->renameModuleOrDialog( E_DIALOGS, _rLibName, _rOldName, _rNewName, _rxExistingDialogModel );
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::createDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName, Reference< XInputStreamProvider >& _out_rDialogProvider ) const
+ {
+ if ( !m_pImpl->createDialog( _rLibName, _rDialogName, _out_rDialogProvider ) )
+ return false;
+
+ BasicIDE::MarkDocumentModified( *const_cast< ScriptDocument* >( this ) ); // here?
+ return true;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::insertDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName, const Reference< XInputStreamProvider >& _rxDialogProvider ) const
+ {
+ return m_pImpl->insertModuleOrDialog( E_DIALOGS, _rLibName, _rDialogName, makeAny( _rxDialogProvider ) );
+ }
+
+ //--------------------------------------------------------------------
+ void ScriptDocument::setDocumentModified() const
+ {
+ m_pImpl->setDocumentModified();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::isDocumentModified() const
+ {
+ return m_pImpl->isDocumentModified();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::saveDocument( const Reference< XStatusIndicator >& _rxStatusIndicator ) const
+ {
+ return m_pImpl->saveDocument( _rxStatusIndicator );
+ }
+
+ //--------------------------------------------------------------------
+ LibraryLocation ScriptDocument::getLibraryLocation( const ::rtl::OUString& _rLibName ) const
+ {
+ LibraryLocation eLocation = LIBRARY_LOCATION_UNKNOWN;
+ if ( _rLibName.getLength() )
+ {
+ if ( isDocument() )
+ {
+ eLocation = LIBRARY_LOCATION_DOCUMENT;
+ }
+ else
+ {
+ if ( ( hasLibrary( E_SCRIPTS, _rLibName ) && !m_pImpl->isLibraryShared( _rLibName, E_SCRIPTS ) )
+ || ( hasLibrary( E_DIALOGS, _rLibName ) && !m_pImpl->isLibraryShared( _rLibName, E_DIALOGS ) )
+ )
+ {
+ eLocation = LIBRARY_LOCATION_USER;
+ }
+ else
+ {
+ eLocation = LIBRARY_LOCATION_SHARE;
+ }
+ }
+ }
+
+ return eLocation;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString ScriptDocument::getTitle( LibraryLocation _eLocation, LibraryType _eType ) const
+ {
+ ::rtl::OUString aTitle;
+
+ switch ( _eLocation )
+ {
+ case LIBRARY_LOCATION_USER:
+ {
+ switch ( _eType )
+ {
+ case LIBRARY_TYPE_MODULE: aTitle = String( IDEResId( RID_STR_USERMACROS ) ); break;
+ case LIBRARY_TYPE_DIALOG: aTitle = String( IDEResId( RID_STR_USERDIALOGS ) ); break;
+ case LIBRARY_TYPE_ALL: aTitle = String( IDEResId( RID_STR_USERMACROSDIALOGS ) ); break;
+ default:
+ break;
+ }
+ break;
+ case LIBRARY_LOCATION_SHARE:
+ {
+ switch ( _eType )
+ {
+ case LIBRARY_TYPE_MODULE: aTitle = String( IDEResId( RID_STR_SHAREMACROS ) ); break;
+ case LIBRARY_TYPE_DIALOG: aTitle = String( IDEResId( RID_STR_SHAREDIALOGS ) ); break;
+ case LIBRARY_TYPE_ALL: aTitle = String( IDEResId( RID_STR_SHAREMACROSDIALOGS ) ); break;
+ default:
+ break;
+ }
+ }
+ break;
+ case LIBRARY_LOCATION_DOCUMENT:
+ aTitle = getTitle();
+ break;
+ default:
+ break;
+ }
+ }
+
+ return aTitle;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString ScriptDocument::getTitle() const
+ {
+ return m_pImpl->getTitle();
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString ScriptDocument::getURL() const
+ {
+ return m_pImpl->getURL();
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::isActive() const
+ {
+ bool bIsActive( false );
+ try
+ {
+ Reference< XFrame > xFrame;
+ if ( m_pImpl->getCurrentFrame( xFrame ) )
+ bIsActive = xFrame->isActive();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return bIsActive;
+ }
+
+ //--------------------------------------------------------------------
+ bool ScriptDocument::allowMacros() const
+ {
+ return m_pImpl->allowMacros();
+ }
+
+//........................................................................
+} // namespace basctl
+//........................................................................
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/tbxctl.cxx b/basctl/source/basicide/tbxctl.cxx
new file mode 100644
index 000000000000..3f3968524245
--- /dev/null
+++ b/basctl/source/basicide/tbxctl.cxx
@@ -0,0 +1,243 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include <ide_pch.hxx>
+
+
+#define _BASIDE_POPUPWINDOWTBX
+#include <tbxctl.hxx>
+#include <svx/svxids.hrc>
+#include <iderid.hxx>
+#include <tbxctl.hrc>
+#include <idetemp.hxx>
+#include <sfx2/imagemgr.hxx>
+#include <svl/aeitem.hxx>
+#include <vcl/toolbox.hxx>
+
+using namespace ::com::sun::star::uno;
+
+
+static ::rtl::OUString aSubToolBarResName( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertcontrolsbar" ) );
+
+SFX_IMPL_TOOLBOX_CONTROL( TbxControls, SfxAllEnumItem )
+
+/*************************************************************************
+|*
+|* WorkWindow Alignment
+|*
+\************************************************************************/
+/*
+IMPL_LINK( PopupWindowTbx, SelectHdl, void*, EMPTYARG )
+{
+ if ( IsInPopupMode() )
+ EndPopupMode();
+
+ aSelectLink.Call( &aTbx.GetToolBox() );
+
+ return 0;
+}
+
+PopupWindowTbx::PopupWindowTbx( USHORT nId, WindowAlign eAlign,
+ ResId aRIdWin, ResId aRIdTbx,
+ SfxBindings& rBind ) :
+ SfxPopupWindow ( nId, aRIdWin, rBind ),
+ aTbx ( this, GetBindings(), aRIdTbx )
+{
+ FreeResource();
+ aTbx.Initialize();
+
+ ToolBox& rBox = aTbx.GetToolBox();
+ rBox.SetAlign( eAlign );
+ if( eAlign == WINDOWALIGN_LEFT )
+ SetText( String() );
+
+ Size aSize = aTbx.CalcWindowSizePixel();
+ rBox.SetSizePixel( aSize );
+ SetOutputSizePixel( aSize );
+ aSelectLink = rBox.GetSelectHdl();
+ rBox.SetSelectHdl( LINK( this, PopupWindowTbx, SelectHdl ) );
+}
+
+SfxPopupWindow* PopupWindowTbx::Clone() const
+{
+ return new PopupWindowTbx( GetId(), aTbx.GetAlign(),
+ IDEResId( RID_TBXCONTROLS ),
+ IDEResId( RID_TOOLBOX ),
+ (SfxBindings&) GetBindings() );
+}
+
+void PopupWindowTbx::PopupModeEnd()
+{
+ aTbx.GetToolBox().EndSelection();
+ SfxPopupWindow::PopupModeEnd();
+}
+
+void PopupWindowTbx::Update()
+{
+ ToolBox *pBox = &aTbx.GetToolBox();
+ aTbx.Activate( pBox );
+ aTbx.Deactivate( pBox );
+}
+
+PopupWindowTbx::~PopupWindowTbx()
+{
+}
+*/
+/*************************************************************************
+|*
+|* Klasse fuer Toolbox
+|*
+\************************************************************************/
+
+TbxControls::TbxControls( USHORT nSlotId, USHORT nId, ToolBox& rTbx ) :
+ SfxToolBoxControl( nSlotId, nId, rTbx )
+{
+ nLastSlot = USHRT_MAX;
+
+ rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
+ rTbx.Invalidate();
+}
+
+/*************************************************************************
+|*
+|* Wenn man ein PopupWindow erzeugen will
+|*
+\************************************************************************/
+SfxPopupWindowType TbxControls::GetPopupWindowType() const
+{
+ if( nLastSlot == USHRT_MAX )
+ return(SFX_POPUPWINDOW_ONCLICK);
+ return(SFX_POPUPWINDOW_ONTIMEOUT);
+}
+
+void TbxControls::StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState )
+{
+ if( pState )
+ {
+ SfxAllEnumItem* pItem = PTR_CAST(SfxAllEnumItem, pState);
+ if( pItem )
+ {
+ USHORT nLastEnum = pItem->GetValue();
+ USHORT nTemp = 0;
+ switch( nLastEnum )
+ {
+ case SVX_SNAP_PUSHBUTTON: nTemp = SID_INSERT_PUSHBUTTON; break;
+ case SVX_SNAP_CHECKBOX: nTemp = SID_INSERT_CHECKBOX; break;
+ case SVX_SNAP_RADIOBUTTON: nTemp = SID_INSERT_RADIOBUTTON; break;
+ case SVX_SNAP_SPINBUTTON: nTemp = SID_INSERT_SPINBUTTON; break;
+ case SVX_SNAP_FIXEDTEXT: nTemp = SID_INSERT_FIXEDTEXT; break;
+ case SVX_SNAP_GROUPBOX: nTemp = SID_INSERT_GROUPBOX; break;
+ case SVX_SNAP_LISTBOX: nTemp = SID_INSERT_LISTBOX; break;
+ case SVX_SNAP_COMBOBOX: nTemp = SID_INSERT_COMBOBOX; break;
+ case SVX_SNAP_EDIT: nTemp = SID_INSERT_EDIT; break;
+ case SVX_SNAP_HSCROLLBAR: nTemp = SID_INSERT_HSCROLLBAR; break;
+ case SVX_SNAP_VSCROLLBAR: nTemp = SID_INSERT_VSCROLLBAR; break;
+ case SVX_SNAP_PREVIEW: nTemp = SID_INSERT_PREVIEW; break;
+ case SVX_SNAP_URLBUTTON: nTemp = SID_INSERT_URLBUTTON; break;
+ case SVX_SNAP_IMAGECONTROL: nTemp = SID_INSERT_IMAGECONTROL; break;
+ case SVX_SNAP_PROGRESSBAR: nTemp = SID_INSERT_PROGRESSBAR; break;
+ case SVX_SNAP_HFIXEDLINE: nTemp = SID_INSERT_HFIXEDLINE; break;
+ case SVX_SNAP_VFIXEDLINE: nTemp = SID_INSERT_VFIXEDLINE; break;
+ case SVX_SNAP_DATEFIELD: nTemp = SID_INSERT_DATEFIELD; break;
+ case SVX_SNAP_TIMEFIELD: nTemp = SID_INSERT_TIMEFIELD; break;
+ case SVX_SNAP_NUMERICFIELD: nTemp = SID_INSERT_NUMERICFIELD; break;
+ case SVX_SNAP_CURRENCYFIELD: nTemp = SID_INSERT_CURRENCYFIELD; break;
+ case SVX_SNAP_FORMATTEDFIELD: nTemp = SID_INSERT_FORMATTEDFIELD; break;
+ case SVX_SNAP_PATTERNFIELD: nTemp = SID_INSERT_PATTERNFIELD; break;
+ case SVX_SNAP_FILECONTROL: nTemp = SID_INSERT_FILECONTROL; break;
+ case SVX_SNAP_TREECONTROL: nTemp = SID_INSERT_TREECONTROL; break;
+ }
+ if( nTemp )
+ {
+ rtl::OUString aSlotURL( RTL_CONSTASCII_USTRINGPARAM( "slot:" ));
+ aSlotURL += rtl::OUString::valueOf( sal_Int32( nTemp ));
+ Image aImage = GetImage( m_xFrame,
+ aSlotURL,
+ hasBigImages(),
+ GetToolBox().GetSettings().GetStyleSettings().GetHighContrastMode() );
+ ToolBox& rBox = GetToolBox();
+ rBox.SetItemImage(GetId(), aImage);
+ nLastSlot = nLastEnum;
+ }
+ }
+ }
+ SfxToolBoxControl::StateChanged( nSID, eState,pState );
+}
+
+void TbxControls::Select( USHORT nModifier )
+{
+ (void)nModifier;
+ SfxAllEnumItem aItem( SID_CHOOSE_CONTROLS, nLastSlot );
+ SfxViewFrame* pCurFrame = SfxViewFrame::Current();
+ DBG_ASSERT( pCurFrame != NULL, "No current view frame!" );
+ SfxDispatcher* pDispatcher = pCurFrame ? pCurFrame->GetDispatcher() : NULL;
+ if( pDispatcher )
+ {
+ pDispatcher->Execute( SID_CHOOSE_CONTROLS, SFX_CALLMODE_SYNCHRON, &aItem, 0L );
+ }
+}
+
+/*************************************************************************
+|*
+|* Hier wird das Fenster erzeugt
+|* Lage der Toolbox mit GetToolBox() abfragbar
+|* rItemRect sind die Screen-Koordinaten
+|*
+\************************************************************************/
+SfxPopupWindow* TbxControls::CreatePopupWindow()
+{
+ if ( GetSlotId() == SID_CHOOSE_CONTROLS )
+ createAndPositionSubToolBar( aSubToolBarResName );
+
+/*
+ if (GetId() == SID_CHOOSE_CONTROLS)
+ {
+ PopupWindowTbx *pWin =
+ new PopupWindowTbx( GetId(),
+ GetToolBox().IsHorizontal() ?
+ WINDOWALIGN_LEFT : WINDOWALIGN_TOP,
+ IDEResId( RID_TBXCONTROLS ),
+ IDEResId( RID_TOOLBOX ),
+ GetBindings() );
+ pWin->StartPopupMode(&GetToolBox(), TRUE);
+ pWin->Update();
+ pWin->StartSelection();
+ pWin->Show();
+ return(pWin);
+ }
+*/
+ return(0);
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/tbxctl.hrc b/basctl/source/basicide/tbxctl.hrc
new file mode 100644
index 000000000000..2765b5ba8c80
--- /dev/null
+++ b/basctl/source/basicide/tbxctl.hrc
@@ -0,0 +1,30 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include <svl/solar.hrc>
+
+#define RID_TBXCONTROLS ( RID_BASICIDE_START + 65 )
+#define RID_TOOLBOX ( RID_BASICIDE_START + 66 )
diff --git a/basctl/source/basicide/tbxctl.hxx b/basctl/source/basicide/tbxctl.hxx
new file mode 100644
index 000000000000..6a1461c78640
--- /dev/null
+++ b/basctl/source/basicide/tbxctl.hxx
@@ -0,0 +1,95 @@
+/* -*- 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 _BASIDE_TBXCTL_HXX
+#define _BASIDE_TBXCTL_HXX
+
+#include <sfx2/tbxctrl.hxx>
+#include <com/sun/star/frame/XLayoutManager.hpp>
+
+/*
+#ifdef _BASIDE_POPUPWINDOWTBX
+
+// class PopupWindowTbx --------------------------------------------------
+
+class PopupWindowTbx : public SfxPopupWindow
+{
+private:
+ SfxToolBoxManager aTbx;
+ Link aSelectLink;
+
+ DECL_LINK( SelectHdl, void* );
+
+public:
+ PopupWindowTbx( USHORT nId, WindowAlign eAlign,
+ ResId aRIdWin, ResId aRIdTbx, SfxBindings& rBind );
+ ~PopupWindowTbx();
+
+ void StartSelection()
+ { aTbx.GetToolBox().StartSelection(); }
+ void Update();
+
+ virtual SfxPopupWindow* Clone() const;
+ virtual void PopupModeEnd();
+};
+#endif
+*/
+//-------------------
+// class TbxControls
+//-------------------
+class TbxControls : public SfxToolBoxControl
+{
+private:
+
+ struct StateChangedInfo
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
+ bool bDisabled;
+ };
+
+ USHORT nLastSlot;
+
+protected:
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ TbxControls(USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~TbxControls() {}
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+
+ using SfxToolBoxControl::Select;
+ void Select( USHORT nModifier );
+};
+
+
+#endif // _BASIDE_TBXCTL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/tbxctl.src b/basctl/source/basicide/tbxctl.src
new file mode 100644
index 000000000000..89d839619238
--- /dev/null
+++ b/basctl/source/basicide/tbxctl.src
@@ -0,0 +1,273 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "svx/svxids.hrc"
+#include "tbxctl.hrc"
+#include "helpid.hrc"
+FloatingWindow RID_TBXCONTROLS
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpId = HID_BASICIDE_CONTROLS ;
+ Text [ en-US ] = "Controls" ;
+ String RID_TOOLBOX
+ {
+ Text [ en-US ] = "Controls" ;
+ };
+};
+ToolBox RID_TOOLBOX
+{
+ SVLook = TRUE ;
+ // HelpId = HID_BASICIDE_CONTROLS ;
+ LineCount = 2 ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_PUSHBUTTON ;
+ Identifier = SID_INSERT_PUSHBUTTON ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Button" ;
+ /* ### ACHTUNG: Neuer Text in Resource? CommandButton einfügen : CommandButton einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_CHECKBOX ;
+ Identifier = SID_INSERT_CHECKBOX ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Check Box" ;
+ /* ### ACHTUNG: Neuer Text in Resource? CheckBox einfügen : CheckBox einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_FIXEDTEXT ;
+ Identifier = SID_INSERT_FIXEDTEXT ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Label field" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Label einfügen : Label einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_LISTBOX ;
+ Identifier = SID_INSERT_LISTBOX ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "List Box" ;
+ /* ### ACHTUNG: Neuer Text in Resource? ListBox einfügen : ListBox einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_HSCROLLBAR ;
+ Identifier = SID_INSERT_HSCROLLBAR ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Horizontal Scroll Bar" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Horizontale ScrollBar einfügen : Horizontale ScrollBar einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_GROUPBOX ;
+ Identifier = SID_INSERT_GROUPBOX ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Group Box" ;
+ /* ### ACHTUNG: Neuer Text in Resource? GroupBox einfügen : GroupBox einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_HFIXEDLINE ;
+ Identifier = SID_INSERT_HFIXEDLINE ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Horizontal Line" ;
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_DATEFIELD ;
+ Identifier = SID_INSERT_DATEFIELD ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Date Field";
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_NUMERICFIELD ;
+ Identifier = SID_INSERT_NUMERICFIELD ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Numeric Field";
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_FORMATTEDFIELD ;
+ Identifier = SID_INSERT_FORMATTEDFIELD ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Formatted Field";
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_FILECONTROL ;
+ Identifier = SID_INSERT_FILECONTROL ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "File Selection";
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_TREECONTROL ;
+ Identifier = SID_INSERT_TREECONTROL ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Tree Control";
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ HelpId = SID_SHOW_PROPERTYBROWSER ;
+ Identifier = SID_SHOW_PROPERTYBROWSER ;
+ Text [ en-US ] = "Properties" ;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_BREAK ; };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_IMAGECONTROL ;
+ Identifier = SID_INSERT_IMAGECONTROL ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Image Control" ;
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_RADIOBUTTON ;
+ Identifier = SID_INSERT_RADIOBUTTON ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Option Button" ;
+ /* ### ACHTUNG: Neuer Text in Resource? RadioButton einfügen : RadioButton einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_EDIT ;
+ Identifier = SID_INSERT_EDIT ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Text Box" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Edit einfügen : Edit einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_COMBOBOX ;
+ Identifier = SID_INSERT_COMBOBOX ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Combo Box" ;
+ /* ### ACHTUNG: Neuer Text in Resource? ComboBox einfügen : ComboBox einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_VSCROLLBAR ;
+ Identifier = SID_INSERT_VSCROLLBAR ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Vertical Scroll Bar" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Vertikale ScrollBar einfügen : Vertikale ScrollBar einf³gen */
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_PROGRESSBAR ;
+ Identifier = SID_INSERT_PROGRESSBAR ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Progress Bar" ;
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_VFIXEDLINE ;
+ Identifier = SID_INSERT_VFIXEDLINE ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Vertical Line" ;
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_TIMEFIELD ;
+ Identifier = SID_INSERT_TIMEFIELD ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Time Field";
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_CURRENCYFIELD ;
+ Identifier = SID_INSERT_CURRENCYFIELD ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Currency Field";
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_PATTERNFIELD ;
+ Identifier = SID_INSERT_PATTERNFIELD ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Pattern Field";
+ };
+ ToolBoxItem
+ {
+ HelpId = SID_INSERT_SELECT ;
+ Identifier = SID_INSERT_SELECT ;
+ RadioCheck = TRUE ;
+ Text [ en-US ] = "Select" ;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ HelpId = SID_DIALOG_TESTMODE ;
+ Identifier = SID_DIALOG_TESTMODE ;
+ Text [ en-US ] = "Activate Test Mode" ;
+ };
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basctl/source/basicide/unomodel.cxx b/basctl/source/basicide/unomodel.cxx
new file mode 100644
index 000000000000..ab61423b9314
--- /dev/null
+++ b/basctl/source/basicide/unomodel.cxx
@@ -0,0 +1,129 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "unomodel.hxx"
+#include <osl/mutex.hxx>
+#include <vcl/svapp.hxx>
+
+#include <sfx2/docfac.hxx>
+#include <sfx2/objsh.hxx>
+
+#include <iderdll.hxx>
+#include <basdoc.hxx>
+
+using ::rtl::OUString;
+using namespace ::cppu;
+using namespace ::std;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+
+SIDEModel::SIDEModel( SfxObjectShell *pObjSh )
+: SfxBaseModel(pObjSh)
+{
+}
+
+SIDEModel::~SIDEModel()
+{
+}
+
+uno::Any SAL_CALL SIDEModel::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException)
+{
+ uno::Any aRet = ::cppu::queryInterface ( rType,
+ // OWeakObject interfaces
+ static_cast< XInterface* >( static_cast< OWeakObject* >( this ) ),
+ static_cast< XWeak* > ( this ),
+ static_cast< XServiceInfo* > ( this ) );
+ if (!aRet.hasValue())
+ aRet = SfxBaseModel::queryInterface ( rType );
+ return aRet;
+}
+
+void SAL_CALL SIDEModel::acquire() throw()
+{
+ SolarMutexGuard aGuard;
+ OWeakObject::acquire();
+}
+
+void SAL_CALL SIDEModel::release() throw()
+{
+ SolarMutexGuard aGuard;
+ OWeakObject::release();
+}
+
+uno::Sequence< uno::Type > SAL_CALL SIDEModel::getTypes( ) throw(uno::RuntimeException)
+{
+ uno::Sequence< uno::Type > aTypes = SfxBaseModel::getTypes();
+ sal_Int32 nLen = aTypes.getLength();
+ aTypes.realloc(nLen + 1);
+ uno::Type* pTypes = aTypes.getArray();
+ pTypes[nLen++] = ::getCppuType((Reference<XServiceInfo>*)0);
+
+ return aTypes;
+}
+
+OUString SIDEModel::getImplementationName(void) throw( uno::RuntimeException )
+{
+ return getImplementationName_Static();
+}
+
+::rtl::OUString SIDEModel::getImplementationName_Static()
+{
+ return rtl::OUString::createFromAscii("com.sun.star.comp.basic.BasicIDE");
+}
+
+sal_Bool SIDEModel::supportsService(const OUString& rServiceName) throw( uno::RuntimeException )
+{
+ return rServiceName == ::rtl::OUString::createFromAscii("com.sun.star.script.BasicIDE");
+}
+uno::Sequence< OUString > SIDEModel::getSupportedServiceNames(void) throw( uno::RuntimeException )
+{
+ return getSupportedServiceNames_Static();
+}
+
+uno::Sequence< OUString > SIDEModel::getSupportedServiceNames_Static(void)
+{
+ uno::Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = ::rtl::OUString::createFromAscii("com.sun.star.script.BasicIDE");
+ return aRet;
+}
+
+uno::Reference< uno::XInterface > SAL_CALL SIDEModel_createInstance(
+ const uno::Reference< lang::XMultiServiceFactory > & ) throw( uno::Exception )
+{
+ SolarMutexGuard aGuard;
+ BasicIDEDLL::Init();
+ SfxObjectShell* pShell = new BasicDocShell();
+ return uno::Reference< uno::XInterface >( pShell->GetModel() );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/unomodel.hxx b/basctl/source/basicide/unomodel.hxx
new file mode 100644
index 000000000000..bb2b55889f0e
--- /dev/null
+++ b/basctl/source/basicide/unomodel.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 UNOMODEL_HXX
+#define UNOMODEL_HXX
+
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <sfx2/sfxbasemodel.hxx>
+
+//-----------------------------------------------------------------------------
+class SIDEModel : public SfxBaseModel,
+ public com::sun::star::lang::XServiceInfo
+{
+public:
+ SIDEModel( SfxObjectShell *pObjSh = 0 );
+ virtual ~SIDEModel();
+
+ //XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw();
+ virtual void SAL_CALL release( ) throw();
+
+ //XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void)
+ throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL SAL_CALL supportsService(const rtl::OUString& ServiceName)
+ throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void)
+ throw( ::com::sun::star::uno::RuntimeException );
+
+ static ::com::sun::star::uno::Sequence< rtl::OUString > getSupportedServiceNames_Static();
+ static ::rtl::OUString getImplementationName_Static();
+};
+
+com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL SIDEModel_createInstance(
+ const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > & rSMgr )
+ throw( com::sun::star::uno::Exception );
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
new file mode 100644
index 000000000000..324d7d829153
--- /dev/null
+++ b/basctl/source/dlged/dlged.cxx
@@ -0,0 +1,1425 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include "dlged.hxx"
+#include "dlgedfunc.hxx"
+#include "dlgedfac.hxx"
+#include <dlgedmod.hxx>
+#include "dlgedpage.hxx"
+#include "dlgedview.hxx"
+#include "dlgedobj.hxx"
+#include "dlgedclip.hxx"
+#include <dlgeddef.hxx>
+#include "propbrw.hxx"
+#include <localizationmgr.hxx>
+
+#include <basidesh.hxx>
+#include <iderdll.hxx>
+#include <vcl/scrbar.hxx>
+#include <tools/shl.hxx>
+#include <svl/itempool.hxx>
+#include <sfx2/viewfrm.hxx>
+
+#include <svx/svxids.hrc>
+#include <svx/svdpagv.hxx>
+#include <xmlscript/xml_helper.hxx>
+#include <xmlscript/xmldlg_imexp.hxx>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/Property.hpp>
+#include <com/sun/star/awt/XDialog.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+#include <com/sun/star/resource/XStringResourcePersistence.hpp>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/types.hxx>
+#include <vcl/svapp.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+
+// #i74769#
+#include <svx/sdrpaintwindow.hxx>
+
+using namespace comphelper;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::io;
+using ::rtl::OUString;
+
+static ::rtl::OUString aResourceResolverPropName =
+ ::rtl::OUString::createFromAscii( "ResourceResolver" );
+static ::rtl::OUString aDecorationPropName =
+ ::rtl::OUString::createFromAscii( "Decoration" );
+static ::rtl::OUString aTitlePropName =
+ ::rtl::OUString::createFromAscii( "Title" );
+
+
+//============================================================================
+// DlgEdHint
+//============================================================================
+
+TYPEINIT1( DlgEdHint, SfxHint );
+
+//----------------------------------------------------------------------------
+
+DlgEdHint::DlgEdHint( DlgEdHintKind eHint )
+ :eHintKind( eHint )
+{
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdHint::DlgEdHint( DlgEdHintKind eHint, DlgEdObj* pObj )
+ :eHintKind( eHint )
+ ,pDlgEdObj( pObj )
+{
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdHint::~DlgEdHint()
+{
+}
+
+
+//============================================================================
+// DlgEditor
+//============================================================================
+
+void DlgEditor::ShowDialog()
+{
+ uno::Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
+
+ // create a dialog
+ uno::Reference< awt::XControl > xDlg( xMSF->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialog" ) ) ), uno::UNO_QUERY );
+
+ // clone the dialog model
+ uno::Reference< util::XCloneable > xC( m_xUnoControlDialogModel, uno::UNO_QUERY );
+ uno::Reference< util::XCloneable > xNew = xC->createClone();
+ uno::Reference< awt::XControlModel > xDlgMod( xNew, uno::UNO_QUERY );
+
+ uno::Reference< beans::XPropertySet > xSrcDlgModPropSet( m_xUnoControlDialogModel, uno::UNO_QUERY );
+ uno::Reference< beans::XPropertySet > xNewDlgModPropSet( xDlgMod, uno::UNO_QUERY );
+ if( xNewDlgModPropSet.is() )
+ {
+ if( xSrcDlgModPropSet.is() )
+ {
+ try
+ {
+ Any aResourceResolver = xSrcDlgModPropSet->getPropertyValue( aResourceResolverPropName );
+ xNewDlgModPropSet->setPropertyValue( aResourceResolverPropName, aResourceResolver );
+ }
+ catch( UnknownPropertyException& )
+ {
+ DBG_ERROR( "DlgEditor::ShowDialog(): No ResourceResolver property" );
+ }
+ }
+
+ // Disable decoration
+ bool bDecoration = true;
+ try
+ {
+ Any aDecorationAny = xSrcDlgModPropSet->getPropertyValue( aDecorationPropName );
+ aDecorationAny >>= bDecoration;
+ if( !bDecoration )
+ {
+ xNewDlgModPropSet->setPropertyValue( aDecorationPropName, makeAny( true ) );
+ xNewDlgModPropSet->setPropertyValue( aTitlePropName, makeAny( ::rtl::OUString() ) );
+ }
+ }
+ catch( UnknownPropertyException& )
+ {}
+ }
+
+ // set the model
+ xDlg->setModel( xDlgMod );
+
+ // create a peer
+ uno::Reference< awt::XToolkit> xToolkit( xMSF->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.ExtToolkit" ) ) ), uno::UNO_QUERY );
+ xDlg->createPeer( xToolkit, pWindow->GetComponentInterface() );
+
+ uno::Reference< awt::XDialog > xD( xDlg, uno::UNO_QUERY );
+ xD->execute();
+
+ uno::Reference< lang::XComponent > xComponent(xDlg, uno::UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEditor::UnmarkDialog()
+{
+ SdrObject* pDlgObj = pDlgEdModel->GetPage(0)->GetObj(0);
+ SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
+
+ BOOL bWasMarked = pDlgEdView->IsObjMarked( pDlgObj );
+
+ if( bWasMarked )
+ pDlgEdView->MarkObj( pDlgObj, pPgView, TRUE );
+
+ return bWasMarked;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEditor::RemarkDialog()
+{
+ SdrObject* pDlgObj = pDlgEdModel->GetPage(0)->GetObj(0);
+ SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
+
+ BOOL bWasMarked = pDlgEdView->IsObjMarked( pDlgObj );
+
+ if( !bWasMarked )
+ pDlgEdView->MarkObj( pDlgObj, pPgView, FALSE );
+
+ return bWasMarked;
+}
+
+//----------------------------------------------------------------------------
+
+DlgEditor::DlgEditor( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel )
+ :pHScroll(NULL)
+ ,pVScroll(NULL)
+ ,pDlgEdModel(NULL)
+ ,pDlgEdPage(NULL)
+ ,pDlgEdView(NULL)
+ ,pDlgEdForm(NULL)
+ ,m_xUnoControlDialogModel(NULL)
+ ,m_ClipboardDataFlavors(1)
+ ,m_ClipboardDataFlavorsResource(2)
+ ,pObjFac(NULL)
+ ,pWindow(NULL)
+ ,pFunc(NULL)
+ ,eMode( DLGED_SELECT )
+ ,eActObj( OBJ_DLG_PUSHBUTTON )
+ ,bFirstDraw(FALSE)
+ ,aGridSize( 100, 100 ) // 100TH_MM
+ ,bGridVisible(FALSE)
+ ,bGridSnap(TRUE)
+ ,bCreateOK(TRUE)
+ ,bDialogModelChanged(FALSE)
+ ,mnPaintGuard(0)
+ ,m_xDocument( xModel )
+{
+ pDlgEdModel = new DlgEdModel();
+ pDlgEdModel->GetItemPool().FreezeIdRanges();
+ pDlgEdModel->SetScaleUnit( MAP_100TH_MM );
+
+ SdrLayerAdmin& rAdmin = pDlgEdModel->GetLayerAdmin();
+ rAdmin.NewLayer( rAdmin.GetControlLayerName() );
+ rAdmin.NewLayer( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "HiddenLayer" ) ) );
+
+ pDlgEdPage = new DlgEdPage( *pDlgEdModel );
+ pDlgEdModel->InsertPage( pDlgEdPage );
+
+ pObjFac = new DlgEdFactory();
+
+ pFunc = new DlgEdFuncSelect( this );
+
+ // set clipboard data flavors
+ m_ClipboardDataFlavors[0].MimeType = ::rtl::OUString::createFromAscii("application/vnd.sun.xml.dialog");
+ m_ClipboardDataFlavors[0].HumanPresentableName = ::rtl::OUString::createFromAscii("Dialog 6.0");
+ m_ClipboardDataFlavors[0].DataType = ::getCppuType( (const Sequence< sal_Int8 >*) 0 );
+
+ m_ClipboardDataFlavorsResource[0] = m_ClipboardDataFlavors[0];
+ m_ClipboardDataFlavorsResource[1].MimeType = ::rtl::OUString::createFromAscii("application/vnd.sun.xml.dialogwithresource");
+ m_ClipboardDataFlavorsResource[1].HumanPresentableName = ::rtl::OUString::createFromAscii("Dialog 8.0");
+ m_ClipboardDataFlavorsResource[1].DataType = ::getCppuType( (const Sequence< sal_Int8 >*) 0 );
+
+ aPaintTimer.SetTimeout( 1 );
+ aPaintTimer.SetTimeoutHdl( LINK( this, DlgEditor, PaintTimeout ) );
+
+ aMarkTimer.SetTimeout( 100 );
+ aMarkTimer.SetTimeoutHdl( LINK( this, DlgEditor, MarkTimeout ) );
+}
+
+//----------------------------------------------------------------------------
+
+DlgEditor::~DlgEditor()
+{
+ aPaintTimer.Stop();
+ aMarkTimer.Stop();
+
+ ::comphelper::disposeComponent( m_xControlContainer );
+
+ delete pObjFac;
+ delete pFunc;
+ delete pDlgEdView;
+ delete pDlgEdModel;
+}
+
+//----------------------------------------------------------------------------
+
+Reference< awt::XControlContainer > DlgEditor::GetWindowControlContainer()
+{
+ if ( !m_xControlContainer.is() && pWindow )
+ m_xControlContainer = VCLUnoHelper::CreateControlContainer( pWindow );
+ return m_xControlContainer;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::SetWindow( Window* pWindow_ )
+{
+ DlgEditor::pWindow = pWindow_;
+ pWindow_->SetMapMode( MapMode( MAP_100TH_MM ) );
+ pDlgEdPage->SetSize( pWindow_->PixelToLogic( Size( DLGED_PAGE_WIDTH_MIN, DLGED_PAGE_HEIGHT_MIN ) ) );
+
+ pDlgEdView = new DlgEdView( pDlgEdModel, pWindow_, this );
+ pDlgEdView->ShowSdrPage(pDlgEdView->GetModel()->GetPage(0));
+ pDlgEdView->SetLayerVisible( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "HiddenLayer" ) ), FALSE );
+ pDlgEdView->SetMoveSnapOnlyTopLeft( TRUE );
+ pDlgEdView->SetWorkArea( Rectangle( Point( 0, 0 ), pDlgEdPage->GetSize() ) );
+
+ pDlgEdView->SetGridCoarse( aGridSize );
+ pDlgEdView->SetSnapGridWidth(Fraction(aGridSize.Width(), 1), Fraction(aGridSize.Height(), 1));
+ pDlgEdView->SetGridSnap( bGridSnap );
+ pDlgEdView->SetGridVisible( bGridVisible );
+ pDlgEdView->SetDragStripes( FALSE );
+
+ pDlgEdView->SetDesignMode( TRUE );
+
+ ::comphelper::disposeComponent( m_xControlContainer );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::SetScrollBars( ScrollBar* pHS, ScrollBar* pVS )
+{
+ pHScroll = pHS;
+ pVScroll = pVS;
+
+ InitScrollBars();
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::InitScrollBars()
+{
+ DBG_ASSERT( pHScroll, "DlgEditor::InitScrollBars: no horizontal scroll bar!" );
+ DBG_ASSERT( pVScroll, "DlgEditor::InitScrollBars: no vertical scroll bar!" );
+ if ( !pHScroll || !pVScroll )
+ return;
+
+ Size aOutSize = pWindow->GetOutputSize();
+ Size aPgSize = pDlgEdPage->GetSize();
+
+ pHScroll->SetRange( Range( 0, aPgSize.Width() ));
+ pVScroll->SetRange( Range( 0, aPgSize.Height() ));
+ pHScroll->SetVisibleSize( (ULONG)aOutSize.Width() );
+ pVScroll->SetVisibleSize( (ULONG)aOutSize.Height() );
+
+ pHScroll->SetLineSize( aOutSize.Width() / 10 );
+ pVScroll->SetLineSize( aOutSize.Height() / 10 );
+ pHScroll->SetPageSize( aOutSize.Width() / 2 );
+ pVScroll->SetPageSize( aOutSize.Height() / 2 );
+
+ DoScroll( pHScroll );
+ DoScroll( pVScroll );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::DoScroll( ScrollBar* )
+{
+ if( !pHScroll || !pVScroll )
+ return;
+
+ MapMode aMap = pWindow->GetMapMode();
+ Point aOrg = aMap.GetOrigin();
+
+ Size aScrollPos( pHScroll->GetThumbPos(), pVScroll->GetThumbPos() );
+ aScrollPos = pWindow->LogicToPixel( aScrollPos );
+ aScrollPos = pWindow->PixelToLogic( aScrollPos );
+
+ long nX = aScrollPos.Width() + aOrg.X();
+ long nY = aScrollPos.Height() + aOrg.Y();
+
+ if( !nX && !nY )
+ return;
+
+ pWindow->Update();
+
+ // #i31562#
+ // When scrolling, someone was rescuing the Wallpaper and forced the window scroll to
+ // be done without background refresh. I do not know why, but that causes the repaint
+ // problems. Taking that out.
+ // Wallpaper aOldBackground = pWindow->GetBackground();
+ // pWindow->SetBackground();
+
+ // #i74769# children should be scrolled
+ pWindow->Scroll( -nX, -nY, SCROLL_CHILDREN); // SCROLL_NOCHILDREN );
+ aMap.SetOrigin( Point( -aScrollPos.Width(), -aScrollPos.Height() ) );
+ pWindow->SetMapMode( aMap );
+ pWindow->Update();
+
+ // pWindow->SetBackground( aOldBackground );
+
+ DlgEdHint aHint( DLGED_HINT_WINDOWSCROLLED );
+ Broadcast( aHint );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::UpdateScrollBars()
+{
+ MapMode aMap = pWindow->GetMapMode();
+ Point aOrg = aMap.GetOrigin();
+
+ if ( pHScroll )
+ pHScroll->SetThumbPos( -aOrg.X() );
+
+ if ( pVScroll )
+ pVScroll->SetThumbPos( -aOrg.Y() );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::SetDialog( uno::Reference< container::XNameContainer > xUnoControlDialogModel )
+{
+ // set dialog model
+ m_xUnoControlDialogModel = xUnoControlDialogModel;
+
+ // create dialog form
+ pDlgEdForm = new DlgEdForm();
+ uno::Reference< awt::XControlModel > xDlgMod( m_xUnoControlDialogModel , uno::UNO_QUERY );
+ pDlgEdForm->SetUnoControlModel(xDlgMod);
+ pDlgEdForm->SetDlgEditor( this );
+ ((DlgEdPage*)pDlgEdModel->GetPage(0))->SetDlgEdForm( pDlgEdForm );
+ pDlgEdModel->GetPage(0)->InsertObject( pDlgEdForm );
+ AdjustPageSize();
+ pDlgEdForm->SetRectFromProps();
+ pDlgEdForm->UpdateTabIndices(); // for backward compatibility
+ pDlgEdForm->StartListening();
+
+ // create controls
+ Reference< ::com::sun::star::container::XNameAccess > xNameAcc( m_xUnoControlDialogModel, UNO_QUERY );
+ if ( xNameAcc.is() )
+ {
+ // get sequence of control names
+ Sequence< ::rtl::OUString > aNames = xNameAcc->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+
+ // create a map of tab indices and control names, sorted by tab index
+ IndexToNameMap aIndexToNameMap;
+ for ( sal_Int32 i = 0; i < nCtrls; ++i )
+ {
+ // get name
+ ::rtl::OUString aName( pNames[i] );
+
+ // get tab index
+ sal_Int16 nTabIndex = -1;
+ Any aCtrl = xNameAcc->getByName( aName );
+ Reference< ::com::sun::star::beans::XPropertySet > xPSet;
+ aCtrl >>= xPSet;
+ if ( xPSet.is() )
+ xPSet->getPropertyValue( DLGED_PROP_TABINDEX ) >>= nTabIndex;
+
+ // insert into map
+ aIndexToNameMap.insert( IndexToNameMap::value_type( nTabIndex, aName ) );
+ }
+
+ // create controls and insert them into drawing page
+ for ( IndexToNameMap::iterator aIt = aIndexToNameMap.begin(); aIt != aIndexToNameMap.end(); ++aIt )
+ {
+ Any aCtrl = xNameAcc->getByName( aIt->second );
+ Reference< ::com::sun::star::awt::XControlModel > xCtrlModel;
+ aCtrl >>= xCtrlModel;
+ DlgEdObj* pCtrlObj = new DlgEdObj();
+ pCtrlObj->SetUnoControlModel( xCtrlModel );
+ pCtrlObj->SetDlgEdForm( pDlgEdForm );
+ pDlgEdForm->AddChild( pCtrlObj );
+ pDlgEdModel->GetPage(0)->InsertObject( pCtrlObj );
+ pCtrlObj->SetRectFromProps();
+ pCtrlObj->UpdateStep();
+ pCtrlObj->StartListening();
+ }
+ }
+
+ bFirstDraw = TRUE;
+
+ pDlgEdModel->SetChanged( FALSE );
+}
+
+void DlgEditor::ResetDialog( void )
+{
+ DlgEdForm* pOldDlgEdForm = pDlgEdForm;
+ DlgEdPage* pPage = (DlgEdPage*)pDlgEdModel->GetPage(0);
+ SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
+ BOOL bWasMarked = pDlgEdView->IsObjMarked( pOldDlgEdForm );
+ pDlgEdView->UnmarkAll();
+ pPage->Clear();
+ pPage->SetDlgEdForm( NULL );
+ SetDialog( m_xUnoControlDialogModel );
+ if( bWasMarked )
+ pDlgEdView->MarkObj( pDlgEdForm, pPgView, FALSE );
+}
+
+
+//----------------------------------------------------------------------------
+
+Reference< util::XNumberFormatsSupplier > const & DlgEditor::GetNumberFormatsSupplier()
+{
+ if ( !m_xSupplier.is() )
+ {
+ Reference< lang::XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
+ Reference< util::XNumberFormatsSupplier > xSupplier( xMSF->createInstance(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.util.NumberFormatsSupplier") ) ), UNO_QUERY );
+
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if ( !m_xSupplier.is() )
+ {
+ m_xSupplier = xSupplier;
+ }
+ }
+ return m_xSupplier;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if( pWindow )
+ pWindow->GrabFocus();
+ pFunc->MouseButtonDown( rMEvt );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ BOOL bRet = pFunc->MouseButtonUp( rMEvt );
+
+ if( (eMode == DLGED_INSERT) )
+ bCreateOK = bRet;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::MouseMove( const MouseEvent& rMEvt )
+{
+ pFunc->MouseMove( rMEvt );
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEditor::KeyInput( const KeyEvent& rKEvt )
+{
+ return pFunc->KeyInput( rKEvt );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::Paint( const Rectangle& rRect )
+{
+ aPaintRect = rRect;
+ PaintTimeout( &aPaintTimer );
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( DlgEditor, PaintTimeout, Timer *, EMPTYARG )
+{
+ if( !pDlgEdView )
+ return 0;
+
+ mnPaintGuard++;
+
+ Size aMacSize;
+ if( bFirstDraw &&
+ pWindow->IsVisible() &&
+ (pWindow->GetOutputSize() != aMacSize) )
+ {
+ bFirstDraw = FALSE;
+
+ // get property set
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPSet(pDlgEdForm->GetUnoControlModel(), ::com::sun::star::uno::UNO_QUERY);
+
+ if ( xPSet.is() )
+ {
+ // get dialog size from properties
+ sal_Int32 nWidth = 0, nHeight = 0;
+ xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nWidth;
+ xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nHeight;
+
+ if ( nWidth == 0 && nHeight == 0 )
+ {
+ Size aSize = pWindow->PixelToLogic( Size( 400, 300 ) );
+
+ // align with grid
+ Size aGridSize_(long(pDlgEdView->GetSnapGridWidthX()), long(pDlgEdView->GetSnapGridWidthY()));
+ aSize.Width() -= aSize.Width() % aGridSize_.Width();
+ aSize.Height() -= aSize.Height() % aGridSize_.Height();
+
+ Point aPos;
+ Size aOutSize = pWindow->GetOutputSize();
+ aPos.X() = (aOutSize.Width()>>1) - (aSize.Width()>>1);
+ aPos.Y() = (aOutSize.Height()>>1) - (aSize.Height()>>1);
+
+ // align with grid
+ aPos.X() -= aPos.X() % aGridSize_.Width();
+ aPos.Y() -= aPos.Y() % aGridSize_.Height();
+
+ // don't put in the corner
+ Point aMinPos = pWindow->PixelToLogic( Point( 30, 20 ) );
+ if( (aPos.X() < aMinPos.X()) || (aPos.Y() < aMinPos.Y()) )
+ {
+ aPos = aMinPos;
+ aPos.X() -= aPos.X() % aGridSize_.Width();
+ aPos.Y() -= aPos.Y() % aGridSize_.Height();
+ }
+
+ // set dialog position and size
+ pDlgEdForm->SetSnapRect( Rectangle( aPos, aSize ) );
+ pDlgEdForm->EndListening(sal_False);
+ pDlgEdForm->SetPropsFromRect();
+ pDlgEdForm->GetDlgEditor()->SetDialogModelChanged(TRUE);
+ pDlgEdForm->StartListening();
+
+ // set position and size of controls
+ ULONG nObjCount;
+ if ( pDlgEdPage && ( ( nObjCount = pDlgEdPage->GetObjCount() ) > 0 ) )
+ {
+ for ( ULONG i = 0 ; i < nObjCount ; i++ )
+ {
+ SdrObject* pObj = pDlgEdPage->GetObj(i);
+ DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
+ if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
+ pDlgEdObj->SetRectFromProps();
+ }
+ }
+ }
+ }
+ }
+
+ // repaint, get PageView and prepare Region
+ SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
+ const Region aPaintRectRegion(aPaintRect);
+
+
+ // #i74769#
+ SdrPaintWindow* pTargetPaintWindow = 0;
+
+ // mark repaint start
+ if(pPgView)
+ {
+ pTargetPaintWindow = pPgView->GetView().BeginDrawLayers(pWindow, aPaintRectRegion);
+ OSL_ENSURE(pTargetPaintWindow, "BeginDrawLayers: Got no SdrPaintWindow (!)");
+ }
+
+ // draw background self using wallpaper
+ // #i79128# ...and use correct OutDev for that
+ if(pTargetPaintWindow)
+ {
+ OutputDevice& rTargetOutDev = pTargetPaintWindow->GetTargetOutputDevice();
+ rTargetOutDev.DrawWallpaper(aPaintRect, Wallpaper(Color(COL_WHITE)));
+ }
+
+ // do paint (unbuffered) and mark repaint end
+ if(pPgView)
+ {
+ // paint of control layer is done in EndDrawLayers anyway...
+ pPgView->GetView().EndDrawLayers(*pTargetPaintWindow, true);
+ }
+
+ mnPaintGuard--;
+
+ DBG_ASSERT(pWindow,"Window not set");
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( DlgEditor, MarkTimeout, Timer *, EMPTYARG )
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ SfxChildWindow* pChildWin = pViewFrame ? pViewFrame->GetChildWindow( SID_SHOW_PROPERTYBROWSER ) : NULL;
+ if ( !pChildWin )
+ return 0L;
+
+ ((PropBrw*)(pChildWin->GetWindow()))->Update( pIDEShell );
+
+ return 1;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::SetMode( DlgEdMode eNewMode )
+{
+ if ( eNewMode != eMode )
+ {
+ delete pFunc;
+
+ if ( eNewMode == DLGED_INSERT )
+ pFunc = new DlgEdFuncInsert( this );
+ else
+ pFunc = new DlgEdFuncSelect( this );
+
+ if ( eNewMode == DLGED_READONLY )
+ pDlgEdModel->SetReadOnly( TRUE );
+ else
+ pDlgEdModel->SetReadOnly( FALSE );
+ }
+
+ if ( eNewMode == DLGED_TEST )
+ ShowDialog();
+
+ eMode = eNewMode;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::SetInsertObj( USHORT eObj )
+{
+ eActObj = eObj;
+
+ if( pDlgEdView )
+ pDlgEdView->SetCurrentObj( eActObj, DlgInventor );
+}
+
+//----------------------------------------------------------------------------
+
+USHORT DlgEditor::GetInsertObj() const
+{
+ return eActObj;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::CreateDefaultObject()
+{
+ // create object by factory
+ SdrObject* pObj = SdrObjFactory::MakeNewObject( pDlgEdView->GetCurrentObjInventor(), pDlgEdView->GetCurrentObjIdentifier(), pDlgEdPage );
+
+ DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
+ if ( pDlgEdObj )
+ {
+ // set position and size
+ Size aSize = pWindow->PixelToLogic( Size( 96, 24 ) );
+ Point aPoint = (pDlgEdForm->GetSnapRect()).Center();
+ aPoint.X() -= aSize.Width() / 2;
+ aPoint.Y() -= aSize.Height() / 2;
+ pDlgEdObj->SetSnapRect( Rectangle( aPoint, aSize ) );
+
+ // set default property values
+ pDlgEdObj->SetDefaults();
+
+ // insert object into drawing page
+ SdrPageView* pPageView = pDlgEdView->GetSdrPageView();
+ pDlgEdView->InsertObjectAtView( pDlgEdObj, *pPageView);
+
+ // start listening
+ pDlgEdObj->StartListening();
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::Cut()
+{
+ Copy();
+ Delete();
+}
+
+//----------------------------------------------------------------------------
+
+void implCopyStreamToByteSequence( Reference< XInputStream > xStream,
+ Sequence< sal_Int8 >& bytes )
+{
+ sal_Int32 nRead = xStream->readBytes( bytes, xStream->available() );
+ for (;;)
+ {
+ Sequence< sal_Int8 > readBytes;
+ nRead = xStream->readBytes( readBytes, 1024 );
+ if (! nRead)
+ break;
+
+ sal_Int32 nPos = bytes.getLength();
+ bytes.realloc( nPos + nRead );
+ ::rtl_copyMemory( bytes.getArray() + nPos, readBytes.getConstArray(), (sal_uInt32)nRead );
+ }
+}
+
+void DlgEditor::Copy()
+{
+ if( !pDlgEdView->AreObjectsMarked() )
+ return;
+
+ // stop all drawing actions
+ pDlgEdView->BrkAction();
+
+ // create an empty clipboard dialog model
+ Reference< util::XCloneable > xClone( m_xUnoControlDialogModel, UNO_QUERY );
+ Reference< util::XCloneable > xNewClone = xClone->createClone();
+ Reference< container::XNameContainer > xClipDialogModel( xNewClone, UNO_QUERY );
+
+ Reference< container::XNameAccess > xNAcc( xClipDialogModel, UNO_QUERY );
+ if ( xNAcc.is() )
+ {
+ Sequence< OUString > aNames = xNAcc->getElementNames();
+ const OUString* pNames = aNames.getConstArray();
+ sal_uInt32 nCtrls = aNames.getLength();
+
+ for ( sal_uInt32 n = 0; n < nCtrls; n++ )
+ {
+ xClipDialogModel->removeByName( pNames[n] );
+ }
+ }
+
+ // insert control models of marked objects into clipboard dialog model
+ ULONG nMark = pDlgEdView->GetMarkedObjectList().GetMarkCount();
+ for( ULONG i = 0; i < nMark; i++ )
+ {
+ SdrObject* pObj = pDlgEdView->GetMarkedObjectList().GetMark(i)->GetMarkedSdrObj();
+ DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
+
+ if (pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
+ {
+ ::rtl::OUString aName;
+ Reference< beans::XPropertySet > xMarkPSet(pDlgEdObj->GetUnoControlModel(), uno::UNO_QUERY);
+ if (xMarkPSet.is())
+ {
+ xMarkPSet->getPropertyValue( DLGED_PROP_NAME ) >>= aName;
+ }
+
+ Reference< container::XNameAccess > xNameAcc(m_xUnoControlDialogModel, UNO_QUERY );
+ if ( xNameAcc.is() && xNameAcc->hasByName(aName) )
+ {
+ Any aCtrl = xNameAcc->getByName( aName );
+
+ // clone control model
+ Reference< util::XCloneable > xCtrl;
+ aCtrl >>= xCtrl;
+ Reference< util::XCloneable > xNewCtrl = xCtrl->createClone();
+ Any aNewCtrl;
+ aNewCtrl <<= xNewCtrl;
+
+ if (xClipDialogModel.is())
+ xClipDialogModel->insertByName( aName , aNewCtrl );
+ }
+ }
+ }
+
+ // export clipboard dialog model to xml
+ Reference< XComponentContext > xContext;
+ Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
+ OSL_ASSERT( xProps.is() );
+ OSL_VERIFY( xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xClipDialogModel, xContext, m_xDocument );
+ Reference< XInputStream > xStream( xISP->createInputStream() );
+ Sequence< sal_Int8 > DialogModelBytes;
+ implCopyStreamToByteSequence( xStream, DialogModelBytes );
+ xStream->closeInput();
+
+ // set clipboard content
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ // With resource?
+ uno::Reference< beans::XPropertySet > xDialogModelPropSet( m_xUnoControlDialogModel, uno::UNO_QUERY );
+ uno::Reference< resource::XStringResourcePersistence > xStringResourcePersistence;
+ if( xDialogModelPropSet.is() )
+ {
+ try
+ {
+ Any aResourceResolver = xDialogModelPropSet->getPropertyValue( aResourceResolverPropName );
+ aResourceResolver >>= xStringResourcePersistence;
+ }
+ catch( UnknownPropertyException& )
+ {}
+ }
+
+ DlgEdTransferableImpl* pTrans = NULL;
+ if( xStringResourcePersistence.is() )
+ {
+ // With resource, support old and new format
+
+ // Export xClipDialogModel another time with ids replaced by current language string
+ uno::Reference< resource::XStringResourceManager >
+ xStringResourceManager( xStringResourcePersistence, uno::UNO_QUERY );
+ LocalizationMgr::resetResourceForDialog( xClipDialogModel, xStringResourceManager );
+ Reference< XInputStreamProvider > xISP2 = ::xmlscript::exportDialogModel( xClipDialogModel, xContext, m_xDocument );
+ Reference< XInputStream > xStream2( xISP2->createInputStream() );
+ Sequence< sal_Int8 > NoResourceDialogModelBytes;
+ implCopyStreamToByteSequence( xStream2, NoResourceDialogModelBytes );
+ xStream2->closeInput();
+
+ // Old format contains dialog with replaced ids
+ Sequence< Any > aSeqData(2);
+ Any aNoResourceDialogModelBytesAny;
+ aNoResourceDialogModelBytesAny <<= NoResourceDialogModelBytes;
+ aSeqData[0] = aNoResourceDialogModelBytesAny;
+
+ // New format contains dialog and resource
+ Sequence< sal_Int8 > aResData = xStringResourcePersistence->exportBinary();
+
+ // Create sequence for combined dialog and resource
+ sal_Int32 nDialogDataLen = DialogModelBytes.getLength();
+ sal_Int32 nResDataLen = aResData.getLength();
+
+ // Combined data = 4 Bytes 32Bit Offset to begin of resource data, lowest byte first
+ // + nDialogDataLen bytes dialog data + nResDataLen resource data
+ sal_Int32 nTotalLen = 4 + nDialogDataLen + nResDataLen;
+ sal_Int32 nResOffset = 4 + nDialogDataLen;
+ Sequence< sal_Int8 > aCombinedData( nTotalLen );
+ sal_Int8* pCombinedData = aCombinedData.getArray();
+
+ // Write offset
+ sal_Int32 n = nResOffset;
+ for( sal_Int16 i = 0 ; i < 4 ; i++ )
+ {
+ pCombinedData[i] = sal_Int8( n & 0xff );
+ n >>= 8;
+ }
+ ::rtl_copyMemory( pCombinedData + 4, DialogModelBytes.getConstArray(), nDialogDataLen );
+ ::rtl_copyMemory( pCombinedData + nResOffset, aResData.getConstArray(), nResDataLen );
+
+ Any aCombinedDataAny;
+ aCombinedDataAny <<= aCombinedData;
+ aSeqData[1] = aCombinedDataAny;
+
+ pTrans = new DlgEdTransferableImpl( m_ClipboardDataFlavorsResource, aSeqData );
+ }
+ else
+ {
+ // No resource, support only old format
+ Sequence< Any > aSeqData(1);
+ Any aDialogModelBytesAny;
+ aDialogModelBytesAny <<= DialogModelBytes;
+ aSeqData[0] = aDialogModelBytesAny;
+ pTrans = new DlgEdTransferableImpl( m_ClipboardDataFlavors , aSeqData );
+ }
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ xClipboard->setContents( pTrans , pTrans );
+ Application::AcquireSolarMutex( nRef );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::Paste()
+{
+ // stop all drawing actions
+ pDlgEdView->BrkAction();
+
+ // unmark all objects
+ pDlgEdView->UnmarkAll();
+
+ // get clipboard
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ // get clipboard content
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ Reference< datatransfer::XTransferable > xTransf = xClipboard->getContents();
+ Application::AcquireSolarMutex( nRef );
+ if ( xTransf.is() )
+ {
+ // Is target dialog (library) localized?
+ uno::Reference< beans::XPropertySet > xDialogModelPropSet( m_xUnoControlDialogModel, uno::UNO_QUERY );
+ uno::Reference< resource::XStringResourceManager > xStringResourceManager;
+ if( xDialogModelPropSet.is() )
+ {
+ try
+ {
+ Any aResourceResolver = xDialogModelPropSet->getPropertyValue( aResourceResolverPropName );
+ aResourceResolver >>= xStringResourceManager;
+ }
+ catch( UnknownPropertyException& )
+ {}
+ }
+ bool bLocalized = false;
+ if( xStringResourceManager.is() )
+ bLocalized = ( xStringResourceManager->getLocales().getLength() > 0 );
+
+ if ( xTransf->isDataFlavorSupported( m_ClipboardDataFlavors[0] ) )
+ {
+ // create clipboard dialog model from xml
+ Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
+ Reference< container::XNameContainer > xClipDialogModel( xMSF->createInstance
+ ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ),
+ uno::UNO_QUERY );
+
+ bool bSourceIsLocalized = false;
+ Sequence< sal_Int8 > DialogModelBytes;
+ Sequence< sal_Int8 > aResData;
+ if( bLocalized && xTransf->isDataFlavorSupported( m_ClipboardDataFlavorsResource[1] ) )
+ {
+ bSourceIsLocalized = true;
+
+ Any aCombinedDataAny = xTransf->getTransferData( m_ClipboardDataFlavorsResource[1] );
+ Sequence< sal_Int8 > aCombinedData;
+ aCombinedDataAny >>= aCombinedData;
+ const sal_Int8* pCombinedData = aCombinedData.getConstArray();
+
+ sal_Int32 nTotalLen = aCombinedData.getLength();
+
+ // Reading offset
+ sal_Int32 nResOffset = 0;
+ sal_Int32 nFactor = 1;
+ for( sal_Int16 i = 0; i < 4; i++ )
+ {
+ nResOffset += nFactor * sal_uInt8( pCombinedData[i] );
+ nFactor *= 256;
+ }
+
+ sal_Int32 nResDataLen = nTotalLen - nResOffset;
+ sal_Int32 nDialogDataLen = nTotalLen - nResDataLen - 4;
+
+ DialogModelBytes.realloc( nDialogDataLen );
+ ::rtl_copyMemory( DialogModelBytes.getArray(), pCombinedData + 4, nDialogDataLen );
+
+ aResData.realloc( nResDataLen );
+ ::rtl_copyMemory( aResData.getArray(), pCombinedData + nResOffset, nResDataLen );
+ }
+ else
+ {
+ Any aAny = xTransf->getTransferData( m_ClipboardDataFlavors[0] );
+ aAny >>= DialogModelBytes;
+ }
+
+ if ( xClipDialogModel.is() )
+ {
+ Reference< XComponentContext > xContext;
+ Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
+ OSL_ASSERT( xProps.is() );
+ OSL_VERIFY( xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
+ ::xmlscript::importDialogModel( ::xmlscript::createInputStream( rtl::ByteSequence(DialogModelBytes.getArray(), DialogModelBytes.getLength()) ) , xClipDialogModel, xContext, m_xDocument );
+ }
+
+ // get control models from clipboard dialog model
+ Reference< ::com::sun::star::container::XNameAccess > xNameAcc( xClipDialogModel, UNO_QUERY );
+ if ( xNameAcc.is() )
+ {
+ Sequence< OUString > aNames = xNameAcc->getElementNames();
+ const OUString* pNames = aNames.getConstArray();
+ sal_uInt32 nCtrls = aNames.getLength();
+
+ Reference< resource::XStringResourcePersistence > xStringResourcePersistence;
+ if( nCtrls > 0 && bSourceIsLocalized )
+ {
+ Reference< lang::XMultiServiceFactory > xSMgr = getProcessServiceFactory();
+ xStringResourcePersistence = Reference< resource::XStringResourcePersistence >( xSMgr->createInstance
+ ( ::rtl::OUString::createFromAscii( "com.sun.star.resource.StringResource" ) ), UNO_QUERY );
+ if( xStringResourcePersistence.is() )
+ xStringResourcePersistence->importBinary( aResData );
+ }
+ for( sal_uInt32 n = 0; n < nCtrls; n++ )
+ {
+ Any aA = xNameAcc->getByName( pNames[n] );
+ Reference< ::com::sun::star::awt::XControlModel > xCM;
+ aA >>= xCM;
+
+ // clone the control model
+ Reference< util::XCloneable > xClone( xCM, uno::UNO_QUERY );
+ Reference< awt::XControlModel > xCtrlModel( xClone->createClone(), uno::UNO_QUERY );
+
+ DlgEdObj* pCtrlObj = new DlgEdObj();
+ pCtrlObj->SetDlgEdForm(pDlgEdForm); // set parent form
+ pDlgEdForm->AddChild(pCtrlObj); // add child to parent form
+ pCtrlObj->SetUnoControlModel( xCtrlModel ); // set control model
+
+ // set new name
+ ::rtl::OUString aOUniqueName( pCtrlObj->GetUniqueName() );
+ Reference< beans::XPropertySet > xPSet( xCtrlModel , UNO_QUERY );
+ Any aUniqueName;
+ aUniqueName <<= aOUniqueName;
+ xPSet->setPropertyValue( DLGED_PROP_NAME, aUniqueName );
+
+ // set tabindex
+ Reference< container::XNameAccess > xNA( m_xUnoControlDialogModel , UNO_QUERY );
+ Sequence< OUString > aNames_ = xNA->getElementNames();
+ Any aTabIndex;
+ aTabIndex <<= (sal_Int16) aNames_.getLength();
+ xPSet->setPropertyValue( DLGED_PROP_TABINDEX, aTabIndex );
+
+ if( bLocalized )
+ {
+ Any aControlAny;
+ aControlAny <<= xCtrlModel;
+ if( bSourceIsLocalized && xStringResourcePersistence.is() )
+ {
+ Reference< resource::XStringResourceResolver >
+ xSourceStringResolver( xStringResourcePersistence, UNO_QUERY );
+ LocalizationMgr::copyResourcesForPastedEditorObject( this,
+ aControlAny, aOUniqueName, xSourceStringResolver );
+ }
+ else
+ {
+ LocalizationMgr::setControlResourceIDsForNewEditorObject
+ ( this, aControlAny, aOUniqueName );
+ }
+ }
+
+ // insert control model in editor dialog model
+ Any aCtrlModel;
+ aCtrlModel <<= xCtrlModel;
+ m_xUnoControlDialogModel->insertByName( aOUniqueName , aCtrlModel );
+
+ // insert object into drawing page
+ pDlgEdModel->GetPage(0)->InsertObject( pCtrlObj );
+ pCtrlObj->SetRectFromProps();
+ pCtrlObj->UpdateStep();
+ pDlgEdForm->UpdateTabOrderAndGroups(); // #110559#
+ pCtrlObj->StartListening(); // start listening
+
+ // mark object
+ SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
+ pDlgEdView->MarkObj( pCtrlObj, pPgView, FALSE, TRUE);
+ }
+
+ // center marked objects in dialog editor form
+ Point aMarkCenter = (pDlgEdView->GetMarkedObjRect()).Center();
+ Point aFormCenter = (pDlgEdForm->GetSnapRect()).Center();
+ Point aPoint = aFormCenter - aMarkCenter;
+ Size aSize( aPoint.X() , aPoint.Y() );
+ pDlgEdView->MoveMarkedObj( aSize ); // update of control model properties (position + size) in NbcMove
+ pDlgEdView->MarkListHasChanged();
+
+ // dialog model changed
+ SetDialogModelChanged(TRUE);
+ }
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::Delete()
+{
+ if( !pDlgEdView->AreObjectsMarked() )
+ return;
+
+ // remove control models of marked objects from dialog model
+ ULONG nMark = pDlgEdView->GetMarkedObjectList().GetMarkCount();
+
+ for( ULONG i = 0; i < nMark; i++ )
+ {
+ SdrObject* pObj = pDlgEdView->GetMarkedObjectList().GetMark(i)->GetMarkedSdrObj();
+ DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
+
+ if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
+ {
+ // get name from property
+ ::rtl::OUString aName;
+ uno::Reference< beans::XPropertySet > xPSet(pDlgEdObj->GetUnoControlModel(), uno::UNO_QUERY);
+ if (xPSet.is())
+ {
+ xPSet->getPropertyValue( DLGED_PROP_NAME ) >>= aName;
+ }
+
+ // remove control from dialog model
+ Reference< ::com::sun::star::container::XNameAccess > xNameAcc(pDlgEdObj->GetDlgEdForm()->GetUnoControlModel(), UNO_QUERY );
+ if ( xNameAcc.is() && xNameAcc->hasByName(aName) )
+ {
+ Reference< ::com::sun::star::container::XNameContainer > xCont(xNameAcc, UNO_QUERY );
+ if ( xCont.is() )
+ {
+ if( xCont->hasByName( aName ) )
+ {
+ Any aAny = xCont->getByName( aName );
+ LocalizationMgr::deleteControlResourceIDsForDeletedEditorObject( this, aAny, aName );
+ }
+ xCont->removeByName( aName );
+ }
+ }
+
+ // remove child from parent form
+ pDlgEdForm->RemoveChild( pDlgEdObj );
+ }
+ }
+
+ // update tab indices
+ pDlgEdForm->UpdateTabIndices();
+
+ pDlgEdView->BrkAction();
+
+ BOOL bDlgMarked = UnmarkDialog();
+ pDlgEdView->DeleteMarked();
+ if( bDlgMarked )
+ RemarkDialog();
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEditor::IsPasteAllowed()
+{
+ BOOL bPaste = FALSE;
+
+ // get clipboard
+ Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
+ if ( xClipboard.is() )
+ {
+ // get clipboard content
+ const sal_uInt32 nRef = Application::ReleaseSolarMutex();
+ Reference< datatransfer::XTransferable > xTransf = xClipboard->getContents();
+ Application::AcquireSolarMutex( nRef );
+ if ( xTransf.is() )
+ {
+ if ( xTransf->isDataFlavorSupported( m_ClipboardDataFlavors[0] ) )
+ {
+ bPaste = TRUE;
+ }
+ }
+ }
+
+ return bPaste;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::ShowProperties()
+{
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
+ if ( pViewFrame && !pViewFrame->HasChildWindow( SID_SHOW_PROPERTYBROWSER ) )
+ pViewFrame->ToggleChildWindow( SID_SHOW_PROPERTYBROWSER );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::UpdatePropertyBrowserDelayed()
+{
+ aMarkTimer.Start();
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEditor::IsModified() const
+{
+ return pDlgEdModel->IsChanged() || bDialogModelChanged;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::ClearModifyFlag()
+{
+ pDlgEdModel->SetChanged( FALSE );
+ bDialogModelChanged = FALSE;
+}
+
+//----------------------------------------------------------------------------
+
+#define LMARGPRN 1700
+#define RMARGPRN 900
+#define TMARGPRN 2000
+#define BMARGPRN 1000
+#define BORDERPRN 300
+
+//----------------------------------------------------------------------------
+
+void lcl_PrintHeader( Printer* pPrinter, const String& rTitle ) // not working yet
+{
+ pPrinter->Push();
+
+ short nLeftMargin = LMARGPRN;
+ Size aSz = pPrinter->GetOutputSize();
+ short nBorder = BORDERPRN;
+
+ pPrinter->SetLineColor( COL_BLACK );
+ pPrinter->SetFillColor();
+
+ Font aFont( pPrinter->GetFont() );
+ aFont.SetWeight( WEIGHT_BOLD );
+ aFont.SetAlign( ALIGN_BOTTOM );
+ pPrinter->SetFont( aFont );
+
+ long nFontHeight = pPrinter->GetTextHeight();
+
+ // 1.Border => Strich, 2+3 Border = Freiraum.
+ long nYTop = TMARGPRN-3*nBorder-nFontHeight;
+
+ long nXLeft = nLeftMargin-nBorder;
+ long nXRight = aSz.Width()-RMARGPRN+nBorder;
+
+ pPrinter->DrawRect( Rectangle(
+ Point( nXLeft, nYTop ),
+ Size( nXRight-nXLeft, aSz.Height() - nYTop - BMARGPRN + nBorder ) ) );
+
+ long nY = TMARGPRN-2*nBorder;
+ Point aPos( nLeftMargin, nY );
+ pPrinter->DrawText( aPos, rTitle );
+
+ nY = TMARGPRN-nBorder;
+
+ pPrinter->DrawLine( Point( nXLeft, nY ), Point( nXRight, nY ) );
+
+ pPrinter->Pop();
+}
+
+//----------------------------------------------------------------------------
+
+sal_Int32 DlgEditor::countPages( Printer* )
+{
+ return 1;
+}
+
+void DlgEditor::printPage( sal_Int32 nPage, Printer* pPrinter, const String& rTitle )
+{
+ if( nPage == 0 )
+ Print( pPrinter, rTitle );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEditor::Print( Printer* pPrinter, const String& rTitle ) // not working yet
+{
+ if( pDlgEdView )
+ {
+ MapMode aOldMap( pPrinter->GetMapMode());
+ Font aOldFont( pPrinter->GetFont() );
+
+ MapMode aMap( MAP_100TH_MM );
+ pPrinter->SetMapMode( aMap );
+ Font aFont;
+#ifdef OS2
+ //aFont.SetName( System::GetStandardFont( STDFONT_SWISS ).GetName() );
+#endif
+ aFont.SetAlign( ALIGN_BOTTOM );
+ aFont.SetSize( Size( 0, 360 ));
+ pPrinter->SetFont( aFont );
+
+ Size aPaperSz = pPrinter->GetOutputSize();
+ aPaperSz.Width() -= (LMARGPRN+RMARGPRN);
+ aPaperSz.Height() -= (TMARGPRN+BMARGPRN);
+
+ lcl_PrintHeader( pPrinter, rTitle );
+
+ Bitmap aDlg;
+#ifdef OS2
+ Bitmap* pDlg = new Bitmap;
+ //pSbxForm->SnapShot( *pDlg );
+ SvMemoryStream* pStrm = new SvMemoryStream;
+ *pStrm << *pDlg;
+ delete pDlg;
+ pStrm->Seek(0);
+ *pStrm >> aDlg;
+ delete pStrm;
+#else
+ //pSbxForm->SnapShot( aDlg );
+#endif
+ Size aBmpSz( pPrinter->PixelToLogic( aDlg.GetSizePixel() ) );
+ double nPaperSzWidth = aPaperSz.Width();
+ double nPaperSzHeight = aPaperSz.Height();
+ double nBmpSzWidth = aBmpSz.Width();
+ double nBmpSzHeight = aBmpSz.Height();
+ double nScaleX = (nPaperSzWidth / nBmpSzWidth );
+ double nScaleY = (nPaperSzHeight / nBmpSzHeight );
+
+ Size aOutputSz;
+ if( nBmpSzHeight * nScaleX <= nPaperSzHeight )
+ {
+ aOutputSz.Width() = (long)(((double)nBmpSzWidth) * nScaleX);
+ aOutputSz.Height() = (long)(((double)nBmpSzHeight) * nScaleX);
+ }
+ else
+ {
+ aOutputSz.Width() = (long)(((double)nBmpSzWidth) * nScaleY);
+ aOutputSz.Height() = (long)(((double)nBmpSzHeight) * nScaleY);
+ }
+
+ Point aPosOffs(
+ (aPaperSz.Width() / 2) - (aOutputSz.Width() / 2),
+ (aPaperSz.Height()/ 2) - (aOutputSz.Height() / 2));
+
+ aPosOffs.X() += LMARGPRN;
+ aPosOffs.Y() += TMARGPRN;
+
+ pPrinter->DrawBitmap( aPosOffs, aOutputSz, aDlg );
+
+ pPrinter->SetMapMode( aOldMap );
+ pPrinter->SetFont( aOldFont );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+bool DlgEditor::AdjustPageSize()
+{
+ bool bAdjustedPageSize = false;
+ Reference< beans::XPropertySet > xPSet( m_xUnoControlDialogModel, UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ sal_Int32 nFormXIn = 0, nFormYIn = 0, nFormWidthIn = 0, nFormHeightIn = 0;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONX ) >>= nFormXIn;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONY ) >>= nFormYIn;
+ xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nFormWidthIn;
+ xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nFormHeightIn;
+
+ sal_Int32 nFormX, nFormY, nFormWidth, nFormHeight;
+ if ( pDlgEdForm && pDlgEdForm->TransformFormToSdrCoordinates( nFormXIn, nFormYIn, nFormWidthIn, nFormHeightIn, nFormX, nFormY, nFormWidth, nFormHeight ) )
+ {
+ Size aPageSizeDelta( 400, 300 );
+ DBG_ASSERT( pWindow, "DlgEditor::AdjustPageSize: no window!" );
+ if ( pWindow )
+ aPageSizeDelta = pWindow->PixelToLogic( aPageSizeDelta, MapMode( MAP_100TH_MM ) );
+
+ sal_Int32 nNewPageWidth = nFormX + nFormWidth + aPageSizeDelta.Width();
+ sal_Int32 nNewPageHeight = nFormY + nFormHeight + aPageSizeDelta.Height();
+
+ Size aPageSizeMin( DLGED_PAGE_WIDTH_MIN, DLGED_PAGE_HEIGHT_MIN );
+ DBG_ASSERT( pWindow, "DlgEditor::AdjustPageSize: no window!" );
+ if ( pWindow )
+ aPageSizeMin = pWindow->PixelToLogic( aPageSizeMin, MapMode( MAP_100TH_MM ) );
+ sal_Int32 nPageWidthMin = aPageSizeMin.Width();
+ sal_Int32 nPageHeightMin = aPageSizeMin.Height();
+
+ if ( nNewPageWidth < nPageWidthMin )
+ nNewPageWidth = nPageWidthMin;
+
+ if ( nNewPageHeight < nPageHeightMin )
+ nNewPageHeight = nPageHeightMin;
+
+ if ( pDlgEdPage )
+ {
+ Size aPageSize = pDlgEdPage->GetSize();
+ if ( nNewPageWidth != aPageSize.Width() || nNewPageHeight != aPageSize.Height() )
+ {
+ Size aNewPageSize( nNewPageWidth, nNewPageHeight );
+ pDlgEdPage->SetSize( aNewPageSize );
+ DBG_ASSERT( pDlgEdView, "DlgEditor::AdjustPageSize: no view!" );
+ if ( pDlgEdView )
+ pDlgEdView->SetWorkArea( Rectangle( Point( 0, 0 ), aNewPageSize ) );
+ bAdjustedPageSize = true;
+ }
+ }
+ }
+ }
+
+ return bAdjustedPageSize;
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedclip.cxx b/basctl/source/dlged/dlgedclip.cxx
new file mode 100644
index 000000000000..17392b2510ac
--- /dev/null
+++ b/basctl/source/dlged/dlgedclip.cxx
@@ -0,0 +1,151 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include "dlgedclip.hxx"
+#include <osl/mutex.hxx>
+#include <vcl/svapp.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/datatransfer/XMimeContentType.hpp>
+#include <com/sun/star/datatransfer/XMimeContentTypeFactory.hpp>
+
+
+using namespace comphelper;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::io;
+using namespace ::com::sun::star::datatransfer;
+using namespace ::com::sun::star::datatransfer::clipboard;
+
+
+//----------------------------------------------------------------------------
+
+DlgEdTransferableImpl::DlgEdTransferableImpl( const Sequence< DataFlavor >& aSeqFlavors, const Sequence< Any >& aSeqData )
+{
+ m_SeqFlavors = aSeqFlavors;
+ m_SeqData = aSeqData;
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdTransferableImpl::~DlgEdTransferableImpl()
+{
+}
+
+//----------------------------------------------------------------------------
+
+sal_Bool DlgEdTransferableImpl::compareDataFlavors( const DataFlavor& lFlavor, const DataFlavor& rFlavor )
+{
+ sal_Bool bRet = sal_False;
+
+ // compare mime content types
+ Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
+ Reference< datatransfer::XMimeContentTypeFactory >
+ xMCntTypeFactory( xMSF->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.datatransfer.MimeContentTypeFactory" ) ) ), UNO_QUERY );
+
+ if ( xMCntTypeFactory.is( ) )
+ {
+ // compare full media types
+ Reference< datatransfer::XMimeContentType > xLType = xMCntTypeFactory->createMimeContentType( lFlavor.MimeType );
+ Reference< datatransfer::XMimeContentType > xRType = xMCntTypeFactory->createMimeContentType( rFlavor.MimeType );
+
+ ::rtl::OUString aLFullMediaType = xLType->getFullMediaType();
+ ::rtl::OUString aRFullMediaType = xRType->getFullMediaType();
+
+ bRet = aLFullMediaType.equalsIgnoreAsciiCase( aRFullMediaType );
+ }
+
+ return bRet;
+}
+
+// XTransferable
+//----------------------------------------------------------------------------
+
+Any SAL_CALL DlgEdTransferableImpl::getTransferData( const DataFlavor& rFlavor ) throw(UnsupportedFlavorException, IOException, RuntimeException)
+{
+ const SolarMutexGuard aGuard;
+
+ if ( !isDataFlavorSupported( rFlavor ) )
+ throw UnsupportedFlavorException();
+
+ Any aData;
+
+ for ( sal_Int32 i = 0; i < m_SeqFlavors.getLength(); i++ )
+ {
+ if ( compareDataFlavors( m_SeqFlavors[i] , rFlavor ) )
+ {
+ aData = m_SeqData[i];
+ break;
+ }
+ }
+
+ return aData;
+}
+
+//----------------------------------------------------------------------------
+
+Sequence< DataFlavor > SAL_CALL DlgEdTransferableImpl::getTransferDataFlavors( ) throw(RuntimeException)
+{
+ const SolarMutexGuard aGuard;
+
+ return m_SeqFlavors;
+}
+
+//----------------------------------------------------------------------------
+
+sal_Bool SAL_CALL DlgEdTransferableImpl::isDataFlavorSupported( const DataFlavor& rFlavor ) throw(RuntimeException)
+{
+ const SolarMutexGuard aGuard;
+
+ sal_Bool bRet = sal_False;
+
+ for ( sal_Int32 i = 0; i < m_SeqFlavors.getLength(); i++ )
+ {
+ if ( compareDataFlavors( m_SeqFlavors[i] , rFlavor ) )
+ {
+ bRet = sal_True;
+ break;
+ }
+ }
+
+ return bRet;
+}
+
+// XClipboardOwner
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdTransferableImpl::lostOwnership( const Reference< XClipboard >&, const Reference< XTransferable >& ) throw(RuntimeException)
+{
+ const SolarMutexGuard aGuard;
+
+ m_SeqFlavors = Sequence< DataFlavor >();
+ m_SeqData = Sequence< Any >();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedfac.cxx b/basctl/source/dlged/dlgedfac.cxx
new file mode 100644
index 000000000000..27bae6fbb8c7
--- /dev/null
+++ b/basctl/source/dlged/dlgedfac.cxx
@@ -0,0 +1,270 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include "dlgedfac.hxx"
+#include "dlgedobj.hxx"
+#include <dlgeddef.hxx>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/ScrollBarOrientation.hpp>
+
+using namespace ::com::sun::star;
+
+//----------------------------------------------------------------------------
+
+DlgEdFactory::DlgEdFactory()
+{
+ SdrObjFactory::InsertMakeObjectHdl( LINK(this, DlgEdFactory, MakeObject) );
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdFactory::~DlgEdFactory()
+{
+ SdrObjFactory::RemoveMakeObjectHdl( LINK(this, DlgEdFactory, MakeObject) );
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( DlgEdFactory, MakeObject, SdrObjFactory *, pObjFactory )
+{
+ static sal_Bool bNeedsInit = sal_True;
+ static uno::Reference< lang::XMultiServiceFactory > xDialogSFact;
+
+ if( bNeedsInit )
+ {
+ uno::Reference< lang::XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
+ uno::Reference< container::XNameContainer > xC( xMSF->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ), uno::UNO_QUERY );
+ if( xC.is() )
+ {
+ uno::Reference< lang::XMultiServiceFactory > xModFact( xC, uno::UNO_QUERY );
+ xDialogSFact = xModFact;
+ }
+ bNeedsInit = sal_False;
+ }
+
+ if( (pObjFactory->nInventor == DlgInventor) &&
+ (pObjFactory->nIdentifier >= OBJ_DLG_PUSHBUTTON) &&
+ (pObjFactory->nIdentifier <= OBJ_DLG_TREECONTROL) )
+ {
+ switch( pObjFactory->nIdentifier )
+ {
+ case OBJ_DLG_PUSHBUTTON:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlButtonModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_RADIOBUTTON:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlRadioButtonModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_CHECKBOX:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlCheckBoxModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_LISTBOX:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlListBoxModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_COMBOBOX:
+ {
+ DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlComboBoxModel") , xDialogSFact );
+ pObjFactory->pNewObj = pNew;
+ try
+ {
+ uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
+ if (xPSet.is())
+ {
+ sal_Bool bB = sal_True;
+ xPSet->setPropertyValue( DLGED_PROP_DROPDOWN, uno::Any(&bB,::getBooleanCppuType()));
+ }
+ }
+ catch(...)
+ {
+ }
+ } break;
+ case OBJ_DLG_GROUPBOX:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlGroupBoxModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_EDIT:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlEditModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_FIXEDTEXT:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedTextModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_IMAGECONTROL:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlImageControlModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_PROGRESSBAR:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlProgressBarModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_HSCROLLBAR:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlScrollBarModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_VSCROLLBAR:
+ {
+ DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlScrollBarModel") , xDialogSFact );
+ pObjFactory->pNewObj = pNew;
+ // set vertical orientation
+ try
+ {
+ uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
+ if (xPSet.is())
+ {
+ uno::Any aValue;
+ aValue <<= (sal_Int32) ::com::sun::star::awt::ScrollBarOrientation::VERTICAL;
+ xPSet->setPropertyValue( DLGED_PROP_ORIENTATION, aValue );
+ }
+ }
+ catch(...)
+ {
+ }
+ } break;
+ case OBJ_DLG_HFIXEDLINE:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedLineModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_VFIXEDLINE:
+ {
+ DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedLineModel") , xDialogSFact );
+ pObjFactory->pNewObj = pNew;
+ // set vertical orientation
+ try
+ {
+ uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
+ if (xPSet.is())
+ {
+ uno::Any aValue;
+ aValue <<= (sal_Int32) 1;
+ xPSet->setPropertyValue( DLGED_PROP_ORIENTATION, aValue );
+ }
+ }
+ catch(...)
+ {
+ }
+ } break;
+ case OBJ_DLG_DATEFIELD:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlDateFieldModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_TIMEFIELD:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlTimeFieldModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_NUMERICFIELD:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlNumericFieldModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_CURRENCYFIELD:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlCurrencyFieldModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_FORMATTEDFIELD:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFormattedFieldModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_PATTERNFIELD:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlPatternFieldModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_FILECONTROL:
+ pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFileControlModel") , xDialogSFact );
+ break;
+ case OBJ_DLG_TREECONTROL:
+ DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.tree.TreeControlModel") , xDialogSFact );
+ pObjFactory->pNewObj = pNew;
+ /*
+ try
+ {
+ uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
+ if (xPSet.is())
+ {
+ // first create a data model for our tree control
+ Reference< XComponentContext > xComponentContext;
+
+ Reference< XPropertySet > xPropSet( xInterface, UNO_QUERY );
+ xPropSet->getPropertyValue( OUString::createFromAscii("DefaultContext") ) >>= xComponentContext;
+
+ // gets the service manager from the office
+ Reference< XMultiComponentFactory > xMultiComponentFactoryServer( xComponentContext->getServiceManager() );
+
+
+ // gets the TreeDataModel
+ Reference< XMutableTreeDataModel > xTreeDataModel;
+
+ xTreeDataModel = Reference< XMutableTreeDataModel >(
+ xMultiComponentFactoryServer->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.MutableTreeDataModel" ) ), xComponentContext ), UNO_QUERY_THROW );
+
+ // now fill it with some sample data
+ const OUString sRoot( RTL_CONSTASCII_USTRINGPARAM( "Root" ) );
+
+ Reference< XMutableTreeNode > xNode( mxTreeDataModel->createNode( sRoot, false ), UNO_QUERY_THROW );
+ xNode->setDataValue( sRoot );
+ xNode->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) );
+ xNode->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) );
+
+ const OUString sNode_1( RTL_CONSTASCII_USTRINGPARAM( "Node_1" ) );
+
+ Reference< XMutableTreeNode > xChildNode_1( mxTreeDataModel->createNode( sNode_1, true ), UNO_QUERY_THROW );
+ xChildNode_1->setDataValue( sNode_1 );
+ xChildNode_1->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) );
+ xChildNode_1->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) );
+
+ xNode->appendChild( xChildNode_1 );
+
+ const OUString sNode_1_1( RTL_CONSTASCII_USTRINGPARAM( "Node_1_1" ) );
+
+ Reference< XMutableTreeNode > xChildNode_1_1( mxTreeDataModel->createNode( sNode_1_1, false ), UNO_QUERY_THROW );
+ xChildNode_1_1->setDataValue( sNode_1_1 );
+ xChildNode_1_1->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) );
+ xChildNode_1_1->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) );
+
+ xChildNode_1->appendChild( xChildNode_1_1 );
+
+ const OUString sNode_1_1( RTL_CONSTASCII_USTRINGPARAM( "Node_2" ) );
+
+ Reference< XMutableTreeNode > xChildNode_2( mxTreeDataModel->createNode( sNode_2, false ), UNO_QUERY_THROW );
+ xChildNode_2->setDataValue( sNode_2 );
+ xChildNode_2->setNodeGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM("private:graphicrepository/sw/imglst/nc20010.png") ) );
+ xNode->appendChild( xChildNode_2 );
+
+ xTreeDataModel->setRoot( xNode );
+
+
+ const OUString sDataModel( RTL_CONSTASCII_USTRINGPARAM( "DataModel" ) );
+
+ xPSet->setPropertyValue( sDataModel, xTreeDataModel );
+ }
+ }
+ catch(...)
+ {
+ }*/
+ break;
+ }
+ }
+
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedfunc.cxx b/basctl/source/dlged/dlgedfunc.cxx
new file mode 100644
index 000000000000..9ef46deb69c0
--- /dev/null
+++ b/basctl/source/dlged/dlgedfunc.cxx
@@ -0,0 +1,640 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include <vcl/scrbar.hxx>
+#include <svx/svdview.hxx>
+#include "dlgedfunc.hxx"
+#include "dlged.hxx"
+#include "dlgedview.hxx"
+#include <vcl/seleng.hxx>
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( DlgEdFunc, ScrollTimeout, Timer *, pTimer )
+{
+ (void)pTimer;
+ Window* pWindow = pParent->GetWindow();
+ Point aPos = pWindow->ScreenToOutputPixel( pWindow->GetPointerPosPixel() );
+ aPos = pWindow->PixelToLogic( aPos );
+ ForceScroll( aPos );
+ return 0;
+}
+IMPL_LINK_INLINE_END( DlgEdFunc, ScrollTimeout, Timer *, pTimer )
+
+//----------------------------------------------------------------------------
+
+void DlgEdFunc::ForceScroll( const Point& rPos )
+{
+ aScrollTimer.Stop();
+
+ Window* pWindow = pParent->GetWindow();
+
+ static Point aDefPoint;
+ Rectangle aOutRect( aDefPoint, pWindow->GetOutputSizePixel() );
+ aOutRect = pWindow->PixelToLogic( aOutRect );
+
+ ScrollBar* pHScroll = pParent->GetHScroll();
+ ScrollBar* pVScroll = pParent->GetVScroll();
+ long nDeltaX = pHScroll->GetLineSize();
+ long nDeltaY = pVScroll->GetLineSize();
+
+ if( !aOutRect.IsInside( rPos ) )
+ {
+ if( rPos.X() < aOutRect.Left() )
+ nDeltaX = -nDeltaX;
+ else
+ if( rPos.X() <= aOutRect.Right() )
+ nDeltaX = 0;
+
+ if( rPos.Y() < aOutRect.Top() )
+ nDeltaY = -nDeltaY;
+ else
+ if( rPos.Y() <= aOutRect.Bottom() )
+ nDeltaY = 0;
+
+ if( nDeltaX )
+ pHScroll->SetThumbPos( pHScroll->GetThumbPos() + nDeltaX );
+ if( nDeltaY )
+ pVScroll->SetThumbPos( pVScroll->GetThumbPos() + nDeltaY );
+
+ if( nDeltaX )
+ pParent->DoScroll( pHScroll );
+ if( nDeltaY )
+ pParent->DoScroll( pVScroll );
+ }
+
+ aScrollTimer.Start();
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdFunc::DlgEdFunc( DlgEditor* pParent_ )
+{
+ DlgEdFunc::pParent = pParent_;
+ aScrollTimer.SetTimeoutHdl( LINK( this, DlgEdFunc, ScrollTimeout ) );
+ aScrollTimer.SetTimeout( SELENG_AUTOREPEAT_INTERVAL );
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdFunc::~DlgEdFunc()
+{
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFunc::MouseButtonDown( const MouseEvent& )
+{
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFunc::MouseButtonUp( const MouseEvent& )
+{
+ aScrollTimer.Stop();
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFunc::MouseMove( const MouseEvent& )
+{
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFunc::KeyInput( const KeyEvent& rKEvt )
+{
+ BOOL bReturn = FALSE;
+
+ SdrView* pView = pParent->GetView();
+ Window* pWindow = pParent->GetWindow();
+
+ KeyCode aCode = rKEvt.GetKeyCode();
+ USHORT nCode = aCode.GetCode();
+
+ switch ( nCode )
+ {
+ case KEY_ESCAPE:
+ {
+ if ( pView->IsAction() )
+ {
+ pView->BrkAction();
+ bReturn = TRUE;
+ }
+ else if ( pView->AreObjectsMarked() )
+ {
+ const SdrHdlList& rHdlList = pView->GetHdlList();
+ SdrHdl* pHdl = rHdlList.GetFocusHdl();
+ if ( pHdl )
+ ((SdrHdlList&)rHdlList).ResetFocusHdl();
+ else
+ pView->UnmarkAll();
+
+ bReturn = TRUE;
+ }
+ }
+ break;
+ case KEY_TAB:
+ {
+ if ( !aCode.IsMod1() && !aCode.IsMod2() )
+ {
+ // mark next object
+ if ( !pView->MarkNextObj( !aCode.IsShift() ) )
+ {
+ // if no next object, mark first/last
+ pView->UnmarkAllObj();
+ pView->MarkNextObj( !aCode.IsShift() );
+ }
+
+ if ( pView->AreObjectsMarked() )
+ pView->MakeVisible( pView->GetAllMarkedRect(), *pWindow );
+
+ bReturn = TRUE;
+ }
+ else if ( aCode.IsMod1() )
+ {
+ // selected handle
+ const SdrHdlList& rHdlList = pView->GetHdlList();
+ ((SdrHdlList&)rHdlList).TravelFocusHdl( !aCode.IsShift() );
+
+ // guarantee visibility of focused handle
+ SdrHdl* pHdl = rHdlList.GetFocusHdl();
+ if ( pHdl )
+ {
+ Point aHdlPosition( pHdl->GetPos() );
+ Rectangle aVisRect( aHdlPosition - Point( 100, 100 ), Size( 200, 200 ) );
+ pView->MakeVisible( aVisRect, *pWindow );
+ }
+
+ bReturn = TRUE;
+ }
+ }
+ break;
+ case KEY_UP:
+ case KEY_DOWN:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ {
+ long nX = 0;
+ long nY = 0;
+
+ if ( nCode == KEY_UP )
+ {
+ // scroll up
+ nX = 0;
+ nY = -1;
+ }
+ else if ( nCode == KEY_DOWN )
+ {
+ // scroll down
+ nX = 0;
+ nY = 1;
+ }
+ else if ( nCode == KEY_LEFT )
+ {
+ // scroll left
+ nX = -1;
+ nY = 0;
+ }
+ else if ( nCode == KEY_RIGHT )
+ {
+ // scroll right
+ nX = 1;
+ nY = 0;
+ }
+
+ if ( pView->AreObjectsMarked() && !aCode.IsMod1() )
+ {
+ if ( aCode.IsMod2() )
+ {
+ // move in 1 pixel distance
+ Size aPixelSize = pWindow ? pWindow->PixelToLogic( Size( 1, 1 ) ) : Size( 100, 100 );
+ nX *= aPixelSize.Width();
+ nY *= aPixelSize.Height();
+ }
+ else
+ {
+ // move in 1 mm distance
+ nX *= 100;
+ nY *= 100;
+ }
+
+ const SdrHdlList& rHdlList = pView->GetHdlList();
+ SdrHdl* pHdl = rHdlList.GetFocusHdl();
+
+ if ( pHdl == 0 )
+ {
+ // no handle selected
+ if ( pView->IsMoveAllowed() )
+ {
+ // restrict movement to work area
+ const Rectangle& rWorkArea = pView->GetWorkArea();
+
+ if ( !rWorkArea.IsEmpty() )
+ {
+ Rectangle aMarkRect( pView->GetMarkedObjRect() );
+ aMarkRect.Move( nX, nY );
+
+ if ( !rWorkArea.IsInside( aMarkRect ) )
+ {
+ if ( aMarkRect.Left() < rWorkArea.Left() )
+ nX += rWorkArea.Left() - aMarkRect.Left();
+
+ if ( aMarkRect.Right() > rWorkArea.Right() )
+ nX -= aMarkRect.Right() - rWorkArea.Right();
+
+ if ( aMarkRect.Top() < rWorkArea.Top() )
+ nY += rWorkArea.Top() - aMarkRect.Top();
+
+ if ( aMarkRect.Bottom() > rWorkArea.Bottom() )
+ nY -= aMarkRect.Bottom() - rWorkArea.Bottom();
+ }
+ }
+
+ if ( nX != 0 || nY != 0 )
+ {
+ pView->MoveAllMarked( Size( nX, nY ) );
+ pView->MakeVisible( pView->GetAllMarkedRect(), *pWindow );
+ }
+ }
+ }
+ else
+ {
+ // move the handle
+ if ( pHdl && ( nX || nY ) )
+ {
+ Point aStartPoint( pHdl->GetPos() );
+ Point aEndPoint( pHdl->GetPos() + Point( nX, nY ) );
+ const SdrDragStat& rDragStat = pView->GetDragStat();
+
+ // start dragging
+ pView->BegDragObj( aStartPoint, 0, pHdl, 0 );
+
+ if ( pView->IsDragObj() )
+ {
+ bool bWasNoSnap = rDragStat.IsNoSnap();
+ BOOL bWasSnapEnabled = pView->IsSnapEnabled();
+
+ // switch snapping off
+ if ( !bWasNoSnap )
+ ((SdrDragStat&)rDragStat).SetNoSnap( TRUE );
+ if ( bWasSnapEnabled )
+ pView->SetSnapEnabled( FALSE );
+
+ pView->MovAction( aEndPoint );
+ pView->EndDragObj();
+
+ // restore snap
+ if ( !bWasNoSnap )
+ ((SdrDragStat&)rDragStat).SetNoSnap( bWasNoSnap );
+ if ( bWasSnapEnabled )
+ pView->SetSnapEnabled( bWasSnapEnabled );
+ }
+
+ // make moved handle visible
+ Rectangle aVisRect( aEndPoint - Point( 100, 100 ), Size( 200, 200 ) );
+ pView->MakeVisible( aVisRect, *pWindow );
+ }
+ }
+ }
+ else
+ {
+ // scroll page
+ ScrollBar* pScrollBar = ( nX != 0 ) ? pParent->GetHScroll() : pParent->GetVScroll();
+ if ( pScrollBar )
+ {
+ long nRangeMin = pScrollBar->GetRangeMin();
+ long nRangeMax = pScrollBar->GetRangeMax();
+ long nThumbPos = pScrollBar->GetThumbPos() + ( ( nX != 0 ) ? nX : nY ) * pScrollBar->GetLineSize();
+ if ( nThumbPos < nRangeMin )
+ nThumbPos = nRangeMin;
+ if ( nThumbPos > nRangeMax )
+ nThumbPos = nRangeMax;
+ pScrollBar->SetThumbPos( nThumbPos );
+ pParent->DoScroll( pScrollBar );
+ }
+ }
+
+ bReturn = TRUE;
+ }
+ break;
+ default:
+ {
+ }
+ break;
+ }
+
+ if ( bReturn )
+ pWindow->ReleaseMouse();
+
+ return bReturn;
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdFuncInsert::DlgEdFuncInsert( DlgEditor* pParent_ ) :
+ DlgEdFunc( pParent_ )
+{
+ pParent_->GetView()->SetCreateMode( TRUE );
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdFuncInsert::~DlgEdFuncInsert()
+{
+ pParent->GetView()->SetEditMode( TRUE );
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFuncInsert::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if( !rMEvt.IsLeft() )
+ return TRUE;
+
+ SdrView* pView = pParent->GetView();
+ Window* pWindow= pParent->GetWindow();
+ pView->SetActualWin( pWindow );
+
+ Point aPos = pWindow->PixelToLogic( rMEvt.GetPosPixel() );
+ USHORT nHitLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+ USHORT nDrgLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+
+ pWindow->CaptureMouse();
+
+ if ( rMEvt.IsLeft() && rMEvt.GetClicks() == 1 )
+ {
+ SdrHdl* pHdl = pView->PickHandle(aPos);
+
+ // if selected object was hit, drag object
+ if ( pHdl!=NULL || pView->IsMarkedHit(aPos, nHitLog) )
+ pView->BegDragObj(aPos, (OutputDevice*) NULL, pHdl, nDrgLog);
+ else if ( pView->AreObjectsMarked() )
+ pView->UnmarkAll();
+
+ // if no action, create object
+ if ( !pView->IsAction() )
+ pView->BegCreateObj(aPos);
+ }
+ else if ( rMEvt.IsLeft() && rMEvt.GetClicks() == 2 )
+ {
+ // if object was hit, show property browser
+ if ( pView->IsMarkedHit(aPos, nHitLog) && pParent->GetMode() != DLGED_READONLY )
+ pParent->ShowProperties();
+ }
+
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFuncInsert::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ DlgEdFunc::MouseButtonUp( rMEvt );
+
+ SdrView* pView = pParent->GetView();
+ Window* pWindow= pParent->GetWindow();
+ pView->SetActualWin( pWindow );
+
+ pWindow->ReleaseMouse();
+
+ // object creation active?
+ if ( pView->IsCreateObj() )
+ {
+ pView->EndCreateObj(SDRCREATE_FORCEEND);
+
+ if ( !pView->AreObjectsMarked() )
+ {
+ USHORT nHitLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+ Point aPos( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ pView->MarkObj(aPos, nHitLog);
+ }
+
+ if( pView->AreObjectsMarked() )
+ return TRUE;
+ else
+ return FALSE;
+ }
+ else
+ {
+ if ( pView->IsDragObj() )
+ pView->EndDragObj( rMEvt.IsMod1() );
+ return TRUE;
+ }
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFuncInsert::MouseMove( const MouseEvent& rMEvt )
+{
+ SdrView* pView = pParent->GetView();
+ Window* pWindow= pParent->GetWindow();
+ pView->SetActualWin( pWindow );
+
+ Point aPos( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ USHORT nHitLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+
+ if ( pView->IsAction() )
+ {
+ ForceScroll(aPos);
+ pView->MovAction(aPos);
+ }
+
+ pWindow->SetPointer( pView->GetPreferedPointer( aPos, pWindow, nHitLog ) );
+
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdFuncSelect::DlgEdFuncSelect( DlgEditor* pParent_ ) :
+ DlgEdFunc( pParent_ ),
+ bMarkAction(FALSE)
+{
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdFuncSelect::~DlgEdFuncSelect()
+{
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFuncSelect::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ // get view from parent
+ SdrView* pView = pParent->GetView();
+ Window* pWindow = pParent->GetWindow();
+ pView->SetActualWin( pWindow );
+
+ USHORT nDrgLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+ USHORT nHitLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+ Point aMDPos = pWindow->PixelToLogic( rMEvt.GetPosPixel() );
+
+ if ( rMEvt.IsLeft() && rMEvt.GetClicks() == 1 )
+ {
+ SdrHdl* pHdl = pView->PickHandle(aMDPos);
+ SdrObject* pObj;
+ SdrPageView* pPV;
+
+ // hit selected object?
+ if ( pHdl!=NULL || pView->IsMarkedHit(aMDPos, nHitLog) )
+ {
+ pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl, nDrgLog);
+ }
+ else
+ {
+ // if not multi selection, unmark all
+ if ( !rMEvt.IsShift() )
+ pView->UnmarkAll();
+ else
+ {
+ if( pView->PickObj( aMDPos, nHitLog, pObj, pPV ) )
+ {
+ //if( pObj->ISA( DlgEdForm ) )
+ // pView->UnmarkAll();
+ //else
+ // pParent->UnmarkDialog();
+ }
+ }
+
+ if ( pView->MarkObj(aMDPos, nHitLog) )
+ {
+ // drag object
+ pHdl=pView->PickHandle(aMDPos);
+ pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl, nDrgLog);
+ }
+ else
+ {
+ // select object
+ pView->BegMarkObj(aMDPos);
+ bMarkAction = TRUE;
+ }
+ }
+ }
+ else if ( rMEvt.IsLeft() && rMEvt.GetClicks() == 2 )
+ {
+ // if object was hit, show property browser
+ if ( pView->IsMarkedHit(aMDPos, nHitLog) && pParent->GetMode() != DLGED_READONLY )
+ pParent->ShowProperties();
+ }
+
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFuncSelect::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ DlgEdFunc::MouseButtonUp( rMEvt );
+
+ // get view from parent
+ SdrView* pView = pParent->GetView();
+ Window* pWindow= pParent->GetWindow();
+ pView->SetActualWin( pWindow );
+
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ USHORT nHitLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+
+ if ( rMEvt.IsLeft() )
+ {
+ if ( pView->IsDragObj() )
+ {
+ // object was dragged
+ pView->EndDragObj( rMEvt.IsMod1() );
+ pView->ForceMarkedToAnotherPage();
+ }
+ else
+ if (pView->IsAction() )
+ {
+ pView->EndAction();
+ //if( bMarkAction )
+ //pParent->UnmarkDialog();
+ }
+ }
+
+// USHORT nClicks = rMEvt.GetClicks();
+// if (nClicks == 2)
+// {
+// if ( pView->AreObjectsMarked() )
+// {
+// const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
+//
+// if (rMarkList.GetMarkCount() == 1)
+// {
+// SdrMark* pMark = rMarkList.GetMark(0);
+// SdrObject* pObj = pMark->GetMarkedSdrObj();
+//
+// // edit objects here
+// }
+// }
+// }
+
+ bMarkAction = FALSE;
+
+ pWindow->SetPointer( pView->GetPreferedPointer( aPnt, pWindow, nHitLog ) );
+ pWindow->ReleaseMouse();
+
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL DlgEdFuncSelect::MouseMove( const MouseEvent& rMEvt )
+{
+ SdrView* pView = pParent->GetView();
+ Window* pWindow= pParent->GetWindow();
+ pView->SetActualWin( pWindow );
+
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ USHORT nHitLog = USHORT ( pWindow->PixelToLogic(Size(3,0)).Width() );
+
+ if ( pView->IsAction() )
+ {
+ Point aPix(rMEvt.GetPosPixel());
+ Point aPnt_(pWindow->PixelToLogic(aPix));
+
+ ForceScroll(aPnt_);
+ pView->MovAction(aPnt_);
+ }
+
+ pWindow->SetPointer( pView->GetPreferedPointer( aPnt, pWindow, nHitLog ) );
+
+ return TRUE;
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedlist.cxx b/basctl/source/dlged/dlgedlist.cxx
new file mode 100644
index 000000000000..41fa01b262c8
--- /dev/null
+++ b/basctl/source/dlged/dlgedlist.cxx
@@ -0,0 +1,130 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+#include "dlgedlist.hxx"
+#include "dlgedobj.hxx"
+
+//============================================================================
+// DlgEdPropListenerImpl
+//============================================================================
+
+//----------------------------------------------------------------------------
+
+DlgEdPropListenerImpl::DlgEdPropListenerImpl(DlgEdObj* pObj)
+ :pDlgEdObj(pObj)
+{
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdPropListenerImpl::~DlgEdPropListenerImpl()
+{
+}
+
+// XEventListener
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdPropListenerImpl::disposing( const ::com::sun::star::lang::EventObject& ) throw( ::com::sun::star::uno::RuntimeException)
+{
+ /*
+ // disconnect the listener
+ if (pDlgEdObj)
+ {
+ (pDlgEdObj->m_xPropertyChangeListener).clear();
+ }
+ */
+}
+
+// XPropertyChangeListener
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdPropListenerImpl::propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw( ::com::sun::star::uno::RuntimeException)
+{
+ pDlgEdObj->_propertyChange( evt );
+}
+
+//----------------------------------------------------------------------------
+
+//============================================================================
+// DlgEdEvtContListenerImpl
+//============================================================================
+
+//----------------------------------------------------------------------------
+
+DlgEdEvtContListenerImpl::DlgEdEvtContListenerImpl(DlgEdObj* pObj)
+ :pDlgEdObj(pObj)
+{
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdEvtContListenerImpl::~DlgEdEvtContListenerImpl()
+{
+}
+
+// XEventListener
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdEvtContListenerImpl::disposing( const ::com::sun::star::lang::EventObject& ) throw( ::com::sun::star::uno::RuntimeException)
+{
+ /*
+ // disconnect the listener
+ if (pDlgEdObj)
+ {
+ (pDlgEdObj->m_xContainerListener).clear();
+ }
+ */
+}
+
+// XContainerListener
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdEvtContListenerImpl::elementInserted(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException)
+{
+ pDlgEdObj->_elementInserted( Event );
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdEvtContListenerImpl::elementReplaced(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException)
+{
+ pDlgEdObj->_elementReplaced( Event );
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdEvtContListenerImpl::elementRemoved(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException)
+{
+ pDlgEdObj->_elementRemoved( Event );
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedmod.cxx b/basctl/source/dlged/dlgedmod.cxx
new file mode 100644
index 000000000000..ceb5555a1bc2
--- /dev/null
+++ b/basctl/source/dlged/dlgedmod.cxx
@@ -0,0 +1,81 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include "dlgedmod.hxx"
+#include "dlgedpage.hxx"
+#include <tools/debug.hxx>
+
+
+DBG_NAME(DlgEdModel)
+
+TYPEINIT1(DlgEdModel,SdrModel);
+
+//----------------------------------------------------------------------------
+
+DlgEdModel::DlgEdModel()
+ :SdrModel(NULL, NULL)
+{
+ DBG_CTOR(DlgEdModel,0);
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdModel::~DlgEdModel()
+{
+ DBG_DTOR(DlgEdModel,0);
+}
+
+//----------------------------------------------------------------------------
+
+SdrPage* DlgEdModel::AllocPage(bool bMasterPage)
+{
+ DBG_CHKTHIS(DlgEdModel, 0);
+ return new DlgEdPage(*this, bMasterPage);
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdModel::DlgEdModelChanged(bool bChanged )
+{
+ SetChanged( bChanged );
+}
+
+//----------------------------------------------------------------------------
+
+Window* DlgEdModel::GetCurDocViewWin()
+{
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx
new file mode 100644
index 000000000000..769290fe0690
--- /dev/null
+++ b/basctl/source/dlged/dlgedobj.cxx
@@ -0,0 +1,1896 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <vector>
+#include <algorithm>
+#include <dlgeddef.hxx>
+#include "dlgedobj.hxx"
+#include "dlged.hxx"
+#include "dlgedmod.hxx"
+#include "dlgedpage.hxx"
+#include "dlgedview.hxx"
+#include "dlgedlist.hxx"
+#include <iderid.hxx>
+#include <localizationmgr.hxx>
+
+#include <dlgresid.hrc>
+#include <tools/resmgr.hxx>
+#include <tools/shl.hxx>
+#include <unotools/sharedunocomponent.hxx>
+#include <com/sun/star/awt/XTabControllerModel.hpp>
+#include <com/sun/star/awt/XUnoControlContainer.hpp>
+#include <com/sun/star/awt/XVclContainerPeer.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/script/XScriptEventsSupplier.hpp>
+#include <com/sun/star/container/XContainer.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/types.hxx>
+#include <vcl/svapp.hxx>
+
+#include <algorithm>
+#include <functional>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::script;
+using ::rtl::OUString;
+
+
+TYPEINIT1(DlgEdObj, SdrUnoObj);
+DBG_NAME(DlgEdObj);
+
+//----------------------------------------------------------------------------
+
+DlgEdObj::DlgEdObj()
+ :SdrUnoObj(String(), sal_False)
+ ,bIsListening(sal_False)
+ ,pDlgEdForm( NULL )
+{
+ DBG_CTOR(DlgEdObj, NULL);
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdObj::DlgEdObj(const ::rtl::OUString& rModelName,
+ const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac)
+ :SdrUnoObj(rModelName, rxSFac, sal_False)
+ ,bIsListening(sal_False)
+ ,pDlgEdForm( NULL )
+{
+ DBG_CTOR(DlgEdObj, NULL);
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdObj::~DlgEdObj()
+{
+ DBG_DTOR(DlgEdObj, NULL);
+
+ if ( isListening() )
+ EndListening();
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::SetPage(SdrPage* _pNewPage)
+{
+ // now set the page
+ SdrUnoObj::SetPage(_pNewPage);
+}
+
+//----------------------------------------------------------------------------
+
+namespace
+{
+ /** returns the DlgEdForm which the given DlgEdObj belongs to
+ (which might in fact be the object itself)
+
+ Failure to obtain the form will be reported with an assertion in the non-product
+ version.
+ */
+ bool lcl_getDlgEdForm( DlgEdObj* _pObject, DlgEdForm*& _out_pDlgEdForm )
+ {
+ _out_pDlgEdForm = dynamic_cast< DlgEdForm* >( _pObject );
+ if ( !_out_pDlgEdForm )
+ _out_pDlgEdForm = _pObject->GetDlgEdForm();
+ DBG_ASSERT( _out_pDlgEdForm, "lcl_getDlgEdForm: no form!" );
+ return ( _out_pDlgEdForm != NULL );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+uno::Reference< awt::XControl > DlgEdObj::GetControl() const
+{
+ const DlgEdForm* pForm = GetDlgEdForm();
+ const DlgEditor* pEditor = pForm ? pForm->GetDlgEditor() : NULL;
+ SdrView* pView = pEditor ? pEditor->GetView() : NULL;
+ Window* pWindow = pEditor ? pEditor->GetWindow() : NULL;
+ OSL_ENSURE( ( pView && pWindow ) || !pForm, "DlgEdObj::GetControl: no view or no window!" );
+
+ uno::Reference< awt::XControl > xControl;
+ if ( pView && pWindow )
+ xControl = GetUnoControl( *pView, *pWindow );
+
+ return xControl;
+}
+
+//----------------------------------------------------------------------------
+
+bool DlgEdObj::TransformSdrToControlCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut )
+{
+ // input position and size
+ Size aPos( nXIn, nYIn );
+ Size aSize( nWidthIn, nHeightIn );
+
+ // form position
+ DlgEdForm* pForm = NULL;
+ if ( !lcl_getDlgEdForm( this, pForm ) )
+ return false;
+ Rectangle aFormRect = pForm->GetSnapRect();
+ Size aFormPos( aFormRect.Left(), aFormRect.Top() );
+
+ // convert 100th_mm to pixel
+ OutputDevice* pDevice = Application::GetDefaultDevice();
+ DBG_ASSERT( pDevice, "DlgEdObj::TransformSdrToControlCoordinates: missing default device!" );
+ if ( !pDevice )
+ return false;
+ aPos = pDevice->LogicToPixel( aPos, MapMode( MAP_100TH_MM ) );
+ aSize = pDevice->LogicToPixel( aSize, MapMode( MAP_100TH_MM ) );
+ aFormPos = pDevice->LogicToPixel( aFormPos, MapMode( MAP_100TH_MM ) );
+
+ // subtract form position
+ aPos.Width() -= aFormPos.Width();
+ aPos.Height() -= aFormPos.Height();
+
+ // take window borders into account
+ Reference< beans::XPropertySet > xPSetForm( pForm->GetUnoControlModel(), UNO_QUERY );
+ DBG_ASSERT( xPSetForm.is(), "DlgEdObj::TransformFormToSdrCoordinates: no form property set!" );
+ if ( !xPSetForm.is() )
+ return false;
+ bool bDecoration = true;
+ xPSetForm->getPropertyValue( DLGED_PROP_DECORATION ) >>= bDecoration;
+ if( bDecoration )
+ {
+ awt::DeviceInfo aDeviceInfo = pForm->getDeviceInfo();
+ aPos.Width() -= aDeviceInfo.LeftInset;
+ aPos.Height() -= aDeviceInfo.TopInset;
+ }
+
+ // convert pixel to logic units
+ aPos = pDevice->PixelToLogic( aPos, MAP_APPFONT );
+ aSize = pDevice->PixelToLogic( aSize, MAP_APPFONT );
+
+ // set out parameters
+ nXOut = aPos.Width();
+ nYOut = aPos.Height();
+ nWidthOut = aSize.Width();
+ nHeightOut = aSize.Height();
+
+ return true;
+}
+
+//----------------------------------------------------------------------------
+
+bool DlgEdObj::TransformSdrToFormCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut )
+{
+ // input position and size
+ Size aPos( nXIn, nYIn );
+ Size aSize( nWidthIn, nHeightIn );
+
+ // convert 100th_mm to pixel
+ OutputDevice* pDevice = Application::GetDefaultDevice();
+ DBG_ASSERT( pDevice, "DlgEdObj::TransformSdrToFormCoordinates: missing default device!" );
+ if ( !pDevice )
+ return false;
+ aPos = pDevice->LogicToPixel( aPos, MapMode( MAP_100TH_MM ) );
+ aSize = pDevice->LogicToPixel( aSize, MapMode( MAP_100TH_MM ) );
+
+ // take window borders into account
+ DlgEdForm* pForm = NULL;
+ if ( !lcl_getDlgEdForm( this, pForm ) )
+ return false;
+
+ // take window borders into account
+ Reference< beans::XPropertySet > xPSetForm( pForm->GetUnoControlModel(), UNO_QUERY );
+ DBG_ASSERT( xPSetForm.is(), "DlgEdObj::TransformFormToSdrCoordinates: no form property set!" );
+ if ( !xPSetForm.is() )
+ return false;
+ bool bDecoration = true;
+ xPSetForm->getPropertyValue( DLGED_PROP_DECORATION ) >>= bDecoration;
+ if( bDecoration )
+ {
+ awt::DeviceInfo aDeviceInfo = pForm->getDeviceInfo();
+ aSize.Width() -= aDeviceInfo.LeftInset + aDeviceInfo.RightInset;
+ aSize.Height() -= aDeviceInfo.TopInset + aDeviceInfo.BottomInset;
+ }
+ // convert pixel to logic units
+ aPos = pDevice->PixelToLogic( aPos, MAP_APPFONT );
+ aSize = pDevice->PixelToLogic( aSize, MAP_APPFONT );
+
+ // set out parameters
+ nXOut = aPos.Width();
+ nYOut = aPos.Height();
+ nWidthOut = aSize.Width();
+ nHeightOut = aSize.Height();
+
+ return true;
+}
+
+//----------------------------------------------------------------------------
+
+bool DlgEdObj::TransformControlToSdrCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut )
+{
+ // input position and size
+ Size aPos( nXIn, nYIn );
+ Size aSize( nWidthIn, nHeightIn );
+
+ // form position
+ DlgEdForm* pForm = NULL;
+ if ( !lcl_getDlgEdForm( this, pForm ) )
+ return false;
+
+ Reference< beans::XPropertySet > xPSetForm( pForm->GetUnoControlModel(), UNO_QUERY );
+ DBG_ASSERT( xPSetForm.is(), "DlgEdObj::TransformControlToSdrCoordinates: no form property set!" );
+ if ( !xPSetForm.is() )
+ return false;
+ sal_Int32 nFormX = 0, nFormY = 0, nFormWidth, nFormHeight;
+ xPSetForm->getPropertyValue( DLGED_PROP_POSITIONX ) >>= nFormX;
+ xPSetForm->getPropertyValue( DLGED_PROP_POSITIONY ) >>= nFormY;
+ xPSetForm->getPropertyValue( DLGED_PROP_WIDTH ) >>= nFormWidth;
+ xPSetForm->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nFormHeight;
+ Size aFormPos( nFormX, nFormY );
+
+ // convert logic units to pixel
+ OutputDevice* pDevice = Application::GetDefaultDevice();
+ DBG_ASSERT( pDevice, "DlgEdObj::TransformControlToSdrCoordinates: missing default device!" );
+ if ( !pDevice )
+ return false;
+ aPos = pDevice->LogicToPixel( aPos, MAP_APPFONT );
+ aSize = pDevice->LogicToPixel( aSize, MAP_APPFONT );
+ aFormPos = pDevice->LogicToPixel( aFormPos, MAP_APPFONT );
+
+ // add form position
+ aPos.Width() += aFormPos.Width();
+ aPos.Height() += aFormPos.Height();
+
+ // take window borders into account
+ bool bDecoration = true;
+ xPSetForm->getPropertyValue( DLGED_PROP_DECORATION ) >>= bDecoration;
+ if( bDecoration )
+ {
+ awt::DeviceInfo aDeviceInfo = pForm->getDeviceInfo();
+ aPos.Width() += aDeviceInfo.LeftInset;
+ aPos.Height() += aDeviceInfo.TopInset;
+ }
+
+ // convert pixel to 100th_mm
+ aPos = pDevice->PixelToLogic( aPos, MapMode( MAP_100TH_MM ) );
+ aSize = pDevice->PixelToLogic( aSize, MapMode( MAP_100TH_MM ) );
+
+ // set out parameters
+ nXOut = aPos.Width();
+ nYOut = aPos.Height();
+ nWidthOut = aSize.Width();
+ nHeightOut = aSize.Height();
+
+ return true;
+}
+
+//----------------------------------------------------------------------------
+
+bool DlgEdObj::TransformFormToSdrCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut )
+{
+ // input position and size
+ Size aPos( nXIn, nYIn );
+ Size aSize( nWidthIn, nHeightIn );
+
+ // convert logic units to pixel
+ OutputDevice* pDevice = Application::GetDefaultDevice();
+ DBG_ASSERT( pDevice, "DlgEdObj::TransformFormToSdrCoordinates: missing default device!" );
+ if ( !pDevice )
+ return false;
+
+ // take window borders into account
+ DlgEdForm* pForm = NULL;
+ if ( !lcl_getDlgEdForm( this, pForm ) )
+ return false;
+
+ aPos = pDevice->LogicToPixel( aPos, MAP_APPFONT );
+ aSize = pDevice->LogicToPixel( aSize, MAP_APPFONT );
+
+ // take window borders into account
+ Reference< beans::XPropertySet > xPSetForm( pForm->GetUnoControlModel(), UNO_QUERY );
+ DBG_ASSERT( xPSetForm.is(), "DlgEdObj::TransformFormToSdrCoordinates: no form property set!" );
+ if ( !xPSetForm.is() )
+ return false;
+ bool bDecoration = true;
+ xPSetForm->getPropertyValue( DLGED_PROP_DECORATION ) >>= bDecoration;
+ if( bDecoration )
+ {
+ awt::DeviceInfo aDeviceInfo = pForm->getDeviceInfo();
+ aSize.Width() += aDeviceInfo.LeftInset + aDeviceInfo.RightInset;
+ aSize.Height() += aDeviceInfo.TopInset + aDeviceInfo.BottomInset;
+ }
+
+ // convert pixel to 100th_mm
+ aPos = pDevice->PixelToLogic( aPos, MapMode( MAP_100TH_MM ) );
+ aSize = pDevice->PixelToLogic( aSize, MapMode( MAP_100TH_MM ) );
+
+ // set out parameters
+ nXOut = aPos.Width();
+ nYOut = aPos.Height();
+ nWidthOut = aSize.Width();
+ nHeightOut = aSize.Height();
+
+ return true;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::SetRectFromProps()
+{
+ // get control position and size from properties
+ Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ sal_Int32 nXIn = 0, nYIn = 0, nWidthIn = 0, nHeightIn = 0;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONX ) >>= nXIn;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONY ) >>= nYIn;
+ xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nWidthIn;
+ xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nHeightIn;
+
+ // transform coordinates
+ sal_Int32 nXOut, nYOut, nWidthOut, nHeightOut;
+ if ( TransformControlToSdrCoordinates( nXIn, nYIn, nWidthIn, nHeightIn, nXOut, nYOut, nWidthOut, nHeightOut ) )
+ {
+ // set rectangle position and size
+ Point aPoint( nXOut, nYOut );
+ Size aSize( nWidthOut, nHeightOut );
+ SetSnapRect( Rectangle( aPoint, aSize ) );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::SetPropsFromRect()
+{
+ // get control position and size from rectangle
+ Rectangle aRect_ = GetSnapRect();
+ sal_Int32 nXIn = aRect_.Left();
+ sal_Int32 nYIn = aRect_.Top();
+ sal_Int32 nWidthIn = aRect_.GetWidth();
+ sal_Int32 nHeightIn = aRect_.GetHeight();
+
+ // transform coordinates
+ sal_Int32 nXOut, nYOut, nWidthOut, nHeightOut;
+ if ( TransformSdrToControlCoordinates( nXIn, nYIn, nWidthIn, nHeightIn, nXOut, nYOut, nWidthOut, nHeightOut ) )
+ {
+ // set properties
+ Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ Any aValue;
+ aValue <<= nXOut;
+ xPSet->setPropertyValue( DLGED_PROP_POSITIONX, aValue );
+ aValue <<= nYOut;
+ xPSet->setPropertyValue( DLGED_PROP_POSITIONY, aValue );
+ aValue <<= nWidthOut;
+ xPSet->setPropertyValue( DLGED_PROP_WIDTH, aValue );
+ aValue <<= nHeightOut;
+ xPSet->setPropertyValue( DLGED_PROP_HEIGHT, aValue );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::PositionAndSizeChange( const beans::PropertyChangeEvent& evt )
+{
+ DlgEdPage* pPage_ = 0;
+ if ( pDlgEdForm )
+ {
+ DlgEditor* pEditor = pDlgEdForm->GetDlgEditor();
+ if ( pEditor )
+ pPage_ = pEditor->GetPage();
+ }
+ DBG_ASSERT( pPage_, "DlgEdObj::PositionAndSizeChange: no page!" );
+ if ( pPage_ )
+ {
+ sal_Int32 nPageXIn = 0;
+ sal_Int32 nPageYIn = 0;
+ Size aPageSize = pPage_->GetSize();
+ sal_Int32 nPageWidthIn = aPageSize.Width();
+ sal_Int32 nPageHeightIn = aPageSize.Height();
+ sal_Int32 nPageX, nPageY, nPageWidth, nPageHeight;
+ if ( TransformSdrToControlCoordinates( nPageXIn, nPageYIn, nPageWidthIn, nPageHeightIn, nPageX, nPageY, nPageWidth, nPageHeight ) )
+ {
+ Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ sal_Int32 nX = 0, nY = 0, nWidth = 0, nHeight = 0;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONX ) >>= nX;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONY ) >>= nY;
+ xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nWidth;
+ xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nHeight;
+
+ sal_Int32 nValue = 0;
+ evt.NewValue >>= nValue;
+ sal_Int32 nNewValue = nValue;
+
+ if ( evt.PropertyName == DLGED_PROP_POSITIONX )
+ {
+ if ( nNewValue + nWidth > nPageX + nPageWidth )
+ nNewValue = nPageX + nPageWidth - nWidth;
+ if ( nNewValue < nPageX )
+ nNewValue = nPageX;
+ }
+ else if ( evt.PropertyName == DLGED_PROP_POSITIONY )
+ {
+ if ( nNewValue + nHeight > nPageY + nPageHeight )
+ nNewValue = nPageY + nPageHeight - nHeight;
+ if ( nNewValue < nPageY )
+ nNewValue = nPageY;
+ }
+ else if ( evt.PropertyName == DLGED_PROP_WIDTH )
+ {
+ if ( nX + nNewValue > nPageX + nPageWidth )
+ nNewValue = nPageX + nPageWidth - nX;
+ if ( nNewValue < 1 )
+ nNewValue = 1;
+ }
+ else if ( evt.PropertyName == DLGED_PROP_HEIGHT )
+ {
+ if ( nY + nNewValue > nPageY + nPageHeight )
+ nNewValue = nPageY + nPageHeight - nY;
+ if ( nNewValue < 1 )
+ nNewValue = 1;
+ }
+
+ if ( nNewValue != nValue )
+ {
+ Any aNewValue;
+ aNewValue <<= nNewValue;
+ EndListening( sal_False );
+ xPSet->setPropertyValue( evt.PropertyName, aNewValue );
+ StartListening();
+ }
+ }
+ }
+ }
+
+ SetRectFromProps();
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdObj::NameChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw( ::com::sun::star::uno::RuntimeException)
+{
+ // get old name
+ ::rtl::OUString aOldName;
+ evt.OldValue >>= aOldName;
+
+ // get new name
+ ::rtl::OUString aNewName;
+ evt.NewValue >>= aNewName;
+
+ if ( !aNewName.equals(aOldName) )
+ {
+ Reference< container::XNameAccess > xNameAcc((GetDlgEdForm()->GetUnoControlModel()), UNO_QUERY);
+ if ( xNameAcc.is() && xNameAcc->hasByName(aOldName) )
+ {
+ if ( !xNameAcc->hasByName(aNewName) && aNewName.getLength() != 0 )
+ {
+ // remove the control by the old name and insert the control by the new name in the container
+ Reference< container::XNameContainer > xCont(xNameAcc, UNO_QUERY );
+ if ( xCont.is() )
+ {
+ Reference< awt::XControlModel > xCtrl(GetUnoControlModel(), UNO_QUERY);
+ Any aAny;
+ aAny <<= xCtrl;
+ xCont->removeByName( aOldName );
+ xCont->insertByName( aNewName , aAny );
+
+ DlgEditor* pEditor;
+ if ( ISA(DlgEdForm) )
+ pEditor = ((DlgEdForm*)this)->GetDlgEditor();
+ else
+ pEditor = GetDlgEdForm()->GetDlgEditor();
+ LocalizationMgr::renameControlResourceIDsForEditorObject( pEditor, aAny, aNewName );
+ }
+ }
+ else
+ {
+ // set old name property
+ EndListening(sal_False);
+ Reference< beans::XPropertySet > xPSet(GetUnoControlModel(), UNO_QUERY);
+ Any aName;
+ aName <<= aOldName;
+ xPSet->setPropertyValue( DLGED_PROP_NAME, aName );
+ StartListening();
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+sal_Int32 DlgEdObj::GetStep() const
+{
+ // get step property
+ sal_Int32 nStep = 0;
+ uno::Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), uno::UNO_QUERY );
+ if (xPSet.is())
+ {
+ xPSet->getPropertyValue( DLGED_PROP_STEP ) >>= nStep;
+ }
+ return nStep;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::UpdateStep()
+{
+ sal_Int32 nCurStep = GetDlgEdForm()->GetStep();
+ sal_Int32 nStep = GetStep();
+
+ SdrLayerAdmin& rLayerAdmin = GetModel()->GetLayerAdmin();
+ SdrLayerID nHiddenLayerId = rLayerAdmin.GetLayerID( String( RTL_CONSTASCII_USTRINGPARAM( "HiddenLayer" ) ), FALSE );
+ SdrLayerID nControlLayerId = rLayerAdmin.GetLayerID( rLayerAdmin.GetControlLayerName(), sal_False );
+
+ if( nCurStep )
+ {
+ if ( nStep && (nStep != nCurStep) )
+ {
+ SetLayer( nHiddenLayerId );
+ }
+ else
+ {
+ SetLayer( nControlLayerId );
+ }
+ }
+ else
+ {
+ SetLayer( nControlLayerId );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::TabIndexChange( const beans::PropertyChangeEvent& evt ) throw (RuntimeException)
+{
+ DlgEdForm* pForm = GetDlgEdForm();
+ if ( pForm )
+ {
+ // stop listening with all children
+ ::std::vector<DlgEdObj*> aChildList = pForm->GetChilds();
+ ::std::vector<DlgEdObj*>::iterator aIter;
+ for ( aIter = aChildList.begin() ; aIter != aChildList.end() ; ++aIter )
+ {
+ (*aIter)->EndListening( sal_False );
+ }
+
+ Reference< container::XNameAccess > xNameAcc( pForm->GetUnoControlModel() , UNO_QUERY );
+ if ( xNameAcc.is() )
+ {
+ // get sequence of control names
+ Sequence< ::rtl::OUString > aNames = xNameAcc->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+ sal_Int16 i;
+
+ // create a map of tab indices and control names, sorted by tab index
+ IndexToNameMap aIndexToNameMap;
+ for ( i = 0; i < nCtrls; ++i )
+ {
+ // get control name
+ ::rtl::OUString aName( pNames[i] );
+
+ // get tab index
+ sal_Int16 nTabIndex = -1;
+ Any aCtrl = xNameAcc->getByName( aName );
+ Reference< beans::XPropertySet > xPSet;
+ aCtrl >>= xPSet;
+ if ( xPSet.is() && xPSet == Reference< beans::XPropertySet >( evt.Source, UNO_QUERY ) )
+ evt.OldValue >>= nTabIndex;
+ else if ( xPSet.is() )
+ xPSet->getPropertyValue( DLGED_PROP_TABINDEX ) >>= nTabIndex;
+
+ // insert into map
+ aIndexToNameMap.insert( IndexToNameMap::value_type( nTabIndex, aName ) );
+ }
+
+ // create a helper list of control names, sorted by tab index
+ ::std::vector< ::rtl::OUString > aNameList( aIndexToNameMap.size() );
+ ::std::transform(
+ aIndexToNameMap.begin(), aIndexToNameMap.end(),
+ aNameList.begin(),
+ ::std::select2nd< IndexToNameMap::value_type >( )
+ );
+
+ // check tab index
+ sal_Int16 nOldTabIndex = 0;
+ evt.OldValue >>= nOldTabIndex;
+ sal_Int16 nNewTabIndex = 0;
+ evt.NewValue >>= nNewTabIndex;
+ if ( nNewTabIndex < 0 )
+ nNewTabIndex = 0;
+ else if ( nNewTabIndex > nCtrls - 1 )
+ nNewTabIndex = sal::static_int_cast<sal_Int16>( nCtrls - 1 );
+
+ // reorder helper list
+ ::rtl::OUString aCtrlName = aNameList[nOldTabIndex];
+ aNameList.erase( aNameList.begin() + nOldTabIndex );
+ aNameList.insert( aNameList.begin() + nNewTabIndex , aCtrlName );
+
+ // set new tab indices
+ for ( i = 0; i < nCtrls; ++i )
+ {
+ Any aCtrl = xNameAcc->getByName( aNameList[i] );
+ Reference< beans::XPropertySet > xPSet;
+ aCtrl >>= xPSet;
+ if ( xPSet.is() )
+ {
+ Any aTabIndex;
+ aTabIndex <<= (sal_Int16) i;
+ xPSet->setPropertyValue( DLGED_PROP_TABINDEX, aTabIndex );
+ }
+ }
+
+ // reorder objects in drawing page
+ GetModel()->GetPage(0)->SetObjectOrdNum( nOldTabIndex + 1, nNewTabIndex + 1 );
+
+ // #110559#
+ pForm->UpdateTabOrderAndGroups();
+ }
+
+ // start listening with all children
+ for ( aIter = aChildList.begin() ; aIter != aChildList.end() ; ++aIter )
+ {
+ (*aIter)->StartListening();
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+sal_Bool DlgEdObj::supportsService( const sal_Char* _pServiceName ) const
+{
+ sal_Bool bSupports = sal_False;
+
+ Reference< lang::XServiceInfo > xServiceInfo( GetUnoControlModel() , UNO_QUERY );
+ // TODO: cache xServiceInfo as member?
+ if ( xServiceInfo.is() )
+ bSupports = xServiceInfo->supportsService( ::rtl::OUString::createFromAscii( _pServiceName ) );
+
+ return bSupports;
+}
+
+//----------------------------------------------------------------------------
+
+::rtl::OUString DlgEdObj::GetDefaultName() const
+{
+ sal_uInt16 nResId = 0;
+ ::rtl::OUString aDefaultName;
+ if ( supportsService( "com.sun.star.awt.UnoControlDialogModel" ) )
+ {
+ nResId = RID_STR_CLASS_DIALOG;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlButtonModel" ) )
+ {
+ nResId = RID_STR_CLASS_BUTTON;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlRadioButtonModel" ) )
+ {
+ nResId = RID_STR_CLASS_RADIOBUTTON;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlCheckBoxModel" ) )
+ {
+ nResId = RID_STR_CLASS_CHECKBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlListBoxModel" ) )
+ {
+ nResId = RID_STR_CLASS_LISTBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlComboBoxModel" ) )
+ {
+ nResId = RID_STR_CLASS_COMBOBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlGroupBoxModel" ) )
+ {
+ nResId = RID_STR_CLASS_GROUPBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlEditModel" ) )
+ {
+ nResId = RID_STR_CLASS_EDIT;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFixedTextModel" ) )
+ {
+ nResId = RID_STR_CLASS_FIXEDTEXT;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlImageControlModel" ) )
+ {
+ nResId = RID_STR_CLASS_IMAGECONTROL;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlProgressBarModel" ) )
+ {
+ nResId = RID_STR_CLASS_PROGRESSBAR;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlScrollBarModel" ) )
+ {
+ nResId = RID_STR_CLASS_SCROLLBAR;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFixedLineModel" ) )
+ {
+ nResId = RID_STR_CLASS_FIXEDLINE;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlDateFieldModel" ) )
+ {
+ nResId = RID_STR_CLASS_DATEFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlTimeFieldModel" ) )
+ {
+ nResId = RID_STR_CLASS_TIMEFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlNumericFieldModel" ) )
+ {
+ nResId = RID_STR_CLASS_NUMERICFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlCurrencyFieldModel" ) )
+ {
+ nResId = RID_STR_CLASS_CURRENCYFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFormattedFieldModel" ) )
+ {
+ nResId = RID_STR_CLASS_FORMATTEDFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlPatternFieldModel" ) )
+ {
+ nResId = RID_STR_CLASS_PATTERNFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFileControlModel" ) )
+ {
+ nResId = RID_STR_CLASS_FILECONTROL;
+ }
+ else if ( supportsService( "com.sun.star.awt.tree.TreeControlModel" ) )
+ {
+ nResId = RID_STR_CLASS_TREECONTROL;
+ }
+
+ else
+ {
+ nResId = RID_STR_CLASS_CONTROL;
+ }
+
+ if (nResId)
+ {
+ aDefaultName = ::rtl::OUString( String(IDEResId(nResId)) );
+ }
+
+ return aDefaultName;
+}
+
+//----------------------------------------------------------------------------
+
+::rtl::OUString DlgEdObj::GetUniqueName() const
+{
+ ::rtl::OUString aUniqueName;
+ uno::Reference< container::XNameAccess > xNameAcc((GetDlgEdForm()->GetUnoControlModel()), uno::UNO_QUERY);
+
+ if ( xNameAcc.is() )
+ {
+ sal_Int32 n = 0;
+ ::rtl::OUString aDefaultName = GetDefaultName();
+
+ do
+ {
+ aUniqueName = aDefaultName + ::rtl::OUString::valueOf(++n);
+ } while (xNameAcc->hasByName(aUniqueName));
+ }
+
+ return aUniqueName;
+}
+
+//----------------------------------------------------------------------------
+
+sal_uInt32 DlgEdObj::GetObjInventor() const
+{
+ return DlgInventor;
+}
+
+//----------------------------------------------------------------------------
+
+sal_uInt16 DlgEdObj::GetObjIdentifier() const
+{
+ if ( supportsService( "com.sun.star.awt.UnoControlDialogModel" ))
+ {
+ return OBJ_DLG_DIALOG;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlButtonModel" ))
+ {
+ return OBJ_DLG_PUSHBUTTON;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlRadioButtonModel" ))
+ {
+ return OBJ_DLG_RADIOBUTTON;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlCheckBoxModel" ))
+ {
+ return OBJ_DLG_CHECKBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlListBoxModel" ))
+ {
+ return OBJ_DLG_LISTBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlComboBoxModel" ))
+ {
+ return OBJ_DLG_COMBOBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlGroupBoxModel" ))
+ {
+ return OBJ_DLG_GROUPBOX;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlEditModel" ))
+ {
+ return OBJ_DLG_EDIT;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFixedTextModel" ))
+ {
+ return OBJ_DLG_FIXEDTEXT;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlImageControlModel" ))
+ {
+ return OBJ_DLG_IMAGECONTROL;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlProgressBarModel" ))
+ {
+ return OBJ_DLG_PROGRESSBAR;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlScrollBarModel" ))
+ {
+ return OBJ_DLG_HSCROLLBAR;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFixedLineModel" ))
+ {
+ return OBJ_DLG_HFIXEDLINE;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlDateFieldModel" ))
+ {
+ return OBJ_DLG_DATEFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlTimeFieldModel" ))
+ {
+ return OBJ_DLG_TIMEFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlNumericFieldModel" ))
+ {
+ return OBJ_DLG_NUMERICFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlCurrencyFieldModel" ))
+ {
+ return OBJ_DLG_CURRENCYFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFormattedFieldModel" ))
+ {
+ return OBJ_DLG_FORMATTEDFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlPatternFieldModel" ))
+ {
+ return OBJ_DLG_PATTERNFIELD;
+ }
+ else if ( supportsService( "com.sun.star.awt.UnoControlFileControlModel" ))
+ {
+ return OBJ_DLG_FILECONTROL;
+ }
+ else if ( supportsService( "com.sun.star.awt.tree.TreeControlModel" ))
+ {
+ return OBJ_DLG_TREECONTROL;
+ }
+ else
+ {
+ return OBJ_DLG_CONTROL;
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::clonedFrom(const DlgEdObj* _pSource)
+{
+ // set parent form
+ pDlgEdForm = _pSource->pDlgEdForm;
+
+ // add child to parent form
+ pDlgEdForm->AddChild( this );
+
+ Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ // set new name
+ ::rtl::OUString aOUniqueName( GetUniqueName() );
+ Any aUniqueName;
+ aUniqueName <<= aOUniqueName;
+ xPSet->setPropertyValue( DLGED_PROP_NAME, aUniqueName );
+
+ Reference< container::XNameContainer > xCont( GetDlgEdForm()->GetUnoControlModel() , UNO_QUERY );
+ if ( xCont.is() )
+ {
+ // set tabindex
+ Sequence< OUString > aNames = xCont->getElementNames();
+ Any aTabIndex;
+ aTabIndex <<= (sal_Int16) aNames.getLength();
+ xPSet->setPropertyValue( DLGED_PROP_TABINDEX, aTabIndex );
+
+ // insert control model in dialog model
+ Reference< awt::XControlModel > xCtrl( xPSet , UNO_QUERY );
+ Any aCtrl;
+ aCtrl <<= xCtrl;
+ xCont->insertByName( aOUniqueName , aCtrl );
+
+ // #110559#
+ pDlgEdForm->UpdateTabOrderAndGroups();
+ }
+ }
+
+ // start listening
+ StartListening();
+}
+
+//----------------------------------------------------------------------------
+
+SdrObject* DlgEdObj::Clone() const
+{
+ SdrObject* pReturn = SdrUnoObj::Clone();
+
+ DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pReturn);
+ DBG_ASSERT( pDlgEdObj != NULL, "DlgEdObj::Clone: invalid clone!" );
+ if ( pDlgEdObj )
+ pDlgEdObj->clonedFrom( this );
+
+ return pReturn;
+}
+
+//----------------------------------------------------------------------------
+
+SdrObject* DlgEdObj::getFullDragClone() const
+{
+ // no need to really add the clone for dragging, it's a temporary
+ // object
+ SdrObject* pObj = new SdrUnoObj(String());
+ *pObj = *((const SdrUnoObj*)this);
+
+ return pObj;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::operator= (const SdrObject& rObj)
+{
+ SdrUnoObj::operator= (rObj);
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::NbcMove( const Size& rSize )
+{
+ SdrUnoObj::NbcMove( rSize );
+
+ // stop listening
+ EndListening(sal_False);
+
+ // set geometry properties
+ SetPropsFromRect();
+
+ // start listening
+ StartListening();
+
+ // dialog model changed
+ GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(TRUE);
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
+{
+ SdrUnoObj::NbcResize( rRef, xFract, yFract );
+
+ // stop listening
+ EndListening(sal_False);
+
+ // set geometry properties
+ SetPropsFromRect();
+
+ // start listening
+ StartListening();
+
+ // dialog model changed
+ GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(TRUE);
+}
+
+//----------------------------------------------------------------------------
+
+bool DlgEdObj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
+{
+ bool bResult = SdrUnoObj::EndCreate(rStat, eCmd);
+
+ SetDefaults();
+ StartListening();
+
+ return bResult;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::SetDefaults()
+{
+ // set parent form
+ pDlgEdForm = ((DlgEdPage*)GetPage())->GetDlgEdForm();
+
+ if ( pDlgEdForm )
+ {
+ // add child to parent form
+ pDlgEdForm->AddChild( this );
+
+ Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ // get unique name
+ ::rtl::OUString aOUniqueName( GetUniqueName() );
+
+ // set name property
+ Any aUniqueName;
+ aUniqueName <<= aOUniqueName;
+ xPSet->setPropertyValue( DLGED_PROP_NAME, aUniqueName );
+
+ // set labels
+ if ( supportsService( "com.sun.star.awt.UnoControlButtonModel" ) ||
+ supportsService( "com.sun.star.awt.UnoControlRadioButtonModel" ) ||
+ supportsService( "com.sun.star.awt.UnoControlCheckBoxModel" ) ||
+ supportsService( "com.sun.star.awt.UnoControlGroupBoxModel" ) ||
+ supportsService( "com.sun.star.awt.UnoControlFixedTextModel" ) )
+ {
+ xPSet->setPropertyValue( DLGED_PROP_LABEL, aUniqueName );
+ }
+
+ // set number formats supplier for formatted field
+ if ( supportsService( "com.sun.star.awt.UnoControlFormattedFieldModel" ) )
+ {
+ Reference< util::XNumberFormatsSupplier > xSupplier = GetDlgEdForm()->GetDlgEditor()->GetNumberFormatsSupplier();
+ if ( xSupplier.is() )
+ {
+ Any aSupplier;
+ aSupplier <<= xSupplier;
+ xPSet->setPropertyValue( DLGED_PROP_FORMATSSUPPLIER, aSupplier );
+ }
+ }
+
+ // set geometry properties
+ SetPropsFromRect();
+
+ Reference< container::XNameContainer > xCont( GetDlgEdForm()->GetUnoControlModel() , UNO_QUERY );
+ if ( xCont.is() )
+ {
+ // set tabindex
+ Sequence< OUString > aNames = xCont->getElementNames();
+ uno::Any aTabIndex;
+ aTabIndex <<= (sal_Int16) aNames.getLength();
+ xPSet->setPropertyValue( DLGED_PROP_TABINDEX, aTabIndex );
+
+ // set step
+ Reference< beans::XPropertySet > xPSetForm( xCont, UNO_QUERY );
+ if ( xPSetForm.is() )
+ {
+ Any aStep = xPSetForm->getPropertyValue( DLGED_PROP_STEP );
+ xPSet->setPropertyValue( DLGED_PROP_STEP, aStep );
+ }
+
+ // insert control model in dialog model
+ Reference< awt::XControlModel > xCtrl( xPSet , UNO_QUERY );
+ Any aAny;
+ aAny <<= xCtrl;
+ xCont->insertByName( aOUniqueName , aAny );
+
+ DlgEditor* pEditor;
+ if ( ISA(DlgEdForm) )
+ pEditor = ((DlgEdForm*)this)->GetDlgEditor();
+ else
+ pEditor = GetDlgEdForm()->GetDlgEditor();
+ LocalizationMgr::setControlResourceIDsForNewEditorObject( pEditor, aAny, aOUniqueName );
+
+ // #110559#
+ pDlgEdForm->UpdateTabOrderAndGroups();
+ }
+ }
+
+ // dialog model changed
+ pDlgEdForm->GetDlgEditor()->SetDialogModelChanged( TRUE );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK(DlgEdObj, OnCreate, void*, EMPTYTAG)
+{
+ (void)EMPTYTAG;
+ /*
+ if (pTempView)
+ pTempView->ObjectCreated(this);
+ */
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::StartListening()
+{
+ DBG_ASSERT(!isListening(), "DlgEdObj::StartListening: already listening!");
+
+ if (!isListening())
+ {
+ bIsListening = sal_True;
+
+ // XPropertyChangeListener
+ Reference< XPropertySet > xControlModel( GetUnoControlModel() , UNO_QUERY );
+ if (!m_xPropertyChangeListener.is() && xControlModel.is())
+ {
+ // create listener
+ m_xPropertyChangeListener = static_cast< ::com::sun::star::beans::XPropertyChangeListener*>( new DlgEdPropListenerImpl( (DlgEdObj*)this ) );
+
+ // register listener to properties
+ xControlModel->addPropertyChangeListener( ::rtl::OUString() , m_xPropertyChangeListener );
+ }
+
+ // XContainerListener
+ Reference< XScriptEventsSupplier > xEventsSupplier( GetUnoControlModel() , UNO_QUERY );
+ if( !m_xContainerListener.is() && xEventsSupplier.is() )
+ {
+ // create listener
+ m_xContainerListener = static_cast< ::com::sun::star::container::XContainerListener*>( new DlgEdEvtContListenerImpl( (DlgEdObj*)this ) );
+
+ // register listener to script event container
+ Reference< XNameContainer > xEventCont = xEventsSupplier->getEvents();
+ DBG_ASSERT(xEventCont.is(), "DlgEdObj::StartListening: control model has no script event container!");
+ Reference< XContainer > xCont( xEventCont , UNO_QUERY );
+ if (xCont.is())
+ xCont->addContainerListener( m_xContainerListener );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::EndListening(sal_Bool bRemoveListener)
+{
+ DBG_ASSERT(isListening(), "DlgEdObj::EndListening: not listening currently!");
+
+ if (isListening())
+ {
+ bIsListening = sal_False;
+
+ if (bRemoveListener)
+ {
+ // XPropertyChangeListener
+ Reference< XPropertySet > xControlModel(GetUnoControlModel(), UNO_QUERY);
+ if ( m_xPropertyChangeListener.is() && xControlModel.is() )
+ {
+ // remove listener
+ xControlModel->removePropertyChangeListener( ::rtl::OUString() , m_xPropertyChangeListener );
+ }
+ m_xPropertyChangeListener.clear();
+
+ // XContainerListener
+ Reference< XScriptEventsSupplier > xEventsSupplier( GetUnoControlModel() , UNO_QUERY );
+ if( m_xContainerListener.is() && xEventsSupplier.is() )
+ {
+ // remove listener
+ Reference< XNameContainer > xEventCont = xEventsSupplier->getEvents();
+ DBG_ASSERT(xEventCont.is(), "DlgEdObj::EndListening: control model has no script event container!");
+ Reference< XContainer > xCont( xEventCont , UNO_QUERY );
+ if (xCont.is())
+ xCont->removeContainerListener( m_xContainerListener );
+ }
+ m_xContainerListener.clear();
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdObj::_propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw( ::com::sun::star::uno::RuntimeException)
+{
+ if (isListening())
+ {
+ DlgEdForm* pRealDlgEdForm = dynamic_cast< DlgEdForm* >(this);
+ if( pRealDlgEdForm == 0 )
+ pRealDlgEdForm = GetDlgEdForm();
+
+ DlgEditor* pDlgEditor = pRealDlgEdForm ? pRealDlgEdForm->GetDlgEditor() : 0;
+
+ if( !pDlgEditor || pDlgEditor->isInPaint() )
+ return;
+
+ // dialog model changed
+ pDlgEditor->SetDialogModelChanged(TRUE);
+
+ // update position and size
+ if ( evt.PropertyName == DLGED_PROP_POSITIONX || evt.PropertyName == DLGED_PROP_POSITIONY ||
+ evt.PropertyName == DLGED_PROP_WIDTH || evt.PropertyName == DLGED_PROP_HEIGHT ||
+ evt.PropertyName == DLGED_PROP_DECORATION )
+ {
+ PositionAndSizeChange( evt );
+
+ if ( evt.PropertyName == DLGED_PROP_DECORATION )
+ {
+ if ( ISA(DlgEdForm) )
+ ((DlgEdForm*)this)->GetDlgEditor()->ResetDialog();
+ else
+ GetDlgEdForm()->GetDlgEditor()->ResetDialog();
+ }
+ }
+ // change name of control in dialog model
+ else if ( evt.PropertyName == DLGED_PROP_NAME )
+ {
+ if ( !ISA(DlgEdForm) )
+ {
+ NameChange(evt);
+ }
+ }
+ // update step
+ else if ( evt.PropertyName == DLGED_PROP_STEP )
+ {
+ UpdateStep();
+ }
+ // change tabindex
+ else if ( evt.PropertyName == DLGED_PROP_TABINDEX )
+ {
+ if ( !ISA(DlgEdForm) )
+ {
+ TabIndexChange(evt);
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdObj::_elementInserted(const ::com::sun::star::container::ContainerEvent& ) throw(::com::sun::star::uno::RuntimeException)
+{
+ if (isListening())
+ {
+ // dialog model changed
+ if ( ISA(DlgEdForm) )
+ {
+ ((DlgEdForm*)this)->GetDlgEditor()->SetDialogModelChanged(TRUE);
+ }
+ else
+ {
+ GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(TRUE);
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdObj::_elementReplaced(const ::com::sun::star::container::ContainerEvent& ) throw(::com::sun::star::uno::RuntimeException)
+{
+ if (isListening())
+ {
+ // dialog model changed
+ if ( ISA(DlgEdForm) )
+ {
+ ((DlgEdForm*)this)->GetDlgEditor()->SetDialogModelChanged(TRUE);
+ }
+ else
+ {
+ GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(TRUE);
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void SAL_CALL DlgEdObj::_elementRemoved(const ::com::sun::star::container::ContainerEvent& ) throw(::com::sun::star::uno::RuntimeException)
+{
+ if (isListening())
+ {
+ // dialog model changed
+ if ( ISA(DlgEdForm) )
+ {
+ ((DlgEdForm*)this)->GetDlgEditor()->SetDialogModelChanged(TRUE);
+ }
+ else
+ {
+ GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(TRUE);
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdObj::SetLayer(SdrLayerID nLayer)
+{
+ SdrLayerID nOldLayer = GetLayer();
+
+ if ( nLayer != nOldLayer )
+ {
+ SdrUnoObj::SetLayer( nLayer );
+
+ DlgEdHint aHint( DLGED_HINT_LAYERCHANGED, this );
+ GetDlgEdForm()->GetDlgEditor()->Broadcast( aHint );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+TYPEINIT1(DlgEdForm, DlgEdObj);
+DBG_NAME(DlgEdForm);
+
+//----------------------------------------------------------------------------
+
+DlgEdForm::DlgEdForm()
+ :DlgEdObj()
+{
+ DBG_CTOR(DlgEdForm, NULL);
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdForm::~DlgEdForm()
+{
+ DBG_DTOR(DlgEdForm, NULL);
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::SetDlgEditor( DlgEditor* pEditor )
+{
+ pDlgEditor = pEditor;
+ ImplInvalidateDeviceInfo();
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::ImplInvalidateDeviceInfo()
+{
+ mpDeviceInfo.reset();
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::SetRectFromProps()
+{
+ // get form position and size from properties
+ Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ sal_Int32 nXIn = 0, nYIn = 0, nWidthIn = 0, nHeightIn = 0;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONX ) >>= nXIn;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONY ) >>= nYIn;
+ xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nWidthIn;
+ xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nHeightIn;
+
+ // transform coordinates
+ sal_Int32 nXOut, nYOut, nWidthOut, nHeightOut;
+ if ( TransformFormToSdrCoordinates( nXIn, nYIn, nWidthIn, nHeightIn, nXOut, nYOut, nWidthOut, nHeightOut ) )
+ {
+ // set rectangle position and size
+ Point aPoint( nXOut, nYOut );
+ Size aSize( nWidthOut, nHeightOut );
+ SetSnapRect( Rectangle( aPoint, aSize ) );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::SetPropsFromRect()
+{
+ // get form position and size from rectangle
+ Rectangle aRect_ = GetSnapRect();
+ sal_Int32 nXIn = aRect_.Left();
+ sal_Int32 nYIn = aRect_.Top();
+ sal_Int32 nWidthIn = aRect_.GetWidth();
+ sal_Int32 nHeightIn = aRect_.GetHeight();
+
+ // transform coordinates
+ sal_Int32 nXOut, nYOut, nWidthOut, nHeightOut;
+ if ( TransformSdrToFormCoordinates( nXIn, nYIn, nWidthIn, nHeightIn, nXOut, nYOut, nWidthOut, nHeightOut ) )
+ {
+ // set properties
+ Reference< beans::XPropertySet > xPSet( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ Any aValue;
+ aValue <<= nXOut;
+ xPSet->setPropertyValue( DLGED_PROP_POSITIONX, aValue );
+ aValue <<= nYOut;
+ xPSet->setPropertyValue( DLGED_PROP_POSITIONY, aValue );
+ aValue <<= nWidthOut;
+ xPSet->setPropertyValue( DLGED_PROP_WIDTH, aValue );
+ aValue <<= nHeightOut;
+ xPSet->setPropertyValue( DLGED_PROP_HEIGHT, aValue );
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::AddChild( DlgEdObj* pDlgEdObj )
+{
+ pChilds.push_back( pDlgEdObj );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::RemoveChild( DlgEdObj* pDlgEdObj )
+{
+ pChilds.erase( ::std::find( pChilds.begin() , pChilds.end() , pDlgEdObj ) );
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::PositionAndSizeChange( const beans::PropertyChangeEvent& evt )
+{
+ DlgEditor* pEditor = GetDlgEditor();
+ DBG_ASSERT( pEditor, "DlgEdForm::PositionAndSizeChange: no dialog editor!" );
+ if ( pEditor )
+ {
+ DlgEdPage* pPage_ = pEditor->GetPage();
+ DBG_ASSERT( pPage_, "DlgEdForm::PositionAndSizeChange: no page!" );
+ if ( pPage_ )
+ {
+ sal_Int32 nPageXIn = 0;
+ sal_Int32 nPageYIn = 0;
+ Size aPageSize = pPage_->GetSize();
+ sal_Int32 nPageWidthIn = aPageSize.Width();
+ sal_Int32 nPageHeightIn = aPageSize.Height();
+ sal_Int32 nPageX, nPageY, nPageWidth, nPageHeight;
+ if ( TransformSdrToFormCoordinates( nPageXIn, nPageYIn, nPageWidthIn, nPageHeightIn, nPageX, nPageY, nPageWidth, nPageHeight ) )
+ {
+ Reference< beans::XPropertySet > xPSetForm( GetUnoControlModel(), UNO_QUERY );
+ if ( xPSetForm.is() )
+ {
+ sal_Int32 nValue = 0;
+ evt.NewValue >>= nValue;
+ sal_Int32 nNewValue = nValue;
+
+ if ( evt.PropertyName == DLGED_PROP_POSITIONX )
+ {
+ if ( nNewValue < nPageX )
+ nNewValue = nPageX;
+ }
+ else if ( evt.PropertyName == DLGED_PROP_POSITIONY )
+ {
+ if ( nNewValue < nPageY )
+ nNewValue = nPageY;
+ }
+ else if ( evt.PropertyName == DLGED_PROP_WIDTH )
+ {
+ if ( nNewValue < 1 )
+ nNewValue = 1;
+ }
+ else if ( evt.PropertyName == DLGED_PROP_HEIGHT )
+ {
+ if ( nNewValue < 1 )
+ nNewValue = 1;
+ }
+
+ if ( nNewValue != nValue )
+ {
+ Any aNewValue;
+ aNewValue <<= nNewValue;
+ EndListening( sal_False );
+ xPSetForm->setPropertyValue( evt.PropertyName, aNewValue );
+ StartListening();
+ }
+ }
+ }
+
+ bool bAdjustedPageSize = pEditor->AdjustPageSize();
+ SetRectFromProps();
+ ::std::vector< DlgEdObj* >::iterator aIter;
+ ::std::vector< DlgEdObj* > aChildList = ((DlgEdForm*)this)->GetChilds();
+
+ if ( bAdjustedPageSize )
+ {
+ pEditor->InitScrollBars();
+ aPageSize = pPage_->GetSize();
+ nPageWidthIn = aPageSize.Width();
+ nPageHeightIn = aPageSize.Height();
+ if ( TransformSdrToControlCoordinates( nPageXIn, nPageYIn, nPageWidthIn, nPageHeightIn, nPageX, nPageY, nPageWidth, nPageHeight ) )
+ {
+ for ( aIter = aChildList.begin(); aIter != aChildList.end(); aIter++ )
+ {
+ Reference< beans::XPropertySet > xPSet( (*aIter)->GetUnoControlModel(), UNO_QUERY );
+ if ( xPSet.is() )
+ {
+ sal_Int32 nX = 0, nY = 0, nWidth = 0, nHeight = 0;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONX ) >>= nX;
+ xPSet->getPropertyValue( DLGED_PROP_POSITIONY ) >>= nY;
+ xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nWidth;
+ xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nHeight;
+
+ sal_Int32 nNewX = nX;
+ if ( nX + nWidth > nPageX + nPageWidth )
+ {
+ nNewX = nPageX + nPageWidth - nWidth;
+ if ( nNewX < nPageX )
+ nNewX = nPageX;
+ }
+ if ( nNewX != nX )
+ {
+ Any aValue;
+ aValue <<= nNewX;
+ EndListening( sal_False );
+ xPSet->setPropertyValue( DLGED_PROP_POSITIONX, aValue );
+ StartListening();
+ }
+
+ sal_Int32 nNewY = nY;
+ if ( nY + nHeight > nPageY + nPageHeight )
+ {
+ nNewY = nPageY + nPageHeight - nHeight;
+ if ( nNewY < nPageY )
+ nNewY = nPageY;
+ }
+ if ( nNewY != nY )
+ {
+ Any aValue;
+ aValue <<= nNewY;
+ EndListening( sal_False );
+ xPSet->setPropertyValue( DLGED_PROP_POSITIONY, aValue );
+ StartListening();
+ }
+ }
+ }
+ }
+ }
+
+ for ( aIter = aChildList.begin(); aIter != aChildList.end(); aIter++ )
+ {
+ (*aIter)->SetRectFromProps();
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::UpdateStep()
+{
+ ULONG nObjCount;
+ SdrPage* pSdrPage = GetPage();
+
+ if ( pSdrPage && ( ( nObjCount = pSdrPage->GetObjCount() ) > 0 ) )
+ {
+ for ( ULONG i = 0 ; i < nObjCount ; i++ )
+ {
+ SdrObject* pObj = pSdrPage->GetObj(i);
+ DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
+ if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
+ pDlgEdObj->UpdateStep();
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::UpdateTabIndices()
+{
+ // stop listening with all children
+ ::std::vector<DlgEdObj*>::iterator aIter;
+ for ( aIter = pChilds.begin() ; aIter != pChilds.end() ; ++aIter )
+ {
+ (*aIter)->EndListening( sal_False );
+ }
+
+ Reference< ::com::sun::star::container::XNameAccess > xNameAcc( GetUnoControlModel() , UNO_QUERY );
+ if ( xNameAcc.is() )
+ {
+ // get sequence of control names
+ Sequence< ::rtl::OUString > aNames = xNameAcc->getElementNames();
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ sal_Int32 nCtrls = aNames.getLength();
+
+ // create a map of tab indices and control names, sorted by tab index
+ IndexToNameMap aIndexToNameMap;
+ for ( sal_Int16 i = 0; i < nCtrls; ++i )
+ {
+ // get name
+ ::rtl::OUString aName( pNames[i] );
+
+ // get tab index
+ sal_Int16 nTabIndex = -1;
+ Any aCtrl = xNameAcc->getByName( aName );
+ Reference< ::com::sun::star::beans::XPropertySet > xPSet;
+ aCtrl >>= xPSet;
+ if ( xPSet.is() )
+ xPSet->getPropertyValue( DLGED_PROP_TABINDEX ) >>= nTabIndex;
+
+ // insert into map
+ aIndexToNameMap.insert( IndexToNameMap::value_type( nTabIndex, aName ) );
+ }
+
+ // set new tab indices
+ sal_Int16 nNewTabIndex = 0;
+ for ( IndexToNameMap::iterator aIt = aIndexToNameMap.begin(); aIt != aIndexToNameMap.end(); ++aIt )
+ {
+ Any aCtrl = xNameAcc->getByName( aIt->second );
+ Reference< beans::XPropertySet > xPSet;
+ aCtrl >>= xPSet;
+ if ( xPSet.is() )
+ {
+ Any aTabIndex;
+ aTabIndex <<= (sal_Int16) nNewTabIndex++;
+ xPSet->setPropertyValue( DLGED_PROP_TABINDEX, aTabIndex );
+ }
+ }
+
+ // #110559#
+ UpdateTabOrderAndGroups();
+ }
+
+ // start listening with all children
+ for ( aIter = pChilds.begin() ; aIter != pChilds.end() ; ++aIter )
+ {
+ (*aIter)->StartListening();
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::UpdateTabOrder()
+{
+ // #110559#
+ // When the tabindex of a control model changes, the dialog control is
+ // notified about those changes. Due to #109067# (bad performance of
+ // dialog editor) the dialog control doesn't activate the tab order
+ // in design mode. When the dialog editor has reordered all
+ // tabindices, this method allows to activate the taborder afterwards.
+
+ Reference< awt::XUnoControlContainer > xCont( GetControl(), UNO_QUERY );
+ if ( xCont.is() )
+ {
+ Sequence< Reference< awt::XTabController > > aSeqTabCtrls = xCont->getTabControllers();
+ const Reference< awt::XTabController >* pTabCtrls = aSeqTabCtrls.getConstArray();
+ sal_Int32 nCount = aSeqTabCtrls.getLength();
+ for ( sal_Int32 i = 0; i < nCount; ++i )
+ pTabCtrls[i]->activateTabOrder();
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::UpdateGroups()
+{
+ // #110559#
+ // The grouping of radio buttons in a dialog is done by vcl.
+ // In the dialog editor we have two views (=controls) for one
+ // radio button model. One control is owned by the dialog control,
+ // but not visible in design mode. The other control is owned by
+ // the drawing layer object. Whereas the grouping of the first
+ // control is done by vcl, the grouping of the control in the
+ // drawing layer has to be done here.
+
+ Reference< awt::XTabControllerModel > xTabModel( GetUnoControlModel() , UNO_QUERY );
+ if ( xTabModel.is() )
+ {
+ // create a global list of controls that belong to the dialog
+ ::std::vector<DlgEdObj*> aChildList = GetChilds();
+ sal_uInt32 nSize = aChildList.size();
+ Sequence< Reference< awt::XControl > > aSeqControls( nSize );
+ for ( sal_uInt32 i = 0; i < nSize; ++i )
+ aSeqControls.getArray()[i] = Reference< awt::XControl >( aChildList[i]->GetControl(), UNO_QUERY );
+
+ sal_Int32 nGroupCount = xTabModel->getGroupCount();
+ for ( sal_Int32 nGroup = 0; nGroup < nGroupCount; ++nGroup )
+ {
+ // get a list of control models that belong to this group
+ ::rtl::OUString aName;
+ Sequence< Reference< awt::XControlModel > > aSeqModels;
+ xTabModel->getGroup( nGroup, aSeqModels, aName );
+ const Reference< awt::XControlModel >* pModels = aSeqModels.getConstArray();
+ sal_Int32 nModelCount = aSeqModels.getLength();
+
+ // create a list of peers that belong to this group
+ Sequence< Reference< awt::XWindow > > aSeqPeers( nModelCount );
+ for ( sal_Int32 nModel = 0; nModel < nModelCount; ++nModel )
+ {
+ // for each control model find the corresponding control in the global list
+ const Reference< awt::XControl >* pControls = aSeqControls.getConstArray();
+ sal_Int32 nControlCount = aSeqControls.getLength();
+ for ( sal_Int32 nControl = 0; nControl < nControlCount; ++nControl )
+ {
+ const Reference< awt::XControl > xCtrl( pControls[nControl] );
+ if ( xCtrl.is() )
+ {
+ Reference< awt::XControlModel > xCtrlModel( xCtrl->getModel() );
+ if ( (awt::XControlModel*)xCtrlModel.get() == (awt::XControlModel*)pModels[nModel].get() )
+ {
+ // get the control peer and insert into the list of peers
+ aSeqPeers.getArray()[ nModel ] = Reference< awt::XWindow >( xCtrl->getPeer(), UNO_QUERY );
+ break;
+ }
+ }
+ }
+ }
+
+ // set the group at the dialog peer
+ Reference< awt::XControl > xDlg( GetControl(), UNO_QUERY );
+ if ( xDlg.is() )
+ {
+ Reference< awt::XVclContainerPeer > xDlgPeer( xDlg->getPeer(), UNO_QUERY );
+ if ( xDlgPeer.is() )
+ xDlgPeer->setGroup( aSeqPeers );
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::UpdateTabOrderAndGroups()
+{
+ UpdateTabOrder();
+ UpdateGroups();
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::NbcMove( const Size& rSize )
+{
+ SdrUnoObj::NbcMove( rSize );
+
+ // set geometry properties of form
+ EndListening(sal_False);
+ SetPropsFromRect();
+ StartListening();
+
+ // set geometry properties of all childs
+ ::std::vector<DlgEdObj*>::iterator aIter;
+ for ( aIter = pChilds.begin() ; aIter != pChilds.end() ; aIter++ )
+ {
+ (*aIter)->EndListening(sal_False);
+ (*aIter)->SetPropsFromRect();
+ (*aIter)->StartListening();
+ }
+
+ // dialog model changed
+ GetDlgEditor()->SetDialogModelChanged(TRUE);
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdForm::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
+{
+ SdrUnoObj::NbcResize( rRef, xFract, yFract );
+
+ // set geometry properties of form
+ EndListening(sal_False);
+ SetPropsFromRect();
+ StartListening();
+
+ // set geometry properties of all childs
+ ::std::vector<DlgEdObj*>::iterator aIter;
+ for ( aIter = pChilds.begin() ; aIter != pChilds.end() ; aIter++ )
+ {
+ (*aIter)->EndListening(sal_False);
+ (*aIter)->SetPropsFromRect();
+ (*aIter)->StartListening();
+ }
+
+ // dialog model changed
+ GetDlgEditor()->SetDialogModelChanged(TRUE);
+}
+
+//----------------------------------------------------------------------------
+
+bool DlgEdForm::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
+{
+ bool bResult = SdrUnoObj::EndCreate(rStat, eCmd);
+
+ // stop listening
+ EndListening(sal_False);
+
+ // set geometry properties
+ SetPropsFromRect();
+
+ // dialog model changed
+ GetDlgEditor()->SetDialogModelChanged(TRUE);
+
+ // start listening
+ StartListening();
+
+ return bResult;
+}
+
+//----------------------------------------------------------------------------
+
+awt::DeviceInfo DlgEdForm::getDeviceInfo() const
+{
+ awt::DeviceInfo aDeviceInfo;
+
+ DlgEditor* pEditor = GetDlgEditor();
+ DBG_ASSERT( pEditor, "DlgEdForm::getDeviceInfo: no editor associated with the form object!" );
+ if ( !pEditor )
+ return aDeviceInfo;
+
+ Window* pWindow = pEditor->GetWindow();
+ DBG_ASSERT( pWindow, "DlgEdForm::getDeviceInfo: no window associated with the editor!" );
+ if ( !pWindow )
+ return aDeviceInfo;
+
+ // obtain an XControl
+ ::utl::SharedUNOComponent< awt::XControl > xDialogControl; // ensures auto-disposal, if needed
+ xDialogControl.reset( GetControl(), ::utl::SharedUNOComponent< awt::XControl >::NoTakeOwnership );
+ if ( !xDialogControl.is() )
+ {
+ // don't create a temporary control all the time, this method here is called
+ // way too often. Instead, use a cached DeviceInfo.
+ // 2007-02-05 / i74065 / frank.schoenheit@sun.com
+ if ( !!mpDeviceInfo )
+ return *mpDeviceInfo;
+
+ Reference< awt::XControlContainer > xEditorControlContainer( pEditor->GetWindowControlContainer() );
+ xDialogControl.reset(
+ GetTemporaryControlForWindow( *pWindow, xEditorControlContainer ),
+ ::utl::SharedUNOComponent< awt::XControl >::TakeOwnership );
+ }
+
+ Reference< awt::XDevice > xDialogDevice;
+ if ( xDialogControl.is() )
+ xDialogDevice.set( xDialogControl->getPeer(), UNO_QUERY );
+ DBG_ASSERT( xDialogDevice.is(), "DlgEdForm::getDeviceInfo: no device!" );
+ if ( xDialogDevice.is() )
+ aDeviceInfo = xDialogDevice->getInfo();
+
+ mpDeviceInfo.reset( aDeviceInfo );
+
+ return aDeviceInfo;
+}
+
+//----------------------------------------------------------------------------
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedpage.cxx b/basctl/source/dlged/dlgedpage.cxx
new file mode 100644
index 000000000000..58fe333dfac3
--- /dev/null
+++ b/basctl/source/dlged/dlgedpage.cxx
@@ -0,0 +1,89 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include "dlgedpage.hxx"
+#include "dlged.hxx"
+#include "dlgedmod.hxx"
+#include "dlgedobj.hxx"
+
+
+TYPEINIT1( DlgEdPage, SdrPage );
+
+//----------------------------------------------------------------------------
+
+DlgEdPage::DlgEdPage( DlgEdModel& rModel, bool bMasterPage )
+ :SdrPage( rModel, bMasterPage )
+{
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdPage::DlgEdPage( const DlgEdPage& rPage )
+ :SdrPage( rPage )
+{
+ pDlgEdForm = rPage.pDlgEdForm;
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdPage::~DlgEdPage()
+{
+ Clear();
+}
+
+//----------------------------------------------------------------------------
+
+SdrPage* DlgEdPage::Clone() const
+{
+ return new DlgEdPage( *this );
+}
+
+//----------------------------------------------------------------------------
+
+SdrObject* DlgEdPage::SetObjectOrdNum(ULONG nOldObjNum, ULONG nNewObjNum)
+{
+ SdrObject* pObj = SdrPage::SetObjectOrdNum( nOldObjNum, nNewObjNum );
+
+ DlgEdHint aHint( DLGED_HINT_OBJORDERCHANGED );
+ if ( pDlgEdForm )
+ {
+ DlgEditor* pDlgEditor = pDlgEdForm->GetDlgEditor();
+ if ( pDlgEditor )
+ pDlgEditor->Broadcast( aHint );
+ }
+
+ return pObj;
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgedview.cxx b/basctl/source/dlged/dlgedview.cxx
new file mode 100644
index 000000000000..d98967a3e776
--- /dev/null
+++ b/basctl/source/dlged/dlgedview.cxx
@@ -0,0 +1,217 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+
+#include "dlgedview.hxx"
+#include "dlged.hxx"
+#include <dlgedpage.hxx>
+
+#include <svx/svxids.hrc>
+#include <sfx2/viewfrm.hxx>
+
+#include <basidesh.hxx>
+#include <iderdll.hxx>
+#include "dlgedobj.hxx"
+
+TYPEINIT1( DlgEdView, SdrView );
+
+//----------------------------------------------------------------------------
+
+DlgEdView::DlgEdView( SdrModel* pModel, OutputDevice* pOut, DlgEditor* pEditor )
+ :SdrView( pModel, pOut )
+ ,pDlgEditor( pEditor )
+{
+ // #114898#
+ SetBufferedOutputAllowed(true);
+ SetBufferedOverlayAllowed(true);
+}
+
+//----------------------------------------------------------------------------
+
+DlgEdView::~DlgEdView()
+{
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdView::MarkListHasChanged()
+{
+ SdrView::MarkListHasChanged();
+
+ DlgEdHint aHint( DLGED_HINT_SELECTIONCHANGED );
+ if ( pDlgEditor )
+ {
+ pDlgEditor->Broadcast( aHint );
+ pDlgEditor->UpdatePropertyBrowserDelayed();
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void DlgEdView::MakeVisible( const Rectangle& rRect, Window& rWin )
+{
+ // visible area
+ MapMode aMap( rWin.GetMapMode() );
+ Point aOrg( aMap.GetOrigin() );
+ Size aVisSize( rWin.GetOutputSize() );
+ Rectangle RectTmp( Point(-aOrg.X(),-aOrg.Y()), aVisSize );
+ Rectangle aVisRect( RectTmp );
+
+ // check, if rectangle is inside visible area
+ if ( !aVisRect.IsInside( rRect ) )
+ {
+ // calculate scroll distance; the rectangle must be inside the visible area
+ sal_Int32 nScrollX = 0, nScrollY = 0;
+
+ sal_Int32 nVisLeft = aVisRect.Left();
+ sal_Int32 nVisRight = aVisRect.Right();
+ sal_Int32 nVisTop = aVisRect.Top();
+ sal_Int32 nVisBottom = aVisRect.Bottom();
+
+ sal_Int32 nDeltaX = pDlgEditor->GetHScroll()->GetLineSize();
+ sal_Int32 nDeltaY = pDlgEditor->GetVScroll()->GetLineSize();
+
+ while ( rRect.Right() > nVisRight + nScrollX )
+ nScrollX += nDeltaX;
+
+ while ( rRect.Left() < nVisLeft + nScrollX )
+ nScrollX -= nDeltaX;
+
+ while ( rRect.Bottom() > nVisBottom + nScrollY )
+ nScrollY += nDeltaY;
+
+ while ( rRect.Top() < nVisTop + nScrollY )
+ nScrollY -= nDeltaY;
+
+ // don't scroll beyond the page size
+ Size aPageSize = pDlgEditor->GetPage()->GetSize();
+ sal_Int32 nPageWidth = aPageSize.Width();
+ sal_Int32 nPageHeight = aPageSize.Height();
+
+ if ( nVisRight + nScrollX > nPageWidth )
+ nScrollX = nPageWidth - nVisRight;
+
+ if ( nVisLeft + nScrollX < 0 )
+ nScrollX = -nVisLeft;
+
+ if ( nVisBottom + nScrollY > nPageHeight )
+ nScrollY = nPageHeight - nVisBottom;
+
+ if ( nVisTop + nScrollY < 0 )
+ nScrollY = -nVisTop;
+
+ // scroll window
+ rWin.Update();
+ rWin.Scroll( -nScrollX, -nScrollY );
+ aMap.SetOrigin( Point( aOrg.X() - nScrollX, aOrg.Y() - nScrollY ) );
+ rWin.SetMapMode( aMap );
+ rWin.Update();
+ rWin.Invalidate();
+
+ // update scroll bars
+ if ( pDlgEditor )
+ pDlgEditor->UpdateScrollBars();
+
+ DlgEdHint aHint( DLGED_HINT_WINDOWSCROLLED );
+ if ( pDlgEditor )
+ pDlgEditor->Broadcast( aHint );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+SdrObject* impLocalHitCorrection(SdrObject* pRetval, const Point& rPnt, USHORT nTol)
+{
+ DlgEdObj* pDlgEdObj = dynamic_cast< DlgEdObj* >(pRetval);
+
+ if(pDlgEdObj)
+ {
+ bool bExcludeInner(false);
+
+ if(0 != dynamic_cast< DlgEdForm* >(pRetval))
+ {
+ // from DlgEdForm::CheckHit; exclude inner for DlgEdForm
+ bExcludeInner = true;
+ }
+ else if(pDlgEdObj->supportsService("com.sun.star.awt.UnoControlGroupBoxModel"))
+ {
+ // from DlgEdObj::CheckHit; exclude inner for group shapes
+ bExcludeInner = true;
+ }
+
+ if(bExcludeInner)
+ {
+ // use direct model data; it's a DlgEdObj, so GetLastBoundRect()
+ // will access aOutRect directly
+ const Rectangle aOuterRectangle(pDlgEdObj->GetLastBoundRect());
+
+ if(!aOuterRectangle.IsEmpty()
+ && RECT_EMPTY != aOuterRectangle.Right()
+ && RECT_EMPTY != aOuterRectangle.Bottom())
+ {
+ basegfx::B2DRange aOuterRange(
+ aOuterRectangle.Left(), aOuterRectangle.Top(),
+ aOuterRectangle.Right(), aOuterRectangle.Bottom());
+
+ if(nTol)
+ {
+ aOuterRange.grow(-1.0 * nTol);
+ }
+
+ if(aOuterRange.isInside(basegfx::B2DPoint(rPnt.X(), rPnt.Y())))
+ {
+ pRetval = 0;
+ }
+ }
+ }
+ }
+
+ return pRetval;
+}
+
+SdrObject* DlgEdView::CheckSingleSdrObjectHit(const Point& rPnt, USHORT nTol, SdrObject* pObj, SdrPageView* pPV, ULONG nOptions, const SetOfByte* pMVisLay) const
+{
+ // call parent
+ SdrObject* pRetval = SdrView::CheckSingleSdrObjectHit(rPnt, nTol, pObj, pPV, nOptions, pMVisLay);
+
+ if(pRetval)
+ {
+ // check hitted object locally
+ pRetval = impLocalHitCorrection(pRetval, rPnt, nTol);
+ }
+
+ return pRetval;
+}
+
+//----------------------------------------------------------------------------
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/dlgresid.src b/basctl/source/dlged/dlgresid.src
new file mode 100644
index 000000000000..ee37d82233e1
--- /dev/null
+++ b/basctl/source/dlged/dlgresid.src
@@ -0,0 +1,175 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgresid.hrc"
+
+// Dialog Controls ---------------------------------------------------------------
+
+String RID_STR_CLASS_CONTROL
+{
+ Text = "Control" ;
+};
+String RID_STR_CLASS_DIALOG
+{
+ Text = "Dialog" ;
+};
+String RID_STR_CLASS_BUTTON
+{
+ Text = "CommandButton" ;
+};
+String RID_STR_CLASS_RADIOBUTTON
+{
+ Text = "OptionButton" ;
+};
+String RID_STR_CLASS_CHECKBOX
+{
+ Text = "CheckBox" ;
+};
+String RID_STR_CLASS_LISTBOX
+{
+ Text = "ListBox" ;
+};
+String RID_STR_CLASS_COMBOBOX
+{
+ Text = "ComboBox" ;
+};
+String RID_STR_CLASS_GROUPBOX
+{
+ Text = "FrameControl" ;
+};
+String RID_STR_CLASS_EDIT
+{
+ Text = "TextField" ;
+};
+String RID_STR_CLASS_FIXEDTEXT
+{
+ Text = "Label" ;
+};
+String RID_STR_CLASS_IMAGECONTROL
+{
+ Text = "ImageControl" ;
+};
+String RID_STR_CLASS_PROGRESSBAR
+{
+ Text = "ProgressBar" ;
+};
+String RID_STR_CLASS_SCROLLBAR
+{
+ Text = "ScrollBar" ;
+};
+String RID_STR_CLASS_FIXEDLINE
+{
+ Text = "FixedLine" ;
+};
+String RID_STR_CLASS_DATEFIELD
+{
+ Text = "DateField" ;
+};
+String RID_STR_CLASS_TIMEFIELD
+{
+ Text = "TimeField" ;
+};
+String RID_STR_CLASS_NUMERICFIELD
+{
+ Text = "NumericField" ;
+};
+String RID_STR_CLASS_CURRENCYFIELD
+{
+ Text = "CurrencyField" ;
+};
+String RID_STR_CLASS_FORMATTEDFIELD
+{
+ Text = "FormattedField" ;
+};
+String RID_STR_CLASS_PATTERNFIELD
+{
+ Text = "PatternField" ;
+};
+String RID_STR_CLASS_FILECONTROL
+{
+ Text = "FileControl" ;
+};
+String RID_STR_CLASS_TREECONTROL
+{
+ Text = "TreeControl" ;
+};
+
+
+// Property Browser Headline ----------------------------------------------------------------
+
+String RID_STR_BRWTITLE_PROPERTIES
+{
+ Text [ en-US ] = "Properties: ";
+};
+String RID_STR_BRWTITLE_NO_PROPERTIES
+{
+ Text [ en-US ] = "No Control marked";
+};
+String RID_STR_BRWTITLE_MULTISELECT
+{
+ Text [ en-US ] = "Multiselection";
+};
+
+// -----------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basctl/source/dlged/makefile.mk b/basctl/source/dlged/makefile.mk
new file mode 100644
index 000000000000..1b765ad91ae4
--- /dev/null
+++ b/basctl/source/dlged/makefile.mk
@@ -0,0 +1,63 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=basctl
+TARGET=dlged
+AUTOSEG=true
+VISIBILITY_HIDDEN=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+EXCEPTIONSFILES=$(SLO)$/dlged.obj \
+ $(SLO)$/dlgedobj.obj \
+ $(SLO)$/dlgedfac.obj \
+ $(SLO)$/dlgedlist.obj \
+ $(SLO)$/dlgedclip.obj \
+ $(SLO)$/propbrw.obj
+
+SLOFILES= $(EXCEPTIONSFILES) \
+ $(SLO)$/dlgedfunc.obj \
+ $(SLO)$/dlgedmod.obj \
+ $(SLO)$/dlgedpage.obj \
+ $(SLO)$/dlgedview.obj \
+ $(SLO)$/managelang.obj
+
+SRS1NAME=$(TARGET)
+SRC1FILES= dlgresid.src \
+ managelang.src
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/basctl/source/dlged/managelang.cxx b/basctl/source/dlged/managelang.cxx
new file mode 100644
index 000000000000..e33e68c3dd67
--- /dev/null
+++ b/basctl/source/dlged/managelang.cxx
@@ -0,0 +1,427 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include "managelang.hxx"
+#include "iderid.hxx"
+#include "localizationmgr.hxx"
+#include "iderdll.hxx"
+#include "basidesh.hxx"
+#include "basobj.hxx"
+
+#include "managelang.hrc"
+#include "dlgresid.hrc"
+#include "helpid.hrc"
+
+#include <com/sun/star/i18n/XBreakIterator.hpp>
+#include <com/sun/star/i18n/WordType.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/resource/XStringResourceManager.hpp>
+#include <comphelper/processfactory.hxx>
+#include <vcl/unohelp.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <unotools/localedatawrapper.hxx>
+#include <editeng/unolingu.hxx>
+
+#include <svtools/langtab.hxx>
+
+#include <sfx2/bindings.hxx>
+
+using namespace ::com::sun::star::i18n;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::resource;
+using namespace ::com::sun::star::uno;
+
+bool localesAreEqual( const Locale& rLocaleLeft, const Locale& rLocaleRight )
+{
+ bool bRet = ( rLocaleLeft.Language.equals( rLocaleRight.Language ) &&
+ rLocaleLeft.Country.equals( rLocaleRight.Country ) &&
+ rLocaleLeft.Variant.equals( rLocaleRight.Variant ) );
+ return bRet;
+}
+
+namespace {
+ long getLongestWordWidth( const String& rText, const Window& rWin )
+ {
+ long nWidth = 0;
+ Reference< XBreakIterator > xBreakIter( vcl::unohelper::CreateBreakIterator() );
+ sal_Int32 nStartPos = 0;
+ const Locale aLocale = Application::GetSettings().GetUILocale();
+ Boundary aBoundary = xBreakIter->getWordBoundary(
+ rText, nStartPos, aLocale, WordType::ANYWORD_IGNOREWHITESPACES, sal_True );
+
+ while ( aBoundary.startPos != aBoundary.endPos )
+ {
+ nStartPos = aBoundary.endPos;
+ String sWord( rText.Copy(
+ (USHORT)aBoundary.startPos,
+ (USHORT)aBoundary.endPos - (USHORT)aBoundary.startPos ) );
+ long nTemp = rWin.GetCtrlTextWidth( sWord );
+ if ( nTemp > nWidth )
+ nWidth = nTemp;
+ aBoundary = xBreakIter->nextWord(
+ rText, nStartPos, aLocale, WordType::ANYWORD_IGNOREWHITESPACES );
+ }
+
+ return nWidth;
+ }
+}
+
+ManageLanguageDialog::ManageLanguageDialog( Window* pParent, LocalizationMgr* _pLMgr ) :
+
+ ModalDialog( pParent, IDEResId( RID_DLG_MANAGE_LANGUAGE ) ),
+
+ m_aLanguageFT ( this, IDEResId( FT_LANGUAGE ) ),
+ m_aLanguageLB ( this, IDEResId( LB_LANGUAGE ) ),
+ m_aAddPB ( this, IDEResId( PB_ADD_LANG ) ),
+ m_aDeletePB ( this, IDEResId( PB_DEL_LANG ) ),
+ m_aMakeDefPB ( this, IDEResId( PB_MAKE_DEFAULT ) ),
+ m_aInfoFT ( this, IDEResId( FT_INFO ) ),
+ m_aBtnLine ( this, IDEResId( FL_BUTTONS ) ),
+ m_aHelpBtn ( this, IDEResId( PB_HELP ) ),
+ m_aCloseBtn ( this, IDEResId( PB_CLOSE ) ),
+ m_pLocalizationMgr ( _pLMgr ),
+ m_sDefLangStr ( IDEResId( STR_DEF_LANG ) ),
+ m_sDeleteStr ( IDEResId( STR_DELETE ) ),
+ m_sCreateLangStr ( IDEResId( STR_CREATE_LANG ) )
+
+{
+ FreeResource();
+
+ Init();
+ FillLanguageBox();
+ SelectHdl( NULL );
+}
+
+ManageLanguageDialog::~ManageLanguageDialog()
+{
+ ClearLanguageBox();
+}
+
+void ManageLanguageDialog::Init()
+{
+ // get current IDE
+ BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
+ String sLibName = pIDEShell->GetCurLibName();
+ // set dialog title with library name
+ String sText = GetText();
+ sText.SearchAndReplace( String::CreateFromAscii("$1"), sLibName );
+ SetText( sText );
+ // set handler
+ m_aAddPB.SetClickHdl( LINK( this, ManageLanguageDialog, AddHdl ) );
+ m_aDeletePB.SetClickHdl( LINK( this, ManageLanguageDialog, DeleteHdl ) );
+ m_aMakeDefPB.SetClickHdl( LINK( this, ManageLanguageDialog, MakeDefHdl ) );
+ m_aLanguageLB.SetSelectHdl( LINK( this, ManageLanguageDialog, SelectHdl ) );
+
+ m_aLanguageLB.EnableMultiSelection( TRUE );
+ CalcInfoSize();
+}
+
+void ManageLanguageDialog::CalcInfoSize()
+{
+ String sInfoStr = m_aInfoFT.GetText();
+ long nInfoWidth = m_aInfoFT.GetSizePixel().Width();
+ long nLongWord = getLongestWordWidth( sInfoStr, m_aInfoFT );
+ long nTxtWidth = m_aInfoFT.GetCtrlTextWidth( sInfoStr ) + nLongWord;
+ long nLines = ( nTxtWidth / nInfoWidth ) + 1;
+ if ( nLines > INFO_LINES_COUNT )
+ {
+ Size aFTSize = m_aLanguageFT.GetSizePixel();
+ Size aSize = m_aInfoFT.GetSizePixel();
+ long nNewHeight = aFTSize.Height() * nLines;
+ long nDelta = nNewHeight - aSize.Height();
+ aSize.Height() = nNewHeight;
+ m_aInfoFT.SetSizePixel( aSize );
+
+ aSize = m_aLanguageLB.GetSizePixel();
+ aSize.Height() -= nDelta;
+ m_aLanguageLB.SetSizePixel( aSize );
+
+ Point aNewPos = m_aInfoFT.GetPosPixel();
+ aNewPos.Y() -= nDelta;
+ m_aInfoFT.SetPosPixel( aNewPos );
+ aNewPos = m_aMakeDefPB.GetPosPixel();
+ aNewPos.Y() -= nDelta;
+ m_aMakeDefPB.SetPosPixel( aNewPos );
+ }
+}
+
+void ManageLanguageDialog::FillLanguageBox()
+{
+ DBG_ASSERT( m_pLocalizationMgr, "ManageLanguageDialog::FillLanguageBox(): no localization manager" );
+
+ if ( m_pLocalizationMgr->isLibraryLocalized() )
+ {
+ SvtLanguageTable aLangTable;
+ Locale aDefaultLocale = m_pLocalizationMgr->getStringResourceManager()->getDefaultLocale();
+ Sequence< Locale > aLocaleSeq = m_pLocalizationMgr->getStringResourceManager()->getLocales();
+ const Locale* pLocale = aLocaleSeq.getConstArray();
+ INT32 i, nCount = aLocaleSeq.getLength();
+ for ( i = 0; i < nCount; ++i )
+ {
+ bool bIsDefault = localesAreEqual( aDefaultLocale, pLocale[i] );
+ LanguageType eLangType = SvxLocaleToLanguage( pLocale[i] );
+ String sLanguage = aLangTable.GetString( eLangType );
+ if ( bIsDefault )
+ {
+ sLanguage += ' ';
+ sLanguage += m_sDefLangStr;
+ }
+ USHORT nPos = m_aLanguageLB.InsertEntry( sLanguage );
+ m_aLanguageLB.SetEntryData( nPos, new LanguageEntry( sLanguage, pLocale[i], bIsDefault ) );
+ }
+ }
+ else
+ m_aLanguageLB.InsertEntry( m_sCreateLangStr );
+}
+
+void ManageLanguageDialog::ClearLanguageBox()
+{
+ USHORT i, nCount = m_aLanguageLB.GetEntryCount();
+ for ( i = 0; i < nCount; ++i )
+ {
+ LanguageEntry* pEntry = (LanguageEntry*)( m_aLanguageLB.GetEntryData(i) );
+ if ( pEntry )
+ delete pEntry;
+ }
+ m_aLanguageLB.Clear();
+}
+
+IMPL_LINK( ManageLanguageDialog, AddHdl, Button *, EMPTYARG )
+{
+ SetDefaultLanguageDialog aDlg( this, m_pLocalizationMgr );
+ if ( RET_OK == aDlg.Execute() )
+ {
+ // add new locales
+ Sequence< Locale > aLocaleSeq = aDlg.GetLocales();
+ m_pLocalizationMgr->handleAddLocales( aLocaleSeq );
+ // update listbox
+ ClearLanguageBox();
+ FillLanguageBox();
+
+ SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
+ if ( pBindings )
+ pBindings->Invalidate( SID_BASICIDE_CURRENT_LANG );
+ }
+ return 1;
+}
+
+IMPL_LINK( ManageLanguageDialog, DeleteHdl, Button *, EMPTYARG )
+{
+ QueryBox aQBox( this, IDEResId( RID_QRYBOX_LANGUAGE ) );
+ aQBox.SetButtonText( RET_OK, m_sDeleteStr );
+ if ( aQBox.Execute() == RET_OK )
+ {
+ USHORT i, nCount = m_aLanguageLB.GetSelectEntryCount();
+ USHORT nPos = m_aLanguageLB.GetSelectEntryPos();
+ // remove locales
+ Sequence< Locale > aLocaleSeq( nCount );
+ for ( i = 0; i < nCount; ++i )
+ {
+ USHORT nSelPos = m_aLanguageLB.GetSelectEntryPos(i);
+ LanguageEntry* pEntry = (LanguageEntry*)( m_aLanguageLB.GetEntryData( nSelPos ) );
+ if ( pEntry )
+ aLocaleSeq[i] = pEntry->m_aLocale;
+ }
+ m_pLocalizationMgr->handleRemoveLocales( aLocaleSeq );
+ // update listbox
+ ClearLanguageBox();
+ FillLanguageBox();
+ // reset selection
+ nCount = m_aLanguageLB.GetEntryCount();
+ if ( nCount <= nPos )
+ nPos = nCount - 1;
+ m_aLanguageLB.SelectEntryPos( nPos );
+ SelectHdl( NULL );
+ }
+ return 1;
+}
+
+IMPL_LINK( ManageLanguageDialog, MakeDefHdl, Button *, EMPTYARG )
+{
+ USHORT nPos = m_aLanguageLB.GetSelectEntryPos();
+ LanguageEntry* pSelectEntry = (LanguageEntry*)( m_aLanguageLB.GetEntryData( nPos ) );
+ if ( pSelectEntry && !pSelectEntry->m_bIsDefault )
+ {
+ // set new default entry
+ m_pLocalizationMgr->handleSetDefaultLocale( pSelectEntry->m_aLocale );
+ // update Listbox
+ ClearLanguageBox();
+ FillLanguageBox();
+ // reset selection
+ m_aLanguageLB.SelectEntryPos( nPos );
+ SelectHdl( NULL );
+ }
+
+ return 1;
+}
+
+IMPL_LINK( ManageLanguageDialog, SelectHdl, ListBox *, EMPTYARG )
+{
+ USHORT nCount = m_aLanguageLB.GetEntryCount();
+ bool bEmpty = ( !nCount ||
+ m_aLanguageLB.GetEntryPos( m_sCreateLangStr ) != LISTBOX_ENTRY_NOTFOUND );
+ bool bSelect = ( m_aLanguageLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND );
+ bool bEnable = ( !bEmpty && bSelect != false );
+
+ m_aDeletePB.Enable( bEnable != false );
+ m_aMakeDefPB.Enable( bEnable != false && nCount > 1 && m_aLanguageLB.GetSelectEntryCount() == 1 );
+
+ return 1;
+}
+
+// class SetDefaultLanguageDialog -----------------------------------------------
+
+SetDefaultLanguageDialog::SetDefaultLanguageDialog( Window* pParent, LocalizationMgr* _pLMgr ) :
+
+ ModalDialog( pParent, IDEResId( RID_DLG_SETDEF_LANGUAGE ) ),
+
+ m_aLanguageFT ( this, IDEResId( FT_DEF_LANGUAGE ) ),
+ m_pLanguageLB ( new SvxLanguageBox( this, IDEResId( LB_DEF_LANGUAGE ) ) ),
+ m_pCheckLangLB ( NULL ),
+ m_aInfoFT ( this, IDEResId( FT_DEF_INFO ) ),
+ m_aBtnLine ( this, IDEResId( FL_DEF_BUTTONS ) ),
+ m_aOKBtn ( this, IDEResId( PB_DEF_OK ) ),
+ m_aCancelBtn ( this, IDEResId( PB_DEF_CANCEL ) ),
+ m_aHelpBtn ( this, IDEResId( PB_DEF_HELP ) ),
+
+ m_pLocalizationMgr( _pLMgr )
+
+{
+ if ( m_pLocalizationMgr->isLibraryLocalized() )
+ {
+ // change to "Add Interface Language" mode
+ SetHelpId( HID_BASICIDE_ADDNEW_LANGUAGE );
+ m_pCheckLangLB = new SvxCheckListBox( this, IDEResId( LB_ADD_LANGUAGE ) );
+ SetText( String( IDEResId( STR_ADDLANG_TITLE ) ) );
+ m_aLanguageFT.SetText( String( IDEResId( STR_ADDLANG_LABEL ) ) );
+ m_aInfoFT.SetText( String( IDEResId( STR_ADDLANG_INFO ) ) );
+ }
+
+ FreeResource();
+
+ FillLanguageBox();
+ CalcInfoSize();
+}
+
+SetDefaultLanguageDialog::~SetDefaultLanguageDialog()
+{
+ delete m_pLanguageLB;
+ delete m_pCheckLangLB;
+}
+
+void SetDefaultLanguageDialog::FillLanguageBox()
+{
+ // fill list with all languages
+ m_pLanguageLB->SetLanguageList( LANG_LIST_ALL, FALSE );
+ // remove the already localized languages
+ Sequence< Locale > aLocaleSeq = m_pLocalizationMgr->getStringResourceManager()->getLocales();
+ const Locale* pLocale = aLocaleSeq.getConstArray();
+ INT32 i, nCount = aLocaleSeq.getLength();
+ for ( i = 0; i < nCount; ++i )
+ m_pLanguageLB->RemoveLanguage( SvxLocaleToLanguage( pLocale[i] ) );
+
+ // fill checklistbox if not in default mode
+ if ( m_pLocalizationMgr->isLibraryLocalized() )
+ {
+ USHORT j, nCount_ = m_pLanguageLB->GetEntryCount();
+ for ( j = 0; j < nCount_; ++j )
+ {
+ m_pCheckLangLB->InsertEntry(
+ m_pLanguageLB->GetEntry(j), LISTBOX_APPEND, m_pLanguageLB->GetEntryData(j) );
+ }
+ delete m_pLanguageLB;
+ m_pLanguageLB = NULL;
+ }
+ else
+ // preselect current UI language
+ m_pLanguageLB->SelectLanguage( Application::GetSettings().GetUILanguage() );
+}
+
+void SetDefaultLanguageDialog::CalcInfoSize()
+{
+ String sInfoStr = m_aInfoFT.GetText();
+ long nInfoWidth = m_aInfoFT.GetSizePixel().Width();
+ long nLongWord = getLongestWordWidth( sInfoStr, m_aInfoFT );
+ long nTxtWidth = m_aInfoFT.GetCtrlTextWidth( sInfoStr ) + nLongWord;
+ long nLines = ( nTxtWidth / nInfoWidth ) + 1;
+ if ( nLines > INFO_LINES_COUNT )
+ {
+ Size aFTSize = m_aLanguageFT.GetSizePixel();
+ Size aSize = m_aInfoFT.GetSizePixel();
+ long nNewHeight = aFTSize.Height() * nLines;
+ long nDelta = nNewHeight - aSize.Height();
+ aSize.Height() = nNewHeight;
+ m_aInfoFT.SetSizePixel( aSize );
+
+ Window* pWin = ( m_pLanguageLB != NULL ) ? dynamic_cast< Window* >( m_pLanguageLB )
+ : dynamic_cast< Window* >( m_pCheckLangLB );
+ aSize = pWin->GetSizePixel();
+ aSize.Height() -= nDelta;
+ pWin->SetSizePixel( aSize );
+
+ Point aNewPos = m_aInfoFT.GetPosPixel();
+ aNewPos.Y() -= nDelta;
+ m_aInfoFT.SetPosPixel( aNewPos );
+ }
+}
+
+Sequence< Locale > SetDefaultLanguageDialog::GetLocales() const
+{
+ bool bNotLocalized = !m_pLocalizationMgr->isLibraryLocalized();
+ INT32 nSize = bNotLocalized ? 1 : m_pCheckLangLB->GetCheckedEntryCount();
+ Sequence< Locale > aLocaleSeq( nSize );
+ if ( bNotLocalized )
+ {
+ Locale aLocale;
+ SvxLanguageToLocale( aLocale, m_pLanguageLB->GetSelectLanguage() );
+ aLocaleSeq[0] = aLocale;
+ }
+ else
+ {
+ USHORT i, nCount = static_cast< USHORT >( m_pCheckLangLB->GetEntryCount() );
+ INT32 j = 0;
+ for ( i = 0; i < nCount; ++i )
+ {
+ if ( m_pCheckLangLB->IsChecked(i) )
+ {
+ LanguageType eType = LanguageType( (ULONG)m_pCheckLangLB->GetEntryData(i) );
+ Locale aLocale;
+ SvxLanguageToLocale( aLocale, eType );
+ aLocaleSeq[j++] = aLocale;
+ }
+ }
+ DBG_ASSERT( nSize == j, "SetDefaultLanguageDialog::GetLocales(): invalid indexes" );
+ }
+ return aLocaleSeq;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/dlged/managelang.hrc b/basctl/source/dlged/managelang.hrc
new file mode 100644
index 000000000000..e3a7f7f1edde
--- /dev/null
+++ b/basctl/source/dlged/managelang.hrc
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * 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 _BASCTL_MANAGELANG_HRC
+#define _BASCTL_MANAGELANG_HRC
+
+// Include -----------------------------------------------------------------------
+
+#include <svtools/controldims.hrc>
+
+// Dialog Control Id's -----------------------------------------------------------
+
+#define FT_LANGUAGE 1
+#define LB_LANGUAGE 2
+#define PB_ADD_LANG 3
+#define PB_DEL_LANG 4
+#define PB_MAKE_DEFAULT 5
+#define FT_INFO 6
+#define FL_BUTTONS 7
+#define PB_HELP 8
+#define PB_CLOSE 9
+#define STR_DEF_LANG 10
+#define STR_DELETE 11
+#define STR_CREATE_LANG 12
+
+#define FT_DEF_LANGUAGE 1
+#define LB_DEF_LANGUAGE 2
+#define LB_ADD_LANGUAGE 3
+#define FT_DEF_INFO 4
+#define FL_DEF_BUTTONS 5
+#define PB_DEF_OK 6
+#define PB_DEF_CANCEL 7
+#define PB_DEF_HELP 8
+#define STR_ADDLANG_TITLE 9
+#define STR_ADDLANG_LABEL 10
+#define STR_ADDLANG_INFO 11
+
+// Metrics -----------------------------------------------------------------------
+
+#define MANAGE_DLG_WIDTH 240
+#define MANAGE_DLG_HEIGHT 180
+#define INFO_LINES_COUNT 3
+
+#define MANAGE_COL1 RSC_SP_DLG_INNERBORDER_LEFT
+#define MANAGE_COL2 (MANAGE_DLG_WIDTH - RSC_SP_DLG_INNERBORDER_RIGHT - 2*RSC_CD_PUSHBUTTON_WIDTH - RSC_SP_CTRL_X)
+#define MANAGE_COL3 (MANAGE_COL2 + RSC_CD_PUSHBUTTON_WIDTH + RSC_SP_CTRL_X)
+
+#define MANAGE_ROW1 RSC_SP_DLG_INNERBORDER_TOP
+#define MANAGE_ROW2 (MANAGE_ROW1 + RSC_CD_FIXEDTEXT_HEIGHT + RSC_SP_CTRL_DESC_Y)
+#define MANAGE_ROW3 (MANAGE_ROW2 + RSC_CD_PUSHBUTTON_HEIGHT + RSC_SP_CTRL_GROUP_Y)
+
+#define MANAGE_ROW7 (MANAGE_DLG_HEIGHT - RSC_SP_DLG_INNERBORDER_BOTTOM - RSC_CD_PUSHBUTTON_HEIGHT)
+#define MANAGE_ROW6 (MANAGE_ROW7 - RSC_SP_FLGR_SPACE_Y - RSC_CD_FIXEDLINE_HEIGHT)
+#define MANAGE_ROW5 (MANAGE_ROW6 - RSC_SP_FLGR_SPACE_Y - INFO_LINES_COUNT*RSC_CD_FIXEDTEXT_HEIGHT)
+#define MANAGE_ROW4 (MANAGE_ROW5 - RSC_SP_CTRL_GROUP_Y - RSC_CD_PUSHBUTTON_HEIGHT)
+#define MANAGE_ROW4A (MANAGE_ROW4 + RSC_CD_PUSHBUTTON_HEIGHT)
+
+#define MANAGE_LB_WIDTH (MANAGE_COL3 - RSC_SP_CTRL_X - RSC_SP_DLG_INNERBORDER_LEFT)
+#define MANAGE_LB_HEIGHT (MANAGE_ROW4A - MANAGE_ROW2)
+
+#define SETDEF_DLG_WIDTH 180
+#define SETDEF_DLG_HEIGHT 165
+
+#define SETDEF_COL1 RSC_SP_DLG_INNERBORDER_LEFT
+#define SETDEF_COL2 (SETDEF_DLG_WIDTH - RSC_SP_DLG_INNERBORDER_RIGHT - 3*RSC_CD_PUSHBUTTON_WIDTH - RSC_SP_CTRL_GROUP_X - RSC_SP_CTRL_X)
+#define SETDEF_COL3 (SETDEF_COL2 + RSC_CD_PUSHBUTTON_WIDTH + RSC_SP_CTRL_GROUP_X)
+#define SETDEF_COL4 (SETDEF_COL3 + RSC_CD_PUSHBUTTON_WIDTH + RSC_SP_CTRL_X)
+#define SETDEF_COL4A (SETDEF_COL4 + RSC_CD_PUSHBUTTON_WIDTH)
+
+#define SETDEF_ROW1 RSC_SP_DLG_INNERBORDER_TOP
+#define SETDEF_ROW2 (SETDEF_ROW1 + RSC_CD_FIXEDTEXT_HEIGHT + RSC_SP_CTRL_DESC_Y)
+
+#define SETDEF_ROW5 (SETDEF_DLG_HEIGHT - RSC_SP_DLG_INNERBORDER_BOTTOM - RSC_CD_PUSHBUTTON_HEIGHT)
+#define SETDEF_ROW4 (SETDEF_ROW5 - RSC_SP_FLGR_SPACE_Y - RSC_CD_FIXEDLINE_HEIGHT)
+#define SETDEF_ROW3 (SETDEF_ROW4 - RSC_SP_FLGR_SPACE_Y - INFO_LINES_COUNT*RSC_CD_FIXEDTEXT_HEIGHT)
+#define SETDEF_ROW3A (SETDEF_ROW3 - RSC_SP_CTRL_GROUP_Y)
+
+#define SETDEF_LB_WIDTH (SETDEF_COL4A - SETDEF_COL1)
+#define SETDEF_LB_HEIGHT (SETDEF_ROW3A - SETDEF_ROW2)
+
+#endif // _BASCTL_MANAGELANG_HRC
+
diff --git a/basctl/source/dlged/managelang.src b/basctl/source/dlged/managelang.src
new file mode 100644
index 000000000000..b03421e1aa22
--- /dev/null
+++ b/basctl/source/dlged/managelang.src
@@ -0,0 +1,232 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgresid.hrc"
+#include "managelang.hrc"
+#include "helpid.hrc"
+
+ModalDialog RID_DLG_MANAGE_LANGUAGE
+{
+ HelpId = HID_BASICIDE_MANAGE_LANGUAGE ;
+ OutputSize = TRUE ;
+ Size = MAP_APPFONT ( MANAGE_DLG_WIDTH , MANAGE_DLG_HEIGHT ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "Manage User Interface Languages [$1]" ;
+ FixedText FT_LANGUAGE
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL1 , MANAGE_ROW1 ) ;
+ Size = MAP_APPFONT ( MANAGE_LB_WIDTH , RSC_CD_FIXEDTEXT_HEIGHT ) ;
+ Text [ en-US ] = "Present Languages" ;
+ };
+ ListBox LB_LANGUAGE
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL1 , MANAGE_ROW2 ) ;
+ Size = MAP_APPFONT ( MANAGE_LB_WIDTH , MANAGE_LB_HEIGHT ) ;
+ Border = TRUE;
+ AutoHScroll = TRUE ;
+ };
+ PushButton PB_ADD_LANG
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL3 , MANAGE_ROW2 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Add..." ;
+ };
+ PushButton PB_DEL_LANG
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL3 , MANAGE_ROW3 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Delete" ;
+ };
+ PushButton PB_MAKE_DEFAULT
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL3 , MANAGE_ROW4 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Default" ;
+ };
+ FixedText FT_INFO
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL1 , MANAGE_ROW5 ) ;
+ Size = MAP_APPFONT ( MANAGE_DLG_WIDTH - 2*RSC_SP_FLGR_INNERBORDER_LEFT, INFO_LINES_COUNT*RSC_CD_FIXEDTEXT_HEIGHT ) ;
+ WordBreak = TRUE ;
+ Text [ en-US ] = "The default language is used if no localization for a user interface locale is present. Furthermore all strings from the default language are copied to resources of newly added languages." ;
+ };
+ FixedLine FL_BUTTONS
+ {
+ Pos = MAP_APPFONT ( 0 , MANAGE_ROW6 ) ;
+ Size = MAP_APPFONT ( MANAGE_DLG_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL2 , MANAGE_ROW7 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ };
+ OKButton PB_CLOSE
+ {
+ Pos = MAP_APPFONT ( MANAGE_COL3 , MANAGE_ROW7 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Text [ en-US ] = "~Close" ;
+ };
+ String STR_DEF_LANG
+ {
+ Text [ en-US ] = "[Default Language]" ;
+ };
+ String STR_DELETE
+ {
+ Text [ en-US ] = "~Delete" ;
+ };
+ String STR_CREATE_LANG
+ {
+ Text [ en-US ] = "<Press 'Add' to create language resources>" ;
+ };
+};
+
+QueryBox RID_QRYBOX_LANGUAGE
+{
+ Title [ en-US ] = "Delete Language Resources" ;
+ Message [ en-US ] = "You are about to delete the resources for the selected language(s). All user interface strings for this language(s) will be deleted.\n\nDo you want to delete the resources of the selected language(s)?";
+ BUTTONS = WB_OK_CANCEL ;
+ DEFBUTTON = WB_DEF_CANCEL ;
+};
+
+ModalDialog RID_DLG_SETDEF_LANGUAGE
+{
+ HelpId = HID_BASICIDE_SETDEFAULT_LANGUAGE ;
+ OutputSize = TRUE ;
+ Size = MAP_APPFONT ( SETDEF_DLG_WIDTH , SETDEF_DLG_HEIGHT ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "Set Default User Interface Language" ;
+ FixedText FT_DEF_LANGUAGE
+ {
+ Pos = MAP_APPFONT ( SETDEF_COL1 , SETDEF_ROW1 ) ;
+ Size = MAP_APPFONT ( SETDEF_LB_WIDTH , RSC_CD_FIXEDTEXT_HEIGHT ) ;
+ Text [ en-US ] = "Default language" ;
+ };
+ ListBox LB_DEF_LANGUAGE
+ {
+ Pos = MAP_APPFONT ( SETDEF_COL1 , SETDEF_ROW2 ) ;
+ Size = MAP_APPFONT ( SETDEF_LB_WIDTH , SETDEF_LB_HEIGHT ) ;
+ Border = TRUE;
+ AutoHScroll = TRUE ;
+ };
+ Control LB_ADD_LANGUAGE
+ {
+ HelpId = HID_BASICIDE_ADDNEW_CONTROL ;
+ Pos = MAP_APPFONT ( SETDEF_COL1 , SETDEF_ROW2 ) ;
+ Size = MAP_APPFONT ( SETDEF_LB_WIDTH , SETDEF_LB_HEIGHT ) ;
+ };
+ FixedText FT_DEF_INFO
+ {
+ Pos = MAP_APPFONT ( SETDEF_COL1 , SETDEF_ROW3 ) ;
+ Size = MAP_APPFONT ( SETDEF_LB_WIDTH, INFO_LINES_COUNT*RSC_CD_FIXEDTEXT_HEIGHT ) ;
+ WordBreak = TRUE ;
+ Text [ en-US ] = "Select a language to define the default user interface language. All currently present strings will be assigned to the resources created for the selected language." ;
+ };
+ FixedLine FL_DEF_BUTTONS
+ {
+ Pos = MAP_APPFONT ( 0 , SETDEF_ROW4 ) ;
+ Size = MAP_APPFONT ( SETDEF_DLG_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
+ };
+ OKButton PB_DEF_OK
+ {
+ Pos = MAP_APPFONT ( SETDEF_COL2 , SETDEF_ROW5 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_DEF_CANCEL
+ {
+ Pos = MAP_APPFONT ( SETDEF_COL3 , SETDEF_ROW5 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_DEF_HELP
+ {
+ Pos = MAP_APPFONT ( SETDEF_COL4 , SETDEF_ROW5 ) ;
+ Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ;
+ TabStop = TRUE ;
+ };
+ String STR_ADDLANG_TITLE
+ {
+ Text [ en-US ] = "Add User Interface Languages" ;
+ };
+ String STR_ADDLANG_LABEL
+ {
+ Text [ en-US ] = "Available Languages" ;
+ };
+ String STR_ADDLANG_INFO
+ {
+ Text [ en-US ] = "Select languages to be added. Resources for these languages will be created in the library. Strings of the current default user interface language will be copied to these new resources by default." ;
+ };
+};
+
+// -----------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basctl/source/dlged/propbrw.cxx b/basctl/source/dlged/propbrw.cxx
new file mode 100644
index 000000000000..d210482a8ef5
--- /dev/null
+++ b/basctl/source/dlged/propbrw.cxx
@@ -0,0 +1,624 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basctl.hxx"
+
+#include <sal/macros.h>
+#include "propbrw.hxx"
+#include "dlgedobj.hxx"
+
+#include "basidesh.hxx"
+#include <iderid.hxx>
+
+#include <dlgresid.hrc>
+#include <tools/debug.hxx>
+#include <tools/diagnose_ex.h>
+#include <sfx2/bindings.hxx>
+#include <sfx2/childwin.hxx>
+#include <sfx2/objitem.hxx>
+
+#include <svx/svxids.hrc>
+#include <tools/shl.hxx>
+#include <vcl/stdtext.hxx>
+#include <svx/svdview.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svditer.hxx>
+#include <sfx2/viewsh.hxx>
+
+#include <toolkit/unohlp.hxx>
+#include <comphelper/property.hxx>
+#include <comphelper/composedprops.hxx>
+#include <comphelper/stl_types.hxx>
+#include <comphelper/types.hxx>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/inspection/XObjectInspector.hpp>
+#include <comphelper/processfactory.hxx>
+#include <cppuhelper/component_context.hxx>
+
+#include <sfx2/dispatch.hxx>
+#include <sfx2/viewfrm.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+using namespace ::comphelper;
+
+//============================================================================
+// PropBrwMgr
+//============================================================================
+
+SFX_IMPL_FLOATINGWINDOW(PropBrwMgr, SID_SHOW_PROPERTYBROWSER)
+
+//----------------------------------------------------------------------------
+
+PropBrwMgr::PropBrwMgr( Window* _pParent, sal_uInt16 nId,
+ SfxBindings *pBindings, SfxChildWinInfo* pInfo)
+ :SfxChildWindow( _pParent, nId )
+{
+ // set current selection
+ SfxViewShell* pShell = SfxViewShell::Current();
+ pWindow = new PropBrw(
+ ::comphelper::getProcessServiceFactory(),
+ pBindings,
+ this,
+ _pParent,
+ pShell ? pShell->GetCurrentDocument() : Reference< XModel >()
+ );
+
+ eChildAlignment = SFX_ALIGN_NOALIGNMENT;
+ ((SfxFloatingWindow*)pWindow)->Initialize( pInfo );
+
+ ((PropBrw*)pWindow)->Update( pShell );
+}
+
+//----------------------------------------------------------------------------
+void PropBrw::Update( const SfxViewShell* _pShell )
+{
+ const BasicIDEShell* pBasicIDEShell = dynamic_cast< const BasicIDEShell* >( _pShell );
+ OSL_ENSURE( pBasicIDEShell || !_pShell, "PropBrw::Update: invalid shell!" );
+ if ( pBasicIDEShell )
+ {
+ ImplUpdate( pBasicIDEShell->GetCurrentDocument(), pBasicIDEShell->GetCurDlgView() );
+ }
+ else if ( _pShell )
+ {
+ ImplUpdate( NULL, _pShell->GetDrawView() );
+ }
+ else
+ {
+ ImplUpdate( NULL, NULL );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+const long STD_WIN_SIZE_X = 300;
+const long STD_WIN_SIZE_Y = 350;
+
+const long STD_MIN_SIZE_X = 250;
+const long STD_MIN_SIZE_Y = 250;
+
+const long STD_WIN_POS_X = 50;
+const long STD_WIN_POS_Y = 50;
+const long WIN_BORDER = 2;
+const long MIN_WIN_SIZE_X = 50;
+const long MIN_WIN_SIZE_Y = 50;
+
+//----------------------------------------------------------------------------
+
+//============================================================================
+// PropBrw
+//============================================================================
+
+DBG_NAME(PropBrw)
+
+//----------------------------------------------------------------------------
+
+PropBrw::PropBrw( const Reference< XMultiServiceFactory >& _xORB, SfxBindings* _pBindings, PropBrwMgr* _pMgr, Window* _pParent,
+ const Reference< XModel >& _rxContextDocument )
+ :SfxFloatingWindow( _pBindings, _pMgr, _pParent, WinBits( WB_STDMODELESS | WB_SIZEABLE | WB_3DLOOK | WB_ROLLABLE ) )
+ ,m_bInitialStateChange(sal_True)
+ ,m_xORB(_xORB)
+ ,m_xContextDocument( _rxContextDocument )
+ ,pView( NULL )
+{
+ DBG_CTOR(PropBrw,NULL);
+
+ Size aPropWinSize(STD_WIN_SIZE_X,STD_WIN_SIZE_Y);
+ SetMinOutputSizePixel(Size(STD_MIN_SIZE_X,STD_MIN_SIZE_Y));
+ SetOutputSizePixel(aPropWinSize);
+
+ try
+ {
+ // create a frame wrapper for myself
+ m_xMeAsFrame = Reference< XFrame >(m_xORB->createInstance(::rtl::OUString::createFromAscii("com.sun.star.frame.Frame")), UNO_QUERY);
+ if (m_xMeAsFrame.is())
+ {
+ m_xMeAsFrame->initialize( VCLUnoHelper::GetInterface ( this ) );
+ m_xMeAsFrame->setName(::rtl::OUString::createFromAscii("form property browser")); // change name!
+ }
+ }
+ catch (Exception&)
+ {
+ DBG_ERROR("PropBrw::PropBrw: could not create/initialize my frame!");
+ m_xMeAsFrame.clear();
+ }
+
+ ImplReCreateController();
+}
+
+//----------------------------------------------------------------------------
+
+void PropBrw::ImplReCreateController()
+{
+ OSL_PRECOND( m_xMeAsFrame.is(), "PropBrw::ImplCreateController: no frame for myself!" );
+ if ( !m_xMeAsFrame.is() )
+ return;
+
+ if ( m_xBrowserController.is() )
+ ImplDestroyController();
+
+ try
+ {
+ Reference< XPropertySet > xFactoryProperties( m_xORB, UNO_QUERY_THROW );
+ Reference< XComponentContext > xOwnContext(
+ xFactoryProperties->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) ),
+ UNO_QUERY_THROW );
+
+ // a ComponentContext for the
+ ::cppu::ContextEntry_Init aHandlerContextInfo[] =
+ {
+ ::cppu::ContextEntry_Init( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DialogParentWindow" ) ), makeAny( VCLUnoHelper::GetInterface ( this ) ) ),
+ ::cppu::ContextEntry_Init( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ContextDocument" ) ), makeAny( m_xContextDocument ) )
+ };
+ Reference< XComponentContext > xInspectorContext(
+ ::cppu::createComponentContext( aHandlerContextInfo, SAL_N_ELEMENTS( aHandlerContextInfo ), xOwnContext ) );
+
+ // create a property browser controller
+ Reference< XMultiComponentFactory > xFactory( xInspectorContext->getServiceManager(), UNO_QUERY_THROW );
+ static const ::rtl::OUString s_sControllerServiceName = ::rtl::OUString::createFromAscii("com.sun.star.awt.PropertyBrowserController");
+ m_xBrowserController = Reference< XPropertySet >(
+ xFactory->createInstanceWithContext( s_sControllerServiceName, xInspectorContext ), UNO_QUERY
+ );
+ if ( !m_xBrowserController.is() )
+ {
+ ShowServiceNotAvailableError( GetParent(), s_sControllerServiceName, sal_True );
+ }
+ else
+ {
+ Reference< XController > xAsXController( m_xBrowserController, UNO_QUERY );
+ DBG_ASSERT(xAsXController.is(), "PropBrw::PropBrw: invalid controller object!");
+ if (!xAsXController.is())
+ {
+ ::comphelper::disposeComponent(m_xBrowserController);
+ m_xBrowserController.clear();
+ }
+ else
+ {
+ xAsXController->attachFrame(m_xMeAsFrame);
+ m_xBrowserComponentWindow = m_xMeAsFrame->getComponentWindow();
+ DBG_ASSERT(m_xBrowserComponentWindow.is(), "PropBrw::PropBrw: attached the controller, but have no component window!");
+ }
+ }
+
+ Point aPropWinPos = Point( WIN_BORDER, WIN_BORDER );
+ Size aPropWinSize(STD_WIN_SIZE_X,STD_WIN_SIZE_Y);
+ aPropWinSize.Width() -= (2*WIN_BORDER);
+ aPropWinSize.Height() -= (2*WIN_BORDER);
+
+ if ( m_xBrowserComponentWindow.is() )
+ {
+ m_xBrowserComponentWindow->setPosSize(aPropWinPos.X(), aPropWinPos.Y(), aPropWinSize.Width(), aPropWinSize.Height(),
+ ::com::sun::star::awt::PosSize::WIDTH | ::com::sun::star::awt::PosSize::HEIGHT |
+ ::com::sun::star::awt::PosSize::X | ::com::sun::star::awt::PosSize::Y);
+ m_xBrowserComponentWindow->setVisible(sal_True);
+ }
+ }
+ catch (Exception&)
+ {
+ DBG_ERROR("PropBrw::PropBrw: could not create/initialize the browser controller!");
+ try
+ {
+ ::comphelper::disposeComponent(m_xBrowserController);
+ ::comphelper::disposeComponent(m_xBrowserComponentWindow);
+ }
+ catch(Exception&)
+ {
+ }
+
+ m_xBrowserController.clear();
+ m_xBrowserComponentWindow.clear();
+ }
+
+ Resize();
+}
+
+//----------------------------------------------------------------------------
+
+PropBrw::~PropBrw()
+{
+ if ( m_xBrowserController.is() )
+ ImplDestroyController();
+
+ DBG_DTOR(PropBrw,NULL);
+}
+
+//----------------------------------------------------------------------------
+
+void PropBrw::ImplDestroyController()
+{
+ implSetNewObject( Reference< XPropertySet >() );
+
+ if ( m_xMeAsFrame.is() )
+ m_xMeAsFrame->setComponent( NULL, NULL );
+
+ Reference< XController > xAsXController( m_xBrowserController, UNO_QUERY );
+ if ( xAsXController.is() )
+ xAsXController->attachFrame( NULL );
+
+ try
+ {
+ ::comphelper::disposeComponent( m_xBrowserController );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ m_xBrowserController.clear();
+}
+
+//----------------------------------------------------------------------------
+
+sal_Bool PropBrw::Close()
+{
+ ImplDestroyController();
+
+ if( IsRollUp() )
+ RollDown();
+
+ sal_Bool bClose = SfxFloatingWindow::Close();
+
+ return bClose;
+}
+
+//----------------------------------------------------------------------------
+Sequence< Reference< XInterface > >
+ PropBrw::CreateMultiSelectionSequence( const SdrMarkList& _rMarkList )
+{
+ Sequence< Reference< XInterface > > aSeq;
+ InterfaceArray aInterfaces;
+
+ sal_uInt32 nMarkCount = _rMarkList.GetMarkCount();
+ for( sal_uInt32 i = 0 ; i < nMarkCount ; i++ )
+ {
+ SdrObject* pCurrent = _rMarkList.GetMark(i)->GetMarkedSdrObj();
+
+ SdrObjListIter* pGroupIterator = NULL;
+ if (pCurrent->IsGroupObject())
+ {
+ pGroupIterator = new SdrObjListIter(*pCurrent->GetSubList());
+ pCurrent = pGroupIterator->IsMore() ? pGroupIterator->Next() : NULL;
+ }
+
+ while (pCurrent)
+ {
+ DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pCurrent);
+ if (pDlgEdObj)
+ {
+ Reference< XInterface > xControlInterface(pDlgEdObj->GetUnoControlModel(), UNO_QUERY);
+ if (xControlInterface.is())
+ aInterfaces.push_back(xControlInterface);
+ }
+
+ // next element
+ pCurrent = pGroupIterator && pGroupIterator->IsMore() ? pGroupIterator->Next() : NULL;
+ }
+ if (pGroupIterator)
+ delete pGroupIterator;
+ }
+
+ sal_Int32 nCount = aInterfaces.size();
+ aSeq.realloc( nCount );
+ Reference< XInterface >* pInterfaces = aSeq.getArray();
+ for( sal_Int32 i = 0 ; i < nCount ; i++ )
+ pInterfaces[i] = aInterfaces[i];
+
+ return aSeq;
+}
+
+//----------------------------------------------------------------------------
+void PropBrw::implSetNewObjectSequence
+ ( const Sequence< Reference< XInterface > >& _rObjectSeq )
+{
+ Reference< inspection::XObjectInspector > xObjectInspector(m_xBrowserController, UNO_QUERY);
+ if ( xObjectInspector.is() )
+ {
+ xObjectInspector->inspect( _rObjectSeq );
+
+ ::rtl::OUString aText = ::rtl::OUString(String(IDEResId(RID_STR_BRWTITLE_PROPERTIES)));
+ aText += ::rtl::OUString(String(IDEResId(RID_STR_BRWTITLE_MULTISELECT)));
+ SetText( aText );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void PropBrw::implSetNewObject( const Reference< XPropertySet >& _rxObject )
+{
+ if ( m_xBrowserController.is() )
+ {
+ m_xBrowserController->setPropertyValue(
+ ::rtl::OUString::createFromAscii( "IntrospectedObject" ),
+ makeAny( _rxObject )
+ );
+
+ // set the new title according to the selected object
+ SetText( GetHeadlineName( _rxObject ) );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+::rtl::OUString PropBrw::GetHeadlineName( const Reference< XPropertySet >& _rxObject )
+{
+ ::rtl::OUString aName;
+ Reference< lang::XServiceInfo > xServiceInfo( _rxObject, UNO_QUERY );
+
+ if (xServiceInfo.is()) // single selection
+ {
+ sal_uInt16 nResId = 0;
+ aName = ::rtl::OUString(String(IDEResId(RID_STR_BRWTITLE_PROPERTIES)));
+
+ if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_DIALOG;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlButtonModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_BUTTON;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlRadioButtonModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_RADIOBUTTON;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlCheckBoxModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_CHECKBOX;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlListBoxModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_LISTBOX;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlComboBoxModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_COMBOBOX;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlGroupBoxModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_GROUPBOX;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlEditModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_EDIT;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlFixedTextModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_FIXEDTEXT;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlImageControlModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_IMAGECONTROL;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlProgressBarModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_PROGRESSBAR;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlScrollBarModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_SCROLLBAR;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlFixedLineModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_FIXEDLINE;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDateFieldModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_DATEFIELD;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlTimeFieldModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_TIMEFIELD;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlNumericFieldModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_NUMERICFIELD;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlCurrencyFieldModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_CURRENCYFIELD;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlFormattedFieldModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_FORMATTEDFIELD;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlPatternFieldModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_PATTERNFIELD;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlFileControlModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_FILECONTROL;
+ }
+ else if ( xServiceInfo->supportsService( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.tree.TreeControlModel" ) ) ) )
+ {
+ nResId = RID_STR_CLASS_TREECONTROL;
+ }
+ else
+ {
+ nResId = RID_STR_CLASS_CONTROL;
+ }
+
+ if (nResId)
+ {
+ aName += ::rtl::OUString( String(IDEResId(nResId)) );
+ }
+ }
+ else if (!_rxObject.is()) // no properties
+ {
+ aName = ::rtl::OUString(String(IDEResId(RID_STR_BRWTITLE_NO_PROPERTIES)));
+ }
+ // #i73075 Handled in implSetNewObjectSequence
+ //else // multiselection
+ //{
+ // aName = ::rtl::OUString(String(IDEResId(RID_STR_BRWTITLE_PROPERTIES)));
+ // aName += ::rtl::OUString(String(IDEResId(RID_STR_BRWTITLE_MULTISELECT)));
+ //}
+
+ return aName;
+}
+
+//----------------------------------------------------------------------------
+
+void PropBrw::FillInfo( SfxChildWinInfo& rInfo ) const
+{
+ rInfo.bVisible = sal_False;
+}
+
+//----------------------------------------------------------------------------
+
+void PropBrw::Resize()
+{
+ SfxFloatingWindow::Resize();
+
+ // adjust size
+ Size aSize_ = GetOutputSizePixel();
+ Size aPropWinSize( aSize_ );
+ aPropWinSize.Width() -= (2*WIN_BORDER);
+ aPropWinSize.Height() -= (2*WIN_BORDER);
+
+ if (m_xBrowserComponentWindow.is())
+ {
+ m_xBrowserComponentWindow->setPosSize(0, 0, aPropWinSize.Width(), aPropWinSize.Height(),
+ ::com::sun::star::awt::PosSize::WIDTH | ::com::sun::star::awt::PosSize::HEIGHT);
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void PropBrw::ImplUpdate( const Reference< XModel >& _rxContextDocument, SdrView* pNewView )
+{
+ Reference< XModel > xContextDocument( _rxContextDocument );
+
+ // if we should simply "empty" ourself, assume the context document didn't change
+ if ( !pNewView )
+ {
+ OSL_ENSURE( !_rxContextDocument.is(), "PropBrw::ImplUpdate: no view, but a document?!" );
+ xContextDocument = m_xContextDocument;
+ }
+
+ if ( xContextDocument != m_xContextDocument )
+ {
+ m_xContextDocument = xContextDocument;
+ ImplReCreateController();
+ }
+
+ try
+ {
+ if ( pView )
+ {
+ EndListening( *(pView->GetModel()) );
+ pView = NULL;
+ }
+
+ if ( !pNewView )
+ return;
+
+ pView = pNewView;
+
+ // set focus on initialization
+ if ( m_bInitialStateChange )
+ {
+ if ( m_xBrowserComponentWindow.is() )
+ m_xBrowserComponentWindow->setFocus();
+ m_bInitialStateChange = sal_False;
+ }
+
+ const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
+ sal_uInt32 nMarkCount = rMarkList.GetMarkCount();
+
+ if ( nMarkCount == 0 )
+ {
+ EndListening( *(pView->GetModel()) );
+ pView = NULL;
+ implSetNewObject( NULL );
+ return;
+ }
+
+ Reference< XPropertySet > xNewObject;
+ Sequence< Reference< XInterface > > aNewObjects;
+ if ( nMarkCount == 1 )
+ {
+ DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, rMarkList.GetMark(0)->GetMarkedSdrObj() );
+ if ( pDlgEdObj )
+ {
+ if ( pDlgEdObj->IsGroupObject() ) // group object
+ aNewObjects = CreateMultiSelectionSequence( rMarkList );
+ else // single selection
+ xNewObject = xNewObject.query( pDlgEdObj->GetUnoControlModel() );
+ }
+ }
+ else if ( nMarkCount > 1 ) // multiple selection
+ {
+ aNewObjects = CreateMultiSelectionSequence( rMarkList );
+ }
+
+ if ( aNewObjects.getLength() )
+ implSetNewObjectSequence( aNewObjects );
+ else
+ implSetNewObject( xNewObject );
+
+ StartListening( *(pView->GetModel()) );
+ }
+ catch ( const PropertyVetoException& ) { /* silence */ }
+ catch ( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+}
+
+//----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/accessibledialogcontrolshape.hxx b/basctl/source/inc/accessibledialogcontrolshape.hxx
new file mode 100644
index 000000000000..f45e4eb31e44
--- /dev/null
+++ b/basctl/source/inc/accessibledialogcontrolshape.hxx
@@ -0,0 +1,150 @@
+/* -*- 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 _BASCTL_ACCESSIBLEDIALOGCONTROLSHAPE_HXX_
+#define _BASCTL_ACCESSIBLEDIALOGCONTROLSHAPE_HXX_
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <comphelper/accessiblecomponenthelper.hxx>
+#include <cppuhelper/implbase3.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+
+#include <vector>
+
+class Window;
+class DialogWindow;
+class DlgEdObj;
+class VCLExternalSolarLock;
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+
+// ----------------------------------------------------
+// class AccessibleDialogControlShape
+// ----------------------------------------------------
+
+typedef ::comphelper::OAccessibleExtendedComponentHelper AccessibleExtendedComponentHelper_BASE;
+
+typedef ::cppu::ImplHelper3<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::beans::XPropertyChangeListener > AccessibleDialogControlShape_BASE;
+
+class AccessibleDialogControlShape : public AccessibleExtendedComponentHelper_BASE,
+ public AccessibleDialogControlShape_BASE
+{
+ friend class AccessibleDialogWindow;
+
+private:
+ VCLExternalSolarLock* m_pExternalLock;
+ DialogWindow* m_pDialogWindow;
+ DlgEdObj* m_pDlgEdObj;
+ sal_Bool m_bFocused;
+ sal_Bool m_bSelected;
+
+ ::com::sun::star::awt::Rectangle m_aBounds;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xControlModel;
+
+protected:
+ sal_Bool IsFocused();
+ sal_Bool IsSelected();
+
+ void SetFocused( sal_Bool bFocused );
+ void SetSelected( sal_Bool bSelected );
+
+ ::com::sun::star::awt::Rectangle GetBounds();
+ void SetBounds( const ::com::sun::star::awt::Rectangle& aBounds );
+
+ Window* GetWindow() const;
+
+ ::rtl::OUString GetModelStringProperty( const sal_Char* pPropertyName );
+
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ AccessibleDialogControlShape( DialogWindow* pDialogWindow, DlgEdObj* pDlgEdObj );
+ virtual ~AccessibleDialogControlShape();
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& rSource ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& rEvent ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif // _BASCTL_ACCESSIBLEDIALOGCONTROLSHAPE_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/accessibledialogwindow.hxx b/basctl/source/inc/accessibledialogwindow.hxx
new file mode 100644
index 000000000000..ed8594a5c071
--- /dev/null
+++ b/basctl/source/inc/accessibledialogwindow.hxx
@@ -0,0 +1,177 @@
+/* -*- 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 _BASCTL_ACCESSIBLEDIALOGWINDOW_HXX_
+#define _BASCTL_ACCESSIBLEDIALOGWINDOW_HXX_
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <comphelper/accessiblecomponenthelper.hxx>
+#include <cppuhelper/implbase3.hxx>
+#include <tools/link.hxx>
+#include <svl/lstner.hxx>
+
+#include <vector>
+
+class DialogWindow;
+class DlgEditor;
+class DlgEdModel;
+class DlgEdObj;
+class VCLExternalSolarLock;
+class VclSimpleEvent;
+class VclWindowEvent;
+
+namespace utl {
+class AccessibleStateSetHelper;
+}
+
+
+// ----------------------------------------------------
+// class AccessibleDialogWindow
+// ----------------------------------------------------
+
+typedef ::comphelper::OAccessibleExtendedComponentHelper AccessibleExtendedComponentHelper_BASE;
+
+typedef ::cppu::ImplHelper3 <
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleSelection,
+ ::com::sun::star::lang::XServiceInfo > AccessibleDialogWindow_BASE;
+
+class AccessibleDialogWindow : public AccessibleExtendedComponentHelper_BASE,
+ public AccessibleDialogWindow_BASE,
+ public SfxListener
+{
+private:
+
+ class ChildDescriptor
+ {
+ public:
+ DlgEdObj* pDlgEdObj;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > rxAccessible;
+
+ ChildDescriptor( DlgEdObj* _pDlgEdObj );
+ ~ChildDescriptor();
+
+ ChildDescriptor( const ChildDescriptor& rDesc );
+ ChildDescriptor& operator=( const ChildDescriptor& rDesc );
+
+ bool operator==( const ChildDescriptor& rDesc );
+ bool operator<( const ChildDescriptor& rDesc ) const;
+ };
+
+ typedef ::std::vector< ChildDescriptor > AccessibleChildren;
+
+ AccessibleChildren m_aAccessibleChildren;
+ VCLExternalSolarLock* m_pExternalLock;
+ DialogWindow* m_pDialogWindow;
+ DlgEditor* m_pDlgEditor;
+ DlgEdModel* m_pDlgEdModel;
+
+protected:
+ void UpdateFocused();
+ void UpdateSelected();
+ void UpdateBounds();
+
+ sal_Bool IsChildVisible( const ChildDescriptor& rDesc );
+
+ void InsertChild( const ChildDescriptor& rDesc );
+ void RemoveChild( const ChildDescriptor& rDesc );
+ void UpdateChild( const ChildDescriptor& rDesc );
+ void UpdateChildren();
+ void SortChildren();
+
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+ virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+
+ // OCommonAccessibleComponent
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing();
+
+public:
+ AccessibleDialogWindow( DialogWindow* pDialogWindow );
+ ~AccessibleDialogWindow();
+
+ // SfxListener
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XInterface
+ DECLARE_XINTERFACE()
+
+ // XTypeProvider
+ DECLARE_XTYPEPROVIDER()
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleExtendedComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFont > SAL_CALL getFont( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTitledBorderText( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getToolTipText( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif // _BASCTL_ACCESSIBLEDIALOGWINDOW_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/baside3.hxx b/basctl/source/inc/baside3.hxx
new file mode 100644
index 000000000000..505998d32bcb
--- /dev/null
+++ b/basctl/source/inc/baside3.hxx
@@ -0,0 +1,116 @@
+/* -*- 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 _BASIDE3_HXX
+#define _BASIDE3_HXX
+
+#include <bastypes.hxx>
+#include <svl/undo.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/fixed.hxx>
+
+#include <com/sun/star/script/XLibraryContainer.hpp>
+
+class Printer;
+class StarBASIC;
+class SfxItemSet;
+class DlgEditor;
+class DlgEdModel;
+class DlgEdPage;
+class DlgEdView;
+class SfxUndoManager;
+
+class DialogWindow: public IDEBaseWindow
+{
+private:
+ DlgEditor* pEditor;
+ SfxUndoManager* pUndoMgr;
+ Link aOldNotifyUndoActionHdl;
+ String aCurPath;
+
+protected:
+ virtual void Paint( const Rectangle& );
+ virtual void Resize();
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void LoseFocus();
+
+ DECL_LINK( NotifyUndoActionHdl, SfxUndoAction * );
+ virtual void DoInit();
+ virtual void DoScroll( ScrollBar* pCurScrollBar );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ void InitSettings(BOOL bFont,BOOL bForeground,BOOL bBackground);
+
+public:
+ TYPEINFO();
+ DialogWindow( Window* pParent, const ScriptDocument& rDocument, String aLibName, String aName,
+ const com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >& xDialogModel );
+ DialogWindow( DialogWindow* pCurView ); // never implemented
+ ~DialogWindow();
+
+ virtual void ExecuteCommand( SfxRequest& rReq );
+ virtual void GetState( SfxItemSet& );
+ DlgEditor* GetEditor() const { return pEditor; }
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > GetDialog() const;
+ DlgEdModel* GetModel() const;
+ DlgEdPage* GetPage() const;
+ DlgEdView* GetView() const;
+ BOOL RenameDialog( const String& rNewName );
+ void DisableBrowser();
+ void UpdateBrowser();
+ BOOL SaveDialog();
+ BOOL ImportDialog();
+
+ virtual String GetTitle();
+ virtual BasicEntryDescriptor CreateEntryDescriptor();
+ virtual void SetReadOnly( BOOL bReadOnly );
+ virtual BOOL IsReadOnly();
+
+ virtual void StoreData();
+ virtual BOOL IsModified();
+ virtual BOOL IsPasteAllowed();
+
+ virtual SfxUndoManager* GetUndoManager();
+ // return number of pages to be printed
+ virtual sal_Int32 countPages( Printer* pPrinter );
+ // print page
+ virtual void printPage( sal_Int32 nPage, Printer* pPrinter );
+ virtual void Deactivating();
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+};
+
+#endif // _BASIDE3_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/basidectrlr.hxx b/basctl/source/inc/basidectrlr.hxx
new file mode 100644
index 000000000000..8532b7691c74
--- /dev/null
+++ b/basctl/source/inc/basidectrlr.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 _BASCTL_BASICIDECTRLR_HXX
+#define _BASCTL_BASICIDECTRLR_HXX
+
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/propertycontainer.hxx>
+#include <comphelper/proparrhlp.hxx>
+#include <sfx2/sfxbasecontroller.hxx>
+
+
+class BasicIDEShell;
+
+
+class BasicIDEController :public comphelper::OMutexAndBroadcastHelper
+ ,public ::comphelper::OPropertyContainer
+ ,public ::comphelper::OPropertyArrayUsageHelper< BasicIDEController >
+ ,public SfxBaseController
+{
+private:
+ // properties
+ sal_Int32 m_nIconId;
+
+public:
+ BasicIDEController( BasicIDEShell* pViewShell );
+ virtual ~BasicIDEController();
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XTypeProvider ( ::SfxBaseController )
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw( ::com::sun::star::uno::RuntimeException );
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // OPropertySetHelper
+ virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
+
+protected:
+ // OPropertyArrayUsageHelper
+ virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
+};
+
+#endif // _BASCTL_BASICIDECTRLR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/basidesh.hxx b/basctl/source/inc/basidesh.hxx
new file mode 100644
index 000000000000..9fb76f628f7b
--- /dev/null
+++ b/basctl/source/inc/basidesh.hxx
@@ -0,0 +1,239 @@
+/* -*- 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 _BASIDESH_HXX
+#define _BASIDESH_HXX
+
+#include "sbxitem.hxx"
+
+#include "scriptdocument.hxx"
+#include "doceventnotifier.hxx"
+#include <sfx2/viewfac.hxx>
+#include <sfx2/shell.hxx>
+#include <vcl/scrbar.hxx>
+#include <tools/table.hxx>
+#include <sfx2/viewsh.hxx>
+#include <svx/ifaceids.hxx>
+
+#include <com/sun/star/io/XInputStreamProvider.hpp>
+
+#include <com/sun/star/container/XContainerListener.hpp>
+
+//----------------------------------------------------------------------------
+
+const ULONG BASICIDE_UI_FEATURE_SHOW_BROWSER = 0x00000001;
+
+//----------------------------------------------------------------------------
+
+class ModulWindow;
+class ModulWindowLayout;
+class DialogWindow;
+class SdrView;
+class ObjectCatalog;
+class BasicIDETabBar;
+class TabBar;
+class IDEBaseWindow;
+class SbxObject;
+class SbModule;
+class StarBASIC;
+class LocalizationMgr;
+struct BasicIDEShell_Impl;
+
+#if _SOLAR__PRIVATE
+DECLARE_TABLE( IDEWindowTable, IDEBaseWindow* )
+#else
+typedef Table IDEWindowTable;
+#endif
+
+namespace BasicIDE
+{
+ bool RemoveDialog( const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName );
+}
+
+class BasicIDEShell :public SfxViewShell
+ ,public ::basctl::DocumentEventListener
+{
+friend class JavaDebuggingListenerImpl;
+friend class LocalizationMgr;
+friend BOOL implImportDialog( Window* pWin, const String& rCurPath, const ScriptDocument& rDocument, const String& aLibName );
+friend bool BasicIDE::RemoveDialog( const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName );
+
+ ObjectCatalog* pObjectCatalog;
+
+ IDEWindowTable aIDEWindowTable;
+ USHORT nCurKey;
+ IDEBaseWindow* pCurWin;
+ ScriptDocument m_aCurDocument;
+ String m_aCurLibName;
+ LocalizationMgr* m_pCurLocalizationMgr;
+
+ ScrollBar aHScrollBar;
+ ScrollBar aVScrollBar;
+ ScrollBarBox aScrollBarBox;
+ BasicIDETabBar* pTabBar;
+ BOOL bTabBarSplitted;
+ BOOL bCreatingWindow;
+ ModulWindowLayout* pModulLayout;
+ BOOL m_bAppBasicModified;
+ ::basctl::DocumentEventNotifier
+ m_aNotifier;
+friend class ContainerListenerImpl;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener > m_xLibListener;
+
+#if _SOLAR__PRIVATE
+ void Init();
+ void InitTabBar();
+ void InitScrollBars();
+ void CheckWindows();
+ void RemoveWindows( const ScriptDocument& rDocument, const String& rLibName, BOOL bDestroy );
+ void UpdateWindows();
+ void ShowObjectDialog( BOOL bShow, BOOL bCreateOrDestroy );
+ void InvalidateBasicIDESlots();
+ void StoreAllWindowData( BOOL bPersistent = TRUE );
+ void SetMDITitle();
+ void EnableScrollbars( BOOL bEnable );
+ void SetCurLib( const ScriptDocument& rDocument, String aLibName, bool bUpdateWindows = true , bool bCheck = true );
+ void SetCurLibForLocalization( const ScriptDocument& rDocument, String aLibName );
+
+ void ImplStartListening( StarBASIC* pBasic );
+
+ DECL_LINK( TabBarHdl, TabBar* );
+ DECL_LINK( AccelSelectHdl, Accelerator* );
+ DECL_LINK( ObjectDialogCancelHdl, ObjectCatalog * );
+ DECL_LINK( TabBarSplitHdl, TabBar * );
+#endif
+
+protected:
+ virtual void AdjustPosSizePixel( const Point &rPos, const Size &rSize );
+ virtual void OuterResizePixel( const Point &rPos, const Size &rSize );
+ virtual Size GetOptimalSizePixel() const;
+ USHORT InsertWindowInTable( IDEBaseWindow* pNewWin );
+ virtual USHORT PrepareClose( BOOL bUI, BOOL bForBrowsing );
+
+ void SetCurWindow( IDEBaseWindow* pNewWin, BOOL bUpdateTabBar = FALSE, BOOL bRememberAsCurrent = TRUE );
+ void ManageToolbars();
+ void RemoveWindow( IDEBaseWindow* pWindow, BOOL bDestroy, BOOL bAllowChangeCurWindow = TRUE );
+ void ArrangeTabBar();
+
+ ModulWindow* CreateBasWin( const ScriptDocument& rDocument, const String& rLibName, const String& rModName );
+ DialogWindow* CreateDlgWin( const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName );
+
+ ModulWindow* FindBasWin( const ScriptDocument& rDocument, const String& rLibName, const String& rModName, BOOL bCreateIfNotExist, BOOL bFindSuspended = FALSE );
+ ModulWindow* ShowActiveModuleWindow( StarBASIC* pBasic );
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+ virtual void Activate(BOOL bMDI);
+ virtual void Deactivate(BOOL bMDI);
+
+ virtual void Move();
+ virtual void ShowCursor( bool bOn = true );
+
+ void CreateModulWindowLayout();
+ void DestroyModulWindowLayout();
+ void UpdateModulWindowLayout( bool bBasicStopped );
+
+ // DocumentEventListener
+ virtual void onDocumentCreated( const ScriptDocument& _rDocument );
+ virtual void onDocumentOpened( const ScriptDocument& _rDocument );
+ virtual void onDocumentSave( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAs( const ScriptDocument& _rDocument );
+ virtual void onDocumentSaveAsDone( const ScriptDocument& _rDocument );
+ virtual void onDocumentClosed( const ScriptDocument& _rDocument );
+ virtual void onDocumentTitleChanged( const ScriptDocument& _rDocument );
+ virtual void onDocumentModeChanged( const ScriptDocument& _rDocument );
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE( SVX_INTERFACE_BASIDE_VIEWSH )
+ SFX_DECL_VIEWFACTORY(BasicIDEShell);
+
+ BasicIDEShell( SfxViewFrame *pFrame, SfxViewShell *pOldSh );
+ ~BasicIDEShell();
+
+ IDEBaseWindow* GetCurWindow() const { return pCurWin; }
+ const ScriptDocument&
+ GetCurDocument() const { return m_aCurDocument; }
+ const String& GetCurLibName() const { return m_aCurLibName; }
+ ObjectCatalog* GetObjectCatalog() const { return pObjectCatalog; }
+ LocalizationMgr* GetCurLocalizationMgr() const { return m_pCurLocalizationMgr; }
+
+ ScrollBar& GetHScrollBar() { return aHScrollBar; }
+ ScrollBar& GetVScrollBar() { return aVScrollBar; }
+ ScrollBarBox& GetScrollBarBox() { return aScrollBarBox; }
+ TabBar* GetTabBar() { return (TabBar*)pTabBar; }
+ IDEWindowTable& GetIDEWindowTable() { return aIDEWindowTable; }
+
+ SdrView* GetCurDlgView() const;
+
+ SfxUndoManager* GetUndoManager();
+
+ virtual com::sun::star::uno::Reference< com::sun::star::view::XRenderable > GetRenderable();
+
+ // virtual USHORT Print( SfxProgress &rProgress, BOOL bIsAPI, PrintDialog *pPrintDialog = 0 );
+ virtual SfxPrinter* GetPrinter( BOOL bCreate );
+ virtual USHORT SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags = SFX_PRINTER_ALL, bool bIsAPI=false );
+ virtual String GetSelectionText( BOOL bCompleteWords );
+ virtual BOOL HasSelection( BOOL bText ) const;
+
+ void GetState( SfxItemSet& );
+ void ExecuteGlobal( SfxRequest& rReq );
+ void ExecuteCurrent( SfxRequest& rReq );
+ void ExecuteBasic( SfxRequest& rReq );
+ void ExecuteDialog( SfxRequest& rReq );
+
+ virtual sal_Bool HasUIFeature( sal_uInt32 nFeature );
+
+ long CallBasicErrorHdl( StarBASIC* pBasic );
+ long CallBasicBreakHdl( StarBASIC* pBasic );
+
+ ModulWindowLayout* GetLayoutWindow() const { return pModulLayout; }
+
+ IDEBaseWindow* FindWindow( const ScriptDocument& rDocument, const String& rLibName = String(), const String& rName = String(), USHORT nType = BASICIDE_TYPE_UNKNOWN, BOOL bFindSuspended = FALSE );
+ DialogWindow* FindDlgWin( const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName, BOOL bCreateIfNotExist, BOOL bFindSuspended = FALSE );
+ IDEBaseWindow* FindApplicationWindow();
+ BOOL NextPage( BOOL bPrev = FALSE );
+
+ BOOL IsAppBasicModified() const { return m_bAppBasicModified; }
+ void SetAppBasicModified( BOOL bModified = TRUE ) { m_bAppBasicModified = bModified; }
+
+ // For Dialog Drag&Drop in Dialog Organizer
+ static void CopyDialogResources(
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider >& io_xISP,
+ const ScriptDocument& rSourceDoc, const String& rSourceLibName, const ScriptDocument& rDestDoc,
+ const String& rDestLibName, const String& rDlgName );
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ GetCurrentDocument() const;
+
+};
+
+#endif // _BASIDESH_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/basobj.hxx b/basctl/source/inc/basobj.hxx
new file mode 100644
index 000000000000..c5c6f44587b9
--- /dev/null
+++ b/basctl/source/inc/basobj.hxx
@@ -0,0 +1,128 @@
+/* -*- 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 _BASOBJ_HXX
+#define _BASOBJ_HXX
+
+#include "scriptdocument.hxx"
+#include <tools/string.hxx>
+#include <svl/lstner.hxx>
+
+#include <com/sun/star/io/XInputStreamProvider.hpp>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+
+class SfxMacro;
+class SbMethod;
+class SbModule;
+class SbxObject;
+class SbxVariable;
+class StarBASIC;
+class BasicManager;
+class SfxUInt16Item;
+class SfxBindings;
+class Window;
+struct BasicIDE_Impl;
+
+namespace BasicIDE
+{
+ void Organize( INT16 tabId );
+
+
+ // Hilfsmethoden fuer den allg. Gebrauch:
+ SbMethod* CreateMacro( SbModule* pModule, const String& rMacroName );
+ void RunMethod( SbMethod* pMethod );
+
+ StarBASIC* FindBasic( const SbxVariable* pVar );
+ void StopBasic();
+ long HandleBasicError( StarBASIC* pBasic );
+ void BasicStopped( BOOL* pbAppWindowDisabled = 0, BOOL* pbDispatcherLocked = 0, USHORT* pnWaitCount = 0,
+ SfxUInt16Item** ppSWActionCount = 0, SfxUInt16Item** ppSWLockViewCount = 0 );
+
+ BOOL IsValidSbxName( const String& rName );
+
+ BasicManager* FindBasicManager( StarBASIC* pLib );
+
+ SfxBindings* GetBindingsPtr();
+
+ void InvalidateDebuggerSlots();
+
+ // libraries
+
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > GetMergedLibraryNames(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::script::XLibraryContainer >& xModLibContainer,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::script::XLibraryContainer >& xDlgLibContainer );
+
+ // new methods for modules
+
+ ::rtl::OUString GetModule(
+ const ScriptDocument& rDocument, const String& rLibName, const String& rModName )
+ throw( ::com::sun::star::container::NoSuchElementException );
+
+ /** renames a module
+
+ Will show an error message when renaming fails because the new name is already used.
+ */
+ bool RenameModule(
+ Window* pErrorParent, const ScriptDocument& rDocument,
+ const String& rLibName, const String& rOldName, const String& rNewName );
+
+ // new methods for macros
+
+ ::rtl::OUString ChooseMacro( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& rxLimitToDocument,
+ BOOL bChooseOnly, const ::rtl::OUString& rMacroDesc );
+
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > GetMethodNames(
+ const ScriptDocument& rDocument, const String& rLibName, const String& rModName )
+ throw( ::com::sun::star::container::NoSuchElementException );
+
+ BOOL HasMethod(
+ const ScriptDocument& rDocument, const String& rLibName, const String& rModName, const String& rMethName );
+
+ // new methods for dialogs
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider > GetDialog(
+ const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName )
+ throw( ::com::sun::star::container::NoSuchElementException );
+
+ /** renames a dialog
+
+ Will show an error message when renaming fails because the new name is already used.
+ */
+ bool RenameDialog(
+ Window* pErrorParent, const ScriptDocument& rDocument, const String& rLibName, const String& rOldName, const String& rNewName )
+ throw( ::com::sun::star::container::ElementExistException, ::com::sun::star::container::NoSuchElementException );
+
+ bool RemoveDialog(
+ const ScriptDocument& rDocument, const String& rLibName, const String& rDlgName );
+
+ void MarkDocumentModified( const ScriptDocument& rDocument );
+}
+
+#endif // _BASOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/bastypes.hxx b/basctl/source/inc/bastypes.hxx
new file mode 100644
index 000000000000..2d9ded65fef1
--- /dev/null
+++ b/basctl/source/inc/bastypes.hxx
@@ -0,0 +1,343 @@
+/* -*- 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 _BASTYPES_HXX
+#define _BASTYPES_HXX
+
+#include <svheader.hxx>
+
+#include <iderid.hxx>
+
+#include "scriptdocument.hxx"
+
+class ModulWindow;
+class SfxRequest;
+class SvTreeListBox;
+class SvLBoxEntry;
+class ScrollBar;
+class SbModule;
+class BasicManager;
+class SfxItemSet;
+#include <vcl/dockwin.hxx>
+#include <vcl/toolbox.hxx>
+#include <basic/sbstar.hxx>
+
+#include <iderid.hxx>
+
+#include <tools/table.hxx>
+
+#include <svtools/tabbar.hxx>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+
+#include <hash_map>
+
+#define LINE_SEP_CR 0x0D
+#define LINE_SEP 0x0A
+
+// Implementation: baside2b.cxx
+sal_Int32 searchEOL( const ::rtl::OUString& rStr, sal_Int32 fromIndex );
+
+
+// Bedeutung von bToBeKilled:
+// Wenn in Reschedule-Schleife, darf ich das Fenster nicht zerstoeren.
+// Es muss erst aus der Reschedule-Schleife Fallen, um sich dann
+// selbst zu zerstoeren.
+// Geht so leider nicht: Destroying Window with living Child!
+
+
+struct BasicStatus
+{
+// BOOL bCompiled : 1;
+ BOOL bIsRunning : 1;
+ BOOL bError : 1;
+ BOOL bIsInReschedule : 1;
+ USHORT nBasicFlags;
+
+ BasicStatus() {
+ bIsRunning = FALSE; bError = FALSE;
+ nBasicFlags = 0; bIsInReschedule = FALSE; }
+};
+
+struct BreakPoint
+{
+ BOOL bEnabled;
+ BOOL bTemp;
+ ULONG nLine;
+ ULONG nStopAfter;
+ ULONG nHitCount;
+
+ BreakPoint( ULONG nL ) { nLine = nL; nStopAfter = 0; nHitCount = 0; bEnabled = TRUE; bTemp = FALSE; }
+
+};
+
+class BasicDockingWindow : public DockingWindow
+{
+ Rectangle aFloatingPosAndSize;
+
+protected:
+ virtual BOOL Docking( const Point& rPos, Rectangle& rRect );
+ virtual void EndDocking( const Rectangle& rRect, BOOL bFloatMode );
+ virtual void ToggleFloatingMode();
+ virtual BOOL PrepareToggleFloatingMode();
+ virtual void StartDocking();
+
+public:
+ BasicDockingWindow( Window* pParent );
+};
+
+DECLARE_LIST( BreakPL, BreakPoint* )
+class BreakPointList : public BreakPL
+{
+private:
+ void operator =(BreakPointList); // not implemented
+
+public:
+ BreakPointList();
+
+ BreakPointList(BreakPointList const & rList);
+
+ ~BreakPointList();
+
+ void reset();
+
+ void transfer(BreakPointList & rList);
+
+ void InsertSorted( BreakPoint* pBrk );
+ BreakPoint* FindBreakPoint( ULONG nLine );
+ void AdjustBreakPoints( ULONG nLine, BOOL bInserted );
+ void SetBreakPointsInBasic( SbModule* pModule );
+ void ResetHitCount();
+};
+
+// helper class for sorting TabBar
+class TabBarSortHelper
+{
+public:
+ USHORT nPageId;
+ String aPageText;
+
+ bool operator<(const TabBarSortHelper& rComp) const { return (aPageText.CompareIgnoreCaseToAscii( rComp.aPageText ) == COMPARE_LESS); }
+};
+
+class BasicIDETabBar : public TabBar
+{
+protected:
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+
+ virtual long AllowRenaming();
+ virtual void EndRenaming();
+
+public:
+ BasicIDETabBar( Window* pParent );
+
+ void Sort();
+};
+
+#define BASWIN_OK 0x00
+#define BASWIN_RUNNINGBASIC 0x01
+#define BASWIN_TOBEKILLED 0x02
+#define BASWIN_SUSPENDED 0x04
+#define BASWIN_INRESCHEDULE 0x08
+
+class Printer;
+class SfxUndoManager;
+class BasicEntryDescriptor;
+
+class IDEBaseWindow : public Window
+{
+private:
+ ScrollBar* pShellHScrollBar;
+ ScrollBar* pShellVScrollBar;
+
+ DECL_LINK( ScrollHdl, ScrollBar * );
+ BYTE nStatus;
+
+ ScriptDocument m_aDocument;
+ String m_aLibName;
+ String m_aName;
+
+protected:
+ virtual void DoScroll( ScrollBar* pCurScrollBar );
+
+public:
+ TYPEINFO();
+ IDEBaseWindow( Window* pParent, const ScriptDocument& rDocument, String aLibName, String aName );
+ virtual ~IDEBaseWindow();
+
+ void Init();
+ virtual void DoInit();
+ virtual void Deactivating();
+ void GrabScrollBars( ScrollBar* pHScroll, ScrollBar* pVScroll );
+
+ ScrollBar* GetHScrollBar() const { return pShellHScrollBar; }
+ ScrollBar* GetVScrollBar() const { return pShellVScrollBar; }
+
+ virtual void ExecuteCommand( SfxRequest& rReq );
+ virtual void GetState( SfxItemSet& );
+ virtual long Notify( NotifyEvent& rNEvt );
+
+ virtual void StoreData();
+ virtual void UpdateData();
+ virtual BOOL CanClose();
+
+ // return number of pages to be printed
+ virtual sal_Int32 countPages( Printer* pPrinter ) = 0;
+ // print page
+ virtual void printPage( sal_Int32 nPage, Printer* pPrinter ) = 0;
+
+ virtual String GetTitle();
+ String CreateQualifiedName();
+ virtual BasicEntryDescriptor CreateEntryDescriptor() = 0;
+
+ virtual BOOL IsModified();
+ virtual BOOL IsPasteAllowed();
+
+ virtual BOOL AllowUndo();
+
+ virtual void SetReadOnly( BOOL bReadOnly );
+ virtual BOOL IsReadOnly();
+
+ BYTE GetStatus() { return nStatus; }
+ void SetStatus( BYTE n ) { nStatus = n; }
+ void AddStatus( BYTE n ) { nStatus = nStatus | n; }
+ void ClearStatus( BYTE n ) { nStatus = nStatus & ~n; }
+
+ virtual Window* GetLayoutWindow();
+
+ virtual SfxUndoManager* GetUndoManager();
+
+ virtual USHORT GetSearchOptions();
+
+ virtual void BasicStarted();
+ virtual void BasicStopped();
+
+ BOOL IsSuspended() const
+ { return ( nStatus & BASWIN_SUSPENDED ) ? TRUE : FALSE; }
+
+ const ScriptDocument&
+ GetDocument() const { return m_aDocument; }
+ void SetDocument( const ScriptDocument& rDocument ) { m_aDocument = rDocument; }
+ bool IsDocument( const ScriptDocument& rDocument ) const { return rDocument == m_aDocument; }
+ const String& GetLibName() const { return m_aLibName; }
+ void SetLibName( const String& aLibName ) { m_aLibName = aLibName; }
+ const String& GetName() const { return m_aName; }
+ void SetName( const String& aName ) { m_aName = aName; }
+};
+
+class LibInfoKey
+{
+private:
+ ScriptDocument m_aDocument;
+ String m_aLibName;
+
+public:
+ LibInfoKey( const ScriptDocument& rDocument, const String& rLibName );
+ ~LibInfoKey();
+
+ LibInfoKey( const LibInfoKey& rKey );
+ LibInfoKey& operator=( const LibInfoKey& rKey );
+
+ bool operator==( const LibInfoKey& rKey ) const;
+
+ const ScriptDocument&
+ GetDocument() const { return m_aDocument; }
+ const String& GetLibName() const { return m_aLibName; }
+};
+
+class LibInfoItem
+{
+private:
+ ScriptDocument m_aDocument;
+ String m_aLibName;
+ String m_aCurrentName;
+ USHORT m_nCurrentType;
+
+public:
+ LibInfoItem( const ScriptDocument& rDocument, const String& rLibName, const String& rCurrentName, USHORT nCurrentType );
+ ~LibInfoItem();
+
+ LibInfoItem( const LibInfoItem& rItem );
+ LibInfoItem& operator=( const LibInfoItem& rItem );
+
+ const ScriptDocument&
+ GetDocument() const { return m_aDocument; }
+ const String& GetLibName() const { return m_aLibName; }
+ const String& GetCurrentName() const { return m_aCurrentName; }
+ USHORT GetCurrentType() const { return m_nCurrentType; }
+};
+
+class LibInfos
+{
+private:
+
+ struct LibInfoKeyHash
+ {
+ size_t operator()( const LibInfoKey& rKey ) const
+ {
+ size_t nHash = (size_t) rKey.GetDocument().hashCode();
+ nHash += (size_t) ::rtl::OUString( rKey.GetLibName() ).hashCode();
+ return nHash;
+ }
+ };
+
+ typedef ::std::hash_map< LibInfoKey, LibInfoItem*, LibInfoKeyHash, ::std::equal_to< LibInfoKey > > LibInfoMap;
+ LibInfoMap m_aLibInfoMap;
+
+public:
+ LibInfos();
+ ~LibInfos();
+
+ void InsertInfo( LibInfoItem* pItem );
+ void RemoveInfoFor( const ScriptDocument& _rDocument );
+
+ LibInfoItem* GetInfo( const LibInfoKey& rKey );
+};
+
+void CutLines( ::rtl::OUString& rStr, sal_Int32 nStartLine, sal_Int32 nLines, BOOL bEraseTrailingEmptyLines = FALSE );
+String CreateMgrAndLibStr( const String& rMgrName, const String& rLibName );
+ULONG CalcLineCount( SvStream& rStream );
+
+BOOL QueryReplaceMacro( const String& rName, Window* pParent = 0 );
+BOOL QueryDelMacro( const String& rName, Window* pParent = 0 );
+BOOL QueryDelDialog( const String& rName, Window* pParent = 0 );
+BOOL QueryDelModule( const String& rName, Window* pParent = 0 );
+BOOL QueryDelLib( const String& rName, BOOL bRef = FALSE, Window* pParent = 0 );
+BOOL QueryPassword( const ::com::sun::star::uno::Reference< ::com::sun::star::script::XLibraryContainer >& xLibContainer, const String& rLibName, String& rPassword, BOOL bRepeat = FALSE, BOOL bNewTitle = FALSE );
+
+class ModuleInfoHelper
+{
+ModuleInfoHelper();
+ModuleInfoHelper(const ModuleInfoHelper&);
+ModuleInfoHelper& operator = (const ModuleInfoHelper&);
+public:
+ static void getObjectName( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& rLib, const String& rModName, String& rObjName );
+ static sal_Int32 getModuleType( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& rLib, const String& rModName );
+};
+#endif // _BASTYPES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlged.hxx b/basctl/source/inc/dlged.hxx
new file mode 100644
index 000000000000..67cff8dc7232
--- /dev/null
+++ b/basctl/source/inc/dlged.hxx
@@ -0,0 +1,215 @@
+/* -*- 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 _BASCTL_DLGED_HXX
+#define _BASCTL_DLGED_HXX
+
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/datatransfer/DataFlavor.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <tools/link.hxx>
+#include <tools/gen.hxx>
+#include <vcl/timer.hxx>
+#include <svl/hint.hxx>
+#include <svl/brdcst.hxx>
+
+#define DLGED_PAGE_WIDTH_MIN 1280
+#define DLGED_PAGE_HEIGHT_MIN 1024
+
+
+//============================================================================
+// DlgEdHint
+//============================================================================
+
+enum DlgEdHintKind
+{
+ DLGED_HINT_UNKNOWN,
+ DLGED_HINT_WINDOWSCROLLED,
+ DLGED_HINT_LAYERCHANGED,
+ DLGED_HINT_OBJORDERCHANGED,
+ DLGED_HINT_SELECTIONCHANGED
+};
+
+class DlgEdObj;
+
+class DlgEdHint: public SfxHint
+{
+private:
+ DlgEdHintKind eHintKind;
+ DlgEdObj* pDlgEdObj;
+
+public:
+ TYPEINFO();
+ DlgEdHint( DlgEdHintKind eHint );
+ DlgEdHint( DlgEdHintKind eHint, DlgEdObj* pObj );
+ virtual ~DlgEdHint();
+
+ DlgEdHintKind GetKind() const { return eHintKind; }
+ DlgEdObj* GetObject() const { return pDlgEdObj; }
+};
+
+
+//============================================================================
+// DlgEditor
+//============================================================================
+
+enum DlgEdMode { DLGED_INSERT, DLGED_SELECT, DLGED_TEST, DLGED_READONLY };
+
+class ScrollBar;
+class DlgEdModel;
+class DlgEdPage;
+class DlgEdView;
+class DlgEdForm;
+class DlgEdFactory;
+class DlgEdFunc;
+class Printer;
+class KeyEvent;
+class MouseEvent;
+class Timer;
+class Window;
+
+class DlgEditor: public SfxBroadcaster
+{
+private:
+ DECL_LINK( PaintTimeout, Timer * );
+ DECL_LINK( MarkTimeout, Timer * );
+
+ void Print( Printer* pPrinter, const String& rTitle );
+
+protected:
+ ScrollBar* pHScroll;
+ ScrollBar* pVScroll;
+ DlgEdModel* pDlgEdModel;
+ DlgEdPage* pDlgEdPage;
+ DlgEdView* pDlgEdView;
+ DlgEdForm* pDlgEdForm;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > m_xUnoControlDialogModel;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer > m_xControlContainer;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > m_ClipboardDataFlavors;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > m_ClipboardDataFlavorsResource;
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > m_xSupplier;
+ DlgEdFactory* pObjFac;
+ Window* pWindow;
+ DlgEdFunc* pFunc;
+ DlgEdMode eMode;
+ USHORT eActObj;
+ BOOL bFirstDraw;
+ Size aGridSize;
+ BOOL bGridVisible;
+ BOOL bGridSnap;
+ BOOL bCreateOK;
+ Timer aPaintTimer;
+ Rectangle aPaintRect;
+ BOOL bDialogModelChanged;
+ Timer aMarkTimer;
+ long mnPaintGuard;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > m_xDocument;
+
+ DlgEditor(); // not implemented
+public:
+ DlgEditor( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel );
+ ~DlgEditor();
+
+ void SetWindow( Window* pWindow );
+ Window* GetWindow() const { return pWindow; }
+
+ /** returns the control container associated with our window
+ @see GetWindow
+ @see SetWindow
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >
+ GetWindowControlContainer();
+
+ void SetDlgEdForm( DlgEdForm* pForm ) { pDlgEdForm = pForm; }
+ DlgEdForm* GetDlgEdForm() const { return pDlgEdForm; }
+
+ void SetScrollBars( ScrollBar* pHScroll, ScrollBar* pVScroll );
+ void InitScrollBars();
+ ScrollBar* GetHScroll() const { return pHScroll; }
+ ScrollBar* GetVScroll() const { return pVScroll; }
+ void DoScroll( ScrollBar* pActScroll );
+ void UpdateScrollBars();
+
+ void SetDialog( ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XNameContainer > xUnoControlDialogModel );
+ void ResetDialog( void );
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > GetDialog() const
+ {return m_xUnoControlDialogModel;}
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > const & GetNumberFormatsSupplier();
+
+ DlgEdModel* GetModel() const { return pDlgEdModel; }
+ DlgEdView* GetView() const { return pDlgEdView; }
+ DlgEdPage* GetPage() const { return pDlgEdPage; }
+
+ void ShowDialog();
+
+ BOOL UnmarkDialog();
+ BOOL RemarkDialog();
+
+ void SetDialogModelChanged( BOOL bChanged = TRUE ) { bDialogModelChanged = bChanged; }
+ BOOL IsDialogModelChanged() const { return bDialogModelChanged; }
+
+ BOOL IsModified() const;
+ void ClearModifyFlag();
+
+ void MouseButtonDown( const MouseEvent& rMEvt );
+ void MouseButtonUp( const MouseEvent& rMEvt );
+ void MouseMove( const MouseEvent& rMEvt );
+ void Paint( const Rectangle& rRect );
+ BOOL KeyInput( const KeyEvent& rKEvt );
+
+ void SetMode( DlgEdMode eMode );
+ void SetInsertObj( USHORT eObj );
+ USHORT GetInsertObj() const;
+ void CreateDefaultObject();
+ DlgEdMode GetMode() const { return eMode; }
+ BOOL IsCreateOK() const { return bCreateOK; }
+
+ void Cut();
+ void Copy();
+ void Paste();
+ void Delete();
+ BOOL IsPasteAllowed();
+
+ void ShowProperties();
+ void UpdatePropertyBrowserDelayed();
+
+ sal_Int32 countPages( Printer* pPrinter );
+ void printPage( sal_Int32 nPage, Printer* pPrinter, const String& );
+
+ bool AdjustPageSize();
+
+ bool isInPaint() const { return mnPaintGuard > 0; }
+};
+
+#endif //_BASCTL_DLGED_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedclip.hxx b/basctl/source/inc/dlgedclip.hxx
new file mode 100644
index 000000000000..605b6ee87e34
--- /dev/null
+++ b/basctl/source/inc/dlgedclip.hxx
@@ -0,0 +1,68 @@
+/* -*- 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 _BASCTL_DLGEDCLIP_HXX
+#define _BASCTL_DLGEDCLIP_HXX
+
+#include <cppuhelper/implbase2.hxx>
+#include <com/sun/star/datatransfer/XTransferable.hpp>
+#include <com/sun/star/datatransfer/DataFlavor.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboardOwner.hpp>
+
+
+//============================================================================
+// DlgEdTransferableImpl
+//============================================================================
+
+typedef ::cppu::WeakImplHelper2< ::com::sun::star::datatransfer::XTransferable, ::com::sun::star::datatransfer::clipboard::XClipboardOwner > DlgEdTransferableHelper;
+
+class DlgEdTransferableImpl : public DlgEdTransferableHelper
+{
+private:
+ ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > m_SeqFlavors;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > m_SeqData;
+
+protected:
+ virtual sal_Bool compareDataFlavors( const ::com::sun::star::datatransfer::DataFlavor& lFlavor, const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+
+public:
+ DlgEdTransferableImpl( const ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor >& aSeqFlavors, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aSeqData );
+ virtual ~DlgEdTransferableImpl();
+
+ // XTransferable
+ virtual ::com::sun::star::uno::Any SAL_CALL getTransferData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ) throw(::com::sun::star::datatransfer::UnsupportedFlavorException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isDataFlavorSupported( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XClipboardOwner
+ virtual void SAL_CALL lostOwnership( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard >& xClipboard, const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& xTrans ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+#endif // _BASCTL_DLGEDCLIP_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgeddef.hxx b/basctl/source/inc/dlgeddef.hxx
new file mode 100644
index 000000000000..ae7926b9fb20
--- /dev/null
+++ b/basctl/source/inc/dlgeddef.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 _BASCTL_DLGEDDEF_HXX
+#define _BASCTL_DLGEDDEF_HXX
+
+#include <tools/solar.h>
+
+
+const UINT32 DlgInventor = UINT32('D')*0x00000001+
+ UINT32('L')*0x00000100+
+ UINT32('G')*0x00010000+
+ UINT32('1')*0x01000000;
+
+
+#define OBJ_DLG_CONTROL ((UINT16) 1)
+#define OBJ_DLG_DIALOG ((UINT16) 2)
+#define OBJ_DLG_PUSHBUTTON ((UINT16) 3)
+#define OBJ_DLG_RADIOBUTTON ((UINT16) 4)
+#define OBJ_DLG_CHECKBOX ((UINT16) 5)
+#define OBJ_DLG_LISTBOX ((UINT16) 6)
+#define OBJ_DLG_COMBOBOX ((UINT16) 7)
+#define OBJ_DLG_GROUPBOX ((UINT16) 8)
+#define OBJ_DLG_EDIT ((UINT16) 9)
+#define OBJ_DLG_FIXEDTEXT ((UINT16)10)
+#define OBJ_DLG_IMAGECONTROL ((UINT16)11)
+#define OBJ_DLG_PROGRESSBAR ((UINT16)12)
+#define OBJ_DLG_HSCROLLBAR ((UINT16)13)
+#define OBJ_DLG_VSCROLLBAR ((UINT16)14)
+#define OBJ_DLG_HFIXEDLINE ((UINT16)15)
+#define OBJ_DLG_VFIXEDLINE ((UINT16)16)
+#define OBJ_DLG_DATEFIELD ((UINT16)17)
+#define OBJ_DLG_TIMEFIELD ((UINT16)18)
+#define OBJ_DLG_NUMERICFIELD ((UINT16)19)
+#define OBJ_DLG_CURRENCYFIELD ((UINT16)20)
+#define OBJ_DLG_FORMATTEDFIELD ((UINT16)21)
+#define OBJ_DLG_PATTERNFIELD ((UINT16)22)
+#define OBJ_DLG_FILECONTROL ((UINT16)23)
+#define OBJ_DLG_TREECONTROL ((UINT16)24)
+
+// control properties
+#define DLGED_PROP_BACKGROUNDCOLOR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BackgroundColor" ) )
+#define DLGED_PROP_DROPDOWN ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Dropdown" ) )
+#define DLGED_PROP_FORMATSSUPPLIER ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FormatsSupplier" ) )
+#define DLGED_PROP_HEIGHT ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Height" ) )
+#define DLGED_PROP_LABEL ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Label" ) )
+#define DLGED_PROP_NAME ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) )
+#define DLGED_PROP_ORIENTATION ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Orientation" ) )
+#define DLGED_PROP_POSITIONX ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PositionX" ) )
+#define DLGED_PROP_POSITIONY ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PositionY" ) )
+#define DLGED_PROP_STEP ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Step" ) )
+#define DLGED_PROP_TABINDEX ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TabIndex" ) )
+#define DLGED_PROP_TEXTCOLOR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TextColor" ) )
+#define DLGED_PROP_TEXTLINECOLOR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TextLineColor" ) )
+#define DLGED_PROP_WIDTH ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Width" ) )
+#define DLGED_PROP_DECORATION ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Decoration" ) )
+
+
+#endif // _BASCTL_DLGEDDEF_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedfac.hxx b/basctl/source/inc/dlgedfac.hxx
new file mode 100644
index 000000000000..0b3debc5dbc2
--- /dev/null
+++ b/basctl/source/inc/dlgedfac.hxx
@@ -0,0 +1,51 @@
+/* -*- 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 _BASCTL_DLGEDFAC_HXX
+#define _BASCTL_DLGEDFAC_HXX
+
+#include <svx/svdobj.hxx>
+
+
+//============================================================================
+// DlgEdFactory
+//============================================================================
+
+class DlgEdFactory
+{
+public:
+ DlgEdFactory();
+ ~DlgEdFactory();
+
+ DECL_LINK( MakeObject, SdrObjFactory * );
+};
+
+#endif // _BASCTL_DLGEDFAC_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedfunc.hxx b/basctl/source/inc/dlgedfunc.hxx
new file mode 100644
index 000000000000..740485c801c8
--- /dev/null
+++ b/basctl/source/inc/dlgedfunc.hxx
@@ -0,0 +1,98 @@
+/* -*- 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 _BASCTL_DLGEDFUNC_HXX
+#define _BASCTL_DLGEDFUNC_HXX
+
+#include <vcl/timer.hxx>
+
+class DlgEditor;
+class Timer;
+class MouseEvent;
+class Point;
+
+//============================================================================
+// DlgEdFunc
+//============================================================================
+
+class DlgEdFunc /* : public LinkHdl */
+{
+protected:
+ DlgEditor* pParent;
+ Timer aScrollTimer;
+
+ DECL_LINK( ScrollTimeout, Timer * );
+ void ForceScroll( const Point& rPos );
+
+public:
+ DlgEdFunc( DlgEditor* pParent );
+ virtual ~DlgEdFunc();
+
+ virtual BOOL MouseButtonDown( const MouseEvent& rMEvt );
+ virtual BOOL MouseButtonUp( const MouseEvent& rMEvt );
+ virtual BOOL MouseMove( const MouseEvent& rMEvt );
+ virtual BOOL KeyInput( const KeyEvent& rKEvt );
+};
+
+//============================================================================
+// DlgEdFuncInsert
+//============================================================================
+
+class DlgEdFuncInsert : public DlgEdFunc
+{
+public:
+ DlgEdFuncInsert( DlgEditor* pParent );
+ ~DlgEdFuncInsert();
+
+ virtual BOOL MouseButtonDown( const MouseEvent& rMEvt );
+ virtual BOOL MouseButtonUp( const MouseEvent& rMEvt );
+ virtual BOOL MouseMove( const MouseEvent& rMEvt );
+};
+
+//============================================================================
+// DlgEdFuncSelect
+//============================================================================
+
+class DlgEdFuncSelect : public DlgEdFunc
+{
+protected:
+ BOOL bMarkAction;
+
+public:
+ DlgEdFuncSelect( DlgEditor* pParent );
+ ~DlgEdFuncSelect();
+
+ virtual BOOL MouseButtonDown( const MouseEvent& rMEvt );
+ virtual BOOL MouseButtonUp( const MouseEvent& rMEvt );
+ virtual BOOL MouseMove( const MouseEvent& rMEvt );
+};
+
+
+#endif //_BASCTL_DLGEDFUNC_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedlist.hxx b/basctl/source/inc/dlgedlist.hxx
new file mode 100644
index 000000000000..39b9473abba4
--- /dev/null
+++ b/basctl/source/inc/dlgedlist.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 _BASCTL_DLGEDLIST_HXX
+#define _BASCTL_DLGEDLIST_HXX
+
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/container/XContainerListener.hpp>
+
+class DlgEdObj;
+
+//============================================================================
+// DlgEdPropListenerImpl
+//============================================================================
+
+typedef ::cppu::WeakImplHelper1< ::com::sun::star::beans::XPropertyChangeListener > PropertyChangeListenerHelper;
+
+class DlgEdPropListenerImpl: public PropertyChangeListenerHelper
+{
+private:
+ DlgEdObj* pDlgEdObj;
+
+public:
+ DlgEdPropListenerImpl(DlgEdObj* pObj);
+ virtual ~DlgEdPropListenerImpl();
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw(::com::sun::star::uno::RuntimeException);
+
+};
+
+//============================================================================
+// DlgEdEvtContListenerImpl
+//============================================================================
+
+typedef ::cppu::WeakImplHelper1< ::com::sun::star::container::XContainerListener > ContainerListenerHelper;
+
+class DlgEdEvtContListenerImpl: public ContainerListenerHelper
+{
+private:
+ DlgEdObj* pDlgEdObj;
+
+public:
+ DlgEdEvtContListenerImpl(DlgEdObj* pObj);
+ virtual ~DlgEdEvtContListenerImpl();
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XContainerListener
+ virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+#endif // _BASCTL_DLGEDLIST_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedmod.hxx b/basctl/source/inc/dlgedmod.hxx
new file mode 100644
index 000000000000..f4abcaad49c3
--- /dev/null
+++ b/basctl/source/inc/dlgedmod.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 _BASCTL_DLGEDMOD_HXX
+#define _BASCTL_DLGEDMOD_HXX
+
+#include <svx/svdmodel.hxx>
+
+
+//============================================================================
+// DlgEdModel
+//============================================================================
+
+class DlgEdPage;
+class Window;
+class SfxObjectShell;
+
+class DlgEdModel : public SdrModel
+{
+ friend class DlgEdPage;
+
+private:
+ DlgEdModel( const DlgEdModel& ); // not implemented
+ void operator=(const DlgEdModel& rSrcModel); // not implemented
+
+public:
+ TYPEINFO();
+
+ DlgEdModel();
+ virtual ~DlgEdModel();
+
+ virtual void DlgEdModelChanged( bool bChanged = true );
+
+ virtual SdrPage* AllocPage(bool bMasterPage);
+
+ virtual Window* GetCurDocViewWin();
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedobj.hxx b/basctl/source/inc/dlgedobj.hxx
new file mode 100644
index 000000000000..ab8dbf3fa10e
--- /dev/null
+++ b/basctl/source/inc/dlgedobj.hxx
@@ -0,0 +1,198 @@
+/* -*- 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 _BASCTL_DLGEDOBJ_HXX
+#define _BASCTL_DLGEDOBJ_HXX
+
+#include <svx/svdouno.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/container/XContainerListener.hpp>
+
+#include <vector>
+#include <map>
+
+#include <boost/optional.hpp>
+
+typedef ::std::multimap< sal_Int16, ::rtl::OUString, ::std::less< sal_Int16 > > IndexToNameMap;
+
+
+class DlgEdForm;
+class DlgEditor;
+
+//============================================================================
+// DlgEdObj
+//============================================================================
+
+class DlgEdObj: public SdrUnoObj
+{
+ friend class DlgEditor;
+ friend class DlgEdFactory;
+ friend class DlgEdPropListenerImpl;
+ friend class DlgEdForm;
+
+private:
+ sal_Bool bIsListening;
+ DlgEdForm* pDlgEdForm;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener> m_xPropertyChangeListener;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener> m_xContainerListener;
+
+protected:
+ DlgEdObj();
+ DlgEdObj(const ::rtl::OUString& rModelName,
+ const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac);
+
+ virtual void NbcMove( const Size& rSize );
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+
+ DECL_LINK(OnCreate, void* );
+
+ using SfxListener::StartListening;
+ void StartListening();
+ using SfxListener::EndListening;
+ void EndListening(sal_Bool bRemoveListener = sal_True);
+ sal_Bool isListening() const { return bIsListening; }
+
+ virtual bool TransformSdrToControlCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut );
+ virtual bool TransformSdrToFormCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut );
+ virtual bool TransformControlToSdrCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut );
+ virtual bool TransformFormToSdrCoordinates(
+ sal_Int32 nXIn, sal_Int32 nYIn, sal_Int32 nWidthIn, sal_Int32 nHeightIn,
+ sal_Int32& nXOut, sal_Int32& nYOut, sal_Int32& nWidthOut, sal_Int32& nHeightOut );
+
+public:
+ TYPEINFO();
+
+ virtual ~DlgEdObj();
+ virtual void SetPage(SdrPage* pNewPage);
+
+ virtual void SetDlgEdForm( DlgEdForm* pForm ) { pDlgEdForm = pForm; }
+ virtual DlgEdForm* GetDlgEdForm() const { return pDlgEdForm; }
+
+ virtual sal_uInt32 GetObjInventor() const;
+ virtual sal_uInt16 GetObjIdentifier() const;
+
+ virtual SdrObject* Clone() const; // not working yet
+ virtual void operator= (const SdrObject& rObj); // not working yet
+ virtual void clonedFrom(const DlgEdObj* _pSource); // not working yet
+
+ // FullDrag support
+ virtual SdrObject* getFullDragClone() const;
+
+ virtual sal_Bool supportsService( const sal_Char* _pServiceName ) const;
+ virtual ::rtl::OUString GetDefaultName() const;
+ virtual ::rtl::OUString GetUniqueName() const;
+
+ virtual sal_Int32 GetStep() const;
+ virtual void UpdateStep();
+
+ virtual void SetDefaults();
+ virtual void SetRectFromProps();
+ virtual void SetPropsFromRect();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl > GetControl() const;
+
+ virtual void PositionAndSizeChange( const ::com::sun::star::beans::PropertyChangeEvent& evt );
+ virtual void SAL_CALL NameChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw( ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL TabIndexChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw( ::com::sun::star::uno::RuntimeException);
+
+ // PropertyChangeListener
+ virtual void SAL_CALL _propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw(::com::sun::star::uno::RuntimeException);
+
+ // ContainerListener
+ virtual void SAL_CALL _elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL _elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL _elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void SetLayer(SdrLayerID nLayer);
+};
+
+
+//============================================================================
+// DlgEdForm
+//============================================================================
+
+class DlgEdForm: public DlgEdObj
+{
+ friend class DlgEditor;
+ friend class DlgEdFactory;
+
+private:
+ DlgEditor* pDlgEditor;
+ ::std::vector<DlgEdObj*> pChilds;
+
+ mutable ::boost::optional< ::com::sun::star::awt::DeviceInfo > mpDeviceInfo;
+
+
+protected:
+ DlgEdForm();
+
+ virtual void NbcMove( const Size& rSize );
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+
+public:
+ TYPEINFO();
+
+ virtual ~DlgEdForm();
+
+ virtual void SetDlgEditor( DlgEditor* pEditor );
+ virtual DlgEditor* GetDlgEditor() const { return pDlgEditor; }
+
+ virtual void AddChild( DlgEdObj* pDlgEdObj );
+ virtual void RemoveChild( DlgEdObj* pDlgEdObj );
+ virtual ::std::vector<DlgEdObj*> GetChilds() const { return pChilds; }
+
+ virtual void UpdateStep();
+
+ virtual void SetRectFromProps();
+ virtual void SetPropsFromRect();
+
+ virtual void PositionAndSizeChange( const ::com::sun::star::beans::PropertyChangeEvent& evt );
+
+ virtual void UpdateTabIndices();
+ virtual void UpdateTabOrder();
+ virtual void UpdateGroups();
+ virtual void UpdateTabOrderAndGroups();
+
+ ::com::sun::star::awt::DeviceInfo getDeviceInfo() const;
+
+private:
+ void ImplInvalidateDeviceInfo();
+};
+
+#endif // _BASCTL_DLGEDOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedpage.hxx b/basctl/source/inc/dlgedpage.hxx
new file mode 100644
index 000000000000..ed8682c3339b
--- /dev/null
+++ b/basctl/source/inc/dlgedpage.hxx
@@ -0,0 +1,64 @@
+/* -*- 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 _BASCTL_DLGEDPAGE_HXX
+#define _BASCTL_DLGEDPAGE_HXX
+
+#include "svx/svdpage.hxx"
+
+//============================================================================
+// DlgEdPage
+//============================================================================
+
+class DlgEdModel;
+class DlgEdForm;
+
+class DlgEdPage : public SdrPage
+{
+private:
+ DlgEdForm* pDlgEdForm;
+
+public:
+ TYPEINFO();
+
+ DlgEdPage( DlgEdModel& rModel, bool bMasterPage = false );
+ DlgEdPage( const DlgEdPage& );
+ virtual ~DlgEdPage();
+
+ using SdrPage::Clone;
+ virtual SdrPage* Clone() const;
+
+ void SetDlgEdForm( DlgEdForm* pForm ) { pDlgEdForm = pForm; }
+ DlgEdForm* GetDlgEdForm() const { return pDlgEdForm; }
+
+ virtual SdrObject* SetObjectOrdNum(ULONG nOldObjNum, ULONG nNewObjNum);
+};
+
+#endif //_BASCTL_DLGEDPAGE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgedview.hxx b/basctl/source/inc/dlgedview.hxx
new file mode 100644
index 000000000000..08da25932227
--- /dev/null
+++ b/basctl/source/inc/dlgedview.hxx
@@ -0,0 +1,63 @@
+/* -*- 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 _BASCTL_DLGEDVIEW_HXX
+#define _BASCTL_DLGEDVIEW_HXX
+
+#include <svx/svdview.hxx>
+
+class DlgEditor;
+
+//============================================================================
+// DlgEdView
+//============================================================================
+
+class DlgEdView : public SdrView
+{
+private:
+ DlgEditor* pDlgEditor;
+
+public:
+ TYPEINFO();
+
+ DlgEdView( SdrModel* pModel, OutputDevice* pOut, DlgEditor* pEditor );
+ virtual ~DlgEdView();
+
+ virtual void MarkListHasChanged();
+ virtual void MakeVisible( const Rectangle& rRect, Window& rWin );
+
+protected:
+ // overloaded to handle HitTest for some objects special
+ using SdrView::CheckSingleSdrObjectHit;
+ virtual SdrObject* CheckSingleSdrObjectHit(const Point& rPnt, USHORT nTol, SdrObject* pObj, SdrPageView* pPV, ULONG nOptions, const SetOfByte* pMVisLay) const;
+};
+
+#endif //_BASCTL_DLGEDVIEW_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/dlgresid.hrc b/basctl/source/inc/dlgresid.hrc
new file mode 100644
index 000000000000..3499cd5ed7c6
--- /dev/null
+++ b/basctl/source/inc/dlgresid.hrc
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * 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 _BASCTL_DLGRESID_HRC
+#define _BASCTL_DLGRESID_HRC
+
+// include -----------------------------------------------------------
+
+#include <svl/solar.hrc>
+
+// Dialog Control Id's -----------------------------------------------------------
+
+#define RID_STR_CLASS_CONTROL ( RID_DLG_START + 0 )
+#define RID_STR_CLASS_DIALOG ( RID_DLG_START + 1 )
+#define RID_STR_CLASS_BUTTON ( RID_DLG_START + 2 )
+#define RID_STR_CLASS_RADIOBUTTON ( RID_DLG_START + 3 )
+#define RID_STR_CLASS_CHECKBOX ( RID_DLG_START + 4 )
+#define RID_STR_CLASS_LISTBOX ( RID_DLG_START + 5 )
+#define RID_STR_CLASS_COMBOBOX ( RID_DLG_START + 6 )
+#define RID_STR_CLASS_GROUPBOX ( RID_DLG_START + 7 )
+#define RID_STR_CLASS_EDIT ( RID_DLG_START + 8 )
+#define RID_STR_CLASS_FIXEDTEXT ( RID_DLG_START + 9 )
+#define RID_STR_CLASS_IMAGECONTROL ( RID_DLG_START + 10 )
+#define RID_STR_CLASS_PROGRESSBAR ( RID_DLG_START + 11 )
+#define RID_STR_CLASS_SCROLLBAR ( RID_DLG_START + 12 )
+#define RID_STR_CLASS_FIXEDLINE ( RID_DLG_START + 13 )
+#define RID_STR_CLASS_DATEFIELD ( RID_DLG_START + 14 )
+#define RID_STR_CLASS_TIMEFIELD ( RID_DLG_START + 15 )
+#define RID_STR_CLASS_NUMERICFIELD ( RID_DLG_START + 16 )
+#define RID_STR_CLASS_CURRENCYFIELD ( RID_DLG_START + 17 )
+#define RID_STR_CLASS_FORMATTEDFIELD ( RID_DLG_START + 18 )
+#define RID_STR_CLASS_PATTERNFIELD ( RID_DLG_START + 19 )
+#define RID_STR_CLASS_FILECONTROL ( RID_DLG_START + 20 )
+#define RID_STR_TRANSLATION_NOTLOCALIZED ( RID_DLG_START + 21 )
+#define RID_STR_TRANSLATION_DEFAULT ( RID_DLG_START + 22 )
+#define RID_STR_CLASS_TREECONTROL ( RID_DLG_START + 23 )
+// Property Browser Headline Id's -----------------------------------------------------------
+
+#define RID_STR_BRWTITLE_PROPERTIES ( RID_DLG_START + 60 )
+#define RID_STR_BRWTITLE_NO_PROPERTIES ( RID_DLG_START + 61 )
+#define RID_STR_BRWTITLE_MULTISELECT ( RID_DLG_START + 62 )
+
+// Manage Language Dialogs
+
+#define RID_DLG_MANAGE_LANGUAGE ( RID_DLG_START + 70 )
+#define RID_QRYBOX_LANGUAGE ( RID_DLG_START + 71 )
+#define RID_DLG_SETDEF_LANGUAGE ( RID_DLG_START + 72 )
+#define RID_DLG_ADD_LANGUAGE ( RID_DLG_START + 73 )
+
+// -----------------------------------------------------------------------
+
+#endif // _BASCTL_DLGRESID_HRC
+
diff --git a/basctl/source/inc/doceventnotifier.hxx b/basctl/source/inc/doceventnotifier.hxx
new file mode 100644
index 000000000000..bad9f29c515b
--- /dev/null
+++ b/basctl/source/inc/doceventnotifier.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 BASCTL_DOCEVENTNOTIFIER_HXX
+#define BASCTL_DOCEVENTNOTIFIER_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/frame/XModel.hpp>
+/** === end UNO includes === **/
+
+#include <rtl/ref.hxx>
+
+#include <boost/noncopyable.hpp>
+
+//........................................................................
+namespace basctl
+{
+//........................................................................
+
+ class ScriptDocument;
+
+ //====================================================================
+ //= DocumentEventListener
+ //====================================================================
+ class SAL_NO_VTABLE DocumentEventListener : ::boost::noncopyable
+ {
+ public:
+ virtual void onDocumentCreated( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentOpened( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentSave( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentSaveDone( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentSaveAs( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentSaveAsDone( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentClosed( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentTitleChanged( const ScriptDocument& _rDocument ) = 0;
+ virtual void onDocumentModeChanged( const ScriptDocument& _rDocument ) = 0;
+
+ virtual ~DocumentEventListener();
+ };
+
+ //====================================================================
+ //= DocumentEventNotifier
+ //====================================================================
+ class DocumentEventNotifier_Impl;
+ /** allows registering at the GlobalEventBroadcaster for global document events
+ */
+ class DocumentEventNotifier
+ {
+ public:
+ /** create a notifier instance which notifies about events of all documents in the whole application
+ */
+ DocumentEventNotifier( DocumentEventListener& _rListener );
+
+ /** creates a notifier instance which notifies about events at a single document
+ */
+ DocumentEventNotifier( DocumentEventListener& _rListener,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxDocument );
+
+ ~DocumentEventNotifier();
+
+ public:
+ void dispose();
+
+ private:
+ ::rtl::Reference< DocumentEventNotifier_Impl > m_pImpl;
+ };
+
+//........................................................................
+} // namespace basctl
+//........................................................................
+
+#endif // BASCTL_DOCEVENTNOTIFIER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/docsignature.hxx b/basctl/source/inc/docsignature.hxx
new file mode 100644
index 000000000000..941b76026041
--- /dev/null
+++ b/basctl/source/inc/docsignature.hxx
@@ -0,0 +1,92 @@
+/* -*- 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 BASCTL_DOCSIGNATURE_HXX
+#define BASCTL_DOCSIGNATURE_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/frame/XModel.hpp>
+/** === end UNO includes === **/
+
+#include <memory>
+
+//........................................................................
+namespace basctl
+{
+//........................................................................
+
+ class ScriptDocument;
+ //====================================================================
+ //= DocumentSignature
+ //====================================================================
+ struct DocumentSignature_Data;
+ /// encapsulates (actions on) the signature/state of a document
+ class DocumentSignature
+ {
+ public:
+ /** creates a DocumentSignature instance for the given document
+
+ If the given ScriptDocument instance refers to the application, or to a document
+ which does not support being signed, the DocumentSignature instance is invalid afterwards.
+ */
+ DocumentSignature( const ScriptDocument& _rDocument );
+ ~DocumentSignature();
+
+ /** determines whether the instance is valid
+
+ An instance is valid if and only if it has been constructed with a document
+ which supports signatures.
+ */
+ bool supportsSignatures() const;
+
+ /** signs the scripting content inside the document
+
+ @precond
+ isValid returns <TRUE/>
+ */
+ void signScriptingContent() const;
+
+ /** retrieves the state of the signature of the scripting content inside the document
+
+ If the instance is not valid, then SIGNATURESTATE_NOSIGNATURES is returned.
+ */
+ sal_uInt16 getScriptingSignatureState() const;
+
+ private:
+ DocumentSignature(); // not implemented
+
+ private:
+ ::std::auto_ptr< DocumentSignature_Data > m_pData;
+ };
+
+//........................................................................
+} // namespace basctl
+//........................................................................
+
+#endif // BASCTL_DOCSIGNATURE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/iderid.hxx b/basctl/source/inc/iderid.hxx
new file mode 100644
index 000000000000..f8560ad45d00
--- /dev/null
+++ b/basctl/source/inc/iderid.hxx
@@ -0,0 +1,43 @@
+/* -*- 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 _IDERID_HXX
+#define _IDERID_HXX
+
+#include <tools/resid.hxx>
+
+class IDEResId: public ResId
+{
+public:
+ IDEResId( USHORT nId );
+};
+
+
+#endif //_IDERID_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/localizationmgr.hxx b/basctl/source/inc/localizationmgr.hxx
new file mode 100644
index 000000000000..7a61eeb132dc
--- /dev/null
+++ b/basctl/source/inc/localizationmgr.hxx
@@ -0,0 +1,158 @@
+/* -*- 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 _LOCALIZATIONMGR_HXX
+#define _LOCALIZATIONMGR_HXX
+
+#include <com/sun/star/resource/XStringResourceManager.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+
+#include "scriptdocument.hxx"
+
+class BasicIDEShell;
+class DlgEditor;
+
+class LocalizationMgr
+{
+ ::com::sun::star::uno::Reference
+ < ::com::sun::star::resource::XStringResourceManager > m_xStringResourceManager;
+
+ BasicIDEShell* m_pIDEShell;
+
+ ScriptDocument m_aDocument;
+ String m_aLibName;
+
+ ::com::sun::star::lang::Locale m_aLocaleBeforeBasicStart;
+
+ enum HandleResourceMode
+ {
+ SET_IDS,
+ RESET_IDS,
+ RENAME_DIALOG_IDS,
+ RENAME_CONTROL_IDS,
+ REMOVE_IDS_FROM_RESOURCE,
+ MOVE_RESOURCES,
+ COPY_RESOURCES
+ };
+ static sal_Int32 implHandleControlResourceProperties( ::com::sun::star::uno::Any aControlAny,
+ const ::rtl::OUString& aDialogName, const ::rtl::OUString& aCtrlName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceManager >
+ xStringResourceManager, ::com::sun::star::uno::Reference< ::com::sun::star::resource::
+ XStringResourceResolver > xSourceStringResolver, HandleResourceMode eMode );
+
+ void enableResourceForAllLibraryDialogs( void )
+ {
+ implEnableDisableResourceForAllLibraryDialogs( SET_IDS );
+ }
+ void disableResourceForAllLibraryDialogs( void )
+ {
+ implEnableDisableResourceForAllLibraryDialogs( RESET_IDS );
+ }
+ void implEnableDisableResourceForAllLibraryDialogs( HandleResourceMode eMode );
+
+public:
+ LocalizationMgr( BasicIDEShell* pIDEShell, const ScriptDocument& rDocument, String aLibName,
+ const ::com::sun::star::uno::Reference
+ < ::com::sun::star::resource::XStringResourceManager >& xStringResourceManager );
+ ::com::sun::star::uno::Reference
+ < ::com::sun::star::resource::XStringResourceManager >getStringResourceManager( void )
+ {
+ return m_xStringResourceManager;
+ }
+
+ bool isLibraryLocalized( void );
+
+ void handleTranslationbar( void );
+
+ void handleAddLocales( ::com::sun::star::uno::Sequence
+ < ::com::sun::star::lang::Locale > aLocaleSeq );
+
+ void handleRemoveLocales( ::com::sun::star::uno::Sequence
+ < ::com::sun::star::lang::Locale > aLocaleSeq );
+
+ void handleSetDefaultLocale( ::com::sun::star::lang::Locale aLocale );
+
+ void handleSetCurrentLocale( ::com::sun::star::lang::Locale aLocale );
+
+ void handleBasicStarted( void );
+
+ void handleBasicStopped( void );
+
+ static void setControlResourceIDsForNewEditorObject( DlgEditor* pEditor,
+ ::com::sun::star::uno::Any aControlAny, const ::rtl::OUString& aCtrlName );
+
+ static void renameControlResourceIDsForEditorObject( DlgEditor* pEditor,
+ ::com::sun::star::uno::Any aControlAny, const ::rtl::OUString& aNewCtrlName );
+
+ static void deleteControlResourceIDsForDeletedEditorObject( DlgEditor* pEditor,
+ ::com::sun::star::uno::Any aControlAny, const ::rtl::OUString& aCtrlName );
+
+ static void setStringResourceAtDialog( const ScriptDocument& rDocument, const String& aLibName, const String& aDlgName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > xDialogModel );
+
+ static void renameStringResourceIDs( const ScriptDocument& rDocument, const String& aLibName, const String& aDlgName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > xDialogModel );
+
+ static void removeResourceForDialog( const ScriptDocument& rDocument, const String& aLibName, const String& aDlgName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > xDialogModel );
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceManager >
+ getStringResourceFromDialogLibrary( ::com::sun::star::uno::Reference
+ < ::com::sun::star::container::XNameContainer > xDialogLib );
+
+ // Clipboard / Drag & Drop
+ static void resetResourceForDialog(
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > xDialogModel,
+ ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceManager > xStringResourceManager );
+
+ static void setResourceIDsForDialog(
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > xDialogModel,
+ ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceManager > xStringResourceManager );
+
+ static void copyResourcesForPastedEditorObject( DlgEditor* pEditor,
+ ::com::sun::star::uno::Any aControlAny, const ::rtl::OUString& aCtrlName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::resource::
+ XStringResourceResolver > xSourceStringResolver );
+
+ static void copyResourceForDroppedDialog(
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > xDialogModel,
+ const ::rtl::OUString& aDialogName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceManager > xStringResourceManager,
+ ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceResolver > xSourceStringResolver );
+
+ static void copyResourceForDialog(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& xDialogModel,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::resource::
+ XStringResourceResolver >& xSourceStringResolver,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::resource::
+ XStringResourceManager >& xTargetStringResourceManager );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/managelang.hxx b/basctl/source/inc/managelang.hxx
new file mode 100644
index 000000000000..ef030b4bcdf1
--- /dev/null
+++ b/basctl/source/inc/managelang.hxx
@@ -0,0 +1,121 @@
+/* -*- 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 _BASCTL_MANAGELANG_HXX
+#define _BASCTL_MANAGELANG_HXX
+
+#include <vcl/dialog.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/button.hxx>
+#include <svx/langbox.hxx>
+#include <svx/checklbx.hxx>
+
+class LocalizationMgr;
+
+struct LanguageEntry
+{
+ String m_sLanguage;
+ ::com::sun::star::lang::Locale m_aLocale;
+ bool m_bIsDefault;
+
+ LanguageEntry( const String& _rLanguage,
+ const ::com::sun::star::lang::Locale& _rLocale,
+ bool _bIsDefault ) :
+ m_sLanguage( _rLanguage ),
+ m_aLocale( _rLocale ),
+ m_bIsDefault( _bIsDefault ) {}
+};
+
+extern bool localesAreEqual( const ::com::sun::star::lang::Locale& rLocaleLeft,
+ const ::com::sun::star::lang::Locale& rLocaleRight );
+
+class ManageLanguageDialog : public ModalDialog
+{
+private:
+ FixedText m_aLanguageFT;
+ ListBox m_aLanguageLB;
+ PushButton m_aAddPB;
+ PushButton m_aDeletePB;
+ PushButton m_aMakeDefPB;
+ FixedText m_aInfoFT;
+
+ FixedLine m_aBtnLine;
+ HelpButton m_aHelpBtn;
+ OKButton m_aCloseBtn;
+
+ LocalizationMgr* m_pLocalizationMgr;
+
+ String m_sDefLangStr;
+ String m_sDeleteStr;
+ String m_sCreateLangStr;
+
+ void Init();
+ void CalcInfoSize();
+ void FillLanguageBox();
+ void ClearLanguageBox();
+
+ DECL_LINK( AddHdl, Button * );
+ DECL_LINK( DeleteHdl, Button * );
+ DECL_LINK( MakeDefHdl, Button * );
+ DECL_LINK( SelectHdl, ListBox * );
+
+public:
+ ManageLanguageDialog( Window* pParent, LocalizationMgr* _pLMgr );
+ ~ManageLanguageDialog();
+};
+
+class SetDefaultLanguageDialog : public ModalDialog
+{
+private:
+ FixedText m_aLanguageFT;
+ SvxLanguageBox* m_pLanguageLB;
+ SvxCheckListBox* m_pCheckLangLB;
+ FixedText m_aInfoFT;
+
+ FixedLine m_aBtnLine;
+ OKButton m_aOKBtn;
+ CancelButton m_aCancelBtn;
+ HelpButton m_aHelpBtn;
+
+ bool m_bIsDefaultMode;
+ LocalizationMgr* m_pLocalizationMgr;
+
+ void FillLanguageBox();
+ void CalcInfoSize();
+
+public:
+ SetDefaultLanguageDialog( Window* pParent, LocalizationMgr* _pLMgr );
+ ~SetDefaultLanguageDialog();
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > GetLocales() const;
+};
+
+#endif //_BASCTL_MANAGELANG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/propbrw.hxx b/basctl/source/inc/propbrw.hxx
new file mode 100644
index 000000000000..9e0e1e334b0f
--- /dev/null
+++ b/basctl/source/inc/propbrw.hxx
@@ -0,0 +1,118 @@
+/* -*- 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 _BASCTL_PROPBRW_HXX
+#define _BASCTL_PROPBRW_HXX
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <comphelper/composedprops.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <svl/brdcst.hxx>
+#include <svl/lstner.hxx>
+#include <sfx2/childwin.hxx>
+#include <svx/svdmark.hxx>
+
+//============================================================================
+// PropBrwMgr
+//============================================================================
+
+class PropBrwMgr : public SfxChildWindow
+{
+public:
+ PropBrwMgr(Window *pParent, sal_uInt16 nId, SfxBindings *pBindings, SfxChildWinInfo *pInfo);
+ SFX_DECL_CHILDWINDOW(PropBrwMgr);
+};
+
+//============================================================================
+// PropBrw
+//============================================================================
+
+class SfxBindings;
+class SdrView;
+
+class PropBrw : public SfxFloatingWindow , public SfxListener, public SfxBroadcaster
+{
+private:
+ sal_Bool m_bInitialStateChange;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ m_xORB;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >
+ m_xMeAsFrame;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+ m_xBrowserController;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >
+ m_xBrowserComponentWindow;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ m_xContextDocument;
+
+protected:
+ SdrView* pView;
+ virtual void Resize();
+ virtual void FillInfo( SfxChildWinInfo& rInfo ) const;
+ virtual sal_Bool Close();
+
+ DECLARE_STL_VECTOR(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>, InterfaceArray);
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >
+ CreateMultiSelectionSequence( const SdrMarkList& _rMarkList );
+ void implSetNewObjectSequence( const ::com::sun::star::uno::Sequence
+ < ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& _rObjectSeq );
+
+ void implSetNewObject(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject);
+
+ ::rtl::OUString GetHeadlineName(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject);
+
+public:
+ PropBrw( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB,
+ SfxBindings *pBindings,
+ PropBrwMgr* pMgr,
+ Window* pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxContextDocument
+ );
+ virtual ~PropBrw();
+ using Window::Update;
+ // note: changing the Context document to an instance other than the one given in the ctor is not supported
+ // currently
+ void Update( const SfxViewShell* _pShell );
+ SdrView* GetCurView() const { return pView; }
+
+private:
+ void ImplUpdate( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxContextDocument, SdrView* pView );
+ void ImplDestroyController();
+ void ImplReCreateController();
+};
+
+#endif // _BASCTL_PROPBRW_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/sbxitem.hxx b/basctl/source/inc/sbxitem.hxx
new file mode 100644
index 000000000000..a3b0c907caf8
--- /dev/null
+++ b/basctl/source/inc/sbxitem.hxx
@@ -0,0 +1,79 @@
+/* -*- 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 _SBXITEM_HXX
+#define _SBXITEM_HXX
+
+#include "scriptdocument.hxx"
+#include <svl/poolitem.hxx>
+
+const USHORT BASICIDE_TYPE_UNKNOWN = 0;
+const USHORT BASICIDE_TYPE_SHELL = 1;
+const USHORT BASICIDE_TYPE_LIBRARY = 2;
+const USHORT BASICIDE_TYPE_MODULE = 3;
+const USHORT BASICIDE_TYPE_DIALOG = 4;
+const USHORT BASICIDE_TYPE_METHOD = 5;
+
+
+class SbxItem : public SfxPoolItem
+{
+ ScriptDocument m_aDocument;
+ String m_aLibName;
+ String m_aName;
+ String m_aMethodName;
+ USHORT m_nType;
+
+public:
+ TYPEINFO();
+ SbxItem( USHORT nWhich, const ScriptDocument& rDocument, const String& aLibName, const String& aName, USHORT nType );
+ SbxItem( USHORT nWhich, const ScriptDocument& rDocument, const String& aLibName, const String& aName, const String& aMethodName, USHORT nType );
+ SbxItem( const SbxItem& );
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+
+ const ScriptDocument&
+ GetDocument() const { return m_aDocument; }
+ void SetDocument( const ScriptDocument& rDocument ) { m_aDocument = rDocument; }
+
+ const String& GetLibName() const { return m_aLibName; }
+ void SetLibName( const String& aLibName ) { m_aLibName = aLibName; }
+
+ const String& GetName() const { return m_aName; }
+ void SetName( const String& aName ) { m_aName = aName; }
+
+ const String& GetMethodName() const { return m_aMethodName; }
+ void SetMethodName( const String& aMethodName ) { m_aMethodName = aMethodName; }
+
+ USHORT GetType() const { return m_nType; }
+ void SetType( USHORT nType ) { m_nType = nType; }
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/scriptdocument.hxx b/basctl/source/inc/scriptdocument.hxx
new file mode 100644
index 000000000000..5791971a57d8
--- /dev/null
+++ b/basctl/source/inc/scriptdocument.hxx
@@ -0,0 +1,540 @@
+/* -*- 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 SCRIPTDOCUMENT_HXX
+#define SCRIPTDOCUMENT_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <com/sun/star/io/XInputStreamProvider.hpp>
+/** === end UNO includes === **/
+
+#include <boost/shared_ptr.hpp>
+#include <vector>
+
+class BasicManager;
+class SfxListener;
+
+//........................................................................
+namespace basctl
+{
+//........................................................................
+
+ //====================================================================
+ //= LibraryContainerType
+ //====================================================================
+ enum LibraryContainerType
+ {
+ E_SCRIPTS,
+ E_DIALOGS
+ };
+
+ enum LibraryLocation
+ {
+ LIBRARY_LOCATION_UNKNOWN,
+ LIBRARY_LOCATION_USER,
+ LIBRARY_LOCATION_SHARE,
+ LIBRARY_LOCATION_DOCUMENT
+ };
+
+ enum LibraryType
+ {
+ LIBRARY_TYPE_UNKNOWN,
+ LIBRARY_TYPE_MODULE,
+ LIBRARY_TYPE_DIALOG,
+ LIBRARY_TYPE_ALL
+ };
+
+ //====================================================================
+ //= ScriptDocument
+ //====================================================================
+ class ScriptDocument_Impl;
+
+ class ScriptDocument;
+ typedef ::std::vector< ScriptDocument > ScriptDocuments;
+
+ /** encapsulates a document which contains Basic scripts and dialogs
+ */
+ class ScriptDocument
+ {
+ private:
+ ::boost::shared_ptr< ScriptDocument_Impl > m_pImpl;
+
+ private:
+ /** creates a ScriptDocument instance which operates on the application-wide
+ scripts and dialogs
+ */
+ ScriptDocument();
+
+ public:
+ enum SpecialDocument { NoDocument };
+ /** creates a ScriptDocument instance which does refers to neither the application-wide,
+ nor a specific real document's scripts.
+
+ This constructor might come handy when you need some kind of uninitialized
+ ScriptDocument, which you do not want to operate on (yet), but initialize later
+ by assignment.
+
+ <member>isValid</member> will return <FALSE/> for a ScriptDocument constructed
+ this way.
+ */
+ explicit ScriptDocument( SpecialDocument _eType );
+
+ /** creates a ScriptDocument instance which refers to a document given as
+ XModel
+
+ @param _rxDocument
+ the document. Must not be <NULL/>.
+ */
+ explicit ScriptDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxDocument );
+
+ /// copy constructor
+ ScriptDocument( const ScriptDocument& _rSource );
+
+ /// destructor
+ ~ScriptDocument();
+
+ /** returns a reference to a shared ScriptDocument instance which
+ operates on the application-wide scripts and dialogs
+ */
+ static const ScriptDocument&
+ getApplicationScriptDocument();
+
+ /** returns a (newly created) ScriptDocument instance for the document to
+ which a given BasicManager belongs
+
+ If the basic manager is the application's basic manager, then the (shared)
+ ScriptDocument instance which is responsible for the application is returned.
+
+ @see getApplicationScriptDocument
+ */
+ static ScriptDocument
+ getDocumentForBasicManager( const BasicManager* _pManager );
+
+ /** returns a (newly created) ScriptDocument instance for the document
+ with a given caption or URL
+
+ If there is no document with the given caption, then the (shared)
+ ScriptDocument instance which is responsible for the application is returned.
+
+ @see getApplicationScriptDocument
+ */
+ static ScriptDocument
+ getDocumentWithURLOrCaption( const ::rtl::OUString& _rUrlOrCaption );
+
+ /** operation mode for getAllScriptDocuments
+ */
+ enum ScriptDocumentList
+ {
+ /** all ScriptDocuments, including the dedicated one which represents
+ the application-wide scripts/dialogs.
+ */
+ AllWithApplication,
+ /** real documents only
+ */
+ DocumentsOnly,
+ /** real documents only, sorted lexicographically by their title (using the sys locale's default
+ collator)
+ */
+ DocumentsSorted
+ };
+
+ /** returns the set of ScriptDocument instances, one for each open document which
+ contains Basic/Dialog containers; plus an additional instance for
+ the application, if desired
+
+ Documents which are not visible - i.e. do not have a visible frame.
+
+ @param _bIncludingApplication
+ <TRUE/> if the application-wide scripts/dialogs should also be represented
+ by a ScriptDocument
+ */
+ static ScriptDocuments
+ getAllScriptDocuments( ScriptDocumentList _eListType );
+
+ // comparison
+ bool operator==( const ScriptDocument& _rhs ) const;
+ inline bool operator!=( const ScriptDocument& _rhs ) const { return !( *this == _rhs ); }
+
+ /// retrieves a (pretty simple) hash code for the document
+ sal_Int32 hashCode() const;
+
+ /** determines whether the document is actually able to contain Basic/Dialog libraries
+
+ Note that validity does not automatically imply the document can be used for active
+ work. Instead, it is possible the document is closed already (or being closed currently).
+ In this case, isValid will return <TRUE/>, but isAlive will return <FALSE/>.
+
+ @return
+ <TRUE/> if the instance refers to a document which contains Basic/Dialog libraries,
+ or the application as a whole, <FALSE/> otherwise.
+
+ @see isAlive
+ */
+ bool isValid() const;
+
+ /** determines whether the document instance is alive
+
+ If the instance is not valid, <FALSE/> is returned.
+
+ If the instance refers to a real document, which is already closed, or just being closed,
+ the method returns <FALSE/>.
+
+ If the instance refers to the application, <TRUE/> is returned.
+
+ @see isValid
+ */
+ bool isAlive() const;
+
+ bool isInVBAMode() const;
+ /// returns the BasicManager associated with this instance
+ BasicManager*
+ getBasicManager() const;
+
+ /** returns the UNO component representing the document which the instance operates on
+
+ Must not be used when the instance operates on the application-wide
+ Basic/Dialog libraries.
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ getDocument() const;
+
+ /** returns the UNO component representing the document which the instance operates on
+
+ May be used when the instance operates on the application-wide
+ Basic/Dialog libraries, in this case it returns <NULL/>.
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ getDocumentOrNull() const;
+
+ /** returns the Basic or Dialog library container of the document
+
+ If the document is not valid, <NULL/> is returned.
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::script::XLibraryContainer >
+ getLibraryContainer( LibraryContainerType _eType ) const;
+
+ /** determines whether there exists a library of the given type, with the given name
+ */
+ bool hasLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
+
+ /** returns a script or dialog library given by name
+
+ @param _eType
+ the type of library to load
+ @param _rLibName
+ the name of the script library
+ @param _bLoadLibrary
+ <TRUE/> if and only if the library should be loaded.
+
+ @throws NoSuchElementException
+ if there is no script library with the given name
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
+ getLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, bool _bLoadLibrary ) const
+ SAL_THROW((::com::sun::star::container::NoSuchElementException));
+
+ /** creates a script or dialog library in the document, or returns an existing one
+
+ If <code>_rLibName</code> denotes an existing library which does not need to be created,
+ then this library will automatically be loaded, and then returned.
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
+ getOrCreateLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
+
+ /** returns the names of the modules in a given script or dialog library of the document
+ */
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >
+ getObjectNames( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
+
+ /** retrieves a name for a newly to be created module or dialog
+ */
+ ::rtl::OUString
+ createObjectName( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
+
+ /** loads a script or dialog library given by name, if there is such a library
+ */
+ void loadLibraryIfExists( LibraryContainerType _eType, const ::rtl::OUString& _rLibrary );
+
+ /// retrieves the (combined) names of all script and dialog libraries
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >
+ getLibraryNames() const;
+
+ /** removes a given script module from the document
+
+ @return
+ <TRUE/> if and only if the removal was successful. When <FALSE/> is returned,
+ this will reported as assertion in a non-product build.
+ */
+ bool removeModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModuleName ) const;
+
+ /** creates a module with the given name in the given library
+ @param _rLibName
+ the library name
+ @param _rModName
+ the name of the to-be-created module
+ @param _bCreateMain
+ determines whether or not a function Main should be created
+ @param _out_rNewModuleCode
+ the source code of the newly created module
+ @return
+ <TRUE/> if and only if the creation was successful
+ */
+ bool createModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, bool _bCreateMain, ::rtl::OUString& _out_rNewModuleCode ) const;
+
+ /** inserts a given piece as code as module
+ @param _rLibName
+ the name of the library to insert the module into. If a library with this name does
+ not yet exist, it will be created.
+ @param _rModName
+ the name of the module to insert the code as. Must denote a name which is not yet
+ used in the module library.
+ @param _rModuleCode
+ the code of the new module
+ @return
+ <TRUE/> if and only if the insertion was successful.
+ */
+ bool insertModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const;
+
+ /** updates a given module with new code
+ @param _rLibName
+ the name of the library the modules lives in. Must denote an existing module library.
+ @param _rModName
+ the name of the module to update. Must denote an existing module in the given library.
+ @param _rModuleCode
+ the new module code.
+ @return
+ <TRUE/> if and only if the insertion was successful.
+ */
+ bool updateModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const;
+
+ /// determines whether a module with the given name exists in the given library
+ bool hasModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName ) const;
+
+ /** retrieves a module's source
+ @param _rLibName
+ the library name where the module is located
+ @param _rModName
+ the module name
+ @param _out_rModuleSource
+ takes the module's source upon successful return
+ @return
+ <TRUE/> if and only if the code could be successfully retrieved, <FALSE/> otherwise
+ */
+ bool getModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, ::rtl::OUString& _rModuleSource ) const;
+
+ /** renames a module
+ @param _rLibName
+ the library where the module lives in. Must denote an existing library.
+ @param _rOldName
+ the old module name. Must denote an existing module.
+ @param _rNewName
+ the new module name
+ @return
+ <TRUE/> if and only if renaming was successful.
+ */
+ bool renameModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rOldName, const ::rtl::OUString& _rNewName ) const;
+
+ /** removes a given dialog from the document
+
+ @return
+ <TRUE/> if and only if the removal was successful. When <FALSE/> is returned,
+ this will reported as assertion in a non-product build.
+ */
+ bool removeDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName ) const;
+
+ /// determines whether a dialog with the given name exists in the given library
+ bool hasDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName ) const;
+
+ /** retrieves a dialog
+ @param _rLibName
+ the library name where the module is located
+ @param _rDialogName
+ the dialog's name
+ @param _out_rDialogSource
+ takes the provider for the dialog's desription, upon successful return
+ @return
+ <TRUE/> if and only if the dialog could be successfully retrieved, <FALSE/> otherwise
+ */
+ bool getDialog(
+ const ::rtl::OUString& _rLibName,
+ const ::rtl::OUString& _rDialogName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider >& _out_rDialogProvider
+ ) const;
+
+ /** renames a dialog
+ @param _rLibName
+ the library where the dialog lives in. Must denote an existing library.
+ @param _rOldName
+ the old dialog name. Must denote an existing dialog.
+ @param _rNewName
+ the new dialog name
+ @param _rxExistingDialogModel
+ the existing model of the dialog, if already loaded in the IDE
+ @return
+ <TRUE/> if and only if renaming was successful.
+ */
+ bool renameDialog(
+ const ::rtl::OUString& _rLibName,
+ const ::rtl::OUString& _rOldName,
+ const ::rtl::OUString& _rNewName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxExistingDialogModel
+ ) const;
+
+ /** create a dialog
+ @param _rLibName
+ the library name where the module is located
+ @param _rDialogName
+ the dialog's name
+ @param _out_rDialogSource
+ takes the provider for the dialog's desription, upon successful return
+ @return
+ <TRUE/> if and only if the dialog could be successfully retrieved, <FALSE/> otherwise
+ */
+ bool createDialog(
+ const ::rtl::OUString& _rLibName,
+ const ::rtl::OUString& _rDialogName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider >& _out_rDialogProvider
+ ) const;
+
+ /** inserts a given dialog into a given library
+
+ @param _rLibName
+ the name of the library to insert the dialog into. If a library with this name does
+ not yet exist, it will be created.
+ @param _rModName
+ the name of the dialog to insert. Must denote a name which is not yet
+ used in the dialog library.
+ @param _rDialogProvider
+ the provider of the dialog's description
+ @return
+ <TRUE/> if and only if the insertion was successful.
+ */
+ bool insertDialog(
+ const ::rtl::OUString& _rLibName,
+ const ::rtl::OUString& _rDialogName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider >& _rDialogProvider
+ ) const;
+
+ /** determines whether the document is read-only
+
+ cannot be called if the document operates on the application-wide scripts
+ */
+ bool isReadOnly() const;
+
+ /** determines whether the ScriptDocument instance operates on the whole application,
+ as opposed to a real document
+ */
+ bool isApplication() const;
+
+ /** determines whether the ScriptDocument instance operates on a real document,
+ as opposed to the whole application
+ */
+ bool isDocument() const { return isValid() && !isApplication(); }
+
+ /** marks the document as modified
+ @precond
+ the instance operates on a real document, not on the application
+ @see isDocument
+ */
+ void setDocumentModified() const;
+
+ /** determines whether the document is modified
+ @precond
+ the instance operates on a real document, not on the application
+ @see isDocument
+ */
+ bool isDocumentModified() const;
+
+ /** saves the document, if the instance refers to a real document
+ @precond
+ <code>isApplication</code> returns <FALSE/>
+ */
+ bool saveDocument(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator >& _rxStatusIndicator
+ ) const;
+
+ /// returns the location of a library given by name
+ LibraryLocation
+ getLibraryLocation( const ::rtl::OUString& _rLibName ) const;
+
+ /// returns the title for the document
+ ::rtl::OUString
+ getTitle( LibraryLocation _eLocation, LibraryType _eType = LIBRARY_TYPE_ALL ) const;
+
+ /** returns the title of the document
+
+ to be used for valid documents only
+ */
+ ::rtl::OUString
+ getTitle() const;
+
+ /** returns the URL of the document
+
+ to be used for valid documents only
+ */
+ ::rtl::OUString
+ getURL() const;
+
+ /** determines whether the document is currently the one-and-only application-wide active document
+ */
+ bool isActive() const;
+
+ /** determines whether macro execution for this document is allowed
+
+ only to be called for real documents (->isDocument)
+ */
+ bool allowMacros() const;
+ };
+
+//........................................................................
+} // namespace basctl
+//........................................................................
+
+// convenience ... better would be all classes in the project are in
+// the same namespace ...
+using ::basctl::ScriptDocument;
+using ::basctl::ScriptDocuments;
+using ::basctl::E_SCRIPTS;
+using ::basctl::E_DIALOGS;
+using ::basctl::LibraryLocation;
+using ::basctl::LIBRARY_LOCATION_UNKNOWN;
+using ::basctl::LIBRARY_LOCATION_USER;
+using ::basctl::LIBRARY_LOCATION_SHARE;
+using ::basctl::LIBRARY_LOCATION_DOCUMENT;
+using ::basctl::LibraryType;
+using ::basctl::LIBRARY_TYPE_UNKNOWN;
+using ::basctl::LIBRARY_TYPE_MODULE;
+using ::basctl::LIBRARY_TYPE_DIALOG;
+using ::basctl::LIBRARY_TYPE_ALL;
+
+#endif // SCRIPTDOCUMENT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/svheader.hxx b/basctl/source/inc/svheader.hxx
new file mode 100644
index 000000000000..152495d9ee8d
--- /dev/null
+++ b/basctl/source/inc/svheader.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 _SVHEADER_HXX
+#define _SVHEADER_HXX
+
+
+// SV
+#define _COLDLG_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _SELENG_HXX
+#define _VIRTDEV_HXX
+
+// Wenn Brkdlg ohne PCH:
+// #define _SPIN_HXX
+// #define _FIELD_HXX
+
+// SVTOOLS
+#define _CTRLBOX_HXX
+#define _EXTATTR_HXX
+#define _CTRLTOOL_HXX
+#define _CTRLBOX_HXX
+#define _STDMENU_HXX
+#define _VALUESET_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_RESMGR_HXX
+#define _SFX_PRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+// #define _PASSWD_HXX
+#define _SFXMNUMGR_HXX
+
+// SFXDLG
+// #define _SFXTABDLG_HXX
+// #define _SFX_DINFDLG_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_STYLEDLG_HXX
+#define _SFX_TPLPITEM_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+
+// SFXDOC
+// #define _SFXDOCINF_HXX
+//#define _SFX_DOCFILT_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+
+// SVCONTNR
+#define _SVICNVW_HXX
+
+#define _SBSTDOBJ1_HXX
+#define _SBXMSTRM_HXX
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/uiconfig/basicide/menubar/menubar.xml b/basctl/uiconfig/basicide/menubar/menubar.xml
new file mode 100644
index 000000000000..4b3ff19c937b
--- /dev/null
+++ b/basctl/uiconfig/basicide/menubar/menubar.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menu menu:id=".uno:TemplateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Organizer"/>
+ <menu:menuitem menu:id=".uno:AddressBookSource"/>
+ <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
+ <menu:menuitem menu:id=".uno:OpenTemplate"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Signature"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuitem menu:id=".uno:Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:SelectAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SearchDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:MacrosMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuseparator/>
+
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ShowLicense"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ShowCredits"/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
+</menu:menubar>
+
diff --git a/basctl/uiconfig/basicide/statusbar/statusbar.xml b/basctl/uiconfig/basicide/statusbar/statusbar.xml
new file mode 100644
index 000000000000..37766aeb58ed
--- /dev/null
+++ b/basctl/uiconfig/basicide/statusbar/statusbar.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE statusbar:statusbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "statusbar.dtd">
+<statusbar:statusbar xmlns:statusbar="http://openoffice.org/2001/statusbar" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <statusbar:statusbaritem xlink:href=".uno:StatusGetTitle" statusbar:align="left" statusbar:autosize="true" statusbar:width="240" statusbar:helpid="helpid:30808"/>
+ <statusbar:statusbaritem xlink:href=".uno:ModifiedStatus" statusbar:align="center" statusbar:width="14" statusbar:helpid="helpid:5584"/>
+ <statusbar:statusbaritem xlink:href=".uno:StatusGetPosition" statusbar:align="left" statusbar:width="120" statusbar:helpid="helpid:30806"/>
+ <statusbar:statusbaritem xlink:href=".uno:InsertMode" statusbar:align="center" statusbar:width="41" statusbar:helpid="helpid:10221"/>
+ <statusbar:statusbaritem xlink:href=".uno:Signature" statusbar:align="center" statusbar:ownerdraw="true" statusbar:width="16" statusbar:helpid="helpid:5699"/>
+ <statusbar:statusbaritem xlink:href=".uno:Size" statusbar:align="left" statusbar:autosize="true" statusbar:ownerdraw="true" statusbar:width="160" statusbar:helpid="helpid:10224"/>
+</statusbar:statusbar> \ No newline at end of file
diff --git a/basctl/uiconfig/basicide/toolbar/dialogbar.xml b/basctl/uiconfig/basicide/toolbar/dialogbar.xml
new file mode 100644
index 000000000000..91b9a925fa60
--- /dev/null
+++ b/basctl/uiconfig/basicide/toolbar/dialogbar.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:LibSelector" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:ChooseControls" />
+ <toolbar:toolbaritem xlink:href=".uno:ImportDialog" />
+ <toolbar:toolbaritem xlink:href=".uno:ExportDialog" />
+</toolbar:toolbar> \ No newline at end of file
diff --git a/basctl/uiconfig/basicide/toolbar/fullscreenbar.xml b/basctl/uiconfig/basicide/toolbar/fullscreenbar.xml
new file mode 100644
index 000000000000..5aecdda4fb04
--- /dev/null
+++ b/basctl/uiconfig/basicide/toolbar/fullscreenbar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:FullScreen" toolbar:helpid="helpid:5627" />
+</toolbar:toolbar> \ No newline at end of file
diff --git a/basctl/uiconfig/basicide/toolbar/insertcontrolsbar.xml b/basctl/uiconfig/basicide/toolbar/insertcontrolsbar.xml
new file mode 100644
index 000000000000..fe0edf689bba
--- /dev/null
+++ b/basctl/uiconfig/basicide/toolbar/insertcontrolsbar.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:SelectMode" toolbar:helpid="helpid:10198" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:ManageLanguage" toolbar:helpid="helpid:30820" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:TestMode" toolbar:helpid="helpid:10199" />
+ <toolbar:toolbaritem xlink:href=".uno:ShowPropBrowser" toolbar:helpid="helpid:10943" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertPushbutton" toolbar:helpid="helpid:10146" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:InsertImageControl" toolbar:helpid="helpid:10926" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:Checkbox" toolbar:helpid="helpid:10148" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:Radiobutton" toolbar:helpid="helpid:10147" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertFixedText" toolbar:helpid="helpid:10188" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:InsertEdit" toolbar:helpid="helpid:10190" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertListbox" toolbar:helpid="helpid:10191" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:Combobox" toolbar:helpid="helpid:10192" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:HScrollbar" toolbar:helpid="helpid:10194" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:VScrollbar" toolbar:helpid="helpid:10195" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:Groupbox" toolbar:helpid="helpid:10189" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:ProgressBar" toolbar:helpid="helpid:10927" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:HFixedLine" toolbar:helpid="helpid:10928" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:VFixedLine" toolbar:helpid="helpid:10929" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:AddDateField" toolbar:helpid="helpid:10936" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:InsertTimeField" toolbar:helpid="helpid:10937" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertNumericField" toolbar:helpid="helpid:10938" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:InsertCurrencyField" toolbar:helpid="helpid:10939" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertFormattedField" toolbar:helpid="helpid:10940" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:InsertPatternField" toolbar:helpid="helpid:10941" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertFileControl" toolbar:helpid="helpid:10942" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:InsertTreeControl" toolbar:style="radio" />
+ <toolbar:toolbarbreak/>
+</toolbar:toolbar>
diff --git a/basctl/uiconfig/basicide/toolbar/macrobar.xml b/basctl/uiconfig/basicide/toolbar/macrobar.xml
new file mode 100644
index 000000000000..6e22bff09baf
--- /dev/null
+++ b/basctl/uiconfig/basicide/toolbar/macrobar.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:LibSelector" toolbar:helpid="helpid:30787" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:CompileBasic" toolbar:helpid="helpid:5954" />
+ <toolbar:toolbaritem xlink:href=".uno:RunBasic" toolbar:helpid="helpid:5955" />
+ <toolbar:toolbaritem xlink:href=".uno:BasicStop" toolbar:helpid="helpid:5958" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:BasicStepOver" toolbar:helpid="helpid:5957" />
+ <toolbar:toolbaritem xlink:href=".uno:BasicStepInto" toolbar:helpid="helpid:5956" />
+ <toolbar:toolbaritem xlink:href=".uno:BasicStepOut" toolbar:helpid="helpid:5963" />
+ <toolbar:toolbaritem xlink:href=".uno:ToggleBreakPoint" toolbar:helpid="helpid:30768" />
+ <toolbar:toolbaritem xlink:href=".uno:ManageBreakPoints" toolbar:helpid="helpid:30810" />
+ <toolbar:toolbaritem xlink:href=".uno:AddWatch" toolbar:helpid="helpid:30769" />
+ <toolbar:toolbaritem xlink:href=".uno:MatchGroup" toolbar:helpid="helpid:30782" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:LoadBasic" toolbar:helpid="helpid:5951" />
+ <toolbar:toolbaritem xlink:href=".uno:SaveBasicAs" toolbar:helpid="helpid:5953" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:ImportDialog" />
+</toolbar:toolbar>
diff --git a/basctl/uiconfig/basicide/toolbar/standardbar.xml b/basctl/uiconfig/basicide/toolbar/standardbar.xml
new file mode 100644
index 000000000000..3e685264b75b
--- /dev/null
+++ b/basctl/uiconfig/basicide/toolbar/standardbar.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:OpenUrl" toolbar:visible="false" />
+ <toolbar:toolbaritem xlink:href=".uno:AddDirect" toolbar:helpid="helpid:5537" toolbar:style="dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:Open" toolbar:helpid="helpid:5501" />
+ <toolbar:toolbaritem xlink:href=".uno:Save" toolbar:helpid="helpid:5505" />
+ <toolbar:toolbaritem xlink:href=".uno:SaveAs" toolbar:helpid="helpid:5502" toolbar:visible="false" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:PrintDefault" toolbar:helpid="helpid:5509" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:Cut" toolbar:helpid="helpid:5710" />
+ <toolbar:toolbaritem xlink:href=".uno:Copy" toolbar:helpid="helpid:5711" />
+ <toolbar:toolbaritem xlink:href=".uno:Paste" toolbar:helpid="helpid:5712" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:Undo" toolbar:helpid="helpid:5701" />
+ <toolbar:toolbaritem xlink:href=".uno:Redo" toolbar:helpid="helpid:5700" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:ObjectCatalog" toolbar:helpid="helpid:30774" />
+ <toolbar:toolbaritem xlink:href=".uno:ChooseMacro" toolbar:helpid="helpid:30770" />
+ <toolbar:toolbaritem xlink:href=".uno:ModuleDialog" toolbar:helpid="helpid:30773" />
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:HelpIndex" />
+ <toolbar:toolbaritem xlink:href=".uno:ExtendedHelp" toolbar:visible="false" />
+</toolbar:toolbar> \ No newline at end of file
diff --git a/basctl/uiconfig/basicide/toolbar/translationbar.xml b/basctl/uiconfig/basicide/toolbar/translationbar.xml
new file mode 100644
index 000000000000..0402e9ba38c6
--- /dev/null
+++ b/basctl/uiconfig/basicide/toolbar/translationbar.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:CurrentLanguage" toolbar:helpid="helpid:30821" />
+ <toolbar:toolbaritem xlink:href=".uno:ManageLanguage" toolbar:helpid="helpid:30820" />
+</toolbar:toolbar> \ No newline at end of file
diff --git a/basctl/util/basctl.map b/basctl/util/basctl.map
new file mode 100755
index 000000000000..80359606ccc8
--- /dev/null
+++ b/basctl/util/basctl.map
@@ -0,0 +1,11 @@
+UDK_3_0_0 {
+ global:
+ basicide_choose_macro;
+ basicide_macro_organizer;
+ basicide_handle_basic_error;
+ component_getImplementationEnvironment;
+ component_writeInfo;
+ component_getFactory;
+ local:
+ *;
+};
diff --git a/basctl/util/basctl.xml b/basctl/util/basctl.xml
new file mode 100644
index 000000000000..62971a9033c8
--- /dev/null
+++ b/basctl/util/basctl.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
+<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
+ <module-name>basctl</module-name>
+ <component-description>
+ <author>Thomas Benisch</author>
+ <name>com.sun.star.comp.basctl.AccessibleWindow</name>
+ <description>specifies accessibility support for a window.</description>
+ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
+ <language>c++</language>
+ <status value="beta"/>
+ <supported-service>com.sun.star.awt.AccessibleWindow</supported-service>
+ </component-description>
+ <component-description>
+ <author>Thomas Benisch</author>
+ <name>com.sun.star.comp.basctl.AccessibleShape</name>
+ <description>specifies accessibility support for a shape.</description>
+ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
+ <language>c++</language>
+ <status value="beta"/>
+ <supported-service>com.sun.star.drawing.AccessibleShape</supported-service>
+ </component-description>
+</module-description>
diff --git a/basctl/util/hidother.hrc b/basctl/util/hidother.hrc
new file mode 100644
index 000000000000..68bb57a274b3
--- /dev/null
+++ b/basctl/util/hidother.hrc
@@ -0,0 +1,27 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define HID_INTERFACE_BASIDE_VIEWSH 451
diff --git a/basctl/util/hidother.src b/basctl/util/hidother.src
new file mode 100644
index 000000000000..ce2607b3296d
--- /dev/null
+++ b/basctl/util/hidother.src
@@ -0,0 +1,44 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "../inc/helpid.hrc" // HID_XXX
+
+hidspecial HID_BASICIDE_PROP_BROWSER_LBOX { HelpID = HID_BASICIDE_PROP_BROWSER_LBOX; };
+hidspecial HID_BASICIDE_PROP_BROWSER { HelpID = HID_BASICIDE_PROP_BROWSER; };
+hidspecial HID_BASICIDE_OBJCAT_SHOW { HelpID = HID_BASICIDE_OBJCAT_SHOW; };
+hidspecial HID_BASICIDE_OBJCAT_PROPS { HelpID = HID_BASICIDE_OBJCAT_PROPS; };
+hidspecial HID_BASICIDE_OBJCAT_HELP { HelpID = HID_BASICIDE_OBJCAT_HELP; };
+hidspecial HID_BASICIDE_MODULWINDOW { HelpID = HID_BASICIDE_MODULWINDOW; };
+hidspecial HID_BASICIDE_DIALOGWINDOW { HelpID = HID_BASICIDE_DIALOGWINDOW; };
+hidspecial HID_BASICIDE_EDITORWINDOW { HelpID = HID_BASICIDE_EDITORWINDOW; };
+hidspecial HID_BASICIDE_BREAKPOINTWINDOW { HelpID = HID_BASICIDE_BREAKPOINTWINDOW; };
+hidspecial HID_BASICIDE_WATCHWINDOW { HelpID = HID_BASICIDE_WATCHWINDOW; };
+hidspecial HID_BASICIDE_STACKWINDOW { HelpID = HID_BASICIDE_STACKWINDOW; };
+hidspecial HID_BASICIDE_TABBAR { HelpID = HID_BASICIDE_TABBAR; };
+hidspecial HID_BASICIDE_WATCHWINDOW_LIST { HelpID = HID_BASICIDE_WATCHWINDOW_LIST; };
+hidspecial HID_BASICIDE_STACKWINDOW_LIST { HelpID = HID_BASICIDE_STACKWINDOW_LIST; };
+hidspecial HID_BASICIDE_ADDNEW_LANGUAGE { HelpID = HID_BASICIDE_ADDNEW_LANGUAGE; };
+
diff --git a/basctl/util/makefile.mk b/basctl/util/makefile.mk
new file mode 100644
index 000000000000..47de65cc58c0
--- /dev/null
+++ b/basctl/util/makefile.mk
@@ -0,0 +1,105 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=basctl
+TARGET=basctl
+#svx.hid generieren
+GEN_HID=TRUE
+GEN_HID_OTHER=TRUE
+VISIBILITY_HIDDEN=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------
+
+# --- Basctl - DLL ----------
+
+.IF "$(header)" == ""
+
+HELPIDFILES= ..$/inc$/helpid.hrc
+
+SHL1TARGET= basctl$(DLLPOSTFIX)
+SHL1IMPLIB= basctl
+SHL1BASE = 0x1d800000
+SHL1STDLIBS= \
+ $(EDITENGLIB) \
+ $(SVXCORELIB) \
+ $(SVXLIB) \
+ $(SFX2LIB) \
+ $(BASICLIB) \
+ $(SVTOOLLIB) \
+ $(TKLIB) \
+ $(VCLLIB) \
+ $(SVLLIB) \
+ $(SOTLIB) \
+ $(UNOTOOLSLIB) \
+ $(TOOLSLIB) \
+ $(XMLSCRIPTLIB) \
+ $(COMPHELPERLIB) \
+ $(CPPUHELPERLIB) \
+ $(UCBHELPERLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+.IF "$(GUI)"=="WNT"
+SHL1STDLIBS+= $(SHELLLIB)
+.ENDIF # WNT
+
+
+SHL1LIBS= $(SLB)$/basctl.lib
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+SHL1VERSIONMAP=basctl.map
+
+DEF1NAME =$(SHL1TARGET)
+
+LIB1TARGET =$(SLB)$/basctl.lib
+LIB1FILES = \
+ $(LIBPRE) $(SLB)$/basicide.lib \
+ $(LIBPRE) $(SLB)$/dlged.lib \
+ $(LIBPRE) $(SLB)$/accessibility.lib
+
+SRSFILELIST=\
+ $(SRS)$/basicide.srs \
+ $(SRS)$/dlged.srs
+
+SRSFILELIST+= $(SOLARCOMMONRESDIR)$/sfx.srs
+
+RESLIB1NAME=basctl
+RESLIB1IMAGES =$(PRJ)$/res
+RESLIB1SRSFILES= $(SRSFILELIST)
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.ENDIF # "$(header)" == ""
+
diff --git a/basctl/util/makefile.pmk b/basctl/util/makefile.pmk
new file mode 100644
index 000000000000..7653d1c09c73
--- /dev/null
+++ b/basctl/util/makefile.pmk
@@ -0,0 +1,28 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+
diff --git a/basebmp/inc/basebmp/accessor.hxx b/basebmp/inc/basebmp/accessor.hxx
new file mode 100644
index 000000000000..9bf2d1b6d140
--- /dev/null
+++ b/basebmp/inc/basebmp/accessor.hxx
@@ -0,0 +1,122 @@
+/* -*- 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 INCLUDED_BASEBMP_ACCESSOR_HXX
+#define INCLUDED_BASEBMP_ACCESSOR_HXX
+
+#include <vigra/numerictraits.hxx>
+
+namespace basebmp
+{
+
+/** Standard accessor type
+
+ Accesses the iterator values the standard way (i.e. via
+ *operator()/operator[])
+ */
+template<typename ValueType> class StandardAccessor
+{
+public:
+ typedef ValueType value_type;
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return *i;
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return i[diff];
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ *i = vigra::detail::RequiresExplicitCast<value_type>::cast(value);
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ i[diff] = vigra::detail::RequiresExplicitCast<value_type>::cast(value);
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+/** Non-standard accessor type
+
+ Uses getter/setter methods at the given iterator type, to access
+ the underlying values.
+ */
+template<typename ValueType> class NonStandardAccessor
+{
+public:
+ typedef ValueType value_type;
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return i.get();
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return i.get(diff);
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ i.set( vigra::detail::RequiresExplicitCast<value_type>::cast(value) );
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ i.set( vigra::detail::RequiresExplicitCast<value_type>::cast(value),
+ diff );
+ }
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_ACCESSOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/accessoradapters.hxx b/basebmp/inc/basebmp/accessoradapters.hxx
new file mode 100644
index 000000000000..8fb801d7c8ca
--- /dev/null
+++ b/basebmp/inc/basebmp/accessoradapters.hxx
@@ -0,0 +1,529 @@
+/* -*- 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 INCLUDED_BASEBMP_ACCESSORADAPTERS_HXX
+#define INCLUDED_BASEBMP_ACCESSORADAPTERS_HXX
+
+#include <vigra/numerictraits.hxx>
+
+namespace basebmp
+{
+
+/** Interpose given accessor's set and get methods with two unary
+ functors.
+
+ @tpl WrappedAccessor
+ Wrapped type must provide the usual get and set accessor methods,
+ with the usual signatures (see StandardAccessor for a conforming
+ example).
+
+ @tpl GetterFunctor
+ An Adaptable Unary Function (i.e. providing result_type and
+ argument_type typedefs)
+
+ @tpl SetterFunctor
+ An Adaptable Unary Function (i.e. providing result_type and
+ argument_type typedefs)
+ */
+template< class WrappedAccessor,
+ typename GetterFunctor,
+ typename SetterFunctor > class UnaryFunctionAccessorAdapter
+{
+public:
+ typedef typename GetterFunctor::result_type value_type;
+ typedef typename SetterFunctor::argument_type argument_type;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// making all members public, if no member template friends
+private:
+ template<class A, typename G, typename S> friend class UnaryFunctionAccessorAdapter;
+#endif
+
+ // we don't derive from wrapped type, to avoid ambiguities
+ // regarding templatized getter/setter methods.
+ WrappedAccessor maAccessor;
+ GetterFunctor maGetterFunctor;
+ SetterFunctor maSetterFunctor;
+
+public:
+ UnaryFunctionAccessorAdapter() :
+ maAccessor(),
+ maGetterFunctor(),
+ maSetterFunctor()
+ {}
+
+ template< class A > explicit
+ UnaryFunctionAccessorAdapter( UnaryFunctionAccessorAdapter< A,
+ GetterFunctor,
+ SetterFunctor > const& rSrc ) :
+ maAccessor( rSrc.maAccessor ),
+ maGetterFunctor( rSrc.maGetterFunctor ),
+ maSetterFunctor( rSrc.maSetterFunctor )
+ {}
+
+ template< class T > explicit UnaryFunctionAccessorAdapter( T const& accessor ) :
+ maAccessor( accessor ),
+ maGetterFunctor(),
+ maSetterFunctor()
+ {}
+
+ template< class T > UnaryFunctionAccessorAdapter( T accessor,
+ GetterFunctor getterFunctor,
+ SetterFunctor setterFunctor) :
+ maAccessor( accessor ),
+ maGetterFunctor( getterFunctor ),
+ maSetterFunctor( setterFunctor )
+ {}
+
+ // -------------------------------------------------------
+
+ WrappedAccessor const& getWrappedAccessor() const { return maAccessor; }
+ WrappedAccessor& getWrappedAccessor() { return maAccessor; }
+
+ // -------------------------------------------------------
+
+ value_type getter(typename GetterFunctor::argument_type v) const
+ {
+ return maGetterFunctor(v);
+ }
+ typename SetterFunctor::result_type setter(argument_type v) const
+ {
+ return maSetterFunctor(v);
+ }
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return maGetterFunctor( maAccessor(i) );
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return maGetterFunctor( maAccessor(i,diff) );
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ maAccessor.set(
+ maSetterFunctor(
+ vigra::detail::RequiresExplicitCast<argument_type>::cast(value) ),
+ i );
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ maAccessor.set(
+ maSetterFunctor(
+ vigra::detail::RequiresExplicitCast<argument_type>::cast(value) ),
+ i,
+ diff );
+ }
+
+};
+
+//-----------------------------------------------------------------------------
+
+/** Interpose given accessor's set methods with a binary function,
+ taking both old and new value.
+
+ The wrappee's getter methods kept as-is.
+
+ @tpl WrappedAccessor
+ Wrapped type must provide the usual get and set accessor methods,
+ with the usual signatures (see StandardAccessor for a conforming
+ example). Furthermore, must provide a nested typedef value_type.
+
+ @tpl SetterFunctor
+ An adaptable binary function (i.e. providing nested typedefs for
+ result_type and first and second argument type)
+ */
+template< class WrappedAccessor,
+ typename SetterFunctor > class BinarySetterFunctionAccessorAdapter
+{
+public:
+ typedef typename WrappedAccessor::value_type value_type;
+ typedef typename SetterFunctor::second_argument_type argument_type;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// making all members public, if no member template friends
+private:
+ template<class A, typename S> friend class BinarySetterFunctionAccessorAdapter;
+#endif
+
+ WrappedAccessor maAccessor;
+ SetterFunctor maFunctor;
+
+public:
+ BinarySetterFunctionAccessorAdapter() :
+ maAccessor(),
+ maFunctor()
+ {}
+
+ template< class A > explicit
+ BinarySetterFunctionAccessorAdapter(
+ BinarySetterFunctionAccessorAdapter< A,
+ SetterFunctor > const& rSrc ) :
+ maAccessor( rSrc.maAccessor ),
+ maFunctor( rSrc.maFunctor )
+ {}
+
+ template< class T > explicit BinarySetterFunctionAccessorAdapter( T const& accessor ) :
+ maAccessor( accessor ),
+ maFunctor()
+ {}
+
+ template< class T > BinarySetterFunctionAccessorAdapter( T accessor,
+ SetterFunctor functor ) :
+ maAccessor( accessor ),
+ maFunctor( functor )
+ {}
+
+ // -------------------------------------------------------
+
+ WrappedAccessor const& getWrappedAccessor() const { return maAccessor; }
+ WrappedAccessor& getWrappedAccessor() { return maAccessor; }
+
+ // -------------------------------------------------------
+
+ typename SetterFunctor::result_type setter(
+ typename SetterFunctor::first_argument_type v1,
+ argument_type v2 ) const
+ {
+ return maSetterFunctor(v1,v2);
+ }
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return maAccessor(i);
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return maAccessor(i,diff);
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ maAccessor.set(
+ maFunctor(maAccessor(i),
+ vigra::detail::RequiresExplicitCast<argument_type>::cast(value)),
+ i );
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ maAccessor.set(
+ maFunctor(maAccessor(i,diff),
+ vigra::detail::RequiresExplicitCast<argument_type>::cast(value)),
+ i,
+ diff );
+ }
+
+};
+
+//-----------------------------------------------------------------------------
+
+/** Write through a CompositeIterator's first wrapped iterator, by
+ piping the first wrapped iterator value, the second iterator
+ value, and the specified new value through a ternary function.
+
+ Passed iterator must fulfill the CompositeIterator concept. Note
+ that the getter/setter methods are not templatized regarding the
+ iterator type, to make the mask calculation optimization below
+ safe (see the maskedAccessor template metafunction below)
+
+ @tpl WrappedAccessor1
+ Wrapped type must provide the usual get and set accessor methods,
+ with the usual signatures (see StandardAccessor for a conforming
+ example). Furthermore, the type must provide a nested typedef
+ value_type (the selection of WrappedAccessor1 as the provider for
+ that typedef is rather arbitrary. Could have been
+ WrappedAccessor2, too. So sue me)
+
+ @tpl Functor
+ An adaptable ternary function (i.e. providing nested typedefs for
+ result_type and first, second and third argument type)
+ */
+template< class WrappedAccessor1,
+ class WrappedAccessor2,
+ typename Functor > class TernarySetterFunctionAccessorAdapter
+{
+public:
+ typedef typename WrappedAccessor1::value_type value_type;
+ typedef typename Functor::third_argument_type argument_type;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// making all members public, if no member template friends
+private:
+ template<class A1, class A2, typename F> friend class TernarySetterFunctionAccessorAdapter;
+#endif
+
+ WrappedAccessor1 ma1stAccessor;
+ WrappedAccessor2 ma2ndAccessor;
+ Functor maFunctor;
+
+public:
+ TernarySetterFunctionAccessorAdapter() :
+ ma1stAccessor(),
+ ma2ndAccessor(),
+ maFunctor()
+ {}
+
+ template< class T > explicit TernarySetterFunctionAccessorAdapter( T const& accessor ) :
+ ma1stAccessor( accessor ),
+ ma2ndAccessor(),
+ maFunctor()
+ {}
+
+ template< class A1, class A2 > explicit
+ TernarySetterFunctionAccessorAdapter(
+ TernarySetterFunctionAccessorAdapter< A1,
+ A2,
+ Functor > const& rSrc ) :
+ ma1stAccessor( rSrc.ma1stAccessor ),
+ ma2ndAccessor( rSrc.ma2ndAccessor ),
+ maFunctor( rSrc.maFunctor )
+ {}
+
+ template< class T1, class T2 >
+ TernarySetterFunctionAccessorAdapter( T1 accessor1,
+ T2 accessor2 ) :
+ ma1stAccessor( accessor1 ),
+ ma2ndAccessor( accessor2 ),
+ maFunctor()
+ {}
+
+ template< class T1, class T2 >
+ TernarySetterFunctionAccessorAdapter( T1 accessor1,
+ T2 accessor2,
+ Functor func ) :
+ ma1stAccessor( accessor1 ),
+ ma2ndAccessor( accessor2 ),
+ maFunctor( func )
+ {}
+
+ // -------------------------------------------------------
+
+ WrappedAccessor1 const& get1stWrappedAccessor() const { return ma1stAccessor; }
+ WrappedAccessor1& get1stWrappedAccessor() { return ma1stAccessor; }
+
+ WrappedAccessor2 const& get2ndWrappedAccessor() const { return ma2ndAccessor; }
+ WrappedAccessor2& get2ndWrappedAccessor() { return ma2ndAccessor; }
+
+ // -------------------------------------------------------
+
+ typename Functor::result_type setter(
+ typename Functor::first_argument_type v1,
+ typename Functor::second_argument_type v2,
+ argument_type v3 ) const
+ {
+ return maSetterFunctor(v1,v2,v3);
+ }
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return ma1stAccessor(i.first());
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return ma1stAccessor(i.second(),diff);
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ ma1stAccessor.set(
+ maFunctor(ma1stAccessor(i.first()),
+ ma2ndAccessor(i.second()),
+ vigra::detail::RequiresExplicitCast<argument_type>::cast(value)),
+ i.first() );
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ ma1stAccessor.set(
+ maFunctor(ma1stAccessor(i.first(), diff),
+ ma2ndAccessor(i.second(),diff),
+ vigra::detail::RequiresExplicitCast<argument_type>::cast(value)),
+ i.first(),
+ diff );
+ }
+
+};
+
+//-----------------------------------------------------------------------------
+
+/** Access two distinct images simultaneously
+
+ Passed iterator must fulfill the CompositeIterator concept
+ (i.e. wrap the two image's iterators into one
+ CompositeIterator). The getter and setter methods expect and
+ return a pair of values, with types equal to the two accessors
+ value types
+
+ @tpl WrappedAccessor1
+ Wrapped type must provide the usual get and set accessor methods,
+ with the usual signatures (see StandardAccessor for a conforming
+ example). Furthermore, the type must provide a nested typedef
+ value_type.
+
+ @tpl WrappedAccessor2
+ Wrapped type must provide the usual get and set accessor methods,
+ with the usual signatures (see StandardAccessor for a conforming
+ example). Furthermore, the type must provide a nested typedef
+ value_type.
+ */
+template< class WrappedAccessor1,
+ class WrappedAccessor2 > class JoinImageAccessorAdapter
+{
+public:
+ // TODO(F3): Need numeric traits and a few free functions to
+ // actually calculate with a pair (semantic: apply every operation
+ // individually to the contained types)
+ typedef std::pair<typename WrappedAccessor1::value_type,
+ typename WrappedAccessor2::value_type> value_type;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// making all members public, if no member template friends
+private:
+ template<class A1, class A2> friend class JoinImageAccessorAdapter;
+#endif
+
+ WrappedAccessor1 ma1stAccessor;
+ WrappedAccessor2 ma2ndAccessor;
+
+public:
+ JoinImageAccessorAdapter() :
+ ma1stAccessor(),
+ ma2ndAccessor()
+ {}
+
+ template< class T > explicit JoinImageAccessorAdapter( T const& accessor ) :
+ ma1stAccessor( accessor ),
+ ma2ndAccessor()
+ {}
+
+ template< class A1, class A2 > explicit
+ JoinImageAccessorAdapter(
+ JoinImageAccessorAdapter< A1,
+ A2 > const& rSrc ) :
+ ma1stAccessor( rSrc.ma1stAccessor ),
+ ma2ndAccessor( rSrc.ma2ndAccessor )
+ {}
+
+ template< class T1, class T2 >
+ JoinImageAccessorAdapter( T1 accessor1,
+ T2 accessor2 ) :
+ ma1stAccessor( accessor1 ),
+ ma2ndAccessor( accessor2 )
+ {}
+
+ // -------------------------------------------------------
+
+ WrappedAccessor1 const& get1stWrappedAccessor() const { return ma1stAccessor; }
+ WrappedAccessor1& get1stWrappedAccessor() { return ma1stAccessor; }
+
+ WrappedAccessor2 const& get2ndWrappedAccessor() const { return ma2ndAccessor; }
+ WrappedAccessor2& get2ndWrappedAccessor() { return ma2ndAccessor; }
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return std::make_pair(ma1stAccessor(i.first()),
+ ma2ndAccessor(i.second()));
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return std::make_pair(ma1stAccessor(i.first(),diff),
+ ma2ndAccessor(i.second(),diff));
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ ma1stAccessor.set(
+ vigra::detail::RequiresExplicitCast<typename WrappedAccessor1::value_type>::cast(
+ value.first),
+ i.first() );
+ ma2ndAccessor.set(
+ vigra::detail::RequiresExplicitCast<typename WrappedAccessor2::value_type>::cast(
+ value.second),
+ i.second() );
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ ma1stAccessor.set(
+ vigra::detail::RequiresExplicitCast<typename WrappedAccessor1::value_type>::cast(
+ value.first),
+ i.first(),
+ diff );
+ ma2ndAccessor.set(
+ vigra::detail::RequiresExplicitCast<typename WrappedAccessor2::value_type>::cast(
+ value.second),
+ i.second(),
+ diff );
+ }
+
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_ACCESSORADAPTERS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/accessorfunctors.hxx b/basebmp/inc/basebmp/accessorfunctors.hxx
new file mode 100644
index 000000000000..1d5464ac0c2f
--- /dev/null
+++ b/basebmp/inc/basebmp/accessorfunctors.hxx
@@ -0,0 +1,190 @@
+/* -*- 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 INCLUDED_BASEBMP_ACCESSORFUNCTORS_HXX
+#define INCLUDED_BASEBMP_ACCESSORFUNCTORS_HXX
+
+#include <osl/diagnose.h>
+#include <basebmp/metafunctions.hxx>
+
+#include <functional>
+
+namespace basebmp
+{
+
+// Some common accessor functors
+// ------------------------------------------------------------
+
+
+/// combine two values via XOR
+template< typename T > struct XorFunctor : public std::binary_function<T,T,T>
+{
+ T operator()( T v1, T v2 ) const { return v1 ^ v2; }
+};
+
+//-----------------------------------------------------------------------------
+
+/// Base class, passing on the arg types
+template< typename T, typename M > struct MaskFunctorBase :
+ public TernaryFunctorBase<T,M,T,T> {};
+
+
+/** Let a mask flag decide between two values
+
+ @tpl polarity
+ Mask polarity. When true, a false in the mask denotes
+ transparency, i.e. the original value will display. And vice
+ versa.
+ */
+template< typename T,
+ typename M,
+ bool polarity > struct GenericOutputMaskFunctor : public MaskFunctorBase<T,M>
+{
+ /// Ternary mask operation - selects v1 for !m == polarity, v2 otherwise
+ T operator()( T v1, M m, T v2 ) const
+ {
+ return !m == polarity ? v1 : v2;
+ }
+};
+
+/** Let a mask bit decide between two values (specialization for
+ integer mask types)
+ */
+template< typename T,
+ typename M,
+ bool polarity > struct IntegerOutputMaskFunctor;
+template< typename T,
+ typename M > struct IntegerOutputMaskFunctor<T,M,true> : public MaskFunctorBase<T,M>
+{
+ /** Mask v with state of m
+
+ @return v2, if m != 0, v1 otherwise.
+ */
+ T operator()( T v1, M m, T v2 ) const
+ {
+ typedef typename make_unsigned<T>::type unsigned_T;
+
+ // mask will be 0, iff m == 0, and 1 otherwise
+ const T mask( unsigned_cast<T>(m | -m) >> (sizeof(unsigned_T)*8 - 1) );
+ return v1*(M)(1-mask) + v2*mask;
+ }
+};
+template< typename T,
+ typename M > struct IntegerOutputMaskFunctor<T,M,false> : public MaskFunctorBase<T,M>
+{
+ /** Mask v with state of m
+
+ @return v2, if m != 0, v1 otherwise.
+ */
+ T operator()( T v1, M m, T v2 ) const
+ {
+ typedef typename make_unsigned<T>::type unsigned_T;
+
+ // mask will be 0, iff m == 0, and 1 otherwise
+ const T mask( unsigned_cast<T>(m | -m) >> (sizeof(unsigned_T)*8 - 1) );
+ return v1*mask + v2*(M)(1-mask);
+ }
+};
+
+/** Let a mask bit decide between two values (specialization for
+ binary-valued mask types)
+ */
+template< typename T, typename M, bool polarity > struct FastIntegerOutputMaskFunctor;
+template< typename T, typename M > struct FastIntegerOutputMaskFunctor<T,M,true> :
+ public MaskFunctorBase<T,M>
+{
+ /// Specialization, only valid if mask can only attain 0 or 1
+ T operator()( T v1, M m, T v2 ) const
+ {
+ OSL_ASSERT(m<=1);
+
+ return v1*(M)(1-m) + v2*m;
+ }
+};
+template< typename T, typename M > struct FastIntegerOutputMaskFunctor<T,M,false> :
+ public MaskFunctorBase<T,M>
+{
+ /// Specialization, only valid if mask can only attain 0 or 1
+ T operator()( T v1, M m, T v2 ) const
+ {
+ OSL_ASSERT(m<=1);
+
+ return v1*m + v2*(M)(1-m);
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+/** Split a pair value from a JoinImageAccessorAdapter into its
+ individual values, and pass it on to a ternary functor
+
+ This wrapper is an adaptable binary functor, and can thus be used
+ with a BinarySetterFunctionAccessorAdapter. Useful e.g. for
+ out-of-image alpha channel, or a masked image.
+
+ @tpl Functor
+ An adaptable ternary functor (as can e.g. be passed to the
+ TernarySetterFunctionAccessorAdapter)
+ */
+template< typename Functor > struct BinaryFunctorSplittingWrapper :
+ public std::binary_function<typename Functor::first_argument_type,
+ std::pair<typename Functor::third_argument_type,
+ typename Functor::second_argument_type>,
+ typename Functor::result_type>
+{
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// making all members public, if no member template friends
+private:
+ template<class A> friend struct BinaryFunctorSplittingWrapper;
+#endif
+ Functor maFunctor;
+
+public:
+ BinaryFunctorSplittingWrapper() : maFunctor() {}
+
+ template< class A > explicit
+ BinaryFunctorSplittingWrapper(
+ BinaryFunctorSplittingWrapper<A> const& src ) : maFunctor(src.maFunctor) {}
+
+ template< class F > explicit
+ BinaryFunctorSplittingWrapper( F const& func ) : maFunctor(func) {}
+
+ typename Functor::result_type operator()(
+ typename Functor::first_argument_type v1,
+ std::pair< typename Functor::third_argument_type,
+ typename Functor::second_argument_type > const& v2 ) const
+ {
+ return maFunctor( v1, v2.second, v2.first );
+ }
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_ACCESSORFUNCTORS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/accessortraits.hxx b/basebmp/inc/basebmp/accessortraits.hxx
new file mode 100644
index 000000000000..e54da3f3b5ea
--- /dev/null
+++ b/basebmp/inc/basebmp/accessortraits.hxx
@@ -0,0 +1,133 @@
+/* -*- 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 INCLUDED_BASEBMP_ACCESSORTRAITS_HXX
+#define INCLUDED_BASEBMP_ACCESSORTRAITS_HXX
+
+#include <basebmp/accessorfunctors.hxx>
+#include <basebmp/accessoradapters.hxx>
+#include <basebmp/metafunctions.hxx>
+
+#include <functional>
+
+namespace basebmp
+{
+
+struct FastMask;
+struct NoFastMask;
+
+/// Metafunction to select output mask functor from iterator and mask value type
+template< typename T, typename M, bool polarity, typename DUMMY > struct outputMaskFunctorSelector : public
+ ifBothScalarIntegral< T, M,
+ IntegerOutputMaskFunctor< T, M, polarity >,
+ GenericOutputMaskFunctor< T, M, polarity > >
+{
+};
+template< typename T, typename M, bool polarity > struct outputMaskFunctorSelector< T, M, polarity, FastMask > : public
+ ifBothScalarIntegral< T, M,
+ FastIntegerOutputMaskFunctor< T, M, polarity >,
+ GenericOutputMaskFunctor< T, M, polarity > >
+{
+};
+
+/** Metafunction providing a point of configuration for iterators
+ capable of employing the fast output mask functor.
+
+ Specialize this metafunction for your case, and pass FastMask to
+ the outputMaskFunctorSelector.
+ */
+template< class Accessor,
+ class MaskAccessor,
+ class Iterator,
+ class MaskIterator,
+ bool polarity > struct maskedAccessorSelector
+{
+ typedef TernarySetterFunctionAccessorAdapter<
+ Accessor,
+ MaskAccessor,
+ typename outputMaskFunctorSelector<
+ typename Accessor::value_type,
+ typename MaskAccessor::value_type,
+ polarity,
+ NoFastMask > ::type >
+ type;
+};
+
+//-----------------------------------------------------------------------------
+
+/** Traits template for Accessor
+
+ Provides wrapped types for color lookup, raw pixel access, xor and
+ mask accessors.
+ */
+template< class Accessor > struct AccessorTraits
+{
+ /// value type of described accessor
+ typedef typename Accessor::value_type value_type;
+
+ /// Retrieve stand-alone color lookup function for given Accessor type
+ typedef std::project2nd< Accessor, value_type > color_lookup;
+
+ /// Retrieve raw pixel data accessor for given Accessor type
+ typedef Accessor raw_accessor;
+
+ /// Retrieve wrapped accessor for XOR setter access
+ typedef BinarySetterFunctionAccessorAdapter<
+ Accessor,
+ XorFunctor< value_type > > xor_accessor;
+
+ /** Retrieve masked accessor for given types
+
+ A masked accessor works like a filter, where the mask gates
+ the accessor's setter methods (if the mask contains a 0 at a
+ given iterator position, the original value is
+ preserved. Otherwise, the new value gets set).
+
+ @attention be careful when retrieving a masked accessor for a
+ set of types, and using it for a different one - there are
+ partial specializations that take an optimized functor for
+ certain mask accessors.
+ */
+ template< class MaskAccessor,
+ class Iterator,
+ class MaskIterator,
+ bool polarity > struct masked_accessor :
+ public maskedAccessorSelector< Accessor,
+ MaskAccessor,
+ Iterator,
+ MaskIterator,
+ polarity >
+ {};
+
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_ACCESSORTRAITS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/bitmapdevice.hxx b/basebmp/inc/basebmp/bitmapdevice.hxx
new file mode 100644
index 000000000000..e026f3165fbb
--- /dev/null
+++ b/basebmp/inc/basebmp/bitmapdevice.hxx
@@ -0,0 +1,695 @@
+/* -*- 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 INCLUDED_BASEBMP_BITMAPDEVICE_HXX
+#define INCLUDED_BASEBMP_BITMAPDEVICE_HXX
+
+#include <sal/types.h>
+#include <basebmp/drawmodes.hxx>
+
+#include <boost/scoped_ptr.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/shared_array.hpp>
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/noncopyable.hpp>
+#include <vector>
+
+namespace basegfx
+{
+ class B2IPoint;
+ class B2DPoint;
+ class B2IVector;
+ class B2IRange;
+ class B2DPolygon;
+ class B2DPolyPolygon;
+}
+
+namespace basebmp
+{
+
+// Temporary. Use like the tools color object
+class Color;
+typedef boost::shared_ptr< class BitmapDevice > BitmapDeviceSharedPtr;
+typedef boost::shared_array< sal_uInt8 > RawMemorySharedArray;
+typedef boost::shared_ptr< const std::vector<Color> > PaletteMemorySharedVector;
+
+struct ImplBitmapDevice;
+
+/** Definition of BitmapDevice interface
+
+ Use the createBitmapDevice() factory method to create instances.
+
+ Implementation note: the clip mask and bitmap parameter instances
+ of BitmapDevice that are passed to individual BitmapDevice
+ instances work best with 1 bit grey masks for the clip and a
+ format matching that of the target BitmapDevice for the other
+ parameters. The alpha mask passed to the drawMaskedColor() methods
+ works best when given as an eight bit grey bitmap. Everything else
+ is accepted, but potentially slow.
+ */
+class BitmapDevice : public boost::enable_shared_from_this<BitmapDevice>,
+ private boost::noncopyable
+{
+public:
+ /** Query size of device in pixel
+ */
+ basegfx::B2IVector getSize() const;
+
+ /** Query whether buffer starts with 0th scanline
+
+ @return true, if the buffer memory starts with the 0th
+ scanline, and false if it starts with the last one. The latter
+ is e.g. the typical scan line ordering for the Windows BMP
+ format.
+ */
+ bool isTopDown() const;
+
+ /** Query type of scanline memory format
+ */
+ sal_Int32 getScanlineFormat() const;
+
+ /** Query byte offset to get from scanline n to scanline n+1
+
+ @return the scanline stride in bytes. In the case of
+ isTopDown()==false, this offset will be negative.
+ */
+ sal_Int32 getScanlineStride() const;
+
+ /** Get pointer to frame buffer
+
+ @return a shared ptr to the bitmap buffer memory. As this is a
+ shared ptr, you can freely store and use the pointer, even
+ after this object has been deleted.
+ */
+ RawMemorySharedArray getBuffer() const;
+
+ /** Get pointer to palette
+
+ The returned pointer is const on purpose, since the
+ BitmapDevice might internally cache lookup information. Don't
+ modify the returned data, unless you want to enter the realm
+ of completely undefined behaviour.
+
+ @return shared pointer to vector of Color entries.
+ */
+ PaletteMemorySharedVector getPalette() const;
+
+ /** Query number of palette entries.
+
+ This is just a frontend for getPalette->size()
+ */
+ sal_Int32 getPaletteEntryCount() const;
+
+ /** Clear whole device with given color
+
+ This method works like a fill with the given color value,
+ resulting in a bitmap uniformly colored in fillColor.
+ */
+ void clear( Color fillColor );
+
+ /** Set given pixel to specified color
+
+ @param rPt
+ Pixel to set
+
+ @param pixelColor
+ Color value to set the pixel to
+
+ @param drawMode
+ Draw mode to use when changing the pixel value
+ */
+ void setPixel( const basegfx::B2IPoint& rPt,
+ Color pixelColor,
+ DrawMode drawMode );
+
+ /** Set given pixel to specified color
+
+ @param rPt
+ Pixel to set
+
+ @param pixelColor
+ Color value to set the pixel to
+
+ @param drawMode
+ Draw mode to use when changing the pixel value
+
+ @param rClip
+ Clip mask to use. If the clip mask is 1 at the given pixel
+ position, no change will take place.
+ */
+ void setPixel( const basegfx::B2IPoint& rPt,
+ Color pixelColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip );
+
+ /** Get color value at given pixel
+ */
+ Color getPixel( const basegfx::B2IPoint& rPt );
+
+ /** Get underlying pixel data value at given position
+
+ This method returns the raw pixel data. In the case of
+ paletted bitmaps, this is the palette index, not the final
+ color value.
+ */
+ sal_uInt32 getPixelData( const basegfx::B2IPoint& rPt );
+
+ /** Draw a line
+
+ @param rPt1
+ Start point of the line
+
+ @param rPt2
+ End point of the line. If the analytical line from rP1 to rPt2
+ (with the actual pixel positions assumed to be the center of
+ the pixel) is exactly in the middle between two pixel, this
+ method always selects the pixel closer to rPt1.
+
+ @param lineColor
+ Color value to draw the line with
+
+ @param drawMode
+ Draw mode to use when changing the pixel value
+ */
+ void drawLine( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ Color lineColor,
+ DrawMode drawMode );
+
+ /** Draw a line
+
+ @param rPt1
+ Start point of the line
+
+ @param rPt2
+ End point of the line. If the analytical line from rP1 to rPt2
+ (with the actual pixel positions assumed to be the center of
+ the pixel) is exactly in the middle between two pixel, this
+ method always selects the pixel closer to rPt1.
+
+ @param lineColor
+ Color value to draw the line with
+
+ @param drawMode
+ Draw mode to use when changing the pixel value
+
+ @param rClip
+ Clip mask to use. Pixel where the corresponding clip mask
+ pixel is 1 will not be modified.
+ */
+ void drawLine( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip );
+
+ /** Draw a polygon
+
+ @param rPoly
+ Polygon to draw. Depending on the value returned by rPoly's
+ isClosed() method, the resulting line polygon will be drawn
+ closed or not.
+
+ @param lineColor
+ Color value to draw the polygon with
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+ */
+ void drawPolygon( const basegfx::B2DPolygon& rPoly,
+ Color lineColor,
+ DrawMode drawMode );
+
+ /** Draw a polygon
+
+ @param rPoly
+ Polygon to draw. Depending on the value returned by rPoly's
+ isClosed() method, the resulting line polygon will be drawn
+ closed or not.
+
+ @param lineColor
+ Color value to draw the polygon with
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+
+ @param rClip
+ Clip mask to use. Pixel where the corresponding clip mask
+ pixel is 1 will not be modified.
+ */
+ void drawPolygon( const basegfx::B2DPolygon& rPoly,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip );
+
+ /** Fill a poly-polygon
+
+ @param rPoly
+ Poly-polygon to fill. Regardless of the value returned by
+ rPoly's isClosed() method, the resulting filled poly-polygon
+ is always considered closed. As usual, when filling a shape,
+ the rightmost and bottommost pixel are not filled, compared to
+ the drawPolygon() method. For example, the rectangle
+ (0,0),(1,1) will have four pixel set, when drawn via
+ drawPolygon(), and only one pixel, when filled via
+ fillPolyPolygon().
+
+ @param fillColor
+ Color value to fill the poly-polygon with
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+ */
+ void fillPolyPolygon( const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode );
+
+ /** Fill a poly-polygon
+
+ @param rPoly
+ Poly-polygon to fill. Regardless of the value returned by
+ rPoly's isClosed() method, the resulting filled poly-polygon
+ is always considered closed. As usual, when filling a shape,
+ the rightmost and bottommost pixel are not filled, compared to
+ the drawPolygon() method. For example, the rectangle
+ (0,0),(1,1) will have four pixel set, when drawn via
+ drawPolygon(), and only one pixel, when filled via
+ fillPolyPolygon().
+
+ @param fillColor
+ Color value to fill the poly-polygon with
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+
+ @param rClip
+ Clip mask to use. Pixel where the corresponding clip mask
+ pixel is 1 will not be modified.
+ */
+ void fillPolyPolygon( const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip );
+
+ /** Draw another bitmap into this device
+
+ @param rSrcBitmap
+ Bitmap to render into this one. It is permitted that source
+ and destination bitmap are the same.
+
+ @param rSrcRect
+ Rectangle within the source bitmap to take the pixel from.
+
+ @param rDstRect
+ Rectangle in the destination bitmap to put the pixel
+ into. Source and destination rectangle are permitted to have
+ differing sizes; this method will scale the source pixel
+ accordingly. Please note that both source and destination
+ rectangle are interpreted excluding the rightmost pixel column
+ and the bottommost pixel row, this is much like polygon
+ filling. As a result, filling a given rectangle with
+ fillPolyPolygon(), and using the same rectangle as the
+ destination rectangle of this method, will affect exactly the
+ same set of pixel.
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+ */
+ void drawBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode );
+
+ /** Draw another bitmap into this device
+
+ @param rSrcBitmap
+ Bitmap to render into this one. It is permitted that source
+ and destination bitmap are the same.
+
+ @param rSrcRect
+ Rectangle within the source bitmap to take the pixel from.
+
+ @param rDstRect
+ Rectangle in the destination bitmap to put the pixel
+ into. Source and destination rectangle are permitted to have
+ differing sizes; this method will scale the source pixel
+ accordingly. Please note that both source and destination
+ rectangle are interpreted excluding the rightmost pixel column
+ and the bottommost pixel row, this is much like polygon
+ filling. As a result, filling a given rectangle with
+ fillPolyPolygon(), and using the same rectangle as the
+ destination rectangle of this method, will affect exactly the
+ same set of pixel.
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+
+ @param rClip
+ Clip mask to use. Pixel where the corresponding clip mask
+ pixel is 1 will not be modified.
+ */
+ void drawBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip );
+
+ /** Draw a color with an alpha-modulation bitmap into this device
+
+ This method takes a fixed color value, and an alpha mask. For
+ each pixel in the alpha mask, the given color value is blended
+ with the corresponding alpha value against the content of this
+ object.
+
+ @param aSrcColor
+ Color value to use for blending
+
+ @param rAlphaMask
+ Alpha mask to use for blending. It is permitted that alpha
+ mask and this bitmap are the same object.
+
+ @param rSrcRect
+ Rectangle within the alpha mask to take the pixel from.
+ Please note that the destination rectangle is interpreted
+ excluding the rightmost pixel column and the bottommost pixel
+ row, this is much like polygon filling. As a result, filling a
+ given rectangle with fillPolyPolygon(), and using the same
+ rectangle as the source rectangle of this method, will affect
+ exactly the same set of pixel.
+
+ @param rDstPoint
+ Destination point, where to start placing the pixel from the
+ source rectangle
+ */
+ void drawMaskedColor( Color aSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint );
+
+ /** Draw a color with an alpha-modulation bitmap into this device
+
+ This method takes a fixed color value, and an alpha mask. For
+ each pixel in the alpha mask, the given color value is blended
+ with the corresponding alpha value against the content of this
+ object.
+
+ @param aSrcColor
+ Color value to use for blending
+
+ @param rAlphaMask
+ Alpha mask to use for blending. It is permitted that alpha
+ mask and this bitmap are the same object.
+
+ @param rSrcRect
+ Rectangle within the alpha mask to take the pixel from.
+ Please note that the destination rectangle is interpreted
+ excluding the rightmost pixel column and the bottommost pixel
+ row, this is much like polygon filling. As a result, filling a
+ given rectangle with fillPolyPolygon(), and using the same
+ rectangle as the source rectangle of this method, will affect
+ exactly the same set of pixel.
+
+ @param rDstPoint
+ Destination point, where to start placing the pixel from the
+ source rectangle
+
+ @param rClip
+ Clip mask to use. Pixel where the corresponding clip mask
+ pixel is 1 will not be modified.
+ */
+ void drawMaskedColor( Color aSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint,
+ const BitmapDeviceSharedPtr& rClip );
+
+ /** Draw another bitmap through a mask into this device
+
+ This method renders a source bitmap into this device, much
+ like the drawBitmap() method. The only difference is the
+ additional mask parameter, which operates much like an
+ additional clip mask: pixel with value zero in this mask
+ result in destination pixel not being modified.
+
+ @param rSrcBitmap
+ Bitmap to render into this one. It is permitted that source
+ and destination bitmap are the same.
+
+ @param rMask
+ Bitmap to use as a mask. Pixel with value != zero in this mask
+ will result in destination pixel not being affected by the
+ blit operation.
+
+ @param rSrcRect
+ Rectangle within the source bitmap to take the pixel from.
+
+ @param rDstRect
+ Rectangle in the destination bitmap to put the pixel
+ into. Source and destination rectangle are permitted to have
+ differing sizes; this method will scale the source pixel
+ accordingly. Please note that both source and destination
+ rectangle are interpreted excluding the rightmost pixel column
+ and the bottommost pixel row, this is much like polygon
+ filling. As a result, filling a given rectangle with
+ fillPolyPolygon(), and using the same rectangle as the
+ destination rectangle of this method, will affect exactly the
+ same set of pixel.
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+ */
+ void drawMaskedBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode );
+
+ /** Draw another bitmap through a mask into this device
+
+ This method renders a source bitmap into this device, much
+ like the drawBitmap() method. The only difference is the
+ additional mask parameter, which operates much like an
+ additional clip mask: pixel with value != zero in this mask
+ result in destination pixel not being modified.
+
+ @param rSrcBitmap
+ Bitmap to render into this one. It is permitted that source
+ and destination bitmap are the same.
+
+ @param rMask
+ Bitmap to use as a mask. Pixel with value != zero in this mask
+ will result in destination pixel not being affected by the
+ blit operation.
+
+ @param rSrcRect
+ Rectangle within the source bitmap to take the pixel from.
+
+ @param rDstRect
+ Rectangle in the destination bitmap to put the pixel
+ into. Source and destination rectangle are permitted to have
+ differing sizes; this method will scale the source pixel
+ accordingly. Please note that both source and destination
+ rectangle are interpreted excluding the rightmost pixel column
+ and the bottommost pixel row, this is much like polygon
+ filling. As a result, filling a given rectangle with
+ fillPolyPolygon(), and using the same rectangle as the
+ destination rectangle of this method, will affect exactly the
+ same set of pixel.
+
+ @param drawMode
+ Draw mode to use when changing pixel values
+
+ @param rClip
+ Clip mask to use. Pixel where the corresponding clip mask
+ pixel is 1 will not be modified.
+ */
+ void drawMaskedBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip );
+
+protected:
+ BitmapDevice( const basegfx::B2IRange& rBounds,
+ sal_Int32 nScanlineFormat,
+ sal_Int32 nScanlineStride,
+ sal_uInt8* pFirstScanline,
+ const RawMemorySharedArray& rMem,
+ const PaletteMemorySharedVector& rPalette );
+
+ virtual ~BitmapDevice();
+
+private:
+ virtual bool isCompatibleBitmap( const BitmapDeviceSharedPtr& bmp ) const = 0;
+ virtual bool isCompatibleClipMask( const BitmapDeviceSharedPtr& bmp ) const = 0;
+ virtual bool isCompatibleAlphaMask( const BitmapDeviceSharedPtr& bmp ) const = 0;
+
+ virtual void clear_i( Color fillColor,
+ const basegfx::B2IRange& rBounds ) = 0;
+
+ virtual void setPixel_i( const basegfx::B2IPoint& rPt,
+ Color lineColor,
+ DrawMode drawMode ) = 0;
+ virtual void setPixel_i( const basegfx::B2IPoint& rPt,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip ) = 0;
+
+ virtual Color getPixel_i( const basegfx::B2IPoint& rPt ) = 0;
+
+ virtual sal_uInt32 getPixelData_i( const basegfx::B2IPoint& rPt ) = 0;
+
+ virtual void drawLine_i( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode ) = 0;
+ virtual void drawLine_i( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip ) = 0;
+
+ virtual void drawPolygon_i( const basegfx::B2DPolygon& rPoly,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode ) = 0;
+ virtual void drawPolygon_i( const basegfx::B2DPolygon& rPoly,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip ) = 0;
+
+ virtual void fillPolyPolygon_i( const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode,
+ const basegfx::B2IRange& rBounds ) = 0;
+ virtual void fillPolyPolygon_i( const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode,
+ const basegfx::B2IRange& rBounds,
+ const BitmapDeviceSharedPtr& rClip ) = 0;
+
+ // must work with *this == rSrcBitmap!
+ virtual void drawBitmap_i( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode ) = 0;
+ virtual void drawBitmap_i( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip ) = 0;
+
+ // must work with *this == rSrcBitmap!
+ virtual void drawMaskedColor_i( Color rSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint ) = 0;
+ virtual void drawMaskedColor_i( Color rSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint,
+ const BitmapDeviceSharedPtr& rClip ) = 0;
+
+ // must work with *this == rSrcBitmap!
+ virtual void drawMaskedBitmap_i( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode ) = 0;
+ virtual void drawMaskedBitmap_i( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip ) = 0;
+
+ BitmapDeviceSharedPtr getGenericRenderer() const;
+
+ boost::scoped_ptr< ImplBitmapDevice > mpImpl;
+};
+
+/** Factory method to create a BitmapDevice for given scanline format
+ */
+BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
+ bool bTopDown,
+ sal_Int32 nScanlineFormat );
+
+/** Factory method to create a BitmapDevice for given scanline format
+ with the given palette
+
+ Note: the provided palette must have sufficient size, to satisfy
+ lookups for the whole range of pixel values from the specified
+ format.
+ */
+BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
+ bool bTopDown,
+ sal_Int32 nScanlineFormat,
+ const PaletteMemorySharedVector& rPalette );
+
+/** Factory method to create a BitmapDevice for given scanline format
+ from the given piece of raw memory and palette
+
+ Note: the provided memory must have sufficient size, to store the
+ image of the specified area and format.
+ */
+BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
+ bool bTopDown,
+ sal_Int32 nScanlineFormat,
+ const RawMemorySharedArray& rMem,
+ const PaletteMemorySharedVector& rPalette );
+
+
+/** Factory method to retrieve a subsetted BitmapDevice to the same
+ memory.
+
+ This method creates a second bitmap device instance, which renders
+ to the same memory as the original, but to a limited, rectangular
+ area. Useful to implement rectangular clips (usually faster than
+ setting up a 1bpp clip mask).
+ */
+BitmapDeviceSharedPtr subsetBitmapDevice( const BitmapDeviceSharedPtr& rProto,
+ const basegfx::B2IRange& rSubset );
+
+/** Factory method to clone a BitmapDevice from a given prototype.
+
+ All attributes (like scanline format and top-down state) are
+ copied, only the size can be varied. Note that the prototype's
+ bitmap content is <em>not</em> copied, only a palette (if any).
+ */
+BitmapDeviceSharedPtr cloneBitmapDevice( const basegfx::B2IVector& rSize,
+ const BitmapDeviceSharedPtr& rProto );
+
+}
+
+#endif /* INCLUDED_BASEBMP_BITMAPDEVICE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/clippedlinerenderer.hxx b/basebmp/inc/basebmp/clippedlinerenderer.hxx
new file mode 100644
index 000000000000..e023581416d6
--- /dev/null
+++ b/basebmp/inc/basebmp/clippedlinerenderer.hxx
@@ -0,0 +1,415 @@
+/* -*- 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 INCLUDED_BASEBMP_CLIPPEDLINERENDERER_HXX
+#define INCLUDED_BASEBMP_CLIPPEDLINERENDERER_HXX
+
+#include <basegfx/tools/rectcliptools.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/range/b2irange.hxx>
+
+#include <vigra/diff2d.hxx>
+#include <vigra/iteratortraits.hxx>
+
+namespace basebmp
+{
+
+// factored-out bresenham setup code, which is used from two different
+// places in renderClippedLine() below. Admittedly messy for the long
+// parameter list...
+inline bool prepareClip( sal_Int32 a1,
+ sal_Int32 a2,
+ sal_Int32 b1,
+ sal_Int32 da,
+ sal_Int32 db,
+ sal_Int32& o_as,
+ sal_Int32& o_bs,
+ int sa,
+ int sb,
+ sal_Int32& io_rem,
+ int& o_n,
+ sal_uInt32 clipCode1,
+ sal_uInt32 clipCount1,
+ sal_uInt32 clipCode2,
+ sal_uInt32 clipCount2,
+ sal_Int32 aMin,
+ sal_uInt32 aMinFlag,
+ sal_Int32 aMax,
+ sal_uInt32 aMaxFlag,
+ sal_Int32 bMin,
+ sal_uInt32 bMinFlag,
+ sal_Int32 bMax,
+ sal_uInt32 bMaxFlag,
+ bool bRoundTowardsPt2 )
+{
+ int ca(0), cb(0);
+ if( clipCode1 )
+ {
+ if( clipCode1 & aMinFlag )
+ {
+ ca = 2*db*(aMin - a1);
+ o_as = aMin;
+ }
+ else if( clipCode1 & aMaxFlag )
+ {
+ ca = 2*db*(a1 - aMax);
+ o_as = aMax;
+ }
+
+ if( clipCode1 & bMinFlag )
+ {
+ cb = 2*da*(bMin - b1);
+ o_bs = bMin;
+ }
+ else if( clipCode1 & bMaxFlag )
+ {
+ cb = 2*da*(b1 - bMax);
+ o_bs = bMax;
+ }
+
+ if( clipCount1 == 2 )
+ clipCode1 &= (ca + da < cb + !bRoundTowardsPt2) ? ~(aMinFlag|aMaxFlag) : ~(bMinFlag|bMaxFlag);
+
+ if( clipCode1 & (aMinFlag|aMaxFlag) )
+ {
+ cb = (ca + da - !bRoundTowardsPt2) / (2*da);
+
+ if( sb >= 0 )
+ {
+ o_bs = b1 + cb;
+ if( o_bs > bMax )
+ return false;
+ }
+ else
+ {
+ o_bs = b1 - cb;
+ if( o_bs < bMin )
+ return false;
+ }
+
+ io_rem += ca - 2*da*cb;
+ }
+ else
+ {
+ ca = (cb - da + 2*db - bRoundTowardsPt2) / (2*db);
+ if( sa >= 0 )
+ {
+ o_as = a1 + ca;
+ if( o_as > aMax )
+ return false;
+ }
+ else
+ {
+ o_as = a1 - ca;
+ if( o_as < aMin )
+ return false;
+ }
+
+ io_rem += 2*db*ca - cb;
+ }
+ }
+ else
+ {
+ o_as = a1; o_bs = b1;
+ }
+
+ bool bRetVal = false;
+ if( clipCode2 )
+ {
+ if( clipCount2 == 2 )
+ {
+ ca = 2*db*((clipCode2 & aMinFlag) ? a1 - aMin : aMax - a1);
+ cb = 2*da*((clipCode2 & bMinFlag) ? b1 - bMin : bMax - b1);
+ clipCode2 &= (cb + da < ca + bRoundTowardsPt2) ? ~(aMinFlag|aMaxFlag) : ~(bMinFlag|bMaxFlag);
+ }
+
+ if( clipCode2 & (aMinFlag|aMaxFlag) )
+ o_n = (clipCode2 & aMinFlag) ? o_as - aMin : aMax - o_as;
+ else
+ {
+ o_n = (clipCode2 & bMinFlag) ? o_bs - bMin : bMax - o_bs;
+ bRetVal = true;
+ }
+ }
+ else
+ o_n = (a2 >= o_as) ? a2 - o_as : o_as - a2;
+
+ return bRetVal;
+}
+
+
+/** Render line to image iterators, clip against given rectangle
+
+ This method renders a line from aPt1 to aPt2, clipped against
+ rClipRect (the clipping will take place pixel-perfect, i.e. as if
+ the original bresenham-rendered line would have been clipped each
+ pixel individually. No slight shifts compared to unclipped lines).
+
+ @param aPt1
+ Start point of the line
+
+ @param aPt2
+ End point of the line
+
+ @param rClipRect
+ Rectangle to clip against
+
+ @param color
+ Color value to render the line with
+
+ @param begin
+ left-top image iterator
+
+ @param end
+ right-bottom image iterator
+
+ @param acc
+ Image accessor
+
+ @param bRoundTowardsPt2
+ Rounding mode to use. Giving false here results in line pixel tend
+ towards pt1, i.e. when a pixel exactly hits the middle between two
+ pixel, the pixel closer to pt1 will be chosen. Giving true here
+ makes renderClippedLine() choose pt2 in those cases.
+ */
+template< class Iterator, class Accessor >
+void renderClippedLine( basegfx::B2IPoint aPt1,
+ basegfx::B2IPoint aPt2,
+ const basegfx::B2IRange& rClipRect,
+ typename Accessor::value_type color,
+ Iterator begin,
+ Accessor acc,
+ bool bRoundTowardsPt2=false )
+{
+ // Algorithm according to Steven Eker's 'Pixel-perfect line clipping',
+ // Graphics Gems V, pp. 314-322
+ sal_uInt32 clipCode1 = basegfx::tools::getCohenSutherlandClipFlags(aPt1,
+ rClipRect);
+ sal_uInt32 clipCode2 = basegfx::tools::getCohenSutherlandClipFlags(aPt2,
+ rClipRect);
+
+ if( clipCode1 & clipCode2 )
+ return; // line fully clipped away
+
+ sal_uInt32 clipCount1 = basegfx::tools::getNumberOfClipPlanes(clipCode1);
+ sal_uInt32 clipCount2 = basegfx::tools::getNumberOfClipPlanes(clipCode2);
+
+ if( (clipCode1 != 0 && clipCode2 == 0)
+ || (clipCount1 == 2 && clipCount2 == 1) )
+ {
+ std::swap(clipCount2,clipCount1);
+ std::swap(clipCode2,clipCode1);
+ std::swap(aPt1,aPt2);
+ bRoundTowardsPt2 = !bRoundTowardsPt2;
+ }
+
+ const sal_Int32 x1 = aPt1.getX();
+ const sal_Int32 x2 = aPt2.getX();
+ const sal_Int32 y1 = aPt1.getY();
+ const sal_Int32 y2 = aPt2.getY();
+
+ // TODO(E1): This might overflow
+ sal_Int32 adx = x2 - x1;
+ int sx = 1;
+ if( adx < 0 )
+ {
+ adx *= -1;
+ sx = -1;
+ }
+
+ // TODO(E1): This might overflow
+ sal_Int32 ady = y2 - y1;
+ int sy = 1;
+ if( ady < 0 )
+ {
+ ady *= -1;
+ sy = -1;
+ }
+
+ int n = 0;
+ sal_Int32 xs = x1;
+ sal_Int32 ys = y1;
+ if( adx >= ady )
+ {
+ // semi-horizontal line
+ sal_Int32 rem = 2*ady - adx - !bRoundTowardsPt2;
+
+ const bool bUseAlternateBresenham(
+ prepareClip(x1, x2, y1, adx, ady, xs, ys, sx, sy,
+ rem, n, clipCode1, clipCount1, clipCode2, clipCount2,
+ rClipRect.getMinX(), basegfx::tools::RectClipFlags::LEFT,
+ rClipRect.getMaxX(), basegfx::tools::RectClipFlags::RIGHT,
+ rClipRect.getMinY(), basegfx::tools::RectClipFlags::TOP,
+ rClipRect.getMaxY(), basegfx::tools::RectClipFlags::BOTTOM,
+ bRoundTowardsPt2 ));
+
+ Iterator currIter( begin + vigra::Diff2D(0,ys) );
+ typename vigra::IteratorTraits<Iterator>::row_iterator
+ rowIter( currIter.rowIterator() + xs );
+
+ adx *= 2;
+ ady *= 2;
+
+ if( bUseAlternateBresenham )
+ {
+ while(true)
+ {
+ acc.set(color, rowIter);
+
+ if( rem >= 0 )
+ {
+ if( --n < 0 )
+ break;
+
+ ys += sy;
+ xs += sx;
+ rem -= adx;
+
+ currIter.y += sy;
+ rowIter = currIter.rowIterator() + xs;
+ }
+ else
+ {
+ xs += sx;
+ rowIter += sx;
+ }
+
+ rem += ady;
+ }
+ }
+ else
+ {
+ while(true)
+ {
+ acc.set(color, rowIter);
+
+ if( --n < 0 )
+ break;
+
+ if( rem >= 0 )
+ {
+ ys += sy;
+ xs += sx;
+ rem -= adx;
+
+ currIter.y += sy;
+ rowIter = currIter.rowIterator() + xs;
+ }
+ else
+ {
+ xs += sx;
+ rowIter += sx;
+ }
+
+ rem += ady;
+ }
+ }
+ }
+ else
+ {
+ // semi-vertical line
+ sal_Int32 rem = 2*adx - ady - !bRoundTowardsPt2;
+
+ const bool bUseAlternateBresenham(
+ prepareClip(y1, y2, x1, ady, adx, ys, xs, sy, sx,
+ rem, n, clipCode1, clipCount1, clipCode2, clipCount2,
+ rClipRect.getMinY(), basegfx::tools::RectClipFlags::TOP,
+ rClipRect.getMaxY(), basegfx::tools::RectClipFlags::BOTTOM,
+ rClipRect.getMinX(), basegfx::tools::RectClipFlags::LEFT,
+ rClipRect.getMaxX(), basegfx::tools::RectClipFlags::RIGHT,
+ bRoundTowardsPt2 ));
+
+ Iterator currIter( begin + vigra::Diff2D(xs,0) );
+ typename vigra::IteratorTraits<Iterator>::column_iterator
+ colIter( currIter.columnIterator() + ys );
+
+ adx *= 2;
+ ady *= 2;
+
+ if( bUseAlternateBresenham )
+ {
+ while(true)
+ {
+ acc.set(color, colIter);
+
+ if( rem >= 0 )
+ {
+ if( --n < 0 )
+ break;
+
+ xs += sx;
+ ys += sy;
+ rem -= ady;
+
+ currIter.x += sx;
+ colIter = currIter.columnIterator() + ys;
+ }
+ else
+ {
+ ys += sy;
+ colIter += sy;
+ }
+
+ rem += adx;
+ }
+ }
+ else
+ {
+ while(true)
+ {
+ acc.set(color, colIter);
+
+ if( --n < 0 )
+ break;
+
+ if( rem >= 0 )
+ {
+ xs += sx;
+ ys += sy;
+ rem -= ady;
+
+ currIter.x += sx;
+ colIter = currIter.columnIterator() + ys;
+ }
+ else
+ {
+ ys += sy;
+ colIter += sy;
+ }
+
+ rem += adx;
+ }
+ }
+ }
+}
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_CLIPPEDLINERENDERER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/color.hxx b/basebmp/inc/basebmp/color.hxx
new file mode 100644
index 000000000000..1bd70198a280
--- /dev/null
+++ b/basebmp/inc/basebmp/color.hxx
@@ -0,0 +1,102 @@
+/* -*- 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 INCLUDED_BASEBMP_COLOR_HXX
+#define INCLUDED_BASEBMP_COLOR_HXX
+
+#include <sal/types.h>
+#include <rtl/math.hxx>
+
+namespace basebmp
+{
+
+class Color
+{
+private:
+ sal_uInt32 mnColor;
+
+public:
+ typedef sal_uInt32 value_type;
+ typedef sal_uInt8 component_type;
+
+ Color() : mnColor(0) {}
+ explicit Color( sal_uInt32 nVal ) : mnColor(nVal) {}
+ Color( sal_uInt8 nRed, sal_uInt8 nGreen, sal_uInt8 nBlue ) :
+ mnColor( ((sal_uInt32)nRed << 16) | ((sal_uInt32)nGreen << 8) | nBlue )
+ {}
+
+ void setRed( sal_uInt8 nRed ) { mnColor &= ~0x00FF0000UL; mnColor |= (sal_uInt32)nRed << 16; }
+ void setGreen( sal_uInt8 nGreen ) { mnColor &= ~0x0000FF00UL; mnColor |= (sal_uInt32)nGreen << 8; }
+ void setBlue( sal_uInt8 nBlue ) { mnColor &= ~0x000000FFUL; mnColor |= nBlue; }
+
+ void setGrey( sal_uInt8 nGreyVal ) { mnColor = (sal_uInt32)nGreyVal << 16 | (sal_uInt32)nGreyVal << 8 | nGreyVal; }
+
+ sal_uInt8 getRed() const { return 0xFF & (sal_uInt8)(mnColor >> 16); }
+ sal_uInt8 getGreen() const { return 0xFF & (sal_uInt8)(mnColor >> 8); }
+ sal_uInt8 getBlue() const { return 0xFF & (sal_uInt8)mnColor; }
+
+ sal_uInt8 getGreyscale() const { return (sal_uInt8)((getBlue()*28UL +
+ getGreen()*151 +
+ getRed()*77) / 256); }
+
+ sal_uInt32 toInt32() const { return mnColor; }
+
+ bool operator!() const { return mnColor == 0; }
+ Color operator&( sal_uInt32 nMask ) const { return Color(mnColor & nMask); }
+ Color operator^( Color col ) const { return Color(col.getRed()^getRed(),
+ col.getGreen()^getGreen(),
+ col.getBlue()^getBlue()); }
+ Color operator-( Color col ) const { return Color((sal_uInt8)abs((int)getRed()-col.getRed()),
+ (sal_uInt8)abs((int)getGreen()-col.getGreen()),
+ (sal_uInt8)abs((int)getBlue()-col.getBlue())); }
+ Color operator+( Color col ) const { return Color(getRed()+col.getRed(),
+ getGreen()+col.getGreen(),
+ getBlue()+col.getBlue()); }
+ Color operator*( Color col ) const { return Color((sal_uInt8)((sal_uInt32)col.getRed()*getRed()/SAL_MAX_UINT8),
+ (sal_uInt8)((sal_uInt32)col.getGreen()*getGreen()/SAL_MAX_UINT8),
+ (sal_uInt8)((sal_uInt32)col.getBlue()*getBlue()/SAL_MAX_UINT8)); }
+ Color operator*( sal_uInt8 n ) const { return Color((sal_uInt8)((sal_uInt32)n*getRed()/SAL_MAX_UINT8),
+ (sal_uInt8)((sal_uInt32)n*getGreen()/SAL_MAX_UINT8),
+ (sal_uInt8)((sal_uInt32)n*getBlue()/SAL_MAX_UINT8)); }
+ Color operator*( double n ) const { return Color((sal_uInt8)(n*getRed()+.5),
+ (sal_uInt8)(n*getGreen()+.5),
+ (sal_uInt8)(n*getBlue()+.5)); }
+ bool operator==( const Color& rhs ) const { return (getRed()==rhs.getRed() &&
+ getGreen()==rhs.getGreen() &&
+ getBlue()==rhs.getBlue()); }
+ bool operator!=( const Color& rhs ) const { return !(*this==rhs); }
+ double magnitude() const { return sqrt((double)getRed()*getRed()
+ + getGreen()*getGreen()
+ + getBlue()*getBlue()); }
+};
+
+} // namespace vigra
+
+#endif /* INCLUDED_BASEBMP_COLOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/colorblendaccessoradapter.hxx b/basebmp/inc/basebmp/colorblendaccessoradapter.hxx
new file mode 100644
index 000000000000..4bb913500bd9
--- /dev/null
+++ b/basebmp/inc/basebmp/colorblendaccessoradapter.hxx
@@ -0,0 +1,151 @@
+/* -*- 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 INCLUDED_BASEBMP_COLORBLENDACCESSORADAPTER_HXX
+#define INCLUDED_BASEBMP_COLORBLENDACCESSORADAPTER_HXX
+
+#include <basebmp/colortraits.hxx>
+
+namespace basebmp
+{
+
+/** Accessor adapter that blends input value against fixed color value
+
+ Used to blend an alpha mask 'through' a fixed color value into the
+ destination.
+
+ The getter functors return a constant value (usually the zero of
+ the value type, this preserves the original destination content
+ when blitting through a mask) - there really isn't no other
+ sensible default behaviour for these methods.
+ */
+template< class WrappedAccessor,
+ typename AlphaType,
+ bool polarity > class ConstantColorBlendSetterAccessorAdapter
+{
+public:
+ typedef AlphaType alpha_type;
+ typedef AlphaType value_type;
+ typedef typename WrappedAccessor::value_type color_type;
+
+private:
+ typename ColorTraits< color_type >::
+ template blend_functor<alpha_type,polarity>::type maFunctor;
+ WrappedAccessor maWrappee;
+ color_type maBlendColor;
+ value_type maGetterValue;
+
+public:
+ ConstantColorBlendSetterAccessorAdapter() :
+ maFunctor(),
+ maWrappee(),
+ maBlendColor(),
+ maGetterValue()
+ {}
+
+ template< class T > explicit ConstantColorBlendSetterAccessorAdapter( T acc ) :
+ maFunctor(),
+ maWrappee(acc),
+ maBlendColor(),
+ maGetterValue()
+ {}
+
+ template< class T > ConstantColorBlendSetterAccessorAdapter( T acc,
+ color_type col ) :
+ maFunctor(),
+ maWrappee(acc),
+ maBlendColor(col),
+ maGetterValue()
+ {}
+
+ template< class T > ConstantColorBlendSetterAccessorAdapter( T acc,
+ color_type col,
+ value_type val ) :
+ maFunctor(),
+ maWrappee(acc),
+ maBlendColor(col),
+ maGetterValue(val)
+ {}
+
+ // -------------------------------------------------------
+
+ void setColor( color_type col ) { maBlendColor=col; }
+ color_type getColor() { return maBlendColor; }
+ void setGetterValue( value_type val ) { maGetterValue=val; }
+ value_type getGetterValue() { return maGetterValue; }
+
+ // -------------------------------------------------------
+
+ WrappedAccessor const& getWrappedAccessor() const { return maWrappee; }
+ WrappedAccessor& getWrappedAccessor() { return maWrappee; }
+
+ // -------------------------------------------------------
+
+ /// @return constant value, regardless of iterator content
+ template< typename IteratorType > value_type operator()(IteratorType const& ) const
+ {
+ return maGetterValue;
+ }
+ /// @return constant value, regardless of iterator content
+ template< typename IteratorType, class Difference >
+ value_type operator()(IteratorType const& , Difference const& ) const
+ {
+ return maGetterValue;
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, typename IteratorType >
+ void set(V const& value, IteratorType const& i) const
+ {
+ maWrappee.set(
+ maFunctor(
+ vigra::detail::RequiresExplicitCast<alpha_type>::cast(value),
+ maWrappee(i),
+ maBlendColor),
+ i );
+ }
+
+ template< typename V, typename IteratorType, class Difference >
+ void set(V const& value, IteratorType const& i, Difference const& diff) const
+ {
+ maWrappee.set(
+ maFunctor(
+ vigra::detail::RequiresExplicitCast<alpha_type>::cast(value),
+ maWrappee(i,diff),
+ maBlendColor),
+ i,
+ diff );
+ }
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_COLORBLENDACCESSORADAPTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/colormisc.hxx b/basebmp/inc/basebmp/colormisc.hxx
new file mode 100644
index 000000000000..96a312c251ae
--- /dev/null
+++ b/basebmp/inc/basebmp/colormisc.hxx
@@ -0,0 +1,194 @@
+/* -*- 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 INCLUDED_BASEBMP_COLORMISC_HXX
+#define INCLUDED_BASEBMP_COLORMISC_HXX
+
+#include <osl/diagnose.h>
+#include <basebmp/color.hxx>
+#include <basebmp/colortraits.hxx>
+#include <basebmp/accessortraits.hxx>
+#include <vigra/mathutil.hxx>
+
+// Contents of this header moved out of color.hxx, as it is not useful
+// for the general public (drags in vigra and other template
+// functionality, that shouldn't be necessary for the ordinary client
+// of BitmapDevice etc.)
+
+namespace basebmp
+{
+
+template< bool polarity > struct ColorBitmaskOutputMaskFunctor;
+template<> struct ColorBitmaskOutputMaskFunctor<true> : MaskFunctorBase<Color,sal_uInt8>
+{
+ Color operator()( Color v1, sal_uInt8 m, Color v2 ) const
+ {
+ OSL_ASSERT(m<=1);
+
+ return Color(v1.toInt32()*(sal_uInt8)(1-m) + v2.toInt32()*m);
+ }
+};
+template<> struct ColorBitmaskOutputMaskFunctor<false> : MaskFunctorBase<Color,sal_uInt8>
+{
+ Color operator()( Color v1, sal_uInt8 m, Color v2 ) const
+ {
+ OSL_ASSERT(m<=1);
+
+ return Color(v1.toInt32()*m + v2.toInt32()*(sal_uInt8)(1-m));
+ }
+};
+
+/// Specialized output mask functor for Color value type
+template<bool polarity> struct outputMaskFunctorSelector< Color, sal_uInt8, polarity, FastMask >
+{
+ typedef ColorBitmaskOutputMaskFunctor<polarity> type;
+};
+
+template< bool polarity > struct ColorBlendFunctor8
+ : public TernaryFunctorBase<sal_uInt8,Color,Color,Color>
+{
+ Color operator()( sal_uInt8 alpha,
+ Color v1,
+ Color v2 ) const
+ {
+ alpha = polarity ? alpha : 255 - alpha;
+
+ const sal_uInt8 v1_red( v1.getRed() );
+ const sal_uInt8 v1_green( v1.getGreen() );
+ const sal_uInt8 v1_blue( v1.getBlue() );
+
+ // using '>> 8' instead of '/ 0x100' is ill-advised (shifted
+ // value might be negative). Better rely on decent optimizer
+ // here...
+ return Color(((((sal_Int32)v2.getRed() - v1_red)*alpha) / 0x100) + v1_red,
+ ((((sal_Int32)v2.getGreen() - v1_green)*alpha) / 0x100) + v1_green,
+ ((((sal_Int32)v2.getBlue() - v1_blue)*alpha) / 0x100) + v1_blue);
+ }
+};
+
+template< bool polarity > struct ColorBlendFunctor32
+ : public TernaryFunctorBase<Color,Color,Color,Color>
+{
+ Color operator()( Color input,
+ Color v1,
+ Color v2 ) const
+ {
+ sal_uInt8 alpha = input.getGreyscale();
+ alpha = polarity ? alpha : 255 - alpha;
+
+ const sal_uInt8 v1_red( v1.getRed() );
+ const sal_uInt8 v1_green( v1.getGreen() );
+ const sal_uInt8 v1_blue( v1.getBlue() );
+
+ // using '>> 8' instead of '/ 0x100' is ill-advised (shifted
+ // value might be negative). Better rely on decent optimizer
+ // here...
+ return Color(((((sal_Int32)v2.getRed() - v1_red)*alpha) / 0x100) + v1_red,
+ ((((sal_Int32)v2.getGreen() - v1_green)*alpha) / 0x100) + v1_green,
+ ((((sal_Int32)v2.getBlue() - v1_blue)*alpha) / 0x100) + v1_blue);
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+template<> struct ColorTraits< Color >
+{
+ /// @return number of color channels
+ static int numChannels() { return 3; }
+
+ /// Type of a color component (i.e. the type of an individual channel)
+ typedef sal_uInt8 component_type;
+
+ /// Metafunction to select blend functor from color and alpha type
+ template< typename AlphaType, bool polarity > struct blend_functor;
+
+ /// Calculate normalized distance between color c1 and c2
+ static inline double distance( const Color& c1,
+ const Color& c2 )
+ {
+ return (c1 - c2).magnitude();
+ }
+
+ static inline component_type toGreyscale( const Color& c )
+ {
+ return c.getGreyscale();
+ }
+
+ static inline Color fromGreyscale( component_type c )
+ {
+ return Color(c,c,c);
+ }
+};
+
+/// The version for plain 8 bit alpha
+template<bool polarity> struct ColorTraits< Color >::blend_functor< sal_uInt8, polarity >
+{
+ typedef ColorBlendFunctor8<polarity> type;
+};
+
+/// The version taking grey value of a Color
+template<bool polarity> struct ColorTraits< Color >::blend_functor< Color, polarity >
+{
+ typedef ColorBlendFunctor32<polarity> type;
+};
+
+} // namespace basebmp
+
+namespace vigra
+{
+
+template<>
+struct NumericTraits<basebmp::Color>
+{
+ typedef basebmp::Color Type;
+ typedef basebmp::Color Promote;
+ typedef basebmp::Color RealPromote;
+ typedef std::complex<basebmp::Color> ComplexPromote;
+ typedef sal_uInt8 ValueType;
+
+ typedef VigraTrueType isIntegral;
+ typedef VigraFalseType isScalar;
+ typedef VigraTrueType isSigned;
+ typedef VigraTrueType isOrdered;
+ typedef VigraFalseType isComplex;
+
+ static Type zero() { return Type(); }
+ static Type one() { return Type(0x01010101); }
+ static Type nonZero() { return Type(0x01010101); }
+
+ static Promote toPromote(const Type& v) { return v; }
+ static RealPromote toRealPromote(const Type& v) { return v; }
+ static Type fromPromote(const Promote& v) { return v; }
+ static Type fromRealPromote(const RealPromote& v) { return v; }
+};
+
+} // namespace vigra
+
+#endif /* INCLUDED_BASEBMP_COLORMISC_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/colortraits.hxx b/basebmp/inc/basebmp/colortraits.hxx
new file mode 100644
index 000000000000..ba6a4cfeee27
--- /dev/null
+++ b/basebmp/inc/basebmp/colortraits.hxx
@@ -0,0 +1,153 @@
+/* -*- 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 INCLUDED_BASEBMP_COLORTRAITS_HXX
+#define INCLUDED_BASEBMP_COLORTRAITS_HXX
+
+#include <basebmp/accessoradapters.hxx>
+#include <basebmp/metafunctions.hxx>
+
+#include <vigra/mathutil.hxx>
+
+namespace basebmp
+{
+
+/** Functor template, to calculate alpha blending between two
+ values. Float case.
+
+ @tpl polarity
+ When true, 0 means fully transparent, and 1 fully opaque. And vice
+ versa.
+ */
+template< typename ValueType,
+ typename AlphaType,
+ bool polarity > struct BlendFunctor;
+template< typename ValueType,
+ typename AlphaType > struct BlendFunctor<ValueType,AlphaType,true>
+ : public TernaryFunctorBase<AlphaType,ValueType,ValueType,ValueType>
+{
+ ValueType operator()( AlphaType alpha,
+ ValueType v1,
+ ValueType v2 ) const
+ {
+ const typename vigra::NumericTraits<AlphaType>::RealPromote fAlpha(
+ vigra::NumericTraits<AlphaType>::toRealPromote(alpha));
+ return (vigra::NumericTraits<AlphaType>::one()-fAlpha)*v1 + fAlpha*v2;
+ }
+};
+template< typename ValueType,
+ typename AlphaType > struct BlendFunctor<ValueType,AlphaType,false>
+ : public TernaryFunctorBase<AlphaType,ValueType,ValueType,ValueType>
+{
+ ValueType operator()( AlphaType alpha,
+ ValueType v1,
+ ValueType v2 ) const
+ {
+ const typename vigra::NumericTraits<AlphaType>::RealPromote fAlpha(
+ vigra::NumericTraits<AlphaType>::toRealPromote(alpha));
+ return fAlpha*v1 + (vigra::NumericTraits<AlphaType>::one()-fAlpha)*v2;
+ }
+};
+
+/** Functor template, to calculate alpha blending between two
+ values. Integer case.
+
+ @tpl polarity
+ When true, 0 means fully transparent, and 1 fully opaque. And vice
+ versa.
+ */
+template< typename ValueType,
+ typename AlphaType,
+ bool polarity > struct IntegerBlendFunctor;
+template< typename ValueType,
+ typename AlphaType > struct IntegerBlendFunctor<ValueType,AlphaType,true>
+ : public TernaryFunctorBase<AlphaType,ValueType,ValueType,ValueType>
+{
+ ValueType operator()( AlphaType alpha,
+ ValueType v1,
+ ValueType v2 ) const
+ {
+ return (vigra::NumericTraits<AlphaType>::toPromote(
+ vigra::NumericTraits<AlphaType>::max()-alpha)*v1 + alpha*v2) /
+ vigra::NumericTraits<AlphaType>::max();
+ }
+};
+template< typename ValueType,
+ typename AlphaType > struct IntegerBlendFunctor<ValueType,AlphaType,false>
+ : public TernaryFunctorBase<AlphaType,ValueType,ValueType,ValueType>
+{
+ ValueType operator()( AlphaType alpha,
+ ValueType v1,
+ ValueType v2 ) const
+ {
+ return (alpha*v1 +
+ vigra::NumericTraits<AlphaType>::toPromote(
+ vigra::NumericTraits<AlphaType>::max()-alpha)*v2) /
+ vigra::NumericTraits<AlphaType>::max();
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+template< typename ColorType > struct ColorTraits
+{
+ /// Metafunction to select blend functor from color and alpha type
+ template< typename AlphaType, bool polarity > struct blend_functor : public
+ ifScalarIntegral< AlphaType,
+ IntegerBlendFunctor< ColorType, AlphaType, polarity >,
+ BlendFunctor< ColorType, AlphaType, polarity > > {};
+
+ /// @return number of color channels
+ static int numChannels() { return 1; }
+
+ /// Type of a color component (i.e. the type of an individual channel)
+ typedef ColorType component_type;
+
+ /// Calculate normalized distance between color c1 and c2
+ static inline vigra::NormTraits<ColorType> distance( ColorType c1,
+ ColorType c2 )
+ {
+ return vigra::norm(c1 - c2);
+ }
+
+ static inline component_type toGreyscale( ColorType c )
+ {
+ return c;
+ }
+
+ static inline ColorType fromGreyscale( component_type c )
+ {
+ return c;
+ }
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_COLORTRAITS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/compositeiterator.hxx b/basebmp/inc/basebmp/compositeiterator.hxx
new file mode 100644
index 000000000000..e64cf0d8c093
--- /dev/null
+++ b/basebmp/inc/basebmp/compositeiterator.hxx
@@ -0,0 +1,370 @@
+/* -*- 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 INCLUDED_BASEBMP_COMPOSITEITERATOR_HXX
+#define INCLUDED_BASEBMP_COMPOSITEITERATOR_HXX
+
+#include <sal/types.h>
+#include <osl/diagnose.h>
+
+#include <basebmp/nonstandarditerator.hxx>
+#include <vigra/tuple.hxx>
+#include <vigra/iteratortraits.hxx>
+
+
+namespace basebmp
+{
+
+namespace detail
+{
+ template< typename T1, typename T2 > class ArithmeticProxy
+ {
+ public:
+ ArithmeticProxy(T1& val1, T2& val2) :
+ mpVal1( &val1 ),
+ mpVal2( &val2 )
+ {}
+
+ void operator++() { ++(*mpVal1); ++(*mpVal2); }
+ void operator++(int) { (*mpVal1)++; (*mpVal2)++; }
+ void operator--() { --(*mpVal1); --(*mpVal2); }
+ void operator--(int) { (*mpVal1)--; (*mpVal2)--; }
+ void operator+=(int d) {*mpVal1+=d; *mpVal2+=d; }
+ void operator-=(int d) {*mpVal1-=d; *mpVal2-=d; }
+
+ bool operator==(ArithmeticProxy const & rhs) const
+ { return *mpVal1==*rhs.mpVal1 && *mpVal2==*rhs.mpVal2; }
+
+ bool operator!=(ArithmeticProxy const & rhs) const
+ { return *mpVal1!=*rhs.mpVal1 || *mpVal2!=*rhs.mpVal2; }
+
+ bool operator<(ArithmeticProxy const & rhs) const
+ { return *mpVal1<*rhs.mpVal1 && *mpVal2<*rhs.mpVal2; }
+
+ bool operator<=(ArithmeticProxy const & rhs) const
+ { return *mpVal1<=*rhs.mpVal1 && *mpVal2<=*rhs.mpVal2; }
+
+ bool operator>(ArithmeticProxy const & rhs) const
+ { return *mpVal1>*rhs.mpVal1 && *mpVal2>*rhs.mpVal2; }
+
+ bool operator>=(ArithmeticProxy const & rhs) const
+ { return *mpVal1>=*rhs.mpVal1 && *mpVal2>=*rhs.mpVal2; }
+
+ int operator-(ArithmeticProxy const & rhs) const
+ { return *mpVal1 - *rhs.mpVal1; }
+
+ private:
+ T1* mpVal1;
+ T2* mpVal2;
+ };
+
+ template< typename Iterator1,
+ typename Iterator2,
+ typename ValueType,
+ typename DifferenceType,
+ typename IteratorCategory,
+ class Derived >
+ class CompositeIteratorBase : public NonStandardIterator
+ {
+ public:
+ typedef Iterator1 iterator1_type;
+ typedef Iterator2 iterator2_type;
+ typedef ValueType value_type;
+ typedef DifferenceType difference_type;
+ typedef IteratorCategory iterator_category;
+
+ protected:
+ iterator1_type maIter1;
+ iterator2_type maIter2;
+
+ private:
+ bool equal(CompositeIteratorBase const & rhs) const
+ {
+ return (maIter1 == rhs.maIter1) && (maIter2 == rhs.maIter2);
+ }
+
+ public:
+ CompositeIteratorBase() :
+ maIter1(),
+ maIter2()
+ {}
+
+ CompositeIteratorBase( const iterator1_type& rIter1, const iterator2_type& rIter2 ) :
+ maIter1( rIter1 ),
+ maIter2( rIter2 )
+ {}
+
+ bool operator==(Derived const & rhs) const
+ {
+ return equal(rhs);
+ }
+
+ bool operator!=(Derived const & rhs) const
+ {
+ return !equal(rhs);
+ }
+
+ difference_type operator-(Derived const & rhs) const
+ {
+ OSL_ASSERT( maIter1 - rhs.maIter1 == maIter2 - rhs.maIter2 );
+ return maIter1 - rhs.maIter1;
+ }
+
+ Derived & operator+=(difference_type const & s)
+ {
+ maIter1 += s;
+ maIter2 += s;
+ return static_cast<Derived&>(*this);
+ }
+
+ Derived & operator-=(difference_type const & s)
+ {
+ maIter1 -= s;
+ maIter2 -= s;
+ return static_cast<Derived&>(*this);
+ }
+
+ Derived operator+(difference_type const & s) const
+ {
+ Derived ret(static_cast<Derived const&>(*this));
+ ret += s;
+ return ret;
+ }
+
+ Derived operator-(difference_type const & s) const
+ {
+ Derived ret(static_cast<Derived const&>(*this));
+ ret -= s;
+ return ret;
+ }
+
+ Derived& operator++()
+ {
+ ++maIter1;
+ ++maIter2;
+ return static_cast<Derived&>(*this);
+ }
+
+ Derived& operator--()
+ {
+ --maIter1;
+ --maIter2;
+ return static_cast<Derived&>(*this);
+ }
+
+ Derived operator++(int)
+ {
+ Derived ret(static_cast<Derived const&>(*this));
+ ++maIter1;
+ ++maIter2;
+ return ret;
+ }
+
+ Derived operator--(int)
+ {
+ Derived ret(static_cast<Derived const&>(*this));
+ --maIter1;
+ --maIter2;
+ return ret;
+ }
+
+ value_type get() const
+ {
+ return value_type(maIter1.get(),
+ maIter2.get());
+ }
+
+ value_type get(difference_type const & d) const
+ {
+ return value_type(maIter1.get(d),
+ maIter2.get(d));
+ }
+
+ void set( value_type v ) const
+ {
+ maIter1.set(v);
+ maIter2.set(v);
+ }
+
+ void set( value_type v, difference_type const & d ) const
+ {
+ maIter1.set(v,d);
+ maIter2.set(v,d);
+ }
+
+ const iterator1_type& first() const { return maIter1; }
+ iterator1_type& first() { return maIter1; }
+
+ const iterator2_type& second() const { return maIter2; }
+ iterator2_type& second() { return maIter2; }
+ };
+}
+
+/** Provide the composition of two 1D image iterators
+
+ Use this template to compose two iterators into one (e.g. image
+ and mask). Operations are transitive, e.g. operator== only returns
+ true, if both wrapped iterator operator== have yielded true.
+
+ Note that both iterators must have compatible difference types. To
+ avoid funny effects, iterator ranges given by a CompositeIterator
+ should consist of wrapped iterators of similar range
+ */
+template< typename Iterator1,
+ typename Iterator2,
+ typename ValueType,
+ typename DifferenceType,
+ typename IteratorCategory >
+class CompositeIterator1D :
+ public detail::CompositeIteratorBase< Iterator1,
+ Iterator2,
+ ValueType,
+ DifferenceType,
+ IteratorCategory,
+ CompositeIterator1D<Iterator1,
+ Iterator2,
+ ValueType,
+ DifferenceType,
+ IteratorCategory> >
+{
+ typedef detail::CompositeIteratorBase< Iterator1,
+ Iterator2,
+ ValueType,
+ DifferenceType,
+ IteratorCategory,
+ CompositeIterator1D<Iterator1,
+ Iterator2,
+ ValueType,
+ DifferenceType,
+ IteratorCategory> > base_type;
+public:
+ CompositeIterator1D() :
+ base_type()
+ {}
+
+ CompositeIterator1D( const Iterator1& rIter1,
+ const Iterator2& rIter2 ) :
+ base_type( rIter1, rIter2 )
+ {}
+};
+
+/** Provide the composition of two 2D image iterators
+
+ Use this template to compose two iterators into one (e.g. image
+ and mask). Operations are transitive, e.g. operator== only returns
+ true, if both wrapped iterator operator== have yielded true.
+
+ Note that both iterators must have compatible difference types. To
+ avoid funny effects, iterator ranges given by a CompositeIterator
+ should consist of wrapped iterators of similar range
+ */
+template< typename Iterator1, typename Iterator2 > class CompositeIterator2D :
+ public detail::CompositeIteratorBase< Iterator1,
+ Iterator2,
+ std::pair<
+ typename vigra::IteratorTraits<Iterator1>::value_type,
+ typename vigra::IteratorTraits<Iterator2>::value_type >,
+ typename vigra::IteratorTraits<Iterator1>::difference_type,
+ typename vigra::IteratorTraits<Iterator1>::iterator_category,
+ CompositeIterator2D<Iterator1, Iterator2> >
+{
+ typedef detail::CompositeIteratorBase< Iterator1,
+ Iterator2,
+ std::pair<
+ typename vigra::IteratorTraits<Iterator1>::value_type,
+ typename vigra::IteratorTraits<Iterator2>::value_type >,
+ typename vigra::IteratorTraits<Iterator1>::difference_type,
+ typename vigra::IteratorTraits<Iterator1>::iterator_category,
+ CompositeIterator2D<Iterator1, Iterator2> > base_type;
+public:
+ typedef CompositeIterator1D< typename Iterator1::row_iterator,
+ typename Iterator2::row_iterator,
+ typename base_type::value_type,
+ int,
+ typename base_type::iterator_category > row_iterator;
+ typedef CompositeIterator1D< typename Iterator1::column_iterator,
+ typename Iterator2::column_iterator,
+ typename base_type::value_type,
+ int,
+ typename base_type::iterator_category > column_iterator;
+
+ typedef detail::ArithmeticProxy< typename Iterator1::MoveX,
+ typename Iterator2::MoveX > MoveX;
+ typedef detail::ArithmeticProxy< typename Iterator1::MoveY,
+ typename Iterator2::MoveY > MoveY;
+
+ MoveX x;
+ MoveY y;
+
+ CompositeIterator2D() :
+ base_type(),
+ x(this->maIter1.x,this->maIter2.x),
+ y(this->maIter1.y,this->maIter2.y)
+ {}
+
+ CompositeIterator2D( const Iterator1& rIter1, const Iterator2& rIter2 ) :
+ base_type( rIter1, rIter2 ),
+ x(this->maIter1.x,this->maIter2.x),
+ y(this->maIter1.y,this->maIter2.y)
+ {}
+
+ CompositeIterator2D( const CompositeIterator2D& rOld ) :
+ base_type(rOld),
+ x(this->maIter1.x,this->maIter2.x),
+ y(this->maIter1.y,this->maIter2.y)
+ {}
+
+ CompositeIterator2D& operator=( const CompositeIterator2D& rNew )
+ {
+ this->maIter1 = rNew.maIter1;
+ this->maIter2 = rNew.maIter2;
+
+ x = MoveX(this->maIter1.x,
+ this->maIter2.x);
+ y = MoveY(this->maIter1.y,
+ this->maIter2.y);
+ }
+
+ row_iterator rowIterator() const
+ {
+ return row_iterator(this->maIter1.rowIterator(),
+ this->maIter2.rowIterator());
+ }
+
+ column_iterator columnIterator() const
+ {
+ return column_iterator(this->maIter1.columnIterator(),
+ this->maIter2.columnIterator());
+ }
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_COMPOSITEITERATOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/debug.hxx b/basebmp/inc/basebmp/debug.hxx
new file mode 100644
index 000000000000..c5660b9a6a74
--- /dev/null
+++ b/basebmp/inc/basebmp/debug.hxx
@@ -0,0 +1,53 @@
+/* -*- 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 INCLUDED_BASEBMP_DEBUG_HXX
+#define INCLUDED_BASEBMP_DEBUG_HXX
+
+#include <iostream>
+#include <boost/shared_ptr.hpp>
+
+namespace basebmp
+{
+ class BitmapDevice;
+
+ /** Dump content of BitmapDevice to given output stream.
+
+ @param rDevice
+ Device whose content should be dumped.
+
+ @param rOutputStream
+ Stream to write output to.
+ */
+ void debugDump( const boost::shared_ptr< BitmapDevice >& rDevice,
+ ::std::ostream& rOutputStream );
+}
+
+#endif /* INCLUDED_BASEBMP_DEBUG_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/drawmodes.hxx b/basebmp/inc/basebmp/drawmodes.hxx
new file mode 100644
index 000000000000..7e59f81b6140
--- /dev/null
+++ b/basebmp/inc/basebmp/drawmodes.hxx
@@ -0,0 +1,58 @@
+/* -*- 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 INCLUDED_BASEBMP_DRAWMODES_HXX
+#define INCLUDED_BASEBMP_DRAWMODES_HXX
+
+/* Definition of Draw modes */
+
+namespace basebmp
+{
+ enum DrawMode
+ {
+ /** Default draw mode, which simply renders pixel in the
+ requested color
+ */
+ DrawMode_PAINT,
+
+ /** XOR draw mode, which XORs each existing pixel value with
+ the new color.
+
+ The result of this XOR operation strongly depends on the
+ underlying pixel format, as it is defined by the bitwise
+ XOR of the (potentially palette-looked-up) color value and
+ the existing pixel content (being it true color or a
+ palette index).
+ */
+ DrawMode_XOR
+ };
+}
+
+#endif /* INCLUDED_BASEBMP_DRAWMODES_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/endian.hxx b/basebmp/inc/basebmp/endian.hxx
new file mode 100644
index 000000000000..03a0dbeb9fbf
--- /dev/null
+++ b/basebmp/inc/basebmp/endian.hxx
@@ -0,0 +1,60 @@
+/* -*- 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 INCLUDED_BASEBMP_ENDIAN_HXX
+#define INCLUDED_BASEBMP_ENDIAN_HXX
+
+#include <osl/endian.h>
+
+namespace basebmp
+{
+
+/// Swap the order of bytes for the given POD type
+template< typename T > inline T byteSwap( T );
+
+#define BASEBMP_BYTE_SWAP(Type,SwapFunc) \
+ template<> inline Type byteSwap<Type>( Type v ) \
+ { \
+ return SwapFunc(v); \
+ }
+
+// byteSwap<T> shall fail for any type T not in the list below
+BASEBMP_BYTE_SWAP(sal_Int8,)
+BASEBMP_BYTE_SWAP(sal_uInt8,)
+BASEBMP_BYTE_SWAP(sal_Int16,OSL_SWAPWORD)
+BASEBMP_BYTE_SWAP(sal_uInt16,OSL_SWAPWORD)
+BASEBMP_BYTE_SWAP(sal_Int32,OSL_SWAPDWORD)
+BASEBMP_BYTE_SWAP(sal_uInt32,OSL_SWAPDWORD)
+
+#undef BASEBMP_BYTE_SWAP
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_ENDIAN_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/fillimage.hxx b/basebmp/inc/basebmp/fillimage.hxx
new file mode 100644
index 000000000000..d3809ecc0b6e
--- /dev/null
+++ b/basebmp/inc/basebmp/fillimage.hxx
@@ -0,0 +1,72 @@
+/* -*- 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 INCLUDED_BASEBMP_FILLIMAGE_HXX
+#define INCLUDED_BASEBMP_FILLIMAGE_HXX
+
+#include <vigra/tuple.hxx>
+#include <vigra/iteratortraits.hxx>
+
+namespace basebmp
+{
+
+template< class DestIterator, class DestAccessor, typename T >
+void fillImage( DestIterator begin,
+ DestIterator end,
+ DestAccessor ad,
+ T fillVal )
+{
+ const int width ( end.x - begin.x );
+ const int height( end.y - begin.y );
+
+ for( int y=0; y<height; ++y, ++begin.y )
+ {
+ typename vigra::IteratorTraits<DestIterator>::row_iterator
+ rowIter( begin.rowIterator() );
+ const typename vigra::IteratorTraits<DestIterator>::row_iterator
+ rowEnd( rowIter + width );
+
+ // TODO(P2): Provide specialized span fill methods on the
+ // iterator/accessor
+ while( rowIter != rowEnd )
+ ad.set(fillVal, rowIter++);
+ }
+}
+
+template< class DestIterator, class DestAccessor, typename T >
+inline void fillImage( vigra::triple<DestIterator,DestIterator,DestAccessor> const& src,
+ T fillVal )
+{
+ fillImage(src.first,src.second,src.third,fillVal);
+}
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_FILLIMAGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/genericcolorimageaccessor.hxx b/basebmp/inc/basebmp/genericcolorimageaccessor.hxx
new file mode 100644
index 000000000000..2fada3948faf
--- /dev/null
+++ b/basebmp/inc/basebmp/genericcolorimageaccessor.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 INCLUDED_BASEBMP_GENERICCOLORIMAGEACCESSOR_HXX
+#define INCLUDED_BASEBMP_GENERICCOLORIMAGEACCESSOR_HXX
+
+#include <basebmp/color.hxx>
+#include <basebmp/bitmapdevice.hxx>
+
+namespace basebmp
+{
+ /** Access a BitmapDevice generically
+
+ This accessor deals with an opaque BitmapDevice generically,
+ via getPixel()/setPixel() at the published interface.
+ */
+ class GenericColorImageAccessor
+ {
+ BitmapDeviceSharedPtr mpDevice;
+ DrawMode meDrawMode;
+
+ public:
+ typedef Color value_type;
+
+ explicit GenericColorImageAccessor( BitmapDeviceSharedPtr const& rTarget ) :
+ mpDevice(rTarget),
+ meDrawMode(DrawMode_PAINT)
+ {}
+
+ GenericColorImageAccessor( BitmapDeviceSharedPtr const& rTarget,
+ DrawMode eDrawMode ) :
+ mpDevice(rTarget),
+ meDrawMode(eDrawMode)
+ {}
+
+ template< typename Iterator >
+ Color operator()( Iterator const& i ) const
+ { return mpDevice->getPixel( basegfx::B2IPoint( i->x,i->y ) ); }
+
+ template< typename Iterator, typename Difference >
+ Color operator()( Iterator const& i, Difference const& diff) const
+ { return mpDevice->getPixel( basegfx::B2IPoint( i[diff]->x,
+ i[diff]->y ) ); }
+
+ template< typename Iterator >
+ void set(Color const& value, Iterator const& i) const
+ { return mpDevice->setPixel( basegfx::B2IPoint( i->x,i->y ),
+ value, meDrawMode ); }
+
+ template< class Iterator, class Difference >
+ void set(value_type const& value, Iterator const& i, Difference const& diff) const
+ { return mpDevice->setPixel( basegfx::B2IPoint( i[diff]->x,
+ i[diff]->y ),
+ value, meDrawMode ); }
+ };
+}
+
+#endif /* INCLUDED_BASEBMP_GENERICCOLORIMAGEACCESSOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/greylevelformats.hxx b/basebmp/inc/basebmp/greylevelformats.hxx
new file mode 100644
index 000000000000..111fcc7e12fd
--- /dev/null
+++ b/basebmp/inc/basebmp/greylevelformats.hxx
@@ -0,0 +1,138 @@
+/* -*- 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 INCLUDED_BASEBMP_GREYLEVELFORMATS_HXX
+#define INCLUDED_BASEBMP_GREYLEVELFORMATS_HXX
+
+#include <basebmp/color.hxx>
+#include <basebmp/colortraits.hxx>
+#include <basebmp/accessor.hxx>
+#include <basebmp/pixeliterator.hxx>
+#include <basebmp/packedpixeliterator.hxx>
+#include <basebmp/pixelformatadapters.hxx>
+#include <basebmp/metafunctions.hxx>
+
+#include <vigra/numerictraits.hxx>
+#include <vigra/metaprogramming.hxx>
+
+#include <functional>
+
+namespace basebmp
+{
+
+template< typename PixelType,
+ typename ColorType,
+ int UsedRange > struct GreylevelGetter :
+ public std::unary_function<PixelType, ColorType>
+{
+ ColorType operator()( PixelType const& c ) const
+ {
+ return ColorTraits<ColorType>::fromGreyscale(
+ vigra::NumericTraits<PixelType>::toPromote(c) *
+ vigra::NumericTraits<PixelType>::maxConst / UsedRange );
+ }
+};
+
+template< typename PixelType,
+ typename ColorType,
+ int UsedRange > struct GreylevelSetter :
+ public std::unary_function<ColorType, PixelType>
+{
+ PixelType operator()( ColorType const& c ) const
+ {
+ return vigra::NumericTraits<PixelType>::toPromote(
+ ColorTraits<ColorType>::toGreyscale(c)) *
+ UsedRange /
+ vigra::NumericTraits<PixelType>::maxConst;
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+template< class Iterator,
+ class Accessor,
+ int UsedRange > struct PixelFormatTraitsTemplate_Greylevel
+{
+ typedef typename Iterator::value_type pixel_type;
+
+ typedef GreylevelGetter<pixel_type,
+ Color,
+ UsedRange> getter_type;
+ typedef GreylevelSetter<pixel_type,
+ Color,
+ UsedRange> setter_type;
+
+ typedef Iterator iterator_type;
+ typedef Accessor raw_accessor_type;
+ typedef AccessorSelector<
+ getter_type,
+ setter_type > accessor_selector;
+};
+
+template< int BitsPerPixel,
+ bool MsbFirst > struct PixelFormatTraitsTemplate_PackedGreylevel :
+ public PixelFormatTraitsTemplate_Greylevel<
+ PackedPixelIterator< sal_uInt8,
+ BitsPerPixel,
+ true >,
+ NonStandardAccessor< sal_uInt8 >,
+ (1UL << BitsPerPixel)-1 >
+{};
+
+//-----------------------------------------------------------------------------
+
+// 1bpp MSB
+typedef PixelFormatTraitsTemplate_PackedGreylevel<1, true> PixelFormatTraits_GREY1_MSB;
+
+// 1bpp LSB
+typedef PixelFormatTraitsTemplate_PackedGreylevel<1, false> PixelFormatTraits_GREY1_LSB;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_GREY1_MSB::getter_type,
+ PixelFormatTraits_GREY1_MSB::setter_type);
+
+
+// 4bpp MSB
+typedef PixelFormatTraitsTemplate_PackedGreylevel<4, true> PixelFormatTraits_GREY4_MSB;
+
+// 4bpp LSB
+typedef PixelFormatTraitsTemplate_PackedGreylevel<4, false> PixelFormatTraits_GREY4_LSB;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_GREY4_MSB::getter_type,
+ PixelFormatTraits_GREY4_MSB::setter_type);
+
+// 8bpp
+typedef PixelFormatTraitsTemplate_Greylevel<
+ PixelIterator< sal_uInt8 >,
+ StandardAccessor< sal_uInt8 >,
+ 255 > PixelFormatTraits_GREY8;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_GREY8::getter_type,
+ PixelFormatTraits_GREY8::setter_type);
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_GREYLEVELFORMATS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/iteratortraits.hxx b/basebmp/inc/basebmp/iteratortraits.hxx
new file mode 100644
index 000000000000..ac76a3ebf783
--- /dev/null
+++ b/basebmp/inc/basebmp/iteratortraits.hxx
@@ -0,0 +1,58 @@
+/* -*- 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 INCLUDED_BASEBMP_ITERATORTRAITS_HXX
+#define INCLUDED_BASEBMP_ITERATORTRAITS_HXX
+
+#include <basebmp/accessor.hxx>
+#include <basebmp/nonstandarditerator.hxx>
+
+namespace basebmp
+{
+
+template< class Iterator > struct IteratorTraits
+{
+ /// VigraTrueType, if iterator does not provide *operator()/operator[] methods
+ typedef typename vigra::IsDerivedFrom<Iterator,NonStandardIterator>::result
+ isNonStandardIterator;
+
+ /// Retrieve default accessor for this iterator (and given value type)
+ template< typename ValueType > struct defaultAccessor : public
+ // select according to non-standardness of iterator type
+ vigra::If< isNonStandardIterator,
+ NonStandardAccessor< ValueType >,
+ StandardAccessor< ValueType > >
+ {};
+
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_ITERATORTRAITS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/linerenderer.hxx b/basebmp/inc/basebmp/linerenderer.hxx
new file mode 100644
index 000000000000..5e3d4df30b88
--- /dev/null
+++ b/basebmp/inc/basebmp/linerenderer.hxx
@@ -0,0 +1,184 @@
+/* -*- 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 INCLUDED_BASEBMP_LINERENDERER_HXX
+#define INCLUDED_BASEBMP_LINERENDERER_HXX
+
+#include <basegfx/point/b2ipoint.hxx>
+
+#include <vigra/diff2d.hxx>
+#include <vigra/iteratortraits.hxx>
+
+
+/* Scan-converting lines */
+
+namespace basebmp
+{
+
+/** Render line with Bresenham
+
+ This function renders the line given by rPt1 and rPt2 using the
+ Bresenham algorithm with the specified color value. Make sure rPt1
+ and rPt1 are valid coordinates in the image given by begin and
+ end, since no clipping takes place.
+
+ @param aPt1
+ Start point of the line
+
+ @param aPt2
+ End point of the line
+
+ @param color
+ Color value to render the line with
+
+ @param begin
+ left-top image iterator
+
+ @param end
+ right-bottom image iterator
+
+ @param acc
+ Image accessor
+
+ @param bRoundTowardsPt2
+ Rounding mode to use. Giving false here results in line pixel tend
+ towards pt1, i.e. when a pixel exactly hits the middle between two
+ pixel, the pixel closer to pt1 will be chosen. Giving true here
+ makes renderClippedLine() choose pt2 in those cases.
+ */
+template< class Iterator, class Accessor >
+void renderLine( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ typename Accessor::value_type color,
+ Iterator begin,
+ Accessor acc,
+ bool bRoundTowardsPt2=false )
+{
+ // code inspired by Paul Heckbert's Digital Line Drawing
+ // (Graphics Gems, Academic Press 1990)
+ const sal_Int32 x1 = rPt1.getX();
+ const sal_Int32 x2 = rPt2.getX();
+ const sal_Int32 y1 = rPt1.getY();
+ const sal_Int32 y2 = rPt2.getY();
+
+ // TODO(E1): This might overflow
+ sal_Int32 adx = x2 - x1;
+ int sx = 1;
+ if( adx < 0 )
+ {
+ adx *= -1;
+ sx = -1;
+ }
+
+ // TODO(E1): This might overflow
+ sal_Int32 ady = y2 - y1;
+ int sy = 1;
+ if( ady < 0 )
+ {
+ ady *= -1;
+ sy = -1;
+ }
+
+ // TODO(P3): handle horizontal and vertical lines specially
+ sal_Int32 xs = x1;
+ sal_Int32 ys = y1;
+ if( adx >= ady )
+ {
+ // semi-horizontal line
+ sal_Int32 rem = 2*ady - adx - !bRoundTowardsPt2;
+ adx *= 2;
+ ady *= 2;
+
+ Iterator currIter( begin + vigra::Diff2D(0,ys) );
+ typename vigra::IteratorTraits<Iterator>::row_iterator
+ rowIter( currIter.rowIterator() + xs );
+ while(true)
+ {
+ acc.set(color, rowIter);
+
+ if( xs == x2 )
+ return;
+
+ if( rem >= 0 )
+ {
+ ys += sy;
+ xs += sx;
+ currIter.y += sy;
+ rowIter = currIter.rowIterator() + xs;
+ rem -= adx;
+ }
+ else
+ {
+ xs += sx;
+ rowIter += sx;
+ }
+
+ rem += ady;
+ }
+ }
+ else
+ {
+ // semi-vertical line
+ sal_Int32 rem = 2*adx - ady - !bRoundTowardsPt2;
+ adx *= 2;
+ ady *= 2;
+
+ Iterator currIter( begin + vigra::Diff2D(xs,0) );
+ typename vigra::IteratorTraits<Iterator>::column_iterator
+ colIter( currIter.columnIterator() + ys );
+ while(true)
+ {
+ acc.set(color, colIter);
+
+ if( ys == y2 )
+ return;
+
+ if( rem >= 0 )
+ {
+ xs += sx;
+ ys += sy;
+ currIter.x += sx;
+ colIter = currIter.columnIterator() + ys;
+ rem -= ady;
+ }
+ else
+ {
+ ys += sy;
+ colIter += sy;
+ }
+
+ rem += adx;
+ }
+ }
+}
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_LINERENDERER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/metafunctions.hxx b/basebmp/inc/basebmp/metafunctions.hxx
new file mode 100644
index 000000000000..642a98a70680
--- /dev/null
+++ b/basebmp/inc/basebmp/metafunctions.hxx
@@ -0,0 +1,225 @@
+/* -*- 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 INCLUDED_BASEBMP_METAFUNCTIONS_HXX
+#define INCLUDED_BASEBMP_METAFUNCTIONS_HXX
+
+#include <boost/mpl/integral_c.hpp>
+#include <vigra/metaprogramming.hxx>
+#include <vigra/numerictraits.hxx>
+
+namespace basebmp
+{
+
+// TODO(Q3): move to generic place (o3tl?)
+
+/** template meta function: add const qualifier to 2nd type, if given
+ 1st type has it
+*/
+template<typename A, typename B> struct clone_const
+{
+ typedef B type;
+};
+template<typename A, typename B> struct clone_const<const A,B>
+{
+ typedef const B type;
+};
+
+/** template meta function: add const qualifier to plain type (if not
+ already there)
+ */
+template <typename T> struct add_const
+{
+ typedef const T type;
+};
+template <typename T> struct add_const<const T>
+{
+ typedef const T type;
+};
+
+/// template meta function: remove const qualifier from plain type
+template <typename T> struct remove_const
+{
+ typedef T type;
+};
+template <typename T> struct remove_const<const T>
+{
+ typedef T type;
+};
+
+//--------------------------------------------------------------
+
+/// Base class for an adaptable ternary functor
+template< typename A1, typename A2, typename A3, typename R > struct TernaryFunctorBase
+{
+ typedef A1 first_argument_type;
+ typedef A2 second_argument_type;
+ typedef A3 third_argument_type;
+ typedef R result_type;
+};
+
+//--------------------------------------------------------------
+
+/** template meta function: ensure that given integer type is unsigned
+
+ If given integer type is already unsigned, return as-is -
+ otherwise, convert to unsigned type of same or greater range.
+ */
+template< typename T > struct make_unsigned;
+
+#define BASEBMP_MAKE_UNSIGNED(T,U) \
+ template<> struct make_unsigned<T> { \
+ typedef U type; \
+ };
+
+BASEBMP_MAKE_UNSIGNED(signed char,unsigned char)
+BASEBMP_MAKE_UNSIGNED(unsigned char,unsigned char)
+BASEBMP_MAKE_UNSIGNED(short,unsigned short)
+BASEBMP_MAKE_UNSIGNED(unsigned short,unsigned short)
+BASEBMP_MAKE_UNSIGNED(int,unsigned int)
+BASEBMP_MAKE_UNSIGNED(unsigned int,unsigned int)
+BASEBMP_MAKE_UNSIGNED(long,unsigned long)
+BASEBMP_MAKE_UNSIGNED(unsigned long,unsigned long)
+
+#undef BASEBMP_MAKE_UNSIGNED
+
+/// cast integer to unsigned type of similar size
+template< typename T > inline typename make_unsigned<T>::type unsigned_cast( T value )
+{
+ return static_cast< typename make_unsigned<T>::type >(value);
+}
+
+//--------------------------------------------------------------
+
+/// returns true, if given number is strictly less than 0
+template< typename T > inline bool is_negative( T x )
+{
+ return x < 0;
+}
+
+/// Overload for ints (branch-free)
+inline bool is_negative( int x )
+{
+ // force logic shift (result for signed shift right is undefined)
+ return static_cast<unsigned int>(x) >> (sizeof(int)*8-1);
+}
+
+//--------------------------------------------------------------
+
+/// Results in VigraTrueType, if T is of integer type and scalar
+template< typename T, typename trueCase, typename falseCase >
+struct ifScalarIntegral
+{
+ typedef
+ typename vigra::If<
+ typename vigra::NumericTraits< T >::isIntegral,
+ typename vigra::If<
+ typename vigra::NumericTraits< T >::isScalar,
+ trueCase,
+ falseCase >::type,
+ falseCase >::type type;
+};
+
+/// Results in VigraTrueType, if T is of non-integer type and scalar
+template< typename T, typename trueCase, typename falseCase >
+struct ifScalarNonIntegral
+{
+ typedef
+ typename vigra::If<
+ typename vigra::NumericTraits< T >::isIntegral,
+ falseCase,
+ typename vigra::If<
+ typename vigra::NumericTraits< T >::isScalar,
+ trueCase,
+ falseCase >::type >::type type;
+};
+
+/// Results in VigraTrueType, if both T1 and T2 are of integer type and scalar
+template< typename T1, typename T2, typename trueCase, typename falseCase >
+struct ifBothScalarIntegral
+{
+ typedef
+ typename ifScalarIntegral<
+ T1,
+ typename ifScalarIntegral<
+ T2,
+ trueCase,
+ falseCase >::type,
+ falseCase >::type type;
+};
+
+//--------------------------------------------------------------
+
+/// Count number of trailing zeros
+template< unsigned int val > struct numberOfTrailingZeros
+{
+ enum { next = val >> 1 };
+ enum { value = vigra::IfBool< (val & 1) == 0,
+ numberOfTrailingZeros<next>,
+ boost::mpl::integral_c< int,-1 > > ::type::value + 1 };
+};
+
+template<> struct numberOfTrailingZeros<0>
+{
+ enum { value = 0 };
+};
+
+//--------------------------------------------------------------
+
+/// Count number of one bits
+template< unsigned int val > struct bitcount
+{
+ enum { next = val >> 1 };
+ enum { value = bitcount<next>::value + (val & 1) };
+};
+
+template<> struct bitcount<0>
+{
+ enum { value = 0 };
+};
+
+//--------------------------------------------------------------
+
+/// Shift left for positive shift value, and right otherwise
+template< typename T > inline T shiftLeft( T v, int shift )
+{
+ return shift > 0 ? v << shift : v >> (-shift);
+}
+
+/// Shift right for positive shift value, and left otherwise
+template< typename T > inline T shiftRight( T v, int shift )
+{
+ return shift > 0 ? v >> shift : v << (-shift);
+}
+
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_METAFUNCTIONS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/nonstandarditerator.hxx b/basebmp/inc/basebmp/nonstandarditerator.hxx
new file mode 100644
index 000000000000..090d15d41025
--- /dev/null
+++ b/basebmp/inc/basebmp/nonstandarditerator.hxx
@@ -0,0 +1,48 @@
+/* -*- 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 INCLUDED_BASEBMP_NONSTANDARDITERATOR_HXX
+#define INCLUDED_BASEBMP_NONSTANDARDITERATOR_HXX
+
+#include <vigra/metaprogramming.hxx>
+
+namespace basebmp
+{
+ /// Base class defining pointer and reference types as VigraFalseType
+ struct NonStandardIterator
+ {
+ typedef vigra::VigraFalseType reference;
+ typedef vigra::VigraFalseType index_reference;
+ typedef vigra::VigraFalseType pointer;
+ };
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_NONSTANDARDITERATOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/packedpixeliterator.hxx b/basebmp/inc/basebmp/packedpixeliterator.hxx
new file mode 100644
index 000000000000..b98c8c8f9670
--- /dev/null
+++ b/basebmp/inc/basebmp/packedpixeliterator.hxx
@@ -0,0 +1,680 @@
+/* -*- 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 INCLUDED_BASEBMP_PACKEDPIXELITERATOR_HXX
+#define INCLUDED_BASEBMP_PACKEDPIXELITERATOR_HXX
+
+#include <basebmp/metafunctions.hxx>
+#include <basebmp/stridedarrayiterator.hxx>
+#include <basebmp/nonstandarditerator.hxx>
+#include <basebmp/accessortraits.hxx>
+
+#include <boost/static_assert.hpp>
+#include <vigra/metaprogramming.hxx>
+#include <vigra/diff2d.hxx>
+
+namespace basebmp
+{
+
+/// Get bitmask for data at given intra-word position, for given bit depth
+template< typename value_type,
+ int bits_per_pixel,
+ bool MsbFirst,
+ typename difference_type >
+inline value_type get_mask( difference_type d )
+{
+ BOOST_STATIC_ASSERT(bits_per_pixel > 0);
+ BOOST_STATIC_ASSERT(sizeof(value_type)*8 % bits_per_pixel == 0);
+ BOOST_STATIC_ASSERT(sizeof(value_type)*8 / bits_per_pixel > 1);
+ BOOST_STATIC_ASSERT(vigra::TypeTraits<value_type>::isPOD::asBool);
+
+ const unsigned int nIntraWordPositions( sizeof(value_type)*8 / bits_per_pixel );
+
+ // create bits_per_pixel 1s shift to intra-word position
+ return ((~(~0 << bits_per_pixel)) << bits_per_pixel*(MsbFirst ?
+ (nIntraWordPositions-1 - (d % nIntraWordPositions)) :
+ (d % nIntraWordPositions)));
+}
+
+template< int num_intraword_positions, int bits_per_pixel, bool MsbFirst, typename difference_type > inline difference_type get_shift( difference_type remainder )
+{
+ return bits_per_pixel*(MsbFirst ?
+ (num_intraword_positions - 1 - remainder) :
+ remainder);
+}
+
+template< typename Valuetype,
+ int bits_per_pixel,
+ bool MsbFirst > class PackedPixelColumnIterator : public NonStandardIterator
+{
+public:
+ // no reference, no index_reference type here
+ typedef Valuetype value_type;
+ typedef int difference_type;
+ typedef image_traverser_tag iterator_category;
+
+ typedef typename remove_const<value_type>::type mask_type;
+ typedef value_type* pointer;
+ typedef StridedArrayIterator< value_type > MoveY;
+
+ enum {
+ /** The number of pixel within a single value_type value
+ */
+ num_intraword_positions=sizeof(value_type)*8/bits_per_pixel,
+ /** Bit mask for one pixel (least significant bits)
+ */
+ bit_mask=~(~0 << bits_per_pixel)
+ };
+
+private:
+ MoveY y;
+ mask_type mask_;
+ difference_type shift_;
+
+ void inc()
+ {
+ ++y;
+ }
+
+ void dec()
+ {
+ --y;
+ }
+
+ bool equal( PackedPixelColumnIterator const & rhs ) const
+ {
+ return rhs.y == y;
+ }
+
+ bool less( PackedPixelColumnIterator const & rhs ) const
+ {
+ return y < rhs.y;
+ }
+
+public:
+ PackedPixelColumnIterator() :
+ y(0),
+ mask_( get_mask<value_type, bits_per_pixel, MsbFirst, difference_type>(0) ),
+ shift_( get_shift<num_intraword_positions, bits_per_pixel, MsbFirst, difference_type>(0) )
+ {}
+
+ PackedPixelColumnIterator( const MoveY& base, difference_type remainder ) :
+ y(base),
+ mask_( get_mask<value_type, bits_per_pixel, MsbFirst>(remainder) ),
+ shift_( get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder) )
+ {}
+
+ PackedPixelColumnIterator& operator+=( difference_type d )
+ {
+ y += d;
+ return *this;
+ }
+
+ PackedPixelColumnIterator& operator-=( difference_type d )
+ {
+ y -= d;
+ return *this;
+ }
+
+ PackedPixelColumnIterator operator+( difference_type d )
+ {
+ PackedPixelColumnIterator res(*this);
+ res += d;
+ return res;
+ }
+
+ PackedPixelColumnIterator operator-( difference_type d )
+ {
+ PackedPixelColumnIterator res(*this);
+ res -= d;
+ return res;
+ }
+
+ PackedPixelColumnIterator& operator++()
+ {
+ inc();
+ return *this;
+ }
+
+ PackedPixelColumnIterator& operator--()
+ {
+ dec();
+ return *this;
+ }
+
+ PackedPixelColumnIterator operator++(int)
+ {
+ PackedPixelColumnIterator res(*this);
+ inc();
+ return res;
+ }
+
+ PackedPixelColumnIterator operator--(int)
+ {
+ PackedPixelColumnIterator res(*this);
+ dec();
+ return res;
+ }
+
+ bool operator==(PackedPixelColumnIterator const & rhs) const
+ {
+ return equal( rhs );
+ }
+
+ bool operator!=(PackedPixelColumnIterator const & rhs) const
+ {
+ return !equal( rhs );
+ }
+
+ bool operator<(PackedPixelColumnIterator const & rhs) const
+ {
+ return less(rhs);
+ }
+
+ bool operator<=(PackedPixelColumnIterator const & rhs) const
+ {
+ return !rhs.less(*this);
+ }
+
+ bool operator>(PackedPixelColumnIterator const & rhs) const
+ {
+ return rhs.less(*this);
+ }
+
+ bool operator>=(PackedPixelColumnIterator const & rhs) const
+ {
+ return !less(rhs);
+ }
+
+ difference_type operator-(PackedPixelColumnIterator const & rhs) const
+ {
+ return y - rhs.y;
+ }
+
+ value_type get() const
+ {
+ return unsigned_cast<value_type>(*y() & mask_) >> shift_;
+ }
+
+ value_type get(difference_type d) const
+ {
+ return unsigned_cast<value_type>(*y(d) & mask_) >> shift_;
+ }
+
+ void set( value_type v ) const
+ {
+ const value_type pixel_value( (v << shift_) & mask_ );
+ *y() = (*y() & ~mask_) | pixel_value;
+ }
+
+ void set( value_type v, difference_type d ) const
+ {
+ const value_type pixel_value( (v << shift_) & mask_ );
+ *y(d) = (*y(d) & ~mask_) | pixel_value;
+ }
+};
+
+template< typename Valuetype,
+ int bits_per_pixel,
+ bool MsbFirst > class PackedPixelRowIterator : public NonStandardIterator
+{
+public:
+ // no reference, no index_reference type here
+ typedef Valuetype value_type;
+ typedef int difference_type;
+ typedef image_traverser_tag iterator_category;
+
+ typedef typename remove_const<value_type>::type mask_type;
+ typedef value_type* pointer;
+
+ enum {
+ /** The number of pixel within a single value_type value
+ */
+ num_intraword_positions=sizeof(value_type)*8/bits_per_pixel,
+ /** Bit mask for one pixel (least significant bits)
+ */
+ bit_mask=~(~0 << bits_per_pixel)
+ };
+
+private:
+ pointer data_;
+ mask_type mask_;
+ difference_type remainder_;
+
+ void update_mask()
+ {
+ mask_ = get_mask<value_type, bits_per_pixel, MsbFirst>(remainder_);
+ }
+
+ void inc()
+ {
+ const difference_type newValue( remainder_ + 1 );
+ const difference_type data_offset( newValue / num_intraword_positions );
+
+ data_ += data_offset;
+ remainder_ = newValue % num_intraword_positions;
+
+ const mask_type shifted_mask(
+ MsbFirst ?
+ unsigned_cast<mask_type>(mask_) >> bits_per_pixel :
+ mask_ << bits_per_pixel );
+
+ // data_offset is 0 for shifted mask, and 1 for wrapped-around mask
+ mask_ = (1-data_offset)*shifted_mask + data_offset*(MsbFirst ?
+ bit_mask << bits_per_pixel*(num_intraword_positions-1) :
+ bit_mask);
+ }
+
+ void dec()
+ {
+ const difference_type newValue( remainder_ - 1 );
+ const bool isNegative( is_negative(newValue) );
+ const difference_type newRemainder( newValue % num_intraword_positions );
+
+ // calc data_ += newValue / num_intraword_positions;
+ // remainder_ = newRemainder;
+ // for newValue >= 0, and
+ // data_ += newValue / num_intraword_positions - 1;
+ // remainder_ = num_intraword_positions - newRemainder;
+ // (to force remainder_ to be positive).
+ // This is branch-free, if is_negative() is branch-free
+ const difference_type data_offset( newValue / num_intraword_positions - isNegative );
+ data_ += data_offset;
+ remainder_ = newRemainder + isNegative*num_intraword_positions;
+
+ const mask_type shifted_mask(
+ MsbFirst ?
+ mask_ << bits_per_pixel :
+ unsigned_cast<mask_type>(mask_) >> bits_per_pixel );
+
+ // data_offset is 0 for shifted mask, and 1 for wrapped-around mask
+ mask_ = (1-data_offset)*shifted_mask + data_offset*(MsbFirst ?
+ bit_mask :
+ bit_mask << bits_per_pixel*(num_intraword_positions-1));
+ }
+
+ bool equal( PackedPixelRowIterator const & rhs ) const
+ {
+ return rhs.data_ == data_ && rhs.remainder_ == remainder_;
+ }
+
+ bool less( PackedPixelRowIterator const & rhs ) const
+ {
+ return data_ == rhs.data_ ?
+ (remainder_ < rhs.remainder_) :
+ (data_ < rhs.data_);
+ }
+
+public:
+ PackedPixelRowIterator() :
+ data_(0),
+ mask_( get_mask<value_type, bits_per_pixel, MsbFirst, difference_type>(0) ),
+ remainder_(0)
+ {}
+
+ explicit PackedPixelRowIterator( pointer base, int x ) :
+ data_(base),
+ mask_(0),
+ remainder_(x % num_intraword_positions)
+ {
+ update_mask();
+ }
+
+ PackedPixelRowIterator& operator+=( difference_type d )
+ {
+ const difference_type newValue( remainder_ + d );
+ const bool isNegative( is_negative(newValue) );
+ const difference_type newRemainder( newValue % num_intraword_positions );
+
+ // calc data_ += newValue / num_intraword_positions;
+ // remainder_ = newRemainder;
+ // for newValue >= 0, and
+ // data_ += newValue / num_intraword_positions - 1;
+ // remainder_ = newRemainder + num_intraword_positions;
+ // (to force remainder_ to be positive).
+ // This is branch-free, if is_negative() is branch-free
+ data_ += newValue / num_intraword_positions - isNegative;
+ remainder_ = newRemainder + isNegative*num_intraword_positions;
+ update_mask();
+
+ return *this;
+ }
+
+ PackedPixelRowIterator& operator-=( difference_type d )
+ {
+ // forward to operator+= - which has to cope with negative
+ // values, anyway.
+ return *this += -d;
+ }
+
+ PackedPixelRowIterator operator+( difference_type d )
+ {
+ PackedPixelRowIterator res(*this);
+ res += d;
+ return res;
+ }
+
+ PackedPixelRowIterator operator-( difference_type d )
+ {
+ PackedPixelRowIterator res(*this);
+ res -= d;
+ return res;
+ }
+
+ PackedPixelRowIterator& operator++()
+ {
+ inc();
+ return *this;
+ }
+
+ PackedPixelRowIterator& operator--()
+ {
+ dec();
+ return *this;
+ }
+
+ PackedPixelRowIterator operator++(int)
+ {
+ PackedPixelRowIterator res(*this);
+ inc();
+ return res;
+ }
+
+ PackedPixelRowIterator operator--(int)
+ {
+ PackedPixelRowIterator res(*this);
+ dec();
+ return res;
+ }
+
+ bool operator==(PackedPixelRowIterator const & rhs) const
+ {
+ return equal( rhs );
+ }
+
+ bool operator!=(PackedPixelRowIterator const & rhs) const
+ {
+ return !equal( rhs );
+ }
+
+ bool operator<(PackedPixelRowIterator const & rhs) const
+ {
+ return less(rhs);
+ }
+
+ bool operator<=(PackedPixelRowIterator const & rhs) const
+ {
+ return !rhs.less(*this);
+ }
+
+ bool operator>(PackedPixelRowIterator const & rhs) const
+ {
+ return rhs.less(*this);
+ }
+
+ bool operator>=(PackedPixelRowIterator const & rhs) const
+ {
+ return !less(rhs);
+ }
+
+ difference_type operator-(PackedPixelRowIterator const & rhs) const
+ {
+ return (data_ - rhs.data_)*num_intraword_positions + (remainder_ - rhs.remainder_);
+ }
+
+ value_type get() const
+ {
+ return unsigned_cast<value_type>(*data_ & mask_) >>
+ get_shift<num_intraword_positions,
+ bits_per_pixel,
+ MsbFirst>(remainder_);
+ }
+
+ value_type get(difference_type d) const
+ {
+ PackedPixelRowIterator tmp(*this);
+ tmp += d;
+ return tmp.get();
+ }
+
+ void set( value_type v ) const
+ {
+ const value_type pixel_value(
+ (v <<
+ get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder_))
+ & mask_ );
+ *data_ = (*data_ & ~mask_) | pixel_value;
+ }
+
+ void set( value_type v, difference_type d ) const
+ {
+ PackedPixelRowIterator tmp(*this);
+ tmp += d;
+ tmp.set(v);
+ }
+};
+
+/** 2D image iterator for packed pixel formats
+
+ This iterator can be used for image formats that pack more than
+ one pixel into an machine data type (like one bit per pixel, eight
+ of which packed into one char)
+ */
+template< typename Valuetype,
+ int bits_per_pixel,
+ bool MsbFirst > class PackedPixelIterator : public NonStandardIterator
+{
+public:
+ // no reference, no index_reference type here
+ typedef Valuetype value_type;
+ typedef vigra::Diff2D difference_type;
+ typedef image_traverser_tag iterator_category;
+ typedef PackedPixelRowIterator<value_type,
+ bits_per_pixel,
+ MsbFirst> row_iterator;
+ typedef PackedPixelColumnIterator<value_type,
+ bits_per_pixel,
+ MsbFirst> column_iterator;
+
+ typedef value_type* pointer;
+ typedef int MoveX;
+ typedef StridedArrayIterator< value_type > MoveY;
+
+ enum {
+ /** The number of pixel within a single value_type value
+ */
+ num_intraword_positions=sizeof(value_type)*8/bits_per_pixel,
+ /** Bit mask for one pixel (least significant bits)
+ */
+ bit_mask=~(~0 << bits_per_pixel)
+ };
+
+ // TODO(F2): direction of iteration (ImageIterator can be made to
+ // run backwards)
+
+private:
+ pointer current() const
+ {
+ return y() + (x / num_intraword_positions);
+ }
+
+ pointer current(int dx, int dy) const
+ {
+ return y(dy) + ((x+dx)/num_intraword_positions);
+ }
+
+ bool equal(PackedPixelIterator const & rhs) const
+ {
+ return (x == rhs.x) && (y == rhs.y);
+ }
+
+public:
+ PackedPixelIterator() :
+ x(0),
+ y(0)
+ {}
+
+ PackedPixelIterator(pointer base, int ystride) :
+ x(0),
+ y(ystride,base)
+ {}
+
+ bool operator==(PackedPixelIterator const & rhs) const
+ {
+ return equal(rhs);
+ }
+
+ bool operator!=(PackedPixelIterator const & rhs) const
+ {
+ return !equal(rhs);
+ }
+
+ difference_type operator-(PackedPixelIterator const & rhs) const
+ {
+ return difference_type(x - rhs.x, y - rhs.y);
+ }
+
+ MoveX x;
+ MoveY y;
+
+ PackedPixelIterator & operator+=(difference_type const & s)
+ {
+ x += s.x;
+ y += s.y;
+ return *this;
+ }
+
+ PackedPixelIterator & operator-=(difference_type const & s)
+ {
+ x -= s.x;
+ y -= s.y;
+ return *this;
+ }
+
+ PackedPixelIterator operator+(difference_type const & s) const
+ {
+ PackedPixelIterator ret(*this);
+ ret += s;
+ return ret;
+ }
+
+ PackedPixelIterator operator-(difference_type const & s) const
+ {
+ PackedPixelIterator ret(*this);
+ ret -= s;
+ return ret;
+ }
+
+ row_iterator rowIterator() const
+ {
+ return row_iterator(current(),x);
+ }
+
+ column_iterator columnIterator() const
+ {
+ return column_iterator(MoveY(y,
+ x / num_intraword_positions),
+ x % num_intraword_positions);
+ }
+
+ value_type get() const
+ {
+ const int remainder( x % num_intraword_positions );
+
+ return (unsigned_cast<value_type>(*current() &
+ get_mask<value_type, bits_per_pixel, MsbFirst>(remainder))
+ >> get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder));
+ }
+
+ value_type get(difference_type const & d) const
+ {
+ const int remainder( x(d.x) % num_intraword_positions );
+
+ return (unsigned_cast<value_type>(*current(d.x,d.y) &
+ get_mask<value_type, bits_per_pixel, MsbFirst>(remainder))
+ >> get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder));
+ }
+
+ void set( value_type v ) const
+ {
+ const int remainder( x % num_intraword_positions );
+ const int mask( get_mask<value_type, bits_per_pixel, MsbFirst>(remainder) );
+ const value_type pixel_value(
+ (v <<
+ get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder))
+ & mask );
+ pointer p = current();
+ *p = (*p & ~mask) | pixel_value;
+ }
+
+ void set( value_type v, difference_type const & d ) const
+ {
+ const int remainder( (x + d.x) % num_intraword_positions );
+ const int mask( get_mask<value_type, bits_per_pixel, MsbFirst>(remainder) );
+ const value_type pixel_value(
+ (v <<
+ get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder))
+ & mask );
+ pointer p = current(d.x,d.y);
+ *p = (*p & ~mask) | pixel_value;
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+// partial specialization for the accessor traits masked_accessor
+// selector metafunction - can employ fast mask functor for the 1bpp
+// case.
+template< class Accessor,
+ class MaskAccessor,
+ class Iterator,
+ bool polarity,
+ bool MsbFirst > struct maskedAccessorSelector< Accessor,
+ MaskAccessor,
+ Iterator,
+ PackedPixelIterator< typename MaskAccessor::value_type,
+ 1,
+ MsbFirst >,
+ polarity >
+{
+ typedef TernarySetterFunctionAccessorAdapter<
+ Accessor,
+ MaskAccessor,
+ typename outputMaskFunctorSelector<
+ typename Accessor::value_type,
+ typename MaskAccessor::value_type,
+ polarity,
+ FastMask>::type >
+ type;
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_PACKEDPIXELITERATOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/paletteformats.hxx b/basebmp/inc/basebmp/paletteformats.hxx
new file mode 100644
index 000000000000..f138549462fe
--- /dev/null
+++ b/basebmp/inc/basebmp/paletteformats.hxx
@@ -0,0 +1,150 @@
+/* -*- 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 INCLUDED_BASEBMP_PACKEDPIXELFORMATS_HXX
+#define INCLUDED_BASEBMP_PACKEDPIXELFORMATS_HXX
+
+#include <basebmp/color.hxx>
+#include <basebmp/colortraits.hxx>
+#include <basebmp/accessor.hxx>
+#include <basebmp/pixeliterator.hxx>
+#include <basebmp/packedpixeliterator.hxx>
+#include <basebmp/pixelformatadapters.hxx>
+#include <basebmp/paletteimageaccessor.hxx>
+#include <basebmp/metafunctions.hxx>
+
+#include <vigra/numerictraits.hxx>
+#include <vigra/metaprogramming.hxx>
+
+#include <functional>
+
+namespace basebmp
+{
+
+//-----------------------------------------------------------------------------
+
+/** Lookup index value for given color value in a PaletteImageAccessor
+ */
+template< class Accessor > struct ColorLookup
+{
+ typename Accessor::data_type operator()( const Accessor& acc,
+ typename Accessor::value_type v ) const
+ {
+ return acc.lookup(v);
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+// partial specialization of AccessorTraits for PaletteAccessor
+template< class Accessor, typename ColorType > struct AccessorTraits<
+ PaletteImageAccessor< Accessor, ColorType > >
+{
+ /// value type of described accessor
+ typedef typename PaletteImageAccessor< Accessor, ColorType >::value_type value_type;
+
+ /// Retrieve stand-alone color lookup function for given Accessor type
+ typedef ColorLookup< PaletteImageAccessor< Accessor, ColorType > > color_lookup;
+
+ /// Retrieve raw pixel data accessor for given Accessor type
+ typedef Accessor raw_accessor;
+
+ /** accessor for XOR setter access is disabled, since the results
+ * are usually completely unintended - you'll usually want to
+ * wrap an xor_accessor with a PaletteAccessor, not the other way
+ * around.
+ */
+ typedef vigra::VigraFalseType xor_accessor;
+
+ /** accessor for masked setter access is disabled, since the
+ * results are usually completely unintended - you'll usually
+ * want to wrap a masked_accessor with a PaletteAccessor, not the
+ * other way around.
+ */
+ template< class MaskAccessor,
+ class Iterator,
+ class MaskIterator > struct masked_accessor
+ {
+ typedef vigra::VigraFalseType type;
+ };
+};
+
+//-----------------------------------------------------------------------------
+
+template< typename ColorType > struct PaletteAccessorSelector
+{
+ template< class Accessor > struct wrap_accessor
+ {
+ typedef PaletteImageAccessor< Accessor, ColorType > type;
+ };
+};
+
+//-----------------------------------------------------------------------------
+
+template< class Iterator,
+ class Accessor > struct PixelFormatTraitsTemplate_Palette
+{
+ typedef typename Iterator::value_type pixel_type;
+ typedef Iterator iterator_type;
+ typedef Accessor raw_accessor_type;
+ typedef PaletteAccessorSelector<Color> accessor_selector;
+};
+
+template< int BitsPerPixel,
+ bool MsbFirst > struct PixelFormatTraitsTemplate_PackedPalette :
+ public PixelFormatTraitsTemplate_Palette<
+ PackedPixelIterator< sal_uInt8,
+ BitsPerPixel,
+ MsbFirst >,
+ NonStandardAccessor< sal_uInt8 > >
+{};
+
+//-----------------------------------------------------------------------------
+
+// 1bpp MSB
+typedef PixelFormatTraitsTemplate_PackedPalette<1, true> PixelFormatTraits_PAL1_MSB;
+
+// 1bpp LSB
+typedef PixelFormatTraitsTemplate_PackedPalette<1, false> PixelFormatTraits_PAL1_LSB;
+
+// 4bpp MSB
+typedef PixelFormatTraitsTemplate_PackedPalette<4, true> PixelFormatTraits_PAL4_MSB;
+
+// 4bpp LSB
+typedef PixelFormatTraitsTemplate_PackedPalette<4, false> PixelFormatTraits_PAL4_LSB;
+
+// 8bpp
+typedef PixelFormatTraitsTemplate_Palette<
+ PixelIterator< sal_uInt8 >,
+ StandardAccessor< sal_uInt8 > > PixelFormatTraits_PAL8;
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_PACKEDPIXELFORMATS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/paletteimageaccessor.hxx b/basebmp/inc/basebmp/paletteimageaccessor.hxx
new file mode 100644
index 000000000000..35a14d16dd36
--- /dev/null
+++ b/basebmp/inc/basebmp/paletteimageaccessor.hxx
@@ -0,0 +1,171 @@
+/* -*- 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 INCLUDED_BASEBMP_PALETTEIMAGEACCESSOR_HXX
+#define INCLUDED_BASEBMP_PALETTEIMAGEACCESSOR_HXX
+
+#include <basebmp/colortraits.hxx>
+#include <basebmp/accessortraits.hxx>
+
+#include <vigra/numerictraits.hxx>
+#include <vigra/metaprogramming.hxx>
+
+#include <algorithm>
+#include <functional>
+
+namespace basebmp
+{
+
+/** Access pixel data via palette indirection
+
+ @tpl Accessor
+ Raw accessor, to be used to actually access the pixel values
+
+ @tpl ColorType
+ The color value type to use - e.g. the palette is an array of that
+ type
+ */
+template< class Accessor, typename ColorType > class PaletteImageAccessor
+{
+public:
+ typedef typename Accessor::value_type data_type;
+ typedef ColorType value_type;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// making all members public, if no member template friends
+private:
+ template<class A, typename C> friend class PaletteImageAccessor;
+#endif
+
+ Accessor maAccessor;
+ const value_type* mpPalette;
+ std::size_t mnNumEntries;
+
+public:
+ PaletteImageAccessor() :
+ maAccessor(),
+ mpPalette(0),
+ mnNumEntries(0)
+ {}
+
+ template< class A > explicit
+ PaletteImageAccessor( PaletteImageAccessor<A,ColorType> const& rSrc ) :
+ maAccessor( rSrc.maAccessor ),
+ mpPalette( rSrc.mpPalette ),
+ mnNumEntries( rSrc.mnNumEntries )
+ {}
+
+ PaletteImageAccessor( const value_type* pPalette,
+ std::size_t numEntries ) :
+ maAccessor(),
+ mpPalette(pPalette),
+ mnNumEntries(numEntries)
+ {}
+
+ template< class T > PaletteImageAccessor( T accessor,
+ const value_type* pPalette,
+ std::size_t numEntries ) :
+ maAccessor(accessor),
+ mpPalette(pPalette),
+ mnNumEntries(numEntries)
+ {}
+
+ // -------------------------------------------------------
+
+ Accessor const& getWrappedAccessor() const { return maAccessor; }
+ Accessor& getWrappedAccessor() { return maAccessor; }
+
+ // -------------------------------------------------------
+
+ data_type lookup(value_type const& v) const
+ {
+ // TODO(P3): use table-based/octree approach here!
+ const value_type* best_entry;
+ const value_type* palette_end( mpPalette+mnNumEntries );
+ if( (best_entry=std::find( mpPalette, palette_end, v)) != palette_end )
+ return best_entry-mpPalette;
+
+ const value_type* curr_entry( mpPalette );
+ best_entry = curr_entry;
+ while( curr_entry != palette_end )
+ {
+ if( ColorTraits<value_type>::distance(*curr_entry,
+ *best_entry)
+ > ColorTraits<value_type>::distance(*curr_entry,
+ v) )
+ {
+ best_entry = curr_entry;
+ }
+
+ ++curr_entry;
+ }
+
+ return best_entry-mpPalette;
+ }
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return mpPalette[ maAccessor(i) ];
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return mpPalette[ maAccessor(i,diff) ];
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ maAccessor.set(
+ lookup(
+ vigra::detail::RequiresExplicitCast<value_type>::cast(value) ),
+ i );
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ maAccessor.set(
+ lookup(
+ vigra::detail::RequiresExplicitCast<value_type>::cast(value) ),
+ i,
+ diff );
+ }
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_PALETTEIMAGEACCESSOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/pixelformatadapters.hxx b/basebmp/inc/basebmp/pixelformatadapters.hxx
new file mode 100644
index 000000000000..6ebf531fbbb4
--- /dev/null
+++ b/basebmp/inc/basebmp/pixelformatadapters.hxx
@@ -0,0 +1,111 @@
+/* -*- 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 INCLUDED_BASEBMP_PIXELFORMATADAPTERS_HXX
+#define INCLUDED_BASEBMP_PIXELFORMATADAPTERS_HXX
+
+#include <basebmp/accessortraits.hxx>
+#include <basebmp/accessoradapters.hxx>
+
+#include <vigra/metaprogramming.hxx>
+
+namespace basebmp
+{
+
+// convenience functionality, providing everything necessary for a new
+// pixel format. simply plug in two conversion functors from/to a
+// common color format.
+
+/** Accessor selection metafunction, used to wrap a given accessor
+ with one converting between the pixel and color types
+
+ Use the nested template's typedef type, to retrieve an
+ AccessorAdapter which operates on a pixel value accessor, and
+ provides color values to the outside.
+
+ Nested like this, to avoid template template parameters at other
+ places: an instantiated version of AccessorSelector can be passed
+ to other templates, which in turn can invoke the nested meta
+ function.
+ */
+template< typename Getter,
+ typename Setter > struct AccessorSelector
+{
+ template< typename Accessor > struct wrap_accessor
+ {
+ typedef UnaryFunctionAccessorAdapter< Accessor,
+ Getter,
+ Setter > type;
+ };
+};
+
+//-----------------------------------------------------------------------------
+
+/** Convert color value to pixel data type
+ */
+template< class Accessor, typename DataType > struct ColorConvert
+{
+ DataType operator()( const Accessor& acc,
+ typename Accessor::value_type v ) const
+ {
+ return acc.setter(v);
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+/** Macro generates partial specialization for color-conversion
+ UnaryFunctionAccessorAdapter, and the given getter/setter functors
+ */
+#define BASEBMP_SPECIALIZE_ACCESSORTRAITS(Getter,Setter) \
+template< class Accessor > struct AccessorTraits< \
+ UnaryFunctionAccessorAdapter< Accessor, \
+ Getter, \
+ Setter > > \
+{ \
+ typedef typename Accessor::value_type data_type; \
+ typedef UnaryFunctionAccessorAdapter< \
+ Accessor, \
+ Getter, \
+ Setter > accessor_type; \
+ typedef typename accessor_type::value_type value_type; \
+ typedef ColorConvert< accessor_type, \
+ data_type > color_lookup; \
+ typedef Accessor raw_accessor; \
+ typedef vigra::VigraFalseType xor_accessor; \
+ template< class MaskAccessor, \
+ class Iterator, \
+ class MaskIterator > struct masked_accessor\
+ { typedef vigra::VigraFalseType type; }; \
+}
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_PIXELFORMATADAPTERS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/pixeliterator.hxx b/basebmp/inc/basebmp/pixeliterator.hxx
new file mode 100644
index 000000000000..6e5ca4394a01
--- /dev/null
+++ b/basebmp/inc/basebmp/pixeliterator.hxx
@@ -0,0 +1,358 @@
+/* -*- 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 INCLUDED_BASEBMP_PIXELITERATOR_HXX
+#define INCLUDED_BASEBMP_PIXELITERATOR_HXX
+
+#include <basebmp/metafunctions.hxx>
+#include <basebmp/stridedarrayiterator.hxx>
+
+#include <vigra/metaprogramming.hxx>
+#include <vigra/diff2d.hxx>
+
+namespace basebmp
+{
+
+template< typename Valuetype > class PixelColumnIterator
+{
+public:
+ typedef Valuetype value_type;
+ typedef Valuetype& reference;
+ typedef reference index_reference;
+ typedef Valuetype* pointer;
+ typedef int difference_type;
+ typedef image_traverser_tag iterator_category;
+
+ typedef StridedArrayIterator< value_type > MoveY;
+
+private:
+ MoveY y;
+
+ bool equal( PixelColumnIterator const & rhs ) const
+ {
+ return rhs.y == y;
+ }
+
+ bool less( PixelColumnIterator const & rhs ) const
+ {
+ return y < rhs.y;
+ }
+
+public:
+ PixelColumnIterator() :
+ y(0)
+ {}
+
+ explicit PixelColumnIterator( const MoveY& pos ) :
+ y(pos)
+ {}
+
+ PixelColumnIterator( const MoveY& pos, int x ) :
+ y(pos,x)
+ {}
+
+ PixelColumnIterator& operator+=( difference_type d )
+ {
+ y += d;
+ return *this;
+ }
+
+ PixelColumnIterator& operator-=( difference_type d )
+ {
+ y -= d;
+ return *this;
+ }
+
+ PixelColumnIterator operator+( difference_type d )
+ {
+ PixelColumnIterator res(*this);
+ res += d;
+ return res;
+ }
+
+ PixelColumnIterator operator-( difference_type d )
+ {
+ PixelColumnIterator res(*this);
+ res -= d;
+ return res;
+ }
+
+ PixelColumnIterator& operator++()
+ {
+ ++y;
+ return *this;
+ }
+
+ PixelColumnIterator& operator--()
+ {
+ --y;
+ return *this;
+ }
+
+ PixelColumnIterator operator++(int)
+ {
+ PixelColumnIterator res(*this);
+ ++y;
+ return res;
+ }
+
+ PixelColumnIterator operator--(int)
+ {
+ PixelColumnIterator res(*this);
+ --y;
+ return res;
+ }
+
+ bool operator==(PixelColumnIterator const & rhs) const
+ {
+ return equal( rhs );
+ }
+
+ bool operator!=(PixelColumnIterator const & rhs) const
+ {
+ return !equal( rhs );
+ }
+
+ bool operator<(PixelColumnIterator const & rhs) const
+ {
+ return less(rhs);
+ }
+
+ bool operator<=(PixelColumnIterator const & rhs) const
+ {
+ return !rhs.less(*this);
+ }
+
+ bool operator>(PixelColumnIterator const & rhs) const
+ {
+ return rhs.less(*this);
+ }
+
+ bool operator>=(PixelColumnIterator const & rhs) const
+ {
+ return !less(rhs);
+ }
+
+ difference_type operator-(PixelColumnIterator const & rhs) const
+ {
+ return y - rhs.y;
+ }
+
+ value_type get() const
+ {
+ return *y();
+ }
+
+ value_type get(difference_type d) const
+ {
+ return *y(d);
+ }
+
+ void set( value_type v ) const
+ {
+ *y() = v;
+ }
+
+ void set( value_type v, difference_type d ) const
+ {
+ *y(d) = v;
+ }
+
+ reference operator*() const
+ {
+ return *y();
+ }
+
+ pointer operator->() const
+ {
+ return y();
+ }
+
+ reference operator[](difference_type d) const
+ {
+ return *y(d);
+ }
+
+ reference operator()(int dy) const
+ {
+ return *y(dy);
+ }
+};
+
+template< typename Valuetype > class PixelIterator
+{
+public:
+ typedef Valuetype value_type;
+ typedef Valuetype& reference;
+ typedef reference index_reference;
+ typedef Valuetype* pointer;
+ typedef vigra::Diff2D difference_type;
+ typedef image_traverser_tag iterator_category;
+ typedef pointer row_iterator;
+ typedef PixelColumnIterator<value_type> column_iterator;
+
+ typedef int MoveX;
+ typedef StridedArrayIterator< value_type > MoveY;
+
+ // TODO(F2): direction of iteration (ImageIterator can be made to
+ // run backwards)
+
+private:
+ bool equal(PixelIterator const & rhs) const
+ {
+ return (x == rhs.x) && (y == rhs.y);
+ }
+
+ pointer current() const
+ {
+ return y() + x;
+ }
+
+ pointer current(int dx, int dy) const
+ {
+ return y(dy) + x+dx;
+ }
+
+public:
+ PixelIterator() :
+ x(0),
+ y(0)
+ {}
+
+ PixelIterator(pointer base, int ystride) :
+ x(0),
+ y(ystride,base)
+ {}
+
+ bool operator==(PixelIterator const & rhs) const
+ {
+ return equal(rhs);
+ }
+
+ bool operator!=(PixelIterator const & rhs) const
+ {
+ return !equal(rhs);
+ }
+
+ difference_type operator-(PixelIterator const & rhs) const
+ {
+ return difference_type(x - rhs.x, y - rhs.y);
+ }
+
+ MoveX x;
+ MoveY y;
+
+ PixelIterator & operator+=(difference_type const & s)
+ {
+ x += s.x;
+ y += s.y;
+ return *this;
+ }
+
+ PixelIterator & operator-=(difference_type const & s)
+ {
+ x -= s.x;
+ y -= s.y;
+ return *this;
+ }
+
+ PixelIterator operator+(difference_type const & s) const
+ {
+ PixelIterator ret(*this);
+ ret += s;
+ return ret;
+ }
+
+ PixelIterator operator-(difference_type const & s) const
+ {
+ PixelIterator ret(*this);
+ ret -= s;
+ return ret;
+ }
+
+ row_iterator rowIterator() const
+ {
+ return row_iterator(y()+x);
+ }
+
+ column_iterator columnIterator() const
+ {
+ return column_iterator(y,x);
+ }
+
+ value_type get() const
+ {
+ return *current();
+ }
+
+ value_type get(difference_type const & d) const
+ {
+ return *current(d.y, d.x);
+ }
+
+ void set( value_type v ) const
+ {
+ *current() = v;
+ }
+
+ void set( value_type v, difference_type const & d ) const
+ {
+ *current(d.y,d.x) = v;
+ }
+
+ reference operator*() const
+ {
+ return *current();
+ }
+
+ pointer operator->() const
+ {
+ return current();
+ }
+
+ reference operator[]( const vigra::Diff2D& d ) const
+ {
+ return *current(d.x,d.y);
+ }
+
+ reference operator()(int dx, int dy) const
+ {
+ return *current(dx,dy);
+ }
+
+ pointer operator[](int dy) const
+ {
+ return y(dy) + x;
+ }
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_PIXELITERATOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/polypolygonrenderer.hxx b/basebmp/inc/basebmp/polypolygonrenderer.hxx
new file mode 100644
index 000000000000..6a7c391f31d0
--- /dev/null
+++ b/basebmp/inc/basebmp/polypolygonrenderer.hxx
@@ -0,0 +1,369 @@
+/* -*- 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 INCLUDED_BASEBMP_POLYPOLYGONRENDERER_HXX
+#define INCLUDED_BASEBMP_POLYPOLYGONRENDERER_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygonfillrule.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+#include <vigra/diff2d.hxx>
+#include <vigra/iteratortraits.hxx>
+
+#include <vector>
+
+
+namespace basebmp
+{
+ namespace detail
+ {
+ /// convert int32 to 32:32 fixed point
+ inline sal_Int64 toFractional( sal_Int32 v ) { return (sal_Int64)v << 32; }
+ /// convert double to 32:32 fixed point
+ inline sal_Int64 toFractional( double v ) { return (sal_Int64)(v*SAL_MAX_UINT32 + (v < 0.0 ? -0.5 : 0.5 )); }
+ /// convert 32:32 fixed point to int32 (truncate)
+ inline sal_Int32 toInteger( sal_Int64 v ) { return (sal_Int32)(v < 0 ? ~((~v) >> 32) : v >> 32); }
+ /// convert 32:32 fixed point to int32 (properly rounded)
+ inline sal_Int32 toRoundedInteger( sal_Int64 v ) { return toInteger(v) + (sal_Int32)((v&0x80000000) >> 31); }
+
+ /** internal vertex store -
+
+ Different from B2DPoint, since we don't need floating
+ point coords, but orientation of vertex and y counter
+ */
+ struct Vertex
+ {
+ sal_Int32 mnYCounter;
+ sal_Int64 mnX;
+ sal_Int64 mnXDelta;
+
+ bool mbDownwards; // needed for nonzero winding rule
+ // fills
+
+ Vertex() :
+ mnYCounter(0),
+ mnX(0),
+ mnXDelta(0),
+ mbDownwards(true)
+ {}
+ Vertex( basegfx::B2DPoint const& rPt1,
+ basegfx::B2DPoint const& rPt2,
+ bool bDownwards ) :
+ mnYCounter( basegfx::fround(rPt2.getY()) -
+ basegfx::fround(rPt1.getY()) ),
+ mnX( toFractional( basegfx::fround(rPt1.getX()) )),
+ mnXDelta( toFractional(
+ ((rPt2.getX() - rPt1.getX()) /
+ (double)mnYCounter) )),
+ mbDownwards(bDownwards)
+ {}
+ };
+
+ typedef std::vector< std::vector<Vertex> > VectorOfVectorOfVertices;
+ typedef std::vector< Vertex* > VectorOfVertexPtr;
+
+ /// non-templated setup of GET
+ sal_uInt32 setupGlobalEdgeTable( VectorOfVectorOfVertices& rGET,
+ basegfx::B2DPolyPolygon const& rPoly,
+ sal_Int32 nMinY );
+ /// sort rAETSrc, copy not-yet-ended edges over to rAETDest
+ void sortAET( VectorOfVertexPtr& rAETSrc,
+ VectorOfVertexPtr& rAETDest );
+
+ /// For the STL algorithms
+ struct RasterConvertVertexComparator
+ {
+ RasterConvertVertexComparator() {}
+
+ bool operator()( const Vertex& rLHS,
+ const Vertex& rRHS ) const
+ {
+ return rLHS.mnX < rRHS.mnX;
+ }
+
+ bool operator()( const Vertex* pLHS,
+ const Vertex* pRHS ) const
+ {
+ return pLHS->mnX < pRHS->mnX;
+ }
+ };
+
+ } // namespace detail
+
+
+ /** Raster-convert a poly-polygon.
+
+ This algorithm does not perform antialiasing, and thus
+ internally works with integer vertex coordinates.
+
+ @param begin
+ Left, top edge of the destination bitmap. This position is
+ considered (0,0) relative to all polygon vertices
+
+ @param ad
+ Accessor to set pixel values
+
+ @param fillColor
+ Color to use for filling
+
+ @param rClipRect
+ Clipping rectangle, relative to the begin iterator. No pixel outside
+ this clip rect will be modified.
+
+ @param rPoly
+ Polygon to fill
+ */
+ template< class DestIterator, class DestAccessor, typename T >
+ void renderClippedPolyPolygon( DestIterator begin,
+ DestAccessor ad,
+ T fillColor,
+ const basegfx::B2IRange& rClipRect,
+ basegfx::B2DPolyPolygon const& rPoly,
+ basegfx::FillRule eFillRule )
+ {
+ const sal_Int32 nClipX1( std::max((sal_Int32)0,rClipRect.getMinX()) );
+ const sal_Int32 nClipX2( rClipRect.getMaxX() );
+ const sal_Int32 nClipY1( std::max((sal_Int32)0,rClipRect.getMinY()) );
+ const sal_Int32 nClipY2( rClipRect.getMaxY() );
+ const sal_Int64 nClipX1_frac( detail::toFractional(nClipX1) );
+ const sal_Int64 nClipX2_frac( detail::toFractional(nClipX2) );
+
+ basegfx::B2DRange const aPolyBounds( basegfx::tools::getRange(rPoly) );
+
+ const sal_Int32 nMinY( basegfx::fround(aPolyBounds.getMinY()) );
+ const sal_Int32 nMaxY(
+ std::min(
+ nClipY2-1,
+ basegfx::fround(aPolyBounds.getMaxY())));
+
+ if( nMinY > nMaxY )
+ return; // really, nothing to do then.
+
+ detail::VectorOfVectorOfVertices aGET; // the Global Edge Table
+ aGET.resize( nMaxY - nMinY + 1 );
+
+ sal_uInt32 const nVertexCount(
+ detail::setupGlobalEdgeTable( aGET, rPoly, nMinY ) );
+
+
+ // Perform actual scan conversion
+ //----------------------------------------------------------------------
+
+ if( aGET.empty() )
+ return;
+
+ detail::VectorOfVertexPtr aAET1; // the Active Edge Table
+ detail::VectorOfVertexPtr aAET2;
+ detail::VectorOfVertexPtr* pAET = &aAET1;
+ detail::VectorOfVertexPtr* pAETOther = &aAET2;
+ aAET1.reserve( nVertexCount );
+ aAET2.reserve( nVertexCount );
+
+ // current scanline - initially, points to first scanline
+ // within the clip rect, or to the polygon's first scanline
+ // (whichever is greater)
+ DestIterator aScanline( begin +
+ vigra::Diff2D(
+ 0,
+ std::max(nMinY,
+ nClipY1)) );
+ detail::RasterConvertVertexComparator aComp;
+
+
+ // now process each of the nMaxY - nMinY + 1 scanlines
+ // ------------------------------------------------------------
+
+ for( sal_Int32 y=nMinY; y <= nMaxY; ++y )
+ {
+ if( !aGET[y-nMinY].empty() )
+ {
+ // merge AET with current scanline's new vertices (both
+ // are already correctly sorted)
+ detail::VectorOfVectorOfVertices::value_type::iterator vertex=aGET[y-nMinY].begin();
+ detail::VectorOfVectorOfVertices::value_type::iterator const end=aGET[y-nMinY].end();
+ while( vertex != end )
+ {
+ // find insertion pos by binary search, and put ptr
+ // into active edge vector
+ pAET->insert( std::lower_bound( pAET->begin(),
+ pAET->end(),
+ &(*vertex),
+ aComp ),
+ &(*vertex) );
+
+ ++vertex;
+ }
+ }
+
+ // with less than two active edges, no fill visible
+ if( pAET->size() >= 2 )
+ {
+ typename vigra::IteratorTraits<DestIterator>::row_iterator
+ rowIter( aScanline.rowIterator() );
+
+ // process each span in current scanline, with
+ // even-odd fill rule
+ detail::VectorOfVertexPtr::iterator currVertex( pAET->begin() );
+ detail::VectorOfVertexPtr::iterator const lastVertex( pAET->end()-1 );
+ sal_uInt32 nCrossedEdges(0);
+ sal_Int32 nWindingNumber(0);
+ while( currVertex != lastVertex )
+ {
+ // TODO(P1): might be worth a try to extend the
+ // size()==2 case also to the actual filling
+ // here. YMMV.
+ detail::Vertex& rV1( **currVertex );
+ detail::Vertex const& rV2( **++currVertex );
+
+ nWindingNumber += -1 + 2*rV1.mbDownwards;
+
+ // calc fill status for both rules. might save a
+ // few percent runtime to specialize here...
+ const bool bEvenOddFill(
+ eFillRule == basegfx::FillRule_EVEN_ODD && !(nCrossedEdges & 0x01) );
+ const bool bNonZeroWindingFill(
+ eFillRule == basegfx::FillRule_NONZERO_WINDING_NUMBER && nWindingNumber != 0 );
+
+ // is span visible?
+ if( (bEvenOddFill || bNonZeroWindingFill) &&
+ y >= nClipY1 &&
+ rV1.mnX < nClipX2_frac &&
+ rV2.mnX > nClipX1_frac )
+ {
+ // clip span to horizontal bounds
+ sal_Int32 const nStartX(
+ std::max( nClipX1,
+ std::min( nClipX2-1,
+ detail::toRoundedInteger(rV1.mnX) )));
+ sal_Int32 const nEndX(
+ std::max( nClipX1,
+ std::min( nClipX2,
+ detail::toRoundedInteger(rV2.mnX) )));
+
+ typename vigra::IteratorTraits<DestIterator>::row_iterator
+ currPix( rowIter + nStartX);
+ typename vigra::IteratorTraits<DestIterator>::row_iterator
+ rowEnd( rowIter + nEndX );
+
+ // TODO(P2): Provide specialized span fill methods on the
+ // iterator/accessor
+ while( currPix != rowEnd )
+ ad.set(fillColor, currPix++);
+ }
+
+ // step vertices
+ rV1.mnX += rV1.mnXDelta;
+ --rV1.mnYCounter;
+
+ ++nCrossedEdges;
+ }
+
+ // step vertex also for the last one
+ detail::Vertex& rLastV( **currVertex );
+ rLastV.mnX += rLastV.mnXDelta;
+ --rLastV.mnYCounter;
+
+
+ // prune AET from ended edges, and keep it sorted
+ // ---------------------------------------------------------
+
+ pAETOther->clear();
+ if( pAET->size() == 2 )
+ {
+ // the case of exactly two active edges is both
+ // sufficiently common (all 'simple' polygons have
+ // it), and further more would complicate the
+ // generic case below (which works with a sliding
+ // triple of vertices).
+ if( !aComp(*(*pAET)[0], *(*pAET)[1]) )
+ std::swap(*(*pAET)[0], *(*pAET)[1]);
+
+ if( (*pAET)[0]->mnYCounter > 0 )
+ pAETOther->push_back( (*pAET)[0] );
+ if( (*pAET)[1]->mnYCounter > 0 )
+ pAETOther->push_back( (*pAET)[1] );
+ }
+ else
+ {
+ bool bFallbackTaken(false);
+ currVertex = pAET->begin();
+ detail::VectorOfVertexPtr::iterator prevVertex( currVertex );
+ while( currVertex != lastVertex )
+ {
+ // try to get away with one linear swoop and
+ // simple neighbor swapping. this is an
+ // overwhelmingly common case - polygons with
+ // excessively crisscrossing edges (which on
+ // top of that cross more than one other edge
+ // per scanline) are seldom. And even if we
+ // get such a beast here, this extra loop has
+ // still only linear cost
+ if( aComp(**(currVertex+1),**currVertex) )
+ {
+ std::swap(*currVertex, *(currVertex+1));
+
+ if( aComp(**currVertex,**prevVertex) )
+ {
+ // one swap was not sufficient -
+ // fallback to generic sort algo, then
+ detail::sortAET(*pAET, *pAETOther);
+ bFallbackTaken = true;
+ break;
+ }
+ }
+
+ if( (*currVertex)->mnYCounter > 0 )
+ pAETOther->push_back( *currVertex );
+
+ prevVertex = currVertex++;
+ }
+
+ // don't forget to add last vertex (loop above
+ // only deals with n-1 vertices)
+ if( !bFallbackTaken && (*currVertex)->mnYCounter > 0 )
+ pAETOther->push_back( *currVertex );
+ }
+
+ std::swap( pAET, pAETOther );
+ }
+
+ if( y >= nClipY1 )
+ ++aScanline.y;
+ }
+ }
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_POLYPOLYGONRENDERER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/rgb24pixelformats.hxx b/basebmp/inc/basebmp/rgb24pixelformats.hxx
new file mode 100644
index 000000000000..91d374efd7e9
--- /dev/null
+++ b/basebmp/inc/basebmp/rgb24pixelformats.hxx
@@ -0,0 +1,101 @@
+/* -*- 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 INCLUDED_BASEBMP_RGB24PIXELFORMATS_HXX
+#define INCLUDED_BASEBMP_RGB24PIXELFORMATS_HXX
+
+#include <basebmp/color.hxx>
+#include <basebmp/accessor.hxx>
+#include <basebmp/pixeliterator.hxx>
+#include <basebmp/pixelformatadapters.hxx>
+
+#include <vigra/rgbvalue.hxx>
+
+#include <functional>
+
+namespace basebmp
+{
+
+template< typename PixelType, typename ColorType > struct RGBValueGetter :
+ public std::unary_function<PixelType, ColorType>
+{
+ ColorType operator()( PixelType const& c ) const
+ {
+ return ColorType(c.red(),c.green(),c.blue());
+ }
+};
+
+template< typename PixelType, typename ColorType > struct RGBValueSetter :
+ public std::unary_function<ColorType, PixelType>
+{
+ PixelType operator()( ColorType const& c ) const
+ {
+ PixelType res;
+ res.setRed(c.getRed());
+ res.setGreen(c.getGreen());
+ res.setBlue(c.getBlue());
+ return res;
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+template< typename PixelType > struct PixelFormatTraitsTemplate_RGBValue
+{
+ typedef PixelType pixel_type;
+
+ typedef RGBValueGetter<pixel_type,
+ Color> getter_type;
+ typedef RGBValueSetter<pixel_type,
+ Color> setter_type;
+
+ typedef PixelIterator<pixel_type> iterator_type;
+ typedef StandardAccessor<pixel_type> raw_accessor_type;
+ typedef AccessorSelector<
+ getter_type, setter_type> accessor_selector;
+};
+
+//-----------------------------------------------------------------------------
+
+// 24bpp RGB
+typedef PixelFormatTraitsTemplate_RGBValue<
+ vigra::RGBValue<sal_uInt8> > PixelFormatTraits_RGB24;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_RGB24::getter_type,
+ PixelFormatTraits_RGB24::setter_type);
+
+// 24bpp BGR
+typedef PixelFormatTraitsTemplate_RGBValue<
+ vigra::RGBValue<sal_uInt8,2,1,0> > PixelFormatTraits_BGR24;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_BGR24::getter_type,
+ PixelFormatTraits_BGR24::setter_type);
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_RGB24PIXELFORMATS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/rgbmaskpixelformats.hxx b/basebmp/inc/basebmp/rgbmaskpixelformats.hxx
new file mode 100644
index 000000000000..47f7c2bf6199
--- /dev/null
+++ b/basebmp/inc/basebmp/rgbmaskpixelformats.hxx
@@ -0,0 +1,292 @@
+/* -*- 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 INCLUDED_BASEBMP_RGBMASKPIXELFORMATS_HXX
+#define INCLUDED_BASEBMP_RGBMASKPIXELFORMATS_HXX
+
+#include <basebmp/color.hxx>
+#include <basebmp/colortraits.hxx>
+#include <basebmp/accessor.hxx>
+#include <basebmp/pixeliterator.hxx>
+#include <basebmp/pixelformatadapters.hxx>
+#include <basebmp/metafunctions.hxx>
+#include <basebmp/endian.hxx>
+
+#include <vigra/numerictraits.hxx>
+#include <vigra/metaprogramming.hxx>
+
+#include <functional>
+
+namespace basebmp
+{
+
+/** Base class operating on RGB truecolor mask pixel
+
+ Use this template, if you have an (integer) pixel type, and three
+ bitmasks denoting where the channel bits are.
+
+ @tpl PixelType
+ Input pixel type to operate on
+
+ @tpl ColorType
+ Underlying color type, to convert the pixel values into
+
+ @tpl RedMask
+ Bitmask, to access the red bits in the data type
+
+ @tpl GreenMask
+ Bitmask, to access the green bits in the data type
+
+ @tpl BlueMask
+ Bitmask, to access the blue bits in the data type
+
+ @tpl SwapBytes
+ When true, the final pixel values will be byte-swapped before
+ passed on.
+ */
+template< typename PixelType,
+ typename ColorType,
+ unsigned int RedMask,
+ unsigned int GreenMask,
+ unsigned int BlueMask,
+ bool SwapBytes > struct RGBMaskFunctorBase
+{
+ typedef PixelType pixel_type;
+ typedef ColorType color_type;
+ typedef typename make_unsigned<pixel_type>::type unsigned_pixel_type;
+ typedef typename ColorTraits<ColorType>::component_type component_type;
+
+ // calc corrective shifts for all three channels in advance
+ enum {
+ red_shift = numberOfTrailingZeros<RedMask>::value,
+ green_shift = numberOfTrailingZeros<GreenMask>::value,
+ blue_shift = numberOfTrailingZeros<BlueMask>::value,
+
+ red_bits = bitcount<RedMask>::value,
+ green_bits = bitcount<GreenMask>::value,
+ blue_bits = bitcount<BlueMask>::value
+ };
+};
+
+template< typename PixelType,
+ typename ColorType,
+ unsigned int RedMask,
+ unsigned int GreenMask,
+ unsigned int BlueMask,
+ bool SwapBytes > struct RGBMaskGetter :
+ public RGBMaskFunctorBase<PixelType,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes>,
+ public std::unary_function<PixelType, ColorType>
+{
+ typedef RGBMaskFunctorBase<PixelType,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes> base_type;
+
+ ColorType operator()( PixelType v ) const
+ {
+ v = SwapBytes ? byteSwap(v) : v;
+
+ const typename base_type::unsigned_pixel_type red (v & RedMask);
+ const typename base_type::unsigned_pixel_type green(v & GreenMask);
+ const typename base_type::unsigned_pixel_type blue (v & BlueMask);
+
+ // shift color nibbles to right-aligend position. ORing it
+ // channel value shifted twice the number of channel bits, to
+ // spread the value into the component_type range
+ ColorType res( (shiftRight(red,
+ base_type::red_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ base_type::red_bits)) |
+ (shiftRight(red,
+ base_type::red_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ 2*base_type::red_bits)),
+
+ (shiftRight(green,
+ base_type::green_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ base_type::green_bits)) |
+ (shiftRight(green,
+ base_type::green_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ 2*base_type::green_bits)),
+
+ (shiftRight(blue,
+ base_type::blue_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ base_type::blue_bits)) |
+ (shiftRight(blue,
+ base_type::blue_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ 2*base_type::blue_bits)) );
+ return res;
+ }
+};
+
+template< typename PixelType,
+ typename ColorType,
+ unsigned int RedMask,
+ unsigned int GreenMask,
+ unsigned int BlueMask,
+ bool SwapBytes > struct RGBMaskSetter :
+ public RGBMaskFunctorBase<PixelType,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes>,
+ public std::unary_function<ColorType, PixelType>
+{
+ typedef RGBMaskFunctorBase<PixelType,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes> base_type;
+
+ PixelType operator()( ColorType const& c ) const
+ {
+ const typename base_type::unsigned_pixel_type red (c.getRed());
+ const typename base_type::unsigned_pixel_type green(c.getGreen());
+ const typename base_type::unsigned_pixel_type blue (c.getBlue());
+
+ typename base_type::unsigned_pixel_type res(
+ (shiftLeft(red,
+ base_type::red_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ base_type::red_bits) & RedMask) |
+ (shiftLeft(green,
+ base_type::green_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ base_type::green_bits) & GreenMask) |
+ (shiftLeft(blue,
+ base_type::blue_shift-8*
+ (signed)sizeof(typename base_type::component_type)+
+ base_type::blue_bits) & BlueMask) );
+
+ return SwapBytes ? byteSwap(res) : res;
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+template< typename PixelType,
+ unsigned int RedMask,
+ unsigned int GreenMask,
+ unsigned int BlueMask,
+ bool SwapBytes > struct PixelFormatTraitsTemplate_RGBMask
+{
+ typedef PixelType pixel_type;
+
+ typedef RGBMaskGetter<pixel_type,
+ Color,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes> getter_type;
+ typedef RGBMaskSetter<pixel_type,
+ Color,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes> setter_type;
+
+ typedef PixelIterator<pixel_type> iterator_type;
+ typedef StandardAccessor<pixel_type> raw_accessor_type;
+ typedef AccessorSelector<
+ getter_type, setter_type> accessor_selector;
+};
+
+//-----------------------------------------------------------------------------
+
+#ifdef OSL_LITENDIAN
+# define BASEBMP_TRUECOLORMASK_LSB_SWAP false
+# define BASEBMP_TRUECOLORMASK_MSB_SWAP true
+#else
+# ifdef OSL_BIGENDIAN
+# define BASEBMP_TRUECOLORMASK_LSB_SWAP true
+# define BASEBMP_TRUECOLORMASK_MSB_SWAP false
+# else
+# error Undetermined endianness!
+# endif
+#endif
+
+//-----------------------------------------------------------------------------
+
+// 16bpp MSB RGB
+typedef PixelFormatTraitsTemplate_RGBMask<
+ sal_uInt16,
+ 0xF800,
+ 0x07E0,
+ 0x001F,
+ BASEBMP_TRUECOLORMASK_MSB_SWAP > PixelFormatTraits_RGB16_565_MSB;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_RGB16_565_MSB::getter_type,
+ PixelFormatTraits_RGB16_565_MSB::setter_type);
+
+// 16bpp LSB RGB
+typedef PixelFormatTraitsTemplate_RGBMask<
+ sal_uInt16,
+ 0xF800,
+ 0x07E0,
+ 0x001F,
+ BASEBMP_TRUECOLORMASK_LSB_SWAP > PixelFormatTraits_RGB16_565_LSB;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_RGB16_565_LSB::getter_type,
+ PixelFormatTraits_RGB16_565_LSB::setter_type);
+
+// 32bpp endian-sensitive RGB
+typedef PixelFormatTraitsTemplate_RGBMask<
+ sal_uInt32,
+ 0xFF0000,
+ 0x00FF00,
+ 0x0000FF,
+ BASEBMP_TRUECOLORMASK_LSB_SWAP > PixelFormatTraits_RGB32_888;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_RGB32_888::getter_type,
+ PixelFormatTraits_RGB32_888::setter_type);
+
+// 32bpp endian-sensitive BGR
+typedef PixelFormatTraitsTemplate_RGBMask<
+ sal_uInt32,
+ 0xFF0000,
+ 0x00FF00,
+ 0x0000FF,
+ BASEBMP_TRUECOLORMASK_MSB_SWAP > PixelFormatTraits_BGR32_888;
+BASEBMP_SPECIALIZE_ACCESSORTRAITS(PixelFormatTraits_BGR32_888::getter_type,
+ PixelFormatTraits_BGR32_888::setter_type);
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_RGBMASKPIXELFORMATS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/scaleimage.hxx b/basebmp/inc/basebmp/scaleimage.hxx
new file mode 100644
index 000000000000..a8fd83e2cd94
--- /dev/null
+++ b/basebmp/inc/basebmp/scaleimage.hxx
@@ -0,0 +1,198 @@
+/* -*- 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 INCLUDED_BASEBMP_SCALEIMAGE_HXX
+#define INCLUDED_BASEBMP_SCALEIMAGE_HXX
+
+#include <osl/diagnose.h>
+
+#include <vigra/tuple.hxx>
+#include <vigra/copyimage.hxx>
+#include <vigra/basicimage.hxx>
+#include <vigra/iteratortraits.hxx>
+
+namespace basebmp
+{
+
+template< class SourceIter, class SourceAcc,
+ class DestIter, class DestAcc >
+void scaleLine( SourceIter s_begin,
+ SourceIter s_end,
+ SourceAcc s_acc,
+ DestIter d_begin,
+ DestIter d_end,
+ DestAcc d_acc )
+{
+ const int src_width = s_end - s_begin;
+ const int dest_width = d_end - d_begin;
+
+ OSL_ASSERT( src_width > 0 && dest_width > 0 );
+
+ if( src_width >= dest_width )
+ {
+ // shrink
+ int rem = 0;
+ while( s_begin != s_end )
+ {
+ if( rem >= 0 )
+ {
+ d_acc.set( s_acc(s_begin), d_begin );
+
+ rem -= src_width;
+ ++d_begin;
+ }
+
+ rem += dest_width;
+ ++s_begin;
+ }
+ }
+ else
+ {
+ // enlarge
+ int rem = -dest_width;
+ while( d_begin != d_end )
+ {
+ if( rem >= 0 )
+ {
+ rem -= dest_width;
+ ++s_begin;
+ }
+
+ d_acc.set( s_acc(s_begin), d_begin );
+
+ rem += src_width;
+ ++d_begin;
+ }
+ }
+}
+
+/** Scale an image using zero order interpolation (pixel replication)
+
+ Source and destination range must be at least one pixel wide and
+ high.
+
+ @param s_begin
+ Start iterator for source image
+
+ @param s_end
+ End iterator for source image
+
+ @param s_acc
+ Source accessor
+
+ @param d_begin
+ Start iterator for destination image
+
+ @param d_end
+ End iterator for destination image
+
+ @param d_acc
+ Destination accessor
+
+ @param bMustCopy
+ When true, scaleImage always copies source, even when doing 1:1
+ copy
+ */
+template< class SourceIter, class SourceAcc,
+ class DestIter, class DestAcc >
+void scaleImage( SourceIter s_begin,
+ SourceIter s_end,
+ SourceAcc s_acc,
+ DestIter d_begin,
+ DestIter d_end,
+ DestAcc d_acc,
+ bool bMustCopy=false )
+{
+ const int src_width ( s_end.x - s_begin.x );
+ const int src_height( s_end.y - s_begin.y );
+
+ const int dest_width ( d_end.x - d_begin.x );
+ const int dest_height( d_end.y - d_begin.y );
+
+ if( !bMustCopy &&
+ src_width == dest_width &&
+ src_height == dest_height )
+ {
+ // no scaling involved, can simply copy
+ vigra::copyImage( s_begin, s_end, s_acc,
+ d_begin, d_acc );
+ return;
+ }
+
+ typedef vigra::BasicImage<typename SourceAcc::value_type> TmpImage;
+ typedef typename TmpImage::traverser TmpImageIter;
+
+ TmpImage tmp_image(src_width,
+ dest_height);
+ TmpImageIter t_begin = tmp_image.upperLeft();
+
+ // scale in y direction
+ for( int x=0; x<src_width; ++x, ++s_begin.x, ++t_begin.x )
+ {
+ typename SourceIter::column_iterator s_cbegin = s_begin.columnIterator();
+ typename TmpImageIter::column_iterator t_cbegin = t_begin.columnIterator();
+
+ scaleLine(s_cbegin, s_cbegin+src_height, s_acc,
+ t_cbegin, t_cbegin+dest_height, tmp_image.accessor());
+ }
+
+ t_begin = tmp_image.upperLeft();
+
+ // scale in x direction
+ for( int y=0; y<dest_height; ++y, ++d_begin.y, ++t_begin.y )
+ {
+ typename DestIter::row_iterator d_rbegin = d_begin.rowIterator();
+ typename TmpImageIter::row_iterator t_rbegin = t_begin.rowIterator();
+
+ scaleLine(t_rbegin, t_rbegin+src_width, tmp_image.accessor(),
+ d_rbegin, d_rbegin+dest_width, d_acc);
+ }
+}
+
+/** Scale an image, range tuple version
+
+ @param bMustCopy
+ When true, scaleImage always copies source, even when doing 1:1
+ copy
+ */
+template< class SourceIter, class SourceAcc,
+ class DestIter, class DestAcc >
+inline void scaleImage( vigra::triple<SourceIter,SourceIter,SourceAcc> const& src,
+ vigra::triple<DestIter,DestIter,DestAcc> const& dst,
+ bool bMustCopy=false )
+{
+ scaleImage(src.first,src.second,src.third,
+ dst.first,dst.second,dst.third,
+ bMustCopy);
+}
+
+}
+
+#endif /* INCLUDED_BASEBMP_SCALEIMAGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/scanlineformats.hxx b/basebmp/inc/basebmp/scanlineformats.hxx
new file mode 100644
index 000000000000..ee466f21b5c9
--- /dev/null
+++ b/basebmp/inc/basebmp/scanlineformats.hxx
@@ -0,0 +1,59 @@
+/* -*- 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 INCLUDED_BASEBMP_SCANLINEFORMATS_HXX
+#define INCLUDED_BASEBMP_SCANLINEFORMATS_HXX
+
+#include <sal/types.h>
+
+/* Definition of Scanline formats */
+
+namespace basebmp { namespace Format
+{
+ static const sal_Int32 NONE = 0;
+ static const sal_Int32 ONE_BIT_MSB_GREY = (sal_Int32)0x01;
+ static const sal_Int32 ONE_BIT_LSB_GREY = (sal_Int32)0x02;
+ static const sal_Int32 ONE_BIT_MSB_PAL = (sal_Int32)0x03;
+ static const sal_Int32 ONE_BIT_LSB_PAL = (sal_Int32)0x04;
+ static const sal_Int32 FOUR_BIT_MSB_GREY = (sal_Int32)0x05;
+ static const sal_Int32 FOUR_BIT_LSB_GREY = (sal_Int32)0x06;
+ static const sal_Int32 FOUR_BIT_MSB_PAL = (sal_Int32)0x07;
+ static const sal_Int32 FOUR_BIT_LSB_PAL = (sal_Int32)0x08;
+ static const sal_Int32 EIGHT_BIT_PAL = (sal_Int32)0x09;
+ static const sal_Int32 EIGHT_BIT_GREY = (sal_Int32)0x0A;
+ static const sal_Int32 SIXTEEN_BIT_LSB_TC_MASK = (sal_Int32)0x0B;
+ static const sal_Int32 SIXTEEN_BIT_MSB_TC_MASK = (sal_Int32)0x0C;
+ static const sal_Int32 TWENTYFOUR_BIT_TC_MASK = (sal_Int32)0x0D;
+ static const sal_Int32 THIRTYTWO_BIT_TC_MASK = (sal_Int32)0x0E;
+ static const sal_Int32 THIRTYTWO_BIT_TC_MASK_ARGB = (sal_Int32)0x0F;
+ static const sal_Int32 MAX = (sal_Int32)0x0F;
+} }
+
+#endif /* INCLUDED_BASEBMP_SCANLINEFORMATS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/stridedarrayiterator.hxx b/basebmp/inc/basebmp/stridedarrayiterator.hxx
new file mode 100644
index 000000000000..422269cb70e4
--- /dev/null
+++ b/basebmp/inc/basebmp/stridedarrayiterator.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 INCLUDED_BASEBMP_STRIDEDARRAYITERATOR_HXX
+#define INCLUDED_BASEBMP_STRIDEDARRAYITERATOR_HXX
+
+#include <basebmp/metafunctions.hxx>
+
+namespace basebmp
+{
+
+/** Like vigra::StridedArrayIterator
+
+ Changed semantics re. DirectionSelector<StridedArrayTag>: stride
+ now counts in <em>raw</em> bytes
+
+ Adapts given ptr, in a way that iterator increments move forward
+ in strided steps. Stride can, by the way, also be negative
+ */
+template< typename T > class StridedArrayIterator
+{
+public:
+ typedef typename clone_const<T, unsigned char>::type internal_type;
+
+ /** Create iterator
+
+ @param stride
+
+ Stride in bytes. Given value should better match memory layout
+ of T, as memory gets reinterpret-casted.
+ */
+ explicit StridedArrayIterator(int stride, T* ptr = 0) :
+ stride_(stride),
+ current_(reinterpret_cast<internal_type*>(ptr))
+ {}
+
+ /** Copy from other StridedArrayIterator, plus given offset
+
+ @param offset
+ Offset in bytes
+ */
+ StridedArrayIterator( StridedArrayIterator const& rSrc,
+ int offset ) :
+ stride_(rSrc.stride_),
+ current_(reinterpret_cast<internal_type*>(
+ reinterpret_cast<T*>(rSrc.current_)+offset))
+ {}
+
+ void operator++() {current_ += stride_; }
+ void operator++(int) {current_ += stride_; }
+ void operator--() {current_ -= stride_; }
+ void operator--(int) {current_ -= stride_; }
+ void operator+=(int dy) {current_ += dy*stride_; }
+ void operator-=(int dy) {current_ -= dy*stride_; }
+
+ int operator-(StridedArrayIterator const & rhs) const
+ { return (current_ - rhs.current_) / stride_; }
+
+ bool operator==(StridedArrayIterator const & rhs) const
+ { return current_ == rhs.current_; }
+
+ bool operator!=(StridedArrayIterator const & rhs) const
+ { return current_ != rhs.current_; }
+
+ bool operator<(StridedArrayIterator const & rhs) const
+ { return *this - rhs < 0; }
+
+ bool operator<=(StridedArrayIterator const & rhs) const
+ { return *this - rhs <= 0; }
+
+ bool operator>(StridedArrayIterator const & rhs) const
+ { return *this - rhs > 0; }
+
+ bool operator>=(StridedArrayIterator const & rhs) const
+ { return *this - rhs >= 0; }
+
+ T* operator()() const
+ { return reinterpret_cast<T*>(current_); }
+
+ T* operator()(int d) const
+ { return reinterpret_cast<T*>(current_ + d*stride_); }
+
+private:
+ int stride_;
+ internal_type* current_;
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_STRIDEDARRAYITERATOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/tools.hxx b/basebmp/inc/basebmp/tools.hxx
new file mode 100644
index 000000000000..0b5fcb87a693
--- /dev/null
+++ b/basebmp/inc/basebmp/tools.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 INCLUDED_BASEBMP_TOOLS_HXX
+#define INCLUDED_BASEBMP_TOOLS_HXX
+
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <vigra/tuple.hxx>
+#include <vigra/diff2d.hxx>
+
+namespace basebmp
+{
+ inline vigra::Diff2D topLeft( const basegfx::B2IRange& rRange )
+ { return vigra::Diff2D(rRange.getMinX(),rRange.getMinY()); }
+
+ inline vigra::Diff2D bottomRight( const basegfx::B2IRange& rRange )
+ { return vigra::Diff2D(rRange.getMaxX(),rRange.getMaxY()); }
+
+ template< class Iterator, class Accessor >
+ inline vigra::triple<Iterator,Iterator,Accessor>
+ destIterRange(Iterator const& begin,
+ Accessor const& accessor,
+ const basegfx::B2IRange& rRange)
+ {
+ return vigra::triple<Iterator,Iterator,Accessor>(
+ begin + topLeft(rRange),
+ begin + bottomRight(rRange),
+ accessor);
+ }
+
+ template< class Iterator, class Accessor >
+ inline vigra::triple<Iterator,Iterator,Accessor>
+ srcIterRange(Iterator const& begin,
+ Accessor const& accessor,
+ const basegfx::B2IRange& rRange)
+ {
+ return vigra::triple<Iterator,Iterator,Accessor>(
+ begin + topLeft(rRange),
+ begin + bottomRight(rRange),
+ accessor);
+ }
+
+ template< class Iterator, class Accessor >
+ inline vigra::pair<Iterator,Accessor>
+ srcIter(Iterator const& begin,
+ Accessor const& accessor,
+ const basegfx::B2IPoint& rPt)
+ {
+ return vigra::pair<Iterator,Accessor>(
+ begin + vigra::Diff2D(rPt.getX(),rPt.getY()),
+ accessor);
+ }
+
+ template< class Iterator, class Accessor >
+ inline vigra::pair<Iterator,Accessor>
+ destIter(Iterator const& begin,
+ Accessor const& accessor,
+ const basegfx::B2IPoint& rPt)
+ {
+ return vigra::pair<Iterator,Accessor>(
+ begin + vigra::Diff2D(rPt.getX(),rPt.getY()),
+ accessor);
+ }
+}
+
+#endif /* INCLUDED_BASEBMP_TOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/inc/basebmp/truecolormaskaccessor.hxx b/basebmp/inc/basebmp/truecolormaskaccessor.hxx
new file mode 100644
index 000000000000..79693a7b0ebb
--- /dev/null
+++ b/basebmp/inc/basebmp/truecolormaskaccessor.hxx
@@ -0,0 +1,293 @@
+/* -*- 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 INCLUDED_BASEBMP_TRUECOLORMASKACCESSOR_HXX
+#define INCLUDED_BASEBMP_TRUECOLORMASKACCESSOR_HXX
+
+#include <basebmp/colortraits.hxx>
+#include <basebmp/accessortraits.hxx>
+#include <basebmp/metafunctions.hxx>
+#include <basebmp/endian.hxx>
+
+#include <vigra/numerictraits.hxx>
+#include <vigra/metaprogramming.hxx>
+
+namespace basebmp
+{
+
+namespace
+{
+ /// Shift left for positive shift value, and right otherwise
+ template< typename T > inline T shiftLeft( T v, int shift )
+ {
+ return shift > 0 ? v << shift : v >> (-shift);
+ }
+
+ /// Shift right for positive shift value, and left otherwise
+ template< typename T > inline T shiftRight( T v, int shift )
+ {
+ return shift > 0 ? v >> shift : v << (-shift);
+ }
+}
+
+/** Access true color data, which is pixel-packed into a POD.
+
+ @tpl Accessor
+ Wrapped accessor, used to access the actual pixel values
+
+ @tpl ColorType
+ Underlying color type, to convert the pixel values into
+
+ @tpl RedMask
+ Bitmask, to access the red bits in the data type
+
+ @tpl GreenMask
+ Bitmask, to access the green bits in the data type
+
+ @tpl BlueMask
+ Bitmask, to access the blue bits in the data type
+
+ @tpl SwapBytes
+ When true, the final pixel values will be byte-swapped before
+ passed to/from the iterator.
+ */
+template< class Accessor,
+ typename ColorType,
+ int RedMask,
+ int GreenMask,
+ int BlueMask,
+ bool SwapBytes > class TrueColorMaskAccessor
+{
+public:
+ typedef typename Accessor::value_type data_type;
+ typedef ColorType value_type;
+ typedef typename make_unsigned<data_type>::type unsigned_data_type;
+ typedef typename ColorTraits<ColorType>::component_type component_type;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// making all members public, if no member template friends
+private:
+ template<class A, typename C, int R, int G, int B, bool S> friend class TrueColorMaskAccessor;
+#endif
+
+ Accessor maAccessor;
+
+public:
+ // calc corrective shifts for all three channels in advance
+ enum {
+ red_shift = numberOfTrailingZeros<RedMask>::value,
+ green_shift = numberOfTrailingZeros<GreenMask>::value,
+ blue_shift = numberOfTrailingZeros<BlueMask>::value,
+
+ red_bits = bitcount<RedMask>::value,
+ green_bits = bitcount<GreenMask>::value,
+ blue_bits = bitcount<BlueMask>::value
+ };
+
+ // -------------------------------------------------------
+
+ TrueColorMaskAccessor() :
+ maAccessor()
+ {}
+
+ template< class A > explicit
+ TrueColorMaskAccessor( TrueColorMaskAccessor< A,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes > const& rSrc ) :
+ maAccessor( rSrc.maAccessor )
+ {}
+
+ template< class T > explicit TrueColorMaskAccessor( T accessor ) :
+ maAccessor(accessor)
+ {}
+
+ // -------------------------------------------------------
+
+ Accessor const& getWrappedAccessor() const { return maAccessor; }
+ Accessor& getWrappedAccessor() { return maAccessor; }
+
+ // -------------------------------------------------------
+
+ value_type toValue( unsigned_data_type v ) const
+ {
+ v = SwapBytes ? byteSwap(v) : v;
+
+ const unsigned_data_type red (v & RedMask);
+ const unsigned_data_type green(v & GreenMask);
+ const unsigned_data_type blue (v & BlueMask);
+
+ value_type res( (shiftRight(red,
+ red_shift-8*sizeof(component_type)+red_bits)) |
+ (shiftRight(red,
+ red_shift-8*sizeof(component_type)+2*red_bits)),
+
+ (shiftRight(green,
+ green_shift-8*sizeof(component_type)+green_bits)) |
+ (shiftRight(green,
+ green_shift-8*sizeof(component_type)+2*green_bits)),
+
+ (shiftRight(blue,
+ blue_shift-8*sizeof(component_type)+blue_bits)) |
+ (shiftRight(blue,
+ blue_shift-8*sizeof(component_type)+2*blue_bits)) );
+ return res;
+ }
+
+ data_type toPacked( value_type v ) const
+ {
+ const unsigned_data_type red (v.getRed());
+ const unsigned_data_type green(v.getGreen());
+ const unsigned_data_type blue (v.getBlue());
+
+ unsigned_data_type res(
+ (shiftLeft(red,
+ red_shift-8*sizeof(component_type)+red_bits) & RedMask) |
+ (shiftLeft(green,
+ green_shift-8*sizeof(component_type)+green_bits) & GreenMask) |
+ (shiftLeft(blue,
+ blue_shift-8*sizeof(component_type)+blue_bits) & BlueMask) );
+
+ return SwapBytes ? byteSwap(res) : res;
+ }
+
+ // -------------------------------------------------------
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const
+ {
+ return toValue(
+ unsigned_cast<data_type>( maAccessor(i)) );
+ }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return toValue(
+ unsigned_cast<data_type>( maAccessor(i,diff)) );
+ }
+
+ // -------------------------------------------------------
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ maAccessor.set(
+ toPacked(
+ vigra::detail::RequiresExplicitCast<value_type>::cast(
+ value) ),
+ i);
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ maAccessor.set(
+ toPacked(
+ vigra::detail::RequiresExplicitCast<value_type>::cast(
+ value)),
+ i,
+ diff );
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+/** Convert Color to packed true color value for TrueColorMaskAccessor
+ */
+template< class Accessor > struct ColorConvert
+{
+ typename Accessor::data_type operator()( const Accessor& acc,
+ typename Accessor::value_type v )
+ {
+ return acc.toPacked(v);
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+// partial specialization for TrueColorMaskAccessor
+template< class Accessor,
+ typename ColorType,
+ int RedMask,
+ int GreenMask,
+ int BlueMask,
+ bool SwapBytes > struct AccessorTraits<
+ TrueColorMaskAccessor< Accessor,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes > >
+{
+ /// value type of described accessor
+ typedef typename TrueColorMaskAccessor< Accessor,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes >::value_type value_type;
+
+ /// Retrieve stand-alone color lookup function for given Accessor type
+ typedef ColorConvert< TrueColorMaskAccessor< Accessor,
+ ColorType,
+ RedMask,
+ GreenMask,
+ BlueMask,
+ SwapBytes > > color_lookup;
+
+ /// Retrieve raw pixel data accessor for given Accessor type
+ typedef Accessor raw_accessor;
+
+ /** accessor for XOR setter access is disabled, since the results
+ * are usually completely unintended - you'll usually want to
+ * wrap an xor_accessor with a TrueColorMaskAccessor, not the
+ * other way around.
+ */
+ typedef vigra::VigraFalseType xor_accessor;
+
+ /** accessor for masked setter access is disabled, since the
+ * results are usually completely unintended - you'll usually
+ * want to wrap a masked_accessor with a TrueColorMaskAccessor,
+ * not the other way around.
+ */
+ template< class MaskAccessor,
+ class Iterator,
+ class MaskIterator > struct masked_accessor
+ {
+ typedef vigra::VigraFalseType type;
+ };
+};
+
+} // namespace basebmp
+
+#endif /* INCLUDED_BASEBMP_TRUECOLORMASKACCESSOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/prj/build.lst b/basebmp/prj/build.lst
new file mode 100644
index 000000000000..b68e8f2eb6fd
--- /dev/null
+++ b/basebmp/prj/build.lst
@@ -0,0 +1,5 @@
+bx basebmp : sal VIGRA:vigra basegfx BOOST:boost NULL
+bx basebmp usr1 - all bx_mkout NULL
+bx basebmp\source nmake - all bx_source NULL
+bx basebmp\util nmake - all bx_util bx_source NULL
+bx basebmp\test nmake - all bx_test bx_util NULL
diff --git a/basebmp/prj/d.lst b/basebmp/prj/d.lst
new file mode 100644
index 000000000000..e94118c72b9d
--- /dev/null
+++ b/basebmp/prj/d.lst
@@ -0,0 +1,9 @@
+..\%__SRC%\lib\ibasebmp.lib %_DEST%\lib%_EXT%\ibasebmp.lib
+
+..\%__SRC%\bin\basebmp?????.dll %_DEST%\bin%_EXT%\basebmp?????.dll
+
+..\%__SRC%\lib\libbasebmp*.* %_DEST%\lib%_EXT%\libbasebmp*.*
+..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
+
+mkdir: %_DEST%\inc%_EXT%\basebmp
+..\inc\basebmp\*.hxx %_DEST%\inc%_EXT%\basebmp\*.hxx
diff --git a/basebmp/source/bitmapdevice.cxx b/basebmp/source/bitmapdevice.cxx
new file mode 100644
index 000000000000..bf4cafd16cb2
--- /dev/null
+++ b/basebmp/source/bitmapdevice.cxx
@@ -0,0 +1,2029 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// FIXME: in vigra
+#if defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x580)
+#include <math.h> // needed for fabs, hypot
+#endif
+#include "basebmp/bitmapdevice.hxx"
+
+#include "basebmp/compositeiterator.hxx"
+#include "basebmp/iteratortraits.hxx"
+
+#include "basebmp/accessor.hxx"
+#include "basebmp/accessortraits.hxx"
+#include "basebmp/accessoradapters.hxx"
+#include "basebmp/colorblendaccessoradapter.hxx"
+
+#include "basebmp/color.hxx"
+#include "basebmp/colormisc.hxx"
+#include "basebmp/colortraits.hxx"
+
+#include "basebmp/greylevelformats.hxx"
+#include "basebmp/paletteformats.hxx"
+#include "basebmp/rgbmaskpixelformats.hxx"
+#include "basebmp/rgb24pixelformats.hxx"
+
+#include "basebmp/scanlineformats.hxx"
+#include "basebmp/fillimage.hxx"
+#include "basebmp/scaleimage.hxx"
+#include "basebmp/clippedlinerenderer.hxx"
+#include "basebmp/polypolygonrenderer.hxx"
+#include "basebmp/genericcolorimageaccessor.hxx"
+
+#include "basebmp/tools.hxx"
+#include "intconversion.hxx"
+
+#include <rtl/alloc.h>
+#include <rtl/memory.h>
+#include <osl/diagnose.h>
+
+#include <basegfx/tools/tools.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+
+#include <vigra/iteratortraits.hxx>
+#include <vigra/rgbvalue.hxx>
+#include <vigra/copyimage.hxx>
+#include <vigra/tuple.hxx>
+
+
+namespace vigra
+{
+
+/// componentwise xor of an RGBValue (missing from rgbvalue.hxx)
+template< class Value, unsigned int RedIndex, unsigned int BlueIndex, unsigned int GreenIndex >
+inline RGBValue<Value, RedIndex, GreenIndex, BlueIndex>
+operator^( RGBValue<Value, RedIndex, GreenIndex, BlueIndex> const& lhs,
+ RGBValue<Value, RedIndex, GreenIndex, BlueIndex> const& rhs )
+{
+ RGBValue<Value, RedIndex, GreenIndex, BlueIndex> res(
+ lhs[0] ^ rhs[0],
+ lhs[1] ^ rhs[1],
+ lhs[2] ^ rhs[2]);
+ return res;
+}
+}
+
+namespace basebmp
+{
+
+namespace
+{
+ /** Create the type for an accessor that takes the (mask,bitmap)
+ input value generated from a JoinImageAccessorAdapter, and
+ pipe that through a mask functor.
+
+ @tpl DestAccessor
+ Destination bitmap accessor
+
+ @tpl JoinedAccessor
+ Input accessor, is expected to generate a std::pair as the
+ value type
+
+ @tpl MaskFunctorMode
+ Either FastMask or NoFastMask, depending on whether the mask
+ is guaranteed to contain only 0s and 1s.
+ */
+ template< class DestAccessor,
+ class JoinedAccessor,
+ bool polarity,
+ typename MaskFunctorMode > struct masked_input_splitting_accessor
+ {
+ typedef BinarySetterFunctionAccessorAdapter<
+ DestAccessor,
+ BinaryFunctorSplittingWrapper<
+ typename outputMaskFunctorSelector<
+ typename JoinedAccessor::value_type::first_type,
+ typename JoinedAccessor::value_type::second_type,
+ polarity,
+ MaskFunctorMode >::type > > type;
+ };
+
+
+
+ // Actual BitmapDevice implementation (templatized by accessor and iterator)
+ //--------------------------------------------------------------------------
+
+ /** Implementation of the BitmapDevice interface
+
+ @tpl DestIterator
+ Iterator to access bitmap memory
+
+ @tpl RawAccessor
+ Raw accessor, to access pixel values directly
+
+ @tpl AccessorSelector
+ Accessor adapter selector, which, when applying the nested
+ template metafunction wrap_accessor to one of the raw bitmap
+ accessors, yields a member type named 'type', which is a
+ wrapped accessor that map color values.
+
+ @tpl Masks
+ Traits template, containing nested traits
+ clipmask_format_traits and alphamask_format_traits, which
+ determine what specialized formats are to be used for clip and
+ alpha masks. With those mask formats, clipping and alpha
+ blending is handled natively.
+ */
+ template< class DestIterator,
+ class RawAccessor,
+ class AccessorSelector,
+ class Masks > class BitmapRenderer :
+ public BitmapDevice
+ {
+ public:
+ typedef DestIterator dest_iterator_type;
+ typedef RawAccessor raw_accessor_type;
+ typedef AccessorSelector accessor_selector;
+
+ typedef typename Masks::clipmask_format_traits::iterator_type mask_iterator_type;
+ typedef typename Masks::clipmask_format_traits::raw_accessor_type mask_rawaccessor_type;
+ typedef typename Masks::clipmask_format_traits::accessor_selector mask_accessorselector_type;
+
+ typedef typename Masks::alphamask_format_traits::iterator_type alphamask_iterator_type;
+ typedef typename Masks::alphamask_format_traits::raw_accessor_type alphamask_rawaccessor_type;
+ typedef typename Masks::alphamask_format_traits::accessor_selector alphamask_accessorselector_type;
+
+ typedef typename AccessorSelector::template wrap_accessor<
+ raw_accessor_type >::type dest_accessor_type;
+
+ typedef AccessorTraits< dest_accessor_type > accessor_traits;
+ typedef CompositeIterator2D< dest_iterator_type,
+ mask_iterator_type > composite_iterator_type;
+ typedef CompositeIterator2D< vigra::Diff2D,
+ vigra::Diff2D > generic_composite_iterator_type;
+
+ typedef BitmapRenderer<mask_iterator_type,
+ mask_rawaccessor_type,
+ mask_accessorselector_type,
+ Masks> mask_bitmap_type;
+ typedef BitmapRenderer<alphamask_iterator_type,
+ alphamask_rawaccessor_type,
+ alphamask_accessorselector_type,
+ Masks> alphamask_bitmap_type;
+
+ // -------------------------------------------------------
+
+ typedef AccessorTraits< raw_accessor_type > raw_accessor_traits;
+ typedef typename uInt32Converter<
+ typename raw_accessor_type::value_type>::to to_uint32_functor;
+
+ // -------------------------------------------------------
+
+ typedef typename raw_accessor_traits::xor_accessor raw_xor_accessor_type;
+ typedef AccessorTraits<raw_xor_accessor_type> raw_xor_accessor_traits;
+ typedef typename accessor_selector::template wrap_accessor<
+ raw_xor_accessor_type >::type xor_accessor_type;
+ typedef AccessorTraits<xor_accessor_type> xor_accessor_traits;
+
+ // -------------------------------------------------------
+
+ typedef typename raw_accessor_traits::template masked_accessor<
+ mask_rawaccessor_type,
+ dest_iterator_type,
+ mask_iterator_type,
+ Masks::clipmask_polarity>::type raw_maskedaccessor_type;
+ typedef typename accessor_selector::template wrap_accessor<
+ raw_maskedaccessor_type >::type masked_accessor_type;
+ typedef typename AccessorTraits<
+ raw_maskedaccessor_type>::xor_accessor raw_maskedxor_accessor_type;
+ typedef typename accessor_selector::template wrap_accessor<
+ raw_maskedxor_accessor_type >::type masked_xoraccessor_type;
+
+ // -------------------------------------------------------
+
+ // ((iter,mask),mask) special case (e.g. for clipped
+ // drawMaskedColor())
+ typedef AccessorTraits< raw_maskedaccessor_type > raw_maskedaccessor_traits;
+ typedef typename raw_maskedaccessor_traits::template masked_accessor<
+ mask_rawaccessor_type,
+ composite_iterator_type,
+ mask_iterator_type,
+ Masks::clipmask_polarity>::type raw_maskedmask_accessor_type;
+
+ typedef CompositeIterator2D<
+ composite_iterator_type,
+ mask_iterator_type> composite_composite_mask_iterator_type;
+
+ // -------------------------------------------------------
+
+ typedef ConstantColorBlendSetterAccessorAdapter<
+ dest_accessor_type,
+ typename alphamask_rawaccessor_type::value_type,
+ Masks::alphamask_polarity> colorblend_accessor_type;
+ typedef AccessorTraits<colorblend_accessor_type> colorblend_accessor_traits;
+ typedef typename colorblend_accessor_traits::template masked_accessor<
+ mask_rawaccessor_type,
+ dest_iterator_type,
+ mask_iterator_type,
+ Masks::clipmask_polarity>::type masked_colorblend_accessor_type;
+
+ // -------------------------------------------------------
+
+ typedef ConstantColorBlendSetterAccessorAdapter<
+ dest_accessor_type,
+ Color,
+ Masks::alphamask_polarity> colorblend_generic_accessor_type;
+ typedef AccessorTraits<colorblend_generic_accessor_type> colorblend_generic_accessor_traits;
+ typedef typename colorblend_generic_accessor_traits::template masked_accessor<
+ mask_rawaccessor_type,
+ dest_iterator_type,
+ mask_iterator_type,
+ Masks::clipmask_polarity>::type masked_colorblend_generic_accessor_type;
+
+ // -------------------------------------------------------
+
+ typedef JoinImageAccessorAdapter< dest_accessor_type,
+ mask_rawaccessor_type > joined_image_accessor_type;
+ typedef JoinImageAccessorAdapter< GenericColorImageAccessor,
+ GenericColorImageAccessor > joined_generic_image_accessor_type;
+
+ // -------------------------------------------------------
+
+ dest_iterator_type maBegin;
+ typename accessor_traits::color_lookup maColorLookup;
+ to_uint32_functor maToUInt32Converter;
+ dest_accessor_type maAccessor;
+ colorblend_accessor_type maColorBlendAccessor;
+ colorblend_generic_accessor_type maGenericColorBlendAccessor;
+ raw_accessor_type maRawAccessor;
+ xor_accessor_type maXorAccessor;
+ raw_xor_accessor_type maRawXorAccessor;
+ masked_accessor_type maMaskedAccessor;
+ masked_colorblend_accessor_type maMaskedColorBlendAccessor;
+ masked_colorblend_generic_accessor_type maGenericMaskedColorBlendAccessor;
+ masked_xoraccessor_type maMaskedXorAccessor;
+ raw_maskedaccessor_type maRawMaskedAccessor;
+ raw_maskedxor_accessor_type maRawMaskedXorAccessor;
+ raw_maskedmask_accessor_type maRawMaskedMaskAccessor;
+
+ // -------------------------------------------------------
+
+ BitmapRenderer( const basegfx::B2IRange& rBounds,
+ sal_Int32 nScanlineFormat,
+ sal_Int32 nScanlineStride,
+ sal_uInt8* pFirstScanline,
+ dest_iterator_type begin,
+ raw_accessor_type rawAccessor,
+ dest_accessor_type accessor,
+ const RawMemorySharedArray& rMem,
+ const PaletteMemorySharedVector& rPalette ) :
+ BitmapDevice( rBounds, nScanlineFormat,
+ nScanlineStride, pFirstScanline, rMem, rPalette ),
+ maBegin( begin ),
+ maColorLookup(),
+ maToUInt32Converter(),
+ maAccessor( accessor ),
+ maColorBlendAccessor( accessor ),
+ maGenericColorBlendAccessor( accessor ),
+ maRawAccessor( rawAccessor ),
+ maXorAccessor( accessor ),
+ maRawXorAccessor( rawAccessor ),
+ maMaskedAccessor( accessor ),
+ maMaskedColorBlendAccessor( maColorBlendAccessor ),
+ maGenericMaskedColorBlendAccessor( maGenericColorBlendAccessor ),
+ maMaskedXorAccessor( accessor ),
+ maRawMaskedAccessor( rawAccessor ),
+ maRawMaskedXorAccessor( rawAccessor ),
+ maRawMaskedMaskAccessor( rawAccessor )
+ {}
+
+ private:
+ boost::shared_ptr<BitmapRenderer> getCompatibleBitmap( const BitmapDeviceSharedPtr& bmp ) const
+ {
+ return boost::dynamic_pointer_cast< BitmapRenderer >( bmp );
+ }
+
+ virtual bool isCompatibleBitmap( const BitmapDeviceSharedPtr& bmp ) const
+ {
+ // TODO(P1): dynamic_cast usually called twice for
+ // compatible formats
+ return getCompatibleBitmap(bmp).get() != NULL;
+ }
+
+ boost::shared_ptr<mask_bitmap_type> getCompatibleClipMask( const BitmapDeviceSharedPtr& bmp ) const
+ {
+ boost::shared_ptr<mask_bitmap_type> pMask( boost::dynamic_pointer_cast<mask_bitmap_type>( bmp ));
+
+ if( !pMask )
+ return pMask;
+
+ if( pMask->getSize() != getSize() )
+ pMask.reset();
+
+ return pMask;
+ }
+
+ virtual bool isCompatibleClipMask( const BitmapDeviceSharedPtr& bmp ) const
+ {
+ // TODO(P1): dynamic_cast usually called twice for
+ // compatible formats
+ return boost::dynamic_pointer_cast<mask_bitmap_type>( bmp ).get() != NULL;
+ }
+
+ boost::shared_ptr<alphamask_bitmap_type> getCompatibleAlphaMask( const BitmapDeviceSharedPtr& bmp ) const
+ {
+ return boost::dynamic_pointer_cast<alphamask_bitmap_type>( bmp );
+ }
+
+ virtual bool isCompatibleAlphaMask( const BitmapDeviceSharedPtr& bmp ) const
+ {
+ // TODO(P1): dynamic_cast usually called twice for
+ // compatible formats
+ return getCompatibleAlphaMask( bmp ).get() != NULL;
+ }
+
+ virtual void clear_i( Color fillColor,
+ const basegfx::B2IRange& rBounds )
+ {
+ fillImage(destIterRange(maBegin,
+ maRawAccessor,
+ rBounds),
+ maColorLookup(
+ maAccessor,
+ fillColor) );
+ }
+
+ virtual void setPixel_i( const basegfx::B2IPoint& rPt,
+ Color pixelColor,
+ DrawMode drawMode )
+ {
+ const DestIterator pixel( maBegin +
+ vigra::Diff2D(rPt.getX(),
+ rPt.getY()) );
+ if( drawMode == DrawMode_XOR )
+ maXorAccessor.set( pixelColor,
+ pixel );
+ else
+ maAccessor.set( pixelColor,
+ pixel );
+ }
+
+ virtual void setPixel_i( const basegfx::B2IPoint& rPt,
+ Color pixelColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+ {
+ boost::shared_ptr<mask_bitmap_type> pMask( getCompatibleClipMask(rClip) );
+ OSL_ASSERT( pMask );
+
+ const vigra::Diff2D offset(rPt.getX(),
+ rPt.getY());
+
+ const composite_iterator_type aIter(
+ maBegin + offset,
+ pMask->maBegin + offset );
+
+ if( drawMode == DrawMode_XOR )
+ maMaskedXorAccessor.set( pixelColor,
+ aIter );
+ else
+ maMaskedAccessor.set( pixelColor,
+ aIter );
+ }
+
+ virtual Color getPixel_i(const basegfx::B2IPoint& rPt )
+ {
+ const DestIterator pixel( maBegin +
+ vigra::Diff2D(rPt.getX(),
+ rPt.getY()) );
+ return maAccessor(pixel);
+ }
+
+ virtual sal_uInt32 getPixelData_i( const basegfx::B2IPoint& rPt )
+ {
+ const DestIterator pixel( maBegin +
+ vigra::Diff2D(rPt.getX(),
+ rPt.getY()) );
+ return maToUInt32Converter(maRawAccessor(pixel));
+ }
+
+ template< typename Iterator, typename Col, typename RawAcc >
+ void implRenderLine2( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ const basegfx::B2IRange& rBounds,
+ Col col,
+ const Iterator& begin,
+ const RawAcc& rawAcc )
+ {
+ renderClippedLine( rPt1,
+ rPt2,
+ rBounds,
+ col,
+ begin,
+ rawAcc );
+ }
+
+ template< typename Iterator, typename Accessor, typename RawAcc >
+ void implRenderLine( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ const basegfx::B2IRange& rBounds,
+ Color col,
+ const Iterator& begin,
+ const Accessor& acc,
+ const RawAcc& rawAcc )
+ {
+ implRenderLine2( rPt1,rPt2,rBounds,
+ maColorLookup( acc,
+ col ),
+ begin,
+ rawAcc );
+ }
+
+ template< typename Iterator, typename RawAcc, typename XorAcc >
+ void implDrawLine( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ const basegfx::B2IRange& rBounds,
+ Color col,
+ const Iterator& begin,
+ const RawAcc& rawAcc,
+ const XorAcc& xorAcc,
+ DrawMode drawMode )
+ {
+ if( drawMode == DrawMode_XOR )
+ implRenderLine( rPt1, rPt2, rBounds, col,
+ begin, maAccessor, xorAcc );
+ else
+ implRenderLine( rPt1, rPt2, rBounds, col,
+ begin, maAccessor, rawAcc );
+ }
+
+ virtual void drawLine_i(const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode )
+ {
+ implDrawLine(rPt1,rPt2,rBounds,lineColor,
+ maBegin,
+ maRawAccessor,maRawXorAccessor,drawMode);
+ }
+
+ composite_iterator_type getMaskedIter( const BitmapDeviceSharedPtr& rClip ) const
+ {
+ boost::shared_ptr<mask_bitmap_type> pMask( getCompatibleClipMask(rClip) );
+ OSL_ASSERT( pMask );
+
+ return composite_iterator_type( maBegin,
+ pMask->maBegin );
+ }
+
+ virtual void drawLine_i(const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+ {
+ implDrawLine(rPt1,rPt2,rBounds,lineColor,
+ getMaskedIter(rClip),
+ maRawMaskedAccessor,
+ maRawMaskedXorAccessor,drawMode);
+ }
+
+ template< typename Iterator, typename RawAcc >
+ void implDrawPolygon( const basegfx::B2DPolygon& rPoly,
+ const basegfx::B2IRange& rBounds,
+ Color col,
+ const Iterator& begin,
+ const RawAcc& acc )
+ {
+ basegfx::B2DPolygon aPoly( rPoly );
+ if( rPoly.areControlPointsUsed() )
+ aPoly = basegfx::tools::adaptiveSubdivideByCount( rPoly );
+
+ const typename dest_iterator_type::value_type colorIndex( maColorLookup(
+ maAccessor,
+ col));
+ const sal_uInt32 nVertices( aPoly.count() );
+ for( sal_uInt32 i=1; i<nVertices; ++i )
+ implRenderLine2( basegfx::fround(aPoly.getB2DPoint(i-1)),
+ basegfx::fround(aPoly.getB2DPoint(i)),
+ rBounds,
+ colorIndex,
+ begin,
+ acc );
+
+ if( nVertices > 1 && aPoly.isClosed() )
+ implRenderLine2( basegfx::fround(aPoly.getB2DPoint(nVertices-1)),
+ basegfx::fround(aPoly.getB2DPoint(0)),
+ rBounds,
+ colorIndex,
+ begin,
+ acc );
+ }
+
+ virtual void drawPolygon_i(const basegfx::B2DPolygon& rPoly,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode )
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawPolygon( rPoly, rBounds, lineColor,
+ maBegin,
+ maRawXorAccessor );
+ else
+ implDrawPolygon( rPoly, rBounds, lineColor,
+ maBegin,
+ maRawAccessor );
+ }
+
+ virtual void drawPolygon_i(const basegfx::B2DPolygon& rPoly,
+ const basegfx::B2IRange& rBounds,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawPolygon( rPoly, rBounds, lineColor,
+ getMaskedIter(rClip),
+ maRawMaskedXorAccessor );
+ else
+ implDrawPolygon( rPoly, rBounds, lineColor,
+ getMaskedIter(rClip),
+ maRawMaskedAccessor );
+ }
+
+ template< typename Iterator, typename RawAcc >
+ void implFillPolyPolygon( const basegfx::B2DPolyPolygon& rPoly,
+ Color col,
+ const Iterator& begin,
+ const RawAcc& acc,
+ const basegfx::B2IRange& rBounds )
+ {
+ basegfx::B2DPolyPolygon aPoly( rPoly );
+ if( rPoly.areControlPointsUsed() )
+ aPoly = basegfx::tools::adaptiveSubdivideByCount( rPoly );
+
+ renderClippedPolyPolygon( begin,
+ acc,
+ maColorLookup( maAccessor,
+ col),
+ rBounds,
+ aPoly,
+ basegfx::FillRule_EVEN_ODD );
+ }
+
+ virtual void fillPolyPolygon_i(const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode,
+ const basegfx::B2IRange& rBounds )
+ {
+ if( drawMode == DrawMode_XOR )
+ implFillPolyPolygon( rPoly, fillColor,
+ maBegin,
+ maRawXorAccessor,
+ rBounds );
+ else
+ implFillPolyPolygon( rPoly, fillColor,
+ maBegin,
+ maRawAccessor,
+ rBounds );
+ }
+
+ virtual void fillPolyPolygon_i(const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode,
+ const basegfx::B2IRange& rBounds,
+ const BitmapDeviceSharedPtr& rClip )
+ {
+ if( drawMode == DrawMode_XOR )
+ implFillPolyPolygon( rPoly, fillColor,
+ getMaskedIter(rClip),
+ maRawMaskedXorAccessor,
+ rBounds );
+ else
+ implFillPolyPolygon( rPoly, fillColor,
+ getMaskedIter(rClip),
+ maRawMaskedAccessor,
+ rBounds );
+ }
+
+ template< typename Iterator, typename RawAcc >
+ void implDrawBitmap(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ const Iterator& begin,
+ const RawAcc& acc)
+ {
+ boost::shared_ptr<BitmapRenderer> pSrcBmp( getCompatibleBitmap(rSrcBitmap) );
+ OSL_ASSERT( pSrcBmp );
+
+ scaleImage(
+ srcIterRange(pSrcBmp->maBegin,
+ pSrcBmp->maRawAccessor,
+ rSrcRect),
+ destIterRange(begin,
+ acc,
+ rDstRect),
+ rSrcBitmap.get() == this );
+ }
+
+ template< typename Iterator, typename Acc >
+ void implDrawBitmapGeneric(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ const Iterator& begin,
+ const Acc& acc)
+ {
+ GenericColorImageAccessor aSrcAcc( rSrcBitmap );
+
+ scaleImage(
+ srcIterRange(vigra::Diff2D(),
+ aSrcAcc,
+ rSrcRect),
+ destIterRange(begin,
+ acc,
+ rDstRect));
+ }
+
+ virtual void drawBitmap_i(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode )
+ {
+ if( isCompatibleBitmap( rSrcBitmap ) )
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawBitmap(rSrcBitmap, rSrcRect, rDstRect,
+ maBegin,
+ maRawXorAccessor);
+ else
+ implDrawBitmap(rSrcBitmap, rSrcRect, rDstRect,
+ maBegin,
+ maRawAccessor);
+ }
+ else
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawBitmapGeneric(rSrcBitmap, rSrcRect, rDstRect,
+ maBegin,
+ maXorAccessor);
+ else
+ implDrawBitmapGeneric(rSrcBitmap, rSrcRect, rDstRect,
+ maBegin,
+ maAccessor);
+ }
+ }
+
+ virtual void drawBitmap_i(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+ {
+ if( isCompatibleBitmap( rSrcBitmap ) )
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawBitmap(rSrcBitmap, rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maRawMaskedXorAccessor);
+ else
+ implDrawBitmap(rSrcBitmap, rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maRawMaskedAccessor);
+ }
+ else
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawBitmapGeneric(rSrcBitmap, rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maMaskedXorAccessor);
+ else
+ implDrawBitmapGeneric(rSrcBitmap, rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maMaskedAccessor);
+ }
+ }
+
+ virtual void drawMaskedColor_i(Color aSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint )
+ {
+ boost::shared_ptr<mask_bitmap_type> pMask( getCompatibleClipMask(rAlphaMask) );
+ boost::shared_ptr<alphamask_bitmap_type> pAlpha( getCompatibleAlphaMask(rAlphaMask) );
+
+ if( pAlpha )
+ {
+ maColorBlendAccessor.setColor( aSrcColor );
+
+ vigra::copyImage( srcIterRange(pAlpha->maBegin,
+ pAlpha->maRawAccessor,
+ rSrcRect),
+ destIter(maBegin,
+ maColorBlendAccessor,
+ rDstPoint) );
+ }
+ else if( pMask )
+ {
+ const composite_iterator_type aBegin(
+ maBegin + vigra::Diff2D(rDstPoint.getX(),
+ rDstPoint.getY()),
+ pMask->maBegin + topLeft(rSrcRect) );
+
+ fillImage(aBegin,
+ aBegin + vigra::Diff2D(rSrcRect.getWidth(),
+ rSrcRect.getHeight()),
+ maRawMaskedAccessor,
+ maColorLookup(
+ maAccessor,
+ aSrcColor) );
+ }
+ else
+ {
+ GenericColorImageAccessor aSrcAcc( rAlphaMask );
+ maGenericColorBlendAccessor.setColor( aSrcColor );
+
+ vigra::copyImage( srcIterRange(vigra::Diff2D(),
+ aSrcAcc,
+ rSrcRect),
+ destIter(maBegin,
+ maGenericColorBlendAccessor,
+ rDstPoint) );
+ }
+ }
+
+ virtual void drawMaskedColor_i(Color aSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint,
+ const BitmapDeviceSharedPtr& rClip )
+ {
+ boost::shared_ptr<mask_bitmap_type> pMask( getCompatibleClipMask(rAlphaMask) );
+ boost::shared_ptr<alphamask_bitmap_type> pAlpha( getCompatibleAlphaMask(rAlphaMask) );
+
+ if( pAlpha )
+ {
+ const composite_iterator_type aBegin( getMaskedIter(rClip) );
+ maMaskedColorBlendAccessor.get1stWrappedAccessor().setColor(
+ aSrcColor );
+
+ vigra::copyImage( srcIterRange(pAlpha->maBegin,
+ pAlpha->maRawAccessor,
+ rSrcRect),
+ destIter(aBegin,
+ maMaskedColorBlendAccessor,
+ rDstPoint) );
+ }
+ else if( pMask )
+ {
+ boost::shared_ptr<mask_bitmap_type> pClipMask( getCompatibleClipMask(rClip) );
+ OSL_ASSERT( pClipMask );
+
+ // setup a ((iter,mask),clipMask) composite composite
+ // iterator, to pass both masks (clip and alpha mask)
+ // to the algorithm
+ const composite_composite_mask_iterator_type aBegin(
+ composite_iterator_type(
+ maBegin + vigra::Diff2D(rDstPoint.getX(),
+ rDstPoint.getY()),
+ pMask->maBegin + topLeft(rSrcRect)),
+ pClipMask->maBegin + vigra::Diff2D(rDstPoint.getX(),
+ rDstPoint.getY()) );
+
+ fillImage(aBegin,
+ aBegin + vigra::Diff2D(rSrcRect.getWidth(),
+ rSrcRect.getHeight()),
+ maRawMaskedMaskAccessor,
+ maColorLookup(
+ maAccessor,
+ aSrcColor) );
+ }
+ else
+ {
+ GenericColorImageAccessor aSrcAcc( rAlphaMask );
+ const composite_iterator_type aBegin( getMaskedIter(rClip) );
+ maGenericMaskedColorBlendAccessor.get1stWrappedAccessor().setColor(
+ aSrcColor );
+
+ vigra::copyImage( srcIterRange(vigra::Diff2D(),
+ aSrcAcc,
+ rSrcRect),
+ destIter(aBegin,
+ maGenericMaskedColorBlendAccessor,
+ rDstPoint) );
+ }
+ }
+
+ template< typename Iterator, typename Acc >
+ void implDrawMaskedBitmap(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ const Iterator& begin,
+ const Acc& acc)
+ {
+ boost::shared_ptr<BitmapRenderer> pSrcBmp( getCompatibleBitmap(rSrcBitmap) );
+ boost::shared_ptr<mask_bitmap_type> pMask( getCompatibleClipMask(rMask) );
+ OSL_ASSERT( pMask && pSrcBmp );
+
+ scaleImage(
+ srcIterRange(composite_iterator_type(
+ pSrcBmp->maBegin,
+ pMask->maBegin),
+ joined_image_accessor_type(
+ pSrcBmp->maAccessor,
+ pMask->maRawAccessor),
+ rSrcRect),
+ destIterRange(begin,
+ typename masked_input_splitting_accessor<
+ Acc,
+ joined_image_accessor_type,
+ Masks::clipmask_polarity,
+ FastMask >::type(acc),
+ rDstRect),
+ rSrcBitmap.get() == this);
+ }
+
+ template< typename Iterator, typename Acc >
+ void implDrawMaskedBitmapGeneric(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ const Iterator& begin,
+ const Acc& acc)
+ {
+ GenericColorImageAccessor aSrcAcc( rSrcBitmap );
+ GenericColorImageAccessor aMaskAcc( rMask );
+
+ const vigra::Diff2D aTopLeft(rSrcRect.getMinX(),
+ rSrcRect.getMinY());
+ const vigra::Diff2D aBottomRight(rSrcRect.getMaxX(),
+ rSrcRect.getMaxY());
+ scaleImage(
+ vigra::make_triple(
+ generic_composite_iterator_type(
+ aTopLeft,aTopLeft),
+ generic_composite_iterator_type(
+ aBottomRight,aBottomRight),
+ joined_generic_image_accessor_type(
+ aSrcAcc,
+ aMaskAcc)),
+ destIterRange(begin,
+ typename masked_input_splitting_accessor<
+ Acc,
+ joined_generic_image_accessor_type,
+ Masks::clipmask_polarity,
+ NoFastMask >::type(acc),
+ rDstRect));
+ }
+
+ virtual void drawMaskedBitmap_i(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode )
+ {
+ if( isCompatibleClipMask(rMask) &&
+ isCompatibleBitmap(rSrcBitmap) )
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawMaskedBitmap(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ maBegin,
+ maXorAccessor);
+ else
+ implDrawMaskedBitmap(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ maBegin,
+ maAccessor);
+ }
+ else
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawMaskedBitmapGeneric(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ maBegin,
+ maXorAccessor);
+ else
+ implDrawMaskedBitmapGeneric(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ maBegin,
+ maAccessor);
+ }
+ }
+
+ virtual void drawMaskedBitmap_i(const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+ {
+ if( isCompatibleClipMask(rMask) &&
+ isCompatibleBitmap(rSrcBitmap) )
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawMaskedBitmap(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maMaskedXorAccessor);
+ else
+ implDrawMaskedBitmap(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maMaskedAccessor);
+ }
+ else
+ {
+ if( drawMode == DrawMode_XOR )
+ implDrawMaskedBitmapGeneric(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maMaskedXorAccessor);
+ else
+ implDrawMaskedBitmapGeneric(rSrcBitmap, rMask,
+ rSrcRect, rDstRect,
+ getMaskedIter(rClip),
+ maMaskedAccessor);
+ }
+ }
+ };
+} // namespace
+
+struct ImplBitmapDevice
+{
+ /** Bitmap memory plus deleter.
+
+ Always points to the start of the mem
+ */
+ RawMemorySharedArray mpMem;
+
+ /// Palette memory plus deleter (might be NULL)
+ PaletteMemorySharedVector mpPalette;
+
+ /** Bounds of the device.
+
+ maBounds.getWidth()/getHeight() yield the true size of the
+ device (i.e. the rectangle given by maBounds covers the device
+ area under the excluding-bottommost-and-rightmost-pixels fill
+ rule)
+ */
+ basegfx::B2IRange maBounds;
+
+ /** Bounds of the device.
+
+ maBounds.getWidth()/getHeight() yield the true size of the
+ device minus 1 (i.e. the rectangle given by maBounds covers
+ the device area under the
+ including-the-bottommost-and-rightmost-pixels fill rule).
+
+ The member is used to clip line stroking against the device
+ bounds.
+ */
+ basegfx::B2IRange maLineClipRect;
+
+ /// Scanline format, as provided at the constructor
+ sal_Int32 mnScanlineFormat;
+
+ /// Scanline stride. Negative for bottom-to-top formats
+ sal_Int32 mnScanlineStride;
+
+ /// raw ptr to 0th scanline. used for cloning a generic renderer
+ sal_uInt8* mpFirstScanline;
+
+ /** (Optional) device sharing the same memory, and used for input
+ clip masks/alpha masks/bitmaps that don't match our exact
+ bitmap format.
+
+ This is to avoid the combinatorical explosion when dealing
+ with n bitmap formats, which could be combined with n clip
+ masks, alpha masks and bitmap masks (yielding a total of n^4
+ combinations). Since each BitmapRenderer is specialized for
+ one specific combination of said formats, a lot of duplicate
+ code would be generated, most of which probably never
+ used. Therefore, only the most common combinations are
+ specialized templates, the remainder gets handled by this
+ generic renderer (via runtime polymorphism).
+ */
+ BitmapDeviceSharedPtr mpGenericRenderer;
+};
+
+
+BitmapDevice::BitmapDevice( const basegfx::B2IRange& rBounds,
+ sal_Int32 nScanlineFormat,
+ sal_Int32 nScanlineStride,
+ sal_uInt8* pFirstScanline,
+ const RawMemorySharedArray& rMem,
+ const PaletteMemorySharedVector& rPalette ) :
+ mpImpl( new ImplBitmapDevice )
+{
+ mpImpl->mpMem = rMem;
+ mpImpl->mpPalette = rPalette;
+ mpImpl->maBounds = rBounds;
+ mpImpl->maLineClipRect = basegfx::B2IRange( rBounds.getMinX(),
+ rBounds.getMinY(),
+ rBounds.getMaxX()-1,
+ rBounds.getMaxY()-1 );
+ mpImpl->mnScanlineFormat = nScanlineFormat;
+ mpImpl->mnScanlineStride = nScanlineStride;
+ mpImpl->mpFirstScanline = pFirstScanline;
+}
+
+BitmapDevice::~BitmapDevice()
+{
+ // outline, because of internal ImplBitmapDevice
+}
+
+basegfx::B2IVector BitmapDevice::getSize() const
+{
+
+ return basegfx::B2IVector(
+ mpImpl->maBounds.getMaxX() - mpImpl->maBounds.getMinX(),
+ mpImpl->maBounds.getMaxY() - mpImpl->maBounds.getMinY() );
+}
+
+bool BitmapDevice::isTopDown() const
+{
+ return mpImpl->mnScanlineStride >= 0;
+}
+
+sal_Int32 BitmapDevice::getScanlineFormat() const
+{
+ return mpImpl->mnScanlineFormat;
+}
+
+sal_Int32 BitmapDevice::getScanlineStride() const
+{
+ return mpImpl->mnScanlineStride < 0 ?
+ -mpImpl->mnScanlineStride : mpImpl->mnScanlineStride;
+}
+
+RawMemorySharedArray BitmapDevice::getBuffer() const
+{
+ return mpImpl->mpMem;
+}
+
+PaletteMemorySharedVector BitmapDevice::getPalette() const
+{
+ return mpImpl->mpPalette;
+}
+
+sal_Int32 BitmapDevice::getPaletteEntryCount() const
+{
+ return mpImpl->mpPalette ? mpImpl->mpPalette->size() : 0;
+}
+
+void BitmapDevice::clear( Color fillColor )
+{
+ clear_i( fillColor, mpImpl->maBounds );
+}
+
+void BitmapDevice::setPixel( const basegfx::B2IPoint& rPt,
+ Color lineColor,
+ DrawMode drawMode )
+{
+ if( mpImpl->maLineClipRect.isInside(rPt) )
+ setPixel_i(rPt,lineColor,drawMode);
+}
+
+void BitmapDevice::setPixel( const basegfx::B2IPoint& rPt,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+{
+ if( !rClip )
+ {
+ setPixel(rPt,lineColor,drawMode);
+ return;
+ }
+
+ if( mpImpl->maLineClipRect.isInside(rPt) )
+ {
+ if( isCompatibleClipMask( rClip ) )
+ setPixel_i(rPt,lineColor,drawMode,rClip);
+ else
+ getGenericRenderer()->setPixel( rPt, lineColor, drawMode, rClip );
+ }
+}
+
+Color BitmapDevice::getPixel( const basegfx::B2IPoint& rPt )
+{
+ if( mpImpl->maLineClipRect.isInside(rPt) )
+ return getPixel_i(rPt);
+
+ return Color();
+}
+
+sal_uInt32 BitmapDevice::getPixelData( const basegfx::B2IPoint& rPt )
+{
+ if( mpImpl->maLineClipRect.isInside(rPt) )
+ return getPixelData_i(rPt);
+
+ return 0;
+}
+
+void BitmapDevice::drawLine( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ Color lineColor,
+ DrawMode drawMode )
+{
+ drawLine_i( rPt1,
+ rPt2,
+ mpImpl->maLineClipRect,
+ lineColor,
+ drawMode );
+}
+
+void BitmapDevice::drawLine( const basegfx::B2IPoint& rPt1,
+ const basegfx::B2IPoint& rPt2,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+{
+ if( !rClip )
+ {
+ drawLine(rPt1,rPt2,lineColor,drawMode);
+ return;
+ }
+
+ if( isCompatibleClipMask( rClip ) )
+ drawLine_i( rPt1,
+ rPt2,
+ mpImpl->maLineClipRect,
+ lineColor,
+ drawMode,
+ rClip );
+ else
+ getGenericRenderer()->drawLine( rPt1, rPt2, lineColor,
+ drawMode, rClip );
+}
+
+void BitmapDevice::drawPolygon( const basegfx::B2DPolygon& rPoly,
+ Color lineColor,
+ DrawMode drawMode )
+{
+ const sal_uInt32 numVertices( rPoly.count() );
+ if( numVertices )
+ drawPolygon_i( rPoly,
+ mpImpl->maLineClipRect,
+ lineColor, drawMode );
+}
+
+void BitmapDevice::drawPolygon( const basegfx::B2DPolygon& rPoly,
+ Color lineColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+{
+ if( !rClip )
+ {
+ drawPolygon(rPoly,lineColor,drawMode);
+ return;
+ }
+
+ const sal_uInt32 numVertices( rPoly.count() );
+ if( numVertices )
+ {
+ if( isCompatibleClipMask( rClip ) )
+ drawPolygon_i( rPoly,
+ mpImpl->maLineClipRect,
+ lineColor, drawMode, rClip );
+ else
+ getGenericRenderer()->drawPolygon( rPoly, lineColor,
+ drawMode, rClip );
+ }
+}
+
+void BitmapDevice::fillPolyPolygon( const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode )
+{
+ fillPolyPolygon_i( rPoly, fillColor, drawMode, mpImpl->maBounds );
+}
+
+void BitmapDevice::fillPolyPolygon( const basegfx::B2DPolyPolygon& rPoly,
+ Color fillColor,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+{
+ if( !rClip )
+ {
+ fillPolyPolygon(rPoly,fillColor,drawMode);
+ return;
+ }
+
+ if( isCompatibleClipMask( rClip ) )
+ fillPolyPolygon_i( rPoly, fillColor, drawMode, mpImpl->maBounds, rClip );
+ else
+ getGenericRenderer()->fillPolyPolygon( rPoly, fillColor,
+ drawMode, rClip );
+}
+
+
+namespace
+{
+ void assertImagePoint( const basegfx::B2IPoint& rPt,
+ const basegfx::B2IRange& rPermittedRange )
+ {
+ (void)rPt; (void)rPermittedRange;
+ OSL_ASSERT( rPermittedRange.isInside(rPt) );
+ }
+
+ void assertImageRange( const basegfx::B2IRange& rRange,
+ const basegfx::B2IRange& rPermittedRange )
+ {
+#if OSL_DEBUG_LEVEL > 0
+ basegfx::B2IRange aRange( rRange );
+ aRange.intersect( rPermittedRange );
+
+ OSL_ASSERT( aRange == rRange );
+#else
+ (void)rRange; (void)rPermittedRange;
+#endif
+ }
+
+ // TODO(Q3): Move canvas/canvastools.hxx clipBlit() down
+ // to basegfx, and use here!
+ bool clipAreaImpl( ::basegfx::B2IRange& io_rSourceArea,
+ ::basegfx::B2IPoint& io_rDestPoint,
+ const ::basegfx::B2IRange& rSourceBounds,
+ const ::basegfx::B2IRange& rDestBounds )
+ {
+ const ::basegfx::B2IPoint aSourceTopLeft(
+ io_rSourceArea.getMinimum() );
+
+ ::basegfx::B2IRange aLocalSourceArea( io_rSourceArea );
+
+ // clip source area (which must be inside rSourceBounds)
+ aLocalSourceArea.intersect( rSourceBounds );
+
+ if( aLocalSourceArea.isEmpty() )
+ return false;
+
+ // calc relative new source area points (relative to orig
+ // source area)
+ const ::basegfx::B2IVector aUpperLeftOffset(
+ aLocalSourceArea.getMinimum()-aSourceTopLeft );
+ const ::basegfx::B2IVector aLowerRightOffset(
+ aLocalSourceArea.getMaximum()-aSourceTopLeft );
+
+ ::basegfx::B2IRange aLocalDestArea( io_rDestPoint + aUpperLeftOffset,
+ io_rDestPoint + aLowerRightOffset );
+
+ // clip dest area (which must be inside rDestBounds)
+ aLocalDestArea.intersect( rDestBounds );
+
+ if( aLocalDestArea.isEmpty() )
+ return false;
+
+ // calc relative new dest area points (relative to orig
+ // source area)
+ const ::basegfx::B2IVector aDestUpperLeftOffset(
+ aLocalDestArea.getMinimum()-io_rDestPoint );
+ const ::basegfx::B2IVector aDestLowerRightOffset(
+ aLocalDestArea.getMaximum()-io_rDestPoint );
+
+ io_rSourceArea = ::basegfx::B2IRange( aSourceTopLeft + aDestUpperLeftOffset,
+ aSourceTopLeft + aDestLowerRightOffset );
+ io_rDestPoint = aLocalDestArea.getMinimum();
+
+ return true;
+ }
+
+ // TODO(Q3): Move canvas/canvastools.hxx clipBlit() down
+ // to basegfx, and use here!
+ bool clipAreaImpl( ::basegfx::B2IRange& io_rDestArea,
+ ::basegfx::B2IRange& io_rSourceArea,
+ const ::basegfx::B2IRange& rDestBounds,
+ const ::basegfx::B2IRange& rSourceBounds )
+ {
+ // extract inherent scale
+ const double nScaleX( io_rDestArea.getWidth() / (double)io_rSourceArea.getWidth() );
+ const double nScaleY( io_rDestArea.getHeight() / (double)io_rSourceArea.getHeight() );
+
+ // extract range origins
+ const basegfx::B2IPoint aDestTopLeft(
+ io_rDestArea.getMinimum() );
+ const ::basegfx::B2IPoint aSourceTopLeft(
+ io_rSourceArea.getMinimum() );
+
+ ::basegfx::B2IRange aLocalSourceArea( io_rSourceArea );
+
+ // clip source area (which must be inside rSourceBounds)
+ aLocalSourceArea.intersect( rSourceBounds );
+
+ if( aLocalSourceArea.isEmpty() )
+ return false;
+
+ // calc relative new source area points (relative to orig
+ // source area)
+ const ::basegfx::B2IVector aUpperLeftOffset(
+ aLocalSourceArea.getMinimum()-aSourceTopLeft );
+ const ::basegfx::B2IVector aLowerRightOffset(
+ aLocalSourceArea.getMaximum()-aSourceTopLeft );
+
+ ::basegfx::B2IRange aLocalDestArea( basegfx::fround(aDestTopLeft.getX() + nScaleX*aUpperLeftOffset.getX()),
+ basegfx::fround(aDestTopLeft.getY() + nScaleY*aUpperLeftOffset.getY()),
+ basegfx::fround(aDestTopLeft.getX() + nScaleX*aLowerRightOffset.getX()),
+ basegfx::fround(aDestTopLeft.getY() + nScaleY*aLowerRightOffset.getY()) );
+
+ // clip dest area (which must be inside rDestBounds)
+ aLocalDestArea.intersect( rDestBounds );
+
+ if( aLocalDestArea.isEmpty() )
+ return false;
+
+ // calc relative new dest area points (relative to orig
+ // source area)
+ const ::basegfx::B2IVector aDestUpperLeftOffset(
+ aLocalDestArea.getMinimum()-aDestTopLeft );
+ const ::basegfx::B2IVector aDestLowerRightOffset(
+ aLocalDestArea.getMaximum()-aDestTopLeft );
+
+ io_rSourceArea = ::basegfx::B2IRange( basegfx::fround(aSourceTopLeft.getX() + aDestUpperLeftOffset.getX()/nScaleX),
+ basegfx::fround(aSourceTopLeft.getY() + aDestUpperLeftOffset.getY()/nScaleY),
+ basegfx::fround(aSourceTopLeft.getX() + aDestLowerRightOffset.getX()/nScaleX),
+ basegfx::fround(aSourceTopLeft.getY() + aDestLowerRightOffset.getY()/nScaleY) );
+ io_rDestArea = aLocalDestArea;
+
+ // final source area clip (chopping round-offs)
+ io_rSourceArea.intersect( rSourceBounds );
+
+ if( io_rSourceArea.isEmpty() )
+ return false;
+
+
+ return true;
+ }
+}
+
+void BitmapDevice::drawBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode )
+{
+ const basegfx::B2IVector& rSrcSize( rSrcBitmap->getSize() );
+ const basegfx::B2IRange aSrcBounds( 0,0,rSrcSize.getX(),rSrcSize.getY() );
+ basegfx::B2IRange aSrcRange( rSrcRect );
+ basegfx::B2IRange aDestRange( rDstRect );
+
+ if( clipAreaImpl( aDestRange,
+ aSrcRange,
+ mpImpl->maBounds,
+ aSrcBounds ))
+ {
+ assertImageRange(aDestRange,mpImpl->maBounds);
+ assertImageRange(aSrcRange,aSrcBounds);
+
+ drawBitmap_i( rSrcBitmap, aSrcRange, aDestRange, drawMode );
+ }
+}
+
+void BitmapDevice::drawBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+{
+ if( !rClip )
+ {
+ drawBitmap(rSrcBitmap,rSrcRect,rDstRect,drawMode);
+ return;
+ }
+
+ const basegfx::B2IVector& rSrcSize( rSrcBitmap->getSize() );
+ const basegfx::B2IRange aSrcBounds( 0,0,rSrcSize.getX(),rSrcSize.getY() );
+ basegfx::B2IRange aSrcRange( rSrcRect );
+ basegfx::B2IRange aDestRange( rDstRect );
+
+ if( clipAreaImpl( aDestRange,
+ aSrcRange,
+ mpImpl->maBounds,
+ aSrcBounds ))
+ {
+ assertImageRange(aDestRange,mpImpl->maBounds);
+ assertImageRange(aSrcRange,aSrcBounds);
+
+ if( isCompatibleClipMask( rClip ) )
+ {
+ drawBitmap_i( rSrcBitmap, aSrcRange, aDestRange, drawMode, rClip );
+ }
+ else
+ {
+ getGenericRenderer()->drawBitmap( rSrcBitmap, rSrcRect,
+ rDstRect, drawMode, rClip );
+ }
+ }
+}
+
+void BitmapDevice::drawMaskedColor( Color aSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint )
+{
+ const basegfx::B2IVector& rSrcSize( rAlphaMask->getSize() );
+ const basegfx::B2IRange aSrcBounds( 0,0,rSrcSize.getX(),rSrcSize.getY() );
+ basegfx::B2IRange aSrcRange( rSrcRect );
+ basegfx::B2IPoint aDestPoint( rDstPoint );
+
+ if( clipAreaImpl( aSrcRange,
+ aDestPoint,
+ aSrcBounds,
+ mpImpl->maBounds ))
+ {
+ assertImagePoint(aDestPoint,mpImpl->maBounds);
+ assertImageRange(aSrcRange,aSrcBounds);
+
+ if( rAlphaMask.get() == this )
+ {
+ // src == dest, copy rAlphaMask beforehand
+ // ---------------------------------------------------
+
+ const basegfx::B2ITuple aSize( aSrcRange.getWidth(),
+ aSrcRange.getHeight() );
+ BitmapDeviceSharedPtr pAlphaCopy(
+ cloneBitmapDevice( aSize,
+ shared_from_this()) );
+ basegfx::B2ITuple aGcc3WorkaroundTemporary;
+ const basegfx::B2IRange aAlphaRange( aGcc3WorkaroundTemporary,
+ aSize );
+ pAlphaCopy->drawBitmap(rAlphaMask,
+ aSrcRange,
+ aAlphaRange,
+ DrawMode_PAINT);
+ drawMaskedColor_i( aSrcColor, pAlphaCopy, aAlphaRange, aDestPoint );
+ }
+ else
+ {
+ drawMaskedColor_i( aSrcColor, rAlphaMask, aSrcRange, aDestPoint );
+ }
+ }
+}
+
+void BitmapDevice::drawMaskedColor( Color aSrcColor,
+ const BitmapDeviceSharedPtr& rAlphaMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IPoint& rDstPoint,
+ const BitmapDeviceSharedPtr& rClip )
+{
+ if( !rClip )
+ {
+ drawMaskedColor(aSrcColor,rAlphaMask,rSrcRect,rDstPoint);
+ return;
+ }
+
+ const basegfx::B2IVector& rSrcSize( rAlphaMask->getSize() );
+ const basegfx::B2IRange aSrcBounds( 0,0,rSrcSize.getX(),rSrcSize.getY() );
+ basegfx::B2IRange aSrcRange( rSrcRect );
+ basegfx::B2IPoint aDestPoint( rDstPoint );
+
+ if( clipAreaImpl( aSrcRange,
+ aDestPoint,
+ aSrcBounds,
+ mpImpl->maBounds ))
+ {
+ assertImagePoint(aDestPoint,mpImpl->maBounds);
+ assertImageRange(aSrcRange,aSrcBounds);
+
+ if( isCompatibleClipMask( rClip ) )
+ {
+ if( rAlphaMask.get() == this )
+ {
+ // src == dest, copy rAlphaMask beforehand
+ // ---------------------------------------------------
+
+ const basegfx::B2ITuple aSize( aSrcRange.getWidth(),
+ aSrcRange.getHeight() );
+ BitmapDeviceSharedPtr pAlphaCopy(
+ cloneBitmapDevice( aSize,
+ shared_from_this()) );
+ basegfx::B2ITuple aGcc3WorkaroundTemporary;
+ const basegfx::B2IRange aAlphaRange( aGcc3WorkaroundTemporary,
+ aSize );
+ pAlphaCopy->drawBitmap(rAlphaMask,
+ aSrcRange,
+ aAlphaRange,
+ DrawMode_PAINT);
+ drawMaskedColor_i( aSrcColor, pAlphaCopy, aAlphaRange, aDestPoint, rClip );
+ }
+ else
+ {
+ drawMaskedColor_i( aSrcColor, rAlphaMask, aSrcRange, aDestPoint, rClip );
+ }
+ }
+ else
+ {
+ getGenericRenderer()->drawMaskedColor( aSrcColor, rAlphaMask,
+ rSrcRect, rDstPoint, rClip );
+ }
+ }
+}
+
+void BitmapDevice::drawMaskedBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode )
+{
+ OSL_ASSERT( rMask->getSize() == rSrcBitmap->getSize() );
+
+ const basegfx::B2IVector& rSrcSize( rSrcBitmap->getSize() );
+ const basegfx::B2IRange aSrcBounds( 0,0,rSrcSize.getX(),rSrcSize.getY() );
+ basegfx::B2IRange aSrcRange( rSrcRect );
+ basegfx::B2IRange aDestRange( rDstRect );
+
+ if( clipAreaImpl( aDestRange,
+ aSrcRange,
+ mpImpl->maBounds,
+ aSrcBounds ))
+ {
+ assertImageRange(aDestRange,mpImpl->maBounds);
+ assertImageRange(aSrcRange,aSrcBounds);
+
+ drawMaskedBitmap_i( rSrcBitmap, rMask, aSrcRange, aDestRange, drawMode );
+ }
+}
+
+void BitmapDevice::drawMaskedBitmap( const BitmapDeviceSharedPtr& rSrcBitmap,
+ const BitmapDeviceSharedPtr& rMask,
+ const basegfx::B2IRange& rSrcRect,
+ const basegfx::B2IRange& rDstRect,
+ DrawMode drawMode,
+ const BitmapDeviceSharedPtr& rClip )
+{
+ if( !rClip )
+ {
+ drawMaskedBitmap(rSrcBitmap,rMask,rSrcRect,rDstRect,drawMode);
+ return;
+ }
+
+ OSL_ASSERT( rMask->getSize() == rSrcBitmap->getSize() );
+
+ const basegfx::B2IVector& rSrcSize( rSrcBitmap->getSize() );
+ const basegfx::B2IRange aSrcBounds( 0,0,rSrcSize.getX(),rSrcSize.getY() );
+ basegfx::B2IRange aSrcRange( rSrcRect );
+ basegfx::B2IRange aDestRange( rDstRect );
+
+ if( clipAreaImpl( aDestRange,
+ aSrcRange,
+ mpImpl->maBounds,
+ aSrcBounds ))
+ {
+ assertImageRange(aDestRange,mpImpl->maBounds);
+ assertImageRange(aSrcRange,aSrcBounds);
+
+ if( isCompatibleClipMask( rClip ) )
+ {
+ drawMaskedBitmap_i( rSrcBitmap, rMask, aSrcRange, aDestRange, drawMode, rClip );
+ }
+ else
+ {
+ getGenericRenderer()->drawMaskedBitmap( rSrcBitmap, rMask, rSrcRect,
+ rDstRect, drawMode, rClip );
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------------
+
+/** Standard clip and alpha masks
+ */
+struct StdMasks
+{
+ typedef PixelFormatTraits_GREY1_MSB clipmask_format_traits;
+ typedef PixelFormatTraits_GREY8 alphamask_format_traits;
+
+ /// Clipmask: 0 means opaque
+ static const bool clipmask_polarity = false;
+
+ /// Alpha mask: 0 means fully transparent
+ static const bool alphamask_polarity = true;
+};
+
+//----------------------------------------------------------------------------------
+
+// Some compilers don't like the nested template wrap_accessor
+// reference in the parameter list - being slightly less type safe,
+// then.
+#ifndef BASEBMP_NO_NESTED_TEMPLATE_PARAMETER
+
+/// Produces a specialized renderer for the given pixel format
+template< class FormatTraits, class MaskTraits >
+BitmapDeviceSharedPtr createRenderer(
+ const basegfx::B2IRange& rBounds,
+ sal_Int32 nScanlineFormat,
+ sal_Int32 nScanlineStride,
+ sal_uInt8* pFirstScanline,
+ typename FormatTraits::raw_accessor_type const& rRawAccessor,
+ typename FormatTraits::accessor_selector::template wrap_accessor<
+ typename FormatTraits::raw_accessor_type>::type const& rAccessor,
+ boost::shared_array< sal_uInt8 > pMem,
+ const PaletteMemorySharedVector& pPal )
+
+#else
+
+template< class FormatTraits, class MaskTraits, class Accessor >
+BitmapDeviceSharedPtr createRenderer(
+ const basegfx::B2IRange& rBounds,
+ sal_Int32 nScanlineFormat,
+ sal_Int32 nScanlineStride,
+ sal_uInt8* pFirstScanline,
+ typename FormatTraits::raw_accessor_type const& rRawAccessor,
+ Accessor const& rAccessor,
+ boost::shared_array< sal_uInt8 > pMem,
+ const PaletteMemorySharedVector& pPal )
+
+#endif
+{
+ typedef typename FormatTraits::iterator_type Iterator;
+ typedef BitmapRenderer< Iterator,
+ typename FormatTraits::raw_accessor_type,
+ typename FormatTraits::accessor_selector,
+ MaskTraits > Renderer;
+
+ return BitmapDeviceSharedPtr(
+ new Renderer( rBounds,
+ nScanlineFormat,
+ nScanlineStride,
+ pFirstScanline,
+ Iterator(
+ reinterpret_cast<typename Iterator::value_type*>(
+ pFirstScanline),
+ nScanlineStride),
+ rRawAccessor,
+ rAccessor,
+ pMem,
+ pPal ));
+}
+
+/// Create standard grey level palette
+PaletteMemorySharedVector createStandardPalette(
+ const PaletteMemorySharedVector& pPal,
+ sal_Int32 nNumEntries )
+{
+ if( pPal || nNumEntries <= 0 )
+ return pPal;
+
+ boost::shared_ptr< std::vector<Color> > pLocalPal(
+ new std::vector<Color>(nNumEntries) );
+
+ const sal_Int32 nIncrement( 0x00FFFFFF/nNumEntries );
+ --nNumEntries;
+ for( sal_Int32 i=0, c=0; i<nNumEntries; ++i,c+=nIncrement )
+ pLocalPal->at(i) = Color(0xFF000000 | c);
+
+ pLocalPal->at(nNumEntries) = Color(0xFFFFFFFF);
+
+ return pLocalPal;
+}
+
+template< class FormatTraits, class MaskTraits >
+BitmapDeviceSharedPtr createRenderer(
+ const basegfx::B2IRange& rBounds,
+ sal_Int32 nScanlineFormat,
+ sal_Int32 nScanlineStride,
+ sal_uInt8* pFirstScanline,
+ boost::shared_array< sal_uInt8 > pMem,
+ const PaletteMemorySharedVector& pPal )
+{
+ return createRenderer<FormatTraits,
+ MaskTraits>(rBounds,
+ nScanlineFormat,
+ nScanlineStride,
+ pFirstScanline,
+ typename FormatTraits::raw_accessor_type(),
+ typename FormatTraits::accessor_selector::template
+ wrap_accessor<
+ typename FormatTraits::raw_accessor_type>::type(),
+ pMem,
+ pPal);
+}
+
+template< class FormatTraits, class MaskTraits >
+BitmapDeviceSharedPtr createRenderer(
+ const basegfx::B2IRange& rBounds,
+ sal_Int32 nScanlineFormat,
+ sal_Int32 nScanlineStride,
+ sal_uInt8* pFirstScanline,
+ boost::shared_array< sal_uInt8 > pMem,
+ PaletteMemorySharedVector pPal,
+ int nBitsPerPixel )
+{
+ pPal = createStandardPalette(pPal,
+ 1UL << nBitsPerPixel);
+
+ OSL_ASSERT(pPal);
+ return createRenderer<FormatTraits,
+ MaskTraits>(rBounds,
+ nScanlineFormat,
+ nScanlineStride,
+ pFirstScanline,
+ typename FormatTraits::raw_accessor_type(),
+ typename FormatTraits::accessor_selector::template
+ wrap_accessor<
+ typename FormatTraits::raw_accessor_type>::type(
+ &pPal->at(0),
+ pPal->size()),
+ pMem,
+ pPal);
+}
+
+//----------------------------------------------------------------------------------
+
+// TODO(Q3): consolidate with canvas/canvastools.hxx! Best move this
+// to o3tl or sal/bithacks.hxx ...
+
+/** Compute the next highest power of 2 of a 32-bit value
+
+ Code devised by Sean Anderson, in good ole HAKMEM
+ tradition.
+
+ @return 1 << (lg(x - 1) + 1)
+*/
+inline sal_uInt32 nextPow2( sal_uInt32 x )
+{
+ --x;
+ x |= x >> 1;
+ x |= x >> 2;
+ x |= x >> 4;
+ x |= x >> 8;
+ x |= x >> 16;
+
+ return ++x;
+}
+
+//----------------------------------------------------------------------------------
+
+namespace
+{
+BitmapDeviceSharedPtr createBitmapDeviceImpl( const basegfx::B2IVector& rSize,
+ bool bTopDown,
+ sal_Int32 nScanlineFormat,
+ boost::shared_array< sal_uInt8 > pMem,
+ PaletteMemorySharedVector pPal,
+ const basegfx::B2IRange* pSubset )
+{
+ if( nScanlineFormat <= Format::NONE ||
+ nScanlineFormat > Format::MAX )
+ return BitmapDeviceSharedPtr();
+
+ static const sal_uInt8 bitsPerPixel[] =
+ {
+ 0, // NONE
+ 1, // ONE_BIT_MSB_GREY
+ 1, // ONE_BIT_LSB_GREY
+ 1, // ONE_BIT_MSB_PAL
+ 1, // ONE_BIT_LSB_PAL
+ 4, // FOUR_BIT_MSB_GREY
+ 4, // FOUR_BIT_LSB_GREY
+ 4, // FOUR_BIT_MSB_PAL
+ 4, // FOUR_BIT_LSB_PAL
+ 8, // EIGHT_BIT_PAL
+ 8, // EIGHT_BIT_GREY
+ 16, // SIXTEEN_BIT_LSB_TC_MASK
+ 16, // SIXTEEN_BIT_MSB_TC_MASK
+ 24, // TWENTYFOUR_BIT_TC_MASK
+ 32, // THIRTYTWO_BIT_TC_MASK
+ 32, // THIRTYTWO_BIT_TC_MASK_ARGB
+ };
+
+ sal_Int32 nScanlineStride(0);
+
+ // round up to full 8 bit, divide by 8
+ nScanlineStride = (rSize.getX()*bitsPerPixel[nScanlineFormat] + 7) >> 3;
+
+ // rounded up to next full power-of-two number of bytes
+ const sal_uInt32 bytesPerPixel = nextPow2(
+ (bitsPerPixel[nScanlineFormat] + 7) >> 3);
+
+ // now make nScanlineStride a multiple of bytesPerPixel
+ nScanlineStride = (nScanlineStride + bytesPerPixel - 1) / bytesPerPixel * bytesPerPixel;
+
+ // factor in bottom-up scanline order case
+ nScanlineStride *= bTopDown ? 1 : -1;
+
+ const std::size_t nMemSize(
+ (nScanlineStride < 0 ? -nScanlineStride : nScanlineStride)*rSize.getY() );
+
+ if( !pMem )
+ {
+ pMem.reset(
+ reinterpret_cast<sal_uInt8*>(rtl_allocateMemory( nMemSize )),
+ &rtl_freeMemory );
+ rtl_zeroMemory(pMem.get(),nMemSize);
+ }
+
+ sal_uInt8* pFirstScanline = nScanlineStride < 0 ?
+ pMem.get() + nMemSize + nScanlineStride : pMem.get();
+
+ // shrink render area to given subset, if given
+ basegfx::B2IRange aBounds(0,0,rSize.getX(),rSize.getY());
+ if( pSubset )
+ aBounds.intersect( *pSubset );
+
+ switch( nScanlineFormat )
+ {
+ // ----------------------------------------------------------------------
+ // one bit formats
+
+ case Format::ONE_BIT_MSB_GREY:
+ return createRenderer<PixelFormatTraits_GREY1_MSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+ case Format::ONE_BIT_LSB_GREY:
+ return createRenderer<PixelFormatTraits_GREY1_LSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+ case Format::ONE_BIT_MSB_PAL:
+ return createRenderer<PixelFormatTraits_PAL1_MSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal,
+ bitsPerPixel[nScanlineFormat] );
+
+ case Format::ONE_BIT_LSB_PAL:
+ return createRenderer<PixelFormatTraits_PAL1_LSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal,
+ bitsPerPixel[nScanlineFormat] );
+
+
+ // ----------------------------------------------------------------------
+ // four bit formats
+
+ case Format::FOUR_BIT_MSB_GREY:
+ return createRenderer<PixelFormatTraits_GREY4_MSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+ case Format::FOUR_BIT_LSB_GREY:
+ return createRenderer<PixelFormatTraits_GREY4_LSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+ case Format::FOUR_BIT_MSB_PAL:
+ return createRenderer<PixelFormatTraits_PAL4_MSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal,
+ bitsPerPixel[nScanlineFormat] );
+
+ case Format::FOUR_BIT_LSB_PAL:
+ return createRenderer<PixelFormatTraits_PAL4_LSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal,
+ bitsPerPixel[nScanlineFormat] );
+
+
+ // ----------------------------------------------------------------------
+ // eight bit formats
+
+ case Format::EIGHT_BIT_GREY:
+ return createRenderer<PixelFormatTraits_GREY8,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+ case Format::EIGHT_BIT_PAL:
+ return createRenderer<PixelFormatTraits_PAL8,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal,
+ bitsPerPixel[nScanlineFormat] );
+
+
+ // ----------------------------------------------------------------------
+ // sixteen bit formats
+
+ case Format::SIXTEEN_BIT_LSB_TC_MASK:
+ return createRenderer<PixelFormatTraits_RGB16_565_LSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+ case Format::SIXTEEN_BIT_MSB_TC_MASK:
+ return createRenderer<PixelFormatTraits_RGB16_565_MSB,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+
+ // ----------------------------------------------------------------------
+ // twentyfour bit formats
+ case Format::TWENTYFOUR_BIT_TC_MASK:
+ return createRenderer<PixelFormatTraits_BGR24,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+
+ // ----------------------------------------------------------------------
+ // thirtytwo bit formats
+
+ case Format::THIRTYTWO_BIT_TC_MASK:
+ return createRenderer<PixelFormatTraits_RGB32_888,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+
+ case Format::THIRTYTWO_BIT_TC_MASK_ARGB:
+ return createRenderer<PixelFormatTraits_BGR32_888,StdMasks>(
+ aBounds, nScanlineFormat, nScanlineStride,
+ pFirstScanline, pMem, pPal );
+ }
+
+ // TODO(F3): other formats not yet implemented
+ return BitmapDeviceSharedPtr();
+}
+} // namespace
+
+
+BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
+ bool bTopDown,
+ sal_Int32 nScanlineFormat )
+{
+ return createBitmapDeviceImpl( rSize,
+ bTopDown,
+ nScanlineFormat,
+ boost::shared_array< sal_uInt8 >(),
+ PaletteMemorySharedVector(),
+ NULL );
+}
+
+BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
+ bool bTopDown,
+ sal_Int32 nScanlineFormat,
+ const PaletteMemorySharedVector& rPalette )
+{
+ return createBitmapDeviceImpl( rSize,
+ bTopDown,
+ nScanlineFormat,
+ boost::shared_array< sal_uInt8 >(),
+ rPalette,
+ NULL );
+}
+
+BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
+ bool bTopDown,
+ sal_Int32 nScanlineFormat,
+ const RawMemorySharedArray& rMem,
+ const PaletteMemorySharedVector& rPalette )
+{
+ return createBitmapDeviceImpl( rSize,
+ bTopDown,
+ nScanlineFormat,
+ rMem,
+ rPalette,
+ NULL );
+}
+
+BitmapDeviceSharedPtr subsetBitmapDevice( const BitmapDeviceSharedPtr& rProto,
+ const basegfx::B2IRange& rSubset )
+{
+ return createBitmapDeviceImpl( rProto->getSize(),
+ rProto->isTopDown(),
+ rProto->getScanlineFormat(),
+ rProto->getBuffer(),
+ rProto->getPalette(),
+ &rSubset );
+}
+
+BitmapDeviceSharedPtr cloneBitmapDevice( const basegfx::B2IVector& rSize,
+ const BitmapDeviceSharedPtr& rProto )
+{
+ return createBitmapDeviceImpl( rSize,
+ rProto->isTopDown(),
+ rProto->getScanlineFormat(),
+ boost::shared_array< sal_uInt8 >(),
+ rProto->getPalette(),
+ NULL );
+}
+
+//----------------------------------------------------------------------------------
+
+/// Clone our device, with GenericImageAccessor to handle all formats
+BitmapDeviceSharedPtr BitmapDevice::getGenericRenderer() const
+{
+ return mpImpl->mpGenericRenderer;
+}
+
+} // namespace basebmp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/source/debug.cxx b/basebmp/source/debug.cxx
new file mode 100644
index 000000000000..4e7abb0d613b
--- /dev/null
+++ b/basebmp/source/debug.cxx
@@ -0,0 +1,109 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include <osl/diagnose.h>
+
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/color.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+
+#include <iomanip>
+
+namespace basebmp
+{
+ namespace
+ {
+ static const char* getFormatString( sal_Int32 nScanlineFormat )
+ {
+ switch( nScanlineFormat )
+ {
+ case Format::ONE_BIT_MSB_GREY:
+ return "ONE_BIT_MSB_GREY";
+ case Format::ONE_BIT_LSB_GREY:
+ return "ONE_BIT_LSB_GREY";
+ case Format::ONE_BIT_MSB_PAL:
+ return "ONE_BIT_MSB_PAL";
+ case Format::ONE_BIT_LSB_PAL:
+ return "ONE_BIT_LSB_PAL";
+ case Format::FOUR_BIT_MSB_GREY:
+ return "FOUR_BIT_MSB_GREY";
+ case Format::FOUR_BIT_LSB_GREY:
+ return "FOUR_BIT_LSB_GREY";
+ case Format::FOUR_BIT_MSB_PAL:
+ return "FOUR_BIT_MSB_PAL";
+ case Format::FOUR_BIT_LSB_PAL:
+ return "FOUR_BIT_LSB_PAL";
+ case Format::EIGHT_BIT_PAL:
+ return "EIGHT_BIT_PAL";
+ case Format::EIGHT_BIT_GREY:
+ return "EIGHT_BIT_GREY";
+ case Format::SIXTEEN_BIT_LSB_TC_MASK:
+ return "SIXTEEN_BIT_LSB_TC_MASK";
+ case Format::SIXTEEN_BIT_MSB_TC_MASK:
+ return "SIXTEEN_BIT_MSB_TC_MASK";
+ case Format::TWENTYFOUR_BIT_TC_MASK:
+ return "TWENTYFOUR_BIT_TC_MASK";
+ case Format::THIRTYTWO_BIT_TC_MASK:
+ return "THIRTYTWO_BIT_TC_MASK";
+ default:
+ return "<unknown>";
+ }
+ }
+ }
+
+ void debugDump( const BitmapDeviceSharedPtr& rDevice,
+ std::ostream& rOutputStream )
+ {
+ const basegfx::B2IVector aSize( rDevice->getSize() );
+ const bool bTopDown( rDevice->isTopDown() );
+ const sal_Int32 nScanlineFormat( rDevice->getScanlineFormat() );
+
+ rOutputStream
+ << "/* basebmp::BitmapDevice content dump */" << std::endl
+ << "/* Width = " << aSize.getX() << " */" << std::endl
+ << "/* Height = " << aSize.getY() << " */" << std::endl
+ << "/* TopDown = " << bTopDown << " */" << std::endl
+ << "/* Format = " << getFormatString(nScanlineFormat) << " */" << std::endl
+ << "/* (dumped entries are already mapped RGBA color values) */" << std::endl
+ << std::endl;
+
+ rOutputStream << std::hex;
+ for( int y=0; y<aSize.getY(); ++y )
+ {
+ for( int x=0; x<aSize.getX(); ++x )
+ rOutputStream << std::setw(8) << (sal_uInt32)rDevice->getPixel( basegfx::B2IPoint(x,y) ).toInt32() << " ";
+ rOutputStream << std::endl;
+ }
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/source/intconversion.hxx b/basebmp/source/intconversion.hxx
new file mode 100644
index 000000000000..d18a88cfe912
--- /dev/null
+++ b/basebmp/source/intconversion.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 INCLUDED_BASEBMP_INTCONVERSION_HXX
+#define INCLUDED_BASEBMP_INTCONVERSION_HXX
+
+#include <vigra/rgbvalue.hxx>
+#include <functional>
+
+namespace basebmp
+{
+ // metafunctions to retrieve correct POD from/to basebmp::Color
+ //------------------------------------------------------------------------
+
+ /// type-safe conversion from RgbValue to packed int32
+ template< class RgbVal > struct UInt32FromRgbValue
+ {
+ sal_uInt32 operator()( RgbVal const& c ) const
+ {
+ return (c[0] << 16) | (c[1] << 8) | c[2];
+ }
+ };
+
+ /// type-safe conversion from packed int32 to RgbValue
+ template< class RgbVal > struct RgbValueFromUInt32
+ {
+ RgbVal operator()( sal_uInt32 c ) const
+ {
+ return RgbVal((c >> 16) & 0xFF,
+ (c >> 8) & 0xFF,
+ c & 0xFF);
+ }
+ };
+
+ /// Get converter from given data type to sal_uInt32
+ template< typename DataType > struct uInt32Converter
+ {
+ typedef std::identity<DataType> to;
+ typedef std::identity<DataType> from;
+ };
+ template< unsigned int RedIndex,
+ unsigned int GreenIndex,
+ unsigned int BlueIndex > struct uInt32Converter<
+ vigra::RGBValue< sal_uInt8,
+ RedIndex,
+ GreenIndex,
+ BlueIndex > >
+ {
+ typedef UInt32FromRgbValue<
+ vigra::RGBValue< sal_uInt8,
+ RedIndex,
+ GreenIndex,
+ BlueIndex > >
+ to;
+ typedef RgbValueFromUInt32<
+ vigra::RGBValue< sal_uInt8,
+ RedIndex,
+ GreenIndex,
+ BlueIndex > >
+ from;
+ };
+}
+
+#endif /* INCLUDED_BASEBMP_INTCONVERSION_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/source/makefile.mk b/basebmp/source/makefile.mk
new file mode 100644
index 000000000000..55b27cfa7565
--- /dev/null
+++ b/basebmp/source/makefile.mk
@@ -0,0 +1,76 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/
+
+PRJNAME=basebmp
+TARGET=wrapper
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+
+# TODO(F3) unify BASEBMP_NO_NESTED_TEMPLATE_PARAMETER and
+# VIGRA_WITHOUT_NESTED_TEMPLATES_PARAMS
+#
+# - VIGRA_WITHOUT_NESTED_TEMPLATES_PARAMS avoids template parameters
+# to templates - the template keyword is broken for SunCC
+# - VIGRA_HAS_LONG_LONG enables long long overloads (but appears to not work
+# reliably in some environments, and is thus not enabled)
+# - VIGRA_HAS_LONG_DOUBLE enables long double overloads
+
+.IF "$(OS)"!="WNT"
+CDEFS+= -DVIGRA_HAS_LONG_DOUBLE
+.ENDIF
+
+.IF "$(OS)"=="SOLARIS" && "$(COM)"!="GCC"
+CDEFS+= -DBASEBMP_NO_NESTED_TEMPLATE_PARAMETER -DVIGRA_WITHOUT_NESTED_TEMPLATE_PARAMS
+.ENDIF
+
+# SunStudio 12 (-m64 and -m32 modes): three test cases of the unit tests fail
+# if compiled with default -xalias_level (and optimization level -xO3)
+.IF "$(OS)"=="SOLARIS"
+# For Sun Studio 8 this switch does not work: compilation fails on bitmapdevice.cxx
+.IF "$(CCNUMVER)"!="00050005"
+CDEFS+=-xalias_level=compatible
+.ENDIF
+.ENDIF
+
+# --- Common ----------------------------------------------------------
+
+SLOFILES = \
+ $(SLO)$/bitmapdevice.obj \
+ $(SLO)$/debug.obj \
+ $(SLO)$/polypolygonrenderer.obj
+
+# $(SLO)$/genericintegerimageaccessor.obj \
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/basebmp/source/polypolygonrenderer.cxx b/basebmp/source/polypolygonrenderer.cxx
new file mode 100644
index 000000000000..ea561533f2de
--- /dev/null
+++ b/basebmp/source/polypolygonrenderer.cxx
@@ -0,0 +1,130 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "basebmp/polypolygonrenderer.hxx"
+
+#include <algorithm>
+
+
+namespace basebmp
+{
+namespace detail
+{
+ sal_uInt32 setupGlobalEdgeTable( VectorOfVectorOfVertices& rGET,
+ basegfx::B2DPolyPolygon const& rPolyPoly,
+ sal_Int32 nMinY )
+ {
+ sal_Int32 const nNumScanlines( (sal_Int32)rGET.size() );
+
+ // add all polygons to GET
+ for( sal_uInt32 i(0), nCount(rPolyPoly.count());
+ i<nCount;
+ ++i )
+ {
+ // add all vertices to GET
+ const basegfx::B2DPolygon& rPoly( rPolyPoly.getB2DPolygon(i) );
+ for( sal_uInt32 k(0), nVertices(rPoly.count());
+ k<nVertices;
+ ++k )
+ {
+ const basegfx::B2DPoint& rP1( rPoly.getB2DPoint(k) );
+ const basegfx::B2DPoint& rP2( rPoly.getB2DPoint( (k + 1) % nVertices ) );
+
+ const sal_Int32 nVertexYP1( basegfx::fround(rP1.getY()) );
+ const sal_Int32 nVertexYP2( basegfx::fround(rP2.getY()) );
+
+ // insert only vertices which are not strictly
+ // horizontal. Strictly horizontal vertices don't add
+ // any information that is not already present - due
+ // to their adjacent vertices.
+ if(nVertexYP1 != nVertexYP2)
+ {
+ if( nVertexYP2 < nVertexYP1 )
+ {
+ const sal_Int32 nStartScanline(nVertexYP2 - nMinY);
+
+ // edge direction is upwards - add with swapped vertices
+ if( nStartScanline < nNumScanlines )
+ rGET[ nStartScanline ].push_back( Vertex(rP2, rP1, false) );
+ }
+ else
+ {
+ const sal_Int32 nStartScanline(nVertexYP1 - nMinY);
+
+ if( nStartScanline < nNumScanlines )
+ rGET[ nStartScanline ].push_back( Vertex(rP1, rP2, true) );
+ }
+ }
+ }
+ }
+
+ // now sort all scanlines individually, with increasing x
+ // coordinates
+ VectorOfVectorOfVertices::iterator aIter( rGET.begin() );
+ const VectorOfVectorOfVertices::iterator aEnd( rGET.end() );
+ sal_uInt32 nVertexCount(0);
+ RasterConvertVertexComparator aComp;
+ while( aIter != aEnd )
+ {
+ std::sort( aIter->begin(),
+ aIter->end(),
+ aComp );
+ nVertexCount += aIter->size();
+
+ ++aIter;
+ }
+
+ return nVertexCount;
+ }
+
+ void sortAET( VectorOfVertexPtr& rAETSrc,
+ VectorOfVertexPtr& rAETDest )
+ {
+ static RasterConvertVertexComparator aComp;
+
+ rAETDest.clear();
+
+ // prune AET from ended edges
+ VectorOfVertexPtr::iterator iter( rAETSrc.begin() );
+ VectorOfVertexPtr::iterator const end( rAETSrc.end() );
+ while( iter != end )
+ {
+ if( (*iter)->mnYCounter > 0 )
+ rAETDest.push_back( *iter );
+ ++iter;
+ }
+
+ // stable sort is necessary, to avoid segment crossing where
+ // none was intended.
+ std::stable_sort( rAETDest.begin(), rAETDest.end(), aComp );
+ }
+
+} // namespace detail
+} // namespace basebmp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/basictest.cxx b/basebmp/test/basictest.cxx
new file mode 100644
index 000000000000..5b88c4a3bf40
--- /dev/null
+++ b/basebmp/test/basictest.cxx
@@ -0,0 +1,305 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "cppunit/plugin/TestPlugIn.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( mpDevice32bpp, output );
+*/
+
+class BasicTest : public CppUnit::TestFixture
+{
+public:
+ void colorTest()
+ {
+ Color aTestColor;
+
+ aTestColor = Color(0xDEADBEEF);
+ CPPUNIT_ASSERT_MESSAGE("unary constructor",
+ aTestColor.toInt32() == 0xDEADBEEF );
+
+ aTestColor = Color( 0x10, 0x20, 0xFF );
+ CPPUNIT_ASSERT_MESSAGE("ternary constructor",
+ aTestColor.toInt32() == 0x001020FF );
+
+ aTestColor.setRed( 0x0F );
+ CPPUNIT_ASSERT_MESSAGE("setRed()",
+ aTestColor.toInt32() == 0x00F20FF );
+
+ aTestColor.setGreen( 0x0F );
+ CPPUNIT_ASSERT_MESSAGE("setGreen()",
+ aTestColor.toInt32() == 0x00F0FFF );
+
+ aTestColor.setBlue( 0x10 );
+ CPPUNIT_ASSERT_MESSAGE("setBlue()",
+ aTestColor.toInt32() == 0x00F0F10 );
+
+ aTestColor.setGrey( 0x13 );
+ CPPUNIT_ASSERT_MESSAGE("setGrey()",
+ aTestColor.toInt32() == 0x00131313 );
+
+ aTestColor = Color( 0x10, 0x20, 0xFF );
+ CPPUNIT_ASSERT_MESSAGE("getRed()",
+ aTestColor.getRed() == 0x10 );
+ CPPUNIT_ASSERT_MESSAGE("getGreen()",
+ aTestColor.getGreen() == 0x20 );
+ CPPUNIT_ASSERT_MESSAGE("getBlue()",
+ aTestColor.getBlue() == 0xFF );
+
+ }
+
+ void testConstruction()
+ {
+ const basegfx::B2ISize aSize(101,101);
+ basegfx::B2ISize aSize2(aSize);
+ BitmapDeviceSharedPtr pDevice( createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL ));
+ CPPUNIT_ASSERT_MESSAGE("right size",
+ pDevice->getSize() == aSize2 );
+ CPPUNIT_ASSERT_MESSAGE("Top down format",
+ pDevice->isTopDown() == true );
+ CPPUNIT_ASSERT_MESSAGE("Scanline format",
+ pDevice->getScanlineFormat() == Format::ONE_BIT_MSB_PAL );
+ CPPUNIT_ASSERT_MESSAGE("Scanline len",
+ pDevice->getScanlineStride() == (aSize2.getY() + 7)/8 );
+ CPPUNIT_ASSERT_MESSAGE("Palette existence",
+ pDevice->getPalette() );
+ CPPUNIT_ASSERT_MESSAGE("Palette entry 0 is black",
+ (*pDevice->getPalette())[0] == Color(0) );
+ CPPUNIT_ASSERT_MESSAGE("Palette entry 1 is white",
+ (*pDevice->getPalette())[1] == Color(0xFFFFFFFF) );
+ }
+
+ void testPixelFuncs()
+ {
+ // 1bpp
+ const basegfx::B2ISize aSize(64,64);
+ BitmapDeviceSharedPtr pDevice( createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL ));
+
+ const basegfx::B2IPoint aPt(3,3);
+ const Color aCol(0xFFFFFFFF);
+ pDevice->setPixel( aPt, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #1",
+ pDevice->getPixel(aPt) == aCol);
+
+ const basegfx::B2IPoint aPt2(0,0);
+ const Color aCol2(0xFFFFFFFF);
+ pDevice->setPixel( aPt2, aCol2, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #2",
+ pDevice->getPixel(aPt2) == aCol2);
+
+ const basegfx::B2IPoint aPt3(aSize.getX()-1,aSize.getY()-1);
+ const Color aCol3(0x00000000);
+ pDevice->setPixel( aPt3, aCol3, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #3",
+ pDevice->getPixel(aPt3) == aCol3);
+
+ pDevice->setPixel( aPt3, aCol2, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #3.5",
+ pDevice->getPixel(aPt3) == aCol2);
+
+ const basegfx::B2IPoint aPt4(-100000,-100000);
+ pDevice->setPixel( aPt4, aCol3, DrawMode_PAINT );
+ const basegfx::B2IPoint aPt5(100000,100000);
+ pDevice->setPixel( aPt5, aCol3, DrawMode_PAINT );
+
+ sal_Int32 nPixel(countPixel(pDevice, aCol2));
+ const basegfx::B2IPoint aPt6(aSize.getX(),aSize.getY());
+ pDevice->setPixel( aPt6, aCol2, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("setPixel clipping",
+ countPixel(pDevice, aCol2) == nPixel);
+
+ CPPUNIT_ASSERT_MESSAGE("raw pixel value #1",
+ pDevice->getBuffer()[0] == 0x80);
+
+ // 1bit LSB
+ {
+ pDevice = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_LSB_PAL );
+
+ pDevice->setPixel( aPt2, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #4",
+ pDevice->getPixel(aPt2) == aCol);
+
+ const basegfx::B2IPoint aPt222(1,1);
+ pDevice->setPixel( aPt222, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #5",
+ pDevice->getPixel(aPt222) == aCol);
+
+ pDevice->setPixel( aPt3, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #6",
+ pDevice->getPixel(aPt3) == aCol);
+
+ CPPUNIT_ASSERT_MESSAGE("raw pixel value #2",
+ pDevice->getBuffer()[0] == 0x01);
+ CPPUNIT_ASSERT_MESSAGE("raw pixel value #3",
+ pDevice->getBuffer()[8] == 0x02);
+ }
+
+ // 8bit alpha
+ {
+ pDevice = createBitmapDevice( aSize,
+ true,
+ Format::EIGHT_BIT_GREY );
+
+ const Color aCol4(0x010101);
+ pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #4",
+ pDevice->getPixel(aPt) == aCol4);
+
+ const Color aCol5(0x0F0F0F);
+ pDevice->setPixel( aPt2, aCol5, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #5",
+ pDevice->getPixel(aPt2) == aCol5);
+
+ const Color aCol6(0xFFFFFF);
+ pDevice->setPixel( aPt3, aCol6, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #6",
+ pDevice->getPixel(aPt3) == aCol6);
+ }
+
+ // 16bpp
+ {
+ pDevice = createBitmapDevice( aSize,
+ true,
+ Format::SIXTEEN_BIT_LSB_TC_MASK );
+ const Color aCol7(0);
+ pDevice->clear( aCol7 );
+
+ const Color aCol4(0x00101010);
+ pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #7",
+ pDevice->getPixel(aPt) == aCol4);
+
+ const Color aCol5(0x00F0F0F0);
+ pDevice->setPixel( aPt2, aCol5, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #8",
+ pDevice->getPixel(aPt2) != aCol7);
+
+ const Color aCol6(0x00FFFFFF);
+ pDevice->setPixel( aPt3, aCol6, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #9",
+ pDevice->getPixel(aPt3) == aCol6);
+ }
+
+ // 24bpp
+ {
+ pDevice = createBitmapDevice( aSize,
+ true,
+ Format::TWENTYFOUR_BIT_TC_MASK );
+
+ const Color aCol4(0x01010101);
+ pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #10",
+ pDevice->getPixel(aPt) == aCol4);
+
+ const Color aCol5(0x0F3F2F1F);
+ pDevice->setPixel( aPt2, aCol5, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #11",
+ pDevice->getPixel(aPt2) == aCol5);
+
+ const Color aCol6(0xFFFFFFFF);
+ pDevice->setPixel( aPt3, aCol6, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #12",
+ pDevice->getPixel(aPt3) == aCol6);
+
+ CPPUNIT_ASSERT_MESSAGE("raw pixel value #4",
+ pDevice->getBuffer()[2] == 0x3F
+ && pDevice->getBuffer()[1] == 0x2F
+ && pDevice->getBuffer()[0] == 0x1F);
+ }
+
+ // 32bpp
+ {
+ pDevice = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+
+ const Color aCol4(0x01010101);
+ pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #13",
+ pDevice->getPixel(aPt) == aCol4);
+
+ const Color aCol5(0x0F0F0F0F);
+ pDevice->setPixel( aPt2, aCol5, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #14",
+ pDevice->getPixel(aPt2) == aCol5);
+
+ const Color aCol6(0xFFFFFFFF);
+ pDevice->setPixel( aPt3, aCol6, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #15",
+ pDevice->getPixel(aPt3) == aCol6);
+ }
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(BasicTest);
+ CPPUNIT_TEST(colorTest);
+ CPPUNIT_TEST(testConstruction);
+ CPPUNIT_TEST(testPixelFuncs);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(BasicTest);
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/bmpdemo.cxx b/basebmp/test/bmpdemo.cxx
new file mode 100644
index 000000000000..043d165c14d6
--- /dev/null
+++ b/basebmp/test/bmpdemo.cxx
@@ -0,0 +1,1258 @@
+/* -*- 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 _USE_MATH_DEFINES
+#define _USE_MATH_DEFINES // needed by Visual C++ for math constants
+#endif
+#include <math.h>
+
+#include <comphelper/processfactory.hxx>
+#include <comphelper/regpathhelper.hxx>
+#include <cppuhelper/servicefactory.hxx>
+#include <cppuhelper/bootstrap.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/registry/XSimpleRegistry.hpp>
+
+#include <ucbhelper/contentbroker.hxx>
+#include <ucbhelper/configurationkeys.hxx>
+
+#include <vcl/window.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/unowrap.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/bmpacc.hxx>
+
+#include <basegfx/polygon/b2dlinegeometry.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygonrasterconverter.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+
+#include <rtl/bootstrap.hxx>
+
+#include <vigra/metaprogramming.hxx>
+#include <vigra/static_assert.hxx>
+#include <vigra/basicimageview.hxx>
+
+#include <boost/static_assert.hpp>
+#include <algorithm>
+#include <iostream>
+#include <fstream>
+
+using namespace ::com::sun::star;
+
+
+namespace
+{
+
+/// template meta function: add const qualifier, if given 2nd type has it
+template<typename A, typename B> struct clone_const
+{
+ typedef B type;
+};
+template<typename A, typename B> struct clone_const<const A,B>
+{
+ typedef const B type;
+};
+
+template< class DestIterator, class DestAccessor > class Renderer :
+ public basegfx::B2DPolyPolygonRasterConverter
+{
+private:
+ typename DestIterator::value_type fillColor_;
+ typename DestIterator::value_type clearColor_;
+ DestIterator begin_;
+ DestAccessor accessor_;
+
+public:
+ Renderer(const basegfx::B2DPolyPolygon& rPolyPolyRaster,
+ typename DestIterator::value_type fillColor,
+ typename DestIterator::value_type clearColor,
+ DestIterator begin,
+ DestIterator end,
+ DestAccessor accessor ) :
+ B2DPolyPolygonRasterConverter(rPolyPolyRaster,
+ basegfx::B2DRange(0,0,
+ end.x - end.x,
+ begin.y - begin.y )),
+ fillColor_( fillColor ),
+ clearColor_( clearColor ),
+ begin_( begin ),
+ accessor_( accessor )
+ {
+ }
+
+ virtual void span(const double& rfXLeft,
+ const double& rfXRight,
+ sal_Int32 nY,
+ bool bOn )
+ {
+ DestIterator currIter( begin_ + vigra::Diff2D(0,nY) );
+ typename DestIterator::row_iterator rowIter( currIter.rowIterator() +
+ basegfx::fround(rfXLeft) );
+ typename DestIterator::row_iterator rowEnd( currIter.rowIterator() +
+ basegfx::fround(rfXRight) );
+ if( bOn )
+ while( rowIter != rowEnd )
+ {
+ accessor_.set(fillColor_, rowIter);
+ ++rowIter;
+ }
+ else
+ while( rowIter != rowEnd )
+ {
+ accessor_.set(accessor_(rowIter)*clearColor_, rowIter);
+ ++rowIter;
+ }
+ }
+};
+
+template< class DestIterator, class DestAccessor >
+ std::auto_ptr< Renderer< DestIterator, DestAccessor > > makeRenderer(
+ const basegfx::B2DPolyPolygon& rPolyPolyRaster,
+ typename DestIterator::value_type fillColor,
+ typename DestIterator::value_type clearColor,
+ vigra::triple<DestIterator, DestIterator, DestAccessor> dest )
+{
+ return std::auto_ptr< Renderer< DestIterator, DestAccessor > >(
+ new Renderer< DestIterator, DestAccessor >(rPolyPolyRaster,
+ fillColor,
+ clearColor,
+ dest.first,
+ dest.second,
+ dest.third));
+}
+
+
+// changed semantics re. DirectionSelector<StridedArrayTag>: stride
+// now counts in <em>raw</em> bytes!
+template< typename T > class StridedArrayIterator
+{
+public:
+ typedef typename clone_const<T, unsigned char>::type internal_type;
+
+ StridedArrayIterator(int stride, T* ptr = 0) :
+ stride_(stride),
+ current_(reinterpret_cast<internal_type*>(ptr))
+ {}
+
+ /// Copy from other StridedArrayIterator, plus given offset
+ StridedArrayIterator( StridedArrayIterator const& rSrc,
+ int offset ) :
+ stride_(rSrc.stride_),
+ current_(reinterpret_cast<internal_type*>(
+ reinterpret_cast<T*>(rSrc.current_)+offset))
+ {}
+
+ void operator++() {current_ += stride_; }
+ void operator++(int) {current_ += stride_; }
+ void operator--() {current_ -= stride_; }
+ void operator--(int) {current_ -= stride_; }
+ void operator+=(int dy) {current_ += dy*stride_; }
+ void operator-=(int dy) {current_ -= dy*stride_; }
+
+ bool operator==(StridedArrayIterator const & rhs) const
+ { return (current_ == rhs.current_); }
+
+ bool operator!=(StridedArrayIterator const & rhs) const
+ { return (current_ != rhs.current_); }
+
+ bool operator<(StridedArrayIterator const & rhs) const
+ { return (current_ < rhs.current_); }
+
+ bool operator<=(StridedArrayIterator const & rhs) const
+ { return (current_ <= rhs.current_); }
+
+ bool operator>(StridedArrayIterator const & rhs) const
+ { return (current_ > rhs.current_); }
+
+ bool operator>=(StridedArrayIterator const & rhs) const
+ { return (current_ >= rhs.current_); }
+
+ int operator-(StridedArrayIterator const & rhs) const
+ { return (current_ - rhs.current_) / stride_; }
+
+ T* operator()() const
+ { return reinterpret_cast<T*>(current_); }
+
+ T* operator()(int d) const
+ { return reinterpret_cast<T*>(current_ + d*stride_); }
+
+ int stride_;
+ internal_type* current_;
+};
+
+/// template meta function: remove const qualifier from plain type
+template <typename T> struct remove_const
+{
+ typedef T type;
+};
+template <typename T> struct remove_const<const T>
+{
+ typedef T type;
+};
+
+/// returns true, if given number is strictly less than 0
+template< typename T > inline bool is_negative( T x )
+{
+ return x < 0;
+}
+
+/// Overload for ints (branch-free)
+inline bool is_negative( int x )
+{
+ // force logic shift (result for signed shift right is undefined)
+ return static_cast<unsigned int>(x) >> (sizeof(int)*8-1);
+}
+
+/// Get bitmask for data at given intra-word position, for given bit depth
+template< typename data_type, int bits_per_pixel, bool MsbFirst, typename difference_type > inline data_type get_mask( difference_type d )
+{
+ BOOST_STATIC_ASSERT(bits_per_pixel > 0);
+ BOOST_STATIC_ASSERT(sizeof(data_type)*8 % bits_per_pixel == 0);
+ BOOST_STATIC_ASSERT(sizeof(data_type)*8 / bits_per_pixel > 1);
+ BOOST_STATIC_ASSERT(vigra::TypeTraits<data_type>::isPOD::asBool);
+
+ const unsigned int nIntraWordPositions( sizeof(data_type)*8 / bits_per_pixel );
+
+ // create bits_per_pixel 1s shift to intra-word position
+ return ((~(~0 << bits_per_pixel)) << bits_per_pixel*(MsbFirst ?
+ (nIntraWordPositions-1 - (d % nIntraWordPositions)) :
+ (d % nIntraWordPositions)));
+}
+
+template< int num_intraword_positions, int bits_per_pixel, bool MsbFirst, typename difference_type > inline difference_type get_shift( difference_type remainder )
+{
+ return bits_per_pixel*(MsbFirst ?
+ (num_intraword_positions - 1 - remainder) :
+ remainder);
+}
+
+template< typename Datatype,
+ typename Valuetype,
+ int bits_per_pixel,
+ bool MsbFirst > class PackedPixelColumnIterator
+{
+public:
+ // no reference, no index_reference type here
+ typedef Datatype data_type;
+ typedef Valuetype value_type;
+ typedef int difference_type;
+ typedef image_traverser_tag iterator_category;
+
+ typedef typename remove_const<data_type>::type mask_type;
+ typedef data_type* pointer;
+ typedef StridedArrayIterator< data_type > MoveY;
+
+ enum {
+ /** The number of pixel within a single data_type value
+ */
+ num_intraword_positions=sizeof(data_type)*8/bits_per_pixel,
+ /** Bit mask for one pixel (least significant bits)
+ */
+ bit_mask=~(~0 << bits_per_pixel)
+ };
+
+private:
+ MoveY y;
+ mask_type mask_;
+ difference_type shift_;
+
+ void inc()
+ {
+ ++y;
+ }
+
+ void dec()
+ {
+ --y;
+ }
+
+ bool equal( PackedPixelColumnIterator const & rhs ) const
+ {
+ return rhs.y == y;
+ }
+
+ bool less( PackedPixelColumnIterator const & rhs ) const
+ {
+ return y < rhs.y;
+ }
+
+public:
+ PackedPixelColumnIterator() :
+ y(0),
+ mask_( get_mask<data_type, bits_per_pixel, MsbFirst, difference_type>(0) ),
+ shift_( get_shift<num_intraword_positions, bits_per_pixel, MsbFirst, difference_type>(0) )
+ {}
+
+ PackedPixelColumnIterator( const MoveY& base, difference_type remainder ) :
+ y(base),
+ mask_( get_mask<data_type, bits_per_pixel, MsbFirst>(remainder) ),
+ shift_( get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder) )
+ {}
+
+ PackedPixelColumnIterator& operator+=( difference_type d )
+ {
+ y += d;
+ return *this;
+ }
+
+ PackedPixelColumnIterator& operator-=( difference_type d )
+ {
+ y -= d;
+ return *this;
+ }
+
+ PackedPixelColumnIterator operator+( difference_type d )
+ {
+ PackedPixelColumnIterator res(*this);
+ res += d;
+ return res;
+ }
+
+ PackedPixelColumnIterator operator-( difference_type d )
+ {
+ PackedPixelColumnIterator res(*this);
+ res -= d;
+ return res;
+ }
+
+ PackedPixelColumnIterator& operator++()
+ {
+ inc();
+ return *this;
+ }
+
+ PackedPixelColumnIterator& operator--()
+ {
+ dec();
+ return *this;
+ }
+
+ PackedPixelColumnIterator operator++(int)
+ {
+ PackedPixelColumnIterator res(*this);
+ res.inc();
+ return res;
+ }
+
+ PackedPixelColumnIterator operator--(int)
+ {
+ PackedPixelColumnIterator res(*this);
+ res.dec();
+ return res;
+ }
+
+ bool operator==(PackedPixelColumnIterator const & rhs) const
+ {
+ return equal( rhs );
+ }
+
+ bool operator!=(PackedPixelColumnIterator const & rhs) const
+ {
+ return !equal( rhs );
+ }
+
+ bool operator<(PackedPixelColumnIterator const & rhs) const
+ {
+ return less(rhs);
+ }
+
+ bool operator<=(PackedPixelColumnIterator const & rhs) const
+ {
+ return !less(rhs);
+ }
+
+ bool operator>(PackedPixelColumnIterator const & rhs) const
+ {
+ return rhs.less(*this);
+ }
+
+ bool operator>=(PackedPixelColumnIterator const & rhs) const
+ {
+ return !rhs.less(*this);
+ }
+
+ difference_type operator-(PackedPixelColumnIterator const & rhs) const
+ {
+ return y - rhs.y;
+ }
+
+ value_type get() const
+ {
+ // TODO(Q3): use traits to get unsigned type for data_type (if
+ // not already)
+ return static_cast<unsigned int>(*y() & mask_) >> shift_;
+ }
+
+ value_type get(difference_type d) const
+ {
+ // TODO(Q3): use traits to get unsigned type for data_type (if
+ // not already)
+ return static_cast<unsigned int>(*y(d) & mask_) >> shift_;
+ }
+
+ void set( value_type v ) const
+ {
+ const value_type pixel_value( (v << shift_) & mask_ );
+ *y() = (*y() & ~mask_) | pixel_value;
+ }
+
+ void set( value_type v, difference_type d ) const
+ {
+ const value_type pixel_value( (v << shift_) & mask_ );
+ *y(d) = (*y(d) & ~mask_) | pixel_value;
+ }
+};
+
+template< typename Datatype,
+ typename Valuetype,
+ int bits_per_pixel,
+ bool MsbFirst > class PackedPixelRowIterator
+{
+public:
+ // no reference, no index_reference type here
+ typedef Datatype data_type;
+ typedef Valuetype value_type;
+ typedef int difference_type;
+ typedef image_traverser_tag iterator_category;
+
+ typedef typename remove_const<data_type>::type mask_type;
+ typedef data_type* pointer;
+
+ enum {
+ /** The number of pixel within a single data_type value
+ */
+ num_intraword_positions=sizeof(data_type)*8/bits_per_pixel,
+ /** Bit mask for one pixel (least significant bits)
+ */
+ bit_mask=~(~0 << bits_per_pixel)
+ };
+
+private:
+ pointer data_;
+ mask_type mask_;
+ difference_type remainder_;
+
+ void update_mask()
+ {
+ mask_ = get_mask<data_type, bits_per_pixel, MsbFirst>(remainder_);
+ }
+
+ void inc()
+ {
+ const difference_type newValue( remainder_ + 1 );
+ const difference_type data_offset( newValue / num_intraword_positions );
+
+ data_ += data_offset;
+ remainder_ = newValue % num_intraword_positions;
+
+ const mask_type shifted_mask(
+ MsbFirst ?
+ // TODO(Q3): use traits to get unsigned type for data_type
+ // (if not already)
+ static_cast<unsigned int>(mask_) >> bits_per_pixel :
+ mask_ << bits_per_pixel );
+
+ // data_offset is 0 for shifted mask, and 1 for wrapped-around mask
+ mask_ = (1-data_offset)*shifted_mask + data_offset*(MsbFirst ?
+ bit_mask << bits_per_pixel*(num_intraword_positions-1) :
+ bit_mask);
+ }
+
+ void dec()
+ {
+ const difference_type newValue( remainder_ - 1 );
+ const bool isNegative( is_negative(newValue) );
+ const difference_type newRemainder( newValue % num_intraword_positions );
+
+ // calc data_ += newValue / num_intraword_positions;
+ // remainder_ = newRemainder;
+ // for newValue >= 0, and
+ // data_ += newValue / num_intraword_positions - 1;
+ // remainder_ = num_intraword_positions - newRemainder;
+ // (to force remainder_ to be positive).
+ // This is branch-free, if is_negative() is branch-free
+ const difference_type data_offset( newValue / num_intraword_positions - isNegative );
+ data_ += data_offset;
+ remainder_ = newRemainder + isNegative*num_intraword_positions;
+
+ const mask_type shifted_mask(
+ MsbFirst ?
+ mask_ << bits_per_pixel :
+ // TODO(Q3): use traits to get unsigned type for data_type
+ // (if not already)
+ static_cast<unsigned int>(mask_) >> bits_per_pixel );
+
+ // data_offset is 0 for shifted mask, and 1 for wrapped-around mask
+ mask_ = (1-data_offset)*shifted_mask + data_offset*(MsbFirst ?
+ bit_mask :
+ bit_mask << bits_per_pixel*(num_intraword_positions-1));
+ }
+
+ bool equal( PackedPixelRowIterator const & rhs ) const
+ {
+ return rhs.data_ == data_ && rhs.remainder_ == remainder_;
+ }
+
+ bool less( PackedPixelRowIterator const & rhs ) const
+ {
+ return data_ == rhs.data_ ?
+ (remainder_ < rhs.remainder_) :
+ (data_ < rhs.data_);
+ }
+
+public:
+ PackedPixelRowIterator() :
+ data_(0),
+ mask_( get_mask<data_type, bits_per_pixel, MsbFirst, difference_type>(0) ),
+ remainder_(0)
+ {}
+
+ explicit PackedPixelRowIterator( pointer base ) :
+ data_(base),
+ mask_( get_mask<data_type, bits_per_pixel, MsbFirst, difference_type>(0) ),
+ remainder_(0)
+ {}
+
+ PackedPixelRowIterator& operator+=( difference_type d )
+ {
+ const difference_type newValue( remainder_ + d );
+
+ data_ += newValue / num_intraword_positions;
+ remainder_ = newValue % num_intraword_positions;
+ update_mask();
+
+ return *this;
+ }
+
+ PackedPixelRowIterator& operator-=( difference_type d )
+ {
+ const difference_type newValue( remainder_ - d );
+ const bool isNegative( is_negative(newValue) );
+ const difference_type newRemainder( newValue % num_intraword_positions );
+
+ // calc data_ += newValue / num_intraword_positions;
+ // remainder_ = newRemainder;
+ // for newValue >= 0, and
+ // data_ += newValue / num_intraword_positions - 1;
+ // remainder_ = num_intraword_positions - newRemainder;
+ // (to force remainder_ to be positive).
+ // This is branch-free, if is_negative() is branch-free
+ data_ += newValue / num_intraword_positions - isNegative;
+ remainder_ = newRemainder + isNegative*(num_intraword_positions - 2*newRemainder);
+ update_mask();
+
+ return *this;
+ }
+
+ PackedPixelRowIterator operator+( difference_type d )
+ {
+ PackedPixelRowIterator res(*this);
+ res += d;
+ return res;
+ }
+
+ PackedPixelRowIterator operator-( difference_type d )
+ {
+ PackedPixelRowIterator res(*this);
+ res -= d;
+ return res;
+ }
+
+ PackedPixelRowIterator& operator++()
+ {
+ inc();
+ return *this;
+ }
+
+ PackedPixelRowIterator& operator--()
+ {
+ dec();
+ return *this;
+ }
+
+ PackedPixelRowIterator operator++(int)
+ {
+ PackedPixelRowIterator res(*this);
+ res.inc();
+ return res;
+ }
+
+ PackedPixelRowIterator operator--(int)
+ {
+ PackedPixelRowIterator res(*this);
+ res.dec();
+ return res;
+ }
+
+ bool operator==(PackedPixelRowIterator const & rhs) const
+ {
+ return equal( rhs );
+ }
+
+ bool operator!=(PackedPixelRowIterator const & rhs) const
+ {
+ return !equal( rhs );
+ }
+
+ bool operator<(PackedPixelRowIterator const & rhs) const
+ {
+ return less(rhs);
+ }
+
+ bool operator<=(PackedPixelRowIterator const & rhs) const
+ {
+ return !less(rhs);
+ }
+
+ bool operator>(PackedPixelRowIterator const & rhs) const
+ {
+ return rhs.less(*this);
+ }
+
+ bool operator>=(PackedPixelRowIterator const & rhs) const
+ {
+ return !rhs.less(*this);
+ }
+
+ difference_type operator-(PackedPixelRowIterator const & rhs) const
+ {
+ return (data_ - rhs.data_)*num_intraword_positions + (remainder_ - rhs.remainder_);
+ }
+
+ value_type get() const
+ {
+ // TODO(Q3): use traits to get unsigned type for data_type (if
+ // not already)
+ return static_cast<unsigned int>(*data_ & mask_) >>
+ get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder_);
+ }
+
+ value_type get(difference_type d) const
+ {
+ PackedPixelRowIterator tmp(*this);
+ tmp += d;
+ return tmp.get();
+ }
+
+ void set( value_type v ) const
+ {
+ const value_type pixel_value(
+ (v <<
+ get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder_))
+ & mask_ );
+ *data_ = (*data_ & ~mask_) | pixel_value;
+ }
+
+ void set( value_type v, difference_type d ) const
+ {
+ PackedPixelRowIterator tmp(*this);
+ tmp += d;
+ tmp.set(v);
+ }
+};
+
+template< typename Datatype,
+ typename Valuetype,
+ int bits_per_pixel,
+ bool MsbFirst > class PackedPixelIterator
+{
+public:
+ // no reference, no index_reference type here
+ typedef Datatype data_type;
+ typedef Valuetype value_type;
+ typedef vigra::Diff2D difference_type;
+ typedef image_traverser_tag iterator_category;
+ typedef PackedPixelRowIterator<data_type,
+ value_type,
+ bits_per_pixel,
+ MsbFirst> row_iterator;
+ typedef PackedPixelColumnIterator<data_type,
+ value_type,
+ bits_per_pixel,
+ MsbFirst> column_iterator;
+
+ typedef data_type* pointer;
+ typedef int MoveX;
+ typedef StridedArrayIterator< data_type > MoveY;
+
+ enum {
+ /** The number of pixel within a single data_type value
+ */
+ num_intraword_positions=sizeof(data_type)*8/bits_per_pixel,
+ /** Bit mask for one pixel (least significant bits)
+ */
+ bit_mask=~(~0 << bits_per_pixel)
+ };
+
+ // TODO(F2): direction of iteration (ImageIterator can be made to
+ // run backwards)
+
+private:
+ pointer current() const
+ {
+ return y() + (x / num_intraword_positions);
+ }
+
+ pointer current(int dx, int dy) const
+ {
+ return y(dy) + ((x+dx)/num_intraword_positions);
+ }
+
+ bool equal(PackedPixelIterator const & rhs) const
+ {
+ return (x == rhs.x) && (y == rhs.y);
+ }
+
+public:
+ PackedPixelIterator() :
+ x(0),
+ y(0)
+ {}
+
+ PackedPixelIterator(pointer base, int ystride) :
+ x(0),
+ y(ystride,base)
+ {}
+
+ bool operator==(PackedPixelIterator const & rhs) const
+ {
+ return equal(rhs);
+ }
+
+ bool operator!=(PackedPixelIterator const & rhs) const
+ {
+ return !equal(rhs);
+ }
+
+ difference_type operator-(PackedPixelIterator const & rhs) const
+ {
+ return difference_type(x - rhs.x, y - rhs.y);
+ }
+
+ MoveX x;
+ MoveY y;
+
+ PackedPixelIterator & operator+=(difference_type const & s)
+ {
+ x += s.x;
+ y += s.y;
+ return *this;
+ }
+
+ PackedPixelIterator & operator-=(difference_type const & s)
+ {
+ x -= s.x;
+ y -= s.y;
+ return *this;
+ }
+
+ PackedPixelIterator operator+(difference_type const & s) const
+ {
+ PackedPixelIterator ret(*this);
+ ret += s;
+ return ret;
+ }
+
+ PackedPixelIterator operator-(difference_type const & s) const
+ {
+ PackedPixelIterator ret(*this);
+ ret -= s;
+ return ret;
+ }
+
+ row_iterator rowIterator() const
+ {
+ return row_iterator(current());
+ }
+
+ column_iterator columnIterator() const
+ {
+ return column_iterator(MoveY(y,
+ x / num_intraword_positions),
+ x % num_intraword_positions);
+ }
+
+ value_type get() const
+ {
+ const int remainder( x() % num_intraword_positions );
+
+ // TODO(Q3): use traits to get unsigned type for data_type (if
+ // not already)
+ return (static_cast<unsigned int>(*current() &
+ get_mask<data_type, bits_per_pixel, MsbFirst>(remainder))
+ >> (MsbFirst ?
+ (num_intraword_positions - remainder) :
+ remainder));
+ }
+
+ value_type get(difference_type const & d) const
+ {
+ const int remainder( x(d.x) % num_intraword_positions );
+
+ // TODO(Q3): use traits to get unsigned type for data_type (if
+ // not already)
+ return (static_cast<unsigned int>(*current(d.x,d.y) &
+ get_mask<data_type, bits_per_pixel, MsbFirst>(remainder))
+ >> get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder));
+ }
+
+ void set( value_type v ) const
+ {
+ const int remainder( x() % num_intraword_positions );
+ const int mask( get_mask<data_type, bits_per_pixel, MsbFirst>(remainder) );
+ const value_type pixel_value(
+ (v <<
+ get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder))
+ & mask );
+ pointer p = current();
+ *p = (*p & ~mask) | pixel_value;
+ }
+
+ void set( value_type v, difference_type const & d ) const
+ {
+ const int remainder( x(d.x) % num_intraword_positions );
+ const int mask( get_mask<data_type, bits_per_pixel, MsbFirst>(remainder) );
+ const value_type pixel_value(
+ (v <<
+ get_shift<num_intraword_positions, bits_per_pixel, MsbFirst>(remainder))
+ & mask );
+ pointer p = current(d.x,d.y);
+ *p = (*p & ~mask) | pixel_value;
+ }
+};
+
+
+/** Access (possibly packed-pixel) data via palette indirection
+ */
+template< typename Valuetype, typename Datatype > class PaletteImageAccessor
+{
+ public:
+ typedef Valuetype value_type;
+ typedef Datatype data_type;
+ typedef typename remove_const<data_type>::type count_type;
+
+
+private:
+ const BitmapColor* palette;
+ count_type num_entries;
+
+ double norm( BitmapColor const& rLHS,
+ BitmapColor const& rRHS ) const
+ {
+ // convert RGBValue's linear space to a normed linear space
+ return sqrt(
+ vigra::sq(rLHS.GetRed()-rRHS.GetRed()) +
+ vigra::sq(rLHS.GetGreen()-rRHS.GetGreen()) +
+ vigra::sq(rLHS.GetBlue()-rRHS.GetBlue()) );
+ }
+
+ data_type find_best_match(value_type const& v) const
+ {
+ // TODO(F3): not generic!!!
+ const BitmapColor aTmpCol(v.red(),
+ v.green(),
+ v.blue());
+
+ // TODO(P3): use table-based/octree approach here!
+ const BitmapColor* best_entry;
+ const BitmapColor* palette_end( palette+num_entries );
+ if( (best_entry=std::find( palette, palette_end, aTmpCol)) != palette_end )
+ return best_entry-palette;
+
+ // TODO(F3): HACK. Need palette traits, and an error function
+ // here. We blatantly assume value_type is a normed linear
+ // space.
+ const BitmapColor* curr_entry( palette );
+ best_entry = curr_entry;
+ while( curr_entry != palette_end )
+ {
+ if( norm(*curr_entry,*best_entry) > norm(*curr_entry,aTmpCol) )
+ best_entry = curr_entry;
+
+ ++curr_entry;
+ }
+
+ return best_entry-palette;
+ }
+
+ value_type toCol( BitmapColor const& rCol ) const
+ {
+ return value_type(rCol.GetRed(),rCol.GetGreen(),rCol.GetBlue());
+ }
+
+public:
+ PaletteImageAccessor() :
+ palette(0),
+ num_entries(0)
+ {}
+
+ PaletteImageAccessor( const BitmapColor* pPalette,
+ data_type entries ) :
+ palette(pPalette),
+ num_entries(entries)
+ {}
+
+ template< class Iterator >
+ value_type operator()(Iterator const& i) const { return toCol(palette[i.get()]); }
+ value_type operator()(data_type const* i) const { return toCol(palette[*i]); }
+
+ template< class Iterator, class Difference >
+ value_type operator()(Iterator const& i, Difference const& diff) const
+ {
+ return toCol(palette[i.get(diff)]);
+ }
+
+ template< typename V, class Iterator >
+ void set(V const& value, Iterator const& i) const
+ {
+ i.set(
+ find_best_match(
+ vigra::detail::RequiresExplicitCast<value_type>::cast(value) ));
+ }
+
+ template< typename V, class Iterator, class Difference >
+ void set(V const& value, Iterator const& i, Difference const& diff) const
+ {
+ i.set(
+ find_best_match(
+ vigra::detail::RequiresExplicitCast<value_type>::cast(value)),
+ diff );
+ }
+};
+
+}
+
+
+class TestApp : public Application
+{
+public:
+ virtual void Main();
+ virtual USHORT Exception( USHORT nError );
+};
+
+class TestWindow : public Dialog
+{
+ public:
+ TestWindow() : Dialog( (Window *) NULL )
+ {
+ SetText( rtl::OUString::createFromAscii( "VIGRA test" ) );
+ SetSizePixel( Size( 1024, 1024 ) );
+ EnablePaint( true );
+ Show();
+ }
+ virtual ~TestWindow() {}
+ virtual void MouseButtonUp( const MouseEvent& /*rMEvt*/ )
+ {
+ //TODO: do something cool
+ EndDialog();
+ }
+ virtual void Paint( const Rectangle& rRect );
+};
+
+
+static basegfx::B2IPoint project( const basegfx::B2IPoint& rPoint )
+{
+ const double angle_x = M_PI / 6.0;
+ const double angle_z = M_PI / 6.0;
+
+ // transform planar coordinates to 3d
+ double x = rPoint.getX();
+ double y = rPoint.getY();
+ //double z = 0;
+
+ // rotate around X axis
+ double x1 = x;
+ double y1 = y * cos( angle_x );
+ double z1 = y * sin( angle_x );
+
+ // rotate around Z axis
+ double x2 = x1 * cos( angle_z ) + y1 * sin( angle_z );
+ //double y2 = y1 * cos( angle_z ) - x1 * sin( angle_z );
+ double z2 = z1;
+
+ //return basegfx::B2IPoint( (sal_Int32)3*x2, (sal_Int32)3*z2 );
+ return basegfx::B2IPoint( (sal_Int32)(6*x2), (sal_Int32)(6*z2) );
+}
+
+static basebmp::Color approachColor( const basebmp::Color& rFrom, const basebmp::Color& rTo )
+{
+ basebmp::Color aColor;
+ UINT8 nDiff;
+ // approach red
+ if( rFrom.getRed() < rTo.getRed() )
+ {
+ nDiff = rTo.getRed() - rFrom.getRed();
+ aColor.setRed( rFrom.getRed() + ( nDiff < 10 ? nDiff : 10 ) );
+ }
+ else if( rFrom.getRed() > rTo.getRed() )
+ {
+ nDiff = rFrom.getRed() - rTo.getRed();
+ aColor.setRed( rFrom.getRed() - ( nDiff < 10 ? nDiff : 10 ) );
+ }
+ else
+ aColor.setRed( rFrom.getRed() );
+
+ // approach Green
+ if( rFrom.getGreen() < rTo.getGreen() )
+ {
+ nDiff = rTo.getGreen() - rFrom.getGreen();
+ aColor.setGreen( rFrom.getGreen() + ( nDiff < 10 ? nDiff : 10 ) );
+ }
+ else if( rFrom.getGreen() > rTo.getGreen() )
+ {
+ nDiff = rFrom.getGreen() - rTo.getGreen();
+ aColor.setGreen( rFrom.getGreen() - ( nDiff < 10 ? nDiff : 10 ) );
+ }
+ else
+ aColor.setGreen( rFrom.getGreen() );
+
+ // approach blue
+ if( rFrom.getBlue() < rTo.getBlue() )
+ {
+ nDiff = rTo.getBlue() - rFrom.getBlue();
+ aColor.setBlue( rFrom.getBlue() + ( nDiff < 10 ? nDiff : 10 ) );
+ }
+ else if( rFrom.getBlue() > rTo.getBlue() )
+ {
+ nDiff = rFrom.getBlue() - rTo.getBlue();
+ aColor.setBlue( rFrom.getBlue() - ( nDiff < 10 ? nDiff : 10 ) );
+ }
+ else
+ aColor.setBlue( rFrom.getBlue() );
+
+ return aColor;
+}
+
+#define DELTA 5.0
+
+
+
+void TestWindow::Paint( const Rectangle& /*rRect*/ )
+{
+ basegfx::B2ISize aTestSize(1000,1000);
+ basebmp::BitmapDeviceSharedPtr pDevice( basebmp::createBitmapDevice( aTestSize,
+ false,
+ basebmp::Format::THIRTYTWO_BIT_TC_MASK ));
+
+ {
+ ::rtl::OUString aSvg;
+ basegfx::B2DPolyPolygon aPoly;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m0 0 h7 v7 h-7 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m2 2 h3 v3 h-3 z" ) );
+
+ pDevice->fillPolyPolygon(
+ aPoly,
+ basebmp::Color(0xFFFFFFFF),
+ basebmp::DrawMode_PAINT );
+ }
+
+ {
+ basebmp::BitmapDeviceSharedPtr pMask( basebmp::createBitmapDevice( aTestSize,
+ false,
+ basebmp::Format::ONE_BIT_MSB_GREY ));
+
+ const basegfx::B2IPoint aPt111(10,10);
+ const basegfx::B2IPoint aPt222(0,10);
+ const basebmp::Color aCol333(0xFFFFFFFF);
+ pMask->drawLine( aPt111, aPt222, aCol333, basebmp::DrawMode_PAINT );
+
+
+ ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0 h5 l5 5 v5 h-5 l-5-5 z" );
+ basegfx::B2DPolyPolygon aPoly;
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ pMask->clear(basebmp::Color(0xFFFFFFFF));
+ pMask->drawPolygon(
+ aPoly.getB2DPolygon(0),
+ basebmp::Color(0),
+ basebmp::DrawMode_PAINT );
+
+ basebmp::BitmapDeviceSharedPtr pSubsetDevice =
+ basebmp::subsetBitmapDevice( pDevice,
+ basegfx::B2IRange(3,3,7,7) );
+
+ const basegfx::B2IPoint aPt1(0,0);
+ const basegfx::B2IPoint aPt2(1,9);
+ const basebmp::Color aCol(0xFFFFFFFF);
+ pDevice->drawLine( aPt1, aPt2, aCol, basebmp::DrawMode_PAINT, pMask );
+ }
+
+ {
+ const basebmp::Color aCol(0xFFFFFFFF);
+ basegfx::B2DPolygon aRect = basegfx::tools::createPolygonFromRect(
+ basegfx::B2DRange( 0,0,1001,1001 ));
+ pDevice->drawPolygon( aRect, aCol, basebmp::DrawMode_PAINT );
+
+ const basegfx::B2IPoint aPt1(0,0);
+ const basegfx::B2IPoint aPt2(0,800);
+ pDevice->drawLine( aPt1, aPt2, aCol, basebmp::DrawMode_PAINT );
+
+ const basegfx::B2IPoint aPt3(0,1001);
+ pDevice->drawLine( aPt1, aPt3, aCol, basebmp::DrawMode_PAINT );
+ }
+
+ {
+ pDevice->clear(basebmp::Color(0));
+
+ basegfx::B2IPoint aCenter( aTestSize.getX()/2,
+ aTestSize.getY()/2 );
+ //basegfx::B2IPoint aP1( aTestSize.getX()/48, 0), aP2( aTestSize.getX()/40, 0 ), aPoint;
+ //basegfx::B2IPoint aP1( aTestSize.getX()/7, 0), aP2( aTestSize.getX()/6, 0 ), aPoint;
+ //basegfx::B2IPoint aP1( aTestSize.getX()/5, 0), aP2( aTestSize.getX()/4, 0 ), aPoint;
+ basegfx::B2IPoint aP1( aTestSize.getX()/12, 0), aP2( aTestSize.getX()/11, 0 ), aPoint;
+
+ double sind = sin( DELTA*M_PI/180.0 );
+ double cosd = cos( DELTA*M_PI/180.0 );
+ double factor = 1 + (DELTA/1000.0);
+ int n=0;
+ basebmp::Color aLineColor( 0, 0, 0 );
+ basebmp::Color aApproachColor( 0, 0, 200 );
+ while ( aP2.getX() < aCenter.getX() && n++ < 680 )
+ {
+ aLineColor = approachColor( aLineColor, aApproachColor );
+
+ // switch aproach color
+ if( aApproachColor == aLineColor )
+ {
+ if( aApproachColor.getRed() )
+ aApproachColor = basebmp::Color( 0, 0, 200 );
+ else if( aApproachColor.getGreen() )
+ aApproachColor = basebmp::Color( 200, 0, 0 );
+ else
+ aApproachColor = basebmp::Color( 0, 200, 0 );
+ }
+
+ basegfx::B2DPolygon aPoly;
+ aPoly.append( basegfx::B2DPoint(project( aP1 ) + aCenter) );
+ aPoly.append( basegfx::B2DPoint(project( aP2 ) + aCenter) );
+ pDevice->fillPolyPolygon(
+ basegfx::tools::createAreaGeometry(
+ aPoly,
+// std::max(1,n/30),
+// std::max(1,n/60),
+ std::max(1,n/30),
+ basegfx::B2DLINEJOIN_NONE),
+ aLineColor,
+ basebmp::DrawMode_PAINT);
+
+ aPoint.setX( (int)((((double)aP1.getX())*cosd - ((double)aP1.getY())*sind)*factor) );
+ aPoint.setY( (int)((((double)aP1.getY())*cosd + ((double)aP1.getX())*sind)*factor) );
+ aP1 = aPoint;
+ aPoint.setX( (int)((((double)aP2.getX())*cosd - ((double)aP2.getY())*sind)*factor) );
+ aPoint.setY( (int)((((double)aP2.getY())*cosd + ((double)aP2.getX())*sind)*factor) );
+ aP2 = aPoint;
+ }
+ }
+
+ Bitmap aBitmap( Size(aTestSize.getX(),
+ aTestSize.getY()), 24 );
+
+ // Fill bitmap with generated content
+ {
+ ScopedBitmapWriteAccess pWriteAccess( aBitmap.AcquireWriteAccess(),
+ aBitmap );
+ for( int y=0; y<aTestSize.getY(); ++y )
+ for( int x=0; x<aTestSize.getX(); ++x )
+ pWriteAccess->SetPixel(y,x,
+ Color(pDevice->getPixelData(basegfx::B2IPoint(x,y))) );
+ }
+
+ DrawBitmap( Point(), aBitmap );
+}
+
+USHORT TestApp::Exception( USHORT nError )
+{
+ switch( nError & EXC_MAJORTYPE )
+ {
+ case EXC_RSCNOTLOADED:
+ Abort( String::CreateFromAscii( "Error: could not load language resources.\nPlease check your installation.\n" ) );
+ break;
+ }
+ return 0;
+}
+
+void TestApp::Main()
+{
+ //-------------------------------------------------
+ // create the global service-manager
+ //-------------------------------------------------
+ uno::Reference< lang::XMultiServiceFactory > xFactory;
+ try
+ {
+ uno::Reference< uno::XComponentContext > xCtx = ::cppu::defaultBootstrap_InitialComponentContext();
+ xFactory = uno::Reference< lang::XMultiServiceFactory >( xCtx->getServiceManager(),
+ uno::UNO_QUERY );
+ if( xFactory.is() )
+ ::comphelper::setProcessServiceFactory( xFactory );
+ }
+ catch( uno::Exception& )
+ {
+ }
+
+ if( !xFactory.is() )
+ {
+ OSL_TRACE( "Could not bootstrap UNO, installation must be in disorder. Exiting.\n" );
+ exit( 1 );
+ }
+
+ // Create UCB.
+ uno::Sequence< uno::Any > aArgs( 2 );
+ aArgs[ 0 ] <<= rtl::OUString::createFromAscii( UCB_CONFIGURATION_KEY1_LOCAL );
+ aArgs[ 1 ] <<= rtl::OUString::createFromAscii( UCB_CONFIGURATION_KEY2_OFFICE );
+ ::ucbhelper::ContentBroker::initialize( xFactory, aArgs );
+
+ TestWindow pWindow;
+ pWindow.Execute();
+
+ // clean up UCB
+ ::ucbhelper::ContentBroker::deinitialize();
+}
+
+TestApp aDemoApp;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/bmpmasktest.cxx b/basebmp/test/bmpmasktest.cxx
new file mode 100644
index 000000000000..0d4fa01b3301
--- /dev/null
+++ b/basebmp/test/bmpmasktest.cxx
@@ -0,0 +1,195 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( rDevice, output );
+ std::ofstream output2("32bpp_bmp.dump");
+ debugDump( rBmp, output2 );
+*/
+
+class BmpMaskTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpMaskBmp1bpp;
+ BitmapDeviceSharedPtr mpBmp1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+ BitmapDeviceSharedPtr mpBmp32bpp;
+
+ void implTestBmpBasics(const BitmapDeviceSharedPtr& rDevice,
+ const BitmapDeviceSharedPtr& rBmp)
+ {
+ rDevice->clear(Color(0));
+ const Color aCol(0xFFFFFFFF);
+
+ const basegfx::B2IRange aSourceRect(0,0,10,10);
+ const basegfx::B2IRange aDestAll(0,0,10,10);
+
+ rDevice->drawMaskedBitmap(
+ rBmp,
+ mpMaskBmp1bpp,
+ aSourceRect,
+ aDestAll,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 30",
+ countPixel( rDevice, aCol ) == 30);
+ }
+
+ void implTestBmpScaledClip(const BitmapDeviceSharedPtr& rDevice,
+ const BitmapDeviceSharedPtr& rBmp)
+ {
+ rDevice->clear(Color(0));
+ const Color aCol(0xFFFFFFFF);
+
+ const basegfx::B2IRange aSourceRect(0,0,10,10);
+ const basegfx::B2IRange aDestLeftTop(0,0,6,6);
+
+ rDevice->drawMaskedBitmap(
+ rBmp,
+ mpMaskBmp1bpp,
+ aSourceRect,
+ aDestLeftTop,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 12",
+ countPixel( rDevice, aCol ) == 12);
+ }
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(10,10);
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+
+ mpMaskBmp1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_GREY );
+
+ mpBmp1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpBmp32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+
+ ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0h5v10h5v-5h-10z" );
+
+ basegfx::B2DPolyPolygon aPoly;
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ const Color aColWhite(0xFFFFFFFF);
+ const Color aColBlack(0);
+ mpBmp1bpp->fillPolyPolygon(
+ aPoly,
+ aColWhite,
+ DrawMode_PAINT );
+ mpBmp32bpp->fillPolyPolygon(
+ aPoly,
+ aColWhite,
+ DrawMode_PAINT );
+
+ aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0 h6 v10 h-6z" );
+
+ aPoly.clear();
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ mpMaskBmp1bpp->clear(aColWhite);
+ mpMaskBmp1bpp->fillPolyPolygon(
+ aPoly,
+ aColBlack,
+ DrawMode_PAINT );
+ }
+
+ void testBmpBasics()
+ {
+ implTestBmpBasics( mpDevice1bpp, mpBmp1bpp );
+ implTestBmpBasics( mpDevice32bpp, mpBmp32bpp );
+ }
+
+ void testBmpClip()
+ {
+ implTestBmpScaledClip( mpDevice1bpp, mpBmp1bpp );
+ implTestBmpScaledClip( mpDevice32bpp, mpBmp32bpp );
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(BmpMaskTest);
+ CPPUNIT_TEST(testBmpBasics);
+ CPPUNIT_TEST(testBmpClip);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(BmpMaskTest);
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/bmptest.cxx b/basebmp/test/bmptest.cxx
new file mode 100644
index 000000000000..f52a0567f271
--- /dev/null
+++ b/basebmp/test/bmptest.cxx
@@ -0,0 +1,222 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( rDevice, output );
+ std::ofstream output2("32bpp_bmp.dump");
+ debugDump( rBmp, output2 );
+*/
+
+class BmpTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpBmp1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+ BitmapDeviceSharedPtr mpBmp32bpp;
+
+ void implTestBmpBasics(const BitmapDeviceSharedPtr& rDevice,
+ const BitmapDeviceSharedPtr& rBmp)
+ {
+ rDevice->clear(Color(0));
+ const Color aCol(0xFFFFFFFF);
+
+ const basegfx::B2IRange aSourceRect(0,0,10,10);
+ const basegfx::B2IRange aDestLeftTop(0,0,4,4);
+ const basegfx::B2IRange aDestRightTop(6,0,10,4);
+ const basegfx::B2IRange aDestLeftBottom(0,6,4,10);
+ const basegfx::B2IRange aDestRightBottom(6,6,10,10);
+
+ rDevice->drawBitmap(
+ rBmp,
+ aSourceRect,
+ aDestLeftTop,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 8",
+ countPixel( rDevice, aCol ) == 8);
+
+ rDevice->drawBitmap(
+ rBmp,
+ aSourceRect,
+ aDestRightTop,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 16",
+ countPixel( rDevice, aCol ) == 16);
+
+ rDevice->drawBitmap(
+ rBmp,
+ aSourceRect,
+ aDestLeftBottom,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 24",
+ countPixel( rDevice, aCol ) == 24);
+
+ rDevice->drawBitmap(
+ rBmp,
+ aSourceRect,
+ aDestRightBottom,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 32",
+ countPixel( rDevice, aCol ) == 32);
+ }
+
+ void implTestBmpClip(const BitmapDeviceSharedPtr& rDevice,
+ const BitmapDeviceSharedPtr& rBmp)
+ {
+ rDevice->clear(Color(0));
+ const Color aCol(0xFFFFFFFF);
+
+ const basegfx::B2IRange aSourceRect(0,0,10,10);
+ const basegfx::B2IRange aDestLeftTop(-2,-2,2,2);
+ const basegfx::B2IRange aDestRightTop(8,-2,12,2);
+ const basegfx::B2IRange aDestLeftBottom(-2,8,2,12);
+ const basegfx::B2IRange aDestRightBottom(8,8,12,12);
+
+ rDevice->drawBitmap(
+ rBmp,
+ aSourceRect,
+ aDestLeftTop,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 4",
+ countPixel( rDevice, aCol ) == 4);
+
+ rDevice->drawBitmap(
+ rBmp,
+ aSourceRect,
+ aDestLeftBottom,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 4(c)",
+ countPixel( rDevice, aCol ) == 4);
+
+ rDevice->drawBitmap(
+ rBmp,
+ aSourceRect,
+ aDestRightBottom,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 8",
+ countPixel( rDevice, aCol ) == 8);
+ }
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(10,10);
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+
+ mpBmp1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpBmp32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+
+ ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0h5v10h5v-5h-10z" );
+
+ basegfx::B2DPolyPolygon aPoly;
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ const Color aCol(0xFFFFFFFF);
+ mpBmp1bpp->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ mpBmp32bpp->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ }
+
+ void testBmpBasics()
+ {
+ implTestBmpBasics( mpDevice1bpp, mpBmp1bpp );
+ implTestBmpBasics( mpDevice32bpp, mpBmp32bpp );
+ }
+
+ void testBmpClip()
+ {
+ implTestBmpClip( mpDevice1bpp, mpBmp1bpp );
+ implTestBmpClip( mpDevice32bpp, mpBmp32bpp );
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(BmpTest);
+ CPPUNIT_TEST(testBmpBasics);
+ CPPUNIT_TEST(testBmpClip);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(BmpTest);
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/cliptest.cxx b/basebmp/test/cliptest.cxx
new file mode 100644
index 000000000000..31af87140682
--- /dev/null
+++ b/basebmp/test/cliptest.cxx
@@ -0,0 +1,289 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( mpDevice32bpp, output );
+*/
+
+class ClipTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpClipMask;
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+
+ void implTestPixelClip(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+
+ const basegfx::B2IPoint aPt(0,0);
+ const Color aCol(0xFFFFFFFF);
+ rDevice->setPixel( aPt, aCol, DrawMode_PAINT, mpClipMask );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel clip #1",
+ rDevice->getPixel(aPt) == aBgCol);
+
+ const basegfx::B2IPoint aPt2(10,10);
+ rDevice->setPixel( aPt2, aCol, DrawMode_PAINT, mpClipMask );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel clip #2",
+ rDevice->getPixel(aPt2) == aBgCol);
+
+ const basegfx::B2IPoint aPt1(10,0);
+ rDevice->setPixel( aPt1, aCol, DrawMode_PAINT, mpClipMask );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel clip #3",
+ rDevice->getPixel(aPt1) != aBgCol);
+
+ const basegfx::B2IPoint aPt3(0,10);
+ rDevice->setPixel( aPt3, aCol, DrawMode_PAINT, mpClipMask );
+ CPPUNIT_ASSERT_MESSAGE("get/setPixel clip #4",
+ rDevice->getPixel(aPt3) != aBgCol);
+ }
+
+ void implTestLineClip(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+
+ const basegfx::B2IPoint aPt1(0,0);
+ const basegfx::B2IPoint aPt2(1,9);
+ const Color aCol(0xFFFFFFFF);
+ rDevice->drawLine( aPt1, aPt2, aCol, DrawMode_PAINT, mpClipMask );
+
+ const basegfx::B2IPoint aPt3(1,5);
+ CPPUNIT_ASSERT_MESSAGE("get line pixel",
+ rDevice->getPixel(aPt3) != aBgCol);
+ CPPUNIT_ASSERT_MESSAGE("number of rendered line pixel is not 4",
+ countPixel( rDevice,
+ rDevice->getPixel(aPt3) ) == 4);
+
+ rDevice->drawLine( aPt1, aPt2, aCol, DrawMode_XOR, mpClipMask );
+ CPPUNIT_ASSERT_MESSAGE("number of xor-rendered line pixel is not 0",
+ countPixel( rDevice,
+ rDevice->getPixel(aPt3) ) == 121);
+ }
+
+ void implTestFillClip(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2DRange aAllOver(-10,-10,20,20);
+ const Color aCol(0xFFFFFFFF);
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aAllOver)),
+ aCol,
+ DrawMode_PAINT,
+ mpClipMask );
+ const basegfx::B2IPoint aPt(0,10);
+ CPPUNIT_ASSERT_MESSAGE("number of clipped pixel is not 30",
+ countPixel( rDevice, rDevice->getPixel(aPt) ) == 121-30);
+
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aAllOver)),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of filled pixel is not 121",
+ countPixel( rDevice, rDevice->getPixel(aPt) ) == 121);
+
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aAllOver)),
+ aCol,
+ DrawMode_XOR,
+ mpClipMask );
+ CPPUNIT_ASSERT_MESSAGE("number of xor-cleared pixel is not 91",
+ countPixel( rDevice, rDevice->getPixel(aPt) ) == 121-30);
+ }
+
+ void implTestBmpClip(const BitmapDeviceSharedPtr& rDevice)
+ {
+ BitmapDeviceSharedPtr pBmp( cloneBitmapDevice(
+ basegfx::B2IVector(3,3),
+ rDevice ));
+ Color aCol1(0);
+ Color aCol2(0xFFFFFFFF);
+ pBmp->clear(aCol1);
+ pBmp->setPixel(basegfx::B2IPoint(0,0),aCol2,DrawMode_PAINT);
+ pBmp->setPixel(basegfx::B2IPoint(1,1),aCol2,DrawMode_PAINT);
+ pBmp->setPixel(basegfx::B2IPoint(2,2),aCol2,basebmp::DrawMode_PAINT);
+
+ rDevice->clear(aCol1);
+ rDevice->drawBitmap(pBmp,
+ basegfx::B2IRange(0,0,3,3),
+ basegfx::B2IRange(-1,-1,4,4),
+ DrawMode_PAINT,
+ mpClipMask);
+
+ const basegfx::B2IPoint aPt(1,1);
+ CPPUNIT_ASSERT_MESSAGE("number of clipped pixel is not 5",
+ countPixel( rDevice,
+ rDevice->getPixel(aPt) ) == 5);
+ }
+
+ void implTestMaskColorClip(const BitmapDeviceSharedPtr& rDevice)
+ {
+ BitmapDeviceSharedPtr pBmp( createBitmapDevice( rDevice->getSize(),
+ true,
+ Format::EIGHT_BIT_GREY ));
+
+ ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0h5v10h5v-5h-10z" );
+
+ basegfx::B2DPolyPolygon aPoly;
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ const basebmp::Color aCol(0xFF);
+ pBmp->clear( basebmp::Color(0) );
+ pBmp->fillPolyPolygon(
+ aPoly,
+ aCol,
+ basebmp::DrawMode_PAINT );
+
+ const basegfx::B2IRange aSourceRect(0,0,10,10);
+ const basegfx::B2IPoint aDestLeftTop(0,0);
+ const Color aCol2(0xF0F0F0F0);
+ rDevice->drawMaskedColor(
+ aCol2,
+ pBmp,
+ aSourceRect,
+ aDestLeftTop,
+ mpClipMask );
+ const basegfx::B2IPoint aPt(1,1);
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 41",
+ countPixel( rDevice, rDevice->getPixel(aPt) ) == 41);
+
+ }
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(11,11);
+ mpClipMask = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_GREY );
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+
+ ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0 h5 l5 5 v5 h-5 l-5-5 z" );
+ basegfx::B2DPolyPolygon aPoly;
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ mpClipMask->clear(Color(0));
+ mpClipMask->drawPolygon(
+ aPoly.getB2DPolygon(0),
+ Color(0xFFFFFFFF),
+ DrawMode_PAINT );
+ }
+
+ void testPixelClip()
+ {
+ implTestPixelClip( mpDevice1bpp );
+ implTestPixelClip( mpDevice32bpp );
+ }
+
+ void testLineClip()
+ {
+ implTestLineClip( mpDevice1bpp );
+ implTestLineClip( mpDevice32bpp );
+ }
+
+ void testFillClip()
+ {
+ implTestFillClip( mpDevice1bpp );
+ implTestFillClip( mpDevice32bpp );
+ }
+
+ void testBmpClip()
+ {
+ implTestBmpClip( mpDevice1bpp );
+ implTestBmpClip( mpDevice32bpp );
+ }
+
+ void testMaskColorClip()
+ {
+ implTestMaskColorClip( mpDevice1bpp );
+ implTestMaskColorClip( mpDevice32bpp );
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(ClipTest);
+ CPPUNIT_TEST(testPixelClip);
+ CPPUNIT_TEST(testLineClip);
+ CPPUNIT_TEST(testFillClip);
+ CPPUNIT_TEST(testBmpClip);
+ CPPUNIT_TEST(testMaskColorClip);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(ClipTest);
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/export.map b/basebmp/test/export.map
new file mode 100644
index 000000000000..3308588ef6f8
--- /dev/null
+++ b/basebmp/test/export.map
@@ -0,0 +1,34 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+UDK_3_0_0 {
+ global:
+ cppunitTestPlugIn;
+
+ local:
+ *;
+};
diff --git a/basebmp/test/filltest.cxx b/basebmp/test/filltest.cxx
new file mode 100644
index 000000000000..469b984b6ca6
--- /dev/null
+++ b/basebmp/test/filltest.cxx
@@ -0,0 +1,283 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( mpDevice32bpp, output );
+*/
+
+class FillTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+
+ void implTestRectFill(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2DRange aRect(1,1,10,10);
+
+ const Color aCol(0xFFFFFFFF);
+ rDevice->fillPolyPolygon(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect( aRect )),
+ aCol,
+ DrawMode_PAINT );
+
+ const basegfx::B2IPoint aPt1(1,1);
+ CPPUNIT_ASSERT_MESSAGE("first pixel set",
+ rDevice->getPixel(aPt1) == aCol);
+ const basegfx::B2IPoint aPt2(9,9);
+ CPPUNIT_ASSERT_MESSAGE("last pixel set",
+ rDevice->getPixel(aPt2) == aCol);
+ const basegfx::B2IPoint aPt3(0,0);
+ CPPUNIT_ASSERT_MESSAGE("topmost pixel not set",
+ rDevice->getPixel(aPt3) != aCol);
+ const basegfx::B2IPoint aPt4(10,10);
+ CPPUNIT_ASSERT_MESSAGE("bottommost pixel not set",
+ rDevice->getPixel(aPt4) != aCol);
+
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 81",
+ countPixel( rDevice, aCol ) == 81);
+ }
+
+ void implTestCornerCases(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2DRange aEmpty1(0,0,0,11);
+ const basegfx::B2DRange aEmpty2(0,0,11,0);
+ const basegfx::B2DRange aVertLineLeft(0,0,1,11);
+ const basegfx::B2DRange aVertLineRight(10,0,11,11);
+ const basegfx::B2DRange aHorzLineTop(0,0,11,1);
+ const basegfx::B2DRange aHorzLineBottom(0,10,11,11);
+
+ const Color aCol(0xFFFFFFFF);
+ rDevice->fillPolyPolygon(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect( aEmpty1 )),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 0",
+ countPixel( rDevice, aCol ) == 0);
+
+ rDevice->fillPolyPolygon(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect( aEmpty2 )),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 0",
+ countPixel( rDevice, aCol ) == 0);
+
+ rDevice->fillPolyPolygon(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect( aVertLineLeft )),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 11",
+ countPixel( rDevice, aCol ) == 11);
+ const basegfx::B2IPoint aPt1(0,0);
+ CPPUNIT_ASSERT_MESSAGE("first pixel set",
+ rDevice->getPixel(aPt1) == aCol);
+
+ rDevice->fillPolyPolygon(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect( aVertLineRight )),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 22",
+ countPixel( rDevice, aCol ) == 22);
+ const basegfx::B2IPoint aPt2(10,10);
+ CPPUNIT_ASSERT_MESSAGE("last pixel set",
+ rDevice->getPixel(aPt2) == aCol);
+
+ rDevice->fillPolyPolygon(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect( aHorzLineTop )),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 31",
+ countPixel( rDevice, aCol ) == 31);
+ const basegfx::B2IPoint aPt3(5,0);
+ CPPUNIT_ASSERT_MESSAGE("top-middle pixel set",
+ rDevice->getPixel(aPt3) == aCol);
+
+ rDevice->fillPolyPolygon(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect( aHorzLineBottom )),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 40",
+ countPixel( rDevice, aCol ) == 40);
+ const basegfx::B2IPoint aPt4(5,10);
+ CPPUNIT_ASSERT_MESSAGE("bottom-middle pixel set",
+ rDevice->getPixel(aPt4) == aCol);
+
+ ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0l7 7h-1z" );
+
+ basegfx::B2DPolyPolygon aPoly;
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 43",
+ countPixel( rDevice, aCol ) == 43);
+ }
+
+ void implTestClipping(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2DRange aLeftTop(-10,-10,1,1);
+ const basegfx::B2DRange aRightTop(10,-10,20,1);
+ const basegfx::B2DRange aLeftBottom(-10,10,1,20);
+ const basegfx::B2DRange aRightBottom(10,10,20,20);
+ const basegfx::B2DRange aAllOver(-10,-10,20,20);
+
+ const Color aCol(0xFFFFFFFF);
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aLeftTop)),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 1",
+ countPixel( rDevice, aCol ) == 1);
+
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aRightTop)),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 2",
+ countPixel( rDevice, aCol ) == 2);
+
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aLeftBottom)),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 3",
+ countPixel( rDevice, aCol ) == 3);
+
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aRightBottom)),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 4",
+ countPixel( rDevice, aCol ) == 4);
+
+ rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aAllOver)),
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 121",
+ countPixel( rDevice, aCol ) == 121);
+ }
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(11,11);
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+ }
+
+ void testRectFill()
+ {
+ implTestRectFill( mpDevice1bpp );
+ implTestRectFill( mpDevice32bpp );
+ }
+
+ void testClipping()
+ {
+ implTestClipping( mpDevice1bpp );
+ implTestClipping( mpDevice32bpp );
+ }
+
+ void testCornerCases()
+ {
+ implTestCornerCases( mpDevice1bpp );
+ implTestCornerCases( mpDevice32bpp );
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(FillTest);
+ CPPUNIT_TEST(testRectFill);
+ CPPUNIT_TEST(testClipping);
+ CPPUNIT_TEST(testCornerCases);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(FillTest);
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/linetest.cxx b/basebmp/test/linetest.cxx
new file mode 100644
index 000000000000..68633e8935d0
--- /dev/null
+++ b/basebmp/test/linetest.cxx
@@ -0,0 +1,231 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( mpDevice32bpp, output );
+*/
+
+class LineTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+
+ void implTestBasicDiagonalLines(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2IPoint aPt1(1,1);
+ const basegfx::B2IPoint aPt2(9,9);
+ const Color aCol(0xFFFFFFFF);
+ rDevice->drawLine( aPt1, aPt2, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("first pixel set",
+ rDevice->getPixel(aPt1) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("last pixel set",
+ rDevice->getPixel(aPt2) == aCol);
+ const basegfx::B2IPoint aPt3(0,0);
+ CPPUNIT_ASSERT_MESSAGE("topmost pixel not set",
+ rDevice->getPixel(aPt3) != aCol);
+ const basegfx::B2IPoint aPt4(10,10);
+ CPPUNIT_ASSERT_MESSAGE("bottommost pixel not set",
+ rDevice->getPixel(aPt4) != aCol);
+
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 9",
+ countPixel( rDevice, aCol ) == 9);
+
+ rDevice->drawLine( aPt2, aPt1, aCol, DrawMode_PAINT );
+
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel after "
+ "reversed paint is not 9",
+ countPixel( rDevice, aCol ) == 9);
+ }
+
+ void implTestBasicHorizontalLines(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2IPoint aPt1(10,10);
+ const basegfx::B2IPoint aPt2(0,10);
+ const Color aCol(0xFFFFFFFF);
+ rDevice->drawLine( aPt1, aPt2, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("first pixel set",
+ rDevice->getPixel(aPt1) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("last pixel set",
+ rDevice->getPixel(aPt2) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 11",
+ countPixel( rDevice, aCol ) == 11);
+
+ rDevice->clear(Color(0));
+ rDevice->drawLine( aPt2, aPt1, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("first pixel set",
+ rDevice->getPixel(aPt1) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("last pixel set",
+ rDevice->getPixel(aPt2) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 11",
+ countPixel( rDevice, aCol ) == 11);
+ }
+
+ void implTestBasicVerticalLines(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2IPoint aPt1(1,1);
+ const basegfx::B2IPoint aPt2(1,9);
+ const Color aCol(0xFFFFFFFF);
+ rDevice->drawLine( aPt1, aPt2, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("first pixel set",
+ rDevice->getPixel(aPt1) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("last pixel set",
+ rDevice->getPixel(aPt2) == aCol);
+ const basegfx::B2IPoint aPt3(0,0);
+ CPPUNIT_ASSERT_MESSAGE("topmost pixel not set",
+ rDevice->getPixel(aPt3) != aCol);
+ const basegfx::B2IPoint aPt4(0,10);
+ CPPUNIT_ASSERT_MESSAGE("bottommost pixel not set",
+ rDevice->getPixel(aPt4) != aCol);
+
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 9",
+ countPixel( rDevice, aCol ) == 9);
+ }
+
+ // test pixel rounding (should always tend towards start point of
+ // the line)
+ void implTestTieBreaking(const BitmapDeviceSharedPtr& rDevice)
+ {
+ rDevice->clear(Color(0));
+
+ const basegfx::B2IPoint aPt1(1,1);
+ const basegfx::B2IPoint aPt2(3,2);
+ const Color aCol(0xFFFFFFFF);
+ rDevice->drawLine( aPt1, aPt2, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("first pixel set",
+ rDevice->getPixel(aPt1) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("second pixel set",
+ rDevice->getPixel(basegfx::B2IPoint(2,1)) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("last pixel set",
+ rDevice->getPixel(aPt2) == aCol);
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel after "
+ "reversed paint is not 3",
+ countPixel( rDevice, aCol ) == 3);
+
+ rDevice->drawLine( aPt2, aPt1, aCol, DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("alternate second pixel set",
+ rDevice->getPixel(basegfx::B2IPoint(2,2)) == aCol);
+
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel after "
+ "reversed paint is not 4",
+ countPixel( rDevice, aCol ) == 4);
+ }
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(11,11);
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+ }
+
+ void testBasicDiagonalLines()
+ {
+ implTestBasicDiagonalLines( mpDevice1bpp );
+ implTestBasicDiagonalLines( mpDevice32bpp );
+ }
+
+ void testBasicHorizontalLines()
+ {
+ implTestBasicHorizontalLines( mpDevice1bpp );
+ implTestBasicHorizontalLines( mpDevice32bpp );
+ }
+
+ void testBasicVerticalLines()
+ {
+ implTestBasicVerticalLines( mpDevice1bpp );
+ implTestBasicVerticalLines( mpDevice32bpp );
+ }
+
+ // test pixel rounding (should always tend towards start point of
+ // the line)
+ void testTieBreaking()
+ {
+ implTestTieBreaking( mpDevice1bpp );
+ implTestTieBreaking( mpDevice32bpp );
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(LineTest);
+ CPPUNIT_TEST(testBasicDiagonalLines);
+ CPPUNIT_TEST(testBasicHorizontalLines);
+ CPPUNIT_TEST(testBasicVerticalLines);
+ CPPUNIT_TEST(testTieBreaking);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(LineTest);
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/makefile.mk b/basebmp/test/makefile.mk
new file mode 100644
index 000000000000..8dc95dcea0e5
--- /dev/null
+++ b/basebmp/test/makefile.mk
@@ -0,0 +1,132 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=basebmp
+TARGET=tests
+TARGETTYPE=GUI
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(debug)"!="" || "$(DEBUG)"!=""
+
+.IF "$(COM)"=="MSC"
+# disable inlining for MSVC
+CFLAGS += -Ob0
+.ENDIF
+
+.IF "$(COM)"=="GCC"
+# disable inlining for gcc
+CFLAGS += -fno-inline
+.ENDIF
+
+.ENDIF
+
+# SunStudio 12 (-m64 and -m32 modes): three test cases of the unit tests fail
+# if compiled with default -xalias_level (and optimization level -xO3)
+.IF "$(OS)"=="SOLARIS"
+# For Sun Studio 8 this switch does not work: compilation fails on bitmapdevice.cxx
+.IF "$(CCNUMVER)"!="00050005"
+CDEFS+=-xalias_level=compatible
+.ENDIF
+.ENDIF
+
+#building with stlport, but cppunit was not built with stlport
+.IF "$(USE_SYSTEM_STL)"!="YES"
+.IF "$(SYSTEM_CPPUNIT)"=="YES"
+CFLAGSCXX+=-DADAPT_EXT_STL
+.ENDIF
+.ENDIF
+
+CFLAGSCXX += $(CPPUNIT_CFLAGS)
+
+# --- Common ----------------------------------------------------------
+.IF "$(L10N_framework)"==""
+
+# BEGIN ----------------------------------------------------------------
+# auto generated Target:tests by codegen.pl
+SHL1OBJS= \
+ $(SLO)$/basictest.obj \
+ $(SLO)$/bmpmasktest.obj \
+ $(SLO)$/bmptest.obj \
+ $(SLO)$/cliptest.obj \
+ $(SLO)$/filltest.obj \
+ $(SLO)$/linetest.obj \
+ $(SLO)$/masktest.obj \
+ $(SLO)$/polytest.obj \
+ $(SLO)$/tools.obj
+SHL1TARGET= tests
+SHL1STDLIBS= $(BASEBMPLIB) \
+ $(SALLIB) \
+ $(CPPUNITLIB) \
+ $(BASEGFXLIB)
+
+SHL1IMPLIB= i$(SHL1TARGET)
+
+DEF1NAME =$(SHL1TARGET)
+SHL1VERSIONMAP = export.map
+SHL1RPATH = NONE
+
+.ENDIF
+# END ------------------------------------------------------------------
+
+#APP2TARGET= bmpdemo
+
+#APP2OBJS= \
+# $(OBJ)$/bmpdemo.obj
+
+#APP2STDLIBS=$(TOOLSLIB) \
+# $(COMPHELPERLIB) \
+# $(BASEGFXLIB) \
+# $(BASEBMPLIB) \
+# $(CPPULIB) \
+# $(CPPUHELPERLIB) \
+# $(UCBHELPERLIB) \
+# $(SALLIB) \
+# $(VCLLIB)
+#
+#.IF "$(GUI)"!="UNX"
+#APP2DEF= $(MISC)$/$(TARGET).def
+#.ENDIF
+
+#------------------------------- All object files -------------------------------
+# do this here, so we get right dependencies
+SLOFILES=$(SHL1OBJS)
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+# --- Enable test execution in normal build ------------------------
+.IF "$(L10N_framework)"==""
+.INCLUDE : _cppunit.mk
+.ENDIF
diff --git a/basebmp/test/masktest.cxx b/basebmp/test/masktest.cxx
new file mode 100644
index 000000000000..b7097518f64a
--- /dev/null
+++ b/basebmp/test/masktest.cxx
@@ -0,0 +1,183 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( rDevice, output );
+ std::ofstream output2("32bpp_bmp.dump");
+ debugDump( rBmp, output2 );
+*/
+
+class MaskTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+ BitmapDeviceSharedPtr mpMask;
+
+ void implTestMaskBasics(const BitmapDeviceSharedPtr& rDevice,
+ const BitmapDeviceSharedPtr& rBmp)
+ {
+ const Color aCol(0);
+ const Color aCol2(0xF0F0F0F0);
+
+ const basegfx::B2IRange aSourceRect(0,0,10,10);
+ const basegfx::B2IPoint aDestLeftTop(0,0);
+ const basegfx::B2IPoint aDestRightTop(5,0);
+ const basegfx::B2IPoint aDestLeftBottom(0,5);
+ const basegfx::B2IPoint aDestRightBottom(5,5);
+
+ rDevice->clear(aCol);
+ rDevice->setPixel(
+ basegfx::B2IPoint(1,1),
+ aCol2,
+ DrawMode_PAINT);
+ rDevice->drawMaskedColor(
+ aCol2,
+ rBmp,
+ aSourceRect,
+ aDestLeftTop );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 50",
+ countPixel( rDevice, aCol ) == 100-50);
+
+ rDevice->clear(aCol);
+ rDevice->drawMaskedColor(
+ aCol2,
+ rBmp,
+ aSourceRect,
+ aDestRightTop );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 25",
+ countPixel( rDevice, aCol ) == 100-25);
+
+ rDevice->clear(aCol);
+ rDevice->drawMaskedColor(
+ aCol2,
+ rBmp,
+ aSourceRect,
+ aDestLeftBottom );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 25(b)",
+ countPixel( rDevice, aCol ) == 100-25);
+
+ rDevice->clear(aCol);
+ rDevice->drawMaskedColor(
+ aCol2,
+ rBmp,
+ aSourceRect,
+ aDestRightBottom );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 25(c)",
+ countPixel( rDevice, aCol ) == 100-25);
+ }
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(10,10);
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+
+ mpMask = createBitmapDevice( aSize,
+ true,
+ Format::EIGHT_BIT_GREY );
+
+ ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii(
+ "m 0 0h5v10h5v-5h-10z" );
+
+ basegfx::B2DPolyPolygon aPoly;
+ basegfx::tools::importFromSvgD( aPoly, aSvg );
+ const Color aCol(0xFF);
+ mpMask->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ }
+
+ void testMaskBasics()
+ {
+ implTestMaskBasics( mpDevice32bpp, mpMask );
+ implTestMaskBasics( mpDevice1bpp, mpMask );
+ }
+
+ void testMaskClip()
+ {
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(MaskTest);
+ CPPUNIT_TEST(testMaskBasics);
+ CPPUNIT_TEST(testMaskClip);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(MaskTest);
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/polytest.cxx b/basebmp/test/polytest.cxx
new file mode 100644
index 000000000000..0f0faab77552
--- /dev/null
+++ b/basebmp/test/polytest.cxx
@@ -0,0 +1,303 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include "preextstl.h"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "postextstl.h"
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( rDevice, output );
+*/
+
+class PolyTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+
+ void implTestEmpty(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "M2 2 l7 7 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 0",
+ countPixel( rDevice, aCol ) == 0);
+
+ // --------------------------------------------------
+
+ rDevice->clear(aBgCol);
+ aPoly.clear();
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "M7 2 l-6 6 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 0(b)",
+ countPixel( rDevice, aCol ) == 0);
+ }
+
+ void implTestHairline(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "M2 2 h1 l7 7 h-1 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 7",
+ countPixel( rDevice, aCol ) == 7);
+
+ // --------------------------------------------------
+
+ rDevice->clear(aBgCol);
+ aPoly.clear();
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "M7 2 h-1 l-6 6 h1 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 6",
+ countPixel( rDevice, aCol ) == 6);
+
+ // --------------------------------------------------
+
+ rDevice->clear(aBgCol);
+ aPoly.clear();
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "M0 0 l7 7 h-1 l-5-7 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 3",
+ countPixel( rDevice, aCol ) == 3);
+ }
+
+ void implTestPolyPoly(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "M0 0 h7 v7 h-7 z M2 2 v3 h3 v-3 z" ) );
+
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 40",
+ countPixel( rDevice, aCol ) == 40);
+ }
+
+ void implTestPolyPolyClip(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "M0 0 h7 v7 h-7 z M2 2 v3 h3 v-3 z" ) );
+ basegfx::B2DHomMatrix aMat;
+ aMat.translate(-3,-3);
+ aMat.rotate( 1.7 );
+ aMat.translate(6,5);
+ aPoly.transform(aMat);
+
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 39",
+ countPixel( rDevice, aCol ) == 39);
+
+ BitmapDeviceSharedPtr pClippedDevice(
+ subsetBitmapDevice( rDevice,
+ basegfx::B2IRange(3,3,5,8) ));
+
+ rDevice->clear(aBgCol);
+ pClippedDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 7",
+ countPixel( rDevice, aCol ) == 7);
+ }
+
+ void implTestPolyPolyCrissCross(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "M0 0 v2 l10 2 v-2 z"
+ "M10 6 v-2 l-10 2 v2 z"
+ "M1 0 h1 v10 h-1 z"
+ "M4 0 h1 v10 h-1 z"
+ "M8 0 h1 v10 h-1 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 46",
+ countPixel( rDevice, aCol ) == 46);
+ }
+
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(10,10);
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+ }
+
+ void testEmpty()
+ {
+ implTestEmpty( mpDevice1bpp );
+ implTestEmpty( mpDevice32bpp );
+ }
+
+ void testHairline()
+ {
+ implTestHairline( mpDevice1bpp );
+ implTestHairline( mpDevice32bpp );
+ }
+
+ void testPolyPoly()
+ {
+ implTestPolyPoly( mpDevice1bpp );
+ implTestPolyPoly( mpDevice32bpp );
+ }
+
+ void testPolyPolyClip()
+ {
+ implTestPolyPolyClip(mpDevice1bpp);
+ implTestPolyPolyClip(mpDevice32bpp);
+ }
+
+ void testPolyPolyCrissCross()
+ {
+ implTestPolyPolyCrissCross(mpDevice1bpp);
+ implTestPolyPolyCrissCross(mpDevice32bpp);
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(PolyTest);
+ CPPUNIT_TEST(testEmpty);
+ CPPUNIT_TEST(testHairline);
+ CPPUNIT_TEST(testPolyPoly);
+ CPPUNIT_TEST(testPolyPolyClip);
+ CPPUNIT_TEST(testPolyPolyCrissCross);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION(PolyTest);
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/tools.cxx b/basebmp/test/tools.cxx
new file mode 100644
index 000000000000..ab7219ec32af
--- /dev/null
+++ b/basebmp/test/tools.cxx
@@ -0,0 +1,52 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/bitmapdevice.hxx>
+
+using namespace ::basebmp;
+
+int countPixel( const BitmapDeviceSharedPtr& rDevice,
+ Color checkColor )
+{
+ int count(0);
+ const basegfx::B2ISize& rSize( rDevice->getSize() );
+ for( sal_Int32 y=0; y<rSize.getY(); ++y )
+ for( sal_Int32 x=0; x<rSize.getX(); ++x )
+ if( rDevice->getPixel( basegfx::B2IPoint(x,y) ) == checkColor )
+ ++count;
+
+ return count;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/test/tools.hxx b/basebmp/test/tools.hxx
new file mode 100644
index 000000000000..57668e55a741
--- /dev/null
+++ b/basebmp/test/tools.hxx
@@ -0,0 +1,34 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "basebmp/bitmapdevice.hxx"
+
+int countPixel( const basebmp::BitmapDeviceSharedPtr& rDevice,
+ basebmp::Color checkColor );
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basebmp/util/basebmp.flt b/basebmp/util/basebmp.flt
new file mode 100644
index 000000000000..28a1dd1b65c6
--- /dev/null
+++ b/basebmp/util/basebmp.flt
@@ -0,0 +1,4 @@
+__CT
+Impl
+IMP
+internal \ No newline at end of file
diff --git a/basebmp/util/makefile.mk b/basebmp/util/makefile.mk
new file mode 100644
index 000000000000..bc86ebd6bac4
--- /dev/null
+++ b/basebmp/util/makefile.mk
@@ -0,0 +1,66 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=basebmp
+TARGET=basebmp
+
+# --- Settings ---------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ---------------------------------------------------
+
+LIB1TARGET=$(SLB)$/basebmp.lib
+LIB1FILES=\
+ $(SLB)$/wrapper.lib
+
+SHL1TARGET= basebmp$(DLLPOSTFIX)
+SHL1IMPLIB= ibasebmp
+
+SHL1STDLIBS=\
+ $(SALLIB) \
+ $(BASEGFXLIB)
+
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1LIBS= $(SLB)$/basebmp.lib
+
+DEF1NAME =$(SHL1TARGET)
+DEF1DEPN =$(MISC)$/$(SHL1TARGET).flt \
+ $(LIB1TARGET)
+
+DEF1DES =BaseBMP
+DEFLIB1NAME =basebmp
+
+# --- Targets -----------------------------------------------------------
+
+.INCLUDE : target.mk
+
+$(MISC)$/$(SHL1TARGET).flt : makefile.mk
+ @$(TYPE) $(TARGET).flt > $@
+
diff --git a/basegfx/inc/basegfx/color/bcolor.hxx b/basegfx/inc/basegfx/color/bcolor.hxx
new file mode 100644
index 000000000000..ba39c1dd4ab4
--- /dev/null
+++ b/basegfx/inc/basegfx/color/bcolor.hxx
@@ -0,0 +1,240 @@
+/* -*- 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 _BGFX_COLOR_BCOLOR_HXX
+#define _BGFX_COLOR_BCOLOR_HXX
+
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace com { namespace sun { namespace star { namespace rendering {
+ class XGraphicDevice;
+}}}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ /** Base Color class with three double values
+
+ This class derives all operators and common handling for
+ a 3D data class from B3DTuple. All necessary extensions
+ which are special for colors will be added here.
+
+ @see B3DTuple
+ */
+ class BColor : public B3DTuple
+ {
+ public:
+ /** Create a Color with red, green and blue components from [0.0 to 1.0]
+
+ The color is initialized to (0.0, 0.0, 0.0)
+ */
+ BColor()
+ : B3DTuple()
+ {}
+
+ /** Create a 3D Color
+
+ @param fRed
+ @param fGreen
+ @param fBlue
+ These parameters are used to initialize the red, green and blue intensities of the color
+ */
+ BColor(double fRed, double fGreen, double fBlue)
+ : B3DTuple(fRed, fGreen, fBlue)
+ {}
+
+ /** Create a 3D Color
+
+ @param fLuminosity
+ The parameter is used to initialize the red, green and blue intensities of the color
+ */
+ BColor(double fLuminosity)
+ : B3DTuple(fLuminosity, fLuminosity, fLuminosity)
+ {}
+
+ /** Create a copy of a Color
+
+ @param rVec
+ The Color which will be copied.
+ */
+ BColor(const BColor& rVec)
+ : B3DTuple(rVec)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B3DTuple-based classes
+ */
+ BColor(const ::basegfx::B3DTuple& rTuple)
+ : B3DTuple(rTuple)
+ {}
+
+ ~BColor()
+ {}
+
+ // data access read
+ double getRed() const { return mfX; }
+ double getGreen() const { return mfY; }
+ double getBlue() const { return mfZ; }
+
+ // data access write
+ void setRed(double fNew) { mfX = fNew; }
+ void setGreen(double fNew) { mfY = fNew; }
+ void setBlue(double fNew) { mfZ = fNew; }
+
+ /** *=operator to allow usage from BColor, too
+ */
+ BColor& operator*=( const BColor& rPnt )
+ {
+ mfX *= rPnt.mfX;
+ mfY *= rPnt.mfY;
+ mfZ *= rPnt.mfZ;
+ return *this;
+ }
+
+ /** *=operator to allow usage from BColor, too
+ */
+ BColor& operator*=(double t)
+ {
+ mfX *= t;
+ mfY *= t;
+ mfZ *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B3DTuple calculations
+ */
+ BColor& operator=( const ::basegfx::B3DTuple& rVec )
+ {
+ mfX = rVec.getX();
+ mfY = rVec.getY();
+ mfZ = rVec.getZ();
+ return *this;
+ }
+
+ // blend to another color using luminance
+ void blend(const BColor& rColor)
+ {
+ const double fLuminance(luminance());
+ mfX = rColor.getRed() * fLuminance;
+ mfY = rColor.getGreen() * fLuminance;
+ mfZ = rColor.getBlue() * fLuminance;
+ }
+
+ // luminance
+ double luminance() const
+ {
+ const double fRedWeight(77.0 / 256.0);
+ const double fGreenWeight(151.0 / 256.0);
+ const double fBlueWeight(28.0 / 256.0);
+
+ return (mfX * fRedWeight + mfY * fGreenWeight + mfZ * fBlueWeight);
+ }
+
+ // distances in color space
+ double getDistanceRed(const BColor& rColor) const { return (getRed() > rColor.getRed() ? getRed() - rColor.getRed() : rColor.getRed() - getRed()); }
+ double getDistanceGreen(const BColor& rColor) const { return (getGreen() > rColor.getGreen() ? getGreen() - rColor.getGreen() : rColor.getGreen() - getGreen()); }
+ double getDistanceBlue(const BColor& rColor) const { return (getBlue() > rColor.getBlue() ? getBlue() - rColor.getBlue() : rColor.getBlue() - getBlue()); }
+
+ double getDistance(const BColor& rColor) const
+ {
+ const double fDistR(getDistanceRed(rColor));
+ const double fDistG(getDistanceGreen(rColor));
+ const double fDistB(getDistanceBlue(rColor));
+
+ return sqrt(fDistR * fDistR + fDistG * fDistG + fDistB * fDistB);
+ }
+
+ double getMinimumDistance(const BColor& rColor) const
+ {
+ const double fDistR(getDistanceRed(rColor));
+ const double fDistG(getDistanceGreen(rColor));
+ const double fDistB(getDistanceBlue(rColor));
+
+ double fRetval(fDistR < fDistG ? fDistR : fDistG);
+ return (fRetval < fDistB ? fRetval : fDistB);
+ }
+
+ double getMaximumDistance(const BColor& rColor) const
+ {
+ const double fDistR(getDistanceRed(rColor));
+ const double fDistG(getDistanceGreen(rColor));
+ const double fDistB(getDistanceBlue(rColor));
+
+ double fRetval(fDistR > fDistG ? fDistR : fDistG);
+ return (fRetval > fDistB ? fRetval : fDistB);
+ }
+
+ // clamp color to [0.0..1.0] values in all three intensity components
+ void clamp()
+ {
+ mfX = basegfx::clamp(mfX, 0.0, 1.0);
+ mfY = basegfx::clamp(mfY, 0.0, 1.0);
+ mfZ = basegfx::clamp(mfZ, 0.0, 1.0);
+ }
+
+ void invert()
+ {
+ mfX = 1.0 - mfX;
+ mfY = 1.0 - mfY;
+ mfZ = 1.0 - mfZ;
+ }
+
+ static const BColor& getEmptyBColor()
+ {
+ return (const BColor&) ::basegfx::B3DTuple::getEmptyTuple();
+ }
+
+ com::sun::star::uno::Sequence< double > colorToDoubleSequence(const com::sun::star::uno::Reference< com::sun::star::rendering::XGraphicDevice >& /*xGraphicDevice*/) const
+ {
+ com::sun::star::uno::Sequence< double > aRet(4);
+ double* pRet = aRet.getArray();
+
+ pRet[0] = mfX;
+ pRet[1] = mfY;
+ pRet[2] = mfZ;
+ pRet[3] = 1.0;
+
+ return aRet;
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_COLOR_BCOLOR_HXX */
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/color/bcolormodifier.hxx b/basegfx/inc/basegfx/color/bcolormodifier.hxx
new file mode 100644
index 000000000000..b109f05c7e11
--- /dev/null
+++ b/basegfx/inc/basegfx/color/bcolormodifier.hxx
@@ -0,0 +1,146 @@
+/* -*- 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 _BGFX_COLOR_BCOLORMODIFIER_HXX
+#define _BGFX_COLOR_BCOLORMODIFIER_HXX
+
+#include <basegfx/color/bcolor.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ /** Descriptor for type of color modification
+ */
+ enum BColorModifyMode
+ {
+ BCOLORMODIFYMODE_REPLACE, // replace all color with local color
+ BCOLORMODIFYMODE_INTERPOLATE, // interpolate color between given and local with local value
+ BCOLORMODIFYMODE_GRAY, // convert color to gray
+ BCOLORMODIFYMODE_BLACKANDWHITE // convert color to B&W, local value is treshhold
+ };
+
+ /** Class to hold a color, value and mode for a color modification. Color modification is
+ done calling the getModifiedColor() method
+ */
+ class BColorModifier
+ {
+ protected:
+ ::basegfx::BColor maBColor;
+ double mfValue;
+ BColorModifyMode meMode;
+
+ public:
+ BColorModifier(
+ const ::basegfx::BColor& rBColor,
+ double fValue = 0.5,
+ BColorModifyMode eMode = BCOLORMODIFYMODE_REPLACE)
+ : maBColor(rBColor),
+ mfValue(fValue),
+ meMode(eMode)
+ {}
+
+ // compare operator(s)
+ bool operator==(const BColorModifier& rCompare) const
+ {
+ return (maBColor == rCompare.maBColor && mfValue == rCompare.mfValue && meMode == rCompare.meMode);
+ }
+
+ bool operator!=(const BColorModifier& rCompare) const
+ {
+ return !(operator==(rCompare));
+ }
+
+ // data access
+ const ::basegfx::BColor& getBColor() const { return maBColor; }
+ double getValue() const { return mfValue; }
+ BColorModifyMode getMode() const { return meMode; }
+
+ // compute modified color
+ ::basegfx::BColor getModifiedColor(const ::basegfx::BColor& aSourceColor) const;
+ };
+
+ /** Class to hold a stack of BColorModifiers and to get the modified color with
+ applying all existing entry changes
+ */
+ class BColorModifierStack
+ {
+ protected:
+ ::std::vector< BColorModifier > maBColorModifiers;
+
+ public:
+ sal_uInt32 count() const
+ {
+ return maBColorModifiers.size();
+ }
+
+ const BColorModifier& getBColorModifier(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < count(), "BColorModifierStack: Access out of range (!)");
+ return maBColorModifiers[nIndex];
+ }
+
+ ::basegfx::BColor getModifiedColor(const ::basegfx::BColor& rSource) const
+ {
+ if(count())
+ {
+ ::basegfx::BColor aRetval(rSource);
+ ::std::vector< BColorModifier >::const_iterator aEnd(maBColorModifiers.end());
+
+ while(aEnd != maBColorModifiers.begin())
+ {
+ aRetval = (--aEnd)->getModifiedColor(aRetval);
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rSource;
+ }
+ }
+
+ void push(const BColorModifier& rNew)
+ {
+ maBColorModifiers.push_back(rNew);
+ }
+
+ void pop()
+ {
+ maBColorModifiers.pop_back();
+ }
+ };
+} // end of namespace basegfx
+
+#endif // _BGFX_COLOR_BCOLORMODIFIER_HXX
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/color/bcolortools.hxx b/basegfx/inc/basegfx/color/bcolortools.hxx
new file mode 100644
index 000000000000..0502c77f3236
--- /dev/null
+++ b/basegfx/inc/basegfx/color/bcolortools.hxx
@@ -0,0 +1,75 @@
+/* -*- 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 _BGFX_COLOR_BCOLORTOOLS_HXX
+#define _BGFX_COLOR_BCOLORTOOLS_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class BColor;
+
+ namespace tools
+ {
+ /// Transform from RGB to HSL
+ BColor rgb2hsl(const BColor& rRGBColor);
+ /// Transform from HSL to RGB
+ BColor hsl2rgb(const BColor& rHSLColor);
+
+ /// Transform from RGB to HSV
+ BColor rgb2hsv(const BColor& rRGBColor);
+ /// Transform from HSV to RGB
+ BColor hsv2rgb(const BColor& rHSVColor);
+
+ /// Transform from R'G'B' to YIQ (NTSC color model - Y is used in monochrome mode)
+ BColor rgb2yiq(const BColor& rRGBColor);
+ /// Transform from YIQ to R'G'B' (NTSC color model - Y is used in monochrome mode)
+ BColor yiq2rgb(const BColor& rYIQColor);
+
+ /// Transform from R'G'B' to Y'PbPr (the [0,1]x[-.5,.5]x[-.5,.5] equivalent of Y'CbCr (which is scaled into 8bit))
+ BColor rgb2ypbpr(const BColor& rRGBColor);
+ /// Transform from Y'PbPr (the [0,1]x[-.5,.5]x[-.5,.5] equivalent of Y'CbCr (which is scaled into 8bit)) into R'G'B'
+ BColor ypbpr2rgb(const BColor& rYPbPrColor);
+
+ /// Transform from CIE XYZ into Rec. 709 RGB (D65 white point)
+ BColor ciexyz2rgb( const BColor& rXYZColor );
+ /// Transform from Rec. 709 RGB (D65 white point) into CIE XYZ
+ BColor rgb2ciexyz( const BColor& rRGBColor );
+
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_COLOR_BCOLORTOOLS_HXX */
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/curve/b2dbeziertools.hxx b/basegfx/inc/basegfx/curve/b2dbeziertools.hxx
new file mode 100644
index 000000000000..875ab5a1acec
--- /dev/null
+++ b/basegfx/inc/basegfx/curve/b2dbeziertools.hxx
@@ -0,0 +1,66 @@
+/* -*- 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 _BGFX_CURVE_B2DBEZIERTOOLS_HXX
+#define _BGFX_CURVE_B2DBEZIERTOOLS_HXX
+
+#include <sal/types.h>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx
+{
+ class B2DCubicBezier;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B2DCubicBezierHelper
+ {
+ private:
+ ::std::vector< double > maLengthArray;
+ sal_uInt32 mnEdgeCount;
+
+ public:
+ B2DCubicBezierHelper(const B2DCubicBezier& rBase, sal_uInt32 nDivisions = 9);
+
+ double getLength() const { if(maLengthArray.size()) return maLengthArray[maLengthArray.size() - 1]; else return 0.0; }
+ double distanceToRelative(double fDistance) const;
+ double relativeToDistance(double fRelative) const;
+ };
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_CURVE_B2DBEZIERTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/curve/b2dcubicbezier.hxx b/basegfx/inc/basegfx/curve/b2dcubicbezier.hxx
new file mode 100644
index 000000000000..bcc657110521
--- /dev/null
+++ b/basegfx/inc/basegfx/curve/b2dcubicbezier.hxx
@@ -0,0 +1,225 @@
+/* -*- 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 _BGFX_CURVE_B2DCUBICBEZIER_HXX
+#define _BGFX_CURVE_B2DCUBICBEZIER_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace basegfx
+{
+ class B2DPolygon;
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B2DCubicBezier
+ {
+ B2DPoint maStartPoint;
+ B2DPoint maEndPoint;
+ B2DPoint maControlPointA;
+ B2DPoint maControlPointB;
+
+ public:
+ B2DCubicBezier();
+ B2DCubicBezier(const B2DCubicBezier& rBezier);
+ B2DCubicBezier(const B2DPoint& rStart, const B2DPoint& rEnd);
+ B2DCubicBezier(const B2DPoint& rStart, const B2DPoint& rControlPointA, const B2DPoint& rControlPointB, const B2DPoint& rEnd);
+ ~B2DCubicBezier();
+
+ // assignment operator
+ B2DCubicBezier& operator=(const B2DCubicBezier& rBezier);
+
+ // compare operators
+ bool operator==(const B2DCubicBezier& rBezier) const;
+ bool operator!=(const B2DCubicBezier& rBezier) const;
+ bool equal(const B2DCubicBezier& rBezier) const;
+
+ // test if vectors are used
+ bool isBezier() const;
+
+ // test if contained bezier is trivial and reset vectors accordingly
+ void testAndSolveTrivialBezier();
+
+ /** get length of edge
+
+ This method handles beziers and simple edges. For
+ beziers, the deviation describes the maximum allowed
+ deviation from the real edge length. The default
+ allows a deviation of 1% from the correct length.
+
+ For beziers, there is no direct way to get the length,
+ thus this method may subdivide the bezier edge and may
+ not be cheap.
+
+ @param fDeviation
+ The maximal allowed deviation between correct length
+ and bezier edge length
+
+ @return
+ The length of the edge
+ */
+ double getLength(double fDeviation = 0.01) const;
+
+ // get distance between start and end point
+ double getEdgeLength() const;
+
+ // get length of control polygon
+ double getControlPolygonLength() const;
+
+ // data interface
+ B2DPoint getStartPoint() const { return maStartPoint; }
+ void setStartPoint(const B2DPoint& rValue) { maStartPoint = rValue; }
+
+ B2DPoint getEndPoint() const { return maEndPoint; }
+ void setEndPoint(const B2DPoint& rValue) { maEndPoint = rValue; }
+
+ B2DPoint getControlPointA() const { return maControlPointA; }
+ void setControlPointA(const B2DPoint& rValue) { maControlPointA = rValue; }
+
+ B2DPoint getControlPointB() const { return maControlPointB; }
+ void setControlPointB(const B2DPoint& rValue) { maControlPointB = rValue; }
+
+ /** get the tangent in point t
+
+ This method handles all the exceptions, e.g. when control point
+ A is equal to start point and/or control point B is equal to end
+ point
+
+ @param t
+ The bezier index in the range [0.0 .. 1.0]. It will be truncated.
+
+ @return
+ The tangent vector in point t
+ */
+ B2DVector getTangent(double t) const;
+
+ /** adaptive subdivide by angle criteria
+ no start point is added, but all necessary created edges
+ and the end point
+ #i37443# allow the criteria to get unsharp in recursions
+ */
+ void adaptiveSubdivideByAngle(B2DPolygon& rTarget, double fAngleBound, bool bAllowUnsharpen) const;
+
+ /** #i37443# adaptive subdivide by nCount subdivisions
+ no start point is added, but all necessary created edges
+ and the end point
+ */
+ void adaptiveSubdivideByCount(B2DPolygon& rTarget, sal_uInt32 nCount) const;
+
+ /** Subdivide cubic bezier segment.
+
+ This function adaptively subdivides the bezier
+ segment into as much straight line segments as necessary,
+ such that the maximal orthogonal distance from any of the
+ segments to the true curve is less than the given error
+ value.
+ No start point is added, but all necessary created edges
+ and the end point
+
+ @param rPoly
+ Output polygon. The subdivided bezier segment is added to
+ this polygon via B2DPolygon::append().
+
+ @param rCurve
+ The cubic bezier curve to subdivide
+
+ @param fDistanceBound
+ Bound on the maximal distance of the approximation to the
+ true curve.
+ */
+ void adaptiveSubdivideByDistance(B2DPolygon& rTarget, double fDistanceBound) const;
+
+ // get point at given relative position
+ B2DPoint interpolatePoint(double t) const;
+
+ // calculate the smallest distance from given point to this cubic bezier segment
+ // and return the value. The relative position on the segment is returned in rCut.
+ double getSmallestDistancePointToBezierSegment(const B2DPoint& rTestPoint, double& rCut) const;
+
+ // do a split at position t and fill both resulting segments
+ void split(double t, B2DCubicBezier* pBezierA, B2DCubicBezier* pBezierB) const;
+
+ // extract snippet from fStart to fEnd from this bezier
+ B2DCubicBezier snippet(double fStart, double fEnd) const;
+
+ // get range including conrol points
+ B2DRange getRange() const;
+
+ /** Get the minimum extremum position t
+
+ @param rfResult
+ Will be changed and set to a eventually found split value which should be in the
+ range [0.0 .. 1.0]. It will be the smallest current extremum; there may be more
+
+ @return
+ Returns true if there was at least one extremum found
+ */
+ bool getMinimumExtremumPosition(double& rfResult) const;
+
+ /** Get all extremum pos of this segment
+
+ This method will calculate all extremum positions of the segment
+ and add them to rResults if they are in the range ]0.0 .. 1.0[
+
+ @param rResults
+ The vector of doubles where the results will be added. Evtl.
+ existing contents will be removed since an empty vector is a
+ necessary result to express that there are no extreme positions
+ anymore. Since there is an upper maximum of 4 values, it makes
+ sense to use reserve(4) at the vector as preparation.
+ */
+ void getAllExtremumPositions(::std::vector< double >& rResults) const;
+
+ /** Get optimum-split position on this segment
+
+ This method calculates the positions of all points of the segment
+ that have the maximimum distance to the corresponding line from
+ startpoint-endpoint. This helps to approximate the bezier curve
+ with a minimum number of line segments
+
+ @param fResults
+ Result positions are in the range ]0.0 .. 1.0[
+ Cubic beziers have at most two of these positions
+
+ @return
+ Returns the number of split positions found
+ */
+ int getMaxDistancePositions( double fResults[2]) const;
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_CURVE_B2DCUBICBEZIER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx b/basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx
new file mode 100644
index 000000000000..6680acdc45ca
--- /dev/null
+++ b/basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 _BGFX_CURVE_B2DQUADRATICBEZIER_HXX
+#define _BGFX_CURVE_B2DQUADRATICBEZIER_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B2DQuadraticBezier
+ {
+ ::basegfx::B2DPoint maStartPoint;
+ ::basegfx::B2DPoint maEndPoint;
+ ::basegfx::B2DPoint maControlPoint;
+
+ public:
+ B2DQuadraticBezier();
+ B2DQuadraticBezier(const B2DQuadraticBezier& rBezier);
+ B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart, const ::basegfx::B2DPoint& rEnd);
+ B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart,
+ const ::basegfx::B2DPoint& rControlPoint, const ::basegfx::B2DPoint& rEnd);
+ ~B2DQuadraticBezier();
+
+ // assignment operator
+ B2DQuadraticBezier& operator=(const B2DQuadraticBezier& rBezier);
+
+ // compare operators
+ bool operator==(const B2DQuadraticBezier& rBezier) const;
+ bool operator!=(const B2DQuadraticBezier& rBezier) const;
+
+ // test if control point is placed on the edge
+ bool isBezier() const;
+
+ // data interface
+ ::basegfx::B2DPoint getStartPoint() const { return maStartPoint; }
+ void setStartPoint(const ::basegfx::B2DPoint& rValue) { maStartPoint = rValue; }
+
+ ::basegfx::B2DPoint getEndPoint() const { return maEndPoint; }
+ void setEndPoint(const ::basegfx::B2DPoint& rValue) { maEndPoint = rValue; }
+
+ ::basegfx::B2DPoint getControlPoint() const { return maControlPoint; }
+ void setControlPoint(const ::basegfx::B2DPoint& rValue) { maControlPoint = rValue; }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_CURVE_B2DQUADRATICBEZIER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/matrix/b2dhommatrix.hxx b/basegfx/inc/basegfx/matrix/b2dhommatrix.hxx
new file mode 100644
index 000000000000..04d9a2aaf734
--- /dev/null
+++ b/basegfx/inc/basegfx/matrix/b2dhommatrix.hxx
@@ -0,0 +1,171 @@
+/* -*- 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 _BGFX_MATRIX_B2DHOMMATRIX_HXX
+#define _BGFX_MATRIX_B2DHOMMATRIX_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+
+namespace basegfx
+{
+ class B2DTuple;
+ class Impl2DHomMatrix;
+
+ class B2DHomMatrix
+ {
+ public:
+ typedef o3tl::cow_wrapper< Impl2DHomMatrix > ImplType;
+
+ private:
+ ImplType mpImpl;
+
+ public:
+ B2DHomMatrix();
+ B2DHomMatrix(const B2DHomMatrix& rMat);
+ ~B2DHomMatrix();
+
+ /** constructor to allow setting all needed values for a 3x2 matrix at once. The
+ parameter f_0x1 e.g. is the same as using set(0, 1, f)
+ */
+ B2DHomMatrix(double f_0x0, double f_0x1, double f_0x2, double f_1x0, double f_1x1, double f_1x2);
+
+ /// unshare this matrix with all internally shared instances
+ void makeUnique();
+
+ double get(sal_uInt16 nRow, sal_uInt16 nColumn) const;
+ void set(sal_uInt16 nRow, sal_uInt16 nColumn, double fValue);
+
+ /** allow setting all needed values for a 3x2 matrix in one call. The
+ parameter f_0x1 e.g. is the same as using set(0, 1, f)
+ */
+ void set3x2(double f_0x0, double f_0x1, double f_0x2, double f_1x0, double f_1x1, double f_1x2);
+
+ // test if last line is default to see if last line needs to be
+ // involved in calculations
+ bool isLastLineDefault() const;
+
+ // Auf Einheitsmatrix zuruecksetzen
+ bool isIdentity() const;
+ void identity();
+
+ // Invertierung
+ bool isInvertible() const;
+ bool invert();
+
+ // Normalisierung
+ bool isNormalized() const;
+ void normalize();
+
+ // Determinante
+ double determinant() const;
+
+ // Trace
+ double trace() const;
+
+ // Transpose
+ void transpose();
+
+ // Rotation
+ void rotate(double fRadiant);
+
+ // Translation
+ void translate(double fX, double fY);
+
+ // Skalierung
+ void scale(double fX, double fY);
+
+ // Shearing-Matrices
+ void shearX(double fSx);
+ void shearY(double fSy);
+
+ // Addition, Subtraktion
+ B2DHomMatrix& operator+=(const B2DHomMatrix& rMat);
+ B2DHomMatrix& operator-=(const B2DHomMatrix& rMat);
+
+ // Vergleichsoperatoren
+ bool operator==(const B2DHomMatrix& rMat) const;
+ bool operator!=(const B2DHomMatrix& rMat) const;
+
+ // Multiplikation, Division mit Konstante
+ B2DHomMatrix& operator*=(double fValue);
+ B2DHomMatrix& operator/=(double fValue);
+
+ // Matritzenmultiplikation von links auf die lokale
+ B2DHomMatrix& operator*=(const B2DHomMatrix& rMat);
+
+ // assignment operator
+ B2DHomMatrix& operator=(const B2DHomMatrix& rMat);
+
+ // Help routine to decompose given homogen 3x3 matrix to components. A correction of
+ // the components is done to avoid inaccuracies.
+ // Zerlegung
+ bool decompose(B2DTuple& rScale, B2DTuple& rTranslate, double& rRotate, double& rShearX) const;
+ };
+
+ // Addition, Subtraktion
+ inline B2DHomMatrix operator+(const B2DHomMatrix& rMatA, const B2DHomMatrix& rMatB)
+ {
+ B2DHomMatrix aSum(rMatA);
+ aSum += rMatB;
+ return aSum;
+ }
+
+ inline B2DHomMatrix operator-(const B2DHomMatrix& rMatA, const B2DHomMatrix& rMatB)
+ {
+ B2DHomMatrix aDiv(rMatA);
+ aDiv -= rMatB;
+ return aDiv;
+ }
+
+ // Multiplikation, Division mit Konstante
+ inline B2DHomMatrix operator*(const B2DHomMatrix& rMat, double fValue)
+ {
+ B2DHomMatrix aNew(rMat);
+ aNew *= fValue;
+ return aNew;
+ }
+
+ inline B2DHomMatrix operator/(const B2DHomMatrix& rMat, double fValue)
+ {
+ B2DHomMatrix aNew(rMat);
+ aNew *= 1.0 / fValue;
+ return aNew;
+ }
+
+ inline B2DHomMatrix operator*(const B2DHomMatrix& rMatA, const B2DHomMatrix& rMatB)
+ {
+ B2DHomMatrix aMul(rMatB);
+ aMul *= rMatA;
+ return aMul;
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_MATRIX_B2DHOMMATRIX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx b/basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx
new file mode 100644
index 000000000000..a737719e4a30
--- /dev/null
+++ b/basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx
@@ -0,0 +1,237 @@
+/* -*- 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 _BGFX_MATRIX_B2DHOMMATRIXTOOLS_HXX
+#define _BGFX_MATRIX_B2DHOMMATRIXTOOLS_HXX
+
+#include <sal/types.h>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+
+namespace rtl { class OUString; }
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ /** If the rotation angle is an approximate multiple of pi/2,
+ force fSin/fCos to -1/0/1, to maintain orthogonality (which
+ might also be advantageous for the other cases, but: for
+ multiples of pi/2, the exact values _can_ be attained. It
+ would be largely unintuitive, if a 180 degrees rotation
+ would introduce slight roundoff errors, instead of exactly
+ mirroring the coordinate system)
+ */
+ void createSinCosOrthogonal(double& o_rSin, double& rCos, double fRadiant);
+
+ /** Tooling methods for on-the-fly matrix generation e.g. for inline
+ multiplications
+ */
+ B2DHomMatrix createScaleB2DHomMatrix(double fScaleX, double fScaleY);
+ B2DHomMatrix createShearXB2DHomMatrix(double fShearX);
+ B2DHomMatrix createShearYB2DHomMatrix(double fShearY);
+ B2DHomMatrix createRotateB2DHomMatrix(double fRadiant);
+ B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY);
+
+ /// inline versions for parameters as tuples
+ inline B2DHomMatrix createScaleB2DHomMatrix(const B2DTuple& rScale)
+ {
+ return createScaleB2DHomMatrix(rScale.getX(), rScale.getY());
+ }
+
+ inline B2DHomMatrix createTranslateB2DHomMatrix(const B2DTuple& rTranslate)
+ {
+ return createTranslateB2DHomMatrix(rTranslate.getX(), rTranslate.getY());
+ }
+
+ /** Tooling methods for faster completely combined matrix creation
+ when scale, shearX, rotation and translation needs to be done in
+ exactly that order. It's faster since it direcly calculates
+ each matrix value based on a symbolic calculation of the three
+ matrix multiplications.
+ Inline versions for parameters as tuples added, too.
+ */
+ B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(
+ double fScaleX, double fScaleY,
+ double fShearX,
+ double fRadiant,
+ double fTranslateX, double fTranslateY);
+ inline B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(
+ const B2DTuple& rScale,
+ double fShearX,
+ double fRadiant,
+ const B2DTuple& rTranslate)
+ {
+ return createScaleShearXRotateTranslateB2DHomMatrix(
+ rScale.getX(), rScale.getY(),
+ fShearX,
+ fRadiant,
+ rTranslate.getX(), rTranslate.getY());
+ }
+
+ B2DHomMatrix createShearXRotateTranslateB2DHomMatrix(
+ double fShearX,
+ double fRadiant,
+ double fTranslateX, double fTranslateY);
+ inline B2DHomMatrix createShearXRotateTranslateB2DHomMatrix(
+ double fShearX,
+ double fRadiant,
+ const B2DTuple& rTranslate)
+ {
+ return createShearXRotateTranslateB2DHomMatrix(
+ fShearX,
+ fRadiant,
+ rTranslate.getX(), rTranslate.getY());
+ }
+
+ B2DHomMatrix createScaleTranslateB2DHomMatrix(
+ double fScaleX, double fScaleY,
+ double fTranslateX, double fTranslateY);
+ inline B2DHomMatrix createScaleTranslateB2DHomMatrix(
+ const B2DTuple& rScale,
+ const B2DTuple& rTranslate)
+ {
+ return createScaleTranslateB2DHomMatrix(
+ rScale.getX(), rScale.getY(),
+ rTranslate.getX(), rTranslate.getY());
+ }
+
+ /// special for the often used case of rotation around a point
+ B2DHomMatrix createRotateAroundPoint(
+ double fPointX, double fPointY,
+ double fRadiant);
+ inline B2DHomMatrix createRotateAroundPoint(
+ const B2DTuple& rPoint,
+ double fRadiant)
+ {
+ return createRotateAroundPoint(
+ rPoint.getX(), rPoint.getY(),
+ fRadiant);
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ class B2DHomMatrixBufferedDecompose
+ {
+ private:
+ B2DVector maScale;
+ B2DVector maTranslate;
+ double mfRotate;
+ double mfShearX;
+
+ public:
+ B2DHomMatrixBufferedDecompose(const B2DHomMatrix& rB2DHomMatrix)
+ : maScale(),
+ maTranslate(),
+ mfRotate(0.0),
+ mfShearX(0.0)
+ {
+ rB2DHomMatrix.decompose(maScale, maTranslate, mfRotate, mfShearX);
+ }
+
+ // data access
+ B2DHomMatrix getB2DHomMatrix() const
+ {
+ return createScaleShearXRotateTranslateB2DHomMatrix(
+ maScale, mfShearX, mfRotate, maTranslate);
+ }
+
+ const B2DVector& getScale() const { return maScale; }
+ const B2DVector& getTranslate() const { return maTranslate; }
+ double getRotate() const { return mfRotate; }
+ double getShearX() const { return mfShearX; }
+ };
+ } // end of namespace tools
+} // end of namespace basegfx
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ class B2DHomMatrixBufferedOnDemandDecompose
+ {
+ private:
+ B2DHomMatrix maB2DHomMatrix;
+ B2DVector maScale;
+ B2DVector maTranslate;
+ double mfRotate;
+ double mfShearX;
+
+ // bitfield
+ unsigned mbDecomposed : 1;
+
+ void impCheckDecompose()
+ {
+ if(!mbDecomposed)
+ {
+ maB2DHomMatrix.decompose(maScale, maTranslate, mfRotate, mfShearX);
+ mbDecomposed = true;
+ }
+ }
+
+ public:
+ B2DHomMatrixBufferedOnDemandDecompose(const B2DHomMatrix& rB2DHomMatrix)
+ : maB2DHomMatrix(rB2DHomMatrix),
+ maScale(),
+ maTranslate(),
+ mfRotate(0.0),
+ mfShearX(0.0),
+ mbDecomposed(false)
+ {
+ }
+
+ // data access
+ const B2DHomMatrix& getB2DHomMatrix() const { return maB2DHomMatrix; }
+ const B2DVector& getScale() const { const_cast< B2DHomMatrixBufferedOnDemandDecompose* >(this)->impCheckDecompose(); return maScale; }
+ const B2DVector& getTranslate() const { const_cast< B2DHomMatrixBufferedOnDemandDecompose* >(this)->impCheckDecompose(); return maTranslate; }
+ double getRotate() const { const_cast< B2DHomMatrixBufferedOnDemandDecompose* >(this)->impCheckDecompose(); return mfRotate; }
+ double getShearX() const { const_cast< B2DHomMatrixBufferedOnDemandDecompose* >(this)->impCheckDecompose(); return mfShearX; }
+ };
+ } // end of namespace tools
+
+ /// Returns a string with svg's "matrix(m00,m10,m01,m11,m02,m12)" representation
+ ::rtl::OUString exportToSvg( const B2DHomMatrix& rMatrix );
+
+} // end of namespace basegfx
+
+///////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_MATRIX_B2DHOMMATRIXTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/matrix/b3dhommatrix.hxx b/basegfx/inc/basegfx/matrix/b3dhommatrix.hxx
new file mode 100644
index 000000000000..f3face91ee21
--- /dev/null
+++ b/basegfx/inc/basegfx/matrix/b3dhommatrix.hxx
@@ -0,0 +1,178 @@
+/* -*- 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 _BGFX_MATRIX_B3DHOMMATRIX_HXX
+#define _BGFX_MATRIX_B3DHOMMATRIX_HXX
+
+#include <sal/types.h>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <o3tl/cow_wrapper.hxx>
+
+namespace basegfx
+{
+ class B3DTuple;
+ class Impl3DHomMatrix;
+
+ class B3DHomMatrix
+ {
+ public:
+ typedef o3tl::cow_wrapper< Impl3DHomMatrix > ImplType;
+
+ private:
+ ImplType mpImpl;
+
+ public:
+ B3DHomMatrix();
+ B3DHomMatrix(const B3DHomMatrix& rMat);
+ ~B3DHomMatrix();
+
+ /// unshare this matrix with all internally shared instances
+ void makeUnique();
+
+ double get(sal_uInt16 nRow, sal_uInt16 nColumn) const;
+ void set(sal_uInt16 nRow, sal_uInt16 nColumn, double fValue);
+
+ // test if last line is default to see if last line needs to be
+ // involved in calculations
+ bool isLastLineDefault() const;
+
+ bool isIdentity() const;
+ /// Reset to the identity matrix
+ void identity();
+
+ bool isInvertible() const;
+ /// Invert the matrix (if possible)
+ bool invert();
+
+ bool isNormalized() const;
+ /// Normalize (i.e. force w=1) the matrix
+ void normalize();
+
+ /// Calc the matrix determinant
+ double determinant() const;
+
+ /// Calc the matrix trace
+ double trace() const;
+
+ /// Transpose the matrix
+ void transpose();
+
+ /// Rotation
+ void rotate(double fAngleX,double fAngleY,double fAngleZ);
+
+ /// Translation
+ void translate(double fX, double fY, double fZ);
+
+ /// Scaling
+ void scale(double fX, double fY, double fZ);
+
+ // Shearing-Matrices
+ void shearXY(double fSx, double fSy);
+ void shearYZ(double fSy, double fSz);
+ void shearXZ(double fSx, double fSz);
+
+ // Projection matrices, used for converting between eye and
+ // clip coordinates
+ void frustum(double fLeft = -1.0, double fRight = 1.0,
+ double fBottom = -1.0, double fTop = 1.0,
+ double fNear = 0.001, double fFar = 1.0);
+
+ void ortho(double fLeft = -1.0, double fRight = 1.0,
+ double fBottom = -1.0, double fTop = 1.0,
+ double fNear = 0.0, double fFar = 1.0);
+
+ // build orientation matrix
+ void orientation(
+ B3DPoint aVRP = B3DPoint(0.0,0.0,1.0),
+ B3DVector aVPN = B3DVector(0.0,0.0,1.0),
+ B3DVector aVUV = B3DVector(0.0,1.0,0.0));
+
+ // addition, subtraction
+ B3DHomMatrix& operator+=(const B3DHomMatrix& rMat);
+ B3DHomMatrix& operator-=(const B3DHomMatrix& rMat);
+
+ // comparison
+ bool operator==(const B3DHomMatrix& rMat) const;
+ bool operator!=(const B3DHomMatrix& rMat) const;
+
+ // multiplication, division by constant value
+ B3DHomMatrix& operator*=(double fValue);
+ B3DHomMatrix& operator/=(double fValue);
+
+ // matrix multiplication (from the left)
+ B3DHomMatrix& operator*=(const B3DHomMatrix& rMat);
+
+ // assignment operator
+ B3DHomMatrix& operator=(const B3DHomMatrix& rMat);
+
+ // decomposition
+ bool decompose(B3DTuple& rScale, B3DTuple& rTranslate, B3DTuple& rRotate, B3DTuple& rShear) const;
+ };
+
+ // addition, subtraction
+ inline B3DHomMatrix operator+(const B3DHomMatrix& rMatA, const B3DHomMatrix& rMatB)
+ {
+ B3DHomMatrix aSum(rMatA);
+ aSum += rMatB;
+ return aSum;
+ }
+
+ inline B3DHomMatrix operator-(const B3DHomMatrix& rMatA, const B3DHomMatrix& rMatB)
+ {
+ B3DHomMatrix aDiv(rMatA);
+ aDiv -= rMatB;
+ return aDiv;
+ }
+
+ // multiplication, division by constant value
+ inline B3DHomMatrix operator*(const B3DHomMatrix& rMat, double fValue)
+ {
+ B3DHomMatrix aNew(rMat);
+ aNew *= fValue;
+ return aNew;
+ }
+
+ inline B3DHomMatrix operator/(const B3DHomMatrix& rMat, double fValue)
+ {
+ B3DHomMatrix aNew(rMat);
+ aNew *= 1.0 / fValue;
+ return aNew;
+ }
+
+ inline B3DHomMatrix operator*(const B3DHomMatrix& rMatA, const B3DHomMatrix& rMatB)
+ {
+ B3DHomMatrix aMul(rMatB);
+ aMul *= rMatA;
+ return aMul;
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_MATRIX_B3DHOMMATRIX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/numeric/ftools.hxx b/basegfx/inc/basegfx/numeric/ftools.hxx
new file mode 100644
index 000000000000..bc9a1c554187
--- /dev/null
+++ b/basegfx/inc/basegfx/numeric/ftools.hxx
@@ -0,0 +1,206 @@
+/* -*- 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 _BGFX_NUMERIC_FTOOLS_HXX
+#define _BGFX_NUMERIC_FTOOLS_HXX
+
+#include <rtl/math.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// standard PI defines from solar.h, but we do not want to link against tools
+
+#ifndef F_PI
+#define F_PI M_PI
+#endif
+#ifndef F_PI2
+#define F_PI2 M_PI_2
+#endif
+#ifndef F_PI4
+#define F_PI4 M_PI_4
+#endif
+#ifndef F_PI180
+#define F_PI180 (M_PI/180.0)
+#endif
+#ifndef F_PI1800
+#define F_PI1800 (M_PI/1800.0)
+#endif
+#ifndef F_PI18000
+#define F_PI18000 (M_PI/18000.0)
+#endif
+#ifndef F_2PI
+#define F_2PI (2.0*M_PI)
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// fTools defines
+
+namespace basegfx
+{
+ /** Round double to nearest integer
+
+ @return the nearest integer
+ */
+ inline sal_Int32 fround( double fVal )
+ {
+ return fVal > 0.0 ? static_cast<sal_Int32>( fVal + .5 ) : -static_cast<sal_Int32>( -fVal + .5 );
+ }
+
+ /** Round double to nearest integer
+
+ @return the nearest 64 bit integer
+ */
+ inline sal_Int64 fround64( double fVal )
+ {
+ return fVal > 0.0 ? static_cast<sal_Int64>( fVal + .5 ) : -static_cast<sal_Int64>( -fVal + .5 );
+ }
+
+ /** Prune a small epsilon range around zero.
+
+ Use this method e.g. for calculating scale values. There, it
+ is usually advisable not to set a scaling to 0.0, because that
+ yields singular transformation matrices.
+
+ @param fVal
+ An arbitrary, but finite and valid number
+
+ @return either fVal, or a small value slightly above (when
+ fVal>0) or below (when fVal<0) zero.
+ */
+ inline double pruneScaleValue( double fVal )
+ {
+ // old version used ::std::min/max, but this collides if min is defined as preprocessor
+ // macro which is the case e.g with windows.h headers. The simplest way to avoid this is to
+ // just use the full comparison. I keep the original here, maybe there will be a better
+ // solution some day.
+ //
+ //return fVal < 0.0 ?
+ // (::std::min(fVal,-0.00001)) :
+ // (::std::max(fVal,0.00001));
+
+ if(fVal < 0.0)
+ return (fVal < -0.00001 ? fVal : -0.00001);
+ else
+ return (fVal > 0.00001 ? fVal : 0.00001);
+ }
+
+ /** clamp given value against given minimum and maximum values
+ */
+ template <class T> inline const T& clamp(const T& value, const T& minimum, const T& maximum)
+ {
+ if(value < minimum)
+ {
+ return minimum;
+ }
+ else if(value > maximum)
+ {
+ return maximum;
+ }
+ else
+ {
+ return value;
+ }
+ }
+
+ /** Convert value from degrees to radians
+ */
+ inline double deg2rad( double v )
+ {
+ // divide first, to get exact values for v being a multiple of
+ // 90 degrees
+ return v / 90.0 * M_PI_2;
+ }
+
+ /** Convert value radians to degrees
+ */
+ inline double rad2deg( double v )
+ {
+ // divide first, to get exact values for v being a multiple of
+ // pi/2
+ return v / M_PI_2 * 90.0;
+ }
+
+
+ class fTools
+ {
+ /// Threshold value for equalZero()
+ static double mfSmallValue;
+
+ public:
+ /// Get threshold value for equalZero and friends
+ static double getSmallValue() { return mfSmallValue; }
+ /// Set threshold value for equalZero and friends
+ static void setSmallValue(const double& rfNew) { mfSmallValue = rfNew; }
+
+ /// Compare against small value
+ static bool equalZero(const double& rfVal)
+ {
+ return (fabs(rfVal) <= getSmallValue());
+ }
+
+ /// Compare against given small value
+ static bool equalZero(const double& rfVal, const double& rfSmallValue)
+ {
+ return (fabs(rfVal) <= rfSmallValue);
+ }
+
+ static bool equal(const double& rfValA, const double& rfValB)
+ {
+ // changed to approxEqual usage for better numerical correctness
+ return rtl::math::approxEqual(rfValA, rfValB);
+ }
+
+ static bool equal(const double& rfValA, const double& rfValB, const double& rfSmallValue)
+ {
+ return (fabs(rfValA - rfValB) <= rfSmallValue);
+ }
+
+ static bool less(const double& rfValA, const double& rfValB)
+ {
+ return (rfValA < rfValB && !equal(rfValA, rfValB));
+ }
+
+ static bool lessOrEqual(const double& rfValA, const double& rfValB)
+ {
+ return (rfValA < rfValB || equal(rfValA, rfValB));
+ }
+
+ static bool more(const double& rfValA, const double& rfValB)
+ {
+ return (rfValA > rfValB && !equal(rfValA, rfValB));
+ }
+
+ static bool moreOrEqual(const double& rfValA, const double& rfValB)
+ {
+ return (rfValA > rfValB || equal(rfValA, rfValB));
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_NUMERIC_FTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/pixel/bpixel.hxx b/basegfx/inc/basegfx/pixel/bpixel.hxx
new file mode 100644
index 000000000000..fcc2fdfba2a4
--- /dev/null
+++ b/basegfx/inc/basegfx/pixel/bpixel.hxx
@@ -0,0 +1,225 @@
+/* -*- 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 _BGFX_PIXEL_BPIXEL_HXX
+#define _BGFX_PIXEL_BPIXEL_HXX
+
+#include <sal/types.h>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class BPixel
+ {
+ protected:
+ union
+ {
+ struct
+ {
+ // bitfield
+ unsigned mnR : 8; // red intensity
+ unsigned mnG : 8; // green intensity
+ unsigned mnB : 8; // blue intensity
+ unsigned mnO : 8; // opacity, 0 == full transparence
+ } maRGBO;
+
+ struct
+ {
+ // bitfield
+ unsigned mnValue : 32; // all values
+ } maCombinedRGBO;
+ } maPixelUnion;
+
+ public:
+ BPixel()
+ {
+ maPixelUnion.maCombinedRGBO.mnValue = 0L;
+ }
+
+ // use explicit here to make sure everyone knows what he is doing. Values range from
+ // 0..255 integer here.
+ explicit BPixel(sal_uInt8 nRed, sal_uInt8 nGreen, sal_uInt8 nBlue, sal_uInt8 nOpacity)
+ {
+ maPixelUnion.maRGBO.mnR = nRed;
+ maPixelUnion.maRGBO.mnG = nGreen;
+ maPixelUnion.maRGBO.mnB = nBlue;
+ maPixelUnion.maRGBO.mnO = nOpacity;
+ }
+
+ // constructor from BColor which uses double precision color, so change it
+ // to local integer format. It will also be clamped here.
+ BPixel(const BColor& rColor, sal_uInt8 nOpacity)
+ {
+ maPixelUnion.maRGBO.mnR = sal_uInt8((rColor.getRed() * 255.0) + 0.5);
+ maPixelUnion.maRGBO.mnG = sal_uInt8((rColor.getGreen() * 255.0) + 0.5);
+ maPixelUnion.maRGBO.mnB = sal_uInt8((rColor.getBlue() * 255.0) + 0.5);
+ maPixelUnion.maRGBO.mnO = nOpacity;
+ }
+
+ // copy constructor
+ BPixel(const BPixel& rPixel)
+ {
+ maPixelUnion.maCombinedRGBO.mnValue = rPixel.maPixelUnion.maCombinedRGBO.mnValue;
+ }
+
+ ~BPixel()
+ {}
+
+ // assignment operator
+ BPixel& operator=( const BPixel& rPixel )
+ {
+ maPixelUnion.maCombinedRGBO.mnValue = rPixel.maPixelUnion.maCombinedRGBO.mnValue;
+ return *this;
+ }
+
+ // data access read
+ sal_uInt8 getRed() const { return maPixelUnion.maRGBO.mnR; }
+ sal_uInt8 getGreen() const { return maPixelUnion.maRGBO.mnG; }
+ sal_uInt8 getBlue() const { return maPixelUnion.maRGBO.mnB; }
+ sal_uInt8 getOpacity() const { return maPixelUnion.maRGBO.mnO; }
+ sal_uInt32 getRedGreenBlueOpacity() const { return maPixelUnion.maCombinedRGBO.mnValue; }
+
+ // data access write
+ void setRed(sal_uInt8 nNew) { maPixelUnion.maRGBO.mnR = nNew; }
+ void setGreen(sal_uInt8 nNew) { maPixelUnion.maRGBO.mnG = nNew; }
+ void setBlue(sal_uInt8 nNew) { maPixelUnion.maRGBO.mnB = nNew; }
+ void setOpacity(sal_uInt8 nNew) { maPixelUnion.maRGBO.mnO = nNew; }
+ void setRedGreenBlueOpacity(sal_uInt32 nRedGreenBlueOpacity) { maPixelUnion.maCombinedRGBO.mnValue = nRedGreenBlueOpacity; }
+ void setRedGreenBlue(sal_uInt8 nR, sal_uInt8 nG, sal_uInt8 nB) { maPixelUnion.maRGBO.mnR = nR; maPixelUnion.maRGBO.mnG = nG; maPixelUnion.maRGBO.mnB = nB; }
+
+ // comparators
+ bool isInvisible() const { return (0 == maPixelUnion.maRGBO.mnO); }
+ bool isVisible() const { return (0 != maPixelUnion.maRGBO.mnO); }
+ bool isEmpty() const { return isInvisible(); }
+ bool isUsed() const { return isVisible(); }
+
+ bool operator==( const BPixel& rPixel ) const
+ {
+ return (rPixel.maPixelUnion.maCombinedRGBO.mnValue == maPixelUnion.maCombinedRGBO.mnValue);
+ }
+
+ bool operator!=( const BPixel& rPixel ) const
+ {
+ return (rPixel.maPixelUnion.maCombinedRGBO.mnValue != maPixelUnion.maCombinedRGBO.mnValue);
+ }
+
+ // empty element
+ static const BPixel& getEmptyBPixel();
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // external operators
+
+ inline BPixel minimum(const BPixel& rTupA, const BPixel& rTupB)
+ {
+ BPixel aMin(
+ (rTupB.getRed() < rTupA.getRed()) ? rTupB.getRed() : rTupA.getRed(),
+ (rTupB.getGreen() < rTupA.getGreen()) ? rTupB.getGreen() : rTupA.getGreen(),
+ (rTupB.getBlue() < rTupA.getBlue()) ? rTupB.getBlue() : rTupA.getBlue(),
+ (rTupB.getOpacity() < rTupA.getOpacity()) ? rTupB.getOpacity() : rTupA.getOpacity());
+ return aMin;
+ }
+
+ inline BPixel maximum(const BPixel& rTupA, const BPixel& rTupB)
+ {
+ BPixel aMax(
+ (rTupB.getRed() > rTupA.getRed()) ? rTupB.getRed() : rTupA.getRed(),
+ (rTupB.getGreen() > rTupA.getGreen()) ? rTupB.getGreen() : rTupA.getGreen(),
+ (rTupB.getBlue() > rTupA.getBlue()) ? rTupB.getBlue() : rTupA.getBlue(),
+ (rTupB.getOpacity() > rTupA.getOpacity()) ? rTupB.getOpacity() : rTupA.getOpacity());
+ return aMax;
+ }
+
+ inline BPixel interpolate(const BPixel& rOld1, const BPixel& rOld2, double t)
+ {
+ if(rOld1 == rOld2)
+ {
+ return rOld1;
+ }
+ else if(0.0 >= t)
+ {
+ return rOld1;
+ }
+ else if(1.0 <= t)
+ {
+ return rOld2;
+ }
+ else
+ {
+ const sal_uInt32 nFactor(fround(256.0 * t));
+ const sal_uInt32 nNegFac(256L - nFactor);
+ return BPixel(
+ (sal_uInt8)(((sal_uInt32)rOld1.getRed() * nNegFac + (sal_uInt32)rOld2.getRed() * nFactor) >> 8L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getGreen() * nNegFac + (sal_uInt32)rOld2.getGreen() * nFactor) >> 8L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getBlue() * nNegFac + (sal_uInt32)rOld2.getBlue() * nFactor) >> 8L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getOpacity() * nNegFac + (sal_uInt32)rOld2.getOpacity() * nFactor) >> 8L));
+ }
+ }
+
+ inline BPixel average(const BPixel& rOld1, const BPixel& rOld2)
+ {
+ if(rOld1 == rOld2)
+ {
+ return rOld1;
+ }
+ else
+ {
+ return BPixel(
+ (sal_uInt8)(((sal_uInt32)rOld1.getRed() + (sal_uInt32)rOld2.getRed()) >> 1L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getGreen() + (sal_uInt32)rOld2.getGreen()) >> 1L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getBlue() + (sal_uInt32)rOld2.getBlue()) >> 1L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getOpacity() + (sal_uInt32)rOld2.getOpacity()) >> 1L));
+ }
+ }
+
+ inline BPixel average(const BPixel& rOld1, const BPixel& rOld2, const BPixel& rOld3)
+ {
+ if(rOld1 == rOld2 && rOld2 == rOld3)
+ {
+ return rOld1;
+ }
+ else
+ {
+ return BPixel(
+ (sal_uInt8)(((sal_uInt32)rOld1.getRed() + (sal_uInt32)rOld2.getRed() + (sal_uInt32)rOld3.getRed()) / 3L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getGreen() + (sal_uInt32)rOld2.getGreen() + (sal_uInt32)rOld3.getGreen()) / 3L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getBlue() + (sal_uInt32)rOld2.getBlue() + (sal_uInt32)rOld3.getBlue()) / 3L),
+ (sal_uInt8)(((sal_uInt32)rOld1.getOpacity() + (sal_uInt32)rOld2.getOpacity() + (sal_uInt32)rOld3.getOpacity()) / 3L));
+ }
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_PIXEL_BPIXEL_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/point/b2dhompoint.hxx b/basegfx/inc/basegfx/point/b2dhompoint.hxx
new file mode 100644
index 000000000000..2736edaedde8
--- /dev/null
+++ b/basegfx/inc/basegfx/point/b2dhompoint.hxx
@@ -0,0 +1,238 @@
+/* -*- 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 _BGFX_POINT_B2DHOMPOINT_HXX
+#define _BGFX_POINT_B2DHOMPOINT_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+
+namespace basegfx
+{
+ /** Basic homogen Point class with two double values and one homogen factor
+
+ This class provides access to homogen coordinates in 2D.
+ For this purpose all the operators which need to do specific
+ action due to their homogenity are implemented here.
+ The only caveat are member methods which are declared as const
+ but do change the content. These are documented for that reason.
+ The class is designed to provide homogenous coordinates without
+ direct access to the homogen part (mfW). This is also the reason
+ for leaving out the [] operators which return references to members.
+
+ @see B2DTuple
+ */
+ class B2DHomPoint
+ {
+ protected:
+ /// This member contains the coordinate part of the point
+ ::basegfx::B2DTuple maTuple;
+
+ /// This Member holds the homogenous part of the point
+ double mfW;
+
+ /** Test if this homogen point does have a homogenous part
+
+ @return Returns true if this point has no homogenous part
+ */
+ bool implIsHomogenized() const;
+
+ /** Remove homogenous part of this Point
+
+ This method does necessary calculations to remove
+ the evtl. homogenous part of this Point. This may
+ change all members.
+ */
+ void implHomogenize();
+
+ /** Test and on demand remove homogenous part
+
+ This method tests if this Point does have a homogenous part
+ and then evtl. takes actions to remove that part.
+
+ @attention Even when this method is const it may change all
+ members of this instance. This is due to the fact that changing
+ the homogenous part of a homogenous point does from a mathematical
+ point of view not change the point at all.
+ */
+ void implTestAndHomogenize() const;
+
+ public:
+ /** Create a homogen point
+
+ The point is initialized to (0.0, 0.0)
+ */
+ B2DHomPoint()
+ : maTuple(),
+ mfW(1.0)
+ {}
+
+ /** Create a homogen point
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the Point. The homogenous part is initialized to 1.0.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the Point. The homogenous part is initialized to 1.0.
+ */
+ B2DHomPoint(double fX, double fY)
+ : maTuple(fX, fY),
+ mfW(1.0)
+ {}
+
+ /** Create a copy of a 2D Point
+
+ @param rVec
+ The 2D point which will be copied. The homogenous part
+ is initialized to 1.0.
+ */
+ B2DHomPoint(const B2DPoint& rVec)
+ : maTuple(rVec),
+ mfW(1.0)
+ {}
+
+ /** Create a copy of a homogen point
+
+ @param rVec
+ The homogen point which will be copied. The homogenous part
+ is copied, too.
+ */
+ B2DHomPoint(const B2DHomPoint& rVec)
+ : maTuple(rVec.maTuple.getX(), rVec.maTuple.getY()),
+ mfW(rVec.mfW)
+ {}
+
+ ~B2DHomPoint()
+ {}
+
+ /** Get a 2D point from this homogenous point
+
+ This method normalizes this homogen point if necessary and
+ returns the corresponding 2D point for this homogen point.
+
+ @attention Even when this method is const it may change all
+ members of this instance.
+ */
+ B2DPoint getB2DPoint() const;
+
+ /** Get X-coordinate
+
+ This method normalizes this homogen point if necessary and
+ returns the corresponding X-coordinate for this homogen point.
+
+ @attention Even when this method is const it may change all
+ members of this instance.
+ */
+ double getX() const;
+
+ /** Get Y-coordinate
+
+ This method normalizes this homogen point if necessary and
+ returns the corresponding Y-coordinate for this homogen point.
+
+ @attention Even when this method is const it may change all
+ members of this instance.
+ */
+ double getY() const;
+
+ /** Set X-coordinate of the homogen point.
+
+ This method sets the X-coordinate of the homogen point. If
+ the point does have a homogenous part this is taken into account.
+
+ @param fX
+ The to-be-set X-coordinate without homogenous part.
+ */
+ void setX(double fX);
+
+ /** Set Y-coordinate of the homogen point.
+
+ This method sets the Y-coordinate of the homogen point. If
+ the point does have a homogenous part this is taken into account.
+
+ @param fY
+ The to-be-set Y-coordinate without homogenous part.
+ */
+ void setY(double fY);
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B2DHomPoint& operator+=( const B2DHomPoint& rPnt );
+
+ B2DHomPoint& operator-=( const B2DHomPoint& rPnt );
+
+ B2DHomPoint& operator*=(double t);
+
+ B2DHomPoint& operator*=( const B2DHomMatrix& rMat );
+
+ B2DHomPoint& operator/=(double t);
+
+ B2DHomPoint& operator-(void);
+
+ bool operator==( const B2DHomPoint& rPnt ) const;
+
+ bool operator!=( const B2DHomPoint& rPnt ) const;
+
+ B2DHomPoint& operator=( const B2DHomPoint& rPnt );
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ B2DHomPoint minimum(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB);
+
+ B2DHomPoint maximum(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB);
+
+ B2DHomPoint absolute(const B2DHomPoint& rVec);
+
+ B2DHomPoint interpolate(B2DHomPoint& rOld1, B2DHomPoint& rOld2, double t);
+
+ B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2);
+
+ B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2, B2DHomPoint& rOld3);
+
+ B2DHomPoint operator+(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB);
+
+ B2DHomPoint operator-(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB);
+
+ B2DHomPoint operator*(const B2DHomPoint& rVec, double t);
+
+ B2DHomPoint operator*(double t, const B2DHomPoint& rVec);
+
+ B2DHomPoint operator*( const B2DHomMatrix& rMat, const B2DHomPoint& rPoint );
+
+ B2DHomPoint operator/(const B2DHomPoint& rVec, double t);
+
+ B2DHomPoint operator/(double t, const B2DHomPoint& rVec);
+} // end of namespace basegfx
+
+#endif /* _BGFX_POINT_B2DHOMPOINT_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/point/b2dpoint.hxx b/basegfx/inc/basegfx/point/b2dpoint.hxx
new file mode 100644
index 000000000000..2b652d64afb8
--- /dev/null
+++ b/basegfx/inc/basegfx/point/b2dpoint.hxx
@@ -0,0 +1,154 @@
+/* -*- 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 _BGFX_POINT_B2DPOINT_HXX
+#define _BGFX_POINT_B2DPOINT_HXX
+
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predeclaration
+ class B2DHomMatrix;
+
+ /** Base Point class with two double values
+
+ This class derives all operators and common handling for
+ a 2D data class from B2DTuple. All necessary extensions
+ which are special for points will be added here.
+
+ @see B2DTuple
+ */
+ class B2DPoint : public ::basegfx::B2DTuple
+ {
+ public:
+ /** Create a 2D Point
+
+ The point is initialized to (0.0, 0.0)
+ */
+ B2DPoint()
+ : B2DTuple()
+ {}
+
+ /** Create a 2D Point
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 2D Point.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 2D Point.
+ */
+ B2DPoint(double fX, double fY)
+ : B2DTuple(fX, fY)
+ {}
+
+ /** Create a copy of a 2D Point
+
+ @param rPoint
+ The 2D Point which will be copied.
+ */
+ B2DPoint(const B2DPoint& rPoint)
+ : B2DTuple(rPoint)
+ {}
+
+ /** Create a copy of a 2D Point
+
+ @param rPoint
+ The 2D Point which will be copied.
+ */
+ B2DPoint(const ::basegfx::B2IPoint& rPoint)
+ : B2DTuple(rPoint)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B2DTuple-based classes
+ */
+ B2DPoint(const ::basegfx::B2DTuple& rTuple)
+ : B2DTuple(rTuple)
+ {}
+
+ ~B2DPoint()
+ {}
+
+ /** *=operator to allow usage from B2DPoint, too
+ */
+ B2DPoint& operator*=( const B2DPoint& rPnt )
+ {
+ mfX *= rPnt.mfX;
+ mfY *= rPnt.mfY;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B2DPoint, too
+ */
+ B2DPoint& operator*=(double t)
+ {
+ mfX *= t;
+ mfY *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B2DTuple calculations
+ */
+ B2DPoint& operator=( const ::basegfx::B2DTuple& rPoint );
+
+ /** Transform point by given transformation matrix.
+
+ The translational components of the matrix are, in
+ contrast to B2DVector, applied.
+ */
+ B2DPoint& operator*=( const ::basegfx::B2DHomMatrix& rMat );
+
+ static const B2DPoint& getEmptyPoint()
+ {
+ return (const B2DPoint&) ::basegfx::B2DTuple::getEmptyTuple();
+ }
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ /** Transform B2DPoint by given transformation matrix.
+
+ Since this is a Point, translational components of the
+ matrix are used.
+ */
+ B2DPoint operator*( const B2DHomMatrix& rMat, const B2DPoint& rPoint );
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_POINT_B2DPOINT_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/point/b2ipoint.hxx b/basegfx/inc/basegfx/point/b2ipoint.hxx
new file mode 100644
index 000000000000..c9ec03108b22
--- /dev/null
+++ b/basegfx/inc/basegfx/point/b2ipoint.hxx
@@ -0,0 +1,130 @@
+/* -*- 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 _BGFX_POINT_B2IPOINT_HXX
+#define _BGFX_POINT_B2IPOINT_HXX
+
+#include <basegfx/tuple/b2ituple.hxx>
+
+namespace basegfx
+{
+ // predeclaration
+ class B2DHomMatrix;
+
+ /** Base Point class with two sal_Int32 values
+
+ This class derives all operators and common handling for
+ a 2D data class from B2ITuple. All necessary extensions
+ which are special for points will be added here.
+
+ @see B2ITuple
+ */
+ class B2IPoint : public ::basegfx::B2ITuple
+ {
+ public:
+ /** Create a 2D Point
+
+ The point is initialized to (0, 0)
+ */
+ B2IPoint()
+ : B2ITuple()
+ {}
+
+ /** Create a 2D Point
+
+ @param nX
+ This parameter is used to initialize the X-coordinate
+ of the 2D Point.
+
+ @param nY
+ This parameter is used to initialize the Y-coordinate
+ of the 2D Point.
+ */
+ B2IPoint(sal_Int32 nX, sal_Int32 nY)
+ : B2ITuple(nX, nY)
+ {}
+
+ /** Create a copy of a 2D Point
+
+ @param rPoint
+ The 2D Point which will be copied.
+ */
+ B2IPoint(const B2IPoint& rPoint)
+ : B2ITuple(rPoint)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B2ITuple-based classes
+ */
+ B2IPoint(const ::basegfx::B2ITuple& rTuple)
+ : B2ITuple(rTuple)
+ {}
+
+ ~B2IPoint()
+ {}
+
+ /** *=operator to allow usage from B2IPoint, too
+ */
+ B2IPoint& operator*=( const B2IPoint& rPnt )
+ {
+ mnX *= rPnt.mnX;
+ mnY *= rPnt.mnY;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B2IPoint, too
+ */
+ B2IPoint& operator*=(sal_Int32 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B2ITuple calculations
+ */
+ B2IPoint& operator=( const ::basegfx::B2ITuple& rPoint );
+
+ /** Transform point by given transformation matrix.
+
+ The translational components of the matrix are, in
+ contrast to B2DVector, applied.
+ */
+ B2IPoint& operator*=( const ::basegfx::B2DHomMatrix& rMat );
+
+ static const B2IPoint& getEmptyPoint()
+ {
+ return (const B2IPoint&) ::basegfx::B2ITuple::getEmptyTuple();
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_POINT_B2IPOINT_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/point/b3dhompoint.hxx b/basegfx/inc/basegfx/point/b3dhompoint.hxx
new file mode 100644
index 000000000000..763997620bd0
--- /dev/null
+++ b/basegfx/inc/basegfx/point/b3dhompoint.hxx
@@ -0,0 +1,408 @@
+/* -*- 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 _BGFX_POINT_B3DHOMPOINT_HXX
+#define _BGFX_POINT_B3DHOMPOINT_HXX
+
+#include <basegfx/point/b3dpoint.hxx>
+
+namespace basegfx
+{
+ /** Basic homogen Point class with three double values and one homogen factor
+
+ This class provides access to homogen coordinates in 3D.
+ For this purpose all the operators which need to do specific
+ action due to their homogenity are implemented here.
+ The only caveat are member methods which are declared as const
+ but do change the content. These are documented for that reason.
+ The class is designed to provide homogenous coordinates without
+ direct access to the homogen part (mfW). This is also the reason
+ for leaving out the [] operators which return references to members.
+
+ @see B3DTuple
+ */
+ class B3DHomPoint
+ {
+ protected:
+ /// This member contains the coordinate part of the point
+ ::basegfx::B3DTuple maTuple;
+
+ /// This Member holds the homogenous part of the point
+ double mfW;
+
+ /** Test if this homogen point does have a homogenous part
+
+ @return Returns true if this point has no homogenous part
+ */
+ bool implIsHomogenized() const
+ {
+ const double fOne(1.0);
+ return ::basegfx::fTools::equal(mfW, fOne);
+ }
+
+ /** Remove homogenous part of this Point
+
+ This method does necessary calculations to remove
+ the evtl. homogenous part of this Point. This may
+ change all members.
+ */
+ void implHomogenize();
+
+ /** Test and on demand remove homogenous part
+
+ This method tests if this Point does have a homogenous part
+ and then evtl. takes actions to remove that part.
+
+ @attention Even when this method is const it may change all
+ members of this instance. This is due to the fact that changing
+ the homogenous part of a homogenous point does from a mathematical
+ point of view not change the point at all.
+ */
+ void implTestAndHomogenize() const
+ {
+ if(!implIsHomogenized())
+ ((B3DHomPoint*)this)->implHomogenize();
+ }
+
+ public:
+ /** Create a homogen point
+
+ The point is initialized to (0.0, 0.0, 0.0)
+ */
+ B3DHomPoint()
+ : maTuple(),
+ mfW(1.0)
+ {}
+
+ /** Create a homogen point
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the Point. The homogenous part is initialized to 1.0.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the Point. The homogenous part is initialized to 1.0.
+
+ @param fZ
+ This parameter is used to initialize the Z-coordinate
+ of the Point. The homogenous part is initialized to 1.0.
+ */
+ B3DHomPoint(double fX, double fY, double fZ)
+ : maTuple(fX, fY, fZ),
+ mfW(1.0)
+ {}
+
+ /** Create a copy of a 3D Point
+
+ @param rVec
+ The 3D point which will be copied. The homogenous part
+ is initialized to 1.0.
+ */
+ B3DHomPoint(const B3DPoint& rVec)
+ : maTuple(rVec),
+ mfW(1.0)
+ {}
+
+ /** Create a copy of a homogen point
+
+ @param rVec
+ The homogen point which will be copied. The homogenous part
+ is copied, too.
+ */
+ B3DHomPoint(const B3DHomPoint& rVec)
+ : maTuple(rVec.maTuple.getX(), rVec.maTuple.getY(), rVec.maTuple.getZ()),
+ mfW(rVec.mfW)
+ {}
+
+ ~B3DHomPoint()
+ {}
+
+ /** get a 3D point from this homogenous point
+
+ This method normalizes this homogen point if necessary and
+ returns the corresponding 3D point for this homogen point.
+
+ @attention Even when this method is const it may change all
+ members of this instance.
+ */
+ B3DPoint getB3DPoint() const
+ {
+ implTestAndHomogenize();
+ return B3DPoint(maTuple.getX(), maTuple.getY(), maTuple.getZ());
+ }
+
+ /** get X-coordinate
+
+ This method normalizes this homogen point if necessary and
+ returns the corresponding X-coordinate for this homogen point.
+
+ @attention Even when this method is const it may change all
+ members of this instance.
+ */
+ double getX() const
+ {
+ implTestAndHomogenize();
+ return maTuple.getX();
+ }
+
+ /** get Y-coordinate
+
+ This method normalizes this homogen point if necessary and
+ returns the corresponding Y-coordinate for this homogen point.
+
+ @attention Even when this method is const it may change all
+ members of this instance.
+ */
+ double getY() const
+ {
+ implTestAndHomogenize();
+ return maTuple.getY();
+ }
+
+ /** get Z-coordinate
+
+ This method normalizes this homogen point if necessary and
+ returns the corresponding Z-coordinate for this homogen point.
+
+ @attention Even when this method is const it may change all
+ members of this instance.
+ */
+ double getZ() const
+ {
+ implTestAndHomogenize();
+ return maTuple.getY();
+ }
+
+ /** Set X-coordinate of the homogen point.
+
+ This method sets the X-coordinate of the homogen point. If
+ the point does have a homogenous part this is taken into account.
+
+ @param fX
+ The to-be-set X-coordinate without homogenous part.
+ */
+ void setX(double fX)
+ {
+ maTuple.setX(implIsHomogenized() ? fX : fX * mfW );
+ }
+
+ /** Set Y-coordinate of the homogen point.
+
+ This method sets the Y-coordinate of the homogen point. If
+ the point does have a homogenous part this is taken into account.
+
+ @param fY
+ The to-be-set Y-coordinate without homogenous part.
+ */
+ void setY(double fY)
+ {
+ maTuple.setY(implIsHomogenized() ? fY : fY * mfW );
+ }
+
+ /** Set Z-coordinate of the homogen point.
+
+ This method sets the Z-coordinate of the homogen point. If
+ the point does have a homogenous part this is taken into account.
+
+ @param fZ
+ The to-be-set Z-coordinate without homogenous part.
+ */
+ void setZ(double fZ)
+ {
+ maTuple.setZ(implIsHomogenized() ? fZ : fZ * mfW );
+ }
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B3DHomPoint& operator+=( const B3DHomPoint& rPnt )
+ {
+ maTuple.setX(getX() * rPnt.mfW + rPnt.getX() * mfW);
+ maTuple.setY(getY() * rPnt.mfW + rPnt.getY() * mfW);
+ maTuple.setZ(getZ() * rPnt.mfW + rPnt.getZ() * mfW);
+ mfW = mfW * rPnt.mfW;
+
+ return *this;
+ }
+
+ B3DHomPoint& operator-=( const B3DHomPoint& rPnt )
+ {
+ maTuple.setX(getX() * rPnt.mfW - rPnt.getX() * mfW);
+ maTuple.setY(getY() * rPnt.mfW - rPnt.getY() * mfW);
+ maTuple.setZ(getZ() * rPnt.mfW - rPnt.getZ() * mfW);
+ mfW = mfW * rPnt.mfW;
+
+ return *this;
+ }
+
+ B3DHomPoint& operator*=(double t)
+ {
+ if(!::basegfx::fTools::equalZero(t))
+ {
+ mfW /= t;
+ }
+
+ return *this;
+ }
+
+ B3DHomPoint& operator/=(double t)
+ {
+ mfW *= t;
+ return *this;
+ }
+
+ B3DHomPoint& operator-(void)
+ {
+ mfW = -mfW;
+ return *this;
+ }
+
+ bool operator==( const B3DHomPoint& rPnt ) const
+ {
+ implTestAndHomogenize();
+ return (maTuple == rPnt.maTuple);
+ }
+
+ bool operator!=( const B3DHomPoint& rPnt ) const
+ {
+ implTestAndHomogenize();
+ return (maTuple != rPnt.maTuple);
+ }
+
+ B3DHomPoint& operator=( const B3DHomPoint& rPnt )
+ {
+ maTuple = rPnt.maTuple;
+ mfW = rPnt.mfW;
+ return *this;
+ }
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ inline B3DHomPoint minimum(const B3DHomPoint& rVecA, const B3DHomPoint& rVecB)
+ {
+ B3DHomPoint aMin(
+ (rVecB.getX() < rVecA.getX()) ? rVecB.getX() : rVecA.getX(),
+ (rVecB.getY() < rVecA.getY()) ? rVecB.getY() : rVecA.getY(),
+ (rVecB.getZ() < rVecA.getZ()) ? rVecB.getZ() : rVecA.getZ());
+ return aMin;
+ }
+
+ inline B3DHomPoint maximum(const B3DHomPoint& rVecA, const B3DHomPoint& rVecB)
+ {
+ B3DHomPoint aMax(
+ (rVecB.getX() > rVecA.getX()) ? rVecB.getX() : rVecA.getX(),
+ (rVecB.getY() > rVecA.getY()) ? rVecB.getY() : rVecA.getY(),
+ (rVecB.getZ() > rVecA.getZ()) ? rVecB.getZ() : rVecA.getZ());
+ return aMax;
+ }
+
+ inline B3DHomPoint absolute(const B3DHomPoint& rVec)
+ {
+ B3DHomPoint aAbs(
+ (0.0 > rVec.getX()) ? -rVec.getX() : rVec.getX(),
+ (0.0 > rVec.getY()) ? -rVec.getY() : rVec.getY(),
+ (0.0 > rVec.getZ()) ? -rVec.getZ() : rVec.getZ());
+ return aAbs;
+ }
+
+ inline B3DHomPoint interpolate(B3DHomPoint& rOld1, B3DHomPoint& rOld2, double t)
+ {
+ B3DHomPoint aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY(),
+ ((rOld2.getZ() - rOld1.getZ()) * t) + rOld1.getZ());
+ return aInt;
+ }
+
+ inline B3DHomPoint average(B3DHomPoint& rOld1, B3DHomPoint& rOld2)
+ {
+ B3DHomPoint aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5,
+ (rOld1.getZ() + rOld2.getZ()) * 0.5);
+ return aAvg;
+ }
+
+ inline B3DHomPoint average(B3DHomPoint& rOld1, B3DHomPoint& rOld2, B3DHomPoint& rOld3)
+ {
+ B3DHomPoint aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0),
+ (rOld1.getZ() + rOld2.getZ() + rOld3.getZ()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ inline B3DHomPoint operator+(const B3DHomPoint& rVecA, const B3DHomPoint& rVecB)
+ {
+ B3DHomPoint aSum(rVecA);
+ aSum += rVecB;
+ return aSum;
+ }
+
+ inline B3DHomPoint operator-(const B3DHomPoint& rVecA, const B3DHomPoint& rVecB)
+ {
+ B3DHomPoint aSub(rVecA);
+ aSub -= rVecB;
+ return aSub;
+ }
+
+ inline B3DHomPoint operator*(const B3DHomPoint& rVec, double t)
+ {
+ B3DHomPoint aNew(rVec);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3DHomPoint operator*(double t, const B3DHomPoint& rVec)
+ {
+ B3DHomPoint aNew(rVec);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3DHomPoint operator/(const B3DHomPoint& rVec, double t)
+ {
+ B3DHomPoint aNew(rVec);
+ aNew /= t;
+ return aNew;
+ }
+
+ inline B3DHomPoint operator/(double t, const B3DHomPoint& rVec)
+ {
+ B3DHomPoint aNew(rVec);
+ aNew /= t;
+ return aNew;
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_POINT_B3DHOMPOINT_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/point/b3dpoint.hxx b/basegfx/inc/basegfx/point/b3dpoint.hxx
new file mode 100644
index 000000000000..96686efaf450
--- /dev/null
+++ b/basegfx/inc/basegfx/point/b3dpoint.hxx
@@ -0,0 +1,153 @@
+/* -*- 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 _BGFX_POINT_B3DPOINT_HXX
+#define _BGFX_POINT_B3DPOINT_HXX
+
+#include <basegfx/tuple/b3dtuple.hxx>
+
+namespace basegfx
+{
+ // predeclaration
+ class B3DHomMatrix;
+
+ /** Base Point class with three double values
+
+ This class derives all operators and common handling for
+ a 3D data class from B3DTuple. All necessary extensions
+ which are special for points will be added here.
+
+ @see B3DTuple
+ */
+ class B3DPoint : public ::basegfx::B3DTuple
+ {
+ public:
+ /** Create a 3D Point
+
+ The point is initialized to (0.0, 0.0, 0.0)
+ */
+ B3DPoint()
+ : B3DTuple()
+ {}
+
+ /** Create a 3D Point
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 3D Point.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 3D Point.
+
+ @param fZ
+ This parameter is used to initialize the Z-coordinate
+ of the 3D Point.
+ */
+ B3DPoint(double fX, double fY, double fZ)
+ : B3DTuple(fX, fY, fZ)
+ {}
+
+ /** Create a copy of a 3D Point
+
+ @param rVec
+ The 3D Point which will be copied.
+ */
+ B3DPoint(const B3DPoint& rVec)
+ : B3DTuple(rVec)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B3DTuple-based classes
+ */
+ B3DPoint(const ::basegfx::B3DTuple& rTuple)
+ : B3DTuple(rTuple)
+ {}
+
+ ~B3DPoint()
+ {}
+
+ /** *=operator to allow usage from B3DPoint, too
+ */
+ B3DPoint& operator*=( const B3DPoint& rPnt )
+ {
+ mfX *= rPnt.mfX;
+ mfY *= rPnt.mfY;
+ mfZ *= rPnt.mfZ;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B3DPoint, too
+ */
+ B3DPoint& operator*=(double t)
+ {
+ mfX *= t;
+ mfY *= t;
+ mfZ *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B3DTuple calculations
+ */
+ B3DPoint& operator=( const ::basegfx::B3DTuple& rVec )
+ {
+ mfX = rVec.getX();
+ mfY = rVec.getY();
+ mfZ = rVec.getZ();
+ return *this;
+ }
+
+ /** Transform point by given transformation matrix.
+
+ The translational components of the matrix are, in
+ contrast to B3DVector, applied.
+ */
+ B3DPoint& operator*=( const ::basegfx::B3DHomMatrix& rMat );
+
+ static const B3DPoint& getEmptyPoint()
+ {
+ return (const B3DPoint&) ::basegfx::B3DTuple::getEmptyTuple();
+ }
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ /** Transform B3DPoint by given transformation matrix.
+
+ Since this is a Point, translational components of the
+ matrix are used.
+ */
+ B3DPoint operator*( const B3DHomMatrix& rMat, const B3DPoint& rPoint );
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_POINT_B3DPOINT_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/point/b3ipoint.hxx b/basegfx/inc/basegfx/point/b3ipoint.hxx
new file mode 100644
index 000000000000..17e63a00040c
--- /dev/null
+++ b/basegfx/inc/basegfx/point/b3ipoint.hxx
@@ -0,0 +1,142 @@
+/* -*- 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 _BGFX_POINT_B3IPOINT_HXX
+#define _BGFX_POINT_B3IPOINT_HXX
+
+#include <basegfx/tuple/b3ituple.hxx>
+
+namespace basegfx
+{
+ // predeclaration
+ class B3DHomMatrix;
+
+ /** Base Point class with three sal_Int32 values
+
+ This class derives all operators and common handling for
+ a 3D data class from B3ITuple. All necessary extensions
+ which are special for points will be added here.
+
+ @see B3ITuple
+ */
+ class B3IPoint : public ::basegfx::B3ITuple
+ {
+ public:
+ /** Create a 3D Point
+
+ The point is initialized to (0, 0, 0)
+ */
+ B3IPoint()
+ : B3ITuple()
+ {}
+
+ /** Create a 3D Point
+
+ @param nX
+ This parameter is used to initialize the X-coordinate
+ of the 3D Point.
+
+ @param nY
+ This parameter is used to initialize the Y-coordinate
+ of the 3D Point.
+
+ @param nZ
+ This parameter is used to initialize the Z-coordinate
+ of the 3D Point.
+ */
+ B3IPoint(sal_Int32 nX, sal_Int32 nY, sal_Int32 nZ)
+ : B3ITuple(nX, nY, nZ)
+ {}
+
+ /** Create a copy of a 3D Point
+
+ @param rVec
+ The 3D Point which will be copied.
+ */
+ B3IPoint(const B3IPoint& rVec)
+ : B3ITuple(rVec)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B3ITuple-based classes
+ */
+ B3IPoint(const ::basegfx::B3ITuple& rTuple)
+ : B3ITuple(rTuple)
+ {}
+
+ ~B3IPoint()
+ {}
+
+ /** *=operator to allow usage from B3IPoint, too
+ */
+ B3IPoint& operator*=( const B3IPoint& rPnt )
+ {
+ mnX *= rPnt.mnX;
+ mnY *= rPnt.mnY;
+ mnZ *= rPnt.mnZ;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B3IPoint, too
+ */
+ B3IPoint& operator*=(sal_Int32 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ mnZ *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B3ITuple calculations
+ */
+ B3IPoint& operator=( const ::basegfx::B3ITuple& rVec )
+ {
+ mnX = rVec.getX();
+ mnY = rVec.getY();
+ mnZ = rVec.getZ();
+ return *this;
+ }
+
+ /** Transform point by given transformation matrix.
+
+ The translational components of the matrix are, in
+ contrast to B3DVector, applied.
+ */
+ B3IPoint& operator*=( const ::basegfx::B3DHomMatrix& rMat );
+
+ static const B3IPoint& getEmptyPoint()
+ {
+ return (const B3IPoint&) ::basegfx::B3ITuple::getEmptyTuple();
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_POINT_B3IPOINT_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dlinegeometry.hxx b/basegfx/inc/basegfx/polygon/b2dlinegeometry.hxx
new file mode 100644
index 000000000000..87e44787c5b6
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dlinegeometry.hxx
@@ -0,0 +1,147 @@
+/* -*- 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 _BGFX_POLYGON_B2DLINEGEOMETRY_HXX
+#define _BGFX_POLYGON_B2DLINEGEOMETRY_HXX
+
+#include <sal/types.h>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ /** Create line start/end geometry element, mostly arrows and things like that.
+
+ @param rCandidate
+ The polygon which needs to get that line ends and needs to have two points
+ at least.
+
+ @param rArrow
+ The line start/end geometry. It is assumed that the tip is pointing
+ upwards. Result will be rotated and scaled to fit.
+
+ @param bStart
+ describes if creation is for start or end of candidate.
+
+ @param fWidth
+ defines the size of the element, it's describing the target width in X
+ of the arrow.
+
+ @param fDockingPosition needs to be in [0.0 ..1.0] range, where 0.0 means
+ that the tip of the arrow will be aligned with the polygon start, 1.0 means
+ the bottom. The default of 0.5 describes a centered arrow.
+
+ @param pConsumedLength
+ Using this parameter it is possible to get back how much from the candidate
+ geometry is overlapped by the created element (consumed).
+
+ @param fCandidateLength
+ This should contain the length of rCandidate to allow work without
+ again calculating the length (which may be expensive with beziers). If 0.0 is
+ given, the length is calculated on demand.
+
+ @return
+ The Line start and end polygon, correctly rotated and scaled
+ */
+ B2DPolyPolygon createAreaGeometryForLineStartEnd(
+ const B2DPolygon& rCandidate,
+ const B2DPolyPolygon& rArrow,
+ bool bStart,
+ double fWidth,
+ double fCandidateLength = 0.0, // 0.0 -> calculate self
+ double fDockingPosition = 0.5, // 0->top, 1->bottom
+ double* pConsumedLength = 0L);
+
+ /** create filled polygon geometry for lines with a line width
+
+ This method will create bezier based, fillable polygons which
+ will resample the curve if it was extended for the given half
+ line width. It will remove extrema positions from contained
+ bezier segments and get as close as possible and defined by
+ the given parameters to the ideal result.
+
+ It will check edges for trivial bezier to avoid unnecessary
+ bezier polygons. Care is taken to produce the in-between
+ polygon points (the ones original on the source poygon) since
+ it has showed that without those, the raster converters leave
+ non-filled gaps.
+
+ @param rCandidate
+ The source polygon defining the hairline polygon path
+
+ @param fHalfLineWidth
+ The width of the line to one side
+
+ @param eJoin
+ The LineJoin if the edges meeting in a point do not have a C1
+ or C2 continuity
+
+ @param fMaxAllowedAngle
+ Allows to hand over the maximum allowed angle between an edge and
+ it's control vectors. The smaller, the more subdivisions will be
+ needed to create the filled geometry. Allowed range is cropped to
+ [F_PI2 .. 0.01 * F_PI2].
+
+ @param fMaxPartOfEdge
+ Allows to influence from with relative length of a control vector
+ compared to it's edge a split is forced. The smaller, the more
+ subdivisions will be needed to create the filled geometry. Allowed
+ range is cropped to [1.0 .. 0.01]
+
+ @praram fMiterMinimumAngle
+ The minimum wanted angle between two edges when edge rounding
+ is using miter. When an edge is smaller than this (tighter)
+ the usual fallback to bevel is used. Allowed range is cropped
+ to [F_PI .. 0.01 * F_PI].
+
+ @return
+ The PolyPolygon containing the geometry of the extended line by
+ it's line width. Contains bezier segments and edge roundings as
+ needed and defined.
+ */
+ B2DPolyPolygon createAreaGeometry(
+ const B2DPolygon& rCandidate,
+ double fHalfLineWidth,
+ B2DLineJoin eJoin = B2DLINEJOIN_ROUND,
+ double fMaxAllowedAngle = (12.5 * F_PI180),
+ double fMaxPartOfEdge = 0.4,
+ double fMiterMinimumAngle = (15.0 * F_PI180));
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_POLYGON_B2DLINEGEOMETRY_HXX */
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygon.hxx b/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
new file mode 100644
index 000000000000..60d6c7a18d70
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
@@ -0,0 +1,277 @@
+/* -*- 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 _BGFX_POLYGON_B2DPOLYGON_HXX
+#define _BGFX_POLYGON_B2DPOLYGON_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/range/b2drange.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class ImplB2DPolygon;
+
+namespace basegfx
+{
+ class B2DPolygon;
+ class B2DPoint;
+ class B2DVector;
+ class B2DHomMatrix;
+ class B2DCubicBezier;
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B2DPolygon
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImplB2DPolygon > ImplType;
+
+ private:
+ // internal data.
+ ImplType mpPolygon;
+
+ public:
+ /// diverse constructors
+ B2DPolygon();
+ B2DPolygon(const B2DPolygon& rPolygon);
+ B2DPolygon(const B2DPolygon& rPolygon, sal_uInt32 nIndex, sal_uInt32 nCount);
+ ~B2DPolygon();
+
+ /// assignment operator
+ B2DPolygon& operator=(const B2DPolygon& rPolygon);
+
+ /// unshare this polygon with all internally shared instances
+ void makeUnique();
+
+ /// compare operators
+ bool operator==(const B2DPolygon& rPolygon) const;
+ bool operator!=(const B2DPolygon& rPolygon) const;
+
+ /// member count
+ sal_uInt32 count() const;
+
+ /// Coordinate interface
+ basegfx::B2DPoint getB2DPoint(sal_uInt32 nIndex) const;
+ void setB2DPoint(sal_uInt32 nIndex, const basegfx::B2DPoint& rValue);
+
+ /// Coordinate insert/append
+ void insert(sal_uInt32 nIndex, const basegfx::B2DPoint& rPoint, sal_uInt32 nCount = 1);
+ void append(const basegfx::B2DPoint& rPoint, sal_uInt32 nCount);
+ void append(const basegfx::B2DPoint& rPoint);
+ void reserve(sal_uInt32 nCount);
+
+ /// Basic ControlPoint interface
+ basegfx::B2DPoint getPrevControlPoint(sal_uInt32 nIndex) const;
+ basegfx::B2DPoint getNextControlPoint(sal_uInt32 nIndex) const;
+ void setPrevControlPoint(sal_uInt32 nIndex, const basegfx::B2DPoint& rValue);
+ void setNextControlPoint(sal_uInt32 nIndex, const basegfx::B2DPoint& rValue);
+ void setControlPoints(sal_uInt32 nIndex, const basegfx::B2DPoint& rPrev, const basegfx::B2DPoint& rNext);
+
+ /// ControlPoint resets
+ void resetPrevControlPoint(sal_uInt32 nIndex);
+ void resetNextControlPoint(sal_uInt32 nIndex);
+ void resetControlPoints(sal_uInt32 nIndex);
+ void resetControlPoints();
+
+ /// Bezier segment append with control points. The current last polygon point is implicitly taken as start point.
+ void appendBezierSegment(const basegfx::B2DPoint& rNextControlPoint, const basegfx::B2DPoint& rPrevControlPoint, const basegfx::B2DPoint& rPoint);
+
+ /// ControlPoint checks
+ bool areControlPointsUsed() const;
+ bool isPrevControlPointUsed(sal_uInt32 nIndex) const;
+ bool isNextControlPointUsed(sal_uInt32 nIndex) const;
+ B2VectorContinuity getContinuityInPoint(sal_uInt32 nIndex) const;
+
+ /** check edge for being a bezier segment
+
+ This test the existance of control vectors, but do not apply
+ testAndSolveTrivialBezier() to the bezier segment, so it is still useful
+ to do so.
+ Since it can use internal data representations, it is faster
+ than using getBezierSegment() and applying isBezier() on it.
+
+ @param nIndex
+ Index of the addressed edge's start point
+
+ @return
+ true if edge exists and at least one control vector is used
+ */
+ bool isBezierSegment(sal_uInt32 nIndex) const;
+
+ /** bezier segment access
+
+ This method also works when it is no bezier segment at all and will fill
+ the given B2DCubicBezier as needed.
+ In any case, the given B2DCubicBezier will be filled, if necessary with
+ the single start point (if no valid edge exists).
+
+ @param nIndex
+ Index of the addressed edge's start point
+
+ @param rTarget
+ The B2DCubicBezier to be filled. It's data WILL be changed.
+ */
+ void getBezierSegment(sal_uInt32 nIndex, B2DCubicBezier& rTarget) const;
+
+ /** Default adaptive subdivision access
+
+ This method will return a default adapive subdivision of the polygon.
+ If the polygon does not contain any bezier curve segments, it will
+ just return itself.
+
+ The subdivision is created on first request and buffered, so when using
+ this subdivision You have the guarantee for fast accesses for multiple
+ usages. It is intended for tooling usage for tasks which would be hard
+ to accomplish on bezier segments (e.g. isInEpsilonRange).
+
+ The current default subdivision uses adaptiveSubdivideByCount with 9
+ subdivisions which gives 10 edges and 11 points per segment and is
+ usually pretty usable for processing purposes. There is no parameter
+ passing here ATM but it may be changed on demand. If needed, a TYPE
+ and PARAMETER (both defaulted) may be added to allow for switching
+ between the different kinds of subdivisiond and passing them one
+ parameter.
+
+ The lifetime of the buffered subdivision is based on polygon changes.
+ When changing the polygon, it will be flushed. It is buffered at the
+ refcounted implementation class, so it will survive copy by value and
+ combinations in PolyPolygons.
+
+ @return
+ The default (and buffered) subdivision of this polygon. It may
+ be this polygon itself when it has no bezier segments. It is guaranteed
+ to have no more bezier segments
+ */
+ B2DPolygon getDefaultAdaptiveSubdivision() const;
+
+ /** Get the B2DRange (Rectangle dimensions) of this B2DPolygon
+
+ A polygon may have up to three ranges:
+
+ (a) the range of the polygon points
+ (b) the range of the polygon points and control points
+ (c) the outer range of the subdivided bezier curve
+
+ Ranges (a) and (c) are produced by tools::getRange(); resp. this
+ getB2DRange(). tools::getRangeWithControlPoints handles case (b).
+
+ To get range (c) a simple solution would be to subdivide the polygon
+ and use getRange() on it. Since subdivision is expensive and decreases
+ the polygon quality, i added this new method. It will use a
+ methodology suggested by HDU. First, it gets the range (a).
+ Then it iterates over the bezier segments and for each it
+ first tests if the outer range of the bezier segment is already
+ contained in the result range.
+
+ The subdivision itself uses getAllExtremumPositions() to only
+ calculate extremum points and to expand the result accordingly.
+ Thus it calculates maximal four extremum points on the bezier
+ segment, no split is used at all.
+
+ @return
+ The outer range of the bezier curve/polygon
+ */
+ B2DRange getB2DRange() const;
+
+ /** insert other 2D polygons
+
+ The default (with nIndex2 == 0 && nCount == 0) inserts the whole
+ rPoly at position nIndex
+
+ @param nIndex
+ Target index for points to be inserted
+
+ @param rPoly
+ The source for new points
+
+ @param nIndex2
+ The index to the first source point into rPoly
+
+ @param nCount
+ How many points to add from rPoly to this polygon. Null
+ means to copy all (starting from nIndex2)
+ */
+ void insert(sal_uInt32 nIndex, const B2DPolygon& rPoly, sal_uInt32 nIndex2 = 0, sal_uInt32 nCount = 0);
+
+ /** append other 2D polygons
+
+ The default (nIndex ==0 && nCount == 0) will append
+ the whole rPoly
+
+ @param rPoly
+ The source polygon
+
+ @param nIndex
+ The index to the first point of rPoly to append
+
+ @param nCount
+ The number of points to append from rPoly, starting
+ from nIndex. If zero, as much as possibel is appended
+ */
+ void append(const B2DPolygon& rPoly, sal_uInt32 nIndex = 0, sal_uInt32 nCount = 0);
+
+ /// remove points
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount = 1);
+
+ /// clear all points
+ void clear();
+
+ /// closed state interface
+ bool isClosed() const;
+ void setClosed(bool bNew);
+
+ /// flip polygon direction
+ void flip();
+
+ /// test if Polygon has double points
+ bool hasDoublePoints() const;
+
+ /// remove double points, at the begin/end and follow-ups, too
+ void removeDoublePoints();
+
+ /// apply transformation given in matrix form
+ void transform(const basegfx::B2DHomMatrix& rMatrix);
+
+ // point iterators (same iterator validity conditions as for vector)
+ const B2DPoint* begin() const;
+ const B2DPoint* end() const;
+ B2DPoint* begin();
+ B2DPoint* end();
+ };
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_POLYGON_B2DPOLYGON_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygonclipper.hxx b/basegfx/inc/basegfx/polygon/b2dpolygonclipper.hxx
new file mode 100644
index 000000000000..9915ddf4be87
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolygonclipper.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 _BGFX_POLYPOLYGON_B2DPOLYGONCLIPPER_HXX
+#define _BGFX_POLYPOLYGON_B2DPOLYGONCLIPPER_HXX
+
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predefinitions
+ class B2DRange;
+
+ namespace tools
+ {
+ // This method clips the given PolyPolygon against a horizontal or vertical axis (parallell to X or Y axis). The axis is
+ // defined by bParallelToXAxis (true -> it's parallel to the X-Axis of the coordinate system, else to the Y-Axis) and the
+ // fValueOnOtherAxis (gives the translation to the coordinate system axis). For example, when You want to define
+ // a clip axis parallel to X.Axis and 100 above it, use bParallelToXAxis = true and fValueOnOtherAxis = 100.
+ // The value bAboveAxis defines on which side the return value will be (true -> above X, right of Y).
+ // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true).
+ B2DPolyPolygon clipPolyPolygonOnParallelAxis(const B2DPolyPolygon& rCandidate, bool bParallelToXAxis, bool bAboveAxis, double fValueOnOtherAxis, bool bStroke);
+ B2DPolyPolygon clipPolygonOnParallelAxis(const B2DPolygon& rCandidate, bool bParallelToXAxis, bool bAboveAxis, double fValueOnOtherAxis, bool bStroke);
+
+ // Clip the given PolyPolygon against the given range. bInside defines if the result will contain the
+ // parts which are contained in the range or vice versa.
+ // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true).
+ B2DPolyPolygon clipPolyPolygonOnRange(const B2DPolyPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke);
+ B2DPolyPolygon clipPolygonOnRange(const B2DPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke);
+
+ // Clip given PolyPolygon against the endless edge (ray) defined by the given two points. bAbove defines on which side
+ // of the edge the result will be together with the definition of the edge. If the edge is seen as a vector
+ // from A to B and bAbove is true, the result will contain the geometry left of the vector.
+ // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true).
+ B2DPolyPolygon clipPolyPolygonOnEdge(const B2DPolyPolygon& rCandidate, const B2DPoint& rPointA, const B2DPoint& rPointB, bool bAbove, bool bStroke);
+ B2DPolyPolygon clipPolygonOnEdge(const B2DPolygon& rCandidate, const B2DPoint& rPointA, const B2DPoint& rPointB, bool bAbove, bool bStroke);
+
+ // Clip given PolyPolygon against given clipping polygon.
+ // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true).
+ // With stroke polygons, You get all line snippets inside rCip.
+ // With filled polygons, You get all PolyPolygon parts which were inside rClip.
+ // The switch bInside decides if the parts inside the clip polygon or outside shall be created.
+ // The clip polygon is always assumed closed, even when it's isClosed() is false.
+ B2DPolyPolygon clipPolyPolygonOnPolyPolygon(const B2DPolyPolygon& rCandidate, const B2DPolyPolygon& rClip, bool bInside, bool bStroke);
+ B2DPolyPolygon clipPolygonOnPolyPolygon(const B2DPolygon& rCandidate, const B2DPolyPolygon& rClip, bool bInside, bool bStroke);
+
+ // clip the given polygon against the given range. the resulting polygon will always contain
+ // the inside parts which will always be interpreted as areas. the incoming polygon is expected
+ // to be a simple triangle list. the result is also a simple triangle list.
+ B2DPolygon clipTriangleListOnRange( const B2DPolygon& rCandidate, const B2DRange& rRange );
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYPOLYGON_B2DPOLYGONCLIPPER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx b/basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx
new file mode 100644
index 000000000000..6a6a8ba650e3
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx
@@ -0,0 +1,84 @@
+/* -*- 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 _BGFX_POLYGON_CUTANDTOUCH_HXX
+#define _BGFX_POLYGON_CUTANDTOUCH_HXX
+
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // look for self-intersections and self-touches (points on an edge) in given polygon and add
+ // extra points there. Result will have no touches or intersections on an edge, only on points
+ B2DPolygon addPointsAtCutsAndTouches(const B2DPolygon& rCandidate);
+
+ // look for polypolygon-intersections and polypolygon-touches (point of poly A on an edge of poly B) in given PolyPolygon and add
+ // extra points there. Result will have no touches or intersections between contained polygons on an edge, only on points. For
+ // convenience, the correction for self-intersections for each member polygon will be used, too.
+ // Changed: Self intersections are searched by default, but may be switched off by 2nd parameter.
+ B2DPolyPolygon addPointsAtCutsAndTouches(const B2DPolyPolygon& rCandidate, bool bSelfIntersections = true);
+
+ // look for intersections of rCandidate with all polygons from rMask and add extra points there. Do
+ // not change or add points to rMask.
+ B2DPolygon addPointsAtCutsAndTouches(const B2DPolyPolygon& rMask, const B2DPolygon& rCandidate);
+
+ // look for intersections of rCandidate with all polygons from rMask and add extra points there. Do
+ // not change or add points to rMask.
+ B2DPolyPolygon addPointsAtCutsAndTouches(const B2DPolyPolygon& rMask, const B2DPolyPolygon& rCandidate);
+
+ // look for intersections of rCandidate with the edge from rStart to rEnd and add extra points there.
+ // Points are only added in the range of the edge, not on the endless vector.
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate, const B2DPoint& rStart, const B2DPoint& rEnd);
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, const B2DPoint& rStart, const B2DPoint& rEnd);
+
+ // look for intersections of rCandidate with the mask Polygon and add extra points there.
+ // The mask polygon is assumed to be closed, even when it's not explicitely.
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate, const B2DPolyPolygon& rMask);
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, const B2DPolyPolygon& rMask);
+
+ // look for self-intersections in given polygon and add extra points there. Result will have no
+ // intersections on an edge
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate);
+
+ // add points at all self-intersections of single polygons (depends on bSelfIntersections)
+ // and at polygon-polygon intersections
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, bool bSelfIntersections = true);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_POLYGON_CUTANDTOUCH_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx b/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
new file mode 100644
index 000000000000..1ac4fd9d2af5
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
@@ -0,0 +1,537 @@
+/* -*- 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 _BGFX_POLYGON_B2DPOLYGONTOOLS_HXX
+#define _BGFX_POLYGON_B2DPOLYGONTOOLS_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b3dpolygon.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predefinitions
+ class B2DPolygon;
+ class B2DRange;
+
+ namespace tools
+ {
+ // B2DPolygon tools
+
+ // open/close with point add/remove and control point corrections
+ void openWithGeometryChange(B2DPolygon& rCandidate);
+ void closeWithGeometryChange(B2DPolygon& rCandidate);
+
+ /** Check if given polygon is closed.
+
+ This is kind of a 'classic' method to support old polygon
+ definitions. Those old polygon definitions define the
+ closed state of the polygon using identical start and
+ endpoints. This method corrects this (removes double
+ start/end points) and sets the Closed()-state of the
+ polygon correctly.
+ */
+ void checkClosed(B2DPolygon& rCandidate);
+
+ // Get successor and predecessor indices. Returning the same index means there
+ // is none. Same for successor.
+ sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate);
+ sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate);
+
+ // Get orientation of Polygon
+ B2VectorOrientation getOrientation(const B2DPolygon& rCandidate);
+
+ // isInside tests for B2dPoint and other B2dPolygon. On border is not inside as long as
+ // not true is given in bWithBorder flag.
+ bool isInside(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder = false);
+ bool isInside(const B2DPolygon& rCandidate, const B2DPolygon& rPolygon, bool bWithBorder = false);
+
+ /** Get the range of a polygon including bezier control points
+
+ For detailed discussion, see B2DPolygon::getB2DRange()
+
+ @param rCandidate
+ The B2DPolygon eventually containing bezier segments
+
+ @return
+ The outer range of the bezier curve containing bezier control points
+ */
+ B2DRange getRangeWithControlPoints(const B2DPolygon& rCandidate);
+
+ /** Get the range of a polygon
+
+ This method creates the outer range of the subdivided bezier curve.
+ For detailed discussion see B2DPolygon::getB2DRange()
+
+ @param rCandidate
+ The B2DPolygon eventually containing bezier segments
+
+ @return
+ The outer range of the bezier curve
+ */
+ B2DRange getRange(const B2DPolygon& rCandidate);
+
+ // get signed area of polygon
+ double getSignedArea(const B2DPolygon& rCandidate);
+
+ // get area of polygon
+ double getArea(const B2DPolygon& rCandidate);
+
+ /** get length of polygon edge from point nIndex to nIndex + 1 */
+ double getEdgeLength(const B2DPolygon& rCandidate, sal_uInt32 nIndex);
+
+ /** get length of polygon */
+ double getLength(const B2DPolygon& rCandidate);
+
+ // get position on polygon for absolute given distance. If
+ // length is given, it is assumed the correct polygon length, if 0.0 it is calculated
+ // using getLength(...)
+ B2DPoint getPositionAbsolute(const B2DPolygon& rCandidate, double fDistance, double fLength = 0.0);
+
+ // get position on polygon for relative given distance in range [0.0 .. 1.0]. If
+ // length is given, it is assumed the correct polygon length, if 0.0 it is calculated
+ // using getLength(...)
+ B2DPoint getPositionRelative(const B2DPolygon& rCandidate, double fDistance, double fLength = 0.0);
+
+ // get a snippet from given polygon for absolute distances. The polygon is assumed
+ // to be opened (not closed). fFrom and fTo need to be in range [0.0 .. fLength], where
+ // fTo >= fFrom. If length is given, it is assumed the correct polygon length,
+ // if 0.0 it is calculated using getLength(...)
+ B2DPolygon getSnippetAbsolute(const B2DPolygon& rCandidate, double fFrom, double fTo, double fLength = 0.0);
+
+ // get a snippet from given polygon for relative distances. The polygon is assumed
+ // to be opened (not closed). fFrom and fTo need to be in range [0.0 .. 1.0], where
+ // fTo >= fFrom. If length is given, it is assumed the correct polygon length,
+ // if 0.0 it is calculated using getLength(...)
+ B2DPolygon getSnippetRelative(const B2DPolygon& rCandidate, double fFrom = 0.0, double fTo = 1.0, double fLength = 0.0);
+
+ // Continuity check for point with given index
+ B2VectorContinuity getContinuityInPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex);
+
+ // Subdivide all contained curves. Use distanceBound value if given.
+ B2DPolygon adaptiveSubdivideByDistance(const B2DPolygon& rCandidate, double fDistanceBound = 0.0);
+
+ // Subdivide all contained curves. Use angleBound value if given.
+ B2DPolygon adaptiveSubdivideByAngle(const B2DPolygon& rCandidate, double fAngleBound = 0.0);
+
+ // #i37443# Subdivide all contained curves.
+ B2DPolygon adaptiveSubdivideByCount(const B2DPolygon& rCandidate, sal_uInt32 nCount = 0L);
+
+ // Definitions for the cut flags used from the findCut methods
+ typedef sal_uInt16 CutFlagValue;
+
+ #define CUTFLAG_NONE (0x0000)
+ #define CUTFLAG_LINE (0x0001)
+ #define CUTFLAG_START1 (0x0002)
+ #define CUTFLAG_START2 (0x0004)
+ #define CUTFLAG_END1 (0x0008)
+ #define CUTFLAG_END2 (0x0010)
+ #define CUTFLAG_ALL (CUTFLAG_LINE|CUTFLAG_START1|CUTFLAG_START2|CUTFLAG_END1|CUTFLAG_END2)
+ #define CUTFLAG_DEFAULT (CUTFLAG_LINE|CUTFLAG_START2|CUTFLAG_END2)
+
+ // Calculate cut between the points given by the two indices. pCut1
+ // and pCut2 will contain the cut coordinate on each edge in ]0.0, 1.0]
+ // (if given) and the return value will contain a cut description.
+ CutFlagValue findCut(
+ const B2DPolygon& rCandidate,
+ sal_uInt32 nIndex1, sal_uInt32 nIndex2,
+ CutFlagValue aCutFlags = CUTFLAG_DEFAULT,
+ double* pCut1 = 0L, double* pCut2 = 0L);
+
+ // This version is working with two indexed edges from different
+ // polygons.
+ CutFlagValue findCut(
+ const B2DPolygon& rCandidate1, sal_uInt32 nIndex1,
+ const B2DPolygon& rCandidate2, sal_uInt32 nIndex2,
+ CutFlagValue aCutFlags = CUTFLAG_DEFAULT,
+ double* pCut1 = 0L, double* pCut2 = 0L);
+
+ // This version works with two points and vectors to define the
+ // edges for the cut test.
+ CutFlagValue findCut(
+ const B2DPoint& rEdge1Start, const B2DVector& rEdge1Delta,
+ const B2DPoint& rEdge2Start, const B2DVector& rEdge2Delta,
+ CutFlagValue aCutFlags = CUTFLAG_DEFAULT,
+ double* pCut1 = 0L, double* pCut2 = 0L);
+
+ // test if point is on the given edge in range ]0.0..1.0[ without
+ // the start/end points. If so, return true and put the parameter
+ // value in pCut (if provided)
+ bool isPointOnEdge(
+ const B2DPoint& rPoint,
+ const B2DPoint& rEdgeStart,
+ const B2DVector& rEdgeDelta,
+ double* pCut = 0L);
+
+ /** Apply given LineDashing to given polygon
+
+ This method is used to cut down line polygons to the needed
+ pieces when a dashing needs to be applied.
+ It is now capable of keeping contained bezier segments.
+ It is also capable of delivering line and non-line portions
+ depending on what target polygons You provide. This is useful
+ e.g. for dashed lines with two colors.
+ If the last and the first snippet in one of the results have
+ a common start/end ppoint, they will be merged to achieve as
+ view as needed result line snippets. This is also relevant for
+ further processing the results.
+
+ @param rCandidate
+ The polygon based on which the snippets will be created.
+
+ @param rDotDashArray
+ The line pattern given as array of length values
+
+ @param pLineTarget
+ The target for line snippets, e.g. the first entry will be
+ a line segment with length rDotDashArray[0]. The given
+ polygon will be emptied as preparation.
+
+ @param pGapTarget
+ The target for gap snippets, e.g. the first entry will be
+ a line segment with length rDotDashArray[1]. The given
+ polygon will be emptied as preparation.
+
+ @param fFullDashDotLen
+ The sumed-up length of the rDotDashArray. If zero, it will
+ be calculated internally.
+ */
+ void applyLineDashing(
+ const B2DPolygon& rCandidate,
+ const ::std::vector<double>& rDotDashArray,
+ B2DPolyPolygon* pLineTarget,
+ B2DPolyPolygon* pGapTarget = 0,
+ double fFullDashDotLen = 0.0);
+
+ // test if point is inside epsilon-range around an edge defined
+ // by the two given points. Can be used for HitTesting. The epsilon-range
+ // is defined to be the rectangle centered to the given edge, using height
+ // 2 x fDistance, and the circle around both points with radius fDistance.
+ bool isInEpsilonRange(const B2DPoint& rEdgeStart, const B2DPoint& rEdgeEnd, const B2DPoint& rTestPosition, double fDistance);
+
+ // test if point is inside epsilon-range around the given Polygon. Can be used
+ // for HitTesting. The epsilon-range is defined to be the rectangle centered
+ // to the given edge, using height 2 x fDistance, and the circle around both points
+ // with radius fDistance.
+ bool isInEpsilonRange(const B2DPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance);
+
+ /** Create a polygon from a rectangle.
+
+ @param rRect
+ The rectangle which describes the polygon size
+
+ @param fRadius
+ Radius of the edge rounding, relative to the rectangle size. 0.0 means no
+ rounding, 1.0 will lead to an ellipse
+ */
+ B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadius );
+
+ /** Create a polygon from a rectangle.
+
+ @param rRect
+ The rectangle which describes the polygon size
+
+ @param fRadiusX
+ @param fRadiusY
+ Radius of the edge rounding, relative to the rectangle size. 0.0 means no
+ rounding, 1.0 will lead to an ellipse
+ */
+ B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadiusX, double fRadiusY );
+
+ /** Create a polygon from a rectangle.
+ */
+ B2DPolygon createPolygonFromRect( const B2DRectangle& rRect );
+
+ /** Create the unit polygon
+ */
+ B2DPolygon createUnitPolygon();
+
+ /** Create a circle polygon with given radius.
+
+ This method creates a circle approximation consisting of
+ four cubic bezier segments, which approximate the given
+ circle with an error of less than 0.5 percent.
+
+ @param rCenter
+ Center point of the circle
+
+ @param fRadius
+ Radius of the circle
+ */
+ B2DPolygon createPolygonFromCircle( const B2DPoint& rCenter, double fRadius );
+
+ /** create a polygon which describes the unit circle and close it
+
+ @param nStartQuadrant
+ To be able to rebuild the old behaviour where the circles started at bottom,
+ this parameter is used. Default is 0 which is the first quadrant and the
+ polygon's start point will be the rightmost one. When using e.g. 1, the
+ first created quadrant will start at the YMax-position (with Y down on screens,
+ this is the lowest one). This is needed since when lines are dashed, toe old
+ geometry started at bottom point, else it would look different.
+ */
+ B2DPolygon createPolygonFromUnitCircle(sal_uInt32 nStartQuadrant = 0);
+
+ /** Create an ellipse polygon with given radii.
+
+ This method creates an ellipse approximation consisting of
+ four cubic bezier segments, which approximate the given
+ ellipse with an error of less than 0.5 percent.
+
+ @param rCenter
+ Center point of the circle
+
+ @param fRadiusX
+ Radius of the ellipse in X direction
+
+ @param fRadiusY
+ Radius of the ellipse in Y direction
+ */
+ B2DPolygon createPolygonFromEllipse( const B2DPoint& rCenter, double fRadiusX, double fRadiusY );
+
+ /** Create an unit ellipse polygon with the given angles, from start to end
+ */
+ B2DPolygon createPolygonFromEllipseSegment( const B2DPoint& rCenter, double fRadiusX, double fRadiusY, double fStart, double fEnd );
+
+ B2DPolygon createPolygonFromUnitEllipseSegment( double fStart, double fEnd );
+
+ /** Predicate whether a given polygon is a rectangle.
+
+ @param rPoly
+ Polygon to check
+
+ @return true, if the polygon describes a rectangle
+ (polygon is closed, and the points are either cw or ccw
+ enumerations of a rectangle's vertices). Note that
+ intermediate points and duplicate points are ignored.
+ */
+ bool isRectangle( const B2DPolygon& rPoly );
+
+ // create 3d polygon from given 2d polygon. The given fZCoordinate is used to expand the
+ // third coordinate.
+ B3DPolygon createB3DPolygonFromB2DPolygon(const B2DPolygon& rCandidate, double fZCoordinate = 0.0);
+
+ // create 2d PolyPolygon from given 3d PolyPolygon. All coordinates are transformed using the given
+ // matrix and the resulting x,y is used to form the new polygon.
+ B2DPolygon createB2DPolygonFromB3DPolygon(const B3DPolygon& rCandidate, const B3DHomMatrix& rMat);
+
+ // create simplified version of the original polygon by
+ // replacing segments with spikes/loops and self intersections
+ // by several trivial sub-segments
+ B2DPolygon createSimplifiedPolygon(const B2DPolygon&);
+
+ // calculate the distance to the given endless ray and return. The relative position on the edge is returned in Cut.
+ // That position may be less than 0.0 or more than 1.0
+ double getDistancePointToEndlessRay(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut);
+
+ // calculate the smallest distance to given edge and return. The relative position on the edge is returned in Cut.
+ // That position is in the range [0.0 .. 1.0] and the returned distance is adapted accordingly to the start or end
+ // point of the edge
+ double getSmallestDistancePointToEdge(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut);
+
+ // for each contained edge calculate the smallest distance. Return the index to the smallest
+ // edge in rEdgeIndex. The relative position on the edge is returned in rCut.
+ // If nothing was found (e.g. empty input plygon), DBL_MAX is returned.
+ double getSmallestDistancePointToPolygon(const B2DPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rEdgeIndex, double& rCut);
+
+ // distort single point. rOriginal describes the original range, where the given points describe the distorted corresponding points.
+ B2DPoint distort(const B2DPoint& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight);
+
+ // distort polygon. rOriginal describes the original range, where the given points describe the distorted corresponding points.
+ B2DPolygon distort(const B2DPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight);
+
+ // rotate polygon around given point with given angle.
+ B2DPolygon rotateAroundPoint(const B2DPolygon& rCandidate, const B2DPoint& rCenter, double fAngle);
+
+ // expand all segments (which are not yet) to curve segments. This is done with setting the control
+ // vectors on the 1/3 resp. 2/3 distances on each segment.
+ B2DPolygon expandToCurve(const B2DPolygon& rCandidate);
+
+ // expand given segment to curve segment. This is done with setting the control
+ // vectors on the 1/3 resp. 2/3 distances. The return value describes if a change took place.
+ bool expandToCurveInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex);
+
+ // set continuity for the whole curve. If not a curve, nothing will change. Non-curve points are not changed, too.
+ B2DPolygon setContinuity(const B2DPolygon& rCandidate, B2VectorContinuity eContinuity);
+
+ // set continuity for given index. If not a curve, nothing will change. Non-curve points are not changed, too.
+ // The return value describes if a change took place.
+ bool setContinuityInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex, B2VectorContinuity eContinuity);
+
+ // test if polygon contains neutral points. A neutral point is one whos orientation is neutral
+ // e.g. positioned on the edge of it's predecessor and successor
+ bool hasNeutralPoints(const B2DPolygon& rCandidate);
+
+ // remove neutral points. A neutral point is one whos orientation is neutral
+ // e.g. positioned on the edge of it's predecessor and successor
+ B2DPolygon removeNeutralPoints(const B2DPolygon& rCandidate);
+
+ // tests if polygon is convex
+ bool isConvex(const B2DPolygon& rCandidate);
+
+ // calculates the orientation at edge nIndex
+ B2VectorOrientation getOrientationForIndex(const B2DPolygon& rCandidate, sal_uInt32 nIndex);
+
+ // calculates if given point is on given line, taking care of the numerical epsilon
+ bool isPointOnLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidate, bool bWithPoints = false);
+
+ // calculates if given point is on given polygon, taking care of the numerical epsilon. Uses
+ // isPointOnLine internally
+ bool isPointOnPolygon(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithPoints = true);
+
+ // test if candidate is inside triangle
+ bool isPointInTriangle(const B2DPoint& rA, const B2DPoint& rB, const B2DPoint& rC, const B2DPoint& rCandidate, bool bWithBorder = false);
+
+ // test if candidateA and candidateB are on the same side of the given line
+ bool arePointsOnSameSideOfLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidateA, const B2DPoint& rCandidateB, bool bWithLine = false);
+
+ // add triangles for given rCandidate to rTarget. For each triangle, 3 points will be added to rCandidate.
+ // All triangles will go from the start point of rCandidate to two consecutive points, building (rCandidate.count() - 2)
+ // triangles.
+ void addTriangleFan(const B2DPolygon& rCandidate, B2DPolygon& rTarget);
+
+ // grow for polygon. Move all geometry in each point in the direction of the normal in that point
+ // with the given amount. Value may be negative.
+ B2DPolygon growInNormalDirection(const B2DPolygon& rCandidate, double fValue);
+
+ // force all sub-polygons to a point count of nSegments
+ B2DPolygon reSegmentPolygon(const B2DPolygon& rCandidate, sal_uInt32 nSegments);
+
+ // create polygon state at t from 0.0 to 1.0 between the two polygons. Both polygons must have the same
+ // organisation, e.g. same amount of points
+ B2DPolygon interpolate(const B2DPolygon& rOld1, const B2DPolygon& rOld2, double t);
+
+ bool isPolyPolygonEqualRectangle( const B2DPolyPolygon& rPolyPoly, const B2DRange& rRect );
+
+ // #i76891# Try to remove existing curve segments if they are simply edges
+ B2DPolygon simplifyCurveSegments(const B2DPolygon& rCandidate);
+
+ // makes the given indexed point the new polygon start point. To do that, the points in the
+ // polygon will be rotated. This is only valid for closed polygons, for non-closed ones
+ // an assertion will be triggered
+ B2DPolygon makeStartPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndexOfNewStatPoint);
+
+ /** create edges of given length along given B2DPolygon
+
+ @param rCandidate
+ The polygon to move along. Points at the given polygon are created, starting
+ at position fStart and stopping at less or equal to fEnd. The closed state is
+ preserved.
+ The polygon is subdivided if curve segments are included. That subdivision is the base
+ for the newly created points.
+ If the source is closed, the indirectly existing last edge may NOT have the
+ given length.
+ If the source is open, all edges will have the given length. You may use the last
+ point of the original when You want to add the last edge Yourself.
+
+ @param fLength
+ The length of the created edges. If less or equal zero, an empty polygon is returned.
+
+ @param fStart
+ The start distance for the first to be generated point. Use 0.0 to get the
+ original start point. Negative values are truncated to 0.0.
+
+ @param fEnd
+ The maximum distance for the last point. No more points behind this distance will be created.
+ Use 0.0 to proccess the whole polygon. Negative values are truncated to 0.0. It also
+ needs to be more or equal to fStart, else it is truncated to fStart.
+
+ @return
+ The newly created polygon
+ */
+ B2DPolygon createEdgesOfGivenLength(const B2DPolygon& rCandidate, double fLength, double fStart = 0.0, double fEnd = 0.0);
+
+ /** Create Waveline along given polygon
+ The implementation is based on createEdgesOfGivenLength and creates a curve
+ segment with the given dimensions for each created line segment. The polygon
+ is treated as if opened (closed state will be ignored) and only for whole
+ edges a curve segment will be created (no rest handling)
+
+ @param rCandidate
+ The polygon along which the waveline will be created
+
+ @param fWaveWidth
+ The length of a single waveline curve segment
+
+ @param fgWaveHeight
+ The height of the waveline (amplitude)
+ */
+ B2DPolygon createWaveline(const B2DPolygon& rCandidate, double fWaveWidth, double fWaveHeight);
+
+ /** split each edge of a polygon in exactly nSubEdges equidistant edges
+
+ @param rCandidate
+ The source polygon. If too small (no edges), nSubEdges too small (<2)
+ or neither bHandleCurvedEdgesnor bHandleStraightEdges it will just be returned.
+ Else for each edge nSubEdges will be created. Closed state is preserved.
+
+ @param nSubEdges
+ How many edges shall be created as replacement for each single edge
+
+ @param bHandleCurvedEdges
+ Process curved edges or not. If to handle the curved edges will be splitted
+ into nSubEdges part curved edges of equidistant bezier distances. If not,
+ curved edges will just be copied.
+
+ @param bHandleStraightEdges
+ Process straight edges or not. If to handle the straight edges will be splitted
+ into nSubEdges part curved edges of equidistant length. If not,
+ straight edges will just be copied.
+ */
+ B2DPolygon reSegmentPolygonEdges(const B2DPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges);
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 2D Polygons
+ bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, const double& rfSmallValue);
+ bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB);
+
+ /** snap some polygon coordinates to discrete coordinates
+
+ This method allows to snap some polygon points to discrete (integer) values
+ which equals e.g. a snap to discrete coordinates. It will snap points of
+ horizontal and vertical edges
+
+ @param rCandidate
+ The source polygon
+
+ @return
+ The modified version of the source polygon
+ */
+ B2DPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolygon& rCandidate);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYGON_B2DPOLYGONTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx b/basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx
new file mode 100644
index 000000000000..05bd230031a0
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx
@@ -0,0 +1,52 @@
+/* -*- 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 _BGFX_POLYGON_B2DPOLYGONTRIANGULATOR_HXX
+#define _BGFX_POLYGON_B2DPOLYGONTRIANGULATOR_HXX
+
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace triangulator
+ {
+ // triangulate given polygon
+ ::basegfx::B2DPolygon triangulate(const ::basegfx::B2DPolygon& rCandidate);
+
+ // triangulate given PolyPolygon
+ ::basegfx::B2DPolygon triangulate(const ::basegfx::B2DPolyPolygon& rCandidate);
+
+ } // end of namespace triangulator
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYGON_B2DPOLYGONTRIANGULATOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
new file mode 100644
index 000000000000..80664d065dc6
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
@@ -0,0 +1,140 @@
+/* -*- 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 _BGFX_POLYGON_B2DPOLYPOLYGON_HXX
+#define _BGFX_POLYGON_B2DPOLYPOLYGON_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+#include <basegfx/range/b2drange.hxx>
+
+// predeclarations
+class ImplB2DPolyPolygon;
+
+namespace basegfx
+{
+ class B2DPolygon;
+ class B2DHomMatrix;
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B2DPolyPolygon
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImplB2DPolyPolygon > ImplType;
+
+ private:
+ ImplType mpPolyPolygon;
+
+ public:
+ B2DPolyPolygon();
+ B2DPolyPolygon(const B2DPolyPolygon& rPolyPolygon);
+ explicit B2DPolyPolygon(const B2DPolygon& rPolygon);
+ ~B2DPolyPolygon();
+
+ // assignment operator
+ B2DPolyPolygon& operator=(const B2DPolyPolygon& rPolyPolygon);
+
+ /// unshare this poly-polygon (and all included polygons) with all internally shared instances
+ void makeUnique();
+
+ // compare operators
+ bool operator==(const B2DPolyPolygon& rPolyPolygon) const;
+ bool operator!=(const B2DPolyPolygon& rPolyPolygon) const;
+
+ // polygon interface
+ sal_uInt32 count() const;
+
+ B2DPolygon getB2DPolygon(sal_uInt32 nIndex) const;
+ void setB2DPolygon(sal_uInt32 nIndex, const B2DPolygon& rPolygon);
+
+ // test for curve
+ bool areControlPointsUsed() const;
+
+ // insert/append single polygon
+ void insert(sal_uInt32 nIndex, const B2DPolygon& rPolygon, sal_uInt32 nCount = 1);
+ void append(const B2DPolygon& rPolygon, sal_uInt32 nCount = 1);
+
+ /** Default adaptive subdivision access
+
+ For details refer to B2DPolygon::getDefaultAdaptiveSubdivision()
+
+ @return
+ The default subdivision of this polygon
+ */
+ B2DPolyPolygon getDefaultAdaptiveSubdivision() const;
+
+ /** Get the B2DRange (Rectangle dimensions) of this B2DPolyPolygon
+
+ For details refer to B2DPolygon::getB2DRange()
+
+ @return
+ The outer range of the bezier curve/polygon
+ */
+ B2DRange getB2DRange() const;
+
+ // insert/append multiple polygons
+ void insert(sal_uInt32 nIndex, const B2DPolyPolygon& rPolyPolygon);
+ void append(const B2DPolyPolygon& rPolyPolygon);
+
+ // remove
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount = 1);
+
+ // reset to empty state
+ void clear();
+
+ // closed state
+ bool isClosed() const;
+ void setClosed(bool bNew);
+
+ // flip polygon direction
+ void flip();
+
+ // test if PolyPolygon has double points
+ bool hasDoublePoints() const;
+
+ // remove double points, at the begin/end and follow-ups, too
+ void removeDoublePoints();
+
+ // apply transformation given in matrix form to the polygon
+ void transform(const basegfx::B2DHomMatrix& rMatrix);
+
+ // polygon iterators (same iterator validity conditions as for vector)
+ const B2DPolygon* begin() const;
+ const B2DPolygon* end() const;
+ B2DPolygon* begin();
+ B2DPolygon* end();
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYGON_B2DPOLYPOLYGON_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx
new file mode 100644
index 000000000000..3f00b3093f06
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx
@@ -0,0 +1,122 @@
+/* -*- 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 _BGFX_POLYGON_B2DPOLYPOLYGONCUTTER_HXX
+#define _BGFX_POLYGON_B2DPOLYPOLYGONCUTTER_HXX
+
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // Solve all crossovers in a polyPolygon. This re-layouts all contained polygons so that the
+ // result will contain only non-cutting polygons. For that reason, points will be added at
+ // crossover and touch points and the single Polygons may be re-combined. The orientations
+ // of the contained polygons in not changed but used as topological information.
+ // Self crossovers of the contained sub-polygons are implicitely handled, but to not lose
+ // the topological information, it may be necessary to remove self-intersections of the
+ // contained sub-polygons in a preparing step and to explicitely correct their orientations.
+ B2DPolyPolygon solveCrossovers(const B2DPolyPolygon& rCandidate);
+
+ // Version for single polygons. This is for solving self-intersections. Result will be free of
+ // crossovers. When result contains multiple polygons, it may be necessary to rearrange their
+ // orientations since holes may have been created (use correctOrientations eventually).
+ B2DPolyPolygon solveCrossovers(const B2DPolygon& rCandidate);
+
+ // Neutral polygons will be stripped. Neutral polygons are ones who's orientation is
+ // neutral, so normally they have no volume -> just closed paths. A polygon with the same
+ // positive and negative oriented volume is also neutral, so this may not be wanted. It is
+ // safe to call with crossover-free polygons, though (that's where it's mostly used).
+ B2DPolyPolygon stripNeutralPolygons(const B2DPolyPolygon& rCandidate);
+
+ // Remove not necessary polygons. Works only correct with crossover-free polygons. For each
+ // polygon, the depth for the PolyPolygon is calculated. The orientation is used to identify holes.
+ // Start value for holes is -1, for polygons it's zero. Ech time a polygon is contained in another one,
+ // it's depth is increased when inside a polygon, decreased when inside a hole. The result is a depth
+ // which e.g. is -1 for holes outside everything, 1 for a polygon covered by another polygon and zero
+ // for e.g. holes in a polygon or polygons outside everythig else.
+ // In the 2nd step, all polygons with depth other than zero are removed. If bKeepAboveZero is used,
+ // all polygons < 1 are removed. The bKeepAboveZero mode is useful for clipping, e.g. just append
+ // one polygon to another and use this mode -> only parts where two polygons overlapped will be kept.
+ // In combination with correct orientation of the input orientations and the SolveCrossover calls this
+ // can be combined for logical polygon operations or polygon clipping.
+ B2DPolyPolygon stripDispensablePolygons(const B2DPolyPolygon& rCandidate, bool bKeepAboveZero = false);
+
+ // For convenience: The four basic operations OR, XOR, AND and DIFF for
+ // two PolyPolygons. These are combinations of the above methods. To not be forced
+ // to do evtl. already done preparations twice, You have to do the operations Yourself.
+ //
+ // A source preparation consists of preparing it to be seen as XOR-Rule PolyPolygon,
+ // so it is freed of intersections, self-intersections and the orientations are corrected.
+ // Important is that it will define the same areas as before, but is intersection-free.
+ // As an example think about a single polygon looping in itself and having holes. To
+ // topologically correctly handle this, it is necessary to remove all intersections and
+ // to correct the orientations. The orientation of the isolated holes e.g. will be negative.
+ // Topologically it is necessary to prepare each polygon which is seen as entity. It is
+ // not sufficient just to concatenate them and prepare the result, this may be topologically
+ // different since the simple concatenation will be seen as XOR. To work correctly, You
+ // may need to OR those polygons.
+
+ // Preparations: solve self-intersections and intersections, remove neutral
+ // parts and correct orientations.
+ B2DPolyPolygon prepareForPolygonOperation(const B2DPolygon& rCandidate);
+ B2DPolyPolygon prepareForPolygonOperation(const B2DPolyPolygon& rCandidate);
+
+ // OR: Return all areas where CandidateA or CandidateB exist
+ B2DPolyPolygon solvePolygonOperationOr(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB);
+
+ // XOR: Return all areas where CandidateA or CandidateB exist, but not both
+ B2DPolyPolygon solvePolygonOperationXor(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB);
+
+ // AND: Return all areas where CandidateA and CandidateB exist
+ B2DPolyPolygon solvePolygonOperationAnd(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB);
+
+ // DIFF: Return all areas where CandidateA is not covered by CandidateB (cut B out of A)
+ B2DPolyPolygon solvePolygonOperationDiff(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB);
+
+ /** merge all single PolyPolygons to a single, OR-ed PolyPolygon
+
+ @param rInput
+ The source PolyPolygons
+
+ @return A single PolyPolygon containing the Or-merged result
+ */
+ B2DPolyPolygon mergeToSinglePolyPolygon(const std::vector< basegfx::B2DPolyPolygon >& rInput);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+
+#endif /* _BGFX_POLYGON_B2DPOLYPOLYGONCUTTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygonfillrule.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygonfillrule.hxx
new file mode 100644
index 000000000000..2517a9c423e9
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygonfillrule.hxx
@@ -0,0 +1,63 @@
+/* -*- 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 _BGFX_POLYGON_B2DPOLYPOLYGONFILLRULE_HXX
+#define _BGFX_POLYGON_B2DPOLYPOLYGONFILLRULE_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ /** Fill rule to use for poly-polygon filling.
+
+ The fill rule determines which areas are inside, and which are
+ outside the poly-polygon.
+ */
+ enum FillRule
+ {
+ /** Areas, for which a scanline has crossed an odd number of
+ vertices, are regarded 'inside', the remainder 'outside'
+ of the poly-polygon.
+ */
+ FillRule_EVEN_ODD,
+
+ /** For each edge a scanline crosses, a current winding number
+ is updated. Downward edges count +1, upward edges count
+ -1. If the total accumulated winding number for one area
+ is not zero, this area is regarded 'inside', otherwise,
+ 'outside'.
+ */
+ FillRule_NONZERO_WINDING_NUMBER
+ };
+}
+
+#endif /* _BGFX_POLYGON_B2DPOLYPOLYGONFILLRULE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx
new file mode 100644
index 000000000000..1f56a14c1842
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx
@@ -0,0 +1,144 @@
+/* -*- 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 _BGFX_POLYGON_B2DPOLYPOLYGONRASTERCONVERTER_HXX
+#define _BGFX_POLYGON_B2DPOLYPOLYGONRASTERCONVERTER_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygonfillrule.hxx>
+#include <vector>
+#include <utility>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ /** Raster-convert a poly-polygon.
+
+ This class can raster-convert a given poly-polygon. Simply
+ derive from this, and override the span() method, which will
+ get called for every scanline span of the poly-polygon.
+
+ @derive
+ Overwrite span() with the render output method of your choice.
+ */
+ class B2DPolyPolygonRasterConverter
+ {
+ public:
+ /** Create raster-converter for given poly-polygon
+ */
+ B2DPolyPolygonRasterConverter(const B2DPolyPolygon& rPolyPolyRaster);
+
+ /** Create raster-converter for given poly-polygon and raster
+ area.
+
+ @param rPolyPolyRaster
+ Poly-Polygon to raster convert
+
+ @param rMinUpdateArea
+ Minimal area to touch when raster-converting. The
+ rectangle given here is guaranteed to be iterated through
+ scanline by scanline (but the raster converter might
+ actually use more scanlines, e.g. if the poly-polygon's
+ bound rect is larger). One of the cases where this
+ parameter comes in handy is when rendering in the 'off'
+ spans, and a certain area must be filled. <em>Do not</em>
+ use this for clipping, as described above, the touched
+ area might also be larger.
+ */
+ B2DPolyPolygonRasterConverter(const B2DPolyPolygon& rPolyPolyRaster,
+ const B2DRectangle& rRasterArea );
+
+ virtual ~B2DPolyPolygonRasterConverter();
+
+ /** Raster-convert the contained poly-polygon
+
+ @param eFillRule
+ Fill rule to use for span filling
+ */
+ void rasterConvert( FillRule eFillRule);
+
+ /** Override this method, to be called for every scanline span
+ of the poly-polygon
+
+ @param rfXLeft
+ The left end of the current horizontal span
+
+ @param rfXRight
+ The right end of the current horizontal span
+
+ @param nY
+ The y position of the current horizontal span
+
+ @param bOn
+ Denotes whether this span is on or off, according to the
+ active fill rule.
+ */
+ virtual void span(const double& rfXLeft,
+ const double& rfXRight,
+ sal_Int32 nY,
+ bool bOn ) = 0;
+
+ /// @internal
+ struct Vertex
+ {
+ inline Vertex();
+ inline Vertex( const B2DPoint&, const B2DPoint&, bool );
+
+ B2DPoint aP1;
+ B2DPoint aP2;
+ bool bDownwards;
+ };
+
+ private:
+ // default: disabled copy/assignment
+ B2DPolyPolygonRasterConverter(const B2DPolyPolygonRasterConverter&);
+ B2DPolyPolygonRasterConverter& operator=( const B2DPolyPolygonRasterConverter& );
+
+ void init();
+
+ typedef ::std::vector<Vertex> VectorOfVertices;
+ typedef ::std::vector<VectorOfVertices> VectorOfVertexVectors;
+
+ /// The poly-polygon to raster-convert
+ B2DPolyPolygon maPolyPolygon;
+ /// Total bound rect of the poly-polygon
+ const B2DRectangle maPolyPolyRectangle;
+
+ /** Vector containing for each scanline a vector which in turn
+ contains all vertices that start on the specific scanline
+ */
+ VectorOfVertexVectors maScanlines;
+ };
+}
+
+#endif /* _BGFX_POLYGON_B2DPOLYPOLYGONRASTERCONVERTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx
new file mode 100644
index 000000000000..8b025bcff99e
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx
@@ -0,0 +1,282 @@
+/* -*- 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 _BGFX_POLYPOLYGON_B2DPOLYGONTOOLS_HXX
+#define _BGFX_POLYPOLYGON_B2DPOLYGONTOOLS_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <vector>
+
+namespace rtl
+{
+ class OUString;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predefinitions
+ class B2DPolyPolygon;
+ class B2DRange;
+
+ namespace tools
+ {
+ // B2DPolyPolygon tools
+
+ // Check and evtl. correct orientations of all contained Polygons so that
+ // the orientations of contained polygons will variate to express areas and
+ // holes
+ B2DPolyPolygon correctOrientations(const B2DPolyPolygon& rCandidate);
+
+ // make sure polygon with index 0L is not a hole. This may evtl. change the
+ // sequence of polygons, but allows to use polygon with index 0L to
+ // get the correct normal for the whole polyPolygon
+ B2DPolyPolygon correctOutmostPolygon(const B2DPolyPolygon& rCandidate);
+
+ // Subdivide all contained curves. Use distanceBound value if given.
+ B2DPolyPolygon adaptiveSubdivideByDistance(const B2DPolyPolygon& rCandidate, double fDistanceBound = 0.0);
+
+ // Subdivide all contained curves. Use distanceBound value if given. Else, a convenient one
+ // is created.
+ B2DPolyPolygon adaptiveSubdivideByAngle(const B2DPolyPolygon& rCandidate, double fAngleBound = 0.0);
+
+ // Subdivide all contained curves. Use nCount divisions if given. Else, a convenient one
+ // is created.
+ B2DPolyPolygon adaptiveSubdivideByCount(const B2DPolyPolygon& rCandidate, sal_uInt32 nCount = 0L);
+
+ // isInside test for B2dPoint. On border is not inside as long as not true is given
+ // in bWithBorder flag. It is assumed that the orientations of the given polygon are correct.
+ bool isInside(const B2DPolyPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder = false);
+
+ /** get range of PolyPolygon. Control points are included.
+
+ For detailed description look at getRangeWithControlPoints(const B2DPolygon&).
+ This method just expands by the range of every sub-Polygon.
+
+ @param rCandidate
+ The B2DPolyPolygon eventually containing bezier segments
+
+ @return
+ The outer range including control points
+ */
+ B2DRange getRangeWithControlPoints(const B2DPolyPolygon& rCandidate);
+
+ /** Get the range of a polyPolygon
+
+ For detailed description look at getRange(const B2DPolygon&).
+ This method just expands by the range of every sub-Polygon.
+
+ @param rCandidate
+ The B2DPolyPolygon eventually containing bezier segments
+
+ @return
+ The outer range of the polygon
+ */
+ B2DRange getRange(const B2DPolyPolygon& rCandidate);
+
+ /** Apply given LineDashing to given polyPolygon
+
+ For a description see applyLineDashing in b2dpolygontoos.hxx
+ */
+ void applyLineDashing(
+ const B2DPolyPolygon& rCandidate,
+ const ::std::vector<double>& rDotDashArray,
+ B2DPolyPolygon* pLineTarget,
+ B2DPolyPolygon* pGapTarget = 0,
+ double fFullDashDotLen = 0.0);
+
+ // test if point is inside epsilon-range around the given PolyPolygon. Can be used
+ // for HitTesting. The epsilon-range is defined to be the tube around the PolyPolygon
+ // with distance fDistance and rounded edges (start and end point).
+ bool isInEpsilonRange(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance);
+
+ /** Read poly-polygon from SVG.
+
+ This function imports a poly-polygon from an SVG-D
+ attribute. Currently, elliptical arc elements are not yet
+ supported (and ignored during parsing).
+
+ @param o_rPolyPoly
+ The output poly-polygon
+
+ @param rSvgDAttribute
+ A valid SVG-D attribute string
+
+ @return true, if the string was successfully parsed
+ */
+ bool importFromSvgD( B2DPolyPolygon& o_rPolyPoly,
+ const ::rtl::OUString& rSvgDAttribute );
+
+ /** Read poly-polygon from SVG.
+
+ This function imports a poly-polygon from an SVG points
+ attribute (a plain list of coordinate pairs).
+
+ @param o_rPoly
+ The output polygon. Note that svg:points can only define a
+ single polygon
+
+ @param rSvgPointsAttribute
+ A valid SVG points attribute string
+
+ @return true, if the string was successfully parsed
+ */
+ bool importFromSvgPoints( B2DPolygon& o_rPoly,
+ const ::rtl::OUString& rSvgPointsAttribute );
+
+
+ // grow for polyPolygon. Move all geometry in each point in the direction of the normal in that point
+ // with the given amount. Value may be negative.
+ B2DPolyPolygon growInNormalDirection(const B2DPolyPolygon& rCandidate, double fValue);
+
+ // This method will correct a pair of polyPolygons where the goal is to keep same point count
+ // to allow direct point association and also to remove self-intersections produced by shrinks.
+ // This method will eventually change both polyPolygons to reach that goal because there are cases
+ // where it is necessary to add new cut points to the original
+ void correctGrowShrinkPolygonPair(B2DPolyPolygon& rOriginal, B2DPolyPolygon& rGrown);
+
+ // force all sub-polygons to a point count of nSegments
+ B2DPolyPolygon reSegmentPolyPolygon(const B2DPolyPolygon& rCandidate, sal_uInt32 nSegments);
+
+ // create polygon state at t from 0.0 to 1.0 between the two polygons. Both polygons must have the same
+ // organisation, e.g. same amount of polygons
+ B2DPolyPolygon interpolate(const B2DPolyPolygon& rOld1, const B2DPolyPolygon& rOld2, double t);
+
+ // create 3d PolyPolygon from given 2d PolyPolygon. The given fZCoordinate is used to expand the
+ // third coordinate.
+ B3DPolyPolygon createB3DPolyPolygonFromB2DPolyPolygon(const B2DPolyPolygon& rCandidate, double fZCoordinate = 0.0);
+
+ // create 2d PolyPolygon from given 3d PolyPolygon. All coordinates are transformed using the given
+ // matrix and the resulting x,y is used to form the new polygon.
+ B2DPolyPolygon createB2DPolyPolygonFromB3DPolyPolygon(const B3DPolyPolygon& rCandidate, const B3DHomMatrix& rMat);
+
+ // for each contained edge in each contained polygon calculate the smallest distance. Return the index to the smallest
+ // edge in rEdgeIndex and the index to the polygon in rPolygonIndex. The relative position on the edge is returned in rCut.
+ // If nothing was found (e.g. empty input plygon), DBL_MAX is returned.
+ double getSmallestDistancePointToPolyPolygon(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rPolygonIndex, sal_uInt32& rEdgeIndex, double& rCut);
+
+ // distort PolyPolygon. rOriginal describes the original range, where the given points describe the distorted
+ // corresponding points.
+ B2DPolyPolygon distort(const B2DPolyPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight);
+
+ // rotate PolyPolygon around given point with given angle.
+ B2DPolyPolygon rotateAroundPoint(const B2DPolyPolygon& rCandidate, const B2DPoint& rCenter, double fAngle);
+
+ // expand all segments (which are not yet) to curve segments. This is done with setting the control
+ // vectors on the 1/3 resp. 2/3 distances on each segment.
+ B2DPolyPolygon expandToCurve(const B2DPolyPolygon& rCandidate);
+
+ // set continuity for the whole curve. If not a curve, nothing will change. Non-curve points are not changed, too.
+ B2DPolyPolygon setContinuity(const B2DPolyPolygon& rCandidate, B2VectorContinuity eContinuity);
+
+ /** Predicate whether a given poly-polygon is a rectangle.
+
+ @param rPoly
+ PolyPolygon to check
+
+ @return true, if the poly-polygon describes a rectangle
+ (contains exactly one polygon, polygon is closed, and the
+ points are either cw or ccw enumerations of a rectangle's
+ vertices). Note that intermediate points and duplicate
+ points are ignored.
+ */
+ bool isRectangle( const B2DPolyPolygon& rPoly );
+
+ /** Export poly-polygon to SVG.
+
+ This function exports a poly-polygon into an SVG-D
+ statement. Currently, output of relative point sequences
+ is not yet supported (might cause slightly larger output)
+
+ @param rPolyPoly
+ The poly-polygon to export
+
+ @param bUseRelativeCoordinates
+ When true, all coordinate values are exported as relative
+ to the current position. This tends to save some space,
+ since fewer digits needs to be written.
+
+ @param bDetectQuadraticBeziers
+ When true, the export tries to detect cubic bezier
+ segments in the input polygon, which can be represented by
+ quadratic bezier segments. Note that the generated string
+ causes versions prior to OOo2.0 to crash.
+
+ @return the generated SVG-D statement (the XML d attribute
+ value alone, without any "<path ...>" or "d="...")
+ */
+ ::rtl::OUString exportToSvgD( const B2DPolyPolygon& rPolyPoly,
+ bool bUseRelativeCoordinates=true,
+ bool bDetectQuadraticBeziers=true );
+
+ // #i76891# Try to remove existing curve segments if they are simply edges
+ B2DPolyPolygon simplifyCurveSegments(const B2DPolyPolygon& rCandidate);
+
+ /** split each edge of a polyPolygon in exactly nSubEdges equidistant edges
+
+ @param rCandidate
+ The source polyPolygon. If too small (no edges), nSubEdges too small (<2)
+ or neither bHandleCurvedEdgesnor bHandleStraightEdges it will just be returned.
+ Else for each edge nSubEdges will be created. Closed state is preserved.
+
+ @param nSubEdges
+ @param bHandleCurvedEdges
+ @param bHandleStraightEdges
+ Please take a look at reSegmentPolygonEdges description, these are the same.
+ */
+ B2DPolyPolygon reSegmentPolyPolygonEdges(const B2DPolyPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges);
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 2D PolyPolygons
+ bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB, const double& rfSmallValue);
+ bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB);
+
+ /** snap some polygon coordinates to discrete coordinates
+
+ This method allows to snap some polygon points to discrete (integer) values
+ which equals e.g. a snap to discrete coordinates. It will snap points of
+ horizontal and vertical edges
+
+ @param rCandidate
+ The source polygon
+
+ @return
+ The modified version of the source polygon
+ */
+ B2DPolyPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolyPolygon& rCandidate);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYPOLYGON_B2DPOLYGONTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx b/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx
new file mode 100644
index 000000000000..77c6e40c4742
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx
@@ -0,0 +1,135 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dpolygontriangulator.hxx,v $
+ * $Revision: 1.5 $
+ *
+ * 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 _BGFX_POLYGON_B2DTRAPEZOID_HXX
+#define _BGFX_POLYGON_B2DTRAPEZOID_HXX
+
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // class to hold a single trapezoid
+ class B2DTrapezoid
+ {
+ private:
+ // Geometry data. YValues are down-oriented, this means bottom should
+ // be bigger than top to be below it. The constructor implementation
+ // guarantees:
+ //
+ // - mfBottomY >= mfTopY
+ // - mfTopXRight >= mfTopXLeft
+ // - mfBottomXRight >= mfBottomXLeft
+ double mfTopXLeft;
+ double mfTopXRight;
+ double mfTopY;
+ double mfBottomXLeft;
+ double mfBottomXRight;
+ double mfBottomY;
+
+ public:
+ // constructor
+ B2DTrapezoid(
+ const double& rfTopXLeft,
+ const double& rfTopXRight,
+ const double& rfTopY,
+ const double& rfBottomXLeft,
+ const double& rfBottomXRight,
+ const double& rfBottomY);
+
+ // data read access
+ const double& getTopXLeft() const { return mfTopXLeft; }
+ const double& getTopXRight() const { return mfTopXRight; }
+ const double& getTopY() const { return mfTopY; }
+ const double& getBottomXLeft() const { return mfBottomXLeft; }
+ const double& getBottomXRight() const { return mfBottomXRight; }
+ const double& getBottomY() const { return mfBottomY; }
+
+ // convenience method to get content as Polygon
+ B2DPolygon getB2DPolygon() const;
+ };
+
+ typedef ::std::vector< B2DTrapezoid > B2DTrapezoidVector;
+
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // convert SourcePolyPolygon to trapezoids. The trapezoids will be appended to
+ // ro_Result. ro_Result will not be cleared. If SourcePolyPolygon contains curves,
+ // it's default AdaptiveSubdivision will be used.
+ // CAUTION: Trapezoids are oreintation-dependent in the sense that the upper and lower
+ // lines have to be parallel to the X-Axis, thus this subdivision is NOT simply usable
+ // for primitive decompositions. To use it, the shear and rotate parts of the
+ // involved transformations HAVE to be taken into account.
+ void trapezoidSubdivide(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolyPolygon& rSourcePolyPolygon);
+
+ // directly create trapezoids from given edge. Depending on the given geometry,
+ // none up to three trapezoids will be created
+ void createLineTrapezoidFromEdge(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPoint& rPointA,
+ const B2DPoint& rPointB,
+ double fLineWidth = 1.0);
+
+ // create trapezoids for all edges of the given polygon. The closed state of
+ // the polygon is taken into account. If curves are contaned, the default
+ // AdaptiveSubdivision will be used.
+ void createLineTrapezoidFromB2DPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolygon& rPolygon,
+ double fLineWidth = 1.0);
+
+ // create trapezoids for all edges of the given polyPolygon. The closed state of
+ // the PolyPolygon is taken into account. If curves are contaned, the default
+ // AdaptiveSubdivision will be used.
+ void createLineTrapezoidFromB2DPolyPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolyPolygon& rPolyPolygon,
+ double fLineWidth = 1.0);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_POLYGON_B2DTRAPEZOID_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b3dpolygon.hxx b/basegfx/inc/basegfx/polygon/b3dpolygon.hxx
new file mode 100644
index 000000000000..5f1613845915
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b3dpolygon.hxx
@@ -0,0 +1,144 @@
+/* -*- 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 _BGFX_POLYGON_B3DPOLYGON_HXX
+#define _BGFX_POLYGON_B3DPOLYGON_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class ImplB3DPolygon;
+
+namespace basegfx
+{
+ class B3DPolygon;
+ class B3DPoint;
+ class B3DHomMatrix;
+ class B3DVector;
+ class B2DPoint;
+ class B2DHomMatrix;
+ class BColor;
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B3DPolygon
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImplB3DPolygon > ImplType;
+
+ private:
+ // internal data.
+ ImplType mpPolygon;
+
+ public:
+ B3DPolygon();
+ B3DPolygon(const B3DPolygon& rPolygon);
+ B3DPolygon(const B3DPolygon& rPolygon, sal_uInt32 nIndex, sal_uInt32 nCount);
+ ~B3DPolygon();
+
+ // assignment operator
+ B3DPolygon& operator=(const B3DPolygon& rPolygon);
+
+ /// unshare this polygon with all internally shared instances
+ void makeUnique();
+
+ // compare operators
+ bool operator==(const B3DPolygon& rPolygon) const;
+ bool operator!=(const B3DPolygon& rPolygon) const;
+
+ // member count
+ sal_uInt32 count() const;
+
+ // Coordinate interface
+ B3DPoint getB3DPoint(sal_uInt32 nIndex) const;
+ void setB3DPoint(sal_uInt32 nIndex, const B3DPoint& rValue);
+
+ // Coordinate insert/append
+ void insert(sal_uInt32 nIndex, const B3DPoint& rPoint, sal_uInt32 nCount = 1);
+ void append(const B3DPoint& rPoint, sal_uInt32 nCount = 1);
+
+ // BColor interface
+ BColor getBColor(sal_uInt32 nIndex) const;
+ void setBColor(sal_uInt32 nIndex, const BColor& rValue);
+ bool areBColorsUsed() const;
+ void clearBColors();
+
+ // Normals interface
+ B3DVector getNormal() const; // plane normal
+ B3DVector getNormal(sal_uInt32 nIndex) const; // normal in each point
+ void setNormal(sal_uInt32 nIndex, const B3DVector& rValue);
+ void transformNormals(const B3DHomMatrix& rMatrix);
+ bool areNormalsUsed() const;
+ void clearNormals();
+
+ // TextureCoordinate interface
+ B2DPoint getTextureCoordinate(sal_uInt32 nIndex) const;
+ void setTextureCoordinate(sal_uInt32 nIndex, const B2DPoint& rValue);
+ void transformTextureCoordiantes(const B2DHomMatrix& rMatrix);
+ bool areTextureCoordinatesUsed() const;
+ void clearTextureCoordinates();
+
+ // insert/append other 2D polygons
+ void insert(sal_uInt32 nIndex, const B3DPolygon& rPoly, sal_uInt32 nIndex2 = 0, sal_uInt32 nCount = 0);
+ void append(const B3DPolygon& rPoly, sal_uInt32 nIndex = 0, sal_uInt32 nCount = 0);
+
+ // remove
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount = 1);
+
+ // clear all points
+ void clear();
+
+ // closed state
+ bool isClosed() const;
+ void setClosed(bool bNew);
+
+ // flip polygon direction
+ void flip();
+
+ // test if Polygon has double points
+ bool hasDoublePoints() const;
+
+ // remove double points, at the begin/end and follow-ups, too
+ void removeDoublePoints();
+
+ // apply transformation given in matrix form to the polygon
+ void transform(const B3DHomMatrix& rMatrix);
+ };
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+
+#endif /* _BGFX_POLYGON_B3DPOLYGON_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx b/basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx
new file mode 100644
index 000000000000..3166c39012c1
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx
@@ -0,0 +1,89 @@
+/* -*- 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 _BGFX_POLYPOLYGON_B3DPOLYGONCLIPPER_HXX
+#define _BGFX_POLYPOLYGON_B3DPOLYGONCLIPPER_HXX
+
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/polygon/b3dpolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predefinitions
+ class B3DRange;
+ class B2DRange;
+
+ namespace tools
+ {
+ /** define for deciding one of X,Y,Z directions
+ */
+ enum B3DOrientation
+ {
+ B3DORIENTATION_X, // X-Axis
+ B3DORIENTATION_Y, // Y-Axis
+ B3DORIENTATION_Z // Z-Axis
+ };
+
+ // Clip given 3D polygon against a plane orthogonal to X,Y or Z axis. The plane is defined using the
+ // enum ePlaneOrthogonal which names the vector orthogonal to the plane, the fPlaneOffset gives the distance
+ // of the plane from the center (0.0).
+ // The value bClipPositive defines on which side the return value will be (true -> on positive side of plane).
+ // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true).
+ B3DPolyPolygon clipPolyPolygonOnOrthogonalPlane(const B3DPolyPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke);
+
+ // version for Polygons
+ B3DPolyPolygon clipPolygonOnOrthogonalPlane(const B3DPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke);
+
+ // Clip the given PolyPolygon against the given range. bInside defines if the result will contain the
+ // parts which are contained in the range or vice versa.
+ // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true).
+ B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke);
+
+ // version for Polygons
+ B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke);
+
+ // versions for B2DRange, clips only against X,Y
+ B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke);
+ B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke);
+
+ // Clip the given PolyPolygon against given plane in 3D. The plane is defined by a plane normal and a point on the plane.
+ // The value bClipPositive defines on which side the return value will be (true -> on positive side of plane).
+ // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true).
+ B3DPolyPolygon clipPolyPolygonOnPlane(const B3DPolyPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke);
+
+ // version for Polygons
+ B3DPolyPolygon clipPolygonOnPlane(const B3DPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYPOLYGON_B3DPOLYGONCLIPPER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b3dpolygontools.hxx b/basegfx/inc/basegfx/polygon/b3dpolygontools.hxx
new file mode 100644
index 000000000000..00caf76823e1
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b3dpolygontools.hxx
@@ -0,0 +1,194 @@
+/* -*- 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 _BGFX_POLYGON_B3DPOLYGONTOOLS_HXX
+#define _BGFX_POLYGON_B3DPOLYGONTOOLS_HXX
+
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predefinitions
+ class B3DPolygon;
+ class B3DRange;
+
+ namespace tools
+ {
+ // B3DPolygon tools
+
+ /** Check if given polygon is closed. This is kind of a
+ 'classic' method to support old polygon definitions.
+ Those old polygon definitions define the closed state
+ of the polygon using identical start and endpoints. This
+ method corrects this (removes double start/end points)
+ and sets the Closed()-state of the polygon correctly.
+ */
+ void checkClosed(B3DPolygon& rCandidate);
+
+ // Get successor and predecessor indices. Returning the same index means there
+ // is none. Same for successor.
+ sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate);
+ sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate);
+
+ // Get orientation of Polygon
+ B2VectorOrientation getOrientation(const B3DPolygon& rCandidate);
+
+ // get size of polygon. Control vectors are included in that ranges.
+ B3DRange getRange(const B3DPolygon& rCandidate);
+
+ // get normal vector of polygon
+ B3DVector getNormal(const B3DPolygon& rCandidate);
+
+ // get normal vector of positive oriented polygon
+ B3DVector getPositiveOrientedNormal(const B3DPolygon& rCandidate);
+
+ // get signed area of polygon
+ double getSignedArea(const B3DPolygon& rCandidate);
+
+ // get area of polygon
+ double getArea(const B3DPolygon& rCandidate);
+
+ // get signed area of polygon
+ double getSignedArea(const B3DPolygon& rCandidate);
+
+ // get area of polygon
+ double getArea(const ::basegfx::B3DPolygon& rCandidate);
+
+ // get length of polygon edge from point nIndex to nIndex + 1
+ double getEdgeLength(const B3DPolygon& rCandidate, sal_uInt32 nIndex);
+
+ // get length of polygon
+ double getLength(const B3DPolygon& rCandidate);
+
+ // get position on polygon for absolute given distance. If
+ // length is given, it is assumed the correct polygon length, if 0.0 it is calculated
+ // using getLength(...)
+ B3DPoint getPositionAbsolute(const B3DPolygon& rCandidate, double fDistance, double fLength = 0.0);
+
+ // get position on polygon for relative given distance in range [0.0 .. 1.0]. If
+ // length is given, it is assumed the correct polygon length, if 0.0 it is calculated
+ // using getLength(...)
+ B3DPoint getPositionRelative(const B3DPolygon& rCandidate, double fDistance, double fLength = 0.0);
+
+ /** Apply given LineDashing to given polygon
+
+ For a description see applyLineDashing in b2dpolygontoos.hxx
+ */
+ void applyLineDashing(
+ const B3DPolygon& rCandidate,
+ const ::std::vector<double>& rDotDashArray,
+ B3DPolyPolygon* pLineTarget,
+ B3DPolyPolygon* pGapTarget = 0,
+ double fFullDashDotLen = 0.0);
+
+ /** Create/replace normals for given 3d geometry with default normals from given center to outside.
+ rCandidate: the 3d geometry to change
+ rCenter: the center of the 3d geometry
+ */
+ B3DPolygon applyDefaultNormalsSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter);
+
+ /** invert normals for given 3d geometry.
+ */
+ B3DPolygon invertNormals( const B3DPolygon& rCandidate);
+
+ /** Create/replace texture coordinates for given 3d geometry with parallel projected one
+ rRange: the full range of the 3d geometry
+ If bChangeX, x texture coordinate will be recalculated.
+ If bChangeY, y texture coordinate will be recalculated.
+ */
+ B3DPolygon applyDefaultTextureCoordinatesParallel( const B3DPolygon& rCandidate, const B3DRange& rRange, bool bChangeX = true, bool bChangeY = true);
+
+ /** Create/replace texture coordinates for given 3d geometry with spherical one
+ rCenter: the centre of the used 3d geometry
+ If bChangeX, x texture coordinate will be recalculated.
+ If bChangeY, y texture coordinate will be recalculated.
+ */
+ B3DPolygon applyDefaultTextureCoordinatesSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX = true, bool bChangeY = true);
+
+ // test if point is inside epsilon-range around an edge defined
+ // by the two given points. Can be used for HitTesting. The epsilon-range
+ // is defined to be the cylinder centered to the given edge, using radius
+ // fDistance, and the sphere around both points with radius fDistance.
+ bool isInEpsilonRange(const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, const B3DPoint& rTestPosition, double fDistance);
+
+ // test if point is inside epsilon-range around the given Polygon. Can be used
+ // for HitTesting. The epsilon-range is defined to be the cylinder centered to
+ // the given edge, using radius fDistance, and the sphere around both points with radius fDistance.
+ bool isInEpsilonRange(const B3DPolygon& rCandidate, const B3DPoint& rTestPosition, double fDistance);
+
+ // isInside tests for B3DPoint and other B3DPolygon. On border is not inside as long as
+ // not true is given in bWithBorder flag.
+ bool isInside(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder = false);
+ bool isInside(const B3DPolygon& rCandidate, const B3DPolygon& rPolygon, bool bWithBorder = false);
+
+ // calculates if given point is on given line, taking care of the numerical epsilon
+ bool isPointOnLine(const B3DPoint& rStart, const B3DPoint& rEnd, const B3DPoint& rCandidate, bool bWithPoints = false);
+
+ // calculates if given point is on given polygon, taking care of the numerical epsilon. Uses
+ // isPointOnLine internally
+ bool isPointOnPolygon(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithPoints = true);
+
+ // helper to get a fCut position between a plane (given with normal and a point)
+ // and a line given by start and end point
+ bool getCutBetweenLineAndPlane(const B3DVector& rPlaneNormal, const B3DPoint& rPlanePoint, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut);
+
+ // helper to get a fCut position between a 3d Polygon
+ // and a line given by start and end point
+ bool getCutBetweenLineAndPolygon(const B3DPolygon& rCandidate, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut);
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 3D Polygons
+ bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB, const double& rfSmallValue);
+ bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB);
+
+ /** snap some polygon coordinates to discrete coordinates
+
+ This method allows to snap some polygon points to discrete (integer) values
+ which equals e.g. a snap to discrete coordinates. It will snap points of
+ horizontal and vertical edges
+
+ @param rCandidate
+ The source polygon
+
+ @return
+ The modified version of the source polygon
+ */
+ B3DPolygon snapPointsOfHorizontalOrVerticalEdges(const B3DPolygon& rCandidate);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYGON_B3DPOLYGONTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx b/basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx
new file mode 100644
index 000000000000..472b39bab267
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx
@@ -0,0 +1,128 @@
+/* -*- 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 _BGFX_POLYGON_B3DPOLYPOLYGON_HXX
+#define _BGFX_POLYGON_B3DPOLYPOLYGON_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+
+// predeclarations
+class ImplB3DPolyPolygon;
+
+namespace basegfx
+{
+ class B3DPolygon;
+ class B3DHomMatrix;
+ class B2DHomMatrix;
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B3DPolyPolygon
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImplB3DPolyPolygon > ImplType;
+
+ private:
+ ImplType mpPolyPolygon;
+
+ public:
+ B3DPolyPolygon();
+ B3DPolyPolygon(const B3DPolyPolygon& rPolyPolygon);
+ explicit B3DPolyPolygon(const B3DPolygon& rPolygon);
+ ~B3DPolyPolygon();
+
+ // assignment operator
+ B3DPolyPolygon& operator=(const B3DPolyPolygon& rPolyPolygon);
+
+ /// unshare this poly-polygon (and all included polygons) with all internally shared instances
+ void makeUnique();
+
+ // compare operators
+ bool operator==(const B3DPolyPolygon& rPolyPolygon) const;
+ bool operator!=(const B3DPolyPolygon& rPolyPolygon) const;
+
+ // polygon interface
+ sal_uInt32 count() const;
+
+ // B3DPolygon interface
+ B3DPolygon getB3DPolygon(sal_uInt32 nIndex) const;
+ void setB3DPolygon(sal_uInt32 nIndex, const B3DPolygon& rPolygon);
+
+ // BColor interface
+ bool areBColorsUsed() const;
+ void clearBColors();
+
+ // Normals interface
+ void transformNormals(const B3DHomMatrix& rMatrix);
+ bool areNormalsUsed() const;
+ void clearNormals();
+
+ // TextureCoordinate interface
+ void transformTextureCoordiantes(const B2DHomMatrix& rMatrix);
+ bool areTextureCoordinatesUsed() const;
+ void clearTextureCoordinates();
+
+ // insert/append single polygon
+ void insert(sal_uInt32 nIndex, const B3DPolygon& rPolygon, sal_uInt32 nCount = 1);
+ void append(const B3DPolygon& rPolygon, sal_uInt32 nCount = 1);
+
+ // insert/append multiple polygons
+ void insert(sal_uInt32 nIndex, const B3DPolyPolygon& rPolyPolygon);
+ void append(const B3DPolyPolygon& rPolyPolygon);
+
+ // remove
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount = 1);
+
+ // reset to empty state
+ void clear();
+
+ // closed state
+ bool isClosed() const;
+ void setClosed(bool bNew);
+
+ // flip polygon direction
+ void flip();
+
+ // test if PolyPolygon has double points
+ bool hasDoublePoints() const;
+
+ // remove double points, at the begin/end and follow-ups, too
+ void removeDoublePoints();
+
+ // apply transformation given in matrix form to the polygon
+ void transform(const basegfx::B3DHomMatrix& rMatrix);
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYGON_B3DPOLYPOLYGON_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx b/basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx
new file mode 100644
index 000000000000..10083f57dd60
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx
@@ -0,0 +1,157 @@
+/* -*- 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 _BGFX_POLYPOLYGON_B3DPOLYGONTOOLS_HXX
+#define _BGFX_POLYPOLYGON_B3DPOLYGONTOOLS_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <vector>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predefinitions
+ class B3DPolyPolygon;
+ class B3DRange;
+
+ namespace tools
+ {
+ // B3DPolyPolygon tools
+
+ // get size of PolyPolygon. Control vectors are included in that ranges.
+ B3DRange getRange(const B3DPolyPolygon& rCandidate);
+
+ /** Apply given LineDashing to given polyPolygon
+
+ For a description see applyLineDashing in b2dpolygontoos.hxx
+ */
+ void applyLineDashing(
+ const B3DPolyPolygon& rCandidate,
+ const ::std::vector<double>& rDotDashArray,
+ B3DPolyPolygon* pLineTarget,
+ B3DPolyPolygon* pGapTarget = 0,
+ double fFullDashDotLen = 0.0);
+
+ /** Create a unit 3D line polyPolygon which defines a cube.
+ */
+ B3DPolyPolygon createUnitCubePolyPolygon();
+
+ /** Create a unit 3D fill polyPolygon which defines a cube.
+ */
+ B3DPolyPolygon createUnitCubeFillPolyPolygon();
+
+ /** Create a 3D line polyPolygon from a B3DRange which defines a cube.
+ */
+ B3DPolyPolygon createCubePolyPolygonFromB3DRange( const B3DRange& rRange);
+
+ /** Create a 3D fill polyPolygon from a B3DRange which defines a cube.
+ */
+ B3DPolyPolygon createCubeFillPolyPolygonFromB3DRange( const B3DRange& rRange);
+
+ /** Create a unit 3D line polyPolygon which defines a sphere with the given count of hor and ver segments.
+ Result will be centered at (0.0, 0.0, 0.0) and sized [-1.0 .. 1.0] in all dimensions.
+ If nHorSeg == 0 and/or nVerSeg == 0, a default will be calculated to have a step at least each 15 degrees.
+ With VerStart, VerStop and hor range in cartesian may be specified to create a partial sphere only.
+ */
+ B3DPolyPolygon createUnitSpherePolyPolygon(
+ sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L,
+ double fVerStart = F_PI2, double fVerStop = -F_PI2,
+ double fHorStart = 0.0, double fHorStop = F_2PI);
+
+ /** Create a 3D line polyPolygon from a B3DRange which defines a sphere with the given count of hor and ver segments.
+ If nHorSeg == 0 and/or nVerSeg == 0, a default will be calculated to have a step at least each 15 degrees.
+ With VerStart, VerStop and hor range in cartesian may be specified to create a partial sphere only.
+ */
+ B3DPolyPolygon createSpherePolyPolygonFromB3DRange(
+ const B3DRange& rRange,
+ sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L,
+ double fVerStart = F_PI2, double fVerStop = -F_PI2,
+ double fHorStart = 0.0, double fHorStop = F_2PI);
+
+ /** same as createUnitSpherePolyPolygon, but creates filled polygons (closed and oriented)
+ There is one extra, the bool bNormals defines if normals will be set, default is false
+ */
+ B3DPolyPolygon createUnitSphereFillPolyPolygon(
+ sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L,
+ bool bNormals = false,
+ double fVerStart = F_PI2, double fVerStop = -F_PI2,
+ double fHorStart = 0.0, double fHorStop = F_2PI);
+
+ /** same as createSpherePolyPolygonFromB3DRange, but creates filled polygons (closed and oriented)
+ There is one extra, the bool bNormals defines if normals will be set, default is false
+ */
+ B3DPolyPolygon createSphereFillPolyPolygonFromB3DRange(
+ const B3DRange& rRange,
+ sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L,
+ bool bNormals = false,
+ double fVerStart = F_PI2, double fVerStop = -F_PI2,
+ double fHorStart = 0.0, double fHorStop = F_2PI);
+
+ /** Create/replace normals for given 3d geometry with default normals from given center to outside.
+ rCandidate: the 3d geometry to change
+ rCenter: the center of the 3d geometry
+ */
+ B3DPolyPolygon applyDefaultNormalsSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter);
+
+ /** invert normals for given 3d geometry.
+ */
+ B3DPolyPolygon invertNormals( const B3DPolyPolygon& rCandidate);
+
+ /** Create/replace texture coordinates for given 3d geometry with parallel projected one
+ rRange: the full range of the 3d geometry
+ If bChangeX, x texture coordinate will be recalculated.
+ If bChangeY, y texture coordinate will be recalculated.
+ */
+ B3DPolyPolygon applyDefaultTextureCoordinatesParallel( const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bChangeX = true, bool bChangeY = true);
+
+ /** Create/replace texture coordinates for given 3d geometry with spherical one
+ rCenter: the centre of the used 3d geometry
+ If bChangeX, x texture coordinate will be recalculated.
+ If bChangeY, y texture coordinate will be recalculated.
+ */
+ B3DPolyPolygon applyDefaultTextureCoordinatesSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX = true, bool bChangeY = true);
+
+ // isInside test for B3DPoint. On border is not inside as long as not true is given
+ // in bWithBorder flag. It is assumed that the orientations of the given polygon are correct.
+ bool isInside(const B3DPolyPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder = false);
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 3D PolyPolygons
+ bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB, const double& rfSmallValue);
+ bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+#endif /* _BGFX_POLYPOLYGON_B3DPOLYGONTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b1drange.hxx b/basegfx/inc/basegfx/range/b1drange.hxx
new file mode 100644
index 000000000000..feb48d336e9a
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b1drange.hxx
@@ -0,0 +1,168 @@
+/* -*- 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 _BGFX_RANGE_B1DRANGE_HXX
+#define _BGFX_RANGE_B1DRANGE_HXX
+
+#include <basegfx/range/basicrange.hxx>
+
+
+namespace basegfx
+{
+ class B1IRange;
+
+ class B1DRange
+ {
+ ::basegfx::BasicRange< double, DoubleTraits > maRange;
+
+ public:
+ B1DRange()
+ {
+ }
+
+ explicit B1DRange(double fStartValue)
+ : maRange(fStartValue)
+ {
+ }
+
+ B1DRange(double fStartValue1, double fStartValue2)
+ : maRange(fStartValue1)
+ {
+ expand(fStartValue2);
+ }
+
+ B1DRange(const B1DRange& rRange)
+ : maRange(rRange.maRange)
+ {
+ }
+
+ explicit B1DRange( const B1IRange& rRange );
+
+ bool isEmpty() const
+ {
+ return maRange.isEmpty();
+ }
+
+ void reset()
+ {
+ maRange.reset();
+ }
+
+ bool operator==( const B1DRange& rRange ) const
+ {
+ return (maRange == rRange.maRange);
+ }
+
+ bool operator!=( const B1DRange& rRange ) const
+ {
+ return (maRange != rRange.maRange);
+ }
+
+ B1DRange& operator=(const B1DRange& rRange)
+ {
+ maRange = rRange.maRange;
+ return *this;
+ }
+
+ bool equal(const B1DRange& rRange) const
+ {
+ return (maRange.equal(rRange.maRange));
+ }
+
+ double getMinimum() const
+ {
+ return maRange.getMinimum();
+ }
+
+ double getMaximum() const
+ {
+ return maRange.getMaximum();
+ }
+
+ double getRange() const
+ {
+ return maRange.getRange();
+ }
+
+ double getCenter() const
+ {
+ return maRange.getCenter();
+ }
+
+ bool isInside(double fValue) const
+ {
+ return maRange.isInside(fValue);
+ }
+
+ bool isInside(const B1DRange& rRange) const
+ {
+ return maRange.isInside(rRange.maRange);
+ }
+
+ bool overlaps(const B1DRange& rRange) const
+ {
+ return maRange.overlaps(rRange.maRange);
+ }
+
+ bool overlapsMore(const B1DRange& rRange) const
+ {
+ return maRange.overlapsMore(rRange.maRange);
+ }
+
+ void expand(double fValue)
+ {
+ maRange.expand(fValue);
+ }
+
+ void expand(const B1DRange& rRange)
+ {
+ maRange.expand(rRange.maRange);
+ }
+
+ void intersect(const B1DRange& rRange)
+ {
+ maRange.intersect(rRange.maRange);
+ }
+
+ void grow(double fValue)
+ {
+ maRange.grow(fValue);
+ }
+ };
+
+ /** Round double to nearest integer for 1D range
+
+ @return the nearest integer for this range
+ */
+ B1IRange fround(const B1DRange& rRange);
+} // end of namespace basegfx
+
+
+#endif /* _BGFX_RANGE_B1DRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b1ibox.hxx b/basegfx/inc/basegfx/range/b1ibox.hxx
new file mode 100644
index 000000000000..d2ef68b86e7a
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b1ibox.hxx
@@ -0,0 +1,146 @@
+/* -*- 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 _BGFX_RANGE_B1IBOX_HXX
+#define _BGFX_RANGE_B1IBOX_HXX
+
+#include <basegfx/range/basicbox.hxx>
+
+
+namespace basegfx
+{
+ class B1IBox
+ {
+ ::basegfx::BasicBox maRange;
+
+ public:
+ B1IBox()
+ {
+ }
+
+ explicit B1IBox(sal_Int32 nStartValue)
+ : maRange(nStartValue)
+ {
+ }
+
+ B1IBox(sal_Int32 nStartValue1, sal_Int32 nStartValue2)
+ : maRange(nStartValue1)
+ {
+ expand(nStartValue2);
+ }
+
+ B1IBox(const B1IBox& rBox)
+ : maRange(rBox.maRange)
+ {
+ }
+
+ bool isEmpty() const
+ {
+ return maRange.isEmpty();
+ }
+
+ void reset()
+ {
+ maRange.reset();
+ }
+
+ bool operator==( const B1IBox& rBox ) const
+ {
+ return (maRange == rBox.maRange);
+ }
+
+ bool operator!=( const B1IBox& rBox ) const
+ {
+ return (maRange != rBox.maRange);
+ }
+
+ void operator=(const B1IBox& rBox)
+ {
+ maRange = rBox.maRange;
+ }
+
+ sal_Int32 getMinimum() const
+ {
+ return maRange.getMinimum();
+ }
+
+ sal_Int32 getMaximum() const
+ {
+ return maRange.getMaximum();
+ }
+
+ Int32Traits::DifferenceType getRange() const
+ {
+ return maRange.getRange();
+ }
+
+ double getCenter() const
+ {
+ return maRange.getCenter();
+ }
+
+ bool isInside(sal_Int32 nValue) const
+ {
+ return maRange.isInside(nValue);
+ }
+
+ bool isInside(const B1IBox& rBox) const
+ {
+ return maRange.isInside(rBox.maRange);
+ }
+
+ bool overlaps(const B1IBox& rBox) const
+ {
+ return maRange.overlaps(rBox.maRange);
+ }
+
+ void expand(sal_Int32 nValue)
+ {
+ maRange.expand(nValue);
+ }
+
+ void expand(const B1IBox& rBox)
+ {
+ maRange.expand(rBox.maRange);
+ }
+
+ void intersect(const B1IBox& rBox)
+ {
+ maRange.intersect(rBox.maRange);
+ }
+
+ void grow(sal_Int32 nValue)
+ {
+ maRange.grow(nValue);
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_B1IBOX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b1irange.hxx b/basegfx/inc/basegfx/range/b1irange.hxx
new file mode 100644
index 000000000000..a503133f4b0f
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b1irange.hxx
@@ -0,0 +1,147 @@
+/* -*- 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 _BGFX_RANGE_B1IRANGE_HXX
+#define _BGFX_RANGE_B1IRANGE_HXX
+
+#include <basegfx/range/basicrange.hxx>
+
+
+namespace basegfx
+{
+ class B1IRange
+ {
+ ::basegfx::BasicRange< sal_Int32, Int32Traits > maRange;
+
+ public:
+ B1IRange()
+ {
+ }
+
+ explicit B1IRange(sal_Int32 nStartValue)
+ : maRange(nStartValue)
+ {
+ }
+
+ B1IRange(sal_Int32 nStartValue1, sal_Int32 nStartValue2)
+ : maRange(nStartValue1)
+ {
+ expand(nStartValue2);
+ }
+
+ B1IRange(const B1IRange& rRange)
+ : maRange(rRange.maRange)
+ {
+ }
+
+ bool isEmpty() const
+ {
+ return maRange.isEmpty();
+ }
+
+ void reset()
+ {
+ maRange.reset();
+ }
+
+ bool operator==( const B1IRange& rRange ) const
+ {
+ return (maRange == rRange.maRange);
+ }
+
+ bool operator!=( const B1IRange& rRange ) const
+ {
+ return (maRange != rRange.maRange);
+ }
+
+ B1IRange& operator=(const B1IRange& rRange)
+ {
+ maRange = rRange.maRange;
+ return *this;
+ }
+
+ sal_Int32 getMinimum() const
+ {
+ return maRange.getMinimum();
+ }
+
+ sal_Int32 getMaximum() const
+ {
+ return maRange.getMaximum();
+ }
+
+ Int32Traits::DifferenceType getRange() const
+ {
+ return maRange.getRange();
+ }
+
+ double getCenter() const
+ {
+ return maRange.getCenter();
+ }
+
+ bool isInside(sal_Int32 nValue) const
+ {
+ return maRange.isInside(nValue);
+ }
+
+ bool isInside(const B1IRange& rRange) const
+ {
+ return maRange.isInside(rRange.maRange);
+ }
+
+ bool overlaps(const B1IRange& rRange) const
+ {
+ return maRange.overlaps(rRange.maRange);
+ }
+
+ void expand(sal_Int32 nValue)
+ {
+ maRange.expand(nValue);
+ }
+
+ void expand(const B1IRange& rRange)
+ {
+ maRange.expand(rRange.maRange);
+ }
+
+ void intersect(const B1IRange& rRange)
+ {
+ maRange.intersect(rRange.maRange);
+ }
+
+ void grow(sal_Int32 nValue)
+ {
+ maRange.grow(nValue);
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_B1IRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2dconnectedranges.hxx b/basegfx/inc/basegfx/range/b2dconnectedranges.hxx
new file mode 100644
index 000000000000..6949918fa2ef
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2dconnectedranges.hxx
@@ -0,0 +1,266 @@
+/* -*- 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 _BGFX_RANGE_B2DCONNECTEDRANGES_HXX
+#define _BGFX_RANGE_B2DCONNECTEDRANGES_HXX
+
+#include <osl/diagnose.h>
+#include <basegfx/range/b2drange.hxx>
+#include <list>
+#include <utility>
+#include <algorithm>
+
+
+namespace basegfx
+{
+ /** Calculate connected ranges from input ranges.
+
+ This template constructs a list of connected ranges from the
+ given input ranges. That is, the output will contain a set of
+ ranges, itself containing a number of input ranges, which will
+ be mutually non-intersecting.
+
+ Example:
+ <code>
+ -------------------
+ | -------|
+ | | ||
+ | --- | ||
+ | | | -------| --------
+ | | +--------- | | |
+ | --+ | | | |
+ | | | | --------
+ | ---------- |
+ -------------------
+ </code
+
+ Here, the outer rectangles represent the output
+ ranges. Contained are the input rectangles that comprise these
+ output ranges.
+
+ @tpl UserData
+ User data to be stored along with the range, to later identify
+ which range went into which connected component. Must be
+ assignable, default- and copy-constructible.
+ */
+ template< typename UserData > class B2DConnectedRanges
+ {
+ public:
+ /// Type of the basic entity (rect + user data)
+ typedef ::std::pair< B2DRange, UserData > ComponentType;
+ typedef ::std::list< ComponentType > ComponentListType;
+
+ /// List of (intersecting) components, plus overall bounds
+ struct ConnectedComponents
+ {
+ ComponentListType maComponentList;
+ B2DRange maTotalBounds;
+ };
+
+ typedef ::std::list< ConnectedComponents > ConnectedComponentsType;
+
+
+ /// Create the range calculator
+ B2DConnectedRanges() :
+ maDisjunctAggregatesList(),
+ maTotalBounds()
+ {
+ }
+
+ /** Query total bounds of all added ranges.
+
+ @return the union bound rect over all added ranges.
+ */
+ B2DRange getBounds() const
+ {
+ return maTotalBounds;
+ }
+
+ /** Add an additional range.
+
+ This method integrates a new range into the connected
+ ranges lists. The method has a worst-case time complexity
+ of O(n^2), with n denoting the number of already added
+ ranges (typically, for well-behaved input, it is O(n)
+ though).
+ */
+ void addRange( const B2DRange& rRange,
+ const UserData& rUserData )
+ {
+ // check whether fast path is possible: if new range is
+ // outside accumulated total range, can add it as a
+ // separate component right away.
+ const bool bNotOutsideEverything(
+ maTotalBounds.overlaps( rRange ) );
+
+ // update own global bounds range
+ maTotalBounds.expand( rRange );
+
+ // assemble anything intersecting with rRange into
+ // this new connected component
+ ConnectedComponents aNewConnectedComponent;
+
+ // as at least rRange will be a member of
+ // aNewConnectedComponent (will be added below), can
+ // preset the overall bounds here.
+ aNewConnectedComponent.maTotalBounds = rRange;
+
+
+ //
+ // STAGE 1: Search for intersecting maDisjunctAggregatesList entries
+ // =================================================================
+ //
+
+ // if rRange is empty, it will intersect with no
+ // maDisjunctAggregatesList member. Thus, we can safe us
+ // the check.
+ // if rRange is outside all other rectangle, skip here,
+ // too
+ if( bNotOutsideEverything &&
+ !rRange.isEmpty() )
+ {
+ typename ConnectedComponentsType::iterator aCurrAggregate;
+ typename ConnectedComponentsType::iterator aLastAggregate;
+
+ // flag, determining whether we touched one or more of
+ // the maDisjunctAggregatesList entries. _If_ we did,
+ // we have to repeat the intersection process, because
+ // these changes might have generated new
+ // intersections.
+ bool bSomeAggregatesChanged;
+
+ // loop, until bSomeAggregatesChanged stays false
+ do
+ {
+ // only continue loop if 'intersects' branch below was hit
+ bSomeAggregatesChanged = false;
+
+ // iterate over all current members of maDisjunctAggregatesList
+ for( aCurrAggregate=maDisjunctAggregatesList.begin(),
+ aLastAggregate=maDisjunctAggregatesList.end();
+ aCurrAggregate != aLastAggregate; )
+ {
+ // first check if current component's bounds
+ // are empty. This ensures that distinct empty
+ // components are not merged into one
+ // aggregate. As a matter of fact, they have
+ // no position and size.
+
+ if( !aCurrAggregate->maTotalBounds.isEmpty() &&
+ aCurrAggregate->maTotalBounds.overlaps(
+ aNewConnectedComponent.maTotalBounds ) )
+ {
+ // union the intersecting
+ // maDisjunctAggregatesList element into
+ // aNewConnectedComponent
+
+ // calc union bounding box
+ aNewConnectedComponent.maTotalBounds.expand( aCurrAggregate->maTotalBounds );
+
+ // extract all aCurrAggregate components
+ // to aNewConnectedComponent
+ aNewConnectedComponent.maComponentList.splice(
+ aNewConnectedComponent.maComponentList.end(),
+ aCurrAggregate->maComponentList );
+
+ // remove and delete aCurrAggregate entry
+ // from list (we've gutted it's content
+ // above). list::erase() will update our
+ // iterator with the predecessor here.
+ aCurrAggregate = maDisjunctAggregatesList.erase( aCurrAggregate );
+
+ // at least one aggregate changed, need to rescan everything
+ bSomeAggregatesChanged = true;
+ }
+ else
+ {
+ aCurrAggregate++;
+ }
+ }
+ }
+ while( bSomeAggregatesChanged );
+ }
+
+ //
+ // STAGE 2: Add newly generated connected component list element
+ // =============================================================
+ //
+
+ // add new component to the end of the component list
+ aNewConnectedComponent.maComponentList.push_back(
+ ComponentType( rRange, rUserData ) );
+
+ // do some consistency checks (aka post conditions)
+ OSL_ENSURE( !aNewConnectedComponent.maComponentList.empty(),
+ "B2DConnectedRanges::addRange(): empty aggregate list" );
+ OSL_ENSURE( !aNewConnectedComponent.maTotalBounds.isEmpty() ||
+ (aNewConnectedComponent.maTotalBounds.isEmpty() &&
+ aNewConnectedComponent.maComponentList.size() == 1),
+ "B2DConnectedRanges::addRange(): empty ranges must be solitary");
+
+ // add aNewConnectedComponent as a new entry to
+ // maDisjunctAggregatesList
+ maDisjunctAggregatesList.push_back( aNewConnectedComponent );
+ }
+
+ /** Apply a functor to each of the disjunct component
+ aggregates.
+
+ @param aFunctor
+ Functor to apply. Must provide an operator( const ConnectedComponents& ).
+
+ @return a copy of the functor, as applied to all aggregates.
+ */
+ template< typename UnaryFunctor > UnaryFunctor forEachAggregate( UnaryFunctor aFunctor ) const
+ {
+ return ::std::for_each( maDisjunctAggregatesList.begin(),
+ maDisjunctAggregatesList.end(),
+ aFunctor );
+ }
+
+ private:
+ // default: disabled copy/assignment
+ B2DConnectedRanges(const B2DConnectedRanges&);
+ B2DConnectedRanges& operator=( const B2DConnectedRanges& );
+
+ /** Current list of disjunct sets of connected components
+
+ Each entry corresponds to one of the top-level rectangles
+ in the drawing above.
+ */
+ ConnectedComponentsType maDisjunctAggregatesList;
+
+ /** Global bound rect over all added ranges.
+ */
+ B2DRange maTotalBounds;
+ };
+}
+
+#endif /* _BGFX_RANGE_B2DCONNECTEDRANGES_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2dpolyrange.hxx b/basegfx/inc/basegfx/range/b2dpolyrange.hxx
new file mode 100644
index 000000000000..5ce105da980b
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2dpolyrange.hxx
@@ -0,0 +1,148 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.hxx,v $
+ * $Revision: 1.6 $
+ *
+ * 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 _BGFX_RANGE_B2DPOLYRANGE_HXX
+#define _BGFX_RANGE_B2DPOLYRANGE_HXX
+
+#include <o3tl/cow_wrapper.hxx>
+#include <boost/tuple/tuple.hpp>
+#include <basegfx/vector/b2enums.hxx>
+
+namespace basegfx
+{
+ class B2DTuple;
+ class B2DRange;
+ class B2DPolyPolygon;
+ class ImplB2DPolyRange;
+
+ /** Multiple ranges in one object.
+
+ This class combines multiple ranges in one object, providing a
+ total, enclosing range for it.
+
+ You can use this class e.g. when updating views containing
+ rectangular objects. Add each modified object to a
+ B2DMultiRange, then test each viewable object against
+ intersection with the multi range.
+
+ Similar in spirit to the poly-polygon vs. polygon relationship.
+
+ Note that comparable to polygons, a poly-range can also
+ contain 'holes' - this is encoded via polygon orientation at
+ the poly-polygon, and via explicit flags for the poly-range.
+ */
+ class B2DPolyRange
+ {
+ public:
+ typedef boost::tuple<B2DRange,B2VectorOrientation> ElementType ;
+
+ B2DPolyRange();
+ ~B2DPolyRange();
+
+ /** Create a multi range with exactly one containing range
+ */
+ explicit B2DPolyRange( const ElementType& rElement );
+ B2DPolyRange( const B2DRange& rRange, B2VectorOrientation eOrient );
+ B2DPolyRange( const B2DPolyRange& );
+ B2DPolyRange& operator=( const B2DPolyRange& );
+
+ /// unshare this poly-range with all internally shared instances
+ void makeUnique();
+
+ bool operator==(const B2DPolyRange&) const;
+ bool operator!=(const B2DPolyRange&) const;
+
+ /// Number of included ranges
+ sal_uInt32 count() const;
+
+ ElementType getElement(sal_uInt32 nIndex) const;
+ void setElement(sal_uInt32 nIndex, const ElementType& rElement );
+ void setElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient );
+
+ // insert/append a single range
+ void insertElement(sal_uInt32 nIndex, const ElementType& rElement, sal_uInt32 nCount = 1);
+ void insertElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount = 1);
+ void appendElement(const ElementType& rElement, sal_uInt32 nCount = 1);
+ void appendElement(const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount = 1);
+
+ // insert/append multiple ranges
+ void insertPolyRange(sal_uInt32 nIndex, const B2DPolyRange&);
+ void appendPolyRange(const B2DPolyRange&);
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount = 1);
+ void clear();
+
+ // flip range orientations - converts holes to solids, and vice versa
+ void flip();
+
+ /** Get overall range
+
+ @return
+ The union range of all contained ranges
+ */
+ B2DRange getBounds() const;
+
+ /** Test whether given tuple is inside one or more of the
+ included ranges. Does *not* use overall range, but checks
+ individually.
+ */
+ bool isInside( const B2DTuple& rTuple ) const;
+
+ /** Test whether given range is inside one or more of the
+ included ranges. Does *not* use overall range, but checks
+ individually.
+ */
+ bool isInside( const B2DRange& rRange ) const;
+
+ /** Test whether given range overlaps one or more of the
+ included ranges. Does *not* use overall range, but checks
+ individually.
+ */
+ bool overlaps( const B2DRange& rRange ) const;
+
+ /** Request a poly-polygon with solved cross-overs
+ */
+ B2DPolyPolygon solveCrossovers() const;
+
+ // element iterators (same iterator validity conditions as for vector)
+ const B2DRange* begin() const;
+ const B2DRange* end() const;
+ B2DRange* begin();
+ B2DRange* end();
+
+ private:
+ o3tl::cow_wrapper< ImplB2DPolyRange > mpImpl;
+ };
+}
+
+#endif /* _BGFX_RANGE_B2DPOLYRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2drange.hxx b/basegfx/inc/basegfx/range/b2drange.hxx
new file mode 100644
index 000000000000..8d78f1141298
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2drange.hxx
@@ -0,0 +1,298 @@
+/* -*- 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 _BGFX_RANGE_B2DRANGE_HXX
+#define _BGFX_RANGE_B2DRANGE_HXX
+
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/range/basicrange.hxx>
+#include <vector>
+
+
+namespace basegfx
+{
+ // predeclarations
+ class B2IRange;
+ class B2DHomMatrix;
+
+ class B2DRange
+ {
+ public:
+ typedef double ValueType;
+ typedef DoubleTraits TraitsType;
+
+ B2DRange()
+ {
+ }
+
+ explicit B2DRange(const B2DTuple& rTuple)
+ : maRangeX(rTuple.getX()),
+ maRangeY(rTuple.getY())
+ {
+ }
+
+ B2DRange(double x1,
+ double y1,
+ double x2,
+ double y2)
+ : maRangeX(x1),
+ maRangeY(y1)
+ {
+ maRangeX.expand(x2);
+ maRangeY.expand(y2);
+ }
+
+ B2DRange(const B2DTuple& rTuple1,
+ const B2DTuple& rTuple2)
+ : maRangeX(rTuple1.getX()),
+ maRangeY(rTuple1.getY())
+ {
+ expand( rTuple2 );
+ }
+
+ B2DRange(const B2DRange& rRange)
+ : maRangeX(rRange.maRangeX),
+ maRangeY(rRange.maRangeY)
+ {
+ }
+
+ explicit B2DRange(const B2IRange& rRange);
+
+ bool isEmpty() const
+ {
+ return (
+ maRangeX.isEmpty()
+ || maRangeY.isEmpty()
+ );
+ }
+
+ void reset()
+ {
+ maRangeX.reset();
+ maRangeY.reset();
+ }
+
+ bool operator==( const B2DRange& rRange ) const
+ {
+ return (maRangeX == rRange.maRangeX
+ && maRangeY == rRange.maRangeY);
+ }
+
+ bool operator!=( const B2DRange& rRange ) const
+ {
+ return (maRangeX != rRange.maRangeX
+ || maRangeY != rRange.maRangeY);
+ }
+
+ B2DRange& operator=(const B2DRange& rRange)
+ {
+ maRangeX = rRange.maRangeX;
+ maRangeY = rRange.maRangeY;
+ return *this;
+ }
+
+ bool equal(const B2DRange& rRange) const
+ {
+ return (maRangeX.equal(rRange.maRangeX)
+ && maRangeY.equal(rRange.maRangeY));
+ }
+
+ double getMinX() const
+ {
+ return maRangeX.getMinimum();
+ }
+
+ double getMinY() const
+ {
+ return maRangeY.getMinimum();
+ }
+
+ double getMaxX() const
+ {
+ return maRangeX.getMaximum();
+ }
+
+ double getMaxY() const
+ {
+ return maRangeY.getMaximum();
+ }
+
+ double getWidth() const
+ {
+ return maRangeX.getRange();
+ }
+
+ double getHeight() const
+ {
+ return maRangeY.getRange();
+ }
+
+ B2DPoint getMinimum() const
+ {
+ return B2DPoint(
+ maRangeX.getMinimum(),
+ maRangeY.getMinimum()
+ );
+ }
+
+ B2DPoint getMaximum() const
+ {
+ return B2DPoint(
+ maRangeX.getMaximum(),
+ maRangeY.getMaximum()
+ );
+ }
+
+ B2DVector getRange() const
+ {
+ return B2DVector(
+ maRangeX.getRange(),
+ maRangeY.getRange()
+ );
+ }
+
+ B2DPoint getCenter() const
+ {
+ return B2DPoint(
+ maRangeX.getCenter(),
+ maRangeY.getCenter()
+ );
+ }
+
+ double getCenterX() const
+ {
+ return maRangeX.getCenter();
+ }
+
+ double getCenterY() const
+ {
+ return maRangeY.getCenter();
+ }
+
+ bool isInside(const B2DTuple& rTuple) const
+ {
+ return (
+ maRangeX.isInside(rTuple.getX())
+ && maRangeY.isInside(rTuple.getY())
+ );
+ }
+
+ bool isInside(const B2DRange& rRange) const
+ {
+ return (
+ maRangeX.isInside(rRange.maRangeX)
+ && maRangeY.isInside(rRange.maRangeY)
+ );
+ }
+
+ bool overlaps(const B2DRange& rRange) const
+ {
+ return (
+ maRangeX.overlaps(rRange.maRangeX)
+ && maRangeY.overlaps(rRange.maRangeY)
+ );
+ }
+
+ bool overlapsMore(const B2DRange& rRange) const
+ {
+ return (
+ maRangeX.overlapsMore(rRange.maRangeX)
+ && maRangeY.overlapsMore(rRange.maRangeY)
+ );
+ }
+
+ void expand(const B2DTuple& rTuple)
+ {
+ maRangeX.expand(rTuple.getX());
+ maRangeY.expand(rTuple.getY());
+ }
+
+ void expand(const B2DRange& rRange)
+ {
+ maRangeX.expand(rRange.maRangeX);
+ maRangeY.expand(rRange.maRangeY);
+ }
+
+ void intersect(const B2DRange& rRange)
+ {
+ maRangeX.intersect(rRange.maRangeX);
+ maRangeY.intersect(rRange.maRangeY);
+ }
+
+ void grow(double fValue)
+ {
+ maRangeX.grow(fValue);
+ maRangeY.grow(fValue);
+ }
+
+ void transform(const B2DHomMatrix& rMatrix);
+
+ private:
+ typedef ::basegfx::BasicRange< ValueType, TraitsType > MyBasicRange;
+
+ MyBasicRange maRangeX;
+ MyBasicRange maRangeY;
+ };
+
+ /** Round double to nearest integer for 2D range
+
+ @return the nearest integer for this range
+ */
+ B2IRange fround(const B2DRange& rRange);
+
+ /** Compute the set difference of the two given ranges
+
+ This method calculates the symmetric difference (aka XOR)
+ between the two given ranges, and returning the resulting
+ ranges. Thus, the result will contain all areas where one, but
+ not both ranges lie.
+
+ @param o_rResult
+ Result vector. The up to four difference ranges are returned
+ within this vector
+
+ @param rFirst
+ The first range
+
+ @param rSecond
+ The second range
+
+ @return the input vector
+ */
+ ::std::vector< B2DRange >& computeSetDifference( ::std::vector< B2DRange >& o_rResult,
+ const B2DRange& rFirst,
+ const B2DRange& rSecond );
+
+} // end of namespace basegfx
+
+
+#endif /* _BGFX_RANGE_B2DRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2drangeclipper.hxx b/basegfx/inc/basegfx/range/b2drangeclipper.hxx
new file mode 100644
index 000000000000..146273d5d21d
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2drangeclipper.hxx
@@ -0,0 +1,56 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.hxx,v $
+ * $Revision: 1.6 $
+ *
+ * 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 _BGFX_RANGE_B2DRANGECLIPPER_HXX
+#define _BGFX_RANGE_B2DRANGECLIPPER_HXX
+
+#include <basegfx/range/b2dpolyrange.hxx>
+#include <vector>
+
+namespace basegfx
+{
+ namespace tools
+ {
+ /** Extract poly-polygon w/o self-intersections from poly-range
+
+ Similar to the solveCrossovers(const B2DPolyPolygon&)
+ method, this one calculates a self-intersection-free
+ poly-polygon with the same topology, and encoding
+ inside/outsidedness via polygon orientation and layering.
+ */
+ B2DPolyPolygon solveCrossovers(const std::vector<B2DRange>& rRanges,
+ const std::vector<B2VectorOrientation>& rOrientations);
+ }
+}
+
+#endif /* _BGFX_RANGE_B2DRANGECLIPPER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2drectangle.hxx b/basegfx/inc/basegfx/range/b2drectangle.hxx
new file mode 100644
index 000000000000..c00d13256cea
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2drectangle.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_RANGE_B2DRECTANGLE_HXX
+#define _BGFX_RANGE_B2DRECTANGLE_HXX
+
+#include <basegfx/range/b2drange.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B2DRange exactly models a Rectangle, thus,
+ // for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B2DRange B2DRectangle;
+}
+
+#endif /* _BGFX_RANGE_B2DRECTANGLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2ibox.hxx b/basegfx/inc/basegfx/range/b2ibox.hxx
new file mode 100644
index 000000000000..1e2c790dc51d
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2ibox.hxx
@@ -0,0 +1,254 @@
+/* -*- 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 _BGFX_RANGE_B2IBOX_HXX
+#define _BGFX_RANGE_B2IBOX_HXX
+
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/tuple/b2i64tuple.hxx>
+#include <basegfx/range/basicbox.hxx>
+#include <vector>
+
+
+namespace basegfx
+{
+ class B2IBox
+ {
+ public:
+ typedef sal_Int32 ValueType;
+ typedef Int32Traits TraitsType;
+
+ B2IBox()
+ {
+ }
+
+ explicit B2IBox(const B2ITuple& rTuple)
+ : maRangeX(rTuple.getX()),
+ maRangeY(rTuple.getY())
+ {
+ }
+
+ B2IBox(sal_Int32 x1,
+ sal_Int32 y1,
+ sal_Int32 x2,
+ sal_Int32 y2) :
+ maRangeX(x1),
+ maRangeY(y1)
+ {
+ maRangeX.expand(x2);
+ maRangeY.expand(y2);
+ }
+
+ B2IBox(const B2ITuple& rTuple1,
+ const B2ITuple& rTuple2) :
+ maRangeX(rTuple1.getX()),
+ maRangeY(rTuple1.getY())
+ {
+ expand( rTuple2 );
+ }
+
+ B2IBox(const B2IBox& rBox) :
+ maRangeX(rBox.maRangeX),
+ maRangeY(rBox.maRangeY)
+ {
+ }
+
+ bool isEmpty() const
+ {
+ return maRangeX.isEmpty() || maRangeY.isEmpty();
+ }
+
+ void reset()
+ {
+ maRangeX.reset();
+ maRangeY.reset();
+ }
+
+ bool operator==( const B2IBox& rBox ) const
+ {
+ return (maRangeX == rBox.maRangeX
+ && maRangeY == rBox.maRangeY);
+ }
+
+ bool operator!=( const B2IBox& rBox ) const
+ {
+ return (maRangeX != rBox.maRangeX
+ || maRangeY != rBox.maRangeY);
+ }
+
+ void operator=(const B2IBox& rBox)
+ {
+ maRangeX = rBox.maRangeX;
+ maRangeY = rBox.maRangeY;
+ }
+
+ sal_Int32 getMinX() const
+ {
+ return maRangeX.getMinimum();
+ }
+
+ sal_Int32 getMinY() const
+ {
+ return maRangeY.getMinimum();
+ }
+
+ sal_Int32 getMaxX() const
+ {
+ return maRangeX.getMaximum();
+ }
+
+ sal_Int32 getMaxY() const
+ {
+ return maRangeY.getMaximum();
+ }
+
+ sal_Int64 getWidth() const
+ {
+ return maRangeX.getRange();
+ }
+
+ sal_Int64 getHeight() const
+ {
+ return maRangeY.getRange();
+ }
+
+ B2IPoint getMinimum() const
+ {
+ return B2IPoint(
+ maRangeX.getMinimum(),
+ maRangeY.getMinimum()
+ );
+ }
+
+ B2IPoint getMaximum() const
+ {
+ return B2IPoint(
+ maRangeX.getMaximum(),
+ maRangeY.getMaximum()
+ );
+ }
+
+ B2I64Tuple getRange() const
+ {
+ return B2I64Tuple(
+ maRangeX.getRange(),
+ maRangeY.getRange()
+ );
+ }
+
+ B2DPoint getCenter() const
+ {
+ return B2DPoint(
+ maRangeX.getCenter(),
+ maRangeY.getCenter()
+ );
+ }
+
+ bool isInside(const B2ITuple& rTuple) const
+ {
+ return (
+ maRangeX.isInside(rTuple.getX())
+ && maRangeY.isInside(rTuple.getY())
+ );
+ }
+
+ bool isInside(const B2IBox& rBox) const
+ {
+ return (
+ maRangeX.isInside(rBox.maRangeX)
+ && maRangeY.isInside(rBox.maRangeY)
+ );
+ }
+
+ bool overlaps(const B2IBox& rBox) const
+ {
+ return (
+ maRangeX.overlaps(rBox.maRangeX)
+ && maRangeY.overlaps(rBox.maRangeY)
+ );
+ }
+
+ void expand(const B2ITuple& rTuple)
+ {
+ maRangeX.expand(rTuple.getX());
+ maRangeY.expand(rTuple.getY());
+ }
+
+ void expand(const B2IBox& rBox)
+ {
+ maRangeX.expand(rBox.maRangeX);
+ maRangeY.expand(rBox.maRangeY);
+ }
+
+ void intersect(const B2IBox& rBox)
+ {
+ maRangeX.intersect(rBox.maRangeX);
+ maRangeY.intersect(rBox.maRangeY);
+ }
+
+ void grow(sal_Int32 nValue)
+ {
+ maRangeX.grow(nValue);
+ maRangeY.grow(nValue);
+ }
+
+ private:
+ BasicBox maRangeX;
+ BasicBox maRangeY;
+ };
+
+ /** Compute the set difference of the two given boxes
+
+ This method calculates the symmetric difference (aka XOR)
+ between the two given boxes, and returning the resulting
+ boxes. Thus, the result will contain all areas where one, but
+ not both boxes lie.
+
+ @param o_rResult
+ Result vector. The up to four difference boxes are returned
+ within this vector
+
+ @param rFirst
+ The first box
+
+ @param rSecond
+ The second box
+
+ @return the input vector
+ */
+ ::std::vector< B2IBox >& computeSetDifference( ::std::vector< B2IBox >& o_rResult,
+ const B2IBox& rFirst,
+ const B2IBox& rSecond );
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_B2IBOX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2irange.hxx b/basegfx/inc/basegfx/range/b2irange.hxx
new file mode 100644
index 000000000000..5378e487ba95
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2irange.hxx
@@ -0,0 +1,257 @@
+/* -*- 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 _BGFX_RANGE_B2IRANGE_HXX
+#define _BGFX_RANGE_B2IRANGE_HXX
+
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/tuple/b2i64tuple.hxx>
+#include <basegfx/range/basicrange.hxx>
+#include <vector>
+
+
+namespace basegfx
+{
+ class B2IRange
+ {
+ public:
+ typedef sal_Int32 ValueType;
+ typedef Int32Traits TraitsType;
+
+ B2IRange()
+ {
+ }
+
+ explicit B2IRange(const B2ITuple& rTuple)
+ : maRangeX(rTuple.getX()),
+ maRangeY(rTuple.getY())
+ {
+ }
+
+ B2IRange(sal_Int32 x1,
+ sal_Int32 y1,
+ sal_Int32 x2,
+ sal_Int32 y2)
+ : maRangeX(x1),
+ maRangeY(y1)
+ {
+ maRangeX.expand(x2);
+ maRangeY.expand(y2);
+ }
+
+ B2IRange(const B2ITuple& rTuple1,
+ const B2ITuple& rTuple2)
+ : maRangeX(rTuple1.getX()),
+ maRangeY(rTuple1.getY())
+ {
+ expand( rTuple2 );
+ }
+
+ B2IRange(const B2IRange& rRange)
+ : maRangeX(rRange.maRangeX),
+ maRangeY(rRange.maRangeY)
+ {
+ }
+
+ bool isEmpty() const
+ {
+ return maRangeX.isEmpty() || maRangeY.isEmpty();
+ }
+
+ void reset()
+ {
+ maRangeX.reset();
+ maRangeY.reset();
+ }
+
+ bool operator==( const B2IRange& rRange ) const
+ {
+ return (maRangeX == rRange.maRangeX
+ && maRangeY == rRange.maRangeY);
+ }
+
+ bool operator!=( const B2IRange& rRange ) const
+ {
+ return (maRangeX != rRange.maRangeX
+ || maRangeY != rRange.maRangeY);
+ }
+
+ B2IRange& operator=(const B2IRange& rRange)
+ {
+ maRangeX = rRange.maRangeX;
+ maRangeY = rRange.maRangeY;
+ return *this;
+ }
+
+ sal_Int32 getMinX() const
+ {
+ return maRangeX.getMinimum();
+ }
+
+ sal_Int32 getMinY() const
+ {
+ return maRangeY.getMinimum();
+ }
+
+ sal_Int32 getMaxX() const
+ {
+ return maRangeX.getMaximum();
+ }
+
+ sal_Int32 getMaxY() const
+ {
+ return maRangeY.getMaximum();
+ }
+
+ sal_Int64 getWidth() const
+ {
+ return maRangeX.getRange();
+ }
+
+ sal_Int64 getHeight() const
+ {
+ return maRangeY.getRange();
+ }
+
+ B2IPoint getMinimum() const
+ {
+ return B2IPoint(
+ maRangeX.getMinimum(),
+ maRangeY.getMinimum()
+ );
+ }
+
+ B2IPoint getMaximum() const
+ {
+ return B2IPoint(
+ maRangeX.getMaximum(),
+ maRangeY.getMaximum()
+ );
+ }
+
+ B2I64Tuple getRange() const
+ {
+ return B2I64Tuple(
+ maRangeX.getRange(),
+ maRangeY.getRange()
+ );
+ }
+
+ B2DPoint getCenter() const
+ {
+ return B2DPoint(
+ maRangeX.getCenter(),
+ maRangeY.getCenter()
+ );
+ }
+
+ bool isInside(const B2ITuple& rTuple) const
+ {
+ return (
+ maRangeX.isInside(rTuple.getX())
+ && maRangeY.isInside(rTuple.getY())
+ );
+ }
+
+ bool isInside(const B2IRange& rRange) const
+ {
+ return (
+ maRangeX.isInside(rRange.maRangeX)
+ && maRangeY.isInside(rRange.maRangeY)
+ );
+ }
+
+ bool overlaps(const B2IRange& rRange) const
+ {
+ return (
+ maRangeX.overlaps(rRange.maRangeX)
+ && maRangeY.overlaps(rRange.maRangeY)
+ );
+ }
+
+ void expand(const B2ITuple& rTuple)
+ {
+ maRangeX.expand(rTuple.getX());
+ maRangeY.expand(rTuple.getY());
+ }
+
+ void expand(const B2IRange& rRange)
+ {
+ maRangeX.expand(rRange.maRangeX);
+ maRangeY.expand(rRange.maRangeY);
+ }
+
+ void intersect(const B2IRange& rRange)
+ {
+ maRangeX.intersect(rRange.maRangeX);
+ maRangeY.intersect(rRange.maRangeY);
+ }
+
+ void grow(sal_Int32 nValue)
+ {
+ maRangeX.grow(nValue);
+ maRangeY.grow(nValue);
+ }
+
+ private:
+ typedef ::basegfx::BasicRange< ValueType, TraitsType > MyBasicRange;
+
+ MyBasicRange maRangeX;
+ MyBasicRange maRangeY;
+ };
+
+ /** Compute the set difference of the two given ranges
+
+ This method calculates the symmetric difference (aka XOR)
+ between the two given ranges, and returning the resulting
+ ranges. Thus, the result will contain all areas where one, but
+ not both ranges lie.
+
+ @param o_rResult
+ Result vector. The up to four difference ranges are returned
+ within this vector
+
+ @param rFirst
+ The first range
+
+ @param rSecond
+ The second range
+
+ @return the input vector
+ */
+ ::std::vector< B2IRange >& computeSetDifference( ::std::vector< B2IRange >& o_rResult,
+ const B2IRange& rFirst,
+ const B2IRange& rSecond );
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_B2IRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b2irectangle.hxx b/basegfx/inc/basegfx/range/b2irectangle.hxx
new file mode 100644
index 000000000000..2abc954e0196
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2irectangle.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_RANGE_B2IRECTANGLE_HXX
+#define _BGFX_RANGE_B2IRECTANGLE_HXX
+
+#include <basegfx/range/b2irange.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B2IRange exactly models a Rectangle, thus,
+ // for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B2IRange B2IRectangle;
+}
+
+#endif /* _BGFX_RANGE_B2IRECTANGLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b3drange.hxx b/basegfx/inc/basegfx/range/b3drange.hxx
new file mode 100644
index 000000000000..8e1cf8aa9f02
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b3drange.hxx
@@ -0,0 +1,305 @@
+/* -*- 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 _BGFX_RANGE_B3DRANGE_HXX
+#define _BGFX_RANGE_B3DRANGE_HXX
+
+#include <basegfx/vector/b3dvector.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <basegfx/range/basicrange.hxx>
+
+namespace basegfx
+{
+ // predeclarations
+ class B3IRange;
+ class B3DHomMatrix;
+
+ class B3DRange
+ {
+ typedef ::basegfx::BasicRange< double, DoubleTraits > MyBasicRange;
+
+ MyBasicRange maRangeX;
+ MyBasicRange maRangeY;
+ MyBasicRange maRangeZ;
+
+ public:
+ B3DRange()
+ {
+ }
+
+ explicit B3DRange(const B3DTuple& rTuple)
+ : maRangeX(rTuple.getX()),
+ maRangeY(rTuple.getY()),
+ maRangeZ(rTuple.getZ())
+ {
+ }
+
+ B3DRange(double x1,
+ double y1,
+ double z1,
+ double x2,
+ double y2,
+ double z2)
+ : maRangeX(x1),
+ maRangeY(y1),
+ maRangeZ(z1)
+ {
+ maRangeX.expand(x2);
+ maRangeY.expand(y2);
+ maRangeZ.expand(z2);
+ }
+
+ B3DRange(const B3DTuple& rTuple1,
+ const B3DTuple& rTuple2)
+ : maRangeX(rTuple1.getX()),
+ maRangeY(rTuple1.getY()),
+ maRangeZ(rTuple1.getZ())
+ {
+ expand(rTuple2);
+ }
+
+ B3DRange(const B3DRange& rRange)
+ : maRangeX(rRange.maRangeX),
+ maRangeY(rRange.maRangeY),
+ maRangeZ(rRange.maRangeZ)
+ {
+ }
+
+ explicit B3DRange(const B3IRange& rRange);
+
+ bool isEmpty() const
+ {
+ return (
+ maRangeX.isEmpty()
+ || maRangeY.isEmpty()
+ || maRangeZ.isEmpty()
+ );
+ }
+
+ void reset()
+ {
+ maRangeX.reset();
+ maRangeY.reset();
+ maRangeZ.reset();
+ }
+
+ bool operator==( const B3DRange& rRange ) const
+ {
+ return (maRangeX == rRange.maRangeX
+ && maRangeY == rRange.maRangeY
+ && maRangeZ == rRange.maRangeZ);
+ }
+
+ bool operator!=( const B3DRange& rRange ) const
+ {
+ return (maRangeX != rRange.maRangeX
+ || maRangeY != rRange.maRangeY
+ || maRangeZ != rRange.maRangeZ);
+ }
+
+ B3DRange& operator=(const B3DRange& rRange)
+ {
+ maRangeX = rRange.maRangeX;
+ maRangeY = rRange.maRangeY;
+ maRangeZ = rRange.maRangeZ;
+ return *this;
+ }
+
+ bool equal(const B3DRange& rRange) const
+ {
+ return (maRangeX.equal(rRange.maRangeX)
+ && maRangeY.equal(rRange.maRangeY)
+ && maRangeZ.equal(rRange.maRangeZ));
+ }
+
+ double getMinX() const
+ {
+ return maRangeX.getMinimum();
+ }
+
+ double getMinY() const
+ {
+ return maRangeY.getMinimum();
+ }
+
+ double getMinZ() const
+ {
+ return maRangeZ.getMinimum();
+ }
+
+ double getMaxX() const
+ {
+ return maRangeX.getMaximum();
+ }
+
+ double getMaxY() const
+ {
+ return maRangeY.getMaximum();
+ }
+
+ double getMaxZ() const
+ {
+ return maRangeZ.getMaximum();
+ }
+
+ double getWidth() const
+ {
+ return maRangeX.getRange();
+ }
+
+ double getHeight() const
+ {
+ return maRangeY.getRange();
+ }
+
+ double getDepth() const
+ {
+ return maRangeZ.getRange();
+ }
+
+ B3DPoint getMinimum() const
+ {
+ return B3DPoint(
+ maRangeX.getMinimum(),
+ maRangeY.getMinimum(),
+ maRangeZ.getMinimum()
+ );
+ }
+
+ B3DPoint getMaximum() const
+ {
+ return B3DPoint(
+ maRangeX.getMaximum(),
+ maRangeY.getMaximum(),
+ maRangeZ.getMaximum()
+ );
+ }
+
+ B3DVector getRange() const
+ {
+ return B3DVector(
+ maRangeX.getRange(),
+ maRangeY.getRange(),
+ maRangeZ.getRange()
+ );
+ }
+
+ B3DPoint getCenter() const
+ {
+ return B3DPoint(
+ maRangeX.getCenter(),
+ maRangeY.getCenter(),
+ maRangeZ.getCenter()
+ );
+ }
+
+ double getCenterX() const
+ {
+ return maRangeX.getCenter();
+ }
+
+ double getCenterY() const
+ {
+ return maRangeY.getCenter();
+ }
+
+ double getCenterZ() const
+ {
+ return maRangeZ.getCenter();
+ }
+
+ bool isInside(const B3DTuple& rTuple) const
+ {
+ return (
+ maRangeX.isInside(rTuple.getX())
+ && maRangeY.isInside(rTuple.getY())
+ && maRangeZ.isInside(rTuple.getZ())
+ );
+ }
+
+ bool isInside(const B3DRange& rRange) const
+ {
+ return (
+ maRangeX.isInside(rRange.maRangeX)
+ && maRangeY.isInside(rRange.maRangeY)
+ && maRangeZ.isInside(rRange.maRangeZ)
+ );
+ }
+
+ bool overlaps(const B3DRange& rRange) const
+ {
+ return (
+ maRangeX.overlaps(rRange.maRangeX)
+ && maRangeY.overlaps(rRange.maRangeY)
+ && maRangeZ.overlaps(rRange.maRangeZ)
+ );
+ }
+
+ void expand(const B3DTuple& rTuple)
+ {
+ maRangeX.expand(rTuple.getX());
+ maRangeY.expand(rTuple.getY());
+ maRangeZ.expand(rTuple.getZ());
+ }
+
+ void expand(const B3DRange& rRange)
+ {
+ maRangeX.expand(rRange.maRangeX);
+ maRangeY.expand(rRange.maRangeY);
+ maRangeZ.expand(rRange.maRangeZ);
+ }
+
+ void intersect(const B3DRange& rRange)
+ {
+ maRangeX.intersect(rRange.maRangeX);
+ maRangeY.intersect(rRange.maRangeY);
+ maRangeZ.intersect(rRange.maRangeZ);
+ }
+
+ void grow(double fValue)
+ {
+ maRangeX.grow(fValue);
+ maRangeY.grow(fValue);
+ maRangeZ.grow(fValue);
+ }
+
+ void transform(const B3DHomMatrix& rMatrix);
+ };
+
+ /** Round double to nearest integer for 3D range
+
+ @return the nearest integer for this range
+ */
+ B3IRange fround(const B3DRange& rRange);
+} // end of namespace basegfx
+
+
+#endif /* _BGFX_RANGE_B3DRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b3dvolume.hxx b/basegfx/inc/basegfx/range/b3dvolume.hxx
new file mode 100644
index 000000000000..50cac5188271
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b3dvolume.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_RANGE_B3DBOX_HXX
+#define _BGFX_RANGE_B3DBOX_HXX
+
+#include <basegfx/range/b3drange.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B3DRange exactly models a Volume in 3D, thus,
+ // for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B3DRange B3DVolume;
+}
+
+#endif /* _BGFX_RANGE_B3DBOX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b3ibox.hxx b/basegfx/inc/basegfx/range/b3ibox.hxx
new file mode 100644
index 000000000000..7c349becd43c
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b3ibox.hxx
@@ -0,0 +1,262 @@
+/* -*- 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 _BGFX_RANGE_B3IBOX_HXX
+#define _BGFX_RANGE_B3IBOX_HXX
+
+#include <basegfx/point/b3ipoint.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/tuple/b3ituple.hxx>
+#include <basegfx/tuple/b3i64tuple.hxx>
+#include <basegfx/range/basicbox.hxx>
+
+namespace basegfx
+{
+ class B3IBox
+ {
+ BasicBox maRangeX;
+ BasicBox maRangeY;
+ BasicBox maRangeZ;
+
+ public:
+ B3IBox()
+ {
+ }
+
+ explicit B3IBox(const B3ITuple& rTuple) :
+ maRangeX(rTuple.getX()),
+ maRangeY(rTuple.getY()),
+ maRangeZ(rTuple.getZ())
+ {
+ }
+
+ B3IBox(sal_Int32 x1,
+ sal_Int32 y1,
+ sal_Int32 z1,
+ sal_Int32 x2,
+ sal_Int32 y2,
+ sal_Int32 z2) :
+ maRangeX(x1),
+ maRangeY(y1),
+ maRangeZ(z1)
+ {
+ maRangeX.expand(x2);
+ maRangeY.expand(y2);
+ maRangeZ.expand(z2);
+ }
+
+ B3IBox(const B3ITuple& rTuple1,
+ const B3ITuple& rTuple2) :
+ maRangeX(rTuple1.getX()),
+ maRangeY(rTuple1.getY()),
+ maRangeZ(rTuple1.getZ())
+ {
+ expand(rTuple2);
+ }
+
+ B3IBox(const B3IBox& rBox) :
+ maRangeX(rBox.maRangeX),
+ maRangeY(rBox.maRangeY),
+ maRangeZ(rBox.maRangeZ)
+ {
+ }
+
+ bool isEmpty() const
+ {
+ return maRangeX.isEmpty() || maRangeY.isEmpty() || maRangeZ.isEmpty();
+ }
+
+ void reset()
+ {
+ maRangeX.reset();
+ maRangeY.reset();
+ maRangeZ.reset();
+ }
+
+ bool operator==( const B3IBox& rBox ) const
+ {
+ return (maRangeX == rBox.maRangeX
+ && maRangeY == rBox.maRangeY
+ && maRangeZ == rBox.maRangeZ);
+ }
+
+ bool operator!=( const B3IBox& rBox ) const
+ {
+ return (maRangeX != rBox.maRangeX
+ || maRangeY != rBox.maRangeY
+ || maRangeZ != rBox.maRangeZ);
+ }
+
+ void operator=(const B3IBox& rBox)
+ {
+ maRangeX = rBox.maRangeX;
+ maRangeY = rBox.maRangeY;
+ maRangeZ = rBox.maRangeZ;
+ }
+
+ sal_Int32 getMinX() const
+ {
+ return maRangeX.getMinimum();
+ }
+
+ sal_Int32 getMinY() const
+ {
+ return maRangeY.getMinimum();
+ }
+
+ sal_Int32 getMinZ() const
+ {
+ return maRangeZ.getMinimum();
+ }
+
+ sal_Int32 getMaxX() const
+ {
+ return maRangeX.getMaximum();
+ }
+
+ sal_Int32 getMaxY() const
+ {
+ return maRangeY.getMaximum();
+ }
+
+ sal_Int32 getMaxZ() const
+ {
+ return maRangeZ.getMaximum();
+ }
+
+ sal_Int64 getWidth() const
+ {
+ return maRangeX.getRange();
+ }
+
+ sal_Int64 getHeight() const
+ {
+ return maRangeY.getRange();
+ }
+
+ sal_Int64 getDepth() const
+ {
+ return maRangeZ.getRange();
+ }
+
+ B3IPoint getMinimum() const
+ {
+ return B3IPoint(
+ maRangeX.getMinimum(),
+ maRangeY.getMinimum(),
+ maRangeZ.getMinimum()
+ );
+ }
+
+ B3IPoint getMaximum() const
+ {
+ return B3IPoint(
+ maRangeX.getMaximum(),
+ maRangeY.getMaximum(),
+ maRangeZ.getMaximum()
+ );
+ }
+
+ B3I64Tuple getRange() const
+ {
+ return B3I64Tuple(
+ maRangeX.getRange(),
+ maRangeY.getRange(),
+ maRangeZ.getRange()
+ );
+ }
+
+ B3DPoint getCenter() const
+ {
+ return B3DPoint(
+ maRangeX.getCenter(),
+ maRangeY.getCenter(),
+ maRangeZ.getCenter()
+ );
+ }
+
+ bool isInside(const B3ITuple& rTuple) const
+ {
+ return (
+ maRangeX.isInside(rTuple.getX())
+ && maRangeY.isInside(rTuple.getY())
+ && maRangeZ.isInside(rTuple.getZ())
+ );
+ }
+
+ bool isInside(const B3IBox& rBox) const
+ {
+ return (
+ maRangeX.isInside(rBox.maRangeX)
+ && maRangeY.isInside(rBox.maRangeY)
+ && maRangeZ.isInside(rBox.maRangeZ)
+ );
+ }
+
+ bool overlaps(const B3IBox& rBox) const
+ {
+ return (
+ maRangeX.overlaps(rBox.maRangeX)
+ && maRangeY.overlaps(rBox.maRangeY)
+ && maRangeZ.overlaps(rBox.maRangeZ)
+ );
+ }
+
+ void expand(const B3ITuple& rTuple)
+ {
+ maRangeX.expand(rTuple.getX());
+ maRangeY.expand(rTuple.getY());
+ maRangeZ.expand(rTuple.getZ());
+ }
+
+ void expand(const B3IBox& rBox)
+ {
+ maRangeX.expand(rBox.maRangeX);
+ maRangeY.expand(rBox.maRangeY);
+ maRangeZ.expand(rBox.maRangeZ);
+ }
+
+ void intersect(const B3IBox& rBox)
+ {
+ maRangeX.intersect(rBox.maRangeX);
+ maRangeY.intersect(rBox.maRangeY);
+ maRangeZ.intersect(rBox.maRangeZ);
+ }
+
+ void grow(sal_Int32 nValue)
+ {
+ maRangeX.grow(nValue);
+ maRangeY.grow(nValue);
+ maRangeZ.grow(nValue);
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_B3IBOX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b3irange.hxx b/basegfx/inc/basegfx/range/b3irange.hxx
new file mode 100644
index 000000000000..32d48812d2cd
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b3irange.hxx
@@ -0,0 +1,265 @@
+/* -*- 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 _BGFX_RANGE_B3IRANGE_HXX
+#define _BGFX_RANGE_B3IRANGE_HXX
+
+#include <basegfx/point/b3ipoint.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/tuple/b3ituple.hxx>
+#include <basegfx/tuple/b3i64tuple.hxx>
+#include <basegfx/range/basicrange.hxx>
+
+namespace basegfx
+{
+ class B3IRange
+ {
+ typedef ::basegfx::BasicRange< sal_Int32, Int32Traits > MyBasicRange;
+
+ MyBasicRange maRangeX;
+ MyBasicRange maRangeY;
+ MyBasicRange maRangeZ;
+
+ public:
+ B3IRange()
+ {
+ }
+
+ explicit B3IRange(const B3ITuple& rTuple)
+ : maRangeX(rTuple.getX()),
+ maRangeY(rTuple.getY()),
+ maRangeZ(rTuple.getZ())
+ {
+ }
+
+ B3IRange(sal_Int32 x1,
+ sal_Int32 y1,
+ sal_Int32 z1,
+ sal_Int32 x2,
+ sal_Int32 y2,
+ sal_Int32 z2)
+ : maRangeX(x1),
+ maRangeY(y1),
+ maRangeZ(z1)
+ {
+ maRangeX.expand(x2);
+ maRangeY.expand(y2);
+ maRangeZ.expand(z2);
+ }
+
+ B3IRange(const B3ITuple& rTuple1,
+ const B3ITuple& rTuple2)
+ : maRangeX(rTuple1.getX()),
+ maRangeY(rTuple1.getY()),
+ maRangeZ(rTuple1.getZ())
+ {
+ expand(rTuple2);
+ }
+
+ B3IRange(const B3IRange& rRange)
+ : maRangeX(rRange.maRangeX),
+ maRangeY(rRange.maRangeY),
+ maRangeZ(rRange.maRangeZ)
+ {
+ }
+
+ bool isEmpty() const
+ {
+ return maRangeX.isEmpty() || maRangeY.isEmpty() || maRangeZ.isEmpty();
+ }
+
+ void reset()
+ {
+ maRangeX.reset();
+ maRangeY.reset();
+ maRangeZ.reset();
+ }
+
+ bool operator==( const B3IRange& rRange ) const
+ {
+ return (maRangeX == rRange.maRangeX
+ && maRangeY == rRange.maRangeY
+ && maRangeZ == rRange.maRangeZ);
+ }
+
+ bool operator!=( const B3IRange& rRange ) const
+ {
+ return (maRangeX != rRange.maRangeX
+ || maRangeY != rRange.maRangeY
+ || maRangeZ != rRange.maRangeZ);
+ }
+
+ B3IRange& operator=(const B3IRange& rRange)
+ {
+ maRangeX = rRange.maRangeX;
+ maRangeY = rRange.maRangeY;
+ maRangeZ = rRange.maRangeZ;
+ return *this;
+ }
+
+ sal_Int32 getMinX() const
+ {
+ return maRangeX.getMinimum();
+ }
+
+ sal_Int32 getMinY() const
+ {
+ return maRangeY.getMinimum();
+ }
+
+ sal_Int32 getMinZ() const
+ {
+ return maRangeZ.getMinimum();
+ }
+
+ sal_Int32 getMaxX() const
+ {
+ return maRangeX.getMaximum();
+ }
+
+ sal_Int32 getMaxY() const
+ {
+ return maRangeY.getMaximum();
+ }
+
+ sal_Int32 getMaxZ() const
+ {
+ return maRangeZ.getMaximum();
+ }
+
+ sal_Int64 getWidth() const
+ {
+ return maRangeX.getRange();
+ }
+
+ sal_Int64 getHeight() const
+ {
+ return maRangeY.getRange();
+ }
+
+ sal_Int64 getDepth() const
+ {
+ return maRangeZ.getRange();
+ }
+
+ B3IPoint getMinimum() const
+ {
+ return B3IPoint(
+ maRangeX.getMinimum(),
+ maRangeY.getMinimum(),
+ maRangeZ.getMinimum()
+ );
+ }
+
+ B3IPoint getMaximum() const
+ {
+ return B3IPoint(
+ maRangeX.getMaximum(),
+ maRangeY.getMaximum(),
+ maRangeZ.getMaximum()
+ );
+ }
+
+ B3I64Tuple getRange() const
+ {
+ return B3I64Tuple(
+ maRangeX.getRange(),
+ maRangeY.getRange(),
+ maRangeZ.getRange()
+ );
+ }
+
+ B3DPoint getCenter() const
+ {
+ return B3DPoint(
+ maRangeX.getCenter(),
+ maRangeY.getCenter(),
+ maRangeZ.getCenter()
+ );
+ }
+
+ bool isInside(const B3ITuple& rTuple) const
+ {
+ return (
+ maRangeX.isInside(rTuple.getX())
+ && maRangeY.isInside(rTuple.getY())
+ && maRangeZ.isInside(rTuple.getZ())
+ );
+ }
+
+ bool isInside(const B3IRange& rRange) const
+ {
+ return (
+ maRangeX.isInside(rRange.maRangeX)
+ && maRangeY.isInside(rRange.maRangeY)
+ && maRangeZ.isInside(rRange.maRangeZ)
+ );
+ }
+
+ bool overlaps(const B3IRange& rRange) const
+ {
+ return (
+ maRangeX.overlaps(rRange.maRangeX)
+ && maRangeY.overlaps(rRange.maRangeY)
+ && maRangeZ.overlaps(rRange.maRangeZ)
+ );
+ }
+
+ void expand(const B3ITuple& rTuple)
+ {
+ maRangeX.expand(rTuple.getX());
+ maRangeY.expand(rTuple.getY());
+ maRangeZ.expand(rTuple.getZ());
+ }
+
+ void expand(const B3IRange& rRange)
+ {
+ maRangeX.expand(rRange.maRangeX);
+ maRangeY.expand(rRange.maRangeY);
+ maRangeZ.expand(rRange.maRangeZ);
+ }
+
+ void intersect(const B3IRange& rRange)
+ {
+ maRangeX.intersect(rRange.maRangeX);
+ maRangeY.intersect(rRange.maRangeY);
+ maRangeZ.intersect(rRange.maRangeZ);
+ }
+
+ void grow(sal_Int32 nValue)
+ {
+ maRangeX.grow(nValue);
+ maRangeY.grow(nValue);
+ maRangeZ.grow(nValue);
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_B3IRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/b3ivolume.hxx b/basegfx/inc/basegfx/range/b3ivolume.hxx
new file mode 100644
index 000000000000..67fe3d2959f6
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b3ivolume.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_RANGE_B3IBOX_HXX
+#define _BGFX_RANGE_B3IBOX_HXX
+
+#include <basegfx/range/b3irange.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B3IRange exactly models a Box in 3D, thus,
+ // for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B3IRange B3IBox;
+}
+
+#endif /* _BGFX_RANGE_B3IBOX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/basicbox.hxx b/basegfx/inc/basegfx/range/basicbox.hxx
new file mode 100644
index 000000000000..0159acc9e8e0
--- /dev/null
+++ b/basegfx/inc/basegfx/range/basicbox.hxx
@@ -0,0 +1,139 @@
+/* -*- 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 _BGFX_RANGE_BASICBOX_HXX
+#define _BGFX_RANGE_BASICBOX_HXX
+
+#include <basegfx/range/basicrange.hxx>
+
+
+namespace basegfx
+{
+ /** Specialization of BasicRange, handling the inside predicates
+ differently.
+
+ This template considers the rightmost and bottommost border as
+ <em>outside</em> of the range, in contrast to BasicRange,
+ which considers them inside.
+ */
+ class BasicBox : public BasicRange< sal_Int32, Int32Traits >
+ {
+ typedef BasicRange< sal_Int32, Int32Traits > Base;
+ public:
+ BasicBox() :
+ Base()
+ {
+ }
+
+ BasicBox( sal_Int32 nValue ) :
+ Base( nValue )
+ {
+ }
+
+ BasicBox(const BasicBox& rBox) :
+ Base( rBox )
+ {
+ }
+
+ double getCenter() const
+ {
+ if(isEmpty())
+ {
+ return 0.0;
+ }
+ else
+ {
+ return ((mnMaximum + mnMinimum - 1.0) / 2.0);
+ }
+ }
+
+ using Base::isInside;
+
+ bool isInside(sal_Int32 nValue) const
+ {
+ if(isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ return (nValue >= mnMinimum) && (nValue < mnMaximum);
+ }
+ }
+
+ using Base::overlaps;
+
+ bool overlaps(const BasicBox& rBox) const
+ {
+ if(isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ if(rBox.isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ return !((rBox.mnMaximum <= mnMinimum) || (rBox.mnMinimum >= mnMaximum));
+ }
+ }
+ }
+
+ void grow(sal_Int32 nValue)
+ {
+ if(!isEmpty())
+ {
+ bool bLessThanZero(nValue < 0);
+
+ if(nValue > 0 || bLessThanZero)
+ {
+ mnMinimum -= nValue;
+ mnMaximum += nValue;
+
+ if(bLessThanZero)
+ {
+ // test if range did collapse
+ if(mnMinimum > mnMaximum)
+ {
+ // if yes, collapse to center
+ mnMinimum = mnMaximum = ((mnMaximum + mnMinimum - 1) / 2);
+ }
+ }
+ }
+ }
+ }
+ };
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_BASICBOX_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/basicrange.hxx b/basegfx/inc/basegfx/range/basicrange.hxx
new file mode 100644
index 000000000000..8711f95b754c
--- /dev/null
+++ b/basegfx/inc/basegfx/range/basicrange.hxx
@@ -0,0 +1,300 @@
+/* -*- 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 _BGFX_RANGE_BASICRANGE_HXX
+#define _BGFX_RANGE_BASICRANGE_HXX
+
+#include <sal/types.h>
+#include <float.h>
+#include <basegfx/numeric/ftools.hxx>
+
+
+namespace basegfx
+{
+ template< typename T, typename Traits > class BasicRange
+ {
+ protected:
+ T mnMinimum;
+ T mnMaximum;
+
+ public:
+ typedef T ValueType;
+ typedef Traits TraitsType;
+
+ BasicRange() :
+ mnMinimum(Traits::maxVal()),
+ mnMaximum(Traits::minVal())
+ {
+ }
+
+ BasicRange( T nValue ) :
+ mnMinimum(nValue),
+ mnMaximum(nValue)
+ {
+ }
+
+ BasicRange(const BasicRange& rRange) :
+ mnMinimum(rRange.mnMinimum),
+ mnMaximum(rRange.mnMaximum)
+ {
+ }
+
+ void reset()
+ {
+ mnMinimum = Traits::maxVal();
+ mnMaximum = Traits::minVal();
+ }
+
+ bool isEmpty() const
+ {
+ return Traits::maxVal() == mnMinimum;
+ }
+
+ T getMinimum() const { return mnMinimum; }
+ T getMaximum() const { return mnMaximum; }
+
+ double getCenter() const
+ {
+ if(isEmpty())
+ {
+ return 0.0;
+ }
+ else
+ {
+ return ((mnMaximum + mnMinimum) / 2.0);
+ }
+ }
+
+ bool isInside(T nValue) const
+ {
+ if(isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ return (nValue >= mnMinimum) && (nValue <= mnMaximum);
+ }
+ }
+
+ bool isInside(const BasicRange& rRange) const
+ {
+ if(isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ if(rRange.isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ return (rRange.mnMinimum >= mnMinimum) && (rRange.mnMaximum <= mnMaximum);
+ }
+ }
+ }
+
+ bool overlaps(const BasicRange& rRange) const
+ {
+ if(isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ if(rRange.isEmpty())
+ {
+ return false;
+ }
+ else
+ {
+ return !((rRange.mnMaximum < mnMinimum) || (rRange.mnMinimum > mnMaximum));
+ }
+ }
+ }
+
+ bool overlapsMore(const BasicRange& rRange) const
+ {
+ if(isEmpty() || rRange.isEmpty())
+ return false;
+ // returns true if the overlap is more than just a touching at the limits
+ return ((rRange.mnMaximum > mnMinimum) && (rRange.mnMinimum < mnMaximum));
+ }
+
+ bool operator==( const BasicRange& rRange ) const
+ {
+ return (mnMinimum == rRange.mnMinimum && mnMaximum == rRange.mnMaximum);
+ }
+
+ bool operator!=( const BasicRange& rRange ) const
+ {
+ return (mnMinimum != rRange.mnMinimum || mnMaximum != rRange.mnMaximum);
+ }
+
+ BasicRange& operator=(const BasicRange& rRange)
+ {
+ mnMinimum = rRange.mnMinimum;
+ mnMaximum = rRange.mnMaximum;
+ return *this;
+ }
+
+ bool equal(const BasicRange& rRange) const
+ {
+ return (
+ fTools::equal(mnMinimum, rRange.mnMinimum) &&
+ fTools::equal(mnMaximum, rRange.mnMaximum));
+ }
+
+ void expand(T nValue)
+ {
+ if(isEmpty())
+ {
+ mnMinimum = mnMaximum = nValue;
+ }
+ else
+ {
+ if(nValue < mnMinimum)
+ {
+ mnMinimum = nValue;
+ }
+
+ if(nValue > mnMaximum)
+ {
+ mnMaximum = nValue;
+ }
+ }
+ }
+
+ void expand(const BasicRange& rRange)
+ {
+ if(isEmpty())
+ {
+ mnMinimum = rRange.mnMinimum;
+ mnMaximum = rRange.mnMaximum;
+ }
+ else
+ {
+ if(!rRange.isEmpty())
+ {
+ if(rRange.mnMinimum < mnMinimum)
+ {
+ mnMinimum = rRange.mnMinimum;
+ }
+
+ if(rRange.mnMaximum > mnMaximum)
+ {
+ mnMaximum = rRange.mnMaximum;
+ }
+ }
+ }
+ }
+
+ void intersect(const BasicRange& rRange)
+ {
+ // here, overlaps also tests all isEmpty() conditions already.
+ if( !overlaps( rRange ) )
+ {
+ reset();
+ }
+ else
+ {
+ if(rRange.mnMinimum > mnMinimum)
+ {
+ mnMinimum = rRange.mnMinimum;
+ }
+
+ if(rRange.mnMaximum < mnMaximum)
+ {
+ mnMaximum = rRange.mnMaximum;
+ }
+ }
+ }
+
+ void grow(T nValue)
+ {
+ if(!isEmpty())
+ {
+ bool bLessThanZero(nValue < 0);
+
+ if(nValue > 0 || bLessThanZero)
+ {
+ mnMinimum -= nValue;
+ mnMaximum += nValue;
+
+ if(bLessThanZero)
+ {
+ // test if range did collapse
+ if(mnMinimum > mnMaximum)
+ {
+ // if yes, collapse to center
+ mnMinimum = mnMaximum = (mnMinimum + mnMaximum) / 2;
+ }
+ }
+ }
+ }
+ }
+
+ typename Traits::DifferenceType getRange() const
+ {
+ if(isEmpty())
+ {
+ return Traits::neutral();
+ }
+ else
+ {
+ return (mnMaximum - mnMinimum);
+ }
+ }
+ };
+
+ // some pre-fabricated traits
+ struct DoubleTraits
+ {
+ static double minVal() { return DBL_MIN; };
+ static double maxVal() { return DBL_MAX; };
+ static double neutral() { return 0.0; };
+
+ typedef double DifferenceType;
+ };
+
+ struct Int32Traits
+ {
+ static sal_Int32 minVal() { return SAL_MIN_INT32; };
+ static sal_Int32 maxVal() { return SAL_MAX_INT32; };
+ static sal_Int32 neutral() { return 0L; };
+
+ typedef sal_Int64 DifferenceType;
+ };
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_RANGE_BASICRANGE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/range/rangeexpander.hxx b/basegfx/inc/basegfx/range/rangeexpander.hxx
new file mode 100644
index 000000000000..509757d79750
--- /dev/null
+++ b/basegfx/inc/basegfx/range/rangeexpander.hxx
@@ -0,0 +1,86 @@
+/* -*- 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 _BGFX_RANGE_RANGEEXPANDER_HXX
+#define _BGFX_RANGE_RANGEEXPANDER_HXX
+
+#include <basegfx/range/b1drange.hxx>
+#include <basegfx/range/b1irange.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/range/b3irange.hxx>
+
+namespace basegfx
+{
+ /** Generic functor for expanding a range with a number of other
+ ranges.
+
+ Since *Range::expand() is overloaded, straight-forward
+ application of ::boost::bind and friends fails (because of
+ ambiguities). Thus, this functor template can be used, to
+ expand the given range with a number of other ranges, passed
+ in at the function operator.
+
+ @tpl RangeType
+ Range type to operate with. Preferrably, one of B1*Range,
+ B2*Range, or B3*Range.
+ */
+ template< typename RangeType > class RangeExpander
+ {
+ public:
+ typedef RangeType ValueType;
+ typedef void result_type;
+
+ explicit RangeExpander( ValueType& rBounds ) :
+ mrBounds( rBounds )
+ {
+ }
+
+ void operator()( const ValueType& rBounds )
+ {
+ mrBounds.expand( rBounds );
+ }
+
+ private:
+ ValueType& mrBounds;
+ };
+
+ typedef RangeExpander< B1DRange > B1DRangeExpander;
+ typedef RangeExpander< B1IRange > B1IRangeExpander;
+ typedef RangeExpander< B2DRange > B2DRangeExpander;
+ typedef RangeExpander< B2IRange > B2IRangeExpander;
+ typedef RangeExpander< B3DRange > B3DRangeExpander;
+ typedef RangeExpander< B3IRange > B3IRangeExpander;
+
+} // end of namespace basegfx
+
+
+#endif /* _BGFX_RANGE_RANGEEXPANDER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/raster/bpixelraster.hxx b/basegfx/inc/basegfx/raster/bpixelraster.hxx
new file mode 100644
index 000000000000..b479384bb806
--- /dev/null
+++ b/basegfx/inc/basegfx/raster/bpixelraster.hxx
@@ -0,0 +1,119 @@
+/* -*- 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 _BGFX_RASTER_BPIXELRASTER_HXX
+#define _BGFX_RASTER_BPIXELRASTER_HXX
+
+#include <algorithm>
+#include <sal/types.h>
+#include <basegfx/pixel/bpixel.hxx>
+#include <rtl/memory.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class BPixelRaster
+ {
+ private:
+ // do not allow copy constructor and assignment operator
+ BPixelRaster(const BPixelRaster&);
+ BPixelRaster& operator=(const BPixelRaster&);
+
+ protected:
+ sal_uInt32 mnWidth;
+ sal_uInt32 mnHeight;
+ sal_uInt32 mnCount;
+ BPixel* mpContent;
+
+ public:
+ // reset
+ void reset()
+ {
+ rtl_zeroMemory(mpContent, sizeof(BPixel) * mnCount);
+ }
+
+ // constructor/destructor
+ BPixelRaster(sal_uInt32 nWidth, sal_uInt32 nHeight)
+ : mnWidth(nWidth),
+ mnHeight(nHeight),
+ mnCount(nWidth * nHeight),
+ mpContent(new BPixel[mnCount])
+ {
+ reset();
+ }
+
+ ~BPixelRaster()
+ {
+ delete [] mpContent;
+ }
+
+ // coordinate calcs between X/Y and span
+ sal_uInt32 getIndexFromXY(sal_uInt32 nX, sal_uInt32 nY) const { return (nX + (nY * mnWidth)); }
+ sal_uInt32 getXFromIndex(sal_uInt32 nIndex) const { return (nIndex % mnWidth); }
+ sal_uInt32 getYFromIndex(sal_uInt32 nIndex) const { return (nIndex / mnWidth); }
+
+ // data access read
+ sal_uInt32 getWidth() const { return mnWidth; }
+ sal_uInt32 getHeight() const { return mnHeight; }
+ sal_uInt32 getCount() const { return mnCount; }
+
+ // data access read only
+ const BPixel& getBPixel(sal_uInt32 nIndex) const
+ {
+#ifdef DBG_UTIL
+ if(nIndex >= mnCount)
+ {
+ OSL_ENSURE(false, "getBPixel: Access out of range (!)");
+ return BPixel::getEmptyBPixel();
+ }
+#endif
+ return mpContent[nIndex];
+ }
+
+ // data access read/write
+ BPixel& getBPixel(sal_uInt32 nIndex)
+ {
+#ifdef DBG_UTIL
+ if(nIndex >= mnCount)
+ {
+ OSL_ENSURE(false, "getBPixel: Access out of range (!)");
+ return mpContent[0L];
+ }
+#endif
+ return mpContent[nIndex];
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_RASTER_BPIXELRASTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/raster/bzpixelraster.hxx b/basegfx/inc/basegfx/raster/bzpixelraster.hxx
new file mode 100644
index 000000000000..9e3cd6db36f1
--- /dev/null
+++ b/basegfx/inc/basegfx/raster/bzpixelraster.hxx
@@ -0,0 +1,99 @@
+/* -*- 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 _BGFX_RASTER_BZPIXELRASTER_HXX
+#define _BGFX_RASTER_BZPIXELRASTER_HXX
+
+#include <basegfx/raster/bpixelraster.hxx>
+#include <rtl/memory.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class BZPixelRaster : public BPixelRaster
+ {
+ protected:
+ // additionally, host a ZBuffer
+ sal_uInt16* mpZBuffer;
+
+ public:
+ // reset
+ void resetZ()
+ {
+ reset();
+ rtl_zeroMemory(mpZBuffer, sizeof(sal_uInt16) * mnCount);
+ }
+
+ // constructor/destructor
+ BZPixelRaster(sal_uInt32 nWidth, sal_uInt32 nHeight)
+ : BPixelRaster(nWidth, nHeight),
+ mpZBuffer(new sal_uInt16[mnCount])
+ {
+ rtl_zeroMemory(mpZBuffer, sizeof(sal_uInt16) * mnCount);
+ }
+
+ ~BZPixelRaster()
+ {
+ delete [] mpZBuffer;
+ }
+
+ // data access read only
+ const sal_uInt16& getZ(sal_uInt32 nIndex) const
+ {
+#ifdef DBG_UTIL
+ if(nIndex >= mnCount)
+ {
+ OSL_ENSURE(false, "getZ: Access out of range (!)");
+ return mpZBuffer[0L];
+ }
+#endif
+ return mpZBuffer[nIndex];
+ }
+
+ // data access read/write
+ sal_uInt16& getZ(sal_uInt32 nIndex)
+ {
+#ifdef DBG_UTIL
+ if(nIndex >= mnCount)
+ {
+ OSL_ENSURE(false, "getZ: Access out of range (!)");
+ return mpZBuffer[0L];
+ }
+#endif
+ return mpZBuffer[nIndex];
+ }
+ };
+} // end of namespace basegfx
+
+#endif /* _BGFX_RASTER_BZPIXELRASTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/raster/rasterconvert3d.hxx b/basegfx/inc/basegfx/raster/rasterconvert3d.hxx
new file mode 100644
index 000000000000..0644fd1923d8
--- /dev/null
+++ b/basegfx/inc/basegfx/raster/rasterconvert3d.hxx
@@ -0,0 +1,348 @@
+/* -*- 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 _BGFX_RASTER_RASTERCONVERT3D_HXX
+#define _BGFX_RASTER_RASTERCONVERT3D_HXX
+
+#include <sal/types.h>
+#include <vector>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace basegfx
+{
+ class B3DPolygon;
+ class B3DPolyPolygon;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// interpolators for double precision
+
+namespace basegfx
+{
+ class ip_single
+ {
+ private:
+ double mfVal;
+ double mfInc;
+
+ public:
+ ip_single()
+ : mfVal(0.0),
+ mfInc(0.0)
+ {}
+
+ ip_single(double fVal, double fInc)
+ : mfVal(fVal),
+ mfInc(fInc)
+ {}
+
+ double getVal() const { return mfVal; }
+ double getInc() const { return mfInc; }
+
+ void increment(double fStep) { mfVal += fStep * mfInc; }
+ };
+} // end of namespace basegfx
+
+namespace basegfx
+{
+ class ip_double
+ {
+ private:
+ ip_single maX;
+ ip_single maY;
+
+ public:
+ ip_double()
+ : maX(),
+ maY()
+ {}
+
+ ip_double(double fXVal, double fXInc, double fYVal, double fYInc)
+ : maX(fXVal, fXInc),
+ maY(fYVal, fYInc)
+ {}
+
+ const ip_single& getX() const { return maX; }
+ const ip_single& getY() const { return maY; }
+
+ void increment(double fStep) { maX.increment(fStep); maY.increment(fStep); }
+ };
+} // end of namespace basegfx
+
+namespace basegfx
+{
+ class ip_triple
+ {
+ private:
+ ip_single maX;
+ ip_single maY;
+ ip_single maZ;
+
+ public:
+ ip_triple()
+ : maX(),
+ maY(),
+ maZ()
+ {}
+
+ ip_triple(double fXVal, double fXInc, double fYVal, double fYInc, double fZVal, double fZInc)
+ : maX(fXVal, fXInc),
+ maY(fYVal, fYInc),
+ maZ(fZVal, fZInc)
+ {}
+
+ const ip_single& getX() const { return maX; }
+ const ip_single& getY() const { return maY; }
+ const ip_single& getZ() const { return maZ; }
+
+ void increment(double fStep) { maX.increment(fStep); maY.increment(fStep); maZ.increment(fStep); }
+ };
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// InterpolatorProvider3D to have a common source for allocating interpolators
+// which may then be addressed using the index to the vectors
+
+namespace basegfx
+{
+ #define SCANLINE_EMPTY_INDEX (0xffffffff)
+
+ class InterpolatorProvider3D
+ {
+ private:
+ ::std::vector< ip_triple > maColorInterpolators;
+ ::std::vector< ip_triple > maNormalInterpolators;
+ ::std::vector< ip_double > maTextureInterpolators;
+ ::std::vector< ip_triple > maInverseTextureInterpolators;
+
+ protected:
+ sal_uInt32 addColorInterpolator(const BColor& rA, const BColor& rB, double fInvYDelta)
+ {
+ B3DVector aDelta(rB.getRed() - rA.getRed(), rB.getGreen() - rA.getGreen(), rB.getBlue() - rA.getBlue());
+ aDelta *= fInvYDelta;
+ maColorInterpolators.push_back(ip_triple(rA.getRed(), aDelta.getX(), rA.getGreen(), aDelta.getY(), rA.getBlue(), aDelta.getZ()));
+ return (maColorInterpolators.size() - 1L);
+ }
+
+ sal_uInt32 addNormalInterpolator(const B3DVector& rA, const B3DVector& rB, double fInvYDelta)
+ {
+ B3DVector aDelta(rB.getX() - rA.getX(), rB.getY() - rA.getY(), rB.getZ() - rA.getZ());
+ aDelta *= fInvYDelta;
+ maNormalInterpolators.push_back(ip_triple(rA.getX(), aDelta.getX(), rA.getY(), aDelta.getY(), rA.getZ(), aDelta.getZ()));
+ return (maNormalInterpolators.size() - 1L);
+ }
+
+ sal_uInt32 addTextureInterpolator(const B2DPoint& rA, const B2DPoint& rB, double fInvYDelta)
+ {
+ B2DVector aDelta(rB.getX() - rA.getX(), rB.getY() - rA.getY());
+ aDelta *= fInvYDelta;
+ maTextureInterpolators.push_back(ip_double(rA.getX(), aDelta.getX(), rA.getY(), aDelta.getY()));
+ return (maTextureInterpolators.size() - 1L);
+ }
+
+ sal_uInt32 addInverseTextureInterpolator(const B2DPoint& rA, const B2DPoint& rB, double fZEyeA, double fZEyeB, double fInvYDelta)
+ {
+ const double fInvZEyeA(fTools::equalZero(fZEyeA) ? fZEyeA : 1.0 / fZEyeA);
+ const double fInvZEyeB(fTools::equalZero(fZEyeB) ? fZEyeB : 1.0 / fZEyeB);
+ const B2DPoint aInvA(rA * fInvZEyeA);
+ const B2DPoint aInvB(rB * fInvZEyeB);
+ double fZDelta(fInvZEyeB - fInvZEyeA);
+ B2DVector aDelta(aInvB.getX() - aInvA.getX(), aInvB.getY() - aInvA.getY());
+
+ fZDelta *= fInvYDelta;
+ aDelta *= fInvYDelta;
+
+ maInverseTextureInterpolators.push_back(ip_triple(aInvA.getX(), aDelta.getX(), aInvA.getY(), aDelta.getY(), fInvZEyeA, fZDelta));
+ return (maInverseTextureInterpolators.size() - 1L);
+ }
+
+ void reset()
+ {
+ maColorInterpolators.clear();
+ maNormalInterpolators.clear();
+ maTextureInterpolators.clear();
+ maInverseTextureInterpolators.clear();
+ }
+
+ public:
+ InterpolatorProvider3D() {}
+
+ ::std::vector< ip_triple >& getColorInterpolators() { return maColorInterpolators; }
+ ::std::vector< ip_triple >& getNormalInterpolators() { return maNormalInterpolators; }
+ ::std::vector< ip_double >& getTextureInterpolators() { return maTextureInterpolators; }
+ ::std::vector< ip_triple >& getInverseTextureInterpolators() { return maInverseTextureInterpolators; }
+ };
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// RasterConversionLineEntry3D for Raterconversion of 3D PolyPolygons
+
+namespace basegfx
+{
+ class RasterConversionLineEntry3D
+ {
+ private:
+ ip_single maX;
+ ip_single maZ;
+ sal_Int32 mnY;
+ sal_uInt32 mnCount;
+
+ sal_uInt32 mnColorIndex;
+ sal_uInt32 mnNormalIndex;
+ sal_uInt32 mnTextureIndex;
+ sal_uInt32 mnInverseTextureIndex;
+
+ public:
+ RasterConversionLineEntry3D(const double& rfX, const double& rfDeltaX, const double& rfZ, const double& rfDeltaZ, sal_Int32 nY, sal_uInt32 nCount)
+ : maX(rfX, rfDeltaX),
+ maZ(rfZ, rfDeltaZ),
+ mnY(nY),
+ mnCount(nCount),
+ mnColorIndex(SCANLINE_EMPTY_INDEX),
+ mnNormalIndex(SCANLINE_EMPTY_INDEX),
+ mnTextureIndex(SCANLINE_EMPTY_INDEX),
+ mnInverseTextureIndex(SCANLINE_EMPTY_INDEX)
+ {}
+
+ void setColorIndex(sal_uInt32 nIndex) { mnColorIndex = nIndex; }
+ void setNormalIndex(sal_uInt32 nIndex) { mnNormalIndex = nIndex; }
+ void setTextureIndex(sal_uInt32 nIndex) { mnTextureIndex = nIndex; }
+ void setInverseTextureIndex(sal_uInt32 nIndex) { mnInverseTextureIndex = nIndex; }
+
+ bool operator<(const RasterConversionLineEntry3D& rComp) const
+ {
+ if(mnY == rComp.mnY)
+ {
+ return maX.getVal() < rComp.maX.getVal();
+ }
+
+ return mnY < rComp.mnY;
+ }
+
+ bool decrementRasterConversionLineEntry3D(sal_uInt32 nStep)
+ {
+ if(nStep >= mnCount)
+ {
+ return false;
+ }
+ else
+ {
+ mnCount -= nStep;
+ return true;
+ }
+ }
+
+ void incrementRasterConversionLineEntry3D(sal_uInt32 nStep, InterpolatorProvider3D& rProvider)
+ {
+ const double fStep((double)nStep);
+ maX.increment(fStep);
+ maZ.increment(fStep);
+ mnY += nStep;
+
+ if(SCANLINE_EMPTY_INDEX != mnColorIndex)
+ {
+ rProvider.getColorInterpolators()[mnColorIndex].increment(fStep);
+ }
+
+ if(SCANLINE_EMPTY_INDEX != mnNormalIndex)
+ {
+ rProvider.getNormalInterpolators()[mnNormalIndex].increment(fStep);
+ }
+
+ if(SCANLINE_EMPTY_INDEX != mnTextureIndex)
+ {
+ rProvider.getTextureInterpolators()[mnTextureIndex].increment(fStep);
+ }
+
+ if(SCANLINE_EMPTY_INDEX != mnInverseTextureIndex)
+ {
+ rProvider.getInverseTextureInterpolators()[mnInverseTextureIndex].increment(fStep);
+ }
+ }
+
+ // data read access
+ const ip_single& getX() const { return maX; }
+ sal_Int32 getY() const { return mnY; }
+ const ip_single& getZ() const { return maZ; }
+ sal_uInt32 getColorIndex() const { return mnColorIndex; }
+ sal_uInt32 getNormalIndex() const { return mnNormalIndex; }
+ sal_uInt32 getTextureIndex() const { return mnTextureIndex; }
+ sal_uInt32 getInverseTextureIndex() const { return mnInverseTextureIndex; }
+ };
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// the basic RaterConverter itself. Only one method needs to be overloaded. The
+// class itself is strictly virtual
+
+namespace basegfx
+{
+ class RasterConverter3D : public InterpolatorProvider3D
+ {
+ private:
+ // the line entries for an area conversion run
+ ::std::vector< RasterConversionLineEntry3D > maLineEntries;
+
+ struct lineComparator
+ {
+ bool operator()(const RasterConversionLineEntry3D* pA, const RasterConversionLineEntry3D* pB)
+ {
+ OSL_ENSURE(pA && pB, "lineComparator: empty pointer (!)");
+ return pA->getX().getVal() < pB->getX().getVal();
+ }
+ };
+
+ void addArea(const B3DPolygon& rFill, const B3DHomMatrix* pViewToEye);
+ void addArea(const B3DPolyPolygon& rFill, const B3DHomMatrix* pViewToEye);
+ void addEdge(const B3DPolygon& rFill, sal_uInt32 a, sal_uInt32 b, const B3DHomMatrix* pViewToEye);
+
+ void rasterconvertB3DArea(sal_Int32 nStartLine, sal_Int32 nStopLine);
+ void rasterconvertB3DEdge(const B3DPolygon& rLine, sal_uInt32 nA, sal_uInt32 nB, sal_Int32 nStartLine, sal_Int32 nStopLine, sal_uInt16 nLineWidth);
+
+ virtual void processLineSpan(const RasterConversionLineEntry3D& rA, const RasterConversionLineEntry3D& rB, sal_Int32 nLine, sal_uInt32 nSpanCount) = 0;
+
+ public:
+ RasterConverter3D();
+ virtual ~RasterConverter3D();
+
+ void rasterconvertB3DPolyPolygon(const B3DPolyPolygon& rFill, const B3DHomMatrix* pViewToEye, sal_Int32 nStartLine, sal_Int32 nStopLine);
+ void rasterconvertB3DPolygon(const B3DPolygon& rLine, sal_Int32 nStartLine, sal_Int32 nStopLine, sal_uInt16 nLineWidth);
+ };
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_RASTER_RASTERCONVERT3D_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/b2dclipstate.hxx b/basegfx/inc/basegfx/tools/b2dclipstate.hxx
new file mode 100644
index 000000000000..4550df124588
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/b2dclipstate.hxx
@@ -0,0 +1,122 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: rectcliptools.hxx,v $
+ * $Revision: 1.3 $
+ *
+ * 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 _BGFX_TOOLS_CLIPSTATE_HXX
+#define _BGFX_TOOLS_CLIPSTATE_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B2DRange;
+ class B2DPolyRange;
+ class B2DPolygon;
+ class B2DPolyPolygon;
+
+ namespace tools
+ {
+ class ImplB2DClipState;
+
+ /** This class provides an optimized, symbolic clip state for graphical output
+
+ Having a current 'clip' state is a common attribute of
+ almost all graphic output APIs, most of which internally
+ represent it via a list of rectangular bands. In contrast,
+ this implementation purely uses symbolic clips, but in a
+ quite efficient manner, deferring actual evaluation until
+ a clip representation is requested, and using faster code
+ paths for common special cases (like all-rectangle clips)
+ */
+ class B2DClipState
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImplB2DClipState > ImplType;
+
+ private:
+ ImplType mpImpl;
+
+ public:
+ /// Init clip, in 'cleared' state - everything is visible
+ B2DClipState();
+ ~B2DClipState();
+ B2DClipState( const B2DClipState& );
+ explicit B2DClipState( const B2DRange& );
+ explicit B2DClipState( const B2DPolygon& );
+ explicit B2DClipState( const B2DPolyPolygon& );
+ B2DClipState& operator=( const B2DClipState& );
+
+ /// unshare this poly-range with all internally shared instances
+ void makeUnique();
+
+ /// Set clip to 'null' - nothing is visible
+ void makeNull();
+ /// returns true when clip is 'null' - nothing is visible
+ bool isNull() const;
+
+ /// Set clip 'cleared' - everything is visible
+ void makeClear();
+ /// returns true when clip is 'cleared' - everything is visible
+ bool isCleared() const;
+
+ bool operator==(const B2DClipState&) const;
+ bool operator!=(const B2DClipState&) const;
+
+ void unionRange(const B2DRange& );
+ void unionPolygon(const B2DPolygon& );
+ void unionPolyPolygon(const B2DPolyPolygon& );
+ void unionClipState(const B2DClipState& );
+
+ void intersectRange(const B2DRange& );
+ void intersectPolygon(const B2DPolygon& );
+ void intersectPolyPolygon(const B2DPolyPolygon& );
+ void intersectClipState(const B2DClipState& );
+
+ void subtractRange(const B2DRange& );
+ void subtractPolygon(const B2DPolygon& );
+ void subtractPolyPolygon(const B2DPolyPolygon& );
+ void subtractClipState(const B2DClipState& );
+
+ void xorRange(const B2DRange& );
+ void xorPolygon(const B2DPolygon& );
+ void xorPolyPolygon(const B2DPolyPolygon& );
+ void xorClipState(const B2DClipState& );
+
+ B2DPolyPolygon getClipPoly() const;
+ };
+ }
+}
+
+#endif // _BGFX_TOOLS_CLIPSTATE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/canvastools.hxx b/basegfx/inc/basegfx/tools/canvastools.hxx
new file mode 100644
index 000000000000..1dae369e80c8
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/canvastools.hxx
@@ -0,0 +1,224 @@
+/* -*- 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 _BGFX_TOOLS_CANVASTOOLS_HXX
+#define _BGFX_TOOLS_CANVASTOOLS_HXX
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+
+
+namespace com { namespace sun { namespace star { namespace geometry
+{
+ struct AffineMatrix2D;
+ struct AffineMatrix3D;
+ struct Matrix2D;
+ struct RealPoint2D;
+ struct RealSize2D;
+ struct RealRectangle2D;
+ struct RealRectangle3D;
+ struct IntegerPoint2D;
+ struct IntegerSize2D;
+ struct IntegerRectangle2D;
+ struct RealBezierSegment2D;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace rendering
+{
+ class XGraphicDevice;
+ class XPolyPolygon2D;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace awt
+{
+ struct Point;
+ struct Size;
+ struct Rectangle;
+} } } }
+
+namespace basegfx
+{
+ class B2DHomMatrix;
+ class B3DHomMatrix;
+ class B2DVector;
+ class B2DPoint;
+ class B2DRange;
+ class B3DRange;
+ class B2IVector;
+ class B2IPoint;
+ class B2IRange;
+ class B2DPolygon;
+ class B2DPolyPolygon;
+
+ namespace unotools
+ {
+ // Polygon conversions
+ // ===================================================================
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >
+ xPolyPolygonFromB2DPolygon( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XGraphicDevice >& xGraphicDevice,
+ const ::basegfx::B2DPolygon& rPoly );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >
+ xPolyPolygonFromB2DPolyPolygon( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XGraphicDevice >& xGraphicDevice,
+ const ::basegfx::B2DPolyPolygon& rPolyPoly );
+
+
+ ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Sequence<
+ ::com::sun::star::geometry::RealBezierSegment2D > >
+ bezierSequenceSequenceFromB2DPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly );
+
+ ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Sequence<
+ ::com::sun::star::geometry::RealPoint2D > >
+ pointSequenceSequenceFromB2DPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly );
+
+ ::basegfx::B2DPolygon polygonFromPoint2DSequence(
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::geometry::RealPoint2D >& rPoints );
+
+ ::basegfx::B2DPolyPolygon polyPolygonFromPoint2DSequenceSequence(
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealPoint2D > >& rPoints );
+
+ ::basegfx::B2DPolygon polygonFromBezier2DSequence(
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::geometry::RealBezierSegment2D >& rPoints );
+
+ ::basegfx::B2DPolyPolygon polyPolygonFromBezier2DSequenceSequence(
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealBezierSegment2D > >& rPoints );
+
+ ::basegfx::B2DPolyPolygon b2DPolyPolygonFromXPolyPolygon2D(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPoly );
+
+ // Matrix conversions
+ // ===================================================================
+
+ ::com::sun::star::geometry::AffineMatrix2D&
+ affineMatrixFromHomMatrix( ::com::sun::star::geometry::AffineMatrix2D& matrix,
+ const ::basegfx::B2DHomMatrix& transform);
+
+ ::com::sun::star::geometry::AffineMatrix3D& affineMatrixFromHomMatrix3D(
+ ::com::sun::star::geometry::AffineMatrix3D& matrix,
+ const ::basegfx::B3DHomMatrix& transform);
+
+ ::basegfx::B2DHomMatrix&
+ homMatrixFromAffineMatrix( ::basegfx::B2DHomMatrix& transform,
+ const ::com::sun::star::geometry::AffineMatrix2D& matrix );
+
+ ::basegfx::B2DHomMatrix homMatrixFromAffineMatrix( const ::com::sun::star::geometry::AffineMatrix2D& matrix );
+ ::basegfx::B3DHomMatrix homMatrixFromAffineMatrix3D( const ::com::sun::star::geometry::AffineMatrix3D& matrix );
+
+ ::com::sun::star::geometry::Matrix2D&
+ matrixFromHomMatrix( ::com::sun::star::geometry::Matrix2D& matrix,
+ const ::basegfx::B2DHomMatrix& transform);
+
+ ::basegfx::B2DHomMatrix&
+ homMatrixFromMatrix( ::basegfx::B2DHomMatrix& transform,
+ const ::com::sun::star::geometry::Matrix2D& matrix );
+
+ // Geometry conversions
+ // ===================================================================
+
+ ::com::sun::star::geometry::RealSize2D size2DFromB2DSize( const ::basegfx::B2DVector& );
+ ::com::sun::star::geometry::RealPoint2D point2DFromB2DPoint( const ::basegfx::B2DPoint& );
+ ::com::sun::star::geometry::RealRectangle2D rectangle2DFromB2DRectangle( const ::basegfx::B2DRange& );
+ ::com::sun::star::geometry::RealRectangle3D rectangle3DFromB3DRectangle( const ::basegfx::B3DRange& );
+
+ ::basegfx::B2DVector b2DSizeFromRealSize2D( const ::com::sun::star::geometry::RealSize2D& );
+ ::basegfx::B2DPoint b2DPointFromRealPoint2D( const ::com::sun::star::geometry::RealPoint2D& );
+ ::basegfx::B2DRange b2DRectangleFromRealRectangle2D( const ::com::sun::star::geometry::RealRectangle2D& );
+ ::basegfx::B3DRange b3DRectangleFromRealRectangle3D( const ::com::sun::star::geometry::RealRectangle3D& );
+
+ ::com::sun::star::geometry::IntegerSize2D integerSize2DFromB2ISize( const ::basegfx::B2IVector& );
+ ::com::sun::star::geometry::IntegerPoint2D integerPoint2DFromB2IPoint( const ::basegfx::B2IPoint& );
+ ::com::sun::star::geometry::IntegerRectangle2D integerRectangle2DFromB2IRectangle( const ::basegfx::B2IRange& );
+
+ ::basegfx::B2IVector b2ISizeFromIntegerSize2D( const ::com::sun::star::geometry::IntegerSize2D& );
+ ::basegfx::B2IPoint b2IPointFromIntegerPoint2D( const ::com::sun::star::geometry::IntegerPoint2D& );
+ ::basegfx::B2IRange b2IRectangleFromIntegerRectangle2D( const ::com::sun::star::geometry::IntegerRectangle2D& );
+
+ ::com::sun::star::awt::Size awtSizeFromB2ISize( const ::basegfx::B2IVector& );
+ ::com::sun::star::awt::Point awtPointFromB2IPoint( const ::basegfx::B2IPoint& );
+ ::com::sun::star::awt::Rectangle awtRectangleFromB2IRectangle( const ::basegfx::B2IRange& );
+
+ ::basegfx::B2IVector b2ISizeFromAwtSize( const ::com::sun::star::awt::Size& );
+ ::basegfx::B2IPoint b2IPointFromAwtPoint( const ::com::sun::star::awt::Point& );
+ ::basegfx::B2IRange b2IRectangleFromAwtRectangle( const ::com::sun::star::awt::Rectangle& );
+
+ // Geometry comparisons
+ // ===================================================================
+
+ bool RealSize2DAreEqual( const ::com::sun::star::geometry::RealSize2D& rA, const ::com::sun::star::geometry::RealSize2D& rB );
+ bool RealPoint2DAreEqual( const ::com::sun::star::geometry::RealPoint2D& rA, const ::com::sun::star::geometry::RealPoint2D& rB );
+ bool RealRectangle2DAreEqual( const ::com::sun::star::geometry::RealRectangle2D& rA, const ::com::sun::star::geometry::RealRectangle2D& rB );
+ bool RealRectangle3DAreEqual( const ::com::sun::star::geometry::RealRectangle3D& rA, const ::com::sun::star::geometry::RealRectangle3D& rB );
+ bool AffineMatrix2DAreEqual( const ::com::sun::star::geometry::AffineMatrix2D& rA, const ::com::sun::star::geometry::AffineMatrix2D& rB );
+
+ bool IntegerSize2DAreEqual( const ::com::sun::star::geometry::IntegerSize2D& rA, const ::com::sun::star::geometry::IntegerSize2D& rB );
+ bool IntegerPoint2DAreEqual( const ::com::sun::star::geometry::IntegerPoint2D& rA, const ::com::sun::star::geometry::IntegerPoint2D& rB );
+ bool IntegerRectangle2DAreEqual( const ::com::sun::star::geometry::IntegerRectangle2D& rA, const ::com::sun::star::geometry::IntegerRectangle2D& rB );
+
+ bool awtSizeAreEqual( const ::com::sun::star::awt::Size& rA, const ::com::sun::star::awt::Size& rB );
+ bool awtPointAreEqual( const ::com::sun::star::awt::Point& rA, const ::com::sun::star::awt::Point& rB );
+ bool awtRectangleAreEqual( const ::com::sun::star::awt::Rectangle& rA, const ::com::sun::star::awt::Rectangle& rB );
+
+ /** Return smalltest integer range, which completely contains
+ given floating point range.
+
+ @param rRange
+ Input range. Values must be within the representable
+ bounds of sal_Int32
+
+ @return the closest integer range, which completely
+ contains rRange.
+ */
+ ::basegfx::B2IRange b2ISurroundingRangeFromB2DRange( const ::basegfx::B2DRange& rRange );
+
+ /** Return smalltest B2DRange with integer values, which
+ completely contains given floating point range.
+
+ @param rRange
+ Input range.
+
+ @return the closest B2DRange with integer coordinates,
+ which completely contains rRange.
+ */
+ ::basegfx::B2DRange b2DSurroundingIntegerRangeFromB2DRange( const ::basegfx::B2DRange& rRange );
+
+ }
+}
+
+#endif /* _BGFX_TOOLS_CANVASTOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/debugplotter.hxx b/basegfx/inc/basegfx/tools/debugplotter.hxx
new file mode 100644
index 000000000000..0a0f4d5bafa4
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/debugplotter.hxx
@@ -0,0 +1,110 @@
+/* -*- 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 _BGFX_TOOLS_DEBUGPLOTTER_HXX
+#define _BGFX_TOOLS_DEBUGPLOTTER_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <rtl/string.hxx>
+#include <boost/utility.hpp> // for noncopyable
+#include <vector>
+#include <utility>
+#include <iosfwd>
+
+
+namespace basegfx
+{
+ class B2DCubicBezier;
+
+ /** Generates debug output for various basegfx data types.
+
+ Use this class to produce debug (trace) output for various
+ basegfx geometry data types. By default, this class outputs
+ via OSL_TRACE (i.e. to stderr), and uses the gnuplot output
+ format.
+
+ To be able to generate one coherent block of output, this
+ class delays actual writing to its destructor
+ */
+ class DebugPlotter : private ::boost::noncopyable
+ {
+ public:
+ /** Create new debug output object
+
+ @param pTitle
+ Title of the debug output, will appear in trace output
+ */
+ explicit DebugPlotter( const sal_Char* pTitle );
+
+ /** Create new debug output object
+
+ @param pTitle
+ Title of the debug output, will appear in trace output
+
+ @param rOutputStream
+ Stream to write output to. Must stay valid over the
+ lifetime of this object!
+ */
+ DebugPlotter( const sal_Char* pTitle,
+ ::std::ostream& rOutputStream );
+
+ ~DebugPlotter();
+
+ void plot( const B2DPoint& rPoint,
+ const sal_Char* pTitle );
+ void plot( const B2DVector& rVec,
+ const sal_Char* pTitle );
+ void plot( const B2DCubicBezier& rBezier,
+ const sal_Char* pTitle );
+ void plot( const B2DRange& rRange,
+ const sal_Char* pTitle );
+ void plot( const B2DPolygon& rPoly,
+ const sal_Char* pTitle );
+ void plot( const B2DPolyPolygon& rPoly,
+ const sal_Char* pTitle );
+
+ private:
+ void print( const sal_Char* );
+
+ ::rtl::OString maTitle;
+ ::std::vector< ::std::pair< B2DPoint, ::rtl::OString > > maPoints;
+ ::std::vector< ::std::pair< B2DVector, ::rtl::OString > > maVectors;
+ ::std::vector< ::std::pair< B2DRange, ::rtl::OString > > maRanges;
+ ::std::vector< ::std::pair< B2DPolygon, ::rtl::OString > > maPolygons;
+
+ ::std::ostream* mpOutputStream;
+ };
+}
+
+#endif /* _BGFX_TOOLS_DEBUGPLOTTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/gradienttools.hxx b/basegfx/inc/basegfx/tools/gradienttools.hxx
new file mode 100644
index 000000000000..dea18fe67565
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/gradienttools.hxx
@@ -0,0 +1,413 @@
+/* -*- 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 _BGFX_TOOLS_GRADIENTTOOLS_HXX
+#define _BGFX_TOOLS_GRADIENTTOOLS_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+#include <vector>
+#include <algorithm>
+
+namespace basegfx
+{
+ /** Gradient definition as used in ODF 1.2
+
+ This struct collects all data necessary for rendering ODF
+ 1.2-compatible gradients. Use the createXXXODFGradientInfo()
+ methods below for initializing from ODF attributes.
+ */
+ struct ODFGradientInfo
+ {
+ /** transformation mapping from [0,1]^2 texture coordinate
+ space to [0,1]^2 shape coordinate space
+ */
+ B2DHomMatrix maTextureTransform;
+
+ /** transformation mapping from [0,1]^2 shape coordinate space
+ to [0,1]^2 texture coordinate space. This is the
+ transformation commonly used to create gradients from a
+ scanline rasterizer (put shape u/v coordinates into it, get
+ texture s/t coordinates out of it)
+ */
+ B2DHomMatrix maBackTextureTransform;
+
+ /** Aspect ratio of the gradient. Only used in drawinglayer
+ for generating nested gradient polygons currently. Already
+ catered for in the transformations above.
+ */
+ double mfAspectRatio;
+
+ /** Requested gradient steps to render. See the
+ implementations of the getXXXGradientAlpha() methods below,
+ the semantic differs slightly for the different gradient
+ types.
+ */
+ sal_uInt32 mnSteps;
+ };
+
+ namespace tools
+ {
+ /** Create matrix for ODF's linear gradient definition
+
+ Note that odf linear gradients are varying in y direction.
+
+ @param o_rGradientInfo
+ Receives the calculated texture transformation matrix (for
+ use with standard [0,1]x[0,1] texture coordinates)
+
+ @param rTargetArea
+ Output area, needed for aspect ratio calculations and
+ texture transformation
+
+ @param nSteps
+ Number of gradient steps (from ODF)
+
+ @param fBorder
+ Width of gradient border (from ODF)
+
+ @param fAngle
+ Gradient angle (from ODF)
+ */
+ ODFGradientInfo& createLinearODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle);
+
+ /** Calculate linear gradient blend value
+
+ This method generates you the lerp alpha value for
+ blending linearly between gradient start and end color,
+ according to the formula (startCol*(1.0-alpha) + endCol*alpha)
+
+ @param rUV
+ Current uv coordinate. Values outside [0,1] will be
+ clamped. Assumes gradient color varies along the y axis.
+
+ @param rGradInfo
+ Gradient info, for transformation and number of steps
+ */
+ inline double getLinearGradientAlpha(const B2DPoint& rUV,
+ const ODFGradientInfo& rGradInfo )
+ {
+ const B2DPoint aCoor(rGradInfo.maBackTextureTransform * rUV);
+ const double t(clamp(aCoor.getY(), 0.0, 1.0));
+ const sal_uInt32 nSteps(rGradInfo.mnSteps);
+
+ if(nSteps > 2L && nSteps < 128L)
+ return floor(t * nSteps) / double(nSteps + 1L);
+
+ return t;
+ }
+
+ /** Create matrix for ODF's axial gradient definition
+
+ Note that odf axial gradients are varying in y
+ direction. Note further that you can map the axial
+ gradient to a linear gradient (in case you want or need to
+ avoid an extra gradient renderer), by using
+ createLinearODFGradientInfo() instead, shifting the
+ resulting texture transformation by 0.5 to the top and
+ appending the same stop colors again, but mirrored.
+
+ @param o_rGradientInfo
+ Receives the calculated texture transformation matrix (for
+ use with standard [0,1]x[0,1] texture coordinates)
+
+ @param rTargetArea
+ Output area, needed for aspect ratio calculations and
+ texture transformation
+
+ @param nSteps
+ Number of gradient steps (from ODF)
+
+ @param fBorder
+ Width of gradient border (from ODF)
+
+ @param fAngle
+ Gradient angle (from ODF)
+ */
+ ODFGradientInfo& createAxialODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle);
+
+ /** Calculate axial gradient blend value
+
+ This method generates you the lerp alpha value for
+ blending linearly between gradient start and end color,
+ according to the formula (startCol*(1.0-alpha) + endCol*alpha)
+
+ @param rUV
+ Current uv coordinate. Values outside [0,1] will be
+ clamped. Assumes gradient color varies along the y axis.
+
+ @param rGradInfo
+ Gradient info, for transformation and number of steps
+ */
+ inline double getAxialGradientAlpha(const B2DPoint& rUV,
+ const ODFGradientInfo& rGradInfo )
+ {
+ const B2DPoint aCoor(rGradInfo.maBackTextureTransform * rUV);
+ const double t(clamp(fabs(aCoor.getY()), 0.0, 1.0));
+ const sal_uInt32 nSteps(rGradInfo.mnSteps);
+ const double fInternalSteps((nSteps * 2L) - 1L);
+
+ if(nSteps > 2L && nSteps < 128L)
+ return floor(((t * fInternalSteps) + 1.0) / 2.0) / double(nSteps - 1L);
+
+ return t;
+ }
+
+ /** Create matrix for ODF's radial gradient definition
+
+ @param o_rGradientInfo
+ Receives the calculated texture transformation matrix (for
+ use with standard [0,1]x[0,1] texture coordinates)
+
+ @param rTargetArea
+ Output area, needed for aspect ratio calculations and
+ texture transformation
+
+ @param rOffset
+ Gradient offset value (from ODF)
+
+ @param nSteps
+ Number of gradient steps (from ODF)
+
+ @param fBorder
+ Width of gradient border (from ODF)
+
+ @param fAngle
+ Gradient angle (from ODF)
+ */
+ ODFGradientInfo& createRadialODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder);
+
+ /** Calculate radial gradient blend value
+
+ This method generates you the lerp alpha value for
+ blending linearly between gradient start and end color,
+ according to the formula (startCol*(1.0-alpha) + endCol*alpha)
+
+ @param rUV
+ Current uv coordinate. Values outside [0,1] will be
+ clamped.
+
+ @param rGradInfo
+ Gradient info, for transformation and number of steps
+ */
+ inline double getRadialGradientAlpha(const B2DPoint& rUV,
+ const ODFGradientInfo& rGradInfo )
+ {
+ const B2DPoint aCoor(rGradInfo.maBackTextureTransform * rUV);
+ const double fDist(
+ clamp(aCoor.getX() * aCoor.getX() + aCoor.getY() * aCoor.getY(),
+ 0.0,
+ 1.0));
+
+ const double t(1.0 - sqrt(fDist));
+ const sal_uInt32 nSteps(rGradInfo.mnSteps);
+
+ if(nSteps > 2L && nSteps < 128L)
+ return floor(t * nSteps) / double(nSteps - 1L);
+
+ return t;
+ }
+
+ /** Create matrix for ODF's elliptical gradient definition
+
+ @param o_rGradientInfo
+ Receives the calculated texture transformation matrix (for
+ use with standard [0,1]x[0,1] texture coordinates)
+
+ @param rTargetArea
+ Output area, needed for aspect ratio calculations and
+ texture transformation
+
+ @param rOffset
+ Gradient offset value (from ODF)
+
+ @param nSteps
+ Number of gradient steps (from ODF)
+
+ @param fBorder
+ Width of gradient border (from ODF)
+
+ @param fAngle
+ Gradient angle (from ODF)
+ */
+ ODFGradientInfo& createEllipticalODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle);
+
+ /** Calculate elliptical gradient blend value
+
+ This method generates you the lerp alpha value for
+ blending linearly between gradient start and end color,
+ according to the formula (startCol*(1.0-alpha) + endCol*alpha)
+
+ @param rUV
+ Current uv coordinate. Values outside [0,1] will be
+ clamped.
+
+ @param rGradInfo
+ Gradient info, for transformation and number of steps
+ */
+ inline double getEllipticalGradientAlpha(const B2DPoint& rUV,
+ const ODFGradientInfo& rGradInfo )
+ {
+ return getRadialGradientAlpha(rUV,rGradInfo); // only matrix setup differs
+ }
+
+ /** Create matrix for ODF's square gradient definition
+
+ @param o_rGradientInfo
+ Receives the calculated texture transformation matrix (for
+ use with standard [0,1]x[0,1] texture coordinates)
+
+ @param rTargetArea
+ Output area, needed for aspect ratio calculations and
+ texture transformation
+
+ @param rOffset
+ Gradient offset value (from ODF)
+
+ @param nSteps
+ Number of gradient steps (from ODF)
+
+ @param fBorder
+ Width of gradient border (from ODF)
+
+ @param fAngle
+ Gradient angle (from ODF)
+ */
+ ODFGradientInfo& createSquareODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle);
+
+ /** Calculate square gradient blend value
+
+ This method generates you the lerp alpha value for
+ blending linearly between gradient start and end color,
+ according to the formula (startCol*(1.0-alpha) + endCol*alpha)
+
+ @param rUV
+ Current uv coordinate. Values outside [0,1] will be
+ clamped.
+
+ @param rGradInfo
+ Gradient info, for transformation and number of steps
+ */
+ inline double getSquareGradientAlpha(const B2DPoint& rUV,
+ const ODFGradientInfo& rGradInfo )
+ {
+ const B2DPoint aCoor(rGradInfo.maBackTextureTransform * rUV);
+ const double fAbsX(fabs(aCoor.getX()));
+ const double fAbsY(fabs(aCoor.getY()));
+
+ if(fTools::moreOrEqual(fAbsX, 1.0) || fTools::moreOrEqual(fAbsY, 1.0))
+ return 0.0;
+
+ const double t(1.0 - (fAbsX > fAbsY ? fAbsX : fAbsY));
+ const sal_uInt32 nSteps(rGradInfo.mnSteps);
+
+ if(nSteps > 2L && nSteps < 128L)
+ return floor(t * nSteps) / double(nSteps - 1L);
+
+ return t;
+ }
+
+ /** Create matrix for ODF's rectangular gradient definition
+
+ @param o_rGradientInfo
+ Receives the calculated texture transformation matrix (for
+ use with standard [0,1]x[0,1] texture coordinates)
+
+ @param rTargetArea
+ Output area, needed for aspect ratio calculations and
+ texture transformation
+
+ @param rOffset
+ Gradient offset value (from ODF)
+
+ @param nSteps
+ Number of gradient steps (from ODF)
+
+ @param fBorder
+ Width of gradient border (from ODF)
+
+ @param fAngle
+ Gradient angle (from ODF)
+ */
+ ODFGradientInfo& createRectangularODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle);
+
+ /** Calculate rectangular gradient blend value
+
+ This method generates you the lerp alpha value for
+ blending linearly between gradient start and end color,
+ according to the formula (startCol*(1.0-alpha) + endCol*alpha)
+
+ @param rUV
+ Current uv coordinate. Values outside [0,1] will be
+ clamped.
+
+ @param rGradInfo
+ Gradient info, for transformation and number of steps
+ */
+ inline double getRectangularGradientAlpha(const B2DPoint& rUV,
+ const ODFGradientInfo& rGradInfo )
+ {
+ return getSquareGradientAlpha(rUV, rGradInfo); // only matrix setup differs
+ }
+ }
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/keystoplerp.hxx b/basegfx/inc/basegfx/tools/keystoplerp.hxx
new file mode 100644
index 000000000000..1762e09a60ef
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/keystoplerp.hxx
@@ -0,0 +1,103 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: canvastools.hxx,v $
+ * $Revision: 1.10 $
+ *
+ * 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 _BGFX_TOOLS_KEYSTOPLERP_HXX
+#define _BGFX_TOOLS_KEYSTOPLERP_HXX
+
+#include <basegfx/numeric/ftools.hxx>
+#include <vector>
+
+namespace com{ namespace sun{ namespace star{ namespace uno {
+ template<typename T> class Sequence;
+}}}}
+
+namespace basegfx
+{
+ namespace tools
+ {
+ /** Lerp in a vector of key stops
+
+ This class holds a key stop vector and provides the
+ functionality to lerp inside it. Useful e.g. for
+ multi-stop gradients, or the SMIL key time activity.
+
+ For those, given a global [0,1] lerp alpha, one need to
+ find the suitable bucket index from key stop vector, and
+ then calculate the relative alpha between the two buckets
+ found.
+ */
+ class KeyStopLerp
+ {
+ public:
+ typedef std::pair<std::ptrdiff_t,double> ResultType;
+
+ /** Create lerper with given vector of stops
+
+ @param rKeyStops
+
+ Vector of stops, must contain at least two elements
+ (though preferrably more, otherwise you probably don't
+ need key stop lerping in the first place). All
+ elements must be of monotonically increasing value.
+ */
+ explicit KeyStopLerp( const std::vector<double>& rKeyStops );
+
+ /** Create lerper with given sequence of stops
+
+ @param rKeyStops
+
+ Sequence of stops, must contain at least two elements
+ (though preferrably more, otherwise you probably don't
+ need key stop lerping in the first place). All
+ elements must be of monotonically increasing value.
+ */
+ explicit KeyStopLerp( const ::com::sun::star::uno::Sequence<double>& rKeyStops );
+
+ /** Find two nearest bucket index & interpolate
+
+ @param fAlpha
+ Find bucket index i, with keyStops[i] < fAlpha <=
+ keyStops[i+1]. Return new alpha value in [0,1),
+ proportional to fAlpha's position between keyStops[i]
+ and keyStops[i+1]
+ */
+ ResultType lerp(double fAlpha) const;
+
+ private:
+ std::vector<double> maKeyStops;
+ mutable std::ptrdiff_t mnLastIndex;
+ };
+ }
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/lerp.hxx b/basegfx/inc/basegfx/tools/lerp.hxx
new file mode 100644
index 000000000000..dd513400835b
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/lerp.hxx
@@ -0,0 +1,63 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: lerp.hxx,v $
+ * $Revision: 1.6 $
+ *
+ * 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 _BGFX_TOOLS_LERP_HXX
+#define _BGFX_TOOLS_LERP_HXX
+
+#include <sal/types.h>
+
+namespace basegfx
+{
+ namespace tools
+ {
+ /** Generic linear interpolator
+
+ @tpl ValueType
+ Must have operator+ and operator* defined, and should
+ have value semantics.
+
+ @param t
+ As usual, t must be in the [0,1] range
+ */
+ template< typename ValueType > ValueType lerp( const ValueType& rFrom,
+ const ValueType& rTo,
+ double t )
+ {
+ // This is only to suppress a double->int warning. All other
+ // types should be okay here.
+ return static_cast<ValueType>( (1.0-t)*rFrom + t*rTo );
+ }
+ }
+}
+
+#endif /* _BGFX_TOOLS_LERP_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/rectcliptools.hxx b/basegfx/inc/basegfx/tools/rectcliptools.hxx
new file mode 100644
index 000000000000..7e2ff80876ca
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/rectcliptools.hxx
@@ -0,0 +1,91 @@
+/* -*- 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 _BGFX_TOOLS_RECTCLIPTOOLS_HXX
+#define _BGFX_TOOLS_RECTCLIPTOOLS_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ namespace RectClipFlags
+ {
+ static const sal_uInt32 LEFT = (sal_Int32)0x01;
+ static const sal_uInt32 RIGHT = (sal_Int32)0x02;
+ static const sal_uInt32 TOP = (sal_Int32)0x04;
+ static const sal_uInt32 BOTTOM = (sal_Int32)0x08;
+ }
+
+ /** Calc clip mask for Cohen-Sutherland rectangle clip
+
+ This function returns a clip mask used for the
+ Cohen-Sutherland rectangle clip method, where one or more
+ of the lower four bits are set, if the given point is
+ outside one or more of the four half planes defining the
+ rectangle (see RectClipFlags for possible values)
+ */
+ template< class Point, class Rect > inline
+ sal_uInt32 getCohenSutherlandClipFlags( const Point& rP,
+ const Rect& rR )
+ {
+ // maxY | minY | maxX | minX
+ sal_uInt32 clip = (rP.getX() < rR.getMinX()) << 0;
+ clip |= (rP.getX() > rR.getMaxX()) << 1;
+ clip |= (rP.getY() < rR.getMinY()) << 2;
+ clip |= (rP.getY() > rR.getMaxY()) << 3;
+ return clip;
+ }
+
+ /** Determine number of clip planes hit by given clip mask
+
+ This method returns the number of one bits in the four
+ least significant bits of the argument, which amounts to
+ the number of clip planes hit within the
+ getCohenSutherlandClipFlags() method.
+ */
+ inline sal_uInt32 getNumberOfClipPlanes( sal_uInt32 nFlags )
+ {
+ // classic bit count algo, see e.g. Reingold, Nievergelt,
+ // Deo: Combinatorial Algorithms, Theory and Practice,
+ // Prentice-Hall 1977
+ nFlags = (nFlags & 0x05) + ((nFlags >> 1) & 0x05);
+ nFlags = (nFlags & 0x03) + (nFlags >> 2); // no need for &
+ // 0x03, can't
+ // overflow
+ return nFlags;
+ }
+ }
+}
+
+#endif // _BGFX_TOOLS_RECTCLIPTOOLS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/tools.hxx b/basegfx/inc/basegfx/tools/tools.hxx
new file mode 100644
index 000000000000..8b519e0b1371
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/tools.hxx
@@ -0,0 +1,134 @@
+/* -*- 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 _BGFX_TOOLS_TOOLS_HXX
+#define _BGFX_TOOLS_TOOLS_HXX
+
+#include <sal/types.h>
+
+namespace basegfx
+{
+ class B2DPoint;
+ class B2DRange;
+
+ namespace tools
+ {
+ /** Liang-Barsky 2D line clipping algorithm
+
+ This function clips a line given by two points against the
+ given rectangle. The resulting line is returned in the
+ given points.
+
+ @param io_rStart
+ Start point of the line. On return, contains the clipped
+ start point.
+
+ @param io_rEnd
+ End point of the line. On return, contains the clipped
+ end point.
+
+ @param rClipRect
+ The rectangle to clip against
+
+ @return true, when at least part of the line is visible
+ after the clip, false otherwise
+ */
+ bool liangBarskyClip2D( ::basegfx::B2DPoint& io_rStart,
+ ::basegfx::B2DPoint& io_rEnd,
+ const ::basegfx::B2DRange& rClipRect );
+
+ /** Expand given parallelogram, such that it extends beyond
+ bound rect in a given direction.
+
+ This method is useful when e.g. generating one-dimensional
+ gradients, such as linear or axial gradients: those
+ gradients vary only in one direction, the other has
+ constant color. Most of the time, those gradients extends
+ infinitely in the direction with the constant color, but
+ practically, one always has a limiting bound rect into
+ which the gradient is painted. The method at hand now
+ extends a given parallelogram (e.g. the transformed
+ bounding box of a gradient) virtually into infinity to the
+ top and to the bottom (i.e. normal to the line io_rLeftTop
+ io_rRightTop), such that the given rectangle is guaranteed
+ to be covered in that direction.
+
+ @attention There might be some peculiarities with this
+ method, that might limit its usage to the described
+ gradients. One of them is the fact that when determining
+ how far the parallelogram has to be extended to the top or
+ the bottom, the upper and lower border are assumed to be
+ infinite lines.
+
+ @param io_rLeftTop
+ Left, top edge of the parallelogramm. Note that this need
+ not be the left, top edge geometrically, it's just used
+ when determining the extension direction. Thus, it's
+ perfectly legal to affine-transform a rectangle, and given
+ the transformed point here. On method return, this
+ parameter will contain the adapted output.
+
+ @param io_rLeftBottom
+ Left, bottom edge of the parallelogramm. Note that this need
+ not be the left, bottom edge geometrically, it's just used
+ when determining the extension direction. Thus, it's
+ perfectly legal to affine-transform a rectangle, and given
+ the transformed point here. On method return, this
+ parameter will contain the adapted output.
+
+ @param io_rRightTop
+ Right, top edge of the parallelogramm. Note that this need
+ not be the right, top edge geometrically, it's just used
+ when determining the extension direction. Thus, it's
+ perfectly legal to affine-transform a rectangle, and given
+ the transformed point here. On method return, this
+ parameter will contain the adapted output.
+
+ @param io_rRightBottom
+ Right, bottom edge of the parallelogramm. Note that this need
+ not be the right, bottom edge geometrically, it's just used
+ when determining the extension direction. Thus, it's
+ perfectly legal to affine-transform a rectangle, and given
+ the transformed point here. On method return, this
+ parameter will contain the adapted output.
+
+ @param rFitTarget
+ The rectangle to fit the parallelogram into.
+ */
+ void infiniteLineFromParallelogram( ::basegfx::B2DPoint& io_rLeftTop,
+ ::basegfx::B2DPoint& io_rLeftBottom,
+ ::basegfx::B2DPoint& io_rRightTop,
+ ::basegfx::B2DPoint& io_rRightBottom,
+ const ::basegfx::B2DRange& rFitTarget );
+
+ }
+}
+
+#endif /* _BGFX_TOOLS_TOOLS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tools/unopolypolygon.hxx b/basegfx/inc/basegfx/tools/unopolypolygon.hxx
new file mode 100644
index 000000000000..a5bc22b2d5bb
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/unopolypolygon.hxx
@@ -0,0 +1,115 @@
+/* -*- 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 INCLUDED_BASEGFX_UNOPOLYPOLYGON_HXX
+#define INCLUDED_BASEGFX_UNOPOLYPOLYGON_HXX
+
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase3.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/rendering/FillRule.hpp>
+#include <com/sun/star/rendering/XLinePolyPolygon2D.hpp>
+#include <com/sun/star/rendering/XBezierPolyPolygon2D.hpp>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+
+namespace basegfx
+{
+namespace unotools
+{
+ typedef ::cppu::WeakComponentImplHelper3<
+ ::com::sun::star::rendering::XLinePolyPolygon2D,
+ ::com::sun::star::rendering::XBezierPolyPolygon2D,
+ ::com::sun::star::lang::XServiceInfo > UnoPolyPolygonBase;
+
+ class UnoPolyPolygon : private cppu::BaseMutex,
+ public UnoPolyPolygonBase
+ {
+ public:
+ explicit UnoPolyPolygon( const B2DPolyPolygon& );
+
+ // XPolyPolygon2D
+ virtual void SAL_CALL addPolyPolygon( const ::com::sun::star::geometry::RealPoint2D& position, const ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >& polyPolygon ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Int32 SAL_CALL getNumberOfPolygons( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Int32 SAL_CALL getNumberOfPolygonPoints( ::sal_Int32 polygon ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::rendering::FillRule SAL_CALL getFillRule( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFillRule( ::com::sun::star::rendering::FillRule fillRule ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Bool SAL_CALL isClosed( ::sal_Int32 index ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setClosed( ::sal_Int32 index, ::sal_Bool closedState ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XLinePolyPolygon2D
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealPoint2D > > SAL_CALL getPoints( ::sal_Int32 nPolygonIndex, ::sal_Int32 nNumberOfPolygons, ::sal_Int32 nPointIndex, ::sal_Int32 nNumberOfPoints ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPoints( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealPoint2D > >& points, ::sal_Int32 nPolygonIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::geometry::RealPoint2D SAL_CALL getPoint( ::sal_Int32 nPolygonIndex, ::sal_Int32 nPointIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPoint( const ::com::sun::star::geometry::RealPoint2D& point, ::sal_Int32 nPolygonIndex, ::sal_Int32 nPointIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XBezierPolyPolygon2D
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealBezierSegment2D > > SAL_CALL getBezierSegments( ::sal_Int32 nPolygonIndex, ::sal_Int32 nNumberOfPolygons, ::sal_Int32 nPointIndex, ::sal_Int32 nNumberOfPoints ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setBezierSegments( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealBezierSegment2D > >& points, ::sal_Int32 nPolygonIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::geometry::RealBezierSegment2D SAL_CALL getBezierSegment( ::sal_Int32 nPolygonIndex, ::sal_Int32 nPointIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setBezierSegment( const ::com::sun::star::geometry::RealBezierSegment2D& point, ::sal_Int32 nPolygonIndex, ::sal_Int32 nPointIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
+
+ B2DPolyPolygon getPolyPolygon() const;
+
+ protected:
+ /// Check whether index is a valid polygon index
+ void checkIndex( sal_Int32 nIndex ) const // throw (::com::sun::star::lang::IndexOutOfBoundsException);
+ {
+ if( nIndex < 0 || nIndex >= static_cast<sal_Int32>(maPolyPoly.count()) )
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+
+ B2DPolyPolygon getSubsetPolyPolygon( sal_Int32 nPolygonIndex,
+ sal_Int32 nNumberOfPolygons,
+ sal_Int32 nPointIndex,
+ sal_Int32 nNumberOfPoints ) const;
+
+ /// Get cow copy of internal polygon. not thread-safe outside this object.
+ B2DPolyPolygon getPolyPolygonUnsafe() const;
+
+ /// Called whenever internal polypolygon gets modified
+ virtual void modifying() const {}
+
+ private:
+ UnoPolyPolygon( const UnoPolyPolygon& );
+ UnoPolyPolygon& operator=( const UnoPolyPolygon& );
+
+ B2DPolyPolygon maPolyPoly;
+ ::com::sun::star::rendering::FillRule meFillRule;
+ };
+}
+}
+
+#endif /* INCLUDED_BASEGFX_UNOPOLYPOLYGON_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tuple/b2dtuple.hxx b/basegfx/inc/basegfx/tuple/b2dtuple.hxx
new file mode 100644
index 000000000000..6a4ab1e32f9d
--- /dev/null
+++ b/basegfx/inc/basegfx/tuple/b2dtuple.hxx
@@ -0,0 +1,362 @@
+/* -*- 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 _BGFX_TUPLE_B2DTUPLE_HXX
+#define _BGFX_TUPLE_B2DTUPLE_HXX
+
+#include <sal/types.h>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ // predeclarations
+ class B2ITuple;
+
+ /** Base class for all Points/Vectors with two double values
+
+ This class provides all methods common to Point
+ avd Vector classes which are derived from here.
+
+ @derive Use this class to implement Points or Vectors
+ which are based on two double values
+ */
+ class B2DTuple
+ {
+ protected:
+ double mfX;
+ double mfY;
+
+ public:
+ /** Create a 2D Tuple
+
+ The tuple is initialized to (0.0, 0.0)
+ */
+ B2DTuple()
+ : mfX(0.0),
+ mfY(0.0)
+ {}
+
+ /** Create a 2D Tuple
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 2D Tuple.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 2D Tuple.
+ */
+ B2DTuple(double fX, double fY)
+ : mfX( fX ),
+ mfY( fY )
+ {}
+
+ /** Create a copy of a 2D Tuple
+
+ @param rTup
+ The 2D Tuple which will be copied.
+ */
+ B2DTuple(const B2DTuple& rTup)
+ : mfX( rTup.mfX ),
+ mfY( rTup.mfY )
+ {}
+
+ /** Create a copy of a 2D integer Tuple
+
+ @param rTup
+ The 2D Tuple which will be copied.
+ */
+ explicit B2DTuple(const B2ITuple& rTup);
+
+ ~B2DTuple()
+ {}
+
+ /// Get X-Coordinate of 2D Tuple
+ double getX() const
+ {
+ return mfX;
+ }
+
+ /// Get Y-Coordinate of 2D Tuple
+ double getY() const
+ {
+ return mfY;
+ }
+
+ /// Set X-Coordinate of 2D Tuple
+ void setX(double fX)
+ {
+ mfX = fX;
+ }
+
+ /// Set Y-Coordinate of 2D Tuple
+ void setY(double fY)
+ {
+ mfY = fY;
+ }
+
+ /// Array-access to 2D Tuple
+ const double& operator[] (int nPos) const
+ {
+ // Here, normally one if(...) should be used. In the assumption that
+ // both double members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mfX; return mfY;
+ return *((&mfX) + nPos);
+ }
+
+ /// Array-access to 2D Tuple
+ double& operator[] (int nPos)
+ {
+ // Here, normally one if(...) should be used. In the assumption that
+ // both double members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mfX; return mfY;
+ return *((&mfX) + nPos);
+ }
+
+ // comparators with tolerance
+ //////////////////////////////////////////////////////////////////////
+
+ bool equalZero() const
+ {
+ return (this == &getEmptyTuple() ||
+ (fTools::equalZero(mfX) && fTools::equalZero(mfY)));
+ }
+
+ bool equalZero(const double& rfSmallValue) const
+ {
+ return (this == &getEmptyTuple() ||
+ (fTools::equalZero(mfX, rfSmallValue) && fTools::equalZero(mfY, rfSmallValue)));
+ }
+
+ bool equal(const B2DTuple& rTup) const
+ {
+ return (
+ this == &rTup ||
+ (fTools::equal(mfX, rTup.mfX) &&
+ fTools::equal(mfY, rTup.mfY)));
+ }
+
+ bool equal(const B2DTuple& rTup, const double& rfSmallValue) const
+ {
+ return (
+ this == &rTup ||
+ (fTools::equal(mfX, rTup.mfX, rfSmallValue) &&
+ fTools::equal(mfY, rTup.mfY, rfSmallValue)));
+ }
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B2DTuple& operator+=( const B2DTuple& rTup )
+ {
+ mfX += rTup.mfX;
+ mfY += rTup.mfY;
+ return *this;
+ }
+
+ B2DTuple& operator-=( const B2DTuple& rTup )
+ {
+ mfX -= rTup.mfX;
+ mfY -= rTup.mfY;
+ return *this;
+ }
+
+ B2DTuple& operator/=( const B2DTuple& rTup )
+ {
+ mfX /= rTup.mfX;
+ mfY /= rTup.mfY;
+ return *this;
+ }
+
+ B2DTuple& operator*=( const B2DTuple& rTup )
+ {
+ mfX *= rTup.mfX;
+ mfY *= rTup.mfY;
+ return *this;
+ }
+
+ B2DTuple& operator*=(double t)
+ {
+ mfX *= t;
+ mfY *= t;
+ return *this;
+ }
+
+ B2DTuple& operator/=(double t)
+ {
+ const double fVal(1.0 / t);
+ mfX *= fVal;
+ mfY *= fVal;
+ return *this;
+ }
+
+ B2DTuple operator-(void) const
+ {
+ return B2DTuple(-mfX, -mfY);
+ }
+
+ bool operator==( const B2DTuple& rTup ) const
+ {
+ return equal(rTup);
+ }
+
+ bool operator!=( const B2DTuple& rTup ) const
+ {
+ return !equal(rTup);
+ }
+
+ B2DTuple& operator=( const B2DTuple& rTup )
+ {
+ mfX = rTup.mfX;
+ mfY = rTup.mfY;
+ return *this;
+ }
+
+ void correctValues(const double fCompareValue = 0.0);
+
+ static const B2DTuple& getEmptyTuple();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ inline B2DTuple minimum(const B2DTuple& rTupA, const B2DTuple& rTupB)
+ {
+ B2DTuple aMin(
+ (rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY());
+ return aMin;
+ }
+
+ inline B2DTuple maximum(const B2DTuple& rTupA, const B2DTuple& rTupB)
+ {
+ B2DTuple aMax(
+ (rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY());
+ return aMax;
+ }
+
+ inline B2DTuple absolute(const B2DTuple& rTup)
+ {
+ B2DTuple aAbs(
+ (0.0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
+ (0.0 > rTup.getY()) ? -rTup.getY() : rTup.getY());
+ return aAbs;
+ }
+
+ inline B2DTuple interpolate(const B2DTuple& rOld1, const B2DTuple& rOld2, double t)
+ {
+ B2DTuple aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY());
+ return aInt;
+ }
+
+ inline B2DTuple average(const B2DTuple& rOld1, const B2DTuple& rOld2)
+ {
+ B2DTuple aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5);
+ return aAvg;
+ }
+
+ inline B2DTuple average(const B2DTuple& rOld1, const B2DTuple& rOld2, const B2DTuple& rOld3)
+ {
+ B2DTuple aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ inline B2DTuple operator+(const B2DTuple& rTupA, const B2DTuple& rTupB)
+ {
+ B2DTuple aSum(rTupA);
+ aSum += rTupB;
+ return aSum;
+ }
+
+ inline B2DTuple operator-(const B2DTuple& rTupA, const B2DTuple& rTupB)
+ {
+ B2DTuple aSub(rTupA);
+ aSub -= rTupB;
+ return aSub;
+ }
+
+ inline B2DTuple operator/(const B2DTuple& rTupA, const B2DTuple& rTupB)
+ {
+ B2DTuple aDiv(rTupA);
+ aDiv /= rTupB;
+ return aDiv;
+ }
+
+ inline B2DTuple operator*(const B2DTuple& rTupA, const B2DTuple& rTupB)
+ {
+ B2DTuple aMul(rTupA);
+ aMul *= rTupB;
+ return aMul;
+ }
+
+ inline B2DTuple operator*(const B2DTuple& rTup, double t)
+ {
+ B2DTuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B2DTuple operator*(double t, const B2DTuple& rTup)
+ {
+ B2DTuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B2DTuple operator/(const B2DTuple& rTup, double t)
+ {
+ B2DTuple aNew(rTup);
+ aNew /= t;
+ return aNew;
+ }
+
+ inline B2DTuple operator/(double t, const B2DTuple& rTup)
+ {
+ B2DTuple aNew(t, t);
+ B2DTuple aTmp(rTup);
+ aNew /= aTmp;
+ return aNew;
+ }
+
+ /** Round double to nearest integer for 2D tuple
+
+ @return the nearest integer for this tuple
+ */
+ B2ITuple fround(const B2DTuple& rTup);
+} // end of namespace basegfx
+
+#endif /* _BGFX_TUPLE_B2DTUPLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tuple/b2i64tuple.hxx b/basegfx/inc/basegfx/tuple/b2i64tuple.hxx
new file mode 100644
index 000000000000..a75e13755820
--- /dev/null
+++ b/basegfx/inc/basegfx/tuple/b2i64tuple.hxx
@@ -0,0 +1,315 @@
+/* -*- 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 _BGFX_TUPLE_B2I64TUPLE_HXX
+#define _BGFX_TUPLE_B2I64TUPLE_HXX
+
+#include <sal/types.h>
+#include <basegfx/tuple/b2dtuple.hxx>
+
+
+namespace basegfx
+{
+ /** Base class for all Points/Vectors with two sal_Int64 values
+
+ This class provides all methods common to Point
+ avd Vector classes which are derived from here.
+
+ @derive Use this class to implement Points or Vectors
+ which are based on two sal_Int64 values
+ */
+ class B2I64Tuple
+ {
+ protected:
+ sal_Int64 mnX;
+ sal_Int64 mnY;
+
+ public:
+ /** Create a 2D Tuple
+
+ The tuple is initialized to (0, 0)
+ */
+ B2I64Tuple()
+ : mnX(0),
+ mnY(0)
+ {}
+
+ /** Create a 2D Tuple
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 2D Tuple.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 2D Tuple.
+ */
+ B2I64Tuple(sal_Int64 fX, sal_Int64 fY)
+ : mnX( fX ),
+ mnY( fY )
+ {}
+
+ /** Create a copy of a 2D Tuple
+
+ @param rTup
+ The 2D Tuple which will be copied.
+ */
+ B2I64Tuple(const B2I64Tuple& rTup)
+ : mnX( rTup.mnX ),
+ mnY( rTup.mnY )
+ {}
+
+ ~B2I64Tuple()
+ {}
+
+ /// Get X-Coordinate of 2D Tuple
+ sal_Int64 getX() const
+ {
+ return mnX;
+ }
+
+ /// Get Y-Coordinate of 2D Tuple
+ sal_Int64 getY() const
+ {
+ return mnY;
+ }
+
+ /// Set X-Coordinate of 2D Tuple
+ void setX(sal_Int64 fX)
+ {
+ mnX = fX;
+ }
+
+ /// Set Y-Coordinate of 2D Tuple
+ void setY(sal_Int64 fY)
+ {
+ mnY = fY;
+ }
+
+ /// Array-access to 2D Tuple
+ const sal_Int64& operator[] (int nPos) const
+ {
+ // Here, normally one if(...) should be used. In the assumption that
+ // both sal_Int64 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; return mnY;
+ return *((&mnX) + nPos);
+ }
+
+ /// Array-access to 2D Tuple
+ sal_Int64& operator[] (int nPos)
+ {
+ // Here, normally one if(...) should be used. In the assumption that
+ // both sal_Int64 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; return mnY;
+ return *((&mnX) + nPos);
+ }
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B2I64Tuple& operator+=( const B2I64Tuple& rTup )
+ {
+ mnX += rTup.mnX;
+ mnY += rTup.mnY;
+ return *this;
+ }
+
+ B2I64Tuple& operator-=( const B2I64Tuple& rTup )
+ {
+ mnX -= rTup.mnX;
+ mnY -= rTup.mnY;
+ return *this;
+ }
+
+ B2I64Tuple& operator/=( const B2I64Tuple& rTup )
+ {
+ mnX /= rTup.mnX;
+ mnY /= rTup.mnY;
+ return *this;
+ }
+
+ B2I64Tuple& operator*=( const B2I64Tuple& rTup )
+ {
+ mnX *= rTup.mnX;
+ mnY *= rTup.mnY;
+ return *this;
+ }
+
+ B2I64Tuple& operator*=(sal_Int64 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ return *this;
+ }
+
+ B2I64Tuple& operator/=(sal_Int64 t)
+ {
+ mnX /= t;
+ mnY /= t;
+ return *this;
+ }
+
+ B2I64Tuple operator-(void) const
+ {
+ return B2I64Tuple(-mnX, -mnY);
+ }
+
+ bool equalZero() const { return mnX == 0 && mnY == 0; }
+
+ bool operator==( const B2I64Tuple& rTup ) const
+ {
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY);
+ }
+
+ bool operator!=( const B2I64Tuple& rTup ) const
+ {
+ return !(*this == rTup);
+ }
+
+ B2I64Tuple& operator=( const B2I64Tuple& rTup )
+ {
+ mnX = rTup.mnX;
+ mnY = rTup.mnY;
+ return *this;
+ }
+
+ static const B2I64Tuple& getEmptyTuple();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ inline B2I64Tuple minimum(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
+ {
+ B2I64Tuple aMin(
+ (rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY());
+ return aMin;
+ }
+
+ inline B2I64Tuple maximum(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
+ {
+ B2I64Tuple aMax(
+ (rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY());
+ return aMax;
+ }
+
+ inline B2I64Tuple absolute(const B2I64Tuple& rTup)
+ {
+ B2I64Tuple aAbs(
+ (0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
+ (0 > rTup.getY()) ? -rTup.getY() : rTup.getY());
+ return aAbs;
+ }
+
+ inline B2DTuple interpolate(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, double t)
+ {
+ B2DTuple aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY());
+ return aInt;
+ }
+
+ inline B2DTuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2)
+ {
+ B2DTuple aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5);
+ return aAvg;
+ }
+
+ inline B2DTuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, const B2I64Tuple& rOld3)
+ {
+ B2DTuple aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ inline B2I64Tuple operator+(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
+ {
+ B2I64Tuple aSum(rTupA);
+ aSum += rTupB;
+ return aSum;
+ }
+
+ inline B2I64Tuple operator-(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
+ {
+ B2I64Tuple aSub(rTupA);
+ aSub -= rTupB;
+ return aSub;
+ }
+
+ inline B2I64Tuple operator/(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
+ {
+ B2I64Tuple aDiv(rTupA);
+ aDiv /= rTupB;
+ return aDiv;
+ }
+
+ inline B2I64Tuple operator*(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
+ {
+ B2I64Tuple aMul(rTupA);
+ aMul *= rTupB;
+ return aMul;
+ }
+
+ inline B2I64Tuple operator*(const B2I64Tuple& rTup, sal_Int64 t)
+ {
+ B2I64Tuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B2I64Tuple operator*(sal_Int64 t, const B2I64Tuple& rTup)
+ {
+ B2I64Tuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B2I64Tuple operator/(const B2I64Tuple& rTup, sal_Int64 t)
+ {
+ B2I64Tuple aNew(rTup);
+ aNew /= t;
+ return aNew;
+ }
+
+ inline B2I64Tuple operator/(sal_Int64 t, const B2I64Tuple& rTup)
+ {
+ B2I64Tuple aNew(t, t);
+ B2I64Tuple aTmp(rTup);
+ aNew /= aTmp;
+ return aNew;
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_TUPLE_B2I64TUPLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tuple/b2ituple.hxx b/basegfx/inc/basegfx/tuple/b2ituple.hxx
new file mode 100644
index 000000000000..636862f365b8
--- /dev/null
+++ b/basegfx/inc/basegfx/tuple/b2ituple.hxx
@@ -0,0 +1,240 @@
+/* -*- 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 _BGFX_TUPLE_B2ITUPLE_HXX
+#define _BGFX_TUPLE_B2ITUPLE_HXX
+
+#include <sal/types.h>
+
+
+namespace basegfx
+{
+ /** Base class for all Points/Vectors with two sal_Int32 values
+
+ This class provides all methods common to Point
+ avd Vector classes which are derived from here.
+
+ @derive Use this class to implement Points or Vectors
+ which are based on two sal_Int32 values
+ */
+ class B2ITuple
+ {
+ protected:
+ sal_Int32 mnX;
+ sal_Int32 mnY;
+
+ public:
+ /** Create a 2D Tuple
+
+ The tuple is initialized to (0, 0)
+ */
+ B2ITuple()
+ : mnX(0),
+ mnY(0)
+ {}
+
+ /** Create a 2D Tuple
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 2D Tuple.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 2D Tuple.
+ */
+ B2ITuple(sal_Int32 fX, sal_Int32 fY)
+ : mnX( fX ),
+ mnY( fY )
+ {}
+
+ /** Create a copy of a 2D Tuple
+
+ @param rTup
+ The 2D Tuple which will be copied.
+ */
+ B2ITuple(const B2ITuple& rTup)
+ : mnX( rTup.mnX ),
+ mnY( rTup.mnY )
+ {}
+
+ ~B2ITuple()
+ {}
+
+ /// Get X-Coordinate of 2D Tuple
+ sal_Int32 getX() const
+ {
+ return mnX;
+ }
+
+ /// Get Y-Coordinate of 2D Tuple
+ sal_Int32 getY() const
+ {
+ return mnY;
+ }
+
+ /// Set X-Coordinate of 2D Tuple
+ void setX(sal_Int32 fX)
+ {
+ mnX = fX;
+ }
+
+ /// Set Y-Coordinate of 2D Tuple
+ void setY(sal_Int32 fY)
+ {
+ mnY = fY;
+ }
+
+ /// Array-access to 2D Tuple
+ const sal_Int32& operator[] (int nPos) const
+ {
+ // Here, normally one if(...) should be used. In the assumption that
+ // both sal_Int32 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; return mnY;
+ return *((&mnX) + nPos);
+ }
+
+ /// Array-access to 2D Tuple
+ sal_Int32& operator[] (int nPos)
+ {
+ // Here, normally one if(...) should be used. In the assumption that
+ // both sal_Int32 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; return mnY;
+ return *((&mnX) + nPos);
+ }
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B2ITuple& operator+=( const B2ITuple& rTup )
+ {
+ mnX += rTup.mnX;
+ mnY += rTup.mnY;
+ return *this;
+ }
+
+ B2ITuple& operator-=( const B2ITuple& rTup )
+ {
+ mnX -= rTup.mnX;
+ mnY -= rTup.mnY;
+ return *this;
+ }
+
+ B2ITuple& operator/=( const B2ITuple& rTup )
+ {
+ mnX /= rTup.mnX;
+ mnY /= rTup.mnY;
+ return *this;
+ }
+
+ B2ITuple& operator*=( const B2ITuple& rTup )
+ {
+ mnX *= rTup.mnX;
+ mnY *= rTup.mnY;
+ return *this;
+ }
+
+ B2ITuple& operator*=(sal_Int32 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ return *this;
+ }
+
+ B2ITuple& operator/=(sal_Int32 t)
+ {
+ mnX /= t;
+ mnY /= t;
+ return *this;
+ }
+
+ B2ITuple operator-(void) const
+ {
+ return B2ITuple(-mnX, -mnY);
+ }
+
+ bool equalZero() const { return mnX == 0 && mnY == 0; }
+
+ bool operator==( const B2ITuple& rTup ) const
+ {
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY);
+ }
+
+ bool operator!=( const B2ITuple& rTup ) const
+ {
+ return !(*this == rTup);
+ }
+
+ B2ITuple& operator=( const B2ITuple& rTup )
+ {
+ mnX = rTup.mnX;
+ mnY = rTup.mnY;
+ return *this;
+ }
+
+ static const B2ITuple& getEmptyTuple();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ class B2DTuple;
+
+ B2ITuple minimum(const B2ITuple& rTupA, const B2ITuple& rTupB);
+
+ B2ITuple maximum(const B2ITuple& rTupA, const B2ITuple& rTupB);
+
+ B2ITuple absolute(const B2ITuple& rTup);
+
+ B2DTuple interpolate(const B2ITuple& rOld1, const B2ITuple& rOld2, double t);
+
+ B2DTuple average(const B2ITuple& rOld1, const B2ITuple& rOld2);
+
+ B2DTuple average(const B2ITuple& rOld1, const B2ITuple& rOld2, const B2ITuple& rOld3);
+
+ B2ITuple operator+(const B2ITuple& rTupA, const B2ITuple& rTupB);
+
+ B2ITuple operator-(const B2ITuple& rTupA, const B2ITuple& rTupB);
+
+ B2ITuple operator/(const B2ITuple& rTupA, const B2ITuple& rTupB);
+
+ B2ITuple operator*(const B2ITuple& rTupA, const B2ITuple& rTupB);
+
+ B2ITuple operator*(const B2ITuple& rTup, sal_Int32 t);
+
+ B2ITuple operator*(sal_Int32 t, const B2ITuple& rTup);
+
+ B2ITuple operator/(const B2ITuple& rTup, sal_Int32 t);
+
+ B2ITuple operator/(sal_Int32 t, const B2ITuple& rTup);
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_TUPLE_B2ITUPLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tuple/b3dtuple.hxx b/basegfx/inc/basegfx/tuple/b3dtuple.hxx
new file mode 100644
index 000000000000..dd2329f1c4bd
--- /dev/null
+++ b/basegfx/inc/basegfx/tuple/b3dtuple.hxx
@@ -0,0 +1,436 @@
+/* -*- 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 _BGFX_TUPLE_B3DTUPLE_HXX
+#define _BGFX_TUPLE_B3DTUPLE_HXX
+
+#include <sal/types.h>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ // predeclarations
+ class B3ITuple;
+
+ /** Base class for all Points/Vectors with three double values
+
+ This class provides all methods common to Point
+ avd Vector classes which are derived from here.
+
+ @derive Use this class to implement Points or Vectors
+ which are based on three double values
+ */
+ class B3DTuple
+ {
+ protected:
+ double mfX;
+ double mfY;
+ double mfZ;
+
+ public:
+ /** Create a 3D Tuple
+
+ The tuple is initialized to (0.0, 0.0, 0.0)
+ */
+ B3DTuple()
+ : mfX(0.0),
+ mfY(0.0),
+ mfZ(0.0)
+ {}
+
+ /** Create a 3D Tuple
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 3D Tuple.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 3D Tuple.
+
+ @param fZ
+ This parameter is used to initialize the Z-coordinate
+ of the 3D Tuple.
+ */
+ B3DTuple(double fX, double fY, double fZ)
+ : mfX(fX),
+ mfY(fY),
+ mfZ(fZ)
+ {}
+
+ /** Create a copy of a 3D Tuple
+
+ @param rTup
+ The 3D Tuple which will be copied.
+ */
+ B3DTuple(const B3DTuple& rTup)
+ : mfX( rTup.mfX ),
+ mfY( rTup.mfY ),
+ mfZ( rTup.mfZ )
+ {}
+
+ /** Create a copy of a 3D integer Tuple
+
+ @param rTup
+ The 3D Tuple which will be copied.
+ */
+ explicit B3DTuple(const B3ITuple& rTup);
+
+ ~B3DTuple()
+ {}
+
+ /// get X-Coordinate of 3D Tuple
+ double getX() const
+ {
+ return mfX;
+ }
+
+ /// get Y-Coordinate of 3D Tuple
+ double getY() const
+ {
+ return mfY;
+ }
+
+ /// get Z-Coordinate of 3D Tuple
+ double getZ() const
+ {
+ return mfZ;
+ }
+
+ /// set X-Coordinate of 3D Tuple
+ void setX(double fX)
+ {
+ mfX = fX;
+ }
+
+ /// set Y-Coordinate of 3D Tuple
+ void setY(double fY)
+ {
+ mfY = fY;
+ }
+
+ /// set Z-Coordinate of 3D Tuple
+ void setZ(double fZ)
+ {
+ mfZ = fZ;
+ }
+
+ /// Array-access to 3D Tuple
+ const double& operator[] (int nPos) const
+ {
+ // Here, normally two if(...)'s should be used. In the assumption that
+ // both double members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mfX; if(1 == nPos) return mfY; return mfZ;
+ return *((&mfX) + nPos);
+ }
+
+ /// Array-access to 3D Tuple
+ double& operator[] (int nPos)
+ {
+ // Here, normally two if(...)'s should be used. In the assumption that
+ // both double members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mfX; if(1 == nPos) return mfY; return mfZ;
+ return *((&mfX) + nPos);
+ }
+
+ // comparators with tolerance
+ //////////////////////////////////////////////////////////////////////
+
+ bool equalZero() const
+ {
+ return (this == &getEmptyTuple() ||
+ (::basegfx::fTools::equalZero(mfX)
+ && ::basegfx::fTools::equalZero(mfY)
+ && ::basegfx::fTools::equalZero(mfZ)));
+ }
+
+ bool equalZero(const double& rfSmallValue) const
+ {
+ return (this == &getEmptyTuple() ||
+ (::basegfx::fTools::equalZero(mfX, rfSmallValue)
+ && ::basegfx::fTools::equalZero(mfY, rfSmallValue)
+ && ::basegfx::fTools::equalZero(mfZ, rfSmallValue)));
+ }
+
+ bool equal(const B3DTuple& rTup) const
+ {
+ return (
+ this == &rTup ||
+ (::basegfx::fTools::equal(mfX, rTup.mfX) &&
+ ::basegfx::fTools::equal(mfY, rTup.mfY) &&
+ ::basegfx::fTools::equal(mfZ, rTup.mfZ)));
+ }
+
+ bool equal(const B3DTuple& rTup, const double& rfSmallValue) const
+ {
+ return (
+ this == &rTup ||
+ (::basegfx::fTools::equal(mfX, rTup.mfX, rfSmallValue) &&
+ ::basegfx::fTools::equal(mfY, rTup.mfY, rfSmallValue) &&
+ ::basegfx::fTools::equal(mfZ, rTup.mfZ, rfSmallValue)));
+ }
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B3DTuple& operator+=( const B3DTuple& rTup )
+ {
+ mfX += rTup.mfX;
+ mfY += rTup.mfY;
+ mfZ += rTup.mfZ;
+ return *this;
+ }
+
+ B3DTuple& operator-=( const B3DTuple& rTup )
+ {
+ mfX -= rTup.mfX;
+ mfY -= rTup.mfY;
+ mfZ -= rTup.mfZ;
+ return *this;
+ }
+
+ B3DTuple& operator/=( const B3DTuple& rTup )
+ {
+ mfX /= rTup.mfX;
+ mfY /= rTup.mfY;
+ mfZ /= rTup.mfZ;
+ return *this;
+ }
+
+ B3DTuple& operator*=( const B3DTuple& rTup )
+ {
+ mfX *= rTup.mfX;
+ mfY *= rTup.mfY;
+ mfZ *= rTup.mfZ;
+ return *this;
+ }
+
+ B3DTuple& operator*=(double t)
+ {
+ mfX *= t;
+ mfY *= t;
+ mfZ *= t;
+ return *this;
+ }
+
+ B3DTuple& operator/=(double t)
+ {
+ const double fVal(1.0 / t);
+ mfX *= fVal;
+ mfY *= fVal;
+ mfZ *= fVal;
+ return *this;
+ }
+
+ B3DTuple operator-(void) const
+ {
+ return B3DTuple(-mfX, -mfY, -mfZ);
+ }
+
+ bool operator==( const B3DTuple& rTup ) const
+ {
+ return equal(rTup);
+ }
+
+ bool operator!=( const B3DTuple& rTup ) const
+ {
+ return !equal(rTup);
+ }
+
+ B3DTuple& operator=( const B3DTuple& rTup )
+ {
+ mfX = rTup.mfX;
+ mfY = rTup.mfY;
+ mfZ = rTup.mfZ;
+ return *this;
+ }
+
+ void correctValues(const double fCompareValue = 0.0)
+ {
+ if(0.0 == fCompareValue)
+ {
+ if(::basegfx::fTools::equalZero(mfX))
+ {
+ mfX = 0.0;
+ }
+
+ if(::basegfx::fTools::equalZero(mfY))
+ {
+ mfY = 0.0;
+ }
+
+ if(::basegfx::fTools::equalZero(mfZ))
+ {
+ mfZ = 0.0;
+ }
+ }
+ else
+ {
+ if(::basegfx::fTools::equal(mfX, fCompareValue))
+ {
+ mfX = fCompareValue;
+ }
+
+ if(::basegfx::fTools::equal(mfY, fCompareValue))
+ {
+ mfY = fCompareValue;
+ }
+
+ if(::basegfx::fTools::equal(mfZ, fCompareValue))
+ {
+ mfZ = fCompareValue;
+ }
+ }
+ }
+
+ static const B3DTuple& getEmptyTuple();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ inline B3DTuple minimum(const B3DTuple& rTupA, const B3DTuple& rTupB)
+ {
+ B3DTuple aMin(
+ (rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY(),
+ (rTupB.getZ() < rTupA.getZ()) ? rTupB.getZ() : rTupA.getZ());
+ return aMin;
+ }
+
+ inline B3DTuple maximum(const B3DTuple& rTupA, const B3DTuple& rTupB)
+ {
+ B3DTuple aMax(
+ (rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY(),
+ (rTupB.getZ() > rTupA.getZ()) ? rTupB.getZ() : rTupA.getZ());
+ return aMax;
+ }
+
+ inline B3DTuple absolute(const B3DTuple& rTup)
+ {
+ B3DTuple aAbs(
+ (0.0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
+ (0.0 > rTup.getY()) ? -rTup.getY() : rTup.getY(),
+ (0.0 > rTup.getZ()) ? -rTup.getZ() : rTup.getZ());
+ return aAbs;
+ }
+
+ inline B3DTuple interpolate(const B3DTuple& rOld1, const B3DTuple& rOld2, double t)
+ {
+ B3DTuple aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY(),
+ ((rOld2.getZ() - rOld1.getZ()) * t) + rOld1.getZ());
+ return aInt;
+ }
+
+ inline B3DTuple average(const B3DTuple& rOld1, const B3DTuple& rOld2)
+ {
+ B3DTuple aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5,
+ (rOld1.getZ() + rOld2.getZ()) * 0.5);
+ return aAvg;
+ }
+
+ inline B3DTuple average(const B3DTuple& rOld1, const B3DTuple& rOld2, const B3DTuple& rOld3)
+ {
+ B3DTuple aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0),
+ (rOld1.getZ() + rOld2.getZ() + rOld3.getZ()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ inline B3DTuple operator+(const B3DTuple& rTupA, const B3DTuple& rTupB)
+ {
+ B3DTuple aSum(rTupA);
+ aSum += rTupB;
+ return aSum;
+ }
+
+ inline B3DTuple operator-(const B3DTuple& rTupA, const B3DTuple& rTupB)
+ {
+ B3DTuple aSub(rTupA);
+ aSub -= rTupB;
+ return aSub;
+ }
+
+ inline B3DTuple operator/(const B3DTuple& rTupA, const B3DTuple& rTupB)
+ {
+ B3DTuple aDiv(rTupA);
+ aDiv /= rTupB;
+ return aDiv;
+ }
+
+ inline B3DTuple operator*(const B3DTuple& rTupA, const B3DTuple& rTupB)
+ {
+ B3DTuple aMul(rTupA);
+ aMul *= rTupB;
+ return aMul;
+ }
+
+ inline B3DTuple operator*(const B3DTuple& rTup, double t)
+ {
+ B3DTuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3DTuple operator*(double t, const B3DTuple& rTup)
+ {
+ B3DTuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3DTuple operator/(const B3DTuple& rTup, double t)
+ {
+ B3DTuple aNew(rTup);
+ aNew /= t;
+ return aNew;
+ }
+
+ inline B3DTuple operator/(double t, const B3DTuple& rTup)
+ {
+ B3DTuple aNew(rTup);
+ aNew /= t;
+ return aNew;
+ }
+
+ /** Round double to nearest integer for 3D tuple
+
+ @return the nearest integer for this tuple
+ */
+ B3ITuple fround(const B3DTuple& rTup);
+} // end of namespace basegfx
+
+#endif /* _BGFX_TUPLE_B3DTUPLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tuple/b3i64tuple.hxx b/basegfx/inc/basegfx/tuple/b3i64tuple.hxx
new file mode 100644
index 000000000000..b4b3416ce887
--- /dev/null
+++ b/basegfx/inc/basegfx/tuple/b3i64tuple.hxx
@@ -0,0 +1,352 @@
+/* -*- 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 _BGFX_TUPLE_B3I64TUPLE_HXX
+#define _BGFX_TUPLE_B3I64TUPLE_HXX
+
+#include <sal/types.h>
+#include <basegfx/tuple/b3dtuple.hxx>
+
+
+namespace basegfx
+{
+ /** Base class for all Points/Vectors with three sal_Int64 values
+
+ This class provides all methods common to Point
+ avd Vector classes which are derived from here.
+
+ @derive Use this class to implement Points or Vectors
+ which are based on three sal_Int64 values
+ */
+ class B3I64Tuple
+ {
+ protected:
+ sal_Int64 mnX;
+ sal_Int64 mnY;
+ sal_Int64 mnZ;
+
+ public:
+ /** Create a 3D Tuple
+
+ The tuple is initialized to (0, 0, 0)
+ */
+ B3I64Tuple()
+ : mnX(0),
+ mnY(0),
+ mnZ(0)
+ {}
+
+ /** Create a 3D Tuple
+
+ @param nX
+ This parameter is used to initialize the X-coordinate
+ of the 3D Tuple.
+
+ @param nY
+ This parameter is used to initialize the Y-coordinate
+ of the 3D Tuple.
+
+ @param nZ
+ This parameter is used to initialize the Z-coordinate
+ of the 3D Tuple.
+ */
+ B3I64Tuple(sal_Int64 nX, sal_Int64 nY, sal_Int64 nZ)
+ : mnX(nX),
+ mnY(nY),
+ mnZ(nZ)
+ {}
+
+ /** Create a copy of a 3D Tuple
+
+ @param rTup
+ The 3D Tuple which will be copied.
+ */
+ B3I64Tuple(const B3I64Tuple& rTup)
+ : mnX( rTup.mnX ),
+ mnY( rTup.mnY ),
+ mnZ( rTup.mnZ )
+ {}
+
+ ~B3I64Tuple()
+ {}
+
+ /// get X-Coordinate of 3D Tuple
+ sal_Int64 getX() const
+ {
+ return mnX;
+ }
+
+ /// get Y-Coordinate of 3D Tuple
+ sal_Int64 getY() const
+ {
+ return mnY;
+ }
+
+ /// get Z-Coordinate of 3D Tuple
+ sal_Int64 getZ() const
+ {
+ return mnZ;
+ }
+
+ /// set X-Coordinate of 3D Tuple
+ void setX(sal_Int64 nX)
+ {
+ mnX = nX;
+ }
+
+ /// set Y-Coordinate of 3D Tuple
+ void setY(sal_Int64 nY)
+ {
+ mnY = nY;
+ }
+
+ /// set Z-Coordinate of 3D Tuple
+ void setZ(sal_Int64 nZ)
+ {
+ mnZ = nZ;
+ }
+
+ /// Array-access to 3D Tuple
+ const sal_Int64& operator[] (int nPos) const
+ {
+ // Here, normally two if(...)'s should be used. In the assumption that
+ // both sal_Int64 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; if(1 == nPos) return mnY; return mnZ;
+ return *((&mnX) + nPos);
+ }
+
+ /// Array-access to 3D Tuple
+ sal_Int64& operator[] (int nPos)
+ {
+ // Here, normally two if(...)'s should be used. In the assumption that
+ // both sal_Int64 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; if(1 == nPos) return mnY; return mnZ;
+ return *((&mnX) + nPos);
+ }
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B3I64Tuple& operator+=( const B3I64Tuple& rTup )
+ {
+ mnX += rTup.mnX;
+ mnY += rTup.mnY;
+ mnZ += rTup.mnZ;
+ return *this;
+ }
+
+ B3I64Tuple& operator-=( const B3I64Tuple& rTup )
+ {
+ mnX -= rTup.mnX;
+ mnY -= rTup.mnY;
+ mnZ -= rTup.mnZ;
+ return *this;
+ }
+
+ B3I64Tuple& operator/=( const B3I64Tuple& rTup )
+ {
+ mnX /= rTup.mnX;
+ mnY /= rTup.mnY;
+ mnZ /= rTup.mnZ;
+ return *this;
+ }
+
+ B3I64Tuple& operator*=( const B3I64Tuple& rTup )
+ {
+ mnX *= rTup.mnX;
+ mnY *= rTup.mnY;
+ mnZ *= rTup.mnZ;
+ return *this;
+ }
+
+ B3I64Tuple& operator*=(sal_Int64 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ mnZ *= t;
+ return *this;
+ }
+
+ B3I64Tuple& operator/=(sal_Int64 t)
+ {
+ mnX /= t;
+ mnY /= t;
+ mnZ /= t;
+ return *this;
+ }
+
+ B3I64Tuple operator-(void) const
+ {
+ return B3I64Tuple(-mnX, -mnY, -mnZ);
+ }
+
+ bool equalZero() const
+ {
+ return (this == &getEmptyTuple() ||
+ (mnX == 0 && mnY == 0 && mnZ == 0));
+ }
+
+ bool operator==( const B3I64Tuple& rTup ) const
+ {
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY && rTup.mnZ == mnZ);
+ }
+
+ bool operator!=( const B3I64Tuple& rTup ) const
+ {
+ return !(*this == rTup);
+ }
+
+ B3I64Tuple& operator=( const B3I64Tuple& rTup )
+ {
+ mnX = rTup.mnX;
+ mnY = rTup.mnY;
+ mnZ = rTup.mnZ;
+ return *this;
+ }
+
+ static const B3I64Tuple& getEmptyTuple();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ inline B3I64Tuple minimum(const B3I64Tuple& rTupA, const B3I64Tuple& rTupB)
+ {
+ B3I64Tuple aMin(
+ (rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY(),
+ (rTupB.getZ() < rTupA.getZ()) ? rTupB.getZ() : rTupA.getZ());
+ return aMin;
+ }
+
+ inline B3I64Tuple maximum(const B3I64Tuple& rTupA, const B3I64Tuple& rTupB)
+ {
+ B3I64Tuple aMax(
+ (rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY(),
+ (rTupB.getZ() > rTupA.getZ()) ? rTupB.getZ() : rTupA.getZ());
+ return aMax;
+ }
+
+ inline B3I64Tuple absolute(const B3I64Tuple& rTup)
+ {
+ B3I64Tuple aAbs(
+ (0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
+ (0 > rTup.getY()) ? -rTup.getY() : rTup.getY(),
+ (0 > rTup.getZ()) ? -rTup.getZ() : rTup.getZ());
+ return aAbs;
+ }
+
+ inline B3DTuple interpolate(const B3I64Tuple& rOld1, const B3I64Tuple& rOld2, double t)
+ {
+ B3DTuple aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY(),
+ ((rOld2.getZ() - rOld1.getZ()) * t) + rOld1.getZ());
+ return aInt;
+ }
+
+ inline B3DTuple average(const B3I64Tuple& rOld1, const B3I64Tuple& rOld2)
+ {
+ B3DTuple aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5,
+ (rOld1.getZ() + rOld2.getZ()) * 0.5);
+ return aAvg;
+ }
+
+ inline B3DTuple average(const B3I64Tuple& rOld1, const B3I64Tuple& rOld2, const B3I64Tuple& rOld3)
+ {
+ B3DTuple aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0),
+ (rOld1.getZ() + rOld2.getZ() + rOld3.getZ()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ inline B3I64Tuple operator+(const B3I64Tuple& rTupA, const B3I64Tuple& rTupB)
+ {
+ B3I64Tuple aSum(rTupA);
+ aSum += rTupB;
+ return aSum;
+ }
+
+ inline B3I64Tuple operator-(const B3I64Tuple& rTupA, const B3I64Tuple& rTupB)
+ {
+ B3I64Tuple aSub(rTupA);
+ aSub -= rTupB;
+ return aSub;
+ }
+
+ inline B3I64Tuple operator/(const B3I64Tuple& rTupA, const B3I64Tuple& rTupB)
+ {
+ B3I64Tuple aDiv(rTupA);
+ aDiv /= rTupB;
+ return aDiv;
+ }
+
+ inline B3I64Tuple operator*(const B3I64Tuple& rTupA, const B3I64Tuple& rTupB)
+ {
+ B3I64Tuple aMul(rTupA);
+ aMul *= rTupB;
+ return aMul;
+ }
+
+ inline B3I64Tuple operator*(const B3I64Tuple& rTup, sal_Int64 t)
+ {
+ B3I64Tuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3I64Tuple operator*(sal_Int64 t, const B3I64Tuple& rTup)
+ {
+ B3I64Tuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3I64Tuple operator/(const B3I64Tuple& rTup, sal_Int64 t)
+ {
+ B3I64Tuple aNew(rTup);
+ aNew /= t;
+ return aNew;
+ }
+
+ inline B3I64Tuple operator/(sal_Int64 t, const B3I64Tuple& rTup)
+ {
+ B3I64Tuple aNew(t, t, t);
+ B3I64Tuple aTmp(rTup);
+ aNew /= aTmp;
+ return aNew;
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_TUPLE_B3I64TUPLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/tuple/b3ituple.hxx b/basegfx/inc/basegfx/tuple/b3ituple.hxx
new file mode 100644
index 000000000000..619ce145b6b9
--- /dev/null
+++ b/basegfx/inc/basegfx/tuple/b3ituple.hxx
@@ -0,0 +1,352 @@
+/* -*- 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 _BGFX_TUPLE_B3ITUPLE_HXX
+#define _BGFX_TUPLE_B3ITUPLE_HXX
+
+#include <sal/types.h>
+#include <basegfx/tuple/b3dtuple.hxx>
+
+
+namespace basegfx
+{
+ /** Base class for all Points/Vectors with three sal_Int32 values
+
+ This class provides all methods common to Point
+ avd Vector classes which are derived from here.
+
+ @derive Use this class to implement Points or Vectors
+ which are based on three sal_Int32 values
+ */
+ class B3ITuple
+ {
+ protected:
+ sal_Int32 mnX;
+ sal_Int32 mnY;
+ sal_Int32 mnZ;
+
+ public:
+ /** Create a 3D Tuple
+
+ The tuple is initialized to (0, 0, 0)
+ */
+ B3ITuple()
+ : mnX(0),
+ mnY(0),
+ mnZ(0)
+ {}
+
+ /** Create a 3D Tuple
+
+ @param nX
+ This parameter is used to initialize the X-coordinate
+ of the 3D Tuple.
+
+ @param nY
+ This parameter is used to initialize the Y-coordinate
+ of the 3D Tuple.
+
+ @param nZ
+ This parameter is used to initialize the Z-coordinate
+ of the 3D Tuple.
+ */
+ B3ITuple(sal_Int32 nX, sal_Int32 nY, sal_Int32 nZ)
+ : mnX(nX),
+ mnY(nY),
+ mnZ(nZ)
+ {}
+
+ /** Create a copy of a 3D Tuple
+
+ @param rTup
+ The 3D Tuple which will be copied.
+ */
+ B3ITuple(const B3ITuple& rTup)
+ : mnX( rTup.mnX ),
+ mnY( rTup.mnY ),
+ mnZ( rTup.mnZ )
+ {}
+
+ ~B3ITuple()
+ {}
+
+ /// get X-Coordinate of 3D Tuple
+ sal_Int32 getX() const
+ {
+ return mnX;
+ }
+
+ /// get Y-Coordinate of 3D Tuple
+ sal_Int32 getY() const
+ {
+ return mnY;
+ }
+
+ /// get Z-Coordinate of 3D Tuple
+ sal_Int32 getZ() const
+ {
+ return mnZ;
+ }
+
+ /// set X-Coordinate of 3D Tuple
+ void setX(sal_Int32 nX)
+ {
+ mnX = nX;
+ }
+
+ /// set Y-Coordinate of 3D Tuple
+ void setY(sal_Int32 nY)
+ {
+ mnY = nY;
+ }
+
+ /// set Z-Coordinate of 3D Tuple
+ void setZ(sal_Int32 nZ)
+ {
+ mnZ = nZ;
+ }
+
+ /// Array-access to 3D Tuple
+ const sal_Int32& operator[] (int nPos) const
+ {
+ // Here, normally two if(...)'s should be used. In the assumption that
+ // both sal_Int32 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; if(1 == nPos) return mnY; return mnZ;
+ return *((&mnX) + nPos);
+ }
+
+ /// Array-access to 3D Tuple
+ sal_Int32& operator[] (int nPos)
+ {
+ // Here, normally two if(...)'s should be used. In the assumption that
+ // both sal_Int32 members can be accessed as an array a shortcut is used here.
+ // if(0 == nPos) return mnX; if(1 == nPos) return mnY; return mnZ;
+ return *((&mnX) + nPos);
+ }
+
+ // operators
+ //////////////////////////////////////////////////////////////////////
+
+ B3ITuple& operator+=( const B3ITuple& rTup )
+ {
+ mnX += rTup.mnX;
+ mnY += rTup.mnY;
+ mnZ += rTup.mnZ;
+ return *this;
+ }
+
+ B3ITuple& operator-=( const B3ITuple& rTup )
+ {
+ mnX -= rTup.mnX;
+ mnY -= rTup.mnY;
+ mnZ -= rTup.mnZ;
+ return *this;
+ }
+
+ B3ITuple& operator/=( const B3ITuple& rTup )
+ {
+ mnX /= rTup.mnX;
+ mnY /= rTup.mnY;
+ mnZ /= rTup.mnZ;
+ return *this;
+ }
+
+ B3ITuple& operator*=( const B3ITuple& rTup )
+ {
+ mnX *= rTup.mnX;
+ mnY *= rTup.mnY;
+ mnZ *= rTup.mnZ;
+ return *this;
+ }
+
+ B3ITuple& operator*=(sal_Int32 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ mnZ *= t;
+ return *this;
+ }
+
+ B3ITuple& operator/=(sal_Int32 t)
+ {
+ mnX /= t;
+ mnY /= t;
+ mnZ /= t;
+ return *this;
+ }
+
+ B3ITuple operator-(void) const
+ {
+ return B3ITuple(-mnX, -mnY, -mnZ);
+ }
+
+ bool equalZero() const
+ {
+ return (this == &getEmptyTuple() ||
+ (mnX == 0 && mnY == 0 && mnZ == 0));
+ }
+
+ bool operator==( const B3ITuple& rTup ) const
+ {
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY && rTup.mnZ == mnZ);
+ }
+
+ bool operator!=( const B3ITuple& rTup ) const
+ {
+ return !(*this == rTup);
+ }
+
+ B3ITuple& operator=( const B3ITuple& rTup )
+ {
+ mnX = rTup.mnX;
+ mnY = rTup.mnY;
+ mnZ = rTup.mnZ;
+ return *this;
+ }
+
+ static const B3ITuple& getEmptyTuple();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ inline B3ITuple minimum(const B3ITuple& rTupA, const B3ITuple& rTupB)
+ {
+ B3ITuple aMin(
+ (rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY(),
+ (rTupB.getZ() < rTupA.getZ()) ? rTupB.getZ() : rTupA.getZ());
+ return aMin;
+ }
+
+ inline B3ITuple maximum(const B3ITuple& rTupA, const B3ITuple& rTupB)
+ {
+ B3ITuple aMax(
+ (rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY(),
+ (rTupB.getZ() > rTupA.getZ()) ? rTupB.getZ() : rTupA.getZ());
+ return aMax;
+ }
+
+ inline B3ITuple absolute(const B3ITuple& rTup)
+ {
+ B3ITuple aAbs(
+ (0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
+ (0 > rTup.getY()) ? -rTup.getY() : rTup.getY(),
+ (0 > rTup.getZ()) ? -rTup.getZ() : rTup.getZ());
+ return aAbs;
+ }
+
+ inline B3DTuple interpolate(const B3ITuple& rOld1, const B3ITuple& rOld2, double t)
+ {
+ B3DTuple aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY(),
+ ((rOld2.getZ() - rOld1.getZ()) * t) + rOld1.getZ());
+ return aInt;
+ }
+
+ inline B3DTuple average(const B3ITuple& rOld1, const B3ITuple& rOld2)
+ {
+ B3DTuple aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5,
+ (rOld1.getZ() + rOld2.getZ()) * 0.5);
+ return aAvg;
+ }
+
+ inline B3DTuple average(const B3ITuple& rOld1, const B3ITuple& rOld2, const B3ITuple& rOld3)
+ {
+ B3DTuple aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0),
+ (rOld1.getZ() + rOld2.getZ() + rOld3.getZ()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ inline B3ITuple operator+(const B3ITuple& rTupA, const B3ITuple& rTupB)
+ {
+ B3ITuple aSum(rTupA);
+ aSum += rTupB;
+ return aSum;
+ }
+
+ inline B3ITuple operator-(const B3ITuple& rTupA, const B3ITuple& rTupB)
+ {
+ B3ITuple aSub(rTupA);
+ aSub -= rTupB;
+ return aSub;
+ }
+
+ inline B3ITuple operator/(const B3ITuple& rTupA, const B3ITuple& rTupB)
+ {
+ B3ITuple aDiv(rTupA);
+ aDiv /= rTupB;
+ return aDiv;
+ }
+
+ inline B3ITuple operator*(const B3ITuple& rTupA, const B3ITuple& rTupB)
+ {
+ B3ITuple aMul(rTupA);
+ aMul *= rTupB;
+ return aMul;
+ }
+
+ inline B3ITuple operator*(const B3ITuple& rTup, sal_Int32 t)
+ {
+ B3ITuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3ITuple operator*(sal_Int32 t, const B3ITuple& rTup)
+ {
+ B3ITuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ inline B3ITuple operator/(const B3ITuple& rTup, sal_Int32 t)
+ {
+ B3ITuple aNew(rTup);
+ aNew /= t;
+ return aNew;
+ }
+
+ inline B3ITuple operator/(sal_Int32 t, const B3ITuple& rTup)
+ {
+ B3ITuple aNew(t, t, t);
+ B3ITuple aTmp(rTup);
+ aNew /= aTmp;
+ return aNew;
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_TUPLE_B3ITUPLE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b2dsize.hxx b/basegfx/inc/basegfx/vector/b2dsize.hxx
new file mode 100644
index 000000000000..7af1d3b2ea84
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b2dsize.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_VECTOR_B2DSIZE_HXX
+#define _BGFX_VECTOR_B2DSIZE_HXX
+
+#include <basegfx/vector/b2dvector.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B2DVector exactly models a Size object,
+ // thus, for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B2DVector B2DSize;
+}
+
+#endif /* _BGFX_VECTOR_B2DSIZE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b2dvector.hxx b/basegfx/inc/basegfx/vector/b2dvector.hxx
new file mode 100644
index 000000000000..b2efaa52f5f2
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b2dvector.hxx
@@ -0,0 +1,270 @@
+/* -*- 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 _BGFX_VECTOR_B2DVECTOR_HXX
+#define _BGFX_VECTOR_B2DVECTOR_HXX
+
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+#include <basegfx/vector/b2enums.hxx>
+
+namespace basegfx
+{
+ // predeclaration
+ class B2DHomMatrix;
+
+ /** Base Point class with two double values
+
+ This class derives all operators and common handling for
+ a 2D data class from B2DTuple. All necessary extensions
+ which are special for 2D Vectors are added here.
+
+ @see B2DTuple
+ */
+ class B2DVector : public ::basegfx::B2DTuple
+ {
+ public:
+ /** Create a 2D Vector
+
+ The vector is initialized to (0.0, 0.0)
+ */
+ B2DVector()
+ : B2DTuple()
+ {}
+
+ /** Create a 2D Vector
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 2D Vector.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 2D Vector.
+ */
+ B2DVector(double fX, double fY)
+ : B2DTuple(fX, fY)
+ {}
+
+ /** Create a copy of a 2D Vector
+
+ @param rVec
+ The 2D Vector which will be copied.
+ */
+ B2DVector(const B2DVector& rVec)
+ : B2DTuple(rVec)
+ {}
+
+ /** Create a copy of a 2D Vector
+
+ @param rVec
+ The 2D Vector which will be copied.
+ */
+ B2DVector(const ::basegfx::B2IVector& rVec)
+ : B2DTuple(rVec)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B2DTuple-based classes
+ */
+ B2DVector(const ::basegfx::B2DTuple& rTuple)
+ : B2DTuple(rTuple)
+ {}
+
+ ~B2DVector()
+ {}
+
+ /** *=operator to allow usage from B2DVector, too
+ */
+ B2DVector& operator*=( const B2DVector& rPnt )
+ {
+ mfX *= rPnt.mfX;
+ mfY *= rPnt.mfY;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B2DVector, too
+ */
+ B2DVector& operator*=(double t)
+ {
+ mfX *= t;
+ mfY *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B2DTuple calculations
+ */
+ B2DVector& operator=( const ::basegfx::B2DTuple& rVec );
+
+ /** Calculate the length of this 2D Vector
+
+ @return The Length of the 2D Vector
+ */
+ double getLength() const;
+
+ /** Set the length of this 2D Vector
+
+ @param fLen
+ The to be achieved length of the 2D Vector
+ */
+ B2DVector& setLength(double fLen);
+
+ /** Normalize this 2D Vector
+
+ The length of the 2D Vector is set to 1.0
+ */
+ B2DVector& normalize();
+
+ /** Test if this 2D Vector is normalized
+
+ @return
+ true if lenth of vector is equal to 1.0
+ false else
+ */
+ bool isNormalized() const;
+
+ /** Calculate the Scalar with another 2D Vector
+
+ @param rVec
+ The second 2D Vector
+
+ @return
+ The Scalar value of the two involved 2D Vectors
+ */
+ double scalar( const B2DVector& rVec ) const;
+
+ /** Calculate the length of the cross product with another 2D Vector
+
+ In 2D, returning an actual vector does not make much
+ sense here. The magnitude, although, can be readily
+ used for tasks such as angle calculations, since for
+ the returned value, the following equation holds:
+ retVal = getLength(this)*getLength(rVec)*sin(theta),
+ with theta being the angle between the two vectors.
+
+ @param rVec
+ The second 2D Vector
+
+ @return
+ The length of the cross product of the two involved 2D Vectors
+ */
+ double cross( const B2DVector& rVec ) const;
+
+ /** Calculate the Angle with another 2D Vector
+
+ @param rVec
+ The second 2D Vector
+
+ @return
+ The Angle value of the two involved 2D Vectors in -pi/2 < return < pi/2
+ */
+ double angle( const B2DVector& rVec ) const;
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B2DVector& operator*=( const B2DHomMatrix& rMat );
+
+ static const B2DVector& getEmptyVector();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ /** Calculate the orientation to another 2D Vector
+
+ @param rVecA
+ The first 2D Vector
+
+ @param rVecB
+ The second 2D Vector
+
+ @return
+ The mathematical Orientation of the two involved 2D Vectors
+ */
+ B2VectorOrientation getOrientation( const B2DVector& rVecA, const B2DVector& rVecB );
+
+ /** Calculate a perpendicular 2D Vector to the given one
+
+ @param rVec
+ The source 2D Vector
+
+ @attention This only works if the given 2D Vector is normalized.
+
+ @return
+ A 2D Vector perpendicular to the one given in parameter rVec
+ */
+ B2DVector getPerpendicular( const B2DVector& rNormalizedVec );
+
+ /** Calculate a perpendicular 2D Vector to the given one,
+ normalize the given one as preparation
+
+ @param rVec
+ The source 2D Vector
+
+ @return
+ A normalized 2D Vector perpendicular to the one given in parameter rVec
+ */
+ B2DVector getNormalizedPerpendicular( const B2DVector& rVec );
+
+ /** Test two vectors which need not to be normalized for parallelism
+
+ @param rVecA
+ The first 2D Vector
+
+ @param rVecB
+ The second 2D Vector
+
+ @return
+ bool if the two values are parallel. Also true if
+ one of the vectors is empty.
+ */
+ bool areParallel( const B2DVector& rVecA, const B2DVector& rVecB );
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B2DVector operator*( const B2DHomMatrix& rMat, const B2DVector& rVec );
+
+ /** Test continuity between given vectors.
+
+ The two given vectors are assumed to describe control points on a
+ common point. Calculate if there is a continuity between them.
+ */
+ B2VectorContinuity getContinuity( const B2DVector& rBackVector, const B2DVector& rForwardVector );
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_VECTOR_B2DVECTOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b2enums.hxx b/basegfx/inc/basegfx/vector/b2enums.hxx
new file mode 100644
index 000000000000..f364c8e1d51d
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b2enums.hxx
@@ -0,0 +1,79 @@
+/* -*- 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 _BGFX_VECTOR_B2ENUMS_HXX
+#define _BGFX_VECTOR_B2ENUMS_HXX
+
+#include <sal/types.h>
+
+namespace basegfx
+{
+ /** Descriptor for the mathematical orientations of two 2D Vectors
+ */
+ enum B2VectorOrientation
+ {
+ /// mathematically positive oriented
+ ORIENTATION_POSITIVE = 0,
+
+ /// mathematically negative oriented
+ ORIENTATION_NEGATIVE,
+
+ /// mathematically neutral, thus parallel
+ ORIENTATION_NEUTRAL
+ };
+
+ /** Descriptor for the mathematical continuity of two 2D Vectors
+ */
+ enum B2VectorContinuity
+ {
+ /// none
+ CONTINUITY_NONE = 0,
+
+ /// mathematically negative oriented
+ CONTINUITY_C1,
+
+ /// mathematically neutral, thus parallel
+ CONTINUITY_C2
+ };
+
+ /** Descriptor for possible line joins between two line segments
+ */
+ enum B2DLineJoin
+ {
+ B2DLINEJOIN_NONE, // no rounding
+ B2DLINEJOIN_MIDDLE, // calc middle value between joints
+ B2DLINEJOIN_BEVEL, // join edges with line
+ B2DLINEJOIN_MITER, // extend till cut
+ B2DLINEJOIN_ROUND // create arc
+ };
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_VECTOR_B2ENUMS_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b2isize.hxx b/basegfx/inc/basegfx/vector/b2isize.hxx
new file mode 100644
index 000000000000..a1738548742f
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b2isize.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_VECTOR_B2ISIZE_HXX
+#define _BGFX_VECTOR_B2ISIZE_HXX
+
+#include <basegfx/vector/b2ivector.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B2IVector exactly models a Size object,
+ // thus, for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B2IVector B2ISize;
+}
+
+#endif /* _BGFX_VECTOR_B2ISIZE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b2ivector.hxx b/basegfx/inc/basegfx/vector/b2ivector.hxx
new file mode 100644
index 000000000000..8327f9236d96
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b2ivector.hxx
@@ -0,0 +1,233 @@
+/* -*- 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 _BGFX_VECTOR_B2IVECTOR_HXX
+#define _BGFX_VECTOR_B2IVECTOR_HXX
+
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/vector/b2enums.hxx>
+
+namespace basegfx
+{
+ // predeclaration
+ class B2DHomMatrix;
+
+ /** Base Point class with two sal_Int32 values
+
+ This class derives all operators and common handling for
+ a 2D data class from B2ITuple. All necessary extensions
+ which are special for 2D Vectors are added here.
+
+ @see B2ITuple
+ */
+ class B2IVector : public ::basegfx::B2ITuple
+ {
+ public:
+ /** Create a 2D Vector
+
+ The vector is initialized to (0, 0)
+ */
+ B2IVector()
+ : B2ITuple()
+ {}
+
+ /** Create a 2D Vector
+
+ @param nX
+ This parameter is used to initialize the X-coordinate
+ of the 2D Vector.
+
+ @param nY
+ This parameter is used to initialize the Y-coordinate
+ of the 2D Vector.
+ */
+ B2IVector(sal_Int32 nX, sal_Int32 nY)
+ : B2ITuple(nX, nY)
+ {}
+
+ /** Create a copy of a 2D Vector
+
+ @param rVec
+ The 2D Vector which will be copied.
+ */
+ B2IVector(const B2IVector& rVec)
+ : B2ITuple(rVec)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B2ITuple-based classes
+ */
+ B2IVector(const ::basegfx::B2ITuple& rTuple)
+ : B2ITuple(rTuple)
+ {}
+
+ ~B2IVector()
+ {}
+
+ /** *=operator to allow usage from B2IVector, too
+ */
+ B2IVector& operator*=( const B2IVector& rPnt )
+ {
+ mnX *= rPnt.mnX;
+ mnY *= rPnt.mnY;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B2IVector, too
+ */
+ B2IVector& operator*=(sal_Int32 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B2ITuple calculations
+ */
+ B2IVector& operator=( const ::basegfx::B2ITuple& rVec );
+
+ /** Calculate the length of this 2D Vector
+
+ @return The Length of the 2D Vector
+ */
+ double getLength() const;
+
+ /** Set the length of this 2D Vector
+
+ @param fLen
+ The to be achieved length of the 2D Vector
+ */
+ B2IVector& setLength(double fLen);
+
+ /** Calculate the Scalar with another 2D Vector
+
+ @param rVec
+ The second 2D Vector
+
+ @return
+ The Scalar value of the two involved 2D Vectors
+ */
+ double scalar( const B2IVector& rVec ) const;
+
+ /** Calculate the length of the cross product with another 2D Vector
+
+ In 2D, returning an actual vector does not make much
+ sense here. The magnitude, although, can be readily
+ used for tasks such as angle calculations, since for
+ the returned value, the following equation holds:
+ retVal = getLength(this)*getLength(rVec)*sin(theta),
+ with theta being the angle between the two vectors.
+
+ @param rVec
+ The second 2D Vector
+
+ @return
+ The length of the cross product of the two involved 2D Vectors
+ */
+ double cross( const B2IVector& rVec ) const;
+
+ /** Calculate the Angle with another 2D Vector
+
+ @param rVec
+ The second 2D Vector
+
+ @return
+ The Angle value of the two involved 2D Vectors in -pi/2 < return < pi/2
+ */
+ double angle( const B2IVector& rVec ) const;
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B2IVector& operator*=( const B2DHomMatrix& rMat );
+
+ static const B2IVector& getEmptyVector();
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ /** Calculate the orientation to another 2D Vector
+
+ @param rVecA
+ The first 2D Vector
+
+ @param rVecB
+ The second 2D Vector
+
+ @return
+ The mathematical Orientation of the two involved 2D Vectors
+ */
+ B2VectorOrientation getOrientation( const B2IVector& rVecA, const B2IVector& rVecB );
+
+ /** Calculate a perpendicular 2D Vector to the given one
+
+ @param rVec
+ The source 2D Vector
+
+ @return
+ A 2D Vector perpendicular to the one given in parameter rVec
+ */
+ B2IVector getPerpendicular( const B2IVector& rVec );
+
+ /** Test two vectors which need not to be normalized for parallelism
+
+ @param rVecA
+ The first 2D Vector
+
+ @param rVecB
+ The second 2D Vector
+
+ @return
+ bool if the two values are parallel. Also true if
+ one of the vectors is empty.
+ */
+ bool areParallel( const B2IVector& rVecA, const B2IVector& rVecB );
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B2IVector operator*( const B2DHomMatrix& rMat, const B2IVector& rVec );
+
+ /** Test continuity between given vectors.
+
+ The two given vectors are assumed to describe control points on a
+ common point. Calculate if there is a continuity between them.
+ */
+ B2VectorContinuity getContinuity( const B2IVector& rBackVector, const B2IVector& rForwardVector );
+
+} // end of namespace basegfx
+
+#endif /* _BGFX_VECTOR_B2IVECTOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b3dsize.hxx b/basegfx/inc/basegfx/vector/b3dsize.hxx
new file mode 100644
index 000000000000..757314cadcf1
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b3dsize.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_VECTOR_B3DSIZE_HXX
+#define _BGFX_VECTOR_B3DSIZE_HXX
+
+#include <basegfx/vector/b3dvector.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B3DVector exactly models a Size3D object,
+ // thus, for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B3DVector B3DSize;
+}
+
+#endif /* _BGFX_VECTOR_B3DSIZE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b3dvector.hxx b/basegfx/inc/basegfx/vector/b3dvector.hxx
new file mode 100644
index 000000000000..17c61b0437e2
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b3dvector.hxx
@@ -0,0 +1,343 @@
+/* -*- 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 _BGFX_VECTOR_B3DVECTOR_HXX
+#define _BGFX_VECTOR_B3DVECTOR_HXX
+
+#include <basegfx/tuple/b3dtuple.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // predeclaration
+ class B3DHomMatrix;
+
+ /** Base Point class with three double values
+
+ This class derives all operators and common handling for
+ a 3D data class from B3DTuple. All necessary extensions
+ which are special for 3D Vectors are added here.
+
+ @see B3DTuple
+ */
+ class B3DVector : public ::basegfx::B3DTuple
+ {
+ public:
+ /** Create a 3D Vector
+
+ The vector is initialized to (0.0, 0.0, 0.0)
+ */
+ B3DVector()
+ : B3DTuple()
+ {}
+
+ /** Create a 3D Vector
+
+ @param fX
+ This parameter is used to initialize the X-coordinate
+ of the 3D Vector.
+
+ @param fY
+ This parameter is used to initialize the Y-coordinate
+ of the 3D Vector.
+
+ @param fZ
+ This parameter is used to initialize the Z-coordinate
+ of the 3D Vector.
+ */
+ B3DVector(double fX, double fY, double fZ)
+ : B3DTuple(fX, fY, fZ)
+ {}
+
+ /** Create a copy of a 3D Vector
+
+ @param rVec
+ The 3D Vector which will be copied.
+ */
+ B3DVector(const B3DVector& rVec)
+ : B3DTuple(rVec)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B3DTuple-based classes
+ */
+ B3DVector(const ::basegfx::B3DTuple& rTuple)
+ : B3DTuple(rTuple)
+ {}
+
+ ~B3DVector()
+ {}
+
+ /** *=operator to allow usage from B3DVector, too
+ */
+ B3DVector& operator*=( const B3DVector& rPnt )
+ {
+ mfX *= rPnt.mfX;
+ mfY *= rPnt.mfY;
+ mfZ *= rPnt.mfZ;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B3DVector, too
+ */
+ B3DVector& operator*=(double t)
+ {
+ mfX *= t;
+ mfY *= t;
+ mfZ *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B3DTuple calculations
+ */
+ B3DVector& operator=( const ::basegfx::B3DTuple& rVec )
+ {
+ mfX = rVec.getX();
+ mfY = rVec.getY();
+ mfZ = rVec.getZ();
+ return *this;
+ }
+
+ /** Calculate the length of this 3D Vector
+
+ @return The Length of the 3D Vector
+ */
+ double getLength(void) const
+ {
+ double fLen(scalar(*this));
+ if((0.0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Calculate the length in the XY-Plane for this 3D Vector
+
+ @return The XY-Plane Length of the 3D Vector
+ */
+ double getXYLength(void) const
+ {
+ double fLen((mfX * mfX) + (mfY * mfY));
+ if((0.0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Calculate the length in the XZ-Plane for this 3D Vector
+
+ @return The XZ-Plane Length of the 3D Vector
+ */
+ double getXZLength(void) const
+ {
+ double fLen((mfX * mfX) + (mfZ * mfZ)); // #i73040#
+ if((0.0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Calculate the length in the YZ-Plane for this 3D Vector
+
+ @return The YZ-Plane Length of the 3D Vector
+ */
+ double getYZLength(void) const
+ {
+ double fLen((mfY * mfY) + (mfZ * mfZ));
+ if((0.0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Set the length of this 3D Vector
+
+ @param fLen
+ The to be achieved length of the 3D Vector
+ */
+ B3DVector& setLength(double fLen)
+ {
+ double fLenNow(scalar(*this));
+
+ if(!::basegfx::fTools::equalZero(fLenNow))
+ {
+ const double fOne(1.0);
+
+ if(!::basegfx::fTools::equal(fOne, fLenNow))
+ {
+ fLen /= sqrt(fLenNow);
+ }
+
+ mfX *= fLen;
+ mfY *= fLen;
+ mfZ *= fLen;
+ }
+
+ return *this;
+ }
+
+ /** Normalize this 3D Vector
+
+ The length of the 3D Vector is set to 1.0
+ */
+ B3DVector& normalize();
+
+ /** Test if this 3D Vector is normalized
+
+ @return
+ true if lenth of vector is equal to 1.0
+ false else
+ */
+ bool isNormalized() const
+ {
+ const double fOne(1.0);
+ const double fScalar(scalar(*this));
+
+ return (::basegfx::fTools::equal(fOne, fScalar));
+ }
+
+ /** get a 3D Vector which is perpendicular to this and a given 3D Vector
+
+ @attention This only works if this and the given 3D Vector are
+ both normalized.
+
+ @param rNormalizedVec
+ A normalized 3D Vector.
+
+ @return
+ A 3D Vector perpendicular to this and the given one
+ */
+ B3DVector getPerpendicular(const B3DVector& rNormalizedVec) const;
+
+ /** get the projection of this Vector on the given Plane
+
+ @attention This only works if the given 3D Vector defining
+ the Plane is normalized.
+
+ @param rNormalizedPlane
+ A normalized 3D Vector defining a Plane.
+
+ @return
+ The projected 3D Vector
+ */
+ B3DVector getProjectionOnPlane(const B3DVector& rNormalizedPlane) const;
+
+ /** Calculate the Scalar product
+
+ This method calculates the Scalar product between this
+ and the given 3D Vector.
+
+ @param rVec
+ A second 3D Vector.
+
+ @return
+ The Scalar Product of two 3D Vectors
+ */
+ double scalar(const B3DVector& rVec) const
+ {
+ return ((mfX * rVec.mfX) + (mfY * rVec.mfY) + (mfZ * rVec.mfZ));
+ }
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B3DVector& operator*=( const B3DHomMatrix& rMat );
+
+ static const B3DVector& getEmptyVector()
+ {
+ return (const B3DVector&) ::basegfx::B3DTuple::getEmptyTuple();
+ }
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ /** get a 3D Vector which is in 2D (ignoring
+ the Z-Coordinate) perpendicular to a given 3D Vector
+
+ @attention This only works if the given 3D Vector is normalized.
+
+ @param rNormalizedVec
+ A normalized 3D Vector.
+
+ @return
+ A 3D Vector perpendicular to the given one in X,Y (2D).
+ */
+ inline B3DVector getPerpendicular2D( const B3DVector& rNormalizedVec )
+ {
+ B3DVector aPerpendicular(-rNormalizedVec.getY(), rNormalizedVec.getX(), rNormalizedVec.getZ());
+ return aPerpendicular;
+ }
+
+ /** Test two vectors which need not to be normalized for parallelism
+
+ @param rVecA
+ The first 3D Vector
+
+ @param rVecB
+ The second 3D Vector
+
+ @return
+ bool if the two values are parallel. Also true if
+ one of the vectors is empty.
+ */
+ bool areParallel( const B3DVector& rVecA, const B3DVector& rVecB );
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B3DVector operator*( const B3DHomMatrix& rMat, const B3DVector& rVec );
+
+ /** Calculate the Cross Product of two 3D Vectors
+
+ @param rVecA
+ A first 3D Vector.
+
+ @param rVecB
+ A second 3D Vector.
+
+ @return
+ The Cross Product of both 3D Vectors
+ */
+ inline B3DVector cross(const B3DVector& rVecA, const B3DVector& rVecB)
+ {
+ B3DVector aVec(
+ rVecA.getY() * rVecB.getZ() - rVecA.getZ() * rVecB.getY(),
+ rVecA.getZ() * rVecB.getX() - rVecA.getX() * rVecB.getZ(),
+ rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX());
+ return aVec;
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_VECTOR_B3DVECTOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b3isize.hxx b/basegfx/inc/basegfx/vector/b3isize.hxx
new file mode 100644
index 000000000000..5aa85d904751
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b3isize.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 _BGFX_VECTOR_B3ISIZE_HXX
+#define _BGFX_VECTOR_B3ISIZE_HXX
+
+#include <basegfx/vector/b3ivector.hxx>
+
+namespace basegfx
+{
+ // syntactic sugar: a B3IVector exactly models a Size3D object,
+ // thus, for interface clarity, we provide an alias name
+
+ /// Alias name for interface clarity (not everybody is aware of the identity)
+ typedef B3IVector B3ISize;
+}
+
+#endif /* _BGFX_VECTOR_B3ISIZE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/basegfx/vector/b3ivector.hxx b/basegfx/inc/basegfx/vector/b3ivector.hxx
new file mode 100644
index 000000000000..5cbd869cad5f
--- /dev/null
+++ b/basegfx/inc/basegfx/vector/b3ivector.hxx
@@ -0,0 +1,262 @@
+/* -*- 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 _BGFX_VECTOR_B3IVECTOR_HXX
+#define _BGFX_VECTOR_B3IVECTOR_HXX
+
+#include <basegfx/tuple/b3ituple.hxx>
+
+namespace basegfx
+{
+ // predeclaration
+ class B3DHomMatrix;
+
+ /** Base Point class with three sal_Int32 values
+
+ This class derives all operators and common handling for
+ a 3D data class from B3ITuple. All necessary extensions
+ which are special for 3D Vectors are added here.
+
+ @see B3ITuple
+ */
+ class B3IVector : public ::basegfx::B3ITuple
+ {
+ public:
+ /** Create a 3D Vector
+
+ The vector is initialized to (0, 0, 0)
+ */
+ B3IVector()
+ : B3ITuple()
+ {}
+
+ /** Create a 3D Vector
+
+ @param nX
+ This parameter is used to initialize the X-coordinate
+ of the 3D Vector.
+
+ @param nY
+ This parameter is used to initialize the Y-coordinate
+ of the 3D Vector.
+
+ @param nZ
+ This parameter is used to initialize the Z-coordinate
+ of the 3D Vector.
+ */
+ B3IVector(sal_Int32 nX, sal_Int32 nY, sal_Int32 nZ)
+ : B3ITuple(nX, nY, nZ)
+ {}
+
+ /** Create a copy of a 3D Vector
+
+ @param rVec
+ The 3D Vector which will be copied.
+ */
+ B3IVector(const B3IVector& rVec)
+ : B3ITuple(rVec)
+ {}
+
+ /** constructor with tuple to allow copy-constructing
+ from B3ITuple-based classes
+ */
+ B3IVector(const ::basegfx::B3ITuple& rTuple)
+ : B3ITuple(rTuple)
+ {}
+
+ ~B3IVector()
+ {}
+
+ /** *=operator to allow usage from B3IVector, too
+ */
+ B3IVector& operator*=( const B3IVector& rPnt )
+ {
+ mnX *= rPnt.mnX;
+ mnY *= rPnt.mnY;
+ mnZ *= rPnt.mnZ;
+ return *this;
+ }
+
+ /** *=operator to allow usage from B3IVector, too
+ */
+ B3IVector& operator*=(sal_Int32 t)
+ {
+ mnX *= t;
+ mnY *= t;
+ mnZ *= t;
+ return *this;
+ }
+
+ /** assignment operator to allow assigning the results
+ of B3ITuple calculations
+ */
+ B3IVector& operator=( const ::basegfx::B3ITuple& rVec )
+ {
+ mnX = rVec.getX();
+ mnY = rVec.getY();
+ mnZ = rVec.getZ();
+ return *this;
+ }
+
+ /** Calculate the length of this 3D Vector
+
+ @return The Length of the 3D Vector
+ */
+ double getLength(void) const
+ {
+ double fLen(scalar(*this));
+ if((0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Calculate the length in the XY-Plane for this 3D Vector
+
+ @return The XY-Plane Length of the 3D Vector
+ */
+ double getXYLength(void) const
+ {
+ double fLen((mnX * mnX) + (mnY * mnY));
+ if((0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Calculate the length in the XZ-Plane for this 3D Vector
+
+ @return The XZ-Plane Length of the 3D Vector
+ */
+ double getXZLength(void) const
+ {
+ double fLen((mnX * mnZ) + (mnY * mnZ));
+ if((0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Calculate the length in the YZ-Plane for this 3D Vector
+
+ @return The YZ-Plane Length of the 3D Vector
+ */
+ double getYZLength(void) const
+ {
+ double fLen((mnY * mnY) + (mnZ * mnZ));
+ if((0 == fLen) || (1.0 == fLen))
+ return fLen;
+ return sqrt(fLen);
+ }
+
+ /** Set the length of this 3D Vector
+
+ @param fLen
+ The to be achieved length of the 3D Vector
+ */
+ B3IVector& setLength(double fLen)
+ {
+ double fLenNow(scalar(*this));
+
+ if(!::basegfx::fTools::equalZero(fLenNow))
+ {
+ const double fOne(1.0);
+
+ if(!::basegfx::fTools::equal(fOne, fLenNow))
+ {
+ fLen /= sqrt(fLenNow);
+ }
+
+ mnX = fround(mnX*fLen);
+ mnY = fround(mnY*fLen);
+ mnZ = fround(mnZ*fLen);
+ }
+
+ return *this;
+ }
+
+ /** Calculate the Scalar product
+
+ This method calculates the Scalar product between this
+ and the given 3D Vector.
+
+ @param rVec
+ A second 3D Vector.
+
+ @return
+ The Scalar Product of two 3D Vectors
+ */
+ double scalar(const B3IVector& rVec) const
+ {
+ return ((mnX * rVec.mnX) + (mnY * rVec.mnY) + (mnZ * rVec.mnZ));
+ }
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B3IVector& operator*=( const B3DHomMatrix& rMat );
+
+ static const B3IVector& getEmptyVector()
+ {
+ return (const B3IVector&) ::basegfx::B3ITuple::getEmptyTuple();
+ }
+ };
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ /** Transform vector by given transformation matrix.
+
+ Since this is a vector, translational components of the
+ matrix are disregarded.
+ */
+ B3IVector operator*( const B3DHomMatrix& rMat, const B3IVector& rVec );
+
+ /** Calculate the Cross Product of two 3D Vectors
+
+ @param rVecA
+ A first 3D Vector.
+
+ @param rVecB
+ A second 3D Vector.
+
+ @return
+ The Cross Product of both 3D Vectors
+ */
+ inline B3IVector cross(const B3IVector& rVecA, const B3IVector& rVecB)
+ {
+ B3IVector aVec(
+ rVecA.getY() * rVecB.getZ() - rVecA.getZ() * rVecB.getY(),
+ rVecA.getZ() * rVecB.getX() - rVecA.getX() * rVecB.getZ(),
+ rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX());
+ return aVec;
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_VECTOR_B3DVECTOR_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/makefile.mk b/basegfx/inc/makefile.mk
new file mode 100644
index 000000000000..aa8007b7e507
--- /dev/null
+++ b/basegfx/inc/makefile.mk
@@ -0,0 +1,47 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=basegfx
+TARGET=inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(ENABLE_PCH)"!=""
+ALLTAR : \
+ $(SLO)$/precompiled.pch \
+ $(SLO)$/precompiled_ex.pch
+
+.ENDIF # "$(ENABLE_PCH)"!=""
+
diff --git a/basegfx/inc/pch/precompiled_basegfx.cxx b/basegfx/inc/pch/precompiled_basegfx.cxx
new file mode 100644
index 000000000000..b71fb5b8c6f6
--- /dev/null
+++ b/basegfx/inc/pch/precompiled_basegfx.cxx
@@ -0,0 +1,31 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_basegfx.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/inc/pch/precompiled_basegfx.hxx b/basegfx/inc/pch/precompiled_basegfx.hxx
new file mode 100644
index 000000000000..f1c1f59f06f5
--- /dev/null
+++ b/basegfx/inc/pch/precompiled_basegfx.hxx
@@ -0,0 +1,34 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:30.796084
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/prj/build.lst b/basegfx/prj/build.lst
new file mode 100644
index 000000000000..fe3354b3f256
--- /dev/null
+++ b/basegfx/prj/build.lst
@@ -0,0 +1,18 @@
+fx basegfx : o3tl sal offuh cppuhelper cppu CPPUNIT:cppunit NULL
+fx basegfx usr1 - all fx_mkout NULL
+fx basegfx\inc nmake - all fx_inc NULL
+fx basegfx\prj get - all fx_prj NULL
+fx basegfx\source\curve nmake - all fx_curve fx_inc NULL
+fx basegfx\source\matrix nmake - all fx_matrix fx_inc NULL
+fx basegfx\source\numeric nmake - all fx_numeric fx_inc NULL
+fx basegfx\source\point nmake - all fx_point fx_inc NULL
+fx basegfx\source\polygon nmake - all fx_polygon fx_inc NULL
+fx basegfx\source\range nmake - all fx_range fx_inc NULL
+fx basegfx\source\tuple nmake - all fx_tuple fx_inc NULL
+fx basegfx\source\tools nmake - all fx_tools fx_inc NULL
+fx basegfx\source\vector nmake - all fx_vector fx_inc NULL
+fx basegfx\source\color nmake - all fx_color fx_inc NULL
+fx basegfx\source\pixel nmake - all fx_pixel fx_inc NULL
+fx basegfx\source\raster nmake - all fx_raster fx_inc NULL
+fx basegfx\util nmake - all fx_util fx_curve fx_matrix fx_numeric fx_point fx_polygon fx_range fx_tuple fx_tools fx_vector fx_color fx_pixel fx_raster NULL
+fx basegfx\test nmake - all fx_tests fx_util NULL
diff --git a/basegfx/prj/d.lst b/basegfx/prj/d.lst
new file mode 100644
index 000000000000..3d4d985f3ae6
--- /dev/null
+++ b/basegfx/prj/d.lst
@@ -0,0 +1,113 @@
+..\%__SRC%\lib\ibasegfx.lib %_DEST%\lib%_EXT%\ibasegfx.lib
+..\%__SRC%\lib\basegfx_s.lib %_DEST%\lib%_EXT%\basegfx_s.lib
+
+..\%__SRC%\bin\basegfx?????.dll %_DEST%\bin%_EXT%\basegfx?????.dll
+..\%__SRC%\bin\bgfx*.dll %_DEST%\bin%_EXT%\bgfx*.dll
+
+..\%__SRC%\lib\libbasegfx*.* %_DEST%\lib%_EXT%\libbasegfx*.*
+..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
+
+mkdir: %_DEST%\inc%_EXT%\basegfx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\matrix
+..\inc\basegfx\matrix\b2dhommatrix.hxx %_DEST%\inc%_EXT%\basegfx\matrix\b2dhommatrix.hxx
+..\inc\basegfx\matrix\b2dhommatrixtools.hxx %_DEST%\inc%_EXT%\basegfx\matrix\b2dhommatrixtools.hxx
+..\inc\basegfx\matrix\b3dhommatrix.hxx %_DEST%\inc%_EXT%\basegfx\matrix\b3dhommatrix.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\point
+..\inc\basegfx\point\b2dpoint.hxx %_DEST%\inc%_EXT%\basegfx\point\b2dpoint.hxx
+..\inc\basegfx\point\b3dpoint.hxx %_DEST%\inc%_EXT%\basegfx\point\b3dpoint.hxx
+..\inc\basegfx\point\b2ipoint.hxx %_DEST%\inc%_EXT%\basegfx\point\b2ipoint.hxx
+..\inc\basegfx\point\b3ipoint.hxx %_DEST%\inc%_EXT%\basegfx\point\b3ipoint.hxx
+..\inc\basegfx\point\b2dhompoint.hxx %_DEST%\inc%_EXT%\basegfx\point\b2dhompoint.hxx
+..\inc\basegfx\point\b3dhompoint.hxx %_DEST%\inc%_EXT%\basegfx\point\b3dhompoint.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\range
+..\inc\basegfx\range\rangeexpander.hxx %_DEST%\inc%_EXT%\basegfx\range\rangeexpander.hxx
+..\inc\basegfx\range\basicrange.hxx %_DEST%\inc%_EXT%\basegfx\range\basicrange.hxx
+..\inc\basegfx\range\basicbox.hxx %_DEST%\inc%_EXT%\basegfx\range\basicbox.hxx
+..\inc\basegfx\range\b1drange.hxx %_DEST%\inc%_EXT%\basegfx\range\b1drange.hxx
+..\inc\basegfx\range\b2dpolyrange.hxx %_DEST%\inc%_EXT%\basegfx\range\b2dpolyrange.hxx
+..\inc\basegfx\range\b2drange.hxx %_DEST%\inc%_EXT%\basegfx\range\b2drange.hxx
+..\inc\basegfx\range\b2drectangle.hxx %_DEST%\inc%_EXT%\basegfx\range\b2drectangle.hxx
+..\inc\basegfx\range\b2dconnectedranges.hxx %_DEST%\inc%_EXT%\basegfx\range\b2dconnectedranges.hxx
+..\inc\basegfx\range\b3drange.hxx %_DEST%\inc%_EXT%\basegfx\range\b3drange.hxx
+..\inc\basegfx\range\b3dvolume.hxx %_DEST%\inc%_EXT%\basegfx\range\b3dvolume.hxx
+..\inc\basegfx\range\b1irange.hxx %_DEST%\inc%_EXT%\basegfx\range\b1irange.hxx
+..\inc\basegfx\range\b2irange.hxx %_DEST%\inc%_EXT%\basegfx\range\b2irange.hxx
+..\inc\basegfx\range\b2irectangle.hxx %_DEST%\inc%_EXT%\basegfx\range\b2irectangle.hxx
+..\inc\basegfx\range\b3irange.hxx %_DEST%\inc%_EXT%\basegfx\range\b3irange.hxx
+..\inc\basegfx\range\b3ivolume.hxx %_DEST%\inc%_EXT%\basegfx\range\b3ivolume.hxx
+..\inc\basegfx\range\b1ibox.hxx %_DEST%\inc%_EXT%\basegfx\range\b1ibox.hxx
+..\inc\basegfx\range\b2ibox.hxx %_DEST%\inc%_EXT%\basegfx\range\b2ibox.hxx
+..\inc\basegfx\range\b3ibox.hxx %_DEST%\inc%_EXT%\basegfx\range\b3ibox.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\vector
+..\inc\basegfx\vector\b2dvector.hxx %_DEST%\inc%_EXT%\basegfx\vector\b2dvector.hxx
+..\inc\basegfx\vector\b2enums.hxx %_DEST%\inc%_EXT%\basegfx\vector\b2enums.hxx
+..\inc\basegfx\vector\b2dsize.hxx %_DEST%\inc%_EXT%\basegfx\vector\b2dsize.hxx
+..\inc\basegfx\vector\b3dvector.hxx %_DEST%\inc%_EXT%\basegfx\vector\b3dvector.hxx
+..\inc\basegfx\vector\b3dsize.hxx %_DEST%\inc%_EXT%\basegfx\vector\b3dsize.hxx
+..\inc\basegfx\vector\b2ivector.hxx %_DEST%\inc%_EXT%\basegfx\vector\b2ivector.hxx
+..\inc\basegfx\vector\b2isize.hxx %_DEST%\inc%_EXT%\basegfx\vector\b2isize.hxx
+..\inc\basegfx\vector\b3ivector.hxx %_DEST%\inc%_EXT%\basegfx\vector\b3ivector.hxx
+..\inc\basegfx\vector\b3isize.hxx %_DEST%\inc%_EXT%\basegfx\vector\b3isize.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\curve
+..\inc\basegfx\curve\b2dcubicbezier.hxx %_DEST%\inc%_EXT%\basegfx\curve\b2dcubicbezier.hxx
+..\inc\basegfx\curve\b2dquadraticbezier.hxx %_DEST%\inc%_EXT%\basegfx\curve\b2dquadraticbezier.hxx
+..\inc\basegfx\curve\b2dbeziertools.hxx %_DEST%\inc%_EXT%\basegfx\curve\b2dbeziertools.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\numeric
+..\inc\basegfx\numeric\ftools.hxx %_DEST%\inc%_EXT%\basegfx\numeric\ftools.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\polygon
+..\inc\basegfx\polygon\b2dpolygon.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolygon.hxx
+..\inc\basegfx\polygon\b2dpolypolygon.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolypolygon.hxx
+..\inc\basegfx\polygon\b2dpolypolygonfillrule.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolypolygonfillrule.hxx
+..\inc\basegfx\polygon\b2dpolygontools.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolygontools.hxx
+..\inc\basegfx\polygon\b2dpolypolygontools.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolypolygontools.hxx
+..\inc\basegfx\polygon\b2dpolypolygonrasterconverter.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolypolygonrasterconverter.hxx
+..\inc\basegfx\polygon\b2dlinegeometry.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dlinegeometry.hxx
+..\inc\basegfx\polygon\b2dpolygonclipper.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolygonclipper.hxx
+..\inc\basegfx\polygon\b2dpolygontriangulator.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolygontriangulator.hxx
+..\inc\basegfx\polygon\b2dpolygoncutandtouch.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolygoncutandtouch.hxx
+..\inc\basegfx\polygon\b2dpolypolygoncutter.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolypolygoncutter.hxx
+..\inc\basegfx\polygon\b2dtrapezoid.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dtrapezoid.hxx
+..\inc\basegfx\polygon\b3dpolygon.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolygon.hxx
+..\inc\basegfx\polygon\b3dpolypolygon.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolypolygon.hxx
+..\inc\basegfx\polygon\b3dpolygontools.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolygontools.hxx
+..\inc\basegfx\polygon\b3dpolypolygontools.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolypolygontools.hxx
+..\inc\basegfx\polygon\b3dpolygonclipper.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolygonclipper.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\tuple
+..\inc\basegfx\tuple\b2dtuple.hxx %_DEST%\inc%_EXT%\basegfx\tuple\b2dtuple.hxx
+..\inc\basegfx\tuple\b3dtuple.hxx %_DEST%\inc%_EXT%\basegfx\tuple\b3dtuple.hxx
+..\inc\basegfx\tuple\b2ituple.hxx %_DEST%\inc%_EXT%\basegfx\tuple\b2ituple.hxx
+..\inc\basegfx\tuple\b3ituple.hxx %_DEST%\inc%_EXT%\basegfx\tuple\b3ituple.hxx
+..\inc\basegfx\tuple\b2i64tuple.hxx %_DEST%\inc%_EXT%\basegfx\tuple\b2i64tuple.hxx
+..\inc\basegfx\tuple\b3i64tuple.hxx %_DEST%\inc%_EXT%\basegfx\tuple\b3i64tuple.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\tools
+..\inc\basegfx\tools\canvastools.hxx %_DEST%\inc%_EXT%\basegfx\tools\canvastools.hxx
+..\inc\basegfx\tools\keystoplerp.hxx %_DEST%\inc%_EXT%\basegfx\tools\keystoplerp.hxx
+..\inc\basegfx\tools\lerp.hxx %_DEST%\inc%_EXT%\basegfx\tools\lerp.hxx
+..\inc\basegfx\tools\unopolypolygon.hxx %_DEST%\inc%_EXT%\basegfx\tools\unopolypolygon.hxx
+..\inc\basegfx\tools\b2dclipstate.hxx %_DEST%\inc%_EXT%\basegfx\tools\b2dclipstate.hxx
+..\inc\basegfx\tools\rectcliptools.hxx %_DEST%\inc%_EXT%\basegfx\tools\rectcliptools.hxx
+..\inc\basegfx\tools\tools.hxx %_DEST%\inc%_EXT%\basegfx\tools\tools.hxx
+..\inc\basegfx\tools\gradienttools.hxx %_DEST%\inc%_EXT%\basegfx\tools\gradienttools.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\color
+..\inc\basegfx\color\bcolor.hxx %_DEST%\inc%_EXT%\basegfx\color\bcolor.hxx
+..\inc\basegfx\color\bcolortools.hxx %_DEST%\inc%_EXT%\basegfx\color\bcolortools.hxx
+..\inc\basegfx\color\bcolormodifier.hxx %_DEST%\inc%_EXT%\basegfx\color\bcolormodifier.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\pixel
+..\inc\basegfx\pixel\bpixel.hxx %_DEST%\inc%_EXT%\basegfx\pixel\bpixel.hxx
+..\inc\basegfx\pixel\bzpixel.hxx %_DEST%\inc%_EXT%\basegfx\pixel\bzpixel.hxx
+
+mkdir: %_DEST%\inc%_EXT%\basegfx\raster
+..\inc\basegfx\raster\bpixelraster.hxx %_DEST%\inc%_EXT%\basegfx\raster\bpixelraster.hxx
+..\inc\basegfx\raster\bzpixelraster.hxx %_DEST%\inc%_EXT%\basegfx\raster\bzpixelraster.hxx
+..\inc\basegfx\raster\rasterconvert3d.hxx %_DEST%\inc%_EXT%\basegfx\raster\rasterconvert3d.hxx
diff --git a/basegfx/qa/mkpolygons.pl b/basegfx/qa/mkpolygons.pl
new file mode 100644
index 000000000000..b465a4f845ab
--- /dev/null
+++ b/basegfx/qa/mkpolygons.pl
@@ -0,0 +1,344 @@
+:
+eval 'exec perl -wS $0 ${1+"$@"}'
+ if 0;
+
+#
+# 2009 Copyright Novell, Inc. & Sun Microsystems, Inc.
+#
+# 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.
+#
+
+use IO::File;
+use Cwd;
+use File::Spec;
+use File::Spec::Functions;
+use File::Temp;
+use File::Path;
+
+$TempDir = "";
+
+
+# all the XML package generation is a blatant rip from AF's
+# write-calc-doc.pl
+
+
+###############################################################################
+# Open a file with the given name.
+# First it is checked if the temporary directory, in which all files for
+# the document are gathered, is already present and create it if it is not.
+# Then create the path to the file inside the temporary directory.
+# Finally open the file and return a file handle to it.
+#
+sub open_file
+{
+ my $filename = pop @_;
+
+ # Create base directory of temporary directory tree if not alreay
+ # present.
+ if ($TempDir eq "")
+ {
+ $TempDir = File::Temp::tempdir (CLEANUP => 1);
+ }
+
+ # Create the path to the file.
+ my $fullname = File::Spec->catfile ($TempDir, $filename);
+ my ($volume,$directories,$file) = File::Spec->splitpath ($fullname);
+ mkpath (File::Spec->catpath ($volume,$directories,""));
+
+ # Open the file and return a file handle to it.
+ return new IO::File ($fullname, "w");
+}
+
+
+###############################################################################
+# Zip the files in the directory tree into the given file.
+#
+sub zip_dirtree
+{
+ my $filename = pop @_;
+
+ my $cwd = getcwd;
+ my $zip_name = $filename;
+
+ # We are about to change the directory.
+ # Therefore create an absolute pathname for the zip archive.
+
+ # First transfer the drive from $cwd to $zip_name. This is a
+ # workaround for a bug in file_name_is_absolute which thinks
+ # the the path \bla is an absolute path under DOS.
+ my ($volume,$directories,$file) = File::Spec->splitpath ($zip_name);
+ my ($volume_cwd,$directories_cwd,$file_cwd) = File::Spec->splitpath ($cwd);
+ $volume = $volume_cwd if ($volume eq "");
+ $zip_name = File::Spec->catpath ($volume,$directories,$file);
+
+ # Add the current working directory to a relative path.
+ if ( ! file_name_is_absolute ($zip_name))
+ {
+ $zip_name = File::Spec->catfile ($cwd, $zip_name);
+
+ # Try everything to clean up the name.
+ $zip_name = File::Spec->rel2abs ($filename);
+ $zip_name = File::Spec->canonpath ($zip_name);
+
+ # Remove .. directories from the middle of the path.
+ while ($zip_name =~ /\/[^\/][^\.\/][^\/]*\/\.\.\//)
+ {
+ $zip_name = $` . "/" . $';
+ }
+ }
+
+ # Just in case the zip program gets confused by an existing file with the
+ # same name as the one to be written that file is removed first.
+ if ( -e $filename)
+ {
+ if (unlink ($filename) == 0)
+ {
+ print "Existing file $filename could not be deleted.\n";
+ print "Please close the application that uses it, then try again.\n";
+ return;
+ }
+ }
+
+ # Finally create the zip file. First change into the temporary directory
+ # so that the resulting zip file contains only paths relative to it.
+ print "zipping [$ZipCmd $ZipFlags $zip_name *]\n";
+ chdir ($TempDir);
+ system ("$ZipCmd $ZipFlags $zip_name *");
+ chdir ($cwd);
+}
+
+
+sub writeHeader
+{
+ print $OUT qq~<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0">
+ <office:scripts/>
+ <office:automatic-styles>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties presentation:background-visible="true" presentation:background-objects-visible="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/>
+ </style:style>
+ <style:style style:name="gr1" style:family="graphic" style:parent-style-name="standard">
+ <style:graphic-properties draw:textarea-horizontal-align="center" draw:fill="none" draw:stroke="none" draw:textarea-vertical-align="middle"/>
+ </style:style>
+ <style:style style:name="gr2" style:family="graphic" style:parent-style-name="standard">
+ <style:graphic-properties draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle"/>
+ </style:style>
+ <style:style style:name="pr1" style:family="presentation" style:parent-style-name="Default-title">
+ <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/>
+ </style:style>
+ <style:style style:name="pr2" style:family="presentation" style:parent-style-name="Default-notes">
+ <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="13.367cm"/>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph">
+ <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph">
+ <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/>
+ </style:style>
+ <text:list-style style:name="L1">
+ <text:list-level-style-bullet text:level="1" text:bullet-char="â—">
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="2" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="3" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="4" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="5" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="6" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="7" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="8" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="9" text:bullet-char="â—">
+ <style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ </text:list-style>
+ </office:automatic-styles>
+ <office:body>
+ <office:presentation>
+~;
+
+}
+
+sub writeSlideHeader
+{
+ my $titleText = pop @_;
+ my $slideNum = pop @_;
+
+ print $OUT " <draw:page draw:name=\"page1\" draw:style-name=\"dp1\" draw:master-page-name=\"Default\">\n";
+ print $OUT " <office:forms form:automatic-focus=\"false\" form:apply-design-mode=\"false\"/>\n";
+ print $OUT " <draw:rect draw:style-name=\"gr1\" draw:text-style-name=\"P1\" draw:id=\"id$slideNum\" draw:layer=\"layout\" svg:width=\"17.5cm\" svg:height=\"6cm\" svg:x=\"5cm\" svg:y=\"4cm\">\n";
+ print $OUT " <text:p text:style-name=\"P2\">Slide: $slideNum</text:p>\n";
+ print $OUT " <text:p text:style-name=\"P2\">Path: $titleText</text:p>\n";
+ print $OUT " </draw:rect>\n";
+}
+
+
+sub writeSlideFooter
+{
+ print $OUT " <presentation:notes draw:style-name=\"dp1\">\n";
+ print $OUT " <draw:page-thumbnail draw:style-name=\"gr1\" draw:layer=\"layout\" svg:width=\"14.851cm\" svg:height=\"11.138cm\" svg:x=\"3.068cm\" svg:y=\"2.257cm\" draw:page-number=\"1\" presentation:class=\"page\"/>\n";
+ print $OUT " <draw:frame presentation:style-name=\"pr3\" draw:layer=\"layout\" svg:width=\"16.79cm\" svg:height=\"13.116cm\" svg:x=\"2.098cm\" svg:y=\"14.109cm\" presentation:class=\"notes\" presentation:placeholder=\"true\">\n";
+ print $OUT " <draw:text-box/>\n";
+ print $OUT " </draw:frame>\n";
+ print $OUT " </presentation:notes>\n";
+ print $OUT " </draw:page>\n";
+}
+
+sub writeFooter
+{
+ print $OUT qq~ <presentation:settings presentation:full-screen="false"/>
+ </office:presentation>
+ </office:body>
+</office:document-content>
+~;
+
+}
+
+sub writePath
+{
+ my $pathAry = pop @_;
+ my $path = $pathAry->[1];
+ my $viewBox = $pathAry->[0];
+
+ print $OUT " <draw:path draw:style-name=\"gr2\" draw:text-style-name=\"P1\" draw:layer=\"layout\" svg:width=\"10cm\" svg:height=\"10cm\" svg:x=\"5cm\" svg:y=\"5cm\" svg:viewBox=\"";
+ print $OUT $viewBox;
+ print $OUT "\" svg:d=\"";
+ print $OUT $path;
+ print $OUT "\">\n";
+ print $OUT " <text:p/>\n";
+ print $OUT " </draw:path>\n";
+}
+
+sub writeManifest
+{
+ my $outFile = open_file("META-INF/manifest.xml");
+
+ print $outFile qq~<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
+ <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.presentation" manifest:full-path="/"/>
+ <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
+</manifest:manifest>
+~;
+
+ $outFile->close;
+}
+
+
+###############################################################################
+# Print usage information.
+#
+sub usage ()
+{
+ print <<END_OF_USAGE;
+usage: $0 <option>* [<SvgD-values>]
+
+output-file-name defaults to polygons.odp.
+
+ -h Print this usage information.
+ -o output-file-name
+END_OF_USAGE
+}
+
+###############################################################################
+# Process the command line.
+#
+sub process_command_line
+{
+ foreach (@ARGV)
+ {
+ if (/^-h/)
+ {
+ usage;
+ exit 0;
+ }
+ }
+
+ $global_output_name = "polygons.odp";
+ my $j = 0, $noMoreOptions = 0;
+ for (my $i=0; $i<$#ARGV; $i++)
+ {
+ if ( !$noMoreOptions and $ARGV[$i] eq "-o")
+ {
+ $i++;
+ $global_output_name = $ARGV[$i];
+ }
+ elsif ( !$noMoreOptions and $ARGV[$i] eq "--")
+ {
+ $noMoreOptions = 1;
+ }
+ elsif ( !$noMoreOptions and $ARGV[$i] =~ /^-/)
+ {
+ print "Unknown option $ARGV[$i]\n";
+ usage;
+ exit 1;
+ }
+ else
+ {
+ push(@paths, [$ARGV[$i],$ARGV[$i+1]]);
+ $i++;
+ }
+ }
+
+ print "output to $global_output_name\n";
+}
+
+###############################################################################
+# Main
+###############################################################################
+
+$ZipCmd = $ENV{LOG_FILE_ZIP_CMD};
+$ZipFlags = $ENV{LOG_FILE_ZIP_FLAGS};
+# Provide default values for the zip command and it's flags.
+if ( ! defined $ZipCmd)
+{
+ $ZipCmd = "zip" unless defined $ZipCmd;
+ $ZipFlags = "-r -q" unless defined $ZipFlags;
+}
+
+process_command_line();
+
+writeManifest();
+
+$OUT = open_file( "content.xml" );
+
+writeHeader();
+
+$pathNum=0;
+foreach $path (@paths)
+{
+ writeSlideHeader($pathNum, $path->[1]);
+ writePath($path);
+ writeSlideFooter();
+ $pathNum++;
+}
+
+writeFooter();
+
+$OUT->close;
+
+zip_dirtree ($global_output_name);
+
diff --git a/basegfx/source/color/bcolor.cxx b/basegfx/source/color/bcolor.cxx
new file mode 100644
index 000000000000..b02ccac901ed
--- /dev/null
+++ b/basegfx/source/color/bcolor.cxx
@@ -0,0 +1,43 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/color/bcolor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/color/bcolormodifier.cxx b/basegfx/source/color/bcolormodifier.cxx
new file mode 100644
index 000000000000..d58672b72681
--- /dev/null
+++ b/basegfx/source/color/bcolormodifier.cxx
@@ -0,0 +1,75 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/color/bcolormodifier.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ ::basegfx::BColor BColorModifier::getModifiedColor(const ::basegfx::BColor& aSourceColor) const
+ {
+ switch(meMode)
+ {
+ case BCOLORMODIFYMODE_INTERPOLATE :
+ {
+ return interpolate(maBColor, aSourceColor, mfValue);
+ }
+ case BCOLORMODIFYMODE_GRAY :
+ {
+ const double fLuminance(aSourceColor.luminance());
+ return ::basegfx::BColor(fLuminance, fLuminance, fLuminance);
+ }
+ case BCOLORMODIFYMODE_BLACKANDWHITE :
+ {
+ const double fLuminance(aSourceColor.luminance());
+
+ if(fLuminance < mfValue)
+ {
+ return ::basegfx::BColor::getEmptyBColor();
+ }
+ else
+ {
+ return ::basegfx::BColor(1.0, 1.0, 1.0);
+ }
+ }
+ default : // BCOLORMODIFYMODE_REPLACE
+ {
+ return maBColor;
+ }
+ }
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/color/bcolortools.cxx b/basegfx/source/color/bcolortools.cxx
new file mode 100644
index 000000000000..d1fa6aa7ad0f
--- /dev/null
+++ b/basegfx/source/color/bcolortools.cxx
@@ -0,0 +1,271 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/color/bcolortools.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx { namespace tools
+{
+ BColor rgb2hsl(const BColor& rRGBColor)
+ {
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ const double minVal = ::std::min( ::std::min( r, g ), b );
+ const double maxVal = ::std::max( ::std::max( r, g ), b );
+ const double d = maxVal - minVal;
+
+ double h=0, s=0, l=0;
+
+ l = (maxVal + minVal) / 2.0;
+
+ if( ::basegfx::fTools::equalZero(d) )
+ {
+ s = h = 0; // hue undefined (achromatic case)
+ }
+ else
+ {
+ s = l > 0.5 ? d/(2.0-maxVal-minVal) :
+ d/(maxVal + minVal);
+
+ if( r == maxVal )
+ h = (g - b)/d;
+ else if( g == maxVal )
+ h = 2.0 + (b - r)/d;
+ else
+ h = 4.0 + (r - g)/d;
+
+ h *= 60.0;
+
+ if( h < 0.0 )
+ h += 360.0;
+ }
+
+ return BColor(h,s,l);
+ }
+
+ static inline double hsl2rgbHelper( double nValue1, double nValue2, double nHue )
+ {
+ // clamp hue to [0,360]
+ nHue = fmod( nHue, 360.0 );
+
+ // cope with wrap-arounds
+ if( nHue < 0.0 )
+ nHue += 360.0;
+
+ if( nHue < 60.0 )
+ return nValue1 + (nValue2 - nValue1)*nHue/60.0;
+ else if( nHue < 180.0 )
+ return nValue2;
+ else if( nHue < 240.0 )
+ return nValue1 + (nValue2 - nValue1)*(240.0 - nHue)/60.0;
+ else
+ return nValue1;
+ }
+
+ BColor hsl2rgb(const BColor& rHSLColor)
+ {
+ const double h=rHSLColor.getRed(), s=rHSLColor.getGreen(), l=rHSLColor.getBlue();
+
+ if( fTools::equalZero(s) )
+ return BColor(l, l, l ); // achromatic case
+
+ const double nVal1( l <= 0.5 ? l*(1.0 + s) : l + s - l*s );
+ const double nVal2( 2.0*l - nVal1 );
+
+ return BColor(
+ hsl2rgbHelper(nVal2,
+ nVal1,
+ h + 120.0),
+ hsl2rgbHelper(nVal2,
+ nVal1,
+ h),
+ hsl2rgbHelper(nVal2,
+ nVal1,
+ h - 120.0) );
+ }
+
+ BColor rgb2hsv(const BColor& rRGBColor)
+ {
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ const double maxVal = std::max(std::max(r,g),b);
+ const double minVal = std::min(std::min(r,g),b);
+ const double delta = maxVal-minVal;
+
+ double h=0, s=0, v=0;
+
+ v = maxVal;
+ if( fTools::equalZero(v) )
+ s = 0;
+ else
+ s = delta / v;
+
+ if( !fTools::equalZero(s) )
+ {
+ if( maxVal == r )
+ {
+ h = (g - b) / delta;
+ }
+ else if( maxVal == g )
+ {
+ h = 2.0 + (b - r) / delta;
+ }
+ else
+ {
+ h = 4.0 + (r - g) / delta;
+ }
+
+ h *= 60.0;
+
+ if( h < 0 )
+ h += 360;
+ }
+
+ return BColor(h,s,v);
+ }
+
+ BColor hsv2rgb(const BColor& rHSVColor)
+ {
+ double h=rHSVColor.getRed();
+ const double s=rHSVColor.getGreen(), v=rHSVColor.getBlue();
+
+ if( fTools::equalZero(s) )
+ {
+ // achromatic case: no hue.
+ return BColor(v,v,v);
+ }
+ else
+ {
+ if( fTools::equal(h,360) )
+ h = 0; // 360 degrees is equivalent to 0 degrees
+
+ h /= 60.0;
+ const sal_Int32 intval = static_cast< sal_Int32 >( h );
+ const double f = h - intval;
+ const double p = v*(1.0-s);
+ const double q = v*(1.0-(s*f));
+ const double t = v*(1.0-(s*(1.0-f)));
+
+ /* which hue area? */
+ switch( intval )
+ {
+ case 0:
+ return BColor(v,t,p);
+
+ case 1:
+ return BColor(q,v,p);
+
+ case 2:
+ return BColor(p,v,t);
+
+ case 3:
+ return BColor(p,q,v);
+
+ case 4:
+ return BColor(t,p,v);
+
+ case 5:
+ return BColor(v,p,q);
+
+ default:
+ // hue overflow
+ return BColor();
+ }
+ }
+ }
+
+ BColor rgb2yiq(const BColor& rRGBColor)
+ {
+ // from Foley, van Dam, Computer Graphics
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ return BColor(
+ 0.299*r + 0.587*g + 0.114*b,
+ 0.596*r - 0.274*g - 0.322*b,
+ 0.211*r - 0.522*g + 0.311*b);
+ }
+
+ BColor yiq2rgb(const BColor& rYIQColor)
+ {
+ // from Foley, van Dam, Computer Graphics
+ const double y=rYIQColor.getRed(), i=rYIQColor.getGreen(), q=rYIQColor.getBlue();
+ return BColor(
+ y + 0.956*i + 0.623*q,
+ y - 0.272*i - 0.648*q,
+ y - 1.105*i + 1.705*q );
+ }
+
+ BColor ciexyz2rgb( const BColor& rXYZColor )
+ {
+ // from Poynton color faq, and SMPTE RP 177-1993, Derivation
+ // of Basic Television Color Equations
+ const double x=rXYZColor.getRed(), y=rXYZColor.getGreen(), z=rXYZColor.getBlue();
+ return BColor(
+ 3.240479*x - 1.53715*y - 0.498535*z,
+ -0.969256*x + 1.875991*y + 0.041556*z,
+ 0.055648*x - 0.204043*y + 1.057311*z );
+ }
+
+ BColor rgb2ciexyz( const BColor& rRGBColor )
+ {
+ // from Poynton color faq, and SMPTE RP 177-1993, Derivation
+ // of Basic Television Color Equations
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ return BColor(
+ 0.412453*r + 0.35758*g + 0.180423*b,
+ 0.212671*r + 0.71516*g + 0.072169*b,
+ 0.019334*r + 0.119193*g + 0.950227*b);
+ }
+
+ BColor rgb2ypbpr(const BColor& rRGBColor)
+ {
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ return BColor(
+ 0.299*r + 0.587*g + 0.114*b,
+ -0.168736*r - 0.331264*g + 0.5*b,
+ 0.5*r - 0.418688*g - 0.081312*b);
+ }
+
+ BColor ypbpr2rgb(const BColor& rYPbPrColor)
+ {
+ const double y=rYPbPrColor.getRed(), pb=rYPbPrColor.getGreen(), pr=rYPbPrColor.getBlue();
+ return BColor(
+ 1.*y + 0.*pb + 1.402*pr,
+ 1.*y - 0.344136*pb - 0.714136*pr,
+ 1.*y + 1.772*pb + 0.*pr);
+ }
+
+} } // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/color/makefile.mk b/basegfx/source/color/makefile.mk
new file mode 100644
index 000000000000..c4e842db72ae
--- /dev/null
+++ b/basegfx/source/color/makefile.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=color
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+#ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/bcolor.obj \
+ $(SLO)$/bcolortools.obj \
+ $(SLO)$/bcolormodifier.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/curve/b2dbeziertools.cxx b/basegfx/source/curve/b2dbeziertools.cxx
new file mode 100644
index 000000000000..2865d18aaa17
--- /dev/null
+++ b/basegfx/source/curve/b2dbeziertools.cxx
@@ -0,0 +1,166 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/curve/b2dbeziertools.hxx>
+#include <basegfx/curve/b2dcubicbezier.hxx>
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ B2DCubicBezierHelper::B2DCubicBezierHelper(const B2DCubicBezier& rBase, sal_uInt32 nDivisions)
+ : maLengthArray(),
+ mnEdgeCount(0)
+ {
+ const bool bIsBezier(rBase.isBezier());
+
+ if(bIsBezier)
+ {
+ // check nDivisions; at least one is needed, but also prevent too big values
+ if(nDivisions < 1)
+ {
+ nDivisions = 1;
+ }
+ else if(nDivisions > 1000)
+ {
+ nDivisions = 1000;
+ }
+
+ // set nEdgeCount
+ mnEdgeCount = nDivisions + 1;
+
+ // fill in maLengthArray
+ maLengthArray.clear();
+ maLengthArray.reserve(mnEdgeCount);
+ B2DPoint aCurrent(rBase.getStartPoint());
+ double fLength(0.0);
+
+ for(sal_uInt32 a(1);;)
+ {
+ const B2DPoint aNext(rBase.interpolatePoint((double)a / (double)mnEdgeCount));
+ const B2DVector aEdge(aNext - aCurrent);
+
+ fLength += aEdge.getLength();
+ maLengthArray.push_back(fLength);
+
+ if(++a < mnEdgeCount)
+ {
+ aCurrent = aNext;
+ }
+ else
+ {
+ const B2DPoint aLastNext(rBase.getEndPoint());
+ const B2DVector aLastEdge(aLastNext - aNext);
+
+ fLength += aLastEdge.getLength();
+ maLengthArray.push_back(fLength);
+ break;
+ }
+ }
+ }
+ else
+ {
+ maLengthArray.clear();
+ maLengthArray.push_back(rBase.getEdgeLength());
+ mnEdgeCount = 1;
+ }
+ }
+
+ double B2DCubicBezierHelper::distanceToRelative(double fDistance) const
+ {
+ if(fDistance <= 0.0)
+ {
+ return 0.0;
+ }
+
+ const double fLength(getLength());
+
+ if(fTools::moreOrEqual(fDistance, fLength))
+ {
+ return 1.0;
+ }
+
+ // fDistance is in ]0.0 .. fLength[
+
+ if(1 == mnEdgeCount)
+ {
+ // not a bezier, linear edge
+ return fDistance / fLength;
+ }
+
+ // it is a bezier
+ ::std::vector< double >::const_iterator aIter = ::std::lower_bound(maLengthArray.begin(), maLengthArray.end(), fDistance);
+ const sal_uInt32 nIndex(aIter - maLengthArray.begin());
+ const double fHighBound(maLengthArray[nIndex]);
+ const double fLowBound(nIndex ? maLengthArray[nIndex - 1] : 0.0);
+ const double fLinearInterpolatedLength((fDistance - fLowBound) / (fHighBound - fLowBound));
+
+ return (static_cast< double >(nIndex) + fLinearInterpolatedLength) / static_cast< double >(mnEdgeCount);
+ }
+
+ double B2DCubicBezierHelper::relativeToDistance(double fRelative) const
+ {
+ if(fRelative <= 0.0)
+ {
+ return 0.0;
+ }
+
+ const double fLength(getLength());
+
+ if(fTools::moreOrEqual(fRelative, 1.0))
+ {
+ return fLength;
+ }
+
+ // fRelative is in ]0.0 .. 1.0[
+
+ if(1 == mnEdgeCount)
+ {
+ // not a bezier, linear edge
+ return fRelative * fLength;
+ }
+
+ // fRelative is in ]0.0 .. 1.0[
+ const double fIndex(fRelative * static_cast< double >(mnEdgeCount));
+ double fIntIndex;
+ const double fFractIndex(modf(fIndex, &fIntIndex));
+ const sal_uInt32 nIntIndex(static_cast< sal_uInt32 >(fIntIndex));
+ const double fStartDistance(nIntIndex ? maLengthArray[nIntIndex - 1] : 0.0);
+
+ return fStartDistance + ((maLengthArray[nIntIndex] - fStartDistance) * fFractIndex);
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/curve/b2dcubicbezier.cxx b/basegfx/source/curve/b2dcubicbezier.cxx
new file mode 100644
index 000000000000..3e7fdedeeee8
--- /dev/null
+++ b/basegfx/source/curve/b2dcubicbezier.cxx
@@ -0,0 +1,1109 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/curve/b2dcubicbezier.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+#include <limits>
+
+// #i37443#
+#define FACTOR_FOR_UNSHARPEN (1.6)
+#ifdef DBG_UTIL
+static double fMultFactUnsharpen = FACTOR_FOR_UNSHARPEN;
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ void ImpSubDivAngle(
+ const B2DPoint& rfPA, // start point
+ const B2DPoint& rfEA, // edge on A
+ const B2DPoint& rfEB, // edge on B
+ const B2DPoint& rfPB, // end point
+ B2DPolygon& rTarget, // target polygon
+ double fAngleBound, // angle bound in [0.0 .. 2PI]
+ bool bAllowUnsharpen, // #i37443# allow the criteria to get unsharp in recursions
+ sal_uInt16 nMaxRecursionDepth) // endless loop protection
+ {
+ if(nMaxRecursionDepth)
+ {
+ // do angle test
+ B2DVector aLeft(rfEA - rfPA);
+ B2DVector aRight(rfEB - rfPB);
+
+ // #i72104#
+ if(aLeft.equalZero())
+ {
+ aLeft = rfEB - rfPA;
+ }
+
+ if(aRight.equalZero())
+ {
+ aRight = rfEA - rfPB;
+ }
+
+ const double fCurrentAngle(aLeft.angle(aRight));
+
+ if(fabs(fCurrentAngle) > (F_PI - fAngleBound))
+ {
+ // end recursion
+ nMaxRecursionDepth = 0;
+ }
+ else
+ {
+ if(bAllowUnsharpen)
+ {
+ // #i37443# unsharpen criteria
+#ifdef DBG_UTIL
+ fAngleBound *= fMultFactUnsharpen;
+#else
+ fAngleBound *= FACTOR_FOR_UNSHARPEN;
+#endif
+ }
+ }
+ }
+
+ if(nMaxRecursionDepth)
+ {
+ // divide at 0.5
+ const B2DPoint aS1L(average(rfPA, rfEA));
+ const B2DPoint aS1C(average(rfEA, rfEB));
+ const B2DPoint aS1R(average(rfEB, rfPB));
+ const B2DPoint aS2L(average(aS1L, aS1C));
+ const B2DPoint aS2R(average(aS1C, aS1R));
+ const B2DPoint aS3C(average(aS2L, aS2R));
+
+ // left recursion
+ ImpSubDivAngle(rfPA, aS1L, aS2L, aS3C, rTarget, fAngleBound, bAllowUnsharpen, nMaxRecursionDepth - 1);
+
+ // right recursion
+ ImpSubDivAngle(aS3C, aS2R, aS1R, rfPB, rTarget, fAngleBound, bAllowUnsharpen, nMaxRecursionDepth - 1);
+ }
+ else
+ {
+ rTarget.append(rfPB);
+ }
+ }
+
+ void ImpSubDivAngleStart(
+ const B2DPoint& rfPA, // start point
+ const B2DPoint& rfEA, // edge on A
+ const B2DPoint& rfEB, // edge on B
+ const B2DPoint& rfPB, // end point
+ B2DPolygon& rTarget, // target polygon
+ const double& rfAngleBound, // angle bound in [0.0 .. 2PI]
+ bool bAllowUnsharpen) // #i37443# allow the criteria to get unsharp in recursions
+ {
+ sal_uInt16 nMaxRecursionDepth(8);
+ const B2DVector aLeft(rfEA - rfPA);
+ const B2DVector aRight(rfEB - rfPB);
+ bool bLeftEqualZero(aLeft.equalZero());
+ bool bRightEqualZero(aRight.equalZero());
+ bool bAllParallel(false);
+
+ if(bLeftEqualZero && bRightEqualZero)
+ {
+ nMaxRecursionDepth = 0;
+ }
+ else
+ {
+ const B2DVector aBase(rfPB - rfPA);
+ const bool bBaseEqualZero(aBase.equalZero()); // #i72104#
+
+ if(!bBaseEqualZero)
+ {
+ const bool bLeftParallel(bLeftEqualZero ? true : areParallel(aLeft, aBase));
+ const bool bRightParallel(bRightEqualZero ? true : areParallel(aRight, aBase));
+
+ if(bLeftParallel && bRightParallel)
+ {
+ bAllParallel = true;
+
+ if(!bLeftEqualZero)
+ {
+ double fFactor;
+
+ if(fabs(aBase.getX()) > fabs(aBase.getY()))
+ {
+ fFactor = aLeft.getX() / aBase.getX();
+ }
+ else
+ {
+ fFactor = aLeft.getY() / aBase.getY();
+ }
+
+ if(fFactor >= 0.0 && fFactor <= 1.0)
+ {
+ bLeftEqualZero = true;
+ }
+ }
+
+ if(!bRightEqualZero)
+ {
+ double fFactor;
+
+ if(fabs(aBase.getX()) > fabs(aBase.getY()))
+ {
+ fFactor = aRight.getX() / -aBase.getX();
+ }
+ else
+ {
+ fFactor = aRight.getY() / -aBase.getY();
+ }
+
+ if(fFactor >= 0.0 && fFactor <= 1.0)
+ {
+ bRightEqualZero = true;
+ }
+ }
+
+ if(bLeftEqualZero && bRightEqualZero)
+ {
+ nMaxRecursionDepth = 0;
+ }
+ }
+ }
+ }
+
+ if(nMaxRecursionDepth)
+ {
+ // divide at 0.5 ad test both edges for angle criteria
+ const B2DPoint aS1L(average(rfPA, rfEA));
+ const B2DPoint aS1C(average(rfEA, rfEB));
+ const B2DPoint aS1R(average(rfEB, rfPB));
+ const B2DPoint aS2L(average(aS1L, aS1C));
+ const B2DPoint aS2R(average(aS1C, aS1R));
+ const B2DPoint aS3C(average(aS2L, aS2R));
+
+ // test left
+ bool bAngleIsSmallerLeft(bAllParallel && bLeftEqualZero);
+ if(!bAngleIsSmallerLeft)
+ {
+ const B2DVector aLeftLeft(bLeftEqualZero ? aS2L - aS1L : aS1L - rfPA); // #i72104#
+ const B2DVector aRightLeft(aS2L - aS3C);
+ const double fCurrentAngleLeft(aLeftLeft.angle(aRightLeft));
+ bAngleIsSmallerLeft = (fabs(fCurrentAngleLeft) > (F_PI - rfAngleBound));
+ }
+
+ // test right
+ bool bAngleIsSmallerRight(bAllParallel && bRightEqualZero);
+ if(!bAngleIsSmallerRight)
+ {
+ const B2DVector aLeftRight(aS2R - aS3C);
+ const B2DVector aRightRight(bRightEqualZero ? aS2R - aS1R : aS1R - rfPB); // #i72104#
+ const double fCurrentAngleRight(aLeftRight.angle(aRightRight));
+ bAngleIsSmallerRight = (fabs(fCurrentAngleRight) > (F_PI - rfAngleBound));
+ }
+
+ if(bAngleIsSmallerLeft && bAngleIsSmallerRight)
+ {
+ // no recursion necessary at all
+ nMaxRecursionDepth = 0;
+ }
+ else
+ {
+ // left
+ if(bAngleIsSmallerLeft)
+ {
+ rTarget.append(aS3C);
+ }
+ else
+ {
+ ImpSubDivAngle(rfPA, aS1L, aS2L, aS3C, rTarget, rfAngleBound, bAllowUnsharpen, nMaxRecursionDepth);
+ }
+
+ // right
+ if(bAngleIsSmallerRight)
+ {
+ rTarget.append(rfPB);
+ }
+ else
+ {
+ ImpSubDivAngle(aS3C, aS2R, aS1R, rfPB, rTarget, rfAngleBound, bAllowUnsharpen, nMaxRecursionDepth);
+ }
+ }
+ }
+
+ if(!nMaxRecursionDepth)
+ {
+ rTarget.append(rfPB);
+ }
+ }
+
+ void ImpSubDivDistance(
+ const B2DPoint& rfPA, // start point
+ const B2DPoint& rfEA, // edge on A
+ const B2DPoint& rfEB, // edge on B
+ const B2DPoint& rfPB, // end point
+ B2DPolygon& rTarget, // target polygon
+ double fDistanceBound2, // quadratic distance criteria
+ double fLastDistanceError2, // the last quadratic distance error
+ sal_uInt16 nMaxRecursionDepth) // endless loop protection
+ {
+ if(nMaxRecursionDepth)
+ {
+ // decide if another recursion is needed. If not, set
+ // nMaxRecursionDepth to zero
+
+ // Perform bezier flatness test (lecture notes from R. Schaback,
+ // Mathematics of Computer-Aided Design, Uni Goettingen, 2000)
+ //
+ // ||P(t) - L(t)|| <= max ||b_j - b_0 - j/n(b_n - b_0)||
+ // 0<=j<=n
+ //
+ // What is calculated here is an upper bound to the distance from
+ // a line through b_0 and b_3 (rfPA and P4 in our notation) and the
+ // curve. We can drop 0 and n from the running indices, since the
+ // argument of max becomes zero for those cases.
+ const double fJ1x(rfEA.getX() - rfPA.getX() - 1.0/3.0*(rfPB.getX() - rfPA.getX()));
+ const double fJ1y(rfEA.getY() - rfPA.getY() - 1.0/3.0*(rfPB.getY() - rfPA.getY()));
+ const double fJ2x(rfEB.getX() - rfPA.getX() - 2.0/3.0*(rfPB.getX() - rfPA.getX()));
+ const double fJ2y(rfEB.getY() - rfPA.getY() - 2.0/3.0*(rfPB.getY() - rfPA.getY()));
+ const double fDistanceError2(::std::max(fJ1x*fJ1x + fJ1y*fJ1y, fJ2x*fJ2x + fJ2y*fJ2y));
+
+ // stop if error measure does not improve anymore. This is a
+ // safety guard against floating point inaccuracies.
+ // stop if distance from line is guaranteed to be bounded by d
+ const bool bFurtherDivision(fLastDistanceError2 > fDistanceError2 && fDistanceError2 >= fDistanceBound2);
+
+ if(bFurtherDivision)
+ {
+ // remember last error value
+ fLastDistanceError2 = fDistanceError2;
+ }
+ else
+ {
+ // stop recustion
+ nMaxRecursionDepth = 0;
+ }
+ }
+
+ if(nMaxRecursionDepth)
+ {
+ // divide at 0.5
+ const B2DPoint aS1L(average(rfPA, rfEA));
+ const B2DPoint aS1C(average(rfEA, rfEB));
+ const B2DPoint aS1R(average(rfEB, rfPB));
+ const B2DPoint aS2L(average(aS1L, aS1C));
+ const B2DPoint aS2R(average(aS1C, aS1R));
+ const B2DPoint aS3C(average(aS2L, aS2R));
+
+ // left recursion
+ ImpSubDivDistance(rfPA, aS1L, aS2L, aS3C, rTarget, fDistanceBound2, fLastDistanceError2, nMaxRecursionDepth - 1);
+
+ // right recursion
+ ImpSubDivDistance(aS3C, aS2R, aS1R, rfPB, rTarget, fDistanceBound2, fLastDistanceError2, nMaxRecursionDepth - 1);
+ }
+ else
+ {
+ rTarget.append(rfPB);
+ }
+ }
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ B2DCubicBezier::B2DCubicBezier(const B2DCubicBezier& rBezier)
+ : maStartPoint(rBezier.maStartPoint),
+ maEndPoint(rBezier.maEndPoint),
+ maControlPointA(rBezier.maControlPointA),
+ maControlPointB(rBezier.maControlPointB)
+ {
+ }
+
+ B2DCubicBezier::B2DCubicBezier()
+ {
+ }
+
+ B2DCubicBezier::B2DCubicBezier(const B2DPoint& rStart, const B2DPoint& rEnd)
+ : maStartPoint(rStart),
+ maEndPoint(rEnd),
+ maControlPointA(rStart),
+ maControlPointB(rEnd)
+ {
+ }
+
+ B2DCubicBezier::B2DCubicBezier(const B2DPoint& rStart, const B2DPoint& rControlPointA, const B2DPoint& rControlPointB, const B2DPoint& rEnd)
+ : maStartPoint(rStart),
+ maEndPoint(rEnd),
+ maControlPointA(rControlPointA),
+ maControlPointB(rControlPointB)
+ {
+ }
+
+ B2DCubicBezier::~B2DCubicBezier()
+ {
+ }
+
+ // assignment operator
+ B2DCubicBezier& B2DCubicBezier::operator=(const B2DCubicBezier& rBezier)
+ {
+ maStartPoint = rBezier.maStartPoint;
+ maEndPoint = rBezier.maEndPoint;
+ maControlPointA = rBezier.maControlPointA;
+ maControlPointB = rBezier.maControlPointB;
+
+ return *this;
+ }
+
+ // compare operators
+ bool B2DCubicBezier::operator==(const B2DCubicBezier& rBezier) const
+ {
+ return (
+ maStartPoint == rBezier.maStartPoint
+ && maEndPoint == rBezier.maEndPoint
+ && maControlPointA == rBezier.maControlPointA
+ && maControlPointB == rBezier.maControlPointB
+ );
+ }
+
+ bool B2DCubicBezier::operator!=(const B2DCubicBezier& rBezier) const
+ {
+ return (
+ maStartPoint != rBezier.maStartPoint
+ || maEndPoint != rBezier.maEndPoint
+ || maControlPointA != rBezier.maControlPointA
+ || maControlPointB != rBezier.maControlPointB
+ );
+ }
+
+ bool B2DCubicBezier::equal(const B2DCubicBezier& rBezier) const
+ {
+ return (
+ maStartPoint.equal(rBezier.maStartPoint)
+ && maEndPoint.equal(rBezier.maEndPoint)
+ && maControlPointA.equal(rBezier.maControlPointA)
+ && maControlPointB.equal(rBezier.maControlPointB)
+ );
+ }
+
+ // test if vectors are used
+ bool B2DCubicBezier::isBezier() const
+ {
+ if(maControlPointA != maStartPoint || maControlPointB != maEndPoint)
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ void B2DCubicBezier::testAndSolveTrivialBezier()
+ {
+ if(maControlPointA != maStartPoint || maControlPointB != maEndPoint)
+ {
+ const B2DVector aEdge(maEndPoint - maStartPoint);
+
+ // controls parallel to edge can be trivial. No edge -> not parallel -> control can
+ // still not be trivial (e.g. ballon loop)
+ if(!aEdge.equalZero())
+ {
+ // get control vectors
+ const B2DVector aVecA(maControlPointA - maStartPoint);
+ const B2DVector aVecB(maControlPointB - maEndPoint);
+
+ // check if trivial per se
+ bool bAIsTrivial(aVecA.equalZero());
+ bool bBIsTrivial(aVecB.equalZero());
+
+ // #i102241# prepare inverse edge length to normalize cross values;
+ // else the small compare value used in fTools::equalZero
+ // will be length dependent and this detection will work as less
+ // precise as longer the edge is. In principle, the length of the control
+ // vector would need to be used too, but to be trivial it is assumed to
+ // be of roughly equal length to the edge, so edge length can be used
+ // for both. Only needed when one of both is not trivial per se.
+ const double fInverseEdgeLength(bAIsTrivial && bBIsTrivial
+ ? 1.0
+ : 1.0 / aEdge.getLength());
+
+ // if A is not zero, check if it could be
+ if(!bAIsTrivial)
+ {
+ // #i102241# parallel to edge? Check aVecA, aEdge. Use cross() which does what
+ // we need here with the precision we need
+ const double fCross(aVecA.cross(aEdge) * fInverseEdgeLength);
+
+ if(fTools::equalZero(fCross))
+ {
+ // get scale to edge. Use bigger distance for numeric quality
+ const double fScale(fabs(aEdge.getX()) > fabs(aEdge.getY())
+ ? aVecA.getX() / aEdge.getX()
+ : aVecA.getY() / aEdge.getY());
+
+ // relative end point of vector in edge range?
+ if(fTools::moreOrEqual(fScale, 0.0) && fTools::lessOrEqual(fScale, 1.0))
+ {
+ bAIsTrivial = true;
+ }
+ }
+ }
+
+ // if B is not zero, check if it could be, but only if A is already trivial;
+ // else solve to trivial will not be possible for whole edge
+ if(bAIsTrivial && !bBIsTrivial)
+ {
+ // parallel to edge? Check aVecB, aEdge
+ const double fCross(aVecB.cross(aEdge) * fInverseEdgeLength);
+
+ if(fTools::equalZero(fCross))
+ {
+ // get scale to edge. Use bigger distance for numeric quality
+ const double fScale(fabs(aEdge.getX()) > fabs(aEdge.getY())
+ ? aVecB.getX() / aEdge.getX()
+ : aVecB.getY() / aEdge.getY());
+
+ // end point of vector in edge range? Caution: controlB is directed AGAINST edge
+ if(fTools::lessOrEqual(fScale, 0.0) && fTools::moreOrEqual(fScale, -1.0))
+ {
+ bBIsTrivial = true;
+ }
+ }
+ }
+
+ // if both are/can be reduced, do it.
+ // Not possible if only one is/can be reduced (!)
+ if(bAIsTrivial && bBIsTrivial)
+ {
+ maControlPointA = maStartPoint;
+ maControlPointB = maEndPoint;
+ }
+ }
+ }
+ }
+
+ namespace {
+ double impGetLength(const B2DCubicBezier& rEdge, double fDeviation, sal_uInt32 nRecursionWatch)
+ {
+ const double fEdgeLength(rEdge.getEdgeLength());
+ const double fControlPolygonLength(rEdge.getControlPolygonLength());
+ const double fCurrentDeviation(fTools::equalZero(fControlPolygonLength) ? 0.0 : 1.0 - (fEdgeLength / fControlPolygonLength));
+
+ if(!nRecursionWatch || fTools:: lessOrEqual(fCurrentDeviation, fDeviation))
+ {
+ return (fEdgeLength + fControlPolygonLength) * 0.5;
+ }
+ else
+ {
+ B2DCubicBezier aLeft, aRight;
+ const double fNewDeviation(fDeviation * 0.5);
+ const sal_uInt32 nNewRecursionWatch(nRecursionWatch - 1);
+
+ rEdge.split(0.5, &aLeft, &aRight);
+
+ return impGetLength(aLeft, fNewDeviation, nNewRecursionWatch)
+ + impGetLength(aRight, fNewDeviation, nNewRecursionWatch);
+ }
+ }
+ }
+
+ double B2DCubicBezier::getLength(double fDeviation) const
+ {
+ if(isBezier())
+ {
+ if(fDeviation < 0.00000001)
+ {
+ fDeviation = 0.00000001;
+ }
+
+ return impGetLength(*this, fDeviation, 6);
+ }
+ else
+ {
+ return B2DVector(getEndPoint() - getStartPoint()).getLength();
+ }
+ }
+
+ double B2DCubicBezier::getEdgeLength() const
+ {
+ const B2DVector aEdge(maEndPoint - maStartPoint);
+ return aEdge.getLength();
+ }
+
+ double B2DCubicBezier::getControlPolygonLength() const
+ {
+ const B2DVector aVectorA(maControlPointA - maStartPoint);
+ const B2DVector aVectorB(maEndPoint - maControlPointB);
+
+ if(!aVectorA.equalZero() || !aVectorB.equalZero())
+ {
+ const B2DVector aTop(maControlPointB - maControlPointA);
+ return (aVectorA.getLength() + aVectorB.getLength() + aTop.getLength());
+ }
+ else
+ {
+ return getEdgeLength();
+ }
+ }
+
+ void B2DCubicBezier::adaptiveSubdivideByAngle(B2DPolygon& rTarget, double fAngleBound, bool bAllowUnsharpen) const
+ {
+ if(isBezier())
+ {
+ // use support method #i37443# and allow unsharpen the criteria
+ ImpSubDivAngleStart(maStartPoint, maControlPointA, maControlPointB, maEndPoint, rTarget, fAngleBound * F_PI180, bAllowUnsharpen);
+ }
+ else
+ {
+ rTarget.append(getEndPoint());
+ }
+ }
+
+ B2DVector B2DCubicBezier::getTangent(double t) const
+ {
+ if(fTools::lessOrEqual(t, 0.0))
+ {
+ // tangent in start point
+ B2DVector aTangent(getControlPointA() - getStartPoint());
+
+ if(!aTangent.equalZero())
+ {
+ return aTangent;
+ }
+
+ // start point and control vector are the same, fallback
+ // to implicit start vector to control point B
+ aTangent = (getControlPointB() - getStartPoint()) * 0.3;
+
+ if(!aTangent.equalZero())
+ {
+ return aTangent;
+ }
+
+ // not a bezier at all, return edge vector
+ return (getEndPoint() - getStartPoint()) * 0.3;
+ }
+ else if(fTools::moreOrEqual(t, 1.0))
+ {
+ // tangent in end point
+ B2DVector aTangent(getEndPoint() - getControlPointB());
+
+ if(!aTangent.equalZero())
+ {
+ return aTangent;
+ }
+
+ // end point and control vector are the same, fallback
+ // to implicit start vector from control point A
+ aTangent = (getEndPoint() - getControlPointA()) * 0.3;
+
+ if(!aTangent.equalZero())
+ {
+ return aTangent;
+ }
+
+ // not a bezier at all, return edge vector
+ return (getEndPoint() - getStartPoint()) * 0.3;
+ }
+ else
+ {
+ // t is in ]0.0 .. 1.0[. Split and extract
+ B2DCubicBezier aRight;
+ split(t, 0, &aRight);
+
+ return aRight.getControlPointA() - aRight.getStartPoint();
+ }
+ }
+
+ // #i37443# adaptive subdivide by nCount subdivisions
+ void B2DCubicBezier::adaptiveSubdivideByCount(B2DPolygon& rTarget, sal_uInt32 nCount) const
+ {
+ const double fLenFact(1.0 / static_cast< double >(nCount + 1));
+
+ for(sal_uInt32 a(1); a <= nCount; a++)
+ {
+ const double fPos(static_cast< double >(a) * fLenFact);
+ rTarget.append(interpolatePoint(fPos));
+ }
+
+ rTarget.append(getEndPoint());
+ }
+
+ // adaptive subdivide by distance
+ void B2DCubicBezier::adaptiveSubdivideByDistance(B2DPolygon& rTarget, double fDistanceBound) const
+ {
+ if(isBezier())
+ {
+ ImpSubDivDistance(maStartPoint, maControlPointA, maControlPointB, maEndPoint, rTarget,
+ fDistanceBound * fDistanceBound, ::std::numeric_limits<double>::max(), 30);
+ }
+ else
+ {
+ rTarget.append(getEndPoint());
+ }
+ }
+
+ B2DPoint B2DCubicBezier::interpolatePoint(double t) const
+ {
+ OSL_ENSURE(t >= 0.0 && t <= 1.0, "B2DCubicBezier::interpolatePoint: Access out of range (!)");
+
+ if(isBezier())
+ {
+ const B2DPoint aS1L(interpolate(maStartPoint, maControlPointA, t));
+ const B2DPoint aS1C(interpolate(maControlPointA, maControlPointB, t));
+ const B2DPoint aS1R(interpolate(maControlPointB, maEndPoint, t));
+ const B2DPoint aS2L(interpolate(aS1L, aS1C, t));
+ const B2DPoint aS2R(interpolate(aS1C, aS1R, t));
+
+ return interpolate(aS2L, aS2R, t);
+ }
+ else
+ {
+ return interpolate(maStartPoint, maEndPoint, t);
+ }
+ }
+
+ double B2DCubicBezier::getSmallestDistancePointToBezierSegment(const B2DPoint& rTestPoint, double& rCut) const
+ {
+ const sal_uInt32 nInitialDivisions(3L);
+ B2DPolygon aInitialPolygon;
+
+ // as start make a fix division, creates nInitialDivisions + 2L points
+ aInitialPolygon.append(getStartPoint());
+ adaptiveSubdivideByCount(aInitialPolygon, nInitialDivisions);
+
+ // now look for the closest point
+ const sal_uInt32 nPointCount(aInitialPolygon.count());
+ B2DVector aVector(rTestPoint - aInitialPolygon.getB2DPoint(0L));
+ double fQuadDist(aVector.getX() * aVector.getX() + aVector.getY() * aVector.getY());
+ double fNewQuadDist;
+ sal_uInt32 nSmallestIndex(0L);
+
+ for(sal_uInt32 a(1L); a < nPointCount; a++)
+ {
+ aVector = B2DVector(rTestPoint - aInitialPolygon.getB2DPoint(a));
+ fNewQuadDist = aVector.getX() * aVector.getX() + aVector.getY() * aVector.getY();
+
+ if(fNewQuadDist < fQuadDist)
+ {
+ fQuadDist = fNewQuadDist;
+ nSmallestIndex = a;
+ }
+ }
+
+ // look right and left for even smaller distances
+ double fStepValue(1.0 / (double)((nPointCount - 1L) * 2L)); // half the edge step width
+ double fPosition((double)nSmallestIndex / (double)(nPointCount - 1L));
+ bool bDone(false);
+
+ while(!bDone)
+ {
+ if(!bDone)
+ {
+ // test left
+ double fPosLeft(fPosition - fStepValue);
+
+ if(fPosLeft < 0.0)
+ {
+ fPosLeft = 0.0;
+ aVector = B2DVector(rTestPoint - maStartPoint);
+ }
+ else
+ {
+ aVector = B2DVector(rTestPoint - interpolatePoint(fPosLeft));
+ }
+
+ fNewQuadDist = aVector.getX() * aVector.getX() + aVector.getY() * aVector.getY();
+
+ if(fTools::less(fNewQuadDist, fQuadDist))
+ {
+ fQuadDist = fNewQuadDist;
+ fPosition = fPosLeft;
+ }
+ else
+ {
+ // test right
+ double fPosRight(fPosition + fStepValue);
+
+ if(fPosRight > 1.0)
+ {
+ fPosRight = 1.0;
+ aVector = B2DVector(rTestPoint - maEndPoint);
+ }
+ else
+ {
+ aVector = B2DVector(rTestPoint - interpolatePoint(fPosRight));
+ }
+
+ fNewQuadDist = aVector.getX() * aVector.getX() + aVector.getY() * aVector.getY();
+
+ if(fTools::less(fNewQuadDist, fQuadDist))
+ {
+ fQuadDist = fNewQuadDist;
+ fPosition = fPosRight;
+ }
+ else
+ {
+ // not less left or right, done
+ bDone = true;
+ }
+ }
+ }
+
+ if(0.0 == fPosition || 1.0 == fPosition)
+ {
+ // if we are completely left or right, we are done
+ bDone = true;
+ }
+
+ if(!bDone)
+ {
+ // prepare next step value
+ fStepValue /= 2.0;
+ }
+ }
+
+ rCut = fPosition;
+ return sqrt(fQuadDist);
+ }
+
+ void B2DCubicBezier::split(double t, B2DCubicBezier* pBezierA, B2DCubicBezier* pBezierB) const
+ {
+ OSL_ENSURE(t >= 0.0 && t <= 1.0, "B2DCubicBezier::split: Access out of range (!)");
+
+ if(!pBezierA && !pBezierB)
+ {
+ return;
+ }
+
+ if(isBezier())
+ {
+ const B2DPoint aS1L(interpolate(maStartPoint, maControlPointA, t));
+ const B2DPoint aS1C(interpolate(maControlPointA, maControlPointB, t));
+ const B2DPoint aS1R(interpolate(maControlPointB, maEndPoint, t));
+ const B2DPoint aS2L(interpolate(aS1L, aS1C, t));
+ const B2DPoint aS2R(interpolate(aS1C, aS1R, t));
+ const B2DPoint aS3C(interpolate(aS2L, aS2R, t));
+
+ if(pBezierA)
+ {
+ pBezierA->setStartPoint(maStartPoint);
+ pBezierA->setEndPoint(aS3C);
+ pBezierA->setControlPointA(aS1L);
+ pBezierA->setControlPointB(aS2L);
+ }
+
+ if(pBezierB)
+ {
+ pBezierB->setStartPoint(aS3C);
+ pBezierB->setEndPoint(maEndPoint);
+ pBezierB->setControlPointA(aS2R);
+ pBezierB->setControlPointB(aS1R);
+ }
+ }
+ else
+ {
+ const B2DPoint aSplit(interpolate(maStartPoint, maEndPoint, t));
+
+ if(pBezierA)
+ {
+ pBezierA->setStartPoint(maStartPoint);
+ pBezierA->setEndPoint(aSplit);
+ pBezierA->setControlPointA(maStartPoint);
+ pBezierA->setControlPointB(aSplit);
+ }
+
+ if(pBezierB)
+ {
+ pBezierB->setStartPoint(aSplit);
+ pBezierB->setEndPoint(maEndPoint);
+ pBezierB->setControlPointA(aSplit);
+ pBezierB->setControlPointB(maEndPoint);
+ }
+ }
+ }
+
+ B2DCubicBezier B2DCubicBezier::snippet(double fStart, double fEnd) const
+ {
+ B2DCubicBezier aRetval;
+
+ if(fTools::more(fStart, 1.0))
+ {
+ fStart = 1.0;
+ }
+ else if(fTools::less(fStart, 0.0))
+ {
+ fStart = 0.0;
+ }
+
+ if(fTools::more(fEnd, 1.0))
+ {
+ fEnd = 1.0;
+ }
+ else if(fTools::less(fEnd, 0.0))
+ {
+ fEnd = 0.0;
+ }
+
+ if(fEnd <= fStart)
+ {
+ // empty or NULL, create single point at center
+ const double fSplit((fEnd + fStart) * 0.5);
+ const B2DPoint aPoint(interpolate(getStartPoint(), getEndPoint(), fSplit));
+ aRetval.setStartPoint(aPoint);
+ aRetval.setEndPoint(aPoint);
+ aRetval.setControlPointA(aPoint);
+ aRetval.setControlPointB(aPoint);
+ }
+ else
+ {
+ if(isBezier())
+ {
+ // copy bezier; cut off right, then cut off left. Do not forget to
+ // adapt cut value when both cuts happen
+ const bool bEndIsOne(fTools::equal(fEnd, 1.0));
+ const bool bStartIsZero(fTools::equalZero(fStart));
+ aRetval = *this;
+
+ if(!bEndIsOne)
+ {
+ aRetval.split(fEnd, &aRetval, 0);
+
+ if(!bStartIsZero)
+ {
+ fStart /= fEnd;
+ }
+ }
+
+ if(!bStartIsZero)
+ {
+ aRetval.split(fStart, 0, &aRetval);
+ }
+ }
+ else
+ {
+ // no bezier, create simple edge
+ const B2DPoint aPointA(interpolate(getStartPoint(), getEndPoint(), fStart));
+ const B2DPoint aPointB(interpolate(getStartPoint(), getEndPoint(), fEnd));
+ aRetval.setStartPoint(aPointA);
+ aRetval.setEndPoint(aPointB);
+ aRetval.setControlPointA(aPointA);
+ aRetval.setControlPointB(aPointB);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DRange B2DCubicBezier::getRange() const
+ {
+ B2DRange aRetval(maStartPoint, maEndPoint);
+
+ aRetval.expand(maControlPointA);
+ aRetval.expand(maControlPointB);
+
+ return aRetval;
+ }
+
+ bool B2DCubicBezier::getMinimumExtremumPosition(double& rfResult) const
+ {
+ ::std::vector< double > aAllResults;
+
+ aAllResults.reserve(4);
+ getAllExtremumPositions(aAllResults);
+
+ const sal_uInt32 nCount(aAllResults.size());
+
+ if(!nCount)
+ {
+ return false;
+ }
+ else if(1 == nCount)
+ {
+ rfResult = aAllResults[0];
+ return true;
+ }
+ else
+ {
+ rfResult = *(::std::min_element(aAllResults.begin(), aAllResults.end()));
+ return true;
+ }
+ }
+
+ namespace
+ {
+ inline void impCheckExtremumResult(double fCandidate, ::std::vector< double >& rResult)
+ {
+ // check for range ]0.0 .. 1.0[ with excluding 1.0 and 0.0 clearly
+ // by using the equalZero test, NOT ::more or ::less which will use the
+ // ApproxEqual() which is too exact here
+ if(fCandidate > 0.0 && !fTools::equalZero(fCandidate))
+ {
+ if(fCandidate < 1.0 && !fTools::equalZero(fCandidate - 1.0))
+ {
+ rResult.push_back(fCandidate);
+ }
+ }
+ }
+ }
+
+ void B2DCubicBezier::getAllExtremumPositions(::std::vector< double >& rResults) const
+ {
+ rResults.clear();
+
+ // calculate the x-extrema parameters by zeroing first x-derivative
+ // of the cubic bezier's parametric formula, which results in a
+ // quadratic equation: dBezier/dt = t*t*fAX - 2*t*fBX + fCX
+ const B2DPoint aRelativeEndPoint(maEndPoint-maStartPoint);
+ const double fAX = 3 * (maControlPointA.getX() - maControlPointB.getX()) + aRelativeEndPoint.getX();
+ const double fBX = 2 * maControlPointA.getX() - maControlPointB.getX() - maStartPoint.getX();
+ double fCX(maControlPointA.getX() - maStartPoint.getX());
+
+ if(fTools::equalZero(fCX))
+ {
+ // detect fCX equal zero and truncate to real zero value in that case
+ fCX = 0.0;
+ }
+
+ if( !fTools::equalZero(fAX) )
+ {
+ // derivative is polynomial of order 2 => use binomial formula
+ const double fD = fBX*fBX - fAX*fCX;
+ if( fD >= 0.0 )
+ {
+ const double fS = sqrt(fD);
+ // same as above but for very small fAX and/or fCX
+ // this has much better numerical stability
+ // see NRC chapter 5-6 (thanks THB!)
+ const double fQ = fBX + ((fBX >= 0) ? +fS : -fS);
+ impCheckExtremumResult(fQ / fAX, rResults);
+ impCheckExtremumResult(fCX / fQ, rResults);
+ }
+ }
+ else if( !fTools::equalZero(fBX) )
+ {
+ // derivative is polynomial of order 1 => one extrema
+ impCheckExtremumResult(fCX / (2 * fBX), rResults);
+ }
+
+ // calculate the y-extrema parameters by zeroing first y-derivative
+ const double fAY = 3 * (maControlPointA.getY() - maControlPointB.getY()) + aRelativeEndPoint.getY();
+ const double fBY = 2 * maControlPointA.getY() - maControlPointB.getY() - maStartPoint.getY();
+ double fCY(maControlPointA.getY() - maStartPoint.getY());
+
+ if(fTools::equalZero(fCY))
+ {
+ // detect fCY equal zero and truncate to real zero value in that case
+ fCY = 0.0;
+ }
+
+ if( !fTools::equalZero(fAY) )
+ {
+ // derivative is polynomial of order 2 => use binomial formula
+ const double fD = fBY*fBY - fAY*fCY;
+ if( fD >= 0 )
+ {
+ const double fS = sqrt(fD);
+ // same as above but for very small fAX and/or fCX
+ // this has much better numerical stability
+ // see NRC chapter 5-6 (thanks THB!)
+ const double fQ = fBY + ((fBY >= 0) ? +fS : -fS);
+ impCheckExtremumResult(fQ / fAY, rResults);
+ impCheckExtremumResult(fCY / fQ, rResults);
+ }
+ }
+ else if( !fTools::equalZero(fBY) )
+ {
+ // derivative is polynomial of order 1 => one extrema
+ impCheckExtremumResult(fCY / (2 * fBY), rResults);
+ }
+ }
+
+ int B2DCubicBezier::getMaxDistancePositions( double pResult[2]) const
+ {
+ // the distance from the bezier to a line through start and end
+ // is proportional to (ENDx-STARTx,ENDy-STARTy)*(+BEZIERy(t),-BEZIERx(t))
+ // this distance becomes zero for at least t==0 and t==1
+ // its extrema that are between 0..1 are interesting as split candidates
+ // its derived function has the form dD/dt = fA*t^2 + 2*fB*t + fC
+ const B2DPoint aRelativeEndPoint(maEndPoint-maStartPoint);
+ const double fA = 3 * (maEndPoint.getX() - maControlPointB.getX()) * aRelativeEndPoint.getY()
+ - 3 * (maEndPoint.getY() - maControlPointB.getY()) * aRelativeEndPoint.getX();
+ const double fB = (maControlPointB.getX() - maControlPointA.getX()) * aRelativeEndPoint.getY()
+ - (maControlPointB.getY() - maControlPointA.getY()) * aRelativeEndPoint.getX();
+ const double fC = (maControlPointA.getX() - maStartPoint.getX()) * aRelativeEndPoint.getY()
+ - (maControlPointA.getY() - maStartPoint.getY()) * aRelativeEndPoint.getX();
+
+ // test for degenerated case: non-cubic curve
+ if( fTools::equalZero(fA) )
+ {
+ // test for degenerated case: straight line
+ if( fTools::equalZero(fB) )
+ return 0;
+
+ // degenerated case: quadratic bezier
+ pResult[0] = -fC / (2*fB);
+
+ // test root: ignore it when it is outside the curve
+ int nCount = ((pResult[0] > 0) && (pResult[0] < 1));
+ return nCount;
+ }
+
+ // derivative is polynomial of order 2
+ // check if the polynomial has non-imaginary roots
+ const double fD = fB*fB - fA*fC;
+ if( fD >= 0.0 ) // TODO: is this test needed? geometrically not IMHO
+ {
+ // calculate the first root
+ const double fS = sqrt(fD);
+ const double fQ = fB + ((fB >= 0) ? +fS : -fS);
+ pResult[0] = fQ / fA;
+ // test root: ignore it when it is outside the curve
+ int nCount = ((pResult[0] > 0) && (pResult[0] < 1));
+
+ // ignore multiplicit roots
+ if( !fTools::equalZero(fD) )
+ {
+ // calculate the second root
+ const double fRoot = fC / fQ;
+ pResult[ nCount ] = fC / fQ;
+ // test root: ignore it when it is outside the curve
+ nCount += ((fRoot > 0) && (fRoot < 1));
+ }
+
+ return nCount;
+ }
+
+ return 0;
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/curve/b2dquadraticbezier.cxx b/basegfx/source/curve/b2dquadraticbezier.cxx
new file mode 100644
index 000000000000..488e0ecd459e
--- /dev/null
+++ b/basegfx/source/curve/b2dquadraticbezier.cxx
@@ -0,0 +1,108 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/curve/b2dquadraticbezier.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ B2DQuadraticBezier::B2DQuadraticBezier(const B2DQuadraticBezier& rBezier)
+ : maStartPoint(rBezier.maStartPoint),
+ maEndPoint(rBezier.maEndPoint),
+ maControlPoint(rBezier.maControlPoint)
+ {
+ }
+
+ B2DQuadraticBezier::B2DQuadraticBezier()
+ {
+ }
+
+ B2DQuadraticBezier::B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart, const ::basegfx::B2DPoint& rEnd)
+ : maStartPoint(rStart),
+ maEndPoint(rEnd)
+ {
+ }
+
+ B2DQuadraticBezier::B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart, const ::basegfx::B2DPoint& rControl, const ::basegfx::B2DPoint& rEnd)
+ : maStartPoint(rStart),
+ maEndPoint(rEnd),
+ maControlPoint(rControl)
+ {
+ }
+
+ B2DQuadraticBezier::~B2DQuadraticBezier()
+ {
+ }
+
+ // assignment operator
+ B2DQuadraticBezier& B2DQuadraticBezier::operator=(const B2DQuadraticBezier& rBezier)
+ {
+ maStartPoint = rBezier.maStartPoint;
+ maEndPoint = rBezier.maEndPoint;
+ maControlPoint = rBezier.maControlPoint;
+
+ return *this;
+ }
+
+ // compare operators
+ bool B2DQuadraticBezier::operator==(const B2DQuadraticBezier& rBezier) const
+ {
+ return (
+ maStartPoint == rBezier.maStartPoint
+ && maEndPoint == rBezier.maEndPoint
+ && maControlPoint == rBezier.maControlPoint
+ );
+ }
+
+ bool B2DQuadraticBezier::operator!=(const B2DQuadraticBezier& rBezier) const
+ {
+ return (
+ maStartPoint != rBezier.maStartPoint
+ || maEndPoint != rBezier.maEndPoint
+ || maControlPoint != rBezier.maControlPoint
+ );
+ }
+
+ // test if control vector is used
+ bool B2DQuadraticBezier::isBezier() const
+ {
+ // if control vector is empty, bezier is not used
+ if(maControlPoint == maStartPoint || maControlPoint == maEndPoint)
+ return false;
+
+ return true;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/curve/makefile.mk b/basegfx/source/curve/makefile.mk
new file mode 100644
index 000000000000..88190cfdfe1a
--- /dev/null
+++ b/basegfx/source/curve/makefile.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=curve
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/b2dcubicbezier.obj \
+ $(SLO)$/b2dquadraticbezier.obj \
+ $(SLO)$/b2dbeziertools.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/inc/PolygonPoint.hxx b/basegfx/source/inc/PolygonPoint.hxx
new file mode 100644
index 000000000000..b2c7aa8bf855
--- /dev/null
+++ b/basegfx/source/inc/PolygonPoint.hxx
@@ -0,0 +1,541 @@
+/* -*- 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 _POLYGON_POINT_HXX
+#define _POLYGON_POINT_HXX
+
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+template < class Point > class SimplePointEntry
+{
+ Point maPoint;
+
+public:
+ SimplePointEntry()
+ : maPoint(Point::getEmptyPoint())
+ {
+ }
+
+ SimplePointEntry(const Point& rInitPoint)
+ : maPoint(rInitPoint)
+ {
+ }
+
+ const Point& getPoint() const
+ {
+ return maPoint;
+ }
+
+ void setPoint(const Point& rValue)
+ {
+ maPoint = rValue;
+ }
+
+ bool operator==(const SimplePointEntry& rEntry) const
+ {
+ return (maPoint == rEntry.maPoint);
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+template < class Vector > class SimpleBezierEntry
+{
+ Vector maBackward;
+ Vector maForward;
+
+public:
+ SimpleBezierEntry()
+ : maBackward(Vector::getEmptyVector()),
+ maForward(Vector::getEmptyVector())
+ {
+ }
+
+ SimpleBezierEntry(const Vector& rInitBackward, const Vector& rInitForward)
+ : maBackward(rInitBackward),
+ maForward(rInitForward)
+ {
+ }
+
+ const Vector& getBackwardVector() const
+ {
+ return maBackward;
+ }
+
+ void setBackwardVector(const Vector& rValue)
+ {
+ maBackward = rValue;
+ }
+
+ const Vector& getForwardVector() const
+ {
+ return maForward;
+ }
+
+ void setForwardVector(const Vector& rValue)
+ {
+ maForward = rValue;
+ }
+
+ bool isBezierNeeded()
+ {
+ if(maBackward != Vector::getEmptyVector() || maForward != Vector::getEmptyVector())
+ return true;
+ return false;
+ }
+
+ bool operator==(const SimpleBezierEntry& rEntry) const
+ {
+ return ((maBackward == rEntry.maBackward) && (maForward == rEntry.maForward));
+ }
+
+ void doInvertForFlip()
+ {
+ maBackward = -maBackward;
+ maForward = -maForward;
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+template < class Point, class Vector > class PolygonPointList
+{
+ typedef SimplePointEntry< Point > LocalSimplePointEntry;
+ typedef SimpleBezierEntry< Vector > LocalSimpleBezierEntry;
+ typedef ::std::vector< LocalSimplePointEntry > SimplePointVector;
+ typedef ::std::vector< LocalSimpleBezierEntry > SimpleBezierVector;
+
+ sal_uInt32 mnBezierCount;
+ SimplePointVector maPoints;
+ SimpleBezierVector* mpVectors;
+
+ unsigned mbIsClosed : 1;
+
+ void implTryToReduceToPointVector()
+ {
+ if(!mnBezierCount && mpVectors)
+ {
+ delete mpVectors;
+ mpVectors = 0L;
+ }
+ }
+
+public:
+ bool isBezier() const
+ {
+ return bool(mnBezierCount);
+ }
+
+ bool isClosed() const
+ {
+ return bool(mbIsClosed);
+ }
+
+ void setClosed(bool bNew)
+ {
+ mbIsClosed = bNew;
+ }
+
+ sal_uInt32 count() const
+ {
+ return maPoints.size();
+ }
+
+ PolygonPointList()
+ : mnBezierCount(0L),
+ mpVectors(0L),
+ mbIsClosed(false)
+ {
+ // complete initialization with defaults
+ }
+
+ PolygonPointList(const PolygonPointList& rSource)
+ : mnBezierCount(0L),
+ maPoints(rSource.maPoints),
+ mpVectors(0L),
+ mbIsClosed(rSource.mbIsClosed)
+ {
+ // complete initialization using copy
+ if(rSource.mpVectors && rSource.mnBezierCount)
+ {
+ mpVectors = new SimpleBezierVector(*rSource.mpVectors);
+ mnBezierCount = rSource.mnBezierCount;
+ }
+ }
+
+ PolygonPointList(const PolygonPointList& rSource, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : mnBezierCount(0L),
+ maPoints(nCount),
+ mpVectors(0L),
+ mbIsClosed(rSource.mbIsClosed)
+ {
+ // complete initialization using partly copy
+ if(nCount)
+ {
+ // copy point data
+ {
+ SimplePointVector::const_iterator aStart(rSource.maPoints.begin());
+ aStart += nIndex;
+ SimplePointVector::const_iterator aEnd(aStart);
+ aEnd += nCount;
+ maPoints.insert(0L, aStart, aEnd);
+ }
+
+ // copy bezier data
+ if(rSource.mpVectors && rSource.mnBezierCount)
+ {
+ mpVectors = new SimpleBezierVector();
+ mpVectors->reserve(nCount);
+
+ SimpleBezierVector::iterator aStart(mpVectors->begin());
+ aStart += nIndex;
+ SimpleBezierVector::iterator aEnd(aStart);
+ aEnd += nCount;
+
+ for( ; aStart != aEnd; ++aStart )
+ {
+ if(aStart->IsBezierNeeded())
+ {
+ mnBezierCount++;
+ }
+
+ mpVectors->push_back(*aStart);
+ }
+
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+ }
+ }
+ }
+
+ ~PolygonPointList()
+ {
+ if(mpVectors)
+ {
+ delete mpVectors;
+ }
+ }
+
+ bool isEqual(const PolygonPointList& rPointList) const
+ {
+ // same point count?
+ if(maPoints.size() != rPointList.maPoints.size())
+ return false;
+
+ // if zero points the polys are equal
+ if(!maPoints.size())
+ return true;
+
+ // if bezier count used it needs to be equal
+ if(mnBezierCount != rPointList.mnBezierCount)
+ return false;
+
+ // compare point content
+ if(maPoints != rPointList.maPoints)
+ return false;
+
+ // beziercounts are equal: if it's zero, we are done
+ if(!mnBezierCount)
+ return true;
+
+ // beziercounts are equal and not zero; compare them
+ OSL_ENSURE(0L != mpVectors, "Error: Bezier list needs to exist here(!)");
+ OSL_ENSURE(0L != rPointList.mpVectors, "Error: Bezier list needs to exist here(!)");
+
+ return (*mpVectors == *rPointList.mpVectors);
+ }
+
+ const Point& getPoint(sal_uInt32 nIndex) const
+ {
+ return maPoints[nIndex].getPoint();
+ }
+
+ void setPoint(sal_uInt32 nIndex, const Point& rValue)
+ {
+ maPoints[nIndex].setPoint(rValue);
+ }
+
+ const Vector& getBackwardVector(sal_uInt32 nIndex) const
+ {
+ if(mpVectors)
+ return ((*mpVectors)[nIndex]).getBackwardVector();
+ else
+ return Vector::getEmptyVector();
+ }
+
+ void setBackwardVector(sal_uInt32 nIndex, const Vector& rValue)
+ {
+ if(mpVectors)
+ {
+ LocalSimpleBezierEntry& rDest = (*mpVectors)[nIndex];
+ bool bBezierNeededBefore(rDest.isBezierNeeded());
+ ((*mpVectors)[nIndex]).setBackwardVector(rValue);
+ bool bBezierNeededAfter(rDest.isBezierNeeded());
+
+ if(bBezierNeededBefore != bBezierNeededAfter)
+ {
+ if(bBezierNeededAfter)
+ mnBezierCount++;
+ else
+ mnBezierCount--;
+ }
+ }
+ else
+ {
+ bool bEmptyVector(rValue == Vector::getEmptyVector());
+
+ if(bEmptyVector)
+ return;
+
+ mpVectors = new SimpleBezierVector(maPoints.size());
+ ((*mpVectors)[nIndex]).setBackwardVector(rValue);
+ mnBezierCount++;
+ }
+ }
+
+ const Vector& getForwardVector(sal_uInt32 nIndex) const
+ {
+ if(mpVectors)
+ return ((*mpVectors)[nIndex]).getForwardVector();
+ else
+ return Vector::getEmptyVector();
+ }
+
+ void setForwardVector(sal_uInt32 nIndex, const Vector& rValue)
+ {
+ if(mpVectors)
+ {
+ LocalSimpleBezierEntry& rDest = (*mpVectors)[nIndex];
+ bool bBezierNeededBefore(rDest.isBezierNeeded());
+ ((*mpVectors)[nIndex]).setForwardVector(rValue);
+ bool bBezierNeededAfter(rDest.isBezierNeeded());
+
+ if(bBezierNeededBefore != bBezierNeededAfter)
+ {
+ if(bBezierNeededAfter)
+ mnBezierCount++;
+ else
+ mnBezierCount--;
+ }
+ }
+ else
+ {
+ bool bEmptyVector(rValue == Vector::getEmptyVector());
+
+ if(bEmptyVector)
+ return;
+
+ mpVectors = new SimpleBezierVector(maPoints.size());
+ ((*mpVectors)[nIndex]).setForwardVector(rValue);
+ mnBezierCount++;
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const Point& rPoint, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // add nCount copies of rPoint
+ {
+ LocalSimplePointEntry aNode(rPoint);
+ SimplePointVector::iterator aIndex(maPoints.begin());
+ aIndex += nIndex;
+ maPoints.insert(aIndex, nCount, aNode);
+ }
+
+ // add nCount empty entries to keep indices synchronized
+ if(mpVectors)
+ {
+ LocalSimpleBezierEntry aNode;
+ SimpleBezierVector::iterator aIndex(mpVectors->begin());
+ aIndex += nIndex;
+ mpVectors->insert(aIndex, nCount, aNode);
+ }
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const PolygonPointList& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maPoints.size());
+
+ if(nCount)
+ {
+ // instert point data
+ {
+ SimplePointVector::iterator aIndex(maPoints.begin());
+ aIndex += nIndex;
+
+ SimplePointVector::const_iterator aStart(rSource.maPoints.begin());
+ SimplePointVector::const_iterator aEnd(rSource.maPoints.end());
+
+ maPoints.insert(aIndex, aStart, aEnd);
+ }
+
+ // insert bezier data
+ if(rSource.mpVectors && rSource.mnBezierCount)
+ {
+ SimpleBezierVector::iterator aIndex(mpVectors->begin());
+ aIndex += nIndex;
+
+ SimpleBezierVector::iterator aStart(rSource.mpVectors->begin());
+ SimpleBezierVector::iterator aEnd(rSource.mpVectors->end());
+
+ if(!mpVectors)
+ {
+ mpVectors = new SimpleBezierVector(maPoints.size() - nCount);
+ }
+
+ mpVectors->insert(aIndex, aStart, aEnd);
+
+ mnBezierCount += rSource.mnBezierCount;
+ }
+ else
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // add nCount empty entries to keep indices synchronized
+ if(mpVectors)
+ {
+ LocalSimpleBezierEntry aNode;
+ SimpleBezierVector::iterator aIndex(mpVectors->begin());
+ aIndex += nIndex;
+ mpVectors->insert(aIndex, nCount, aNode);
+ }
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // remove point data
+ {
+ SimplePointVector::iterator aStart(maPoints.begin());
+ aStart += nIndex;
+ const SimplePointVector::iterator aEnd(aStart + nCount);
+
+ maPoints.erase(aStart, aEnd);
+ }
+
+ // remove bezier data
+ if(mpVectors)
+ {
+ SimpleBezierVector::iterator aStart(mpVectors->begin());
+ aStart += nIndex;
+ const SimpleBezierVector::iterator aEnd(aStart + nCount);
+
+ // take care for correct mnBezierCount BEFORE erase
+ if(mnBezierCount)
+ {
+ SimpleBezierVector::iterator aTestIter(aStart);
+
+ for( ; mnBezierCount && aTestIter != aEnd; ++aTestIter)
+ {
+ if(aTestIter->isBezierNeeded())
+ mnBezierCount--;
+ }
+ }
+
+ if(mnBezierCount)
+ {
+ // erase nodes
+ mpVectors->erase(aStart, aEnd);
+ }
+ else
+ {
+ // try to reduce, maybe 0L == mnBezierCount
+ implTryToReduceToPointVector();
+ }
+ }
+ }
+ }
+
+ void flip()
+ {
+ if(maPoints.size() > 1)
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // calculate half size
+ const sal_uInt32 nHalfSize(maPoints.size() >> 1L);
+
+ // flip point data
+ {
+ SimplePointVector::iterator aStart(maPoints.begin());
+ SimplePointVector::iterator aEnd(maPoints.end());
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ LocalSimplePointEntry aTemp = *aStart;
+ *aStart++ = *aEnd;
+ *aEnd-- = aTemp;
+ }
+ }
+
+ // flip bezier data
+ if(mpVectors)
+ {
+ SimpleBezierVector::iterator aStart(mpVectors->begin());
+ SimpleBezierVector::iterator aEnd(mpVectors->end());
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ LocalSimpleBezierEntry aTemp = *aStart;
+ aTemp.doInvertForFlip();
+ *aStart = *aEnd;
+ aStart->doInvertForFlip();
+ aStart++;
+ *aEnd-- = aTemp;
+ }
+
+ // also flip vectors of middle point (if existing)
+ if(maPoints.size() % 2)
+ {
+ (*mpVectors)[nHalfSize].doInvertForFlip();
+ }
+ }
+ }
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif _POLYGON_POINT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/inc/hommatrixtemplate.hxx b/basegfx/source/inc/hommatrixtemplate.hxx
new file mode 100644
index 000000000000..d3d1a837225d
--- /dev/null
+++ b/basegfx/source/inc/hommatrixtemplate.hxx
@@ -0,0 +1,616 @@
+/* -*- 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 _HOMMATRIX_TEMPLATE_HXX
+#define _HOMMATRIX_TEMPLATE_HXX
+
+#include <sal/types.h>
+#include <basegfx/numeric/ftools.hxx>
+#include <math.h>
+#include <string.h>
+
+namespace basegfx
+{
+ namespace internal
+ {
+
+ inline double implGetDefaultValue(sal_uInt16 nRow, sal_uInt16 nColumn)
+ {
+ if(nRow == nColumn)
+ return 1.0;
+ return 0.0;
+ }
+
+ template < unsigned int _RowSize > class ImplMatLine
+ {
+ enum { RowSize = _RowSize };
+
+ double mfValue[RowSize];
+
+ public:
+ ImplMatLine()
+ {
+ }
+
+ ImplMatLine(sal_uInt16 nRow, ImplMatLine< RowSize >* pToBeCopied = 0L)
+ {
+ if(pToBeCopied)
+ {
+ memcpy(&mfValue, pToBeCopied, sizeof(double) * RowSize);
+ }
+ else
+ {
+ for(sal_uInt16 a(0); a < RowSize; a++)
+ {
+ mfValue[a] = implGetDefaultValue(nRow, a);
+ }
+ }
+ }
+
+ double get(sal_uInt16 nColumn) const
+ {
+ return mfValue[nColumn];
+ }
+
+ void set(sal_uInt16 nColumn, const double& rValue)
+ {
+ mfValue[nColumn] = rValue;
+ }
+ };
+
+ template < unsigned int _RowSize > class ImplHomMatrixTemplate
+ {
+ enum { RowSize = _RowSize };
+
+ ImplMatLine< RowSize > maLine[RowSize - 1];
+ ImplMatLine< RowSize >* mpLine;
+
+ public:
+ // Is last line used?
+ bool isLastLineDefault() const
+ {
+ if(!mpLine)
+ return true;
+
+ for(sal_uInt16 a(0); a < RowSize; a++)
+ {
+ const double fDefault(implGetDefaultValue((RowSize - 1), a));
+ const double fLineValue(mpLine->get(a));
+
+ if(!::basegfx::fTools::equal(fDefault, fLineValue))
+ {
+ return false;
+ }
+ }
+
+ // reset last line, it equals default
+ delete ((ImplHomMatrixTemplate< RowSize >*)this)->mpLine;
+ ((ImplHomMatrixTemplate< RowSize >*)this)->mpLine = 0L;
+
+ return true;
+ }
+
+ ImplHomMatrixTemplate()
+ : mpLine(0L)
+ {
+ // complete initialization with identity matrix, all lines
+ // were initialized with a trailing 1 followed by 0's.
+ for(sal_uInt16 a(0); a < RowSize-1; a++)
+ {
+ for(sal_uInt16 b(0); b < RowSize; b++)
+ maLine[a].set(b, implGetDefaultValue(a, b) );
+ }
+ }
+
+ ImplHomMatrixTemplate(const ImplHomMatrixTemplate& rToBeCopied)
+ : mpLine(0L)
+ {
+ // complete initialization using copy
+ for(sal_uInt16 a(0); a < (RowSize - 1); a++)
+ {
+ memcpy(&maLine[a], &rToBeCopied.maLine[a], sizeof(ImplMatLine< RowSize >));
+ }
+
+ if(rToBeCopied.mpLine)
+ {
+ mpLine = new ImplMatLine< RowSize >((RowSize - 1), rToBeCopied.mpLine);
+ }
+ }
+
+ ~ImplHomMatrixTemplate()
+ {
+ if(mpLine)
+ {
+ delete mpLine;
+ }
+ }
+
+ sal_uInt16 getEdgeLength() const { return RowSize; }
+
+ double get(sal_uInt16 nRow, sal_uInt16 nColumn) const
+ {
+ if(nRow < (RowSize - 1))
+ {
+ return maLine[nRow].get(nColumn);
+ }
+
+ if(mpLine)
+ {
+ return mpLine->get(nColumn);
+ }
+
+ return implGetDefaultValue((RowSize - 1), nColumn);
+ }
+
+ void set(sal_uInt16 nRow, sal_uInt16 nColumn, const double& rValue)
+ {
+ if(nRow < (RowSize - 1))
+ {
+ maLine[nRow].set(nColumn, rValue);
+ }
+ else if(mpLine)
+ {
+ mpLine->set(nColumn, rValue);
+ }
+ else
+ {
+ const double fDefault(implGetDefaultValue((RowSize - 1), nColumn));
+
+ if(!::basegfx::fTools::equal(fDefault, rValue))
+ {
+ mpLine = new ImplMatLine< RowSize >((RowSize - 1), 0L);
+ mpLine->set(nColumn, rValue);
+ }
+ }
+ }
+
+ void testLastLine()
+ {
+ if(mpLine)
+ {
+ bool bNecessary(false);
+
+ for(sal_uInt16 a(0);!bNecessary && a < RowSize; a++)
+ {
+ const double fDefault(implGetDefaultValue((RowSize - 1), a));
+ const double fLineValue(mpLine->get(a));
+
+ if(!::basegfx::fTools::equal(fDefault, fLineValue))
+ {
+ bNecessary = true;
+ }
+ }
+
+ if(!bNecessary)
+ {
+ delete mpLine;
+ mpLine = 0L;
+ }
+ }
+ }
+
+ // Left-upper decompositon
+ bool ludcmp(sal_uInt16 nIndex[], sal_Int16& nParity)
+ {
+ double fBig, fSum, fDum;
+ double fStorage[RowSize];
+ sal_uInt16 a, b, c;
+
+ // #i30874# Initialize nAMax (compiler warns)
+ sal_uInt16 nAMax = 0;
+
+ nParity = 1;
+
+ // Calc the max of each line. If a line is empty,
+ // stop immediately since matrix is not invertible then.
+ for(a = 0; a < RowSize; a++)
+ {
+ fBig = 0.0;
+
+ for(b = 0; b < RowSize; b++)
+ {
+ double fTemp(fabs(get(a, b)));
+
+ if(::basegfx::fTools::more(fTemp, fBig))
+ {
+ fBig = fTemp;
+ }
+ }
+
+ if(::basegfx::fTools::equalZero(fBig))
+ {
+ return false;
+ }
+
+ fStorage[a] = 1.0 / fBig;
+ }
+
+ // start normalizing
+ for(b = 0; b < RowSize; b++)
+ {
+ for(a = 0; a < b; a++)
+ {
+ fSum = get(a, b);
+
+ for(c = 0; c < a; c++)
+ {
+ fSum -= get(a, c) * get(c, b);
+ }
+
+ set(a, b, fSum);
+ }
+
+ fBig = 0.0;
+
+ for(a = b; a < RowSize; a++)
+ {
+ fSum = get(a, b);
+
+ for(c = 0; c < b; c++)
+ {
+ fSum -= get(a, c) * get(c, b);
+ }
+
+ set(a, b, fSum);
+ fDum = fStorage[a] * fabs(fSum);
+
+ if(::basegfx::fTools::moreOrEqual(fDum, fBig))
+ {
+ fBig = fDum;
+ nAMax = a;
+ }
+ }
+
+ if(b != nAMax)
+ {
+ for(c = 0; c < RowSize; c++)
+ {
+ fDum = get(nAMax, c);
+ set(nAMax, c, get(b, c));
+ set(b, c, fDum);
+ }
+
+ nParity = -nParity;
+ fStorage[nAMax] = fStorage[b];
+ }
+
+ nIndex[b] = nAMax;
+
+ // here the failure of precision occurs
+ const double fValBB(fabs(get(b, b)));
+
+ if(::basegfx::fTools::equalZero(fValBB))
+ {
+ return false;
+ }
+
+ if(b != (RowSize - 1))
+ {
+ fDum = 1.0 / get(b, b);
+
+ for(a = b + 1; a < RowSize; a++)
+ {
+ set(a, b, get(a, b) * fDum);
+ }
+ }
+ }
+
+ return true;
+ }
+
+ void lubksb(const sal_uInt16 nIndex[], double fRow[]) const
+ {
+ sal_uInt16 b, ip;
+ sal_Int16 a, a2 = -1;
+ double fSum;
+
+ for(a = 0; a < RowSize; a++)
+ {
+ ip = nIndex[a];
+ fSum = fRow[ip];
+ fRow[ip] = fRow[a];
+
+ if(a2 >= 0)
+ {
+ for(b = a2; b < a; b++)
+ {
+ fSum -= get(a, b) * fRow[b];
+ }
+ }
+ else if(!::basegfx::fTools::equalZero(fSum))
+ {
+ a2 = a;
+ }
+
+ fRow[a] = fSum;
+ }
+
+ for(a = (RowSize - 1); a >= 0; a--)
+ {
+ fSum = fRow[a];
+
+ for(b = a + 1; b < RowSize; b++)
+ {
+ fSum -= get(a, b) * fRow[b];
+ }
+
+ const double fValueAA(get(a, a));
+
+ if(!::basegfx::fTools::equalZero(fValueAA))
+ {
+ fRow[a] = fSum / get(a, a);
+ }
+ }
+ }
+
+ bool isIdentity() const
+ {
+ // last line needs no testing if not existing
+ const sal_uInt16 nMaxLine(
+ sal::static_int_cast<sal_uInt16>(mpLine ? RowSize : (RowSize - 1)) );
+
+ for(sal_uInt16 a(0); a < nMaxLine; a++)
+ {
+ for(sal_uInt16 b(0); b < RowSize; b++)
+ {
+ const double fDefault(implGetDefaultValue(a, b));
+ const double fValueAB(get(a, b));
+
+ if(!::basegfx::fTools::equal(fDefault, fValueAB))
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ bool isInvertible() const
+ {
+ ImplHomMatrixTemplate aWork(*this);
+ sal_uInt16 nIndex[RowSize];
+ sal_Int16 nParity;
+
+ return aWork.ludcmp(nIndex, nParity);
+ }
+
+ bool isNormalized() const
+ {
+ if(!mpLine)
+ return true;
+
+ const double fHomValue(get((RowSize - 1), (RowSize - 1)));
+
+ if(::basegfx::fTools::equalZero(fHomValue))
+ {
+ return true;
+ }
+
+ const double fOne(1.0);
+
+ if(::basegfx::fTools::equal(fOne, fHomValue))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ void doInvert(const ImplHomMatrixTemplate& rWork, const sal_uInt16 nIndex[])
+ {
+ double fArray[RowSize];
+
+ for(sal_uInt16 a(0); a < RowSize; a++)
+ {
+ // prepare line
+ sal_uInt16 b;
+ for( b = 0; b < RowSize; b++)
+ {
+ fArray[b] = implGetDefaultValue(a, b);
+ }
+
+ // expand line
+ rWork.lubksb(nIndex, fArray);
+
+ // copy line transposed to this matrix
+ for( b = 0; b < RowSize; b++)
+ {
+ set(b, a, fArray[b]);
+ }
+ }
+
+ // evtl. get rid of last matrix line
+ testLastLine();
+ }
+
+ void doNormalize()
+ {
+ if(mpLine)
+ {
+ const double fHomValue(get((RowSize - 1), (RowSize - 1)));
+
+ for(sal_uInt16 a(0); a < RowSize; a++)
+ {
+ for(sal_uInt16 b(0); b < RowSize; b++)
+ {
+ set(a, b, get(a, b) / fHomValue);
+ }
+ }
+
+ // evtl. get rid of last matrix line
+ testLastLine();
+ }
+ }
+
+ double doDeterminant() const
+ {
+ ImplHomMatrixTemplate aWork(*this);
+ sal_uInt16 nIndex[RowSize];
+ sal_Int16 nParity;
+ double fRetval(0.0);
+
+ if(aWork.ludcmp(nIndex, nParity))
+ {
+ fRetval = (double)nParity;
+
+ // last line needs no multiply if not existing; default value would be 1.
+ const sal_uInt16 nMaxLine(
+ sal::static_int_cast<sal_uInt16>(aWork.mpLine ? RowSize : (RowSize - 1)) );
+
+ for(sal_uInt16 a(0); a < nMaxLine; a++)
+ {
+ fRetval *= aWork.get(a, a);
+ }
+ }
+
+ return fRetval;
+ }
+
+ double doTrace() const
+ {
+ double fTrace = (mpLine) ? 0.0 : 1.0;
+ const sal_uInt16 nMaxLine(
+ sal::static_int_cast<sal_uInt16>(mpLine ? RowSize : (RowSize - 1)) );
+
+ for(sal_uInt16 a(0); a < nMaxLine; a++)
+ {
+ fTrace += get(a, a);
+ }
+
+ return fTrace;
+ }
+
+ void doTranspose()
+ {
+ for(sal_uInt16 a(0); a < (RowSize - 1); a++)
+ {
+ for(sal_uInt16 b(a + 1); b < RowSize; b++)
+ {
+ const double fTemp(get(a, b));
+ set(a, b, get(b, a));
+ set(b, a, fTemp);
+ }
+ }
+
+ testLastLine();
+ }
+
+ void doAddMatrix(const ImplHomMatrixTemplate& rMat)
+ {
+ for(sal_uInt16 a(0); a < RowSize; a++)
+ {
+ for(sal_uInt16 b(0); b < RowSize; b++)
+ {
+ set(a, b, get(a, b) + rMat.get(a, b));
+ }
+ }
+
+ testLastLine();
+ }
+
+ void doSubMatrix(const ImplHomMatrixTemplate& rMat)
+ {
+ for(sal_uInt16 a(0); a < RowSize; a++)
+ {
+ for(sal_uInt16 b(0); b < RowSize; b++)
+ {
+ set(a, b, get(a, b) - rMat.get(a, b));
+ }
+ }
+
+ testLastLine();
+ }
+
+ void doMulMatrix(const double& rfValue)
+ {
+ for(sal_uInt16 a(0); a < RowSize; a++)
+ {
+ for(sal_uInt16 b(0); b < RowSize; b++)
+ {
+ set(a, b, get(a, b) * rfValue);
+ }
+ }
+
+ testLastLine();
+ }
+
+ void doMulMatrix(const ImplHomMatrixTemplate& rMat)
+ {
+ // create a copy as source for the original values
+ const ImplHomMatrixTemplate aCopy(*this);
+
+ // TODO: maybe optimize cases where last line is [0 0 1].
+
+ double fValue(0.0);
+
+ for(sal_uInt16 a(0); a < RowSize; ++a)
+ {
+ for(sal_uInt16 b(0); b < RowSize; ++b)
+ {
+ fValue = 0.0;
+
+ for(sal_uInt16 c(0); c < RowSize; ++c)
+ fValue += aCopy.get(c, b) * rMat.get(a, c);
+
+ set(a, b, fValue);
+ }
+ }
+
+ testLastLine();
+ }
+
+ bool isEqual(const ImplHomMatrixTemplate& rMat) const
+ {
+ const sal_uInt16 nMaxLine(
+ sal::static_int_cast<sal_uInt16>((mpLine || rMat.mpLine) ? RowSize : (RowSize - 1)) );
+
+ for(sal_uInt16 a(0); a < nMaxLine; a++)
+ {
+ for(sal_uInt16 b(0); b < RowSize; b++)
+ {
+ const double fValueA(get(a, b));
+ const double fValueB(rMat.get(a, b));
+
+ if(!::basegfx::fTools::equal(fValueA, fValueB))
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+ };
+
+ } // namespace internal
+} // namespace basegfx
+
+#endif /* _HOMMATRIX_TEMPLATE_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/inc/polygontemplate.hxx b/basegfx/source/inc/polygontemplate.hxx
new file mode 100644
index 000000000000..a74f004e5ec7
--- /dev/null
+++ b/basegfx/source/inc/polygontemplate.hxx
@@ -0,0 +1,541 @@
+/* -*- 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 _POLYGON_TEMPLATE_HXX
+#define _POLYGON_TEMPLATE_HXX
+
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+template < class Point > class ImplSimplePointEntry
+{
+ Point maPoint;
+
+public:
+ ImplSimplePointEntry()
+ : maPoint(Point::getEmptyPoint())
+ {
+ }
+
+ ImplSimplePointEntry(const Point& rInitPoint)
+ : maPoint(rInitPoint)
+ {
+ }
+
+ const Point& getPoint() const
+ {
+ return maPoint;
+ }
+
+ void setPoint(const Point& rValue)
+ {
+ maPoint = rValue;
+ }
+
+ bool operator==(const ImplSimplePointEntry& rEntry) const
+ {
+ return (maPoint == rEntry.maPoint);
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+template < class Vector > class ImplSimpleBezierEntry
+{
+ Vector maBackward;
+ Vector maForward;
+
+public:
+ ImplSimpleBezierEntry()
+ : maBackward(Vector::getEmptyVector()),
+ maForward(Vector::getEmptyVector())
+ {
+ }
+
+ ImplSimpleBezierEntry(const Vector& rInitBackward, const Vector& rInitForward)
+ : maBackward(rInitBackward),
+ maForward(rInitForward)
+ {
+ }
+
+ const Vector& getBackwardVector() const
+ {
+ return maBackward;
+ }
+
+ void setBackwardVector(const Vector& rValue)
+ {
+ maBackward = rValue;
+ }
+
+ const Vector& getForwardVector() const
+ {
+ return maForward;
+ }
+
+ void setForwardVector(const Vector& rValue)
+ {
+ maForward = rValue;
+ }
+
+ bool isBezierNeeded()
+ {
+ if(!maBackward.equalZero() || !maForward.equalZero())
+ return true;
+ return false;
+ }
+
+ bool operator==(const ImplSimpleBezierEntry& rEntry) const
+ {
+ return ((maBackward == rEntry.maBackward) && (maForward == rEntry.maForward));
+ }
+
+ void doInvertForFlip()
+ {
+ maBackward = -maBackward;
+ maForward = -maForward;
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+template < class Point, class Vector > class ImplPolygonTemplate
+{
+ typedef ImplSimplePointEntry< Point > LocalImplSimplePointEntry;
+ typedef ImplSimpleBezierEntry< Vector > LocalImplSimpleBezierEntry;
+ typedef ::std::vector< LocalImplSimplePointEntry > SimplePointVector;
+ typedef ::std::vector< LocalImplSimpleBezierEntry > SimpleBezierVector;
+
+ sal_uInt32 mnBezierCount;
+ SimplePointVector maPoints;
+ SimpleBezierVector* mpVectors;
+
+ unsigned mbIsClosed : 1;
+
+ void implTryToReduceToPointVector()
+ {
+ if(!mnBezierCount && mpVectors)
+ {
+ delete mpVectors;
+ mpVectors = 0L;
+ }
+ }
+
+public:
+ bool isBezier() const
+ {
+ return bool(mnBezierCount);
+ }
+
+ bool isClosed() const
+ {
+ return bool(mbIsClosed);
+ }
+
+ void setClosed(bool bNew)
+ {
+ mbIsClosed = bNew;
+ }
+
+ sal_uInt32 count() const
+ {
+ return maPoints.size();
+ }
+
+ ImplPolygonTemplate()
+ : mnBezierCount(0L),
+ mpVectors(0L),
+ mbIsClosed(false)
+ {
+ // complete initialization with defaults
+ }
+
+ ImplPolygonTemplate(const ImplPolygonTemplate& rSource)
+ : mnBezierCount(0L),
+ maPoints(rSource.maPoints),
+ mpVectors(0L),
+ mbIsClosed(rSource.mbIsClosed)
+ {
+ // complete initialization using copy
+ if(rSource.mpVectors && rSource.mnBezierCount)
+ {
+ mpVectors = new SimpleBezierVector(*rSource.mpVectors);
+ mnBezierCount = rSource.mnBezierCount;
+ }
+ }
+
+ ImplPolygonTemplate(const ImplPolygonTemplate& rSource, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : mnBezierCount(0L),
+ maPoints(nCount),
+ mpVectors(0L),
+ mbIsClosed(rSource.mbIsClosed)
+ {
+ // complete initialization using partly copy
+ if(nCount)
+ {
+ // copy point data
+ {
+ SimplePointVector::const_iterator aStart(rSource.maPoints.begin());
+ aStart += nIndex;
+ SimplePointVector::const_iterator aEnd(aStart);
+ aEnd += nCount;
+ maPoints.insert(0L, aStart, aEnd);
+ }
+
+ // copy bezier data
+ if(rSource.mpVectors && rSource.mnBezierCount)
+ {
+ mpVectors = new SimpleBezierVector();
+ mpVectors->reserve(nCount);
+
+ SimpleBezierVector::iterator aStart(mpVectors->begin());
+ aStart += nIndex;
+ SimpleBezierVector::iterator aEnd(aStart);
+ aEnd += nCount;
+
+ for( ; aStart != aEnd; ++aStart )
+ {
+ if(aStart->isBezierNeeded())
+ {
+ mnBezierCount++;
+ }
+
+ mpVectors->push_back(*aStart);
+ }
+
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+ }
+ }
+ }
+
+ ~ImplPolygonTemplate()
+ {
+ if(mpVectors)
+ {
+ delete mpVectors;
+ }
+ }
+
+ bool isEqual(const ImplPolygonTemplate& rPointList) const
+ {
+ // same point count?
+ if(maPoints.size() != rPointList.maPoints.size())
+ return false;
+
+ // if zero points the polys are equal
+ if(!maPoints.size())
+ return true;
+
+ // if bezier count used it needs to be equal
+ if(mnBezierCount != rPointList.mnBezierCount)
+ return false;
+
+ // compare point content
+ if(maPoints != rPointList.maPoints)
+ return false;
+
+ // beziercounts are equal: if it's zero, we are done
+ if(!mnBezierCount)
+ return true;
+
+ // beziercounts are equal and not zero; compare them
+ OSL_ENSURE(0L != mpVectors, "Error: Bezier list needs to exist here(!)");
+ OSL_ENSURE(0L != rPointList.mpVectors, "Error: Bezier list needs to exist here(!)");
+
+ return (*mpVectors == *rPointList.mpVectors);
+ }
+
+ const Point& getPoint(sal_uInt32 nIndex) const
+ {
+ return maPoints[nIndex].getPoint();
+ }
+
+ void setPoint(sal_uInt32 nIndex, const Point& rValue)
+ {
+ maPoints[nIndex].setPoint(rValue);
+ }
+
+ const Vector& getBackwardVector(sal_uInt32 nIndex) const
+ {
+ if(mpVectors)
+ return ((*mpVectors)[nIndex]).getBackwardVector();
+ else
+ return Vector::getEmptyVector();
+ }
+
+ void setBackwardVector(sal_uInt32 nIndex, const Vector& rValue)
+ {
+ if(mpVectors)
+ {
+ LocalImplSimpleBezierEntry& rDest = (*mpVectors)[nIndex];
+ bool bBezierNeededBefore(rDest.isBezierNeeded());
+ ((*mpVectors)[nIndex]).setBackwardVector(rValue);
+ bool bBezierNeededAfter(rDest.isBezierNeeded());
+
+ if(bBezierNeededBefore != bBezierNeededAfter)
+ {
+ if(bBezierNeededAfter)
+ mnBezierCount++;
+ else
+ mnBezierCount--;
+ }
+ }
+ else
+ {
+ bool bEmptyVector(rValue.equalZero());
+
+ if(bEmptyVector)
+ return;
+
+ mpVectors = new SimpleBezierVector(maPoints.size());
+ ((*mpVectors)[nIndex]).setBackwardVector(rValue);
+ mnBezierCount++;
+ }
+ }
+
+ const Vector& getForwardVector(sal_uInt32 nIndex) const
+ {
+ if(mpVectors)
+ return ((*mpVectors)[nIndex]).getForwardVector();
+ else
+ return Vector::getEmptyVector();
+ }
+
+ void setForwardVector(sal_uInt32 nIndex, const Vector& rValue)
+ {
+ if(mpVectors)
+ {
+ LocalImplSimpleBezierEntry& rDest = (*mpVectors)[nIndex];
+ bool bBezierNeededBefore(rDest.isBezierNeeded());
+ ((*mpVectors)[nIndex]).setForwardVector(rValue);
+ bool bBezierNeededAfter(rDest.isBezierNeeded());
+
+ if(bBezierNeededBefore != bBezierNeededAfter)
+ {
+ if(bBezierNeededAfter)
+ mnBezierCount++;
+ else
+ mnBezierCount--;
+ }
+ }
+ else
+ {
+ bool bEmptyVector(rValue.equalZero());
+
+ if(bEmptyVector)
+ return;
+
+ mpVectors = new SimpleBezierVector(maPoints.size());
+ ((*mpVectors)[nIndex]).setForwardVector(rValue);
+ mnBezierCount++;
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const Point& rPoint, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // add nCount copies of rPoint
+ {
+ LocalImplSimplePointEntry aNode(rPoint);
+ SimplePointVector::iterator aIndex(maPoints.begin());
+ aIndex += nIndex;
+ maPoints.insert(aIndex, nCount, aNode);
+ }
+
+ // add nCount empty entries to keep indices synchronized
+ if(mpVectors)
+ {
+ LocalImplSimpleBezierEntry aNode;
+ SimpleBezierVector::iterator aIndex(mpVectors->begin());
+ aIndex += nIndex;
+ mpVectors->insert(aIndex, nCount, aNode);
+ }
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const ImplPolygonTemplate& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maPoints.size());
+
+ if(nCount)
+ {
+ // instert point data
+ {
+ SimplePointVector::iterator aIndex(maPoints.begin());
+ aIndex += nIndex;
+
+ SimplePointVector::const_iterator aStart(rSource.maPoints.begin());
+ SimplePointVector::const_iterator aEnd(rSource.maPoints.end());
+
+ maPoints.insert(aIndex, aStart, aEnd);
+ }
+
+ // insert bezier data
+ if(rSource.mpVectors && rSource.mnBezierCount)
+ {
+ SimpleBezierVector::iterator aIndex(mpVectors->begin());
+ aIndex += nIndex;
+
+ SimpleBezierVector::iterator aStart(rSource.mpVectors->begin());
+ SimpleBezierVector::iterator aEnd(rSource.mpVectors->end());
+
+ if(!mpVectors)
+ {
+ mpVectors = new SimpleBezierVector(maPoints.size() - nCount);
+ }
+
+ mpVectors->insert(aIndex, aStart, aEnd);
+
+ mnBezierCount += rSource.mnBezierCount;
+ }
+ else
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // add nCount empty entries to keep indices synchronized
+ if(mpVectors)
+ {
+ LocalImplSimpleBezierEntry aNode;
+ SimpleBezierVector::iterator aIndex(mpVectors->begin());
+ aIndex += nIndex;
+ mpVectors->insert(aIndex, nCount, aNode);
+ }
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // remove point data
+ {
+ SimplePointVector::iterator aStart(maPoints.begin());
+ aStart += nIndex;
+ const SimplePointVector::iterator aEnd(aStart + nCount);
+
+ maPoints.erase(aStart, aEnd);
+ }
+
+ // remove bezier data
+ if(mpVectors)
+ {
+ SimpleBezierVector::iterator aStart(mpVectors->begin());
+ aStart += nIndex;
+ const SimpleBezierVector::iterator aEnd(aStart + nCount);
+
+ // take care for correct mnBezierCount BEFORE erase
+ if(mnBezierCount)
+ {
+ SimpleBezierVector::iterator aTestIter(aStart);
+
+ for( ; mnBezierCount && aTestIter != aEnd; ++aTestIter)
+ {
+ if(aTestIter->isBezierNeeded())
+ mnBezierCount--;
+ }
+ }
+
+ if(mnBezierCount)
+ {
+ // erase nodes
+ mpVectors->erase(aStart, aEnd);
+ }
+ else
+ {
+ // try to reduce, maybe 0L == mnBezierCount
+ implTryToReduceToPointVector();
+ }
+ }
+ }
+ }
+
+ void flip()
+ {
+ if(maPoints.size() > 1)
+ {
+ // maybe vectors are not needed anymore, try to reduce memory footprint
+ implTryToReduceToPointVector();
+
+ // calculate half size
+ const sal_uInt32 nHalfSize(maPoints.size() >> 1L);
+
+ // flip point data
+ {
+ SimplePointVector::iterator aStart(maPoints.begin());
+ SimplePointVector::iterator aEnd(maPoints.end());
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ LocalImplSimplePointEntry aTemp = *aStart;
+ *aStart++ = *aEnd;
+ *aEnd-- = aTemp;
+ }
+ }
+
+ // flip bezier data
+ if(mpVectors)
+ {
+ SimpleBezierVector::iterator aStart(mpVectors->begin());
+ SimpleBezierVector::iterator aEnd(mpVectors->end());
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ LocalImplSimpleBezierEntry aTemp = *aStart;
+ aTemp.doInvertForFlip();
+ *aStart = *aEnd;
+ aStart->doInvertForFlip();
+ aStart++;
+ *aEnd-- = aTemp;
+ }
+
+ // also flip vectors of middle point (if existing)
+ if(maPoints.size() % 2)
+ {
+ (*mpVectors)[nHalfSize].doInvertForFlip();
+ }
+ }
+ }
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif _POLYGON_TEMPLATE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/matrix/b2dhommatrix.cxx b/basegfx/source/matrix/b2dhommatrix.cxx
new file mode 100644
index 000000000000..3ce43c739442
--- /dev/null
+++ b/basegfx/source/matrix/b2dhommatrix.cxx
@@ -0,0 +1,457 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <osl/diagnose.h>
+#include <rtl/instance.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <hommatrixtemplate.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class Impl2DHomMatrix : public ::basegfx::internal::ImplHomMatrixTemplate< 3 >
+ {
+ };
+
+ namespace { struct IdentityMatrix : public rtl::Static< B2DHomMatrix::ImplType,
+ IdentityMatrix > {}; }
+
+ B2DHomMatrix::B2DHomMatrix() :
+ mpImpl( IdentityMatrix::get() ) // use common identity matrix
+ {
+ }
+
+ B2DHomMatrix::B2DHomMatrix(const B2DHomMatrix& rMat) :
+ mpImpl(rMat.mpImpl)
+ {
+ }
+
+ B2DHomMatrix::~B2DHomMatrix()
+ {
+ }
+
+ B2DHomMatrix::B2DHomMatrix(double f_0x0, double f_0x1, double f_0x2, double f_1x0, double f_1x1, double f_1x2)
+ : mpImpl( IdentityMatrix::get() ) // use common identity matrix, will be made unique with 1st set-call
+ {
+ mpImpl->set(0, 0, f_0x0);
+ mpImpl->set(0, 1, f_0x1);
+ mpImpl->set(0, 2, f_0x2);
+ mpImpl->set(1, 0, f_1x0);
+ mpImpl->set(1, 1, f_1x1);
+ mpImpl->set(1, 2, f_1x2);
+ }
+
+ B2DHomMatrix& B2DHomMatrix::operator=(const B2DHomMatrix& rMat)
+ {
+ mpImpl = rMat.mpImpl;
+ return *this;
+ }
+
+ void B2DHomMatrix::makeUnique()
+ {
+ mpImpl.make_unique();
+ }
+
+ double B2DHomMatrix::get(sal_uInt16 nRow, sal_uInt16 nColumn) const
+ {
+ return mpImpl->get(nRow, nColumn);
+ }
+
+ void B2DHomMatrix::set(sal_uInt16 nRow, sal_uInt16 nColumn, double fValue)
+ {
+ mpImpl->set(nRow, nColumn, fValue);
+ }
+
+ void B2DHomMatrix::set3x2(double f_0x0, double f_0x1, double f_0x2, double f_1x0, double f_1x1, double f_1x2)
+ {
+ mpImpl->set(0, 0, f_0x0);
+ mpImpl->set(0, 1, f_0x1);
+ mpImpl->set(0, 2, f_0x2);
+ mpImpl->set(1, 0, f_1x0);
+ mpImpl->set(1, 1, f_1x1);
+ mpImpl->set(1, 2, f_1x2);
+ }
+
+ bool B2DHomMatrix::isLastLineDefault() const
+ {
+ return mpImpl->isLastLineDefault();
+ }
+
+ bool B2DHomMatrix::isIdentity() const
+ {
+ if(mpImpl.same_object(IdentityMatrix::get()))
+ return true;
+
+ return mpImpl->isIdentity();
+ }
+
+ void B2DHomMatrix::identity()
+ {
+ mpImpl = IdentityMatrix::get();
+ }
+
+ bool B2DHomMatrix::isInvertible() const
+ {
+ return mpImpl->isInvertible();
+ }
+
+ bool B2DHomMatrix::invert()
+ {
+ Impl2DHomMatrix aWork(*mpImpl);
+ sal_uInt16* pIndex = new sal_uInt16[mpImpl->getEdgeLength()];
+ sal_Int16 nParity;
+
+ if(aWork.ludcmp(pIndex, nParity))
+ {
+ mpImpl->doInvert(aWork, pIndex);
+ delete[] pIndex;
+
+ return true;
+ }
+
+ delete[] pIndex;
+ return false;
+ }
+
+ bool B2DHomMatrix::isNormalized() const
+ {
+ return mpImpl->isNormalized();
+ }
+
+ void B2DHomMatrix::normalize()
+ {
+ if(!const_cast<const B2DHomMatrix*>(this)->mpImpl->isNormalized())
+ mpImpl->doNormalize();
+ }
+
+ double B2DHomMatrix::determinant() const
+ {
+ return mpImpl->doDeterminant();
+ }
+
+ double B2DHomMatrix::trace() const
+ {
+ return mpImpl->doTrace();
+ }
+
+ void B2DHomMatrix::transpose()
+ {
+ mpImpl->doTranspose();
+ }
+
+ B2DHomMatrix& B2DHomMatrix::operator+=(const B2DHomMatrix& rMat)
+ {
+ mpImpl->doAddMatrix(*rMat.mpImpl);
+ return *this;
+ }
+
+ B2DHomMatrix& B2DHomMatrix::operator-=(const B2DHomMatrix& rMat)
+ {
+ mpImpl->doSubMatrix(*rMat.mpImpl);
+ return *this;
+ }
+
+ B2DHomMatrix& B2DHomMatrix::operator*=(double fValue)
+ {
+ const double fOne(1.0);
+
+ if(!fTools::equal(fOne, fValue))
+ mpImpl->doMulMatrix(fValue);
+
+ return *this;
+ }
+
+ B2DHomMatrix& B2DHomMatrix::operator/=(double fValue)
+ {
+ const double fOne(1.0);
+
+ if(!fTools::equal(fOne, fValue))
+ mpImpl->doMulMatrix(1.0 / fValue);
+
+ return *this;
+ }
+
+ B2DHomMatrix& B2DHomMatrix::operator*=(const B2DHomMatrix& rMat)
+ {
+ if(!rMat.isIdentity())
+ mpImpl->doMulMatrix(*rMat.mpImpl);
+
+ return *this;
+ }
+
+ bool B2DHomMatrix::operator==(const B2DHomMatrix& rMat) const
+ {
+ if(mpImpl.same_object(rMat.mpImpl))
+ return true;
+
+ return mpImpl->isEqual(*rMat.mpImpl);
+ }
+
+ bool B2DHomMatrix::operator!=(const B2DHomMatrix& rMat) const
+ {
+ return !(*this == rMat);
+ }
+
+ void B2DHomMatrix::rotate(double fRadiant)
+ {
+ if(!fTools::equalZero(fRadiant))
+ {
+ double fSin(0.0);
+ double fCos(1.0);
+
+ tools::createSinCosOrthogonal(fSin, fCos, fRadiant);
+ Impl2DHomMatrix aRotMat;
+
+ aRotMat.set(0, 0, fCos);
+ aRotMat.set(1, 1, fCos);
+ aRotMat.set(1, 0, fSin);
+ aRotMat.set(0, 1, -fSin);
+
+ mpImpl->doMulMatrix(aRotMat);
+ }
+ }
+
+ void B2DHomMatrix::translate(double fX, double fY)
+ {
+ if(!fTools::equalZero(fX) || !fTools::equalZero(fY))
+ {
+ Impl2DHomMatrix aTransMat;
+
+ aTransMat.set(0, 2, fX);
+ aTransMat.set(1, 2, fY);
+
+ mpImpl->doMulMatrix(aTransMat);
+ }
+ }
+
+ void B2DHomMatrix::scale(double fX, double fY)
+ {
+ const double fOne(1.0);
+
+ if(!fTools::equal(fOne, fX) || !fTools::equal(fOne, fY))
+ {
+ Impl2DHomMatrix aScaleMat;
+
+ aScaleMat.set(0, 0, fX);
+ aScaleMat.set(1, 1, fY);
+
+ mpImpl->doMulMatrix(aScaleMat);
+ }
+ }
+
+ void B2DHomMatrix::shearX(double fSx)
+ {
+ // #i76239# do not test againt 1.0, but against 0.0. We are talking about a value not on the diagonal (!)
+ if(!fTools::equalZero(fSx))
+ {
+ Impl2DHomMatrix aShearXMat;
+
+ aShearXMat.set(0, 1, fSx);
+
+ mpImpl->doMulMatrix(aShearXMat);
+ }
+ }
+
+ void B2DHomMatrix::shearY(double fSy)
+ {
+ // #i76239# do not test againt 1.0, but against 0.0. We are talking about a value not on the diagonal (!)
+ if(!fTools::equalZero(fSy))
+ {
+ Impl2DHomMatrix aShearYMat;
+
+ aShearYMat.set(1, 0, fSy);
+
+ mpImpl->doMulMatrix(aShearYMat);
+ }
+ }
+
+ /** Decomposition
+
+ New, optimized version with local shearX detection. Old version (keeping
+ below, is working well, too) used the 3D matrix decomposition when
+ shear was used. Keeping old version as comment below since it may get
+ necessary to add the determinant() test from there here, too.
+ */
+ bool B2DHomMatrix::decompose(B2DTuple& rScale, B2DTuple& rTranslate, double& rRotate, double& rShearX) const
+ {
+ // when perspective is used, decompose is not made here
+ if(!mpImpl->isLastLineDefault())
+ {
+ return false;
+ }
+
+ // reset rotate and shear and copy translation values in every case
+ rRotate = rShearX = 0.0;
+ rTranslate.setX(get(0, 2));
+ rTranslate.setY(get(1, 2));
+
+ // test for rotation and shear
+ if(fTools::equalZero(get(0, 1)) && fTools::equalZero(get(1, 0)))
+ {
+ // no rotation and shear, copy scale values
+ rScale.setX(get(0, 0));
+ rScale.setY(get(1, 1));
+ }
+ else
+ {
+ // get the unit vectors of the transformation -> the perpendicular vectors
+ B2DVector aUnitVecX(get(0, 0), get(1, 0));
+ B2DVector aUnitVecY(get(0, 1), get(1, 1));
+ const double fScalarXY(aUnitVecX.scalar(aUnitVecY));
+
+ // Test if shear is zero. That's the case if the unit vectors in the matrix
+ // are perpendicular -> scalar is zero. This is also the case when one of
+ // the unit vectors is zero.
+ if(fTools::equalZero(fScalarXY))
+ {
+ // calculate unsigned scale values
+ rScale.setX(aUnitVecX.getLength());
+ rScale.setY(aUnitVecY.getLength());
+
+ // check unit vectors for zero lengths
+ const bool bXIsZero(fTools::equalZero(rScale.getX()));
+ const bool bYIsZero(fTools::equalZero(rScale.getY()));
+
+ if(bXIsZero || bYIsZero)
+ {
+ // still extract as much as possible. Scalings are already set
+ if(!bXIsZero)
+ {
+ // get rotation of X-Axis
+ rRotate = atan2(aUnitVecX.getY(), aUnitVecX.getX());
+ }
+ else if(!bYIsZero)
+ {
+ // get rotation of X-Axis. When assuming X and Y perpendicular
+ // and correct rotation, it's the Y-Axis rotation minus 90 degrees
+ rRotate = atan2(aUnitVecY.getY(), aUnitVecY.getX()) - M_PI_2;
+ }
+
+ // one or both unit vectors do not extist, determinant is zero, no decomposition possible.
+ // Eventually used rotations or shears are lost
+ return false;
+ }
+ else
+ {
+ // no shear
+ // calculate rotation of X unit vector relative to (1, 0)
+ rRotate = atan2(aUnitVecX.getY(), aUnitVecX.getX());
+
+ // use orientation to evtl. correct sign of Y-Scale
+ const double fCrossXY(aUnitVecX.cross(aUnitVecY));
+
+ if(fCrossXY < 0.0)
+ {
+ rScale.setY(-rScale.getY());
+ }
+ }
+ }
+ else
+ {
+ // fScalarXY is not zero, thus both unit vectors exist. No need to handle that here
+ // shear, extract it
+ double fCrossXY(aUnitVecX.cross(aUnitVecY));
+
+ // get rotation by calculating angle of X unit vector relative to (1, 0).
+ // This is before the parallell test following the motto to extract
+ // as much as possible
+ rRotate = atan2(aUnitVecX.getY(), aUnitVecX.getX());
+
+ // get unsigned scale value for X. It will not change and is useful
+ // for further corrections
+ rScale.setX(aUnitVecX.getLength());
+
+ if(fTools::equalZero(fCrossXY))
+ {
+ // extract as much as possible
+ rScale.setY(aUnitVecY.getLength());
+
+ // unit vectors are parallel, thus not linear independent. No
+ // useful decomposition possible. This should not happen since
+ // the only way to get the unit vectors nearly parallell is
+ // a very big shearing. Anyways, be prepared for hand-filled
+ // matrices
+ // Eventually used rotations or shears are lost
+ return false;
+ }
+ else
+ {
+ // calculate the contained shear
+ rShearX = fScalarXY / fCrossXY;
+
+ if(!fTools::equalZero(rRotate))
+ {
+ // To be able to correct the shear for aUnitVecY, rotation needs to be
+ // removed first. Correction of aUnitVecX is easy, it will be rotated back to (1, 0).
+ aUnitVecX.setX(rScale.getX());
+ aUnitVecX.setY(0.0);
+
+ // for Y correction we rotate the UnitVecY back about -rRotate
+ const double fNegRotate(-rRotate);
+ const double fSin(sin(fNegRotate));
+ const double fCos(cos(fNegRotate));
+
+ const double fNewX(aUnitVecY.getX() * fCos - aUnitVecY.getY() * fSin);
+ const double fNewY(aUnitVecY.getX() * fSin + aUnitVecY.getY() * fCos);
+
+ aUnitVecY.setX(fNewX);
+ aUnitVecY.setY(fNewY);
+ }
+
+ // Correct aUnitVecY and fCrossXY to fShear=0. Rotation is already removed.
+ // Shear correction can only work with removed rotation
+ aUnitVecY.setX(aUnitVecY.getX() - (aUnitVecY.getY() * rShearX));
+ fCrossXY = aUnitVecX.cross(aUnitVecY);
+
+ // calculate unsigned scale value for Y, after the corrections since
+ // the shear correction WILL change the length of aUnitVecY
+ rScale.setY(aUnitVecY.getLength());
+
+ // use orientation to set sign of Y-Scale
+ if(fCrossXY < 0.0)
+ {
+ rScale.setY(-rScale.getY());
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+} // end of namespace basegfx
+
+///////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/matrix/b2dhommatrixtools.cxx b/basegfx/source/matrix/b2dhommatrixtools.cxx
new file mode 100644
index 000000000000..8c4b2d68a79b
--- /dev/null
+++ b/basegfx/source/matrix/b2dhommatrixtools.cxx
@@ -0,0 +1,404 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ ::rtl::OUString exportToSvg( const B2DHomMatrix& rMatrix )
+ {
+ rtl::OUStringBuffer aStrBuf;
+ aStrBuf.appendAscii("matrix(");
+
+ aStrBuf.append(rMatrix.get(0,0));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(1,0));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(0,1));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(1,1));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(0,2));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(1,2));
+ aStrBuf.appendAscii(")");
+
+ return aStrBuf.makeStringAndClear();
+ }
+
+ namespace tools
+ {
+ void createSinCosOrthogonal(double& o_rSin, double& o_rCos, double fRadiant)
+ {
+ if( fTools::equalZero( fmod( fRadiant, F_PI2 ) ) )
+ {
+ // determine quadrant
+ const sal_Int32 nQuad(
+ (4 + fround( 4/F_2PI*fmod( fRadiant, F_2PI ) )) % 4 );
+ switch( nQuad )
+ {
+ case 0: // -2pi,0,2pi
+ o_rSin = 0.0;
+ o_rCos = 1.0;
+ break;
+
+ case 1: // -3/2pi,1/2pi
+ o_rSin = 1.0;
+ o_rCos = 0.0;
+ break;
+
+ case 2: // -pi,pi
+ o_rSin = 0.0;
+ o_rCos = -1.0;
+ break;
+
+ case 3: // -1/2pi,3/2pi
+ o_rSin = -1.0;
+ o_rCos = 0.0;
+ break;
+
+ default:
+ OSL_ENSURE( false, "createSinCos: Impossible case reached" );
+ }
+ }
+ else
+ {
+ // TODO(P1): Maybe use glibc's sincos here (though
+ // that's kinda non-portable...)
+ o_rSin = sin(fRadiant);
+ o_rCos = cos(fRadiant);
+ }
+ }
+
+ B2DHomMatrix createScaleB2DHomMatrix(double fScaleX, double fScaleY)
+ {
+ B2DHomMatrix aRetval;
+ const double fOne(1.0);
+
+ if(!fTools::equal(fScaleX, fOne))
+ {
+ aRetval.set(0, 0, fScaleX);
+ }
+
+ if(!fTools::equal(fScaleY, fOne))
+ {
+ aRetval.set(1, 1, fScaleY);
+ }
+
+ return aRetval;
+ }
+
+ B2DHomMatrix createShearXB2DHomMatrix(double fShearX)
+ {
+ B2DHomMatrix aRetval;
+
+ if(!fTools::equalZero(fShearX))
+ {
+ aRetval.set(0, 1, fShearX);
+ }
+
+ return aRetval;
+ }
+
+ B2DHomMatrix createShearYB2DHomMatrix(double fShearY)
+ {
+ B2DHomMatrix aRetval;
+
+ if(!fTools::equalZero(fShearY))
+ {
+ aRetval.set(1, 0, fShearY);
+ }
+
+ return aRetval;
+ }
+
+ B2DHomMatrix createRotateB2DHomMatrix(double fRadiant)
+ {
+ B2DHomMatrix aRetval;
+
+ if(!fTools::equalZero(fRadiant))
+ {
+ double fSin(0.0);
+ double fCos(1.0);
+
+ createSinCosOrthogonal(fSin, fCos, fRadiant);
+ aRetval.set(0, 0, fCos);
+ aRetval.set(1, 1, fCos);
+ aRetval.set(1, 0, fSin);
+ aRetval.set(0, 1, -fSin);
+ }
+
+ return aRetval;
+ }
+
+ B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
+ {
+ B2DHomMatrix aRetval;
+
+ if(!(fTools::equalZero(fTranslateX) && fTools::equalZero(fTranslateY)))
+ {
+ aRetval.set(0, 2, fTranslateX);
+ aRetval.set(1, 2, fTranslateY);
+ }
+
+ return aRetval;
+ }
+
+ B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(
+ double fScaleX, double fScaleY,
+ double fShearX,
+ double fRadiant,
+ double fTranslateX, double fTranslateY)
+ {
+ const double fOne(1.0);
+
+ if(fTools::equal(fScaleX, fOne) && fTools::equal(fScaleY, fOne))
+ {
+ /// no scale, take shortcut
+ return createShearXRotateTranslateB2DHomMatrix(fShearX, fRadiant, fTranslateX, fTranslateY);
+ }
+ else
+ {
+ /// scale used
+ if(fTools::equalZero(fShearX))
+ {
+ /// no shear
+ if(fTools::equalZero(fRadiant))
+ {
+ /// no rotate, take shortcut
+ return createScaleTranslateB2DHomMatrix(fScaleX, fScaleY, fTranslateX, fTranslateY);
+ }
+ else
+ {
+ /// rotate and scale used, no shear
+ double fSin(0.0);
+ double fCos(1.0);
+
+ createSinCosOrthogonal(fSin, fCos, fRadiant);
+
+ B2DHomMatrix aRetval(
+ /* Row 0, Column 0 */ fCos * fScaleX,
+ /* Row 0, Column 1 */ fScaleY * -fSin,
+ /* Row 0, Column 2 */ fTranslateX,
+ /* Row 1, Column 0 */ fSin * fScaleX,
+ /* Row 1, Column 1 */ fScaleY * fCos,
+ /* Row 1, Column 2 */ fTranslateY);
+
+ return aRetval;
+ }
+ }
+ else
+ {
+ /// scale and shear used
+ if(fTools::equalZero(fRadiant))
+ {
+ /// scale and shear, but no rotate
+ B2DHomMatrix aRetval(
+ /* Row 0, Column 0 */ fScaleX,
+ /* Row 0, Column 1 */ fScaleY * fShearX,
+ /* Row 0, Column 2 */ fTranslateX,
+ /* Row 1, Column 0 */ 0.0,
+ /* Row 1, Column 1 */ fScaleY,
+ /* Row 1, Column 2 */ fTranslateY);
+
+ return aRetval;
+ }
+ else
+ {
+ /// scale, shear and rotate used
+ double fSin(0.0);
+ double fCos(1.0);
+
+ createSinCosOrthogonal(fSin, fCos, fRadiant);
+
+ B2DHomMatrix aRetval(
+ /* Row 0, Column 0 */ fCos * fScaleX,
+ /* Row 0, Column 1 */ fScaleY * ((fCos * fShearX) - fSin),
+ /* Row 0, Column 2 */ fTranslateX,
+ /* Row 1, Column 0 */ fSin * fScaleX,
+ /* Row 1, Column 1 */ fScaleY * ((fSin * fShearX) + fCos),
+ /* Row 1, Column 2 */ fTranslateY);
+
+ return aRetval;
+ }
+ }
+ }
+ }
+
+ B2DHomMatrix createShearXRotateTranslateB2DHomMatrix(
+ double fShearX,
+ double fRadiant,
+ double fTranslateX, double fTranslateY)
+ {
+ if(fTools::equalZero(fShearX))
+ {
+ /// no shear
+ if(fTools::equalZero(fRadiant))
+ {
+ /// no shear, no rotate, take shortcut
+ return createTranslateB2DHomMatrix(fTranslateX, fTranslateY);
+ }
+ else
+ {
+ /// no shear, but rotate used
+ double fSin(0.0);
+ double fCos(1.0);
+
+ createSinCosOrthogonal(fSin, fCos, fRadiant);
+
+ B2DHomMatrix aRetval(
+ /* Row 0, Column 0 */ fCos,
+ /* Row 0, Column 1 */ -fSin,
+ /* Row 0, Column 2 */ fTranslateX,
+ /* Row 1, Column 0 */ fSin,
+ /* Row 1, Column 1 */ fCos,
+ /* Row 1, Column 2 */ fTranslateY);
+
+ return aRetval;
+ }
+ }
+ else
+ {
+ /// shear used
+ if(fTools::equalZero(fRadiant))
+ {
+ /// no rotate, but shear used
+ B2DHomMatrix aRetval(
+ /* Row 0, Column 0 */ 1.0,
+ /* Row 0, Column 1 */ fShearX,
+ /* Row 0, Column 2 */ fTranslateX,
+ /* Row 1, Column 0 */ 0.0,
+ /* Row 1, Column 1 */ 1.0,
+ /* Row 1, Column 2 */ fTranslateY);
+
+ return aRetval;
+ }
+ else
+ {
+ /// shear and rotate used
+ double fSin(0.0);
+ double fCos(1.0);
+
+ createSinCosOrthogonal(fSin, fCos, fRadiant);
+
+ B2DHomMatrix aRetval(
+ /* Row 0, Column 0 */ fCos,
+ /* Row 0, Column 1 */ (fCos * fShearX) - fSin,
+ /* Row 0, Column 2 */ fTranslateX,
+ /* Row 1, Column 0 */ fSin,
+ /* Row 1, Column 1 */ (fSin * fShearX) + fCos,
+ /* Row 1, Column 2 */ fTranslateY);
+
+ return aRetval;
+ }
+ }
+ }
+
+ B2DHomMatrix createScaleTranslateB2DHomMatrix(
+ double fScaleX, double fScaleY,
+ double fTranslateX, double fTranslateY)
+ {
+ const double fOne(1.0);
+
+ if(fTools::equal(fScaleX, fOne) && fTools::equal(fScaleY, fOne))
+ {
+ /// no scale, take shortcut
+ return createTranslateB2DHomMatrix(fTranslateX, fTranslateY);
+ }
+ else
+ {
+ /// scale used
+ if(fTools::equalZero(fTranslateX) && fTools::equalZero(fTranslateY))
+ {
+ /// no translate, but scale.
+ B2DHomMatrix aRetval;
+
+ aRetval.set(0, 0, fScaleX);
+ aRetval.set(1, 1, fScaleY);
+
+ return aRetval;
+ }
+ else
+ {
+ /// translate and scale
+ B2DHomMatrix aRetval(
+ /* Row 0, Column 0 */ fScaleX,
+ /* Row 0, Column 1 */ 0.0,
+ /* Row 0, Column 2 */ fTranslateX,
+ /* Row 1, Column 0 */ 0.0,
+ /* Row 1, Column 1 */ fScaleY,
+ /* Row 1, Column 2 */ fTranslateY);
+
+ return aRetval;
+ }
+ }
+ }
+
+ B2DHomMatrix createRotateAroundPoint(
+ double fPointX, double fPointY,
+ double fRadiant)
+ {
+ B2DHomMatrix aRetval;
+
+ if(!fTools::equalZero(fRadiant))
+ {
+ double fSin(0.0);
+ double fCos(1.0);
+
+ createSinCosOrthogonal(fSin, fCos, fRadiant);
+
+ aRetval.set3x2(
+ /* Row 0, Column 0 */ fCos,
+ /* Row 0, Column 1 */ -fSin,
+ /* Row 0, Column 2 */ (fPointX * (1.0 - fCos)) + (fSin * fPointY),
+ /* Row 1, Column 0 */ fSin,
+ /* Row 1, Column 1 */ fCos,
+ /* Row 1, Column 2 */ (fPointY * (1.0 - fCos)) - (fSin * fPointX));
+ }
+
+ return aRetval;
+ }
+ } // end of namespace tools
+} // end of namespace basegfx
+
+///////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/matrix/b3dhommatrix.cxx b/basegfx/source/matrix/b3dhommatrix.cxx
new file mode 100644
index 000000000000..e665b47d58a6
--- /dev/null
+++ b/basegfx/source/matrix/b3dhommatrix.cxx
@@ -0,0 +1,599 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <rtl/instance.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <hommatrixtemplate.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+
+namespace basegfx
+{
+ class Impl3DHomMatrix : public ::basegfx::internal::ImplHomMatrixTemplate< 4 >
+ {
+ };
+
+ namespace { struct IdentityMatrix : public rtl::Static< B3DHomMatrix::ImplType,
+ IdentityMatrix > {}; }
+
+ B3DHomMatrix::B3DHomMatrix() :
+ mpImpl( IdentityMatrix::get() ) // use common identity matrix
+ {
+ }
+
+ B3DHomMatrix::B3DHomMatrix(const B3DHomMatrix& rMat) :
+ mpImpl(rMat.mpImpl)
+ {
+ }
+
+ B3DHomMatrix::~B3DHomMatrix()
+ {
+ }
+
+ B3DHomMatrix& B3DHomMatrix::operator=(const B3DHomMatrix& rMat)
+ {
+ mpImpl = rMat.mpImpl;
+ return *this;
+ }
+
+ void B3DHomMatrix::makeUnique()
+ {
+ mpImpl.make_unique();
+ }
+
+ double B3DHomMatrix::get(sal_uInt16 nRow, sal_uInt16 nColumn) const
+ {
+ return mpImpl->get(nRow, nColumn);
+ }
+
+ void B3DHomMatrix::set(sal_uInt16 nRow, sal_uInt16 nColumn, double fValue)
+ {
+ mpImpl->set(nRow, nColumn, fValue);
+ }
+
+ bool B3DHomMatrix::isLastLineDefault() const
+ {
+ return mpImpl->isLastLineDefault();
+ }
+
+ bool B3DHomMatrix::isIdentity() const
+ {
+ if(mpImpl.same_object(IdentityMatrix::get()))
+ return true;
+
+ return mpImpl->isIdentity();
+ }
+
+ void B3DHomMatrix::identity()
+ {
+ mpImpl = IdentityMatrix::get();
+ }
+
+ bool B3DHomMatrix::isInvertible() const
+ {
+ return mpImpl->isInvertible();
+ }
+
+ bool B3DHomMatrix::invert()
+ {
+ Impl3DHomMatrix aWork(*mpImpl);
+ sal_uInt16* pIndex = new sal_uInt16[mpImpl->getEdgeLength()];
+ sal_Int16 nParity;
+
+ if(aWork.ludcmp(pIndex, nParity))
+ {
+ mpImpl->doInvert(aWork, pIndex);
+ delete[] pIndex;
+
+ return true;
+ }
+
+ delete[] pIndex;
+ return false;
+ }
+
+ bool B3DHomMatrix::isNormalized() const
+ {
+ return mpImpl->isNormalized();
+ }
+
+ void B3DHomMatrix::normalize()
+ {
+ if(!const_cast<const B3DHomMatrix*>(this)->mpImpl->isNormalized())
+ mpImpl->doNormalize();
+ }
+
+ double B3DHomMatrix::determinant() const
+ {
+ return mpImpl->doDeterminant();
+ }
+
+ double B3DHomMatrix::trace() const
+ {
+ return mpImpl->doTrace();
+ }
+
+ void B3DHomMatrix::transpose()
+ {
+ mpImpl->doTranspose();
+ }
+
+ B3DHomMatrix& B3DHomMatrix::operator+=(const B3DHomMatrix& rMat)
+ {
+ mpImpl->doAddMatrix(*rMat.mpImpl);
+ return *this;
+ }
+
+ B3DHomMatrix& B3DHomMatrix::operator-=(const B3DHomMatrix& rMat)
+ {
+ mpImpl->doSubMatrix(*rMat.mpImpl);
+ return *this;
+ }
+
+ B3DHomMatrix& B3DHomMatrix::operator*=(double fValue)
+ {
+ const double fOne(1.0);
+
+ if(!fTools::equal(fOne, fValue))
+ mpImpl->doMulMatrix(fValue);
+
+ return *this;
+ }
+
+ B3DHomMatrix& B3DHomMatrix::operator/=(double fValue)
+ {
+ const double fOne(1.0);
+
+ if(!fTools::equal(fOne, fValue))
+ mpImpl->doMulMatrix(1.0 / fValue);
+
+ return *this;
+ }
+
+ B3DHomMatrix& B3DHomMatrix::operator*=(const B3DHomMatrix& rMat)
+ {
+ if(!rMat.isIdentity())
+ mpImpl->doMulMatrix(*rMat.mpImpl);
+
+ return *this;
+ }
+
+ bool B3DHomMatrix::operator==(const B3DHomMatrix& rMat) const
+ {
+ if(mpImpl.same_object(rMat.mpImpl))
+ return true;
+
+ return mpImpl->isEqual(*rMat.mpImpl);
+ }
+
+ bool B3DHomMatrix::operator!=(const B3DHomMatrix& rMat) const
+ {
+ return !(*this == rMat);
+ }
+
+ void B3DHomMatrix::rotate(double fAngleX,double fAngleY,double fAngleZ)
+ {
+ if(!fTools::equalZero(fAngleX) || !fTools::equalZero(fAngleY) || !fTools::equalZero(fAngleZ))
+ {
+ if(!fTools::equalZero(fAngleX))
+ {
+ Impl3DHomMatrix aRotMatX;
+ double fSin(sin(fAngleX));
+ double fCos(cos(fAngleX));
+
+ aRotMatX.set(1, 1, fCos);
+ aRotMatX.set(2, 2, fCos);
+ aRotMatX.set(2, 1, fSin);
+ aRotMatX.set(1, 2, -fSin);
+
+ mpImpl->doMulMatrix(aRotMatX);
+ }
+
+ if(!fTools::equalZero(fAngleY))
+ {
+ Impl3DHomMatrix aRotMatY;
+ double fSin(sin(fAngleY));
+ double fCos(cos(fAngleY));
+
+ aRotMatY.set(0, 0, fCos);
+ aRotMatY.set(2, 2, fCos);
+ aRotMatY.set(0, 2, fSin);
+ aRotMatY.set(2, 0, -fSin);
+
+ mpImpl->doMulMatrix(aRotMatY);
+ }
+
+ if(!fTools::equalZero(fAngleZ))
+ {
+ Impl3DHomMatrix aRotMatZ;
+ double fSin(sin(fAngleZ));
+ double fCos(cos(fAngleZ));
+
+ aRotMatZ.set(0, 0, fCos);
+ aRotMatZ.set(1, 1, fCos);
+ aRotMatZ.set(1, 0, fSin);
+ aRotMatZ.set(0, 1, -fSin);
+
+ mpImpl->doMulMatrix(aRotMatZ);
+ }
+ }
+ }
+
+ void B3DHomMatrix::translate(double fX, double fY, double fZ)
+ {
+ if(!fTools::equalZero(fX) || !fTools::equalZero(fY) || !fTools::equalZero(fZ))
+ {
+ Impl3DHomMatrix aTransMat;
+
+ aTransMat.set(0, 3, fX);
+ aTransMat.set(1, 3, fY);
+ aTransMat.set(2, 3, fZ);
+
+ mpImpl->doMulMatrix(aTransMat);
+ }
+ }
+
+ void B3DHomMatrix::scale(double fX, double fY, double fZ)
+ {
+ const double fOne(1.0);
+
+ if(!fTools::equal(fOne, fX) || !fTools::equal(fOne, fY) ||!fTools::equal(fOne, fZ))
+ {
+ Impl3DHomMatrix aScaleMat;
+
+ aScaleMat.set(0, 0, fX);
+ aScaleMat.set(1, 1, fY);
+ aScaleMat.set(2, 2, fZ);
+
+ mpImpl->doMulMatrix(aScaleMat);
+ }
+ }
+
+ void B3DHomMatrix::shearXY(double fSx, double fSy)
+ {
+ // #i76239# do not test againt 1.0, but against 0.0. We are talking about a value not on the diagonal (!)
+ if(!fTools::equalZero(fSx) || !fTools::equalZero(fSy))
+ {
+ Impl3DHomMatrix aShearXYMat;
+
+ aShearXYMat.set(0, 2, fSx);
+ aShearXYMat.set(1, 2, fSy);
+
+ mpImpl->doMulMatrix(aShearXYMat);
+ }
+ }
+
+ void B3DHomMatrix::shearYZ(double fSy, double fSz)
+ {
+ // #i76239# do not test againt 1.0, but against 0.0. We are talking about a value not on the diagonal (!)
+ if(!fTools::equalZero(fSy) || !fTools::equalZero(fSz))
+ {
+ Impl3DHomMatrix aShearYZMat;
+
+ aShearYZMat.set(1, 0, fSy);
+ aShearYZMat.set(2, 0, fSz);
+
+ mpImpl->doMulMatrix(aShearYZMat);
+ }
+ }
+
+ void B3DHomMatrix::shearXZ(double fSx, double fSz)
+ {
+ // #i76239# do not test againt 1.0, but against 0.0. We are talking about a value not on the diagonal (!)
+ if(!fTools::equalZero(fSx) || !fTools::equalZero(fSz))
+ {
+ Impl3DHomMatrix aShearXZMat;
+
+ aShearXZMat.set(0, 1, fSx);
+ aShearXZMat.set(2, 1, fSz);
+
+ mpImpl->doMulMatrix(aShearXZMat);
+ }
+ }
+
+ void B3DHomMatrix::frustum(double fLeft, double fRight, double fBottom, double fTop, double fNear, double fFar)
+ {
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ if(!fTools::more(fNear, fZero))
+ {
+ fNear = 0.001;
+ }
+
+ if(!fTools::more(fFar, fZero))
+ {
+ fFar = fOne;
+ }
+
+ if(fTools::equal(fNear, fFar))
+ {
+ fFar = fNear + fOne;
+ }
+
+ if(fTools::equal(fLeft, fRight))
+ {
+ fLeft -= fOne;
+ fRight += fOne;
+ }
+
+ if(fTools::equal(fTop, fBottom))
+ {
+ fBottom -= fOne;
+ fTop += fOne;
+ }
+
+ Impl3DHomMatrix aFrustumMat;
+
+ aFrustumMat.set(0, 0, 2.0 * fNear / (fRight - fLeft));
+ aFrustumMat.set(1, 1, 2.0 * fNear / (fTop - fBottom));
+ aFrustumMat.set(0, 2, (fRight + fLeft) / (fRight - fLeft));
+ aFrustumMat.set(1, 2, (fTop + fBottom) / (fTop - fBottom));
+ aFrustumMat.set(2, 2, -fOne * ((fFar + fNear) / (fFar - fNear)));
+ aFrustumMat.set(3, 2, -fOne);
+ aFrustumMat.set(2, 3, -fOne * ((2.0 * fFar * fNear) / (fFar - fNear)));
+ aFrustumMat.set(3, 3, fZero);
+
+ mpImpl->doMulMatrix(aFrustumMat);
+ }
+
+ void B3DHomMatrix::ortho(double fLeft, double fRight, double fBottom, double fTop, double fNear, double fFar)
+ {
+ if(fTools::equal(fNear, fFar))
+ {
+ fFar = fNear + 1.0;
+ }
+
+ if(fTools::equal(fLeft, fRight))
+ {
+ fLeft -= 1.0;
+ fRight += 1.0;
+ }
+
+ if(fTools::equal(fTop, fBottom))
+ {
+ fBottom -= 1.0;
+ fTop += 1.0;
+ }
+
+ Impl3DHomMatrix aOrthoMat;
+
+ aOrthoMat.set(0, 0, 2.0 / (fRight - fLeft));
+ aOrthoMat.set(1, 1, 2.0 / (fTop - fBottom));
+ aOrthoMat.set(2, 2, -1.0 * (2.0 / (fFar - fNear)));
+ aOrthoMat.set(0, 3, -1.0 * ((fRight + fLeft) / (fRight - fLeft)));
+ aOrthoMat.set(1, 3, -1.0 * ((fTop + fBottom) / (fTop - fBottom)));
+ aOrthoMat.set(2, 3, -1.0 * ((fFar + fNear) / (fFar - fNear)));
+
+ mpImpl->doMulMatrix(aOrthoMat);
+ }
+
+ void B3DHomMatrix::orientation(B3DPoint aVRP, B3DVector aVPN, B3DVector aVUV)
+ {
+ Impl3DHomMatrix aOrientationMat;
+
+ // translate -VRP
+ aOrientationMat.set(0, 3, -aVRP.getX());
+ aOrientationMat.set(1, 3, -aVRP.getY());
+ aOrientationMat.set(2, 3, -aVRP.getZ());
+
+ // build rotation
+ aVUV.normalize();
+ aVPN.normalize();
+
+ // build x-axis as peroendicular fron aVUV and aVPN
+ B3DVector aRx(aVUV.getPerpendicular(aVPN));
+ aRx.normalize();
+
+ // y-axis perpendicular to that
+ B3DVector aRy(aVPN.getPerpendicular(aRx));
+ aRy.normalize();
+
+ // the calculated normals are the line vectors of the rotation matrix,
+ // set them to create rotation
+ aOrientationMat.set(0, 0, aRx.getX());
+ aOrientationMat.set(0, 1, aRx.getY());
+ aOrientationMat.set(0, 2, aRx.getZ());
+ aOrientationMat.set(1, 0, aRy.getX());
+ aOrientationMat.set(1, 1, aRy.getY());
+ aOrientationMat.set(1, 2, aRy.getZ());
+ aOrientationMat.set(2, 0, aVPN.getX());
+ aOrientationMat.set(2, 1, aVPN.getY());
+ aOrientationMat.set(2, 2, aVPN.getZ());
+
+ mpImpl->doMulMatrix(aOrientationMat);
+ }
+
+ bool B3DHomMatrix::decompose(B3DTuple& rScale, B3DTuple& rTranslate, B3DTuple& rRotate, B3DTuple& rShear) const
+ {
+ // when perspective is used, decompose is not made here
+ if(!mpImpl->isLastLineDefault())
+ return false;
+
+ // If determinant is zero, decomposition is not possible
+ if(0.0 == determinant())
+ return false;
+
+ // isolate translation
+ rTranslate.setX(mpImpl->get(0, 3));
+ rTranslate.setY(mpImpl->get(1, 3));
+ rTranslate.setZ(mpImpl->get(2, 3));
+
+ // correct translate values
+ rTranslate.correctValues();
+
+ // get scale and shear
+ B3DVector aCol0(mpImpl->get(0, 0), mpImpl->get(1, 0), mpImpl->get(2, 0));
+ B3DVector aCol1(mpImpl->get(0, 1), mpImpl->get(1, 1), mpImpl->get(2, 1));
+ B3DVector aCol2(mpImpl->get(0, 2), mpImpl->get(1, 2), mpImpl->get(2, 2));
+ B3DVector aTemp;
+
+ // get ScaleX
+ rScale.setX(aCol0.getLength());
+ aCol0.normalize();
+
+ // get ShearXY
+ rShear.setX(aCol0.scalar(aCol1));
+
+ if(fTools::equalZero(rShear.getX()))
+ {
+ rShear.setX(0.0);
+ }
+ else
+ {
+ aTemp.setX(aCol1.getX() - rShear.getX() * aCol0.getX());
+ aTemp.setY(aCol1.getY() - rShear.getX() * aCol0.getY());
+ aTemp.setZ(aCol1.getZ() - rShear.getX() * aCol0.getZ());
+ aCol1 = aTemp;
+ }
+
+ // get ScaleY
+ rScale.setY(aCol1.getLength());
+ aCol1.normalize();
+
+ const double fShearX(rShear.getX());
+
+ if(!fTools::equalZero(fShearX))
+ {
+ rShear.setX(rShear.getX() / rScale.getY());
+ }
+
+ // get ShearXZ
+ rShear.setY(aCol0.scalar(aCol2));
+
+ if(fTools::equalZero(rShear.getY()))
+ {
+ rShear.setY(0.0);
+ }
+ else
+ {
+ aTemp.setX(aCol2.getX() - rShear.getY() * aCol0.getX());
+ aTemp.setY(aCol2.getY() - rShear.getY() * aCol0.getY());
+ aTemp.setZ(aCol2.getZ() - rShear.getY() * aCol0.getZ());
+ aCol2 = aTemp;
+ }
+
+ // get ShearYZ
+ rShear.setZ(aCol1.scalar(aCol2));
+
+ if(fTools::equalZero(rShear.getZ()))
+ {
+ rShear.setZ(0.0);
+ }
+ else
+ {
+ aTemp.setX(aCol2.getX() - rShear.getZ() * aCol1.getX());
+ aTemp.setY(aCol2.getY() - rShear.getZ() * aCol1.getY());
+ aTemp.setZ(aCol2.getZ() - rShear.getZ() * aCol1.getZ());
+ aCol2 = aTemp;
+ }
+
+ // get ScaleZ
+ rScale.setZ(aCol2.getLength());
+ aCol2.normalize();
+
+ const double fShearY(rShear.getY());
+
+ if(!fTools::equalZero(fShearY))
+ {
+ rShear.setY(rShear.getY() / rScale.getZ());
+ }
+
+ const double fShearZ(rShear.getZ());
+
+ if(!fTools::equalZero(fShearZ))
+ {
+ rShear.setZ(rShear.getZ() / rScale.getZ());
+ }
+
+ // correct shear values
+ rShear.correctValues();
+
+ // Coordinate system flip?
+ if(0.0 > aCol0.scalar(aCol1.getPerpendicular(aCol2)))
+ {
+ rScale = -rScale;
+ aCol0 = -aCol0;
+ aCol1 = -aCol1;
+ aCol2 = -aCol2;
+ }
+
+ // correct scale values
+ rScale.correctValues(1.0);
+
+ // Get rotations
+ {
+ double fy=0;
+ double cy=0;
+
+ if( ::basegfx::fTools::equal( aCol0.getZ(), 1.0 )
+ || aCol0.getZ() > 1.0 )
+ {
+ fy = -F_PI/2.0;
+ cy = 0.0;
+ }
+ else if( ::basegfx::fTools::equal( aCol0.getZ(), -1.0 )
+ || aCol0.getZ() < -1.0 )
+ {
+ fy = F_PI/2.0;
+ cy = 0.0;
+ }
+ else
+ {
+ fy = asin( -aCol0.getZ() );
+ cy = cos(fy);
+ }
+
+ rRotate.setY(fy);
+ if( ::basegfx::fTools::equalZero( cy ) )
+ {
+ if( aCol0.getZ() > 0.0 )
+ rRotate.setX(atan2(-1.0*aCol1.getX(), aCol1.getY()));
+ else
+ rRotate.setX(atan2(aCol1.getX(), aCol1.getY()));
+ rRotate.setZ(0.0);
+ }
+ else
+ {
+ rRotate.setX(atan2(aCol1.getZ(), aCol2.getZ()));
+ rRotate.setZ(atan2(aCol0.getY(), aCol0.getX()));
+ }
+
+ // corrcet rotate values
+ rRotate.correctValues();
+ }
+
+ return true;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/matrix/makefile.mk b/basegfx/source/matrix/makefile.mk
new file mode 100644
index 000000000000..35ea4d0cb86f
--- /dev/null
+++ b/basegfx/source/matrix/makefile.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=matrix
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+#ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/b2dhommatrix.obj \
+ $(SLO)$/b2dhommatrixtools.obj \
+ $(SLO)$/b3dhommatrix.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/numeric/ftools.cxx b/basegfx/source/numeric/ftools.cxx
new file mode 100644
index 000000000000..163920de33e0
--- /dev/null
+++ b/basegfx/source/numeric/ftools.cxx
@@ -0,0 +1,41 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ // init static member of class fTools
+ double ::basegfx::fTools::mfSmallValue = 0.000000001;
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/numeric/makefile.mk b/basegfx/source/numeric/makefile.mk
new file mode 100644
index 000000000000..83abbbde4d82
--- /dev/null
+++ b/basegfx/source/numeric/makefile.mk
@@ -0,0 +1,47 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=numeric
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+#ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/ftools.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/pixel/bpixel.cxx b/basegfx/source/pixel/bpixel.cxx
new file mode 100644
index 000000000000..40611b74098c
--- /dev/null
+++ b/basegfx/source/pixel/bpixel.cxx
@@ -0,0 +1,54 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/pixel/bpixel.hxx>
+#include <rtl/instance.hxx>
+
+namespace { struct EmptyBPixel : public rtl::Static<basegfx::BPixel, EmptyBPixel> {}; }
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ const BPixel& BPixel::getEmptyBPixel()
+ {
+ return EmptyBPixel::get();
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // external operators
+
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/pixel/makefile.mk b/basegfx/source/pixel/makefile.mk
new file mode 100644
index 000000000000..75192dc5c180
--- /dev/null
+++ b/basegfx/source/pixel/makefile.mk
@@ -0,0 +1,47 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=pixel
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+#ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/bpixel.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/point/b2dhompoint.cxx b/basegfx/source/point/b2dhompoint.cxx
new file mode 100644
index 000000000000..babfbaae4d5c
--- /dev/null
+++ b/basegfx/source/point/b2dhompoint.cxx
@@ -0,0 +1,262 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/point/b2dhompoint.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ bool B2DHomPoint::implIsHomogenized() const
+ {
+ const double fOne(1.0);
+ return ::basegfx::fTools::equal(fOne, mfW);
+ }
+
+ void B2DHomPoint::implHomogenize()
+ {
+ const double fFactor(1.0 / mfW);
+ maTuple.setX(maTuple.getX() * fFactor);
+ maTuple.setY(maTuple.getY() * fFactor);
+ mfW = 1.0;
+ }
+
+ void B2DHomPoint::implTestAndHomogenize() const
+ {
+ if(!implIsHomogenized())
+ ((B2DHomPoint*)this)->implHomogenize();
+ }
+
+ B2DPoint B2DHomPoint::getB2DPoint() const
+ {
+ implTestAndHomogenize();
+ return B2DPoint(maTuple.getX(), maTuple.getY());
+ }
+
+ double B2DHomPoint::getX() const
+ {
+ implTestAndHomogenize();
+ return maTuple.getX();
+ }
+
+ double B2DHomPoint::getY() const
+ {
+ implTestAndHomogenize();
+ return maTuple.getY();
+ }
+
+ void B2DHomPoint::setX(double fX)
+ {
+ maTuple.setX(implIsHomogenized() ? fX : fX * mfW );
+ }
+
+ void B2DHomPoint::setY(double fY)
+ {
+ maTuple.setY(implIsHomogenized() ? fY : fY * mfW );
+ }
+
+ B2DHomPoint& B2DHomPoint::operator+=( const B2DHomPoint& rPnt )
+ {
+ maTuple.setX(getX() * rPnt.mfW + rPnt.getX() * mfW);
+ maTuple.setY(getY() * rPnt.mfW + rPnt.getY() * mfW);
+ mfW = mfW * rPnt.mfW;
+
+ return *this;
+ }
+
+ B2DHomPoint& B2DHomPoint::operator-=( const B2DHomPoint& rPnt )
+ {
+ maTuple.setX(getX() * rPnt.mfW - rPnt.getX() * mfW);
+ maTuple.setY(getY() * rPnt.mfW - rPnt.getY() * mfW);
+ mfW = mfW * rPnt.mfW;
+
+ return *this;
+ }
+
+ B2DHomPoint& B2DHomPoint::operator*=(double t)
+ {
+ if(!::basegfx::fTools::equalZero(t))
+ {
+ mfW /= t;
+ }
+
+ return *this;
+ }
+
+ B2DHomPoint& B2DHomPoint::operator*=( const B2DHomMatrix& rMat )
+ {
+ const double fTempX( rMat.get(0,0)*maTuple.getX() +
+ rMat.get(0,1)*maTuple.getY() +
+ rMat.get(0,2)*mfW );
+
+ const double fTempY( rMat.get(1,0)*maTuple.getX() +
+ rMat.get(1,1)*maTuple.getY() +
+ rMat.get(1,2)*mfW );
+
+ const double fTempZ( rMat.get(2,0)*maTuple.getX() +
+ rMat.get(2,1)*maTuple.getY() +
+ rMat.get(2,2)*mfW );
+ maTuple.setX( fTempX );
+ maTuple.setY( fTempY );
+ mfW = fTempZ;
+
+ return *this;
+ }
+
+ B2DHomPoint& B2DHomPoint::operator/=(double t)
+ {
+ mfW *= t;
+ return *this;
+ }
+
+ B2DHomPoint& B2DHomPoint::operator-(void)
+ {
+ mfW = -mfW;
+ return *this;
+ }
+
+ bool B2DHomPoint::operator==( const B2DHomPoint& rPnt ) const
+ {
+ implTestAndHomogenize();
+ return (maTuple == rPnt.maTuple);
+ }
+
+ bool B2DHomPoint::operator!=( const B2DHomPoint& rPnt ) const
+ {
+ implTestAndHomogenize();
+ return (maTuple != rPnt.maTuple);
+ }
+
+ B2DHomPoint& B2DHomPoint::operator=( const B2DHomPoint& rPnt )
+ {
+ maTuple = rPnt.maTuple;
+ mfW = rPnt.mfW;
+ return *this;
+ }
+
+ B2DHomPoint minimum(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB)
+ {
+ B2DHomPoint aMin(
+ (rVecB.getX() < rVecA.getX()) ? rVecB.getX() : rVecA.getX(),
+ (rVecB.getY() < rVecA.getY()) ? rVecB.getY() : rVecA.getY());
+ return aMin;
+ }
+
+ B2DHomPoint maximum(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB)
+ {
+ B2DHomPoint aMax(
+ (rVecB.getX() > rVecA.getX()) ? rVecB.getX() : rVecA.getX(),
+ (rVecB.getY() > rVecA.getY()) ? rVecB.getY() : rVecA.getY());
+ return aMax;
+ }
+ B2DHomPoint absolute(const B2DHomPoint& rVec)
+ {
+ B2DHomPoint aAbs(
+ (0.0 > rVec.getX()) ? -rVec.getX() : rVec.getX(),
+ (0.0 > rVec.getY()) ? -rVec.getY() : rVec.getY());
+ return aAbs;
+ }
+
+ B2DHomPoint interpolate(B2DHomPoint& rOld1, B2DHomPoint& rOld2, double t)
+ {
+ B2DHomPoint aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY());
+ return aInt;
+ }
+
+ B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2)
+ {
+ B2DHomPoint aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5);
+ return aAvg;
+ }
+
+ B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2, B2DHomPoint& rOld3)
+ {
+ B2DHomPoint aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ B2DHomPoint operator+(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB)
+ {
+ B2DHomPoint aSum(rVecA);
+ aSum += rVecB;
+ return aSum;
+ }
+
+ B2DHomPoint operator-(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB)
+ {
+ B2DHomPoint aSub(rVecA);
+ aSub -= rVecB;
+ return aSub;
+ }
+
+ B2DHomPoint operator*(const B2DHomPoint& rVec, double t)
+ {
+ B2DHomPoint aNew(rVec);
+ aNew *= t;
+ return aNew;
+ }
+
+ B2DHomPoint operator*(double t, const B2DHomPoint& rVec)
+ {
+ B2DHomPoint aNew(rVec);
+ aNew *= t;
+ return aNew;
+ }
+
+ B2DHomPoint operator*( const B2DHomMatrix& rMat, const B2DHomPoint& rPoint )
+ {
+ B2DHomPoint aNew(rPoint);
+ return aNew*=rMat;
+ }
+
+ B2DHomPoint operator/(const B2DHomPoint& rVec, double t)
+ {
+ B2DHomPoint aNew(rVec);
+ aNew /= t;
+ return aNew;
+ }
+
+ B2DHomPoint operator/(double t, const B2DHomPoint& rVec)
+ {
+ B2DHomPoint aNew(rVec);
+ aNew /= t;
+ return aNew;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/point/b2dpoint.cxx b/basegfx/source/point/b2dpoint.cxx
new file mode 100644
index 000000000000..fbc14a082318
--- /dev/null
+++ b/basegfx/source/point/b2dpoint.cxx
@@ -0,0 +1,88 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ B2DPoint& B2DPoint::operator=( const ::basegfx::B2DTuple& rPoint )
+ {
+ mfX = rPoint.getX();
+ mfY = rPoint.getY();
+ return *this;
+ }
+
+ B2DPoint& B2DPoint::operator*=( const ::basegfx::B2DHomMatrix& rMat )
+ {
+ double fTempX(
+ rMat.get(0, 0) * mfX +
+ rMat.get(0, 1) * mfY +
+ rMat.get(0, 2));
+ double fTempY(
+ rMat.get(1, 0) * mfX +
+ rMat.get(1, 1) * mfY +
+ rMat.get(1, 2));
+
+ if(!rMat.isLastLineDefault())
+ {
+ const double fOne(1.0);
+ const double fTempM(
+ rMat.get(2, 0) * mfX +
+ rMat.get(2, 1) * mfY +
+ rMat.get(2, 2));
+
+ if(!fTools::equalZero(fTempM) && !fTools::equal(fOne, fTempM))
+ {
+ fTempX /= fTempM;
+ fTempY /= fTempM;
+ }
+ }
+
+ mfX = fTempX;
+ mfY = fTempY;
+
+ return *this;
+ }
+
+ B2DPoint operator*( const ::basegfx::B2DHomMatrix& rMat, const B2DPoint& rPoint )
+ {
+ B2DPoint aRes( rPoint );
+ return aRes *= rMat;
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/point/b2ipoint.cxx b/basegfx/source/point/b2ipoint.cxx
new file mode 100644
index 000000000000..c5a055274634
--- /dev/null
+++ b/basegfx/source/point/b2ipoint.cxx
@@ -0,0 +1,79 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ B2IPoint& B2IPoint::operator=( const ::basegfx::B2ITuple& rPoint )
+ {
+ mnX = rPoint.getX();
+ mnY = rPoint.getY();
+ return *this;
+ }
+
+ B2IPoint& B2IPoint::operator*=( const ::basegfx::B2DHomMatrix& rMat )
+ {
+ double fTempX(
+ rMat.get(0, 0) * mnX +
+ rMat.get(0, 1) * mnY +
+ rMat.get(0, 2));
+ double fTempY(
+ rMat.get(1, 0) * mnX +
+ rMat.get(1, 1) * mnY +
+ rMat.get(1, 2));
+
+ if(!rMat.isLastLineDefault())
+ {
+ const double fOne(1.0);
+ const double fTempM(
+ rMat.get(2, 0) * mnX +
+ rMat.get(2, 1) * mnY +
+ rMat.get(2, 2));
+
+ if(!fTools::equalZero(fTempM) && !fTools::equal(fOne, fTempM))
+ {
+ fTempX /= fTempM;
+ fTempY /= fTempM;
+ }
+ }
+
+ mnX = fround(fTempX);
+ mnY = fround(fTempY);
+
+ return *this;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/point/b3dhompoint.cxx b/basegfx/source/point/b3dhompoint.cxx
new file mode 100644
index 000000000000..3a6c33a50262
--- /dev/null
+++ b/basegfx/source/point/b3dhompoint.cxx
@@ -0,0 +1,47 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/point/b3dhompoint.hxx>
+
+namespace basegfx
+{
+ void B3DHomPoint::implHomogenize()
+ {
+ const double fFactor(1.0 / mfW);
+ maTuple.setX(maTuple.getX() * fFactor);
+ maTuple.setY(maTuple.getY() * fFactor);
+ maTuple.setZ(maTuple.getZ() * fFactor);
+ mfW = 1.0;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/point/b3dpoint.cxx b/basegfx/source/point/b3dpoint.cxx
new file mode 100644
index 000000000000..8cf8ac983260
--- /dev/null
+++ b/basegfx/source/point/b3dpoint.cxx
@@ -0,0 +1,88 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ B3DPoint& B3DPoint::operator*=( const ::basegfx::B3DHomMatrix& rMat )
+ {
+ double fTempX(
+ rMat.get(0, 0) * mfX +
+ rMat.get(0, 1) * mfY +
+ rMat.get(0, 2) * mfZ +
+ rMat.get(0, 3));
+ double fTempY(
+ rMat.get(1, 0) * mfX +
+ rMat.get(1, 1) * mfY +
+ rMat.get(1, 2) * mfZ +
+ rMat.get(1, 3));
+ double fTempZ(
+ rMat.get(2, 0) * mfX +
+ rMat.get(2, 1) * mfY +
+ rMat.get(2, 2) * mfZ +
+ rMat.get(2, 3));
+
+ if(!rMat.isLastLineDefault())
+ {
+ const double fOne(1.0);
+ const double fTempM(
+ rMat.get(3, 0) * mfX +
+ rMat.get(3, 1) * mfY +
+ rMat.get(3, 2) * mfZ +
+ rMat.get(3, 3));
+
+ if(!fTools::equalZero(fTempM) && !fTools::equal(fOne, fTempM))
+ {
+ fTempX /= fTempM;
+ fTempY /= fTempM;
+ fTempZ /= fTempM;
+ }
+ }
+
+ mfX = fTempX;
+ mfY = fTempY;
+ mfZ = fTempZ;
+
+ return *this;
+ }
+
+ B3DPoint operator*( const ::basegfx::B3DHomMatrix& rMat, const B3DPoint& rPoint )
+ {
+ B3DPoint aRes( rPoint );
+ return aRes *= rMat;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/point/b3ipoint.cxx b/basegfx/source/point/b3ipoint.cxx
new file mode 100644
index 000000000000..8e5c0b3d9932
--- /dev/null
+++ b/basegfx/source/point/b3ipoint.cxx
@@ -0,0 +1,82 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/point/b3ipoint.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ B3IPoint& B3IPoint::operator*=( const ::basegfx::B3DHomMatrix& rMat )
+ {
+ double fTempX(
+ rMat.get(0, 0) * mnX +
+ rMat.get(0, 1) * mnY +
+ rMat.get(0, 2) * mnZ +
+ rMat.get(0, 3));
+ double fTempY(
+ rMat.get(1, 0) * mnX +
+ rMat.get(1, 1) * mnY +
+ rMat.get(1, 2) * mnZ +
+ rMat.get(1, 3));
+ double fTempZ(
+ rMat.get(2, 0) * mnX +
+ rMat.get(2, 1) * mnY +
+ rMat.get(2, 2) * mnZ +
+ rMat.get(2, 3));
+
+ if(!rMat.isLastLineDefault())
+ {
+ const double fOne(1.0);
+ const double fTempM(
+ rMat.get(3, 0) * mnX +
+ rMat.get(3, 1) * mnY +
+ rMat.get(3, 2) * mnZ +
+ rMat.get(3, 3));
+
+ if(!fTools::equalZero(fTempM) && !fTools::equal(fOne, fTempM))
+ {
+ fTempX /= fTempM;
+ fTempY /= fTempM;
+ fTempZ /= fTempM;
+ }
+ }
+
+ mnX = fround(fTempX);
+ mnY = fround(fTempY);
+ mnZ = fround(fTempZ);
+
+ return *this;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/point/makefile.mk b/basegfx/source/point/makefile.mk
new file mode 100644
index 000000000000..96798eb35cc9
--- /dev/null
+++ b/basegfx/source/point/makefile.mk
@@ -0,0 +1,52 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=point
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+#ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/b2dpoint.obj \
+ $(SLO)$/b2dhompoint.obj \
+ $(SLO)$/b3dpoint.obj \
+ $(SLO)$/b3dhompoint.obj \
+ $(SLO)$/b2ipoint.obj \
+ $(SLO)$/b3ipoint.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/polygon/b2dlinegeometry.cxx b/basegfx/source/polygon/b2dlinegeometry.cxx
new file mode 100644
index 000000000000..97551ff95c36
--- /dev/null
+++ b/basegfx/source/polygon/b2dlinegeometry.cxx
@@ -0,0 +1,728 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <cstdio>
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b2dlinegeometry.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/curve/b2dcubicbezier.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ B2DPolyPolygon createAreaGeometryForLineStartEnd(
+ const B2DPolygon& rCandidate,
+ const B2DPolyPolygon& rArrow,
+ bool bStart,
+ double fWidth,
+ double fCandidateLength,
+ double fDockingPosition, // 0->top, 1->bottom
+ double* pConsumedLength)
+ {
+ B2DPolyPolygon aRetval;
+ OSL_ENSURE(rCandidate.count() > 1L, "createAreaGeometryForLineStartEnd: Line polygon has too less points (!)");
+ OSL_ENSURE(rArrow.count() > 0L, "createAreaGeometryForLineStartEnd: Empty arrow PolyPolygon (!)");
+ OSL_ENSURE(fWidth > 0.0, "createAreaGeometryForLineStartEnd: Width too small (!)");
+ OSL_ENSURE(fDockingPosition >= 0.0 && fDockingPosition <= 1.0,
+ "createAreaGeometryForLineStartEnd: fDockingPosition out of range [0.0 .. 1.0] (!)");
+
+ if(fWidth < 0.0)
+ {
+ fWidth = -fWidth;
+ }
+
+ if(rCandidate.count() > 1 && rArrow.count() && !fTools::equalZero(fWidth))
+ {
+ if(fDockingPosition < 0.0)
+ {
+ fDockingPosition = 0.0;
+ }
+ else if(fDockingPosition > 1.0)
+ {
+ fDockingPosition = 1.0;
+ }
+
+ // init return value from arrow
+ aRetval.append(rArrow);
+
+ // get size of the arrow
+ const B2DRange aArrowSize(getRange(rArrow));
+
+ // build ArrowTransform; center in X, align with axis in Y
+ B2DHomMatrix aArrowTransform(basegfx::tools::createTranslateB2DHomMatrix(
+ -aArrowSize.getCenter().getX(), -aArrowSize.getMinimum().getY()));
+
+ // scale to target size
+ const double fArrowScale(fWidth / (aArrowSize.getRange().getX()));
+ aArrowTransform.scale(fArrowScale, fArrowScale);
+
+ // get arrow size in Y
+ B2DPoint aUpperCenter(aArrowSize.getCenter().getX(), aArrowSize.getMaximum().getY());
+ aUpperCenter *= aArrowTransform;
+ const double fArrowYLength(B2DVector(aUpperCenter).getLength());
+
+ // move arrow to have docking position centered
+ aArrowTransform.translate(0.0, -fArrowYLength * fDockingPosition);
+
+ // prepare polygon length
+ if(fTools::equalZero(fCandidateLength))
+ {
+ fCandidateLength = getLength(rCandidate);
+ }
+
+ // get the polygon vector we want to plant this arrow on
+ const double fConsumedLength(fArrowYLength * (1.0 - fDockingPosition));
+ const B2DVector aHead(rCandidate.getB2DPoint((bStart) ? 0L : rCandidate.count() - 1L));
+ const B2DVector aTail(getPositionAbsolute(rCandidate,
+ (bStart) ? fConsumedLength : fCandidateLength - fConsumedLength, fCandidateLength));
+
+ // from that vector, take the needed rotation and add rotate for arrow to transformation
+ const B2DVector aTargetDirection(aHead - aTail);
+ const double fRotation(atan2(aTargetDirection.getY(), aTargetDirection.getX()) + (90.0 * F_PI180));
+
+ // rotate around docking position
+ aArrowTransform.rotate(fRotation);
+
+ // move arrow docking position to polygon head
+ aArrowTransform.translate(aHead.getX(), aHead.getY());
+
+ // transform retval and close
+ aRetval.transform(aArrowTransform);
+ aRetval.setClosed(true);
+
+ // if pConsumedLength is asked for, fill it
+ if(pConsumedLength)
+ {
+ *pConsumedLength = fConsumedLength;
+ }
+ }
+
+ return aRetval;
+ }
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // anonymus namespace for local helpers
+ namespace
+ {
+ bool impIsSimpleEdge(const B2DCubicBezier& rCandidate, double fMaxCosQuad, double fMaxPartOfEdgeQuad)
+ {
+ // isBezier() is true, already tested by caller
+ const B2DVector aEdge(rCandidate.getEndPoint() - rCandidate.getStartPoint());
+
+ if(aEdge.equalZero())
+ {
+ // start and end point the same, but control vectors used -> baloon curve loop
+ // is not a simple edge
+ return false;
+ }
+
+ // get tangentA and scalar with edge
+ const B2DVector aTangentA(rCandidate.getTangent(0.0));
+ const double fScalarAE(aEdge.scalar(aTangentA));
+
+ if(fTools::lessOrEqual(fScalarAE, 0.0))
+ {
+ // angle between TangentA and Edge is bigger or equal 90 degrees
+ return false;
+ }
+
+ // get self-scalars for E and A
+ const double fScalarE(aEdge.scalar(aEdge));
+ const double fScalarA(aTangentA.scalar(aTangentA));
+ const double fLengthCompareE(fScalarE * fMaxPartOfEdgeQuad);
+
+ if(fTools::moreOrEqual(fScalarA, fLengthCompareE))
+ {
+ // length of TangentA is more than fMaxPartOfEdge of length of edge
+ return false;
+ }
+
+ if(fTools::lessOrEqual(fScalarAE * fScalarAE, fScalarA * fScalarE * fMaxCosQuad))
+ {
+ // angle between TangentA and Edge is bigger or equal angle defined by fMaxCos
+ return false;
+ }
+
+ // get tangentB and scalar with edge
+ const B2DVector aTangentB(rCandidate.getTangent(1.0));
+ const double fScalarBE(aEdge.scalar(aTangentB));
+
+ if(fTools::lessOrEqual(fScalarBE, 0.0))
+ {
+ // angle between TangentB and Edge is bigger or equal 90 degrees
+ return false;
+ }
+
+ // get self-scalar for B
+ const double fScalarB(aTangentB.scalar(aTangentB));
+
+ if(fTools::moreOrEqual(fScalarB, fLengthCompareE))
+ {
+ // length of TangentB is more than fMaxPartOfEdge of length of edge
+ return false;
+ }
+
+ if(fTools::lessOrEqual(fScalarBE * fScalarBE, fScalarB * fScalarE * fMaxCosQuad))
+ {
+ // angle between TangentB and Edge is bigger or equal defined by fMaxCos
+ return false;
+ }
+
+ return true;
+ }
+
+ void impSubdivideToSimple(const B2DCubicBezier& rCandidate, B2DPolygon& rTarget, double fMaxCosQuad, double fMaxPartOfEdgeQuad, sal_uInt32 nMaxRecursionDepth)
+ {
+ if(!nMaxRecursionDepth || impIsSimpleEdge(rCandidate, fMaxCosQuad, fMaxPartOfEdgeQuad))
+ {
+ rTarget.appendBezierSegment(rCandidate.getControlPointA(), rCandidate.getControlPointB(), rCandidate.getEndPoint());
+ }
+ else
+ {
+ B2DCubicBezier aLeft, aRight;
+ rCandidate.split(0.5, &aLeft, &aRight);
+
+ impSubdivideToSimple(aLeft, rTarget, fMaxCosQuad, fMaxPartOfEdgeQuad, nMaxRecursionDepth - 1);
+ impSubdivideToSimple(aRight, rTarget, fMaxCosQuad, fMaxPartOfEdgeQuad, nMaxRecursionDepth - 1);
+ }
+ }
+
+ B2DPolygon subdivideToSimple(const B2DPolygon& rCandidate, double fMaxCosQuad, double fMaxPartOfEdgeQuad)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(rCandidate.areControlPointsUsed() && nPointCount)
+ {
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ B2DPolygon aRetval;
+ B2DCubicBezier aEdge;
+
+ // prepare edge for loop
+ aEdge.setStartPoint(rCandidate.getB2DPoint(0));
+ aRetval.append(aEdge.getStartPoint());
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ // fill B2DCubicBezier
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aEdge.setControlPointA(rCandidate.getNextControlPoint(a));
+ aEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+
+ // get rid of unnecessary bezier segments
+ aEdge.testAndSolveTrivialBezier();
+
+ if(aEdge.isBezier())
+ {
+ // before splitting recursively with internal simple criteria, use
+ // ExtremumPosFinder to remove those
+ ::std::vector< double > aExtremumPositions;
+
+ aExtremumPositions.reserve(4);
+ aEdge.getAllExtremumPositions(aExtremumPositions);
+
+ const sal_uInt32 nCount(aExtremumPositions.size());
+
+ if(nCount)
+ {
+ if(nCount > 1)
+ {
+ // create order from left to right
+ ::std::sort(aExtremumPositions.begin(), aExtremumPositions.end());
+ }
+
+ for(sal_uInt32 b(0); b < nCount;)
+ {
+ // split aEdge at next split pos
+ B2DCubicBezier aLeft;
+ const double fSplitPos(aExtremumPositions[b++]);
+
+ aEdge.split(fSplitPos, &aLeft, &aEdge);
+ aLeft.testAndSolveTrivialBezier();
+
+ // consume left part
+ if(aLeft.isBezier())
+ {
+ impSubdivideToSimple(aLeft, aRetval, fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
+ }
+ else
+ {
+ aRetval.append(aLeft.getEndPoint());
+ }
+
+ if(b < nCount)
+ {
+ // correct the remaining split positions to fit to shortened aEdge
+ const double fScaleFactor(1.0 / (1.0 - fSplitPos));
+
+ for(sal_uInt32 c(b); c < nCount; c++)
+ {
+ aExtremumPositions[c] = (aExtremumPositions[c] - fSplitPos) * fScaleFactor;
+ }
+ }
+ }
+
+ // test the shortened rest of aEdge
+ aEdge.testAndSolveTrivialBezier();
+
+ // consume right part
+ if(aEdge.isBezier())
+ {
+ impSubdivideToSimple(aEdge, aRetval, fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
+ }
+ else
+ {
+ aRetval.append(aEdge.getEndPoint());
+ }
+ }
+ else
+ {
+ impSubdivideToSimple(aEdge, aRetval, fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
+ }
+ }
+ else
+ {
+ // straight edge, add point
+ aRetval.append(aEdge.getEndPoint());
+ }
+
+ // prepare edge for next step
+ aEdge.setStartPoint(aEdge.getEndPoint());
+ }
+
+ // copy closed flag and check for double points
+ aRetval.setClosed(rCandidate.isClosed());
+ aRetval.removeDoublePoints();
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolygon createAreaGeometryForEdge(const B2DCubicBezier& rEdge, double fHalfLineWidth)
+ {
+ // create polygon for edge
+ // Unfortunately, while it would be geometrically correct to not add
+ // the in-between points EdgeEnd and EdgeStart, it leads to rounding
+ // errors when converting to integer polygon coordinates for painting
+ if(rEdge.isBezier())
+ {
+ // prepare target and data common for upper and lower
+ B2DPolygon aBezierPolygon;
+ const B2DVector aPureEdgeVector(rEdge.getEndPoint() - rEdge.getStartPoint());
+ const double fEdgeLength(aPureEdgeVector.getLength());
+ const bool bIsEdgeLengthZero(fTools::equalZero(fEdgeLength));
+ const B2DVector aTangentA(rEdge.getTangent(0.0));
+ const B2DVector aTangentB(rEdge.getTangent(1.0));
+
+ // create upper edge.
+ {
+ // create displacement vectors and check if they cut
+ const B2DVector aPerpendStart(getNormalizedPerpendicular(aTangentA) * -fHalfLineWidth);
+ const B2DVector aPerpendEnd(getNormalizedPerpendicular(aTangentB) * -fHalfLineWidth);
+ double fCut(0.0);
+ const tools::CutFlagValue aCut(tools::findCut(
+ rEdge.getStartPoint(), aPerpendStart,
+ rEdge.getEndPoint(), aPerpendEnd,
+ CUTFLAG_ALL, &fCut));
+
+ if(CUTFLAG_NONE != aCut)
+ {
+ // calculate cut point and add
+ const B2DPoint aCutPoint(rEdge.getStartPoint() + (aPerpendStart * fCut));
+ aBezierPolygon.append(aCutPoint);
+ }
+ else
+ {
+ // create scaled bezier segment
+ const B2DPoint aStart(rEdge.getStartPoint() + aPerpendStart);
+ const B2DPoint aEnd(rEdge.getEndPoint() + aPerpendEnd);
+ const B2DVector aEdge(aEnd - aStart);
+ const double fLength(aEdge.getLength());
+ const double fScale(bIsEdgeLengthZero ? 1.0 : fLength / fEdgeLength);
+ const B2DVector fRelNext(rEdge.getControlPointA() - rEdge.getStartPoint());
+ const B2DVector fRelPrev(rEdge.getControlPointB() - rEdge.getEndPoint());
+
+ aBezierPolygon.append(aStart);
+ aBezierPolygon.appendBezierSegment(aStart + (fRelNext * fScale), aEnd + (fRelPrev * fScale), aEnd);
+ }
+ }
+
+ // append original in-between point
+ aBezierPolygon.append(rEdge.getEndPoint());
+
+ // create lower edge.
+ {
+ // create displacement vectors and check if they cut
+ const B2DVector aPerpendStart(getNormalizedPerpendicular(aTangentA) * fHalfLineWidth);
+ const B2DVector aPerpendEnd(getNormalizedPerpendicular(aTangentB) * fHalfLineWidth);
+ double fCut(0.0);
+ const tools::CutFlagValue aCut(tools::findCut(
+ rEdge.getEndPoint(), aPerpendEnd,
+ rEdge.getStartPoint(), aPerpendStart,
+ CUTFLAG_ALL, &fCut));
+
+ if(CUTFLAG_NONE != aCut)
+ {
+ // calculate cut point and add
+ const B2DPoint aCutPoint(rEdge.getEndPoint() + (aPerpendEnd * fCut));
+ aBezierPolygon.append(aCutPoint);
+ }
+ else
+ {
+ // create scaled bezier segment
+ const B2DPoint aStart(rEdge.getEndPoint() + aPerpendEnd);
+ const B2DPoint aEnd(rEdge.getStartPoint() + aPerpendStart);
+ const B2DVector aEdge(aEnd - aStart);
+ const double fLength(aEdge.getLength());
+ const double fScale(bIsEdgeLengthZero ? 1.0 : fLength / fEdgeLength);
+ const B2DVector fRelNext(rEdge.getControlPointB() - rEdge.getEndPoint());
+ const B2DVector fRelPrev(rEdge.getControlPointA() - rEdge.getStartPoint());
+
+ aBezierPolygon.append(aStart);
+ aBezierPolygon.appendBezierSegment(aStart + (fRelNext * fScale), aEnd + (fRelPrev * fScale), aEnd);
+ }
+ }
+
+ // append original in-between point
+ aBezierPolygon.append(rEdge.getStartPoint());
+
+ // close and return
+ aBezierPolygon.setClosed(true);
+ return aBezierPolygon;
+ }
+ else
+ {
+ // #i101491# emulate rEdge.getTangent call which applies a factor of 0.3 to the
+ // full-length edge vector to have numerically exactly the same results as in the
+ // createAreaGeometryForJoin implementation
+ const B2DVector aEdgeTangent((rEdge.getEndPoint() - rEdge.getStartPoint()) * 0.3);
+ const B2DVector aPerpendEdgeVector(getNormalizedPerpendicular(aEdgeTangent) * fHalfLineWidth);
+ B2DPolygon aEdgePolygon;
+
+ // create upper edge
+ aEdgePolygon.append(rEdge.getStartPoint() - aPerpendEdgeVector);
+ aEdgePolygon.append(rEdge.getEndPoint() - aPerpendEdgeVector);
+
+ // append original in-between point
+ aEdgePolygon.append(rEdge.getEndPoint());
+
+ // create lower edge
+ aEdgePolygon.append(rEdge.getEndPoint() + aPerpendEdgeVector);
+ aEdgePolygon.append(rEdge.getStartPoint() + aPerpendEdgeVector);
+
+ // append original in-between point
+ aEdgePolygon.append(rEdge.getStartPoint());
+
+ // close and return
+ aEdgePolygon.setClosed(true);
+ return aEdgePolygon;
+ }
+ }
+
+ B2DPolygon createAreaGeometryForJoin(
+ const B2DVector& rTangentPrev,
+ const B2DVector& rTangentEdge,
+ const B2DVector& rPerpendPrev,
+ const B2DVector& rPerpendEdge,
+ const B2DPoint& rPoint,
+ double fHalfLineWidth,
+ B2DLineJoin eJoin,
+ double fMiterMinimumAngle)
+ {
+ OSL_ENSURE(fHalfLineWidth > 0.0, "createAreaGeometryForJoin: LineWidth too small (!)");
+ OSL_ENSURE(B2DLINEJOIN_NONE != eJoin, "createAreaGeometryForJoin: B2DLINEJOIN_NONE not allowed (!)");
+
+ // LineJoin from tangent rPerpendPrev to tangent rPerpendEdge in rPoint
+ B2DPolygon aEdgePolygon;
+ const B2DPoint aStartPoint(rPoint + rPerpendPrev);
+ const B2DPoint aEndPoint(rPoint + rPerpendEdge);
+
+ // test if for Miter, the angle is too small and the fallback
+ // to bevel needs to be used
+ if(B2DLINEJOIN_MITER == eJoin)
+ {
+ const double fAngle(fabs(rPerpendPrev.angle(rPerpendEdge)));
+
+ if((F_PI - fAngle) < fMiterMinimumAngle)
+ {
+ // fallback to bevel
+ eJoin = B2DLINEJOIN_BEVEL;
+ }
+ }
+
+ switch(eJoin)
+ {
+ case B2DLINEJOIN_MITER :
+ {
+ aEdgePolygon.append(aEndPoint);
+ aEdgePolygon.append(rPoint);
+ aEdgePolygon.append(aStartPoint);
+
+ // Look for the cut point between start point along rTangentPrev and
+ // end point along rTangentEdge. -rTangentEdge should be used, but since
+ // the cut value is used for interpolating along the first edge, the negation
+ // is not needed since the same fCut will be found on the first edge.
+ // If it exists, insert it to complete the mitered fill polygon.
+ double fCutPos(0.0);
+ tools::findCut(aStartPoint, rTangentPrev, aEndPoint, rTangentEdge, CUTFLAG_ALL, &fCutPos);
+
+ if(0.0 != fCutPos)
+ {
+ const B2DPoint aCutPoint(interpolate(aStartPoint, aStartPoint + rTangentPrev, fCutPos));
+ aEdgePolygon.append(aCutPoint);
+ }
+
+ break;
+ }
+ case B2DLINEJOIN_ROUND :
+ {
+ // use tooling to add needed EllipseSegment
+ double fAngleStart(atan2(rPerpendPrev.getY(), rPerpendPrev.getX()));
+ double fAngleEnd(atan2(rPerpendEdge.getY(), rPerpendEdge.getX()));
+
+ // atan2 results are [-PI .. PI], consolidate to [0.0 .. 2PI]
+ if(fAngleStart < 0.0)
+ {
+ fAngleStart += F_2PI;
+ }
+
+ if(fAngleEnd < 0.0)
+ {
+ fAngleEnd += F_2PI;
+ }
+
+ const B2DPolygon aBow(tools::createPolygonFromEllipseSegment(rPoint, fHalfLineWidth, fHalfLineWidth, fAngleStart, fAngleEnd));
+
+ if(aBow.count() > 1)
+ {
+ // #i101491#
+ // use the original start/end positions; the ones from bow creation may be numerically
+ // different due to their different creation. To guarantee good merging quality with edges
+ // and edge roundings (and to reduce point count)
+ aEdgePolygon = aBow;
+ aEdgePolygon.setB2DPoint(0, aStartPoint);
+ aEdgePolygon.setB2DPoint(aEdgePolygon.count() - 1, aEndPoint);
+ aEdgePolygon.append(rPoint);
+
+ break;
+ }
+ else
+ {
+ // wanted fall-through to default
+ }
+ }
+ default: // B2DLINEJOIN_BEVEL
+ {
+ aEdgePolygon.append(aEndPoint);
+ aEdgePolygon.append(rPoint);
+ aEdgePolygon.append(aStartPoint);
+
+ break;
+ }
+ }
+
+ // create last polygon part for edge
+ aEdgePolygon.setClosed(true);
+
+ return aEdgePolygon;
+ }
+ } // end of anonymus namespace
+
+ namespace tools
+ {
+ B2DPolyPolygon createAreaGeometry(
+ const B2DPolygon& rCandidate,
+ double fHalfLineWidth,
+ B2DLineJoin eJoin,
+ double fMaxAllowedAngle,
+ double fMaxPartOfEdge,
+ double fMiterMinimumAngle)
+ {
+ if(fMaxAllowedAngle > F_PI2)
+ {
+ fMaxAllowedAngle = F_PI2;
+ }
+ else if(fMaxAllowedAngle < 0.01 * F_PI2)
+ {
+ fMaxAllowedAngle = 0.01 * F_PI2;
+ }
+
+ if(fMaxPartOfEdge > 1.0)
+ {
+ fMaxPartOfEdge = 1.0;
+ }
+ else if(fMaxPartOfEdge < 0.01)
+ {
+ fMaxPartOfEdge = 0.01;
+ }
+
+ if(fMiterMinimumAngle > F_PI)
+ {
+ fMiterMinimumAngle = F_PI;
+ }
+ else if(fMiterMinimumAngle < 0.01 * F_PI)
+ {
+ fMiterMinimumAngle = 0.01 * F_PI;
+ }
+
+ B2DPolygon aCandidate(rCandidate);
+ const double fMaxCos(cos(fMaxAllowedAngle));
+
+ aCandidate.removeDoublePoints();
+ aCandidate = subdivideToSimple(aCandidate, fMaxCos * fMaxCos, fMaxPartOfEdge * fMaxPartOfEdge);
+
+ const sal_uInt32 nPointCount(aCandidate.count());
+
+ if(nPointCount)
+ {
+ B2DPolyPolygon aRetval;
+ const bool bEventuallyCreateLineJoin(B2DLINEJOIN_NONE != eJoin);
+ const bool bIsClosed(aCandidate.isClosed());
+ const sal_uInt32 nEdgeCount(bIsClosed ? nPointCount : nPointCount - 1);
+
+ if(nEdgeCount)
+ {
+ B2DCubicBezier aEdge;
+ B2DCubicBezier aPrev;
+
+ // prepare edge
+ aEdge.setStartPoint(aCandidate.getB2DPoint(0));
+
+ if(bIsClosed && bEventuallyCreateLineJoin)
+ {
+ // prepare previous edge
+ const sal_uInt32 nPrevIndex(nPointCount - 1);
+ aPrev.setStartPoint(aCandidate.getB2DPoint(nPrevIndex));
+ aPrev.setControlPointA(aCandidate.getNextControlPoint(nPrevIndex));
+ aPrev.setControlPointB(aCandidate.getPrevControlPoint(0));
+ aPrev.setEndPoint(aEdge.getStartPoint());
+ }
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ // fill current Edge
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aEdge.setControlPointA(aCandidate.getNextControlPoint(a));
+ aEdge.setControlPointB(aCandidate.getPrevControlPoint(nNextIndex));
+ aEdge.setEndPoint(aCandidate.getB2DPoint(nNextIndex));
+
+ // check and create linejoin
+ if(bEventuallyCreateLineJoin && (bIsClosed || 0 != a))
+ {
+ const B2DVector aTangentPrev(aPrev.getTangent(1.0));
+ const B2DVector aTangentEdge(aEdge.getTangent(0.0));
+ B2VectorOrientation aOrientation(getOrientation(aTangentPrev, aTangentEdge));
+
+ if(ORIENTATION_NEUTRAL == aOrientation)
+ {
+ // they are parallell or empty; if they are both not zero and point
+ // in opposite direction, a half-circle is needed
+ if(!aTangentPrev.equalZero() && !aTangentEdge.equalZero())
+ {
+ const double fAngle(fabs(aTangentPrev.angle(aTangentEdge)));
+
+ if(fTools::equal(fAngle, F_PI))
+ {
+ // for half-circle production, fallback to positive
+ // orientation
+ aOrientation = ORIENTATION_POSITIVE;
+ }
+ }
+ }
+
+ if(ORIENTATION_POSITIVE == aOrientation)
+ {
+ const B2DVector aPerpendPrev(getNormalizedPerpendicular(aTangentPrev) * -fHalfLineWidth);
+ const B2DVector aPerpendEdge(getNormalizedPerpendicular(aTangentEdge) * -fHalfLineWidth);
+
+ aRetval.append(createAreaGeometryForJoin(
+ aTangentPrev, aTangentEdge,
+ aPerpendPrev, aPerpendEdge,
+ aEdge.getStartPoint(), fHalfLineWidth,
+ eJoin, fMiterMinimumAngle));
+ }
+ else if(ORIENTATION_NEGATIVE == aOrientation)
+ {
+ const B2DVector aPerpendPrev(getNormalizedPerpendicular(aTangentPrev) * fHalfLineWidth);
+ const B2DVector aPerpendEdge(getNormalizedPerpendicular(aTangentEdge) * fHalfLineWidth);
+
+ aRetval.append(createAreaGeometryForJoin(
+ aTangentEdge, aTangentPrev,
+ aPerpendEdge, aPerpendPrev,
+ aEdge.getStartPoint(), fHalfLineWidth,
+ eJoin, fMiterMinimumAngle));
+ }
+ }
+
+ // create geometry for edge
+ aRetval.append(createAreaGeometryForEdge(aEdge, fHalfLineWidth));
+
+ // prepare next step
+ if(bEventuallyCreateLineJoin)
+ {
+ aPrev = aEdge;
+ }
+
+ aEdge.setStartPoint(aEdge.getEndPoint());
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return B2DPolyPolygon(rCandidate);
+ }
+ }
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolygon.cxx b/basegfx/source/polygon/b2dpolygon.cxx
new file mode 100644
index 000000000000..ccd2f3dce6e0
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolygon.cxx
@@ -0,0 +1,1655 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/curve/b2dcubicbezier.hxx>
+#include <rtl/instance.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <boost/scoped_ptr.hpp>
+#include <vector>
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+
+struct CoordinateData2D : public basegfx::B2DPoint
+{
+public:
+ CoordinateData2D() {}
+
+ explicit CoordinateData2D(const basegfx::B2DPoint& rData)
+ : B2DPoint(rData)
+ {}
+
+ CoordinateData2D& operator=(const basegfx::B2DPoint& rData)
+ {
+ B2DPoint::operator=(rData);
+ return *this;
+ }
+
+ void transform(const basegfx::B2DHomMatrix& rMatrix)
+ {
+ *this *= rMatrix;
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class CoordinateDataArray2D
+{
+ typedef ::std::vector< CoordinateData2D > CoordinateData2DVector;
+
+ CoordinateData2DVector maVector;
+
+public:
+ explicit CoordinateDataArray2D(sal_uInt32 nCount)
+ : maVector(nCount)
+ {
+ }
+
+ explicit CoordinateDataArray2D(const CoordinateDataArray2D& rOriginal)
+ : maVector(rOriginal.maVector)
+ {
+ }
+
+ CoordinateDataArray2D(const CoordinateDataArray2D& rOriginal, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maVector(rOriginal.maVector.begin() + nIndex, rOriginal.maVector.begin() + (nIndex + nCount))
+ {
+ }
+
+ sal_uInt32 count() const
+ {
+ return maVector.size();
+ }
+
+ bool operator==(const CoordinateDataArray2D& rCandidate) const
+ {
+ return (maVector == rCandidate.maVector);
+ }
+
+ const basegfx::B2DPoint& getCoordinate(sal_uInt32 nIndex) const
+ {
+ return maVector[nIndex];
+ }
+
+ void setCoordinate(sal_uInt32 nIndex, const basegfx::B2DPoint& rValue)
+ {
+ maVector[nIndex] = rValue;
+ }
+
+ void reserve(sal_uInt32 nCount)
+ {
+ maVector.reserve(nCount);
+ }
+
+ void append(const CoordinateData2D& rValue)
+ {
+ maVector.push_back(rValue);
+ }
+
+ void insert(sal_uInt32 nIndex, const CoordinateData2D& rValue, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rValue
+ CoordinateData2DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ maVector.insert(aIndex, nCount, rValue);
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const CoordinateDataArray2D& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maVector.size());
+
+ if(nCount)
+ {
+ // insert data
+ CoordinateData2DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ CoordinateData2DVector::const_iterator aStart(rSource.maVector.begin());
+ CoordinateData2DVector::const_iterator aEnd(rSource.maVector.end());
+ maVector.insert(aIndex, aStart, aEnd);
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // remove point data
+ CoordinateData2DVector::iterator aStart(maVector.begin());
+ aStart += nIndex;
+ const CoordinateData2DVector::iterator aEnd(aStart + nCount);
+ maVector.erase(aStart, aEnd);
+ }
+ }
+
+ void flip(bool bIsClosed)
+ {
+ if(maVector.size() > 1)
+ {
+ // to keep the same point at index 0, just flip all points except the
+ // first one when closed
+ const sal_uInt32 nHalfSize(bIsClosed ? (maVector.size() - 1) >> 1 : maVector.size() >> 1);
+ CoordinateData2DVector::iterator aStart(bIsClosed ? maVector.begin() + 1 : maVector.begin());
+ CoordinateData2DVector::iterator aEnd(maVector.end() - 1);
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ ::std::swap(*aStart, *aEnd);
+ aStart++;
+ aEnd--;
+ }
+ }
+ }
+
+ void removeDoublePointsAtBeginEnd()
+ {
+ // remove from end as long as there are at least two points
+ // and begin/end are equal
+ while((maVector.size() > 1) && (maVector[0] == maVector[maVector.size() - 1]))
+ {
+ maVector.pop_back();
+ }
+ }
+
+ void removeDoublePointsWholeTrack()
+ {
+ sal_uInt32 nIndex(0);
+
+ // test as long as there are at least two points and as long as the index
+ // is smaller or equal second last point
+ while((maVector.size() > 1) && (nIndex <= maVector.size() - 2))
+ {
+ if(maVector[nIndex] == maVector[nIndex + 1])
+ {
+ // if next is same as index, delete next
+ maVector.erase(maVector.begin() + (nIndex + 1));
+ }
+ else
+ {
+ // if different, step forward
+ nIndex++;
+ }
+ }
+ }
+
+ void transform(const basegfx::B2DHomMatrix& rMatrix)
+ {
+ CoordinateData2DVector::iterator aStart(maVector.begin());
+ CoordinateData2DVector::iterator aEnd(maVector.end());
+
+ for(; aStart != aEnd; aStart++)
+ {
+ aStart->transform(rMatrix);
+ }
+ }
+
+ const basegfx::B2DPoint* begin() const
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return &maVector.front();
+ }
+
+ const basegfx::B2DPoint* end() const
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return (&maVector.back())+1;
+ }
+
+ basegfx::B2DPoint* begin()
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return &maVector.front();
+ }
+
+ basegfx::B2DPoint* end()
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return (&maVector.back())+1;
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class ControlVectorPair2D
+{
+ basegfx::B2DVector maPrevVector;
+ basegfx::B2DVector maNextVector;
+
+public:
+ const basegfx::B2DVector& getPrevVector() const
+ {
+ return maPrevVector;
+ }
+
+ void setPrevVector(const basegfx::B2DVector& rValue)
+ {
+ if(rValue != maPrevVector)
+ maPrevVector = rValue;
+ }
+
+ const basegfx::B2DVector& getNextVector() const
+ {
+ return maNextVector;
+ }
+
+ void setNextVector(const basegfx::B2DVector& rValue)
+ {
+ if(rValue != maNextVector)
+ maNextVector = rValue;
+ }
+
+ bool operator==(const ControlVectorPair2D& rData) const
+ {
+ return (maPrevVector == rData.getPrevVector() && maNextVector == rData.getNextVector());
+ }
+
+ void flip()
+ {
+ ::std::swap(maPrevVector, maNextVector);
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class ControlVectorArray2D
+{
+ typedef ::std::vector< ControlVectorPair2D > ControlVectorPair2DVector;
+
+ ControlVectorPair2DVector maVector;
+ sal_uInt32 mnUsedVectors;
+
+public:
+ explicit ControlVectorArray2D(sal_uInt32 nCount)
+ : maVector(nCount),
+ mnUsedVectors(0)
+ {}
+
+ ControlVectorArray2D(const ControlVectorArray2D& rOriginal, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maVector(),
+ mnUsedVectors(0)
+ {
+ ControlVectorPair2DVector::const_iterator aStart(rOriginal.maVector.begin());
+ aStart += nIndex;
+ ControlVectorPair2DVector::const_iterator aEnd(aStart);
+ aEnd += nCount;
+ maVector.reserve(nCount);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->getPrevVector().equalZero())
+ mnUsedVectors++;
+
+ if(!aStart->getNextVector().equalZero())
+ mnUsedVectors++;
+
+ maVector.push_back(*aStart);
+ }
+ }
+
+ sal_uInt32 count() const
+ {
+ return maVector.size();
+ }
+
+ bool operator==(const ControlVectorArray2D& rCandidate) const
+ {
+ return (maVector == rCandidate.maVector);
+ }
+
+ bool isUsed() const
+ {
+ return (0 != mnUsedVectors);
+ }
+
+ const basegfx::B2DVector& getPrevVector(sal_uInt32 nIndex) const
+ {
+ return maVector[nIndex].getPrevVector();
+ }
+
+ void setPrevVector(sal_uInt32 nIndex, const basegfx::B2DVector& rValue)
+ {
+ bool bWasUsed(mnUsedVectors && !maVector[nIndex].getPrevVector().equalZero());
+ bool bIsUsed(!rValue.equalZero());
+
+ if(bWasUsed)
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex].setPrevVector(rValue);
+ }
+ else
+ {
+ maVector[nIndex].setPrevVector(basegfx::B2DVector::getEmptyVector());
+ mnUsedVectors--;
+ }
+ }
+ else
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex].setPrevVector(rValue);
+ mnUsedVectors++;
+ }
+ }
+ }
+
+ const basegfx::B2DVector& getNextVector(sal_uInt32 nIndex) const
+ {
+ return maVector[nIndex].getNextVector();
+ }
+
+ void setNextVector(sal_uInt32 nIndex, const basegfx::B2DVector& rValue)
+ {
+ bool bWasUsed(mnUsedVectors && !maVector[nIndex].getNextVector().equalZero());
+ bool bIsUsed(!rValue.equalZero());
+
+ if(bWasUsed)
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex].setNextVector(rValue);
+ }
+ else
+ {
+ maVector[nIndex].setNextVector(basegfx::B2DVector::getEmptyVector());
+ mnUsedVectors--;
+ }
+ }
+ else
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex].setNextVector(rValue);
+ mnUsedVectors++;
+ }
+ }
+ }
+
+ void append(const ControlVectorPair2D& rValue)
+ {
+ maVector.push_back(rValue);
+
+ if(!rValue.getPrevVector().equalZero())
+ mnUsedVectors += 1;
+
+ if(!rValue.getNextVector().equalZero())
+ mnUsedVectors += 1;
+ }
+
+ void insert(sal_uInt32 nIndex, const ControlVectorPair2D& rValue, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rValue
+ ControlVectorPair2DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ maVector.insert(aIndex, nCount, rValue);
+
+ if(!rValue.getPrevVector().equalZero())
+ mnUsedVectors += nCount;
+
+ if(!rValue.getNextVector().equalZero())
+ mnUsedVectors += nCount;
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const ControlVectorArray2D& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maVector.size());
+
+ if(nCount)
+ {
+ // insert data
+ ControlVectorPair2DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ ControlVectorPair2DVector::const_iterator aStart(rSource.maVector.begin());
+ ControlVectorPair2DVector::const_iterator aEnd(rSource.maVector.end());
+ maVector.insert(aIndex, aStart, aEnd);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->getPrevVector().equalZero())
+ mnUsedVectors++;
+
+ if(!aStart->getNextVector().equalZero())
+ mnUsedVectors++;
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ const ControlVectorPair2DVector::iterator aDeleteStart(maVector.begin() + nIndex);
+ const ControlVectorPair2DVector::iterator aDeleteEnd(aDeleteStart + nCount);
+ ControlVectorPair2DVector::const_iterator aStart(aDeleteStart);
+
+ for(; mnUsedVectors && aStart != aDeleteEnd; aStart++)
+ {
+ if(!aStart->getPrevVector().equalZero())
+ mnUsedVectors--;
+
+ if(mnUsedVectors && !aStart->getNextVector().equalZero())
+ mnUsedVectors--;
+ }
+
+ // remove point data
+ maVector.erase(aDeleteStart, aDeleteEnd);
+ }
+ }
+
+ void flip(bool bIsClosed)
+ {
+ if(maVector.size() > 1)
+ {
+ // to keep the same point at index 0, just flip all points except the
+ // first one when closed
+ const sal_uInt32 nHalfSize(bIsClosed ? (maVector.size() - 1) >> 1 : maVector.size() >> 1);
+ ControlVectorPair2DVector::iterator aStart(bIsClosed ? maVector.begin() + 1 : maVector.begin());
+ ControlVectorPair2DVector::iterator aEnd(maVector.end() - 1);
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ // swap Prev and Next
+ aStart->flip();
+ aEnd->flip();
+
+ // swap entries
+ ::std::swap(*aStart, *aEnd);
+
+ aStart++;
+ aEnd--;
+ }
+
+ if(aStart == aEnd)
+ {
+ // swap Prev and Next at middle element (if exists)
+ aStart->flip();
+ }
+
+ if(bIsClosed)
+ {
+ // swap Prev and Next at start element
+ maVector.begin()->flip();
+ }
+ }
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class ImplBufferedData
+{
+private:
+ // Possibility to hold the last subdivision
+ boost::scoped_ptr< basegfx::B2DPolygon > mpDefaultSubdivision;
+
+ // Possibility to hold the last B2DRange calculation
+ boost::scoped_ptr< basegfx::B2DRange > mpB2DRange;
+
+public:
+ ImplBufferedData()
+ : mpDefaultSubdivision(),
+ mpB2DRange()
+ {}
+
+ const basegfx::B2DPolygon& getDefaultAdaptiveSubdivision(const basegfx::B2DPolygon& rSource) const
+ {
+ if(!mpDefaultSubdivision)
+ {
+ const_cast< ImplBufferedData* >(this)->mpDefaultSubdivision.reset(new basegfx::B2DPolygon(basegfx::tools::adaptiveSubdivideByCount(rSource, 9)));
+ }
+
+ return *mpDefaultSubdivision;
+ }
+
+ const basegfx::B2DRange& getB2DRange(const basegfx::B2DPolygon& rSource) const
+ {
+ if(!mpB2DRange)
+ {
+ basegfx::B2DRange aNewRange;
+ const sal_uInt32 nPointCount(rSource.count());
+
+ if(nPointCount)
+ {
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ aNewRange.expand(rSource.getB2DPoint(a));
+ }
+
+ if(rSource.areControlPointsUsed())
+ {
+ const sal_uInt32 nEdgeCount(rSource.isClosed() ? nPointCount : nPointCount - 1);
+
+ if(nEdgeCount)
+ {
+ basegfx::B2DCubicBezier aEdge;
+ aEdge.setStartPoint(rSource.getB2DPoint(0));
+
+ for(sal_uInt32 b(0); b < nEdgeCount; b++)
+ {
+ const sal_uInt32 nNextIndex((b + 1) % nPointCount);
+ aEdge.setControlPointA(rSource.getNextControlPoint(b));
+ aEdge.setControlPointB(rSource.getPrevControlPoint(nNextIndex));
+ aEdge.setEndPoint(rSource.getB2DPoint(nNextIndex));
+
+ if(aEdge.isBezier())
+ {
+ const basegfx::B2DRange aBezierRangeWithControlPoints(aEdge.getRange());
+
+ if(!aNewRange.isInside(aBezierRangeWithControlPoints))
+ {
+ // the range with control points of the current edge is not completely
+ // inside the current range without control points. Expand current range by
+ // subdividing the bezier segment.
+ // Ideal here is a subdivision at the extreme values, so use
+ // getAllExtremumPositions to get all extremas in one run
+ ::std::vector< double > aExtremas;
+
+ aExtremas.reserve(4);
+ aEdge.getAllExtremumPositions(aExtremas);
+
+ const sal_uInt32 nExtremaCount(aExtremas.size());
+
+ for(sal_uInt32 c(0); c < nExtremaCount; c++)
+ {
+ aNewRange.expand(aEdge.interpolatePoint(aExtremas[c]));
+ }
+ }
+ }
+
+ // prepare next edge
+ aEdge.setStartPoint(aEdge.getEndPoint());
+ }
+ }
+ }
+ }
+
+ const_cast< ImplBufferedData* >(this)->mpB2DRange.reset(new basegfx::B2DRange(aNewRange));
+ }
+
+ return *mpB2DRange;
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class ImplB2DPolygon
+{
+private:
+ // The point vector. This vector exists always and defines the
+ // count of members.
+ CoordinateDataArray2D maPoints;
+
+ // The control point vectors. This vectors are created on demand
+ // and may be zero.
+ boost::scoped_ptr< ControlVectorArray2D > mpControlVector;
+
+ // buffered data for e.g. default subdivision and range
+ boost::scoped_ptr< ImplBufferedData > mpBufferedData;
+
+ // flag which decides if this polygon is opened or closed
+ bool mbIsClosed;
+
+public:
+ const basegfx::B2DPolygon& getDefaultAdaptiveSubdivision(const basegfx::B2DPolygon& rSource) const
+ {
+ if(!mpControlVector || !mpControlVector->isUsed())
+ {
+ return rSource;
+ }
+
+ if(!mpBufferedData)
+ {
+ const_cast< ImplB2DPolygon* >(this)->mpBufferedData.reset(new ImplBufferedData);
+ }
+
+ return mpBufferedData->getDefaultAdaptiveSubdivision(rSource);
+ }
+
+ const basegfx::B2DRange& getB2DRange(const basegfx::B2DPolygon& rSource) const
+ {
+ if(!mpBufferedData)
+ {
+ const_cast< ImplB2DPolygon* >(this)->mpBufferedData.reset(new ImplBufferedData);
+ }
+
+ return mpBufferedData->getB2DRange(rSource);
+ }
+
+ ImplB2DPolygon()
+ : maPoints(0),
+ mpControlVector(),
+ mpBufferedData(),
+ mbIsClosed(false)
+ {}
+
+ ImplB2DPolygon(const ImplB2DPolygon& rToBeCopied)
+ : maPoints(rToBeCopied.maPoints),
+ mpControlVector(),
+ mpBufferedData(),
+ mbIsClosed(rToBeCopied.mbIsClosed)
+ {
+ // complete initialization using copy
+ if(rToBeCopied.mpControlVector && rToBeCopied.mpControlVector->isUsed())
+ {
+ mpControlVector.reset( new ControlVectorArray2D(*rToBeCopied.mpControlVector) );
+ }
+ }
+
+ ImplB2DPolygon(const ImplB2DPolygon& rToBeCopied, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maPoints(rToBeCopied.maPoints, nIndex, nCount),
+ mpControlVector(),
+ mpBufferedData(),
+ mbIsClosed(rToBeCopied.mbIsClosed)
+ {
+ // complete initialization using partly copy
+ if(rToBeCopied.mpControlVector && rToBeCopied.mpControlVector->isUsed())
+ {
+ mpControlVector.reset( new ControlVectorArray2D(*rToBeCopied.mpControlVector, nIndex, nCount) );
+
+ if(!mpControlVector->isUsed())
+ mpControlVector.reset();
+ }
+ }
+
+ ImplB2DPolygon& operator=( const ImplB2DPolygon& rToBeCopied )
+ {
+ maPoints = rToBeCopied.maPoints;
+ mpControlVector.reset();
+ mpBufferedData.reset();
+ mbIsClosed = rToBeCopied.mbIsClosed;
+
+ // complete initialization using copy
+ if(rToBeCopied.mpControlVector && rToBeCopied.mpControlVector->isUsed())
+ mpControlVector.reset( new ControlVectorArray2D(*rToBeCopied.mpControlVector) );
+
+ return *this;
+ }
+
+ sal_uInt32 count() const
+ {
+ return maPoints.count();
+ }
+
+ bool isClosed() const
+ {
+ return mbIsClosed;
+ }
+
+ void setClosed(bool bNew)
+ {
+ if(bNew != mbIsClosed)
+ {
+ mpBufferedData.reset();
+ mbIsClosed = bNew;
+ }
+ }
+
+ bool operator==(const ImplB2DPolygon& rCandidate) const
+ {
+ if(mbIsClosed == rCandidate.mbIsClosed)
+ {
+ if(maPoints == rCandidate.maPoints)
+ {
+ bool bControlVectorsAreEqual(true);
+
+ if(mpControlVector)
+ {
+ if(rCandidate.mpControlVector)
+ {
+ bControlVectorsAreEqual = ((*mpControlVector) == (*rCandidate.mpControlVector));
+ }
+ else
+ {
+ // candidate has no control vector, so it's assumed all unused.
+ bControlVectorsAreEqual = !mpControlVector->isUsed();
+ }
+ }
+ else
+ {
+ if(rCandidate.mpControlVector)
+ {
+ // we have no control vector, so it's assumed all unused.
+ bControlVectorsAreEqual = !rCandidate.mpControlVector->isUsed();
+ }
+ }
+
+ if(bControlVectorsAreEqual)
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ const basegfx::B2DPoint& getPoint(sal_uInt32 nIndex) const
+ {
+ return maPoints.getCoordinate(nIndex);
+ }
+
+ void setPoint(sal_uInt32 nIndex, const basegfx::B2DPoint& rValue)
+ {
+ mpBufferedData.reset();
+ maPoints.setCoordinate(nIndex, rValue);
+ }
+
+ void reserve(sal_uInt32 nCount)
+ {
+ maPoints.reserve(nCount);
+ }
+
+ void append(const basegfx::B2DPoint& rPoint)
+ {
+ mpBufferedData.reset(); // TODO: is this needed?
+ const CoordinateData2D aCoordinate(rPoint);
+ maPoints.append(aCoordinate);
+
+ if(mpControlVector)
+ {
+ const ControlVectorPair2D aVectorPair;
+ mpControlVector->append(aVectorPair);
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const basegfx::B2DPoint& rPoint, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ mpBufferedData.reset();
+ CoordinateData2D aCoordinate(rPoint);
+ maPoints.insert(nIndex, aCoordinate, nCount);
+
+ if(mpControlVector)
+ {
+ ControlVectorPair2D aVectorPair;
+ mpControlVector->insert(nIndex, aVectorPair, nCount);
+ }
+ }
+ }
+
+ const basegfx::B2DVector& getPrevControlVector(sal_uInt32 nIndex) const
+ {
+ if(mpControlVector)
+ {
+ return mpControlVector->getPrevVector(nIndex);
+ }
+ else
+ {
+ return basegfx::B2DVector::getEmptyVector();
+ }
+ }
+
+ void setPrevControlVector(sal_uInt32 nIndex, const basegfx::B2DVector& rValue)
+ {
+ if(!mpControlVector)
+ {
+ if(!rValue.equalZero())
+ {
+ mpBufferedData.reset();
+ mpControlVector.reset( new ControlVectorArray2D(maPoints.count()) );
+ mpControlVector->setPrevVector(nIndex, rValue);
+ }
+ }
+ else
+ {
+ mpBufferedData.reset();
+ mpControlVector->setPrevVector(nIndex, rValue);
+
+ if(!mpControlVector->isUsed())
+ mpControlVector.reset();
+ }
+ }
+
+ const basegfx::B2DVector& getNextControlVector(sal_uInt32 nIndex) const
+ {
+ if(mpControlVector)
+ {
+ return mpControlVector->getNextVector(nIndex);
+ }
+ else
+ {
+ return basegfx::B2DVector::getEmptyVector();
+ }
+ }
+
+ void setNextControlVector(sal_uInt32 nIndex, const basegfx::B2DVector& rValue)
+ {
+ if(!mpControlVector)
+ {
+ if(!rValue.equalZero())
+ {
+ mpBufferedData.reset();
+ mpControlVector.reset( new ControlVectorArray2D(maPoints.count()) );
+ mpControlVector->setNextVector(nIndex, rValue);
+ }
+ }
+ else
+ {
+ mpBufferedData.reset();
+ mpControlVector->setNextVector(nIndex, rValue);
+
+ if(!mpControlVector->isUsed())
+ mpControlVector.reset();
+ }
+ }
+
+ bool areControlPointsUsed() const
+ {
+ return (mpControlVector && mpControlVector->isUsed());
+ }
+
+ void resetControlVectors(sal_uInt32 nIndex)
+ {
+ setPrevControlVector(nIndex, basegfx::B2DVector::getEmptyVector());
+ setNextControlVector(nIndex, basegfx::B2DVector::getEmptyVector());
+ }
+
+ void resetControlVectors()
+ {
+ mpBufferedData.reset();
+ mpControlVector.reset();
+ }
+
+ void setControlVectors(sal_uInt32 nIndex, const basegfx::B2DVector& rPrev, const basegfx::B2DVector& rNext)
+ {
+ setPrevControlVector(nIndex, rPrev);
+ setNextControlVector(nIndex, rNext);
+ }
+
+ void appendBezierSegment(const basegfx::B2DVector& rNext, const basegfx::B2DVector& rPrev, const basegfx::B2DPoint& rPoint)
+ {
+ mpBufferedData.reset();
+ const sal_uInt32 nCount(maPoints.count());
+
+ if(nCount)
+ {
+ setNextControlVector(nCount - 1, rNext);
+ }
+
+ insert(nCount, rPoint, 1);
+ setPrevControlVector(nCount, rPrev);
+ }
+
+ void insert(sal_uInt32 nIndex, const ImplB2DPolygon& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maPoints.count());
+
+ if(nCount)
+ {
+ mpBufferedData.reset();
+
+ if(rSource.mpControlVector && rSource.mpControlVector->isUsed() && !mpControlVector)
+ {
+ mpControlVector.reset( new ControlVectorArray2D(maPoints.count()) );
+ }
+
+ maPoints.insert(nIndex, rSource.maPoints);
+
+ if(rSource.mpControlVector)
+ {
+ mpControlVector->insert(nIndex, *rSource.mpControlVector);
+
+ if(!mpControlVector->isUsed())
+ mpControlVector.reset();
+ }
+ else if(mpControlVector)
+ {
+ ControlVectorPair2D aVectorPair;
+ mpControlVector->insert(nIndex, aVectorPair, nCount);
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ mpBufferedData.reset();
+ maPoints.remove(nIndex, nCount);
+
+ if(mpControlVector)
+ {
+ mpControlVector->remove(nIndex, nCount);
+
+ if(!mpControlVector->isUsed())
+ mpControlVector.reset();
+ }
+ }
+ }
+
+ void flip()
+ {
+ if(maPoints.count() > 1)
+ {
+ mpBufferedData.reset();
+
+ // flip points
+ maPoints.flip(mbIsClosed);
+
+ if(mpControlVector)
+ {
+ // flip control vector
+ mpControlVector->flip(mbIsClosed);
+ }
+ }
+ }
+
+ bool hasDoublePoints() const
+ {
+ if(mbIsClosed)
+ {
+ // check for same start and end point
+ const sal_uInt32 nIndex(maPoints.count() - 1);
+
+ if(maPoints.getCoordinate(0) == maPoints.getCoordinate(nIndex))
+ {
+ if(mpControlVector)
+ {
+ if(mpControlVector->getNextVector(nIndex).equalZero() && mpControlVector->getPrevVector(0).equalZero())
+ {
+ return true;
+ }
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+
+ // test for range
+ for(sal_uInt32 a(0); a < maPoints.count() - 1; a++)
+ {
+ if(maPoints.getCoordinate(a) == maPoints.getCoordinate(a + 1))
+ {
+ if(mpControlVector)
+ {
+ if(mpControlVector->getNextVector(a).equalZero() && mpControlVector->getPrevVector(a + 1).equalZero())
+ {
+ return true;
+ }
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ void removeDoublePointsAtBeginEnd()
+ {
+ // Only remove DoublePoints at Begin and End when poly is closed
+ if(mbIsClosed)
+ {
+ mpBufferedData.reset();
+
+ if(mpControlVector)
+ {
+ bool bRemove;
+
+ do
+ {
+ bRemove = false;
+
+ if(maPoints.count() > 1)
+ {
+ const sal_uInt32 nIndex(maPoints.count() - 1);
+
+ if(maPoints.getCoordinate(0) == maPoints.getCoordinate(nIndex))
+ {
+ if(mpControlVector)
+ {
+ if(mpControlVector->getNextVector(nIndex).equalZero() && mpControlVector->getPrevVector(0).equalZero())
+ {
+ bRemove = true;
+ }
+ }
+ else
+ {
+ bRemove = true;
+ }
+ }
+ }
+
+ if(bRemove)
+ {
+ const sal_uInt32 nIndex(maPoints.count() - 1);
+
+ if(mpControlVector && !mpControlVector->getPrevVector(nIndex).equalZero())
+ {
+ mpControlVector->setPrevVector(0, mpControlVector->getPrevVector(nIndex));
+ }
+
+ remove(nIndex, 1);
+ }
+ }
+ while(bRemove);
+ }
+ else
+ {
+ maPoints.removeDoublePointsAtBeginEnd();
+ }
+ }
+ }
+
+ void removeDoublePointsWholeTrack()
+ {
+ mpBufferedData.reset();
+
+ if(mpControlVector)
+ {
+ sal_uInt32 nIndex(0);
+
+ // test as long as there are at least two points and as long as the index
+ // is smaller or equal second last point
+ while((maPoints.count() > 1) && (nIndex <= maPoints.count() - 2))
+ {
+ bool bRemove(maPoints.getCoordinate(nIndex) == maPoints.getCoordinate(nIndex + 1));
+
+ if(bRemove)
+ {
+ if(mpControlVector)
+ {
+ if(!mpControlVector->getNextVector(nIndex).equalZero() || !mpControlVector->getPrevVector(nIndex + 1).equalZero())
+ {
+ bRemove = false;
+ }
+ }
+ }
+
+ if(bRemove)
+ {
+ if(mpControlVector && !mpControlVector->getPrevVector(nIndex).equalZero())
+ {
+ mpControlVector->setPrevVector(nIndex + 1, mpControlVector->getPrevVector(nIndex));
+ }
+
+ // if next is same as index and the control vectors are unused, delete index
+ remove(nIndex, 1);
+ }
+ else
+ {
+ // if different, step forward
+ nIndex++;
+ }
+ }
+ }
+ else
+ {
+ maPoints.removeDoublePointsWholeTrack();
+ }
+ }
+
+ void transform(const basegfx::B2DHomMatrix& rMatrix)
+ {
+ mpBufferedData.reset();
+
+ if(mpControlVector)
+ {
+ for(sal_uInt32 a(0); a < maPoints.count(); a++)
+ {
+ basegfx::B2DPoint aCandidate = maPoints.getCoordinate(a);
+
+ if(mpControlVector->isUsed())
+ {
+ const basegfx::B2DVector& rPrevVector(mpControlVector->getPrevVector(a));
+ const basegfx::B2DVector& rNextVector(mpControlVector->getNextVector(a));
+
+ if(!rPrevVector.equalZero())
+ {
+ basegfx::B2DVector aPrevVector(rMatrix * rPrevVector);
+ mpControlVector->setPrevVector(a, aPrevVector);
+ }
+
+ if(!rNextVector.equalZero())
+ {
+ basegfx::B2DVector aNextVector(rMatrix * rNextVector);
+ mpControlVector->setNextVector(a, aNextVector);
+ }
+ }
+
+ aCandidate *= rMatrix;
+ maPoints.setCoordinate(a, aCandidate);
+ }
+
+ if(!mpControlVector->isUsed())
+ mpControlVector.reset();
+ }
+ else
+ {
+ maPoints.transform(rMatrix);
+ }
+ }
+
+ const basegfx::B2DPoint* begin() const
+ {
+ return maPoints.begin();
+ }
+
+ const basegfx::B2DPoint* end() const
+ {
+ return maPoints.end();
+ }
+
+ basegfx::B2DPoint* begin()
+ {
+ mpBufferedData.reset();
+ return maPoints.begin();
+ }
+
+ basegfx::B2DPoint* end()
+ {
+ mpBufferedData.reset();
+ return maPoints.end();
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ struct DefaultPolygon: public rtl::Static<B2DPolygon::ImplType, DefaultPolygon> {};
+ }
+
+ B2DPolygon::B2DPolygon()
+ : mpPolygon(DefaultPolygon::get())
+ {}
+
+ B2DPolygon::B2DPolygon(const B2DPolygon& rPolygon)
+ : mpPolygon(rPolygon.mpPolygon)
+ {}
+
+ B2DPolygon::B2DPolygon(const B2DPolygon& rPolygon, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : mpPolygon(ImplB2DPolygon(*rPolygon.mpPolygon, nIndex, nCount))
+ {
+ // TODO(P2): one extra temporary here (cow_wrapper copies
+ // given ImplB2DPolygon into its internal impl_t wrapper type)
+ OSL_ENSURE(nIndex + nCount <= rPolygon.mpPolygon->count(), "B2DPolygon constructor outside range (!)");
+ }
+
+ B2DPolygon::~B2DPolygon()
+ {
+ }
+
+ B2DPolygon& B2DPolygon::operator=(const B2DPolygon& rPolygon)
+ {
+ mpPolygon = rPolygon.mpPolygon;
+ return *this;
+ }
+
+ void B2DPolygon::makeUnique()
+ {
+ mpPolygon.make_unique();
+ }
+
+ bool B2DPolygon::operator==(const B2DPolygon& rPolygon) const
+ {
+ if(mpPolygon.same_object(rPolygon.mpPolygon))
+ return true;
+
+ return ((*mpPolygon) == (*rPolygon.mpPolygon));
+ }
+
+ bool B2DPolygon::operator!=(const B2DPolygon& rPolygon) const
+ {
+ return !(*this == rPolygon);
+ }
+
+ sal_uInt32 B2DPolygon::count() const
+ {
+ return mpPolygon->count();
+ }
+
+ B2DPoint B2DPolygon::getB2DPoint(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ return mpPolygon->getPoint(nIndex);
+ }
+
+ void B2DPolygon::setB2DPoint(sal_uInt32 nIndex, const B2DPoint& rValue)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(getB2DPoint(nIndex) != rValue)
+ {
+ mpPolygon->setPoint(nIndex, rValue);
+ }
+ }
+
+ void B2DPolygon::reserve(sal_uInt32 nCount)
+ {
+ mpPolygon->reserve(nCount);
+ }
+
+ void B2DPolygon::insert(sal_uInt32 nIndex, const B2DPoint& rPoint, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex <= mpPolygon->count(), "B2DPolygon Insert outside range (!)");
+
+ if(nCount)
+ {
+ mpPolygon->insert(nIndex, rPoint, nCount);
+ }
+ }
+
+ void B2DPolygon::append(const B2DPoint& rPoint, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ mpPolygon->insert(mpPolygon->count(), rPoint, nCount);
+ }
+ }
+
+ void B2DPolygon::append(const B2DPoint& rPoint)
+ {
+ mpPolygon->append(rPoint);
+ }
+
+ B2DPoint B2DPolygon::getPrevControlPoint(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(mpPolygon->areControlPointsUsed())
+ {
+ return mpPolygon->getPoint(nIndex) + mpPolygon->getPrevControlVector(nIndex);
+ }
+ else
+ {
+ return mpPolygon->getPoint(nIndex);
+ }
+ }
+
+ B2DPoint B2DPolygon::getNextControlPoint(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(mpPolygon->areControlPointsUsed())
+ {
+ return mpPolygon->getPoint(nIndex) + mpPolygon->getNextControlVector(nIndex);
+ }
+ else
+ {
+ return mpPolygon->getPoint(nIndex);
+ }
+ }
+
+ void B2DPolygon::setPrevControlPoint(sal_uInt32 nIndex, const B2DPoint& rValue)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+ const basegfx::B2DVector aNewVector(rValue - mpPolygon->getPoint(nIndex));
+
+ if(mpPolygon->getPrevControlVector(nIndex) != aNewVector)
+ {
+ mpPolygon->setPrevControlVector(nIndex, aNewVector);
+ }
+ }
+
+ void B2DPolygon::setNextControlPoint(sal_uInt32 nIndex, const B2DPoint& rValue)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+ const basegfx::B2DVector aNewVector(rValue - mpPolygon->getPoint(nIndex));
+
+ if(mpPolygon->getNextControlVector(nIndex) != aNewVector)
+ {
+ mpPolygon->setNextControlVector(nIndex, aNewVector);
+ }
+ }
+
+ void B2DPolygon::setControlPoints(sal_uInt32 nIndex, const basegfx::B2DPoint& rPrev, const basegfx::B2DPoint& rNext)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+ const B2DPoint aPoint(mpPolygon->getPoint(nIndex));
+ const basegfx::B2DVector aNewPrev(rPrev - aPoint);
+ const basegfx::B2DVector aNewNext(rNext - aPoint);
+
+ if(mpPolygon->getPrevControlVector(nIndex) != aNewPrev || mpPolygon->getNextControlVector(nIndex) != aNewNext)
+ {
+ mpPolygon->setControlVectors(nIndex, aNewPrev, aNewNext);
+ }
+ }
+
+ void B2DPolygon::resetPrevControlPoint(sal_uInt32 nIndex)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(mpPolygon->areControlPointsUsed() && !mpPolygon->getPrevControlVector(nIndex).equalZero())
+ {
+ mpPolygon->setPrevControlVector(nIndex, B2DVector::getEmptyVector());
+ }
+ }
+
+ void B2DPolygon::resetNextControlPoint(sal_uInt32 nIndex)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(mpPolygon->areControlPointsUsed() && !mpPolygon->getNextControlVector(nIndex).equalZero())
+ {
+ mpPolygon->setNextControlVector(nIndex, B2DVector::getEmptyVector());
+ }
+ }
+
+ void B2DPolygon::resetControlPoints(sal_uInt32 nIndex)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(mpPolygon->areControlPointsUsed() &&
+ (!mpPolygon->getPrevControlVector(nIndex).equalZero() || !mpPolygon->getNextControlVector(nIndex).equalZero()))
+ {
+ mpPolygon->resetControlVectors(nIndex);
+ }
+ }
+
+ void B2DPolygon::resetControlPoints()
+ {
+ if(mpPolygon->areControlPointsUsed())
+ {
+ mpPolygon->resetControlVectors();
+ }
+ }
+
+ void B2DPolygon::appendBezierSegment(
+ const B2DPoint& rNextControlPoint,
+ const B2DPoint& rPrevControlPoint,
+ const B2DPoint& rPoint)
+ {
+ const B2DVector aNewNextVector(mpPolygon->count() ? B2DVector(rNextControlPoint - mpPolygon->getPoint(mpPolygon->count() - 1)) : B2DVector::getEmptyVector());
+ const B2DVector aNewPrevVector(rPrevControlPoint - rPoint);
+
+ if(aNewNextVector.equalZero() && aNewPrevVector.equalZero())
+ {
+ mpPolygon->insert(mpPolygon->count(), rPoint, 1);
+ }
+ else
+ {
+ mpPolygon->appendBezierSegment(aNewNextVector, aNewPrevVector, rPoint);
+ }
+ }
+
+ bool B2DPolygon::areControlPointsUsed() const
+ {
+ return mpPolygon->areControlPointsUsed();
+ }
+
+ bool B2DPolygon::isPrevControlPointUsed(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ return (mpPolygon->areControlPointsUsed() && !mpPolygon->getPrevControlVector(nIndex).equalZero());
+ }
+
+ bool B2DPolygon::isNextControlPointUsed(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ return (mpPolygon->areControlPointsUsed() && !mpPolygon->getNextControlVector(nIndex).equalZero());
+ }
+
+ B2VectorContinuity B2DPolygon::getContinuityInPoint(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(mpPolygon->areControlPointsUsed())
+ {
+ const B2DVector& rPrev(mpPolygon->getPrevControlVector(nIndex));
+ const B2DVector& rNext(mpPolygon->getNextControlVector(nIndex));
+
+ return getContinuity(rPrev, rNext);
+ }
+ else
+ {
+ return CONTINUITY_NONE;
+ }
+ }
+
+ bool B2DPolygon::isBezierSegment(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+
+ if(mpPolygon->areControlPointsUsed())
+ {
+ // Check if the edge exists
+ const bool bNextIndexValidWithoutClose(nIndex + 1 < mpPolygon->count());
+
+ if(bNextIndexValidWithoutClose || mpPolygon->isClosed())
+ {
+ const sal_uInt32 nNextIndex(bNextIndexValidWithoutClose ? nIndex + 1 : 0);
+ return (!mpPolygon->getPrevControlVector(nNextIndex).equalZero()
+ || !mpPolygon->getNextControlVector(nIndex).equalZero());
+ }
+ else
+ {
+ // no valid edge -> no bezier segment, even when local next
+ // vector may be used
+ return false;
+ }
+ }
+ else
+ {
+ // no control points -> no bezier segment
+ return false;
+ }
+ }
+
+ void B2DPolygon::getBezierSegment(sal_uInt32 nIndex, B2DCubicBezier& rTarget) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon access outside range (!)");
+ const bool bNextIndexValidWithoutClose(nIndex + 1 < mpPolygon->count());
+
+ if(bNextIndexValidWithoutClose || mpPolygon->isClosed())
+ {
+ const sal_uInt32 nNextIndex(bNextIndexValidWithoutClose ? nIndex + 1 : 0);
+ rTarget.setStartPoint(mpPolygon->getPoint(nIndex));
+ rTarget.setEndPoint(mpPolygon->getPoint(nNextIndex));
+
+ if(mpPolygon->areControlPointsUsed())
+ {
+ rTarget.setControlPointA(rTarget.getStartPoint() + mpPolygon->getNextControlVector(nIndex));
+ rTarget.setControlPointB(rTarget.getEndPoint() + mpPolygon->getPrevControlVector(nNextIndex));
+ }
+ else
+ {
+ // no bezier, reset control poins at rTarget
+ rTarget.setControlPointA(rTarget.getStartPoint());
+ rTarget.setControlPointB(rTarget.getEndPoint());
+ }
+ }
+ else
+ {
+ // no valid edge at all, reset rTarget to current point
+ const B2DPoint aPoint(mpPolygon->getPoint(nIndex));
+ rTarget.setStartPoint(aPoint);
+ rTarget.setEndPoint(aPoint);
+ rTarget.setControlPointA(aPoint);
+ rTarget.setControlPointB(aPoint);
+ }
+ }
+
+ B2DPolygon B2DPolygon::getDefaultAdaptiveSubdivision() const
+ {
+ return mpPolygon->getDefaultAdaptiveSubdivision(*this);
+ }
+
+ B2DRange B2DPolygon::getB2DRange() const
+ {
+ return mpPolygon->getB2DRange(*this);
+ }
+
+ void B2DPolygon::insert(sal_uInt32 nIndex, const B2DPolygon& rPoly, sal_uInt32 nIndex2, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex <= mpPolygon->count(), "B2DPolygon Insert outside range (!)");
+
+ if(rPoly.count())
+ {
+ if(!nCount)
+ {
+ nCount = rPoly.count();
+ }
+
+ if(0 == nIndex2 && nCount == rPoly.count())
+ {
+ mpPolygon->insert(nIndex, *rPoly.mpPolygon);
+ }
+ else
+ {
+ OSL_ENSURE(nIndex2 + nCount <= rPoly.mpPolygon->count(), "B2DPolygon Insert outside range (!)");
+ ImplB2DPolygon aTempPoly(*rPoly.mpPolygon, nIndex2, nCount);
+ mpPolygon->insert(nIndex, aTempPoly);
+ }
+ }
+ }
+
+ void B2DPolygon::append(const B2DPolygon& rPoly, sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(rPoly.count())
+ {
+ if(!nCount)
+ {
+ nCount = rPoly.count();
+ }
+
+ if(0 == nIndex && nCount == rPoly.count())
+ {
+ mpPolygon->insert(mpPolygon->count(), *rPoly.mpPolygon);
+ }
+ else
+ {
+ OSL_ENSURE(nIndex + nCount <= rPoly.mpPolygon->count(), "B2DPolygon Append outside range (!)");
+ ImplB2DPolygon aTempPoly(*rPoly.mpPolygon, nIndex, nCount);
+ mpPolygon->insert(mpPolygon->count(), aTempPoly);
+ }
+ }
+ }
+
+ void B2DPolygon::remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex + nCount <= mpPolygon->count(), "B2DPolygon Remove outside range (!)");
+
+ if(nCount)
+ {
+ mpPolygon->remove(nIndex, nCount);
+ }
+ }
+
+ void B2DPolygon::clear()
+ {
+ mpPolygon = DefaultPolygon::get();
+ }
+
+ bool B2DPolygon::isClosed() const
+ {
+ return mpPolygon->isClosed();
+ }
+
+ void B2DPolygon::setClosed(bool bNew)
+ {
+ if(isClosed() != bNew)
+ {
+ mpPolygon->setClosed(bNew);
+ }
+ }
+
+ void B2DPolygon::flip()
+ {
+ if(count() > 1)
+ {
+ mpPolygon->flip();
+ }
+ }
+
+ bool B2DPolygon::hasDoublePoints() const
+ {
+ return (mpPolygon->count() > 1 && mpPolygon->hasDoublePoints());
+ }
+
+ void B2DPolygon::removeDoublePoints()
+ {
+ if(hasDoublePoints())
+ {
+ mpPolygon->removeDoublePointsAtBeginEnd();
+ mpPolygon->removeDoublePointsWholeTrack();
+ }
+ }
+
+ void B2DPolygon::transform(const B2DHomMatrix& rMatrix)
+ {
+ if(mpPolygon->count() && !rMatrix.isIdentity())
+ {
+ mpPolygon->transform(rMatrix);
+ }
+ }
+
+ const B2DPoint* B2DPolygon::begin() const
+ {
+ return mpPolygon->begin();
+ }
+
+ const B2DPoint* B2DPolygon::end() const
+ {
+ return mpPolygon->end();
+ }
+
+ B2DPoint* B2DPolygon::begin()
+ {
+ return mpPolygon->begin();
+ }
+
+ B2DPoint* B2DPolygon::end()
+ {
+ return mpPolygon->end();
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolygonclipper.cxx b/basegfx/source/polygon/b2dpolygonclipper.cxx
new file mode 100644
index 000000000000..e368f7dbb3bd
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolygonclipper.cxx
@@ -0,0 +1,876 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/polygon/b2dpolygonclipper.hxx>
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+#include <basegfx/polygon/b2dpolygoncutandtouch.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/curve/b2dcubicbezier.hxx>
+#include <basegfx/tools/rectcliptools.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ B2DPolyPolygon clipPolygonOnParallelAxis(const B2DPolygon& rCandidate, bool bParallelToXAxis, bool bAboveAxis, double fValueOnOtherAxis, bool bStroke)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(rCandidate.count())
+ {
+ const B2DRange aCandidateRange(getRange(rCandidate));
+
+ if(bParallelToXAxis && fTools::moreOrEqual(aCandidateRange.getMinY(), fValueOnOtherAxis))
+ {
+ // completely above and on the clip line. also true for curves.
+ if(bAboveAxis)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(bParallelToXAxis && fTools::lessOrEqual(aCandidateRange.getMaxY(), fValueOnOtherAxis))
+ {
+ // completely below and on the clip line. also true for curves.
+ if(!bAboveAxis)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(!bParallelToXAxis && fTools::moreOrEqual(aCandidateRange.getMinX(), fValueOnOtherAxis))
+ {
+ // completely right of and on the clip line. also true for curves.
+ if(bAboveAxis)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(!bParallelToXAxis && fTools::lessOrEqual(aCandidateRange.getMaxX(), fValueOnOtherAxis))
+ {
+ // completely left of and on the clip line. also true for curves.
+ if(!bAboveAxis)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else
+ {
+ // add cuts with axis to polygon, including bezier segments
+ // Build edge to cut with. Make it a little big longer than needed for
+ // numerical stability. We want to cut against the edge seen as endless
+ // ray here, but addPointsAtCuts() will limit itself to the
+ // edge's range ]0.0 .. 1.0[.
+ const double fSmallExtension((aCandidateRange.getWidth() + aCandidateRange.getHeight()) * (0.5 * 0.1));
+ const B2DPoint aStart(
+ bParallelToXAxis ? aCandidateRange.getMinX() - fSmallExtension : fValueOnOtherAxis,
+ bParallelToXAxis ? fValueOnOtherAxis : aCandidateRange.getMinY() - fSmallExtension);
+ const B2DPoint aEnd(
+ bParallelToXAxis ? aCandidateRange.getMaxX() + fSmallExtension : fValueOnOtherAxis,
+ bParallelToXAxis ? fValueOnOtherAxis : aCandidateRange.getMaxY() + fSmallExtension);
+ const B2DPolygon aCandidate(addPointsAtCuts(rCandidate, aStart, aEnd));
+ const sal_uInt32 nPointCount(aCandidate.count());
+ const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ B2DCubicBezier aEdge;
+ B2DPolygon aRun;
+
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ aCandidate.getBezierSegment(a, aEdge);
+ const B2DPoint aTestPoint(aEdge.interpolatePoint(0.5));
+ const bool bInside(bParallelToXAxis ?
+ fTools::moreOrEqual(aTestPoint.getY(), fValueOnOtherAxis) == bAboveAxis :
+ fTools::moreOrEqual(aTestPoint.getX(), fValueOnOtherAxis) == bAboveAxis);
+
+ if(bInside)
+ {
+ if(!aRun.count() || !aRun.getB2DPoint(aRun.count() - 1).equal(aEdge.getStartPoint()))
+ {
+ aRun.append(aEdge.getStartPoint());
+ }
+
+ if(aEdge.isBezier())
+ {
+ aRun.appendBezierSegment(aEdge.getControlPointA(), aEdge.getControlPointB(), aEdge.getEndPoint());
+ }
+ else
+ {
+ aRun.append(aEdge.getEndPoint());
+ }
+ }
+ else
+ {
+ if(bStroke && aRun.count())
+ {
+ aRetval.append(aRun);
+ aRun.clear();
+ }
+ }
+ }
+
+ if(aRun.count())
+ {
+ if(bStroke)
+ {
+ // try to merge this last and first polygon; they may have been
+ // the former polygon's start/end point
+ if(aRetval.count())
+ {
+ const B2DPolygon aStartPolygon(aRetval.getB2DPolygon(0));
+
+ if(aStartPolygon.count() && aStartPolygon.getB2DPoint(0).equal(aRun.getB2DPoint(aRun.count() - 1)))
+ {
+ // append start polygon to aRun, remove from result set
+ aRun.append(aStartPolygon); aRun.removeDoublePoints();
+ aRetval.remove(0);
+ }
+ }
+
+ aRetval.append(aRun);
+ }
+ else
+ {
+ // set closed flag and correct last point (which is added double now).
+ closeWithGeometryChange(aRun);
+ aRetval.append(aRun);
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon clipPolyPolygonOnParallelAxis(const B2DPolyPolygon& rCandidate, bool bParallelToXAxis, bool bAboveAxis, double fValueOnOtherAxis, bool bStroke)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolyPolygon aClippedPolyPolygon(clipPolygonOnParallelAxis(rCandidate.getB2DPolygon(a), bParallelToXAxis, bAboveAxis, fValueOnOtherAxis, bStroke));
+
+ if(aClippedPolyPolygon.count())
+ {
+ aRetval.append(aClippedPolyPolygon);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon clipPolygonOnRange(const B2DPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ if(!nCount)
+ {
+ // source is empty
+ return aRetval;
+ }
+
+ if(rRange.isEmpty())
+ {
+ if(bInside)
+ {
+ // nothing is inside an empty range
+ return aRetval;
+ }
+ else
+ {
+ // everything is outside an empty range
+ return B2DPolyPolygon(rCandidate);
+ }
+ }
+
+ const B2DRange aCandidateRange(getRange(rCandidate));
+
+ if(rRange.isInside(aCandidateRange))
+ {
+ // candidate is completely inside given range
+ if(bInside)
+ {
+ // nothing to do
+ return B2DPolyPolygon(rCandidate);
+ }
+ else
+ {
+ // nothing is outside, then
+ return aRetval;
+ }
+ }
+
+ if(!bInside)
+ {
+ // cutting off the outer parts of filled polygons at parallell
+ // lines to the axes is only possible for the inner part, not for
+ // the outer part which means cutting a hole into the original polygon.
+ // This is because the inner part is a logical AND-operation of
+ // the four implied half-planes, but the outer part is not.
+ // It is possible for strokes, but with creating unnecessary extra
+ // cuts, so using clipPolygonOnPolyPolygon is better there, too.
+ // This needs to be done with the topology knowlegde and is unfurtunately
+ // more expensive, too.
+ const B2DPolygon aClip(createPolygonFromRect(rRange));
+
+ return clipPolygonOnPolyPolygon(rCandidate, B2DPolyPolygon(aClip), bInside, bStroke);
+ }
+
+ // clip against the four axes of the range
+ // against X-Axis, lower value
+ aRetval = clipPolygonOnParallelAxis(rCandidate, true, bInside, rRange.getMinY(), bStroke);
+
+ if(aRetval.count())
+ {
+ // against Y-Axis, lower value
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnParallelAxis(aRetval.getB2DPolygon(0L), false, bInside, rRange.getMinX(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnParallelAxis(aRetval, false, bInside, rRange.getMinX(), bStroke);
+ }
+
+ if(aRetval.count())
+ {
+ // against X-Axis, higher value
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnParallelAxis(aRetval.getB2DPolygon(0L), true, !bInside, rRange.getMaxY(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnParallelAxis(aRetval, true, !bInside, rRange.getMaxY(), bStroke);
+ }
+
+ if(aRetval.count())
+ {
+ // against Y-Axis, higher value
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnParallelAxis(aRetval.getB2DPolygon(0L), false, !bInside, rRange.getMaxX(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnParallelAxis(aRetval, false, !bInside, rRange.getMaxX(), bStroke);
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon clipPolyPolygonOnRange(const B2DPolyPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ if(!nPolygonCount)
+ {
+ // source is empty
+ return aRetval;
+ }
+
+ if(rRange.isEmpty())
+ {
+ if(bInside)
+ {
+ // nothing is inside an empty range
+ return aRetval;
+ }
+ else
+ {
+ // everything is outside an empty range
+ return rCandidate;
+ }
+ }
+
+ if(bInside)
+ {
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolyPolygon aClippedPolyPolygon(clipPolygonOnRange(rCandidate.getB2DPolygon(a), rRange, bInside, bStroke));
+
+ if(aClippedPolyPolygon.count())
+ {
+ aRetval.append(aClippedPolyPolygon);
+ }
+ }
+ }
+ else
+ {
+ // for details, see comment in clipPolygonOnRange for the "cutting off
+ // the outer parts of filled polygons at parallell lines" explanations
+ const B2DPolygon aClip(createPolygonFromRect(rRange));
+
+ return clipPolyPolygonOnPolyPolygon(rCandidate, B2DPolyPolygon(aClip), bInside, bStroke);
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon clipPolygonOnEdge(const B2DPolygon& rCandidate, const B2DPoint& rPointA, const B2DPoint& rPointB, bool bAbove, bool bStroke)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(rPointA.equal(rPointB))
+ {
+ // edge has no length, return polygon
+ aRetval.append(rCandidate);
+ }
+ else if(rCandidate.count())
+ {
+ const B2DVector aEdge(rPointB - rPointA);
+ B2DPolygon aCandidate(rCandidate);
+
+ // translate and rotate polygon so that given edge is on x axis
+ B2DHomMatrix aMatrixTransform(basegfx::tools::createTranslateB2DHomMatrix(-rPointA.getX(), -rPointA.getY()));
+ aMatrixTransform.rotate(-atan2(aEdge.getY(), aEdge.getX()));
+ aCandidate.transform(aMatrixTransform);
+
+ // call clip method on X-Axis
+ aRetval = clipPolygonOnParallelAxis(aCandidate, true, bAbove, 0.0, bStroke);
+
+ if(aRetval.count())
+ {
+ // if there is a result, it needs to be transformed back
+ aMatrixTransform.invert();
+ aRetval.transform(aMatrixTransform);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon clipPolyPolygonOnEdge(const B2DPolyPolygon& rCandidate, const B2DPoint& rPointA, const B2DPoint& rPointB, bool bAbove, bool bStroke)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(rPointA.equal(rPointB))
+ {
+ // edge has no length, return polygon
+ aRetval = rCandidate;
+ }
+ else if(rCandidate.count())
+ {
+ const B2DVector aEdge(rPointB - rPointA);
+ B2DPolyPolygon aCandidate(rCandidate);
+
+ // translate and rotate polygon so that given edge is on x axis
+ B2DHomMatrix aMatrixTransform(basegfx::tools::createTranslateB2DHomMatrix(-rPointA.getX(), -rPointA.getY()));
+ aMatrixTransform.rotate(-atan2(aEdge.getY(), aEdge.getX()));
+ aCandidate.transform(aMatrixTransform);
+
+ // call clip method on X-Axis
+ aRetval = clipPolyPolygonOnParallelAxis(aCandidate, true, bAbove, 0.0, bStroke);
+
+ if(aRetval.count())
+ {
+ // if there is a result, it needs to be transformed back
+ aMatrixTransform.invert();
+ aRetval.transform(aMatrixTransform);
+ }
+ }
+
+ return aRetval;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon clipPolyPolygonOnPolyPolygon(const B2DPolyPolygon& rCandidate, const B2DPolyPolygon& rClip, bool bInside, bool bStroke)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(rCandidate.count() && rClip.count())
+ {
+ if(bStroke)
+ {
+ // line clipping, create line snippets by first adding all cut points and
+ // then marching along the edges and detecting if they are inside or outside
+ // the clip polygon
+ for(sal_uInt32 a(0); a < rCandidate.count(); a++)
+ {
+ // add cuts with clip to polygon, including bezier segments
+ const B2DPolygon aCandidate(addPointsAtCuts(rCandidate.getB2DPolygon(a), rClip));
+ const sal_uInt32 nPointCount(aCandidate.count());
+ const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ B2DCubicBezier aEdge;
+ B2DPolygon aRun;
+
+ for(sal_uInt32 b(0); b < nEdgeCount; b++)
+ {
+ aCandidate.getBezierSegment(b, aEdge);
+ const B2DPoint aTestPoint(aEdge.interpolatePoint(0.5));
+ const bool bIsInside(tools::isInside(rClip, aTestPoint) == bInside);
+
+ if(bIsInside)
+ {
+ if(!aRun.count())
+ {
+ aRun.append(aEdge.getStartPoint());
+ }
+
+ if(aEdge.isBezier())
+ {
+ aRun.appendBezierSegment(aEdge.getControlPointA(), aEdge.getControlPointB(), aEdge.getEndPoint());
+ }
+ else
+ {
+ aRun.append(aEdge.getEndPoint());
+ }
+ }
+ else
+ {
+ if(aRun.count())
+ {
+ aRetval.append(aRun);
+ aRun.clear();
+ }
+ }
+ }
+
+ if(aRun.count())
+ {
+ // try to merge this last and first polygon; they may have been
+ // the former polygon's start/end point
+ if(aRetval.count())
+ {
+ const B2DPolygon aStartPolygon(aRetval.getB2DPolygon(0));
+
+ if(aStartPolygon.count() && aStartPolygon.getB2DPoint(0).equal(aRun.getB2DPoint(aRun.count() - 1)))
+ {
+ // append start polygon to aRun, remove from result set
+ aRun.append(aStartPolygon); aRun.removeDoublePoints();
+ aRetval.remove(0);
+ }
+ }
+
+ aRetval.append(aRun);
+ }
+ }
+ }
+ else
+ {
+ // area clipping
+ B2DPolyPolygon aMergePolyPolygonA(rClip);
+
+ // First solve all polygon-self and polygon-polygon intersections.
+ // Also get rid of some not-needed polygons (neutral, no area -> when
+ // no intersections, these are tubes).
+ // Now it is possible to correct the orientations in the cut-free
+ // polygons to values corresponding to painting the PolyPolygon with
+ // a XOR-WindingRule.
+ aMergePolyPolygonA = solveCrossovers(aMergePolyPolygonA);
+ aMergePolyPolygonA = stripNeutralPolygons(aMergePolyPolygonA);
+ aMergePolyPolygonA = correctOrientations(aMergePolyPolygonA);
+
+ if(!bInside)
+ {
+ // if we want to get the outside of the clip polygon, make
+ // it a 'Hole' in topological sense
+ aMergePolyPolygonA.flip();
+ }
+
+ B2DPolyPolygon aMergePolyPolygonB(rCandidate);
+
+ // prepare 2nd source polygon in same way
+ aMergePolyPolygonB = solveCrossovers(aMergePolyPolygonB);
+ aMergePolyPolygonB = stripNeutralPolygons(aMergePolyPolygonB);
+ aMergePolyPolygonB = correctOrientations(aMergePolyPolygonB);
+
+ // to clip against each other, concatenate and solve all
+ // polygon-polygon crossovers. polygon-self do not need to
+ // be solved again, they were solved in the preparation.
+ aRetval.append(aMergePolyPolygonA);
+ aRetval.append(aMergePolyPolygonB);
+ aRetval = solveCrossovers(aRetval);
+
+ // now remove neutral polygons (closed, but no area). In a last
+ // step throw away all polygons which have a depth of less than 1
+ // which means there was no logical AND at their position. For the
+ // not-inside solution, the clip was flipped to define it as 'Hole',
+ // so the removal rule is different here; remove all with a depth
+ // of less than 0 (aka holes).
+ aRetval = stripNeutralPolygons(aRetval);
+ aRetval = stripDispensablePolygons(aRetval, bInside);
+ }
+ }
+
+ return aRetval;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon clipPolygonOnPolyPolygon(const B2DPolygon& rCandidate, const B2DPolyPolygon& rClip, bool bInside, bool bStroke)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(rCandidate.count() && rClip.count())
+ {
+ aRetval = clipPolyPolygonOnPolyPolygon(B2DPolyPolygon(rCandidate), rClip, bInside, bStroke);
+ }
+
+ return aRetval;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ /*
+ * let a plane be defined as
+ *
+ * v.n+d=0
+ *
+ * and a ray be defined as
+ *
+ * a+(b-a)*t=0
+ *
+ * substitute and rearranging yields
+ *
+ * t = -(a.n+d)/(n.(b-a))
+ *
+ * if the denominator is zero, the line is either
+ * contained in the plane or parallel to the plane.
+ * in either case, there is no intersection.
+ * if numerator and denominator are both zero, the
+ * ray is contained in the plane.
+ *
+ */
+ struct scissor_plane {
+ double nx,ny; // plane normal
+ double d; // [-] minimum distance from origin
+ sal_uInt32 clipmask; // clipping mask, e.g. 1000 1000
+ };
+
+ /*
+ *
+ * polygon clipping rules (straight out of Foley and Van Dam)
+ * ===========================================================
+ * current |next |emit
+ * ____________________________________
+ * inside |inside |next
+ * inside |outside |intersect with clip plane
+ * outside |outside |nothing
+ * outside |inside |intersect with clip plane follwed by next
+ *
+ */
+ sal_uInt32 scissorLineSegment( ::basegfx::B2DPoint *in_vertex, // input buffer
+ sal_uInt32 in_count, // number of verts in input buffer
+ ::basegfx::B2DPoint *out_vertex, // output buffer
+ scissor_plane *pPlane, // scissoring plane
+ const ::basegfx::B2DRectangle &rR ) // clipping rectangle
+ {
+ ::basegfx::B2DPoint *curr;
+ ::basegfx::B2DPoint *next;
+
+ sal_uInt32 out_count=0;
+
+ // process all the verts
+ for(sal_uInt32 i=0; i<in_count; i++) {
+
+ // vertices are relative to the coordinate
+ // system defined by the rectangle.
+ curr = &in_vertex[i];
+ next = &in_vertex[(i+1)%in_count];
+
+ // perform clipping judgement & mask against current plane.
+ sal_uInt32 clip = pPlane->clipmask & ((getCohenSutherlandClipFlags(*curr,rR)<<4)|getCohenSutherlandClipFlags(*next,rR));
+
+ if(clip==0) { // both verts are inside
+ out_vertex[out_count++] = *next;
+ }
+ else if((clip&0x0f) && (clip&0xf0)) { // both verts are outside
+ }
+ else if((clip&0x0f) && (clip&0xf0)==0) { // curr is inside, next is outside
+
+ // direction vector from 'current' to 'next', *not* normalized
+ // to bring 't' into the [0<=x<=1] intervall.
+ ::basegfx::B2DPoint dir((*next)-(*curr));
+
+ double denominator = ( pPlane->nx*dir.getX() +
+ pPlane->ny*dir.getY() );
+ double numerator = ( pPlane->nx*curr->getX() +
+ pPlane->ny*curr->getY() +
+ pPlane->d );
+ double t = -numerator/denominator;
+
+ // calculate the actual point of intersection
+ ::basegfx::B2DPoint intersection( curr->getX()+t*dir.getX(),
+ curr->getY()+t*dir.getY() );
+
+ out_vertex[out_count++] = intersection;
+ }
+ else if((clip&0x0f)==0 && (clip&0xf0)) { // curr is outside, next is inside
+
+ // direction vector from 'current' to 'next', *not* normalized
+ // to bring 't' into the [0<=x<=1] intervall.
+ ::basegfx::B2DPoint dir((*next)-(*curr));
+
+ double denominator = ( pPlane->nx*dir.getX() +
+ pPlane->ny*dir.getY() );
+ double numerator = ( pPlane->nx*curr->getX() +
+ pPlane->ny*curr->getY() +
+ pPlane->d );
+ double t = -numerator/denominator;
+
+ // calculate the actual point of intersection
+ ::basegfx::B2DPoint intersection( curr->getX()+t*dir.getX(),
+ curr->getY()+t*dir.getY() );
+
+ out_vertex[out_count++] = intersection;
+ out_vertex[out_count++] = *next;
+ }
+ }
+
+ return out_count;
+ }
+
+ B2DPolygon clipTriangleListOnRange( const B2DPolygon& rCandidate,
+ const B2DRange& rRange )
+ {
+ B2DPolygon aResult;
+
+ if( !(rCandidate.count()%3) )
+ {
+ const int scissor_plane_count = 4;
+
+ scissor_plane sp[scissor_plane_count];
+
+ sp[0].nx = +1.0;
+ sp[0].ny = +0.0;
+ sp[0].d = -(rRange.getMinX());
+ sp[0].clipmask = (RectClipFlags::LEFT << 4) | RectClipFlags::LEFT; // 0001 0001
+ sp[1].nx = -1.0;
+ sp[1].ny = +0.0;
+ sp[1].d = +(rRange.getMaxX());
+ sp[1].clipmask = (RectClipFlags::RIGHT << 4) | RectClipFlags::RIGHT; // 0010 0010
+ sp[2].nx = +0.0;
+ sp[2].ny = +1.0;
+ sp[2].d = -(rRange.getMinY());
+ sp[2].clipmask = (RectClipFlags::TOP << 4) | RectClipFlags::TOP; // 0100 0100
+ sp[3].nx = +0.0;
+ sp[3].ny = -1.0;
+ sp[3].d = +(rRange.getMaxY());
+ sp[3].clipmask = (RectClipFlags::BOTTOM << 4) | RectClipFlags::BOTTOM; // 1000 1000
+
+ // retrieve the number of vertices of the triangulated polygon
+ const sal_uInt32 nVertexCount = rCandidate.count();
+
+ if(nVertexCount)
+ {
+ ////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+ //
+ // Upper bound for the maximal number of vertices when intersecting an
+ // axis-aligned rectangle with a triangle in E2
+ //
+ // The rectangle and the triangle are in general position, and have 4 and 3
+ // vertices, respectively.
+ //
+ // Lemma: Since the rectangle is a convex polygon ( see
+ // http://mathworld.wolfram.com/ConvexPolygon.html for a definition), and
+ // has no holes, it follows that any straight line will intersect the
+ // rectangle's border line at utmost two times (with the usual
+ // tie-breaking rule, if the intersection exactly hits an already existing
+ // rectangle vertex, that this intersection is only attributed to one of
+ // the adjoining edges). Thus, having a rectangle intersected with
+ // a half-plane (one side of a straight line denotes 'inside', the
+ // other 'outside') will at utmost add _one_ vertex to the resulting
+ // intersection polygon (adding two intersection vertices, and removing at
+ // least one rectangle vertex):
+ //
+ // *
+ // +--+-----------------+
+ // | * |
+ // |* |
+ // + |
+ // *| |
+ // * | |
+ // +--------------------+
+ //
+ // Proof: If the straight line intersects the rectangle two
+ // times, it does so for distinct edges, i.e. the intersection has
+ // minimally one of the rectangle's vertices on either side of the straight
+ // line (but maybe more). Thus, the intersection with a half-plane has
+ // minimally _one_ rectangle vertex removed from the resulting clip
+ // polygon, and therefore, a clip against a half-plane has the net effect
+ // of adding at utmost _one_ vertex to the resulting clip polygon.
+ //
+ // Theorem: The intersection of a rectangle and a triangle results in a
+ // polygon with at utmost 7 vertices.
+ //
+ // Proof: The inside of the triangle can be described as the consecutive
+ // intersection with three half-planes. Together with the lemma above, this
+ // results in at utmost 3 additional vertices added to the already existing 4
+ // rectangle vertices.
+ //
+ // This upper bound is attained with the following example configuration:
+ //
+ // *
+ // ***
+ // ** *
+ // ** *
+ // ** *
+ // ** *
+ // ** *
+ // ** *
+ // ** *
+ // ** *
+ // ** *
+ // ----*2--------3 *
+ // | ** |*
+ // 1* 4
+ // **| *|
+ // ** | * |
+ // **| * |
+ // 7* * |
+ // --*6-----5-----
+ // ** *
+ // **
+ //
+ // As we need to scissor all triangles against the
+ // output rectangle we employ an output buffer for the
+ // resulting vertices. the question is how large this
+ // buffer needs to be compared to the number of
+ // incoming vertices. this buffer needs to hold at
+ // most the number of original vertices times '7'. see
+ // figure above for an example. scissoring triangles
+ // with the cohen-sutherland line clipping algorithm
+ // as implemented here will result in a triangle fan
+ // which will be rendered as separate triangles to
+ // avoid pipeline stalls for each scissored
+ // triangle. creating separate triangles from a
+ // triangle fan produces (n-2)*3 vertices where n is
+ // the number of vertices of the original triangle
+ // fan. for the maximum number of 7 vertices of
+ // resulting triangle fans we therefore need 15 times
+ // the number of original vertices.
+ //
+ ////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+
+ //const size_t nBufferSize = sizeof(vertex)*(nVertexCount*16);
+ //vertex *pVertices = (vertex*)alloca(nBufferSize);
+ //sal_uInt32 nNumOutput = 0;
+
+ // we need to clip this triangle against the output rectangle
+ // to ensure that the resulting texture coordinates are in
+ // the valid range from [0<=st<=1]. under normal circustances
+ // we could use the BORDERCOLOR renderstate but some cards
+ // seem to ignore this feature.
+ ::basegfx::B2DPoint stack[3];
+ unsigned int clipflag = 0;
+
+ for(sal_uInt32 nIndex=0; nIndex<nVertexCount; ++nIndex)
+ {
+ // rotate stack
+ stack[0] = stack[1];
+ stack[1] = stack[2];
+ stack[2] = rCandidate.getB2DPoint(nIndex);
+
+ // clipping judgement
+ clipflag |= !(rRange.isInside(stack[2]));
+
+ if(nIndex > 1)
+ {
+ // consume vertices until a single seperate triangle has been visited.
+ if(!((nIndex+1)%3))
+ {
+ // if any of the last three vertices was outside
+ // we need to scissor against the destination rectangle
+ if(clipflag & 7)
+ {
+ ::basegfx::B2DPoint buf0[16];
+ ::basegfx::B2DPoint buf1[16];
+
+ sal_uInt32 vertex_count = 3;
+
+ // clip against all 4 planes passing the result of
+ // each plane as the input to the next using a double buffer
+ vertex_count = scissorLineSegment(stack,vertex_count,buf1,&sp[0],rRange);
+ vertex_count = scissorLineSegment(buf1,vertex_count,buf0,&sp[1],rRange);
+ vertex_count = scissorLineSegment(buf0,vertex_count,buf1,&sp[2],rRange);
+ vertex_count = scissorLineSegment(buf1,vertex_count,buf0,&sp[3],rRange);
+
+ if(vertex_count >= 3)
+ {
+ // convert triangle fan back to triangle list.
+ ::basegfx::B2DPoint v0(buf0[0]);
+ ::basegfx::B2DPoint v1(buf0[1]);
+ for(sal_uInt32 i=2; i<vertex_count; ++i)
+ {
+ ::basegfx::B2DPoint v2(buf0[i]);
+ aResult.append(v0);
+ aResult.append(v1);
+ aResult.append(v2);
+ v1 = v2;
+ }
+ }
+ }
+ else
+ {
+ // the last triangle has not been altered, simply copy to result
+ for(sal_uInt32 i=0; i<3; ++i)
+ aResult.append(stack[i]);
+ }
+ }
+ }
+
+ clipflag <<= 1;
+ }
+ }
+ }
+
+ return aResult;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolygoncutandtouch.cxx b/basegfx/source/polygon/b2dpolygoncutandtouch.cxx
new file mode 100644
index 000000000000..ac118e73356f
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolygoncutandtouch.cxx
@@ -0,0 +1,1304 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/polygon/b2dpolygoncutandtouch.hxx>
+#include <osl/diagnose.h>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/curve/b2dcubicbezier.hxx>
+
+#include <vector>
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+// defines
+
+#define SUBDIVIDE_FOR_CUT_TEST_COUNT (50)
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ ////////////////////////////////////////////////////////////////////////////////
+
+ class temporaryPoint
+ {
+ B2DPoint maPoint; // the new point
+ sal_uInt32 mnIndex; // index after which to insert
+ double mfCut; // parametric cut description [0.0 .. 1.0]
+
+ public:
+ temporaryPoint(const B2DPoint& rNewPoint, sal_uInt32 nIndex, double fCut)
+ : maPoint(rNewPoint),
+ mnIndex(nIndex),
+ mfCut(fCut)
+ {
+ }
+
+ bool operator<(const temporaryPoint& rComp) const
+ {
+ if(mnIndex == rComp.mnIndex)
+ {
+ return (mfCut < rComp.mfCut);
+ }
+
+ return (mnIndex < rComp.mnIndex);
+ }
+
+ const B2DPoint& getPoint() const { return maPoint; }
+ sal_uInt32 getIndex() const { return mnIndex; }
+ double getCut() const { return mfCut; }
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ typedef ::std::vector< temporaryPoint > temporaryPointVector;
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ class temporaryPolygonData
+ {
+ B2DPolygon maPolygon;
+ B2DRange maRange;
+ temporaryPointVector maPoints;
+
+ public:
+ const B2DPolygon& getPolygon() const { return maPolygon; }
+ void setPolygon(const B2DPolygon& rNew) { maPolygon = rNew; maRange = tools::getRange(maPolygon); }
+ const B2DRange& getRange() const { return maRange; }
+ temporaryPointVector& getTemporaryPointVector() { return maPoints; }
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ B2DPolygon mergeTemporaryPointsAndPolygon(const B2DPolygon& rCandidate, temporaryPointVector& rTempPoints)
+ {
+ // #i76891# mergeTemporaryPointsAndPolygon redesigned to be able to correctly handle
+ // single edges with/without control points
+ // #i101491# added counter for non-changing element count
+ const sal_uInt32 nTempPointCount(rTempPoints.size());
+
+ if(nTempPointCount)
+ {
+ B2DPolygon aRetval;
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount)
+ {
+ // sort temp points to assure increasing fCut values and increasing indices
+ ::std::sort(rTempPoints.begin(), rTempPoints.end());
+
+ // prepare loop
+ B2DCubicBezier aEdge;
+ sal_uInt32 nNewInd(0L);
+
+ // add start point
+ aRetval.append(rCandidate.getB2DPoint(0));
+
+ for(sal_uInt32 a(0L); a < nCount; a++)
+ {
+ // get edge
+ rCandidate.getBezierSegment(a, aEdge);
+
+ if(aEdge.isBezier())
+ {
+ // control vectors involved for this edge
+ double fLeftStart(0.0);
+
+ // now add all points targeted to be at this index
+ while(nNewInd < nTempPointCount && rTempPoints[nNewInd].getIndex() == a)
+ {
+ const temporaryPoint& rTempPoint = rTempPoints[nNewInd++];
+
+ // split curve segment. Splits need to come sorted and need to be < 1.0. Also,
+ // since original segment is consumed from left to right, the cut values need
+ // to be scaled to the remaining part
+ B2DCubicBezier aLeftPart;
+ const double fRelativeSplitPoint((rTempPoint.getCut() - fLeftStart) / (1.0 - fLeftStart));
+ aEdge.split(fRelativeSplitPoint, &aLeftPart, &aEdge);
+ fLeftStart = rTempPoint.getCut();
+
+ // add left bow
+ aRetval.appendBezierSegment(aLeftPart.getControlPointA(), aLeftPart.getControlPointB(), rTempPoint.getPoint());
+ }
+
+ // add remaining bow
+ aRetval.appendBezierSegment(aEdge.getControlPointA(), aEdge.getControlPointB(), aEdge.getEndPoint());
+ }
+ else
+ {
+ // add all points targeted to be at this index
+ while(nNewInd < nTempPointCount && rTempPoints[nNewInd].getIndex() == a)
+ {
+ const temporaryPoint& rTempPoint = rTempPoints[nNewInd++];
+ const B2DPoint aNewPoint(rTempPoint.getPoint());
+
+ // do not add points double
+ if(!aRetval.getB2DPoint(aRetval.count() - 1L).equal(aNewPoint))
+ {
+ aRetval.append(aNewPoint);
+ }
+ }
+
+ // add edge end point
+ aRetval.append(aEdge.getEndPoint());
+ }
+ }
+ }
+
+ if(rCandidate.isClosed())
+ {
+ // set closed flag and correct last point (which is added double now).
+ tools::closeWithGeometryChange(aRetval);
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void adaptAndTransferCutsWithBezierSegment(
+ const temporaryPointVector& rPointVector, const B2DPolygon& rPolygon,
+ sal_uInt32 nInd, temporaryPointVector& rTempPoints)
+ {
+ // assuming that the subdivision to create rPolygon used aequidistant pieces
+ // (as in adaptiveSubdivideByCount) it is now possible to calculate back the
+ // cut positions in the polygon to relative cut positions on the original bezier
+ // segment.
+ const sal_uInt32 nTempPointCount(rPointVector.size());
+ const sal_uInt32 nEdgeCount(rPolygon.count() ? rPolygon.count() - 1L : 0L);
+
+ if(nTempPointCount && nEdgeCount)
+ {
+ for(sal_uInt32 a(0L); a < nTempPointCount; a++)
+ {
+ const temporaryPoint& rTempPoint = rPointVector[a];
+ const double fCutPosInPolygon((double)rTempPoint.getIndex() + rTempPoint.getCut());
+ const double fRelativeCutPos(fCutPosInPolygon / (double)nEdgeCount);
+ rTempPoints.push_back(temporaryPoint(rTempPoint.getPoint(), nInd, fRelativeCutPos));
+ }
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ ////////////////////////////////////////////////////////////////////////////////
+ // predefines for calls to this methods before method implementation
+
+ void findCuts(const B2DPolygon& rCandidate, temporaryPointVector& rTempPoints);
+ void findTouches(const B2DPolygon& rEdgePolygon, const B2DPolygon& rPointPolygon, temporaryPointVector& rTempPoints);
+ void findCuts(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, temporaryPointVector& rTempPointsA, temporaryPointVector& rTempPointsB);
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findEdgeCutsTwoEdges(
+ const B2DPoint& rCurrA, const B2DPoint& rNextA,
+ const B2DPoint& rCurrB, const B2DPoint& rNextB,
+ sal_uInt32 nIndA, sal_uInt32 nIndB,
+ temporaryPointVector& rTempPointsA, temporaryPointVector& rTempPointsB)
+ {
+ // no null length edges
+ if(!(rCurrA.equal(rNextA) || rCurrB.equal(rNextB)))
+ {
+ // no common start/end points, this can be no cuts
+ if(!(rCurrB.equal(rCurrA) || rCurrB.equal(rNextA) || rNextB.equal(rCurrA) || rNextB.equal(rNextA)))
+ {
+ const B2DVector aVecA(rNextA - rCurrA);
+ const B2DVector aVecB(rNextB - rCurrB);
+ double fCut(aVecA.cross(aVecB));
+
+ if(!fTools::equalZero(fCut))
+ {
+ const double fZero(0.0);
+ const double fOne(1.0);
+ fCut = (aVecB.getY() * (rCurrB.getX() - rCurrA.getX()) + aVecB.getX() * (rCurrA.getY() - rCurrB.getY())) / fCut;
+
+ if(fTools::more(fCut, fZero) && fTools::less(fCut, fOne))
+ {
+ // it's a candidate, but also need to test parameter value of cut on line 2
+ double fCut2;
+
+ // choose the more precise version
+ if(fabs(aVecB.getX()) > fabs(aVecB.getY()))
+ {
+ fCut2 = (rCurrA.getX() + (fCut * aVecA.getX()) - rCurrB.getX()) / aVecB.getX();
+ }
+ else
+ {
+ fCut2 = (rCurrA.getY() + (fCut * aVecA.getY()) - rCurrB.getY()) / aVecB.getY();
+ }
+
+ if(fTools::more(fCut2, fZero) && fTools::less(fCut2, fOne))
+ {
+ // cut is in range, add point. Two edges can have only one cut, but
+ // add a cut point to each list. The lists may be the same for
+ // self intersections.
+ const B2DPoint aCutPoint(interpolate(rCurrA, rNextA, fCut));
+ rTempPointsA.push_back(temporaryPoint(aCutPoint, nIndA, fCut));
+ rTempPointsB.push_back(temporaryPoint(aCutPoint, nIndB, fCut2));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findCutsAndTouchesAndCommonForBezier(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, temporaryPointVector& rTempPointsA, temporaryPointVector& rTempPointsB)
+ {
+ // #i76891#
+ // This new method is necessary since in findEdgeCutsBezierAndEdge and in findEdgeCutsTwoBeziers
+ // it is not sufficient to use findCuts() recursively. This will indeed find the cuts between the
+ // segments of the two temporarily adaptive subdivided bezier segments, but not the touches or
+ // equal points of them.
+ // It would be possible to find the toches using findTouches(), but at last with commpn points
+ // the adding of cut points (temporary points) would fail. But for these temporarily adaptive
+ // subdivided bezier segments, common points may be not very likely, but the bug shows that it
+ // happens.
+ // Touch points are a little bit more likely than common points. All in all it is best to use
+ // a specialized method here which can profit from knowing that it is working on a special
+ // family of B2DPolygons: no curve segments included and not closed.
+ OSL_ENSURE(!rCandidateA.areControlPointsUsed() && !rCandidateB.areControlPointsUsed(), "findCutsAndTouchesAndCommonForBezier only works with subdivided polygons (!)");
+ OSL_ENSURE(!rCandidateA.isClosed() && !rCandidateB.isClosed(), "findCutsAndTouchesAndCommonForBezier only works with opened polygons (!)");
+ const sal_uInt32 nPointCountA(rCandidateA.count());
+ const sal_uInt32 nPointCountB(rCandidateB.count());
+
+ if(nPointCountA > 1 && nPointCountB > 1)
+ {
+ const sal_uInt32 nEdgeCountA(nPointCountA - 1);
+ const sal_uInt32 nEdgeCountB(nPointCountB - 1);
+ B2DPoint aCurrA(rCandidateA.getB2DPoint(0L));
+
+ for(sal_uInt32 a(0L); a < nEdgeCountA; a++)
+ {
+ const B2DPoint aNextA(rCandidateA.getB2DPoint(a + 1L));
+ const B2DRange aRangeA(aCurrA, aNextA);
+ B2DPoint aCurrB(rCandidateB.getB2DPoint(0L));
+
+ for(sal_uInt32 b(0L); b < nEdgeCountB; b++)
+ {
+ const B2DPoint aNextB(rCandidateB.getB2DPoint(b + 1L));
+ const B2DRange aRangeB(aCurrB, aNextB);
+
+ if(aRangeA.overlaps(aRangeB))
+ {
+ // no null length edges
+ if(!(aCurrA.equal(aNextA) || aCurrB.equal(aNextB)))
+ {
+ const B2DVector aVecA(aNextA - aCurrA);
+ const B2DVector aVecB(aNextB - aCurrB);
+ double fCutA(aVecA.cross(aVecB));
+
+ if(!fTools::equalZero(fCutA))
+ {
+ const double fZero(0.0);
+ const double fOne(1.0);
+ fCutA = (aVecB.getY() * (aCurrB.getX() - aCurrA.getX()) + aVecB.getX() * (aCurrA.getY() - aCurrB.getY())) / fCutA;
+
+ // use range [0.0 .. 1.0[, thus in the loop, all direct aCurrA cuts will be registered
+ // as 0.0 cut. The 1.0 cut will be registered in the next loop step
+ if(fTools::moreOrEqual(fCutA, fZero) && fTools::less(fCutA, fOne))
+ {
+ // it's a candidate, but also need to test parameter value of cut on line 2
+ double fCutB;
+
+ // choose the more precise version
+ if(fabs(aVecB.getX()) > fabs(aVecB.getY()))
+ {
+ fCutB = (aCurrA.getX() + (fCutA * aVecA.getX()) - aCurrB.getX()) / aVecB.getX();
+ }
+ else
+ {
+ fCutB = (aCurrA.getY() + (fCutA * aVecA.getY()) - aCurrB.getY()) / aVecB.getY();
+ }
+
+ // use range [0.0 .. 1.0[, thus in the loop, all direct aCurrA cuts will be registered
+ // as 0.0 cut. The 1.0 cut will be registered in the next loop step
+ if(fTools::moreOrEqual(fCutB, fZero) && fTools::less(fCutB, fOne))
+ {
+ // cut is in both ranges. Add points for A and B
+ // #i111715# use fTools::equal instead of fTools::equalZero for better accuracy
+ if(fTools::equal(fCutA, fZero))
+ {
+ // ignore for start point in first edge; this is handled
+ // by outer methods and would just produce a double point
+ if(a)
+ {
+ rTempPointsA.push_back(temporaryPoint(aCurrA, a, 0.0));
+ }
+ }
+ else
+ {
+ const B2DPoint aCutPoint(interpolate(aCurrA, aNextA, fCutA));
+ rTempPointsA.push_back(temporaryPoint(aCutPoint, a, fCutA));
+ }
+
+ // #i111715# use fTools::equal instead of fTools::equalZero for better accuracy
+ if(fTools::equal(fCutB, fZero))
+ {
+ // ignore for start point in first edge; this is handled
+ // by outer methods and would just produce a double point
+ if(b)
+ {
+ rTempPointsB.push_back(temporaryPoint(aCurrB, b, 0.0));
+ }
+ }
+ else
+ {
+ const B2DPoint aCutPoint(interpolate(aCurrB, aNextB, fCutB));
+ rTempPointsB.push_back(temporaryPoint(aCutPoint, b, fCutB));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // prepare next step
+ aCurrB = aNextB;
+ }
+
+ // prepare next step
+ aCurrA = aNextA;
+ }
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findEdgeCutsBezierAndEdge(
+ const B2DCubicBezier& rCubicA,
+ const B2DPoint& rCurrB, const B2DPoint& rNextB,
+ sal_uInt32 nIndA, sal_uInt32 nIndB,
+ temporaryPointVector& rTempPointsA, temporaryPointVector& rTempPointsB)
+ {
+ // find all cuts between given bezier segment and edge. Add an entry to the tempPoints
+ // for each common point with the cut value describing the relative position on given
+ // bezier segment and edge.
+ B2DPolygon aTempPolygonA;
+ B2DPolygon aTempPolygonEdge;
+ temporaryPointVector aTempPointVectorA;
+ temporaryPointVector aTempPointVectorEdge;
+
+ // create subdivided polygons and find cuts between them
+ // Keep adaptiveSubdivideByCount due to needed quality
+ aTempPolygonA.reserve(SUBDIVIDE_FOR_CUT_TEST_COUNT + 8);
+ aTempPolygonA.append(rCubicA.getStartPoint());
+ rCubicA.adaptiveSubdivideByCount(aTempPolygonA, SUBDIVIDE_FOR_CUT_TEST_COUNT);
+ aTempPolygonEdge.append(rCurrB);
+ aTempPolygonEdge.append(rNextB);
+
+ // #i76891# using findCuts recursively is not sufficient here
+ findCutsAndTouchesAndCommonForBezier(aTempPolygonA, aTempPolygonEdge, aTempPointVectorA, aTempPointVectorEdge);
+
+ if(aTempPointVectorA.size())
+ {
+ // adapt tempVector entries to segment
+ adaptAndTransferCutsWithBezierSegment(aTempPointVectorA, aTempPolygonA, nIndA, rTempPointsA);
+ }
+
+ // append remapped tempVector entries for edge to tempPoints for edge
+ for(sal_uInt32 a(0L); a < aTempPointVectorEdge.size(); a++)
+ {
+ const temporaryPoint& rTempPoint = aTempPointVectorEdge[a];
+ rTempPointsB.push_back(temporaryPoint(rTempPoint.getPoint(), nIndB, rTempPoint.getCut()));
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findEdgeCutsTwoBeziers(
+ const B2DCubicBezier& rCubicA,
+ const B2DCubicBezier& rCubicB,
+ sal_uInt32 nIndA, sal_uInt32 nIndB,
+ temporaryPointVector& rTempPointsA, temporaryPointVector& rTempPointsB)
+ {
+ // find all cuts between the two given bezier segments. Add an entry to the tempPoints
+ // for each common point with the cut value describing the relative position on given
+ // bezier segments.
+ B2DPolygon aTempPolygonA;
+ B2DPolygon aTempPolygonB;
+ temporaryPointVector aTempPointVectorA;
+ temporaryPointVector aTempPointVectorB;
+
+ // create subdivided polygons and find cuts between them
+ // Keep adaptiveSubdivideByCount due to needed quality
+ aTempPolygonA.reserve(SUBDIVIDE_FOR_CUT_TEST_COUNT + 8);
+ aTempPolygonA.append(rCubicA.getStartPoint());
+ rCubicA.adaptiveSubdivideByCount(aTempPolygonA, SUBDIVIDE_FOR_CUT_TEST_COUNT);
+ aTempPolygonB.reserve(SUBDIVIDE_FOR_CUT_TEST_COUNT + 8);
+ aTempPolygonB.append(rCubicB.getStartPoint());
+ rCubicB.adaptiveSubdivideByCount(aTempPolygonB, SUBDIVIDE_FOR_CUT_TEST_COUNT);
+
+ // #i76891# using findCuts recursively is not sufficient here
+ findCutsAndTouchesAndCommonForBezier(aTempPolygonA, aTempPolygonB, aTempPointVectorA, aTempPointVectorB);
+
+ if(aTempPointVectorA.size())
+ {
+ // adapt tempVector entries to segment
+ adaptAndTransferCutsWithBezierSegment(aTempPointVectorA, aTempPolygonA, nIndA, rTempPointsA);
+ }
+
+ if(aTempPointVectorB.size())
+ {
+ // adapt tempVector entries to segment
+ adaptAndTransferCutsWithBezierSegment(aTempPointVectorB, aTempPolygonB, nIndB, rTempPointsB);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findEdgeCutsOneBezier(
+ const B2DCubicBezier& rCubicA,
+ sal_uInt32 nInd, temporaryPointVector& rTempPoints)
+ {
+ // avoid expensive part of this method if possible
+ // TODO: use hasAnyExtremum() method instead when it becomes available
+ double fDummy;
+ const bool bHasAnyExtremum = rCubicA.getMinimumExtremumPosition( fDummy );
+ if( !bHasAnyExtremum )
+ return;
+
+ // find all self-intersections on the given bezier segment. Add an entry to the tempPoints
+ // for each self intersection point with the cut value describing the relative position on given
+ // bezier segment.
+ B2DPolygon aTempPolygon;
+ temporaryPointVector aTempPointVector;
+
+ // create subdivided polygon and find cuts on it
+ // Keep adaptiveSubdivideByCount due to needed quality
+ aTempPolygon.reserve(SUBDIVIDE_FOR_CUT_TEST_COUNT + 8);
+ aTempPolygon.append(rCubicA.getStartPoint());
+ rCubicA.adaptiveSubdivideByCount(aTempPolygon, SUBDIVIDE_FOR_CUT_TEST_COUNT);
+ findCuts(aTempPolygon, aTempPointVector);
+
+ if(aTempPointVector.size())
+ {
+ // adapt tempVector entries to segment
+ adaptAndTransferCutsWithBezierSegment(aTempPointVector, aTempPolygon, nInd, rTempPoints);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findCuts(const B2DPolygon& rCandidate, temporaryPointVector& rTempPoints)
+ {
+ // find out if there are edges with intersections (self-cuts). If yes, add
+ // entries to rTempPoints accordingly
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+
+ if(nEdgeCount)
+ {
+ const bool bCurvesInvolved(rCandidate.areControlPointsUsed());
+
+ if(bCurvesInvolved)
+ {
+ B2DCubicBezier aCubicA;
+ B2DCubicBezier aCubicB;
+
+ for(sal_uInt32 a(0L); a < nEdgeCount - 1L; a++)
+ {
+ rCandidate.getBezierSegment(a, aCubicA);
+ aCubicA.testAndSolveTrivialBezier();
+ const bool bEdgeAIsCurve(aCubicA.isBezier());
+ const B2DRange aRangeA(aCubicA.getRange());
+
+ if(bEdgeAIsCurve)
+ {
+ // curved segments may have self-intersections, do not forget those (!)
+ findEdgeCutsOneBezier(aCubicA, a, rTempPoints);
+ }
+
+ for(sal_uInt32 b(a + 1L); b < nEdgeCount; b++)
+ {
+ rCandidate.getBezierSegment(b, aCubicB);
+ aCubicB.testAndSolveTrivialBezier();
+ const bool bEdgeBIsCurve(aCubicB.isBezier());
+ const B2DRange aRangeB(aCubicB.getRange());
+
+ // only overlapping segments need to be tested
+ // consecutive segments touch of course
+ bool bOverlap = false;
+ if( b > a+1)
+ bOverlap = aRangeA.overlaps(aRangeB);
+ else
+ bOverlap = aRangeA.overlapsMore(aRangeB);
+ if( bOverlap)
+ {
+ if(bEdgeAIsCurve && bEdgeBIsCurve)
+ {
+ // test for bezier-bezier cuts
+ findEdgeCutsTwoBeziers(aCubicA, aCubicB, a, b, rTempPoints, rTempPoints);
+ }
+ else if(bEdgeAIsCurve)
+ {
+ // test for bezier-edge cuts
+ findEdgeCutsBezierAndEdge(aCubicA, aCubicB.getStartPoint(), aCubicB.getEndPoint(), a, b, rTempPoints, rTempPoints);
+ }
+ else if(bEdgeBIsCurve)
+ {
+ // test for bezier-edge cuts
+ findEdgeCutsBezierAndEdge(aCubicB, aCubicA.getStartPoint(), aCubicA.getEndPoint(), b, a, rTempPoints, rTempPoints);
+ }
+ else
+ {
+ // test for simple edge-edge cuts
+ findEdgeCutsTwoEdges(aCubicA.getStartPoint(), aCubicA.getEndPoint(), aCubicB.getStartPoint(), aCubicB.getEndPoint(),
+ a, b, rTempPoints, rTempPoints);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ B2DPoint aCurrA(rCandidate.getB2DPoint(0L));
+
+ for(sal_uInt32 a(0L); a < nEdgeCount - 1L; a++)
+ {
+ const B2DPoint aNextA(rCandidate.getB2DPoint(a + 1L == nPointCount ? 0L : a + 1L));
+ const B2DRange aRangeA(aCurrA, aNextA);
+ B2DPoint aCurrB(rCandidate.getB2DPoint(a + 1L));
+
+ for(sal_uInt32 b(a + 1L); b < nEdgeCount; b++)
+ {
+ const B2DPoint aNextB(rCandidate.getB2DPoint(b + 1L == nPointCount ? 0L : b + 1L));
+ const B2DRange aRangeB(aCurrB, aNextB);
+
+ // consecutive segments touch of course
+ bool bOverlap = false;
+ if( b > a+1)
+ bOverlap = aRangeA.overlaps(aRangeB);
+ else
+ bOverlap = aRangeA.overlapsMore(aRangeB);
+ if( bOverlap)
+ {
+ findEdgeCutsTwoEdges(aCurrA, aNextA, aCurrB, aNextB, a, b, rTempPoints, rTempPoints);
+ }
+
+ // prepare next step
+ aCurrB = aNextB;
+ }
+
+ // prepare next step
+ aCurrA = aNextA;
+ }
+ }
+ }
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findTouchesOnEdge(
+ const B2DPoint& rCurr, const B2DPoint& rNext, const B2DPolygon& rPointPolygon,
+ sal_uInt32 nInd, temporaryPointVector& rTempPoints)
+ {
+ // find out if points from rPointPolygon are positioned on given edge. If Yes, add
+ // points there to represent touches (which may be enter or leave nodes later).
+ const sal_uInt32 nPointCount(rPointPolygon.count());
+
+ if(nPointCount)
+ {
+ const B2DRange aRange(rCurr, rNext);
+ const B2DVector aEdgeVector(rNext - rCurr);
+ B2DVector aNormalizedEdgeVector(aEdgeVector);
+ aNormalizedEdgeVector.normalize();
+ bool bTestUsingX(fabs(aEdgeVector.getX()) > fabs(aEdgeVector.getY()));
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aTestPoint(rPointPolygon.getB2DPoint(a));
+
+ if(aRange.isInside(aTestPoint))
+ {
+ if(!aTestPoint.equal(rCurr) && !aTestPoint.equal(rNext))
+ {
+ const B2DVector aTestVector(aTestPoint - rCurr);
+
+ if(areParallel(aNormalizedEdgeVector, aTestVector))
+ {
+ const double fCut((bTestUsingX)
+ ? aTestVector.getX() / aEdgeVector.getX()
+ : aTestVector.getY() / aEdgeVector.getY());
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ if(fTools::more(fCut, fZero) && fTools::less(fCut, fOne))
+ {
+ rTempPoints.push_back(temporaryPoint(aTestPoint, nInd, fCut));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findTouchesOnCurve(
+ const B2DCubicBezier& rCubicA, const B2DPolygon& rPointPolygon,
+ sal_uInt32 nInd, temporaryPointVector& rTempPoints)
+ {
+ // find all points from rPointPolygon which touch the given bezier segment. Add an entry
+ // for each touch to the given pointVector. The cut for that entry is the relative position on
+ // the given bezier segment.
+ B2DPolygon aTempPolygon;
+ temporaryPointVector aTempPointVector;
+
+ // create subdivided polygon and find cuts on it
+ // Keep adaptiveSubdivideByCount due to needed quality
+ aTempPolygon.reserve(SUBDIVIDE_FOR_CUT_TEST_COUNT + 8);
+ aTempPolygon.append(rCubicA.getStartPoint());
+ rCubicA.adaptiveSubdivideByCount(aTempPolygon, SUBDIVIDE_FOR_CUT_TEST_COUNT);
+ findTouches(aTempPolygon, rPointPolygon, aTempPointVector);
+
+ if(aTempPointVector.size())
+ {
+ // adapt tempVector entries to segment
+ adaptAndTransferCutsWithBezierSegment(aTempPointVector, aTempPolygon, nInd, rTempPoints);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findTouches(const B2DPolygon& rEdgePolygon, const B2DPolygon& rPointPolygon, temporaryPointVector& rTempPoints)
+ {
+ // find out if points from rPointPolygon touch edges from rEdgePolygon. If yes,
+ // add entries to rTempPoints
+ const sal_uInt32 nPointCount(rPointPolygon.count());
+ const sal_uInt32 nEdgePointCount(rEdgePolygon.count());
+
+ if(nPointCount && nEdgePointCount)
+ {
+ const sal_uInt32 nEdgeCount(rEdgePolygon.isClosed() ? nEdgePointCount : nEdgePointCount - 1L);
+ B2DPoint aCurr(rEdgePolygon.getB2DPoint(0));
+
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nEdgePointCount);
+ const B2DPoint aNext(rEdgePolygon.getB2DPoint(nNextIndex));
+
+ if(!aCurr.equal(aNext))
+ {
+ bool bHandleAsSimpleEdge(true);
+
+ if(rEdgePolygon.areControlPointsUsed())
+ {
+ const B2DPoint aNextControlPoint(rEdgePolygon.getNextControlPoint(a));
+ const B2DPoint aPrevControlPoint(rEdgePolygon.getPrevControlPoint(nNextIndex));
+ const bool bEdgeIsCurve(!aNextControlPoint.equal(aCurr) || !aPrevControlPoint.equal(aNext));
+
+ if(bEdgeIsCurve)
+ {
+ bHandleAsSimpleEdge = false;
+ const B2DCubicBezier aCubicA(aCurr, aNextControlPoint, aPrevControlPoint, aNext);
+ findTouchesOnCurve(aCubicA, rPointPolygon, a, rTempPoints);
+ }
+ }
+
+ if(bHandleAsSimpleEdge)
+ {
+ findTouchesOnEdge(aCurr, aNext, rPointPolygon, a, rTempPoints);
+ }
+ }
+
+ // next step
+ aCurr = aNext;
+ }
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ ////////////////////////////////////////////////////////////////////////////////
+
+ void findCuts(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, temporaryPointVector& rTempPointsA, temporaryPointVector& rTempPointsB)
+ {
+ // find out if edges from both polygons cut. If so, add entries to rTempPoints which
+ // should be added to the polygons accordingly
+ const sal_uInt32 nPointCountA(rCandidateA.count());
+ const sal_uInt32 nPointCountB(rCandidateB.count());
+
+ if(nPointCountA && nPointCountB)
+ {
+ const sal_uInt32 nEdgeCountA(rCandidateA.isClosed() ? nPointCountA : nPointCountA - 1L);
+ const sal_uInt32 nEdgeCountB(rCandidateB.isClosed() ? nPointCountB : nPointCountB - 1L);
+
+ if(nEdgeCountA && nEdgeCountB)
+ {
+ const bool bCurvesInvolved(rCandidateA.areControlPointsUsed() || rCandidateB.areControlPointsUsed());
+
+ if(bCurvesInvolved)
+ {
+ B2DCubicBezier aCubicA;
+ B2DCubicBezier aCubicB;
+
+ for(sal_uInt32 a(0L); a < nEdgeCountA; a++)
+ {
+ rCandidateA.getBezierSegment(a, aCubicA);
+ aCubicA.testAndSolveTrivialBezier();
+ const bool bEdgeAIsCurve(aCubicA.isBezier());
+ const B2DRange aRangeA(aCubicA.getRange());
+
+ for(sal_uInt32 b(0L); b < nEdgeCountB; b++)
+ {
+ rCandidateB.getBezierSegment(b, aCubicB);
+ aCubicB.testAndSolveTrivialBezier();
+ const bool bEdgeBIsCurve(aCubicB.isBezier());
+ const B2DRange aRangeB(aCubicB.getRange());
+
+ // consecutive segments touch of course
+ bool bOverlap = false;
+ if( b > a+1)
+ bOverlap = aRangeA.overlaps(aRangeB);
+ else
+ bOverlap = aRangeA.overlapsMore(aRangeB);
+ if( bOverlap)
+ {
+ if(bEdgeAIsCurve && bEdgeBIsCurve)
+ {
+ // test for bezier-bezier cuts
+ findEdgeCutsTwoBeziers(aCubicA, aCubicB, a, b, rTempPointsA, rTempPointsB);
+ }
+ else if(bEdgeAIsCurve)
+ {
+ // test for bezier-edge cuts
+ findEdgeCutsBezierAndEdge(aCubicA, aCubicB.getStartPoint(), aCubicB.getEndPoint(), a, b, rTempPointsA, rTempPointsB);
+ }
+ else if(bEdgeBIsCurve)
+ {
+ // test for bezier-edge cuts
+ findEdgeCutsBezierAndEdge(aCubicB, aCubicA.getStartPoint(), aCubicA.getEndPoint(), b, a, rTempPointsB, rTempPointsA);
+ }
+ else
+ {
+ // test for simple edge-edge cuts
+ findEdgeCutsTwoEdges(aCubicA.getStartPoint(), aCubicA.getEndPoint(), aCubicB.getStartPoint(), aCubicB.getEndPoint(),
+ a, b, rTempPointsA, rTempPointsB);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ B2DPoint aCurrA(rCandidateA.getB2DPoint(0L));
+
+ for(sal_uInt32 a(0L); a < nEdgeCountA; a++)
+ {
+ const B2DPoint aNextA(rCandidateA.getB2DPoint(a + 1L == nPointCountA ? 0L : a + 1L));
+ const B2DRange aRangeA(aCurrA, aNextA);
+ B2DPoint aCurrB(rCandidateB.getB2DPoint(0L));
+
+ for(sal_uInt32 b(0L); b < nEdgeCountB; b++)
+ {
+ const B2DPoint aNextB(rCandidateB.getB2DPoint(b + 1L == nPointCountB ? 0L : b + 1L));
+ const B2DRange aRangeB(aCurrB, aNextB);
+
+ // consecutive segments touch of course
+ bool bOverlap = false;
+ if( b > a+1)
+ bOverlap = aRangeA.overlaps(aRangeB);
+ else
+ bOverlap = aRangeA.overlapsMore(aRangeB);
+ if( bOverlap)
+ {
+ // test for simple edge-edge cuts
+ findEdgeCutsTwoEdges(aCurrA, aNextA, aCurrB, aNextB, a, b, rTempPointsA, rTempPointsB);
+ }
+
+ // prepare next step
+ aCurrB = aNextB;
+ }
+
+ // prepare next step
+ aCurrA = aNextA;
+ }
+ }
+ }
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ ////////////////////////////////////////////////////////////////////////////////
+
+ B2DPolygon addPointsAtCutsAndTouches(const B2DPolygon& rCandidate)
+ {
+ if(rCandidate.count())
+ {
+ temporaryPointVector aTempPoints;
+
+ findTouches(rCandidate, rCandidate, aTempPoints);
+ findCuts(rCandidate, aTempPoints);
+
+ return mergeTemporaryPointsAndPolygon(rCandidate, aTempPoints);
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon addPointsAtCutsAndTouches(const B2DPolyPolygon& rCandidate, bool bSelfIntersections)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(1L == nCount)
+ {
+ if(bSelfIntersections)
+ {
+ // remove self intersections
+ aRetval.append(addPointsAtCutsAndTouches(rCandidate.getB2DPolygon(0L)));
+ }
+ else
+ {
+ // copy source
+ aRetval = rCandidate;
+ }
+ }
+ else
+ {
+ // first solve self cuts and self touches for all contained single polygons
+ temporaryPolygonData *pTempData = new temporaryPolygonData[nCount];
+ sal_uInt32 a, b;
+
+ for(a = 0L; a < nCount; a++)
+ {
+ if(bSelfIntersections)
+ {
+ // use polygons with solved self intersections
+ pTempData[a].setPolygon(addPointsAtCutsAndTouches(rCandidate.getB2DPolygon(a)));
+ }
+ else
+ {
+ // copy given polygons
+ pTempData[a].setPolygon(rCandidate.getB2DPolygon(a));
+ }
+ }
+
+ // now cuts and touches between the polygons
+ for(a = 0L; a < nCount; a++)
+ {
+ for(b = 0L; b < nCount; b++)
+ {
+ if(a != b)
+ {
+ // look for touches, compare each edge polygon to all other points
+ if(pTempData[a].getRange().overlaps(pTempData[b].getRange()))
+ {
+ findTouches(pTempData[a].getPolygon(), pTempData[b].getPolygon(), pTempData[a].getTemporaryPointVector());
+ }
+ }
+
+ if(a < b)
+ {
+ // look for cuts, compare each edge polygon to following ones
+ if(pTempData[a].getRange().overlaps(pTempData[b].getRange()))
+ {
+ findCuts(pTempData[a].getPolygon(), pTempData[b].getPolygon(), pTempData[a].getTemporaryPointVector(), pTempData[b].getTemporaryPointVector());
+ }
+ }
+ }
+ }
+
+ // consolidate the result
+ for(a = 0L; a < nCount; a++)
+ {
+ aRetval.append(mergeTemporaryPointsAndPolygon(pTempData[a].getPolygon(), pTempData[a].getTemporaryPointVector()));
+ }
+
+ delete[] pTempData;
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ B2DPolygon addPointsAtCutsAndTouches(const B2DPolyPolygon& rMask, const B2DPolygon& rCandidate)
+ {
+ if(rCandidate.count())
+ {
+ temporaryPointVector aTempPoints;
+ temporaryPointVector aTempPointsUnused;
+
+ for(sal_uInt32 a(0L); a < rMask.count(); a++)
+ {
+ const B2DPolygon aPartMask(rMask.getB2DPolygon(a));
+
+ findTouches(rCandidate, aPartMask, aTempPoints);
+ findCuts(rCandidate, aPartMask, aTempPoints, aTempPointsUnused);
+ }
+
+ return mergeTemporaryPointsAndPolygon(rCandidate, aTempPoints);
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon addPointsAtCutsAndTouches(const B2DPolyPolygon& rMask, const B2DPolyPolygon& rCandidate)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(addPointsAtCutsAndTouches(rMask, rCandidate.getB2DPolygon(a)));
+ }
+
+ return aRetval;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate, const B2DPoint& rStart, const B2DPoint& rEnd)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount && !rStart.equal(rEnd))
+ {
+ const B2DRange aPolygonRange(rCandidate.getB2DRange());
+ const B2DRange aEdgeRange(rStart, rEnd);
+
+ if(aPolygonRange.overlaps(aEdgeRange))
+ {
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nCount : nCount - 1);
+ temporaryPointVector aTempPoints;
+ temporaryPointVector aUnusedTempPoints;
+ B2DCubicBezier aCubic;
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ rCandidate.getBezierSegment(a, aCubic);
+ B2DRange aCubicRange(aCubic.getStartPoint(), aCubic.getEndPoint());
+
+ if(aCubic.isBezier())
+ {
+ aCubicRange.expand(aCubic.getControlPointA());
+ aCubicRange.expand(aCubic.getControlPointB());
+
+ if(aCubicRange.overlaps(aEdgeRange))
+ {
+ findEdgeCutsBezierAndEdge(aCubic, rStart, rEnd, a, 0, aTempPoints, aUnusedTempPoints);
+ }
+ }
+ else
+ {
+ if(aCubicRange.overlaps(aEdgeRange))
+ {
+ findEdgeCutsTwoEdges(aCubic.getStartPoint(), aCubic.getEndPoint(), rStart, rEnd, a, 0, aTempPoints, aUnusedTempPoints);
+ }
+ }
+ }
+
+ return mergeTemporaryPointsAndPolygon(rCandidate, aTempPoints);
+ }
+ }
+
+ return rCandidate;
+ }
+
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, const B2DPoint& rStart, const B2DPoint& rEnd)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0); a < rCandidate.count(); a++)
+ {
+ aRetval.append(addPointsAtCuts(rCandidate.getB2DPolygon(a), rStart, rEnd));
+ }
+
+ return aRetval;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate, const B2DPolyPolygon& rPolyMask)
+ {
+ const sal_uInt32 nCountA(rCandidate.count());
+ const sal_uInt32 nCountM(rPolyMask.count());
+
+ if(nCountA && nCountM)
+ {
+ const B2DRange aRangeA(rCandidate.getB2DRange());
+ const B2DRange aRangeM(rPolyMask.getB2DRange());
+
+ if(aRangeA.overlaps(aRangeM))
+ {
+ const sal_uInt32 nEdgeCountA(rCandidate.isClosed() ? nCountA : nCountA - 1);
+ temporaryPointVector aTempPointsA;
+ temporaryPointVector aUnusedTempPointsB;
+
+ for(sal_uInt32 m(0); m < nCountM; m++)
+ {
+ const B2DPolygon aMask(rPolyMask.getB2DPolygon(m));
+ const sal_uInt32 nCountB(aMask.count());
+
+ if(nCountB)
+ {
+ B2DCubicBezier aCubicA;
+ B2DCubicBezier aCubicB;
+
+ for(sal_uInt32 a(0); a < nEdgeCountA; a++)
+ {
+ rCandidate.getBezierSegment(a, aCubicA);
+ const bool bCubicAIsCurve(aCubicA.isBezier());
+ B2DRange aCubicRangeA(aCubicA.getStartPoint(), aCubicA.getEndPoint());
+
+ if(bCubicAIsCurve)
+ {
+ aCubicRangeA.expand(aCubicA.getControlPointA());
+ aCubicRangeA.expand(aCubicA.getControlPointB());
+ }
+
+ for(sal_uInt32 b(0); b < nCountB; b++)
+ {
+ aMask.getBezierSegment(b, aCubicB);
+ const bool bCubicBIsCurve(aCubicB.isBezier());
+ B2DRange aCubicRangeB(aCubicB.getStartPoint(), aCubicB.getEndPoint());
+
+ if(bCubicBIsCurve)
+ {
+ aCubicRangeB.expand(aCubicB.getControlPointA());
+ aCubicRangeB.expand(aCubicB.getControlPointB());
+ }
+
+ if(aCubicRangeA.overlaps(aCubicRangeB))
+ {
+ if(bCubicAIsCurve && bCubicBIsCurve)
+ {
+ findEdgeCutsTwoBeziers(aCubicA, aCubicB, a, b, aTempPointsA, aUnusedTempPointsB);
+ }
+ else if(bCubicAIsCurve)
+ {
+ findEdgeCutsBezierAndEdge(aCubicA, aCubicB.getStartPoint(), aCubicB.getEndPoint(), a, b, aTempPointsA, aUnusedTempPointsB);
+ }
+ else if(bCubicBIsCurve)
+ {
+ findEdgeCutsBezierAndEdge(aCubicB, aCubicA.getStartPoint(), aCubicA.getEndPoint(), b, a, aUnusedTempPointsB, aTempPointsA);
+ }
+ else
+ {
+ findEdgeCutsTwoEdges(aCubicA.getStartPoint(), aCubicA.getEndPoint(), aCubicB.getStartPoint(), aCubicB.getEndPoint(), a, b, aTempPointsA, aUnusedTempPointsB);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return mergeTemporaryPointsAndPolygon(rCandidate, aTempPointsA);
+ }
+ }
+
+ return rCandidate;
+ }
+
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, const B2DPolyPolygon& rMask)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0); a < rCandidate.count(); a++)
+ {
+ aRetval.append(addPointsAtCuts(rCandidate.getB2DPolygon(a), rMask));
+ }
+
+ return aRetval;
+ }
+
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate)
+ {
+ if(rCandidate.count())
+ {
+ temporaryPointVector aTempPoints;
+
+ findCuts(rCandidate, aTempPoints);
+
+ return mergeTemporaryPointsAndPolygon(rCandidate, aTempPoints);
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, bool bSelfIntersections)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(1 == nCount)
+ {
+ if(bSelfIntersections)
+ {
+ // remove self intersections
+ aRetval.append(addPointsAtCuts(rCandidate.getB2DPolygon(0)));
+ }
+ else
+ {
+ // copy source
+ aRetval = rCandidate;
+ }
+ }
+ else
+ {
+ // first solve self cuts for all contained single polygons
+ temporaryPolygonData *pTempData = new temporaryPolygonData[nCount];
+ sal_uInt32 a, b;
+
+ for(a = 0; a < nCount; a++)
+ {
+ if(bSelfIntersections)
+ {
+ // use polygons with solved self intersections
+ pTempData[a].setPolygon(addPointsAtCuts(rCandidate.getB2DPolygon(a)));
+ }
+ else
+ {
+ // copy given polygons
+ pTempData[a].setPolygon(rCandidate.getB2DPolygon(a));
+ }
+ }
+
+ // now cuts and touches between the polygons
+ for(a = 0; a < nCount; a++)
+ {
+ for(b = 0; b < nCount; b++)
+ {
+ if(a < b)
+ {
+ // look for cuts, compare each edge polygon to following ones
+ if(pTempData[a].getRange().overlaps(pTempData[b].getRange()))
+ {
+ findCuts(pTempData[a].getPolygon(), pTempData[b].getPolygon(), pTempData[a].getTemporaryPointVector(), pTempData[b].getTemporaryPointVector());
+ }
+ }
+ }
+ }
+
+ // consolidate the result
+ for(a = 0L; a < nCount; a++)
+ {
+ aRetval.append(mergeTemporaryPointsAndPolygon(pTempData[a].getPolygon(), pTempData[a].getTemporaryPointVector()));
+ }
+
+ delete[] pTempData;
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolygontools.cxx b/basegfx/source/polygon/b2dpolygontools.cxx
new file mode 100644
index 000000000000..5f053b4b22e2
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolygontools.cxx
@@ -0,0 +1,3616 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <osl/diagnose.h>
+#include <rtl/math.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/curve/b2dcubicbezier.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/curve/b2dbeziertools.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <osl/mutex.hxx>
+
+#include <numeric>
+#include <limits>
+
+// #i37443#
+#define ANGLE_BOUND_START_VALUE (2.25)
+#define ANGLE_BOUND_MINIMUM_VALUE (0.1)
+#define COUNT_SUBDIVIDE_DEFAULT (4L)
+#ifdef DBG_UTIL
+static double fAngleBoundStartValue = ANGLE_BOUND_START_VALUE;
+#endif
+#define STEPSPERQUARTER (3)
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ void openWithGeometryChange(B2DPolygon& rCandidate)
+ {
+ if(rCandidate.isClosed())
+ {
+ if(rCandidate.count())
+ {
+ rCandidate.append(rCandidate.getB2DPoint(0));
+
+ if(rCandidate.areControlPointsUsed() && rCandidate.isPrevControlPointUsed(0))
+ {
+ rCandidate.setPrevControlPoint(rCandidate.count() - 1, rCandidate.getPrevControlPoint(0));
+ rCandidate.resetPrevControlPoint(0);
+ }
+ }
+
+ rCandidate.setClosed(false);
+ }
+ }
+
+ void closeWithGeometryChange(B2DPolygon& rCandidate)
+ {
+ if(!rCandidate.isClosed())
+ {
+ while(rCandidate.count() > 1 && rCandidate.getB2DPoint(0) == rCandidate.getB2DPoint(rCandidate.count() - 1))
+ {
+ if(rCandidate.areControlPointsUsed() && rCandidate.isPrevControlPointUsed(rCandidate.count() - 1))
+ {
+ rCandidate.setPrevControlPoint(0, rCandidate.getPrevControlPoint(rCandidate.count() - 1));
+ }
+
+ rCandidate.remove(rCandidate.count() - 1);
+ }
+
+ rCandidate.setClosed(true);
+ }
+ }
+
+ void checkClosed(B2DPolygon& rCandidate)
+ {
+ // #i80172# Removed unnecessary assertion
+ // OSL_ENSURE(!rCandidate.isClosed(), "checkClosed: already closed (!)");
+
+ if(rCandidate.count() > 1 && rCandidate.getB2DPoint(0) == rCandidate.getB2DPoint(rCandidate.count() - 1))
+ {
+ closeWithGeometryChange(rCandidate);
+ }
+ }
+
+ // Get successor and predecessor indices. Returning the same index means there
+ // is none. Same for successor.
+ sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "getIndexOfPredecessor: Access to polygon out of range (!)");
+
+ if(nIndex)
+ {
+ return nIndex - 1L;
+ }
+ else if(rCandidate.count())
+ {
+ return rCandidate.count() - 1L;
+ }
+ else
+ {
+ return nIndex;
+ }
+ }
+
+ sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "getIndexOfPredecessor: Access to polygon out of range (!)");
+
+ if(nIndex + 1L < rCandidate.count())
+ {
+ return nIndex + 1L;
+ }
+ else if(nIndex + 1L == rCandidate.count())
+ {
+ return 0L;
+ }
+ else
+ {
+ return nIndex;
+ }
+ }
+
+ B2VectorOrientation getOrientation(const B2DPolygon& rCandidate)
+ {
+ B2VectorOrientation eRetval(ORIENTATION_NEUTRAL);
+
+ if(rCandidate.count() > 2L || rCandidate.areControlPointsUsed())
+ {
+ const double fSignedArea(getSignedArea(rCandidate));
+
+ if(fTools::equalZero(fSignedArea))
+ {
+ // ORIENTATION_NEUTRAL, already set
+ }
+ if(fSignedArea > 0.0)
+ {
+ eRetval = ORIENTATION_POSITIVE;
+ }
+ else if(fSignedArea < 0.0)
+ {
+ eRetval = ORIENTATION_NEGATIVE;
+ }
+ }
+
+ return eRetval;
+ }
+
+ B2VectorContinuity getContinuityInPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex)
+ {
+ return rCandidate.getContinuityInPoint(nIndex);
+ }
+
+ B2DPolygon adaptiveSubdivideByDistance(const B2DPolygon& rCandidate, double fDistanceBound)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ B2DPolygon aRetval;
+
+ if(nPointCount)
+ {
+ // prepare edge-oriented loop
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ B2DCubicBezier aBezier;
+ aBezier.setStartPoint(rCandidate.getB2DPoint(0));
+
+ // perf: try to avoid too many realloctions by guessing the result's pointcount
+ aRetval.reserve(nPointCount*4);
+
+ // add start point (always)
+ aRetval.append(aBezier.getStartPoint());
+
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ // get next and control points
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aBezier.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+ aBezier.setControlPointA(rCandidate.getNextControlPoint(a));
+ aBezier.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aBezier.testAndSolveTrivialBezier();
+
+ if(aBezier.isBezier())
+ {
+ // add curved edge and generate DistanceBound
+ double fBound(0.0);
+
+ if(0.0 == fDistanceBound)
+ {
+ // If not set, use B2DCubicBezier functionality to guess a rough value
+ const double fRoughLength((aBezier.getEdgeLength() + aBezier.getControlPolygonLength()) / 2.0);
+
+ // take 1/100th of the rough curve length
+ fBound = fRoughLength * 0.01;
+ }
+ else
+ {
+ // use given bound value
+ fBound = fDistanceBound;
+ }
+
+ // make sure bound value is not too small. The base units are 1/100th mm, thus
+ // just make sure it's not smaller then 1/100th of that
+ if(fBound < 0.01)
+ {
+ fBound = 0.01;
+ }
+
+ // call adaptive subdivide which adds edges to aRetval accordingly
+ aBezier.adaptiveSubdivideByDistance(aRetval, fBound);
+ }
+ else
+ {
+ // add non-curved edge
+ aRetval.append(aBezier.getEndPoint());
+ }
+
+ // prepare next step
+ aBezier.setStartPoint(aBezier.getEndPoint());
+ }
+
+ if(rCandidate.isClosed())
+ {
+ // set closed flag and correct last point (which is added double now).
+ closeWithGeometryChange(aRetval);
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolygon adaptiveSubdivideByAngle(const B2DPolygon& rCandidate, double fAngleBound)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ B2DPolygon aRetval;
+
+ if(nPointCount)
+ {
+ // prepare edge-oriented loop
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ B2DCubicBezier aBezier;
+ aBezier.setStartPoint(rCandidate.getB2DPoint(0));
+
+ // perf: try to avoid too many realloctions by guessing the result's pointcount
+ aRetval.reserve(nPointCount*4);
+
+ // add start point (always)
+ aRetval.append(aBezier.getStartPoint());
+
+ // #i37443# prepare convenient AngleBound if none was given
+ if(0.0 == fAngleBound)
+ {
+#ifdef DBG_UTIL
+ fAngleBound = fAngleBoundStartValue;
+#else
+ fAngleBound = ANGLE_BOUND_START_VALUE;
+#endif
+ }
+ else if(fTools::less(fAngleBound, ANGLE_BOUND_MINIMUM_VALUE))
+ {
+ fAngleBound = 0.1;
+ }
+
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ // get next and control points
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aBezier.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+ aBezier.setControlPointA(rCandidate.getNextControlPoint(a));
+ aBezier.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aBezier.testAndSolveTrivialBezier();
+
+ if(aBezier.isBezier())
+ {
+ // call adaptive subdivide
+ aBezier.adaptiveSubdivideByAngle(aRetval, fAngleBound, true);
+ }
+ else
+ {
+ // add non-curved edge
+ aRetval.append(aBezier.getEndPoint());
+ }
+
+ // prepare next step
+ aBezier.setStartPoint(aBezier.getEndPoint());
+ }
+
+ if(rCandidate.isClosed())
+ {
+ // set closed flag and correct last point (which is added double now).
+ closeWithGeometryChange(aRetval);
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolygon adaptiveSubdivideByCount(const B2DPolygon& rCandidate, sal_uInt32 nCount)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ B2DPolygon aRetval;
+
+ if(nPointCount)
+ {
+ // prepare edge-oriented loop
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ B2DCubicBezier aBezier;
+ aBezier.setStartPoint(rCandidate.getB2DPoint(0));
+
+ // perf: try to avoid too many realloctions by guessing the result's pointcount
+ aRetval.reserve(nPointCount*4);
+
+ // add start point (always)
+ aRetval.append(aBezier.getStartPoint());
+
+ // #i37443# prepare convenient count if none was given
+ if(0L == nCount)
+ {
+ nCount = COUNT_SUBDIVIDE_DEFAULT;
+ }
+
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ // get next and control points
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aBezier.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+ aBezier.setControlPointA(rCandidate.getNextControlPoint(a));
+ aBezier.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aBezier.testAndSolveTrivialBezier();
+
+ if(aBezier.isBezier())
+ {
+ // call adaptive subdivide
+ aBezier.adaptiveSubdivideByCount(aRetval, nCount);
+ }
+ else
+ {
+ // add non-curved edge
+ aRetval.append(aBezier.getEndPoint());
+ }
+
+ // prepare next step
+ aBezier.setStartPoint(aBezier.getEndPoint());
+ }
+
+ if(rCandidate.isClosed())
+ {
+ // set closed flag and correct last point (which is added double now).
+ closeWithGeometryChange(aRetval);
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ bool isInside(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder)
+ {
+ const B2DPolygon aCandidate(rCandidate.areControlPointsUsed() ? rCandidate.getDefaultAdaptiveSubdivision() : rCandidate);
+
+ if(bWithBorder && isPointOnPolygon(aCandidate, rPoint, true))
+ {
+ return true;
+ }
+ else
+ {
+ bool bRetval(false);
+ const sal_uInt32 nPointCount(aCandidate.count());
+
+ if(nPointCount)
+ {
+ B2DPoint aCurrentPoint(aCandidate.getB2DPoint(nPointCount - 1L));
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aPreviousPoint(aCurrentPoint);
+ aCurrentPoint = aCandidate.getB2DPoint(a);
+
+ // cross-over in Y?
+ const bool bCompYA(fTools::more(aPreviousPoint.getY(), rPoint.getY()));
+ const bool bCompYB(fTools::more(aCurrentPoint.getY(), rPoint.getY()));
+
+ if(bCompYA != bCompYB)
+ {
+ // cross-over in X?
+ const bool bCompXA(fTools::more(aPreviousPoint.getX(), rPoint.getX()));
+ const bool bCompXB(fTools::more(aCurrentPoint.getX(), rPoint.getX()));
+
+ if(bCompXA == bCompXB)
+ {
+ if(bCompXA)
+ {
+ bRetval = !bRetval;
+ }
+ }
+ else
+ {
+ const double fCompare(
+ aCurrentPoint.getX() - (aCurrentPoint.getY() - rPoint.getY()) *
+ (aPreviousPoint.getX() - aCurrentPoint.getX()) /
+ (aPreviousPoint.getY() - aCurrentPoint.getY()));
+
+ if(fTools::more(fCompare, rPoint.getX()))
+ {
+ bRetval = !bRetval;
+ }
+ }
+ }
+ }
+ }
+
+ return bRetval;
+ }
+ }
+
+ bool isInside(const B2DPolygon& rCandidate, const B2DPolygon& rPolygon, bool bWithBorder)
+ {
+ const B2DPolygon aCandidate(rCandidate.areControlPointsUsed() ? rCandidate.getDefaultAdaptiveSubdivision() : rCandidate);
+ const B2DPolygon aPolygon(rPolygon.areControlPointsUsed() ? rPolygon.getDefaultAdaptiveSubdivision() : rPolygon);
+ const sal_uInt32 nPointCount(aPolygon.count());
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aTestPoint(aPolygon.getB2DPoint(a));
+
+ if(!isInside(aCandidate, aTestPoint, bWithBorder))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ B2DRange getRangeWithControlPoints(const B2DPolygon& rCandidate)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ B2DRange aRetval;
+
+ if(nPointCount)
+ {
+ const bool bControlPointsUsed(rCandidate.areControlPointsUsed());
+
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ aRetval.expand(rCandidate.getB2DPoint(a));
+
+ if(bControlPointsUsed)
+ {
+ aRetval.expand(rCandidate.getNextControlPoint(a));
+ aRetval.expand(rCandidate.getPrevControlPoint(a));
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DRange getRange(const B2DPolygon& rCandidate)
+ {
+ // changed to use internally buffered version at B2DPolygon
+ return rCandidate.getB2DRange();
+ }
+
+ double getSignedArea(const B2DPolygon& rCandidate)
+ {
+ const B2DPolygon aCandidate(rCandidate.areControlPointsUsed() ? rCandidate.getDefaultAdaptiveSubdivision() : rCandidate);
+ double fRetval(0.0);
+ const sal_uInt32 nPointCount(aCandidate.count());
+
+ if(nPointCount > 2)
+ {
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aPreviousPoint(aCandidate.getB2DPoint((!a) ? nPointCount - 1L : a - 1L));
+ const B2DPoint aCurrentPoint(aCandidate.getB2DPoint(a));
+
+ fRetval += aPreviousPoint.getX() * aCurrentPoint.getY();
+ fRetval -= aPreviousPoint.getY() * aCurrentPoint.getX();
+ }
+
+ fRetval /= 2.0;
+
+ // correct to zero if small enough. Also test the quadratic
+ // of the result since the precision is near quadratic due to
+ // the algorithm
+ if(fTools::equalZero(fRetval) || fTools::equalZero(fRetval * fRetval))
+ {
+ fRetval = 0.0;
+ }
+ }
+
+ return fRetval;
+ }
+
+ double getArea(const B2DPolygon& rCandidate)
+ {
+ double fRetval(0.0);
+
+ if(rCandidate.count() > 2 || rCandidate.areControlPointsUsed())
+ {
+ fRetval = getSignedArea(rCandidate);
+ const double fZero(0.0);
+
+ if(fTools::less(fRetval, fZero))
+ {
+ fRetval = -fRetval;
+ }
+ }
+
+ return fRetval;
+ }
+
+ double getEdgeLength(const B2DPolygon& rCandidate, sal_uInt32 nIndex)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ OSL_ENSURE(nIndex < nPointCount, "getEdgeLength: Access to polygon out of range (!)");
+ double fRetval(0.0);
+
+ if(nPointCount)
+ {
+ const sal_uInt32 nNextIndex((nIndex + 1) % nPointCount);
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ B2DCubicBezier aEdge;
+
+ aEdge.setStartPoint(rCandidate.getB2DPoint(nIndex));
+ aEdge.setControlPointA(rCandidate.getNextControlPoint(nIndex));
+ aEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+
+ fRetval = aEdge.getLength();
+ }
+ else
+ {
+ const B2DPoint aCurrent(rCandidate.getB2DPoint(nIndex));
+ const B2DPoint aNext(rCandidate.getB2DPoint(nNextIndex));
+
+ fRetval = B2DVector(aNext - aCurrent).getLength();
+ }
+ }
+
+ return fRetval;
+ }
+
+ double getLength(const B2DPolygon& rCandidate)
+ {
+ double fRetval(0.0);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ B2DCubicBezier aEdge;
+ aEdge.setStartPoint(rCandidate.getB2DPoint(0));
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aEdge.setControlPointA(rCandidate.getNextControlPoint(a));
+ aEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+
+ fRetval += aEdge.getLength();
+ aEdge.setStartPoint(aEdge.getEndPoint());
+ }
+ }
+ else
+ {
+ B2DPoint aCurrent(rCandidate.getB2DPoint(0));
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aNext(rCandidate.getB2DPoint(nNextIndex));
+
+ fRetval += B2DVector(aNext - aCurrent).getLength();
+ aCurrent = aNext;
+ }
+ }
+ }
+
+ return fRetval;
+ }
+
+ B2DPoint getPositionAbsolute(const B2DPolygon& rCandidate, double fDistance, double fLength)
+ {
+ B2DPoint aRetval;
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if( 1L == nPointCount )
+ {
+ // only one point (i.e. no edge) - simply take that point
+ aRetval = rCandidate.getB2DPoint(0);
+ }
+ else if(nPointCount > 1L)
+ {
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ sal_uInt32 nIndex(0L);
+ bool bIndexDone(false);
+
+ // get length if not given
+ if(fTools::equalZero(fLength))
+ {
+ fLength = getLength(rCandidate);
+ }
+
+ if(fTools::less(fDistance, 0.0))
+ {
+ // handle fDistance < 0.0
+ if(rCandidate.isClosed())
+ {
+ // if fDistance < 0.0 increment with multiple of fLength
+ sal_uInt32 nCount(sal_uInt32(-fDistance / fLength));
+ fDistance += double(nCount + 1L) * fLength;
+ }
+ else
+ {
+ // crop to polygon start
+ fDistance = 0.0;
+ bIndexDone = true;
+ }
+ }
+ else if(fTools::moreOrEqual(fDistance, fLength))
+ {
+ // handle fDistance >= fLength
+ if(rCandidate.isClosed())
+ {
+ // if fDistance >= fLength decrement with multiple of fLength
+ sal_uInt32 nCount(sal_uInt32(fDistance / fLength));
+ fDistance -= (double)(nCount) * fLength;
+ }
+ else
+ {
+ // crop to polygon end
+ fDistance = 0.0;
+ nIndex = nEdgeCount;
+ bIndexDone = true;
+ }
+ }
+
+ // look for correct index. fDistance is now [0.0 .. fLength[
+ double fEdgeLength(getEdgeLength(rCandidate, nIndex));
+
+ while(!bIndexDone)
+ {
+ // edge found must be on the half-open range
+ // [0,fEdgeLength).
+ // Note that in theory, we cannot move beyond
+ // the last polygon point, since fDistance>=fLength
+ // is checked above. Unfortunately, with floating-
+ // point calculations, this case might happen.
+ // Handled by nIndex check below
+ if(nIndex < nEdgeCount && fTools::moreOrEqual(fDistance, fEdgeLength))
+ {
+ // go to next edge
+ fDistance -= fEdgeLength;
+ fEdgeLength = getEdgeLength(rCandidate, ++nIndex);
+ }
+ else
+ {
+ // it's on this edge, stop
+ bIndexDone = true;
+ }
+ }
+
+ // get the point using nIndex
+ aRetval = rCandidate.getB2DPoint(nIndex);
+
+ // if fDistance != 0.0, move that length on the edge. The edge
+ // length is in fEdgeLength.
+ if(!fTools::equalZero(fDistance))
+ {
+ if(fTools::moreOrEqual(fDistance, fEdgeLength))
+ {
+ // end point of choosen edge
+ const sal_uInt32 nNextIndex((nIndex + 1) % nPointCount);
+ aRetval = rCandidate.getB2DPoint(nNextIndex);
+ }
+ else if(fTools::equalZero(fDistance))
+ {
+ // start point of choosen edge
+ aRetval = aRetval;
+ }
+ else
+ {
+ // inside edge
+ const sal_uInt32 nNextIndex((nIndex + 1) % nPointCount);
+ const B2DPoint aNextPoint(rCandidate.getB2DPoint(nNextIndex));
+ bool bDone(false);
+
+ // add calculated average value to the return value
+ if(rCandidate.areControlPointsUsed())
+ {
+ // get as bezier segment
+ const B2DCubicBezier aBezierSegment(
+ aRetval, rCandidate.getNextControlPoint(nIndex),
+ rCandidate.getPrevControlPoint(nNextIndex), aNextPoint);
+
+ if(aBezierSegment.isBezier())
+ {
+ // use B2DCubicBezierHelper to bridge the non-linear gap between
+ // length and bezier distances
+ const B2DCubicBezierHelper aBezierSegmentHelper(aBezierSegment);
+ const double fBezierDistance(aBezierSegmentHelper.distanceToRelative(fDistance));
+
+ aRetval = aBezierSegment.interpolatePoint(fBezierDistance);
+ bDone = true;
+ }
+ }
+
+ if(!bDone)
+ {
+ const double fRelativeInEdge(fDistance / fEdgeLength);
+ aRetval = interpolate(aRetval, aNextPoint, fRelativeInEdge);
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPoint getPositionRelative(const B2DPolygon& rCandidate, double fDistance, double fLength)
+ {
+ // get length if not given
+ if(fTools::equalZero(fLength))
+ {
+ fLength = getLength(rCandidate);
+ }
+
+ // multiply fDistance with real length to get absolute position and
+ // use getPositionAbsolute
+ return getPositionAbsolute(rCandidate, fDistance * fLength, fLength);
+ }
+
+ B2DPolygon getSnippetAbsolute(const B2DPolygon& rCandidate, double fFrom, double fTo, double fLength)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ // get length if not given
+ if(fTools::equalZero(fLength))
+ {
+ fLength = getLength(rCandidate);
+ }
+
+ // test and correct fFrom
+ if(fTools::less(fFrom, 0.0))
+ {
+ fFrom = 0.0;
+ }
+
+ // test and correct fTo
+ if(fTools::more(fTo, fLength))
+ {
+ fTo = fLength;
+ }
+
+ // test and correct relationship of fFrom, fTo
+ if(fTools::more(fFrom, fTo))
+ {
+ fFrom = fTo = (fFrom + fTo) / 2.0;
+ }
+
+ if(fTools::equalZero(fFrom) && fTools::equal(fTo, fLength))
+ {
+ // no change, result is the whole polygon
+ return rCandidate;
+ }
+ else
+ {
+ B2DPolygon aRetval;
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ double fPositionOfStart(0.0);
+ bool bStartDone(false);
+ bool bEndDone(false);
+
+ for(sal_uInt32 a(0L); !(bStartDone && bEndDone) && a < nEdgeCount; a++)
+ {
+ const double fEdgeLength(getEdgeLength(rCandidate, a));
+
+ if(!bStartDone)
+ {
+ if(fTools::equalZero(fFrom))
+ {
+ aRetval.append(rCandidate.getB2DPoint(a));
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ aRetval.setNextControlPoint(aRetval.count() - 1, rCandidate.getNextControlPoint(a));
+ }
+
+ bStartDone = true;
+ }
+ else if(fTools::moreOrEqual(fFrom, fPositionOfStart) && fTools::less(fFrom, fPositionOfStart + fEdgeLength))
+ {
+ // calculate and add start point
+ if(fTools::equalZero(fEdgeLength))
+ {
+ aRetval.append(rCandidate.getB2DPoint(a));
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ aRetval.setNextControlPoint(aRetval.count() - 1, rCandidate.getNextControlPoint(a));
+ }
+ }
+ else
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aStart(rCandidate.getB2DPoint(a));
+ const B2DPoint aEnd(rCandidate.getB2DPoint(nNextIndex));
+ bool bDone(false);
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ const B2DCubicBezier aBezierSegment(
+ aStart, rCandidate.getNextControlPoint(a),
+ rCandidate.getPrevControlPoint(nNextIndex), aEnd);
+
+ if(aBezierSegment.isBezier())
+ {
+ // use B2DCubicBezierHelper to bridge the non-linear gap between
+ // length and bezier distances
+ const B2DCubicBezierHelper aBezierSegmentHelper(aBezierSegment);
+ const double fBezierDistance(aBezierSegmentHelper.distanceToRelative(fFrom - fPositionOfStart));
+ B2DCubicBezier aRight;
+
+ aBezierSegment.split(fBezierDistance, 0, &aRight);
+ aRetval.append(aRight.getStartPoint());
+ aRetval.setNextControlPoint(aRetval.count() - 1, aRight.getControlPointA());
+ bDone = true;
+ }
+ }
+
+ if(!bDone)
+ {
+ const double fRelValue((fFrom - fPositionOfStart) / fEdgeLength);
+ aRetval.append(interpolate(aStart, aEnd, fRelValue));
+ }
+ }
+
+ bStartDone = true;
+
+ // if same point, end is done, too.
+ if(fFrom == fTo)
+ {
+ bEndDone = true;
+ }
+ }
+ }
+
+ if(!bEndDone && fTools::moreOrEqual(fTo, fPositionOfStart) && fTools::less(fTo, fPositionOfStart + fEdgeLength))
+ {
+ // calculate and add end point
+ if(fTools::equalZero(fEdgeLength))
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aRetval.append(rCandidate.getB2DPoint(nNextIndex));
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ aRetval.setPrevControlPoint(aRetval.count() - 1, rCandidate.getPrevControlPoint(nNextIndex));
+ }
+ }
+ else
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aStart(rCandidate.getB2DPoint(a));
+ const B2DPoint aEnd(rCandidate.getB2DPoint(nNextIndex));
+ bool bDone(false);
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ const B2DCubicBezier aBezierSegment(
+ aStart, rCandidate.getNextControlPoint(a),
+ rCandidate.getPrevControlPoint(nNextIndex), aEnd);
+
+ if(aBezierSegment.isBezier())
+ {
+ // use B2DCubicBezierHelper to bridge the non-linear gap between
+ // length and bezier distances
+ const B2DCubicBezierHelper aBezierSegmentHelper(aBezierSegment);
+ const double fBezierDistance(aBezierSegmentHelper.distanceToRelative(fTo - fPositionOfStart));
+ B2DCubicBezier aLeft;
+
+ aBezierSegment.split(fBezierDistance, &aLeft, 0);
+ aRetval.append(aLeft.getEndPoint());
+ aRetval.setPrevControlPoint(aRetval.count() - 1, aLeft.getControlPointB());
+ bDone = true;
+ }
+ }
+
+ if(!bDone)
+ {
+ const double fRelValue((fTo - fPositionOfStart) / fEdgeLength);
+ aRetval.append(interpolate(aStart, aEnd, fRelValue));
+ }
+ }
+
+ bEndDone = true;
+ }
+
+ if(!bEndDone)
+ {
+ if(bStartDone)
+ {
+ // add segments end point
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aRetval.append(rCandidate.getB2DPoint(nNextIndex));
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ aRetval.setPrevControlPoint(aRetval.count() - 1, rCandidate.getPrevControlPoint(nNextIndex));
+ aRetval.setNextControlPoint(aRetval.count() - 1, rCandidate.getNextControlPoint(nNextIndex));
+ }
+ }
+
+ // increment fPositionOfStart
+ fPositionOfStart += fEdgeLength;
+ }
+ }
+ return aRetval;
+ }
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolygon getSnippetRelative(const B2DPolygon& rCandidate, double fFrom, double fTo, double fLength)
+ {
+ // get length if not given
+ if(fTools::equalZero(fLength))
+ {
+ fLength = getLength(rCandidate);
+ }
+
+ // multiply distances with real length to get absolute position and
+ // use getSnippetAbsolute
+ return getSnippetAbsolute(rCandidate, fFrom * fLength, fTo * fLength, fLength);
+ }
+
+ CutFlagValue findCut(
+ const B2DPolygon& rCandidate,
+ sal_uInt32 nIndex1, sal_uInt32 nIndex2,
+ CutFlagValue aCutFlags,
+ double* pCut1, double* pCut2)
+ {
+ CutFlagValue aRetval(CUTFLAG_NONE);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nIndex1 < nPointCount && nIndex2 < nPointCount && nIndex1 != nIndex2)
+ {
+ sal_uInt32 nEnd1(getIndexOfSuccessor(nIndex1, rCandidate));
+ sal_uInt32 nEnd2(getIndexOfSuccessor(nIndex2, rCandidate));
+
+ const B2DPoint aStart1(rCandidate.getB2DPoint(nIndex1));
+ const B2DPoint aEnd1(rCandidate.getB2DPoint(nEnd1));
+ const B2DVector aVector1(aEnd1 - aStart1);
+
+ const B2DPoint aStart2(rCandidate.getB2DPoint(nIndex2));
+ const B2DPoint aEnd2(rCandidate.getB2DPoint(nEnd2));
+ const B2DVector aVector2(aEnd2 - aStart2);
+
+ aRetval = findCut(
+ aStart1, aVector1, aStart2, aVector2,
+ aCutFlags, pCut1, pCut2);
+ }
+
+ return aRetval;
+ }
+
+ CutFlagValue findCut(
+ const B2DPolygon& rCandidate1, sal_uInt32 nIndex1,
+ const B2DPolygon& rCandidate2, sal_uInt32 nIndex2,
+ CutFlagValue aCutFlags,
+ double* pCut1, double* pCut2)
+ {
+ CutFlagValue aRetval(CUTFLAG_NONE);
+ const sal_uInt32 nPointCount1(rCandidate1.count());
+ const sal_uInt32 nPointCount2(rCandidate2.count());
+
+ if(nIndex1 < nPointCount1 && nIndex2 < nPointCount2)
+ {
+ sal_uInt32 nEnd1(getIndexOfSuccessor(nIndex1, rCandidate1));
+ sal_uInt32 nEnd2(getIndexOfSuccessor(nIndex2, rCandidate2));
+
+ const B2DPoint aStart1(rCandidate1.getB2DPoint(nIndex1));
+ const B2DPoint aEnd1(rCandidate1.getB2DPoint(nEnd1));
+ const B2DVector aVector1(aEnd1 - aStart1);
+
+ const B2DPoint aStart2(rCandidate2.getB2DPoint(nIndex2));
+ const B2DPoint aEnd2(rCandidate2.getB2DPoint(nEnd2));
+ const B2DVector aVector2(aEnd2 - aStart2);
+
+ aRetval = findCut(
+ aStart1, aVector1, aStart2, aVector2,
+ aCutFlags, pCut1, pCut2);
+ }
+
+ return aRetval;
+ }
+
+ CutFlagValue findCut(
+ const B2DPoint& rEdge1Start, const B2DVector& rEdge1Delta,
+ const B2DPoint& rEdge2Start, const B2DVector& rEdge2Delta,
+ CutFlagValue aCutFlags,
+ double* pCut1, double* pCut2)
+ {
+ CutFlagValue aRetval(CUTFLAG_NONE);
+ double fCut1(0.0);
+ double fCut2(0.0);
+ bool bFinished(!((bool)(aCutFlags & CUTFLAG_ALL)));
+
+ // test for same points?
+ if(!bFinished
+ && (aCutFlags & (CUTFLAG_START1|CUTFLAG_END1))
+ && (aCutFlags & (CUTFLAG_START2|CUTFLAG_END2)))
+ {
+ // same startpoint?
+ if(!bFinished && (aCutFlags & (CUTFLAG_START1|CUTFLAG_START2)) == (CUTFLAG_START1|CUTFLAG_START2))
+ {
+ if(rEdge1Start.equal(rEdge2Start))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_START1|CUTFLAG_START2);
+ }
+ }
+
+ // same endpoint?
+ if(!bFinished && (aCutFlags & (CUTFLAG_END1|CUTFLAG_END2)) == (CUTFLAG_END1|CUTFLAG_END2))
+ {
+ const B2DPoint aEnd1(rEdge1Start + rEdge1Delta);
+ const B2DPoint aEnd2(rEdge2Start + rEdge2Delta);
+
+ if(aEnd1.equal(aEnd2))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_END1|CUTFLAG_END2);
+ fCut1 = fCut2 = 1.0;
+ }
+ }
+
+ // startpoint1 == endpoint2?
+ if(!bFinished && (aCutFlags & (CUTFLAG_START1|CUTFLAG_END2)) == (CUTFLAG_START1|CUTFLAG_END2))
+ {
+ const B2DPoint aEnd2(rEdge2Start + rEdge2Delta);
+
+ if(rEdge1Start.equal(aEnd2))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_START1|CUTFLAG_END2);
+ fCut1 = 0.0;
+ fCut2 = 1.0;
+ }
+ }
+
+ // startpoint2 == endpoint1?
+ if(!bFinished&& (aCutFlags & (CUTFLAG_START2|CUTFLAG_END1)) == (CUTFLAG_START2|CUTFLAG_END1))
+ {
+ const B2DPoint aEnd1(rEdge1Start + rEdge1Delta);
+
+ if(rEdge2Start.equal(aEnd1))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_START2|CUTFLAG_END1);
+ fCut1 = 1.0;
+ fCut2 = 0.0;
+ }
+ }
+ }
+
+ if(!bFinished && (aCutFlags & CUTFLAG_LINE))
+ {
+ if(!bFinished && (aCutFlags & CUTFLAG_START1))
+ {
+ // start1 on line 2 ?
+ if(isPointOnEdge(rEdge1Start, rEdge2Start, rEdge2Delta, &fCut2))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_LINE|CUTFLAG_START1);
+ }
+ }
+
+ if(!bFinished && (aCutFlags & CUTFLAG_START2))
+ {
+ // start2 on line 1 ?
+ if(isPointOnEdge(rEdge2Start, rEdge1Start, rEdge1Delta, &fCut1))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_LINE|CUTFLAG_START2);
+ }
+ }
+
+ if(!bFinished && (aCutFlags & CUTFLAG_END1))
+ {
+ // end1 on line 2 ?
+ const B2DPoint aEnd1(rEdge1Start + rEdge1Delta);
+
+ if(isPointOnEdge(aEnd1, rEdge2Start, rEdge2Delta, &fCut2))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_LINE|CUTFLAG_END1);
+ }
+ }
+
+ if(!bFinished && (aCutFlags & CUTFLAG_END2))
+ {
+ // end2 on line 1 ?
+ const B2DPoint aEnd2(rEdge2Start + rEdge2Delta);
+
+ if(isPointOnEdge(aEnd2, rEdge1Start, rEdge1Delta, &fCut1))
+ {
+ bFinished = true;
+ aRetval = (CUTFLAG_LINE|CUTFLAG_END2);
+ }
+ }
+
+ if(!bFinished)
+ {
+ // cut in line1, line2 ?
+ fCut1 = (rEdge1Delta.getX() * rEdge2Delta.getY()) - (rEdge1Delta.getY() * rEdge2Delta.getX());
+
+ if(!fTools::equalZero(fCut1))
+ {
+ fCut1 = (rEdge2Delta.getY() * (rEdge2Start.getX() - rEdge1Start.getX())
+ + rEdge2Delta.getX() * (rEdge1Start.getY() - rEdge2Start.getY())) / fCut1;
+
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ // inside parameter range edge1 AND fCut2 is calcable
+ if(fTools::more(fCut1, fZero) && fTools::less(fCut1, fOne)
+ && (!fTools::equalZero(rEdge2Delta.getX()) || !fTools::equalZero(rEdge2Delta.getY())))
+ {
+ // take the mopre precise calculation of the two possible
+ if(fabs(rEdge2Delta.getX()) > fabs(rEdge2Delta.getY()))
+ {
+ fCut2 = (rEdge1Start.getX() + fCut1
+ * rEdge1Delta.getX() - rEdge2Start.getX()) / rEdge2Delta.getX();
+ }
+ else
+ {
+ fCut2 = (rEdge1Start.getY() + fCut1
+ * rEdge1Delta.getY() - rEdge2Start.getY()) / rEdge2Delta.getY();
+ }
+
+ // inside parameter range edge2, too
+ if(fTools::more(fCut2, fZero) && fTools::less(fCut2, fOne))
+ {
+ bFinished = true;
+ aRetval = CUTFLAG_LINE;
+ }
+ }
+ }
+ }
+ }
+
+ // copy values if wanted
+ if(pCut1)
+ {
+ *pCut1 = fCut1;
+ }
+
+ if(pCut2)
+ {
+ *pCut2 = fCut2;
+ }
+
+ return aRetval;
+ }
+
+ bool isPointOnEdge(
+ const B2DPoint& rPoint,
+ const B2DPoint& rEdgeStart,
+ const B2DVector& rEdgeDelta,
+ double* pCut)
+ {
+ bool bDeltaXIsZero(fTools::equalZero(rEdgeDelta.getX()));
+ bool bDeltaYIsZero(fTools::equalZero(rEdgeDelta.getY()));
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ if(bDeltaXIsZero && bDeltaYIsZero)
+ {
+ // no line, just a point
+ return false;
+ }
+ else if(bDeltaXIsZero)
+ {
+ // vertical line
+ if(fTools::equal(rPoint.getX(), rEdgeStart.getX()))
+ {
+ double fValue = (rPoint.getY() - rEdgeStart.getY()) / rEdgeDelta.getY();
+
+ if(fTools::more(fValue, fZero) && fTools::less(fValue, fOne))
+ {
+ if(pCut)
+ {
+ *pCut = fValue;
+ }
+
+ return true;
+ }
+ }
+ }
+ else if(bDeltaYIsZero)
+ {
+ // horizontal line
+ if(fTools::equal(rPoint.getY(), rEdgeStart.getY()))
+ {
+ double fValue = (rPoint.getX() - rEdgeStart.getX()) / rEdgeDelta.getX();
+
+ if(fTools::more(fValue, fZero) && fTools::less(fValue, fOne))
+ {
+ if(pCut)
+ {
+ *pCut = fValue;
+ }
+
+ return true;
+ }
+ }
+ }
+ else
+ {
+ // any angle line
+ double fTOne = (rPoint.getX() - rEdgeStart.getX()) / rEdgeDelta.getX();
+ double fTTwo = (rPoint.getY() - rEdgeStart.getY()) / rEdgeDelta.getY();
+
+ if(fTools::equal(fTOne, fTTwo))
+ {
+ // same parameter representation, point is on line. Take
+ // middle value for better results
+ double fValue = (fTOne + fTTwo) / 2.0;
+
+ if(fTools::more(fValue, fZero) && fTools::less(fValue, fOne))
+ {
+ // point is inside line bounds, too
+ if(pCut)
+ {
+ *pCut = fValue;
+ }
+
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ void applyLineDashing(const B2DPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B2DPolyPolygon* pLineTarget, B2DPolyPolygon* pGapTarget, double fDotDashLength)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ const sal_uInt32 nDotDashCount(rDotDashArray.size());
+
+ if(fTools::lessOrEqual(fDotDashLength, 0.0))
+ {
+ fDotDashLength = ::std::accumulate(rDotDashArray.begin(), rDotDashArray.end(), 0.0);
+ }
+
+ if(fTools::more(fDotDashLength, 0.0) && (pLineTarget || pGapTarget) && nPointCount)
+ {
+ // clear targets
+ if(pLineTarget)
+ {
+ pLineTarget->clear();
+ }
+
+ if(pGapTarget)
+ {
+ pGapTarget->clear();
+ }
+
+ // prepare current edge's start
+ B2DCubicBezier aCurrentEdge;
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ aCurrentEdge.setStartPoint(rCandidate.getB2DPoint(0));
+
+ // prepare DotDashArray iteration and the line/gap switching bool
+ sal_uInt32 nDotDashIndex(0);
+ bool bIsLine(true);
+ double fDotDashMovingLength(rDotDashArray[0]);
+ B2DPolygon aSnippet;
+
+ // iterate over all edges
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ // update current edge (fill in C1, C2 and end point)
+ double fLastDotDashMovingLength(0.0);
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aCurrentEdge.setControlPointA(rCandidate.getNextControlPoint(a));
+ aCurrentEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aCurrentEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+
+ // check if we have a trivial bezier segment -> possible fallback to edge
+ aCurrentEdge.testAndSolveTrivialBezier();
+
+ if(aCurrentEdge.isBezier())
+ {
+ // bezier segment
+ const B2DCubicBezierHelper aCubicBezierHelper(aCurrentEdge);
+ const double fEdgeLength(aCubicBezierHelper.getLength());
+
+ if(!fTools::equalZero(fEdgeLength))
+ {
+ while(fTools::less(fDotDashMovingLength, fEdgeLength))
+ {
+ // new split is inside edge, create and append snippet [fLastDotDashMovingLength, fDotDashMovingLength]
+ const bool bHandleLine(bIsLine && pLineTarget);
+ const bool bHandleGap(!bIsLine && pGapTarget);
+
+ if(bHandleLine || bHandleGap)
+ {
+ const double fBezierSplitStart(aCubicBezierHelper.distanceToRelative(fLastDotDashMovingLength));
+ const double fBezierSplitEnd(aCubicBezierHelper.distanceToRelative(fDotDashMovingLength));
+ B2DCubicBezier aBezierSnippet(aCurrentEdge.snippet(fBezierSplitStart, fBezierSplitEnd));
+
+ if(!aSnippet.count())
+ {
+ aSnippet.append(aBezierSnippet.getStartPoint());
+ }
+
+ aSnippet.appendBezierSegment(aBezierSnippet.getControlPointA(), aBezierSnippet.getControlPointB(), aBezierSnippet.getEndPoint());
+
+ if(bHandleLine)
+ {
+ pLineTarget->append(aSnippet);
+ }
+ else
+ {
+ pGapTarget->append(aSnippet);
+ }
+
+ aSnippet.clear();
+ }
+
+ // prepare next DotDashArray step and flip line/gap flag
+ fLastDotDashMovingLength = fDotDashMovingLength;
+ fDotDashMovingLength += rDotDashArray[(++nDotDashIndex) % nDotDashCount];
+ bIsLine = !bIsLine;
+ }
+
+ // append closing snippet [fLastDotDashMovingLength, fEdgeLength]
+ const bool bHandleLine(bIsLine && pLineTarget);
+ const bool bHandleGap(!bIsLine && pGapTarget);
+
+ if(bHandleLine || bHandleGap)
+ {
+ B2DCubicBezier aRight;
+ const double fBezierSplit(aCubicBezierHelper.distanceToRelative(fLastDotDashMovingLength));
+
+ aCurrentEdge.split(fBezierSplit, 0, &aRight);
+
+ if(!aSnippet.count())
+ {
+ aSnippet.append(aRight.getStartPoint());
+ }
+
+ aSnippet.appendBezierSegment(aRight.getControlPointA(), aRight.getControlPointB(), aRight.getEndPoint());
+ }
+
+ // prepare move to next edge
+ fDotDashMovingLength -= fEdgeLength;
+ }
+ }
+ else
+ {
+ // simple edge
+ const double fEdgeLength(aCurrentEdge.getEdgeLength());
+
+ if(!fTools::equalZero(fEdgeLength))
+ {
+ while(fTools::less(fDotDashMovingLength, fEdgeLength))
+ {
+ // new split is inside edge, create and append snippet [fLastDotDashMovingLength, fDotDashMovingLength]
+ const bool bHandleLine(bIsLine && pLineTarget);
+ const bool bHandleGap(!bIsLine && pGapTarget);
+
+ if(bHandleLine || bHandleGap)
+ {
+ if(!aSnippet.count())
+ {
+ aSnippet.append(interpolate(aCurrentEdge.getStartPoint(), aCurrentEdge.getEndPoint(), fLastDotDashMovingLength / fEdgeLength));
+ }
+
+ aSnippet.append(interpolate(aCurrentEdge.getStartPoint(), aCurrentEdge.getEndPoint(), fDotDashMovingLength / fEdgeLength));
+
+ if(bHandleLine)
+ {
+ pLineTarget->append(aSnippet);
+ }
+ else
+ {
+ pGapTarget->append(aSnippet);
+ }
+
+ aSnippet.clear();
+ }
+
+ // prepare next DotDashArray step and flip line/gap flag
+ fLastDotDashMovingLength = fDotDashMovingLength;
+ fDotDashMovingLength += rDotDashArray[(++nDotDashIndex) % nDotDashCount];
+ bIsLine = !bIsLine;
+ }
+
+ // append snippet [fLastDotDashMovingLength, fEdgeLength]
+ const bool bHandleLine(bIsLine && pLineTarget);
+ const bool bHandleGap(!bIsLine && pGapTarget);
+
+ if(bHandleLine || bHandleGap)
+ {
+ if(!aSnippet.count())
+ {
+ aSnippet.append(interpolate(aCurrentEdge.getStartPoint(), aCurrentEdge.getEndPoint(), fLastDotDashMovingLength / fEdgeLength));
+ }
+
+ aSnippet.append(aCurrentEdge.getEndPoint());
+ }
+
+ // prepare move to next edge
+ fDotDashMovingLength -= fEdgeLength;
+ }
+ }
+
+ // prepare next edge step (end point gets new start point)
+ aCurrentEdge.setStartPoint(aCurrentEdge.getEndPoint());
+ }
+
+ // append last intermediate results (if exists)
+ if(aSnippet.count())
+ {
+ if(bIsLine && pLineTarget)
+ {
+ pLineTarget->append(aSnippet);
+ }
+ else if(!bIsLine && pGapTarget)
+ {
+ pGapTarget->append(aSnippet);
+ }
+ }
+
+ // check if start and end polygon may be merged
+ if(pLineTarget)
+ {
+ const sal_uInt32 nCount(pLineTarget->count());
+
+ if(nCount > 1)
+ {
+ // these polygons were created above, there exists none with less than two points,
+ // thus dircet point access below is allowed
+ const B2DPolygon aFirst(pLineTarget->getB2DPolygon(0));
+ B2DPolygon aLast(pLineTarget->getB2DPolygon(nCount - 1));
+
+ if(aFirst.getB2DPoint(0).equal(aLast.getB2DPoint(aLast.count() - 1)))
+ {
+ // start of first and end of last are the same -> merge them
+ aLast.append(aFirst);
+ aLast.removeDoublePoints();
+ pLineTarget->setB2DPolygon(0, aLast);
+ pLineTarget->remove(nCount - 1);
+ }
+ }
+ }
+
+ if(pGapTarget)
+ {
+ const sal_uInt32 nCount(pGapTarget->count());
+
+ if(nCount > 1)
+ {
+ // these polygons were created above, there exists none with less than two points,
+ // thus dircet point access below is allowed
+ const B2DPolygon aFirst(pGapTarget->getB2DPolygon(0));
+ B2DPolygon aLast(pGapTarget->getB2DPolygon(nCount - 1));
+
+ if(aFirst.getB2DPoint(0).equal(aLast.getB2DPoint(aLast.count() - 1)))
+ {
+ // start of first and end of last are the same -> merge them
+ aLast.append(aFirst);
+ aLast.removeDoublePoints();
+ pGapTarget->setB2DPolygon(0, aLast);
+ pGapTarget->remove(nCount - 1);
+ }
+ }
+ }
+ }
+ else
+ {
+ // parameters make no sense, just add source to targets
+ if(pLineTarget)
+ {
+ pLineTarget->append(rCandidate);
+ }
+
+ if(pGapTarget)
+ {
+ pGapTarget->append(rCandidate);
+ }
+ }
+ }
+
+ // test if point is inside epsilon-range around an edge defined
+ // by the two given points. Can be used for HitTesting. The epsilon-range
+ // is defined to be the rectangle centered to the given edge, using height
+ // 2 x fDistance, and the circle around both points with radius fDistance.
+ bool isInEpsilonRange(const B2DPoint& rEdgeStart, const B2DPoint& rEdgeEnd, const B2DPoint& rTestPosition, double fDistance)
+ {
+ // build edge vector
+ const B2DVector aEdge(rEdgeEnd - rEdgeStart);
+ bool bDoDistanceTestStart(false);
+ bool bDoDistanceTestEnd(false);
+
+ if(aEdge.equalZero())
+ {
+ // no edge, just a point. Do one of the distance tests.
+ bDoDistanceTestStart = true;
+ }
+ else
+ {
+ // edge has a length. Create perpendicular vector.
+ const B2DVector aPerpend(getPerpendicular(aEdge));
+ double fCut(
+ (aPerpend.getY() * (rTestPosition.getX() - rEdgeStart.getX())
+ + aPerpend.getX() * (rEdgeStart.getY() - rTestPosition.getY())) /
+ (aEdge.getX() * aEdge.getX() + aEdge.getY() * aEdge.getY()));
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ if(fTools::less(fCut, fZero))
+ {
+ // left of rEdgeStart
+ bDoDistanceTestStart = true;
+ }
+ else if(fTools::more(fCut, fOne))
+ {
+ // right of rEdgeEnd
+ bDoDistanceTestEnd = true;
+ }
+ else
+ {
+ // inside line [0.0 .. 1.0]
+ const B2DPoint aCutPoint(interpolate(rEdgeStart, rEdgeEnd, fCut));
+ const B2DVector aDelta(rTestPosition - aCutPoint);
+ const double fDistanceSquare(aDelta.scalar(aDelta));
+
+ if(fDistanceSquare <= fDistance * fDistance)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ if(bDoDistanceTestStart)
+ {
+ const B2DVector aDelta(rTestPosition - rEdgeStart);
+ const double fDistanceSquare(aDelta.scalar(aDelta));
+
+ if(fDistanceSquare <= fDistance * fDistance)
+ {
+ return true;
+ }
+ }
+ else if(bDoDistanceTestEnd)
+ {
+ const B2DVector aDelta(rTestPosition - rEdgeEnd);
+ const double fDistanceSquare(aDelta.scalar(aDelta));
+
+ if(fDistanceSquare <= fDistance * fDistance)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ // test if point is inside epsilon-range around the given Polygon. Can be used
+ // for HitTesting. The epsilon-range is defined to be the tube around the polygon
+ // with distance fDistance and rounded edges (start and end point).
+ bool isInEpsilonRange(const B2DPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance)
+ {
+ // force to non-bezier polygon
+ const B2DPolygon aCandidate(rCandidate.getDefaultAdaptiveSubdivision());
+ const sal_uInt32 nPointCount(aCandidate.count());
+
+ if(nPointCount)
+ {
+ const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ B2DPoint aCurrent(aCandidate.getB2DPoint(0));
+
+ if(nEdgeCount)
+ {
+ // edges
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aNext(aCandidate.getB2DPoint(nNextIndex));
+
+ if(isInEpsilonRange(aCurrent, aNext, rTestPosition, fDistance))
+ {
+ return true;
+ }
+
+ // prepare next step
+ aCurrent = aNext;
+ }
+ }
+ else
+ {
+ // no edges, but points -> not closed. Check single point. Just
+ // use isInEpsilonRange with twice the same point, it handles those well
+ if(isInEpsilonRange(aCurrent, aCurrent, rTestPosition, fDistance))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadius )
+ {
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ if(fTools::lessOrEqual(fRadius, fZero))
+ {
+ // no radius, use rectangle
+ return createPolygonFromRect( rRect );
+ }
+ else if(fTools::moreOrEqual(fRadius, fOne))
+ {
+ // full radius, use ellipse
+ const B2DPoint aCenter(rRect.getCenter());
+ const double fRadiusX(rRect.getWidth() / 2.0);
+ const double fRadiusY(rRect.getHeight() / 2.0);
+
+ return createPolygonFromEllipse( aCenter, fRadiusX, fRadiusY );
+ }
+ else
+ {
+ // create rectangle with two radii between ]0.0 .. 1.0[
+ return createPolygonFromRect( rRect, fRadius, fRadius );
+ }
+ }
+
+ B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadiusX, double fRadiusY )
+ {
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ // crop to useful values
+ if(fTools::less(fRadiusX, fZero))
+ {
+ fRadiusX = fZero;
+ }
+ else if(fTools::more(fRadiusX, fOne))
+ {
+ fRadiusX = fOne;
+ }
+
+ if(fTools::less(fRadiusY, fZero))
+ {
+ fRadiusY = fZero;
+ }
+ else if(fTools::more(fRadiusY, fOne))
+ {
+ fRadiusY = fOne;
+ }
+
+ if(fZero == fRadiusX || fZero == fRadiusY)
+ {
+ B2DPolygon aRetval;
+
+ // at least in one direction no radius, use rectangle.
+ // Do not use createPolygonFromRect() here since original
+ // creator (historical reasons) still creates a start point at the
+ // bottom center, so do the same here to get the same line patterns.
+ // Due to this the order of points is different, too.
+ const B2DPoint aBottomCenter(rRect.getCenter().getX(), rRect.getMaxY());
+ aRetval.append(aBottomCenter);
+
+ aRetval.append( B2DPoint( rRect.getMinX(), rRect.getMaxY() ) );
+ aRetval.append( B2DPoint( rRect.getMinX(), rRect.getMinY() ) );
+ aRetval.append( B2DPoint( rRect.getMaxX(), rRect.getMinY() ) );
+ aRetval.append( B2DPoint( rRect.getMaxX(), rRect.getMaxY() ) );
+
+ // close
+ aRetval.setClosed( true );
+
+ return aRetval;
+ }
+ else if(fOne == fRadiusX && fOne == fRadiusY)
+ {
+ // in both directions full radius, use ellipse
+ const B2DPoint aCenter(rRect.getCenter());
+ const double fRectRadiusX(rRect.getWidth() / 2.0);
+ const double fRectRadiusY(rRect.getHeight() / 2.0);
+
+ return createPolygonFromEllipse( aCenter, fRectRadiusX, fRectRadiusY );
+ }
+ else
+ {
+ B2DPolygon aRetval;
+ const double fBowX((rRect.getWidth() / 2.0) * fRadiusX);
+ const double fBowY((rRect.getHeight() / 2.0) * fRadiusY);
+ const double fKappa((M_SQRT2 - 1.0) * 4.0 / 3.0);
+
+ // create start point at bottom center
+ if(fOne != fRadiusX)
+ {
+ const B2DPoint aBottomCenter(rRect.getCenter().getX(), rRect.getMaxY());
+ aRetval.append(aBottomCenter);
+ }
+
+ // create first bow
+ {
+ const B2DPoint aBottomRight(rRect.getMaxX(), rRect.getMaxY());
+ const B2DPoint aStart(aBottomRight + B2DPoint(-fBowX, 0.0));
+ const B2DPoint aStop(aBottomRight + B2DPoint(0.0, -fBowY));
+ aRetval.append(aStart);
+ aRetval.appendBezierSegment(interpolate(aStart, aBottomRight, fKappa), interpolate(aStop, aBottomRight, fKappa), aStop);
+ }
+
+ // create second bow
+ {
+ const B2DPoint aTopRight(rRect.getMaxX(), rRect.getMinY());
+ const B2DPoint aStart(aTopRight + B2DPoint(0.0, fBowY));
+ const B2DPoint aStop(aTopRight + B2DPoint(-fBowX, 0.0));
+ aRetval.append(aStart);
+ aRetval.appendBezierSegment(interpolate(aStart, aTopRight, fKappa), interpolate(aStop, aTopRight, fKappa), aStop);
+ }
+
+ // create third bow
+ {
+ const B2DPoint aTopLeft(rRect.getMinX(), rRect.getMinY());
+ const B2DPoint aStart(aTopLeft + B2DPoint(fBowX, 0.0));
+ const B2DPoint aStop(aTopLeft + B2DPoint(0.0, fBowY));
+ aRetval.append(aStart);
+ aRetval.appendBezierSegment(interpolate(aStart, aTopLeft, fKappa), interpolate(aStop, aTopLeft, fKappa), aStop);
+ }
+
+ // create forth bow
+ {
+ const B2DPoint aBottomLeft(rRect.getMinX(), rRect.getMaxY());
+ const B2DPoint aStart(aBottomLeft + B2DPoint(0.0, -fBowY));
+ const B2DPoint aStop(aBottomLeft + B2DPoint(fBowX, 0.0));
+ aRetval.append(aStart);
+ aRetval.appendBezierSegment(interpolate(aStart, aBottomLeft, fKappa), interpolate(aStop, aBottomLeft, fKappa), aStop);
+ }
+
+ // close
+ aRetval.setClosed( true );
+
+ // remove double created points if there are extreme radii envolved
+ if(fOne == fRadiusX || fOne == fRadiusY)
+ {
+ aRetval.removeDoublePoints();
+ }
+
+ return aRetval;
+ }
+ }
+
+ B2DPolygon createPolygonFromRect( const B2DRectangle& rRect )
+ {
+ B2DPolygon aRetval;
+
+ aRetval.append( B2DPoint( rRect.getMinX(), rRect.getMinY() ) );
+ aRetval.append( B2DPoint( rRect.getMaxX(), rRect.getMinY() ) );
+ aRetval.append( B2DPoint( rRect.getMaxX(), rRect.getMaxY() ) );
+ aRetval.append( B2DPoint( rRect.getMinX(), rRect.getMaxY() ) );
+
+ // close
+ aRetval.setClosed( true );
+
+ return aRetval;
+ }
+
+ B2DPolygon createUnitPolygon()
+ {
+ static B2DPolygon aRetval;
+
+ if(!aRetval.count())
+ {
+ aRetval.append( B2DPoint( 0.0, 0.0 ) );
+ aRetval.append( B2DPoint( 1.0, 0.0 ) );
+ aRetval.append( B2DPoint( 1.0, 1.0 ) );
+ aRetval.append( B2DPoint( 0.0, 1.0 ) );
+
+ // close
+ aRetval.setClosed( true );
+ }
+
+ return aRetval;
+ }
+
+ B2DPolygon createPolygonFromCircle( const B2DPoint& rCenter, double fRadius )
+ {
+ return createPolygonFromEllipse( rCenter, fRadius, fRadius );
+ }
+
+ B2DPolygon impCreateUnitCircle(sal_uInt32 nStartQuadrant)
+ {
+ B2DPolygon aUnitCircle;
+ const double fKappa((M_SQRT2 - 1.0) * 4.0 / 3.0);
+ const double fScaledKappa(fKappa * (1.0 / STEPSPERQUARTER));
+ const B2DHomMatrix aRotateMatrix(createRotateB2DHomMatrix(F_PI2 / STEPSPERQUARTER));
+
+ B2DPoint aPoint(1.0, 0.0);
+ B2DPoint aForward(1.0, fScaledKappa);
+ B2DPoint aBackward(1.0, -fScaledKappa);
+
+ if(0 != nStartQuadrant)
+ {
+ const B2DHomMatrix aQuadrantMatrix(createRotateB2DHomMatrix(F_PI2 * (nStartQuadrant % 4)));
+ aPoint *= aQuadrantMatrix;
+ aBackward *= aQuadrantMatrix;
+ aForward *= aQuadrantMatrix;
+ }
+
+ aUnitCircle.append(aPoint);
+
+ for(sal_uInt32 a(0); a < STEPSPERQUARTER * 4; a++)
+ {
+ aPoint *= aRotateMatrix;
+ aBackward *= aRotateMatrix;
+ aUnitCircle.appendBezierSegment(aForward, aBackward, aPoint);
+ aForward *= aRotateMatrix;
+ }
+
+ aUnitCircle.setClosed(true);
+ aUnitCircle.removeDoublePoints();
+
+ return aUnitCircle;
+ }
+
+ B2DPolygon createPolygonFromUnitCircle(sal_uInt32 nStartQuadrant)
+ {
+ switch(nStartQuadrant % 4)
+ {
+ case 1 :
+ {
+ static B2DPolygon aUnitCircleStartQuadrantOne;
+
+ if(!aUnitCircleStartQuadrantOne.count())
+ {
+ ::osl::Mutex m_mutex;
+ aUnitCircleStartQuadrantOne = impCreateUnitCircle(1);
+ }
+
+ return aUnitCircleStartQuadrantOne;
+ }
+ case 2 :
+ {
+ static B2DPolygon aUnitCircleStartQuadrantTwo;
+
+ if(!aUnitCircleStartQuadrantTwo.count())
+ {
+ ::osl::Mutex m_mutex;
+ aUnitCircleStartQuadrantTwo = impCreateUnitCircle(2);
+ }
+
+ return aUnitCircleStartQuadrantTwo;
+ }
+ case 3 :
+ {
+ static B2DPolygon aUnitCircleStartQuadrantThree;
+
+ if(!aUnitCircleStartQuadrantThree.count())
+ {
+ ::osl::Mutex m_mutex;
+ aUnitCircleStartQuadrantThree = impCreateUnitCircle(3);
+ }
+
+ return aUnitCircleStartQuadrantThree;
+ }
+ default : // case 0 :
+ {
+ static B2DPolygon aUnitCircleStartQuadrantZero;
+
+ if(!aUnitCircleStartQuadrantZero.count())
+ {
+ ::osl::Mutex m_mutex;
+ aUnitCircleStartQuadrantZero = impCreateUnitCircle(0);
+ }
+
+ return aUnitCircleStartQuadrantZero;
+ }
+ }
+ }
+
+ B2DPolygon createPolygonFromEllipse( const B2DPoint& rCenter, double fRadiusX, double fRadiusY )
+ {
+ B2DPolygon aRetval(createPolygonFromUnitCircle());
+ const B2DHomMatrix aMatrix(createScaleTranslateB2DHomMatrix(fRadiusX, fRadiusY, rCenter.getX(), rCenter.getY()));
+
+ aRetval.transform(aMatrix);
+
+ return aRetval;
+ }
+
+ B2DPolygon createPolygonFromUnitEllipseSegment( double fStart, double fEnd )
+ {
+ B2DPolygon aRetval;
+
+ // truncate fStart, fEnd to a range of [0.0 .. F_2PI[ where F_2PI
+ // falls back to 0.0 to ensure a unique definition
+ if(fTools::less(fStart, 0.0))
+ {
+ fStart = 0.0;
+ }
+
+ if(fTools::moreOrEqual(fStart, F_2PI))
+ {
+ fStart = 0.0;
+ }
+
+ if(fTools::less(fEnd, 0.0))
+ {
+ fEnd = 0.0;
+ }
+
+ if(fTools::moreOrEqual(fEnd, F_2PI))
+ {
+ fEnd = 0.0;
+ }
+
+ if(fTools::equal(fStart, fEnd))
+ {
+ // same start and end angle, add single point
+ aRetval.append(B2DPoint(cos(fStart), sin(fStart)));
+ }
+ else
+ {
+ const sal_uInt32 nSegments(STEPSPERQUARTER * 4);
+ const double fAnglePerSegment(F_PI2 / STEPSPERQUARTER);
+ const sal_uInt32 nStartSegment(sal_uInt32(fStart / fAnglePerSegment) % nSegments);
+ const sal_uInt32 nEndSegment(sal_uInt32(fEnd / fAnglePerSegment) % nSegments);
+ const double fKappa((M_SQRT2 - 1.0) * 4.0 / 3.0);
+ const double fScaledKappa(fKappa * (1.0 / STEPSPERQUARTER));
+
+ B2DPoint aSegStart(cos(fStart), sin(fStart));
+ aRetval.append(aSegStart);
+
+ if(nStartSegment == nEndSegment && fTools::more(fEnd, fStart))
+ {
+ // start and end in one sector and in the right order, create in one segment
+ const B2DPoint aSegEnd(cos(fEnd), sin(fEnd));
+ const double fFactor(fScaledKappa * ((fEnd - fStart) / fAnglePerSegment));
+
+ aRetval.appendBezierSegment(
+ aSegStart + (B2DPoint(-aSegStart.getY(), aSegStart.getX()) * fFactor),
+ aSegEnd - (B2DPoint(-aSegEnd.getY(), aSegEnd.getX()) * fFactor),
+ aSegEnd);
+ }
+ else
+ {
+ double fSegEndRad((nStartSegment + 1) * fAnglePerSegment);
+ double fFactor(fScaledKappa * ((fSegEndRad - fStart) / fAnglePerSegment));
+ B2DPoint aSegEnd(cos(fSegEndRad), sin(fSegEndRad));
+
+ aRetval.appendBezierSegment(
+ aSegStart + (B2DPoint(-aSegStart.getY(), aSegStart.getX()) * fFactor),
+ aSegEnd - (B2DPoint(-aSegEnd.getY(), aSegEnd.getX()) * fFactor),
+ aSegEnd);
+
+ sal_uInt32 nSegment((nStartSegment + 1) % nSegments);
+ aSegStart = aSegEnd;
+
+ while(nSegment != nEndSegment)
+ {
+ // No end in this sector, add full sector.
+ fSegEndRad = (nSegment + 1) * fAnglePerSegment;
+ aSegEnd = B2DPoint(cos(fSegEndRad), sin(fSegEndRad));
+
+ aRetval.appendBezierSegment(
+ aSegStart + (B2DPoint(-aSegStart.getY(), aSegStart.getX()) * fScaledKappa),
+ aSegEnd - (B2DPoint(-aSegEnd.getY(), aSegEnd.getX()) * fScaledKappa),
+ aSegEnd);
+
+ nSegment = (nSegment + 1) % nSegments;
+ aSegStart = aSegEnd;
+ }
+
+ // End in this sector
+ const double fSegStartRad(nSegment * fAnglePerSegment);
+ fFactor = fScaledKappa * ((fEnd - fSegStartRad) / fAnglePerSegment);
+ aSegEnd = B2DPoint(cos(fEnd), sin(fEnd));
+
+ aRetval.appendBezierSegment(
+ aSegStart + (B2DPoint(-aSegStart.getY(), aSegStart.getX()) * fFactor),
+ aSegEnd - (B2DPoint(-aSegEnd.getY(), aSegEnd.getX()) * fFactor),
+ aSegEnd);
+ }
+ }
+
+ // remove double points between segments created by segmented creation
+ aRetval.removeDoublePoints();
+
+ return aRetval;
+ }
+
+ B2DPolygon createPolygonFromEllipseSegment( const B2DPoint& rCenter, double fRadiusX, double fRadiusY, double fStart, double fEnd )
+ {
+ B2DPolygon aRetval(createPolygonFromUnitEllipseSegment(fStart, fEnd));
+ const B2DHomMatrix aMatrix(createScaleTranslateB2DHomMatrix(fRadiusX, fRadiusY, rCenter.getX(), rCenter.getY()));
+
+ aRetval.transform(aMatrix);
+
+ return aRetval;
+ }
+
+ bool hasNeutralPoints(const B2DPolygon& rCandidate)
+ {
+ OSL_ENSURE(!rCandidate.areControlPointsUsed(), "hasNeutralPoints: ATM works not for curves (!)");
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 2L)
+ {
+ B2DPoint aPrevPoint(rCandidate.getB2DPoint(nPointCount - 1L));
+ B2DPoint aCurrPoint(rCandidate.getB2DPoint(0L));
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aNextPoint(rCandidate.getB2DPoint((a + 1) % nPointCount));
+ const B2DVector aPrevVec(aPrevPoint - aCurrPoint);
+ const B2DVector aNextVec(aNextPoint - aCurrPoint);
+ const B2VectorOrientation aOrientation(getOrientation(aNextVec, aPrevVec));
+
+ if(ORIENTATION_NEUTRAL == aOrientation)
+ {
+ // current has neutral orientation
+ return true;
+ }
+ else
+ {
+ // prepare next
+ aPrevPoint = aCurrPoint;
+ aCurrPoint = aNextPoint;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ B2DPolygon removeNeutralPoints(const B2DPolygon& rCandidate)
+ {
+ if(hasNeutralPoints(rCandidate))
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ B2DPolygon aRetval;
+ B2DPoint aPrevPoint(rCandidate.getB2DPoint(nPointCount - 1L));
+ B2DPoint aCurrPoint(rCandidate.getB2DPoint(0L));
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aNextPoint(rCandidate.getB2DPoint((a + 1) % nPointCount));
+ const B2DVector aPrevVec(aPrevPoint - aCurrPoint);
+ const B2DVector aNextVec(aNextPoint - aCurrPoint);
+ const B2VectorOrientation aOrientation(getOrientation(aNextVec, aPrevVec));
+
+ if(ORIENTATION_NEUTRAL == aOrientation)
+ {
+ // current has neutral orientation, leave it out and prepare next
+ aCurrPoint = aNextPoint;
+ }
+ else
+ {
+ // add current point
+ aRetval.append(aCurrPoint);
+
+ // prepare next
+ aPrevPoint = aCurrPoint;
+ aCurrPoint = aNextPoint;
+ }
+ }
+
+ while(aRetval.count() && ORIENTATION_NEUTRAL == getOrientationForIndex(aRetval, 0L))
+ {
+ aRetval.remove(0L);
+ }
+
+ // copy closed state
+ aRetval.setClosed(rCandidate.isClosed());
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ bool isConvex(const B2DPolygon& rCandidate)
+ {
+ OSL_ENSURE(!rCandidate.areControlPointsUsed(), "isConvex: ATM works not for curves (!)");
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 2L)
+ {
+ const B2DPoint aPrevPoint(rCandidate.getB2DPoint(nPointCount - 1L));
+ B2DPoint aCurrPoint(rCandidate.getB2DPoint(0L));
+ B2DVector aCurrVec(aPrevPoint - aCurrPoint);
+ B2VectorOrientation aOrientation(ORIENTATION_NEUTRAL);
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aNextPoint(rCandidate.getB2DPoint((a + 1) % nPointCount));
+ const B2DVector aNextVec(aNextPoint - aCurrPoint);
+ const B2VectorOrientation aCurrentOrientation(getOrientation(aNextVec, aCurrVec));
+
+ if(ORIENTATION_NEUTRAL == aOrientation)
+ {
+ // set start value, maybe neutral again
+ aOrientation = aCurrentOrientation;
+ }
+ else
+ {
+ if(ORIENTATION_NEUTRAL != aCurrentOrientation && aCurrentOrientation != aOrientation)
+ {
+ // different orientations found, that's it
+ return false;
+ }
+ }
+
+ // prepare next
+ aCurrPoint = aNextPoint;
+ aCurrVec = -aNextVec;
+ }
+ }
+
+ return true;
+ }
+
+ B2VectorOrientation getOrientationForIndex(const B2DPolygon& rCandidate, sal_uInt32 nIndex)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "getOrientationForIndex: index out of range (!)");
+ const B2DPoint aPrev(rCandidate.getB2DPoint(getIndexOfPredecessor(nIndex, rCandidate)));
+ const B2DPoint aCurr(rCandidate.getB2DPoint(nIndex));
+ const B2DPoint aNext(rCandidate.getB2DPoint(getIndexOfSuccessor(nIndex, rCandidate)));
+ const B2DVector aBack(aPrev - aCurr);
+ const B2DVector aForw(aNext - aCurr);
+
+ return getOrientation(aForw, aBack);
+ }
+
+ bool isPointOnLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidate, bool bWithPoints)
+ {
+ if(rCandidate.equal(rStart) || rCandidate.equal(rEnd))
+ {
+ // candidate is in epsilon around start or end -> inside
+ return bWithPoints;
+ }
+ else if(rStart.equal(rEnd))
+ {
+ // start and end are equal, but candidate is outside their epsilon -> outside
+ return false;
+ }
+ else
+ {
+ const B2DVector aEdgeVector(rEnd - rStart);
+ const B2DVector aTestVector(rCandidate - rStart);
+
+ if(areParallel(aEdgeVector, aTestVector))
+ {
+ const double fZero(0.0);
+ const double fOne(1.0);
+ const double fParamTestOnCurr(fabs(aEdgeVector.getX()) > fabs(aEdgeVector.getY())
+ ? aTestVector.getX() / aEdgeVector.getX()
+ : aTestVector.getY() / aEdgeVector.getY());
+
+ if(fTools::more(fParamTestOnCurr, fZero) && fTools::less(fParamTestOnCurr, fOne))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+
+ bool isPointOnPolygon(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithPoints)
+ {
+ const B2DPolygon aCandidate(rCandidate.areControlPointsUsed() ? rCandidate.getDefaultAdaptiveSubdivision() : rCandidate);
+ const sal_uInt32 nPointCount(aCandidate.count());
+
+ if(nPointCount > 1L)
+ {
+ const sal_uInt32 nLoopCount(aCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ B2DPoint aCurrentPoint(aCandidate.getB2DPoint(0L));
+
+ for(sal_uInt32 a(0L); a < nLoopCount; a++)
+ {
+ const B2DPoint aNextPoint(aCandidate.getB2DPoint((a + 1L) % nPointCount));
+
+ if(isPointOnLine(aCurrentPoint, aNextPoint, rPoint, bWithPoints))
+ {
+ return true;
+ }
+
+ aCurrentPoint = aNextPoint;
+ }
+ }
+ else if(nPointCount && bWithPoints)
+ {
+ return rPoint.equal(aCandidate.getB2DPoint(0L));
+ }
+
+ return false;
+ }
+
+ bool isPointInTriangle(const B2DPoint& rA, const B2DPoint& rB, const B2DPoint& rC, const B2DPoint& rCandidate, bool bWithBorder)
+ {
+ if(arePointsOnSameSideOfLine(rA, rB, rC, rCandidate, bWithBorder))
+ {
+ if(arePointsOnSameSideOfLine(rB, rC, rA, rCandidate, bWithBorder))
+ {
+ if(arePointsOnSameSideOfLine(rC, rA, rB, rCandidate, bWithBorder))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ bool arePointsOnSameSideOfLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidateA, const B2DPoint& rCandidateB, bool bWithLine)
+ {
+ const B2DVector aLineVector(rEnd - rStart);
+ const B2DVector aVectorToA(rEnd - rCandidateA);
+ const double fCrossA(aLineVector.cross(aVectorToA));
+
+ if(fTools::equalZero(fCrossA))
+ {
+ // one point on the line
+ return bWithLine;
+ }
+
+ const B2DVector aVectorToB(rEnd - rCandidateB);
+ const double fCrossB(aLineVector.cross(aVectorToB));
+
+ if(fTools::equalZero(fCrossB))
+ {
+ // one point on the line
+ return bWithLine;
+ }
+
+ // return true if they both have the same sign
+ return ((fCrossA > 0.0) == (fCrossB > 0.0));
+ }
+
+ void addTriangleFan(const B2DPolygon& rCandidate, B2DPolygon& rTarget)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount > 2L)
+ {
+ const B2DPoint aStart(rCandidate.getB2DPoint(0L));
+ B2DPoint aLast(rCandidate.getB2DPoint(1L));
+
+ for(sal_uInt32 a(2L); a < nCount; a++)
+ {
+ const B2DPoint aCurrent(rCandidate.getB2DPoint(a));
+ rTarget.append(aStart);
+ rTarget.append(aLast);
+ rTarget.append(aCurrent);
+
+ // prepare next
+ aLast = aCurrent;
+ }
+ }
+ }
+
+ namespace
+ {
+ /// return 0 for input of 0, -1 for negative and 1 for positive input
+ inline int lcl_sgn( const double n )
+ {
+ return n == 0.0 ? 0 : 1 - 2*::rtl::math::isSignBitSet(n);
+ }
+ }
+
+ bool isRectangle( const B2DPolygon& rPoly )
+ {
+ // polygon must be closed to resemble a rect, and contain
+ // at least four points.
+ if( !rPoly.isClosed() ||
+ rPoly.count() < 4 ||
+ rPoly.areControlPointsUsed() )
+ {
+ return false;
+ }
+
+ // number of 90 degree turns the polygon has taken
+ int nNumTurns(0);
+
+ int nVerticalEdgeType=0;
+ int nHorizontalEdgeType=0;
+ bool bNullVertex(true);
+ bool bCWPolygon(false); // when true, polygon is CW
+ // oriented, when false, CCW
+ bool bOrientationSet(false); // when false, polygon
+ // orientation has not yet
+ // been determined.
+
+ // scan all _edges_ (which involves coming back to point 0
+ // for the last edge - thus the modulo operation below)
+ const sal_Int32 nCount( rPoly.count() );
+ for( sal_Int32 i=0; i<nCount; ++i )
+ {
+ const B2DPoint& rPoint0( rPoly.getB2DPoint(i % nCount) );
+ const B2DPoint& rPoint1( rPoly.getB2DPoint((i+1) % nCount) );
+
+ // is 0 for zero direction vector, 1 for south edge and -1
+ // for north edge (standard screen coordinate system)
+ int nCurrVerticalEdgeType( lcl_sgn( rPoint1.getY() - rPoint0.getY() ) );
+
+ // is 0 for zero direction vector, 1 for east edge and -1
+ // for west edge (standard screen coordinate system)
+ int nCurrHorizontalEdgeType( lcl_sgn(rPoint1.getX() - rPoint0.getX()) );
+
+ if( nCurrVerticalEdgeType && nCurrHorizontalEdgeType )
+ return false; // oblique edge - for sure no rect
+
+ const bool bCurrNullVertex( !nCurrVerticalEdgeType && !nCurrHorizontalEdgeType );
+
+ // current vertex is equal to previous - just skip,
+ // until we have a real edge
+ if( bCurrNullVertex )
+ continue;
+
+ // if previous edge has two identical points, because
+ // no previous edge direction was available, simply
+ // take this first non-null edge as the start
+ // direction. That's what will happen here, if
+ // bNullVertex is false
+ if( !bNullVertex )
+ {
+ // 2D cross product - is 1 for CW and -1 for CCW turns
+ const int nCrossProduct( nHorizontalEdgeType*nCurrVerticalEdgeType -
+ nVerticalEdgeType*nCurrHorizontalEdgeType );
+
+ if( !nCrossProduct )
+ continue; // no change in orientation -
+ // collinear edges - just go on
+
+ // if polygon orientation is not set, we'll
+ // determine it now
+ if( !bOrientationSet )
+ {
+ bCWPolygon = nCrossProduct == 1;
+ bOrientationSet = true;
+ }
+ else
+ {
+ // if current turn orientation is not equal
+ // initial orientation, this is not a
+ // rectangle (as rectangles have consistent
+ // orientation).
+ if( (nCrossProduct == 1) != bCWPolygon )
+ return false;
+ }
+
+ ++nNumTurns;
+
+ // More than four 90 degree turns are an
+ // indication that this must not be a rectangle.
+ if( nNumTurns > 4 )
+ return false;
+ }
+
+ // store current state for the next turn
+ nVerticalEdgeType = nCurrVerticalEdgeType;
+ nHorizontalEdgeType = nCurrHorizontalEdgeType;
+ bNullVertex = false; // won't reach this line,
+ // if bCurrNullVertex is
+ // true - see above
+ }
+
+ return true;
+ }
+
+ B3DPolygon createB3DPolygonFromB2DPolygon(const B2DPolygon& rCandidate, double fZCoordinate)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ // call myself recursively with subdivided input
+ const B2DPolygon aCandidate(adaptiveSubdivideByAngle(rCandidate));
+ return createB3DPolygonFromB2DPolygon(aCandidate, fZCoordinate);
+ }
+ else
+ {
+ B3DPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ B2DPoint aPoint(rCandidate.getB2DPoint(a));
+ aRetval.append(B3DPoint(aPoint.getX(), aPoint.getY(), fZCoordinate));
+ }
+
+ // copy closed state
+ aRetval.setClosed(rCandidate.isClosed());
+
+ return aRetval;
+ }
+ }
+
+ B2DPolygon createB2DPolygonFromB3DPolygon(const B3DPolygon& rCandidate, const B3DHomMatrix& rMat)
+ {
+ B2DPolygon aRetval;
+ const sal_uInt32 nCount(rCandidate.count());
+ const bool bIsIdentity(rMat.isIdentity());
+
+ for(sal_uInt32 a(0L); a < nCount; a++)
+ {
+ B3DPoint aCandidate(rCandidate.getB3DPoint(a));
+
+ if(!bIsIdentity)
+ {
+ aCandidate *= rMat;
+ }
+
+ aRetval.append(B2DPoint(aCandidate.getX(), aCandidate.getY()));
+ }
+
+ // copy closed state
+ aRetval.setClosed(rCandidate.isClosed());
+
+ return aRetval;
+ }
+
+ double getDistancePointToEndlessRay(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut)
+ {
+ if(rPointA.equal(rPointB))
+ {
+ rCut = 0.0;
+ const B2DVector aVector(rTestPoint - rPointA);
+ return aVector.getLength();
+ }
+ else
+ {
+ // get the relative cut value on line vector (Vector1) for cut with perpendicular through TestPoint
+ const B2DVector aVector1(rPointB - rPointA);
+ const B2DVector aVector2(rTestPoint - rPointA);
+ const double fDividend((aVector2.getX() * aVector1.getX()) + (aVector2.getY() * aVector1.getY()));
+ const double fDivisor((aVector1.getX() * aVector1.getX()) + (aVector1.getY() * aVector1.getY()));
+
+ rCut = fDividend / fDivisor;
+
+ const B2DPoint aCutPoint(rPointA + rCut * aVector1);
+ const B2DVector aVector(rTestPoint - aCutPoint);
+ return aVector.getLength();
+ }
+ }
+
+ double getSmallestDistancePointToEdge(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut)
+ {
+ if(rPointA.equal(rPointB))
+ {
+ rCut = 0.0;
+ const B2DVector aVector(rTestPoint - rPointA);
+ return aVector.getLength();
+ }
+ else
+ {
+ // get the relative cut value on line vector (Vector1) for cut with perpendicular through TestPoint
+ const B2DVector aVector1(rPointB - rPointA);
+ const B2DVector aVector2(rTestPoint - rPointA);
+ const double fDividend((aVector2.getX() * aVector1.getX()) + (aVector2.getY() * aVector1.getY()));
+ const double fDivisor((aVector1.getX() * aVector1.getX()) + (aVector1.getY() * aVector1.getY()));
+ const double fCut(fDividend / fDivisor);
+
+ if(fCut < 0.0)
+ {
+ // not in line range, get distance to PointA
+ rCut = 0.0;
+ return aVector2.getLength();
+ }
+ else if(fCut > 1.0)
+ {
+ // not in line range, get distance to PointB
+ rCut = 1.0;
+ const B2DVector aVector(rTestPoint - rPointB);
+ return aVector.getLength();
+ }
+ else
+ {
+ // in line range
+ const B2DPoint aCutPoint(rPointA + fCut * aVector1);
+ const B2DVector aVector(rTestPoint - aCutPoint);
+ rCut = fCut;
+ return aVector.getLength();
+ }
+ }
+ }
+
+ double getSmallestDistancePointToPolygon(const B2DPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rEdgeIndex, double& rCut)
+ {
+ double fRetval(DBL_MAX);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 1L)
+ {
+ const double fZero(0.0);
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ B2DCubicBezier aBezier;
+ aBezier.setStartPoint(rCandidate.getB2DPoint(0));
+
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aBezier.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+ double fEdgeDist;
+ double fNewCut;
+ bool bEdgeIsCurve(false);
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ aBezier.setControlPointA(rCandidate.getNextControlPoint(a));
+ aBezier.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aBezier.testAndSolveTrivialBezier();
+ bEdgeIsCurve = aBezier.isBezier();
+ }
+
+ if(bEdgeIsCurve)
+ {
+ fEdgeDist = aBezier.getSmallestDistancePointToBezierSegment(rTestPoint, fNewCut);
+ }
+ else
+ {
+ fEdgeDist = getSmallestDistancePointToEdge(aBezier.getStartPoint(), aBezier.getEndPoint(), rTestPoint, fNewCut);
+ }
+
+ if(DBL_MAX == fRetval || fEdgeDist < fRetval)
+ {
+ fRetval = fEdgeDist;
+ rEdgeIndex = a;
+ rCut = fNewCut;
+
+ if(fTools::equal(fRetval, fZero))
+ {
+ // already found zero distance, cannot get better. Ensure numerical zero value and end loop.
+ fRetval = 0.0;
+ break;
+ }
+ }
+
+ // prepare next step
+ aBezier.setStartPoint(aBezier.getEndPoint());
+ }
+
+ if(1.0 == rCut)
+ {
+ // correct rEdgeIndex when not last point
+ if(rCandidate.isClosed())
+ {
+ rEdgeIndex = getIndexOfSuccessor(rEdgeIndex, rCandidate);
+ rCut = 0.0;
+ }
+ else
+ {
+ if(rEdgeIndex != nEdgeCount - 1L)
+ {
+ rEdgeIndex++;
+ rCut = 0.0;
+ }
+ }
+ }
+ }
+
+ return fRetval;
+ }
+
+ B2DPoint distort(const B2DPoint& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight)
+ {
+ if(fTools::equalZero(rOriginal.getWidth()) || fTools::equalZero(rOriginal.getHeight()))
+ {
+ return rCandidate;
+ }
+ else
+ {
+ const double fRelativeX((rCandidate.getX() - rOriginal.getMinX()) / rOriginal.getWidth());
+ const double fRelativeY((rCandidate.getY() - rOriginal.getMinY()) / rOriginal.getHeight());
+ const double fOneMinusRelativeX(1.0 - fRelativeX);
+ const double fOneMinusRelativeY(1.0 - fRelativeY);
+ const double fNewX((fOneMinusRelativeY) * ((fOneMinusRelativeX) * rTopLeft.getX() + fRelativeX * rTopRight.getX()) +
+ fRelativeY * ((fOneMinusRelativeX) * rBottomLeft.getX() + fRelativeX * rBottomRight.getX()));
+ const double fNewY((fOneMinusRelativeX) * ((fOneMinusRelativeY) * rTopLeft.getY() + fRelativeY * rBottomLeft.getY()) +
+ fRelativeX * ((fOneMinusRelativeY) * rTopRight.getY() + fRelativeY * rBottomRight.getY()));
+
+ return B2DPoint(fNewX, fNewY);
+ }
+ }
+
+ B2DPolygon distort(const B2DPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount && 0.0 != rOriginal.getWidth() && 0.0 != rOriginal.getHeight())
+ {
+ B2DPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ aRetval.append(distort(rCandidate.getB2DPoint(a), rOriginal, rTopLeft, rTopRight, rBottomLeft, rBottomRight));
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ if(!rCandidate.getPrevControlPoint(a).equalZero())
+ {
+ aRetval.setPrevControlPoint(a, distort(rCandidate.getPrevControlPoint(a), rOriginal, rTopLeft, rTopRight, rBottomLeft, rBottomRight));
+ }
+
+ if(!rCandidate.getNextControlPoint(a).equalZero())
+ {
+ aRetval.setNextControlPoint(a, distort(rCandidate.getNextControlPoint(a), rOriginal, rTopLeft, rTopRight, rBottomLeft, rBottomRight));
+ }
+ }
+ }
+
+ aRetval.setClosed(rCandidate.isClosed());
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolygon rotateAroundPoint(const B2DPolygon& rCandidate, const B2DPoint& rCenter, double fAngle)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ B2DPolygon aRetval(rCandidate);
+
+ if(nPointCount)
+ {
+ const B2DHomMatrix aMatrix(basegfx::tools::createRotateAroundPoint(rCenter, fAngle));
+
+ aRetval.transform(aMatrix);
+ }
+
+ return aRetval;
+ }
+
+ B2DPolygon expandToCurve(const B2DPolygon& rCandidate)
+ {
+ B2DPolygon aRetval(rCandidate);
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ expandToCurveInPoint(aRetval, a);
+ }
+
+ return aRetval;
+ }
+
+ bool expandToCurveInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "expandToCurveInPoint: Access to polygon out of range (!)");
+ bool bRetval(false);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ // predecessor
+ if(!rCandidate.isPrevControlPointUsed(nIndex))
+ {
+ if(!rCandidate.isClosed() && 0 == nIndex)
+ {
+ // do not create previous vector for start point of open polygon
+ }
+ else
+ {
+ const sal_uInt32 nPrevIndex((nIndex + (nPointCount - 1)) % nPointCount);
+ rCandidate.setPrevControlPoint(nIndex, interpolate(rCandidate.getB2DPoint(nIndex), rCandidate.getB2DPoint(nPrevIndex), 1.0 / 3.0));
+ bRetval = true;
+ }
+ }
+
+ // successor
+ if(!rCandidate.isNextControlPointUsed(nIndex))
+ {
+ if(!rCandidate.isClosed() && nIndex + 1 == nPointCount)
+ {
+ // do not create next vector for end point of open polygon
+ }
+ else
+ {
+ const sal_uInt32 nNextIndex((nIndex + 1) % nPointCount);
+ rCandidate.setNextControlPoint(nIndex, interpolate(rCandidate.getB2DPoint(nIndex), rCandidate.getB2DPoint(nNextIndex), 1.0 / 3.0));
+ bRetval = true;
+ }
+ }
+ }
+
+ return bRetval;
+ }
+
+ B2DPolygon setContinuity(const B2DPolygon& rCandidate, B2VectorContinuity eContinuity)
+ {
+ B2DPolygon aRetval(rCandidate);
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ setContinuityInPoint(aRetval, a, eContinuity);
+ }
+
+ return aRetval;
+ }
+
+ bool setContinuityInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex, B2VectorContinuity eContinuity)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "setContinuityInPoint: Access to polygon out of range (!)");
+ bool bRetval(false);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ const B2DPoint aCurrentPoint(rCandidate.getB2DPoint(nIndex));
+
+ switch(eContinuity)
+ {
+ case CONTINUITY_NONE :
+ {
+ if(rCandidate.isPrevControlPointUsed(nIndex))
+ {
+ if(!rCandidate.isClosed() && 0 == nIndex)
+ {
+ // remove existing previous vector for start point of open polygon
+ rCandidate.resetPrevControlPoint(nIndex);
+ }
+ else
+ {
+ const sal_uInt32 nPrevIndex((nIndex + (nPointCount - 1)) % nPointCount);
+ rCandidate.setPrevControlPoint(nIndex, interpolate(aCurrentPoint, rCandidate.getB2DPoint(nPrevIndex), 1.0 / 3.0));
+ }
+
+ bRetval = true;
+ }
+
+ if(rCandidate.isNextControlPointUsed(nIndex))
+ {
+ if(!rCandidate.isClosed() && nIndex == nPointCount + 1)
+ {
+ // remove next vector for end point of open polygon
+ rCandidate.resetNextControlPoint(nIndex);
+ }
+ else
+ {
+ const sal_uInt32 nNextIndex((nIndex + 1) % nPointCount);
+ rCandidate.setNextControlPoint(nIndex, interpolate(aCurrentPoint, rCandidate.getB2DPoint(nNextIndex), 1.0 / 3.0));
+ }
+
+ bRetval = true;
+ }
+
+ break;
+ }
+ case CONTINUITY_C1 :
+ {
+ if(rCandidate.isPrevControlPointUsed(nIndex) && rCandidate.isNextControlPointUsed(nIndex))
+ {
+ // lengths both exist since both are used
+ B2DVector aVectorPrev(rCandidate.getPrevControlPoint(nIndex) - aCurrentPoint);
+ B2DVector aVectorNext(rCandidate.getNextControlPoint(nIndex) - aCurrentPoint);
+ const double fLenPrev(aVectorPrev.getLength());
+ const double fLenNext(aVectorNext.getLength());
+ aVectorPrev.normalize();
+ aVectorNext.normalize();
+ const B2VectorOrientation aOrientation(getOrientation(aVectorPrev, aVectorNext));
+
+ if(ORIENTATION_NEUTRAL == aOrientation && aVectorPrev.scalar(aVectorNext) < 0.0)
+ {
+ // parallel and opposite direction; check length
+ if(fTools::equal(fLenPrev, fLenNext))
+ {
+ // this would be even C2, but we want C1. Use the lengths of the corresponding edges.
+ const sal_uInt32 nPrevIndex((nIndex + (nPointCount - 1)) % nPointCount);
+ const sal_uInt32 nNextIndex((nIndex + 1) % nPointCount);
+ const double fLenPrevEdge(B2DVector(rCandidate.getB2DPoint(nPrevIndex) - aCurrentPoint).getLength() * (1.0 / 3.0));
+ const double fLenNextEdge(B2DVector(rCandidate.getB2DPoint(nNextIndex) - aCurrentPoint).getLength() * (1.0 / 3.0));
+
+ rCandidate.setControlPoints(nIndex,
+ aCurrentPoint + (aVectorPrev * fLenPrevEdge),
+ aCurrentPoint + (aVectorNext * fLenNextEdge));
+ bRetval = true;
+ }
+ }
+ else
+ {
+ // not parallel or same direction, set vectors and length
+ const B2DVector aNormalizedPerpendicular(getNormalizedPerpendicular(aVectorPrev + aVectorNext));
+
+ if(ORIENTATION_POSITIVE == aOrientation)
+ {
+ rCandidate.setControlPoints(nIndex,
+ aCurrentPoint - (aNormalizedPerpendicular * fLenPrev),
+ aCurrentPoint + (aNormalizedPerpendicular * fLenNext));
+ }
+ else
+ {
+ rCandidate.setControlPoints(nIndex,
+ aCurrentPoint + (aNormalizedPerpendicular * fLenPrev),
+ aCurrentPoint - (aNormalizedPerpendicular * fLenNext));
+ }
+
+ bRetval = true;
+ }
+ }
+ break;
+ }
+ case CONTINUITY_C2 :
+ {
+ if(rCandidate.isPrevControlPointUsed(nIndex) && rCandidate.isNextControlPointUsed(nIndex))
+ {
+ // lengths both exist since both are used
+ B2DVector aVectorPrev(rCandidate.getPrevControlPoint(nIndex) - aCurrentPoint);
+ B2DVector aVectorNext(rCandidate.getNextControlPoint(nIndex) - aCurrentPoint);
+ const double fCommonLength((aVectorPrev.getLength() + aVectorNext.getLength()) / 2.0);
+ aVectorPrev.normalize();
+ aVectorNext.normalize();
+ const B2VectorOrientation aOrientation(getOrientation(aVectorPrev, aVectorNext));
+
+ if(ORIENTATION_NEUTRAL == aOrientation && aVectorPrev.scalar(aVectorNext) < 0.0)
+ {
+ // parallel and opposite direction; set length. Use one direction for better numerical correctness
+ const B2DVector aScaledDirection(aVectorPrev * fCommonLength);
+
+ rCandidate.setControlPoints(nIndex,
+ aCurrentPoint + aScaledDirection,
+ aCurrentPoint - aScaledDirection);
+ }
+ else
+ {
+ // not parallel or same direction, set vectors and length
+ const B2DVector aNormalizedPerpendicular(getNormalizedPerpendicular(aVectorPrev + aVectorNext));
+ const B2DVector aPerpendicular(aNormalizedPerpendicular * fCommonLength);
+
+ if(ORIENTATION_POSITIVE == aOrientation)
+ {
+ rCandidate.setControlPoints(nIndex,
+ aCurrentPoint - aPerpendicular,
+ aCurrentPoint + aPerpendicular);
+ }
+ else
+ {
+ rCandidate.setControlPoints(nIndex,
+ aCurrentPoint + aPerpendicular,
+ aCurrentPoint - aPerpendicular);
+ }
+ }
+
+ bRetval = true;
+ }
+ break;
+ }
+ }
+ }
+
+ return bRetval;
+ }
+
+ B2DPolygon growInNormalDirection(const B2DPolygon& rCandidate, double fValue)
+ {
+ if(0.0 != fValue)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ // call myself recursively with subdivided input
+ const B2DPolygon aCandidate(adaptiveSubdivideByAngle(rCandidate));
+ return growInNormalDirection(aCandidate, fValue);
+ }
+ else
+ {
+ B2DPolygon aRetval;
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ B2DPoint aPrev(rCandidate.getB2DPoint(nPointCount - 1L));
+ B2DPoint aCurrent(rCandidate.getB2DPoint(0L));
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B2DPoint aNext(rCandidate.getB2DPoint(a + 1L == nPointCount ? 0L : a + 1L));
+ const B2DVector aBack(aPrev - aCurrent);
+ const B2DVector aForw(aNext - aCurrent);
+ const B2DVector aPerpBack(getNormalizedPerpendicular(aBack));
+ const B2DVector aPerpForw(getNormalizedPerpendicular(aForw));
+ B2DVector aDirection(aPerpBack - aPerpForw);
+ aDirection.normalize();
+ aDirection *= fValue;
+ aRetval.append(aCurrent + aDirection);
+
+ // prepare next step
+ aPrev = aCurrent;
+ aCurrent = aNext;
+ }
+ }
+
+ // copy closed state
+ aRetval.setClosed(rCandidate.isClosed());
+
+ return aRetval;
+ }
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolygon reSegmentPolygon(const B2DPolygon& rCandidate, sal_uInt32 nSegments)
+ {
+ B2DPolygon aRetval;
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount && nSegments)
+ {
+ // get current segment count
+ const sal_uInt32 nSegmentCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+
+ if(nSegmentCount == nSegments)
+ {
+ aRetval = rCandidate;
+ }
+ else
+ {
+ const double fLength(getLength(rCandidate));
+ const sal_uInt32 nLoopCount(rCandidate.isClosed() ? nSegments : nSegments + 1L);
+
+ for(sal_uInt32 a(0L); a < nLoopCount; a++)
+ {
+ const double fRelativePos((double)a / (double)nSegments); // 0.0 .. 1.0
+ const B2DPoint aNewPoint(getPositionRelative(rCandidate, fRelativePos, fLength));
+ aRetval.append(aNewPoint);
+ }
+
+ // copy closed flag
+ aRetval.setClosed(rCandidate.isClosed());
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolygon reSegmentPolygonEdges(const B2DPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount < 2 || nSubEdges < 2 || (!bHandleCurvedEdges && !bHandleStraightEdges))
+ {
+ // nothing to do:
+ // - less than two points -> no edge at all
+ // - less than two nSubEdges -> no resegment necessary
+ // - neither bHandleCurvedEdges nor bHandleStraightEdges -> nothing to do
+ return rCandidate;
+ }
+ else
+ {
+ B2DPolygon aRetval;
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ B2DCubicBezier aCurrentEdge;
+
+ // prepare first edge and add start point to target
+ aCurrentEdge.setStartPoint(rCandidate.getB2DPoint(0));
+ aRetval.append(aCurrentEdge.getStartPoint());
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ // fill edge
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aCurrentEdge.setControlPointA(rCandidate.getNextControlPoint(a));
+ aCurrentEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aCurrentEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+
+ if(aCurrentEdge.isBezier())
+ {
+ if(bHandleCurvedEdges)
+ {
+ for(sal_uInt32 b(nSubEdges); b > 1; b--)
+ {
+ const double fSplitPoint(1.0 / b);
+ B2DCubicBezier aLeftPart;
+
+ aCurrentEdge.split(fSplitPoint, &aLeftPart, &aCurrentEdge);
+ aRetval.appendBezierSegment(aLeftPart.getControlPointA(), aLeftPart.getControlPointB(), aLeftPart.getEndPoint());
+ }
+ }
+
+ // copy remaining segment to target
+ aRetval.appendBezierSegment(aCurrentEdge.getControlPointA(), aCurrentEdge.getControlPointB(), aCurrentEdge.getEndPoint());
+ }
+ else
+ {
+ if(bHandleStraightEdges)
+ {
+ for(sal_uInt32 b(nSubEdges); b > 1; b--)
+ {
+ const double fSplitPoint(1.0 / b);
+ const B2DPoint aSplitPoint(interpolate(aCurrentEdge.getStartPoint(), aCurrentEdge.getEndPoint(), fSplitPoint));
+
+ aRetval.append(aSplitPoint);
+ aCurrentEdge.setStartPoint(aSplitPoint);
+ }
+ }
+
+ // copy remaining segment to target
+ aRetval.append(aCurrentEdge.getEndPoint());
+ }
+
+ // prepare next step
+ aCurrentEdge.setStartPoint(aCurrentEdge.getEndPoint());
+ }
+
+ // copy closed flag and return
+ aRetval.setClosed(rCandidate.isClosed());
+ return aRetval;
+ }
+ }
+
+ B2DPolygon interpolate(const B2DPolygon& rOld1, const B2DPolygon& rOld2, double t)
+ {
+ OSL_ENSURE(rOld1.count() == rOld2.count(), "B2DPolygon interpolate: Different geometry (!)");
+
+ if(fTools::lessOrEqual(t, 0.0) || rOld1 == rOld2)
+ {
+ return rOld1;
+ }
+ else if(fTools::moreOrEqual(t, 1.0))
+ {
+ return rOld2;
+ }
+ else
+ {
+ B2DPolygon aRetval;
+ const bool bInterpolateVectors(rOld1.areControlPointsUsed() || rOld2.areControlPointsUsed());
+ aRetval.setClosed(rOld1.isClosed() && rOld2.isClosed());
+
+ for(sal_uInt32 a(0L); a < rOld1.count(); a++)
+ {
+ aRetval.append(interpolate(rOld1.getB2DPoint(a), rOld2.getB2DPoint(a), t));
+
+ if(bInterpolateVectors)
+ {
+ aRetval.setPrevControlPoint(a, interpolate(rOld1.getPrevControlPoint(a), rOld2.getPrevControlPoint(a), t));
+ aRetval.setNextControlPoint(a, interpolate(rOld1.getNextControlPoint(a), rOld2.getNextControlPoint(a), t));
+ }
+ }
+
+ return aRetval;
+ }
+ }
+
+ bool isPolyPolygonEqualRectangle( const B2DPolyPolygon& rPolyPoly,
+ const B2DRange& rRect )
+ {
+ // exclude some cheap cases first
+ if( rPolyPoly.count() != 1 )
+ return false;
+
+ // fill array with rectangle vertices
+ const B2DPoint aPoints[] =
+ {
+ B2DPoint(rRect.getMinX(),rRect.getMinY()),
+ B2DPoint(rRect.getMaxX(),rRect.getMinY()),
+ B2DPoint(rRect.getMaxX(),rRect.getMaxY()),
+ B2DPoint(rRect.getMinX(),rRect.getMaxY())
+ };
+
+ const B2DPolygon& rPoly( rPolyPoly.getB2DPolygon(0) );
+ const sal_uInt32 nCount( rPoly.count() );
+ const double epsilon = ::std::numeric_limits<double>::epsilon();
+
+ for(unsigned int j=0; j<4; ++j)
+ {
+ const B2DPoint &p1 = aPoints[j];
+ const B2DPoint &p2 = aPoints[(j+1)%4];
+ bool bPointOnBoundary = false;
+ for( sal_uInt32 i=0; i<nCount; ++i )
+ {
+ const B2DPoint p(rPoly.getB2DPoint(i));
+
+ // 1 | x0 y0 1 |
+ // A = - | x1 y1 1 |
+ // 2 | x2 y2 1 |
+ double fDoubleArea = p2.getX()*p.getY() -
+ p2.getY()*p.getX() -
+ p1.getX()*p.getY() +
+ p1.getY()*p.getX() +
+ p1.getX()*p2.getY() -
+ p1.getY()*p2.getX();
+
+ if(fDoubleArea < epsilon)
+ {
+ bPointOnBoundary=true;
+ break;
+ }
+ }
+ if(!(bPointOnBoundary))
+ return false;
+ }
+
+ return true;
+ }
+
+
+ // create simplified version of the original polygon by
+ // replacing segments with spikes/loops and self intersections
+ // by several trivial sub-segments
+ B2DPolygon createSimplifiedPolygon( const B2DPolygon& rCandidate )
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount && rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nCount : nCount - 1);
+ B2DPolygon aRetval;
+ B2DCubicBezier aSegment;
+
+ aSegment.setStartPoint(rCandidate.getB2DPoint(0));
+ aRetval.append(aSegment.getStartPoint());
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ // fill edge
+ const sal_uInt32 nNextIndex((a + 1) % nCount);
+ aSegment.setControlPointA(rCandidate.getNextControlPoint(a));
+ aSegment.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aSegment.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+
+ if(aSegment.isBezier())
+ {
+ double fExtremumPos(0.0);
+ sal_uInt32 nExtremumCounter(4);
+
+ while(nExtremumCounter-- && aSegment.isBezier() && aSegment.getMinimumExtremumPosition(fExtremumPos))
+ {
+ // split off left, now extremum-free part and append
+ B2DCubicBezier aLeft;
+
+ aSegment.split(fExtremumPos, &aLeft, &aSegment);
+ aLeft.testAndSolveTrivialBezier();
+ aSegment.testAndSolveTrivialBezier();
+
+ if(aLeft.isBezier())
+ {
+ aRetval.appendBezierSegment(aLeft.getControlPointA(), aLeft.getControlPointB(), aLeft.getEndPoint());
+ }
+ else
+ {
+ aRetval.append(aLeft.getEndPoint());
+ }
+ }
+
+ // append (evtl. reduced) rest of Segment
+ if(aSegment.isBezier())
+ {
+ aRetval.appendBezierSegment(aSegment.getControlPointA(), aSegment.getControlPointB(), aSegment.getEndPoint());
+ }
+ else
+ {
+ aRetval.append(aSegment.getEndPoint());
+ }
+ }
+ else
+ {
+ // simple edge, append end point
+ aRetval.append(aSegment.getEndPoint());
+ }
+
+ // prepare next edge
+ aSegment.setStartPoint(aSegment.getEndPoint());
+ }
+
+ // copy closed flag and check for double points
+ aRetval.setClosed(rCandidate.isClosed());
+ aRetval.removeDoublePoints();
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ // #i76891#
+ B2DPolygon simplifyCurveSegments(const B2DPolygon& rCandidate)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount && rCandidate.areControlPointsUsed())
+ {
+ // prepare loop
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ B2DPolygon aRetval;
+ B2DCubicBezier aBezier;
+ aBezier.setStartPoint(rCandidate.getB2DPoint(0));
+
+ // try to avoid costly reallocations
+ aRetval.reserve( nEdgeCount+1);
+
+ // add start point
+ aRetval.append(aBezier.getStartPoint());
+
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ // get values for edge
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ aBezier.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+ aBezier.setControlPointA(rCandidate.getNextControlPoint(a));
+ aBezier.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+ aBezier.testAndSolveTrivialBezier();
+
+ // still bezier?
+ if(aBezier.isBezier())
+ {
+ // add edge with control vectors
+ aRetval.appendBezierSegment(aBezier.getControlPointA(), aBezier.getControlPointB(), aBezier.getEndPoint());
+ }
+ else
+ {
+ // add edge
+ aRetval.append(aBezier.getEndPoint());
+ }
+
+ // next point
+ aBezier.setStartPoint(aBezier.getEndPoint());
+ }
+
+ if(rCandidate.isClosed())
+ {
+ // set closed flag, rescue control point and correct last double point
+ closeWithGeometryChange(aRetval);
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ // makes the given indexed point the new polygon start point. To do that, the points in the
+ // polygon will be rotated. This is only valid for closed polygons, for non-closed ones
+ // an assertion will be triggered
+ B2DPolygon makeStartPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndexOfNewStatPoint)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 2 && nIndexOfNewStatPoint != 0 && nIndexOfNewStatPoint < nPointCount)
+ {
+ OSL_ENSURE(rCandidate.isClosed(), "makeStartPoint: only valid for closed polygons (!)");
+ B2DPolygon aRetval;
+
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ const sal_uInt32 nSourceIndex((a + nIndexOfNewStatPoint) % nPointCount);
+ aRetval.append(rCandidate.getB2DPoint(nSourceIndex));
+
+ if(rCandidate.areControlPointsUsed())
+ {
+ aRetval.setPrevControlPoint(a, rCandidate.getPrevControlPoint(nSourceIndex));
+ aRetval.setNextControlPoint(a, rCandidate.getNextControlPoint(nSourceIndex));
+ }
+ }
+
+ return aRetval;
+ }
+
+ return rCandidate;
+ }
+
+ B2DPolygon createEdgesOfGivenLength(const B2DPolygon& rCandidate, double fLength, double fStart, double fEnd)
+ {
+ B2DPolygon aRetval;
+
+ if(fLength < 0.0)
+ {
+ fLength = 0.0;
+ }
+
+ if(!fTools::equalZero(fLength))
+ {
+ if(fStart < 0.0)
+ {
+ fStart = 0.0;
+ }
+
+ if(fEnd < 0.0)
+ {
+ fEnd = 0.0;
+ }
+
+ if(fEnd < fStart)
+ {
+ fEnd = fStart;
+ }
+
+ // iterate and consume pieces with fLength. First subdivide to reduce input to line segments
+ const B2DPolygon aCandidate(rCandidate.areControlPointsUsed() ? rCandidate.getDefaultAdaptiveSubdivision() : rCandidate);
+ const sal_uInt32 nPointCount(aCandidate.count());
+
+ if(nPointCount > 1)
+ {
+ const bool bEndActive(!fTools::equalZero(fEnd));
+ const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount : nPointCount - 1);
+ B2DPoint aCurrent(aCandidate.getB2DPoint(0));
+ double fPositionInEdge(fStart);
+ double fAbsolutePosition(fStart);
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aNext(aCandidate.getB2DPoint(nNextIndex));
+ const B2DVector aEdge(aNext - aCurrent);
+ double fEdgeLength(aEdge.getLength());
+
+ if(!fTools::equalZero(fEdgeLength))
+ {
+ while(fTools::less(fPositionInEdge, fEdgeLength))
+ {
+ // move position on edge forward as long as on edge
+ const double fScalar(fPositionInEdge / fEdgeLength);
+ aRetval.append(aCurrent + (aEdge * fScalar));
+ fPositionInEdge += fLength;
+
+ if(bEndActive)
+ {
+ fAbsolutePosition += fLength;
+
+ if(fTools::more(fAbsolutePosition, fEnd))
+ {
+ break;
+ }
+ }
+ }
+
+ // substract length of current edge
+ fPositionInEdge -= fEdgeLength;
+ }
+
+ if(bEndActive && fTools::more(fAbsolutePosition, fEnd))
+ {
+ break;
+ }
+
+ // prepare next step
+ aCurrent = aNext;
+ }
+
+ // keep closed state
+ aRetval.setClosed(aCandidate.isClosed());
+ }
+ else
+ {
+ // source polygon has only one point, return unchanged
+ aRetval = aCandidate;
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolygon createWaveline(const B2DPolygon& rCandidate, double fWaveWidth, double fWaveHeight)
+ {
+ B2DPolygon aRetval;
+
+ if(fWaveWidth < 0.0)
+ {
+ fWaveWidth = 0.0;
+ }
+
+ if(fWaveHeight < 0.0)
+ {
+ fWaveHeight = 0.0;
+ }
+
+ const bool bHasWidth(!fTools::equalZero(fWaveWidth));
+ const bool bHasHeight(!fTools::equalZero(fWaveHeight));
+
+ if(bHasWidth)
+ {
+ if(bHasHeight)
+ {
+ // width and height, create waveline. First subdivide to reduce input to line segments
+ // of WaveWidth. Last segment may be missing. If this turns out to be a problem, it
+ // may be added here again using the original last point from rCandidate. It may
+ // also be the case that rCandidate was closed. To simplify things it is handled here
+ // as if it was opened.
+ // Result from createEdgesOfGivenLength contains no curved segments, handle as straight
+ // edges.
+ const B2DPolygon aEqualLenghEdges(createEdgesOfGivenLength(rCandidate, fWaveWidth));
+ const sal_uInt32 nPointCount(aEqualLenghEdges.count());
+
+ if(nPointCount > 1)
+ {
+ // iterate over straight edges, add start point
+ B2DPoint aCurrent(aEqualLenghEdges.getB2DPoint(0));
+ aRetval.append(aCurrent);
+
+ for(sal_uInt32 a(0); a < nPointCount - 1; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aNext(aEqualLenghEdges.getB2DPoint(nNextIndex));
+ const B2DVector aEdge(aNext - aCurrent);
+ const B2DVector aPerpendicular(getNormalizedPerpendicular(aEdge));
+ const B2DVector aControlOffset((aEdge * 0.467308) - (aPerpendicular * fWaveHeight));
+
+ // add curve segment
+ aRetval.appendBezierSegment(
+ aCurrent + aControlOffset,
+ aNext - aControlOffset,
+ aNext);
+
+ // prepare next step
+ aCurrent = aNext;
+ }
+ }
+ }
+ else
+ {
+ // width but no height -> return original polygon
+ aRetval = rCandidate;
+ }
+ }
+ else
+ {
+ // no width -> no waveline, stay empty and return
+ }
+
+ return aRetval;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 2D Polygons
+
+ bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, const double& rfSmallValue)
+ {
+ const sal_uInt32 nPointCount(rCandidateA.count());
+
+ if(nPointCount != rCandidateB.count())
+ return false;
+
+ const bool bClosed(rCandidateA.isClosed());
+
+ if(bClosed != rCandidateB.isClosed())
+ return false;
+
+ const bool bAreControlPointsUsed(rCandidateA.areControlPointsUsed());
+
+ if(bAreControlPointsUsed != rCandidateB.areControlPointsUsed())
+ return false;
+
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ const B2DPoint aPoint(rCandidateA.getB2DPoint(a));
+
+ if(!aPoint.equal(rCandidateB.getB2DPoint(a), rfSmallValue))
+ return false;
+
+ if(bAreControlPointsUsed)
+ {
+ const basegfx::B2DPoint aPrev(rCandidateA.getPrevControlPoint(a));
+
+ if(!aPrev.equal(rCandidateB.getPrevControlPoint(a), rfSmallValue))
+ return false;
+
+ const basegfx::B2DPoint aNext(rCandidateA.getNextControlPoint(a));
+
+ if(!aNext.equal(rCandidateB.getNextControlPoint(a), rfSmallValue))
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB)
+ {
+ const double fSmallValue(fTools::getSmallValue());
+
+ return equal(rCandidateA, rCandidateB, fSmallValue);
+ }
+
+ // snap points of horizontal or vertical edges to discrete values
+ B2DPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolygon& rCandidate)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 1)
+ {
+ // Start by copying the source polygon to get a writeable copy. The closed state is
+ // copied by aRetval's initialisation, too, so no need to copy it in this method
+ B2DPolygon aRetval(rCandidate);
+
+ // prepare geometry data. Get rounded from original
+ B2ITuple aPrevTuple(basegfx::fround(rCandidate.getB2DPoint(nPointCount - 1)));
+ B2DPoint aCurrPoint(rCandidate.getB2DPoint(0));
+ B2ITuple aCurrTuple(basegfx::fround(aCurrPoint));
+
+ // loop over all points. This will also snap the implicit closing edge
+ // even when not closed, but that's no problem here
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ // get next point. Get rounded from original
+ const bool bLastRun(a + 1 == nPointCount);
+ const sal_uInt32 nNextIndex(bLastRun ? 0 : a + 1);
+ const B2DPoint aNextPoint(rCandidate.getB2DPoint(nNextIndex));
+ const B2ITuple aNextTuple(basegfx::fround(aNextPoint));
+
+ // get the states
+ const bool bPrevVertical(aPrevTuple.getX() == aCurrTuple.getX());
+ const bool bNextVertical(aNextTuple.getX() == aCurrTuple.getX());
+ const bool bPrevHorizontal(aPrevTuple.getY() == aCurrTuple.getY());
+ const bool bNextHorizontal(aNextTuple.getY() == aCurrTuple.getY());
+ const bool bSnapX(bPrevVertical || bNextVertical);
+ const bool bSnapY(bPrevHorizontal || bNextHorizontal);
+
+ if(bSnapX || bSnapY)
+ {
+ const B2DPoint aSnappedPoint(
+ bSnapX ? aCurrTuple.getX() : aCurrPoint.getX(),
+ bSnapY ? aCurrTuple.getY() : aCurrPoint.getY());
+
+ aRetval.setB2DPoint(a, aSnappedPoint);
+ }
+
+ // prepare next point
+ if(!bLastRun)
+ {
+ aPrevTuple = aCurrTuple;
+ aCurrPoint = aNextPoint;
+ aCurrTuple = aNextTuple;
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolygontriangulator.cxx b/basegfx/source/polygon/b2dpolygontriangulator.cxx
new file mode 100644
index 000000000000..2454a3d1ab58
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolygontriangulator.cxx
@@ -0,0 +1,469 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/polygon/b2dpolygontriangulator.hxx>
+#include <osl/diagnose.h>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ class EdgeEntry
+ {
+ EdgeEntry* mpNext;
+ B2DPoint maStart;
+ B2DPoint maEnd;
+ double mfAtan2;
+
+ public:
+ EdgeEntry(const B2DPoint& rStart, const B2DPoint& rEnd)
+ : mpNext(0L),
+ maStart(rStart),
+ maEnd(rEnd),
+ mfAtan2(0.0)
+ {
+ // make sure edge goes down. If horizontal, let it go to the right (left-handed).
+ bool bSwap(false);
+
+ if(::basegfx::fTools::equal(maStart.getY(), maEnd.getY()))
+ {
+ if(maStart.getX() > maEnd.getX())
+ {
+ bSwap = true;
+ }
+ }
+ else if(maStart.getY() > maEnd.getY())
+ {
+ bSwap = true;
+ }
+
+ if(bSwap)
+ {
+ maStart = rEnd;
+ maEnd = rStart;
+ }
+
+ mfAtan2 = atan2(maEnd.getY() - maStart.getY(), maEnd.getX() - maStart.getX());
+ }
+
+ ~EdgeEntry()
+ {
+ }
+
+ bool operator<(const EdgeEntry& rComp) const
+ {
+ if(::basegfx::fTools::equal(maStart.getY(), rComp.maStart.getY()))
+ {
+ if(::basegfx::fTools::equal(maStart.getX(), rComp.maStart.getX()))
+ {
+ // same in x and y -> same start point. Sort emitting vectors from left to right.
+ return (mfAtan2 > rComp.mfAtan2);
+ }
+
+ return (maStart.getX() < rComp.maStart.getX());
+ }
+
+ return (maStart.getY() < rComp.maStart.getY());
+ }
+
+ bool operator==(const EdgeEntry& rComp) const
+ {
+ return (maStart.equal(rComp.maStart) && maEnd.equal(rComp.maEnd));
+ }
+
+ bool operator!=(const EdgeEntry& rComp) const
+ {
+ return !(*this == rComp);
+ }
+
+ const B2DPoint& getStart() const { return maStart; }
+ const B2DPoint& getEnd() const { return maEnd; }
+
+ EdgeEntry* getNext() const { return mpNext; }
+ void setNext(EdgeEntry* pNext) { mpNext = pNext; }
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ typedef ::std::vector< EdgeEntry > EdgeEntries;
+ typedef ::std::vector< EdgeEntry* > EdgeEntryPointers;
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ class Triangulator
+ {
+ EdgeEntry* mpList;
+ EdgeEntries maStartEntries;
+ EdgeEntryPointers maNewEdgeEntries;
+ B2DPolygon maResult;
+
+ void handleClosingEdge(const B2DPoint& rStart, const B2DPoint& rEnd);
+ bool CheckPointInTriangle(EdgeEntry* pEdgeA, EdgeEntry* pEdgeB, const B2DPoint& rTestPoint);
+ void createTriangle(const B2DPoint& rA, const B2DPoint& rB, const B2DPoint& rC);
+
+ public:
+ Triangulator(const B2DPolyPolygon& rCandidate);
+ ~Triangulator();
+
+ const B2DPolygon getResult() const { return maResult; }
+ };
+
+ void Triangulator::handleClosingEdge(const B2DPoint& rStart, const B2DPoint& rEnd)
+ {
+ // create an entry, else the comparison might use the wrong edges
+ EdgeEntry aNew(rStart, rEnd);
+ EdgeEntry* pCurr = mpList;
+ EdgeEntry* pPrev = 0L;
+
+ while(pCurr
+ && pCurr->getStart().getY() <= aNew.getStart().getY()
+ && *pCurr != aNew)
+ {
+ pPrev = pCurr;
+ pCurr = pCurr->getNext();
+ }
+
+ if(pCurr && *pCurr == aNew)
+ {
+ // found closing edge, remove
+ if(pPrev)
+ {
+ pPrev->setNext(pCurr->getNext());
+ }
+ else
+ {
+ mpList = pCurr->getNext();
+ }
+ }
+ else
+ {
+ // insert closing edge
+ EdgeEntry* pNew = new EdgeEntry(aNew);
+ maNewEdgeEntries.push_back(pNew);
+ pCurr = mpList;
+ pPrev = 0L;
+
+ while(pCurr && *pCurr < *pNew)
+ {
+ pPrev = pCurr;
+ pCurr = pCurr->getNext();
+ }
+
+ if(pPrev)
+ {
+ pNew->setNext(pPrev->getNext());
+ pPrev->setNext(pNew);
+ }
+ else
+ {
+ pNew->setNext(mpList);
+ mpList = pNew;
+ }
+ }
+ }
+
+ bool Triangulator::CheckPointInTriangle(EdgeEntry* pEdgeA, EdgeEntry* pEdgeB, const B2DPoint& rTestPoint)
+ {
+ // inside triangle or on edge?
+ if(tools::isPointInTriangle(pEdgeA->getStart(), pEdgeA->getEnd(), pEdgeB->getEnd(), rTestPoint, true))
+ {
+ // but not on point
+ if(!rTestPoint.equal(pEdgeA->getEnd()) && !rTestPoint.equal(pEdgeB->getEnd()))
+ {
+ // found point in triangle -> split triangle inserting two edges
+ EdgeEntry* pStart = new EdgeEntry(pEdgeA->getStart(), rTestPoint);
+ EdgeEntry* pEnd = new EdgeEntry(*pStart);
+ maNewEdgeEntries.push_back(pStart);
+ maNewEdgeEntries.push_back(pEnd);
+
+ pStart->setNext(pEnd);
+ pEnd->setNext(pEdgeA->getNext());
+ pEdgeA->setNext(pStart);
+
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ void Triangulator::createTriangle(const B2DPoint& rA, const B2DPoint& rB, const B2DPoint& rC)
+ {
+ maResult.append(rA);
+ maResult.append(rB);
+ maResult.append(rC);
+ }
+
+ // consume as long as there are edges
+ Triangulator::Triangulator(const B2DPolyPolygon& rCandidate)
+ : mpList(0L)
+ {
+ // add all available edges to the single linked local list which will be sorted
+ // by Y,X,atan2 when adding nodes
+ if(rCandidate.count())
+ {
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ const B2DPolygon aPolygonCandidate(rCandidate.getB2DPolygon(a));
+ const sal_uInt32 nCount(aPolygonCandidate.count());
+
+ if(nCount > 2L)
+ {
+ B2DPoint aPrevPnt(aPolygonCandidate.getB2DPoint(nCount - 1L));
+
+ for(sal_uInt32 b(0L); b < nCount; b++)
+ {
+ B2DPoint aNextPnt(aPolygonCandidate.getB2DPoint(b));
+
+ if( !aPrevPnt.equal(aNextPnt) )
+ {
+ maStartEntries.push_back(EdgeEntry(aPrevPnt, aNextPnt));
+ }
+
+ aPrevPnt = aNextPnt;
+ }
+ }
+ }
+
+ if(maStartEntries.size())
+ {
+ // sort initial list
+ ::std::sort(maStartEntries.begin(), maStartEntries.end());
+
+ // insert to own simply linked list
+ EdgeEntries::iterator aPos(maStartEntries.begin());
+ mpList = &(*aPos++);
+ EdgeEntry* pLast = mpList;
+
+ while(aPos != maStartEntries.end())
+ {
+ EdgeEntry* pEntry = &(*aPos++);
+ pLast->setNext(pEntry);
+ pLast = pEntry;
+ }
+ }
+ }
+
+ while(mpList)
+ {
+ if(mpList->getNext() && mpList->getNext()->getStart().equal(mpList->getStart()))
+ {
+ // next candidate. There are two edges and start point is equal.
+ // Length is not zero.
+ EdgeEntry* pEdgeA = mpList;
+ EdgeEntry* pEdgeB = pEdgeA->getNext();
+
+ if( pEdgeA->getEnd().equal(pEdgeB->getEnd()) )
+ {
+ // start and end equal -> neutral triangle, delete both
+ mpList = pEdgeB->getNext();
+ }
+ else
+ {
+ const B2DVector aLeft(pEdgeA->getEnd() - pEdgeA->getStart());
+ const B2DVector aRight(pEdgeB->getEnd() - pEdgeA->getStart());
+
+ if(ORIENTATION_NEUTRAL == getOrientation(aLeft, aRight))
+ {
+ // edges are parallel and have different length -> neutral triangle,
+ // delete both edges and handle closing edge
+ mpList = pEdgeB->getNext();
+ handleClosingEdge(pEdgeA->getEnd(), pEdgeB->getEnd());
+ }
+ else
+ {
+ // not parallel, look for points inside
+ B2DRange aRange(pEdgeA->getStart(), pEdgeA->getEnd());
+ aRange.expand(pEdgeB->getEnd());
+ EdgeEntry* pTestEdge = pEdgeB->getNext();
+ bool bNoPointInTriangle(true);
+
+ // look for start point in triangle
+ while(bNoPointInTriangle && pTestEdge)
+ {
+ if(aRange.getMaxY() < pTestEdge->getStart().getY())
+ {
+ // edge is below test range and edges are sorted -> stop looking
+ break;
+ }
+ else
+ {
+ // do not look for edges with same start point, they are sorted and cannot end inside.
+ if(!pTestEdge->getStart().equal(pEdgeA->getStart()))
+ {
+ if(aRange.isInside(pTestEdge->getStart()))
+ {
+ bNoPointInTriangle = CheckPointInTriangle(pEdgeA, pEdgeB, pTestEdge->getStart());
+ }
+ }
+ }
+
+ // next candidate
+ pTestEdge = pTestEdge->getNext();
+ }
+
+ if(bNoPointInTriangle)
+ {
+ // look for end point in triange
+ pTestEdge = pEdgeB->getNext();
+
+ while(bNoPointInTriangle && pTestEdge)
+ {
+ if(aRange.getMaxY() < pTestEdge->getStart().getY())
+ {
+ // edge is below test range and edges are sorted -> stop looking
+ break;
+ }
+ else
+ {
+ // do not look for edges with same end point, they are sorted and cannot end inside.
+ if(!pTestEdge->getEnd().equal(pEdgeA->getStart()))
+ {
+ if(aRange.isInside(pTestEdge->getEnd()))
+ {
+ bNoPointInTriangle = CheckPointInTriangle(pEdgeA, pEdgeB, pTestEdge->getEnd());
+ }
+ }
+ }
+
+ // next candidate
+ pTestEdge = pTestEdge->getNext();
+ }
+ }
+
+ if(bNoPointInTriangle)
+ {
+ // create triangle, remove edges, handle closing edge
+ mpList = pEdgeB->getNext();
+ createTriangle(pEdgeA->getStart(), pEdgeB->getEnd(), pEdgeA->getEnd());
+ handleClosingEdge(pEdgeA->getEnd(), pEdgeB->getEnd());
+ }
+ }
+ }
+ }
+ else
+ {
+ // only one entry at start point, delete it
+ mpList = mpList->getNext();
+ }
+ }
+ }
+
+ Triangulator::~Triangulator()
+ {
+ EdgeEntryPointers::iterator aIter(maNewEdgeEntries.begin());
+
+ while(aIter != maNewEdgeEntries.end())
+ {
+ delete (*aIter++);
+ }
+ }
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace triangulator
+ {
+ B2DPolygon triangulate(const B2DPolygon& rCandidate)
+ {
+ B2DPolygon aRetval;
+
+ // subdivide locally (triangulate does not work with beziers), remove double and neutral points
+ B2DPolygon aCandidate(rCandidate.areControlPointsUsed() ? tools::adaptiveSubdivideByAngle(rCandidate) : rCandidate);
+ aCandidate.removeDoublePoints();
+ aCandidate = tools::removeNeutralPoints(aCandidate);
+
+ if(2L == aCandidate.count())
+ {
+ // candidate IS a triangle, just append
+ aRetval.append(aCandidate);
+ }
+ else if(aCandidate.count() > 2L)
+ {
+ if(tools::isConvex(aCandidate))
+ {
+ // polygon is convex, just use a triangle fan
+ tools::addTriangleFan(aCandidate, aRetval);
+ }
+ else
+ {
+ // polygon is concave.
+ const B2DPolyPolygon aCandPolyPoly(aCandidate);
+ Triangulator aTriangulator(aCandPolyPoly);
+ aRetval = aTriangulator.getResult();
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolygon triangulate(const B2DPolyPolygon& rCandidate)
+ {
+ B2DPolygon aRetval;
+
+ // subdivide locally (triangulate does not work with beziers)
+ B2DPolyPolygon aCandidate(rCandidate.areControlPointsUsed() ? tools::adaptiveSubdivideByAngle(rCandidate) : rCandidate);
+
+ if(1L == aCandidate.count())
+ {
+ // single polygon -> single polygon triangulation
+ const B2DPolygon aSinglePolygon(aCandidate.getB2DPolygon(0L));
+ aRetval = triangulate(aSinglePolygon);
+ }
+ else
+ {
+ Triangulator aTriangulator(aCandidate);
+ aRetval = aTriangulator.getResult();
+ }
+
+ return aRetval;
+ }
+ } // end of namespace triangulator
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolypolygon.cxx b/basegfx/source/polygon/b2dpolypolygon.cxx
new file mode 100644
index 000000000000..af337a5bcc75
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolypolygon.cxx
@@ -0,0 +1,435 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <rtl/instance.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+
+#include <functional>
+#include <vector>
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+
+class ImplB2DPolyPolygon
+{
+ typedef ::std::vector< basegfx::B2DPolygon > PolygonVector;
+
+ PolygonVector maPolygons;
+
+public:
+ ImplB2DPolyPolygon() : maPolygons()
+ {
+ }
+
+ ImplB2DPolyPolygon(const basegfx::B2DPolygon& rToBeCopied) :
+ maPolygons(1,rToBeCopied)
+ {
+ }
+
+ bool operator==(const ImplB2DPolyPolygon& rPolygonList) const
+ {
+ // same polygon count?
+ if(maPolygons.size() != rPolygonList.maPolygons.size())
+ return false;
+
+ // compare polygon content
+ if(!(maPolygons == rPolygonList.maPolygons))
+ return false;
+
+ return true;
+ }
+
+ const basegfx::B2DPolygon& getB2DPolygon(sal_uInt32 nIndex) const
+ {
+ return maPolygons[nIndex];
+ }
+
+ void setB2DPolygon(sal_uInt32 nIndex, const basegfx::B2DPolygon& rPolygon)
+ {
+ maPolygons[nIndex] = rPolygon;
+ }
+
+ void insert(sal_uInt32 nIndex, const basegfx::B2DPolygon& rPolygon, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rPolygon
+ PolygonVector::iterator aIndex(maPolygons.begin());
+ aIndex += nIndex;
+ maPolygons.insert(aIndex, nCount, rPolygon);
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const basegfx::B2DPolyPolygon& rPolyPolygon)
+ {
+ const sal_uInt32 nCount = rPolyPolygon.count();
+
+ if(nCount)
+ {
+ // add nCount polygons from rPolyPolygon
+ maPolygons.reserve(maPolygons.size() + nCount);
+ PolygonVector::iterator aIndex(maPolygons.begin());
+ aIndex += nIndex;
+
+ for(sal_uInt32 a(0L); a < nCount; a++)
+ {
+ aIndex = maPolygons.insert(aIndex, rPolyPolygon.getB2DPolygon(a));
+ aIndex++;
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // remove polygon data
+ PolygonVector::iterator aStart(maPolygons.begin());
+ aStart += nIndex;
+ const PolygonVector::iterator aEnd(aStart + nCount);
+
+ maPolygons.erase(aStart, aEnd);
+ }
+ }
+
+ sal_uInt32 count() const
+ {
+ return maPolygons.size();
+ }
+
+ void setClosed(bool bNew)
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].setClosed(bNew);
+ }
+ }
+
+ void flip()
+ {
+ std::for_each( maPolygons.begin(),
+ maPolygons.end(),
+ std::mem_fun_ref( &basegfx::B2DPolygon::flip ));
+ }
+
+ void removeDoublePoints()
+ {
+ std::for_each( maPolygons.begin(),
+ maPolygons.end(),
+ std::mem_fun_ref( &basegfx::B2DPolygon::removeDoublePoints ));
+ }
+
+ void transform(const basegfx::B2DHomMatrix& rMatrix)
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].transform(rMatrix);
+ }
+ }
+
+ void makeUnique()
+ {
+ std::for_each( maPolygons.begin(),
+ maPolygons.end(),
+ std::mem_fun_ref( &basegfx::B2DPolygon::makeUnique ));
+ }
+
+ const basegfx::B2DPolygon* begin() const
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return &maPolygons.front();
+ }
+
+ const basegfx::B2DPolygon* end() const
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return (&maPolygons.back())+1;
+ }
+
+ basegfx::B2DPolygon* begin()
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return &maPolygons.front();
+ }
+
+ basegfx::B2DPolygon* end()
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return &(maPolygons.back())+1;
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace { struct DefaultPolyPolygon: public rtl::Static<B2DPolyPolygon::ImplType,
+ DefaultPolyPolygon> {}; }
+
+ B2DPolyPolygon::B2DPolyPolygon() :
+ mpPolyPolygon(DefaultPolyPolygon::get())
+ {
+ }
+
+ B2DPolyPolygon::B2DPolyPolygon(const B2DPolyPolygon& rPolyPolygon) :
+ mpPolyPolygon(rPolyPolygon.mpPolyPolygon)
+ {
+ }
+
+ B2DPolyPolygon::B2DPolyPolygon(const B2DPolygon& rPolygon) :
+ mpPolyPolygon( ImplB2DPolyPolygon(rPolygon) )
+ {
+ }
+
+ B2DPolyPolygon::~B2DPolyPolygon()
+ {
+ }
+
+ B2DPolyPolygon& B2DPolyPolygon::operator=(const B2DPolyPolygon& rPolyPolygon)
+ {
+ mpPolyPolygon = rPolyPolygon.mpPolyPolygon;
+ return *this;
+ }
+
+ void B2DPolyPolygon::makeUnique()
+ {
+ mpPolyPolygon.make_unique();
+ mpPolyPolygon->makeUnique();
+ }
+
+ bool B2DPolyPolygon::operator==(const B2DPolyPolygon& rPolyPolygon) const
+ {
+ if(mpPolyPolygon.same_object(rPolyPolygon.mpPolyPolygon))
+ return true;
+
+ return ((*mpPolyPolygon) == (*rPolyPolygon.mpPolyPolygon));
+ }
+
+ bool B2DPolyPolygon::operator!=(const B2DPolyPolygon& rPolyPolygon) const
+ {
+ return !((*this) == rPolyPolygon);
+ }
+
+ sal_uInt32 B2DPolyPolygon::count() const
+ {
+ return mpPolyPolygon->count();
+ }
+
+ B2DPolygon B2DPolyPolygon::getB2DPolygon(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolyPolygon->count(), "B2DPolyPolygon access outside range (!)");
+
+ return mpPolyPolygon->getB2DPolygon(nIndex);
+ }
+
+ void B2DPolyPolygon::setB2DPolygon(sal_uInt32 nIndex, const B2DPolygon& rPolygon)
+ {
+ OSL_ENSURE(nIndex < mpPolyPolygon->count(), "B2DPolyPolygon access outside range (!)");
+
+ if(getB2DPolygon(nIndex) != rPolygon)
+ mpPolyPolygon->setB2DPolygon(nIndex, rPolygon);
+ }
+
+ bool B2DPolyPolygon::areControlPointsUsed() const
+ {
+ for(sal_uInt32 a(0L); a < mpPolyPolygon->count(); a++)
+ {
+ const B2DPolygon& rPolygon = mpPolyPolygon->getB2DPolygon(a);
+
+ if(rPolygon.areControlPointsUsed())
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void B2DPolyPolygon::insert(sal_uInt32 nIndex, const B2DPolygon& rPolygon, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex <= mpPolyPolygon->count(), "B2DPolyPolygon Insert outside range (!)");
+
+ if(nCount)
+ mpPolyPolygon->insert(nIndex, rPolygon, nCount);
+ }
+
+ void B2DPolyPolygon::append(const B2DPolygon& rPolygon, sal_uInt32 nCount)
+ {
+ if(nCount)
+ mpPolyPolygon->insert(mpPolyPolygon->count(), rPolygon, nCount);
+ }
+
+ B2DPolyPolygon B2DPolyPolygon::getDefaultAdaptiveSubdivision() const
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < mpPolyPolygon->count(); a++)
+ {
+ aRetval.append(mpPolyPolygon->getB2DPolygon(a).getDefaultAdaptiveSubdivision());
+ }
+
+ return aRetval;
+ }
+
+ B2DRange B2DPolyPolygon::getB2DRange() const
+ {
+ B2DRange aRetval;
+
+ for(sal_uInt32 a(0L); a < mpPolyPolygon->count(); a++)
+ {
+ aRetval.expand(mpPolyPolygon->getB2DPolygon(a).getB2DRange());
+ }
+
+ return aRetval;
+ }
+
+ void B2DPolyPolygon::insert(sal_uInt32 nIndex, const B2DPolyPolygon& rPolyPolygon)
+ {
+ OSL_ENSURE(nIndex <= mpPolyPolygon->count(), "B2DPolyPolygon Insert outside range (!)");
+
+ if(rPolyPolygon.count())
+ mpPolyPolygon->insert(nIndex, rPolyPolygon);
+ }
+
+ void B2DPolyPolygon::append(const B2DPolyPolygon& rPolyPolygon)
+ {
+ if(rPolyPolygon.count())
+ mpPolyPolygon->insert(mpPolyPolygon->count(), rPolyPolygon);
+ }
+
+ void B2DPolyPolygon::remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex + nCount <= mpPolyPolygon->count(), "B2DPolyPolygon Remove outside range (!)");
+
+ if(nCount)
+ mpPolyPolygon->remove(nIndex, nCount);
+ }
+
+ void B2DPolyPolygon::clear()
+ {
+ mpPolyPolygon = DefaultPolyPolygon::get();
+ }
+
+ bool B2DPolyPolygon::isClosed() const
+ {
+ bool bRetval(true);
+
+ // PolyPOlygon is closed when all contained Polygons are closed or
+ // no Polygon exists.
+ for(sal_uInt32 a(0L); bRetval && a < mpPolyPolygon->count(); a++)
+ {
+ if(!(mpPolyPolygon->getB2DPolygon(a)).isClosed())
+ {
+ bRetval = false;
+ }
+ }
+
+ return bRetval;
+ }
+
+ void B2DPolyPolygon::setClosed(bool bNew)
+ {
+ if(bNew != isClosed())
+ mpPolyPolygon->setClosed(bNew);
+ }
+
+ void B2DPolyPolygon::flip()
+ {
+ if(mpPolyPolygon->count())
+ {
+ mpPolyPolygon->flip();
+ }
+ }
+
+ bool B2DPolyPolygon::hasDoublePoints() const
+ {
+ bool bRetval(false);
+
+ for(sal_uInt32 a(0L); !bRetval && a < mpPolyPolygon->count(); a++)
+ {
+ if((mpPolyPolygon->getB2DPolygon(a)).hasDoublePoints())
+ {
+ bRetval = true;
+ }
+ }
+
+ return bRetval;
+ }
+
+ void B2DPolyPolygon::removeDoublePoints()
+ {
+ if(hasDoublePoints())
+ mpPolyPolygon->removeDoublePoints();
+ }
+
+ void B2DPolyPolygon::transform(const B2DHomMatrix& rMatrix)
+ {
+ if(mpPolyPolygon->count() && !rMatrix.isIdentity())
+ {
+ mpPolyPolygon->transform(rMatrix);
+ }
+ }
+
+ const B2DPolygon* B2DPolyPolygon::begin() const
+ {
+ return mpPolyPolygon->begin();
+ }
+
+ const B2DPolygon* B2DPolyPolygon::end() const
+ {
+ return mpPolyPolygon->end();
+ }
+
+ B2DPolygon* B2DPolyPolygon::begin()
+ {
+ return mpPolyPolygon->begin();
+ }
+
+ B2DPolygon* B2DPolyPolygon::end()
+ {
+ return mpPolyPolygon->end();
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolypolygoncutter.cxx b/basegfx/source/polygon/b2dpolypolygoncutter.cxx
new file mode 100644
index 000000000000..b6dad1e917fa
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolypolygoncutter.cxx
@@ -0,0 +1,1017 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <osl/diagnose.h>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolygoncutandtouch.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/curve/b2dcubicbezier.hxx>
+#include <vector>
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ //////////////////////////////////////////////////////////////////////////////
+
+ struct StripHelper
+ {
+ B2DRange maRange;
+ sal_Int32 mnDepth;
+ B2VectorOrientation meOrinetation;
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ struct PN
+ {
+ public:
+ B2DPoint maPoint;
+ sal_uInt32 mnI;
+ sal_uInt32 mnIP;
+ sal_uInt32 mnIN;
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ struct VN
+ {
+ public:
+ B2DVector maPrev;
+ B2DVector maNext;
+
+ // to have the correct curve segments in the crossover checks,
+ // it is necessary to keep the original next vectors, too. Else,
+ // it may happen to use a already switched next vector which
+ // would interpolate the wrong comparison point
+ B2DVector maOriginalNext;
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ struct SN
+ {
+ public:
+ PN* mpPN;
+
+ bool operator<(const SN& rComp) const
+ {
+ if(fTools::equal(mpPN->maPoint.getX(), rComp.mpPN->maPoint.getX()))
+ {
+ if(fTools::equal(mpPN->maPoint.getY(), rComp.mpPN->maPoint.getY()))
+ {
+ return (mpPN->mnI < rComp.mpPN->mnI);
+ }
+ else
+ {
+ return fTools::less(mpPN->maPoint.getY(), rComp.mpPN->maPoint.getY());
+ }
+ }
+ else
+ {
+ return fTools::less(mpPN->maPoint.getX(), rComp.mpPN->maPoint.getX());
+ }
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ typedef ::std::vector< PN > PNV;
+ typedef ::std::vector< VN > VNV;
+ typedef ::std::vector< SN > SNV;
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ class solver
+ {
+ private:
+ const B2DPolyPolygon maOriginal;
+ PNV maPNV;
+ VNV maVNV;
+ SNV maSNV;
+
+ unsigned mbIsCurve : 1;
+ unsigned mbChanged : 1;
+
+ void impAddPolygon(const sal_uInt32 aPos, const B2DPolygon& rGeometry)
+ {
+ const sal_uInt32 nCount(rGeometry.count());
+ PN aNewPN;
+ VN aNewVN;
+ SN aNewSN;
+
+ for(sal_uInt32 a(0); a < nCount; a++)
+ {
+ const B2DPoint aPoint(rGeometry.getB2DPoint(a));
+ aNewPN.maPoint = aPoint;
+ aNewPN.mnI = aPos + a;
+ aNewPN.mnIP = aPos + ((a != 0) ? a - 1 : nCount - 1);
+ aNewPN.mnIN = aPos + ((a + 1 == nCount) ? 0 : a + 1);
+ maPNV.push_back(aNewPN);
+
+ if(mbIsCurve)
+ {
+ aNewVN.maPrev = rGeometry.getPrevControlPoint(a) - aPoint;
+ aNewVN.maNext = rGeometry.getNextControlPoint(a) - aPoint;
+ aNewVN.maOriginalNext = aNewVN.maNext;
+ maVNV.push_back(aNewVN);
+ }
+
+ aNewSN.mpPN = &maPNV[maPNV.size() - 1];
+ maSNV.push_back(aNewSN);
+ }
+ }
+
+ bool impLeftOfEdges(const B2DVector& rVecA, const B2DVector& rVecB, const B2DVector& rTest)
+ {
+ // tests if rTest is left of both directed line segments along the line -rVecA, rVecB. Test is
+ // with border.
+ if(rVecA.cross(rVecB) > 0.0)
+ {
+ // b is left turn seen from a, test if Test is left of both and so inside (left is seeen as inside)
+ const bool bBoolA(fTools::moreOrEqual(rVecA.cross(rTest), 0.0));
+ const bool bBoolB(fTools::lessOrEqual(rVecB.cross(rTest), 0.0));
+
+ return (bBoolA && bBoolB);
+ }
+ else
+ {
+ // b is right turn seen from a, test if Test is right of both and so outside (left is seeen as inside)
+ const bool bBoolA(fTools::lessOrEqual(rVecA.cross(rTest), 0.0));
+ const bool bBoolB(fTools::moreOrEqual(rVecB.cross(rTest), 0.0));
+
+ return (!(bBoolA && bBoolB));
+ }
+ }
+
+ void impSwitchNext(PN& rPNa, PN& rPNb)
+ {
+ ::std::swap(rPNa.mnIN, rPNb.mnIN);
+
+ if(mbIsCurve)
+ {
+ VN& rVNa = maVNV[rPNa.mnI];
+ VN& rVNb = maVNV[rPNb.mnI];
+
+ ::std::swap(rVNa.maNext, rVNb.maNext);
+ }
+
+ if(!mbChanged)
+ {
+ mbChanged = true;
+ }
+ }
+
+ B2DCubicBezier createSegment(const PN& rPN, bool bPrev) const
+ {
+ const B2DPoint& rStart(rPN.maPoint);
+ const B2DPoint& rEnd(maPNV[bPrev ? rPN.mnIP : rPN.mnIN].maPoint);
+ const B2DVector& rCPA(bPrev ? maVNV[rPN.mnI].maPrev : maVNV[rPN.mnI].maNext);
+ // Use maOriginalNext, not maNext to create the original (yet unchanged)
+ // curve segment. Otherwise, this segment would NOT ne correct.
+ const B2DVector& rCPB(bPrev ? maVNV[maPNV[rPN.mnIP].mnI].maOriginalNext : maVNV[maPNV[rPN.mnIN].mnI].maPrev);
+
+ return B2DCubicBezier(rStart, rStart + rCPA, rEnd + rCPB, rEnd);
+ }
+
+ void impHandleCommon(PN& rPNa, PN& rPNb)
+ {
+ if(mbIsCurve)
+ {
+ const B2DCubicBezier aNextA(createSegment(rPNa, false));
+ const B2DCubicBezier aPrevA(createSegment(rPNa, true));
+
+ if(aNextA.equal(aPrevA))
+ {
+ // deadend on A (identical edge)
+ return;
+ }
+
+ const B2DCubicBezier aNextB(createSegment(rPNb, false));
+ const B2DCubicBezier aPrevB(createSegment(rPNb, true));
+
+ if(aNextB.equal(aPrevB))
+ {
+ // deadend on B (identical edge)
+ return;
+ }
+
+ if(aPrevA.equal(aPrevB))
+ {
+ // common edge in same direction
+ if(aNextA.equal(aNextB))
+ {
+ // common edge in same direction continues
+ return;
+ }
+ else
+ {
+ // common edge in same direction leave
+ // action is done on enter
+ return;
+ }
+ }
+ else if(aPrevA.equal(aNextB))
+ {
+ // common edge in opposite direction
+ if(aNextA.equal(aPrevB))
+ {
+ // common edge in opposite direction continues
+ return;
+ }
+ else
+ {
+ // common edge in opposite direction leave
+ impSwitchNext(rPNa, rPNb);
+ }
+ }
+ else if(aNextA.equal(aNextB))
+ {
+ // common edge in same direction enter
+ // search leave edge
+ PN* pPNa2 = &maPNV[rPNa.mnIN];
+ PN* pPNb2 = &maPNV[rPNb.mnIN];
+ bool bOnEdge(true);
+
+ do
+ {
+ const B2DCubicBezier aNextA2(createSegment(*pPNa2, false));
+ const B2DCubicBezier aNextB2(createSegment(*pPNb2, false));
+
+ if(aNextA2.equal(aNextB2))
+ {
+ pPNa2 = &maPNV[pPNa2->mnIN];
+ pPNb2 = &maPNV[pPNb2->mnIN];
+ }
+ else
+ {
+ bOnEdge = false;
+ }
+ }
+ while(bOnEdge && pPNa2 != &rPNa && pPNa2 != &rPNa);
+
+ if(bOnEdge)
+ {
+ // loop over two identical polygon paths
+ return;
+ }
+ else
+ {
+ // enter at rPNa, rPNb; leave at pPNa2, pPNb2. No common edges
+ // at enter/leave. Check for crossover.
+ const B2DVector aPrevCA(aPrevA.interpolatePoint(0.5) - aPrevA.getStartPoint());
+ const B2DVector aNextCA(aNextA.interpolatePoint(0.5) - aNextA.getStartPoint());
+ const B2DVector aPrevCB(aPrevB.interpolatePoint(0.5) - aPrevB.getStartPoint());
+ const bool bEnter(impLeftOfEdges(aPrevCA, aNextCA, aPrevCB));
+
+ const B2DCubicBezier aNextA2(createSegment(*pPNa2, false));
+ const B2DCubicBezier aPrevA2(createSegment(*pPNa2, true));
+ const B2DCubicBezier aNextB2(createSegment(*pPNb2, false));
+ const B2DVector aPrevCA2(aPrevA2.interpolatePoint(0.5) - aPrevA2.getStartPoint());
+ const B2DVector aNextCA2(aNextA2.interpolatePoint(0.5) - aNextA2.getStartPoint());
+ const B2DVector aNextCB2(aNextB2.interpolatePoint(0.5) - aNextB2.getStartPoint());
+ const bool bLeave(impLeftOfEdges(aPrevCA2, aNextCA2, aNextCB2));
+
+ if(bEnter != bLeave)
+ {
+ // crossover
+ impSwitchNext(rPNa, rPNb);
+ }
+ }
+ }
+ else if(aNextA.equal(aPrevB))
+ {
+ // common edge in opposite direction enter
+ impSwitchNext(rPNa, rPNb);
+ }
+ else
+ {
+ // no common edges, check for crossover
+ const B2DVector aPrevCA(aPrevA.interpolatePoint(0.5) - aPrevA.getStartPoint());
+ const B2DVector aNextCA(aNextA.interpolatePoint(0.5) - aNextA.getStartPoint());
+ const B2DVector aPrevCB(aPrevB.interpolatePoint(0.5) - aPrevB.getStartPoint());
+ const B2DVector aNextCB(aNextB.interpolatePoint(0.5) - aNextB.getStartPoint());
+
+ const bool bEnter(impLeftOfEdges(aPrevCA, aNextCA, aPrevCB));
+ const bool bLeave(impLeftOfEdges(aPrevCA, aNextCA, aNextCB));
+
+ if(bEnter != bLeave)
+ {
+ // crossover
+ impSwitchNext(rPNa, rPNb);
+ }
+ }
+ }
+ else
+ {
+ const B2DPoint& rNextA(maPNV[rPNa.mnIN].maPoint);
+ const B2DPoint& rPrevA(maPNV[rPNa.mnIP].maPoint);
+
+ if(rNextA.equal(rPrevA))
+ {
+ // deadend on A
+ return;
+ }
+
+ const B2DPoint& rNextB(maPNV[rPNb.mnIN].maPoint);
+ const B2DPoint& rPrevB(maPNV[rPNb.mnIP].maPoint);
+
+ if(rNextB.equal(rPrevB))
+ {
+ // deadend on B
+ return;
+ }
+
+ if(rPrevA.equal(rPrevB))
+ {
+ // common edge in same direction
+ if(rNextA.equal(rNextB))
+ {
+ // common edge in same direction continues
+ return;
+ }
+ else
+ {
+ // common edge in same direction leave
+ // action is done on enter
+ return;
+ }
+ }
+ else if(rPrevA.equal(rNextB))
+ {
+ // common edge in opposite direction
+ if(rNextA.equal(rPrevB))
+ {
+ // common edge in opposite direction continues
+ return;
+ }
+ else
+ {
+ // common edge in opposite direction leave
+ impSwitchNext(rPNa, rPNb);
+ }
+ }
+ else if(rNextA.equal(rNextB))
+ {
+ // common edge in same direction enter
+ // search leave edge
+ PN* pPNa2 = &maPNV[rPNa.mnIN];
+ PN* pPNb2 = &maPNV[rPNb.mnIN];
+ bool bOnEdge(true);
+
+ do
+ {
+ const B2DPoint& rNextA2(maPNV[pPNa2->mnIN].maPoint);
+ const B2DPoint& rNextB2(maPNV[pPNb2->mnIN].maPoint);
+
+ if(rNextA2.equal(rNextB2))
+ {
+ pPNa2 = &maPNV[pPNa2->mnIN];
+ pPNb2 = &maPNV[pPNb2->mnIN];
+ }
+ else
+ {
+ bOnEdge = false;
+ }
+ }
+ while(bOnEdge && pPNa2 != &rPNa && pPNa2 != &rPNa);
+
+ if(bOnEdge)
+ {
+ // loop over two identical polygon paths
+ return;
+ }
+ else
+ {
+ // enter at rPNa, rPNb; leave at pPNa2, pPNb2. No common edges
+ // at enter/leave. Check for crossover.
+ const B2DPoint& aPointE(rPNa.maPoint);
+ const B2DVector aPrevAE(rPrevA - aPointE);
+ const B2DVector aNextAE(rNextA - aPointE);
+ const B2DVector aPrevBE(rPrevB - aPointE);
+
+ const B2DPoint& aPointL(pPNa2->maPoint);
+ const B2DVector aPrevAL(maPNV[pPNa2->mnIP].maPoint - aPointL);
+ const B2DVector aNextAL(maPNV[pPNa2->mnIN].maPoint - aPointL);
+ const B2DVector aNextBL(maPNV[pPNb2->mnIN].maPoint - aPointL);
+
+ const bool bEnter(impLeftOfEdges(aPrevAE, aNextAE, aPrevBE));
+ const bool bLeave(impLeftOfEdges(aPrevAL, aNextAL, aNextBL));
+
+ if(bEnter != bLeave)
+ {
+ // crossover; switch start or end
+ impSwitchNext(rPNa, rPNb);
+ }
+ }
+ }
+ else if(rNextA.equal(rPrevB))
+ {
+ // common edge in opposite direction enter
+ impSwitchNext(rPNa, rPNb);
+ }
+ else
+ {
+ // no common edges, check for crossover
+ const B2DPoint& aPoint(rPNa.maPoint);
+ const B2DVector aPrevA(rPrevA - aPoint);
+ const B2DVector aNextA(rNextA - aPoint);
+ const B2DVector aPrevB(rPrevB - aPoint);
+ const B2DVector aNextB(rNextB - aPoint);
+
+ const bool bEnter(impLeftOfEdges(aPrevA, aNextA, aPrevB));
+ const bool bLeave(impLeftOfEdges(aPrevA, aNextA, aNextB));
+
+ if(bEnter != bLeave)
+ {
+ // crossover
+ impSwitchNext(rPNa, rPNb);
+ }
+ }
+ }
+ }
+
+ void impSolve()
+ {
+ // sort by point to identify common nodes
+ ::std::sort(maSNV.begin(), maSNV.end());
+
+ // handle common nodes
+ const sal_uInt32 nNodeCount(maSNV.size());
+
+ for(sal_uInt32 a(0); a < nNodeCount - 1; a++)
+ {
+ // test a before using it, not after. Also use nPointCount instead of aSortNodes.size()
+ PN& rPNb = *(maSNV[a].mpPN);
+
+ for(sal_uInt32 b(a + 1); b < nNodeCount && rPNb.maPoint.equal(maSNV[b].mpPN->maPoint); b++)
+ {
+ impHandleCommon(rPNb, *maSNV[b].mpPN);
+ }
+ }
+ }
+
+ public:
+ solver(const B2DPolygon& rOriginal)
+ : maOriginal(B2DPolyPolygon(rOriginal)),
+ mbIsCurve(false),
+ mbChanged(false)
+ {
+ const sal_uInt32 nOriginalCount(rOriginal.count());
+
+ if(nOriginalCount)
+ {
+ B2DPolygon aGeometry(tools::addPointsAtCutsAndTouches(rOriginal));
+ aGeometry.removeDoublePoints();
+ aGeometry = tools::simplifyCurveSegments(aGeometry);
+ mbIsCurve = aGeometry.areControlPointsUsed();
+
+ const sal_uInt32 nPointCount(aGeometry.count());
+
+ // If it's not a pezier polygon, at least four points are needed to create
+ // a self-intersection. If it's a bezier polygon, the minimum point number
+ // is two, since with a single point You get a curve, but no self-intersection
+ if(nPointCount > 3 || (nPointCount > 1 && mbIsCurve))
+ {
+ // reserve space in point, control and sort vector.
+ maSNV.reserve(nPointCount);
+ maPNV.reserve(nPointCount);
+ maVNV.reserve(mbIsCurve ? nPointCount : 0);
+
+ // fill data
+ impAddPolygon(0, aGeometry);
+
+ // solve common nodes
+ impSolve();
+ }
+ }
+ }
+
+ solver(const B2DPolyPolygon& rOriginal)
+ : maOriginal(rOriginal),
+ mbIsCurve(false),
+ mbChanged(false)
+ {
+ sal_uInt32 nOriginalCount(maOriginal.count());
+
+ if(nOriginalCount)
+ {
+ B2DPolyPolygon aGeometry(tools::addPointsAtCutsAndTouches(maOriginal, true));
+ aGeometry.removeDoublePoints();
+ aGeometry = tools::simplifyCurveSegments(aGeometry);
+ mbIsCurve = aGeometry.areControlPointsUsed();
+ nOriginalCount = aGeometry.count();
+
+ if(nOriginalCount)
+ {
+ sal_uInt32 nPointCount(0);
+ sal_uInt32 a(0);
+
+ // count points
+ for(a = 0; a < nOriginalCount; a++)
+ {
+ const B2DPolygon aCandidate(aGeometry.getB2DPolygon(a));
+ const sal_uInt32 nCandCount(aCandidate.count());
+
+ // If it's not a bezier curve, at least three points would be needed to have a
+ // topological relevant (not empty) polygon. Since its not known here if trivial
+ // edges (dead ends) will be kept or sorted out, add non-bezier polygons with
+ // more than one point.
+ // For bezier curves, the minimum for defining an area is also one.
+ if(nCandCount)
+ {
+ nPointCount += nCandCount;
+ }
+ }
+
+ if(nPointCount)
+ {
+ // reserve space in point, control and sort vector.
+ maSNV.reserve(nPointCount);
+ maPNV.reserve(nPointCount);
+ maVNV.reserve(mbIsCurve ? nPointCount : 0);
+
+ // fill data
+ sal_uInt32 nInsertIndex(0);
+
+ for(a = 0; a < nOriginalCount; a++)
+ {
+ const B2DPolygon aCandidate(aGeometry.getB2DPolygon(a));
+ const sal_uInt32 nCandCount(aCandidate.count());
+
+ // use same condition as above, the data vector is
+ // pre-allocated
+ if(nCandCount)
+ {
+ impAddPolygon(nInsertIndex, aCandidate);
+ nInsertIndex += nCandCount;
+ }
+ }
+
+ // solve common nodes
+ impSolve();
+ }
+ }
+ }
+ }
+
+ B2DPolyPolygon getB2DPolyPolygon()
+ {
+ if(mbChanged)
+ {
+ B2DPolyPolygon aRetval;
+ const sal_uInt32 nCount(maPNV.size());
+ sal_uInt32 nCountdown(nCount);
+
+ for(sal_uInt32 a(0); nCountdown && a < nCount; a++)
+ {
+ PN& rPN = maPNV[a];
+
+ if(SAL_MAX_UINT32 != rPN.mnI)
+ {
+ // unused node, start new part polygon
+ B2DPolygon aNewPart;
+ PN* pPNCurr = &rPN;
+
+ do
+ {
+ const B2DPoint& rPoint = pPNCurr->maPoint;
+ aNewPart.append(rPoint);
+
+ if(mbIsCurve)
+ {
+ const VN& rVNCurr = maVNV[pPNCurr->mnI];
+
+ if(!rVNCurr.maPrev.equalZero())
+ {
+ aNewPart.setPrevControlPoint(aNewPart.count() - 1, rPoint + rVNCurr.maPrev);
+ }
+
+ if(!rVNCurr.maNext.equalZero())
+ {
+ aNewPart.setNextControlPoint(aNewPart.count() - 1, rPoint + rVNCurr.maNext);
+ }
+ }
+
+ pPNCurr->mnI = SAL_MAX_UINT32;
+ nCountdown--;
+ pPNCurr = &(maPNV[pPNCurr->mnIN]);
+ }
+ while(pPNCurr != &rPN && SAL_MAX_UINT32 != pPNCurr->mnI);
+
+ // close and add
+ aNewPart.setClosed(true);
+ aRetval.append(aNewPart);
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ // no change, return original
+ return maOriginal;
+ }
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ //////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon solveCrossovers(const B2DPolyPolygon& rCandidate)
+ {
+ if(rCandidate.count() > 1L)
+ {
+ solver aSolver(rCandidate);
+ return aSolver.getB2DPolyPolygon();
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon solveCrossovers(const B2DPolygon& rCandidate)
+ {
+ solver aSolver(rCandidate);
+ return aSolver.getB2DPolyPolygon();
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon stripNeutralPolygons(const B2DPolyPolygon& rCandidate)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ if(ORIENTATION_NEUTRAL != tools::getOrientation(aCandidate))
+ {
+ aRetval.append(aCandidate);
+ }
+ }
+
+ return aRetval;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon stripDispensablePolygons(const B2DPolyPolygon& rCandidate, bool bKeepAboveZero)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ if(nCount)
+ {
+ if(nCount == 1L)
+ {
+ if(!bKeepAboveZero && ORIENTATION_POSITIVE == tools::getOrientation(rCandidate.getB2DPolygon(0L)))
+ {
+ aRetval = rCandidate;
+ }
+ }
+ else
+ {
+ sal_uInt32 a, b;
+ ::std::vector< StripHelper > aHelpers;
+ aHelpers.resize(nCount);
+
+ for(a = 0L; a < nCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+ StripHelper* pNewHelper = &(aHelpers[a]);
+ pNewHelper->maRange = tools::getRange(aCandidate);
+ pNewHelper->meOrinetation = tools::getOrientation(aCandidate);
+ pNewHelper->mnDepth = (ORIENTATION_NEGATIVE == pNewHelper->meOrinetation ? -1L : 0L);
+ }
+
+ for(a = 0L; a < nCount - 1L; a++)
+ {
+ const B2DPolygon aCandA(rCandidate.getB2DPolygon(a));
+ StripHelper& rHelperA = aHelpers[a];
+
+ for(b = a + 1L; b < nCount; b++)
+ {
+ const B2DPolygon aCandB(rCandidate.getB2DPolygon(b));
+ StripHelper& rHelperB = aHelpers[b];
+ const bool bAInB(rHelperB.maRange.isInside(rHelperA.maRange) && tools::isInside(aCandB, aCandA, true));
+ const bool bBInA(rHelperA.maRange.isInside(rHelperB.maRange) && tools::isInside(aCandA, aCandB, true));
+
+ if(bAInB && bBInA)
+ {
+ // congruent
+ if(rHelperA.meOrinetation == rHelperB.meOrinetation)
+ {
+ // two polys or two holes. Lower one of them to get one of them out of the way.
+ // Since each will be contained in the other one, both will be increased, too.
+ // So, for lowering, increase only one of them
+ rHelperA.mnDepth++;
+ }
+ else
+ {
+ // poly and hole. They neutralize, so get rid of both. Move securely below zero.
+ rHelperA.mnDepth = -((sal_Int32)nCount);
+ rHelperB.mnDepth = -((sal_Int32)nCount);
+ }
+ }
+ else
+ {
+ if(bAInB)
+ {
+ if(ORIENTATION_NEGATIVE == rHelperB.meOrinetation)
+ {
+ rHelperA.mnDepth--;
+ }
+ else
+ {
+ rHelperA.mnDepth++;
+ }
+ }
+ else if(bBInA)
+ {
+ if(ORIENTATION_NEGATIVE == rHelperA.meOrinetation)
+ {
+ rHelperB.mnDepth--;
+ }
+ else
+ {
+ rHelperB.mnDepth++;
+ }
+ }
+ }
+ }
+ }
+
+ for(a = 0L; a < nCount; a++)
+ {
+ const StripHelper& rHelper = aHelpers[a];
+ bool bAcceptEntry(bKeepAboveZero ? 1L <= rHelper.mnDepth : 0L == rHelper.mnDepth);
+
+ if(bAcceptEntry)
+ {
+ aRetval.append(rCandidate.getB2DPolygon(a));
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ B2DPolyPolygon prepareForPolygonOperation(const B2DPolygon& rCandidate)
+ {
+ solver aSolver(rCandidate);
+ B2DPolyPolygon aRetval(stripNeutralPolygons(aSolver.getB2DPolyPolygon()));
+
+ return correctOrientations(aRetval);
+ }
+
+ B2DPolyPolygon prepareForPolygonOperation(const B2DPolyPolygon& rCandidate)
+ {
+ solver aSolver(rCandidate);
+ B2DPolyPolygon aRetval(stripNeutralPolygons(aSolver.getB2DPolyPolygon()));
+
+ return correctOrientations(aRetval);
+ }
+
+ B2DPolyPolygon solvePolygonOperationOr(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB)
+ {
+ if(!rCandidateA.count())
+ {
+ return rCandidateB;
+ }
+ else if(!rCandidateB.count())
+ {
+ return rCandidateA;
+ }
+ else
+ {
+ // concatenate polygons, solve crossovers and throw away all sub-polygons
+ // which have a depth other than 0.
+ B2DPolyPolygon aRetval(rCandidateA);
+
+ aRetval.append(rCandidateB);
+ aRetval = solveCrossovers(aRetval);
+ aRetval = stripNeutralPolygons(aRetval);
+
+ return stripDispensablePolygons(aRetval, false);
+ }
+ }
+
+ B2DPolyPolygon solvePolygonOperationXor(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB)
+ {
+ if(!rCandidateA.count())
+ {
+ return rCandidateB;
+ }
+ else if(!rCandidateB.count())
+ {
+ return rCandidateA;
+ }
+ else
+ {
+ // XOR is pretty simple: By definition it is the simple concatenation of
+ // the single polygons since we imply XOR fill rule. Make it intersection-free
+ // and correct orientations
+ B2DPolyPolygon aRetval(rCandidateA);
+
+ aRetval.append(rCandidateB);
+ aRetval = solveCrossovers(aRetval);
+ aRetval = stripNeutralPolygons(aRetval);
+
+ return correctOrientations(aRetval);
+ }
+ }
+
+ B2DPolyPolygon solvePolygonOperationAnd(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB)
+ {
+ if(!rCandidateA.count())
+ {
+ return B2DPolyPolygon();
+ }
+ else if(!rCandidateB.count())
+ {
+ return B2DPolyPolygon();
+ }
+ else
+ {
+ // concatenate polygons, solve crossovers and throw away all sub-polygons
+ // with a depth of < 1. This means to keep all polygons where at least two
+ // polygons do overlap.
+ B2DPolyPolygon aRetval(rCandidateA);
+
+ aRetval.append(rCandidateB);
+ aRetval = solveCrossovers(aRetval);
+ aRetval = stripNeutralPolygons(aRetval);
+
+ return stripDispensablePolygons(aRetval, true);
+ }
+ }
+
+ B2DPolyPolygon solvePolygonOperationDiff(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB)
+ {
+ if(!rCandidateA.count())
+ {
+ return B2DPolyPolygon();
+ }
+ else if(!rCandidateB.count())
+ {
+ return rCandidateA;
+ }
+ else
+ {
+ // Make B topologically to holes and append to A
+ B2DPolyPolygon aRetval(rCandidateB);
+
+ aRetval.flip();
+ aRetval.append(rCandidateA);
+
+ // solve crossovers and throw away all sub-polygons which have a
+ // depth other than 0.
+ aRetval = basegfx::tools::solveCrossovers(aRetval);
+ aRetval = basegfx::tools::stripNeutralPolygons(aRetval);
+
+ return basegfx::tools::stripDispensablePolygons(aRetval, false);
+ }
+ }
+
+ B2DPolyPolygon mergeToSinglePolyPolygon(const std::vector< basegfx::B2DPolyPolygon >& rInput)
+ {
+ std::vector< basegfx::B2DPolyPolygon > aInput(rInput);
+
+ // first step: prepareForPolygonOperation and simple merge of non-overlapping
+ // PolyPolygons for speedup; this is possible for the wanted OR-operation
+ if(aInput.size())
+ {
+ std::vector< basegfx::B2DPolyPolygon > aResult;
+ aResult.reserve(aInput.size());
+
+ for(sal_uInt32 a(0); a < aInput.size(); a++)
+ {
+ const basegfx::B2DPolyPolygon aCandidate(prepareForPolygonOperation(aInput[a]));
+
+ if(aResult.size())
+ {
+ const B2DRange aCandidateRange(aCandidate.getB2DRange());
+ bool bCouldMergeSimple(false);
+
+ for(sal_uInt32 b(0); !bCouldMergeSimple && b < aResult.size(); b++)
+ {
+ basegfx::B2DPolyPolygon aTarget(aResult[b]);
+ const B2DRange aTargetRange(aTarget.getB2DRange());
+
+ if(!aCandidateRange.overlaps(aTargetRange))
+ {
+ aTarget.append(aCandidate);
+ aResult[b] = aTarget;
+ bCouldMergeSimple = true;
+ }
+ }
+
+ if(!bCouldMergeSimple)
+ {
+ aResult.push_back(aCandidate);
+ }
+ }
+ else
+ {
+ aResult.push_back(aCandidate);
+ }
+ }
+
+ aInput = aResult;
+ }
+
+ // second step: melt pairwise to a single PolyPolygon
+ while(aInput.size() > 1)
+ {
+ std::vector< basegfx::B2DPolyPolygon > aResult;
+ aResult.reserve((aInput.size() / 2) + 1);
+
+ for(sal_uInt32 a(0); a < aInput.size(); a += 2)
+ {
+ if(a + 1 < aInput.size())
+ {
+ // a pair for processing
+ aResult.push_back(solvePolygonOperationOr(aInput[a], aInput[a + 1]));
+ }
+ else
+ {
+ // last single PolyPolygon; copy to target to not lose it
+ aResult.push_back(aInput[a]);
+ }
+ }
+
+ aInput = aResult;
+ }
+
+ // third step: get result
+ if(1 == aInput.size())
+ {
+ return aInput[0];
+ }
+
+ return B2DPolyPolygon();
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolypolygonrasterconverter.cxx b/basegfx/source/polygon/b2dpolypolygonrasterconverter.cxx
new file mode 100644
index 000000000000..421ec9c43078
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolypolygonrasterconverter.cxx
@@ -0,0 +1,705 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/polygon/b2dpolypolygonrasterconverter.hxx>
+
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <boost/mem_fn.hpp>
+
+#include <algorithm>
+
+namespace basegfx
+{
+ class radixSort {
+
+ //! public interface
+ public:
+
+ //! default constructor
+ radixSort( void );
+
+ //! destructor
+ ~radixSort( void );
+
+ bool sort( const float *pInput, sal_uInt32 nNumElements, sal_uInt32 dwStride );
+
+ inline sal_uInt32 *indices( void ) const { return m_indices1; }
+
+ //! private attributes
+ private:
+
+ // current size of index list
+ sal_uInt32 m_current_size;
+
+ // last known size of index list
+ sal_uInt32 m_previous_size;
+
+ // index lists
+ sal_uInt32 *m_indices1;
+ sal_uInt32 *m_indices2;
+
+ sal_uInt32 m_counter[256*4];
+ sal_uInt32 m_offset[256];
+
+ //! private methods
+ private:
+
+ bool resize( sal_uInt32 nNumElements );
+ inline void reset_indices( void );
+ bool prepareCounters( const float *pInput, sal_uInt32 nNumElements, sal_uInt32 dwStride );
+ };
+
+ inline radixSort::radixSort( void ) {
+
+ m_indices1 = NULL;
+ m_indices2 = NULL;
+ m_current_size = 0;
+ m_previous_size = 0;
+
+ reset_indices();
+ }
+
+ inline radixSort::~radixSort( void ) {
+
+ delete [] m_indices2;
+ delete [] m_indices1;
+ }
+
+ bool radixSort::resize( sal_uInt32 nNumElements ) {
+
+ if(nNumElements==m_previous_size)
+ return true;
+
+ if(nNumElements > m_current_size) {
+
+ // release index lists
+ if(m_indices2)
+ delete [] m_indices2;
+ if(m_indices1)
+ delete [] m_indices1;
+
+ // allocate new index lists
+ m_indices1 = new sal_uInt32[nNumElements];
+ m_indices2 = new sal_uInt32[nNumElements];
+
+ // check for out of memory situation
+ if(!m_indices1 || !m_indices2) {
+ delete [] m_indices1;
+ delete [] m_indices2;
+ m_indices1 = NULL;
+ m_indices2 = NULL;
+ m_current_size = 0;
+ return false;
+ }
+
+ m_current_size = nNumElements;
+ }
+
+ m_previous_size = nNumElements;
+
+ // initialize indices
+ reset_indices();
+
+ return true;
+ }
+
+ inline void radixSort::reset_indices( void ) {
+
+ for(sal_uInt32 i=0;i<m_current_size;i++)
+ m_indices1[i] = i;
+ }
+
+ bool radixSort::prepareCounters( const float *pInput, sal_uInt32 nNumElements, sal_uInt32 dwStride ) {
+
+ // clear counters
+ sal_uInt32 *ptr = m_counter;
+ for(int i=0; i<64; ++i)
+ {
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ *ptr++ = 0;
+ }
+
+ // prepare pointers to relevant memory addresses
+ sal_uInt8 *p = (sal_uInt8*)pInput;
+ sal_uInt8 *pe = p+(nNumElements*dwStride);
+ sal_uInt32 *h0= &m_counter[0];
+ sal_uInt32 *h1= &m_counter[256];
+ sal_uInt32 *h2= &m_counter[512];
+ sal_uInt32 *h3= &m_counter[768];
+
+ sal_uInt32 *Indices = m_indices1;
+ float previous_value = *(float *)(((sal_uInt8 *)pInput)+(m_indices1[0]*dwStride));
+ bool bSorted = true;
+ while(p!=pe) {
+ float value = *(float *)(((sal_uInt8 *)pInput)+((*Indices++)*dwStride));
+ if(value<previous_value) {
+ bSorted = false;
+ break;
+ }
+ previous_value = value;
+ h0[*p++]++;
+ h1[*p++]++;
+ h2[*p++]++;
+ h3[*p++]++;
+ p += dwStride-4;
+ }
+ if(bSorted)
+ return true;
+ while(p!=pe) {
+ h0[*p++]++;
+ h1[*p++]++;
+ h2[*p++]++;
+ h3[*p++]++;
+ p += dwStride-4;
+ }
+ return false;
+ }
+
+ bool radixSort::sort( const float *pInput, sal_uInt32 nNumElements, sal_uInt32 dwStride ) {
+
+ if(!(pInput))
+ return false;
+ if(!(nNumElements))
+ return false;
+ if(!(resize(nNumElements)))
+ return false;
+
+ // prepare radix counters, return if already sorted
+ if(prepareCounters(pInput,nNumElements,dwStride))
+ return true;
+
+ // count number of negative values
+ sal_uInt32 num_negatives = 0;
+ sal_uInt32 *h3= &m_counter[768];
+ for(sal_uInt32 i=128;i<256;i++)
+ num_negatives += h3[i];
+
+ // perform passes, one for each byte
+ for(sal_uInt32 j=0;j<4;j++) {
+
+ // ignore this pass if all values have the same byte
+ bool bRun = true;
+ sal_uInt32 *current_counter = &m_counter[j<<8];
+ sal_uInt8 unique_value = *(((sal_uInt8*)pInput)+j);
+ if(current_counter[unique_value]==nNumElements)
+ bRun=false;
+
+ // does the incoming byte contain the sign bit?
+ sal_uInt32 i;
+ if(j!=3) {
+ if(bRun) {
+ m_offset[0] = 0;
+ for(i=1;i<256;i++)
+ m_offset[i] = m_offset[i-1] + current_counter[i-1];
+ sal_uInt8 *InputBytes = (sal_uInt8 *)pInput;
+ sal_uInt32 *Indices = m_indices1;
+ sal_uInt32 *IndicesEnd = &m_indices1[nNumElements];
+ InputBytes += j;
+ while(Indices!=IndicesEnd) {
+ sal_uInt32 id = *Indices++;
+ m_indices2[m_offset[InputBytes[id*dwStride]]++] = id;
+ }
+ sal_uInt32 *Tmp = m_indices1;
+ m_indices1 = m_indices2;
+ m_indices2 = Tmp;
+ }
+ }
+ else {
+ if(bRun) {
+ m_offset[0] = num_negatives;
+ for(i=1;i<128;i++)
+ m_offset[i] = m_offset[i-1] + current_counter[i-1];
+ m_offset[255] = 0;
+ for(i=0;i<127;i++)
+ m_offset[254-i] = m_offset[255-i] + current_counter[255-i];
+ for(i=128;i<256;i++)
+ m_offset[i] += current_counter[i];
+ for(i=0;i<nNumElements;i++) {
+ sal_uInt32 Radix = (*(sal_uInt32 *)(((sal_uInt8 *)pInput)+(m_indices1[i]*dwStride)))>>24;
+ if(Radix<128) m_indices2[m_offset[Radix]++] = m_indices1[i];
+ else m_indices2[--m_offset[Radix]] = m_indices1[i];
+ }
+ sal_uInt32 *Tmp = m_indices1;
+ m_indices1 = m_indices2;
+ m_indices2 = Tmp;
+ }
+ else {
+ if(unique_value>=128) {
+ for(i=0;i<nNumElements;i++)
+ m_indices2[i] = m_indices1[nNumElements-i-1];
+ sal_uInt32 *Tmp = m_indices1;
+ m_indices1 = m_indices2;
+ m_indices2 = Tmp;
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+
+ //************************************************************
+ // Internal vertex storage of B2DPolyPolygonRasterConverter
+ //************************************************************
+
+ inline B2DPolyPolygonRasterConverter::Vertex::Vertex() :
+ aP1(),
+ aP2(),
+ bDownwards( true )
+ {
+ }
+
+ inline B2DPolyPolygonRasterConverter::Vertex::Vertex( const B2DPoint& rP1, const B2DPoint& rP2, bool bDown ) :
+ aP1( rP1 ),
+ aP2( rP2 ),
+ bDownwards( bDown )
+ {
+ }
+
+
+ //************************************************************
+ // Helper class for holding horizontal line segments during raster
+ // conversion
+ //************************************************************
+
+ namespace
+ {
+ class ImplLineNode
+ {
+ public:
+ sal_Int32 mnYCounter;
+ float mfXPos;
+ float mfXDelta;
+ bool mbDownwards;
+
+ public:
+ /**rP1 and rP2 must not have equal y values, when rounded
+ to integer!
+ */
+ ImplLineNode(const B2DPoint& rP1, const B2DPoint& rP2, bool bDown) :
+ mnYCounter( fround(rP2.getY()) - fround(rP1.getY()) ),
+ mfXPos( (float)(rP1.getX()) ),
+ mfXDelta((float) ((rP2.getX() - rP1.getX()) / mnYCounter) ),
+ mbDownwards( bDown )
+ {
+ }
+
+ /// get current x position
+ const float& getXPos() const
+ {
+ return mfXPos;
+ }
+
+ /// returns true, if line ends on this Y value
+ float nextLine()
+ {
+ if(mnYCounter>=0)
+ {
+ // go one step in Y
+ mfXPos += mfXDelta;
+ --mnYCounter;
+ return mfXDelta;
+ }
+
+ return 0.0f;
+ }
+
+ bool isEnded()
+ {
+ return mnYCounter<=0;
+ }
+
+ bool isDownwards()
+ {
+ return mbDownwards;
+ }
+ };
+ }
+
+ typedef ::std::vector<ImplLineNode> VectorOfLineNodes;
+
+
+ //************************************************************
+ // Base2D PolyPolygon Raster Converter (Rasterizer)
+ //************************************************************
+
+ namespace
+ {
+ struct VertexComparator
+ {
+ bool operator()( const B2DPolyPolygonRasterConverter::Vertex& rLHS,
+ const B2DPolyPolygonRasterConverter::Vertex& rRHS )
+ {
+ return rLHS.aP1.getX() < rRHS.aP1.getX();
+ }
+ };
+ }
+
+ void B2DPolyPolygonRasterConverter::init()
+ {
+ if(!maPolyPolyRectangle.isEmpty())
+ {
+ const sal_Int32 nMinY( fround(maPolyPolyRectangle.getMinY()) );
+ const sal_Int32 nScanlines(fround(maPolyPolyRectangle.getMaxY()) - nMinY);
+
+ maScanlines.resize( nScanlines+1 );
+
+ // add all polygons
+ for( sal_uInt32 i(0), nCount(maPolyPolygon.count());
+ i < nCount;
+ ++i )
+ {
+ // add all vertices
+ const B2DPolygon& rPoly( maPolyPolygon.getB2DPolygon(i) );
+ for( sal_uInt32 k(0), nVertices(rPoly.count());
+ k<nVertices;
+ ++k )
+ {
+ const B2DPoint& rP1( rPoly.getB2DPoint(k) );
+ const B2DPoint& rP2( rPoly.getB2DPoint( (k + 1) % nVertices ) );
+
+ const sal_Int32 nVertexYP1( fround(rP1.getY()) );
+ const sal_Int32 nVertexYP2( fround(rP2.getY()) );
+
+ // insert only vertices which are not strictly
+ // horizontal. Note that the ImplLineNode relies on
+ // this.
+ if(nVertexYP1 != nVertexYP2)
+ {
+ if( nVertexYP2 < nVertexYP1 )
+ {
+ const sal_Int32 nStartScanline(nVertexYP2 - nMinY);
+
+ // swap edges
+ maScanlines[ nStartScanline ].push_back( Vertex(rP2, rP1, false) );
+ }
+ else
+ {
+ const sal_Int32 nStartScanline(nVertexYP1 - nMinY);
+
+ maScanlines[ nStartScanline ].push_back( Vertex(rP1, rP2, true) );
+ }
+ }
+ }
+ }
+
+ // now sort all scanlines, with increasing x coordinates
+ VectorOfVertexVectors::iterator aIter( maScanlines.begin() );
+ VectorOfVertexVectors::iterator aEnd( maScanlines.end() );
+ while( aIter != aEnd )
+ {
+ ::std::sort( aIter->begin(),
+ aIter->end(),
+ VertexComparator() );
+ ++aIter;
+ }
+ }
+ }
+
+ B2DPolyPolygonRasterConverter::B2DPolyPolygonRasterConverter( const B2DPolyPolygon& rPolyPoly ) :
+ maPolyPolygon( rPolyPoly ),
+ maPolyPolyRectangle( tools::getRange( rPolyPoly ) ),
+ maScanlines()
+ {
+ init();
+ }
+
+ namespace
+ {
+ B2DRectangle getCombinedBounds( const B2DPolyPolygon& rPolyPolyRaster,
+ const B2DRectangle& rRasterArea )
+ {
+ B2DRectangle aRect( tools::getRange( rPolyPolyRaster ) );
+ aRect.expand( rRasterArea );
+
+ return aRect;
+ }
+ }
+
+ B2DPolyPolygonRasterConverter::B2DPolyPolygonRasterConverter( const B2DPolyPolygon& rPolyPolyRaster,
+ const B2DRectangle& rRasterArea ) :
+ maPolyPolygon( rPolyPolyRaster ),
+ maPolyPolyRectangle(
+ getCombinedBounds( rPolyPolyRaster,
+ rRasterArea ) ),
+ maScanlines()
+ {
+ init();
+ }
+
+ B2DPolyPolygonRasterConverter::~B2DPolyPolygonRasterConverter()
+ {
+ }
+
+ namespace
+ {
+ class LineNodeGenerator
+ {
+ public:
+ LineNodeGenerator( VectorOfLineNodes& rActiveVertices ) :
+ mrActiveVertices( rActiveVertices )
+ {
+ }
+
+ void operator()( const B2DPolyPolygonRasterConverter::Vertex& rVertex )
+ {
+ mrActiveVertices.push_back( ImplLineNode(rVertex.aP1,
+ rVertex.aP2,
+ rVertex.bDownwards) );
+ }
+
+ private:
+ VectorOfLineNodes& mrActiveVertices;
+ };
+
+ struct LineNodeComparator
+ {
+ bool operator()( const ImplLineNode& rLHS, const ImplLineNode& rRHS )
+ {
+ return rLHS.getXPos() < rRHS.getXPos();
+ }
+ };
+ }
+
+ void B2DPolyPolygonRasterConverter::rasterConvert( FillRule eFillRule )
+ {
+ if( maScanlines.empty() )
+ return; // no scanlines at all -> bail out
+
+ const sal_Int32 nMinY( fround(maPolyPolyRectangle.getMinY()) );
+ const sal_Int32 nScanlines(fround(maPolyPolyRectangle.getMaxY()) - nMinY);
+
+ // Vector of currently active vertices. A vertex is active, if
+ // it crosses or touches the current scanline.
+ VectorOfLineNodes aActiveVertices;
+
+ // mickey's optimized version...
+ radixSort rs;
+ std::size_t nb(0);
+ std::size_t nb_previous(0);
+ bool bSort(false);
+
+ // process each scanline
+ for( sal_Int32 y(0); y <= nScanlines; ++y )
+ {
+ // add vertices which start at current scanline into
+ // active vertex vector
+ ::std::for_each( maScanlines[y].begin(),
+ maScanlines[y].end(),
+ LineNodeGenerator( aActiveVertices ) );
+ nb = aActiveVertices.size();
+ if(nb != nb_previous)
+ {
+ nb_previous = nb;
+ bSort = true;
+ }
+
+ // sort with increasing X
+ if(bSort)
+ {
+ bSort = false;
+
+ if( nb )
+ {
+ rs.sort(&aActiveVertices[0].mfXPos,
+ nb,
+ sizeof(ImplLineNode));
+ }
+ }
+
+ const std::size_t nLen( nb );
+ if( !nLen )
+ {
+ // empty scanline - call derived with an 'off' span
+ // for the full width
+ span( maPolyPolyRectangle.getMinX(),
+ maPolyPolyRectangle.getMaxX(),
+ nMinY + y,
+ false );
+ }
+ else
+ {
+ const sal_Int32 nCurrY( nMinY + y );
+
+ // scanline not empty - forward all scans to derived,
+ // according to selected fill rule
+
+ // TODO(P1): Maybe allow these 'off' span calls to be
+ // switched off (or all 'on' span calls, depending on
+ // use case scenario)
+
+ // sorting didn't change the order of the elements
+ // in memory but prepared a list of indices in sorted order.
+ // thus we now process the nodes with an additional indirection.
+ sal_uInt32 *sorted = rs.indices();
+
+ // call derived with 'off' span for everything left of first active span
+ if( aActiveVertices[sorted[0]].getXPos() > maPolyPolyRectangle.getMinX() )
+ {
+ span( maPolyPolyRectangle.getMinX(),
+ aActiveVertices[sorted[0]].getXPos(),
+ nCurrY,
+ false );
+ }
+
+ switch( eFillRule )
+ {
+ default:
+ OSL_ENSURE(false,
+ "B2DPolyPolygonRasterConverter::rasterConvert(): Unexpected fill rule");
+ return;
+
+ case FillRule_EVEN_ODD:
+ // process each span in current scanline, with
+ // even-odd fill rule
+ for( ::std::size_t i(0), nLength(aActiveVertices.size());
+ i+1 < nLength;
+ ++i )
+ {
+ sal_uInt32 nIndex = sorted[i];
+ sal_uInt32 nNextIndex = sorted[i+1];
+ span( aActiveVertices[nIndex].getXPos(),
+ aActiveVertices[nNextIndex].getXPos(),
+ nCurrY,
+ i % 2 == 0 );
+
+ float delta = aActiveVertices[nIndex].nextLine();
+ if(delta > 0.0f)
+ {
+ if(aActiveVertices[nIndex].getXPos() > aActiveVertices[nNextIndex].getXPos())
+ bSort = true;
+ }
+ else if(delta < 0.0f)
+ {
+ if(i)
+ {
+ sal_uInt32 nPrevIndex = sorted[i-1];
+ if(aActiveVertices[nIndex].getXPos() < aActiveVertices[nPrevIndex].getXPos())
+ bSort = true;
+ }
+ }
+ }
+ break;
+
+ case FillRule_NONZERO_WINDING_NUMBER:
+ // process each span in current scanline, with
+ // non-zero winding numbe fill rule
+ sal_Int32 nWindingNumber(0);
+ for( ::std::size_t i(0), nLength(aActiveVertices.size());
+ i+1 < nLength;
+ ++i )
+ {
+ sal_uInt32 nIndex = sorted[i];
+ sal_uInt32 nNextIndex = sorted[i+1];
+ nWindingNumber += -1 + 2*aActiveVertices[nIndex].isDownwards();
+
+ span( aActiveVertices[nIndex].getXPos(),
+ aActiveVertices[nNextIndex].getXPos(),
+ nCurrY,
+ nWindingNumber != 0 );
+
+ float delta = aActiveVertices[nIndex].nextLine();
+ if(delta > 0.0f)
+ {
+ if(aActiveVertices[nIndex].getXPos() > aActiveVertices[nNextIndex].getXPos())
+ bSort = true;
+ }
+ else if(delta < 0.0f)
+ {
+ if(i)
+ {
+ sal_uInt32 nPrevIndex = sorted[i-1];
+ if(aActiveVertices[nIndex].getXPos() < aActiveVertices[nPrevIndex].getXPos())
+ bSort = true;
+ }
+ }
+ }
+ break;
+ }
+
+ // call derived with 'off' span for everything right of last active span
+ if( aActiveVertices[sorted[nb-1]].getXPos()+1.0 < maPolyPolyRectangle.getMaxX() )
+ {
+ span( aActiveVertices[sorted[nb-1]].getXPos()+1.0,
+ maPolyPolyRectangle.getMaxX(),
+ nCurrY,
+ false );
+ }
+
+ // also call nextLine on very last line node
+ sal_uInt32 nIndex = sorted[nb-1];
+ float delta = aActiveVertices[nIndex].nextLine();
+ if(delta < 0.0f)
+ {
+ if(nb)
+ {
+ sal_uInt32 nPrevIndex = sorted[nb-2];
+ if(aActiveVertices[nIndex].getXPos() < aActiveVertices[nPrevIndex].getXPos())
+ bSort = true;
+ }
+ }
+ }
+
+ // remove line nodes which have ended on the current scanline
+ aActiveVertices.erase( ::std::remove_if( aActiveVertices.begin(),
+ aActiveVertices.end(),
+ ::boost::mem_fn( &ImplLineNode::isEnded ) ),
+ aActiveVertices.end() );
+ nb = aActiveVertices.size();
+ if(nb != nb_previous)
+ {
+ nb_previous = nb;
+ bSort = true;
+ }
+ }
+ }
+}
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dpolypolygontools.cxx b/basegfx/source/polygon/b2dpolypolygontools.cxx
new file mode 100644
index 000000000000..06e9da5fa305
--- /dev/null
+++ b/basegfx/source/polygon/b2dpolypolygontools.cxx
@@ -0,0 +1,588 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+
+#include <numeric>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ B2DPolyPolygon correctOrientations(const B2DPolyPolygon& rCandidate)
+ {
+ B2DPolyPolygon aRetval(rCandidate);
+ const sal_uInt32 nCount(aRetval.count());
+
+ for(sal_uInt32 a(0L); a < nCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+ const B2VectorOrientation aOrientation(tools::getOrientation(aCandidate));
+ sal_uInt32 nDepth(0L);
+
+ for(sal_uInt32 b(0L); b < nCount; b++)
+ {
+ if(b != a)
+ {
+ const B2DPolygon aCompare(rCandidate.getB2DPolygon(b));
+
+ if(tools::isInside(aCompare, aCandidate, true))
+ {
+ nDepth++;
+ }
+ }
+ }
+
+ const bool bShallBeHole(1L == (nDepth & 0x00000001));
+ const bool bIsHole(ORIENTATION_NEGATIVE == aOrientation);
+
+ if(bShallBeHole != bIsHole && ORIENTATION_NEUTRAL != aOrientation)
+ {
+ B2DPolygon aFlipped(aCandidate);
+ aFlipped.flip();
+ aRetval.setB2DPolygon(a, aFlipped);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon correctOutmostPolygon(const B2DPolyPolygon& rCandidate)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount > 1L)
+ {
+ for(sal_uInt32 a(0L); a < nCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+ sal_uInt32 nDepth(0L);
+
+ for(sal_uInt32 b(0L); b < nCount; b++)
+ {
+ if(b != a)
+ {
+ const B2DPolygon aCompare(rCandidate.getB2DPolygon(b));
+
+ if(tools::isInside(aCompare, aCandidate, true))
+ {
+ nDepth++;
+ }
+ }
+ }
+
+ if(!nDepth)
+ {
+ B2DPolyPolygon aRetval(rCandidate);
+
+ if(a != 0L)
+ {
+ // exchange polygon a and polygon 0L
+ aRetval.setB2DPolygon(0L, aCandidate);
+ aRetval.setB2DPolygon(a, rCandidate.getB2DPolygon(0L));
+ }
+
+ // exit
+ return aRetval;
+ }
+ }
+ }
+
+ return rCandidate;
+ }
+
+ B2DPolyPolygon adaptiveSubdivideByDistance(const B2DPolyPolygon& rCandidate, double fDistanceBound)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ if(aCandidate.areControlPointsUsed())
+ {
+ aRetval.append(tools::adaptiveSubdivideByDistance(aCandidate, fDistanceBound));
+ }
+ else
+ {
+ aRetval.append(aCandidate);
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolyPolygon adaptiveSubdivideByAngle(const B2DPolyPolygon& rCandidate, double fAngleBound)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ if(aCandidate.areControlPointsUsed())
+ {
+ aRetval.append(tools::adaptiveSubdivideByAngle(aCandidate, fAngleBound));
+ }
+ else
+ {
+ aRetval.append(aCandidate);
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolyPolygon adaptiveSubdivideByCount(const B2DPolyPolygon& rCandidate, sal_uInt32 nCount)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ if(aCandidate.areControlPointsUsed())
+ {
+ aRetval.append(tools::adaptiveSubdivideByCount(aCandidate, nCount));
+ }
+ else
+ {
+ aRetval.append(aCandidate);
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ bool isInside(const B2DPolyPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+
+ if(1L == nPolygonCount)
+ {
+ return isInside(rCandidate.getB2DPolygon(0L), rPoint, bWithBorder);
+ }
+ else
+ {
+ sal_Int32 nInsideCount(0L);
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aPolygon(rCandidate.getB2DPolygon(a));
+ const bool bInside(isInside(aPolygon, rPoint, bWithBorder));
+
+ if(bInside)
+ {
+ nInsideCount++;
+ }
+ }
+
+ return (nInsideCount % 2L);
+ }
+ }
+
+ B2DRange getRangeWithControlPoints(const B2DPolyPolygon& rCandidate)
+ {
+ B2DRange aRetval;
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ B2DPolygon aCandidate = rCandidate.getB2DPolygon(a);
+ aRetval.expand(tools::getRangeWithControlPoints(aCandidate));
+ }
+
+ return aRetval;
+ }
+
+ B2DRange getRange(const B2DPolyPolygon& rCandidate)
+ {
+ B2DRange aRetval;
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ B2DPolygon aCandidate = rCandidate.getB2DPolygon(a);
+ aRetval.expand(tools::getRange(aCandidate));
+ }
+
+ return aRetval;
+ }
+
+ void applyLineDashing(const B2DPolyPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B2DPolyPolygon* pLineTarget, B2DPolyPolygon* pGapTarget, double fFullDashDotLen)
+ {
+ if(0.0 == fFullDashDotLen && rDotDashArray.size())
+ {
+ // calculate fFullDashDotLen from rDotDashArray
+ fFullDashDotLen = ::std::accumulate(rDotDashArray.begin(), rDotDashArray.end(), 0.0);
+ }
+
+ if(rCandidate.count() && fFullDashDotLen > 0.0)
+ {
+ B2DPolyPolygon aLineTarget, aGapTarget;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ applyLineDashing(
+ aCandidate,
+ rDotDashArray,
+ pLineTarget ? &aLineTarget : 0,
+ pGapTarget ? &aGapTarget : 0,
+ fFullDashDotLen);
+
+ if(pLineTarget)
+ {
+ pLineTarget->append(aLineTarget);
+ }
+
+ if(pGapTarget)
+ {
+ pGapTarget->append(aGapTarget);
+ }
+ }
+ }
+ }
+
+ bool isInEpsilonRange(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ if(isInEpsilonRange(aCandidate, rTestPosition, fDistance))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ B3DPolyPolygon createB3DPolyPolygonFromB2DPolyPolygon(const B2DPolyPolygon& rCandidate, double fZCoordinate)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ aRetval.append(createB3DPolygonFromB2DPolygon(aCandidate, fZCoordinate));
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon createB2DPolyPolygonFromB3DPolyPolygon(const B3DPolyPolygon& rCandidate, const B3DHomMatrix& rMat)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ B3DPolygon aCandidate(rCandidate.getB3DPolygon(a));
+
+ aRetval.append(createB2DPolygonFromB3DPolygon(aCandidate, rMat));
+ }
+
+ return aRetval;
+ }
+
+ double getSmallestDistancePointToPolyPolygon(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rPolygonIndex, sal_uInt32& rEdgeIndex, double& rCut)
+ {
+ double fRetval(DBL_MAX);
+ const double fZero(0.0);
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+ sal_uInt32 nNewEdgeIndex;
+ double fNewCut;
+ const double fNewDistance(getSmallestDistancePointToPolygon(aCandidate, rTestPoint, nNewEdgeIndex, fNewCut));
+
+ if(DBL_MAX == fRetval || fNewDistance < fRetval)
+ {
+ fRetval = fNewDistance;
+ rPolygonIndex = a;
+ rEdgeIndex = nNewEdgeIndex;
+ rCut = fNewCut;
+
+ if(fTools::equal(fRetval, fZero))
+ {
+ // already found zero distance, cannot get better. Ensure numerical zero value and end loop.
+ fRetval = 0.0;
+ break;
+ }
+ }
+ }
+
+ return fRetval;
+ }
+
+ B2DPolyPolygon distort(const B2DPolyPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ aRetval.append(distort(aCandidate, rOriginal, rTopLeft, rTopRight, rBottomLeft, rBottomRight));
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon rotateAroundPoint(const B2DPolyPolygon& rCandidate, const B2DPoint& rCenter, double fAngle)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ aRetval.append(rotateAroundPoint(aCandidate, rCenter, fAngle));
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon expandToCurve(const B2DPolyPolygon& rCandidate)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ aRetval.append(expandToCurve(aCandidate));
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon setContinuity(const B2DPolyPolygon& rCandidate, B2VectorContinuity eContinuity)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidate.getB2DPolygon(a));
+
+ aRetval.append(setContinuity(aCandidate, eContinuity));
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolyPolygon growInNormalDirection(const B2DPolyPolygon& rCandidate, double fValue)
+ {
+ if(0.0 != fValue)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(growInNormalDirection(rCandidate.getB2DPolygon(a), fValue));
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ void correctGrowShrinkPolygonPair(B2DPolyPolygon& /*rOriginal*/, B2DPolyPolygon& /*rGrown*/)
+ {
+ }
+
+ B2DPolyPolygon reSegmentPolyPolygon(const B2DPolyPolygon& rCandidate, sal_uInt32 nSegments)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(reSegmentPolygon(rCandidate.getB2DPolygon(a), nSegments));
+ }
+
+ return aRetval;
+ }
+
+ B2DPolyPolygon interpolate(const B2DPolyPolygon& rOld1, const B2DPolyPolygon& rOld2, double t)
+ {
+ OSL_ENSURE(rOld1.count() == rOld2.count(), "B2DPolyPolygon interpolate: Different geometry (!)");
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rOld1.count(); a++)
+ {
+ aRetval.append(interpolate(rOld1.getB2DPolygon(a), rOld2.getB2DPolygon(a), t));
+ }
+
+ return aRetval;
+ }
+
+ bool isRectangle( const B2DPolyPolygon& rPoly )
+ {
+ // exclude some cheap cases first
+ if( rPoly.count() != 1 )
+ return false;
+
+ return isRectangle( rPoly.getB2DPolygon(0) );
+ }
+
+ // #i76891#
+ B2DPolyPolygon simplifyCurveSegments(const B2DPolyPolygon& rCandidate)
+ {
+ if(rCandidate.areControlPointsUsed())
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(simplifyCurveSegments(rCandidate.getB2DPolygon(a)));
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolyPolygon reSegmentPolyPolygonEdges(const B2DPolyPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(reSegmentPolygonEdges(rCandidate.getB2DPolygon(a), nSubEdges, bHandleCurvedEdges, bHandleStraightEdges));
+ }
+
+ return aRetval;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 2D PolyPolygons
+
+ bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB, const double& rfSmallValue)
+ {
+ const sal_uInt32 nPolygonCount(rCandidateA.count());
+
+ if(nPolygonCount != rCandidateB.count())
+ return false;
+
+ for(sal_uInt32 a(0); a < nPolygonCount; a++)
+ {
+ const B2DPolygon aCandidate(rCandidateA.getB2DPolygon(a));
+
+ if(!equal(aCandidate, rCandidateB.getB2DPolygon(a), rfSmallValue))
+ return false;
+ }
+
+ return true;
+ }
+
+ bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB)
+ {
+ const double fSmallValue(fTools::getSmallValue());
+
+ return equal(rCandidateA, rCandidateB, fSmallValue);
+ }
+
+ B2DPolyPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolyPolygon& rCandidate)
+ {
+ B2DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(snapPointsOfHorizontalOrVerticalEdges(rCandidate.getB2DPolygon(a)));
+ }
+
+ return aRetval;
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dsvgpolypolygon.cxx b/basegfx/source/polygon/b2dsvgpolypolygon.cxx
new file mode 100644
index 000000000000..e17c5073954e
--- /dev/null
+++ b/basegfx/source/polygon/b2dsvgpolypolygon.cxx
@@ -0,0 +1,1111 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/math.hxx>
+
+namespace basegfx
+{
+ namespace tools
+ {
+ namespace
+ {
+ void lcl_skipSpaces(sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 nLen)
+ {
+ while( io_rPos < nLen &&
+ sal_Unicode(' ') == rStr[io_rPos] )
+ {
+ ++io_rPos;
+ }
+ }
+
+ void lcl_skipSpacesAndCommas(sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 nLen)
+ {
+ while(io_rPos < nLen
+ && (sal_Unicode(' ') == rStr[io_rPos] || sal_Unicode(',') == rStr[io_rPos]))
+ {
+ ++io_rPos;
+ }
+ }
+
+ inline bool lcl_isOnNumberChar(const sal_Unicode aChar, bool bSignAllowed = true)
+ {
+ const bool bPredicate( (sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
+ || (bSignAllowed && sal_Unicode('+') == aChar)
+ || (bSignAllowed && sal_Unicode('-') == aChar) );
+
+ return bPredicate;
+ }
+
+ inline bool lcl_isOnNumberChar(const ::rtl::OUString& rStr, const sal_Int32 nPos, bool bSignAllowed = true)
+ {
+ return lcl_isOnNumberChar(rStr[nPos],
+ bSignAllowed);
+ }
+
+ bool lcl_getDoubleChar(double& o_fRetval,
+ sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 /*nLen*/)
+ {
+ sal_Unicode aChar( rStr[io_rPos] );
+ ::rtl::OUStringBuffer sNumberString;
+
+ if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar)
+ {
+ sNumberString.append(rStr[io_rPos]);
+ aChar = rStr[++io_rPos];
+ }
+
+ while((sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
+ || sal_Unicode('.') == aChar)
+ {
+ sNumberString.append(rStr[io_rPos]);
+ aChar = rStr[++io_rPos];
+ }
+
+ if(sal_Unicode('e') == aChar || sal_Unicode('E') == aChar)
+ {
+ sNumberString.append(rStr[io_rPos]);
+ aChar = rStr[++io_rPos];
+
+ if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar)
+ {
+ sNumberString.append(rStr[io_rPos]);
+ aChar = rStr[++io_rPos];
+ }
+
+ while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
+ {
+ sNumberString.append(rStr[io_rPos]);
+ aChar = rStr[++io_rPos];
+ }
+ }
+
+ if(sNumberString.getLength())
+ {
+ rtl_math_ConversionStatus eStatus;
+ o_fRetval = ::rtl::math::stringToDouble( sNumberString.makeStringAndClear(),
+ (sal_Unicode)('.'),
+ (sal_Unicode)(','),
+ &eStatus,
+ NULL );
+ return ( eStatus == rtl_math_ConversionStatus_Ok );
+ }
+
+ return false;
+ }
+
+ bool lcl_importDoubleAndSpaces( double& o_fRetval,
+ sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 nLen )
+ {
+ if( !lcl_getDoubleChar(o_fRetval, io_rPos, rStr, nLen) )
+ return false;
+
+ lcl_skipSpacesAndCommas(io_rPos, rStr, nLen);
+
+ return true;
+ }
+
+ bool lcl_importNumberAndSpaces(sal_Int32& o_nRetval,
+ sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 nLen)
+ {
+ sal_Unicode aChar( rStr[io_rPos] );
+ ::rtl::OUStringBuffer sNumberString;
+
+ if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar)
+ {
+ sNumberString.append(rStr[io_rPos]);
+ aChar = rStr[++io_rPos];
+ }
+
+ while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
+ {
+ sNumberString.append(rStr[io_rPos]);
+ aChar = rStr[++io_rPos];
+ }
+
+ if(sNumberString.getLength())
+ {
+ o_nRetval = sNumberString.makeStringAndClear().toInt32();
+ lcl_skipSpacesAndCommas(io_rPos, rStr, nLen);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ void lcl_skipNumber(sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 nLen)
+ {
+ bool bSignAllowed(true);
+
+ while(io_rPos < nLen && lcl_isOnNumberChar(rStr, io_rPos, bSignAllowed))
+ {
+ bSignAllowed = false;
+ ++io_rPos;
+ }
+ }
+
+ void lcl_skipDouble(sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 /*nLen*/)
+ {
+ sal_Unicode aChar( rStr[io_rPos] );
+
+ if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar)
+ aChar = rStr[++io_rPos];
+
+ while((sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
+ || sal_Unicode('.') == aChar)
+ {
+ aChar = rStr[++io_rPos];
+ }
+
+ if(sal_Unicode('e') == aChar || sal_Unicode('E') == aChar)
+ {
+ aChar = rStr[++io_rPos];
+
+ if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar)
+ aChar = rStr[++io_rPos];
+
+ while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
+ {
+ aChar = rStr[++io_rPos];
+ }
+ }
+ }
+ void lcl_skipNumberAndSpacesAndCommas(sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 nLen)
+ {
+ lcl_skipNumber(io_rPos, rStr, nLen);
+ lcl_skipSpacesAndCommas(io_rPos, rStr, nLen);
+ }
+
+ // #100617# Allow to skip doubles, too.
+ void lcl_skipDoubleAndSpacesAndCommas(sal_Int32& io_rPos,
+ const ::rtl::OUString& rStr,
+ const sal_Int32 nLen)
+ {
+ lcl_skipDouble(io_rPos, rStr, nLen);
+ lcl_skipSpacesAndCommas(io_rPos, rStr, nLen);
+ }
+
+ void lcl_putNumberChar( ::rtl::OUStringBuffer& rStr,
+ double fValue )
+ {
+ rStr.append( fValue );
+ }
+
+ void lcl_putNumberCharWithSpace( ::rtl::OUStringBuffer& rStr,
+ double fValue,
+ double fOldValue,
+ bool bUseRelativeCoordinates )
+ {
+ if( bUseRelativeCoordinates )
+ fValue -= fOldValue;
+
+ const sal_Int32 aLen( rStr.getLength() );
+ if(aLen)
+ {
+ if( lcl_isOnNumberChar(rStr.charAt(aLen - 1), false) &&
+ fValue >= 0.0 )
+ {
+ rStr.append( sal_Unicode(' ') );
+ }
+ }
+
+ lcl_putNumberChar(rStr, fValue);
+ }
+
+ inline sal_Unicode lcl_getCommand( sal_Char cUpperCaseCommand,
+ sal_Char cLowerCaseCommand,
+ bool bUseRelativeCoordinates )
+ {
+ return bUseRelativeCoordinates ? cLowerCaseCommand : cUpperCaseCommand;
+ }
+ }
+
+ bool importFromSvgD(B2DPolyPolygon& o_rPolyPolygon, const ::rtl::OUString& rSvgDStatement)
+ {
+ o_rPolyPolygon.clear();
+ const sal_Int32 nLen(rSvgDStatement.getLength());
+ sal_Int32 nPos(0);
+ bool bIsClosed(false);
+ double nLastX( 0.0 );
+ double nLastY( 0.0 );
+ B2DPolygon aCurrPoly;
+
+ // skip initial whitespace
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen)
+ {
+ bool bRelative(false);
+ bool bMoveTo(false);
+ const sal_Unicode aCurrChar(rSvgDStatement[nPos]);
+
+ switch(aCurrChar)
+ {
+ case 'z' :
+ case 'Z' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ // remember closed state of current polygon
+ bIsClosed = true;
+ break;
+ }
+
+ case 'm' :
+ case 'M' :
+ {
+ bMoveTo = true;
+ // FALLTHROUGH intended
+ }
+ case 'l' :
+ case 'L' :
+ {
+ if('m' == aCurrChar || 'l' == aCurrChar)
+ {
+ bRelative = true;
+ }
+
+ if(bMoveTo)
+ {
+ // new polygon start, finish old one
+ if(aCurrPoly.count())
+ {
+ // add current polygon
+ if(bIsClosed)
+ {
+ closeWithGeometryChange(aCurrPoly);
+ }
+
+ o_rPolyPolygon.append(aCurrPoly);
+
+ // reset import values
+ bIsClosed = false;
+ aCurrPoly.clear();
+ }
+ }
+
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX, nY;
+
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nX += nLastX;
+ nY += nLastY;
+ }
+
+ // set last position
+ nLastX = nX;
+ nLastY = nY;
+
+ // add point
+ aCurrPoly.append(B2DPoint(nX, nY));
+ }
+ break;
+ }
+
+ case 'h' :
+ {
+ bRelative = true;
+ // FALLTHROUGH intended
+ }
+ case 'H' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX, nY(nLastY);
+
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nX += nLastX;
+ }
+
+ // set last position
+ nLastX = nX;
+
+ // add point
+ aCurrPoly.append(B2DPoint(nX, nY));
+ }
+ break;
+ }
+
+ case 'v' :
+ {
+ bRelative = true;
+ // FALLTHROUGH intended
+ }
+ case 'V' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX(nLastX), nY;
+
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nY += nLastY;
+ }
+
+ // set last position
+ nLastY = nY;
+
+ // add point
+ aCurrPoly.append(B2DPoint(nX, nY));
+ }
+ break;
+ }
+
+ case 's' :
+ {
+ bRelative = true;
+ // FALLTHROUGH intended
+ }
+ case 'S' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX, nY;
+ double nX2, nY2;
+
+ if(!lcl_importDoubleAndSpaces(nX2, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY2, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nX2 += nLastX;
+ nY2 += nLastY;
+ nX += nLastX;
+ nY += nLastY;
+ }
+
+ // ensure existance of start point
+ if(!aCurrPoly.count())
+ {
+ aCurrPoly.append(B2DPoint(nLastX, nLastY));
+ }
+
+ // get first control point. It's the reflection of the PrevControlPoint
+ // of the last point. If not existent, use current point (see SVG)
+ B2DPoint aPrevControl(B2DPoint(nLastX, nLastY));
+ const sal_uInt32 nIndex(aCurrPoly.count() - 1);
+
+ if(aCurrPoly.areControlPointsUsed() && aCurrPoly.isPrevControlPointUsed(nIndex))
+ {
+ const B2DPoint aPrevPoint(aCurrPoly.getB2DPoint(nIndex));
+ const B2DPoint aPrevControlPoint(aCurrPoly.getPrevControlPoint(nIndex));
+
+ // use mirrored previous control point
+ aPrevControl.setX((2.0 * aPrevPoint.getX()) - aPrevControlPoint.getX());
+ aPrevControl.setY((2.0 * aPrevPoint.getY()) - aPrevControlPoint.getY());
+ }
+
+ // append curved edge
+ aCurrPoly.appendBezierSegment(aPrevControl, B2DPoint(nX2, nY2), B2DPoint(nX, nY));
+
+ // set last position
+ nLastX = nX;
+ nLastY = nY;
+ }
+ break;
+ }
+
+ case 'c' :
+ {
+ bRelative = true;
+ // FALLTHROUGH intended
+ }
+ case 'C' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX, nY;
+ double nX1, nY1;
+ double nX2, nY2;
+
+ if(!lcl_importDoubleAndSpaces(nX1, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY1, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nX2, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY2, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nX1 += nLastX;
+ nY1 += nLastY;
+ nX2 += nLastX;
+ nY2 += nLastY;
+ nX += nLastX;
+ nY += nLastY;
+ }
+
+ // ensure existance of start point
+ if(!aCurrPoly.count())
+ {
+ aCurrPoly.append(B2DPoint(nLastX, nLastY));
+ }
+
+ // append curved edge
+ aCurrPoly.appendBezierSegment(B2DPoint(nX1, nY1), B2DPoint(nX2, nY2), B2DPoint(nX, nY));
+
+ // set last position
+ nLastX = nX;
+ nLastY = nY;
+ }
+ break;
+ }
+
+ // #100617# quadratic beziers are imported as cubic ones
+ case 'q' :
+ {
+ bRelative = true;
+ // FALLTHROUGH intended
+ }
+ case 'Q' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX, nY;
+ double nX1, nY1;
+
+ if(!lcl_importDoubleAndSpaces(nX1, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY1, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nX1 += nLastX;
+ nY1 += nLastY;
+ nX += nLastX;
+ nY += nLastY;
+ }
+
+ // calculate the cubic bezier coefficients from the quadratic ones
+ const double nX1Prime((nX1 * 2.0 + nLastX) / 3.0);
+ const double nY1Prime((nY1 * 2.0 + nLastY) / 3.0);
+ const double nX2Prime((nX1 * 2.0 + nX) / 3.0);
+ const double nY2Prime((nY1 * 2.0 + nY) / 3.0);
+
+ // ensure existance of start point
+ if(!aCurrPoly.count())
+ {
+ aCurrPoly.append(B2DPoint(nLastX, nLastY));
+ }
+
+ // append curved edge
+ aCurrPoly.appendBezierSegment(B2DPoint(nX1Prime, nY1Prime), B2DPoint(nX2Prime, nY2Prime), B2DPoint(nX, nY));
+
+ // set last position
+ nLastX = nX;
+ nLastY = nY;
+ }
+ break;
+ }
+
+ // #100617# relative quadratic beziers are imported as cubic
+ case 't' :
+ {
+ bRelative = true;
+ // FALLTHROUGH intended
+ }
+ case 'T' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX, nY;
+
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nX += nLastX;
+ nY += nLastY;
+ }
+
+ // ensure existance of start point
+ if(!aCurrPoly.count())
+ {
+ aCurrPoly.append(B2DPoint(nLastX, nLastY));
+ }
+
+ // get first control point. It's the reflection of the PrevControlPoint
+ // of the last point. If not existent, use current point (see SVG)
+ B2DPoint aPrevControl(B2DPoint(nLastX, nLastY));
+ const sal_uInt32 nIndex(aCurrPoly.count() - 1);
+ const B2DPoint aPrevPoint(aCurrPoly.getB2DPoint(nIndex));
+
+ if(aCurrPoly.areControlPointsUsed() && aCurrPoly.isPrevControlPointUsed(nIndex))
+ {
+ const B2DPoint aPrevControlPoint(aCurrPoly.getPrevControlPoint(nIndex));
+
+ // use mirrored previous control point
+ aPrevControl.setX((2.0 * aPrevPoint.getX()) - aPrevControlPoint.getX());
+ aPrevControl.setY((2.0 * aPrevPoint.getY()) - aPrevControlPoint.getY());
+ }
+
+ if(!aPrevControl.equal(aPrevPoint))
+ {
+ // there is a prev control point, and we have the already mirrored one
+ // in aPrevControl. We also need the quadratic control point for this
+ // new quadratic segment to calculate the 2nd cubic control point
+ const B2DPoint aQuadControlPoint(
+ ((3.0 * aPrevControl.getX()) - aPrevPoint.getX()) / 2.0,
+ ((3.0 * aPrevControl.getY()) - aPrevPoint.getY()) / 2.0);
+
+ // calculate the cubic bezier coefficients from the quadratic ones.
+ const double nX2Prime((aQuadControlPoint.getX() * 2.0 + nX) / 3.0);
+ const double nY2Prime((aQuadControlPoint.getY() * 2.0 + nY) / 3.0);
+
+ // append curved edge, use mirrored cubic control point directly
+ aCurrPoly.appendBezierSegment(aPrevControl, B2DPoint(nX2Prime, nY2Prime), B2DPoint(nX, nY));
+ }
+ else
+ {
+ // when no previous control, SVG says to use current point -> straight line.
+ // Just add end point
+ aCurrPoly.append(B2DPoint(nX, nY));
+ }
+
+ // set last position
+ nLastX = nX;
+ nLastY = nY;
+ }
+ break;
+ }
+
+ case 'a' :
+ {
+ bRelative = true;
+ // FALLTHROUGH intended
+ }
+ case 'A' :
+ {
+ nPos++;
+ lcl_skipSpaces(nPos, rSvgDStatement, nLen);
+
+ while(nPos < nLen && lcl_isOnNumberChar(rSvgDStatement, nPos))
+ {
+ double nX, nY;
+ double fRX, fRY, fPhi;
+ sal_Int32 bLargeArcFlag, bSweepFlag;
+
+ if(!lcl_importDoubleAndSpaces(fRX, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(fRY, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(fPhi, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importNumberAndSpaces(bLargeArcFlag, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importNumberAndSpaces(bSweepFlag, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
+
+ if(bRelative)
+ {
+ nX += nLastX;
+ nY += nLastY;
+ }
+
+ const B2DPoint aPrevPoint(aCurrPoly.getB2DPoint(aCurrPoly.count() - 1));
+
+ if( nX == nLastX && nY == nLastY )
+ continue; // start==end -> skip according to SVG spec
+
+ if( fRX == 0.0 || fRY == 0.0 )
+ {
+ // straight line segment according to SVG spec
+ aCurrPoly.append(B2DPoint(nX, nY));
+ }
+ else
+ {
+ // normalize according to SVG spec
+ fRX=fabs(fRX); fRY=fabs(fRY);
+
+ // from the SVG spec, appendix F.6.4
+
+ // |x1'| |cos phi sin phi| |(x1 - x2)/2|
+ // |y1'| = |-sin phi cos phi| |(y1 - y2)/2|
+ const B2DPoint p1(nLastX, nLastY);
+ const B2DPoint p2(nX, nY);
+ B2DHomMatrix aTransform(basegfx::tools::createRotateB2DHomMatrix(-fPhi*M_PI/180));
+
+ const B2DPoint p1_prime( aTransform * B2DPoint(((p1-p2)/2.0)) );
+
+ // ______________________________________ rx y1'
+ // |cx'| + / rx^2 ry^2 - rx^2 y1'^2 - ry^2 x1^2 ry
+ // |cy'| =-/ rx^2y1'^2 + ry^2 x1'^2 - ry x1'
+ // rx
+ // chose + if f_A != f_S
+ // chose - if f_A = f_S
+ B2DPoint aCenter_prime;
+ const double fRadicant(
+ (fRX*fRX*fRY*fRY - fRX*fRX*p1_prime.getY()*p1_prime.getY() - fRY*fRY*p1_prime.getX()*p1_prime.getX())/
+ (fRX*fRX*p1_prime.getY()*p1_prime.getY() + fRY*fRY*p1_prime.getX()*p1_prime.getX()));
+ if( fRadicant < 0.0 )
+ {
+ // no solution - according to SVG
+ // spec, scale up ellipse
+ // uniformly such that it passes
+ // through end points (denominator
+ // of radicant solved for fRY,
+ // with s=fRX/fRY)
+ const double fRatio(fRX/fRY);
+ const double fRadicant2(
+ p1_prime.getY()*p1_prime.getY() +
+ p1_prime.getX()*p1_prime.getX()/(fRatio*fRatio));
+ if( fRadicant2 < 0.0 )
+ {
+ // only trivial solution, one
+ // of the axes 0 -> straight
+ // line segment according to
+ // SVG spec
+ aCurrPoly.append(B2DPoint(nX, nY));
+ continue;
+ }
+
+ fRY=sqrt(fRadicant2);
+ fRX=fRatio*fRY;
+
+ // keep center_prime forced to (0,0)
+ }
+ else
+ {
+ const double fFactor(
+ (bLargeArcFlag==bSweepFlag ? -1.0 : 1.0) *
+ sqrt(fRadicant));
+
+ // actually calculate center_prime
+ aCenter_prime = B2DPoint(
+ fFactor*fRX*p1_prime.getY()/fRY,
+ -fFactor*fRY*p1_prime.getX()/fRX);
+ }
+
+ // + u - v
+ // angle(u,v) = arccos( ------------ ) (take the sign of (ux vy - uy vx))
+ // - ||u|| ||v||
+
+ // 1 | (x1' - cx')/rx |
+ // theta1 = angle(( ), | | )
+ // 0 | (y1' - cy')/ry |
+ const B2DPoint aRadii(fRX,fRY);
+ double fTheta1(
+ B2DVector(1.0,0.0).angle(
+ (p1_prime-aCenter_prime)/aRadii));
+
+ // |1| | (-x1' - cx')/rx |
+ // theta2 = angle( | | , | | )
+ // |0| | (-y1' - cy')/ry |
+ double fTheta2(
+ B2DVector(1.0,0.0).angle(
+ (-p1_prime-aCenter_prime)/aRadii));
+
+ // map both angles to [0,2pi)
+ fTheta1 = fmod(2*M_PI+fTheta1,2*M_PI);
+ fTheta2 = fmod(2*M_PI+fTheta2,2*M_PI);
+
+ // make sure the large arc is taken
+ // (since
+ // createPolygonFromEllipseSegment()
+ // normalizes to e.g. cw arc)
+ const bool bFlipSegment( (bLargeArcFlag!=0) ==
+ (fmod(fTheta2+2*M_PI-fTheta1,
+ 2*M_PI)<M_PI) );
+ if( bFlipSegment )
+ std::swap(fTheta1,fTheta2);
+
+ // finally, create bezier polygon from this
+ B2DPolygon aSegment(
+ tools::createPolygonFromUnitEllipseSegment(
+ fTheta1, fTheta2 ));
+
+ // transform ellipse by rotation & move to final center
+ aTransform = basegfx::tools::createScaleB2DHomMatrix(fRX, fRY);
+ aTransform.translate(aCenter_prime.getX(),
+ aCenter_prime.getY());
+ aTransform.rotate(fPhi*M_PI/180);
+ const B2DPoint aOffset((p1+p2)/2.0);
+ aTransform.translate(aOffset.getX(),
+ aOffset.getY());
+ aSegment.transform(aTransform);
+
+ // createPolygonFromEllipseSegment()
+ // always creates arcs that are
+ // positively oriented - flip polygon
+ // if we swapped angles above
+ if( bFlipSegment )
+ aSegment.flip();
+ aCurrPoly.append(aSegment);
+ }
+
+ // set last position
+ nLastX = nX;
+ nLastY = nY;
+ }
+ break;
+ }
+
+ default:
+ {
+ OSL_ENSURE(false, "importFromSvgD(): skipping tags in svg:d element (unknown)!");
+ OSL_TRACE("importFromSvgD(): skipping tags in svg:d element (unknown: \"%c\")!", aCurrChar);
+ ++nPos;
+ break;
+ }
+ }
+ }
+
+ if(aCurrPoly.count())
+ {
+ // end-process last poly
+ if(bIsClosed)
+ {
+ closeWithGeometryChange(aCurrPoly);
+ }
+
+ o_rPolyPolygon.append(aCurrPoly);
+ }
+
+ return true;
+ }
+
+ bool importFromSvgPoints( B2DPolygon& o_rPoly,
+ const ::rtl::OUString& rSvgPointsAttribute )
+ {
+ o_rPoly.clear();
+ const sal_Int32 nLen(rSvgPointsAttribute.getLength());
+ sal_Int32 nPos(0);
+ double nX, nY;
+
+ // skip initial whitespace
+ lcl_skipSpaces(nPos, rSvgPointsAttribute, nLen);
+
+ while(nPos < nLen)
+ {
+ if(!lcl_importDoubleAndSpaces(nX, nPos, rSvgPointsAttribute, nLen)) return false;
+ if(!lcl_importDoubleAndSpaces(nY, nPos, rSvgPointsAttribute, nLen)) return false;
+
+ // add point
+ o_rPoly.append(B2DPoint(nX, nY));
+
+ // skip to next number, or finish
+ lcl_skipSpaces(nPos, rSvgPointsAttribute, nLen);
+ }
+
+ return true;
+ }
+
+ ::rtl::OUString exportToSvgD(
+ const B2DPolyPolygon& rPolyPolygon,
+ bool bUseRelativeCoordinates,
+ bool bDetectQuadraticBeziers)
+ {
+ const sal_uInt32 nCount(rPolyPolygon.count());
+ ::rtl::OUStringBuffer aResult;
+ B2DPoint aCurrentSVGPosition(0.0, 0.0); // SVG assumes (0,0) as the initial current point
+
+ for(sal_uInt32 i(0); i < nCount; i++)
+ {
+ const B2DPolygon aPolygon(rPolyPolygon.getB2DPolygon(i));
+ const sal_uInt32 nPointCount(aPolygon.count());
+
+ if(nPointCount)
+ {
+ const bool bPolyUsesControlPoints(aPolygon.areControlPointsUsed());
+ const sal_uInt32 nEdgeCount(aPolygon.isClosed() ? nPointCount : nPointCount - 1);
+ sal_Unicode aLastSVGCommand(' '); // last SVG command char
+ B2DPoint aLeft, aRight; // for quadratic bezier test
+
+ // handle polygon start point
+ B2DPoint aEdgeStart(aPolygon.getB2DPoint(0));
+ aResult.append(lcl_getCommand('M', 'm', bUseRelativeCoordinates));
+ lcl_putNumberCharWithSpace(aResult, aEdgeStart.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeStart.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ aLastSVGCommand = lcl_getCommand('L', 'l', bUseRelativeCoordinates);
+ aCurrentSVGPosition = aEdgeStart;
+
+ for(sal_uInt32 nIndex(0); nIndex < nEdgeCount; nIndex++)
+ {
+ // prepare access to next point
+ const sal_uInt32 nNextIndex((nIndex + 1) % nPointCount);
+ const B2DPoint aEdgeEnd(aPolygon.getB2DPoint(nNextIndex));
+
+ // handle edge from (aEdgeStart, aEdgeEnd) using indices (nIndex, nNextIndex)
+ const bool bEdgeIsBezier(bPolyUsesControlPoints
+ && (aPolygon.isNextControlPointUsed(nIndex) || aPolygon.isPrevControlPointUsed(nNextIndex)));
+
+ if(bEdgeIsBezier)
+ {
+ // handle bezier edge
+ const B2DPoint aControlEdgeStart(aPolygon.getNextControlPoint(nIndex));
+ const B2DPoint aControlEdgeEnd(aPolygon.getPrevControlPoint(nNextIndex));
+ bool bIsQuadraticBezier(false);
+
+ // check continuity at current edge's start point. For SVG, do NOT use an
+ // existing continuity since no 'S' or 's' statement should be written. At
+ // import, that 'previous' control vector is not available. SVG documentation
+ // says for interpretation:
+ //
+ // "(If there is no previous command or if the previous command was
+ // not an C, c, S or s, assume the first control point is coincident
+ // with the current point.)"
+ //
+ // That's what is done from our import, so avoid exporting it as first statement
+ // is necessary.
+ const bool bSymmetricAtEdgeStart(
+ 0 != nIndex
+ && CONTINUITY_C2 == aPolygon.getContinuityInPoint(nIndex));
+
+ if(bDetectQuadraticBeziers)
+ {
+ // check for quadratic beziers - that's
+ // the case if both control points are in
+ // the same place when they are prolonged
+ // to the common quadratic control point
+ //
+ // Left: P = (3P1 - P0) / 2
+ // Right: P = (3P2 - P3) / 2
+ aLeft = B2DPoint((3.0 * aControlEdgeStart - aEdgeStart) / 2.0);
+ aRight= B2DPoint((3.0 * aControlEdgeEnd - aEdgeEnd) / 2.0);
+ bIsQuadraticBezier = aLeft.equal(aRight);
+ }
+
+ if(bIsQuadraticBezier)
+ {
+ // approximately equal, export as quadratic bezier
+ if(bSymmetricAtEdgeStart)
+ {
+ const sal_Unicode aCommand(lcl_getCommand('T', 't', bUseRelativeCoordinates));
+
+ if(aLastSVGCommand != aCommand)
+ {
+ aResult.append(aCommand);
+ aLastSVGCommand = aCommand;
+ }
+
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ aLastSVGCommand = aCommand;
+ aCurrentSVGPosition = aEdgeEnd;
+ }
+ else
+ {
+ const sal_Unicode aCommand(lcl_getCommand('Q', 'q', bUseRelativeCoordinates));
+
+ if(aLastSVGCommand != aCommand)
+ {
+ aResult.append(aCommand);
+ aLastSVGCommand = aCommand;
+ }
+
+ lcl_putNumberCharWithSpace(aResult, aLeft.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aLeft.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ aLastSVGCommand = aCommand;
+ aCurrentSVGPosition = aEdgeEnd;
+ }
+ }
+ else
+ {
+ // export as cubic bezier
+ if(bSymmetricAtEdgeStart)
+ {
+ const sal_Unicode aCommand(lcl_getCommand('S', 's', bUseRelativeCoordinates));
+
+ if(aLastSVGCommand != aCommand)
+ {
+ aResult.append(aCommand);
+ aLastSVGCommand = aCommand;
+ }
+
+ lcl_putNumberCharWithSpace(aResult, aControlEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aControlEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ aLastSVGCommand = aCommand;
+ aCurrentSVGPosition = aEdgeEnd;
+ }
+ else
+ {
+ const sal_Unicode aCommand(lcl_getCommand('C', 'c', bUseRelativeCoordinates));
+
+ if(aLastSVGCommand != aCommand)
+ {
+ aResult.append(aCommand);
+ aLastSVGCommand = aCommand;
+ }
+
+ lcl_putNumberCharWithSpace(aResult, aControlEdgeStart.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aControlEdgeStart.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aControlEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aControlEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ aLastSVGCommand = aCommand;
+ aCurrentSVGPosition = aEdgeEnd;
+ }
+ }
+ }
+ else
+ {
+ // straight edge
+ if(0 == nNextIndex)
+ {
+ // it's a closed polygon's last edge and it's not a bezier edge, so there is
+ // no need to write it
+ }
+ else
+ {
+ const bool bXEqual(aEdgeStart.getX() == aEdgeEnd.getX());
+ const bool bYEqual(aEdgeStart.getY() == aEdgeEnd.getY());
+
+ if(bXEqual && bYEqual)
+ {
+ // point is a double point; do not export at all
+ }
+ else if(bXEqual)
+ {
+ // export as vertical line
+ const sal_Unicode aCommand(lcl_getCommand('V', 'v', bUseRelativeCoordinates));
+
+ if(aLastSVGCommand != aCommand)
+ {
+ aResult.append(aCommand);
+ aLastSVGCommand = aCommand;
+ }
+
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ aCurrentSVGPosition = aEdgeEnd;
+ }
+ else if(bYEqual)
+ {
+ // export as horizontal line
+ const sal_Unicode aCommand(lcl_getCommand('H', 'h', bUseRelativeCoordinates));
+
+ if(aLastSVGCommand != aCommand)
+ {
+ aResult.append(aCommand);
+ aLastSVGCommand = aCommand;
+ }
+
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ aCurrentSVGPosition = aEdgeEnd;
+ }
+ else
+ {
+ // export as line
+ const sal_Unicode aCommand(lcl_getCommand('L', 'l', bUseRelativeCoordinates));
+
+ if(aLastSVGCommand != aCommand)
+ {
+ aResult.append(aCommand);
+ aLastSVGCommand = aCommand;
+ }
+
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
+ lcl_putNumberCharWithSpace(aResult, aEdgeEnd.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
+ aCurrentSVGPosition = aEdgeEnd;
+ }
+ }
+ }
+
+ // prepare edge start for next loop step
+ aEdgeStart = aEdgeEnd;
+ }
+
+ // close path if closed poly (Z and z are equivalent here, but looks nicer when case is matched)
+ if(aPolygon.isClosed())
+ {
+ aResult.append(lcl_getCommand('Z', 'z', bUseRelativeCoordinates));
+ }
+ }
+ }
+
+ return aResult.makeStringAndClear();
+ }
+ }
+}
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b2dtrapezoid.cxx b/basegfx/source/polygon/b2dtrapezoid.cxx
new file mode 100644
index 000000000000..f095a6658119
--- /dev/null
+++ b/basegfx/source/polygon/b2dtrapezoid.cxx
@@ -0,0 +1,1231 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dpolygontriangulator.cxx,v $
+ * $Revision: 1.7 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/polygon/b2dtrapezoid.hxx>
+#include <basegfx/range/b1drange.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <list>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace trapezoidhelper
+ {
+ //////////////////////////////////////////////////////////////////////////////
+ // helper class to hold a simple ege. This is only used for horizontal edges
+ // currently, thus the YPositions will be equal. I did not create a special
+ // class for this since holdingthe pointers is more effective and also can be
+ // used as baseclass for the traversing edges
+
+ class TrDeSimpleEdge
+ {
+ protected:
+ // pointers to start and end point
+ const B2DPoint* mpStart;
+ const B2DPoint* mpEnd;
+
+ public:
+ // constructor
+ TrDeSimpleEdge(
+ const B2DPoint* pStart,
+ const B2DPoint* pEnd)
+ : mpStart(pStart),
+ mpEnd(pEnd)
+ {
+ }
+
+ // data read access
+ const B2DPoint& getStart() const { return *mpStart; }
+ const B2DPoint& getEnd() const { return *mpEnd; }
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+ // define vector of simple edges
+
+ typedef ::std::vector< TrDeSimpleEdge > TrDeSimpleEdges;
+
+ //////////////////////////////////////////////////////////////////////////////
+ // helper class for holding a traversing edge. It will always have some
+ // distance in YPos. The slope (in a numerically useful form, see comments) is
+ // hold and used in SortValue to allow sorting traversing edges by Y, X and slope
+ // (in that order)
+
+ class TrDeEdgeEntry : public TrDeSimpleEdge
+ {
+ private:
+ // the slope in a numerical useful form for sorting
+ sal_uInt32 mnSortValue;
+
+ public:
+ // convenience data read access
+ double getDeltaX() const { return mpEnd->getX() - mpStart->getX(); }
+ double getDeltaY() const { return mpEnd->getY() - mpStart->getY(); }
+
+ // convenience data read access. SortValue is created on demand since
+ // it is not always used
+ sal_uInt32 getSortValue() const
+ {
+ if(0 != mnSortValue)
+ return mnSortValue;
+
+ // get radiant; has to be in the range ]0.0 .. pi[, thus scale to full
+ // sal_uInt32 range for maximum precision
+ const double fRadiant(atan2(getDeltaY(), getDeltaX()) * (SAL_MAX_UINT32 / F_PI));
+
+ // convert to sal_uInt32 value
+ const_cast< TrDeEdgeEntry* >(this)->mnSortValue = sal_uInt32(fRadiant);
+
+ return mnSortValue;
+ }
+
+ // constructor. SortValue can be given when known, use zero otherwise
+ TrDeEdgeEntry(
+ const B2DPoint* pStart,
+ const B2DPoint* pEnd,
+ sal_uInt32 nSortValue = 0)
+ : TrDeSimpleEdge(pStart, pEnd),
+ mnSortValue(nSortValue)
+ {
+ // force traversal of deltaY downward
+ if(mpEnd->getY() < mpStart->getY())
+ {
+ std::swap(mpStart, mpEnd);
+ }
+
+ // no horizontal edges allowed, all neeed to traverse vertically
+ OSL_ENSURE(mpEnd->getY() > mpStart->getY(), "Illegal TrDeEdgeEntry constructed (!)");
+ }
+
+ // data write access to StartPoint
+ void setStart( const B2DPoint* pNewStart)
+ {
+ OSL_ENSURE(0 != pNewStart, "No null pointer allowed here (!)");
+
+ if(mpStart != pNewStart)
+ {
+ mpStart = pNewStart;
+
+ // no horizontal edges allowed, all neeed to traverse vertivally
+ OSL_ENSURE(mpEnd->getY() > mpStart->getY(), "Illegal TrDeEdgeEntry constructed (!)");
+ }
+ }
+
+ // data write access to EndPoint
+ void setEnd( const B2DPoint* pNewEnd)
+ {
+ OSL_ENSURE(0 != pNewEnd, "No null pointer allowed here (!)");
+
+ if(mpEnd != pNewEnd)
+ {
+ mpEnd = pNewEnd;
+
+ // no horizontal edges allowed, all neeed to traverse vertivally
+ OSL_ENSURE(mpEnd->getY() > mpStart->getY(), "Illegal TrDeEdgeEntry constructed (!)");
+ }
+ }
+
+ // operator for sort support. Sort by Y, X and slope (in that order)
+ bool operator<(const TrDeEdgeEntry& rComp) const
+ {
+ if(fTools::equal(getStart().getY(), rComp.getStart().getY(), fTools::getSmallValue()))
+ {
+ if(fTools::equal(getStart().getX(), rComp.getStart().getX(), fTools::getSmallValue()))
+ {
+ // when start points are equal, use the direction the edge is pointing
+ // to. That value is created on demand and derived from atan2 in the
+ // range ]0.0 .. pi[ (without extremas, we always have a deltaY in this
+ // class) and scaled to sal_uInt32 range for best precision. 0 means no angle,
+ // while SAL_MAX_UINT32 means pi. Thus, the higher the value, the more left
+ // the edge traverses.
+ return (getSortValue() > rComp.getSortValue());
+ }
+ else
+ {
+ return fTools::less(getStart().getX(), rComp.getStart().getX());
+ }
+ }
+ else
+ {
+ return fTools::less(getStart().getY(), rComp.getStart().getY());
+ }
+ }
+
+ // method for cut support
+ B2DPoint getCutPointForGivenY(double fGivenY)
+ {
+ // Calculate cut point locally (do not use interpolate) since it is numerically
+ // necessary to guarantee the new, equal Y-coordinate
+ const double fFactor((fGivenY - getStart().getY()) / getDeltaY());
+ const double fDeltaXNew(fFactor * getDeltaX());
+
+ return B2DPoint(getStart().getX() + fDeltaXNew, fGivenY);
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+ // define double linked list of edges (for fast random insert)
+
+ typedef ::std::list< TrDeEdgeEntry > TrDeEdgeEntries;
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace trapezoidhelper
+ {
+ // helper class to handle the complete trapezoid subdivision of a PolyPolygon
+ class TrapezoidSubdivider
+ {
+ private:
+ // local data
+ sal_uInt32 mnInitialEdgeEntryCount;
+ TrDeEdgeEntries maTrDeEdgeEntries;
+ ::std::vector< B2DPoint > maPoints;
+ ::std::vector< B2DPoint* > maNewPoints;
+
+ void addEdgeSorted(
+ TrDeEdgeEntries::iterator aCurrent,
+ const TrDeEdgeEntry& rNewEdge)
+ {
+ // Loop while new entry is bigger, use operator<
+ while(aCurrent != maTrDeEdgeEntries.end() && (*aCurrent) < rNewEdge)
+ {
+ aCurrent++;
+ }
+
+ // Insert before first which is smaller or equal or at end
+ maTrDeEdgeEntries.insert(aCurrent, rNewEdge);
+ }
+
+ bool splitEdgeAtGivenPoint(
+ TrDeEdgeEntries::reference aEdge,
+ const B2DPoint& rCutPoint,
+ TrDeEdgeEntries::iterator aCurrent)
+ {
+ // do not create edges without deltaY: do not split when start is identical
+ if(aEdge.getStart().equal(rCutPoint, fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ // do not create edges without deltaY: do not split when end is identical
+ if(aEdge.getEnd().equal(rCutPoint, fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ const double fOldDeltaYStart(rCutPoint.getY() - aEdge.getStart().getY());
+
+ if(fTools::lessOrEqual(fOldDeltaYStart, 0.0))
+ {
+ // do not split: the resulting edge would be horizontal
+ // correct it to new start point
+ aEdge.setStart(&rCutPoint);
+ return false;
+ }
+
+ const double fNewDeltaYStart(aEdge.getEnd().getY() - rCutPoint.getY());
+
+ if(fTools::lessOrEqual(fNewDeltaYStart, 0.0))
+ {
+ // do not split: the resulting edge would be horizontal
+ // correct it to new end point
+ aEdge.setEnd(&rCutPoint);
+ return false;
+ }
+
+ // Create new entry
+ const TrDeEdgeEntry aNewEdge(
+ &rCutPoint,
+ &aEdge.getEnd(),
+ aEdge.getSortValue());
+
+ // Correct old entry
+ aEdge.setEnd(&rCutPoint);
+
+ // Insert sorted (to avoid new sort)
+ addEdgeSorted(aCurrent, aNewEdge);
+
+ return true;
+ }
+
+ bool testAndCorrectEdgeIntersection(
+ TrDeEdgeEntries::reference aEdgeA,
+ TrDeEdgeEntries::reference aEdgeB,
+ TrDeEdgeEntries::iterator aCurrent)
+ {
+ // Exclude simple cases: same start or end point
+ if(aEdgeA.getStart().equal(aEdgeB.getStart(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeA.getStart().equal(aEdgeB.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeA.getEnd().equal(aEdgeB.getStart(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeA.getEnd().equal(aEdgeB.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ // Exclude simple cases: one of the edges has no length anymore
+ if(aEdgeA.getStart().equal(aEdgeA.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeB.getStart().equal(aEdgeB.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ // check if one point is on the other edge (a touch, not a cut)
+ const B2DVector aDeltaB(aEdgeB.getDeltaX(), aEdgeB.getDeltaY());
+
+ if(tools::isPointOnEdge(aEdgeA.getStart(), aEdgeB.getStart(), aDeltaB))
+ {
+ return splitEdgeAtGivenPoint(aEdgeB, aEdgeA.getStart(), aCurrent);
+ }
+
+ if(tools::isPointOnEdge(aEdgeA.getEnd(), aEdgeB.getStart(), aDeltaB))
+ {
+ return splitEdgeAtGivenPoint(aEdgeB, aEdgeA.getEnd(), aCurrent);
+ }
+
+ const B2DVector aDeltaA(aEdgeA.getDeltaX(), aEdgeA.getDeltaY());
+
+ if(tools::isPointOnEdge(aEdgeB.getStart(), aEdgeA.getStart(), aDeltaA))
+ {
+ return splitEdgeAtGivenPoint(aEdgeA, aEdgeB.getStart(), aCurrent);
+ }
+
+ if(tools::isPointOnEdge(aEdgeB.getEnd(), aEdgeA.getStart(), aDeltaA))
+ {
+ return splitEdgeAtGivenPoint(aEdgeA, aEdgeB.getEnd(), aCurrent);
+ }
+
+ // check for cut inside edges. Use both t-values to choose the more precise
+ // one later
+ double fCutA(0.0);
+ double fCutB(0.0);
+
+ if(tools::findCut(
+ aEdgeA.getStart(), aDeltaA,
+ aEdgeB.getStart(), aDeltaB,
+ CUTFLAG_LINE,
+ &fCutA,
+ &fCutB))
+ {
+ // use a simple metric (length criteria) for choosing the numerically
+ // better cut
+ const double fSimpleLengthA(aDeltaA.getX() + aDeltaA.getY());
+ const double fSimpleLengthB(aDeltaB.getX() + aDeltaB.getY());
+ const bool bAIsLonger(fSimpleLengthA > fSimpleLengthB);
+ B2DPoint* pNewPoint = bAIsLonger
+ ? new B2DPoint(aEdgeA.getStart() + (fCutA * aDeltaA))
+ : new B2DPoint(aEdgeB.getStart() + (fCutB * aDeltaB));
+ bool bRetval(false);
+
+ // try to split both edges
+ bRetval = splitEdgeAtGivenPoint(aEdgeA, *pNewPoint, aCurrent);
+ bRetval |= splitEdgeAtGivenPoint(aEdgeB, *pNewPoint, aCurrent);
+
+ if(bRetval)
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+
+ return bRetval;
+ }
+
+ return false;
+ }
+
+ void solveHorizontalEdges(TrDeSimpleEdges& rTrDeSimpleEdges)
+ {
+ if(rTrDeSimpleEdges.size() && maTrDeEdgeEntries.size())
+ {
+ // there were horizontal edges. These can be excluded, but
+ // cuts with other edges need to be solved and added before
+ // ignoring them
+ sal_uInt32 a(0);
+
+ for(a = 0; a < rTrDeSimpleEdges.size(); a++)
+ {
+ // get horizontal edge as candidate; prepare it's range and fixed Y
+ const TrDeSimpleEdge& rHorEdge = rTrDeSimpleEdges[a];
+ const B1DRange aRange(rHorEdge.getStart().getX(), rHorEdge.getEnd().getX());
+ const double fFixedY(rHorEdge.getStart().getY());
+
+ // loop over traversing edges
+ TrDeEdgeEntries::iterator aCurrent(maTrDeEdgeEntries.begin());
+
+ do
+ {
+ // get compare edge
+ TrDeEdgeEntries::reference aCompare(*aCurrent++);
+
+ if(fTools::lessOrEqual(aCompare.getEnd().getY(), fFixedY))
+ {
+ // edge ends above horizontal edge, continue
+ continue;
+ }
+
+ if(fTools::moreOrEqual(aCompare.getStart().getY(), fFixedY))
+ {
+ // edge starts below horizontal edge, continue
+ continue;
+ }
+
+ // vertical overlap, get horizontal range
+ const B1DRange aCompareRange(aCompare.getStart().getX(), aCompare.getEnd().getX());
+
+ if(aRange.overlaps(aCompareRange))
+ {
+ // possible cut, get cut point
+ const B2DPoint aSplit(aCompare.getCutPointForGivenY(fFixedY));
+
+ if(fTools::more(aSplit.getX(), aRange.getMinimum())
+ && fTools::less(aSplit.getX(), aRange.getMaximum()))
+ {
+ // cut is in XRange of horizontal edge, potenitally needed cut
+ B2DPoint* pNewPoint = new B2DPoint(aSplit);
+
+ if(splitEdgeAtGivenPoint(aCompare, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ }
+ }
+ while(aCurrent != maTrDeEdgeEntries.end()
+ && fTools::less(aCurrent->getStart().getY(), fFixedY));
+ }
+ }
+ }
+
+ public:
+ TrapezoidSubdivider(
+ const B2DPolyPolygon& rSourcePolyPolygon)
+ : mnInitialEdgeEntryCount(0),
+ maTrDeEdgeEntries(),
+ maPoints(),
+ maNewPoints()
+ {
+ B2DPolyPolygon aSource(rSourcePolyPolygon);
+ const sal_uInt32 nPolygonCount(rSourcePolyPolygon.count());
+ TrDeSimpleEdges aTrDeSimpleEdges;
+ sal_uInt32 a(0), b(0);
+ sal_uInt32 nAllPointCount(0);
+
+ // ensure there are no curves used
+ if(aSource.areControlPointsUsed())
+ {
+ aSource = aSource.getDefaultAdaptiveSubdivision();
+ }
+
+ for(a = 0; a < nPolygonCount; a++)
+ {
+ // 1st run: count points
+ const B2DPolygon aPolygonCandidate(aSource.getB2DPolygon(a));
+ const sal_uInt32 nCount(aPolygonCandidate.count());
+
+ if(nCount > 2)
+ {
+ nAllPointCount += nCount;
+ }
+ }
+
+ if(nAllPointCount)
+ {
+ // reserve needed points. CAUTION: maPoints size is NOT to be changed anymore
+ // after 2nd loop since pointers to it are used in the edges
+ maPoints.reserve(nAllPointCount);
+
+ for(a = 0; a < nPolygonCount; a++)
+ {
+ // 2nd run: add points
+ const B2DPolygon aPolygonCandidate(aSource.getB2DPolygon(a));
+ const sal_uInt32 nCount(aPolygonCandidate.count());
+
+ if(nCount > 2)
+ {
+ for(b = 0; b < nCount; b++)
+ {
+ maPoints.push_back(aPolygonCandidate.getB2DPoint(b));
+ }
+ }
+ }
+
+ // Moved the edge construction to a 3rd run: doing it in the 2nd run is
+ // possible(and i used it), but requires a working vector::reserve()
+ // implementation, else the vector will be reallocated and the pointers
+ // in the edges may be wrong. Security first here.
+ sal_uInt32 nStartIndex(0);
+
+ for(a = 0; a < nPolygonCount; a++)
+ {
+ const B2DPolygon aPolygonCandidate(aSource.getB2DPolygon(a));
+ const sal_uInt32 nCount(aPolygonCandidate.count());
+
+ if(nCount > 2)
+ {
+ // get the last point of the current polygon
+ B2DPoint* pPrev(&maPoints[nCount + nStartIndex - 1]);
+
+ for(b = 0; b < nCount; b++)
+ {
+ // get next point
+ B2DPoint* pCurr(&maPoints[nStartIndex++]);
+
+ if(fTools::equal(pPrev->getY(), pCurr->getY(), fTools::getSmallValue()))
+ {
+ // horizontal edge, check for single point
+ if(!fTools::equal(pPrev->getX(), pCurr->getX(), fTools::getSmallValue()))
+ {
+ // X-order not needed, just add
+ aTrDeSimpleEdges.push_back(TrDeSimpleEdge(pPrev, pCurr));
+
+ const double fMiddle((pPrev->getY() + pCurr->getY()) * 0.5);
+ pPrev->setY(fMiddle);
+ pCurr->setY(fMiddle);
+ }
+ }
+ else
+ {
+ // vertical edge. Positive Y-direction is guaranteed by the
+ // TrDeEdgeEntry constructor
+ maTrDeEdgeEntries.push_back(TrDeEdgeEntry(pPrev, pCurr, 0));
+ mnInitialEdgeEntryCount++;
+ }
+
+ // prepare next step
+ pPrev = pCurr;
+ }
+ }
+ }
+ }
+
+ if(maTrDeEdgeEntries.size())
+ {
+ // single and initial sort of traversing edges
+ maTrDeEdgeEntries.sort();
+
+ // solve horizontal edges if there are any detected
+ solveHorizontalEdges(aTrDeSimpleEdges);
+ }
+ }
+
+ ~TrapezoidSubdivider()
+ {
+ // delete the extra points created for cuts
+ const sal_uInt32 nCount(maNewPoints.size());
+
+ for(sal_uInt32 a(0); a < nCount; a++)
+ {
+ delete maNewPoints[a];
+ }
+ }
+
+ void Subdivide(B2DTrapezoidVector& ro_Result)
+ {
+ // This is the central subdivider. The strategy is to use the first two entries
+ // from the traversing edges as a potential trapezoid and do the needed corrections
+ // and adaptions on the way.
+ //
+ // There always must be two edges with the same YStart value: When adding the polygons
+ // in the constructor, there is always a topmost point from which two edges start; when
+ // the topmost is an edge, there is a start and end of this edge from which two edges
+ // start. All cases have two edges with same StartY (QED).
+ //
+ // Based on this these edges get corrected when:
+ // - one is longer than the other
+ // - they intersect
+ // - they intersect with other edges
+ // - another edge starts inside the thought trapezoid
+ //
+ // All this cases again produce a valid state so that the first two edges have a common
+ // Ystart again. Some cases lead to a restart of the process, some allow consuming the
+ // edges and create the intended trapezoid.
+ //
+ // Be careful when doing chages here: It is essential to keep all possible paths
+ // in valid states and to be numerically correct. This is especially needed e.g.
+ // by using fTools::equal(..) in the more robust small-value incarnation.
+ B1DRange aLeftRange;
+ B1DRange aRightRange;
+
+ if(!maTrDeEdgeEntries.empty())
+ {
+ // measuring shows that the relation between edges and created trapezoids is
+ // mostly in the 1:1 range, thus reserve as much trapezoids as edges exist. Do
+ // not use maTrDeEdgeEntries.size() since that may be a non-constant time
+ // operation for Lists. Instead, use mnInitialEdgeEntryCount which will contain
+ // the roughly counted adds to the List
+ ro_Result.reserve(ro_Result.size() + mnInitialEdgeEntryCount);
+ }
+
+ while(!maTrDeEdgeEntries.empty())
+ {
+ // Prepare current operator and get first edge
+ TrDeEdgeEntries::iterator aCurrent(maTrDeEdgeEntries.begin());
+ TrDeEdgeEntries::reference aLeft(*aCurrent++);
+
+ if(aCurrent == maTrDeEdgeEntries.end())
+ {
+ // Should not happen: No 2nd edge; consume the single edge
+ // to not have an endless loop and start next. During development
+ // i constantly had breakpoints here, so i am sure enough to add an
+ // assertion here
+ OSL_ENSURE(false, "Trapeziod decomposer in illegal state (!)");
+ maTrDeEdgeEntries.pop_front();
+ continue;
+ }
+
+ // get second edge
+ TrDeEdgeEntries::reference aRight(*aCurrent++);
+
+ if(!fTools::equal(aLeft.getStart().getY(), aRight.getStart().getY(), fTools::getSmallValue()))
+ {
+ // Should not happen: We have a 2nd edge, but YStart is on another
+ // line; consume the single edge to not have an endless loop and start
+ // next. During development i constantly had breakpoints here, so i am
+ // sure enough to add an assertion here
+ OSL_ENSURE(false, "Trapeziod decomposer in illegal state (!)");
+ maTrDeEdgeEntries.pop_front();
+ continue;
+ }
+
+ // aLeft and aRight build a thought trapezoid now. They have a common
+ // start line (same Y for start points). Potentially, one of the edges
+ // is longer than the other. It is only needed to look at the shorter
+ // length which build the potential trapezoid. To do so, get the end points
+ // locally and adapt the evtl. longer one. Use only aLeftEnd and aRightEnd
+ // from here on, not the aLeft.getEnd() or aRight.getEnd() accesses.
+ B2DPoint aLeftEnd(aLeft.getEnd());
+ B2DPoint aRightEnd(aRight.getEnd());
+
+ // check if end points are on the same line. If yes, no adaption
+ // needs to be prepared. Also remember which one actually is longer.
+ const bool bEndOnSameLine(fTools::equal(aLeftEnd.getY(), aRightEnd.getY(), fTools::getSmallValue()));
+ bool bLeftIsLonger(false);
+
+ if(!bEndOnSameLine)
+ {
+ // check which edge is longer and correct accordingly
+ bLeftIsLonger = fTools::more(aLeftEnd.getY(), aRightEnd.getY());
+
+ if(bLeftIsLonger)
+ {
+ aLeftEnd = aLeft.getCutPointForGivenY(aRightEnd.getY());
+ }
+ else
+ {
+ aRightEnd = aRight.getCutPointForGivenY(aLeftEnd.getY());
+ }
+ }
+
+ // check for same start and end points
+ const bool bSameStartPoint(aLeft.getStart().equal(aRight.getStart(), fTools::getSmallValue()));
+ const bool bSameEndPoint(aLeftEnd.equal(aRightEnd, fTools::getSmallValue()));
+
+ // check the simple case that the edges form a 'blind' edge (deadend)
+ if(bSameStartPoint && bSameEndPoint)
+ {
+ // correct the longer edge if prepared
+ if(!bEndOnSameLine)
+ {
+ if(bLeftIsLonger)
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aLeftEnd);
+
+ if(splitEdgeAtGivenPoint(aLeft, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ else
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aRightEnd);
+
+ if(splitEdgeAtGivenPoint(aRight, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ }
+
+ // consume both edges and start next run
+ maTrDeEdgeEntries.pop_front();
+ maTrDeEdgeEntries.pop_front();
+
+ continue;
+ }
+
+ // check if the edges self-intersect. This can only happen when
+ // start and end point are different
+ bool bRangesSet(false);
+
+ if(!(bSameStartPoint || bSameEndPoint))
+ {
+ // get XRanges of edges
+ aLeftRange = B1DRange(aLeft.getStart().getX(), aLeftEnd.getX());
+ aRightRange = B1DRange(aRight.getStart().getX(), aRightEnd.getX());
+ bRangesSet = true;
+
+ // use fast range test first
+ if(aLeftRange.overlaps(aRightRange))
+ {
+ // real cut test and correction. If correction was needed,
+ // start new run
+ if(testAndCorrectEdgeIntersection(aLeft, aRight, aCurrent))
+ {
+ continue;
+ }
+ }
+ }
+
+ // now we need to check if there are intersections with other edges
+ // or if other edges start inside the candidate trapezoid
+ if(aCurrent != maTrDeEdgeEntries.end()
+ && fTools::less(aCurrent->getStart().getY(), aLeftEnd.getY()))
+ {
+ // get XRanges of edges
+ if(!bRangesSet)
+ {
+ aLeftRange = B1DRange(aLeft.getStart().getX(), aLeftEnd.getX());
+ aRightRange = B1DRange(aRight.getStart().getX(), aRightEnd.getX());
+ }
+
+ // build full XRange for fast check
+ B1DRange aAllRange(aLeftRange);
+ aAllRange.expand(aRightRange);
+
+ // prepare loop iterator; aCurrent needs to stay unchanged for
+ // eventual sorted insertions of new EdgeNodes. Also prepare stop flag
+ TrDeEdgeEntries::iterator aLoop(aCurrent);
+ bool bDone(false);
+
+ do
+ {
+ // get compare edge and it's XRange
+ TrDeEdgeEntries::reference aCompare(*aLoop++);
+
+ // avoid edges using the same start point as one of
+ // the edges. These can neither have their start point
+ // in the thought trapezoid nor cut with one of the edges
+ if(aCompare.getStart().equal(aRight.getStart(), fTools::getSmallValue()))
+ {
+ continue;
+ }
+
+ // get compare XRange
+ const B1DRange aCompareRange(aCompare.getStart().getX(), aCompare.getEnd().getX());
+
+ // use fast range test first
+ if(aAllRange.overlaps(aCompareRange))
+ {
+ // check for start point inside thought trapezoid
+ if(fTools::more(aCompare.getStart().getY(), aLeft.getStart().getY()))
+ {
+ // calculate the two possible split points at compare's Y
+ const B2DPoint aSplitLeft(aLeft.getCutPointForGivenY(aCompare.getStart().getY()));
+ const B2DPoint aSplitRight(aRight.getCutPointForGivenY(aCompare.getStart().getY()));
+
+ // check for start point of aCompare being inside thought
+ // trapezoid
+ if(aCompare.getStart().getX() >= aSplitLeft.getX() &&
+ aCompare.getStart().getX() <= aSplitRight.getX())
+ {
+ // is inside, correct and restart loop
+ B2DPoint* pNewLeft = new B2DPoint(aSplitLeft);
+
+ if(splitEdgeAtGivenPoint(aLeft, *pNewLeft, aCurrent))
+ {
+ maNewPoints.push_back(pNewLeft);
+ bDone = true;
+ }
+ else
+ {
+ delete pNewLeft;
+ }
+
+ B2DPoint* pNewRight = new B2DPoint(aSplitRight);
+
+ if(splitEdgeAtGivenPoint(aRight, *pNewRight, aCurrent))
+ {
+ maNewPoints.push_back(pNewRight);
+ bDone = true;
+ }
+ else
+ {
+ delete pNewRight;
+ }
+ }
+ }
+
+ if(!bDone && aLeftRange.overlaps(aCompareRange))
+ {
+ // test for concrete cut of compare edge with left edge
+ bDone = testAndCorrectEdgeIntersection(aLeft, aCompare, aCurrent);
+ }
+
+ if(!bDone && aRightRange.overlaps(aCompareRange))
+ {
+ // test for concrete cut of compare edge with Right edge
+ bDone = testAndCorrectEdgeIntersection(aRight, aCompare, aCurrent);
+ }
+ }
+ }
+ while(!bDone
+ && aLoop != maTrDeEdgeEntries.end()
+ && fTools::less(aLoop->getStart().getY(), aLeftEnd.getY()));
+
+ if(bDone)
+ {
+ // something needed to be changed; start next loop
+ continue;
+ }
+ }
+
+ // when we get here, the intended trapezoid can be used. It needs to
+ // be corrected, eventually (if prepared); but this is no reason not to
+ // use it in the same loop iteration
+ if(!bEndOnSameLine)
+ {
+ if(bLeftIsLonger)
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aLeftEnd);
+
+ if(splitEdgeAtGivenPoint(aLeft, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ else
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aRightEnd);
+
+ if(splitEdgeAtGivenPoint(aRight, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ }
+
+ // the two edges start at the same Y, they use the same DeltaY, they
+ // do not cut themselves and not any other edge in range. Create a
+ // B2DTrapezoid and consume both edges
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aLeftEnd.getX(),
+ aRightEnd.getX(),
+ aLeftEnd.getY()));
+
+ maTrDeEdgeEntries.pop_front();
+ maTrDeEdgeEntries.pop_front();
+ }
+ }
+ };
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ B2DTrapezoid::B2DTrapezoid(
+ const double& rfTopXLeft,
+ const double& rfTopXRight,
+ const double& rfTopY,
+ const double& rfBottomXLeft,
+ const double& rfBottomXRight,
+ const double& rfBottomY)
+ : mfTopXLeft(rfTopXLeft),
+ mfTopXRight(rfTopXRight),
+ mfTopY(rfTopY),
+ mfBottomXLeft(rfBottomXLeft),
+ mfBottomXRight(rfBottomXRight),
+ mfBottomY(rfBottomY)
+ {
+ // guarantee mfTopXRight >= mfTopXLeft
+ if(mfTopXLeft > mfTopXRight)
+ {
+ std::swap(mfTopXLeft, mfTopXRight);
+ }
+
+ // guarantee mfBottomXRight >= mfBottomXLeft
+ if(mfBottomXLeft > mfBottomXRight)
+ {
+ std::swap(mfBottomXLeft, mfBottomXRight);
+ }
+
+ // guarantee mfBottomY >= mfTopY
+ if(mfTopY > mfBottomY)
+ {
+ std::swap(mfTopY, mfBottomY);
+ std::swap(mfTopXLeft, mfBottomXLeft);
+ std::swap(mfTopXRight, mfBottomXRight);
+ }
+ }
+
+ B2DPolygon B2DTrapezoid::getB2DPolygon() const
+ {
+ B2DPolygon aRetval;
+
+ aRetval.append(B2DPoint(getTopXLeft(), getTopY()));
+ aRetval.append(B2DPoint(getTopXRight(), getTopY()));
+ aRetval.append(B2DPoint(getBottomXRight(), getBottomY()));
+ aRetval.append(B2DPoint(getBottomXLeft(), getBottomY()));
+ aRetval.setClosed(true);
+
+ return aRetval;
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // convert Source PolyPolygon to trapezoids
+ void trapezoidSubdivide(B2DTrapezoidVector& ro_Result, const B2DPolyPolygon& rSourcePolyPolygon)
+ {
+ trapezoidhelper::TrapezoidSubdivider aTrapezoidSubdivider(rSourcePolyPolygon);
+
+ aTrapezoidSubdivider.Subdivide(ro_Result);
+ }
+
+ void createLineTrapezoidFromEdge(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPoint& rPointA,
+ const B2DPoint& rPointB,
+ double fLineWidth)
+ {
+ if(fTools::lessOrEqual(fLineWidth, 0.0))
+ {
+ // no line witdh
+ return;
+ }
+
+ if(rPointA.equal(rPointB, fTools::getSmallValue()))
+ {
+ // points are equal, no edge
+ return;
+ }
+
+ const double fHalfLineWidth(0.5 * fLineWidth);
+
+ if(fTools::equal(rPointA.getX(), rPointB.getX(), fTools::getSmallValue()))
+ {
+ // vertical line
+ const double fLeftX(rPointA.getX() - fHalfLineWidth);
+ const double fRightX(rPointA.getX() + fHalfLineWidth);
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ fLeftX,
+ fRightX,
+ std::min(rPointA.getY(), rPointB.getY()),
+ fLeftX,
+ fRightX,
+ std::max(rPointA.getY(), rPointB.getY())));
+ }
+ else if(fTools::equal(rPointA.getY(), rPointB.getY(), fTools::getSmallValue()))
+ {
+ // horizontal line
+ const double fLeftX(std::min(rPointA.getX(), rPointB.getX()));
+ const double fRightX(std::max(rPointA.getX(), rPointB.getX()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ fLeftX,
+ fRightX,
+ rPointA.getY() - fHalfLineWidth,
+ fLeftX,
+ fRightX,
+ rPointA.getY() + fHalfLineWidth));
+ }
+ else
+ {
+ // diagonal line
+ // create perpendicular vector
+ const B2DVector aDelta(rPointB - rPointA);
+ B2DVector aPerpendicular(-aDelta.getY(), aDelta.getX());
+ aPerpendicular.setLength(fHalfLineWidth);
+
+ // create StartLow, StartHigh, EndLow and EndHigh
+ const B2DPoint aStartLow(rPointA + aPerpendicular);
+ const B2DPoint aStartHigh(rPointA - aPerpendicular);
+ const B2DPoint aEndHigh(rPointB - aPerpendicular);
+ const B2DPoint aEndLow(rPointB + aPerpendicular);
+
+ // create EdgeEntries
+ basegfx::trapezoidhelper::TrDeEdgeEntries aTrDeEdgeEntries;
+
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aStartLow, &aStartHigh, 0));
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aStartHigh, &aEndHigh, 0));
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aEndHigh, &aEndLow, 0));
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aEndLow, &aStartLow, 0));
+ aTrDeEdgeEntries.sort();
+
+ // here we know we have exactly four edges, and they do not cut, touch or
+ // intersect. This makes processing much easier. Get the first two as start
+ // edges for the thought trapezoid
+ basegfx::trapezoidhelper::TrDeEdgeEntries::iterator aCurrent(aTrDeEdgeEntries.begin());
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight(*aCurrent++);
+ const bool bEndOnSameLine(fTools::equal(aLeft.getEnd().getY(), aRight.getEnd().getY(), fTools::getSmallValue()));
+
+ if(bEndOnSameLine)
+ {
+ // create two triangle trapezoids
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aLeft.getEnd().getX(),
+ aRight.getEnd().getX(),
+ aLeft.getEnd().getY()));
+
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft2(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight2(*aCurrent++);
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft2.getStart().getX(),
+ aRight2.getStart().getX(),
+ aLeft2.getStart().getY(),
+ aLeft2.getEnd().getX(),
+ aRight2.getEnd().getX(),
+ aLeft2.getEnd().getY()));
+ }
+ else
+ {
+ // create three trapezoids. Check which edge is longer and
+ // correct accordingly
+ const bool bLeftIsLonger(fTools::more(aLeft.getEnd().getY(), aRight.getEnd().getY()));
+
+ if(bLeftIsLonger)
+ {
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight2(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft2(*aCurrent++);
+ const B2DPoint aSplitLeft(aLeft.getCutPointForGivenY(aRight.getEnd().getY()));
+ const B2DPoint aSplitRight(aRight2.getCutPointForGivenY(aLeft.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight.getEnd().getY(),
+ aLeft2.getStart().getX(),
+ aSplitRight.getX(),
+ aLeft2.getStart().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft2.getStart().getX(),
+ aSplitRight.getX(),
+ aLeft2.getStart().getY(),
+ aLeft2.getEnd().getX(),
+ aRight2.getEnd().getX(),
+ aLeft2.getEnd().getY()));
+ }
+ else
+ {
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft2(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight2(*aCurrent++);
+ const B2DPoint aSplitRight(aRight.getCutPointForGivenY(aLeft.getEnd().getY()));
+ const B2DPoint aSplitLeft(aLeft2.getCutPointForGivenY(aRight.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aLeft.getEnd().getX(),
+ aSplitRight.getX(),
+ aLeft.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getEnd().getX(),
+ aSplitRight.getX(),
+ aLeft.getEnd().getY(),
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight2.getStart().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight2.getStart().getY(),
+ aLeft2.getEnd().getX(),
+ aRight2.getEnd().getX(),
+ aLeft2.getEnd().getY()));
+ }
+ }
+ }
+ }
+
+ void createLineTrapezoidFromB2DPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolygon& rPolygon,
+ double fLineWidth)
+ {
+ if(fTools::lessOrEqual(fLineWidth, 0.0))
+ {
+ return;
+ }
+
+ // ensure there are no curves used
+ B2DPolygon aSource(rPolygon);
+
+ if(aSource.areControlPointsUsed())
+ {
+ const double fPrecisionFactor = 0.25;
+ aSource = adaptiveSubdivideByDistance( aSource, fLineWidth * fPrecisionFactor );
+ }
+
+ const sal_uInt32 nPointCount(aSource.count());
+
+ if(!nPointCount)
+ {
+ return;
+ }
+
+ const sal_uInt32 nEdgeCount(aSource.isClosed() ? nPointCount : nPointCount - 1);
+ B2DPoint aCurrent(aSource.getB2DPoint(0));
+
+ ro_Result.reserve(ro_Result.size() + (3 * nEdgeCount));
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aNext(aSource.getB2DPoint(nNextIndex));
+
+ createLineTrapezoidFromEdge(ro_Result, aCurrent, aNext, fLineWidth);
+ aCurrent = aNext;
+ }
+ }
+
+ void createLineTrapezoidFromB2DPolyPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolyPolygon& rPolyPolygon,
+ double fLineWidth)
+ {
+ if(fTools::lessOrEqual(fLineWidth, 0.0))
+ {
+ return;
+ }
+
+ // ensure there are no curves used
+ B2DPolyPolygon aSource(rPolyPolygon);
+
+ if(aSource.areControlPointsUsed())
+ {
+ aSource = aSource.getDefaultAdaptiveSubdivision();
+ }
+
+ const sal_uInt32 nCount(aSource.count());
+
+ if(!nCount)
+ {
+ return;
+ }
+
+ for(sal_uInt32 a(0); a < nCount; a++)
+ {
+ createLineTrapezoidFromB2DPolygon(
+ ro_Result,
+ aSource.getB2DPolygon(a),
+ fLineWidth);
+ }
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b3dpolygon.cxx b/basegfx/source/polygon/b3dpolygon.cxx
new file mode 100644
index 000000000000..019ed0fff970
--- /dev/null
+++ b/basegfx/source/polygon/b3dpolygon.cxx
@@ -0,0 +1,1819 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b3dpolygon.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <rtl/instance.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <vector>
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+
+class CoordinateData3D
+{
+ basegfx::B3DPoint maPoint;
+
+public:
+ CoordinateData3D()
+ : maPoint()
+ {
+ }
+
+ explicit CoordinateData3D(const basegfx::B3DPoint& rData)
+ : maPoint(rData)
+ {
+ }
+
+ const basegfx::B3DPoint& getCoordinate() const
+ {
+ return maPoint;
+ }
+
+ void setCoordinate(const basegfx::B3DPoint& rValue)
+ {
+ if(rValue != maPoint)
+ maPoint = rValue;
+ }
+
+ bool operator==(const CoordinateData3D& rData) const
+ {
+ return (maPoint == rData.getCoordinate());
+ }
+
+ void transform(const basegfx::B3DHomMatrix& rMatrix)
+ {
+ maPoint *= rMatrix;
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class CoordinateDataArray3D
+{
+ typedef ::std::vector< CoordinateData3D > CoordinateData3DVector;
+
+ CoordinateData3DVector maVector;
+
+public:
+ explicit CoordinateDataArray3D(sal_uInt32 nCount)
+ : maVector(nCount)
+ {
+ }
+
+ explicit CoordinateDataArray3D(const CoordinateDataArray3D& rOriginal)
+ : maVector(rOriginal.maVector)
+ {
+ }
+
+ CoordinateDataArray3D(const CoordinateDataArray3D& rOriginal, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maVector(rOriginal.maVector.begin() + nIndex, rOriginal.maVector.begin() + (nIndex + nCount))
+ {
+ }
+
+ ~CoordinateDataArray3D()
+ {
+ }
+
+ ::basegfx::B3DVector getNormal() const
+ {
+ ::basegfx::B3DVector aRetval;
+ const sal_uInt32 nPointCount(maVector.size());
+
+ if(nPointCount > 2)
+ {
+ sal_uInt32 nISmallest(0);
+ sal_uInt32 a(0);
+ const basegfx::B3DPoint* pSmallest(&maVector[0].getCoordinate());
+ const basegfx::B3DPoint* pNext(0);
+ const basegfx::B3DPoint* pPrev(0);
+
+ // To guarantee a correctly oriented point, choose an outmost one
+ // which then cannot be concave
+ for(a = 1; a < nPointCount; a++)
+ {
+ const basegfx::B3DPoint& rCandidate = maVector[a].getCoordinate();
+
+ if((rCandidate.getX() < pSmallest->getX())
+ || (rCandidate.getX() == pSmallest->getX() && rCandidate.getY() < pSmallest->getY())
+ || (rCandidate.getX() == pSmallest->getX() && rCandidate.getY() == pSmallest->getY() && rCandidate.getZ() < pSmallest->getZ()))
+ {
+ nISmallest = a;
+ pSmallest = &rCandidate;
+ }
+ }
+
+ // look for a next point different from minimal one
+ for(a = (nISmallest + 1) % nPointCount; a != nISmallest; a = (a + 1) % nPointCount)
+ {
+ const basegfx::B3DPoint& rCandidate = maVector[a].getCoordinate();
+
+ if(!rCandidate.equal(*pSmallest))
+ {
+ pNext = &rCandidate;
+ break;
+ }
+ }
+
+ // look for a previous point different from minimal one
+ for(a = (nISmallest + nPointCount - 1) % nPointCount; a != nISmallest; a = (a + nPointCount - 1) % nPointCount)
+ {
+ const basegfx::B3DPoint& rCandidate = maVector[a].getCoordinate();
+
+ if(!rCandidate.equal(*pSmallest))
+ {
+ pPrev = &rCandidate;
+ break;
+ }
+ }
+
+ // we always have a minimal point. If we also have a different next and previous,
+ // we can calculate the normal
+ if(pNext && pPrev)
+ {
+ const basegfx::B3DVector aPrev(*pPrev - *pSmallest);
+ const basegfx::B3DVector aNext(*pNext - *pSmallest);
+
+ aRetval = cross(aPrev, aNext);
+ aRetval.normalize();
+ }
+ }
+
+ return aRetval;
+ }
+
+ sal_uInt32 count() const
+ {
+ return maVector.size();
+ }
+
+ bool operator==(const CoordinateDataArray3D& rCandidate) const
+ {
+ return (maVector == rCandidate.maVector);
+ }
+
+ const basegfx::B3DPoint& getCoordinate(sal_uInt32 nIndex) const
+ {
+ return maVector[nIndex].getCoordinate();
+ }
+
+ void setCoordinate(sal_uInt32 nIndex, const basegfx::B3DPoint& rValue)
+ {
+ maVector[nIndex].setCoordinate(rValue);
+ }
+
+ void insert(sal_uInt32 nIndex, const CoordinateData3D& rValue, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rValue
+ CoordinateData3DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ maVector.insert(aIndex, nCount, rValue);
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const CoordinateDataArray3D& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maVector.size());
+
+ if(nCount)
+ {
+ // insert data
+ CoordinateData3DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ CoordinateData3DVector::const_iterator aStart(rSource.maVector.begin());
+ CoordinateData3DVector::const_iterator aEnd(rSource.maVector.end());
+ maVector.insert(aIndex, aStart, aEnd);
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // remove point data
+ CoordinateData3DVector::iterator aStart(maVector.begin());
+ aStart += nIndex;
+ const CoordinateData3DVector::iterator aEnd(aStart + nCount);
+ maVector.erase(aStart, aEnd);
+ }
+ }
+
+ void flip()
+ {
+ if(maVector.size() > 1)
+ {
+ const sal_uInt32 nHalfSize(maVector.size() >> 1L);
+ CoordinateData3DVector::iterator aStart(maVector.begin());
+ CoordinateData3DVector::iterator aEnd(maVector.end() - 1L);
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ ::std::swap(*aStart, *aEnd);
+ aStart++;
+ aEnd--;
+ }
+ }
+ }
+
+ void transform(const ::basegfx::B3DHomMatrix& rMatrix)
+ {
+ CoordinateData3DVector::iterator aStart(maVector.begin());
+ CoordinateData3DVector::iterator aEnd(maVector.end());
+
+ for(; aStart != aEnd; aStart++)
+ {
+ aStart->transform(rMatrix);
+ }
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class BColorArray
+{
+ typedef ::std::vector< ::basegfx::BColor > BColorDataVector;
+
+ BColorDataVector maVector;
+ sal_uInt32 mnUsedEntries;
+
+public:
+ explicit BColorArray(sal_uInt32 nCount)
+ : maVector(nCount),
+ mnUsedEntries(0L)
+ {
+ }
+
+ explicit BColorArray(const BColorArray& rOriginal)
+ : maVector(rOriginal.maVector),
+ mnUsedEntries(rOriginal.mnUsedEntries)
+ {
+ }
+
+ BColorArray(const BColorArray& rOriginal, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maVector(),
+ mnUsedEntries(0L)
+ {
+ BColorDataVector::const_iterator aStart(rOriginal.maVector.begin());
+ aStart += nIndex;
+ BColorDataVector::const_iterator aEnd(aStart);
+ aEnd += nCount;
+ maVector.reserve(nCount);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries++;
+
+ maVector.push_back(*aStart);
+ }
+ }
+
+ ~BColorArray()
+ {
+ }
+
+ sal_uInt32 count() const
+ {
+ return maVector.size();
+ }
+
+ bool operator==(const BColorArray& rCandidate) const
+ {
+ return (maVector == rCandidate.maVector);
+ }
+
+ bool isUsed() const
+ {
+ return (0L != mnUsedEntries);
+ }
+
+ const ::basegfx::BColor& getBColor(sal_uInt32 nIndex) const
+ {
+ return maVector[nIndex];
+ }
+
+ void setBColor(sal_uInt32 nIndex, const ::basegfx::BColor& rValue)
+ {
+ bool bWasUsed(mnUsedEntries && !maVector[nIndex].equalZero());
+ bool bIsUsed(!rValue.equalZero());
+
+ if(bWasUsed)
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex] = rValue;
+ }
+ else
+ {
+ maVector[nIndex] = ::basegfx::BColor::getEmptyBColor();
+ mnUsedEntries--;
+ }
+ }
+ else
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex] = rValue;
+ mnUsedEntries++;
+ }
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const ::basegfx::BColor& rValue, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rValue
+ BColorDataVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ maVector.insert(aIndex, nCount, rValue);
+
+ if(!rValue.equalZero())
+ mnUsedEntries += nCount;
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const BColorArray& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maVector.size());
+
+ if(nCount)
+ {
+ // insert data
+ BColorDataVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ BColorDataVector::const_iterator aStart(rSource.maVector.begin());
+ BColorDataVector::const_iterator aEnd(rSource.maVector.end());
+ maVector.insert(aIndex, aStart, aEnd);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries++;
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ const BColorDataVector::iterator aDeleteStart(maVector.begin() + nIndex);
+ const BColorDataVector::iterator aDeleteEnd(aDeleteStart + nCount);
+ BColorDataVector::const_iterator aStart(aDeleteStart);
+
+ for(; mnUsedEntries && aStart != aDeleteEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries--;
+ }
+
+ // remove point data
+ maVector.erase(aDeleteStart, aDeleteEnd);
+ }
+ }
+
+ void flip()
+ {
+ if(maVector.size() > 1)
+ {
+ const sal_uInt32 nHalfSize(maVector.size() >> 1L);
+ BColorDataVector::iterator aStart(maVector.begin());
+ BColorDataVector::iterator aEnd(maVector.end() - 1L);
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ ::std::swap(*aStart, *aEnd);
+ aStart++;
+ aEnd--;
+ }
+ }
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class NormalsArray3D
+{
+ typedef ::std::vector< ::basegfx::B3DVector > NormalsData3DVector;
+
+ NormalsData3DVector maVector;
+ sal_uInt32 mnUsedEntries;
+
+public:
+ explicit NormalsArray3D(sal_uInt32 nCount)
+ : maVector(nCount),
+ mnUsedEntries(0L)
+ {
+ }
+
+ explicit NormalsArray3D(const NormalsArray3D& rOriginal)
+ : maVector(rOriginal.maVector),
+ mnUsedEntries(rOriginal.mnUsedEntries)
+ {
+ }
+
+ NormalsArray3D(const NormalsArray3D& rOriginal, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maVector(),
+ mnUsedEntries(0L)
+ {
+ NormalsData3DVector::const_iterator aStart(rOriginal.maVector.begin());
+ aStart += nIndex;
+ NormalsData3DVector::const_iterator aEnd(aStart);
+ aEnd += nCount;
+ maVector.reserve(nCount);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries++;
+
+ maVector.push_back(*aStart);
+ }
+ }
+
+ ~NormalsArray3D()
+ {
+ }
+
+ sal_uInt32 count() const
+ {
+ return maVector.size();
+ }
+
+ bool operator==(const NormalsArray3D& rCandidate) const
+ {
+ return (maVector == rCandidate.maVector);
+ }
+
+ bool isUsed() const
+ {
+ return (0L != mnUsedEntries);
+ }
+
+ const ::basegfx::B3DVector& getNormal(sal_uInt32 nIndex) const
+ {
+ return maVector[nIndex];
+ }
+
+ void setNormal(sal_uInt32 nIndex, const ::basegfx::B3DVector& rValue)
+ {
+ bool bWasUsed(mnUsedEntries && !maVector[nIndex].equalZero());
+ bool bIsUsed(!rValue.equalZero());
+
+ if(bWasUsed)
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex] = rValue;
+ }
+ else
+ {
+ maVector[nIndex] = ::basegfx::B3DVector::getEmptyVector();
+ mnUsedEntries--;
+ }
+ }
+ else
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex] = rValue;
+ mnUsedEntries++;
+ }
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const ::basegfx::B3DVector& rValue, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rValue
+ NormalsData3DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ maVector.insert(aIndex, nCount, rValue);
+
+ if(!rValue.equalZero())
+ mnUsedEntries += nCount;
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const NormalsArray3D& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maVector.size());
+
+ if(nCount)
+ {
+ // insert data
+ NormalsData3DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ NormalsData3DVector::const_iterator aStart(rSource.maVector.begin());
+ NormalsData3DVector::const_iterator aEnd(rSource.maVector.end());
+ maVector.insert(aIndex, aStart, aEnd);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries++;
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ const NormalsData3DVector::iterator aDeleteStart(maVector.begin() + nIndex);
+ const NormalsData3DVector::iterator aDeleteEnd(aDeleteStart + nCount);
+ NormalsData3DVector::const_iterator aStart(aDeleteStart);
+
+ for(; mnUsedEntries && aStart != aDeleteEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries--;
+ }
+
+ // remove point data
+ maVector.erase(aDeleteStart, aDeleteEnd);
+ }
+ }
+
+ void flip()
+ {
+ if(maVector.size() > 1)
+ {
+ const sal_uInt32 nHalfSize(maVector.size() >> 1L);
+ NormalsData3DVector::iterator aStart(maVector.begin());
+ NormalsData3DVector::iterator aEnd(maVector.end() - 1L);
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ ::std::swap(*aStart, *aEnd);
+ aStart++;
+ aEnd--;
+ }
+ }
+ }
+
+ void transform(const basegfx::B3DHomMatrix& rMatrix)
+ {
+ NormalsData3DVector::iterator aStart(maVector.begin());
+ NormalsData3DVector::iterator aEnd(maVector.end());
+
+ for(; aStart != aEnd; aStart++)
+ {
+ (*aStart) *= rMatrix;
+ }
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class TextureCoordinate2D
+{
+ typedef ::std::vector< ::basegfx::B2DPoint > TextureData2DVector;
+
+ TextureData2DVector maVector;
+ sal_uInt32 mnUsedEntries;
+
+public:
+ explicit TextureCoordinate2D(sal_uInt32 nCount)
+ : maVector(nCount),
+ mnUsedEntries(0L)
+ {
+ }
+
+ explicit TextureCoordinate2D(const TextureCoordinate2D& rOriginal)
+ : maVector(rOriginal.maVector),
+ mnUsedEntries(rOriginal.mnUsedEntries)
+ {
+ }
+
+ TextureCoordinate2D(const TextureCoordinate2D& rOriginal, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maVector(),
+ mnUsedEntries(0L)
+ {
+ TextureData2DVector::const_iterator aStart(rOriginal.maVector.begin());
+ aStart += nIndex;
+ TextureData2DVector::const_iterator aEnd(aStart);
+ aEnd += nCount;
+ maVector.reserve(nCount);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries++;
+
+ maVector.push_back(*aStart);
+ }
+ }
+
+ ~TextureCoordinate2D()
+ {
+ }
+
+ sal_uInt32 count() const
+ {
+ return maVector.size();
+ }
+
+ bool operator==(const TextureCoordinate2D& rCandidate) const
+ {
+ return (maVector == rCandidate.maVector);
+ }
+
+ bool isUsed() const
+ {
+ return (0L != mnUsedEntries);
+ }
+
+ const ::basegfx::B2DPoint& getTextureCoordinate(sal_uInt32 nIndex) const
+ {
+ return maVector[nIndex];
+ }
+
+ void setTextureCoordinate(sal_uInt32 nIndex, const ::basegfx::B2DPoint& rValue)
+ {
+ bool bWasUsed(mnUsedEntries && !maVector[nIndex].equalZero());
+ bool bIsUsed(!rValue.equalZero());
+
+ if(bWasUsed)
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex] = rValue;
+ }
+ else
+ {
+ maVector[nIndex] = ::basegfx::B2DPoint::getEmptyPoint();
+ mnUsedEntries--;
+ }
+ }
+ else
+ {
+ if(bIsUsed)
+ {
+ maVector[nIndex] = rValue;
+ mnUsedEntries++;
+ }
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const ::basegfx::B2DPoint& rValue, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rValue
+ TextureData2DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ maVector.insert(aIndex, nCount, rValue);
+
+ if(!rValue.equalZero())
+ mnUsedEntries += nCount;
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const TextureCoordinate2D& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maVector.size());
+
+ if(nCount)
+ {
+ // insert data
+ TextureData2DVector::iterator aIndex(maVector.begin());
+ aIndex += nIndex;
+ TextureData2DVector::const_iterator aStart(rSource.maVector.begin());
+ TextureData2DVector::const_iterator aEnd(rSource.maVector.end());
+ maVector.insert(aIndex, aStart, aEnd);
+
+ for(; aStart != aEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries++;
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ const TextureData2DVector::iterator aDeleteStart(maVector.begin() + nIndex);
+ const TextureData2DVector::iterator aDeleteEnd(aDeleteStart + nCount);
+ TextureData2DVector::const_iterator aStart(aDeleteStart);
+
+ for(; mnUsedEntries && aStart != aDeleteEnd; aStart++)
+ {
+ if(!aStart->equalZero())
+ mnUsedEntries--;
+ }
+
+ // remove point data
+ maVector.erase(aDeleteStart, aDeleteEnd);
+ }
+ }
+
+ void flip()
+ {
+ if(maVector.size() > 1)
+ {
+ const sal_uInt32 nHalfSize(maVector.size() >> 1L);
+ TextureData2DVector::iterator aStart(maVector.begin());
+ TextureData2DVector::iterator aEnd(maVector.end() - 1L);
+
+ for(sal_uInt32 a(0); a < nHalfSize; a++)
+ {
+ ::std::swap(*aStart, *aEnd);
+ aStart++;
+ aEnd--;
+ }
+ }
+ }
+
+ void transform(const ::basegfx::B2DHomMatrix& rMatrix)
+ {
+ TextureData2DVector::iterator aStart(maVector.begin());
+ TextureData2DVector::iterator aEnd(maVector.end());
+
+ for(; aStart != aEnd; aStart++)
+ {
+ (*aStart) *= rMatrix;
+ }
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class ImplB3DPolygon
+{
+ // The point vector. This vector exists always and defines the
+ // count of members.
+ CoordinateDataArray3D maPoints;
+
+ // The BColor vector. This vectors are created on demand
+ // and may be zero.
+ BColorArray* mpBColors;
+
+ // The Normals vector. This vectors are created on demand
+ // and may be zero.
+ NormalsArray3D* mpNormals;
+
+ // The TextureCoordinates vector. This vectors are created on demand
+ // and may be zero.
+ TextureCoordinate2D* mpTextureCoordiantes;
+
+ // The calculated plane normal. mbPlaneNormalValid says if it's valid.
+ ::basegfx::B3DVector maPlaneNormal;
+
+ // bitfield
+ // flag which decides if this polygon is opened or closed
+ unsigned mbIsClosed : 1;
+
+ // flag which says if maPlaneNormal is up-to-date
+ unsigned mbPlaneNormalValid : 1;
+
+protected:
+ void invalidatePlaneNormal()
+ {
+ if(mbPlaneNormalValid)
+ {
+ mbPlaneNormalValid = false;
+ }
+ }
+
+public:
+ // This constructor is only used from the static identity polygon, thus
+ // the RefCount is set to 1 to never 'delete' this static incarnation.
+ ImplB3DPolygon()
+ : maPoints(0L),
+ mpBColors(0L),
+ mpNormals(0L),
+ mpTextureCoordiantes(0L),
+ maPlaneNormal(::basegfx::B3DVector::getEmptyVector()),
+ mbIsClosed(false),
+ mbPlaneNormalValid(true)
+ {
+ // complete initialization with defaults
+ }
+
+ ImplB3DPolygon(const ImplB3DPolygon& rToBeCopied)
+ : maPoints(rToBeCopied.maPoints),
+ mpBColors(0L),
+ mpNormals(0L),
+ mpTextureCoordiantes(0L),
+ maPlaneNormal(rToBeCopied.maPlaneNormal),
+ mbIsClosed(rToBeCopied.mbIsClosed),
+ mbPlaneNormalValid(rToBeCopied.mbPlaneNormalValid)
+ {
+ // complete initialization using copy
+ if(rToBeCopied.mpBColors && rToBeCopied.mpBColors->isUsed())
+ {
+ mpBColors = new BColorArray(*rToBeCopied.mpBColors);
+ }
+
+ if(rToBeCopied.mpNormals && rToBeCopied.mpNormals->isUsed())
+ {
+ mpNormals = new NormalsArray3D(*rToBeCopied.mpNormals);
+ }
+
+ if(rToBeCopied.mpTextureCoordiantes && rToBeCopied.mpTextureCoordiantes->isUsed())
+ {
+ mpTextureCoordiantes = new TextureCoordinate2D(*rToBeCopied.mpTextureCoordiantes);
+ }
+ }
+
+ ImplB3DPolygon(const ImplB3DPolygon& rToBeCopied, sal_uInt32 nIndex, sal_uInt32 nCount)
+ : maPoints(rToBeCopied.maPoints, nIndex, nCount),
+ mpBColors(0L),
+ mpNormals(0L),
+ mpTextureCoordiantes(0L),
+ maPlaneNormal(::basegfx::B3DVector::getEmptyVector()),
+ mbIsClosed(rToBeCopied.mbIsClosed),
+ mbPlaneNormalValid(false)
+ {
+ // complete initialization using partly copy
+ if(rToBeCopied.mpBColors && rToBeCopied.mpBColors->isUsed())
+ {
+ mpBColors = new BColorArray(*rToBeCopied.mpBColors, nIndex, nCount);
+
+ if(!mpBColors->isUsed())
+ {
+ delete mpBColors;
+ mpBColors = 0L;
+ }
+ }
+
+ if(rToBeCopied.mpNormals && rToBeCopied.mpNormals->isUsed())
+ {
+ mpNormals = new NormalsArray3D(*rToBeCopied.mpNormals, nIndex, nCount);
+
+ if(!mpNormals->isUsed())
+ {
+ delete mpNormals;
+ mpNormals = 0L;
+ }
+ }
+
+ if(rToBeCopied.mpTextureCoordiantes && rToBeCopied.mpTextureCoordiantes->isUsed())
+ {
+ mpTextureCoordiantes = new TextureCoordinate2D(*rToBeCopied.mpTextureCoordiantes, nIndex, nCount);
+
+ if(!mpTextureCoordiantes->isUsed())
+ {
+ delete mpTextureCoordiantes;
+ mpTextureCoordiantes = 0L;
+ }
+ }
+ }
+
+ ~ImplB3DPolygon()
+ {
+ if(mpBColors)
+ {
+ delete mpBColors;
+ mpBColors = 0L;
+ }
+
+ if(mpNormals)
+ {
+ delete mpNormals;
+ mpNormals = 0L;
+ }
+
+ if(mpTextureCoordiantes)
+ {
+ delete mpTextureCoordiantes;
+ mpTextureCoordiantes = 0L;
+ }
+ }
+
+ sal_uInt32 count() const
+ {
+ return maPoints.count();
+ }
+
+ bool isClosed() const
+ {
+ return mbIsClosed;
+ }
+
+ void setClosed(bool bNew)
+ {
+ if(bNew != (bool)mbIsClosed)
+ {
+ mbIsClosed = bNew;
+ }
+ }
+
+ inline bool impBColorsAreEqual(const ImplB3DPolygon& rCandidate) const
+ {
+ bool bBColorsAreEqual(true);
+
+ if(mpBColors)
+ {
+ if(rCandidate.mpBColors)
+ {
+ bBColorsAreEqual = (*mpBColors == *rCandidate.mpBColors);
+ }
+ else
+ {
+ // candidate has no BColors, so it's assumed all unused.
+ bBColorsAreEqual = !mpBColors->isUsed();
+ }
+ }
+ else
+ {
+ if(rCandidate.mpBColors)
+ {
+ // we have no TextureCoordiantes, so it's assumed all unused.
+ bBColorsAreEqual = !rCandidate.mpBColors->isUsed();
+ }
+ }
+
+ return bBColorsAreEqual;
+ }
+
+ inline bool impNormalsAreEqual(const ImplB3DPolygon& rCandidate) const
+ {
+ bool bNormalsAreEqual(true);
+
+ if(mpNormals)
+ {
+ if(rCandidate.mpNormals)
+ {
+ bNormalsAreEqual = (*mpNormals == *rCandidate.mpNormals);
+ }
+ else
+ {
+ // candidate has no normals, so it's assumed all unused.
+ bNormalsAreEqual = !mpNormals->isUsed();
+ }
+ }
+ else
+ {
+ if(rCandidate.mpNormals)
+ {
+ // we have no normals, so it's assumed all unused.
+ bNormalsAreEqual = !rCandidate.mpNormals->isUsed();
+ }
+ }
+
+ return bNormalsAreEqual;
+ }
+
+ inline bool impTextureCoordinatesAreEqual(const ImplB3DPolygon& rCandidate) const
+ {
+ bool bTextureCoordinatesAreEqual(true);
+
+ if(mpTextureCoordiantes)
+ {
+ if(rCandidate.mpTextureCoordiantes)
+ {
+ bTextureCoordinatesAreEqual = (*mpTextureCoordiantes == *rCandidate.mpTextureCoordiantes);
+ }
+ else
+ {
+ // candidate has no TextureCoordinates, so it's assumed all unused.
+ bTextureCoordinatesAreEqual = !mpTextureCoordiantes->isUsed();
+ }
+ }
+ else
+ {
+ if(rCandidate.mpTextureCoordiantes)
+ {
+ // we have no TextureCoordiantes, so it's assumed all unused.
+ bTextureCoordinatesAreEqual = !rCandidate.mpTextureCoordiantes->isUsed();
+ }
+ }
+
+ return bTextureCoordinatesAreEqual;
+ }
+
+ bool operator==(const ImplB3DPolygon& rCandidate) const
+ {
+ if(mbIsClosed == rCandidate.mbIsClosed)
+ {
+ if(maPoints == rCandidate.maPoints)
+ {
+ if(impBColorsAreEqual(rCandidate))
+ {
+ if(impNormalsAreEqual(rCandidate))
+ {
+ if(impTextureCoordinatesAreEqual(rCandidate))
+ {
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ const ::basegfx::B3DPoint& getPoint(sal_uInt32 nIndex) const
+ {
+ return maPoints.getCoordinate(nIndex);
+ }
+
+ void setPoint(sal_uInt32 nIndex, const ::basegfx::B3DPoint& rValue)
+ {
+ maPoints.setCoordinate(nIndex, rValue);
+ invalidatePlaneNormal();
+ }
+
+ void insert(sal_uInt32 nIndex, const ::basegfx::B3DPoint& rPoint, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ CoordinateData3D aCoordinate(rPoint);
+ maPoints.insert(nIndex, aCoordinate, nCount);
+ invalidatePlaneNormal();
+
+ if(mpBColors)
+ {
+ mpBColors->insert(nIndex, ::basegfx::BColor::getEmptyBColor(), nCount);
+ }
+
+ if(mpNormals)
+ {
+ mpNormals->insert(nIndex, ::basegfx::B3DVector::getEmptyVector(), nCount);
+ }
+
+ if(mpTextureCoordiantes)
+ {
+ mpTextureCoordiantes->insert(nIndex, ::basegfx::B2DPoint::getEmptyPoint(), nCount);
+ }
+ }
+ }
+
+ const ::basegfx::BColor& getBColor(sal_uInt32 nIndex) const
+ {
+ if(mpBColors)
+ {
+ return mpBColors->getBColor(nIndex);
+ }
+ else
+ {
+ return ::basegfx::BColor::getEmptyBColor();
+ }
+ }
+
+ void setBColor(sal_uInt32 nIndex, const ::basegfx::BColor& rValue)
+ {
+ if(!mpBColors)
+ {
+ if(!rValue.equalZero())
+ {
+ mpBColors = new BColorArray(maPoints.count());
+ mpBColors->setBColor(nIndex, rValue);
+ }
+ }
+ else
+ {
+ mpBColors->setBColor(nIndex, rValue);
+
+ if(!mpBColors->isUsed())
+ {
+ delete mpBColors;
+ mpBColors = 0L;
+ }
+ }
+ }
+
+ bool areBColorsUsed() const
+ {
+ return (mpBColors && mpBColors->isUsed());
+ }
+
+ void clearBColors()
+ {
+ if(mpBColors)
+ {
+ delete mpBColors;
+ mpBColors = 0L;
+ }
+ }
+
+ const ::basegfx::B3DVector& getNormal() const
+ {
+ if(!mbPlaneNormalValid)
+ {
+ const_cast< ImplB3DPolygon* >(this)->maPlaneNormal = maPoints.getNormal();
+ const_cast< ImplB3DPolygon* >(this)->mbPlaneNormalValid = true;
+ }
+
+ return maPlaneNormal;
+ }
+
+ const ::basegfx::B3DVector& getNormal(sal_uInt32 nIndex) const
+ {
+ if(mpNormals)
+ {
+ return mpNormals->getNormal(nIndex);
+ }
+ else
+ {
+ return ::basegfx::B3DVector::getEmptyVector();
+ }
+ }
+
+ void setNormal(sal_uInt32 nIndex, const ::basegfx::B3DVector& rValue)
+ {
+ if(!mpNormals)
+ {
+ if(!rValue.equalZero())
+ {
+ mpNormals = new NormalsArray3D(maPoints.count());
+ mpNormals->setNormal(nIndex, rValue);
+ }
+ }
+ else
+ {
+ mpNormals->setNormal(nIndex, rValue);
+
+ if(!mpNormals->isUsed())
+ {
+ delete mpNormals;
+ mpNormals = 0L;
+ }
+ }
+ }
+
+ void transformNormals(const ::basegfx::B3DHomMatrix& rMatrix)
+ {
+ if(mpNormals)
+ {
+ mpNormals->transform(rMatrix);
+ }
+ }
+
+ bool areNormalsUsed() const
+ {
+ return (mpNormals && mpNormals->isUsed());
+ }
+
+ void clearNormals()
+ {
+ if(mpNormals)
+ {
+ delete mpNormals;
+ mpNormals = 0L;
+ }
+ }
+
+ const ::basegfx::B2DPoint& getTextureCoordinate(sal_uInt32 nIndex) const
+ {
+ if(mpTextureCoordiantes)
+ {
+ return mpTextureCoordiantes->getTextureCoordinate(nIndex);
+ }
+ else
+ {
+ return ::basegfx::B2DPoint::getEmptyPoint();
+ }
+ }
+
+ void setTextureCoordinate(sal_uInt32 nIndex, const ::basegfx::B2DPoint& rValue)
+ {
+ if(!mpTextureCoordiantes)
+ {
+ if(!rValue.equalZero())
+ {
+ mpTextureCoordiantes = new TextureCoordinate2D(maPoints.count());
+ mpTextureCoordiantes->setTextureCoordinate(nIndex, rValue);
+ }
+ }
+ else
+ {
+ mpTextureCoordiantes->setTextureCoordinate(nIndex, rValue);
+
+ if(!mpTextureCoordiantes->isUsed())
+ {
+ delete mpTextureCoordiantes;
+ mpTextureCoordiantes = 0L;
+ }
+ }
+ }
+
+ bool areTextureCoordinatesUsed() const
+ {
+ return (mpTextureCoordiantes && mpTextureCoordiantes->isUsed());
+ }
+
+ void clearTextureCoordinates()
+ {
+ if(mpTextureCoordiantes)
+ {
+ delete mpTextureCoordiantes;
+ mpTextureCoordiantes = 0L;
+ }
+ }
+
+ void transformTextureCoordinates(const ::basegfx::B2DHomMatrix& rMatrix)
+ {
+ if(mpTextureCoordiantes)
+ {
+ mpTextureCoordiantes->transform(rMatrix);
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const ImplB3DPolygon& rSource)
+ {
+ const sal_uInt32 nCount(rSource.maPoints.count());
+
+ if(nCount)
+ {
+ maPoints.insert(nIndex, rSource.maPoints);
+ invalidatePlaneNormal();
+
+ if(rSource.mpBColors && rSource.mpBColors->isUsed())
+ {
+ if(!mpBColors)
+ {
+ mpBColors = new BColorArray(maPoints.count());
+ }
+
+ mpBColors->insert(nIndex, *rSource.mpBColors);
+ }
+ else
+ {
+ if(mpBColors)
+ {
+ mpBColors->insert(nIndex, ::basegfx::BColor::getEmptyBColor(), nCount);
+ }
+ }
+
+ if(rSource.mpNormals && rSource.mpNormals->isUsed())
+ {
+ if(!mpNormals)
+ {
+ mpNormals = new NormalsArray3D(maPoints.count());
+ }
+
+ mpNormals->insert(nIndex, *rSource.mpNormals);
+ }
+ else
+ {
+ if(mpNormals)
+ {
+ mpNormals->insert(nIndex, ::basegfx::B3DVector::getEmptyVector(), nCount);
+ }
+ }
+
+ if(rSource.mpTextureCoordiantes && rSource.mpTextureCoordiantes->isUsed())
+ {
+ if(!mpTextureCoordiantes)
+ {
+ mpTextureCoordiantes = new TextureCoordinate2D(maPoints.count());
+ }
+
+ mpTextureCoordiantes->insert(nIndex, *rSource.mpTextureCoordiantes);
+ }
+ else
+ {
+ if(mpTextureCoordiantes)
+ {
+ mpTextureCoordiantes->insert(nIndex, ::basegfx::B2DPoint::getEmptyPoint(), nCount);
+ }
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ maPoints.remove(nIndex, nCount);
+ invalidatePlaneNormal();
+
+ if(mpBColors)
+ {
+ mpBColors->remove(nIndex, nCount);
+
+ if(!mpBColors->isUsed())
+ {
+ delete mpBColors;
+ mpBColors = 0L;
+ }
+ }
+
+ if(mpNormals)
+ {
+ mpNormals->remove(nIndex, nCount);
+
+ if(!mpNormals->isUsed())
+ {
+ delete mpNormals;
+ mpNormals = 0L;
+ }
+ }
+
+ if(mpTextureCoordiantes)
+ {
+ mpTextureCoordiantes->remove(nIndex, nCount);
+
+ if(!mpTextureCoordiantes->isUsed())
+ {
+ delete mpTextureCoordiantes;
+ mpTextureCoordiantes = 0L;
+ }
+ }
+ }
+ }
+
+ void flip()
+ {
+ if(maPoints.count() > 1)
+ {
+ maPoints.flip();
+
+ if(mbPlaneNormalValid)
+ {
+ // mirror plane normal
+ maPlaneNormal = -maPlaneNormal;
+ }
+
+ if(mpBColors)
+ {
+ mpBColors->flip();
+ }
+
+ if(mpNormals)
+ {
+ mpNormals->flip();
+ }
+
+ if(mpTextureCoordiantes)
+ {
+ mpTextureCoordiantes->flip();
+ }
+ }
+ }
+
+ bool hasDoublePoints() const
+ {
+ if(mbIsClosed)
+ {
+ // check for same start and end point
+ const sal_uInt32 nIndex(maPoints.count() - 1L);
+
+ if(maPoints.getCoordinate(0L) == maPoints.getCoordinate(nIndex))
+ {
+ const bool bBColorEqual(!mpBColors || (mpBColors->getBColor(0L) == mpBColors->getBColor(nIndex)));
+
+ if(bBColorEqual)
+ {
+ const bool bNormalsEqual(!mpNormals || (mpNormals->getNormal(0L) == mpNormals->getNormal(nIndex)));
+
+ if(bNormalsEqual)
+ {
+ const bool bTextureCoordinatesEqual(!mpTextureCoordiantes || (mpTextureCoordiantes->getTextureCoordinate(0L) == mpTextureCoordiantes->getTextureCoordinate(nIndex)));
+
+ if(bTextureCoordinatesEqual)
+ {
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ // test for range
+ for(sal_uInt32 a(0L); a < maPoints.count() - 1L; a++)
+ {
+ if(maPoints.getCoordinate(a) == maPoints.getCoordinate(a + 1L))
+ {
+ const bool bBColorEqual(!mpBColors || (mpBColors->getBColor(a) == mpBColors->getBColor(a + 1L)));
+
+ if(bBColorEqual)
+ {
+ const bool bNormalsEqual(!mpNormals || (mpNormals->getNormal(a) == mpNormals->getNormal(a + 1L)));
+
+ if(bNormalsEqual)
+ {
+ const bool bTextureCoordinatesEqual(!mpTextureCoordiantes || (mpTextureCoordiantes->getTextureCoordinate(a) == mpTextureCoordiantes->getTextureCoordinate(a + 1L)));
+
+ if(bTextureCoordinatesEqual)
+ {
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ void removeDoublePointsAtBeginEnd()
+ {
+ // Only remove DoublePoints at Begin and End when poly is closed
+ if(mbIsClosed)
+ {
+ bool bRemove;
+
+ do
+ {
+ bRemove = false;
+
+ if(maPoints.count() > 1L)
+ {
+ const sal_uInt32 nIndex(maPoints.count() - 1L);
+ bRemove = (maPoints.getCoordinate(0L) == maPoints.getCoordinate(nIndex));
+
+ if(bRemove && mpBColors && !(mpBColors->getBColor(0L) == mpBColors->getBColor(nIndex)))
+ {
+ bRemove = false;
+ }
+
+ if(bRemove && mpNormals && !(mpNormals->getNormal(0L) == mpNormals->getNormal(nIndex)))
+ {
+ bRemove = false;
+ }
+
+ if(bRemove && mpTextureCoordiantes && !(mpTextureCoordiantes->getTextureCoordinate(0L) == mpTextureCoordiantes->getTextureCoordinate(nIndex)))
+ {
+ bRemove = false;
+ }
+ }
+
+ if(bRemove)
+ {
+ const sal_uInt32 nIndex(maPoints.count() - 1L);
+ remove(nIndex, 1L);
+ }
+ } while(bRemove);
+ }
+ }
+
+ void removeDoublePointsWholeTrack()
+ {
+ sal_uInt32 nIndex(0L);
+
+ // test as long as there are at least two points and as long as the index
+ // is smaller or equal second last point
+ while((maPoints.count() > 1L) && (nIndex <= maPoints.count() - 2L))
+ {
+ const sal_uInt32 nNextIndex(nIndex + 1L);
+ bool bRemove(maPoints.getCoordinate(nIndex) == maPoints.getCoordinate(nNextIndex));
+
+ if(bRemove && mpBColors && !(mpBColors->getBColor(nIndex) == mpBColors->getBColor(nNextIndex)))
+ {
+ bRemove = false;
+ }
+
+ if(bRemove && mpNormals && !(mpNormals->getNormal(nIndex) == mpNormals->getNormal(nNextIndex)))
+ {
+ bRemove = false;
+ }
+
+ if(bRemove && mpTextureCoordiantes && !(mpTextureCoordiantes->getTextureCoordinate(nIndex) == mpTextureCoordiantes->getTextureCoordinate(nNextIndex)))
+ {
+ bRemove = false;
+ }
+
+ if(bRemove)
+ {
+ // if next is same as index and the control vectors are unused, delete index
+ remove(nIndex, 1L);
+ }
+ else
+ {
+ // if different, step forward
+ nIndex++;
+ }
+ }
+ }
+
+ void transform(const ::basegfx::B3DHomMatrix& rMatrix)
+ {
+ maPoints.transform(rMatrix);
+
+ // Here, it seems to be possible to transform a valid plane normal and to avoid
+ // invalidation, but it's not true. If the transformation contains shears or e.g.
+ // perspective projection, the orthogonality to the transformed plane will not
+ // be preserved. It may be possible to test that at the matrix to not invalidate in
+ // all cases or to extract a matrix which does not 'shear' the vector which is
+ // a normal in this case. As long as this is not sure, i will just invalidate.
+ invalidatePlaneNormal();
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace { struct DefaultPolygon : public rtl::Static< B3DPolygon::ImplType,
+ DefaultPolygon > {}; }
+
+ B3DPolygon::B3DPolygon() :
+ mpPolygon(DefaultPolygon::get())
+ {
+ }
+
+ B3DPolygon::B3DPolygon(const B3DPolygon& rPolygon) :
+ mpPolygon(rPolygon.mpPolygon)
+ {
+ }
+
+ B3DPolygon::B3DPolygon(const B3DPolygon& rPolygon, sal_uInt32 nIndex, sal_uInt32 nCount) :
+ mpPolygon(ImplB3DPolygon(*rPolygon.mpPolygon, nIndex, nCount))
+ {
+ // TODO(P2): one extra temporary here (cow_wrapper copies
+ // given ImplB3DPolygon into its internal impl_t wrapper type)
+ OSL_ENSURE(nIndex + nCount > rPolygon.mpPolygon->count(), "B3DPolygon constructor outside range (!)");
+ }
+
+ B3DPolygon::~B3DPolygon()
+ {
+ }
+
+ B3DPolygon& B3DPolygon::operator=(const B3DPolygon& rPolygon)
+ {
+ mpPolygon = rPolygon.mpPolygon;
+ return *this;
+ }
+
+ void B3DPolygon::makeUnique()
+ {
+ mpPolygon.make_unique();
+ }
+
+ bool B3DPolygon::operator==(const B3DPolygon& rPolygon) const
+ {
+ if(mpPolygon.same_object(rPolygon.mpPolygon))
+ return true;
+
+ return (*mpPolygon == *rPolygon.mpPolygon);
+ }
+
+ bool B3DPolygon::operator!=(const B3DPolygon& rPolygon) const
+ {
+ return !(*this == rPolygon);
+ }
+
+ sal_uInt32 B3DPolygon::count() const
+ {
+ return mpPolygon->count();
+ }
+
+ basegfx::B3DPoint B3DPolygon::getB3DPoint(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ return mpPolygon->getPoint(nIndex);
+ }
+
+ void B3DPolygon::setB3DPoint(sal_uInt32 nIndex, const basegfx::B3DPoint& rValue)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ if(getB3DPoint(nIndex) != rValue)
+ mpPolygon->setPoint(nIndex, rValue);
+ }
+
+ BColor B3DPolygon::getBColor(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ return mpPolygon->getBColor(nIndex);
+ }
+
+ void B3DPolygon::setBColor(sal_uInt32 nIndex, const BColor& rValue)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ if(mpPolygon->getBColor(nIndex) != rValue)
+ mpPolygon->setBColor(nIndex, rValue);
+ }
+
+ bool B3DPolygon::areBColorsUsed() const
+ {
+ return mpPolygon->areBColorsUsed();
+ }
+
+ void B3DPolygon::clearBColors()
+ {
+ if(mpPolygon->areBColorsUsed())
+ mpPolygon->clearBColors();
+ }
+
+ B3DVector B3DPolygon::getNormal() const
+ {
+ return mpPolygon->getNormal();
+ }
+
+ B3DVector B3DPolygon::getNormal(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ return mpPolygon->getNormal(nIndex);
+ }
+
+ void B3DPolygon::setNormal(sal_uInt32 nIndex, const B3DVector& rValue)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ if(mpPolygon->getNormal(nIndex) != rValue)
+ mpPolygon->setNormal(nIndex, rValue);
+ }
+
+ void B3DPolygon::transformNormals(const B3DHomMatrix& rMatrix)
+ {
+ if(mpPolygon->areNormalsUsed() && !rMatrix.isIdentity())
+ mpPolygon->transformNormals(rMatrix);
+ }
+
+ bool B3DPolygon::areNormalsUsed() const
+ {
+ return mpPolygon->areNormalsUsed();
+ }
+
+ void B3DPolygon::clearNormals()
+ {
+ if(mpPolygon->areNormalsUsed())
+ mpPolygon->clearNormals();
+ }
+
+ B2DPoint B3DPolygon::getTextureCoordinate(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ return mpPolygon->getTextureCoordinate(nIndex);
+ }
+
+ void B3DPolygon::setTextureCoordinate(sal_uInt32 nIndex, const B2DPoint& rValue)
+ {
+ OSL_ENSURE(nIndex < mpPolygon->count(), "B3DPolygon access outside range (!)");
+
+ if(mpPolygon->getTextureCoordinate(nIndex) != rValue)
+ mpPolygon->setTextureCoordinate(nIndex, rValue);
+ }
+
+ void B3DPolygon::transformTextureCoordiantes(const B2DHomMatrix& rMatrix)
+ {
+ if(mpPolygon->areTextureCoordinatesUsed() && !rMatrix.isIdentity())
+ mpPolygon->transformTextureCoordinates(rMatrix);
+ }
+
+ bool B3DPolygon::areTextureCoordinatesUsed() const
+ {
+ return mpPolygon->areTextureCoordinatesUsed();
+ }
+
+ void B3DPolygon::clearTextureCoordinates()
+ {
+ if(mpPolygon->areTextureCoordinatesUsed())
+ mpPolygon->clearTextureCoordinates();
+ }
+
+ void B3DPolygon::insert(sal_uInt32 nIndex, const ::basegfx::B3DPoint& rPoint, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex <= mpPolygon->count(), "B3DPolygon Insert outside range (!)");
+
+ if(nCount)
+ mpPolygon->insert(nIndex, rPoint, nCount);
+ }
+
+ void B3DPolygon::append(const basegfx::B3DPoint& rPoint, sal_uInt32 nCount)
+ {
+ if(nCount)
+ mpPolygon->insert(mpPolygon->count(), rPoint, nCount);
+ }
+
+ void B3DPolygon::insert(sal_uInt32 nIndex, const B3DPolygon& rPoly, sal_uInt32 nIndex2, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex <= mpPolygon->count(), "B3DPolygon Insert outside range (!)");
+
+ if(rPoly.count())
+ {
+ if(!nCount)
+ {
+ nCount = rPoly.count();
+ }
+
+ if(0L == nIndex2 && nCount == rPoly.count())
+ {
+ mpPolygon->insert(nIndex, *rPoly.mpPolygon);
+ }
+ else
+ {
+ OSL_ENSURE(nIndex2 + nCount <= rPoly.mpPolygon->count(), "B3DPolygon Insert outside range (!)");
+ ImplB3DPolygon aTempPoly(*rPoly.mpPolygon, nIndex2, nCount);
+ mpPolygon->insert(nIndex, aTempPoly);
+ }
+ }
+ }
+
+ void B3DPolygon::append(const B3DPolygon& rPoly, sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(rPoly.count())
+ {
+ if(!nCount)
+ {
+ nCount = rPoly.count();
+ }
+
+ if(0L == nIndex && nCount == rPoly.count())
+ {
+ mpPolygon->insert(mpPolygon->count(), *rPoly.mpPolygon);
+ }
+ else
+ {
+ OSL_ENSURE(nIndex + nCount <= rPoly.mpPolygon->count(), "B3DPolygon Append outside range (!)");
+ ImplB3DPolygon aTempPoly(*rPoly.mpPolygon, nIndex, nCount);
+ mpPolygon->insert(mpPolygon->count(), aTempPoly);
+ }
+ }
+ }
+
+ void B3DPolygon::remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex + nCount <= mpPolygon->count(), "B3DPolygon Remove outside range (!)");
+
+ if(nCount)
+ mpPolygon->remove(nIndex, nCount);
+ }
+
+ void B3DPolygon::clear()
+ {
+ mpPolygon = DefaultPolygon::get();
+ }
+
+ bool B3DPolygon::isClosed() const
+ {
+ return mpPolygon->isClosed();
+ }
+
+ void B3DPolygon::setClosed(bool bNew)
+ {
+ if(isClosed() != bNew)
+ mpPolygon->setClosed(bNew);
+ }
+
+ void B3DPolygon::flip()
+ {
+ if(count() > 1)
+ mpPolygon->flip();
+ }
+
+ bool B3DPolygon::hasDoublePoints() const
+ {
+ return (mpPolygon->count() > 1L && mpPolygon->hasDoublePoints());
+ }
+
+ void B3DPolygon::removeDoublePoints()
+ {
+ if(hasDoublePoints())
+ {
+ mpPolygon->removeDoublePointsAtBeginEnd();
+ mpPolygon->removeDoublePointsWholeTrack();
+ }
+ }
+
+ void B3DPolygon::transform(const basegfx::B3DHomMatrix& rMatrix)
+ {
+ if(mpPolygon->count() && !rMatrix.isIdentity())
+ {
+ mpPolygon->transform(rMatrix);
+ }
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b3dpolygonclipper.cxx b/basegfx/source/polygon/b3dpolygonclipper.cxx
new file mode 100644
index 000000000000..c0b36ccf5205
--- /dev/null
+++ b/basegfx/source/polygon/b3dpolygonclipper.cxx
@@ -0,0 +1,577 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/polygon/b3dpolygonclipper.hxx>
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b3dpolygontools.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/polygon/b3dpolygontools.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace
+ {
+ inline bool impIsInside(const B3DPoint& rCandidate, double fPlaneOffset, tools::B3DOrientation ePlaneOrthogonal)
+ {
+ if(tools::B3DORIENTATION_X == ePlaneOrthogonal)
+ {
+ return fTools::moreOrEqual(rCandidate.getX(), fPlaneOffset);
+ }
+ else if(tools::B3DORIENTATION_Y == ePlaneOrthogonal)
+ {
+ return fTools::moreOrEqual(rCandidate.getY(), fPlaneOffset);
+ }
+ else
+ {
+ return fTools::moreOrEqual(rCandidate.getZ(), fPlaneOffset);
+ }
+ }
+
+ inline double impGetCut(const B3DPoint& rCurrent, const B3DPoint& rNext, double fPlaneOffset, tools::B3DOrientation ePlaneOrthogonal)
+ {
+ if(tools::B3DORIENTATION_X == ePlaneOrthogonal)
+ {
+ return ((fPlaneOffset - rCurrent.getX())/(rNext.getX() - rCurrent.getX()));
+ }
+ else if(tools::B3DORIENTATION_Y == ePlaneOrthogonal)
+ {
+ return ((fPlaneOffset - rCurrent.getY())/(rNext.getY() - rCurrent.getY()));
+ }
+ else
+ {
+ return ((fPlaneOffset - rCurrent.getZ())/(rNext.getZ() - rCurrent.getZ()));
+ }
+ }
+
+ void impAppendCopy(B3DPolygon& rDest, const B3DPolygon& rSource, sal_uInt32 nIndex)
+ {
+ rDest.append(rSource.getB3DPoint(nIndex));
+
+ if(rSource.areBColorsUsed())
+ {
+ rDest.setBColor(rDest.count() - 1L, rSource.getBColor(nIndex));
+ }
+
+ if(rSource.areNormalsUsed())
+ {
+ rDest.setNormal(rDest.count() - 1L, rSource.getNormal(nIndex));
+ }
+
+ if(rSource.areTextureCoordinatesUsed())
+ {
+ rDest.setTextureCoordinate(rDest.count() - 1L, rSource.getTextureCoordinate(nIndex));
+ }
+ }
+
+ void impAppendInterpolate(B3DPolygon& rDest, const B3DPolygon& rSource, sal_uInt32 nIndA, sal_uInt32 nIndB, double fCut)
+ {
+ const B3DPoint aCurrPoint(rSource.getB3DPoint(nIndA));
+ const B3DPoint aNextPoint(rSource.getB3DPoint(nIndB));
+ rDest.append(interpolate(aCurrPoint, aNextPoint, fCut));
+
+ if(rSource.areBColorsUsed())
+ {
+ const BColor aCurrBColor(rSource.getBColor(nIndA));
+ const BColor aNextBColor(rSource.getBColor(nIndB));
+ rDest.setBColor(rDest.count() - 1L, interpolate(aCurrBColor, aNextBColor, fCut));
+ }
+
+ if(rSource.areNormalsUsed())
+ {
+ const B3DVector aCurrVector(rSource.getNormal(nIndA));
+ const B3DVector aNextVector(rSource.getNormal(nIndB));
+ rDest.setNormal(rDest.count() - 1L, interpolate(aCurrVector, aNextVector, fCut));
+ }
+
+ if(rSource.areTextureCoordinatesUsed())
+ {
+ const B2DPoint aCurrTxCo(rSource.getTextureCoordinate(nIndA));
+ const B2DPoint aNextTxCo(rSource.getTextureCoordinate(nIndB));
+ rDest.setTextureCoordinate(rDest.count() - 1L, interpolate(aCurrTxCo, aNextTxCo, fCut));
+ }
+ }
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ B3DPolyPolygon clipPolygonOnOrthogonalPlane(const B3DPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(rCandidate.count())
+ {
+ const B3DRange aCandidateRange(getRange(rCandidate));
+
+ if(B3DORIENTATION_X == ePlaneOrthogonal && fTools::moreOrEqual(aCandidateRange.getMinX(), fPlaneOffset))
+ {
+ // completely above and on the clip plane.
+ if(bClipPositive)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(B3DORIENTATION_X == ePlaneOrthogonal && fTools::lessOrEqual(aCandidateRange.getMaxX(), fPlaneOffset))
+ {
+ // completely below and on the clip plane.
+ if(!bClipPositive)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(B3DORIENTATION_Y == ePlaneOrthogonal && fTools::moreOrEqual(aCandidateRange.getMinY(), fPlaneOffset))
+ {
+ // completely above and on the clip plane.
+ if(bClipPositive)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(B3DORIENTATION_Y == ePlaneOrthogonal && fTools::lessOrEqual(aCandidateRange.getMaxY(), fPlaneOffset))
+ {
+ // completely below and on the clip plane.
+ if(!bClipPositive)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(B3DORIENTATION_Z == ePlaneOrthogonal && fTools::moreOrEqual(aCandidateRange.getMinZ(), fPlaneOffset))
+ {
+ // completely above and on the clip plane.
+ if(bClipPositive)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(B3DORIENTATION_Z == ePlaneOrthogonal && fTools::lessOrEqual(aCandidateRange.getMaxZ(), fPlaneOffset))
+ {
+ // completely below and on the clip plane.
+ if(!bClipPositive)
+ {
+ // add completely
+ aRetval.append(rCandidate);
+ }
+ }
+ else
+ {
+ // prepare loop(s)
+ B3DPolygon aNewPolygon;
+ B3DPoint aCurrent(rCandidate.getB3DPoint(0L));
+ const sal_uInt32 nPointCount(rCandidate.count());
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ bool bCurrentInside(impIsInside(aCurrent, fPlaneOffset, ePlaneOrthogonal) == bClipPositive);
+
+ if(bCurrentInside)
+ {
+ impAppendCopy(aNewPolygon, rCandidate, 0L);
+ }
+
+ if(bStroke)
+ {
+ // open polygon, create clipped line snippets.
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ // get next point data
+ const sal_uInt32 nNextIndex((a + 1L == nPointCount) ? 0L : a + 1L);
+ const B3DPoint aNext(rCandidate.getB3DPoint(nNextIndex));
+ const bool bNextInside(impIsInside(aNext, fPlaneOffset, ePlaneOrthogonal) == bClipPositive);
+
+ if(bCurrentInside != bNextInside)
+ {
+ // change inside/outside
+ if(bNextInside)
+ {
+ // entering, finish existing and start new line polygon
+ if(aNewPolygon.count() > 1L)
+ {
+ aRetval.append(aNewPolygon);
+ }
+
+ aNewPolygon.clear();
+ }
+
+ // calculate and add cut point
+ const double fCut(impGetCut(aCurrent, aNext, fPlaneOffset, ePlaneOrthogonal));
+ impAppendInterpolate(aNewPolygon, rCandidate, a, nNextIndex, fCut);
+
+ // pepare next step
+ bCurrentInside = bNextInside;
+ }
+
+ if(bNextInside)
+ {
+ impAppendCopy(aNewPolygon, rCandidate, nNextIndex);
+ }
+
+ // pepare next step
+ aCurrent = aNext;
+ }
+
+ if(aNewPolygon.count() > 1L)
+ {
+ aRetval.append(aNewPolygon);
+ }
+ }
+ else
+ {
+ // closed polygon, create single clipped closed polygon
+ for(sal_uInt32 a(0L); a < nEdgeCount; a++)
+ {
+ // get next point data, use offset
+ const sal_uInt32 nNextIndex((a + 1L == nPointCount) ? 0L : a + 1L);
+ const B3DPoint aNext(rCandidate.getB3DPoint(nNextIndex));
+ const bool bNextInside(impIsInside(aNext, fPlaneOffset, ePlaneOrthogonal) == bClipPositive);
+
+ if(bCurrentInside != bNextInside)
+ {
+ // calculate and add cut point
+ const double fCut(impGetCut(aCurrent, aNext, fPlaneOffset, ePlaneOrthogonal));
+ impAppendInterpolate(aNewPolygon, rCandidate, a, nNextIndex, fCut);
+
+ // pepare next step
+ bCurrentInside = bNextInside;
+ }
+
+ if(bNextInside && nNextIndex)
+ {
+ impAppendCopy(aNewPolygon, rCandidate, nNextIndex);
+ }
+
+ // pepare next step
+ aCurrent = aNext;
+ }
+
+ if(aNewPolygon.count() > 2L)
+ {
+ aNewPolygon.setClosed(true);
+ aRetval.append(aNewPolygon);
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon clipPolyPolygonOnOrthogonalPlane(const B3DPolyPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(clipPolygonOnOrthogonalPlane(rCandidate.getB3DPolygon(a), ePlaneOrthogonal, bClipPositive, fPlaneOffset, bStroke));
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(clipPolygonOnRange(rCandidate.getB3DPolygon(a), rRange, bInside, bStroke));
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(rRange.isEmpty())
+ {
+ // clipping against an empty range. Nothing is inside an empty range, so the polygon
+ // is outside the range. So only return if not inside is wanted
+ if(!bInside && rCandidate.count())
+ {
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(rCandidate.count())
+ {
+ const B3DRange aCandidateRange3D(getRange(rCandidate));
+ const B2DRange aCandidateRange(
+ aCandidateRange3D.getMinX(), aCandidateRange3D.getMinY(),
+ aCandidateRange3D.getMaxX(), aCandidateRange3D.getMaxY());
+
+ if(rRange.isInside(aCandidateRange))
+ {
+ // candidate is completely inside given range, nothing to do. Is also true with curves.
+ if(bInside)
+ {
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(!rRange.overlaps(aCandidateRange))
+ {
+ // candidate is completely outside given range, nothing to do. Is also true with curves.
+ if(!bInside)
+ {
+ aRetval.append(rCandidate);
+ }
+ }
+ else
+ {
+ // clip against the six planes of the range
+ // against lower X
+ aRetval = clipPolygonOnOrthogonalPlane(rCandidate, tools::B3DORIENTATION_X, bInside, rRange.getMinX(), bStroke);
+
+ if(aRetval.count())
+ {
+ // against lower Y
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnOrthogonalPlane(aRetval.getB3DPolygon(0L), tools::B3DORIENTATION_Y, bInside, rRange.getMinY(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnOrthogonalPlane(aRetval, tools::B3DORIENTATION_Y, bInside, rRange.getMinY(), bStroke);
+ }
+
+ if(aRetval.count())
+ {
+ // against higher X
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnOrthogonalPlane(aRetval.getB3DPolygon(0L), tools::B3DORIENTATION_X, !bInside, rRange.getMaxX(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnOrthogonalPlane(aRetval, tools::B3DORIENTATION_X, !bInside, rRange.getMaxX(), bStroke);
+ }
+
+ if(aRetval.count())
+ {
+ // against higher Y
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnOrthogonalPlane(aRetval.getB3DPolygon(0L), tools::B3DORIENTATION_Y, !bInside, rRange.getMaxY(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnOrthogonalPlane(aRetval, tools::B3DORIENTATION_Y, !bInside, rRange.getMaxY(), bStroke);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(clipPolygonOnRange(rCandidate.getB3DPolygon(a), rRange, bInside, bStroke));
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(rRange.isEmpty())
+ {
+ // clipping against an empty range. Nothing is inside an empty range, so the polygon
+ // is outside the range. So only return if not inside is wanted
+ if(!bInside && rCandidate.count())
+ {
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(rCandidate.count())
+ {
+ const B3DRange aCandidateRange(getRange(rCandidate));
+
+ if(rRange.isInside(aCandidateRange))
+ {
+ // candidate is completely inside given range, nothing to do. Is also true with curves.
+ if(bInside)
+ {
+ aRetval.append(rCandidate);
+ }
+ }
+ else if(!rRange.overlaps(aCandidateRange))
+ {
+ // candidate is completely outside given range, nothing to do. Is also true with curves.
+ if(!bInside)
+ {
+ aRetval.append(rCandidate);
+ }
+ }
+ else
+ {
+ // clip against X,Y first and see if there's something left
+ const B2DRange aCandidateRange2D(rRange.getMinX(), rRange.getMinY(), rRange.getMaxX(), rRange.getMaxY());
+ aRetval = clipPolygonOnRange(rCandidate, aCandidateRange2D, bInside, bStroke);
+
+ if(aRetval.count())
+ {
+ // against lower Z
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnOrthogonalPlane(aRetval.getB3DPolygon(0L), tools::B3DORIENTATION_Z, bInside, rRange.getMinZ(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnOrthogonalPlane(aRetval, tools::B3DORIENTATION_Z, bInside, rRange.getMinZ(), bStroke);
+ }
+
+ if(aRetval.count())
+ {
+ // against higher Z
+ if(1L == aRetval.count())
+ {
+ aRetval = clipPolygonOnOrthogonalPlane(aRetval.getB3DPolygon(0L), tools::B3DORIENTATION_Z, !bInside, rRange.getMaxZ(), bStroke);
+ }
+ else
+ {
+ aRetval = clipPolyPolygonOnOrthogonalPlane(aRetval, tools::B3DORIENTATION_Z, !bInside, rRange.getMaxZ(), bStroke);
+ }
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon clipPolygonOnPlane(const B3DPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(rPlaneNormal.equalZero())
+ {
+ // not really a plane definition, return polygon
+ aRetval.append(rCandidate);
+ }
+ else if(rCandidate.count())
+ {
+ // build transform to project planeNormal on X-Axis and pointOnPlane to null point
+ B3DHomMatrix aMatrixTransform;
+ aMatrixTransform.translate(-rPointOnPlane.getX(), -rPointOnPlane.getY(), -rPointOnPlane.getZ());
+ const double fRotInXY(atan2(rPlaneNormal.getY(), rPlaneNormal.getX()));
+ const double fRotInXZ(atan2(-rPlaneNormal.getZ(), rPlaneNormal.getXYLength()));
+ if(!fTools::equalZero(fRotInXY) || !fTools::equalZero(fRotInXZ))
+ {
+ aMatrixTransform.rotate(0.0, fRotInXZ, fRotInXY);
+ }
+
+ // transform polygon to clip scenario
+ B3DPolygon aCandidate(rCandidate);
+ aCandidate.transform(aMatrixTransform);
+
+ // clip on YZ plane
+ aRetval = clipPolygonOnOrthogonalPlane(aCandidate, tools::B3DORIENTATION_X, bClipPositive, 0.0, bStroke);
+
+ if(aRetval.count())
+ {
+ // if there is a result, it needs to be transformed back
+ aMatrixTransform.invert();
+ aRetval.transform(aMatrixTransform);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon clipPolyPolygonOnPlane(const B3DPolyPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(rPlaneNormal.equalZero())
+ {
+ // not really a plane definition, return polygon
+ aRetval = rCandidate;
+ }
+ else if(rCandidate.count())
+ {
+ // build transform to project planeNormal on X-Axis and pointOnPlane to null point
+ B3DHomMatrix aMatrixTransform;
+ aMatrixTransform.translate(-rPointOnPlane.getX(), -rPointOnPlane.getY(), -rPointOnPlane.getZ());
+ const double fRotInXY(atan2(rPlaneNormal.getY(), rPlaneNormal.getX()));
+ const double fRotInXZ(atan2(-rPlaneNormal.getZ(), rPlaneNormal.getXYLength()));
+ if(!fTools::equalZero(fRotInXY) || !fTools::equalZero(fRotInXZ))
+ {
+ aMatrixTransform.rotate(0.0, fRotInXZ, fRotInXY);
+ }
+
+ // transform polygon to clip scenario
+ aRetval = rCandidate;
+ aRetval.transform(aMatrixTransform);
+
+ // clip on YZ plane
+ aRetval = clipPolyPolygonOnOrthogonalPlane(aRetval, tools::B3DORIENTATION_X, bClipPositive, 0.0, bStroke);
+
+ if(aRetval.count())
+ {
+ // if there is a result, it needs to be transformed back
+ aMatrixTransform.invert();
+ aRetval.transform(aMatrixTransform);
+ }
+ }
+
+ return aRetval;
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b3dpolygontools.cxx b/basegfx/source/polygon/b3dpolygontools.cxx
new file mode 100644
index 000000000000..ce76c3503dbf
--- /dev/null
+++ b/basegfx/source/polygon/b3dpolygontools.cxx
@@ -0,0 +1,1266 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b3dpolygontools.hxx>
+#include <basegfx/polygon/b3dpolygon.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/tuple/b3ituple.hxx>
+#include <numeric>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // B3DPolygon tools
+ void checkClosed(B3DPolygon& rCandidate)
+ {
+ while(rCandidate.count() > 1L
+ && rCandidate.getB3DPoint(0L).equal(rCandidate.getB3DPoint(rCandidate.count() - 1L)))
+ {
+ rCandidate.setClosed(true);
+ rCandidate.remove(rCandidate.count() - 1L);
+ }
+ }
+
+ // Get successor and predecessor indices. Returning the same index means there
+ // is none. Same for successor.
+ sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "getIndexOfPredecessor: Access to polygon out of range (!)");
+
+ if(nIndex)
+ {
+ return nIndex - 1L;
+ }
+ else if(rCandidate.count())
+ {
+ return rCandidate.count() - 1L;
+ }
+ else
+ {
+ return nIndex;
+ }
+ }
+
+ sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "getIndexOfPredecessor: Access to polygon out of range (!)");
+
+ if(nIndex + 1L < rCandidate.count())
+ {
+ return nIndex + 1L;
+ }
+ else
+ {
+ return 0L;
+ }
+ }
+
+ B3DRange getRange(const B3DPolygon& rCandidate)
+ {
+ B3DRange aRetval;
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B3DPoint aTestPoint(rCandidate.getB3DPoint(a));
+ aRetval.expand(aTestPoint);
+ }
+
+ return aRetval;
+ }
+
+ B3DVector getNormal(const B3DPolygon& rCandidate)
+ {
+ return rCandidate.getNormal();
+ }
+
+ B3DVector getPositiveOrientedNormal(const B3DPolygon& rCandidate)
+ {
+ B3DVector aRetval(rCandidate.getNormal());
+
+ if(ORIENTATION_NEGATIVE == getOrientation(rCandidate))
+ {
+ aRetval = -aRetval;
+ }
+
+ return aRetval;
+ }
+
+ B2VectorOrientation getOrientation(const B3DPolygon& rCandidate)
+ {
+ B2VectorOrientation eRetval(ORIENTATION_NEUTRAL);
+
+ if(rCandidate.count() > 2L)
+ {
+ const double fSignedArea(getSignedArea(rCandidate));
+
+ if(fSignedArea > 0.0)
+ {
+ eRetval = ORIENTATION_POSITIVE;
+ }
+ else if(fSignedArea < 0.0)
+ {
+ eRetval = ORIENTATION_NEGATIVE;
+ }
+ }
+
+ return eRetval;
+ }
+
+ double getSignedArea(const B3DPolygon& rCandidate)
+ {
+ double fRetval(0.0);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 2)
+ {
+ const B3DVector aAbsNormal(absolute(getNormal(rCandidate)));
+ sal_uInt16 nCase(3); // default: ignore z
+
+ if(aAbsNormal.getX() > aAbsNormal.getY())
+ {
+ if(aAbsNormal.getX() > aAbsNormal.getZ())
+ {
+ nCase = 1; // ignore x
+ }
+ }
+ else if(aAbsNormal.getY() > aAbsNormal.getZ())
+ {
+ nCase = 2; // ignore y
+ }
+
+ B3DPoint aPreviousPoint(rCandidate.getB3DPoint(nPointCount - 1L));
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B3DPoint aCurrentPoint(rCandidate.getB3DPoint(a));
+
+ switch(nCase)
+ {
+ case 1: // ignore x
+ fRetval += aPreviousPoint.getZ() * aCurrentPoint.getY();
+ fRetval -= aPreviousPoint.getY() * aCurrentPoint.getZ();
+ break;
+ case 2: // ignore y
+ fRetval += aPreviousPoint.getX() * aCurrentPoint.getZ();
+ fRetval -= aPreviousPoint.getZ() * aCurrentPoint.getX();
+ break;
+ case 3: // ignore z
+ fRetval += aPreviousPoint.getX() * aCurrentPoint.getY();
+ fRetval -= aPreviousPoint.getY() * aCurrentPoint.getX();
+ break;
+ }
+
+ // prepare next step
+ aPreviousPoint = aCurrentPoint;
+ }
+
+ switch(nCase)
+ {
+ case 1: // ignore x
+ fRetval /= 2.0 * aAbsNormal.getX();
+ break;
+ case 2: // ignore y
+ fRetval /= 2.0 * aAbsNormal.getY();
+ break;
+ case 3: // ignore z
+ fRetval /= 2.0 * aAbsNormal.getZ();
+ break;
+ }
+ }
+
+ return fRetval;
+ }
+
+ double getArea(const B3DPolygon& rCandidate)
+ {
+ double fRetval(0.0);
+
+ if(rCandidate.count() > 2)
+ {
+ fRetval = getSignedArea(rCandidate);
+ const double fZero(0.0);
+
+ if(fTools::less(fRetval, fZero))
+ {
+ fRetval = -fRetval;
+ }
+ }
+
+ return fRetval;
+ }
+
+ double getEdgeLength(const B3DPolygon& rCandidate, sal_uInt32 nIndex)
+ {
+ OSL_ENSURE(nIndex < rCandidate.count(), "getEdgeLength: Access to polygon out of range (!)");
+ double fRetval(0.0);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nIndex < nPointCount)
+ {
+ if(rCandidate.isClosed() || ((nIndex + 1L) != nPointCount))
+ {
+ const sal_uInt32 nNextIndex(getIndexOfSuccessor(nIndex, rCandidate));
+ const B3DPoint aCurrentPoint(rCandidate.getB3DPoint(nIndex));
+ const B3DPoint aNextPoint(rCandidate.getB3DPoint(nNextIndex));
+ const B3DVector aVector(aNextPoint - aCurrentPoint);
+ fRetval = aVector.getLength();
+ }
+ }
+
+ return fRetval;
+ }
+
+ double getLength(const B3DPolygon& rCandidate)
+ {
+ double fRetval(0.0);
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 1L)
+ {
+ const sal_uInt32 nLoopCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+
+ for(sal_uInt32 a(0L); a < nLoopCount; a++)
+ {
+ const sal_uInt32 nNextIndex(getIndexOfSuccessor(a, rCandidate));
+ const B3DPoint aCurrentPoint(rCandidate.getB3DPoint(a));
+ const B3DPoint aNextPoint(rCandidate.getB3DPoint(nNextIndex));
+ const B3DVector aVector(aNextPoint - aCurrentPoint);
+ fRetval += aVector.getLength();
+ }
+ }
+
+ return fRetval;
+ }
+
+ B3DPoint getPositionAbsolute(const B3DPolygon& rCandidate, double fDistance, double fLength)
+ {
+ B3DPoint aRetval;
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 1L)
+ {
+ sal_uInt32 nIndex(0L);
+ bool bIndexDone(false);
+ const double fZero(0.0);
+ double fEdgeLength(fZero);
+
+ // get length if not given
+ if(fTools::equalZero(fLength))
+ {
+ fLength = getLength(rCandidate);
+ }
+
+ // handle fDistance < 0.0
+ if(fTools::less(fDistance, fZero))
+ {
+ if(rCandidate.isClosed())
+ {
+ // if fDistance < 0.0 increment with multiple of fLength
+ sal_uInt32 nCount(sal_uInt32(-fDistance / fLength));
+ fDistance += double(nCount + 1L) * fLength;
+ }
+ else
+ {
+ // crop to polygon start
+ fDistance = fZero;
+ bIndexDone = true;
+ }
+ }
+
+ // handle fDistance >= fLength
+ if(fTools::moreOrEqual(fDistance, fLength))
+ {
+ if(rCandidate.isClosed())
+ {
+ // if fDistance >= fLength decrement with multiple of fLength
+ sal_uInt32 nCount(sal_uInt32(fDistance / fLength));
+ fDistance -= (double)(nCount) * fLength;
+ }
+ else
+ {
+ // crop to polygon end
+ fDistance = fZero;
+ nIndex = nPointCount - 1L;
+ bIndexDone = true;
+ }
+ }
+
+ // look for correct index. fDistance is now [0.0 .. fLength[
+ if(!bIndexDone)
+ {
+ do
+ {
+ // get length of next edge
+ fEdgeLength = getEdgeLength(rCandidate, nIndex);
+
+ if(fTools::moreOrEqual(fDistance, fEdgeLength))
+ {
+ // go to next edge
+ fDistance -= fEdgeLength;
+ nIndex++;
+ }
+ else
+ {
+ // it's on this edge, stop
+ bIndexDone = true;
+ }
+ } while (!bIndexDone);
+ }
+
+ // get the point using nIndex
+ aRetval = rCandidate.getB3DPoint(nIndex);
+
+ // if fDistance != 0.0, move that length on the edge. The edge
+ // length is in fEdgeLength.
+ if(!fTools::equalZero(fDistance))
+ {
+ sal_uInt32 nNextIndex(getIndexOfSuccessor(nIndex, rCandidate));
+ const B3DPoint aNextPoint(rCandidate.getB3DPoint(nNextIndex));
+ double fRelative(fZero);
+
+ if(!fTools::equalZero(fEdgeLength))
+ {
+ fRelative = fDistance / fEdgeLength;
+ }
+
+ // add calculated average value to the return value
+ aRetval += interpolate(aRetval, aNextPoint, fRelative);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPoint getPositionRelative(const B3DPolygon& rCandidate, double fDistance, double fLength)
+ {
+ // get length if not given
+ if(fTools::equalZero(fLength))
+ {
+ fLength = getLength(rCandidate);
+ }
+
+ // multiply fDistance with real length to get absolute position and
+ // use getPositionAbsolute
+ return getPositionAbsolute(rCandidate, fDistance * fLength, fLength);
+ }
+
+ void applyLineDashing(const B3DPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B3DPolyPolygon* pLineTarget, B3DPolyPolygon* pGapTarget, double fDotDashLength)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+ const sal_uInt32 nDotDashCount(rDotDashArray.size());
+
+ if(fTools::lessOrEqual(fDotDashLength, 0.0))
+ {
+ fDotDashLength = ::std::accumulate(rDotDashArray.begin(), rDotDashArray.end(), 0.0);
+ }
+
+ if(fTools::more(fDotDashLength, 0.0) && (pLineTarget || pGapTarget) && nPointCount)
+ {
+ // clear targets
+ if(pLineTarget)
+ {
+ pLineTarget->clear();
+ }
+
+ if(pGapTarget)
+ {
+ pGapTarget->clear();
+ }
+
+ // prepare current edge's start
+ B3DPoint aCurrentPoint(rCandidate.getB3DPoint(0));
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+
+ // prepare DotDashArray iteration and the line/gap switching bool
+ sal_uInt32 nDotDashIndex(0);
+ bool bIsLine(true);
+ double fDotDashMovingLength(rDotDashArray[0]);
+ B3DPolygon aSnippet;
+
+ // iterate over all edges
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ // update current edge
+ double fLastDotDashMovingLength(0.0);
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B3DPoint aNextPoint(rCandidate.getB3DPoint(nNextIndex));
+ const double fEdgeLength(B3DVector(aNextPoint - aCurrentPoint).getLength());
+
+ while(fTools::less(fDotDashMovingLength, fEdgeLength))
+ {
+ // new split is inside edge, create and append snippet [fLastDotDashMovingLength, fDotDashMovingLength]
+ const bool bHandleLine(bIsLine && pLineTarget);
+ const bool bHandleGap(!bIsLine && pGapTarget);
+
+ if(bHandleLine || bHandleGap)
+ {
+ if(!aSnippet.count())
+ {
+ aSnippet.append(interpolate(aCurrentPoint, aNextPoint, fLastDotDashMovingLength / fEdgeLength));
+ }
+
+ aSnippet.append(interpolate(aCurrentPoint, aNextPoint, fDotDashMovingLength / fEdgeLength));
+
+ if(bHandleLine)
+ {
+ pLineTarget->append(aSnippet);
+ }
+ else
+ {
+ pGapTarget->append(aSnippet);
+ }
+
+ aSnippet.clear();
+ }
+
+ // prepare next DotDashArray step and flip line/gap flag
+ fLastDotDashMovingLength = fDotDashMovingLength;
+ fDotDashMovingLength += rDotDashArray[(++nDotDashIndex) % nDotDashCount];
+ bIsLine = !bIsLine;
+ }
+
+ // append snippet [fLastDotDashMovingLength, fEdgeLength]
+ const bool bHandleLine(bIsLine && pLineTarget);
+ const bool bHandleGap(!bIsLine && pGapTarget);
+
+ if(bHandleLine || bHandleGap)
+ {
+ if(!aSnippet.count())
+ {
+ aSnippet.append(interpolate(aCurrentPoint, aNextPoint, fLastDotDashMovingLength / fEdgeLength));
+ }
+
+ aSnippet.append(aNextPoint);
+ }
+
+ // prepare move to next edge
+ fDotDashMovingLength -= fEdgeLength;
+
+ // prepare next edge step (end point gets new start point)
+ aCurrentPoint = aNextPoint;
+ }
+
+ // append last intermediate results (if exists)
+ if(aSnippet.count())
+ {
+ if(bIsLine && pLineTarget)
+ {
+ pLineTarget->append(aSnippet);
+ }
+ else if(!bIsLine && pGapTarget)
+ {
+ pGapTarget->append(aSnippet);
+ }
+ }
+
+ // check if start and end polygon may be merged
+ if(pLineTarget)
+ {
+ const sal_uInt32 nCount(pLineTarget->count());
+
+ if(nCount > 1)
+ {
+ // these polygons were created above, there exists none with less than two points,
+ // thus dircet point access below is allowed
+ const B3DPolygon aFirst(pLineTarget->getB3DPolygon(0));
+ B3DPolygon aLast(pLineTarget->getB3DPolygon(nCount - 1));
+
+ if(aFirst.getB3DPoint(0).equal(aLast.getB3DPoint(aLast.count() - 1)))
+ {
+ // start of first and end of last are the same -> merge them
+ aLast.append(aFirst);
+ aLast.removeDoublePoints();
+ pLineTarget->setB3DPolygon(0, aLast);
+ pLineTarget->remove(nCount - 1);
+ }
+ }
+ }
+
+ if(pGapTarget)
+ {
+ const sal_uInt32 nCount(pGapTarget->count());
+
+ if(nCount > 1)
+ {
+ // these polygons were created above, there exists none with less than two points,
+ // thus dircet point access below is allowed
+ const B3DPolygon aFirst(pGapTarget->getB3DPolygon(0));
+ B3DPolygon aLast(pGapTarget->getB3DPolygon(nCount - 1));
+
+ if(aFirst.getB3DPoint(0).equal(aLast.getB3DPoint(aLast.count() - 1)))
+ {
+ // start of first and end of last are the same -> merge them
+ aLast.append(aFirst);
+ aLast.removeDoublePoints();
+ pGapTarget->setB3DPolygon(0, aLast);
+ pGapTarget->remove(nCount - 1);
+ }
+ }
+ }
+ }
+ else
+ {
+ // parameters make no sense, just add source to targets
+ if(pLineTarget)
+ {
+ pLineTarget->append(rCandidate);
+ }
+
+ if(pGapTarget)
+ {
+ pGapTarget->append(rCandidate);
+ }
+ }
+ }
+
+ B3DPolygon applyDefaultNormalsSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter)
+ {
+ B3DPolygon aRetval(rCandidate);
+
+ for(sal_uInt32 a(0L); a < aRetval.count(); a++)
+ {
+ B3DVector aVector(aRetval.getB3DPoint(a) - rCenter);
+ aVector.normalize();
+ aRetval.setNormal(a, aVector);
+ }
+
+ return aRetval;
+ }
+
+ B3DPolygon invertNormals( const B3DPolygon& rCandidate)
+ {
+ B3DPolygon aRetval(rCandidate);
+
+ if(aRetval.areNormalsUsed())
+ {
+ for(sal_uInt32 a(0L); a < aRetval.count(); a++)
+ {
+ aRetval.setNormal(a, -aRetval.getNormal(a));
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPolygon applyDefaultTextureCoordinatesParallel( const B3DPolygon& rCandidate, const B3DRange& rRange, bool bChangeX, bool bChangeY)
+ {
+ B3DPolygon aRetval(rCandidate);
+
+ if(bChangeX || bChangeY)
+ {
+ // create projection of standard texture coordinates in (X, Y) onto
+ // the 3d coordinates straight
+ const double fWidth(rRange.getWidth());
+ const double fHeight(rRange.getHeight());
+ const bool bWidthSet(!fTools::equalZero(fWidth));
+ const bool bHeightSet(!fTools::equalZero(fHeight));
+ const double fOne(1.0);
+
+ for(sal_uInt32 a(0L); a < aRetval.count(); a++)
+ {
+ const B3DPoint aPoint(aRetval.getB3DPoint(a));
+ B2DPoint aTextureCoordinate(aRetval.getTextureCoordinate(a));
+
+ if(bChangeX)
+ {
+ if(bWidthSet)
+ {
+ aTextureCoordinate.setX((aPoint.getX() - rRange.getMinX()) / fWidth);
+ }
+ else
+ {
+ aTextureCoordinate.setX(0.0);
+ }
+ }
+
+ if(bChangeY)
+ {
+ if(bHeightSet)
+ {
+ aTextureCoordinate.setY(fOne - ((aPoint.getY() - rRange.getMinY()) / fHeight));
+ }
+ else
+ {
+ aTextureCoordinate.setY(fOne);
+ }
+ }
+
+ aRetval.setTextureCoordinate(a, aTextureCoordinate);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPolygon applyDefaultTextureCoordinatesSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX, bool bChangeY)
+ {
+ B3DPolygon aRetval(rCandidate);
+
+ if(bChangeX || bChangeY)
+ {
+ // create texture coordinates using sphere projection to cartesian coordinates,
+ // use object's center as base
+ const double fOne(1.0);
+ const sal_uInt32 nPointCount(aRetval.count());
+ bool bPolarPoints(false);
+ sal_uInt32 a;
+
+ // create center cartesian coordinates to have a possibility to decide if on boundary
+ // transitions which value to choose
+ const B3DRange aPlaneRange(getRange(rCandidate));
+ const B3DPoint aPlaneCenter(aPlaneRange.getCenter() - rCenter);
+ const double fXCenter(fOne - ((atan2(aPlaneCenter.getZ(), aPlaneCenter.getX()) + F_PI) / F_2PI));
+
+ for(a = 0L; a < nPointCount; a++)
+ {
+ const B3DVector aVector(aRetval.getB3DPoint(a) - rCenter);
+ const double fY(fOne - ((atan2(aVector.getY(), aVector.getXZLength()) + F_PI2) / F_PI));
+ B2DPoint aTexCoor(aRetval.getTextureCoordinate(a));
+
+ if(fTools::equalZero(fY))
+ {
+ // point is a north polar point, no useful X-coordinate can be created.
+ if(bChangeY)
+ {
+ aTexCoor.setY(0.0);
+
+ if(bChangeX)
+ {
+ bPolarPoints = true;
+ }
+ }
+ }
+ else if(fTools::equal(fY, fOne))
+ {
+ // point is a south polar point, no useful X-coordinate can be created. Set
+ // Y-coordinte, though
+ if(bChangeY)
+ {
+ aTexCoor.setY(fOne);
+
+ if(bChangeX)
+ {
+ bPolarPoints = true;
+ }
+ }
+ }
+ else
+ {
+ double fX(fOne - ((atan2(aVector.getZ(), aVector.getX()) + F_PI) / F_2PI));
+
+ // correct cartesinan point coordiante dependent from center value
+ if(fX > fXCenter + 0.5)
+ {
+ fX -= fOne;
+ }
+ else if(fX < fXCenter - 0.5)
+ {
+ fX += fOne;
+ }
+
+ if(bChangeX)
+ {
+ aTexCoor.setX(fX);
+ }
+
+ if(bChangeY)
+ {
+ aTexCoor.setY(fY);
+ }
+ }
+
+ aRetval.setTextureCoordinate(a, aTexCoor);
+ }
+
+ if(bPolarPoints)
+ {
+ // correct X-texture coordinates if polar points are contained. Those
+ // coordinates cannot be correct, so use prev or next X-coordinate
+ for(a = 0L; a < nPointCount; a++)
+ {
+ B2DPoint aTexCoor(aRetval.getTextureCoordinate(a));
+
+ if(fTools::equalZero(aTexCoor.getY()) || fTools::equal(aTexCoor.getY(), fOne))
+ {
+ // get prev, next TexCoor and test for pole
+ const B2DPoint aPrevTexCoor(aRetval.getTextureCoordinate(a ? a - 1L : nPointCount - 1L));
+ const B2DPoint aNextTexCoor(aRetval.getTextureCoordinate((a + 1L) % nPointCount));
+ const bool bPrevPole(fTools::equalZero(aPrevTexCoor.getY()) || fTools::equal(aPrevTexCoor.getY(), fOne));
+ const bool bNextPole(fTools::equalZero(aNextTexCoor.getY()) || fTools::equal(aNextTexCoor.getY(), fOne));
+
+ if(!bPrevPole && !bNextPole)
+ {
+ // both no poles, mix them
+ aTexCoor.setX((aPrevTexCoor.getX() + aNextTexCoor.getX()) / 2.0);
+ }
+ else if(!bNextPole)
+ {
+ // copy next
+ aTexCoor.setX(aNextTexCoor.getX());
+ }
+ else
+ {
+ // copy prev, even if it's a pole, hopefully it is already corrected
+ aTexCoor.setX(aPrevTexCoor.getX());
+ }
+
+ aRetval.setTextureCoordinate(a, aTexCoor);
+ }
+ }
+ }
+ }
+
+ return aRetval;
+ }
+
+ bool isInEpsilonRange(const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, const B3DPoint& rTestPosition, double fDistance)
+ {
+ // build edge vector
+ const B3DVector aEdge(rEdgeEnd - rEdgeStart);
+ bool bDoDistanceTestStart(false);
+ bool bDoDistanceTestEnd(false);
+
+ if(aEdge.equalZero())
+ {
+ // no edge, just a point. Do one of the distance tests.
+ bDoDistanceTestStart = true;
+ }
+ else
+ {
+ // calculate fCut in aEdge
+ const B3DVector aTestEdge(rTestPosition - rEdgeStart);
+ const double fScalarTestEdge(aEdge.scalar(aTestEdge));
+ const double fScalarStartEdge(aEdge.scalar(rEdgeStart));
+ const double fScalarEdge(aEdge.scalar(aEdge));
+ const double fCut((fScalarTestEdge - fScalarStartEdge) / fScalarEdge);
+ const double fZero(0.0);
+ const double fOne(1.0);
+
+ if(fTools::less(fCut, fZero))
+ {
+ // left of rEdgeStart
+ bDoDistanceTestStart = true;
+ }
+ else if(fTools::more(fCut, fOne))
+ {
+ // right of rEdgeEnd
+ bDoDistanceTestEnd = true;
+ }
+ else
+ {
+ // inside line [0.0 .. 1.0]
+ const B3DPoint aCutPoint(interpolate(rEdgeStart, rEdgeEnd, fCut));
+ const B3DVector aDelta(rTestPosition - aCutPoint);
+ const double fDistanceSquare(aDelta.scalar(aDelta));
+
+ if(fDistanceSquare <= fDistance * fDistance * fDistance)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ if(bDoDistanceTestStart)
+ {
+ const B3DVector aDelta(rTestPosition - rEdgeStart);
+ const double fDistanceSquare(aDelta.scalar(aDelta));
+
+ if(fDistanceSquare <= fDistance * fDistance * fDistance)
+ {
+ return true;
+ }
+ }
+ else if(bDoDistanceTestEnd)
+ {
+ const B3DVector aDelta(rTestPosition - rEdgeEnd);
+ const double fDistanceSquare(aDelta.scalar(aDelta));
+
+ if(fDistanceSquare <= fDistance * fDistance * fDistance)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool isInEpsilonRange(const B3DPolygon& rCandidate, const B3DPoint& rTestPosition, double fDistance)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ B3DPoint aCurrent(rCandidate.getB3DPoint(0));
+
+ if(nEdgeCount)
+ {
+ // edges
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B3DPoint aNext(rCandidate.getB3DPoint(nNextIndex));
+
+ if(isInEpsilonRange(aCurrent, aNext, rTestPosition, fDistance))
+ {
+ return true;
+ }
+
+ // prepare next step
+ aCurrent = aNext;
+ }
+ }
+ else
+ {
+ // no edges, but points -> not closed. Check single point. Just
+ // use isInEpsilonRange with twice the same point, it handles those well
+ if(isInEpsilonRange(aCurrent, aCurrent, rTestPosition, fDistance))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ bool isInside(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder)
+ {
+ if(bWithBorder && isPointOnPolygon(rCandidate, rPoint, true))
+ {
+ return true;
+ }
+ else
+ {
+ bool bRetval(false);
+ const B3DVector aPlaneNormal(rCandidate.getNormal());
+
+ if(!aPlaneNormal.equalZero())
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount)
+ {
+ B3DPoint aCurrentPoint(rCandidate.getB3DPoint(nPointCount - 1));
+ const double fAbsX(fabs(aPlaneNormal.getX()));
+ const double fAbsY(fabs(aPlaneNormal.getY()));
+ const double fAbsZ(fabs(aPlaneNormal.getZ()));
+
+ if(fAbsX > fAbsY && fAbsX > fAbsZ)
+ {
+ // normal points mostly in X-Direction, use YZ-Polygon projection for check
+ // x -> y, y -> z
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ const B3DPoint aPreviousPoint(aCurrentPoint);
+ aCurrentPoint = rCandidate.getB3DPoint(a);
+
+ // cross-over in Z?
+ const bool bCompZA(fTools::more(aPreviousPoint.getZ(), rPoint.getZ()));
+ const bool bCompZB(fTools::more(aCurrentPoint.getZ(), rPoint.getZ()));
+
+ if(bCompZA != bCompZB)
+ {
+ // cross-over in Y?
+ const bool bCompYA(fTools::more(aPreviousPoint.getY(), rPoint.getY()));
+ const bool bCompYB(fTools::more(aCurrentPoint.getY(), rPoint.getY()));
+
+ if(bCompYA == bCompYB)
+ {
+ if(bCompYA)
+ {
+ bRetval = !bRetval;
+ }
+ }
+ else
+ {
+ const double fCompare(
+ aCurrentPoint.getY() - (aCurrentPoint.getZ() - rPoint.getZ()) *
+ (aPreviousPoint.getY() - aCurrentPoint.getY()) /
+ (aPreviousPoint.getZ() - aCurrentPoint.getZ()));
+
+ if(fTools::more(fCompare, rPoint.getY()))
+ {
+ bRetval = !bRetval;
+ }
+ }
+ }
+ }
+ }
+ else if(fAbsY > fAbsX && fAbsY > fAbsZ)
+ {
+ // normal points mostly in Y-Direction, use XZ-Polygon projection for check
+ // x -> x, y -> z
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ const B3DPoint aPreviousPoint(aCurrentPoint);
+ aCurrentPoint = rCandidate.getB3DPoint(a);
+
+ // cross-over in Z?
+ const bool bCompZA(fTools::more(aPreviousPoint.getZ(), rPoint.getZ()));
+ const bool bCompZB(fTools::more(aCurrentPoint.getZ(), rPoint.getZ()));
+
+ if(bCompZA != bCompZB)
+ {
+ // cross-over in X?
+ const bool bCompXA(fTools::more(aPreviousPoint.getX(), rPoint.getX()));
+ const bool bCompXB(fTools::more(aCurrentPoint.getX(), rPoint.getX()));
+
+ if(bCompXA == bCompXB)
+ {
+ if(bCompXA)
+ {
+ bRetval = !bRetval;
+ }
+ }
+ else
+ {
+ const double fCompare(
+ aCurrentPoint.getX() - (aCurrentPoint.getZ() - rPoint.getZ()) *
+ (aPreviousPoint.getX() - aCurrentPoint.getX()) /
+ (aPreviousPoint.getZ() - aCurrentPoint.getZ()));
+
+ if(fTools::more(fCompare, rPoint.getX()))
+ {
+ bRetval = !bRetval;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ // normal points mostly in Z-Direction, use XY-Polygon projection for check
+ // x -> x, y -> y
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ const B3DPoint aPreviousPoint(aCurrentPoint);
+ aCurrentPoint = rCandidate.getB3DPoint(a);
+
+ // cross-over in Y?
+ const bool bCompYA(fTools::more(aPreviousPoint.getY(), rPoint.getY()));
+ const bool bCompYB(fTools::more(aCurrentPoint.getY(), rPoint.getY()));
+
+ if(bCompYA != bCompYB)
+ {
+ // cross-over in X?
+ const bool bCompXA(fTools::more(aPreviousPoint.getX(), rPoint.getX()));
+ const bool bCompXB(fTools::more(aCurrentPoint.getX(), rPoint.getX()));
+
+ if(bCompXA == bCompXB)
+ {
+ if(bCompXA)
+ {
+ bRetval = !bRetval;
+ }
+ }
+ else
+ {
+ const double fCompare(
+ aCurrentPoint.getX() - (aCurrentPoint.getY() - rPoint.getY()) *
+ (aPreviousPoint.getX() - aCurrentPoint.getX()) /
+ (aPreviousPoint.getY() - aCurrentPoint.getY()));
+
+ if(fTools::more(fCompare, rPoint.getX()))
+ {
+ bRetval = !bRetval;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return bRetval;
+ }
+ }
+
+ bool isInside(const B3DPolygon& rCandidate, const B3DPolygon& rPolygon, bool bWithBorder)
+ {
+ const sal_uInt32 nPointCount(rPolygon.count());
+
+ for(sal_uInt32 a(0L); a < nPointCount; a++)
+ {
+ const B3DPoint aTestPoint(rPolygon.getB3DPoint(a));
+
+ if(!isInside(rCandidate, aTestPoint, bWithBorder))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ bool isPointOnLine(const B3DPoint& rStart, const B3DPoint& rEnd, const B3DPoint& rCandidate, bool bWithPoints)
+ {
+ if(rCandidate.equal(rStart) || rCandidate.equal(rEnd))
+ {
+ // candidate is in epsilon around start or end -> inside
+ return bWithPoints;
+ }
+ else if(rStart.equal(rEnd))
+ {
+ // start and end are equal, but candidate is outside their epsilon -> outside
+ return false;
+ }
+ else
+ {
+ const B3DVector aEdgeVector(rEnd - rStart);
+ const B3DVector aTestVector(rCandidate - rStart);
+
+ if(areParallel(aEdgeVector, aTestVector))
+ {
+ const double fZero(0.0);
+ const double fOne(1.0);
+ double fParamTestOnCurr(0.0);
+
+ if(aEdgeVector.getX() > aEdgeVector.getY())
+ {
+ if(aEdgeVector.getX() > aEdgeVector.getZ())
+ {
+ // X is biggest
+ fParamTestOnCurr = aTestVector.getX() / aEdgeVector.getX();
+ }
+ else
+ {
+ // Z is biggest
+ fParamTestOnCurr = aTestVector.getZ() / aEdgeVector.getZ();
+ }
+ }
+ else
+ {
+ if(aEdgeVector.getY() > aEdgeVector.getZ())
+ {
+ // Y is biggest
+ fParamTestOnCurr = aTestVector.getY() / aEdgeVector.getY();
+ }
+ else
+ {
+ // Z is biggest
+ fParamTestOnCurr = aTestVector.getZ() / aEdgeVector.getZ();
+ }
+ }
+
+ if(fTools::more(fParamTestOnCurr, fZero) && fTools::less(fParamTestOnCurr, fOne))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+
+ bool isPointOnPolygon(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithPoints)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 1L)
+ {
+ const sal_uInt32 nLoopCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1L);
+ B3DPoint aCurrentPoint(rCandidate.getB3DPoint(0));
+
+ for(sal_uInt32 a(0); a < nLoopCount; a++)
+ {
+ const B3DPoint aNextPoint(rCandidate.getB3DPoint((a + 1) % nPointCount));
+
+ if(isPointOnLine(aCurrentPoint, aNextPoint, rPoint, bWithPoints))
+ {
+ return true;
+ }
+
+ aCurrentPoint = aNextPoint;
+ }
+ }
+ else if(nPointCount && bWithPoints)
+ {
+ return rPoint.equal(rCandidate.getB3DPoint(0));
+ }
+
+ return false;
+ }
+
+ bool getCutBetweenLineAndPlane(const B3DVector& rPlaneNormal, const B3DPoint& rPlanePoint, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut)
+ {
+ if(!rPlaneNormal.equalZero() && !rEdgeStart.equal(rEdgeEnd))
+ {
+ const B3DVector aTestEdge(rEdgeEnd - rEdgeStart);
+ const double fScalarEdge(rPlaneNormal.scalar(aTestEdge));
+
+ if(!fTools::equalZero(fScalarEdge))
+ {
+ const B3DVector aCompareEdge(rPlanePoint - rEdgeStart);
+ const double fScalarCompare(rPlaneNormal.scalar(aCompareEdge));
+
+ fCut = fScalarCompare / fScalarEdge;
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool getCutBetweenLineAndPolygon(const B3DPolygon& rCandidate, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 2 && !rEdgeStart.equal(rEdgeEnd))
+ {
+ const B3DVector aPlaneNormal(rCandidate.getNormal());
+
+ if(!aPlaneNormal.equalZero())
+ {
+ const B3DPoint aPointOnPlane(rCandidate.getB3DPoint(0));
+
+ return getCutBetweenLineAndPlane(aPlaneNormal, aPointOnPlane, rEdgeStart, rEdgeEnd, fCut);
+ }
+ }
+
+ return false;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 3D Polygons
+
+ bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB, const double& rfSmallValue)
+ {
+ const sal_uInt32 nPointCount(rCandidateA.count());
+
+ if(nPointCount != rCandidateB.count())
+ return false;
+
+ const bool bClosed(rCandidateA.isClosed());
+
+ if(bClosed != rCandidateB.isClosed())
+ return false;
+
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ const B3DPoint aPoint(rCandidateA.getB3DPoint(a));
+
+ if(!aPoint.equal(rCandidateB.getB3DPoint(a), rfSmallValue))
+ return false;
+ }
+
+ return true;
+ }
+
+ bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB)
+ {
+ const double fSmallValue(fTools::getSmallValue());
+
+ return equal(rCandidateA, rCandidateB, fSmallValue);
+ }
+
+ // snap points of horizontal or vertical edges to discrete values
+ B3DPolygon snapPointsOfHorizontalOrVerticalEdges(const B3DPolygon& rCandidate)
+ {
+ const sal_uInt32 nPointCount(rCandidate.count());
+
+ if(nPointCount > 1)
+ {
+ // Start by copying the source polygon to get a writeable copy. The closed state is
+ // copied by aRetval's initialisation, too, so no need to copy it in this method
+ B3DPolygon aRetval(rCandidate);
+
+ // prepare geometry data. Get rounded from original
+ B3ITuple aPrevTuple(basegfx::fround(rCandidate.getB3DPoint(nPointCount - 1)));
+ B3DPoint aCurrPoint(rCandidate.getB3DPoint(0));
+ B3ITuple aCurrTuple(basegfx::fround(aCurrPoint));
+
+ // loop over all points. This will also snap the implicit closing edge
+ // even when not closed, but that's no problem here
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ // get next point. Get rounded from original
+ const bool bLastRun(a + 1 == nPointCount);
+ const sal_uInt32 nNextIndex(bLastRun ? 0 : a + 1);
+ const B3DPoint aNextPoint(rCandidate.getB3DPoint(nNextIndex));
+ const B3ITuple aNextTuple(basegfx::fround(aNextPoint));
+
+ // get the states
+ const bool bPrevVertical(aPrevTuple.getX() == aCurrTuple.getX());
+ const bool bNextVertical(aNextTuple.getX() == aCurrTuple.getX());
+ const bool bPrevHorizontal(aPrevTuple.getY() == aCurrTuple.getY());
+ const bool bNextHorizontal(aNextTuple.getY() == aCurrTuple.getY());
+ const bool bSnapX(bPrevVertical || bNextVertical);
+ const bool bSnapY(bPrevHorizontal || bNextHorizontal);
+
+ if(bSnapX || bSnapY)
+ {
+ const B3DPoint aSnappedPoint(
+ bSnapX ? aCurrTuple.getX() : aCurrPoint.getX(),
+ bSnapY ? aCurrTuple.getY() : aCurrPoint.getY(),
+ aCurrPoint.getZ());
+
+ aRetval.setB3DPoint(a, aSnappedPoint);
+ }
+
+ // prepare next point
+ if(!bLastRun)
+ {
+ aPrevTuple = aCurrTuple;
+ aCurrPoint = aNextPoint;
+ aCurrTuple = aNextTuple;
+ }
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b3dpolypolygon.cxx b/basegfx/source/polygon/b3dpolypolygon.cxx
new file mode 100644
index 000000000000..3a736573c8e7
--- /dev/null
+++ b/basegfx/source/polygon/b3dpolypolygon.cxx
@@ -0,0 +1,449 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <osl/diagnose.h>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/polygon/b3dpolygon.hxx>
+#include <rtl/instance.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <functional>
+#include <vector>
+#include <algorithm>
+
+//////////////////////////////////////////////////////////////////////////////
+
+class ImplB3DPolyPolygon
+{
+ typedef ::std::vector< ::basegfx::B3DPolygon > PolygonVector;
+
+ PolygonVector maPolygons;
+
+public:
+ ImplB3DPolyPolygon() : maPolygons()
+ {
+ }
+
+ ImplB3DPolyPolygon(const ::basegfx::B3DPolygon& rToBeCopied) :
+ maPolygons(1,rToBeCopied)
+ {
+ }
+
+ bool operator==(const ImplB3DPolyPolygon& rPolygonList) const
+ {
+ // same polygon count?
+ if(maPolygons.size() != rPolygonList.maPolygons.size())
+ return false;
+
+ // compare polygon content
+ if(maPolygons != rPolygonList.maPolygons)
+ return false;
+
+ return true;
+ }
+
+ const ::basegfx::B3DPolygon& getB3DPolygon(sal_uInt32 nIndex) const
+ {
+ return maPolygons[nIndex];
+ }
+
+ void setB3DPolygon(sal_uInt32 nIndex, const ::basegfx::B3DPolygon& rPolygon)
+ {
+ maPolygons[nIndex] = rPolygon;
+ }
+
+ void insert(sal_uInt32 nIndex, const ::basegfx::B3DPolygon& rPolygon, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // add nCount copies of rPolygon
+ PolygonVector::iterator aIndex(maPolygons.begin());
+ aIndex += nIndex;
+ maPolygons.insert(aIndex, nCount, rPolygon);
+ }
+ }
+
+ void insert(sal_uInt32 nIndex, const ::basegfx::B3DPolyPolygon& rPolyPolygon)
+ {
+ const sal_uInt32 nCount = rPolyPolygon.count();
+
+ if(nCount)
+ {
+ // add nCount polygons from rPolyPolygon
+ maPolygons.reserve(maPolygons.size() + nCount);
+ PolygonVector::iterator aIndex(maPolygons.begin());
+ aIndex += nIndex;
+
+ for(sal_uInt32 a(0L); a < nCount; a++)
+ {
+ maPolygons.insert(aIndex, rPolyPolygon.getB3DPolygon(a));
+ aIndex++;
+ }
+ }
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ if(nCount)
+ {
+ // remove polygon data
+ PolygonVector::iterator aStart(maPolygons.begin());
+ aStart += nIndex;
+ const PolygonVector::iterator aEnd(aStart + nCount);
+
+ maPolygons.erase(aStart, aEnd);
+ }
+ }
+
+ sal_uInt32 count() const
+ {
+ return maPolygons.size();
+ }
+
+ void setClosed(bool bNew)
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].setClosed(bNew);
+ }
+ }
+
+ void flip()
+ {
+ std::for_each( maPolygons.begin(),
+ maPolygons.end(),
+ std::mem_fun_ref( &::basegfx::B3DPolygon::flip ));
+ }
+
+ void removeDoublePoints()
+ {
+ std::for_each( maPolygons.begin(),
+ maPolygons.end(),
+ std::mem_fun_ref( &::basegfx::B3DPolygon::removeDoublePoints ));
+ }
+
+ void transform(const ::basegfx::B3DHomMatrix& rMatrix)
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].transform(rMatrix);
+ }
+ }
+
+ void clearBColors()
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].clearBColors();
+ }
+ }
+
+ void transformNormals(const ::basegfx::B3DHomMatrix& rMatrix)
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].transformNormals(rMatrix);
+ }
+ }
+
+ void clearNormals()
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].clearNormals();
+ }
+ }
+
+ void transformTextureCoordiantes(const ::basegfx::B2DHomMatrix& rMatrix)
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].transformTextureCoordiantes(rMatrix);
+ }
+ }
+
+ void clearTextureCoordinates()
+ {
+ for(sal_uInt32 a(0L); a < maPolygons.size(); a++)
+ {
+ maPolygons[a].clearTextureCoordinates();
+ }
+ }
+
+ void makeUnique()
+ {
+ std::for_each( maPolygons.begin(),
+ maPolygons.end(),
+ std::mem_fun_ref( &::basegfx::B3DPolygon::makeUnique ));
+ }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace { struct DefaultPolyPolygon : public rtl::Static<B3DPolyPolygon::ImplType,
+ DefaultPolyPolygon> {}; }
+
+ B3DPolyPolygon::B3DPolyPolygon() :
+ mpPolyPolygon(DefaultPolyPolygon::get())
+ {
+ }
+
+ B3DPolyPolygon::B3DPolyPolygon(const B3DPolyPolygon& rPolyPolygon) :
+ mpPolyPolygon(rPolyPolygon.mpPolyPolygon)
+ {
+ }
+
+ B3DPolyPolygon::B3DPolyPolygon(const B3DPolygon& rPolygon) :
+ mpPolyPolygon( ImplB3DPolyPolygon(rPolygon) )
+ {
+ }
+
+ B3DPolyPolygon::~B3DPolyPolygon()
+ {
+ }
+
+ B3DPolyPolygon& B3DPolyPolygon::operator=(const B3DPolyPolygon& rPolyPolygon)
+ {
+ mpPolyPolygon = rPolyPolygon.mpPolyPolygon;
+ return *this;
+ }
+
+ void B3DPolyPolygon::makeUnique()
+ {
+ mpPolyPolygon.make_unique();
+ mpPolyPolygon->makeUnique();
+ }
+
+ bool B3DPolyPolygon::operator==(const B3DPolyPolygon& rPolyPolygon) const
+ {
+ if(mpPolyPolygon.same_object(rPolyPolygon.mpPolyPolygon))
+ return true;
+
+ return ((*mpPolyPolygon) == (*rPolyPolygon.mpPolyPolygon));
+ }
+
+ bool B3DPolyPolygon::operator!=(const B3DPolyPolygon& rPolyPolygon) const
+ {
+ return !(*this == rPolyPolygon);
+ }
+
+ sal_uInt32 B3DPolyPolygon::count() const
+ {
+ return mpPolyPolygon->count();
+ }
+
+ B3DPolygon B3DPolyPolygon::getB3DPolygon(sal_uInt32 nIndex) const
+ {
+ OSL_ENSURE(nIndex < mpPolyPolygon->count(), "B3DPolyPolygon access outside range (!)");
+
+ return mpPolyPolygon->getB3DPolygon(nIndex);
+ }
+
+ void B3DPolyPolygon::setB3DPolygon(sal_uInt32 nIndex, const B3DPolygon& rPolygon)
+ {
+ OSL_ENSURE(nIndex < mpPolyPolygon->count(), "B3DPolyPolygon access outside range (!)");
+
+ if(getB3DPolygon(nIndex) != rPolygon)
+ mpPolyPolygon->setB3DPolygon(nIndex, rPolygon);
+ }
+
+ bool B3DPolyPolygon::areBColorsUsed() const
+ {
+ for(sal_uInt32 a(0L); a < mpPolyPolygon->count(); a++)
+ {
+ if((mpPolyPolygon->getB3DPolygon(a)).areBColorsUsed())
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void B3DPolyPolygon::clearBColors()
+ {
+ if(areBColorsUsed())
+ mpPolyPolygon->clearBColors();
+ }
+
+ void B3DPolyPolygon::transformNormals(const B3DHomMatrix& rMatrix)
+ {
+ if(!rMatrix.isIdentity())
+ mpPolyPolygon->transformNormals(rMatrix);
+ }
+
+ bool B3DPolyPolygon::areNormalsUsed() const
+ {
+ for(sal_uInt32 a(0L); a < mpPolyPolygon->count(); a++)
+ {
+ if((mpPolyPolygon->getB3DPolygon(a)).areNormalsUsed())
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void B3DPolyPolygon::clearNormals()
+ {
+ if(areNormalsUsed())
+ mpPolyPolygon->clearNormals();
+ }
+
+ void B3DPolyPolygon::transformTextureCoordiantes(const B2DHomMatrix& rMatrix)
+ {
+ if(!rMatrix.isIdentity())
+ mpPolyPolygon->transformTextureCoordiantes(rMatrix);
+ }
+
+ bool B3DPolyPolygon::areTextureCoordinatesUsed() const
+ {
+ for(sal_uInt32 a(0L); a < mpPolyPolygon->count(); a++)
+ {
+ if((mpPolyPolygon->getB3DPolygon(a)).areTextureCoordinatesUsed())
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void B3DPolyPolygon::clearTextureCoordinates()
+ {
+ if(areTextureCoordinatesUsed())
+ mpPolyPolygon->clearTextureCoordinates();
+ }
+
+ void B3DPolyPolygon::insert(sal_uInt32 nIndex, const B3DPolygon& rPolygon, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex <= mpPolyPolygon->count(), "B3DPolyPolygon Insert outside range (!)");
+
+ if(nCount)
+ mpPolyPolygon->insert(nIndex, rPolygon, nCount);
+ }
+
+ void B3DPolyPolygon::append(const B3DPolygon& rPolygon, sal_uInt32 nCount)
+ {
+ if(nCount)
+ mpPolyPolygon->insert(mpPolyPolygon->count(), rPolygon, nCount);
+ }
+
+ void B3DPolyPolygon::insert(sal_uInt32 nIndex, const B3DPolyPolygon& rPolyPolygon)
+ {
+ OSL_ENSURE(nIndex <= mpPolyPolygon->count(), "B3DPolyPolygon Insert outside range (!)");
+
+ if(rPolyPolygon.count())
+ mpPolyPolygon->insert(nIndex, rPolyPolygon);
+ }
+
+ void B3DPolyPolygon::append(const B3DPolyPolygon& rPolyPolygon)
+ {
+ if(rPolyPolygon.count())
+ mpPolyPolygon->insert(mpPolyPolygon->count(), rPolyPolygon);
+ }
+
+ void B3DPolyPolygon::remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ OSL_ENSURE(nIndex + nCount <= mpPolyPolygon->count(), "B3DPolyPolygon Remove outside range (!)");
+
+ if(nCount)
+ mpPolyPolygon->remove(nIndex, nCount);
+ }
+
+ void B3DPolyPolygon::clear()
+ {
+ mpPolyPolygon = DefaultPolyPolygon::get();
+ }
+
+ bool B3DPolyPolygon::isClosed() const
+ {
+ bool bRetval(true);
+
+ // PolyPOlygon is closed when all contained Polygons are closed or
+ // no Polygon exists.
+ for(sal_uInt32 a(0L); bRetval && a < mpPolyPolygon->count(); a++)
+ {
+ if(!(mpPolyPolygon->getB3DPolygon(a)).isClosed())
+ {
+ bRetval = false;
+ }
+ }
+
+ return bRetval;
+ }
+
+ void B3DPolyPolygon::setClosed(bool bNew)
+ {
+ if(bNew != isClosed())
+ mpPolyPolygon->setClosed(bNew);
+ }
+
+ void B3DPolyPolygon::flip()
+ {
+ mpPolyPolygon->flip();
+ }
+
+ bool B3DPolyPolygon::hasDoublePoints() const
+ {
+ bool bRetval(false);
+
+ for(sal_uInt32 a(0L); !bRetval && a < mpPolyPolygon->count(); a++)
+ {
+ if((mpPolyPolygon->getB3DPolygon(a)).hasDoublePoints())
+ {
+ bRetval = true;
+ }
+ }
+
+ return bRetval;
+ }
+
+ void B3DPolyPolygon::removeDoublePoints()
+ {
+ if(hasDoublePoints())
+ mpPolyPolygon->removeDoublePoints();
+ }
+
+ void B3DPolyPolygon::transform(const B3DHomMatrix& rMatrix)
+ {
+ if(mpPolyPolygon->count() && !rMatrix.isIdentity())
+ {
+ mpPolyPolygon->transform(rMatrix);
+ }
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/b3dpolypolygontools.cxx b/basegfx/source/polygon/b3dpolypolygontools.cxx
new file mode 100644
index 000000000000..1cff2eaf1765
--- /dev/null
+++ b/basegfx/source/polygon/b3dpolypolygontools.cxx
@@ -0,0 +1,559 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/polygon/b3dpolypolygontools.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/polygon/b3dpolygon.hxx>
+#include <basegfx/polygon/b3dpolygontools.hxx>
+#include <numeric>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <osl/mutex.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // B3DPolyPolygon tools
+ B3DRange getRange(const B3DPolyPolygon& rCandidate)
+ {
+ B3DRange aRetval;
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+
+ for(sal_uInt32 a(0L); a < nPolygonCount; a++)
+ {
+ B3DPolygon aCandidate = rCandidate.getB3DPolygon(a);
+ aRetval.expand(getRange(aCandidate));
+ }
+
+ return aRetval;
+ }
+
+ void applyLineDashing(const B3DPolyPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B3DPolyPolygon* pLineTarget, B3DPolyPolygon* pGapTarget, double fFullDashDotLen)
+ {
+ if(0.0 == fFullDashDotLen && rDotDashArray.size())
+ {
+ // calculate fFullDashDotLen from rDotDashArray
+ fFullDashDotLen = ::std::accumulate(rDotDashArray.begin(), rDotDashArray.end(), 0.0);
+ }
+
+ if(rCandidate.count() && fFullDashDotLen > 0.0)
+ {
+ B3DPolyPolygon aLineTarget, aGapTarget;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ const B3DPolygon aCandidate(rCandidate.getB3DPolygon(a));
+
+ applyLineDashing(
+ aCandidate,
+ rDotDashArray,
+ pLineTarget ? &aLineTarget : 0,
+ pGapTarget ? &aGapTarget : 0,
+ fFullDashDotLen);
+
+ if(pLineTarget)
+ {
+ pLineTarget->append(aLineTarget);
+ }
+
+ if(pGapTarget)
+ {
+ pGapTarget->append(aGapTarget);
+ }
+ }
+ }
+ }
+
+ B3DPolyPolygon createUnitCubePolyPolygon()
+ {
+ static B3DPolyPolygon aRetval;
+ ::osl::Mutex m_mutex;
+
+ if(!aRetval.count())
+ {
+ B3DPolygon aTemp;
+ aTemp.append(B3DPoint(0.0, 0.0, 1.0));
+ aTemp.append(B3DPoint(0.0, 1.0, 1.0));
+ aTemp.append(B3DPoint(1.0, 1.0, 1.0));
+ aTemp.append(B3DPoint(1.0, 0.0, 1.0));
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+
+ aTemp.clear();
+ aTemp.append(B3DPoint(0.0, 0.0, 0.0));
+ aTemp.append(B3DPoint(0.0, 1.0, 0.0));
+ aTemp.append(B3DPoint(1.0, 1.0, 0.0));
+ aTemp.append(B3DPoint(1.0, 0.0, 0.0));
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+
+ aTemp.clear();
+ aTemp.append(B3DPoint(0.0, 0.0, 0.0));
+ aTemp.append(B3DPoint(0.0, 0.0, 1.0));
+ aRetval.append(aTemp);
+
+ aTemp.clear();
+ aTemp.append(B3DPoint(0.0, 1.0, 0.0));
+ aTemp.append(B3DPoint(0.0, 1.0, 1.0));
+ aRetval.append(aTemp);
+
+ aTemp.clear();
+ aTemp.append(B3DPoint(1.0, 1.0, 0.0));
+ aTemp.append(B3DPoint(1.0, 1.0, 1.0));
+ aRetval.append(aTemp);
+
+ aTemp.clear();
+ aTemp.append(B3DPoint(1.0, 0.0, 0.0));
+ aTemp.append(B3DPoint(1.0, 0.0, 1.0));
+ aRetval.append(aTemp);
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon createUnitCubeFillPolyPolygon()
+ {
+ static B3DPolyPolygon aRetval;
+ ::osl::Mutex m_mutex;
+
+ if(!aRetval.count())
+ {
+ B3DPolygon aTemp;
+
+ // all points
+ const B3DPoint A(0.0, 0.0, 0.0);
+ const B3DPoint B(0.0, 1.0, 0.0);
+ const B3DPoint C(1.0, 1.0, 0.0);
+ const B3DPoint D(1.0, 0.0, 0.0);
+ const B3DPoint E(0.0, 0.0, 1.0);
+ const B3DPoint F(0.0, 1.0, 1.0);
+ const B3DPoint G(1.0, 1.0, 1.0);
+ const B3DPoint H(1.0, 0.0, 1.0);
+
+ // create bottom
+ aTemp.append(D);
+ aTemp.append(A);
+ aTemp.append(E);
+ aTemp.append(H);
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+
+ // create front
+ aTemp.clear();
+ aTemp.append(B);
+ aTemp.append(A);
+ aTemp.append(D);
+ aTemp.append(C);
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+
+ // create left
+ aTemp.clear();
+ aTemp.append(E);
+ aTemp.append(A);
+ aTemp.append(B);
+ aTemp.append(F);
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+
+ // create top
+ aTemp.clear();
+ aTemp.append(C);
+ aTemp.append(G);
+ aTemp.append(F);
+ aTemp.append(B);
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+
+ // create right
+ aTemp.clear();
+ aTemp.append(H);
+ aTemp.append(G);
+ aTemp.append(C);
+ aTemp.append(D);
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+
+ // create back
+ aTemp.clear();
+ aTemp.append(F);
+ aTemp.append(G);
+ aTemp.append(H);
+ aTemp.append(E);
+ aTemp.setClosed(true);
+ aRetval.append(aTemp);
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon createCubePolyPolygonFromB3DRange( const B3DRange& rRange)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(!rRange.isEmpty())
+ {
+ aRetval = createUnitCubePolyPolygon();
+ B3DHomMatrix aTrans;
+ aTrans.scale(rRange.getWidth(), rRange.getHeight(), rRange.getDepth());
+ aTrans.translate(rRange.getMinX(), rRange.getMinY(), rRange.getMinZ());
+ aRetval.transform(aTrans);
+ aRetval.removeDoublePoints();
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon createCubeFillPolyPolygonFromB3DRange( const B3DRange& rRange)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(!rRange.isEmpty())
+ {
+ aRetval = createUnitCubeFillPolyPolygon();
+ B3DHomMatrix aTrans;
+ aTrans.scale(rRange.getWidth(), rRange.getHeight(), rRange.getDepth());
+ aTrans.translate(rRange.getMinX(), rRange.getMinY(), rRange.getMinZ());
+ aRetval.transform(aTrans);
+ aRetval.removeDoublePoints();
+ }
+
+ return aRetval;
+ }
+
+ // helper for getting the 3D Point from given cartesian coordiantes. fVer is defined from
+ // [F_PI2 .. -F_PI2], fHor from [0.0 .. F_2PI]
+ inline B3DPoint getPointFromCartesian(double fVer, double fHor)
+ {
+ const double fCosHor(cos(fHor));
+ return B3DPoint(fCosHor * cos(fVer), sin(fHor), fCosHor * -sin(fVer));
+ }
+
+ B3DPolyPolygon createUnitSpherePolyPolygon(
+ sal_uInt32 nHorSeg, sal_uInt32 nVerSeg,
+ double fVerStart, double fVerStop,
+ double fHorStart, double fHorStop)
+ {
+ B3DPolyPolygon aRetval;
+ sal_uInt32 a, b;
+
+ if(!nHorSeg)
+ {
+ nHorSeg = fround(fabs(fHorStop - fHorStart) / (F_2PI / 24.0));
+ }
+
+ if(!nHorSeg)
+ {
+ nHorSeg = 1L;
+ }
+
+ if(!nVerSeg)
+ {
+ nVerSeg = fround(fabs(fVerStop - fVerStart) / (F_2PI / 24.0));
+ }
+
+ if(!nVerSeg)
+ {
+ nVerSeg = 1L;
+ }
+
+ // create constants
+ const double fVerDiffPerStep((fVerStop - fVerStart) / (double)nVerSeg);
+ const double fHorDiffPerStep((fHorStop - fHorStart) / (double)nHorSeg);
+ bool bHorClosed(fTools::equal(fHorStop - fHorStart, F_2PI));
+ bool bVerFromTop(fTools::equal(fVerStart, F_PI2));
+ bool bVerToBottom(fTools::equal(fVerStop, -F_PI2));
+
+ // create horizontal rings
+ const sal_uInt32 nLoopVerInit(bVerFromTop ? 1L : 0L);
+ const sal_uInt32 nLoopVerLimit(bVerToBottom ? nVerSeg : nVerSeg + 1L);
+ const sal_uInt32 nLoopHorLimit(bHorClosed ? nHorSeg : nHorSeg + 1L);
+
+ for(a = nLoopVerInit; a < nLoopVerLimit; a++)
+ {
+ const double fVer(fVerStart + ((double)(a) * fVerDiffPerStep));
+ B3DPolygon aNew;
+
+ for(b = 0L; b < nLoopHorLimit; b++)
+ {
+ const double fHor(fHorStart + ((double)(b) * fHorDiffPerStep));
+ aNew.append(getPointFromCartesian(fHor, fVer));
+ }
+
+ aNew.setClosed(bHorClosed);
+ aRetval.append(aNew);
+ }
+
+ // create vertical half-rings
+ for(a = 0L; a < nLoopHorLimit; a++)
+ {
+ const double fHor(fHorStart + ((double)(a) * fHorDiffPerStep));
+ B3DPolygon aNew;
+
+ if(bVerFromTop)
+ {
+ aNew.append(B3DPoint(0.0, 1.0, 0.0));
+ }
+
+ for(b = nLoopVerInit; b < nLoopVerLimit; b++)
+ {
+ const double fVer(fVerStart + ((double)(b) * fVerDiffPerStep));
+ aNew.append(getPointFromCartesian(fHor, fVer));
+ }
+
+ if(bVerToBottom)
+ {
+ aNew.append(B3DPoint(0.0, -1.0, 0.0));
+ }
+
+ aRetval.append(aNew);
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon createSpherePolyPolygonFromB3DRange( const B3DRange& rRange,
+ sal_uInt32 nHorSeg, sal_uInt32 nVerSeg,
+ double fVerStart, double fVerStop,
+ double fHorStart, double fHorStop)
+ {
+ B3DPolyPolygon aRetval(createUnitSpherePolyPolygon(nHorSeg, nVerSeg, fVerStart, fVerStop, fHorStart, fHorStop));
+
+ if(aRetval.count())
+ {
+ // move and scale whole construct which is now in [-1.0 .. 1.0] in all directions
+ B3DHomMatrix aTrans;
+ aTrans.translate(1.0, 1.0, 1.0);
+ aTrans.scale(rRange.getWidth() / 2.0, rRange.getHeight() / 2.0, rRange.getDepth() / 2.0);
+ aTrans.translate(rRange.getMinX(), rRange.getMinY(), rRange.getMinZ());
+ aRetval.transform(aTrans);
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon createUnitSphereFillPolyPolygon(
+ sal_uInt32 nHorSeg, sal_uInt32 nVerSeg,
+ bool bNormals,
+ double fVerStart, double fVerStop,
+ double fHorStart, double fHorStop)
+ {
+ B3DPolyPolygon aRetval;
+
+ if(!nHorSeg)
+ {
+ nHorSeg = fround(fabs(fHorStop - fHorStart) / (F_2PI / 24.0));
+ }
+
+ if(!nHorSeg)
+ {
+ nHorSeg = 1L;
+ }
+
+ if(!nVerSeg)
+ {
+ nVerSeg = fround(fabs(fVerStop - fVerStart) / (F_2PI / 24.0));
+ }
+
+ if(!nVerSeg)
+ {
+ nVerSeg = 1L;
+ }
+
+ // vertical loop
+ for(sal_uInt32 a(0L); a < nVerSeg; a++)
+ {
+ const double fVer(fVerStart + (((fVerStop - fVerStart) * a) / nVerSeg));
+ const double fVer2(fVerStart + (((fVerStop - fVerStart) * (a + 1)) / nVerSeg));
+
+ // horizontal loop
+ for(sal_uInt32 b(0L); b < nHorSeg; b++)
+ {
+ const double fHor(fHorStart + (((fHorStop - fHorStart) * b) / nHorSeg));
+ const double fHor2(fHorStart + (((fHorStop - fHorStart) * (b + 1)) / nHorSeg));
+ B3DPolygon aNew;
+
+ aNew.append(getPointFromCartesian(fHor, fVer));
+ aNew.append(getPointFromCartesian(fHor2, fVer));
+ aNew.append(getPointFromCartesian(fHor2, fVer2));
+ aNew.append(getPointFromCartesian(fHor, fVer2));
+
+ if(bNormals)
+ {
+ for(sal_uInt32 c(0L); c < aNew.count(); c++)
+ {
+ aNew.setNormal(c, ::basegfx::B3DVector(aNew.getB3DPoint(c)));
+ }
+ }
+
+ aNew.setClosed(true);
+ aRetval.append(aNew);
+ }
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon createSphereFillPolyPolygonFromB3DRange( const B3DRange& rRange,
+ sal_uInt32 nHorSeg, sal_uInt32 nVerSeg,
+ bool bNormals,
+ double fVerStart, double fVerStop,
+ double fHorStart, double fHorStop)
+ {
+ B3DPolyPolygon aRetval(createUnitSphereFillPolyPolygon(nHorSeg, nVerSeg, bNormals, fVerStart, fVerStop, fHorStart, fHorStop));
+
+ if(aRetval.count())
+ {
+ // move and scale whole construct which is now in [-1.0 .. 1.0] in all directions
+ B3DHomMatrix aTrans;
+ aTrans.translate(1.0, 1.0, 1.0);
+ aTrans.scale(rRange.getWidth() / 2.0, rRange.getHeight() / 2.0, rRange.getDepth() / 2.0);
+ aTrans.translate(rRange.getMinX(), rRange.getMinY(), rRange.getMinZ());
+ aRetval.transform(aTrans);
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon applyDefaultNormalsSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter)
+ {
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(applyDefaultNormalsSphere(rCandidate.getB3DPolygon(a), rCenter));
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon invertNormals( const B3DPolyPolygon& rCandidate)
+ {
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(invertNormals(rCandidate.getB3DPolygon(a)));
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon applyDefaultTextureCoordinatesParallel( const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bChangeX, bool bChangeY)
+ {
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(applyDefaultTextureCoordinatesParallel(rCandidate.getB3DPolygon(a), rRange, bChangeX, bChangeY));
+ }
+
+ return aRetval;
+ }
+
+ B3DPolyPolygon applyDefaultTextureCoordinatesSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX, bool bChangeY)
+ {
+ B3DPolyPolygon aRetval;
+
+ for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
+ {
+ aRetval.append(applyDefaultTextureCoordinatesSphere(rCandidate.getB3DPolygon(a), rCenter, bChangeX, bChangeY));
+ }
+
+ return aRetval;
+ }
+
+ bool isInside(const B3DPolyPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder)
+ {
+ const sal_uInt32 nPolygonCount(rCandidate.count());
+
+ if(1L == nPolygonCount)
+ {
+ return isInside(rCandidate.getB3DPolygon(0), rPoint, bWithBorder);
+ }
+ else
+ {
+ sal_Int32 nInsideCount(0);
+
+ for(sal_uInt32 a(0); a < nPolygonCount; a++)
+ {
+ const B3DPolygon aPolygon(rCandidate.getB3DPolygon(a));
+ const bool bInside(isInside(aPolygon, rPoint, bWithBorder));
+
+ if(bInside)
+ {
+ nInsideCount++;
+ }
+ }
+
+ return (nInsideCount % 2L);
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // comparators with tolerance for 3D PolyPolygons
+
+ bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB, const double& rfSmallValue)
+ {
+ const sal_uInt32 nPolygonCount(rCandidateA.count());
+
+ if(nPolygonCount != rCandidateB.count())
+ return false;
+
+ for(sal_uInt32 a(0); a < nPolygonCount; a++)
+ {
+ const B3DPolygon aCandidate(rCandidateA.getB3DPolygon(a));
+
+ if(!equal(aCandidate, rCandidateB.getB3DPolygon(a), rfSmallValue))
+ return false;
+ }
+
+ return true;
+ }
+
+ bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB)
+ {
+ const double fSmallValue(fTools::getSmallValue());
+
+ return equal(rCandidateA, rCandidateB, fSmallValue);
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/polygon/makefile.mk b/basegfx/source/polygon/makefile.mk
new file mode 100644
index 000000000000..7ac71ada5e8e
--- /dev/null
+++ b/basegfx/source/polygon/makefile.mk
@@ -0,0 +1,63 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=polygon
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+ENABLE_EXCEPTIONS=TRUE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/b2dpolygon.obj \
+ $(SLO)$/b2dpolygontools.obj \
+ $(SLO)$/b2dpolypolygon.obj \
+ $(SLO)$/b2dpolypolygontools.obj \
+ $(SLO)$/b2dsvgpolypolygon.obj \
+ $(SLO)$/b2dlinegeometry.obj \
+ $(SLO)$/b2dpolypolygoncutter.obj \
+ $(SLO)$/b2dpolypolygonrasterconverter.obj \
+ $(SLO)$/b2dpolygonclipper.obj \
+ $(SLO)$/b2dpolygontriangulator.obj \
+ $(SLO)$/b2dpolygoncutandtouch.obj \
+ $(SLO)$/b2dtrapezoid.obj \
+ $(SLO)$/b3dpolygon.obj \
+ $(SLO)$/b3dpolygontools.obj \
+ $(SLO)$/b3dpolypolygon.obj \
+ $(SLO)$/b3dpolypolygontools.obj \
+ $(SLO)$/b3dpolygonclipper.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/range/b1drange.cxx b/basegfx/source/range/b1drange.cxx
new file mode 100644
index 000000000000..5de4a342aab8
--- /dev/null
+++ b/basegfx/source/range/b1drange.cxx
@@ -0,0 +1,59 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/range/b1drange.hxx>
+#include <basegfx/range/b1irange.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ B1DRange::B1DRange( const B1IRange& rRange ) :
+ maRange()
+ {
+ if( !rRange.isEmpty() )
+ {
+ maRange = rRange.getMinimum();
+ expand(rRange.getMaximum());
+ }
+ }
+
+ B1IRange fround(const B1DRange& rRange)
+ {
+ return rRange.isEmpty() ?
+ B1IRange() :
+ B1IRange( fround( rRange.getMinimum()),
+ fround( rRange.getMaximum()) );
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/range/b2dpolyrange.cxx b/basegfx/source/range/b2dpolyrange.cxx
new file mode 100644
index 000000000000..f0088bfc5793
--- /dev/null
+++ b/basegfx/source/range/b2dpolyrange.cxx
@@ -0,0 +1,426 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.cxx,v $
+ * $Revision: 1.8 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/range/b2dpolyrange.hxx>
+
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2drangeclipper.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+#include <boost/bind.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <algorithm>
+#include <vector>
+
+static basegfx::B2VectorOrientation flipOrientation(
+ basegfx::B2VectorOrientation eOrient)
+{
+ return eOrient == basegfx::ORIENTATION_POSITIVE ?
+ basegfx::ORIENTATION_NEGATIVE : basegfx::ORIENTATION_POSITIVE;
+}
+
+namespace basegfx
+{
+ class ImplB2DPolyRange
+ {
+ void updateBounds()
+ {
+ maBounds.reset();
+ std::for_each(maRanges.begin(),
+ maRanges.end(),
+ boost::bind(
+ (void (B2DRange::*)(const B2DRange&))(
+ &B2DRange::expand),
+ boost::ref(maBounds),
+ _1));
+ }
+
+ public:
+ ImplB2DPolyRange() :
+ maBounds(),
+ maRanges(),
+ maOrient()
+ {}
+
+ explicit ImplB2DPolyRange( const B2DPolyRange::ElementType& rElem ) :
+ maBounds( boost::get<0>(rElem) ),
+ maRanges( 1, boost::get<0>(rElem) ),
+ maOrient( 1, boost::get<1>(rElem) )
+ {}
+
+ explicit ImplB2DPolyRange( const B2DRange& rRange, B2VectorOrientation eOrient ) :
+ maBounds( rRange ),
+ maRanges( 1, rRange ),
+ maOrient( 1, eOrient )
+ {}
+
+ bool operator==(const ImplB2DPolyRange& rRHS) const
+ {
+ return maRanges == rRHS.maRanges && maOrient == rRHS.maOrient;
+ }
+
+ sal_uInt32 count() const
+ {
+ return maRanges.size();
+ }
+
+ B2DPolyRange::ElementType getElement(sal_uInt32 nIndex) const
+ {
+ return boost::make_tuple(maRanges[nIndex],
+ maOrient[nIndex]);
+ }
+
+ void setElement(sal_uInt32 nIndex, const B2DPolyRange::ElementType& rElement )
+ {
+ maRanges[nIndex] = boost::get<0>(rElement);
+ maOrient[nIndex] = boost::get<1>(rElement);
+ updateBounds();
+ }
+
+ void setElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient )
+ {
+ maRanges[nIndex] = rRange;
+ maOrient[nIndex] = eOrient;
+ updateBounds();
+ }
+
+ void insertElement(sal_uInt32 nIndex, const B2DPolyRange::ElementType& rElement, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.begin()+nIndex, nCount, boost::get<0>(rElement));
+ maOrient.insert(maOrient.begin()+nIndex, nCount, boost::get<1>(rElement));
+ maBounds.expand(boost::get<0>(rElement));
+ }
+
+ void insertElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.begin()+nIndex, nCount, rRange);
+ maOrient.insert(maOrient.begin()+nIndex, nCount, eOrient);
+ maBounds.expand(rRange);
+ }
+
+ void appendElement(const B2DPolyRange::ElementType& rElement, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.end(), nCount, boost::get<0>(rElement));
+ maOrient.insert(maOrient.end(), nCount, boost::get<1>(rElement));
+ maBounds.expand(boost::get<0>(rElement));
+ }
+
+ void appendElement(const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.end(), nCount, rRange);
+ maOrient.insert(maOrient.end(), nCount, eOrient);
+ maBounds.expand(rRange);
+ }
+
+ void insertPolyRange(sal_uInt32 nIndex, const ImplB2DPolyRange& rPolyRange)
+ {
+ maRanges.insert(maRanges.begin()+nIndex, rPolyRange.maRanges.begin(), rPolyRange.maRanges.end());
+ maOrient.insert(maOrient.begin()+nIndex, rPolyRange.maOrient.begin(), rPolyRange.maOrient.end());
+ updateBounds();
+ }
+
+ void appendPolyRange(const ImplB2DPolyRange& rPolyRange)
+ {
+ maRanges.insert(maRanges.end(),
+ rPolyRange.maRanges.begin(),
+ rPolyRange.maRanges.end());
+ maOrient.insert(maOrient.end(),
+ rPolyRange.maOrient.begin(),
+ rPolyRange.maOrient.end());
+ updateBounds();
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ maRanges.erase(maRanges.begin()+nIndex,maRanges.begin()+nIndex+nCount);
+ maOrient.erase(maOrient.begin()+nIndex,maOrient.begin()+nIndex+nCount);
+ updateBounds();
+ }
+
+ void clear()
+ {
+ std::vector<B2DRange> aTmpRanges;
+ std::vector<B2VectorOrientation> aTmpOrient;
+
+ maRanges.swap(aTmpRanges);
+ maOrient.swap(aTmpOrient);
+
+ maBounds.reset();
+ }
+
+ void flip()
+ {
+ std::for_each(maOrient.begin(),
+ maOrient.end(),
+ boost::bind(
+ &flipOrientation,
+ _1));
+ }
+
+ B2DRange getBounds() const
+ {
+ return maBounds;
+ }
+
+ template< typename ValueType > bool isInside( const ValueType& rValue ) const
+ {
+ if( !maBounds.isInside( rValue ) )
+ return false;
+
+ // cannot use boost::bind here, since isInside is overloaded.
+ // It is currently not possible to resolve the overload
+ // by considering one of the other template arguments.
+ std::vector<B2DRange>::const_iterator aCurr( maRanges.begin() );
+ const std::vector<B2DRange>::const_iterator aEnd ( maRanges.end() );
+ while( aCurr != aEnd )
+ if( aCurr->isInside( rValue ) )
+ return true;
+
+ return false;
+ }
+
+ bool overlaps( const B2DRange& rRange ) const
+ {
+ if( !maBounds.overlaps( rRange ) )
+ return false;
+
+ const std::vector<B2DRange>::const_iterator aEnd( maRanges.end() );
+ return std::find_if( maRanges.begin(),
+ aEnd,
+ boost::bind<bool>( boost::mem_fn( &B2DRange::overlaps ),
+ _1,
+ boost::cref(rRange) ) ) != aEnd;
+ }
+
+ B2DPolyPolygon solveCrossovers() const
+ {
+ return tools::solveCrossovers(maRanges,maOrient);
+ }
+
+ const B2DRange* begin() const
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return &maRanges.front();
+ }
+
+ const B2DRange* end() const
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return (&maRanges.back())+1;
+ }
+
+ B2DRange* begin()
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return &maRanges.front();
+ }
+
+ B2DRange* end()
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return (&maRanges.back())+1;
+ }
+
+ private:
+ B2DRange maBounds;
+ std::vector<B2DRange> maRanges;
+ std::vector<B2VectorOrientation> maOrient;
+ };
+
+ B2DPolyRange::B2DPolyRange() :
+ mpImpl()
+ {}
+
+ B2DPolyRange::~B2DPolyRange()
+ {}
+
+ B2DPolyRange::B2DPolyRange( const ElementType& rElem ) :
+ mpImpl( ImplB2DPolyRange( rElem ) )
+ {}
+
+ B2DPolyRange::B2DPolyRange( const B2DRange& rRange, B2VectorOrientation eOrient ) :
+ mpImpl( ImplB2DPolyRange( rRange, eOrient ) )
+ {}
+
+ B2DPolyRange::B2DPolyRange( const B2DPolyRange& rRange ) :
+ mpImpl( rRange.mpImpl )
+ {}
+
+ B2DPolyRange& B2DPolyRange::operator=( const B2DPolyRange& rRange )
+ {
+ mpImpl = rRange.mpImpl;
+ return *this;
+ }
+
+ void B2DPolyRange::makeUnique()
+ {
+ mpImpl.make_unique();
+ }
+
+ bool B2DPolyRange::operator==(const B2DPolyRange& rRange) const
+ {
+ if(mpImpl.same_object(rRange.mpImpl))
+ return true;
+
+ return ((*mpImpl) == (*rRange.mpImpl));
+ }
+
+ bool B2DPolyRange::operator!=(const B2DPolyRange& rRange) const
+ {
+ return !(*this == rRange);
+ }
+
+ sal_uInt32 B2DPolyRange::count() const
+ {
+ return mpImpl->count();
+ }
+
+ B2DPolyRange::ElementType B2DPolyRange::getElement(sal_uInt32 nIndex) const
+ {
+ return mpImpl->getElement(nIndex);
+ }
+
+ void B2DPolyRange::setElement(sal_uInt32 nIndex, const ElementType& rElement )
+ {
+ mpImpl->setElement(nIndex, rElement);
+ }
+
+ void B2DPolyRange::setElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient )
+ {
+ mpImpl->setElement(nIndex, rRange, eOrient );
+ }
+
+ void B2DPolyRange::insertElement(sal_uInt32 nIndex, const ElementType& rElement, sal_uInt32 nCount)
+ {
+ mpImpl->insertElement(nIndex, rElement, nCount );
+ }
+
+ void B2DPolyRange::insertElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ mpImpl->insertElement(nIndex, rRange, eOrient, nCount );
+ }
+
+ void B2DPolyRange::appendElement(const ElementType& rElement, sal_uInt32 nCount)
+ {
+ mpImpl->appendElement(rElement, nCount);
+ }
+
+ void B2DPolyRange::appendElement(const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ mpImpl->appendElement(rRange, eOrient, nCount );
+ }
+
+ void B2DPolyRange::insertPolyRange(sal_uInt32 nIndex, const B2DPolyRange& rRange)
+ {
+ mpImpl->insertPolyRange(nIndex, *rRange.mpImpl);
+ }
+
+ void B2DPolyRange::appendPolyRange(const B2DPolyRange& rRange)
+ {
+ mpImpl->appendPolyRange(*rRange.mpImpl);
+ }
+
+ void B2DPolyRange::remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ mpImpl->remove(nIndex, nCount);
+ }
+
+ void B2DPolyRange::clear()
+ {
+ mpImpl->clear();
+ }
+
+ void B2DPolyRange::flip()
+ {
+ mpImpl->flip();
+ }
+
+ B2DRange B2DPolyRange::getBounds() const
+ {
+ return mpImpl->getBounds();
+ }
+
+ bool B2DPolyRange::isInside( const B2DTuple& rTuple ) const
+ {
+ return mpImpl->isInside(rTuple);
+ }
+
+ bool B2DPolyRange::isInside( const B2DRange& rRange ) const
+ {
+ return mpImpl->isInside(rRange);
+ }
+
+ bool B2DPolyRange::overlaps( const B2DRange& rRange ) const
+ {
+ return mpImpl->overlaps(rRange);
+ }
+
+ B2DPolyPolygon B2DPolyRange::solveCrossovers() const
+ {
+ return mpImpl->solveCrossovers();
+ }
+
+ const B2DRange* B2DPolyRange::begin() const
+ {
+ return mpImpl->begin();
+ }
+
+ const B2DRange* B2DPolyRange::end() const
+ {
+ return mpImpl->end();
+ }
+
+ B2DRange* B2DPolyRange::begin()
+ {
+ return mpImpl->begin();
+ }
+
+ B2DRange* B2DPolyRange::end()
+ {
+ return mpImpl->end();
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/range/b2drange.cxx b/basegfx/source/range/b2drange.cxx
new file mode 100644
index 000000000000..d79adafaea27
--- /dev/null
+++ b/basegfx/source/range/b2drange.cxx
@@ -0,0 +1,77 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+
+namespace basegfx
+{
+ B2DRange::B2DRange( const B2IRange& rRange ) :
+ maRangeX(),
+ maRangeY()
+ {
+ if( !rRange.isEmpty() )
+ {
+ maRangeX = rRange.getMinX();
+ maRangeY = rRange.getMinY();
+
+ maRangeX.expand(rRange.getMaxX());
+ maRangeY.expand(rRange.getMaxY());
+ }
+ }
+
+ void B2DRange::transform(const B2DHomMatrix& rMatrix)
+ {
+ if(!isEmpty() && !rMatrix.isIdentity())
+ {
+ const B2DRange aSource(*this);
+ reset();
+ expand(rMatrix * B2DPoint(aSource.getMinX(), aSource.getMinY()));
+ expand(rMatrix * B2DPoint(aSource.getMaxX(), aSource.getMinY()));
+ expand(rMatrix * B2DPoint(aSource.getMinX(), aSource.getMaxY()));
+ expand(rMatrix * B2DPoint(aSource.getMaxX(), aSource.getMaxY()));
+ }
+ }
+
+ B2IRange fround(const B2DRange& rRange)
+ {
+ return rRange.isEmpty() ?
+ B2IRange() :
+ B2IRange(fround(rRange.getMinimum()),
+ fround(rRange.getMaximum()));
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/range/b2drangeclipper.cxx b/basegfx/source/range/b2drangeclipper.cxx
new file mode 100644
index 000000000000..6546b6a13c09
--- /dev/null
+++ b/basegfx/source/range/b2drangeclipper.cxx
@@ -0,0 +1,952 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.cxx,v $
+ * $Revision: 1.8 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <rtl/math.hxx>
+
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2dpolyrange.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <o3tl/vector_pool.hxx>
+#include <boost/bind.hpp>
+#include <boost/utility.hpp>
+
+#include <algorithm>
+#include <deque>
+#include <list>
+
+
+namespace basegfx
+{
+ namespace
+ {
+ // Generating a poly-polygon from a bunch of rectangles
+ //
+ // Helper functionality for sweep-line algorithm
+ // ====================================================
+
+ typedef std::vector<B2DRange> VectorOfRanges;
+
+ class ImplPolygon;
+ typedef o3tl::vector_pool<ImplPolygon> VectorOfPolygons;
+
+
+ /** This class represents an active edge
+
+ As the sweep line traverses across the overall area,
+ rectangle edges parallel to it generate events, and
+ rectangle edges orthogonal to it generate active
+ edges. This class represents the latter.
+ */
+ class ActiveEdge
+ {
+ public:
+ /** The two possible active rectangle edges differ by one
+ coordinate value - the upper edge has the lower, the
+ lower edge the higher value.
+ */
+ enum EdgeType {
+ /// edge with lower coordinate value
+ UPPER=0,
+ /// edge with higher coordinate value
+ LOWER=1
+ };
+
+ enum EdgeDirection {
+ /// edge proceeds to the left
+ PROCEED_LEFT=0,
+ /// edge proceeds to the right
+ PROCEED_RIGHT=1
+ };
+
+ /** Create active edge
+
+ @param rRect
+ Rectangle this edge is part of
+
+ @param fInvariantCoord
+ The invariant ccordinate value of this edge
+
+ @param eEdgeType
+ Is fInvariantCoord the lower or the higher value, for
+ this rect?
+ */
+ ActiveEdge( const B2DRectangle& rRect,
+ const double& fInvariantCoord,
+ std::ptrdiff_t nPolyIdx,
+ EdgeType eEdgeType,
+ EdgeDirection eEdgeDirection ) :
+ mfInvariantCoord(fInvariantCoord),
+ mpAssociatedRect( &rRect ),
+ mnPolygonIdx( nPolyIdx ),
+ meEdgeType( eEdgeType ),
+ meEdgeDirection( eEdgeDirection )
+ {}
+
+ double getInvariantCoord() const { return mfInvariantCoord; }
+ const B2DRectangle& getRect() const { return *mpAssociatedRect; }
+ std::ptrdiff_t getTargetPolygonIndex() const { return mnPolygonIdx; }
+ void setTargetPolygonIndex( std::ptrdiff_t nIdx ) { mnPolygonIdx = nIdx; }
+ EdgeType getEdgeType() const { return meEdgeType; }
+ EdgeDirection getEdgeDirection() const { return meEdgeDirection; }
+
+ /// For STL sort
+ bool operator<( const ActiveEdge& rRHS ) const { return mfInvariantCoord < rRHS.mfInvariantCoord; }
+
+ private:
+ /** The invariant coordinate value of this edge (e.g. the
+ common y value, for a horizontal edge)
+ */
+ double mfInvariantCoord;
+
+ /** Associated rectangle
+
+ This on the one hand saves some storage space (the
+ vector of rectangles is persistent, anyway), and on
+ the other hand provides an identifier to match active
+ edges and x events (see below)
+
+ Ptr because class needs to be assignable
+ */
+ const B2DRectangle* mpAssociatedRect;
+
+ /** Index of the polygon this edge is currently involved
+ with.
+
+ Note that this can change for some kinds of edge
+ intersection, as the algorithm tends to swap
+ associated polygons there.
+
+ -1 denotes no assigned polygon
+ */
+ std::ptrdiff_t mnPolygonIdx;
+
+ /// 'upper' or 'lower' edge of original rectangle.
+ EdgeType meEdgeType;
+
+ /// 'left' or 'right'
+ EdgeDirection meEdgeDirection;
+ };
+
+ // Needs to be list - various places hold ptrs to elements
+ typedef std::list< ActiveEdge > ListOfEdges;
+
+
+ /** Element of the sweep line event list
+
+ As the sweep line traverses across the overall area,
+ rectangle edges parallel to it generate events, and
+ rectangle edges orthogonal to it generate active
+ edges. This class represents the former.
+
+ The class defines an element of the sweep line list. The
+ sweep line's position jumps in steps defined by the
+ coordinates of the sorted SweepLineEvent entries.
+ */
+ class SweepLineEvent
+ {
+ public:
+ /** The two possible sweep line rectangle edges differ by
+ one coordinate value - the starting edge has the
+ lower, the finishing edge the higher value.
+ */
+ enum EdgeType {
+ /// edge with lower coordinate value
+ STARTING_EDGE=0,
+ /// edge with higher coordinate value
+ FINISHING_EDGE=1
+ };
+
+ /** The two possible sweep line directions
+ */
+ enum EdgeDirection {
+ PROCEED_UP=0,
+ PROCEED_DOWN=1
+ };
+
+ /** Create sweep line event
+
+ @param fPos
+ Coordinate position of the event
+
+ @param rRect
+ Rectangle this event is generated for.
+
+ @param eEdgeType
+ Is fPos the lower or the higher value, for the
+ rectangle this event is generated for?
+ */
+ SweepLineEvent( double fPos,
+ const B2DRectangle& rRect,
+ EdgeType eEdgeType,
+ EdgeDirection eDirection) :
+ mfPos( fPos ),
+ mpAssociatedRect( &rRect ),
+ meEdgeType( eEdgeType ),
+ meEdgeDirection( eDirection )
+ {}
+
+ double getPos() const { return mfPos; }
+ const B2DRectangle& getRect() const { return *mpAssociatedRect; }
+ EdgeType getEdgeType() const { return meEdgeType; }
+ EdgeDirection getEdgeDirection() const { return meEdgeDirection; }
+
+ /// For STL sort
+ bool operator<( const SweepLineEvent& rRHS ) const { return mfPos < rRHS.mfPos; }
+
+ private:
+ /// position of the event, in the direction of the line sweep
+ double mfPos;
+
+ /** Rectangle this event is generated for
+
+ This on the one hand saves some storage space (the
+ vector of rectangles is persistent, anyway), and on
+ the other hand provides an identifier to match active
+ edges and events (see below)
+
+ Ptr because class needs to be assignable
+ */
+ const B2DRectangle* mpAssociatedRect;
+
+ /// 'upper' or 'lower' edge of original rectangle.
+ EdgeType meEdgeType;
+
+ /// 'up' or 'down'
+ EdgeDirection meEdgeDirection;
+ };
+
+ typedef std::vector< SweepLineEvent > VectorOfEvents;
+
+
+ /** Smart point container for B2DMultiRange::getPolyPolygon()
+
+ This class provides methods needed only here, and is used
+ as a place to store some additional information per
+ polygon. Also, most of the intersection logic is
+ implemented here.
+ */
+ class ImplPolygon
+ {
+ public:
+ /** Create polygon
+ */
+ ImplPolygon() :
+ mpLeadingRightEdge(NULL),
+ mnIdx(-1),
+ maPoints(),
+ mbIsFinished(false)
+ {
+ // completely ad-hoc. but what the hell.
+ maPoints.reserve(11);
+ }
+
+ void setPolygonPoolIndex( std::ptrdiff_t nIdx ) { mnIdx = nIdx; }
+ bool isFinished() const { return mbIsFinished; }
+
+ /// Add point to the end of the existing points
+ void append( const B2DPoint& rPoint )
+ {
+ OSL_PRECOND( maPoints.empty() ||
+ maPoints.back().getX() == rPoint.getX() ||
+ maPoints.back().getY() == rPoint.getY(),
+ "ImplPolygon::append(): added point violates 90 degree line angle constraint!" );
+
+ if( maPoints.empty() ||
+ maPoints.back() != rPoint )
+ {
+ // avoid duplicate points
+ maPoints.push_back( rPoint );
+ }
+ }
+
+ /** Perform the intersection of this polygon with an
+ active edge.
+
+ @param rEvent
+ The vertical line event that generated the
+ intersection
+
+ @param rActiveEdge
+ The active edge that generated the intersection
+
+ @param rPolygonPool
+ Polygon pool, we sometimes need to allocate a new one
+
+ @param bIsFinishingEdge
+ True, when this is hitting the last edge of the
+ vertical sweep - every vertical sweep starts and ends
+ with upper and lower edge of the _same_ rectangle.
+
+ @return the new current polygon (that's the one
+ processing must proceed with, when going through the
+ list of upcoming active edges).
+ */
+ std::ptrdiff_t intersect( SweepLineEvent& rEvent,
+ ActiveEdge& rActiveEdge,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes,
+ bool isFinishingEdge )
+ {
+ OSL_PRECOND( !isFinished(),
+ "ImplPolygon::intersect(): called on already finished polygon!" );
+ OSL_PRECOND( !isFinishingEdge
+ || (isFinishingEdge && &rEvent.getRect() == &rActiveEdge.getRect()),
+ "ImplPolygon::intersect(): inconsistent ending!" );
+
+ const B2DPoint aIntersectionPoint( rEvent.getPos(),
+ rActiveEdge.getInvariantCoord() );
+
+ // intersection point, goes to our polygon
+ // unconditionally
+ append(aIntersectionPoint);
+
+ const bool isSweepLineEnteringRect(
+ rEvent.getEdgeType() == SweepLineEvent::STARTING_EDGE);
+ if( isFinishingEdge )
+ {
+ if( isSweepLineEnteringRect )
+ handleFinalOwnRightEdge(rActiveEdge);
+ else
+ handleFinalOwnLeftEdge(rActiveEdge,
+ rPolygonPool,
+ rRes);
+
+ // we're done with this rect & sweep line
+ return -1;
+ }
+ else if( metOwnEdge(rEvent,rActiveEdge) )
+ {
+ handleInitialOwnEdge(rEvent, rActiveEdge);
+
+ // point already added, all init done, continue
+ // with same poly
+ return mnIdx;
+ }
+ else
+ {
+ OSL_ENSURE( rActiveEdge.getTargetPolygonIndex() != -1,
+ "ImplPolygon::intersect(): non-trivial intersection hit empty polygon!" );
+
+ const bool isHittingLeftEdge(
+ rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_LEFT);
+
+ if( isHittingLeftEdge )
+ return handleComplexLeftEdge(rActiveEdge,
+ aIntersectionPoint,
+ rPolygonPool,
+ rRes);
+ else
+ return handleComplexRightEdge(rActiveEdge,
+ aIntersectionPoint,
+ rPolygonPool);
+ }
+ }
+
+ private:
+ std::ptrdiff_t getPolygonPoolIndex() const { return mnIdx; }
+
+ void handleInitialOwnEdge(SweepLineEvent& rEvent,
+ ActiveEdge& rActiveEdge)
+ {
+ const bool isActiveEdgeProceedLeft(
+ rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_LEFT);
+ const bool isSweepLineEnteringRect(
+ rEvent.getEdgeType() == SweepLineEvent::STARTING_EDGE);
+ (void)isActiveEdgeProceedLeft;
+ (void)isSweepLineEnteringRect;
+
+ OSL_ENSURE( isSweepLineEnteringRect == isActiveEdgeProceedLeft,
+ "ImplPolygon::intersect(): sweep initial own edge hit: wrong polygon order" );
+
+ OSL_ENSURE( isSweepLineEnteringRect ||
+ mpLeadingRightEdge == &rActiveEdge,
+ "ImplPolygon::intersect(): sweep initial own edge hit: wrong leading edge" );
+ }
+
+ void handleFinalOwnRightEdge(ActiveEdge& rActiveEdge)
+ {
+ OSL_ENSURE( rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_RIGHT,
+ "ImplPolygon::handleInitialOwnRightEdge(): start edge wrong polygon order" );
+
+ rActiveEdge.setTargetPolygonIndex(mnIdx);
+ mpLeadingRightEdge = &rActiveEdge;
+ }
+
+ void handleFinalOwnLeftEdge(ActiveEdge& rActiveEdge,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ OSL_ENSURE( rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_LEFT,
+ "ImplPolygon::handleFinalOwnLeftEdge(): end edge wrong polygon order" );
+
+ const bool isHittingOurTail(
+ rActiveEdge.getTargetPolygonIndex() == mnIdx);
+
+ if( isHittingOurTail )
+ finish(rRes); // just finish. no fuss.
+ else
+ {
+ // temp poly hits final left edge
+ const std::ptrdiff_t nTmpIdx=rActiveEdge.getTargetPolygonIndex();
+ ImplPolygon& rTmp=rPolygonPool.get(nTmpIdx);
+
+ // active edge's polygon has points
+ // already. ours need to go in front of them.
+ maPoints.insert(maPoints.end(),
+ rTmp.maPoints.begin(),
+ rTmp.maPoints.end());
+
+ // adjust leading edges, we're switching the polygon
+ ActiveEdge* const pFarEdge=rTmp.mpLeadingRightEdge;
+
+ mpLeadingRightEdge = pFarEdge;
+ pFarEdge->setTargetPolygonIndex(mnIdx);
+
+ // nTmpIdx is an empty shell, get rid of it
+ rPolygonPool.free(nTmpIdx);
+ }
+ }
+
+ std::ptrdiff_t handleComplexLeftEdge(ActiveEdge& rActiveEdge,
+ const B2DPoint& rIntersectionPoint,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ const bool isHittingOurTail(
+ rActiveEdge.getTargetPolygonIndex() == mnIdx);
+ if( isHittingOurTail )
+ {
+ finish(rRes);
+
+ // so "this" is done - need new polygon to collect
+ // further points
+ const std::ptrdiff_t nIdxNewPolygon=rPolygonPool.alloc();
+ rPolygonPool.get(nIdxNewPolygon).setPolygonPoolIndex(nIdxNewPolygon);
+ rPolygonPool.get(nIdxNewPolygon).append(rIntersectionPoint);
+
+ rActiveEdge.setTargetPolygonIndex(nIdxNewPolygon);
+
+ return nIdxNewPolygon;
+ }
+ else
+ {
+ const std::ptrdiff_t nTmpIdx=rActiveEdge.getTargetPolygonIndex();
+ ImplPolygon& rTmp=rPolygonPool.get(nTmpIdx);
+
+ // active edge's polygon has points
+ // already. ours need to go in front of them.
+ maPoints.insert(maPoints.end(),
+ rTmp.maPoints.begin(),
+ rTmp.maPoints.end());
+
+ rTmp.maPoints.clear();
+ rTmp.append(rIntersectionPoint);
+
+ // adjust leading edges, we're switching the polygon
+ ActiveEdge* const pFarEdge=rTmp.mpLeadingRightEdge;
+ ActiveEdge* const pNearEdge=&rActiveEdge;
+
+ rTmp.mpLeadingRightEdge = NULL;
+ pNearEdge->setTargetPolygonIndex(nTmpIdx);
+
+ mpLeadingRightEdge = pFarEdge;
+ pFarEdge->setTargetPolygonIndex(mnIdx);
+
+ return nTmpIdx;
+ }
+ }
+
+ std::ptrdiff_t handleComplexRightEdge(ActiveEdge& rActiveEdge,
+ const B2DPoint& rIntersectionPoint,
+ VectorOfPolygons& rPolygonPool)
+ {
+ const std::ptrdiff_t nTmpIdx=rActiveEdge.getTargetPolygonIndex();
+ ImplPolygon& rTmp=rPolygonPool.get(nTmpIdx);
+
+ rTmp.append(rIntersectionPoint);
+
+ rActiveEdge.setTargetPolygonIndex(mnIdx);
+ mpLeadingRightEdge = &rActiveEdge;
+
+ rTmp.mpLeadingRightEdge = NULL;
+
+ return nTmpIdx;
+ }
+
+ /// True when sweep line hits our own active edge
+ bool metOwnEdge(const SweepLineEvent& rEvent,
+ ActiveEdge& rActiveEdge)
+ {
+ const bool bHitOwnEdge=&rEvent.getRect() == &rActiveEdge.getRect();
+ return bHitOwnEdge;
+ }
+
+ /// Retrieve B2DPolygon from this object
+ B2DPolygon getPolygon() const
+ {
+ B2DPolygon aRes;
+ std::for_each( maPoints.begin(),
+ maPoints.end(),
+ boost::bind(
+ &B2DPolygon::append,
+ boost::ref(aRes),
+ _1,
+ 1 ) );
+ aRes.setClosed( true );
+ return aRes;
+ }
+
+ /** Finish this polygon, push to result set.
+ */
+ void finish(B2DPolyPolygon& rRes)
+ {
+ OSL_PRECOND( maPoints.empty() ||
+ maPoints.front().getX() == maPoints.back().getX() ||
+ maPoints.front().getY() == maPoints.back().getY(),
+ "ImplPolygon::finish(): first and last point violate 90 degree line angle constraint!" );
+
+ mbIsFinished = true;
+ mpLeadingRightEdge = NULL;
+
+ rRes.append(getPolygon());
+ }
+
+ /** Refers to the current leading edge element of this
+ polygon, or NULL. The leading edge denotes the 'front'
+ of the polygon vertex sequence, i.e. the coordinates
+ at the polygon's leading edge are returned from
+ maPoints.front()
+ */
+ ActiveEdge* mpLeadingRightEdge;
+
+ /// current index into vector pool
+ std::ptrdiff_t mnIdx;
+
+ /// Container for the actual polygon points
+ std::vector<B2DPoint> maPoints;
+
+ /// When true, this polygon is 'done', i.e. nothing must be added anymore.
+ bool mbIsFinished;
+ };
+
+ /** Init sweep line event list
+
+ This method fills the event list with the sweep line
+ events generated from the input rectangles, and sorts them
+ with increasing x.
+ */
+ void setupSweepLineEventListFromRanges( VectorOfEvents& o_rEventVector,
+ const std::vector<B2DRange>& rRanges,
+ const std::vector<B2VectorOrientation>& rOrientations )
+ {
+ // we need exactly 2*rectVec.size() events: one for the
+ // left, and one for the right edge of each rectangle
+ o_rEventVector.clear();
+ o_rEventVector.reserve( 2*rRanges.size() );
+
+ // generate events
+ // ===============
+
+ // first pass: add all left edges in increasing order
+ std::vector<B2DRange>::const_iterator aCurrRect=rRanges.begin();
+ std::vector<B2VectorOrientation>::const_iterator aCurrOrientation=rOrientations.begin();
+ const std::vector<B2DRange>::const_iterator aEnd=rRanges.end();
+ const std::vector<B2VectorOrientation>::const_iterator aEndOrientation=rOrientations.end();
+ while( aCurrRect != aEnd && aCurrOrientation != aEndOrientation )
+ {
+ const B2DRectangle& rCurrRect( *aCurrRect++ );
+
+ o_rEventVector.push_back(
+ SweepLineEvent( rCurrRect.getMinX(),
+ rCurrRect,
+ SweepLineEvent::STARTING_EDGE,
+ (*aCurrOrientation++) == ORIENTATION_POSITIVE ?
+ SweepLineEvent::PROCEED_UP : SweepLineEvent::PROCEED_DOWN) );
+ }
+
+ // second pass: add all right edges in reversed order
+ std::vector<B2DRange>::const_reverse_iterator aCurrRectR=rRanges.rbegin();
+ std::vector<B2VectorOrientation>::const_reverse_iterator aCurrOrientationR=rOrientations.rbegin();
+ const std::vector<B2DRange>::const_reverse_iterator aEndR=rRanges.rend();
+ const std::vector<B2VectorOrientation>::const_reverse_iterator aEndOrientationR=rOrientations.rend();
+ while( aCurrRectR != aEndR )
+ {
+ const B2DRectangle& rCurrRect( *aCurrRectR++ );
+
+ o_rEventVector.push_back(
+ SweepLineEvent( rCurrRect.getMaxX(),
+ rCurrRect,
+ SweepLineEvent::FINISHING_EDGE,
+ (*aCurrOrientationR++) == ORIENTATION_POSITIVE ?
+ SweepLineEvent::PROCEED_DOWN : SweepLineEvent::PROCEED_UP ) );
+ }
+
+ // sort events
+ // ===========
+
+ // since we use stable_sort, the order of events with the
+ // same x value will not change. The elaborate two-pass
+ // add above thus ensures, that for each two rectangles
+ // with similar left and right x coordinates, the
+ // rectangle whose left event comes first will have its
+ // right event come last. This is advantageous for the
+ // clip algorithm below, see handleRightEdgeCrossing().
+
+ // TODO(P3): Use radix sort (from
+ // b2dpolypolygonrasterconverter, or have your own
+ // templatized version).
+ std::stable_sort( o_rEventVector.begin(),
+ o_rEventVector.end() );
+ }
+
+ /** Insert two active edge segments for the given rectangle.
+
+ This method creates two active edge segments from the
+ given rect, and inserts them into the active edge list,
+ such that this stays sorted (if it was before).
+
+ @param io_rEdgeList
+ Active edge list to insert into
+
+ @param io_rPolygons
+ Vector of polygons. Each rectangle added creates one
+ tentative result polygon in this vector, and the edge list
+ entries holds a reference to that polygon (this _requires_
+ that the polygon vector does not reallocate, i.e. it must
+ have at least the maximal number of rectangles reserved)
+
+ @param o_CurrentPolygon
+ The then-current polygon when processing this sweep line
+ event
+
+ @param rCurrEvent
+ The actual event that caused this call
+ */
+ void createActiveEdgesFromStartEvent( ListOfEdges& io_rEdgeList,
+ VectorOfPolygons& io_rPolygonPool,
+ SweepLineEvent& rCurrEvent )
+ {
+ ListOfEdges aNewEdges;
+ const B2DRectangle& rRect=rCurrEvent.getRect();
+ const bool bGoesDown=rCurrEvent.getEdgeDirection() == SweepLineEvent::PROCEED_DOWN;
+
+ // start event - new rect starts here, needs polygon to
+ // collect points into
+ const std::ptrdiff_t nIdxPolygon=io_rPolygonPool.alloc();
+ io_rPolygonPool.get(nIdxPolygon).setPolygonPoolIndex(nIdxPolygon);
+
+ // upper edge
+ aNewEdges.push_back(
+ ActiveEdge(
+ rRect,
+ rRect.getMinY(),
+ bGoesDown ? nIdxPolygon : -1,
+ ActiveEdge::UPPER,
+ bGoesDown ? ActiveEdge::PROCEED_LEFT : ActiveEdge::PROCEED_RIGHT) );
+ // lower edge
+ aNewEdges.push_back(
+ ActiveEdge(
+ rRect,
+ rRect.getMaxY(),
+ bGoesDown ? -1 : nIdxPolygon,
+ ActiveEdge::LOWER,
+ bGoesDown ? ActiveEdge::PROCEED_RIGHT : ActiveEdge::PROCEED_LEFT ) );
+
+ // furthermore, have to respect a special tie-breaking
+ // rule here, for edges which share the same y value:
+ // newly added upper edges must be inserted _before_ any
+ // other edge with the same y value, and newly added lower
+ // edges must be _after_ all other edges with the same
+ // y. This ensures that the left vertical edge processing
+ // below encounters the upper edge of the current rect
+ // first, and the lower edge last, which automatically
+ // starts and finishes this rect correctly (as only then,
+ // the polygon will have their associated active edges
+ // set).
+ const double nMinY( rRect.getMinY() );
+ const double nMaxY( rRect.getMaxY() );
+ ListOfEdges::iterator aCurr( io_rEdgeList.begin() );
+ const ListOfEdges::iterator aEnd ( io_rEdgeList.end() );
+ while( aCurr != aEnd )
+ {
+ const double nCurrY( aCurr->getInvariantCoord() );
+
+ if( nCurrY >= nMinY &&
+ aNewEdges.size() == 2 ) // only add, if not yet done.
+ {
+ // insert upper edge _before_ aCurr. Thus, it will
+ // be the first entry for a range of equal y
+ // values. Using splice here, since we hold
+ // references to the moved list element!
+ io_rEdgeList.splice( aCurr,
+ aNewEdges,
+ aNewEdges.begin() );
+ }
+
+ if( nCurrY > nMaxY )
+ {
+ // insert lower edge _before_ aCurr. Thus, it will
+ // be the last entry for a range of equal y values
+ // (aCurr is the first entry strictly larger than
+ // nMaxY). Using splice here, since we hold
+ // references to the moved list element!
+ io_rEdgeList.splice( aCurr,
+ aNewEdges,
+ aNewEdges.begin() );
+ // done with insertion, can early-exit here.
+ return;
+ }
+
+ ++aCurr;
+ }
+
+ // append remainder of aNewList (might still contain 2 or
+ // 1 elements, depending of the contents of io_rEdgeList).
+ io_rEdgeList.splice( aCurr,
+ aNewEdges );
+ }
+
+ inline bool isSameRect(ActiveEdge& rEdge,
+ const basegfx::B2DRange& rRect)
+ {
+ return &rEdge.getRect() == &rRect;
+ }
+
+ // wow what a hack. necessary because stl's list::erase does
+ // not eat reverse_iterator
+ template<typename Cont, typename Iter> Iter eraseFromList(Cont&, Iter);
+ template<> inline ListOfEdges::iterator eraseFromList(
+ ListOfEdges& rList, ListOfEdges::iterator aIter)
+ {
+ return rList.erase(aIter);
+ }
+ template<> inline ListOfEdges::reverse_iterator eraseFromList(
+ ListOfEdges& rList, ListOfEdges::reverse_iterator aIter)
+ {
+ return ListOfEdges::reverse_iterator(
+ rList.erase(boost::prior(aIter.base())));
+ }
+
+ template<int bPerformErase,
+ typename Iterator> inline void processActiveEdges(
+ Iterator first,
+ Iterator last,
+ ListOfEdges& rActiveEdgeList,
+ SweepLineEvent& rCurrEvent,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes )
+ {
+ const basegfx::B2DRange& rCurrRect=rCurrEvent.getRect();
+
+ // fast-forward to rCurrEvent's first active edge (holds
+ // for both starting and finishing sweep line events, a
+ // rect is regarded _outside_ any rects whose events have
+ // started earlier
+ first = std::find_if(first, last,
+ boost::bind(
+ &isSameRect,
+ _1,
+ boost::cref(rCurrRect)));
+
+ if(first == last)
+ return;
+
+ int nCount=0;
+ std::ptrdiff_t nCurrPolyIdx=-1;
+ while(first != last)
+ {
+ if( nCurrPolyIdx == -1 )
+ nCurrPolyIdx=first->getTargetPolygonIndex();
+
+ OSL_ASSERT(nCurrPolyIdx != -1);
+
+ // second encounter of my rect -> second edge
+ // encountered, done
+ const bool bExit=
+ nCount &&
+ isSameRect(*first,
+ rCurrRect);
+
+ // deal with current active edge
+ nCurrPolyIdx =
+ rPolygonPool.get(nCurrPolyIdx).intersect(
+ rCurrEvent,
+ *first,
+ rPolygonPool,
+ rRes,
+ bExit);
+
+ // prune upper & lower active edges, if requested
+ if( bPerformErase && (bExit || !nCount) )
+ first = eraseFromList(rActiveEdgeList,first);
+ else
+ ++first;
+
+ // delayed exit, had to prune first
+ if( bExit )
+ return;
+
+ ++nCount;
+ }
+ }
+
+ template<int bPerformErase> inline void processActiveEdgesTopDown(
+ SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes )
+ {
+ processActiveEdges<bPerformErase>(
+ rActiveEdgeList. begin(),
+ rActiveEdgeList. end(),
+ rActiveEdgeList,
+ rCurrEvent,
+ rPolygonPool,
+ rRes);
+ }
+
+ template<int bPerformErase> inline void processActiveEdgesBottomUp(
+ SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes )
+ {
+ processActiveEdges<bPerformErase>(
+ rActiveEdgeList. rbegin(),
+ rActiveEdgeList. rend(),
+ rActiveEdgeList,
+ rCurrEvent,
+ rPolygonPool,
+ rRes);
+ }
+
+ enum{ NoErase=0, PerformErase=1 };
+
+ void handleStartingEdge( SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ // inject two new active edges for rect
+ createActiveEdgesFromStartEvent( rActiveEdgeList,
+ rPolygonPool,
+ rCurrEvent );
+
+ if( SweepLineEvent::PROCEED_DOWN == rCurrEvent.getEdgeDirection() )
+ processActiveEdgesTopDown<NoErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ else
+ processActiveEdgesBottomUp<NoErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ }
+
+ void handleFinishingEdge( SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ if( SweepLineEvent::PROCEED_DOWN == rCurrEvent.getEdgeDirection() )
+ processActiveEdgesTopDown<PerformErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ else
+ processActiveEdgesBottomUp<PerformErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ }
+
+ inline void handleSweepLineEvent( SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ if( SweepLineEvent::STARTING_EDGE == rCurrEvent.getEdgeType() )
+ handleStartingEdge(rCurrEvent,rActiveEdgeList,rPolygonPool,rRes);
+ else
+ handleFinishingEdge(rCurrEvent,rActiveEdgeList,rPolygonPool,rRes);
+ }
+ }
+
+ namespace tools
+ {
+ B2DPolyPolygon solveCrossovers(const std::vector<B2DRange>& rRanges,
+ const std::vector<B2VectorOrientation>& rOrientations)
+ {
+ // sweep-line algorithm to generate a poly-polygon
+ // from a bunch of rectangles
+ // ===============================================
+ //
+ // This algorithm uses the well-known sweep line
+ // concept, explained in every good text book about
+ // computational geometry.
+ //
+ // We start with creating two structures for every
+ // rectangle, one representing the left x coordinate,
+ // one representing the right x coordinate (and both
+ // referencing the original rect). These structs are
+ // sorted with increasing x coordinates.
+ //
+ // Then, we start processing the resulting list from
+ // the beginning. Every entry in the list defines a
+ // point in time of the line sweeping from left to
+ // right across all rectangles.
+ VectorOfEvents aSweepLineEvents;
+ setupSweepLineEventListFromRanges( aSweepLineEvents,
+ rRanges,
+ rOrientations );
+
+ B2DPolyPolygon aRes;
+ VectorOfPolygons aPolygonPool;
+ ListOfEdges aActiveEdgeList;
+
+ // sometimes not enough, but a usable compromise
+ aPolygonPool.reserve( rRanges.size() );
+
+ std::for_each( aSweepLineEvents.begin(),
+ aSweepLineEvents.end(),
+ boost::bind(
+ &handleSweepLineEvent,
+ _1,
+ boost::ref(aActiveEdgeList),
+ boost::ref(aPolygonPool),
+ boost::ref(aRes)) );
+
+ return aRes;
+ }
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/range/b2xrange.cxx b/basegfx/source/range/b2xrange.cxx
new file mode 100644
index 000000000000..a2e33b461c92
--- /dev/null
+++ b/basegfx/source/range/b2xrange.cxx
@@ -0,0 +1,145 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/range/b2ibox.hxx>
+
+
+namespace basegfx
+{
+ namespace
+ {
+ /** Generic implementation of the difference set computation
+
+ @tpl RangeType
+ Type to operate on. Must provide ValueType and TraitsType
+ nested types.
+ */
+ template< class RangeType > void doComputeSetDifference(
+ ::std::vector< RangeType >& o_rRanges,
+ const RangeType& a,
+ const RangeType& b )
+ {
+ o_rRanges.clear();
+
+ // special-casing the empty rect case (this will fail most
+ // of the times below, because of the DBL_MIN/MAX special
+ // values denoting emptyness in the rectangle.
+ if( a.isEmpty() )
+ {
+ o_rRanges.push_back( b );
+ return;
+ }
+ if( b.isEmpty() )
+ {
+ o_rRanges.push_back( a );
+ return;
+ }
+
+ const typename RangeType::ValueType ax(a.getMinX());
+ const typename RangeType::ValueType ay(a.getMinY());
+ const typename RangeType::TraitsType::DifferenceType aw(a.getWidth());
+ const typename RangeType::TraitsType::DifferenceType ah(a.getHeight());
+ const typename RangeType::ValueType bx(b.getMinX());
+ const typename RangeType::ValueType by(b.getMinY());
+ const typename RangeType::TraitsType::DifferenceType bw(b.getWidth());
+ const typename RangeType::TraitsType::DifferenceType bh(b.getHeight());
+
+ const typename RangeType::TraitsType::DifferenceType h0( (by > ay) ? by - ay : 0 );
+ const typename RangeType::TraitsType::DifferenceType h3( (by + bh < ay + ah) ? ay + ah - by - bh : 0 );
+ const typename RangeType::TraitsType::DifferenceType w1( (bx > ax) ? bx - ax : 0 );
+ const typename RangeType::TraitsType::DifferenceType w2( (ax + aw > bx + bw) ? ax + aw - bx - bw : 0 );
+ const typename RangeType::TraitsType::DifferenceType h12( (h0 + h3 < ah) ? ah - h0 - h3 : 0 );
+
+ // TODO(E2): Use numeric_cast instead of static_cast here,
+ // need range checks!
+ if (h0 > 0)
+ o_rRanges.push_back(
+ RangeType(ax,ay,
+ static_cast<typename RangeType::ValueType>(ax+aw),
+ static_cast<typename RangeType::ValueType>(ay+h0)) );
+
+ if (w1 > 0 && h12 > 0)
+ o_rRanges.push_back(
+ RangeType(ax,
+ static_cast<typename RangeType::ValueType>(ay+h0),
+ static_cast<typename RangeType::ValueType>(ax+w1),
+ static_cast<typename RangeType::ValueType>(ay+h0+h12)) );
+
+ if (w2 > 0 && h12 > 0)
+ o_rRanges.push_back(
+ RangeType(static_cast<typename RangeType::ValueType>(bx+bw),
+ static_cast<typename RangeType::ValueType>(ay+h0),
+ static_cast<typename RangeType::ValueType>(bx+bw+w2),
+ static_cast<typename RangeType::ValueType>(ay+h0+h12)) );
+
+ if (h3 > 0)
+ o_rRanges.push_back(
+ RangeType(ax,
+ static_cast<typename RangeType::ValueType>(ay+h0+h12),
+ static_cast<typename RangeType::ValueType>(ax+aw),
+ static_cast<typename RangeType::ValueType>(ay+h0+h12+h3)) );
+ }
+ }
+
+ ::std::vector< B2IRange >& computeSetDifference( ::std::vector< B2IRange >& o_rResult,
+ const B2IRange& rFirst,
+ const B2IRange& rSecond )
+ {
+ doComputeSetDifference( o_rResult, rFirst, rSecond );
+
+ return o_rResult;
+ }
+
+ ::std::vector< B2DRange >& computeSetDifference( ::std::vector< B2DRange >& o_rResult,
+ const B2DRange& rFirst,
+ const B2DRange& rSecond )
+ {
+ doComputeSetDifference( o_rResult, rFirst, rSecond );
+
+ return o_rResult;
+ }
+
+ ::std::vector< B2IBox >& computeSetDifference( ::std::vector< B2IBox >& o_rResult,
+ const B2IBox& rFirst,
+ const B2IBox& rSecond )
+ {
+ doComputeSetDifference( o_rResult, rFirst, rSecond );
+
+ return o_rResult;
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/range/b3drange.cxx b/basegfx/source/range/b3drange.cxx
new file mode 100644
index 000000000000..21ba72d9483d
--- /dev/null
+++ b/basegfx/source/range/b3drange.cxx
@@ -0,0 +1,88 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/range/b3irange.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+
+namespace basegfx
+{
+ B3DRange::B3DRange(const B3IRange& rRange) :
+ maRangeX(),
+ maRangeY(),
+ maRangeZ()
+ {
+ if( !rRange.isEmpty() )
+ {
+ maRangeX = rRange.getMinX();
+ maRangeY = rRange.getMinY();
+ maRangeZ = rRange.getMinZ();
+
+ maRangeX.expand( rRange.getMaxX() );
+ maRangeY.expand( rRange.getMaxY() );
+ maRangeZ.expand( rRange.getMaxZ() );
+ }
+ }
+
+ void B3DRange::transform(const B3DHomMatrix& rMatrix)
+ {
+ if(!isEmpty() && !rMatrix.isIdentity())
+ {
+ const B3DRange aSource(*this);
+ reset();
+ expand(rMatrix * B3DPoint(aSource.getMinX(), aSource.getMinY(), aSource.getMinZ()));
+ expand(rMatrix * B3DPoint(aSource.getMaxX(), aSource.getMinY(), aSource.getMinZ()));
+ expand(rMatrix * B3DPoint(aSource.getMinX(), aSource.getMaxY(), aSource.getMinZ()));
+ expand(rMatrix * B3DPoint(aSource.getMaxX(), aSource.getMaxY(), aSource.getMinZ()));
+ expand(rMatrix * B3DPoint(aSource.getMinX(), aSource.getMinY(), aSource.getMaxZ()));
+ expand(rMatrix * B3DPoint(aSource.getMaxX(), aSource.getMinY(), aSource.getMaxZ()));
+ expand(rMatrix * B3DPoint(aSource.getMinX(), aSource.getMaxY(), aSource.getMaxZ()));
+ expand(rMatrix * B3DPoint(aSource.getMaxX(), aSource.getMaxY(), aSource.getMaxZ()));
+ }
+ }
+
+ B3IRange fround(const B3DRange& rRange )
+ {
+ return rRange.isEmpty() ?
+ B3IRange() :
+ B3IRange(fround(rRange.getMinX()),
+ fround(rRange.getMinY()),
+ fround(rRange.getMinZ()),
+ fround(rRange.getMaxX()),
+ fround(rRange.getMaxY()),
+ fround(rRange.getMaxZ()));
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/range/makefile.mk b/basegfx/source/range/makefile.mk
new file mode 100644
index 000000000000..5e05eeda94d9
--- /dev/null
+++ b/basegfx/source/range/makefile.mk
@@ -0,0 +1,52 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=range
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+ENABLE_EXCEPTIONS=TRUE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/b1drange.obj \
+ $(SLO)$/b2drange.obj \
+ $(SLO)$/b2xrange.obj \
+ $(SLO)$/b2dpolyrange.obj \
+ $(SLO)$/b2drangeclipper.obj \
+ $(SLO)$/b3drange.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/raster/bpixelraster.cxx b/basegfx/source/raster/bpixelraster.cxx
new file mode 100644
index 000000000000..96ad4e991b5a
--- /dev/null
+++ b/basegfx/source/raster/bpixelraster.cxx
@@ -0,0 +1,43 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/raster/bpixelraster.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/raster/bzpixelraster.cxx b/basegfx/source/raster/bzpixelraster.cxx
new file mode 100644
index 000000000000..574d57f17500
--- /dev/null
+++ b/basegfx/source/raster/bzpixelraster.cxx
@@ -0,0 +1,43 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/raster/bzpixelraster.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/raster/makefile.mk b/basegfx/source/raster/makefile.mk
new file mode 100644
index 000000000000..1381b9f6d716
--- /dev/null
+++ b/basegfx/source/raster/makefile.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=raster
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+ENABLE_EXCEPTIONS=TRUE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/bpixelraster.obj \
+ $(SLO)$/bzpixelraster.obj \
+ $(SLO)$/rasterconvert3d.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/raster/rasterconvert3d.cxx b/basegfx/source/raster/rasterconvert3d.cxx
new file mode 100644
index 000000000000..0d06ca5be086
--- /dev/null
+++ b/basegfx/source/raster/rasterconvert3d.cxx
@@ -0,0 +1,356 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/raster/rasterconvert3d.hxx>
+#include <basegfx/polygon/b3dpolygon.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// implementations of the 3D raster converter
+
+namespace basegfx
+{
+ void RasterConverter3D::addArea(const B3DPolygon& rFill, const B3DHomMatrix* pViewToEye)
+ {
+ const sal_uInt32 nPointCount(rFill.count());
+
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ addEdge(rFill, a, (a + 1) % nPointCount, pViewToEye);
+ }
+ }
+
+ void RasterConverter3D::addArea(const B3DPolyPolygon& rFill, const B3DHomMatrix* pViewToEye)
+ {
+ const sal_uInt32 nPolyCount(rFill.count());
+
+ for(sal_uInt32 a(0); a < nPolyCount; a++)
+ {
+ addArea(rFill.getB3DPolygon(a), pViewToEye);
+ }
+ }
+
+ RasterConverter3D::RasterConverter3D()
+ : InterpolatorProvider3D(),
+ maLineEntries()
+ {}
+
+ RasterConverter3D::~RasterConverter3D()
+ {}
+
+ void RasterConverter3D::rasterconvertB3DArea(sal_Int32 nStartLine, sal_Int32 nStopLine)
+ {
+ if(maLineEntries.size())
+ {
+ OSL_ENSURE(nStopLine >= nStartLine, "nStopLine is bigger than nStartLine (!)");
+
+ // sort global entries by Y, X once. After this, the vector
+ // is seen as frozen. Pointers to it's entries will be used in the following code.
+ ::std::sort(maLineEntries.begin(), maLineEntries.end());
+
+ // local parameters
+ ::std::vector< RasterConversionLineEntry3D >::iterator aCurrentEntry(maLineEntries.begin());
+ ::std::vector< RasterConversionLineEntry3D* > aCurrentLine;
+ ::std::vector< RasterConversionLineEntry3D* > aNextLine;
+ ::std::vector< RasterConversionLineEntry3D* >::iterator aRasterConversionLineEntry3D;
+ sal_uInt32 nPairCount(0);
+
+ // get scanlines first LineNumber as start
+ sal_Int32 nLineNumber(::std::max(aCurrentEntry->getY(), nStartLine));
+
+ while((aCurrentLine.size() || aCurrentEntry != maLineEntries.end()) && (nLineNumber < nStopLine))
+ {
+ // add all entries which start at current line to current scanline
+ while(aCurrentEntry != maLineEntries.end())
+ {
+ const sal_Int32 nCurrentLineNumber(aCurrentEntry->getY());
+
+ if(nCurrentLineNumber > nLineNumber)
+ {
+ // line is below current one, done (since array is sorted)
+ break;
+ }
+ else
+ {
+ // less or equal. Line is above or at current one. Advance it exactly to
+ // current line
+ const sal_uInt32 nStep(nLineNumber - nCurrentLineNumber);
+
+ if(!nStep || aCurrentEntry->decrementRasterConversionLineEntry3D(nStep))
+ {
+ // add when exactly on current line or when incremet to it did not
+ // completely consume it
+ if(nStep)
+ {
+ aCurrentEntry->incrementRasterConversionLineEntry3D(nStep, *this);
+ }
+
+ aCurrentLine.push_back(&(*(aCurrentEntry)));
+ }
+ }
+
+ aCurrentEntry++;
+ }
+
+ // sort current scanline using comparator. Only X is used there
+ // since all entries are already in one processed line. This needs to be done
+ // everytime since not only new spans may have benn added or old removed,
+ // but incrementing may also have changed the order
+ ::std::sort(aCurrentLine.begin(), aCurrentLine.end(), lineComparator());
+
+ // process current scanline
+ aRasterConversionLineEntry3D = aCurrentLine.begin();
+ aNextLine.clear();
+ nPairCount = 0;
+
+ while(aRasterConversionLineEntry3D != aCurrentLine.end())
+ {
+ RasterConversionLineEntry3D& rPrevScanRasterConversionLineEntry3D(**aRasterConversionLineEntry3D++);
+
+ // look for 2nd span
+ if(aRasterConversionLineEntry3D != aCurrentLine.end())
+ {
+ // work on span from rPrevScanRasterConversionLineEntry3D to aRasterConversionLineEntry3D, fLineNumber is valid
+ processLineSpan(rPrevScanRasterConversionLineEntry3D, **aRasterConversionLineEntry3D, nLineNumber, nPairCount++);
+ }
+
+ // increment to next line
+ if(rPrevScanRasterConversionLineEntry3D.decrementRasterConversionLineEntry3D(1))
+ {
+ rPrevScanRasterConversionLineEntry3D.incrementRasterConversionLineEntry3D(1, *this);
+ aNextLine.push_back(&rPrevScanRasterConversionLineEntry3D);
+ }
+ }
+
+ // copy back next scanline if count has changed
+ if(aNextLine.size() != aCurrentLine.size())
+ {
+ aCurrentLine = aNextLine;
+ }
+
+ // increment fLineNumber
+ nLineNumber++;
+ }
+ }
+ }
+
+ void RasterConverter3D::addEdge(const B3DPolygon& rFill, sal_uInt32 a, sal_uInt32 b, const B3DHomMatrix* pViewToEye)
+ {
+ B3DPoint aStart(rFill.getB3DPoint(a));
+ B3DPoint aEnd(rFill.getB3DPoint(b));
+ sal_Int32 nYStart(fround(aStart.getY()));
+ sal_Int32 nYEnd(fround(aEnd.getY()));
+
+ if(nYStart != nYEnd)
+ {
+ if(nYStart > nYEnd)
+ {
+ ::std::swap(aStart, aEnd);
+ ::std::swap(nYStart, nYEnd);
+ ::std::swap(a, b);
+ }
+
+ const sal_uInt32 nYDelta(nYEnd - nYStart);
+ const double fInvYDelta(1.0 / nYDelta);
+ maLineEntries.push_back(RasterConversionLineEntry3D(
+ aStart.getX(), (aEnd.getX() - aStart.getX()) * fInvYDelta,
+ aStart.getZ(), (aEnd.getZ() - aStart.getZ()) * fInvYDelta,
+ nYStart, nYDelta));
+
+ // if extra interpolation data is used, add it to the last created entry
+ RasterConversionLineEntry3D& rEntry = maLineEntries[maLineEntries.size() - 1];
+
+ if(rFill.areBColorsUsed())
+ {
+ rEntry.setColorIndex(addColorInterpolator(rFill.getBColor(a), rFill.getBColor(b), fInvYDelta));
+ }
+
+ if(rFill.areNormalsUsed())
+ {
+ rEntry.setNormalIndex(addNormalInterpolator(rFill.getNormal(a), rFill.getNormal(b), fInvYDelta));
+ }
+
+ if(rFill.areTextureCoordinatesUsed())
+ {
+ if(pViewToEye)
+ {
+ const double fEyeA(((*pViewToEye) * aStart).getZ());
+ const double fEyeB(((*pViewToEye) * aEnd).getZ());
+
+ rEntry.setInverseTextureIndex(addInverseTextureInterpolator(
+ rFill.getTextureCoordinate(a),
+ rFill.getTextureCoordinate(b),
+ fEyeA, fEyeB, fInvYDelta));
+ }
+ else
+ {
+ rEntry.setTextureIndex(addTextureInterpolator(
+ rFill.getTextureCoordinate(a),
+ rFill.getTextureCoordinate(b),
+ fInvYDelta));
+ }
+ }
+ }
+ }
+
+ void RasterConverter3D::rasterconvertB3DEdge(const B3DPolygon& rLine, sal_uInt32 nA, sal_uInt32 nB, sal_Int32 nStartLine, sal_Int32 nStopLine, sal_uInt16 nLineWidth)
+ {
+ B3DPoint aStart(rLine.getB3DPoint(nA));
+ B3DPoint aEnd(rLine.getB3DPoint(nB));
+ const double fZBufferLineAdd(0x00ff);
+ static bool bForceToPolygon(false);
+
+ if(nLineWidth > 1 || bForceToPolygon)
+ {
+ // this is not a hairline anymore, in most cases since it's an oversampled
+ // hairline to get e.g. AA for Z-Buffering. Create fill geometry.
+ if(!aStart.equal(aEnd))
+ {
+ reset();
+ maLineEntries.clear();
+
+ B2DVector aVector(aEnd.getX() - aStart.getX(), aEnd.getY() - aStart.getY());
+ aVector.normalize();
+ const B2DVector aPerpend(getPerpendicular(aVector) * ((static_cast<double>(nLineWidth) + 0.5) * 0.5));
+ const double fZStartWithAdd(aStart.getZ() + fZBufferLineAdd);
+ const double fZEndWithAdd(aEnd.getZ() + fZBufferLineAdd);
+
+ B3DPolygon aPolygon;
+ aPolygon.append(B3DPoint(aStart.getX() + aPerpend.getX(), aStart.getY() + aPerpend.getY(), fZStartWithAdd));
+ aPolygon.append(B3DPoint(aEnd.getX() + aPerpend.getX(), aEnd.getY() + aPerpend.getY(), fZEndWithAdd));
+ aPolygon.append(B3DPoint(aEnd.getX() - aPerpend.getX(), aEnd.getY() - aPerpend.getY(), fZEndWithAdd));
+ aPolygon.append(B3DPoint(aStart.getX() - aPerpend.getX(), aStart.getY() - aPerpend.getY(), fZStartWithAdd));
+ aPolygon.setClosed(true);
+
+ addArea(aPolygon, 0);
+ }
+ }
+ else
+ {
+ // it's a hairline. Use direct RasterConversionLineEntry creation to
+ // rasterconvert lines as similar to areas as possible to avoid Z-Fighting
+ sal_Int32 nYStart(fround(aStart.getY()));
+ sal_Int32 nYEnd(fround(aEnd.getY()));
+
+ if(nYStart == nYEnd)
+ {
+ // horizontal line, check X
+ const sal_Int32 nXStart(static_cast<sal_Int32>(aStart.getX()));
+ const sal_Int32 nXEnd(static_cast<sal_Int32>(aEnd.getX()));
+
+ if(nXStart != nXEnd)
+ {
+ reset();
+ maLineEntries.clear();
+
+ // horizontal line, create vertical entries. These will be sorted by
+ // X anyways, so no need to distinguish the case here
+ maLineEntries.push_back(RasterConversionLineEntry3D(
+ aStart.getX(), 0.0,
+ aStart.getZ() + fZBufferLineAdd, 0.0,
+ nYStart, 1));
+ maLineEntries.push_back(RasterConversionLineEntry3D(
+ aEnd.getX(), 0.0,
+ aEnd.getZ() + fZBufferLineAdd, 0.0,
+ nYStart, 1));
+ }
+ }
+ else
+ {
+ reset();
+ maLineEntries.clear();
+
+ if(nYStart > nYEnd)
+ {
+ ::std::swap(aStart, aEnd);
+ ::std::swap(nYStart, nYEnd);
+ }
+
+ const sal_uInt32 nYDelta(static_cast<sal_uInt32>(nYEnd - nYStart));
+ const double fInvYDelta(1.0 / nYDelta);
+
+ // non-horizontal line, create two parallell entries. These will be sorted by
+ // X anyways, so no need to distinguish the case here
+ maLineEntries.push_back(RasterConversionLineEntry3D(
+ aStart.getX(), (aEnd.getX() - aStart.getX()) * fInvYDelta,
+ aStart.getZ() + fZBufferLineAdd, (aEnd.getZ() - aStart.getZ()) * fInvYDelta,
+ nYStart, nYDelta));
+
+ RasterConversionLineEntry3D& rEntry = maLineEntries[maLineEntries.size() - 1];
+
+ // need to choose a X-Distance for the 2nd edge which guarantees all pixels
+ // of the line to be set. This is exactly the X-Increment for one Y-Step.
+ // Same is true for Z, so in both cases, add one increment to them. To also
+ // guarantee one pixel per line, add a minimum of one for X.
+ const double fDistanceX(fabs(rEntry.getX().getInc()) >= 1.0 ? rEntry.getX().getInc() : 1.0);
+
+ maLineEntries.push_back(RasterConversionLineEntry3D(
+ rEntry.getX().getVal() + fDistanceX, rEntry.getX().getInc(),
+ rEntry.getZ().getVal() + rEntry.getZ().getInc(), rEntry.getZ().getInc(),
+ nYStart, nYDelta));
+ }
+ }
+
+ if(maLineEntries.size())
+ {
+ rasterconvertB3DArea(nStartLine, nStopLine);
+ }
+ }
+
+ void RasterConverter3D::rasterconvertB3DPolyPolygon(const B3DPolyPolygon& rFill, const B3DHomMatrix* pViewToEye, sal_Int32 nStartLine, sal_Int32 nStopLine)
+ {
+ reset();
+ maLineEntries.clear();
+ addArea(rFill, pViewToEye);
+ rasterconvertB3DArea(nStartLine, nStopLine);
+ }
+
+ void RasterConverter3D::rasterconvertB3DPolygon(const B3DPolygon& rLine, sal_Int32 nStartLine, sal_Int32 nStopLine, sal_uInt16 nLineWidth)
+ {
+ const sal_uInt32 nPointCount(rLine.count());
+
+ if(nPointCount)
+ {
+ const sal_uInt32 nEdgeCount(rLine.isClosed() ? nPointCount : nPointCount - 1);
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ rasterconvertB3DEdge(rLine, a, (a + 1) % nPointCount, nStartLine, nStopLine, nLineWidth);
+ }
+ }
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/b2dclipstate.cxx b/basegfx/source/tools/b2dclipstate.cxx
new file mode 100644
index 000000000000..46cf9bbe724f
--- /dev/null
+++ b/basegfx/source/tools/b2dclipstate.cxx
@@ -0,0 +1,665 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.cxx,v $
+ * $Revision: 1.8 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tools/b2dclipstate.hxx>
+
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2dpolyrange.hxx>
+#include <basegfx/range/b2drangeclipper.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+
+namespace basegfx
+{
+namespace tools
+{
+ struct ImplB2DClipState
+ {
+ public:
+ enum Operation {UNION, INTERSECT, XOR, SUBTRACT};
+
+ ImplB2DClipState() :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(),
+ mePendingOps(UNION)
+ {}
+
+ explicit ImplB2DClipState( const B2DRange& rRange ) :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(
+ tools::createPolygonFromRect(rRange)),
+ mePendingOps(UNION)
+ {}
+
+ explicit ImplB2DClipState( const B2DPolygon& rPoly ) :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(rPoly),
+ mePendingOps(UNION)
+ {}
+
+ explicit ImplB2DClipState( const B2DPolyPolygon& rPoly ) :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(rPoly),
+ mePendingOps(UNION)
+ {}
+
+ bool isCleared() const
+ {
+ return !maClipPoly.count()
+ && !maPendingPolygons.count()
+ && !maPendingRanges.count();
+ }
+
+ void makeClear()
+ {
+ maPendingPolygons.clear();
+ maPendingRanges.clear();
+ maClipPoly.clear();
+ mePendingOps = UNION;
+ }
+
+ bool isNullClipPoly() const
+ {
+ return maClipPoly.count() == 1
+ && !maClipPoly.getB2DPolygon(0).count();
+ }
+
+ bool isNull() const
+ {
+ return !maPendingPolygons.count()
+ && !maPendingRanges.count()
+ && isNullClipPoly();
+ }
+
+ void makeNull()
+ {
+ maPendingPolygons.clear();
+ maPendingRanges.clear();
+ maClipPoly.clear();
+ maClipPoly.append(B2DPolygon());
+ mePendingOps = UNION;
+ }
+
+ bool operator==(const ImplB2DClipState& rRHS) const
+ {
+ return maPendingPolygons == rRHS.maPendingPolygons
+ && maPendingRanges == rRHS.maPendingRanges
+ && maClipPoly == rRHS.maClipPoly
+ && mePendingOps == rRHS.mePendingOps;
+ }
+
+ void addRange(const B2DRange& rRange, Operation eOp)
+ {
+ if( rRange.isEmpty() )
+ return;
+
+ commitPendingPolygons();
+ if( mePendingOps != eOp )
+ commitPendingRanges();
+
+ mePendingOps = eOp;
+ maPendingRanges.appendElement(
+ rRange,
+ ORIENTATION_POSITIVE);
+ }
+
+ void addPolygon(B2DPolygon aPoly, Operation eOp)
+ {
+ commitPendingRanges();
+ if( mePendingOps != eOp )
+ commitPendingPolygons();
+
+ mePendingOps = eOp;
+ maPendingPolygons.append(aPoly);
+ }
+
+ void addPolyPolygon(B2DPolyPolygon aPoly, Operation eOp)
+ {
+ commitPendingRanges();
+ if( mePendingOps != eOp )
+ commitPendingPolygons();
+
+ mePendingOps = eOp;
+ maPendingPolygons.append(aPoly);
+ }
+
+ void addClipState(const ImplB2DClipState& rOther, Operation eOp)
+ {
+ if( rOther.mePendingOps == mePendingOps
+ && !rOther.maClipPoly.count()
+ && !rOther.maPendingPolygons.count() )
+ {
+ maPendingRanges.appendPolyRange( rOther.maPendingRanges );
+ }
+ else
+ {
+ commitPendingRanges();
+ commitPendingPolygons();
+ rOther.commitPendingRanges();
+ rOther.commitPendingPolygons();
+
+ maPendingPolygons = rOther.maClipPoly;
+ mePendingOps = eOp;
+ }
+ }
+
+ void unionRange(const B2DRange& rRange)
+ {
+ if( isCleared() )
+ return;
+
+ addRange(rRange,UNION);
+ }
+
+ void unionPolygon(const B2DPolygon& rPoly)
+ {
+ if( isCleared() )
+ return;
+
+ addPolygon(rPoly,UNION);
+ }
+
+ void unionPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ if( isCleared() )
+ return;
+
+ addPolyPolygon(rPolyPoly,UNION);
+ }
+
+ void unionClipState(const ImplB2DClipState& rOther)
+ {
+ if( isCleared() )
+ return;
+
+ addClipState(rOther, UNION);
+ }
+
+ void intersectRange(const B2DRange& rRange)
+ {
+ if( isNull() )
+ return;
+
+ addRange(rRange,INTERSECT);
+ }
+
+ void intersectPolygon(const B2DPolygon& rPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolygon(rPoly,INTERSECT);
+ }
+
+ void intersectPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolyPolygon(rPolyPoly,INTERSECT);
+ }
+
+ void intersectClipState(const ImplB2DClipState& rOther)
+ {
+ if( isNull() )
+ return;
+
+ addClipState(rOther, INTERSECT);
+ }
+
+ void subtractRange(const B2DRange& rRange )
+ {
+ if( isNull() )
+ return;
+
+ addRange(rRange,SUBTRACT);
+ }
+
+ void subtractPolygon(const B2DPolygon& rPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolygon(rPoly,SUBTRACT);
+ }
+
+ void subtractPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolyPolygon(rPolyPoly,SUBTRACT);
+ }
+
+ void subtractClipState(const ImplB2DClipState& rOther)
+ {
+ if( isNull() )
+ return;
+
+ addClipState(rOther, SUBTRACT);
+ }
+
+ void xorRange(const B2DRange& rRange)
+ {
+ addRange(rRange,XOR);
+ }
+
+ void xorPolygon(const B2DPolygon& rPoly)
+ {
+ addPolygon(rPoly,XOR);
+ }
+
+ void xorPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ addPolyPolygon(rPolyPoly,XOR);
+ }
+
+ void xorClipState(const ImplB2DClipState& rOther)
+ {
+ addClipState(rOther, XOR);
+ }
+
+ B2DPolyPolygon getClipPoly() const
+ {
+ commitPendingRanges();
+ commitPendingPolygons();
+
+ return maClipPoly;
+ }
+
+ private:
+ void commitPendingPolygons() const
+ {
+ if( !maPendingPolygons.count() )
+ return;
+
+ // assumption: maClipPoly has kept polygons prepared for
+ // clipping; i.e. no neutral polygons & correct
+ // orientation
+ maPendingPolygons = tools::prepareForPolygonOperation(maPendingPolygons);
+ const bool bIsEmpty=isNullClipPoly();
+ const bool bIsCleared=!maClipPoly.count();
+ switch(mePendingOps)
+ {
+ case UNION:
+ OSL_ASSERT( !bIsCleared );
+
+ if( bIsEmpty )
+ maClipPoly = maPendingPolygons;
+ else
+ maClipPoly = tools::solvePolygonOperationOr(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ case INTERSECT:
+ OSL_ASSERT( !bIsEmpty );
+
+ if( bIsCleared )
+ maClipPoly = maPendingPolygons;
+ else
+ maClipPoly = tools::solvePolygonOperationAnd(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ case XOR:
+ if( bIsEmpty )
+ maClipPoly = maPendingPolygons;
+ else if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationXor(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ maPendingPolygons);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationXor(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ case SUBTRACT:
+ OSL_ASSERT( !bIsEmpty );
+
+ // first union all pending ones, subtract en bloc then
+ maPendingPolygons = solveCrossovers(maPendingPolygons);
+ maPendingPolygons = stripNeutralPolygons(maPendingPolygons);
+ maPendingPolygons = stripDispensablePolygons(maPendingPolygons, false);
+
+ if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationDiff(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ maPendingPolygons);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationDiff(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ }
+
+ maPendingPolygons.clear();
+ mePendingOps = UNION;
+ }
+
+ void commitPendingRanges() const
+ {
+ if( !maPendingRanges.count() )
+ return;
+
+ // use the specialized range clipper for the win
+ B2DPolyPolygon aCollectedRanges;
+ const bool bIsEmpty=isNullClipPoly();
+ const bool bIsCleared=!maClipPoly.count();
+ switch(mePendingOps)
+ {
+ case UNION:
+ OSL_ASSERT( !bIsCleared );
+
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ aCollectedRanges = stripDispensablePolygons(aCollectedRanges, false);
+ if( bIsEmpty )
+ maClipPoly = aCollectedRanges;
+ else
+ maClipPoly = tools::solvePolygonOperationOr(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ case INTERSECT:
+ OSL_ASSERT( !bIsEmpty );
+
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ if( maPendingRanges.count() > 1 )
+ aCollectedRanges = stripDispensablePolygons(aCollectedRanges, true);
+
+ if( bIsCleared )
+ maClipPoly = aCollectedRanges;
+ else
+ maClipPoly = tools::solvePolygonOperationAnd(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ case XOR:
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ aCollectedRanges = correctOrientations(aCollectedRanges);
+
+ if( bIsEmpty )
+ maClipPoly = aCollectedRanges;
+ else if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationXor(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ aCollectedRanges);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationXor(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ case SUBTRACT:
+ OSL_ASSERT( !bIsEmpty );
+
+ // first union all pending ranges, subtract en bloc then
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ aCollectedRanges = stripDispensablePolygons(aCollectedRanges, false);
+
+ if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationDiff(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ aCollectedRanges);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationDiff(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ }
+
+ maPendingRanges.clear();
+ mePendingOps = UNION;
+ }
+
+ mutable B2DPolyPolygon maPendingPolygons;
+ mutable B2DPolyRange maPendingRanges;
+ mutable B2DPolyPolygon maClipPoly;
+ mutable Operation mePendingOps;
+ };
+
+ B2DClipState::B2DClipState() :
+ mpImpl()
+ {}
+
+ B2DClipState::~B2DClipState()
+ {}
+
+ B2DClipState::B2DClipState( const B2DClipState& rOrig ) :
+ mpImpl(rOrig.mpImpl)
+ {}
+
+ B2DClipState::B2DClipState( const B2DRange& rRange ) :
+ mpImpl( ImplB2DClipState(rRange) )
+ {}
+
+ B2DClipState::B2DClipState( const B2DPolygon& rPoly ) :
+ mpImpl( ImplB2DClipState(rPoly) )
+ {}
+
+ B2DClipState::B2DClipState( const B2DPolyPolygon& rPolyPoly ) :
+ mpImpl( ImplB2DClipState(rPolyPoly) )
+ {}
+
+ B2DClipState& B2DClipState::operator=( const B2DClipState& rRHS )
+ {
+ mpImpl = rRHS.mpImpl;
+ return *this;
+ }
+
+ void B2DClipState::makeUnique()
+ {
+ mpImpl.make_unique();
+ }
+
+ void B2DClipState::makeNull()
+ {
+ mpImpl->makeNull();
+ }
+
+ bool B2DClipState::isNull() const
+ {
+ return mpImpl->isNull();
+ }
+
+ void B2DClipState::makeClear()
+ {
+ mpImpl->makeClear();
+ }
+
+ bool B2DClipState::isCleared() const
+ {
+ return mpImpl->isCleared();
+ }
+
+ bool B2DClipState::operator==(const B2DClipState& rRHS) const
+ {
+ if(mpImpl.same_object(rRHS.mpImpl))
+ return true;
+
+ return ((*mpImpl) == (*rRHS.mpImpl));
+ }
+
+ bool B2DClipState::operator!=(const B2DClipState& rRHS) const
+ {
+ return !(*this == rRHS);
+ }
+
+ void B2DClipState::unionRange(const B2DRange& rRange)
+ {
+ mpImpl->unionRange(rRange);
+ }
+
+ void B2DClipState::unionPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->unionPolygon(rPoly);
+ }
+
+ void B2DClipState::unionPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->unionPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::unionClipState(const B2DClipState& rState)
+ {
+ mpImpl->unionClipState(*rState.mpImpl);
+ }
+
+ void B2DClipState::intersectRange(const B2DRange& rRange)
+ {
+ mpImpl->intersectRange(rRange);
+ }
+
+ void B2DClipState::intersectPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->intersectPolygon(rPoly);
+ }
+
+ void B2DClipState::intersectPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->intersectPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::intersectClipState(const B2DClipState& rState)
+ {
+ mpImpl->intersectClipState(*rState.mpImpl);
+ }
+
+ void B2DClipState::subtractRange(const B2DRange& rRange)
+ {
+ mpImpl->subtractRange(rRange);
+ }
+
+ void B2DClipState::subtractPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->subtractPolygon(rPoly);
+ }
+
+ void B2DClipState::subtractPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->subtractPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::subtractClipState(const B2DClipState& rState)
+ {
+ mpImpl->subtractClipState(*rState.mpImpl);
+ }
+
+ void B2DClipState::xorRange(const B2DRange& rRange)
+ {
+ mpImpl->xorRange(rRange);
+ }
+
+ void B2DClipState::xorPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->xorPolygon(rPoly);
+ }
+
+ void B2DClipState::xorPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->xorPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::xorClipState(const B2DClipState& rState)
+ {
+ mpImpl->xorClipState(*rState.mpImpl);
+ }
+
+ B2DPolyPolygon B2DClipState::getClipPoly() const
+ {
+ return mpImpl->getClipPoly();
+ }
+
+} // end of namespace tools
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/canvastools.cxx b/basegfx/source/tools/canvastools.cxx
new file mode 100644
index 000000000000..907ff2c7a1ed
--- /dev/null
+++ b/basegfx/source/tools/canvastools.cxx
@@ -0,0 +1,677 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <com/sun/star/geometry/RealSize2D.hpp>
+#include <com/sun/star/geometry/RealPoint2D.hpp>
+#include <com/sun/star/geometry/RealRectangle2D.hpp>
+#include <com/sun/star/geometry/RealRectangle3D.hpp>
+#include <com/sun/star/geometry/RealBezierSegment2D.hpp>
+#include <com/sun/star/geometry/AffineMatrix2D.hpp>
+#include <com/sun/star/geometry/AffineMatrix3D.hpp>
+#include <com/sun/star/geometry/Matrix2D.hpp>
+#include <com/sun/star/geometry/IntegerSize2D.hpp>
+#include <com/sun/star/geometry/IntegerPoint2D.hpp>
+#include <com/sun/star/geometry/IntegerRectangle2D.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <com/sun/star/rendering/XGraphicDevice.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <basegfx/tools/unopolypolygon.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/range/b2irectangle.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/tools/canvastools.hxx>
+#include <limits>
+
+using namespace ::com::sun::star;
+
+namespace basegfx
+{
+
+ namespace unotools
+ {
+ namespace
+ {
+ uno::Sequence< geometry::RealBezierSegment2D > bezierSequenceFromB2DPolygon(const ::basegfx::B2DPolygon& rPoly)
+ {
+ const sal_uInt32 nPointCount(rPoly.count());
+ uno::Sequence< geometry::RealBezierSegment2D > outputSequence(nPointCount);
+ geometry::RealBezierSegment2D* pOutput = outputSequence.getArray();
+
+ // fill sequences and imply clodes polygon on this implementation layer
+ for(sal_uInt32 a(0); a < nPointCount; a++)
+ {
+ const basegfx::B2DPoint aStart(rPoly.getB2DPoint(a));
+ const basegfx::B2DPoint aControlA(rPoly.getNextControlPoint(a));
+ const basegfx::B2DPoint aControlB(rPoly.getPrevControlPoint((a + 1) % nPointCount));
+
+ pOutput[a] = geometry::RealBezierSegment2D(
+ aStart.getX(), aStart.getY(),
+ aControlA.getX(), aControlA.getY(),
+ aControlB.getX(), aControlB.getY());
+ }
+
+ return outputSequence;
+ }
+
+ uno::Sequence< geometry::RealPoint2D > pointSequenceFromB2DPolygon( const ::basegfx::B2DPolygon& rPoly )
+ {
+ const sal_uInt32 nNumPoints( rPoly.count() );
+
+ uno::Sequence< geometry::RealPoint2D > outputSequence( nNumPoints );
+ geometry::RealPoint2D* pOutput = outputSequence.getArray();
+
+ // fill sequence from polygon
+ sal_uInt32 i;
+ for( i=0; i<nNumPoints; ++i )
+ {
+ const ::basegfx::B2DPoint aPoint( rPoly.getB2DPoint(i) );
+
+ pOutput[i] = geometry::RealPoint2D( aPoint.getX(),
+ aPoint.getY() );
+ }
+
+ return outputSequence;
+ }
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ uno::Sequence< uno::Sequence< geometry::RealBezierSegment2D > > bezierSequenceSequenceFromB2DPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly )
+ {
+ const sal_uInt32 nNumPolies( rPolyPoly.count() );
+ sal_uInt32 i;
+
+ uno::Sequence< uno::Sequence< geometry::RealBezierSegment2D > > outputSequence( nNumPolies );
+ uno::Sequence< geometry::RealBezierSegment2D >* pOutput = outputSequence.getArray();
+
+ for( i=0; i<nNumPolies; ++i )
+ {
+ pOutput[i] = bezierSequenceFromB2DPolygon( rPolyPoly.getB2DPolygon(i) );
+ }
+
+ return outputSequence;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ uno::Sequence< uno::Sequence< geometry::RealPoint2D > > pointSequenceSequenceFromB2DPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly )
+ {
+ const sal_uInt32 nNumPolies( rPolyPoly.count() );
+ sal_uInt32 i;
+
+ uno::Sequence< uno::Sequence< geometry::RealPoint2D > > outputSequence( nNumPolies );
+ uno::Sequence< geometry::RealPoint2D >* pOutput = outputSequence.getArray();
+
+ for( i=0; i<nNumPolies; ++i )
+ {
+ pOutput[i] = pointSequenceFromB2DPolygon( rPolyPoly.getB2DPolygon(i) );
+ }
+
+ return outputSequence;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ uno::Reference< rendering::XPolyPolygon2D > xPolyPolygonFromB2DPolygon( const uno::Reference< rendering::XGraphicDevice >& xGraphicDevice,
+ const ::basegfx::B2DPolygon& rPoly )
+ {
+ uno::Reference< rendering::XPolyPolygon2D > xRes;
+
+ if( !xGraphicDevice.is() )
+ return xRes;
+
+ if( rPoly.areControlPointsUsed() )
+ {
+ uno::Sequence< uno::Sequence< geometry::RealBezierSegment2D > > outputSequence( 1 );
+ outputSequence[0] = bezierSequenceFromB2DPolygon( rPoly );
+
+ xRes.set( xGraphicDevice->createCompatibleBezierPolyPolygon( outputSequence ),
+ uno::UNO_QUERY );
+ }
+ else
+ {
+ uno::Sequence< uno::Sequence< geometry::RealPoint2D > > outputSequence( 1 );
+ outputSequence[0] = pointSequenceFromB2DPolygon( rPoly );
+
+ xRes.set( xGraphicDevice->createCompatibleLinePolyPolygon( outputSequence ),
+ uno::UNO_QUERY );
+ }
+
+ if( xRes.is() && rPoly.isClosed() )
+ xRes->setClosed( 0, sal_True );
+
+ return xRes;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ uno::Reference< rendering::XPolyPolygon2D > xPolyPolygonFromB2DPolyPolygon( const uno::Reference< rendering::XGraphicDevice >& xGraphicDevice,
+ const ::basegfx::B2DPolyPolygon& rPolyPoly )
+ {
+ uno::Reference< rendering::XPolyPolygon2D > xRes;
+
+ if( !xGraphicDevice.is() )
+ return xRes;
+
+ const sal_uInt32 nNumPolies( rPolyPoly.count() );
+ sal_uInt32 i;
+
+ if( rPolyPoly.areControlPointsUsed() )
+ {
+ xRes.set( xGraphicDevice->createCompatibleBezierPolyPolygon(
+ bezierSequenceSequenceFromB2DPolyPolygon( rPolyPoly ) ),
+ uno::UNO_QUERY );
+ }
+ else
+ {
+ xRes.set( xGraphicDevice->createCompatibleLinePolyPolygon(
+ pointSequenceSequenceFromB2DPolyPolygon( rPolyPoly ) ),
+ uno::UNO_QUERY );
+ }
+
+ for( i=0; i<nNumPolies; ++i )
+ {
+ xRes->setClosed( i, rPolyPoly.getB2DPolygon(i).isClosed() );
+ }
+
+ return xRes;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ ::basegfx::B2DPolygon polygonFromPoint2DSequence( const uno::Sequence< geometry::RealPoint2D >& points )
+ {
+ const sal_Int32 nCurrSize( points.getLength() );
+
+ ::basegfx::B2DPolygon aPoly;
+
+ for( sal_Int32 nCurrPoint=0; nCurrPoint<nCurrSize; ++nCurrPoint )
+ aPoly.append( b2DPointFromRealPoint2D( points[nCurrPoint] ) );
+
+ return aPoly;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ ::basegfx::B2DPolyPolygon polyPolygonFromPoint2DSequenceSequence( const uno::Sequence< uno::Sequence< geometry::RealPoint2D > >& points )
+ {
+ ::basegfx::B2DPolyPolygon aRes;
+
+ for( sal_Int32 nCurrPoly=0; nCurrPoly<points.getLength(); ++nCurrPoly )
+ {
+ aRes.append( polygonFromPoint2DSequence( points[nCurrPoly] ) );
+ }
+
+ return aRes;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ ::basegfx::B2DPolygon polygonFromBezier2DSequence( const uno::Sequence< geometry::RealBezierSegment2D >& curves )
+ {
+ const sal_Int32 nSize(curves.getLength());
+ basegfx::B2DPolygon aRetval;
+
+ if(nSize)
+ {
+ // prepare start with providing a start point. Use the first point from
+ // the sequence for this
+ const geometry::RealBezierSegment2D& rFirstSegment(curves[0]); // #i79917# first segment, not last
+ aRetval.append(basegfx::B2DPoint(rFirstSegment.Px, rFirstSegment.Py));
+
+ for(sal_Int32 a(0); a < nSize; a++)
+ {
+ const geometry::RealBezierSegment2D& rCurrSegment(curves[a]);
+ const geometry::RealBezierSegment2D& rNextSegment(curves[(a + 1) % nSize]);
+
+ // append curved edge with the control points and the next point
+ aRetval.appendBezierSegment(
+ basegfx::B2DPoint(rCurrSegment.C1x, rCurrSegment.C1y),
+ basegfx::B2DPoint(rCurrSegment.C2x, rCurrSegment.C2y), // #i79917# Argh! An x for an y!!
+ basegfx::B2DPoint(rNextSegment.Px, rNextSegment.Py));
+ }
+
+ // rescue the control point and remove the now double-added point
+ aRetval.setPrevControlPoint(0, aRetval.getPrevControlPoint(aRetval.count() - 1));
+ aRetval.remove(aRetval.count() - 1);
+ }
+
+ return aRetval;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ ::basegfx::B2DPolyPolygon polyPolygonFromBezier2DSequenceSequence( const uno::Sequence< uno::Sequence< geometry::RealBezierSegment2D > >& curves )
+ {
+ ::basegfx::B2DPolyPolygon aRes;
+
+ for( sal_Int32 nCurrPoly=0; nCurrPoly<curves.getLength(); ++nCurrPoly )
+ {
+ aRes.append( polygonFromBezier2DSequence( curves[nCurrPoly] ) );
+ }
+
+ return aRes;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ ::basegfx::B2DPolyPolygon b2DPolyPolygonFromXPolyPolygon2D( const uno::Reference< rendering::XPolyPolygon2D >& xPoly )
+ {
+ ::basegfx::unotools::UnoPolyPolygon* pPolyImpl =
+ dynamic_cast< ::basegfx::unotools::UnoPolyPolygon* >( xPoly.get() );
+
+ if( pPolyImpl )
+ {
+ return pPolyImpl->getPolyPolygon();
+ }
+ else
+ {
+ // not a known implementation object - try data source
+ // interfaces
+ const sal_Int32 nPolys( xPoly->getNumberOfPolygons() );
+
+ uno::Reference< rendering::XBezierPolyPolygon2D > xBezierPoly(
+ xPoly,
+ uno::UNO_QUERY );
+
+ if( xBezierPoly.is() )
+ {
+ return ::basegfx::unotools::polyPolygonFromBezier2DSequenceSequence(
+ xBezierPoly->getBezierSegments( 0,
+ nPolys,
+ 0,
+ -1 ) );
+ }
+ else
+ {
+ uno::Reference< rendering::XLinePolyPolygon2D > xLinePoly(
+ xPoly,
+ uno::UNO_QUERY );
+
+ // no implementation class and no data provider
+ // found - contract violation.
+ if( !xLinePoly.is() )
+ {
+ throw lang::IllegalArgumentException(
+ ::rtl::OUString::createFromAscii(
+ "basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(): Invalid input"
+ "poly-polygon, cannot retrieve vertex data"),
+ uno::Reference< uno::XInterface >(),
+ 0 );
+ }
+
+ return ::basegfx::unotools::polyPolygonFromPoint2DSequenceSequence(
+ xLinePoly->getPoints( 0,
+ nPolys,
+ 0,
+ -1 ));
+ }
+ }
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ ::basegfx::B2DHomMatrix& homMatrixFromAffineMatrix( ::basegfx::B2DHomMatrix& output,
+ const geometry::AffineMatrix2D& input )
+ {
+ // ensure last row is [0,0,1] (and optimized away)
+ output.identity();
+
+ output.set(0,0, input.m00);
+ output.set(0,1, input.m01);
+ output.set(0,2, input.m02);
+ output.set(1,0, input.m10);
+ output.set(1,1, input.m11);
+ output.set(1,2, input.m12);
+
+ return output;
+ }
+
+ ::basegfx::B2DHomMatrix homMatrixFromAffineMatrix( const geometry::AffineMatrix2D& input )
+ {
+ ::basegfx::B2DHomMatrix output;
+
+ output.set(0,0, input.m00);
+ output.set(0,1, input.m01);
+ output.set(0,2, input.m02);
+ output.set(1,0, input.m10);
+ output.set(1,1, input.m11);
+ output.set(1,2, input.m12);
+
+ return output;
+ }
+
+ ::basegfx::B3DHomMatrix homMatrixFromAffineMatrix3D( const ::com::sun::star::geometry::AffineMatrix3D& input )
+ {
+ ::basegfx::B3DHomMatrix output;
+
+ output.set(0,0, input.m00);
+ output.set(0,1, input.m01);
+ output.set(0,2, input.m02);
+ output.set(0,3, input.m03);
+
+ output.set(1,0, input.m10);
+ output.set(1,1, input.m11);
+ output.set(1,2, input.m12);
+ output.set(1,3, input.m13);
+
+ output.set(2,0, input.m20);
+ output.set(2,1, input.m21);
+ output.set(2,2, input.m22);
+ output.set(2,3, input.m23);
+
+ return output;
+ }
+
+ geometry::AffineMatrix2D& affineMatrixFromHomMatrix( geometry::AffineMatrix2D& output,
+ const ::basegfx::B2DHomMatrix& input)
+ {
+ output.m00 = input.get(0,0);
+ output.m01 = input.get(0,1);
+ output.m02 = input.get(0,2);
+ output.m10 = input.get(1,0);
+ output.m11 = input.get(1,1);
+ output.m12 = input.get(1,2);
+
+ return output;
+ }
+
+ geometry::AffineMatrix3D& affineMatrixFromHomMatrix3D(
+ geometry::AffineMatrix3D& output,
+ const ::basegfx::B3DHomMatrix& input)
+ {
+ output.m00 = input.get(0,0);
+ output.m01 = input.get(0,1);
+ output.m02 = input.get(0,2);
+ output.m03 = input.get(0,3);
+
+ output.m10 = input.get(1,0);
+ output.m11 = input.get(1,1);
+ output.m12 = input.get(1,2);
+ output.m13 = input.get(1,3);
+
+ output.m20 = input.get(2,0);
+ output.m21 = input.get(2,1);
+ output.m22 = input.get(2,2);
+ output.m23 = input.get(2,3);
+
+ return output;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ ::basegfx::B2DHomMatrix& homMatrixFromMatrix( ::basegfx::B2DHomMatrix& output,
+ const geometry::Matrix2D& input )
+ {
+ // ensure last row is [0,0,1] (and optimized away)
+ output.identity();
+
+ output.set(0,0, input.m00);
+ output.set(0,1, input.m01);
+ output.set(1,0, input.m10);
+ output.set(1,1, input.m11);
+
+ return output;
+ }
+
+ //---------------------------------------------------------------------------------------
+
+ geometry::RealSize2D size2DFromB2DSize( const ::basegfx::B2DVector& rVec )
+ {
+ return geometry::RealSize2D( rVec.getX(),
+ rVec.getY() );
+ }
+
+ geometry::RealPoint2D point2DFromB2DPoint( const ::basegfx::B2DPoint& rPoint )
+ {
+ return geometry::RealPoint2D( rPoint.getX(),
+ rPoint.getY() );
+ }
+
+ geometry::RealRectangle2D rectangle2DFromB2DRectangle( const ::basegfx::B2DRange& rRect )
+ {
+ return geometry::RealRectangle2D( rRect.getMinX(),
+ rRect.getMinY(),
+ rRect.getMaxX(),
+ rRect.getMaxY() );
+ }
+
+ geometry::RealRectangle3D rectangle3DFromB3DRectangle( const ::basegfx::B3DRange& rRect )
+ {
+ return geometry::RealRectangle3D( rRect.getMinX(),
+ rRect.getMinY(),
+ rRect.getMinZ(),
+ rRect.getMaxX(),
+ rRect.getMaxY(),
+ rRect.getMaxZ());
+ }
+
+ ::basegfx::B2DVector b2DSizeFromRealSize2D( const geometry::RealSize2D& rSize )
+ {
+ return ::basegfx::B2DVector( rSize.Width,
+ rSize.Height );
+ }
+
+ ::basegfx::B2DPoint b2DPointFromRealPoint2D( const geometry::RealPoint2D& rPoint )
+ {
+ return ::basegfx::B2DPoint( rPoint.X,
+ rPoint.Y );
+ }
+
+ ::basegfx::B2DRange b2DRectangleFromRealRectangle2D( const geometry::RealRectangle2D& rRect )
+ {
+ return ::basegfx::B2DRange( rRect.X1,
+ rRect.Y1,
+ rRect.X2,
+ rRect.Y2 );
+ }
+
+ ::basegfx::B3DRange b3DRectangleFromRealRectangle3D( const geometry::RealRectangle3D& rRect )
+ {
+ return ::basegfx::B3DRange( rRect.X1,
+ rRect.Y1,
+ rRect.Z1,
+ rRect.X2,
+ rRect.Y2,
+ rRect.Z2);
+ }
+
+ geometry::IntegerSize2D integerSize2DFromB2ISize( const ::basegfx::B2IVector& rSize )
+ {
+ return geometry::IntegerSize2D( rSize.getX(),
+ rSize.getY() );
+ }
+
+ geometry::IntegerPoint2D integerPoint2DFromB2IPoint( const ::basegfx::B2IPoint& rPoint )
+ {
+ return geometry::IntegerPoint2D( rPoint.getX(),
+ rPoint.getY() );
+ }
+
+ geometry::IntegerRectangle2D integerRectangle2DFromB2IRectangle( const ::basegfx::B2IRange& rRectangle )
+ {
+ return geometry::IntegerRectangle2D( rRectangle.getMinX(), rRectangle.getMinY(),
+ rRectangle.getMaxX(), rRectangle.getMaxY() );
+ }
+
+ ::basegfx::B2IVector b2ISizeFromIntegerSize2D( const geometry::IntegerSize2D& rSize )
+ {
+ return ::basegfx::B2IVector( rSize.Width,
+ rSize.Height );
+ }
+
+ ::basegfx::B2IPoint b2IPointFromIntegerPoint2D( const geometry::IntegerPoint2D& rPoint )
+ {
+ return ::basegfx::B2IPoint( rPoint.X,
+ rPoint.Y );
+ }
+
+ ::basegfx::B2IRange b2IRectangleFromIntegerRectangle2D( const geometry::IntegerRectangle2D& rRectangle )
+ {
+ return ::basegfx::B2IRange( rRectangle.X1, rRectangle.Y1,
+ rRectangle.X2, rRectangle.Y2 );
+ }
+
+ awt::Size awtSizeFromB2ISize( const ::basegfx::B2IVector& rVec )
+ {
+ return awt::Size( rVec.getX(),
+ rVec.getY() );
+ }
+
+ awt::Point awtPointFromB2IPoint( const ::basegfx::B2IPoint& rPoint )
+ {
+ return awt::Point( rPoint.getX(),
+ rPoint.getY() );
+ }
+
+ awt::Rectangle awtRectangleFromB2IRectangle( const ::basegfx::B2IRange& rRect )
+ {
+ OSL_ENSURE( rRect.getWidth() < ::std::numeric_limits< sal_Int32 >::max() &&
+ rRect.getWidth() > ::std::numeric_limits< sal_Int32 >::min(),
+ "awtRectangleFromB2IRectangle(): width overflow" );
+ OSL_ENSURE( rRect.getHeight() < ::std::numeric_limits< sal_Int32 >::max() &&
+ rRect.getHeight() > ::std::numeric_limits< sal_Int32 >::min(),
+ "awtRectangleFromB2IRectangle(): height overflow" );
+
+ return awt::Rectangle( rRect.getMinX(),
+ rRect.getMinY(),
+ static_cast< sal_Int32 >(rRect.getWidth()),
+ static_cast< sal_Int32 >(rRect.getHeight()) );
+ }
+
+ ::basegfx::B2IVector b2ISizeFromAwtSize( const awt::Size& rSize )
+ {
+ return ::basegfx::B2IVector( rSize.Width,
+ rSize.Height );
+ }
+
+ ::basegfx::B2IPoint b2IPointFromAwtPoint( const awt::Point& rPoint )
+ {
+ return ::basegfx::B2IPoint( rPoint.X,
+ rPoint.Y );
+ }
+
+ ::basegfx::B2IRange b2IRectangleFromAwtRectangle( const awt::Rectangle& rRect )
+ {
+ return ::basegfx::B2IRange( rRect.X,
+ rRect.Y,
+ rRect.X + rRect.Width,
+ rRect.Y + rRect.Height );
+ }
+
+ ::basegfx::B2IRange b2ISurroundingRangeFromB2DRange( const ::basegfx::B2DRange& rRange )
+ {
+ return ::basegfx::B2IRange( static_cast<sal_Int32>( floor(rRange.getMinX()) ),
+ static_cast<sal_Int32>( floor(rRange.getMinY()) ),
+ static_cast<sal_Int32>( ceil(rRange.getMaxX()) ),
+ static_cast<sal_Int32>( ceil(rRange.getMaxY()) ) );
+ }
+
+ ::basegfx::B2DRange b2DSurroundingIntegerRangeFromB2DRange( const ::basegfx::B2DRange& rRange )
+ {
+ return ::basegfx::B2DRange( floor(rRange.getMinX()),
+ floor(rRange.getMinY()),
+ ceil(rRange.getMaxX()),
+ ceil(rRange.getMaxY()) );
+ }
+
+ // Geometry comparisons
+ // ===================================================================
+
+ bool RealSize2DAreEqual( const ::com::sun::star::geometry::RealSize2D& rA, const ::com::sun::star::geometry::RealSize2D& rB )
+ {
+ return (rA.Width == rB.Width && rA.Height == rB.Height);
+ }
+
+ bool RealPoint2DAreEqual( const ::com::sun::star::geometry::RealPoint2D& rA, const ::com::sun::star::geometry::RealPoint2D& rB )
+ {
+ return (rA.X == rB.X && rA.Y == rB.Y);
+ }
+
+ bool RealRectangle2DAreEqual( const ::com::sun::star::geometry::RealRectangle2D& rA, const ::com::sun::star::geometry::RealRectangle2D& rB )
+ {
+ return (rA.X1 == rB.X1 && rA.Y1 == rB.Y1 && rA.X2 == rB.X2 && rA.Y2 == rB.Y2);
+ }
+
+ bool RealRectangle3DAreEqual( const ::com::sun::star::geometry::RealRectangle3D& rA, const ::com::sun::star::geometry::RealRectangle3D& rB )
+ {
+ return (rA.X1 == rB.X1 && rA.Y1 == rB.Y1 && rA.Z1 == rB.Z1 && rA.X2 == rB.X2 && rA.Y2 == rB.Y2 && rA.Z2 == rB.Z2);
+ }
+
+ bool AffineMatrix2DAreEqual( const ::com::sun::star::geometry::AffineMatrix2D& rA, const ::com::sun::star::geometry::AffineMatrix2D& rB )
+ {
+ return (rA.m00 == rB.m00 && rA.m01 == rB.m01 && rA.m02 == rB.m02 && rA.m10 == rB.m10 && rA.m11 == rB.m11 && rA.m12 == rB.m12);
+ }
+
+ bool IntegerSize2DAreEqual( const ::com::sun::star::geometry::IntegerSize2D& rA, const ::com::sun::star::geometry::IntegerSize2D& rB )
+ {
+ return (rA.Width == rB.Width && rA.Height == rB.Height);
+ }
+
+ bool IntegerPoint2DAreEqual( const ::com::sun::star::geometry::IntegerPoint2D& rA, const ::com::sun::star::geometry::IntegerPoint2D& rB )
+ {
+ return (rA.X == rB.X && rA.Y == rB.Y);
+ }
+
+ bool IntegerRectangle2DAreEqual( const ::com::sun::star::geometry::IntegerRectangle2D& rA, const ::com::sun::star::geometry::IntegerRectangle2D& rB )
+ {
+ return (rA.X1 == rB.X1 && rA.Y1 == rB.Y1 && rA.X2 == rB.X2 && rA.Y2 == rB.Y2);
+ }
+
+ bool awtSizeAreEqual( const ::com::sun::star::awt::Size& rA, const ::com::sun::star::awt::Size& rB )
+ {
+ return (rA.Width == rB.Width && rA.Height == rB.Height);
+ }
+
+ bool awtPointAreEqual( const ::com::sun::star::awt::Point& rA, const ::com::sun::star::awt::Point& rB )
+ {
+ return (rA.X == rB.X && rA.Y == rB.Y);
+ }
+
+ bool awtRectangleAreEqual( const ::com::sun::star::awt::Rectangle& rA, const ::com::sun::star::awt::Rectangle& rB )
+ {
+ return (rA.X == rB.X && rA.Y == rB.Y && rA.Width == rB.Width && rA.Height == rB.Height);
+ }
+ } // namespace bgfxtools
+
+} // namespace canvas
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/debugplotter.cxx b/basegfx/source/tools/debugplotter.cxx
new file mode 100644
index 000000000000..9eb76e2870d9
--- /dev/null
+++ b/basegfx/source/tools/debugplotter.cxx
@@ -0,0 +1,418 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <osl/diagnose.h>
+
+#include <basegfx/curve/b2dcubicbezier.hxx>
+
+#include <basegfx/tools/debugplotter.hxx>
+#include <boost/bind.hpp>
+
+#include <ostream>
+
+
+namespace basegfx
+{
+ namespace
+ {
+ void outputHeader( const ::rtl::OString& rTitle,
+ ::std::ostream* pStm )
+ {
+ // output gnuplot setup
+ if( pStm )
+ {
+ *pStm << "#!/usr/bin/gnuplot -persist" << ::std::endl <<
+ "#" << ::std::endl <<
+ "# automatically generated by basegfx, don't change!" << ::std::endl <<
+ "#" << ::std::endl <<
+ "# --- " << (const sal_Char*)rTitle << " ---" << ::std::endl <<
+ "#" << ::std::endl <<
+ "set parametric" << ::std::endl <<
+ "# set terminal postscript eps enhanced color " << ::std::endl <<
+ "# set output \"plot.eps\"" << ::std::endl <<
+ // This function plots a cubic bezier curve. P,q,r,s
+ // are the control point elements of the corresponding
+ // output coordinate component (i.e. x components for
+ // the x plot, and y components for the y plot)
+ "cubicBezier(p,q,r,s,t) = p*(1-t)**3+q*3*(1-t)**2*t+r*3*(1-t)*t**2+s*t**3" << ::std::endl <<
+ // This function plots the derivative of a cubic
+ // bezier curve. P,q,r,s are the control point
+ // components of the _original_ curve
+ "cubicBezDerivative(p,q,r,s,t) = 3*(q-p)*(1-t)**2+6*(r-q)*(1-t)*t+3*(s-r)*t**2" << ::std::endl <<
+ // Plot a line's component of a line between a and b
+ // (where a and b should be the corresponding
+ // components of the line's start and end point,
+ // respectively)
+ "line(p,q,r) = p*(1-t)+q*t" << ::std::endl <<
+ // Plot a line's x component of a line in implicit
+ // form ax + by + c = 0
+ "implicitLineX(a,b,c,t) = a*-c + t*-b" << ::std::endl <<
+ // Plot a line's y component of a line in implicit
+ // form ax + by + c = 0
+ "implicitLineY(a,b,c,t) = b*-c + t*a" << ::std::endl <<
+ "pointmarkx(c,t) = c-0.03*t" << ::std::endl << // hack for displaying single points in parametric form
+ "pointmarky(c,t) = c+0.03*t" << ::std::endl << // hack for displaying single points in parametric form
+ "# end of setup" << ::std::endl;
+ }
+ else
+ {
+ OSL_TRACE( "#!/usr/bin/gnuplot -persist\n",
+ "#\n",
+ "# automatically generated by basegfx, don't change!\n",
+ "#\n",
+ "# --- %s ---\n",
+ "#\n",
+ "set parametric\n",
+ // This function plots a cubic bezier curve. P,q,r,s
+ // are the control point elements of the corresponding
+ // output coordinate component (i.e. x components for
+ // the x plot, and y components for the y plot)
+ "cubicBezier(p,q,r,s,t) = p*(1-t)**3+q*3*(1-t)**2*t+r*3*(1-t)*t**2+s*t**3\n",
+ // This function plots the derivative of a cubic
+ // bezier curve. P,q,r,s are the control point
+ // components of the _original_ curve
+ "cubicBezDerivative(p,q,r,s,t) = 3*(q-p)*(1-t)**2+6*(r-q)*(1-t)*t+3*(s-r)*t**2\n",
+ // Plot a line's component of a line between a and b
+ // (where a and b should be the corresponding
+ // components of the line's start and end point,
+ // respectively)
+ "line(p,q,r) = p*(1-t)+q*t\n",
+ // Plot a line's x component of a line in implicit
+ // form ax + by + c = 0
+ "implicitLineX(a,b,c,t) = a*-c + t*-b\n",
+ // Plot a line's y component of a line in implicit
+ // form ax + by + c = 0
+ "implicitLineY(a,b,c,t) = b*-c + t*a\n",
+ "pointmarkx(c,t) = c-0.03*t\n", // hack for displaying single points in parametric form
+ "pointmarky(c,t) = c+0.03*t\n", // hack for displaying single points in parametric form
+ "# end of setup\n",
+ (const sal_Char*)rTitle );
+ }
+ }
+
+ class Writer
+ {
+ public:
+ Writer( ::std::ostream* pStm ) :
+ mpStream( pStm )
+ {
+ }
+
+ void outputPoint( const ::std::pair< B2DPoint, ::rtl::OString >& rElem )
+ {
+ if( mpStream )
+ *mpStream << " " << rElem.first.getX() << "\t" << rElem.first.getY() << ::std::endl;
+ else
+ OSL_TRACE( " %f\t%f\n", rElem.first.getX(), rElem.first.getY() );
+ }
+
+ void outputVector( const ::std::pair< B2DVector, ::rtl::OString >& rElem )
+ {
+ if( mpStream )
+ *mpStream << " " << rElem.first.getX() << "\t" << rElem.first.getY() << ::std::endl << ::std::endl;
+ else
+ OSL_TRACE( " %f\t%f\n\n", rElem.first.getX(), rElem.first.getY() );
+ }
+
+ void outputRect( const ::std::pair< B2DRange, ::rtl::OString >& rElem )
+ {
+ const double nX0( rElem.first.getMinX() );
+ const double nY0( rElem.first.getMinY() );
+ const double nX1( rElem.first.getMaxX() );
+ const double nY1( rElem.first.getMaxY() );
+
+ if( mpStream )
+ *mpStream << " "
+ << nX0 << "\t" << nY0 << "\t"
+ << nX1 << "\t" << nY0 << "\t"
+ << nX1 << "\t" << nY1 << "\t"
+ << nX0 << "\t" << nY1 << "\t"
+ << nX0 << "\t" << nY0 << ::std::endl << ::std::endl;
+
+ else
+ OSL_TRACE( " %f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\n\n",
+ nX0, nY0,
+ nX1, nY0,
+ nX1, nY1,
+ nX0, nY1,
+ nX0, nY0 );
+ }
+
+ private:
+ ::std::ostream* mpStream;
+ };
+ }
+
+ DebugPlotter::DebugPlotter( const sal_Char* pTitle ) :
+ maTitle( pTitle ),
+ maPoints(),
+ maVectors(),
+ maRanges(),
+ maPolygons(),
+ mpOutputStream(NULL)
+ {
+ }
+
+ DebugPlotter::DebugPlotter( const sal_Char* pTitle,
+ ::std::ostream& rOutputStream ) :
+ maTitle( pTitle ),
+ maPoints(),
+ maVectors(),
+ maRanges(),
+ maPolygons(),
+ mpOutputStream(&rOutputStream)
+ {
+ }
+
+ DebugPlotter::~DebugPlotter()
+ {
+ const bool bHavePoints( !maPoints.empty() );
+ const bool bHaveVectors( !maVectors.empty() );
+ const bool bHaveRanges( !maRanges.empty() );
+ const bool bHavePolygons( !maPolygons.empty() );
+
+ if( bHavePoints ||
+ bHaveVectors ||
+ bHaveRanges ||
+ bHavePolygons )
+ {
+ outputHeader( maTitle, mpOutputStream );
+
+ print( "\n\n# parametric primitive output\n"
+ "plot [t=0:1] \\\n" );
+
+ // output plot declarations for used entities
+ bool bNeedColon( false );
+ if( bHavePoints )
+ {
+ print( " '-' using ($1):($2) title \"Points\" with points" );
+ bNeedColon = true;
+ }
+ if( bHaveVectors )
+ {
+ if( bNeedColon )
+ print( ", \\\n" );
+
+ print( " '-' using ($1):($2) title \"Vectors\" with lp" );
+ bNeedColon = true;
+ }
+ if( bHaveRanges )
+ {
+ if( bNeedColon )
+ print( ", \\\n" );
+
+ print( " '-' using ($1):($2) title \"Ranges\" with lines" );
+ bNeedColon = true;
+ }
+ if( bHavePolygons )
+ {
+ const ::std::size_t nSize( maPolygons.size() );
+ for( ::std::size_t i=0; i<nSize; ++i )
+ {
+ if( maPolygons.at(i).first.areControlPointsUsed() )
+ {
+ const B2DPolygon& rCurrPoly( maPolygons.at(i).first );
+
+ const sal_uInt32 nCount( rCurrPoly.count() );
+ for( sal_uInt32 k=0; k<nCount; ++k )
+ {
+ if( bNeedColon )
+ print( ", \\\n" );
+
+ const B2DPoint& rP0( rCurrPoly.getB2DPoint(k) );
+ const B2DPoint& rP1( rCurrPoly.getNextControlPoint(k) );
+ const B2DPoint& rP2( rCurrPoly.getPrevControlPoint((k + 1) % nCount) );
+ const B2DPoint& rP3( k+1<nCount ? rCurrPoly.getB2DPoint(k+1) : rCurrPoly.getB2DPoint(k) );
+
+ if( mpOutputStream )
+ *mpOutputStream << " cubicBezier("
+ << rP0.getX() << ","
+ << rP1.getX() << ","
+ << rP2.getX() << ","
+ << rP3.getX() << ",t), \\\n cubicBezier("
+ << rP0.getY() << ","
+ << rP1.getY() << ","
+ << rP2.getY() << ","
+ << rP3.getY() << ",t)";
+ else
+ OSL_TRACE( " cubicBezier(%f,%f,%f,%f,t), \\\n"
+ " cubicBezier(%f,%f,%f,%f,t)",
+ rP0.getX(),
+ rP1.getX(),
+ rP2.getX(),
+ rP3.getX(),
+ rP0.getY(),
+ rP1.getY(),
+ rP2.getY(),
+ rP3.getY() );
+
+ bNeedColon = true;
+ }
+ }
+ else
+ {
+ if( bNeedColon )
+ print( ", \\\n" );
+
+ if( mpOutputStream )
+ *mpOutputStream << " '-' using ($1):($2) title \"Polygon "
+ << (const sal_Char*)maPolygons.at(i).second << "\" with lp";
+ else
+ OSL_TRACE( " '-' using ($1):($2) title \"Polygon %s\" with lp",
+ (const sal_Char*)maPolygons.at(i).second );
+
+ bNeedColon = true;
+ }
+ }
+ }
+
+ if( bHavePoints )
+ {
+ Writer aWriter( mpOutputStream );
+
+ ::std::for_each( maPoints.begin(),
+ maPoints.end(),
+ ::boost::bind( &Writer::outputPoint,
+ ::boost::ref( aWriter ),
+ _1 ) );
+ print( "e\n" );
+ }
+
+ if( bHaveVectors )
+ {
+ Writer aWriter( mpOutputStream );
+
+ ::std::for_each( maVectors.begin(),
+ maVectors.end(),
+ ::boost::bind( &Writer::outputVector,
+ ::boost::ref( aWriter ),
+ _1 ) );
+ print( "e\n" );
+ }
+
+ if( bHaveRanges )
+ {
+ Writer aWriter( mpOutputStream );
+
+ ::std::for_each( maRanges.begin(),
+ maRanges.end(),
+ ::boost::bind( &Writer::outputRect,
+ ::boost::ref( aWriter ),
+ _1 ) );
+ print( "e\n" );
+ }
+
+ if( bHavePolygons )
+ {
+ const ::std::size_t nSize( maPolygons.size() );
+ for( ::std::size_t i=0; i<nSize; ++i )
+ {
+ if( !maPolygons.at(i).first.areControlPointsUsed() )
+ {
+ const B2DPolygon& rCurrPoly( maPolygons.at(i).first );
+
+ const sal_uInt32 nCount( rCurrPoly.count() );
+ for( sal_uInt32 k=0; k<nCount; ++k )
+ {
+ const B2DPoint& rP( rCurrPoly.getB2DPoint(k) );
+
+ if( mpOutputStream )
+ *mpOutputStream << " " << rP.getX() << "," << rP.getY();
+ else
+ OSL_TRACE( " %f,%f",
+ rP.getX(),
+ rP.getX() );
+ }
+
+ print( "\ne\n" );
+ }
+ }
+ }
+ }
+ }
+
+ void DebugPlotter::plot( const B2DPoint& rPoint,
+ const sal_Char* pTitle )
+ {
+ maPoints.push_back( ::std::make_pair( rPoint,
+ ::rtl::OString( pTitle ) ) );
+ }
+
+ void DebugPlotter::plot( const B2DVector& rVec,
+ const sal_Char* pTitle )
+ {
+ maVectors.push_back( ::std::make_pair( rVec,
+ ::rtl::OString( pTitle ) ) );
+ }
+
+ void DebugPlotter::plot( const B2DCubicBezier& rBezier,
+ const sal_Char* pTitle )
+ {
+ B2DPolygon aPoly;
+ aPoly.append(rBezier.getStartPoint());
+ aPoly.appendBezierSegment(rBezier.getControlPointA(), rBezier.getControlPointB(), rBezier.getEndPoint());
+ maPolygons.push_back( ::std::make_pair( aPoly,
+ ::rtl::OString( pTitle ) ) );
+ }
+
+ void DebugPlotter::plot( const B2DRange& rRange,
+ const sal_Char* pTitle )
+ {
+ maRanges.push_back( ::std::make_pair( rRange,
+ ::rtl::OString( pTitle ) ) );
+ }
+
+ void DebugPlotter::plot( const B2DPolygon& rPoly,
+ const sal_Char* pTitle )
+ {
+ maPolygons.push_back( ::std::make_pair( rPoly,
+ ::rtl::OString( pTitle ) ) );
+ }
+
+ void DebugPlotter::plot( const B2DPolyPolygon& rPoly,
+ const sal_Char* pTitle )
+ {
+ const ::rtl::OString aTitle( pTitle );
+ const sal_uInt32 nCount( rPoly.count() );
+ for( sal_uInt32 i=0; i<nCount; ++i )
+ maPolygons.push_back( ::std::make_pair( rPoly.getB2DPolygon( i ),
+ aTitle ) );
+ }
+
+ void DebugPlotter::print( const sal_Char* pStr )
+ {
+ if( mpOutputStream )
+ *mpOutputStream << pStr;
+ else
+ OSL_TRACE( pStr );
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/gradienttools.cxx b/basegfx/source/tools/gradienttools.cxx
new file mode 100644
index 000000000000..31f9c45efb76
--- /dev/null
+++ b/basegfx/source/tools/gradienttools.cxx
@@ -0,0 +1,352 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/tools/gradienttools.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+
+namespace basegfx
+{
+ /** Most of the setup for linear & axial gradient is the same, except
+ for the border treatment. Factored out here.
+ */
+ static void init1DGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetRange,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle,
+ bool bAxial)
+ {
+ o_rGradientInfo.maTextureTransform.identity();
+ o_rGradientInfo.maBackTextureTransform.identity();
+ o_rGradientInfo.mnSteps = nSteps;
+
+ fAngle = -fAngle;
+
+ double fTargetSizeX(rTargetRange.getWidth());
+ double fTargetSizeY(rTargetRange.getHeight());
+ double fTargetOffsetX(rTargetRange.getMinX());
+ double fTargetOffsetY(rTargetRange.getMinY());
+
+ // add object expansion
+ if(0.0 != fAngle)
+ {
+ const double fAbsCos(fabs(cos(fAngle)));
+ const double fAbsSin(fabs(sin(fAngle)));
+ const double fNewX(fTargetSizeX * fAbsCos + fTargetSizeY * fAbsSin);
+ const double fNewY(fTargetSizeY * fAbsCos + fTargetSizeX * fAbsSin);
+ fTargetOffsetX -= (fNewX - fTargetSizeX) / 2.0;
+ fTargetOffsetY -= (fNewY - fTargetSizeY) / 2.0;
+ fTargetSizeX = fNewX;
+ fTargetSizeY = fNewY;
+ }
+
+ const double fSizeWithoutBorder=1.0 - fBorder;
+ if( bAxial )
+ {
+ o_rGradientInfo.maTextureTransform.scale(1.0, fSizeWithoutBorder * .5);
+ o_rGradientInfo.maTextureTransform.translate(0.0, 0.5);
+ }
+ else
+ {
+ if(!fTools::equal(fSizeWithoutBorder, 1.0))
+ {
+ o_rGradientInfo.maTextureTransform.scale(1.0, fSizeWithoutBorder);
+ o_rGradientInfo.maTextureTransform.translate(0.0, fBorder);
+ }
+ }
+
+ o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
+
+ // add texture rotate after scale to keep perpendicular angles
+ if(0.0 != fAngle)
+ {
+ const B2DPoint aCenter(0.5*fTargetSizeX,
+ 0.5*fTargetSizeY);
+ o_rGradientInfo.maTextureTransform *=
+ basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
+ }
+
+ // add object translate
+ o_rGradientInfo.maTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
+
+ // prepare aspect for texture
+ o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ? fTargetSizeX / fTargetSizeY : 1.0;
+
+ // build transform from u,v to [0.0 .. 1.0].
+ o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
+ o_rGradientInfo.maBackTextureTransform.invert();
+ }
+
+ /** Most of the setup for radial & ellipsoidal gradient is the same,
+ except for the border treatment. Factored out here.
+ */
+ static void initEllipticalGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetRange,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle,
+ bool bCircular)
+ {
+ o_rGradientInfo.maTextureTransform.identity();
+ o_rGradientInfo.maBackTextureTransform.identity();
+ o_rGradientInfo.mnSteps = nSteps;
+
+ fAngle = -fAngle;
+
+ double fTargetSizeX(rTargetRange.getWidth());
+ double fTargetSizeY(rTargetRange.getHeight());
+ double fTargetOffsetX(rTargetRange.getMinX());
+ double fTargetOffsetY(rTargetRange.getMinY());
+
+ // add object expansion
+ if( bCircular )
+ {
+ const double fOriginalDiag(sqrt((fTargetSizeX * fTargetSizeX) + (fTargetSizeY * fTargetSizeY)));
+ fTargetOffsetX -= (fOriginalDiag - fTargetSizeX) / 2.0;
+ fTargetOffsetY -= (fOriginalDiag - fTargetSizeY) / 2.0;
+ fTargetSizeX = fOriginalDiag;
+ fTargetSizeY = fOriginalDiag;
+ }
+ else
+ {
+ fTargetOffsetX -= (0.4142 / 2.0 ) * fTargetSizeX;
+ fTargetOffsetY -= (0.4142 / 2.0 ) * fTargetSizeY;
+ fTargetSizeX = 1.4142 * fTargetSizeX;
+ fTargetSizeY = 1.4142 * fTargetSizeY;
+ }
+
+ const double fHalfBorder((1.0 - fBorder) * 0.5);
+ o_rGradientInfo.maTextureTransform.scale(fHalfBorder, fHalfBorder);
+
+ o_rGradientInfo.maTextureTransform.translate(0.5, 0.5);
+ o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
+
+ // add texture rotate after scale to keep perpendicular angles
+ if( !bCircular && 0.0 != fAngle)
+ {
+ const B2DPoint aCenter(0.5*fTargetSizeX,
+ 0.5*fTargetSizeY);
+ o_rGradientInfo.maTextureTransform *=
+ basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
+ }
+
+ // add defined offsets after rotation
+ if(0.5 != rOffset.getX() || 0.5 != rOffset.getY())
+ {
+ // use original target size
+ fTargetOffsetX += (rOffset.getX() - 0.5) * rTargetRange.getWidth();
+ fTargetOffsetY += (rOffset.getY() - 0.5) * rTargetRange.getHeight();
+ }
+
+ // add object translate
+ o_rGradientInfo.maTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
+
+ // prepare aspect for texture
+ o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ? fTargetSizeX / fTargetSizeY : 1.0;
+
+ // build transform from u,v to [0.0 .. 1.0].
+ o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
+ o_rGradientInfo.maBackTextureTransform.invert();
+ }
+
+ /** Setup for rect & square gradient is exactly the same. Factored out
+ here.
+ */
+ static void initRectGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetRange,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle)
+ {
+ o_rGradientInfo.maTextureTransform.identity();
+ o_rGradientInfo.maBackTextureTransform.identity();
+ o_rGradientInfo.mnSteps = nSteps;
+
+ fAngle = -fAngle;
+
+ double fTargetSizeX(rTargetRange.getWidth());
+ double fTargetSizeY(rTargetRange.getHeight());
+ double fTargetOffsetX(rTargetRange.getMinX());
+ double fTargetOffsetY(rTargetRange.getMinY());
+
+ // add object expansion
+ if(0.0 != fAngle)
+ {
+ const double fAbsCos(fabs(cos(fAngle)));
+ const double fAbsSin(fabs(sin(fAngle)));
+ const double fNewX(fTargetSizeX * fAbsCos + fTargetSizeY * fAbsSin);
+ const double fNewY(fTargetSizeY * fAbsCos + fTargetSizeX * fAbsSin);
+ fTargetOffsetX -= (fNewX - fTargetSizeX) / 2.0;
+ fTargetOffsetY -= (fNewY - fTargetSizeY) / 2.0;
+ fTargetSizeX = fNewX;
+ fTargetSizeY = fNewY;
+ }
+
+ const double fHalfBorder((1.0 - fBorder) * 0.5);
+ o_rGradientInfo.maTextureTransform.scale(fHalfBorder, fHalfBorder);
+
+ o_rGradientInfo.maTextureTransform.translate(0.5, 0.5);
+ o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
+
+ // add texture rotate after scale to keep perpendicular angles
+ if(0.0 != fAngle)
+ {
+ const B2DPoint aCenter(0.5*fTargetSizeX,
+ 0.5*fTargetSizeY);
+ o_rGradientInfo.maTextureTransform *=
+ basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
+ }
+
+ // add defined offsets after rotation
+ if(0.5 != rOffset.getX() || 0.5 != rOffset.getY())
+ {
+ // use scaled target size
+ fTargetOffsetX += (rOffset.getX() - 0.5) * fTargetSizeX;
+ fTargetOffsetY += (rOffset.getY() - 0.5) * fTargetSizeY;
+ }
+
+ // add object translate
+ o_rGradientInfo.maTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
+
+ // prepare aspect for texture
+ o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ? fTargetSizeX / fTargetSizeY : 1.0;
+
+ // build transform from u,v to [0.0 .. 1.0]. As base, use inverse texture transform
+ o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
+ o_rGradientInfo.maBackTextureTransform.invert();
+ }
+
+ namespace tools
+ {
+ ODFGradientInfo& createLinearODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle)
+ {
+ init1DGradientInfo(o_rGradientInfo,
+ rTargetArea,
+ nSteps,
+ fBorder,
+ fAngle,
+ false);
+ return o_rGradientInfo;
+ }
+
+ ODFGradientInfo& createAxialODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle)
+ {
+ init1DGradientInfo(o_rGradientInfo,
+ rTargetArea,
+ nSteps,
+ fBorder,
+ fAngle,
+ true);
+ return o_rGradientInfo;
+ }
+
+ ODFGradientInfo& createRadialODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder)
+ {
+ initEllipticalGradientInfo(o_rGradientInfo,
+ rTargetArea,
+ rOffset,
+ nSteps,
+ fBorder,
+ 0.0,
+ true);
+ return o_rGradientInfo;
+ }
+
+ ODFGradientInfo& createEllipticalODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle)
+ {
+ initEllipticalGradientInfo(o_rGradientInfo,
+ rTargetArea,
+ rOffset,
+ nSteps,
+ fBorder,
+ fAngle,
+ false);
+ return o_rGradientInfo;
+ }
+
+ ODFGradientInfo& createSquareODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle)
+ {
+ initRectGradientInfo(o_rGradientInfo,
+ rTargetArea,
+ rOffset,
+ nSteps,
+ fBorder,
+ fAngle);
+ return o_rGradientInfo;
+ }
+
+ ODFGradientInfo& createRectangularODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
+ const B2DRange& rTargetArea,
+ const B2DVector& rOffset,
+ sal_uInt32 nSteps,
+ double fBorder,
+ double fAngle)
+ {
+ initRectGradientInfo(o_rGradientInfo,
+ rTargetArea,
+ rOffset,
+ nSteps,
+ fBorder,
+ fAngle);
+ return o_rGradientInfo;
+ }
+
+ } // namespace tools
+
+} // namespace basegfx
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/keystoplerp.cxx b/basegfx/source/tools/keystoplerp.cxx
new file mode 100644
index 000000000000..c5af3827ea13
--- /dev/null
+++ b/basegfx/source/tools/keystoplerp.cxx
@@ -0,0 +1,110 @@
+/* -*- 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 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: canvastools.hxx,v $
+ * $Revision: 1.10 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include "basegfx/tools/keystoplerp.hxx"
+#include <com/sun/star/uno/Sequence.hxx>
+
+#include <algorithm>
+
+static void validateInput(const std::vector<double>& rKeyStops)
+{
+ (void)rKeyStops;
+#ifdef DBG_UTIL
+ OSL_ENSURE( rKeyStops.size() > 1,
+ "KeyStopLerp::KeyStopLerp(): key stop vector must have two entries or more" );
+
+ // rKeyStops must be sorted in ascending order
+ for( ::std::size_t i=1, len=rKeyStops.size(); i<len; ++i )
+ {
+ if( rKeyStops[i-1] > rKeyStops[i] )
+ OSL_ENSURE( false,
+ "KeyStopLerp::KeyStopLerp(): time vector is not sorted in ascending order!" );
+ }
+#endif
+}
+
+namespace basegfx
+{
+ namespace tools
+ {
+ KeyStopLerp::KeyStopLerp( const std::vector<double>& rKeyStops ) :
+ maKeyStops(rKeyStops),
+ mnLastIndex(0)
+ {
+ validateInput(maKeyStops);
+ }
+
+ KeyStopLerp::KeyStopLerp( const ::com::sun::star::uno::Sequence<double>& rKeyStops ) :
+ maKeyStops(rKeyStops.getLength()),
+ mnLastIndex(0)
+ {
+ std::copy( rKeyStops.getConstArray(),
+ rKeyStops.getConstArray()+rKeyStops.getLength(),
+ maKeyStops.begin() );
+ validateInput(maKeyStops);
+ }
+
+ KeyStopLerp::ResultType KeyStopLerp::lerp(double fAlpha) const
+ {
+ // cached value still okay?
+ if( maKeyStops.at(mnLastIndex) < fAlpha ||
+ maKeyStops.at(mnLastIndex+1) >= fAlpha )
+ {
+ // nope, find new index
+ mnLastIndex = std::min<std::ptrdiff_t>(
+ maKeyStops.size()-2,
+ // range is ensured by max below
+ std::max<std::ptrdiff_t>(
+ 0,
+ std::distance( maKeyStops.begin(),
+ std::lower_bound( maKeyStops.begin(),
+ maKeyStops.end(),
+ fAlpha )) - 1 ));
+ }
+
+ // lerp between stop and stop+1
+ const double fRawLerp=
+ (fAlpha-maKeyStops.at(mnLastIndex)) /
+ (maKeyStops.at(mnLastIndex+1) - maKeyStops.at(mnLastIndex));
+
+ // clamp to permissible range (input fAlpha might be
+ // everything)
+ return ResultType(
+ mnLastIndex,
+ clamp(fRawLerp,0.0,1.0));
+ }
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/liangbarsky.cxx b/basegfx/source/tools/liangbarsky.cxx
new file mode 100644
index 000000000000..a50dd1ccacdf
--- /dev/null
+++ b/basegfx/source/tools/liangbarsky.cxx
@@ -0,0 +1,135 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include "basegfx/tools/tools.hxx"
+#include "basegfx/numeric/ftools.hxx"
+#include "basegfx/range/b2drange.hxx"
+
+
+namespace basegfx
+{
+ namespace tools
+ {
+ namespace
+ {
+ // see Foley/vanDam, pp. 122 for the Liang-Barsky line
+ // clipping algorithm
+ inline bool liangBarskyClipT( double nDenom,
+ double nNumerator,
+ double& io_rTE,
+ double& io_rTL )
+ {
+ double t;
+ if( nDenom > 0 )
+ {
+ t = nNumerator / nDenom;
+ if( t > io_rTL )
+ return false;
+ else if( t > io_rTE )
+ io_rTE = t;
+ }
+ else if( nDenom < 0 )
+ {
+ t = nNumerator / nDenom;
+ if( t < io_rTE )
+ return false;
+ else
+ io_rTL = t;
+ }
+ else if( nNumerator > 0 )
+ {
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ // see Foley/vanDam, pp. 122 for the Liang-Barsky line
+ // clipping algorithm
+ bool liangBarskyClip2D( ::basegfx::B2DPoint& io_rStart,
+ ::basegfx::B2DPoint& io_rEnd,
+ const ::basegfx::B2DRange& rClipRect )
+ {
+ const double nDX( io_rEnd.getX() - io_rStart.getX() );
+ const double nDY( io_rEnd.getY() - io_rStart.getY() );
+
+ if( ::basegfx::fTools::equalZero( nDX ) &&
+ ::basegfx::fTools::equalZero( nDY ) )
+ {
+ return rClipRect.isInside( io_rStart );
+ }
+ else
+ {
+ double nTE( 0.0 );
+ double nTL( 1.0 );
+ if( liangBarskyClipT(nDX, rClipRect.getMinX() - io_rStart.getX(),
+ nTE, nTL ) ) // inside wrt. left edge
+ {
+ if( liangBarskyClipT(-nDX, io_rStart.getX() - rClipRect.getMaxX(),
+ nTE, nTL ) ) // inside wrt. right edge
+ {
+ if( liangBarskyClipT(nDY, rClipRect.getMinY() - io_rStart.getY(),
+ nTE, nTL ) ) // inside wrt. bottom edge
+ {
+ if( liangBarskyClipT(-nDY, io_rStart.getY() - rClipRect.getMaxY(),
+ nTE, nTL ) ) // inside wrt. top edge
+ {
+ // compute actual intersection points,
+ // if nTL has changed
+ if( nTL < 1.0 )
+ {
+ io_rEnd.setX( io_rStart.getX() + nTL*nDX );
+ io_rEnd.setY( io_rStart.getY() + nTL*nDY );
+ }
+
+ // compute actual intersection points,
+ // if nTE has changed
+ if( nTE > 0.0 )
+ {
+ io_rStart.setX( io_rStart.getX() + nTE*nDX );
+ io_rStart.setY( io_rStart.getY() + nTE*nDY );
+ }
+
+ // line is (at least partially) visible
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/makefile.mk b/basegfx/source/tools/makefile.mk
new file mode 100755
index 000000000000..0a0977f7305d
--- /dev/null
+++ b/basegfx/source/tools/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=tools
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= $(SLO)$/b2dclipstate.obj \
+ $(SLO)$/canvastools.obj \
+ $(SLO)$/gradienttools.obj \
+ $(SLO)$/debugplotter.obj \
+ $(SLO)$/keystoplerp.obj \
+ $(SLO)$/liangbarsky.obj \
+ $(SLO)$/tools.obj \
+ $(SLO)$/unopolypolygon.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/tools/tools.cxx b/basegfx/source/tools/tools.cxx
new file mode 100644
index 000000000000..1ddb9d4d23b5
--- /dev/null
+++ b/basegfx/source/tools/tools.cxx
@@ -0,0 +1,127 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include "basegfx/tools/tools.hxx"
+#include "basegfx/range/b2drange.hxx"
+
+#include <algorithm>
+
+
+namespace basegfx
+{
+ namespace tools
+ {
+ namespace
+ {
+ inline double distance( const double& nX,
+ const double& nY,
+ const ::basegfx::B2DVector& rNormal,
+ const double& nC )
+ {
+ return nX*rNormal.getX() + nY*rNormal.getY() - nC;
+ }
+
+ void moveLineOutsideRect( ::basegfx::B2DPoint& io_rStart,
+ ::basegfx::B2DPoint& io_rEnd,
+ const ::basegfx::B2DVector& rMoveDirection,
+ const ::basegfx::B2DRange& rFitTarget )
+ {
+ // calc c for normal line form equation n x - c = 0
+ const double nC( rMoveDirection.scalar( io_rStart ) );
+
+ // calc maximum orthogonal distance for all four bound
+ // rect corners to the line
+ const double nMaxDistance( ::std::max(
+ 0.0,
+ ::std::max(
+ distance(rFitTarget.getMinX(),
+ rFitTarget.getMinY(),
+ rMoveDirection,
+ nC),
+ ::std::max(
+ distance(rFitTarget.getMinX(),
+ rFitTarget.getMaxY(),
+ rMoveDirection,
+ nC),
+ ::std::max(
+ distance(rFitTarget.getMaxX(),
+ rFitTarget.getMinY(),
+ rMoveDirection,
+ nC),
+ distance(rFitTarget.getMaxX(),
+ rFitTarget.getMaxY(),
+ rMoveDirection,
+ nC) ) ) ) ) );
+
+ // now move line points, such that the bound rect
+ // points are all either 'on' or on the negative side
+ // of the half-plane
+ io_rStart += nMaxDistance*rMoveDirection;
+ io_rEnd += nMaxDistance*rMoveDirection;
+ }
+ }
+
+ void infiniteLineFromParallelogram( ::basegfx::B2DPoint& io_rLeftTop,
+ ::basegfx::B2DPoint& io_rLeftBottom,
+ ::basegfx::B2DPoint& io_rRightTop,
+ ::basegfx::B2DPoint& io_rRightBottom,
+ const ::basegfx::B2DRange& rFitTarget )
+ {
+ // For the top and bottom border line of the
+ // parallelogram, we determine the distance to all four
+ // corner points of the bound rect (tl, tr, bl, br). When
+ // using the unit normal form for lines (n x - c = 0), and
+ // choosing n to point 'outwards' the parallelogram, then
+ // all bound rect corner points having positive distance
+ // to the line lie outside the extended gradient rect, and
+ // thus, the corresponding border line must be moved the
+ // maximum distance outwards.
+
+ // don't use the top and bottom border line direction, and
+ // calculate the normal from them. Instead, use the
+ // vertical lines (lt - lb or rt - rb), as they more
+ // faithfully represent the direction of the
+ // to-be-generated infinite line
+ ::basegfx::B2DVector aDirectionVertical( io_rLeftTop - io_rLeftBottom );
+ aDirectionVertical.normalize();
+
+ const ::basegfx::B2DVector aNormalTop( aDirectionVertical );
+ const ::basegfx::B2DVector aNormalBottom( -aDirectionVertical );
+
+ // now extend parallelogram, such that the bound rect
+ // point are included
+ moveLineOutsideRect( io_rLeftTop, io_rRightTop, aNormalTop, rFitTarget );
+ moveLineOutsideRect( io_rLeftBottom, io_rRightBottom, aNormalBottom, rFitTarget );
+ }
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tools/unopolypolygon.cxx b/basegfx/source/tools/unopolypolygon.cxx
new file mode 100644
index 000000000000..e20623c14233
--- /dev/null
+++ b/basegfx/source/tools/unopolypolygon.cxx
@@ -0,0 +1,489 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <com/sun/star/geometry/AffineMatrix2D.hpp>
+#include <com/sun/star/rendering/RenderState.hpp>
+#include <com/sun/star/rendering/ViewState.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/tools/canvastools.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/tools/unopolypolygon.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+
+
+using namespace ::com::sun::star;
+
+namespace basegfx
+{
+namespace unotools
+{
+ UnoPolyPolygon::UnoPolyPolygon( const B2DPolyPolygon& rPolyPoly ) :
+ UnoPolyPolygonBase( m_aMutex ),
+ maPolyPoly( rPolyPoly ),
+ meFillRule( rendering::FillRule_EVEN_ODD )
+ {
+ // or else races will haunt us.
+ maPolyPoly.makeUnique();
+ }
+
+ void SAL_CALL UnoPolyPolygon::addPolyPolygon(
+ const geometry::RealPoint2D& position,
+ const uno::Reference< rendering::XPolyPolygon2D >& polyPolygon ) throw (lang::IllegalArgumentException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ modifying();
+
+ // TODO(F1): Correctly fulfill the UNO API
+ // specification. This will probably result in a vector of
+ // poly-polygons to be stored in this object.
+
+ const sal_Int32 nPolys( polyPolygon->getNumberOfPolygons() );
+
+ if( !polyPolygon.is() || !nPolys )
+ {
+ // invalid or empty polygon - nothing to do.
+ return;
+ }
+
+ B2DPolyPolygon aSrcPoly;
+ const UnoPolyPolygon* pSrc( dynamic_cast< UnoPolyPolygon* >(polyPolygon.get()) );
+
+ // try to extract polygon data from interface. First,
+ // check whether it's the same implementation object,
+ // which we can tunnel then.
+ if( pSrc )
+ {
+ aSrcPoly = pSrc->getPolyPolygon();
+ }
+ else
+ {
+ // not a known implementation object - try data source
+ // interfaces
+ uno::Reference< rendering::XBezierPolyPolygon2D > xBezierPoly(
+ polyPolygon,
+ uno::UNO_QUERY );
+
+ if( xBezierPoly.is() )
+ {
+ aSrcPoly = unotools::polyPolygonFromBezier2DSequenceSequence(
+ xBezierPoly->getBezierSegments( 0,
+ nPolys,
+ 0,
+ -1 ) );
+ }
+ else
+ {
+ uno::Reference< rendering::XLinePolyPolygon2D > xLinePoly(
+ polyPolygon,
+ uno::UNO_QUERY );
+
+ // no implementation class and no data provider
+ // found - contract violation.
+ if( !xLinePoly.is() )
+ throw lang::IllegalArgumentException(
+ ::rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "UnoPolyPolygon::addPolyPolygon(): Invalid input "
+ "poly-polygon, cannot retrieve vertex data")),
+ static_cast<cppu::OWeakObject*>(this), 1);
+
+ aSrcPoly = unotools::polyPolygonFromPoint2DSequenceSequence(
+ xLinePoly->getPoints( 0,
+ nPolys,
+ 0,
+ -1 ) );
+ }
+ }
+
+ const B2DRange aBounds( tools::getRange( aSrcPoly ) );
+ const B2DVector aOffset( unotools::b2DPointFromRealPoint2D( position ) -
+ aBounds.getMinimum() );
+
+ if( !aOffset.equalZero() )
+ {
+ const B2DHomMatrix aTranslate(tools::createTranslateB2DHomMatrix(aOffset));
+ aSrcPoly.transform( aTranslate );
+ }
+
+ maPolyPoly.append( aSrcPoly );
+ }
+
+ sal_Int32 SAL_CALL UnoPolyPolygon::getNumberOfPolygons() throw (uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ return maPolyPoly.count();
+ }
+
+ sal_Int32 SAL_CALL UnoPolyPolygon::getNumberOfPolygonPoints(
+ sal_Int32 polygon ) throw (lang::IndexOutOfBoundsException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ checkIndex( polygon );
+
+ return maPolyPoly.getB2DPolygon(polygon).count();
+ }
+
+ rendering::FillRule SAL_CALL UnoPolyPolygon::getFillRule() throw (uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ return meFillRule;
+ }
+
+ void SAL_CALL UnoPolyPolygon::setFillRule(
+ rendering::FillRule fillRule ) throw (uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ modifying();
+
+ meFillRule = fillRule;
+ }
+
+ sal_Bool SAL_CALL UnoPolyPolygon::isClosed(
+ sal_Int32 index ) throw (lang::IndexOutOfBoundsException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ checkIndex( index );
+
+ return maPolyPoly.getB2DPolygon(index).isClosed();
+ }
+
+ void SAL_CALL UnoPolyPolygon::setClosed(
+ sal_Int32 index,
+ sal_Bool closedState ) throw (lang::IndexOutOfBoundsException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ modifying();
+
+ if( index == -1L )
+ {
+ // set all
+ maPolyPoly.setClosed( closedState );
+ }
+ else
+ {
+ checkIndex( index );
+
+ // fetch referenced polygon, change state
+ B2DPolygon aTmp( maPolyPoly.getB2DPolygon(index) );
+ aTmp.setClosed( closedState );
+
+ // set back to container
+ maPolyPoly.setB2DPolygon( index, aTmp );
+ }
+ }
+
+ uno::Sequence< uno::Sequence< geometry::RealPoint2D > > SAL_CALL UnoPolyPolygon::getPoints(
+ sal_Int32 nPolygonIndex,
+ sal_Int32 nNumberOfPolygons,
+ sal_Int32 nPointIndex,
+ sal_Int32 nNumberOfPoints ) throw (lang::IndexOutOfBoundsException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+
+ return unotools::pointSequenceSequenceFromB2DPolyPolygon(
+ getSubsetPolyPolygon( nPolygonIndex,
+ nNumberOfPolygons,
+ nPointIndex,
+ nNumberOfPoints ) );
+ }
+
+ void SAL_CALL UnoPolyPolygon::setPoints(
+ const uno::Sequence< uno::Sequence< geometry::RealPoint2D > >& points,
+ sal_Int32 nPolygonIndex ) throw (lang::IndexOutOfBoundsException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ modifying();
+
+ const B2DPolyPolygon& rNewPolyPoly(
+ unotools::polyPolygonFromPoint2DSequenceSequence( points ) );
+
+ if( nPolygonIndex == -1 )
+ {
+ maPolyPoly = rNewPolyPoly;
+ }
+ else
+ {
+ checkIndex( nPolygonIndex );
+
+ maPolyPoly.insert( nPolygonIndex, rNewPolyPoly );
+ }
+ }
+
+ geometry::RealPoint2D SAL_CALL UnoPolyPolygon::getPoint(
+ sal_Int32 nPolygonIndex,
+ sal_Int32 nPointIndex ) throw (lang::IndexOutOfBoundsException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ checkIndex( nPolygonIndex );
+
+ const B2DPolygon& rPoly( maPolyPoly.getB2DPolygon( nPolygonIndex ) );
+
+ if( nPointIndex < 0 || nPointIndex >= static_cast<sal_Int32>(rPoly.count()) )
+ throw lang::IndexOutOfBoundsException();
+
+ return unotools::point2DFromB2DPoint( rPoly.getB2DPoint( nPointIndex ) );
+ }
+
+ void SAL_CALL UnoPolyPolygon::setPoint(
+ const geometry::RealPoint2D& point,
+ sal_Int32 nPolygonIndex,
+ sal_Int32 nPointIndex ) throw (lang::IndexOutOfBoundsException,uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ checkIndex( nPolygonIndex );
+ modifying();
+
+ B2DPolygon aPoly( maPolyPoly.getB2DPolygon( nPolygonIndex ) );
+
+ if( nPointIndex < 0 || nPointIndex >= static_cast<sal_Int32>(aPoly.count()) )
+ throw lang::IndexOutOfBoundsException();
+
+ aPoly.setB2DPoint( nPointIndex,
+ unotools::b2DPointFromRealPoint2D( point ) );
+ maPolyPoly.setB2DPolygon( nPolygonIndex, aPoly );
+ }
+
+ uno::Sequence< uno::Sequence< geometry::RealBezierSegment2D > > SAL_CALL UnoPolyPolygon::getBezierSegments(
+ sal_Int32 nPolygonIndex,
+ sal_Int32 nNumberOfPolygons,
+ sal_Int32 nPointIndex,
+ sal_Int32 nNumberOfPoints ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ return unotools::bezierSequenceSequenceFromB2DPolyPolygon(
+ getSubsetPolyPolygon( nPolygonIndex,
+ nNumberOfPolygons,
+ nPointIndex,
+ nNumberOfPoints ) );
+ }
+
+ void SAL_CALL UnoPolyPolygon::setBezierSegments(
+ const uno::Sequence< uno::Sequence< geometry::RealBezierSegment2D > >& points,
+ sal_Int32 nPolygonIndex ) throw (lang::IndexOutOfBoundsException,
+ uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ modifying();
+ const B2DPolyPolygon& rNewPolyPoly(
+ unotools::polyPolygonFromBezier2DSequenceSequence( points ) );
+
+ if( nPolygonIndex == -1 )
+ {
+ maPolyPoly = rNewPolyPoly;
+ }
+ else
+ {
+ checkIndex( nPolygonIndex );
+
+ maPolyPoly.insert( nPolygonIndex, rNewPolyPoly );
+ }
+ }
+
+ geometry::RealBezierSegment2D SAL_CALL UnoPolyPolygon::getBezierSegment( sal_Int32 nPolygonIndex,
+ sal_Int32 nPointIndex ) throw (lang::IndexOutOfBoundsException,
+ uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ checkIndex( nPolygonIndex );
+
+ const B2DPolygon& rPoly( maPolyPoly.getB2DPolygon( nPolygonIndex ) );
+ const sal_uInt32 nPointCount(rPoly.count());
+
+ if( nPointIndex < 0 || nPointIndex >= static_cast<sal_Int32>(nPointCount) )
+ throw lang::IndexOutOfBoundsException();
+
+ const B2DPoint& rPt( rPoly.getB2DPoint( nPointIndex ) );
+ const B2DPoint& rCtrl0( rPoly.getNextControlPoint(nPointIndex) );
+ const B2DPoint& rCtrl1( rPoly.getPrevControlPoint((nPointIndex + 1) % nPointCount) );
+
+ return geometry::RealBezierSegment2D( rPt.getX(),
+ rPt.getY(),
+ rCtrl0.getX(),
+ rCtrl0.getY(),
+ rCtrl1.getX(),
+ rCtrl1.getY() );
+ }
+
+ void SAL_CALL UnoPolyPolygon::setBezierSegment( const geometry::RealBezierSegment2D& segment,
+ sal_Int32 nPolygonIndex,
+ sal_Int32 nPointIndex ) throw (lang::IndexOutOfBoundsException,
+ uno::RuntimeException)
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ checkIndex( nPolygonIndex );
+ modifying();
+
+ B2DPolygon aPoly( maPolyPoly.getB2DPolygon( nPolygonIndex ) );
+ const sal_uInt32 nPointCount(aPoly.count());
+
+ if( nPointIndex < 0 || nPointIndex >= static_cast<sal_Int32>(nPointCount) )
+ throw lang::IndexOutOfBoundsException();
+
+ aPoly.setB2DPoint( nPointIndex,
+ B2DPoint( segment.Px,
+ segment.Py ) );
+ aPoly.setNextControlPoint(nPointIndex,
+ B2DPoint(segment.C1x, segment.C1y));
+ aPoly.setPrevControlPoint((nPointIndex + 1) % nPointCount,
+ B2DPoint(segment.C2x, segment.C2y));
+
+ maPolyPoly.setB2DPolygon( nPolygonIndex, aPoly );
+ }
+
+ B2DPolyPolygon UnoPolyPolygon::getSubsetPolyPolygon(
+ sal_Int32 nPolygonIndex,
+ sal_Int32 nNumberOfPolygons,
+ sal_Int32 nPointIndex,
+ sal_Int32 nNumberOfPoints ) const
+ {
+ osl::MutexGuard const guard( m_aMutex );
+ checkIndex( nPolygonIndex );
+
+ const sal_Int32 nPolyCount( maPolyPoly.count() );
+
+ // check for "full polygon" case
+ if( !nPolygonIndex &&
+ !nPointIndex &&
+ nNumberOfPolygons == nPolyCount &&
+ nNumberOfPoints == -1 )
+ {
+ return maPolyPoly;
+ }
+
+ B2DPolyPolygon aSubsetPoly;
+
+ // create temporary polygon (as an extract from maPoly,
+ // which contains the requested subset)
+ for( sal_Int32 i=nPolygonIndex; i<nNumberOfPolygons; ++i )
+ {
+ checkIndex(i);
+
+ const B2DPolygon& rCurrPoly( maPolyPoly.getB2DPolygon(i) );
+
+ sal_Int32 nFirstPoint(0);
+ sal_Int32 nLastPoint(nPolyCount-1);
+
+ if( nPointIndex && i==nPolygonIndex )
+ {
+ // very first polygon - respect nPointIndex, if
+ // not zero
+
+ // empty polygon - impossible to specify _any_
+ // legal value except 0 here!
+ if( !nPolyCount && nPointIndex )
+ throw lang::IndexOutOfBoundsException();
+
+ nFirstPoint = nPointIndex;
+ }
+
+ if( i==nNumberOfPolygons-1 && nNumberOfPoints != -1 )
+ {
+ // very last polygon - respect nNumberOfPoints
+
+ // empty polygon - impossible to specify _any_
+ // legal value except -1 here!
+ if( !nPolyCount )
+ throw lang::IndexOutOfBoundsException();
+
+ nLastPoint = nFirstPoint+nNumberOfPoints;
+ }
+
+ if( !nPolyCount )
+ {
+ // empty polygon - index checks already performed
+ // above, now simply append empty polygon
+ aSubsetPoly.append( rCurrPoly );
+ }
+ else
+ {
+ if( nFirstPoint < 0 || nFirstPoint >= nPolyCount )
+ throw lang::IndexOutOfBoundsException();
+
+ if( nLastPoint < 0 || nLastPoint >= nPolyCount )
+ throw lang::IndexOutOfBoundsException();
+
+ B2DPolygon aTmp;
+ for( sal_Int32 j=nFirstPoint; j<nLastPoint; ++j )
+ aTmp.append( rCurrPoly.getB2DPoint(j) );
+
+ aSubsetPoly.append( aTmp );
+ }
+ }
+
+ return aSubsetPoly;
+ }
+
+ B2DPolyPolygon UnoPolyPolygon::getPolyPolygonUnsafe() const
+ {
+ return maPolyPoly;
+ }
+
+#define IMPLEMENTATION_NAME "gfx::internal::UnoPolyPolygon"
+#define SERVICE_NAME "com.sun.star.rendering.PolyPolygon2D"
+ ::rtl::OUString SAL_CALL UnoPolyPolygon::getImplementationName() throw( uno::RuntimeException )
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMPLEMENTATION_NAME ) );
+ }
+
+ sal_Bool SAL_CALL UnoPolyPolygon::supportsService( const ::rtl::OUString& ServiceName ) throw( uno::RuntimeException )
+ {
+ return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( SERVICE_NAME ) );
+ }
+
+ uno::Sequence< ::rtl::OUString > SAL_CALL UnoPolyPolygon::getSupportedServiceNames() throw( uno::RuntimeException )
+ {
+ uno::Sequence< ::rtl::OUString > aRet(1);
+ aRet[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( SERVICE_NAME ) );
+
+ return aRet;
+ }
+
+ B2DPolyPolygon UnoPolyPolygon::getPolyPolygon() const
+ {
+ osl::MutexGuard const guard( m_aMutex );
+
+ // detach result from us
+ B2DPolyPolygon aRet( maPolyPoly );
+ aRet.makeUnique();
+ return aRet;
+ }
+
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tuple/b2dtuple.cxx b/basegfx/source/tuple/b2dtuple.cxx
new file mode 100644
index 000000000000..b9ecd40f0eff
--- /dev/null
+++ b/basegfx/source/tuple/b2dtuple.cxx
@@ -0,0 +1,87 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <rtl/instance.hxx>
+
+namespace { struct EmptyTuple : public rtl::Static<basegfx::B2DTuple, EmptyTuple> {}; }
+#include <basegfx/tuple/b2ituple.hxx>
+
+namespace basegfx
+{
+ const B2DTuple& B2DTuple::getEmptyTuple()
+ {
+ return EmptyTuple::get();
+ }
+
+ B2DTuple::B2DTuple(const B2ITuple& rTup)
+ : mfX( rTup.getX() ),
+ mfY( rTup.getY() )
+ {}
+
+ void B2DTuple::correctValues(const double fCompareValue)
+ {
+ if(0.0 == fCompareValue)
+ {
+ if(::basegfx::fTools::equalZero(mfX))
+ {
+ mfX = 0.0;
+ }
+
+ if(::basegfx::fTools::equalZero(mfY))
+ {
+ mfY = 0.0;
+ }
+ }
+ else
+ {
+ if(::basegfx::fTools::equal(mfX, fCompareValue))
+ {
+ mfX = fCompareValue;
+ }
+
+ if(::basegfx::fTools::equal(mfY, fCompareValue))
+ {
+ mfY = fCompareValue;
+ }
+ }
+ }
+
+ B2ITuple fround(const B2DTuple& rTup)
+ {
+ return B2ITuple(fround(rTup.getX()), fround(rTup.getY()));
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tuple/b2i64tuple.cxx b/basegfx/source/tuple/b2i64tuple.cxx
new file mode 100644
index 000000000000..2caf873aab45
--- /dev/null
+++ b/basegfx/source/tuple/b2i64tuple.cxx
@@ -0,0 +1,47 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tuple/b2i64tuple.hxx>
+#include <rtl/instance.hxx>
+
+namespace { struct EmptyTuple : public rtl::Static<basegfx::B2I64Tuple, EmptyTuple> {}; }
+
+namespace basegfx
+{
+ const B2I64Tuple& B2I64Tuple::getEmptyTuple()
+ {
+ return EmptyTuple::get();
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tuple/b2ituple.cxx b/basegfx/source/tuple/b2ituple.cxx
new file mode 100644
index 000000000000..ac780d59eb58
--- /dev/null
+++ b/basegfx/source/tuple/b2ituple.cxx
@@ -0,0 +1,156 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <rtl/instance.hxx>
+
+namespace { struct EmptyTuple : public rtl::Static<basegfx::B2ITuple, EmptyTuple> {}; }
+
+namespace basegfx
+{
+ const B2ITuple& B2ITuple::getEmptyTuple()
+ {
+ return EmptyTuple::get();
+ }
+
+ // external operators
+ //////////////////////////////////////////////////////////////////////////
+
+ B2ITuple minimum(const B2ITuple& rTupA, const B2ITuple& rTupB)
+ {
+ B2ITuple aMin(
+ (rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY());
+ return aMin;
+ }
+
+ B2ITuple maximum(const B2ITuple& rTupA, const B2ITuple& rTupB)
+ {
+ B2ITuple aMax(
+ (rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
+ (rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY());
+ return aMax;
+ }
+
+ B2ITuple absolute(const B2ITuple& rTup)
+ {
+ B2ITuple aAbs(
+ (0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
+ (0 > rTup.getY()) ? -rTup.getY() : rTup.getY());
+ return aAbs;
+ }
+
+ B2DTuple interpolate(const B2ITuple& rOld1, const B2ITuple& rOld2, double t)
+ {
+ B2DTuple aInt(
+ ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
+ ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY());
+ return aInt;
+ }
+
+ B2DTuple average(const B2ITuple& rOld1, const B2ITuple& rOld2)
+ {
+ B2DTuple aAvg(
+ (rOld1.getX() + rOld2.getX()) * 0.5,
+ (rOld1.getY() + rOld2.getY()) * 0.5);
+ return aAvg;
+ }
+
+ B2DTuple average(const B2ITuple& rOld1, const B2ITuple& rOld2, const B2ITuple& rOld3)
+ {
+ B2DTuple aAvg(
+ (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
+ (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0));
+ return aAvg;
+ }
+
+ B2ITuple operator+(const B2ITuple& rTupA, const B2ITuple& rTupB)
+ {
+ B2ITuple aSum(rTupA);
+ aSum += rTupB;
+ return aSum;
+ }
+
+ B2ITuple operator-(const B2ITuple& rTupA, const B2ITuple& rTupB)
+ {
+ B2ITuple aSub(rTupA);
+ aSub -= rTupB;
+ return aSub;
+ }
+
+ B2ITuple operator/(const B2ITuple& rTupA, const B2ITuple& rTupB)
+ {
+ B2ITuple aDiv(rTupA);
+ aDiv /= rTupB;
+ return aDiv;
+ }
+
+ B2ITuple operator*(const B2ITuple& rTupA, const B2ITuple& rTupB)
+ {
+ B2ITuple aMul(rTupA);
+ aMul *= rTupB;
+ return aMul;
+ }
+
+ B2ITuple operator*(const B2ITuple& rTup, sal_Int32 t)
+ {
+ B2ITuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ B2ITuple operator*(sal_Int32 t, const B2ITuple& rTup)
+ {
+ B2ITuple aNew(rTup);
+ aNew *= t;
+ return aNew;
+ }
+
+ B2ITuple operator/(const B2ITuple& rTup, sal_Int32 t)
+ {
+ B2ITuple aNew(rTup);
+ aNew /= t;
+ return aNew;
+ }
+
+ B2ITuple operator/(sal_Int32 t, const B2ITuple& rTup)
+ {
+ B2ITuple aNew(t, t);
+ B2ITuple aTmp(rTup);
+ aNew /= aTmp;
+ return aNew;
+ }
+
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tuple/b3dtuple.cxx b/basegfx/source/tuple/b3dtuple.cxx
new file mode 100644
index 000000000000..c825adb3ac09
--- /dev/null
+++ b/basegfx/source/tuple/b3dtuple.cxx
@@ -0,0 +1,58 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <rtl/instance.hxx>
+
+namespace { struct EmptyTuple : public rtl::Static<basegfx::B3DTuple, EmptyTuple> {}; }
+#include <basegfx/tuple/b3ituple.hxx>
+
+namespace basegfx
+{
+ const B3DTuple& B3DTuple::getEmptyTuple()
+ {
+ return EmptyTuple::get();
+ }
+
+ B3DTuple::B3DTuple(const B3ITuple& rTup)
+ : mfX( rTup.getX() ),
+ mfY( rTup.getY() ),
+ mfZ( rTup.getZ() )
+ {}
+
+ B3ITuple fround(const B3DTuple& rTup)
+ {
+ return B3ITuple(fround(rTup.getX()), fround(rTup.getY()), fround(rTup.getZ()));
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tuple/b3i64tuple.cxx b/basegfx/source/tuple/b3i64tuple.cxx
new file mode 100644
index 000000000000..7d7ccac28aea
--- /dev/null
+++ b/basegfx/source/tuple/b3i64tuple.cxx
@@ -0,0 +1,46 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tuple/b3i64tuple.hxx>
+#include <rtl/instance.hxx>
+
+namespace { struct EmptyTuple : public rtl::Static<basegfx::B3I64Tuple, EmptyTuple> {}; }
+
+namespace basegfx
+{
+ const B3I64Tuple& B3I64Tuple::getEmptyTuple()
+ {
+ return EmptyTuple::get();
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tuple/b3ituple.cxx b/basegfx/source/tuple/b3ituple.cxx
new file mode 100644
index 000000000000..b78aa8938e49
--- /dev/null
+++ b/basegfx/source/tuple/b3ituple.cxx
@@ -0,0 +1,46 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tuple/b3ituple.hxx>
+#include <rtl/instance.hxx>
+
+namespace { struct EmptyTuple : public rtl::Static<basegfx::B3ITuple, EmptyTuple> {}; }
+
+namespace basegfx
+{
+ const B3ITuple& B3ITuple::getEmptyTuple()
+ {
+ return EmptyTuple::get();
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/tuple/makefile.mk b/basegfx/source/tuple/makefile.mk
new file mode 100644
index 000000000000..01a4c6de2d3c
--- /dev/null
+++ b/basegfx/source/tuple/makefile.mk
@@ -0,0 +1,52 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=tuple
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+#ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/b2dtuple.obj \
+ $(SLO)$/b3dtuple.obj \
+ $(SLO)$/b2ituple.obj \
+ $(SLO)$/b3ituple.obj \
+ $(SLO)$/b2i64tuple.obj \
+ $(SLO)$/b3i64tuple.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/vector/b2dvector.cxx b/basegfx/source/vector/b2dvector.cxx
new file mode 100644
index 000000000000..ad11f717fa2d
--- /dev/null
+++ b/basegfx/source/vector/b2dvector.cxx
@@ -0,0 +1,222 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ B2DVector& B2DVector::normalize()
+ {
+ double fLen(scalar(*this));
+
+ if(fTools::equalZero(fLen))
+ {
+ mfX = 0.0;
+ mfY = 0.0;
+ }
+ else
+ {
+ const double fOne(1.0);
+
+ if(!fTools::equal(fOne, fLen))
+ {
+ fLen = sqrt(fLen);
+
+ if(!fTools::equalZero(fLen))
+ {
+ mfX /= fLen;
+ mfY /= fLen;
+ }
+ }
+ }
+
+ return *this;
+ }
+
+ B2DVector& B2DVector::operator=( const B2DTuple& rVec )
+ {
+ mfX = rVec.getX();
+ mfY = rVec.getY();
+ return *this;
+ }
+
+
+ double B2DVector::getLength() const
+ {
+ if(fTools::equalZero(mfX))
+ {
+ return fabs(mfY);
+ }
+ else if(fTools::equalZero(mfY))
+ {
+ return fabs(mfX);
+ }
+
+ return hypot( mfX, mfY );
+ }
+
+ double B2DVector::scalar( const B2DVector& rVec ) const
+ {
+ return((mfX * rVec.mfX) + (mfY * rVec.mfY));
+ }
+
+ double B2DVector::cross( const B2DVector& rVec ) const
+ {
+ return(mfX * rVec.getY() - mfY * rVec.getX());
+ }
+
+ double B2DVector::angle( const B2DVector& rVec ) const
+ {
+ return atan2(mfX * rVec.getY() - mfY * rVec.getX(),
+ mfX * rVec.getX() + mfY * rVec.getY());
+ }
+
+ const B2DVector& B2DVector::getEmptyVector()
+ {
+ return (const B2DVector&) B2DTuple::getEmptyTuple();
+ }
+
+ B2DVector& B2DVector::operator*=( const B2DHomMatrix& rMat )
+ {
+ const double fTempX( rMat.get(0,0)*mfX +
+ rMat.get(0,1)*mfY );
+ const double fTempY( rMat.get(1,0)*mfX +
+ rMat.get(1,1)*mfY );
+ mfX = fTempX;
+ mfY = fTempY;
+
+ return *this;
+ }
+
+ B2DVector& B2DVector::setLength(double fLen)
+ {
+ double fLenNow(scalar(*this));
+
+ if(!fTools::equalZero(fLenNow))
+ {
+ const double fOne(10.0);
+
+ if(!fTools::equal(fOne, fLenNow))
+ {
+ fLen /= sqrt(fLenNow);
+ }
+
+ mfX *= fLen;
+ mfY *= fLen;
+ }
+
+ return *this;
+ }
+
+ bool B2DVector::isNormalized() const
+ {
+ const double fOne(1.0);
+ const double fScalar(scalar(*this));
+
+ return fTools::equal(fOne, fScalar);
+ }
+
+ bool areParallel( const B2DVector& rVecA, const B2DVector& rVecB )
+ {
+ const double fValA(rVecA.getX() * rVecB.getY());
+ const double fValB(rVecA.getY() * rVecB.getX());
+
+ return fTools::equal(fValA, fValB);
+ }
+
+ B2VectorOrientation getOrientation( const B2DVector& rVecA, const B2DVector& rVecB )
+ {
+ double fVal(rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX());
+
+ if(fTools::equalZero(fVal))
+ {
+ return ORIENTATION_NEUTRAL;
+ }
+
+ if(fVal > 0.0)
+ {
+ return ORIENTATION_POSITIVE;
+ }
+ else
+ {
+ return ORIENTATION_NEGATIVE;
+ }
+ }
+
+ B2DVector getPerpendicular( const B2DVector& rNormalizedVec )
+ {
+ B2DVector aPerpendicular(-rNormalizedVec.getY(), rNormalizedVec.getX());
+ return aPerpendicular;
+ }
+
+ B2DVector getNormalizedPerpendicular( const B2DVector& rVec )
+ {
+ B2DVector aPerpendicular(rVec);
+ aPerpendicular.normalize();
+ const double aTemp(-aPerpendicular.getY());
+ aPerpendicular.setY(aPerpendicular.getX());
+ aPerpendicular.setX(aTemp);
+ return aPerpendicular;
+ }
+
+ B2DVector operator*( const B2DHomMatrix& rMat, const B2DVector& rVec )
+ {
+ B2DVector aRes( rVec );
+ return aRes*=rMat;
+ }
+
+ B2VectorContinuity getContinuity(const B2DVector& rBackVector, const B2DVector& rForwardVector )
+ {
+ if(rBackVector.equalZero() || rForwardVector.equalZero())
+ {
+ return CONTINUITY_NONE;
+ }
+
+ if(fTools::equal(rBackVector.getX(), -rForwardVector.getX()) && fTools::equal(rBackVector.getY(), -rForwardVector.getY()))
+ {
+ // same direction and same length -> C2
+ return CONTINUITY_C2;
+ }
+
+ if(areParallel(rBackVector, rForwardVector) && rBackVector.scalar(rForwardVector) < 0.0)
+ {
+ // parallel and opposite direction -> C1
+ return CONTINUITY_C1;
+ }
+
+ return CONTINUITY_NONE;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/vector/b2ivector.cxx b/basegfx/source/vector/b2ivector.cxx
new file mode 100644
index 000000000000..744bf8cf2ca0
--- /dev/null
+++ b/basegfx/source/vector/b2ivector.cxx
@@ -0,0 +1,162 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/vector/b2ivector.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+namespace basegfx
+{
+ B2IVector& B2IVector::operator=( const ::basegfx::B2ITuple& rVec )
+ {
+ mnX = rVec.getX();
+ mnY = rVec.getY();
+ return *this;
+ }
+
+
+ double B2IVector::getLength() const
+ {
+ return hypot( mnX, mnY );
+ }
+
+ double B2IVector::scalar( const B2IVector& rVec ) const
+ {
+ return((mnX * rVec.mnX) + (mnY * rVec.mnY));
+ }
+
+ double B2IVector::cross( const B2IVector& rVec ) const
+ {
+ return(mnX * rVec.getY() - mnY * rVec.getX());
+ }
+
+ double B2IVector::angle( const B2IVector& rVec ) const
+ {
+ return atan2(double( mnX * rVec.getY() - mnY * rVec.getX()),
+ double( mnX * rVec.getX() + mnY * rVec.getY()));
+ }
+
+ const B2IVector& B2IVector::getEmptyVector()
+ {
+ return (const B2IVector&) ::basegfx::B2ITuple::getEmptyTuple();
+ }
+
+ B2IVector& B2IVector::operator*=( const B2DHomMatrix& rMat )
+ {
+ mnX = fround( rMat.get(0,0)*mnX +
+ rMat.get(0,1)*mnY );
+ mnY = fround( rMat.get(1,0)*mnX +
+ rMat.get(1,1)*mnY );
+
+ return *this;
+ }
+
+ B2IVector& B2IVector::setLength(double fLen)
+ {
+ double fLenNow(scalar(*this));
+
+ if(!::basegfx::fTools::equalZero(fLenNow))
+ {
+ const double fOne(10.0);
+
+ if(!::basegfx::fTools::equal(fOne, fLenNow))
+ {
+ fLen /= sqrt(fLenNow);
+ }
+
+ mnX = fround( mnX*fLen );
+ mnY = fround( mnY*fLen );
+ }
+
+ return *this;
+ }
+
+ bool areParallel( const B2IVector& rVecA, const B2IVector& rVecB )
+ {
+ double fVal(rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX());
+ return ::basegfx::fTools::equalZero(fVal);
+ }
+
+ B2VectorOrientation getOrientation( const B2IVector& rVecA, const B2IVector& rVecB )
+ {
+ double fVal(rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX());
+
+ if(fVal > 0.0)
+ {
+ return ORIENTATION_POSITIVE;
+ }
+
+ if(fVal < 0.0)
+ {
+ return ORIENTATION_NEGATIVE;
+ }
+
+ return ORIENTATION_NEUTRAL;
+ }
+
+ B2IVector getPerpendicular( const B2IVector& rNormalizedVec )
+ {
+ B2IVector aPerpendicular(-rNormalizedVec.getY(), rNormalizedVec.getX());
+ return aPerpendicular;
+ }
+
+ B2IVector operator*( const B2DHomMatrix& rMat, const B2IVector& rVec )
+ {
+ B2IVector aRes( rVec );
+ return aRes*=rMat;
+ }
+
+ B2VectorContinuity getContinuity(const B2IVector& rBackVector, const B2IVector& rForwardVector )
+ {
+ B2VectorContinuity eRetval(CONTINUITY_NONE);
+
+ if(!rBackVector.equalZero() && !rForwardVector.equalZero())
+ {
+ const B2IVector aInverseForwardVector(-rForwardVector.getX(), -rForwardVector.getY());
+
+ if(rBackVector == aInverseForwardVector)
+ {
+ // same direction and same length -> C2
+ eRetval = CONTINUITY_C2;
+ }
+ else if(areParallel(rBackVector, aInverseForwardVector))
+ {
+ // same direction -> C1
+ eRetval = CONTINUITY_C1;
+ }
+ }
+
+ return eRetval;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/vector/b3dvector.cxx b/basegfx/source/vector/b3dvector.cxx
new file mode 100644
index 000000000000..67a7ef1d2215
--- /dev/null
+++ b/basegfx/source/vector/b3dvector.cxx
@@ -0,0 +1,118 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/vector/b3dvector.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ B3DVector& B3DVector::normalize()
+ {
+ double fLen(scalar(*this));
+
+ if(!::basegfx::fTools::equalZero(fLen))
+ {
+ const double fOne(1.0);
+
+ if(!::basegfx::fTools::equal(fOne, fLen))
+ {
+ fLen = sqrt(fLen);
+
+ if(!::basegfx::fTools::equalZero(fLen))
+ {
+ mfX /= fLen;
+ mfY /= fLen;
+ mfZ /= fLen;
+ }
+ }
+ }
+
+ return *this;
+ }
+
+ B3DVector B3DVector::getPerpendicular(const B3DVector& rNormalizedVec) const
+ {
+ B3DVector aNew(*this);
+ aNew = cross(aNew, rNormalizedVec);
+ aNew.normalize();
+ return aNew;
+ }
+
+ B3DVector B3DVector::getProjectionOnPlane(const B3DVector& rNormalizedPlane) const
+ {
+ B3DVector aNew(*this);
+ aNew = cross(aNew, rNormalizedPlane);
+ aNew = cross(aNew, rNormalizedPlane);
+
+ aNew.mfX = mfX - aNew.mfX;
+ aNew.mfY = mfY - aNew.mfY;
+ aNew.mfZ = mfZ - aNew.mfZ;
+
+ return aNew;
+ }
+
+ B3DVector& B3DVector::operator*=( const ::basegfx::B3DHomMatrix& rMat )
+ {
+ const double fTempX( rMat.get(0,0)*mfX + rMat.get(0,1)*mfY + rMat.get(0,2)*mfZ );
+ const double fTempY( rMat.get(1,0)*mfX + rMat.get(1,1)*mfY + rMat.get(1,2)*mfZ );
+ const double fTempZ( rMat.get(2,0)*mfX + rMat.get(2,1)*mfY + rMat.get(2,2)*mfZ );
+ mfX = fTempX;
+ mfY = fTempY;
+ mfZ = fTempZ;
+
+ return *this;
+ }
+
+ B3DVector operator*( const ::basegfx::B3DHomMatrix& rMat, const B3DVector& rVec )
+ {
+ B3DVector aRes( rVec );
+ return aRes*=rMat;
+ }
+
+ bool areParallel( const B3DVector& rVecA, const B3DVector& rVecB )
+ {
+ // i think fastest is to compare relations, need no square or division
+ if(!fTools::equal(rVecA.getX() * rVecB.getY(), rVecA.getY() * rVecB.getX()))
+ return false;
+
+ if(!fTools::equal(rVecA.getX() * rVecB.getZ(), rVecA.getZ() * rVecB.getX()))
+ return false;
+
+ return (fTools::equal(rVecA.getY() * rVecB.getZ(), rVecA.getZ() * rVecB.getY()));
+ }
+
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/vector/b3ivector.cxx b/basegfx/source/vector/b3ivector.cxx
new file mode 100644
index 000000000000..2966a11c6921
--- /dev/null
+++ b/basegfx/source/vector/b3ivector.cxx
@@ -0,0 +1,54 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/vector/b3ivector.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+
+namespace basegfx
+{
+ B3IVector& B3IVector::operator*=( const B3DHomMatrix& rMat )
+ {
+ mnX = fround( rMat.get(0,0)*mnX + rMat.get(0,1)*mnY + rMat.get(0,2)*mnZ );
+ mnY = fround( rMat.get(1,0)*mnX + rMat.get(1,1)*mnY + rMat.get(1,2)*mnZ );
+ mnZ = fround( rMat.get(2,0)*mnX + rMat.get(2,1)*mnY + rMat.get(2,2)*mnZ );
+
+ return *this;
+ }
+
+ B3IVector operator*( const B3DHomMatrix& rMat, const B3IVector& rVec )
+ {
+ B3IVector aRes( rVec );
+ return aRes*=rMat;
+ }
+} // end of namespace basegfx
+
+// eof
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/vector/makefile.mk b/basegfx/source/vector/makefile.mk
new file mode 100644
index 000000000000..defc7a31dd51
--- /dev/null
+++ b/basegfx/source/vector/makefile.mk
@@ -0,0 +1,50 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=basegfx
+TARGET=vector
+
+#UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb
+#ENABLE_EXCEPTIONS=FALSE
+#USE_DEFFILE=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/b2dvector.obj \
+ $(SLO)$/b3dvector.obj \
+ $(SLO)$/b2ivector.obj \
+ $(SLO)$/b3ivector.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
diff --git a/basegfx/source/workbench/Makefile b/basegfx/source/workbench/Makefile
new file mode 100644
index 000000000000..fe23a4d06708
--- /dev/null
+++ b/basegfx/source/workbench/Makefile
@@ -0,0 +1,16 @@
+# Testbuild
+
+#test : bezierclip.cxx convexhull.cxx
+# g++ -Wall -g \
+# -I. -I. -I../inc -I./inc -I./unx/inc -I./unxlngi4/inc -I. -I/develop4/update/SRX644/unxlngi4/inc.m4/stl -I/develop4/update/SRX644/unxlngi4/inc.m4/external -I/develop4/update/SRX644/unxlngi4/inc.m4 -I/develop4/update/SRX644/src.m4/solenv/unxlngi4/inc -I/net/grande/develop6/update/dev/gcc_3.0.1_linux_libc2.11_turbolinux/include -I/develop4/update/SRX644/src.m4/solenv/inc -I/develop4/update/SRX644/unxlngi4/inc.m4/stl -I/net/grande.germany/develop6/update/dev/gcc_3.0.1_linux_libc2.11_turbolinux/redhat60/usr/include -I/net/grande.germany/develop6/update/dev/gcc_3.0.1_linux_libc2.11_turbolinux/redhat60/usr/include/X11 -I/develop4/update/SRX644/src.m4/res -I/net/grande/develop6/update/dev/Linux_JDK_1.4.0/include -I/net/grande/develop6/update/dev/Linux_JDK_1.4.0/include/linux -I. -I./res -I. \
+# -include preinclude.h -D_USE_NAMESPACE -DGLIBC=2 -D_USE_NAMESPACE=1 -DSTLPORT_VERSION=400 -D_STLP_DEBUG \
+# bezierclip.cxx convexhull.cxx -o bezierclip
+
+prog : bezierclip.cxx convexhull.cxx
+ g++ -Wall -g bezierclip.cxx convexhull.cxx -o bezierclip
+
+test : testconvexhull.cxx
+ g++ -Wall -g testconvexhull.cxx -o testhull
+
+.cxx.o:
+ g++ -c $(LOCALDEFINES) $(CCFLAGS) $<
diff --git a/basegfx/source/workbench/bezierclip.cxx b/basegfx/source/workbench/bezierclip.cxx
new file mode 100644
index 000000000000..5aaea7c63efa
--- /dev/null
+++ b/basegfx/source/workbench/bezierclip.cxx
@@ -0,0 +1,2060 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <algorithm>
+#include <iterator>
+#include <vector>
+#include <utility>
+
+#include <math.h>
+
+#include "bezierclip.hxx"
+#include "gauss.hxx"
+
+
+
+// what to test
+#define WITH_ASSERTIONS
+//#define WITH_CONVEXHULL_TEST
+//#define WITH_MULTISUBDIVIDE_TEST
+//#define WITH_FATLINE_TEST
+//#define WITH_CALCFOCUS_TEST
+//#define WITH_SAFEPARAMBASE_TEST
+//#define WITH_SAFEPARAMS_TEST
+//#define WITH_SAFEPARAM_DETAILED_TEST
+//#define WITH_SAFEFOCUSPARAM_CALCFOCUS
+//#define WITH_SAFEFOCUSPARAM_TEST
+//#define WITH_SAFEFOCUSPARAM_DETAILED_TEST
+#define WITH_BEZIERCLIP_TEST
+
+
+
+// -----------------------------------------------------------------------------
+
+/* Implementation of the so-called 'Fat-Line Bezier Clipping Algorithm' by Sederberg et al.
+ *
+ * Actual reference is: T. W. Sederberg and T Nishita: Curve
+ * intersection using Bezier clipping. In Computer Aided Design, 22
+ * (9), 1990, pp. 538--549
+ */
+
+// -----------------------------------------------------------------------------
+
+/* Misc helper
+ * ===========
+ */
+int fallFac( int n, int k )
+{
+#ifdef WITH_ASSERTIONS
+ assert(n>=k); // "For factorials, n must be greater or equal k"
+ assert(n>=0); // "For factorials, n must be positive"
+ assert(k>=0); // "For factorials, k must be positive"
+#endif
+
+ int res( 1 );
+
+ while( k-- && n ) res *= n--;
+
+ return res;
+}
+
+// -----------------------------------------------------------------------------
+
+int fac( int n )
+{
+ return fallFac(n, n);
+}
+
+// -----------------------------------------------------------------------------
+
+/* Bezier fat line clipping part
+ * =============================
+ */
+
+// -----------------------------------------------------------------------------
+
+void Impl_calcFatLine( FatLine& line, const Bezier& c )
+{
+ // Prepare normalized implicit line
+ // ================================
+
+ // calculate vector orthogonal to p1-p4:
+ line.a = -(c.p0.y - c.p3.y);
+ line.b = (c.p0.x - c.p3.x);
+
+ // normalize
+ const double len( sqrt( line.a*line.a + line.b*line.b ) );
+ if( !tolZero(len) )
+ {
+ line.a /= len;
+ line.b /= len;
+ }
+
+ line.c = -(line.a*c.p0.x + line.b*c.p0.y);
+
+
+ // Determine bounding fat line from it
+ // ===================================
+
+ // calc control point distances
+ const double dP2( calcLineDistance(line.a, line.b, line.c, c.p1.x, c.p1.y ) );
+ const double dP3( calcLineDistance(line.a, line.b, line.c, c.p2.x, c.p2.y ) );
+
+ // calc approximate bounding lines to curve (tight bounds are
+ // possible here, but more expensive to calculate and thus not
+ // worth the overhead)
+ if( dP2 * dP3 > 0.0 )
+ {
+ line.dMin = 3.0/4.0 * ::std::min(0.0, ::std::min(dP2, dP3));
+ line.dMax = 3.0/4.0 * ::std::max(0.0, ::std::max(dP2, dP3));
+ }
+ else
+ {
+ line.dMin = 4.0/9.0 * ::std::min(0.0, ::std::min(dP2, dP3));
+ line.dMax = 4.0/9.0 * ::std::max(0.0, ::std::max(dP2, dP3));
+ }
+}
+
+void Impl_calcBounds( Point2D& leftTop,
+ Point2D& rightBottom,
+ const Bezier& c1 )
+{
+ leftTop.x = ::std::min( c1.p0.x, ::std::min( c1.p1.x, ::std::min( c1.p2.x, c1.p3.x ) ) );
+ leftTop.y = ::std::min( c1.p0.y, ::std::min( c1.p1.y, ::std::min( c1.p2.y, c1.p3.y ) ) );
+ rightBottom.x = ::std::max( c1.p0.x, ::std::max( c1.p1.x, ::std::max( c1.p2.x, c1.p3.x ) ) );
+ rightBottom.y = ::std::max( c1.p0.y, ::std::max( c1.p1.y, ::std::max( c1.p2.y, c1.p3.y ) ) );
+}
+
+bool Impl_doBBoxIntersect( const Bezier& c1,
+ const Bezier& c2 )
+{
+ // calc rectangular boxes from c1 and c2
+ Point2D lt1;
+ Point2D rb1;
+ Point2D lt2;
+ Point2D rb2;
+
+ Impl_calcBounds( lt1, rb1, c1 );
+ Impl_calcBounds( lt2, rb2, c2 );
+
+ if( ::std::min(rb1.x, rb2.x) < ::std::max(lt1.x, lt2.x) ||
+ ::std::min(rb1.y, rb2.y) < ::std::max(lt1.y, lt2.y) )
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
+
+/* calculates two t's for the given bernstein control polygon: the first is
+ * the intersection of the min value line with the convex hull from
+ * the left, the second is the intersection of the max value line with
+ * the convex hull from the right.
+ */
+bool Impl_calcSafeParams( double& t1,
+ double& t2,
+ const Polygon2D& rPoly,
+ double lowerYBound,
+ double upperYBound )
+{
+ // need the convex hull of the control polygon, as this is
+ // guaranteed to completely bound the curve
+ Polygon2D convHull( convexHull(rPoly) );
+
+ // init min and max buffers
+ t1 = 0.0 ;
+ double currLowerT( 1.0 );
+
+ t2 = 1.0;
+ double currHigherT( 0.0 );
+
+ if( convHull.size() <= 1 )
+ return false; // only one point? Then we're done with clipping
+
+ /* now, clip against lower and higher bounds */
+ Point2D p0;
+ Point2D p1;
+
+ bool bIntersection( false );
+
+ for( Polygon2D::size_type i=0; i<convHull.size(); ++i )
+ {
+ // have to check against convHull.size() segments, as the
+ // convex hull is, by definition, closed. Thus, for the
+ // last point, we take the first point as partner.
+ if( i+1 == convHull.size() )
+ {
+ // close the polygon
+ p0 = convHull[i];
+ p1 = convHull[0];
+ }
+ else
+ {
+ p0 = convHull[i];
+ p1 = convHull[i+1];
+ }
+
+ // is the segment in question within or crossing the
+ // horizontal band spanned by lowerYBound and upperYBound? If
+ // not, we've got no intersection. If yes, we maybe don't have
+ // an intersection, but we've got to update the permissible
+ // range, nevertheless. This is because inside lying segments
+ // leads to full range forbidden.
+ if( (tolLessEqual(p0.y, upperYBound) || tolLessEqual(p1.y, upperYBound)) &&
+ (tolGreaterEqual(p0.y, lowerYBound) || tolGreaterEqual(p1.y, lowerYBound)) )
+ {
+ // calc intersection of convex hull segment with
+ // one of the horizontal bounds lines
+ const double r_x( p1.x - p0.x );
+ const double r_y( p1.y - p0.y );
+
+ if( tolZero(r_y) )
+ {
+ // r_y is virtually zero, thus we've got a horizontal
+ // line. Now check whether we maybe coincide with lower or
+ // upper horizonal bound line.
+ if( tolEqual(p0.y, lowerYBound) ||
+ tolEqual(p0.y, upperYBound) )
+ {
+ // yes, simulate intersection then
+ currLowerT = ::std::min(currLowerT, ::std::min(p0.x, p1.x));
+ currHigherT = ::std::max(currHigherT, ::std::max(p0.x, p1.x));
+ }
+ }
+ else
+ {
+ // check against lower and higher bounds
+ // =====================================
+
+ // calc intersection with horizontal dMin line
+ const double currTLow( (lowerYBound - p0.y) * r_x / r_y + p0.x );
+
+ // calc intersection with horizontal dMax line
+ const double currTHigh( (upperYBound - p0.y) * r_x / r_y + p0.x );
+
+ currLowerT = ::std::min(currLowerT, ::std::min(currTLow, currTHigh));
+ currHigherT = ::std::max(currHigherT, ::std::max(currTLow, currTHigh));
+ }
+
+ // set flag that at least one segment is contained or
+ // intersects given horizontal band.
+ bIntersection = true;
+ }
+ }
+
+#ifndef WITH_SAFEPARAMBASE_TEST
+ // limit intersections found to permissible t parameter range
+ t1 = ::std::max(0.0, currLowerT);
+ t2 = ::std::min(1.0, currHigherT);
+#endif
+
+ return bIntersection;
+}
+
+
+/* calculates two t's for the given bernstein polynomial: the first is
+ * the intersection of the min value line with the convex hull from
+ * the left, the second is the intersection of the max value line with
+ * the convex hull from the right.
+ *
+ * The polynomial coefficients c0 to c3 given to this method
+ * must correspond to t values of 0, 1/3, 2/3 and 1, respectively.
+ */
+bool Impl_calcSafeParams_clip( double& t1,
+ double& t2,
+ const FatLine& bounds,
+ double c0,
+ double c1,
+ double c2,
+ double c3 )
+{
+ /* first of all, determine convex hull of c0-c3 */
+ Polygon2D poly(4);
+ poly[0] = Point2D(0, c0);
+ poly[1] = Point2D(1.0/3.0, c1);
+ poly[2] = Point2D(2.0/3.0, c2);
+ poly[3] = Point2D(1, c3);
+
+#ifndef WITH_SAFEPARAM_DETAILED_TEST
+
+ return Impl_calcSafeParams( t1, t2, poly, bounds.dMin, bounds.dMax );
+
+#else
+ bool bRet( Impl_calcSafeParams( t1, t2, poly, bounds.dMin, bounds.dMax ) );
+
+ Polygon2D convHull( convexHull( poly ) );
+
+ cout << "# convex hull testing" << endl
+ << "plot [t=0:1] ";
+ cout << " bez("
+ << poly[0].x << ","
+ << poly[1].x << ","
+ << poly[2].x << ","
+ << poly[3].x << ",t),bez("
+ << poly[0].y << ","
+ << poly[1].y << ","
+ << poly[2].y << ","
+ << poly[3].y << ",t), "
+ << "t, " << bounds.dMin << ", "
+ << "t, " << bounds.dMax << ", "
+ << t1 << ", t, "
+ << t2 << ", t, "
+ << "'-' using ($1):($2) title \"control polygon\" with lp, "
+ << "'-' using ($1):($2) title \"convex hull\" with lp" << endl;
+
+ unsigned int k;
+ for( k=0; k<poly.size(); ++k )
+ {
+ cout << poly[k].x << " " << poly[k].y << endl;
+ }
+ cout << poly[0].x << " " << poly[0].y << endl;
+ cout << "e" << endl;
+
+ for( k=0; k<convHull.size(); ++k )
+ {
+ cout << convHull[k].x << " " << convHull[k].y << endl;
+ }
+ cout << convHull[0].x << " " << convHull[0].y << endl;
+ cout << "e" << endl;
+
+ return bRet;
+#endif
+}
+
+// -----------------------------------------------------------------------------
+
+void Impl_deCasteljauAt( Bezier& part1,
+ Bezier& part2,
+ const Bezier& input,
+ double t )
+{
+ // deCasteljau bezier arc, scheme is:
+ //
+ // First row is C_0^n,C_1^n,...,C_n^n
+ // Second row is P_1^n,...,P_n^n
+ // etc.
+ // with P_k^r = (1 - x_s)P_{k-1}^{r-1} + x_s P_k{r-1}
+ //
+ // this results in:
+ //
+ // P1 P2 P3 P4
+ // L1 P2 P3 R4
+ // L2 H R3
+ // L3 R2
+ // L4/R1
+ if( tolZero(t) )
+ {
+ // t is zero -> part2 is input curve, part1 is empty (input.p0, that is)
+ part1.p0.x = part1.p1.x = part1.p2.x = part1.p3.x = input.p0.x;
+ part1.p0.y = part1.p1.y = part1.p2.y = part1.p3.y = input.p0.y;
+ part2 = input;
+ }
+ else if( tolEqual(t, 1.0) )
+ {
+ // t is one -> part1 is input curve, part2 is empty (input.p3, that is)
+ part1 = input;
+ part2.p0.x = part2.p1.x = part2.p2.x = part2.p3.x = input.p3.x;
+ part2.p0.y = part2.p1.y = part2.p2.y = part2.p3.y = input.p3.y;
+ }
+ else
+ {
+ part1.p0.x = input.p0.x; part1.p0.y = input.p0.y;
+ part1.p1.x = (1.0 - t)*part1.p0.x + t*input.p1.x; part1.p1.y = (1.0 - t)*part1.p0.y + t*input.p1.y;
+ const double Hx ( (1.0 - t)*input.p1.x + t*input.p2.x ), Hy ( (1.0 - t)*input.p1.y + t*input.p2.y );
+ part1.p2.x = (1.0 - t)*part1.p1.x + t*Hx; part1.p2.y = (1.0 - t)*part1.p1.y + t*Hy;
+ part2.p3.x = input.p3.x; part2.p3.y = input.p3.y;
+ part2.p2.x = (1.0 - t)*input.p2.x + t*input.p3.x; part2.p2.y = (1.0 - t)*input.p2.y + t*input.p3.y;
+ part2.p1.x = (1.0 - t)*Hx + t*part2.p2.x; part2.p1.y = (1.0 - t)*Hy + t*part2.p2.y;
+ part2.p0.x = (1.0 - t)*part1.p2.x + t*part2.p1.x; part2.p0.y = (1.0 - t)*part1.p2.y + t*part2.p1.y;
+ part1.p3.x = part2.p0.x; part1.p3.y = part2.p0.y;
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void printCurvesWithSafeRange( const Bezier& c1, const Bezier& c2, double t1_c1, double t2_c1,
+ const Bezier& c2_part, const FatLine& bounds_c2 )
+{
+ static int offset = 0;
+
+ cout << "# safe param range testing" << endl
+ << "plot [t=0.0:1.0] ";
+
+ // clip safe ranges off c1
+ Bezier c1_part1;
+ Bezier c1_part2;
+ Bezier c1_part3;
+
+ // subdivide at t1_c1
+ Impl_deCasteljauAt( c1_part1, c1_part2, c1, t1_c1 );
+ // subdivide at t2_c1
+ Impl_deCasteljauAt( c1_part1, c1_part3, c1_part2, t2_c1 );
+
+ // output remaining segment (c1_part1)
+
+ cout << "bez("
+ << c1.p0.x+offset << ","
+ << c1.p1.x+offset << ","
+ << c1.p2.x+offset << ","
+ << c1.p3.x+offset << ",t),bez("
+ << c1.p0.y << ","
+ << c1.p1.y << ","
+ << c1.p2.y << ","
+ << c1.p3.y << ",t), bez("
+ << c2.p0.x+offset << ","
+ << c2.p1.x+offset << ","
+ << c2.p2.x+offset << ","
+ << c2.p3.x+offset << ",t),bez("
+ << c2.p0.y << ","
+ << c2.p1.y << ","
+ << c2.p2.y << ","
+ << c2.p3.y << ",t), "
+#if 1
+ << "bez("
+ << c1_part1.p0.x+offset << ","
+ << c1_part1.p1.x+offset << ","
+ << c1_part1.p2.x+offset << ","
+ << c1_part1.p3.x+offset << ",t),bez("
+ << c1_part1.p0.y << ","
+ << c1_part1.p1.y << ","
+ << c1_part1.p2.y << ","
+ << c1_part1.p3.y << ",t), "
+#endif
+#if 1
+ << "bez("
+ << c2_part.p0.x+offset << ","
+ << c2_part.p1.x+offset << ","
+ << c2_part.p2.x+offset << ","
+ << c2_part.p3.x+offset << ",t),bez("
+ << c2_part.p0.y << ","
+ << c2_part.p1.y << ","
+ << c2_part.p2.y << ","
+ << c2_part.p3.y << ",t), "
+#endif
+ << "linex("
+ << bounds_c2.a << ","
+ << bounds_c2.b << ","
+ << bounds_c2.c << ",t)+" << offset << ", liney("
+ << bounds_c2.a << ","
+ << bounds_c2.b << ","
+ << bounds_c2.c << ",t) title \"fat line (center)\", linex("
+ << bounds_c2.a << ","
+ << bounds_c2.b << ","
+ << bounds_c2.c-bounds_c2.dMin << ",t)+" << offset << ", liney("
+ << bounds_c2.a << ","
+ << bounds_c2.b << ","
+ << bounds_c2.c-bounds_c2.dMin << ",t) title \"fat line (min) \", linex("
+ << bounds_c2.a << ","
+ << bounds_c2.b << ","
+ << bounds_c2.c-bounds_c2.dMax << ",t)+" << offset << ", liney("
+ << bounds_c2.a << ","
+ << bounds_c2.b << ","
+ << bounds_c2.c-bounds_c2.dMax << ",t) title \"fat line (max) \"" << endl;
+
+ offset += 1;
+}
+
+// -----------------------------------------------------------------------------
+
+void printResultWithFinalCurves( const Bezier& c1, const Bezier& c1_part,
+ const Bezier& c2, const Bezier& c2_part,
+ double t1_c1, double t2_c1 )
+{
+ static int offset = 0;
+
+ cout << "# final result" << endl
+ << "plot [t=0.0:1.0] ";
+
+ cout << "bez("
+ << c1.p0.x+offset << ","
+ << c1.p1.x+offset << ","
+ << c1.p2.x+offset << ","
+ << c1.p3.x+offset << ",t),bez("
+ << c1.p0.y << ","
+ << c1.p1.y << ","
+ << c1.p2.y << ","
+ << c1.p3.y << ",t), bez("
+ << c1_part.p0.x+offset << ","
+ << c1_part.p1.x+offset << ","
+ << c1_part.p2.x+offset << ","
+ << c1_part.p3.x+offset << ",t),bez("
+ << c1_part.p0.y << ","
+ << c1_part.p1.y << ","
+ << c1_part.p2.y << ","
+ << c1_part.p3.y << ",t), "
+ << " pointmarkx(bez("
+ << c1.p0.x+offset << ","
+ << c1.p1.x+offset << ","
+ << c1.p2.x+offset << ","
+ << c1.p3.x+offset << ","
+ << t1_c1 << "),t), "
+ << " pointmarky(bez("
+ << c1.p0.y << ","
+ << c1.p1.y << ","
+ << c1.p2.y << ","
+ << c1.p3.y << ","
+ << t1_c1 << "),t), "
+ << " pointmarkx(bez("
+ << c1.p0.x+offset << ","
+ << c1.p1.x+offset << ","
+ << c1.p2.x+offset << ","
+ << c1.p3.x+offset << ","
+ << t2_c1 << "),t), "
+ << " pointmarky(bez("
+ << c1.p0.y << ","
+ << c1.p1.y << ","
+ << c1.p2.y << ","
+ << c1.p3.y << ","
+ << t2_c1 << "),t), "
+
+ << "bez("
+ << c2.p0.x+offset << ","
+ << c2.p1.x+offset << ","
+ << c2.p2.x+offset << ","
+ << c2.p3.x+offset << ",t),bez("
+ << c2.p0.y << ","
+ << c2.p1.y << ","
+ << c2.p2.y << ","
+ << c2.p3.y << ",t), "
+ << "bez("
+ << c2_part.p0.x+offset << ","
+ << c2_part.p1.x+offset << ","
+ << c2_part.p2.x+offset << ","
+ << c2_part.p3.x+offset << ",t),bez("
+ << c2_part.p0.y << ","
+ << c2_part.p1.y << ","
+ << c2_part.p2.y << ","
+ << c2_part.p3.y << ",t)" << endl;
+
+ offset += 1;
+}
+
+// -----------------------------------------------------------------------------
+
+/** determine parameter ranges [0,t1) and (t2,1] on c1, where c1 is guaranteed to lie outside c2.
+ Returns false, if the two curves don't even intersect.
+
+ @param t1
+ Range [0,t1) on c1 is guaranteed to lie outside c2
+
+ @param t2
+ Range (t2,1] on c1 is guaranteed to lie outside c2
+
+ @param c1_orig
+ Original curve c1
+
+ @param c1_part
+ Subdivided current part of c1
+
+ @param c2_orig
+ Original curve c2
+
+ @param c2_part
+ Subdivided current part of c2
+ */
+bool Impl_calcClipRange( double& t1,
+ double& t2,
+ const Bezier& c1_orig,
+ const Bezier& c1_part,
+ const Bezier& c2_orig,
+ const Bezier& c2_part )
+{
+ // TODO: Maybe also check fat line orthogonal to P0P3, having P0
+ // and P3 as the extremal points
+
+ if( Impl_doBBoxIntersect(c1_part, c2_part) )
+ {
+ // Calculate fat lines around c1
+ FatLine bounds_c2;
+
+ // must use the subdivided version of c2, since the fat line
+ // algorithm works implicitely with the convex hull bounding
+ // box.
+ Impl_calcFatLine(bounds_c2, c2_part);
+
+ // determine clip positions on c2. Can use original c1 (which
+ // is necessary anyway, to get the t's on the original curve),
+ // since the distance calculations work directly in the
+ // Bernstein polynom parameter domain.
+ if( Impl_calcSafeParams_clip( t1, t2, bounds_c2,
+ calcLineDistance( bounds_c2.a,
+ bounds_c2.b,
+ bounds_c2.c,
+ c1_orig.p0.x,
+ c1_orig.p0.y ),
+ calcLineDistance( bounds_c2.a,
+ bounds_c2.b,
+ bounds_c2.c,
+ c1_orig.p1.x,
+ c1_orig.p1.y ),
+ calcLineDistance( bounds_c2.a,
+ bounds_c2.b,
+ bounds_c2.c,
+ c1_orig.p2.x,
+ c1_orig.p2.y ),
+ calcLineDistance( bounds_c2.a,
+ bounds_c2.b,
+ bounds_c2.c,
+ c1_orig.p3.x,
+ c1_orig.p3.y ) ) )
+ {
+ //printCurvesWithSafeRange(c1_orig, c2_orig, t1, t2, c2_part, bounds_c2);
+
+ // they do intersect
+ return true;
+ }
+ }
+
+ // they don't intersect: nothing to do
+ return false;
+}
+
+// -----------------------------------------------------------------------------
+
+/* Tangent intersection part
+ * =========================
+ */
+
+// -----------------------------------------------------------------------------
+
+void Impl_calcFocus( Bezier& res, const Bezier& c )
+{
+ // arbitrary small value, for now
+ // TODO: find meaningful value
+ const double minPivotValue( 1.0e-20 );
+
+ Point2D::value_type fMatrix[6];
+ Point2D::value_type fRes[2];
+
+ // calc new curve from hodograph, c and linear blend
+
+ // Coefficients for derivative of c are (C_i=n(C_{i+1} - C_i)):
+ //
+ // 3(P1 - P0), 3(P2 - P1), 3(P3 - P2) (bezier curve of degree 2)
+ //
+ // The hodograph is then (bezier curve of 2nd degree is P0(1-t)^2 + 2P1(1-t)t + P2t^2):
+ //
+ // 3(P1 - P0)(1-t)^2 + 6(P2 - P1)(1-t)t + 3(P3 - P2)t^2
+ //
+ // rotate by 90 degrees: x=-y, y=x and you get the normal vector function N(t):
+ //
+ // x(t) = -(3(P1.y - P0.y)(1-t)^2 + 6(P2.y - P1.y)(1-t)t + 3(P3.y - P2.y)t^2)
+ // y(t) = 3(P1.x - P0.x)(1-t)^2 + 6(P2.x - P1.x)(1-t)t + 3(P3.x - P2.x)t^2
+ //
+ // Now, the focus curve is defined to be F(t)=P(t) + c(t)N(t),
+ // where P(t) is the original curve, and c(t)=c0(1-t) + c1 t
+ //
+ // This results in the following expression for F(t):
+ //
+ // x(t) = P0.x (1-t)^3 + 3 P1.x (1-t)^2t + 3 P2.x (1.t)t^2 + P3.x t^3 -
+ // (c0(1-t) + c1 t)(3(P1.y - P0.y)(1-t)^2 + 6(P2.y - P1.y)(1-t)t + 3(P3.y - P2.y)t^2)
+ //
+ // y(t) = P0.y (1-t)^3 + 3 P1.y (1-t)^2t + 3 P2.y (1.t)t^2 + P3.y t^3 +
+ // (c0(1-t) + c1 t)(3(P1.x - P0.x)(1-t)^2 + 6(P2.x - P1.x)(1-t)t + 3(P3.x - P2.x)t^2)
+ //
+ // As a heuristic, we set F(0)=F(1) (thus, the curve is closed and _tends_ to be small):
+ //
+ // For F(0), the following results:
+ //
+ // x(0) = P0.x - c0 3(P1.y - P0.y)
+ // y(0) = P0.y + c0 3(P1.x - P0.x)
+ //
+ // For F(1), the following results:
+ //
+ // x(1) = P3.x - c1 3(P3.y - P2.y)
+ // y(1) = P3.y + c1 3(P3.x - P2.x)
+ //
+ // Reorder, collect and substitute into F(0)=F(1):
+ //
+ // P0.x - c0 3(P1.y - P0.y) = P3.x - c1 3(P3.y - P2.y)
+ // P0.y + c0 3(P1.x - P0.x) = P3.y + c1 3(P3.x - P2.x)
+ //
+ // which yields
+ //
+ // (P0.y - P1.y)c0 + (P3.y - P2.y)c1 = (P3.x - P0.x)/3
+ // (P1.x - P0.x)c0 + (P2.x - P3.x)c1 = (P3.y - P0.y)/3
+ //
+
+ // so, this is what we calculate here (determine c0 and c1):
+ fMatrix[0] = c.p1.x - c.p0.x;
+ fMatrix[1] = c.p2.x - c.p3.x;
+ fMatrix[2] = (c.p3.y - c.p0.y)/3.0;
+ fMatrix[3] = c.p0.y - c.p1.y;
+ fMatrix[4] = c.p3.y - c.p2.y;
+ fMatrix[5] = (c.p3.x - c.p0.x)/3.0;
+
+ // TODO: determine meaningful value for
+ if( !solve(fMatrix, 2, 3, fRes, minPivotValue) )
+ {
+ // TODO: generate meaningful values here
+ // singular or nearly singular system -- use arbitrary
+ // values for res
+ fRes[0] = 0.0;
+ fRes[1] = 1.0;
+
+ cerr << "Matrix singular!" << endl;
+ }
+
+ // now, the reordered and per-coefficient collected focus curve is
+ // the following third degree bezier curve F(t):
+ //
+ // x(t) = P0.x (1-t)^3 + 3 P1.x (1-t)^2t + 3 P2.x (1.t)t^2 + P3.x t^3 -
+ // (c0(1-t) + c1 t)(3(P1.y - P0.y)(1-t)^2 + 6(P2.y - P1.y)(1-t)t + 3(P3.y - P2.y)t^2)
+ // = P0.x (1-t)^3 + 3 P1.x (1-t)^2t + 3 P2.x (1.t)t^2 + P3.x t^3 -
+ // (3c0P1.y(1-t)^3 - 3c0P0.y(1-t)^3 + 6c0P2.y(1-t)^2t - 6c0P1.y(1-t)^2t +
+ // 3c0P3.y(1-t)t^2 - 3c0P2.y(1-t)t^2 +
+ // 3c1P1.y(1-t)^2t - 3c1P0.y(1-t)^2t + 6c1P2.y(1-t)t^2 - 6c1P1.y(1-t)t^2 +
+ // 3c1P3.yt^3 - 3c1P2.yt^3)
+ // = (P0.x - 3 c0 P1.y + 3 c0 P0.y)(1-t)^3 +
+ // 3(P1.x - c1 P1.y + c1 P0.y - 2 c0 P2.y + 2 c0 P1.y)(1-t)^2t +
+ // 3(P2.x - 2 c1 P2.y + 2 c1 P1.y - c0 P3.y + c0 P2.y)(1-t)t^2 +
+ // (P3.x - 3 c1 P3.y + 3 c1 P2.y)t^3
+ // = (P0.x - 3 c0(P1.y - P0.y))(1-t)^3 +
+ // 3(P1.x - c1(P1.y - P0.y) - 2c0(P2.y - P1.y))(1-t)^2t +
+ // 3(P2.x - 2 c1(P2.y - P1.y) - c0(P3.y - P2.y))(1-t)t^2 +
+ // (P3.x - 3 c1(P3.y - P2.y))t^3
+ //
+ // y(t) = P0.y (1-t)^3 + 3 P1.y (1-t)^2t + 3 P2.y (1-t)t^2 + P3.y t^3 +
+ // (c0(1-t) + c1 t)(3(P1.x - P0.x)(1-t)^2 + 6(P2.x - P1.x)(1-t)t + 3(P3.x - P2.x)t^2)
+ // = P0.y (1-t)^3 + 3 P1.y (1-t)^2t + 3 P2.y (1-t)t^2 + P3.y t^3 +
+ // 3c0(P1.x - P0.x)(1-t)^3 + 6c0(P2.x - P1.x)(1-t)^2t + 3c0(P3.x - P2.x)(1-t)t^2 +
+ // 3c1(P1.x - P0.x)(1-t)^2t + 6c1(P2.x - P1.x)(1-t)t^2 + 3c1(P3.x - P2.x)t^3
+ // = (P0.y + 3 c0 (P1.x - P0.x))(1-t)^3 +
+ // 3(P1.y + 2 c0 (P2.x - P1.x) + c1 (P1.x - P0.x))(1-t)^2t +
+ // 3(P2.y + c0 (P3.x - P2.x) + 2 c1 (P2.x - P1.x))(1-t)t^2 +
+ // (P3.y + 3 c1 (P3.x - P2.x))t^3
+ //
+ // Therefore, the coefficients F0 to F3 of the focus curve are:
+ //
+ // F0.x = (P0.x - 3 c0(P1.y - P0.y)) F0.y = (P0.y + 3 c0 (P1.x - P0.x))
+ // F1.x = (P1.x - c1(P1.y - P0.y) - 2c0(P2.y - P1.y)) F1.y = (P1.y + 2 c0 (P2.x - P1.x) + c1 (P1.x - P0.x))
+ // F2.x = (P2.x - 2 c1(P2.y - P1.y) - c0(P3.y - P2.y)) F2.y = (P2.y + c0 (P3.x - P2.x) + 2 c1 (P2.x - P1.x))
+ // F3.x = (P3.x - 3 c1(P3.y - P2.y)) F3.y = (P3.y + 3 c1 (P3.x - P2.x))
+ //
+ res.p0.x = c.p0.x - 3*fRes[0]*(c.p1.y - c.p0.y);
+ res.p1.x = c.p1.x - fRes[1]*(c.p1.y - c.p0.y) - 2*fRes[0]*(c.p2.y - c.p1.y);
+ res.p2.x = c.p2.x - 2*fRes[1]*(c.p2.y - c.p1.y) - fRes[0]*(c.p3.y - c.p2.y);
+ res.p3.x = c.p3.x - 3*fRes[1]*(c.p3.y - c.p2.y);
+
+ res.p0.y = c.p0.y + 3*fRes[0]*(c.p1.x - c.p0.x);
+ res.p1.y = c.p1.y + 2*fRes[0]*(c.p2.x - c.p1.x) + fRes[1]*(c.p1.x - c.p0.x);
+ res.p2.y = c.p2.y + fRes[0]*(c.p3.x - c.p2.x) + 2*fRes[1]*(c.p2.x - c.p1.x);
+ res.p3.y = c.p3.y + 3*fRes[1]*(c.p3.x - c.p2.x);
+}
+
+// -----------------------------------------------------------------------------
+
+bool Impl_calcSafeParams_focus( double& t1,
+ double& t2,
+ const Bezier& curve,
+ const Bezier& focus )
+{
+ // now, we want to determine which normals of the original curve
+ // P(t) intersect with the focus curve F(t). The condition for
+ // this statement is P'(t)(P(t) - F) = 0, i.e. hodograph P'(t) and
+ // line through P(t) and F are perpendicular.
+ // If you expand this equation, you end up with something like
+ //
+ // (\sum_{i=0}^n (P_i - F)B_i^n(t))^T (\sum_{j=0}^{n-1} n(P_{j+1} - P_j)B_j^{n-1}(t))
+ //
+ // Multiplying that out (as the scalar product is linear, we can
+ // extract some terms) yields:
+ //
+ // (P_i - F)^T n(P_{j+1} - P_j) B_i^n(t)B_j^{n-1}(t) + ...
+ //
+ // If we combine the B_i^n(t)B_j^{n-1}(t) product, we arrive at a
+ // Bernstein polynomial of degree 2n-1, as
+ //
+ // \binom{n}{i}(1-t)^{n-i}t^i) \binom{n-1}{j}(1-t)^{n-1-j}t^j) =
+ // \binom{n}{i}\binom{n-1}{j}(1-t)^{2n-1-i-j}t^{i+j}
+ //
+ // Thus, with the defining equation for a 2n-1 degree Bernstein
+ // polynomial
+ //
+ // \sum_{i=0}^{2n-1} d_i B_i^{2n-1}(t)
+ //
+ // the d_i are calculated as follows:
+ //
+ // d_i = \sum_{j+k=i, j\in\{0,...,n\}, k\in\{0,...,n-1\}} \frac{\binom{n}{j}\binom{n-1}{k}}{\binom{2n-1}{i}} n (P_{k+1} - P_k)^T(P_j - F)
+ //
+ //
+ // Okay, but F is now not a single point, but itself a curve
+ // F(u). Thus, for every value of u, we get a different 2n-1
+ // bezier curve from the above equation. Therefore, we have a
+ // tensor product bezier patch, with the following defining
+ // equation:
+ //
+ // d(t,u) = \sum_{i=0}^{2n-1} \sum_{j=0}^m B_i^{2n-1}(t) B_j^{m}(u) d_{ij}, where
+ // d_{ij} = \sum_{k+l=i, l\in\{0,...,n\}, k\in\{0,...,n-1\}} \frac{\binom{n}{l}\binom{n-1}{k}}{\binom{2n-1}{i}} n (P_{k+1} - P_k)^T(P_l - F_j)
+ //
+ // as above, only that now F is one of the focus' control points.
+ //
+ // Note the difference in the binomial coefficients to the
+ // reference paper, these formulas most probably contained a typo.
+ //
+ // To determine, where D(t,u) is _not_ zero (these are the parts
+ // of the curve that don't share normals with the focus and can
+ // thus be safely clipped away), we project D(u,t) onto the
+ // (d(t,u), t) plane, determine the convex hull there and proceed
+ // as for the curve intersection part (projection is orthogonal to
+ // u axis, thus simply throw away u coordinate).
+ //
+ // \fallfac are so-called falling factorials (see Concrete
+ // Mathematics, p. 47 for a definition).
+ //
+
+ // now, for tensor product bezier curves, the convex hull property
+ // holds, too. Thus, we simply project the control points (t_{ij},
+ // u_{ij}, d_{ij}) onto the (t,d) plane and calculate the
+ // intersections of the convex hull with the t axis, as for the
+ // bezier clipping case.
+
+ //
+ // calc polygon of control points (t_{ij}, d_{ij}):
+ //
+ const int n( 3 ); // cubic bezier curves, as a matter of fact
+ const int i_card( 2*n );
+ const int j_card( n + 1 );
+ const int k_max( n-1 );
+ Polygon2D controlPolygon( i_card*j_card ); // vector of (t_{ij}, d_{ij}) in row-major order
+
+ int i, j, k, l; // variable notation from formulas above and Sederberg article
+ Point2D::value_type d;
+ for( i=0; i<i_card; ++i )
+ {
+ for( j=0; j<j_card; ++j )
+ {
+ // calc single d_{ij} sum:
+ for( d=0.0, k=::std::max(0,i-n); k<=k_max && k<=i; ++k )
+ {
+ l = i - k; // invariant: k + l = i
+ assert(k>=0 && k<=n-1); // k \in {0,...,n-1}
+ assert(l>=0 && l<=n); // l \in {0,...,n}
+
+ // TODO: find, document and assert proper limits for n and int's max_val.
+ // This becomes important should anybody wants to use
+ // this code for higher-than-cubic beziers
+ d += static_cast<double>(fallFac(n,l)*fallFac(n-1,k)*fac(i)) /
+ static_cast<double>(fac(l)*fac(k) * fallFac(2*n-1,i)) * n *
+ ( (curve[k+1].x - curve[k].x)*(curve[l].x - focus[j].x) + // dot product here
+ (curve[k+1].y - curve[k].y)*(curve[l].y - focus[j].y) );
+ }
+
+ // Note that the t_{ij} values are evenly spaced on the
+ // [0,1] interval, thus t_{ij}=i/(2n-1)
+ controlPolygon[ i*j_card + j ] = Point2D( i/(2.0*n-1.0), d );
+ }
+ }
+
+#ifndef WITH_SAFEFOCUSPARAM_DETAILED_TEST
+
+ // calc safe parameter range, to determine [0,t1] and [t2,1] where
+ // no zero crossing is guaranteed.
+ return Impl_calcSafeParams( t1, t2, controlPolygon, 0.0, 0.0 );
+
+#else
+ bool bRet( Impl_calcSafeParams( t1, t2, controlPolygon, 0.0, 0.0 ) );
+
+ Polygon2D convHull( convexHull( controlPolygon ) );
+
+ cout << "# convex hull testing (focus)" << endl
+ << "plot [t=0:1] ";
+ cout << "'-' using ($1):($2) title \"control polygon\" with lp, "
+ << "'-' using ($1):($2) title \"convex hull\" with lp" << endl;
+
+ unsigned int count;
+ for( count=0; count<controlPolygon.size(); ++count )
+ {
+ cout << controlPolygon[count].x << " " << controlPolygon[count].y << endl;
+ }
+ cout << controlPolygon[0].x << " " << controlPolygon[0].y << endl;
+ cout << "e" << endl;
+
+ for( count=0; count<convHull.size(); ++count )
+ {
+ cout << convHull[count].x << " " << convHull[count].y << endl;
+ }
+ cout << convHull[0].x << " " << convHull[0].y << endl;
+ cout << "e" << endl;
+
+ return bRet;
+#endif
+}
+
+// -----------------------------------------------------------------------------
+
+/** Calc all values t_i on c1, for which safeRanges functor does not
+ give a safe range on c1 and c2.
+
+ This method is the workhorse of the bezier clipping. Because c1
+ and c2 must be alternatingly tested against each other (first
+ determine safe parameter interval on c1 with regard to c2, then
+ the other way around), we call this method recursively with c1 and
+ c2 swapped.
+
+ @param result
+ Output iterator where the final t values are added to. If curves
+ don't intersect, nothing is added.
+
+ @param delta
+ Maximal allowed distance to true critical point (measured in the
+ original curve's coordinate system)
+
+ @param safeRangeFunctor
+ Functor object, that must provide the following operator():
+ bool safeRangeFunctor( double& t1,
+ double& t2,
+ const Bezier& c1_orig,
+ const Bezier& c1_part,
+ const Bezier& c2_orig,
+ const Bezier& c2_part );
+ This functor must calculate the safe ranges [0,t1] and [t2,1] on
+ c1_orig, where c1_orig is 'safe' from c2_part. If the whole
+ c1_orig is safe, false must be returned, true otherwise.
+ */
+template <class Functor> void Impl_applySafeRanges_rec( ::std::back_insert_iterator< ::std::vector< ::std::pair<double, double> > >& result,
+ double delta,
+ const Functor& safeRangeFunctor,
+ int recursionLevel,
+ const Bezier& c1_orig,
+ const Bezier& c1_part,
+ double last_t1_c1,
+ double last_t2_c1,
+ const Bezier& c2_orig,
+ const Bezier& c2_part,
+ double last_t1_c2,
+ double last_t2_c2 )
+{
+ // check end condition
+ // ===================
+
+ // TODO: tidy up recursion handling. maybe put everything in a
+ // struct and swap that here at method entry
+
+ // TODO: Implement limit on recursion depth. Should that limit be
+ // reached, chances are that we're on a higher-order tangency. For
+ // this case, AW proposed to take the middle of the current
+ // interval, and to correct both curve's tangents at that new
+ // endpoint to be equal. That virtually generates a first-order
+ // tangency, and justifies to return a single intersection
+ // point. Otherwise, inside/outside test might fail here.
+
+ for( int i=0; i<recursionLevel; ++i ) cerr << " ";
+ if( recursionLevel % 2 )
+ {
+ cerr << "level: " << recursionLevel
+ << " t: "
+ << last_t1_c2 + (last_t2_c2 - last_t1_c2)/2.0
+ << ", c1: " << last_t1_c2 << " " << last_t2_c2
+ << ", c2: " << last_t1_c1 << " " << last_t2_c1
+ << endl;
+ }
+ else
+ {
+ cerr << "level: " << recursionLevel
+ << " t: "
+ << last_t1_c1 + (last_t2_c1 - last_t1_c1)/2.0
+ << ", c1: " << last_t1_c1 << " " << last_t2_c1
+ << ", c2: " << last_t1_c2 << " " << last_t2_c2
+ << endl;
+ }
+
+ // refine solution
+ // ===============
+
+ double t1_c1, t2_c1;
+
+ // Note: we first perform the clipping and only test for precision
+ // sufficiency afterwards, since we want to exploit the fact that
+ // Impl_calcClipRange returns false if the curves don't
+ // intersect. We would have to check that separately for the end
+ // condition, otherwise.
+
+ // determine safe range on c1_orig
+ if( safeRangeFunctor( t1_c1, t2_c1, c1_orig, c1_part, c2_orig, c2_part ) )
+ {
+ // now, t1 and t2 are calculated on the original curve
+ // (but against a fat line calculated from the subdivided
+ // c2, namely c2_part). If the [t1,t2] range is outside
+ // our current [last_t1,last_t2] range, we're done in this
+ // branch - the curves no longer intersect.
+ if( tolLessEqual(t1_c1, last_t2_c1) && tolGreaterEqual(t2_c1, last_t1_c1) )
+ {
+ // As noted above, t1 and t2 are calculated on the
+ // original curve, but against a fat line
+ // calculated from the subdivided c2, namely
+ // c2_part. Our domain to work on is
+ // [last_t1,last_t2], on the other hand, so values
+ // of [t1,t2] outside that range are irrelevant
+ // here. Clip range appropriately.
+ t1_c1 = ::std::max(t1_c1, last_t1_c1);
+ t2_c1 = ::std::min(t2_c1, last_t2_c1);
+
+ // TODO: respect delta
+ // for now, end condition is just a fixed threshold on the t's
+
+ // check end condition
+ // ===================
+
+#if 1